Ubuntu虚拟机磁盘空间告急?手把手教你使用GParted无损扩容

张开发
2026/5/8 0:35:39 15 分钟阅读
Ubuntu虚拟机磁盘空间告急?手把手教你使用GParted无损扩容
1. 为什么你的Ubuntu虚拟机总是不够用刚开始用Ubuntu虚拟机时我也觉得20GB磁盘空间绰绰有余。直到某天终端突然提示No space left on device编译项目时直接报错才发现系统盘已经爆满。这种情况在开发环境中特别常见——安装几个IDE、下载几个数据集、再跑几个Docker容器空间就像被黑洞吞噬一样消失得无影无踪。虚拟机磁盘空间不足的典型症状包括系统运行明显变慢、软件无法更新、无法创建新文件甚至导致关键服务崩溃。我遇到过最棘手的情况是连apt都因为空间不足而无法运行想装清理工具都装不了。这时候常规的清理临时文件、卸载不常用软件都只是杯水车薪真正的解决方案是给虚拟机磁盘扩容。2. 准备工作安全扩容的必备条件2.1 检查当前磁盘状态动手前先用这几个命令摸清家底df -h # 查看各分区使用情况 lsblk # 查看磁盘和分区结构 sudo fdisk -l # 查看详细分区信息以我的Ubuntu 20.04虚拟机为例输出显示根分区(/dev/sda1)已经用了98%而交换分区却占了4GB空间。这种情况就非常适合通过调整分区大小来解决问题。2.2 创建完整的系统快照扩容分区是有风险的操作我强烈建议先在VMware中创建完整快照。有次我手滑误操作导致系统无法启动就是靠快照5分钟恢复如初。具体操作关闭Ubuntu虚拟机在VMware界面右键虚拟机 → 快照 → 拍摄快照命名如Before_Resize_Partition并添加描述注意快照和备份不同它依赖原始磁盘文件。如果原始vmdk文件损坏所有快照都会失效。对关键数据还是要单独备份。3. 扩容实战从VMware到GParted全流程3.1 第一步扩展VMware虚拟磁盘很多人以为在虚拟机设置里调大磁盘容量就完事了其实这只是让硬盘变大还没给房间重新分配空间。具体步骤关闭虚拟机电源右键虚拟机 → 设置 → 硬盘 → 扩展输入新容量建议至少40GB确认扩展这里有个坑要注意如果虚拟机有快照需要先删除所有快照才能扩展磁盘。我就曾经被这个坑耽误了半小时。3.2 第二步安装GParted分区神器GParted是Linux下最直观的图形化分区工具比命令行工具友好多了。安装命令sudo apt update sudo apt install -y gparted如果遇到apt无法运行空间不足的连锁反应可以尝试先清理sudo apt clean sudo apt autoremove3.3 第三步调整分区大小的艺术启动GParted后你会看到类似这样的分区结构/dev/sda1 (ext4) - 系统根分区/dev/sda2 (extended)/dev/sda5 (swap)调整分区的正确顺序是右键swap分区 → 交换空间 → 禁用右键sda5 → 调整大小/移动 → 缩小到合适大小右键sda2 → 调整大小/移动 → 扩展到未分配空间右键sda1 → 调整大小/移动 → 扩展到全部可用空间最后别忘了重新启用swap分区关键技巧调整分区大小时GParted需要卸载对应分区。因此最好从Live CD启动GParted这样所有分区都可以调整。4. 那些年我踩过的坑与解决方案4.1 扩容后系统无法启动有次扩容后GRUB引导失败直接进入救援模式。解决方法是用Live CD启动后重装GRUBsudo mount /dev/sda1 /mnt sudo grub-install --root-directory/mnt /dev/sda sudo update-grub4.2 分区表显示异常当看到分区表不符合物理磁盘大小警告时别慌。在GParted菜单选择视图 → 刷新设备通常能解决。如果不行试试sudo parted /dev/sda resizepart 分区号 新结束点4.3 文件系统错误调整大小后偶尔会遇到文件系统错误这时需要手动修复sudo fsck -f /dev/sda15. 进阶技巧让磁盘空间更耐用5.1 使用LVM逻辑卷管理专业用户建议从一开始就用LVM它让扩容变得无比简单sudo pvresize /dev/sda1 # 扩展物理卷 sudo lvextend -l 100%FREE /dev/ubuntu-vg/ubuntu-lv # 扩展逻辑卷 sudo resize2fs /dev/ubuntu-vg/ubuntu-lv # 调整文件系统5.2 自动清理脚本我定期运行的清理脚本#!/bin/bash sudo apt clean sudo journalctl --vacuum-size200M sudo rm -rf /tmp/* docker system prune -f # 如果是Docker用户5.3 监控磁盘空间在~/.bashrc中添加这个函数随时检查空间ds() { echo Disk space usage: df -h | grep -v snap echo \nLargest directories in $1: du -h --max-depth1 ${1:-.} | sort -hr | head -n 10 }现在只需要输入ds就能看到磁盘使用情况和当前目录下最大的10个文件夹。这个习惯让我提前发现了多次潜在的空间危机。

更多文章