Linux 下查看磁碟空間不只有 df 一種方式。本文系統介紹 8 種主流工具(df、fdisk、cfdisk、parted、lsblk、blkid、df -i、du)的適用場景、輸出解讀與實戰技巧,助你根據需求選擇最合適的工具。

| 工具 | 核心功能 | 適用場景 | 權限需求 |
|---|---|---|---|
df | 檔案系統使用量/掛載點 | 快速查看分區剩餘空間、inode | 一般用戶 |
fdisk -l | 分區表結構、裝置大小、檔案系統類型 | 查看實體磁碟分區佈局、規劃新分區 | root |
cfdisk | 互動式分區管理(文字介面) | 直觀查看/調整分區、新手友善 | root |
parted | 支援 GPT、大磁碟的分區工具 | 大於 2TB 磁碟、GPT 分區、腳本自動化 | root |
lsblk | 樹狀顯示區塊裝置與掛載關係 | 快速掌握裝置拓撲、LS 類輸出易解析 | 一般用戶 |
blkid | 顯示裝置 UUID、LABEL、TYPE | 編寫 /etc/fstab、識別檔案系統 | root |
df -i | inode 使用量 | 大量小檔案導致 inode 耗盡排查 | 一般用戶 |
du | 目錄/檔案實際佔用空間 | 定位具體目錄佔用大戶 | 一般用戶 |
df -hT # 人類可讀 + 檔案系統類型
df -h / # 只看根分區
df -hi # inode 使用率
df --output=source,size,used,avail,pcent,target -h # 自訂輸出供腳本
fdisk -l # 列出所有磁碟分區
fdisk -l /dev/sda # 只看指定磁碟
# 輸出關鍵欄位:Device, Start, End, Sectors, Size, Id, Type
# Size 以 512-byte 區塊為單位,除以 2048 即為 MiB 概估
注意:fdisk 不支援 GPT 分區表(>2TB 需用 parted 或 gdisk)。
cfdisk /dev/sda
# 介面顯示:Name, Flags, Part Type, FS Type, Label, Size
# 適合快速確認分區大小、類型、啟動旗標
部分發行版預設未安裝,需 apt/yum install cfdisk。
parted /dev/sda print
# 輸出:Model, Disk, Sector size, Partition Table, Number, Start, End, Size, File system, Flags
# 可在腳本中非互動操作:
parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%
lsblk # 預設樹狀
lsblk -f # 顯示 FSTYPE, LABEL, UUID, MOUNTPOINT
lsblk -o +SIZE,TYPE,FSTYPE,MOUNTPOINT,UUID # 自訂欄位
lsblk -J # JSON 輸出供程式解析
blkid
blkid /dev/sda1
# 輸出:/dev/sda1: UUID="xxx" TYPE="ext4" PARTUUID="yyy"
# 寫 /etc/fstab 時建議用 UUID 或 LABEL
df -hi
# 若 Use% 接近 100%,需清理大量小檔案目錄
find /var/spool -type f | wc -l
find /tmp -type f -delete
du -h --max-depth=1 / | sort -hr
du -sh /var/log
ncdu / # 互動式最強推薦
| 場景 | 首選工具 | 輔助工具 |
|---|---|---|
| 快速查看根分區剩餘空間 | df -h / | |
| 新增磁碟需分區格式化 | lsblk 確認裝置 → parted/fdisk 分區 → mkfs 格式化 | blkid 獲取 UUID |
| 排查 inode 耗盡 | df -hi | find 定位小檔目錄 |
| 找出佔用空間最大的用戶目錄 | du -h --max-depth=1 /home | ncdu /home |
| 腳本自動收集磁碟資訊 | lsblk -J 或 df --output=json | |
| 確認掛載點對應裝置 | lsblk -f 或 findmnt |
fdisk -l 的 Blocks 欄位單位是 KB。正確:預設單位為 512-byte 區塊(Sectors),1 Block = 1 Sector = 512 bytes。df 和 du 結果應完全一致。正確:因已刪除仍開啟檔案、掛載點遮蓋、硬連結、稀疏檔、壓縮檔案系統等原因,兩者常不一致。lsblk 需 root 權限。正確:一般用戶即可執行,僅部分欄位(如 FSTYPE)需 root。工具箱越豐富,診斷越精準。日常巡檢用 df -hT + lsblk -f,分區規劃用 parted,深度挖掘用 ncdu,腳本自動化用 lsblk -J。掌握這 8 大工具特性與組合,磁碟空間管理將不再是盲盒。