如何在 VMware 中開啟 VMDK 檔案並提取資料
了解如何開啟 VMDK 檔案並從中提取內容,對於處理虛擬機器問題非常有用。您可能會發現,在發生應用程式安裝問題、作業系統更新、惡意軟體攻擊或意外刪除資料等情況後,虛擬機器無法啟動。此時,您將無法存取該虛擬機器的虛擬磁碟。
幸運的是,您可以使用 WinZip、Linux Reader 或 VMware 工作站玩家來開啟 VMDK 檔案。 請繼續閱讀以了解恢復 VMDK 虛擬磁碟檔案內容的方法。請注意,這些方法僅適用於虛擬磁碟未經加密或未受損的情況。
什麼是 VMDK 檔案?
VMDK 是一種虛擬機器磁碟檔格式,由 VMware 開發的開放格式。此虛擬磁碟格式具有 .vmdk 檔案副檔名,並用於 VMware 與 VirtualBox 虛擬機器。然而,部署在 ESXi 伺服器上的虛擬機器採用略有不同的格式 vmdk 虛擬磁碟。在 ESXi 資料存放區中,虛擬磁碟描述檔與包含虛擬磁碟原始資料的虛擬磁碟區塊是兩個獨立的檔案。
虛擬磁碟描述檔名稱的格式為 diskname.vmdk 而包含所有原始資料的虛擬磁碟區段名稱的格式為 diskname-flat.vmdk至於 VMware 工作站格式的虛擬磁碟,它們被表示為單一 磁碟名稱。vmdk 檔案(單一塊稀疏),這是一個包含嵌入式虛擬磁碟描述符的延伸區段資料檔案。虛擬磁碟描述符定義了虛擬磁碟的結構、虛擬磁碟幾何參數、虛擬硬體版本以及識別碼。
虛擬磁碟描述檔
虛擬磁碟描述檔以純文字形式呈現。在下方的螢幕截圖左側,您可以看到一個 ESXi 格式的虛擬磁碟描述檔(一個 vmdk (可用任何文字編輯器開啟的檔案)。在螢幕截圖的右側,您可以看到嵌入單一 vmdk VMware 工作站格式的檔案。該 vmdk 該檔案可在十六進位編輯器中開啟。

如您所見,嵌入式的磁碟描述符資料會寫入單體式 vmdk 從 0x200 位址開始的工作站格式檔案,該位址即為第一個位元的組數。若將 200 十六進位數轉換為二進位與十進位格式,結果如下:
200 十六進位 = 1000000000 二進位 = 512 十進位
這表示若要從該檔案中擷取嵌入的描述符, vmdk 檔案時,您應從第 512 個位元組開始擷取部分資料。您可以在關於轉換的部落格文章中,找到更多有關 VMware 虛擬磁碟描述檔檔案的資訊,並了解如何擷取、編輯及匯入嵌入式虛擬磁碟描述檔 VMware 虛擬機器轉為 Hyper-V 虛擬機器.
虛擬磁碟資料檔
在下方的螢幕截圖中,有兩個虛擬磁碟檔在十六進位編輯器中開啟。這兩顆虛擬磁碟上安裝了相同的作業系統(用於安裝作業系統的第一個分割區,是透過 Windows 內建的磁碟工具建立並格式化的)。在螢幕截圖的左側,一個 –平房。vmdk 顯示檔案(ESXi 格式)。原始資料從此虛擬磁碟的 0x00000000 位置開始寫入 –平房。vmdk 檔案。在螢幕截圖的右側,顯示了工作站格式的虛擬磁碟,且相同資料是從 0x00150000(第 5376 個位元組)開始寫入的,這並非該檔案的起始位置。 vmdk 檔案。

現在,在您熟悉了相關理論之後,是時候進入實作階段了。在繼續之前,建議您先備份資料,以防虛擬磁碟可能受損。進行磁碟操作時,請自行承擔相關責任與風險。
透過啟動虛擬機器開啟 VMDK 檔案的 2 種方法
若要透過啟動現有的虛擬機器來開啟 VMDK 檔案,您需要一個虛擬化平台,例如 VMware ESXi、VMware 工作站、VMware Player 或 Oracle VirtualBox 安裝在您的實體電腦上。您可以選擇傳統方法,使用開機光碟,或將 VMDK 檔案掛載為虛擬磁碟。
方法 1:即使虛擬機器上的作業系統已無法運作,仍可使用 Live DVD
此方法的原理是:您擁有一台虛擬機器,並能從 DVD 光碟開機。ISO 磁碟映像檔可作為插入虛擬機器虛擬光碟機中的 DVD 光碟使用。從 DVD 媒體開機進入作業系統後,您可以掛載虛擬磁碟的分區,並將檔案從虛擬磁碟複製到連接至虛擬機器的 USB 硬碟、主機電腦,或透過網路複製到任何其他電腦。 某些 Live DVD 發行版會自動掛載磁碟(分割區)。
這是一種傳統方法,因為其原理類似於當已安裝的作業系統無法開機時,從實體電腦的實體磁碟複製檔案。此方法可用於從運行於 VMware ESXi 及 VMware Player/工作站上的虛擬機器 VMDK 磁碟中提取資料。
請注意,從 Live DVD 開機的作業系統必須能識別您欲存取檔案之虛擬磁碟分割區的檔案系統。 例如,Windows 預設無法處理 EXT3、EXT4、ReiserFS 等 Linux 檔案系統。在 Windows 上使用額外工具可能有助於解決此問題。反之,現代 Linux 則能識別 NTFS 和 FAT32 等 Windows 檔案系統,因此您可以使用基於 Linux 的 Live DVD 光碟,來複製儲存於無法開機的 Windows 虛擬機器所使用的虛擬磁碟中的檔案。
範例:在 ESXi 上開啟 VMDK 檔案
讓我們來看看這個方法的應用範例:假設您有一台安裝了 Windows Server 2016 的虛擬機器,位於 ESXi 主機,且虛擬機器上的作業系統無法開機,但您需要取得儲存於 VMDK 虛擬磁碟中的檔案。該虛擬磁碟上有兩個 NTFS 分割區:開機系統分割區與 C 槽。本範例使用官方的 Ubuntu 18 安裝 ISO 映像檔。Ubuntu 安裝媒體可作為 Live DVD 使用。
註: 本文所探討的產品在較新版本中的操作流程亦相同。您可以使用 VMware 工作站 17、ESXi 8.0、Windows Server 2019、Ubuntu Linux 22.04 等系統,並套用本文所述的運作原理。
- 將 ISO 映像檔上傳至虛擬機器所在的 ESXi 主機可存取的資料存放區。
- 開啟 VMware vSphere Client,前往
Hosts and Clusters,選取您的虛擬機器,然後按一下Edit Settings.
- 在虛擬機器設定視窗中,前往
CD/DVD drive選項。請選擇Datastore ISO File如果您在 ESXi 主機可存取的資料存放區中擁有必要的 ISO 檔案,請選擇此選項。接著,針對"CD/DVD 媒體"選項,請按一下Browse並在資料存放區中選取適當的 ISO 檔案。檔案名稱是 ubuntu-18.04.1-desktop-amd64.iso 在此情況下。
- 啟動虛擬機器,從 ISO 映像檔開機,並選擇"不安裝 Ubuntu 試用版"。當 Ubuntu 從 Live DVD 媒體開機完成後,開啟控制台(Terminal)。
- 取得 root 權限:
sudo -i - 列出可用的硬碟裝置:
ls -al /dev/sd*共有兩個分區—— /dev/sda1 以及 /dev/sda2
- 為每個分割區建立用作掛載點的目錄:
mkdir /mnt/win-disk1mkdir /mnt/win-disk2 - 將虛擬磁碟的分區掛載至相應的目錄:
mount /dev/sda1 /mnt/win-disk1/mount /dev/sda2 /mnt/win-disk2/ - 接著列出已掛載分割區中的檔案和目錄:
ls -al /mnt/win-disk2/ls -al /mnt/win-disk1/
如上圖所示,掛載至 /mnt/win-disk2 此分區在 Windows 中用作 C: 磁碟機。
- 現在,您可以將 USB 硬碟 (HDD) 連接至 ESXi 主機的 USB 埠,並透過 USB 直通特點將此硬碟連接到虛擬機器。如此一來,您便能複製儲存於虛擬機器用作虛擬磁碟的 VMDK 檔案中的必要檔案。 另一種方法是使用 SMB (CIFS) 共用,並透過網路將虛擬磁碟的內容(即 VMDK 檔案)複製到其他位置。
在此範例中,我們將說明如何將資料複製到 SMB 共用資料夾。該 SMB 共用資料夾已建立在 IP 位址為 192.168.17.125,股票名稱是 192.168.17.125 共用,以及 user10 具有此共用資料夾的寫入權限。請記住,Linux 與 Windows 不同,在連線至共用資料夾時會使用右斜線。
讓我們在從 Live DVD 啟動的 Linux 系統上掛載 SMB (CIFS) 共用資料夾。首先,建立一個目錄作為掛載點。
mkdir /mnt/smb-share - 接著將 SMB (CIFS) 共用資料夾掛載至此目錄:
mount -t cifs -o user=user10 //192.168.17.125/share /mnt/smb-share - 請輸入該使用者的密碼。
- 現在,您的 Linux 系統已連接到 SMB 共用資料夾,您可以透過網路將 VMDK 檔案中的內容複製到 SMB 共用資料夾中。
讓我們前往 SMB 共用資料夾所掛載的目錄,並複製該 bootmgr 將虛擬磁碟已掛載分區中的檔案(位於 ESXi 資料存放區上的 VMDK 檔案)複製到當前目錄(SMB 共用資料夾)。
cd /mnt/smb-sharecp /mnt/win-disk-2/bootmgr .
- 接著請確認已複製所有必要的檔案,並檢查 SMB 共用資料夾的內容。
ls -al /mnt/smb-share如上圖所示, bootmgr 此範例中使用的檔案已成功複製。現在您已經了解,當虛擬機器上安裝的作業系統無法開機時,將 VMDK 檔案的內容複製到其他位置的第一種方法。在 VMware Player 或 VMware 工作站上使用此方法的原理是相同的。
方法 2:將 VMDK 檔案掛載為虛擬磁碟至運作正常的虛擬機器(ESXi/工作站/Player)
此方法與前一種類似,但在此情況下,VMDK 虛擬磁碟應掛載至已安裝可正常運作作業系統的現有虛擬機器上。 您可以在 ESXi 主機、VMware 工作站及 VMware Player 上,將 VMDK 檔案作為額外的虛擬磁碟掛載至現有的虛擬機器。
若要在 VMware 工作站或 Player 上開啟 ESXi 虛擬機器的 VMDK 檔案,您應同時複製該虛擬磁碟及其描述檔(vmdk 以及 –flat.vmdk 檔案)至您電腦上可存取的實體磁碟,該電腦需已安裝 VMware Workstation 或 Player。如果 快照 若已針對虛擬機器 (VM) 進行備份,且之後對 VM 磁碟進行了變更,請務必除了父 VMDK 檔案外,也一併複製差異 (differencing) 虛擬磁碟的 VMDK 檔案。
讓我們來看看兩個例子:
Example 1: 如何在 ESXi 主機上,利用另一台虛擬機器開啟某台虛擬機器的 VMDK 虛擬磁碟(兩者皆已註冊於該 ESXi 主機)
Example 2: 如何透過將 VMDK 虛擬磁碟掛載至 VMware 工作站格式的虛擬機器,來從 ESXi 虛擬機器的 VMDK 虛擬磁碟中提取內容
請注意,第一台(正常運作的)虛擬機器上的運作中作業系統,必須與第二台虛擬機器(其 VMDK 檔案您欲掛載為額外虛擬磁碟以提取檔案)的虛擬磁碟所使用的檔案系統相容。
範例 1:將虛擬磁碟掛載至在 ESXi 上執行的虛擬機器
- 請關閉使用該虛擬磁碟的虛擬機器,該虛擬磁碟中包含您想要提取的檔案。
- 請在 ESXi 資料存放區中找到此虛擬磁碟。
- 將虛擬磁碟複製到同一資料存放區上的另一個目錄,或複製到另一個資料存放區,以避免因虛擬磁碟鎖定而導致的錯誤。在本範例中,我們將示範如何開啟一個名為 Win-test2.vmdk (這是該的虛擬磁碟) Win-test2 (在本例中為 Windows 虛擬機器)。ESXi 主機由 vCenter 管理。若您使用的是未搭配 vCenter 的獨立 ESXi 主機,仍可套用本範例中說明的邏輯——兩者僅在使用者介面方面有所不同。
- 開啟 VMware vSphere Client,前往
Storage,並選取存放所需 VMDK 檔案的位置。選取 VMDK 檔案,然後按一下Copy to.註: 如果您擁有獨立的 ESXi 主機且未安裝 vCenter,請在網頁瀏覽器中輸入 ESXi 主機的 IP 位址以開啟 VMware Host Client,然後前往
Storage > [Your datastore name] > Datastore Browser,選取您的 VMDK 檔案,然後按下Copy. 選擇目的地,然後按下Copy按鈕以確認。請注意,虛擬磁碟在 VMware vSphere Client 和 VMware Host Client 的網頁介面中顯示為 VMDK 檔案,但一個虛擬磁碟由以下組成:flat.vmdk 以及 vmdk 檔案(一個虛擬磁碟及其描述檔)。您也可以直接在伺服器上開啟 ESXi 主控台,或透過 SSH 連線來複製這些檔案。
- 在開啟的視窗中,選擇目標位置。您可以將 VMDK 檔案複製到同一資料存放區內的某個位置,或複製到另一個資料存放區。為了示範,我們將 VMDK 檔案複製到同一資料存放區的根目錄中。兩者 vmdk 以及 –flat.vmdk 在此情況下,檔案會被複製。

- 現在,您需要將 VMDK 虛擬磁碟掛載到另一台運作正常的虛擬機器上,且該虛擬機器的作業系統必須運作正常。在此範例中,我們使用同一台 ESXi 主機上運行 Windows Server 2016 的虛擬機器(虛擬機器名稱是 Windows Server 2016)。在虛擬機器運行期間,可將虛擬磁碟掛載至此正常運作的虛擬機器。在 vSphere Client 中,請前往
Hosts and Clusters, 選取正常的虛擬機器,右鍵點擊該虛擬機器,然後點擊Edit Settings.
- 在彈出的視窗中,按下
Add New Device並選擇Existing Hard Disk.
- 請選取您先前建立的 VMDK 檔案副本。在本範例中,該副本為 Win-test2.vmdk 已選取檔案的位置位於資料存放區根目錄中。

- 如果該虛擬機器尚未啟動,請啟動您已掛載目標虛擬磁碟的正常運作虛擬機器。對於正在運行的 Windows Server 2016 虛擬機器,系統會即時新增虛擬磁碟。
- 在 Windows 客機作業系統中,請前往
Computer Management > Disk Management(或執行diskmgmt.msc(在命令列中)並找到已掛載的虛擬磁碟。預設情況下,新掛載的磁碟處於離線狀態。右鍵點擊該磁碟並按下Online. 新增磁碟上的分割區應會自動分配磁碟機代號。若某個分割區尚未分配磁碟機代號,請右鍵點擊該分割區,然後點擊Change Drive Letter and Paths.
- 現在,您已擁有對 VMDK 虛擬磁碟中檔案和目錄的完整(讀寫)存取權限。只需在 Windows 檔案總管中開啟已掛載的磁碟,並將掛載至正常運作虛擬機器上的 VMDK 檔案中所需內容複製出來即可。 您也可以從已掛載的 VMDK 虛擬磁碟中刪除不必要的数据(例如,若有病毒所建立的檔案),但請務必謹慎操作,若掛載的 VMDK 磁碟存在相關快照,請勿損及虛擬磁碟。

範例 2:將虛擬磁碟掛載至在 VMware Player 或工作站上執行的虛擬機器
此範例與前一個類似,但使用在 VMware Workstation 上執行的虛擬機器來開啟 ESXi 虛擬機器的 VMDK 檔案。例如,當 ESXi 資料存放區沒有足夠的可用磁碟空間來複製虛擬磁碟時,即可採用此方法。該虛擬磁碟的 Win-test2 前一個範例中提到的虛擬機器將掛載至 VMware 工作站虛擬機器,以便提取其內容。
- 在 VMware vSphere Client 中,前往
Storage>[Your datastore name]>Files,選取您的 VMDK 檔案,然後按下Download.如您所知,ESXi 格式的虛擬磁碟由以下部分組成: vmdk 以及 –flat.vmdk 檔案。您需要將這兩個檔案下載至安裝了 VMware Workstation 或 VMware Player 的電腦上。當您使用 VMware HTML5 vSphere Client 從 ESXi 資料存放區下載虛擬磁碟時,這兩個檔案會被壓縮成一個 ZIP 壓縮檔。
此外,您也可以啟用 ESXi 主機的 SSH 存取權限,前往資料存放區目錄,並使用 SCP 客戶端(例如)將兩個虛擬磁碟檔案手動複製到您的電腦上, WinSCP.
註: 當您下載一個 精簡配置 若將來自採用 VMFS 檔案系統的 ESXi 資料存放區的虛擬磁碟複製到您的電腦上,您將獲得一個輕量級的 vmdk 檔案和一個 –flat.vmdk 檔案的大小將等於虛擬磁碟的最大預配置大小(就像您下載厚配置虛擬磁碟時那樣)。這是因為薄配置可以視為一種 VMFS 檔案系統 特點.

現在您可以看到兩個以 ZIP 壓縮檔形式下載的 ESXi 格式虛擬磁碟檔案。目前,位於 VMFS 資料存放區上的精簡配置虛擬磁碟大小約為 2 GB(參見上圖),而下載至工作站電腦上的同一磁碟大小則約為 8 GB(參見下圖)。
- 請將壓縮檔中的兩個檔案解壓縮。預設情況下,檔案會解壓縮至 Win-test2.vmdk 目錄,其名稱與壓縮檔名稱相同,但不包含檔案副檔名。

- 在此步驟中,您的電腦應已安裝 VMware Workstation 或 Player,並具備一台運作正常的虛擬機器(VM),且該虛擬機器上已安裝可正常運作的作業系統。雖然前一個範例使用的是執行 Windows Server 2016 的虛擬機器,但本範例則使用的是執行 Windows Server 2008 的正常運作虛擬機器。
開啟 VMware 工作站或 VMware Player,選取您的正常運作虛擬機器,然後
edit virtual machine settings.
- 在 硬體 標籤頁中,點擊
Add按鈕。
- 在 "新增硬體精靈" 在開啟後,請選擇
Hard disk作為硬體類型。接著,選擇磁碟類型(您可以保留預設值)。在 選擇磁碟 螢幕上,選取Use an existing virtual disk選項。
- 請選擇 vmdk 檔案(非 –flat.vmdk) 您從 ZIP 壓縮檔中解壓縮的檔案。您可以瀏覽檔案,或手動輸入檔案的完整路徑。

在此範例中,我們使用 ESXi 6.5 和 VMware Workstation 15。範例中執行 Windows Server 2008 的 VMware Workstation 虛擬機器採用 Workstation 12 硬體版本(虛擬機器版本 12)。而我們要掛載其虛擬磁碟的 ESXi 虛擬機器,其虛擬機器版本為 7。
- 我們在 VMware 工作站中收到一則錯誤訊息,指出從 ESXi 主機複製的虛擬磁碟與此虛擬機器不相容:

此錯誤可透過編輯磁碟描述檔(輕量級版本 vmdk (若為 ESXi 虛擬機器的虛擬磁碟,則為該檔案)。在文字編輯器中開啟您的 VMDK 檔案,並編輯其中的數字
Ddb.virtualHWVersion字串。在我們的情況下,13 會被改為 12。註: 請注意,對於 VMware 工作站虛擬機的虛擬磁碟,虛擬磁碟描述檔是內建於虛擬磁碟 VMDK 檔案中的(與 ESXi 虛擬機的虛擬磁碟不同,這裡沒有獨立的描述檔檔案)。

編輯檔案後,虛擬磁碟已成功新增至現有的虛擬機器。
- 如果虛擬機器尚未啟動,請將其啟動。
- 開啟 磁碟管理 在 Windows 中,將虛擬磁碟的狀態設為"線上",為分割區指派一個磁碟機代號,然後瀏覽其中的檔案。

如何在不啟動虛擬機器的情況下從 VMDK 檔案中擷取資料
無需配置和啟動虛擬機的方法各有其優勢。其中某些方法甚至無需安裝虛擬化平台。您可以在短時間內直接將 VMDK 檔案掛載至主機作業系統。
Method 1: Mounting VMDK files in a host OS with VMware Workstation
此方法需要一個 VMware 工作站 在您實體電腦上運行的 Windows 或 Linux 作業系統中進行安裝。VMware 工作站提供了一項特點,可讓您將 VMDK 檔案掛載至主機作業系統。此特點支援 ESXi 格式的虛擬磁碟,以及與虛擬機器快照相關的增量磁碟。與本部落格文章中先前討論的所有方法相同,您的作業系統必須支援虛擬磁碟分割區的檔案系統。
如果您有虛擬機器的快照,則在建立每個快照後,系統會自動建立相應的增量虛擬磁碟。 若您希望開啟某個快照建立後瞬間的虛擬磁碟狀態,則應具備父虛擬磁碟及對應的增量磁碟。在此情況下,您應將適當的增量虛擬磁碟掛載至主機作業系統。與父虛擬磁碟相關的依賴關係將自動解決。
若您擁有快照但希望開啟父虛擬磁碟,請以唯讀模式開啟該父虛擬磁碟。這是因為對父虛擬磁碟進行變更,可能會損壞由該父虛擬磁碟所建立的快照或連結複本。唯讀模式可防止您在將虛擬磁碟掛載至主機作業系統後,對該虛擬磁碟寫入資料。 若使用此虛擬磁碟的虛擬機器已關機,或特定虛擬機器未使用此虛擬磁碟,您即可掛載 VMDK 虛擬磁碟檔案。
讓我們來看看如何掛載 VMware 工作站虛擬機器中具有快照的 VMDK 虛擬磁碟。該虛擬機器的虛擬磁碟上,有一個 NTFS 分割區安裝了 Windows。在建立第一個快照後,該 Snapshot1.txt 檔案會建立在 C: 磁碟的根目錄中,同樣地,在建立第二個快照後,該 Snapshot2.txt 檔案會建立在該處。第一個範例適用於 Linux,第二個範例則適用於 Windows。此範例使用舊版 Windows XP 虛擬機器的虛擬磁碟檔案。
範例 1:在 Linux 主機上掛載 VMDK
- 開啟 VMware 工作站 for Linux,然後前往
File>Mount Virtual Disks.
- 點擊
Mount Disk,隨即會彈出一個視窗。請點擊Browse並選取虛擬磁碟 VMDK 檔案。
- 現在,讓我們選取在建立第二個虛擬機器快照後所建立的第二個差異虛擬磁碟的 VMDK 檔案。此檔案的名稱顯示為 VM_name-000002.vmdk 在這種情況下(WinXP-test-000002.vmdk (此範例中使用的是)。

- 請在您的 Linux 檔案系統上建立一個目錄,以便將 VMDK 格式的虛擬磁碟掛載至該目錄。現在我們來建立這個 /mnt/vmdk/ Linux 控制台中的目錄。
mkdir /mnt/vmdk/ - 為您的使用者設定權限(使用者名稱是 user1 並且是 群組1 (在此範例中):
chown -R user1:group1 /mnt/vmdk/chmod -R 0775 /mnt/vmdk/ - 現在,請選擇您所建立的目錄作為目標目錄,並勾選"以唯讀模式掛載” 核取方塊,然後按一下
Mount.
- 現在您可以開啟 /mnt/vmdk/ 在 Linux 檔案總管中開啟該目錄,並瀏覽 VMDK 虛擬磁碟的檔案和目錄的位置。您可以看到 Snapshot1.txt 以及 Snapshot2.txt 這些檔案是在本範例中建立第一個和第二個快照之後所建立的。這兩個檔案的位置分別位於不同的增量 VMDK 虛擬磁碟上。

- 完成對虛擬磁碟內容的操作後,請務必從主機 Linux 系統上的目錄(掛載點)卸載該 VMDK 虛擬磁碟。

如果您偏好使用控制台介面,可以在 Linux 主機的控制台中使用以下指令掛載 VMDK 磁碟映像檔:
vmware-mount /media/user1/vms/vm_name/vm_disk_name-000002.vmdk /mnt/vmdk
地點:
vm_name 這是虛擬機器的名稱,在此情況下與 VM 目錄名稱相同。 WinXP 測試 是本範例中的虛擬機器名稱。
vm_disk_name 是虛擬磁碟的名稱(WinXP-test.vmdk (此範例中使用的是)。
vm_disk_name-000001.vmdk 是建立第一個虛擬機器快照後所建立的第一個差分磁碟的名稱(WinXP-test-000001.vmdk (在此情況下)。
vm_disk_name-000002.vmdk 是根據此設定建立第二個虛擬機器快照後所產生的第二個 Delta 磁碟的名稱(WinXP-test-000002.vmdk (在此情況下)。
- 掛載虛擬磁碟。預設情況下,虛擬磁碟會以讀寫模式掛載。您可以使用
-r在命令列中輸入此指令,即可將磁碟掛載為唯讀模式。vmware-mount /media/user1/vms/vm_name/vm_disk_name-000002.vmdk /mnt/vmdk - 列出所有已掛載的 VMDK 虛擬磁碟:
vmware-mount -L - 在結束對已掛載的 VMDK 虛擬磁碟的操作之前,請先卸載所有虛擬磁碟:
vmware-mount -x
範例 2:如何在 Windows 主機上掛載 VMDK
在 Windows 中掛載 VMDK 檔案的方法大致相同。除了 File > Map Virtual Disks 若要在 VMware 工作站的圖形使用者介面 (GUI) 中執行此操作,請依照以下步驟操作。讓我們掛載在建立第一個虛擬機器快照後所建立的第一個差異虛擬磁碟的 VMDK 檔案。此 VMDK 檔案的名稱格式如下: VM_name-000001.vmdk (WinXP-test-000001.vmdk (本教學中已開啟)。
- 在 Windows 檔案總管中右鍵點擊 VMDK 檔案,然後點擊
Map Virtual Disk.
- 選擇用於掛載 VMDK 檔案的參數。建議您以唯讀模式開啟 VMDK 檔案,以避免在寫入資料後損壞屬於快照鏈的虛擬磁碟。在此情況下,預設的磁碟機代號為 Z:,若勾選了相應的核取方塊,在完成映射後,該磁碟機將自動在 Windows 檔案總管中開啟。點擊
OK繼續。
- 現在,虛擬磁碟已在 Windows 中掛載為 Z: 磁碟機,您可以讀取 vmdk 檔案的內容。在下方的螢幕截圖中,您可以看到 Snapshot1.txt 在拍攝第一個快照後建立的檔案。該 Snapshot2.txt 該檔案缺失,因為它是於建立第二個虛擬機器快照之後才建立的,而我們已開啟了與第一個虛擬機器快照相關的增量虛擬磁碟。

- 完成對已掛載的 VMDK 虛擬磁碟的操作後,請勿忘記斷開該磁碟的連接。請右鍵點擊對應的 VMDK 檔案,然後點擊
Disconnect Virtual Disk. 斷開虛擬磁碟的連接後,即可啟動使用該虛擬磁碟的虛擬機器。
方法 2:使用 7-Zip 從 VMDK 檔案中解壓縮內容
如果您想知道如何在不執行虛擬機的情況下開啟 VMDK 檔案,可以安裝 7-Zip 並從虛擬磁碟映像中提取內容。7-Zip 是一款免費工具,旨在壓縮檔案以及從壓縮檔和其他映像中解壓縮檔案。您可以將 7-Zip 用作 VMDK 解壓縮工具。此工具可在 Linux 和 Windows 系統上使用。
7-Zip 可以開啟 vmdk 以及 –flat.vmdk 檔案(此工具可開啟單一 –flat.vmdk 若描述符為檔案 vmdk (檔案遺失)– 7-Zip 實際上是用於 ESXi 格式的虛擬磁碟。7-Zip 無法開啟在擷取虛擬機器快照後所建立的增量 VMDK 檔案。
How to open VMDK files with 7-zip on Linux
- 在您的 Linux 電腦上安裝完整的 7-Zip 套件。本範例使用 Ubuntu 系統。
apt-get install p7zip-full - 列出 vmdk 使用 7-Zip 壓縮的檔案:
7z l vm_name.vmdk - 讓我們找出包含"開機.” 出現在其名稱中,例如:
7z l /media/user1/vms/WinXP-test/WinXP-test.vmdk | grep boot[.]在哪裡 user1 是我們的 Linux 使用者名稱, l – 清單。

- 讓我們萃取 (
e) 該 boot.ini 來自 VMDK 映像檔的檔案:7z e /media/user1/vms/WinXP-test/WinXP-test.vmdk boot.ini您可以透過相同的方式,從 VMDK 檔案中提取其他檔案和目錄。
How to open VMDK files with 7-zip on Windows
- 請從 官方網站 並將應用程式安裝至您的 Windows 電腦上。為求更方便,請使用 EXE 安裝程式。
- 在 Windows 上安裝 7-Zip 後,當您在 Windows 檔案總管中右鍵點擊任何檔案或資料夾時,右鍵選單中會新增 7-Zip 選項(請參閱下圖)。您可以使用這些選項將 VMDK 檔案作為壓縮檔開啟,或立即解壓縮檔案。

- 在下方的螢幕截圖中,獨立 Win-test2-flat.vmdk 該檔案會顯示在 Windows 版 7-Zip 的圖形使用者介面中。您可以解壓縮所需的 VMDK 內容。

如何在 Linux 中掛載 VMDK 檔案(其他方法)
Linux 最強大的功能之一,就是能夠在終端機中執行大量操作,甚至僅使用內建工具即可。這些工具將協助您掛載 VMDK 檔案,並存取儲存於虛擬磁碟中的內容。以下範例將使用 Ubuntu Linux 進行示範。
Method 1: How to mount VMDK files by using /dev/loop
在 Linux 中,迴圈裝置(Loop devices)是一種偽裝置,它能讓檔案以區塊裝置的形式被存取,並可用於掛載包含檔案系統的磁碟映像檔。迴圈裝置的名稱格式為 /dev/loopX 其中 X 代表迴路裝置的編號。此方法適用於掛載 –flat.vmdk 檔案,即使沒有虛擬磁碟描述檔。
讓我們以實際案例為例,探討如何在 Linux 中掛載 VMDK 檔案,以便存取虛擬磁碟中的檔案。這裡有一個 ESXi 格式的虛擬磁碟,其中包含一個分割區——但描述檔檔案遺失了。很久以前,該虛擬磁碟上曾安裝過 Windows XP。
- 請使用以下兩個指令中的任一個,來檢查您的 Linux 系統上現有的迴路裝置數量。
fdisk -l | grep /dev/loopdf -h | grep /dev/loop - 就我們的情況而言,編號為 1 至 21 的裝置已經存在(/dev/loop1 – /dev/loop21)。因此,讓我們建立編號為 30 的迴路裝置——這個編號目前是空閒的。我們將把此裝置與 –flat.vmdk 檔案。
losetup /dev/loop30 /vms/Win-test2-flat.vmdk - 設定偏移量:
losetup -o 32256 /dev/loop31 /dev/loop30其中 32256 是偏移量,對於在 Windows XP/Server 2003 及更早版本的 Windows 系統中格式化的磁碟,此數值為 63*512(63 代表分區的第一個磁區編號,512 位元組則是磁區大小)。若使用 Windows 7/Server 2008 及更新版本的 Windows 系統,請嘗試使用偏移量 105906176。
您可以使用以下指令檢視磁區大小,以及用於開機啟動的第一個磁區的相關資訊:
fdisk -l /dev/loop30 /vms/Win-test2-flat.vmdk
另外,對於包含多個分割區的虛擬磁碟,您可以使用 parted 來確定每個分割區的起始位置和結束位置:
parted /dev/loop30在 分開 在命令列視窗中,輸入以下指令:
unitBprint
- 建立一個目錄,用作 VMDK 映像檔的掛載點:
mkdir /mnt/vmdk-image - 將與 VMDK 映像檔相關聯的迴路裝置掛載至已建立的目錄:
mount /dev/loop31 /mnt/vmdk-image - 列出已掛載映像檔的內容:
ls -al /mnt/vmdk-image - 完成對虛擬磁碟內容的操作後,請卸載 vmdk 映像檔並斷開迴圈裝置的連接:
umount /mnt/vmdk-imagelosetup -d /dev/loop31
方法 2:如何使用 kpartx 掛載 VMDK 檔案
Kpartx 這是一個可將映像檔中的分割區掛載至實際 Linux 檔案系統目錄的工具。此工具可用於為區塊裝置的分割區設定裝置映射。此方法同樣適用於掛載 –flat.vmdk ESXi 伺服器上使用的映像檔。讓我們來看看如何掛載 –flat.vmdk 前一個範例中使用的檔案。
- 安裝 kpartx:
apt-get install kpartx - 在詳細運作模式下,新增 VMDK 映像檔的分區映射:
kpartx -av /vms/Win-test2-flat.vmdk - 將分割區掛載至 /mnt/vmdk-image 先前準備好的目錄:
mount /dev/mapper/loop30p1 /mnt/vmdk-image/在哪裡 loop30 是迴路裝置的編號,以及 p1 是映像檔內的分區編號(磁碟映像檔中的第一個分區)。
- 列出您已掛載的虛擬磁碟分割區的內容:
ls -al /mnt/vmdk-image/
- 完成對 VMDK 映像檔的操作後,請卸載 VMDK 虛擬磁碟映像:
umount /mnt/vmdk-imagekpartx -d /vms/Win-test2-flat.vmdk
結論
掌握多種提取 VMDK 內容的方法,能為您帶來靈活性與可靠性,因為每種方法在特定情況下都可能是最佳選擇。此外,除了具備這些知識之外,若能為您的虛擬機器建立備份,效果會更佳。
NAKIVO Backup & Replication 能夠以最佳方式備份和還原在 VMware vSphere 上運行的虛擬機器。您可以從備份中還原整個虛擬機器、特定的虛擬磁碟,或將個別檔案還原至自訂位置。