專利名稱:一種數據存儲和數據恢復方法
技術領域:
本發明涉及數據安全存儲領域,尤其涉及一種數據存儲和數據恢復方法。
背景技術:
數據安全存儲技術是一項重要的技術,可用于對重要的數據進行存儲,并且在數據出現一定的損壞時可以恢復數據。數據存儲應用的環境很多,在所有基本的信號處理系統中,都需要對數字化的信息進行存儲,但由于應用場合的不同以及外界的干擾,存儲的數據難免存在損壞,讀取時無法讀取到正確的數據,因此需要某種數據存儲和恢復技術對數據進行恢復。例如DVR(Digital Video Recorder,數字視頻錄像機)就是視頻監控領域中的重要設備,可以存儲錄制的視頻數據,由于DVR的安置環境經常會比較差,儲存的數據可能會因為電磁原因或者震動原因損壞,因此需要給DVR添加一定的數據安全機制,保證存儲的數據出現問題時,能夠恢復損壞的數據。在現有技術中,一種存儲恢復方法是將待存儲的數據分割成多個分割數據,計算多個分割數據的校驗和,以及多個分割數據與校驗和的按位異或結果,將多個分割數據與生成的校驗數據同時進行存儲。數據損壞時可以根據校驗數據和未損壞的數據進行恢復。 但該方法將數據進行重復存儲,占用了較多的額外存儲空間。另一種存儲恢復方法是在所存儲的每個數據邏輯存儲塊中設置實際存儲數據的雙重校驗碼,并為每個數據邏輯存儲塊配置特殊標志和編號。數據損壞時根據數據邏輯存儲塊的特殊標志找到該組數據的各個數據邏輯存儲塊;然后,根據數據邏輯存儲塊的編號將各個數據邏輯存儲塊順序連接起來;最后,將每個數據邏輯存儲塊通過校驗碼進行數據恢復。該方法能夠恢復一行或一列損壞的數據,但對于恢復多行多列數據損壞的情況,則有較大限制。
發明內容
本發明的實施例提供一種數據存儲和恢復方法,能夠減少數據恢復的條件限制, 利用有限的存儲空間,更大范圍地恢復損壞的數據。為達到上述目的,本發明的實施例采用如下技術方案—方面,提供了一種數據存儲方法,包括對分配的存儲空間以行列矩陣形式的邏輯塊為單位進行等分割,得到相同的至少兩個邏輯存儲塊,其中,每個邏輯存儲塊為行列矩陣形式,所述至少兩個邏輯存儲塊疊加構成三維矩陣形式;對每個邏輯存儲塊的各行數據分別進行校驗,得到每行的行校驗值;對每個邏輯存儲塊的各列數據分別進行校驗,得到每列的列校驗值;對所述三維矩陣形式的至少兩個邏輯存儲塊第三維上的每組數據分別進行校驗, 得到每組數據的第三維校驗值。另一方面,提供了一種采用上述數據存儲方法的數據恢復方法,包括
邏輯存儲塊內數據恢復和/或邏輯存儲塊間數據恢復;所述邏輯存儲塊內數據恢復包括若損壞數據所在的列上只有所述損壞數據一處損壞時,則用所述列上其他未損壞的所有數據以及所述列的列校驗值對所述損壞數據進行恢復;和/或若損壞數據所在的行上只有所述損壞數據一處損壞時,則用所述行上其他未損壞的所有數據以及所述行的行校驗值對所述損壞數據進行恢復;所述邏輯存儲塊間數據恢復包括若損壞數據所在的第三維組中只有所述損壞數據一處損壞時,則用所述第三維組中其他未損壞的所有數據以及所述第三維組的第三維校驗值對所述損壞數據進行恢復。本發明實施例提供的數據存儲和數據恢復方法,在數據存儲時,對分配的存儲空間以行列矩陣形式的邏輯塊為單位進行等分割,得到相同的多個邏輯存儲塊,其中,每個邏輯存儲塊為行列矩陣形式,多個邏輯存儲塊疊加構成三維矩陣形式;對每個邏輯存儲塊的各行、各列數據分別進行校驗,得到每行的行校驗值以及每列的列校驗值;對三維矩陣形式的多個邏輯存儲塊第三維上的每組數據分別進行校驗,得到每組數據的第三維校驗值。由此,得到了橫向、縱向和第三維的三組校驗值,以便在恢復數據時能夠針對多行多列進行恢復;另外,本發明實施例所得到的校驗值數量并不很多,校驗值相對原始數據而言所占空間并不很大,解決了現有技術中占用存儲空間大的問題,而同時又能夠提供較好的數據恢復功能。在數據恢復時,采用了邏輯存儲塊內數據恢復、邏輯存儲塊間數據恢復以及邏輯存儲塊內、塊間聯合數據恢復。豐富了現有技術中的數據恢復方式,在塊內的行、列數據恢復的基礎上,通過塊間的第三維數據恢復減少了數據恢復的條件限制,利用有限的存儲空間,能夠更大范圍地恢復損壞的數據,且不增加恢復難度。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發明實施例提供的數據存儲方法的流程框圖;圖2為本發明實施例提供的數據存儲方法中,一個邏輯存儲塊的邏輯結構示意圖;圖3為本發明實施例提供的數據存儲方法中,多個邏輯存儲塊的邏輯結構示意圖;圖4為本發明實施例提供的數據存儲方法中,一個邏輯存儲塊內的行校驗和列校驗示意圖;圖5為本發明實施例提供的數據存儲方法中,多個邏輯存儲塊的第三維校驗的示意圖;圖6為本發明實施例提供的數據恢復方法中,邏輯存儲塊塊內恢復的邏輯結構示意圖7為本發明實施例提供的數據恢復方法中,邏輯存儲塊塊內恢復的邏輯結構另
一示意圖;圖8為本發明實施例提供的數據恢復方法中,邏輯存儲塊塊間恢復的邏輯結構示意圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。本發明實施例提供的數據存儲方法,如圖1所示,包括以下步驟S101、對分配的存儲空間以行列矩陣形式的邏輯塊為單位進行等分割,得到相同的至少兩個邏輯存儲塊,其中,每個邏輯存儲塊為行列矩陣形式,至少兩個邏輯存儲塊疊加構成三維矩陣形式。具體的,可以先將分配的存儲空間形成邏輯上的行列矩陣形式,然后以預定的行列矩陣形式的邏輯塊為單位進行等分隔,該邏輯塊的大小可以由用戶自己決定。分割后得到多個相同的邏輯存儲塊,如圖2所示,假設本實施例中的一個邏輯存儲塊為8行X 10列。 多個邏輯存儲塊疊加構成三維矩陣形式,結構如圖3所示,假設本實施例共分為3個邏輯存儲塊。進一步地,可以為要存儲的數據分配連續的存儲空間,這樣能夠加快磁盤讀寫速度,并且在后續分塊處理數據時,能夠使數據整齊易處理。S102、對每個邏輯存儲塊的各行數據分別進行校驗,得到每行的行校驗值。如圖4所示,表示一個邏輯存儲塊在進行第一行的校驗,得到第一行校驗值。當本邏輯存儲塊的各行都校驗結束后,得到8個行校驗值。S103、對每個邏輯存儲塊的各列數據分別進行校驗,得到每列的列校驗值。如圖4所示,表示一個邏輯存儲塊在進行第一列的校驗,得到第一列校驗值。當本邏輯存儲塊的各列都校驗結束后,得到10個列校驗值。S104、對三維矩陣形式的至少兩個邏輯存儲塊第三維上的每組數據分別進行校驗,得到每組數據的第三維校驗值。在本實施例中,共等分得到了 3個邏輯存儲塊,即對這三維矩陣形式的3個邏輯存儲塊第三維上的每組數據分別進行校驗,如圖5所示,表示對三維矩陣的左上角的一組數據進行校驗,得到左上角這一組的第三維校驗值。由于每個邏輯存儲塊為8行XlO列,所以第三維校驗結束后,共得到80個第三維校驗值。在本實施例中,步驟S102、S103、S104所進行的校驗可以為各個數據之間的異或運算,這樣算法復雜度低,可以實現快速的數據存儲和讀取。但本發明實施例并不限于此, 其他的校驗運算也可以,只要能夠用來進行數據恢復的所有校驗運算都應落入本申請保護范圍內。進一步地,為了便于判斷邏輯存儲塊中的數據是否出現損壞,還可以再計算整個邏輯存儲塊的所有數據的整塊校驗值。在后期判斷過程中,如果該整塊校驗值變化,則可以說明該邏輯存儲塊內有數據損壞。此外,上述計算得到的行校驗值、列校驗值、第三維校驗值和整塊校驗值分別對應存儲到另外分配的存儲區域中,以便于恢復數據時對應使用。需要說明的是,本實施例中的步驟S102、S103、S104沒有順序性,既可以同時計算得出,也可以先后計算得出,這取決于用戶的設定和設備的計算能力。本發明實施例提供的數據存儲方法,對分配的存儲空間以行列矩陣形式的邏輯塊為單位進行等分割,得到相同的多個邏輯存儲塊,其中,每個邏輯存儲塊為行列矩陣形式, 多個邏輯存儲塊疊加構成三維矩陣形式;對每個邏輯存儲塊的各行、各列數據分別進行校驗,得到每行的行校驗值以及每列的列校驗值;對三維矩陣形式的多個邏輯存儲塊第三維上的每組數據分別進行校驗,得到每組數據的第三維校驗值。由此,得到了橫向、縱向和第三維上的三組校驗值,以便在恢復數據時能夠針對多行多列進行恢復。另外,本發明實施例所得到的校驗值數量并不很多,校驗值相對原始數據而言所占空間并不很大。假設邏輯存儲塊的大小是W行XH列,則塊內校驗值所需要的空間大小是W+H+l (即行校驗值個數+列校驗值個數+整塊校驗值);而塊間的第三維校驗值所需空間大小為WXH(即塊內數據個數),所以校驗值一共占用(W+H+1) + (WXH),相對存儲空間內的數據個數而言,其所占用的空間不大。總之,本發明實施例提供的數據存儲方法解決了現有技術中占用存儲空間大的問題,而同時又能夠提供較好的數據恢復功能。本發明實施例提供的利用上述數據存儲方法的數據恢復方法,該數據恢復方法包括邏輯存儲塊內數據恢復和/或邏輯存儲塊間數據恢復,即包括塊內數據恢復、塊間數據恢復以及塊內塊間聯合數據恢復。其中,邏輯存儲塊內數據恢復包括若損壞數據所在的列上只有該損壞數據一處損壞時,則用該列上其他未損壞的所有數據以及該列的列校驗值對該損壞數據進行恢復。和/或若損壞數據所在的行上只有該損壞數據一處損壞時,則用該行上其他未損壞的所有數據以及該行的行校驗值對該損壞數據進行恢復。S卩,塊內數據恢復包括行(橫向)數據恢復、列(縱向)數據恢復以及行、列(橫向、縱向)聯合數據恢復。邏輯存儲塊間數據恢復包括若損壞數據所在的第三維組中只有該損壞數據一處損壞時,則用該第三維組中其他未損壞的所有數據以及該第三維組的第三維校驗值對該損壞數據進行恢復。具體的,對于塊內塊間聯合數據恢復,可以分為兩種情況情況1 若第一損壞數據所在的行或列上只有該第一損壞數據一處損壞時,則先進行邏輯存儲塊內數據恢復;恢復后,若第二損壞數據所在的第三維組中只有該第二損壞數據一處損壞時,則再進行邏輯存儲塊間數據恢復。即先塊內后塊間的數據恢復。情況2 若第一損壞數據所在的第三維組中只有該第一損壞數據一處損壞時,則先進行邏輯存儲塊間數據恢復;恢復后,若第二損壞數據所在的行或列上只有該第二損壞數據一處損壞時,則再進行邏輯存儲塊內數據恢復。即先塊間后塊內的數據恢復。下面分情況具體進行說明。
在讀取數據的時候,需對對數據進行再校驗和數據恢復。讀取數據時的再校驗和存儲數據時的校驗是同一運算過程,即校驗和再校驗是一模一樣的計算,這樣才能進行比對判斷。由于上述存儲實施例中校驗采用的是異或運算,則在本實施例中,讀取時采用的再校驗同樣采用異或運算。首先對每個邏輯存儲塊的數據進行整個塊的再校驗,即計算整個邏輯存儲塊的異或值,得到各個邏輯存儲塊的整塊再校驗值。并與數據存儲時計算的整塊校驗值進行比較, 若兩者相等,則認為該邏輯存儲塊內數據正常;若兩者不相等則認為該邏輯存儲塊內數據出現損壞,需要恢復。對邏輯存儲塊內的損壞數據進行恢復時,需要找到該損壞數據的位置,其方法可以為對邏輯存儲塊的各行數據分別進行再校驗,得到每行的行再校驗值;若某行的行再校驗值與保存的數據存儲時的行校驗值不相等,則確定該行中的數據出現損壞。對邏輯存儲塊的各列數據分別進行再校驗,得到每列的列再校驗值;若某列的列再校驗值與保存的數據存儲時的列校驗值不相等,則確定該列中的數據出現損壞。通過損壞數據行、損壞數據列的交叉確定損壞數據在邏輯存儲塊中的位置。數據恢復的過程如下1、邏輯存儲塊內的數據恢復(1)若邏輯存儲塊內的損壞數據位于同一行不同列上時,則可以通過損壞數據所在列的其他未損壞數據以及保存的該列的列校驗值對這個損壞數據進行恢復。即用損壞數據所在列的其他行的未損壞數據與數據存儲時該列的列校驗值進行異或運算,恢復該損壞數據。如圖6所示,假設在第3行的第3、5、6列上數據出現損壞,那么對于第3行第3列的損壞數據,就利用第3列上的其他未損壞數據和第3列的列校驗值進行恢復,同樣,其他兩個損壞數據也是如此。總之,若某列上只有該損壞數據一處損壞時,則用該列上其他未損壞的所有數據以及該列的列校驗值對這一損壞數據進行恢復。(2)若邏輯存儲塊內的損壞數據位于同一列不同行上時,則可以通過損壞數據所在行的其他未損壞數據以及保存的該行的列校驗值對這個損壞數據進行恢復。即用損壞數據所在行的其他列的未損壞數據與數據存儲時該行的行校驗值進行異或運算,恢復該損壞數據。如圖7所示,假設在第4列的第2、5、6行上數據出現損壞,那么對于第4列第2行的損壞數據,就利用第2行上的其他未損壞數據和第2行的行校驗值進行恢復,同樣,其他兩個損壞數據也是如此。總之,若某行上只有該損壞數據一處損壞時,則用該行上其他未損壞的所有數據以及該行的行校驗值對這一損壞數據進行恢復。進一步地,當邏輯存儲塊內的損壞數據位于多行多列上時,若損壞數據滿足行恢復的要求就先按照行恢復方法進行恢復,恢復后,若其他損壞數據滿足列恢復的要求就再按照列恢復方法進行恢復;同樣,若損壞數據滿足列恢復的要求就先按照行恢復方法進行恢復,恢復后,若其他損壞數據滿足列恢復的要求就再按照列恢復方法進行恢復。總之,行、 列恢復并沒有嚴格的順序性,可以交替進行。但在實際應用中,為方便起見,也可以預設一個恢復的順序,例如針對所有的損壞數據,可以先進行行恢復,將滿足行恢復條件的所有損壞數據都進行恢復,恢復后,再對其他損壞數據進行列恢復。當然,這只是舉例,也可以采用其他的順序。2、邏輯存儲塊間的數據恢復
(1)如果三維矩陣形式的各個邏輯存儲塊中只有一個邏輯存儲塊內出現數據損壞,并且損壞的邏輯存儲塊不只是某一行或者某一列的數據損壞,如圖8所示,無法在邏輯存儲塊內進行恢復。這種情況下可以通過第三維的校驗值恢復本塊內的損壞數據。即針對某一處損壞數據,在其所在的第三維組上,利用該第三維組上的其他未損壞數據與保存的該第三維組的第三維校驗值進行異或運算,恢復該損壞數據。(2)如果三維矩陣形式的各個邏輯存儲塊中有兩個邏輯存儲塊內數據出現損壞, 而其他邏輯存儲塊內數據都正確,并且每個出現損壞的邏輯存儲塊內都是多行多列出現數據損壞,無法通過塊內恢復。但只要這兩個邏輯存儲塊所損壞的數據在第三維上位置上不重疊,則可以通過第三維校驗值進行恢復。(3)通過上述兩個邏輯存儲塊的數據損壞恢復過程可以推出,如果有N個邏輯存儲塊的數據出現損壞,且每個邏輯存儲塊內損壞的數據都不能通過塊內恢復時,只要這N 個邏輯存儲塊每個塊損壞的數據在第三維上不重疊,即每一處損壞數據在其所在的第三維組上唯一,則都可以通過第三維的校驗值恢復損壞的數據。總之,若第三維組中只有該損壞數據一處損壞時,則用該第三維組中其他未損壞的所有數據以及該第三維組的第三維校驗值對該損壞數據進行恢復。3、邏輯存儲塊內和塊間的聯合數據恢復先邏輯存儲塊內后邏輯存儲塊間的恢復(1)如果三維矩陣形式的各個邏輯存儲塊中有兩個邏輯存儲塊出現數據損壞,其他邏輯存儲塊都正確,并且這兩個邏輯存儲塊損壞的數據在第三維的位置上重疊,無法直接通過第三維校驗值進行恢復。但如果其中某一個邏輯存儲塊滿足塊內數據恢復的特點, 即塊內該損壞數據在行或列上唯一,則可以先在該邏輯存儲塊內利用上述塊內恢復方法將其恢復,此時另一邏輯存儲塊中的損壞數據在第三維上就變成唯一的了,之后就可以利用塊間恢復數據的方法恢復對其進行恢復了。(2)如果三維矩陣形式的各個邏輯存儲塊中有N個邏輯存儲塊出現數據損壞,且損壞的數據在第三維上重疊,無法直接用塊間數據進行恢復,若N個邏輯存儲塊中如果有M 個邏輯存儲塊符合塊內恢復的特點,即塊內該損壞數據在行或列上唯一,則先用塊內數據恢復方法恢復這M個邏輯存儲塊,之后,剩下的N-M個邏輯存儲塊的損壞數據如果在第三維上唯一,則可以利用塊間數據恢復方法再次進行恢復。先邏輯存儲塊間后邏輯存儲塊內的恢復(1)如果三維矩陣形式的各個邏輯存儲塊中有兩個邏輯存儲塊出現數據損壞,其他邏輯存儲塊都正確,如果這兩個邏輯存儲塊損壞的數據都不符合塊內數據恢復的特點, 即塊內該損壞數據在行或列上不唯一,無法直接用塊內數據恢復方法。但如果其中某一個邏輯存儲塊滿足塊間數據恢復的特點,即塊內該損壞數據在其所在第三維組上唯一,則可以先利用上述塊間數據恢復方法將該塊內的損壞數據恢復,此時該邏輯存儲塊中損壞數據在行或列上就變成唯一的了,之后再利用塊內數據恢復方法對其進行恢復。另一邏輯存儲塊塊也可以用同樣方法進行恢復。(2)三維矩陣形式的各個邏輯存儲塊中有N個邏輯存儲塊損壞,每個邏輯存儲塊中的損壞數據都不滿足塊內恢復的特點,即損壞數據在塊內的行或列上不唯一,各邏輯存儲塊無法直接用塊內數據進行恢復。但如果這N個邏輯存儲塊中的損壞數據在第三維上唯一,那么就可以先進行塊間恢復,之后若損壞數據滿足了塊內恢復的特點,即在塊內的行或列上唯一,就可以再次進行塊內恢復以完成最終恢復。需要說明的是,邏輯存儲塊的塊內恢復和塊間恢復并沒有嚴格的順序,可以反復交替進行。但在實際應用中,為方便起見,也可以預設一個恢復的順序,例如針對各個邏輯存儲塊上的所有的損壞數據,可以先進行各邏輯存儲塊的塊內數據恢復,且塊內數據恢復先進行行恢復再進行列恢復,塊內數據恢復之后,再進行塊間數據恢復。當然,這只是舉例, 也可以采用其他的順序。本發明實施例提供的利用上述實施例的數據存儲方法的數據恢復方法,采用了邏輯存儲塊內數據恢復、邏輯存儲塊間數據恢復以及邏輯存儲塊內、塊間聯合數據恢復。豐富了現有技術中的數據恢復方式,在塊內的行、列數據恢復的基礎上,通過塊間的第三維數據恢復減少了數據恢復的條件限制,利用有限的存儲空間,能夠更大范圍地恢復損壞的數據, 且不增加恢復難度。本領域普通技術人員可以理解實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執行時,執行包括上述方法實施例的步驟;而前述的存儲介質包括R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質。以上所述,僅為本發明的具體實施方式
,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應所述以權利要求的保護范圍為準。
權利要求
1.一種數據存儲方法,其特征在于,包括對分配的存儲空間以行列矩陣形式的邏輯塊為單位進行等分割,得到相同的至少兩個邏輯存儲塊,其中,每個邏輯存儲塊為行列矩陣形式,所述至少兩個邏輯存儲塊疊加構成三維矩陣形式;對每個邏輯存儲塊的各行數據分別進行校驗,得到每行的行校驗值;對每個邏輯存儲塊的各列數據分別進行校驗,得到每列的列校驗值;對所述三維矩陣形式的至少兩個邏輯存儲塊第三維上的每組數據分別進行校驗,得到每組數據的第三維校驗值。
2.根據權利要求1所述的數據存儲方法,其特征在于,所述方法還包括對每個邏輯存儲塊上的所有數據進行校驗,得到每個邏輯存儲塊的整塊校驗值。
3.根據權利要求1所述的數據存儲方法,其特征在于,所述分配的存儲空間為連續的存儲空間。
4.根據權利要求2所述的數據存儲方法,其特征在于,將所述行校驗值、列校驗值、第三維校驗值和整塊校驗值分別對應存儲到另外的存儲區域中。
5.一種采用權利要求1所述的數據存儲方法的數據恢復方法,其特征在于,所述數據恢復方法包括邏輯存儲塊內數據恢復和/或邏輯存儲塊間數據恢復;所述邏輯存儲塊內數據恢復包括若損壞數據所在的列上只有所述損壞數據一處損壞時,則用所述列上其他未損壞的所有數據以及所述列的列校驗值對所述損壞數據進行恢復;和/或若損壞數據所在的行上只有所述損壞數據一處損壞時,則用所述行上其他未損壞的所有數據以及所述行的行校驗值對所述損壞數據進行恢復;所述邏輯存儲塊間數據恢復包括若損壞數據所在的第三維組中只有所述損壞數據一處損壞時,則用所述第三維組中其他未損壞的所有數據以及所述第三維組的第三維校驗值對所述損壞數據進行恢復。
6.根據權利要求5所述的數據恢復方法,其特征在于,所述邏輯存儲塊內數據恢復和邏輯存儲塊間數據恢復包括若第一損壞數據所在的行或列上只有所述第一損壞數據一處損壞時,則先進行所述邏輯存儲塊內數據恢復;恢復后,若第二損壞數據所在的第三維組中只有所述第二損壞數據一處損壞時,則再進行所述邏輯存儲塊間數據恢復;或者若第一損壞數據所在的第三維組中只有所述第一損壞數據一處損壞時,則先進行所述邏輯存儲塊間數據恢復;恢復后,若第二損壞數據所在的行或列上只有所述第二損壞數據一處損壞時,則再進行所述邏輯存儲塊內數據恢復。
7.根據權利要求5所述的數據恢復方法,其特征在于,用所述列上其他未損壞的所有數據以及所述列的列校驗值對所述損壞數據進行恢復包括用所述列上其他未損壞的所有數據與所述列的列校驗值進行異或運算,恢復所述損壞數據;用所述行上其他未損壞的所有數據以及所述行的行校驗值對所述損壞數據進行恢復包括用所述行上其他未損壞的所有數據與所述行的行校驗值進行異或運算,恢復所述損壞數據;用所述第三維組中其他未損壞的所有數據以及所述第三維組的第三維校驗值對所述損壞數據進行恢復包括用所述第三維組中其他未損壞的所有數據與所述第三維組的第三維校驗值進行異或運算,恢復所述損壞數據。
8.根據權利要求5所述的數據恢復方法,其特征在于,對邏輯存儲塊上的所有數據進行再校驗,得到所述邏輯存儲塊的整塊再校驗值;若所述邏輯存儲塊的整塊校驗值和整塊再校驗值不相等,則確定所述邏輯存儲塊中的數據出現損壞。
9.根據權利要求8所述的數據恢復方法,其特征在于,對邏輯存儲塊的各行數據分別進行再校驗,得到每行的行再校驗值;若某行的行再校驗值與行校驗值不相等,則確定該行中的數據出現損壞;對邏輯存儲塊的各列數據分別進行再校驗,得到每列的列再校驗值;若某列的列再校驗值與列校驗值不相等,則確定該列中的數據出現損壞;通過數據損壞行、數據損壞列的交叉確定損壞數據在邏輯存儲塊中的位置。
全文摘要
本發明實施例提供一種數據存儲和數據恢復方法,涉及數據安全存儲領域,能夠減少數據恢復的條件限制,利用有限的存儲空間,更大范圍地恢復損壞的數據。其存儲方法為對分配的存儲空間以行列矩陣形式的邏輯塊為單位進行等分割,得到相同的至少兩個邏輯存儲塊;對邏輯存儲塊進行行、列和第三維校驗,得到各自的校驗值。恢復方法采用邏輯存儲塊內數據恢復、邏輯存儲塊間數據恢復以及邏輯存儲塊內塊間的聯合數據恢復。本發明實施例用于數據存儲和讀取。
文檔編號G06F11/10GK102346693SQ20101024106
公開日2012年2月8日 申請日期2010年7月30日 優先權日2010年7月30日
發明者秦曉紅 申請人:海信集團有限公司