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.confinitramfs 是否更新
  • 重启后 /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,重启后修复阵列自动组装。