Linux mdadm 软RAID阵列创建与管理指南
更新时间 2025-08-01 17:57:52
最近更新时间: 2025-08-01 17:57:52
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相关条目