Hacker News new | ask | show | jobs
by nathwill 4059 days ago
we run a ~70 node system, ~95% virtual/5% physical, almost fully converted from Scientific Linux 6 to CentOS 7 (only the NFS boxes left!), which is systemd based.

Concerning systemd as an init system, it's been extremely reliable and simple to use and manage. Writing unit files, even ones with complex requirements, is incredibly easy, because the FDO documentation is really terrific. For instance, we have a host running docker for services that are contingent on an NFS mount being present on the host: specifying a requirement on the mount-point for the docker service to boot-up is as simple as creating a docker.service.d directory and writing a 2-line drop-in unit file with RequiresMountsFor=/mount/path. Being able to add this functionality so easily, without having to assume total ownership of managing the rest of the service configuration really struck me as exemplary of the reasons systemd won the init wars. It really feels like it bends over backwards to help administrators get shit done, and done right.

Systemd also provides a lot more visibility into service behavior than other init systems i've worked with (logs tailed in status output, exit codes, real pid tracking, etc), which is very helpful in day-to-day work as an administrator. I'm also pretty regulary surprised by how fast our servers reboot, though that's a rather minor benefit. Mount units work just like it says on the tin, not much to report. We haven't started using any of the other systemd stuff like timers, but may do so as we encounter use-cases where it's preferable.

On the flip side, I'm not especially keen on journald. It makes it pretty rough to do system log aggregation out of the box. There's some plans to add the ability to forward logs to a remote server, but it's not there yet on CentOS. Rsyslog has nice integration on CentOS that can help make things resemble a more traditional log structure, but I can't speak to it's viability as we ended up using a more lightweight solution that uses journalds option to forward all message via syslog over a local socket (/run/systemd/journal/syslog) as an input for our log aggregator. It's irritating on occasion, but we've never not been able to work around it, and i'm confident that things will get better going forward, as journald gets more features and more log aggregators add support for polling the journal.

most importantly, i am really looking forward to Ubuntu 16.04 coming out with systemd, at which time Ubuntu, Debian, CentOS and more will all use the same init system in an LTS release. as a regular author of open-source chef cookbooks, it's exciting to think of a future where there's enough x-platform consistency that it's no longer necessary to special-case service management. along this same line, systemd unit aliases are also pretty awesome, and i hope package maintainers in both the rpm and deb world start working to add aliases for divergently named services (apache2 vs httpd, mysql vs mysqld, etc.).

ultimately, we're not dogmatic about the philosophy arguments, most of which at this point strike me as sour grapes. i just want a system that works reliably, is well documented, and makes it easy for me to get shit done. systemd fits that bill better than its predecessors, so we're happy using it until something better comes along :)

1 comments

I may be showing my gray ear hairs, but I remember the early days of Gentoo where ZOMG boot 3ms faster by optimizing! The init portion of systemd reminds me of those days.

Your mention of requirements for service execution is certainly an interesting avenue for me to think about.

Honestly for my day to day "spin up VM, do some experiments/coding, fine tune" it doesn't matter. For some other work I am doing dealing with longer term system maintenance/administration, I've been slow to adapt.

Thanks for the insights.

> The init portion of systemd reminds me of those days.

There is quite a big difference in that systemd was never designed to boot fast - it was designed first and foremost to boot correctly, and the much increased performance was mostly a happy accident of the design they came up with.

This isn't backed up by Lennart's own blog post about the initial Systemd development:

> Unfortunately, the traditional SysV init system was not particularly fast.

> Another thing we can learn from the MacOS boot-up logic is that shell scripts are [...] slow in execution.

> it is also our plan to experiment with systemd not only for optimizing boot times

It seems like the real motivation was exactly reversed from your comment - speed first, and correctness as a happy accident.

He does put up a later post (biggest myths about systemd) some three years later which tries to change this impression, but that reads much more like an attempt to move the goalposts than an actual design goal.

http://0pointer.de/blog/projects/systemd.html

You have a point - clearly my comment over-stated it - let's say that both correctness and performance were design goals.

At the time Upstart was considered "the future" ... read the comment from Scott James Remnant on this post (unfortunately there doesn't seem to be a way to link to a G+ comment directly?):

https://plus.google.com/+KaySievers/posts/C3chC26khpq

The point is that Upstart's event model was found to be flawed, and the copyright assignment policy meant that fixing Upstart was undesirable.

This explains the filesystem problem (both relevant for reliability and performance) and claims that systemd solves it but Upstart cannot:

https://plus.google.com/+LennartPoetteringTheOneAndOnly/post...