linux虚拟机磁盘空间不足时,优先清理日志、旧内核、包缓存和临时文件,多数情况下能释放相当一部分空间,不必急着扩容,本指南覆盖从定位占用到执行清理的完整路径。
无论你用VMware Workstation、VirtualBox还是简米云ECS,linux虚拟机清理的核心思路一致:先看全局,再定位大目录,最后分类型清理,下面按实际场景拆开讲。
Linux虚拟机磁盘空间不足怎么清理?先定位三大占用源
很多开发机和测试机跑上几个月后,根分区使用率会悄悄升到80%甚至更高,此时不要直接考虑扩盘,先花几分钟定位空间都被谁吃掉了。
用df和du三步定位占用
先看整体磁盘使用情况:
df -h
如果根分区 使用率偏高,继续按目录排序:
sudo du -x -h --max-depth=1 / 2>/dev/null | sort -rh | head -n 20
这条命令会列出根目录下一级目录的占用排名,多数情况下,排名靠前的是 /var、/usr、/home 和 /tmp。
继续深入查看 /var:
sudo du -x -h --max-depth=1 /var 2>/dev/null | sort -rh | head -n 20
到这里基本能判断是日志、缓存还是数据库文件占了大头,定位完成后,再决定清理哪些内容。
VMware Linux虚拟机清理磁盘:从日志到旧内核的操作清单
VMware Linux虚拟机清理磁盘场景里,最常见的问题是日志文件和旧内核长期堆积,虚拟桌面或测试环境尤其严重,因为很多人从不配置日志轮转,也不删除旧内核。
清理系统日志
系统日志通常位于 /var/log,先查看日志目录体积:
sudo du -sh /var/log
如果发现体积异常,优先使用systemd自带工具清理journal日志:
sudo journalctl --vacuum-size=200M sudo journalctl --vacuum-time=7d
这两条命令分别按大小和时间清理systemd日志,适合多数Linux发行版。
对于普通日志文件,可以用 find 删除较旧的压缩日志:
sudo find /var/log -type f -name ".gz" -mtime +15 -delete
删除前建议确认文件不再需要,生产环境可先用 ls 预览,再执行删除。
清理旧内核和头文件
内核升级后,旧内核会继续占用 /boot 和 /usr/src 空间,先查看当前内核版本:
uname -r
然后列出已安装内核。
Debian/Ubuntu系统:
dpkg --list | grep linux-image
CentOS/RHEL系统:
rpm -qa | grep ^kernel
确认当前内核后,删除旧版本,Ubuntu可以一条命令自动清理:
sudo apt autoremove --purge
CentOS/RHEL需要先安装 yum-utils,再执行:
sudo package-clean --oldkernels --count=1
这条命令只保留当前内核和最近一个旧内核,适合多数场景。
清理包管理缓存
包管理器的下载缓存也会占用不少空间,不同发行版命令略有差异。
Debian/Ubuntu:
sudo apt clean
CentOS/RHEL:
sudo yum clean all
Fedora/RHEL新版本:
sudo dnf clean all
这些命令不会影响已安装软件,只是删除下载过的安装包。
linux虚拟机清理缓存命令:一条命令释放内存与交换
很多人把“磁盘清理”和“缓存清理”混在一起,其实linux虚拟机清理缓存命令主要针对内存中的page cache、dentries和inodes,这类缓存不会直接占用磁盘,但会让可用内存看起来偏少,有时也会影响性能判断。
什么是page cache和dentry
Linux会把读写过的文件内容缓存到内存,加速后续访问。free -h 中的 buff/cache 就是这部分,它本身不坏,但在虚拟机内存压力较大时,手动回收可以快速改善内存指标。
一条命令释放缓存
先同步数据,再回收:
sync echo 3 | sudo tee /proc/sys/vm/drop_caches
或者用sysctl:
sudo sysctl vm.drop_caches=3
数字含义:
1:只释放page cache2:只释放dentries和inodes缓存3:释放page cache、dentries和inodes
执行后可以再次查看:
free -h
buff/cache数值会明显下降,这个过程不会删除磁盘上的任何数据,只是让系统重新按需加载。
什么时候需要清理缓存
多数情况下不需要手动清理,Linux会自动管理,但在虚拟机做性能测试前,或者长期运行后内存被缓存占满时,清理一次可以让基线更干净,行业共识认为,缓存回收不是日常必需操作,更适合作为应急处理或性能基线重置手段。
Linux虚拟机扩容和清理对比:什么时候删,什么时候扩
不少运维新手遇到磁盘告警第一反应是扩容,但清和扩是两条不同路径,成本差别很大,理解linux虚拟机扩容和清理对比,能避免花冤枉钱和浪费时间。
| 维度 | 清理 | 扩容 |
|---|---|---|
| 适用场景 | 日志、缓存、旧内核堆积 | 业务数据持续增长 |
| 成本 | 时间成本低,无额外费用 | 需要停机或在线扩容,云盘可能产生费用 |
| 风险 | 误删文件可能影响服务 | 扩容过程一般较安全 |
| 效果 | 恢复空间有限但立竿见影 | 容量上限得到实质提升 |
| 维护价值 | 可纳入定期维护 | 属于一次性的容量调整 |
清理适合短期堆积问题,扩容适合真实数据增长,判断标准很简单:清理后空间仍然不足,或者业务本身在持续产生新数据,就考虑扩容。
扩容前先确认文件系统类型
本地虚拟机常用ext4或xfs,云主机扩容盘后需要在系统内扩展文件系统。
查看文件系统类型:
df -Th
ext4使用 resize2fs,xfs使用 xfs_growfs,这些命令需要配合分区工具先扩展分区,操作前最好创建快照。
简米云Linux服务器清理磁盘空间:云主机与本地虚拟机差异
简米云Linux服务器清理磁盘空间时,不能完全照搬本地VMware那套,云主机有快照、云盘计费和在线扩容等不同机制。
先看云监控和磁盘使用率
登录简米云控制台,先查看云监控中的磁盘使用率曲线,如果使用率是持续爬升,多半是业务数据增长;如果突然升高,可能是日志或临时文件激增。
清理前建议先创建快照
云主机的快照比本地虚拟机快照更方便,可以作为回滚依据,清理前花几分钟创建快照,能避免误删后无法恢复,快照本身会产生少量存储费用,通常按容量和时长计费。
云盘扩容比本地虚拟机更灵活
简米云云盘支持在线扩容,不需要长时间停机,扩容后需要在系统内执行分区扩展和文件系统扩展,具体路径是:
- 控制台扩容云盘容量
- 登录系统执行
growpart扩展分区 - 执行
resize2fs或xfs_growfs扩展文件系统
整个过程比本地虚拟机扩盘更平滑,但扩容后会产生新的云盘容量费用,因此先清理、再扩容,是更经济的选择。
清理Linux虚拟机的标准操作顺序
把前面的动作串起来,形成一套可复用的linux虚拟机清理顺序,以下步骤按风险从低到高排列。
-
创建快照或备份关键配置
本地虚拟机用软件快照,云主机用云盘快照,至少把/etc关键配置打包备份。 -
查看磁盘整体使用率
df -h
-
定位大目录
sudo du -x -h --max-depth=1 / 2>/dev/null | sort -rh | head -n 20
-
优先清理可恢复内容
包括/tmp、包缓存、journal日志,这类内容删除后基本不影响系统运行。 -
清理旧内核和未使用的依赖包
执行apt autoremove --purge或package-clean --oldkernels --count=1。 -
检查被进程占用但已删除的文件
sudo lsof +L1 | grep deleted
如果发现大量已删除但未释放空间的进程,重启对应服务即可回收空间。
-
再次查看磁盘使用率
确认清理效果,如果仍不足,再考虑扩容。
业内专家指出,清理动作最好在低峰期进行,尤其是涉及重启服务的步骤,避免影响在线业务。
linux虚拟机清理不是一次性动作,把日志轮转、旧内核清理和包缓存清理纳入维护周期,可以让虚拟机长期保持在健康容量范围内,遇到磁盘告警时,先清理再扩容,多数情况下成本最低、效果最直接。
Q&A:linux虚拟机清理常见问题
linux虚拟机磁盘空间不足怎么快速清理?
优先清理 /tmp、旧日志和包缓存,可以执行:
sudo journalctl --vacuum-size=200M sudo apt clean
这两条命令通常能快速回收一部分空间。
linux虚拟机清理缓存会影响正在运行的程序吗?
不会直接影响正在使用的内存页,drop_caches只是回收未使用的文件缓存,程序需要时系统会重新从磁盘加载,短暂出现IO升高是正常现象。
VMware Linux虚拟机清理磁盘后空间没有释放怎么办?
很可能是文件被某个进程占用但已经被删除,用 sudo lsof +L1 | grep deleted 查看这类文件,找到对应进程后重启该服务或进程,磁盘空间就会实际释放。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/661936.html





