缩小 LUKS2 btrfs 根分区上的根 LVM 以扩大交换分区

缩小 LUKS2 btrfs 根分区上的根 LVM 以扩大交换分区

这是我的设置

$ lsblk
NAME                   MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
nvme0n1                259:0    0 238.5G  0 disk
├─nvme0n1p1            259:1    0   100M  0 part  /boot/efi
├─nvme0n1p2            259:2    0   250M  0 part  /boot
└─nvme0n1p3            259:3    0 238.1G  0 part
  └─Be-Water-My-Friend 254:0    0 238.1G  0 crypt
    ├─Arch-swap        254:1    0     2G  0 lvm   [SWAP]
    └─Arch-root        254:2    0 236.1G  0 lvm   /

我有一个主 LUKS2 加密分区 ( nvme0n1p3),其中一个 LVM 卷组 ( Be-Water-My-Friend) 包含两个逻辑卷Arch-swapArch-root

Arch-root是一个BTFS

当我设置它时,我只选择了 2GB 的交换空间,结果不足以满足我的需求。我想将交换空间增加到 24GB。

为此,我想我需要

  1. 通过 USB live key 启动
  2. 解密LUKS2分区
  3. 安装Arch-root
  4. 缩小Arch-root文件系统
    btrfs filesystem resize -22g
    
  5. 删除Arch-swap逻辑卷
  6. 重新创建Arch-swap逻辑卷,占用卷组中的所有可用空间Be-Water-My-Friend

我有什么遗漏的吗?我真的不想搞砸了!

答案1

您需要在 4 到 5 之间执行一个额外步骤 -Arch-root使用缩小逻辑卷lvresize -L-22G Arch/rootlvresize可以选择--resizefs调整 LV 和文件系统的大小,但它目前不支持 btrfs,因此您不能在此处使用它)。这个答案很好地解释了调整文件系统大小(在您的情况下是 btrfs)和块设备(LVM 逻辑卷)之间的区别。

您可能还想使用--uuidwithmkswap为新交换设置旧交换 UUID。在 GRUB 和 GRUB 中,交换通常不使用 UUID 来引用/etc/fstab,但使用旧的 UUID 可能会避免一些问题。

另外,如果您只是想要更大的交换,您可以创建一个btrfs 上的交换文件并将其用作第二次交换。

答案2

一个小修正:

第 2 步应该是:开锁LUKS2 分区(使用一个cryptsetup open --type luks ...或等效命令)。

应添加步骤 2.5:验证Arch卷组是否存在并确保它已被激活,例如vgscan; vgchange -ay Arch。 (根据您使用的实时媒体,系统可能会也可能不会在加密分区解锁时自动激活 VG。)

应添加步骤 4.5:在确定 LV 内的文件系统已成功收缩后收缩 LV:

lvresize -L-22G Arch/root

另外,Be-Water-My-Friend是访问加密设备的名称,因此也是 LVM 物理卷 ( /dev/mapper/Be-Water-My-Friend) 的名称。

LVM 卷组的名称很简单Arch。在lsblk列表中,LVM 逻辑卷的名称以 的形式呈现VGname-LVname,因此eg表示卷组中的Arch-swap逻辑卷。swapArch

如果 VG/LV 名称包含连字符(减号),这些连字符将加倍,以区别于用作 VG 和 LV 名称之间分隔符的单个连字符。

相关内容