使用加密 LVM 调整 Ubuntu 20.04 上的交换分区大小

使用加密 LVM 调整 Ubuntu 20.04 上的交换分区大小

我有一个非常标准的 Ubuntu 20.04 设置,带有 LVM 和加密硬盘。但是,标准设置似乎提供了一个非常小的 900 MB 交换空间(或者这是我选择的?),尽管有 16 GB 的 RAM,但它现在经常导致内存不足的问题。我的 500 GB SSD 上有足够的可用空间,但无法找到有关如何增加交换大小的明确说明。我想将加密交换保留为分区,而不是用文件替换它。

我查看了几个选项,但没有看到任何像我希望的那样简单的东西:

  • 此方法需要从单独的 USB/CD 启动 - 可以避免吗?(并且它不需要某种密码 - 如何首先提取它?)
  • 此方法建议使用 KDE 分区管理器,但并未涵盖减少主分区的大小,而且似乎并不简单。
  • 此方法建议删除现有空间并在中创建交换文件/。我不清楚采用该方法是否会给我一个加密交换,并且如果可能的话,我更愿意坚持使用 Ubuntu 安装程序提供的相同 LVM 架构。
  • 最后,我不确定这个,因为fdisk -l没有显示/dev/sda,而是显示/dev/nvme0n1,所以我不确定这些说明是否适用于我的情况。

答案1

此方法需要从单独的 USB/CD 启动

要缩小根卷,必须将其卸载,卸载根卷后您基本上无法使用系统。

此方法建议使用 KDE 分区管理器,但不包括减少主分区的大小

KDE 分区管理器可能很危险LVM 分区被破坏正常分区被破坏

此方法建议删除现有空间并在 / 中创建交换文件

看来没有必要。


TL;DR(备份重要数据!) - 减少根目录并增加交换

本答案基于 Ubuntu 22.04 LTS

复制我的答案增加加密交换的大小

这里我们将根目录减少 -40G 并增加交换 +40G:

# Boot Ubuntu Live/Flash/"Try Ubuntu" AND open terminal
# Run subsequent commands as superuser
sudo su
    # `sudo`    => Execute a command as another user.
    # `sudo su [user]` => Run a command with substitute user, default is root.

# Encrypted device should NOT be unlocked
lsblk # => list block devices
    # └─sda6 => no `crypt`/`lvm``
# Unlock encrypted device
cryptsetup open /dev/sda6 crypt # Enter passphrase
    # `cryptsetup` => Manage dm-crypt + LUKS encrypted volumes.
    # `cryptsetup open <device> <name>` => Opens encrypted lv as <name>

# Get logical volume identifiers
lsblk
    # └─sda6                  8:6    0 464,6G  0 part
    #   └─sda6_crypt        253:0    0 464,5G  0 crypt
    #     ├─vgubuntu-root   253:1    0 463,6G  0 lvm   /
    #     └─vgubuntu-swap_1 253:2    0   980M  0 lvm   [SWAP]

# Shrink logical root volume AND filesystem
lvresize --verbose --resizefs -L -40G /dev/mapper/vgubuntu-root
    # `lvresize` <volume> => resize a logical volume
    #   --verbose  => Give more info.
    #   --resizefs => Resize filesystem AND LV with fsadm(8).
    #   -L         => Specifies the new size of the LV, 
    #                 +/- add/subtracts to/from current size, g|G is GiB.

# Check filesystem of logical root volume for errors
e2fsck -f /dev/mapper/vgubuntu-root
    # `e2fsck`<fs-path> => Check a Linux ext2/ext3/ext4 file system
    #   -f => Force checking even if the file system seems clean.

# Increase swapsize
lvresize --verbose -L +40G /dev/mapper/vgubuntu-swap_1

重启后,Ubuntu 应该正常启动,swap 应该调整大小:

lslbk
    # └─sda6                  8:6    0 464,6G  0 part  
    #   └─sda6_crypt        253:0    0 464,5G  0 crypt 
    #     ├─vgubuntu-root   253:1    0 423,6G  0 lvm   /
    #     └─vgubuntu-swap_1 253:2    0    41G  0 lvm   [SWAP]

如果系统监视器仍然只有初始的1G需要重写逻辑交换设备:

swapon --show
    # NAME      TYPE      SIZE USED PRIO
    # /dev/dm-2 partition 976M   0B   -2

swapoff -v /dev/dm-2
    # swapoff /dev/dm-2

