df 看檔案系統整體,du 看目錄實際占用;兩者對不上時,常見原因是已刪除但程序仍開著的檔案、掛載點或 sparse file。
動手前:掛載、卸載與檔案系統操作會影響服務。這裡以查詢為主;正式主機不要看到滿就直接刪 log,先確認 retention、程序與備份。
看整體容量
看所有檔案系統容量Linux/macOS
df -h用易讀單位顯示總量、已用與可用。
看 inode 使用率Linux/macOS
df -i大量小檔可能讓 inode 先用完,即使容量還有。
看指定路徑所在檔案系統Linux/macOS
df -h /var/lib比看整張表更容易鎖定掛載點。
排除 tmpfs 類型GNU df
df -h -x tmpfs -x devtmpfsGNU/Linux 常用;macOS 參數不同。
找出哪裡吃空間
看目前目錄總大小Linux/macOS
du -sh .只給一個摘要。
看下一層每個項目GNU/Linux
du -h --max-depth=1 . | sort -hmacOS 可用 du -hd 1 .。
macOS 看下一層macOS
du -hd 1 . | sort -hBSD du 使用 -d 指定深度。
找最大的 20 個項目GNU/Linux
du -ah . | sort -h | tail -n 20大目錄會產生大量 I/O;先限制路徑。
只計算同一檔案系統GNU/Linux
du -xsh /var/*-x 不跨到其他掛載點。
查看 apparent sizeGNU/Linux
du -sh --apparent-size sparse.imgsparse file 的邏輯大小與實際占用可能差很多。
找已刪除仍被開啟的檔案Linux
lsof +L1常見於 log 已刪但程序還沒重新開檔;先確認服務再處理。
看磁碟與掛載
列出 block device 與檔案系統Linux
lsblk -f顯示裝置、UUID、格式與掛載點。
自訂 lsblk 欄位Linux
lsblk -o NAME,SIZE,FSTYPE,FSVER,MOUNTPOINTS不會修改磁碟。
查看掛載樹Linux
findmnt比解析 mount 純文字輸出穩定。
查指定掛載點Linux
findmnt /var/lib顯示來源裝置與掛載參數。
查看裝置 UUIDLinux
blkid可能需要較高權限才能看到全部裝置。
列出目前掛載Linux/macOS
mount輸出格式依系統不同。
macOS 看磁碟與分割區macOS
diskutil list只列出,不進行格式化或修復。
macOS 看 APFS 容器macOS
diskutil apfs listAPFS 的共享空間和一般分割區觀念不同。
怎麼確認有做對
- df、du、findmnt 三者對同一路徑交叉確認。
- 清理後再看容量與 inode 是否下降。
- 服務相關 log 應確認輪替與重新開檔正常。
常見錯誤
- df 顯示滿就直接刪資料,沒有先找根因。
- du 掃整顆正式磁碟造成 I/O 壓力。
- 忽略已刪除但仍開啟的檔案。
- 把 APFS 可清除空間、snapshot 與一般使用量混為一談。
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。