Linux mdadm 软RAID阵列创建与管理指南
 
                  更新时间 2025-09-02 09:48:45
                 
 
                    最近更新时间: 2025-09-02 09:48:45
                  
 1. mdadm 简介
- 软件RAID实现:通过Linux内核 - md驱动实现,无需专用硬件控制器。
- mdadm功能: - 创建/管理多种RAID级别(0/1/5/6/10) 
- 磁盘添加/移除 
- 实时监控与故障恢复 
- 阵列重构与状态维护 
 
2. RAID级别选型指南
| 级别 | 最小磁盘 | 容错能力 | 可用容量 | 适用场景 | 
|---|---|---|---|---|
| RAID 0 | 2 | 无 | 100% | 临时数据/高速缓存 | 
| RAID 1 | 2 | 单磁盘故障 | 50% | 系统盘/关键服务 | 
| RAID 5 | 3 | 单磁盘故障 | (N-1)/N | 文件服务器 | 
| RAID 6 | 4 | 双磁盘故障 | (N-2)/N | 大容量存储 | 
| RAID 10 | 4 | 镜像组内故障 | 50% | 高负载数据库 | 
性能提示:
- RAID 0: 读写性能最佳 
- RAID 5/6: 写性能受奇偶校验影响 
- RAID 10: 读写均衡,恢复速度快 
3. 创建前准备
本文档以 /dev/nvme0n1、/dev/nvme1n1 为例,操作时请根据实际情况进行替换。
必要操作
# 安装工具
sudo apt install mdadm        # Debian/Ubuntu
sudo yum install mdadm        # RHEL/CentOS
# 检查和清除磁盘元数据(对所有组建RAID的磁盘执行,执行前确保没有重要数据)
sudo wipefs /dev/nvme0n1
sudo wipefs -a -f /dev/nvme0n1分区方案选择
- <2TB磁盘:可直接使用原始设备( - /dev/nvme0n1)
- ≥2TB磁盘:必须使用GPT分区( - /dev/nvme0n1p1)- GPT分区详细流程(使用parted) - # 选择要分区的磁盘(示例:/dev/nvme0n1) DISK=/dev/nvme0n1 # 1. 创建GPT分区表 sudo parted $DISK --script mklabel gpt # 2. 创建主分区(使用100%磁盘空间) sudo parted $DISK --script mkpart primary 0% 100% # 3. 设置分区类型为Linux RAID sudo parted $DISK --script set 1 raid on # 4. 验证分区 sudo parted $DISK --script print # 5. 清除分区元数据(关键步骤!) PARTITION="${DISK}p1" # NVMe分区命名 sudo wipefs -a -f $PARTITION # 对于SATA磁盘(如/dev/sdb): # DISK=/dev/sdb # PARTITION="${DISK}1"- 关键注意事项: - 对阵列中的每个磁盘重复此分区操作 
- 使用 - set 1 raid on设置Linux RAID标志
- 分区后必须清除元数据 
- 使用 - lsblk确认分区创建成功:- lsblk -o NAME,SIZE,FSTYPE,PARTTYPE $DISK # 应显示分区类型为"linux_raid_member"
 
4. 创建RAID阵列(以RAID 1为例)
步骤1:创建阵列
sudo mdadm --create /dev/md0 --level=1 -a yes --raid-devices=2 /dev/nvme0n1p1 /dev/nvme1n1p1命令参数说明:
- --create或- -C:创建新 RAID 阵列的选项
- --level=1或- -l 1:设置 RAID 级别为 1
- -a yes或- --auto=yes:自动为阵列设备创建设备文件
- --raid-devices=2或- -n 2:指定组成 RAID 阵列的设备数量为 2
步骤2:验证状态
# 检查重建进度
cat /proc/mdstat
# 查看详细信息
sudo mdadm --detail /dev/md0步骤3:文件系统格式化
# 创建xfs文件系统
sudo mkfs.xfs /dev/md0步骤4:持久化配置
# 保存RAID配置
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf        # Debian/Ubuntu
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf            # RHEL/CentOS
# 配置开机挂载
sudo mkdir /data
echo "UUID=$(blkid -s UUID -o value /dev/md0) /data xfs defaults 0 0" | sudo tee -a /etc/fstab
sudo mount -a    # 立即挂载5. 运维管理命令
状态监控
cat /proc/mdstat                   # 实时状态
sudo mdadm --detail /dev/md0       # 详细报告磁盘更换流程
- 标记故障盘: - sudo mdadm --manage /dev/md0 --fail /dev/nvme0n1p1
- 移除故障盘: - sudo mdadm --manage /dev/md0 --remove /dev/nvme0n1p1
- 添加新盘: - sudo mdadm --manage /dev/md0 --add /dev/nvme2n1p1
注意
新磁盘需先分区并清除元数据。
彻底删除阵列
sudo umount /dev/md0
sudo mdadm --stop /dev/md0
sudo mdadm --zero-superblock /dev/nvme{0,1}n1p1   # 清除元数据
# 删除/etc/fstab和/etc/mdadm/mdadm.conf相关条目