新手NAS用户/打算升级NAS的用户经常会提到的经典问题如下:

● J4125、N100和N97这些CPU性能差异到底有多大?

● 组了RAID性能会下降吗?我到底应该选择什么RAID类型?

● 外网访问速度会受限制吗?

● NAS会伤硬盘吗?

● 自组NAS什么系统比较好?

以上只是冰山一角,在没有统一测试标准+量化数据统计的前提下,确实很难说清楚,本着我行我也上的原则,分享一套几乎所有NAS通用的跑分测试流程,建议新入手NAS的用户都跑一遍,不仅可以了解NAS各项数据,自组/二手设备还可以排查可能问题点。

 

废话不多说,直接开始,欢迎点赞收藏打赏三连,有复杂问题咨询请单独联系。

 

 

⏹ 测试目标

不同NAS的区别并不只是核心硬件,硬件决定下限,系统软件决定上限,主要影响因素如下:

● CPU就不说了,多程序运行的使用流畅度,也对应能开多少Docker/虚拟机项目。

● 内存会有区别,同代的板载频率一般会高点,对应读写性能会高些。

● 硬盘接口区别不大,基本都是SATA3.0机械硬盘+PCIe3.0固态硬盘,多固态硬盘位的型号可能会拆分通道,也就是单条硬盘的读写性能会下降。

● 网口同样会有区别,对应传输速率的上限,当然实际传输也得看硬盘读写性能,含RAID类型等印象因素。

● 散热区别比较大,内部框架、材质用料、风扇效能和散热设计都会影响温度,严重的话可能会损伤硬盘,单看详情页看不出来,得实际测试各项硬件的温度。

● 底层系统对应的细节比较多,各家底层系统链会有区别,最终反映到系统流畅度、读写性能和运行温度等。

● 实际体验还和用户配置有关系,比如不同RAID的传输性能会不一样,开启SMB3.0负载均衡可能会降低传输速率等等,个人建议就是不懂你就Auto。

以上这些因素决定了最终的使用体验,通过下面的测试可以量化出来,同时也是方便大家定位解决问题。

 

类比电脑的跑分测试,本文的四项测试目标如下:

● 综合跑分用于量化CPU+显卡+内存的硬件机能,对应PC的鲁大师等软件,同时也能反应NAS系统的优化水平。

● 压力测试用于测试整体抗压能力,对应PC的AIDA64,用于评估NAS硬件设计合理性、综合散热性能、核心件发热量以及硬盘工作状态。

● 存储测试用于量化实际的读写性能,对应PC的AS SSD Benchmark,对NAS来说比较重要,用于量化硬盘本身性能、存储池性能以及NAS系统的优化水平。

● 网络测试用的都是Linux主流工具,网络质量和NAS本身关系不大,更多的是看NAS所在的整个拓扑质量,当然各家厂商的内网穿透可能会有速度限制,这个另说。

简单来说,跟着跑完本文的测试并统计出数据,可以大概知道你的设备硬件是什么水平、是否存在传输瓶颈以及运行是否足够安全。

 

本文应该是全网第一套针对NAS设备的测试流程,下面会给出我个人觉得合理的数据标准,有不同见解欢迎在评论区分享,同时也可以艾特你们喜欢的博主,让他们出数据做参考。

 

⏹ 设备说明

原则上所有Docker支持特权模式部署容器的机型都可以跑下文的测试,只不过各家管理器的UI不一样,所以实操会有点区别,原理完全一致,注意看说明就行。

 

本次使用的极空间Z4Pro+,各项测试数据都比较符合预期,所以拿来当案例机了,如果大家感兴趣,后续可以针对不同NAS出单独的教程。

 

⏹ 前置操作(部署独立测试环境)

考虑到蛮多NAS系统是半只读性质,但绝大部分都支持Docker,所以测试环境使用Canonical官方的Ubuntu容器作为测试环境。

 

新手用户建议先为Docker配置加速,一般NAS系统都支持的,如下图所示添加个加速地址就行:

https://docker.1ms.run

 

添加完成后拉取镜像,搜索Ubuntu直接拉取官方镜像,star最多的那个就是。

 

镜像拉取完成后选中镜像,点击添加开始创建容器,下面的说明一定要注意看,不然测试会不准。

 

首先是通用设置,一定要取消性能限制,同时勾选上特权模式,部分NAS会有特殊设置,比如极空间就是可以勾选调用核心显卡。

 

接下来是文件夹路径,添加一组挂载关系:

