journaldのログサイズが大きすぎる時の対処法!設定ファイルの変更でディスク容量を即座に解放

journaldの設定変更でログサイズを抑えLinuxサーバーのディスク容量を解放するイメージ OS

Linuxサーバーを運用していると、いつの間にかディスク容量が逼迫していて、原因を調べると/var/log/journalが数GB、場合によっては数十GBまで膨れ上がっていた、というケースがあります。
systemdのログ管理を担うjournaldは、障害調査や運用監視に欠かせない一方、設定によってはログが長期間蓄積され、ディスク容量を圧迫する原因になります。

特に厄介なのが、不要なログを削除するだけでは根本的な解決にならないケースです。
現在のログを整理して一時的に空き容量を増やしても、journaldの保存方針が変わっていなければ、時間の経過とともに再びログが増えてしまいます。
重要なのは、ログをどれだけ保持するのかを設定ファイルで適切に制御することです。

この記事では、まずjournaldが現在どの程度ディスク容量を使用しているのかを確認し、肥大化したログを安全に削減する方法を整理します。
そのうえで、journald.confの設定を変更してログの保存量を制限し、再びディスク容量を圧迫しにくい状態へ調整する手順まで解説します。

単純にログを消すだけではなく、「なぜログが増え続けるのか」「設定変更によって何が変わるのか」まで理解できれば、同じ問題が発生したときにも落ち着いて対処できます。
ディスク使用率が急上昇して困っている場合は、まずjournaldのログサイズから確認してみましょう。

  1. journaldのログサイズが大きくなる原因とは?まず確認したい基本事項
  2. journalctlでjournaldのディスク使用量を確認する方法
    1. journalctl –disk-usageで現在のログ容量を確認する
    2. dfコマンドでディスク全体の空き容量も確認する
    3. ログがどのくらいの速度で増えているかを確認する
    4. ディスク使用量を確認したら次に設定を調べる
  3. journaldのログが増え続ける仕組みと保存期間の考え方
    1. journaldはログをジャーナルファイルとして保存する
    2. ログが増える速度はサービスによって大きく異なる
    3. journaldの保存量はディスク容量とのバランスで考える
    4. 保存期間と保存容量は別の観点で考える
    5. ログを削除するだけでは再発防止にならない
    6. journaldの設定を見直してログ肥大化を防ぐ
  4. journaldの設定ファイルjournald.confを確認する
    1. journald.confの役割を理解する
    2. journald.confの場所を確認する
    3. ログ容量に関係する設定項目を確認する
    4. 設定ファイルを変更するときの注意点
    5. 現在適用されている設定を確認する
    6. 設定変更前にログ保存の方針を決める
  5. SystemMaxUseを変更してjournaldのログサイズを制限する
    1. SystemMaxUseでjournaldの最大使用量を指定する
    2. SystemMaxUseの設定場所を確認する
    3. SystemMaxUseの値はディスク容量に合わせて決める
    4. SystemKeepFreeとの違いも理解しておく
    5. 設定変更後はjournaldに反映させる
    6. 設定変更後にログ容量を確認する
  6. journaldの古いログを削除してディスク容量をすぐに解放する
    1. まず現在のjournald使用量を確認する
    2. journalctlのvacuum-sizeで古いログを容量基準で削除する
    3. vacuum-timeで保存期間を基準に古いログを削除する
    4. vacuum-filesでジャーナルファイル数を整理する
    5. 容量を急いで確保したいときの考え方
    6. 削除後にディスク容量が減ったことを確認する
    7. ジャーナルファイルを直接削除するのは避ける
    8. 設定変更とログ削除を組み合わせる
  7. 設定変更後にjournaldを再読み込みして容量制限を反映する
    1. journaldの設定変更を反映する方法
    2. 設定ファイルの記述ミスがないか確認する
    3. journaldが正常に動作しているか確認する
    4. 設定変更後のログ使用量を確認する
    5. 容量制限を反映させても現在のログが残る場合
    6. 設定変更後はdfでもディスク全体を確認する
    7. 設定変更後にログが再び増えていないか確認する
  8. journaldのログ容量を定期的に確認しディスク逼迫を防ぐ方法
    1. journalctl –disk-usageで定期的に使用量を確認する
    2. df -hでディスク全体の使用率も確認する
    3. ログ容量の増加速度を把握する
    4. ログ監視を自動化する方法
    5. journaldの設定値を定期的に見直す
    6. ログの異常増加を早めに発見する
    7. ディスク逼迫に備えて余裕を確保する
    8. 定期確認を運用ルールに組み込む
  9. journaldのログサイズを適切に管理してLinuxのディスク容量を守る【まとめ】

journaldのログサイズが大きくなる原因とは?まず確認したい基本事項

Linuxサーバーで肥大化したjournaldログを確認するイメージ

Linuxサーバーのディスク容量が急に少なくなったとき、見落としやすい原因の一つがjournaldのログです。
journaldはsystemd環境で動作するログ管理サービスで、OSやサービスから出力されたログを収集し、journalctlコマンドから検索・確認できるように保存しています。
SSH接続の記録、サービスの起動・停止、エラー、カーネル関連のメッセージなど、日常的な運用に必要な情報がまとまっているため、便利な反面、何も考えずに運用しているとログが徐々に蓄積していきます。

特に長期間稼働しているVPSや自宅サーバーでは注意が必要です。
ログそのものは1件あたりでは小さくても、24時間365日動作するサーバーでは大量のメッセージが継続的に生成されます。
さらに、Webサーバーやデータベース、コンテナなど、ログを頻繁に出力するサービスが稼働している場合は、journaldが扱うデータ量も増加します。
障害や設定ミスによって同じエラーメッセージが短時間に大量発生しているケースでは、想定以上の速度でログが肥大化することもあります。

ここで重要なのは、journaldがログを無制限に保存しているとは限らないことです。
systemdにはジャーナルのディスク使用量を制御する仕組みがあり、設定された上限や保存方式に応じて古いログが削除されます。
しかし、設定値がサーバーのディスク容量に対して大きすぎたり、保存期間を長く設定していたりすると、管理者から見れば「ログが増えすぎている」状態になります。
逆に、ログが極端に短期間で増えている場合は、単純に保存容量の設定を変更するだけでは不十分です。

まず切り分けたいのは、本当にjournaldがディスク容量を消費しているのかという点です。
ディスク使用率が高いからといって、いきなりログを削除するのはおすすめできません。
ログ以外にも、古いバックアップ、パッケージキャッシュ、コンテナイメージ、アプリケーションが独自に出力したログなど、ストレージを圧迫する要因は複数あります。
原因を特定せずにファイルを削除すると、必要なデータまで失う可能性があります。

journaldがどの程度の容量を使用しているかを確認するには、journalctlのディスク使用量表示が役立ちます。
たとえば、次のコマンドを実行します。

journalctl --disk-usage

このコマンドを実行すると、現在保存されているジャーナルファイルが使用しているディスク容量を確認できます。
数百MB程度であれば環境によっては問題にならないこともありますが、数GB以上になっている場合は、サーバー全体のディスク容量とのバランスを確認したいところです。
10GB、20GBといったサイズまで膨らんでいるなら、ログの保存設定を見直す価値が高いでしょう。

また、ログサイズだけを見るのではなく、ディスク全体の空き容量も確認することが重要です。
たとえばjournaldが5GB使用していても、1TBのストレージを搭載したサーバーなら直ちに問題になるとは限りません。
一方、20GBしかない小容量のVPSで5GBをログが占有していれば、かなり大きな負担です。
つまり、問題になるログサイズは絶対値だけではなく、サーバーの総ディスク容量に対する割合で判断する必要があります。

