
我將檔案系統從 Ubuntu 系統備份/還原到 Fedora 17 系統。我注意到根據df
輸出,已用空間增加了 30%。這可能是什麼原因?
Fedora 系統df
顯示:已使用 78 GB
Ubuntu系統df
顯示:已使用60GB
系統之間的差異:
Ubuntu:ext3(多年前創立)
Fedora 17:ext4(使用普通mkfs.ext4
呼叫建立)
恢復到 XFS 檔案系統(在 Fedora 17 上)會產生 78 GB 的已使用空間。
備份和還原是使用 GNU tar 完成的。檔案系統包含各種不同類型的檔案(即從原始碼樹、maildirs 到 ISO 等)。
答案1
首先想到的是「稀疏文件」。傳統上,人們可以建立一個文件,其中的資料位於文件的某個偏移量處,然後尋求更大的偏移量。當將資料寫入更大的偏移量時,檔案系統不會為中間的偏移量分配磁碟區塊。在沒有分配磁碟區塊的情況下讀取這些偏移量的程式讀取零值。
壓縮稀疏檔案會導致未分配磁碟區塊的稀疏檔案在 tar 檔案(或輸出流)和重新建立的檔案中的偏移量分配磁碟區塊。
我記得一些 DBMS 創建了稀疏文件,就像 MSC/NASTRAN(有限元素建模系統)這樣的程式一樣。備份這些稀疏文件最終會使用大量離線存儲,這讓所有相關人員都感到驚訝。
答案2
當您看到空間差異時要注意的另一件事是為 root 保留的空間(通常在 ext{2,3,4} 上為 5%)。即使使用者填滿了磁碟(只要該使用者不是 root),該空間也允許作業系統運行(寫入日誌檔案等)。
您可以使用以下命令查看此設定tune2fs -l
:
[root@host ]# tune2fs -l /dev/md0 |grep Reserved
Reserved block count: 1279986
Reserved GDT blocks: 1017
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
您可以在 ext 檔案系統上停用此功能tune2fs -m 0 /dev/NAME
從快速查看來看,我不相信 xfs 為 root 保留了空間