数据在您拍摄的尽可能多的快照中被引用,并且只有当您删除所有引用所述数据的快照以及正在运行的卷中的数据时,才会从磁盘中删除数据,这对于 btrfs 和 ZFS 都适用。
例如,在 btrfs 中,如果我创建~/mifyle.txt
然后拍摄 的快照@home
,除非我删除此快照,否则我的文件不会从磁盘中删除~/myfile.txt
,并且 ZFS 也会发生同样的情况。
但是,如果我从@
和拍摄快照@home
怎么办?将~/myfile.txt
在@和@home快照中引用还是仅在@home快照中引用?
ZFS 的行为是否有所不同?如果我创建一个文件rpool/home/myfile.txt
,rpool
父数据集和rpool/home
子数据集在哪里,然后为rpool
和拍摄快照rpool/home
,myfile.txt会在两个数据集快照中引用还是仅在子数据集快照中引用?
每个数据集,无论是子数据集还是父数据集,都是它自己的文件系统。文件系统是文件和目录被引用和保存的地方。
对rpool执行的快照仅影响数据集rpool。对 rpool/ home进行的快照只会影响数据集home。
请记住,home不仅仅是rpool中的一个目录,它是一个文件系统,它恰好安装在路径 /mnt/rpool/home 中。
如果您将文件保存在主数据集中,然后再销毁主数据集,则主数据集中的所有文件和文件夹都将消失:包括保存在其快照中的文件和文件夹!在home挂载到 /mnt/rpool/home期间,没有此类文件保存在rpool数据集中。
对于快照也是如此。为 rpool/ home拍摄快照不会为rpool创建快照;只制作家庭快照。
您可能对rpool影响 rpool/ home感兴趣的唯一原因是当您对rpool使用递归操作时,任何此类递归操作都会影响rpool及其所有子项,包括 rpool/ home。
如果您为rpool创建递归快照,它不会创建单个快照。它创建多个快照,每个数据集一个。
此命令将产生以下快照。-r 是“递归的”:
您可以选择使用以下命令销毁所有快照。注意 -r 选项:
如果您更喜欢有选择性,您可以只销毁特定快照而不会损害任何其他快照。请注意,没有使用 -r 选项:
现在您将只剩下您保留的快照: