如何開啟、掛載 VMDK 檔案並從中提取資料
VMDK 檔案用於儲存虛擬機器硬碟的內容。若虛擬機器因作業系統損毀、更新失敗、惡意軟體或設定錯誤而無法啟動,您仍可能能夠存取其虛擬硬碟中的資料。</p>
<p> 本指南說明如何使用 VMware Tools 以及適用於 Windows 和 Linux 的替代方法,來開啟、掛載 VMDK 檔案並從中擷取資料。透過這些方法,您無需啟動虛擬機器即可存取檔案。 請注意,本文所述的方法僅適用於未加密或未嚴重損毀的 VMDK 檔案。
什麼是 VMDK 檔案?
VMDK(虛擬機器磁碟)是由 VMware 開發的一種開放式虛擬磁碟檔案格式。此格式的檔案使用 .vmdk 副檔名,並受 VMware 與 VirtualBox支援。
在 VMware ESXi 伺服器上,VMDK 通常以兩個獨立檔案的形式儲存於資料存放區中:一個是較小的虛擬磁碟描述檔,另一個則是包含原始磁碟資料的虛擬磁碟區段檔。 描述檔通常遵循命名模式 diskname.vmdk,而包含實際資料的區段檔則命名為 diskname-flat.vmdk。
在 VMware 工作站中,虛擬磁碟通常以單一 diskname.vmdk 檔案(整體式稀疏格式)儲存。在此情況下,描述資訊會嵌入至儲存磁碟資料的同一檔案中。虛擬磁碟描述檔定義了磁碟的結構、幾何參數、虛擬硬體版本以及唯一識別碼。
虛擬磁碟描述符檔案
虛擬磁碟描述符以純文字形式儲存。在下方的螢幕截圖中,左側顯示的是 ESXi 格式的描述符檔案(一個 .vmdk 檔案,可使用任何文字編輯器開啟)。右側則可看到嵌入於單一 .vmdk 檔案中的描述符資料,該檔案是以 VMware 工作站格式建立的。 在此情況下,該檔案是在十六進位編輯器中開啟的。

如圖所示,嵌入在單一工作站格式 .vmdk 檔案中的描述符資料,始於 0x200 偏移量(位元組位址)。將 0x200 從十六進位轉換為十進位後,結果為:0x200(十六進位)= 512(十進位)。 這表示若要從 VMDK 檔案中擷取嵌入式描述符,必須複製從第 512 位元組開始的那段資料。
注意: 您可參閱關於轉換的部落格文章 VMware 虛擬機器轉為 Hyper-V 虛擬機器 以取得有關擷取、編輯及匯入嵌入式磁碟描述符的詳細說明。
虛擬磁碟資料檔案
在下圖的螢幕截圖中,有兩個虛擬磁碟檔案在十六進位編輯器中開啟。 這兩顆磁碟上皆安裝了相同的作業系統,且第一個分割區是使用 Windows 內建的磁碟工具建立並格式化的。在螢幕截圖的左側,顯示了一個 -flat.vmdk 檔案(ESXi 格式)。在此檔案中,原始磁碟資料從偏移量 0x00000000 開始。
右側則顯示了一個 VMware 工作站格式的 VMDK 檔案。 在此情況下,相同的磁碟資料並非從檔案開頭開始,而是從偏移量 0x00150000 開始,這是因為描述符和元資料嵌入在實際磁碟內容之前。

在繼續開啟並掛載 VMDK 檔案之前,請務必備份您的資料,以防磁碟可能受損。
透過啟動虛擬機器開啟 VMDK 檔案的 2 種方法
首先介紹透過啟動虛擬機器來開啟 VMDK 檔案的方法。這些方法操作簡單且廣泛適用。不過,它們需要主機系統上已安裝虛擬化平台(VMware ESXi、VMware 工作站、VMware Player 或 Oracle VirtualBox)。
方法 1:即使虛擬機器上的作業系統已無法運作,仍可使用 Live DVD
此方法假設虛擬機器仍能從外部媒體開機。您無需使用實體 DVD,而是將 ISO 映像檔掛載至虛擬機器的虛擬 DVD 光碟機,並從中開機。
從 Live DVD 啟動作業系統後,您可以掛載 VMDK 檔案的分區,並將資料複製到連接至虛擬機器的 USB 隨身碟、主機,或透過網路複製到另一台系統。某些 Live DVD 發行版會自動掛載分區。
此方法類似於當安裝的作業系統無法開機時,從實體電腦中恢復檔案。它可用於從 VMware ESXi 及 VMware Workstation/Player 上的 VMDK 檔案中提取資料。
請確保 Live 作業系統支援虛擬磁碟內使用的檔案系統。例如,Windows 並未原生支援 EXT3、EXT4 或 ReiserFS 等 Linux 檔案系統。然而,基於 Linux 的 Live 發行版通常支援 NTFS 和 FAT32 等 Windows 檔案系統,因此在從無法啟動的 Windows 虛擬機器中恢復資料時,這類發行版是實用的選擇。
範例:在 ESXi 上開啟 VMDK 檔案
請考慮以下情境:一台在 ESXi 主機 上執行 Windows Server 2016 的虛擬機器無法開機,但您需要擷取儲存於其 VMDK 檔案中的檔案。該虛擬磁碟包含兩個 NTFS 分割區:一個系統(開機)分割區以及主要 C: 磁碟機。 在此範例中,將官方的 Ubuntu 18 安裝 ISO 作為 Live DVD 使用,以存取虛擬磁碟並複製所需資料。
注意: 此方法同樣適用於較新版本的產品,包括 VMware Workstation 17、ESXi 9.0、Windows Server 2025 以及 Ubuntu Linux 24.04。 雖然具體的介面元素可能略有不同,但底層的工作流程保持不變。
- 將 ISO 映像檔上傳至可由執行該虛擬機的主機所存取的資料存放區。
- 開啟 VMware vSphere Client,前往”主機與叢集”,選取您的虛擬機,然後按一下”編輯設定”。

- 在虛擬機設定視窗中,前往”CD/DVD 光碟機”選項。若資料存放區中已有必要的 ISO 檔案,請選取”資料存放區 ISO 檔案”。 接著,按一下”瀏覽”並選取適當的 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-disk1 mkdir /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 直通功能將其連接到虛擬機器,藉此從已掛載的 VMDK 複製所需檔案。 此外,您也可以使用 SMB (CIFS) 共用資料夾,透過網路傳輸檔案。
在此範例中,資料將複製到由 192.168.17.125 主機提供的 SMB 共用資料夾。共用路徑為 \192.168.17.125share,且 user10 具備寫入權限。
- 現在讓我們在從 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-share cp /mnt/win-disk-2/bootmgr
- 請確認已成功複製所需檔案,並檢查您的 SMB 共用資料夾內容。
ls -al /mnt/smb-share
如 如上圖所示,bootmgr 檔案已成功複製。這展示了當虛擬機器上的作業系統無法開機時,從 VMDK 檔案複製資料的第一種方法。此方法同樣適用於 VMware Player 和 VMware 工作站。
方法 2:將 VMDK 檔案掛載為虛擬磁碟至運作正常的虛擬機器(ESXi/工作站/Player)
此方法與前一種類似,但並非從外部媒體開機,而是將 VMDK 檔案掛載至具備正常運作作業系統的現有虛擬機器上。該 VMDK 檔案可作為額外的虛擬磁碟,新增至運行於 VMware ESXi、VMware 工作站或 VMware Player 上的虛擬機器中。
若需在 VMware Workstation 或 Player 中開啟來自 ESXi 虛擬機器的 VMDK 檔案,請將描述檔和延伸檔(vmdk 及 -flat.vmdk)一併複製到 Workstation 或 Player 安裝主機可存取的本地磁碟上。若來源虛擬機器採用 快照,請務必在複製父磁碟檔之外,一併複製相關的增量(差異)VMDK 檔案。
以下範例示範此方法:
- 範例 1:將某台虛擬機器的 VMDK 檔案掛載至同一台 ESXi 主機上的另一台虛擬機器,以開啟該檔案。
- 範例 2:將 ESXi 虛擬機器的 VMDK 檔案掛載至在 VMware 工作站中運行的虛擬機器,以從中擷取資料。
請確保正常運作的虛擬機器的作業系統支援所掛載 VMDK 檔案中使用的檔案系統。否則,可能無法存取該分區。
範例 1:將虛擬磁碟掛載至在 ESXi 上運行的虛擬機器
- 關閉您欲存取其虛擬磁碟以擷取檔案的虛擬機器。
- 在 ESXi 資料存放區中找到該虛擬磁碟的位置。
- 將虛擬磁碟複製到同一資料存放區上的另一個目錄,或複製到不同的資料存放區,以避免與磁碟鎖定相關的問題。 在此範例中,我們將開啟一個名為
Win-test2.vmdk的 VMDK 檔案,該檔案屬於名為 Win-test2 的 Windows 虛擬機器。此 ESXi 主機由 vCenter管理。若您使用的是未搭配 vCenter 的獨立 ESXi 主機,工作流程相同,僅使用者介面有所不同。 - 開啟 VMware vSphere Client,前往”儲存”並選取所需 VMDK 檔案的位置。 選取 VMDK 檔案,然後按一下”複製至”。
注意: 若您使用的是未搭配 vCenter 的獨立 ESXi 主機,請在網頁瀏覽器中輸入 ESXi 主機的 IP 位址,以開啟 VMware Host Client。 接著導航至”儲存” > ” > [Datastore Name] > ” > “資料存放區瀏覽器”,選取 VMDK 檔案並按一下”複製”。選擇目標位置並確認操作。
您也可以透過直接存取 ESXi 主控台,或透過 SSH 連線來複製檔案。

- 在開啟的視窗中,選取目標位置。您可以將 VMDK 檔案複製到同一資料存放區內的某個位置,或複製到不同的資料存放區。 在此範例中,檔案將複製至同一資料存放區的根目錄。
.vmdk描述檔與-flat.vmdk檔案均會一併複製。
- 將 VMDK 檔案掛載至具備正常運作作業系統的健康虛擬機器。在此範例中,使用的是在同一台 ESXi 主機上執行 Windows Server 2016 的虛擬機器(WinServer2016)。虛擬機器運作期間即可掛載虛擬磁碟。
在 vSphere Client 中,導航至”主機與叢集”,選取運作正常的虛擬機器,右鍵點擊並選擇”編輯設定”。

- 在彈出的視窗中,點擊”新增裝置”,然後選取”現有硬碟”。

- 選取您先前製作的 VMDK 檔案副本。在本範例中,選取了位於資料存放區根位置下的
Win-test2.vmdk檔案副本。
- 若該虛擬磁碟所連接的正常運作虛擬機器尚未執行,請將其啟動。在此範例中,虛擬磁碟是在 Windows Server 2016 虛擬機器執行期間新增的(熱新增)。
- 在 Windows 來賓作業系統中,前往”電腦管理” > “磁碟管理”(或於命令列執行
diskmgmt.msc),並找出已連接的虛擬磁碟。預設情況下,新磁碟處於離線狀態。 右鍵點擊該磁碟,然後按下”線上”。系統應會自動為分割區指派磁碟機代號;若未自動指派,請右鍵點擊該分割區,並點選”變更磁碟機代號與路徑”。
現在您已可對已連接的 VMDK 檔案中的檔案和目錄擁有完整的讀寫權限。請在 Windows 檔案總管中開啟已掛載的磁碟,並複製所需資料。
您也可以刪除不必要的檔案(例如與惡意軟體相關的檔案),但請謹慎操作。若 VMDK 檔案有相關的快照,修改或刪除資料可能會影響快照的一致性。

