Ubuntu 22.04中如何调整并缩小唯一根挂载的LVM物理卷以创建第二个物理分区
我太懂你这个头疼的困扰了——用默认LVM配置装完Ubuntu 22.04后,想缩小根分区的LVM物理卷腾空间建新分区,但不管是在线命令操作还是GUI工具都卡壳:要么提示不支持在线缩小,要么根分区死活卸载不了,GUI的Resize选项还灰着。其实核心原因很明确:ext4文件系统不支持在线缩小根分区,而且根分区是系统运行的核心,挂载状态下根本没法卸载,所以必须切换到离线环境操作,Ubuntu Live USB就是最佳解决方案。下面给你一步步来的靠谱操作:
步骤1:准备Ubuntu Live USB/CD并启动
先制作一个Ubuntu 22.04的Live启动介质(U盘或光盘),然后从它启动,选择「Try Ubuntu」进入试用模式——这个模式下不会挂载你的系统盘,正好用来离线操作LVM。
步骤2:激活并识别你的LVM卷组
进入试用模式后,打开终端,先扫描并激活LVM卷组:
sudo vgscan sudo vgchange -ay
这时候你的LVM卷组(也就是vgubuntu)就被激活了,可以操作里面的逻辑卷了。
步骤3:检查并修复文件系统完整性
在修改分区之前,必须确保文件系统没有错误,不然缩小过程中容易损坏数据:
sudo e2fsck -f /dev/vgubuntu/root
这里-f参数是强制检查,哪怕系统认为文件系统没问题也要扫一遍。
步骤4:缩小逻辑卷的文件系统
先把根逻辑卷的文件系统缩小到你想要的新尺寸(比如你想缩到100G就写100G,用MB单位的话可以写50000M):
sudo resize2fs /dev/vgubuntu/root 100G
⚠️ 注意:这里的尺寸必须比当前已使用的空间大,不然会损坏数据!
步骤5:缩小逻辑卷本身
文件系统缩小后,再把逻辑卷的实际大小也缩到对应的尺寸:
sudo lvreduce -L 100G /dev/vgubuntu/root
这里的尺寸要和上一步resize2fs的设置完全一致,执行时会有警告,确认数据已备份后输入y继续。
步骤6:缩小物理卷
现在逻辑卷已经缩小了,接下来调整物理卷的大小。先查看物理卷当前已分配的PE(物理扩展块)数量:
pvdisplay /dev/sda2
找到「Allocated PE / Size」这一行,比如显示是25600 / 100.00 GiB,那你就把物理卷设置成这个尺寸(或者略大一点,留一点点缓冲):
sudo pvresize --setphysicalvolumesize 100G /dev/sda2
如果用PE数设置更准确,比如每个PE是4M,25600个就是25600*4M=102400M,命令可以写成:
sudo pvresize --setphysicalvolumesize 102400M /dev/sda2
步骤7:缩小分区并创建新分区
现在物理卷的大小已经调整好了,打开GParted工具(试用模式里可以直接搜索打开):
- 找到
/dev/sda2分区(你的LVM物理卷所在分区),右键选择「Resize/Move」,把它的末尾往左边拉,缩小到和你刚才设置的物理卷尺寸一致。 - 缩小后会出现未分配的空闲空间,右键选择「New」,按照你的需求创建新分区(比如选ext4格式,设置挂载点等)。
- 点击GParted工具栏的「Apply All Operations」,等待操作完成。
步骤8:重启验证
操作完成后,重启电脑,拔掉Live USB,回到你的Ubuntu系统。打开终端验证:
- 用
df -h查看根分区的大小是否已经变成你设置的尺寸; - 用
pvdisplay /dev/sda2查看物理卷的大小是否正确; - 打开文件管理器,确认新创建的分区已经正常挂载使用。
为什么你之前的方法都不行?
- 在线操作失败:ext4文件系统不支持在线缩小根分区,必须离线操作;
- 根分区无法卸载:系统运行时根分区是核心挂载点,根本没法卸载,只能在Live环境下离线处理;
- GUI工具灰色/无效:要么是分区处于挂载状态,要么是LVM卷组未激活,导致无法调整。
备注:内容来源于stack exchange,提问作者sof

