![压缩动态 VHD 磁盘映像](https://linux22.com/image/643052/%E5%8E%8B%E7%BC%A9%E5%8A%A8%E6%80%81%20VHD%20%E7%A3%81%E7%9B%98%E6%98%A0%E5%83%8F.png)
我有一台在 WS2012 上运行的 Hyper-V 服务器。我有一台作为动态磁盘运行的 Windows 7。我删除了其中的文件和其他内容,以尝试节省磁盘空间并减小大小。但是,即使我关闭它并在 VHD 上运行缩减,大小也不会缩小。
我是否需要做一些其他的事情来缩小 VHD,以便可以防止 VM 因磁盘空间不足而崩溃?
编辑:
我还安装了磁盘并运行了DEFRAG: E: /V /X
磁盘碎片整理,希望我可以压缩 .VHD,但其大小仍然超过驱动器内实际使用的空间 30GB。
在运行 Hyper-V 的缩减选项之前,我是否需要将 VHD 的空白空间清零?
磁盘空间不足:
虚拟硬盘(VHD):
VHD 内的磁盘:
PS C:\Users\Administrator> get-vhd
cmdlet Get-VHD at command pipeline position 1
Supply values for the following parameters:
Path[0]: X:\NAME.VHD
Path[1]:
ComputerName : NAME
Path : X:\NAME.VHD
VhdFormat : VHD
VhdType : Dynamic
FileSize : 86707423744
Size : 256060514304
MinimumSize : 256059113472
LogicalSectorSize : 512
PhysicalSectorSize : 512
BlockSize : 2097152
ParentPath :
FragmentationPercentage : 16
Alignment : 0
Attached : False
DiskNumber :
IsDeleted : False
Number :
答案1
Windows Server 2012 和新的 VHDX 文件格式引入了对缩小 Hyper-V 虚拟磁盘文件的原生支持。如果您使用的是旧版 VHD 格式,则需要先将文件转换为 VHDX。
在开始之前,如果可能的话,请确保您有一份好的备份。您不需要它,但这样做总是明智的。
这两个操作都可以使用 Hyper-V 管理器 UI 执行。必须先关闭虚拟机;这些操作不能在线执行。选择 VHD 并选择“编辑”。生成的向导有转换选项和收缩选项。运行向导一次进行转换,然后再次运行以收缩新的 VHDX。
您也可以使用 Powershell 使用 cmdlet Convert-VHD 和 Resize-VHD 执行相同操作。
您可以在此页面上找到详细的分步说明;
http://www.techrepublic.com/blog/data-center/working-with-and-resizing-windows-server-2012-vhds/
我应该补充一点,转换为 VHDX 通常没有任何缺点;它是一种更现代、可扩展的文件格式,具有许多优点(Technet 上的简要总结如下:http://technet.microsoft.com/en-gb/library/hh831446.aspx)。然而,如果您希望在执行缩减过程后转换回 VHD,那么您可以这样做;这是一个完全可逆的操作。
我希望这能有所帮助。