さらに確認しておきたいのが、ログがどのようなペースで増えているかです。
一度だけログを整理して空き容量を確保しても、原因となるサービスが大量のログを出し続けていれば、数時間後や数日後に同じ問題が再発します。
特定のサービスが異常終了を繰り返していないか、ネットワークエラーが大量に発生していないかなども確認すると、ログ肥大化の背景が見えてきます。

journaldのログサイズを適切に管理するうえでは、「現在どれだけ使っているか」「なぜ増えているか」「どこまで保存する必要があるか」の3点を分けて考えるのがポイントです。
容量だけを削減するのではなく、必要なログを残しながら不要な蓄積を防ぐ設計にすることが、安定したLinuxサーバー運用につながります。
次の段階では、journalctlを使って実際のディスク使用量を詳しく確認し、ログ肥大化の状況を具体的に把握していきます。

journalctlでjournaldのディスク使用量を確認する方法

journalctlでjournaldのログ使用量を確認するターミナル画面

journaldのログがディスクを圧迫しているかどうかを判断するには、まず実際の使用量を確認します。
ここで便利なのが、systemd環境で標準的に利用できるjournalctlです。
ログの内容を一件ずつ検索するだけでなく、ジャーナルファイルが現在どれだけのストレージを使用しているのかも確認できます。
感覚だけで「ログが多そう」と判断するのではなく、まず数値を取得するのが基本です。

journalctl –disk-usageで現在のログ容量を確認する

journaldが保存しているログのディスク使用量を確認するには、--disk-usageオプションを使います。

journalctl --disk-usage

実行すると、ジャーナルファイルが使用しているディスク容量が表示されます。
環境によって表示される値は異なりますが、たとえばArchived and active journals take up 4.2G in the file system.のように、アクティブなジャーナルとアーカイブ済みのジャーナルを合わせた使用量を確認できます。
ここで表示された値が、journaldによって現在消費されている容量の目安になります。

この確認で数GB程度の容量が見つかったとしても、数字だけで異常と決めつける必要はありません。
サーバーのストレージ容量が500GBや1TBあるなら、数GBのログは運用上許容できる場合があります。
一方、20GBや30GB程度の小容量ディスクで数GBをjournaldが占有しているなら、状況は大きく異なります。
重要なのは、ログの絶対量ではなく、システム全体のディスク容量とのバランスを見ることです。

dfコマンドでディスク全体の空き容量も確認する

journaldの使用量を確認したら、次にファイルシステム全体の空き容量を確認します。
journalctl --disk-usageだけでは、サーバー全体のディスクがどの程度逼迫しているのかまでは判断できません。
そこで、Linuxでおなじみのdfコマンドを組み合わせます。

df -h

-hは容量を読みやすい単位で表示するオプションです。
ルートファイルシステムで使用率が90%、95%、あるいはそれ以上になっているのであれば、journaldの使用量が数GBでも無視できない可能性があります。
特にディスク使用率が100%に近づくと、ログを書き込めないだけでなく、アプリケーションの動作やパッケージ更新など、別の処理にも影響することがあります。

ここで、たとえばdf -hではルートファイルシステムが90%使用中なのに、journalctl --disk-usageでは500MBしか使っていないという結果になった場合、journaldだけを疑うのは適切ではありません。
Webサーバーのログ、データベースのデータファイル、バックアップ、Dockerなどのコンテナ関連ファイルといった別の大容量データを調べる必要があります。

逆に、ディスク使用率が高く、journaldだけで数GBから数十GBを占有しているなら、ログ管理が原因の一つである可能性が高くなります。
このように、個別の使用量とファイルシステム全体の使用量を組み合わせることで、問題の切り分けができます。

ログがどのくらいの速度で増えているかを確認する

もう一つ確認しておきたいのが、ログの増加速度です。
現在の使用量が大きいだけなのか、それとも短時間で急激に増えているのかでは、対処方法が変わります。
たとえば、数日前にログを削除したばかりなのに、すでに数GBまで増えているなら、何らかのサービスが大量のログを出力している可能性があります。

特定のサービスでエラーが連続している場合、journaldそのものが問題なのではなく、ログを生成している側に原因が存在します。
サービスの再起動失敗、設定ミス、ネットワーク接続エラー、認証失敗などが繰り返されていないか確認しておきましょう。
ログの保存上限だけを小さくしても、根本原因が残っていれば、今度は限られた容量の中でログが激しく入れ替わるだけです。

また、ログの保持量を確認するときには、アクティブなログと過去のアーカイブが存在することも意識しておくと理解しやすくなります。
journaldはログをジャーナルファイルとして管理しており、現在書き込まれているデータだけでなく、過去のログもディスク上に保存されています。
そのため、「直近のログだけなら少ないはず」と考えていても、長期間保存されたログによって全体の使用量が大きくなっていることがあります。

ディスク使用量を確認したら次に設定を調べる

journalctl --disk-usageで容量を把握し、df -hでディスク全体の状況を確認すれば、まず現状を数値として捉えられます。
ここまで確認してjournaldの使用量が明らかに大きいのであれば、次は「なぜその量まで保存されているのか」を調べる段階です。

特に重要なのが、journaldの保存容量や保持方法を決める設定です。
systemdではjournald.confなどを通じて、ジャーナルの保存に関する動作を調整できます。
設定を確認せずにログファイルを手動で削除するよりも、保存するログの上限を適切に設定し、今後の肥大化を防ぐことが長期的な解決につながります。

なお、ディスク容量が限界まで逼迫している場合は、設定を見直すだけでは現在占有されている容量はすぐには減りません。
現在のログを削減する操作と、今後の保存量を制御する設定変更は別の作業として考える必要があります。
まず現状を確認し、その後に不要なログを整理し、最後に再発防止の設定を行う。
この順番で進めると、安全かつ論理的に対処できます。

journaldのログが増え続ける仕組みと保存期間の考え方

journaldのログが蓄積される仕組みを示したイメージ

journaldのログサイズを適切に管理するには、単に「古いログを消す」という発想だけでなく、そもそもなぜログが増え続けるのかを理解しておくことが重要です。
journaldはsystemdのログ管理機能として、カーネルやサービスなどが出力するメッセージを収集し、ジャーナルとして保存します。
サーバーが正常に稼働している間もログは発生するため、何も対策をしなければ保存対象のデータは時間とともに増えていきます。

journaldはログをジャーナルファイルとして保存する

journaldが扱うログは、一般的なテキストログとは少し性質が異なります。
journaldはログを独自のジャーナルファイルとして管理し、journalctlから検索や絞り込みを行えるようにしています。
そのため、/var/log配下を見ただけではログ全体の状況を直感的に把握しにくいことがあります。

保存される情報には、単純なメッセージ本文だけではなく、ログを出力したサービスやプロセス、時刻、優先度など、検索や分析に利用できるメタデータも含まれます。
運用面では非常に便利ですが、その分だけディスク上にデータが蓄積されることになります。

また、journaldが保存するログは、現在書き込み中のジャーナルだけではありません。
過去のログもジャーナルファイルとして残るため、サーバーを長期間稼働させるほど保存データが積み重なっていきます。
ここが、短期間しか稼働していない環境と長期間稼働している本番サーバーで、ログ使用量に大きな差が生まれる理由の一つです。

ログが増える速度はサービスによって大きく異なる

「1日分のログなら大した容量ではない」と考えるのは少し危険です。
journaldが受け取るログ量は、サーバー上で動いているサービスや、そのサービスの状態によって大きく変化します。
アクセスの多いWebサーバー、データベース、認証処理、コンテナなどが動作していれば、短時間でも大量のログが生成されることがあります。

特に注意したいのが、エラーや警告が繰り返し発生しているケースです。
たとえば、あるサービスが起動に失敗して自動再起動を繰り返していると、そのたびにエラーメッセージが記録されます。
ネットワーク接続の失敗や認証エラーなどでも同様です。
通常時にはほとんどログが増えないサーバーでも、障害が発生した瞬間からログの生成量が急増する可能性があります。

