在每个操作系统上,我都创建过大小大于占用的文件系统空间的快照。例如:如果我有一个名为 /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.