SeSparse資料恢復方案研究及恢復方法演示

北亞資料恢復發表於2020-09-25

關於虛擬機器快照檔案被刪除的恢復方式跳躍性較強,且沒有名詞解釋,導致產生歧義。為了驗證方案可行性,工程師特別對此類案例進行了案例還原,來分步演示虛擬化平臺SeSparse資料恢復方法,具體資料恢復演示過程如下。

1、搭建環境 在虛擬化平臺建立虛擬機器(父盤VMDK大於2T),為了後期匯出進行觀察,建立模式為精簡。

2、在新建的虛擬機器內寫入檔案,便於觀察快照索引與父盤資料之間的聯絡。

3、建立快照檔案,再寫入部分資料,以備驗證修改後快照內資料儲存方式與索引之間的聯絡。

4、虛擬機器部分操作完畢,關機準備對原VMDK檔案和快照檔案進行分析。(因為資料儲存內有虛擬機器,無法解除安裝資料儲存,進行了強制斷電)

5、使用恢復軟體開啟硬碟,準備匯出VMDK檔案和快照檔案。結果發現原VMDK匯出後變為0KB,快照檔案則順利匯出,實驗步驟中斷。

6、根據現象進行猜想,可能是資料量太小,沒有及時寫入VMDK。使用快照檔案進行了恢復,原意是要對VMDK檔案進行寫入,擴大資料量。結果發現恢復後新增一個VMDK檔案,且新寫入的資料都儲存於此檔案中。(結論:根據快照進行恢復後,新增資料並未寫入原VMDK檔案,而是以快照斷點為起始,做了一個新的快照檔案,之前的快照檔案被刪除)

7、進行了刪除快照操作(透過虛擬化平臺正常刪除而不是直接刪除快照檔案),發現快照和原VMDK進行了合併,資料區內容被寫入VMDK盤內。

8、重複1~4發現,在關機狀態下建立快照,只是簡單生成了1M大小檔案。在開機後,快照檔案變為23M,說明建立快照檔案索引應該是在虛擬機器開啟狀態下才會進行。

9、使用恢復軟體提取VMDK檔案發現仍然無法提取成功(提示Unable to open file),改用北亞虛擬化軟體by_vmfs提取程式提出VMDK檔案。

10、開始分析: 

(1)根據頭部資訊,分別提取 high_idx 和 low_idx 、全域性點陣圖區、全域性索引區、資料區

(2)快照檔案預分配除資料區之外的所有區域

(3)低地址區域索引最大隻能索引相當於原VMDK檔案大小的資料區。

11、根據文件中給出的索引規則和實際情況,證明了快照檔案恢復無法依賴父盤資料,最多能遍歷父盤資料塊和索引得知哪些塊發生了變化。原因如下:

高位區跳轉低位區必須依賴父盤塊號;

低位區指標跳回高位區亦不可行(單向指標);

根據高位區域指標跳轉父盤塊號不可行,父盤塊號標明瞭高位區域的指標位置(單向指標)


12、如圖,根據文件中的資料推導演算法,第一步必須知道父盤塊號,才能找到它在快照檔案中的塊對應位置。快照檔案被刪除後,唯一能直接找到的只有快照頭。

    根據父盤塊號和高位區域的索引,可以得到低位區域的所有編號(也就是低位索引的相對位置)。根據特徵,可以透過掃描的方式找到全域性點陣圖區、低位索引區、全域性索引區。由於1G塊數較少,可以遍歷拼接(多種內部相對位置關係)。但是資料區無法找到,無法確定父盤中的某一塊在更新後寫入了什麼檔案,無法根據檔案特徵進行資料塊排序。根據實驗結果來看,寫入的資料在檔案內是連續的(單程式寫入),不過對拼接基本無作用。


虛擬化資料恢復結論:快照檔案刪除後,依據現有演算法無法恢復快照檔案內的資料區部分(文件內也只有恢復索引的方案,不過索引恢復可以直接根據其特徵進行搜尋排序,與地址轉換無關)。小於2T快照恢復方案在處理資料區這部分也是一筆帶過的,是塊號、檔案內偏移還是其他方式不得而知。下步方案只能參考VMFSSparse快照恢復程式中關於二級索引跳轉資料區時,如何判斷哪些資料塊是屬於本檔案/資料區1G塊排序方式了。


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

相關文章