8 块机械硬盘 RAID 0 实测:飞牛 NAS 阵列速度、ZFS 缓存和 RAID 5/6/10 怎么选

这篇文章整理自我在 B 站发的 8 块机械硬盘 RAID 0 实测视频。问题很简单:一块机械硬盘顺序读写大概 200MB/s 左右,那 8 块盘一起做 RAID 0,是不是就能直接变成 1600MB/s 的“大号机械固态”?

答案是:多线程顺序读写确实能明显起飞,但不是所有场景都会跟着翻 8 倍。随机读写、单线程顺序、文件系统缓存、SMB 网络共享、RAID 校验开销,都会让最后的结果变得很有意思。

8 块机械硬盘 RAID 0 NAS 阵列实测封面
8 块机械硬盘 RAID 0 NAS 阵列实测封面

先说结论

如果只看 Btrfs 下 8 盘 RAID 0 的多线程顺序读写,这套阵列确实很快:读约 1299MB/s,写约 1326MB/s,已经明显超过普通单块机械硬盘,也跑到了万兆网络需要认真对待的速度区间。

但它并不是“所有项目都 8 倍”。这次测试里有几个比较关键的结论:

  • 单盘顺序读写约 193MB/s,是后面所有测试的基准。
  • 4 盘 RAID 0 的多线程顺序读写约 752/741MB/s,接近单盘 4 倍。
  • 8 盘 RAID 0 的多线程顺序读写约 1299/1326MB/s,读写都很强,但没有完全线性翻 8 倍。
  • 8 盘 RAID 0 的单线程顺序读写和 4 盘差不多,说明瓶颈不只在硬盘数量。
  • 4K 随机读写没有像顺序读写那样飞起来,小文件场景不能只看“盘多”。
  • ZFS 测试里读数非常漂亮,但 1GB 测试文件小于内存时,很容易测到缓存效果,不等于硬盘本体速度。
  • SMB 网络测速会受到 NAS、网卡、Windows 缓存和协议栈影响,不能直接等同于本地磁盘速度。
  • RAID 0 完全没有冗余,坏一块盘基本就意味着整组数据出问题。

所以这篇文章的重点不是鼓励大家上 RAID 0,而是借 8 块盘把不同 RAID 模式的性格看清楚:什么场景追求速度,什么场景追求安全,什么场景要接受写入惩罚。

桌面上的 8 块机械硬盘
桌面上的 8 块机械硬盘

RAID 0 到底在做什么

RAID 是磁盘阵列技术,可以把多块硬盘组合成一个逻辑硬盘。不同 RAID 模式会在速度、容量、安全性之间做不同取舍。

RAID 0 是里面最激进的一种。它会把一份数据拆成多个条带,分散写到不同硬盘上。读取时,多块盘一起工作;写入时,也可以并行写入。盘越多,理论顺序吞吐就越高,可用容量也等于所有硬盘容量相加。

RAID 0 把多块物理硬盘组合成一个逻辑硬盘
RAID 0 把多块物理硬盘组合成一个逻辑硬盘
flowchart LR
  A["一个大文件"] --> B["切成多个条带"]
  B --> C1["硬盘 1:条带 A"]
  B --> C2["硬盘 2:条带 B"]
  B --> C3["硬盘 3:条带 C"]
  B --> C4["更多硬盘:继续分散"]
  C1 --> D["并行读写"]
  C2 --> D
  C3 --> D
  C4 --> D
  D --> E["顺序速度提高"]

但 RAID 0 的代价也最直接:没有校验,没有镜像,没有容错。只要其中一块盘坏掉,数据就不再完整。它适合临时缓存、测试盘、可重建素材,不适合放唯一重要数据。

测试环境和命令

这次用飞牛 NAS 识别 8 块机械硬盘,然后分别测试单盘、4 盘 RAID 0、8 盘 RAID 0,以及 Btrfs/ZFS/SMB 和其他 RAID 模式。

飞牛 NAS 已识别出多块硬盘
飞牛 NAS 已识别出多块硬盘

测试里既有图形化测速,也有 fio 命令。fio 这类命令行测试的好处是参数可复现,缺点是普通用户看起来没那么直观。

fio -filename=/vol2/1000/8盘R0/test -direct=1 -iodepth 64 -thread -rw=read -ioengine=libaio -bs=1M -size=2G -numjobs=1 -runtime=60 -group_reporting -name=seq_read

fio -filename=/vol2/1000/8盘R0 -direct=1 -iodepth 1 -thread -rw=randread -ioengine=libaio -bs=4k -size=512M -numjobs=1 -runtime=60 -group_reporting -name=rand_4k_read

创建阵列前一定要注意:新建或切换存储空间通常会格式化硬盘,原数据会被清空。RAID 测试最好用空盘,不要拿唯一数据冒险。

在飞牛 NAS 中创建存储空间
在飞牛 NAS 中创建存储空间

单盘速度:今天的 1 倍速基准

先测单块机械硬盘。这个成绩很标准,顺序读写大概都在 193MB/s 到 195MB/s 左右。后面说 4 倍、8 倍,都应该以这个数字作为参考。

