![在 Ubuntu 18.04 中 Lvm 和加密文件系统下增加交换空间](https://linux22.com/image/900242/%E5%9C%A8%20Ubuntu%2018.04%20%E4%B8%AD%20Lvm%20%E5%92%8C%E5%8A%A0%E5%AF%86%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%B8%8B%E5%A2%9E%E5%8A%A0%E4%BA%A4%E6%8D%A2%E7%A9%BA%E9%97%B4.png)
我全新安装了 Ubuntu 18.04 桌面。
我使用图形安装程序并选择“为了安全起见加密新的 Ubuntu 安装”。
它默认使用 LVM,并为交换而不是文件创建了一个分区。sudo swapon -s
结果如下:
eviatan89@leviatan89-K55VD:~$ sudo swapon -s
Filename Type Size Used Priority
/dev/dm-2 partition 1003516 999448 -2
我需要增加尺寸,因为我遇到了很多内存不足的问题。
好奇的是,使用 Cassandra 和 Firefox 打开多个标签(包括 YouTube)时会出现问题。我的系统有 6GB 的 RAM。
非常感谢你的帮助!
答案1
最简单的解决方案是添加交换文件。如果您已经加密了根文件系统,我不会使用加密的交换文件,这只会稍微困难一点,但速度会更慢。交换文件的优点是您可以稍后将其删除以重新获得磁盘空间。而且磁盘已经加密了!
步骤很简单。首先,创建文件。例如,这将创建 1GB 的新交换:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
指示将新的交换文件放入。您可以随意命名它。您也可以添加多个交换of=/swapfile
文件。对于较新的 Linux 内核,速度与交换分区相同。dd
/swapfile
然后,您需要将交换文件格式化为交换空间,如下所示:
sudo mkswap /swapfile
此命令将给出一些输出,例如:
Setting up swapspace version 1, size = 1048576 KiB
no label, UUID=83352590-ef57-49f5-84c4-7fb847e4e4e0
这就是您的新交换文件。最后,您需要使用以下命令在您的机器上激活交换:
sudo swapon /swapfile
现在,sudo swapon -s
应该向您显示交换分区和交换文件。
然后,我建议通过如下方式更改权限来增加一些安全性:
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile
如果到目前为止一切顺利,您可以使用您最喜欢的编辑器添加以下行来永久添加交换文件/etc/fstab
:
/swapfile none swap sw 0 0
当然,您可以添加多个交换文件。并且您可以使用 删除交换文件sudo swapoff /swapfile
。
希望这可以帮助。
答案2
添加到最佳答案。因为我没有资格发表评论。抱歉。
如果您想增加交换空间并且已经分配了交换空间。
警告:关闭使用交换空间的应用程序。
首先,这样做,否则你会得到一个错误:
sudo swapoff -a
然后按照上面的指示进行操作。
此外,上述过程将清除以前的交换空间,因此如果您有 2 GB 的交换空间并想要额外的 6 GB,则必须分配新的 9 GB 交换空间。或者将交换文件命名为与其他交换文件不同的名称。
sudo dd if=/dev/zero of=/swapfile2 bs=1024 count=6144k
错误:
~ $sudo dd if=/dev/zero of=/swapfile bs=1024 count=6144k
dd: failed to open '/swapfile': Text file busy
笔记:这是对@Martin W 的建议扩展回答
答案3
请注意,如果您的安装使用 LVM,您可能已经有一个交换卷。使用 检查kvpm
。如果不是这种情况,以下是创建新的 4GB 交换文件的简明步骤。首先关闭所有使用交换空间的应用程序(或重新启动您的机器)。然后:
sudo swapoff -a # Turn off all swap space.
sudo rm /swapfile # Delete current swap file.
sudo dd if=/dev/zero of=/swapfile bs=1G count=4 # Make a new 4GB swap file.
sudo chown root:root /swapfile # Set owner to root, group root
sudo chmod 0600 /swapfile # Set permission to root
sudo mkswap /swapfile # Convert file to swap format
sudo swapon /swapfile # Enable swap space
运行htop
或其他系统监视器检查新交换是否生效。如果一切正常,请将以下行添加到 以使交换文件永久生效/etc/fstab
:
/swapfile none swap sw 0 0
答案4
本答案基于 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]