我正在运行 VDI 服务器。许多 VDI 用户都在他们的桌面上安装相同的应用程序,所以这zfs set dedup=on vdipool/myDesktop
很方便。
如何优化 zfs dedup 的性能影响?
我会预期到哪些性能下降?
有没有办法为重复数据删除过程分配专用的 CPU 线程,以便对系统其余部分的影响最小?
答案1
在 100% SSD 存储上,如果您有足够的 RAM 让 100% 的重复数据删除哈希表始终处于 RAM 中,则性能影响可能是可以承受的。确保您有足够的 RAM 来存储所有元数据是唯一可以进行的优化。
如果您使用的是旋转锈蚀,极端的磁盘碎片将使性能完全无法使用。
一般来说,如果你没有真正看到最低限度10:1 的重复数据删除率,不值得造成巨大的性能影响。
答案2
随着最近引入的分配类(和“特殊”vdev),您可能在非 SSD 池上使用重复数据删除获得足够好的性能,假设您有一个快速的 SSD 来保存元数据(其中包括重复数据删除数据)。
在添加“特殊”vdev 之前,请先进行一些实验,并了解该功能。据我所知,“特殊”vdev 的故障会导致整个池一起故障。此外,您无法删除“特殊”vdev。
https://www.reddit.com/r/zfs/comments/cm594b/why_is_nobody_talking_about_the_newly_introduced/
答案3
如果重复块完全随机地以准级分布出现,那么碎片化在 HDD 介质上将是一个严重的问题。但在实际情况下,情况并非如此。在实际情况下,绝大多数重复块都是作为重复(或非常相似的)文件的一部分出现的,因此它们会成群出现。因此,它不会引起严重的碎片化问题。
除此之外,解决碎片问题的方法是碎片整理,不要避免使用这个非常有用的功能。
然而,zfs 根本没有碎片整理工具或功能。对 zfs 卷进行碎片整理的唯一方法是重建它。除此之外,它还存在一些许可问题。但它仍有很多工作要做,而且很多人觉得它很有用。希望有人能实现碎片整理(甚至可能是在线碎片整理!),在那之前我们应该尊重我们所拥有的。