Linux サーバーを運用していると、気付かないうちにストレージが逼迫し、アプリケーションの停止やログ出力エラーなどのトラブルにつながることがあります。特に「どのディレクトリが容量を圧迫しているのか分からない」といった悩みは、多くのエンジニアが直面する典型的な課題です。
本記事では、Linux の容量確認に欠かせない du・df の基本から、大容量ディレクトリの効率的な特定方法まで、実践的なノウハウを体系的に解説します。容量トラブルを未然に防ぎ、安定したシステム運用を行うために、ぜひ参考にしてください。
✅ 記事のポイント
- Linux のディレクトリ容量確認はシステム安定運用の要 予期せぬストレージ枯渇を防ぎ、障害を未然に回避できる。
- 基本コマンドは
duとdf
du: ディレクトリ配下の実利用量を確認する。df: ファイルシステム全体の空き容量・使用率を確認する。- du と df が一致しない原因を理解することが重要
- 削除されたがプロセスが保持し続けているファイル
- マウントポイント配下の別ファイルシステム →
lsofやumountで解決可能。- 大容量ディレクトリの特定方法を習得する
du + sort + headで上位の容量食いを抽出できる。- 大きいファイルをサイズ順に一覧化する
find + sort + headで上位の容量食いを抽出できる。
容量を消費しているディレクトリとファイルの特定手法
最大サイズのディレクトリを見つける(du + sort + head)
du -ah /path | sort -hr | head -n 20
/pathは対象のディレクトリを指定してください。
上位20件を表示することで、容量圧迫要因を素早く特定できます。
特定のファイル・ディレクトリを除外 (—exclude)
du -h --exclude="*.log" /var | sort -hr | head -n 20大量のログファイルを除外して集計したい場合に有効です。
大きいファイルをサイズ順に一覧化する
システム全体で巨大なファイルを探したい場合は、以下のコマンドがもっとも効率的です。
find /path -type f -printf '%s %p\n' 2>/dev/null | sort -nr | head -20
/pathは対象のディレクトリを指定してください。
このコマンドはサイズの大きい順にファイルを並べてくれるため、
- 異常に肥大化したログファイル
- 誤って残った巨大アーカイブ
- 知らずに溜まっていたバックアップ
などを一気に見つけられます。
ディレクトリサイズ監視の重要性
Linuxシステムの運用において、ディスク容量の管理は極めて重要です。特にサーバー環境やコンテナ環境では、ディスク容量が逼迫するとログの書き込み失敗、アプリケーションの異常停止、データベースの動作不良、さらにはシステム全体のダウンタイムに直結することもあります。
容量不足は“事前に予防できるトラブル”であるにもかかわらず、見落とされがちな領域でもあります。ディレクトリ単位の容量監視は、原因を素早く特定し、問題が顕在化する前に対策を打つための重要な手段です。
ディレクトリサイズ監視が必要な理由
ディスク容量の効率的な管理
Linux環境ではログファイルやキャッシュ、バックアップデータが日々蓄積されます。これらは通常ユーザーが意図しない形で増えていき、気付かないうちにストレージを圧迫します。定期的なディレクトリ監視によって、不要ファイルの除去や適切なログローテーション設定が可能になります。
ストレージ不足によるシステム問題の防止
ストレージ不足はシステムに深刻な影響を与えます。具体的には以下のような問題が発生します。
- ログが書き込めず、サービスが異常終了する
- DBが書き込みエラーを起こす
- OSの一時ファイルが作成できず処理が停止する
こうしたリスクを回避するためにも、容量監視は事前対策として重要です。
大容量ファイルやディレクトリの特定
どのディレクトリが容量を消費しているのかすぐに判断できると、調査の手間が大幅に削減できます。異常に巨大なログ、蓄積されたバックアップ、予期しないアプリケーションの出力など、容量圧迫の原因を迅速に把握できます。
Linux容量確認の基本コマンド:duとdf
Linuxでは、ディスク容量の確認に多用される2大コマンドが du(Disk Usage) と df(Disk Free) です。それぞれ目的と役割が異なるため、両方を理解することが重要です。
duコマンド(Disk Usage)によるディレクトリ使用量の確認
du は「ディレクトリやファイル単位の実使用量」を確認するためのコマンドです。
基本的な構文と主要オプション
du [オプション] [ディレクトリ名]主要オプション:
-s:指定ディレクトリの合計サイズのみ表示-h:人間が読みやすい形式(K/M/G)-a:ファイル単位のサイズも含めて表示--max-depth=N:階層の深さを制限--apparent-size:論理サイズ(見かけのサイズ)を表示
ディレクトリの合計サイズを表示 (-sh)
du -sh /var/log最もよく使われる形式で、ディレクトリの総容量を一行で確認できます。
サブディレクトリとファイルの一覧表示 (-ah)
du -ah /var/log各ファイルの使用量を可視化でき、どこが容量を食っているか詳細に把握できます。
特定のディレクトリ階層までのサイズ表示 (—max-depth)
du -h --max-depth=1 /var上位ディレクトリごとの差分を素早く把握するのに最適です。
dfコマンド(Disk Free)によるファイルシステムの使用率確認
df はファイルシステム全体の使用状況を表示します。
コマンド概要と主なオプション
df -h主なオプション:
-h:人間が読みやすい形式で表示-T:ファイルシステムタイプを表示-i:inode使用量を表示
dfコマンドの特性
df は ファイルシステム単位の統計情報(superblock) を基に容量を算出するため、ディレクトリ単位の実測値とは異なる結果が出る場合があります。
duとdfの違い
duとdfの違い~対象範囲の違い~
- du:指定ディレクトリ以下の実データを集計
- df:ファイルシステム全体のメタ情報を参照
duとdfの違い~統計ロジックの違い~
- du:ファイルを1つずつ読み取り、実際の使用ブロック数を加算
- df:superblockから総容量・使用済み容量・空き容量を取得
削除したのに容量が減らない主な原因と解決策
削除済みファイルが解放されていない(消えているのに容量が減らない)
ログ削除後も容量が減らない場合、プロセスがファイルを掴んでいる可能性があります。
原因
ファイルは「削除」されても、プロセスがファイルディスクリプタを保持している限りディスクブロックは解放されません。
解決策(lsofで確認)
lsof | grep deleted問題のプロセスを再起動または終了することで領域が解放されます。
Linuxディレクトリ容量確認まとめ
Linux で「ディレクトリの容量」を正しく把握するには、df と du の違い、ハードリンクの存在、キャッシュ情報の更新タイミングなど複数の視点が必要です。特に、正確な容量を取得したい場合は du -sh ディレクトリ名 が最も信頼できる指標になります。一方で、ディスク全体の空き容量やファイルシステムの状況を知るには df -h が適しています。
また、肥大化しているディレクトリを調査するときは du -sh * | sort -h、大きなファイルを特定するときは find /path -type f -size +100M のように目的に合ったコマンドを使うことで、効率よく原因にたどり着けます。
運用上は、ログのローテーション設定、不要ファイルの定期削除、キャッシュのクリアなどを自動化しておくとトラブルを未然に防げます。これらの知識を押さえておくことで、Linux サーバーのディスク容量管理は格段に楽になります。
Linuxユーザにお勧めの本
以上で本記事の解説を終わります。
よいITライフを!