この記事では、AlmaLinux 9系~10系を想定環境として、自宅サーバー運用で発生しやすいトラブルの診断から復旧までの手順を解説します。ログ解析(journalctl・dmesg)を起点に、ネットワーク障害・サービス起動失敗・ディスク不足・SELinux拒否の確認と対処法を体系的にまとめています。
この記事のポイント
・トラブル調査の起点は journalctl -xe と dmesg の2コマンド
・ネットワーク疎通不可はfirewalld→SELinux→ルーティングの順で確認する
・サービス起動失敗は systemctl status でエラー行を直接確認できる
・ディスク不足は df→du→journald の上限設定の順で絞り込む
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
AlmaLinux自宅サーバーで多いトラブルの全体像
AlmaLinuxは企業での利用を想定したRHELクローンのため、自宅サーバー用途では設定の初期状態が「セキュリティ優先」になっている。そのため、Ubuntu Serverやラズパイ環境に慣れたユーザーが移ってくると、最初の壁としてよく挙がるのが次の4パターンだ。・ネットワーク疎通不可:firewalldのデフォルト設定でSSH以外のポートが閉じている
・サービス起動失敗:SELinuxのコンテキストミスやユニットファイルの誤記
・ディスク容量不足:journaldやWebサーバーのログが静かに肥大化している
・起動不能・起動遅延:ネットワーク待機やfailed unitが積み重なってタイムアウト
これらに共通するのは、「ログを読む」という基本動作が解決の糸口になる点だ。まずログ解析の手順を押さえておきたい。
ログ解析の基本|journalctlとdmesgの使い方
1. journalctlでサービスエラーを調べる
systemdベースのAlmaLinuxでは、ほぼすべてのサービスログがjournaldに集約されている。起動直後に何が失敗したかはjournalctl -xe で確認するのが最速だ。# 最新のエラーを優先度付きで表示(-x: 補足説明付き、-e: 末尾から表示) journalctl -xe # 特定サービスのログのみ絞り込む journalctl -u httpd.service # 直近1時間のログを表示 journalctl --since "1 hour ago" # 起動失敗したユニット一覧を確認する systemctl --failed
Nov 02 09:15:32 myserver systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE Nov 02 09:15:32 myserver systemd[1]: Failed to start The Apache HTTP Server.
2. dmesgでカーネル・ハードウェアのログを確認する
dmesgはカーネルレベルのメッセージを表示するコマンドだ。ハードウェア障害(ディスクエラー、メモリエラー)やネットワークドライバの問題は、journalctlより先にdmesgに現れることが多い。# 最新のカーネルメッセージを表示(-T: 人間が読める時刻形式) dmesg -T | tail -50 # エラー・警告だけを絞り込む dmesg -T --level=err,warn # ディスクエラーが疑われる場合 dmesg -T | grep -i 'error\|fail\|sda\|sdb\|nvme'
[Nov 2 09:10:05] ata1.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x6 frozen [Nov 2 09:10:05] ata1.00: failed command: READ FPDMA QUEUED [Nov 2 09:10:05] sd 0:0:0:0: [sda] FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
smartctl -a /dev/sda(smartmontools パッケージが必要)で S.M.A.R.T. 情報を確認し、Reallocated Sectors や Pending Sectors が増加していないかチェックするとよい。3. /var/log配下のサービス個別ログも確認する
Apache・Nginx・MySQL など一部のサービスは journald に加えて /var/log 配下にも独自のログを書き出す。systemd-journald の設定によってはログが揮発(再起動で消える)することもあるため、/var/log のファイルも確認しておきたい。# Apacheのエラーログ tail -100 /var/log/httpd/error_log # MySQLのエラーログ tail -100 /var/log/mysqld.log # 認証失敗(不正アクセス試行)を確認 grep "Failed password" /var/log/secure | tail -20
ネットワーク疎通が取れない時の診断手順
1. IPアドレスとルーティングを確認する
まず自分自身のIPアドレスが正しく設定されているか確認する。# IPアドレスとインターフェース状態を確認 ip addr show # ルーティングテーブルを確認(デフォルトゲートウェイが設定されているか) ip route show # ゲートウェイへの疎通確認 ping -c 3 192.168.1.1 # DNSの名前解決を確認 dig www.google.com
# LISTEN状態のポートを確認する ss -tlnp # 出力例(環境により異なります) # State Recv-Q Send-Q Local Address:Port Peer Address:Port Process # LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=4)) # LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("httpd",pid=2345,fd=4))
2. firewalldのポート設定を確認する
AlmaLinuxはデフォルトでfirewalldが有効になっており、多くのポートが閉じた状態だ。外部から接続できないトラブルの大半はここが原因になる。# 現在の設定を確認する(アクティブゾーンと許可サービス・ポート) firewall-cmd --list-all # 特定ポートが許可されているか確認 firewall-cmd --query-port=8080/tcp # ポートを一時的に開放(--permanent を付けると永続化) sudo firewall-cmd --add-port=8080/tcp --permanent sudo firewall-cmd --reload # サービス名で許可する(例:httpd) sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --reload
3. SELinuxの拒否ログを確認する
firewalldを設定してもまだつながらない場合は、SELinuxが通信をブロックしている可能性がある。SELinuxのdenialログは/var/log/audit/audit.log に記録される。# SELinuxの状態を確認(Enforcing=有効、Permissive=警告のみ) getenforce # 直近のSELinux拒否ログを確認 sudo grep "denied" /var/log/audit/audit.log | tail -20 # audit2whyでわかりやすく翻訳する(setroubleshoothパッケージが必要) sudo grep "denied" /var/log/audit/audit.log | audit2why # 一時的にPermissiveモードに切り替えて原因を切り分ける sudo setenforce 0 # ※テスト後は必ず Enforcing に戻す sudo setenforce 1
type=AVC msg=audit(1730549832.123:456): avc: denied { name_connect } for pid=5678 comm="httpd" dest=3306 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket permissive=0
setsebool -P httpd_can_network_connect_db 1 でブール値を有効化する方法だ。自宅サーバーでのLinux運用スキルを体系的に学びたい方は、Linux Master Pro Seminarでハンズオン形式でトラブルシューティングの実践的な「型」を習得する方法もある。
サービスが起動しない時の対処法
1. systemctl statusでエラーを確認する
サービスが起動しない場合、まずsystemctl status でエラーメッセージを確認する。# サービスの状態と直近ログを確認 systemctl status httpd.service # 設定ファイルの構文チェック(Apacheの場合) sudo apachectl configtest # サービスの再起動 sudo systemctl restart httpd.service # 自動起動の設定(再起動後も有効にする) sudo systemctl enable httpd.service
* httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled) Active: failed (Result: exit-code) since Sun 2026-11-02 09:15:32 JST; 5min ago Process: 5001 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE) Main PID: 5001 (code=exited, status=1/FAILURE) Nov 02 09:15:32 myserver httpd[5001]: AH00526: Syntax error on line 42 of /etc/httpd/conf.d/vhost.conf Nov 02 09:15:32 myserver httpd[5001]: Invalid command 'ServerAlias2', perhaps misspelled
2. ユニットファイルの設定ミスを確認する
自作のsystemdユニットファイルを使っている場合、構文エラーで起動が止まることがある。# ユニットファイルの構文チェック systemd-analyze verify /etc/systemd/system/myapp.service # ユニットファイルを編集した後はデーモンの再読み込みが必要 sudo systemctl daemon-reload sudo systemctl restart myapp.service
3. 起動時間が遅い時のブート解析
AlmaLinuxの起動が遅い場合、systemd-analyze でどのユニットが時間を食っているかを特定できる(systemd-analyze で起動時間計測の詳細もあわせて確認してほしい)。# 起動全体のタイムライン systemd-analyze # ユニット別の起動時間(遅い順) systemd-analyze blame | head -20 # 依存関係の可視化(SVGファイル出力) systemd-analyze plot > /tmp/boot.svg
ディスク容量不足の調査と対処
1. df・duでディスク使用量を確認する
「No space left on device」エラーが出た場合、まず現在のディスク使用状況を把握する。# ファイルシステム別のディスク使用量 df -hT # 出力例(環境により異なります) # Filesystem Type Size Used Avail Use% Mounted on # /dev/mapper/almalinux-root xfs 50G 49G 1.0G 98% / # /dev/sda1 xfs 1.0G 248M 753M 25% /boot # ディレクトリ別のサイズ(大きい順に表示) du -sh /* 2>/dev/null | sort -rh | head -15 # /var配下を掘り下げる(ログが多いケース) du -sh /var/* | sort -rh | head -10
2. journaldのログ肥大化への対処
AlmaLinuxのデフォルト設定では journald のログがディスク容量の10%まで増大する可能性がある。長期運用の自宅サーバーでは静かにディスクを圧迫していることが多い。# journaldのログ使用量を確認 journalctl --disk-usage # 出力例(環境により異なります) # Archived and active journals take up 4.5G in the filesystem. # 古いログを削除する(2週間以上前のものを削除) sudo journalctl --vacuum-time=2weeks # または使用量の上限を指定して削除 sudo journalctl --vacuum-size=500M # 上限を永続設定する(/etc/systemd/journald.conf に追記) # [Journal] # SystemMaxUse=500M sudo systemctl restart systemd-journald
AlmaLinuxトラブル対処コマンド早見表
よく使うトラブル対処コマンドを一覧にまとめた。| トラブルの症状 | 最初に叩くコマンド |
|---|---|
| 起動直後のエラー全般 | journalctl -xe |
| ハードウェア・ディスクエラー | dmesg -T --level=err,warn |
| 特定サービスのエラー確認 | systemctl status サービス名.service |
| 起動失敗したユニット一覧 | systemctl --failed |
| ネットワーク疎通確認 | ip addr show && ip route show |
| firewalldのポート確認 | firewall-cmd --list-all |
| SELinux拒否ログ確認 | grep denied /var/log/audit/audit.log | tail -20 |
| ディスク使用量確認 | df -hT && du -sh /var/* | sort -rh | head -10 |
| journaldログ使用量確認 | journalctl --disk-usage |
| 起動時間の遅延原因特定 | systemd-analyze blame | head -20 |
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:AlmaLinux最新バージョンの変更点を総確認|dnf・rpmでリリースノートと設定差分を把握
- この記事の属するカテゴリ:Linuxtipsへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます