日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

深入分析各種raid模式

系統(tǒng) 2197 0

深入分析各種raid模式

  本文從低層原理上,深入透析了目前存在的7種模式的組成原理,結(jié)構(gòu),并深刻分析了各種級(jí)別相對(duì)于單盤IO速率的變化。

Raid0
?
Raid0是這樣一種模式:我們拿5塊盤的raid0為例子。



  上圖中5個(gè)豎條,分別代表5個(gè)磁盤上的一個(gè)extent,也就是豎條的意思,每個(gè)磁盤被邏輯的劃分為N個(gè)這種extent。然后再在磁盤相同偏移的extent上,橫向邏輯分割,形成strip,一個(gè)strip橫跨過的extent個(gè)數(shù),稱為strip lenth,而一個(gè)strip和一個(gè)extent交叉帶,稱為一個(gè)segment,一個(gè)segment中所包含的data block個(gè)數(shù),稱為strip depth。Data block,可以是N倍個(gè)扇區(qū)大小的容量,應(yīng)該可以調(diào)節(jié),或者不可調(diào),隨控制器而定。
  Raid0便是將一系列連續(xù)編號(hào)的data block,分布到多個(gè)物理磁盤上,擴(kuò)散IO,提高性能。其分布的方式,如圖所示:這個(gè)例子中,條帶深度為4,則0、1、2、3號(hào)data block,被放置到第一個(gè)條帶的第一個(gè)segment中,然后4、5、6、7號(hào)block,放置到第一個(gè)條帶的第二個(gè)segment中,依此類推,條帶1放滿后,繼續(xù)放條帶2。這種特性,稱為“局部連續(xù)”,因?yàn)閎lock只有在一個(gè)segment中是物理連續(xù)的,邏輯連續(xù),就需要跨物理磁盤了。

  對(duì)外來說,參與形成raid0的各個(gè)物理盤,會(huì)組成一個(gè)邏輯上連續(xù),物理上也連續(xù)的虛擬磁盤。磁盤控制器對(duì)這個(gè)虛擬磁盤發(fā)出的指令,都被raid控制器截獲,分析,根據(jù)block映射關(guān)系公式,轉(zhuǎn)換成對(duì)組成raid0的各個(gè)物理盤的真實(shí)物理IO請(qǐng)求指令,收集或?qū)懭霐?shù)據(jù)之后,再提交給主機(jī)磁盤控制器。

  Raid0還有另一種非條帶化模式,即寫滿其中一塊物理磁盤之后,再接著寫另一塊,直到所有組成磁盤全部寫滿。這種模式,對(duì)IO寫沒有任何優(yōu)化,但是對(duì)IO讀,能提高一定的并發(fā)IO讀幾率。

在進(jìn)一步講述raid0和其他raid級(jí)別之前,我們先來看一下IO的種類。IO按照可以分為:讀/寫IO,大/小塊IO,連續(xù)/隨機(jī)IO,順序/并發(fā)IO。下面我們來分別介紹每一種IO。

  讀/寫IO,這個(gè)就不用多說了,讀IO,就是發(fā)指令,從磁盤讀取某段扇區(qū)的內(nèi)容。指令一般是通知磁盤開始扇區(qū)位置,然后給出需要從這個(gè)初始扇區(qū)往后讀取的連續(xù)扇區(qū)個(gè)數(shù),同時(shí)給出動(dòng)作是讀,還是寫。磁盤收到這條指令,就會(huì)按照指令的要求,讀或者寫數(shù)據(jù)。控制器發(fā)出的這種指令+數(shù)據(jù),就是一次IO,讀或者寫。

  大/小塊IO,指控制器的指令中給出的連續(xù)讀取扇區(qū)數(shù)目的多少,如果數(shù)目很大,比如128,64等等,就應(yīng)該算是大塊IO,如果很小,比如1,4,8等等,就應(yīng)該算是小塊IO,大塊和小塊之間,沒有明確的界限。

  連續(xù)/隨機(jī)IO,連續(xù)和隨機(jī),是指本次IO給出的初始扇區(qū)地址,和上一次IO的結(jié)束扇區(qū)地址,是不是完全連續(xù)的,或者相隔不多的,如果是,則本次IO應(yīng)該算是一個(gè)連續(xù)IO,如果相差太大,則算一次隨機(jī)IO。連續(xù)IO,因?yàn)楸敬纬跏忌葏^(qū)和上次結(jié)束扇區(qū)相隔很近,則磁頭幾乎不用換道或換道時(shí)間極短;如果相差太大,則磁頭需要很長的換道時(shí)間,如果隨機(jī)IO很多,導(dǎo)致磁頭不停換道,效率大大降底。

  順序/并發(fā)IO,這個(gè)的意思是,磁盤控制器每一次對(duì)磁盤組發(fā)出的指令套(指完成一個(gè)事物所需要的指令或者數(shù)據(jù)),是一條還是多條。如果是一條,則控制器緩存中的IO隊(duì)列,只能一個(gè)一個(gè)的來,此時(shí)是順序IO;如果控制器可以同時(shí)對(duì)磁盤組中的多塊磁盤,同時(shí)發(fā)出指令套,則每次就可以執(zhí)行多個(gè)IO,此時(shí)就是并發(fā)IO模式。并發(fā)IO模式提高了效率和速度。

說完了4種IO模式,我們?cè)賮碚f2個(gè)概念:

  IO并發(fā)幾率。單盤,IO并發(fā)幾率為0,因?yàn)橐粔K磁盤同時(shí)只可以進(jìn)行一次IO。對(duì)于raid0,2塊盤情況下,條帶深度比較大的時(shí)候(條帶太小不能并發(fā)IO,下面會(huì)講到),并發(fā)2個(gè)IO的幾率為1/2。其他情況請(qǐng)自行運(yùn)算。

  IOPS。一個(gè)IO所用的時(shí)間=尋道時(shí)間+數(shù)據(jù)傳輸時(shí)間。IOPS=IO并發(fā)系數(shù)/(尋道時(shí)間+數(shù)據(jù)傳輸時(shí)間),由于尋道時(shí)間相對(duì)傳輸時(shí)間,大幾個(gè)數(shù)量級(jí),所以影響IOPS的關(guān)鍵因素,就是降底尋道時(shí)間,而在連續(xù)IO的情況下,尋道時(shí)間很短,僅在換磁道時(shí)候需要尋道。在這個(gè)前提下,傳輸時(shí)間越少,IOPS就越高。

  每秒IO吞吐量。顯然,每秒IO吞吐量=IOPS乘以平均IO SIZE。Io size越大,IOPS越高,每秒IO吞吐量就越高。設(shè)磁頭每秒讀寫數(shù)據(jù)速度為V,V為定值。則IOPS=IO并發(fā)系數(shù)/(尋道時(shí)間+I(xiàn)O SIZE/V),代入,得每秒IO吞吐量=IO并發(fā)系數(shù)乘IO SIZE乘V/(V乘尋道時(shí)間+I(xiàn)O SIZE)。我們可以看出影響每秒IO吞吐量的最大因素,就是IO SIZE和尋道時(shí)間,IO SIZE越大,尋道時(shí)間越小,吞吐量越高。相比能顯著影響IOPS的因素,只有一個(gè),就是尋道時(shí)間。

  下面我們來具體分析一個(gè)從上到下訪問raid0磁盤的過程。假如某一時(shí)刻,主機(jī)控制器發(fā)出指令:讀取 初始扇區(qū)10000
長度128。Raid控制器接受到這個(gè)指令之后,立即進(jìn)行計(jì)算,根據(jù)對(duì)應(yīng)公式(這個(gè)公式是raid控制器在做邏輯條帶化的時(shí)候制定的)算出10000號(hào)扇區(qū)所對(duì)應(yīng)的物理磁盤的扇區(qū)號(hào),然后依次計(jì)算出邏輯上連續(xù)的下128個(gè)扇區(qū)所在物理磁盤的扇區(qū)號(hào),之后,分別向?qū)?yīng)這些扇區(qū)的磁盤,再次發(fā)出指令,這次是真實(shí)的讀取數(shù)據(jù)了,磁盤接受到指令,各自將數(shù)據(jù)提交給raid控制器,經(jīng)過控制器在cache種的組合,再提交給主機(jī)控制器。

分析以上過程,我們發(fā)現(xiàn),如果這128個(gè)扇區(qū),都落在同一個(gè)segment中的話,也就是說條帶深度容量大于128個(gè)扇區(qū)的容量(64K),則這次IO就只能真實(shí)的從這一塊物理盤上讀取,性能和單盤相比會(huì)減慢,因?yàn)闆]有任何優(yōu)化,反而還增加了raid控制器額外的計(jì)算開銷。所以要提升性能,讓一個(gè)IO盡量擴(kuò)散到多塊物理盤上,就要減小條帶深度,磁盤數(shù)量不變的條件下,也就是減小條帶大小strip size。讓這個(gè)IO的數(shù)據(jù)被控制器分割,同時(shí)放滿第一個(gè)segment、第二塊物理磁盤上的第二個(gè)segment。。。。。。。依此類推,這樣就能極大的占用多塊物理盤。在這里大家可能存在一個(gè)誤區(qū),就是總是以為控制器是先放滿第一個(gè)segment,再放滿第二個(gè)segment,其實(shí)是同時(shí)進(jìn)行的,因?yàn)榭刂破靼衙繅K盤要寫入或者讀取的數(shù)據(jù)都計(jì)算好了,是同時(shí)進(jìn)行的。所以,raid0要提升性能,條帶做的越小越好。但是這里又一個(gè)矛盾出現(xiàn)了,就是條帶太小,導(dǎo)致并發(fā)IO幾率降底,因?yàn)槿绻麠l帶太小,則每次IO一定會(huì)占用大部分物理盤,而隊(duì)列中的IO就只能等待這次IO結(jié)束后才能使用物理盤。而條帶太大,又不能充分提高傳輸速度,這兩個(gè)是一對(duì)矛盾,按照需求來采用不同的方式。

我們接著分析raid0相對(duì)于單盤的性能變化。根據(jù)以上總結(jié)出來的公式,可以推得以下表格:



RAID0


IOPS




并發(fā)IO


順序IO


并發(fā)IO


順序IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


Io size/strip size較大


不支持


不支持


提升極小


提升了N乘系數(shù)倍


不支持


不支持


提升極小


提升了N乘系數(shù)倍


Io size/strip size較小


提升了(1+并發(fā)系數(shù))倍


提升了(1+并發(fā)系數(shù)+系數(shù))系數(shù)倍


提升極小


提升了系數(shù)倍


提升了(1+并發(fā)系數(shù))倍


提升了(1+并發(fā)系數(shù)+系數(shù))倍


提升極小


提升了系數(shù)倍


注:并發(fā)IO和IO size/strip size是一對(duì)矛盾,兩者總是對(duì)立。N=組成raid0的磁盤數(shù)目。系數(shù)=io size/strip size和初始LBA地址所處的strip偏移綜合系數(shù),大于等于1。并發(fā)系數(shù)=并發(fā)IO的數(shù)量


Raid1
Raid1是這樣一種模式,我們拿2塊盤的例子來說明:



Raid1和raid0不同,raid0對(duì)數(shù)據(jù)沒有任何保護(hù)措施,每個(gè)block都沒有備份或者校驗(yàn)保護(hù)措施。Raid對(duì)虛擬邏輯盤上的每個(gè)物理block,都在物理盤上有一份鏡像備份。也就是說數(shù)據(jù)有兩份。對(duì)于raid1的寫IO,速度不但沒有提升,而且有所下降,因?yàn)閿?shù)據(jù)要同時(shí)向多塊物理盤寫,時(shí)間以最慢的你個(gè)為準(zhǔn),因?yàn)槭峭降摹6鴮?duì)于raid1的讀IO請(qǐng)求,不但可以并發(fā),而且就算順序IO的時(shí)候,控制器也可以象raid0一樣,從兩塊物理盤上同時(shí)讀數(shù)據(jù),提升速度。Raid1沒有srip的概念。同樣我們總結(jié)出一個(gè)表格:

RAID1


IOPS




并發(fā)IO


順序IO


并發(fā)IO


順序IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO



提升N或者并發(fā)系數(shù)倍


提升N倍或者并發(fā)系數(shù)


提升極小


提升了N 倍


不支持


事物性IO可并發(fā),提升并發(fā)系數(shù)倍


沒有提升


沒有提升


注:raid1沒有strip的概念。N=組成raid1鏡像物理盤的數(shù)目。?


在讀、并發(fā)IO的模式下,由于可以并發(fā)N個(gè)IO,每個(gè)IO占用一個(gè)物理盤,這就相當(dāng)于提升了N倍的IOPS。由于每個(gè)IO只獨(dú)占了一個(gè)物理盤,所以速度相對(duì)于單盤并沒有改變,所以不管是隨機(jī)還是順序IO,相對(duì)單盤都不變。
在讀、順序IO、隨機(jī)IO模式下,由于IO不能并發(fā),所以此時(shí)一個(gè)IO可以同時(shí)讀取N個(gè)盤上的內(nèi)容,但是是在隨機(jī)IO模式下,那么尋道時(shí)間影響很大,縱使同時(shí)分塊讀取多個(gè)磁盤的內(nèi)容,也架不住尋道時(shí)間的抵消,所以性能提升極小
在讀、順序IO、連續(xù)IO模式下,尋道時(shí)間影響到了最低,此時(shí)傳輸速率為主要矛盾,同時(shí)讀取多塊磁盤的數(shù)據(jù),時(shí)間減少為1/N,所以性能提升了N倍。
寫IO的時(shí)候和讀IO情況相同,就不做分析了。寫IO因?yàn)橐瑫r(shí)向每塊磁盤寫入備份數(shù)據(jù),所以不能并發(fā)IO,也不能分塊并行。但是如果控制器把優(yōu)化算法做到極至的話,還是可以并發(fā)IO的,比如控制器從IO隊(duì)列中提取連續(xù)的多個(gè)IO,可以將這些IO合并,并發(fā)寫入磁盤。前提這幾個(gè)IO必須是事物性的,也就是說LBA必須連續(xù),不然不能作為一個(gè)大的合并IO,而且和文件系統(tǒng)也有關(guān)系,文件系統(tǒng)碎片越少,并發(fā)幾率越高。

Raid2

raid2是一種比較特殊的raid模式,他是一種專用raid,現(xiàn)在早已被淘汰。他的基本思想是,IO到來之后,控制器將數(shù)據(jù)分割開,在每塊物理磁盤讀或者寫1bit。這里有個(gè)疑問,磁盤的最小IO單位是扇區(qū),512字節(jié),如何寫入1bit呢?其實(shí)這個(gè)寫入1bit,并非只寫入1bit。我們知道上層IO,可以先經(jīng)過文件系統(tǒng),然后才通過磁盤控制器驅(qū)動(dòng)來向磁盤發(fā)出IO,最終的IO大小,都是N倍的扇區(qū),也就是Nx512字節(jié),N大于等于1,不可能發(fā)生N小于1的情況,即使你需要的數(shù)據(jù)只有幾個(gè)字節(jié),那么也同樣要讀出或者寫入整個(gè)扇區(qū),也就是512字節(jié)。明白這個(gè)原則之后,我們?cè)賮砜匆幌聄aid2中所謂的“每個(gè)磁盤寫1bit”是個(gè)什么概念。IO最小單位為扇區(qū),512字節(jié),我們就拿一個(gè)4塊數(shù)據(jù)盤+3塊校驗(yàn)盤的raid2系統(tǒng)給大家來說明一下。這個(gè)環(huán)境中,raid2的一個(gè)條帶大小是4bit(1bit乘4塊數(shù)據(jù)盤),而IO最小單位是一個(gè)扇區(qū),那么如果分別向每塊盤寫1bit,就需要分別向每塊盤寫一個(gè)扇區(qū),每個(gè)扇區(qū)只包含1bit有效數(shù)據(jù),這顯然是不好的,因?yàn)樘速M(fèi)空間,沒有意義。因?yàn)镮O數(shù)據(jù)到來時(shí),我們拿以下IO請(qǐng)求為例:寫入 初始扇區(qū)10000長度1,這個(gè)IO目的是要向LBA10000寫入一個(gè)扇區(qū)的數(shù)據(jù),也就是512字節(jié)。Raid2控制器接受到這512字節(jié)的數(shù)據(jù)之后,先將其放入cache,然后計(jì)算需要寫入的物理磁盤的信息,比如定位到物理扇區(qū),分割數(shù)據(jù)成bit,然后一次性寫入物理磁盤扇區(qū)。

也就是說第一塊物理盤,控制器會(huì)寫入本次IO數(shù)據(jù)的第1、5、9、13、17、21。。。。。。。。。。。等等位,第二塊物理盤會(huì)寫入2、6、10、14、18、22。。。。。。。。。。等等位,其他兩塊物理盤同樣方式寫入。直到這樣將數(shù)據(jù)寫完。我們可以計(jì)算出來,這512字節(jié)的數(shù)據(jù)寫完之后,此時(shí)每塊物理盤只包含128字節(jié)的數(shù)據(jù),也就是一個(gè)扇區(qū)的四分之一,那么這個(gè)扇區(qū)剩余的部分,就是空的。如果要利用起這部分空間,那么等下次IO到來之后,控制器對(duì)數(shù)據(jù)進(jìn)行bit分割,將要填入這些空白區(qū)域的數(shù)據(jù),控制器將首先讀出原來的數(shù)據(jù),然后和新數(shù)據(jù)合并之后,一并再寫回這個(gè)扇區(qū),這樣做效率和速度都大打折扣。我們可以發(fā)現(xiàn),其實(shí)raid2就是將原本連續(xù)的一個(gè)扇區(qū)的數(shù)據(jù),以位為單位,分割存放到不連續(xù)的多塊物理盤上,因?yàn)檫@樣可以全組并行讀寫,提高性能。每個(gè)物理磁盤扇區(qū)其實(shí)是包含了N個(gè)扇區(qū)的“殘?bào)w”。那么如果出現(xiàn)需要更新這個(gè)IO的4個(gè)扇區(qū)中某一個(gè)扇區(qū)的情況,怎么辦?這種情況下,必須先讀出原來的數(shù)據(jù),和新數(shù)據(jù)合并,然后在一并寫入。其實(shí)這種情況出現(xiàn)的非常少。我們知道上層IO的產(chǎn)生,一般是需要先經(jīng)過os的文件系統(tǒng),然后才到磁盤控制器這一層的。所以磁盤控制器產(chǎn)生的IO,一般都是事務(wù)性的,也就是這個(gè)IO中的所有扇區(qū),很大幾率上對(duì)于上層文件系統(tǒng)來說,是一個(gè)完整的事務(wù),所以很少會(huì)發(fā)生只針對(duì)這個(gè)事務(wù)中某一個(gè)原子進(jìn)行讀寫的情況。這樣的話,每次IO很大幾率都會(huì)包含入這些邏輯上連續(xù)的扇區(qū)的,所以不必?fù)?dān)心經(jīng)常會(huì)發(fā)生那種情況,即便發(fā)生了,控制器也只能按照那種低效率的做法來做,不過總體影響較小。但是如果隨機(jī)IO比較多,那么這些IO初始LBA,很有可能就會(huì)命中在一個(gè)兩個(gè)事務(wù)交接的扇區(qū)處,這種情況,就導(dǎo)致速度和效率大大降低了。連續(xù)IO出現(xiàn)這種情況的幾率非常小了。

Raid2因?yàn)槊看巫x寫都需要全組磁盤聯(lián)動(dòng),所以為了最大化其性能,最好保證每塊磁盤主軸同步,使得同一時(shí)刻每塊磁盤磁頭所處的扇區(qū)邏輯編號(hào)都一致,并存并取,達(dá)到最佳性能,如果不能同步,則會(huì)產(chǎn)生等待,影響速度。

基于raid2的并存并取的特點(diǎn),raid2不能實(shí)現(xiàn)并發(fā)IO,因?yàn)槊看蜪O都占用了每塊物理磁盤。

Raid2的校驗(yàn)盤對(duì)系統(tǒng)不產(chǎn)生瓶頸,但是產(chǎn)生延遲,因?yàn)槎嗔擞?jì)算校驗(yàn)的動(dòng)作。校驗(yàn)位和數(shù)據(jù)位是一同并行寫入或者讀取的。Raid2采用海明碼來校驗(yàn)數(shù)據(jù),這種碼可以判斷修復(fù)一位錯(cuò)誤的數(shù)據(jù),并且使用校驗(yàn)盤的數(shù)量太多,4塊數(shù)據(jù)盤需要3塊校驗(yàn)盤,但是隨著數(shù)據(jù)盤數(shù)量的增多,校驗(yàn)盤所占的比例會(huì)顯著減小。
Raid2和raid0有些不同,raid0不能保證每次IO都是多磁盤并行,因?yàn)閞aid0的分塊相對(duì)raid2以位為單位來說是太大了,而raid2由于她每次IO都保證是多磁盤并行,所以其數(shù)據(jù)傳輸率是單盤的N倍,為了最好的利用這個(gè)特性,就需要將這個(gè)特性的主導(dǎo)地位體現(xiàn)出來,而根據(jù)IOPS=IO并發(fā)系數(shù)/(尋道時(shí)間+數(shù)據(jù)傳輸時(shí)間),尋道時(shí)間比數(shù)據(jù)傳輸時(shí)間大幾個(gè)數(shù)量級(jí),所以為了體現(xiàn)數(shù)據(jù)傳輸時(shí)間減少這個(gè)優(yōu)點(diǎn),就必須避免尋道時(shí)間的影響,而避免其影響的最佳做法就是:盡量產(chǎn)生連續(xù)IO而不是隨機(jī)IO,所以,raid2最適合連續(xù)IO的情況。另外,根據(jù)每秒IO吞吐量=IO并發(fā)系數(shù)乘IO SIZE乘V/(V乘尋道時(shí)間+I(xiàn)O SIZE),如果將IO size也增大,則每秒IO吞吐量也將顯著提高。所以,raid2最適合的應(yīng)用,就是:產(chǎn)生連續(xù)IO,大塊IO的情況,不言而喻,文件服務(wù),視頻流服務(wù)等等這些應(yīng)用,適合raid2,不過,raid2的缺點(diǎn)太多,比如校驗(yàn)盤數(shù)量多,算法復(fù)雜等等,它逐漸的被raid3替代了。



RAID2


IOPS




順序IO


順序IO


非事務(wù)性隨機(jī)IO


事務(wù)性隨機(jī)IO


連續(xù)IO


非事務(wù)性隨機(jī)IO


事務(wù)性隨機(jī)IO


連續(xù)IO


IO滿足公式條件


提升極小


提升極小


提升N倍


性能降低


提升極小


提升N倍


注:N=數(shù)據(jù)盤數(shù)量。Raid2不能并發(fā)IO




Raid3
?
由于raid2缺點(diǎn)比較多,比如非事務(wù)性IO對(duì)他的影響,校驗(yàn)盤數(shù)量太多等等。Raid2的劣勢(shì),就在于它的將數(shù)據(jù)以bit為單位,分割,將原本物理連續(xù)的扇區(qū),轉(zhuǎn)變成物理不連續(xù),邏輯連續(xù)的,這樣就導(dǎo)致了它對(duì)非事務(wù)性IO的效率低下。為了從根本上解決這個(gè)問題,raid3出現(xiàn)了。既然要從根本上解決這個(gè)問題,首先就是需要拋棄raid2對(duì)扇區(qū)進(jìn)行分散的做法。Raid3保留了扇區(qū)的物理連續(xù)。Raid2將數(shù)據(jù)以bit為單位分割,這樣為了保證每次IO占用全部磁盤的并行性。而raid3同樣也保留了這個(gè)特點(diǎn),但是沒有以bit為單位來分散數(shù)據(jù),而就是以扇區(qū)或者幾個(gè)扇區(qū)為單位來分散數(shù)據(jù)。Raid3還采用了高效的XOR校驗(yàn)算法,但是這種算法只能判斷數(shù)據(jù)是否有誤,不能判斷出哪一位有誤,更不能修正。XOR校驗(yàn)使得raid3不管多少塊數(shù)據(jù)盤,只需要一塊校驗(yàn)盤就足夠了。



Raid3的每一個(gè)條帶,其長度很小,深度為1。這樣的話,每個(gè)segment的大小一般就是1個(gè)扇區(qū)或者幾個(gè)扇區(qū)的容量。以上圖的例子來看,4塊數(shù)據(jù)盤,一塊校驗(yàn)盤,每個(gè)segment,也就是圖中的一個(gè)block portion,假如為2個(gè)扇區(qū)大小,也就是1k,則整個(gè)條帶大小為4k,如果一個(gè)segment大小為8個(gè)扇區(qū),即4k,則整個(gè)條帶大小為16K。

我們還是用一個(gè)例子來說明raid3的作用機(jī)制。比如,一個(gè)4數(shù)據(jù)盤,1校驗(yàn)盤的raid3系統(tǒng),segment size為2個(gè)扇區(qū)大小即1k。raid3控制器接受到了這么一個(gè)IO:寫入 初始扇區(qū)10000長度8,即總數(shù)據(jù)量為8乘512字節(jié)=4k。則控制器先定位LBA10000所對(duì)應(yīng)的真實(shí)物理LBA,假如LBA10000恰好在第一個(gè)條帶的第一個(gè)segment的第一個(gè)扇區(qū)上,那么控制器將這個(gè)IO數(shù)據(jù)里的第1、2個(gè)512字節(jié)寫入這個(gè)扇區(qū),同一時(shí)刻,第3、4個(gè)512字節(jié)會(huì)被同時(shí)寫入這個(gè)條帶的第二個(gè)segment中的兩個(gè)扇區(qū),其后的數(shù)據(jù)同樣被寫入第3、4個(gè)segment中,此時(shí)恰好是4k的數(shù)據(jù)量。也就是說這4k的IO數(shù)據(jù),同時(shí)被寫入了4塊磁盤,每塊磁盤寫入了兩個(gè)扇區(qū),也就是一個(gè)segment,他們是并行寫入的,包括校驗(yàn)盤,也是并行寫入的,所以raid3的校驗(yàn)盤沒有瓶頸,但是有延遲,因?yàn)樵黾恿擞?jì)算校驗(yàn)的開銷。但現(xiàn)代控制器一般都使用專用的XOR硬件電路而不是cpu來計(jì)算xor,這樣就使得延遲降到最低。上面那個(gè)情況是IO size剛好等于一個(gè)條帶大小的時(shí)候,如果IO size小于一個(gè)條帶大小呢?我們接著分析,還是剛才那個(gè)環(huán)境,此時(shí)控制器接收到IO大小為2K的寫入請(qǐng)求,也就是4個(gè)連續(xù)扇區(qū),那么控制器就只能同時(shí)寫入兩個(gè)磁盤了,因?yàn)槊總€(gè)盤上的segment是2個(gè)扇區(qū),其他兩個(gè)磁盤此時(shí)就是空閑的,也只能得到兩倍的單盤傳輸速率。我們?cè)賮砜纯碔O size大于一個(gè)條帶大小的情況,會(huì)發(fā)生什么。還是那個(gè)環(huán)境,控制器收到的IO size=16k。則控制器一次所能并行寫入的,是4k,這16k就需要分4批來寫入4個(gè)條帶。其實(shí)這里的分4批寫入,不是先后,而還是同時(shí),也就是這16k中的第1、5、9、13k將由控制器連續(xù)寫入磁盤1,第2、6、10、14k,連續(xù)寫入磁盤2,依此類推,直到16k數(shù)據(jù)全部寫完,是并行一次寫完,這樣校驗(yàn)盤也可以一次性計(jì)算校驗(yàn)值并且和數(shù)據(jù)一同并行寫入。而不是“分批”。

通過比較,我們發(fā)現(xiàn),與其使得IO size小于一個(gè)條帶的大小,空閑一些磁盤,不如使得Io size大于或者等于條帶大小,使得沒有磁盤空余。因?yàn)樯蠈覫O size是不受控的,控制器說了不算,但是條帶大小是控制器說了算的,所以如果將條帶大小減少到很小,比如2個(gè)扇區(qū),一個(gè)扇區(qū),則每次上層IO,一般情況下都會(huì)占用所有磁盤,進(jìn)行并發(fā)傳輸。可以提供和raid2一樣的傳輸速度,并避免raid2的諸多缺點(diǎn)。Raid3和raid2一樣,不能并發(fā)IO, 因?yàn)橐粋€(gè)IO要占用全部盤,就算IO size小于strip size,因?yàn)樾r?yàn)盤的獨(dú)享,也不能并發(fā)IO。



RAID3


IOPS




并發(fā)IO


順序IO


并發(fā)IO


順序IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


Io size大于strip size


不支持


不支持


提升極小


提升了N倍


不支持


不支持


提升極小


提升了N倍


Io size小于strip size


不支持


事物性IO可并發(fā),提升并發(fā)系數(shù)倍


提升極小


提升了N乘IO size/strip size倍


不支持


事物性IO可并發(fā),提升并發(fā)系數(shù)倍


提升極小


提升了N乘IO size/strip size倍


注:N=組成raid3的數(shù)據(jù)磁盤數(shù)量。和raid2相同,事物性連續(xù)IO可能并發(fā)。
和raid2一樣,raid3同樣也是最適合連續(xù)大塊IO的環(huán)境,但是它比raid2成本更低,更容易部署。
具體分析:
不管任何形式的raid,只要是面對(duì)隨機(jī)IO,其性能比單盤沒有大的優(yōu)勢(shì),因?yàn)閞aid作所的只是提高傳輸速率,并發(fā)IO,容錯(cuò)。隨機(jī)IO只能靠降低單個(gè)物理磁盤的尋道時(shí)間來解決。而raid不能優(yōu)化尋道時(shí)間。所以隨機(jī)IO,raid3也同樣沒有優(yōu)勢(shì)。
連續(xù)IO,因?yàn)閷さ罆r(shí)間的影響因素可以忽略,raid3最拿手,因?yàn)橄髍aid2一樣,raid3可以大大加快數(shù)據(jù)傳輸速率,因?yàn)樗嵌啾P并發(fā)讀寫。所以理論上可以相對(duì)單盤提高N倍的速率。



Raid4




