首页/系统/服务器硬件与 RAID 速查/mdadm 创建 RAID 5 阵列
RAID 级别与计算68 条

mdadm 创建 RAID 5 阵列

从裸盘到挂载可用的完整流程:分区标记、创建阵列、等待初始化、建立文件系统并写入 fstab,同时给出常见参数含义。

从裸盘到可用卷

mdadm 创建 RAID 5 的完整链条是:确认盘与分区标记、执行创建、等待后台同步、建文件系统、挂载并写入开机自动挂载。容易出问题的不是命令本身,而是盘名顺序、元数据版本与开机自动组装这三处——盘名写错会建出错误的阵列结构,元数据版本选错可能影响引导盘,自动挂载与自动组装没配好则会在重启后「阵列消失」。

完整创建流程

完整创建流程
mdadm --create /dev/md0 --level=5 --raid-devices=4 --chunk=128 --spare-devices=1 --metadata=1.2 /dev/sd[b-f]1
watch -n5 cat /proc/mdstat          # 观察 initial resync 进度
mkfs.xfs -f /dev/md0                # 建文件系统
mkdir -p /data && mount /dev/md0 /data
echo '/dev/md0 /data xfs defaults 0 2' >> /etc/fstab
mdadm --detail --scan >> /etc/mdadm.conf   # 让系统重启后能自动组装

关键参数

--level阵列级别,5 表示分布式校验
--raid-devices参与条带的盘数(示例 4 块数据盘)
--spare-devices热备盘数量(示例 1 块)
--chunk条带大小,128KB~512KB 常见
--metadatasuperblock 版本,1.2 为当前默认,写在盘头 4K 处

创建前后的核对项

阶段核对内容常见问题
创建前盘号与容量、是否已有分区或阵列盘名写错或盘上残留旧阵列元数据
创建中resync 进度与阵列状态 [UUUU]误把 --spare-devices 写进成员数
创建后mkfs 是否成功、挂载与容量显示容量对不上(单位换算)
重启前fstab 与 mdadm.conf 是否落盘重启后阵列不组装、卷不挂载

创建后的收尾动作

  • 把 mdadm --detail --scan 的输出写进配置文件,确保重启后自动组装
  • fstab 建议用 UUID 或标签而不是 /dev/md0,避免设备名变化导致挂载失败
  • 记录成员盘序列号与槽位,换盘时不必靠猜
  • 按周期执行数据巡检(echo check > /sys/block/md0/md/sync_action),提前暴露坏道

参数怎么定

  • --chunk 按业务定:OLTP 类 64~128KB,文件与备份 256~512KB,建好后基本不能在线改
  • --metadata=1.2 是默认选择,整盘做阵列又当引导盘时要注意 superblock 写盘头带来的引导冲突
  • --spare-devices 至少要留 1:RAID 5 只有一块盘容错,坏盘后自动重建能省下最宝贵的时间
  • 成员盘尽量同型号同固件:容量按最小盘计,速度按最慢盘走
创建后 initial resync(同步)在后台进行,期间阵列已可使用但性能未达最佳;可用 /proc/sys/dev/raid/speed_limit_max 与 speed_limit_min 控制同步速率。

易错点

  • 分区类型没标成 Linux RAID(fd):系统自动组装时可能直接忽略该分区
  • 创建时盘名顺序与预期不符:--raid-devices 与实际盘列表不一致会直接建出错误结构
  • fstab 里写死 /dev/md0 而不用 UUID:设备名变化后重启挂载失败,甚至导致系统进入应急模式
  • 忘记把扫描输出写进 mdadm 配置:重启后阵列不自动组装,业务卷找不到数据
  • 生产盘上直接试命令:先用虚拟机或回环文件盘演练,误操作真实盘会不可逆毁数据

数据来源与参考

  • man 8 mdadm(--create)
  • Red Hat 存储管理指南(Software RAID)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