was successfully added to your cart.

細說 vhd vhdx 虛擬磁碟映象檔案結構

在前面虛擬化救援案例裡:

恢復虛擬化架構資料  有提到到三種成果

  1. 整個 Lun 都還可mount ,裡面的 分區跟FS (VMDK檔案也都正常 )
  2. 重要的VM 檔案都還在,  VM還可正常Boot
  3. 前二種都無法成功,只能用Raw Recovery 技術撈出 VMDK裡的檔案 ,能拿回多少就多少

在真正資料救援案例裡.如果不瞭解底層的虛擬化檔案結構.
在本篇要詳解虛擬化磁碟檔案結構

固定磁碟機

 

虛擬檔案系統通常是一個簡單的檔, 它存儲將虛擬機器寫入某個磁片設備的所有內容。固定磁碟機將立即分配一個完整的卷檔, 在將來不會更改大小。

 

但是, 值得一提和記住許多檔案系統創建壓縮檔的能力。通常, 壓縮是通過不存儲檔的零填充塊 (例如, ntfs、xfs 和 vmfs) 來實現的。即使您的檔案系統中有免費的 500GB, 您也可以輕鬆地創建一個固定1TB的虛擬磁片, 並在有可用空間之前使用它。

 

 
固定磁碟機可以用兩種方式存儲:
  • FLAT映像檔。 (例如 vmdk)。名字很清楚這些檔 (幾乎) 不包含任何特定的中繼資料。固定 vhd 可以在檔末尾包含其中繼資料的512位元組。否則, 您無法將其與實際磁片的副本進行區分。
  • 增量動態磁碟。這些磁片以與動態磁碟機相同的格式存儲, 只有在創建時才會分配所需的空間。就好像動態磁碟是在創建後立即從開始寫到完成。如果創建了固定的. VHDX, 則會收到此檔。

 

動態 vhd

 

檔案系統資料不以時間順序寫入。要使虛擬磁片檔增量增大, 需要翻譯系統。最簡單的廣播方式之一是, 對於每個邏輯塊, 指定其在檔中的位置, 或者說它尚未被選中。

虛擬磁片邏輯空間和虛擬磁片檔之間的轉換

 

這是動態 vhd 格式 (而不僅僅是) 的概念。虛擬磁片的邏輯空間 (即虛擬機器中的 os 看到磁片的事實) 被分成相同大小的塊, 例如, 2 百萬位元組, 由 bat 塊分配表定址。

 

創建快照時, 您可能希望給狀態 “空-高亮” 不是單獨的塊, 而是在塊中單獨的磁區。因此, 每個塊都提供了一個點陣圖 “om”, 這是寫在塊的前面。如果邏輯磁區大小為512位元組, 塊大小為 2 mb, 則該塊的點陣圖將恰好佔據1磁區 (512 * 8 = 2 097 152/512)。即, 一個通用塊將佔據4097磁區。

點陣圖 + 資料塊

 

除了 bat 和泛型塊之外,. vhd 檔還包含其他foot 結構, 並在一開始就有一個副本。和動態磁碟一樣都在檔案的開頭。它們存儲有關虛擬磁片的不同中繼資料: 其大小、格式版本、時間戳記、塊大小、bat 偏移量、其中的記錄數以及 ap。

 

如果一般化, 則. vhd 檔的內容類別似于 (比例是有條件的):
 

vhd 的檔結構

 

動態 vhdx

 

動態. VHDX 格式與 vhd 類似, 邏輯空間也被拆分為由特殊轉換表定址的塊, 並且有點陣圖 y 來闡明特定磁區的狀態。但細節上有很多不同。

BAT指Block allocation table,非常重要的,表示$虚拟硬碟地址到$VHD文件地址的块映射表。

先從. VHDX 大小的一個點陣圖 “a fixed-1 百萬位元組。它已經覆蓋了好幾個街區。例如, 隨著邏輯磁區的大小512位元組 (. VHDX 也可以 “給” 磁區4096個位元組) 和塊 2 mb 的大小, 一個點陣圖 “覆蓋” 2 048 塊。此值也稱為塊比率。
 
