Linux中RAID5 的搭建、管理与维护详解在生产环境中,RAID(独立磁盘冗余阵列)被广泛用于提升存储的性能与可靠性。本文将通过一个完整的案例,详细讲解如何在 Linux 上配置、管理、扩容、模拟故障以及删除 RAID5 阵列,内容涵盖命令、输出解释与常见场景。
什么是 RAID5RAID5 是一种带奇偶校验信息的条带化(striping)存储方案。它至少需要 3 块硬盘,能够在 1 块硬盘故障的情况下继续工作。RAID5 的优点是容量利用率高(N 块盘中可用 N-1 块盘容量)、读性能较好、能容错 1 块盘。
环境准备与前提在正式创建 RAID5 之前,先确保以下环境:
Linux 系统(带 mdadm 工具)
至少 3 块(推荐 4 块)空闲硬盘
有 root 权限
如果之前这些磁盘上已经有 LVM 卷组,需要先清理干净
一、清理已有 LVM 卷组(如有)如果之前这些磁盘用于 LVM,需要先卸载并删除:
umount /dev/vgmubak/lvmubase
umount /dev/vgmubak/lvmuother
lvchange -an /dev/vgmubak
vgchange -an /dev/vgmubak
lvremove /dev/vgmubak/lvmuother
lvremove /dev/vgmubak/lvmubase
vgremove /dev/vgmubak二、硬盘分区RAID 的推荐做法是给每块盘创建 RAID 分区类型(fd 类型)。
以四块盘为例:/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde。
对每一块盘都要执行以下 fdisk 步骤:
fdisk /dev/sdb fdisk /dev/sdc fdisk /dev/sdd fdisk /dev/sde在 fdisk 中的步骤:
输入 m 查看帮助
输入 d 删除已有分区
输入 n 新建分区,选择主分区(p),输入容量(一般填全部)
输入 t 修改分区类型,输入 fd(Linux raid autodetect)
输入 w 保存退出
# 清理分区表
sgdisk --zap-all /dev/sdX
# 清理 RAID superblock(常见)
mdadm --zero-superblock /dev/sdX对四块盘都重复以上步骤。
分区表更新后,执行:
partprobe让内核重新读取分区表。
三、创建 RAID5 设备基本创建命令创建一个 RAID5 卷(4 块盘):
mdadm --create /dev/md0 --level=5 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1进阶示例(含热备盘)例如,3 块活动盘 + 1 块热备盘:
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd[b-d]1参数解释-C / --create :创建阵列
-a yes / --auto :自动创建设备
-l / --level :指定 RAID 级别
-n / --raid-devices :活动盘数量
-x :热备盘数量
四、常用管理命令查看详细信息:
mdadm --detail /dev/md0 查看状态:
cat /proc/mdstat 标记硬盘故障:
mdadm /dev/md0 -f /dev/sdb1 移除硬盘:
mdadm /dev/md0 -r /dev/sdb1 添加新硬盘:
mdadm /dev/md0 -a /dev/sdb1停止阵列:
mdadm --stop /dev/md0删除 superblock(清理 RAID 签名):
mdadm --zero-superblock /dev/sdX 五、格式化与挂载 RAID5成功创建阵列后,格式化文件系统:
mkfs.ext4 /dev/md0 创建挂载目录并挂载:
mkdir /data mount /dev/md0 /data 开机自动挂载:
echo 'UUID=xxx /data ext4 defaults 0 0' >> /etc/fstab 六、模拟 RAID5 硬盘损坏为了测试容错能力,可以“手动”模拟一块盘故障:
mdadm /dev/md0 -f /dev/sdb1 查看状态:
cat /proc/mdstat mdadm --detail /dev/md0 现象:
/dev/sdb1 后出现 (F) 标记,表示已被标记为故障
阵列状态行中如 [_U] 表示有一块盘失效但还能正常工作
移除故障盘:
mdadm /dev/md0 -r /dev/sdb1 添加替换的新盘:
mdadm /dev/md0 -a /dev/sdb1 观察重建进度:
cat /proc/mdstat 七、RAID5 阵列扩容当需要增加容量时,可以添加硬盘到阵列:
1️⃣ 新硬盘分区对新硬盘执行前面相同的 fdisk 流程,创建 fd 类型分区。
2️⃣ 加入阵列添加到 RAID 中:
mdadm /dev/md0 -a /dev/sdf1 查看状态:
mdadm -D /dev/md0 默认情况下,新盘会被当作 热备盘。
3️⃣ 转为活动盘并重构将热备盘转成活动盘(-n 指定新总活动盘数,触发重建):
mdadm -G /dev/md0 -n 3 4️⃣ 扩容文件系统重建完成后,阵列容量增大,但文件系统尚未扩展:
resize2fs /dev/md05️⃣ 更新配置文件建议在 /etc/mdadm.conf 中记录新配置,例如:
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sdf1
ARRAY /dev/md0 level=raid5 num-devices=4 UUID=
mdadm --zero-superblock /dev/sd[bcdef] 九、RAID5 双盘故障情况下的修复尝试RAID5 只能容忍 1 块盘坏,若坏 2 块就非常危险。以下命令仅用于尝试在紧急情况下“强行组装”尽可能读取数据:
mdadm --stop /dev/md0 mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 missing /dev/sde1 这里:
/dev/sda1、/dev/sdb1 是剩余可用的盘
missing 占位用于声明有一块丢失
/dev/sde1 是你想替换的新硬盘
这种方式能否成功取决于坏块数量和阵列的具体状况。
十、mdadm 其他常用选项小抄-D / --detail :查看阵列详细信息
-f :标记硬盘为故障
-a :添加新硬盘
-r :移除硬盘
-s / --scan :扫描系统信息
-S :停止阵列
--zero-superblock :抹掉 RAID 签名
--assemble --scan :自动扫描并重组可用 RAID
总结RAID5 在生产环境中非常常见,但一定要注意:
严格检查硬盘分区类型
按规范添加/移除磁盘
定期查看 /proc/mdstat 监控状态
关键数据仍要异地/异构备份