欢迎光临
我们一直在努力

虚拟机 Ubuntu 磁盘扩容完全指南:从原理到实践,一步到位

一、为什么要写这篇文章?

在使用虚拟机进行开发、测试或学习的过程中,磁盘空间不足是几乎每个开发者都会遇到的问题。初始分配的 20GB、40GB 磁盘空间,随着系统更新、Docker 镜像堆积、项目文件增多,很快就会捉襟见肘。

很多同学在面对扩容问题时感到困惑:

  • ✅ 虚拟机设置里扩展了磁盘,为什么 df -h 看不到变化?
  • ❌ 扩容会不会丢失数据?
  • ❌ 快照和扩容有什么关系?

二、概念

2.1 虚拟磁盘的两层结构

要理解扩容的本质,首先需要明白虚拟机磁盘的 “两层结构”:

┌─────────────────────────────────────────────┐
│ 第一层:虚拟化层(Hypervisor) │
│ VMware / VirtualBox 管理的虚拟磁盘文件(.vmdk) │
│ ← 这一步是 "扩展物理边界" │
└─────────────────────────────────────────────┘

┌─────────────────────────────────────────────┐
│ 第二层:操作系统层(Guest OS) │
│ Ubuntu 的分区表和文件系统 │
│ ← 这一步是 "重新分区 & 扩容文件系统" │
└─────────────────────────────────────────────┘

关键认知:

  • 在虚拟机设置中点击"扩展",只是增大了第一层的虚拟磁盘文件
  • 必须进入操作系统内部,对第二层进行重新分区,才能让新空间生效
  • 这就是为什么很多人扩展后用 df -h 查看发现空间没变的原因!

2.2 扩容操作的三大阶段

阶段操作位置核心动作风险等级
🟢 准备阶段 虚拟机管理界面 备份、清理快照
🟡 扩展阶段 虚拟机设置 → 硬盘 → 扩展 增大虚拟磁盘容量
🔵 分区阶段 Ubuntu 系统内 重新分区、调整文件系统

三、前置准备

3.1 删除所有快照

快照(Snapshot) 是虚拟机在某个时间点的状态保存。扩容前必须删除所有快照,原因如下:

  • 快照依赖的是差异磁盘(differential disk) 机制,扩容操作需要修改基础磁盘文件
  • 存在快照时,扩容操作可能失败或导致快照数据损坏
  • 某些虚拟化软件在存在快照时会直接禁用磁盘扩展选项

操作路径: 虚拟机菜单 → 快照管理器 → 选择所有快照 → 删除

3.2 完整备份(强烈建议!)

扩容操作虽然成熟可靠,但任何磁盘操作都存在风险,特别是:

  • 第一次进行扩容操作
  • 生产环境或包含重要数据的虚拟机
  • 对 Linux 分区不熟悉的用户

推荐的备份方式:

# 方式1:直接复制虚拟磁盘文件(需先关闭虚拟机)
cp my-vm.vmdk my-vm-backup.vmdk

# 方式2:使用虚拟机自带的克隆/导出功能
# VMware: 文件 → 导出为 OVF
# VirtualBox: 管理 → 克隆

💡 经验之谈:宁可备份了不用,也不要用的时候没有。这一步花费的时间,远低于数据丢失后恢复的成本。


四、实操步骤详解

步骤一:虚拟化层面扩展磁盘

