配置raid 1需用两块匹配磁盘,linux下用mdadm创建镜像阵列并清除旧元数据,同步完成后格式化挂载,且必须写入/etc/mdadm.conf并更新initramfs或dracut以确保开机自动激活。

mdadm 是 Linux 软件 RAID 的核心工具,配置 RAID 1 镜像的关键在于:**用两块(或偶数块)物理盘创建互为备份的逻辑设备,且必须确保元数据清理干净、设备未被挂载、配置文件及时写入**。跳过任一环节都可能造成开机无法识别或阵列降级。
确认磁盘状态并清空旧 RAID 元数据
很多问题其实源于磁盘残留的 md 超级块——比如之前建过阵列又删了,但没执行清除操作,mdadm --create 会直接报错 Device or resource busy 或静默失败。
- 先用
lsblk和fdisk -l确认目标磁盘(如/dev/sdb、/dev/sdc),确保它们没有分区、没挂载、没被 LVM 使用 - 运行
sudo mdadm --zero-superblock /dev/sdb /dev/sdc清除可能存在的旧元数据(即使你确定没用过 RAID,也建议执行) - 检查是否清干净:
sudo mdadm -E /dev/sdb应该返回no md superblock detected
用 mdadm 创建 RAID 1 阵列
RAID 1 最小需 2 块盘,不支持奇数;--raid-devices=2 必须显式指定,不能省略,否则 mdadm 可能误判为 RAID 0 或拒绝创建。
- 命令示例:
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc -
--verbose很关键——它会实时输出同步进度(如[=>....................] check = 0.2% (2048/8388608) finish=0.5min speed=2730K/sec),避免你以为卡住而中断 - 创建后立即检查状态:
cat /proc/mdstat应显示md0 : active raid1 sdc[1] sdb[0]和[===>.................] check = 0.3%这类行,说明同步正在进行 - 不要在同步完成前格式化或挂载,否则可能损坏镜像一致性
保存配置并确保开机自动激活
Linux 启动时内核不会自动扫描并组装 RAID 设备,全靠 /etc/mdadm.conf(或 /etc/mdadm/mdadm.conf,取决于发行版)驱动。缺这个文件,重启后 /dev/md0 就“消失”了。
- 生成配置:
sudo mdadm --detail --scan >> /etc/mdadm.conf(注意是追加>>,不是覆盖>) - 检查内容是否正确:
cat /etc/mdadm.conf应包含类似ARRAY /dev/md0 level=raid1 num-devices=2 UUID=xxxxxx的行 - Debian/Ubuntu 系统还需更新 initramfs:
sudo update-initramfs -u;RHEL/CentOS 系统则运行sudo dracut -f - 验证:重启前可手动停止再启动测试:
sudo mdadm --stop /dev/md0→sudo mdadm -As(-A自动装配,-s读配置文件)
格式化、挂载与故障模拟验证
RAID 1 的价值不在创建,而在容错能力是否真实可用。必须做一次人工故障注入来确认流程闭环。
- 同步完成后格式化:
sudo mkfs.ext4 /dev/md0(别对底层盘如/dev/sdb格式化!) - 挂载测试:
sudo mkdir /mnt/raid1 && sudo mount /dev/md0 /mnt/raid1 - 模拟坏盘:
sudo mdadm --fail /dev/md0 /dev/sdb,此时cat /proc/mdstat会显示(F)标记和degraded - 移除坏盘:
sudo mdadm --remove /dev/md0 /dev/sdb,再插入新盘(或另一块干净盘),用sudo mdadm --add /dev/md0 /dev/sdb重建镜像 - 观察
/proc/mdstat是否重新进入recovery状态——这才是 RAID 1 生效的铁证
/dev/md0)本身没有“热插拔感知”能力,mdadm --add 后必须等重建完成才能认为恢复安全;而重建过程中的 I/O 延迟和 CPU 占用,远比日常使用时高得多——这点在数据库或虚拟机宿主机上尤其要提前评估。











