4.2 七种RAID技术详解
2.关于几个与IO相关的重要概念
读/写IO:读IO就是发出指令从磁盘读取某段序号连续的扇区的内容。指令一般是通过磁盘开始扇区的位置,然后给出需要从这个初始扇区往后读取的连续扇区的个数,同时给出动作是读还是写。磁盘收到这条指令就会按照指令的要求读写数据。控制器发出这种指令加数据并得到对方回执的过程就是一次IO读或者写。注意,一个IO所要提取的扇区段一定是连续的,如果想提取或写入两段不连续的扇区段,只能把他们放入两个IO中分别执行,这也就是为什么随机IO对设备的IOPS指标要求比较高的原因。
大/小块IO:控制器的指令中给出的连续读取扇区数目的多少。如果数目很大,如128,64等,就应该算是大块IO,如果很小比如1,4,8等,就算小块IO。大块和小块IO之间没有明确的界限。
连续/随机IO:连续和随机是指本次IO给出的初始扇区地址和上一次IO的结束扇区地址是不是完全连续的或者相隔不多的。如果是,则本次IO应该算是一个连续IO;如果相差太大,则算一次随机IO。连续IO因为本次初始扇区和上次结束扇区相隔很近,则磁头几乎不用换道或者换道时间极短。如果相差很大,则磁头需要很长的换道时间。如果随机IO很多,则会导致频繁换道,效率大大降低。
顺序/并发IO:磁盘控制器如果可以同时对一个RAID系统中的多块磁盘同时发送IO指令(当然这里的同时是宏观的概念。如果所有磁盘都在一个总线或者环路上,则这里的同时就是指向一块磁盘发送一条指令后不必等他回应,接着向另一块磁盘发送IO指令),并且这些最底层的IO数据包含了文件系统级下发的多个IO数据,则为并发IO。如果这些直接发向磁盘的IO只包含了文件系统级下发的一个IO的数据,则此时为顺序IO。即控制器缓存中的文件系统下发的IO队列,只能一个一个来。并发IO模式在特定的条件下可以很大程度的提高效率和速度。
持续/间断IO:持续不断地发送或者接受IO请求数据流,这种情况为持续IO;IO数据流时断时续则为间断IO。
稳定突发IO:某存储设备与某程序在一段时间内接受或者发送的IOPS以及Throughput(吞吐量)保持相对稳定和恒定,则称为稳定IO;如果单位时间的IOPS或者Throughpou突然猛增,则为突发IO。
实/虚IO:某IO请求中包含对应实际数据地址的,比如磁盘LBA地址,或者文件偏移量,请求读或者写实际文件或者磁盘扇区数据的,称为实IO;而应用程序针对文件元数据操作的(在文件系统层以上没有文件主体数据操作),或者针对磁盘发送的非实体数据IO请求,称为虚IO。
IO并发几率:单盘,IO的并发几率为0,因为一块磁盘同时只能进行一次IO。对于RAID 0,在两块盘情况下,条带深度比较大的时候(条带太小不能并发IO),并发两个IO的几率为1/2。
IOPS:完成一次IO所用的时间=寻道时间+旋转延迟时间+数据传输时间,IOPS=IO并发系数/完成一次IO所用的时间。由于寻道时间相对于传输时间要大几个数量级,所以影响IOPS的关键因素就是降低寻道时间。在连续IO情况下,寻道时间很短,仅在换磁道时候需要寻道。在这个前提下,传输时间越少,IOPS就越高。
每秒IO吞吐量:显然,每秒IO吞吐量=IOPS x 平均IO SIZE。IO SIZE越大,IOPS越高,每秒IO吞吐量也越大。设磁头每秒读写速度为V,V为定值。则IOPS = IO并发系数/(寻道时间+旋转延迟时间+IO SIZE/V)。代入的每秒IO吞吐量 = IO并发系数 x IO SIZE x V/(Vx寻道时间+Vx旋转延迟时间+IO SIZE)。可以看出影响每秒IO吞吐量的最大因素就是IO SIZE和寻道时间以及旋转延迟时间。IO SIZE越大,寻道时间越少,吞吐量越高。相比能显著影响IOPS的因素只有一个,就是寻道时间。
4.2.1 RAID 0技术详析
ͬʱ放满一个条带的第一个Segment、第二个Segment等。以此类推,这样就能极大地占用多块物理盘。注意这里的同时,因为控制器把每块磁盘要写入或者读取的数据都计算好了,所以是同时进行读或者写的。