VirtualBox虚拟机动态分配的虚拟磁盘用久了以后会变得非常大,相当占用空间。可以采用将磁盘闲置空间重新清零的方法,还原多余的占用空间。
虚拟机中操作
第一步是采用zerofree(Linux)或SDelete(Windows)工具在虚拟机中将磁盘空闲区域清零:
Linux
在Linux虚拟机中,先安装zerofree,以Debian为例,执行 apt-get install zerofree
命令安装。
安装完成后,需要重启虚拟机机器进入Recovery模式,操作过程如下。
开机时进入Advanced options:
在Advanced模式中选择recovery mode:
在Recovery模式下登录后,依次执行以下命令清除/dev/sda1设备的闲置空间:
1 | busybox mount -o ro,remount /dev/sda1 |
其他磁盘设备同理。
Windows
如果是Windows虚拟机,可以在https://docs.microsoft.com/zh-cn/sysinternals/downloads/sdelete 下载微软官方的SDelete工具。
下载后解压并且进入SDelete目录,在CMD中运行SDelete.exe,并提供参数,例如清理C盘,则运行以下命令:
1 | SDelete.exe -z C: |
主机中操作
等待上述过程执行完成以后,可以进入第二步,在主机中回收虚拟磁盘闲置的空间:
进入Virtualbox的虚拟机目录,这里以一台Debian虚拟机为例,在目录中运行以下命令:
1 | "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd Debian.vdi --compact |
C:\Program Files\Oracle\VirtualBox\是Virtualbox在Windows 64位系统中的默认安装位置,如果安装位置与此不同,修改即可。
等待执行到100%,即可完成磁盘回收。
磁盘回收的过程中有效数据不会丢失,可以放心操作。