NETGEAR ReadyNAS RR4312S是2016年底发布的一款2U机架式NAS(IP SAN+NAS),在NETGEAR的产品线定位里面是属于机架式最高性能的产品。从其硬件来看,采用较新的Intel Xeon ES-1245v5 4核 3.5GHz CPU以及标配16GB的DDR4 ECC内存,可升级扩展到64GB,同时配备有2个SFP+(或10GBase-T)端口。对于该级别NAS来说应该已经是非常高的硬件配置了。这篇评测我们主要关注硬件和性能,软件功能部分下面概述一下。
软件功能
作为NAS,必然需要提供软件服务,如SMB/AFP/FTP/NFS等等,以及IP SAN(iSCSI)。ReadyNAS也不例外,基本上常见的文件共享协议都是支持的。这里NETGEAR主推一个5级数据保护的功能。我们简单来看一下:
X-RAID自动扩展RAID技术;
Bit-Rot位衰减保护;
无限制次数的快照提供连续数据保护;
免费实时防病毒软件;
ReadyDR功能实现灾备;
细节部分这里不详述,有需要可以访问官网获取详情。
开箱部分
首先来看一下官网的RR4312的硬件参数
其中,RR4312S和RR4312X的区别在于10G网口分别为SFP+光口和10GBase-T RJ45电口。
首先,外包装是一个巨大无比的NETGEAR的纸箱,由于RR3312和RR4312外观和大小相同,所以纸箱上有两个型号的标注
打开箱子,可以看到附件
分别有上架的导轨,电源线,面板还有冗余电源。
设备拿出来,放在桌子上,标准的2U高度的机架式设备
顶上为铭牌,标识了硬盘槽位的信息,以及机器的SN,所有网口的MAC地址,以及一些必要的信息
推开背上的盖子,就可以露出设备内部
设备硬件分布非常合理,热量通过3个8CM暴力风扇带出,而且对于CPU,还有导风罩配置,帮助风扇吹出的气流更好的流过CPU散热片以及旁边的10G网卡的芯片散热片
硕大的CPU散热片旁边是内存槽,和风扇垂直,以便于气流流过散热,内存使用的2跟8G ECC内存,组成16G双通道配置
CPU旁边为万兆网卡,网卡使用的是INTELX710芯片
CPU导热罩的一边为3个SFF-8087接口,正面12个硬盘槽位均通过这里连接至主板
接下来我们转到设备的背面,左侧为两个冗余电源,每个电源550W,白金效率
设备背后一共有4个千兆RJ45 LAN口,2个SPF+万兆接口,2XUSB3.0,2XESATA可以外挂硬盘柜
为了整机的散热,上面满布散热孔,所以无需担心机器过热的问题。
回到机器正面,正面12盘位的硬盘槽
而且所有网件的机架式的NAS的硬盘架均为防震设计,即使您硬盘满配,也无需担心震动对硬盘以及设备带来的影响,为您的数据安全提供周全的保护
接下来我们只要把硬盘安装至硬盘架,然后插入NAS,就可以完成硬件安装了
通电后可以看到硬盘架上的LED状态灯亮起
至此,RR4312S的开箱部分结束
性能测试
多数NAS性能测试,都是使用IOmeter加多台高性能服务器/工作站/台式机,同时配置尽可能多的SSD/SATA硬盘,如36颗、60颗等等,多数情况下测试出来的数据在一般用户层面是达到不了。当然,这也有其意义,第一是这么测试能得到整套存储解决方案的“极限性能”,其次是厂商也会表明这是实验室环境,一般客户达到不了。那么我这里的测试,我们从更贴近实际普通用户的角度,从SATA到SSD都会有所涉及。一方面主要是考察RR4312S的IO性能,一方面也可以简单对比一下SATA/SSD、不同RAID级别、不同的功能集的性能区别。这里测试使用FIO软件,这虽不是工业级标准性能测试软件(如IOmeter或者NASPT),但是其好处是我测试的数据,跟你搭配类似级别的硬盘所测试出来的数据估计八九不离十。而不会是我测试出2GBps,而你只能跑出来200MBps。
关于测试软件:FIO
Fio的开发者是Jens Axboe,Jens Axboe是Linux Kernel block level和众多IO Scheduler的maintainer。目前供职于Facebook。FIO的开发基本上是因为Jens Axboe平常测试Linux IO所需,下面的介绍摘自Github(https://github.com/axboe/fio)
Fio was originally written to save me the hassle of writing special test case programs when I wanted to test a specific workload, either for performance reasons or to find/reproduce a bug. The process of writing such a test app can be tiresome, especially if you have to do it often. Hence I needed a tool that would be able to simulate a given I/O workload without resorting to writing a
tailored test case again and again.
A test work load is difficult to define, though. There can be any number of processes or threads involved, and they can each be using their own way of generating I/O. You could have someone dirtying large amounts of memory in an memory mapped file, or maybe several threads issuing reads using asynchronous I/O. fio needed to be flexible enough to simulate both of these cases, and many more.
Fio spawns a number of threads or processes doing a particular type of I/O action as specified by the user. fio takes a number of global parameters, each inherited by the thread unless otherwise parameters given to them overriding that setting is given. The typical use of fio is to write a job file matching the I/O load one wants to simulate.
装备
设备 | 型号 | 数量 |
2U机架式存储 | RR4312S | 1 |
交换机 | M4300-28G | 1 |
SATA硬盘 | WD WD4000F9YZ | 10 |
SSD | Intel SSD DC S3710 | 6 |
SSD | Intel SSD 710 | 4 |
10G光纤DAC | NETGEAR AXC761 | 1 |
准备测试RAID级别
RAID5, RAID50, RAID10
测试的项目
- ReadyDR功能速度
- 存储后台dd命令
- FIO测试项目:
- 4K文件随机读
- 4K文件随机写
- 512K顺序读
- 512K顺序写
项目一:RR4312S存储后台dd
RAID配置一:RR4312 SATA*8 RAID10
root@nas-E7-4F-68:/data/test# dd if=/dev/zero of=test.img bs=1M count=10000
10000+0 records in
10000+0 records out
10485760000 bytes (10 GB, 9.8 GiB) copied, 20.3509 s, 515 MB/s
RAID配置二:RR4312 SATA*8 RAID50
root@nas-E7-4F-68:/data/test# dd if=/dev/zero of=test.img bs=1M count=10000
10000+0 records in
10000+0 records out
10485760000 bytes (10 GB, 9.8 GiB) copied, 14.7158 s, 713 MB/s
RAID配置三:RR4312S SSD*12 RAID5
root@nas-E7-4F-68:/data/test# dd if=/dev/zero of=test2.img bs=1M count=20000
20000+0 records in
20000+0 records out
20971520000 bytes (21 GB, 20 GiB) copied, 11.8209 s, 1.8 GB/s
Linux dd命令,这是最简单粗暴的测速方法了。从上述测试结果来看,SSD写入一个20G的文件基本上可以达到1.8GBps的速度。从SATA的测试来看,RAID50比RAID10的速度还快?当然,这可能是因为RAID50(和RAID5)对于大文件写入的性能还是比较理想的。
项目二:ReadyDR备份
备份源:RR4312为SATA RAID50
备份目标:RN526X为SSD RAID5
200MB不到的速度,应该是备份源的SATA速度导致。
项目三:FIO测试随机/顺序读写
由于RR4312是16GB内存,测试文件至少要大于内存才能直接避免缓存等因素过分的影响结果。
以下是测试的配置脚本:
随机读
[Random_Read]
rw=randread bs=4k direct=0 size=512M numjobs=32 iodepth=16 ioengine=libaio runtime=240 group_reporting=1 directory=/data/test |
随机写
[Random_Write]
rw=randwrite bs=4k direct=0 size=512M numjobs=32 iodepth=16 ioengine=libaio runtime=240 group_reporting=1 directory=/data/test |
顺序读
[Seq_Read]
rw=read bs=512K size=4G numjobs=8 iodepth=1 ioengine=libaio runtime=240 group_reporting=1 directory=/data/test |
顺序写
[Seq_Write]
rw=write bs=512K size=4G numjobs=8 iodepth=1 ioengine=libaio runtime=240 group_reporting=1 directory=/data/test |
FIO测试结果
测试命令行输出如下所示,这里我贴2个示例吧,后面直接画个表格出来,不然整篇文章就太长了。
RR4312S RAID5 (10 x SATA), 512K顺序读,950MBps左右
Seq_Read: (g=0): rw=read, bs=512K-512K/512K-512K/512K-512K, ioengine=libaio, iodepth=1
… fio-2.1.11 Starting 8 processes Seq_Read: Laying out IO file(s) (1 file(s) / 4096MB) Seq_Read: Laying out IO file(s) (1 file(s) / 4096MB) Seq_Read: Laying out IO file(s) (1 file(s) / 4096MB) Seq_Read: Laying out IO file(s) (1 file(s) / 4096MB) Seq_Read: Laying out IO file(s) (1 file(s) / 4096MB) Seq_Read: Laying out IO file(s) (1 file(s) / 4096MB) Seq_Read: Laying out IO file(s) (1 file(s) / 4096MB) Seq_Read: Laying out IO file(s) (1 file(s) / 4096MB)
Seq_Read: (groupid=0, jobs=8): err= 0: pid=27325: Tue Aug 8 15:37:28 2017 read : io=32768MB, bw=950174KB/s, iops=1855, runt= 35314msec slat (usec): min=44, max=510594, avg=4231.24, stdev=26369.82 clat (usec): min=0, max=7, avg= 0.37, stdev= 0.53 lat (usec): min=44, max=510595, avg=4231.72, stdev=26370.04 clat percentiles (usec): | 1.00th=[ 0], 5.00th=[ 0], 10.00th=[ 0], 20.00th=[ 0], | 30.00th=[ 0], 40.00th=[ 0], 50.00th=[ 0], 60.00th=[ 0], | 70.00th=[ 1], 80.00th=[ 1], 90.00th=[ 1], 95.00th=[ 1], | 99.00th=[ 2], 99.50th=[ 2], 99.90th=[ 3], 99.95th=[ 3], | 99.99th=[ 4] bw (KB /s): min= 2355, max=272532, per=12.68%, avg=120522.40, stdev=32883.72 lat (usec) : 2=98.00%, 4=1.97%, 10=0.03% cpu : usr=0.02%, sys=2.36%, ctx=8160, majf=0, minf=1067 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued : total=r=65536/w=0/d=0, short=r=0/w=0/d=0 latency : target=0, window=0, percentile=100.00%, depth=1 Run status group 0 (all jobs): READ: io=32768MB, aggrb=950173KB/s, minb=950173KB/s, maxb=950173KB/s, mint=35314msec, maxt=35314msec |
RR4312S RAID5 (10 x SATA), 4K随机读,IOPS为1512。
Random_Read: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=16
… fio-2.1.11 Starting 32 processes Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: Laying out IO file(s) (1 file(s) / 512MB) Random_Read: (groupid=0, jobs=32): err= 0: pid=27106: Tue Aug 8 15:31:29 2017 read : io=1418.4MB, bw=6049.5KB/s, iops=1512, runt=240080msec slat (usec): min=43, max=1651.2K, avg=21152.26, stdev=49526.06 clat (usec): min=0, max=2407.1K, avg=316815.10, stdev=194304.98 lat (msec): min=4, max=2420, avg=337.97, stdev=200.85 clat percentiles (msec): | 1.00th=[ 112], 5.00th=[ 135], 10.00th=[ 149], 20.00th=[ 174], | 30.00th=[ 198], 40.00th=[ 225], 50.00th=[ 255], 60.00th=[ 297], | 70.00th=[ 351], 80.00th=[ 429], 90.00th=[ 570], 95.00th=[ 701], | 99.00th=[ 1045], 99.50th=[ 1172], 99.90th=[ 1483], 99.95th=[ 1598], | 99.99th=[ 1975] bw (KB /s): min= 3, max= 482, per=3.23%, avg=195.68, stdev=82.96 lat (usec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01% lat (msec) : 10=0.01%, 20=0.01%, 50=0.01%, 100=0.30%, 250=48.25% lat (msec) : 500=37.42%, 750=10.01%, 1000=2.78%, 2000=1.20%, >=2000=0.01% cpu : usr=0.01%, sys=0.06%, ctx=363158, majf=0, minf=689 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=99.9%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0% issued : total=r=363089/w=0/d=0, short=r=0/w=0/d=0 latency : target=0, window=0, percentile=100.00%, depth=16 Run status group 0 (all jobs): READ: io=1418.4MB, aggrb=6049KB/s, minb=6049KB/s, maxb=6049KB/s, mint=240080msec, maxt=240080msec |
因为ReadyNAS支持Bit Rot保护,也支持压缩功能,所以下面的测试分成好多种组合,首先是RAID分为10和50,然后分别包括是否启用Bit Rot保护、是否开启压缩,以及SATA或者SSD。
另外,随机读写只列出IOPS,顺序读写只列出吞吐量。
图例:
R表示:RAID,所以R10就是RAID10
B表示:开启了Bit-Rot功能
C表示:Compression,开启了压缩功能
10-12块SATA硬盘应该是最为常见的12盘位配盘选择了,这里配置了10块SATA盘,做了随机IO测试,对比8块盘的结果来说,增加硬盘对IO的增加还是有明显效果了(相比8块盘增加了20%左右)。
10块盘、RAID5下的顺序读写吞吐量,950MBps读和805MBps写,一般来说可以粗略认为普通SATA盘的顺序读写大文件吞吐量是100MBps左右,那么这里去掉RAID5的开销,跑出这个吞吐量应该都是非常高效而又不离谱的结果了。
这里针对几项可能影响性能的参数做了对比:RAID级别、是否开启Bit Rot保护和压缩。从结果来看:
- 对于读,不同RAID、是否开启Bit Rot和压缩对性能影响不大。
- 对于写,开了Bit Rot和Compression,对写的性能影响还是挺大的。
8块SATA盘的顺序测试结果。
- 读比写快(一般是这样),顺序读吞吐量可以达到700MBps上下,顺序写吞吐量可以达到450MBps上下。
- Bit Rot和Compression对大文件写似乎影响不像随机读写那么大。
- RAID10和RAID50在只有8块盘的时候,大文件性能差不多。
6块Intel SSD DC S3710,较贵,较新的SSD果然性能就是不一样。19万的读IOPS,6万的写IOPS。
SSD进行顺序读写的测试,1400MBps读,900MBps的写吞吐量。
试试12块SSD,虽然SSD的型号不一致:
RAID5和RAID10的性能对比
结合上面两个测试项目来看,RAID5和RAID10在ReadyNAS上面的性能相差其实没有那么大,顺序大文件,RAID5较好,随机小文件是RAID10较好。所以要不要在12盘位NAS上面使用RAID10?这样会有一半的硬盘用于镜像、校验,似乎开销比较大了。在对比上面一项6块盘SSD的测试,可以看到当硬盘数量增加的时候,顺序读写的性能提升非常明显,但是随机性能反倒是下降了,可能的原因是12块盘测试的硬盘里面,有几块是早期的Intel SSD,性能相比后面的3710系列要差不少。
总结
我们这篇文章主要是从硬件和性能的角度进行测试,所以并无重点深入软件和功能方面的。从一方面考察RR4312S单个主柜的大致性能极限,另外一方面也从RAID和功能对性能的影响的角度进行测试。
从硬件的角度来说,采用同类产品中较新的CPU: Intel Xeon ES-1245v5 4核 3.5GHz CPU以及标配16GB的DDR4 ECC内存,可升级扩展到64GB,同时配备有2个SFP+(或10GBase-T)端口。对于该级别NAS来说应该已经是非常高的硬件配置了。
关于性能:
- 性能测试使用的是硬盘类型是SATA和SSD,硬盘类型的对比应该不需要说明了,SSD完全碾压SATA。
- 10块SATA盘的大文件读写吞吐量达到950+MBps和800+MBps,8块SATA硬盘的读吞吐量达到700MBps左右,写为500MBps左右,那么RR4312S的硬件基本上实现了SATA硬盘的最高速度了。本次测试尽量避免了主机内存和系统缓存的影响,所以基本上就看系统的优化了。
- SSD测试印象深刻。
1) 速度和响应时间都远超SATA(这个基本上不用做啥测试都知道了)
2)RR4312S主柜的极限读吞吐量应该在2GBps以上,写应该在1GBps以上
3)Intel不同时期不同SSD性能区别还是挺大的