
在每個作業系統上,我都建立過大小大於佔用的檔案系統空間的快照。例如:如果我有一個名為 /try 的檔案系統,容量為 250GB,但使用的空間為 100GB,我將建立一個 100GB 或更多的快照。在 AIX 上,我創建了一個大小低於 fs 佔用空間的快照......並且可以工作。在 2GB 的邏輯磁碟區上我建立了一個 590MB 的文件
dd if=/dev/zero of=hello bs=1m count=590
590+0 records in
590+0 records out
然後我創建 256MB 而不是 590MB 或更多的快照
snapshot -o snapfrom=/try -o size=256m
Snapshot for file system /try created on /dev/fslv00
df 報告 fs「嘗試」的正確大小
df -hT /try
/dev/try jfs2 2,0G 591M 1,5G 29% /try
我可以掛載快照
mount -o snapshot /dev/fslv00 /mnt/
df 報告快照大小為 256mb,但已使用 1.5mb!
df -hT /mnt
/dev/fslv00 jfs2 256M 1,5M 255M 1% /mnt
對於最後一次嘗試,我對檔案進行了 md5sum 檢查。
b7fb2207c641085a9cf02064edf1742e /mnt/hello
b7fb2207c641085a9cf02064edf1742e /try/hello
問題很簡單:快照大小如何小於真實檔案系統的大小?為什麼快照上的空間(1,5mb)低於真實檔案系統的已使用空間(591mb)?
答案1
找到解決方案。 「可能」會建立一個大小低於實際檔案系統所用檔案系統大小的快照,但完全沒用。當我刪除原始檔案 /try/hello 時,快照大小變大(因為檔案區塊的傳輸),但因為我在真實檔案系統的大小下創建了它,所以檔案系統變滿,檔案「hello」變成損壞,並回傳I/O 錯誤。
df -hT /mnt
/dev/fslv00 jfs2 256M 256M 0 100% /mnt
md5sum /mnt/hello
md5sum_64: /mnt/hello: There is an input or output error.