新四季網

應用於存儲陣列的數據修複方法與裝置及存儲設備與流程

2023-12-03 02:14:21


本申請涉及數據存儲領域,尤其涉及應用於存儲陣列的數據修複方法與裝置及存儲設備。



背景技術:

存儲陣列又被稱為磁碟陣列(英文:redundantarraysofindependentdisks,簡稱:raid)是指由獨立磁碟構成的具有冗餘能力的陣列。存儲設備在存儲數據時,會在存儲陣列的每個硬碟上選擇一些存儲單元組成一組,每個存儲單元組用於存儲用戶數據和校驗數據,並使所述用戶數據和校驗數據滿足特定的運算規則,這樣,如果某些數據塊發生損壞時,通過這個運算規則,可以通過該存儲單元組內未損壞的用戶數據和校驗數據,將損壞的用戶數據修復來。

由於存儲陣列通常由多個磁碟構成,因此在實際應用中,常會出現兩個硬碟保存的數據同時損壞,即出現雙盤失效的情況。為在雙盤失效時也能夠恢復存儲陣列中所保存的數據,本領域技術人員開始越來越多的使用斜線raid數據修復。採用斜線raid數據修複方法實現雙盤失效的數據修復,在使用保存數據時,不僅需要使用一個磁碟保存存儲陣列每一行中存儲單元所保存的用戶數據的行校驗數據,而且還需要另一個磁碟保存斜線校驗組中存儲單元所保存的用戶數據的斜線校驗數據。

但是,採用現有斜線raid數據修複方法,如果存儲單元組中有n列用於存儲用戶數據,那麼該存儲單元組中只能有n-1行用於存儲用戶數據。由於用於存儲用戶數據的行數小於用於存儲用戶數據的列數,而斜線校驗數據的數量則等於用於存儲用戶數據的列數。因此,可能會導致存儲斜線校驗數據所需的存儲單元數量大於存儲陣列的行數。為充分利用存儲陣列中的存儲單元,就需要將部分的斜線校驗數據保存在用於保存用戶數據的列的存儲單元中。

而將部分斜線校驗數據保存在用於保存用戶數據的列的存儲單元中,在兩個磁碟同時發生失效(即雙盤失效)時,即便是所述存儲陣列第n列中各個存儲單元所保存的數據未被損壞,也有很可能會發生行校驗數據、列校驗數據及用戶數據同時被損壞的情況,使存儲設備無法有效的修復存儲陣列中損壞的數據。



技術實現要素:

本申請實施例提供了存儲陣列數據生成及修複方法及裝置與存儲設備,可以在雙盤失效時,有效修復存儲陣列各個存儲單元所存儲的數據中損壞的用戶數據。

第一方面,本申請實施例提供了一種存儲陣列數據生成方法用於在所述硬碟發生雙盤失效導致所述存儲單元所存儲的數據被損壞時,修復損壞的數據,該方法包括:如果所述存儲陣列第n列中各個存儲單元所保存的數據未被損壞,使用第一指定行中各個存儲單元所存儲的數據中未損壞的數據,及所述第一指定存儲單元所存儲的額外校驗數據,修復所述存儲陣列的第一指定行的各個存儲單元中所存儲的數據中損壞的數據;使用第二指定行中各個存儲單元所存儲的數據中未損壞的數據,及所述第二指定存儲單元所存儲的額外校驗數據,修復所述存儲陣列的第二指定行的各個存儲單元中所存儲的數據中損壞的數據;使用所述行校驗數據及斜線校驗數據,逐一修復除所述第一指定行及所述第二指定行外其它各行中存儲單元所保存的用數據中損壞的數據,其中,所述存儲陣列包含n行n列存儲單元,n≥4,且所述存儲陣列同一列中的存儲單元位於一個磁碟上,所述存儲陣列同一行中的存儲單元分別位於不同的磁碟上;其中,除位於第n行第m列的存儲單元之外,其他位於第1至m列中的存儲單元均用於存儲用戶數據,m=n-2;位於第n行第n-1列的存儲單元及位於第n行第m列的存儲單元,用於存儲第n行中各個存儲單元所存儲用戶數據的行校驗數據;位於第n-1列中且與第i行相對應的存儲單元,用於存儲第i行中各個存儲單元所存儲用戶數據的行校驗數據,i=1,2,3,……,n-1;位於第n列中且與第k個斜線校驗組相對應的存儲單元,用於存儲第k個斜線校驗組中各個存儲單元所存儲用戶數據的斜線校驗數據,k=1,2,3,……,m;位於第n列中的第一指定存儲單元,用於存儲第一指定行中各個存儲單元所存儲用戶數據的額外校驗數據;位於第n行中的第二指定存儲單元,用於存儲第二指定行中各個存儲單元所存儲用戶數據的額外校驗數據,其中,所述第一指定行與所述第二指定行為所述存儲陣列第1行至第n-1行中的任意兩行。

