Linuxディスク容量調査の決定版 - duコマンドの実践活用術と必須オプション徹底解説

はじめに

Linuxサーバーを運用していると、ストレージの空き容量枯渇アラートに直面する場面が頻繁に生じます。障害を未然に防ぎ迅速に対応するためには、どのリソースが容量を圧迫しているのかを即座に特定する技術が欠かせません。本記事では、冗長なマニュアルを読む代わりに、手を動かしながら身につく実践的なシナリオ形式で、ストレージ調査の要である du コマンドの基礎から現場で重宝する鉄板テクニックまでを体系的に解説します。

1. 検証用データの構築と du コマンドの基本動作

まずは挙動検証を行うための土台として、テスト用ディレクトリ群と指定サイズのダミーファイルを mkdir -p /tmp/du_demo/logs /tmp/du_demo/backup && truncate -s 10M /tmp/du_demo/backup/data.bin && truncate -s 5M /tmp/du_demo/logs/app.log を使って一括生成します。

mkdir -p /tmp/du_demo/logs /tmp/du_demo/backup && truncate -s 10M /tmp/du_demo/backup/data.bin && truncate -s 5M /tmp/du_demo/logs/app.log

du(Disk Usage)は、対象パス配下に存在するディレクトリ群の物理的なブロック占有量(デフォルト基準:1024バイト単位)を走査・集計するユーティリティです。
引数のみで実行すると、各階層のパスとそのブロック消費量が数値としてそのまま出力されます。
⚙️ [押さえておきたい主要オプション]

-h : 単位表記(K、M、Gなど)を付与し、人間が直感的に認識できる形式に変換します。
-a : ディレクトリ単位の集計にとどまらず、個々の構成ファイルも含めて一覧化します。
-s : 下位構造の明細を省略し、指定ターゲットのトータル消費量のみをサマリー表示します。
-d : 再帰的にスキャンするディレクトリ階層の上限(深度)を制御します。
-c : 個別項目のリスト末尾に、全体の合算値(total)を追加出力します。
-b : ブロック割り当て量ではなく、ファイル自身が保持する本来の見かけサイズ(apparent size)をバイト単位で測定します。

du /tmp/du_demo

-h(--human-readable)フラグを付与することで、キロバイト(K)、メガバイト(M)、ギガバイト(G)といった適切な単位へ自動換算されます。
生のブロック数を見るよりも、各フォルダのスケール感を素早く直感的に把握できるようになります。

du -h /tmp/du_demo

2. 探索階層の絞り込みと合算値の算出 (-d, -s, -c)

階層構造の深さ制御を検証するため、ネストした深いディレクトリと検証用バイナリを mkdir -p /tmp/du_demo/nested/level1/level2 && truncate -s 2M /tmp/du_demo/nested/level1/level2/dummy.bin で追加配置します。

mkdir -p /tmp/du_demo/nested/level1/level2 && truncate -s 2M /tmp/du_demo/nested/level1/level2/dummy.bin

-d 1(--max-depth=1)を指定すると、探索対象直下の第1階層に位置するディレクトリ群のみに対象を限定して表示します。
深く潜りすぎたディレクトリ明細によるターミナルのログ埋もれを防ぎ、トップレベルの消費動向を俯瞰したい場面で威力を発揮します。

du -h -d 1 /tmp/du_demo

下層のディレクトリ構造を展開せず、対象全体の消費ボリュームだけをピンポイントで知りたい場合は -s(--summarize)が最適です。
-h と組み合わせて実行することで、指定パスの総使用量をスマートに1行で取得できます。

du -sh /tmp/du_demo

各内訳をリストアップしつつ、最終行で全体の集計結果も併せて確認したいケースでは -c(--total)を併用します。
個別要素の配分と全体ボリュームを一目で突き合わせて比較・評価することが可能です。

du -ch -d 1 /tmp/du_demo

3. ファイル単位の詳細把握と特定パターンの除外 (-a, –exclude)

特定拡張子のフィルタリング動作を試すため、除外対象となる一時ファイルを touch /tmp/du_demo/temp1.tmp /tmp/du_demo/temp2.tmp で準備します。

touch /tmp/du_demo/temp1.tmp /tmp/du_demo/temp2.tmp

ディレクトリだけでなく個別のデータファイルまで網羅的にスキャンしたい場合は -a(--all)を指定します。
-h を添えて /tmp/du_demo/logs を走査すれば、格納されているログファイルそれぞれの正確な容量が明瞭にリストアップされます。

du -ah /tmp/du_demo/logs

集計処理から不要なゴミデータを除外したいときは --exclude オプションの出番です。
例として --exclude='*.tmp' を付与すると、一時ファイル群(.tmp)を無視し、実質的な有効データのみを対象とした正確な占有量を割り出すことができます。

du -h –exclude=’*.tmp’ /tmp/du_demo

4. 現場直結の応用テクニック:容量順ソートと肥大化ファイルの特定

実務におけるボトルネック探索を模擬するため、負荷の大きな大型ファイルを truncate -s 50M /tmp/du_demo/backup/big.tar && truncate -s 20M /tmp/du_demo/logs/access.log で追加配置します。

truncate -s 50M /tmp/du_demo/backup/big.tar && truncate -s 20M /tmp/du_demo/logs/access.log

du -h -d 1 /tmp/du_demo の出力をパイプ(|)経由で sort -hr に渡すと、直下ディレクトリ群がサイズ降順(大きい順)で美しく並び替わります。
ディスク領域を大量占有している主要因を瞬時に特定する上で、極めて実用性の高いワンライナーです。

du -h -d 1 /tmp/du_demo | sort -hr

さらに du -ah /tmp/du_demo でファイル単位まで展開したデータを sort -hr で降順ソートし、head -n 5 で上位5件のみを切り出します。
ストレージを逼迫させている最大の原因トップ5を即座にあぶり出し、削除・退避すべき対象を素早く特定できます。

du -ah /tmp/du_demo | sort -hr | head -n 5

検証がすべて完了した後は、環境を汚さないよう rm -rf /tmp/du_demo を実行して作成したテストデータをきれいにクリーンアップします。

rm -rf /tmp/du_demo

本稿では、Linux環境におけるストレージ調査の要である du コマンドの実務的な活用法と、障害対応時に役立つ組み合わせ技を解説しました。
システムの稼働状況や用途に応じて最適なフラグを選び分け、日々のサーバーリソース管理やキャパシティプランニングに役立ててください。