如何在Hyper-V上扩展或缩小虚拟硬盘?
从 Windows Server 2012 R2 中的 Hyper-V 开始,可以动态调整虚拟机硬盘大小。 在线VHDX调整大小功能允许您在线增加或缩小虚拟机的vhdx文件的大小(无需停止虚拟机)。在本文中,我们将了解如何在 Windows 10 或 Windows Server 2016 上运行的 Hyper-V 中扩展或减小(缩小)虚拟机硬盘的大小(说明适用于所有受支持的 Hyper-V 版本,包括免费的 Hyper-V Server)。
Hyper-V 中在线 VHDX 调整大小的主要功能和限制:
您可以调整任何类型的 Hyper-V 虚拟磁盘的大小:固定、动态和差异;
您可以动态调整 VHDX 磁盘(包括来宾操作系统的系统驱动器)的大小。您不需要停止虚拟机;
只有 VHDX 可以动态调整大小。不支持 VHD,必须将其转换为 VHDX 格式。
-
VHDX磁盘必须通过虚拟SCSI控制器连接到VM(不支持IDE控制器上的磁盘在线扩展,这样的VM必须关闭才能更改磁盘大小);
在线 VHDX 调整大小适用于第一代和第二代虚拟机 Hyper-V;
Windows 和 Linux 都可以充当客户操作系统;
支持虚拟磁盘的扩展和收缩;
您可以从 Hyper-V 图形控制台、PowerShell 或 Windows Admin Center 调整 vhdx 磁盘大小;
不支持调整集群中使用的共享 VHDX (AVHDX) 磁盘的大小;
您无法更改为其创建快照的虚拟磁盘的大小(例如,在备份期间)。
在Hyper-V中扩展虚拟机硬盘
您可以使用 Hyper-V 管理器控制台增加虚拟 VHDX 磁盘的大小。
在Hyper-V虚拟机管理器中选择虚拟机,进入虚拟机设置 -> 展开SCSI控制器;
选择虚拟磁盘,然后点击编辑按钮;
在出现的编辑虚拟硬盘向导中选择扩展;
指定虚拟硬盘的新大小(在我们的示例中,我们将磁盘大小扩展到 170 GB);
转至已扩展磁盘的来宾操作系统的控制台。让我们看一下如何在 Windows 客户操作系统中增加系统分区。打开磁盘管理器控制台。如您所见,磁盘上出现了额外的 43 GB 未分配空间;
-
右键单击要扩展的分区,选择扩展卷(只能将卷扩展到未分配区域的左侧)。 指定当前卷大小要增加多少;
有时,Windows 恢复分区可能会阻止卷扩展。
完成扩展过程后,卷大小将会增加。
在来宾Linux操作系统中,您可以使用parted工具扩展磁盘。
如何缩小 Hyper-V 虚拟磁盘 (VHDX) 的大小?
现在让我们看看如何减小 Hyper-V 上虚拟 vhdx 磁盘的大小。
在从 Hyper-V 控制台收缩虚拟磁盘之前,需要减小来宾操作系统内磁盘上逻辑分区的大小。释放一些空间并将其转换为未分配的卷。为此,请在来宾操作系统中打开磁盘管理器,选择一个卷,然后单击收缩卷;
注意。仅当分区上有一些可用空间时,“收缩卷”选项才可用。
指定要缩小分区的空间量(在我们的示例中我们指定为 50GB);
减小来宾操作系统中的分区大小后,您需要打开 Hyper-V 控制台并转到虚拟磁盘设置。按编辑按钮;
在编辑虚拟硬盘向导中,选择压缩,然后为 vhdx 文件指定新的大小。请注意,您不能使磁盘小于其上的数据(检查最小值值)。在我们的例子中,您可以将磁盘大小从 40 GB 减少到 31 GB;
完毕。
使用 PowerShell 调整 Hyper-V 中的虚拟硬盘文件大小
您可以使用 PowerShell 调整 Hyper-V 主机上的 VHDX 磁盘大小。为此,请使用 Resize-VHD cmdlet(不要与 Resize-VirtualDisk cmdlet 混淆,后者属于内置 Windows 磁盘管理 cmdlet)。
注意。在当前版本的 Hyper-V 中,您无需关闭虚拟机即可使用 Resize-VHD cmdlet 调整虚拟磁盘大小。
首先,您需要获取虚拟机的VHDX磁盘的完整路径:
Get-VM -VMName fs01 | Select-Object VMId | Get-VHD这些 cmdlet 还返回存储上 VHDX 文件的实际大小 (FileSize) 及其可以占用的最大大小 (Size)。 MinimumSize 是虚拟磁盘文件可以减小到的最小 VHDX 磁盘大小。
为了增加 VHDX 磁盘的大小,您需要指定其新大小:
Resize-VHD -Path 'C:\VM\fs01\VHD\fs01.vhdx' -SizeBytes 50Gb如果您指定的新虚拟磁盘大小小于磁盘所占用的大小,则会出现错误:
Resize-VHD : Failed to resize the virtual disk。
您只需要调整来宾操作系统中的分区大小。
您可以使用 PowerShell 远程处理在 Windows 上远程扩展磁盘。使用 Invoke-Command 或 Enter-PSSession cmdlet 连接到远程虚拟机(通过网络或通过 Hyper-V PowerShell Direct):
Enter-PSSession -ComputerName fs01您需要获取有关可以扩展分区多少的信息并将其扩展至最大可用大小:
$MaxSize = (Get-PartitionSupportedSize -DriveLetter C).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize如果需要将虚拟磁盘的大小缩小到尽可能小的大小,请运行:
Resize-VHD -Path 'C:\VM\fs01\VHD\fs01.vhdx' -ToMinimumSize此命令会将最大 VHDX 文件大小减少 6 GB。
有关在其他虚拟机管理程序中调整虚拟磁盘大小的说明,请访问以下链接:KVM、VMWare。











