亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

提高磁盤陣列奇偶校驗更新的緩沖器利用率的方法和系統(tǒng)的制作方法

文檔序號:6651066閱讀:236來源:國知局
專利名稱:提高磁盤陣列奇偶校驗更新的緩沖器利用率的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于數(shù)據(jù)存儲的數(shù)據(jù)保護(hù)方法,尤其涉及實現(xiàn)RAID-6的系統(tǒng)以及類似的數(shù)據(jù)保護(hù)和恢復(fù)策略。
背景技術(shù)
RAID代表獨立磁盤冗余陣列(Redundant Array of Independent Disks),是這樣一類冗余磁盤陣列存儲模式,其中冗余磁盤陣列存儲模式定義了眾多配置和使用多個計算機(jī)磁盤驅(qū)動器,以獲得各種級別的可用性、性能、容量和成本的方式,同時作為單個大容量驅(qū)動器呈現(xiàn)給軟件應(yīng)用程序。典型的RAID存儲子系統(tǒng)(subsystem)可以用硬件或者軟件來實現(xiàn)。在前者的情況下,RAID算法被封裝到耦接到計算機(jī)輸入/輸出(“I/O”)總線的單獨控制器硬件中,并且雖然增加很少或者沒有增加中央處理單元(“CPU”)開銷,但是所需的額外硬件仍然增加了整個系統(tǒng)的成本。另一方面,軟件實現(xiàn)將RAID算法并到與操作系統(tǒng)一起由主處理器執(zhí)行的系統(tǒng)軟件中,從而避免了單獨的硬件控制器的需要和成本,然而增加了CPU開銷。
從RAID-0到RAID-6已經(jīng)定義了各種RAID級別,每個都在前述因素中進(jìn)行權(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)在被認(rè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ù)之類可以用來對二進(jìn)制數(shù)據(jù)執(zhí)行必要的數(shù)學(xué)計算以得到RAID-3和更高級別實現(xiàn)中的奇偶校驗信息。雖然奇偶校驗在盤失效的情況下允許重構(gòu)用戶數(shù)據(jù),但是這種重構(gòu)的速度是系統(tǒng)負(fù)載和所使用的特定算法的函數(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的變型,其將奇偶校驗分帶在陣列中的所有磁盤上,以便使盤上的負(fù)載在統(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位的二進(jìn)制數(shù)。該域中的多項式加法只是N比特XOR運算,其具有該域的每個元素是其自身的加性逆元(additive inverse)的屬性,所以加法和減法是相同的運算。但是,該域中的多項式乘法可以利用基于對數(shù)的查表技術(shù)或者利用簡單的組合邏輯來進(jìn)行。
每個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,仍然存在改進(jìn)提供數(shù)據(jù)存儲的RAID-6保護(hù)的效率和成本的持續(xù)需求。實現(xiàn)RAID-6的數(shù)學(xué)涉及重復(fù)性的復(fù)雜計算。據(jù)此,在現(xiàn)今和未來,努力改進(jìn)實現(xiàn)RAID-6所需的電路的簡易性、電路的成本、電路的效率仍是優(yōu)先考慮的問題。
例如,常規(guī)RAID-6設(shè)計的一個缺陷涉及這樣的設(shè)計中的奇偶校驗更新的吞吐量,這是由于為執(zhí)行這樣的更新需要相對較高的緩沖器需求。此上下文中的奇偶校驗更新指的是響應(yīng)于奇偶校驗帶區(qū)中所存儲的數(shù)據(jù)的變化而更新磁盤陣列中給定奇偶校驗帶區(qū)中所存儲的奇偶校驗信息。
作為比較,在RAID-5設(shè)計中,奇偶校驗更新操作通常需要首先將待更新的舊數(shù)據(jù)從適當(dāng)?shù)拇疟P中取出并且將其與新數(shù)據(jù)比較(例如,通過對新數(shù)據(jù)和舊數(shù)據(jù)進(jìn)行XOR運算)來計算增量值Δ。該增量值Δ然后用于例如通過對舊奇偶校驗值與增量值Δ進(jìn)行XOR運算來更新該奇偶校驗。
公知地,在RAID-5奇偶校驗更新期間所執(zhí)行的兩個XOR運算可以僅使用兩個緩沖器來實現(xiàn)。具體地,第一緩沖器可以用于最初存儲待寫入的新數(shù)據(jù),而第二緩沖器用于存儲增量值Δ,該增量值Δ是由存儲在第一緩沖器中的新數(shù)據(jù)與從適當(dāng)?shù)拇疟P中取出的舊數(shù)據(jù)(數(shù)據(jù)可以直接輸入到XOR邏輯,從而不需要被緩沖)的XOR運算生成的。一旦將新數(shù)據(jù)寫入適當(dāng)?shù)拇疟P,該第一緩沖器然后可以重新用于存儲存儲在第二緩沖器的增量值Δ與從適當(dāng)?shù)拇疟P取出的舊奇偶校驗值(也可以直接輸入到XOR邏輯而無需緩沖)之間XOR運算的結(jié)果。在該第二XOR運算之后,該第一緩沖器存儲新奇偶校驗值,該新奇偶校驗值然后可以從該第一緩沖器中讀出并且被寫入到適當(dāng)?shù)拇疟P中。
另一方面,在其中兩個磁盤包括每個奇偶校驗帶區(qū)的奇偶校驗數(shù)據(jù)的RAID-6環(huán)境中,奇偶校驗更新操作通常需要至少一個額外的緩沖器來存儲與這樣的操作相關(guān)聯(lián)的中間數(shù)據(jù)。具體地,在RAID-6奇偶校驗更新仍然需要計算增量值Δ的同時,對給定的奇偶校驗帶區(qū)更新兩個奇偶校驗值要求該增量值Δ乘以或縮放(scale)下述不同的常數(shù),該不同的常數(shù)分別與不同的奇偶校驗帶區(qū)方程式相關(guān)聯(lián),該方程式將奇偶校驗值與該奇偶校驗帶區(qū)方程式中的數(shù)據(jù)相聯(lián)系。這些不同的常數(shù)通常表示為常數(shù)K1和K2,同樣地,奇偶校驗帶區(qū)的一個奇偶校驗值P通常通過對舊奇偶校驗值P與常數(shù)K1和增量值Δ的乘積(即,K1Δ)進(jìn)行XOR運算來計算得到,而同一奇偶校驗帶區(qū)的另一奇偶校驗值Q通常通過對舊奇偶校驗值Q與常數(shù)K2和增量值Δ的乘積(即,K2Δ)進(jìn)行XOR運算來計算得到。
在常規(guī)的RAID-6實現(xiàn)中,使用了三個或者更多的緩沖器,其中第一緩沖器最初存儲待寫入的新數(shù)據(jù),第二緩沖器用于存儲增量值Δ,該增量值Δ由存儲在第一緩沖器中的新數(shù)據(jù)與從適當(dāng)磁盤取出的舊數(shù)據(jù)的XOR運算生成。由于兩個奇偶校驗值都需要該增量值Δ,所以使用第三緩沖器來存儲存儲在第二緩沖器中的增量值Δ與常數(shù)K1的乘積K1Δ。同樣,與RAID-5實現(xiàn)類似,在將新數(shù)據(jù)寫入適當(dāng)?shù)拇疟P之后,該第一緩沖器重新用于存儲存儲在第三緩沖器中的乘積K1Δ與從適當(dāng)?shù)拇疟P取出的舊奇偶校驗值P之間XOR運算的結(jié)果,該結(jié)果然后作為新奇偶校驗值P被寫回到該適當(dāng)?shù)拇疟P中。為了更新奇偶校驗值Q,在更新奇偶校驗值P后,然后重新使用第三緩沖器來存儲存儲在第二緩沖器中的增量值Δ與常數(shù)K2的乘積K2Δ,然后重新使用第一緩沖器來存儲現(xiàn)在存儲在第三緩沖器中的乘積K2Δ與從適當(dāng)磁盤取出的舊奇偶校驗值Q之間的XOR運算的結(jié)果。然后將現(xiàn)在存儲在第一緩沖器中的該結(jié)果作為新奇偶校驗值Q寫回到適當(dāng)?shù)拇疟P中。
但是,為RAID-6奇偶校驗更新使用三個緩沖器比RAID-5設(shè)計所需的兩個緩沖器增加了50%的緩沖器需求。結(jié)果是,在緩沖器的數(shù)目受限的情況下,與RAID-5設(shè)計相比RAID-6設(shè)計通常只有2/3數(shù)目的奇偶校驗更新操作處于進(jìn)行中,從而減少了吞吐量并且限制了總體性能。

