On Mon, 17 Nov 2014, Gaudenz Steinlin wrote: > Hi > > I had a look at the different proposed systemd service files today. > While this topic was brought up again by a Debian bug report, I don't > think this is distribution specific. I would very much prefer a unified > solution across all distributions.
Agreed. Dmitry's patch looks like it'll be helpful in getting the upstream systemd bits standardized. I hope to get time for this soon. One note: I'd like to keep ceph-mds@ (vs ceph-mds) even though most users will have a single mds per host. Also, +LimitNOFILE=32768 is still going to be problematic as large clusters need to adjust that value up. Need to figure out how to make it tunable... maybe just by using a dedicated 'ceph' user and adjusting it in /etc/security/limit.d/* ? sage > > Dmitry Smirnov <[email protected]> writes: > > > Control: tags -1 pending > > > > On Fri, 14 Nov 2014 20:27:13 Clint Adams wrote: > >> Please add systemd service files for ceph. I see that systemd is > >> special-cased in /etc/init.d/ceph, but it does not appear to work. > > > > I know, it doesn't work... Lately I've been experimenting with new systemd > > support that I've committed to > > > > > > http://anonscm.debian.org/cgit/pkg-ceph/ceph.git/commit/?h=experimental&id=3c22e192d964789365e8dc21c168c5fd8985f7d8 > > > > > > On Fri, 14 Nov 2014 14:35:17 Ken Dreyer wrote: > >> There is are some work-in-progress files here: > >> https://bugzilla.redhat.com/show_bug.cgi?id=771924 > >> > >> I have not yet had a chance to review them, though. > > > > Thanks, those files are not good neither what committed to Ceph repository > > as > > > > https://github.com/ceph/ceph/tree/master/systemd > > > > It seems like nobody actually tried to use those files. There are number of > > issues like incorrect order of includes for environment variables; lack of > > "ulimit" support (i.e. "LimitNOFILE=32768") in OSD service file which is > > necessary to prevent OSD termination shortly after start etc. > > > > I've created meta "ceph.service" for compatibility -- it merely depends on > > other daemons (ceph-mon, ceph-mds) as well as enabled ceph-osd@ > > services. > > I don't particularly like this in it's current state. The line > "ExecStartPre=-/bin/systemctl start ceph-osd*" seems very wrong to me. > I'm not a systemd expert but I did not find an easy way to create > something like a meta-service in a way that looks like integrated into > systemd. But then I don't think that's needed either. The way the > current init script tries to start all the different daemons in one > script always seemd odd to me. Do we need a meta service like this? > > > > > IMHO "ceph-mds" and "ceph-mon" are better than "ceph-mds@" and "ceph-mon@" > > just like in SysV init files where by default we support just one instance > > per > > machine etc. > > I agree with this. Having multiple instances per machine of ceph-mon or > ceph-mds does not make sense. On the other hand your proposed > implementation uses "%H" which resolves to the hostname. This is not > compatible with the current implementation in the init script which > parses the configuration file to find the id of the mds and mon. I'm not > sure how to solve this, but IMO all distributions should do this in the > same way and at the very least we need an upgrade path for users that > don't have the hostname as the id of their mon and mds (like having > mon.1, mon.2, ... instead of node1, node2, ...). I see 3 possible > solutions: > > - Add a script similar to the code in the current init script which > parses the config file to get the id and use that when starting the > daemon. > - Agreement that mons and mds should have their ids equal to the > hostname. I don't really like that solution as it seems quite > inflexible. > - Use a service template (with the @) nonetheless. This is probably the > simplest solution but requires more manual intervention by the cluster > administrator. He has to set the id manually when enabling the service. > > Some other discussion points: > - Restart policy: I think we should take advantage of the fact that > systemd can monitor processes and restart them if they fail. I propose > to start the daemon in the forground (like it's done already) and set > "Restart=on-failure". See man systemd.service[1] for the details what > this means. Do we need custom values for RestartSec (time to sleep > before restart, default 100ms), StartLimitInterval, StartLimitBurst > (both related to start rate limiting, default 5 times in 10 seconds)? > > - Mounting OSD filesystems: For sysvinit the init script mounts the OSD > filesystem. None of the proposed systemd solutions mounts any > filesystems. I think that mounting filesystems should not be done in > the ceph init scripts (independent of init system used). What's the > reason this was added to the init scripts and can't be done from > /etc/fstab like all other filesystems? My prefered solution for > systemd is to mount filesystems from /etc/fstab and to have > "RequiresMountsFor=/var/lib/ceph/mds/ceph-%i" in the individual > service files to ensure that the filesystem is mounted. An alternative > would be to create mount units or a generator similar to > systemd-fstab-generator. But this sounds like a lot of work for little > gain. > > Gaudenz > > [1] http://www.freedesktop.org/software/systemd/man/systemd.service.html > -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

