我最近将checksum
我的一个非重复 zfs 文件系统上的属性更改为sha256
from on
(fletcher4) 以更好地支持重复复制流的发送,就像在这个命令中一样zfs send -DR -I _starting-snaphot_ _ending-snapshot_
。
但是,zfs 手册页有这样的说法send -D
:
无论数据集的 dedup 属性如何,都可以使用此标志,但如果文件系统使用支持 dedup 的校验和(例如 sha256),性能会更好。
zfs 联机帮助页也说明了该checksum
属性:
更改此属性仅影响新写入的数据。
我不想相信 fletcher4。权衡是,与 SHA256 不同,fletcher4 不是伪随机散列函数,因此不能相信不会发生冲突。因此,它仅适用于与 'verify' 选项结合使用时进行去重,该选项可检测并解决哈希冲突。
如何更新文件系统的校验和,最好不要使系统脱机?
要更改已写入数据的属性(压缩、重复数据删除或校验和),zfs 方法是通过
zfs send | zfs receive
序列运行数据。显然,您不需要为此使系统脱机,但您需要由于您已经对 zpool 使用重复数据删除,因此
zfs send | zfs receive
在与源相同的池上运行目标将只使用新写入的元数据块所需的空间。但是要准备好复制需要一段时间 - 重复数据删除可能非常缓慢,尤其是如果您没有足够的 RAM 将整个重复数据删除表保存在 RAM 中。您显然需要停止所有写入操作以创建数据集的最终权威副本,但可以通过首先复制快照、停止所有写入并
zfs send -i | zfs receive
作为最后一步执行增量来最大限度地减少停机时间。