採用本方面所提供的方法,在兩個硬碟同時失效時,如果所述存儲陣列第n列中各個存儲單元所保存的數據未被損壞,存儲設備可以使用所述存儲陣列第n列中存儲的額外校驗數據,修復所述存儲陣列兩個指定行中各個存儲單元所存儲的數據,進而可以有效修復存儲陣列各個存儲單元所存儲的數據中損壞的用戶數據,從而減少無法修復存儲陣列中損壞的數據的情況。

結合第一方面,在第一方面第一種可能的實現方式中,使用所述行校驗數據及斜線校驗數據,逐一修復除所述第一指定行及所述第二指定行外其它各行中存儲單元所保存的用數據中損壞的數據包括:當兩個存儲有用戶數據的所述硬碟失效時,使用斜線校驗數據及行校驗數據,逐一修復所述存儲陣列各個存儲單元中損壞的用戶數據。

採用該實現方式,可以在兩個存儲有用戶數據的所述硬碟失效時,修復所述存儲陣列的各個存儲單元中損壞的用戶數據。

結合第一方面第一種可能的實現方式,在第一方面第二種可能的實現方式中,使用所述行校驗數據及斜線校驗數據,逐一修復除所述第一指定行及所述第二指定行外其它各行中存儲單元所保存的用數據中損壞的數據包括:當一個存儲有用戶數據的硬碟與一個存儲有行校驗數據的硬碟失效時,修復所述存儲陣列的第n行中各個存儲單元所存儲的數據中損壞的數據;在所述存儲陣列的第n行中各個存儲單元所存儲的數據中損壞的數據被修復後,使用斜線校驗數據及行校驗數據,逐一修復所述存儲陣列各個存儲單元中損壞的用戶數據及損壞的行校驗數據。

採用該實現方式,可以在一個存儲有用戶數據的硬碟與一個存儲有行校驗數據的硬碟失效時,修復所述磁碟陣列中各個存儲單元所述保存的數據損壞時,修復損壞的用戶數據及行校驗數據。

結合第一方面第二種可能的實現方式,在第一方面第三種可能的實現方式中,修復所述存儲陣列的第n行中各個存儲單元所存儲的數據中損壞的數據包括:在所述存儲陣列第n行第m列中的數據未損壞時,以位於第n行第m列的存儲單元中所存儲的數據作為第n行中的存儲單元所保存用戶數據的行校驗數據修復第n行中各個存儲單元所存儲的用戶數據中損壞的用戶數據。

採用該實現方式,可以在所述存儲陣列第n行第m列中的數據未損壞時,修復第n行中各個存儲單元所存儲的用戶數據中損壞的用戶數據。

結合第一方面第二種可能的實現方式,在第一方面第四種可能的實現方式中,修復所述存儲陣列的第n行中各個存儲單元所存儲的數據中損壞的數據包括:在所述存儲陣列第n行第m列中的數據損壞時,根據所述第n行第1至m列中各個存儲單元所述存儲的用戶數據計算出第n行第n-1列及第n行第m列中各個存儲單元所述存儲的行校驗數據。

採用該實現方式,可以在在所述存儲陣列第n行第m列中的數據損壞時,修復第n行第n-1列及第n行第m列中各個存儲單元所述存儲的行校驗數據。

第二方面,本申請實施例還提供了一種存儲陣列數據修復裝置,該裝置包括用於執行第一方面及第一方面各實現方式的中方法步驟的單元。

