RAID 配置与数据保护教程
RAID(Redundant Array of Independent Disks)通过将多块磁盘组合使用来提升性能或数据可靠性。在搬瓦工 VPS 上,虽然通常只有一块虚拟磁盘,但了解 RAID 技术对于管理多磁盘服务器或学习存储技术非常重要。本文使用 Linux 软件 RAID 工具 mdadm 来演示各种 RAID 级别的配置。
一、RAID 级别概览
- RAID 0(条带化):数据分散到多块磁盘,读写性能翻倍,但无冗余,任何一块磁盘故障则全部数据丢失。最少需要 2 块磁盘。
- RAID 1(镜像):数据同时写入两块磁盘,一块故障不丢数据,可用空间为单块磁盘大小。最少需要 2 块磁盘。
- RAID 5(带奇偶校验的条带化):数据和校验信息分布在所有磁盘上,允许一块磁盘故障。最少需要 3 块磁盘,可用空间为 (N-1) 块磁盘。
- RAID 6(双奇偶校验):类似 RAID 5 但有两份校验数据,允许同时两块磁盘故障。最少需要 4 块磁盘。
- RAID 10(1+0):先镜像后条带化,兼具性能和冗余。最少需要 4 块磁盘。
二、安装 mdadm
# Ubuntu/Debian
apt update
apt install mdadm -y
# CentOS
yum install mdadm -y
三、创建 RAID 阵列
3.1 准备磁盘
# 查看可用磁盘
lsblk
# 清除磁盘上的旧 RAID 信息(如果有)
mdadm --zero-superblock /dev/vdb /dev/vdc
# 使用 gdisk 创建分区(可选,也可直接使用整块磁盘)
apt install gdisk -y
sgdisk -Z /dev/vdb
sgdisk -n 1:0:0 -t 1:fd00 /dev/vdb
sgdisk -Z /dev/vdc
sgdisk -n 1:0:0 -t 1:fd00 /dev/vdc
3.2 创建 RAID 1(镜像)
# 创建 RAID 1 阵列
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/vdb /dev/vdc
# 查看同步进度
cat /proc/mdstat
# 查看 RAID 详细信息
mdadm --detail /dev/md0
3.3 创建 RAID 5
# 创建 RAID 5 阵列(3 块磁盘 + 1 块热备)
mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 \
/dev/vdb /dev/vdc /dev/vdd /dev/vde
# 查看同步进度
watch cat /proc/mdstat
3.4 创建 RAID 10
# 创建 RAID 10 阵列
mdadm --create /dev/md0 --level=10 --raid-devices=4 \
/dev/vdb /dev/vdc /dev/vdd /dev/vde
四、格式化与挂载
# 创建文件系统
mkfs.ext4 /dev/md0
# 创建挂载点并挂载
mkdir -p /mnt/raid
mount /dev/md0 /mnt/raid
# 保存 RAID 配置
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
# 更新 initramfs(确保启动时能识别 RAID)
update-initramfs -u
# 写入 fstab 永久挂载
echo '/dev/md0 /mnt/raid ext4 defaults,noatime 0 0' >> /etc/fstab
五、RAID 日常管理
5.1 监控 RAID 状态
# 查看 RAID 状态
cat /proc/mdstat
mdadm --detail /dev/md0
# 启用邮件报警
mdadm --monitor --mail=your@email.com --delay=300 /dev/md0 --daemonize
# 设置 mdadm 监控服务
systemctl enable mdmonitor
systemctl start mdmonitor
5.2 模拟磁盘故障与恢复
# 标记磁盘为故障
mdadm /dev/md0 --fail /dev/vdc
# 移除故障磁盘
mdadm /dev/md0 --remove /dev/vdc
# 添加新磁盘替换
mdadm /dev/md0 --add /dev/vdf
# 查看重建进度
watch cat /proc/mdstat
5.3 扩展 RAID 阵列
# 向 RAID 5 添加新磁盘并扩展
mdadm /dev/md0 --add /dev/vdf
mdadm --grow /dev/md0 --raid-devices=4
# 扩展文件系统
resize2fs /dev/md0
六、RAID 性能测试
# 安装测试工具
apt install fio -y
# 顺序读写测试
fio --name=seqread --ioengine=libaio --iodepth=16 --rw=read \
--bs=1M --size=2G --numjobs=1 --runtime=60 \
--group_reporting --filename=/mnt/raid/fio-test
# 随机读写测试
fio --name=randmixed --ioengine=libaio --iodepth=32 --rw=randrw \
--rwmixread=70 --bs=4k --size=1G --numjobs=4 \
--runtime=60 --group_reporting --filename=/mnt/raid/fio-test
# 清理
rm -f /mnt/raid/fio-test
七、停止与删除 RAID
# 卸载文件系统
umount /mnt/raid
# 停止 RAID 阵列
mdadm --stop /dev/md0
# 清除各磁盘上的 RAID 元数据
mdadm --zero-superblock /dev/vdb /dev/vdc
# 从 fstab 和 mdadm.conf 中移除相关条目
nano /etc/fstab
nano /etc/mdadm/mdadm.conf
八、RAID 选型建议
- 追求性能:RAID 0(无冗余)或 RAID 10(有冗余)。
- 追求安全:RAID 1(最简单)或 RAID 6(允许双盘故障)。
- 性能与安全平衡:RAID 5(单盘冗余)或 RAID 10。
- VPS 学习环境:可以用文件模拟磁盘来练习 RAID 配置。
RAID 不能替代备份,即使有冗余也应该定期备份重要数据。
总结
软件 RAID 通过 mdadm 可以在标准 Linux 系统上灵活配置各种 RAID 级别。结合 LVM 逻辑卷管理,可以构建既有冗余又灵活的存储架构。文件系统层面的优化请参考 Ext4 优化教程 和 Btrfs 使用指南。选购搬瓦工 VPS 请查看 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 访问官网。