
Linuxを使っていて「ディスク容量が足りない」と突然言われた経験はありませんか。
サーバーの運用では、気がつかないうちにログやファイルが溜まり続け、ある日いきなり容量不足でシステムが動かなくなることがあります。
そのときに役立つのが「dfコマンド」と「duコマンド」です。では、この2つのコマンドはどう違うのでしょうか。
dfはシステム全体のディスクの空き容量を確認するのに便利ですが、どのディレクトリが大きな容量を使っているのかまでは分かりません。一方でduはディレクトリやファイル単位での容量を確認でき、どこに容量の偏りがあるのかを掘り下げて調べられます。
つまり、dfとduは「全体を俯瞰する」「詳細を掘り下げる」という役割を補い合う関係なのです。
これらを上手に使い分けることで、容量不足の原因を素早く特定し、システムを安定稼働させることができます。
Linuxの基礎知識 🔴 ディスク・ファイル系
📌 データを守り効率的に扱うためのストレージ管理スキル
└─【Linuxの基礎知識】ディスク・ファイル系でよくあるトラブルと解決の入口
├─ 【Linuxの基礎知識】ファイルシステムを極める!ディレクトリ構造とその関連性を解説
├─ 【Linuxの基礎知識】ディレクトリとファイル操作を完全マスター!初心者向けガイド
├─ 【Linuxの基礎知識】リンクとiノードを理解してファイル管理をマスターしよう
├─ 【Linuxの基礎知識】ディスク管理の完全ガイド!初心者から実践までを徹底解説
├─ 【Linuxの基礎知識】再起動時に入れ替わるデバイス名「sdX」を固定したい
├─ 【Linuxの基礎知識】df / duコマンドによる容量解析とncdu・iotopでの応用監視
└─ 【Linuxの基礎知識】mount / umountとfstabの基本と応用
dfコマンドとは

dfコマンドは、Linux環境でディスク全体の使用状況を確認するために利用される基本的なコマンドです。サーバー運用やシステム監視の現場では、容量不足による障害を未然に防ぐために必須のツールとして使われています。
dfコマンドの基本概要
dfコマンドは「disk free」の略で、現在マウントされているファイルシステムの容量や使用率、残りの空き容量などを一覧で表示します。
特定のオプションを付けることで、より見やすく実用的な形式に整形できます。
df
【出力例】
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 41151872 8048520 30903352 21% /
tmpfs 2048576 0 2048576 0% /dev/shm
dfコマンドで取得できる情報の種類
dfコマンドを使うことで、次のような情報を確認できます。これらの情報を定期的にチェックすることで、容量不足や障害の兆候をいち早く把握することが可能です。
| 項目 | 説明 |
|---|---|
| Filesystem | 対象となるデバイス名やパーティション |
| 1K-blocks | 総ディスク容量(1KB単位) |
| Used | 使用中の容量 |
| Available | 残りの空き容量 |
| Use% | 使用率(パーセンテージ) |
| Mounted on | マウントポイント(利用されているディレクトリ) |
dfコマンドを使うメリット
dfコマンドを利用する最大のメリットは、システム全体のディスク容量を即座に把握できる点です。特にサーバー運用においては、使用率が高まる前に容量不足を検知することが障害予防につながります。また、オプションを指定することで見やすい単位に変換でき、管理者が直感的に容量を把握できるのも利点です。
df -h
【出力例】
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 7.7G 29G 21% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
duコマンドとは

