理解磁盤條帶化


參考http://www.pcguide.com/ref/hdd/perf/raid/concepts/perfStripe-c.html

 

什么是條帶化(striping)

 

    當多個進程同時訪問一個磁盤時,可能會出現磁盤沖突。大多數磁盤系統都對訪問次數(每秒的 I/O 操作,IOPS)和數據傳輸率(每秒傳輸的數據量,TPS)有限制。當達到這些限制時,后面需要訪問磁盤的進程就需要等待,這時就是所謂的磁盤沖突。

    避免磁盤沖突是優化 I/O 性能的一個重要目標,而 I/O 性能的優化與其他資源(如CPU和內存)的優化有着很大的區別 ,I/O 優化最有效的手段是將 I/O 最大限度的進行平衡。

    條帶化技術就是一種自動的將 I/O 的負載均衡到多個物理磁盤上的技術,條帶化技術就是將一塊連續的數據分成很多小部分並把他們分別存儲到不同磁盤上去。這就能使多個進程同時訪問數據的多個不同部分而不會造成磁盤沖突,而且在需要對這種數據進行順序訪問的時候可以獲得最大程度上的 I/O 並行能力,從而獲得非常好的性能。很多操作系統、磁盤設備供應商、各種第三方軟件都能做到條帶化。

    圖 1 描述的是一個未經條帶化處理的連續數據的分布,圖 2 描述的是一個已經被條帶化處理的連續數據的分布,從中比較,我們可以發現圖 2 中對連續數據的讀寫都有最大的並發能力。

圖 1. 未經條帶化處理的連續數據
理解磁盤條帶化

 

圖 2. 已經被條帶化處理的連續數據

理解磁盤條帶化

    由於條帶化在 I/O 性能問題上的優越表現,以致於在應用系統所在的計算環境中的多個層次或平台都涉及到了條帶化的技術,如操作系統和存儲系統這兩個層次中都可能使用條帶化技術。
 

影響條帶化效果的兩個因素

    當對數據做條帶化時,數據被切成一塊塊的小數據塊,各小數據塊分布存儲在不同的硬盤上。從這個描述中我們可以看出,影響條帶化效果的因素有兩個,一是條帶大小(stripe size),即數據被切成的小數據塊的大小,另一個條帶寬度(stripe width),即數據被存儲到多少塊硬盤上。

    條帶寬度(stripe width)是指同時可以並發讀或寫的條帶數量。這個數量等於RAID中的物理硬盤數量。例如一個經過條帶化的,具有4塊物理硬盤的陣列的條帶寬度就是4。增加條帶寬度,可以增加陣列的讀寫性能。道理很明顯,增加更多的硬盤,也就增加了可以同時並發讀或寫的條帶數量。在其他條件一樣的前提下,一個由8塊18G硬盤組成的陣列相比一個由4塊36G硬盤組成的陣列具有更高的傳輸性能。

    條帶大小(stripe size),有時也被叫做block sizechunk sizestripe length 或者 granularity。這個參數指的是寫在每塊磁盤上的條帶數據塊的大小。RAID的數據塊大小一般在2KB到512KB之間(或者更大),其數值是2的次方,即2KB,4KB,8KB,16KB這樣。

    條帶大小對性能的影響比條帶寬度難以量化的多。

    ·減小條帶大小: 由於條帶大小減小了,則文件被分成了更多個,更小的數據塊。這些數據塊會被分散到更多的硬盤上存儲,因此提高了傳輸的性能,但是由於要多次尋找不同的數據塊,磁盤定位的性能就下降了。

    ·增加條帶大小: 與減小條帶大小相反,會降低傳輸性能,提高定位性能。

    根據上邊的論述,我們會發現根據不同的應用類型,不同的性能需求,不同驅動器的不同特點(如SSD硬盤),不存在一個普遍適用的"最佳條帶大小"。所以這也是存儲廠家,文件系統編寫者允許我們自己定義條帶大小的原因。不同條帶大小,對於文件如何存儲有很大的影響,請看下邊這兩幅圖的對比:

理解磁盤條帶化理解磁盤條帶化
    這是一個由4塊硬盤組成的RAID0陣列,左邊的條帶大小為4KB,右邊的條帶大小為64KB。

左邊的圖中的每一條細格表示4KB大小。

    圖中紅色文件大小是4KB,藍色文件大小20KB,綠色文件大小為100KB,粉色文件大小為500KB。

    從圖中我們可以看到,不同條帶大小對"中型大小"文件的影響是很大的。對於紅色的4KB文件來說,不論條帶是4KB還64KB,它都分布在一塊硬盤的一個數據塊上。而對於粉色的500KB文件來說,無論條帶是4KB還是64KB,它都會被分布在四塊硬盤上。

    但是對於藍色20KB的文件來說,如果采用64KB的條帶大小,則它就會被分布在一塊硬盤上,而不是像4KB條帶時那樣分布在四塊硬盤上。同樣綠色的100KB文件在64KB條帶時,會被分布到2塊硬盤,而4KB條帶時則分布到4塊硬盤上。可以看到,增加條帶大小可以明顯地增加定位性能。在上邊的例子中,條帶寬度理所當然是4。

    下圖是使用16KB條帶時的文件分布圖,可以對應參考理解一下。
理解磁盤條帶化
     那么我們應該選擇多大的條帶大小呢?最好的辦法是嘗試不同組合,根據應用的不同得到自己的經驗規律。另外,不要過高估計不同條帶大小間的性能差異。它有可能會差的很大,尤其是設置成4KB和256KB這樣兩個相對極端數值的時候,但對於相差不大的數值,它們的性能差異可能就不明顯。對於大多數應用來說,可以參考這樣的經驗法則:大量的小文件讀寫時,采用較大的條帶大小;少量的大文件的快速訪問,采用比較小的條帶;如果要平衡這兩者,那么采用中間值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM