NOTE
RAID 技术
整理 RAID 级别、特性、容量容错差异与 Linux 软件 RAID 操作。
概述
RAID(Redundant Arrays of Independent Disks,独立磁盘冗余阵列)是一种通过软件或硬件将多个物理磁盘整合为单一虚拟磁盘的技术。它不仅能够提供更大的存储空间,还能根据不同的级别提供数据冗余和性能提升等额外功能。
RAID 级别对比
| RAID 级别 | 别称 | 最少磁盘数 | 可用容量 | 容错能力 | 读性能 | 写性能 | 适用场景 |
|---|---|---|---|---|---|---|---|
| RAID 0 | 条带化 | 2 | N × S | 无 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 高性能计算、临时数据 |
| RAID 1 | 镜像 | 2 | S | N-1 磁盘 | ⭐⭐⭐⭐ | ⭐⭐ | 操作系统、关键数据 |
| RAID 5 | 分布式奇偶校验 | 3 | (N-1) × S | 1 磁盘 | ⭐⭐⭐⭐ | ⭐⭐⭐ | 文件存储、数据库 |
| RAID 6 | 双分布式奇偶校验 | 4 | (N-2) × S | 2 磁盘 | ⭐⭐⭐ | ⭐⭐ | 大容量归档、备份 |
| RAID 10 | 镜像+条带化 | 4 | (N/2) × S | 取决于故障盘位置 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 高可用数据库、虚拟化 |
N = 磁盘总数,S = 单盘容量
各 RAID 级别详解
🔴 RAID 0(条带化模式)
- 工作原理:将数据分割成等量区块(
chunk),并交替写入不同磁盘 - 优点:
- 读写性能最佳(理论为单盘的N倍)
- 存储利用率100%
- 缺点:
- 无冗余功能,任一磁盘损坏将导致所有数据丢失
- 使用不同容量磁盘时,性能会随小容量磁盘写满而下降
- 建议:使用相同型号和容量的磁盘以达到最佳效果
🟢 RAID 1(映射模式)
- 工作原理:将完整数据同时写入多个磁盘(镜像)
- 优点:
- 高可靠性(仅需一个磁盘完好即可保证数据完整)
- 读取性能较好
- 缺点:
- 存储利用率仅50%(2盘情况下)
- 写入性能较低(软件RAID尤其明显)
- 不同容量磁盘以最小容量为准
- 适用:对数据安全性要求高的场景
🟡 RAID 5(均衡模式)
- 工作原理:结合条带化与分布式奇偶校验(
Parity) - 优点:
- 兼顾性能与安全性
- 比RAID 1更高的存储利用率((N-1)/N)
- 缺点:
- 只能容忍一块磁盘故障
- 写入性能受奇偶校验计算影响
- 磁盘重建过程复杂且耗时
- 要求:至少需要3块磁盘
🟠 RAID 6(增强均衡模式)
- 特点:与RAID 5类似,但提供双重奇偶校验
- 优势:可同时容忍两块磁盘故障,数据安全性更高
- 代价:写性能进一步降低,可用空间减少((N-2)×S)
- 适用:对数据安全性要求极高的场景
🔵 RAID 10/01(组合模式)
- RAID 1+0:先做镜像(RAID 1)再做条带化(RAID 0)
- RAID 0+1:先做条带化(RAID 0)再做镜像(RAID 1)
- 优势:同时提供高性能和高可靠性
- 区别:RAID 1+0 通常比 RAID 0+1 具有更好的容错能力
- 推荐:目前存储设备厂商最推荐的解决方案之一
高级功能:预备磁盘(Spare Disk)
预备磁盘是连接到RAID系统但未 actively 使用的备用磁盘。当阵列中任何磁盘发生故障时,系统会自动:
- 将故障磁盘标记为失效
- 将预备磁盘加入阵列
- 开始数据重建过程
优势:
- 无需停机即可替换故障磁盘
- 结合热插拔功能可实现完全不间断服务
- 大大提高系统可用性
硬件RAID vs 软件RAID
🖥️ 硬件RAID
- 实现方式:专用RAID控制卡
- 优点:
- 性能高(专用处理芯片,不占用系统资源)
- 兼容性好(对操作系统透明)
- 功能丰富(常带缓存和电池保护)
- 缺点:成本较高
💾 软件RAID
- 实现方式:操作系统级别软件实现
- 优点:
- 成本低廉(无需特殊硬件)
- 配置灵活(可混合不同磁盘)
- 缺点:
- 消耗系统资源(CPU和内存)
- 性能较低(特别是RAID 5/6)
软件RAID配置指南
创建RAID阵列
mdadm --create /dev/md[0-9] --auto=yes --level=[015] \
--chunk=NK --raid-devices=N --spare-devices=N \
/dev/sdx /dev/hdx...
参数说明:
| 参数 | 说明 |
|---|---|
--create | 创建新RAID阵列 |
--auto=yes | 自动确定设备名称 |
--level | 设置RAID级别(0,1,5等) |
--chunk | 设置条带大小(KB) |
--raid-devices | 指定成员磁盘数量 |
--spare-devices | 指定预备磁盘数量 |
查看RAID状态
cat /proc/mdstat # 查看当前系统RAID状态
mdadm --detail /dev/md0 # 查看指定阵列详细信息
管理RAID阵列(救援模式)
mdadm --manage /dev/md[0-9] [--add 设备] [--remove 设备] [--fail 设备]
管理选项:
| 选项 | 功能 |
|---|---|
--add | 添加设备到阵列 |
--remove | 从阵列移除设备 |
--fail | 将设备标记为故障状态 |
安全关闭软件RAID
-
卸载并清理配置
umount /srv/raid vi /etc/fstab # 移除相关挂载项 -
停止并清除RAID
# 清除RAID元数据(可选但推荐) dd if=/dev/zero of=/dev/md0 bs=1M count=50 # 停止RAID设备 mdadm --stop /dev/md0
注意:清除元数据可防止系统在下次启动时自动重组阵列,但会导致数据不可恢复,请谨慎操作。