伺服器zfs檔案系統修復過程記錄

北亞資料恢復發表於2021-09-17

一、伺服器資料恢復介紹:

一臺zfs檔案系統的伺服器,配備32塊硬碟,Windows作業系統。

二、伺服器資料恢復故障情況

裝置在執行過程中突然崩潰,裝置不存在物理故障,重啟後問題沒有解決,需要恢復伺服器內的大量資料。

三、備份伺服器資料

北亞資料恢復工程師第客戶伺服器進行扇區級映象操作,透過對映象檔案分析獲取到如下資訊:

zfs檔案系統

伺服器硬碟共分4組

熱備盤全部啟用

四、伺服器故障情況分析

故障伺服器4組raidz裡有兩組中的熱備盤啟動了,其中第一組啟用了一塊熱備盤,第二組啟用了3塊。

另外第一組啟動了一塊熱備盤後還有一塊正常硬碟掉線,第二組中則有2塊硬碟掉線。

兩組raidz均在出現硬碟離線的狀況後啟用了熱備盤進行壞盤替換,在熱備盤上線後第這兩組又有其他硬碟出現離線的情況。zpool在每次讀取資料都需要進行校驗得到正確資料,緊接著第二組raidz又有硬碟離線,伺服器因此徹底崩潰。

五、重組ZPOOL,追蹤資料入口

ZFS管理的儲存池與常規儲存不同,所有磁碟都由ZFS進行管理。常規RAID在儲存資料時,只按照特定的規則組建池,不關心檔案在子裝置上的位置。而ZFS在資料儲存時會為每次寫入的資料分配適當大小的空間,並計算得到指向子裝置的資料指標。這種特性使得RAIDZ缺盤時無法直接進行校驗得到資料,必須將整個ZPOOL作為一個整體進行解析。

手工擷取事務塊資料,編寫程式獲取最大事務號入口:

獲取檔案系統入口

獲取到檔案系統入口後,編寫資料指標解析程式進行地址解析:

解析資料指標

獲取到檔案系統入口點在各磁碟分佈情況後,開始手工擷取並分析檔案系統內部結構,入口分佈所在的磁碟組無缺失盤,可直接提取資訊。根據ZFS檔案系統的資料儲存結構順利找到客戶對映的LUN名稱,進而找到其節點。

六、編寫資料提取程式並執行

經過仔細分析,發現在此儲存中的ZFS版本與開源版本有較大差別,無法使用公司原先開發的解析程式進行解析,所以重新編寫了資料提取程式。

由於磁碟組內缺盤個數較多,每個IO流都需要透過校驗得到,提取進度極為緩慢。與客戶溝通後得知,此ZVOL卷對映到XenServer作為儲存裝置,客戶所需的檔案在其中一個大小約為2T的vhd內。提取ZVOL卷頭部資訊,按照XenStore卷儲存結構進行分析,發現2T vhd在整個卷的尾部,計算得到其起始位置後從此位置開始提取資料。

七、驗證資料完整性,伺服器資料恢復成功

Vhd提取完畢後,對其內部的壓縮包及圖片、影片等檔案進行驗證,均可正常開啟。

聯絡客戶驗證資料,確定檔案數量與系統自動記錄的檔案個數相差極小,丟失檔案可能是最新生成還未重新整理到磁碟。驗證檔案可用性,檔案全部可正常開啟,伺服器資料恢復成功。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31380569/viewspace-2792617/,如需轉載,請註明出處,否則將追究法律責任。

相關文章