不管是Raid2還是raid3,他們都是為了大大提高數(shù)據(jù)傳輸率而設(shè)計(jì),而不能并發(fā)IO。諸如數(shù)據(jù)庫等等應(yīng)用,他們的特點(diǎn)就是隨機(jī)IO和小塊IO。想提高這種環(huán)境的IOPS,根據(jù)公式:IOPS=IO并發(fā)系數(shù)/(尋道時(shí)間+數(shù)據(jù)傳輸時(shí)間),隨機(jī)讀導(dǎo)致尋道時(shí)間很大,靠提高傳輸許率已經(jīng)不是辦法。所以觀察這個(gè)公式,想在隨機(jī)IO頻發(fā)的環(huán)境中提高IOPS,唯一能夠做的,只有提高IO并發(fā)系數(shù),不能并發(fā)IO的,想辦法讓他并發(fā)IO,并發(fā)系數(shù)小的,想辦法提高系數(shù)。
在raid3的基礎(chǔ)上,raid4被發(fā)展起來。我們分析raid3的性能的時(shí)候,曾經(jīng)提到過一種情況,就是io size小于strip size的時(shí)候,此時(shí)有磁盤處于空閑狀態(tài),而如果抓住這個(gè)現(xiàn)象,同時(shí)讓隊(duì)列中的下一個(gè)IO來利用這些空閑的磁盤,豈不是正好達(dá)到并發(fā)IO的效果了么?所以raid4將一個(gè)segment的大小做的比較大,以至于平均IO size總是小于strip size,這樣就能保證每個(gè)IO少占用磁盤,甚至一個(gè)IO只占用一個(gè)磁盤。
是的,這個(gè)思想對(duì)于讀IO是對(duì)路子的,但是對(duì)于寫IO的話,有一個(gè)很難克服的問題,那就是校驗(yàn)盤的爭用。考慮這樣一種情況:4塊數(shù)據(jù)盤+1塊校驗(yàn)盤組成的raid4系統(tǒng),某時(shí)刻一個(gè)IO占用了前兩塊盤+校驗(yàn)盤,此時(shí)雖然后兩塊是空閑的,可以同時(shí)接受新的IO請(qǐng)求,但是如果接受了新的IO請(qǐng)求,則新IO請(qǐng)求同樣也要使用校驗(yàn)盤,由于一塊物理磁盤不能同時(shí)處理多個(gè)IO,所以新IO雖然占有了數(shù)據(jù)盤的寫權(quán)限,但是寫校驗(yàn)盤的時(shí)候,仍然要等舊IO寫完后,才能寫入校驗(yàn),新IO才能完成,這樣的話,就和順序IO無異了,數(shù)據(jù)盤可并發(fā)而校驗(yàn)盤不可并發(fā),這樣不能實(shí)現(xiàn)并發(fā)IO。
下面我們來說幾個(gè)概念。



整條寫、重構(gòu)寫與讀改寫

整條寫(Full-stripe Write):整條寫需要修改奇偶校驗(yàn)群組中所有的條帶單元,因此新的奇偶校驗(yàn)值可以根據(jù)所有新的條帶數(shù)據(jù)計(jì)算得到。不需要額外的讀、寫操作。因此,整條寫是最有效的寫類型。整條寫的例子,比如raid2,raid3。他們每次IO總是幾乎能保證占用所有盤,因此每個(gè)條帶上的每個(gè)segment都被寫更新,所以控制器可以直接利用這些更新的數(shù)據(jù)計(jì)算出校驗(yàn)數(shù)據(jù)之后,在數(shù)據(jù)被寫入數(shù)據(jù)盤的同時(shí),將計(jì)算好的校驗(yàn)信息寫入校驗(yàn)盤。

重構(gòu)寫(Reconstruct Write):如果要寫入的磁盤數(shù)目超過陣列磁盤數(shù)目的一半,采取重構(gòu)寫方式。在重構(gòu)寫中,從這個(gè)條帶中不需要修改的segment中讀取原來的數(shù)據(jù),再和本條帶中所有需要修改的segment上的新數(shù)據(jù)計(jì)算奇偶校驗(yàn)值,并將新的segment數(shù)據(jù)和沒有更改過的segment數(shù)據(jù)以及新的奇偶校驗(yàn)值一并寫入。顯然,重構(gòu)寫要牽涉更多的I/O操作,因此效率比整條寫低。重構(gòu)寫的例子,比如raid4中,如果數(shù)據(jù)盤為8塊,某時(shí)刻一個(gè)IO只更新了一個(gè)條帶的6個(gè)segment,剩余兩個(gè)沒有更新,則重構(gòu)寫模式下,會(huì)將沒有被更新的兩個(gè)segment的數(shù)據(jù)讀出,和需要更新的前6個(gè)segment的數(shù)據(jù)計(jì)算出校驗(yàn)數(shù)據(jù),然后將這8個(gè)segment連同校驗(yàn)數(shù)據(jù)一并寫入磁盤。可以看出,這個(gè)操作只是多出了讀兩個(gè)segment中數(shù)據(jù)的操作。

讀改寫(Read-Modify Write):如果要寫入的磁盤數(shù)目不足陣列磁盤數(shù)目的一半,采取讀改寫方式。讀改寫過程如下:(1)從需要修改的segment上讀取舊的數(shù)據(jù);(2)從條帶上讀取舊的奇偶校驗(yàn)值;(3)根據(jù)舊數(shù)據(jù)、舊校驗(yàn)值和需要修改的segment上的新數(shù)據(jù)計(jì)算這個(gè)條帶上的新的校驗(yàn)值;(4)寫入新的數(shù)據(jù)和新的奇偶校驗(yàn)值。這個(gè)過程中包含讀取、修改、寫入的一個(gè)循環(huán)周期,因此稱為讀改寫。讀改寫計(jì)算新校驗(yàn)值的公式為: 新數(shù)據(jù)的校驗(yàn)數(shù)據(jù)=(老數(shù)據(jù) ?EOR? 新數(shù)據(jù)) ?EOR? 老校驗(yàn)數(shù)據(jù) 。如果待更新的segment已經(jīng)超過了條帶中總segment數(shù)量的一半,則此時(shí)不適合使用讀改寫,因?yàn)樽x改寫需要讀出這些segment中的數(shù)據(jù)和校驗(yàn)數(shù)據(jù),而如果采用重構(gòu)寫,只需要讀取剩余不準(zhǔn)備更新數(shù)據(jù)的segment中的數(shù)據(jù)即可,而后者數(shù)量比前者要少,所以超過一半,用重構(gòu)寫,不到一半,用讀改寫。整條更新,就用整條寫。 寫效率:整條寫 > 重構(gòu)寫 > 讀改寫

明白了這些概念之后,我們就可以繼續(xù)深入理解raid4了。如果僅僅根據(jù)爭用校驗(yàn)盤來下結(jié)論說raid4不支持并發(fā)IO,在經(jīng)過了以上三個(gè)概念的描述之后,看來顯然是片面的。我們?cè)O(shè)想這樣一種情形,某時(shí)刻一個(gè)IO只占用了全部磁盤的幾塊盤,另一些磁盤空閑,如果此時(shí)讓隊(duì)列中下一個(gè)IO等待的話,那么當(dāng)然不可實(shí)現(xiàn)并發(fā)IO。此時(shí)我們考慮:如果隊(duì)列中有這樣一個(gè)IO,它需要更新的LBA目標(biāo)和正在進(jìn)行的IO恰好在同一條帶上,并且處于空閑磁盤,而又不沖突,那么此時(shí)我們恰好就可以讓這個(gè)IO也搭一下正在進(jìn)行的IO的順風(fēng)車,反正都是要更新這個(gè)條帶的校驗(yàn)segment,與其兩個(gè)IO先后更新,不如讓他們同時(shí)更新各自的數(shù)據(jù)segment,而控制器負(fù)責(zé)計(jì)算本條帶的校驗(yàn)塊。這樣就完美的達(dá)到了IO并發(fā)。但是,有個(gè)問題,這種情況遇到的幾率真是小之又小。即便如此,控制器如果可以對(duì)隊(duì)列中的IO目標(biāo)LBA進(jìn)行掃描,將目標(biāo)處于同一條帶的IO,讓其并發(fā)寫入,這就多少類似NCQ技術(shù)了,不過這種技術(shù)需要上層軟件的配合,因?yàn)閬y序IO,會(huì)失去事務(wù)的順序性,所以還需要上層軟件作一些處理。

