Disk-Usage
AIX jfs2 快照大小如何小於 fs 上的數據大小?
在每個作業系統上,我都創建了大小大於佔用的 fs 空間的快照。例如:如果我有一個名為 /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 “try” 的正確大小
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 檢查……並且適用於快照和真實 fs。
b7fb2207c641085a9cf02064edf1742e /mnt/hello b7fb2207c641085a9cf02064edf1742e /try/hello
問題很簡單:快照大小怎麼會低於真實 fs 的大小?為什麼快照上的空間(1,5mb)低於真實 fs 的已用空間(591mb)?
找到解決方案。“可能”創建一個大小低於實際 fs 使用的 fs 大小的快照,但完全沒用。當我刪除原始文件/try/hello時,快照大小變大(因為文件塊的傳輸)但是因為我在真實fs的大小下創建它,fs變滿了,文件“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.