RAID

  • 冗余磁盘阵列/独立磁盘冗余阵列: Redundant Arrays of Independent Disks(RAID)
  • 基本思想
    • 将多个独立操作的磁盘按某种方式组织成磁盘阵列, 以增加容量
    • 将数据存储在多个盘体上, 通过这些盘并行工作来提高数据传输率
    • 采用数据冗余来进行错误恢复以提高系统可靠性
  • 特性
    • 一组物理磁盘驱动器组成, 被视为单个逻辑驱动器
    • 数据是分布在多个物理磁盘上
    • 冗余磁盘容量用于存储校验信息, 保证磁盘万一损坏时能恢复数据

分类

image-20250119221146915

RAID 0

  • 数据以条带的形式在可用的磁盘上分布

  • 不采用冗余来改善性能(不是RAID家族中的真正成员)

  • 用途

    • 高数据传输率
    • 高速响应I/O请求

    image-20250119221154182

    image-20250119221159872

RAID 1

  • 采用了数据条带

  • 采用简单地备份所有数据的方法来实现冗余

    image-20250119221214021

  • 优点

    • 高速响应I/O请求: 即便是同一个磁盘上的数据块, 也可以由两组磁盘分别响应
    • 读请求可以由包含请求数据的两个对应磁盘中的某一个提供服务, 可以选择寻道时间较小的那个
    • 写请求需要更新两个对应的条带: 可以并行完成, 但受限于写入较慢的磁盘
    • 单个磁盘损坏时不会影响数据访问, 恢复受损磁盘简单
  • 缺点

    • 价格昂贵(一半的容量)

    image-20250119221220759

  • 用途

    • 只限于用在存储系统软件, 数据和其他关键文件的驱动器中
  • 与RAID 0相比

    • 如果有大批的读请求, 则RAID 1能实现高速的I/O速率, 性能可以达到RAID 0的两倍
    • 如果I/O请求有相当大的部分是写请求, 则它不必RAID 0的性能好多少

RAID 01 vs RAID 10

image-20250119221226593

RAID 2

  • 采用并行存取技术

  • 目标

    • 所有磁盘都参与每个I/O请求的执行
  • 特点

    • 各个驱动器的轴是同步旋转的, 因此每个磁盘上的每个磁头在任何时刻都位于同一位置
    • 采用数据条带: 条带非常小, 经常只有一个字节或一个字

    image-20250119221231757

  • 纠错

    • 对位于同一条带的各个数据盘上的数据位计算校验码(通常采用海明码), 校验码存储在该条带中多个校验盘的对应位置
  • 访问

    • 读取: 获取请求的数据和对应的校验码
    • 写入: 所有数据盘和校验盘都被访问
  • 缺点

    • 冗余盘依然比较多, 价格较贵
    • 适用于多磁盘易出错环境, 对于单个磁盘和磁盘驱动器已经具备高可靠性的情况没有意义(实际基本弃用)

    image-20250119221238609

RAID 3

  • 采用并行存取技术

    • 各个驱动器的轴同步旋转
    • 采用非常小的数据条带
  • 校验: 对所有数据盘上同一位置的数据计算奇偶校验码

    • 当某一磁盘损坏时, 可以用于重构数据

    image-20250119221244455

  • 优点

    • 能够获得非常高的数据传输率, 对于大量读请求, 性能改善特别明显
  • 缺点

    • 一次只能执行一个I/O请求, 在面向多个IO请求时, 性能将受损

    image-20250119221250512

RAID 4

  • 采用独立存取技术

    • 每个磁盘成员的操作是独立的, 各个I/O请求能够并行处理
  • 采用相对较大的数据条带(常见的是4KB)

  • 根据各个数据盘上的数据来逐位计算奇偶校验条带, 奇偶校验位存储在奇偶校验盘的对应条带上

    image-20250119221256685

  • 性能

    image-20250119221300654

RAID 5

image-20250119221307031

  • 两读两写:

    • 原来: p(i) = X3(i) ^ X2(i) ^ X1(i) ^ X0(i)
    • 写操作后: p’(i) = X3(i) ^ X2(i) ^ X1(i) ^ X’0(i) = X3(i) ^ X2(i) ^ X1(i) ^ X’0(i) ^ X0(i) ^ X0(i)
    • 化简后: p’(i) = p(i) ^ X0(i) ^ X’0(i)

RAID 50

image-20250119221315771

RAID 6

image-20250119221320393

比较

RAID 0 vs RAID 1

image-20250119221325379

RAID 2 vs RAID 3

image-20250119221329643

RAID 4 vs RAID 5 vs RAID 6

image-20250119221336028