第 3 章 SYSTEMD によるサービス管理
3.6. 起動時間を短縮するための SYSTEMD の最適化
デフォルトで有効になっている systemd ユニットファイルの一覧があります。システムの起動時に、こ のようなユニットファイルで定義されているシステムサービスが自動的に実行し、システムの起動時間 に影響を及ぼします。
本セクションでは、以下を説明します。
システムの起動パフォーマンスを調べるツール
systemd ユニットがデフォルトで無効になっている目的と、起動時間を短縮するために、この
ような systemd ユニットを無効にしても安全な状況
3.6.1. システムの起動パフォーマンスを調べる
システムの起動時のパフォーマンスを調べる場合は、systemd-analyze コマンドを使用できます。この コマンドでは、多数のオプションが使用できます。ただし、本セクションでは、起動時間を短縮するた
めに、systemd を調整する際に重要なものだけを説明します。
オプションの完全リストおよび詳細な説明は、man ページの systemd-analyze を参照してください。
前提条件 前提条件
システムの起動時に調整するために、systemd を調べる前に、有効なサービスの一覧を表示することも できます。
$ systemctl list-unit-files --state=enabled システム全体の起動時間の分析
システム全体の起動時間の分析 手順
手順
システムが最後に起動してからの時間に関する総合的な情報を表示する場合は、次のコマンド を実行します。
$ systemd-analyze
ユニットの初期化時間の分析 ユニットの初期化時間の分析 手順
手順
各 systemd ユニットの初期化時間の詳細を確認する場合は、次のコマンドを実行します。
$ systemd-analyze blame
この出力では、システムが最後に起動した時に初期化にかかった時間に応じて、ユニットが降順で表示 されます。
重要なユニットの識別 重要なユニットの識別 手順
手順
システムが最後に起動した時に、初期化に最も時間がかかったユニットを特定するには、次の コマンドを実行します。
$ systemd-analyze critical-chain
この出力では、起動に非常に時間がかかっているユニットが、赤字で強調表示されています。
図
図3.1 systemd-analyze critical-chain コマンドの出力コマンドの出力
3.6.2. 無効にしても安全なサービスを選択するためのガイド
システムの起動時に時間がかかっている場合は、デフォルトで起動時に有効になるサービスの一部を無 効にすることで、起動時間を短くできます。
このようなサービスを一覧表示するには、次のコマンドを実行します。
$ systemctl list-unit-files --state=enabled
サービスを無効にするには、次のコマンドを実行します。
# systemctl disable service_name
ただし、お使いのオペレーティングシステムが安全で、希望通りに機能できるように、特定のサービス は有効にしたままにしておく必要があります。
次の表は、無効にしても安全なサービスを選択するためのガイドとして使用できます。この表では、
Red Hat Enterprise Linux 8 の最小インストールで、デフォルトで有効になっているすべてのサービス
と、各サービスを無効にしても安全かどうかを説明します。
その他にも、サービスを無効にできる状況と、そのサービスを無効にすべきではない理由を示していま す。
表
表3.14 RHEL 8 の最小インストールで、デフォルトで有効になっているサービスの最小インストールで、デフォルトで有効になっているサービス サービス名
サービス名 無効にすることは可能か無効にすることは可能か? 詳細情報詳細情報
auditd.service はい auditd.serviceは、カーネルか らの監査メッセージが必要ない場 合に限り無効にしま
す。auditd.serviceを無効にす ると、/var/log/audit/audit.log ファイルが生成されないことに注 意してください。無効にすると、
ユーザーログイン、サービスの起 動、パスワードの変更などの、一 般的に確認されるアクションまた はレビューをさかのぼって確認す ることはできません。auditd に は、カーネルの部分と、サービス そのものが含まれることに注意し てください。systemctl disable auditdコマンドを実行すると、
サービスを無効にするだけで、
カーネル部分は無効にしません。
システムの監査を完全に無効にす るには、カーネルコマンドライン にaudit=0と設定します。
[email protected] いいえ このサービスは、本当に必要な場
合に限り実行されるため、無効に する必要はありません。
crond.service はい crond.service を無効にすると
crontab からアイテムが実行しな
いことに注意してください。
dbus-org.fedoraproject.FirewallD1.servic e
はい firewalld.serviceへのシンボ
リックリンク
dbus-org.freedesktop.NetworkManager .service
はい NetworkManager.serviceへの
シンボリックリンク
dbus-org.freedesktop.nm-dispatcher.service
はい
NetworkManager-dispatcher.serviceへのシンボ リックリンク
firewalld.service はい ファイアウォールが必要ない場合
に限りfirewalld.serviceを無効 にします。
[email protected] いいえ このサービスは、本当に必要な場
合に限り実行されるため、無効に する必要はありません。
サービス名
サービス名 無効にすることは可能か無効にすることは可能か? 詳細情報詳細情報
import-state.service はい import-state.serviceは、ネッ トワークストレージからの起動が 必要ない場合に限り無効にしま す。
irqbalance.service はい irqbalance.serviceは、CPU が
1 つしかない場合に限り無効にし ます。システムに CPU が複数あ る場合はirqbalance.serviceを 無効にしないでください。
kdump.service はい kdump.serviceは、カーネルク
ラッシュからのレポートが必要な い場合に限り無効にします。
loadmodules.service はい このサービス
は、/etc/rc.modulesディレク トリーまたは
/etc/sysconfig/modulesディ レクトリーがなければ起動しませ ん。つまり、RHEL 8 の最小イン ストールでは起動しません。
lvm2-monitor.service はい lvm2-monitor.serviceは、論
理ボリュームマネージャー (LVM) を使用しない場合に限り無効にし ます。
microcode.service いいえ そのサービスは、CPU 内のマイ
クロコードソフトウェアの更新を 提供するため、無効にしないでく ださい。
NetworkManager-dispatcher.service
はい
NetworkManager-dispatcher.serviceは、ネット ワーク設定変更の通知が必要ない 場合 (静的ネットワークなど) に限 り無効にします。
サービス名
サービス名 無効にすることは可能か無効にすることは可能か? 詳細情報詳細情報
NetworkManager-wait-online.service
はい
NetworkManager-wait-online.serviceは、システムの 起動直後にネットワーク接続が利 用できるようになっている必要が ない場合に限り無効にします。こ のサービスを有効にすると、ネッ トワーク接続が有効になるまで、
システムの起動が完了しません。
これにより、起動時間が大幅に長 くなることがあります。
NetworkManager.service はい NetworkManager.serviceは、
ネットワークへの接続が必要ない 場合に限り無効にします。
nis-domainname.service はい nis-domainname.serviceは、
ネットワークインフォメーション
サービス (NIS) を使用しない場合
に限り無効にします。
rhsmcertd.service いいえ
rngd.service はい rngd.serviceは、システムでエ
ントロピーがそれほど必要ない場 合、またはハードウェアジェネ レーターがない場合に限り無効に します。このサービスは、X.509 証明書の生成に使用されるシステ ム (たとえば FreeIPA サーバー) など、良好なエントロピーを多数 必要とする環境で必要になりま す。
rsyslog.service はい rsyslog.serviceは、永続的なロ
グが必要ない場合に限り、または systemd-journaldを永続モー ドに設定した場合に限り無効にし ます。
selinux-autorelabel-mark.service はい
selinux-autorelabel-mark.serviceは、SELinux を使 用しない場合に限り無効にしま す。
sshd.service はい sshd.serviceは、OpenSSH
サーバーへのリモートログインが 必要ない場合に限り無効にしま す。
サービス名
サービス名 無効にすることは可能か無効にすることは可能か? 詳細情報詳細情報
sssd.service はい sssd.serviceは、ネットワーク を介して (たとえば LDAP や Kerberos を使用して) システムに ログインするユーザーがいない場 合に限り無効にしま
す。sssd.serviceを無効にした 場合は、sssd-*ユニットをすべ て無効にすることを Red Hat は推 奨します。
syslog.service はい rsyslog.serviceのエイリアス
tuned.service はい tuned.serviceは、パフォーマ
ンスチューニングを使用する必要 がない場合に限り無効にします。
lvm2-lvmpolld.socket はい lvm2-lvmpolld.socketは、論
理ボリュームマネージャー (LVM) を使用しない場合に限り無効にし ます。
dnf-makecache.timer はい dnf-makecache.timerは、パッ
ケージメターデータを自動的に更 新する必要がない場合に限り無効 にします。
unbound-anchor.timer はい unbound-anchor.timerは、
DNSSEC (DNS Security
Extensions) のルートトラストア ンカーを毎日更新する必要がない 場合に限り無効にします。この ルートトラストアンカーは、
DNSSEC 検証の Unbound リゾル バー、およびリゾルバーライブラ リーにより使用されます。
サービス名
サービス名 無効にすることは可能か無効にすることは可能か? 詳細情報詳細情報
サービスの詳細は、次のいずれかのコマンドを実行すると表示できます。
$ systemctl cat <service_name>
$ systemctl help <service_name>
systemctl cat コマンドは、/usr/lib/systemd/system/<service> の配下に置かれたサービスファイルの 内容と、適用可能なすべてのオーバーライドを提供します。適用可能なオーバーライドに
は、/etc/systemd/system/<service> ファイルからのユニットファイルオーバーライドと、対応する
unit.type.d ディレクトリーのドロップインファイルが含まれます。
ドロップインファイルの詳細は、man ページの systemd.unit を参照してください。