如何將 VHD 轉換為 VMDK:逐步指南

VMware vSphere 和 Microsoft Hyper-V 是兩大最受歡迎的虛擬化平台。這兩種解決方案分別採用不同的虛擬磁碟檔案格式來儲存虛擬機器。這意味著,當您在 VMware 和 Hyper-V 之間移動虛擬機器時,需要轉換虛擬磁碟檔案。例如,您可能需要為了測試目的而在不同虛擬化平台之間遷移虛擬機器。在其他情況下,如果您在建立虛擬機器時選錯了檔案格式,也可能需要進行格式轉換。

Hyper-V 為虛擬機器使用 VHD 和 VHDX 格式,而 VMware 則使用 VMDK 格式。閱讀這篇文章,了解如何透過將 VHD 檔案轉換為 VMDK,將虛擬機器從 Hyper-V 遷移至 VMware 環境。

NAKIVO for VMware vSphere 備份

NAKIVO for VMware vSphere 備份

為 VMware vSphere 虛擬機器提供全面資料保護及快速還原選項。支援本地、異地及雲端的安全備份目標。具備防勒索軟體功能。

虛擬磁碟格式

VHD 是 Connectix Virtual PC 中作為虛擬機器虛擬磁碟格式所引入的磁碟映像格式。之後,Microsoft 收購了 Virtual PC,並持續開發這項虛擬化產品。接著,Microsoft 推出 Hyper-V,作為 Microsoft Virtual PC 的替代方案。VHD 的主要特點如下:

  • VHD 檔案支援的最大大小為 2 TB (2^32*512 位元組),其中 32 位元代表數量,512 位元組代表磁區大小。
  • VirtualBox 也支援 VHD 虛擬磁碟格式,Microsoft Azure 雲端目前仍在使用此格式。
  • 第 1 代 Hyper-V 虛擬機器只能使用 VHD 格式的虛擬磁碟。

VHDX 是 Microsoft 提供的新一代虛擬磁碟格式,也是 VHD 格式的後繼版本。VHDX 格式的應用範圍廣泛,包括 Hyper-V 虛擬機器和 Microsoft 叢集共用磁碟區所用的虛擬磁碟。VHDX 是一種半開放的檔案格式,您可以從 Microsoft 網站下載檔案格式規格,以建立可處理 VHDX 檔案的應用程式。VHDX 的主要特點如下:

  • 磁碟的最大容量為 64 TB,相較之下,VHD 的容量上限為 2 TB。
  • 支援 4 KB 磁區。
  • 與 VHD 磁碟相比,VHDX 磁碟更能防範因電力中斷而造成的故障。

第 2 代虛擬機器 支援使用 VHDX 和 VHD 虛擬磁碟。不過,Azure 虛擬機器只能使用 VHD 格式的虛擬磁碟。您可以在 Windows 10 和 Windows Server 2016 的”磁碟管理”視窗中建立 VHDX 虛擬磁碟。由於最新版 Windows 內建 VHDX 驅動程式,因此也可以將 VHDX 映像掛接(附加)為磁碟機,並在 Windows 檔案總管(我的電腦)中檢視。

VMDK 是 VMware Hypervisor、VirtualBox、QEMU 等使用的開放式虛擬磁碟映像格式,Hyper-V 不支援此格式。VMDK 映像檔可視為用來儲存資料的容器,類似實體硬碟,且與各種虛擬化軟體高度相容。VMDK 虛擬磁碟的最大大小已從 2 TB 提升至 62 TB。

VMDK 虛擬磁碟可分為下列類型和變體:單一檔案、分割檔案、精簡配置、平面配置,以及精簡配置和完整配置。建立 虛擬機器快照 時會建立差異 VMDK 磁碟。 如果已安裝 VMware Workstation,便可將 VMDK 檔案對應(掛載)至主機上的指定掛載點,並提供高度可靠性。VMDK 虛擬磁碟支援 4 KB 原生磁區,最新版本的 VMware 產品會使用這些磁區,並搭配 VMFS6(虛擬機器檔案系統 6)。

在將 VHD 轉換為 VMDK 之前,先檢查 VHD 內容

此為選擇性步驟,可讓您驗證來源 VHD 或 VHDX 虛擬磁碟的健康狀態,並檢視其中的檔案。這種做法可避免您混淆並浪費時間轉換錯誤的虛擬磁碟。如果您只想從 VHD 映像檔擷取檔案,本節正是您需要的內容。VHD 檔案可掛載至 Linux 目錄,也可在 Windows 中對應至指定的磁碟機代號。

