国内用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,因为虚拟化平台属于连续频繁数据写入,如果使用默认异步写入,运行过程中意外断电、意外重启等情况,就会丢失写入数据。非常危险。但是同步写入会严重降低写入性能。
ZFS使用RAM作为一级缓冲,读写操作直接进内存。所以最直接提升性能的方式是增加内存。
存储池配置里,还能建立cache读缓冲,log写缓冲,metadata元数据读写缓冲三种不同和性能有关的vdev。
cache读缓冲也需要内存容量支持,并不是越大越好,太大的可能会占用过多内存,降低存储池性能。建议容量是内存容量的5-10倍的nvme。
log推荐使用2或更多数量的高写入寿命固态硬盘通过镜像模式,并且超配设置将分区设置为8-16GB来使用。根据官方论坛里看到的某个公式计算,10Gb网卡配置6GB左右容量就够。log并不是写入数据的缓冲,只是校验数据日志的写入缓冲。
metadata没有生产环境的测试,不好判断真实情况。
1,cache读缓冲,SSD以条带模式加入池,硬盘损坏,只降低性能,并不影响数据安全。
2,log写缓冲,SSD以镜像模式加入池,硬盘损坏,有数据丢失风险。
3,metadata元数据读写缓冲,SSD以镜像模式加入池,SSD损坏,池也就挂了。SSD一旦加入池不能手动移除。
以上vdev可以同时存在于同一个存储池。另外还有热备和重复数据删除两个vdev,没需求没测试。
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
CPU占用:较低,最高30%左右。
测试了4盘RAID5,4盘RAID10,4盘 RAID0。非常奇怪,只能不到2Gb的速度,不能利用到4Gb多路径的全部带宽,或者iSCSI只能使用到2个路径?但实际测试过程中,4个网卡都是有流量的。以后换10Gb网卡再试试,或者更换core版,或者是本身版本问题
CPU占用:很高,最高90%以上。
ESXi主机也会有较大CPU占用,但是能够跑满4Gb多路径带宽。
有些记录没保存下来,截图又多又不方便看,结果数值(iops)放表格里:

E3-1230V2在NFS情况下90%的CPU占用,这还只是单虚拟机,4Gb网卡。也许是版本bug。
以上截图虽然没有cache记录,实际是测试的,但是没有性能差异,甚至略低。猜测因为少量数据测试,基本可以做到大概率内存命中。
统一使用iSCSI,4盘RAIDZ。分别测试了,默认设置,关闭压缩,单独增加cache,单独增加log,单独增加metadata,增加metadata和log的情况。上表是测试的结果数值(iops),下表是以异步写入,开启压缩作为基准,和其他设置的比值。

使用SMB的情况下,应该不会考虑使用同步写入,所以不推荐使用三种缓冲。在这里可以看出,在异步写入情况下,三种缓冲vdev的收益非常小。官方看到在默认异步模式下log缓冲是不起作用的。
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是三机或更多主机情况下更好的选择
欢迎交流