「dfコマンドを実行したけど、tmpfsが大量に並んで肝心のディスク情報が見づらい」
Linuxサーバーの運用で、こうした場面に遭遇したことはないでしょうか。ディスク容量の問題を放置すると、サービス停止やデータ消失にまで発展するため、日常的な確認作業が欠かせません。
この記事では、Linuxの
df コマンドを使ってディスク容量や使用率を確認する実践的な手順を解説します。基本的なオプション(-h・-T・-i)の使い方から、tmpfsを除外して見やすくする方法、dfとduの違い、iノード枯渇への対処、ディスク使用率の自動監視スクリプトまで、現場で必要な知識をまとめました。
実行環境:RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済み
この記事のポイント
・df -h でパーティションごとの空き容量を人間が読みやすい形式で確認できる
・df -T でファイルシステムの種類(xfs・ext4など)を表示できる
・df -i でiノード使用率を確認し、容量はあるのに書き込めない原因を特定できる
・duコマンドと組み合わせて「どのディレクトリが容量を食っているか」を調べる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
dfコマンドとは? ディスク容量を確認する基本コマンド
df(disk free)は、マウントされているファイルシステムごとに、ディスクの総容量・使用量・空き容量・使用率を表示するコマンドです。サーバー運用では「ディスクがいっぱいになっていないか」を日常的に確認する必要があります。ログファイルの肥大化やバックアップデータの蓄積など、気づかないうちに容量を圧迫しているケースは珍しくありません。
df はその確認の第一歩として、最も頻繁に使われるコマンドの一つです。dfが特に有効なのは以下のようなシーンです。
・ディスク容量不足の検知:どのパーティションが何%使っているかを瞬時に把握できる
・ログ肥大化の原因調査:/var が独立パーティションなら、そこだけ逼迫しているかを確認できる
・ファイルシステム種別の確認:xfsなのかext4なのかを一覧で把握できる
# 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
・Filesystem:デバイス名(/dev/sda3 など)
・1K-blocks:パーティションの全体容量(1KBブロック単位)
・Used:使用済みの量
・Available:空き容量
・Use%:使用率(80%を超えたら要注意、90%超は危険水域)
・Mounted on:マウントポイント(どのディレクトリに割り当てられているか)
オプションなしの場合、容量は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
-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
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 ディレクトリ単位 ~
ディスク容量の確認でよく混同されるのがdf と du です。役割が明確に異なるため、使い分けを整理しておきましょう。・df:ファイルシステム全体の空き容量・使用率を表示する。「ディスクがあとどれくらい使えるか」を確認するコマンド
・du:ディレクトリやファイル単位の使用量を表示する。「どのディレクトリが容量を食っているか」を特定するコマンド
実務での使い分けは明確です。まず
df -h でどのパーティションが逼迫しているかを確認し、次に du でそのパーティション内のどのディレクトリが容量を消費しているかを特定する、という流れになります。# まずdfでディスク全体の使用率を確認 $ df -h # 次にduで容量の大きいディレクトリを特定(上位10件) $ du -sh /var/* 2>/dev/null | sort -rh | head -10
# /var/log 配下で100MB以上のファイルを検索する # find /var/log -type f -size +100M -exec ls -lh {} \; -rw-r--r--. 1 root root 4.8G Apr 10 09:12 /var/log/messages-20260406 -rw-r--r--. 1 root root 1.2G Apr 9 23:59 /var/log/secure-20260406
df と du の合計値が一致しないことがあります。これは、プロセスが掴んだまま削除されたファイル(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環境では lvs や vgs コマンドで論理ボリュームの詳細を確認できます。# 論理ボリュームの一覧と容量を確認 $ 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
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に登録する例(毎時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ノードが枯渇している
# ディレクトリごとのファイル数を調査(上位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
4. watchコマンドで容量の変化をリアルタイム監視する
大きなファイルの転送中やログが急増している状況では、watchコマンドと組み合わせて容量の推移を監視できます。# 5秒間隔でディスク容量の変化を監視する $ watch -n 5 'df -h /var' Every 5.0s: df -h /var web01: Fri Apr 10 10:30:00 2026 Filesystem Size Used Avail Use% Mounted on /dev/sda5 20G 15G 5.9G 71% /var
トラブルシュート ~ dfでエラーが出る場合 ~
1. 「No such file or directory」「cannot access」が表示される
df 実行時に以下のようなエラーが出ることがあります。df: /mnt/nfs_share: No such file or directory
対処方法:
・マウントポイントが存在しない場合:
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)
# プロセスを再起動して領域を解放 $ sudo systemctl restart httpd
# 予約領域の割合を確認する(ext4のみ) # tune2fs -l /dev/sda3 | grep -i reserved Reserved block count: 655360 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) # 予約領域を1%に変更する(空き容量を増やしたい場合) # tune2fs -m 1 /dev/sda3
3. Use%が0%でSizeも0のファイルシステムが表示される
devtmpfsやtmpfsなど、メモリベースの仮想ファイルシステムです。実ディスクではないため、前述の-x オプションで除外して構いません。4.【重要】Use%が100%に達した時の緊急対処
ディスクが完全に埋まると、ログ書き込み失敗・サービス停止・OS自体の動作不安定が発生します。緊急時は以下の手順で対処してください。1. 不要なログファイルを圧縮または削除する
# 古いログファイルを確認する # ls -lhS /var/log/*.log /var/log/*.gz 2>/dev/null | head -10 # 7日以上前のログを圧縮する # find /var/log -name "*.log" -mtime +7 -exec gzip {} \;
# パッケージマネージャのキャッシュを削除する # dnf clean all # du -sh /var/cache/dnf/ 0 /var/cache/dnf/
# 現在のカーネルバージョンを確認する $ uname -r 5.14.0-427.13.1.el9_4.x86_64 # 古いカーネルの一覧を確認する # dnf list installed kernel-core
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| ディスク使用率を見やすい単位で確認 | 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 |
| 削除済みファイルを保持するプロセスを確認 | lsof +L1 |
| ディスク容量の変化をリアルタイム監視 | watch -n 5 'df -h /var' |
・lsblkコマンドでブロックデバイスを一覧表示する方法
・mountコマンドでファイルシステムをマウントする方法
ディスク管理を含むLinuxサーバー運用の基本を、体系的に学びませんか?
dfコマンドによるディスク容量の確認は、サーバー管理の入り口にすぎません。本番環境の運用には、LVM・パーティション設計・ログローテーションなど、知っておくべきことがまだまだあります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:CentOS7でSELinuxを無効化する方法|getenforce・setenforce・config設定まで
- 前のページへ:killコマンドでプロセスを強制終了する方法|kill -9やkillall・pkillの使い分けも
- この記事の属するカテゴリ:Linuxtipsへ戻る

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