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

unf*_*nfa 2 linux zfs

我知道像副本和压缩这样的 ZFS 属性只会影响新写入的数据。

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

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

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

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

磨砂膏对我有用吗?

cas*_*cas 5

不。

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

另外,这种变化适用于整个池或数据集,你可以zfs send快照复制到不同的池(如备份池),破坏从原池的数据集(或销毁池并重新创建它),然后zfs send它背部。注意:您不能使用zfs send's -R( --replicate) 选项执行此操作,因为这也会打开发送-p( --props) 选项。查看man zfs并搜索zfs send更多详细信息。

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