Systemd integration for starting newly-degraded arrays.
Normally "mdadm -I" will not start an array if it has reason to expect further devices. This means that if a device is removed while the host is shut down, "mdadm -I" will never start the device. If the array is know to the host, it make sense to start the array anyway after a reasonable timeout. This patch adds systemd/udev infrastructure so that 30 seconds after a known array first becomes able to be assembled as a degraded array, the array will be assembled even if more devices are still expected. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
9ca39acb3e
commit
169ffac7ad
2
Makefile
2
Makefile
|
@ -285,6 +285,8 @@ install-udev: udev-md-raid-arrays.rules udev-md-raid-assembly.rules
|
|||
|
||||
install-systemd: systemd/mdmon@.service
|
||||
$(INSTALL) -D -m 644 systemd/mdmon@.service $(DESTDIR)$(SYSTEMD_DIR)/mdmon@.service
|
||||
$(INSTALL) -D -m 644 systemd/mdadm-last-resort@.timer $(DESTDIR)$(SYSTEMD_DIR)/mdadm-last-resort@.timer
|
||||
$(INSTALL) -D -m 644 systemd/mdadm-last-resort@.service $(DESTDIR)$(SYSTEMD_DIR)/mdadm-last-resort@.service
|
||||
|
||||
uninstall:
|
||||
rm -f $(DESTDIR)$(MAN8DIR)/mdadm.8 $(DESTDIR)$(MAN8DIR)/mdmon.8 $(DESTDIR)$(MAN4DIR)/md.4 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 $(DESTDIR)$(BINDIR)/mdadm
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
[Unit]
|
||||
Description=Activate md array even though degraded
|
||||
DefaultDependencies=no
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/sbin/mdadm --run /dev/%i
|
|
@ -0,0 +1,6 @@
|
|||
[Unit]
|
||||
Description=Timer to wait for more drives before activating degraded array.
|
||||
DefaultDependencies=no
|
||||
|
||||
[Timer]
|
||||
OnActiveSec=30
|
|
@ -12,7 +12,8 @@ LABEL="md_inc"
|
|||
|
||||
# remember you can limit what gets auto/incrementally assembled by
|
||||
# mdadm.conf(5)'s 'AUTO' and selectively whitelist using 'ARRAY'
|
||||
ACTION=="add", RUN+="/sbin/mdadm --incremental $devnode --offroot"
|
||||
ACTION=="add", IMPORT{program}="/sbin/mdadm --incremental --export $devnode --offroot"
|
||||
ACTION=="add", ENV{MD_STARTED}=="*unsafe*", ENV{MD_FOREIGN}=="no", ENV{SYSTEMD_WANTS}+="mdadm-last-resort@$env{MD_DEVICE}.timer"
|
||||
ACTION=="remove", ENV{ID_PATH}=="?*", RUN+="/sbin/mdadm -If $name --path $env{ID_PATH}"
|
||||
ACTION=="remove", ENV{ID_PATH}!="?*", RUN+="/sbin/mdadm -If $name"
|
||||
|
||||
|
|
Loading…
Reference in New Issue