したがって、journaldの容量問題を考えるときは、「保存期間」だけでなく「ログの発生量」も見る必要があります。
保存期間を短く設定しても、1時間あたりのログ生成量が極端に多ければ、短時間でディスク容量を消費するからです。

journaldの保存量はディスク容量とのバランスで考える

ログは多ければ多いほど良い、というものではありません。
障害調査のためには過去のログが必要ですが、何カ月分、何年分まで必要なのかは運用環境によって異なります。
たとえば、個人開発用のLinux環境と、業務システムの本番サーバーでは、求められるログ保持期間が同じとは限りません。

考えるべきなのは、次の3つのバランスです。

  • 障害調査に必要なログをどの程度の期間残すか
  • journaldにどれだけのディスク容量を割り当てるか
  • サーバー全体のストレージ容量をどれだけ余裕を持って維持するか

たとえば小容量のVPSであれば、ログだけでディスクの大部分を消費する状態は避けたいところです。
一方で、容量を厳しく制限しすぎると、障害発生時に必要な過去ログまで失われる可能性があります。
つまり、単純に「ログは少ないほど良い」と考えるのではなく、必要な調査能力を維持しながらストレージ使用量を制御することがポイントです。

保存期間と保存容量は別の観点で考える

journaldのログ管理で混同しやすいのが、「何日保存するか」と「何GBまで保存するか」です。
この2つは似ていますが、実際には異なる考え方です。
ログの発生量が少ないサーバーなら、長期間保存しても容量がそれほど増えない場合があります。
逆にログが大量に発生するサーバーでは、短期間でも大きな容量を必要とします。

そのため、「30日分を残したい」という要件だけで保存方針を決めるのでは不十分です。
30日分のログが何GBになるのかを把握し、その容量がサーバーのストレージに対して妥当なのかを判断する必要があります。
反対に、容量上限だけを設定した場合も、ログが大量に生成されれば古いログから整理されるため、必ずしも一定の日数分が残るとは限りません。

この違いを理解しておくと、journaldの設定を変更するときにも判断しやすくなります。
ログを保存する目的は「容量を使い切ること」ではなく、「必要な期間・必要な量の情報を利用可能な状態にしておくこと」です。

ログを削除するだけでは再発防止にならない

ディスク容量が逼迫したとき、現在保存されている古いログを削除すれば、一時的には空き容量を増やせます。
しかし、それだけでは問題が解決したとはいえません。
journaldが同じ条件で動作し続ければ、時間の経過とともに再びログが蓄積されます。

ここで重要になるのが、journaldの保存容量を制御する設定です。
現在のログを整理する作業と、今後どの程度までログを保存するかを決める作業を分けて考えます。
前者は緊急時のディスク容量確保、後者は継続的な運用設計です。

特にディスク容量が限られたVPSやサーバーでは、後者の設定が重要になります。
ログの削除だけを繰り返す運用は、いわばバケツから水をくみ出しているだけです。
水が増え続ける原因を抑えるには、保存量そのものを適切に制御する必要があります。

journaldの設定を見直してログ肥大化を防ぐ

journaldには、ジャーナルのディスク使用量などを制御するための設定項目があります。
代表的なものがSystemMaxUseで、システムジャーナルが使用できるディスク容量の上限を指定するために利用します。
こうした設定を環境に合わせて調整すれば、ログが増え続けてディスクを圧迫するリスクを抑えられます。

ただし、設定値を小さくすればするほど良いわけではありません。
上限を極端に低くすると、障害が起きたときに必要なログが早い段階で整理されてしまう可能性があります。
逆に上限を大きくしすぎると、ログが重要なストレージ領域を占有することになります。

したがって、まず現在のログ使用量とディスク空き容量を確認し、そのうえで「このサーバーではどの程度のログを残せば十分か」を考えるのが合理的です。
設定ファイルを変更する前に保存方針を決めておくことが、結果的に安全な設定変更につながります。

journaldのログ肥大化は、単なる不要ファイルの増加ではありません。
ログ生成量、保存期間、容量上限、そしてサーバー全体のストレージ容量が相互に関係しています。
この構造を理解しておけば、目の前の数GBを削除するだけではなく、将来的なディスク逼迫まで見据えた対策が可能になります。
次は、実際にjournaldの動作を決めているjournald.confを確認し、どの設定を変更すればよいのかを具体的に見ていきます。

journaldの設定ファイルjournald.confを確認する

Linuxのjournald.conf設定ファイルを編集するイメージ

journaldのログサイズを継続的に抑えるには、現在保存されているログを削除するだけではなく、journaldがどのような条件でログを保持するよう設定されているのかを確認する必要があります。
その中心となるのがjournald.confです。
systemdを採用しているLinuxでは、journaldの動作をこの設定ファイルで調整できます。

journald.confの役割を理解する

journald.confは、systemd-journaldがどのようにログを収集・保存するかを制御するための設定ファイルです。
ログの保存先やディスク使用量、保存期間などに関係する項目が用意されており、サーバーの用途に合わせて設定できます。

設定ファイルを編集する前に理解しておきたいのが、設定値には「ログをどれだけ保存するか」に関するものと、「どこへ保存するか」に関するものがあるという点です。
今回のようにディスク容量の逼迫を解決したい場合は、特にディスク上へ保存されるジャーナルの使用量を制御する設定が重要になります。

なお、journald.confには最初からすべての設定値が明示されているとは限りません。
コメントアウトされた項目や、デフォルト値が採用されている項目もあります。
そのため、ファイルを開いたときに「設定が書かれていないから制限されていない」と判断するのは早計です。
未設定の場合にはsystemd側のデフォルト動作が適用されます。

journald.confの場所を確認する

一般的なLinux環境では、systemd-journaldのメイン設定ファイルは/etc/systemd/journald.confにあります。
実際のファイルを確認するなら、まず次のように表示できます。

sudo less /etc/systemd/journald.conf

編集が必要な場合は、利用しているエディタに応じてnanoやvimなどを使用します。
ただし、いきなり編集を始めるのではなく、現在の内容を確認してから変更するのがおすすめです。
サーバーでは設定変更がそのままログの保存動作に影響するため、変更前の状態を把握しておくと、問題が発生したときにも原因を追跡しやすくなります。

また、環境によっては/etc/systemd/journald.conf.d/以下に追加の設定ファイルが配置されていることがあります。
systemdではメインの設定ファイルだけでなく、設定ディレクトリを利用して追加設定を適用できるため、「journald.confを見たのに想定している設定が見つからない」という場合は、こうした追加設定も確認する必要があります。

ログ容量に関係する設定項目を確認する

journaldのディスク使用量を制御するうえで、特に確認したい設定項目がSystemMaxUseです。
この項目は、永続的に保存されるシステムジャーナルが使用できるディスク容量の上限を指定するために利用できます。

たとえば、設定ファイルに次のような記述があるとします。

[Journal]
SystemMaxUse=1G

この場合、システムジャーナルが使用できる容量を1GBに制限する設定になります。
ただし、実際の挙動はjournalの保存方式や他の設定、systemdのバージョンなども関係するため、単純に「必ず1GBぴったりになる」と考えるべきではありません。
あくまでjournaldが使用するディスク容量を制御するための上限として理解するのが適切です。

また、SystemKeepFreeという設定項目もあります。
こちらはjournald自身が使用できる容量を直接指定するのではなく、ファイルシステム上に一定量の空き容量を残すための考え方です。
SystemMaxUseと組み合わせることで、ログが増えすぎてシステム全体の空き容量を圧迫する状況を避けやすくなります。

