到目前为止,我一直在使用 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
,这两种方法都没有改善情况。
但是,删除然后在系统升级后重新创建书签确实解决了我的问题。