dfコマンドでディスク容量を確認する方法|使用率の見方や容量不足の対処もコマンド


図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドA-E, ディスク・デバイス管理コマンド > dfコマンドでディスク容量を確認する方法|使用率の見方や容量不足の対処もコマンド
「サーバーのディスク容量が足りなくなっているかもしれないけど、どうやって確認すればいいの?」
「dfコマンドを実行したけど、tmpfsが大量に並んで肝心のディスク情報が見づらい」
Linuxサーバーの運用で、こうした場面に遭遇したことはないでしょうか。

この記事では、Linuxの df コマンドを使ってディスク容量や使用率を確認する実践的な手順を解説します。
基本的なオプション(-h・-T・-i)の使い方から、tmpfsを除外して見やすくする方法、dfとduの違い、iノード枯渇への対処、ディスク使用率の自動監視スクリプトまで、現場で必要な知識をまとめました。

dfコマンドとは? ディスク容量を確認する基本コマンド

df(disk free)は、マウントされているファイルシステムごとに、ディスクの総容量・使用量・空き容量・使用率を表示するコマンドです。

サーバー運用では「ディスクがいっぱいになっていないか」を日常的に確認する必要があります。ログファイルの肥大化やバックアップデータの蓄積など、気づかないうちに容量を圧迫しているケースは珍しくありません。df はその確認の第一歩として、最も頻繁に使われるコマンドの一つです。

# dfコマンドの実行(オプションなし) $ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 51343840 8234512 40472528 17% / devtmpfs 1998648 0 1998648 0% /dev tmpfs 2015680 0 2015680 0% /dev/shm tmpfs 2015680 9012 2006668 1% /run /dev/sda1 508588 169536 339052 34% /boot

オプションなしの場合、容量は1Kブロック単位で表示されます。人間には読みづらいため、実務では後述する -h オプションを付けるのが一般的です。

dfコマンドの基本オプション

1. -h(人間が読みやすい単位で表示)

最もよく使うオプションです。容量をK(キロバイト)・M(メガバイト)・G(ギガバイト)で自動的に表示してくれます。

# 人間が読みやすい単位で表示 $ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 49G 7.9G 39G 17% / devtmpfs 2.0G 0 2.0G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 8.9M 2.0G 1% /run /dev/sda1 497M 166M 332M 34% /boot

-h は「human-readable」の略です。現場では df -h をまず実行する、というのが定番の流れです。

-h は1024を基準にした単位(1G = 1,048,576K)を使います。ディスクメーカーが表記する1000基準の容量と合わせたい場合は、-H(1G = 1,000,000K)を使ってください。

2. -T(ファイルシステムの種類を表示)

-T を付けると、各ファイルシステムの種類(xfs・ext4・tmpfs等)が表示されます。

# ファイルシステムの種類を表示 $ df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/sda3 xfs 49G 7.9G 39G 17% / devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run /dev/sda1 xfs 497M 166M 332M 34% /boot

RHEL系ではデフォルトのファイルシステムがxfs、Ubuntu/Debian系ではext4が使われます。ファイルシステムの種類によって管理コマンドが異なるため(xfs_growfsとresize2fs等)、-T で種類を把握しておくと障害対応時にスムーズです。

3. -i(iノードの使用状況を表示)

-i は容量ではなく、iノード(ファイルやディレクトリの管理番号)の使用状況を表示します。

# iノードの使用状況を表示 $ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 3276800 125340 3151460 4% / /dev/sda1 256000 310 255690 1% /boot

ディスク容量に空きがあっても、iノードが枯渇するとファイルを新しく作成できなくなります。詳しくは後述の「iノード枯渇」セクションで解説します。

4. -x(特定のファイルシステムを除外)

df -h を実行すると、tmpfsやdevtmpfsなど実ディスクとは関係のない仮想ファイルシステムが大量に表示されることがあります。-x オプションでこれらを除外すると、本当に確認したいディスクだけが残ります。

