TL;DR:先看结论
买独服(独立服务器)选阵列,商家给你的四个选项到底怎么选才不亏?这篇教你用 fio(一款磁盘性能压测工具)把 RAID 0、RAID 1、RAID 5、RAID 10 各压一遍,帮你解决”买冗余还是买性能”的选型难题,结论先放这里:
- RAID 0 双盘顺序读写 1082/1024 MB/s,纯性能拉满,但一块盘挂掉全阵列报废,只适合临时计算节点
- RAID 1 双盘写入基本等于单盘(509 MB/s),换取的是镜像冗余,数据库小文件写入场景 IOPS 损失约 5%
- RAID 5 四盘顺序读 1980 MB/s 很好看,但 4K 随机写只有 9.2 万 IOPS,校验惩罚把写入性能打回双盘水平
- RAID 10 四盘读写全面领先,4K 随机写 15.8 万 IOPS,是 RAID 5 的 1.7 倍,坏了任意两块盘(不在同一镜像对内)数据还能活
测试环境与硬件配置
先交代测试机,避免”跑分环境不透明”的老问题。这次用的是一台普通独服,配置如下:
- CPU:至强银牌 4310(12 核 2.1GHz)
- 内存:64GB ECC
- 硬盘:4 × 1.92TB SATA SSD(企业级,标称 530/500 MB/s)
- 阵列方案:mdadm 软 RAID,非硬件阵列卡,文件系统 ext4
- 系统:Debian 12,内核 6.1,fio 版本 3.33
选软 RAID 而不是阵列卡,是因为现在市面上大量低价独服都是 mdadm 方案,测试结果对你手里那台机器更有参考价值。单盘先跑了基准:顺序读 546 MB/s、顺序写 521 MB/s,4K 随机读写 QD32 分别 9.2 万和 7.8 万 IOPS,盘本身状态正常,压测的对比基础是成立的。
压测方法:fio 参数怎么定
很多跑分帖只丢一张截图不给参数,复现不了。这里把 fio 命令直接贴出来,你可以拿去压自己那台机器。四种阵列各自格式化成独立分区测试,每轮测试前 drop cache,测试文件大小设为内存的 2 倍(128GB),避免缓存把数据”洗白”。
顺序读写用这两个 job 参数:
fio --name=seqread --rw=read --bs=1M --iodepth=32 --numjobs=1 \
--runtime=60 --time_based --direct=1 --size=128G \
--filename=/mnt/raid0/testfile4K 随机读写把 --rw 换成 randread / randwrite,块大小换成 --bs=4k,其余参数不变。每组配置压 3 轮取中位数,测试顺序随机化,避免 SSD 缓存写入策略带来的顺序偏差。
为什么坚持 --direct=1?因为不走直接 IO 的话,64GB 内存会把一部分写入请求吃进 page cache,测出来的”IOPS”其实是内存性能,这对评估数据库盘完全没意义。压存储,直连才是底线。
四种阵列配置实测数据
先看跑分数据,四组配置统一口径下的完整结果:
| 阵列 | 盘数 | 顺序读 | 顺序写 | 4K 随机读 (QD32) | 4K 随机写 (QD32) |
|---|---|---|---|---|---|
| RAID 0 | 2 | 1082 MB/s | 1024 MB/s | 17.1 万 IOPS | 14.2 万 IOPS |
| RAID 1 | 2 | 548 MB/s | 509 MB/s | 9.0 万 IOPS | 7.4 万 IOPS |
| RAID 5 | 4 | 1980 MB/s | 1120 MB/s | 26.3 万 IOPS | 9.2 万 IOPS |
| RAID 10 | 4 | 2090 MB/s | 1985 MB/s | 29.8 万 IOPS | 15.8 万 IOPS |
三组数据值得单独拎出来说:
- RAID 5 顺序读接近 2000 MB/s,但随机写只有 9.2 万 IOPS。这就是读放大外的写惩罚:每次写入要读旧数据、算校验、再写数据块和校验块,一次写变四次盘操作(小写场景),随机写性能直接被打回两盘水平
- RAID 10 写入性能约等于两块 RAID 0 叠加,15.8 万 IOPS 对比 RAID 0 的 14.2 万,差异在镜像对写入的额外开销内,符合预期
- RAID 1 的写入损失极小(509 vs 单盘 521 MB/s),但 4K 随机写掉了约 5%,属于可接受范围,换来的是单盘故障零停机
另一个容易被忽视的指标是延迟。4K 随机写 QD1 下,RAID 10 平均延迟 0.11ms,RAID 5 去到 0.19ms——差出来的 0.08ms 就是校验计算的代价。对 MySQL 这类延迟敏感型应用,这个差距比 IOPS 更致命。