範例 2:將虛擬磁碟掛載至在 VMware Workstation 或 Player 上執行的虛擬機器
此範例與前一個類似,但使用在 VMware Workstation 中執行的虛擬機器來開啟 ESXi 虛擬機器的 VMDK 檔案。 當 ESXi 資料存放區的可用空間不足以建立虛擬磁碟副本時,此方法便相當實用。
在此情況下,會將前述 Win-test2 虛擬機器的虛擬磁碟掛載至 VMware 工作站虛擬機器,以擷取其資料。
- 在 VMware vSphere Client 中,前往”儲存” > [Datastore name] > “檔案”,選取您的 VMDK 檔案,然後按下”下載”。
如前所述,ESXi 虛擬磁碟由一個描述檔(
.vmdk)和一個延伸區(-flat.vmdk)檔案組成。您必須將這兩個檔案都下載到安裝了 VMware Workstation 或 VMware Player 的電腦上。當您使用 HTML5 vSphere Client 從 ESXi 資料存放區下載虛擬磁碟時,這些檔案會自動打包成單一的 ZIP 壓縮檔。此外,您也可以在 ESXi 主機上啟用 SSH 存取,導航至資料存放區目錄,並使用 SCP 客戶端(例如 WinSCP)將這兩份磁碟檔案手動複製到您的電腦上。
注意: 當從 VMFS 資料存放區下載 精簡配置 虛擬磁碟時,生成的
-flat.vmdk檔案將會擴展至其完整的預配置大小,類似於厚配置磁碟。這是因為薄配置是在 VMFS 檔案系統 層級上實現的。
現在您可以看到已下載的兩個 ESXi 虛擬磁碟檔案,它們以 ZIP 壓縮檔形式存在。VMFS 資料存放區上薄配置磁碟的大小約為 2 GB(參見上圖),而下載至工作站的同一磁碟則約為 8 GB(參見下圖)。
- 從壓縮檔中解壓縮這兩個檔案。 預設情況下,這些檔案會解壓縮至名為”
Win-test2.vmdk“的目錄中,該名稱與壓縮檔名稱相同(不含檔案副檔名)。
- 執行此步驟時,您需要一台已安裝 VMware Workstation 或 VMware Player 的電腦,且該電腦上需有一台運作正常的虛擬機器(VM),並搭載可正常運作的作業系統。在前一個範例中,使用的是執行 Windows Server 2016 的虛擬機器;在此範例中,則使用的是執行 Windows Server 2008 的虛擬機器。對於較新版本的 Windows,工作流程亦相同。
開啟 VMware Workstation 或 VMware Player,選取您的正常運作虛擬機器,並編輯虛擬機器設定。

- 在”硬體”索引標籤中,按一下”新增”按鈕。

- 在”新增硬體精靈”中,選擇”硬碟”作為硬體類型。接著選擇磁碟類型(可保留預設值)。在”選取磁碟”畫面中,選擇”使用現有的虛擬磁碟”。

- 選取您從 ZIP 壓縮檔中解壓縮的 vmdk 檔案(請注意,檔案名稱不應包含”
flat.vmdk“)。 您可以瀏覽檔案或手動輸入檔案路徑。
在此範例中,使用的是 ESXi 6.5 和 VMware Workstation 15。執行 Windows Server 2008 的 VMware Workstation 虛擬機器使用硬體版本 12(虛擬機器版本 12),而其虛擬磁碟正要掛載的 ESXi 虛擬機器則使用虛擬機器版本 7。 較新版本的操作流程相同。
- 當嘗試在 VMware Workstation 中掛載虛擬磁碟時,會出現以下相容性錯誤訊息:
所選的虛擬磁碟與此 Workstation 12.x 虛擬機器不相容。新增此磁碟將導致此虛擬機器與較舊的 VMware 產品不相容。

您可以透過編輯磁碟描述檔(對於 ESXi 虛擬機器的虛擬磁碟而言,即為輕量級 vmdk 檔案)來修正此錯誤。 請在文字編輯器中開啟您的 VMDK 檔案,並修改
Ddb.virtualHWVersion字串中的數字。以本例而言,將 13 改為 12。注意: 請注意,對於 VMware Workstation 虛擬機器,虛擬磁碟描述檔是嵌入在 VMDK 檔案中的(與 ESXi 虛擬磁碟不同,後者使用獨立的描述檔)。

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