# tmpfsとdevtmpfsを除外して表示 $ df -h -x tmpfs -x devtmpfs Filesystem Size Used Avail Use% Mounted on /dev/sda3 49G 7.9G 39G 17% / /dev/sda1 497M 166M 332M 34% /boot

実務では df -h -x tmpfs -x devtmpfs をエイリアスに登録しておくと便利です。

# .bashrcにエイリアスを追加する例 alias dfd='df -h -x tmpfs -x devtmpfs'

5. --total(合計行を追加)

--total を付けると、最終行にすべてのファイルシステムの合計が表示されます。サーバー全体のディスク使用状況をざっくり把握したい場合に便利です。

# 合計行を追加して表示 $ df -h --total -x tmpfs -x devtmpfs Filesystem Size Used Avail Use% Mounted on /dev/sda3 49G 7.9G 39G 17% / /dev/sda1 497M 166M 332M 34% /boot total 49G 8.0G 39G 17% -

6. 特定のパスを指定する

df にパスを渡すと、そのパスが属するファイルシステムの情報だけが表示されます。

# /var/log が属するファイルシステムを確認 $ df -h /var/log Filesystem Size Used Avail Use% Mounted on /dev/sda3 49G 7.9G 39G 17% /

「このディレクトリはどのパーティションに属しているのか?」を調べたい場面で重宝します。

dfとduの違い ~ ディスク全体 vs ディレクトリ単位 ~

ディスク容量の確認でよく混同されるのが dfdu です。役割が明確に異なるため、使い分けを整理しておきましょう。

df:ファイルシステム全体の空き容量・使用率を表示する。「ディスクがあとどれくらい使えるか」を確認するコマンド
du:ディレクトリやファイル単位の使用量を表示する。「どのディレクトリが容量を食っているか」を特定するコマンド

実務での使い分けは明確です。まず df -h でどのパーティションが逼迫しているかを確認し、次に du でそのパーティション内のどのディレクトリが容量を消費しているかを特定する、という流れになります。

# まずdfでディスク全体の使用率を確認 $ df -h # 次にduで容量の大きいディレクトリを特定(上位10件) $ du -sh /var/* 2>/dev/null | sort -rh | head -10

なお、dfdu の合計値が一致しないことがあります。これは、プロセスが掴んだまま削除されたファイル(deleted but open)がdfには反映されるがduには表示されないためです。この場合、該当プロセスを再起動すると領域が解放されます。

実務で使えるdfの応用テクニック

1. LVM環境でのdf出力の読み方

RHEL/CentOS/AlmaLinuxの標準インストールでは、LVM(Logical Volume Manager)が使われます。この場合、dfの出力のFilesystem列が /dev/mapper/rl-root/dev/mapper/cs-root のような表記になります。

# LVM環境でのdf出力例 $ df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/rl-root xfs 45G 8.2G 37G 19% / /dev/mapper/rl-home xfs 20G 1.5G 19G 8% /home /dev/sda1 xfs 960M 233M 728M 25% /boot

この rl-root は「ボリュームグループ名-論理ボリューム名」の形式です。LVM環境では lvsvgs コマンドで論理ボリュームの詳細を確認できます。

# 論理ボリュームの一覧と容量を確認 $ sudo lvs LV VG Attr LSize Pool Origin Data% Meta% home rl -wi-ao---- 20.00g root rl -wi-ao---- 45.00g swap rl -wi-ao---- 4.00g # ボリュームグループの空き容量を確認 $ sudo vgs VG #PV #LV #SN Attr VSize VFree rl 1 3 0 wz--n- <70.00g 1.00g

VFreeに空きがあれば、lvextend で論理ボリュームを拡張し、xfs_growfs(xfsの場合)でファイルシステムを拡張できます。

2. ディスク使用率の監視スクリプト

ディスクが90%を超えたら警告メールを送る、という監視はサーバー運用の基本です。Zabbixなどの監視ツールがない環境でも、シェルスクリプトとcronで簡単に実現できます。

