delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

19 Oct 2009

ZFS性能的一些优化结论

最近几天测试了一下盘很多(具体说是24块盘,其中2块热备的JBOD)的时候ZFS的性能特点。一些结论

a) ZFS的随机读性能比较差(相对于顺序读写)。这一点除了改为用mirror而不是raidz1/z2之外似乎没什么太好的办法。同样多的硬盘做成两组raidz1(11+11+2),与做成两块盘一组的11组mirror的pool相比,针对同样的数据集的随机读性能相差可达10倍多,当然,mirror的结果是顺序写性能会差一些。作为副作用,mirror时的读性能可提高大约4倍左右。

b) 告诉ZFS数据集常用的数据块尺寸可以提高读写混合的操作的性能。例如如果应用程序多数时间都在操作16K的数据块,将块尺寸改为16K(默认为128K)可将混合操作的性能提高十几倍。

暂时还没测试SSD做ZIL/cache对性能的具体影响,先记下一笔。现在看来如果给数据库用的话,比较好的配置应该是若干对mirror+热备组成zpool,然后把具体存放数据库的zfs的recordsize设置为16k,改天拿实际的数据库在上面跑跑看。