以 VMware Workstation 为例(VirtualBox 类似):

  • 关闭虚拟机(部分支持在线扩容,但建议关机操作更安全)
  • 打开 虚拟机设置 → 硬盘(Hard Disk)
  • 点击 “扩展(Expand)” 按钮
  • 输入目标磁盘大小(例如从 40GB → 80GB)
  • 点击确认,等待扩展完成
  • 操作路径:
    虚拟机 → 设置(Settings) → 硬盘(Hard Disk) →
    → 扩展(Expand) → 输入新大小 → 扩展(Expand)

    扩展完成后,系统通常会弹出提示:

    ⚠️ 提示信息:“您需要在客户机操作系统中重新对磁盘进行分区,以利用新的磁盘空间。”

    这个提示正是我们接下来要做的事情。

    步骤二:验证当前状态

    启动虚拟机,打开终端执行:

    df -h

    此时会发现——磁盘大小还是原来的值! 这是正常现象。

    原因回顾: 我们只完成了第一层的扩展,第二层的分区表还没有更新。新增的空间就像一个"未分配的房间",还没有被纳入文件系统的管理范围。

    步骤三:Ubuntu 内重新分区(图形化方式)

    这是让新空间生效的关键步骤!

    方法 A:使用 GNOME Disks 工具(推荐 🌟)

    这是 Ubuntu 自带的图形化磁盘管理工具,操作直观且安全:

  • 打开 Ubuntu 的 活动概览(按 Super 键或点击左下角)
  • 搜索 “Disks” 或中文 “磁盘”
  • 打开 GNOME Disks 应用程序
  • 在 Disks 界面中:

    • 左侧选择需要扩容的虚拟硬盘设备(通常显示为 /dev/sda)
    • 选择需要扩展的分区(通常是最后一个分区)
    • 点击分区条目上的 齿轮图标 ⚙️
    • 选择 “调整大小/Resize” 或 “调整分区大小”
    • 拖动滑块到最大值(将圆球/滑块拖到最右侧,占用所有未分配空间)
    • 点击 “Resize”(调整大小)按钮
    • 等待操作完成
    方法 B:使用命令行方式(进阶)

    对于习惯终端操作的同学,也可以使用命令行完成:

    # 1. 安装 parted 工具(如果尚未安装)
    sudo apt update && sudo apt install -y parted

    # 2. 查看磁盘和分区情况
    sudo parted /dev/sda print free

    # 3. 使用 growpart 扩展分区(以扩展第1个分区的第1个分区为例)
    sudo growpart /dev/sda 1

    # 4. 扩展文件系统(ext4)
    sudo resize2fs /dev/sda1

    # 或者对于 LVM 逻辑卷
    # sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
    # sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

    步骤四:验证扩容结果

    操作完成后,再次执行验证命令:

    df -h

    预期输出示例:

    Filesystem Size Used Avail Use% Mounted on
    /dev/sda1 75G 15G 56G 21% /

    🎉 如果看到磁盘总容量已经变成设定的目标大小,说明扩容成功!
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述


    五、常见问题与排查指南(FAQ)

    Q1:扩展选项是灰色的,无法点击?

    可能原因及解决方案:

    • ❌ 存在快照 → 先删除所有快照
    • ❌ 虚拟机正在运行 → 关闭虚拟机后再操作
    • ❌ 磁盘模式为"独立模式" → 更改磁盘模式设置

    Q2:扩容后 df -h 还是没变?

    检查清单:

  • 是否完成了虚拟机设置中的"扩展"操作?→ 重新确认第一步
  • 是否进入了 Ubuntu 并进行了分区调整?→ 执行步骤三
  • 使用 sudo fdisk -l 查看是否能看到更大的磁盘总量 → 如果能看到但分区没变,说明问题出在分区步骤
  • Q3:扩容过程报错怎么办?

    • 错误类型: “Failed to extend the virtual disk”
    • 解决方向: 检查宿主机磁盘是否有足够空间;尝试将虚拟机文件移动到空间充足的磁盘再操作

    Q4:能否在线扩容(不关机)?

    • VMware: 支持对 SCSI 控制器的磁盘进行热扩展,但分区调整仍需要在系统内操作
    • VirtualBox: 一般需要关闭虚拟机后再进行磁盘扩展
    • 建议: 无论哪种情况,关机操作更安全可靠

    Q5:扩容有上限吗?

    理论上限取决于:

    • 宿主机可用磁盘空间
    • 虚拟化软件的限制(一般可达数 TB)
    • 文件系统的限制(ext4 单分区最大支持 1EB)

    六、最佳实践与总结

    ✅ 推荐的操作流程图

    ┌─────────────┐
    │ ① 备份虚拟机 │ ──→ 安全基石
    └──────┬───────┘

    ┌─────────────┐
    │ ② 删除所有快照│ ──→ 解除依赖约束
    └──────┬───────┘

    ┌─────────────┐
    │③ 虚拟机设置扩展│ ──→ 扩大物理边界
    └──────┬───────┘

    ┌─────────────┐
    │④ 启动系统验证 │ ──→ df -h 确认现状
    └──────┬───────┘

    ┌──────────────┐
    │⑤ GNOME Disks │ ──→ 重新分配分区
    │ 调整分区大小 │
    └──────┬───────┘

    ┌─────────────┐
    │⑥ 再次验证结果 │ ──-> 🎉 完成!
    └─────────────┘

    📝 总结要点

    要点说明
    🔑 核心理解 扩容 = 虚拟层扩展 + OS 层重分区,缺一不可
    🛡️ 安全第一 务必先备份,再操作
    📸 快照清理 扩容前必须删除所有快照
    🖥️ 工具选择 新手推荐 GNOME Disks 图形化工具
    ✅ 最终验证 用 df -h 确认扩容效果

    写在最后

    虚拟机磁盘扩容看似复杂,但只要理解了两层结构的核心原理,按照正确的流程一步步操作,其实是一件非常可控且安全的事情。

    如果在实际操作中遇到问题,欢迎在评论区留言交流~

    适用环境:VMware Workstation / VirtualBox + Ubuntu 20.04/22.04/24.04


    觉得有用的话,点个「在看」支持一下吧!关注我,获取更多运维开发实战干货 🚀

    赞(0)
    未经允许不得转载:171主机测评 » 虚拟机 Ubuntu 磁盘扩容完全指南:从原理到实践,一步到位
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址