我知道,像复制和压缩这样的ZFS属性只会影响新编写的数据。
但是,我想知道一个擦洗是否会更新这一点?
假设在编写1TB文件之前,我已经创建了一个池并设置了compression=lz4和copies=2。
然后,我决定我不需要保留同位块,但我也想使用另一种类型的压缩。
如果我现在设置了copies=1和压缩=gzip-9,是否有一种方法将其应用于已经写入池的数据?
一个清洁工会为我这么做吗?
发布于 2018-02-18 01:48:26
不是的。
更改数据集属性(如compression和copies )只会影响更改后写入的文件。要将这样的更改应用于现有文件,您需要将它们复制并在原始文件上进行mv。当然,这将中断到同一文件名的任何先前快照的任何连接(也会中断到指向该文件的任何硬链接,因为inode将有所不同)。
或者,要将此类更改应用于整个池或数据集,您可以将快照zfs send到另一个池(例如备份池),从原始池中销毁数据集(或销毁池并重新创建它),然后将其返回zfs send。注意:您不能使用zfs send的S -R (--replicate)选项来完成此操作,因为这也打开了send的-p (--props)选项。请参阅man zfs并搜索zfs send以获得更多详细信息。
zfs scrub检查池上的现有数据,如果有足够的冗余来拥有与checksum...if不匹配的好副本,则重写任何损坏的副本,它只是警告不可纠正的错误。
https://unix.stackexchange.com/questions/424873
复制相似问题