我正在使用zfs list -t snapshot来确定池是否已更改。如果最后一个快照显示它使用了一些空间,那么我确定该池已更改,而我(实际上是一个脚本)做了另一个快照。

我注意到,如果我将文件从1个文件夹移动到池中的另一个文件夹,而命令zfs list -t snapshot仍返回0作为最后一个快照的大小。这对我不利,因为我需要确定我的泳池是否已更改。我做错了什么?还有其他更可靠的方法来确定池是否实际上已更改吗?

最佳答案

快照显示了文件系统过去的特定点(包括其大小)。如果之后删除或修改文件,则不同的块(意味着现在已删除或修改的块)将保留在文件系统上(将其视为已锁定;或者与Unix上的硬链接类似,只要存在对文件的引用,它将不会被删除)。

相反,如果仅添加一个新文件,则旧块保持不变,因此快照的大小不会不同。在同一文件系统中移动文件夹不会添加新数据,因此不会显示大小。

要查看差异,可以使用zfs diff pool/dataset@snapshot pool/dataset将当前状态与上一个快照进行比较。有关在脚本中使用输出的详细信息,请参见my other answer here

关于snapshot - zfs list -t snaphost标识池是否已更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47585677/

10-09 05:05