專利名稱:一種雙磁盤容錯的節(jié)能型磁盤陣列的構(gòu)建方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種獨立磁盤冗余陣列(Redundant Arrays of IndependentDisks, RAID)的構(gòu)建方法,特別涉及一種雙磁盤容錯的節(jié)能型磁盤陣列的構(gòu)建方法,適用于連續(xù)數(shù) 據(jù)存儲,屬于獨立磁盤冗余陣列技術(shù)領(lǐng)域。
背景技術(shù):
在現(xiàn)代存儲領(lǐng)域,為了提高存儲數(shù)據(jù)的可靠性和改善存儲系統(tǒng)的輸入、輸出性能, 人們設(shè)計了多種數(shù)據(jù)存儲方案,這些數(shù)據(jù)存儲方案通常是各種類型的獨立磁盤冗余陣列 (Redundant Arrays of Independent Disks,RAID)。通過使用特定的硬件或軟件,RAID 把 多個物理存儲設(shè)備如磁盤,聯(lián)合起來,形成一個統(tǒng)一的邏輯存儲設(shè)備。下面對RAID中常用的技術(shù)術(shù)語進(jìn)行解釋條帶又稱為Stripe ;是磁盤陣列的不同磁盤上的位置相關(guān)的分塊的集合,是組 織不同磁盤上條塊的單位。條帶化又稱為Striping ;是指把一段連續(xù)數(shù)據(jù)分割成相同大小的數(shù)據(jù)塊,把每 段數(shù)據(jù)分別寫入到磁盤陣列的不同磁盤上的方法。磁盤鏡像是指復(fù)制源數(shù)據(jù)到一個或更多的磁盤上。錯誤修正是指利用某種運算,如異或運算,生成并保存冗余數(shù)據(jù),可利用冗余數(shù) 據(jù),再生磁盤上丟失或出錯的數(shù)據(jù)。比較常用的 RAID 有 RAID 0、RAID 1、RAID 5、RAID 6、RAID 10 等。其中 RAID 0 不具有冗余能力,RAID 1只是對磁盤做了鏡像,其它3種陣列分別由多個磁盤組成,它們以 條帶的方式向陣列中的磁盤寫數(shù)據(jù),校驗數(shù)據(jù)存放在陣列中的各個磁盤上。RAID 5的每個 條帶含有1個校驗塊,支持任意損壞其中一個磁盤、通過其它磁盤上的校驗塊來重建數(shù)據(jù); RAID 6的每個條帶含有2個校驗塊,支持任意損壞其中兩個磁盤、通過其它磁盤上的校驗 塊來恢復(fù)數(shù)據(jù);RAID 10是先對磁盤組進(jìn)行鏡像,再對磁盤進(jìn)行條帶化,所以其不含奇偶校 驗塊,當(dāng)一個磁盤損壞后通過其對應(yīng)的鏡像盤恢復(fù)數(shù)據(jù),理想狀態(tài)下最多允許不同位置下 50%的磁盤損壞,最糟糕的情況是同一對鏡像磁盤同時損壞。P+Q方式的RAID 6對同條帶內(nèi)的數(shù)據(jù)塊進(jìn)行異或運算,生成本條帶的校驗數(shù)據(jù)P, 利用伽羅華域(GF)的乘法和加法(異或運算),生成本條帶的校驗數(shù)據(jù)Q,假設(shè)條帶內(nèi)的數(shù) 據(jù)塊為Dtl和D1,可用式1、式2分別生成校驗塊P和Q :
權(quán)利要求
1. 一種雙磁盤容錯的節(jié)能型磁盤陣列的構(gòu)建方法,其特征在于,包括以下步驟一、對磁盤陣列進(jìn)行條帶、數(shù)據(jù)塊、校驗塊和數(shù)據(jù)子塊的劃分和布局,具體方法為在磁 盤陣列包含N個磁盤的場景中,其中N彡4且N為正整數(shù);將N個磁盤構(gòu)造成1行XN列的 磁盤矩陣;對全部磁盤進(jìn)行條帶劃分,分成N個條帶并為每個條帶順序編號,每個條帶上有 N個存儲塊,其中1個為P校驗塊,1個為Q校驗塊,另外N-2個為數(shù)據(jù)塊,校驗塊P由相同 條帶內(nèi)的N-2個數(shù)據(jù)塊進(jìn)行異或運算得出,校驗塊Q由相同條帶內(nèi)的N-2個數(shù)據(jù)塊進(jìn)行伽 羅華域乘法和加法得出,校驗塊P和Q的生成公式如下尸=D0十D1十…十^V2(1)
2.如權(quán)利要求1所述的一種雙磁盤容錯的節(jié)能型磁盤陣列的構(gòu)建方法,其特征在于 僅進(jìn)行連續(xù)讀操作時,校驗塊P、Q所在磁盤停止工作。
3.如權(quán)利要求1所述的一種雙磁盤容錯的節(jié)能型磁盤陣列的構(gòu)建方法,其特征在于 所述方法進(jìn)一步包括寫操作的優(yōu)化處理方法,具體為設(shè)立一個新數(shù)據(jù)緩沖區(qū),緩存應(yīng)用程序?qū)懭腙嚵械男聰?shù)據(jù);兩個新校驗數(shù)據(jù)緩沖區(qū),分 別緩存生成的兩類新校驗數(shù)據(jù);一個舊數(shù)據(jù)預(yù)讀區(qū),存放從陣列中預(yù)讀的舊數(shù)據(jù);兩個舊 校驗數(shù)據(jù)預(yù)讀區(qū),分別存放從陣列中預(yù)讀的兩類舊校驗數(shù)據(jù),新數(shù)據(jù)子塊對應(yīng)的舊數(shù)據(jù)子 塊、相同校驗條的兩種舊校驗數(shù)據(jù)子塊在寫操作前被預(yù)讀到對應(yīng)的預(yù)讀區(qū); 進(jìn)行以下操作步驟生成新校驗數(shù)據(jù)P 第2. 1步當(dāng)新數(shù)據(jù)緩沖區(qū)不為空時,從新數(shù)據(jù)緩沖區(qū)中取出數(shù)據(jù)子塊D,寫入對應(yīng)數(shù) 據(jù)磁盤,同時送往異或器;第2. 2步舊數(shù)據(jù)預(yù)讀區(qū)中對應(yīng)的舊數(shù)據(jù)子塊D'送往異或器,與第2. 1步送來的寫數(shù) 據(jù)子塊D進(jìn)行異或運算,生成差異數(shù)據(jù)子塊X ;第2. 3步差異數(shù)據(jù)子塊X送往異或器,舊校驗數(shù)據(jù)預(yù)讀區(qū)1中對應(yīng)的舊校驗數(shù)據(jù)子塊 P',送往異或器,異或運算生成新校驗數(shù)據(jù)子塊P,暫存到新校驗數(shù)據(jù)緩沖區(qū)1 ;第2. 4步更新對應(yīng)校驗條中的舊校驗數(shù)據(jù)子塊P'為新校驗數(shù)據(jù)子塊P ; 進(jìn)行以下操作步驟生成新校驗數(shù)據(jù)Q 第3. 1步當(dāng)新數(shù)據(jù)緩沖區(qū)不為空時,從新數(shù)據(jù)緩沖區(qū)中取出數(shù)據(jù)子塊D,伽羅華乘以 對應(yīng)的系數(shù)Ad后,積Ad*D送往異或器;第3. 2步舊數(shù)據(jù)預(yù)讀區(qū)中對應(yīng)的舊數(shù)據(jù)子塊D',伽羅華乘以對應(yīng)的系數(shù)Ad后,積 Ad*D'送往異或器,與第3. 1步送來的積Ad*D進(jìn)行異或運算,生成差異數(shù)據(jù)子塊X* ;第3. 3步差異數(shù)據(jù)子塊X*送往異或器,舊校驗數(shù)據(jù)預(yù)讀區(qū)2中對應(yīng)的舊校驗數(shù)據(jù)子 塊Q',送往異或器,與X*異或生成新校驗數(shù)據(jù)子塊Q,暫存到新校驗數(shù)據(jù)緩沖區(qū)2 ; 第3. 4步更新對應(yīng)校驗條中的舊校驗數(shù)據(jù)子塊Q'為新校驗數(shù)據(jù)子塊Q ; 由于可以從預(yù)讀區(qū)直接讀取舊數(shù)據(jù)與舊校驗數(shù)據(jù),磁盤就可以連續(xù)執(zhí)行寫操作,只有 預(yù)讀區(qū)中的數(shù)據(jù)用完后,才進(jìn)行一次預(yù)讀來填滿預(yù)讀區(qū),通過預(yù)讀,多個分散的讀操作被 轉(zhuǎn)換為一個連續(xù)的讀操作,減少了磁頭的尋道移動次數(shù),預(yù)讀區(qū)越大,越能提高磁盤陣列 S-RAID 6的寫性能,預(yù)讀區(qū)的極限就是存儲塊X(i,j)的大小,可以根據(jù)實際情況設(shè)置預(yù)讀 區(qū)為足夠大。
4.如權(quán)利要求3所述的一種雙磁盤容錯的節(jié)能型磁盤陣列的構(gòu)建方法,其特征在于 舊數(shù)據(jù)預(yù)讀區(qū)和舊校驗數(shù)據(jù)預(yù)讀區(qū)大小相等,并且遠(yuǎn)大于新數(shù)據(jù)緩沖區(qū)。
5.如權(quán)利要求3所述的一種雙磁盤容錯的節(jié)能型磁盤陣列的構(gòu)建方法,其特征在于 新校驗數(shù)據(jù)緩沖區(qū)和新數(shù)據(jù)緩沖區(qū)大小相等。
6.如權(quán)利要求1至5任一項所述的一種雙磁盤容錯的節(jié)能型磁盤陣列的構(gòu)建方法,其 特征在于所述方法進(jìn)一步包括對故障磁盤進(jìn)行數(shù)據(jù)讀寫的處理方法;具體為 當(dāng)有磁盤出現(xiàn)故障,無法進(jìn)行正常數(shù)據(jù)讀寫時,此時令磁盤陣列S-RAID 6中所有磁盤 進(jìn)入就緒狀態(tài),暫停使用所述磁盤工作狀態(tài)控制方法控制磁盤陣列S-RAID 6的工作狀態(tài); 以條帶為單位,討論條帶中存儲塊出現(xiàn)故障時的處理方法,因為磁盤故障,表現(xiàn)為磁盤 陣列分布在該故障磁盤上的所有存儲塊故障,對磁盤故障的處理,可通過分別處理陣列中 每個條帶上的存儲塊故障實現(xiàn);一個條帶中的存儲塊出現(xiàn)故障時,可分為以下3種情況進(jìn)行處理 情況1 如果僅校驗塊出現(xiàn)故障,繼續(xù)讀寫數(shù)據(jù)塊上的數(shù)據(jù),但此時處于單重冗余數(shù)據(jù) 校驗狀態(tài)即1個校驗塊故障或無冗余數(shù)據(jù)校驗狀態(tài)即2個校驗塊故障;更換故障校驗塊所 在磁盤后,重新生成校驗塊;情況2 如果僅1個或2個數(shù)據(jù)塊出現(xiàn)故障,對讀、寫操作分別處理 讀操作利用同條帶的其它數(shù)據(jù)塊在1個數(shù)據(jù)塊故障時與本條帶的校驗塊P或Q運算, 或在2個數(shù)據(jù)塊故障時與P和Q運算,生成該數(shù)據(jù)塊上被讀出的數(shù)據(jù);更換故障數(shù)據(jù)塊所在 磁盤后,使用相同的方法恢復(fù)故障數(shù)據(jù)塊; 寫操作有2種處理方式第1種處理方式在1個數(shù)據(jù)塊故障時,直接將寫數(shù)據(jù)寫到本條帶的P或Q上;2個數(shù) 據(jù)塊故障時,將寫數(shù)據(jù)寫到本條帶的P和Q上,并記錄寫入的校驗塊,更換故障數(shù)據(jù)塊所在 磁盤后,進(jìn)行數(shù)據(jù)還原和再生校驗數(shù)據(jù);數(shù)據(jù)還原即把寄存在校驗塊中的數(shù)據(jù)塊移回到原 來位置,再生校驗數(shù)據(jù)是重新生成記錄的寫入校驗塊;第2種處理方式使用備用盤來暫存寫往故障磁盤上的數(shù)據(jù),當(dāng)更換故障磁盤后,再把 寄存在備用盤中的數(shù)據(jù)塊移回到原來位置;情況3 如果1個數(shù)據(jù)塊和1個校驗塊出現(xiàn)故障,故障數(shù)據(jù)塊的處理方法與僅1個數(shù)據(jù) 塊出現(xiàn)故障時相同,只是此時處于單重冗余數(shù)據(jù)保護(hù)狀態(tài);故障數(shù)據(jù)塊恢復(fù)后,對與故障校 驗塊的處理方法,與僅1個校驗塊出現(xiàn)故障時相同;當(dāng)轉(zhuǎn)入正常狀態(tài)后,再次啟用所述磁盤工作狀態(tài)控制方法對磁盤陣列S-RAID 6的工 作狀態(tài)進(jìn)行控制。
全文摘要
本發(fā)明涉及一種雙磁盤容錯的節(jié)能型磁盤陣列的構(gòu)建方法,適用于連續(xù)數(shù)據(jù)存儲,屬于獨立磁盤冗余陣列技術(shù)領(lǐng)域。本發(fā)明針對連續(xù)數(shù)據(jù)存儲的特點,設(shè)計實現(xiàn)一種雙磁盤容錯的節(jié)能型磁盤陣列S-RAID 6,主要包括對磁盤陣列進(jìn)行條帶、數(shù)據(jù)塊、校驗塊和數(shù)據(jù)子塊的劃分和布局;磁盤工作狀態(tài)轉(zhuǎn)換調(diào)度策略;寫數(shù)據(jù)時的優(yōu)化處理方法;故障磁盤處理方法等。磁盤陣列S-RAID 6不但具有優(yōu)良的冗余數(shù)據(jù)保護(hù)機制,而且能顯著降低功耗,延長磁盤使用壽命。
文檔編號G06F3/06GK102033716SQ201010575578
公開日2011年4月27日 申請日期2010年12月1日 優(yōu)先權(quán)日2010年12月1日
發(fā)明者周澤湘, 孫志卓, 張偉濤, 李艷國, 潘興旺, 王道邦, 章珉, 譚毓安 申請人:北京同有飛驥科技股份有限公司