彻底释放Ubuntu虚拟机磁盘空间的终极指南
长期使用Ubuntu虚拟机的开发者们都会遇到一个共同的痛点:随着系统运行和文件增删,虚拟磁盘文件(vmdk)像吹气球一样不断膨胀,即使删除了虚拟机内的文件,宿主机上的磁盘空间也得不到释放。这不仅浪费宝贵的存储资源,还会拖慢整个系统的运行效率。本文将带你深入理解虚拟机磁盘空间管理的原理,并提供一套完整的解决方案。
1. 为什么虚拟机磁盘会"虚胖"?
虚拟机磁盘空间无法自动回收的根本原因在于虚拟磁盘的工作机制。当你在VMware中创建虚拟机时,通常会选择"动态分配"磁盘空间。这种模式下,虚拟磁盘文件(vmdk)最初很小,随着虚拟机内数据的增加而逐渐扩大。但问题在于——它只会增大,不会自动缩小。
关键机制解析:
- 写时分配:动态磁盘采用"按需分配"策略,只有真正写入数据时才会占用物理空间
- 删除≠释放:在虚拟机内删除文件只是标记空间为"可复用",不会主动归还给宿主机
- 碎片化问题:频繁的文件增删会导致磁盘碎片,进一步降低空间利用率
这种现象在长期使用的开发环境中尤为明显。比如我的一个Java开发环境虚拟机,初始分配80GB,经过半年使用后vmdk文件膨胀到120GB,即使清理了大量临时文件,宿主机空间依然被占用。
2. 虚拟机内部的准备工作
在开始真正的空间回收前,我们需要先在Ubuntu虚拟机内做好准备工作。这一步至关重要,直接影响到后续的压缩效果。
2.1 清理无用文件
首先登录Ubuntu虚拟机,执行以下清理操作:
# 清理APT缓存
sudo apt clean
# 删除旧内核版本(保留当前版本)
sudo apt autoremove --purge
# 清理日志文件
sudo journalctl --vacuum-time=7d
sudo rm -rf /var


333

被折叠的 条评论
为什么被折叠?



