Linux reiserfs檔案系統損壞後的資料恢複

來源:互聯網
上載者:User

[資料恢複故障描述]

一台IBM X3850伺服器,由4塊146G SAS硬碟組成RAID5作為儲存介質,作業系統為SUSE LINUX,檔案系統全部是reiserfs。

分析後得知:之前的硬碟資料群組織結構為: 一個不到100M的boot分區,後接一個271G的LVM卷,之後是2G的swap分區。LVM卷中直接劃分了一個reiserfs檔案系統,作為根分區。

使用者在使用過程中,系統未知原因癱瘓。

重裝系統後,整個RAID邏輯卷變成了前面2G的boot與swap分區,後接271G的LVM卷,LVM卷中檔案系統位置有個空的reiserfs超級塊。

要求恢複原來271G中檔案系統裡的所有使用者資料,資料分別是MYSQL資料庫、PGSQL資料庫、網站程式與網頁、單位OA系統裡的所有辦公文檔。

[資料恢複分析]

1、通過對全盤reiserfs樹節點之間的關聯,確定了原來的reiserfs分區位置,以此斷定,原來儲存資料的檔案系統前2G被覆蓋。

2、應該是使用者在安裝系統時錯誤地初始化了分區結構,之後裝好系統後,發現無法匯入LVM卷,曾做過reiserfsck試圖修複。

3、因reiserfs檔案系統對檔案系統裡所有的檔案(含目錄)線性化後,再以檔案key產生B+樹,樹不斷增加節點,會導致樹的結構整體拉展後向整個磁碟的資料區做平滑遷移,這樣,頂級節點通常不會放在檔案系統的最前面。因根目錄的檔案KEY號通常是最小的,所以,從空間上看,前2G中儲存最多的應該是從根起始路徑最近的key節點,這樣,使用者資料因目錄層次較深,節點存在的可能性很高。

4、前2G覆蓋的資料無法恢複,只能希望不要恰好覆蓋使用者資料。

5、因檔案系統前面對整個樹的索引全丟失,加上reiserfs的樹概念設計得很抽象,重搭建樹會很困難。

[資料恢複過程]

1、通過自主程式在整個原檔案系統地區進行key節點掃描,將所有節點匯出。

2、通過自主程式對所有分葉節點重新排序、過濾(去掉之前刪除檔案丟棄的節點),重建二級、三級、四級等分葉節點。選擇分區前面2G空間做為新樹的結構區(反正這部分資料是沒用的了,重裝系統已經裝得滿滿的),並產生對應地址資訊。應對目錄命名問題,如遇到原樹路徑某節點丟失的情況,對其用自訂的key節點編號命名,如無法確定其父目錄,暫加入/otherfiles下。

3、根據上面對,產生樹索引資訊,寫入特定位置,再根據這些資訊,產生超級塊,設定clear標誌。

4、在suse虛擬機器下,建立快照,掛載修複好的卷,已經可以看到檔案了。(註:虛擬機器與快照的目的為了操作可加溯,同時因bitmap等中繼資料不影響資料,未做修正,故掛載前不可做reiserfsck)。

5、在修複用的suse虛擬機器下,掛載用於copy資料的目標硬碟,mkfs後將所有資料cp到目標盤。

6、使用者通過find命令整理所需資料,修正部分目錄檔案位置與名稱。

7、部分丟失的散檔案,按大小與檔案頭標誌尋找,找到後移動及重新命名。

[資料恢複結果]

1、所幸重要資料100%恢複成功。

2、樹的不直觀性加上程式的調試,使得整個恢複工作曆時3天之久,在繁亂的資訊樹中跟來跟去,真是煩人得很,幸好撐下來了。

[隨筆]

繁鎖的資料恢複分析工作真不是人乾的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.