md RAID10 布局是什么
md 的 RAID10 不是「先镜像再条带」的固定写法,而是把每个数据块复制若干份再分散到盘上,副本的摆放方式由 --layout 决定:near(n)副本落在相邻盘,far(f)副本跨越阵列两半,offset(o)副本整体错开一个盘位。两副本时三种布局的容量利用率都是 50%,差别在读并发能力与能同时容忍哪些盘损坏。
基本信息
| 适用平台 | Linux(mdadm / 内核 md) |
|---|---|
| 最少组件盘数 | 4 |
| 布局参数 | --layout=n2、f2、o2(n3/f3/o3 表示三副本) |
| 查看方式 | mdadm --detail /dev/md0 或 /proc/mdstat |
| 容量口径 | 两副本固定 50%,三副本约 33% |
典型使用场景
- 数据库等以随机读为主、需要高并发读的业务选 near,副本可被并行读出
- 对可靠性要求更高、能接受写放大代价的场景评估 far
- 读写压力需要在半阵列之间均衡时选 offset
- 接手旧阵列或换盘前核对当前生效的布局与副本份数
- 迁移到硬件 RAID 前评估容量与容错差异,避免按经验直换算
布局对照
| 布局 | 副本位置 | 读性能 | 耐受故障 | 容量利用率 |
|---|---|---|---|---|
| near (n2) | 相邻盘 | 高,可并发读多份副本 | 特定单盘,取决于数据分布 | 50% |
| far (f2) | 跨半区分离 | 较高 | 部分双盘组合也可耐受 | 50% |
| offset (o2) | 整体错开一个盘位 | 读写在半阵列间均衡 | 视具体组合 | 50% |
创建与查看布局
创建与查看布局
mdadm --create /dev/md0 --level=10 --layout=f2 --raid-devices=4 /dev/sd[b-e]1 # 4 盘两副本 far 布局
mdadm --create /dev/md1 --level=10 --layout=n3 --raid-devices=6 /dev/sd[b-g]1 # 6 盘三副本 near 布局
mdadm --detail /dev/md0 | grep -i layout # 查看当前生效的布局
mdadm --detail /dev/md0 | grep -iE 'raid devices|state' # 连带成员数与阵列状态一起确认
cat /proc/mdstat # 快速看级别、成员与重建进度far 布局对「整列掉电、背板整段故障」这类相关性失效更友好,但它假定故障不发生在对称位置;选型时按实际盘数和风险模型核算,不能只看 50% 利用率这一个数。
布局写进元数据,不能在线切换:想改 near/far/offset 只能备份后重建阵列,副本份数变化还会连带改变可用容量与条带布局。