さらに、ユーザー単位のジャーナルや一時ファイルシステム上のジャーナルなど、用途によって関連する設定項目が異なります。
そのため、単純に一つの値だけを変更すれば、あらゆるjournaldの容量問題が解決するとは限りません。
まずは自分のサーバーでジャーナルがどこに保存され、どの設定が適用されているのかを確認することが重要です。

設定ファイルを変更するときの注意点

設定を変更する際には、既存の設定を不用意に上書きしないことが大切です。
特に本番サーバーでは、設定ファイルを丸ごと書き換えるのではなく、必要な項目だけを変更するほうが安全です。

また、コメントアウトされた設定を見つけた場合は、その行を直接変更する方法もありますが、変更前後の差分が分かる状態にしておくと管理しやすくなります。
Gitなどで/etc配下の設定を管理している環境なら、変更履歴を残しておくのも有効です。

設定値を決めるときは、サーバーのディスク容量だけでなく、ログを何のために保存しているのかも考えます。
障害調査や監査で一定期間のログが必要なら、容量を極端に小さくするのは適切ではありません。
逆に、開発用サーバーなどで長期間のログを保持する必要がないのであれば、より小さな上限を設定するという選択肢があります。

ここで重要なのは、設定変更と現在保存されているログの削除は別の操作だということです。
SystemMaxUseなどの値を変更しただけで、既に保存されている大量のログが即座に消えるとは限りません。
現在のディスク使用量を減らしたい場合は、別途ログの削減処理が必要になります。

現在適用されている設定を確認する

設定ファイルを確認するときは、ファイルの記述だけでなく、実際にjournaldへどのような設定が適用されているのかを見ることも重要です。
systemdには、現在の設定値を確認するための仕組みが用意されています。

たとえば、systemd-analyze cat-configを利用できる環境では、journaldの設定ファイルと設定ディレクトリにある追加設定をまとめて確認できます。
これにより、メインのjournald.confだけを見て判断するよりも、実際の設定構成を把握しやすくなります。

設定ファイルは「何を書いたか」だけでなく、「最終的にどの設定が有効になっているか」を意識することが重要です。
複数の設定ファイルが存在する環境では、配置場所やファイル名、設定の優先順位によって結果が変わる可能性があります。
サーバー運用では、この差がトラブルの原因になることも珍しくありません。

設定変更前にログ保存の方針を決める

ここまで確認したら、いよいよ容量上限を変更する準備が整います。
ただし、先に具体的な数値を決めるのではなく、「このサーバーではどの程度のログを残すべきか」を考えておくと設定ミスを防げます。

たとえば、障害発生時に数日分のログがあれば十分なのか、数週間分を残す必要があるのかによって適切な容量は変わります。
さらに、ログを外部の監視システムやログ管理基盤へ転送しているなら、ローカルのjournaldには必要最低限だけ保存するという設計も可能です。

反対に、journaldだけを頼りに障害調査を行っているサーバーなら、保存容量を削りすぎないほうがよいでしょう。
ログは問題が起きていないときには価値が分かりにくいものですが、障害が発生した瞬間に非常に重要な情報源になります。
容量削減と調査可能性のバランスが重要です。

journaldのログサイズを抑えるための設定変更は、それほど複雑ではありません。
しかし、設定値の意味を理解せずに変更すると、必要なログまで失う可能性があります。
まずjournald.confの位置と設定構造を確認し、現在のディスク使用量やサーバーの用途を踏まえて上限を決める。
この準備ができたら、次はSystemMaxUseを使ってjournaldのログサイズを具体的に制限していきます。

SystemMaxUseを変更してjournaldのログサイズを制限する

SystemMaxUseでjournaldのログ容量を制限する設定例

journaldのログがディスク容量を圧迫していることを確認できたら、次に行うのが保存容量の上限設定です。
そこで重要になるのが、SystemMaxUseです。
この設定を適切に指定しておけば、journaldが永続的なジャーナルを保存するために使用できるディスク容量を制御できます。

ただし、ここで一つ注意したい点があります。
SystemMaxUseは「現在保存されているログを指定した容量まで即座に削除するコマンド」ではありません。
あくまでjournaldの保存領域に対する使用量の上限を設定するものです。
すでにディスクを大量に消費している場合は、設定変更とは別にログの削減操作も必要になります。

SystemMaxUseでjournaldの最大使用量を指定する

SystemMaxUseは、[Journal]セクションに記述します。
たとえば、journaldの保存容量を1GB程度に制限したい場合は、次のように設定します。

[Journal]
SystemMaxUse=1G

この設定によって、システムジャーナルが使用できるディスク容量に上限を設けられます。
1Gのように容量を単位付きで指定できるため、設定値の意図も比較的分かりやすいでしょう。
サーバーのストレージ容量が小さい場合には、ログがディスク全体を圧迫するリスクを抑えるうえで有効な設定です。

ただし、1GBという値がすべての環境に適しているわけではありません。
必要なログをどの程度保持したいのか、1日あたりどれくらいのログが生成されるのか、そしてサーバーの総ディスク容量がどの程度なのかを考えて決める必要があります。

たとえば、ログの発生量が1日あたり100MB程度のサーバーでSystemMaxUse=1Gとすれば、単純計算では数日から十日程度のログを保持できる可能性があります。
一方、障害時にログ出力が急増するサービスでは、同じ1GBでも想定より早く古いログが整理されるかもしれません。
保存容量は固定的な日数ではなく、ログの発生量との関係で考えることが重要です。

SystemMaxUseの設定場所を確認する

設定を変更する場合は、/etc/systemd/journald.confを編集するのが基本です。
ファイル内に[Journal]セクションがあることを確認し、その配下にSystemMaxUseを記述します。

すでにSystemMaxUseの記述が存在する場合は、既存の値を変更します。
コメントアウトされている場合は、コメントを外して設定値を指定します。
設定ファイル全体を大きく書き換える必要はなく、今回の目的であれば必要な項目だけを変更するのが安全です。

また、環境によっては/etc/systemd/journald.conf.d/に追加設定が置かれていることがあります。
そのため、journald.confだけを確認して設定が存在しないからといって、必ずしもデフォルト設定だけで動作しているとは限りません。
複数の設定ファイルを使って管理しているサーバーでは、最終的にどの値が適用されるのかを確認してから変更すると安心です。

SystemMaxUseの値はディスク容量に合わせて決める

ログ容量の上限を決めるとき、ありがちな失敗が「とりあえず小さくすればよい」と考えてしまうことです。
確かにSystemMaxUseを小さくすればログがストレージを占有する可能性は下がります。
しかし、上限が小さすぎると、障害調査に必要な過去ログが早く整理されるという別の問題が発生します。

特に本番環境では、ログが重要な診断情報になることを忘れてはいけません。
サービスが突然停止したとき、「停止直前のログ」だけでなく、その数時間前や数日前から何が起きていたのかを確認したいケースがあります。
保存容量を削りすぎると、その原因を追跡するための情報まで失われる可能性があります。

逆に、ログを長期間保持する必要がない開発環境や検証環境であれば、比較的小さな上限でも問題にならないでしょう。
重要なのは、サーバーの用途とストレージ容量を基準に値を決めることです。

設定値を考えるときは、次のような順番で検討すると分かりやすくなります。

  1. サーバー全体のディスク容量を確認する
  2. journaldが現在使用している容量を確認する
  3. 通常時のログ増加量を把握する
  4. 障害調査のために必要なログ保持量を考える
  5. それらを踏まえてSystemMaxUseを決める

この手順なら、根拠のない数値を設定するのではなく、実際の運用条件に合わせて容量を設計できます。

SystemKeepFreeとの違いも理解しておく

SystemMaxUseと一緒に覚えておきたい設定がSystemKeepFreeです。
名前のとおり、こちらはファイルシステム上にどの程度の空き容量を残すかという観点からjournaldの使用量を制御します。

