ZFS碎片对底层存储的影响

一段时间以来,我们已经意识到ZFS碎片的影响,它通常在zpool超过80%满时成为一个问题,尽管我们看到它在70%到90%以上的任何地方开始,这取决于工作负载。通常情况下,您会看到性能下降和IO负载增加,因为磁盘写操作需要寻找并将一小块空闲空间粘在一起。有一个关于血淋淋的技术细节的很好的总结在这里

正确的解决方法是拥有一个单独的ZFS意图日志(ZIL)设备,但考虑到我们拥有的使用ZFS根磁盘的物理和虚拟服务器的数量,这是不实际的。不幸的是,这也不能解决现有池的问题,而且没有ZFS碎片整理工具。要解决这个问题,您需要删除数据或提供额外的存储空间。

下面的图表清晰地指出了这个问题——下面的卷有两个相互竞争的作业——一个执行大量的读操作(绿色),一个执行少量的写I/O操作(蓝色,负轴)。一个新的卷在12:00被提出并附加到zpool。

在呈现新存储之前的ZFS I/O
在呈现新的存储之前ZFS IO

此时,写操作停止到现有的碎片磁盘,为读作业释放几百个IOPS(到现在cpu受限的程度)。在下面的图表中,你可以看到在新的未碎片化卷上大量减少的写操作:

ZFS IO后添加新的存储。
ZFS IO后添加新的存储。

这是~ 200iops,降低到~ 4iops,写操作放大了50倍。再加上RAID6写入导致的额外I/O,底层的Tier-3 SATA磁盘工作非常辛苦。

驱动器繁忙百分表
驱动器繁忙百分比

不出所料,这个文件系统(以及共享这个Raid Group的其他文件系统)的性能显著提高。

对“ZFS碎片对底层存储的影响

  1. 是的,我们以前的一个同事用SNM工具和RRDTOOL做了一些hack

  2. 你用什么来绘制数据图?您是直接使用rrdtool还是将其导入nagios?

留下回复