如何正确压缩 Linux VM 的 Hyper-V 动态大小 VHDX 文件?

如何正确压缩 Linux VM 的 Hyper-V 动态大小 VHDX 文件?

我在 Hyper-V VM 上安装了 Ubuntu 18.04 LTS,一切正常,直到我注意到 VHDX 文件占用了异常多的磁盘空间。从 VM 内部,您可以看到系统仅占用不到 10GB 的空间

虚拟机磁盘空间使用情况

但是在 Windows 主机上,VHDX 文件占用了超过 20GB 的磁盘空间!

主机磁盘空间使用情况

这是在我按照以下步骤运行磁盘压缩之后的情况:

  1. 在虚拟机中,运行sudo fstrim /
  2. 关闭虚拟机,以管理员权限启动 PowerShell 控制台
  3. 使用以下方式安装 VHDXMount-VHD '.\ubuntu 18.04 lts.vhdx' -ReadOnly
  4. 使用以下方法压缩 VHDX:Optimize-VHD '.\ubuntu 18.04 lts.vhdx' -Mode Full
  5. 使用以下方式卸载 VHDXDismount-VHD '.\ubuntu 18.04 lts.vhdx'

它有点起作用,因为 VHDX 的大小从之前的 23GB 减少到现在的 21GB,但考虑到在虚拟机内部,它显示当前仅使用了不到 10GB 的空间,这在尺寸上几乎没有太大的压缩。

我还尝试从 Hyper-V 管理 UI 运行磁盘压缩功能,但没有任何效果。那么,您知道是什么原因导致 VHDX 大小如此之大,我该如何正确压缩它?谢谢。

答案1

我遇到了一些问题,我尝试了所有已知的方法或通过 Google 找到的方法。最后我通过以下方式解决了它:

  • 经过一些修剪、dd 归零和其他魔法之后(我不知道这些是否重要)
  • 我创建了一个新的 vhdx,比我需要的稍大一些(+1GB)
  • 从 gparted live CD 启动
  • 最后我使用此工具将启动和数据分区复制到新的 vhdx 上。
  • 将新硬盘移至启动顺序列表的顶部或直接与虚拟机分离
  • 我现在很高兴 :)

相关内容