压缩/缩小可扩展/动态 VHD 以完全恢复空间

压缩/缩小可扩展/动态 VHD 以完全恢复空间

如果我创建一个最大大小为 50Gb 的可扩展虚拟硬盘 (VHD),在其中填充 48Gb 的文件,然后将该大小减少到 25Gb,那么最大高效的一定成功减少 VHD 大小的方法,使其只有 25Gb 左右。

我希望做到这一点,而不必将 VHD 的内容复制到新的 VHD 中,或者由于任何原因必须有两倍的可用空间。

我知道 diskpart 的 VHD COMPACT 不能恢复所有空间。

答案1

不确定您是否正在使用 Windows 7 Virtual PC 还是 Windows Server 2008 R2 Hyper-V 还是 Windows Server 2012 Hyper-V,但为了安全起见,我将针对每种情况进行介绍。

  1. 如果您使用的是 Windows 7,则需要安装 precompactor.iso(位于 Program Files (x86)\Windows Virtual PC\Integration Components 中)并从安装的 ISO 运行 precompact.exe。完成后,您可以关闭虚拟机并编辑 VHD 以压缩大小。这应该会将实际使用空间的大小减少到接近 25 GB。

  2. 如果您正在运行 Windows Server 2008 或 2008 R2 Hyper-V,我建议您从 Windows 7 计算机中获取 precompactor.iso 文件,并按照我在步骤 1 中为 Windows 7 提供的相同说明进行操作。

  3. 如果您正在运行 Windows Server 2012 Hyper-V,则将 VHD 转换为 VHDX,Windows Server 2012 Hyper-V 将根据实际使用情况自动缩小文件大小。

答案2

如果您追求绝对的空间效率,请构建一个新的 VHD 并将文件从旧 VHD 复制到新 VHD,最好在目标 VHD 中的文件系统中启用文件压缩。我知道您排除了这一点作为可能的答案。但我提到它是因为它是最节省空间的选项。

您可以通过在压缩之前对 VHD 中的文件系统进行碎片整理来达到近似的效率水平。这两个操作加在一起最终将比构建新的 VHD 花费更长的时间,因为将生成更多的 I/O 操作,并且总共可能有更多的数据副本。

相关内容