TrueNas的cache、log、metadata三种缓冲vdev性能测试
微秒
2022年05月26日 16:42

国内用TrueNas多数是为了高性能的局域网共享,一般是基于SMB。配合10Gb网卡+多HDD情况下,适合多人视频剪辑这样场景使用。这种使用场景和默认系统设置下,三个缓冲都是不建议,尽量增加内存容量。

TrueNas有iSCSI和NFS,可以为虚拟化平台提供存储,有这方面需求的请往下看。利用手头2台主机做了一些测试。以下是一些总结,只针对TrueNas在vmware esxi虚拟化平台使用情况下。

硬件:

TrueNas主机:

E3-1230v2  4c8t

16GB DDR3

SATA 7200 500G*4

SSD 256G (用于cache或metadata)

SSD 128G (安装系统)

SSD 16G (用于log)

1Gb 四口网卡

VMware ESXi主机:

E5-2630v4 10c20t

64GB

1Gb 四口网卡

注:没万兆网卡,用的4口千兆,2个主机交叉线对连。

虚拟机:

WIN10 21H2 8c 8G 80G精简置备

VCSA6.7 用于配置多路径

软件:

TrueNas Scale 22.02.1(目前最新版)

VMware ESXi 6.7u3b

关于同步写入和异步写入:

1,这是存储池写入性能影响最大设置,系统默认开启异步写入,具体影响数值看后面的表。

2,因为虚拟化平台属于连续频繁数据写入,如果使用默认异步写入,运行过程中意外断电、意外重启等情况,就会丢失写入数据。非常危险。但是同步写入会严重降低写入性能。

关于缓冲vdev性能:

ZFS使用RAM作为一级缓冲,读写操作直接进内存。所以最直接提升性能的方式是增加内存。

存储池配置里,还能建立cache读缓冲,log写缓冲,metadata元数据读写缓冲三种不同和性能有关的vdev。

cache读缓冲也需要内存容量支持,并不是越大越好,太大的可能会占用过多内存,降低存储池性能。建议容量是内存容量的5-10倍的nvme。

log推荐使用2或更多数量的高写入寿命固态硬盘通过镜像模式,并且超配设置将分区设置为8-16GB来使用。根据官方论坛里看到的某个公式计算,10Gb网卡配置6GB左右容量就够。log并不是写入数据的缓冲,只是校验数据日志的写入缓冲。

metadata没有生产环境的测试,不好判断真实情况。

关于缓冲vdev安全性:

1,cache读缓冲,SSD以条带模式加入池,硬盘损坏,只降低性能,并不影响数据安全。

2,log写缓冲,SSD以镜像模式加入池,硬盘损坏,有数据丢失风险。

3,metadata元数据读写缓冲,SSD以镜像模式加入池,SSD损坏,池也就挂了。SSD一旦加入池不能手动移除。

以上vdev可以同时存在于同一个存储池。另外还有热备和重复数据删除两个vdev,没需求没测试。

虚拟化平台对iSCSI和NFS的支持:

esxi:iSCSI > NFS

xen:NFS > iSCSI

平时使用esxi多,所以主要测试iSCSI,NFS也简单对比测试一下。

NFS没有VAAI支持,不能实现full copy存储内复制,block块清零等关键功能。

ESXi6.7起,支持NFS4,支持多路径。

下面是一些实测的记录截图:

单硬盘测试:SATA 7200 500G,型号ST500DM002,WIN10系统内测速截图

单盘测速 SATA 7200 500G

iSCSI测试记录:

CPU占用:较低,最高30%左右。

测试了4盘RAID5,4盘RAID10,4盘 RAID0。非常奇怪,只能不到2Gb的速度,不能利用到4Gb多路径的全部带宽,或者iSCSI只能使用到2个路径?但实际测试过程中,4个网卡都是有流量的。以后换10Gb网卡再试试,或者更换core版,或者是本身版本问题

NFS:

CPU占用:很高,最高90%以上。

ESXi主机也会有较大CPU占用,但是能够跑满4Gb多路径带宽。

iSCSI和NFS性能对比:

有些记录没保存下来,截图又多又不方便看,结果数值(iops)放表格里:

E3-1230V2在NFS情况下90%的CPU占用,这还只是单虚拟机,4Gb网卡。也许是版本bug。

以上截图虽然没有cache记录,实际是测试的,但是没有性能差异,甚至略低。猜测因为少量数据测试,基本可以做到大概率内存命中。

iSCSI的异步写入和同步写入对比:

统一使用iSCSI,4盘RAIDZ。分别测试了,默认设置,关闭压缩,单独增加cache,单独增加log,单独增加metadata,增加metadata和log的情况。上表是测试的结果数值(iops),下表是以异步写入,开启压缩作为基准,和其他设置的比值。

使用SMB的情况下,应该不会考虑使用同步写入,所以不推荐使用三种缓冲。在这里可以看出,在异步写入情况下,三种缓冲vdev的收益非常小。官方看到在默认异步模式下log缓冲是不起作用的。

iSCSI性能优化建议:

1,更大内存,10Gb网卡,关闭压缩

2,开启同步写入的情况下,使用log缓冲

3,使用RAID1、0、10提升HDD存储池的性能,不用Z和Z2

4,不在乎数据安全,可以开启异步写入

5,iSCSI使用的zvol容量推荐设置是存储池容量的50%,实际使用容量是存储池容量的25%左右,这样可以保持较好性能。实际使用到存储池50%后,性能会大幅下降。

6,即便不在乎性能,也不建议使用容量超过存储池的80%。

7,因为虚拟化io操作密集,io队列关系,建议单个存储池容量控制在5-6TB。如果数据io操作少,可以增大容量。

VMware vSAN是三机或更多主机情况下更好的选择

欢迎交流