專利名稱:磁盤陣列恢復(fù)數(shù)據(jù)時增加磁盤訪問并行性的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于數(shù)據(jù)存儲的數(shù)據(jù)保護(hù)方法,尤其涉及實(shí)現(xiàn)RAID-6的系統(tǒng)以及類似的數(shù)據(jù)保護(hù)和恢復(fù)策略。
背景技術(shù):
RAID代表獨(dú)立磁盤冗余陣列(Redundant Array of Independent Disks),是這樣一類冗余磁盤陣列存儲模式,其中冗余磁盤陣列存儲模式定義了眾多配置和使用多個計算機(jī)磁盤驅(qū)動器,以獲得各種級別的可用性、性能、容量和成本的方式,同時作為單個大容量驅(qū)動器呈現(xiàn)給軟件應(yīng)用程序。典型的RAID存儲子系統(tǒng)(subsystem)可以用硬件或者軟件來實(shí)現(xiàn)。在前者的情況下,RAID算法被封裝到耦接到計算機(jī)輸入/輸出(“I/O”)總線的單獨(dú)控制器硬件中,并且雖然增加很少或者沒有增加中央處理單元(“CPU”)開銷,但是所需的額外硬件仍然增加了整個系統(tǒng)的成本。另一方面,軟件實(shí)現(xiàn)將RAID算法并到與操作系統(tǒng)一起由主處理器執(zhí)行的系統(tǒng)軟件中,從而避免了單獨(dú)的硬件控制器的需要和成本,然而增加了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,是通過分帶影像組實(shí)現(xiàn)的,從而得到該兩種RAID級別的相對的性能優(yōu)點(diǎn)。RAID-2采用了被寫在RAID組的成員上的漢明碼(Hamming Code),其現(xiàn)在被認(rèn)為并不很重要。
在RAID-3中,數(shù)據(jù)被分帶在一組磁盤上,其中添加了用于保存奇偶校驗(yàn)數(shù)據(jù)的單獨(dú)的專用盤。隨著將用戶數(shù)據(jù)寫到其它盤而動態(tài)地計算奇偶校驗(yàn)數(shù)據(jù),以便如果盤失效允許重構(gòu)初始的用戶數(shù)據(jù)而無需一個比特一個比特地復(fù)制數(shù)據(jù)。錯誤檢驗(yàn)和糾正碼(“ECC”)諸如異或(“XOR”)或者更復(fù)雜的里得-所羅門(Reed-Solomon)技術(shù)之類可以用來對二進(jìn)制數(shù)據(jù)執(zhí)行必要的數(shù)學(xué)計算以得到RAID-3和更高級別實(shí)現(xiàn)中的奇偶校驗(yàn)信息。雖然奇偶校驗(yàn)在盤失效的情況下允許重構(gòu)用戶數(shù)據(jù),但是這種重構(gòu)的速度是系統(tǒng)負(fù)載和所使用的特定算法的函數(shù)。
與RAID-3類似,稱作RAID-4的RAID方案由N個數(shù)據(jù)盤和一個奇偶校驗(yàn)盤組成,其中奇偶校驗(yàn)盤扇區(qū)包含每個數(shù)據(jù)盤上相應(yīng)扇區(qū)的逐位XOR。這使得在任一個盤失效的情況下RAID組中的數(shù)據(jù)內(nèi)容可以保存。RAID-5是RAID-4的變型,其將奇偶校驗(yàn)分帶在陣列中的所有磁盤上,以便使盤上的負(fù)載在統(tǒng)計上均衡。
RAID-6的名稱用來通俗地描述下述冗余和復(fù)雜的ECC技術(shù)的RAID方案,其通過使用兩個奇偶校驗(yàn)驅(qū)動器(通常稱為“P”和“Q”驅(qū)動器)可以容忍兩個磁盤失效而不丟失數(shù)據(jù)。盡管術(shù)語“奇偶校驗(yàn)”用于描述RAID-6技術(shù)中使用的碼,但是這些碼更恰當(dāng)?shù)卣f是一種ECC碼而不僅僅是奇偶校驗(yàn)碼。數(shù)據(jù)和ECC信息被分帶在RAID組的所有成員上并且寫性能通常低于RAID-5,這是因?yàn)樵趯懖僮髌陂g三個單獨(dú)的驅(qū)動器必須每個都被訪問兩次。不過,取決于所使用的“奇偶校驗(yàn)”驅(qū)動器的數(shù)目,RAID-6的原理可用于恢復(fù)多個驅(qū)動器失效。
某些RAID-6實(shí)現(xiàn)是基于里得-所羅門算法的,該算法依賴于伽羅華域(Galois Field)算術(shù)。對伽羅華域算術(shù)及RAID-6背后的數(shù)學(xué)的全面解釋可以在各種資源中找到,因而,下面僅提供簡單概述作為背景。RAID-6實(shí)現(xiàn)中所使用的伽羅華域算術(shù)發(fā)生在GF(2N)中。這是具有GF(2)中的系數(shù)的多項(xiàng)式對某N階生成多項(xiàng)式取模得到的域。該域中的所有多項(xiàng)式為N-1或者更小階,并且它們的系數(shù)都是0或者1,這意味著它們可以用全部在{0,1}中的N個系數(shù)的向量表示;即,這些多項(xiàng)式“看”起來就象N位的二進(jìn)制數(shù)。該域中的多項(xiàng)式加法只是N比特XOR運(yùn)算,其具有該域的每個元素是其自身的加性逆元(additive inverse)的屬性,所以加法和減法是相同的運(yùn)算。但是,該域中的多項(xiàng)式乘法可以利用基于對數(shù)的查表技術(shù)或者利用簡單的組合邏輯來進(jìn)行。
每個RAID-6校驗(yàn)碼(即,P和Q)表示RAID-6陣列的數(shù)據(jù)盤上的數(shù)據(jù)與校驗(yàn)盤之一或者兩者上的數(shù)據(jù)之間的不變關(guān)系或者公式。如果存在C個校驗(yàn)碼并且一組F盤失效,F(xiàn)≤C,則可以通過選擇這些公式中的F個公式并且在GF(2N)中同時對這些公式求解F個丟失的變量而重構(gòu)失效磁盤。在目前所實(shí)現(xiàn)或者構(gòu)思的RAID-6系統(tǒng)中,僅有2個校驗(yàn)盤,即校驗(yàn)盤P和校驗(yàn)盤Q。值得注意的是,校驗(yàn)盤P和Q對于陣列上數(shù)據(jù)和奇偶校驗(yàn)的每個帶區(qū)都發(fā)生變化,從而校驗(yàn)數(shù)據(jù)并不寫入專用盤而是相反分帶在所有的盤上。
即使在不同系統(tǒng)中通過不同方式以不同成功程度地實(shí)現(xiàn)了RAID-6,仍然存在改進(jìn)提供數(shù)據(jù)存儲的RAID-6保護(hù)的效率和成本的持續(xù)需求。實(shí)現(xiàn)RAID-6的數(shù)學(xué)涉及重復(fù)性的復(fù)雜計算。據(jù)此,在現(xiàn)今和未來,努力改進(jìn)實(shí)現(xiàn)RAID-6所需的電路的簡易性、電路的成本、電路的效率仍是優(yōu)先考慮的問題。
例如,現(xiàn)有RAID-6涉及的一個局限涉及與執(zhí)行再同步(其中使用于奇偶校驗(yàn)帶區(qū)的奇偶校驗(yàn)數(shù)據(jù)與當(dāng)前的數(shù)據(jù)再同步)、重構(gòu)(其中基于奇偶校驗(yàn)數(shù)據(jù)重新生成錯誤或丟失磁盤中的數(shù)據(jù))或者其它暴露模式的操作(諸如暴露模式的讀)相關(guān)聯(lián)的性能開銷。例如,再同步操作要求,對于磁盤陣列中所定義的每個奇偶校驗(yàn)帶區(qū),數(shù)據(jù)必須從所有磁盤中讀出并且用于通過下述操作求解奇偶校驗(yàn)帶區(qū)方程式,所述操作為將來自每個磁盤的數(shù)據(jù)乘以適當(dāng)值以及如乘積之和那樣對乘后得到的數(shù)據(jù)進(jìn)行異或以構(gòu)建奇偶校驗(yàn)帶區(qū)的奇偶校驗(yàn)值。此外,必須將作為求解該奇偶校驗(yàn)帶區(qū)方程式的結(jié)果計算得到的奇偶校驗(yàn)值寫到適當(dāng)?shù)拇疟P中。此外,由于RAID-6設(shè)計對于每個奇偶校驗(yàn)帶區(qū)依賴于兩個奇偶校驗(yàn)值,所以對于每個奇偶校驗(yàn)帶區(qū)前述處理通常必須執(zhí)行兩遍以生成兩個奇偶校驗(yàn)值并且將其寫到磁盤陣列中。
同樣,為重構(gòu)暴露的磁盤,每個奇偶校驗(yàn)帶區(qū)的數(shù)據(jù)必須從所有其它磁盤中讀出并且用來以與用于再同步的乘法操作及異或運(yùn)算類似的方式求解奇偶校驗(yàn)帶區(qū)方程式。求解奇偶校驗(yàn)帶區(qū)方程式的結(jié)果是被寫回到暴露磁盤中的數(shù)據(jù)。此外,對于諸如暴露模式的讀操作之類的其它暴露模式的操作,雖然無需將奇偶校驗(yàn)帶區(qū)方程式的結(jié)果存儲回磁盤陣列,但是必須執(zhí)行與重構(gòu)操作類似的處理。
但是,在這些暴露模式的操作的每個中,從某些磁盤讀數(shù)據(jù)以及向某些磁盤寫數(shù)據(jù)的需求導(dǎo)致相當(dāng)大的性能開銷,相對于磁盤陣列上各種磁盤訪問操作的順序本性來說尤其如此。因而非常需要一種提高諸如RAID-6系統(tǒng)的磁盤陣列系統(tǒng)的性能以提高關(guān)于再同步、重構(gòu)以及其它暴露模式的操作的性能的方式。
發(fā)明內(nèi)容
本發(fā)明通過許多技術(shù)解決了與現(xiàn)有技術(shù)相關(guān)聯(lián)的上述和其它問題,上述本發(fā)明的技術(shù)個別地或整體地增加關(guān)于訪問磁盤陣列中的磁盤的并行性,并且由此降低了與諸如再同步、重構(gòu)和暴露模式的讀操作之類的暴露模式的操作相關(guān)聯(lián)的性能開銷。
具體來講,根據(jù)本發(fā)明一個方面,提供了一種恢復(fù)包括多個磁盤的磁盤陣列中的數(shù)據(jù)的方法,該方法包括下述步驟從磁盤陣列中讀取與第一奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第一組數(shù)據(jù);向磁盤陣列中寫入通過處理該第一組數(shù)據(jù)而生成的結(jié)果值;以及在將該結(jié)果值寫入磁盤陣列的同時,從磁盤陣列中讀取與第二奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第二組數(shù)據(jù)。
根據(jù)本發(fā)明另一方面,提供了一種恢復(fù)包括多個磁盤的磁盤陣列中的數(shù)據(jù)的裝置,包括被配置成耦接到磁盤陣列中的多個磁盤的接口;以及耦接到該接口的磁盤陣列控制器,該磁盤陣列控制器被配置成通過下述操作恢復(fù)磁盤陣列中的數(shù)據(jù)從磁盤陣列中讀取與第一奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第一組數(shù)據(jù);向磁盤陣列中寫入通過處理該第一組數(shù)據(jù)而生成的結(jié)果值;以及在將該結(jié)果值寫入磁盤陣列的同時,從磁盤陣列中讀取與第二奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第二組數(shù)據(jù)。
例如,在一個方面,出于求解奇偶校驗(yàn)帶區(qū)方程式的目的對磁盤陣列中磁盤的訪問(例如,關(guān)于重構(gòu),暴露模式的讀或其它暴露模式的操作)可以通過僅選擇求解該奇偶校驗(yàn)帶區(qū)訪問所需的可能磁盤的子集、從而省略對一個或多個磁盤的訪問來優(yōu)化。通過這樣做,當(dāng)在特定時間段內(nèi)執(zhí)行多個這樣的操作時,只要為不同的操作選擇不同的磁盤子集通常就可以更好地平衡磁盤陣列中磁盤的利用率。
雖然可以使用其它磁盤陣列環(huán)境,但當(dāng)在其中通過兩個奇偶校驗(yàn)帶區(qū)方程式使奇偶校驗(yàn)帶區(qū)方程式中的數(shù)據(jù)相關(guān)的RAID-6環(huán)境中實(shí)施時,每個磁盤子集可以包括磁盤陣列的N個磁盤之中的N-2個磁盤。此外,雖然可以使用其它方式選擇磁盤子集,但在一個實(shí)施例中,可以使用隨機(jī)選擇機(jī)制從而隨機(jī)省略某些磁盤。
與本發(fā)明的該方面一致,可以訪問具有N個磁盤的磁盤陣列,從而,對于磁盤陣列中所定義的多個奇偶校驗(yàn)帶區(qū)的每個,從N個磁盤中選擇要用于求解這樣的奇偶校驗(yàn)帶區(qū)的奇偶校驗(yàn)帶區(qū)方程式的不同磁盤子集。然后可以啟動僅從下述奇偶校驗(yàn)帶區(qū)的所選擇的磁盤子集中檢索與每個奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的數(shù)據(jù)的操作,這樣檢索的數(shù)據(jù)用于求解該奇偶校驗(yàn)帶區(qū)的奇偶校驗(yàn)帶區(qū)方程式。此外每個所選擇的磁盤子集包括至多N-2個磁盤。
此外,在磁盤陣列系統(tǒng)中當(dāng)恢復(fù)磁盤陣列中的數(shù)據(jù)(例如,再同步奇偶校驗(yàn)和數(shù)據(jù),或者重構(gòu)暴露磁盤的數(shù)據(jù))時可以通過使與不同奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的數(shù)據(jù)訪問相交迭而增加并行性。特別地,與本發(fā)明這方面一致,恢復(fù)磁盤陣列的數(shù)據(jù)可以包括檢索與第一奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第一組數(shù)據(jù),接著與向磁盤陣列中寫入通過處理該第一組數(shù)據(jù)而生成的結(jié)果值,同時從磁盤陣列中讀取與第二奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第二組數(shù)據(jù)。與當(dāng)與恢復(fù)不同奇偶校驗(yàn)帶區(qū)的數(shù)據(jù)相關(guān)聯(lián)的訪問和操作被順序執(zhí)行時的情況相比,通過使與不同奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的讀和寫訪問相交迭,可以以較少的開銷恢復(fù)與多個奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的數(shù)據(jù)。
圖1是根據(jù)本發(fā)明的原理的、可以實(shí)現(xiàn)RAID-6存儲控制器的示例性計算機(jī)系統(tǒng)的框圖。
圖2是圖示圖1的RAID控制器的主要組件的框圖。
圖3描繪了根據(jù)本發(fā)明原理以交迭方式執(zhí)行恢復(fù)操作以提高RAID-6系統(tǒng)中磁盤陣列利用率的流程圖。
圖4描繪了根據(jù)本發(fā)明原理利用隨機(jī)選擇要訪問的磁盤來執(zhí)行暴露模式的讀操作以提高RAID-6系統(tǒng)中磁盤陣列利用率的流程圖。
具體實(shí)施例方式
下文中所討論的實(shí)施例利用兩種技術(shù)中的一個或者兩個來在諸如RAID-6環(huán)境之類的磁盤陣列環(huán)境中增加與恢復(fù)數(shù)據(jù)相關(guān)聯(lián)的并行性或者減少與恢復(fù)數(shù)據(jù)相關(guān)聯(lián)的開銷。下文中描述的一種技術(shù)關(guān)于諸如重構(gòu)或暴露模式的讀操作之類的操作選擇要訪問的磁盤的不同子集。下文中描述的另一種技術(shù)將與相對于多個奇偶校驗(yàn)帶區(qū)執(zhí)行的恢復(fù)操作相關(guān)聯(lián)的讀訪問和寫訪問交迭。
下文中給出了實(shí)現(xiàn)前述技術(shù)的磁盤陣列環(huán)境的多個實(shí)施例。但是,在討論這樣的實(shí)施例之前,首先提供RAID-6的背景簡述,隨后是對其中可以實(shí)現(xiàn)前述技術(shù)的示例性硬件環(huán)境的描述。
一般RAID-6背景這里用來描述RAID-6存儲系統(tǒng)的專用術(shù)語符合本領(lǐng)域最易于接受的標(biāo)準(zhǔn)。特別地,存在N個驅(qū)動器,其中任何兩個將被認(rèn)為是奇偶校驗(yàn)驅(qū)動器,P和Q。利用伽羅華域算術(shù),可以寫出兩個獨(dú)立公式α0d0+α0d1+α0d2+...+α0dN-1=0 (1)α0d0+α1d1+α2d2+...+αN-1dN-1=0(2)其中,這里所采用的“+”運(yùn)算符表示異或(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)在最后兩個公式的每個中,加號右邊的項(xiàng)是常數(shù)乘以數(shù)據(jù)中的變化(即,Δ)。公式(4)和(5)的這些項(xiàng)通常分別表示為K1Δ和K2Δ。
在一個磁盤丟失或不可用的情況下,可以采用簡單的XOR運(yùn)算來恢復(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圖示了可以實(shí)現(xiàn)RAID-6或其它磁盤陣列的示例性計算機(jī)系統(tǒng)。為了本發(fā)明的目的,裝置10可以實(shí)際上代表任何類型的計算機(jī)、計算機(jī)系統(tǒng)或者其它可編程的電子設(shè)備,包括客戶端計算機(jī)、服務(wù)器計算機(jī)、便攜式計算機(jī)、手持式計算機(jī)、嵌入式控制器等。此外,裝置10可以采用例如集群式或分布式計算系統(tǒng)中的一個或多個聯(lián)網(wǎng)的計算機(jī)來實(shí)現(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顯示面板和/或揚(yáng)聲器)。此外,用戶輸入可以經(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有利于實(shí)現(xiàn)磁盤陣列34中的RAID-6存儲保護(hù)。
計算機(jī)10在操作系統(tǒng)30的控制下運(yùn)行,并且執(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í)行,由此為實(shí)現(xiàn)計算機(jī)程序的功能所需的處理可以被分配到網(wǎng)絡(luò)上的多臺計算機(jī)上。
通常,為實(shí)現(xiàn)本發(fā)明實(shí)施例所執(zhí)行的例程(不管被實(shí)現(xiàn)為操作系統(tǒng)的一部分或者特定應(yīng)用程序,組件,程序,對象,模塊或者指令序列,或者甚至為其子集)本文中都稱之為“計算機(jī)程序代碼”或者簡稱“程序代碼”。程序代碼通常包括一個或多個指令,其在各個時間駐留于計算機(jī)中的各種存儲器或者存儲設(shè)備中,并且當(dāng)被計算機(jī)中的一個或多個處理器讀取并執(zhí)行時使得該計算機(jī)執(zhí)行下述步驟,這些步驟是執(zhí)行具體化本發(fā)明各個方面的步驟或者元件所必需的。此外,雖然本發(fā)明是在并且將繼續(xù)在完全運(yùn)行計算機(jī)和計算機(jī)系統(tǒng)功能的語境下描述的,但是本領(lǐng)域的技術(shù)人員將理解,本發(fā)明的各種實(shí)施例能夠作為各種形式的程序產(chǎn)品而分發(fā),并且不管用于實(shí)際攜帶該分發(fā)的計算機(jī)可讀信號承載介質(zhì)的具體類型如何本發(fā)明都同等適用。計算機(jī)可讀信號承載介質(zhì)的示例包括但不限于可記錄型介質(zhì)和諸如數(shù)字和模擬通信鏈路的傳輸型介質(zhì),可記錄型介質(zhì)例如其中有易失和非易失存儲設(shè)備、軟盤和其它可移動盤、硬盤驅(qū)動器、磁帶、光盤(例如,CD-ROM,DVD,等等)。
此外,下文中描述的各種程序代碼可以基于其中在本發(fā)明的特定實(shí)施例中實(shí)現(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,該程序代碼實(shí)現(xiàn)用于數(shù)據(jù)保護(hù)的RAID-6算法并且通常駐留于位于RAID控制器的存儲器中。特別地,要存儲到磁盤212-218上的數(shù)據(jù)被用來產(chǎn)生奇偶校驗(yàn)數(shù)據(jù),然后被拆開(break apart)并且分帶于磁盤212-218上。磁盤驅(qū)動器212-218可以是直接通過總線210耦接到控制器202的單獨(dú)磁盤驅(qū)動器或者可以包括其自身的磁盤驅(qū)動適配器,其允許一串單獨(dú)磁盤驅(qū)動器連接到存儲總線210。換言之,磁盤驅(qū)動器212可以在物理上實(shí)現(xiàn)為耦接到單個控制器的4或8個單獨(dú)磁盤驅(qū)動器,該單個控制器連接到總線210。當(dāng)數(shù)據(jù)在任一方向上在磁盤驅(qū)動器212-21 8和RAID控制器202之間交換時,提供緩沖器20以幫助數(shù)據(jù)傳輸。緩沖器206的使用有時可能在數(shù)據(jù)傳輸上產(chǎn)生瓶頸,并且眾多緩沖器的引入可能增加RAID控制202的成本、復(fù)雜性和尺寸。這樣,本發(fā)明的某些實(shí)施例涉及以經(jīng)濟(jì)有效的方式提供及利用這些緩沖器206。
應(yīng)該理解,圖1和圖2中所示的實(shí)施例本質(zhì)上僅是示例性的。例如,應(yīng)該理解,本發(fā)明可適用于除RAID-6環(huán)境外的磁盤陣列環(huán)境。還應(yīng)該理解,與本發(fā)明一致的磁盤陣列環(huán)境可以利用駐留于計算機(jī)的主存儲器中的完全軟件實(shí)現(xiàn)的控制算法,或者計算機(jī)或控制器中通過程序代碼操縱的某些功能可以以硬件邏輯電路實(shí)現(xiàn),反之亦然。因而,本發(fā)明不應(yīng)限于這里所討論的具體實(shí)施例。
增加RAID-6磁盤訪問中的并行性在RAID-6系統(tǒng)中,當(dāng)執(zhí)行諸如再同步奇偶校驗(yàn)和數(shù)據(jù)、重構(gòu)磁盤或者執(zhí)行暴露模式的讀之類的恢復(fù)操作時,必須執(zhí)行不同磁盤上的許多I/O操作以讀取可用數(shù)據(jù),如果適當(dāng)則將所恢復(fù)的數(shù)據(jù)存儲回到磁盤陣列中。在讀取特定奇偶校驗(yàn)帶區(qū)的數(shù)據(jù)之后,可以執(zhí)行適當(dāng)?shù)挠嬎阋曰謴?fù)磁盤陣列中磁盤上的數(shù)據(jù)或奇偶校驗(yàn)信息。本發(fā)明的實(shí)施例包括用于以最大化各種I/O操作的并行性以及更好平衡磁盤利用率的方式執(zhí)行這些操作的技術(shù)。
例如,已經(jīng)發(fā)現(xiàn),可以通過選擇性地省略磁盤陣列中關(guān)于各種恢復(fù)操作的、來自磁盤的訪問來獲得性能上的改進(jìn)。如前所述,RAID-6被設(shè)計成處理兩個磁盤失效,因而可以使用來自N-2個磁盤的數(shù)據(jù)求解上面的方程式(7)。如果兩個磁盤失效了,則可使用剩余的N-2個磁盤從方程式(7)恢復(fù)磁盤的數(shù)據(jù)。即使當(dāng)只有一個磁盤失效時,該磁盤的數(shù)據(jù)也可根據(jù)方程式(7)恢復(fù)。但是,請注意,應(yīng)該理解,在這樣的情況下,當(dāng)求解該方程式時可以省略來自磁盤之一的數(shù)據(jù)。
在RAID-5實(shí)現(xiàn)中,從給定磁盤恢復(fù)奇偶校驗(yàn)或數(shù)據(jù)的任何嘗試(例如,再同步奇偶校驗(yàn)和數(shù)據(jù)、重構(gòu)磁盤或者執(zhí)行暴露模式的讀)都要求訪問陣列中的所有其它磁盤。但是,已知RAID-6實(shí)現(xiàn)為求解一個奇偶校驗(yàn)帶區(qū)方程式并不需要來自所有其它磁盤的數(shù)據(jù),則我們發(fā)現(xiàn)關(guān)于求解這樣的方程式可能甚至不需要訪問一個磁盤。結(jié)果是,在與本發(fā)明一致的實(shí)施例中,可以期望省略對與檢索用于求解奇偶校驗(yàn)帶區(qū)的數(shù)據(jù)相關(guān)聯(lián)的一個或多個磁盤的訪問,由此降低了這些磁盤的總體利用率。
此外,雖然在需要求解一個奇偶校驗(yàn)帶區(qū)方程式的所有情形下都可以省略一個特定磁盤,但是通常期望,關(guān)于諸如磁盤重構(gòu)或者一系列暴露模式的讀操作之類的恢復(fù)操作,在求解不同奇偶校驗(yàn)帶區(qū)的奇偶校驗(yàn)帶區(qū)方程式時選擇不同的磁盤子集來省略。因而,與在恢復(fù)操作期間一個磁盤始終不被訪問的情況不同,可以執(zhí)行確定在給定恢復(fù)操作期間不使用哪個磁盤以便在所有磁盤中更好地平衡利用水平。
可以使用與本發(fā)明一致的各種方式選擇磁盤的不同子集。在一個實(shí)施例中,可以使用隨機(jī)選擇。但是,在其它實(shí)施例中,可以使用其它負(fù)載平衡型的算法,例如輪盤制(round robin)選擇。應(yīng)該理解,不同子集的選擇并不要求每個子集與所有其它子集不同,而是只要被包含到用于求解奇偶校驗(yàn)帶區(qū)方程式的子集中的磁盤不時發(fā)生變化(例如,對每個奇偶校驗(yàn)帶區(qū),或者對于奇偶校驗(yàn)帶區(qū)的子集),從而與每個奇偶校驗(yàn)帶區(qū)都省略相同一個或多個磁盤的情況相比更好地平衡了磁盤陣列中磁盤的利用率。
此外還發(fā)現(xiàn),關(guān)于各種恢復(fù)操作通過使與多個奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的磁盤訪問較低可以獲得性能上的改進(jìn)。例如,當(dāng)再同步奇偶校驗(yàn)帶區(qū)時,首先讀數(shù)據(jù)驅(qū)動器,然后將奇偶校驗(yàn)計算的結(jié)果寫到奇偶校驗(yàn)盤中。在常規(guī)的設(shè)計中,在正在讀數(shù)據(jù)驅(qū)動器期間,奇偶校驗(yàn)盤保持空閑。與本發(fā)明一致的實(shí)施例通過使與恢復(fù)數(shù)據(jù)到多個奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的讀操作和寫操作相交迭以減少給定磁盤陣列中的空閑時間而解決了該低效率的問題。除了RAID-6和類似環(huán)境外,本文所描述的交迭磁盤訪問也可以用在其它磁盤陣列環(huán)境中,例如,用在RAID-5環(huán)境中。
圖3中描繪了用于完成恢復(fù)操作(例如,再同步或重構(gòu)操作)的示例性方法的流程圖。根據(jù)該方法,用于兩個不同奇偶校驗(yàn)再同步操作的訪問被交織進(jìn)行(interleave),從而對奇偶校驗(yàn)和數(shù)據(jù)盤的訪問可以并行發(fā)生,因而減少了磁盤的空閑時間并且改進(jìn)了用于執(zhí)行重構(gòu)和再同步所花費(fèi)的時間。應(yīng)該理解,用于兩個或多個奇偶校驗(yàn)帶區(qū)的重構(gòu)操作以類似的方式進(jìn)行。
在圖3的流程圖中,數(shù)據(jù)磁盤上分布在奇偶校驗(yàn)帶區(qū)A中的一組數(shù)據(jù)用于計算奇偶校驗(yàn)帶區(qū)A的奇偶校驗(yàn)值P和Q。此外,數(shù)據(jù)磁盤上分布在奇偶校驗(yàn)帶區(qū)B中的一組數(shù)據(jù)用于計算奇偶校驗(yàn)帶區(qū)B的奇偶校驗(yàn)值P和Q。在步驟302中,執(zhí)行針對數(shù)據(jù)磁盤尤其是針對位于奇偶校驗(yàn)帶區(qū)A中區(qū)域的第一組讀操作以檢索用于計算奇偶校驗(yàn)帶區(qū)A的相應(yīng)奇偶校驗(yàn)值P的一組數(shù)據(jù)。同時,將第二組讀操作排隊(duì),該第二組讀操作將從分配于每個數(shù)據(jù)磁盤上的奇偶校驗(yàn)帶區(qū)B的區(qū)域中檢索一組不同的數(shù)據(jù),該組不同的數(shù)據(jù)用于計算奇偶校驗(yàn)帶區(qū)B的相應(yīng)的奇偶校驗(yàn)值B。一旦第一組讀操作完成,則在步驟304中,可以將奇偶校驗(yàn)帶區(qū)A的新奇偶校驗(yàn)值P寫到P奇偶校驗(yàn)盤中,同時通過磁盤陣列的其它磁盤執(zhí)行第二組讀操作。在步驟306中,執(zhí)行第三組讀操作——這時是第二次從奇偶校驗(yàn)帶區(qū)A檢索數(shù)據(jù)以生成奇偶校驗(yàn)值Q,并且同時將奇偶校驗(yàn)帶區(qū)B的奇偶校驗(yàn)值寫到P奇偶校驗(yàn)磁盤中。接下來,在步驟308中,執(zhí)行第四組讀操作以讀取來自奇偶校驗(yàn)帶區(qū)B的一組數(shù)據(jù),該組數(shù)據(jù)用于生成奇偶校驗(yàn)帶區(qū)B的奇偶校驗(yàn)值Q。在執(zhí)行這些后面的讀操作的同時將奇偶校驗(yàn)帶區(qū)A的奇偶校驗(yàn)值Q寫到Q奇偶校驗(yàn)盤中。最終在步驟310中,將奇偶校驗(yàn)帶區(qū)B的奇偶校驗(yàn)值Q寫到Q奇偶校驗(yàn)盤中。
通過根據(jù)該算法交迭再同步和重構(gòu)操作,更平等地利用奇偶校驗(yàn)盤和數(shù)據(jù)盤,這將提高再同步和重構(gòu)功能的性能。受益于本直接公開的本領(lǐng)域普通技術(shù)人員將注意到,前述算法可以應(yīng)用于交迭許多奇偶校驗(yàn)帶區(qū)之間的操作。
例如,圖4接下來圖示了用于完成暴露模式的讀操作以從暴露的磁盤取數(shù)據(jù)的示例性方法。根據(jù)該方法,圖示了用于對兩個奇偶校驗(yàn)帶區(qū)的兩個暴露的讀操作的訪問,其中一個這樣的訪問在步驟400中執(zhí)行,另一個訪問在步驟402中執(zhí)行。在這兩個操作中,N-2個磁盤的不同子集被從N-1個磁盤中隨機(jī)選出并且生成暴露磁盤的數(shù)據(jù),該N-1個磁盤包含來自奇偶校驗(yàn)帶區(qū)的可以用于求解奇偶校驗(yàn)帶區(qū)方程式的數(shù)據(jù)。結(jié)果是,在每個操作中,磁盤陣列中的一個磁盤將不被訪問,從而使得該磁盤空出來執(zhí)行其它操作(包括例如,處理交迭的訪問,諸如上面關(guān)于圖3討論的)。應(yīng)該理解,通過隨機(jī)地從一系列操作中省略不同磁盤將有助于在磁盤陣列上更好地平衡磁盤利用率,并因而提供總體系統(tǒng)吞吐量。應(yīng)該理解,重構(gòu)操作可以以類似的方式利用這樣的技術(shù)。
這樣,本發(fā)明的實(shí)施例在RAID-6或類似磁盤陣列環(huán)境中提供了一種方法和系統(tǒng),其使不同的磁盤訪問操作交織和/或選擇在執(zhí)行恢復(fù)操作時要使用的不同磁盤以平衡磁盤利用率并且減少等待時間(latency)。在不背離本發(fā)明的精神和范圍的條件下可以對所示的實(shí)施例進(jìn)行各種修改。因而,本發(fā)明在于所附的權(quán)利要求。
權(quán)利要求
1.一種恢復(fù)包括多個磁盤的磁盤陣列中的數(shù)據(jù)的方法,該方法包括下述步驟從磁盤陣列中讀取與第一奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第一組數(shù)據(jù);向磁盤陣列中寫入通過處理該第一組數(shù)據(jù)而生成的結(jié)果值;以及在將該結(jié)果值寫入磁盤陣列的同時,從磁盤陣列中讀取與第二奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第二組數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,還包括向磁盤陣列中寫入通過處理該第二組數(shù)據(jù)而生成的第二結(jié)果值;以及在將該第二結(jié)果值寫入磁盤陣列的同時,從磁盤陣列中讀取第三組數(shù)據(jù)。
3.如權(quán)利要求2所述的方法,其中所述第一和第二結(jié)果值是通過使用至少一個奇偶校驗(yàn)帶區(qū)方程式處理該第一和第二組數(shù)據(jù)而生成的。
4.如權(quán)利要求3所述的方法,其中,所述第三組數(shù)據(jù)與第一奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián),該方法還包括向磁盤陣列寫入通過使用第二奇偶校驗(yàn)帶區(qū)方程式處理第三組數(shù)據(jù)而生成的第三結(jié)果值。
5.如權(quán)利要求4所述的方法,還包括在將該第三結(jié)果值寫入磁盤陣列的同時,從磁盤陣列中讀取與第二奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第四組數(shù)據(jù);以及向磁盤陣列寫入通過使用第二奇偶校驗(yàn)帶區(qū)方程式處理第四組數(shù)據(jù)而生成的第四結(jié)果值。
6.如權(quán)利要求3所述的方法,其中所述第一和第二結(jié)果值每個包括奇偶校驗(yàn)值,并且寫入第一和第二結(jié)果值的操作被執(zhí)行來使第一和第二奇偶校驗(yàn)帶區(qū)的奇偶校驗(yàn)和數(shù)據(jù)同步。
7.如權(quán)利要求3所述的方法,其中所述第一和第二結(jié)果值每個包括數(shù)據(jù)值,并且寫入第一和第二結(jié)果值的操作被執(zhí)行來重構(gòu)磁盤陣列中磁盤的數(shù)據(jù)。
8.如權(quán)利要求2所述的方法,其中,所述第三組數(shù)據(jù)與第三奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)。
9.如權(quán)利要求1所述的方法,其中,所述向磁盤陣列中寫入結(jié)果值的步驟包括向磁盤陣列中的第一磁盤寫入結(jié)果值,并且從磁盤陣列讀取第二組數(shù)據(jù)的步驟包括從不包括該第一磁盤的磁盤陣列中的磁盤子集中讀取第二組數(shù)據(jù)。
10.一種恢復(fù)包括多個磁盤的磁盤陣列中的數(shù)據(jù)的裝置,包括被配置成耦接到磁盤陣列中的多個磁盤的接口;以及耦接到該接口的磁盤陣列控制器,該磁盤陣列控制器被配置成通過下述操作恢復(fù)磁盤陣列中的數(shù)據(jù)從磁盤陣列中讀取與第一奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第一組數(shù)據(jù);向磁盤陣列中寫入通過處理該第一組數(shù)據(jù)而生成的結(jié)果值;以及在將該結(jié)果值寫入磁盤陣列的同時,從磁盤陣列中讀取與第二奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第二組數(shù)據(jù)。
11.如權(quán)利要求10所述的裝置,其中所述磁盤陣列控制器包括RAID-6控制器。
12.如權(quán)利要求10所述的裝置,其中,所述磁盤陣列控制器被配置成執(zhí)行選擇不同子集、啟動數(shù)據(jù)的檢索和求解奇偶校驗(yàn)帶區(qū)方程式操作中的至少一個操作。
13.如權(quán)利要求10所述的裝置,還包括耦接到該接口的多個磁盤。
14.如權(quán)利要求10所述的裝置,其中,所述磁盤陣列控制器還被配置成執(zhí)行下述操作向磁盤陣列中寫入通過處理該第二組數(shù)據(jù)而生成的第二結(jié)果值,以及在將該第二結(jié)果值寫入磁盤陣列的同時,從磁盤陣列中讀取第三組數(shù)據(jù)。
15.如權(quán)利要求14所述的裝置,其中,所述磁盤陣列控制器被配置成通過使用至少一個奇偶校驗(yàn)帶區(qū)方程式處理該第一和第二組數(shù)據(jù)而生成該第一和第二結(jié)果值。
16.如權(quán)利要求15所述的裝置,其中,所述第三組數(shù)據(jù)與第一奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián),并且所述磁盤陣列控制器還被配置成向磁盤陣列寫入通過使用第二奇偶校驗(yàn)帶區(qū)方程式處理第三組數(shù)據(jù)而生成的第三結(jié)果值。
17.如權(quán)利要求16所述的裝置,其中所述磁盤陣列控制器還被配置成執(zhí)行下述操作在將該第三結(jié)果值寫入磁盤陣列的同時,從磁盤陣列中讀取與第二奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的第四組數(shù)據(jù),以及向磁盤陣列寫入通過使用第二奇偶校驗(yàn)帶區(qū)方程式處理第四組數(shù)據(jù)而生成的第四結(jié)果值。
18.如權(quán)利要求15所述的裝置,其中所述第一和第二結(jié)果值每個包括奇偶校驗(yàn)值,并且所述磁盤陣列控制器被配置成寫入第一和第二結(jié)果值以使第一和第二奇偶校驗(yàn)帶區(qū)的奇偶校驗(yàn)和數(shù)據(jù)同步。
19.如權(quán)利要求15所述的裝置,其中所述第一和第二結(jié)果值每個包括數(shù)據(jù)值,并且所述磁盤陣列控制器被配置成寫入第一和第二結(jié)果值以重構(gòu)磁盤陣列中磁盤的數(shù)據(jù)。
20如權(quán)利要求14所述的裝置,其中,所述第三組數(shù)據(jù)與第三奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)。
21.如權(quán)利要求10所述的裝置,其中所述磁盤陣列控制器被配置成通過向磁盤陣列中的第一磁盤寫入結(jié)果值而向磁盤陣列中寫入結(jié)果值,并且所述磁盤陣列控制器被配置成通過從不包括該第一磁盤的磁盤陣列中的磁盤子集中讀取第二組數(shù)據(jù)而從磁盤陣列讀取第二組數(shù)據(jù)。
全文摘要
在諸如RAID-6之類環(huán)境的磁盤陣列環(huán)境中,通過增加并行性減少了與諸如再同步、重構(gòu)、暴露模式的讀操作之類的暴露模式操作相關(guān)聯(lián)的總體性能開銷。通過僅選擇為求解特定奇偶校驗(yàn)帶區(qū)的奇偶校驗(yàn)帶區(qū)方程式所需的可能磁盤的子集,對磁盤陣列中的一個或多個磁盤的訪問可以被省略,從而使被省略的磁盤自由地執(zhí)行其它磁盤訪問。此外,可以使與不同奇偶校驗(yàn)帶區(qū)相關(guān)聯(lián)的磁盤訪問相交迭,以便能將為恢復(fù)一個奇偶校驗(yàn)帶區(qū)的數(shù)據(jù)所必需的數(shù)據(jù)的檢索與為另一奇偶校驗(yàn)帶區(qū)所恢復(fù)的數(shù)據(jù)的存儲同時執(zhí)行。
文檔編號G06F11/10GK101059751SQ20071010083
公開日2007年10月24日 申請日期2005年11月21日 優(yōu)先權(quán)日2004年11月19日
發(fā)明者卡爾·E·福漢, 羅伯特·E·蓋爾布雷斯, 阿德里安·C·格哈德 申請人:國際商業(yè)機(jī)器公司