AIX jfs2 스냅샷 크기가 어떻게 fs의 데이터 크기보다 작을 수 있습니까?

AIX jfs2 스냅샷 크기가 어떻게 fs의 데이터 크기보다 작을 수 있습니까?

모든 OS에서 나는 점유된 fs 공간보다 더 큰 크기의 스냅샷을 생성합니다. 예를 들어, 250GB의 /try라는 fs가 있지만 사용된 공간이 100GB인 경우 100GB 이상의 스냅샷을 생성합니다. AIX에서는 fs 점유 공간 미만의 크기로 스냅샷을 생성하고 작동합니다. 2GB의 논리 볼륨에 590MB의 파일을 생성합니다.

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 보고서 크기는 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)보다 낮은 이유는 무엇입니까?

답변1

해결책을 찾았습니다. 실제 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.

관련 정보