![VirtualBox VDI 的最大大小超出了主机的硬盘大小](https://linux22.com/image/1426872/VirtualBox%20VDI%20%E7%9A%84%E6%9C%80%E5%A4%A7%E5%A4%A7%E5%B0%8F%E8%B6%85%E5%87%BA%E4%BA%86%E4%B8%BB%E6%9C%BA%E7%9A%84%E7%A1%AC%E7%9B%98%E5%A4%A7%E5%B0%8F.png)
我遇到了一个重大失误,导致我的 VirtualBox 客户虚拟机的硬盘比主机的硬盘大。我匆匆读完了调整虚拟硬盘大小的命令。因此,我最终从25 GB到45 TB。
我研究了如何缩小 VirtuaBox VDI,方法是登录客户系统,将所有可用空间清零,然后使用 VBoxManage 命令压缩硬盘。如果 VDI 的最大大小小于主机系统,这种方法是可行的。但对于我的情况,这种方法行不通,因为将零写入调整大小后的 VDI 的可用空间会试图用零填满 45 TB。由于我的 Mac 有 750 GB 的硬盘,45 TB 的零会把它填满。
有些论坛说虚拟最大大小没什么大不了的,因为动态硬盘只会占用与客户机中的数据相对应的主机磁盘空间。这是真的,但 45 TB 的上限让我感到害怕。如果我的客户机中的某个进程变得疯狂并不断记录直到填满客户机和主机硬盘,该怎么办?这会让我的两台机器都瘫痪,而这不是我想要允许的可能性。
所以我的问题是:你如何真的减少 VirtualBox 动态虚拟硬盘的最大大小?
Host: Mac OS X
Guest: Windows 8
I have not started the VM since I resized the VDI
答案1
简短回答:您无法缩小最大大小,只能增加它。但是,您可以创建一个具有所需大小的 VDI,然后克隆将旧 VDI 迁移到新 VDI。有一些问题,请继续阅读。
将旧 VDI 克隆到新 VDI 中只有当你能保证以下事情时:
- 主机物理硬盘上有足够的空间来支持克隆
- 如果虚拟机已重新分区其硬盘以使用任何其新最大大小所分配的空间,那么您克隆到的 VDI 必须与来宾的整个分区方案大小完全相同或更大。(为了安全起见,我会使用更大的 VDI。)
如果你能保证这些事情,你就可以继续……
首先,创建一个具有您想要的大小的新 VDI:
VBoxManage createhd --filename Windows\ 8\ Improved.vdi --size 50000
--size
以 MB 为单位。此示例将创建一个动态 VDI,其最大大小为50 GB。
然后将旧的 VDI 克隆到新的 VDI 上(我的旧 VDI 名为Windows 8.vdi
):
VBoxManage clonehd Windows\ 8.vdi Windows\ 8\ Improved.vdi --existing
然后,您使用 VirtualBox GUI(或 VBoxManage)Windows 8 Improved.vdi
作为主硬盘。
这里的关键是部分--existing
。只要旧 VDI 中分区方案占用的空间小于新 VDI 的大小,克隆就应该成功,并且有剩余空间。当您使用新 VDI 启动虚拟机时,客户操作系统仍将具有旧分区方案,但会看到更大的硬盘。此时,您可以放心使用合适的分区管理器(例如分区)将客户硬盘扩展到新的空间。