unfa Asked: 2018-02-18 14:24:59 +0800 CST2018-02-18 14:24:59 +0800 CST 2018-02-18 14:24:59 +0800 CST ZFS 清理是否会更新现有数据的压缩和副本? 772 我知道像副本和压缩这样的 ZFS 属性只会影响新写入的数据。 但是我想知道擦洗是否会更新? 假设我在写入 1TB 文件之前创建了一个池并设置了 compression=lz4 和 copies=2。 然后我决定不需要保留同上的块,但我也想使用另一种类型的压缩。 如果我现在设置副本=1 和压缩=gzip-9,有没有办法将其应用于已写入池的数据? 磨砂膏对我有用吗? linux zfs 1 个回答 Voted Best Answer cas 2018-02-18T17:48:26+08:002018-02-18T17:48:26+08:00 不。 更改数据集属性,例如compression并且copies仅影响更改后写入的文件。要将这样的更改应用于现有文件,您需要复制它们并将它们 mv 覆盖在原始文件上。当然,这将中断与相同文件名的任何先前快照的任何连接(以及与文件的任何硬链接,因为 inode 将不同)。 或者,要将此类更改应用于整个池或数据集,您可以zfs send将快照复制到不同的池(例如备份池),从原始池中销毁数据集(或销毁池并重新创建它),zfs send然后背部。注意:您不能使用zfs send's -R( --replicate) 选项执行此操作,因为这也会打开 send 的-p( --props) 选项。查看man zfs并搜索zfs send更多详细信息。 zfs scrub检查池中的现有数据并重写任何损坏的副本,如果有足够的冗余以获得与校验和匹配的良好副本......如果不是,它只是警告不可纠正的错误。
不。
更改数据集属性,例如
compression
并且copies
仅影响更改后写入的文件。要将这样的更改应用于现有文件,您需要复制它们并将它们 mv 覆盖在原始文件上。当然,这将中断与相同文件名的任何先前快照的任何连接(以及与文件的任何硬链接,因为 inode 将不同)。或者,要将此类更改应用于整个池或数据集,您可以
zfs send
将快照复制到不同的池(例如备份池),从原始池中销毁数据集(或销毁池并重新创建它),zfs send
然后背部。注意:您不能使用zfs send
's-R
(--replicate
) 选项执行此操作,因为这也会打开 send 的-p
(--props
) 选项。查看man zfs
并搜索zfs send
更多详细信息。zfs scrub
检查池中的现有数据并重写任何损坏的副本,如果有足够的冗余以获得与校验和匹配的良好副本......如果不是,它只是警告不可纠正的错误。