为什么校验型阵列的随机写这么吃亏?看下面这张原理图就明白了:RAID 5 每次逻辑写入,控制器要先读出旧数据块和旧校验块,重算校验后再把数据块、校验块各写一次——小写入场景下一次写变四次盘操作。fio 压出来的写放大,落到物理盘上就是这么发生的。
选型建议:你的业务该选哪种
数据摆完了,说人话。四种阵列没有绝对优劣,关键看你的业务写入模式:
- 建站 / 一般 Web 业务:RAID 1 或 RAID 10。Web 应用读多写少,RAID 1 双盘方案性价比最高;预算够、读写都重,直接 RAID 10
- 数据库 / 高并发写入:RAID 10,没有第二个选项。RAID 5 的写惩罚在 OLTP 场景会被放大,压测里那 0.08ms 的延迟差到生产上就是连接池堆积
- 备份存储 / 冷数据归档:RAID 5 或 RAID 6。容量利用率高(4 盘可用 3 盘),写入慢无所谓,反正是一次性大文件顺序写
- 临时计算 / 可重建数据:RAID 0。渲染农场、爬虫落地这类数据丢了能重来的场景,性能直接翻倍
关于”独立服务器怎么选阵列”,商家报价单上还有一个坑要注意:有些低价独服默认给 RAID 5 但不告诉你阵列卡有没有缓存和掉电保护。没有 BBU(电池备份单元)的硬 RAID 卡,写入缓存一断电就是数据损坏风险,这种方案再便宜也不能碰。下单前问清楚三件事:阵列级别、软 RAID 还是硬 RAID、阵列卡有无掉电保护。
数据库盘选型如果还想看更多视角,可以参考这篇数据库独服存储怎么选:RAID 5 与 RAID 10 压测实测与选型决策,里面用同样的 fio 方法拆解了两种主流阵列在数据库负载下的成本与性能差异。如果业务规模还没大到需要独服,先用一台 VPS(虚拟专用服务器)或云服务器(按需付费的弹性计算资源)起步也够用,虚拟主机与 VPS 的全维度对比能帮你先判断该不该上独服。等业务对磁盘 IO 的要求上来后,Hostease 这类提供独立服务器方案、支持中文客服的商家也值得纳入备选,下单前同样可以用这套 fio 方法验收阵列性能。
选购独服时的成本账
压测归压测,最后还是要算钱。同样是 4 盘 1.92TB SSD 的配置,RAID 10 可用容量只有 50%(约 3.84TB),RAID 5 是 75%(约 5.76TB),差出来的 1.92TB 折算到月费上,大概每个月 10-20 美元的差价。
- 月费差价小于你一次故障恢复的成本 → 选 RAID 10,别犹豫
- 纯存储型业务(图床、备份节点)→ RAID 5/6 的容量优势能实打实省钱
- 双盘小机型 → RAID 1 起步,RAID 0 除非数据可以随时重建

两张结构图摆在一起,容量和冗余的取舍一目了然:左边双盘镜像用一半容量换零停机,右边四盘校验用 75% 容量换更慢的写入。你按上一节的业务写入模式对号入座就行。
对独立服务器磁盘性能有更细颗粒要求的场景(比如自建 MySQL 集群),还可以配合网络质量一起评估,这篇海外 VPS 与境内 VPS 性能对比给了 IO 与网络两个维度的完整测试框架。
总结:一套 fio 命令走天下
总结一下这次的实测要点:RAID 10 是写入密集型业务的最优解,随机写 IOPS 领先 RAID 5 约 70%;RAID 5 适合读多写少的大容量存储;RAID 1 是双盘机型的安全底线;RAID 0 只留给数据可重建的场景。选购时盯紧阵列卡掉电保护,比纠结 5% 的 IOPS 差异重要得多。
如果你需要复现这套压测,直接用上文两段 fio 命令,每组配置跑 3 轮取中位数即可。建议把压测结果作为验收依据写进采购合同——商家口头承诺的”IOPS 无超售”,在数据面前不值一提。手里有独服的兄弟,欢迎把你的 fio 结果贴出来,一起充实这份对比数据。




