我应该多久对 ZFS 池进行一次碎片整理?

我应该多久对 ZFS 池进行一次碎片整理?

我每月对 72TB 进行一次 ZFS 清理,大约需要 24 小时。我能找到的清理频率如下:

  • 非常繁忙的游泳池,每周一次
  • 不太繁忙的游泳池,每月一次

或者运行擦洗,测量时间,并进行相应调整。

但是在线碎片整理怎么样?

问题

在线碎片整理是否像清理一样被视为良好做法?如果是,我应该多久进行一次碎片整理?

答案1

这不是您经常需要做的事情。主要是因为 ZFS 中没有在线碎片整理的概念。这实际上只能通过将池数据复制到另一个池或重写到新存储来实现。努力将您的 zpools 利用率保持在 70% 以下。

答案2

我知道这是一个老问题,但如果您今天像我一样遇到这个问题,我觉得我可以补充一些。

ZFS 没有内置的碎片整理选项。由于块的分配方式、ZFS 的写时复制方式以及快照锁定块,这意味着您无法真正对数据进行碎片整理。我知道的唯一解决方案是创建一个大小相等的池,然后 ZFS 发送/接收数据,销毁旧池,然后重新创建并创建它。

另外值得一提的是,你的清理工作是倒退的。你经常使用的数据会不断验证其校验和,而静态数据则闲置在那里,没有验证块/指针校验和。

一般来说,大多数人至少会为大量使用的数据集使用 1 个月的时间(如果你知道 90% 以上的数据将被用作网络服务器,那么时间会更短)

对于不经常使用的数据,每月两次或每周清理一次是个好习惯(取决于磁盘数量、数据量、驱动器使用年限等)YMMV

相关内容