df / du
『df』と『du』は Linux でディスクの空き容量とディレクトリ別の使用量を調べる基本コマンドです。df -h でファイルシステム全体の空き容量を人間が読みやすい単位で確認し、du -sh /* でどのディレクトリが容量を消費しているかを特定できます。インタラクティブな TUI ツール ncdu を使うと、ドリルダウンしながら視覚的に調査できます。
構文
# -----------------------------------------------
# df(Disk Free)— ファイルシステム全体の空き容量確認
# -----------------------------------------------
# df -h
# → 全マウントポイントのディスク使用状況を人間が読みやすい単位で表示します
# → 容量が GB・MB 単位で表示されます
# 例: df -h
# df -i
# → 容量ではなく inode の使用状況を表示します
# → inode が枯渇するとファイルを作成できなくなります
# 例: df -i
# df -h {マウントポイント}
# → 特定のマウントポイントだけ表示します
# 例: df -h /var
# -----------------------------------------------
# du(Disk Usage)— ディレクトリ別の使用量確認
# -----------------------------------------------
# du -sh {ディレクトリ}
# → 指定ディレクトリの合計使用量を人間が読みやすい単位で表示します
# → -s: サマリーのみ(サブディレクトリを展開しない)
# → -h: 人間が読みやすい単位(K/M/G)
# 例: du -sh /var/log
# du -h --max-depth=1 {ディレクトリ}
# → 指定ディレクトリ直下の各サブディレクトリの使用量を表示します
# → --max-depth=1: 1階層だけ展開します
# 例: du -h --max-depth=1 /var
# du -hs * | sort -rh
# → カレントディレクトリ内の各エントリを使用量の大きい順に並べます
# → sort -r: 逆順(大きい順) sort -h: 人間が読みやすい単位を正しく比較
# 例: cd /var && du -hs * | sort -rh
# -----------------------------------------------
# ncdu — インタラクティブな TUI ディスク調査ツール
# -----------------------------------------------
# ncdu {ディレクトリ}
# → TUI でディレクトリツリーを表示し、キーボードでドリルダウンできます
# → インストール: sudo apt install ncdu(Debian/Ubuntu)
# → sudo dnf install ncdu(RHEL/AlmaLinux)
# 例: ncdu /
# -----------------------------------------------
# find — 大容量ファイルの検出
# -----------------------------------------------
# find {ディレクトリ} -size +{サイズ} -type f
# → 指定サイズを超えるファイルを列挙します
# → +100M: 100MB 超 +1G: 1GB 超
# 例: find / -size +100M -type f 2>/dev/null
構文一覧
| コマンド | 説明 |
|---|---|
df -h | 全マウントポイントの空き容量を人間が読みやすい単位(K/M/G)で表示します。Use% が 90% を超えているマウントポイントが要注意です。 |
df -i | inode の使用状況を表示します。ファイル数が非常に多い場合、容量に余裕があっても inode が枯渇してファイルを作れなくなることがあります。 |
df -h /var | 特定マウントポイントの空き容量のみ表示します。 |
du -sh {ディレクトリ} | 指定ディレクトリの合計使用量を1行で表示します。大まかな容量把握に使います。 |
du -h --max-depth=1 {ディレクトリ} | 指定ディレクトリ直下のサブディレクトリを1階層だけ展開して使用量を表示します。どのサブディレクトリが大きいかを特定するのに使います。 |
du -hs * | sort -rh | カレントディレクトリ内のエントリを使用量の大きい順に並べます。容量の大きいディレクトリを素早く見つけられます。 |
ncdu {ディレクトリ} | TUI でディレクトリツリーを表示し、矢印キーでドリルダウンできます。d キーでファイルを削除することもできます。 |
find / -size +100M -type f 2>/dev/null | 100MB を超えるファイルを検索します。古いバックアップや肥大化したログを発見するのに役立ちます。 |
find / -name "*.log" -size +50M 2>/dev/null | 50MB を超えるログファイルを検索します。logrotate の設定漏れで肥大化したログを見つける際に使います。 |
使用例
ディスクがいっぱいになった原因を調査する
# ----------------------------------------------- # ディスク枯渇の原因調査手順 # (桐生一馬のサーバーで / が 98% になった場合) # ----------------------------------------------- # Step1: どのマウントポイントが逼迫しているか確認します df -h # Step2: ルート直下でどのディレクトリが大きいか調査します du -h --max-depth=1 / # Step3: /var が大きければさらにドリルダウンします du -h --max-depth=1 /var # Step4: /var/log が怪しければログディレクトリを調査します du -hs /var/log/* | sort -rh # Step5: 100MB 超のファイルを列挙して手掛かりを探します find /var -size +100M -type f 2>/dev/null # Step6: ncdu で視覚的に確認しながら不要ファイルを削除します # (j/k または矢印キーで移動、d キーで削除) ncdu /var
実行するコマンドは次の通りです。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 48G 980M 98% / /dev/sda2 100G 12G 88G 12% /home tmpfs 7.8G 0 7.8G 0% /dev/shm $ du -h --max-depth=1 /var 4.0K /var/backups 2.1G /var/log 890M /var/lib 44G /var/lib/kiryu_db_backup 4.0K /var/cache 46G /var $ find /var -size +100M -type f 2>/dev/null /var/lib/kiryu_db_backup/dump_20260101.sql.gz /var/lib/kiryu_db_backup/dump_20260201.sql.gz /var/lib/kiryu_db_backup/dump_20260301.sql.gz /var/log/nginx/majima_access.log.1
inode の枯渇を調査する
# ----------------------------------------------- # inode が枯渇しているかどうか確認します # (真島吾朗のサーバーで「No space left on device」 # が出るのに df -h では空き容量がある場合) # ----------------------------------------------- # inode の使用状況を確認します # IUse% が 100% に近い場合が inode 枯渇です df -i # inode を大量消費しているディレクトリを探します # (ファイル数が多いディレクトリを特定します) find / -xdev -printf '%h\n' 2>/dev/null | sort | uniq -c | sort -rn | head -20
実行するコマンドは次の通りです。
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 3276800 3276795 5 100% /
/dev/sda2 6553600 124032 6429568 2% /home
$ find / -xdev -printf '%h\n' 2>/dev/null | sort | uniq -c | sort -rn | head -5
892341 /var/spool/majima_mail_queue
84210 /tmp/nishiki_sessions
4821 /var/log
312 /usr/lib
201 /etc
ncdu でインタラクティブに調査する
# ----------------------------------------------- # ncdu のインストールと基本的な使い方 # ----------------------------------------------- # Debian/Ubuntu 系へのインストール sudo apt install ncdu # RHEL/AlmaLinux 系へのインストール sudo dnf install ncdu # / からスキャンを開始します(時間がかかる場合があります) ncdu / # /home だけを素早く調査する場合 ncdu /home # スキャン結果をファイルに保存しておき、後で確認することもできます # (本番サーバーで負荷を最小限にしたい場合に有効です) ncdu -o /tmp/tatsuya_disk_report.json / ncdu -f /tmp/tatsuya_disk_report.json
実行するコマンドは次の通りです。
$ ncdu /home
ncdu 1.19 ~ Use the arrow keys to navigate, press ? for help
--- /home -----------------------------------------------------------------------
18.2 GiB [##########] /kiryu
8.7 GiB [#### ] /majima
3.1 GiB [# ] /nishiki
512.0 MiB [ ] /date_true
48.3 MiB [ ] /品田辰雄_work
(↓ キーで移動、→ または Enter でドリルダウン、d キーで削除)
概要
『df』と『du』はディスク容量トラブル対応の第一歩となる必須コマンドです。df -h でファイルシステム全体を俯瞰し、Use% が高いマウントポイントを特定してから、du -h --max-depth=1 でドリルダウンしていくのが基本的な調査手順です。容量には余裕があるのに「No space left on device」が発生する場合は、df -i で inode の枯渇を疑ってください。メールキューや一時ファイルが大量に積み上がると inode が先に尽きることがあります。大容量ファイルの特定には find -size が有効で、古いバックアップやローテーションされていない肥大化ログを素早く発見できます。ログの肥大化を根本から防ぐには logrotate の設定を見直してください。また、Linux のディレクトリ構成(FHS)を理解しておくと、du の調査結果をもとにどのディレクトリを重点的に調べるべきか判断しやすくなります。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。