如何開啟、掛載 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 主機 無法開機,但您需要取回儲存於其 VMDK 檔案中的檔案。該虛擬磁碟包含兩個 NTFS 分割區:一個系統(開機)分割區,以及主 C: 磁碟機。在此範例中,將官方 Ubuntu 18 安裝 ISO 作為 Live DVD 使用,藉此存取虛擬磁碟並複製所需資料。
註: 此方法同樣適用於較新版本的產品,包括 VMware Workstation 17、ESXi 9.0、Windows Server 2025 以及 Ubuntu Linux 24.04。雖然具體的介面元素可能略有不同,但底層的工作流程仍保持不變。
- 將 ISO 映像檔上傳至可由執行該虛擬機的 ESXi 主機存取的資料存放區。
- 開啟 VMware vSphere Client,前往”主機與叢集”,選取您的虛擬機器,然後按一下”編輯設定”。

- 在虛擬機器設定視窗中,前往”CD/DVD 光碟機”選項。若您在資料存放區中已有所需的 ISO 檔案,請選取”資料存放區 ISO 檔案”。接著,按一下”瀏覽”並選取適當的 ISO 檔案。檔案名稱是
ubuntu-18.04.1-desktop-amd64.iso在此情況下。
- 啟動虛擬機器,從 ISO 映像檔開機,並選擇”不安裝 Ubuntu 試用版”。待 Ubuntu 從 Live DVD 媒體開機完成後,開啟控制台(終端機)。
- 取得 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 共用資料夾所掛載的目錄,並將虛擬磁碟已掛載的分區(位於 ESXi 資料存放區中的 VMDK 檔案)中的 bootmgr 檔案複製到當前目錄(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 工作站或 Player 中開啟來自 ESXi 虛擬機器的 VMDK 檔案,請將描述檔和區段檔(vmdk 和 -flat.vmdk) 至安裝了工作站或 Player 的主機可存取的本地磁碟。如果來源虛擬機器有 快照, 請務必除了複製父磁碟檔案之外,也一併複製相關的增量(差異)VMDK 檔案。
以下範例說明了這種做法:
- 範例 1:將某台虛擬機器的 VMDK 檔案掛載至同一台 ESXi 主機上的另一台虛擬機器,以開啟該檔案。
- 範例 2:將 ESXi 虛擬機器的 VMDK 檔案掛載至在 VMware 工作站中運行的虛擬機器,並從中擷取資料。
請確保正常運作的虛擬機器 (VM) 的作業系統支援所連接的 VMDK 檔案所使用的檔案系統。否則,可能無法存取這些分割區。
範例 1:將虛擬磁碟掛載至在 ESXi 上執行的虛擬機器
- 請關閉您要存取其虛擬磁碟以擷取檔案的虛擬機器。
- 在 ESXi 資料存放區中找到該虛擬磁碟的位置。
- 將虛擬磁碟複製到同一資料存放區上的另一個目錄,或複製到不同的資料存放區,以避免與磁碟鎖定相關的問題。在此範例中,我們開啟一個名為
Win-test2.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 工作站或 Player 上執行的虛擬機器
此範例與前一個類似,但使用在 VMware 工作站中運行的虛擬機器來開啟 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 的電腦,且該電腦上需有一台搭載可正常運作作業系統的健康虛擬機器。在前一個範例中,使用的是執行 Windows Server 2016 的虛擬機器;在此範例中,則使用的是執行 Windows Server 2008 的虛擬機器。對於較新版本的 Windows,其操作流程亦相同。
開啟 VMware Workstation 或 VMware Player,選取您的正常運作虛擬機器,並編輯虛擬機器設定。

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

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

- 選取 vmdk 檔案(而非 –
flat.vmdk) 您已從 ZIP 壓縮檔中解壓縮的檔案。您可以瀏覽該檔案,或手動輸入檔案路徑。
在此範例中,使用的是 ESXi 6.5 和 VMware Workstation 15。運行 Windows Server 2008 的 VMware Workstation 虛擬機器採用硬體版本 12(虛擬機器版本 12),而其虛擬磁碟正被掛載的 ESXi 虛擬機器則採用虛擬機器版本 7。對於較新版本,工作流程亦相同。
- 在 VMware 工作站中嘗試掛載虛擬磁碟時,會出現以下相容性錯誤訊息:
所選的虛擬磁碟與此 Workstation 12.x 虛擬機器不相容。若新增此磁碟,將導致此虛擬機器與較舊版的 VMware 產品不相容。

您可以透過編輯磁碟描述檔檔案(若為 ESXi 虛擬機器之虛擬磁碟,則為輕量級 VMDK 檔案)來修正此錯誤。請在文字編輯器中開啟您的 VMDK 檔案,並將
Ddb.virtualHWVersion字串。在我們的例子中,13 被改為 12。註: 請注意,對於 VMware 工作站的虛擬機器,虛擬磁碟描述檔是嵌入在 VMDK 檔案中的(這與 ESXi 虛擬磁碟不同,後者使用獨立的描述檔檔案)。

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

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

- 按一下”掛載磁碟”。在彈出視窗中,按一下”瀏覽”,然後選取 VMDK 檔案。

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

- 現在您可以開啟
/mnt/vmdk在 Linux 檔案總管中開啟 / 目錄,並瀏覽已掛載的 VMDK 檔案中所儲存的檔案。您將看到 Snapshot1.txt 和 Snapshot2.txt 這兩份檔案,它們分別是在本範例中的第一個和第二個快照建立後所產生的。每份檔案都儲存於各自獨立的增量 VMDK 磁碟中。
- 完成操作後,請勿忘記從 Linux 主機上的目錄(掛載點)卸載 VMDK 檔案。

在此範例中,使用 VMware 工作站 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 目錄名稱相同)。在此範例中,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 (在此範例中)。
註: 在 VMware Workstation 17.0 針對 Windows 作業系統的版本中,已移除將虛擬磁碟掛載為磁碟機的特點。支援此特點的最新 Windows 版 VMware Workstation 版本為 16.1.2。此特點在最新版本的 Linux 版 VMware Workstation(17.5 及後續版本)中仍然存在。
- 在 Windows 檔案總管中右鍵點擊 VMDK 檔案,然後點選”映射虛擬磁碟”。

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

- 現在,此虛擬磁碟已在 Windows 中掛載為 Z: 磁碟,您可以讀取其內容。在下方的螢幕截圖中,您可以看到在建立第一個快照後所產生的 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 代表”列出”。

- 讓我們提取 (e) 的
boot.ini來自 VMDK 映像檔的檔案: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:如何使用 來掛載 VMDK 檔案 /dev/loop
迴圈裝置是 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在開啟的控制台中,輸入以下指令:
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
- 您現在可以透過以下路徑存取您的 VMDK 內容:
/mnt/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 設定檔。開啟
/etc/fuse.conf使用具備 root 權限的文字編輯器編輯該檔案:sudo nano /etc/fuse.conf - 取消註解該
#user_allow_other在設定檔中,請刪除該行開頭的 # 字元,即可啟用該設定。 - 儲存變更並關閉檔案(退出文字編輯器)。
- 若需要,您可以將您的一般使用者加入 fuse 群組:
sudo usermod -aG fuse $USER
- 編輯 FUSE 設定檔。開啟
- 檢查 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 內容的方法能提供更大的彈性,因為每種方法可能更適合特定情況。與此同時,維持虛擬機器的可靠備份同樣重要,這不僅能確保資料的可用性,也能簡化還原流程。