我有一个zpool,它被允许变得非常饱满,而且写得非常充实。它现在回到了80%以下,但是它上面的一些文件系统仍然很慢。
我理解,对zfs receive
这些文件系统进入一个新池将有效地对它们进行碎片整理。假设有一个新池没有足够的存储空间,但是我可以将几个文件系统的zfs send
流引导到磁带上,销毁池中的那些文件系统,然后zfs receive
再次将它们放入池中
所以我的问题是,如果通过移动文件系统释放足够大的空间百分比(但不是全部空间),那么同样严重碎片化的zpool也会被释放,然后将其自由空间足够合并到收到回到池后,相同的文件系统会更好地分配?这可以实现足够的碎片整理吗?
答案 0 :(得分:2)
很难知道。如果您能够释放足够的游泳池,那么很可能会有大的连续区域(比如50%),那么您可以使用您描述的方法。但是,即使有50%的磁盘空闲,理论上也可以分配所有其他块,导致发送后的碎片级别相同。
确保这一点的唯一方法是将所有数据迁移到新池。如果您的存储空间不足,您也可以在云中使用中间ZFS计算机进行此传输,以避免自己购买磁盘。这样做的另一个好处是,如果您的发送流以某种方式损坏,您可以重新发送它而不是SOL。