数据存储产业服务平台

NETGEAR ReadyNAS RR4312S开箱及性能测试

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测试项目:
  1. 4K文件随机读
  2. 4K文件随机写
  3. 512K顺序读
  4. 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
随机读,IOPS1512

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-12SATA硬盘应该是最为常见的12盘位配盘选择了,这里配置了10SATA盘,做了随机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来说应该已经是非常高的硬件配置了。

关于性能:

  1. 性能测试使用的是硬盘类型是SATA和SSD,硬盘类型的对比应该不需要说明了,SSD完全碾压SATA。
  2. 10块SATA盘的大文件读写吞吐量达到950+MBps和800+MBps,8块SATA硬盘的读吞吐量达到700MBps左右,写为500MBps左右,那么RR4312S的硬件基本上实现了SATA硬盘的最高速度了。本次测试尽量避免了主机内存和系统缓存的影响,所以基本上就看系统的优化了。
  3. SSD测试印象深刻。

1) 速度和响应时间都远超SATA(这个基本上不用做啥测试都知道了)

2)RR4312S主柜的极限读吞吐量应该在2GBps以上,写应该在1GBps以上

3)Intel不同时期不同SSD性能区别还是挺大的

未经允许不得转载:存储在线-存储专业媒体 » NETGEAR ReadyNAS RR4312S开箱及性能测试