服務器數據恢復環境:
一臺服務器上有一組由4塊SAS硬盤組建的RAID5陣列,采用的reiserfs文件系統。
原始數據組織結構:幾十MB的boot分區+數百GB的LVM卷+2GB的swap分區。LVM卷中劃分了一個reiserfs文件系統,作為根分區。
服務器故障:
服務器在運行過程中操作系統由于未知原因崩潰。服務器管理員重裝系統后發現數據組織結構發生了改變:2GB的boot與swap分區+數百GB的LVM卷,LVM卷中文件系統位置有個空的reiserfs超級塊。
需要恢復的數據是LVM卷中的reiserfs文件系統上所有用戶數據,包含數據庫、網站程序與網頁、OA系統里的所有辦公文檔。
服務器數據恢復過程:
1、將故障服務器上所有硬盤編號后取出,經過硬件工程師檢測后沒有發現存在硬件故障和壞道。將所有硬盤以只讀方式做完整鏡像備份,鏡像完成后將所有硬盤根據編號按照原樣還原到原服務器中。后續的數據分析和數據恢復操作都基于鏡像文件進行,避免在數據恢復過程中對原始數據造成二次破壞。
2、服務器數據恢復工程師通過對全盤reiserfs樹節點之間的關聯確定原reiserfs分區位置。經過分析發現原來存儲數據的文件系統的前2GB數據已經被覆蓋。出現這個問題的原因應該是工作人員在為服務器重新安裝操作系統時錯誤地將分區結構初始化,所以裝好系統后無法導入LVM卷,于是試圖通過reiserfsck修復。
Tips:reiserfs文件系統對文件系統中所有的文件(含目錄)線性化后,再以文件key生成B+樹。隨著樹不斷增加節點,樹的結構整體拉展并向整個磁盤的數據區做平滑遷移。所以頂級節點通常不會放在文件系統的最前面。
根目錄的文件KEY號通常是最小的。從空間上看,前2GB空間中存放最多的應該是離根起始路徑最近的key節點。由于用戶數據目錄層次較深,節點存在的可能性很高。前2GB被覆蓋的數據已經無法恢復,且文件系統前面對整個樹的索引全部丟失,加上reiserfs的樹的抽象設計,重搭建樹會很困難。
3、北亞企安數據恢復工程師使用自主開發的工具在整個原文件系統區域進行key節點掃描并導出所有節點。然后通過自主開發的工具重新排序所有葉節點、過濾(去掉之前刪除文件丟棄的節點),重新生成二級、三級、四級等葉節點。選擇分區前面2GB空間作為新樹的結構區,并生成對應地址信息。
針對原樹路徑某節點丟失的情況,對其用自定義的key節點編號命名;如無法確定其父目錄,暫加入/otherfiles下。
4、生成樹索引信息,寫入特定位置。根據這些信息,生成超級塊,設置clear標志。在suse虛擬機下,創建快照,掛載修復好的卷,這時已經可以看到文件了。
5、在修復用的suse虛擬機下,掛載用于copy數據的目標硬盤,mkfs后將所有數據cp到目標盤。
6、用戶方通過find命令整理所需數據,修正部分目錄文件位置與名稱。部分丟失的散文件,按大小與文件頭標志查找,找到后移動及重命名。
7、處理完后驗證數據。經過驗證,用戶方確認所有數據完整恢復。本次數據恢復工作完成。
審核編輯 黃宇
-
服務器
+關注
關注
14文章
10251瀏覽量
91478 -
數據恢復
+關注
關注
10文章
712瀏覽量
18983
發布評論請先 登錄
【服務器數據恢復】多盤掉線RAID6數據恢復:基于Reed-Solomon算法的修復
【服務器數據恢復】服務器raid5陣列raid模塊損壞的數據恢復案例
服務器數據恢復—意外斷電!Linux服務器數據恢復大揭秘
服務器數據恢復—服務器斷電導致raid模塊損壞的數據恢復案例
服務器數據恢復—壞道“突襲”Raid5陣列,數據恢復大揭秘
服務器數據恢復—Linux系統服務器崩潰的數據恢復案例
服務器數據恢復—服務器重裝系統導致分區消失的數據恢復案例
服務器數據恢復—重裝系統炸鍋!reiserfs數據恢復揭秘
評論