?

除了在控制器內(nèi)部實(shí)現(xiàn)這種算法之外,我們還可以直接在上層來實(shí)現(xiàn)這種模式。上層就是指操作系統(tǒng)的文件系統(tǒng)。因?yàn)槲募倒芾碇讓哟疟P。文件系統(tǒng)決定數(shù)據(jù)寫往磁盤上的哪些扇區(qū)。所以完全可以在文件系統(tǒng)這個(gè)層次上,將兩個(gè)不同事物的IO寫操作,盡量放到相同的條帶上,也就是說,比如一個(gè)條帶大小為16k,可以前8k放一個(gè)IO的數(shù)據(jù),后8k放也另一個(gè)IO的數(shù)據(jù),這兩個(gè)IO在經(jīng)過文件系統(tǒng)的計(jì)算之后,經(jīng)由磁盤控制器驅(qū)動(dòng)程序,向磁盤發(fā)出同時(shí)寫入整個(gè)條帶的操作,這樣就構(gòu)成了整條寫,如果實(shí)在不能占滿整條,那么也應(yīng)該盡量達(dá)成重構(gòu)寫模式,這樣不但并發(fā)了IO,還使得寫效率增加。這種在文件系統(tǒng)專門為raid4做出優(yōu)化的方案,最點(diǎn)型的就是netapp公司的磁盤陣列操作系統(tǒng)data ontap,這個(gè)操作系統(tǒng)中文件系統(tǒng)模塊稱為WAFL。WAFL文件系統(tǒng)的設(shè)計(jì)方式確保能夠最大限度地減少校驗(yàn)盤尋址操作。 上圖右半部對(duì)比顯示了WAFL如何分配同樣的數(shù)據(jù)塊,從而使得RAID 4更加有效。 WAFL總是把相關(guān)的數(shù)據(jù)塊寫到彼此鄰近的條帶中,消除校驗(yàn)盤上的長時(shí)間尋址操作。只要可能,WAFL也把多重?cái)?shù)據(jù)塊寫到同樣的條帶中,從而進(jìn)一步減少校驗(yàn)盤上的阻塞。FFS在上圖左半部中使用六道獨(dú)立的條帶,因此致使六個(gè)校驗(yàn)盤塊需要更新。 上圖右半部中,WAFL使用僅僅3道條帶,即只有三個(gè)校驗(yàn)塊需要更新。從而大大提高了RAID性能,消除了校驗(yàn)盤瓶頸。

?



RAID4


IOPS




特別優(yōu)化的并發(fā)IO


順序IO


特別優(yōu)化的并發(fā)IO


順序IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


Io size/strip size較大


沖突


沖突


提升極小


提升了N倍


沖突


沖突


沒有提升


提升了N倍


Io size/strip size較小


提升極小


提升并發(fā)系數(shù)倍


幾乎沒有提升


幾乎沒有提升


提升并發(fā)系數(shù)倍


提升并發(fā)系數(shù)乘N倍


性能降底


性能降底


注:N為raid4數(shù)據(jù)盤數(shù)量。Io size/strip size太大則并發(fā)IO幾率很小。
值得注意的是,如果io size/strip size的值太小,則順序IO讀,不管是連續(xù)還是隨機(jī)IO,幾乎都沒有提升。順序IO寫,性能下降,因?yàn)閕o size很小,又是順序IO,則只能進(jìn)行讀改寫,性能降底不少。
所以,如果要使用raid4,不進(jìn)行特別優(yōu)化,是不行的,至少要讓他可以進(jìn)行并發(fā)IO。我們觀察表格可知,并發(fā)IO模式下,性能都有所提升。然而如果要優(yōu)化到并發(fā)幾率很高,實(shí)則不容易。目前只有netapp的WAFL文件系統(tǒng)還在使用raid4,其他產(chǎn)品均未見使用。面臨淘汰,取而代之的是擁有高并發(fā)幾率的raid5系統(tǒng)。



Raid5