第三方面,本申請實施例還提供了一種存儲設備,該存儲設備包括處理器、存儲器及通信單元。所述處理器執行所述存儲中所存儲的程序,從而完成第一方面及第一方面各實現方式的中方法步驟。

第四方面,本申請還提供了一種存儲陣列,所述存儲陣列包含n行n列存儲單元,n≥4,且所述存儲陣列同一列中的存儲單元位於一個磁碟上,所述存儲陣列同一行中的存儲單元分別位於不同的磁碟上;其中,除位於第n行第m列的存儲單元之外,其他位於第1至m列中的存儲單元均用於存儲用戶數據,m=n-2;位於第n行第n-1列的存儲單元及位於第n行第m列的存儲單元,用於存儲第n行中各個存儲單元所存儲用戶數據的行校驗數據;位於第n-1列中且與第i行相對應的存儲單元,用於存儲第i行中各個存儲單元所存儲用戶數據的行校驗數據,i=1,2,3,……,n-1;位於第n列中且與第k個斜線校驗組相對應的存儲單元,用於存儲第k個斜線校驗組中各個存儲單元所存儲用戶數據的斜線校驗數據,k=1,2,3,……,m;位於第n列中的第一指定存儲單元,用於存儲第一指定行中各個存儲單元所存儲用戶數據的額外校驗數據;位於第n行中的第二指定存儲單元,用於存儲第二指定行中各個存儲單元所存儲用戶數據的額外校驗數據,其中,所述第一指定行與所述第二指定行為所述存儲陣列第1行至第n-1行中的任意兩行。

第五方面,本申請實施例還提供了一種存儲介質,該存儲介質可存儲有程序,該程序執行時可包括本申請提供的用於存儲陣列的數據修複方法的各實施例中的部分或全部步驟。

採用本方面所提供的數據修複方法、裝置及存儲設備等,可以在任意兩個硬碟同時失效時,有效修復存儲陣列各個存儲單元所存儲的數據中損壞的用戶數據。

附圖說明

為了更清楚地說明本申請實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,對於本領域普通技術人員而言,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其它的附圖。

圖1為本申請存儲系統一個實施例的結構示意圖;

圖2為本申請存儲陣列結構示意圖。

圖3為本申請存儲陣列的數據存儲效果示意圖;

圖4為本申請數據修複方法一個實施例的流程示意圖;

圖5為本申請數據修複方法一個實施例的數據損壞示意圖;

圖6為本申請數據修複方法一個實施例的數據修復效果示意圖;

圖7為本申請數據修複方法一個實施例的數據損壞示意圖;

圖8為本申請數據修複方法一個實施例的數據修復效果示意圖;

圖9為本申請數據修複方法一個實施例的數據損壞示意圖;

圖10為本申請數據修複方法一個實施例的數據修復效果示意圖;

圖11為本申請數據存儲裝置一個實施例的結構示意圖。

具體實施方式

參見圖1,為本申請存儲系統一個實施例的結構示意圖。

如圖1所示,所述存儲系統可以包括存儲設備10及至少四個磁碟組成的磁碟組20。

其中,所述存儲設備可以包括:處理器101、存儲器102及通信模塊103。處理器101、存儲器102及通信單元103。這些組件通過一條或多條總線進行通信,本領域技術人員可以理解,圖中示出的結構並不構成對本申請的限定,它既可以是總線形結構,也可以是星型結構,還可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。

所述處理器101,為存儲設備的控制中心,利用各種接口和線路連接整個電子設備的各個部分,通過運行或執行存儲在存儲器102內的軟體程序和/或模塊,以及調用存儲在存儲器內的數據,以執行電子設備的各種功能和/或處理數據。所述處理器可以由集成電路(integratedcircuit,簡稱ic)組成,例如可以由單顆封裝的ic所組成,也可以由連接多顆相同功能或不同功能的封裝ic而組成。舉例來說,處理器101可以僅包括中央處理器(centralprocessingunit,簡稱cpu)。在本申請實施方式中,cpu可以是單運算核心,也可以包括多運算核心。

所述存儲器102,用於存儲程序。處理器101執行存儲器102中存儲的程序,從而實現本申請提供的用於存儲陣列的數據修複方法的各實施例中的部分或全部步驟。

