Bug#815834: mdadm: with systemd as PID 1, no clean way to restart the mdadm monitor

Francesco Poli (wintermute) invernomuto at paranoici.org
Wed Feb 24 21:28:37 UTC 2016


Package: mdadm
Version: 3.3.4-1.1+b1
Severity: normal

Hello!

The issue I am reporting may be related to bug #796624, but it's not
the same.

After upgrading packages (especially libraries), I routinely use
"checkrestart" (from package debian-goodies) to see which processes
need to be restarted.

I noticed that, whenever the mdadm monitor process needs to be restarted
(for instance, after a libc6 upgrade), there seems to be no clean way to
actually restart it, if using systemd as PID 1.

Suppose we have to restart the mdadm monitor process:

  # checkrestart
  [...]
  service mdadm-raid restart
  service mdadm-waitidle restart
  service mdadm restart
  [...]
  # ps aux | grep mdadm | head -n 1
  root       359  0.0  0.0  13620  2508 ?        Ss   23:18   0:00 /sbin/mdadm --monitor --scan

Which service command should I use?

  # service mdadm restart
  Failed to restart mdadm.service: Unit mdadm.service is masked.
  # service mdadm-waitidle restart
  Failed to restart mdadm-waitidle.service: Unit mdadm-waitidle.service is masked.
  # service mdadm-raid restart

The first two do nothing, since they are masked.
The last one seems to be successful, but:

  # checkrestart
  [...]
  service mdadm-raid restart
  service mdadm-waitidle restart
  service mdadm restart
  [...]
  # ps aux | grep mdadm | head -n 1
  root       359  0.0  0.0  13620  2556 ?        Ss   23:18   0:00 /sbin/mdadm --monitor --scan

Nothing has changed! Please note that the mdadm monitor process PID is
the same as before: it has not been restarted.

It seems that, with systemd as PID 1, the available services are
unable to restart the running mdadm monitor...
Please note that, with sysvinit as PID 1, it's possible to restart
the mdadm monitor via the appropriate service.


Please provide a clean way to restart the mdadm monitor process:
I could kill it and then start it again by hand, but it doesn't feel
especially safe to do that...

It seems to me that the init script which is able to restart the
mdadm monitor process is /etc/init.d/mdadm .
I wonder why there's no corresponding service file for systemd and
why the service is masked instead.
Wait, there's /lib/systemd/system/mdmonitor.service : is

  # systemctl restart mdmonitor.service

or

  # service mdmonitor restart

the clean way I am looking for?

Unfortunately, checkrestart does not suggest it.

Please clarify, thanks for your time!
Bye.


-- System Information:
Debian Release: stretch/sid
  APT prefers testing
  APT policy: (800, 'testing'), (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.3.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages mdadm depends on:
ii  debconf [debconf-2.0]  1.5.58
ii  initscripts            2.88dsf-59.3
ii  libc6                  2.21-9
ii  lsb-base               9.20160110
ii  udev                   228-6

Versions of packages mdadm recommends:
ii  exim4-daemon-light [mail-transport-agent]  4.86-7+b2
ii  kmod                                       22-1

mdadm suggests no packages.

-- debconf information:
  mdadm/initrdstart_msg_errblock:
  mdadm/initrdstart_msg_errmd:
  mdadm/mail_to: root
* mdadm/initrdstart: all
  mdadm/initrdstart_notinconf: false
  mdadm/initrdstart_msg_errconf:
  mdadm/initrdstart_msg_intro:
  mdadm/autocheck: true
  mdadm/start_daemon: true
  mdadm/initrdstart_msg_errexist:



More information about the pkg-mdadm-devel mailing list