raid1组建 BiOS_数据


此文仅仅为《大话存储》总结,先祭"合一刀谱"。

刀于我手不为刀,

横分梳割成龙绦。

化作神龙游天际,

龙在我心任逍遥!

干货:RAID0,条带化硬盘组。

背景:5块硬盘组成RAID0。
参与形成这个RAID0的各个物理盘会组成一个逻辑上连续、物理上也连续的虚拟磁盘。

访问过程如下:
1.主机控制器发出指令:读取10000号扇区开始,连续长度为128个扇区的内容。

2.RAID控制器接受指令:进行计算,根据对应公式(这个公式是RAID控制器在做逻辑条带化的时候制定的)算出10000号逻辑扇区所对应的物理磁盘的扇区号。依此计算出逻辑上连续的128个扇区所在物理磁盘的扇区号。

3.RAID控制发出指令:分别向对应这些扇区的磁盘再次发出指令。

4.硬盘接受指令:读取数据。将数据交给RAID控制器,经过控制器在Cache中的组合,再提交给主控制器。

分析以上过程,发现如果这128个扇区都落在同一个Segment中的话,也就是条带深度容量大于128个扇区的容量(64KB),则这次IO就只能真实地从这一块物理盘上读取,性能和单盘相比会减慢,因为没有任何优化,反而还增加了RAID控制器额外的计算开销。所以,再某种特定条件下要提升性能,让一个IO尽量扩散到多块物理盘上,就要减小条带深度。在磁盘数量不变的条件下,也就是减小条带大小(Stripe SIZE,也就是条带长度)。让这个IO的数据倍控制器分割,同时放满一个条带的第一个Segment、第二个Segment等,依次类推,这样就能极大地占用多块物理盘。所有Segment又是并发进行写入的。

所以,RAID0要提升性能,条带做的越小越好。但是又一个矛盾出现了,就是条带太小,导致并发IO几率降低。因为如果条带太小,则每次IO一定会占用大部分物理盘,队列中的IO就只能等待这次IO结束后才能使用物理盘。而条带太大,又不能充分提高传输速度。这两个是一对矛盾,要根据需求来采用不同的方式。如果随机小块IO多,则适当加大条带深度;如果连续大块IO多,则适当减小条带深度。