所述通信單元103,用於建立存儲設備10與磁碟組20之間的通信信道,從而使所述存儲設備可以與磁碟組進行通信,使所述存儲設備10可以讀取各個所述磁碟所保存的數據,或向各個所述磁碟中寫入數據。

在此需要說明的是,在本申請的其他實施例中,所述磁碟組20中的磁碟也可以直接通過總線與所述處理器101相連,在此情況下,所述存儲設備也可以不包括所述存儲器102或通信單元103。

參見圖2,為本申請存儲陣列結構示意圖。

如圖2所示,所述存儲陣列可以包含n*n個存儲單元,n≥4,其中,每一個存儲單元用於獨立的存放一個數據塊,通常情況下每個存儲單元的存儲容量為1比特(英文:bit)。所述存儲陣列中的存儲單元以n行n列的方式排布,且所述存儲陣列同一列中的存儲單元位於所述磁碟組20的同一個磁碟上,所述存儲陣列同一行中的存儲單元分別位於不同的磁碟上,所述磁碟可以為物理磁碟(英文:physicaldisk),也可以為邏輯磁碟(英文:logicaldisk)。

在所述存儲陣列中,除位於第n行第m列的存儲單元之外,其他位於第1至m列中的存儲單元均用於存儲用戶數據,m=n-2。

在所述存儲陣列中,位於第n行第n-1列的存儲單元及位於第n行第m列的存儲單元,則用於存儲第n行中各個存儲單元所存儲用戶數據的行校驗數據。

例如,第n行第n-1列及指定的存儲單元可以用於存儲第n行中的存儲單元所保存用戶數據的行校驗數據,其中第i行第n-1列用於存儲第i行的行校驗數據,i=1,2,3,……,n-1。

在所述存儲陣列中,位於第n-1列中且與第i行相對應的存儲單元,用於存儲第i行中各個存儲單元所存儲用戶數據的行校驗數據,i=1,2,3,……,n-1。

例如,位於第i行第n-1列的存儲單元,可以用於存儲第i行中各個存儲單元所存儲用戶數據的行校驗數據。

在所述存儲陣列中,位於第n列中且與第k個斜線校驗組相對應的存儲單元,用於存儲第k個斜線校驗組中各個存儲單元所存儲用戶數據的斜線校驗數據,k=1,2,3,……,m。

例如,位於第k行第n列的存儲單元,可以用於存儲第k個斜線校驗組中各個存儲單元所存儲用戶數據的斜線校驗數據。

位於第n列中的第一指定存儲單元,用於存儲第一指定行中各個存儲單元所存儲用戶數據的額外校驗數據;位於第n行中的第二指定存儲單元,用於存儲第二指定行中各個存儲單元所存儲用戶數據的額外校驗數據。其中,所述第一指定行與所述第二指定行為所述存儲陣列第1行至第n-1行中的任意兩行。

在使用所述存儲陣列存儲數據時,可以首先將用戶數據存儲至第1至m列中除第n行第m列之外的存儲單元。存儲設備可以採用逐列存儲的方式存儲用戶數據,也可以採用逐行存儲的方式向所述存儲陣列寫入用戶數據。

在用戶數據存儲完成後,或者在用戶數據存儲過程中,存儲設備可以生成所述存儲陣列中每一行中存儲單元所保存用戶數據的行校驗數據。其中,行校驗數據生成方式為預先設定的校驗數據生成方式。

為減少運算量,縮短行校驗數據的生成時間,存儲設備可以採用異或校驗方式生成每一行中存儲單元所保存用戶數據的行校驗數據。具體來說,可以令同一行中的用戶數據與該行的行校驗數據的異或運算和為預定值,從而確定行校驗數據。根據實際需要,所述預定值可以為0或1。

例如,第i行用戶數據與第i行的行校驗值之間可以滿足如下關係:其中,di1為所述存儲陣列第i行第1列中存儲的用戶數據,di2為所述存儲陣列第i行第2列中存儲的用戶數據,dim為所述存儲陣列第i行第m列中存儲的用戶數據,pi為所述存儲陣列第i行的行校驗數據,表示異或運算。

所述存儲陣列每一行中存儲單元所保存用戶數據的行校驗數據可以存儲在存儲陣列第n-1列中與該行對應的位置。

