系统优化

飞牛NAS磁盘性能测试:fio/DD全面评测

为什么需要测试磁盘性能

飞牛NAS作为一款轻量级、高性能的NAS系统,磁盘性能直接决定了文件传输速度、虚拟机响应、数据库读写等关键体验。很多用户升级硬盘后感觉“快了不少”,但缺乏量化数据支撑。本文将通过fio和DD这两个经典工具,手把手教你科学评测飞牛NAS的磁盘性能,并解读测试结果。

准备工作

进入飞牛NAS的SSH环境

飞牛NAS默认开启SSH服务,你可以通过终端工具(如Putty、Termius)连接。登录后执行以下命令确认系统版本和挂载点:

uname -a
df -h

找到你的数据盘挂载路径,例如 /vol1/1000/mnt/ssd1。后续测试会基于这个目录进行。

安装fio工具

fio是业界标准的磁盘性能测试工具,飞牛NAS的软件源中已包含。直接安装即可:

sudo apt update
sudo apt install fio -y

DD工具系统内置,无需额外安装。

使用DD进行基础吞吐测试

DD适合快速评估磁盘的连续读写能力,结果直观但精度较低。我们分两步测试写和读。

测试顺序写入

创建一个1GB的文件,写入到测试目录:

dd if=/dev/zero of=/vol1/1000/test.dd bs=1M count=1024 conv=fdatasync

参数说明:if=/dev/zero 表示写入零数据,bs=1M 是块大小,count=1024 生成1GB文件,conv=fdatasync 强制写入磁盘后再结束。

输出类似:1073741824 bytes (1.1 GB) copied, 2.345 s, 458 MB/s

测试顺序读取

读取刚才写入的文件,利用Linux缓存机制:

dd if=/vol1/1000/test.dd of=/dev/null bs=1M count=1024

注意:这里需要先清空缓存,否则读的是内存数据,结果虚高。清空缓存命令:

echo 3 | sudo tee /proc/sys/vm/drop_caches

然后立即执行读取测试。结果应反映磁盘的真实顺序读取能力。

测试后的清理

测试完成后删除临时文件:

rm /vol1/1000/test.dd

使用fio进行深度性能剖析

DD只能测试单线程顺序,实际场景中还有随机读写、混合负载、不同队列深度等需求。fio可以模拟这些复杂场景。

测试随机4K读写(高IOPS场景)

这是数据库、虚拟机等应用最关心的指标。创建一个测试文件,执行4K随机读写:

fio --name=random_4k --ioengine=libaio --rw=randrw --bs=4k --size=1G --numjobs=1 --iodepth=32 --runtime=30 --time_based --group_reporting --direct=1 --filename=/vol1/1000/fio_test

参数拆解:--rw=randrw 指混合随机读写,比例默认50%读50%写。--iodepth=32 是队列深度,模拟高并发。--direct=1 绕过系统缓存,直接测试磁盘原生性能。--runtime=30 运行30秒。

输出会显示IOPS(每秒输入输出次数)和延迟。例如:read: IOPS=12.5k, BW=48.9MiB/s 表示读IOPS为12500,带宽约49MB/s。

测试顺序128K读写(大文件传输场景)

文件拷贝、视频剪辑等场景更看重顺序性能:

fio --name=seq_128k --ioengine=libaio --rw=read --bs=128k --size=1G --numjobs=1 --iodepth=1 --runtime=30 --time_based --group_reporting --direct=1 --filename=/vol1/1000/fio_test

--rw=read 改为 write 即可测试顺序写入。--iodepth=1 模拟单线程顺序传输。

结果中的带宽(BW)数据最有参考价值,例如:BW=562MiB/s

测试真实混合负载(70%读30%写)

模拟NAS日常使用(有人看电影,有人备份文件):

fio --name=mix_workload --ioengine=libaio --rw=randrw --rwmixread=70 --bs=4k --size=2G --numjobs=4 --iodepth=16 --runtime=60 --time_based --group_reporting --direct=1 --filename=/vol1/1000/fio_test

--rwmixread=70 设置读占比70%。--numjobs=4 开4个并发进程,模拟多用户访问。

多盘测试与清理

如果飞牛NAS组了RAID0或RAID1,建议在对应挂载点下测试。完成后删除fio生成的临时文件:

rm /vol1/1000/fio_test

解读测试结果

关键指标说明

IOPS(Input/Output Operations Per Second):每秒I/O次数,越高代表处理小文件、随机请求的能力越强。HDD通常几百,普通SATA SSD几千,NVMe SSD可达几十万。

带宽(BW):每秒传输数据量,顺序读写场景更关注此值。千兆网络下,机械盘150MB/s足够,SSD则需500MB/s以上才能跑满万兆网卡。

延迟(Latency):平均每次I/O完成时间,以微秒或毫秒为单位。NVMe SSD延迟通常低于100微秒,机械盘可能达到十几毫秒。

不同硬盘的参考值

机械硬盘(7200转):顺序读写约150-200MB/s,随机4K IOPS约100-200。

SATA SSD(如三星870 EVO):顺序读写约550MB/s,随机4K IOPS约80000-100000。

NVMe SSD(如三星980 Pro):顺序读写约3500MB/s,随机4K IOPS约500000以上。

如果测试结果远低于预期,检查以下可能:磁盘是否接在SATA2接口?飞牛NAS是否启用了RAID校验?系统是否正在后台运行其他任务?

进阶技巧

测试不同块大小的影响

用fio的--bssplit参数可以模拟混合块大小,更贴近真实应用:

fio --name=split_test --ioengine=libaio --rw=randrw --bssplit=4k/30:64k/30:1M/40 --size=1G --numjobs=1 --iodepth=8 --runtime=30 --time_based --group_reporting --direct=1 --filename=/vol1/1000/fio_test

这表示30%的I/O是4K块,30%是64K,40%是1M,模拟数据库、日志、文件传输的混合场景。

使用zram或缓存加速后的对比

如果你在飞牛NAS上配置了zram(内存压缩缓存)或L2ARC(SSD缓存),可以分别在启用和禁用缓存的情况下测试,直观看到加速效果。例如先运行一次fio,然后挂载缓存设备再测一次,对比IOPS提升。

总结

通过DD和fio的组合测试,你可以全面掌握飞牛NAS磁盘的真实性能。DD适合快速验证顺序读写极限,fio则能深入分析随机IO、混合负载和并发能力。建议定期(如每季度)运行一次基准测试,记录数据,这样当系统变慢时,能快速发现磁盘是否老化或出现异常。性能测试不是一次性工作,而是NAS运维的常态化工具。

💬 评论区
leave a comment

no comments yet