虚拟机磁盘满了怎么办?如何清理虚拟机磁盘空间,虚拟机磁盘满?解决方法与预防措施大揭秘!

虚拟机磁盘满了,先别急着重启或重建实例:多数情况下可以先用 df、du 定位占用,清掉日志、容器残留和“已删除但被进程占用”的文件把空间救回来;清理解决不了再走扩容,最后才是迁移数据。

虚拟机磁盘满了会怎样?先看症状再动手

磁盘满不是“突然发生”的,它通常有一串可观察的前兆,搞清症状,能省掉大量瞎猜的时间。

三类典型症状

  • 登录就开始卡:SSH 能连上但命令响应极慢,执行任何写操作都返回 No space left on device。
  • 服务静默降级:Nginx 写不了 access.log,MySQL 直接进入只读模式,应用日志里堆满 write failed。
  • 面板显示正常但业务 502:云控制台看 CPU、内存都平稳,实际是临时目录写满导致进程崩溃。

业内专家指出,生产环境中相当一部分“应用无故挂掉”的工单,最终都追到了磁盘占用这一层,所以排障顺序上,先确认磁盘状态,再怀疑代码。

第一步永远是这两个命令

df -h    # 看容量
df -i    # 看 inode

两个结果指向完全不同的病因:

现象 判断 处理方向
Use% 接近 100%,inode 正常 空间真的被占满 删文件、清日志、扩容
空间还有余量,IUse% 接近 100% inode 耗尽 找大量小文件(缓存、session、邮件队列)
刚删完大文件,df 不降 文件句柄仍被进程持有 重启对应服务或 truncate

inode 这一项经常被漏掉,一个几十 GB 的盘,可能只用了 20% 容量,却因为几十万个小文件把 inode 吃干净,症状和磁盘满一模一样。

Linux虚拟机磁盘空间不足怎么清理?按目录从大到小排

用 du 和 ncdu 快速定位占用

命令行逐层下钻,是最稳的办法:

du -sh / 2>/dev/null | sort -rh | head -20
du -sh /var/ 2>/dev/null | sort -rh | head -10

如果机器上有交互界面,装个 ncdu 会舒服很多,方向键直接浏览,不用反复敲命令,注意扫描根目录时加上 -x 参数,避免跨挂载点把整个 NFS 也扫一遍。

五类最常见的“吃盘大户”

  1. 系统日志:/var/log 下的 messages、syslog、应用日志,先用 journalctl --disk-usage 看 journal 占了多少,再 journalctl --vacuum-size=500M 收缩。
  2. 容器残留:docker system df 一眼看清镜像、容器、卷、构建缓存各占多少,docker system prune -a 清理未使用项,生产环境执行前确认没有依赖悬空镜像的容器。
  3. 被删除却未释放的文件:lsof +L1 能列出 deleted 状态仍被进程持有的文件,这是“删了没效果”的头号原因。
  4. 包管理缓存:yum clean all、apt-get clean、pip cache purge,这类缓存往往几个 GB 起。
  5. 数据库附属文件:MySQL 的 binlog、PostgreSQL 的 WAL、临时表空间,这类文件不能直接 rm,要走 PURGE BINARY LOGS 之类的官方命令。

清理时最容易踩的三个坑

  • 别用 rm 处理正在被写的日志:服务持有句柄,空间不会释放,还可能写进空洞文件,正确姿势是 truncate -s 0 文件名 或 > 文件名。
  • 别删不清楚用途的目录:/var/lib/mysql、/var/lib/docker 里的文件删错一个,恢复成本远高于扩容成本。
  • 注意软链接:du 统计的是链接本身,不是目标文件,排查时用 du -L 或先 ls -l 确认。

云服务器磁盘满了不关机怎么扩容?三条路径先选对

清理只是止血,业务在长,容量终究要加,选路径比执行命令更重要。

方案 停机需求 风险 适用场景
扩容系统盘 多数云厂商支持在线扩容,文件系统需在线扩 中,操作失误影响系统盘 系统盘被日志、应用占满
新挂数据盘 无需停机 低 数据可迁移,想长期分离系统与数据
迁移到对象存储 无需停机 低 大量冷数据、备份、图片视频

行业共识认为,系统盘和数据盘分离是长期运维的基本盘:系统盘只放操作系统和应用,数据盘单独挂载,扩容时互不牵连。

Linux LVM 扩容的标准动作

云主机扩完磁盘规格后,系统内还需要一串操作,顺序不能乱:

lsblk                      # 确认新容量已被识别
growpart /dev/vda 1        # 扩展分区(非 LVM 场景)
pvresize /dev/vda1         # 刷新物理卷
lvextend -l +100%FREE /dev/mapper/centos-root
resize2fs /dev/mapper/centos-root   # ext4
xfs_growfs /                  # xfs 用这个
df -h                      # 验证

ext4 用 resize2fs,xfs 用 xfs_growfs,用错命令会直接报错,不会损坏数据,但也扩不上去。

虚拟机磁盘扩容后文件系统没变化怎么办

这是搜索量很高的一类问题,原因通常就三个:

  • 分区表没刷新:执行 partprobe 或 partx -u /dev/vda 后重试。
  • 只扩了分区,没扩文件系统:lsblk 看到分区变大了,但 df -h 没变,说明还差最后一步 resize2fs / xfs_growfs。
  • 存在快照:VMware 场景下,虚拟机若有未合并的快照,磁盘扩展选项会被限制,需要先合并或删除快照。

