← 返回主页
NOTE

RAID 技术

整理 RAID 级别、特性、容量容错差异与 Linux 软件 RAID 操作。

概述

RAID(Redundant Arrays of Independent Disks,独立磁盘冗余阵列)是一种通过软件或硬件将多个物理磁盘整合为单一虚拟磁盘的技术。它不仅能够提供更大的存储空间,还能根据不同的级别提供数据冗余和性能提升等额外功能。

RAID 级别对比

RAID 级别别称最少磁盘数可用容量容错能力读性能写性能适用场景
RAID 0条带化2N × S⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐高性能计算、临时数据
RAID 1镜像2SN-1 磁盘⭐⭐⭐⭐⭐⭐操作系统、关键数据
RAID 5分布式奇偶校验3(N-1) × S1 磁盘⭐⭐⭐⭐⭐⭐⭐文件存储、数据库
RAID 6双分布式奇偶校验4(N-2) × S2 磁盘⭐⭐⭐⭐⭐大容量归档、备份
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 使用的备用磁盘。当阵列中任何磁盘发生故障时,系统会自动:

  1. 将故障磁盘标记为失效
  2. 将预备磁盘加入阵列
  3. 开始数据重建过程

优势

  • 无需停机即可替换故障磁盘
  • 结合热插拔功能可实现完全不间断服务
  • 大大提高系统可用性

硬件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

  1. 卸载并清理配置

    umount /srv/raid
    vi /etc/fstab  # 移除相关挂载项
    
  2. 停止并清除RAID

    # 清除RAID元数据(可选但推荐)
    dd if=/dev/zero of=/dev/md0 bs=1M count=50
    
    # 停止RAID设备
    mdadm --stop /dev/md0
    

注意:清除元数据可防止系统在下次启动时自动重组阵列,但会导致数据不可恢复,请谨慎操作。