ZFS 增量发送问题:IV 设置 GUID 丢失

ZFS 增量发送问题:IV 设置 GUID 丢失

到目前为止,我一直在使用 ZFS,没有遇到太多麻烦,但今天我遇到了一个非常奇怪的错误。我基本上是在进行增量发送(加密硬盘驱动器),如下所示:

$ sudo zfs send -w -v -i  "#myoldsnap" "mylocalzfspool/encrypted_home@mynewsnap" | sudo zfs recv myexternalpool/backup/Laptop -F
send from mylocalzfspool/encrypted_home#myoldsnap to mylocalzfspool/encrypted_home@mynewsnap estimated size is 13.8G
total estimated size is 13.8G
cannot receive incremental stream: IV set guid missing. See errata 4 at https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-ER.

,如果我替换#myoldsnap@myoldsnap(即如果我使用快照而不是书签),那么它就可以工作...但是,我更喜欢使用书签,因为稍后我可能需要删除快照以节省空间。

如果有帮助,这里是我在外部磁盘上确实有旧快照以及本地磁盘上的书签的证明:

$ sudo zfs list -t snapshot -o name
NAME
mylocalzfspool/encrypted_home@myoldsnap
mylocalzfspool/encrypted_home@mynewsnap
[...]
myexternalpool/backup/Laptop@myoldsnap


$ sudo zfs list -t bookmark 
NAME                                                                                 USED  AVAIL     REFER  MOUNTPOINT
mylocalzfspool/encrypted_home#myoldsnap                            -      -         -  -
mylocalzfspool/encrypted_home#mynewsnap                                     -      -         -  -

知道为什么它在书签上失败吗?通常我没有太多问题,同时我刚刚在外部池上创建了另一个卷,并且我尝试使用不支持加密的旧版本打开 ZFS 一次,但我收到了一个错误...但这就是我所能做的考虑到。

答案1

我知道这篇文章很旧,但我今天遇到了这个问题,想添加我的发现。

事实证明,在我的情况下,发送书签创建了一个错误的流,这可以zstreamdump在源上进行检查:

zfs send -w -i  "#oldsnap" "tank/home@newsnap" | zstreamdump | grep from_ivset_guid
        from_ivset_guid = 0x0

然而,快照将创建一个正确的“IV set guid”值:

zfs send -w -i  "@oldsnap" "tank/home@newsnap" | zstreamdump | grep from_ivset_guid
        from_ivset_guid = 0x968b62ce478cf1

源 Ubuntu 比目标版本要旧一些,所以我尝试了,apt upgrade然后zpool upgrade tank,这两种方法都没有改善情况。

但是,删除然后在系统升级后重新创建书签确实解决了我的问题。

相关内容