环境:

windows11主机

vmware虚拟机 ubuntu22.04 server

引言:为何我们需要动态磁盘管理?

你是否曾经历过这样的场景?一台运行着关键服务的Ubuntu 22.04 Server,经过数月的稳定工作后,突然开始频繁发出磁盘空间不足的警报。通过df -h命令检查,发现根分区(/)的使用率已经飙升至90%以上。在传统分区方案下,这几乎意味着一场灾难性的维护操作:你需要准备系统安装盘、备份所有数据、重新规划分区、格式化磁盘,最后再恢复数据——整个过程耗时耗力,且存在极高的数据丢失风险。

幸运的是,现代Linux发行版普遍采用了一种名为逻辑卷管理(Logical Volume Manager, LVM)的技术。LVM彻底改变了这一困境,它允许你在不中断服务的情况下,对磁盘进行“在线扩容”。这意味着你可以像给房子加盖楼层一样,为你的服务器动态增加存储空间,而无需“搬家”或停机。

本文将为你详细解析在Windows 11上的VMware虚拟机环境中,如何对一个基于LVM架构的Ubuntu 22.04 Server进行安全、高效的磁盘扩容。我们将深入探讨核心概念,并提供一份可直接复用的操作手册。

核心存储概念详解

在动手操作之前,理解底层的存储架构至关重要。

(一)LVM三层架构模型

LVM的核心思想是将物理存储资源抽象化,形成一个灵活的“存储池”。它由三个层级构成:

  • 物理卷 (Physical Volume, PV)
    物理卷是 LVM 结构的最底层。它指的是一个真实的物理存储设备,例如一个完整的硬盘(如 /dev/sdb)或硬盘上的一个分区(如 /dev/sdb1)。这个物理设备经过 LVM 的初始化后,才能被 LVM 识别和使用。

  • 卷组 (Volume Group, VG)
    卷组是建立在物理卷之上的一个抽象层。它将一个或多个物理卷的存储空间整合在一起,形成一个统一的、大容量的“存储池”。这个存储池屏蔽了底层物理设备的差异,使得管理员可以像管理一个整体设备一样来管理它

  • 逻辑卷 (Logical Volume, LV)
    逻辑卷是从卷组这个“存储池”中划分出来的虚拟存储空间。它相当于传统意义上的磁盘分区,可以被格式化(如 ext4, XFS)并挂载到文件系统中供操作系统使用。逻辑卷的最大优势在于其大小可以动态调整,而无需重新分区或中断服务。

  • PE (Physical Extent)

    PE 是物理卷上被划分出的最小存储单元,是卷组分配空间的基本单位。当物理卷被创建时,它会被自动分割成许多大小相等的 PE(默认大小通常为 4MB)。卷组在创建逻辑卷时,就是以 PE 为单位来分配空间的。逻辑卷也对应着逻辑扩展块(Logical Extent, LE),一个 LE 会映射到一个 PE。

(二)文件系统类型对比

逻辑卷创建后,需要在其上建立文件系统才能存储文件。Ubuntu 22.04主要支持两种主流文件系统:

特性ext4XFS
是否支持在线扩容是是
是否支持缩容是否
推荐场景通用型系统分区,兼容性好大文件、高性能需求,数据库等

重要提示:虽然两者都支持在线扩容,但XFS文件系统不支持在线缩容。一旦扩大,就无法轻易缩小。因此,选择文件系统时需根据未来需求权衡。

Ubuntu 22.04 Server磁盘扩容完整流程

本节将带你一步步完成从VMware设置到系统级扩容的全过程。请务必严格按照顺序执行。

步骤1:VMware层面扩展虚拟磁盘

这是扩容的第一步,也是前提条件。你不能凭空变出磁盘空间。

操作前提:

  • 关闭虚拟机:必须完全关机,而非挂起。
  • 删除所有快照:VMware会锁定磁盘以防止快照链损坏,因此必须先删除所有快照,否则“扩展”按钮将处于灰色不可用状态。

