35
エリア Debian systemd [email protected] 2012 11 17

東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 [email protected] 2012年11月17日

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

東京エリアDebian勉強会systemd

岩松信洋[email protected]

2012年11月17日

Page 2: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

はじめに

世の中の主要なLinuxディストリビューションはSysVinitの init scripts から他の init システムに移行しつつある( はず)。FedoraやArch Linuxが systemd に移行を始めたということもあり、一部で盛り上がっている( 阿鼻叫喚ともいう)。まさかいまだに SysVinit を使ってないよね?Debianと systemdについてまとめた。

Page 3: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

systemdとは?

RedHat に勤めている Lennart Poettering 氏によって開発されている。init の代替プログラム。実際には init の代替だけではなく、Linux のサービス( デーモン)管理フレームワーク。今までの initシステムの違い

サービスのプロセス管理を pid ではなく、 cgroups を使う。サービスの起動をソケットとバス (dbus)を使う。サービスの依存関係があり、これによってシステム立ち上げ処理をより並列的に行える。System V スタイルとBSDスタイルの両方をサポートしている。CosoleKit との連携。

Page 4: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日
Page 5: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

systemdとは?

開発は freedesktop.orgで行われており、開発は活発で週に一度はバージョンアップ。最新バージョンは v195。http://cgit.freedesktop.org/systemd/systemd/

Page 6: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

SysVinit と比べた systemd の利点

設定が容易。起動が早い。カーネルモジュールの操作、セッション管理、ログ管理、ディスクの暗号化などが統合されている。

その他、開発者による説明がhttp://0pointer.de/blog/projects/why.html にある。

Page 7: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

SysVinit と比べた systemd の欠点/不安

あらゆる基本サービス (cronなども)をまとめるという壮大な物語。日本語ドキュメントがない、ぐらい?kFreeBSD でも頑張ればうごくらしい。( どうやってるのかは不明)

Page 8: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

Debianで使う

systemd はもちろん Debian でも提供されているtesting / unstable で v44 が利用できる最新版とバージョンに差があるが、アップストリームで頻繁にバージョンアップするのでバージョンはあまり問題ではない v44 でも systemd を十分に使うことができるいまのところ Debianに関する情報はhttp://wiki.debian.org/systemd にまとまっているが情報が少なく、内容も古い

Page 9: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

インストール

apt-get / aptitude でインストールできる。Linux カーネルは 2.6.39 以上、devtmpfs, fanotify,autofs4, cgroups が有効になっている必要がある。

Page 10: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

インストール

インストールは以下のように実行する。

$ sudo apt-get install systemd

以下のパッケージが依存関係でインストールされる。

libsystemd-daemon0libsystemd-id128-0libsystemd-journal0libpam-systemd

Page 11: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

インストール

次にブートローダに init指定を追加するGRUB を使っている場合、/etc/default/grub のGRUB CMDLINE LINUX DEFAULT にinit=/lib/systemd/systemd を追記する

変更前:GRUB_CMDLINE_LINUX_DEFAULT="quiet"変更後:GRUB_CMDLINE_LINUX_DEFAULT="quiet init=/lib/systemd/systemd"

Page 12: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

インストール

変更後、update-grubを実行し、GRUB に設定を反映する。そしてリブートする。設定が間違っていないければ systemd で立ち上がるはず。

$ sudo update-grub.....$ sudo reboot

Page 13: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

起動速度

systemd はアナライザをデフォルトでサポートしている。SysVinit だと bootchart2 で測定する必要がある。起動にかかった時間を確認するには systemd-analyze

を実行する。

$ systemd-analyzeStartup finished in 1831ms (kernel) + \

5669ms (userspace) = 7500ms

Page 14: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

起動速度

また、画像で確認したい場合には prop オプションを指定して実行する。SVG フォーマットで出力されるので、リダイレクトしてファイルに保存する。

$ systemd-analyze plot > systemd-boot.svg

Page 15: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日
Page 16: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

起動速度

試しに自分が常用している環境で起動時間を測定したところ、SysVinit は約15秒、 systemd は約10秒だった。

Page 17: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

用語

systemd を扱うには専門用語が出てくるので説明する。

Page 18: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニット

systemd ではデーモンなどの制御対象のことをユニットと呼ぶ。ユニットにはサービス、デバイス、マウントポイントなど、いくつかの種類がある。このユニットはテキストファイルで記述され、/lib/systemd/system/ 以下に格納されている。各ユニットは拡張子を持ち、サービスの場合は.service

となっている。

Page 19: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニット

ユニットの種類 説明service サービスsocket ソケットで起動するためのソケット定義target 各サービスを同期させるための定義device udev で管理するデバイスsnapshot ある時点の init の状態timer イベントから時間経過path 監視するパスmount マウントポイントswap スワップautomaount 自動マウントポイント

mount, swap, automout は起動時に /etc/fstab から自動的にユニットを生成する。

Page 20: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ターゲット

SysVinit の runlevel 相当のもの。これはディストリビューションによって異なる。Debianの場合は以下の通り。

run level systemd のターゲット0 poweroff.target1 rescue.target2 - 5 multi-user.target6 reboot.target

Page 21: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ターゲット

この他にgraphical.target と emergency.target がある。graphical.target X による起動を行うときに呼ばれるターゲットemergency.target は障害が起こった時に起動できるようにするためのターゲット。ターゲットはカーネルのブートオプションにsystemd.unit=で指定できる。何も指定しない場合はdefault.target が呼ばれるようになっている。

