再談Raid 5和Raid 6的寫性能差異
這次給大家介紹下RAID 5和RAID 6做后端在寫性能上的差異以及原因。這里暫不考慮上層緩存以及跨array創(chuàng)建LUN帶來的性能提升,只考慮array本身的性能差異。
隨機短步寫
對于寫入量小于條帶數(shù)據塊的寫操作,之前已經講過,對于RAID 5而言,短步寫會從data盤上讀取要改寫的數(shù)據,從parity盤上讀取P校驗,然后把新數(shù)據寫入data盤,計算新的P校驗值并寫入P校驗盤,總共是2次讀+2次寫操作。
對于RAID 6,則需要讀取要改寫的數(shù)據,從P盤讀取P校驗,從Q盤讀取Q校驗,把新數(shù)據寫入data盤,計算新的P和Q校驗,再分別寫入P盤和Q盤,所以總共是3次讀+3次寫。
也就是說,假設所有寫入的塊大小都是Z, 單個磁盤所能處理Z大小的數(shù)據塊的***IOPS是定值X,組成RAID的磁盤個數(shù)都是Y,那么對應的RAID 5可以處理的***IOPS是X*Y/4,而RAID 6可以處理的是X*Y/6,對應的數(shù)據傳輸率就是Z*X*Y/4和Z*X*Y/6。也就是說,由于多了個Q校驗的讀寫,RAID 6在隨機短步寫性能上和RAID5比會有33%的差距。所以除了增大成員磁盤個數(shù)Y外,并沒有很好的方法來改進RAID 6的性能,而一味的增大Y又會帶來其他問題在此不再詳述。
連續(xù)整條帶寫
RAID 5整條帶寫的過程是,計算出P校驗,把數(shù)據和P校驗一起寫入到所有的RAID成員磁盤里。
RAID 6整條帶寫的過程是,計算出P和Q校驗,把數(shù)據和P和Q校驗一起寫入到所有的RAID成員磁盤里。
我們依然假設2種RAID都用相同的磁盤個數(shù)Y,RAID 5的條帶數(shù)據塊大小是a,RAID 6的條帶數(shù)據塊是b。那么由于有P校驗的存在,RAID 5的條帶大小就是a*(Y-1),RAID 6有P和Q兩個校驗,條帶大小就是b*(Y-2)。
不管是RAID 5還是RAID 6,寫完整的一個條帶,都需要把所有成員磁盤寫一次,也就是說需要的磁盤IO數(shù)都是Y。如果條帶數(shù)據塊a和b比較小的話,對于現(xiàn)在的大容量機械硬盤來說,尋道時間遠大于小塊數(shù)據的傳輸時間,所以我們可以假設磁盤處理a和b大小的數(shù)據塊的***IOPS都是x。那么RAID 5做連續(xù)整條帶寫的數(shù)據傳輸率就是a*(Y-1)*x,RAID 6則是b*(Y-2)*x。由此可見,當RAID 6和RAID 5的條帶數(shù)據塊大小一致時候(a=b),如果都是8個磁盤組成的RAID,RAID 5和RAID 6的傳輸率對比就是7:6,這是RAID 6多出一個Q校驗的代價。同時從上面的公式可以看到,增大RAID 6的條帶數(shù)據塊大小b可以在一定范圍內提高RAID 6的性能。當然b是不能***制增大的,當條帶數(shù)據塊大到一定程度的時候,尋道時間不再遠小于數(shù)據塊的傳輸時間,也就是說對于RAID 5和RAID 6的磁盤處理a和b大小的數(shù)據塊的***IOPS將不再相等,上面的公式也就不適用了。所以對于連續(xù)整條帶寫,選擇一個合適的條帶數(shù)據塊大小對于性能很重要。
綜上,RAID 6相對于RAID 5,有天然的寫性能上的不足,但是數(shù)據安全始終是***位的,隨著磁盤容量越來越大,RAID重建(rebuilding)時間也越來越長,RAID 5重建時候用戶數(shù)據暴露在無保護的時間窗口也越來越大,采用RAID 6可以更好的保護用戶數(shù)據,這點性能上的付出是值得的,而且通過上層的緩存和跨越更多個rank來建LUN可以一定程度上彌補性能差距。