默认情况下,VirtualBox会创建动态磁盘,这些动态磁盘会随时间在你添加数据时不断增长,但是,如果从虚拟机删除数据,你会注意到磁盘占用的空间不会自动释放。但是,你还可以使用隐藏命令手动收缩动态磁盘。
第一步:确保使用动态磁盘
此过程只适用于动态磁盘,而动态磁盘的大小可以增大或缩小,例如,动态磁盘的最大大小上限为50.GB,但是实际上它们只有数据足够多时才会实际增长到最大的大小,固定大小的磁盘总是占用最大的空间。
如果你有一个固定大小的磁盘要收缩,你可以先将它转换为动态磁盘,然后按照以下说明操作,例如,如果你有一个容量为50 GB的固定磁盘,上面只有20 GB的数据,并将它转换为动态磁盘,则可以缩小它,最后仅占用20 GB的空间。
要在VirtualBox中检查磁盘是动态磁盘还是固定大小,请右键单击使用该磁盘的虚拟机,然后选择"设置",单击"存储"选项卡,然后选择磁盘,你会看到"详细信息"旁边显示哪种类型的磁盘,例如,在下面的屏幕截图中,"动态分配的存储"表示这是一个动态磁盘。
第二步:在虚拟机中将零写入磁盘
删除不需要的文件,卸载不再使用的程序,清空回收站,然后,你需要用空数据去覆盖那些空间。
对于Windows客户机操作系统
如果你在虚拟机中安装了Windows,则现在应该启动虚拟机并对它磁盘进行碎片整理,在虚拟机中,在"开始"菜单中搜索"碎片整理",然后启动"磁盘碎片整理程序"或"碎片整理和优化驱动器"工具,选择要压缩的磁盘,然后单击"碎片整理磁盘"。
完成碎片整理过程后,需要将空数据写入虚拟机中的空白空间。
为此,请从Microsoft下载sdelete实用程序,将sdelete.exe文件解压缩到计算机上的文件夹中。
打开命令提示符窗口,为此,请打开"开始"菜单,搜索"命令提示符",然后启动快捷方式。
键入cd,按空格键,输入目录路径,然后按Enter键,更改到包含sdelete.exe文件的目录。如果路径包含空格,请务必用引号将路径括起来,它应该如下所示:cd"C:pathtofolder"
例如,如果将sdelete.exe文件解压缩到用户帐号的下载文件夹,然后运行命令,cd"C:UsersbobDownloads"
要快速填充目录路径,只需在命令提示符窗口中键入cd,然后按空格键,
运行以下命令:sdelete.exe c: -z
就像Microsoft网站上的SDelete页面所指出的,-z选项"对虚拟磁盘优化非常有用"。
在继续之前,你将被要求同意工具的许可协议,只需单击"同意协议"
等待进程完成,完成后,使用"开始"菜单中的"关闭"选项关闭虚拟机,现在可以压缩它了。
对于Linux客户机操作系统
如果你在虚拟机中安装了Linux (即Linux来宾操作系统而不是Windows来宾操作系统),则可以跳过碎片整理过程,并使用命令将驱动器上的可用空间清零,我们在这里以Ubuntu为例,但是在其他Linux发行版本上的过程相似。
为此,首先需要在虚拟机中安装zerofree实用程序,它应该在Linux发行版的软件存储库中可用,例如,通过在虚拟机内的终端上运行以下命令在Ubuntu上安装它:sudo apt install zerofree
取而代之的是,你将要引导到一种特殊的恢复模式,在该模式下不挂载普通的根分区,在Ubuntu上,重新启动虚拟机,并在启动时反复按" Esc "键以访问Grub菜单,当出现Grub菜单时,选择" *Advanced options for Ubuntu",然后按Enter 。
选择与最新Linux内核关联的" ( recovery mode )"选项,即列表顶部附近具有最高版本号的选项,然后按Enter 。
在恢复菜单中选择" root "以引导到root shell提示符。
出现"输入Enter键"后,当"Press Enter for maintenance"出现在屏幕上时,你将得到一个终端提示。
在命令行中,通过运行以下命令确定要归零的虚拟磁盘:df
在下面的输出中,我们可以看到/dev/sda1是这里唯一实际的磁盘设备,我们知道,因为它是唯一一个在最左侧列中有/dev/的磁盘。
假设虚拟机是用默认设置创建的,那么它只有第一个硬盘分区上的/dev/sda1,如果多个磁盘或多个分区的设置不同,则可能需要将另一个分区或多个分区归零。
现在可以清零磁盘了,运行以下命令,用要写入零的分区的设备名称替换/dev/sda1,大多数人都会有一个/dev/sda1设备。zerofree -v /dev/sda1
完成零进程后,运行以下命令关闭虚拟机:halt
当你在屏幕上看到"System halted"消息时,系统已停止,你现在可以关闭虚拟机,关闭虚拟机窗口,然后选择"关闭虚拟机电源"。
第三步:查找VBoxManage命令
其余的进程将在虚拟机外部在你的主机操作系统上执行,例如,如果你的PC上运行Windows 10,虚拟机上运行Windows 7,你将在Windows 10上执行其余过程。
在Windows上,你会在VirtualBox程序目录中找到它,如果你将VirtualBox安装到另一个目录,则查找那里。
打开命令提示符窗口,要执行此操作,请打开开始菜单,键入cmd并按Enter键。
在命令提示符中键入cd,后跟VBoxManage命令所在的文件夹的路径,你需要用引号括起来。
通过在命令提示符窗口中键入cd,然后从文件提示符拖放文件夹图标,可以快速完成此操作。
如果使用默认路径,则它应如下所示:cd"C:Program FilesOracleVirtualBox"
注意:这些说明假定你在Windows上使用VirtualBox ,如果你在VirtualBox或Linux上使用命令,你通常可以。
步骤四:找到要压缩的磁盘的路径
在命令提示符窗口中运行以下命令以查看计算机上所有虚拟硬盘的列表:VBoxManage.exe list hdds
查看列表并确定要压缩的虚拟磁盘的文件路径,假设我们要修改与名为" Windows 7"的虚拟机关联的虚拟磁盘,正如我们在下面的输出中看到的,系统上该虚拟磁盘的路径是,C:UserschrisVirtualBox VMsWindows 7Windows 7.vdi 。
第五步:压缩磁盘
要压缩磁盘,需要使用正确的命令VBoxManage.exe,只需运行以下命令,使用你找到的系统上磁盘的路径替换磁盘VDI文件的路径,如果文件的路径包含空格,请务必用引号将该文件的路径括起来。
它应该如下所示:VBoxManage.exe modifymedium disk"C:pathtodisk.vdi" --compact
例如,由于文件的路径是 C:UserschrisVirtualBox VMsWindows 7Windows 7.vdi 在示例中,我们运行以下命令:VBoxManage.exe modifymedium disk"C:UserschrisVirtualBox VMsWindows 7Windows 7.vdi" --compact
最终要节省多少空间取决于要恢复的空白空间。
还考虑删除快照
VirtualBox允许您为每个虚拟机创建快照, 它们包含创建快照时虚拟机的完整映像,允许你将它还原到以前的状态,这需要很大的空间。
要释放更多空间,请删除不使用的快照,要查看为虚拟机保存的快照,请在VirtualBox主窗口中将它选中,然后单击工具栏上"详细信息"右侧的"快照"按钮,如果不再需要快照,请在列表中右键单击它,然后选择"删除快照"以释放空间。
如果觉得《oracle vm 缩放 如何缩小VirtualBox虚拟机并释放磁盘空间》对你有帮助,请点赞、收藏,并留下你的观点哦!