df(disk free)是 Linux 系統管理員監控檔案系統磁碟使用量的核心工具。它從核心層面讀取超級區塊資訊,回報各掛載點的總容量、已用、可用空間及使用率。掌握 df 進階參數,能快速定位磁碟爆滿風險、規劃擴容時機,並排查 inode 耗盡導致的「明明有空間卻無法寫入」詭異故障。
df [選項]... [檔案/目錄]...
| 參數 | 長參數 | 功能說明 |
|---|---|---|
-h | --human-readable | 以人類易讀單位顯示(K、M、G、T),最常用 |
-H | --si | 同 -h,但以 1000 為進位單位(廠商標示法) |
-i | --inodes | 顯示 inode 使用量而非區塊使用量 |
-T | --print-type | 顯示檔案系統類型(ext4、xfs、nfs 等) |
-t | --type=類型 | 僅顯示指定檔案系統類型 |
-x | --exclude-type=類型 | 排除指定檔案系統類型(如排除 tmpfs、devtmpfs) |
-l | --local | 僅顯示本地檔案系統,略過網路掛載(NFS、CIFS) |
-P | --portability | POSIX 輸出格式,確保跨平台腳本解析穩定 |
--sync | 執行前先 sync 刷新快取,數據最新但較慢 | |
--block-size=大小 | 自訂區塊大小(如 --block-size=1M) |
$ df -hT
檔案系統 類型 容量 已用 可用 使用率 掛載點
/dev/vda1 ext4 50G 28G 20G 59% /
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/vdb1 xfs 100G 45G 55G 45% /data
192.168.1.10:/share nfs4 500G 200G 300G 40% /mnt/nfs
$ df -hi
檔案系統 Inode 已用(I) 可用(I) 使用率 掛載點
/dev/vda1 320M 310M 10M 97% /
/dev/vdb1 500M 50M 450M 10% /data
對策:若根目錄 inode 使用率 >90%,需清理大量小檔案(如快取、session、日誌)或重新格式化調大 inode 比例(mkfs.ext4 -i 2048)。
$ df -P /data
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/vdb1 104857600 47185920 57671680 45% /data
df -h -x tmpfs -x devtmpfs -x overlay
#!/bin/bash
THRESHOLD=85
ALERT_DIR="/data /var/log /home"
for dir in $ALERT_DIR; do
usage=$(df -P "$dir" | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$usage" -ge "$THRESHOLD" ]; then
echo "⚠️ $dir 使用率 ${usage}% 超過閾值 ${THRESHOLD}%" | mail -s "磁碟告警: $HOSTNAME" admin@example.com
fi
done
df 看檔案系統層面(含已刪除但進程仍持有的檔案),du 看目錄實際佔用。若 df 顯示滿但 du 很小,通常是進程持有已刪除檔案(lsof | grep deleted 找出並重啟進程釋放)。df 顯示的「可用」已扣除保留空間。可用 tune2fs -m 1 /dev/vda1 調低保留比例。df 可能無法正確反映壓縮、去重、快照佔用,建議搭配原生工具(btrfs filesystem usage、zpool list)。將 df -hT 加入每日巡檢腳本,配合 df -hi 定期檢查 inode,是守護 Linux 存儲健康的基礎動作。