蘇州數據恢復:服務器zfs文件系統修復過程記錄
瀏覽量: 次 發布日期:2023-09-30 07:48:45
服務器zfs文件系統修復過程記錄
一臺zfs文件系統的服務器,配備32塊硬盤,Windows操作系統。
設備在運行過程中突然崩潰,設備不存在物理故障,重啟后問題沒有解決,需要恢復服務器內的大量數據。
常州數據恢復北亞數據恢復工程師對客戶服務器進行扇區級鏡像操作,通過對鏡像文件分析獲取到如下信息:
zfs文件系統
服務器硬盤共分4組
熱備盤全部啟用
故障服務器4組raidz里有兩組中的熱備盤啟動了,其中第一組啟用了一塊熱備盤,第二組啟用了3塊。南京數據恢復
另外第一組啟動了一塊熱備盤后還有一塊正常硬盤掉線,第二組中則有2塊硬盤掉線。
兩組raidz均在出現硬盤離線的狀況后啟用了熱備盤進行壞盤替換,在熱備盤上線后第這兩組又有其他硬盤出現離線的情況。無錫數據恢復zpool在每次讀取數據都需要進行校驗得到正確數據,緊接著第二組raidz又有硬盤離線,服務器因此徹底崩潰。
ZFS管理的存儲池與常規存儲不同,所有磁盤都由ZFS進行管理。常規RAID在存儲數據時,只按照特定的規則組建池,不關心文件在子設備上的位置。而ZFS在數據存儲時會為每次寫入的數據分配適當大小的空間,并計算得到指向子設備的數據指針。這種特性使得RAIDZ缺盤時無法直接進行校驗得到數據,必須將整個ZPOOL作為一個整體進行解析。
手工截取事務號數據,編寫程序獲取最大事務號入口:
獲取文件系統入口
獲取到文件系統入口后,編寫數據指針解析程序進行地址解析:
解析數據指針
獲取到文件系統入口點在各磁盤分布情況后,開始手工截取并分析文件系統內部結構,入口分布所在的磁盤組無缺失盤,可直接提取信息。根據ZFS文件系統的數據存儲結構順利找到客戶映射的LUN名稱,進而找到其節點。
經過仔細分析,發現在此存儲中的ZFS版本與開源版本有較大差別,無法使用公司原先開發的解析程序進行解析,所以重新編寫了數據提取程序。
由于磁盤組內缺盤個數較多,每個IO流都需要通過校驗得到,提取進度極為緩慢。與客戶溝通后得知,此ZVOL卷映射到XenServer作為存儲設備,客戶所需的文件在其中一個大小約為2T的vhd內。提取ZVOL卷頭部信息,按照XenStore卷存儲結構進行分析,發現2T vhd在整個卷的尾部,計算得到其起始位置后從此位置開始提取數據。
Vhd提取完畢后,對其內部的壓縮包及圖片、視頻等文件進行驗證,均可正常打開。