如何處理Hyper-V VHD和VHDX文件:基本要點

Windows Server 2012 的發布受到熱烈歡迎,因為引入了多個虛擬化功能,包括新的 VHDX 文件格式。VHDX 本質上是 VHD 的後繼者,但具有更先進的功能。但是,您仍然可以在 Hyper-V 環境中創建和管理 VHD 文件。讓我們探討一下 Hyper-V 的 VHD 和 VHDX 文件有何不同,它們提供了什麼好處,以及它們如何使用。

關於 Hyper-V 的 VHD 和 VHDX 文件

在 Hyper-V 環境中創建的虛擬磁盤可以作為位於物理磁盤上的 VHD 或 VHDX 格式的文件存儲。虛擬硬盤是物理硬盤的替代品;它們作為虛擬機器(VM)的硬盤。虛擬磁盤可以包含本機文件系統、磁盤分區、扇區和文件夾。它們可以進行標準的磁盤和文件操作。每個 VM 都需要至少一個虛擬硬盤,可以用作 VM 數據的存儲。

早期的 Windows 版本僅支持一種虛擬磁盤文件格式 – VHD。由於技術需求不斷增長,Windows 2012 引入了 VHDX 文件格式,它大大提高了存儲容量,在大扇區磁盤上提高了性能,並確保了更高水平的數據保護。

Hyper-V 的 VHD 和 VHDX 文件都可以是不同類型的:

  • 固定。在創建 VHD 文件時分配虛擬磁盤的空間。虛擬硬盤文件的大小與虛擬硬盤的大小相同。其大小保持恆定,無論添加或刪除的數據如何。
  • 動態擴展。 虛擬磁碟的空間根據需要分配。 虛擬硬碟具有指定的物理存儲空間,可以在需要時使用,但是空間是根據需要分配的。 因此,當添加新數據時,VHD 或 VHDX 文件的大小會增加。
  • 差異。 此磁碟類型用於識別、存儲、管理和還原對另一個虛擬磁碟或父磁碟所做的更改。

Hyper-V VHD 和 VHDX 文件之間的區別

為了更好地理解 Hyper-V VHD 和 VHDX 文件的功能,讓我們探討一下這兩種文件格式的區別。 依次,這告訴我們它們如何改善虛擬磁碟的性能。 以下表格對比了兩種格式:

VHD VHDX
Windows、Citrix 和 Oracle 支援的基本檔案格式 Windows 支援的高級檔案格式
最多可達 2 TB 的儲存容量 最多可達 64 TB 的儲存容量
VHD 檔案對數據損壞提供較少保護,與其 VHDX 對應物相比 VHDX 檔案通過追蹤元數據提供強大的數據損壞保護
不提供自定義元數據的支援 支援自定義元數據並可進行存儲
受 Windows Server 2008、2008 R2、2012 和 2012 R2 支援 受 Windows 2012 及更新版本支援
無實時調整大小功能 提供實時調整大小功能
邏輯扇區大小為 512 字節 邏輯扇區大小為 4 KB
數據對齊問題 更好的數據對齊
不支援修剪 支援修剪

正如您所見,新的 Hyper-V VHDX 文件格式包含了幾個顯著改進其實用性的功能。例如,修剪功能允許您識別不再使用並且可以刪除的數據塊,從而增強了存儲優化和改善了整體性能。新的 Hyper-V VHDX 文件格式還引入了共享 VHDX 功能,使得同一個客戶群集上的虛擬機器可以使用一個 VHDX 文件作為共享存儲。此外,Hyper VHDX 文件允許您在虛擬機器運行時根據需要調整(縮小或擴展)虛擬磁盤大小,這樣可以大大節省時間並減少開銷。最後,由於改進的數據對齊,Hyper-V VHDX 文件可以顯著提高 I/O 操作性能。相比之下,大扇區物理磁盤容易出現性能下降的問題。

儘管 VHDX 是 VHD 格式的一個更高級的版本,但在某些情況下仍然更適合使用 VHD。例如,Hyper-V VHDX 文件與較早版本的 Windows Server 不兼容。因此,如果您正在運行具有混合客戶操作系統的虛擬環境,並且需要在不同主機之間移動虛擬機器,則 VHD 文件格式將是最佳選擇,因為它受到更多操作系統的支持。

如何在 PowerShell 中處理 Hyper-V VHD 和 VHDX 文件

建立 Hyper-V VHD 和 VHDX 檔案

若要在 VHD 或 VHDX 格式中建立新的虛擬硬碟,請以系統管理員身分開啟 PowerShell,然後執行 New-VHD cmdlet。以下的示例顯示如何建立一個動態類型的虛擬硬碟,大小為 10 GB,塊大小為 128 MB,邏輯區段大小為 4 KB。請注意,檔案副檔名(.vhd.vhdx)決定檔案格式;在此案例中,正在建立 VHDX 檔案。

New-VHD -Path 'C:\Virtual Disks\DemoDisk.vhdx' -BlockSizeBytes 128MB -LogicalSectorSize 4KB -SizeBytes 10GB -Dynamic

虛擬硬碟已建立,並在 PowerShell 視窗中顯示以下有關虛擬碟的資訊。

新增 Hyper-V VHD 和 VHDX 檔案

使用Add-VMHardDiskDrive cmdlet,您可以將虛擬硬碟新增至特定的虛擬機器。在下面的示例中,指定路徑的虛擬硬碟DemoDisk.vhdx會附加到名為DemoVM的虛擬機器上。SCSI 控制器、控制器編號 0 和控制器位置 1 也會指派給虛擬硬碟。

Add-VMHardDiskDrive -VMName DemoVM -ControllerType SCSI -ControllerNumber 0 -ControllerLocation 1 -Path 'C:\Virtual Disks\DemoDisk.vhdx'

刪除 Hyper-V VHD 和 VHDX 檔案

使用Remove-VMHardDiskDrive 命令可從虛擬機器中刪除虛擬硬碟。以下示範如何刪除剛剛建立的硬碟:

Remove-VMHardDiskDrive -VMName DemoVM -ControllerType SCSI -ControllerNumber 0 -ControllerLocation 1

使用這些命令,您可以輕鬆地使用所需的參數建立和刪除虛擬硬碟,並將它們附加到特定的虛擬機器。

轉換 Hyper-V VHD 和 VHDX 檔案

如上所述,VHDX 檔案相比其 VHD 前身提供了許多好處。因此,在許多情況下,建議將所有 VHD 檔案轉換為 VHDX 格式。要升級 Hyper-V VHD 檔案為 VHDX,只需運行 Convert-VHD Cmdlet,該 Cmdlet 允許您在保存源虛擬硬盤的內容的同時更改文件格式。將源虛擬硬盤的數據複製到所需格式的新磁盤中。此操作應在離線狀態下執行;建議卸載虛擬硬盤。下面的示例演示了允許將 Hyper-V VHD 檔案轉換為 VHDX 的 Cmdlet:

Convert-VHD -Path 'C:\New Virtual Disks\Fixed Disk.vhd' -DestinationPath 'C:\New Virtual Disks\Fixed Disk.vhdx'

請記住,然而,VHDX 檔案僅與 Windows Server 2012 及更高版本兼容。因此,您可能需要將 Hyper-V VHDX 檔案轉換為 VHD。在這種情況下,可以使用相同的 Convert-VHD Cmdlet,只是相反。請記住,在執行操作之前必須卸載虛擬硬盤。

Convert-VHD -Path 'C:\Virtual Disks\DemoDisk.vhdx' 'C:\Virtual Disks\DemoDisk.vhd'

合併 Hyper-V VHD 和 VHDX 檔案

如上所述,差异磁盘用于存储和还原对另一个VHD或客户操作系统所做的更改。每个差异磁盘跟踪并存储对一个关联虚拟磁盘所做的更改。在这种情况下,差异磁盘被称为“子磁盘”,虚拟硬盘被称为“父磁盘”。使用 Merge-VHD cmdlet,您可以将存储在差异磁盘中的更改合并到父磁盘或差异磁盘链中的另一个子磁盘中。请注意,此操作是离线执行的;确保磁盘链已分离。

要将子虚拟硬盘合并到父虚拟硬盘中,请运行以下 cmdlet。请注意,一旦操作完成并且子磁盘的内容被传输到父磁盘中,差异磁盘将被销毁。

Merge-VHD -Path ‘C:\Virtual Storage\Differencing.vhdx’

在下面的示例中,我们有一个父磁盘,maindisk.vhdx,和一个子磁盘,ChDisk1.vhdx,它本身还有一个子磁盘:ChDisk2.vhdx。后者甚至有自己的子磁盘,ChDisk3.vhdx。这些磁盘一起构成了差异链。以下 cmdlet 可用于合并磁盘链中的子虚拟硬盘。

Merge-VHD -Path ‘C:\VM Testing\ChDisk3.vhdx’ -DestinationPath ‘C:\VM Testing\ChDisk1.vhdx’

通過此操作,來自 ChDisk3.vhdxChDisk2.vhdx 的數據被合併到 ChDisk1.vhdx 中。PowerShell 腳本簡化了虛擬硬盤合併的過程;整個操作可以在一次運行中完成,無論差異鏈的大小如何。這是 PowerShell 的一個優勢 – 使用 Hyper-V 管理器,您無法一次合併多層差異磁盤鏈。您將不得不手動合併差異磁盤鏈的每一層,而這些額外步驟將耗費您時間和精力。

掛載 Hyper-V VHD 和 VHDX 檔案

Mount-VHD cmdlet 允許您掛載一個或多個虛擬硬盤。以下示例演示如何掛載具有路徑 C:\Virtual Disks\DemoDisk.vhdx 的虛擬硬盤。

Mount-VHD -Path ‘C:\Virtual Disks\DemoDisk.vhdx’

使用 PowerShell 腳本,您可以以只讀模式掛載虛擬硬盤:

Mount-VHD -Path ‘C:\Virtual Disks\DemoDisk.vhdx’ -ReadOnly

卸載 Hyper-V VHD 和 VHDX 檔案

如果您想要卸載虛擬硬盤,請在 PowerShell 中運行 Dismount-VHD cmdlet。在下面的示例中,您可以看到如何卸載路徑為 C:\Virtual Disks\DemoDisk.vhdx 的虛擬硬盤。

Dismount-VHD -Path ‘C:\Virtual Disks\DemoDisk.vhdx’

另一個選擇是使用已掛載磁盤的磁盤號碼來卸載虛擬硬盤,如下:

Dismount-VHD -DiskNumber 8

調整 Hyper-V VHD 和 VHDX 檔案大小

如果您想要調整(縮小或擴大)虛擬硬碟,應該使用 Resize-VHD cmdlet。以下示例演示了如何通過指定新的大小來調整虛擬硬碟的大小。在這個案例中,我們將 VHDX 從 10GB 擴展到 20GB:

Resize-VHD -Path 'C:\Virtual Disks\DemoDisk.vhdx' -SizeBytes 20GB

然而,縮小只適用於 VHDX 檔案。請注意,虛擬硬碟不應縮小到小於其指定的最小大小。要查看虛擬硬碟的最小大小,運行以下 cmdlet:

Get-VHD -Path 'C:\Virtual Hard Disks\demovdisk.vhdx’

您可以使用以下命令將 VHDX 檔案縮小到其最小大小:

Resize-VHD -Path 'C:\Virtual Hard Disks\demovdisk.vhdx’ -ToMinimumSize

結論

Hyper-V VHD 和 VHDX 檔案在虛擬環境中扮演著重要角色,它們充當了虛擬機器的硬碟。VHD 檔案格式長期以來一直被使用,但為了跟上虛擬化技術的不斷進步,微軟推出了一個更高級的版本。因此,VHDX 檔案格式在 Window Server 2012 中釋出,以改善大扇區物理硬碟的性能,增強存儲容量,並確保數據保護。

在比較 Hyper-V VHD 和 VHDX 檔案提供的所有功能後,可以肯定地說,Hyper-V VHDX 是一種更高效且可靠的檔案格式,專為處理現代虛擬環境的性能需求而建立。

請確保使用針對虛擬化基礎架構量身定制的數據保護解決方案來保護您的 VHD 和 VHDX 磁碟。考慮使用 NAKIVO 備份與複製,這是一個快速且具有成本效益的解決方案,提供多種選擇,用於保護 Hyper-V、VMware、AWS EC2 和 Microsoft 365 環境。

Source:
https://www.nakivo.com/blog/work-hyper-v-vhd-vhdx-files-essential-basics/