duコマンドは、Linux環境でディレクトリやファイルごとのディスク使用量を確認するための基本的なコマンドです。
dfコマンドがシステム全体の空き容量を確認するのに対し、duコマンドはどのディレクトリが容量を消費しているのかを詳細に調べるのに適しています。
サーバー運用やトラブルシュートの場面で、容量不足の原因を特定するために欠かせないツールです。
duコマンドの基本概要
duは「disk usage」の略で、指定したディレクトリやファイルがどれだけの容量を使用しているかを表示します。オプションを組み合わせることで、階層ごとの使用量を分かりやすく表示でき、管理者が問題箇所を見つけやすくなります。
du
【出力例】
8 ./bin
24 ./lib
120 ./log
152 .
duコマンドで取得できる情報の種類
duコマンドでは、ファイルやディレクトリ単位での容量を確認できます。特にオプションを付与することで、結果を人間が読みやすい単位に変換したり、階層ごとの合計を確認したりすることが可能です。
| 項目 | 説明 |
|---|---|
| ディレクトリ容量 | 各ディレクトリの使用量を表示 |
| ファイル容量 | 指定したファイルの使用量を表示 |
| 階層別集計 | サブディレクトリごとの容量を個別に表示 |
| 合計容量 | 指定ディレクトリ全体の容量を合算して表示 |
duコマンドを使うメリット
duコマンドを利用することで、容量不足の原因を迅速に特定できる点が最大の利点です。
例えばログディレクトリだけが肥大化している場合や、一部のユーザーが大きなファイルを配置している場合などを容易に発見できます。
また、オプションを指定することで見やすい単位に変換でき、容量の大きな順に並べ替えることで効率的に問題箇所を洗い出せます。
du -h --max-depth=1
【出力例】
4.0K ./bin
12K ./lib
200M ./log
210M .
df / duコマンドの導入手順
dfコマンドとduコマンドは、多くのLinuxディストリビューションで標準的に利用できます。
しかし最小構成でインストールした環境やカスタム環境では含まれていない場合があります。そのため、確実に利用可能にするには coreutils パッケージを導入・確認することが必要です。
ここでは RHEL系LinuxとDebian系Linuxの両方について、インストール手順と出力例を統一した形で示します。
パッケージのインストール方法
RHEL系Linux(AlmaLinux / Rocky / RHEL)の場合は以下のコマンドを実行します。
sudo dnf install coreutils -y
Debian系Linux(Ubuntuなど)の場合は以下のコマンドを実行します。
sudo apt-get install coreutils -y
【出力例】
パッケージ coreutils はすでにインストール済みです。
依存関係はすべて解決済みです。
追加のインストール作業は不要です。
完了しました。
この出力は「すでに coreutils が導入されているため、新たなインストール処理は実行されなかった」という意味です。実際の環境によって細かなメッセージは異なりますが、どちらのディストリビューションでも「df と du を含む coreutils が利用可能」という点は同じです。
もし強制的に再インストールしたい場合は以下のコマンドを実行します。
sudo dnf reinstall coreutils -y
sudo apt-get install --reinstall coreutils -y
dfコマンドの基本的な使い方
dfコマンドはディスク容量の全体像を把握するのに非常に有効です。オプションを組み合わせることで、読みやすく整理された情報を取得できます。ここでは基本的な使い方を解説します。
dfコマンドには多くのオプションがありますが、よく使うものは限られています。以下の表は日常的によく利用されるオプションの一覧です。
| オプション | 説明 |
|---|---|
| -h | 容量を人間が読みやすい単位(KB/MB/GB)で表示 |
| -T | ファイルシステムの種類を表示 |
| -i | inode使用状況を表示 |
| -a | マウントされていないものも含めて全て表示 |
基本表示(オプションなし)
オプションを付けずに実行すると、マウントされているファイルシステムごとの容量が表示されます。
df
【出力例】
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
devtmpfs 4096 0 4096 0% /dev
tmpfs 390628 0 390628 0% /dev/shm
tmpfs 156252 16540 139712 11% /run
/dev/vda2 103015932 11086316 87509668 12% /
tmpfs 78124 0 78124 0% /run/user/1000
詳細表示(拡張オプション)
より詳細に確認したい場合はオプションを組み合わせます。特に -h や -T は容量とファイルシステムの種類を把握するのに便利です。
df -hT
【出力例】
ファイルシス タイプ サイズ 使用 残り 使用% マウント位置
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 382M 0 382M 0% /dev/shm
tmpfs tmpfs 153M 17M 137M 11% /run
/dev/vda2 ext4 99G 11G 84G 12% /
tmpfs tmpfs 77M 0 77M 0% /run/user/1000
全体表示(システム全体の容量)
システム全体を俯瞰する際には -h オプションを使うことで容量の確認が容易になります。全体の空き容量や使用率を直感的に把握できます。
df -h
【出力例】
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 382M 0 382M 0% /dev/shm
tmpfs 153M 17M 137M 11% /run
/dev/vda2 99G 11G 84G 12% /
tmpfs 77M 0 77M 0% /run/user/1000
このように、dfコマンドはオプションの使い分けによって全体像の確認から詳細な情報の把握まで柔軟に対応できます。
duコマンドの基本的な使い方
duコマンドはディレクトリやファイルごとの容量を調べるのに便利なコマンドです。特定のディレクトリや階層構造を詳細に把握できるため、容量不足の原因を特定する場面で役立ちます。ここでは基本的な使い方と代表的なオプションについて解説します。
duコマンドはオプションを組み合わせることで、容量の表示形式や対象範囲を柔軟に指定できます。以下に代表的なオプションをまとめます。
| オプション | 説明 |
|---|---|
| -h | 人間が読みやすい単位(KB/MB/GB)で表示 |
| -s | 指定したディレクトリやファイルの合計のみを表示 |
| --max-depth=N | N階層までのディレクトリ容量を表示 |
| -a | ディレクトリだけでなくファイル単位の容量も表示 |
基本表示(オプションなし)
オプションを付けずに実行すると、ディレクトリやファイルの容量をブロック単位で表示します。
du
【出力例】
8 ./bin
24 ./lib
120 ./log
152 .
条件付き表示(特定ディレクトリ指定)
特定のディレクトリを指定すれば、そのディレクトリ配下の容量だけを確認できます。よく利用するのはログディレクトリなどの容量確認です。
du -h /var/log
【出力例】
4.0K /var/log/httpd
120M /var/log/audit
200M /var/log
階層表示(ディレクトリごとの容量確認)
ディレクトリごとの容量を階層的に確認する場合は --max-depth オプションを使います。数値を指定することで階層の深さを制御できます。
du -h --max-depth=1 /home
【出力例】
2.0G /home/user1
5.5G /home/user2
7.5G /home
このように duコマンドを利用することで、どのディレクトリがどれだけ容量を消費しているかを簡単に確認できます。
df / duコマンドによる応用・拡張
dfコマンドとduコマンドは単発で実行するだけでなく、運用に組み込むことでより大きな効果を発揮します。長期的な監視やログ管理、保存先の工夫を行うことで、容量不足によるトラブルを未然に防ぐことが可能になります。ここでは代表的な応用例を紹介します。
長期監視(cronによる定期収集)
ディスク容量の変化を長期的に追跡するには、cronを使って定期的にdfやduを実行し、結果をファイルに保存します。これにより容量の推移を比較でき、異常な増加を早期に検知できます。
crontab -e
以下のように設定すると、毎日0時にdfの結果を保存します。
0 0 * * * df -h >> /var/log/disk_usage.log
【出力例(保存されるログイメージ)】
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 382M 0 382M 0% /dev/shm
tmpfs 153M 17M 137M 11% /run
/dev/vda2 99G 11G 84G 12% /
tmpfs 77M 0 77M 0% /run/user/1000
ログ管理と保存期間
収集したdfやduの結果は、ログとして一定期間保管するのが望ましいです。保存期間を無制限にすると逆にディスクを圧迫するため、logrotateなどを活用して古いログを自動的に削除・圧縮すると効率的です。
/etc/logrotate.d/disk_usage
【設定例】
/var/log/disk_usage.log {
weekly
rotate 8
compress
missingok
notifempty
}
この設定ではログを毎週ローテーションし、8世代分を圧縮保存するため、2か月分の記録を残せます。
ディレクトリ構成と保存場所の工夫
容量監視を効果的に行うには、ログや出力ファイルの保存場所を適切に設計することが重要です。特に監視用ログが大量に溜まってシステム領域を圧迫するのは本末転倒です。監視専用のディレクトリを切り分けて管理する方法が有効です。
mkdir -p /var/monitor/logs
dfやduの結果を以下のように指定して保存することで、監視ログを一か所に集約できます。
df -h >> /var/monitor/logs/disk_usage.log
このように保存場所を分離して管理することで、ログ肥大化によるシステム障害を防ぎ、運用を安定させることができます。
df / duコマンドの実践的な活用例
dfコマンドとduコマンドは日常的な容量確認だけでなく、障害対応や監査、さらには他ツールと組み合わせることでより実用的に活用できます。ここでは具体的なシーンを想定した活用例を紹介します。
トラブルシュートや切り分け手順
システムが容量不足に陥ったときは、まず df コマンドで全体のディスク使用率を確認します。
df -h
【出力例】
ファイルシス サイズ 使用 使用可 使用% マウント位置
/dev/vda2 40G 38G 2.0G 95% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
この結果から、ルートパーティション(/)が 95% 使用されていることがわかります。次の調査対象は「ルート直下のどのディレクトリが容量を消費しているか」です。Linux サーバーではログやキャッシュが集中する /var が肥大化の原因になりやすいため、最初に /var を調べます。
du -h --max-depth=1 /var
【出力例】
4.0K /var/tmp
200M /var/lib
15G /var/log
15G /var
この結果から、/var/log が 15GB を消費しており、容量不足の主因であることが特定できます。
特定の利用シーン(大容量検知や監査)
定期的に大容量ファイルを検知したり、監査の一環として記録を残す場合にも有効です。特にログディレクトリやユーザーホームディレクトリの監査に使われます。
du -ah /home | sort -hr | head -n 10
【出力例】
2.5G /home/user1/backup.tar
1.2G /home/user1/videos/movie.mp4
800M /home/user2/dbdump.sql
...
このように並べ替えて上位のファイルを確認することで、大容量ファイルの存在を容易に把握できます。
他ツールとの組み合わせ(ncdu, iotopなど)