● 挂载的NAS文件夹创建一个新文件夹,需要在你想要测试的存储池上,这里我命名为test。

● 容器内文件夹填写/mnt,这个直接照抄。

按照这一步配置,下面的测试对应“指定存储池”的性能,并不是测试这台NAS上“所有硬盘”的性能。

 

单独说明一下存储池,这是所有NAS的基础,举一些例子:

● 单独一块机械硬盘做Basic存储池,挂载这个存储池的文件夹,下面的测试对应这块硬盘的性能。

● 两块机械硬盘做RAID1存储池,挂载这个存储池的文件夹,下面的测试对应RAID后的这两块硬盘综合性能。

● 单独一块机械硬盘做Basic存储池,同时有单独的固态硬盘做SSD Cache(加速盘),下面的测试对应机械硬盘+固态硬盘的整体性能。

如果你的NAS有多个存储池,可以单容器挂载不同的文件夹分别测试,也可以单独创建不同的容器分别挂载不同存储池,以此类推,这里就不再赘述了。

 

确认无误后,点击应用,开始创建容器。

 

容器创建完成后,点击SSH(有些NAS的管理器叫Terminal),点击连接,会通过SSH登陆这个Ubuntu容器并在TUI下进行操作。

 

这个Ubuntu容器可以理解为几乎可以调用NAS所有机能的虚拟机,至此,独立的测试环境部署完成,下面开始各项测试的操作流程。

 

⏹ 综合跑分(硬件性能+系统性能)

使用工具为Geekbench,也是目前市面上最具权威+方便比对结果的跑分工具之一。

1️⃣ 实操方法

去Geekbench的官网,下载Linux版本的软件本体:

https://www.geekbench.com/download/

 

下载完成后可以看到,是一个后缀名为.tar.gz的压缩包,将压缩包上传到NAS上刚才创建好的test文件夹,在NAS上解压缩。

 

解压会有一个Geekbench开头的文件夹,将里面的文件(应该是下图的五个)移动到test文件夹下面,重点是里面的geekbench6这个程序。

特别说明:发文时的最新版本geekbench就是geekbench6,后续可能会是geekbench7或者geekbench8,下面运行的时候要注意更换代码。

 

回到ubuntu容器内,依次输入下面的代码,开始执行geekbench6的跑分程序:

cd /mnt

回车(不要复制这两个字,是按键盘的回车键,下面同理)

./geekbench6

回车

接下来会开始自动运行测试程序,运行前建议关闭其他在跑的程序,比如ai相册这些吃CPU性能的程序,不然跑分会比正常低不少。

 

跑完程序如下图所示,会生成一个查看跑分结果的网页链接,复制到浏览器就能查看详细结果了,下面给大家解析下如何比对结果。

 

2️⃣ 数据解析

进入网页如下图所示,如果想使用在线比对功能,需要做两个操作:

● 第一步是注册并登录Geekbench,过于简单就不多说了。

● 第二步是修改结果名称,这里我改成Zspace Z4Pro+。

如果你只是想跑个分炫耀下自己的新NAS,那么就不用做下面这些操作了,但如果想详细对比其他设备,就继续往下看。

 

想要比对设备,点击Set Baseline。

 

假设我要比对某款NAS的性能,直接搜索对应名称。

 

找到你想要对比的机型,点进去就能看到两台设备的跑分差异了,这里的最终分数可以理解为CPU+内存+系统的综合性能差异。

 

对比相同CPU但不同设备的性能差异也比较简单,直接搜索CPU型号,找出你想比对的结果就行。

 

这里我随便找了一台同样使用N355的windows电脑作为对比,下面的具体分数可以大概看出差异:

● widnows设备在光追、HDR等显示类项目的跑分比较高。

● NAS在文字处理、文件传输等数据类项目的跑分比较高。

在核心硬件相同的前提下,这些细节分数可以比对出NAS系统的差异

 

⏹ 压力测试(硬件性能+系统性能+用户设置)

这段使用经典工具stress,我个人建议将这个测试放在第二位,如果设备不稳定,做后续的两个测试完全没有意义。

1️⃣ 实操方法

如果你的NAS已经在使用了,执行本段压力测试前建议停止重要程序,防止因为机能不够导致的程序崩溃+数据丢失。

 

还是在Ubuntu容器内操作,先更新软件源:

apt upate

回车

出现待输入状态代表执行完成,下面同理,就不再赘述了。

 

输入下面命令安装stress工具:

apt install stress

回车

 

