Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

systemdを始めよう

10,703 views

Published on

PFIセミナー 2014/12/18

Published in: Technology
  • Be the first to comment

systemdを始めよう

  1. 1. systemdを始めよう PFIセミナー Preferred Networks 柏原秀蔵 2014年年12⽉月18⽇日
  2. 2. ⾃自⼰己紹介 l  柏原秀蔵 (@suma90h) l  最近:Go⾔言語を書くことも l  最近の活動 l  システム系論論⽂文輪輪読会  主宰(平⽇日夜、休⽇日昼  開催) l  お菓⼦子作りもたまにやってます 2
  3. 3. 3
  4. 4. アジェンダ l  systemdとは何か l  systemdをなぜ学ぶのか l  systemd紹介 l  ⾃自作デーモンの追加⽅方法 l  なぜsystemdでコミュニティが荒れるのか l  まとめ 4
  5. 5. systemdとは何か l  initであるSysV init/Upstartの代替となる l  Linuxの必要デーモンや、initスクリプトなどの起動・管理理システム l  inetd, xinetdといったデーモンの代わりの機能も持つ l  ちなみにCentOS 6やUbuntuではUpstart l  initに対応する他の有名なシステム l  SolarisはSMF(Service Management Facility) l  Mac OS X(iOS)はlaunchd 5
  6. 6. initのおおよそのフロー l  ここの/sbin/init以降降をsystemdが置き換える 6 boot loader Linux kernel /sbin/init デバイスドライバの読み込み initスクリプト起動→/sbin/init起動 = SysV init/upstartのプログラム ランレベルに応じて処理を切り替え デバイスを初期化 ファイルシステムをマウント /etc/init.d/ サービススクリプト(デーモン)を起動 init.dの後はコンソール(tty)などなど Linuxカーネル (OS)の起動
  7. 7. systemdをなぜ学ぶ・紹介するのか l  Red Hat Enterprise Linux 7 (CentOS7)でデフォルトで採⽤用 l  Debianでも次期バージョンjessieでsystemd採⽤用が決まっている l  Ubuntuは創始者/リーダーのMark Shuttleworth⽒氏も採⽤用を表明 l  デフォルトでsystemd有効なディストリビューションが多い l  Arch Linux, CoreOS, Debian, Fedora, openSUSE, Ubuntu l  デフォルトでなくとも採⽤用が決まっているものや、現在未リリー スでもsystemd採⽤用が決まっているものも含め総数が多い l  これらLinuxを中⼼心に扱うのであれば対応必須の時代がくる! l  OpenBSD向けに作られたsystemdのフォークも存在する l  もちろん採⽤用するメリットもある 7
  8. 8. systemdに移⾏行行する利利点 l  起動したデーモンのプロセス監視はsystemdの役割 l  死活監視にsupervisordを⼊入れたりする必要はない l  Unitという単位での処理理の管理理 l  service ,targetなどの種類がある l  イベントをトリガーにして実⾏行行したり、実⾏行行の依存関係が記述可能 l  希望する順序でサービスの起動(終了了も?)ができる l  「Systemd⼊入⾨門(1) - Unitの概念念を理理解する」が詳しい l  initスクリプトを含め、シェルスクリプトから解放される l  起動時間のスピードアップ l  私が測定した数字は持ってない l  Haruka Iwaoさんの資料料によるとRHEL6.5→7.5で29秒→10秒 8
  9. 9. systemdの機能 l  伝統的なSysV init/Upstartの置き換え l  ランレベルに応じたプログラムの起動 l  サービス(デーモン)の起動 l  Unitによる各種機能の提供 l  syslogdの代替(共存可能) l  cron, acpid, xinetdの代替(共存可能) 9
  10. 10. Unitの種類 l  service: デーモンの起動・管理理 l  socket: ソケットに接続(通信)があるとサービスを起動する l  mount: ファイルシステム(リモートも)のマウント l  automount: アクセスが発⽣生したらマウントする(automountd) l  target: Unitをまとめて順序関係を作れるようにする l  などなど l  公式マニュアル: http://www.freedesktop.org/software/systemd/man/ systemd.unit.html 10
  11. 11. Unitのserviceを記述する l  ファイルを置くパス l  /usr/lib/systemd/system/ システム標準・パッケージからはこちらへ l  /etc/systemd/system/ 同名ファイルがあるとこちらが優先 l  ファイル l  名前 daemon-name.service のように末尾にunitの種類を書く l  フォーマット l  systemdの独⾃自形式 l  Unit, Service, Installと3つのセクションがある l  依存関係の前後、実⾏行行するコマンドライン、プロセス停⽌止時の成 功条件や、起動に失敗と⾒見見なして再起動させないオプションなど l  Linux - systemdの*.serviceファイルの書き⽅方  - Qiita l  http://qiita.com/masami256/items/ef0f23125cf8255e4857 11
  12. 12. Unitのserviceを記述する  〜~Serviceセクション〜~ l  Type l  simple: デフォルト。プロセス起動してサービスとなるタイプ l  forking: プロセス起動後に⾃自⾝身をフォークするタイプのデーモン。 l  oneshot: 1回だけジョブを実⾏行行 l  notify: simpleと同じだが、プログラム側からsystemdに起動し たことの通知を送る l  idle: simpleに似ているが、他のジョブが実⾏行行されまで待つ (console l  systemd (⽇日本語) - ArchWiki l  systemd.service(5) 12
  13. 13. Unitのserviceを記述する 〜~sshd.service を⾒見見る〜~ 13 [Unit] Description=OpenSSH server daemon After=syslog.target network.target auditd.service [Service] EnvironmentFile=/etc/sysconfig/sshd ExecStartPre=/usr/sbin/sshd-keygen ExecStart=/usr/sbin/sshd -D $OPTIONS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
  14. 14. Unitのserviceを制御する サービス⼀一覧を表⽰示する # systemctl list-units --type=service firewalldを無効化する # systemctl disable firewalld rm '/etc/systemd/system/basic.target.wants/firewalld.service' rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service’ firewalldを有効化する # systemctl enable firewalld ln -s '/usr/lib/systemd/system/firewalld.service' '/etc/systemd/system/ dbus-org.fedoraproject.FirewallD1.service' ln -s '/usr/lib/systemd/system/firewalld.service' '/etc/systemd/system/ basic.target.wants/firewalld.service’ 参考:  Systemd⼊入⾨門(2) - Serviceの操作⽅方法  - めもめも 14
  15. 15. systemdでログを⾒見見る l  syslogd 相当のsystemd-journald.serviceがある l  # journalctl コマンドでログが⾒見見れる l  -b でブートログ l  -k でkernel message (dmesg相当) l  なお、RHEL7 (CentOS7)はsyslogdと共存して扱えるが、Fedora 20以降降はsyslogdはデフォルトで無効となる 15
  16. 16. journalctl 実⾏行行例例 (CentOS 7) 16
  17. 17. systemdは⼤大変荒れやすいトピック l  開発を巡ってのトラブルがある l  本の⾍虫: Linus様がSystemdにぶちきれる l  http://cpplover.blogspot.jp/2014/04/linussystemd.html l  systemdの採⽤用の有無を巡っての激しい議論論 l  Wikipedia (en)によると l  アーキテクチャ (init script が好き派) l  Unixの哲学(シンプルさ)に違反して機能を取り込み過ぎている のではないか派 ‒  現在Linuxのudevのソースツリーを取り込んでいる l  systemdを使⽤用しないシステムのサポートを必須とするDebianの ⼀一般決議、不不成⽴立立となる 17
  18. 18. なぜsystemdでコミュニティが荒れるのか(私⾒見見含) l  Linusは開発者を叩くが、systemd⾃自体は嫌いではない (slashdot) l  ⼀一部のsystemd嫌いの⼈人は、誤解があると考えられる l  作者の主張「The Biggest Myths」 l  http://0pointer.de/blog/projects/the-biggest-myths.html l  エントリの解説があるがsystemdは l  1. 単⼀一バイナリ(モノリシック)でない l  2. 速いが速度度だけを求めたものではない l  3. システムのブートが速いのはサーバに良良い l  4. initスクリプトとの互換性もある l  5. systemdは難しくない l  … などなど 30まで続く l  それでもWindwowsのsvchostに近づいているという指摘もある 18
  19. 19. まとめ l  systemdについて機能・特徴を紹介した l  近年年Linux界隈で熱い議論論を呼ぶトピックでもある l  いつ使い始めると良良いか l  今。今から始めても遅くないでしょう l  RHEL7 (CentOS 7)で採⽤用され、Ubuntuも将来は採⽤用⾒見見込み l  systemdのアーキテクチャの善悪は、⾃自分で判断してもらいたい l  少なくとも各ディストリビューションで採⽤用される理理由はある l  systemdを調べた感想としては、機能がたくさんあるだけあって 全て⾝身につけるには苦労しそう。つまみ⾷食いで⼗十分かも 19
  20. 20. 参考⽂文献 20
  21. 21. 参考⽂文献 〜~systemd概要・⼊入⾨門〜~ l  Linux⼥女女⼦子部  systemd徹底⼊入⾨門 l  http://www.slideshare.net/enakai/linux-27872553 l  Hello, systemd! l  http://www.slideshare.net/Yuryu/hello-systemd l  Systemd⼊入⾨門(1) - Unitの概念念を理理解する  - めもめも l  http://d.hatena.ne.jp/enakai00/20130914/1379146157 l  systemdを本番運⽤用してわかったこと  - mixi Engineers' Blog l  http://alpha.mixi.co.jp/entry/2013/12063/ l  【翻訳】なぜsystemdなのか?  | POSTD l  http://postd.cc/why-systemd/ l  systemdによるCentOS 7の管理理  | Think IT(シンクイット) l  http://thinkit.co.jp/story/2014/12/11/5388 l  The Biggest Myths l  http://0pointer.de/blog/projects/the-biggest-myths.html 21
  22. 22. 参考⽂文献:CoreOS l  CoreOSに⼊入⾨門した  | SOTA l  http://deeeet.com/writing/2014/11/17/coreos/ l  Fleetの使い⽅方,Unitファイルの書き⽅方  | SOTA l  http://deeeet.com/writing/2014/11/20/fleet/ 22
  23. 23. 参考  〜~関連ニュース・ゴシップ〜~ l  [Phoronix] Ubuntu To Abandon Upstart, Switch To Systemd l  http://www.phoronix.com/scan.php? page=news_item&px=MTYwNDE l  本の⾍虫: Linus様がSystemdにぶちきれる l  http://cpplover.blogspot.jp/2014/04/linussystemd.html l  systemdを使⽤用しないシステムのサポートを必須とするDebianの ⼀一般決議、不不成⽴立立となる l  systemdをめぐる論論争の結果、「Devuan」プロジェクトがDebia nをフォーク l  DevuanのML「I want systemd」 l  https://lists.dyne.org/lurker/message/ 20141130.125423.9da1f8c2.en.html 23

×