為便於完成數據修復,第i行的行校驗數據僅需存儲一份,而第n行中的存儲單元所保存用戶數據的行校驗數據則需存儲兩份;其中,第i行的行校驗數據可以存儲在第i行第n-1列,i=1,2,3,……,n-1;第n行中的存儲單元所保存用戶數據的行校驗數據則可以存儲在第n行第n-1列及第n行第m列。

在用戶數據存儲完成後,或者在用戶數據存儲過程中,存儲設備還可以生成每一個斜線校驗組中的存儲單元所保存用戶數據的斜線校驗數據。其中,所述斜線校驗組是指所述存儲陣列中處在同一個斜線上的存儲單元所組成的校驗組。

其中,斜線校驗數據的生成方式也為預先設定的校驗數據生成方式。為減少運算量,縮短行校驗數據的生成時間,存儲設備也可以採用異或校驗方式生成每一個斜線校驗組的斜線行校驗數據。具體來說,可以令同一斜線校驗組中存儲單元所保存的用戶數據與該斜線校驗組斜線校驗數據的異或運算和為預定值。根據實際需要,所述預定值可以為0或1。

例如,第k個斜線校驗組中的用戶屬於與第k個斜線校驗組的斜線校驗數據可以滿足如下關係:其中,dk1為第k個斜線校驗組中第1個存儲單元所保存的用戶數據,dk2為第k個斜線校驗組中第2個存儲單元所保存的用戶數據,dkm為第k個斜線校驗組中第m個存儲單元所保存的用戶數據,qk為第k個斜線校驗組所保存的用戶數據的斜線校驗數據,表示異或運算。

所述存儲陣列每一個斜線校驗組中的存儲單元所保存用戶數據的斜線校驗數據可以存儲在存儲陣列第n列中與該斜線校驗組相對應的位置。通常情況下,所述額外校驗數據可以按照順序以存儲在所述存儲陣列第n列的存儲單元中,例如,第k個斜線校驗組的斜線校驗數據保存在第k行第n列。

在用戶數據存儲完成後,或者在用戶數據存儲過程中,存儲設備還可以生成所述存儲陣列第一指定行的中的存儲單元所保存用戶數據的斜線校驗數據及第二指定行的中的存儲單元所保存用戶數據的斜線校驗數據。其中,第一指定行與第二指定行可以為的任意兩行,通常情況下,可以以第1行與第n-1行作為分別作為第一指定行與第二指定行。額外校驗數據的生成方式可以與行校驗數據及斜線校驗數據的生成方式均不相同。例如,可以採用raid6解決方案中校驗數據的生成方式生成所述額外校驗數據,或者採用循環冗餘校驗(英文:cyclicredundancycheck,簡稱crc)生成所述額外校驗數據。

在額外校驗數據生成之後,可以第一指定行的中的存儲單元所保存用戶數據的斜線校驗數據存儲在所述存儲陣列第n列中的第一指定存儲單元,並將第二指定行的中的存儲單元所保存用戶數據的斜線校驗數據存儲在第n列中的第二指定存儲單元,其中,所述第一指定存儲單元及所述第二指定存儲單元為所述存儲陣列第n列中除用於保存斜線校驗數據的存儲單元之外的存儲單元。

當n的取值為6時,數據存儲狀況可以如圖3所示。

其中,d1表示屬於第1個斜線教研組中的存儲單元所保存的用戶數據,d2表示屬於第2個斜線教研組中的存儲單元所保存的用戶數據,d3表示屬於第3個斜線教研組中的存儲單元所保存的用戶數據,d4表示屬於第4個斜線教研組中的存儲單元所保存的用戶數據;p1至p6分別表示所述存儲陣列第1至6行中的存儲單元所保存用戶數據的行校驗數據;q1至q4分別表示第1至4個斜線教研組中的存儲單元所保存用戶數據的斜線校驗數據。e1為第1行中的存儲單元所保存用戶數據的額外校驗數據,e2為第n-1行中存儲單元所保存的用戶數據的額外校驗數據。

與前述存儲陣列相對應,本申請還提供了數據修複方法。所述數據修複方法用於在雙盤失效時,對採用前述實施例所述方法存儲的數據進行修復。