たとえば、ログだけでディスクを使い切ってしまう状況を避けたい場合、単純な最大使用量だけでなく、システム全体に一定の空き容量を確保する考え方も有効です。
サーバーではログ以外にも一時ファイルやアプリケーションデータなどが保存されるため、journaldにストレージを使わせすぎないことには意味があります。

両者を考えるときのポイントは、SystemMaxUseが「journaldにどこまで使わせるか」、SystemKeepFreeが「ファイルシステムにどれだけ空きを残すか」という違いです。
設定値が複数存在する場合、実際のjournaldの動作はこれらの制約などを考慮して決まります。
そのため、一つの設定だけを見て最終的なディスク使用量を断定しないことが大切です。

設定変更後はjournaldに反映させる

journald.confを編集しただけでは、すでに動作しているsystemd-journaldのプロセスに新しい設定が反映されない場合があります。
設定を変更したら、journaldに設定を再読み込みさせる必要があります。

設定の反映には、systemdの管理コマンドを利用します。
一般的には、次のように実行します。

sudo systemctl restart systemd-journald

ただし、本番サーバーでjournaldを再起動する場合は、実行前に影響を確認しておきましょう。
ログ管理サービスの再起動はアプリケーションそのものの再起動とは異なりますが、運用中のログ収集に関係する処理です。
より慎重に進めるなら、変更後にjournaldの状態やログ出力が正常であることまで確認します。

環境やsystemdのバージョンによって適切な反映方法が異なる場合もあるため、使用しているLinuxディストリビューションの仕様に合わせて確認するのが安全です。

設定変更後にログ容量を確認する

設定を反映したら、再びjournalctl --disk-usageを実行して状態を確認します。
ここで重要なのは、設定値を変更したという事実ではなく、実際のディスク使用量が期待した状態になっているかを確認することです。

もし現在のログがすでに上限を大幅に超えている場合、設定変更だけでは期待するタイミングで容量が解放されないことがあります。
その場合は、次の段階として古いジャーナルを明示的に削減します。

つまり、journaldの容量対策は「上限を設定する作業」と「現在のログを整理する作業」の2段階に分けて考えると分かりやすくなります。
前者が再発防止、後者が現在のディスク逼迫への対応です。

また、設定変更後にしばらく運用してから再度使用量を確認することも重要です。
通常時のログ増加速度を見れば、設定した容量が実際の運用に適しているか判断できます。
もし必要なログがすぐに消えてしまうなら上限が小さすぎる可能性がありますし、反対にディスク使用量が想定以上に大きいなら、設定やログ発生量を改めて確認する必要があります。

SystemMaxUseは、journaldのログ肥大化を防ぐための非常に重要な設定です。
ただし、単純に小さな値を指定すればよいわけではありません。
サーバーのストレージ容量、ログの発生量、障害調査で必要な保持期間を考慮し、適切な上限を設定することが重要です。

そして、設定を変更しただけで現在のログがすべて削減されるわけではない点にも注意してください。
すでにディスク容量が逼迫しているのであれば、次は古いジャーナルを安全に削減して、実際に空き容量を確保する作業へ進みます。

journaldの古いログを削除してディスク容量をすぐに解放する

journaldの古いログを削除してディスク容量を解放する操作

journaldのログが数GB、あるいはそれ以上まで膨らんでディスク容量を圧迫している場合、設定ファイルを変更するだけでは現在使用されている容量はすぐには減りません。
ここでは、すでに保存されている古いジャーナルを整理して、実際にディスクの空き容量を確保する方法を見ていきます。
ポイントは、ジャーナルファイルを直接削除するのではなく、journalctlが提供している削除機能を使って管理することです。

まず現在のjournald使用量を確認する

削除を実行する前に、現在どの程度の容量が使われているのかを確認しておきましょう。
使用量の確認には、これまで説明したjournalctl --disk-usageを利用します。

journalctl --disk-usage

ここで表示される容量を削除前の基準として記録しておくと、削除後にどれだけ空き容量が増えたのか比較できます。
ディスク容量が逼迫しているときほど、作業前後の状態を数値で確認することが重要です。
感覚だけで「かなり減った」と判断するより、明確な数値を残しておいたほうが作業結果を検証できます。

また、df -hなどでファイルシステム全体の使用率も確認しておくと、journaldの削除が問題解決にどの程度効果があったのかを判断しやすくなります。
journaldが10GB使用しているからといって、10GBすべてを削除する必要があるとは限りません。
必要なログを残しながら、ストレージに十分な余裕を作ることが目的です。

journalctlのvacuum-sizeで古いログを容量基準で削除する

ログを容量ベースで整理したい場合に便利なのが、journalctlの--vacuum-sizeオプションです。
たとえば、アーカイブ済みのジャーナルを合計500MB程度まで削減したい場合は、次のように実行します。

sudo journalctl --vacuum-size=500M

この操作では、指定した容量を超えている分について、古いアーカイブ済みジャーナルから削除していきます。
新しいログから順番に消すのではなく、基本的には古いログを対象に整理するため、直近のログをできるだけ残しながら容量を削減したい場合に適しています。

ただし、ここで注意したいのが、--vacuum-sizeを指定したからといって、ジャーナル全体が必ず指定値ぴったりになるわけではないという点です。
アクティブなジャーナルは削除対象にならず、ファイルサイズの単位やジャーナルの状態によっても結果は変わります。
実行後は再度ディスク使用量を確認して、実際にどこまで削減されたかを確認しましょう。

vacuum-timeで保存期間を基準に古いログを削除する

容量ではなく、「一定期間より古いログは不要」という考え方で整理したい場合は、--vacuum-timeが便利です。
たとえば、2週間より古いアーカイブ済みジャーナルを削除するなら、次のように指定できます。

sudo journalctl --vacuum-time=2weeks

この方法なら、ログのサイズではなく保存期間を基準に整理できます。
障害調査や運用上、「直近2週間程度のログがあれば十分」という要件が明確なサーバーでは分かりやすい方法です。

一方で、ログの発生量が多いサーバーでは、2週間分だけでもかなりの容量になる可能性があります。
そのため、保存期間だけで判断するのではなく、実際のディスク使用量も合わせて考える必要があります。
ログの発生量が日によって大きく変化する環境では、期間基準と容量基準のどちらが適切なのかを検討することが重要です。

vacuum-filesでジャーナルファイル数を整理する

容量や期間だけでなく、保存されているアーカイブ済みジャーナルファイルの数を基準に整理したい場合は、--vacuum-filesも利用できます。
たとえば、古いジャーナルを整理して、アーカイブ済みファイルを一定数以下に抑える方法です。

sudo journalctl --vacuum-files=5

ただし、一般的なディスク容量の逼迫を解決する目的なら、まずは--vacuum-sizeや--vacuum-timeを検討するほうが分かりやすいでしょう。
ファイル数とファイルサイズは必ずしも比例しないため、「5ファイルなら少容量」とは限りません。
大量のデータが少数のファイルにまとまっている場合もあるからです。

容量を急いで確保したいときの考え方

ディスク使用率が非常に高く、空き容量がほとんど残っていない場合は、まず安全に削除できる範囲で古いログを減らすことを優先します。
たとえば、現在の使用量が10GBを超えていて、ログを1GB程度まで抑えたいという状況なら、容量を基準に整理する--vacuum-sizeが直感的です。

ただし、削除する前に「そのログが本当に不要なのか」を確認してください。
障害が発生している最中や、原因調査を始めたばかりの場合、古いログの中に重要な手掛かりが含まれている可能性があります。
特に本番環境では、削除操作を実行する前に必要なログを別の場所へ保存することも検討してください。

