[Debian-ha-maintainers] Bug#862248: Bug#862248: No straightforward and permanent way to disable DRBD autostart, no drbd systemd unit file
Apollon Oikonomopoulos
apoikos at debian.org
Fri May 12 11:01:47 UTC 2017
On 09:54 Fri 12 May , Christian Balzer wrote:
> On Thu, 11 May 2017 09:33:59 +0300 Apollon Oikonomopoulos wrote:
>
> > On 09:15 Thu 11 May , Christian Balzer wrote:
> > > Firstly I recreated the initial state bu unmasking drbd and enabling
> > > it, > then reloading systemd.
> > >
> > > That find then gives us:
> > > ---
> > > /run/systemd/generator.late/drbd.service
> > > /etc/systemd/system/multi-user.target.wants/drbd.service
> >
> > So, now we need ls -l
> > /etc/systemd/system/multi-user.target.wants/drbd.service to see how old
> > the symlink is and where it points to. Can you also zgrep drbd-utils
> > /var/log/dpkg.log*?
> >
>
>
> Sure thing, that's quite the old chestnut indeed:
> ---
> lrwxrwxrwx 1 root root 32 Aug 11 2015 /etc/systemd/system/multi-user.target.wants/drbd.service -> /lib/systemd/system/drbd.service
> ---
>
> Note that this link is also present on:
> A Wheezy system with "8.9.2~rc1-1~bpo70+1" installed.
> On a system that was initially installed with Jessie but had
> 8.9.2~rc1-2+deb8u1 installed first.
> The plot thickens, see below.
Yes, it makes prefect sense. This is what happened:
We were originally shipping a systemd unit since 8.4.4-1 and up to
8.9.5-1, where the systemd unit was dropped as it didn't make much
sense, at least in the way it was implemented.
Now, the symlinks under /etc/systemd/system/multi-user.target.d which
are created by systemctl enable/update-rc.d enable are only cleaned up
during package *purge*. So, when you had a version with the systemd unit
and upgraded to a version without it, the symlink would still be there,
while the unit file itself would not be there.
So, what should be done in the package actually is invoke
deb-systemd-helper purge drbd.service
in drbd-utils.postinst iff upgrading from versions that had a systemd
unit in place.
There's an additional problem here: upstream's initscript does not have
any Default-Start runlevels, as upstream doesn't suggest enabling the
initscript by default. This however causes update-rc.d (and systemctl
enable) to shortcircuit the action by default:
# update-rc.d drbd disable
update-rc.d: error: drbd Default-Start contains no runlevels, aborting.
To recap: we need to properly clean up systemd's symlinks to the
obsolete service file *and* fix the initscript to contain Default-Start
levels. I would also consider disabling the service by default on new
installations, as this is what upstream also recommends.
Ideas?
Cheers,
Apollon
More information about the Debian-ha-maintainers
mailing list