其中,雙盤失效是在指所述存儲陣列所使用的硬碟中,由於兩個磁碟同時失效,導致所述存儲陣列中部分存儲單元中存儲的數據(包括用戶數據、行校驗數據、斜線校驗數據及額外校驗數據)被損壞。

所述存儲陣列發生雙盤失效情況包括以下四種:用於存儲行校驗數據的磁碟及存儲有斜線校驗數據的磁碟失效(即所述存儲陣列第n-1列中的存儲單元所在的磁碟,及第n列中的存儲單元所在的磁碟失效);存儲有斜線校驗數據的磁碟及一個存儲有用戶數據的磁碟失效(即,第n列中的存儲單元所在的磁碟,及第1至m-1列中任一列中的存儲單元所在的磁碟失效);兩個存儲有用戶數據的磁碟失效(即,第1至m-1列中任兩列中的存儲單元所在的磁碟失效);用於存儲行校驗數據的磁碟及一個存儲有用戶數據的磁碟失效(即,第n-1列中的存儲單元所在的磁碟,及第1至m-1列中任一列中的存儲單元所在的磁碟失效)。

當用於存儲行校驗數據的磁碟及存儲有斜線校驗數據的磁碟失效時,可以按照預先的生成規則使用用戶數據重新計算行校驗數據、斜線校驗數據及額外校驗數據,具體的數據修復過程在此就不再贅述。

當存儲有斜線校驗數據的磁碟及一個存儲有用戶數據的磁碟失效,可以先使用行校驗數據修復各行中損壞的用戶數據,在用戶數據修復完成後,使用用戶數據修復斜線校驗數據及額外校驗數據,具體的數據修復過程在此也不再贅述。

以下實施例主要用於說明兩個存儲有用戶數據的磁碟失效時存儲陣列中數據修的復過程,以及用於存儲行校驗數據的磁碟及一個存儲有用戶數據的磁碟失效時存儲陣列中數據修。

參見圖4,為本申請用於存儲陣列的數據修複方法一個實施例的流程示意圖。該實施例所述的方法可以由存儲設備的處理器執行。如圖4所示,所述方法包括:

步驟401,當所述存儲陣列第n列中的數據未損壞時,修復第一指定行及第二指定行中各個存儲單元所存儲的數據中損壞的數據。

當所述存儲陣列第n列中的數據未損壞時,處理器可以使用所述存儲陣列第n列中保存的額外校驗數據,修復第一指定行及第二指定行中各個存儲單元所存儲的數據中損壞的數據。

具體來說,處理器可以使用第一指定行中未損壞的數據及所述第一指定行的中的存儲單元所保存用戶數據的斜線校驗數據,修復第一指定行中各個存儲單元所存儲的數據中損壞的數據;並使用第二指定行中未損壞的數據及第二指定行的中的存儲單元所保存用戶數據的斜線校驗數據,修復第二指定行中各個存儲單元所存儲的數據中損壞的數據。

其中,所述第一指定行可以為第1行,所述第二指定行可以為第n-1行,所述第一指定行的中的存儲單元所保存用戶數據的斜線校驗數據可以存儲在第n-1行第n列,所述第二指定行的中的存儲單元所保存用戶數據的斜線校驗數據可以存儲在第n行第n列。

根據發生雙盤失效的磁碟不同,處理器修復所述存儲陣列第一指定行及第二指定行中損壞數據的具體方式也不相同。

當兩個存儲有用戶數據的磁碟失效時,由於第一指定行的行校驗數據及第一指定行的中的存儲單元所保存用戶數據的斜線校驗數據均為未損壞,因此,處理器可以使用第1行的行校驗數據、第1行的額外校驗數據以及第1行中未損壞的用戶數據,修復第1行中損壞的兩個用戶數據。同樣的,由於第二指定行中損壞的用戶數據也可以採用類似的方式修復。

例如,如圖5所示,當6個磁碟中,只有磁碟3及磁碟4失效時,處理器可以使用p1及e1修復第1行中損壞的用戶數據,並可以使用p5及e2修復第5行中損壞的用戶數據。修復的效果如圖6所示。