df や du コマンドだけでは十分に容量管理ができない場合もあります。
その際は補助的なツールを組み合わせることで、より直感的かつ効率的に解析できます。ここでは代表的な ncdu と iotop を紹介します。
ncduによる容量解析
ncdu は du コマンドを対話的に操作できる補助ツールです。ディレクトリごとの容量を棒グラフで視覚的に表示し、問題箇所を直感的に把握できるのが特徴です。
ncduのインストール手順
ncdu は du コマンドを対話的に利用できる補助ツールです。導入されているかどうかを確認するには、バージョン表示を行います。
ncdu -v
【出力例】
ncdu 1.15.1
上記のようにバージョンが表示されれば導入済みです。導入されていない場合は、以下のコマンドでインストールしてください。
RHEL系Linux(AlmaLinux / Rocky / RHEL)の場合:
sudo dnf install ncdu -y
Debian系Linux(Ubuntuなど)の場合:
sudo apt-get install ncdu -y
【出力例】
パッケージ ncdu は新規にインストールされました。
依存関係はすべて解決済みです。
完了しました。
ncduの利用例
インストールが完了したら、du コマンドの代わりに ncdu を使ってディレクトリ容量を確認できます。
例として /var ディレクトリを解析します。
ncdu /var
【出力例】
ncdu を実行すると、ディレクトリごとの容量が対話的に表示されます。矢印キーで移動でき、 ? を押すと操作ヘルプが表示されます。出力には棒グラフや記号が付与され、どのディレクトリが大容量を消費しているかを直感的に把握できる点が du よりも優れています。
ncdu 1.22 ~ Use the arrow keys to navigate, press ? for help
--- /var -----------------------------------------------------------------------------------------------------------
2.0 GiB [################] /spool
305.9 MiB [## ] /log
177.2 MiB [# ] /cache
166.1 MiB [# ] /lib
44.0 KiB [ ] /tmp
…
このように、ncdu を利用すると数値だけの du コマンドと違い、容量の大小が視覚的に表現されるため、問題箇所の切り分けが非常に早く行えます。特にログ肥大や一部ディレクトリの異常増加を調査する際に効果的です。
iotopによるI/O監視
iotop はディスクの読み書き状況をリアルタイムに監視できるツールです。容量不足の調査だけでなく、「どのプロセスがディスクを酷使しているのか」を特定できるため、性能劣化や障害の切り分けにも役立ちます。
iotopのインストール手順
iotop が導入済みかどうかを確認するには、バージョンを表示します。
iotop --version
【出力例】
iotop version 0.6
バージョンが表示されれば導入済みです。導入されていない場合は以下のコマンドでインストールしてください。
RHEL系Linux(AlmaLinux / Rocky / RHEL)の場合:
sudo dnf install iotop -y
Debian系Linux(Ubuntuなど)の場合:
sudo apt-get install iotop -y
【出力例】
パッケージ iotop は新規にインストールされました。
依存関係はすべて解決済みです。
完了しました。
iotopの利用例
インストールが完了したら、root 権限で実行することでディスク I/O の使用状況をリアルタイムに確認できます。
sudo iotop
【出力例】
以下は iotop を実行した際の出力例です。サマリー行でシステム全体の読み書き量を把握し、その下で各プロセスのディスク使用状況を確認できます。
Total DISK READ : 50.00 M/s | Total DISK WRITE : 10.00 M/s
Actual DISK READ: 48.00 M/s | Actual DISK WRITE: 9.50 M/s
TID PRIO USER DISK READ DISK WRITE> COMMAND
2456 be/4 mysql 45.00 M/s 8.00 M/s mysqld
3102 be/4 root 3.00 M/s 1.20 M/s rsync
1254 be/4 apache 1.20 M/s 0.00 B/s httpd
見方のポイント
- サマリー行 を見れば、システム全体で「大量の読み込み 50MB/s」が発生していることが一目でわかる
- プロセス一覧 を見ると、mysqld がその大半を占めており、ボトルネックの原因であることが明確
- 他に rsync や httpd が動いているが、影響度は小さい
iotop の各列が何を意味するのかを表にまとめると、以下のようになります。
| 列名 | 内容 |
|---|---|
| Total DISK READ / WRITE | システム全体のディスク読み込み/書き込みの合計速度 |
| Actual DISK READ / WRITE | キャッシュを考慮した実際の物理デバイスへの I/O 速度 |
| TID | スレッドID。プロセス単位ではなくスレッド単位で表示される |
| PRIO | I/O 優先度(be/4 は Best Effort レベル4 など) |
| USER | そのスレッドを実行しているユーザー名 |
| DISK READ / WRITE | そのスレッドが発生させている読み込み/書き込み速度 |
| COMMAND | 該当スレッドのコマンド名またはカーネルスレッド名 |
このように iotop を利用すれば、ディスク使用率の数値だけではわからない「I/O 負荷の発生源」を特定できます。df や du と組み合わせることで、トラブルシュートや性能監視をより効率的に行うことができます。
df / duコマンド利用時の注意点
df や du コマンドはディスク容量の確認に欠かせない基本コマンドですが、利用する際にはいくつかの注意点があります。
特に運用環境では、不必要なトラブルを避けるためにも事前に理解しておくことが大切です。
ここではログ容量、性能面の影響、運用上の落とし穴について解説します。
ログ容量の管理ポイント
システムの容量不足の原因で最も多いのはログの肥大化です。特に /var/log ディレクトリにはアプリケーションやサービスのログが集中し、放置すると急激にディスクを圧迫することがあります。
定期的にログをローテーションし、不要な古いログを削除する仕組みを整えておくことが重要です。
du -h --max-depth=1 /var/log
【出力例】
4.0K /var/log/httpd
200M /var/log/audit
15G /var/log
このように du コマンドで確認すれば、どのログが肥大化しているかを即座に特定できます。
性能への影響と実行時の負荷
df コマンドは比較的軽量ですが、du コマンドは対象ディレクトリ全体を走査するため、大規模なファイルシステムでは負荷がかかります。
特にディレクトリ数やファイル数が膨大な場合、処理が完了するまでに時間がかかり、I/O 負荷を引き起こすこともあります。
そのため、本番環境で大規模なパスに対して実行する際は注意が必要です。
du -sh /
【出力例】
du: '/proc/1234/task/1234/fd/4' にアクセスできません: 許可がありません
du: '/proc/5678/fdinfo/3' にアクセスできません: 許可がありません
20G /
このようにアクセス権限の制約や負荷が伴うことがあるため、実行対象を限定するのが望ましいです。
運用上の落とし穴と回避策
df と du の結果が一致しないケースがあります。これは、削除済みファイルがプロセスによって開かれたままになっている場合などに発生します。このとき df では使用量にカウントされますが、du では表示されません。
lsof | grep deleted
【出力例】
mysqld 1234 root 4u REG 253,0 104857600 /var/log/mysql.log (deleted)
この状態では、該当プロセスがファイルを掴み続けているため、ディスク容量が解放されません。
【回避策】
- 該当プロセスを特定し、再起動してファイルハンドルを解放する
- サービス再起動が困難な場合は、ログの出力先を一時的に切り替え、新しいファイルに書き込みを移す
- 根本的には logrotate などを利用して定期的にログをローテーションし、削除ではなく安全に切り替える運用を徹底する
このように「なぜ df と du の結果が異なるのか」を理解し、具体的な対処手順を用意しておくことで、容量不足に直面しても迅速にリカバリできます。
まとめ

df と du コマンドは、Linux システムのディスク容量を把握するための基本的なツールです。df では全体の使用率を確認し、du ではディレクトリ単位での詳細な容量を特定できます。さらに、ncdu を使えば視覚的にディレクトリ構成を解析でき、iotop を利用すればどのプロセスがディスク I/O に負荷を与えているかを把握できます。
運用の現場では、df で全体の状態を確認 → du で問題箇所を特定 → ncdu で視覚的に分析 → iotop で負荷の原因プロセスを追跡、という流れを組み合わせることで、効率的なトラブルシュートが可能になります。また、ログの肥大化や削除済みファイルのハンドル保持といった運用上の落とし穴にも注意し、定期的な監視やログローテーションを徹底することが重要です。
これらのコマンドと補助ツールを適切に活用すれば、容量不足や性能劣化といったトラブルを未然に防ぎ、安定したシステム運用につなげることができます。
次のおすすめ記事
実践環境を整える
ここまで学んだ知識を実際に試すには、Linuxを動かす環境が必要です。手軽に始めるならVPSを利用するのがおすすめです。
→ VPS徹底比較!ConoHa・さくら・Xserverの選び方
VPSを利用してLinux環境を準備したら、実際の設定は下記の記事が参考になります。
→ VPSに開発環境を自動構築する方法|Apache+Tomcat+PostgreSQL



