首页/系统/服务器硬件与 RAID 速查/RAID 10 镜像加条带:性能与快速重建
RAID 级别与计算68 条

RAID 10 镜像加条带:性能与快速重建

RAID 10 先做镜像对再跨对条带化,兼具 RAID 1 的可靠性与 RAID 0 的并发性能,重建只需从镜像复制,是数据库与虚拟化数据盘的常见选择。

RAID 10 是什么

RAID 10(又称 RAID 1+0)先做镜像再做条带:磁盘两两配成镜像对,同一份数据在对内各存一份,再把这些镜像对当作条带成员,数据块分布到不同的对上。它同时拿到 RAID 1 的可靠性与 RAID 0 的并发吞吐,重建时只从镜像另一端整盘复制,不涉及全阵列校验运算,所以重建快、对业务影响小。代价是容量利用率固定 50%,在主流级别里最低。

基本信息

全称与别名RAID 1+0;先镜像后条带,硬件卡菜单里通常写作 RAID 10
最少盘数4 块(2 个镜像对),常规要求盘数为偶数
容量公式(N / 2) × 单盘容量
容错每个镜像对可坏 1 块;不同镜像对各坏 1 块多数布局仍可用
写惩罚2(一份数据写两块盘)
读写特性读可由对内任一块承担,读并发接近盘数;写并发受镜像对数量限制
典型平台硬件 RAID 卡(MegaRAID/PERC/Smart Array)、Linux mdadm --level=10、存储阵列

典型使用场景

  • 数据库数据盘与 redo/事务日志盘:小随机写密集,写惩罚 2 明显优于 RAID 5 的 4
  • 虚拟化主机的本地数据存储:多虚机并发 IO,单盘故障不影响在线业务
  • 高并发小文件业务(邮件、日志热数据):随机读写比例都高,且要求重建窗口短
  • 对重建时间敏感的在线系统:重建只复制镜像副本,不需要读遍整阵列重算校验
  • 系统盘与引导盘:结构简单、故障处置直观,运维交接成本低

容量与 IOPS 估算

容量与 IOPS 估算
# 6 块 1.8TB 10K SAS 盘,单盘随机 IOPS 按 180 估
可用容量 = 6 / 2 x 1.8TB = 5.4TB        # 容量利用率固定 50%
随机读 IOPS = 6 x 180 = 1080           # 每个镜像对的两块盘都能独立出读
随机写 IOPS = 6 x 180 / 2 = 540        # 写惩罚 2:一次逻辑写变成两次物理写
顺序带宽 ≈ 6 x 单盘带宽 x 0.8          # 条带叠加,留 20% 给控制器与背板开销
规划余量:常驻负载不要超过以上数值的 70%,否则重建期无资源可用

mdstat 状态读法

字段含义正常与异常
md127 行首阵列名、级别,[6/6] 表示 6 个成员全部在线出现 [5/6] 即已降级,需立即定位坏盘
[UUUUUU]每个字符对应一个成员盘,U 为正常变成下划线即该盘掉线或已失效
blocks阵列可用块数(按 1K 计)与 (N/2) × 单盘容量 大致对得上
resync镜像初始化或重建进度刚建阵列时出现正常,长期运行中出现要查原因
layout布局参数,硬件卡上会显示实际镜像对划分与手册记录不一致时不要贸然换盘

mdadm 创建与验证

mdadm 创建与验证
mdadm --create /dev/md1 --level=10 --raid-devices=6 --chunk=512 /dev/sd[b-g]1
cat /proc/mdstat                # 看阵列状态、降级情况与重建进度
mdadm --detail /dev/md1         # 看成员盘、布局、条带大小与 UUID
dd if=/dev/zero of=/tmp/t.bin bs=1M count=2048 oflag=direct  # 顺序写基准

硬件卡创建(storcli)

硬件卡创建(storcli)
storcli /c0 add vd type=raid10 drives=252:0-5 pdcache=off wb direct   # 6 盘建逻辑盘
storcli /c0 add hotsparedrive dgs=0 drives=252:6                      # 给该磁盘组加一块热备
storcli /c0/v0 show all | grep -Ei 'RAID|State|Size'                  # 核对级别、状态与容量
重建期间该镜像对只剩单副本,此时再坏同一对的另一块盘就会丢数据;重建期把业务负载压到最低,并暂停备份、巡检扫描类任务。
「RAID 10 能坏两块盘」是概率结论而非保证:两块盘落在同一个镜像对时阵列直接失效,换盘顺序必须先确认故障盘所属的镜像对。

落地配置要点

  • 条带大小按负载选:OLTP 类 256KB,视频与备份类 512KB~1MB,建好后调整需要重建阵列
  • 控制器缓存策略取决于保护模块:Write Back 必须有电池或电容,否则掉电会造成数据与元数据不一致
  • 建议留一块热备盘(6 盘阵列做 6+1):坏盘后自动接管重建,不必等人到现场
  • 建好阵列后记录镜像对与槽位的对应关系,换盘时按对处理,避免拔错盘

易错点

  • 把 RAID 10 当成可以随便坏两块盘:两块落在同一镜像对即数据不可用,故障盘位置未确认就动手换盘风险很高
  • 容量规划忽略 50% 利用率:N 块盘只拿到 N/2 容量,采购报量时按裸容量下单会差出一倍
  • 两盘同时故障后并发重建:两次重建抢同一组磁盘带宽,务必先重建完一块再处理另一块
  • 混用不同批次/容量/固件的盘:容量按最小盘计、性能按最慢盘计,镜像对最好同型号同固件代次
  • mdadm 上把 --chunk 设得过小(如 64KB):条带碎片增多,顺序读写反而下降,256KB~1MB 更稳

数据来源与参考

  • Broadcom MegaRAID 用户指南(RAID 10)
  • man 8 mdadm(--level=10)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