專利名稱:并入實時異或的有限域乘法器的獨立磁盤冗余陣列環(huán)境的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于數(shù)據(jù)存儲的數(shù)據(jù)保護方法,尤其涉及實現(xiàn)RAID-6數(shù)據(jù)保護和恢復(fù)策略的系統(tǒng)。
背景技術(shù):
RAID代表獨立磁盤冗余陣列(Redundant Array of Independent Disks),是這樣一類冗余磁盤陣列存儲模式,其中冗余磁盤陣列存儲模式定義了眾多配置和使用多個計算機磁盤驅(qū)動器,以獲得各種級別的可用性、性能、容量和成本的方式,同時作為單個大容量驅(qū)動器呈現(xiàn)給軟件應(yīng)用程序。典型的RAID存儲子系統(tǒng)(subsystem)可以用硬件或者軟件來實現(xiàn)。在前者的情況下,RAID算法被封裝到耦接到計算機輸入/輸出(“I/O”)總線的單獨控制器硬件中,并且雖然增加很少或者沒有增加中央處理單元(“CPU”)開銷,但是所需的額外硬件仍然增加了整個系統(tǒng)的成本。另一方面,軟件實現(xiàn)將RAID算法并到與操作系統(tǒng)一起由主處理器執(zhí)行的系統(tǒng)軟件中,從而避免了單獨的硬件控制器的需要和成本,然而增加了CPU開銷。
從RAID-0到RAID-6已經(jīng)定義了各種RAID級別,每個都在前述因素中進行權(quán)衡。RAID-0只不過是常規(guī)的分帶(striping),其中將用戶數(shù)據(jù)分成塊(chunk),這些塊被存儲在帶區(qū)組上,該用戶數(shù)據(jù)散布在多個磁盤上而不存在數(shù)據(jù)冗余。RAID-1等價于常規(guī)的“影像(shadowing)”或“鏡像(mirror)”技術(shù),并且是最簡單的獲得數(shù)據(jù)冗余的辦法,其通過對于每個磁盤都具有容納相同數(shù)據(jù)的另一磁盤并且同時向兩個磁盤寫數(shù)據(jù)來獲得數(shù)據(jù)冗余。RAID-0和RAID-1的組合通常被稱作RAID-0+1,是通過分帶影像組實現(xiàn)的,從而得到該兩種RAID級別的相對的性能優(yōu)點。RAID-2采用了被寫在RAID組的成員上的漢明碼(Hamming Code),其現(xiàn)在被認為并不很重要。
在RAID-3中,數(shù)據(jù)被分帶在一組磁盤上,其中添加了用于保存奇偶校驗數(shù)據(jù)的單獨的專用盤。隨著將用戶數(shù)據(jù)寫到其它盤而動態(tài)地計算奇偶校驗數(shù)據(jù),以便如果盤失效允許重構(gòu)初始的用戶數(shù)據(jù)而無需一個比特一個比特地復(fù)制數(shù)據(jù)。錯誤檢驗和糾正碼(“ECC”)諸如異或(“XOR”)或者更復(fù)雜的里得-所羅門(Reed-Solomon)技術(shù)之類可以用來對二進制數(shù)據(jù)執(zhí)行必要的數(shù)學(xué)計算以得到RAID-3和更高級別實現(xiàn)中的奇偶校驗信息。雖然奇偶校驗在盤失效的情況下允許重構(gòu)用戶數(shù)據(jù),但是這種重構(gòu)的速度是系統(tǒng)負載和所使用的特定算法的函數(shù)。
與RAID-3類似,稱作RAID-4的RAID方案由N個數(shù)據(jù)盤和一個奇偶校驗盤組成,其中奇偶校驗盤扇區(qū)包含每個數(shù)據(jù)盤上相應(yīng)扇區(qū)的逐位XOR。這使得在任一個盤失效的情況下RAID組中的數(shù)據(jù)內(nèi)容可以保存。RAID-5是RAID-4的變型,其將奇偶校驗分帶在陣列中的所有磁盤上,以便使盤上的負載在統(tǒng)計上均衡。
RAID-6的名稱用來通俗地描述下述冗余和復(fù)雜的ECC技術(shù)的RAID方案,其通過使用兩個奇偶校驗驅(qū)動器(通常稱為“P”和“Q”驅(qū)動器)可以容忍兩個磁盤失效而不丟失數(shù)據(jù)。盡管術(shù)語“奇偶校驗”用于描述RAID-6技術(shù)中使用的碼,但是這些碼更恰當(dāng)?shù)卣f是一種ECC碼而不僅僅是奇偶校驗碼。數(shù)據(jù)和ECC信息被分帶在RAID組的所有成員上并且寫性能通常低于RAID-5,這是因為在寫操作期間三個單獨的驅(qū)動器必須每個都被訪問兩次。不過,取決于所使用的“奇偶校驗”驅(qū)動器的數(shù)目,RAID-6的原理可用于恢復(fù)多個驅(qū)動器失效。
某些RAID-6實現(xiàn)是基于里得-所羅門算法的,該算法依賴于伽羅華域(Galois Field)算術(shù)。對伽羅華域算術(shù)及RAID-6背后的數(shù)學(xué)的全面解釋可以在各種資源中找到,因而,下面僅提供簡單概述作為背景。RAID-6實現(xiàn)中所使用的伽羅華域算術(shù)發(fā)生在GF(2N)中。這是具有GF(2)中的系數(shù)的多項式對某N階生成多項式取模得到的域。該域中的所有多項式為N-1或者更小階,并且它們的系數(shù)都是0或者1,這意味著它們可以用全部在{0,1}中的N個系數(shù)的向量表示;即,這些多項式“看”起來就象N位的二進制數(shù)。該域中的多項式加法只是N比特XOR運算,其具有該域的每個元素是其自身的加性逆元(additive inverse)的屬性,所以加法和減法是相同的運算。但是,該域中的多項式乘法可以利用基于對數(shù)的查表技術(shù)或者利用簡單的組合邏輯來進行。
每個RAID-6校驗碼(即,P和Q)表示RAID-6陣列的數(shù)據(jù)盤上的數(shù)據(jù)與校驗盤之一或者兩者上的數(shù)據(jù)之間的不變關(guān)系或者方程式。如果存在C個校驗碼并且一組F盤失效,F(xiàn)≤C,則可以通過選擇這些方程式中的F個方程式并且在GF(2N)中同時對這些方程式求解F個丟失的變量而重構(gòu)失效磁盤。在目前所實現(xiàn)或者構(gòu)思的RAID-6系統(tǒng)中,僅有2個校驗盤,即校驗盤P和校驗盤Q。值得注意的是,校驗盤P和Q對于陣列上數(shù)據(jù)和奇偶校驗的每個帶區(qū)都發(fā)生變化,從而校驗數(shù)據(jù)并不寫入專用盤而是相反分帶在所有的盤上。
即使在不同系統(tǒng)中通過不同方式以不同成功程度地實現(xiàn)了RAID-6,仍然存在改進提供數(shù)據(jù)存儲的RAID-6保護的效率和成本的持續(xù)需求。實現(xiàn)RAID-6的數(shù)學(xué)涉及重復(fù)性的復(fù)雜計算。據(jù)此,在現(xiàn)今和未來,努力改進實現(xiàn)RAID-6所需的電路的簡易性、電路的成本、電路的效率仍是優(yōu)先考慮的問題。
現(xiàn)有RAID-6設(shè)計的一個限制涉及與執(zhí)行再同步(其中使數(shù)據(jù)帶區(qū)的奇偶校驗數(shù)據(jù)與當(dāng)前的數(shù)據(jù)再同步)、重建(其中,基于奇偶校驗數(shù)據(jù)重新產(chǎn)生失效盤的數(shù)據(jù))或者諸如暴露模式讀之類的其它暴露模式操作相關(guān)聯(lián)的性能開銷。對于其它RAID設(shè)計,例如,RAID-5設(shè)計,再同步奇偶校驗或重建數(shù)據(jù)僅需要將奇偶校驗帶區(qū)中的所有數(shù)據(jù)一起讀入并且進行XOR。假定XOR運算是符合結(jié)合性的(associative),并因而不依賴于次序,則一些常規(guī)的RAID-5設(shè)計已經(jīng)能夠并入“實時(on the fly)”XOR運算以提高性能以及減少所需的緩沖量。
具體地,并入“實時”XOR運算的RAID設(shè)計向RAID陣列中的相關(guān)驅(qū)動器發(fā)出讀請求,然后當(dāng)被請求的數(shù)據(jù)由每個驅(qū)動器返回時,將該數(shù)據(jù)直接讀入基于硬件的XOR引擎并且與工作緩沖器的內(nèi)容進行XOR運算。一旦所有驅(qū)動器都返回了所請求的數(shù)據(jù),則工作緩沖器就包含了XOR運算的結(jié)果。公知地,給定XOR運算的結(jié)合性,每個驅(qū)動器返回其數(shù)據(jù)的精確順序的事實是無關(guān)的。結(jié)果是,驅(qū)動器能夠并行處理該讀請求,并且對于該操作僅需要單個工作緩沖器。
與之形成對比,對于RAID-6設(shè)計,關(guān)于再同步和重建所使用的方程式(本文稱之為“奇偶校驗帶區(qū)方程式”)并不是簡單的XOR運算。相反,每個奇偶校驗帶區(qū)方程式通常包括多個對從每個驅(qū)動讀取的相應(yīng)數(shù)據(jù)進行縮放(scale)的比例系數(shù)(scaling coefficient),這要求在與來自其它驅(qū)動器的數(shù)據(jù)進行XOR運算成為乘法結(jié)果緩沖器的最終總和之前、將從RAID-6設(shè)計中的驅(qū)動器讀取的許多或者所有數(shù)據(jù)值以常數(shù)進行縮放或者相乘。
由于該縮放要求,通常只有對每個驅(qū)動器使用了單獨的緩沖器,才可以交迭(overlap)對多個驅(qū)動器的讀請求。或者,如果希望最小化所使用的緩沖器的數(shù)目,則必須串行化讀請求以便確保用適當(dāng)?shù)某?shù)對每個進入的數(shù)據(jù)值進行縮放。
結(jié)果是,依賴于利用比例系數(shù)的奇偶校驗帶區(qū)方程式的常規(guī)RAID-6設(shè)計以及其它磁盤陣列環(huán)境常常受到下述困擾,即,由于缺乏可用的緩沖器和/或減少的并行性(parallelism),因此與再同步、重建以及其它暴露模式的操作相關(guān)的性能降低。
發(fā)明內(nèi)容
本發(fā)明通過利用基于硬件的有限域乘法器對來自磁盤驅(qū)動的進入數(shù)據(jù)進行縮放以及將該經(jīng)縮放的數(shù)據(jù)與工作緩沖器的內(nèi)容進行XOR運算而解決了與現(xiàn)有技術(shù)相關(guān)聯(lián)的上述以及其它問題。結(jié)果是,依賴于并入一個或多個比例系數(shù)的奇偶校驗帶區(qū)方程式的RAID和其它磁盤陣列設(shè)計能夠交迭對多個驅(qū)動器的讀操作并且由此增加并行性、減少所需緩沖器的數(shù)目、提高性能。
本發(fā)明的一個方面涉及一種在包括多個磁盤驅(qū)動器型的磁盤陣列環(huán)境中用于執(zhí)行暴露模式操作的方法。該方法包括從磁盤驅(qū)動器的每個讀取來自奇偶校驗帶區(qū)的相應(yīng)數(shù)據(jù)值,其中來自奇偶校驗帶區(qū)的數(shù)據(jù)值根據(jù)奇偶校驗帶區(qū)方程式彼此相關(guān),在該奇偶校驗帶區(qū)方程式中,相應(yīng)數(shù)據(jù)值的至少一部分被按比例系數(shù)進行縮放。該方法還包括使用至少一個基于硬件的有限域乘法器對相應(yīng)數(shù)據(jù)值的至少一部分進行縮放以生成多個乘積,以及對該多個乘積執(zhí)行XOR運算。
本發(fā)明的另一方面涉及一種磁盤陣列控制器,該磁盤陣列控制器包括在磁盤控制器的XOR引擎與多個磁盤驅(qū)動器的每個之間的相應(yīng)數(shù)據(jù)路徑,以及與每個數(shù)據(jù)路徑通信的相應(yīng)有限域乘法器電路,其中每個有限域乘法器電路包括用于從相應(yīng)的數(shù)據(jù)路徑接收數(shù)據(jù)值的第一相應(yīng)輸入、用于接收相應(yīng)常數(shù)的第二相應(yīng)輸入、用于向XOR引擎?zhèn)魉拖鄳?yīng)數(shù)據(jù)值與相應(yīng)常數(shù)的乘積的相應(yīng)輸出。
本發(fā)明的另一方面涉及一種電路配置,該電路配置包括被配置成從多個磁盤驅(qū)動器接收數(shù)據(jù)值的多個數(shù)據(jù)路徑;多個基于硬件的有限域乘法器電路,其中每個有限域乘法器電路與該多個數(shù)據(jù)路徑之一通信,并被配置成在第一輸入從相應(yīng)的數(shù)據(jù)路徑接收數(shù)據(jù)值,以及在第二輸入接收相應(yīng)常數(shù),以及其中每個有限域乘法器電路被配置成輸出相應(yīng)數(shù)據(jù)值與相應(yīng)常數(shù)的乘積。該電路配置還包括XOR引擎,其耦接到每個數(shù)據(jù)路徑并且被配置成接收由每個有限域乘法器電路輸出的乘積。
本發(fā)明的另一方面涉及一種依賴于兩組有限域乘法器電路的磁盤陣列控制器和方法。第一組中的每個有限域乘法器電路連接到多個磁盤驅(qū)動器中的相應(yīng)一個并且被配置成從該相應(yīng)磁盤驅(qū)動器接收數(shù)據(jù)值、將該數(shù)據(jù)值乘以第一相應(yīng)常數(shù)、將第一相應(yīng)乘積提供給第一XOR引擎。第二組中的每個有限域乘法器電路同樣也連接到多個磁盤驅(qū)動器中的相應(yīng)一個并且被配置成從該相應(yīng)磁盤驅(qū)動器接收數(shù)據(jù)值、將該數(shù)據(jù)值乘以第二相應(yīng)常數(shù)、將第二相應(yīng)乘積提供給第二XOR引擎。
圖1是根據(jù)本發(fā)明的原理的可以實現(xiàn)RAID存儲控制器的示例性計算機系統(tǒng)的框圖。
圖2是圖示圖1的RAID控制器的主要組件的框圖。
圖3圖示了支持實時XOR運算的RAID-5奇偶校驗生成電路。
圖4圖示了包括多個用于每個數(shù)據(jù)磁盤驅(qū)動器的緩沖器的RAID-6奇偶校驗生成電路。
圖5圖示了根據(jù)本發(fā)明原理的示例性RAID-6奇偶校驗生成電路,其對于每個數(shù)據(jù)磁盤驅(qū)動器具有內(nèi)嵌(in-line)的相應(yīng)的硬件乘法器,從而可以實時執(zhí)行XOR運算。
圖6圖示了根據(jù)本發(fā)明原理的示例性RAID-6環(huán)境,其中對于數(shù)據(jù)磁盤驅(qū)動器內(nèi)嵌了單獨的乘法器,從而兩個奇偶校驗計算可以并發(fā)地發(fā)生。
圖7圖示了用在圖2的RAID-6控制器中的示例性的硬件實現(xiàn)的有限域乘法器。
具體實施例方式
下文中討論的實施例利用一個或多個基于硬件的有限域乘法器以對來自磁盤陣列的磁盤驅(qū)動器的進入數(shù)據(jù)進行縮放并且將經(jīng)縮放的數(shù)據(jù)與工作緩沖器的內(nèi)容進行XOR運算。下文中給出了與本發(fā)明一致的實現(xiàn)有限域乘法的磁盤陣列環(huán)境的多個實施例。但是,在討論這樣的實施例之前,首先提供RAID-6的背景簡述,隨后是對可以實現(xiàn)與本發(fā)明一致的有限域乘法的示例性硬件環(huán)境的描述。
一般RAID-6背景這里用來描述RAID-6存儲系統(tǒng)的專用術(shù)語符合本領(lǐng)域最易于接受的標準。特別地,存在N個驅(qū)動器,其中任何兩個將被認為是奇偶校驗驅(qū)動器,P和Q。利用伽羅華域算術(shù),可以寫出兩個獨立方程式α0d0+α0d1+α0d2+…+α0dN-1=0 (1)α0d0+α1d1+α2d2+…+αN-1dN-1=0 (2)其中,這里所采用的“+”運算符表示異或(Exclusive-OR,XOR)操作。
在這些方程式中,αX是有限域的元素,dX是來自第X個磁盤的數(shù)據(jù)。雖然P和Q盤對于數(shù)據(jù)的任意特定帶區(qū)可以是N個磁盤的任一個,但是它們通常用dP和dQ表示。當(dāng)更新磁盤之一的數(shù)據(jù)(即,dX)時,上面的兩個方程式分解為Δ=(舊dX)+(新dX) (3)(新dP)=(舊dP)+((αQ+αX)/(αP+αQ))Δ(4)(新dQ)=(舊dQ)+((αP+αX)/(αP+αQ))Δ(5)在最后兩個方程式的每個中,加號右邊的項是常數(shù)乘以數(shù)據(jù)中的變化(即,Δ)。方程式(4)和(5)的這些項通常分別表示為K1Δ和K2Δ。
在一個磁盤丟失或不可用的情況下,可以采用簡單的XOR運算來恢復(fù)該磁盤的數(shù)據(jù)。例如,如果d1失效則可如下恢復(fù)d1d1=d0+d1+d2+… (6)在兩個磁盤失效或者被“暴露”的情況下,上面的方程式可以用來恢復(fù)磁盤的數(shù)據(jù)。例如,給定磁盤0到X并且假設(shè)磁盤A和B失效了,則該兩個磁盤的任一磁盤的數(shù)據(jù)可以從剩余的磁盤中恢復(fù)。例如,如果要恢復(fù)磁盤A,則上面的方程式變?yōu)閐A=((αB+α0)/(αB+αA))d0+((αB+α1)/(αB+αA))d1+…+((αB+α0)/(αB+αA))dX(7)示例性硬件環(huán)境在腦海中有了RAID-6的一般背景知識之后,可以將注意力轉(zhuǎn)向附圖,其中在幾個附圖中相同的附圖標記表示系統(tǒng)的部件。圖1圖示了可以實現(xiàn)RAID-6或其它磁盤陣列的示例性計算機系統(tǒng)。為了本發(fā)明的目的,裝置10可以實際上代表任何類型的計算機、計算機系統(tǒng)或者其它可編程的電子設(shè)備,包括客戶端計算機、服務(wù)器計算機、便攜式計算機、手持式計算機、嵌入式控制器等。此外,裝置10可以采用例如集群式或分布式計算系統(tǒng)中的一個或多個聯(lián)網(wǎng)的計算機來實現(xiàn)。下文中將稱裝置10為“計算機”,不過應(yīng)該理解術(shù)語“裝置”也可以包括與本發(fā)明一致的其它適當(dāng)?shù)目删幊屉娮釉O(shè)備。
計算機10通常包括至少一個耦接到存儲器14的處理器12。處理器12可以表示一個或多個處理器(例如,微處理器),存儲器14可以表示隨機存取存儲器(RAM)設(shè)備,包括計算機10的主存以及任何輔助級別的存儲器,例如高速緩存存儲器、非易失或者備用存儲器(例如,可編程或者閃存存儲器)、只讀存儲器等。此外,存儲器14可以視為包括物理上位于計算機10中別處的存儲器存儲,例如,處理器12中的任何高速緩存存儲器以及用作虛擬存儲器的任何存儲容量,例如存儲在磁盤陣列34上或者經(jīng)由網(wǎng)絡(luò)18存儲在耦接到計算機10的另一臺計算機(例如,客戶端計算機20)上。
計算機10通常還接收多個輸入和輸出以與外部交換信息。對于與用戶或者操作員的接口,計算機10通常包括一個或多個用戶輸入設(shè)備22(例如,其中有鍵盤、鼠標、跟蹤球、操縱桿、觸摸板和/或麥克風(fēng))以及顯示器24(例如,其中有CRT顯示器、LCD顯示面板和/或揚聲器)。此外,用戶輸入可以經(jīng)由在網(wǎng)絡(luò)上與計算機10連接的另一臺計算機(例如,計算機20)或者經(jīng)由專用工作站接口等接收。
對于額外的存儲設(shè)備,計算機10還可以包括經(jīng)由存儲控制器或者適配器16存取的一個或多個大容量存儲設(shè)備,例如,其中有可移動磁盤驅(qū)動器、硬盤驅(qū)動器、直接存取存儲設(shè)備(DASD)、光盤驅(qū)動器(例如,CD驅(qū)動器,DVD驅(qū)動器,等等)和/或磁帶驅(qū)動器。此外,計算機10可以包括與一個或多個網(wǎng)絡(luò)18(例如,LAN、WAN、無線網(wǎng)和/或因特網(wǎng))的接口以允許與耦接到網(wǎng)絡(luò)的其它計算機交換信息。應(yīng)該理解,如本領(lǐng)域公知的,計算機10通常包括處理器12與組件14、16、18、22、24的每個之間的適當(dāng)?shù)哪M和/或數(shù)字接口。
根據(jù)本發(fā)明的原理,大容量存儲器控制器16有利于實現(xiàn)磁盤陣列34中的RAID-6存儲保護。
計算機10在操作系統(tǒng)30的控制下運行,并且執(zhí)行或者反之依賴于各種計算機軟件應(yīng)用程序、組件、程序、對象、模塊、數(shù)據(jù)結(jié)構(gòu)等等(例如,軟件應(yīng)用程序32)。此外,各種應(yīng)用程序、組件、程序、對象、模塊等等也可以在例如分布式或者客戶機/服務(wù)器計算環(huán)境下在經(jīng)由網(wǎng)絡(luò)18耦接到計算機10的另一臺計算機中的一個或多個處理器上執(zhí)行,由此為實現(xiàn)計算機程序的功能所需的處理可以被分配到網(wǎng)絡(luò)上的多臺計算機上。
通常,為實現(xiàn)本發(fā)明實施例所執(zhí)行的例程(不管被實現(xiàn)為操作系統(tǒng)的一部分或者特定應(yīng)用程序,組件,程序,對象,模塊或者指令序列,或者甚至為其子集)本文中都稱之為“計算機程序代碼”或者簡稱“程序代碼”。程序代碼通常包括一個或多個指令,其在各個時間駐留于計算機中的各種存儲器或者存儲設(shè)備中,并且當(dāng)被計算機中的一個或多個處理器讀取并執(zhí)行時使得該計算機執(zhí)行下述步驟,這些步驟是執(zhí)行具體化本發(fā)明各個方面的步驟或者元件所必需的。此外,雖然本發(fā)明是在并且將繼續(xù)在完全運行計算機和計算機系統(tǒng)功能的語境下描述的,但是本領(lǐng)域的技術(shù)人員將理解,本發(fā)明的各種實施例能夠作為各種形式的程序產(chǎn)品而分發(fā),并且不管用于實際攜帶該分發(fā)的計算機可讀信號承載介質(zhì)的具體類型如何本發(fā)明都同等適用。計算機可讀信號承載介質(zhì)的示例包括但不限于可記錄型介質(zhì)和諸如數(shù)字和模擬通信鏈路的傳輸型介質(zhì),可記錄型介質(zhì)例如其中有易失和非易失存儲設(shè)備、軟盤和其它可移動盤、硬盤驅(qū)動器、磁帶、光盤(例如,CD-ROM,DVD,等等)。
此外,下文中描述的各種程序代碼可以基于其中在本發(fā)明的特定實施例中實現(xiàn)的應(yīng)用程序來標識。但是,應(yīng)該理解,跟隨的任何特定程序?qū)S眯g(shù)語僅出于便利而使用,因而本發(fā)明不應(yīng)限于僅用于由這樣的專用術(shù)語標識和/或暗示的任何特定應(yīng)用程序中。此外,給定通常無數(shù)的藉之可以將計算機程序組織成例程、過程、方法、模塊、對象等等的方式,以及給定藉之將程序功能分配于駐留于特定計算機的各種軟件層(例如,操作系統(tǒng),庫,API,應(yīng)用程序,java應(yīng)用小程序(applet),等等)中的各種方式,應(yīng)該理解,本發(fā)明并不限于這里所描述的程序功能的特定組織和分配。
圖2圖示了磁盤陣列系統(tǒng)(例如RAID-6兼容系統(tǒng))的控制子系統(tǒng)的框圖。特別地,更詳細地示出了圖1的大容量存儲控制器16包括RAID控制器202,該RAID控制器202通過系統(tǒng)總線208與處理器12耦接并且通過存儲總線210耦接到各個磁盤驅(qū)動器212-218。如一名普通技術(shù)人員所熟知的,這些總線可以是本質(zhì)上專有的或者遵循諸如SCSI-1、SCSI-2等工業(yè)標準的。RAID控制器包括執(zhí)行下述程序代碼的微處理器204,該程序代碼實現(xiàn)用于數(shù)據(jù)保護的RAID-6算法并且通常駐留于位于RAID控制器的存儲器中。特別地,要存儲到磁盤212-218上的數(shù)據(jù)被用來產(chǎn)生奇偶校驗數(shù)據(jù),然后被拆開(break apart)并且分帶于磁盤212-218上。磁盤驅(qū)動器212-218可以是直接通過總線210耦接到控制器202的單獨磁盤驅(qū)動器或者可以包括其自身的磁盤驅(qū)動適配器,其允許一串單獨磁盤驅(qū)動器連接到存儲總線210。換言之,磁盤驅(qū)動器212可以在物理上實現(xiàn)為耦接到單個控制器的4或8個單獨磁盤驅(qū)動器,該單個控制器連接到總線210。當(dāng)數(shù)據(jù)在任一方向上在磁盤驅(qū)動器212-218和RAID控制器202之間交換時,提供緩沖器20以幫助數(shù)據(jù)傳輸。緩沖器206的使用有時可能在數(shù)據(jù)傳輸上產(chǎn)生瓶頸,并且眾多緩沖器的引入可能增加RAID控制202的成本、復(fù)雜性和尺寸。這樣,本發(fā)明的某些實施例涉及以經(jīng)濟有效的方式提供及利用這些緩沖器206。
應(yīng)該理解,圖1和圖2中所示的實施例本質(zhì)上僅是示例性的。例如,應(yīng)該理解,本發(fā)明可適用于其中奇偶校驗帶區(qū)方程式要求來自一個或多個磁盤的數(shù)據(jù)按常數(shù)比例縮放的其它磁盤陣列環(huán)境。還應(yīng)該理解,與本發(fā)明一致的磁盤陣列環(huán)境可以利用駐留于計算機的主存儲器中的完全軟件實現(xiàn)的控制算法,或者計算機或控制器中通過程序代碼操縱的某些功能可以以硬件邏輯電路實現(xiàn),反之亦然。因而,本發(fā)明不應(yīng)限于這里所討論的具體實施例。
用于實時XOR的基于硬件的有限域乘法器如上所述,在RAID-5系統(tǒng)中,重建數(shù)據(jù)或再同步奇偶校驗數(shù)據(jù)要求讀取來自所有其它驅(qū)動器的數(shù)據(jù)并且然后一起對之進行XOR運算。圖3中描繪了實時XOR引擎的框圖,并且該實時XOR引擎易于在RAID控制器上實現(xiàn)。當(dāng)執(zhí)行再同步時,將數(shù)據(jù)磁盤306-312讀入XOR引擎302并且對之一起進行XOR運算以生成被寫入緩沖器304并且然后被寫入奇偶校驗驅(qū)動器P314中的奇偶校驗數(shù)據(jù)。除了將奇偶校驗盤和其它的數(shù)據(jù)盤都讀入并且一起進行XOR運算以生成要寫入重建磁盤中的數(shù)據(jù)之外,數(shù)據(jù)驅(qū)動器的重建操作將是類似的。當(dāng)執(zhí)行暴露模式的讀操作時,通過讀取奇偶校驗數(shù)據(jù)和其它磁盤的數(shù)據(jù)并且執(zhí)行XOR運算來生成丟失磁盤的數(shù)據(jù)。因為XOR運算可以以任何次序來實現(xiàn),所以從不同的磁盤306-312讀取數(shù)據(jù)可以被執(zhí)行為交迭的或并發(fā)的I/O操作,并且可以利用單個XOR引擎302和緩沖器304。如果XOR引擎302既擔(dān)當(dāng)輸入緩沖器也擔(dān)當(dāng)目的緩沖器,則因為XOR引擎302僅將進入的數(shù)據(jù)值與其內(nèi)部緩沖器的當(dāng)前內(nèi)容進行XOR運算,所以甚至可以省略單獨的緩沖器304。
如上所述,在RAID-6中,需要對從每個磁盤驅(qū)動器讀取的數(shù)據(jù)進行乘法或者縮放操作。因此,通常使用類似于圖4的緩沖器和XOR運算配置。來自不同驅(qū)動器432-436的數(shù)據(jù)被讀入單獨的緩沖器426-430中、在通常由RAID控制器的軟件微碼執(zhí)行的乘法步驟420-424中被乘以適當(dāng)?shù)谋壤禂?shù)、被寫入額外的緩沖器406-410中。然后在XOR引擎402中對緩沖器406-410的內(nèi)容一起進行XOR運算。然后將奇偶校驗數(shù)據(jù)P通過緩沖器404寫到奇偶校驗盤414中。除了將奇偶校驗盤P或Q和其它的數(shù)據(jù)盤都讀入、進行乘法運算并且一起進行XOR運算以生成要寫入重建磁盤中的數(shù)據(jù)之外,數(shù)據(jù)驅(qū)動器的重建操作將是類似的。
對于N個磁盤的陣列,通常必須從N-2個不同的磁盤讀入數(shù)據(jù)以執(zhí)行再同步、重建或暴露模式的讀操作。為了使這些讀I/O操作交迭,需要N-2個緩沖器。如果可用的緩沖器少于N-2個,則一些讀I/O操作中將不得不等待直到其它讀操作結(jié)束。對于任何重建、再同步或暴露模式的讀,僅需要N-2個磁盤,因此在圖4的配置中可以不利用諸如Q磁盤的一個磁盤。
本發(fā)明的實施例包括有限域乘法器,該有限域乘法器被作為插入到當(dāng)由RAID控制從磁盤檢索數(shù)據(jù)時的數(shù)據(jù)路徑中的硬件來實現(xiàn)。特別地,圖5圖示了控制器中這樣的配置的示意圖。當(dāng)將數(shù)據(jù)從每個驅(qū)動器526-530讀入控制器中時,乘法器520-524將每個字節(jié)乘以預(yù)先由RAID控制器的軟件微碼確定的常數(shù)??梢詫⒃摮朔ㄆ鬟壿嬛貜?fù)n次以便處理那么多個不同的驅(qū)動器,或者對于所有的驅(qū)動器可以使用單個乘法器。然后,與參考圖3描述的類似,可以將每個乘法器的結(jié)果輸入到實時XOR引擎502中。這樣,以諸如圖3中所示的RAID-5實現(xiàn)中大體相同的方式,不同乘法器520-524的結(jié)果在引擎502中被一起執(zhí)行XOR操作并且通過緩沖器504寫入奇偶校驗驅(qū)動器P514中。
結(jié)果,當(dāng)將數(shù)據(jù)從驅(qū)動器讀出時,將其乘以常數(shù)而不使用中間緩沖器。然后將該乘積輸入到XOR引擎中而不管它們被讀入的次序如何。據(jù)此,可以以交迭或者并發(fā)的方式執(zhí)行不同磁盤的I/O讀取操作。用于每個磁盤數(shù)據(jù)的常數(shù)乘法器的特定值是根據(jù)相關(guān)的奇偶校驗帶區(qū)方程式(例如上面的方程式(7))來確定的。這些常數(shù)是由RAID控制器的軟件微碼基于正執(zhí)行的暴露模式的操作的類型預(yù)先確定的。
圖7中描繪了有限域乘法器的一個示例性基于硬件的實現(xiàn),其使用互相電耦接的基本邏輯門來執(zhí)行乘法步驟。該特定乘法器在具有本原多項式x4+x+1的伽羅華域中在4位的字大小上操作。將來自磁盤的數(shù)據(jù)作為輸入A0-A3702讀入以及將相應(yīng)的常數(shù)作為輸入B0-B3704讀入乘法器。作為結(jié)果得到的乘積輸出為C0-C3708。本領(lǐng)域普通技術(shù)人員應(yīng)認識到,圖7的乘法器本質(zhì)上是示例性的,可以使用不同的本原多項式和字大小而不背離本發(fā)明的范圍。同樣可以利用其它的硬件實現(xiàn)。例如,在下面的表I中提供了8位乘法器的VHDL實現(xiàn),其中本原多項式是x8+x4+x3+x2+1。這樣的乘法器可以以各種硬件實施方式實現(xiàn)。
表I 8位乘法器
上述內(nèi)嵌的硬件乘法器電路也可以被配置成這樣的方式,即允許兩個奇偶校驗編碼P和Q的并發(fā)再同步,或者允許兩個暴露的磁盤被重建。圖6圖示了這樣的配置。在該示例性配置中,數(shù)據(jù)被分別從磁盤618的每個中讀出,經(jīng)過兩個不同的硬件乘法器庫(bank of hardware multiplier)606、608。來自這些相應(yīng)乘法器的相應(yīng)乘積然后在相應(yīng)的XOR引擎602、604中一起進行XOR操作以生成要通過相應(yīng)的緩沖器614、610寫回到陣列中的其它兩個磁盤-磁盤P616和磁盤Q612中的數(shù)據(jù)。據(jù)此,可以利用僅兩個緩沖器以及一組交迭的讀來再同步兩組奇偶校驗,或者在重建的情況下,可以以與重建一個驅(qū)動器相同的時間來重構(gòu)兩個暴露的驅(qū)動器。
這樣,本發(fā)明的實施例提供了一種方法和系統(tǒng),其在磁盤驅(qū)動器的數(shù)據(jù)路徑中利用基于硬件的有限域乘法器,以便以數(shù)目減少了的緩沖器來執(zhí)行實時XOR計算。在不背離本發(fā)明的精神和范圍的條件下可以對所示的實施例進行各種修改。因而本發(fā)明在于所附的權(quán)利要求書。
權(quán)利要求
1.一種在包括多個磁盤驅(qū)動器類型的磁盤陣列環(huán)境中執(zhí)行暴露模式操作的方法,該方法包括下述步驟從每個磁盤驅(qū)動器讀取來自奇偶校驗帶區(qū)的相應(yīng)數(shù)據(jù)值,其中來自奇偶校驗帶區(qū)的數(shù)據(jù)值根據(jù)奇偶校驗帶區(qū)方程式彼此相關(guān),在該奇偶校驗帶區(qū)方程式中,相應(yīng)數(shù)據(jù)值的至少一部分被按比例系數(shù)進行縮放;使用至少一個基于硬件的有限域乘法器對相應(yīng)數(shù)據(jù)值的至少一部分進行縮放以生成多個乘積;以及對該多個乘積執(zhí)行XOR運算。
2.如權(quán)利要求1所述的方法,其中,所述有限域乘法器本質(zhì)上由多個電耦接的邏輯門組成。
3.如權(quán)利要求1所述的方法,其中,所述從每個磁盤驅(qū)動器讀取來自奇偶校驗帶區(qū)的相應(yīng)數(shù)據(jù)值的步驟包括發(fā)出多個交迭的讀請求從而由所述多個磁盤驅(qū)動器并發(fā)地處理該讀請求。
4.如權(quán)利要求1所述的方法,其中,所述暴露模式的操作包括重建操作、再同步操作和暴露模式的讀操作之一。
5.如權(quán)利要求1所述的方法,其中,所述執(zhí)行XOR運算的步驟包括執(zhí)行實時XOR運算。
6.如權(quán)利要求1所述的方法,還包括,與使用所述基于硬件的有限域乘法器對該相應(yīng)數(shù)據(jù)值的一部分進行縮放以生成多個乘積并發(fā)地使用至少一個額外的、基于硬件的有限域乘法器,對相應(yīng)數(shù)據(jù)值的至少一部分進行縮放以生成第二多個乘積,并且對該第二多個乘積執(zhí)行XOR運算。
7.一種在磁盤陣列環(huán)境中用于從第一和第二奇偶校驗方程式計算相應(yīng)的第一和第二結(jié)果的方法,該方法包括下述步驟從多個磁盤驅(qū)動器的每個讀取相應(yīng)數(shù)據(jù)值;經(jīng)由第一相關(guān)聯(lián)的硬件實現(xiàn)的有限域乘法器對該相應(yīng)數(shù)據(jù)值的每個執(zhí)行乘法以生成第一多個乘積;與經(jīng)由第一相關(guān)聯(lián)的硬件實現(xiàn)的有限域乘法器執(zhí)行乘法并發(fā)地經(jīng)由第二相關(guān)聯(lián)的硬件實現(xiàn)的有限域乘法器,對該相應(yīng)數(shù)據(jù)值的每個執(zhí)行乘法以生成第二多個乘積;對該第一多個乘積執(zhí)行第一XOR運算以生成該第一結(jié)果;以及對該第二多個乘積執(zhí)行第二XOR運算以生成該第二結(jié)果。
8.如權(quán)利要求7所述的方法,還包括下述步驟基于該第一和第二結(jié)果并發(fā)地再同步第一和第二奇偶校驗值。
9.一種磁盤陣列控制器,包括在磁盤控制器的XOR引擎與多個磁盤驅(qū)動器的每個之間的相應(yīng)數(shù)據(jù)路徑;以及與每個數(shù)據(jù)路徑通信的相應(yīng)有限域乘法器電路,每個有限域乘法器電路包括用于從相應(yīng)的數(shù)據(jù)路徑接收數(shù)據(jù)值的第一相應(yīng)輸入、用于接收相應(yīng)常數(shù)的第二相應(yīng)輸入和用于向XOR引擎?zhèn)魉驮撓鄳?yīng)數(shù)據(jù)值與該相應(yīng)常數(shù)的乘積的相應(yīng)輸出。
10.如權(quán)利要求9所述的控制器,其中,所述XOR引擎被配置成對來自相應(yīng)乘法器電路的乘積執(zhí)行XOR運算以生成奇偶校驗帶區(qū)方程式的結(jié)果。
11.如權(quán)利要求10所述的控制器,其中,所述XOR引擎被配置成經(jīng)由相應(yīng)的數(shù)據(jù)路徑傳送所述結(jié)果到磁盤驅(qū)動器之一。
12.如權(quán)利要求9所述的控制器,其中,所述有限域乘法器電路的每個是以硬件實現(xiàn)的。
13.如權(quán)利要求9所述的控制器,其中,所述控制器是RAID-6控制器。
14.一種電路配置,包括多個數(shù)據(jù)路徑,每個數(shù)據(jù)路徑被配置成從多個磁盤驅(qū)動器之一接收數(shù)據(jù)值;多個基于硬件的有限域乘法器電路,每個有限域乘法器電路與該多個數(shù)據(jù)路徑之一通信,并被配置成在第一輸入從相應(yīng)的數(shù)據(jù)路徑接收數(shù)據(jù)值,以及在第二輸入接收相應(yīng)常數(shù),并且每個有限域乘法器電路被配置成輸出該相應(yīng)數(shù)據(jù)值與該相應(yīng)常數(shù)的乘積;以及XOR引擎,其耦接到每個數(shù)據(jù)路徑并且被配置成接收由每個有限域乘法器電路輸出的乘積。
15.如權(quán)利要求14所述的電路配置,其中,所述XOR引擎被配置成,在接收到來自有限域乘法器電路之一的乘積后,對所接收到的乘積與存儲在緩沖器中的工作值執(zhí)行XOR運算并且將其結(jié)果存儲在該緩沖器中。
16.如權(quán)利要求15所述的電路配置,其中,所述XOR引擎被配置成在接收來自所有有限域乘法器電路的乘積之后輸出奇偶校驗帶區(qū)方程式的結(jié)果。
17.一種包括如權(quán)利要求14所述的電路配置的集成電路元件。
18.一種包括如權(quán)利要求14所述的電路配置的RAID控制器。
19.一種程序產(chǎn)品,包括定義如權(quán)利要求14所述的電路配置的硬件定義程序;以及承載該硬件定義程序的計算機可讀信號承載介質(zhì),其中該信號承載介質(zhì)包括傳輸型介質(zhì)和可記錄型介質(zhì)中的至少一個。
20.一種控制多個磁盤驅(qū)動器的磁盤陣列控制器,包括第一組有限域乘法器電路,第一組中的每個有限域乘法器電路連接到相應(yīng)一個磁盤驅(qū)動器,并且被配置成從相應(yīng)磁盤驅(qū)動器接收數(shù)據(jù)值、將該數(shù)據(jù)值乘以第一相應(yīng)常數(shù)、以及將第一相應(yīng)乘積提供給第一XOR引擎;和第二組有限域乘法器電路,第二組中的每個有限域乘法器電路連接到相應(yīng)一個磁盤驅(qū)動器,并且被配置來從相應(yīng)磁盤驅(qū)動器接收數(shù)據(jù)值、將該數(shù)據(jù)值乘以第二相應(yīng)常數(shù)、以及將第二相應(yīng)乘積提供給第二XOR引擎。
21.如權(quán)利要求20所述的控制器,其中第一XOR引擎被配置成基于第一相應(yīng)乘積生成第一奇偶校驗帶區(qū)方程式結(jié)果;以及第二XOR引擎被配置成基于第二相應(yīng)乘積生成第二奇偶校驗帶區(qū)方程式結(jié)果。
22.如權(quán)利要求20所述的控制器,其中,第一和第二組有限域乘法器電路被配置成并發(fā)地操作。
23.如權(quán)利要求20所述的控制器,其中,每個有限域乘法器電路本質(zhì)上包括邏輯門。
全文摘要
本發(fā)明提供了一種在包括多個磁盤驅(qū)動器型的磁盤陣列環(huán)境中用于執(zhí)行暴露模式操作的方法、磁盤陣列控制器及電路配置。當(dāng)在RAID或其它磁盤陣列環(huán)境中執(zhí)行再同步、重建以及其它暴露模式的讀操作時,使用基于硬件的有限域乘法器對來自磁盤驅(qū)動器的進入數(shù)據(jù)執(zhí)行縮放以及對該經(jīng)縮放的數(shù)據(jù)與工作緩沖器的內(nèi)容進行XOR運算。結(jié)果是,依賴于并入一個或多個比例系數(shù)的奇偶校驗帶區(qū)方程式的RAID設(shè)計能夠交迭對多個驅(qū)動器的讀操作,從而增加并行性、減少所需緩沖器的數(shù)目并且提高性能。
文檔編號G06F3/06GK1776598SQ20051012672
公開日2006年5月24日 申請日期2005年11月21日 優(yōu)先權(quán)日2004年11月19日
發(fā)明者卡爾·E·福漢, 羅伯特·E·蓋爾布雷斯, 阿德里安·C·格哈德 申請人:國際商業(yè)機器公司