单块机械硬盘本地测速结果
单块机械硬盘本地测速结果
项目 读 MB/s 写 MB/s
顺序 Q8 T1 193.32 193.45
顺序 Q1 T1 194.79 193.95
随机 4K Q32T16 2.07 95.64
随机 4K Q1T1 0.64 11.16

这组数据说明一件事:机械硬盘不是所有项目都慢。大块顺序读写仍然能到 200MB/s 左右,但 4K 随机读写就会被机械结构限制得很明显。

4 盘 RAID 0:多线程顺序读写接近 4 倍

接下来把 4 块盘组成 RAID 0。这个结果非常符合预期:多线程顺序读写从单盘约 193MB/s 提升到 752/741MB/s 左右,基本就是“盘多路宽”的效果。

4 盘 RAID 0 本地测速结果
4 盘 RAID 0 本地测速结果
项目 读 MB/s 写 MB/s
顺序 Q8 T1 751.96 740.50
顺序 Q1 T1 468.32 426.48
随机 4K Q32T16 7.57 76.39
随机 4K Q1T1 0.79 15.37

但它也暴露了 RAID 0 的另一个特点:顺序多线程吃得上多盘并行,随机小文件未必吃得满。4K 随机读有提升,随机写反而比单盘更复杂,不能简单理解成“RAID 0 什么都快”。

8 盘 RAID 0:顺序速度起飞,但不是处处 8 倍

终于轮到 8 块盘。多线程顺序读写的确很好看,读约 1299MB/s,写约 1326MB/s。只看这个项目,它已经不是普通机械硬盘的感觉了。

8 盘 RAID 0 本地测速结果
8 盘 RAID 0 本地测速结果
项目 读 MB/s 写 MB/s
顺序 Q8 T1 1298.99 1325.61
顺序 Q1 T1 465.89 424.17
随机 4K Q32T16 22.30 63.29
随机 4K Q1T1 0.91 15.04

有意思的是,8 盘的单线程顺序读写和 4 盘差不多,都在 400MB/s 到 470MB/s 附近。这说明实际瓶颈可能来自文件系统、队列深度、控制器、调度策略、CPU、链路或测试方式,而不是单纯“硬盘数量还不够”。

把 1 盘、4 盘、8 盘放在一起看更明显:

阵列 顺序 Q8T1 读 顺序 Q8T1 写 顺序 Q1T1 读 顺序 Q1T1 写
单盘 193.32 193.45 194.79 193.95
4 盘 RAID 0 751.96 740.50 468.32 426.48
8 盘 RAID 0 1298.99 1325.61 465.89 424.17

如果你的工作负载是大文件、多线程、连续读写,8 盘 RAID 0 很强。比如临时素材盘、转码缓存、批量拷贝测试,它确实能把机械硬盘拉到很高的吞吐。

但如果你面对的是大量碎文件、数据库、小文件索引、照片缩略图、系统盘任务,机械硬盘阵列仍然会被随机访问拖住。

ZFS 测试:漂亮数字背后可能是缓存

这次也测了 ZFS。结果非常夸张:顺序 Q1T1 读到了 3707MB/s,看起来甚至比 8 盘 RAID 0 本身还高。

ZFS 下 8 盘 RAID 0 的本地测速结果
ZFS 下 8 盘 RAID 0 的本地测速结果
项目 读 MB/s 写 MB/s
顺序 Q8 T1 2594.83 1120.58
顺序 Q1 T1 3707.67 1136.72
随机 4K Q32T16 19.99 7.21
随机 4K Q1T1 19.01 6.90

这里要小心解读。测试文件如果只有 1GB,而机器内存远大于这个文件,ZFS 很可能把读请求留在缓存里。这个时候你看到的就不完全是硬盘速度,而是“硬盘 + 文件系统 + 内存缓存”的综合结果。

ZFS 很强,但它不是魔法。它对内存、校验、缓存策略、写入路径都有自己的要求。如果内存配置不够,或者测试方法没有避开缓存,跑分很容易看起来“不真实”。

SMB 网络测速:你测到的不一定只是硬盘

NAS 日常最常见的用法不是在 NAS 本机跑分,而是在 Windows 上通过 SMB 共享读写文件。这时测试链路会变长:硬盘阵列、NAS 系统、网络、交换机、网卡、SMB 协议、Windows 缓存都会参与。

Windows 通过 SMB 映射 NAS 文件夹后的测速结果
Windows 通过 SMB 映射 NAS 文件夹后的测速结果
项目 读 MB/s 写 MB/s
顺序 Q8 T1 715.78 784.29
顺序 Q1 T1 402.92 450.03
随机 4K Q32T16 218.66 140.89
随机 4K Q1T1 23.59 33.01

这组数字和本地跑分不一样很正常。SMB 场景更接近日常使用,但它不适合直接拿来判断“硬盘本体到底多快”。如果你看到某个 NAS SMB 跑分随机性能特别漂亮,先别急着下结论,缓存很可能也在工作。

其他 RAID 模式:速度、安全和容量怎么换

