VMware Ubuntu 虚拟机磁盘已扩容,为什么还是无法启动?(磁盘100%占满解决方案)
VMware Ubuntu 虚拟机磁盘已扩容,为什么还是无法启动?(磁盘100%占满解决方案)
前言
最近遇到了一个比较坑的问题。
VMware 中的 Ubuntu 24.04 虚拟机由于长期开发,磁盘被写满了。
于是我第一反应就是:
VMware → 设置 → 硬盘 → 扩展(Expand)磁盘容量
例如:
40GB → 50GB本以为重启就好了,结果却发现:
[FAILED] Failed to start gdm.service - GNOME Display Manager.图形界面始终无法启动。
经过排查发现:
VMware 扩容成功 ≠ Ubuntu 分区自动扩容。
本文记录完整解决过程。
一、故障现象
启动 Ubuntu 后停留在:
[FAILED] Failed to start gdm.service - GNOME Display Manager.无法进入桌面。
但是:
Ctrl + Alt + F3可以进入 tty 登录界面。
说明:
- Linux 内核正常
- 根分区正常挂载
- systemd 正常启动
- 只是图形界面启动失败
二、原因分析
进入终端以后查看磁盘:
df-h输出:
Filesystem Size Used Avail Use% /dev/sda2 40G 39G 0 100%可以看到:
根分区已经100%满了即使 VMware 已经扩容,
Ubuntu 仍然认为:
/ 40GB因为:
VMware 只是扩大了虚拟硬盘(VMDK),并没有自动扩大 Linux 分区。
三、确认 VMware 是否扩容成功
查看磁盘:
lsblk例如:
NAME SIZE sda 50G ├─sda1 1M └─sda2 40G这里可以看到:
整个硬盘:
50G但是:
sda2 只有40G说明:
新增的:
10G仍然没有分配给系统。
四、为什么图形界面启动失败?
Ubuntu Desktop 的图形界面(GDM)启动时需要:
- 创建临时文件
- 创建 Socket
- 写日志
- 创建缓存
而:
/ 100%以后:
任何写入都会失败。
所以最终出现:
Failed to start gdm.service实际上:
不是 GDM 坏了,而是磁盘没有可用空间。
五、第一步:进入终端
启动以后按:
Ctrl + Alt + F3登录自己的账号。
六、查看磁盘使用情况
查看整体:
df-h查看一级目录大小:
sudodu-xh/ --max-depth=12>/dev/null|sort-hr例如:
39G / 23G /home 5.1G /var 5.1G /usr说明:
真正占空间的是:
/home而不是:
/var/log或者:
Docker七、扩容 Linux 分区
Ubuntu 不会自动使用 VMware 新增加的空间。
需要手动扩容。
安装工具:
sudoaptinstallcloud-guest-utils扩展第二个分区:
sudogrowpart /dev/sda2扩展 ext4 文件系统:
sudoresize2fs /dev/sda2再次查看:
df-h结果:
Filesystem Size /dev/sda2 50G说明扩容完成。
八、如果磁盘100%,无法安装 growpart 怎么办?
因为:
100%以后:
甚至:
apt install都有可能失败。
此时建议:
先释放一点空间。
例如:
清理 apt 缓存:
sudoaptclean清理 journal:
sudojournalctl --vacuum-size=100M或者查看:
sudodu-xh/home --max-depth=2|sort-hr删除一些不需要的大文件。
只要腾出几百 MB 即可继续操作。
九、为什么 Ubuntu 不自动扩容?
很多人都有这个疑问。
例如:
原来:
40G ┌──────────────┐ │ sda2 40G │ └──────────────┘VMware 扩容以后:
50G ┌──────────────┬──────────┐ │ sda2 40G │ 10G 空闲 │ └──────────────┴──────────┘Ubuntu 无法判断:
新增的:
10G究竟应该:
- 扩给根目录
- 新建数据盘
- 建立新的分区
- 留给 LVM
所以:
Linux 默认不会自动修改分区。
十、总结
整个问题其实可以归纳成一句话:
VMware 扩容的是虚拟硬盘,而不是 Ubuntu 分区。
因此:
VMware Expand ↓ 虚拟磁盘变大 ↓ Ubuntu 分区大小不变 ↓ 根分区仍然100% ↓ GDM启动失败正确流程应该是:
VMware 扩容 ↓ Ubuntu 查看磁盘(lsblk) ↓ growpart 扩展分区 ↓ resize2fs 扩展 ext4 ↓ df -h 验证 ↓ 重启常用命令汇总
# 查看磁盘使用率df-h# 查看磁盘分区lsblk# 查看磁盘详细信息sudofdisk-l# 查看一级目录占用sudodu-xh/ --max-depth=12>/dev/null|sort-hr# 清理 apt 缓存sudoaptclean# 清理 journal 日志sudojournalctl --vacuum-size=100M# 安装扩容工具sudoaptinstallcloud-guest-utils# 扩展分区sudogrowpart /dev/sda2# 扩展 ext4 文件系统sudoresize2fs /dev/sda2踩坑总结
- 不要认为 VMware 扩容后 Ubuntu 会自动识别新增空间。
df -h和lsblk是排查磁盘问题最重要的两个命令。- 出现
Failed to start gdm.service时,不一定是图形系统损坏,很多情况下只是根分区已满。 - 开发环境建议一开始就分配 80~100GB 以上磁盘空间,避免频繁扩容。
这套方法适用于VMware + Ubuntu Desktop(普通 ext4 根分区,非 LVM)的磁盘占满导致无法启动场景,对 VirtualBox 等虚拟机平台也具有参考价值。
