问题描述
虚拟机的硬盘使用空间只有20G,为什么虚拟机磁盘文件却远远大于这个值,比如40G?
原因分析
即使是动态分析空间的虚拟硬盘也会随着虚拟机的使用,空间逐渐变大,并且一般不会因为虚拟机磁盘的占用空间变小而变小。因为分配新的空间很简单,但要释放就会涉及到碎片的问题,宿主机是无法自动帮虚拟机整理碎片的。
解决方案
- virtualbox自带有磁盘文件压缩的功能
:~/VirtualMachines/Windows$ VBoxManage modifyhd Windows.vdi --compact
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
然而如果我们直接执行这条命令,效果是不明显的,vdi的占用空间还是差不多那么大,所以在此之前要整理虚拟机操作系统的磁盘碎片,以windowo为例:
-
下载磁盘整理工具:https://learn.microsoft.com/en-us/sysinternals/downloads/sdelete
-
命令行下执行操作即可
C:\Users\yusia\Downloads\SDelete>sdelete.exe c: -z
.
SDelete v2.04 - Secure file delete
Copyright (C) 1999-2019 Mark Russinovich
Sysinternals - www.sysinternals.com
.
SDelete is set for 1 pass.
Free space cleaned on C:\
1 drive cleaned.
C:\Users\yusia\Downloads\SDelete>
- 关掉虚拟机,再次在宿主机上执行VBoxManage的压缩命令,你就会发现vdi的文件大小和虚拟机的硬盘使用大小基本一致了。