如何在 Linux 中開啟 VHDX

在 Linux 中,您可以在主控台使用 libguestfs 工具 ,將 VHD 和 VHDX 檔案掛載至指定目錄(掛載點)。因此,您可以在開始將 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/

Check the virtual disk content

若要卸載虛擬磁碟,請使用命令:

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:)內容(請參閱下方的螢幕截圖)。

Checking the VHDX content

如何在 Windows 中開啟 VHD

  1. 開啟電腦管理視窗(在我的電腦上按一下滑鼠右鍵,並在快顯功能表中選取管理)。

    Opening Computer Management

  2. 在 電腦管理 視窗中,選取磁碟管理,然後依序按一下行動>附加 VHD。

    How to attach a VHD image in Windows

  3. 在快顯視窗中,指定 VHD 或 VHDX 檔案的路徑。如果您不想將資料寫入虛擬磁碟,請勾選唯讀核取方塊。此選項也能保護虛擬磁碟上儲存的資料,避免意外損毀。

    Attaching a VHD disk in Windows

  4. 現在,磁碟已掛接,並顯示在磁碟管理視窗和 Windows 檔案總管中(此處的磁碟機代號為X:)。

注意:Windows 只能辨識使用支援檔案系統的分割區:NTFS、FAT32、exFAT 和 ReFS。如果您的虛擬磁碟包含使用 ext3、ext4 和其他檔案系統的 Linux 分割區,若未使用第三方工具,您將無法檢視掛接到 Windows 系統上的 VHD 或 VHDX 檔案內容。

若要從 Windows 系統卸載 VHD 或 VHDX 虛擬磁碟,請開啟 Windows 檔案總管,在指派給虛擬磁碟的磁碟機代號上按一下滑鼠右鍵,然後在快顯功能表中按一下退出。

Eject the VHD disk in Windows when the disk is not in use

現在,在檢查 VHD(VHDX)虛擬磁碟的內容並確認磁碟正確無誤後,您可以繼續將其轉換為 VMDK。有兩種成本相當低廉的方法可將 VHD 轉換為 VMDK:使用qemu-img和使用VBoxManage。這兩種解決方案皆可免費使用,並將於下文說明。

如何使用 qemu-img 將 VHD 轉換為 VMDK

QEMU 是一個開放原始碼的機器模擬與虛擬化平台。Qemu-img是 QEMU 軟體套件中的一項公用程式,可用於將虛擬磁碟從一種格式轉換為另一種格式。Qemu-img可用來將 VHD 轉換為 VMDK,而使用此公用程式是我們將介紹的第一種方法。 Qemu-img 可在 Windows 和 Linux 作業系統中執行。

在 Linux 中使用 qemu-img

此範例使用 Ubuntu Linux 執行 qemu-img 。

  1. 首先,從線上軟體儲存庫安裝 qemu-img :

    sudo apt-get install qemu-utils

  2. 前往存放虛擬磁碟映像檔的目錄(此範例中的 VHD 和 VHDX 虛擬磁碟檔案存放於 /media/user1/data/):

    cd /media/user1/data/

檢查 VHDX 檔案

  1. 執行 sudo su 取得 root 權限後,檢視 VHD 映像資訊:
  2. qemu-img info test-disk.vhd

    Checking the VHD information

    同樣地,您可以檢查 VHDX 虛擬磁碟的資訊:

    qemu-img info /media/user1/data/WinServer2016.vhdx

    Check the VHDX information before converting it to VMDK with qemu-img

在 Linux 中將 VHD 轉換為 VMDK

  1. 若要在 Linux 中使用 qemu-img 將 VHD 轉換為 VMDK,請以 root 身分執行以下命令:

    qemu-img convert /media/user1/data/WinServer2016.vhdx -O vmdk /media/user1/data/WinServer2016qemu.vmdk -p

    其中:

    -O – 指定輸出檔案格式

    -p – 顯示進度列

    等待轉換程序完成。

在 Windows 中使用 qemu-img

  1. 從官方網站下載 qemu-img(可下載 32 位元和 64 位元安裝程式)。此範例使用 qemu-img-win-x64-2_3_0 。
  2. 將下載的封存檔中的檔案解壓縮,例如解壓縮至 C:Programsqemu-img 。
  3. 開啟 Windows 命令提示字元(CMD)– 按下 Windows+R 開啟” 執行 “對話方塊。在方塊中輸入” cmd “,然後按下 Ctrl+Shift+Enter,以系統管理員身分執行命令:

    cd C:Programsqemu-img

    Linux 和 Windows 中的 qemu-img 命令完全相同。