為了解決raid4系統(tǒng)不能并發(fā)IO困難的窘境,raid5相應(yīng)而出。Raid4并發(fā)困難,是因?yàn)樗男r?yàn)盤爭用的問題,如果能找到一種機(jī)制,能有效解決這個(gè)問題,則實(shí)現(xiàn)并發(fā)就會(huì)非常容易。Raid5恰恰解決了校驗(yàn)盤爭用這個(gè)問題。Raid5采用分布式校驗(yàn)盤的做法,將校驗(yàn)盤打散在raid組中的每塊磁盤上。如圖所示。每個(gè)條帶都有一個(gè)校驗(yàn)segment,但是不同條帶中其位置不同,在相鄰條帶之間循環(huán)分布。為了保證并發(fā)IO,raid5同樣將條帶大小做的較大,以保證每次IO數(shù)據(jù)不會(huì)占滿整個(gè)條帶,造成隊(duì)列其他IO等待。所以,raid5如果要保證高并發(fā)率,那么每個(gè)IO幾乎都是讀改寫模式,尤其是在隨機(jī)IO的情況下,所以raid5擁有較高的寫懲罰,但是在隨機(jī)IO頻發(fā)的環(huán)境下,仍然能保持較高的IOPS。
們來分析一下raid5具體的作用機(jī)制。以上圖為例的環(huán)境,條帶大小80k,每個(gè)segment大小16k。某一時(shí)刻,上層產(chǎn)生一個(gè)寫IO:寫入 初始扇區(qū)10000
長度8,即寫入4k的數(shù)據(jù)。控制器收到這個(gè)IO之后,首先定位真實(shí)LBA地址,假設(shè)定位到了第1個(gè)條帶的第2個(gè)segment(位于圖中的磁盤2)的第1個(gè)扇區(qū)(僅僅是假設(shè)),則控制器首先對(duì)這個(gè)segment所在的磁盤發(fā)起IO寫請(qǐng)求,讀出這8個(gè)扇區(qū)中原來的數(shù)據(jù)到cache,與此同時(shí)控制器也向這個(gè)條帶的校驗(yàn)segment所在的磁盤(即圖中的磁盤1)發(fā)起IO讀請(qǐng)求,讀出對(duì)應(yīng)的校驗(yàn)扇區(qū)數(shù)據(jù)并保存到cache,隨后利用XOR校驗(yàn)電路來計(jì)算新的校驗(yàn)數(shù)據(jù),利用公式: 新數(shù)據(jù)的校驗(yàn)數(shù)據(jù)=(老數(shù)據(jù) ?EOR? 新數(shù)據(jù)) ?EOR? 老校驗(yàn)數(shù)據(jù) 。現(xiàn)在cache中存在:老數(shù)據(jù),新數(shù)據(jù),老校驗(yàn)數(shù)據(jù),新校驗(yàn)數(shù)據(jù)。然后控制器立即再次向相應(yīng)的磁盤同時(shí)發(fā)起IO寫請(qǐng)求,將新數(shù)據(jù)寫入數(shù)據(jù)segment,將新校驗(yàn)數(shù)據(jù)寫入校驗(yàn)segment,并刪除老數(shù)據(jù)和老校驗(yàn)數(shù)據(jù)。
在上述過程中,這個(gè)IO占用的,始終只有1、2兩塊盤,因?yàn)樗碌臄?shù)據(jù)segment我們假設(shè)位于2盤的1條帶的2號(hào)segment,而這個(gè)條帶對(duì)應(yīng)的校驗(yàn)segment位于1盤,自始至終其他任何磁盤都沒有用到。那么如果此時(shí)隊(duì)列中有這么一個(gè)IO,他的LBA初始目標(biāo)假如位于圖中下方紅框所示的數(shù)據(jù)segment中(4盤),IO長度也不超過segment的大小,而這個(gè)條帶對(duì)應(yīng)的校驗(yàn)segment位于3盤上,這兩塊盤未被其他任何IO占用,所以,此時(shí)控制器就可以并發(fā)的處理這個(gè)IO,和上方紅框所示的IO,達(dá)到并發(fā)。
Raid5相對(duì)于經(jīng)過特別優(yōu)化的raid4來說,在底層就實(shí)現(xiàn)了并發(fā),可以脫離文件系統(tǒng)的干預(yù),任何文件系統(tǒng)的IO,都可以實(shí)現(xiàn)高并發(fā)幾率,而不像基于wafl文件系統(tǒng)的raid4,需要在文件系統(tǒng)上規(guī)劃計(jì)算出并發(fā)環(huán)境。
Raid5磁盤數(shù)量越多,可并發(fā)的幾率就越大。

RAID5


IOPS




并發(fā)IO


順序IO


并發(fā)IO


順序IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


Io size近似strip size


不支持


不支持


提升極小


提升了N倍


不支持


不支持


提升極小


提升了N倍


IO size大于segment size重構(gòu)寫


提升并發(fā)系數(shù)倍


提升并發(fā)系數(shù)倍


幾乎沒有提升


提升了IO size/segment size倍


提升并發(fā)系數(shù)倍


提升并發(fā)系數(shù)倍


性能下降


提升極小


Io size小于segment size讀改寫


提升并發(fā)系數(shù)倍


提升并發(fā)系數(shù)倍


提升極小


沒有提升


提升并發(fā)系數(shù)倍


提升并發(fā)系數(shù)倍


性能下降


性能下降


raid5最適合小塊IO,并發(fā)IO的情況下,性能都較單盤有所提升。


Raid6
?
raid6之前的任何raid級(jí)別,最多能保障在壞掉一塊盤的時(shí)候,數(shù)據(jù)仍然可以訪問,但是如果同時(shí)壞掉兩塊盤,則數(shù)據(jù)將會(huì)丟失。為了增加raid5的保險(xiǎn)系數(shù),raid6被創(chuàng)立。Raid6比raid5多增加了一塊校驗(yàn)盤,同時(shí)也是分布打散在每塊盤上,用另一個(gè)方程式來計(jì)算新的校驗(yàn)數(shù)據(jù),這樣,raid6同時(shí)在一個(gè)條帶上保存了兩份數(shù)學(xué)上不相關(guān)的校驗(yàn)數(shù)據(jù),這樣能夠保證同時(shí)壞兩塊盤的情況下,數(shù)據(jù)依然可以通過聯(lián)立這兩個(gè)數(shù)學(xué)關(guān)系等式來求解丟失的數(shù)據(jù)。Raid6較raid5在寫的時(shí)候,會(huì)同時(shí)讀取或者寫入額外的一份校驗(yàn)數(shù)據(jù),不過由于是并行同時(shí)操作,所以比raid5慢不了多少。其他特性和raid5類似。

RAID6


IOPS




并發(fā)IO


順序IO


并發(fā)IO


順序IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


隨機(jī)IO


連續(xù)IO


Io size近似strip size


不支持


不支持


提升極小


提升了N倍


不支持


不支持


提升極小


提升了N倍


IO size大于segment size重構(gòu)寫


提升并發(fā)系數(shù)倍


提升并發(fā)系數(shù)倍


幾乎沒有提升


幾乎沒有提升


提升并發(fā)系數(shù)倍


提升并發(fā)系數(shù)倍


性能下降


提升極小


Io size小于segment size讀改寫


提升并發(fā)系數(shù)倍


提升并發(fā)系數(shù)倍


提升極小


沒有提升


提升并發(fā)系數(shù)倍


提升并發(fā)系數(shù)倍


性能下降


性能下降



深入分析各種raid模式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 遂川县| 泰州市| 松江区| 万载县| 封开县| 新昌县| 贵德县| 额敏县| 沙河市| 遵义市| 碌曲县| 古交市| 保亭| 枣阳市| 邹城市| 辽阳市| 禄丰县| 高要市| 隆昌县| 怀远县| 拜城县| 定陶县| 临夏市| 临汾市| 巴南区| 邢台县| 五家渠市| 天津市| 阜新市| 宣武区| 买车| 绥滨县| 洪湖市| 大渡口区| 德庆县| 开原市| 册亨县| 象州县| 卫辉市| 紫阳县| 富顺县|