温馨提示×

ubuntu虚拟机磁盘空间不够怎么办

小樊
35
2025-12-24 07:44:52
栏目: 云计算

Ubuntu 虚拟机磁盘空间不足的完整处理指南

一、先快速释放空间以恢复系统

  • 查看占用:执行 df -h 确认哪个分区已满(如 //home),再用 du -sh /path 定位大目录。
  • 清理常见垃圾:
    • 包管理缓存:sudo apt cleansudo apt autoremove
    • 日志与缓存:sudo journalctl --vacuum-time=7d、清理 ~/.cache
  • 图形界面进不去时:
    • 进入恢复模式:重启,长按 ShiftGRUB → 选择 Recovery ModeRoot Drop to root shell;或按 Ctrl+Alt+F2 到 TTY 执行清理。
    • 必要时删除无用大文件(如构建产物、镜像、旧日志),再 reboot
  • 若曾用工具删除过大量文件导致索引未释放,可用 e2fsck -f -y /dev/sdaX 修复文件系统后再启动。
    以上步骤能在不扩容的情况下先恢复系统可用性与登录能力。

二、扩容流程总览

  • 步骤顺序:
    1. 在宿主机上扩展虚拟磁盘容量(关机操作)。
    2. 在客户机里识别新增空间(分区表/PV 扩容)。
    3. 扩展分区(非 LVM 用 growpart/parted;LVM 则扩展 PV → LV)。
    4. 扩展文件系统(resize2fs/xfs_growfs)。
  • 常用命令一览:
    • 非 LVM:
      • 分区扩容:growpart /dev/sda 2parted /dev/sda resizepart 2 100%
      • 文件系统:resize2fs /dev/sda2(ext4);如为 xfsxfs_growfs /mount/point
    • LVM:
      • 识别新增空间:growpart /dev/vda 2(若底层是整盘 PV)
      • 扩展 PV:pvresize /dev/vda2
      • 扩展 LV:lvextend -l +100%FREE /dev/mapper/vg-xxx
      • 扩展文件系统:resize2fs /dev/mapper/vg-xxx(ext4)或 xfs_growfs /(xfs)
  • 不同虚拟化平台的关键操作:
    • VMware Workstation/VirtualBox:关机 → 设置 → 硬盘 → 扩展;启动后用 gparted 移动/调整分区。
    • KVM/QEMU:宿主机执行 qemu-img resize image.qcow2 +20G;客户机内 growpart 与 LVM/文件系统扩容。
      以上为主流平台与两类分区方案的通用扩容路径。

三、按分区方案给出可直接复制的命令

  • 场景 A:非 LVM 的 MBR 单分区(常见为 /dev/sda1
    1. 宿主机扩容虚拟磁盘后启动客户机,安装分区工具:sudo apt-get install gparted
    2. 启动 sudo gparted,禁用并删除 swap(如 /dev/sda5),删除扩展分区(如 /dev/sda2),将 /dev/sda1 向右扩展到未分配空间,末尾留出 1–2G 新建扩展分区与 swap
    3. 应用变更后启用 swap:sudo swapon /dev/sda5;如需开机自动挂载,编辑 /etc/fstab 添加:/dev/sda5 swap swap defaults 0 0
    4. 若未使用 gparted,也可用 growpart /dev/sda 1 后执行 resize2fs /dev/sda1
  • 场景 B:LVM(典型路径 /dev/mapper/ubuntu–vg-ubuntu–lv
    1. 宿主机扩容后,客户机先扩展底层分区:growpart /dev/vda 2
    2. 扩展 PV:pvresize /dev/vda2
    3. 扩展 LV:lvextend -l +100%FREE /dev/mapper/ubuntu–vg-ubuntu–lv
    4. 扩展文件系统:resize2fs /dev/mapper/ubuntu–vg-ubuntu–lv(ext4);如为 xfsxfs_growfs /
  • 场景 C:GPT 表不一致(扩容后可能出现 GPT PMBR size mismatch
    在客户机执行:sudo parted -l,提示时选择 Fix,再继续分区与文件系统扩容。
    以上命令覆盖 VMware/VirtualBox 与 KVM 的常见 LVM/非 LVM 场景。

四、常见问题与排错

  • 未分配空间不连续导致无法扩展:在 gparted 中先移动分区,使未分配空间与目标分区相邻,再进行扩容。
  • 扩容后文件系统未变化:确认已对正确的对象执行扩容(如先扩 PV/LV,再扩 文件系统;ext4 用 resize2fs,xfs 用 xfs_growfs)。
  • 开机出现 grub rescue
    • 查找正确分区:ls (hd0,msdosX)/boot/grub
    • 设置并进入:set root=(hd0,msdosX)set prefix=(hd0,msdosX)/boot/grubinsmod normalnormal
    • 进入系统后修复引导:sudo update-grubsudo grub-install /dev/sda
  • 图形界面因满盘无法进入:先按“一”清理出几百 MB 空间,再重启进入系统完成扩容。
    以上为扩容过程中高频风险点与修复方法。

五、数据安全与回退建议

  • 操作前务必创建快照/备份(宿主机层或导出镜像);KVM 场景可先基于原盘创建 backing file 演练:qemu-img create -b ubuntu.qcow2 -F qcow2 -f qcow2 ubuntu-test.qcow2
  • 分区与 LVM 操作存在数据风险,关键业务环境建议在维护窗口进行,并准备回滚方案。
  • 扩容后使用 df -hlsblkvgs/lvs/pvs 复核容量是否生效。
    这些做法能显著降低扩容失败带来的影响。

0