一、背景原因
在建立虚拟机时,一般都会选择动态分配存储空间的选项,也就是实际占用的磁盘空间会随着虚拟机占用的空间增大而增大。这样做的好处是可以节省磁盘空间,对于虚拟机的拷贝也相对方便。但是随着虚拟机的使用,会发现实际虚拟镜像文件越来越大,但是虚拟机内部实际占用的空间要比虚拟镜像文件要小很多,这个就是磁盘碎片,类似于内存碎片。
二、回收磁盘空间-虚拟机部分
如果使用VMware虚拟机的同学可以直接在管理界面进行磁盘的回收,这个还是比较方便的。而对于Vbox来说还没有这个图形界面操作的方法。需要使用命令行的方式进行操作。其回收的原理是检测磁盘空间内容为0的空间进行回收。
对于虚拟机的操作(虚拟机为Linux系统)
这里针对虚拟机为Linux系统的情况,Windows环境可以根据原理使用工具解决。既然原理是将磁盘写0,所以Linux环境需要运行下面两个命令来将没有使用的磁盘块写0。
dd if=/dev/zero of=/empty
rm -f /empty
注意:linux下如果有多个分区需要在每个分区都要创建空文件然后删除。
运行完指令之后需要关闭虚拟机然后在宿主机进行磁盘空间的回收。
三、回收磁盘空间-宿主机部分
回到宿主机需要找到Vbox的安装目录一般路径为D:\Program Files\Oracle\VirtualBox
,然后右键在终端打开,运行.\VBoxManage.exe modifyhd "E:\VirtualBox VMs\Centos7\Centos7\Centos7.vdi" --compact
这里需要修改为自己的虚拟机镜像地址。
-EOF
版权属于:redhat
本文链接:https://blog.zhangshuocauc.cn/index.php/archives/6/
本站采用“知识共享署名 - 非商业性使用 - 相同方式共享 4.0 中国大陆许可协议” 进行许可 您可以转载本站的技术类文章,转载时请以超链接形式标明文章原始出处,Thank you.