Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux df 與 du 命令深度對比:原理、差異與實戰技巧

編輯:Linux 教學

核心區別

維度df (disk free)du (disk usage)
統計視角文件系統級(基於超級塊)文件/目錄級(遍歷 inode)
計算依據總空間 - 未分配空間 = 已用空間累加文件實際佔用的磁盤塊
元數據開銷包含 inode 表、日誌、保留塊等不包含 inode、inode map、磁盤圖等元數據
隱藏文件統計所有分配塊掛載點下被遮蓋的文件不統計
已刪除但未釋放文件計入已用空間目錄項已無,不統計
可靠性反映真實物理佔用,最權威反映用戶可見數據佔用,便於定位大文件

df 常用參數

df -h      # 人類可讀單位 (K/M/G)
df -hi     # 顯示 inode 使用情況
df -T      # 顯示文件系統類型 (ext4, xfs, nfs...)

輸出示例

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        20G   12G  7.2G  63% /
tmpfs           7.8G     0  7.8G   0% /dev/shm
/dev/sdb1       500G  320G  180G  64% /data

du 常用參數

du -h      # 人類可讀
du -s      # 只顯示總計
du -a      # 顯示文件與目錄
du -x      # 不跨越文件系統邊界
du -c      # 顯示總計
du --max-depth=N  # 限制遞歸深度

定位大目錄技巧

du -h --max-depth=1 / | sort -hr
# 顯示根目錄下一級子目錄大小,按人類可讀單位倒序排列

為什麼 df 和 du 結果不一致?

  1. 進程持有已刪除文件:lsof | grep deleted 找出佔用空間的進程,重啟進程釋放。
  2. 掛載點遮蓋:/var 下掛載了新分區,原 /var 數據被隱藏,du 不統計,df 統計。
  3. 文件系統保留空間:ext4 默認保留 5% 給 root,df 顯示已用含保留,du 不含。
  4. 稀疏文件:邏輯大小 > 物理塊,du 統計物理塊,ls -lh 顯示邏輯大小。

inode 耗盡排查

df -hi | awk '$6 ~ /%$/ && $5+0 > 90'
# 找出 inode 使用率超過 90% 的分區
find / -xdev -printf '%h\n' | sort | uniq -c | sort -rn | head
# 定位 inode 消耗大戶目錄

最佳實踐建議

  • 磁盤告警以 df 為準(反映物理真實)。
  • 清理空間用 du 定位大文件/目錄。
  • 定期 lsof +L1 檢查已刪除未釋放文件。
  • 格式化分區時根據文件數量預估調整 inode 比例(mkfs.ext4 -i)。
Copyright © Windows教程網 All Rights Reserved