VirtualBox安装的Linux虚拟机虚拟磁盘膨大问题处理

    经常在Windows机下安装虚拟Linux操作系做实验,为了节省硬盘空间,并最大地让虚拟机适应将来的要求,把虚拟硬盘的容量定义很大,然后设置动态分配属性使其按需扩展。虚拟硬盘的动态扩展和Oracle的表空间类似,是单方向的,也就是增大后就不能自动缩小。虚拟机使用的真实空间其实远远小于宿主机上的虚拟磁盘大小,因此需要经常性的Shrink下虚拟磁盘对节约硬盘资源意义重大。

    网上对缩小虚拟硬盘文件存储容量的方法有很多,其中比较靠谱的一种办法是在虚拟机操作系统中执行dd命令创建一个由0构成的巨大文件,然后接着将其删除,在宿主机删使用VBoxManage工具对磁盘进行压缩,这种做法不是对每类文件系统都有效,于是通过搜索整理了行之有效的办法。

1、使用System Rescue CD启动虚拟机操作系统,这里采用这类CD的原因是它适应性比别的Live CD强,其实Ubuntu Live CD也是可以的,下载地址为http://www.sysresccd.org/Download。

2、进入Live CD的操作系统后找到需要缩减的磁盘对应的设备,执行如下命令

  root@sysresccd /root % zerofree -v /dev/sda1

  root@sysresccd /root % fsck.ext2 -f /dev/sda1

  如果存在多个非swap分区,依次执行

  对swap分区执行如下命令

  dd if=/dev/zero of=/dev/sda3

3、关闭虚拟机操作系统,退出VirtualBox,在宿主机中执行

  VBoxManage.exe modifyhd --compact e:\VMs\RHEL\RHEL.vdi

 

  注:zerofree貌似无法完成包含加密文件系统的设备读写。

 

    Windows的虚拟机只需进行磁盘碎片整理,使用SDelete执行sdelete -c重启后再执行VBoxManage.exe进行磁盘压缩即可,再次就不尝试了。

你可能感兴趣的:(VirtualBox安装的Linux虚拟机虚拟磁盘膨大问题处理)