如何在不啟動虛擬機的情況下從 VMDK 檔案中擷取資料
無需啟動虛擬機的方法具有多項實用優勢。在某些情況下,甚至完全不需要使用虛擬化平台。相反地,您可以直接在主機作業系統上掛載 VMDK 檔案,並快速存取其內容。
方法 1:使用 VMware Workstation 在主機作業系統中掛載 VMDK 檔案
此方法需要 VMware 工作站 已安裝於 Windows 或 Linux 主機上。VMware Workstation 包含一項特點,可讓您將 VMDK 檔案直接掛載至主機作業系統。此特點支援 ESXi 格式的磁碟以及與快照相關的增量磁碟。與先前的方法相同,主機作業系統必須支援虛擬磁碟分割區所使用的檔案系統。
建立快照時,系統會產生增量(差異)虛擬磁碟。若要存取虛擬機器在特定快照時的狀態,必須同時具備父磁碟與對應的增量磁碟。在此情況下,您應將適當的增量磁碟掛載至主機作業系統。系統會自動解決對父磁碟的依賴關係。
若已存在快照,但您仍希望直接掛載父磁碟,請使用唯讀模式。 修改父磁碟可能會損毀由該虛擬機器所建立的快照或連結複本。唯讀模式可在磁碟掛載後防止寫入操作。您僅能在使用該磁碟的虛擬機器已關機,或沒有任何虛擬機器正在使用該磁碟時,才可掛載 VMDK 檔案。
以下範例示範如何從具有快照的 VMware 工作站虛擬機器中掛載 VMDK 檔案。在此情境中,Windows 安裝於單一 NTFS 分割區上。 在建立第一個快照後,C: 磁碟機的根目錄中會產生一個名為 Snapshot1.txt 的檔案;建立第二個快照後,則會產生 Snapshot2.txt。第一個範例使用 Linux,第二個則使用 Windows。此處使用的是較舊版 Windows XP 虛擬機的虛擬磁碟檔案,但相同原則也適用於其他 Windows 版本。
範例 1:在 Linux 主機上掛載 VMDK
- 開啟 VMware Workstation for Linux,並前往”檔案” > “掛載虛擬磁碟”。

- 點擊”掛載磁碟”。在彈出視窗中,點擊”瀏覽”並選取 VMDK 檔案。

- 選取在第二次虛擬機器快照後所建立的第二個增量(差異)磁碟的 VMDK 檔案。 在此類情況下,檔案名稱遵循
VM_name-000002.vmdk的格式(例如,WinXP-test-000002.vmdk)。
- 在 Linux 檔案系統上建立一個目錄,用作 VMDK 檔案的掛載點。 現在,讓我們在 Linux 控制台中建立
/mnt/vmdk/ 目錄。mkdir /mnt/vmdk/ - 為您的使用者設定適當的權限(在此範例中,使用者名為 user1,隸屬於 group1):
chown -R user1:group1 /mnt/vmdk/ chmod -R 0775 /mnt/vmdk/ - 現在,選取您建立的目錄作為目標目錄,勾選”以唯讀模式掛載”核取方塊,然後按一下”掛載”。

- 現在,您可以在 Linux 檔案總管中開啟
/mnt/vmdk/ 目錄,並瀏覽掛載的 VMDK 檔案中所儲存的檔案。 在此範例中,於第一次和第二次快照後所建立的 Snapshot1.txt 和 Snapshot2.txt 檔案皆可見。每個檔案皆位於獨立的增量 VMDK 磁碟上。
- 完成操作後,請勿忘記從 Linux 主機上的目錄(掛載點)卸載該 VMDK 檔案。

