AIX jfs2 スナップショットのサイズをファイルシステム上のデータのサイズより小さくするにはどうすればよいですか?

AIX jfs2 スナップショットのサイズをファイルシステム上のデータのサイズより小さくするにはどうすればよいですか?

どの OS でも、占有されているファイルシステムのスペースよりも大きいサイズのスナップショットを作成します。たとえば、/try という 250 GB のファイルシステムがあり、使用中のスペースが 100 GB の場合、100 GB かそれより少し大きいスナップショットを作成します。AIX では、ファイルシステムの占有スペースよりも小さいサイズのスナップショットを作成します。これで動作します。2 GB の論理ボリュームでは、590 MB のファイルを作成します。

dd if=/dev/zero of=hello bs=1m count=590
590+0 records in
590+0 records out

590MB以上ではなく256MBのスナップショットを作成します

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 レポート サイズは 256 MB ですが、使用されているのは 1.5 MB です。

df -hT /mnt
/dev/fslv00    jfs2  256M  1,5M    255M   1% /mnt

最後の試みとして、ファイルの md5sum チェックを実行しました。これはスナップショットと実際のファイル システムの両方で機能します。

b7fb2207c641085a9cf02064edf1742e  /mnt/hello
b7fb2207c641085a9cf02064edf1742e  /try/hello

質問は簡単です。スナップショットのサイズが実際のファイルシステムのサイズより小さいのはなぜでしょうか? スナップショットのスペース (1.5 MB) が実際のファイルシステムの使用スペース (591 MB) より小さいのはなぜでしょうか?

答え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.

関連情報