在 Windows 中將 VHD 轉換為 VMDK

以系統管理員身分執行 CMD,並前往安裝 qemu-img 的目錄。

  1. 檢視虛擬磁碟資訊:

    qemu-img.exe info c:VirtualHyper-Vtest-disk.vhd

  2. 將 VHD 磁碟映像轉換為 VMDK 格式:

    qemu-img.exe convert -p c:VirtualHyper-Vtest-disk.vhd -O vmdk c:VirtualHyper-Vtest-disk.vmdk

    其中:

    -p – 顯示進度

    -O – 輸出檔案

    等待轉換程序完成。

    Using qemu-img as VHD to VMDK converter

如何使用 VBoxManage 將 VHD 轉換為 VMDK

VBoxManage 是用於管理 VirtualBox 虛擬機器管理程式與虛擬機器的命令列介面(CLI)。. VBoxManage 是一款多平台工具,會在您 安裝 VirtualBox 時安裝(如您所知,VirtualBox 是多平台虛擬化解決方案)。 VBoxManage 最吸引人的特點之一,是能夠轉換多種虛擬磁碟格式。您可以使用 VBoxManage 將 VHD 轉換為 VMDK。

如果您使用 Windows 作為主機作業系統,請以系統管理員身分執行 CMD,並前往 VirtualBox 安裝目錄以執行 VBoxManage 。在目前的範例中,VirtualBox 安裝在預設目錄。

cd C:Program FilesOracleVirtualBox

您可以將 VirtualBox 的安裝路徑新增至 Path 環境變數,這樣每次要執行 VBoxManage 時,就不必手動瀏覽至 VirtualBox 安裝目錄。

執行以下命令,將 Hyper-V VHD 轉換為 VMware VMDK:

VBoxManage clonehd --format vmdk C:virtualHyper-VWinServer2016.vhdx С:virtualHyper-VWinServer2016vbox.vmdk

語法相當簡單:設定目的地虛擬磁碟格式(VMDK),並指定來源 VHDX 檔案與目的地 VMDK 檔案名稱。

等待轉換程序完成。

Using VBoxManage as a VHD to VMDK converter

如果您在安裝 VirtualBox 的電腦上使用 Linux,請使用相同的命令(但請注意 Linux 分割區和目錄的結構)。

使用轉換後的虛擬磁碟建立 VMware 虛擬機器

將 VHD 轉換為 VMDK,即可將 Hyper-V 虛擬機器轉換為 VMware 虛擬機器。若要完成此程序,您需要將轉換後的虛擬磁碟匯入手動建立的 VMware 虛擬機器。此方法可用於在 VMware 工作站和 VMware ESXi 上執行的虛擬機器。本節將說明 Hyper-V 轉換為 VMware 的其餘細節。

VMware 工作站

如果您想在 VMware 工作站中使用從 VHD(VHDX)格式轉換為 VMDK 格式的虛擬磁碟建立虛擬機器,只要建立新的虛擬機器(或開啟現有的虛擬機器,若要將轉換後的虛擬磁碟新增為額外的虛擬磁碟),並選擇使用現有的虛擬磁碟即可。

我們來在 VMware 工作站中建立新的虛擬機器。按一下 檔案 > 新增虛擬機器 。

請參閱關於 VMware 家庭實驗室 的部落格文章,瞭解建立 VMware 工作站新虛擬機器的詳細說明。 在今天這篇部落格文章的本節中,重點在於將轉換後的 VHD 虛擬磁碟匯入 VMware Workstation 虛擬機器所需的步驟。因此,請特別留意下列步驟:

  1. 選取”稍後安裝作業系統”,並選擇來源 Hyper-V 虛擬機器中已安裝的客體作業系統版本(您已轉換該虛擬機器的虛擬磁碟)(本例為 Windows Server 2016)。如果您使用的是較舊版本的 VMware Workstation,請選取 Windows 10 作為客體作業系統版本。

    Import VHD to VMware after conversion

    本例中的虛擬機器名稱為 Win2016converted。新虛擬機器的檔案儲存在 C:VirtualWin2016converted。

  2. 在 選取磁碟 步驟中,選取”使用現有的虛擬磁碟“。

    Select use an existing virtual disk

  3. 指定現有 VMDK 檔案的路徑,或瀏覽以尋找該檔案。本例中的 VMDK 檔案路徑為:

    C:VirtualHyper-VWinServer2016qemu2.vmdk

    Specify the path

  4. 如果出現對話方塊並建議將現有虛擬磁碟轉換為較新的格式,您可以自行決定。如果您不打算在較舊版本的虛擬機器(具有較舊虛擬硬體)中使用此虛擬磁碟,則應將虛擬磁碟轉換為較新的格式。
  5. 如果來源 Hyper-V 虛擬機器設定為使用 BIOS,請在虛擬機器選項中選取 BIOS 作為韌體類型。否則,連接已從 Hyper-V 格式轉換為 VMware 格式的虛擬磁碟後,VMware 虛擬機器將無法啟動。建立虛擬機器後,您可以前往 虛擬機器 >設定 ,選取 選項 索引標籤 >進階 ,以檢查此設定。

    Selecting BIOS in the options of the destination VMware VM

現在,您的虛擬機器應可正常啟動。客體作業系統啟動後,請安裝 VMware Tools.

The conversion has completed successfully

‎.

試用 NAKIVO Backup & Replication 搭配 VMware vSphere

試用 NAKIVO Backup & Replication 搭配 VMware vSphere

立即開始您的 15 天免費試用,體驗無代理、增量式的虛擬機器備份服務,並享有即時完整還原與細粒度還原選項、防勒索軟體防護等豐富功能。

VMware ESXi

您也可以將 VHD 轉換為 VMDK,並將轉換後的虛擬磁碟匯入至運行於 ESXi 主機上的 VMware 虛擬機器中。然而,VMware 工作站與 VMware ESXi 所使用的 VMware 虛擬磁碟格式並不相同。VMware 工作站格式的虛擬磁碟,其磁碟描述符是內建於單一檔案 VMDK 檔案中的。 ESXi 格式的虛擬磁碟則由兩個獨立檔案組成——資料檔案(.vmdk )與磁碟描述檔檔案(-flat.vmdk )。若要將透過 qemu-img 或 VBoxManage 從 Hyper-V 格式轉換而來的虛擬磁碟,用於在 ESXi 上運行的虛擬機器,您必須將該虛擬磁碟從工作站格式轉換為 ESXi 格式。 否則,您將會收到錯誤訊息:” 不支援或無效的磁碟類型 2 “。

VMDK must be converted to the ESXi format

讓我們來了解如何將從 VHD 格式轉換而來的虛擬磁碟用於在 ESXi 上運行的虛擬機器。

將 VMDK 轉換為 ESXi 格式

  1. 將轉換後的 VMDK 檔案上傳至連接到 ESXi 主機的資料存放區。 請使用 SCP/SFTP 客戶端、VMware Host Client 的網頁介面或 VMware vSphere Client,將轉換後的虛擬磁碟 vmdk 檔案上傳至 ESXi 資料存放區。

    在本範例中, WinServer2016qemu.vmdk 檔案已上傳至 SSD1 資料存放區,該資料存放區已連接至 IP 位址為 10.10.10.74 的 ESXi 主機。

    Uploading the VMDK file after conversion

  2. 請確保您的 ESXi 主機已啟用 SSH 存取功能( 管理 > 服務 > TSM-SSH )。

    SSH access is enabled on the ESXi host

  3. 使用 SSH 客戶端(例如 PuTTY)透過 SSH 連線至您的 ESXi 主機。
  4. 前往儲存從 Hyper-V VHD 格式轉換而來的 VMDK 虛擬磁碟檔案的目錄(在此範例中, vmdk 檔案儲存於 /vmfs/volumes/SSD1/converted/):

    cd /vmfs/volumes/SSD1/converted/

  5. 使用 vmkfstools 將工作站格式的虛擬磁碟轉換為 ESXi 格式的虛擬磁碟。 在本範例中,目標虛擬磁碟類型為 ESXi 格式的 薄配置 虛擬磁碟。請以 root 身分執行指令。

    vmkfstools -i WinServer2016qemu.vmdk WinServer2016thin.vmdk -d thin

    Post conversion of the VMDK file to the ESXi format

如螢幕截圖所示,使用 vmkfstools 將 VMDK 從工作站格式轉換為 ESXi 格式的作業已成功完成,並產生了兩個新檔案:

WinServer2016thin-flat.vmdk

WinServer2016thin.vmdk

The virtual disk is converted to a VMDK of the ESXi format

將 VMDK 磁碟匯入 ESXi 上的虛擬機器

開啟 VMware Host Client(若已部署 vCenter,建議使用 VMware vSphere Client ;但在幾乎所有使用情境下,包括 ESXi 免費版本,您皆可使用 VMware Host Client)。此工作流程同樣適用於 VMware vSphere/ESXi 6.5 至 9.0 版本。

