RAID(Redundant Array of Independent Disks)磁盘冗余阵列是服务器存储架构的基础。通过将多块磁盘组合为逻辑阵列,RAID在数据冗余、读写性能、容量利用率之间取得不同平衡。生产环境中合理的RAID级别选型直接关系到数据安全和I/O吞吐能力。本文以Linux mdadm工具为例,介绍各RAID级别的配置方法与故障恢复操作。
RAID级别特性对比与选型原则
各RAID级别的核心参数对比:
| RAID级别 | 最少磁盘 | 容错能力 | 可用容量 | 读写性能 | 适用场景 |
|---|---|---|---|---|---|
| RAID 0 | 2 | 无冗余 | N x 100% | 读写最快 | 临时数据、缓存 |
| RAID 1 | 2 | 1块 | N x 50% | 读快写一般 | 系统盘、数据库日志 |
| RAID 5 | 3 | 1块 | (N-1) x 100% | 读快写一般 | 文件存储、Web服务 |
| RAID 6 | 4 | 2块 | (N-2) x 100% | 读快写慢 | 归档存储、备份 |
| RAID 10 | 4 | 每组1块 | N x 50% | 读写都快 | 数据库、虚拟化 |
选型原则:数据库场景优先RAID 10,兼顾性能与冗余;文件服务器选RAID 5或RAID 6;系统盘用RAID 1最稳妥;纯性能场景如缓存可用RAID 0但无数据保护。
mdadm软RAID创建与配置
安装mdadm并检查磁盘状态:
apt install mdadm -y
lsblk
mdadm --examine /dev/sdb /dev/sdc /dev/sdd
创建RAID 5阵列(3块磁盘):
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
cat /proc/mdstat
# 等待同步完成,期间可继续配置
创建RAID 10阵列(4块磁盘,近距布局):
mdadm --create /dev/md1 --level=10 --raid-devices=4 \\
--layout=n2 /dev/sde /dev/sdf /dev/sdg /dev/sdh
保存RAID配置,确保重启后自动组装:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u
RAID阵列文件系统与挂载配置
在RAID设备上创建文件系统并挂载:
mkfs.ext4 -L data_raid5 /dev/md0
mkdir -p /mnt/raid5
mount /dev/md0 /mnt/raid5
echo "/dev/md0 /mnt/raid5 ext4 defaults,noatime 0 2" >> /etc/fstab
对RAID 10创建XFS文件系统(适合大文件存储):
mkfs.xfs -L db_raid10 /dev/md1
mount /dev/md1 /mnt/raid10
echo "/dev/md1 /mnt/raid10 xfs defaults,noatime 0 2" >> /etc/fstab
RAID磁盘故障检测与热备盘配置
查看阵列状态,识别故障磁盘:
mdadm --detail /dev/md0
# State : clean, degraded (degraded表示有磁盘故障)
# Active Devices : 2
# Failed Devices : 1
添加热备盘,当故障发生时自动重建:
mdadm --add /dev/md0 /dev/sdi
mdadm --detail /dev/md0 | grep "Spare Device"
模拟磁盘故障并测试自动重建(仅测试环境使用):
mdadm --fail /dev/md0 /dev/sdc
cat /proc/mdstat
mdadm --remove /dev/md0 /dev/sdc
mdadm --add /dev/md0 /dev/sdc
RAID性能测试与监控告警
使用fio进行读写性能基准测试:
fio --name=seq_rw --filename=/mnt/raid5/testfile \\
--rw=readwrite --bs=1M --size=10G --numjobs=1 --runtime=60 \\
--ioengine=libaio --direct=1 --group_reporting
fio --name=rand_rw --filename=/mnt/raid5/testfile \\
--rw=randrw --bs=4k --size=10G --numjobs=4 --runtime=60 \\
--ioengine=libaio --direct=1 --group_reporting
配置mdadm邮件告警,当阵列状态变化时发送通知:
echo "MAILADDR admin@example.com" >> /etc/mdadm/mdadm.conf
echo "0 0 * * 0 root echo 'check' > /sys/block/md0/md/sync_action" >> /etc/crontab
RAID配置完成后需定期验证阵列健康状态。mdadm –detail输出中的”Sync Status”和”State”字段是判断阵列健康的关键指标。生产环境中建议配置至少一块热备盘,并设置邮件告警确保故障发生时第一时间收到通知。硬件RAID(如MegaRAID、PERC)在性能和可靠性上优于软RAID,但对于中小规模存储场景,mdadm软RAID的灵活性和低成本使其仍然具有实用价值。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/fu-wu-qi-raid-cun-chu-zhen-lie-pei-zhi-shi-zhan-raid-ji-bie/