發(fā)明內(nèi)容
本發(fā)明通過下述操作解決了與現(xiàn)有技術(shù)相關(guān)聯(lián)的上述及其它問題,該操作為代數(shù)上組合在更新奇偶校驗帶區(qū)的多個奇偶校驗值中所使用的多個常數(shù)值從而在生成一個奇偶校驗值的過程中所使用的乘積可以有效地從在生成其它奇偶校驗值中所使用的乘積中得出。通過這樣做,無需為計算每個乘積在緩沖器中單獨存儲為兩個乘積共有的增量值,從而消除了對這樣的緩沖器的需求。結(jié)果是,可以利用較少數(shù)目的所需緩沖器來執(zhí)行對多個奇偶校驗值進(jìn)行的奇偶校驗更新,從而限制了與緩沖器相關(guān)聯(lián)的瓶頸,并提高了總體吞吐量和性能。
作為示例,在一個其中通過將舊P值、舊Q值與單獨的乘積K1Δ、K2Δ進(jìn)行XOR運算計算得到P值、Q值的、與本發(fā)明一致的示例性RAID-6實現(xiàn)中,乘積K2Δ是通過將乘積K1Δ乘以代表K2和K1的比率(即,K2/K1)的值(本文用K3表示)而從乘積K1Δ中得到的。結(jié)果是,消除了對存儲用在計算每個乘積K1Δ、K2Δ的增量值的單獨緩沖器的需要。
因而,與本發(fā)明一致,與將新數(shù)據(jù)存儲在奇偶校驗帶區(qū)中相關(guān)聯(lián)地更新磁盤陣列中奇偶校驗帶區(qū)的奇偶校驗值,其中該磁盤陣列屬于其中奇偶校驗帶區(qū)至少包括第一奇偶校驗值和第二奇偶校驗值的類型,該第一奇偶校驗值和第二奇偶校驗值通過至少一個奇偶校驗帶區(qū)方程式與存儲在奇偶校驗帶區(qū)中的數(shù)據(jù)相關(guān),其中該第一奇偶校驗值能夠基于該新數(shù)據(jù)使用從該至少一個奇偶校驗帶區(qū)方程式得出的第一常數(shù)而被更新,以及其中該第二奇偶校驗值能夠基于該新數(shù)據(jù)使用從該至少一個奇偶校驗帶區(qū)方程式得出的第二常數(shù)而被更新。通過下述操作更新該奇偶校驗值將第一值存儲在第一緩沖器中,該第一值代表第一常數(shù)與增量值的乘積,該增量值代表該新數(shù)據(jù)與先前存儲在奇偶校驗帶區(qū)中的舊數(shù)據(jù)之間的差,使用存儲在第一緩沖器中的第一值更新該第一奇偶校驗值,將第二值存儲在第二緩沖器中,該第二值代表存儲在第一緩沖器中的第一值與第三常數(shù)的乘積,該第三常數(shù)代表第二常數(shù)對第一常數(shù)的比率,以及使用存儲在第二緩沖器中的第二值更新該第二奇偶校驗值。