VHDX 檔中的表 bat
 
第二個不同點是點陣圖的 om 塊本身是從bat。首先, 2048 儲存格 (區塊比率), 它定址相應的資料塊, 然後轉到儲存格, 引用塊點陣圖, 等等。

接下來的區別是, bat 中的記錄現在存儲了該塊的狀態。資料塊具有以下內容:

NOT_PRESENT – 無;
UNDEFINED – 無限期 (選擇了檔空間, 但沒有當前資料);
ZERO – 填充零 (檔中的位置未突出顯示)
UNMAPPED – 取消命令被執行對塊的所有區段;
FULLY_PRESENT – 塊完全存在:
PARTIALLY_PRESENT – 塊部分存在。
 
點陣圖 “a” 塊的記錄只能有兩個狀態:

NOT_PRESENT – 點陣圖 “a 塊丟失;
PRESENT – 點陣圖塊存在。
 
點陣圖 “y” 和部分呈現的資料塊只能位於創建快照時出現的差異磁片中 (稍後我會告訴您)。在其他情況下, 點陣圖 “y” 丟失, 資料塊具有不同的狀態。
 
 
通常, VHDX 檔的結構類似于以下內容:
 
 
VHDX 檔結構
 
簡要地關於剩餘的部分:
 
  • 在磁片的最開始是 Fileidentifier 結構-它包含有關創建. VHDX 檔的應用程式的簽名和注釋。它是開放的十六進位編輯器上的截圖在文章的開頭;
  • 接下來, 有兩個版本 (防止失敗) 的頭。它指定日誌的偏移量和大小, 以及其他一些參數。
  • 日誌是一個迴圈緩衝區, 除報頭外, 還將執行中繼資料上的所有操作。這樣做, 再次, 以防止突然停電;
  • 介紹了區域概念。該規範只列出了2種類型的區域: bat 和中繼資料, 但它被假定為較大。區域的位址由地區表, 這是存儲在兩個實例 (和失敗的保護);
  • 在中繼資料區域中, 元資料記錄是存儲的, 它們由一個中繼資料表來定址, 應用程式可以將它們的類型的中繼資料添加到其中。
 
Snapshot
 
快照是虛擬磁片在某個時間點的狀態的快照。有了這樣的畫面, 我們就可以回滾從那一刻起所做的一切改變。

如果您談論的是 vhd 和. VHDX 磁片, 創建快照將創建一個新檔, 用於捕獲任何後續更改。此檔稱為 “增量” 或 “差異磁片” (來自英語)。差分)。

我們早些時候說過, 動態磁碟的格式允許您只存儲捕獲的資料。相同的格式對於只存儲已更改的資料非常理想。是, 增量檔與動態磁碟的格式完全相同。只有自由塊的解釋被改變。對於 delta, 自由塊不僅意味著返回零, 還要嘗試從上一層讀取塊-如果有以前的 delta, 那麼如果沒有, 那麼從基本磁碟。
讀取帶有快照 “ami” 的磁片的資料
 
如果移除頂部的增量, 則會得到以前的固定狀態, 如果兩者都是, 則是最早的。
 
 
資料恢復視圖
 
從資料恢復的角度來看, 虛擬硬碟映像檔案的錯誤主要是因為檔案跟實際DATA位置之間輸入了額外的位置轉換別。
 
如何從物理磁碟機上的虛擬磁碟機獲取檔的位置
 
每個級別都是額外的資料混合, 可增加碎片和潛在的故障點。一些糟糕的行業現在有更多的機會去做很多問題。

通常, 若要從虛擬磁片中讀取檔中的資料, 必須具有

  • 描述虛擬磁片檔位置的物理磁片檔案系統中繼資料。
  • 虛擬磁片本身的中繼資料 (bat 和其他); 虛擬磁片上描述檔位置的檔案系統中繼資料。
如果您非常幸運, 則資料恢復任務可以成為一個沒有示例的拼圖程式集。並不是我不鼓勵使用虛擬磁片, 但存儲資料越容易, 還原它們就越容易。
 
 
 http://zhangyu.blog.51cto.com/197148/1095637