linux服務器reiserfs文件系統損壞,你需要學會這種修復方法

今天爲大家介紹一個Linux服務器數據恢復成功案例,本次服務器數據恢復物理服務器請款如下:客戶故障服務器爲一臺X3850服務器,這個服務器是由4塊146G SAS硬盤組成的RAID5作爲存儲介質,文件系統全都是reiserfs。我們首先經過分析發現了之前的硬盤數據組織結構是由一個不到100M的boot分區,後接一個271G的LVM卷,之後是2G的swap分區。LVM卷中直接劃分了一個reiserfs文件系統,作爲根分區。

·
  服務器在正常使用過程中,由於未知原因導致系統癱瘓,急需進行服務器數據恢復,經過系統的重裝以後發現整個RAID邏輯卷變成了前面2G的boot與swap分區,後接271G的LVM卷,LVM卷中文件系統位置有個空的reiserfs超級塊。
·
  我們這次要恢復的數據就是原來271G中文件系統裏的所有用戶數據,這些數據包含了數據庫、網站程序與網頁、單位OA系統裏的所有辦公文檔。
linux服務器reiserfs文件系統損壞,你需要學會這種修復方法
·
服務器數據恢復工程師先通過對全盤reiserfs樹節點之間的關聯確定了原來的reiserfs分區位置,發現原來存儲數據的文件系統的前2G數據已經被覆蓋,應該是用戶在安裝系統時錯誤地初始化了分區結構,所以裝好系統無法導入LVM卷而做過reiserfsck試圖修復。
·
因reiserfs文件系統對文件系統裏所有的文件(含目錄)線性化後,再以文件key生成B+樹,樹不斷增加節點會導致樹的結構整體拉展後向整個磁盤的數據區做平滑遷移。這樣一來頂級節點通常不會放在文件系統的最前面。

因根目錄的文件KEY號通常是最小的,所以,從空間上看,前2G中存儲最多的應該是從根起始路徑最近的key節點,這樣,用戶數據因目錄層次較深,節點存在的可能性很高。前2G覆蓋的數據已經無法恢復,只能希望不要恰好覆蓋用戶數據。因文件系統前面對整個樹的索引全丟失,加上reiserfs的樹概念設計得很抽象,重搭建樹會很困難。
·
工程師通過自主程序在整個原文件系統區域進行key節點掃描並將所有節點導出。然後通過自主程序對所有葉節點重新排序、過濾(去掉之前刪除文件丟棄的節點),重新生成二級、三級、四級等葉節點。選擇分區前面2G空間做爲新樹的結構區(反正這部分數據是沒用的了,重裝系統已經裝得滿滿的),並生成對應地址信息。
·
應對目錄命名問題,如遇到原樹路徑某節點丟失的情況,對其用自定義的key節點編號命名,如無法確定其父目錄,暫加入/otherfiles下。根據上面對,生成樹索引信息,寫入特定位置,再根據這些信息,生成超級塊,設置clear標誌。在suse虛擬機下,創建快照,掛載修復好的卷,已經可以看到文件了。(注:虛擬機與快照的目的爲了操作可加溯,同時因bitmap等元數據不影響數據,未做修正,故掛載前不可做reiserfsck)。
·
在修復用的suse虛擬機下,掛載用於copy數據的目標硬盤,mkfs後將所有數據cp到目標盤。用戶通過find命令整理所需數據,修正部分目錄文件位置與名稱。部分丟失的散文件,按大小與文件頭標誌查找,找到後移動及重命名。
linux服務器reiserfs文件系統損壞,你需要學會這種修復方法
·
  樹的不直觀性加上程序的調試,使得整個恢復工作異常繁雜,幸運的是所有的重要數據100%都被我們找到了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章