我在物理磁盘上有一个虚拟机。物理磁盘现在有 0 个可用空间,但在客户操作系统中,有大约 50GB 的可用空间。客户机可以启动一小段时间,但 Workstation 很快就会给出错误消息
.vmdk 操作失败(磁盘空间不足)。磁盘所在的文件系统已满。
此时我必须结束会话并且虚拟机崩溃/关闭。
我已尝试该命令vmware-toolbox-cmd disk shrinkonly
,但由于缺少可用空间而失败(我不明白这是怎么可能的)。
我能做些什么?
答案1
缩小虚拟磁盘分为两个阶段:
- 擦拭。
- 压缩(容易引起混淆,也称为“收缩”)。
擦拭用零填充文件填充客户机文件系统,以覆盖先前删除的文件的剩余内容。这可能会在客户机中生成空间不足的消息,但这是正常且预期的。
压缩删除主机上未使用的文件部分.vmdk
。正确执行此操作取决于擦除步骤,因为这是它识别不需要保留的部分的方式。 此步骤需要可用磁盘空间在主机上因为为了避免故障时数据丢失,磁盘压缩将创建新的磁盘文件。主机上至少需要与最大.vmdk
文件大小一样多的可用空间。(因此,使用分割磁盘是有利的,它不需要很多在缩减、碎片整理或合并快照时,主机上的可用空间比单片磁盘少。)
物理磁盘现在有 0 个可用空间,但在客户操作系统内部,有约 50GB 的可用空间。
就其本身而言,这并不是一个有意义的陈述。仅仅因为客户操作系统报告有 ~50GB 的可用空间并不意味着缩小虚拟磁盘可以回收 50GB。例如,您可能有一个稀疏虚拟磁盘,其最大大小为 200GB,其中 150GB 已被使用,剩下 50GB 是“可用的”。但如果该虚拟磁盘在主机上消耗了 160GB,那么缩小虚拟磁盘只能回收 10GB。
编辑
我没有从您的评论中注意到您正在使用 Windows 客户端。Windows 客户端有另一个更高级的选项(假设您使用的是 VMware Workstation Pro 而不是 VMware Workstation Player):虚拟机 > 管理 > 清理磁盘. 这太多了,很多比使用传统的压缩方法更快,因为它直接检查客户操作系统文件系统以识别磁盘的已使用和未使用部分,因此不需要擦除步骤。我不记得它是否对主机上的可用空间有相同的要求,但考虑到它的速度有多快,它对任何可用空间的要求可能要低得多。