[systemd-devel] requiring all template instances in a service

Andrei Borzenkov arvidjaar at gmail.com
Wed Feb 25 19:38:53 PST 2015


В Wed, 25 Feb 2015 18:42:47 -0500
Benjamin Rose <benrose at math.princeton.edu> пишет:

> Hello all,
> 
> I hope this is the right place for this inquiry. I was noticing 
> extremely slow reboot times on three of my hosts running 
> corosync/pacemaker for shared storage. I enabled the systemd debug logs, 
> and found that pacemaker was attempting to communicate with it's peers 
> to notify of the shutdown, and failed to do so as networking was not 
> functioning. This was odd because networking was fine during normal 
> operation and the distribution's unit file has the proper "Requires" for 
> networking. Eventually it hit the distro "TimeoutStopSec=30m" and forced 
> the reboot, hence the slow reboot times.
> 
> In the debug logs, I found that it was all because I am using teamd 
> (partially related - through ifcfg files using network.service), and 
> teamd was being killed long before pacemaker got the chance to send its 
> closing messages. So, I fixed the problem in my implementation with this 
> little bit:
> 
> [root at myhost ~]# cat 
> /etc/systemd/system/pacemaker.service.d/require_teamd.conf
> [Unit]
> After=teamd at team_pub.service
> After=teamd at team_priv.service
> Requires=teamd at team_pub.service
> Requires=teamd at team_priv.service
> 
> But, soon I will be changing a lot about my networking. I'll be using 
> puppet to deploy a few more teams and bridges on this host. So, my 
> question comes down to - is there a way to accomplish something like this:
> 
> Requires=teamd@*.service
> After=teamd@*.service
> 
> to include all running instances? I know this makes no sense in an 
> xinetd-type situation on bootup, when instances will be created 
> on-demand, but it does make perfect sense on a shutdown or reboot to 
> want to wait for all instances of a certain type to complete their work 
> before proceeding.
> 

Services that implement networking are expected to order itself before
network.target on startup and hence after network.target on shutdown,
so that it should be sufficient to just have

After=network.target



More information about the systemd-devel mailing list