よくある質問・用語集

  • もっと調べる
  • どうやって使う?

systemdとは

systemdとはLinuxなどのUnix系のコンピューターのシステムを起動するときに様々なプログラムを動かす元のプログラムのことである。また、systemdのような元のプログラムのことをinitプロセスと呼ぶ。

systemdの歴史

systemdが最初にリリースされたのは2010年である。systemdリリース以前は、upstartやsysVinitという管理プログラムが利用されていた。upstart/sysVinitともに、サービスをシェルスクリプトで管理していたため、処理効率が悪かった。またシェルスクリプトでは、複雑な処理が実行されることもあり、管理が難しくなる傾向があった。systemdは効率的にコンピューターを起動させたいという目的から作成された。CentOSでは、2014年7月にリリースされたCentOS7から標準的にSystemdが利用されるようになり、2019年現在多くの一般的なLinuxディストリビューションでsystemdが使用されている。

systemd実行のプロセス

systemdが動作するまで何が起きているのかについて説明する。コンピューターの電源を入れることによりハードウェアを動かすことのできるソフトウェア(BIOS)が起動し、起動中のBIOSがブートローダーというプログラムを呼び出す。ブートローダーがカーネルを起動させると、その後でinitプロセスが動作するようになる。initプロセスに従来はsysVinit,upstartが使われていた。現在はsystemdが使われている。systemdとそれ以外の比較について詳細は下の図を参照。

systemdの仕組み

systemdと従来のinitプロセス

systemdの特徴

systemdには以下のような特徴がある。

ユニットという単位

systemdはユニット(unit)という単位でシステムを管理している。ユニットはユニットファイルというファイルで設定され、用途ごとにまとめられる。systemdが管理しているユニットの種類には、ソフトウェア(daemon)の起動処理をおこなうServiceユニット、接続があるとプロセスに受け渡すSocketユニット、指定のファイルシステムをマウントするMountユニット、ユニットのグループ化をするためのTargetユニットなどがある。

システム管理の統一

systemdを使うと、システムの管理を統一した方法で行うことができる。systemdが登場する以前に使われていたsysVinitでは、ディストリビューションごとで、サービスの管理方法が統一されていなかった。そのため操作方法などに違いが生じるという問題があった。しかし、systemdではこれらの管理方法が一本化され、異なるディストリビューションでも同様の操作での対応が可能となった。systemdであればログ出力の管理もまとめて対応できる。

起動速度が速い

systemdはsysVinitに比べてシステム(system)の起動速度が非常に速い。sysVinitはサービス起動制御にシェルスクリプトを採用し、サービスの起動を1サービスずつ順番に行っていくものだった。これに対し、systemdは処理を同時に実行できるようになっている。そのため、起動にかかる時間が少ない。また、起動時は一部の機能だけの起動が優先的に行われ、後から他に必要なものを必要なタイミングで起動する。このシンプルな概念によってsystemdは高速な起動を実現している。ただし、systemdでは依存関係や起動順をユーザー管理者が任意で変更することができる。systemdは自動起動の設定も可能である。

Cgroup

systemdはCgroupを活用する事で、複数のサービスをグループにまとめてリソースに制限をかけることができる。

デージーネットの取り組み

デージーネットではsystemdを利用している人に向けた記事の作成や、CentOS7/RHEL7プロフェッショナルセミナーなどのsystemdに関連した講習会やセミナーを開催している。

また、CentOS7に関しての書籍も販売しており、systemdへの更なる理解が期待できる。

【カテゴリ】:システム管理  Linux関連技術  

  • もっと調べる
  • どうやって使う?

【Webセミナー】OSSのおすすめメーリングリストシステム紹介セミナー

日程: 10月23日(水)Webセミナー「BigBlueButton」を使用します。
内容: OSSで実現可能なメーリングリストシステムをご紹介します。
ご興味のあるかたはぜひご参加ください。

セミナー申込

関連用語

systemdに関連するページ(事例など)

systemdとは先頭へ