專利名稱:用于獨立磁盤冗余陣列(raid)系統(tǒng)的文件服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及獨立磁盤冗余陣列(RAID)系統(tǒng)。
背景技術(shù):
在此提供的背景技術(shù)描述是為了一般地呈現(xiàn)本發(fā)明的背景。到本背景技術(shù)部分所描述的程度的、目前所提名的發(fā)明人的工作,以及另一方面在遞交時不能作為現(xiàn)有技術(shù)的該描述的多個方面,既沒有明確地也沒有隱含地被承認是與本發(fā)明相對的現(xiàn)有技術(shù)。獨立磁盤冗余陣列(RAID)系統(tǒng)將數(shù)據(jù)冗余地存儲在多個硬盤上。在某些RAID級別中,數(shù)據(jù)塊被分割并被存儲在不同的磁盤上,這縮短了數(shù)據(jù)存儲和取回的等待時間。多個磁盤還趨向于增大平均無故障時間(MTBF)并且增強容錯性。RAID系統(tǒng)類似于如單個邏輯硬盤驅(qū)動器那樣的訪問或主機設(shè)備。RAID系統(tǒng)可以采用硬盤分條(striping),這涉及將每個驅(qū)動器的存儲空間分割為單元。單元的大小將根據(jù)應(yīng)用在從扇區(qū)(512字節(jié))到至多若干兆字節(jié)的范圍內(nèi)變化。所有磁盤的分條通常是交錯的并且是順序編址的。除了非冗余陣列(RAID-O)夕卜,還有多種類型的RAID系統(tǒng)。在RAID-O中,采用分條然而沒有數(shù)據(jù)冗余。其提供最佳的性能然而沒有容錯性。在RAID-I中,使用磁盤鏡像而非分條并且至少需要兩個驅(qū)動器來在存儲數(shù)據(jù)期間實現(xiàn)復(fù)制。因為可以同時讀取任一個磁盤,所以讀性能得到改善。寫性能與單個磁盤存儲相同。RAID-I在多用戶系統(tǒng)中提供最佳的性能以及最佳的容錯性。在RAID-2中,使用跨磁盤的分條。某些磁盤存儲錯誤檢查和糾正(ECC)信息。在RAID-3中,使用分條并且一個驅(qū)動器專用于存儲奇偶校驗信息。嵌入的錯誤檢查(ECC)信息用于檢查錯誤。通過計算記錄在其他驅(qū)動器上的信息的異或(XOR)來完成數(shù)據(jù)恢復(fù)。因為I/O操作同時尋址所有的驅(qū)動器,所以RAID-3不能夠使I/O交疊(overlap)。因此,RAID-3最適用于具有長記錄應(yīng)用的單用戶系統(tǒng)。在RAID-4中,使用大分條??梢詮娜我粏蝹€驅(qū)動器中讀取記錄。這允許針對讀操作使I/o交疊。因為寫操作更新奇偶校驗驅(qū)動器,所以不能夠使I/O交疊。在RAID-5中,使用旋轉(zhuǎn)奇偶陣列(rotating parity array),這解決了 RAID-4的寫限制。因此,讀和寫操作可以是交疊的。RAID-5存儲奇偶校驗信息然而并不使用冗余數(shù)據(jù)。然而,奇偶校驗信息可以用于重構(gòu)數(shù)據(jù)。RAID-5至少需要三個并且一般是五個用于該陣列的磁盤。RAID-5最適用于性能不是很關(guān)鍵的或者執(zhí)行較少寫操作的多用戶系統(tǒng)。除了使用在不同驅(qū)動器上分布的第二奇偶校驗方案外,RAID-6與RAID-5類似。RAID-6提供高容錯性以及高驅(qū)動故障耐受性。在RAID-7中,使用實時的嵌入式操作系統(tǒng)和控制器。RAID-7使用經(jīng)由高速總線的高速緩存以及獨立計算機的其他特性。RAID-10組合RAID-O和RAID-I。存在兩種子類型在RAID-0+1中,數(shù)據(jù)被組織為多個磁盤上的分條,然后產(chǎn)生分條化的磁盤組的鏡像;而在RAID-1+0中,產(chǎn)生數(shù)據(jù)的鏡像然后鏡像被分條化。在RAID-50(或RAID-5+0)中,使用一系列RAID-5的組。這些組被以RAID-O的方式分條化從而改善RAID-5的性能而不減弱數(shù)據(jù)保護。在RAID-53 (或RAID-5+3)中,(RAID-0類型中的)分條被用于RAID-3的虛擬磁盤塊。這提供了比RAID-3更高的性能然而花費了更高成本。當主機設(shè)備發(fā)送要存儲的數(shù)據(jù)塊時,針對所選RAID方法來執(zhí)行RAID處理。RAID處理可以包括所選RAID級別的冗余和恢復(fù)處理(例如錯誤檢查和糾正(ECC))和/或其他處理。在一種方法中,單個中央處理單元(CPU)從另一設(shè)備接收數(shù)據(jù)塊。CPU負責包括ECC的所有RAID處理。就這種方法而言,因為與ECC有關(guān)的處理可能是變化的并且耗時的,所以CPU可能通常在速率上限制了數(shù)據(jù)存儲。換言之,CPU中的處理可能引發(fā)瓶頸并且增大等待時間。由于使用單個CPU,所以需要在完成了針對一個數(shù)據(jù)塊的RAID構(gòu)造之后,才能對后一數(shù)據(jù)塊進行處理。
發(fā)明內(nèi)容
一種獨立磁盤冗余陣列(RAID)系統(tǒng)包括N個存儲陣列,其中N個存儲陣列每個包括目標處理模塊和I到M個硬盤驅(qū)動器,其中M和N是大于I的整數(shù)。數(shù)據(jù)處理模塊將針對第一數(shù)據(jù)塊的第一數(shù)據(jù)存儲請求指定給多個目標處理模塊中的第一目標處理模塊,以處理第一數(shù)據(jù)塊的錯誤檢查和糾正(ECC)數(shù)據(jù)。多個目標處理模塊中的這一個目標處理模塊將第一數(shù)據(jù)塊的第一部分和與第一數(shù)據(jù)塊相關(guān)聯(lián)的ECC數(shù)據(jù)發(fā)送到多個目標處理模塊中的另一目標處理模塊。在其他特征中,由多個目標處理模塊中的另一目標處理模塊接收到的ECC數(shù)據(jù)與該第一部分相對應(yīng)。接口接收第一數(shù)據(jù)塊并且將第一數(shù)據(jù)塊轉(zhuǎn)發(fā)到數(shù)據(jù)處理模塊。該接口包括網(wǎng)絡(luò)接口、千兆比特以太網(wǎng)網(wǎng)絡(luò)接口和數(shù)據(jù)總線中的至少一個。交換模塊在數(shù)據(jù)處理模塊和N個存儲陣列之間并且在N個存儲陣列之間交換數(shù)據(jù)。該交換模塊包括多端口高速交換機。數(shù)據(jù)處理模塊將針對第二數(shù)據(jù)塊的第二數(shù)據(jù)存儲請求指定給用于處理第二數(shù)據(jù)塊的ECC數(shù)據(jù)的第二目標處理模塊,其中,第二目標處理模塊將第二數(shù)據(jù)塊的第一部分和與第二數(shù)據(jù)塊相關(guān)聯(lián)的ECC數(shù)據(jù)發(fā)送到多個目標處理模塊中的第三目標處理模塊。在多個目標處理模塊中的這一個目標處理模塊和第二目標處理模塊中,以交疊的方式分別對第一數(shù)據(jù)塊和第二數(shù)據(jù)塊進行處理。在其他特征中,數(shù)據(jù)處理模塊包括接口、存儲器和至少一個處理器。數(shù)據(jù)處理模塊對第一數(shù)據(jù)塊執(zhí)行文件系統(tǒng)(FS)協(xié)議功能。FS協(xié)議包括網(wǎng)絡(luò)文件服務(wù)器(NFS)和通用因特網(wǎng)文件服務(wù)器(CIFS)中的至少一個。數(shù)據(jù)處理模塊確定要應(yīng)用于第一數(shù)據(jù)塊的RAID存儲級別。數(shù)據(jù)處理模塊將第一數(shù)據(jù)塊映射到N個存儲陣列中的所選一個存儲陣列,并且更新用于N個存儲陣列的存儲映射。在其他特征中,當數(shù)據(jù)處理模塊接收到數(shù)據(jù)取回請求時,數(shù)據(jù)處理模塊將數(shù)據(jù)取回請求指定給多個目標處理模塊中的第一目標處理模塊。多個目標處理模塊中的第一目標處理模塊從多個目標處理模塊中的其他目標處理模塊取回與數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù),并且取回與數(shù)據(jù)中的有錯誤的部分相關(guān)的ECC數(shù)據(jù)。在其他特征中,多個目標處理模塊中的第一目標處理模塊通過使用ECC數(shù)據(jù)來對所述部分執(zhí)行數(shù)據(jù)恢復(fù)。當數(shù)據(jù)處理模塊接收到數(shù)據(jù)取回請求時,數(shù)據(jù)處理模塊將數(shù)據(jù)取回消息發(fā)送到具有與數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù)的目標處理模塊。這些目標處理模塊取回與數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù)和與數(shù)據(jù)中的有錯誤的部分相關(guān)的ECC數(shù)據(jù)。目標處理模塊將與數(shù)據(jù)取回請求相對應(yīng)的取回的數(shù)據(jù)和ECC數(shù)據(jù)發(fā)送到數(shù)據(jù)處理模塊,并且其中,數(shù)據(jù)處理模塊通過使用ECC數(shù)據(jù)來對所述部分執(zhí)行數(shù)據(jù)恢復(fù)。這些目標處理模塊通過使用ECC數(shù)據(jù)來對所述部分執(zhí)行數(shù)據(jù)恢復(fù)。
一種獨立磁盤冗余陣列(RAID)系統(tǒng)包括N個存儲陣列,其中N個存儲陣列每個包括目標處理模塊和I到M個硬盤驅(qū)動器,其中M和N是大于I的整數(shù)。數(shù)據(jù)處理模塊以非交疊(non-overlap)的方式將針對數(shù)據(jù)塊的錯誤檢查和糾正(ECC)處理選擇性地指定給多個目標處理模塊中的所選多個目標處理模塊。交換模塊提供數(shù)據(jù)處理模塊和N個存儲陣列之間的以及N個存儲陣列中的每個存儲陣列和N個存儲陣列中的其他存儲陣列之間的通信路徑。在其他特征中,數(shù)據(jù)處理模塊將針對第一數(shù)據(jù)塊的數(shù)據(jù)存儲請求指定給多個目標處理模塊中的用于處理第一數(shù)據(jù)塊的ECC數(shù)據(jù)的一個目標處理模塊,并且其中,多個目標處理模塊中的這一個目標處理模塊將第一數(shù)據(jù)塊的第一部分和與第一數(shù)據(jù)塊相關(guān)聯(lián)的ECC數(shù)據(jù)發(fā)送到多個目標處理模塊中的另一目標處理模塊。由多個目標處理模塊中的另一目標處理模塊接收到的ECC數(shù)據(jù)與該第一部分相對應(yīng)。接口接收數(shù)據(jù)塊并且將數(shù)據(jù)塊轉(zhuǎn)發(fā)到數(shù)據(jù)處理模塊。該接口包括網(wǎng)絡(luò)接口、千兆比特以太網(wǎng)網(wǎng)絡(luò)接口和數(shù)據(jù)總線中的至少一個。在其他特征中,交換模塊包括多端口高速交換機。交換模塊包括以大于或等于I千兆比特每秒的速度進行操作的多端口交換機。交換模塊包括多端口千兆比特以太網(wǎng)交換機。數(shù)據(jù)處理模塊將針對第二數(shù)據(jù)塊的第二數(shù)據(jù)存儲請求指定給用于處理第二數(shù)據(jù)塊的ECC數(shù)據(jù)的第二目標處理模塊,其中,第二目標處理模塊將第二數(shù)據(jù)塊的第一部分和與第二數(shù)據(jù)塊相關(guān)聯(lián)的ECC數(shù)據(jù)發(fā)送到多個目標處理模塊中的第三目標處理模塊。在其他特征中,在多個目標處理模塊中的這一個目標處理模塊和第二目標處理模塊中,以交疊的方式分別對第一數(shù)據(jù)塊和第二數(shù)據(jù)塊進行處理。數(shù)據(jù)處理模塊包括接口、存儲器和至少一個處理器,并且其中,數(shù)據(jù)處理模塊對第一數(shù)據(jù)塊執(zhí)行文件系統(tǒng)(FS)協(xié)議功能。FS協(xié)議包括網(wǎng)絡(luò)文件服務(wù)器(NFS)和通用因特網(wǎng)文件服務(wù)器(CIFS)中的至少一個。數(shù)據(jù)處理模塊確定要應(yīng)用于數(shù)據(jù)塊的RAID存儲級別。數(shù)據(jù)處理模塊將數(shù)據(jù)塊映射到N個存儲陣列中的所選多個存儲陣列,并且更新用于N個存儲陣列的存儲映射。在其他特征中,當數(shù)據(jù)處理模塊接收到數(shù)據(jù)取回請求時,數(shù)據(jù)處理模塊將數(shù)據(jù)取回請求指定給多個目標處理模塊中的第一目標處理模塊。多個目標處理模塊中的第一目標處理模塊從多個目標處理模塊中的其他目標處理模塊請求與數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù),并且請求與數(shù)據(jù)中的有錯誤的部分相關(guān)的ECC數(shù)據(jù)。多個目標處理模塊中的第一目標處理模塊通過使用ECC數(shù)據(jù)來對所述部分執(zhí)行數(shù)據(jù)恢復(fù)。在其他特征中,當數(shù)據(jù)處理模塊接收到數(shù)據(jù)取回請求時,數(shù)據(jù)處理模塊將數(shù)據(jù)取回消息發(fā)送到具有與數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù)的目標處理模塊。這些目標處理模塊取回與數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù)和與數(shù)據(jù)中的有錯誤的部分相關(guān)的ECC數(shù)據(jù)。這些目標處理模塊將與數(shù)據(jù)取回請求相對應(yīng)的取回的數(shù)據(jù)和ECC數(shù)據(jù)發(fā)送到數(shù)據(jù)處理模塊,并且其中,數(shù)據(jù)處理模塊通過使用ECC數(shù) 據(jù)來對所述部分執(zhí)行數(shù)據(jù)恢復(fù)。這些目標處理模塊通過使用ECC數(shù)據(jù)來對所述部分執(zhí)行數(shù)據(jù)恢復(fù)。根據(jù)下文中所提供的詳細描述,本發(fā)明的應(yīng)用的更多方面將變得清楚。應(yīng)理解,詳細描述和特定示例雖然指示了本發(fā)明的優(yōu)選實施例,但是僅意欲用于說明而非意欲限制本發(fā)明的范圍。
根據(jù)詳細描述和附圖,本發(fā)明將得到更充分的理解,其中圖I是根據(jù)本發(fā)明的RAID系統(tǒng)的原理框圖;圖2A是數(shù)據(jù)處理模塊的原理框圖; 圖2B是目標處理模塊的原理框圖;圖2C是示例性目標處理模塊的更詳細的原理框圖;圖3是示出對數(shù)據(jù)塊進行的處理的原理框圖;圖4是示出對數(shù)據(jù)塊進行的處理的原理框圖;圖5是示出對數(shù)據(jù)塊進行的處理的原理框圖;圖6示出對數(shù)據(jù)庫進行的處理的定時;圖7是示出用于處理要存儲的數(shù)據(jù)塊的方法的流程圖;圖8A和圖SB是示出通過由數(shù)據(jù)處理模塊所執(zhí)行的ECC處理來取回數(shù)據(jù)塊的示例性方法的流程圖;圖9A和圖9B是示出通過由多個目標處理模塊中的相應(yīng)目標處理模塊所執(zhí)行的ECC處理來取回數(shù)據(jù)塊的示例性方法的流程圖;以及圖10是示出通過由多個目標處理模塊中的所選一個目標處理模塊所執(zhí)行的ECC處理來取回數(shù)據(jù)塊的示例性方法的流程圖。
具體實施例方式以下描述本質(zhì)上僅是示例性的并且決非意欲限制本發(fā)明、其應(yīng)用或使用。為了清楚起見,在附圖中將使用相同標號來標識相同元件。在此使用的術(shù)語模塊、電路和/或設(shè)備指專用集成電路(ASIC)、電子電路、執(zhí)行一個或多個軟件和固件程序的處理器(共享、專用或組處理器)和存儲器、組合邏輯電路和/或提供所描述的功能的其他適當組件。在此使用的短語“A、B和C的至少一個”應(yīng)當被解釋為表示邏輯(A or B or C),該邏輯使用非排他性邏輯或。應(yīng)理解,可以以不同順序來執(zhí)行方法中的步驟而不會改變本發(fā)明的原理。現(xiàn)參考圖1,示出了獨立磁盤冗余陣列(RAID)系統(tǒng)100。接口 104接收要存儲在RAID系統(tǒng)100中的數(shù)據(jù)塊。例如,接口 104可以是諸如千兆比特以太網(wǎng)網(wǎng)絡(luò)接口、數(shù)據(jù)總線等之類的高速接口,然而其也可以是任何其他類型的接口。數(shù)據(jù)處理模塊108執(zhí)行部分的RAID處理。換言之,數(shù)據(jù)處理模塊108從接口 104接收數(shù)據(jù)塊并且對數(shù)據(jù)執(zhí)行操作系統(tǒng)
(OS)和文件系統(tǒng)(FS)協(xié)議功能。例如,F(xiàn)S協(xié)議可以包括網(wǎng)絡(luò)文件服務(wù)器(NFS)、通用因特網(wǎng)文件服務(wù)器(CIFS)和/或其他適當?shù)膮f(xié)議。數(shù)據(jù)處理模塊108將冗余和恢復(fù)處理(例如錯誤檢查和糾正(ECC))分發(fā)給其他的目標處理設(shè)備,這將在下文中進行描述。數(shù)據(jù)處理模塊108與交換模塊112進行通信。僅作為示例,交換模塊112可以是諸如縱橫制(crossbar)交換機、千兆比特交換機或千兆比特以太網(wǎng)交換機之類的多端口高速交換機。交換模塊112可以交換被組織為數(shù)據(jù)分組的數(shù)據(jù)。應(yīng)理解,交換模塊112與硬連線連接相比提供了可量測性和靈活性。交換模塊112又與兩個或多個存儲陣列120-1、120_2、...和120_X(總的稱作
存儲陣列120)進行通信,其中X是大于I的整數(shù)。每個存儲陣列120分別包括目標處理模塊122-1、122-2、...和122-X(總的稱作目標處理模塊122)和一個或多個硬盤驅(qū)動器(HDD) 124-11、124-12、. · ·和124-XY (總的稱作HDD124),其中Y是大于零的整數(shù)。應(yīng)理解,每個存儲陣列120中的存儲陣列120和HDD124的數(shù)目可以變化以允許調(diào)節(jié)規(guī)模?,F(xiàn)參考圖2A,更詳細地示出了示例性數(shù)據(jù)處理模塊108。數(shù)據(jù)處理模塊108經(jīng)由接104接收用于數(shù)據(jù)存儲的數(shù)據(jù)塊。數(shù)據(jù)處理模塊108可以包括接口 150、存儲器154和一個或多個處理器156。數(shù)據(jù)處理模塊108可以確定要應(yīng)用的RAID存儲級別,負責與FS相關(guān)的處理,可以將數(shù)據(jù)塊映射到存儲陣列,將RAID冗余和恢復(fù)處理(例如錯誤檢查和糾正(ECC))指定給所選目標處理模塊,并且可以更新存儲映射,等等。被指定執(zhí)行RAID冗余和恢復(fù)處理的目標處理模塊122從數(shù)據(jù)處理模塊108接收指令。所選目標處理模塊122針對所指定的數(shù)據(jù)塊生成錯誤檢查和糾(ECC)。一旦完成,目標處理模塊122就通過基于由數(shù)據(jù)處理模塊108所提供的RAID指令,將數(shù)據(jù)塊的多個部分和/或ECC數(shù)據(jù)選擇性地發(fā)送到其他陣列中用于存儲的其他目標處理模塊,來執(zhí)行數(shù)據(jù)分攤(data spreading)。某些數(shù)據(jù)和ECC數(shù)據(jù)也可以被本地存儲。同時,可以針對其他的數(shù)據(jù)塊將RAID冗余和恢復(fù)處理指定給其他的目標處理模塊122。其他的目標處理模塊122以交疊的方式處理其他數(shù)據(jù)塊的ECC。因為數(shù)據(jù)處理模塊108并不處理任何待存儲的數(shù)據(jù)塊的ECC,所以數(shù)據(jù)處理模塊108不再引發(fā)瓶頸。與數(shù)據(jù)處理模塊108相關(guān)聯(lián)的存儲器154可以存儲并更新存儲陣列120中數(shù)據(jù)的全局驅(qū)動映射158?,F(xiàn)參考圖2B,每個目標處理模塊122可以包括RAID構(gòu)造模塊168和RAID取回模塊170。RAID構(gòu)造模塊168處理ECC。RAID取回模塊170處理理RAID取回請求,這將在下文中進行描述。RAID構(gòu)造模塊170處理將被存儲在與所選目標處理模塊122相關(guān)聯(lián)的本地驅(qū)動器124上的數(shù)據(jù)塊的多個部分的ECC。此外,RAID構(gòu)造模塊170為與遠程存儲陣列120相關(guān)聯(lián)的遠程驅(qū)動器處理ECC。RAID指令模塊172生成用于其他目標處理的RAID指令,并且可以處理從其他的目標處理模塊122接收到的RAID指令。RAID指令模塊172可以與RAID構(gòu)造模塊170相結(jié)合。
與除所選目標處理模塊外的目標處理模塊相關(guān)聯(lián)的遠程存儲陣列120存儲從所選目標處理模塊接收到的數(shù)據(jù)和/或ECC數(shù)據(jù)。遠程存儲陣列120可以簡單地遵照由所選目標處理模塊122發(fā)出的RAID指令。應(yīng)理解,由遠程存儲陣列120所執(zhí)行的處理量明顯低于由目標處理模塊122所執(zhí)行的RAID構(gòu)造處理。這使得遠程存儲陣列120的目標處理模塊122能夠用于以交疊的方式針對其他數(shù)據(jù)塊來處理RAID構(gòu)造?,F(xiàn)參考圖2C,更詳細地示出了示例性目標處理模塊122。目標處理模塊122經(jīng)由交換模塊112接收來自數(shù)據(jù)處理模塊的執(zhí)行RAID構(gòu)造的請求和/或由遠程目標處理模塊所發(fā)送的RAID指令。目標處理模塊122包括接口 178、存儲器182和一個或多個處理器184?,F(xiàn)參考圖3,在使用中,在數(shù)據(jù)處理模塊108處經(jīng)由接口 104接收到了第一數(shù)據(jù)塊200-1。數(shù)據(jù)處理模塊108對該數(shù)據(jù)塊執(zhí)行OS和FS協(xié)議功能。數(shù)據(jù)處理模塊108將數(shù)據(jù)塊指定給與存儲陣列120之一相關(guān)聯(lián)的目標處理模塊122。此外,目標處理模塊122可以確定要應(yīng)用的RAID存儲級別,可以將數(shù)據(jù)塊映射到存儲陣列,可以更新存儲映射,等等。
例如,第一數(shù)據(jù)塊200-1可以被指定給第一存儲陣列120-1的目標處理模塊122-1。所選目標處理模塊122-1生成該數(shù)據(jù)的ECC。在存儲陣列120-1生成第一數(shù)據(jù)塊的ECC的同時,數(shù)據(jù)處理模塊108經(jīng)由接口 104接收第二數(shù)據(jù)塊200-2。數(shù)據(jù)處理模塊108將第二數(shù)據(jù)塊指定給與存儲陣列120-2相關(guān)聯(lián)的目標處理模塊122-2以生成ECC。交疊地處理針對數(shù)據(jù)塊的RAID構(gòu)造處理可以針對附加的數(shù)據(jù)塊200-P持續(xù),直到所有的目標處理模塊都在處理數(shù)據(jù)塊為止。因此,與其他方法相比,吞吐量可以得到顯著提聞?,F(xiàn)參考圖4和圖5,更詳細地示出了對數(shù)據(jù)塊200-1的處理。在進行了處理之后,數(shù)據(jù)處理模塊108將數(shù)據(jù)塊200-1發(fā)送到存儲陣列120-1的目標處理模塊122-1。數(shù)據(jù)處理模塊108還可以更新驅(qū)動映射。目標處理模塊122-1處理該數(shù)據(jù)塊的ECC。目標處理模塊122-1可以將與數(shù)據(jù)塊200-1相關(guān)聯(lián)的某些數(shù)據(jù)存儲在與存儲陣列120-1相關(guān)聯(lián)的本地驅(qū)動器124上。此外,目標處理模塊122-1可以將RAID指令、數(shù)據(jù)和/或ECC數(shù)據(jù)發(fā)送到與其他存儲陣列相關(guān)聯(lián)的目標處理模塊122-2、...以及122-X。遠程存儲陣列120-2、...以及120-X中的其他的目標處理模塊122-2、...以及122-X簡單地遵照RAID指令并且具有有限的處理負荷,這使得這些遠程存儲陣列120-2、...以及120-X的目標處理模塊122-2、...以及122-X能夠處理其他數(shù)據(jù)塊的ECC。在圖5中,在目標處理模塊122-1處理第一數(shù)據(jù)塊200_1的ECC的同時,數(shù)據(jù)處理模塊108接收第二數(shù)據(jù)塊200-2。數(shù)據(jù)處理模塊108將第二數(shù)據(jù)塊200-2指定給與存儲陣列120-2相關(guān)聯(lián)的目標處理模塊122-2。附加的數(shù)據(jù)塊200-P可以被指定給其他存儲陣列120的目標處理模塊122?,F(xiàn)參考圖6,在250處一般地示出數(shù)據(jù)塊的示例性RAID處理。這種類型的RAID處理可能遇到瓶頸,其減少了數(shù)據(jù)接入和取回的次數(shù)。在252處示出了根據(jù)本發(fā)明某些實現(xiàn)方式的數(shù)據(jù)處理。數(shù)據(jù)塊的RAID構(gòu)造可以花費可變的時間量。根據(jù)本發(fā)明的RAID系統(tǒng)即使在存儲請求之一花費了明顯更長的處理時間量時也可以連續(xù)處理數(shù)據(jù)塊?,F(xiàn)在參考圖7,示出了用于在數(shù)據(jù)存儲請求期間操作RAID系統(tǒng)的方法??刂圃诓襟E300處開始。在步驟302,控制判斷是否在數(shù)據(jù)處理模塊108處接收到了要存儲的數(shù)據(jù)塊。如果步驟302為真,那么在步驟304,數(shù)據(jù)處理模塊108將針對該數(shù)據(jù)塊的ECC處理指定給多個目標處理模塊122之一。數(shù)據(jù)處理模塊108還可以更新全局驅(qū)動映射并且可以執(zhí)行上述的其他功能。在步驟306,所選目標處理模塊處理該數(shù)據(jù)塊的ECC。所選目標處理模塊可以將RAID指令、數(shù)據(jù)和/或ECC數(shù)據(jù)發(fā)送到與遠程存儲陣列相關(guān)聯(lián)的遠程目標處理模塊??刂圃诓襟E310處結(jié)束。現(xiàn)參考圖8A到圖10,示出了各種用于數(shù)據(jù)取回的示例性方法。為了取回數(shù)據(jù),可以在取回過程中檢測到錯誤時執(zhí)行ECC處理。這些錯誤可以由存儲與錯誤相關(guān)聯(lián)的子塊的硬盤驅(qū)動器檢測出來。一旦檢測到,就可以由相同的目標處理模塊、所選一個目標處理模塊和/或數(shù)據(jù)處理模塊來本地地執(zhí)行ECC恢復(fù)。在圖8A和圖SB中,示出了對取回數(shù)據(jù)的示例性方法進行說明的流程圖。在這種實現(xiàn)方式中,由數(shù)據(jù)處理模塊來執(zhí)行針對具有ECC錯誤的數(shù)據(jù)的ECC處理。在圖8A中,控制在步驟320處開始并且前進到步驟322,在步驟322,數(shù)據(jù)處理模塊判斷其是否接收到了
數(shù)據(jù)取回請求。如果步驟322為真,那么在步驟324,數(shù)據(jù)處理模塊向所有具有與該數(shù)據(jù)取回請求相關(guān)聯(lián)的數(shù)據(jù)的目標處理模塊發(fā)送廣播消息??商娲兀瑪?shù)據(jù)處理模塊可以使用映射,并且將各條消息獨立地發(fā)送給每個目標處理模塊。在步驟326,數(shù)據(jù)處理模塊判斷其是否從目標處理模塊接收到了有錯誤的數(shù)據(jù)塊(以及有錯誤數(shù)據(jù)的相應(yīng)ECC數(shù)據(jù))。如果步驟326為真,那么數(shù)據(jù)處理模塊使用ECC數(shù)據(jù)來恢復(fù)該數(shù)據(jù)。在步驟326和步驟327之后進行步驟328,在步驟328,數(shù)據(jù)處理模塊將糾正后的數(shù)據(jù)發(fā)送給請求設(shè)備。如果錯誤不能夠被糾正,那么數(shù)據(jù)處理模塊可以發(fā)送錯誤消息和/或重試取回??刂圃诓襟E329處結(jié)束。在圖8B中,控制在步驟330處開始并且前進到步驟332。在步驟332,目標處理模塊判斷其是否從數(shù)據(jù)處理模塊接收到了數(shù)據(jù)取回請求。在步驟334,目標處理模塊將與該取回請求相關(guān)的數(shù)據(jù)取回并發(fā)送到數(shù)據(jù)處理模塊。在步驟336,目標處理模塊判斷是否在子塊中檢測出了錯誤。如果步驟336為真,那么目標處理模塊將與該子塊有關(guān)的ECC數(shù)據(jù)發(fā)送到數(shù)據(jù)處理模塊。在步驟336和步驟337之后進行步驟338,在步驟338,控制判斷是否發(fā)送了與該數(shù)據(jù)取回請求相關(guān)的所有數(shù)據(jù)。如果還沒有,那么控制返回到步驟334。如果步驟338為真,那么控制在步驟339處結(jié)束。在圖9A和圖9B中,示出了對取回數(shù)據(jù)塊的示例性方法進行說明的流程圖。在這種實現(xiàn)方式中,由多個目標處理模塊中存儲數(shù)據(jù)的相應(yīng)目標處理模塊來執(zhí)行ECC處理。在圖9A中,控制在步驟340處開始。在步驟342,數(shù)據(jù)處理模塊判斷其是否接收到了數(shù)據(jù)取回請求。如果步驟342為真,那么在步驟344,數(shù)據(jù)處理模塊向所有的目標處理模塊發(fā)送廣播消息??商娲?,數(shù)據(jù)處理模塊可以基于映射向目標處理模塊發(fā)送個體消息。在步驟348,數(shù)據(jù)處理模塊接收數(shù)據(jù)并將數(shù)據(jù)轉(zhuǎn)發(fā)給請求設(shè)備??刂圃诓襟E349處結(jié)束。在圖9B中,控制在步驟350處開始。在步驟352,目標處理模塊判斷其是否接收到了數(shù)據(jù)取回請求。如果步驟352為真,那么在步驟354,目標處理模塊將子塊中與該取回請求有關(guān)的數(shù)據(jù)發(fā)送給數(shù)據(jù)處理模塊。在步驟356,控制判斷是否在子塊中檢測到了錯誤。如果步驟356為真,那么控制繼續(xù)到步驟357并且處理ECC以恢復(fù)數(shù)據(jù)然后發(fā)送恢復(fù)后的數(shù)據(jù)。如果數(shù)據(jù)不能夠被恢復(fù),那么錯誤消息可以被發(fā)送和/或執(zhí)行重試。控制從步驟356和步驟357繼續(xù)到步驟358。在步驟358,控制判斷是否發(fā)送了所有與該數(shù)據(jù)取回請求相關(guān)聯(lián)的子塊。如果還沒有,那么控制返回到步驟354。否則控制在步驟359處結(jié)束。在圖10中,示出了對取回數(shù)據(jù)塊的示例性方法進行說明的流程圖。在這種實現(xiàn)方式中,可以由目標處理模塊中所選那個來執(zhí)行數(shù)據(jù)恢復(fù)??刂圃诓襟E360處開始并且前進到步驟361。在步驟361,數(shù)據(jù)處理模塊判斷其是否接收到了數(shù)據(jù)取回請求。如果步驟361為真,那么在步驟362,數(shù)據(jù)處理模塊將數(shù)據(jù)取回指定給目標處理模塊之一。所選目標處理模塊和/或數(shù)據(jù)處理模塊從遠程目標處理模塊請求數(shù)據(jù)。在步驟364,遠程目標處理模塊將與該取回請求相關(guān)的數(shù)據(jù)子塊發(fā)送給所選目標處理模塊。類似地,所選目標處理模塊從本地驅(qū)動器取回與該取回請求相關(guān)的數(shù)據(jù)??商娲?,遠程目標處理模塊在沒有錯誤的情況下可以直接將數(shù)據(jù)發(fā)送給數(shù)據(jù)處理模塊。如果有錯誤,那么遠程目標處理模塊可以將數(shù)據(jù)發(fā)送給所選目標處理模塊用于數(shù)據(jù)恢復(fù)。對于每個遠程目標處理模塊,在步驟366,遠程目標處理模塊判斷是否在數(shù)據(jù)子塊
之一中檢測到了錯誤。如果步驟366為真,那么遠程目標處理模塊將與該子塊相關(guān)聯(lián)的ECC數(shù)據(jù)發(fā)送給所選目標處理模塊。沒有錯誤的數(shù)據(jù)子塊可以被發(fā)送給目標處理模塊或數(shù)據(jù)處理模塊。控制從步驟366和步驟367繼續(xù)到步驟368。在步驟368,與遠程目標處理模塊相關(guān)聯(lián)的控制判斷是否發(fā)送了所有的數(shù)據(jù)子塊。在步驟370,所選目標處理模塊將ECC數(shù)據(jù)用于數(shù)據(jù)恢復(fù),換言之即用于糾正錯誤。所選目標處理模塊將數(shù)據(jù)轉(zhuǎn)發(fā)給數(shù)據(jù)處理模塊。在步驟372,數(shù)據(jù)處理模塊將恢復(fù)后的數(shù)據(jù)轉(zhuǎn)發(fā)給請求設(shè)備。本領(lǐng)域中的技術(shù)人員現(xiàn)在從前述描述中可以理解能夠以各種形式來實現(xiàn)本發(fā)明的廣義的教導(dǎo)。因此,雖然本發(fā)明包括具體的實施例,但是本發(fā)明的真實范圍不因因此受限,因為在研究了附圖、說明書和以下的權(quán)利要求后,其他的修改對于技術(shù)實踐者而言將是顯而易見的。
權(quán)利要求
1.一種系統(tǒng),包括 接口,配置來經(jīng)由網(wǎng)絡(luò)從主機接收數(shù)據(jù)塊; 多個存儲陣列,其中所述多個存儲陣列每個包括 多個目標處理模塊中的相應(yīng)一個;和 多個存儲設(shè)備,其中所述多個存儲設(shè)備中的每個配置來存儲所述數(shù)據(jù)塊中的一個數(shù)據(jù)塊的至少一部分; 數(shù)據(jù)處理模塊,連接在所述接口和所述多個存儲陣列之間,其中所述數(shù)據(jù)處理模塊配置來(i)確定所述數(shù)據(jù)塊中的、所述多個目標處理模塊中的每個要執(zhí)行錯誤檢查和糾正處理的那些數(shù)據(jù)塊,并且(ii)將所述數(shù)據(jù)塊中的每個數(shù)據(jù)塊從所述接口傳送到所述多個目標處理模塊中相應(yīng)指派的一個目標處理模塊;以及 交換模塊,配置來提供所述數(shù)據(jù)處理模塊和所述多個存儲陣列之間的通信路徑, 其中,所述數(shù)據(jù)處理模塊配置來經(jīng)由所述交換模塊將所述數(shù)據(jù)塊中的每個數(shù)據(jù)塊傳送給所述多個目標處理模塊中所述相應(yīng)指派的一個目標處理模塊。
2.根據(jù)權(quán)利要求I所述的系統(tǒng),其中,所述數(shù)據(jù)塊經(jīng)由所述數(shù)據(jù)處理模塊和所述交換模塊被從所述多個存儲陣列傳送到所述接口。
3.根據(jù)權(quán)利要求I所述的系統(tǒng),其中,所述交換模塊連接在所述數(shù)據(jù)處理模塊和所述多個存儲陣列之間。
4.根據(jù)權(quán)利要求I所述的系統(tǒng),其中 所述系統(tǒng)是獨立磁盤冗余陣列系統(tǒng);并且 所述多個存儲陣列中的每個存儲陣列中的所述多個存儲設(shè)備包括硬盤驅(qū)動器。
5.根據(jù)權(quán)利要求I所述的系統(tǒng),其中 所述數(shù)據(jù)處理模塊配置來將針對所述數(shù)據(jù)塊中的第一數(shù)據(jù)塊的第一數(shù)據(jù)存儲請求指派給所述多個目標處理模塊中的第一目標處理模塊以處理所述數(shù)據(jù)塊中的第一數(shù)據(jù)塊的錯誤檢查和糾正數(shù)據(jù);以及 所述多個目標處理模塊中的第一目標處理模塊配置來向所述多個目標處理模塊中除所述多個目標處理模塊中的第一目標處理模塊之外相應(yīng)指派的目標處理模塊發(fā)送(i)所述數(shù)據(jù)塊中的第一數(shù)據(jù)塊的多個部分,以及(ii)與所述數(shù)據(jù)塊中的第一數(shù)據(jù)塊相關(guān)聯(lián)的錯誤檢查和糾正數(shù)據(jù)的多個部分。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其中 所述數(shù)據(jù)處理模塊配置來將針對所述數(shù)據(jù)塊中的第二數(shù)據(jù)塊的第二數(shù)據(jù)存儲請求指派給所述多個目標處理模塊中的第二目標處理模塊以處理所述數(shù)據(jù)塊中的第二數(shù)據(jù)塊的錯誤檢查和糾正數(shù)據(jù);以及 所述多個目標處理模塊中的第二目標處理模塊配置來向所述多個目標處理模塊中除所述多個目標處理模塊中的第二目標處理模塊之外相應(yīng)指派的目標處理模塊發(fā)送(i)所述數(shù)據(jù)塊中的第二數(shù)據(jù)塊的多個部分,以及(ii)與所述數(shù)據(jù)塊中的第二數(shù)據(jù)塊相關(guān)聯(lián)的錯誤檢查和糾正數(shù)據(jù)的多個部分。
7.根據(jù)權(quán)利要求I所述的系統(tǒng),其中 所述數(shù)據(jù)處理模塊配置來對數(shù)據(jù)塊執(zhí)行文件系統(tǒng)協(xié)議功能;并且 所述文件系統(tǒng)協(xié)議包括網(wǎng)絡(luò)文件服務(wù)器協(xié)議或常用因特網(wǎng)文件服務(wù)器協(xié)議中的至少一種。
8.根據(jù)權(quán)利要求I所述的系統(tǒng),其中 數(shù)據(jù)處理模塊配置來確定要應(yīng)用到所述數(shù)據(jù)塊的獨立磁盤冗余陣列存儲級別; 所述獨立磁盤冗余陣列存儲級別標識系統(tǒng)是執(zhí)行分條、盤鏡像還是奇偶存儲;并且 所述多個存儲陣列基于所述獨立磁盤冗余陣列存儲級別存儲所述數(shù)據(jù)塊。
9.根據(jù)權(quán)利要求I所述的系統(tǒng),其中,所述數(shù)據(jù)處理模塊配置來 將所述數(shù)據(jù)塊映射到所述多個存儲陣列中所選擇的存儲陣列; 更新對所述多個存儲陣列的映射,該映射指示出(i)所述數(shù)據(jù)塊的多個部分和(ii)與所述數(shù)據(jù)塊相關(guān)聯(lián)的錯誤檢查和糾正數(shù)據(jù)的多個部分,的存儲位置;并且與所述多個目標處理模塊中的每個共享所述映射。
10.根據(jù)權(quán)利要求I所述的系統(tǒng),其中 當所述數(shù)據(jù)處理模塊接收到數(shù)據(jù)取回請求時,所述數(shù)據(jù)處理模塊將所述數(shù)據(jù)取回請求指派給所述多個目標處理模塊中的第一目標處理模塊, 所述多個目標處理模塊中的第一目標處理模塊配置來請求α)來自所述目標處理模塊中的其他目標處理模塊的與所述數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù),以及(ii)所述數(shù)據(jù)的錯誤檢查和糾正部分; 所述數(shù)據(jù)的多個部分包括數(shù)據(jù)錯誤;并且 所述多個目標處理模塊中的第一目標處理模塊配置來使用錯誤檢查和糾正數(shù)據(jù)對所述數(shù)據(jù)的多個部分執(zhí)行數(shù)據(jù)恢復(fù)。
11.根據(jù)權(quán)利要求I所述的系統(tǒng),其中 所述數(shù)據(jù)處理模塊配置來當所述數(shù)據(jù)處理模塊接收到數(shù)據(jù)取回請求時將數(shù)據(jù)取回消息發(fā)送到所述多個目標處理模塊,所述數(shù)據(jù)取回消息具有與數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù);并且 所述多個目標處理模塊配置來取回α)與所述數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù)和αυ與所述數(shù)據(jù)的具有錯誤的部分相關(guān)的錯誤檢查和糾正數(shù)據(jù)。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中 所述多個目標處理模塊配置來將所取回的與所述數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù)和所述錯誤檢查和糾正數(shù)據(jù)發(fā)送給所述數(shù)據(jù)處理模塊; 所述數(shù)據(jù)處理模塊配置來利用錯誤檢查和糾正數(shù)據(jù)對所述數(shù)據(jù)的具有錯誤的部分執(zhí)行數(shù)據(jù)恢復(fù)。
13.根據(jù)權(quán)利要求I所述的系統(tǒng),其中,所述多個目標處理模塊配置來利用所述錯誤檢查和糾正數(shù)據(jù)對所述數(shù)據(jù)的具有錯誤的部分執(zhí)行數(shù)據(jù)恢復(fù)。
14.根據(jù)權(quán)利要求I所述的系統(tǒng),其中 所述網(wǎng)絡(luò)包括因特網(wǎng);并且 所述接口連接在所述主機和所述數(shù)據(jù)處理模塊之間。
15.根據(jù)權(quán)利要求I所述的系統(tǒng),其中,所述數(shù)據(jù)處理模塊配置來(i)利用操作系統(tǒng)協(xié)議功能或文件系統(tǒng)協(xié)議功能中的至少一種處理所述數(shù)據(jù)塊中的至少一個數(shù)據(jù)塊,并且(ii)將用于所述數(shù)據(jù)塊中的所述一個數(shù)據(jù)塊的冗余和恢復(fù)處理指派給所述多個目標處理模塊中所選擇的一個。
16.根據(jù)權(quán)利要求I所述的系統(tǒng),其中所述數(shù)據(jù)處理模塊配置來 選擇所述多個目標處理模塊中的一個目標處理模塊;并且 將用于所述數(shù)據(jù)塊的冗余和恢復(fù)處理指派給所述目標處理模塊中所選擇的一個目標處理模塊。
17.根據(jù)權(quán)利要求I所述的系統(tǒng),其中所述數(shù)據(jù)處理模塊配置來 將針對所述數(shù)據(jù)塊中的一個數(shù)據(jù)塊的數(shù)據(jù)存儲請求指派給所述多個目標處理模塊中的一個目標處理模塊以處理所述數(shù)據(jù)塊中的一個數(shù)據(jù)塊的錯誤檢查和糾正數(shù)據(jù);并且 在存儲在所述多個存儲陣列中之后執(zhí)行糾錯碼處理來恢復(fù)所述數(shù)據(jù)塊中的所述一個數(shù)據(jù)塊。
18.根據(jù)權(quán)利要求I所述的系統(tǒng),其中 所述數(shù)據(jù)處理模塊配置來將用于所述數(shù)據(jù)塊的錯誤檢查和糾正處理指派給所述多個目標處理模塊中所選的目標處理模塊,同時將用于其它數(shù)據(jù)塊的冗余和恢復(fù)處理指派給所述多個目標處理模塊中除所述多個目標處理模塊中所選的目標處理模塊之外的目標處理模塊; 所述數(shù)據(jù)處理模塊不執(zhí)行錯誤檢查和糾正處理;并且 所述目標處理模塊中所選的目標處理模塊配置來生成錯誤檢查和糾正數(shù)據(jù)同時執(zhí)行用于所述數(shù)據(jù)塊的錯誤檢查和糾正處理。
19.根據(jù)權(quán)利要求I所述的系統(tǒng),其中 所述數(shù)據(jù)處理模塊配置來生成數(shù)據(jù)取回請求;并且 所述多個目標處理模塊中的一個目標處理模塊配置來(i)取回與所述數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù)并發(fā)送給所述數(shù)據(jù)處理模塊,( )確定與所述數(shù)據(jù)取回請求相對應(yīng)的數(shù)據(jù)的子塊是否有錯誤,以及(iii)當所述數(shù)據(jù)的子塊有錯誤時向所述數(shù)據(jù)處理模塊發(fā)送錯誤檢查和糾正數(shù)據(jù)。
20.根據(jù)權(quán)利要求I所述的系統(tǒng),其中,所述數(shù)據(jù)處理模塊配置來 (i)確定從所述多個目標處理模塊取回的數(shù)據(jù)是否有錯誤,并且(ii)當從所述多個目標處理模塊取回的數(shù)據(jù)有錯誤時基于來自所述多個目標處理模塊的錯誤檢查和糾正數(shù)據(jù)恢復(fù)數(shù)據(jù)。
全文摘要
本發(fā)明公開了用于獨立磁盤冗余陣列(RAID)系統(tǒng)的文件服務(wù)器。一種獨立磁盤冗余陣列(RAID)系統(tǒng)包括N個存儲陣列。N個存儲陣列每個都包括目標處理模塊和1到M個硬盤驅(qū)動器,其中M和N是大于1的整數(shù)。數(shù)據(jù)處理模塊將針對第一數(shù)據(jù)塊的第一數(shù)據(jù)存儲請求指定給多個目標處理模塊中的第一目標處理模塊,以處理第一數(shù)據(jù)塊的錯誤檢查和糾正(ECC)數(shù)據(jù)。多個目標處理模塊中的這一個目標處理模塊將第一數(shù)據(jù)塊的第一部分和與第一數(shù)據(jù)塊相關(guān)聯(lián)的ECC數(shù)據(jù)發(fā)送到多個目標處理模塊中的另一目標處理模塊。
文檔編號G06F11/10GK102880525SQ20121028445
公開日2013年1月16日 申請日期2007年7月17日 優(yōu)先權(quán)日2006年7月24日
發(fā)明者潘塔斯·蘇塔迪嘉 申請人:馬維爾國際貿(mào)易有限公司