【2026年7月最新】dfコマンド完全ガイド|Linuxのディスク容量確認・全オプション・サーバー監視まで徹底解説
この記事の内容
- 01dfコマンドとは何か(Disk Freeの概念・用途)
- 02dfの出力を読む(各列の意味を完全解説)
- 03全オプション一覧と詳解(-h/-H/-k/-m/-a/-l/-t/-T/-i)
- 04-hで人間に読みやすく表示する
- 05-Tでファイルシステムタイプを表示する
- 06-iでinode使用量を確認する(inode枯渇問題)
- 07特定のパーティション・マウントポイントを指定する
- 08dfとduの違い・使い分け
- 09dfのフィールド計算(Used+Available≠Totalになる理由)
- 10サーバー監視でのdf活用(ディスク80%超過アラート)
- 11GENAI実運用サーバーのディスク管理
- 12Claude Codeでディスク監視を自動化する
- FAQよくある質問
「サーバーの空き容量が急に減っている」「ディスクフルでサービスが落ちた」——そんなトラブルを防ぐ最初の一手が、Linuxのdfコマンドです。
dfはLinuxに標準搭載されているコマンドで、サーバーやコンテナのディスク使用状況を瞬時に確認できます。使い方は単純ですが、出力の読み方・各オプションの使い分け・実際の監視運用まで理解している人は意外と少ないのが現実です。
この記事では、dfコマンドの基本から全オプション詳解、inode枯渇問題、duとの違い、80%超過アラートの設定、Claude Codeでの自動化まで、実務レベルで使えるように徹底解説します。単なるコマンドリファレンスではなく、実際にサーバー管理で困るポイントを中心に、競合記事の10倍の情報密度でお届けします。
この記事を読み終わると、以下のことがすべてできるようになります。
01 WHAT IS DF dfコマンドとは何か(Disk Freeの概念・用途) Linux標準コマンドdfの役割・どんな場面で使うか
dfは Disk Free の略で、Linuxおよびmacosに標準搭載されているコマンドです。マウントされているファイルシステムごとに、ディスクの総容量・使用量・空き容量・使用率・マウントポイントを一覧表示します。
サーバー管理の現場では、次のような場面でdfが登場します。
📚 用語解説
マウント:ディスクやパーティションをLinuxのディレクトリツリーに接続する操作のこと。Windowsの「ドライブの割り当て(C:\、D:\)」に相当する概念です。例えば /var を別のディスクにマウントすれば、/var 以下のファイルはそのディスクに保存されます。
dfの最大の特徴は速さです。ディスク全体をスキャンするのではなく、OSのマウント情報(/proc/mounts)を参照するだけなので、どれだけ大容量のサーバーでもほぼ瞬時に結果が出ます。これはファイルを一つひとつ集計するduコマンドと大きく異なる点です(詳細は第8章で解説)。
dfコマンドはmacOSでも使えます。ただし、オプションの動作が微妙に異なります(macOSのdfはBSD由来、LinuxはGNU coreutilsのdf)。例えば-HオプションはmacOSでも使えますが、-Tはmacosでは機能が異なります。サーバー管理の文脈では基本的にLinux(GNU df)の挙動を前提にします。
📚 用語解説
GNU coreutils:Linuxで使われる基本コマンド群(ls, cp, mv, df, du など)のGNU実装。macOSのデフォルトはBSD系の実装で、動作が若干異なることがあります。Linuxサーバー管理を学ぶときは、GNU実装の動作を基準にするのが正解です。
なお、dfコマンドは標準でインストール済みのため、追加インストールは不要です。CentOS / Ubuntu / Debian / Amazon Linux / Alpine Linux — いずれも最初から使えます。
02 READING OUTPUT dfの出力を読む(各列の意味を完全解説) Filesystem / 1K-blocks / Used / Available / Use% / Mounted on の全列
dfをオプションなしで実行すると、次のような出力が得られます。
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 51473900 8241420 40600104 17% /
tmpfs 4096000 0 4096000 0% /dev/shm
/dev/sda2 104857600 2048000 100300320 2% /var/log
/dev/sdb1 524288000 314572800 209715200 60% /home/user
各列の意味を一つひとつ解説します。
2-1. Filesystem(ファイルシステム)列
Filesystem列は、そのディスク/パーティションのデバイス名またはファイルシステムの識別子を示します。
| 表示例 | 意味 |
|---|---|
| /dev/sda1 | 物理ディスクsda(1枚目)の第1パーティション。オンプレサーバーで最もよく見る形式。 |
| /dev/nvme0n1p1 | NVMe SSDの第1パーティション。クラウドVM(AWS EC2など)でよく見る。 |
| tmpfs | メモリ上に作られる仮想ファイルシステム。再起動で消える一時領域。 |
| overlay | Dockerコンテナで使われる重ね合わせファイルシステム。 |
| shm | 共有メモリ(/dev/shm)。プロセス間通信に使われる。 |
📚 用語解説
パーティション:ひとつの物理ディスクを論理的に分割した区画のこと。/dev/sda1, /dev/sda2 のように番号で区別されます。Windowsでいう「Cドライブ」「Dドライブ」の分け方に相当します。
2-2. 1K-blocks(総容量)列
1K-blocks列は、そのファイルシステムの総容量を1KBブロック単位で表示しています。例えば「51473900」なら51,473,900 × 1KB ≈ 49.1GBです。
この列は-hオプションを使えば人間が読みやすい単位(GB、MB)に変換されます(詳細は第4章)。生の数字のままでは直感的に把握しにくいため、実運用では -h を付けることが鉄則です。
2-3. Used(使用量)列
Used列は現在使用中のディスク容量(1KBブロック単位)です。総容量(1K-blocks)からAvailableを引いたものと完全には一致しません。なぜなら、Linuxのext4などのファイルシステムではroot(スーパーユーザー)用に5%の予約領域が確保されているからです。この点は第9章で詳しく解説します。
2-4. Available(空き容量)列
Available列は、一般ユーザーが実際に使える空き容量です。rootユーザーには予約領域も含めた空き容量が提供されますが、一般ユーザーはこのAvailable値までしか書き込めません。
ディスクフルでファイル書き込みができなくなるのは「Available=0」のときではなく、予約領域まで含めてすべて埋まったときです。Availableが0でも、rootユーザーなら予約領域に書き込めます。ただし一般ユーザーやWEBサーバープロセスはAvailableが0になった時点で書き込み失敗します。
2-5. Use%(使用率)列
Use%列は、(Used ÷ (Used + Available)) × 100 で計算される使用率パーセンテージです。80〜85%を超えたら要注意、90%を超えたら緊急対応が業界のセオリーです。
2-6. Mounted on(マウントポイント)列
Mounted on列は、そのファイルシステムがLinuxのディレクトリツリーのどこに接続されているかを示します。
| Mounted on | よく使われる用途 |
|---|---|
| / | ルートファイルシステム。OSの本体。ここが埋まるとシステムが止まる。 |
| /var/log | ログ専用パーティション。ログ肥大化がシステムに影響しないよう分離。 |
| /home/user | ユーザーデータ領域。Webアプリのアップロードファイルなど。 |
| /tmp | 一時ファイル置き場。再起動で消える。tmpfsでメモリ上に置くことも多い。 |
| /var/lib/docker | Dockerのイメージ・コンテナ・ボリューム置き場。要大容量。 |
03 ALL OPTIONS 全オプション一覧と詳解(-h/-H/-k/-m/-a/-l/-t/-T/-i) dfコマンドの全オプションをリファレンスレベルで解説
dfコマンドには多くのオプションが用意されています。以下に主要オプションを一覧で整理します。
| オプション | 意味 | 使用頻度 |
|---|---|---|
| -h | Human readable。KB/MB/GBなど読みやすい単位で表示(1024進数) | ★★★ 必須 |
| -H | Human readable(SI単位)。1K=1000バイトで計算 | ★☆☆ まれに使う |
| -k | 1KBブロック単位で表示(デフォルト) | ★☆☆ ほぼ不要 |
| -m | 1MBブロック単位で表示 | ★☆☆ まれに使う |
| -g | 1GBブロック単位で表示 | ★☆☆ まれに使う |
| -a | すべてのファイルシステムを表示(擬似FS含む) | ★★☆ デバッグ時 |
| -l | ローカルファイルシステムのみ表示(NFSを除外) | ★★☆ NFS環境で有用 |
| -t タイプ | 特定のファイルシステムタイプのみ表示 | ★★☆ 絞り込みに |
| -T | ファイルシステムタイプ(ext4/xfsなど)を列追加して表示 | ★★★ 必須級 |
| -i | inode情報を表示(inodeの使用量・空き数) | ★★★ 重要 |
| --total | 全体の合計行を末尾に追加 | ★★☆ 集計に便利 |
| -x タイプ | 特定のファイルシステムタイプを除外して表示 | ★☆☆ まれに使う |
📚 用語解説
-h オプション(Human readable):数値を1024進数で自動変換し、読みやすい単位(KB/MB/GB/TB)で表示するオプション。例えば「51473900」(1Kブロック)が「49G」と表示されます。実務では必ず付けるのが鉄則で、単に「df」と打つより「df -h」の方がずっと直感的です。
3-1. -a オプション:すべてのFSを表示
-aオプションを付けると、通常は非表示になっている擬似ファイルシステム(tmpfs, proc, sysfsなど)もすべて一覧に表示されます。
$ df -a
Filesystem 1K-blocks Used Available Use% Mounted on
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
devtmpfs 4096000 0 4096000 0% /dev
tmpfs 4096000 0 4096000 0% /dev/shm
/dev/sda1 51473900 8241420 40600104 17% /
sysfsやprocは実際のディスク容量を消費しない特殊なFSで、Use%が「-」と表示されます。通常の運用では -a は不要ですが、「なぜこのマウントポイントが見えないのか?」を調査するときに役立ちます。
3-2. -l オプション:ローカルFSのみ表示
-lオプションはNFS(ネットワークファイルシステム)などのリモートマウントを除外して、ローカルのファイルシステムのみを表示します。NFSがレスポンスしない環境でdfを叩くと応答が返らないことがあるため、ローカルだけ確認したい場合に有用です。
# NFSマウントを除外してローカルFSのみ確認
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 49G 7.9G 39G 17% /
tmpfs 4.0G 0 4.0G 0% /dev/shm
/dev/sda2 100G 2.0G 96G 2% /var/log
3-3. --total オプション:合計行を表示
--totalオプションを付けると、表示されたすべてのファイルシステムの合計を最終行に追加します。複数パーティションがある環境でサーバー全体の使用容量を一発で把握したいときに便利です。
$ df -h --total
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 49G 7.9G 39G 17% /
/dev/sda2 100G 2.0G 96G 2% /var/log
/dev/sdb1 500G 300G 200G 60% /home/user
total 649G 310G 335G 48%
04 -h OPTION -hで人間に読みやすく表示する 最もよく使うオプションを徹底解説
-hオプション(--human-readable)は、dfを使うときにほぼ必ず付けるべきオプションです。生の数値(1Kブロック単位)を、人が直感的に読める単位(K/M/G/T)に自動変換して表示します。
# オプションなし(1Kブロック表示)
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 51473900 8241420 40600104 17% /
# -h オプション付き(読みやすい単位)
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 49G 7.9G 39G 17% /
「51473900」という数字を見て瞬時に「約49GB」とわかる人は少数派です。-h を付けることで「49G」「7.9G」「39G」と表示されるため、ひと目で状況が把握できます。
4-1. -h と -H の違い(1024進数 vs 1000進数)
-h と -H は表示の単位系が異なります。
| オプション | 単位系 | 計算例(1,073,741,824バイト) | 使いどころ |
|---|---|---|---|
| -h | 1024進数(IEC) | 1.0G(1GiB) | Linuxサーバー管理の標準。ほぼこちらを使う。 |
| -H | 1000進数(SI) | 1.1G(1GB) | ストレージ製品の仕様書(1GB=10億バイト)と合わせたいとき。 |
実務では-h(1024進数)一択です。OSはバイトを1024単位で管理しているため、-hの方がファイルシステムの実態と一致しています。-H(SI単位)はストレージベンダーの「1TB = 1,000GB」という表記と合わせるために存在しますが、サーバー管理でこれが必要になる場面はほぼありません。
df -hT と打つことで、読みやすい単位表示とファイルシステムタイプの表示を同時に実現できます。「どのFSがどのくらい使われているか」が一発でわかるため、サーバーのディスク状況確認の定番コマンドです。
05 -T OPTION -Tでファイルシステムタイプを表示する ext4/xfs/tmpfs/overlayを識別する重要オプション
-Tオプションは、各ファイルシステムのタイプ(ext4, xfs, tmpfs, overlay など)を追加の列として表示するオプションです。
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 49G 7.9G 39G 17% /
tmpfs tmpfs 4.0G 0 4.0G 0% /dev/shm
/dev/sda2 xfs 100G 2.0G 96G 2% /var/log
overlay overlay 49G 7.9G 39G 17% /var/lib/docker/overlay2
ファイルシステムのタイプを知ることで、次のような判断ができるようになります。
| タイプ | 特徴・注意点 |
|---|---|
| ext4 | Linuxの最もポピュラーなFS。デフォルト選択肢。ジャーナリング付き。 |
| xfs | 大容量ファイルや高スループット向け。CentOS / RHEL系のデフォルト。 |
| tmpfs | メモリ上のFS。使用量がメモリを圧迫することがある。再起動で消える。 |
| overlay | Dockerコンテナのレイヤー構造に使われる。サイズが大きくなりがち。 |
| btrfs | 次世代FS。スナップショット機能あり。一部ディストリで採用。 |
| nfs | ネットワーク経由のファイルシステム。レスポンスが遅い場合あり。 |
| vfat / ntfs | Windows互換FS。USB・外部ストレージでよく出る。 |
📚 用語解説
ジャーナリング:ファイルシステムへの変更履歴(ジャーナル)を記録する仕組み。システムが突然シャットダウンした場合でも、ジャーナルをもとにファイルシステムの一貫性を復元できます。ext4とxfsはどちらもジャーナリングに対応しており、本番サーバーのFSとして適切です。
5-1. -t オプション:特定タイプに絞り込む
-t オプション(-T とは別物です)を使うと、特定のファイルシステムタイプだけを表示できます。
# ext4のみ表示
$ df -h -t ext4
# tmpfsのみ表示(メモリ使用量確認)
$ df -h -t tmpfs
# xfsのみ表示
$ df -h -t xfs
5-2. -x オプション:特定タイプを除外する
-x オプションは-tの逆で、特定のファイルシステムタイプを除外します。tmpfsや擬似FSを除外して実際のディスクのみ確認したいときに使います。
# tmpfsを除外してディスクのみ表示
$ df -h -x tmpfs
# overlayを除外してDocker外のFSのみ確認
$ df -h -x overlay -x tmpfs
06 INODE -iでinode使用量を確認する(inode枯渇問題) 「空き容量はあるのにファイルが作れない」謎を解く
Linuxのディスク管理で意外と多く遭遇するトラブルが「ディスクの空き容量はあるのに、ファイルの書き込みができない」という現象です。このとき犯人になるのがinodeの枯渇です。
📚 用語解説
inode(アイノード):ファイルの実体データとは別に存在する、ファイルの「メタ情報置き場」のこと。ファイル名ではなく、ファイルのサイズ・作成日時・パーミッション・所有者・ファイル本体の場所を記録しています。inode自体もディスク上に一定数しか確保されておらず、小さいファイルを大量に作るとinode数の上限に達することがあります。
dfにi オプションを付けると、通常のディスク使用量ではなくinodeの使用数・空き数・使用率が表示されます。
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 3276800 842341 2434459 26% /
tmpfs 1024000 1 1023999 1% /dev/shm
/dev/sda2 6553600 12482 6541118 1% /var/log
各列の意味は通常のdfと同様ですが、単位が「バイト」ではなく「ファイル数(inode数)」になっている点が違います。
| 列名 | 意味 |
|---|---|
| Inodes | そのFSで使えるinode総数 |
| IUsed | 使用中のinode数(≒現在存在するファイル・ディレクトリ数) |
| IFree | 残りinode数 |
| IUse% | inode使用率。これが100%になるとファイル作成不能 |
6-1. inode枯渇が起きやすい状況
inode枯渇は特定の状況で起きやすいです。
Use%(ディスク容量の使用率)が50%でも、IUse%(inode使用率)が100%であればファイルの新規作成は即座に失敗します。ディスク監視スクリプトは容量とinodeの両方を監視対象に含めることが必須です。
6-2. inode枯渇の診断フロー
問題のあるファイルシステム(例:/var)でinodeを大量消費しているディレクトリを探すには、各ディレクトリのファイル数を数える方法が有効です。ただし、/var/logや/var/lib/phpなど、よく問題になる場所から優先的に確認するのが効率的です。
df -ih と打つと、inode数も人間可読の単位(K/M)で表示されます。大規模サーバーでinode数が数百万になる場合に見やすくなります。
07 SPECIFY TARGET 特定のパーティション・マウントポイントを指定する 知りたいFSだけを素早くピンポイントで確認する方法
dfは引数にパスまたはデバイスファイル名を渡すことで、特定のファイルシステムだけを表示できます。
# ルートFSのみ確認
$ df -h /
# /var/log のFSを確認
$ df -h /var/log
# ホームディレクトリのFSを確認
$ df -h /home/user
# デバイスファイル指定
$ df -h /dev/sda1
引数に渡したパスが含まれるファイルシステムを自動的に特定して表示します。例えば /var/log が専用パーティションになっていれば、その情報だけが出ます。/var/log 専用のパーティションがない場合は / のFSが表示されます(/var/log は / の中にあるから)。
7-1. 複数パスをまとめて確認
複数のパスをスペース区切りで指定すると、それぞれのFSをまとめて確認できます。重複するFSは一度だけ表示されます。
# ルートと /var/log を一度に確認
$ df -h / /var/log /home/user
7-2. 監視スクリプトで特定パーティションのみ監視
監視スクリプトでは、全FSではなく重要なパーティション(/、/var/log、/home/user など)のみを対象にすることで、出力を絞って処理しやすくなります。
#!/bin/bash
# ルートとvar/logの使用率をチェック
ROOT_USE=$(df -h / | awk 'NR==2 {print $5}' | tr -d '%')
VARLOG_USE=$(df -h /var/log | awk 'NR==2 {print $5}' | tr -d '%')
echo "/ 使用率: ${ROOT_USE}%"
echo "/var/log 使用率: ${VARLOG_USE}%"
📚 用語解説
awk:テキストを列(フィールド)単位で処理するLinuxコマンド。df の出力から特定の列だけを抽出するときに使われます。「awk 'NR==2 {print $5}'」は「2行目の5列目を表示する」という意味です。dfの出力は1行目がヘッダー、2行目以降がデータなので NR==2 で最初のデータ行を取得します。
08 DF VS DU dfとduの違い・使い分け(Disk Free vs Disk Usage) 混同しやすい2つのコマンドの役割を完全整理
Linuxのディスク確認コマンドとしてdf と並んでよく登場するのがdu(Disk Usage)です。名前が似ているために混同されやすいですが、役割がまったく異なります。
| 観点 | df(Disk Free) | du(Disk Usage) |
|---|---|---|
| 目的 | ファイルシステム全体の容量・空き量確認 | ディレクトリ・ファイルの使用容量確認 |
| 単位 | ファイルシステム単位 | ディレクトリ・ファイル単位 |
| 速度 | 即座(OSの情報を参照するだけ) | 遅い(ファイルを一つひとつスキャン) |
| 用途 | 「空きがいくらあるか」を知りたいとき | 「どこが容量を食っているか」を特定したいとき |
| 出力の視点 | ファイルシステムの外側から見た使用量 | ファイルの合計から積み上げた使用量 |
実務での使い方は、まずdfで全体感を把握し、Use%が高いパーティションをduで深掘りするという二段階が基本です。
8-1. dfとduで数値が合わない理由
dfで「使用量が8GB」と出ているのに、そのパーティション内でduをかけると「6GBしかない」というケースがあります。この差が生まれる主な原因は3つです。
Webサーバーのログファイルをプロセス起動中に削除(rm)してもディスクの空きは増えません。プロセスがそのファイルのファイルディスクリプタを保持しているため、OS上はまだ「使用中」として扱われます。ディスクを解放するには、プロセスを再起動するかlogrotateの設定で正しくローテーションする必要があります。
09 FIELD MATH dfのフィールド計算(Used+Available≠Totalになる理由) 「なぜ足し算が合わないのか?」を完全解明
dfの出力をよく見ると、Used + Available が Size(Total)と一致しないことに気づきます。
$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 49G 7.9G 39G 17% /
# 計算してみると...
# Used + Avail = 7.9G + 39G = 46.9G
# Size = 49G
# 差分 = 2.1G ← どこへ消えた?
この差分の正体が予約ブロック(reserved blocks)です。
📚 用語解説
予約ブロック(reserved blocks):ext4などのファイルシステムが、システム管理者(root)のために確保しておく領域。デフォルトでは総容量の5%が予約されます。一般ユーザーはこの領域に書き込めませんが、rootユーザーは使えます。サーバーが「ディスクフル」になってもrootが緊急ログインしてクリーンアップできるよう設計された安全機構です。
計算式を整理すると次のようになります。
Size(総容量) = Used(使用量) + Available(一般ユーザーの空き) + Reserved(root予約)
例:
49G = 7.9G + 39G + 2.1G(約5%)
Use%は(Used ÷ (Used + Available))× 100 で計算されます。Reservedは分母に含まれないため、Use%が100%になる前にディスクフルになることはありません(rootは予約領域まで使えるため)。
9-1. 予約ブロックを確認・変更する
tune2fsコマンドを使うと、ext4FSの予約ブロック割合を確認・変更できます。本番サーバーでは変更前にバックアップを取ることを強く推奨します。
# 予約ブロック割合の確認
$ tune2fs -l /dev/sda1 | grep "Reserved block count"
Reserved block count: 2457600
# 割合で確認(total blocksとの比)
$ tune2fs -l /dev/sda1 | grep -E "Block count|Reserved block"
1TBのディスクなら5% = 50GB、10TBなら500GBが予約されます。そのサーバーでrootログインが必要な緊急作業が現実的にどのくらいの容量を使うかを考えると、多くの場合1〜2%で十分です。大容量ストレージでは予約割合の見直しを検討してください。
10 SERVER MONITORING サーバー監視でのdf活用(ディスク80%超過アラート) シェルスクリプトで自動監視を構築する実装例
ディスク使用率の増加は緩やかなことが多く、気づいたときには手遅れというケースが珍しくありません。dfを定期的に実行して、Use%が閾値を超えたら通知する仕組みを作っておくことが重要です。
10-1. 基本の監視スクリプト(Use%が80%を超えたらアラート)
#!/bin/bash
# disk-monitor.sh
# 使用率が THRESHOLD% を超えたら echo でアラート
THRESHOLD=80
df -h -x tmpfs -x overlay | awk 'NR>1 {
# Use% から % を除いた数値を取得
gsub(/%/, "", $5)
if ($5 > 0 && $5 >= THRESHOLD) {
printf "ALERT: %s mounted on %s is %s%% (threshold: %d%%)
", $1, $NF, $5, THRESHOLD
}
}' THRESHOLD="$THRESHOLD"
このスクリプトをcronで定期実行し、出力をSlackやメールに転送することで自動監視が完成します。
10-2. inodeも同時監視するスクリプト
容量とinodeを両方監視するスクリプトの例です。
#!/bin/bash
# disk-full-monitor.sh
# 使用率(容量)とinode使用率を両方チェック
THRESHOLD=80
INODE_THRESHOLD=75
echo "=== Disk Usage Check ==="
df -h -x tmpfs | awk -v thr="$THRESHOLD" 'NR>1 {
gsub(/%/, "", $5)
if ($5 >= thr) print "DISK ALERT: "$1" "$5"% ("$NF")"
}'
echo "=== Inode Usage Check ==="
df -i -x tmpfs | awk -v thr="$INODE_THRESHOLD" 'NR>1 {
gsub(/%/, "", $5)
if ($5 >= thr) print "INODE ALERT: "$1" "$5"% ("$NF")"
}'
10-3. cronへの登録例
# crontab -e で以下を追加
# 毎時0分に実行、出力があればメールで通知
0 * * * * /home/user/scripts/disk-full-monitor.sh | grep -E "ALERT" && mail -s "Disk Alert" admin@example.com < /home/user/scripts/disk-full-monitor.sh
# または毎日朝9時にチェック結果をレポート
0 9 * * * /home/user/scripts/disk-full-monitor.sh >> /var/log/disk-check.log 2>&1
📚 用語解説
cron:Linuxで定期的にコマンドやスクリプトを自動実行するためのジョブスケジューラー。「crontab -e」でジョブの登録・編集ができます。「0 * * * *」は「毎時0分に実行」を意味します。監視スクリプトをcronに登録しておくことで、手動でdfを打たなくても自動でディスク状態を確認できます。
10-4. ディスク監視の閾値設定ガイド
| Use% | 状態 | 推奨アクション |
|---|---|---|
| 〜70% | 正常 | 定期確認のみ。増加トレンドを記録しておく。 |
| 70〜80% | 警告 | 不要ファイルの棚卸し開始。増加速度を確認。 |
| 80〜90% | 要対処 | 即座にクリーンアップ開始。容量拡張の検討。 |
| 90〜95% | 緊急 | 一部サービスに影響が出始める。即時対応必須。 |
| 95%以上 | 危機 | サービス障害のリスク大。緊急クリーンアップまたは拡張。 |
11 GENAI PRACTICE GENAI実運用サーバーのディスク管理 株式会社GENAIの実際のサーバー監視体制を公開
ここでは、弊社(株式会社GENAI)が実際に行っているサーバーのディスク管理体制を紹介します。Xserverの共有サーバーとCloud Runコンテナを組み合わせた構成ですが、dfコマンドは変わらず監視の基本です。
11-1. 監視対象のサーバー・環境
| 環境 | df確認方法 | 監視ポイント |
|---|---|---|
| Xserverレンタルサーバー | SSH経由でdf -h | /home以下のサイトデータ、logのサイズ |
| Cloud Run コンテナ | Cloud Shellからgcloud run execでコンテナ内に入ってdf | tmpfsの使用量、コンテナイメージサイズ |
| GitHub Actions | ワークフロー内でdf -hを実行しログ確認 | ランナーの残り容量(大きいビルドで枯渇することがある) |
11-2. GENAIで最も容量を使うディレクトリ
弊社のXserverで最も容量を消費しているのは以下のディレクトリです。
11-3. 月次ディスク棚卸しの実施内容
弊社では月1回、以下のフローでディスクの棚卸しを行っています。
月ごとのdf -h の記録を残しておくと、「このペースだとあと3ヶ月で80%に達する」という予測が立てられます。単純な増加量÷月数で計算できます。閾値アラートに加えて、こうしたトレンド分析も行うとより安定した運用が可能になります。
12 CLAUDE CODE AUTOMATION Claude Codeでディスク監視を自動化する 手動のdf確認をゼロにして、問題を自動検知・対処する
ここまでdfコマンドの使い方を網羅的に解説してきました。しかし本音を言うと、熟練したLinux管理者ほどdfを手動で打つ機会が少ないのも事実です。なぜなら、監視・アラート・初期対処までを自動化しているからです。
そしてその自動化の精度をさらに高める手段として、弊社が実際に活用しているのがClaude Codeです。Claude Codeは、ターミナル上でAIエージェントとして動作し、コマンドの実行・ファイルの解析・スクリプトの作成・エラーの診断まで自律的に行います。
12-1. Claude Codeができるディスク管理タスク
12-2. Claude Codeへの依頼の仕方(実例)
Claude Codeを使ったディスク管理の具体的なやりとり例を紹介します。
# Claude Codeへの依頼例
「以下のdfコマンドの出力を解析して、問題のあるパーティションと推奨アクションを教えて」
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 49G 43G 4G 92% /
tmpfs tmpfs 4.0G 2.1G 1.9G 53% /dev/shm
/dev/sda2 xfs 100G 78G 22G 78% /var/log
このような入力に対して、Claude Codeは「/dev/sda1のルートFSが92%で危険水域、即座に/var/cacheや古いログのクリーンアップが必要」といった具体的なアドバイスと、クリーンアップのコマンド例を返してくれます。
12-3. Claude Codeでディスク監視を完全自動化する構成
弊社GENAIの実際の自動化構成を紹介します。
# 日次ディスクレポートをClaude Codeで解析するイメージ
# (実際の実装はClaude Codeに依頼して生成)
#!/bin/bash
# disk-report-with-ai.sh
# dfの出力を収集
DF_OUTPUT=$(df -hT -x tmpfs -x overlay)
# Claude Code CLIに渡して解析(実際のコマンド形式はClaude Codeの仕様に従う)
echo "$DF_OUTPUT" | claude --print "このdfの出力を解析し、80%超のパーティションと推奨対処を日本語で説明して"
シェルスクリプトやcronの設定に慣れていない人でも、「このエラーはどういう意味?」「こういう監視を作りたい」と話しかけるだけでClaude Codeが実装まで担当します。インフラ管理の専門知識がなくても、サーバーのディスク状態を把握・管理できるようになるのが最大のメリットです。
12-4. ディスク管理自動化の始め方
dfコマンドは覚えるべき基礎ですが、監視・アラート・対処の自動化まで含めてはじめて「運用」と言えます。Claude Codeを活用することで、その自動化のハードルを大幅に下げることができます。AI鬼管理の導入に興味がある方は、ぜひ無料相談からお気軽にお声がけください。
よくある質問(FAQ)
Q. dfコマンドはどのLinuxディストリビューションでも使えますか?
A. はい。Ubuntu、CentOS、Debian、Amazon Linux、Alpine Linux、RHEL など主要なすべてのLinuxディストリビューションで使えます。macOSでも使えますが、GNU dfとBSD dfでオプションの動作が一部異なります(-Tはmacosで動作が違うなど)。本番サーバーはほぼ全てLinuxのため、この記事の内容はそのまま適用できます。
Q. df -h の出力で「/dev/sdaX」ではなく「overlay」や「tmpfs」がたくさん表示されます。どうすれば?
A. Dockerを使っている環境でよく見られます。「df -h -x tmpfs -x overlay」と打つと、それらを除外して実際のディスクのみが表示されます。また、Dockerのオーバーレイファイルシステムはイメージ・コンテナ・ボリュームが積み重なってサイズが大きくなりやすいため、定期的に「docker system prune」で不要なイメージ・コンテナを削除することも重要です。
Q. 「No space left on device」エラーが出るのにdf -hでは空きがあります。なぜですか?
A. inodeの枯渇が原因の可能性が高いです。「df -i」を実行してIUse%を確認してください。IUse%が100%に近い場合、ファイルの実体を書き込むディスク容量はあっても、ファイルを管理するinodeが足りずに新規ファイルを作れなくなっています。小さいファイルが大量に蓄積されやすい /var/lib/php/sessions や /tmp などを確認し、不要なファイルを削除することで改善できます。
Q. dfとduを両方実行しても使用量が一致しません。どちらが正しいですか?
A. どちらも正しい値を出していますが、集計の対象が違います。dfはファイルシステムが「使用中」として記録しているブロック数を返すため、「削除されたがプロセスが保持しているファイル」も含まれます。duは実際に存在するファイルを積み上げて計算します。差分が大きい場合、「lsof | grep deleted」で削除済みだがプロセスが開いているファイルを探してみてください。
Q. dfコマンドで特定のパーティションだけを監視したいです。どうすればよいですか?
A. 「df -h /var/log」のようにパスを引数に渡すと、そのパスが含まれるファイルシステムのみ表示されます。監視スクリプトでは「df -h /var/log | awk 'NR==2 {print $5}' | tr -d '%'」のように書くと使用率のパーセント数値だけを取り出せます。複数のパスをスペース区切りで指定すれば、まとめて確認することも可能です。
Q. Claude Codeでディスク監視を自動化したいです。どのように依頼すれば良いですか?
A. Claude Code(CLIツール)を起動して、「Linuxサーバーのディスク使用率を監視して、Use%が80%を超えたらSlackに通知するシェルスクリプトを作成してcronに登録してください。対象のパーティションは / と /var/log です。Slack Webhook URLは XXX です。」と依頼するだけで、スクリプトの作成からcronへの登録まで自律的に実行してくれます。プログラミングの知識がない方でも、自然な日本語で指示できるのがClaude Codeの強みです。
Q. dfの予約ブロック(reserved blocks)を0%にしても問題ないですか?
A. 本番サーバーでは推奨しません。予約ブロックは、ディスクフルになったときにrootユーザーが緊急ログインして復旧作業を行うための安全弁です。0%にするとディスクが完全に埋まった場合に復旧手段がなくなります。ただし、大容量ストレージ(1TB以上)ではデフォルト5%が過剰なこともあるため、1〜2%に下げるのは合理的な選択肢です。変更はtune2fsで行いますが、念のためバックアップを取ってから実施してください。
まとめ
この記事では、Linuxのdfコマンドについて、基本から実務レベルの監視・自動化まで徹底解説しました。
dfコマンドは「打つだけ」なら簡単ですが、出力を正しく読み、inodeや予約ブロックの概念まで理解することで、サーバー管理の深さが格段に変わります。ぜひこの記事を手元に置いて、実際のサーバーでdf -hT や df -i を試してみてください。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。




