1、相关概念
1.1、RAID = Redundant Array of Independent Disks独立的磁盘组成的具有冗余特性的阵列
既然是阵列,一定需要很多磁盘来组成,既然是冗余特性的,那么一定可以允许某块磁盘摔坏之后,数据仍然可用。
1.2、扇区(Sector):每个环形磁道等距离切割,形成等长度的圆弧。扇区采用的是交叉编号,一个扇区512字节
1.3、块(Block):每N个扇区(1、2、3、4号扇区)组成一个块。许多文件系统或卷管理软件都是用块而不是扇区作为基本存储单元。块的编号以横向条带方向开始一条一条地向下。
1.4、条带(Stripe):不同磁盘的相同偏移处的块组合成条带。
1.5、段(Segment):在一个条带所占用的单块磁盘上的区域。
1.6、条带深度:每个段包含的块或扇区的个数或字节容量,称为条带深度
1.7、条带长度:一个条带横跨过的扇区或块的个数或字节容量,就是条带长度
2、不同级别的RAID
2.1、RAID 0:访问循序:CPU控制器发出一条指令“读取初始扇区10000长度128”到RAID虚拟磁盘控制器,RAID控制器在Cache中经过计算(将数据放在某个条带不同的段的不同块中)分析出这些扇区说对应的物理硬盘的位置,然后将指令发送到磁盘控制器,磁盘控制器通过这些指令控制磁盘臂头读取相应的数据,传输给RAID虚拟控制器Cache中,再提交给CPU控制器。
一种模式是:把两块硬盘组合成一块,第一块用完了,接着用第二块;另一种模式是:第一块数据写在磁盘1,第二块写在磁盘2,第三段写在磁盘1,依次类推(条带化之后的多块硬盘,数据是被并行写入所有磁盘的,也就是多管齐下,在条带中某个段下的多个块可以同时写入不同的物理硬盘)第一、三、五…块数据写入1号盘,第二、四、六…块数据写入2号盘,并发写盘。读写性能最好的(相当于多个硬盘读写性能的叠加)、稳定性最差。不允许盘坏掉。
2.2、RAID 1
两块硬盘写相同的数据。第一块硬盘写1块A数据的时候,第二块硬盘也同时写1块A数据,增加可靠性。读写性能最低的(相当于一个硬盘的读写性能)、稳定性最好。允许多快盘坏掉
2.3、RAID 2
第一、三、五…块数据写入1号盘,第二、四、六…块数据写入2号盘,并发写盘,同时添加3号盘作为校验盘,让第一、第二块数据通过“汉明码”的方式进行校验,这样当1号数据盘坏掉的时候,可以通过校验盘和2号数据盘,计算出1号数据盘的数据,每两块数据盘就要一个校验盘。读写性能中等,有一定的稳定性。只允许一块盘坏掉。必须多个硬盘主轴同步
2.4、RAID 3
多块数据盘同时读写数据,只要一块数据盘通过“XOR布尔逻辑算式”的方式进行校验。在连续IO的情况下读写性能很高,在随机IO情况下读写性能没有提升,和单块数据盘一样。有一定的稳定性,允许一块硬盘坏掉。必须多个硬盘主轴同步
2.5、RAID 4
类似于RAID 3,只是增加了条带深度。一大败笔,性能还不如RAID 3.校验盘成了整个RAID的瓶颈。每个IO不管目标是哪个数据盘,但是一定要读写校验盘。所以成了瓶颈。
2.6、RAID 5
多快数据盘同时读写数据,同时把校验盘打散分布(分布式校验盘)在各个数据盘里,这样可以让校验盘也可以同时并发IO了。在随机读性能方面急剧提升,但是在写性能还是一个瓶颈。只允许一块盘坏掉。
2.7、RAID 6
同RAID 5没有什么区别,就是多添加了一个校验盘,有两个校验盘。
3、与IO相关的几个概念
3.1、读/写IO:读/写IO就是指发指令(一般通知磁盘开始扇区位置,以及该位置后读取的连续扇区个数)从磁盘读取/写入某段序号连续的扇区的内容。一次IO读写说要读取/写入的扇区段一定是要连续的,如果要提取或写入两段不连续的扇区段,只能放入两个IO中分别执行。
3.2、大/小块IO:指控制器的指令中给出的连续读取扇区数据的多少。
3.3、连续/随机IO:连续和随机是指本次IO给出的初始扇区地址和上一次IO的结束扇区地址是不是完全连续的或者相隔不多的,如果是这是连续IO,如果不是,则需要不断换道,那么就是随机IO。
3.4、顺序/并发IO:磁盘控制器如果可以同时对一个RAID系统中的多快磁盘同时发送IO指令,并且这些最底层的IO数据包含了文件系统级下发的多个IO数据,则是并发IO。如果只是一个IO数据,那么就是顺序IO。
3.5、IOPS:完成一次IO说需要的时间=寻道时间+数据传输时间,IOPS=IO并发系数/(寻道时间+数据传输时间)
3.6、每秒IO吞吐量:每秒IO吞吐量=IOPS×平均IO Size。
零测试