ログは平常時には単なる大量のデータに見えますが、障害が起きた瞬間には証拠に変わります。
この性質を考えると、ディスク容量だけを理由に無差別に削除するのは得策ではありません。
必要な期間や容量を決めたうえで、古いものから段階的に削減するのが安全です。

削除後にディスク容量が減ったことを確認する

削除処理を実行したら、必ずjournaldの使用量を再確認します。

journalctl --disk-usage

さらに、ファイルシステム全体の使用率も確認します。

df -h

ここでjournaldの使用量が減少し、ファイルシステムの空き容量も増えていれば、削除処理が目的どおり機能したと判断できます。
逆に、期待したほど容量が減っていない場合は、アクティブなジャーナルが残っている、別のログやデータがディスクを占有しているなど、複数の原因が考えられます。

また、削除後にすぐログ容量が増え始める場合は、ログの生成量そのものに問題がある可能性があります。
特定のサービスが大量のエラーを出していないか確認し、必要であればサービス側の設定や障害原因を調査してください。

ジャーナルファイルを直接削除するのは避ける

ディスク容量を急いで確保したいからといって、/var/log/journalにあるファイルをrmコマンドで直接削除する方法はおすすめできません。
journaldはジャーナルファイルを自身で管理しているため、管理機能を介さずにファイルを操作すると、ログ管理の状態と実際のファイルの状態に不整合が生じる可能性があります。

ログを削除する必要がある場合は、journalctlのvacuum機能を使うほうが安全です。
journald自身に「どの条件まで古いログを整理するか」を判断させられるため、運用上も意図が明確になります。

どうしてもファイルシステム側の問題で直接操作が必要になった場合は、通常のログ削除とは別のトラブルシューティングとして扱い、systemdやLinuxディストリビューションの仕様を確認したうえで慎重に進めるべきです。

設定変更とログ削除を組み合わせる

ここまでの作業で現在のディスク容量を解放できますが、これだけでは再発防止として不十分です。
削除後もjournaldが大量のログを保存できる設定のままなら、時間の経過とともに再びディスク容量を消費します。

そのため、実際の運用では「現在の古いログを削除する」ことと「今後の保存容量を制限する」ことをセットで考えるのがおすすめです。
まずjournalctlのvacuum機能で現在の不要なログを整理し、その後にSystemMaxUseなどの設定を適切な値へ変更します。

この2段階で対処すれば、現在のディスク逼迫を解消しつつ、将来的にjournaldがストレージを使いすぎるリスクも抑えられます。
いわば、vacuumが現在の問題への応急処置、SystemMaxUseが再発防止策です。

journaldのログ削除は、単に「全部消して空きを作る」という作業ではありません。
必要なログを残しながら古いデータを整理し、サーバーのストレージに適切な余裕を確保する作業です。
特に本番環境では、ログの価値とディスク容量のバランスを意識してください。
削除前後の使用量を確認し、設定変更まで組み合わせれば、場当たり的なログ削除から一歩進んだ安定したログ管理ができます。

設定変更後にjournaldを再読み込みして容量制限を反映する

journaldの設定変更を反映するためsystemdを操作する画面

journald.confでSystemMaxUseなどの設定を変更したら、次に必要なのが設定内容をsystemd-journaldへ反映させる作業です。
設定ファイルを書き換えただけでは、すでに起動しているjournaldのプロセスが変更内容を自動的に利用するとは限りません。
ここを曖昧にすると、「設定したはずなのにログサイズが変わらない」という状況になりやすいため、設定変更と反映確認を一連の手順として考えることが重要です。

journaldの設定変更を反映する方法

まず押さえておきたいのが、設定ファイルを変更したことと、その設定が実際のサービスへ反映されたことは別だという点です。
systemd-journaldはバックグラウンドで動作するサービスなので、設定変更後にはsystemdへ変更を認識させる必要があります。

設定を反映させる方法として、まずjournaldの再起動を行う方法があります。

sudo systemctl restart systemd-journald

このコマンドによってsystemd-journaldを再起動し、変更した設定を読み込ませます。
SystemMaxUseなどの設定を変更した場合には、再起動後に新しい設定が有効になっているかを確認しておくと安心です。

ただし、運用中のサーバーでは「とりあえず再起動する」という考え方は避けたほうがよいでしょう。
journaldはシステムのログを受け取る重要なサービスなので、変更を適用する前に、現在のログが必要な状態ではないか、障害調査中ではないかなどを確認します。
特に本番環境では、設定変更を行う時間帯や作業手順を決めてから実施するのが基本です。

設定ファイルの記述ミスがないか確認する

設定が反映されない場合、サービスの再起動方法より先に確認したいのが設定ファイルそのものです。
journald.confでは、設定セクションや項目名を正しく記述する必要があります。
たとえばSystemMaxUseを指定する場合は、[Journal]セクションの中に記述します。

設定ファイルを編集した直後は、変更した行だけでなく、その周辺も含めて確認しましょう。
単純なタイプミス、余計な文字、コメントアウトされたままの設定などがあると、意図した値が適用されません。
Linuxの設定ファイルはテキスト形式のものが多く、自由度が高い一方で、入力ミスがそのまま設定ミスにつながります。

また、設定ファイルを複数の場所で管理している環境では、/etc/systemd/journald.conf.d/などの追加設定も確認する必要があります。
メインのjournald.confだけを見て「1GBに設定した」と思っていても、別の設定ファイルによって意図した動作になっていない可能性があります。
設定を確認するときは、最終的にjournaldへ適用される構成全体を見るという視点が重要です。

journaldが正常に動作しているか確認する

設定変更を反映したら、次にjournaldそのものが正常に動作しているか確認します。
systemdでは、サービスの状態を確認するためにsystemctl statusを利用できます。

systemctl status systemd-journald

ここでサービスが正常に稼働していることを確認します。
エラー状態になっていないか、直近の起動処理に問題が発生していないかなどを確認してください。
設定変更後にjournaldが正常に起動していなければ、ログ容量以前の問題になります。

特に本番環境では、設定を変更してコマンドが終了したから作業完了、とは考えないことが大切です。
サービスの状態を確認し、ログの記録が継続していることまで確認して初めて、設定変更が正常に完了したと判断できます。

設定変更後のログ使用量を確認する

journaldが正常に動作していることを確認したら、実際のログ使用量を確認します。
ここではjournalctl --disk-usageを使います。

journalctl --disk-usage

設定した容量上限に対して現在の使用量がどうなっているのかを確認しましょう。
ここで注意したいのは、SystemMaxUseを設定した直後に、必ず表示容量がその値まで瞬時に減少するわけではないことです。
設定は今後の保存動作を制御するものであり、すでに存在しているジャーナルの削除タイミングやアクティブなファイルの状態などが関係するためです。

そのため、「1GBに設定したのに1.5GBと表示されるから設定に失敗した」と即断するのは適切ではありません。
設定が正しく読み込まれているか、journaldが正常に動作しているか、そして古いログを削減する必要があるかを順番に確認します。

容量制限を反映させても現在のログが残る場合

ディスク容量をすぐに確保したいケースでは、設定変更だけでは期待した結果にならないことがあります。
たとえば、変更前にjournaldが10GBのログを保存しており、設定後にSystemMaxUse=1Gとした場合です。
設定を変更しただけで、既存の10GBがその瞬間に1GBまで消えるとは限りません。

この場合は、前章で説明したjournalctlのvacuum機能を利用して、古いジャーナルを明示的に整理します。
設定変更は「これからどの程度まで保存するか」を決める作業、vacuumは「現在ある古いログを削減する」作業です。
この2つを分けて考えると、journaldの容量管理がかなり理解しやすくなります。

緊急時にディスク容量を確保する必要があるなら、まず不要な古いログを安全に削減し、その後に容量上限を設定して再発を防ぐという流れが合理的です。
逆に、緊急性がない場合は設定変更後の挙動を観察しながら、必要に応じてログを整理してもよいでしょう。

