Disk-Usage

AIX jfs2 快照大小如何小於 fs 上的數據大小?

  • June 26, 2021

在每個作業系統上,我都創建了大小大於佔用的 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.

引用自:https://unix.stackexchange.com/questions/655736