一、故障設(shè)備信息:
服務(wù)器:X3850服務(wù)器
硬盤(pán)類(lèi)型:SAS,容量:146G 4塊硬盤(pán)組成RAID5
文件系統(tǒng):Reiserfs
二、Reiserfs文件系統(tǒng)故障分析:
1、經(jīng)過(guò)分析發(fā)現(xiàn)了之前的硬盤(pán)數(shù)據(jù)組織結(jié)構(gòu)是由一個(gè)不到100M的boot分區(qū),后接一個(gè)271G的LVM卷,之后是2G的swap分區(qū)。LVM卷中直接劃分了一個(gè)reiserfs文件系統(tǒng),作為根分區(qū)。
2、用戶(hù)在使用的過(guò)程中,系統(tǒng)遭遇了未知的原因而癱瘓,經(jīng)過(guò)系統(tǒng)的沖撞以后發(fā)現(xiàn)整個(gè)RAID邏輯卷變成了前面2G的boot與swap分區(qū),后接271G的LVM卷,LVM卷中文件系統(tǒng)位置有個(gè)空的reiserfs超級(jí)塊。
3、我們這次要恢復(fù)的數(shù)據(jù)就是原來(lái)271G中文件系統(tǒng)里的所有用戶(hù)數(shù)據(jù),這些數(shù)據(jù)包含了數(shù)據(jù)庫(kù)、網(wǎng)站程序與網(wǎng)頁(yè)、單位OA系統(tǒng)里的所有辦公文檔。
三、Reiserfs文件系統(tǒng)解決方案:
1、先通過(guò)對(duì)全盤(pán)reiserfs樹(shù)節(jié)點(diǎn)之間的關(guān)聯(lián)確定了原來(lái)的reiserfs分區(qū)位置,發(fā)現(xiàn)原來(lái)存儲(chǔ)數(shù)據(jù)的文件系統(tǒng)的前2G數(shù)據(jù)已經(jīng)被覆蓋,判斷應(yīng)該是用戶(hù)在安裝系統(tǒng)時(shí)錯(cuò)誤地初始化了分區(qū)結(jié)構(gòu),所以裝好系統(tǒng)無(wú)法導(dǎo)入LVM卷而做過(guò)reiserfsck試圖修復(fù)。
2、因reiserfs文件系統(tǒng)對(duì)文件系統(tǒng)里所有的文件(含目錄)線(xiàn)性化后,再以文件key生成B+樹(shù),樹(shù)不斷增加節(jié)點(diǎn)會(huì)導(dǎo)致樹(shù)的結(jié)構(gòu)整體拉展后向整個(gè)磁盤(pán)的數(shù)據(jù)區(qū)做平滑遷移。這樣一來(lái)頂級(jí)節(jié)點(diǎn)通常不會(huì)放在文件系統(tǒng)的最前面。因根目錄的文件KEY號(hào)通常是最小的,所以,從空間上看,前2G中存儲(chǔ)最多的應(yīng)該是從根起始路徑最近的key節(jié)點(diǎn)。
3、這樣,用戶(hù)數(shù)據(jù)因目錄層次較深,節(jié)點(diǎn)存在的可能性很高。前2G覆蓋的數(shù)據(jù)已經(jīng)無(wú)法恢復(fù),只能希望不要恰好覆蓋用戶(hù)數(shù)據(jù)。因文件系統(tǒng)前面對(duì)整個(gè)樹(shù)的索引全丟失,加上reiserfs的樹(shù)概念設(shè)計(jì)得很抽象,重搭建樹(shù)會(huì)很困難。
4、我們通過(guò)自主程序在整個(gè)原文件系統(tǒng)區(qū)域進(jìn)行key節(jié)點(diǎn)掃描并將所有節(jié)點(diǎn)導(dǎo)出。然后通過(guò)自主程序?qū)λ腥~節(jié)點(diǎn)重新排序、過(guò)濾(去掉之前刪除文件丟棄的節(jié)點(diǎn)),重新生成二級(jí)、三級(jí)、四級(jí)等葉節(jié)點(diǎn)。選擇分區(qū)前面2G空間做為新樹(shù)的結(jié)構(gòu)區(qū),并生成對(duì)應(yīng)地址信息。
5、應(yīng)對(duì)目錄命名問(wèn)題,如遇到原樹(shù)路徑某節(jié)點(diǎn)丟失的情況,對(duì)其用自定義的key節(jié)點(diǎn)編號(hào)命名,如無(wú)法確定其父目錄,暫加入/otherfiles下。根據(jù)上面對(duì),生成樹(shù)索引信息,寫(xiě)入特定位置,再根據(jù)這些信息,生成超級(jí)塊,設(shè)置clear標(biāo)志。在suse虛擬機(jī)下,創(chuàng)建快照,掛載修復(fù)好的卷,已經(jīng)可以看到文件了。(注:虛擬機(jī)與快照的目的為了操作可加溯,同時(shí)因bitmap等元數(shù)據(jù)不影響數(shù)據(jù),未做修正,故掛載前不可做reiserfsck)。
6、在修復(fù)用的suse虛擬機(jī)下,掛載用于copy數(shù)據(jù)的目標(biāo)硬盤(pán),mkfs后將所有數(shù)據(jù)cp到目標(biāo)盤(pán)。用戶(hù)通過(guò)find命令整理所需數(shù)據(jù),修正部分目錄文件位置與名稱(chēng)。部分丟失的散文件,按大小與文件頭標(biāo)志查找,找到后移動(dòng)及重命名。
成都創(chuàng)新互聯(lián)始終堅(jiān)持【策劃先行,效果至上】的經(jīng)營(yíng)理念,通過(guò)多達(dá)十多年累計(jì)超上千家客戶(hù)的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶(hù),其中包括:VR全景等企業(yè),備受客戶(hù)贊揚(yáng)。
四、Reiserfs文件系統(tǒng)數(shù)據(jù)恢復(fù)結(jié)果:
經(jīng)工程師處理分析后,數(shù)據(jù)已成功恢復(fù),且均可正常使用,至此數(shù)據(jù)恢復(fù)工作結(jié)束。