設定変更後はdfでもディスク全体を確認する

journaldの使用量だけではなく、ファイルシステム全体の空き容量も確認しておきます。
journalctl --disk-usageでjournaldが減少していても、ディスク使用率がほとんど変わっていない場合、別のファイルやサービスが容量を消費している可能性があります。

たとえば、ルートファイルシステムの使用率が95%から80%へ下がったのであれば、設定変更やログ整理による効果を確認しやすいでしょう。
一方、journaldの使用量が減っているにもかかわらず使用率がほぼ変化しないなら、ログ以外の大容量データを調査する必要があります。

このように、journald単体とファイルシステム全体の2つの視点を持つことが重要です。
システム管理では、一つのコマンドの結果だけを見て判断するより、複数の観測値を組み合わせたほうが原因を正確に切り分けられます。

設定変更後にログが再び増えていないか確認する

設定変更直後だけでなく、しばらく運用した後の状態も確認してください。
ログ容量の問題は時間経過によって現れるため、変更直後に正常でも、数日後に再びディスク使用率が上昇する可能性があります。

特に、ログの発生量が多いサービスが稼働している場合は注意が必要です。
設定した容量上限が適切であれば、ログが増えても無制限にストレージを占有する状態を防げます。
しかし、上限が低すぎれば必要なログが早く失われ、高すぎればディスク容量を圧迫する余地が残ります。

設定値は一度決めたら永遠に固定するものではありません。
サーバーの用途やアプリケーション構成、ログの発生量が変わったら、保存容量も見直すべきです。
ログ管理は設定して終わりではなく、実際の使用量を観測しながら調整する運用です。

journaldの設定変更では、設定ファイルを編集する、変更を反映する、サービスの状態を確認する、ログ使用量を確認する、ディスク全体を確認する、という順番で進めると安全です。
設定を書き換えただけで作業完了にしないことがポイントです。

そして、現在のディスク容量をすぐに減らしたい場合は、設定変更とログ削除を組み合わせます。
設定によって将来的な肥大化を防ぎ、vacuumによって現在の不要なログを整理する。
この二段構えにすることで、目の前のディスク逼迫と再発防止の両方に対応できます。

journaldのログ容量を定期的に確認しディスク逼迫を防ぐ方法

journaldのログ容量を監視してディスク逼迫を防ぐイメージ

journaldのログ容量を制限したとしても、設定して終わりではありません。
サーバーの運用を続けていると、アプリケーションの追加やアクセス量の増加、障害による大量のエラーログなどによって、ログの発生量は変化します。
そのため、ディスク容量を安定して維持するには、journaldの使用量を定期的に確認し、設定が現在の運用状況に適しているかを見直すことが重要です。

ログ容量の問題は、突然発生するように見えて、実際には少しずつ進行していることが少なくありません。
ディスク使用率が100%に近づいてから対処するよりも、余裕がある段階で変化を検知したほうが安全です。
ここでは、journaldを継続的に監視するための考え方と、定期的な確認を運用に組み込む方法を整理します。

journalctl –disk-usageで定期的に使用量を確認する

もっとも基本的な方法は、定期的にjournalctl --disk-usageを実行して、journaldが使用している容量を確認することです。
コマンド自体は非常にシンプルですが、重要なのは一度だけ実行して終わらせず、継続的に状態を見ることです。

たとえば、週に一度確認するだけでも、「先週は500MBだったのに、今週は1.5GBになっている」といった変化を把握できます。
数値の絶対値だけでなく、増加速度を見ることで、ログが通常より多く生成されていることにも気づきやすくなります。

特にサーバーのディスク容量が小さい場合は、定期確認の頻度を高める価値があります。
数十GB程度のストレージしかない環境では、数GBのログ増加がそのままサービス停止につながる可能性があるからです。
一方、大容量のストレージを利用している環境では、週次や月次の確認から始めてもよいでしょう。

df -hでディスク全体の使用率も確認する

journaldだけを監視していると、ディスク容量の問題を見逃すことがあります。
ログ以外のファイルがストレージを大量に消費する可能性があるためです。
そこで、journaldの使用量と合わせてファイルシステム全体の使用状況も確認します。

df -h

df -hでは、各ファイルシステムの容量、使用量、空き容量、使用率などを確認できます。
たとえば、journaldの使用量が1GBしかなくても、ルートファイルシステムが95%使用されているのであれば、ログ以外のデータも調査する必要があります。

逆に、journaldが数GB使用していても、ストレージ全体に十分な余裕があるなら、直ちに削除する必要がない場合もあります。
このように、journaldの数字とディスク全体の数字をセットで見ることが、適切な判断につながります。

ログ容量の増加速度を把握する

定期的な監視では、「現在何GB使っているか」だけでなく、「どのくらいの速度で増えているか」も重要です。
ログ容量が毎週100MBずつ増えているのか、1日で数GB増えることがあるのかでは、必要な対策が大きく異なります。

ログが急激に増加した場合は、単純な保存設定の問題ではなく、サービス側で異常が発生している可能性があります。
たとえば、あるプロセスがエラーを繰り返している、外部サービスとの通信に失敗している、認証処理が大量に失敗しているなど、通常とは異なるイベントが大量のログを生成しているケースです。

このような場合、journaldの保存容量を小さくするだけでは根本的な問題を解決できません。
ログが増えたことを異常の兆候として捉え、必要に応じて対象サービスのログを確認することが重要です。

ログ監視を自動化する方法

サーバーの台数が増えたり、運用対象が本番環境になったりすると、毎回手動でコマンドを実行するのは現実的ではありません。
そこで、ログ容量の確認をスクリプトや監視システムに組み込む方法があります。

たとえば、定期的にjournalctl --disk-usageの結果を取得し、一定の容量を超えた場合に通知する仕組みを作れます。
Linuxではcronなどのスケジューラーを利用して定期実行する方法もありますし、既存のサーバー監視サービスにディスク使用率の監視を組み込む方法もあります。

自動化で重要なのは、「ログが上限に達したら通知する」だけでなく、「ディスク全体の空き容量が危険な水準に達したら通知する」という二段階の監視を考えることです。
journaldの上限が適切でも、別のデータがディスクを圧迫すればシステムは停止する可能性があります。

また、監視対象の数値には余裕を持たせることも重要です。
100%になってから通知するのでは遅すぎます。
たとえば使用率が80%や90%を超えた段階で警告を出すようにすれば、調査や削除、ストレージ拡張などの対応時間を確保できます。

journaldの設定値を定期的に見直す

サーバーを長期間運用すると、最初に決めたSystemMaxUseが現在の環境に合わなくなることがあります。
アプリケーションを追加したり、アクセス量が増加したりすれば、ログの生成量も変わるからです。

たとえば、開発用サーバーとして構築した当初は1GBのログ上限で十分だったとしても、後からWebアプリケーションやデータベースを追加したことでログ量が増える可能性があります。
反対に、サービスを停止したりログを外部のログ管理基盤へ転送するように変更したりした場合は、ローカルに保存する容量を減らせるかもしれません。

つまり、SystemMaxUseは一度決めたら永久に変更しない値ではありません。
サーバーの役割が変わったとき、ログの発生量が大きく変化したとき、ストレージを増設したときなど、環境の変化に合わせて見直すのが合理的です。

ログの異常増加を早めに発見する

journaldの容量監視には、ディスク容量を守るだけでなく、システムの異常を早期発見できるという副次的なメリットもあります。
ログの増加量が突然跳ね上がった場合、それ自体が何らかの問題を示している可能性があるためです。

たとえば、通常は1日あたり100MB程度しか増えない環境で、突然数GB増えたとします。
このとき、「journaldの上限を増やそう」と考える前に、なぜログが増えたのかを確認するべきです。
ログの大量生成を引き起こした原因を解消できれば、ストレージの消費速度そのものを抑えられるからです。

