AlmaLinux 9 を最小インストールした直後のサーバーは、ホスト名が未設定、NTP 同期先がデフォルト、DNS も未指定という状態です。本記事では、企業のサーバー運用チームが最小インストール直後に行うべき初期設定を、ホスト名・タイムゾーン・NTP・ロケール・DNS・プロキシ・パッケージ導入・ユーザー管理・セキュリティ基盤まで 17 項目にわたって手順化しています。各設定には「なぜやるのか」の理由と、切り戻し方法を併記しました。第1回 システム基本情報の確認でサーバーの現状を把握した後、この記事の順序で設定を進めてください。
初期設定コマンド早見表
| 設定項目 | 主なコマンド | 反映タイミング |
|---|---|---|
| ホスト名 | hostnamectl set-hostname | 即時(プロンプトは再ログイン後) |
| タイムゾーン | timedatectl set-timezone | 即時 |
| NTP | /etc/chrony.conf 編集 → systemctl restart chronyd | 再起動後 |
| ロケール | localectl set-locale | 次回ログイン時 |
| DNS | nmcli connection modify | nmcli connection up 後 |
| プロキシ | /etc/profile.d/proxy.sh, /etc/dnf/dnf.conf | 再ログイン後 / 即時 |
| システムアップデート | dnf update | 再起動が必要な場合あり |
| 基本パッケージ | dnf install | 即時 |
| ユーザー作成・sudo | useradd -G wheel | 即時 |
| SELinux | getenforce | 確認のみ |
| firewalld | firewall-cmd –state | 確認のみ |
| カーネルパラメータ | sysctl -p /etc/sysctl.d/99-security.conf | 即時(永続化済み) |
| 不要サービス無効化 | systemctl disable | 次回起動時 |
| 操作履歴・auditd | HISTTIMEFORMAT, systemctl status auditd | 即時 / 確認のみ |
| ログ永続化 | journald.conf Storage=persistent | systemctl restart 後 |
| kdump | grubby + systemctl enable kdump | 再起動後 |
| スワップ | swapon –show | 確認のみ |
前提条件
| 項目 | 値 |
|---|---|
| OS | AlmaLinux 9.6(Sage Margay) |
| カーネル | 5.14.0-570.12.1.el9_6.x86_64 |
| インストールタイプ | 最小限のインストール(Minimal Install) |
| 実行ユーザー | root(または sudo 権限を持つ一般ユーザー) |
| ネットワーク | 企業ネットワーク(プロキシ経由でインターネット接続) |
| 想定ドメイン | example.corp |
本記事のコマンドはすべて root 権限で実行します。プロンプトが # の場合は root ユーザーまたは sudo での実行を意味します。
1. ホスト名の設定
ホスト名はログやアラートの送信元を識別するために設定します。未設定のまま運用すると、複数サーバーの障害調査時にどのサーバーのログか判別できなくなります。
ホスト名の変更
実行コマンド:
# hostnamectl set-hostname web-server01.example.corp
設定が反映されたことを確認します。
実行コマンド:
# hostnamectl --static
実行結果:
web-server01.example.corp
ホスト名は即時反映されますが、シェルのプロンプト表示(PS1)に反映されるのは再ログイン後です。
/etc/hosts への追記
DNS に登録されていない段階でも、自ホスト名が名前解決できるように /etc/hosts に追記します。
実行コマンド:
# vi /etc/hosts
追記内容:
192.168.1.121 web-server01.example.corp web-server01
追記後、自ホスト名で名前解決できることを確認します。
実行コマンド:
# getent hosts web-server01.example.corp
実行結果:
192.168.1.121 web-server01.example.corp web-server01
切り戻し方法
ホスト名を元に戻す場合は hostnamectl set-hostname 旧ホスト名 を実行し、/etc/hosts の追記行を削除してください。
2. タイムゾーンの設定
タイムゾーンはログのタイムスタンプや cron ジョブの実行時刻に影響します。日本国内で運用するサーバーは Asia/Tokyo に設定します。
実行コマンド:
# timedatectl set-timezone Asia/Tokyo
設定を確認します。
実行コマンド:
# timedatectl
実行結果:
Local time: 火 2026-03-24 14:41:54 JST
Universal time: 火 2026-03-24 05:41:54 UTC
RTC time: 火 2026-03-24 05:41:54
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Time zone: Asia/Tokyo (JST, +0900) と表示されていれば設定完了です。この変更は即時反映されます。
切り戻し方法
タイムゾーンを変更前の値に戻す場合は timedatectl set-timezone 旧タイムゾーン を実行します(例:timedatectl set-timezone UTC)。
3. NTP の設定
NTP(Network Time Protocol)はサーバーの時刻を正確に同期するためのプロトコルです。AlmaLinux 9 では chronyd が NTP クライアントとして動作しています。企業環境では、社内 NTP サーバーを同期先に指定するのが一般的です。インターネット上の公開 NTP サーバーへ直接接続できない環境も多いため、社内 NTP サーバーのアドレスをネットワーク管理者に確認してから設定してください。
現在の同期状態を確認する
実行コマンド:
# chronyc sources
実行結果:
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* y.ns.gin.ntt.net 2 10 377 186 +1257us[+1519us] +/- 76ms
行頭の ^* は、この NTP サーバーと同期中であることを示します。デフォルトではインターネット上の NTP サーバーが設定されていますが、企業環境では社内 NTP サーバーに変更します。
chrony.conf の編集
編集前にバックアップを取得します。
実行コマンド:
# cp -p /etc/chrony.conf /etc/chrony.conf.bak
設定ファイルを編集します。
実行コマンド:
# vi /etc/chrony.conf
既存の server 行または pool 行をコメントアウトし、社内 NTP サーバーを追記します。
変更前:
server y.ns.gin.ntt.net iburst
変更後:
#server y.ns.gin.ntt.net iburst
server ntp.example.corp iburst
chronyd を再起動して設定を反映します。
実行コマンド:
# systemctl restart chronyd
再起動後に同期状態を確認します。
実行コマンド:
# chronyc sources
実行結果:
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp.example.corp 2 6 17 3 -234us[ -468us] +/- 12ms
^* が社内 NTP サーバーに表示されていれば設定完了です。Reach の値が 0 のまま変わらない場合は、NTP ポート(123/udp)がファイアウォールでブロックされている可能性があります。
より詳細な同期情報は chronyc tracking で確認できます。
実行コマンド:
# chronyc tracking
実行結果:
Reference ID : 81FA23FB (ntp.example.corp)
Stratum : 3
Ref time (UTC) : Tue Mar 24 07:13:32 2026
System time : 0.000362673 seconds fast of NTP time
Last offset : +0.000261909 seconds
RMS offset : 0.000320005 seconds
Frequency : 19.809 ppm fast
Residual freq : +0.012 ppm
Skew : 0.385 ppm
Root delay : 0.124825627 seconds
Root dispersion : 0.012043971 seconds
Update interval : 1037.2 seconds
Leap status : Normal
Leap status: Normal と表示されていれば、時刻同期は正常です。
切り戻し方法
NTP 設定を元に戻す場合は cp -p /etc/chrony.conf.bak /etc/chrony.conf でバックアップファイルを復元し、systemctl restart chronyd を実行してください。
4. ロケールの設定
ロケールはコマンド出力の言語や日時フォーマットを決定します。日本語環境のサーバーでは ja_JP.UTF-8 を設定するのが一般的です。
現在のロケールを確認します。
実行コマンド:
# localectl
実行結果:
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp
X11 Layout: jp
すでに ja_JP.UTF-8 が設定されていれば変更不要です。変更が必要な場合は以下のコマンドを実行します。
実行コマンド:
# localectl set-locale LANG=ja_JP.UTF-8
この設定は次回ログイン時に反映されます。現在のセッションに即時反映する場合は source /etc/locale.conf を実行してください。
英語出力にしたい場合
運用チームの方針でコマンド出力を英語にする場合は localectl set-locale LANG=en_US.UTF-8 を使用します。英語環境のほうがエラーメッセージの検索性が高いため、チーム内で方針を統一してください。
5. DNS の設定
DNS は名前解決に使用するネームサーバーの設定です。企業環境では社内 DNS サーバーを指定します。AlmaLinux 9 では NetworkManager が DNS 設定を管理するため、/etc/resolv.conf を直接編集するのではなく、nmcli コマンドで設定します。
現在の DNS 設定を確認する
実行コマンド:
# cat /etc/resolv.conf
実行結果:
# Generated by NetworkManager
nameserver 192.168.1.1
社内 DNS サーバーを設定する
まず、対象のコネクション名を確認します。
実行コマンド:
# nmcli connection show
コネクション名を確認したら、DNS サーバーを設定します。以下の例ではコネクション名が eth0 の場合を示しています。
実行コマンド:
# nmcli connection modify eth0 ipv4.dns "10.0.2.254 192.168.1.1"
設定を反映するためにコネクションを再起動します。
SSH 接続への影響
次のコマンドはネットワークインターフェースを一時的に切断・再接続します。SSH でリモート接続している場合、接続が一時的に切れる可能性があります。コンソール接続で実行するか、接続が切れた場合に再接続できる準備をしてから実行してください。
実行コマンド:
# nmcli connection up eth0
設定が反映されたことを確認します。
実行コマンド:
# nmcli connection show eth0 | grep ipv4.dns
実行結果:
ipv4.dns: 10.0.2.254,192.168.1.1
/etc/resolv.conf にも反映されていることを確認します。
実行コマンド:
# cat /etc/resolv.conf
実行結果:
# Generated by NetworkManager
nameserver 10.0.2.254
nameserver 192.168.1.1
/etc/resolv.conf を直接編集しないでください
AlmaLinux 9 では /etc/resolv.conf は NetworkManager が自動生成します。直接編集しても、NetworkManager がコネクションを再読み込みした時点で上書きされます。DNS 設定は必ず nmcli コマンドで変更してください。
切り戻し方法
DNS 設定を元に戻す場合は nmcli connection modify eth0 ipv4.dns "192.168.1.1" のように変更前の値を指定し、nmcli connection up eth0 で反映してください。
6. プロキシの設定
企業ネットワークでは、インターネットへの HTTP/HTTPS 通信にプロキシサーバーを経由する構成が一般的です。プロキシ設定をしないと、dnf によるパッケージ取得や curl/wget での外部通信がタイムアウトします。
シェル環境変数の設定(全ユーザー共通)
全ユーザーに対してプロキシ環境変数を設定するため、/etc/profile.d/ にスクリプトを作成します。
実行コマンド:
# vi /etc/profile.d/proxy.sh
記載内容:
export http_proxy="http://proxy.example.corp:8080"
export https_proxy="http://proxy.example.corp:8080"
export no_proxy="localhost,127.0.0.1,.example.corp"
no_proxy には、プロキシを経由させたくない社内ドメインやローカルアドレスを記載します。この設定は次回ログイン時に反映されます。現在のセッションに即時反映する場合は以下を実行してください。
実行コマンド:
# source /etc/profile.d/proxy.sh
dnf のプロキシ設定
dnf は独自のプロキシ設定を /etc/dnf/dnf.conf に持っています。シェル環境変数とは別に設定が必要です。
実行コマンド:
# vi /etc/dnf/dnf.conf
変更前:
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
変更後([main] セクションの末尾に追記):
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
proxy=http://proxy.example.corp:8080
dnf.conf への変更は即時反映されます。再起動は不要です。
切り戻し方法
プロキシ設定を元に戻す場合は、/etc/profile.d/proxy.sh を削除し、/etc/dnf/dnf.conf から proxy= 行を削除してください。シェル環境変数は再ログイン後にクリアされます。
7. システムアップデート
最小インストール直後のパッケージにはセキュリティ修正が適用されていない場合があります。初期設定の段階でシステム全体を最新の状態にアップデートします。
実行コマンド:
# dnf update -y
アップデート完了後、再起動が必要かどうかを確認します。
実行コマンド:
# needs-restarting -r
実行結果(再起動不要の場合):
起動以降にアップデートされたコアライブラリーまたはサービスはありません。
再起動な必要ありません。
「Reboot is required」や「再起動が必要です」と表示された場合は、カーネルや glibc などのコアライブラリが更新されています。メンテナンスウィンドウ内で再起動を実施してください。
本番環境でのアップデートについて
本番稼働中のサーバーでは dnf update を無計画に実行しないでください。検証環境で動作確認を行い、変更管理プロセスに従って実施します。初期構築段階(サービス投入前)であれば、この手順で問題ありません。
8. 基本パッケージのインストール
最小インストールでは、運用に必要なコマンドの多くが含まれていません。以下のパッケージをインストールすることで、ログ調査・ネットワーク診断・パフォーマンス確認といった日常的な運用作業が行えるようになります。
実行コマンド:
# dnf install -y vim bash-completion tar wget curl rsync bind-utils net-tools traceroute tcpdump lsof sysstat man-pages tmux
各パッケージの用途は以下の通りです。
| パッケージ | 主なコマンド | 用途 |
|---|---|---|
| vim | vim | テキストエディタ(vi の拡張版) |
| bash-completion | (Tab 補完) | コマンドやファイルパスの Tab 補完を強化 |
| tar | tar | アーカイブの作成・展開 |
| wget | wget | HTTP/HTTPS でのファイルダウンロード |
| curl | curl | HTTP/HTTPS 通信(API 疎通確認等) |
| rsync | rsync | ファイルの同期・転送 |
| bind-utils | dig, nslookup, host | DNS の名前解決テスト |
| net-tools | ifconfig, netstat | 従来のネットワーク情報表示(レガシー互換) |
| traceroute | traceroute | ネットワーク経路の追跡 |
| tcpdump | tcpdump | パケットキャプチャ |
| lsof | lsof | オープンファイル・ポートの一覧表示 |
| sysstat | sar, iostat, mpstat | CPU・メモリ・ディスク I/O の統計情報 |
| man-pages | man | コマンドのマニュアルページ |
| tmux | tmux | ターミナルマルチプレクサ(セッション維持) |
curl は最小インストールに含まれている
AlmaLinux 9 の最小インストールには curl が含まれています。上記コマンドを実行すると、curl はすでにインストール済みとしてスキップされ、それ以外のパッケージが新規インストールされます。
9. ユーザー作成・sudo 設定
root ユーザーでの直接操作は、誤操作時の影響範囲が大きくなります。日常の運用作業には一般ユーザーを使用し、root 権限が必要な操作のみ sudo で実行する運用にします。
ユーザーの作成
wheel グループに所属する一般ユーザーを作成します。wheel グループに所属することで sudo が使用できるようになります。
実行コマンド:
# useradd -G wheel opsuser01
パスワードを設定します。
実行コマンド:
# passwd opsuser01
ユーザーが wheel グループに所属していることを確認します。
実行コマンド:
# id opsuser01
実行結果:
uid=1001(opsuser01) gid=1001(opsuser01) groups=1001(opsuser01),10(wheel)
groups に 10(wheel) が含まれていれば設定完了です。
sudoers の確認
AlmaLinux 9 のデフォルトでは、/etc/sudoers に wheel グループの sudo 許可が設定されています。
実行コマンド:
# grep wheel /etc/sudoers
実行結果:
%wheel ALL=(ALL) ALL
# %wheel ALL=(ALL) NOPASSWD: ALL
1 行目の %wheel ALL=(ALL) ALL が有効(コメントアウトされていない)であれば、wheel グループのユーザーはパスワード入力付きで sudo を使用できます。2 行目の NOPASSWD 行はコメントアウトされているため、パスワードなしでの sudo は無効です。
/etc/sudoers を直接編集しないでください
sudoers ファイルの編集には必ず visudo コマンドを使用してください。構文エラーがあると sudo が使用できなくなり、root 権限を失う危険があります。visudo は保存時に構文チェックを行うため、この問題を防止できます。
10. SELinux の確認
SELinux(Security-Enhanced Linux)は、プロセスのアクセス権限をカーネルレベルで制御するセキュリティ機構です。不正なプロセスがファイルやネットワークリソースにアクセスすることを防止します。
実行コマンド:
# getenforce
実行結果:
Enforcing
Enforcing はポリシー違反のアクセスをブロックしている状態です。設定ファイルでも Enforcing が永続化されていることを確認します。
実行コマンド:
# grep ^SELINUX= /etc/selinux/config
実行結果:
SELINUX=enforcing
SELinux の状態は以下の 3 種類があります。
| 状態 | 動作 |
|---|---|
| Enforcing | ポリシー違反をブロックし、ログに記録する |
| Permissive | ポリシー違反をブロックせず、ログに記録のみ行う |
| Disabled | SELinux が無効 |
SELinux を無効化しないでください
「SELinux が原因でアプリケーションが動かない」という場合でも、SELinux を Disabled にするのではなく、audit2allow や semanage でポリシーを調整してください。SELinux を無効化すると、サーバーのセキュリティレベルが大幅に低下します。
11. firewalld の確認
firewalld は AlmaLinux 9 のデフォルトのファイアウォールです。初期設定の段階では、firewalld が有効になっていることと、現在のルールを確認します。ルールの追加・変更については第6回 firewalld の設定で取り扱います。
実行コマンド:
# firewall-cmd --state
実行結果:
running
running と表示されれば、firewalld が稼働中です。現在適用されているルールを確認します。
実行コマンド:
# firewall-cmd --list-all
実行結果:
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1 eth2 eth3
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
最小インストール直後のデフォルト設定では、cockpit(管理用 Web UI)、dhcpv6-client、ssh の 3 サービスが許可されています。アプリケーションの要件に応じたポート開放は、サービス設定の段階で行ってください。
firewalld を停止・無効化しないでください
「firewalld が原因で通信できない」という場合でも、firewalld を停止するのではなく、必要なサービスやポートを個別に許可してください。firewalld を停止すると、すべてのポートが開放された状態になり、セキュリティリスクが生じます。
12. カーネルパラメータの基本設定
カーネルパラメータは OS の動作をカーネルレベルで制御する設定値です。sysctl コマンドで確認・変更します。ここではセキュリティに関連する基本的なパラメータを設定します。
現在の値を確認する
実行コマンド:
# sysctl net.ipv4.ip_forward net.ipv4.conf.all.accept_redirects net.ipv4.conf.all.accept_source_route net.ipv4.tcp_syncookies net.ipv4.conf.all.rp_filter
実行結果:
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_redirects = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 0
セキュリティ関連のパラメータを設定する
設定ファイルを作成して、再起動後も永続化されるようにします。
実行コマンド:
# vi /etc/sysctl.d/99-security.conf
記載内容:
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
各パラメータの意味は以下の通りです。
| パラメータ | 推奨値 | 意味 |
|---|---|---|
| net.ipv4.ip_forward | 0 | IP フォワーディングを無効化(ルーターとして動作させない) |
| net.ipv4.conf.all.accept_redirects | 0 | ICMP リダイレクトを受け入れない(経路の改ざん防止) |
| net.ipv4.conf.all.accept_source_route | 0 | ソースルーティングを拒否(パケットの経路指定攻撃を防止) |
| net.ipv4.tcp_syncookies | 1 | SYN Flood 攻撃への対策を有効化 |
| net.ipv4.conf.all.rp_filter | 1 | リバースパスフィルタリングを有効化(送信元偽装パケットを破棄) |
設定を即時反映します。
実行コマンド:
# sysctl -p /etc/sysctl.d/99-security.conf
実行結果:
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
設定したパラメータが出力されれば反映完了です。sysctl -p で即時反映されると同時に、/etc/sysctl.d/ 配下のファイルは再起動後も自動で読み込まれるため、永続化も完了しています。
切り戻し方法
設定を元に戻す場合は /etc/sysctl.d/99-security.conf を削除し、sysctl --system を実行してデフォルト値に復元してください。
13. 不要サービスの無効化
不要なサービスが起動していると、攻撃の対象となる通信ポートが増えます。最小インストールでは起動サービスは少ないですが、サーバーの用途に応じて不要なものがないか確認します。
実行コマンド:
# systemctl list-unit-files --state=enabled --type=service
実行結果(主要部分):
auditd.service enabled enabled
chronyd.service enabled enabled
crond.service enabled enabled
firewalld.service enabled enabled
irqbalance.service enabled enabled
kdump.service enabled enabled
NetworkManager.service enabled enabled
rsyslog.service enabled enabled
sshd.service enabled enabled
最小インストール直後の有効サービスを確認し、サーバーの用途に不要なサービスがあれば無効化します。以下は各サービスの役割です。
| サービス | 役割 | 最小構成での要否 |
|---|---|---|
| auditd | 監査ログの記録 | 必要(セキュリティ要件) |
| chronyd | NTP 時刻同期 | 必要 |
| crond | 定期実行ジョブ | 必要 |
| firewalld | ファイアウォール | 必要 |
| irqbalance | IRQ 割り込みの CPU 分散 | 推奨(マルチ CPU 環境) |
| kdump | カーネルクラッシュダンプ | 推奨(障害解析用) |
| NetworkManager | ネットワーク管理 | 必要 |
| rsyslog | システムログ | 必要 |
| sshd | SSH リモート接続 | 必要 |
最小インストール直後のサービスは基本的にすべて必要なものです。上記の一覧に含まれないサービスが有効になっている場合は、そのサービスの用途を確認した上で無効化を検討してください。
サービスを無効化するコマンドは以下の通りです(例として サービス名 の部分を置き換えてください)。
実行コマンド:
# systemctl disable サービス名 --now
--now オプションを付けることで、次回起動時の自動起動無効化と、現在動作中のサービスの即時停止を同時に行います。
切り戻し方法
無効化したサービスを再度有効にする場合は systemctl enable サービス名 --now を実行してください。
14. 操作履歴・auditd の基本設定
操作履歴にタイムスタンプを記録することで、「いつ・誰が・何を実行したか」を追跡できるようになります。障害発生時の原因調査やセキュリティインシデントの対応に必要です。
HISTTIMEFORMAT の設定
bash の操作履歴(history コマンド)にタイムスタンプを付加します。全ユーザーに適用するため、/etc/profile.d/ にスクリプトを作成します。
実行コマンド:
# vi /etc/profile.d/history.sh
記載内容:
export HISTTIMEFORMAT="%F %T "
%F は日付(YYYY-MM-DD)、%T は時刻(HH:MM:SS)を意味します。この設定は次回ログイン時に反映されます。現在のセッションに即時反映する場合は source /etc/profile.d/history.sh を実行してください。
設定後の history コマンドの出力例:
1 2026-03-24 14:30:05 hostnamectl set-hostname web-server01.example.corp
2 2026-03-24 14:30:12 cat /etc/hosts
auditd の稼働確認
auditd はカーネルレベルの監査ログを記録するサービスです。ファイルへのアクセス、権限の変更、ユーザーの認証などを記録します。
実行コマンド:
# systemctl status auditd
active (running) と表示されれば稼働中です。最小インストール直後から auditd は有効になっているため、追加の設定は不要です。監査ルールの追加が必要な場合は、/etc/audit/rules.d/ 配下にルールファイルを作成してください。
auditd は systemctl restart で再起動できない
auditd はセキュリティ上の理由から systemctl restart auditd での再起動が制限されています。監査ルールを変更した場合は service auditd restart を使用するか、OS を再起動してください。
15. ログ永続化(journald)
AlmaLinux 9 では systemd-journald がシステムログを管理しています。デフォルトでは journald のログはメモリ上(/run/log/journal/)に保存されるため、再起動するとログが消失します。障害調査のためにログを永続化します。
ログ保存ディレクトリの作成
実行コマンド:
# mkdir -p /var/log/journal
journald.conf の編集
実行コマンド:
# vi /etc/systemd/journald.conf
[Journal] セクションの Storage= を以下のように変更します。
変更前:
[Journal]
Audit=
変更後:
[Journal]
Storage=persistent
Audit=
journald を再起動して設定を反映します。
実行コマンド:
# systemctl restart systemd-journald
ログが永続化されていることを確認します。
実行コマンド:
# ls /var/log/journal/
/var/log/journal/ 配下にマシン ID のディレクトリが作成されていれば、ログの永続化が完了しています。これにより、再起動後も過去のログを journalctl コマンドで参照できます。
切り戻し方法
ログ永続化を無効に戻す場合は、journald.conf の Storage=persistent を Storage=volatile に変更し、systemctl restart systemd-journald を実行してください。/var/log/journal/ ディレクトリは手動で削除します。
16. kdump の確認・有効化
kdump はカーネルパニック発生時にメモリダンプ(vmcore)を保存するための機能です。vmcore があることで、障害の原因をカーネルレベルで解析できます。本番サーバーでは有効にしておくことを推奨します。
現在の状態を確認する
実行コマンド:
# systemctl status kdump
inactive (dead) と表示された場合は、kdump が動作していません。crashkernel パラメータがカーネルコマンドラインに含まれていないことが原因です。
crashkernel パラメータの確認
実行コマンド:
# cat /proc/cmdline
実行結果:
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-5.14.0-570.12.1.el9_6.x86_64 root=/dev/mapper/almalinux-root ro resume=/dev/mapper/almalinux-swap rd.lvm.lv=almalinux/root rd.lvm.lv=almalinux/swap
出力に crashkernel= が含まれていない場合、kdump 用のメモリが予約されていないため、kdump は動作しません。
crashkernel パラメータの追加
grubby コマンドで crashkernel パラメータを追加します。
実行コマンド:
# grubby --update-kernel=ALL --args="crashkernel=auto"
kdump サービスを有効化します。
実行コマンド:
# systemctl enable kdump
この設定は再起動後に有効になります
crashkernel パラメータはカーネル起動時に読み込まれるため、設定の反映には OS の再起動が必要です。再起動後に systemctl status kdump で active (exited) と表示されることを確認してください。
切り戻し方法
kdump を無効に戻す場合は systemctl disable kdump を実行し、grubby --update-kernel=ALL --remove-args="crashkernel=auto" で crashkernel パラメータを削除してください。反映には再起動が必要です。
17. スワップの確認
スワップは、物理メモリが不足した場合にディスクをメモリの代替として使用する領域です。スワップが存在しないと、メモリ不足時に OOM Killer(Out of Memory Killer)がプロセスを強制終了します。
実行コマンド:
# swapon --show
実行結果:
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 3.9G 0B -2
この出力から、/dev/dm-1(LVM のスワップパーティション)に 3.9G のスワップ領域が確保されていることが分かります。USED が 0B なので、現時点ではスワップは使用されていません。
スワップが表示されない場合は、スワップ領域が未作成または無効化されています。サーバーのメモリ容量と用途に応じて、スワップの追加を検討してください。
トラブルシューティング
chronyc sources で同期先が表示されない
chronyc sources の出力で同期先が表示されない場合や、Reach の値が 0 のまま変わらない場合は、NTP サーバーとの通信が到達していません。以下の原因を確認してください。
- ファイアウォール(firewalld や上位ネットワーク機器)で NTP ポート(123/udp)がブロックされている
- /etc/chrony.conf に記載した NTP サーバーのホスト名が名前解決できない(DNS 設定を先に完了してください)
- NTP サーバーのアドレスが誤っている
dnf update でタイムアウトする
dnf update 実行時に接続がタイムアウトする場合は、以下を確認してください。
- /etc/dnf/dnf.conf に
proxy=の設定が入っているか - /etc/profile.d/proxy.sh の環境変数が読み込まれているか(
echo $http_proxyで確認) - 社内にパッケージミラーサーバーがある場合は、/etc/yum.repos.d/ のリポジトリ設定をミラーサーバー向けに変更する必要がある
hostnamectl set-hostname 後にプロンプトに反映されない
hostnamectl set-hostname で設定したホスト名は即時反映されますが、シェルのプロンプト(PS1)に表示されるホスト名は、シェルの起動時に読み込まれた値を使用しています。新しいシェルを開くか、ログインし直すことでプロンプトに反映されます。
kdump が起動しない
systemctl status kdump で inactive (dead) と表示される場合は、crashkernel パラメータが未設定の可能性があります。cat /proc/cmdline で crashkernel= が含まれているか確認してください。含まれていない場合は、本記事の「16. kdump の確認・有効化」の手順で crashkernel パラメータを追加し、OS を再起動してください。
AlmaLinux 9 総合リファレンスガイド シリーズ一覧
- システム基本情報の確認
- 初期設定(この記事)
- ネットワーク設定(nmcli)
- SSH の設定と鍵管理
- ユーザー・グループ・パーミッション管理
- firewalld の設定
- SELinux の運用
- ストレージ管理(LVM・XFS・パーティション)
- パッケージ管理(dnf・リポジトリ)
- systemd とサービス管理
- ログ管理(journald・rsyslog・logrotate)
- cron・タイマーによるジョブ管理
- バックアップとリストア
- 監視の基礎(リソース・プロセス・ログ)
- セキュリティ強化(脆弱性対応・アクセス制御)
- トラブルシューティング手法
- 構成管理ツールとの連携(Ansible 基礎)
