服務(wù)器數(shù)據(jù)恢復(fù)環(huán)境:
infortrend某型號(hào)存儲(chǔ);
12塊硬盤組成RAID6,一個(gè)GPT分區(qū)文件系統(tǒng)為NTFS。
服務(wù)器故障:
3塊硬盤離線后強(qiáng)制激活并做了REBUILD,數(shù)據(jù)出錯(cuò)。
服務(wù)器數(shù)據(jù)恢復(fù)過程:
1、在一臺(tái)WINDOWS Server服務(wù)器上用一張陣列卡接2組磁盤陣列。A組陣列連接12塊源盤,B組陣列連接12塊目標(biāo)盤。
2、保持A組所有磁盤在WINDOWS Server中脫機(jī)并激活所有B組硬盤。用工具把A組12塊硬盤一對(duì)一鏡像到B組12塊硬盤。
3、鏡像完成后,關(guān)機(jī)并將A組源盤全部取出,后續(xù)的數(shù)據(jù)恢復(fù)操作全部在鏡像盤上進(jìn)行,避免對(duì)原始數(shù)據(jù)造成二次傷害。
4、分析12塊鏡像盤結(jié)構(gòu),發(fā)現(xiàn)每塊硬盤前部都有明顯的RAID信息的痕跡,查找并確定RAID中LUN的起始分配位置。
5、推斷RAID6算法,經(jīng)過檢測分析發(fā)現(xiàn)故障RAID6是基于標(biāo)準(zhǔn)P與另一個(gè)未知算法法則Q的右異步。基于現(xiàn)有資料分析,基于PQ均等螺旋分布的RAID6只有里德-所羅門(Reed-solomon)算法 ,懷疑本案例中的RAID6為Reed-solomon算法 的變種,但由于在同一條帶全0位置發(fā)現(xiàn)非全0的情況,故此算法推斷不成立。北亞數(shù)據(jù)恢復(fù)工程師結(jié)合對(duì)控制器的測試,發(fā)現(xiàn)故障RAID6的Q校驗(yàn)基于一種隨機(jī)的xor(如同Park編碼),算法完全隨機(jī),但校驗(yàn)分布和Park完全不同,所以即使思路相似,但算法不一樣。
6、因?yàn)樾枰业剿?2塊盤缺2塊盤時(shí)的完整算法,共有C(12,2)=66種缺盤情況,每一種至少需要16種運(yùn)算規(guī)則,經(jīng)程序運(yùn)行后發(fā)現(xiàn)為了得到一個(gè)單元大約要運(yùn)算30-50次xor。用程序生成的運(yùn)算公式并引入可以簡化算法的中間變量層,優(yōu)化算法模塊。
7、針對(duì)一個(gè)明顯不同步的數(shù)據(jù)塊區(qū),北亞數(shù)據(jù)恢復(fù)工程師專門編寫了一段程序。計(jì)算所有C(12,2)并比較計(jì)算后的結(jié)果與預(yù)想結(jié)果,最后確定掉線盤0號(hào)盤與3號(hào)盤。
8、二進(jìn)制優(yōu)化算法,所有運(yùn)算放棄STL,改用數(shù)組,并使用bitmap的理念表示表達(dá)式中的所有成員,實(shí)現(xiàn)算法的最大性能優(yōu)化。按照算法和分析出來的結(jié)構(gòu)對(duì)數(shù)據(jù)進(jìn)行初步分析,沒有發(fā)現(xiàn)明顯的數(shù)據(jù)異常。
9、生成數(shù)據(jù)到另一個(gè)準(zhǔn)備好的目標(biāo)存儲(chǔ)。到此步,數(shù)據(jù)恢復(fù)工作已經(jīng)完成。
數(shù)據(jù)恢復(fù)總結(jié):
本案例數(shù)據(jù)恢復(fù)工作斷斷續(xù)續(xù)一共耗費(fèi)了2個(gè)月的時(shí)間。在整個(gè)數(shù)據(jù)恢復(fù)的過程中我們編寫了近萬行代碼進(jìn)行判斷、分析、優(yōu)化、測試、恢復(fù)。
數(shù)據(jù)恢復(fù)完成后,用戶抽查驗(yàn)證的數(shù)據(jù)全部正常,但不排除有部分?jǐn)?shù)據(jù)有少許的損壞。
審核編輯:湯梓紅
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9021瀏覽量
85184 -
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
549瀏覽量
17390
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論