在 VMware Host Client 的網頁介面中,選取 “虛擬機器” ,然後點擊 “建立/註冊虛擬機器” 。

Creating a new VM to import VHD to VMware

“新建虛擬機器精靈”隨即開啟。

  1. 選取建立類型 。點擊 “建立” 以建立新的虛擬機器。在每個步驟中,點擊 “下一步” 以繼續。

    Creating a new VM on an ESXi host

  2. 選取名稱和客體作業系統。 選取虛擬機器版本、客體作業系統家族及客體作業系統版本。在此範例中,虛擬機器名稱為 “Win2016converted” 。 此虛擬機器相容於 ESXi 6.5 或更新版本。客體作業系統家族為 Windows,客體作業系統版本為 Microsoft Windows 2016(64 位元)。

    Creating a new VM to import a converted virtual disk

  3. 選擇儲存空間。 選擇您要儲存虛擬機器檔案的資料存放區。本範例中使用的資料存放區名稱為 SSD2。

    Selecting a datastore to store VM files

  4. 自訂設定。 此步驟在本案例中至關重要。 刪除新虛擬機器預設建立的虛擬磁碟。接著,點選 新增硬碟 > 現有硬碟 。

    Importing a virtual disk converted from VHD to VMDK to a VM on ESXi.

    在資料存放區瀏覽器中,選取您已從 VHD 轉換為 VMDK,並從 VMware 工作站格式轉換為 VMware ESXi 格式(薄配置)的虛擬磁碟。 您可能還記得,轉換後的虛擬磁碟由兩個檔案組成(.vmdk 以及 -flat.vmdk ),但在資料存放區瀏覽器中,僅顯示一個 vmdk 檔案。請勿擔心——這是 VMware Host Client 的特點。複製到 ESXi 資料存放區的兩個檔案均已存在。您可透過 ESXi 主控台或透過 SSH 連線來確認它們。 在目前的範例中,您可以看到虛擬磁碟目前的大小為 9.11 GB,但此磁碟的最大配置大小為 30 GB。

    Selecting a converted virtual disk on a datastore

    新增轉換後的 VMDK 虛擬磁碟後,您可以看到未啟用的欄位中顯示了 30 GB 虛擬磁碟的 9 GB 大小(目前大小)。

    The converted virtual disk is attached to a VM on ESXi.

  5. 準備完成。 在此步驟中,您可以檢查設定。如果一切正確,請按一下 完成 以建立新的虛擬機器。

    Checking the new VM configuration summary

現在,您可以開啟虛擬機器電源(以滑鼠右鍵按一下虛擬機器名稱,並在快顯功能表中選取 電源 > 開啟電源 )。

Starting a VM that uses a converted virtual disk

使用轉換後虛擬磁碟的虛擬機器已順利啟動,且網路運作正常。現在您可以在客體作業系統上安裝 VMware Tools。

The VM using the converted disk is operating properly on ESXi

結論

如果您想將 Hyper-V 虛擬機器轉換為 VMware 虛擬機器,可以將 VHD 轉換為 VMDK,然後將轉換後的 VMDK 虛擬磁碟附加至新的 VMware 虛擬機器。 Qemu-img 可用作 VHD 至 VMDK 轉換工具,而 VBoxManage 則可作為替代方案。這兩種方案皆免費且支援多種平台,可讓您在不同的作業系統上將 Hyper-V VHD 轉換為 VMware VMDK。請注意,如果您想在 ESXi 虛擬機器中使用透過 qemu-img 或 VBoxManage 轉換的虛擬磁碟,您應使用 ESXi 命令列中的 vmkfstools ,將 VMDK 虛擬磁碟從 Workstation 格式轉換為 ESXi 格式。

如果您想使用半自動或全自動工具,將整部 Hyper-V 虛擬機器轉換為 VMware 虛擬機器,可以使用免費的 VMware vCenter Converter 獨立版。無論您使用哪種虛擬機器監視器,資料保護都至關重要。NAKIVO Backup & Replication 提供跨平台還原功能,可讓您將虛擬機器備份中的 VHD 磁碟轉換為 VMDK 磁碟,並將 Hyper-V 虛擬機器還原至 VMware 虛擬機器監視器。

試試 NAKIVO Backup & Replication

試試 NAKIVO Backup & Replication

立即申請免費試用,全面探索本解決方案的所有資料保護功能。免費試用 15 天。無任何特點或容量限制。無需提供信用卡資訊。

其他人也在看