深入分析各種raid級別相對單盤速度變化

入分析各種raid級別相對單盤速度變化

 RAID0用分片存儲方式把數據分佈在兩個盤或更多盤上,讀寫持續傳輸速率會增加一倍,隨機讀寫速度按理論是有可能增加的,這取決於數據分片大小和讀寫的大小,不過總的來說很值得懷疑;硬件RAID1的隨機和持續寫速率和單個硬盤是完全一樣的,但讀的話由於可以從兩個硬盤隨意選一個讀,隨機讀性能會有明顯的增加,可能至2倍,至於持續讀取速率理論上有可能增加,不過我很懷疑有這方面的優化,估計還是一樣的;RAID5由於寫要N+1個盤一起寫,所以隨機讀寫速率和單個硬盤是一樣的(或者更差),而持續讀寫速率按理論是單個硬盤的N倍,不過我也遇到過還不如RAID1的情況,這怎麼說呢?沒法說了。

 raid1和raid0的持續傳輸率,我認爲和控制器的算法和讀取數據大小有關。如果隨機讀取(非連續讀取,尋道開銷很大),而且數據又很小,那麼不管單盤還是多盤raid,速率幾乎一樣,因爲都浪費到尋道上了。根據公式可以算出來,1/(尋道時間+傳輸時間)=iops。如果尋道時間比傳輸時間大幾個數量級,那麼傳輸時間翻倍變化,也對iops沒多少影響。然後提一下併發IO的概念:併發IO,指多個IO可以同時被處理,比如IO1可以訪問a盤,IO2可以同時訪問b盤。併發IO的反義詞是順序IO。

 

基於以上結論有:

1、raid0持續讀寫和單盤比較:尋道時間不便,raid0傳輸時間=單盤2倍,總體iops差別不大。但是有二條:併發IO和raid0的分割塊大小。又可以分兩個因素,

第一:不併發IO(或者併發IO)+分割塊很小。這種情況下,尋道時間不變,傳輸速度相對單盤減半,iops差不多。

第二:不併發IO+分割塊很大。這樣的話,一次IO尋道時間相對單盤不變,傳輸速度可能不變(如果一次IO恰好只讀取一個分割塊),或者傳輸速度減半(一次IO可能定向到兩塊盤)。不管怎麼樣,對iops影響不大。

第三:併發IO+分割塊很大。這樣,尋道時間減半,傳輸時間可能減半也可能不變。總之iops會增大很多。

結論:raid0持續讀寫僅在併發IO+分割塊很大的時候,iops會增加很多。

 

2、raid0隨機讀寫和單盤比較:尋道時間相等,raid0傳輸時間減半,差別不大。但是有二條:併發IO和raid0的分割塊大小。這又可以分出兩個條件因素

第一:不併發IO&分割塊很小,以至於每次IO必須定向到兩塊盤,這種情況raid0和單盤差別不大。

第二:不併發IO&分割塊比較大,一次IO可能只用一塊盤,那麼這種情況和單盤直接就是一樣的。

第三:併發IO&分割塊很小,那麼併發IO就不起作用,因爲每次IO都會佔用兩塊盤,那麼就併發不了,這樣iops還是差不多。

第四:併發IO&分割塊很大。這種情況,併發IO奏效,進程下發的多個IO,控制器並行執行,這樣,尋道時間和傳輸時間都相對單盤要減半。所以理論上,是單盤的兩倍。

結論:raid0隨機讀寫僅在併發IO+分割塊很大的時候,iops顯著增加。

 

3、raid1持續讀寫和單盤比較

因爲raid1沒有什麼分割概念了。所以因素只有一條:是否併發IO

第一:不併發IO。此時尋道時間不變,傳輸時間不變,iops不變

第二:併發IO。此時尋道時間減半,傳輸時間減半,iops翻倍。結論:raid1持續讀寫,僅在併發IO的情況下,iops顯著增加。

 

4。raid1隨機讀寫和單盤比較

第一:不併發IO。此時尋道時間不變,傳輸時間不變,iops不變

第二:併發IO。此時尋道時間減半,傳輸時間減半,iops翻倍。

結論:raid1隨機讀寫,僅在併發IO的情況下,iops顯著增加。

 

5、raid5持續讀寫和單盤比較

raid5可以說有raid0的影子。有三個因素:是否併發IO,讀or寫,條帶深度。striple depth的概念,請大家自行搜索snia標準化文檔,做學問要窮根問底,不要人云亦云。沒看過基本定義就下定結論,都是不好的做法。

先說讀。

第一:讀,非併發IO,IO size小於等於條帶深度。此時,一次IO只佔用一塊磁盤,而其他IO正在排隊,所以尋道時間等於單盤時間,傳輸時間等於單盤

第二:讀,非併發IO,IO size遠大於條帶深度。此時一個IO佔用多塊磁盤(視io size決定,越大佔用越多,但是大過了頭,反而有所抵消)。尋道時間是單盤的1/n,n=IO size/striple size。iops顯著增加。

第三:讀,併發IO,IO size小於等於條帶深度。此時多IO併發,相對尋道時間是單盤的1/n。iops顯著增加

第四:讀,併發IO,IO size遠大於條帶深度。此時併發IO效果被抵消。只是減少了傳輸時間,iops差不多。

第五:寫,非併發IO,IO size小於等於條帶深度寫,非併發IO,IO size遠大於條帶深度 這兩種情況下,iops都沒有什麼增加而且有減小。只是傳輸速度減半而已(對於前者傳輸速度不變)。不管怎麼說,寫速度肯定是比單盤要慢了,因爲raid5的寫懲罰,這個就不必多說了。

第六:寫,併發IO,IO size小於等於(或者大於)條帶深度。因爲併發IO,所以總體速度比單盤快,但是寫懲罰又抵消了性能,總體不好說,要測試

結論:

讀,非併發IO,IO size遠大於條帶深度

讀,併發IO,IO size小於等於條帶深度

raid5僅在以上兩種情況,iops顯著增加。

 

raid1和raid0的持續讀寫iops,應該相比單盤會有顯著增加,因爲尋道時間雖然對單盤沒有變化,但是尋道時間相比隨機IO的時候,小了很多,此時傳輸時間的變化就上升爲主要矛盾了。raid5持續讀,在io size遠大於striple size的時候,也是顯著增加。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章