我有一个非常标准的 Ubuntu 20.04 设置,带有 LVM 和加密硬盘。但是,标准设置似乎提供了一个非常小的 900 MB 交换空间(或者这是我选择的?),尽管有 16 GB 的 RAM,但它现在经常导致内存不足的问题。我的 500 GB SSD 上有足够的可用空间,但无法找到有关如何增加交换大小的明确说明。我想将加密交换保留为分区,而不是用文件替换它。
我查看了几个选项,但没有看到任何像我希望的那样简单的东西:
答案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 时也遇到了同样的问题。(实际上,我怀疑如果没有交换,我的系统会更稳定。)
以下是一些可帮助您入门的信息:
- Kubuntu 安装程序(根据您的帖子和链接的文章,我认为 Ubuntu 安装程序非常相似)在其中一个磁盘分区上创建一个加密的 LVM 卷。此卷内有 2 个卷 - 实际上是分区。对我来说,加密卷是
/dev/nvme0n1p3
,但名称取决于您的系统。这 2 个分区是:
/dev/vgkubuntu/root
/dev/vgkubuntu/swap_1
- 您无法调整已安装分区的大小。在这种情况下,一旦您启动了机器、解密了磁盘并登录,根磁盘就无法安全地卸载。因此需要使用实时 USB 或其他机器。
- 在这种情况下,使用交换分区比使用交换文件没有真正的好处——两者都在加密分区内。交换文件可能更方便,因为您可以在正常登录时轻松调整其大小。但是,设置起来需要多做一些工作。
您有两个选择:
- 调整交换分区的大小
- 创建交换文件并(可选)回收交换分区(通过删除它并扩展根分区)
无论哪种情况,您都必须使用实时 USB 或将物理磁盘移动到另一台机器,因为您无法调整已安装分区的大小,并且在不先解密的情况下无法看到加密卷内的分区。
我使用了刚刚安装 Kubuntu 20.04 的实时 USB,并且由于我很懒,我选择调整现有分区的大小。
- 启动实时 USB - 将其放入机器,启动它,按下所有键以选择启动设备等。
- 等待 Kubuntu 加载——选择尝试 Kubuntu
- 打开终端仿真器,
sudo su
成为 root - 运行
lsblk
以查找加密设备名称。它可能是列表中的最后一个,但几乎肯定是最大的。 - 解密:
cryptsetup open /dev/<device> <some new device name>
例如cryptsetup open /dev/nvme0n1p3 cr-ext
——系统将提示您输入密码。这是您在正常启动期间解密磁盘时使用的相同密码。 - 现在您可以运行 KDE 分区管理器。您应该
vgkubuntu
在设备列表中看到 - 单击以突出显示。您应该在分区列表中看到根分区和交换分区。 - 调整/移动根分区以将其缩小,无论您想要增加交换分区的多少。(我选择 +32 GB,因为我可能在某个时候会有那么多 RAM,额外的 900MB 或其他任何内容都是很好的填充,因为您永远不知道添加 RAM 时最终会有多少字节,并且您需要交换 > 物理才能进入睡眠状态,我很懒。)它不会让我输入我想要的确切 MB(当前大小 - (32*1024))因为,我不知道,块大小或其他东西,所以我输入了一些接近的内容并单击向上箭头直到它阻止我。
- 增加交换分区来填充空间。
- 单击应用。成功后,您可以重新启动,移除 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:
- 创建可启动的 USB 记忆棒
- 关闭计算机,然后插入所述 USB 驱动器(如果尚未插入)。
- 按下电源按钮,同时按下机器进入 BIOS 设置的按钮(通常是 F12 或 F10 或 F2)
- 在 BIOS 设置中,更改启动顺序,以便可启动 USB 驱动器首先启动。
- 然后按照说明进行操作这个答案