虚拟机提示“not enough space”或“磁盘空间不足”,先不要重装系统;按“确认满的是哪一层清理日志快照缓存扩容虚拟磁盘或云盘扩展分区和文件系统”的顺序处理,多数场景能恢复。
提示里的“enough space”通常前面带“not”,意思是剩余空间不够,看到这句话,先分清是宿主机存储池满了,还是虚拟机内部某个分区满了,后面的动作完全不同。
虚拟机提示磁盘空间不足怎么清理?先判断“真满”还是“假满”
看提示来源:宿主机、虚拟磁盘、分区还是inode
同样一句“磁盘空间不足”,可能来自四个位置:
- 宿主机存储池:VMware、Hyper-V、VirtualBox所在磁盘快满了,新建快照、挂载磁盘都会失败。
- 虚拟磁盘文件:虚拟磁盘设为精简置备后,文件会随写入逐步变大,宿主机空间被慢慢吃掉。
- 虚拟机内部分区:、
/var、C盘某个分区到阈值,系统日志和业务写入报错。 - inode耗尽:
df -h看着还有空间,但df -i显示inode用满,常见于大量小文件、缓存目录、邮件队列。
行业共识认为,磁盘告警应先确认是容量问题还是inode耗尽问题,否则清理大文件可能白忙。
Linux用三条命令定位空间去向
先登录虚拟机,按顺序执行:
df -h df -i du -sh / 2>/dev/null | sort -rh | head -10
第一条看分区使用率,第二条看inode,第三条找根目录下占用最大的目录,继续往下钻:
du -sh /var/ 2>/dev/null | sort -rh | head
find / -xdev -type f -size +1G -exec ls -lh {} \; 2>/dev/null
lsof +L1
lsof +L1很关键,文件被删除但进程还开着,空间不会立刻释放,重启对应服务,或者确认后截断文件,空间才会回来。
常见可清理项:
- 系统日志:
journalctl --vacuum-size=200M,或检查/var/log下的大日志。 - 包缓存:
yum clean all、apt-get clean。 - 容器缓存:
docker system df先看占用,再按需docker system prune,别直接带--volumes。 - 临时目录:
/tmp、/var/tmp里长期未用的文件,确认业务不依赖再删。
Windows虚拟机先做磁盘清理和存储感知
Windows虚拟机打开“此电脑”,看哪个盘变红,右键磁盘属性磁盘清理,勾选“临时文件”“Windows更新清理”“传递优化文件”,再进设置系统存储存储感知,配置自动清理。
大文件可以用“资源监视器”的磁盘活动排序,或者PowerShell:
Get-ChildItem C:\ -Recurse -File -ErrorAction SilentlyContinue | Sort-Object Length -Descending | Select-Object -First 20 FullName,Length
清理C:\Windows\Temp、用户临时目录、IIS日志、SQL备份目录前,先确认没有业务正在写入。
快照、日志、容器缓存是常见“隐形大户”
业内专家指出,快照不是备份,长期保留会占用额外空间,VMware的快照链、Hyper-V的检查点、VirtualBox的备份文件,都可能在宿主机上悄悄膨胀,清理顺序是:先合并或删除旧快照,再扩虚拟磁盘,生产环境操作前做独立备份,并在维护窗口执行。
虚拟机磁盘空间不足怎么扩容?本地和云上路径不同
清理只能救急,业务数据持续增长就要扩容,扩容不是点一下按钮就结束,通常分三层:块设备扩容、分区扩容、文件系统扩容。
云服务器磁盘满和虚拟机磁盘满有什么区别?一张表看懂
| 对比项 | 云服务器磁盘满 | 本地虚拟机磁盘满 |
|---|---|---|
| 扩容入口 | 云控制台扩容云盘 | 虚拟化平台编辑虚拟磁盘 |
| 是否关机 | 多数支持在线扩容,分区操作仍需谨慎 | 通常需关机并先处理快照 |
| 后续动作 | growpart后扩展文件系统 |
系统内磁盘管理或分区工具扩展 |
| 计费方式 | 按云盘容量和性能计费 | 看存储采购和宿主机余量 |
| 主要风险 | 快照一致性、文件系统类型不匹配 | 宿主机存储池不足、快照链过长 |
云上扩容更像“先买容量,再让系统认容量”;本地扩容更像“先给虚拟磁盘加容量,再让分区吃掉新增空间”。
云盘扩容:控制台扩容后还要扩分区和文件系统
以常见Linux云服务器为例,控制台完成云盘扩容后,登录系统执行:
lsblk growpart /dev/vda 1 resize2fs /dev/vda1
如果文件系统是XFS,最后一条换成:
xfs_growfs /
Windows云服务器在“磁盘管理”里右键系统盘,选择“扩展卷”,按向导把未分配空间并入,注意:控制台扩容只是把块设备变大,分区和文件系统没扩展,df -h仍然显示旧容量。
本地VMware/Hyper-V扩容:先删快照再扩虚拟磁盘
VMware路径:关闭虚拟机删除或合并不需要的快照编辑虚拟机设置硬盘扩展填写新容量开机进系统扩展分区,Hyper-V路径:关闭虚拟机检查点管理里清理旧检查点编辑磁盘扩展开机后用磁盘管理或diskpart扩展。
Linux本地虚拟机扩完虚拟磁盘后,仍要growpart和resize2fs或xfs_growfs,如果分区后面还有未分配空间,也可以用fdisk或parted调整分区表,但操作前必须备份。
LVM和Windows动态磁盘的补充操作
LVM环境多一步:
pvresize /dev/vdb lvextend -l +100%FREE /dev/mapper/vg-lv resize2fs /dev/mapper/vg-lv
XFS文件系统用xfs_growfs挂载点,Windows动态磁盘或跨区卷,优先用磁盘管理查看是否支持扩展;不支持时,新建分区挂载到业务目录,比强行合并更稳。
中小企业虚拟机磁盘空间不足怎么解决?把清理做成机制
临时清理只能撑一阵,中小企业运维人手少,更要把动作变成机制。
日志轮转和监控告警怎么配
Linux用logrotate管理Nginx、应用、数据库日志,配置按天轮转、保留7到30份、压缩旧日志,关键分区设置80%告警、90%严重告警,监控不只看容量,也看inode和磁盘IO。
容器环境限制日志大小,Docker可在daemon.json设置max-size和max-file,数据库备份目录单独挂盘,不要和系统盘混用。
虚拟机磁盘扩容要花多少钱?先看计费方式再动手
云盘通常按容量和性能档位计费,包年包月与按量付费价格不同;本地虚拟机扩容则看存储采购、宿主机余量,以及是否需要停机窗口,问“虚拟机磁盘扩容要花多少钱”时,先确认三件事:扩多少GB、选哪种云盘类型、是否需要在线扩容,把这三项给云厂商或采购,报价才有可比性,不要只看单价,快照存储、备份库、跨地域复制也会产生费用。
华东地域云虚拟机磁盘空间不足怎么排查?看控制台三个入口
在华东地域部署的云虚拟机,先看控制台三个入口:云盘监控是否达到容量上限,快照策略是否保留过多历史快照,备份任务是否把临时文件写进系统盘,地域节点本身不直接决定磁盘满不满,但跨地域备份、镜像缓存、日志投递配置不当,会让系统盘多出额外占用,排查时先看监控曲线,再看快照列表,最后进系统用df -h和du -sh核对。
把顺序记牢:先定位,再清理,最后扩容
磁盘告警不是洪水猛兽,怕的是一上来删文件或重装系统,先确认满在哪一层,清理安全项,再按云上或本地路径扩容,最后把分区和文件系统扩展到位。
虚拟机磁盘空间不足Q&A:三个高频问题
Q1:虚拟机提示磁盘空间不足,删了文件为什么df还是满?
常见原因是进程仍占用已删除文件,用lsof +L1查看,重启对应服务或截断文件后空间释放,也可能是快照占宿主机空间、inode耗尽、文件系统保留块,分别用快照管理、df -i和tune2fs核对。
Q2:云盘扩容后系统里还是原来的容量,怎么办?
控制台扩容只改变块设备大小,Linux要执行growpart /dev/vda 1扩展分区,再按文件系统类型执行resize2fs或xfs_growfs;Windows要在磁盘管理里选“扩展卷”,操作前确认快照和备份可用。
Q3:快照能不能当备份长期保留?
不能,快照链会持续占用存储,合并和删除也可能影响性能;备份应放在独立存储或备份库中,并定期做恢复验证,快照适合短期回滚,备份才适合长期保留。