Page 22: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニットの操作方法

systemd に移行した後、デーモン等の制御は /etc/init.d/以下を実行するのではなく、 systemctl コマンドを使って操作する。以下にユニットの操作方法について説明する。

Page 23: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

起動しているユニットを表示する

起動しているユニットを表示するには sytemctl を実行する。

$ systemctl...console-setup.service loaded active exited LSB: Set console font andcron.service loaded active running LSB: Regular background prdbus.service loaded active running D-Bus System Message Busdebian-fixup.service loaded active exited Various fixups to make sysexim4.service loaded active running LSB: exim Mail Transport [email protected] loaded active running Getty on [email protected] loaded active exited ifup for eth0...

Page 24: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

全てのユニットを表示する

操作できるユニットを表示するには --all を指定する。

$ systemctl --allUNIT LOAD ACTIVE SUB JOB DESCRIPTIONproc-sys...misc.automount loaded active waiting Arbitrary Executable Fildev-cdrom.device loaded active plugged QEMU_DVD-ROMdev-disk...QM00003.device loaded active plugged QEMU_DVD-ROMdev-disk...QM00001.device loaded active plugged QEMU_HARDDISKdev-disk...2dpart1.device loaded active plugged QEMU_HARDDISKdev-disk...2dpart2.device loaded active plugged QEMU_HARDDISK...

Page 25: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニットの状態を確認する

ユニットの状態を確認するには、status オプションに確認したいユニット名を指定して実行する。以下に rsyslog.service ユニットの状態を確認する例を示す。

$ systemctl status rsyslog.serviceLoaded: loaded (/lib/systemd/system/rsyslog.service; enabled)Active: active (running) since Wed, 14 Nov 2012 00:37:18 -0800; 22h agoProcess: 474 ExecStartPre=/bin/systemctl stop systemd-kmsg-syslogd.service (code=exited, status=0/SUCCESS)Main PID: 483 (rsyslogd)CGroup: name=systemd:/system/rsyslog.service

└ 483 /usr/sbin/rsyslogd -n -c5

これにより、このユニットは/lib/systemd/system/rsyslog.serviceによってWed, 14

Nov 2012 00:37:18 -0800に起動していることが分かる。

Page 26: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニットを起動する

起動していないユニットを起動するには、 startオプションにユニット名を指定して実行する。これは /etc/init.d/サービス startと同様の動きとなる。

$ sudo systemctl start ユニット名

Page 27: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニットを停止する

起動しているユニットを停止するには、stopオプションにユニット名を指定して実行する。これは /etc/init.d/サービスstopと同様の動きとなる。

$ sudo systemctl stop ユニット名

Page 28: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニットの設定を再読み込みする

ユニットの設定を再読み込みするには、daemon-reloadオプションにユニット名を指定して実行する。

$ sudo systemctl daemon-reload ユニット名

実際に動いているデーモンの設定、例えばhttpdの設定を再読み込みし、再起動するには reloadオプションを使う。

Page 29: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニットの自動起動を有効にする

ユニットの自動起動を有効にするには enable オプションにユニット名を指定して実行する。有効にすると /etc/systemd/system/ターゲット.wants/に/lib/systemd/system/にあるユニットへのシンボリックリンクが作成される。どのターゲットで自動起動が有効になるかは、ユニットファイルの Installセクションで指定する。

$ sudo systemctl enable ユニット名

Page 30: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニットの自動起動を無効にする

ユニットの自動起動を無効にするには disable オプションにユニット名を指定して実行する。無効にすると、/etc/systemd/system/ターゲット.wants/にあるシンボリックリンクが削除される。

$ sudo systemctl disabe ユニット名

Page 31: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニットの詳細を確認する

ユニットの詳細を確認するには show オプションにユニット名を指定して実行する。これにより指定したユニットと他のユニット、ターゲットの関係などが分かる。

$ sudo systemctl show rsyslog.serviceId=rsyslog.serviceNames=syslog.service rsyslog.serviceRequires=basic.targetWants=syslog.socketWantedBy=multi-user.targetConflicts=shutdown.target...

Page 32: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニットについて

ユニットには各ユニット間の依存関係を記述することができる。依存関係の指定として以下がある。

定義 説明Before そのユニットの後に起動されるべきユニット。After そのユニットの前に起動されるべきユニット。Conflicts 同時に起動できないユニット。Service ソケットによる起動を行うユニット。Sockets ソケットによるユニットの起動を行う場合のソケット情報。Wants 同時に起動してほしいユニット。成功、失敗は関係ない。Requires 同時に起動されなければならないユニット。ユニットの起動が失敗した場合は要求元も失敗するBindTo ユニットをグループとしてまとめる。

Page 33: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

ユニットについて

例えば、default.target の内容は以下のようになっている。

[Unit]Description=Graphical InterfaceRequires=multi-user.targetAfter=multi-user.targetConflicts=rescue.targetAllowIsolate=yes

このターゲットはmulti-user.targetと同時に起動され、multi-user.targetの後に起動する。また、 rescue.targetと同時に起動できない。

Page 34: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

まとめ

Debian でも問題なく systemd が利用できる環境が整っている。レガシーなSysVinitは捨て、新しい initの世界へ足を踏み入れてみてはいかがでしょうか。

Page 35: 東京エリアDebian勉強会 - systemd · 2018-04-22 · 東京エリアDebian勉強会 systemd 岩松信洋 iwamatsu@debian.org 2012年11月17日

参考文献

http://www.slideshare.net/moriwaka/systemd