如何从LVM卷组回收未使用空间以创建新物理分区用于双系统安装
如何从LVM卷组回收未使用空间以创建新物理分区用于双系统安装
看起来你已经找对了大致方向,但咱们得把操作拆细,稳扎稳打——毕竟分区和加密卷的操作容不得半点马虎,第一步必须是备份所有重要数据! 这是底线,别嫌麻烦。
先梳理下你的现状(从你提供的命令输出整理而来):
- 你的NVMe盘采用GPT分区,
nvme0n1p3是LUKS加密分区,内部嵌套LVM卷组vgubuntu - 卷组里已有234GB左右的空闲空间,远大于你要回收的200GB,这省了我们缩小根文件系统的步骤(除非后续还要调整,但这次不需要)
接下来是具体操作步骤,全程需要用Ubuntu Live USB启动(选「试用Ubuntu」,不要挂载你的系统分区):
步骤1:解锁加密分区并激活LVM卷组
首先让系统能访问加密后的LVM卷:
# 解锁LUKS分区,映射名保持和原系统一致 cryptsetup luksOpen /dev/nvme0n1p3 nvme0n1p3_crypt # 激活卷组 vgchange -ay vgubuntu
步骤2:调整物理卷(PV)大小
现在卷组有足够空闲,我们要把加密后的物理卷(/dev/mapper/nvme0n1p3_crypt)缩小200GB,目标大小设为原大小(~927G)减200G,也就是727G左右。
先检查物理卷的PE分布,确保所有已使用的PE都在要保留的727G范围内:
pvs -o+pe_start,pe_count /dev/mapper/nvme0n1p3_crypt
如果输出没问题,直接缩小PV:
pvresize --setphysicalvolumesize 727G /dev/mapper/nvme0n1p3_crypt
如果报错提示有PE在要移除的区域里,就用pvmove把这些PE移到前面的空闲区:
# 把从727G位置开始的PE移动到空闲区域 pvmove /dev/mapper/nvme0n1p3_crypt:727G-
移完之后再重新执行pvresize命令。
步骤3:关闭卷组和加密分区
调整完PV后,先释放相关资源:
# 停用卷组 vgchange -an vgubuntu # 关闭加密分区映射 cryptsetup luksClose nvme0n1p3_crypt
步骤4:缩小物理分区(nvme0n1p3)
用gdisk修改分区表,把nvme0n1p3的大小缩小到能容纳调整后的加密分区(注意:只是修改分区表条目,不会删除数据):
gdisk /dev/nvme0n1
在gdisk交互界面执行以下操作:
- 按
p查看分区列表,确认nvme0n1p3的编号是3 - 按
d删除分区3(别慌,数据还在磁盘上,只是删掉分区表的记录) - 按
n创建新的分区3:- 分区编号:输入
3(保持原编号,避免后续挂载出错) - 起始扇区:输入
8885956(和原nvme0n1p3的起始扇区完全一致) - 结束扇区:输入
+727G(或者更精确的数值,确保比调整后的加密分区大一点)
- 分区编号:输入
- 按
t修改分区类型为8300(和原Linux filesystem类型一致) - 按
p再次查看分区表,确认新的p3参数正确 - 按
w保存分区表,输入Y确认写入
步骤5:验证加密分区和卷组正常
重新解锁加密分区并激活卷组,确保一切正常:
cryptsetup luksOpen /dev/nvme0n1p3 nvme0n1p3_crypt vgchange -ay vgubuntu # 可以挂载根分区检查文件系统是否完好 mount /dev/mapper/vgubuntu-root /mnt ls /mnt # 能看到你的系统文件就说明没问题 umount /mnt
步骤6:创建新分区用于双系统
再次用gdisk创建新的nvme0n1p4分区:
gdisk /dev/nvme0n1
交互操作:
- 按
n创建新分区:- 分区编号:输入
4 - 起始扇区:直接按回车,会自动选p3之后的第一个可用扇区
- 结束扇区:按回车用剩余所有空间,或者输入
+200G指定大小
- 分区编号:输入
- 按
t修改分区类型:如果装Linux选8300,装Windows选0700(NTFS) - 按
p确认分区信息 - 按
w保存并退出
额外注意事项
- 如果你要安装Windows双系统,还需要在BIOS里关闭快速启动和安全启动,否则可能出现引导问题
- 操作每一步都要仔细看命令输出,如果有错误提示,一定要解决后再继续,不要强行执行
- 完成后重启,你的原有系统应该能正常启动,新分区也会显示在磁盘工具里
备注:内容来源于stack exchange,提问作者storestyggeulv
相关产品推荐
相关产品推荐