圖1是根據(jù)本發(fā)明的原理的、可以實現(xiàn)RAID-6存儲控制器的示例性計算機(jī)系統(tǒng)的框圖。
圖2是圖示圖1的RAID控制器的主要組件的框圖。
圖3是與本發(fā)明一致的示例性奇偶校驗更新操作的流程圖。
具體實施例方式
下文中討論的實施例通過下述操作減少了在RAID-6和類似的環(huán)境中執(zhí)行奇偶校驗更新所需的緩沖器的數(shù)目,即,代數(shù)上組合(algebraicallycombined)在更新奇偶校驗帶區(qū)的多個奇偶校驗值中所使用的多個常數(shù)值從而在生成一個奇偶校驗值的過程中所使用的乘積可以有效地從在其它奇偶校驗值的生成中所使用的乘積中得出。通過這樣做,通常消除了單獨存儲增量值的需要,從而減少了緩沖器需求并且提高了性能,該增量值代表奇偶校驗帶區(qū)中新數(shù)據(jù)與舊數(shù)據(jù)之間的差。
下文中給出了與本發(fā)明一致的奇偶校驗更新操作的磁盤陣列環(huán)境的多個實施例。但是,在討論這樣的實施例之前,首先提供RAID-6的背景簡述,隨后是對可以實現(xiàn)與本發(fā)明一致的奇偶校驗更新操作的示例性硬件環(huán)境的描述。
一般RAID-6背景這里用來描述RAID-6存儲系統(tǒng)的專用術(shù)語符合本領(lǐng)域最易于接受的標(biāo)準(zhǔn)。特別地,存在N個驅(qū)動器,其中任何兩個將被認(rèn)為是奇偶校驗驅(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)向附圖,其中在幾個附圖中相同的附圖標(biāo)記表示系統(tǒng)的部件。圖1圖示了可以實現(xiàn)RAID-6或其它磁盤陣列的示例性計算機(jī)系統(tǒng)。為了本發(fā)明的目的,裝置10可以實際上代表任何類型的計算機(jī)、計算機(jī)系統(tǒng)或者其它可編程的電子設(shè)備,包括客戶端計算機(jī)、服務(wù)器計算機(jī)、便攜式計算機(jī)、手持式計算機(jī)、嵌入式控制器等。此外,裝置10可以采用例如集群式或分布式計算系統(tǒng)中的一個或多個聯(lián)網(wǎng)的計算機(jī)來實現(xiàn)。下文中將稱裝置10為“計算機(jī)”,不過應(yīng)該理解術(shù)語“裝置”也可以包括與本發(fā)明一致的其它適當(dāng)?shù)目删幊屉娮釉O(shè)備。
計算機(jī)10通常包括至少一個耦接到存儲器14的處理器12。處理器12可以表示一個或多個處理器(例如,微處理器),存儲器14可以表示隨機(jī)存取存儲器(RAM)設(shè)備,包括計算機(jī)10的主存以及任何輔助級別的存儲器,例如高速緩存存儲器、非易失或者備用存儲器(例如,可編程或者閃存存儲器)、只讀存儲器等。此外,存儲器14可以視為包括物理上位于計算機(jī)10中別處的存儲器存儲,例如,處理器12中的任何高速緩存存儲器以及用作虛擬存儲器的任何存儲容量,例如存儲在磁盤陣列34上或者經(jīng)由網(wǎng)絡(luò)18存儲在耦接到計算機(jī)10的另一臺計算機(jī)(例如,客戶端計算機(jī)20)上。
計算機(jī)10通常還接收多個輸入和輸出以與外部交換信息。對于與用戶或者操作員的接口,計算機(jī)10通常包括一個或多個用戶輸入設(shè)備22(例如,其中有鍵盤、鼠標(biāo)、跟蹤球、操縱桿、觸摸板和/或麥克風(fēng))以及顯示器24(例如,其中有CRT顯示器、LCD顯示面板和/或揚聲器)。此外,用戶輸入可以經(jīng)由在網(wǎng)絡(luò)上與計算機(jī)10連接的另一臺計算機(jī)(例如,計算機(jī)20)或者經(jīng)由專用工作站接口等接收。
對于額外的存儲設(shè)備,計算機(jī)10還可以包括經(jīng)由存儲控制器或者適配器16存取的一個或多個大容量存儲設(shè)備,例如,其中有可移動磁盤驅(qū)動器、硬盤驅(qū)動器、直接存取存儲設(shè)備(DASD)、光盤驅(qū)動器(例如,CD驅(qū)動器,DVD驅(qū)動器,等等)和/或磁帶驅(qū)動器。此外,計算機(jī)10可以包括與一個或多個網(wǎng)絡(luò)18(例如,LAN、WAN、無線網(wǎng)和/或因特網(wǎng))的接口以允許與耦接到網(wǎng)絡(luò)的其它計算機(jī)交換信息。應(yīng)該理解,如本領(lǐng)域公知的,計算機(jī)10通常包括處理器12與組件14、16、18、22、24的每個之間的適當(dāng)?shù)哪M和/或數(shù)字接口。
根據(jù)本發(fā)明的原理,大容量存儲器控制器16有利于實現(xiàn)磁盤陣列34中的RAID-6存儲保護(hù)。
計算機(jī)10在操作系統(tǒng)30的控制下運行,并且執(zhí)行或者反之依賴于各種計算機(jī)軟件應(yīng)用程序、組件、程序、對象、模塊、數(shù)據(jù)結(jié)構(gòu)等等(例如,軟件應(yīng)用程序32)。此外,各種應(yīng)用程序、組件、程序、對象、模塊等等也可以在例如分布式或者客戶機(jī)/服務(wù)器計算環(huán)境下在經(jīng)由網(wǎng)絡(luò)18耦接到計算機(jī)10的另一臺計算機(jī)中的一個或多個處理器上執(zhí)行,由此為實現(xiàn)計算機(jī)程序的功能所需的處理可以被分配到網(wǎng)絡(luò)上的多臺計算機(jī)上。
通常,為實現(xiàn)本發(fā)明實施例所執(zhí)行的例程(不管被實現(xiàn)為操作系統(tǒng)的一部分或者特定應(yīng)用程序,組件,程序,對象,模塊或者指令序列,或者甚至為其子集)本文中都稱之為“計算機(jī)程序代碼”或者簡稱“程序代碼”。程序代碼通常包括一個或多個指令,其在各個時間駐留于計算機(jī)中的各種存儲器或者存儲設(shè)備中,并且當(dāng)被計算機(jī)中的一個或多個處理器讀取并執(zhí)行時使得該計算機(jī)執(zhí)行下述步驟,這些步驟是執(zhí)行具體化本發(fā)明各個方面的步驟或者元件所必需的。此外,雖然本發(fā)明是在并且將繼續(xù)在完全運行計算機(jī)和計算機(jī)系統(tǒng)功能的語境下描述的,但是本領(lǐng)域的技術(shù)人員將理解,本發(fā)明的各種實施例能夠作為各種形式的程序產(chǎn)品而分發(fā),并且不管用于實際攜帶該分發(fā)的計算機(jī)可讀信號承載介質(zhì)的具體類型如何本發(fā)明都同等適用。計算機(jī)可讀信號承載介質(zhì)的示例包括但不限于可記錄型介質(zhì)和諸如數(shù)字和模擬通信鏈路的傳輸型介質(zhì),可記錄型介質(zhì)例如其中有易失和非易失存儲設(shè)備、軟盤和其它可移動盤、硬盤驅(qū)動器、磁帶、光盤(例如,CD-ROM,DVD,等等)。
此外,下文中描述的各種程序代碼可以基于其中在本發(fā)明的特定實施例中實現(xiàn)的應(yīng)用程序來標(biāo)識。但是,應(yīng)該理解,跟隨的任何特定程序?qū)S眯g(shù)語僅出于便利而使用,因而本發(fā)明不應(yīng)限于僅用于由這樣的專用術(shù)語標(biāo)識和/或暗示的任何特定應(yīng)用程序中。此外,給定通常無數(shù)的藉之可以將計算機(jī)程序組織成例程、過程、方法、模塊、對象等等的方式,以及給定藉之將程序功能分配于駐留于特定計算機(jī)的各種軟件層(例如,操作系統(tǒng),庫,API,應(yīng)用程序,java應(yīng)用小程序(applet),等等)中的各種方式,應(yīng)該理解,本發(fā)明并不限于這里所描述的程序功能的特定組織和分配。
圖2圖示了磁盤陣列系統(tǒng)(例如RAID-6兼容系統(tǒng))的控制子系統(tǒng)的框圖。特別地,更詳細(xì)地示出了圖1的大容量存儲控制器16包括RAID控制器202,該RAID控制器202通過系統(tǒng)總線208與處理器12耦接并且通過存儲總線210耦接到各個磁盤驅(qū)動器212-218。如一名普通技術(shù)人員所熟知的,這些總線可以是本質(zhì)上專有的或者遵循諸如SCSI-1、SCSI-2等工業(yè)標(biāo)準(zhǔn)的。RAID控制器包括執(zhí)行下述程序代碼的微處理器204,該程序代碼實現(xiàn)用于數(shù)據(jù)保護(hù)的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)濟(jì)有效的方式提供及利用這些緩沖器206。
應(yīng)該理解,圖1和圖2中所示的實施例本質(zhì)上僅是示例性的。例如,應(yīng)該理解,本發(fā)明可適用于其中多個奇偶校驗值與每個奇偶校驗帶區(qū)相關(guān)聯(lián)的其它磁盤陣列環(huán)境。還應(yīng)該理解,與本發(fā)明一致的磁盤陣列環(huán)境可以利用駐留于計算機(jī)的主存儲器中的完全軟件實現(xiàn)的控制算法,或者計算機(jī)或控制器中通過程序代碼操縱的某些功能可以以硬件邏輯電路實現(xiàn),反之亦然。因而,本發(fā)明不應(yīng)限于這里所討論的具體實施例。
減少用于RAID-6奇偶校驗更新的緩沖器在RAID6系統(tǒng)中,對于每個普通的奇偶校驗更新操作產(chǎn)生六個I/O操作。這些I/O操作可以總結(jié)如下1)從磁盤讀舊數(shù)據(jù)dX2)向磁盤寫新數(shù)據(jù)dX3)從磁盤讀舊奇偶校驗dP4)向磁盤寫新奇偶校驗dP5)從磁盤讀舊奇偶校驗dQ6)向磁盤寫新奇偶校驗dQ該新數(shù)據(jù)和奇偶校驗值是根據(jù)方程式(3)、(4)、(5)計算得到。通常,這些操作需要如下面的表I所示的多個緩沖器。列表示三個不同的緩沖器A、B、C,而行是更新奇偶校驗操作的不同的順序步驟。
表I

