斎藤です。こんにちは。

RedHat Enterprise Linux 7(RHEL7)リリースの足音が聞こえる今日この頃ですが、皆様いかがでしょうか。予習として、Fedora 19を利用されている方もいらっしゃるかと思います。

その中で、大きな変化の1つとして、 systemd(※1) の採用があります。systemdは、SysVinitやUpstartに変わる、プロセス管理の仕組みです。そうです、起動スクリプトの書き方や、プロセスの確認方法が大きく変わる事になるのです!そうなれば、構築や運用に関わる知識や手順を覚え直す必要が出てきます。

しかし、systemdに関する資料は、それほど多くありません。そこで、簡単ですが記事執筆時点(2013-10-24)での情報源をまとめてみました。検証の際の情報収集時、お役に立てば幸いです。

※私が社内Wikiにまとめた情報をBlog用に整理し、公開しております。

押さえておきたい情報源

2014-10-24現在、systemdを取り扱う上で参考となる記事が蓄積されている情報源をご紹介します。

  • Systemd入門(1) - Unitの概念を理解する - めもめも ... 日本語で丁寧に解説されている唯一の資料だと思います。紹介した記事を含め5節あり、操作方法やcgroupsといった特徴をしっかりと掴む事ができます。
  • Systemd - slideshare ... 概要を知ることができる資料です
  • PID EINS! ... 開発者 レナートさんのブログ。systemdを取り扱う上で重要な情報が集まっています。
  • systemd System and Service Manager ... プロジェクトのページです。1ページ目を見た後は、他の解説記事を見てからの方が理解しやすいかもしれません。

開発者 レナートさんのブログ記事のサマリー

どこから読めばいいか?

systemd の使い方や仕組みを知るために、非常に重要な情報源が、開発者のレナートさんのブログです。

しかし、ブログ形式であることと、かつ最新の目次が存在しないため、どこから読めばいいのかわかりづらい所が難点です。そこで、簡単ですがサマリーを作りましたので、ご利用ください。

大まかに、3つの情報に分かれています。

  • 管理者ガイド
  • 開発者ガイド
  • その他 ... どちらにも属さない情報

特に、管理者ガイドは一通り読まれる事をお勧めします。

管理者ガイド

systemd for Administrators, Part 1 - Verifying Bootup

  • プロセス起動状況の確認方法について述べています。
  • これまでの方法とずいぶん変わっているので、読み通した方が良いです。

systemd for Administrators, Part II - Which Service Owns Which Processes?

  • プロセスのオーナーについて解説しています。
  • cgroupの名前がサービス名と関連づいており、その先に実際に起動しているプロセスを参照する方法が示されています。
  • psとsystemd-cglsの2種類があるようです。

systemd for Administrators, Part III - How Do I Convert A SysV Init Script Into A systemd Service File?

  • initスクリプトをsystemd用にどのように移植するのかを解説しています。
  • 実質、systemd用起動スクリプトの書き方の解説となっています。

systemd for Administrators, Part IV - Killing Services

  • サービスの強制停止方法について説明しています。

systemd for Administrators, Part V - The Three Levels of "Off"

  • systemdにおける「停止状態」は3段階(stop, disable, mask)がある事を解説しています。
  • mask(hidden)はこれまで無かったので要注意です。

systemd for Administrators, Part VI - Changing Roots

  • 各種ルートディレクトリの変更方法について説明しています。

systemd for Administrators, Part VII - The Blame Game

  • 起動のための所要時間の確認、及びビジュアライゼーションの方法を説明しています。

systemd for Administrators, Part IX - On /etc/sysconfig and /etc/default

  • /etc/sysconfig と /etc/default との間で、同じ事・違う事を比較しつつ述べています。

systemd for Administrators, Part X - Instantiated Services

  • 動的なサービス起動方法について解説しています。
  • 例では、gettyをUSB0で受け付けられるサービスの起動方法を示しています。

systemd for Administrators, Part XI - Converting inetd Services

  • inetdで書かれたサービスの移行方法について説明しています。
  • 同時に、パート10で説明した動的にパラメータを変更したサービスの同時起動方法についても述べています。

systemd for Administrators, Part XII - Securing Your Services

  • サービスを、セキュアに動作させるためにはどうすればよいか述べられています。
  • 6つのポイントが示されています。

systemd for Administrators, Part XIII - Log and Service Status

  • ログを容易に参照する方法について説明しています。syslogをgrepしなくてもいいのは楽ですね!

systemd for Administrators, Part XIV - The Self-Explanatory Boot

  • サービスに関するmanを開く方法です。設定されているものが対象です。

systemd for Administrators, Part XV - Watchdogs

  • Upstartなどにもあった、respawnに相当する機能の解説です。

systemd for Administrators, Part XVI - Gettys on Serial Consoles (and Elsewhere)

  • ttyをシリアルコンソールで使う方法の説明です。
  • 使う人は、使うかな。IPMI経由で使う事があるかと思います。

systemd for Administrators, Part XVII - Using the Journal

  • サービスの稼働状況を記録したジャーナル(ログ)の保存方法、参照方法を説明しています。

systemd for Administrators, Part XVIII - Managing Resources

  • cgroupsによるリソース使用量を絞り込む方法を解説しています。
  • 使用状況の確認方法も説明しています。
  • CPU, RAM, Block IO, スワップ等の調整方法が例示されています。

systemd for Administrators, Part XIX - Detecting Virtualization

  • 仮想環境上でのみ稼働させるサービスの制御法等を示しています。

systemd for Administrators, Part XX - Socket Activated Internet Services and OS Containers

  • ポートを別途解放して利用する際の説明です。

開発者ガイド

systemd for Developers I - Socket Activation

  • ソケットの有効化の方法について説明しています。

systemd for Developers II - Socket Activation, Part II

  • 先の記事の続きです。
  • CUPS(Common Unix Printing System)を例に、ソケットの有効化の方法を例示しています。

systemd for Developers III - Logging to the Journal

  • ジャーナルへの書き込み方法について述べています。

その他

Rethinking PID 1

  • systemdの興りについて語られています。
  • PID 1とは、initプロセス、すなわち起動を司るプロセスをさします。起動のさせ方について、問題提起をしている事を示す渋いタイトルですね。

systemd Status Update

Why systemd?

  • sysvinit, Upstart との比較
  • 比較表の内容、少しドキッとします。

systemd Documentation

  • 2011/5/24までのサマリーページ。

/etc/os-release

  • アプリケーションから利用しているOSを識別する方法について述べています。
  • Fedora 19を利用されている方は、"cat /etc/os-release"の結果を参照してみてください。

Control Groups vs. Control Groups

  • cgropsに関するより詳しい説明です。

systemd Status Update

The Biggest Myths

  • systemd に関する誤解に対して回答しています。

おわりに

ここまで、systemdに関する情報ソースを紹介しました。

RHEL・CentOSは、ITインフラの構築・運用において無くてはならないOSの1つです。その中で、RHEL7, CentOS 7のリリース後に使い方等で慌てないためにも、今から予習をしておく必要があると感じています。

今ある情報、そして既存システムの移行検証等で情報を蓄え、そして情報を交換して行く事で、RHEL7のリリースに備えて行きたいと私も考えています。

それでは皆様、ごきげんよう。

※1: systemd - Spelling によると、綴りは "systemd"、スペースは無く全て小文字であると述べられています。

株式会社ハートビーツのインフラエンジニアから、ちょっとした情報をお届けします。