ZFS:更改压缩算法后重新压缩现有文件

row*_*194 15 zfs

我有一个在 2011 年创建的池,使用的是lzjb compression,直到几年后升级才允许我将压缩设置为lz4. 我估计阵列上至少 20% 的内容(按空间)是在 2013 年之前创建的,这意味着它仍然使用lzjb.

我可以想到几个选项来解决这个问题并重新获得(一些)空间:

  1. 备份并还原到新池。不太实用,因为我没有足够的冗余存储来保存临时副本。还原还需要池脱机几个小时。

  2. 编写一个脚本来重新复制时间戳早于 2013 年的任何文件。潜在的风险,特别是如果它因空格或其他特殊字符而窒息并最终破坏了原始名称。

有没有办法让 ZFS 使用当前的压缩算法重新压缩任何遗留块?有点像磨砂膏,但可以治愈压缩。

一个相关的问题:有没有办法查看每种压缩算法的使用情况?zdb 仅显示整体压缩统计信息,而不是将它们分解为单独的算法。

eww*_*ite 15

您必须重新复制数据(全部或部分)或 zfs 将数据发送/接收到新池或 ZFS 文件系统。

没有任何其他选择。