これはログ管理を単なるディスク容量対策としてではなく、運用監視の一部として考えるということです。
ログにはシステムの状態が反映されるため、容量の変化を追跡するだけでも異常の兆候を見つけられる場合があります。

ディスク逼迫に備えて余裕を確保する

ディスク容量の管理で最も避けたいのは、容量が限界に達してから対応を始めることです。
ディスクが満杯になると、ログを書き込めなくなるだけでなく、アプリケーションが一時ファイルを作れなくなったり、データベースの書き込みに失敗したり、パッケージ更新が正常に行えなくなったりする可能性があります。

そのため、journaldのログ上限を設定するときも、サーバーのストレージをぎりぎりまで使い切る設計は避けたほうが安全です。
ログ、アプリケーションデータ、キャッシュ、一時ファイルなど、それぞれがストレージを利用することを前提に、十分な空き容量を確保しておきます。

特にVPSなどでストレージ容量を後から拡張できる環境では、容量不足が発生する前に拡張を検討することも選択肢になります。
ログ削除だけで問題を解決しようとせず、そもそものストレージ設計が適切かを考えることもサーバー運用では重要です。

定期確認を運用ルールに組み込む

最終的には、journaldの容量確認を「思い出したときに実行する作業」にしないことが理想です。
個人サーバーなら週次や月次のメンテナンス項目として記録し、本番環境なら監視システムによる自動チェックを検討します。

運用ルールとしては、次のような流れが分かりやすいでしょう。

  1. journaldの使用量を定期的に確認する
  2. ファイルシステム全体の使用率を確認する
  3. 過去の測定値と比較して増加速度を見る
  4. 急激な増加があれば原因となるサービスを調査する
  5. 必要に応じてログの削減やSystemMaxUseの見直しを行う

この流れを定着させれば、「ディスク容量がなくなってから慌ててログを消す」という運用から脱却できます。
ログ容量を継続的に観測し、異常を早期に検知し、必要な場合だけ設定を調整する。
シンプルですが、長期間安定してサーバーを運用するうえで非常に効果的な考え方です。

journaldはsystemd環境における重要なログ基盤ですが、ログを保存する以上、ストレージを消費することは避けられません。
だからこそ、SystemMaxUseなどで上限を設けるだけでなく、実際の使用量を定期的に観測することが大切です。
設定・監視・原因調査の3つを組み合わせることで、ログ肥大化による突然のディスク逼迫をかなり防ぎやすくなります。

journaldのログサイズを適切に管理してLinuxのディスク容量を守る【まとめ】

journaldのログを適切に管理してLinuxサーバーを運用するイメージ

ここまで、journaldのログサイズが大きくなったときに確認すべきポイントから、設定変更、古いログの削除、再発防止までを順番に見てきました。
journaldはLinuxサーバーの状態を把握するうえで欠かせない仕組みですが、ログを保存する以上、ディスク容量を消費します。
特にVPSやストレージ容量の小さいサーバーでは、ログの肥大化がそのままシステム全体の容量不足につながるため、早めの対処が重要です。

まず確認したいのは、本当にjournaldがディスク容量を圧迫しているのかという点です。
ディスク使用率が高いからといって、いきなりログを削除するのは得策ではありません。
journalctl --disk-usageでjournaldの使用量を確認し、df -hでファイルシステム全体の使用状況を確認することで、ログが問題の中心なのかを切り分けられます。

journaldの使用量が大きい場合でも、単純に「ログを全部消す」のではなく、なぜ増えたのかを考えることが大切です。
長期間サーバーを稼働させているために過去ログが蓄積しているのか、それとも特定のサービスが大量のエラーを出しているのかによって、取るべき対策は変わります。
特に短時間でログが急増している場合は、journaldの設定だけでなく、ログを大量に生成しているサービス側の原因も調査する必要があります。

現在のログを削減するだけなら、journalctlのvacuum機能が便利です。
容量を基準に古いログを整理する--vacuum-size、保存期間を基準に削除する--vacuum-timeなどを使えば、ジャーナルを管理しながら不要なログを減らせます。
ここで重要なのは、ジャーナルファイルをrmなどで直接削除するのではなく、journald自身が提供する管理機能を利用することです。

ただし、ログを削除しただけでは再発防止になりません。
ここで登場するのがjournald.confの設定です。
SystemMaxUseを適切に設定すれば、journaldが永続的なジャーナルの保存に使用できるディスク容量を制御できます。
これによって、ログが無制限に増え続けてディスクを圧迫するリスクを抑えられます。

設定値は、サーバーのディスク容量だけを見て決めるものではありません。
1日あたりのログ発生量、障害調査に必要なログの保持量、外部のログ管理基盤を利用しているかどうかなども考慮します。
上限を小さくしすぎれば必要なログまで早く失われる可能性があり、反対に大きくしすぎればディスク容量を圧迫する余地が残ります。
ログをどこまで残すべきかという運用上の要件と、ストレージ容量のバランスが重要です。

また、設定ファイルを変更したら、それだけで作業を終わらせないこともポイントです。
変更内容をjournaldへ反映し、systemd-journaldが正常に動作していることを確認したうえで、実際のログ使用量やファイルシステムの空き容量を確認します。
設定変更は「書き換えたら完了」ではなく、「変更後の状態を観測して初めて完了」と考えると、運用上のミスを減らせます。

さらに、今回のようなディスク容量の問題は、一度解決したら終わりというものでもありません。
アプリケーションを追加したりアクセス量が増えたりすると、ログの発生量は変化します。
そのため、journalctl --disk-usageによる確認を定期的なメンテナンスに組み込むか、サーバー監視の仕組みでディスク使用率を継続的に監視するのがおすすめです。

理想的な運用は、ディスクが100%近くまで埋まってから慌ててログを削除することではありません。
余裕のある段階でログ容量の増加を検知し、異常な増加があれば原因を調査し、必要に応じて保存上限やストレージ容量を見直すことです。
ログ容量の変化は、単なるストレージ問題ではなく、サーバー上で何か異常が起きているサインになることもあります。

journaldのログ肥大化に対する基本的な対処を整理すると、次の流れになります。

  1. journalctl --disk-usageでjournaldの使用量を確認する
  2. df -hでディスク全体の使用率と空き容量を確認する
  3. ログが増えている原因と増加速度を調べる
  4. 必要に応じてvacuum機能で古いログを削減する
  5. journald.confのSystemMaxUseなどを見直す
  6. 設定を反映してjournaldの動作を確認する
  7. 定期的な容量監視によって再発を防ぐ

この手順で進めれば、「ログが大きいからとりあえず削除する」という場当たり的な対応から一歩進んだ管理ができます。
現在のディスク容量を回復することと、将来的なログ肥大化を防ぐことは別の問題です。
古いログの削除が応急処置、SystemMaxUseなどの設定が再発防止、定期的な監視が継続的な運用という役割分担になります。

Linuxサーバーを安定して運用するうえで、ログは邪魔なデータではなく、障害調査や原因分析に必要な情報です。
だからこそ、無計画に削除するのではなく、必要なログを残しながらストレージ使用量をコントロールすることが重要です。
journaldの仕組みと設定項目を理解しておけば、ディスク容量が急に逼迫したときにも、原因を切り分けながら冷静に対処できます。

もし今まさにディスク容量が不足しているのであれば、まずjournaldの使用量を確認してください。
そして、現在のログを整理するだけで終わらせず、なぜその容量まで増えたのかを確認し、今後の保存上限まで見直しましょう。
「削除して空きを作る」から「適切な量を保存して、増えすぎないように管理する」へ。
この考え方が、journaldを長く安全に運用するための基本です。

コメント

タイトルとURLをコピーしました