ZFS 快照发送增量

ak9*_*907 4 linux zfs zfsonlinux centos7

我一直很高兴地将zfsnap与 CentOS 和 ZFSonLinux 以类似于网站上描述的脚本方式使用,但遇到了问题。不幸的是,几天前备份没有运行,现在我陷入了一个奇怪的境地。我在主 ZFS 服务器上的备份 ZFS 服务器上有一系列增量备份,在主服务器上有一些较新的快照。不幸的是,由于主服务器上旧快照的丢失和自动销毁,两个系统之间不再有公共快照来执行增量发送。即备份有:

backuppool/x@snap2 
backuppool/x@snap3
backuppool/x@snap4
Run Code Online (Sandbox Code Playgroud)

在主 zfs 服务器上有:

mainpool/x@snap6 
mainpool/x@snap7
mainpool/x@snap8
Run Code Online (Sandbox Code Playgroud)

有没有办法让它们再次同步,或者我是否必须销毁备份中的所有内容并执行完整备份(没有足够的空间进行两次完整备份)?我尝试从主服务器指定一个引用远程备份服务器上 snap4 名称的发送,但由于主服务器没有 snap 4,因此无法计算增量。我还尝试将 snap4 从备份发送到主服务器,但似乎唯一的方法是将其作为完整发送(没有足够的空间)进行,并且我需要清除现有快照。如果快照不匹配,删除所有备份历史记录似乎很不方便,在这种情况下有什么解决方案吗?

the*_*bit 5

由于您的设置中没有通用基线快照,您将无法再执行增量zfs send。您需要销毁数据集backuppool

zfs destroy -r backuppool/x
Run Code Online (Sandbox Code Playgroud)

并将最近的快照重新发送到备份池

zfs send mainpool/x@6 | [transfer magic] | zfs recv backuppool/x
Run Code Online (Sandbox Code Playgroud)

如果快照不匹配,删除所有备份历史记录似乎很不方便,在这种情况下有什么解决方案吗?

“解决方案”只是不删除源快照,除非这些快照已被验证已成功传输(即显示在远程zfs list -tall输出中)。我不知道 zfsnap 是否会支持您,但即使不会,您也可以使用 shell 脚本执行此类检查,然后再让 zfsnap 删除任何内容。