當一個存儲有用戶數據的磁碟及用於存儲行校驗數據的磁碟失效時,由於第一指定行中僅有一個用戶數據損壞,並且第一指定行的中的存儲單元所保存用戶數據的斜線校驗數據未損壞,因此處理器可以使用第一指定行的中的存儲單元所保存用戶數據的斜線校驗數據修復第一指定行中損壞的用戶數據,並且根據未損壞的用戶數據及修復的用戶數據修復第一指定行的行校驗數據。同樣的,由於第二指定行中損壞的用戶數據及第二指定行的行校驗數據也可以採用類似的方式修復。

例如,如圖7所示,當磁碟3及磁碟5失效時,處理器可以使用e1修復第1行中損壞的用戶數據,並可以使用e2修復第5行中損壞的用戶數據。此時,待修復的數據如圖8所示。

又如,如圖9所示,當磁碟4及磁碟5失效時,處理器同樣可以e1修復第1行中損壞的用戶數據,並可以使用e2修復第5行中損壞的用戶數據。此時,待修復的數據如圖10所示。

在此需要說明的是,本申請不對修復第一指定行及第二指定行中各個存儲單元所存儲的數據中損壞的數據的順序進行限制。在實際使用中,可以先修復第一指定行中各個存儲單元所存儲的數據中損壞的數據,也可以先修復及第二指定行中各個存儲單元所存儲的數據中損壞的數據。

步驟402,使用所述行校驗數據及斜線校驗數據,逐一修復除所述第一指定行及所述第二指定行外其它各行中存儲單元所保存的用數據中損壞的數據。

在第一指定行及第二指定行中各個存儲單元所存儲的數據中損壞的數據被修復之後,處理器可以逐一修復所述存儲陣列除第一指定行及第二指定行外其它行中各個存儲單元所存儲的數據中損壞的數據。

由於雙盤失效至少包含兩個存儲有用戶數據的磁碟失效及一個存儲有用戶數據的磁碟與一個存儲有行校驗數據的磁碟失效兩種情況,針對這兩種情況,可以使用不同的方式進行修復。

當兩個存儲有用戶數據的磁碟失效時,處理器可以使用斜線校驗數據及行校驗數據逐一修復損壞的用戶數據。

例如,在待修復的數據如圖6所示時,可以首先使用斜線校驗數據第4斜線校驗組的未損壞的用戶數據及修復第4斜線教研組中,即第4行第3列中,損壞的數據;然後使用第4行的行校驗數據及第4行中未損壞及被修復後的用戶數據修復第4行第4列中的損壞的用戶數據。其它損壞的用戶數據也可以照此方式修復,在此就不再贅述。

當一個存儲有用戶數據的磁碟與一個存儲有行校驗數據的磁碟失效時,處理器可以首先修復第n行中各個存儲單元所存儲的數據中損壞的數據;在第n行中各個存儲單元所存儲的數據中損壞的數據被修復後,使用斜線校驗數據及行校驗數據逐一修復損壞的用戶數據及損壞的行校驗數據。

在所述存儲陣列第n行第m列中的數據未損壞時,處理器以位於第n行第m列的存儲單元中所存儲的數據作為第n行中的存儲單元所保存用戶數據的行校驗數據修復第n行中各個存儲單元所存儲的用戶數據中損壞的用戶數據。

例如,在待修復的數據如圖8所示時,處理器可以首先利用第6行第4列中保存的行校驗數據及第六行中未損壞的用戶數據修復第6行第3列及第6行第5列中的數據,從而修復第6行中損壞的用戶數據。在第6行中的數據都被修復完成後,再利用與斜線校驗數據逐一修復每一個斜線校驗組中損壞的用戶數據,並逐一修復每一個損壞的行校驗數據。

而在所述存儲陣列第n行第m列中的數據損壞時,處理器可以根據所述第n行第1至m列中各個存儲單元所述存儲的用戶數據計算出第n行第n-1列及第n行第m列中各個存儲單元所述存儲的行校驗數據。

例如,在待修復的數據如圖10所示時,處理器可以首先根據第6行中未損壞的用戶數據計算出第6行的行的行校驗數據,第6行的行校驗數據即為第6行第4列及第6行第5列中的數據。在第6行中的數據都被修復完成後,再利用與斜線校驗數據逐一修復每一個斜線校驗組中損壞的用戶數據,並逐一修復每一個損壞的行校驗數據。