VMware 的流程还要多一步:先在 vSphere 里编辑虚拟机设置扩展磁盘容量,再进系统扩分区和文件系统,Windows 虚拟机相对简单,磁盘管理里“扩展卷”即可,前提是扩展的分区后面有连续未分配空间。

临时救急的取巧办法

如果一时扩不了容,可以先把大目录软链到新挂载的盘上,或者把历史日志、备份文件搬到对象存储,这类操作能撑几天,但不该当作长期方案。

预防:把告警做在爆盘之前

清理和扩容都是被动应对,真正省心的是让它别满。

监控阈值与告警项

常见做法是把使用率 80% 设为预警、90% 设为严重,用 Prometheus 的 node_exporter 采集时,关注 node_filesystem_avail_bytes 和 node_filesystem_files_free,后者就是 inode 指标,别只盯容量,Zabbix 用户可以直接套用文件系统模板,把触发器按挂载点分开配。

日志与临时文件的自动化治理

  • 给 /etc/logrotate.d/ 下的应用日志配 daily、rotate 7、compress,别让单个日志无限增长。
  • 在 journald.conf 里设置 SystemMaxUse=1G,给 journal 一个硬上限。
  • 用 cron 定期执行容器清理,比如每周一次 docker system prune -f --filter "until=168h"。
  • 临时目录用 tmpwatch 或 tmpreaper 清理超过 N 天未访问的文件。

架构层面的几个习惯

  • 系统盘小、数据盘大,扩容时只动数据盘。
  • LVM 预留空间,方便后续在线扩。
  • 快照和备份不要放在同一块盘上,否则盘满时备份也一起丢。
  • 容器日志驱动加限制,json-file 配上 max-size=100m、max-file=3,这一条能挡掉大量容器场景的爆盘。

虚拟机磁盘满常见问题解答

虚拟机磁盘满会导致什么后果?

轻则应用日志写入失败、上传功能报错,重则数据库切只读、服务进程异常退出,甚至系统无法正常登录,部分文件系统在空间耗尽时还会产生元数据不一致,恢复时需要 fsck,所以磁盘告警应该和 CPU、内存同级对待,而不是等出事再查。

虚拟机磁盘扩容后为什么 df 看不到变化?

核心是“三层要逐层扩”:块设备层、分区层、文件系统层,云厂商控制台扩完只是第一层,系统内还要 growpart 扩分区、resize2fs 或 xfs_growfs 扩文件系统,三层缺任何一层,df -h 都不会变,中间若存在快照,扩容还会被阻止。

删掉大文件但空间没释放,怎么处理?

文件被进程打开时,删除只是移除了目录项,inode 和数据块仍被占用,用 lsof +L1 找到持有该文件的进程,重启对应服务即可释放;不方便重启时,用 truncate -s 0 清空文件内容,效果等同于释放空间,据近年来的运维实践总结,这一现象在日志和数据库临时文件上出现频率最高。

磁盘这件事,本质是“资源有上限、增长无感知”,把监控阈值、日志轮转和扩容预案三件事提前配好,比任何一次深夜救火都划算。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/929061.html

赞 (0)
上一篇 2026年11月9日 09:58
下一篇 2026年11月9日 10:14

相关推荐

  • 虚拟机迁移分为哪些类型与步骤?深度解析迁移过程及挑战,虚拟机迁移注意事项有哪些?

    虚拟机迁移本质上就是把虚拟机从一台物理宿主机搬到另一台,或调整存储位置,类型上分为冷迁移、热迁移和存储迁移三类,主流做法是热迁移,步骤可概括为准备、传输、切换、收尾四步, 下面按类型、步骤、挑战、实操顺序拆开讲,全程不绕弯子,虚拟机迁移有哪些类型?——三大主流方向虚拟机迁移不只“关机能搬”和“开着也能搬”这两种……

    2026年10月26日
    0645
  • cnzz的来路域名怎么查,cnzz来路域名

    cnzz的来路域名主要指其统计代码所在的域名(如cnzz.com、cnzz.net等),通过查看网站后台的“来路域名”或“来源统计”模块,可以精准识别访问者是从哪些外部网站跳转至当前页面的,这是优化SEO外链建设和内容分发策略的核心数据源,深度解析cnzz来路域名的构成与识别逻辑在2026年的搜索引擎优化体系中……

    2026年6月12日
    02562
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • Docker装虚拟机常见问题有哪些,报错怎么解决?

    Docker本身不负责“安装虚拟机”,大家说的“Docker安装虚拟机”多半是三种场景——在VMware或VirtualBox虚拟机里装Docker、在Docker容器里跑KVM做测试、或者在云主机上同时使用虚拟机和容器,问题通常不在Docker命令本身,而在虚拟化开关、权限、内核模块、网络和存储这五处,按场景……

    2026年11月2日
    0444
  • 主机域名最底层域是什么?顶级域名选择指南

    主机域名最底层域是互联网域名系统(DNS)架构中的基石,它直接决定了域名的归属权、解析效率以及网站的品牌可信度,最底层域,即顶级域,不仅是域名解析的入口,更是企业构建数字资产安全防线的第一道关卡, 理解并正确选择最底层域,能够显著提升网站在搜索引擎中的权重,优化用户访问体验,并从根本上降低域名被劫持或滥用的风险……

    2026年3月26日
    02092

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(2条)

  • 兔茶8372的头像
    兔茶8372 2026年11月9日 10:06

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于接近的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!

  • 幻user44的头像
    幻user44 2026年11月9日 10:06

    这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是接近部分,给了我很多新的思路。感谢分享这么好的内容!