具体操作:

  1. 在VMware Workstation中,右键点击你的Ubuntu虚拟机,选择“设置”。
  2. 在硬件列表中选择“硬盘”。
  3. 点击右侧的“扩展”按钮。
  4. 在弹出的窗口中,输入新的总容量(例如,如果原为20GB,想扩到40GB,则输入“40”)。
  5. 点击“扩展”确认。

成功标志:启动虚拟机后,通过sudo fdisk -l /dev/sda命令,你应该能看到磁盘的总容量已更新为新值。

步骤2:确认系统是否使用LVM

并非所有系统都使用LVM。我们首先需要验证。

lsblk 

观察输出结果。如果你看到类似以下结构(这里是扩容后的结果):

其中TYPE列为lvm,并且设备路径包含mapper字样,那么恭喜你,系统正在使用LVM,可以继续后续步骤。

你也可以通过以下命令进一步确认:

sudo vgdisplay
sudo lvdisplay

如果有正常输出,说明LVM配置正确。

步骤3:LVM系统扩容(标准路径)

现在进入最关键的系统级操作。请确保每一步都成功后再进行下一步。

3.1 扩展底层分区(growpart)

VMware扩展了磁盘,但操作系统内的分区表还不知道这个变化。growpart工具就是用来解决这个问题的。

安装工具:

sudo apt update && sudo apt install cloud-guest-utils -y

执行扩展: 假设你的LVM物理卷位于/dev/sda3,执行:

sudo growpart /dev/sda 3

注意:命令中的/dev/sda和3之间有空格,分别代表磁盘设备和分区号。

预期输出:

CHANGED: partition=3 start=... new: size=..., end=...

出现CHANGED字样即表示分区扩展成功。

3.2 扩展物理卷(pvresize)

此步骤是为了让LVM识别到growpart刚刚扩展的分区空间。

sudo pvresize /dev/sda3

验证:

pvs

你应该能看到PSize(物理卷大小)已经增大,并且PFree(空闲空间)大于0。如果没有,请检查上一步是否成功。

3.3 扩展逻辑卷(lvextend)

现在,我们从卷组的空闲空间中,为根逻辑卷分配更多容量。

占用所有空闲空间:

sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

这里的+100%FREE是一个非常实用的参数,它表示使用卷组中100%的剩余空间。

或指定增量(例如增加10GB):

sudo lvextend -L +10G /dev/mapper/ubuntu--vg-ubuntu--lv

预期输出:

Size of logical volume ubuntu-vg/ubuntu-lv changed from <14.00 GiB to 27.00 GiB
Logical volume ubuntu-vg/ubuntu-lv successfully resized.
3.5 扩展文件系统

这是最后一步,也是最容易被忽略的一步。lvextend只扩大了逻辑卷,但文件系统仍然认为自己只有旧的大小。我们必须手动通知文件系统去利用新空间。

sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

终极快捷命令: 为了简化流程,避免忘记最后一步,强烈推荐使用lvextend的-r参数,它可以自动同步文件系统扩展:

sudo lvextend -r -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

这条命令会依次完成逻辑卷扩展和文件系统调整,大大降低了出错概率。

关键注意事项

项目说明
快照清理扩容前必须删除所有快照,否则VMware无法扩展磁盘。
分区相邻性未分配空间必须与目标分区相邻,否则growpart无法扩展。
命名一致性实际名称可能为ubuntu-vg而非ubuntu--vg,请通过vgs命令精确查询。
文件系统匹配绝对不要对XFS文件系统使用resize2fs,反之亦然。
在线操作支持LVM与ext4/xfs均支持在线扩容,无需卸载根分区。

结语:掌握弹性存储的艺术

永远记住:任何磁盘操作都伴随着风险。

现在,你已经拥有了为服务器“无痛增肌”的能力。不妨在你的测试虚拟机上动手实践一番,将理论转化为真正的经验。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