mkswap /dev/dm-2
    # mkswap: /dev/dm-2: warning: wiping old swap signature.
    # Setting up swapspace version 1, size = 41 GiB (43973079040 bytes)
    # no label, UUID=...

答案2

我在使用 Kubuntu 20.04 时也遇到了同样的问题。(实际上,我怀疑如果没有交换,我的系统会更稳定。)

以下是一些可帮助您入门的信息:

  1. Kubuntu 安装程序(根据您的帖子和链接的文章,我认为 Ubuntu 安装程序非常相似)在其中一个磁盘分区上创建一个加密的 LVM 卷。此卷内有 2 个卷 - 实际上是分区。对我来说,加密卷是/dev/nvme0n1p3,但名称取决于您的系统。这 2 个分区是:
  • /dev/vgkubuntu/root
  • /dev/vgkubuntu/swap_1
  1. 您无法调整已安装分区的大小。在这种情况下,一旦您启动了机器、解密了磁盘并登录,根磁盘就无法安全地卸载。因此需要使用实时 USB 或其他机器。
  2. 在这种情况下,使用交换分区比使用交换文件没有真正的好处——两者都在加密分区内。交换文件可能更方便,因为您可以在正常登录时轻松调整其大小。但是,设置起来需要多做一些工作。

您有两个选择:

  1. 调整交换分区的大小
  2. 创建交换文件并(可选)回收交换分区(通过删除它并扩展根分区)

无论哪种情况,您都必须使用实时 USB 或将物理磁盘移动到另一台机器,因为您无法调整已安装分区的大小,并且在不先解密的情况下无法看到加密卷内的分区。

我使用了刚刚安装 Kubuntu 20.04 的实时 USB,并且由于我很懒,我选择调整现有分区的大小。

  1. 启动实时 USB - 将其放入机器,启动它,按下所有键以选择启动设备等。
  2. 等待 Kubuntu 加载——选择尝试 Kubuntu
  3. 打开终端仿真器,sudo su成为 root
  4. 运行lsblk以查找加密设备名称。它可能是列表中的最后一个,但几乎肯定是最大的。
  5. 解密:cryptsetup open /dev/<device> <some new device name>例如cryptsetup open /dev/nvme0n1p3 cr-ext——系统将提示您输入密码。这是您在正常启动期间解密磁盘时使用的相同密码。
  6. 现在您可以运行 KDE 分区管理器。您应该vgkubuntu在设备列表中看到 - 单击以突出显示。您应该在分区列表中看到根分区和交换分区。
  7. 调整/移动根分区以将其缩小,无论您想要增加交换分区的多少。(我选择 +32 GB,因为我可能在某个时候会有那么多 RAM,额外的 900MB 或其他任何内容都是很好的填充,因为您永远不知道添加 RAM 时最终会有多少字节,并且您需要交换 > 物理才能进入睡眠状态,我很懒。)它不会让我输入我想要的确切 MB(当前大小 - (32*1024))因为,我不知道,块大小或其他东西,所以我输入了一些接近的内容并单击向上箭头直到它阻止我。
  8. 增加交换分区来填充空间。
  9. 单击应用。成功后,您可以重新启动,移除 USB 驱动器并正常启动。

答案3

遗憾的是,我没有足够的积分来对 ubuntu 发表评论调整大小答案,所以我必须在第二个答案中添加这一点。

调整交换分区的大小后,您仍然需要执行以下操作,以便实际使用增加的空间(至少我必须在 Ubuntu 22-04 上这样做):

sudo swapoff /dev/dm-2
sudo mkswap /dev/dm-2
sudo swapon /dev/dm-2
sudo swapon --show

答案4

由于调整已挂载分区的大小不是很安全,因此请考虑启动到另一个分区并从那里调整 Ubuntu 分区的大小。

如果您的 Windows 位于另一个分区:
启动 Windows 并使用 AOMEI 或 Minitool Partition Wizard(不是广告。我只是使用过它们,仅此而已)等应用程序来调整 Ubuntu 分区的大小。


如果您的 PC 上没有 Windows:

  1. 创建可启动的 USB 记忆棒
  2. 关闭计算机,然后插入所述 USB 驱动器(如果尚未插入)。
  3. 按下电源按钮,同时按下机器进入 BIOS 设置的按钮(通常是 F12 或 F10 或 F2)
  4. 在 BIOS 设置中,更改启动顺序,以便可启动 USB 驱动器首先启动。
  5. 然后按照说明进行操作这个答案

相关内容