我见过(并尝试过)许多解决此问题的方法,但没有一种像我想象的那么有效,而且需要许多手动步骤。以下是我的场景:
1) 我已通过 Hyper-V 或 Windows Server 2012 或 Windows 8 上的启动到 VHD 在动态虚拟硬盘上安装了操作系统,假设它占用约 30Gb。2) 我使用 VHD,添加大量文件,然后删除它们。这会将 VHD 扩展至约 100Gb。
我想要一个流畅、简单、可靠的操作,不需要事先进行碎片整理(除非这是一个单步操作),可以恢复全部VM 上的可用空间。
我过去的经验是,对 VHD 进行碎片整理、清零,然后压缩并不能恢复所有空间,而且这是一项相当混乱的操作。
作为最后的选择,我是否可以将现有的动态磁盘(释放空间)“克隆”到新的动态 VHD?
如果整个过程可以通过 PowerShell 编写脚本,我会更高兴。
答案1
创建新的 VHD,在其上放置新的文件系统,并将文件从一个复制到另一个。这将创建最紧凑的表示。
是的,当然可以使用 PowerShell 完成此操作。请参阅“new-vhd”和“mount-vhd”。