我對 ext4 報告使用空間的方式有點困惑。在新的 Debian wheezy(測試)安裝中,與du
.然後我透過網路啟動該電腦並安裝 SSD。網路啟動的作業系統 (Debian squeeze) 顯示 SSD 上僅使用了 180MB 的額外空間。日誌有 128MB,因此除此之外不再有太多額外的內容。
df
當不是為根目錄或已刪除檔案保留的空間時,已報告的額外已使用空間為何?使用谷歌主要是由那些常見原因導致的,我已經排除了這些原因。為什麼安裝在不同作業系統上時,同一檔案系統上的數量會有所不同?我透過重新安裝進行了測試,在氣喘吁籲的安裝中,額外的使用量再次約為 1GB,當我網絡啟動並安裝該 SSD 時,額外的使用量為 180MB。
在 XFS 和 btrfs 上,額外報告的使用情況似乎可以忽略不計。我意識到檔案系統需要一些開銷,但是當該開銷與實際使用情況混合時會很不方便。
以下是一些詳細的輸出。
df
$ df -m on wheezy
Filesystem 1M-blocks Used Available Use% Mounted on
rootfs 57132 1567 52703 3% /
udev 7899 0 7899 0% /dev
tmpfs 1581 1 1581 1% /run
/dev/mapper/ssd-kvmhost 57132 1567 52703 3% /
tmpfs 5 0 5 0% /run/lock
tmpfs 3162 0 3162 0% /tmp
tmpfs 3162 0 3162 0% /run/shm
杜
$ du -sm /
592 /
tune2fs
顯示 Inode 計數為 3670016,大小為 256,這確實解釋了幾乎所有已使用空間。我只是不明白為什麼不從大小中減去它,因為索引節點是靜態保留的。將其算作空間,然後始終將其算作已使用並沒有多大意義。
以下是來自網路啟動的 Debian squeeze 的相同檔案系統的輸出:
aufs 7905 46 7859 1% /
tmpfs 7905 0 7905 0% /lib/init/rw
udev 7900 1 7900 1% /dev
tmpfs 7905 1 7905 1% /dev/shm
172.17.172.127:/storage/private/tftp/debian-live-6.0.3-amd64-lxde-desktop
24737 17448 7289 71% /live/image
tmpfs 7905 46 7859 1% /live/cow
tmpfs 7905 0 7905 0% /live
tmpfs 7905 1 7905 1% /tmp
/dev/mapper/ssd-kvmhost
56337 772 52703 2% /mnt
只是為了確認,在網路啟動的作業系統上使用 du -sm / :
592 /
也許較舊的核心明智地不將靜態保留的索引節點空間視為可用,因此不必將其顯示為已使用?大小和已使用空間均相差 795MB,幾乎是 inode 所需的所有空間。那麼180MB是多少呢?如果這也是靜態的,那麼從 Size 中減去它不是最佳選擇嗎?然後df
實際上可以顯示真實的使用情況,就像其他檔案系統似乎所做的那樣。
在我看來,如果我的檔案系統需要靜態量的開銷,那麼對於相同數量的絕對空間,它只提供比其他一些檔案系統更少的可用空間。 df 不應該反映這一點,並且還顯示有多少可用空間我用過了?
答案1
ext[234] 預設為每個 128 MB 區塊組保留 8192 個 inode,每組佔用 2 MB,對於 60 GB 檔案系統來說接近 1 GB。當您在另一個系統中安裝驅動器時應該沒有區別。看起來他們可能改變了內核報告在喘息和擠壓之間使用空間的方式,儘管我還沒有找到表明這是故意完成的提交。
答案2
如果您提供 df 和 du 的輸出,您的問題會更容易回答。
但聽起來很像 df 說我比 du 多使用了 20G 的磁碟空間。為什麼?
基本上,您的檔案系統將某些磁碟用於其自己的元數據,即不是檔案本身,而是用於追蹤檔案、它們的名稱、它們的權限、它們在磁碟上的位置等。
正如我上面鏈接的答案所說,跑步tune2fs -l <device name>
會向您顯示更多資訊。特別是,inode count
xinode size
應接近df
和之間的差du
。
再次基於先前的答案,我的系統的根分割區將大約 1.77% 的磁碟用於 inode。 60 GB * 0.0177 ~= 1 GB。
mount
我懷疑 180 MB 的數字不正確,但如果沒有更多詳細資訊(例如網路啟動系統上的輸出),則無法確定。例如,可能是由於minixdf
/bsddf
安裝選項。