为运行中的 Linux 虚拟机扩展根目录(/)空间是一个相对复杂的操作,通常需要借助启动盘工具在系统外进行分区调整,随后在系统内完成逻辑卷和文件系统的扩展。本指南详细介绍了使用 GParted Live ISO 和 LVM 命令扩展根目录的完整流程。重要提示: 此操作存在风险,强烈建议在操作前备份重要数据。
1. 确认当前磁盘与分区信息
在开始扩容前,了解当前磁盘布局至关重要。执行以下命令:
- df -h: 查看文件系统挂载点、已用空间和可用空间。
- fdisk -l: 查看物理磁盘、分区表和分区信息。
root@qinghao_server:~$ df -h
Filesystem Size Used Avail Use% Mounted on
...(省略其他行)...
/dev/mapper/ubuntu--vg-ubuntu--lv 192G 110G 73G 61% / # 根目录(/),使用LVM,当前192G
/dev/sda2 1.5G 309M 1.1G 23% /boot
root@qinghao_server:/home/qinghao_server# fdisk -l /dev/sda
Disk /dev/sda: 200 GiB ... # 物理磁盘大小为200GB
...
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 3149823 3145728 1.5G Linux filesystem # /boot分区
/dev/sda3 3149824 419428351 416278528 198.5G Linux filesystem # LVM物理卷分区
Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 195 GiB ... # 逻辑卷(根文件系统)大小为195GiB
理清概念 (LVM 架构):
- 物理磁盘 (Physical Disk):
/dev/sda
(200GB) - 分区 (Partition):
/dev/sda1
(BIOS boot),/dev/sda2
(/boot),/dev/sda3
(LVM 物理卷) - 物理卷 (Physical Volume, PV):
/dev/sda3
被初始化为 LVM 物理卷。 - 卷组 (Volume Group, VG):
ubuntu-vg
(由/dev/sda3
组成) - 逻辑卷 (Logical Volume, LV):
/dev/mapper/ubuntu--vg-ubuntu--lv
(位于ubuntu-vg
卷组上,格式化为文件系统并挂载到/
) - 流程概要: 扩展物理磁盘
/dev/sda
-> 扩展分区/dev/sda3
-> 扩展物理卷/dev/sda3
-> 扩展卷组ubuntu-vg
-> 扩展逻辑卷ubuntu-lv
-> 扩展文件系统。
2. 扩展虚拟机物理磁盘
关闭虚拟机。
在虚拟机管理程序 (如 VMware vSphere, Workstation, VirtualBox) 的设置中,找到目标虚拟硬盘。
将其大小调整到所需容量 (例如,从 200GB 扩展到 300GB)。
确认更改。(物理磁盘扩展完成)

3. 下载并挂载 GParted Live ISO
1. 从 https://gparted.org/download.php 下载最新的 GParted Live ISO 镜像。
2. 在虚拟机设置中,添加一个 CD/DVD 驱动器,并将其指向下载的 ISO 文件。
3. 确保该虚拟光驱在启动顺序中优先于硬盘(通常下一步设置)。

4.设置开机启动项
1. 启动虚拟机。
2. 在启动初期(通常是显示 BIOS/UEFI 信息时),按提示键(如 F2
, ESC
, DEL
)进入 BIOS/UEFI 设置界面。
3. 导航到 Boot
选项卡。
4. 调整启动顺序,将 CD-ROM Drive
或 Removable Devices
移动到硬盘之前(通常使用 +
/-
键)。
5. 导航到 Exit
选项卡,选择 Save Changes and Exit
或类似选项。虚拟机将重启。


5. 启动进入 GParted Live 环境
1. 虚拟机重启后,会从 ISO 启动。选择 GParted Live (Default settings)
并按 Enter
。

2. 在键盘映射选择界面,选择 Don’t touch keymap
并按 Enter
。

3. 在语言选择界面,输入对应的数字(例如 33
为简体中文)或选择默认的 0
(US English) 并按 Enter
。

4. 在启动模式选择界面,输入 0
(使用默认运行模式) 并按 Enter
。系统将加载 GParted 图形界面。

6. 使用 GParted 扩展分区
1. 桌面加载完成后,双击 GParted
图标启动程序。
2. 在右上角的下拉菜单中,务必确认选择了正确的磁盘 (例如 /dev/sda
,对应 300GB)。
3. 在分区列表中,找到需要扩展的分区 (/dev/sda3
)。它应该是紧跟在 /dev/sda2
(/boot
) 之后、占据大部分空间的分区。
4. 右键单击 /dev/sda3
分区,选择 Resize/Move
。

5. 在打开的对话框中:
* 拖动分区条右侧的箭头到磁盘最末端,或者直接在 New size
后的 Maximum
框中输入最大值。
* 确保 Free space following
变为 0
。
* 点击 Resize
。

6. 点击 GParted 工具栏上的 绿色对勾图标 (Apply
)。在弹出的确认对话框中点击 Apply
。

7. 等待操作完成(进度条走完),点击 Close
。
8. 关闭 GParted 窗口和 GParted Live 桌面环境。
9. 系统关机。在虚拟机设置中移除 GParted ISO 文件,确保下次从硬盘启动。
7. 扩展逻辑卷 (LV) 和文件系统
1. 启动虚拟机并正常登录系统。
2. 验证分区已扩展 (物理卷空间已增加):
sudo fdisk -l /dev/sda
预期输出 (关键变化):
Disk /dev/sda: 300 GiB … # 物理磁盘已变为300GB
(分区 /dev/sda3 扩展完成)
3. 扩展物理卷 (PV): LVM 会自动检测到 /dev/sda3
上的空闲空间,无需额外命令扩展 PV。
4. 扩展卷组 (VG): 扩展后的 PV (/dev/sda3
) 上的空闲空间会自动加入其所在的 VG (ubuntu-vg
),也无需额外命令。使用 sudo vgdisplay
可查看 VG 的 Free PE / Size
确认。
5. 扩展逻辑卷 (LV): 将 VG 中的空闲空间分配给 LV (ubuntu-lv
)。注意: 建议预留少量空间(如本例从 298.5G 扩展到 295G)以避免计算误差导致失败。
lvextend -L 295G /dev/mapper/ubuntu--vg-ubuntu--lv
预期输出:
Size of logical volume ubuntu-vg/ubuntu-lv changed from 195.00 GiB (49920 extents) to 295.00 GiB (75520 extents). Logical volume ubuntu-vg/ubuntu-lv successfully resized.
6. 扩展文件系统: 在线调整根文件系统大小。
bash sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
预期输出:resize2fs 1.45.5 (07-Jan-2020) Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required old_desc_blocks = 25, new_desc_blocks = 37 The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 77332480 (4k) blocks long.
(扩展完成)