はじめに
ハードドライブの空き容量がなくなったときは、次の質問に答える必要があります。
- 「巨大な箱はどこにあるのか?」(容量の大きいディレクトリ)
- 「巨大なアイテムはどこにあるのか?」(サイズの大きいファイル)
使用するツールは次のとおりです。
- **
find**:金属探知機(サイズを指定してファイルを検索します)。 - **
du**:はかり(ディレクトリの容量を測定します)。 - **
sort**:整理係(サイズ順に並べ替えます)。
この実験では、プロフェッショナルな「春の大掃除」の監査を実施します。
この分析方法は、実際の運用作業でよく使われます。ファイルシステムの容量がいっぱいになったとき、本当に知りたいのは通常、「いっぱいかどうか」ではなく、「どのファイルまたはディレクトリが原因なのか」です。
大きなファイルを検索する(find)
find を使って、「大物」(100MB を超えるファイル)を見つけます。
cd ~/project
find . -type f -size +100M
コマンドの内容:
.:現在のディレクトリ。-type f:ファイルだけを対象にします。-size +100M:100MB より大きいファイルを対象にします。
find コマンドが強力なのは、ディレクトリを手作業で閲覧するのではなく、ルールに従って検索できるからです。そのため、大規模または整理されていないファイルシステムで特に役立ちます。
出力例:
./storage/backup_v1.iso
検索結果を保存します。
find . -type f -size +100M > large_files.txt
cat large_files.txt
ディレクトリのサイズを分析する(du)
問題の原因が「がらくた入れ」(多数の小さなファイル)である場合もあります。
du を使って /var(可変データ)の容量を測定します。
sudo du -h --max-depth=1 /var
コマンドの内容:
-h:MB や GB など、人間が読みやすい単位で表示します。--max-depth=1:直下のサブディレクトリだけを表示します(重要です)。
出力例:
246M /var/cache
5.5G /var/lib
...
これで、/var/lib が容量の大きい箱だと分かります。
ディレクトリ単位の分析が役立つのは、ストレージの問題が、1 つの巨大なファイルによって発生する場合と、ファイルシステム内の特定の領域に時間とともに大量のデータが蓄積して発生する場合があるためです。
大きなディレクトリを順位付けする(sort)
順序がばらばらの一覧は読みにくいものです。sort を使って整理しましょう。
du、sort、head を組み合わせた「黄金の組み合わせ」を使います。
sudo du -h --max-depth=1 /var | sort -hr | head -n 5 > ~/project/top_var_dirs.txt
コマンドの内容:
du ...:サイズを取得します。sort -hr:人間が読みやすい単位のサイズを、Human-readable として解釈し、Reverse(降順、大きい順)に並べ替えます。head -n 5:上位 5 件だけを表示します。
レポートを確認します。
cat ~/project/top_var_dirs.txt
これは、システム管理者が標準的に行う作業手順です。
この手順を覚えておきましょう。まず容量の大きい領域を特定し、結果を並べ替え、その後、最も効果の大きい場所から優先的にクリーンアップします。
まとめ
この実験では、ディスク容量を「探偵」のように調査する方法を学びました。
- **
find -size**:特定の大きなファイル(「大物」)を見つけるのに役立ちました。 - **
du -h --max-depth=1**:主要なフォルダー(「容量の大きい箱」)のサイズを測定するのに役立ちました。 - **
sort -hr**:ディレクトリを順位付けし、クリーンアップの優先順位を決めるのに役立ちました。
これらのツールを使えば、「なぜサーバーの容量がいっぱいなのか」という疑問にすばやく答え、問題が大きくなる前に解決できます。



