如何處理 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) 的硬碟。 虛擬磁碟可包含原生檔案系統、磁碟分割區、磁區及資料夾,並能執行標準的磁碟與檔案操作。每台虛擬機器必須至少具備一個虛擬硬碟,用以儲存虛擬機器資料。
較早的 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 的儲存容量 |
| 相較於 VHDX 檔案,VHD 檔案在防止資料損毀方面的保護能力較弱 | VHDX 檔案透過追蹤元資料,提供強大的資料損毀防護 |
| 不支援自訂元資料 | 支援自訂元資料,並可將其儲存 |
| 支援 Windows Server 2008、2008 R2、2012 及 2012 R2 | 支援 Windows 2012 及後續版本 |
| 不支援即時調整大小 | 支援即時調整大小 |
| 邏輯磁區大小為 512 位元組 | 邏輯磁區大小為 4 KB |
| 資料對齊的問題 | 更佳的資料對齊 |
| 不支援裁切功能 | 支援裁切功能 |
如您所見,新的 Hyper-V VHDX 檔案格式包含多項特點,顯著提升了其實用性。例如,"修剪"特點可讓您識別不再使用且可刪除的資料區塊,從而強化儲存空間的優化並提升整體效能。另一項隨新 Hyper-V VHDX 檔案格式推出的特點是"共用 VHDX",它允許同一客體叢集上的虛擬機器將 VHDX 檔案用作共用儲存空間。 此外,Hyper-V VHDX 檔案允許您在虛擬機器仍在運行時,按需調整虛擬磁碟的大小(縮小或擴充),這能大幅節省時間並降低系統開銷。最後,由於資料對齊功能獲得強化,Hyper-V VHDX 檔案能顯著提升 I/O 操作效能。相較之下,大磁區的實體磁碟則容易出現效能下降的問題。
儘管 VHDX 是 VHD 格式的進階版本,但在某些使用情境下,使用 VHD 仍更為合適。例如,Hyper-V VHDX 檔案與早期版本的 Windows Server 不相容。因此,若您正在運行混合虛擬機作業系統的虛擬環境,且需要在不同主機之間移動虛擬機,VHD 檔案格式將是最佳選擇,因為它受到更多作業系統的支援。
如何在 PowerShell 中處理 Hyper-V VHD 和 VHDX 檔案
既然您已經了解 Hyper-V VHD 和 VHDX 檔案是什麼,以及它們能帶來哪些好處,現在就可以開始建立並設定您的虛擬硬碟了。為此,您可以使用 Hyper-V 管理員或以系統管理員模式執行的 PowerShell。 在本篇部落格文章中,我們將說明如何在 PowerShell 中管理 Hyper-V VHD 和 VHDX 檔案的操作。這是最佳的做法,因為 PowerShell 提供了更多用於設定 Hyper-V VHD 和 VHDX 檔案的選項。透過執行 PowerShell 指令碼,您可以快速且輕鬆地建立、轉換、合併或移除磁碟。
建立 Hyper-V VHD 和 VHDX 檔案
若要建立新的 VHD 或 VHDX 格式虛擬硬碟,請以系統管理員身分開啟 PowerShell,然後執行 New-VHD cmdlet。以下範例說明如何在指定路徑處建立一個動態類型的虛擬硬碟,其大小為 10 GB、區塊大小為 128 MB,且邏輯磁區大小為 4 KB。請注意,關鍵在於檔案副檔名 (.vhd 或 .vhdx) 決定了檔案格式;在此情況下,正在建立一個 VHDX 檔案。
New-VHD -Path 'C:Virtual DisksDemoDisk.vhdx' -BlockSizeBytes 128MB -LogicalSectorSize 4KB -SizeBytes 10GB -Dynamic
虛擬硬碟已建立完成,PowerShell 視窗中將顯示以下關於該虛擬硬碟的資訊。

新增 Hyper-V VHD 和 VHDX 檔案
隨著 新增-VM 硬碟機 透過此 cmdlet,您可以將虛擬硬碟新增至特定的虛擬機器。在以下範例中,該虛擬硬碟 DemoDisk.vhdx 位於指定路徑的檔案將附加至名為 DemoVM. SCSI 控制器、控制器編號 0 以及控制器位置 1 也已指派給該虛擬磁碟。
Add-VMHardDiskDrive -VMName DemoVM -ControllerType SCSI -ControllerNumber 0 -ControllerLocation 1 -Path 'C:Virtual DisksDemoDisk.vhdx'
移除 Hyper-V VHD 和 VHDX 檔案
該 移除虛擬機器硬碟機 此指令用於從虛擬機器中刪除虛擬硬碟。為示範此 cmdlet 的運作方式,以下說明如何刪除剛才建立的磁碟:
Remove-VMHardDiskDrive -VMName DemoVM -ControllerType SCSI -ControllerNumber 0 -ControllerLocation 1
透過這些 cmdlet,您可以輕鬆地根據所需參數建立和刪除虛擬磁碟,並將其掛載至特定的虛擬機器。
轉換 Hyper-V VHD 和 VHDX 檔案
如前所述,VHDX 檔案相較於前一代的 VHD 檔案具備眾多優勢。因此,在許多情況下,建議將所有 VHD 檔案轉換為 VHDX 格式。若要將 Hyper-V VHD 檔案升級為 VHDX,只需執行 Convert-VHD 此 cmdlet 可讓您在儲存來源虛擬硬碟內容的同時,變更其檔案格式。來源虛擬硬碟的資料將被複製到符合需求格式的新磁碟中。此操作應在離線狀態下執行;建議先將虛擬硬碟斷開連接。以下範例展示可將 Hyper-V VHD 檔案轉換為 VHDX 的 cmdlet:
Convert-VHD -Path ‘C:New Virtual DisksFixed Disk.vhd’ -DestinationPath ‘C:New Virtual DisksFixed Disk.vhdx’
不過請注意,VHDX 檔案僅與 Windows Server 2012 及後續版本相容。因此,您可能需要將 Hyper-V VHDX 檔案轉換為 VHD。在這種情況下,同樣的 Convert-VHD 可以使用 cmdlet,只是操作順序相反。請記住,在執行此操作之前,必須先卸下虛擬硬碟。
Convert-VHD -Path ‘C:Virtual DisksDemoDisk.vhdx’ ‘C:Virtual DisksDemoDisk.vhd’
合併 Hyper-V VHD 和 VHDX 檔案
如前所述,差異磁碟用於儲存及還原對另一個 VHD 或來賓作業系統所做的變更。每個差異磁碟都會追蹤並儲存對一個相關聯的虛擬磁碟所做的變更。在此情況下,差異磁碟稱為"子磁碟",而虛擬硬碟則稱為"父磁碟"。透過 合併 VHD 透過此 cmdlet,您可以將差異磁碟中儲存的變更合併至父磁碟,或合併至差異磁碟鏈中的另一個子磁碟。請注意,此操作是在離線狀態下執行的;請確保已將磁碟鏈解除連接。
若要將子虛擬硬碟合併至父虛擬硬碟,請執行以下 cmdlet。請注意,一旦操作完成且子磁碟的內容已傳輸至父磁碟,差異磁碟將會被銷毀。
Merge-VHD -Path ‘C:Virtual StorageDifferencing.vhdx’
在以下範例中,我們有一個父磁碟, maindisk.vhdx,以及一個子磁碟, ChDisk1.vhdx,而它本身又有一個子元素: ChDisk2.vhdx. 後者這個虛擬磁碟甚至還有自己的子磁碟, ChDisk3.vhdx. 這些磁碟合起來構成了 差分鏈. 您可以使用以下 cmdlet 來合併磁碟鏈中的子虛擬硬碟。
Merge-VHD -Path ‘C:VM TestingChDisk3.vhdx’ -DestinationPath ‘C:VM TestingChDisk1.vhdx’
透過此操作,來自 ChDisk3.vhdx 以及 ChDisk2.vhdx 已合併至 ChDisk1.vhdx. 此 PowerShell 指令碼簡化了合併虛擬硬碟的流程;無論差異化磁碟鏈的大小為何,整項操作皆可一次完成。這是 PowerShell 的優勢——若使用 Hyper-V 管理員,您無法一次合併差異化磁碟鏈的多個層級。您必須手動合併差異化磁碟鏈的每個層級,而這些額外的步驟將耗費您的時間與精力。
掛載 Hyper-V VHD 和 VHDX 檔案
該 掛載 VHD 此 cmdlet 允許您掛載一個或多個虛擬硬碟。以下範例示範如何掛載路徑為 C:Virtual DisksDemoDisk.vhdx.
Mount-VHD -Path ‘C:Virtual DisksDemoDisk.vhdx’
使用 PowerShell 指令碼,您可以將虛擬硬碟以唯讀模式掛載:
Mount-VHD -Path ‘C:Virtual DisksDemoDisk.vhdx’ -ReadOnly
卸載 Hyper-V VHD 和 VHDX 檔案
若要卸載虛擬硬碟,請執行 卸載 VHD PowerShell 中的 cmdlet。在下方的範例中,您可以看到如何卸載路徑為 C:Virtual DisksDemoDisk.vhdx.
Dismount-VHD -Path ‘C:Virtual DisksDemoDisk.vhdx’
另一種方法是使用已掛載磁碟的磁碟編號來卸載虛擬硬碟,操作方式如下:
Dismount-VHD -DiskNumber 8
調整 Hyper-V VHD 和 VHDX 檔案的大小
若要調整虛擬硬碟的大小(縮小或擴大),請 調整 VHD 大小 應使用 cmdlet。以下範例示範如何透過指定新大小來調整虛擬硬碟的大小。在此範例中,我們將 VHDX 從 10GB 擴充至 20GB:
Resize-VHD -Path 'C:Virtual DisksDemoDisk.vhdx' -SizeBytes 20GB
然而,僅 VHDX 檔案支援縮小功能。請注意,虛擬硬碟的大小不得縮小至低於其指定的最小大小。若要查看虛擬硬碟的最小大小,請執行以下 cmdlet:
Get-VHD -Path 'C:Virtual Hard Disksdemovdisk.vhdx’
您可以使用以下指令將 VHDX 檔案縮小至最小尺寸:
Resize-VHD -Path 'C:Virtual Hard Disksdemovdisk.vhdx’ -ToMinimumSize
結論
Hyper-V VHD 和 VHDX 檔案在虛擬環境中扮演著重要角色,因為它們充當虛擬機器的硬碟。VHD 檔案格式已沿用許久,但為了跟上虛擬化技術的持續進步,微軟推出了更先進的版本。因此,VHDX 檔案格式隨 Windows Server 2012 一起發布,旨在提升大磁區實體磁碟的效能、增強儲存容量,並確保資料安全。
在比較 Hyper-V VHD 與 VHDX 檔案所提供的所有特點後,可以肯定地說,Hyper-V VHDX 是一種更高效且可靠的檔案格式,專為滿足現代虛擬環境的效能需求而設計。
請務必使用專為虛擬化基礎架構量身打造的資料保護解決方案,來保護您的 VHD 和 VHDX 磁碟。請考慮 NAKIVO Backup & Replication 這是一項快速且經濟實惠的解決方案,可為 Hyper-V、VMware、AWS EC2 及 Microsoft 365 環境提供多種安全防護選項。