一種基于e碼的磁盤(pán)陣列布局結(jié)構(gòu)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及計(jì)算機(jī)大容量存儲(chǔ)領(lǐng)域,尤其是設(shè)及一種不間斷的高容錯(cuò)磁盤(pán)陣列系 統(tǒng)。
【背景技術(shù)】
[0002] 在磁盤(pán)陣列中,數(shù)據(jù)是按照塊炬lock) 4、條紋單元(strip) 3、條紋(stripe) 2、區(qū) 間巧xtent) 1的邏輯層次組織起來(lái)的,如圖1所示。在確定數(shù)據(jù)存儲(chǔ)的基本單元--磁 盤(pán)數(shù)據(jù)塊炬lock)后,將存儲(chǔ)在一個(gè)磁盤(pán)成員上若干相繼的數(shù)據(jù)塊組織為一個(gè)條紋單元 (Strip),各個(gè)磁盤(pán)上相應(yīng)的條紋單元組成一個(gè)完整的條紋(Stripe),每個(gè)磁盤(pán)上地址連續(xù) 的條紋單元形成一個(gè)擴(kuò)展區(qū)間巧xtent),擴(kuò)展區(qū)間也稱為邏輯盤(pán)。每個(gè)條紋單元中包含的 基本數(shù)據(jù)塊炬lock)的數(shù)量稱為條紋的深度。若一個(gè)條紋單元的數(shù)據(jù)塊全部為冗余數(shù)據(jù), 則此條紋單元為校驗(yàn)條紋單位,若全部為源數(shù)據(jù),則稱為數(shù)據(jù)條紋單元,每個(gè)數(shù)據(jù)條紋中包 含的數(shù)據(jù)塊相等。則每個(gè)條紋單元的深度及同一個(gè)條紋中的條紋單元的關(guān)系由采用的磁 盤(pán)陣列數(shù)據(jù)布局的編碼來(lái)確定。若采用編碼為陣列碼,則每個(gè)條紋對(duì)應(yīng)一個(gè)二維陣列(碼 字),每個(gè)條紋單元對(duì)應(yīng)每個(gè)碼字的一列,每個(gè)Block對(duì)應(yīng)每個(gè)碼字的一個(gè)信息位或校驗(yàn) 位,而同一個(gè)條紋中條紋單元的成員關(guān)系由碼的編碼規(guī)則決定。
[000引發(fā)明技術(shù)方案
[0004] 本發(fā)明的目的是實(shí)現(xiàn)一種基于E碼的磁盤(pán)陣列布局結(jié)構(gòu),具有高的吞吐量、較好 的I/O性能W及簡(jiǎn)單的編碼和解碼算法的磁盤(pán)陣列數(shù)據(jù)布局。
[0005] 本發(fā)明的技術(shù)方案;一種基于E碼的磁盤(pán)陣列布局結(jié)構(gòu),其特征在于磁盤(pán)陣列中 總的盤(pán)數(shù)為n,同一個(gè)條紋中包含n個(gè)條紋單元,每個(gè)條紋單元的深度為n,及有n個(gè)數(shù)據(jù) 塊,并且每個(gè)條紋單元中既有冗余數(shù)據(jù)塊,也有源信息數(shù)據(jù)塊;所述同一條紋中的條紋單元 之間的關(guān)系由E碼編碼規(guī)則確定,所述E碼的一個(gè)碼字是磁盤(pán)陣列布局中的一個(gè)條紋。
[0006] 采用上述技術(shù)方案,E碼的二維碼字列數(shù)沒(méi)有具體限制,即可W是奇數(shù),也可W是 偶數(shù);即可W是素?cái)?shù),也可W是合數(shù)。該對(duì)于構(gòu)造一個(gè)基于E碼的磁盤(pán)陣列系統(tǒng)提供了極大 的普適性。同時(shí),E碼的編碼復(fù)雜度、更新復(fù)雜度雖然無(wú)法達(dá)到最優(yōu),但是都與冗余磁盤(pán)數(shù) t線性相關(guān)。并且E碼的平衡特性好,數(shù)據(jù)塊和校驗(yàn)塊均勻分布,將I/O請(qǐng)求分散到不同的 磁盤(pán)節(jié)點(diǎn)中,保證各個(gè)磁盤(pán)存儲(chǔ)節(jié)點(diǎn)的負(fù)載平衡,避免少數(shù)磁盤(pán)存儲(chǔ)節(jié)點(diǎn)超負(fù)荷上作而成 為瓶頸,提高了系統(tǒng)的整體性能。因此基于E碼磁盤(pán)陣列數(shù)據(jù)布局是一種具有高的吞吐量、 較好的I/O性能W及簡(jiǎn)單的編碼和解碼算法的磁盤(pán)陣列數(shù)據(jù)布局方案。
【附圖說(shuō)明】
[0007] 圖1為磁盤(pán)陣列數(shù)據(jù)布局組織層次示意圖。
[000引圖2為E碼的磁盤(pán)陣列布局構(gòu)成示意圖。
[0009]圖3為磁盤(pán)陣列系統(tǒng)的構(gòu)成示意圖。
【具體實(shí)施方式】
[0010] 下面結(jié)合具體實(shí)施例作進(jìn)一步詳述:
[0011] 如圖2、圖3所示,一種基于E碼的磁盤(pán)陣列系統(tǒng)的設(shè)計(jì)。在系統(tǒng)中包括n個(gè)磁 盤(pán),其中n> 4 ;n個(gè)磁盤(pán)中容量最小的為C字節(jié),在允許不多于t/2個(gè)磁盤(pán)出錯(cuò)的情況下 仍然能夠保證存儲(chǔ)數(shù)據(jù)的安全性并正常提供服務(wù),則所述磁盤(pán)陣列系統(tǒng)的有效存儲(chǔ)空間為 (n-t)XC字節(jié);每個(gè)磁盤(pán)的存儲(chǔ)空間劃分為512字節(jié)或4k字節(jié)大小的扇區(qū),各磁盤(pán)上相同 編號(hào)的扇區(qū)編組為一個(gè)條帶,所述磁盤(pán)陣列系統(tǒng)W條帶為單位進(jìn)行數(shù)據(jù)的讀寫(xiě)操作;每個(gè) 扇區(qū)的存儲(chǔ)空間均勻分成n個(gè)塊,前n-t塊存儲(chǔ)有效信息,作為信息塊,后t塊存儲(chǔ)校驗(yàn)信 息,作為校驗(yàn)塊;對(duì)條帶進(jìn)行寫(xiě)操作時(shí),通過(guò)容錯(cuò)編碼方法生產(chǎn)校驗(yàn)信息,有效信息存入信 息塊,校驗(yàn)信息存入校驗(yàn)塊;當(dāng)所述磁盤(pán)陣列系統(tǒng)出現(xiàn)磁盤(pán)錯(cuò)誤時(shí),通過(guò)錯(cuò)誤磁盤(pán)恢復(fù)方法 在提供不間斷服務(wù)的同時(shí)恢復(fù)錯(cuò)誤磁盤(pán)上的數(shù)據(jù)。
[001引如圖3所示,本磁盤(pán)陣列系統(tǒng)可由一臺(tái)PC機(jī)、若干硬磁盤(pán)和接口卡所構(gòu)成。系統(tǒng) 構(gòu)造的具體方法如下:
[0013] 硬盤(pán)分扇區(qū)條帶化;對(duì)硬盤(pán)按照扇區(qū)為單位進(jìn)行劃分,每個(gè)扇區(qū)為512字節(jié)或4k 字節(jié)。對(duì)系統(tǒng)中多塊硬盤(pán),W扇區(qū)為單位進(jìn)行編組,將不同硬盤(pán)上對(duì)應(yīng)位置的扇區(qū)編組為一 個(gè)條帶,系統(tǒng)W條帶為單位進(jìn)行數(shù)據(jù)的讀寫(xiě)。
[0014] 扇區(qū)分塊:對(duì)每個(gè)扇區(qū)分為n個(gè)大小相同的塊,其中n為磁盤(pán)陣列系統(tǒng)中的硬盤(pán) 數(shù)目。如果扇區(qū)大小為512字節(jié),那么當(dāng)n取值為2-且m<9時(shí)才能被512整除,該時(shí)每個(gè) 塊的大小為字節(jié);當(dāng)n取值不為2的整數(shù)次方時(shí),每個(gè)塊的大小為字節(jié),另有 512-L512/n」xn寺節(jié)空間無(wú)法被利用。
[0015] 編碼;如果我們希望系統(tǒng)能夠容許小于等于t/2個(gè)硬盤(pán)錯(cuò)誤,即在系統(tǒng)中有t/2個(gè) 硬盤(pán)出錯(cuò)時(shí)仍然能夠恢復(fù)出其中的全部信息,則在對(duì)硬盤(pán)扇區(qū)進(jìn)行分塊后,用每個(gè)扇區(qū)的 前n-t個(gè)塊存儲(chǔ)有效信息,稱為信息塊,后t個(gè)塊存儲(chǔ)校驗(yàn)信息,稱為校驗(yàn)塊。每個(gè)條帶內(nèi) 所有的信息塊串聯(lián)作為有效信息的存儲(chǔ)空間,而校驗(yàn)信息則通過(guò)前述
【發(fā)明內(nèi)容】
中的容錯(cuò)編 碼方法,由有效信息進(jìn)行編碼生成。一個(gè)條帶內(nèi)的有效存儲(chǔ)空間為512X (n-t)字節(jié),而存 儲(chǔ)校驗(yàn)信息的存儲(chǔ)空間為512Xt字節(jié)。
[0016] 系統(tǒng)的服務(wù)提供如下:
[0017] 無(wú)磁盤(pán)出錯(cuò)時(shí)的I/O讀寫(xiě);系統(tǒng)的I/O操作都是W條帶為單位進(jìn)行。當(dāng)系統(tǒng)需要 寫(xiě)入512X(n-t)字節(jié)信息時(shí),將該些信息分為512/n大小的nX(n-t)塊;在內(nèi)存中請(qǐng)求設(shè) 置512Xn字節(jié)大小的存儲(chǔ)空間,劃分為nXn塊,于一個(gè)條帶中nXn塊一一對(duì)應(yīng);分別依 次將nX(n-t)塊有效信息存儲(chǔ)到內(nèi)存空間中的塊。,。,塊。,1,塊。,2......塊。,。_1,塊1,。......塊 w-i,?!瓑K的-1,的,塊的-1,一;按照前述內(nèi)容中的容錯(cuò)編碼方法生成校驗(yàn)信息,存入塊。-t,。, ^ n-t, 1) ^ n-t,2......^ n-t,n-l) ^ n-t+1,0......^ n-1, 0......^ n-1, n-2) ^ n-1, n-1; ^ 0, i) ^ 1, i) ^ 2,1……塊。_1,1存入硬盤(pán)i中相應(yīng)扇區(qū),完成寫(xiě)入信息操作。當(dāng)系統(tǒng)需要讀取512X(n-t)字 節(jié)信息時(shí),則分別從各硬盤(pán)中讀取相應(yīng)的扇區(qū),將其中的信息塊串聯(lián),存入請(qǐng)求地址,完成 信息讀取操作。
[0018] 有磁盤(pán)出錯(cuò)時(shí)的I/O讀寫(xiě);當(dāng)有磁盤(pán)出錯(cuò),系統(tǒng)收到寫(xiě)入請(qǐng)求時(shí),操作與無(wú)磁盤(pán)出 錯(cuò)時(shí)的寫(xiě)入操作基本相同,只是無(wú)須向錯(cuò)誤磁盤(pán)寫(xiě)入數(shù)據(jù)。當(dāng)有磁盤(pán)出錯(cuò),系統(tǒng)收到讀取請(qǐng) 求時(shí),將完好硬盤(pán)的對(duì)應(yīng)扇區(qū)讀入內(nèi)存,按照前述
【發(fā)明內(nèi)容】
中的容錯(cuò)譯碼得到出錯(cuò)磁盤(pán)上 的信息塊,再將所有的信息塊串聯(lián),存入請(qǐng)求地址,完成信息讀取操作。
[0019] 錯(cuò)誤磁盤(pán)恢復(fù)時(shí)的I/O讀寫(xiě);當(dāng)系統(tǒng)中有硬盤(pán)出錯(cuò),管理員用新硬盤(pán)替換出錯(cuò)硬 盤(pán),并啟動(dòng)錯(cuò)誤恢復(fù)過(guò)程。當(dāng)系統(tǒng)收到寫(xiě)入請(qǐng)求時(shí),操作與無(wú)磁盤(pán)出錯(cuò)時(shí)的寫(xiě)入操作相同。 當(dāng)系統(tǒng)收到讀取請(qǐng)求時(shí),將完好硬盤(pán)的對(duì)應(yīng)扇區(qū)讀入內(nèi)存,按照前述
【發(fā)明內(nèi)容】
中的容錯(cuò)譯 碼得到出錯(cuò)磁盤(pán)上的信息塊,再將所有的信息塊串聯(lián),存入請(qǐng)求地址;然后按照前述發(fā)明內(nèi) 容中的容錯(cuò)編碼方法編碼得到出錯(cuò)磁盤(pán)上的校驗(yàn)塊,再將出錯(cuò)磁盤(pán)上的信息塊和校驗(yàn)塊一 并寫(xiě)入替換該出錯(cuò)磁盤(pán)的新磁盤(pán)上。
[0020] 在數(shù)據(jù)容錯(cuò)方面,本系統(tǒng)對(duì)條帶內(nèi)數(shù)據(jù)進(jìn)行編碼。對(duì)一個(gè)條帶內(nèi)的n個(gè)扇區(qū),將每 個(gè)扇區(qū)劃分為n等份,每一份稱為一個(gè)塊;如果我們希望系統(tǒng)能夠容許小于等于t/2個(gè)磁盤(pán) 錯(cuò)誤,則將每個(gè)扇區(qū)的前n-t塊設(shè)置為信息塊,存儲(chǔ)有效信息,后t塊設(shè)置為校驗(yàn)塊,存儲(chǔ)校 驗(yàn)信息。校驗(yàn)信息由一種類似于陣列碼的容錯(cuò)編碼方法生成。當(dāng)有部分硬盤(pán)出現(xiàn)故障時(shí), 系統(tǒng)可W使用余下的完好硬盤(pán)上對(duì)應(yīng)扇區(qū)的數(shù)據(jù)譯碼恢復(fù)出故障硬盤(pán)扇區(qū)上的有效數(shù)據(jù), 并且在整個(gè)編譯碼過(guò)程中僅僅需要異或操作,使得系統(tǒng)復(fù)雜度較低。
[0021] 在數(shù)據(jù)I/O方面,本系統(tǒng)能夠提供較好的I/O性能。當(dāng)需要讀取一個(gè)條帶的數(shù)據(jù) 時(shí),系統(tǒng)分別對(duì)各個(gè)硬盤(pán)發(fā)送讀取相應(yīng)扇區(qū)的命令,當(dāng)有n-t/2個(gè)硬盤(pán)響應(yīng)該請(qǐng)求并成功 讀取后,即可譯碼恢復(fù)出全部數(shù)據(jù)。相對(duì)于傳統(tǒng)方法,本系統(tǒng)避免了由于等待少數(shù)硬盤(pán)完成 I/O操作而造成的系統(tǒng)瓶頸。
[0022] 在數(shù)據(jù)恢復(fù)和服務(wù)提供方面,本系統(tǒng)能夠在恢復(fù)錯(cuò)誤磁盤(pán)的同時(shí)提供不間斷的讀 取服務(wù)。當(dāng)系統(tǒng)中出現(xiàn)磁盤(pán)故障時(shí),管理員用全新的硬盤(pán)替換錯(cuò)誤的硬盤(pán),并啟動(dòng)數(shù)據(jù)恢復(fù) 過(guò)程。之后當(dāng)系統(tǒng)接收到數(shù)據(jù)讀取請(qǐng)求時(shí),則僅讀取未出錯(cuò)的舊硬盤(pán)上相應(yīng)數(shù)據(jù),進(jìn)行譯碼 恢復(fù)數(shù)據(jù)并提供服務(wù)之后,重新編碼得到丟失的部分校驗(yàn)信息,并將存儲(chǔ)于錯(cuò)誤硬盤(pán)上的 數(shù)據(jù)存儲(chǔ)到新硬盤(pán)上,該樣就可W在提供服務(wù)的同時(shí)進(jìn)行出錯(cuò)數(shù)據(jù)的恢復(fù)。而當(dāng)系統(tǒng)空閑 一段時(shí)間之后,也可單獨(dú)進(jìn)行錯(cuò)誤磁盤(pán)的恢復(fù)。
【主權(quán)項(xiàng)】
1. 一種基于E碼的磁盤(pán)陣列布局結(jié)構(gòu),其特征在于磁盤(pán)陣列中總的盤(pán)數(shù)為n,同一個(gè)條 紋中包含n個(gè)條紋單元,每個(gè)條紋單元的深度為n,及有n個(gè)數(shù)據(jù)塊,并且每個(gè)條紋單元中既 有冗余數(shù)據(jù)塊,也有源信息數(shù)據(jù)塊;所述同一條紋中的條紋單元之間的關(guān)系由E碼編碼規(guī) 則確定,所述E碼的一個(gè)碼字是磁盤(pán)陣列布局中的一個(gè)條紋。
【專利摘要】本發(fā)明涉及計(jì)算機(jī)大容量存儲(chǔ)領(lǐng)域,尤其是涉及一種不間斷的高容錯(cuò)磁盤(pán)陣列系統(tǒng)。其技術(shù)方案為磁盤(pán)陣列中總的盤(pán)數(shù)為n,同一個(gè)條紋中包含n個(gè)條紋單元,每個(gè)條紋單元的深度為n,及有n個(gè)數(shù)據(jù)塊,并且每個(gè)條紋單元中既有冗余數(shù)據(jù)塊,也有源信息數(shù)據(jù)塊;所述同一條紋中的條紋單元之間的關(guān)系由E碼編碼規(guī)則確定,所述E碼的一個(gè)碼字是磁盤(pán)陣列布局中的一個(gè)條紋。E碼的二維碼字列數(shù)沒(méi)有具體限制,即可以是奇數(shù),也可以是偶數(shù);即可以是素?cái)?shù),也可以是合數(shù)。這樣一個(gè)基于E碼的磁盤(pán)陣列系統(tǒng)提供了極大的普適性。是一種具有高的吞吐量、較好的I/O性能以及簡(jiǎn)單的編碼和解碼算法的磁盤(pán)陣列數(shù)據(jù)布局方案。
【IPC分類】G06F3/06
【公開(kāi)號(hào)】CN104881252
【申請(qǐng)?zhí)枴緾N201510264157
【發(fā)明人】吳德理, 孫宣東, 劉澤
【申請(qǐng)人】東莞天意電子有限公司
【公開(kāi)日】2015年9月2日
【申請(qǐng)日】2015年5月21日