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