如何將 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 Backup

NAKIVO for VMware vSphere Backup

Complete data protection for VMware vSphere VMs and instant recovery options. Secure backup targets onsite, offsite and in the cloud. Anti-ransomware features.

虛擬磁碟格式

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 虛擬機器及微軟叢集共用磁碟區(Microsoft Cluster Shared Volumes)的虛擬磁碟。VHDX 是一種半開放式檔案格式,您可以從微軟網站下載該檔案格式的規格說明,藉此開發能與 VHDX 檔案相容的應用程式。VHDX 的主要特點包括:

  • 磁碟的最大容量為 64 TB,相較之下,VHD 的上限為 2 TB。
  • 支援 4 KB 的磁區。
  • 與 VHD 磁碟相比,它在防止因電源中斷而導致的故障方面具有更佳的防護能力。

第 2 代虛擬機器 支援同時使用 VHDX 和 VHD 虛擬磁碟。然而,Azure 虛擬機器僅能使用 VHD 格式的虛擬磁碟。可在 Windows 10 和 Windows Server 2016 的"磁碟管理"視窗中建立 VHDX 虛擬磁碟。此外,由於內建的 VHDX 驅動程式,VHDX 映像檔亦可掛載(附加)為磁碟機,並在最新版本的 Windows 中於"Windows 檔案總管"("我的電腦")中顯示。

VMDK 這是一種由 VMware 虛擬化平台、VirtualBox、QEMU 等軟體所採用的開放式虛擬磁碟映像格式,但 Hyper-V 並未支援此格式。VMDK 映像檔可視為用來儲存資料的容器,類似於實體硬碟,且與各式虛擬化軟體具有高度相容性。VMDK 虛擬磁碟的最大容量已從 2 TB 增加至 62 TB。

VMDK 虛擬磁碟可分為以下類型及變體:整體式、分割式、稀疏式、平面式,以及薄配置與厚配置。Delta VMDK 磁碟是在執行 虛擬機器快照. 若已安裝 VMware Workstation 工作站,即可將 VMDK 檔案映射(掛載)至主機上的指定掛載點。此功能提供高度的可靠性。VMDK 虛擬磁碟支援 4 KB 原生磁區,此功能適用於最新版本的 VMware 產品,並支援 VMFS6 (虛擬機器檔案系統 6)。

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

這是個可選步驟,可讓您驗證來源 VHD 或 VHDX 虛擬磁碟的狀態,並檢視其中的檔案。此方法可避免您因混淆而浪費時間轉換錯誤的虛擬磁碟。若您僅想從 VHD 映像檔中提取檔案,本節內容正是您所需的。VHD 檔案可在 Linux 上掛載至某個目錄,亦可在 Windows 上映射至指定的磁碟機代號。

如何在 Linux 中開啟 VHDX 檔案

在 Linux 中,可透過以下方式在終端機中將 VHD 和 VHDX 檔案掛載至指定的目錄(掛載點): libguestfs 工具. 因此,在開始將 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. 執行後檢視 VHD 映像檔資訊 sudo su 要取得 root 權限:
  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. 若要以 …… 將 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

  1. 下載 qemu-img 來自官方網站(可下載 32 位元和 64 位元的安裝程式)。在本例中, qemu-img-win-x64-2_3_0 已使用.
  2. 將下載的壓縮檔解壓縮,例如解壓縮至 C:Programsqemu-img.
  3. 啟動 Windows 命令提示字元 (CMD) – 按下 Windows+R 要開啟"Run” 方框中。輸入 “cmd將""輸入至方框中,然後按下 Ctrl+Shift+Enter 來 執行指令 作為一個 管理員:

    cd C:Programsqemu-img

    的指令 qemu-img 在 Linux 和 Windows 中的表現完全相同。

在 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.

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

cd C:Program FilesOracleVirtualBox

您可以將 VirtualBox 的安裝路徑新增至 路徑 環境變數,以避免每次要執行時都必須手動導航至 VirtualBox 的安裝目錄 VBoxManage.

請依照以下步驟執行命令,將 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 Workstation 和 VMware ESXi 上運行的虛擬機器。本節將說明如何將 Hyper-V 轉換為 VMware 的其餘細節。

VMware 工作站

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

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

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

  1. 選擇 “"我稍後會安裝作業系統," 並選擇已安裝於來源 Hyper-V 虛擬機器上的客體作業系統(OS)版本,該虛擬機器的虛擬磁碟您已進行轉換(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. 選擇 BIOS 若您的來源 Hyper-V 虛擬機器已設定為使用 BIOS,請在虛擬機器選項中將韌體類型設為 BIOS。否則,您已將從 Hyper-V 格式轉換為 VMware 格式的虛擬磁碟掛載至該 VMware 虛擬機器時,該虛擬機器將無法啟動。建立虛擬機器後,您可以透過前往以下位置來檢查此設定: VM > 設定,選擇 選項 tab > 進階.

    Selecting BIOS in the options of the destination VMware VM

現在您的虛擬機器應該可以正常開機了。待客體作業系統開機完成後,請安裝 VMware 工具.

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). 若要使用您已從 Hyper-V 格式轉換而來的虛擬磁碟,請使用 qemu-img 或者,若要對在 ESXi 上運行的虛擬機器使用 VBoxManage,您必須將該虛擬磁碟從工作站格式轉換為 ESXi 格式。否則,您將會收到以下錯誤訊息:"不支援或無效的磁碟類型 2”.

VMDK must be converted to the ESXi format

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

將 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

如螢幕截圖所示,將 VMDK 從工作站格式轉換為 ESXi 格式後, vmkfstools 已成功完成,並已建立兩個新檔案:

WinServer2016thin-flat.vmdk

WinServer2016thin.vmdk

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

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

開啟 VMware Host Client(建議使用 VMware vSphere Client 如果已部署 vCenter,但在幾乎所有使用情境下,您都可以使用 VMware Host Client,包括以下情境: ESXi 免費版本)。此工作流程同樣適用於 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。請注意,若您想使用透過 qemu-imgVBoxManage 對於 ESXi 虛擬機器,您應使用 將 VMDK 虛擬磁碟從工作站格式轉換為 ESXi 格式 vmkfstools 在 ESXi 命令列中。

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

Try NAKIVO Backup & Replication

Try NAKIVO Backup & Replication

Get a free trial to explore all the solution’s data protection capabilities. 15 days for free. Zero feature or capacity limitations. No credit card required.

People also read