読者です 読者をやめる 読者になる 読者になる

systemdについてちょっと調べた

参考文献を並べて重要な箇所だけ引用する。 参考になった順にならべる。

なぜsystemdなのか? (翻訳 Why systemd(2014-07-23)by Jorgen Schäfer)

http://postd.cc/why-systemd/

SysV initサービスを起動したり停止したりするのに用いられる一般的な方法は”service”コマンドを用いることです。多くの人はinitスクリプト/etc/init.d/$nameを直接使いますが、実はこれには問題があります。initスクリプトをカレントの環境で起動するのですが、ブート時に有効な環境とは違う可能性があるからです。影響としてコマンドラインから実行させた時はソフトウェアが正しく起動するのに、ブート時の起動では失敗してしまう、というようなことがあります。

sysinitの場合はスクリプトに依存関係がある場合にうまく起動できない場合がある。

似たように、SysV initは、機能をinit自身に実装することはせず、それぞれ全てのサービスに対して、共通の機能を実装するように求めています。

daemon化がそれぞれのスクリプトで実施する必要があるのは確かに面倒くさい。 それにforkが2回実行されると祖父プロセスとの関連性を失うのも良くない。

GNU/LinuxにとってDebianUbuntuがsysytemdに乗り換えたという決定は、まぎれもなくsystemdが勝ったということを意味しています。使い手の好みに関わらず、systemdは、いまやGNU/Linuxのinitシステムなのです。

systemd同様にsysinitを置換する候補としては以下のように多くのソフトウェアがあるらしい。しかし勝者はsystemd。 * eInit * Upstart * OpenRC * initng * busybox-init * s6 * procd

systemdと連動するためにサービスをデーモン化する必要はありません。supervisorを使った時と同じように、プロセスは通常通り実行できます。syslogにログメッセージを記録する時でさえ、stdoutとstderrに書き込むだけでよいのです。

syslogとの連携が標準出力だけなんて楽だな。 しかも、ログをありかを覚えておく必要はなく、systemdのコマンドを使えば良いらしい。 知らないシステムを調査しなければならない時にログの在処を探し当てるのが面倒くさいんだよね。

CentOS 7実践ガイド (古賀 政純)

http://www.amazon.co.jp/dp/484433753X centos7からsystemdが採用されるそうだ。操作方法などがまとめられている。

systemd超入門(佐々木 大輔)

http://dev.classmethod.jp/cloud/aws/systemd-getting-started/

PIDではなくcgroupによってプロセスを管理する

cgroupを使っているから、コンテナ関連の話でsystemdが出てくるのだろう。 Dockerのコンテナはsystemdにおけるユニットとして実行されることでリソースが制限されるのだろうか。

without systemd

http://without-systemd.org/wiki/index.php/Main_Page systemd反対派(?)のWiki systemdのどこがわるいのかはよくわかっていない。 少なくとも多くのディストリで標準になりつつある現状を見ると、反対派のちからが及ばない程度にsystemdは優れているのだろう。

systemd-nspawn (Arch Linux wiki)

https://archlinuxjp.kusakata.com/wiki/Systemd-nspawn

systemd-nspawn は chroot コマンドに似ていますが、chroot を強化したものです。

Dockerより柔軟なコンテナ型仮想化 systemd-nspawn を使ってみた

http://www.geeks-dev.com/docker%E3%82%88%E3%82%8A%E6%9F%94%E8%BB%9F%E3%81%AA%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%9E%8B%E4%BB%AE%E6%83%B3%E5%8C%96systemd-nspawn%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F/

まぁね。ArchWikiに書いてあるしね・・・別にいらん世話かとは思いますけど、DockerやRocketみたいなコンテナ型の仮想化機構です。