章節目錄
ESXi數據存儲介紹
VMware ESXi採用VMFS文件系統,從ESXi 3.5-6.5,分別使用VMFS3、VMFS5、VMFS6。
ESXi虛擬平臺數據恢復有以下3個深度:
- VMFS分區恢復
- VMFS虛擬機恢復
- VMDK內部文件恢復
VMFS分區定位
分區表的類型
分區表有兩種基本格式:MBR和GTP。MBR最多容納四個分區,最大支持2TB分區。 目前磁盤普遍大於2TB,特別在ESXi虛擬平臺上,分區基本都超過2TB,所以通常會使用 GUID分區表(GPT),GPT最大支持18EB空間,並支持擴展固件接口(EFI)。
本次案例是GPT分區格式。爲了修復分區,必須要先確定VMFS卷的起始位置和結束位置。
VMFS分區結構中,定義“魔術數字”0xC001D00D標記VMFS_VOLINFO,再向前回退2048扇區,即爲VMFS分區的起始位置。
我們需要一個十六進制編輯器,以便對十六進制或ASCII字符串進行全磁盤搜索。我們使用的是X-Ray公司的WinHex。
但是VMFS採用了little endian模式存儲數據結構,因此“魔術數字”在磁盤上存儲爲0x0DD001C0。
本案例分區已經被覆蓋,因此無法在主分區表中找到魔術數字。以下爲正確GPT分區示例圖:
VMFS分區重建
爲了重建分區,必須解析GPT分區的結構。
GPT分區結構如下:
LBA0:
在GPT分區表的最開頭,出於兼容性考慮仍然存儲了一份傳統的MBR(LBA 0),這個MBR叫做保護性MBR(Protective MBR)。
LBA1:
分區表頭(LBA 1)定義了硬盤的可用空間以及組成分區表的項的大小和數量。以下爲GPT分區表頭的格式,注意爲little endian:
起始字節 |
偏移量 |
內容 |
0 |
8 |
簽名("EFI PART") |
8 |
4 |
修訂 |
12 |
4 |
分區表頭的大小 |
16 |
4 |
分區表頭(92個字節)的CRC32校驗,在計算時,先把這個字段寫作0處理,然後計算出所有分區表項的CRC32校驗後再計算這個CRC32 |
20 |
4 |
保留,必須是 0 |
24 |
8 |
當前LBA(這個分區表頭的位置) |
32 |
8 |
備份LBA(另一個分區表頭的位置) |
40 |
8 |
第一個可用於分區的LBA(主分區表的最後一個LBA + 1) |
48 |
8 |
最後一個可用於分區的LBA(備份分區表的第一個LBA - 1) |
56 |
16 |
硬盤GUID(在類UNIX系統中也叫UUID) |
72 |
8 |
分區表項的起始LBA(在主分區表中是2) |
80 |
4 |
分區表項的數量(windows是128,沒有這麼多也先佔着空間) |
84 |
4 |
一個分區表項的大小(通常是128) |
88 |
4 |
分區表項的CRC32校驗(計算的是所有分區表項的檢驗和即128*128字節) |
92 |
420 |
保留,剩餘字節必須是0(420字節針對512字節的LBA硬盤) |
LBA 2–33
此位置存放分區表項。一個分區表項的前16字節是分區類型GUID,VMFS的分區類型爲:0x2AE031AA0F40DB119590000C2911D1B8。接下來的16字節是該分區唯一的GUID(即分區的UUID)。再接下來是分區起始和末尾的64位LBA編號,以及分區的名字和屬性。以下爲GPT分區表項的格式:
起始字節 |
偏移量 |
內容 |
0 |
16 |
分區類型GUID |
16 |
16 |
分區GUID |
32 |
8 |
起始LBA(小端格式) |
40 |
8 |
末尾LBA |
48 |
8 |
屬性標籤 |
52 |
72 |
分區名 |
主分區表損壞時,可以用Backup 分區表恢復。我們通過魔術數字,找到備份分區表位於23437498367扇區;
一般情況我們不建議對目標磁盤有任何寫入操作,但是爲了快速恢復數據,數據修復工作室在備份了磁盤首部扇區後,參照備份分區表,直接修改磁盤扇區,手動重建了VMFS分區表。
虛擬機恢復
通過以上步驟,已經恢復了VMFS分區,通常情況可以直接看到虛擬機。此案例仍然無法顯示虛擬機,原因是磁盤頭部損壞時,也會破壞MFT,導致VMFS內的虛擬機文件無法直接讀取,此時我們再通過虛擬機恢復軟件自動掃描,即可恢復虛擬機:
在恢復數據機之前,可以通過log文件預覽是否有亂碼,簡單確認數據是否受損:
特別注意
虛擬平臺文件系統是封閉的,逆向底層數據結構難度大,而虛擬平臺通常是生產環境,數據丟失情況少,大部分管理員在VMFS數據恢復方面的經驗並不多,嘗試性操作可能帶來不預測的數據二次破壞。
本案例中,難點是VMFS分區表識別與重建。
技術支持
溫馨提示:如重要數據丟失,建議在行動前諮詢專業工程師,以免數據遭到二次破壞。
事故發生後,直接聯繫專業人員,數據基本可以100%恢復;多數無法恢復的案例,都是因爲不專業的"恢復",導致數據被覆蓋!
企業級恢復支持:https://item.taobao.com/item.htm?id=584274607493
個人級恢復支持:https://item.taobao.com/item.htm?id=592356374811
官方網站:http://www.data-unit.com/