Linux初心者がサーバー障害で最初にぶつかる壁が、ディスク容量の管理です。
Windowsならエクスプローラーで一目でわかる空き容量も、Linuxではコマンドで確認します。
覚えるコマンドはたった2つ。df(ディスク全体の空き容量)とdu(特定ディレクトリの使用量)です。
この記事では、dfとduの基本的な使い方から、「どのディレクトリが容量を食っているか」を特定する実践的な手順まで、完全初心者でも迷わないよう解説します。
この記事のポイント
・dfコマンドでディスク全体の空き容量を一覧で確認できる
・duコマンドで「どのディレクトリが容量を使っているか」を特定できる
・df -hとdu -sh */の組み合わせが現場で最もよく使われる
・ディスク満杯(100%)になる前に定期的に確認する習慣が重要
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
dfコマンドとduコマンドの違い
ディスク管理で使う2つのコマンドの違いを最初に整理しておきましょう。| コマンド | 何を調べるか | 主な用途 |
|---|---|---|
df |
ファイルシステム(マウントポイント)ごとの空き容量 | 「どのディスクが何%使われているか」を確認する |
du |
指定したディレクトリ・ファイルの使用量 | 「どのディレクトリが容量を食っているか」を特定する |
ディスクが逼迫(ひっぱく)してきたら、まずdfで全体を把握し、次にduで原因のディレクトリを特定する、という流れが現場での定番手順です。
dfコマンドの使い方|ディスクの空き容量を確認する
1. 基本的なdfコマンドの実行
オプションなしで実行すると、1KB単位(デフォルト)で表示されます。# dfコマンド(基本) $ df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 1024576 0 1024576 0% /dev tmpfs 1032148 0 1032148 0% /dev/shm tmpfs 1032148 9256 1022892 1% /run /dev/xvda1 20971008 4523016 16447992 22% / tmpfs 1032148 0 1032148 0% /sys/fs/cgroup /dev/xvdb 10485760 987392 9498368 10% /var/log tmpfs 206428 0 206428 0% /run/user/1000
| 列名 | 意味 |
|---|---|
| Filesystem | デバイス名(/dev/xvda1 など) |
| 1K-blocks | ディスクの合計容量(1KBブロック単位) |
| Used | 使用済み容量 |
| Available | 空き容量 |
| Use% | 使用率(100%に近いほど危険) |
| Mounted on | マウントポイント(/ は「ルート」全体) |
2. 人間が読みやすい単位で表示する(-h オプション)
現場ではほぼ必ず-h(human-readable)オプションを付けます。GB・MB単位で表示されるため、一目で容量を把握できます。# -h オプションで人間が読みやすい単位に変換 $ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1001M 0 1001M 0% /dev tmpfs 1008M 0 1008M 0% /dev/shm tmpfs 1008M 9.1M 999M 1% /run /dev/xvda1 20G 4.4G 16G 22% / tmpfs 1008M 0 1008M 0% /sys/fs/cgroup /dev/xvdb 10G 965M 9.1G 10% /var/log
現場では Use% が 80% を超えたら要注意、90% を超えたら緊急対応が目安です。
3. 特定のマウントポイントだけ確認する
# ルートパーティション(/)だけを確認 $ df -h / Filesystem Size Used Avail Use% Mounted on /dev/xvda1 20G 4.4G 16G 22% / # /var/log だけを確認 $ df -h /var/log Filesystem Size Used Avail Use% Mounted on /dev/xvdb 10G 965M 9.1G 10% /var/log
4. ファイルタイプ(ファイルシステム種別)も表示する(-T オプション)
# -T でファイルシステムの種別も表示 $ df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 1001M 0 1001M 0% /dev /dev/xvda1 xfs 20G 4.4G 16G 22% / /dev/xvdb ext4 10G 965M 9.1G 10% /var/log
duコマンドの使い方|どのディレクトリが容量を使っているか特定する
dfで「ディスクが80%埋まっている」ことはわかりましたが、どのディレクトリが原因かはわかりません。その特定に使うのがduコマンドです。1. 基本的なduコマンドの実行
# カレントディレクトリの使用量を表示 $ du 4 ./bash_history 8 ./.ssh 12 ./logs/access 156 ./logs 180 .
2. 合計のみを人間が読みやすい単位で表示する(-sh オプション)
# -s(サマリー)+ -h(人間向け単位)で合計のみ表示 $ du -sh /var/log 2.8G /var/log # 複数のディレクトリをまとめて確認 $ du -sh /var /tmp /home 2.8G /var 124M /tmp 456M /home
3. 直下のディレクトリごとに使用量を確認する(-sh */)
「/var/log の中で、どのサブディレクトリが大きいか」を確認するときの実践的な使い方です。# /var/log 直下の各ディレクトリの使用量を確認 $ du -sh /var/log/* 4.0K /var/log/audit 1.2G /var/log/httpd 156M /var/log/messages 48M /var/log/nginx 324K /var/log/secure 512M /var/log/yum.log
4. 使用量の大きい順に並び替えて表示する
ディレクトリが多い場合、sortと組み合わせると一番大きなディレクトリを上位に表示できます。# 使用量の大きい順(降順)に並び替え $ du -sh /var/log/* | sort -rh 1.2G /var/log/httpd 512M /var/log/yum.log 156M /var/log/messages 48M /var/log/nginx 4.0K /var/log/audit 324K /var/log/secure
sort -rh の -r は逆順(大きい順)、-h は人間向け単位(G・M・K)を正しく比較するオプションです。5. 特定の深さまでのみ表示する(--max-depth オプション)
# /var の1階層下まで(直下のみ)表示 $ du -h --max-depth=1 /var 8.0K /var/db 52K /var/empty 2.8G /var/log 124K /var/run 488M /var/spool 3.3G /var
ディスク容量が逼迫した時の調査手順
実際に「ディスクが90%を超えた!」という場面での現場対応手順を整理します。1. どのファイルシステムが逼迫しているか確認
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 20G 19G 180M 99% / # ← ここが問題! /dev/xvdb 10G 965M 9.1G 10% /var/log
2. 原因ディレクトリを絞り込む
# ルート直下のディレクトリを大きい順に確認 $ du -sh /* 2>/dev/null | sort -rh 12G /usr 4.2G /opt 1.8G /home ... # /opt の中をさらに掘り下げる $ du -sh /opt/* | sort -rh 3.5G /opt/app_logs 400M /opt/wordpress
3. 大きなファイルを直接探す
# 100MB以上のファイルを検索 $ find / -size +100M -type f 2>/dev/null /opt/app_logs/debug.log /var/core/core.12345
dfとduのオプションまとめ
| やりたいこと | コマンド |
|---|---|
| ディスク全体の空き容量を確認(人間向け単位) | df -h |
| 特定ディレクトリの合計使用量を確認 | du -sh /path/to/dir |
| 直下のディレクトリごとに使用量を確認 | du -sh /path/to/dir/* |
| 使用量の大きい順に並び替えて表示 | du -sh /path/to/dir/* | sort -rh |
| 特定の深さまでのみ表示 | du -h --max-depth=1 /path |
| ファイルシステム種別も表示 | df -hT |
| 100MB以上のファイルを検索 | find / -size +100M -type f 2>/dev/null |
トラブルシュート|よくあるエラーと対処法
「df: /run/user/1000/gvfs: Permission denied」が出る
一般ユーザーで実行すると、アクセス権のないマウントポイントでこのエラーが表示されることがあります。表示は出ますが、他のファイルシステムの結果は正しく表示されるため、問題ありません。完全にエラーをなくしたい場合は sudo で実行します。「du: cannot access 'xxx': No such file or directory」が出る
指定したディレクトリが存在しない場合のエラーです。パスのスペルを確認してください。dfでは容量に余裕があるのにファイルを書き込めない
inode(アイノード)が枯渇している可能性があります。inode はファイルの管理情報を記録する領域で、小さなファイルを大量に作ると使い切ることがあります。以下のコマンドで確認できます。# inode の使用状況を確認(-i オプション) $ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvda1 1310720 1310720 0 100% / # ← inode が 100%!
本記事のまとめ
dfとduは、Linuxを使い始めたら最初に覚えるべきコマンドの一つです。・df -h:ディスク全体の空き容量を人間が読みやすい単位で確認する
・du -sh /path/*:どのディレクトリが容量を消費しているかを特定する
・du -sh /* | sort -rh:使用量の大きいディレクトリを上位から確認する
・df -i:inode の使用状況を確認する(容量に余裕があるのに書けない時に使う)
セミナーで3,100名以上の受講生を指導してきた経験から言うと、「ディスク管理をきちんとできる人」と「なんとなく使っている人」の差は、このdfとduを使いこなせるかどうかにかかっています。障害が起きてから慌てるのではなく、定期的に確認する習慣をつけることが、現場で信頼されるエンジニアへの第一歩です。
Linuxのディスク管理をさらに深めたい方は、次のステップとして「tarコマンドで圧縮・解凍(展開)する方法」でファイルアーカイブを学ぶと、容量削減の実践力が身につきます。
関連する実務スキル記事
Linux入門として基礎を固めたら、以下の実務スキル記事でさらにステップアップしましょう。7つのテーマを体系的に学べます。・シェルスクリプト:crontabコマンドの設定と書き方|動かない時のログ確認まで ~ 定期的なディスク確認を自動化する
・セキュリティ:chmodコマンドで権限を変更する方法|755と644の違いや一括変更も ~ ファイルのアクセス権を正しく設定する
・サーバー構築:systemctlコマンドの使い方|サービスの起動・停止・自動起動設定 ~ サービス管理をマスターする
・トラブルシューティング:psコマンドでプロセスを確認する方法|auxと-efの違いやgrep検索も ~ ディスクを使い切るプロセスを特定する
・ネットワーク:ssコマンドでソケット情報を確認する方法|LISTEN・ESTABの見方やポート確認も ~ ネットワーク接続状態を把握する
・ファイルシステム:tarコマンドで圧縮・解凍(展開)する方法|必須のzxvfやディレクトリ指定も ~ ファイルを圧縮して容量を節約する
・現場コラム:grepコマンドで文字列を検索する方法|複数ファイルやディレクトリ除外も ~ ログファイルから問題箇所を素早く見つける
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
dfとduによるディスク管理をさらに深め、実務で使えるLinuxスキルを身につけたい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Linuxのログファイル入門|tailとlessでサーバーの状態を読む方法
- 前のページへ:Linuxのネットワーク確認入門|ipコマンドとpingで接続状態を調べる方法
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます