我一直在试验 LVM 以及如何使用它来管理我的 NFS 服务器上的数据。通过我读过的关于快照的所有内容,我仍然不确定它们在现实生活中的表现。如果快照只是一堆指向原始数据的指针,为什么需要在快照中分配空间?如果修改源上的文件也会通过写时复制触发对快照的修改,那么快照的意义何在?我认为快照应该是原始的“静态”时间点。
我的期望是这样的:
$ ls origin-data
> file1 file2
$ snapshot origin-data to origin-data-snapshot
$ modify origin-data and add new stuff
$ ls origin-data
> file1-modified file2 file3 file4
$ ls origin-data-snapshot
> file1 file2
$ sizeof origin-data-snapshot
> 0 bytes because they're all just pointers to blocks in origin-data!
Run Code Online (Sandbox Code Playgroud)
如果我误解了,请解释并解释如何以我期望的方式使用快照(例如 git 提交、静态、不变、不关心所做更改的某个时间点的数据指针到原点)。是否涉及 RO 或 RW 快照?
更新:我一直在试验一些测试分区,并且有了更多的理解。在挂载 origin 和它的快照时, origin 中的新文件显然会出现在类似df -h但不在快照中的东西中。同时,lvdisplay显示“分配给快照”的百分比在增加。使用 10mb 测试文件和 1gb 测试分区,我确切地看到了这个百分比与我的数据相关的行为,但为什么必须如此?为什么新数据显示在快照上而不是源上?我认为这些块的行为类似于硬链接,因为旧数据保留在那里,因为快照指向它,而在它们旁边创建新块,因为原点指向新的和修改过的块。不?