必须执行四步闭环:卸载挂载点、mdadm --stop 停止阵列、--zero-superblock 清除各成员盘元数据、删除 /etc/mdadm.conf 和 /etc/fstab 中相关配置并更新 initramfs,否则重启仍可能自动重建。

要安全停止 RAID 阵列并让内核彻底释放 /dev/mdX 设备,不能只执行 mdadm -S 就完事。很多系统(尤其是 RHEL6+、CentOS7/8、Ubuntu 16.04+)会在重启后自动重新组装阵列,甚至生成 /dev/md127 这类临时设备——说明内核仍识别到残留元数据。关键在于“停止 + 清元数据 + 切配置 + 清设备节点”四步闭环。
确认目标阵列与挂载状态
先查清你要处理的是哪个阵列,以及它是否正在被使用:
- 运行
cat /proc/mdstat查看活跃阵列(如md0、md127)及其成员盘 - 用
findmnt /dev/md0或mount | grep md0确认是否已挂载;若已挂载,必须先卸载:umount /dev/md0或对应挂载点(如/mnt/raid5) - 检查是否有进程占用:
lsof +D /mnt/raid5或fuser -v /mnt/raid5,强制终止可用fuser -km /mnt/raid5
停止阵列并验证资源释放
执行停用命令,确保返回明确成功提示:
-
mdadm --stop /dev/md0(等价于mdadm -S /dev/md0) - 成功时输出类似:
mdadm: stopped /dev/md0 - 失败常见原因:未卸载、LVM 卷组正使用该阵列(需先
vgchange -an vg_name)、或有进程锁住设备 - 停用后再次运行
cat /proc/mdstat,确认该阵列已从列表中消失
清除磁盘超级块元数据
这是防止系统重启后自动重建的核心步骤。RAID 元数据(superblock)仍留在每块成员盘上,内核扫描时会识别并尝试组装:
- 先通过
mdadm -D /dev/md0获取成员设备列表(如/dev/sdb1、/dev/sdc1) - 对每个成员盘执行:
mdadm --zero-superblock /dev/sdXN(例如mdadm --zero-superblock /dev/sdb1) - 注意:操作前务必确认设备名无误,误清非 RAID 盘将导致数据丢失
- 执行后可再用
mdadm -E /dev/sdb1检查——应提示No md superblock detected
清理配置与残留设备节点
避免系统启动时读取旧配置重新激活:
- 编辑
/etc/mdadm.conf(或/etc/mdadm/mdadm.conf),删除或注释掉对应ARRAY行(如以ARRAY /dev/md0开头的整行) - 编辑
/etc/fstab,删除或注释掉该阵列的挂载条目(如含/dev/md0或其 UUID 的行) - 若停用后
/dev/md0文件仍存在,手动删除:rm -f /dev/md0(该节点由 udev 动态生成,清除元数据后不会自动恢复) - 最后更新 initramfs(尤其在 CentOS/RHEL):
dracut -f,防止 initrd 阶段加载旧阵列
完成以上四步,RAID 阵列在内核层面已被真正移除。重启后不会自动出现 /dev/mdX,成员磁盘也可作为普通块设备直接格式化或加入新阵列。











