一種用于raid6的數據恢復方法
【技術領域】
[0001]本發明涉及信息安全技術領域,特別涉及一種用于RAID6的數據恢復方法。
【背景技術】
[0002]RAID6是指帶有兩種分布存儲的奇偶校驗碼的獨立硬盤結構,兩個獨立的校驗系統使用不同的算法,數據的可靠性非常高。主要針對數據絕對不能出錯的場合,如大存儲資源的企事業單位,例如影音多媒體數字內容創作公司、個人影音剪輯數字內容工作室、證券、銀行等金融行業、數字監控系統(DVR)、網絡監控系統(NVR)等。
[0003]如果RAID6出現故障,產生的后果往往是災難性的。因此針對RAID6的重組和數據恢復就必不可少了。目前市面上有一些針對RAID 6的數據進行重組和恢復的方法,但是這些方法需要專業人士才能夠完成操作,恢復速度慢、正確率不高。
【發明內容】
[0004]本發明針對現有技術的缺陷,提供了一種用于RAID6的數據恢復方法,能有效的解決上述現有技術存在的問題。
[0005]一種用于RAID6的數據恢復方法,包括以下步驟:
[0006]S1:在所有盤中檢索NTFS分區的DBR ;
[0007]S2:DBR中檢索MFT表開始位置;
[0008]S3:計算陣列條帶大小;
[0009]S4:計算陣列開始位置;
[0010]S5:判斷效驗區,并重組陣列;
[0011]S6:通過奇偶校驗恢復丟失數據。
[0012]所述SI的詳細步驟如下:
[0013]SlOl:以扇區為單位向上進行檢索,找扇區偏移位“512 = 509”;
[0014]S102:判斷該位置是否有DBR尾部特征,若有則執行S103,若沒有以該位置為起點執行SlOl ;
[0015]S103:判斷該扇區偏移位“512 = O”是否為DBR頭部特征,若是則執行S104,若不是則以該位置為起點執行SlOl ;
[0016]S104:根據DBR中偏移位置“0x28”的4個字節確定當前分區大小,將分區大小定義為“TS”,磁盤數定義為“N”;
[0017]S105:DBR尾部向上偏移TS/(N_2)的偏移量,判斷偏移后是否為本分區DBR頭部位置若是則記錄并以該位置為起點執行S101,若不是則執行S106 ;
[0018]S106:判斷是否為硬盤頂部,若是則結束,若不是則以該位置為起點執行S101。
[0019]所述S2的詳細步驟如下:
[0020]S201:找分區開始偏移“0x30”位置的8個字節,該8個字節為分區開始到分區MFT頭部的總簇數,將總簇數值定義為“CS” ;
[0021]S202:找分區開始偏移“OxD”位置的I個字節,該I個字節為該分區簇大小,將分區簇大小定義為“C”;
[0022]S203:通過公式(CS*C) / (N_2)計算得到分區開始偏移至MFT頭部的偏移量;
[0023]S204:MFT頭部偏移至“0x0”位置,判斷4個字節是否為MFT特征,若是則結束,若否則執行S205 ;
[0024]S205:檢索整個盤找到MFT特征。
[0025]所述S3的詳細步驟如下:
[0026]S301:根據MFT表偏移位置“0x2C”的4個字節找到記錄MFT順序的數據,根據分區開始偏移“OxB”位置兩個字節得到每個扇區字節數;
[0027]S302:向下掃描MFT表,掃描途中出現同類連續數據忽然中斷,記錄該位置;
[0028]S303:繼續向下掃描,又出現上述中斷情況則,記錄該位置,根據302記錄位置和和S303記錄的位置總大小除以2得到條帶大小,將條帶大小定義為“M”。
[0029]作為優選,所述S4的詳細步驟如下:
[0030]S401:將第一個條帶開始到分區DBR頭部位置之間的扇區大小定義為“T” ;
[0031]S402:通過公式T/Μ判斷是否能整除,若能則認為分區開始即為陣列開始位置;若不能則通過公式[(T整除M)+1]*M = Y,從條帶向上偏移Y得到該分區陣列開始位置,并通過上訴方法得到所有分區陣列開始位置。
[0032]作為優選,所述S5的詳細步驟如下:
[0033]S501:將所有硬盤數據橫向位置整體排列為陣列,根據MFT特征位置橫向檢索陣列中所有盤相同位置并判斷是否有MFT特征,若沒有則認為是校驗區,其中N-2個盤為數據區,剩余2個盤是效驗區;
[0034]S502:將數據區條帶按照MFT數據特征從小到大依次排列,并將校驗區排列成線性關系;
[0035]S503:根據盤序列、陣列開始、條帶大小按照RAID6結構重組數據。
[0036]作為優選,S6中所述奇偶校驗具體為,列出2個方程如下:
[0037]N=陣列總盤數-2;
[0038]P = Rl xor R2 xor R3......xor RN ;
[0039]Q= (Rl*rl) xor (R2*r2) xor (R3*r3)…..xor (RN*rN);
[0040]Rl、R2、R3、RN為數據區數據;
[0041]P與Q為效驗區數據;
[0042]rl、r2、r3、rN為常量系數,取值I到255之間的整數。
[0043]與現有技術相比本發明的優點在于:能夠利用DBR特征和MFT特征快速掃描并得到整個陣列結構,準確區分數據區與校驗區數據,利用RIAD6的常見陣列排列方式進行數據匹配重組,可應對一塊硬盤丟失和兩塊硬盤丟失的數據恢復。解析整個陣列結構速度快,數據重組速度快,數據恢復成功率高。
【附圖說明】
[0044]圖1為發明實施例重組RAID6的第一種陣列結構圖;
[0045]圖2為發明實施例重組RAID6的第二種陣列結構圖。
【具體實施方式】
[0046]為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖并舉實施例,對本發明做進一步詳細說明。
[0047]一種用于RAID6的數據恢復方法,包括以下步驟:
[0048]S1:在所有盤中檢索NTFS分區的DBR ;
[0049]S2:DBR中檢索MFT表開始位置;
[0050]S3:計算陣列條帶大小;
[0051]S4:計算陣列開始位置;
[0052]S5:判斷效驗區,并重組陣列;
[0053]S6:恢復丟失數據。
[0054]所述SI的詳細步驟如下:
[0055]SlOl:以扇區為單位向上進行檢索,找扇區偏移位“512 = 509”;
[0056]S102:判斷該位置是否有DBR尾部特征“0055AA”,若有則執行S103,若沒有以該位置為起點執行SlOl ;
[0057]S103:判斷該扇區偏移位“512 = O”是否為DBR頭部特征“0xEB52904E544653”,若是則執行S104,若不是則以該位置為起點執行SlOl ;
[0058]S104:根據DBR中偏移位置“0x28”的4個字節確定當前分區大小,將分區大小定義為“TS”,磁盤數定義為“N”;
[0059]S105:DBR尾部向上偏移TS/(N_2)的偏移量,判斷偏移后是否為本分區DBR頭部位置若是則記錄并以該位置為起點執行S101,若不是則執行S106 ;
[0060]S106:判斷是否為硬盤頂部,若是則結束,若不是則以該位置為起點執行SlOl。[0061 ] 所述S2的詳細步驟如下:
[0062]S201:找分區開始偏移“0x30”位置的8個字節,該8個字節為分區開始到分區MFT頭部的總簇數,將總簇數值定義為“CS” ;
[0063]S202:找分區開始偏移“OxD”位置的I個字節,該I個字節為該分區簇大小,將分區簇大小定義為“C”;
[0064]S203:通過公式(CS*C) / (N_2)計算得到分區開始偏移至MFT頭部的偏移量;
[0065]S204:MFT頭部偏移至“0x0”位置,判斷4個字節是否為MFT特征“0x46494C4530”,若是則結束,若否則執行S205 ;
[0066]S205:檢索整個盤找到 MFT 特征 “0x46494C4530”。
[0067]所述S3的詳細步驟如下:
[0068]S301:根據MFT表偏移位置“0x2C”的4個字節找到記錄MFT順序的數據,根據分區開始偏移“OxB”位置兩個字節得到每個扇區字節數;
[0069]S302:向下掃描MFT表,掃描途中出現同類連續數據忽然中斷,記錄該位置;