宿主机磁盘空间耗尽是虚拟机被系统pause的最常见根因,需登录宿主机执行df -h检查虚拟磁盘所在分区使用率,若≥95%且可用空间趋近于0,再结合ps查看qemu/vmware进程是否处于d状态及dmesg中no space left on device报错即可确认。

虚拟机被系统 Pause 挂起,且确认不是手动暂停、不是资源超限(CPU/内存充足)、不是网络中断,那大概率是宿主机磁盘空间耗尽触发了底层 I/O 阻塞——尤其是使用稀疏磁盘(thin-provisioned disk)时,这种“瞬间挂起”特别典型:虚拟机还在跑,但所有磁盘写操作卡死,VMware 或 QEMU 进程直接被内核挂起(state D),表现为鼠标不动、SSH 无响应、串口日志停在某一行。
怎么确认是宿主机磁盘满导致的 Pause
关键看宿主机,不是看虚拟机内部。虚拟机里 df -h 可能还显示有空间,因为它看到的是虚拟磁盘的逻辑容量,而宿主机上那个 .vmdk 或 .qcow2 文件已经把物理磁盘撑爆了。
- 登录宿主机(不是虚拟机!),运行
df -h,重点看存放虚拟磁盘文件的分区,比如/var/lib/libvirt/images/或C:\Users\XXX\Documents\Virtual Machines\所在盘符 - 如果该分区
Use%≥ 95%,且Avail接近 0(特别是只有几 MB 剩余),基本就是它了 - 检查虚拟机进程状态:
ps aux | grep -E "(vmware|qemu)",若看到状态列为D(uninterruptible sleep),说明正卡在磁盘 I/O 上,无法被信号中断 - 查内核日志:
dmesg -T | tail -20,留意是否有Buffer I/O error、writeback: failed to write或no space left on device类似报错
为什么稀疏磁盘会让问题来得又快又隐蔽
稀疏磁盘(如 VMware 的 thin 模式、KVM 的 qcow2)只在实际写入数据时才分配物理空间。这意味着:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 虚拟机里
dd if=/dev/zero of=/tmp/bigfile看似在“慢慢写”,其实宿主机磁盘可能在最后一秒突然爆掉 -
df -h在虚拟机内永远看不到真实压力,它只反映虚拟磁盘的逻辑剩余空间 - 日志轮转、journalctl 自动归档、数据库 WAL 写入等后台行为,都可能在你没注意时触发“临界点”
- 某些 hypervisor(如 VMware Workstation 17+)默认启用“自动清理磁盘空间”策略,当宿主机空闲空间低于阈值(如 4GB),会直接阻塞所有写请求,表现就是虚拟机静默挂起
恢复虚拟机前必须先释放宿主机空间
别急着在虚拟机里删文件——它根本写不出去。必须先在宿主机上腾出至少 2–4GB 空间,否则任何操作都无效。
- 快速释放法:清空宿主机上的大日志、临时镜像、旧备份,例如
rm -f /var/log/journal/*.journal、docker system prune -af - 慎用
truncate:如果知道哪个大文件可删,用truncate -s 0 /path/to/big.log比rm更安全(不重建 inode,避免误删正在写的文件) - 不要
rm正在被虚拟机使用的.vmdk或.qcow2——这会导致虚拟机无法恢复,甚至损坏 - 腾出空间后,等 10–30 秒,再检查虚拟机进程是否从
D状态恢复为R或S;多数情况下它会自己继续运行
长期预防:监控不能只盯虚拟机内部
运维最容易忽略的一点:监控脚本只部署在虚拟机里,却从不检查宿主机磁盘。结果就是告警永远晚一步。
- 在宿主机加一条定时任务:
0 * * * * df -h | grep -E "(9[5-9]%|100%)" | mail -s "HOST DISK CRITICAL" admin@example.com - 对 VMware,启用
vmware-toolbox-cmd stat disk并配合宿主机路径映射,做双向校验 - 生产环境禁用稀疏磁盘,改用厚置备(thick provisioned),虽然初始占空间多,但杜绝“突发性挂起”
- 给宿主机磁盘预留硬性下限:比如 500GB 磁盘,强制保留 ≥ 20GB 空闲,用
chattr +d锁定一个占位文件(仅 ext4 支持)防止被意外清空
稀疏磁盘的“省空间”本质是把风险后移——它不解决容量问题,只是延迟暴露。真正可靠的方案,永远是让监控触达物理层,而不是相信虚拟机里看到的 df 输出。










