前言
随着ZFS 不断的普及,网上对于ZIL 和L2ARC 是否使用,以及使用效果如何一直没有直观的表现,今天就拿实际测试来看下ZIL 和L2ARC 是否能给ZFS 带来性能提升。
一、测试环境
操作系统:TrueNAS-SCALE-22.02
CPU:INTEL I3-2100T
内存:1*8G DDR1333
主板:ASUS H61
硬盘:2*SATA 1TB 机械(SATA 3G) ,1* NVME 傲腾16G (PCIE 3.0)1*SATA 160G(系统盘)
说明:使用这套较老的配置作为测试平台,可以直观的看到速度提升的效果。
二、测试步骤
1.测试工具及方法
测试使用TrueNas 自带的fio 工具进行测试,测试用到的命令如下:
#随机写测试
fio --filename=test --sync=1 --rw=randwrite --bs=1m --numjobs=1 --iodepth=4 --group_reporting --name=test --filesize=10G --runtime=300
#随机读测试
fio --filename=test --sync=1 --rw=randread --bs=1m --numjobs=1 --iodepth=4 --group_reporting --name=test --filesize=10G --runtime=300
#顺序写
fio --filename=test --sync=1 --rw=write --bs=1m --numjobs=1 --iodepth=4 --group_reporting --name=test --filesize=10G --runtime=300
#顺序读
fio --filename=test --sync=1 --rw=read --bs=1m --numjobs=1 --iodepth=4 --group_reporting --name=test --filesize=10G --runtime=300
测试方法:使用TrueNas 将两块1TB 容量的SATA硬盘 组成ZFS mirror Pool(所有参数为默认),通过SSH 连接TrueNAS并执行fio的测试命令。将傲腾16G 单独作为ZIL 或者L2ARC设备进行测试
2.测试数据
随机写(1) | 随机写(2) | 顺序写(1) | 顺序写(2) | |||||
---|---|---|---|---|---|---|---|---|
BW(MB/S) | IOPS | BW(MB/S) | IOPS | BW(MB/S) | IOPS | BW(MB/S) | IOPS | |
无ZIL | 21.4 | 21 | 21 | 21 | 20.6 | 20 | 21.3 | 21 |
有ZIL | 99 | 99 | 99.4 | 99 | 99.5 | 99 | 99.8 | 99 |
随机读(1) | 随机读(2) | 顺序读(1) | 顺序读(1) | |||||
---|---|---|---|---|---|---|---|---|
BW(MB/S) | IOPS | BW(MB/S) | IOPS | BW(MB/S) | IOPS | BW(MB/S) | IOPS | |
无CACHE | 74.3 | 74 | 67.2 | 67 | 263 | 263 | 269 | 269 |
有CACHE | 100 | 100 | 94.3 | 94 | 268 | 267 | 269 | 268 |
备注说明:由于使用的是H61主板,SATA总想最高支持3G,即实际传输速度最高300MB,所以顺序读的结果已经接近SATA 总线的最大速度(考虑到信号传输损失等)。
总结
从测试结果看:
写入:不论是随机写还是顺序写使用NVME设备的 ZIL 都带来了较大的性能提升;
读取:使用NVME的CACHE 对随机读有提升,但是对顺序读几乎没有带来提升;
结论:使用基于NVME设备的ZIL 和L2ARC 确实可以给ZFS 带来性能提升(尤其是老平台)