第11讲-冗余磁盘阵列
RAID简介
- 冗余磁盘阵列/独立磁盘冗余阵列:Redundant Arrays of Independent Disks (RAID)
- 基本思想
- 将多个独立操作的磁盘按某种方式组织成磁盘阵列,以增加容量
- 将数据存储在多个盘体上,通过这些盘并行工作来提高数据传输率
- 采用数据冗余来进行错误恢复以提高系统可靠性
- 特性
- 由一组物理磁盘驱动器组成,被视为单个逻辑驱动器。
- 数据是分布在多个物理磁盘上,分布方案称为条带。
- 冗余磁盘容量用于存储奇偶校验信息,保证磁盘万一损坏时能恢复数据。
RAID 0
- 数据以条带的形式在可用的磁盘上分布
- 不采用冗余来改善性能(不是RAID 家族中的真正成员)
- 用途
- 高数据传输率
- 高速响应I/O 请求:两个I/O 请求所需要的数据块可能在不同的磁盘上.如果条的大小相对较大,那么单个IO请求只涉及单个磁盘访问,则多个等待的IO请求就可以被并行处理,减少了每个请求的排队时间。
RAID 1
- 采用了数据条带,采用简单地备份所有数据的方法来实现冗余。
- 优点
- 高速响应I/O 请求:即便是同一个磁盘上的数据块,也可以由两组硬盘分别响应。
- 读请求可以由包含请求数据的两个对应磁盘中的某一个提供服务,可以选择寻道时间较小的那个。
- 写请求需要更新两个对应的条带:可以并行完成,但受限于写入较慢的磁盘。
- 单个磁盘损坏时不会影响数据访问,恢复受损磁盘简单。
- 缺点
- 价格昂贵(一半的容量)。
用途
- 只限于用在存储系统软件、数据和其他关键文件的驱动器中
- 与RAID 0 相比
- 如果有大批的读请求,则RAID 1 能实现高速的I/O 速率,性能可以达到RAID 0
的两倍 - 如果I/O 请求有相当大的部分是写请求,则它不比RAID 0 的性能好多少
- 如果有大批的读请求,则RAID 1 能实现高速的I/O 速率,性能可以达到RAID 0
RAID 01 vs. RAID 10
- RAID 01= RAID 0+1:先做RAID 0,再做RAID 1
- RAID 10= RAID 1+0:先做RAID 1,再做RAID 0
- 两者在数据传输率和磁盘利用率上没有明显区别,主要区别是对磁盘损坏的容错能力
- 若Disk 0 和Disk 1 坏掉
- RAID 01:两个RAID 0均无法工作,整个体统无法工作。
- RAID 10:两个RAID 1失去了校验功能,但仍可读写信息,系统可以正常工作。
RDIA 2
- 采用并行存取技术
- 目标:所有磁盘都参与每个I/O 请求的执行
- 特点
- 各个驱动器的轴是同步旋转的,因此每个磁盘上的每个磁头在任何时刻都位于同一位置
- 采用数据条带:条带非常小,经常只有一个字节或一个字
- 纠错:对位于同一条带的各个数据盘上的数据位计算校验码(通常采用海明码),校验码存储在该条带中多个校验盘的对应位置
- 访问
- 读取:获取请求的数据和对应的校验码
- 写入:所有数据盘和校验盘都被访问
- 缺点
- 冗余盘依然比较多,价格较贵
- 适用于多磁盘易出错环境,对于单个磁盘和磁盘驱动器已经具备高可靠性的情况没有意义(实际基本弃用)
RAID 3
- 采用并行存取技术
- 各个驱动器的轴同步旋转
- 采用非常小的数据条带
- 校验:对所有数据盘上同一位置的数据计算奇偶校验码
- 当某一磁盘损坏时,可以用于重构数据𝑏0= 𝑃(𝑏) ⨁ 𝑏1 ⨁ 𝑏2 ⨁ 𝑏3
- 优点:能够获得非常高的数据传输率,对于大量读请求,性能改善特别明显
- 缺点:一次只能执行一个I/O 请求,在面向多个IO 请求时,性能将受损
RAID 4
- 采用独立存取技术
- 每个磁盘成员的操作是独立的,各个I/O 请求能够并行处理
- 采用相对较大的数据条带(常见的是4KB)
- 根据各个数据盘上的数据来逐位计算奇偶校验条带,奇偶校验位存储在奇偶校验盘的对应条带上
- 性能
- 当执行较小规模的I/O 写请求时,RAID 4 会遭遇写损失
- 对于每一次写操作,阵列管理软件不仅要修改用户数据,而且要修改相应的校验位
𝑃’(𝐵) = 𝑃(𝐵)⨁𝐵0⨁ 𝐵’0
- 对于每一次写操作,阵列管理软件不仅要修改用户数据,而且要修改相应的校验位
- 当涉及所有磁盘的数据条带的较大I/O 写操作时,只要用新的数据位来进行简单的计算即可得到奇偶校验位
- 每一次写操作必须涉及到唯一的校验盘,校验盘会成为瓶颈(实际基本弃用)
- 当执行较小规模的I/O 写请求时,RAID 4 会遭遇写损失
RAID 5
- 与RAID 4 组织方式相似(常用)
- 在所有磁盘上都分布了奇偶校验条带
- 避免潜在的I/O 瓶颈问题
访问时的“两读两写”:读在写前,读写不需要并行
𝑃’(𝐵) = 𝑃(𝐵)⨁𝐵0⨁ 𝐵’0RAID 50
- RAID 5 与RAID 0 的组合,先作RAID 5,再作RAID 0,也就是对多组RAID 5 彼此构成条带访问
- RAID 50 在底层的任一组或多组RAID 5 中出现1 颗硬盘损坏时,仍能维持运作;如果任一组RAID 5 中出现2 颗或2 颗以上硬盘损毁,整组RAID 50 就会失效
- RAID 50 由于在上层把多组RAID 5 进行条带化,性能比起单纯的RAID 5 高,但容量利用率比RAID 5 要低
RAID 6
- 采用两种不同的校验码,并将校验码以分开的块存于不同的磁盘中
- 优点:提升数据可用性:只有在平均修复时间间隔内3 个磁盘都出了故障,才会造成数据丢失
- 缺点:写损失:每次写都要影响两个校验块(读3 个写3 个磁盘)
RAID比较
- RAID 0:提升I/O 响应能力,但数据可用性低
- RAID 1:提升数据可用性,但容量利用率低
- RAID 2和 RAID3:提升数据可用性和数据传输率,但一次只能处理一个I/O 请求
- RAID 4和 RAID 5 和 RAID 6:提升数据可用性和读速率,但写速率受限
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Sprooc!
评论