ZFS 是否清理现有数据的更新压缩和副本?

ZFS 是否清理现有数据的更新压缩和副本?

我知道 ZFS 属性(例如副本和压缩)仅影响新写入的数据。

但我想知道磨砂膏是否会更新它?

假设我在写入 1TB 文件之前创建了一个池并设置了 compression=lz4 和副本=2。

然后我决定不需要保留同上块,但我也想使用另一种类型的压缩。

如果我现在设置copys=1和compression=gzip-9,有没有办法将其应用于已经写入池的数据?

磨砂膏对我有用吗?

答案1

不。

更改数据集属性,例如compressioncopies仅影响更改后写入的文件。要将这样的更改应用到现有文件,您需要复制它们并在原始文件上进行 mv。当然,这将中断与相同文件名的任何先前快照的任何连接(以及与该文件的任何硬链接的连接,因为 inode 会有所不同)。

或者,要将此类更改应用于整个池或数据集,您可以zfs send为不同池(例如备份池)创建快照,从原始池中销毁数据集(或销毁池并重新创建它),zfs send然后后退。注意:您不能使用 的( ) 选项执行zfs send此操作,因为这也会打开发送的( ) 选项。查看并搜索更多详细信息。-R--replicate-p--propsman zfszfs send

zfs scrub检查池中的现有数据,如果有足够的冗余来获得与校验和匹配的良好副本,则重写任何损坏的副本...如果没有,它只会警告无法纠正的错误。

相关内容