#!/bin/bash # ディスク使用率が指定値を超えたらアラートを出すスクリプト THRESHOLD=90 MAILTO="admin@example.com" HOSTNAME=$(hostname) df -h -x tmpfs -x devtmpfs | awk 'NR>1 {print $5, $6}' | while read usage mount; do # %記号を除去して数値に変換 percent=${usage%\%} if [ "$percent" -ge "$THRESHOLD" ] 2>/dev/null; then echo "WARNING: ${mount} is ${usage} full on ${HOSTNAME}" | \ mail -s "[DISK ALERT] ${HOSTNAME} ${mount} ${usage}" "$MAILTO" fi done

このスクリプトをcronに登録して定期実行すれば、容量不足に早く気づけます。

# cronに登録する例(毎時0分に実行) 0 * * * * /root/scripts/disk_check.sh

3. iノード枯渇の問題と対処

ディスク容量に余裕があるのに「No space left on device」エラーが出る場合、iノードの枯渇を疑ってください。

iノードはファイルやディレクトリごとに1つ消費されます。小さなファイルが大量にあるディレクトリ(メールスプールやセッションファイル等)では、容量の前にiノードが不足するケースがあります。

# iノードの使用率を確認 $ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 3276800 3276800 0 100% / # IUse%が100%ならiノードが枯渇している

対処としては、不要なファイルを削除してiノードを解放します。どのディレクトリにファイルが集中しているかは、以下のコマンドで調査できます。

# ディレクトリごとのファイル数を調査(上位10件) $ find / -xdev -type d -exec sh -c 'echo "$(find "$1" -maxdepth 1 -type f | wc -l) $1"' _ {} \; 2>/dev/null | sort -rn | head -10

※ xfsファイルシステムではiノードが動的に割り当てられるため、ext4に比べて枯渇しにくい特徴があります。

トラブルシュート ~ dfでエラーが出る場合 ~

1. 「No such file or directory」「cannot access」が表示される

df 実行時に以下のようなエラーが出ることがあります。

df: /mnt/nfs_share: No such file or directory

これは、/etc/fstab に記載されたマウントポイントが実際には存在しない、またはNFSなどのネットワークファイルシステムが応答していない場合に発生します。

対処方法:
マウントポイントが存在しない場合:mkdir -p /mnt/nfs_share でディレクトリを作成してからマウントする
NFSサーバーが応答しない場合:NFSサーバー側の状態を確認する。dfが長時間止まる場合は df -l(ローカルファイルシステムのみ表示)で回避できる

2. dfの使用率が100%なのにduの合計と合わない

先述のとおり、プロセスが掴んだまま削除されたファイルが原因です。

# 削除済みだがプロセスが掴んでいるファイルを確認 $ sudo lsof +L1 | grep deleted httpd 1234 root 4w REG 8,3 2147483648 0 /var/log/httpd/access_log (deleted)

この場合、該当プロセス(上記の例ではhttpd)を再起動すれば領域が解放されます。

# プロセスを再起動して領域を解放 $ sudo systemctl restart httpd

3. Use%が0%でSizeも0のファイルシステムが表示される

devtmpfsやtmpfsなど、メモリベースの仮想ファイルシステムです。実ディスクではないため、前述の -x オプションで除外して構いません。

本記事のまとめ

やりたいこと コマンド
ディスク使用率を見やすい単位で確認 df -h
ファイルシステムの種類も表示 df -hT
iノードの使用状況を確認 df -i
tmpfs等の仮想FSを除外して表示 df -h -x tmpfs -x devtmpfs
合計行を追加して表示 df -h --total
特定パスが属するFSを確認 df -h /var/log
ローカルFSのみ表示(NFS除外) df -l
容量を食っているディレクトリを特定 du -sh /var/* | sort -rh | head -10

ディスク管理を含むLinuxサーバー運用の基本を、体系的に学びませんか?

dfコマンドによるディスク容量の確認は、サーバー管理の入り口にすぎません。本番環境の運用には、LVM・パーティション設計・ログローテーションなど、知っておくべきことがまだまだあります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

<<関連記事>>
・pstree
・chsh
・finger
・du
・uname

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る