11.RAID
RAID
- 冗余磁盘阵列/独立磁盘冗余阵列: Redundant Arrays of Independent Disks(RAID)
 - 基本思想
- 将多个独立操作的磁盘按某种方式组织成磁盘阵列, 以增加容量
 - 将数据存储在多个盘体上, 通过这些盘并行工作来提高数据传输率
 - 采用数据冗余来进行错误恢复以提高系统可靠性
 
 - 特性
- 由一组物理磁盘驱动器组成, 被视为单个逻辑驱动器
 - 数据是分布在多个物理磁盘上
 - 冗余磁盘容量用于存储校验信息, 保证磁盘万一损坏时能恢复数据
 
 
分类
RAID 0
- 
数据以条带的形式在可用的磁盘上分布
 - 
不采用冗余来改善性能(不是RAID家族中的真正成员)
 - 
用途
- 高数据传输率
 - 高速响应I/O请求
 
 
RAID 1
- 
采用了数据条带
 - 
采用简单地备份所有数据的方法来实现冗余
 - 
优点
- 高速响应I/O请求: 即便是同一个磁盘上的数据块, 也可以由两组磁盘分别响应
 - 读请求可以由包含请求数据的两个对应磁盘中的某一个提供服务, 可以选择寻道时间较小的那个
 - 写请求需要更新两个对应的条带: 可以并行完成, 但受限于写入较慢的磁盘
 - 单个磁盘损坏时不会影响数据访问, 恢复受损磁盘简单
 
 - 
缺点
- 价格昂贵(一半的容量)
 
 - 
用途
- 只限于用在存储系统软件, 数据和其他关键文件的驱动器中
 
 - 
与RAID 0相比
- 如果有大批的读请求, 则RAID 1能实现高速的I/O速率, 性能可以达到RAID 0的两倍
 - 如果I/O请求有相当大的部分是写请求, 则它不必RAID 0的性能好多少
 
 
RAID 01 vs RAID 10
RAID 2
- 
采用并行存取技术
 - 
目标
- 所有磁盘都参与每个I/O请求的执行
 
 - 
特点
- 各个驱动器的轴是同步旋转的, 因此每个磁盘上的每个磁头在任何时刻都位于同一位置
 - 采用数据条带: 条带非常小, 经常只有一个字节或一个字
 
 - 
纠错
- 对位于同一条带的各个数据盘上的数据位计算校验码(通常采用海明码), 校验码存储在该条带中多个校验盘的对应位置
 
 - 
访问
- 读取: 获取请求的数据和对应的校验码
 - 写入: 所有数据盘和校验盘都被访问
 
 - 
缺点
- 冗余盘依然比较多, 价格较贵
 - 适用于多磁盘易出错环境, 对于单个磁盘和磁盘驱动器已经具备高可靠性的情况没有意义(实际基本弃用)
 
 
RAID 3
- 
采用并行存取技术
- 各个驱动器的轴同步旋转
 - 采用非常小的数据条带
 
 - 
校验: 对所有数据盘上同一位置的数据计算奇偶校验码
- 当某一磁盘损坏时, 可以用于重构数据
 
 - 
优点
- 能够获得非常高的数据传输率, 对于大量读请求, 性能改善特别明显
 
 - 
缺点
- 一次只能执行一个I/O请求, 在面向多个IO请求时, 性能将受损
 
 
RAID 4
- 
采用独立存取技术
- 每个磁盘成员的操作是独立的, 各个I/O请求能够并行处理
 
 - 
采用相对较大的数据条带(常见的是4KB)
 - 
根据各个数据盘上的数据来逐位计算奇偶校验条带, 奇偶校验位存储在奇偶校验盘的对应条带上
 - 
性能
 
RAID 5
- 
两读两写:
- 原来: 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)
 
 

