安装完成后,输入下面命令进行测试,案例是测试CPU(四线程)+内存(4G):

stress -c 4 --vm 1 --vm-bytes 4096M -t 3600 -v

回车

这里的参数可以根据你的硬件配置灵活修改,1指的是一个内存测试进程,4指的是同时测试4个CPU线程,4096指的是4G内存,3600指的是3600秒(一小时)后自动结束压力测试。

 

这里放一下适合这台NAS的修改案例:

● N355是八核八线程,我就改为-c 8,也就是同时压测8个线程。

● 这台NAS是16G内存,我就改为12288M,也就是压测12G内存。

● 最终就是stress -c 8 --vm 1 --vm-bytes 12288M -t 3600 -v

● 单独测试CPU(八线程),代码是stress -c 8 -t 3600 -v

● 单独测试内存(12G),代码是stress --vm 1 --vm-bytes 12288M -t 3600 -v

具体怎么改需要根据你的实际硬件来,没办法直接照抄。

 

期间想手动停止测试,键盘按Ctrl+C就可以中止了,不需要硬等到一小时结束或者强制停止Ubuntu容器。

 

2️⃣ 数据解析

压测期间打开NAS自带的硬件监控,主要监测以下几个要点:

● 首先看设备会不会死机,会死机肯定是有问题,毕竟一个小时的压测其实挺轻松的,如果出现死机,就按照上面说明,单独测试CPU和内存,看看是哪个硬件有问题。

● 其次看设备温度,包含CPU温度以及硬盘温度,CPU温度应该在80℃以内,各硬盘的待机温度应该在40℃以内。

● 最后看风扇转速,这个不需要看数据,直接听噪音就行,看你是不是能接受,觉得太吵就改一下风扇策略,现在主流NAS基本都支持自定义修改。

如果过不了压测,先调整下摆放位置以及风扇策略,如果还是不行建议是找官方售后沟通处理,过不了测试的原因比较多(比如供电),没那么好定位。

 

⏹ 存储测试(硬件性能+系统性能+用户设置)

本段使用经典工具FIO,需要注意看数据解析部分,因为影响测试结果的因素比较多。

1️⃣ 实操方法

先安装软件:

apt install fio

回车

期间会有提示,按Y回车确认下就行。

 

接着会让选择地区和时区:

5

回车

69

回车

还是老样子,等出现待输入状态代表安装结束。

 

存储池测试一共需要测试四个,分别针对不同的测试场景,复制下面的代码,回车执行:

● 顺序读取

fio --filename=/mnt/testfile --size=100GB --direct=1 --rw=read --bs=64K --ioengine=libaio --iodepth=32 --runtime=120 --numjobs=4 --time_based --group_reporting --norandommap --name=iops-test-job --eta-newline=1

● 顺序写入

fio --filename=/mnt/testfile --size=100GB --direct=1 --rw=write --bs=128M --ioengine=libaio --iodepth=32 --runtime=120 --numjobs=4 --time_based --group_reporting --norandommap --name=iops-test-job --eta-newline=1

● 4K随机读取

fio --filename=/mnt/testfile --size=100GB --direct=1 --rw=read --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1

● 4K随机写入

fio --filename=/mnt/testfile --size=100GB --direct=1 --rw=write --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1

这四个代码是分批测试,不要一起执行!

 

上面给的代码测试比较慢,但测试压力足够,所以需要等蛮久,不要以为死机了哈,判断也比较简单,打开NAS的设备监控,看统计在跑就对了。

 

2️⃣ 数据解析

先不看测试数据统计,测试期间我们需要关注两个数据:

● 第一是会不会死机,死机说明最基本的压力测试都过不了,硬盘有问题,该扔扔,该换换。

● 第二是硬盘温度,机械硬盘/SATA固态硬盘需要低于45℃,M.2固态硬盘需要低于65℃,高温是硬盘杀手。

这里给的温度标准不是绝对,部分企业级别可以在更高温度下工作,当然满载温度越低越好,这点是不会错的。

 

这里我以顺序读取的结果为例,关键数据如下图所示:

● 上红框为平均值,包含速度和IOPS两个单位。

● 下红框为详细数据,包含速度和IOP两项的平均值、最小值和最大值。

正常是综合这些数据去看,比如我这块老硬盘的测试均值是140MB/s,和硬盘厂商标称的180MB/s差异不大,且测试波动很小,就属于合格。

 

简单说一下排障方法:

