RAID原理和技术
RAID定义
RAID,独立磁盘冗余阵列(Redundant Array of Independent Disks ),基本思想是研究将多个独立的磁盘连接成一个大容量磁盘,力求并发读写提高系统性能和引入冗余校验提高系统可靠性。对于Host,RAID抽象成一个逻辑盘,Host对这个逻辑盘进行读写操作,对于RAID designer,看到的磁盘是独立磁盘阵列,只有将独立磁盘的数据进行拼接才能向Host提供完整信息(读操作)和将Host发送的信息进行分解(按照位或者块)分散到独立磁盘阵列中(写操作)。
RAID mapping 图
RAID0
磁盘扇区将数据天然地分割成一个个以sector为粒度的数据(物理存在的),条带是由多个并列磁盘,每个磁盘提供特定数量的sector组成数据带,将属于这个数据带上的扇区(分布在每个磁盘)收据拼接才能形成一条完整的有效数据。磁盘条带分割如图所示[1]。写操作时,将host数据条带化,然后一个个条带分散写到每个独立磁盘中。读操作时,将属于一个条带的分散数据分别读取再拼接成完整条带数据。
RAID0
RAID1
为每一个磁盘保存一个镜像磁盘,逻辑磁盘的容量由源磁盘和镜像磁盘最小值决定。
RAID1
RAID2
RAID0可以并发的读写数据,所以所有RAID技术中性能最好,但是RAID0没有数据校验因此可靠性最低。RAID2是对RAID0的改进版,RAID2对条带内的数据以汉明码的方式进行校验,校验码放在多个单独的磁盘中。
RAID2
RAID3和RAID4
RAID3采用Bit-interleaving 技术(数据交错存储),将数据的每个bit存放在磁盘阵列中,RAID4采用Block-interleaving 技术(块交织)以数据块为单位分散存放在磁盘阵列中,两者均将校验信息存在最单独的磁盘中,RAID3和RAID4区别在于数据粒度不同。由于RAID3和RAID4操作小请求数据更新校验码时需要对每个磁盘进行操作,因此RAID3和RAID4适合大文件的传输。
RAID3 RAID4
RAID5
RAID3和RAID4不能IO并发操作,虽然数据盘能够进行并发操作,但是引入校验盘后,因为校验盘在一个IO操作未完成之前会一直处于占用状态,因此校验盘不能并发操作,加之由于IO操作数据盘也需要操作校验盘,这导致数据盘不能并发[1]。为了解决此问题,RAID5将校验码分散到每个数据盘中,这个操作数据盘就能并发进行。
RAID6
RAID5只能容忍单盘故障,当双盘故障时,错误码超过RAID5纠错能力,因此RAID6引入两套独立的纠错码算法解决双盘故障。
RAID6
总结
- RAID0 数据分块,无校验
- RAID1 镜像
- RAID2 在RAID0基础上以汉明码方式引入独立校验盘,商业价值低,已淘汰
- RAID3,RAID4 前者以bit为单位位交叉,后者以块为单位块交叉据,有独立校验盘
- RAID5 在RAID4基础上将校验码分散在数据盘中
- RAID6 在RAID5基础上采取两套独立的校验码,解决双盘故障问题
注:RAID0-RAID5图片来自wiki