存儲極客談“SSD RAID能跑多快?要安全就沒性能?”
我曾經(jīng)不只一次看到有朋友提出以下問題:
1. SSD做RAID性能如何,RAID卡會成為瓶頸嗎?
2. SAS/SATA SSD做RAID,與PCIe/NVMe Flash相比,哪個性能好?
3. SAS SSD是否比SATA SSD性能好,用在服務(wù)器上有無必要?
4. SSD做哪種RAID級別最合適,R5/10性能損失是否比HDD更大?
5. RAID卡與SAS HBA(或RAID卡直通模式)相比,性能差多少?
最近看到一份比較全的測試資料,包括RAID和Non-RAID (Pass-Thru)模式、6Gbps SATA SSD(最多12個)和12Gbps SAS SSD(最多8個)的全面性能水平。比較有參考價值。
免責聲明:測試平臺為戴爾13G服務(wù)器和Dell PowerEdge RAID Controller (PERC9) H730p,它使用了LSI 12Gb/s SAS RoC,應(yīng)該可以代表現(xiàn)在主流的RAID卡。由于測試時間原因,固件和驅(qū)動版本都不是***的,具體的SSD型號我也不注明了,希望不要將這些數(shù)字用于競爭性對比,那樣就違背了我分享的初衷。
RAID 0在絕大多數(shù)生產(chǎn)環(huán)境中都不推薦,在這里列出主要是作為和RAID 1/5的對比,并了解一下RAID卡處理能力的限制。同樣512byte數(shù)據(jù)塊大小也只是為了看看極限。
根據(jù)上方圖表,SATA SSD單盤RAID 0的512B和4KB隨機讀性能在5-10萬IOPS之間,增加SSD個數(shù)到2、4、8基本上能獲得線性提升,達到40-45萬IOPS。進一步加到12個SSD變化則不明顯,除非數(shù)據(jù)塊增大到8KB或者更高。35萬IOPS@8KB時的帶寬已經(jīng)達到2800MB/s。
使用SATA SSD的RAID 10測試成績,是本次分享中“稍有些不正常”的,這個可能與當時的Firmware版本和具體使用的SSD有關(guān)。簡單說就是4塊盤的表現(xiàn)和2塊盤差不多,而12塊盤則接近甚至超過了50萬IOPS,比RAID 0和5的表現(xiàn)更好。
RAID 0隨機寫沒有前面性能高,主要是SSD閃存盤自身的寫就比讀要慢。我們注意到單盤大約在3萬IOPS左右,那么8塊盤超過20萬,12塊盤超過30萬也是個正常的表現(xiàn)。、
為了避免寫緩存帶來的干擾,測試采用Write-Through的策略。我們知道RAID 5每一次改寫操作都會產(chǎn)生2次讀和2次寫I/O,也就是通常說的寫懲罰為4。隨機寫之所以性能差,就是因為離散的操作不能在Cache中合并形成整條帶I/O。
如上方圖表,SATA SSD RAID 5隨機寫在4、8塊盤時,性能比RAID 0的1/4要低一些,但也在可以接受的范圍內(nèi)。而12塊盤在數(shù)據(jù)塊較小時卻無法獲得理想的提升,考慮到Rebuild性能和第二塊盤故障的風險,我給出如下建議:
1. 多數(shù)情況下不建議SSD做RAID 6(這里指傳統(tǒng)RAID卡),因為性能損失太大;同樣也影響寫壽命,得不償失。
2. RAID 5建議不超過8-9(8+1)塊盤,也是在大多數(shù)情況下。
在《存儲極客:從硬盤設(shè)計思想到RAID改良之道》一文中,提到了“傳統(tǒng)RAID組中磁盤數(shù)量越多,Rebuild時要讀取的數(shù)據(jù)量也是成正比的… 在RAID卡固定條帶大小的情況下,參與硬盤數(shù)量越多Rebuild速度也會越慢。”
SATA SSD RAID 10隨機寫在不超過8塊盤時,基本達到了RAID 0 IOPS的一半;12塊盤在512B和4KB數(shù)據(jù)塊無法獲得明顯提升(原因在后面有對比分析)。由于RAID 10也存在第二塊盤故障的風險,因此可以參考上面的建議。
1塊SSD性能的差別,直通(即SAS HBA模式)與RAID相差不大;而在8塊盤以內(nèi),上圖表中的隨機讀就是與SSD數(shù)量完全成正比提高。12塊盤雖然無法保持這個趨勢,但512B和4KB的IOPS依然達到了70萬和55萬,繼續(xù)往后看您會發(fā)現(xiàn)此時RAID/HBA卡還沒有到達瓶頸。
直通模式下一個SSD隨機寫的性能依然在3萬IOPS左右,2/4/8塊盤也還是理想的線性提升。而12塊盤在512B接近60萬IOPS的性能有些不正常,猜測是個別測試子項未達到SSD的穩(wěn)態(tài)?
接下來看SAS SSD的測試結(jié)果。上面圖表中的RAID 0隨機讀,單盤4KB、8KB數(shù)據(jù)塊分別達到了15萬和10萬IOPS,后者的帶寬已經(jīng)達到800MB/s,這一水平只有12Gb/s SAS接口能跑到,6Gb/s SATA是不可能的。
在50萬IOPS以內(nèi),SSD數(shù)量增加帶來的提升基本上是線性的。得益于這款SAS SSD的單盤性能,4塊RAID 0就能達到50萬IOPS,再往上很快就遇到RAID卡的瓶頸了。而且12塊與8塊SSD的隨機讀已經(jīng)拉不開差距。
曾經(jīng)有朋友和我討論過SAS SSD是否比SATA更快?從接口角度主要是帶寬不同,SAS除了有12Gb/s之外還有雙端口,后者更多價值在于雙控存儲。
我們這里只討論IOPS,比如有些低端企業(yè)級的SATA和SAS SSD,它們的閃存控制技術(shù)和NAND顆粒配置相差不大,因此性能上沒有明顯較大差別。而若是性能較高的SSD,比如使用16-18通道控制器,則其隨機訪問產(chǎn)生的帶寬也很可能超出SATA 600MB/s的接口限制,此時只有12Gb/s SAS才合理(注:PCIe/NVMe僅在本文結(jié)尾處用于對比)。這也是我基本沒有看到過SATA SSD控制器超過8-10通道的原因。
再多透露一點,本文中測試配置的SATA和SAS SSD分別來自Intel和HGST,其實后者的ASIC控制器硬件以及閃存接口技術(shù)也是來自Intel,但是定位不同。
RAID 5隨機讀和RAID 0基本保持一致,這一點與SATA SSD差不多。
SAS SSD RAID 10隨機讀也不再有遺憾,性能結(jié)果與RAID 0非常接近。
再來看看隨機寫。首先單個SAS SSD大約在4萬多IOPS@4KB,一直到8、12塊RAID 0保持了比較高度的線性提升。
RAID 5隨機寫這一項,SAS SSD并沒有表現(xiàn)出比SATA的明顯優(yōu)勢,45000 IOPS似乎是個瓶頸,也就是說距離上面RAID 0性能的1/4也差了不少。這大概就是RAID卡***的短板吧,傳統(tǒng)RAID算法對SSD優(yōu)化不夠。
因此要看應(yīng)用場景,像互聯(lián)網(wǎng)MySQL數(shù)據(jù)庫一主多從中的Slave節(jié)點,SATA SSD RAID 5的效果還是不錯的。
當數(shù)據(jù)塊大小達到8KB,8塊SAS盤RAID 5隨機寫還比較正常,這樣看用Oracle數(shù)據(jù)庫單機也還可以?雖然按照傳統(tǒng)思路OLTP推薦RAID 10,但是以這個IOPS水平比本地HDD RAID還是遠遠勝出的。
RAID 10隨機寫的表現(xiàn)比RAID 5大約高出一倍,但是***性能似乎被限制在10萬IOPS,所以還是不夠理想。當然,在不超過8塊SSD,數(shù)據(jù)塊不小于8KB的情況下寫懲罰的影響比較符合“2”。
總的來看,比SATA SSD更快的SAS SSD在隨機寫性能上遇到了RAID卡的瓶頸。盡管RAID 0不是這樣,但實際有意義的還是RAID 5和10。
在直通(Non-RAID)模式下,SAS SSD沒有讓我們失望,除了12塊盤仍無法獲得線性提升之外,隨機讀跑到了單塊HBA性能極限的100萬IOPS。不知大家還記得我在《突破百萬IOPS:blk-mq釋放SCSI性能》一文中列出的下面這個圖嗎?
Linux下需要考慮內(nèi)核&設(shè)備驅(qū)動的多隊列支持,而本文中測試數(shù)字是在Widnwos Server 2008 R2下獲得的,看來Windows在這方面比較早做好了準備,這大概就是商業(yè)操作系統(tǒng)的好處吧。
之前我在《SPC-1 500萬IOPS再引爭議:請用技術(shù)事實說話》中有一段討論過“Windows做存儲真的那么差嗎?”的話題,本文也算是增加了一點證據(jù)吧。
在沒有RAID開銷的情況下,隨機寫基本上就是SAS SSD本身性能的累積。
現(xiàn)在可以看下本文開頭提出的幾個問題是否有答案了,我們主要以服務(wù)器上的硬件RAID 5/10的4KB隨機讀寫來評估。
1. SATA/SAS SSD RAID卡隨機讀IOPS可達3x-5x萬IOPS的水平,具體與SSD單盤性能有關(guān);RAID 5隨機寫測得3.x-4.x萬IOPS,RAID 10隨機寫接近10萬。看來有些情況下RAID卡會成為瓶頸。
SATA/SAS SSD RAID個人建議配置不超過8-9個盤。
2. 下面我們用支持NVMe的Dell Express Flash PCIe SSD/閃存卡做下對比參照:
上圖是“性能”系列,而下圖為“混合用途”,二者的分類方法我們在《存儲極客:SSD壽命與閃存陣列選型(上)》一文中曾有討論,簡單說就是寫性能和壽命不同。
注:戴爾目前不自己制造服務(wù)器上閃存盤組件,這里列出的來自O(shè)EM合作伙伴,有的朋友可能看出了供應(yīng)商是哪一家。
RAID之后的SATA/SAS SSD IOPS性能比單個NVMe/PCIe Flash仍有差距,特別是RAID 5隨機寫存在比較大的短板。
3. 在大多數(shù)場合,服務(wù)器上使用SAS SSD做RAID的必要性不大,企業(yè)級SATA中也有表現(xiàn)不錯的。
4. 盡管RAID 5的寫IOPS只有RAID 10的一半不到,但由于閃存成本等方面因素,我了解到大多數(shù)人還是選擇了RAID 5。而且RAID 10還有鏡像盤同時達到寫壽命限制的風險,需要更重視磨損監(jiān)控。對隨機寫要求高的用戶,還是別用傳統(tǒng)RAID了。(寫到這里我有點同情Ceph的感覺)
5. RAID卡直通/HBA模式的表現(xiàn)則要好得多,由于沒有了RAID保護的開銷,總隨機寫性能全面超越單個PCIe Flash,畢竟是多塊盤。高速SAS SSD在這種情況下可以更好地發(fā)揮。我能想到的應(yīng)用模式,主要是分布式存儲(ServerSAN),當然多個PCIe Flash可能是更受青睞的一種選擇。
***我又想起一點,等支持NVMe的“硬”RAID卡出來,那時候再對比一下估計也是個挺有意思的事情。