Linux 硬盘配置软 RAID
Linux 内核中有一个 md(multiple devices)模块在底层管理 RAID 设备,它提供一个命令 mdadm ,用于管理软件 RAID
mdadm 命令常用参数:
-a/--auto # {yes|no} 自动为其创建设备文件
-A/--assemble # 组装已存在的阵列
-c/--chunk # 设置块大小(KB)
-C/--create # 创建
-D/--detail # 查看阵列详细信息
-e/--metadata # 设置元数据版本
-E/--examine # 检查硬盘 RAID 元数据
-f/--fail # 模拟设备损坏
-F/--monitor # 后台监控阵列状态,确保 mdmonitor 服务启动正常才可以使用该参数
-G/--grow # 调整阵列参数,如阵列扩容
-l/--level # 指定 RAID 级别
-n/--raid-devices # 指定设备数量
-Q/--query # 查看摘要信息
-r/--remove # 移除设备
-s/--scan # 扫描并列出所有阵列
-S/--stop # 停止 RAID 磁盘阵列
-v/--verbose # 显示过程
-w/--wait # 等待操作完成(重建时使用)
-x/--spare-devices # 指定空闲盘(热备盘)个数,空闲盘(热备盘)能在工作盘损坏后自动顶替
--add # 添加硬盘到阵列
--manage # 管理已存在的硬盘阵列
--replace # 替换故障盘,用法 --replace 旧盘=新盘,旧盘和新盘顺序写反会导致命令报错
# 创建 RAID1 阵列
mdadm --create /dev/md0 -a yes -l 1 -n 2 /dev/sdc /dev/sdd
# 创建 RAID5 阵列
mdadm --create /dev/md1 -l 5 -n 4 -v /dev/nvme{0..3}n1
# 查看 RAID 阵列信息
mdadm --detail /dev/md0
cat /proc/mdstat
# 停止 RAID
mdadm --misc --stop /dev/md0
# 清除硬盘 RAID 信息
mdadm --misc --zero-superblock /dev/sd{c,d}
# 模拟 RAID 故障
mdadm /dev/md1 -f /dev/nvme0n1
# 移除 RAID 阵列中的硬盘
mdadm --manage /dev/md1 --remove /dev/nvme0n1
# 更换新硬盘
mdadm --manage /dev/md1 --add /dev/nvme4n1
# 替换故障盘
mdadm --manage /dev/md1 --replace /dev/nvme0n1=/dev/nvme4n1
# 格式化硬盘阵列
mkfs.ext4 /dev/md1 或 mkfs.xfs /dev/md1
# 挂载硬盘阵列
mount /dev/md1 /data
# 写入 mdadm 配置到文件
# 配置 mdmonitor(确保 ConditionPathExists 参数和配置文件名保持一致)
vim /usr/lib/systemd/system/mdmonitor.service
systemctl daemon-reload
systemctl restart mdmonitor
systemctl enable mdmonitor
# 更新当前内核的 initramf
dracut -f # RHEL/CentOS
update-initramfs -u # Debian/Ubuntu