RAID HBA與架構評述

    內容表格
    沒有標頭

    版本為 09:35, 13 Nov 2024

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    一般的RAID HBA 有三種型態的硬體架構

    1.  ASIC 的 IOP +IOC 
       
    2. ASIC 的ROC 
       
    3. FPGA 的 IOP +IOC
       
    4. FPGA的ROC


    在以RAID HBA的角度來看,它是從單純的SAS/SATA HBA上提供了RAID功能(RAID 0, RAID 1, RAID 5, RAID 6,甚至是混合模式),有些RAID HBA裝置在單顆HDD下還是可以識別使用(通常是沒有內置IOP),另外有些RAID HBA,就是得必須建立陣列才能用(如果HDD本身有資料存在的話,必須事先備份)。下面是一張LSI/3ware的早期9690SA-8i H/W RAID HBA卡,這是一張硬體RAID,是由PPC+IOP+IOC組成經典的StorSwitch結構,在3ware還沒被LSI併走以前,一直都是用這種結構:

    很多人以為那個PPC405R是IOP(@266MHz),連我當初以為也是=_=,其實這顆PPC處理器是用來操作韌體(Firmware)代碼用的(左邊那顆),真正作用的IOP部分在中間那顆被散熱器蓋住的晶片,可能是與9650SE同款的處理晶片-3ware/AMCC G133 RAID Engine(True Hardware RAID),因為一樣都標明8th-generation StorSwitch架構,故猜測可能是相同的,而且G133 RAID Engine並非從9650SE開始用的,所以是蠻古老的。不管如何,9690SA是真正的Hardware RAID,並且提供BBU支持。而下面這張是LSI 9211-8i的RAID HBA卡,提供基礎的RAID功能,在單顆HDD的情況下,可以被識別直接使用:
    注意!這顆用的晶片是LSI 2008,它是一顆RoC架構的晶片,所以是Hardware RAID架構,內置PPC440(@533MHz)的IOP,基本上是可以提供RAID 5模式,但是因為韌體的關係,並不提供RAID 5功能,因此IOP部分僅在消費成本較高的RAID模式下才比較有效益(而且Block Size還是固定的,不能調整=.="")。

    在某些廠牌的工作站/伺服器主機板也提供這塊晶片(這種其實可以稱之為ROMB方式),Host Bus用PCIe Gen2 Lane x8去連接他,例如Supermicro的X8SI6-F,不提供RAID 5模式,預設模式為IR(Integrated RAID)模式,但透過一小塊的RAIDKey去啟動並切換至IMR(Integrated MegaRAID)模式後,便可以得到支持,如下圖所示:

    透過RAIDKey方式啟動後,便可提供RAID 5模式,且允許Block Size彈性調整(最大只能到64KB),支持SSD Guard技術,但是因為切換成IMR模式後,在單顆HDD情況下,沒辦法被識別使用了,必須要建立陣列才行。下面是一張LSI MegaRAID SAS 9240-8i的RAID HBA,歸屬於MegaRAID產品線,所以可以提供對RAID 5模式的支持:

    在提供對RAID 5模式支持後,在單顆硬碟情況下無法被識別直接使用,而BIOS模式與SAS 9211不同,提供的是MFI(MegaRAID Firmware Interface)操作模式。

    這是一張LSI2008的方塊圖結構,如下所示:

    可以看到LSI2008支持到wide port x2,裡面有一塊-Fusion-MPT,這是LSI專屬的I/O通訊架構。 

    RAID HBA通常分成兩種形式:Software RAID和Hardware RAID,我想這玩過或著知悉一些RAID知識的人都應該知道,在說明這兩個模式之前,並不包含到一些古怪的產品實務設計,例如某家RAID卡廠商(H開 頭)早期某幾款提供某種程度的XOR硬線加速設計來提高I/O性能。

    Hardware RAID比較好講,基本的架構就是IOP+IOC的組合,IOC可以說是SAS/SATA HBA部分,IOP通常只是拿來加速運算用的。Hardware RAID的部分,我們稍後再提,先來講講Software RAID,根據Adaptec早期提供的一份基礎文獻(Hardware RAID vs. Software RAID: Which Implementation is Best for my Application?),對於了解Software RAID和Hardware RAID差異是值得參考的,就Software RAID的特徵,Software RAID拆成兩個部分:Pure Software Model – Operating System Software RAID和Hybrid Model – Hardware-Assisted Software RAID。在Pure Software Model下,這個模式是非常容易瞭解的,RAID功能與實作上的決定完全取決於作業系統而定,此模式提供最低成本的考量,但是缺點不少,最大的缺點在於 他I/O性能不佳,而且受到Software層級上的限制,意味著它容易被作業系統綁死,下圖是一張Pure Software Model的基礎示意圖:

    Pure Software Model在一般情況下,是不會去應用的,尤其最近這幾年來,Hybrid Model – Hardware-Assisted Software RAID反而是最常被用到的,基本上就是SAS/SATA HBA with a RAID BIOS或著是RAID BIOS integrated onto the motherboard,例如Intel的ICHxR就是一個Hardware-Assisted Software RAID,透過額外的硬體加入RAID的支持(將RAID Option ROM寫在BIOS裡),RAID功能部份可以獨立於作業系統,資料安全上也高於Pure Software Model,透過系統啟動BIOS初始化階段,可以預先檢測到RAID模式的狀況,並且提供獨立的GUI設定RAID組態,當然在某些RAID模式 下,IO性能依然會受到限制,例如典型的RAID 5模式。下面是一張基本的示意圖:

    這張描述的是以HBA with a RAID BIOS的模型,RAID Software與HBA部分包起來,RAID Software意指著將有關RAID代碼部分寫在NVRAM裡,作為系統啟動初始化的時候,獲得RAID的相關功能,也包括專屬的組態設定 (dedicated GUI and software to build and maintain the RAID)。

    這張是我取自DELL網站加以修改的基本HBA with a RAID BIOS結構:

    另外這張表示圖則是ICHxR實現RAID功能,將RAID Option ROM寫到主機板上的System BIOS裡,以提供RAID Configuration Utility建立RAID:

    Software RAID的相反就是Hardware RAID,如之前所提,典型就是IOP+IOC(A Discrete RAID Controller Card)的組合,IOP作為某些模式(例如RAID 5)的運算加速時,可以提供某種程度上的效益(得視該硬體處理性能而定),並且IOP會包含一些額外的硬線加速設計,當然Hardware RAID花費的建置成本都高於Software RAID,以下是來自DELL的IOP+IOC示意圖:

    這種結構大多都會包含對Cache Memory的支持,藉以提供Read/Write Cache算法來增強I/O性能,透過BBU來提供某種程度上的資料安全性。幾年前IOP+IOC的分離設計代表最經典的就是Intel IOP333,也就是說IOC部分透過額外的RAID HBA晶片來連接,以下是IOP333的方塊圖:

    上述有一個AAU(Application Accelerator Unit),這個硬線加速設計可以增強RAID6的運算性能,但是IOP333面臨到的最大瓶頸問題在於IOP與IOC之間的連接頻寬,基本上是透過 PCI-X拉過去的,最大提供1GB/s的帳面有效頻寬,這反而成了I/O性能上的問題,原因很簡單!就SAS 1.0規範來說好了,一條narrow link連接到Storage所支持的帳面頻寬為3Gbps,而wide port包含4 narrow links,3Gbps x4=12Gbps=1.5GB/s x80%=1.2GB/s,在1.2GB/s的頻寬下早就打爆PCI-X了,當然實際情況不是這樣,一個wide port還不太容易衝爆,但是wide port x2的結果就不是如此了,PCI-X頻寬不敷使用也是遲早的事。如下圖來自DELL PERC 5文件所示:

    可以看到使用IOP333與IOC接通,IOC是使用LSI1068控制晶片,LSI1068面對的Host Bus支持為PCI-X,IOP333與LSI1068之間的頻寬只有1GB/s,導致連接多顆Storage後,性能上的問題會愈來愈嚴重。以下是經典 的DELL PERC 5:

    IOC部分則是使用LSI1068(沒蓋散熱片的那顆),提供SAS/SATA HBA功能,在另一款的LSI 8344ELP也是這樣的設計,主要差別在於Connector連接規格不同與Cache Memory的可擴展性,如下圖所示:

    下面這張是早期Adaptec優秀的IOP333產品-4805SAS:

    IOC部分是採用與Vitesse合作的AIC-9410W晶片,提供wide port x2(4 narrow links/per port)。

    這張是相反的4800SAS,採用的IOP為IOP331:

    IOP331面向的Host Bus為PCI-X,結果跟4805SAS是一樣的。

    另外3ware經典的StorSwitch結構也是IOP+IOC的分離設計,而且韌體代碼的操作交由獨立的PPC來處理,下面是一張3ware的 9650SE-2LP:

    最左邊包含了PPC+韌體部分,中間則是一顆IOP,最右邊是Marvell的IOC,來提供對Storage的連接,這張好幾年前有玩過,實在不怎麼樣 的玩意兒,Host Bus部分為PCIe Gen1 x1,頻寬很小,提供Cache Memory支持,但是BBU功能被拿掉,且Connector是discrete的,也就是2 SATA ports,價格到現在還不便宜,因此可以列為最不划算的RAID產品之一XD。

    Intel從IOP33x之後,大幅改進推出IOP34x的優秀產品,這是一個RoC架構的產物,基本上IOP與IOC完全被整合,所以不必考慮之間的頻 寬問題,以下是IOP348的方塊圖:

    IOP34x是雙處理器結構,並且整合IOC部分,提供wide port x2(4 narrow links/per port),Cache Memory支持DDR2-533規格。RoC架構是這幾年的發展趨勢,雖然他不是創新的架構,不過這一兩年來的RAID硬體發展可以說是他的天下。下面 是Areca的優秀RAID產品-ARC-1680ix-24:

    可以看到這款可以支持到2 wide ports以上,因此這絕對是透過SAS Expander方式(右邊的那顆晶片)去擴展更多的wide port來連接大量的Storage。 

    Roc架構的一個經典產品是LSI的1078系列,下面可以看到一張來自DELL對PERC 6採用LSI1078的基本結構圖,事實上它是用來跟IOP333產品-PERC 5去做比較:

    PERC 6是前一兩年當紅的產品,因為它比LSI同期產品還要便宜不少,加了BBU也沒多加少錢,要注意!LSI的BBU實在貴到翻掉=_="",一塊就擁有跟 LSI 8888ELP(LSI1078)差不多的性能,缺點是相容性上的問題要注意。

    DELL PERC 6,Connector規格標準為非主流的SFF-8484標準,256MB DDR2-667 Cache Memory,後期的韌體支持SSD Guard(印象是要刷LSI的firmware...)。下圖則是前幾年LSI Internal/External RAID最高端的產品-MegaRAID 8888ELP:

    Connector規格標準為現今主流的Internal SFF-8087 x2和External SFF-8088 x2,透過SAS Expander連接可以達到240個Storage,Cache Memory可擴展,最高可以達到1GB,在當時無論如何都是非常強悍的RAID產品。而關於LSI1078的方塊圖如下:

    基本上塞一顆PPC440(@500MHz)的IOP,還包含了XOR Engine的硬線加速設計。LSI1078目前的最大缺顯在於Host Bus的頻寬瓶頸,因為PCIe Gen1 x8最大僅能支持到2GB/s的帳面有效頻寬,明顯略有不足,在後來的LSI2108就改善了這個問題,透過PCIe Gen2 x8提供了4GB/s的Host Bus帳面有效頻寬,可以說是大幅緩和!如下基本示意圖所示:

    LSI2108不僅僅是提高了PCIe頻寬的需求,並且提升了PPC440的性能(@800MHz),Cache Memory的支持提供到DDR2-800。下面是一張性能極為優秀的LSI MegaRAID 9260-8i:

    當然價格也是相當難看,而且BBU這部分實在貴得離譜,一顆BBU07要將近9k=.="",性能是很好沒錯,不過整體價格實在是OOXX的。

    目前拿Intel和LSI的例子來舉,僅是說明RoC成為這幾年來發展的主流,當然並不單單是只有這兩家,另外還包括了Marvell的88RC9580 和PMC-Sierria的PM8011。

    另外Intel目前已捨棄ARM架構的Xscale IOP設計,轉向以Nahalem架構為主的x86架構(Xeon C5500/C3500[Jasper Forest]),走的方向也比較與眾不同,HBA部分透過SBB總線架構用來與Backplane(with SAS Expander),SBB連接至Backplane提供相當高的I/O傳輸頻寬,對於一個mini-SAS Port的連結達到24Gbps的頻寬(並不一定如此,得視硬體設計!),不過現階段看到的透過x86 CPU僅能加速RAID 5/6運算性能,沒有包含對SATA/SAS連接器上的支持,依然還是得透過外接SAS/SATA HBA來提供(例如使用LSI2008作為IOC上的支持),而且x86架構的情況下,整個配套的軟體方案就顯得更重要了,就個人詢問得知目前比較完善在 Linux部分,Windows部分還是有待加強,這是我所得知的部分。以下是自繪的SBB架構的一部分:

    可以看到,透過Intel C5500/C3500[Jasper Forest]提供了一種XOR/P+Q硬線加速設計,用來提升對RAID 5/RAID6的性能,由於並沒有IOC的部分,必須另外接一塊做連接,例如這邊可以連接LSI2008作為與SAS Expander的溝通,最後利用SAS Expander透過Backplane與Storage建立連接(通過AMC)。

    如果把Intel排除的話,那這幾年的Hardware RAID設計可以說是殊途同歸,清一色都是RoC架構,不管是LSI/3ware、Marvell、Areca(採用Marvell RoC)、Promise(採用PMC-Sierria RoC)或著PMC-Sierria/Adaptec等等...,都是朝向這個方向發展,這不僅僅是性能上的提升,高度整合對於成本上的控制也有所助益, 整個PCB的規模也有助於精簡。此外,SSD的逐漸發展,也將為成為各家RAID廠商的優化議題,尤其以LSI來說,提供的LSI優化方案較為齊 全,Advanced Software Options包含了兩項對於SSD的最佳實作,當然這些都是要購買License的,至於其他,被PMC-Sierria買下來的Adaptec先前也 提供一種MaxIQ技術,只是這種技術花費成本相當昂貴。而Marvell在較低階的88SE9128也將會提供類似MaxIQ的低成本混合加速技術 -HyperHDD,事實上這一顆晶片有整合名為Sheeva的ARM處理器,理論上是可以提供對RAID 5的支持,並且可以透過Port Multiplier方式來使用,所以姑且應該算是一顆Hardware RAID吧。

    大致上關於SAS/SATA HBA和RAID HBA,所想到的就這些(以後還想到甚麼再去補..)。接下來就是一些RAID硬體資訊的收集,往後作為備忘查詢之用途XD!

    Powered by MindTouch Core