VMware Workstation:如何减少 .vmdk 的最大大小

Séb*_*ien 30 vmware-workstation virtual-machine

我有一个 150 GB 的磁盘文件(.vmdk,未预先分配),其中存储了我的虚拟机。

该文件目前为 20 GB,但它每天都在增长,即使我没有在来宾文件系统中存储任何新内容。

我一直在寻找一种方法来减小此磁盘的最大大小,使其永远不会达到 150 GB(我想将限制设置为 30 GB,看看当 VM 达到此大小时会发生什么) .

我尝试过的:

  • 使用 VMware Converter 转换磁盘映像?这不起作用,该工具只允许创建完整副本或“链接克隆”。
  • 创建所需大小的新空白虚拟机,以便将 20GB 数据复制到新的 .vmdk 上?我找不到执行复制的方法,甚至无法将新磁盘连接到我现有的 VM(以便我使用来宾操作系统执行复制)。
  • 查看 .vmx 文件以检查最大大小是否未以纯文本形式设置(不是)。

尽管这项任务在技术上看起来很简单(没有涉及棘手的缩小,只是大小限制的简单更改),但我在这里真的没有想法......

有解决办法吗?

har*_*ymc 29

减小 .vmdk 磁盘大小的通常步骤是:

  1. 通过来宾对磁盘进行碎片整理,选择一种整合磁盘末尾空白空间的碎片整理模式。对于 Windows 客户机,您应该清空回收站并关闭休眠和分页,在碎片整理完成后返回它们。

  2. 将磁盘上所有未使用的空间归零。
    对于 Windows 使用sdelete : sdelete -c
    对于Linux: dd if=/dev/zero of=/mytempfile && rm -f /mytempfile

  3. 缩小磁盘(这可能需要很长时间才能完成)。
    VMware Workstation:菜单虚拟机/管理/清理磁盘。
    或使用:vmware-vdiskmanager.exe -k [VMDK PATH]
    对于ESX: vmkfstools --punchzero [VMDK PATH]

将磁盘从可增长转换为预分配可能会阻止其增长。这可以使用 vmware-vdiskmanager 和-t参数值来完成:

0 : single growable virtual disk
1 : growable virtual disk split in 2Gb files
2 : single preallocated virtual disk
3 : preallocated virtual disk split in 2Gb files
Run Code Online (Sandbox Code Playgroud)

以下命令会将 .vmdk 从可增长转换为预分配:

vmware-vdiskmanager -r current_disk_name.vmdk -t 3 new_disk_name.vmdk
Run Code Online (Sandbox Code Playgroud)

如果你想改变磁盘的大小,这应该在磁盘仍然是可增长的格式时完成(这里的例子)。

有关详细信息,请参阅 Virtual Disk Manager 用户指南

  • 这是我用来减少 VMDK 占用空间的有用技术。但是,这并不能完全解决我的问题,好像我想让 VMDK 始终低于 30GB,我将不得不定期重复操作(这确实需要很长时间)。 (4认同)
  • 不过,这并不会减少内部宣传的驱动器大小。 (2认同)

tot*_*tti 6

该文件目前为 20GB,但它每天都在增长,即使我没有在来宾文件系统中存储任何新内容。

因为操作系统及其应用程序会临时使用大量磁盘空间来存放临时文件、页面文件、休眠文件和配置文件。一旦它们根据操作系统的策略被删除,下次将使用磁盘上的新扇区。每当虚拟磁盘中使用新扇区时,VM 从真实磁盘为虚拟磁盘分配存储。由于虚拟磁盘上的扇区始终不会被来宾操作系统重用,因此 VM 认为这是磁盘使用,并从真实磁盘中分配空间,这将导致虚拟磁盘映像不断增长。

您的问题标题不太可能解决,因为在不检查图像的情况下使用此类工具可能会导致彻底的灾难。但是您可以防止图像增长超过 30GB。有很多方法可以实现目标。

A. 仅使用 30GB 分区并将剩余空间留作可用空间。如果您已经分区了更多空间,那么您需要缩小/删除它,创建一个新分区然后用零转储它并按照@harrymc 的描述对其进行打孔。由于未分区区域中的空间从未使用过,因此虚拟磁盘永远不会超过 30GB。

B. 创建快照并在使用后恢复。创建快照 VM 后,将数据存储到新的映像文件中。如果您恢复到它,而不保存或创建新快照,所有更改的数据都将被删除,从而释放空间。

C. 创建一个最大 30GB 的新虚拟磁盘,将其作为新磁盘添加到您当前的虚拟机中,使用备份工具将所有数据移动到新虚拟磁盘。您可以使用实时 Linux 进行克隆。

推荐选项是A


mdp*_*dpc 2

为什么不简单地将涉及的磁盘大小从 150GB 设置为 30GB。

您必须将所有分区的总和设置为小于 30GB。您必须不断缩小分区的大小。这个网站上有很多关于如何缩小分区的文档,所以我不会在这里重复。

如果您没有足够的空间来支持最大大小,为什么要创建 150GB(精简分区)?看来这只是自找麻烦。

  • 我没有亲自创建VM,这就是原因。 (6认同)