如何將 VHD 轉換為 VMDK:逐步指南
VMware vSphere 和 Microsoft Hyper-V 是兩大最受歡迎的虛擬化平台。這兩種解決方案各自採用不同的虛擬機器虛擬磁碟檔格式。這意味著當您在 VMware 和 Hyper-V 之間移動虛擬機器時,必須轉換虛擬磁碟檔。例如,您可能需要為了測試目的而在不同超管理程式之間遷移虛擬機器。在其他情況下,如果您在建立虛擬機器時選錯了格式,也可能需要進行格式轉換。
Hyper-V 採用 VHD 和 VHDX 作為虛擬機器的儲存格式,而 VMware 則使用 VMDK。閱讀這篇文章,了解如何透過將 VHD 檔案轉換為 VMDK,將虛擬機器從 Hyper-V 遷移至 VMware 環境。
虛擬磁碟格式
VHD 指的是作為 Connectix Virtual PC 虛擬機器虛擬磁碟格式而推出的磁碟映像格式。後來,微軟收購了 Virtual PC,並繼續開發此虛擬化產品。隨後,微軟推出 Hyper-V 作為 Microsoft Virtual PC 的替代方案。VHD 的主要特點包括:
- VHD 檔案的最大支援大小為 2 TB(2^32 × 512 位元組),其中 32 位元代表位元組數,512 位元組則代表磁區大小。
- VirtualBox 亦支援 VHD 格式的虛擬磁碟,且此格式在 Microsoft Azure 雲端服務中仍持續使用。
- 第一代 Hyper-V 虛擬機器僅能使用 VHD 格式的虛擬磁碟。
VHDX 是微軟提供的虛擬磁碟格式新版本,也是 VHD 格式的繼任者。VHDX 格式應用範圍廣泛,包括 Hyper-V 虛擬機器的虛擬磁碟以及微軟叢集共用磁碟區。VHDX 是一種半開放式檔案格式,您可以從微軟網站下載此檔案格式的規格說明,並據此開發能處理 VHDX 檔案的應用程式。VHDX 的主要特點包括:
- 與 VHD 的 2 TB 限制相比,最大磁碟容量為 64 TB。
- 支援 4 KB 磁區
- 與 VHD 磁碟相比,更能有效防止因電源中斷而導致的故障
第 2 代虛擬機器 支援同時使用 VHDX 和 VHD 虛擬磁碟。然而,Azure 虛擬機器僅能使用 VHD 格式的虛擬磁碟。可在 Windows 10 和 Windows Server 2016 的”磁碟管理”視窗中建立 VHDX 虛擬磁碟。此外,由於內建的 VHDX 驅動程式,在最新版本的 Windows 中,VHDX 映像檔亦可掛載(附加)為磁碟機,並顯示於 Windows 檔案總管(我的電腦)中。
VMDK 是一種開放式的虛擬磁碟映像格式,被 VMware 虛擬化平台、VirtualBox、QEMU 等軟體採用,但 Hyper-V 並未支援此格式。VMDK 映像檔可視為用於儲存資料的容器,其運作方式類似實體硬碟,且與各式虛擬化軟體具有高度相容性。 VMDK 虛擬磁碟的最大容量已從 2 TB 增加至 62 TB。VMDK 虛擬磁碟可分為以下類型與變體:整體式、分割式、稀疏式、平面式,以及薄配置與厚配置。Delta VMDK 磁碟是在執行 虛擬機器快照. 若已安裝 VMware Workstation 工作站,即可將 VMDK 檔案映射(掛載)至主機上的指定掛載點。此功能提供高度的可靠性。VMDK 虛擬磁碟支援 4 KB 原生磁區,此功能適用於採用 VMF S6 的最新版 VMware 產品。
在將 VHD 轉換為 VMDK 之前,請先檢查 VHD 的內容
此為可選步驟,可讓您確認來源 VHD 或 VHDX 虛擬磁碟是否正常運作,並檢視其中的檔案。此方法可避免您因轉換錯誤的虛擬磁碟而造成混淆或浪費時間。若您僅需從 VHD 映像檔中提取檔案,本節內容正是您所需。VHD 檔案可在 Linux 系統中掛載至目錄,亦可在 Windows 系統中映射至指定的磁碟機代號。
如何在 Linux 中開啟 VHDX 檔案
在 Linux 的 VHD 和 VHDX 檔案中,可透過以下方式在終端機中將檔案掛載至指定的目錄(掛載點): libguestfs tools. 因此,在開始將 VHD 轉換為 VMDK 之前,您可以在 Linux 中預覽 VHD 和 VHDX 檔案的內容。讓我們來了解如何在 Linux 中檢視 VHD 和 VHDX 虛擬磁碟映像的內容。
安裝所需的套件:
sudo apt-get install libguestfs-tools
建立您要掛載 VHD 或 VHDX 映像檔的目錄,例如: /mnt/vhd/:
sudo mkdir /mnt/vhd/
執行此指令,將 VHD 磁碟映像掛載至指定目錄。我們目前位於所需 VHD 檔案的位置中,並以 root 身分執行此指令:
guestmount --add test-disk.vhd --ro /mnt/vhd/ -m /dev/sda1
地點:
-add – 開啟一個虛擬磁碟。
--ro – 虛擬磁碟以唯讀模式掛載。
/mnt/vhd/ 是您要掛載的 VHD 檔案的路徑。
-m /dev/sda1/ 是 VHD 虛擬磁碟上現有分割區的名稱。本範例中使用的 VHD 虛擬磁碟上有一顆 NTFS 分割區。
您可以執行以下指令來查看所有可用指令 guestmount --help
註: 若要在其他目錄中執行此指令,請指定 VHD 檔案的完整路徑,例如:
guestmount --add /media/user1/data/test-disk.vhd --ro /mnt/vhd/ -m /dev/sda1
檢查已掛載的 VHD 映像檔內容:
ls -al /mnt/vhd/
若要卸載虛擬磁碟,請使用以下指令:
guestunmount /mnt/vhd/
同樣地,您可以將 VHDX 檔案掛載至 /mnt/vhd/ 先前建立的目錄,並從已掛載的虛擬磁碟複製內容:
guestmount --add /media/user1/data/WinServer2016.vhdx --ro /mnt/vhd -m /dev/sda2
地點: /dev/sda2 之所以使用它,是因為 /dev/sda1/ 這是 Windows 安裝程式預設建立的服務分割區。
您可以在 Linux 控制台中查看 VHDX 虛擬磁碟的 Windows 系統分割區(C 槽)內容(請參閱下圖)。
如何在 Windows 中開啟 VHD 檔案
開啟 電腦管理 視窗(右鍵點擊 我的電腦 並選擇 管理 (在右鍵選單中)。
在 電腦管理 視窗,選取 Disk Management,然後點擊 Action > Attach VHD.
在彈出視窗中,指定您的 VHD 或 VHDX 檔案的路徑。勾選 唯讀 若不希望將資料寫入虛擬磁碟,請勾選此核取方塊。此選項亦可防止儲存於虛擬磁碟中的資料因意外而損毀。
磁碟現已掛載,並顯示在 磁碟管理 視窗中以及在 Windows 檔案總管中(該磁碟機 X: (在此情況下)。
註: Windows 僅能識別採用受支援檔案系統的分區:NTFS、FAT32、exFAT 及 ReFS。若您的虛擬磁碟包含採用 ext3、ext4 及其他檔案系統的 Linux 分區,則在未使用第三方工具的情況下,您將無法檢視掛載至 Windows 系統的 VHD 或 VHDX 檔案內容。
若要從 Windows 系統卸載 VHD 或 VHDX 虛擬磁碟,請開啟 Windows 檔案總管,在虛擬磁碟所對應的磁碟機代號上按右鍵,然後在快顯選單中點選 Eject.
現在,當您已檢查過 VHD(VHDX)虛擬磁碟的內容,並確認這就是您需要的磁碟後,即可開始將 VHD 轉換為 VMDK。有兩種非常經濟實惠的方法可以將 VHD 轉換為 VMDK——使用 qemu-img 並使用 VBoxManage. 以下介紹的兩種解決方案均可免費使用,詳情如下。
如何使用 qemu-img 將 VHD 轉換為 VMDK
QEMU 是一個開源的機器模擬與虛擬化平台。 Qemu-img 這是 QEMU 軟體套件中的一項工具,可用於將虛擬磁碟從一種格式轉換為另一種格式。 Qemu-img 可用於將 VHD 轉換為 VMDK,而使用此工具正是我們將在本文中討論的第一種將 Hyper-V 虛擬磁碟轉換為 VMware 虛擬磁碟的方法。 Qemu-img 可在 Windows 和 Linux 作業系統上執行。
在 Linux 中使用 qemu-img
本範例使用 Ubuntu Linux 來執行 qemu-img.
首先,安裝 qemu-img 來自線上軟體儲存庫:
sudo apt-get install qemu-utils
前往儲存虛擬磁碟映像檔的目錄(在此範例中,VHD 和 VHDX 虛擬磁碟檔儲存於 /media/user1/data/):
cd /media/user1/data/
Check the VHDX file
取得 root 權限(使用 sudo su (指令)並檢視 VHD 映像檔資訊:
qemu-img info test-disk.vhd
同樣地,您可以查看 VHDX 虛擬磁碟的相關資訊:
qemu-img info /media/user1/data/WinServer2016.vhdx
在 Linux 中將 VHD 轉換為 VMDK
若要以 qemu-img 在 Linux 中,請以 root 身分執行以下指令:
qemu-img convert /media/user1/data/WinServer2016.vhdx -O vmdk /media/user1/data/WinServer2016qemu.vmdk -p
地點:
-O – 定義輸出檔案格式
-p – 顯示進度條
請等待轉換程序完成。
在 Windows 中使用 qemu-img
下載 qemu-img 來自官方網站(提供 32 位元和 64 位元安裝程式供下載)。在目前的範例中, qemu-img-win-x64-2_3_0 已使用。請從下載的壓縮檔中解壓縮檔案,例如,至 C:Programsqemu-img. 接著開啟 Windows 命令提示字元 (CMD) — 按下 Windows+R 要開啟”Run” 方框中。輸入 “cmd將 ” 輸入至方框中,然後按下 Ctrl+Shift+Enter 來 run 該 command 作為一個 administrator.
前往 qemu-img 目錄:
cd C:Programsqemu-img
指令 qemu-img 在 Linux 和 Windows 中的操作方式完全相同。
在 Windows 中將 VHD 轉換為 VMDK
以系統管理員身分執行 CMD,並前往該目錄 qemu-img 已安裝。
檢視虛擬磁碟資訊:
qemu-img.exe info c:VirtualHyper-Vtest-disk.vhd
將 VHD 磁碟映像檔轉換為 VMDK 格式:
qemu-img.exe convert -p c:VirtualHyper-Vtest-disk.vhd -O vmdk c:VirtualHyper-Vtest-disk.vmdk
地點:
-p – 顯示進度
-O – 輸出檔案
請等待轉換程序完成。
如何使用 VBoxManage 將 VHD 轉換為 VMDK
VBoxManage 是用於管理 VirtualBox 虛擬化平台及虛擬機器的命令列介面 (CLI)。 VBoxManage 這是一款多平台工具,當您安裝時 安裝 VirtualBox (如您所知,VirtualBox 是一款跨平台的虛擬化解決方案)。其中之一 VBoxManage其最吸引人的特點之一,就是能夠轉換多種虛擬磁碟格式。您可以使用 VBoxManage.
若您使用 Windows 作為主機作業系統,請以系統管理員身分執行 CMD,並前往 VirtualBox 的安裝目錄執行 VBoxManage. 在本範例中,VirtualBox 安裝於預設目錄中。
cd C:Program FilesOracleVirtualBox
您可以將 VirtualBox 的安裝路徑新增至 Path 環境變數,以避免每次執行時都必須手動前往 VirtualBox 的安裝目錄 VBoxManage.
請執行以下指令,將 Hyper-V VHD 轉換為 VMware VMDK:
VBoxManage clonehd --format vmdk C:virtualHyper-VWinServer2016.vhdx С:virtualHyper-VWinServer2016vbox.vmdk
語法很簡單——您只需設定目標虛擬磁碟格式(vmdk),並定義來源 vhdx 檔案與目的地 vmdk 檔案名稱。
請等待轉換程序完成。
如果您在安裝了 VirtualBox 的電腦上使用 Linux,請使用相同的指令(但請注意 Linux 分區與目錄的結構)。
使用轉換後的虛擬磁碟建立 VMware 虛擬機器
將 VHD 轉換為 VMDK 可讓您將 Hyper-V 虛擬機器轉換為 VMware 虛擬機器。您需要將轉換後的虛擬磁碟匯入手動建立的 VMware 虛擬機器中,才能完成整個虛擬機器的轉換。此方法適用於在 VMware Workstation 和 VMware ESXi 上運行的虛擬機器。本節將詳細說明如何將 Hyper-V 轉換為 VMware。
VMware 工作站
若要在 VMware 工作站中使用已從 VHD (VHDX) 格式轉換為 VMDK 格式的虛擬磁碟來建立虛擬機器,只需建立一個新的虛擬機器(或開啟現有的虛擬機器,若您想將轉換後的虛擬磁碟新增為額外的虛擬磁碟),並選擇要使用現有的虛擬磁碟。
例如,讓我們在 VMware 工作站中建立一個新的虛擬機器。點擊 File > New virtual machine.
請參閱相關部落格文章,了解如何建立新的 VMware 工作站虛擬機器 VMware 家庭實驗室. 在今天這篇部落格文章的這一節中,重點在於將轉換後的 VHD 虛擬磁碟匯入 VMware 工作站虛擬機器所需的步驟。因此,您應特別注意以下步驟:
選擇”“我稍後會安裝作業系統,” 並選擇已轉換其虛擬磁碟的來源 Hyper-V 虛擬機器上所安裝的客體作業系統 (OS) 版本(Windows Server 2016 (在此使用情境下)。如果您使用的是較舊版本的 VMware 工作站,請選擇 Windows 10 作為客體作業系統的版本。
虛擬機器名稱是 Win2016 轉換版 在我們的範例中,新虛擬機器的檔案儲存於 C:VirtualWin2016converted.
選擇”使用現有的虛擬磁碟” 於 選擇磁碟 步驟。
請指定現有 VMDK 檔案的路徑,或瀏覽選取檔案。在此情況下,VMDK 檔案的路徑為:
C:VirtualHyper-VWinServer2016qemu2.vmdk
如果出現對話方塊,並建議您將現有的虛擬磁碟轉換為較新的格式,這完全取決於您的決定。如果您不打算將此虛擬磁碟用於較舊版本的虛擬機器(這些虛擬機器配備較舊的虛擬硬體),則應將虛擬磁碟轉換為較新的格式。
選擇 BIOS 如果您的來源 Hyper-V 虛擬機器已設定為使用 BIOS,請在虛擬機器選項中將韌體類型設為 BIOS。否則,您將從 Hyper-V 格式轉換為 VMware 格式並掛載至 VMware 虛擬機器的虛擬磁碟將無法開機。建立虛擬機器後,您可以透過前往 VM > Settings,選擇 Options 分頁 > Advanced.
現在您的虛擬機器應該可以正常啟動。待客體作業系統啟動後,請安裝 VMware Tools.
VMware ESXi
您也可以將 VHD 轉換為 VMDK,並將轉換後的虛擬磁碟匯入至運行於 ESXi 主機上的 VMware 虛擬機器。然而,VMware Workstation 與 VMware ESXi 所採用的虛擬磁碟格式則有所不同。VMware Workstation 格式的虛擬磁碟具有內建於單一 VMDK 檔案. 一個 ESXi 格式的虛擬磁碟由兩個獨立的檔案組成——一個資料檔案(.vmdk) 以及一個磁碟描述檔 (-flat.vmdk)。若要使用您已從 Hyper-V 格式轉換而來的虛擬磁碟,請使用 qemu-img 或者,若要使用 VBoxManage 管理在 ESXi 上運行的虛擬機器,您必須將該虛擬磁碟從工作站格式轉換為 ESXi 格式。否則將會出現錯誤訊息:”不支援或無效的磁碟類型 2”.
讓我們來了解如何在 ESXi 上運行的虛擬機器中,使用從 VHD 格式轉換而來的虛擬磁碟。
Converting VMDK to the ESXi format
將轉換後的 VMDK 檔案上傳至連接至 ESXi 主機的資料存放區。您可以使用 SCP 客戶端、VMware Host Client 的網頁介面或 VMware vSphere Client 來上傳轉換後的虛擬磁碟 vmdk 將檔案上傳至 ESXi 資料存放區。
在本範例中,該 WinServer2016qemu.vmdk 檔案已上傳至 SSD1 連接至 IP 位址為 10.10.10.74 的 ESXi 主機的資料存放區。
請確認您的 ESXi 主機已啟用 SSH 存取功能(管理 > > > 服務 > > > TSM-SSH)。
請使用 SSH 客戶端(例如 PuTTY)以 root 身分透過 SSH 連線至您的 ESXi 主機。
前往儲存由 Hyper-V VHD 格式轉換而來的 VMDK 虛擬磁碟檔案的目錄(在此範例中,vmdk 檔案儲存於 /vmfs/volumes/SSD1/converted/):
cd /vmfs/volumes/SSD1/converted/
使用 vmkfstools 將工作站格式的虛擬磁碟轉換為 ESXi 格式的虛擬磁碟。在本範例中,一個 精簡配置 ESXi 格式的虛擬磁碟是目標虛擬磁碟類型。
vmkfstools -i WinServer2016qemu.vmdk WinServer2016thin.vmdk -d thin
如螢幕截圖所示,將 VMDK 從工作站格式轉換為 ESXi 格式時, vmkfstools 已成功完成,並已建立兩個新檔案:
WinServer2016thin-flat.vmdk
WinServer2016thin.vmdk
Importing a VMDK disk to a VM on ESXi
開啟 VMware Host Client(若已部署 vCenter,使用 VMware vSphere Client 是最理想的選擇,但在幾乎所有使用情境下,包括以下情境,您仍可使用 VMware Host Client: ESXi 免費版本 (如果您決定將 Hyper-V 轉換為 VMware 虛擬機器)。在 VMware Host Client 的網頁介面中,請選取 Virtual Machines 並點擊 Create/Register VM.
新的虛擬機器精靈已開啟。
1. Select creation type. 點擊 建立 一個新的虛擬機器。點擊 下一頁 在每個步驟中繼續。
2. Select a name and guest OS. 請選擇虛擬機器版本、客體作業系統家族及客體作業系統版本。在此範例中,虛擬機器的名稱是 Win2016 轉換版. 此虛擬機器相容於 ESXi 6.5 或更新版本,客體作業系統家族為 Windows,客體作業系統版本為 Microsoft Windows 2016(64 位元)。
3. Select storage. 請選擇用於儲存虛擬機器檔案的資料存放區。本範例中使用的資料存放區名稱為 SSD2。
4. Customize settings. 在我們的情況下,這一步是最重要的。請刪除隨新虛擬機器預設建立的虛擬磁碟。接著,點擊 Add hard disk > Existing hard disk.
在資料存放區瀏覽器中,選取您已將其從 VHD 轉換為 VMDK,並將 VMDK 從 VMware 工作站格式轉換為 VMware ESXi 格式(精簡配置)的虛擬磁碟。您可能還記得,您轉換後的虛擬磁碟由兩個檔案組成(.vmdk 以及 -flat.vmdk) 但在資料存放區瀏覽器中,只有一個 vmdk 檔案會顯示出來。請放心——這是 VMware Host Client 的特點。兩個已複製到 ESXi 資料存放區的檔案均已存在。您可以在 ESXi 主控台中查看,或透過 SSH 連線進行確認。在這個範例中,您可以看到虛擬磁碟的當前大小為 9.11 GB,但此磁碟的最大配置大小為 30 GB。
新增轉換後的 VMDK 虛擬磁碟後,您會看到”非活躍”欄位中顯示 30 GB 虛擬磁碟的 9 GB 大小(即當前大小)。請無需在意下方螢幕截圖中虛擬磁碟類型顯示不正確的情況;實際上,該虛擬磁碟已如預期般以精簡磁碟的形式匯入。
5. Ready to complete. 在此步驟中,您可以檢查您的設定。如果一切正確,請點擊 完成 建立一台新的虛擬機器。
現在,您可以啟動虛擬機器(右鍵點擊虛擬機器名稱,然後在快顯功能表中選取 電源 > 開啟電源).
已轉換虛擬磁碟的虛擬機器已正常啟動,且網路運作正常。現在您可以開始在客體作業系統上安裝 VMware Tools。
結論
如果您希望在虛擬機器層級將 Hyper-V 轉換為 VMware,您可以將 VHD 轉換為 VMDK,然後將轉換後的 VMDK 虛擬磁碟掛載至新的 VMware 虛擬機器。 Qemu-img 可用作 VHD 轉 VMDK 轉換器,並 VBoxManage 可作為替代方案。這兩種解決方案均為免費且跨平台,讓您能在不同作業系統上將 Hyper-V VHD 轉換為 VMware VMDK。請注意,若您想使用透過 qemu-img 或 VBoxManage 對於 ESXi 虛擬機器,您應使用以下指令將 VMDK 虛擬磁碟從工作站格式轉換為 ESXi 格式: vmkfstools 在 ESXi 命令列中。
若您想使用半自動化或全自動工具將整個 Hyper-V 虛擬機器轉換為 VMware 虛擬機器,您可以使用免費的 VMware vCenter Converter 獨立版.
無論您使用哪種虛擬化平台,資料保護都至關重要。 NAKIVO Backup & Replication 提供跨平台還原特點,讓您能夠將虛擬機器備份中的 VHD 磁碟轉換為 VMDK 磁碟,並將 Hyper-V 虛擬機器還原至 VMware 虛擬化平台。





























