我的 ZFS 系统是由 8 x 10T HDD 组成的 raidz2,读取性能一直在 190MB/s 左右。这个速度不算太慢,但是到达这个速度时,从 iostat 的情况看,磁盘使用率只有 25% 左右,cpu 占用率也不高,还有很大的提升空间。
在网上找了半天,看到 zfetch_max_distance 参数可能会影响读取性能,这个参数影响流预加载最大大小,或者可以说是读取 buffer 的大小(参考这个文档)。
使用命令 echo 67108864 > /sys/module/zfs/parameters/zfetch_max_distance
来将这个参数调整为 64MB 大小,可以显著提高读取速度。