3.5.4 Linux下RAID实现(mdadm)
3.5.4 Linux下RAID实现(mdadm)#
mdadm 是 Linux 软件 RAID 的核心工具,适用于构建与维护 RAID 0/1/5/6/10。以下以 mdadm 实战为主,包含安装、原理、创建、持久化、排错与练习。
原理草图(软件 RAID 结构)
1)安装与准备(含命令解释)
# 安装 mdadm
# RHEL/CentOS
yum -y install mdadm
# Debian/Ubuntu
apt-get -y install mdadm
# 识别磁盘,确认无数据
lsblk -f
fdisk -l
# 可选:使用 GPT 分区并标记为 Linux RAID
# 将 /dev/sdb 分出一个分区 /dev/sdb1
parted -s /dev/sdb mklabel gpt
parted -s /dev/sdb mkpart primary 1MiB 100%
parted -s /dev/sdb set 1 raid on
命令解释:lsblk -f 查看磁盘与文件系统;parted set 1 raid on 标识该分区用于 RAID。
2)创建 RAID 阵列(示例 + 预期)
- RAID1(两盘镜像):
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
# 查看构建进度
cat /proc/mdstat
mdadm --detail /dev/md0
预期效果:/proc/mdstat 显示 md0 正在 resync。
- RAID5(三盘校验):
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
cat /proc/mdstat
3)持久化配置
# 生成并写入配置,保证重启后自动组装
mdadm --detail --scan >> /etc/mdadm.conf
# 某些发行版需更新 initramfs
# RHEL/CentOS
dracut -H -f
# Debian/Ubuntu
update-initramfs -u
4)文件系统与挂载(完整流程)
# 创建文件系统
mkfs.ext4 /dev/md0
# 创建挂载点并挂载
mkdir -p /data
mount /dev/md0 /data
# 获取 UUID 并配置开机挂载
blkid /dev/md0
echo "UUID=<替换为实际UUID> /data ext4 defaults 0 0" >> /etc/fstab
# 验证
mount -a
df -h | grep /data
命令解释:mount -a 验证 /etc/fstab 配置是否正确。
5)在线扩容与设备管理(示例 + 解释)
以 RAID5 增加一块盘为例:
# 新增硬盘 /dev/sde1
mdadm /dev/md0 --add /dev/sde1
# 扩展阵列为 4 盘
mdadm --grow /dev/md0 --raid-devices=4
# 监控重建进度
cat /proc/mdstat
扩展文件系统:
# ext4
resize2fs /dev/md0
# xfs
# xfs_growfs /data
6)故障模拟与排错(必须掌握)
- 模拟磁盘故障与替换流程:
# 标记 /dev/sdc1 失败并移除
mdadm /dev/md0 --fail /dev/sdc1
mdadm /dev/md0 --remove /dev/sdc1
# 插入新盘 /dev/sdf1 并加入
mdadm /dev/md0 --add /dev/sdf1
# 查看重建
watch -n 2 cat /proc/mdstat
- 常见问题与排错点:
- 阵列无法自动组装:检查
/etc/mdadm.conf与initramfs是否更新 - 重启后 /dev/md0 变化:建议使用
/dev/md/或 UUID - “Device busy”:先
umount,再mdadm --stop /dev/md0
7)常用命令速查(含解释)
mdadm --detail /dev/md0 # 查看阵列详情
mdadm --stop /dev/md0 # 停止阵列(需先卸载)
mdadm --assemble --scan # 扫描并组装阵列
cat /proc/mdstat # 查看阵列状态
8)练习题(动手实操)
1. 使用三块盘创建 RAID5,挂载到 /data 并写入 1G 测试文件。
2. 模拟一块盘故障并替换,观察重建进度与完成时间。
3. 在 RAID5 上新增一块盘并扩容文件系统,记录容量变化。
4. 手动删除 /etc/mdadm.conf,重启后修复阵列自动组装。