systemdによるCentOS 7の管理
ドロップインによるユニットのカスタマイズ
systemdには、サービスの起動・停止の制御や依存関係、起動順序の制御だけでなく、プロセス管理の挙動に関するパラメータを詳細に設定することが可能となっています。例えば、Apache Webサーバーで有名なhttpdサービスのパラメータは以下で確認することが可能です。
# systemctl show --all httpd
様々なパラメータが設定可能であることがわかります。しかし、特定のパラメータについて明示的に設定を行う場合には、ユーザー独自の設定ファイルに特定のパラメータのみを記述しておくとアプリケーションやサービスの運用管理が煩雑化しにくくなります。ここでは、httpdサービスにパラメータを個別に指定して管理する方法を紹介します。まず、systemdでは、ユーザー独自のパラメータを指定するためのディレクトリを作成します。httpd.serviceの場合は、httpd.service.dという名前のディレクトリを/etc/systemd/systemディレクトリの下に作成します。
# mkdir /etc/systemd/system/httpd.service.d/
次に、設定ファイルを作成します。今回は、10-httpd.confと言うファイル名にします。
# cd /etc/systemd/system/httpd.service.d/ # vi 10-httpd.conf [Service] Restart=always CPUAffinity=0 1 2 3 OOMScoreAdjust=-1000
10-httpd.confファイルの先頭行に、[Service]を記述し、その下にパラメータを記述します。このパラメータは、man systemd.execやman systemd.serviceで確認することができます。今回は、下記3つを指定しました。
Restart=always | サービスの正常終了しかに関わらず、サービスを再起動 |
---|---|
CPUAffinity=0 1 2 3 | 実行するプロセスのCPUアフィニティを設定(例はCPU0、1、2、3に固定) |
OOMScoreAdjust=-1000 | 「Out of Memory」発生時のプロセス制御(-1000でプロセスkillを無効) |
設定ファイルを記述したら、デーモンを再起動します。
# systemctl daemon-reload
httpdサービスの状態を確認します。すると下図のようになり、「Drop-In:」の行に、先程作成したディレクトリと設定ファイルが読み込まれていることが分かります。これはsystemdにおける「ドロップイン」と呼ばれており、ユーザー独自でパラメータを明示的に指定する場合に利用される仕組みです。
ドロップインを利用したパラメータ設定を行った後は必ず、systemctl daemon-reloadが必要になりますので、注意して下さい。
ロケール、キーボード設定、日付・時間・タイムゾーン設定
CentOS 7は、ロケール、キーボード設定、日付・時間・タイムゾーンなどの設定もCentOS 6系と大きく異なります。CentOS 7では、ロケール、キーボードを設定するlocalectlコマンド、日付・時間・タイムゾーンを設定するtimedatectlコマンドが用意されています。設定ファイルもCentOS 6系とは異なりますので注意して下さい。
ロケールの変更
システムのロケールの変更は、localectlコマンドで行います。現在のロケールの状態を確認します。
# localectl System Locale: LANG=en_US.UTF-8 VC Keymap: us X11 Layout: us
ロケールを日本語に設定し、変更されているかを確認します。
# localectl set-locale LANG=ja_JP.utf8 # localectl System Locale: LANG=ja_JP.utf8 VC Keymap: us X11 Layout: us
ロケールの設定ファイルは、/etc/locale.confファイルになります。変更されているかどうかを確認します。
# cat /etc/locale.conf LANG=ja_JP.utf8
キーボード設定
キーボード設定も、localectlコマンドで行います。利用可能なキーマップを表示します。
# localectl list-keymaps ... ... jp106 ... unicode us us-acentos wangbe wangbe2 windowkeys
日本語のキーマップはjp106として利用可能です。 現在のキーボード設定を日本語106キーボードに設定します。
# localectl set-keymap jp106 [root@centos70n02 ~]# localectl System Locale: LANG=ja_JP.utf8 VC Keymap: jp106 X11 Layout: jp X11 Model: jp106 X11 Options: terminate:ctrl_alt_bksp
キーマップの設定ファイルは、/etc/vconsole.confファイルになります。先述の設定が反映されているか確認してみます。
# cat /etc/vconsole.conf FONT=latarcyrheb-sun16 KEYMAP=jp106
日付、時刻、タイムゾーンの設定
CentOS 7では、日付、時刻の設定コマンドとして従来のdateコマンドやhwclockコマンドが存在しますが、新しくsystemdで制御されるtimedatectlコマンドが用意されています。timedatectlコマンドをオプション無しで実行すると、現在の日付、時刻、タイムゾーン、NTPの同期設定の有無等を表示します。
# timedatectl Local time: 金 2014-09-05 19:41:11 JST Universal time: 金 2014-09-05 10:41:11 UTC RTC time: 金 2014-09-05 10:41:11 Timezone: Asia/Tokyo (JST, +0900) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a
日付を設定する場合は、timedatectlコマンドにset-timeオプションを指定します。以下は、2014年9月6日に設定する例です。
# timedatectl set-time 2014-09-06 # timedatectl Local time: 土 2014-09-06 00:00:00 JST Universal time: 金 2014-09-05 15:00:00 UTC RTC time: 金 2014-09-05 15:00:01 Timezone: Asia/Tokyo (JST, +0900) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a
時刻を設定する場合も、timedatectlコマンドにset-timeオプションを指定します。以下は、19時51分00秒に設定する例です。
# timedatectl set-time 19:51:00 # timedatectl Local time: 金 2013-09-06 19:51:00 JST Universal time: 金 2013-09-06 10:51:00 UTC RTC time: 金 2013-09-06 10:51:00 Timezone: Asia/Tokyo (JST, +0900) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a
日付と時刻を同時に設定する場合は、以下のように設定します。
# timedatectl set-time "2014-09-06 19:55:00" # timedatectl Local time: 土 2014-09-06 19:55:01 JST Universal time: 土 2014-09-06 10:55:01 UTC RTC time: 土 2014-09-06 10:55:01 Timezone: Asia/Tokyo (JST, +0900) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a
タイムゾーンの表示は、timedatectlコマンドにlist-timezoneオプションを付与して実行します。
# timedatectl list-timezones Africa/Abidjan Africa/Accra ... ... Asia/Tokyo ... ...
タイムゾーンを変更するには、timedatectlコマンドにset-timezoneオプションを付与します。以下では、タイムゾーンとしてAsia/Tokyoを設定する例です。
# timedatectl set-timezone Asia/Tokyo
以上で、ランレベル、サービスの制御、ログ管理、ロケール、キーボード設定、日付・時間・タイムゾーン設定を紹介しました。これらは、すべてsystemdで提供される機能です。systemdがCentOS 7において、幅広いコンポーネントに渡って制御を行っていることが理解できます。systemdだけでも一冊の本になるぐらいの膨大な情報量になりますが、まずは、CentOS 5やCentOS 6系で自分が理解していた管理手法と同様のことをCentOS 7のsystemdで実現することを目指してみて下さい。
この連載が書籍になりました! | |
---|---|
古賀 政純 著 |
CentOS 7実践ガイド本書は、CentOS 7を取り巻く市場動向、CentOS 7が利用されるサーバーシステムの選定、CentOS 7の基礎、システム設計、OS管理やCentOS 7に対応したアプリケーションサーバーの構築手順などの勘所をご紹介します。連載では書ききれなかった本の内容、見どころが満載!
|