国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種消除局部并行中小寫操作的雙盤容錯盤陣列的制作方法

      文檔序號:10569675閱讀:421來源:國知局
      一種消除局部并行中小寫操作的雙盤容錯盤陣列的制作方法
      【專利摘要】本發(fā)明涉及一種消除局部并行中小寫操作的雙盤容錯盤陣列Ripple?RAID 6的構(gòu)建方法,適用于連續(xù)數(shù)據(jù)存儲,屬于獨立硬盤冗余陣列技術(shù)領(lǐng)域。本發(fā)明針對連續(xù)數(shù)據(jù)存儲的特點,設(shè)計實現(xiàn)一種可消除局部并行中小寫操作的雙盤容錯分布校驗式硬盤陣列Ripple?RAID 6,主要包括:存儲數(shù)據(jù)在Ripple?RAID 6上的布局方式、基于流水技術(shù)漸進生成校驗的寫操作方法、數(shù)據(jù)容錯等內(nèi)容。硬盤陣列Ripple?RAID 6在雙盤容錯條件下,既保持了局部并行的節(jié)能性,又解決了局部并行帶來的小寫問題,能夠極大提高寫性能和整體性能,具有突出的節(jié)能效率。
      【專利說明】
      一種消除局部并行中小寫操作的雙盤容錯盤陣列
      技術(shù)領(lǐng)域
      [0001] 本發(fā)明涉及一種消除局部并行中小寫操作的雙盤容錯盤陣列的構(gòu)建方法,適用于 連續(xù)數(shù)據(jù)存儲,屬于獨立硬盤冗余陣列技術(shù)領(lǐng)域。
      【背景技術(shù)】
      [0002] 硬盤包括磁盤和固態(tài)盤(Solid State Disk,SSD),由于磁盤是海量數(shù)據(jù)存儲的主 體,因此這里的硬盤主要指磁盤。
      [0003] 為了提高存儲數(shù)據(jù)的安全性,改善存儲系統(tǒng)的輸入、輸出性能,人們設(shè)計了各種類 型的獨立硬盤冗余陣列(Redundant Arrays of Independent Disks JAIDhRAID技術(shù)使用 特定的硬件或軟件,把多個物理存儲設(shè)備如磁盤、SSD聯(lián)合起來,形成一個統(tǒng)一的邏輯存儲 設(shè)備。
      [0004] RAID中常用的技術(shù)術(shù)語如下:
      [0005] 條帶:硬盤陣列中不同盤上的位置相關(guān)的分塊的集合,是組織不同盤上條塊的單 位。
      [0006] 條帶化:把一段連續(xù)數(shù)據(jù)分割成相同大小的數(shù)據(jù)塊,把每塊數(shù)據(jù)分別寫入到硬盤 陣列的不同盤上的方法。
      [0007] 鏡像:把原數(shù)據(jù)復(fù)制到一個或更多盤上。
      [0008] 容錯:利用某種運算,如異或運算,生成冗余的校驗數(shù)據(jù)并保存。當(dāng)硬盤出現(xiàn)故障 丟失數(shù)據(jù)時,可利用校驗數(shù)據(jù)進行數(shù)據(jù)恢復(fù)。
      [0009] 單盤容錯:利用校驗數(shù)據(jù)和其它盤上的數(shù)據(jù),可恢復(fù)RAID中任意1塊故障盤上的數(shù) 據(jù)。常見的單盤容錯RAID有RAID 4和RAID 5。
      [0010] 雙盤容錯:利用校驗數(shù)據(jù)和其它盤上的數(shù)據(jù),可恢復(fù)RAID中任意2塊故障盤上的數(shù) 據(jù)。常見的雙盤容錯RAID有RAID 6。
      [0011] 分布校驗:校驗數(shù)據(jù)按一定規(guī)律分布在構(gòu)成RAID的各個盤上。
      [0012] 局部并行:陣列中僅部分硬盤并行,而不是全部硬盤并行,能夠提供合適的性能, 并且便于調(diào)度其余硬盤待機節(jié)能。
      [0013] RAID中的寫操作:分為3種情況,①寫數(shù)據(jù)恰好與RAID中的整個條帶對齊,稱為完 全寫;②寫數(shù)據(jù)不能覆蓋整個條帶,但不少于整個條帶的1/2時,稱為重構(gòu)寫;③寫數(shù)據(jù)不足 整個條帶1/2時,稱為小寫,也叫"讀-改-寫",寫新數(shù)據(jù)時需要先讀取對應(yīng)的舊數(shù)據(jù)、舊校驗 數(shù)據(jù),與新數(shù)據(jù)一起生成新校驗數(shù)據(jù)后,再寫入新校驗數(shù)據(jù)。
      [0014] P+Q方式的RAID 6的校驗生成方法為:P+Q方式的RAID 6對同條帶內(nèi)的數(shù)據(jù)進行異 或運算,生成該條帶的校驗數(shù)據(jù)P;然后利用伽羅華域(GF)的乘法和加法(異或運算),生成 該條帶的校驗數(shù)據(jù)Q。假設(shè)條帶內(nèi)的數(shù)據(jù)塊為Do和Db則校驗塊P、Q的計算公式如公式(1)和 公式(2)所示。
      [0015] P C1)
      [0016] Q=(A0*D0)?(A1 *A) (2)
      [0017] 其中,?表示異或運算,*表示伽羅華域乘法,如、&為互異的伽羅華域乘法系數(shù)。
      [0018] P+Q方式的RAID 6的數(shù)據(jù)恢復(fù)過程具體為:
      [0019] 磁盤陣列中任意2±夬磁盤出現(xiàn)故障,可利用公式(1)和公式⑵進行數(shù)據(jù)恢復(fù),具體 如下:
      [0020] 1:校驗塊P、Q所在磁盤出現(xiàn)故障,只需由同條帶內(nèi)的數(shù)據(jù)塊,分別按照生成P、Q的 公式(1)、式公(2),計算出P、Q即可;
      [0021 ] 2:校驗塊Q與任一數(shù)據(jù)塊所在磁盤出現(xiàn)故障,不妨設(shè)該數(shù)據(jù)塊為Di,首先利用校驗 塊P恢復(fù)Di,由式(1)推導(dǎo)得到公式(3)。
      [0022] = P@D(t (3)
      [0023]異或運算性質(zhì):〇= Mm恢復(fù)后,再利用公式(2)恢復(fù)校驗塊Q; [0024] 3:校驗塊P與任一數(shù)據(jù)塊所在磁盤出現(xiàn)故障,不妨設(shè)該數(shù)據(jù)塊為Di,首先利用校驗 塊Q恢復(fù)Di,由公式(2)推導(dǎo)得到公式(4)。
      [0025] ;(4 *^) = (,40*Ba)mQ;
      [0026] 所以恢復(fù)0:如下:
      [0027] D, = (4 * Dj) / 4 - [(-40 * A) ? 01f A (4)
      [0028] 其中,/為伽羅華除法成功恢復(fù)后,再利用式(1)恢復(fù)校驗塊P。
      [0029] 4:任意2個數(shù)據(jù)塊所在磁盤出現(xiàn)故障,不妨設(shè)這兩個數(shù)據(jù)塊為DdPDi,由式(1)得 D, = ,把Dl代入式⑵得到公式⑶。
      [0030] P ? )]二[(4 十八" ] ? ( 4 * 廠) (「))
      [0031] *對?滿足分配律;公式(5)與Do相關(guān),并且不包含Di,利用公式(5)求解Do如公式 (6)和公式(7)所示。
      [0032] =(々=尸)十 0 (6)
      [0033] IV 二丨.(冬*乃?0]44串4) (7)
      [0034] Do恢復(fù)后,再利用公式(1)恢復(fù)Di。
      [0035] RAID 6具有雙磁盤容錯特性,并且具有良好的綜合性能,適合對數(shù)據(jù)安全性、性能 要求均較高的領(lǐng)域。視頻監(jiān)控、備份、歸檔等連續(xù)數(shù)據(jù)存儲應(yīng)用,以順序數(shù)據(jù)訪問為主,對隨 機性能要求較低,不需要RAID 6等陣列全局并行提供的高性能。為此,發(fā)明專利 ZL201010256899.5、ZL201010256665. (KZL201010256711.7、ZL201010256908.0、 ZL201010256679.2、ZL201010256699.X、ZL201010575578.1、ZL201010575625.2、 ZL201010575611.0等提出多種局部并行數(shù)據(jù)布局,把采用該類局部并行數(shù)據(jù)布局的節(jié)能 RAID 統(tǒng)稱為 S-RAID。
      [0036] S-RAID基本思想是:①把陣列中的存儲區(qū)分成若干組,組內(nèi)并行以提供合適的性 能,分組便于調(diào)度部分硬盤運行而其余硬盤待機節(jié)能;②采用貪婪編址法,在順序訪問模式 下,保證讀寫操作在較長時間內(nèi)分布在部分確定的硬盤上,其它硬盤可以長時間待機節(jié)能。 [0037] S-RAID基本執(zhí)行小寫操作,原因如下:局部并行節(jié)能的核心是把讀寫操作集中在 部分并行工作的硬盤上,從而調(diào)度其它硬盤待機節(jié)能。小寫可有效減少活動硬盤的數(shù)量,即 使有機會執(zhí)行重構(gòu)寫,也依然會執(zhí)行小寫,因為重構(gòu)寫需要啟動所有硬盤,會使S-RAID喪失 節(jié)能性。小寫中寫操作引入了等量的、額外的讀操作,因此嚴(yán)重降低寫性能。
      [0038] S-RAID主要面向視頻監(jiān)控、備份、歸檔等連續(xù)數(shù)據(jù)存儲應(yīng)用,該類應(yīng)用以寫操作為 主,這導(dǎo)致S-RAID的小寫問題異常突出。小寫使S-RAID中單位硬盤的有效寫帶寬,極限值 (100%順序?qū)憰r)不到其最大寫帶寬的一半。為了提供額定的寫性能,S-RAID必須運行更多 硬盤彌補小寫帶來的性能損失,會消耗更多能量,其節(jié)能效率亟待提高。

      【發(fā)明內(nèi)容】

      [0039] 本發(fā)明的目的是克服已有技術(shù)存在的不足,在提高存儲系統(tǒng)節(jié)能效率、改善存儲 性能的前提下,提出一種消除局部并行中小寫操作的雙盤容錯盤陣列。消除局部并行中小 寫操作的雙盤容錯盤陣列,記作Ripple-RAID 6。
      [0040] 本發(fā)明的目的是通過下述技術(shù)方案實現(xiàn)的。
      [0041] 本發(fā)明提出的一種消除局部并行中小寫操作的雙盤容錯盤陣列,記作Ripple-RAID 6,其結(jié)構(gòu)布局為:
      [0042] 硬盤陣列Ripple-RAID 6包含N塊硬盤,N彡4且為正整數(shù)。每個硬盤平均分成kXN+ 1個存儲塊,k為大于0的整數(shù)(一般在1到幾十范圍內(nèi)取值),各盤中偏移量相同的N個存儲塊 組成1個條帶,共組成kXN+1個條帶,任取其中1個條帶作為影子條帶,其余為基本條帶。
      [0043] 每個基本條帶包含2個校驗存儲塊(簡稱校驗塊),分別為P校驗塊和Q校驗塊,N-2 個數(shù)據(jù)存儲塊(簡稱數(shù)據(jù)塊)。當(dāng)j小于N-1時,基本條帶i中的P校驗塊位于硬盤N-2-j,Q校驗 塊位于硬盤N-1-j;當(dāng)j等于N-1時,P校驗塊位于硬盤N-1,Q校驗塊位于硬盤0,這里0<i〈(k XN),j = i MOD N(M0D為模運算)。
      [0044] 每個數(shù)據(jù)塊、校驗塊進一步劃分為M個大小相等的子塊,每個子塊包含若干個地址 連續(xù)的扇區(qū),分別稱為數(shù)據(jù)子塊(記作Strip)、P校驗子塊(記作PStrip)、Q校驗子塊(記作 QStrip)。每個基本條帶中偏移量相同的子塊組成一個子條帶(記作Stripe ),這樣每個基本 條帶包含M個大小相同的子條帶。
      [0045] 子條帶Stripe m內(nèi)的N-2個數(shù)據(jù)子塊Strip m異或運算,生成該子條帶的P校驗子 塊PStrip m;進行伽羅華域乘法和加法運算,生成該子條帶的Q校驗子塊QStrip m,分別如 公式(8)和公式(9)所示。
      [0046] PStrip/?2='_?Sh.ip"2 C 0 < m < M ) ( 8 ) v=0
      [0047] QStrip/n = (/i(l * Strip/?/)?(/(, * Strip, *Strip/?2) i9 )
      [0048] 其中,?表示異或運算,*表示伽羅華域乘法,Aoi、…,An-3為互異的伽羅華域乘法 系數(shù)。
      [0049] 為了提供合適的性能,每個基本條帶中的N-2個數(shù)據(jù)塊按順序分成F組,每組包含G 個數(shù)據(jù)塊;其中,F(xiàn)、G是大于0的整數(shù),滿足FXG = N-2,G值根據(jù)實際存儲帶寬需求確定。每個 子條帶中的數(shù)據(jù)子塊也被分成F組,每組包含G個數(shù)據(jù)子塊,每個子條帶中僅組內(nèi)的G個數(shù)據(jù) 子塊提供并行性,不是全部數(shù)據(jù)子塊提供并行性。
      [0050] Ripple-RAID 6采用適度貪婪的地址分配策略,從基本條帶0內(nèi)、組0內(nèi)的首個數(shù)據(jù) 子塊開始,按如下規(guī)則編址:①同一組內(nèi),同一子條帶內(nèi)、編號相鄰數(shù)據(jù)塊內(nèi)的數(shù)據(jù)子塊的 地址相鄰;②同一基本條帶內(nèi),編號相鄰的兩個子條帶,前一個在組內(nèi)的末尾數(shù)據(jù)子塊,與 后一個在該組內(nèi)的起始數(shù)據(jù)子塊的地址相鄰;③同一基本條帶內(nèi),編號相鄰的組的地址相 鄰;④編號相鄰的基本條帶的地址相鄰?;緱l帶、組、數(shù)據(jù)塊均從〇開始編號。
      [0051 ] Ripple-RAID 6僅對基本條帶進行編址,影子條帶不參與編址,僅供Ripple-RAID 6內(nèi)部使用,對上層應(yīng)用是透明的,其功能在寫操作方法中會詳細(xì)介紹。上述數(shù)據(jù)布局和編 址方式,既具有局部并行的節(jié)能性,又通過引入特殊功能的影子條帶,同時具有解決局部并 行中小寫問題的基本條件。
      [0052] 2寫操作方法
      [0053] Ripple-RAID 6的寫操作,綜合運用了地址映射、異地數(shù)據(jù)更新、漸進式生成校驗 等方法,生成校驗數(shù)據(jù)時不需讀取舊數(shù)據(jù);進一步采用流水技術(shù)讀取已有校驗(與舊校驗不 同)、寫入新校驗時,可有效解決局部并行帶來的小寫問題。此外,地址映射把非順序?qū)戅D(zhuǎn)換 為順序?qū)?,可進一步提升Ripple-RAID 6的寫性能。
      [0054] 2.1地址映射
      [0055]上層應(yīng)用程序發(fā)來的讀寫請求地址,稱為虛擬地址;數(shù)據(jù)在Ripple-RAID 6存儲空 間內(nèi)的存儲地址(Ripple-RAID 6在RAID級的編址,不包括影子條帶),稱為物理地址。地址 映射實現(xiàn)虛擬地址到物理地址的轉(zhuǎn)換:把非連續(xù)(可能部分連續(xù))的虛擬地址映射為連續(xù)的 物理地址,并記錄映射關(guān)系到地址映射表。地址映射后,寫操作在物理地址空間內(nèi)完全連 續(xù),Ripple-RAID 6完全執(zhí)行順序?qū)憽?br>[0056] Ripple-RAID 6非常適合進行地址映射,原因如下:①連續(xù)數(shù)據(jù)存儲應(yīng)用以寫操作 為主,順序?qū)懣梢燥@著提高寫性能和整體性能;②讀操作以數(shù)據(jù)回放為主,即重復(fù)以前某時 間段內(nèi)的寫操作,例如視頻回放等,通??色@得與寫性能接近的讀性能;③以寫新數(shù)據(jù)為 主,很少進行改寫操作,可以忽略改寫操作引發(fā)的垃圾回收,或在負(fù)載較輕時進行垃圾回 收。
      [0057]以若干個連續(xù)扇區(qū)為單位進行地址映射,稱為扇區(qū)組映射方式。該方式多扇區(qū)映 射時效率高,但改寫組中部分?jǐn)?shù)據(jù)時,需要讀取未修改數(shù)據(jù),與改寫數(shù)據(jù)一起重新映射。 Ripple-RAID 6很少進行改寫操作,適合采用該映射方式。地址映射信息需要作為元數(shù)據(jù)保 存,大小為存儲容量的8/( 1024 X x),其中8個字節(jié)記錄一個扇區(qū)組地址,x為扇區(qū)組大小,以 KB為單位。
      [0058] 2.2異地數(shù)據(jù)更新
      [0059] 地址映射后Ripple-RAID 6執(zhí)行順序?qū)懀来蜗蛎總€基本條帶寫數(shù)據(jù),不會同時向 兩個基本條帶寫數(shù)據(jù),也不會在一個基本條帶沒有寫滿的情況下,向另一個基本條帶寫數(shù) 據(jù)。在此基礎(chǔ)上,Ripple-RAID 6內(nèi)部執(zhí)行異地數(shù)據(jù)更新,基本過程如下:
      [0060] (1)向物理地址A所在的基本條帶i寫數(shù)據(jù)時,數(shù)據(jù)并不直接寫入該條帶,而是寫入 地址A的影子地址A ',A '位于影子條帶,與地址A具有相同的條帶內(nèi)地址偏移量;
      [0061] (2)如果影子條帶沒寫滿,轉(zhuǎn)到(1);
      [0062] (3)否則,用影子條帶替換基本條帶i,即把影子條帶作為基本條帶i參與編址,實 現(xiàn)影子地址到物理地址的轉(zhuǎn)換,本次循環(huán)結(jié)束;
      [0063] (4)被替換的原基本條帶i,此時沒有參與編址,在下一循環(huán)中作為影子條帶。
      [0064] 2.3漸進式生成校驗
      [0065]影子條帶的校驗數(shù)據(jù)是根據(jù)本次循環(huán)中已寫數(shù)據(jù)生成的,稱為局部校驗數(shù)據(jù)(不 同于舊校驗)。寫操作時,根據(jù)寫數(shù)據(jù)、已有局部校驗數(shù)據(jù)計算新的局部校驗數(shù)據(jù),不需要讀 取舊數(shù)據(jù)。隨著寫數(shù)據(jù)的增加,局部校驗數(shù)據(jù)的校驗范圍逐漸擴大,直至覆蓋整個影子條 帶。新數(shù)據(jù)的寫入、局部校驗數(shù)據(jù)的校驗范圍,如水中漣漪一樣向前推進,因此該硬盤陣列 稱為Ripple-RAID 6。
      [0066] I.相關(guān)流水方式
      [0067] 漸進生成校驗數(shù)據(jù)時,不需讀取舊數(shù)據(jù),僅需讀取局部校驗數(shù)據(jù)??梢栽黾?個輔 助存儲設(shè)備,與影子條帶中局部校驗數(shù)據(jù)所在磁盤,以流水方式生成新校驗,可有效消除讀 局部校驗數(shù)據(jù)對寫性能的影響。影子條帶中校驗數(shù)據(jù)所在磁盤,與輔助存儲設(shè)備一起進行 流水,稱該流水方式為相關(guān)流水。
      [0068] 假設(shè)每個基本條帶被分成3個組,分別記作組0、組1和組2,兩個輔助存儲設(shè)備分別 記作輔存1和輔存2,容量均與校驗塊相同,基于相關(guān)流水漸進生成校驗的寫過程如下:
      [0069] (1)向任一基本條帶(稱原條帶)的組0寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組0,并 生成組〇的P校驗、Q校驗,分別寫入影子條帶的P校驗塊、Q校驗塊;
      [0070] (2)組0寫滿后,向原條帶的組1寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組1,并根據(jù)寫 數(shù)據(jù)、局部校驗(組〇的校驗,在影子條帶的P校驗塊、Q校驗塊),生成新校驗(組〇、組1的P校 驗、Q校驗),并分別寫入輔存1、輔存2;
      [0071] (3)組1寫滿后,向原條帶的組2寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組2,并根據(jù)寫 數(shù)據(jù)、局部校驗(組〇、組1的P校驗、Q校驗,分別在輔存1、輔存2),生成新校驗(組0、組1、組2 的P校驗、Q校驗),分別寫入影子條帶的P校驗塊、Q校驗塊;
      [0072] (4)影子條帶寫滿后,令其取代原條帶參與編址,被替換的原條帶不參與編址,作 為下一循環(huán)中的影子條帶。
      [0073] 為保證最后生成的校驗數(shù)據(jù)寫入影子條帶的校驗塊,需按如下規(guī)則流水:若影子 條帶的組數(shù)為奇數(shù),首先向影子條帶的P校驗塊、Q校驗塊寫校驗數(shù)據(jù);否則首先向輔存1、輔 存2寫校驗數(shù)據(jù)。當(dāng)輔存1、輔存2采用低功耗的SSD時,其能耗增加可忽略。
      [0074] n ?基于SSD的非流水方式
      [0075] 優(yōu)選的,輔存采用低功耗的SSD時,可不采用流水方式生成校驗數(shù)據(jù):從輔存1、輔 存2讀局部校驗數(shù)據(jù),新校驗數(shù)據(jù)也寫入輔存1、輔存2,直至寫影子條帶的最后一組時,從輔 存1、輔存2讀局部校驗數(shù)據(jù),并將最終校驗數(shù)據(jù)寫入影子條帶的P、Q校驗塊,稱該方式為基 于SSD的非流水方式。該方式中P、Q校驗塊所在磁盤也可待機節(jié)能,節(jié)能效果將進一步提升。 生成校驗時需要同時讀、寫輔存,因此輔存可能成為性能瓶頸。
      [0076] m.無關(guān)流水方式
      [0077] 優(yōu)選的,為了使影子條帶中P、Q校驗塊所在硬盤大部分時間也可待機節(jié)能,進一步 提高節(jié)能效率,同時又不影響性能,可采用如下流水方式:設(shè)置4個輔助存儲設(shè)備,分別記作 輔存1、輔存2、輔存3、輔存4,容量均與校驗塊相同,輪流從其中2個讀P、Q局部校驗數(shù)據(jù),向 另2個寫新的P、Q局部校驗數(shù)據(jù),直至生成影子條帶的最終P、Q校驗數(shù)據(jù),再將其寫入影子條 帶的P校驗塊、Q校驗塊。
      [0078] 影子條帶中P、Q校驗塊所在磁盤不參與流水,稱該流水方式為無關(guān)流水。當(dāng)輔存1、 輔存2、輔存3、輔存4采用低功耗的SSD時,可忽略其能耗增加。無關(guān)流水與相關(guān)流水相似,僅 有以下幾點不同:
      [0079] (1)向組0寫數(shù)據(jù)時,生成組0的P、Q校驗數(shù)據(jù),分別寫入輔存1、輔存3;
      [0080] (2)向組1寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、局部校驗(組0的P、Q校驗,分別在輔存1、輔存3), 生成新校驗(組〇、組1的P、Q校驗),分別寫入輔存2、輔存4;
      [0081] (3)向組2寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、局部校驗(組0、組1的P、Q校驗,分別在輔存2、輔 存4),生成新校驗(組0、組1、組2的P、Q校驗),最終寫入影子條帶的P、Q校驗塊。
      [0082] 3.數(shù)據(jù)容錯
      [0083]由數(shù)據(jù)布局得,Ripple-RAID 6包含N個基本條帶和1個影子條帶。按當(dāng)前狀態(tài)(是 否正在被更新)把基本條帶進一步分為活躍條帶和睡眠條帶,影子條帶的數(shù)據(jù)組織方式與 活躍條帶相同。由于地址映射后執(zhí)行順序?qū)懀诖_定時間內(nèi)只有1個基本條帶正在被更新, 即只有1個活躍條帶,其余基本條帶為睡眠條帶。
      [0084]對于任意2塊故障盤中的每個存儲子塊,根據(jù)其不同位置,按如下方法進行恢復(fù)。 [0085]情況1:故障盤中的存儲子塊位于睡眠條帶,由Ripple-RAID 6的寫操作方法得,當(dāng) 根據(jù)公式(8)和公式(9)建立校驗關(guān)系后,睡眠條帶沒有進行任何修改,已建立的校驗關(guān)系 完整有效。利用【背景技術(shù)】中介紹的P+Q方式的RAID 6的數(shù)據(jù)恢復(fù)方法,可恢復(fù)該類存儲子 塊。
      [0086] 情況2:故障盤中的存儲子塊位于活躍條帶,由寫操作方法得,當(dāng)根據(jù)公式(8)和公 式(9)建立校驗關(guān)系后,活躍條帶也沒有被真正修改過(對應(yīng)的新數(shù)據(jù)實際寫入了影子條帶 的對應(yīng)位置),已建立的校驗關(guān)系完整有效。利用【背景技術(shù)】中介紹的P+Q方式的RAID 6的數(shù) 據(jù)恢復(fù)方法,也可恢復(fù)該類存儲子塊。
      [0087] 情況3:故障盤中的存儲子塊位于影子條帶,對于影子條帶,以最后一次局部并行 寫為分界線,分界線之前為已寫區(qū),其后為待寫區(qū),設(shè)分界線在組f中偏移量為m的數(shù)據(jù)子塊 Strip m之后,(Xf<F,(Xm〈M。特別強調(diào):當(dāng)f彡1時,影子條帶校驗塊均為已寫區(qū)。
      [0088] I.故障盤中的存儲子塊位于影子條帶的已寫區(qū)
      [0089]影子條帶的已寫區(qū)數(shù)據(jù),在影子條帶中具有完整、有效的校驗關(guān)系,設(shè)存儲子塊位 于影子條帶中的子條帶Stripe k,當(dāng)(Xk<m時,校驗關(guān)系見公式(10)和公式(11)。
      C10)
      [0092]當(dāng)m〈k〈M時(僅當(dāng)f彡1時存在),校驗關(guān)系見公式(12)和公式(13):
      [0095] 此時,可根據(jù)所在子條帶的位置,利用公式(10)和公式(11)恢復(fù)故障盤中的存儲 子塊,或利用公式(12)和公式(13)恢復(fù)故障盤中的存儲子塊。
      [0096] n .故障盤中的存儲子塊位于影子條帶的待寫區(qū)
      [0097]由Ripple-RAID 6的寫操作方法得,該部分?jǐn)?shù)據(jù)不是有效數(shù)據(jù),并且沒有參與所在 子條帶的P、Q校驗運算,因此數(shù)據(jù)恢復(fù)時不需要考慮。
      [0098]綜上,Ripple-RAID 6具有雙盤容錯能力,其中任意2塊硬盤出現(xiàn)故障丟失數(shù)據(jù)時, 可按上述方法恢復(fù)該盤數(shù)據(jù)。分界線(最后一次局部并行寫位置)、影子條帶位置,對數(shù)據(jù)恢 復(fù)至關(guān)重要,需要記錄到元數(shù)據(jù)中,至少同時存儲在3塊盤上,以確保數(shù)據(jù)恢復(fù)正確執(zhí)行。 [0099] 4.讀操作
      [0100]對Ripple-RAID 6進行讀操作時,需要根據(jù)上層應(yīng)用程序發(fā)來的虛擬地址,查找地 址映射表,獲得該虛擬地址對應(yīng)的物理地址A,①如果地址A位于活躍條帶的已寫區(qū)(與影子 條帶已寫區(qū)具有相同的條帶內(nèi)起始、終止偏移地址),則從地址A的影子地址A'讀取數(shù)據(jù);② 否則,直接從地址A讀取數(shù)據(jù)。
      [0101] 5.節(jié)能調(diào)度
      [0102] Ripple-RAID 6需要對硬盤進行節(jié)能調(diào)度,調(diào)度空閑磁盤待機節(jié)能,當(dāng)任務(wù)到來時 喚醒待機磁盤工作。
      [0103] 有益效果
      [0104] 本發(fā)明的一種硬盤陣列Ripple-RAID 6的構(gòu)建方法,與已有技術(shù)比較,具有以下優(yōu) 占.
      [0105] (1)保持節(jié)能性的同時,具有突出的寫性能。采用新的局部并行數(shù)據(jù)布局,通過綜 合運用異地數(shù)據(jù)更新、基于流水技術(shù)漸進生成校驗等策略,既保持了局部并行的節(jié)能性,又 解決了局部并行中嚴(yán)重影響寫性能的小寫問題,極大提高了寫性能。
      [0106] (2)可充分發(fā)揮磁盤性能優(yōu)勢。通過地址映射把非順序?qū)戅D(zhuǎn)換為順序?qū)?,可充分發(fā) 揮磁盤善于順序讀寫的性能優(yōu)勢,進一步提高寫性能。在連續(xù)數(shù)據(jù)存儲中,由于讀操作以回 放為主,即重復(fù)先前某段時間內(nèi)的寫操作,因此通??色@得與寫性能接近的讀性能。
      [0107] (3)具有突出的節(jié)能效率。單位磁盤的寫性能極大提高后,當(dāng)存儲應(yīng)用需要額定的 寫性能時,Ripple-RAID 6運行更少的磁盤就能夠滿足性能需求,會節(jié)省更多能量;反之,在 運行磁盤數(shù)相同的條件下,Ripple-RAID 6具有更高的性能裕量。
      【附圖說明】
      [0108] 圖1為本發(fā)明的【具體實施方式】中的硬盤陣列Ripple-RAID 6的總體數(shù)據(jù)布局;
      [0109] 圖2為本發(fā)明的【具體實施方式】中的基本條帶0的子塊劃分與校驗關(guān)系示意圖;
      [0110] 圖3為本發(fā)明的【具體實施方式】中的硬盤陣列Ripple-RAID 6的地址分配示意圖;
      [0111] 圖4為本發(fā)明的【具體實施方式】中的基于相關(guān)流水的寫操作示意圖;
      [0112] 圖5為本發(fā)明的【具體實施方式】中的基于SSD的非流水寫操作示意圖;
      [0113] 圖6為本發(fā)明的【具體實施方式】中的基于無關(guān)流水的寫操作示意圖;
      [0114] 圖7為本發(fā)明的【具體實施方式】中的數(shù)據(jù)容錯示意圖。
      【具體實施方式】
      [0115] 下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細(xì)說明。
      [0116] 本實施例中,硬盤陣列Ripple-RAID 6由6塊磁盤組成,每塊磁盤容量為3TB,其實 現(xiàn)主要包括數(shù)據(jù)布局、寫操作方法、數(shù)據(jù)容錯3部分。
      [0117] 1.數(shù)據(jù)布局
      [0118] 如圖1所示,每塊硬盤平均分成7個存儲塊,各盤中偏移量相同的存儲塊組成1個條 帶,共組成7個條帶。任取其中1個條帶作為影子條帶(這里取第1個),其余為基本條帶。每個 基本條帶包含2個校驗存儲塊(簡稱校驗塊),分別為P校驗塊和Q校驗塊,N-2個數(shù)據(jù)存儲塊 (簡稱數(shù)據(jù)塊)?;緱l帶〇的P校驗塊位于硬盤4,Q校驗塊位于硬盤5,……,基本條帶5中的P 校驗塊位于硬盤5,Q校驗塊位于硬盤0。
      [0119] 每個數(shù)據(jù)塊、校驗塊(大小均為3TB/7 = 428GB)分成M= 107,000,000個相等的子 塊,子塊大小為4KB,分別稱為數(shù)據(jù)子塊、P校驗子塊、Q校驗子塊。每個基本條帶中偏移量相 同的子塊組成M= 107,000,000個子條帶。(注:1TB = 103GB= 106MB= 109KB)。
      [0120] 如圖2所示,基本條帶0中子條帶1的P校驗子塊由該子條帶的4個數(shù)據(jù)子塊異或運 算生成,Q校驗子塊由該子條帶的4個數(shù)據(jù)子塊進行伽羅華域乘法、加法運算生成,具體如 下:
      [0121] P校驗子塊1=(數(shù)據(jù)子塊1)。?(數(shù)據(jù)子塊1),?(數(shù)據(jù)子塊1)2@(數(shù)據(jù)子塊1)3 [0122] Q校驗子塊1=為*(數(shù)據(jù)子塊認(rèn)細(xì),(數(shù)據(jù)子塊1), ?為*(數(shù)據(jù)子塊1)2#為氣數(shù)據(jù) 子塊1)3
      [0123] 其中,?為異或,*為伽羅華域乘法,A〇、Ai、A2、A3為伽羅華域乘法系數(shù),對于伽羅華 域GF(2 8),可取A〇 = 1,Ai = 2,A2 = 4,A3 = 8,數(shù)據(jù)子塊1的下標(biāo)為所在磁盤的序號,如磁盤0上 的數(shù)據(jù)子塊1表示為(數(shù)據(jù)子塊1)〇。其它子條帶校驗子塊的計算方法,與子條帶1相同。
      [0124] 每個子條帶中的數(shù)據(jù)子塊分成2組,每組2個數(shù)據(jù)子塊,由組內(nèi)2個數(shù)據(jù)子塊提供并 行性,而不是全部4個。采用適度貪婪的地址分配策略,從基本條帶0內(nèi)、組0內(nèi)的首個數(shù)據(jù)子 塊開始分配地址,具體情況見圖3,箭頭連接線兩端的數(shù)據(jù)子塊的地址相鄰,且地址由小到 大。影子條帶不參與編址,僅供Ripple-RAID 6內(nèi)部使用,對上層應(yīng)用是透明的。
      [0125] 2 ?寫操作方法
      [0126] 地址映射時,采用扇區(qū)組映射方式,總存儲容量為10.3TB(每盤3TB X 6塊盤X 4/7, 去除的3/7為校驗塊和影子條帶存儲塊,見圖3),扇區(qū)組大小為64KB,8個字節(jié)記錄1個扇區(qū) 組地址,則地址映射信息為10.3TB X 8B/(64 X 1024B)~1.26GB,運行時基本可以完全調(diào)入 內(nèi)存。
      [0127] 本實施例中,每個基本條帶分成了 2個組,每組包含2個數(shù)據(jù)塊。為了充分說明寫操 作過程,這里以3個組為例進行說明,分別記作組0、組1和組2。
      [0128] I.相關(guān)流水方式
      [0129] 如圖4所示,基于相關(guān)流水的寫操作,需要2個輔助存儲設(shè)備,分別記作輔存1、輔存 2,容量均與校驗塊相同,執(zhí)行過程如下:
      [0130] (1)向任一基本條帶(稱原條帶)的組0寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組0,并 生成組〇的P校驗、Q校驗,分別寫入影子條帶的P校驗塊、Q校驗塊,見圖4(a);
      [0131] (2)組0寫滿后,向原條帶的組1寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組1,并根據(jù)寫 數(shù)據(jù)、局部校驗(組〇的校驗,在影子條帶的P、Q校驗塊),生成新校驗(組〇、組1的P校驗、Q校 驗)并分別寫入輔存1、輔存2,見圖4(b);
      [0132] (3)組1寫滿后,向原條帶的組2寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組2,并根據(jù)寫 數(shù)據(jù)、局部校驗(組〇、組1的P校驗、Q校驗,分別在輔存1、輔存2),生成新校驗(組0、組1、組2 的P校驗、Q校驗),寫入影子條帶的P校驗塊、Q校驗塊,見圖4(c);
      [0133] (4)影子條帶寫滿后,令其替換原條帶參與編址,被替換的原條帶不參與編址,作 為下一循環(huán)中的影子條帶。
      [0134] 影子條帶的組數(shù)為奇數(shù),因此流水時首先向影子條帶的P、Q校驗塊寫校驗數(shù)據(jù)。圖 4中,陰影部分為本次循環(huán)中寫入影子條帶的新數(shù)據(jù)、以及根據(jù)寫入新數(shù)據(jù)生成的局部校驗 數(shù)據(jù),隨著寫入數(shù)據(jù)的增加,局部校驗數(shù)據(jù)的校驗范圍逐漸擴大,最終覆蓋整個影子條帶。
      [0135] n .基于SSD的非流水方式
      [0136] 優(yōu)選的,采用低功耗的SSD作為輔存,不采用流水方式生成校驗數(shù)據(jù),具體寫過程 與相關(guān)流水相似,僅有以下幾點不同,見圖5:
      [0137] (1)向組0寫數(shù)據(jù)時,生成組0的P、Q校驗數(shù)據(jù),分別寫入輔存1、輔存2,見圖5(a);
      [0138] (2)向組1寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、局部校驗(組0的P、Q校驗,分別在輔存1、輔存2), 生成新校驗(組〇、組1的P、Q校驗),分別寫入輔存1、輔存2,見圖5 (b);
      [0139] (3)向組2寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、局部校驗(組0、組1的P校驗、Q校驗,在輔存1、輔 存2),生成新校驗(組0、組1、組2的P校驗、Q校驗),最終寫入影子條帶的P、Q校驗塊,見圖5 (c) 〇
      [0140] 圖5中陰影部分的含義,與圖4相同。
      [0141] m.無關(guān)流水方式
      [0142] 優(yōu)選的,基于無關(guān)流水的寫操作,需要4個輔助存儲設(shè)備,分別為輔存1、輔存2、輔 存3、輔存4,容量均與校驗塊相同,具體過程與相關(guān)流水相似,僅有以下幾點不同,見圖6:
      [0143] (1)向組0寫數(shù)據(jù)時,生成組0的P、Q校驗數(shù)據(jù),分別寫入輔存1、輔存3,見圖6(a);
      [0144] (2)向組1寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、局部校驗(組0的P、Q校驗,分別在輔存1、輔存3), 生成新校驗(組〇、組1的P、Q校驗),分別寫入輔存2、輔存4,見圖6(b);
      [0145] (3)向組2寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、局部校驗(組0、組1的P校驗、Q校驗,分別在輔存 2、輔存4),生成新校驗(組0、組1、組2的P校驗、Q校驗),最終寫入影子條帶的P、Q校驗塊,見 圖 6(c)。
      [0146] 圖6中陰影部分的含義,與圖4相同。
      [0147] 3數(shù)據(jù)容錯
      [0148] 恢復(fù)Ripple-RAID 6中任意2塊故障盤上的數(shù)據(jù)時,首先讀取分界線(最后一次局 部并行寫位置)、影子條帶的位置,這2個數(shù)據(jù)至少同時存儲在3塊盤上,2塊磁盤壞后仍可讀 出。對于故障盤上的每個存儲子塊,根據(jù)其不同位置,按如下方法進行恢復(fù)。
      [0149] 情況1、情況2:故障盤上的存儲子塊位于基本條帶(包括睡眠條帶和活躍條帶),當(dāng) 根據(jù)式(3)、式(4)建立校驗關(guān)系后,基本條帶沒有進行過實際修改,利用【背景技術(shù)】中介紹的 P+Q方式的RAID 6的恢復(fù)方法,可恢復(fù)該類存儲子塊。
      [0150] 例如圖7中,磁盤0、磁盤2出現(xiàn)故障時,這2塊盤在子條帶8中的2個數(shù)據(jù)子塊,可按 如下方法恢復(fù),根據(jù)子條帶8中的校驗關(guān)系,有下式成立:
      [0151] (數(shù)據(jù)子塊8)Q@(數(shù)據(jù)子塊8)斤(數(shù)據(jù)子塊8)2@ (數(shù)據(jù)子塊8)HP校驗子塊8 (14)
      [0152] 為*(數(shù)據(jù)子塊8)t)?為*(數(shù)據(jù)子塊數(shù)據(jù)子塊8)2?為*(數(shù)據(jù)子塊8)3=Q校驗 子塊(15)
      [0153] 整理式(14)、式(15)得:
      [0154] (數(shù)據(jù)子塊8)0 e (數(shù)據(jù)子塊8)2=P校驗子塊8 ? (數(shù)據(jù)子塊8), ? (數(shù)據(jù)子塊8)3 (16)
      [0155] 為>*(數(shù)據(jù)子塊8)〇@為*(數(shù)據(jù)子塊8)2=Q校驗子塊8H*(數(shù)據(jù)子塊數(shù)據(jù)子 塊 8}; (17)
      [0156] 式(16)、式(17)是關(guān)于(數(shù)據(jù)子塊8)〇、(數(shù)據(jù)子塊8)2的方程,利用代入法或消元法, 可以恢復(fù)(數(shù)據(jù)子塊8) 〇、(數(shù)據(jù)子塊8) 2,實現(xiàn)雙盤容錯。
      [0157] 情況3:故障盤中的存儲子塊位于影子條帶,對于影子條帶,分界線之前為已寫區(qū), 其后為待寫區(qū),設(shè)分界線位于組1 (f= 1)中數(shù)據(jù)子塊8之后,此時滿足f多1條件,因此影子條 帶校驗塊均為已寫區(qū)。
      [0158] I.故障盤中的存儲子塊位于影子條帶的已寫區(qū)
      [0159] 可利用影子條帶中的校驗關(guān)系恢復(fù)數(shù)據(jù),待寫區(qū)數(shù)據(jù)子塊不參與數(shù)據(jù)恢復(fù)。
      [0160] 例如,圖7中磁盤2、磁盤3出現(xiàn)故障,這2塊盤在影子條帶中的數(shù)據(jù)子塊,可利用上 述基本條帶中的數(shù)據(jù)恢復(fù)方法進行恢復(fù)。
      [0161] 又如,圖7中磁盤0、磁盤1出現(xiàn)故障,這2塊盤在影子條帶中的數(shù)據(jù)子塊M-1,按如下 方法進行恢復(fù),根據(jù)校驗關(guān)系有下式成立:
      [0162] (數(shù)據(jù)子塊M4)。十(數(shù)據(jù)子塊M-1)產(chǎn)P校驗子塊M-l (18)
      [0163] A0*(數(shù)據(jù)子塊抓l)〇? A,(數(shù)據(jù)子塊P校驗子塊M-1 (19)
      [0164] 整理式(18)、式(19)得:
      [0165] (數(shù)據(jù)子塊)(,=P校驗子塊M-l ? (數(shù)據(jù)子塊M-1), (20)
      [0166] A0*(數(shù)據(jù)子塊M-1 )。= P校驗子塊姐-1 ? AA數(shù)據(jù)子塊M-lh (21)
      [0167] 式(20)、式(21)是(數(shù)據(jù)子塊M-l)〇、(數(shù)據(jù)子塊M-lh的方程,利用代入法、或消元法 可求解出(數(shù)據(jù)子塊M-1) 〇、(數(shù)據(jù)子塊M-1):,實現(xiàn)雙盤容錯。
      [0168] 子條帶M-1在磁盤2、磁盤3中的數(shù)據(jù)子塊(X表示)位于待寫區(qū),沒有參與子條帶M-1的P、〇校驗運算,因此不參與數(shù)據(jù)恢復(fù)。
      [0169] n .故障盤中的存儲子塊位于影子條帶的待寫區(qū)
      [0170] 該部分?jǐn)?shù)據(jù)不是有效數(shù)據(jù),并且沒有參與所在子條帶的P、0校驗運算,不需要恢 復(fù)。
      [0171] 綜上,Ripple-RAID 6具有雙盤容錯能力,其中任意2塊硬盤出現(xiàn)故障丟失數(shù)據(jù)時, 可按上述方法恢復(fù)數(shù)據(jù)。
      [0172] 以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人 員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進,或者對其中部分技術(shù)特征進 行等同替換,這些改進和替換也應(yīng)視為本發(fā)明的保護范圍。
      【主權(quán)項】
      1. 一種消除局部并行中小寫操作的雙盤容錯盤陣列Ripple-RAID 6,其特征在于:其結(jié) 構(gòu)布局為: 硬盤陣列Ripple-RAID 6包含N塊硬盤,N彡4且為正整數(shù);每個硬盤平均分成kXN+Ι個 存儲塊,k為大于0的整數(shù),各盤中偏移量相同的N個存儲塊組成1個條帶,共組成k X N+1個條 帶,任取其中1個條帶作為影子條帶,其余為基本條帶; 每個基本條帶包含2個校驗存儲塊,簡稱校驗塊,分別為P校驗塊和Q校驗塊,N-2個數(shù)據(jù) 存儲塊,簡稱數(shù)據(jù)塊;當(dāng)j小于N-1時,基本條帶i中的P校驗塊位于硬盤N-2-j,Q校驗塊位于 硬盤N-1-j ;當(dāng)j等于N-1時,P校驗塊位于硬盤N-1,Q校驗塊位于硬盤0,這里(Xi〈(kXN),j =i MOD N; MOD為模運算; 每個數(shù)據(jù)塊、校驗塊進一步劃分為M個大小相等的子塊,每個子塊包含若干個地址連續(xù) 的扇區(qū),分別稱為數(shù)據(jù)子塊,記作Strip、Ρ校驗子塊,記作PStrip、Q校驗子塊,記作QStrip; 每個基本條帶中偏移量相同的子塊組成一個子條帶,記作Stripe,這樣每個基本條帶包含Μ 個大小相同的子條帶; 子條帶Stripe m內(nèi)的Ν-2個數(shù)據(jù)子塊Strip m異或運算,生成該子條帶的Ρ校驗子塊 PStrip m;進行伽羅華域乘法和加法運算,生成該子條帶的Q校驗子塊QStrip m,分別如公 式(8)和公式(9)所示;其中,後表示異或運算,*表示伽羅華域乘法,AhAi、…,An-3為互異的伽羅華域乘法系 數(shù); 為了提供合適的性能,每個基本條帶中的N-2個數(shù)據(jù)塊按順序分成F組,每組包含G個數(shù) 據(jù)塊;其中,F(xiàn)、G是大于0的整數(shù),滿足FXG = N-2,G值根據(jù)實際存儲帶寬需求確定;每個子條 帶中的數(shù)據(jù)子塊也被分成F組,每組包含G個數(shù)據(jù)子塊,每個子條帶中僅組內(nèi)的G個數(shù)據(jù)子塊 提供并行性,不是全部數(shù)據(jù)子塊提供并行性; Ripple-RAID 6采用適度貪婪的地址分配策略,從基本條帶0內(nèi)、組0內(nèi)的首個數(shù)據(jù)子塊 開始,按如下規(guī)則編址:①同一組內(nèi),同一子條帶內(nèi)、編號相鄰數(shù)據(jù)塊內(nèi)的數(shù)據(jù)子塊的地址 相鄰;②同一基本條帶內(nèi),編號相鄰的兩個子條帶,前一個在組內(nèi)的末尾數(shù)據(jù)子塊,與后一 個在該組內(nèi)的起始數(shù)據(jù)子塊的地址相鄰;③同一基本條帶內(nèi),編號相鄰的組的地址相鄰;④ 編號相鄰的基本條帶的地址相鄰;基本條帶、組、數(shù)據(jù)塊均從〇開始編號; Ripple-RAID 6僅對基本條帶進行編址,影子條帶不參與編址,僅供Ripple-RAID 6內(nèi) 部使用,對上層應(yīng)用是透明的,其功能在寫操作方法中會詳細(xì)介紹;上述數(shù)據(jù)布局和編址方 式,既具有局部并行的節(jié)能性,又通過引入特殊功能的影子條帶,同時具有解決局部并行中 小寫問題的基本條件。2. 如權(quán)利要求1所述的一種消除局部并行中小寫操作的雙盤容錯盤陣列Ripple-RAID 6,其特征在于:其寫操作方法具體為: Ripple-RAID 6的寫操作,綜合運用了地址映射、異地數(shù)據(jù)更新、漸進式生成校驗等方 法,生成校驗數(shù)據(jù)時不需讀取舊數(shù)據(jù);進一步采用流水技術(shù)讀取已有校驗、寫入新校驗時, 可有效解決局部并行帶來的小寫問題;此外,地址映射把非順序?qū)戅D(zhuǎn)換為順序?qū)懀蛇M一步 提升Ripple-RAID 6的寫性能; 2.1地址映射; 上層應(yīng)用程序發(fā)來的讀寫請求地址,稱為虛擬地址;數(shù)據(jù)在Ripple-RAID 6存儲空間內(nèi) 的存儲地址,稱為物理地址;地址映射實現(xiàn)虛擬地址到物理地址的轉(zhuǎn)換:把非連續(xù)的虛擬地 址映射為連續(xù)的物理地址,并記錄映射關(guān)系到地址映射表;地址映射后,寫操作在物理地址 空間內(nèi)完全連續(xù),Ripple-RAID 6完全執(zhí)行順序?qū)懀? 以若干個連續(xù)扇區(qū)為單位進行地址映射,稱為扇區(qū)組映射方式;該方式多扇區(qū)映射時 效率高,但改寫組中部分?jǐn)?shù)據(jù)時,需要讀取未修改數(shù)據(jù),與改寫數(shù)據(jù)一起重新映射;Ripple-RAID 6 很少進行改寫操作,適合采用該映射方式; 地址映射信息需要作為元數(shù)據(jù)保存,大小 為存儲容量的8/(1024 Xx),其中8個字節(jié)記錄一個扇區(qū)組地址,X為扇區(qū)組大小,以KB為單 位; 2.2異地數(shù)據(jù)更新; 地址映射后Ripple-RAID 6執(zhí)行順序?qū)懀来蜗蛎總€基本條帶寫數(shù)據(jù),不會同時向兩個 基本條帶寫數(shù)據(jù),也不會在一個基本條帶沒有寫滿的情況下,向另一個基本條帶寫數(shù)據(jù);在 此基礎(chǔ)上,Ripple-RAID 6內(nèi)部執(zhí)行異地數(shù)據(jù)更新,基本過程如下: (1) 向物理地址A所在的基本條帶i寫數(shù)據(jù)時,數(shù)據(jù)并不直接寫入該條帶,而是寫入地址 A的影子地址A ',A '位于影子條帶,與地址A具有相同的條帶內(nèi)地址偏移量; (2) 如果影子條帶沒寫滿,轉(zhuǎn)到(1); (3) 否則,用影子條帶替換基本條帶i,即把影子條帶作為基本條帶i參與編址,實現(xiàn)影 子地址到物理地址的轉(zhuǎn)換,本次循環(huán)結(jié)束; (4) 被替換的原基本條帶i,此時沒有參與編址,在下一循環(huán)中作為影子條帶; 2.3漸進式生成校驗; 影子條帶的校驗數(shù)據(jù)是根據(jù)本次循環(huán)中已寫數(shù)據(jù)生成的,稱為局部校驗數(shù)據(jù);寫操作 時,根據(jù)寫數(shù)據(jù)、已有局部校驗數(shù)據(jù)計算新的局部校驗數(shù)據(jù),不需要讀取舊數(shù)據(jù);隨著寫數(shù) 據(jù)的增加,局部校驗數(shù)據(jù)的校驗范圍逐漸擴大,直至覆蓋整個影子條帶;新數(shù)據(jù)的寫入、局 部校驗數(shù)據(jù)的校驗范圍,如水中漣漪一樣向前推進,因此該硬盤陣列稱為Ripple-RAID 6; 漸進式生成校驗具體分為以下3種方式: I.相關(guān)流水方式 漸進生成校驗數(shù)據(jù)時,不需讀取舊數(shù)據(jù),僅需讀取局部校驗數(shù)據(jù);可以增加2個輔助存 儲設(shè)備,與影子條帶中局部校驗數(shù)據(jù)所在磁盤,以流水方式生成新校驗,可有效消除讀局部 校驗數(shù)據(jù)對寫性能的影響;影子條帶中校驗數(shù)據(jù)所在磁盤,與輔助存儲設(shè)備一起進行流水, 稱該流水方式為相關(guān)流水; 假設(shè)每個基本條帶被分成3個組,分別記作組0、組1和組2,兩個輔助存儲設(shè)備分別記作 輔存1和輔存2,容量均與校驗塊相同,基于相關(guān)流水漸進生成校驗的寫過程如下: (1) 向任一基本條帶的組0寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組0,并生成組0的P校 驗、Q校驗,分別寫入影子條帶的P校驗塊、Q校驗塊;所述任一基本條帶稱為原條帶; (2) 組0寫滿后,向原條帶的組1寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組1,并根據(jù)寫數(shù) 據(jù)、局部校驗生成新校驗,并分別寫入輔存1、輔存2;此時,局部校驗為組0的校驗,在影子條 帶的P校驗塊、Q校驗塊;新校驗為組0、組1的P校驗、Q校驗; (3) 組1寫滿后,向原條帶的組2寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組2,并根據(jù)寫數(shù) 據(jù)、局部校驗生成新校驗,分別寫入影子條帶的P校驗塊、Q校驗塊;所述局部校驗為組〇、組1 的P校驗、Q校驗,分別在輔存1、輔存2內(nèi);所述新校驗為組0、組1、組2的P校驗、Q校驗; (4) 影子條帶寫滿后,令其取代原條帶參與編址,被替換的原條帶不參與編址,作為下 一循環(huán)中的影子條帶; 為保證最后生成的校驗數(shù)據(jù)寫入影子條帶的校驗塊,需按如下規(guī)則流水:若影子條帶 的組數(shù)為奇數(shù),首先向影子條帶的P校驗塊、Q校驗塊寫校驗數(shù)據(jù);否則首先向輔存1、輔存2 寫校驗數(shù)據(jù);當(dāng)輔存1、輔存2采用低功耗的SSD時,其能耗增加可忽略; Π .基于SSD的非流水方式 優(yōu)選的,輔存采用低功耗的SSD時,可不采用流水方式生成校驗數(shù)據(jù):從輔存1、輔存2讀 局部校驗數(shù)據(jù),新校驗數(shù)據(jù)也寫入輔存1、輔存2,直至寫影子條帶的最后一組時,從輔存1、 輔存2讀局部校驗數(shù)據(jù),并將最終校驗數(shù)據(jù)寫入影子條帶的P、Q校驗塊,稱該方式為基于SSD 的非流水方式;該方式中P、Q校驗塊所在磁盤也可待機節(jié)能,節(jié)能效果將進一步提升;生成 校驗時需要同時讀、寫輔存,因此輔存可能成為性能瓶頸; ΙΠ .無關(guān)流水方式 優(yōu)選的,為了使影子條帶中P、Q校驗塊所在硬盤大部分時間也可待機節(jié)能,進一步提高 節(jié)能效率,同時又不影響性能,可采用如下流水方式:設(shè)置4個輔助存儲設(shè)備,分別記作輔存 1、 輔存2、輔存3、輔存4,容量均與校驗塊相同,輪流從其中2個讀P、Q局部校驗數(shù)據(jù),向另2個 寫新的P、Q局部校驗數(shù)據(jù),直至生成影子條帶的最終P、Q校驗數(shù)據(jù),再將其寫入影子條帶的P 校驗塊、Q校驗塊; 影子條帶中P、Q校驗塊所在磁盤不參與流水,稱該流水方式為無關(guān)流水;當(dāng)輔存1、輔存 2、 輔存3、輔存4采用低功耗的SSD時,可忽略其能耗增加;無關(guān)流水與相關(guān)流水相似,僅有以 下幾點不同: (1) 向組0寫數(shù)據(jù)時,生成組0的P、Q校驗數(shù)據(jù),分別寫入輔存1、輔存3; (2) 向組1寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、局部校驗,生成新校驗,分別寫入輔存2、輔存4;此 時,局部校驗為組〇的P、Q校驗,分別在輔存1、輔存3;新校驗為組0、組1的P、Q校驗; (3) 向組2寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、局部校驗,生成新校驗,最終寫入影子條帶的P、Q校驗 塊;此時,局部校驗為組0、組1的P、Q校驗,分別在輔存2、輔存4;新校驗為組0、組1、組2的P、Q 校驗。3.如權(quán)利要求1或2所述的一種消除局部并行中小寫操作的雙盤容錯盤陣列Ripple-RAID 6,其特征在于:其數(shù)據(jù)容錯方法為: 由數(shù)據(jù)布局得,Ripple-RAID 6包含N個基本條帶和1個影子條帶;按當(dāng)前狀態(tài)是否正在 被更新,把基本條帶進一步分為活躍條帶和睡眠條帶,影子條帶的數(shù)據(jù)組織方式與活躍條 帶相同;由于地址映射后執(zhí)行順序?qū)懀诖_定時間內(nèi)只有1個基本條帶正在被更新,即只有1 個活躍條帶,其余基本條帶為睡眠條帶; 對于任意2塊故障盤中的每個存儲子塊,根據(jù)其不同位置,按如下方法進行恢復(fù); 情況1:故障盤中的存儲子塊位于睡眠條帶,由Ripple-RAID 6的寫操作方法得,當(dāng)根據(jù) 公式(8)和公式(9)建立校驗關(guān)系后,睡眠條帶沒有進行任何修改,已建立的校驗關(guān)系完整 有效;利用【背景技術(shù)】中介紹的P+Q方式的RAID 6的數(shù)據(jù)恢復(fù)方法,可恢復(fù)該類存儲子塊; 情況2 :故障盤中的存儲子塊位于活躍條帶,由寫操作方法得,當(dāng)根據(jù)公式(8)和公式 (9)建立校驗關(guān)系后,活躍條帶也沒有被真正修改過(對應(yīng)的新數(shù)據(jù)實際寫入了影子條帶的 對應(yīng)位置),已建立的校驗關(guān)系完整有效;利用【背景技術(shù)】中介紹的P+Q方式的RAID 6的數(shù)據(jù) 恢復(fù)方法,也可恢復(fù)該類存儲子塊; 情況3:故障盤中的存儲子塊位于影子條帶,對于影子條帶,以最后一次局部并行寫為 分界線,分界線之前為已寫區(qū),其后為待寫區(qū),設(shè)分界線在組f中偏移量為m的數(shù)據(jù)子塊 Strip m之后,0彡f〈F,0<m〈M;特別強調(diào):當(dāng)f彡1時,影子條帶校驗塊均為已寫區(qū); I.故障盤中的存儲子塊位于影子條帶的已寫區(qū) 影子條帶的已寫區(qū)數(shù)據(jù),在影子條帶中具有完整、有效的校驗關(guān)系,設(shè)存儲子塊位于影 子條帶中的子條帶Stripe k,當(dāng)(Xk<m時,校驗關(guān)系見公式(10)和公式(11);當(dāng)m〈k〈M時(僅當(dāng)f多1時存在),校驗關(guān)系見公式(12)和公式(13):此時,可根據(jù)所在子條帶的位置,利用公式(10)和公式(11)恢復(fù)故障盤中的存儲子塊, 或利用公式(12)和公式(13)恢復(fù)故障盤中的存儲子塊; Π .故障盤中的存儲子塊位于影子條帶的待寫區(qū) 由Ripple-RAID 6的寫操作方法得,該部分?jǐn)?shù)據(jù)不是有效數(shù)據(jù),并且沒有參與所在子條 帶的P、Q校驗運算,因此數(shù)據(jù)恢復(fù)時不需要考慮; 綜上,Ripple-RAID 6具有雙盤容錯能力,其中任意2塊硬盤出現(xiàn)故障丟失數(shù)據(jù)時,可按 上述方法恢復(fù)該盤數(shù)據(jù);分界線,即最后一次局部并行寫位置以及影子條帶位置,對數(shù)據(jù)恢 復(fù)至關(guān)重要,需要記錄到元數(shù)據(jù)中,至少同時存儲在3塊盤上,以確保數(shù)據(jù)恢復(fù)正確執(zhí)行。4. 如權(quán)利要求1或2所述的一種消除局部并行中小寫操作的雙盤容錯盤陣列Ripple-RAID 6, 其特征在于: 其讀操方法為 : 對Ripple-RAID 6進行讀操作時,需要根據(jù)上層應(yīng)用程序發(fā)來的虛擬地址,查找地址映 射表,獲得該虛擬地址對應(yīng)的物理地址A,①如果地址A位于活躍條帶的已寫區(qū),即地址A與 影子條帶已寫區(qū)具有相同的條帶內(nèi)起始、終止偏移地址,則從地址A的影子地址A'讀取數(shù) 據(jù);②否則,直接從地址A讀取數(shù)據(jù)。5. 如權(quán)利要求1或2所述的一種消除局部并行中小寫操作的雙盤容錯盤陣列Ripple-RAID 6, 其特征在于: 其節(jié)能調(diào)度方法為: Ripple-RAID 6需要對硬盤進行節(jié)能調(diào)度,調(diào)度空閑磁盤待機節(jié)能,當(dāng)任務(wù)到來時喚醒 待機磁盤工作。
      【文檔編號】G06F3/06GK105930099SQ201610230361
      【公開日】2016年9月7日
      【申請日】2016年4月14日
      【發(fā)明人】孫志卓, 王洪豐, 于瑞玲, 劉利東, 譚毓安
      【申請人】德州學(xué)院
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1