玩完刺激的 RAID 0,真正要存数据时,很多人反而会更关心 RAID 1、RAID 5、RAID 6、RAID 10。这些模式的意义不是“越快越好”,而是在容量、性能、容错之间选一个你能接受的平衡点。

不同 RAID 模式的容量、安全性和性能对比
不同 RAID 模式的容量、安全性和性能对比
flowchart TD
  A["你要怎么选 RAID?"] --> B{"数据是不是唯一重要数据?"}
  B -->|"是"| C{"能接受少一半容量吗?"}
  B -->|"不是,只是临时盘"| D["RAID 0:速度优先,坏盘就重建"]
  C -->|"能"| E["RAID 10 或 RAID 1:安全优先"]
  C -->|"不能"| F["RAID 5/6:容量和容错折中"]
  F --> G{"更怕同时坏两块盘吗?"}
  G -->|"怕"| H["RAID 6:多一份校验,写入更慢"]
  G -->|"还好"| I["RAID 5:容量利用率更高"]
  E --> J["仍然要额外备份"]
  F --> J
  D --> K["只放可重建数据"]

无论选哪种 RAID,都要记住一句话:RAID 不是备份。RAID 能提高可用性,不能替代离线备份、异地备份和版本恢复。

RAID 1:安全感很高,速度像单盘

RAID 1 主要是镜像。数据会写到多块盘上,目标是让数据有副本,而不是追求容量利用率和极限速度。

RAID 1 本地测速结果
RAID 1 本地测速结果
项目 读 MB/s 写 MB/s
顺序 Q8 T1 183.88 178.47
顺序 Q1 T1 181.29 161.19
随机 4K Q32T16 7.95 34.70
随机 4K Q1T1 0.65 10.23

这组数据基本就是单盘水平。RAID 1 的意义在于安全,不在于让 8 块盘都变成速度贡献者。如果你只想“重要数据尽量稳”,RAID 1 的思路最容易理解,但容量利用率也最肉疼。

RAID 5 和 RAID 6:读很强,写入要付校验成本

RAID 5 和 RAID 6 都会做校验。好处是能在少损失一些容量的情况下获得容错能力;代价是写入时要计算和写入校验信息,尤其小块随机写会很难看。

RAID 5 本地测速结果
RAID 5 本地测速结果
RAID 5 项目 读 MB/s 写 MB/s
顺序 Q8 T1 1177.61 213.36
顺序 Q1 T1 383.91 39.54
随机 4K Q32T16 6.41 24.28
随机 4K Q1T1 0.14 0.03
RAID 6 本地测速结果
RAID 6 本地测速结果
RAID 6 项目 读 MB/s 写 MB/s
顺序 Q8 T1 917.71 211.38
顺序 Q1 T1 215.86 67.64
随机 4K Q32T16 8.84 33.14
随机 4K Q1T1 0.12 0.07

这两组最有意思的地方在于:读取很漂亮,写入就明显受限。RAID 5 顺序读取约 1178MB/s,RAID 6 也有约 918MB/s;但顺序写入只有 213MB/s 左右,和单盘相比提升非常有限。

如果你的 NAS 主要是只读仓库,比如媒体库、素材归档、下载后长期读取,RAID 5/6 仍然很有价值。如果你的场景是频繁小文件写入、数据库、同步盘,那就要认真考虑写入惩罚。

RAID 10:速度和安全都要,但容量砍半

RAID 10 可以理解成“先镜像,再条带”。它不需要 RAID 5/6 那样复杂的校验计算,读写性能都比较好,同时也有一定容错能力。

RAID 10 本地测速结果
RAID 10 本地测速结果
项目 读 MB/s 写 MB/s
顺序 Q8 T1 808.88 704.90
顺序 Q1 T1 434.65 412.85
随机 4K Q32T16 9.59 72.75
随机 4K Q1T1 0.81 12.71

它的读写都比较均衡,尤其顺序写入明显比 RAID 5/6 好看。但成本也很直接:容量通常只能用一半。

如果你既想要性能,又不想像 RAID 0 那样完全裸奔,RAID 10 是很舒服的选择。缺点就是贵,盘位和硬盘都要舍得。

最后怎么选

如果你只是想看大数字,8 盘 RAID 0 的顺序读写确实很爽。但如果你真的要拿 NAS 存东西,选择 RAID 模式时应该先问自己:这个数据丢了能不能重来?

RAID 等级速查表
RAID 等级速查表

我的建议是:

  • 追求极限速度,数据丢了可以重建:RAID 0。
  • 只读多、写入少,希望兼顾容量和容错:RAID 5 或 RAID 6。
  • 既要读写速度,又能接受容量砍半:RAID 10。
  • 最看重安全,容量和速度都可以让步:RAID 1。
  • 重要数据:不管用什么 RAID,都要再做一份真正的备份。

这次测试最大的感受是:盘多确实能快,但快在哪里、慢在哪里,要看工作负载。顺序大文件、多线程任务会吃到多盘并行的红利;随机小文件、校验写入、网络共享和缓存路径,都会把结果变得复杂。

所以不要只看“几块盘”和“理论几倍速”。NAS 的存储设计更像是在速度、容量、安全和预算之间做选择。选对模式,比单纯把盘插满更重要。