● 如果是新机械硬盘,且使用的是Basic(直通),和硬盘厂商标称数据偏差太多就是有问题,做了RAID或者开启快照等功能会比标称数据低一些,正常的。

● 如果是老机械硬盘,可以在测试前先看下S.M.A.R.T信息,读写错误太多/有警告就不要继续用了,测试没意义。

● 固态硬盘比较特殊,低空闲率状态下(也就是存的东西太多)的读写性能必然会比厂商标称低很多,这是常识。

如果你看不懂这段,建议是买成品NAS,让NAS的官方客服帮你分析数据

 

⏹ 网络测试(网络环境+系统性能+用户设置)

这里使用Speedtest+MTR+Homebox三项工具进行综合测试,分别针对外部网络+内部网络进行测试,且规避系统限制。

1️⃣ 实操方法

先安装speedtest,用于测试外部网络访问质量:

apt install speedtest-cli

回车

期间会有个提示,输入Y后回车确认就行。

 

安装完成后,开始测试外部网络的连接质量,输入:

speedtest

回车

 

等个几十秒就会打印结果,如下图所示,包含三个数据:

● 下载速度

● 上传速度

● 延迟

这里显示的单位是Mbps,也就是带宽,和你的宽带理论速度对的上就行,换算成速度则是除以8,比如231.66Mbps就是28.96MB/s。

 

接着安装MTR,用于测试NAS所在网络环境的传输延迟:

apt install mtr

回车

期间会有个提示,输入Y后回车确认就行。

 

安装完成后,开始测试外部网络的连接质量,输入:

mtr 你想要测试的目标网址(或者IP)

回车

接下来会进入测试,是全自动跑的,一般建议跑10分钟,测试的差不多了手动按Ctrl+C组合键停止测试并返回SSH的主页,数据分析有点复杂,看下一段。

 

最后是HomeBox,用于测试内网访问质量,这里就不需要用Ubuntu容器了,仓库搜索Homebox,找到xgheaven/homebox,下载镜像。

 

部署也是一样,取消性能限制,勾选上特权模式。

 

点击端口页面,本地端口填写3300,确认无误后点击应用创建容器。

 

容器部署完成后,用同一路由器下的电脑或者手机浏览器,输入:

NAS的IP:3300

点击测速就可以测试内网设备访问NAS的带宽+延迟了。

2️⃣ 数据解析

数据解析上面带着说了一些,这里就说两个重要的点,首先是带宽比对:

● 外部网络的传输速率应该和speedtest测试结果差不多,上面已经说了带宽/速度转换公式,不再赘述。

● 内部网络的传输速率取传输链路的最低值,比如NAS的2.5G网口→路由器的2.5G网口←手机无线网(1000Mbps),理论最大传输速度应该是125MB/s。

也有些特殊情况,比如飞牛云刚宣布免费版本的内网穿透会限速,这些就不好说了,得实际判断。

 

其次是网络延迟,正常只要关注MTR测试结果中的两组数据:

● 第一排是数据类型,loss是丢包率,1%以下都正常,Avg是平均延迟,20ms以内都正常,wrst是最差延迟,越低越好。

● 第二排,也就是标注2的,注意看名称,一般是路由器型号,对应这台NAS到路由器的延迟,数据越低越好。

● 最后一排是NAS到目标网站的数据,数据越低越好。

如果第二排(NAS到路由器)的数据比较差,说明网线或者网口有问题,也有可能是路由器防火墙问题,如果最后一排的数据比较差,一般是路由器问题或者DNS问题。

 

MTR除了可以测试到外部网站的延迟,也可以用来测试内部网络,比如下图这样直接测试内部网络电脑的IP,比对数据就可以定位到底哪一环出问题了。

 

⏹ 结束语

洋洋洒洒弄了五千多字,简单说一下我个人的建议:

● 本文的测试都比较重要,特别是自组NAS/老旧硬盘用户,使用前强烈建议跟着本文做压力测试,毕竟数据无价。

● 影响测试结果的因素在本文中尽可能详细的说明了,但实际定位排障还是比较麻烦,比如电源供电不稳定这些无法用数据体现,没啥好办法。

● 除了本文的案例工具,也有其他不错的选择,比如可以同时跑分+硬盘测速+网络测速的Zbench和SuperBench,确实方便,但不能针对某个硬件做单独测试,看个人需求吧。

如果本文看完觉得迷糊,建议老老实实买成品NAS,毕竟主流厂家都有做他们自己的压力测试,相对来说稳妥点。

0
0