Linux环境下管理RAID1(磁盘镜像阵列)主要通过软件工具mdadm实现,RAID1通过将数据同时写入两块或多块磁盘,实现数据冗余和读写性能提升(读性能提升,写性能略有下降),以下从RAID1的创建、日常监控、故障处理及扩容等方面详细介绍管理流程。

RAID1创建前的准备
- 磁盘检查:确认至少两块可用磁盘(如
/dev/sdb、/dev/sdc),使用lsblk或fdisk -l查看磁盘信息,确保磁盘无重要数据且分区表正确。 - 磁盘分区:使用
fdisk或parted对磁盘进行分区,并将分区类型设置为“Linux RAID autodetect”(fdisk中通过t命令选择类型为fd),对/dev/sdb和/dev/sdc各创建一个分区/dev/sdb1和/dev/sdc1。 - 安装mdadm:若系统未安装
mdadm,可通过包管理器安装(如apt install mdadm或yum install mdadm)。
创建RAID1阵列
使用mdadm命令创建RAID1设备,假设使用/dev/sdb1和/dev/sdc1创建名为/dev/md0的RAID1:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
--create:创建新阵列;--level=1:指定RAID级别为1;--raid-devices=2:指定磁盘数量;/dev/sdb1 /dev/sdc1:参与阵列的分区。
创建完成后,可通过cat /proc/mdstat查看同步进度(RAID1创建时会进行数据同步,显示resync状态)。

配置文件系统与挂载
- 格式化文件系统:使用
mkfs对RAID设备格式化,如创建ext4文件系统:mkfs.ext4 /dev/md0
- 创建挂载目录并挂载:
mkdir -p /mnt/raid1 mount /dev/md0 /mnt/raid1
- 开机自动挂载:编辑
/etc/fstab,添加以下行(可通过blkid /dev/md0获取UUID):UUID=$(blkid /dev/md0 -s UUID -o value) && echo "UUID=$UUID /mnt/raid1 ext4 defaults 0 0" >> /etc/fstab
- 保存RAID配置:确保RAID信息持久化,避免重启后丢失:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf update-initramfs -u # 更新initramfs(适用于Debian/Ubuntu)
RAID1日常监控
- 查看阵列状态:
mdadm --detail /dev/md0 # 显示RAID设备详细信息(磁盘状态、同步进度等) cat /proc/mdstat # 实时查看RAID状态(如resync、idle等)
- 监控磁盘健康:
mdadm支持邮件通知,编辑/etc/mdadm/mdadm.conf添加MAILADDR your_email@example.com,或使用mdadm --monitor实时监控:mdadm --monitor --daemonize --scan --test --mail=root@localhost
RAID1故障处理
- 磁盘故障检测:当磁盘损坏时,
mdadm --detail /dev/md0会显示对应磁盘状态为Faulty,/dev/sdb1: 1.00TiB raid1 faulty /dev/sdb1(2) - 移除故障磁盘:
mdadm --manage /dev/md0 --remove /dev/sdb1
- 添加新磁盘:将新磁盘分区并设置为RAID类型后,添加到阵列:
fdisk /dev/sdd # 创建分区/dev/sdd1,类型为fd mdadm --manage /dev/md0 --add /dev/sdd1
- 同步数据:添加新磁盘后,RAID1会自动进行数据同步(
/proc/mdstat显示resync),同步速度可通过/proc/sys/dev/raid/speed_limit_max调整(默认200000KB/s)。
RAID1扩容与删除
- 扩容RAID1:RAID1扩容需先扩容分区,再调整RAID大小,最后扩容文件系统:
- 扩容分区(如
/dev/sdd1),使用parted调整分区大小; - 使用
mdadm --grow --size=max /dev/md0调整RAID大小(需所有磁盘分区同步扩容); - 扩容文件系统(如
resize2fs /dev/md0)。
- 扩容分区(如
- 删除RAID1:若需停止RAID1,先卸载设备,再停止阵列:
umount /dev/md0 mdadm --stop /dev/md0 mdadm --remove /dev/md0 # 可选,移除设备
常用mdadm命令参考表
| 命令功能 | 示例命令 | 说明 |
|---|---|---|
| 创建RAID1 | mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 |
指定级别和磁盘数量创建阵列 |
| 查看RAID详情 | mdadm --detail /dev/md0 |
显示磁盘状态、同步进度、UUID等信息 |
| 添加磁盘 | mdadm --manage /dev/md0 --add /dev/sdd1 |
将新磁盘加入阵列 |
| 移除磁盘 | mdadm --manage /dev/md0 --remove /dev/sdb1 |
移除故障或指定磁盘 |
| 停止阵列 | mdadm --stop /dev/md0 |
停止RAID设备,释放资源 |
| 扫描系统RAID | mdadm --scan |
列出系统中所有RAID设备 |
FAQs
Q1:RAID1中一块磁盘损坏后,数据会丢失吗?
A:不会,RAID1通过镜像存储数据,当一块磁盘损坏时,另一块磁盘仍保存完整数据,系统可继续正常运行,只需及时更换故障磁盘,RAID会自动同步数据到新磁盘,恢复冗余能力。
Q2:如何检查RAID1的同步进度?
A:可通过以下方式查看:

- 实时查看同步状态:
cat /proc/mdstat,输出中resync = XX%表示同步进度(XX为当前百分比); - 详细信息查看:
mdadm --detail /dev/md0,在“Array Size”和“Used Dev Size”下方可查看同步进度和剩余时间; - 监控同步速度:同步过程中,
/proc/mdstat会显示speed=XXX KB/s(XXX为当前同步速度)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/28298.html