採用本實施例所提供的方法,可以在發生雙盤失效時,修復所述存儲陣列中存儲單元所保存的用數據中損壞的數據。

與本申請用於存儲陣列的數據修複方法相對應,本申請還提供了用於存儲陣列的數據修復裝置。該裝置可以設置在存儲設備上,也可以是存儲設備本身。

參見圖11,為本申請數據修復裝置一個實施例的結構示意圖。

如圖11所示,該裝置可以包括:第一修復單元1101及第二修復單元1102。

其中,第一修復單元1101,用於修復第一指定行及第二指定行中各個存儲單元所存儲的數據中損壞的數據;第二修復單元1102,用於在第一指定行及第二指定行中各個存儲單元所存儲的數據中損壞的數據被修復之後,逐一修復所述存儲陣列除第一指定行及第二指定行外其它行中各個存儲單元所存儲的數據中損壞的數據。

其中,如果所述存儲陣列第n列中各個存儲單元所保存的數據未被損壞,所述第一修復單元1101,可以用於使用第一指定行中各個存儲單元所存儲的數據中未損壞的數據,及所述第一指定存儲單元所存儲的額外校驗數據,修復第一指定行的各個存儲單元中所存儲的數據中損壞的數據;並且用於使用第二指定行中各個存儲單元所存儲的數據中未損壞的數據,及所述第二指定存儲單元所存儲的額外校驗數據,修復第二指定行的各個存儲單元中所存儲的數據中損壞的數據。

可選的,所述第二修復單元1102,具體用於當兩個存儲有用戶數據的磁碟失效時,使用斜線校驗數據及行校驗數據逐一修復損壞的用戶數據。

可選的,所述第二修復單元1102包括:指定行修復子單元,用於當一個存儲有用戶數據的磁碟與一個存儲有行校驗數據的磁碟失效時,修復第n行中各個存儲單元所存儲的數據中損壞的數據;其它行修復子單元,用於在第n行中各個存儲單元所存儲的數據中損壞的數據被修復後,使用斜線校驗數據及行校驗數據,逐一修復所述存儲陣列各個存儲單元中損壞的用戶數據及損壞的行校驗數據。

可選的,所述指定行修復子單元,具體用於在所述存儲陣列第n行第m列中的數據未損壞時,以位於第n行第m列的存儲單元中所存儲的數據作為第n行中的存儲單元所保存用戶數據的行校驗數據修復第n行中各個存儲單元所存儲的用戶數據中損壞的用戶數據。

可選的,所述指定行修復子單元,具體用於在所述存儲陣列第n行第m列中的數據未損壞時,以位於第n行第m列的存儲單元中所存儲的數據作為第n行中的存儲單元所保存用戶數據的行校驗數據修復第n行中各個存儲單元所存儲的用戶數據中損壞的用戶數據。

可選的,所述指定行修復子單元,具體用於在所述存儲陣列第n行第m列中的數據損壞時,根據所述第n行第1至m列中各個存儲單元所述存儲的用戶數據計算出第n行第n-1列及第n行第m列中各個存儲單元所述存儲的行校驗數據。

具體實現中,本申請還提供一種計算機存儲介質,其中,該計算機存儲介質可存儲有程序,該程序執行時可包括本申請提供的用於存儲陣列的數據修複方法的各實施例中的部分或全部步驟。所述的存儲介質可為磁碟、光碟、只讀存儲記憶體(英文:read-onlymemory,簡稱:rom)或隨機存儲記憶體(英文:randomaccessmemory,簡稱:ram)等。

本領域的技術人員可以清楚地了解到本申請實施例中的技術可藉助軟體加必需的通用硬體平臺的方式來實現。基於這樣的理解,本申請實施例中的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品可以存儲在存儲介質中,如rom/ram、磁碟、光碟等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行本申請各個實施例或者實施例的某些部分所述的方法。

本說明書中各個實施例之間相同相似的部分互相參見即可。尤其,對於裝置與設備實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例中的說明即可。

以上所述的本申請實施方式並不構成對本申請保護範圍的限定。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