在 VMware (WM) 虚拟机上安装的 Ubuntu 22.04 分配了 20GB 磁盘,但仅使用 10GB 就显示 “空间已满“
可能原因及解决方案
- 虚拟机磁盘未实际扩容(仅调整了虚拟大小)
现象:在 VMware 里调整了磁盘大小(如 20GB → 50GB),但 Ubuntu 内部仍只识别 10GB。
原因:VMware 调整的是虚拟磁盘上限,但 Ubuntu 内的分区未扩展。
解决方案:
sudo fdisk -l # 检查实际识别的磁盘大小
如果 /dev/sda 仍显示 10GB,需在 VMware 中:
关闭虚拟机
编辑虚拟机设置 → 硬盘 → 扩展(确保调整到 20GB 或更大)
启动虚拟机,然后按照 Ubuntu 扩容磁盘步骤 调整分区。
- LVM 未正确分配空间
现象:lsblk 显示磁盘是 20GB,但 df -h 显示根分区只有 10GB。
原因:Ubuntu 默认使用 LVM,但新增空间未分配给逻辑卷(LV)。
解决方案:
检查 /dev/sda 是否显示新容量(如 50GB)。
如果仍显示旧大小,尝试:
bash
echo 1 | sudo tee /sys/block/sda/device/rescan
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv # 扩展逻辑卷
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv # 调整文件系统
检查:
df -h # 现在应该显示更大的可用空间
3. 快照或虚拟磁盘碎片占用空间
现象:VMware 虚拟机有快照,导致磁盘空间被占用。
解决方案:
删除不必要的快照(VMware → 快照管理器)。
清理虚拟机磁盘:
sudo vmware-toolbox-cmd disk shrink /
在 VMware 中整理磁盘:
关闭虚拟机 → 虚拟机设置 → 硬盘 → 碎片整理 + 压缩。
- 根分区 / 未使用全部空间
现象:fdisk -l 显示 20GB,但 df -h 只显示 10GB。
原因:分区表未扩展。
解决方案:
检查 /dev/sda 是否显示新容量(如 50GB)。
如果仍显示旧大小,尝试:
bash
echo 1 | sudo tee /sys/block/sda/device/rescan
sudo growpart /dev/sda 3 # 扩展分区(如 sda3)
sudo resize2fs /dev/sda3 # 调整文件系统
如果 growpart 不存在,安装:
sudo apt install cloud-guest-utils
5. 临时文件或日志占满空间
现象:df -h 显示 / 100%,但 du -sh * 找不到大文件。
原因:可能是已删除但仍被进程占用的文件(如日志、Docker 容器)。
解决方案:
sudo lsof | grep deleted # 查看被删除但仍占空间的文件
sudo systemctl restart syslog rsyslog # 重启日志服务释放空间
清理日志:
sudo journalctl --vacuum-size=100M # 限制日志大小
sudo apt clean # 清理包缓存
如何检查问题?
查看磁盘使用情况:
df -h # 查看挂载点使用情况
lsblk # 查看磁盘和分区大小
sudo fdisk -l # 查看物理磁盘分配
检查 LVM(如果使用):
sudo pvdisplay # 物理卷
sudo vgdisplay # 卷组
sudo lvdisplay # 逻辑卷