ext4已使用空間(不是-m選項,不是刪除檔案)

ext4已使用空間(不是-m選項,不是刪除檔案)

我對 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 countxinode size應接近df和之間的差du

再次基於先前的答案,我的系統的根分割區將大約 1.77% 的磁碟用於 inode。 60 GB * 0.0177 ~= 1 GB。

mount我懷疑 180 MB 的數字不正確,但如果沒有更多詳細資訊(例如網路啟動系統上的輸出),則無法確定。例如,可能是由於minixdf/bsddf安裝選項。

相關內容