如何处理 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 文件允许您在 VM 仍在运行时按需调整(收缩或扩展)虚拟磁盘,这极大地节省了时间并减少了开销。最后,由于增强的数据对齐,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 命令。以下示例显示了如何创建指定路径上动态类型的虚拟硬盘,大小为 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,您可以将虚拟硬盘添加到特定的 VM。在以下示例中,指定路径上的虚拟硬盘DemoDisk.vhdx被附加到名为DemoVM的 VM。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命令可从 VM 中删除虚拟硬盘。为了演示此 cmdlet 的工作原理,以下是如何删除刚刚创建的磁盘:

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

使用这些 cmdlet,您可以轻松创建和删除具有所需参数的虚拟硬盘,并将它们附加到特定的 VM。

转换 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 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 Manager,您无法一次合并差异磁盘链的多个层。您必须手动合并差异磁盘链的每个层,并且这些额外步骤会花费您时间和精力。

挂载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 命令。以下示例演示了如何通过指定新的大小来调整虚拟硬盘的大小。在这种情况下,我们将 VHDX 从 10GB 扩展到 20GB:

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

然而,收缩仅适用于 VHDX 文件。请注意,虚拟硬盘不应缩小到比其指定的最小大小更小的尺寸。要查看虚拟硬盘的最小大小,请运行以下命令:

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

您可以使用以下命令将 VHDX 文件收缩到其最小大小:

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

结论

Hyper-V VHD 和 VHDX 文件在虚拟环境中扮演重要角色,它们作为 VM 的硬盘。长期以来,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/