專利名稱:一種硬件raid5/6存儲系統(tǒng)的架構及數(shù)據(jù)處理方法
技術領域:
本發(fā)明涉及一種計算機存儲系統(tǒng),尤其是一種基于RAID5/6磁盤陣列存儲系統(tǒng)。
背景技術:
獨立冗余磁盤陣列(RedundantArray of Independent Disk, RAID)是一種把多塊獨立的硬盤(物理硬盤)按不同的方式組合起來形成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能與數(shù)據(jù)備份能力的技術。RAID特色是N塊硬盤同時讀取速度加快及提供容錯性(Fault Tolerant)。根據(jù)磁盤陳列的不同組合方式,可以將RAID分為不同級別,如RAIDO、RAID I、 RAID2、RAID5、RAID6等7個主要規(guī)范。根據(jù)架構的不同,RAID方案有兩種實現(xiàn)方法,一種是硬件RAID解決方案,另一種是軟RAID解決方案,還有一種外置RAID卡模式,也是硬件 RAID的一種。硬件RAID解決方案以其速度快、穩(wěn)定性好,可以有效地提供高水平的硬盤可用性和冗余度的優(yōu)點,在存儲系統(tǒng)中得到廣泛的應用。RAID5 (分布式奇偶校驗的獨立磁盤結構)是以數(shù)據(jù)的校驗位來保證數(shù)據(jù)的安全,它不以單獨硬盤來存放數(shù)據(jù)的校驗位,而是將數(shù)據(jù)段的校驗位交互存放于各個硬盤上,這樣允許單個硬盤出錯。RAID6 (兩種存儲的奇偶校驗碼的磁盤結構)是RAID5的擴展,引入了第二種校驗碼,安全性進一步提升。RAID5/6 作為在存儲性能、數(shù)據(jù)安全和存儲成本兼顧的存儲解決方案,是目前大容量存儲產(chǎn)品中最常見的方案。鑒于前述的RAID5/6的共性,如圖I描述了一個典型的使用硬件RAID5/6解決方案的存儲系統(tǒng)架構,其中硬件RAID5/6加速運算核(這里RAID6采用的是P + Q算法)通常為獨立的芯片,掛接在數(shù)據(jù)總線上,它主要完成RAID5中的XOR(異或)運算或者RAID6 中的XOR(異或)運算和GF(伽羅華域)乘法運算。圖2描述了在該結構框架下解決方案的數(shù)據(jù)流程。當主機需要寫數(shù)據(jù)到磁盤內(nèi)時,新的數(shù)據(jù)被主機控制器以DMA方式寫入內(nèi)存 DDR中,此時處理器單元通知硬件RAID5/6加速運算核從內(nèi)存DDR獲取數(shù)據(jù),并計算出該段數(shù)據(jù)的校驗值,之后硬件RAID5/6加速運算核將計算的數(shù)據(jù)校驗值再次存入內(nèi)存DDR ;最后處理器單元通知磁盤控制器將內(nèi)存中的數(shù)據(jù)以及相對應的校驗值寫入各個磁盤對應的條帶內(nèi)。當主機需要從磁盤內(nèi)讀數(shù)據(jù)時,磁盤控制器會將需要的數(shù)據(jù)以及對應的校驗值放入內(nèi)存DDR ;若此時有數(shù)據(jù)盤丟失,則處理器單元通知硬件RAID5/6加速運算核計算出丟失盤內(nèi)的數(shù)據(jù),之后硬件RAID5/6加速運算核將恢復的數(shù)據(jù)寫入內(nèi)存DDR;最后主機控制器獲取內(nèi)存DDR內(nèi)的數(shù)據(jù),并將之傳輸給主機。從以上流程中可以看出,進行一次讀寫操作,主機控制器、磁盤控制器和硬件RAID5/6加速運算核需要進行4次申請總線占用和訪問內(nèi)存 DDR,頻繁的總線申請和內(nèi)存訪問會大大降低整體系統(tǒng)的性能?,F(xiàn)有技術中,在不改變硬件RA ID 5 /6存儲系統(tǒng)架構的前提下,通過修改硬件 RAID5/6加速運算核的接口實現(xiàn)方法有一種優(yōu)化方案,使硬件RAID5/6加速運算核在主機控制器和磁盤控制器從內(nèi)存DDR讀數(shù)據(jù)時,可以獲取數(shù)據(jù)并進行數(shù)據(jù)校驗值的計算,之后主機控制器和磁盤控制器可通過內(nèi)部總線直接獲取硬件RAID5/6加速運算核內(nèi)的計算后的數(shù)據(jù)。圖3為該結構框架下解決方案的數(shù)據(jù)流程。當主機需要寫數(shù)據(jù)到磁盤內(nèi)時,數(shù)據(jù)被主機控制器以DMA方式同時寫入內(nèi)存DDR內(nèi),之后處理器單元通知磁盤控制器從內(nèi)存中獲取數(shù)據(jù),同時硬件RAID5/6加速運算核也從總線上獲取有效數(shù)據(jù),并計算出相應數(shù)據(jù)的校驗值;最后磁盤控制器從硬件RAID5/6加速運算核的緩存器內(nèi)獲取校驗值,并寫入各個磁盤內(nèi)。當主機需要從磁盤內(nèi)讀數(shù)據(jù)時,數(shù)據(jù)和其校驗值被磁盤控制器同時寫入內(nèi)存DDR 和硬件RAID5/6加速運算核,硬件RAID5/6加速運算核負責恢復丟失的數(shù)據(jù);主機控制器分別從內(nèi)存DDR和硬件RAID5/6加速運算核的緩存器內(nèi)獲取數(shù)據(jù)和恢復的數(shù)據(jù),并傳輸給主機使用。雖然該解決方案的系統(tǒng)架構不變,但是其數(shù)據(jù)流程卻已經(jīng)改變,這里減少了硬件 RAID5/6加速運算核訪問內(nèi)存和占用總線的次數(shù)有顯著的減少,但是數(shù)據(jù)的校驗值還需要占用一次內(nèi)部總線,而且該方法實現(xiàn)起來,硬件RAID5/6加速運算核需要較復雜的邏輯。
發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有的硬件RAID5/6技術,提出一種新的硬件架構,旨在更多的節(jié)約總線資源、減少內(nèi)存讀寫,提高整個RAID的數(shù)據(jù)傳輸性能。這種架構是這樣的多個磁盤被磁盤控制器控制,主機控制主機控制器掛載內(nèi)部數(shù)據(jù)總線,內(nèi)存、處理器單元、磁盤控制器也都掛載至內(nèi)部數(shù)據(jù)總線,硬件RAID5/6加速運算核沒有掛載到內(nèi)部數(shù)據(jù)總線上,而是放置在主機控制器和磁盤控制器之間。硬件RAID5/6 加速運算核內(nèi)部具有雙端口緩存器(RAM),它計算的校驗數(shù)值以及需要恢復的數(shù)據(jù)并不存放在內(nèi)存中,而是存放在所述的雙端口 RAM內(nèi);硬件RAID5/6加速運算核內(nèi)有兩個RAID5/6 計算單元,一個負責處理數(shù)據(jù)校驗值的產(chǎn)生,另一個負責丟失數(shù)據(jù)的恢復。本發(fā)明采用了 FPGA芯片的SOC架構,主機控制器和磁盤控制器的接口協(xié)議都在 FPGA芯片內(nèi)部實現(xiàn),所述主機控制器和硬件RAID5/6加速運算核之間以及磁盤控制器和硬件RAID5/6加速運算核之間通過并行內(nèi)部總線進行通信連接。若主機控制器和磁盤控制器的接口都是單獨芯片,硬件RAID5/6加速運算核也可以為一個單獨的芯片,它們之間也可通過高速串行總線進行連接通信(如SFI等串行傳輸協(xié)議接口)。基于所述的RAID5/6的硬件架構,具體的RAID數(shù)據(jù)處理方法是整個數(shù)據(jù)處理包括主機的寫數(shù)據(jù)和讀數(shù)據(jù)操作。對于主機的寫操作,主機控制器首先對接收的數(shù)據(jù)進行區(qū)分數(shù)據(jù)命令包和非數(shù)據(jù)命令包;對于數(shù)據(jù)命令包,主機控制器將其數(shù)據(jù)同時傳遞給硬件 RAID5/6加速運算核和內(nèi)存的DDR,硬件RAID5/6加速運算核負責對數(shù)據(jù)進行XOR運算或者 GF運算,并產(chǎn)生相應的RAID5或RAID6校驗值,并暫時存放在其內(nèi)部的緩存器RAM內(nèi);當數(shù)據(jù)塊計算完成之后,由處理器單元通知磁盤控制器從內(nèi)存DDR和硬件RAID5/6加速運算核的緩存器RAM內(nèi)分別讀取數(shù)據(jù)和校驗值;之后磁盤控制器負責將獲取到的數(shù)據(jù)寫入相應的磁盤中。非數(shù)據(jù)命令包則直接寫入內(nèi)存。對于主機的讀操作,磁盤控制器將各個磁盤內(nèi)的數(shù)據(jù)和校驗值讀取出來,同時寫入內(nèi)存DDR和硬件RAID5/6加速運算核,硬件RAID5/6加速運算核檢查是否有數(shù)據(jù)損壞,并恢復丟失的數(shù)據(jù),存放在相應的緩存器RAM內(nèi);主機控制器負責從內(nèi)存DDR和硬件RAID5/6 加速運算核的緩存器內(nèi)讀出相應的數(shù)據(jù),并傳輸給主機。本發(fā)明通過優(yōu)化硬件RAID5/6的結構,減少了對內(nèi)存和數(shù)據(jù)總線的訪問次數(shù),可以提高存儲系統(tǒng)的整體性能。
圖I,現(xiàn)有的典型的硬件RAID5/6架構;
圖2,基于現(xiàn)有典型硬件RAID5/6架構的數(shù)據(jù)處理流程;
圖3,基于現(xiàn)有典型硬件RAID5/6架構的優(yōu)化的數(shù)據(jù)處理流程;
圖4,本發(fā)明的硬件架構;
圖5,本發(fā)明的數(shù)據(jù)處理流程;
圖6,主機控制器的內(nèi)部結構;
圖7,硬件RAID5/6加速運算核的內(nèi)部結構;
圖8, RAID計算單元內(nèi)部結構;
圖9,磁盤控制器內(nèi)部結構。
具體實施例方式如圖4,整個系統(tǒng)架構主要包括主機控制器、硬件RAID5/6加速運算核、磁盤控制器、內(nèi)部數(shù)據(jù)總線、處理器單元、內(nèi)存DDR以及其它部件組成。其中本發(fā)明主要涉及的部分為主機控制器、硬件RAID5/6加速運算核和磁盤控制器。硬件RAID5/6加速運算核沒有掛載到內(nèi)部數(shù)據(jù)總線上,而是放置在主機控制器和磁盤控制器之間。本發(fā)明內(nèi)的主機控制器主要負責和主機或交換機通信和數(shù)據(jù)交互,這里使用的 Fibre Channel協(xié)議,但是也可以替換成其它的接口協(xié)議(如TCP/IP、FCOE, Ethernet、 Infiniband等)。本發(fā)明內(nèi)的磁盤控制器主要負責對多個磁盤的讀寫控制,這里使用傳輸協(xié)議為SATA協(xié)議,但是也可以替換為其它協(xié)議(如SAS、Fibre Channel等)。硬件RAID5/6 加速運算核主要負責RAID5中的XOR (異或)運算以及RAID6中的XOR(異或)運算和GF (伽羅華域)乘法運算,對于數(shù)據(jù)的校驗值計算或數(shù)據(jù)恢復,只要配置相應的寄存器,不需要 CPU進行參與,就可以快速計算出需要的數(shù)據(jù)。硬件RAID5/6加速運算核包括兩個RAID5/6 計算單元,而且兩個計算單元之間是相互獨立的,這樣可以保證主機控制器和磁盤控制器可以同時工作。主機控制器和硬件RAID5/6加速運算核之間以及磁盤控制器和硬件RAID5/6加速運算核之間通過并行內(nèi)部總線進行通信。硬件RAID5/6加速運算核計算完成之后,可通過中斷信息通知處理器單元。處理器單元負責通知主機控制器或磁盤控制器從硬件RAID5/6 加速運算核內(nèi)的緩存器中取數(shù)據(jù)。以FPGA芯片內(nèi)的實現(xiàn)方式為例,以下是本發(fā)明的具體硬件結構。圖6為主機控制器的內(nèi)部結構圖。物理接口連接主機和協(xié)議邏輯單元,協(xié)議邏輯單元通過系統(tǒng)總線接口連接內(nèi)存DDR,還通過輔助傳輸接口連接硬件RAID5/6加速運算核。物理接口單元負責維護和遠端主機的連接功能。協(xié)議邏輯單元主要完成特殊協(xié)議的解析、數(shù)據(jù)包的拆分和組裝、以DMA方式將數(shù)據(jù)傳輸?shù)絻?nèi)存DDR、傳輸有效的數(shù)據(jù)到硬件 RAID5/6加速運算核等功能。系統(tǒng)總線接口單元負責處理協(xié)議邏輯單元通過內(nèi)部總線對內(nèi)存DDR的讀寫操作。輔助傳輸接口單元與硬件RAID5/6加速運算核連接通信,它一方面負責將協(xié)議邏輯單元解析數(shù)據(jù)和參數(shù)傳遞給硬件RAID5/6加速運算核,另一方面負責接收硬件RAID5/6加速運算核計算恢復出的數(shù)據(jù);輔助傳輸接口單元可使用并行傳輸總線,因此它可以快速的完成對數(shù)據(jù)的傳輸和接收處理。當遠端主機需要寫數(shù)據(jù)到磁盤內(nèi)時,主機控制器的協(xié)議邏輯單元從物理接口單元接收穩(wěn)定的并行數(shù)據(jù)包,之后根據(jù)相應的協(xié)議規(guī)則,對數(shù)據(jù)包進行拆分和解析,對于非數(shù)據(jù)的命令包,協(xié)議邏輯單元只將其通過系統(tǒng)總線接口單元將其寫入內(nèi)存DDR的相應位置;對于包含數(shù)據(jù)的命令包,協(xié)議邏輯單元將數(shù)據(jù)傳輸?shù)絻?nèi)存DDR之外,同時將其有效數(shù)據(jù)凈荷和相應的處理參數(shù)通過輔助傳輸接口單元實時傳遞給硬件RAID5/6加速運算核。當遠端主機需要從磁盤內(nèi)讀數(shù)據(jù)時,主機控制器的協(xié)議邏輯單元根據(jù)處理器單元的通知參數(shù),分別從內(nèi)存DDR和硬件RAID5/6加速運算核讀取相應的數(shù)據(jù),并進行封裝組包,之后交由物理接口單元傳送出去。圖7為硬件RAID5/6加速運算核的結構圖,硬件RAID5/6加速運算核通過數(shù)據(jù)接口連接主機控制器和磁盤控制器,具有兩個RAID計算單元、兩組接收、發(fā)送接口。兩組數(shù)據(jù)接收接口單元分別負責接收主機控制器或磁盤控制器傳輸?shù)臄?shù)據(jù)和參數(shù);兩組數(shù)據(jù)發(fā)送接口單元則負責將硬件RAID5/6加速運算核計算的數(shù)據(jù)結果傳送給主機控制器或磁盤控制器。RAID計算單元主要完成RAID5中的XOR(異或)運算以及RAID6中的XOR(異或)運算和GF(伽羅華域)乘法運算,并產(chǎn)生相應數(shù)據(jù)塊的校驗值或者產(chǎn)生需要恢復的數(shù)據(jù)塊。兩個RAID計算單元的功能是完成相同的,這里使用兩個RAID計算單元是為了保證同時可以處理來主機控制器和磁盤控制器的輸入數(shù)據(jù)。圖8進一步描述了 RAID計算單元的內(nèi)部結構,狀態(tài)機控制單元主要負責控制整個校驗運算單元的工作和運算處理,它接收來自數(shù)據(jù)接收接口單元的數(shù)據(jù)和參數(shù),根據(jù)要求計算校驗數(shù)據(jù)P和Q、以及需要恢復的數(shù)據(jù)塊。校驗運算單元負責根據(jù)狀態(tài)機控制單元的指示,對輸入數(shù)據(jù)進行XOR運算和GF運算,以產(chǎn)生RAID5校驗值、RAID6校驗值(P+Q)以及丟失的數(shù)據(jù)。校驗運算單元內(nèi)的異或單元負責完成對輸入數(shù)據(jù)塊異或運算,GF運算單元負責完成對輸入數(shù)據(jù)塊的伽羅華域乘法或除法運算,而其中的緩存器Bufferl、Buffer2和 Buffer3使用FPGA內(nèi)的雙端口 RAM實現(xiàn),它負責暫存計算的中間值、校驗數(shù)據(jù)P和Q以及需要恢復的各個丟失盤數(shù)據(jù)塊。圖9中描述了磁盤控制器內(nèi)部結構。磁盤控制器內(nèi)系統(tǒng)總線接口單元和輔助傳輸接口單元和主機控制器的單元的功能和實現(xiàn)基本相同。而這里的協(xié)議處理單元主要用來處理多個存儲設備接口的傳輸協(xié)議的解析、以及數(shù)據(jù)包的分發(fā)和選擇的作用;這里有多個存儲設備接口單元,每一個存儲設備接口單元控連接一個磁盤,負責對磁盤的讀寫操作。
以上的硬件可以在FPGA芯片內(nèi)實現(xiàn),但是不限于FPGA平臺實現(xiàn)。結合圖5的流程圖和圖6、的結構圖,基于本發(fā)明所述的硬件架構的RAID5/6的數(shù)據(jù)處理方法,有主機的寫數(shù)據(jù)和讀數(shù)據(jù)操作兩部分。對于主機的寫操作,主機控制器首先對接收的數(shù)據(jù)進行區(qū)分數(shù)據(jù)命令包和非數(shù)據(jù)命令包;對于數(shù)據(jù)命令包,主機控制器將其數(shù)據(jù)通過數(shù)據(jù)傳輸接口傳遞給硬件RAID5/6加速運算核,具體是由硬件RAID5/6加速運算核的一個RAID計算單元(校驗單元)進行處理,同時主控制器將數(shù)據(jù)傳輸給內(nèi)存DDR,硬件 RAID5/6加速運算核的校驗單元對數(shù)據(jù)進行XOR運算或者GF運算,產(chǎn)生相應的RAID5或 RAID6校驗值,并暫時存放在其內(nèi)部的緩存器RAM——BufferU Buffer2和Buffer3內(nèi); 當512Byte的數(shù)據(jù)校驗計算完成之后,處理器單元通知磁盤處理器的協(xié)議處理單元從內(nèi)存 DDR或硬件RAID5/6加速運算核內(nèi)的緩存器內(nèi)讀取相應的數(shù)據(jù),并進行組包分發(fā),由各個存儲設備接口寫到磁盤內(nèi)的相應位置。非數(shù)據(jù)命令包則直接寫入內(nèi)存。對于主機的讀操作,磁盤控制器的協(xié)議處理單元將從存儲設備接口單元讀取各個磁盤內(nèi)的數(shù)據(jù)塊,將之傳遞到內(nèi)存DDR內(nèi)的相應位置,同時也將這些數(shù)據(jù)和需要恢復數(shù)據(jù)的參數(shù)通過輔助傳輸接口單元傳輸?shù)接布AID5/6加速運算核。硬件RAID5/6加速運算核檢查是否有數(shù)據(jù)損壞,并恢復丟失的數(shù)據(jù),存放在相應的緩存器RAM內(nèi);主機控制器負責從內(nèi)存DDR和硬件RAID5/6加速運算核的緩存器內(nèi)讀出相應的數(shù)據(jù),并傳輸給主機。本發(fā)明通過優(yōu)化硬件RAID5/6加速運算核,使用內(nèi)部RAM暫存校驗數(shù)據(jù),并修改其放置的位置,減少了校驗數(shù)據(jù)塊在主機控制器和磁盤控制器之間的傳輸,提高了系統(tǒng)的整體性能。
權利要求
1.一種硬件RAID5/6存儲系統(tǒng)架構,多個磁盤被磁盤控制器控制,主機控制主機控制器掛載內(nèi)部數(shù)據(jù)總線,內(nèi)存、處理器模塊、磁盤控制器也都掛載至內(nèi)部數(shù)據(jù)總線,其特征是: 在主機控制器和磁盤控制器之間放置硬件RAID5/6加速運算核。
2.根據(jù)權利要求I所述的硬件RAID5/6存儲系統(tǒng)架構,其特征是所述的硬件RAID5/6 加速運算核內(nèi)部具有雙端口緩存器(RAM),校驗數(shù)值以及需要恢復的數(shù)據(jù)存放在所述的雙端口緩存器RAM內(nèi)。
3.根據(jù)權利要求I或2所述的硬件RAID5/6存儲系統(tǒng)架構,其特征是所述的硬件 RAID5/6加速運算核內(nèi)有兩個RAID5/6計算單元。
4.根據(jù)權利要求I所述的硬件RAID5/6存儲系統(tǒng)架構,其特征是所述主機控制器和硬件RAID5/6加速運算核之間以及磁盤控制器和硬件RAID5/6加速運算核之間通過并行內(nèi)部總線進行通信連接。
5.根據(jù)權利要求I所述的硬件RAID5/6存儲系統(tǒng)架構,其特征是所述主機控制器和硬件RAID5/6加速運算核之間以及磁盤控制器和硬件RAID5/6加速運算核之間通過高速串行協(xié)議總線進行通信連接。
6.根據(jù)權利要求I所述的硬件RAID5/6存儲系統(tǒng)架構,其特征是主機控制器內(nèi)部設有物理接口連接主機和協(xié)議邏輯單元,協(xié)議邏輯單元通過系統(tǒng)總線接口連接內(nèi)存DDR,還通過輔助傳輸接口連接硬件RAID5/6加速運算核。
7.—種硬件RAID5/6存儲系統(tǒng)架構的數(shù)據(jù)處理方法,包括主機的寫數(shù)據(jù)和讀數(shù)據(jù)操作,其特征是對于主機的寫操作,主機控制器首先對接收的數(shù)據(jù)進行區(qū)分數(shù)據(jù)命令包和非數(shù)據(jù)命令包;對于數(shù)據(jù)命令包,主機控制器將其數(shù)據(jù)同時傳遞給硬件RAID5/6加速運算核和內(nèi)存的DDR,硬件RAID5/6加速運算核對數(shù)據(jù)進行XOR運算或者GF運算,產(chǎn)生相應的 RAID5或RAID6校驗值,并暫時存放在其內(nèi)部的緩存器RAM內(nèi);當數(shù)據(jù)塊計算完成之后,由處理器單元通知磁盤控制器從內(nèi)存DDR和硬件RAID5/6加速運算核的緩存器RAM內(nèi)分別讀取數(shù)據(jù)和校驗值;之后磁盤控制器將獲取到的數(shù)據(jù)寫入相應的磁盤中;非數(shù)據(jù)命令包則直接寫入內(nèi)存;對于主機的讀操作,磁盤控制器將各個磁盤內(nèi)的數(shù)據(jù)和校驗值讀取出來,同時寫入內(nèi)存DDR和硬件RAID5/6加速運算核,硬件RAID5/6加速運算核檢查是否有數(shù)據(jù)損壞, 并恢復丟失的數(shù)據(jù),存放在相應的緩存器RAM內(nèi);主機控制器從內(nèi)存DDR和硬件RAID5/6加速運算核的緩存器內(nèi)讀出相應的數(shù)據(jù),并傳輸給主機。
全文摘要
一種硬件RAID5/6存儲系統(tǒng)的架構及數(shù)據(jù)處理方法,涉及磁盤存儲技術,多個磁盤被磁盤控制器控制,主機控制主機控制器掛載內(nèi)部數(shù)據(jù)總線,內(nèi)存、處理器模塊、磁盤控制器也都掛載至內(nèi)部數(shù)據(jù)總線,其特征是在主機控制器和磁盤控制器之間放置硬件RAID5/6加速運算核。校驗數(shù)值以及需要恢復的數(shù)據(jù)存放在硬件RAID5/6加速運算核內(nèi)部的雙端口緩存器RAM內(nèi)。數(shù)據(jù)處理的寫和讀操作中,校驗值在緩存器RAM中,可以直接被主機控制器和磁盤控制器訪問獲取,優(yōu)化了數(shù)據(jù)的傳輸路徑,從而極大的提高了系統(tǒng)的整體性能。
文檔編號G06F3/06GK102609221SQ20121002576
公開日2012年7月25日 申請日期2012年2月7日 優(yōu)先權日2012年2月7日
發(fā)明者張慶敏, 張衡, 李天仁, 胡剛 申請人:無錫眾志和達存儲技術有限公司