在此範例中,已成功使用 VMware Workstation 17.0 在 Ubuntu 22.04 上掛載及解除掛載 VMDK 檔案。
注意: Ubuntu 24.04 採用較新的 Linux 核心(6.8 或更新版本),這可能會影響與 VMware 專有核心模組的相容性。在某些情況下,您可能會遇到”VMware-fuseUI 沒有回應”的錯誤。
發生此問題的原因在於,在 Linux 上掛載 VMDK 檔案需仰賴一個與”使用者空間檔案系統”(FUSE)層整合的 VMware 元件。若所需的 FUSE 模組或輔助程序無法正確初始化,掛載介面可能會停止回應。
若發生相容性問題,請考慮使用受支援的內核版本或較早的 VMware 工作站版本。 請密切關注 VMware 官方文件,以獲取有關磁碟掛載支援的最新資訊。
若您偏好使用控制台介面,可透過以下指令掛載 VMDK 檔案:
vmware-mount /media/user1/vms/vm_name/vm_disk_name-000002.vmdk /mnt/vmdk
其中:
vm_name 為虛擬機器名稱(與 VM 目錄名稱相同)。 在此範例中,WinXP-test 為虛擬機器名稱。
vm_disk_name 為虛擬磁碟名稱(此範例中為WinXP-test.vmdk )。
vm_disk_name-000001.vmdk 為在建立第一個虛擬機器快照後所建立的第一個差異磁碟(WinXP-test-000001.vmdk)。
vm_disk_name-000002.vmdk 為在建立第二個快照後所建立的第二個差異磁碟(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 檔案的流程類似。 在 VMware 工作站中,您可以在圖形使用者介面 (GUI) 中使用”檔案”>” > “>”映射虛擬磁碟”。或者,在 Windows 資源管理器中右鍵點擊 VMDK 檔案,並從快顯選單中選擇”映射虛擬磁碟”。
在此範例中,將掛載第一個快照後建立的第一個增量(差異)磁碟的 VMDK 檔案。此類檔案遵循以下命名模式: VM_name-000001.vmdk (本範例中為 WinXP-test-000001.vmdk )。
注意: 在 Windows 作業系統上,將虛擬磁碟掛載為磁碟機的特點已於 VMware Workstation 17.0 中移除。支援此特點的最新 Windows 版 VMware Workstation 版本為 16.1.2。此特點仍存在於最新版本的 Linux 版 VMware Workstation(17.5 及後續版本)。
- 在 Windows 檔案總管中右鍵點擊 VMDK 檔案,然後點擊”映射虛擬磁碟”。

- 選擇適當的參數來掛載 VMDK 檔案。建議以唯讀模式開啟磁碟,以防止快照鏈中的虛擬磁碟遭受潛在損壞。
預設情況下,磁碟機代號設定為 Z:,若勾選對應的核取方塊,映射完成後磁碟將自動在 Windows 檔案總管中開啟。點擊”確定”繼續。

- 現在,虛擬磁碟已作為磁碟 Z: 在 Windows 中掛載,您可以讀取其內容。在下方的螢幕截圖中,您可以看到在建立第一個快照後所產生的 Snapshot1.txt 檔案。由於 Snapshot2.txt 檔案是在建立第二個快照後才產生的,而目前掛載的增量磁碟對應於第一個快照,因此該檔案並未顯示。

- 當您完成對已映射 VMDK 檔案的操作後,請勿忘記斷開磁碟連接。 右鍵點擊相應的 VMDK 檔案,並選擇”斷開虛擬磁碟”。斷開虛擬磁碟後,即可啟動使用該磁碟的虛擬機器。

方法 2:使用 7-Zip 從 VMDK 檔案中提取內容
若您需要在不執行虛擬機器的情況下開啟 VMDK 檔案,可以使用 7-Zip 從虛擬磁碟映像中提取資料。 7-Zip 是一款免費的檔案壓縮工具,可開啟並解壓縮各種壓縮檔格式及磁碟映像檔的內容。它可在 Windows 和 Linux 系統上使用。
7-Zip 可以開啟 .vmdk 以及 -flat.vmdk 格式的檔案(若描述檔遺失,亦可開啟獨立的 -flat.vmdk 檔案),這通常適用於 ESXi 格式的磁碟。然而,7-Zip 不支援開啟在虛擬機器快照後所建立的增量(差異)VMDK 檔案。
如何在 Linux 上使用 7-Zip 開啟 VMDK 檔案
- 在您的 Linux 機器上安裝 7-Zip 完整套件。本範例使用 Ubuntu。
apt-get install p7zip-full - 使用 7-Zip 列出 VMDK 檔案的內容
7z l vm_name.vmdk - 找出名稱中包含”boot.”的檔案。
7z l /media/user1/vms/WinXP-test/WinXP-test.vmdk | grep boot[.]user1 是此 Linux 使用者的名稱,l 代表列出。

- 現在讓我們從 VMDK 映像檔中解壓縮 (e)
boot.ini檔案:7z e /media/user1/vms/WinXP-test/WinXP-test.vmdk boot.ini
您也可以以類似方式從 VMDK 檔案中解壓縮其他檔案和目錄。
如何在 Windows 上使用 7-Zip 開啟 VMDK 檔案
- 從 官方網站 下載相容的 7-Zip 版本,並將應用程式安裝在您的 Windows 電腦上。為求更方便,建議使用 EXE 安裝程式。

- 在下方的螢幕截圖中,獨立檔案
Win-test2-flat.vmdk的內容顯示於 7-Zip 的圖形化介面中。您可以解壓縮所需的 VMDK 內容。
您也可以觀看這段影片,學習如何在 VMware 中開啟 VMDK 檔案並解壓縮 VMDK 資料:
如何在 Linux 中掛載 VMDK 檔案(其他方法)
Linux 提供了強大的命令列工具,讓您能直接從控制台執行進階的磁碟操作。 這些內建工具可用於掛載 VMDK 檔案,並存取儲存於虛擬磁碟上的資料。以下範例以 Ubuntu Linux 為例。
方法 1:如何使用 /dev/loop
掛載 VMDK 檔案。迴圈裝置是 Linux 中的偽裝置,可讓檔案以區塊裝置的形式被存取。它們通常用於掛載包含檔案系統的磁碟映像檔。 迴圈裝置的名稱為 /dev/loopX,其中 X 代表裝置編號。此方法適用於掛載 -flat.vmdk 檔案,即使描述檔遺失亦然。
以下範例示範如何在 Linux 中掛載 VMDK 檔案以存取其內容。此處使用的是具有單一分割區的 ESXi 格式虛擬磁碟,且描述檔不可用。 該磁碟原本安裝了 Windows XP。
- 請使用以下兩條指令之一,檢查您的 Linux 系統上現有的迴圈裝置數量。
fdisk -l | grep /dev/loop df -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、Windows Server 2003 及更早版本中格式化的磁碟所計算的偏移量(計算方式為 63 × 512)。在此情況下,63 為分割區的起始磁區,而 512 位元組則是磁區大小。對於 Windows 7、Windows Server 2008 及更新版本,請使用偏移量 105906176。
您可以透過以下指令檢視磁區大小及用於開機的起始磁區資訊:
fdisk -l /dev/loop30 /vms/Win-test2-flat.vmdk
此外,對於包含多個分割區的虛擬磁碟,您也可以使用 parted 來確定每個分割區的起始與結束位置:
parted /dev/loop30在 parted 控制台中,輸入以下指令:
unit B print
- 建立用作 VMDK 映像檔掛載點的目錄:
mkdir /mnt/vmdk-image - 掛載與 VMDK 映像檔相關聯的迴路裝置:
mount /dev/loop31 /mnt/vmdk-image - 列出已掛載映像檔的內容:
ls -al /mnt/vmdk-image - 完成後,請卸載 VMDK 映像檔並斷開迴路裝置:
umount /mnt/vmdk-image losetup -d /dev/loop31
方法 2:如何使用 kpartx 掛載 VMDK 檔案
kpartx 是一款可將映像檔中的分割區掛載至真實 Linux 檔案系統目錄的工具。此工具可用於為區塊裝置的分割區設定裝置映射。此方法亦支援掛載 –flat.vmdk ESXi 伺服器上使用的映像檔。
- 安裝 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 虛擬磁碟映像檔。
umount /mnt/vmdk-image kpartx -d /vms/Win-test2-flat.vmdk
方法 3: 使用 QEMU 網路區塊裝置 (NBD)
此方法利用 QEMU 工具將 VMDK 呈現為標準區塊裝置 /dev/nbdN,Linux 核心即可直接掛載該裝置。 您無需安裝 VMware 工作站即可使用此方法。此操作需要 root 權限。
- 請先關閉虛擬機器,以避免虛擬磁碟損毀。
- 安裝 QEMU 公用程式套件,其中包含 qemu-nbd。
sudo apt install qemu-utils - 載入網路區塊裝置核心模組:
sudo modprobe nbd - 將 VMDK 檔案映射至網路區塊裝置,例如:
/dev/nbd0。若要設定為唯讀,請使用 -r 參數。sudo qemu-nbd -r -c /dev/nbd0 /path/to/your/disk.vmdk在此範例中,指令如下:
sudo qemu-nbd -r -c /dev/nbd0 /media/user1/data/vms/WinXP-test/WinXP-test.vmdk - 識別已掛載虛擬磁碟上的分割區:
sudo fdisk -l /dev/nbd0在輸出結果中,您應會看到類似
/dev/nbd0p1、/dev/nbd0p2等的分割區。 - 建立掛載點:
sudo mkdir -p /mnt/vmdk如有需要,請為特定使用者設定權限。
- 掛載分割區。在此範例中,分割區 1 存放資料:
sudo mount /dev/nbd0p1 /mnt/vmdk
- 現在您可以在
/mnt/vmdk/ 存取 VMDK 的內容。 - 完成後,請卸載卷並斷開 NBD 裝置:
sudo umount /mnt/vmdk sudo qemu-nbd -d /dev/nbd0
方法 4:使用 guestmount 掛載 VMDK 檔案
guestmount 是一款在 Linux 上存取 VMDK 內容的可靠工具,因為它能智慧地處理磁碟結構,包括分割區和邏輯卷。它無需像舊版工具(例如 /dev/loop)那樣手動計算偏移量。您必須具備 root 權限才能使用此方法。
- 安裝 libguestfs-tools。此套件包含 guestmount 公用程式。
sudo apt install libguestfs-tools - 關閉您要掛載其虛擬磁碟的虛擬機器。
- 在您的 Linux 主機上建立一個目錄,用以存取磁碟內容:
mkdir /mnt/vmdk注意: 若您希望以一般使用者(而非 root使用者)身分存取 VMDK 檔案的內容,可以進行額外的設定。
- 編輯 FUSE 設定檔。請以 root 權限使用文字編輯器開啟
/etc/fuse.conf檔案:sudo nano /etc/fuse.conf - 取消註解
#user_allow_other這行,使其在設定檔中生效。只需刪除該行開頭的 # 字元即可。 - 儲存變更並關閉檔案(退出文字編輯器)。
- 若需,可將您的一般使用者加入 fuse 群組:
sudo usermod -aG fuse $USER
- 編輯 FUSE 設定檔。請以 root 權限使用文字編輯器開啟
- 檢查 VMDK 檔案。 在掛載之前,先查看 VMDK 內的分割區會很有幫助。請使用 virt-filesystems 工具:
virt-filesystems -a /path/to/your/disk.vmdk在此情況下:
virt-filesystems -a /media/user1/data/vms/WinXP-test/WinXP-test.vmdk在輸出結果中,您應該會看到分割區(
/dev/sda1、/dev/sda2等)及其檔案系統。 - 使用 guestmount 掛載 VMDK。使用 guestmount 有兩種主要方式:自動檢查或手動分割區掛載。讓我們使用手動分割區掛載 (針對特定分割區)
若您僅需單一分割區,可直接指定:
sudo guestmount -a /path/to/your/disk.vmdk -m /dev/sdaN --ro /mount_point/在本範例中,確切的指令為:
sudo guestmount -a /media/user1/data/vms/WinXP-test/WinXP-test.vmdk -m /dev/sda1 --ro /mnt/vmdk/若您希望以一般使用者身分存取已掛載 VMDK 檔案的內容,並透過 Linux 圖形使用者介面存取檔案,請使用以下指令:
sudo guestmount -a /media/user1/data/vms/WinXP-test/WinXP-test.vmdk -m /dev/sda1 --ro -o allow_other /mnt/vmdk/ - 現在您可以在 Linux 控制台中,如同瀏覽本機目錄一般檢視、瀏覽及複製 VMDK 中的檔案:
ls -al /mnt/vmdk - 完成後請卸載虛擬磁碟:
sudo guestunmount /mnt/vmdk/
您亦可使用替代的 FUSE 方法:
sudo fusermount -u /mnt/vmdk/
結論
當虛擬機器發生故障或無法存取時,了解如何開啟 VMDK 檔案並從中提取資料至關重要。掌握多種存取 VMDK 內容的方法能提供更大的靈活性,因為每種方法可能更適合特定的情況。同時,為虛擬機器維護可靠的備份同樣重要,這能確保資料的可用性並簡化還原流程。