在上面的表中,加法(即XOR)步驟經(jīng)由XOR引擎來執(zhí)行,其中將不在緩沖器中的數(shù)據(jù)直接從驅(qū)動器讀入XOR引擎中。與RAID-5相比,RAID-6的奇偶校驗更新使用了額外的緩沖器,并且因而在緩沖器受限的環(huán)境中以約2/3的吞吐量運行。
據(jù)此,本發(fā)明的實施例包括不同的緩沖器配置,其改進(jìn)了RAID-6環(huán)境中奇偶校驗更新操作的吞吐量。特別地,不是在全部時間將增量值Δ保持在緩沖器B中,而是可以利用簡單的代數(shù)學(xué)來在生成新奇偶校驗dQ時計算增量值Δ。下面示出的表II表示對表I的修改,它圖示了可以如何操縱乘積K1Δ和K2Δ的值或乘積(參考方程式(4)和(5))來減少RAID-6奇偶校驗更新中對緩沖器的依賴。
表II

從該表II可見,定義并存儲了值K3使得K3=K2/K1。將值K3與乘積K1Δ相乘時,結(jié)果等于K2Δ。這樣,通過根據(jù)表II的簡單代數(shù)操縱,僅使用兩個緩沖器實現(xiàn)了RAID-6奇偶校驗更新,這應(yīng)該可以理解為通過限制由于受限的緩沖器需求而導(dǎo)致的瓶頸可以提高性能和吞吐量。
與表II類似,圖3圖示了在示例性RAID-6環(huán)境中在執(zhí)行奇偶校驗更新操作中涉及的步驟。在步驟302中,將磁盤dX的新數(shù)據(jù)取入緩沖器A,以及在步驟304中,通過將從磁盤dX取出的舊數(shù)據(jù)與緩沖器A的內(nèi)容進(jìn)行XOR運算計算得到增量值Δ并且將之存儲在緩沖器B中。在步驟306中,將新數(shù)據(jù)從緩沖器A寫到磁盤dX,以及在步驟308中,通過將緩沖器B的內(nèi)容乘以常數(shù)K1計算得到第一值或乘積K1Δ并且將之存儲在緩沖器A中。
在步驟310中,通過將從磁盤dP取出的舊奇偶校驗P與緩沖器A的內(nèi)容進(jìn)行XOR運算計算得到新奇偶校驗值P,以及在步驟312中,將該新奇偶校驗值P寫到磁盤dP中。然后,在步驟314中,通過將緩沖器A的內(nèi)容乘以常數(shù)K3(設(shè)置為等于K2/K1)而計算得到第二值或乘積K2Δ,并且將之存儲在緩沖器B中。然后,在步驟316中,通過將從磁盤dQ取出的舊奇偶校驗Q與緩沖器B的內(nèi)容進(jìn)行XOR運算計算得到新奇偶校驗值Q,以及在步驟318中,將該新奇偶校驗值Q寫到磁盤dQ中。于是完成了奇偶校驗更新操作。
這樣,本發(fā)明的實施例在其中多個奇偶校驗值與每個奇偶校驗帶區(qū)相關(guān)聯(lián)的RAID-6或類型環(huán)境中提供了一種利用較少數(shù)目的緩沖器執(zhí)行奇偶校驗更新的方法和系統(tǒng)。在不背離本發(fā)明的精神和范圍的條件下可以對所示的實施例進(jìn)行各種修改。因而,本發(fā)明在于所附的權(quán)利要求書。
權(quán)利要求
1.一種與將新數(shù)據(jù)存儲在奇偶校驗帶區(qū)中相關(guān)聯(lián)地更新磁盤陣列中的奇偶校驗值的方法,其中該磁盤陣列屬于其中奇偶校驗帶區(qū)至少包括第一奇偶校驗值和第二奇偶校驗值的類型,該第一奇偶校驗值和第二奇偶校驗值通過至少一個奇偶校驗帶區(qū)方程式與存儲在奇偶校驗帶區(qū)中的數(shù)據(jù)相關(guān),該第一奇偶校驗值能夠基于該新數(shù)據(jù)使用從該至少一個奇偶校驗帶區(qū)方程式得出的第一常數(shù)而被更新,并且該第二奇偶校驗值能夠基于該新數(shù)據(jù)使用從該至少一個奇偶校驗帶區(qū)方程式得出的第二常數(shù)而被更新,該方法包括下述步驟將第一值存儲在第一緩沖器中,該第一值代表第一常數(shù)與增量值的乘積,該增量值代表該新數(shù)據(jù)與先前存儲在奇偶校驗帶區(qū)中的舊數(shù)據(jù)之間的差;使用存儲在第一緩沖器中的第一值更新該第一奇偶校驗值;將第二值存儲在第二緩沖器中,該第二值代表第三常數(shù)與存儲在第一緩沖器中的第一值的乘積,該第三常數(shù)代表第二常數(shù)對第一常數(shù)的比率;以及使用存儲在第二緩沖器中的第二值更新該第二奇偶校驗值。
2.如權(quán)利要求1所述的方法,還包括生成增量值;以及用新數(shù)據(jù)更新奇偶校驗帶區(qū)。
3.如權(quán)利要求2所述的方法,還包括在將第一值存儲在第一緩沖器中之前將增量值存儲在第二緩沖器中的步驟,其中將第一值存儲在第一緩沖器中的步驟包括從第二緩沖器中取出增量值并且將該增量值乘以第一常數(shù)。
4.如權(quán)利要求2所述的方法,其中,所述生成增量值的步驟包括對奇偶校驗帶區(qū)的新數(shù)據(jù)和舊數(shù)據(jù)進(jìn)行XOR運算。
5.如權(quán)利要求1所述的方法,其中,所述更新第一奇偶校驗值的步驟包括將第一奇偶校驗值與存儲在第一緩沖器中的第一值進(jìn)行XOR運算。
6.如權(quán)利要求1所述的方法,其中,所述更新第二奇偶校驗值的步驟包括將第二奇偶校驗值與存儲在第二緩沖器中的第二值進(jìn)行XOR運算。
7.如權(quán)利要求1所述的方法,其中所述更新第一奇偶校驗值的步驟是在將第二值存儲在第二緩沖器中的步驟之前執(zhí)行的。
8.如權(quán)利要求1所述的方法,其中,所述第一常數(shù)和第二常數(shù)是有限域常數(shù)。
9.如權(quán)利要求1所述的方法,其中,所述磁盤陣列包括RAID-6磁盤陣列。
10.一種與將奇偶校驗帶區(qū)的新數(shù)據(jù)存儲到數(shù)據(jù)磁盤dX中相關(guān)聯(lián)地更新與磁盤陣列中的奇偶校驗帶區(qū)相關(guān)的第一和第二奇偶校驗值的方法,其中該第一和第二奇偶校驗值分別存儲在磁盤陣列中的第一和第二奇偶校驗盤dP、dQ上,該方法包括下述步驟將奇偶校驗帶區(qū)的新數(shù)據(jù)存儲在第一緩沖器中;將增量值Δ存儲在第二緩沖器中,該增量值Δ是通過將存儲在第一緩沖器中的新數(shù)據(jù)與從數(shù)據(jù)磁盤dX取出的奇偶校驗帶區(qū)的舊數(shù)據(jù)進(jìn)行XOR運算而計算得到的;將奇偶校驗帶區(qū)的新數(shù)據(jù)從第一緩沖器寫到數(shù)據(jù)磁盤dX中;在將新數(shù)據(jù)寫到數(shù)據(jù)磁盤dX之后,將第一值K1Δ存儲在第一緩沖器中,該第一值K1Δ是通過將存儲在第二緩沖器中的增量值Δ乘以第一常數(shù)K1而計算得到的,其中該第一常數(shù)K1是從至少一個與奇偶校驗帶區(qū)相關(guān)聯(lián)的奇偶校驗帶區(qū)方程式中得到的;在將第一值K1Δ存儲在第一緩沖器中之后,將新的第一奇偶校驗值存儲在第二緩沖器中,該新的第一奇偶校驗值是通過將存儲在第一緩沖器中的第一值K1Δ與從奇偶校驗磁盤dP取出的奇偶校驗帶區(qū)的舊的第一奇偶校驗值進(jìn)行XOR運算而計算得到的;將存儲在第二緩沖器中的該新的第一奇偶校驗值寫到奇偶校驗盤dP中;通過將第二常數(shù)K2除以第一常數(shù)K1計算得到第三常數(shù)K3,第二常數(shù)K2是從至少一個與奇偶校驗帶區(qū)相關(guān)聯(lián)的奇偶校驗帶區(qū)方程式中得到的;在將該新的第一奇偶校驗值寫到奇偶校驗盤dP中之后,將第二值K2Δ存儲在第二緩沖器中,該第二值K2Δ是通過將存儲在第一緩沖器中的第一值K1Δ乘以第三常數(shù)K3而計算得到的;在將該第二值K2Δ存儲在第二緩沖器中之后,將新的第二奇偶校驗值存儲在第一緩沖器中,該新的第二奇偶校驗值是通過將存儲在第二緩沖器中的第二值K2Δ與從奇偶校驗磁盤dQ取出的奇偶校驗帶區(qū)的舊的第二奇偶校驗值進(jìn)行XOR運算而計算得到的;以及將存儲在第一緩沖器中的該新的第二奇偶校驗值寫到奇偶校驗盤dQ中。
11.一種裝置,包括第一和第二緩沖器;以及耦接到該第一和第二緩沖器并且被配置成與將新數(shù)據(jù)存儲在奇偶校驗帶區(qū)中相關(guān)聯(lián)地更新磁盤陣列中的奇偶校驗值的磁盤陣列控制器,其中該磁盤陣列屬于其中奇偶校驗帶區(qū)至少包括第一奇偶校驗值和第二奇偶校驗值的類型,該第一奇偶校驗值和第二奇偶校驗值通過至少一個奇偶校驗帶區(qū)方程式與存儲在奇偶校驗帶區(qū)中的數(shù)據(jù)相關(guān),該第一奇偶校驗值能夠基于該新數(shù)據(jù)使用從該至少一個奇偶校驗帶區(qū)方程式得出的第一常數(shù)而被更新,該第二奇偶校驗值能夠基于該新數(shù)據(jù)使用從該至少一個奇偶校驗帶區(qū)方程式得出的第二常數(shù)而被更新,并且該磁盤陣列控制器被配置成執(zhí)行下述操作將第一值存儲在第一緩沖器中,該第一值代表第一常數(shù)與增量值的乘積,該增量值代表該新數(shù)據(jù)與先前存儲在奇偶校驗帶區(qū)中的舊數(shù)據(jù)之間的差;使用存儲在第一緩沖器中的第一值更新該第一奇偶校驗值;將第二值存儲在第二緩沖器中,該第二值代表存儲在第一緩沖器中的第一值與第三常數(shù)的乘積,該第三常數(shù)代表第二常數(shù)對第一常數(shù)的比率;以及使用存儲在第二緩沖器中的第二值更新該第二奇偶校驗值。
12.如權(quán)利要求11所述的裝置,其中,所述磁盤陣列控制器包括RAID-6控制器。
13.如權(quán)利要求11所述的裝置,其中,所述磁盤陣列控制器包括下述程序代碼,該程序代碼被配置成執(zhí)行下述操作中的至少一個,所述操作為將第一值存儲在第一緩沖器中、更新第一奇偶校驗值、將第二值存儲在第二緩沖器中以及更新第二奇偶校驗值。
14.如權(quán)利要求11所述的裝置,還包括耦合到所述磁盤陣列控制器的多個磁盤。
15.如權(quán)利要求11所述的裝置,其中,所述磁盤陣列控制器還被配置成生成增量值和用新數(shù)據(jù)更新奇偶校驗帶區(qū)。
16.如權(quán)利要求15所述的裝置,其中所述磁盤陣列控制器還被配置成在將第一值存儲在第一緩沖器中之前將增量值存儲在第二緩沖器中,其中所述磁盤陣列控制器被配置成通過從第二緩沖器中取出增量值并且將該增量值乘以第一常數(shù)來將第一值存儲在第一緩沖器中。
17.如權(quán)利要求15所述的裝置,其中,所述磁盤陣列控制器被配置成通過對奇偶校驗帶區(qū)的新數(shù)據(jù)和舊數(shù)據(jù)進(jìn)行XOR運算來生成增量值。
18.如權(quán)利要求11所述的裝置,其中,所述磁盤陣列控制器被配置成通過將第一奇偶校驗值與存儲在第一緩沖器中的第一值進(jìn)行XOR運算來更新第一奇偶校驗值。
19.如權(quán)利要求11所述的裝置,其中,所述磁盤陣列控制器被配置成通過將第二奇偶校驗值與存儲在第二緩沖器中的第二值進(jìn)行XOR運算來更新第二奇偶校驗值。
20.如權(quán)利要求11所述的裝置,其中,所述磁盤陣列控制器被配置成在將第二值存儲在第二緩沖器中之前更新第一奇偶校驗值。
21.如權(quán)利要求11所述的裝置,其中,所述第一常數(shù)和第二常數(shù)是是有限域常數(shù)。
22.一種程序產(chǎn)品,包括程序代碼,其被配置成在被執(zhí)行時與將新數(shù)據(jù)存儲在奇偶校驗帶區(qū)中相關(guān)聯(lián)地更新磁盤陣列中的奇偶校驗值,其中該磁盤陣列屬于其中奇偶校驗帶區(qū)至少包括第一奇偶校驗值和第二奇偶校驗值的類型,該第一奇偶校驗值和第二奇偶校驗值通過至少一個奇偶校驗帶區(qū)方程式與存儲在奇偶校驗帶區(qū)中的數(shù)據(jù)相關(guān),該第一奇偶校驗值能夠基于該新數(shù)據(jù)使用從該至少一個奇偶校驗帶區(qū)方程式得出的第一常數(shù)而被更新,該第二奇偶校驗值能夠基于該新數(shù)據(jù)使用從該至少一個奇偶校驗帶區(qū)方程式得出的第二常數(shù)而被更新,并且該程序代碼被配置成執(zhí)行下述操作將第一值存儲在第一緩沖器中,該第一值代表第一常數(shù)與增量值的乘積,該增量值代表該新數(shù)據(jù)與先前存儲在奇偶校驗帶區(qū)中的舊數(shù)據(jù)之間的差;使用存儲在第一緩沖器中的第一值更新該第一奇偶校驗值;將第二值存儲在第二緩沖器中,該第二值代表存儲在第一緩沖器中的第一值與第三常數(shù)的乘積,該第三常數(shù)代表第二常數(shù)對第一常數(shù)的比率;以及使用存儲在第二緩沖器中的第二值更新該第二奇偶校驗值;以及承載該程序代碼的計算機(jī)可讀信號承載介質(zhì)。
全文摘要
本發(fā)明提供提高磁盤陣列奇偶校驗更新的緩沖器利用率的方法和系統(tǒng),其中在對磁盤陣列中的奇偶校驗帶區(qū)進(jìn)行奇偶校驗更新期間,對有限域算術(shù)中所使用的常數(shù)值進(jìn)行代數(shù)組合,以便減少在數(shù)據(jù)中發(fā)生變化時為更新多個奇偶校驗值所需的緩沖器和步驟的數(shù)目。例如,在一種實現(xiàn)中,存儲與數(shù)據(jù)變化相關(guān)聯(lián)的增量值與第一常數(shù)的乘積的緩沖器的內(nèi)容,被乘以代表第二常數(shù)與第一常數(shù)的比率的值,其中該第一常數(shù)用于更新第一奇偶校驗值,該第二常數(shù)用于更新第二奇偶校驗值。
文檔編號G06F3/06GK1776636SQ20051012672
公開日2006年5月24日 申請日期2005年11月21日 優(yōu)先權(quán)日2004年11月19日
發(fā)明者卡爾·E·福漢, 羅伯特·E·蓋爾布雷斯, 阿德里安·C·格哈德 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1