1.はじめに
新しいサービスやリソースの管理方法として、systemdを採用するLinuxディストリビューションが最近増えています。
私が使っているCentOSに関しても、ver.7からsystemdによる管理がなされています。
systemdは「Rethinking PID 1」という発想を元に、Red Hatのプロジェクトとして開発がスタートしました。
しかしながら、プログラムの規模が大きく、現状の管理方法と違い過ぎることから、出始めはディストリビューションへの採用はなかなか進みませんでした。
過去5,6年の間で急激にsystemdを採用するディストリビューションが増え、現在ではほとんどのディストリビューションにおいてsystemdが使用されています。
慣れ親しんだ手法を捨てて、まったく異なる手法を採用するのですから、それだけsystemdを採用することで受けられる恩恵が大きいということですね。
2.systemdでこれが変わる!
冒頭でも述べた通り、systemdはサービス管理、リソース管理を行います。主な特徴として、
- 管理方法の統一
- システム、サービス起動の高速化
- ジャーナル(ログ)の判読性の向上
管理方法の統一
従来、サービス管理を行っていたのは、「sysVinit」ですが、ディストリビューションによって管理方法がまちまちでした。systemdを採用しているディストリビューションでは管理方法が統一されます。なので、使い慣れていないディストリビューションを使用することになっても、普段と変わらない操作を行なえば良い、ということになります。
システム、サービスの起動と高速化
sysVinitでは、起動に関するファイルがシェルスクリプトで書かれていました。systemdでは、ユニットという単位でサービス処理を管理しています。シェルスクリプトが使用されていないため、並列度が高く、柔軟な起動が可能となっています。
※/etc/rc.d/init.d/httpdの内容
インタープリタ(#!/bin/bash)と書かれている通り、シェルスクリプトが記述されています。
※/usr/lib/systemd/system/httpd.serviceの内容
Unitという単位での記述となっています。systemdの使用するユニットの種類を挙げます。
実行型ユニット:実際に処理を行う
・Serviceユニット
・Mountユニット
・Automountユニット
・Swapユニット
起動型ユニット:処理を行うタイミングを制御する
・Socketユニット
・Timerユニット
・Pathユニット
構造型ユニット:起動型ユニットや実行型ユニットをまとめて管理するために用いられる
・Targetユニット
・Sliceユニット
管理型ユニット:systemdが自動生成する
・Deviceユニット
・Scopeユニット
ジャーナル(ログ)の判読性の向上
従来のsyslog機能も残しつつ、systemd自体がログを管理する機能を持っています。systemd単独でログを管理することが可能となっています。
また、syslogと違い、systemdが管理するログはバイナリのデータとしてデータベースに保管されています。今までは、grepコマンド等と併用することにより、ログの抽出表示を行っていましたが、日時や種類を指定して、必要なログだけを高速に参照することが可能となっています。
3.知っておきたいポイント
・systemctlコマンド
サービスの起動、停止などの操作をsystemctlコマンドを用いて行います。
・journalctlコマンド
systemdにより蓄積されたジャーナルの確認を行うコマンドとして、journalctlコマンドがあります。
今回の記事は概要を書きたいので、詳しくは次回以降掲載していきたいと思います。
とりあえずは、こんなコマンドを使って操作しますよ、ってことをお伝えしておきます。
4.おわりに
systemdの概要についてさらっと書いてみました。次回は、実際の操作を行うにあたってのポイントを詳しく見ていきたいと思っています。