!DBFhtjpqmJNENpLDOv:nixos.org

NixOS systemd

579 Members
NixOS ❤️ systemd159 Servers

Load older messages


SenderMessageTime
23 Mar 2025
@uep:matrix.orguep

random idle musing: what's the right way to express dependencies between services, that says service A needs to be running, but should also be restarted whenever service B starts or stops?

Use case:

  • Service A: smartd, which either doesn't notice new disks arriving, or gets very upsetti when they go offline
  • Service B: something that's going to power on/off and zpool import an external chassis with 36 disks in a backup pool, to be triggered by other conditions
23:50:32
@uep:matrix.orguep *

random idle musing: what's the right way to express dependencies between services, that says service A needs to be running, but should also be restarted whenever service B starts or stops?

Use case:

  • Service A: smartd, which either doesn't notice new disks arriving, or gets very upsetti when they go offline
  • Service B: something that's going to power on/off and zpool import an external chassis with 36 disks in a backup pool, to be triggered by other conditions
23:50:39
@uep:matrix.orguep(B might get split into separate power state and import state units, but that's not really important for this question. I want to restart smartd around the disks either arriving or leaving23:52:17
@uep:matrix.orguep* (B might get split into separate power state and import state units, but that's not really important for this question. I want to restart smartd around the disks either arriving or leaving)23:52:21
@elvishjerricco:matrix.org@elvishjerricco:matrix.org uep: I wonder if that's more of a job for udev 23:54:36
@elvishjerricco:matrix.org@elvishjerricco:matrix.org * uep: I wonder if that's more of a job for udev rules 23:54:49
@uep:matrix.orguepmaybe23:54:51
@uep:matrix.orguepit might also just be better smartd configuration23:55:00
@uep:matrix.orguepbut that's a question for somewhere else, so I asked this one here ;-)23:55:29
@elvishjerricco:matrix.org@elvishjerricco:matrix.org there's StopPropagatedFrom= / PropagatesStopTo= to propagate stops from one unit to another 23:56:42
@elvishjerricco:matrix.org@elvishjerricco:matrix.orgbut that's not a restart23:56:46
@uep:matrix.orguep(my initial guess about udev rules was that it might be hard to avoid restarting smartd 36 times)23:58:17
@elvishjerricco:matrix.org@elvishjerricco:matrix.org yea you'd have to use the right udev rule. 23:58:41
@elvishjerricco:matrix.org@elvishjerricco:matrix.orgeither something that can detect the completed state23:58:49
@elvishjerricco:matrix.org@elvishjerricco:matrix.orgor starting a systemd timer that waits an appropriate amount of time23:58:59
24 Mar 2025
@uep:matrix.orguepit might end up being timers anyway, because i don't want it to try counting to 36 and then only 35 disks appear one day 00:00:13
@elvishjerricco:matrix.org@elvishjerricco:matrix.orgyea you'd really want to detect at the chassis level "all disks inside are powered up", not "36 disks are powered up"00:00:46
@elvishjerricco:matrix.org@elvishjerricco:matrix.orgthat may or may not be possible00:00:59
@elvishjerricco:matrix.org@elvishjerricco:matrix.org oh but you could combine this with Upholds 00:01:11
@uep:matrix.orguep(same problem with just picking one particular disk as the trigger, but i could possibly trigger on the controller / sas expander / chassis ses device or something like that)00:01:21
@elvishjerricco:matrix.org@elvishjerricco:matrix.orghm but you still have to deal with restarting when the other unit is started00:01:30
@elvishjerricco:matrix.org@elvishjerricco:matrix.orgyea, I'm thinking that you will either need to learn how to identify the state of the chassis as a whole, or otherwise just start a systemd timer to restart the service whenever any of the disks appears or disappears00:02:31
@uep:matrix.orguepat least then it's a different transaction00:03:06
@elvishjerricco:matrix.org@elvishjerricco:matrix.orgthe nice thing about a timer is that starting it 36 times will still only cause it to elapse once00:03:32
@elvishjerricco:matrix.org@elvishjerricco:matrix.orgassuming the timer length is longer than the time it takes for 36 drives to come onlnie00:03:46
@elvishjerricco:matrix.org@elvishjerricco:matrix.org* assuming the timer length is longer than the time it takes for 36 drives to come online00:03:48
@uep:matrix.orguepthanks.. this was roughly where I was expecting to go anyway, it's nice to have validation and that there wasn't something i was missing as a better way00:04:09
@uep:matrix.orguepon the way up is easy enough, i also have the pool import to tell me that "enough" disks are there00:04:45
@uep:matrix.orguepon the way down it's a little more fragile if i want to avoid all the spurious alarms.. i probably need to stop smartd, then power off the chassis, then start smartd00:05:40
@elvishjerricco:matrix.org@elvishjerricco:matrix.orgfrankly I'm surprised smartd doesn't just handle disks appearing and disappearing gracefully though00:05:50

Show newer messages


Back to Room ListRoom Version: 6