如何增加 Ubuntu 20.04 ZFS 上的交换空间?

如何增加 Ubuntu 20.04 ZFS 上的交换空间?

我最近安装了带有 ZFS 的 Ubuntu 20.04作为文件系统。我检查了我的 RAM/交换区,如下所示:

qallaf89@桌面$免费-h
              可用的免费共享缓冲区/缓存总数
内存:31Gi 22Gi 4.1Gi 1.9Gi 4.2Gi 6.0Gi
交换:2.0Gi 0B 2.0Gi

现在,如果我想正常增加交换空间,我会遵循本教程来自数字海洋它工作完美。但是,由于我有 ZFS,我遇到了一些问题:

qallaf89@桌面$ sudo fallocate -l 100G /swapfile
Fallocate: Fallocate 失败:不支持操作

我环顾四周,确实好像有一个ZFS/fallocate() 的问题

我也遇到过该文档来自 oracle但这对我来说也没有用:

qallaf89@桌面$ 交换 -l

未找到命令“交换”,您的意思是:

  deb systemtap 中的命令“stap”(4.2-3)
  deb DVB-apps 中的命令“szap”(1.1.1+rev1500-1.2)
  debsoapaligner 中的命令“soap”(2.20-3)
  deb sway 中的命令 'sway' (1.4-2)
  来自 deb slurm-client 的命令“smap”(19.05.5-1)
  deb secure-delete 中的命令“sswap”(3.1-6ubuntu2)
  deb snapd (2.44.3+20.04) 中的命令“snap”
  来自 debuckless-tools 的命令“swarp”(44-1)
  deb odin (2.0.3-2build1) 中的命令“拭子”

尝试: sudo apt install <deb name>

qallaf89@桌面$ sudo apt 显示交换
N:无法找到包交换
N:无法找到包交换
乙:没有找到包

有这方面知识的人可以帮我增加交换空间吗?

答案1

这来自 ArchWikihttps://wiki.archlinux.org/index.php/ZFS#Swap_volume

  1. “getconf PAGESIZE”是什么意思,即内存系统的首选内存页面大小?
  2. 创建 zfs 卷用于交换
  3. 准备作为交换
  4. 开始交换
  5. 在 etc/fstab 中将其标记为交换(由于 zfs 属性,这完全有可能自动完成。)

所以:

zfs create -V 8G -b $(getconf PAGESIZE) \
          -o logbias=throughput -o sync=always\
          -o primarycache=metadata \
          -o com.sun:auto-snapshot=false rpool/swap
mkswap -f /dev/zvol/rpool/swap
swapon /dev/zvol/rpool/swap

我不确定 logbias=thr..、primarycache=meta 和 '-o com.sun...' 是否适合您的情况,特别是当磁盘本身是 SSD 时。无论哪种方式,这都会创建一个 8GB 的​​大 zfs 卷。

在etc/fstab中:

/dev/zvol/rpool/swap none swap discard 0 0

关于 ZFS:您应该考虑并寻找更多磁盘,为了获得设置的可用性,您需要考虑如何添加镜像。如果你失去了 1TB 三星 SSD,整个池子就完蛋了。

关于 sda5:zpool管理部分FreeBSD 的手册中描述了如何将 vdev 更改为镜像对。

在这种情况下:

  1. 交换 sda5
  2. 最终清除标签
  3. 重新连接 vdev
  4. 等待重新银化
  5. 添加启动程序

所以:

swapoff /dev/sda5
zpool attach bpool sda5 sda6

并等待重新银化。

答案2

我还没有在 ZFS 文件系统上尝试过,但在 ext3、ext3、ext4、XFS 等许多其他文件系统上尝试过。从实时 USB 记忆棒启动,选择“尝试 Ubuntu 而不安装”,一旦启动并运行,就可以使用它gparted来调整分区大小。您需要缩小一个分区以释放足够的空间来扩大swap分区。这指导非常有帮助,向下滚动到“使用 GParted”。如果您需要更全面的手册来帮助您在这里找到一个。向下滚动到“调整分区大小”

答案3

我以前用过systemd-swap包取得了一些成功(到目前为止仅在 arch 上)——这可以在需要时动态分配目录内的交换文件,因此您不需要在池内保留一个大的 ZVOL,这会占用可用空间。我不确定它的性能如何,其他人可能会提供比我在这里更多的信息,但是,我创建了一个新的文件系统并将属性设置com.sun:auto-snapshotfalse如上所述 - 这可以防止某些实用程序创建快照,但直到今天我才意识到我仍然有使用手动创建的快照snapshot -r,所以我很快就会寻找更好的方法来做到这一点!但一般来说,您会希望阻止为此数据集创建任何快照,并根据您的场景进行调整,以实现速度和空间权衡(如果相关)。然后你会想要指向 systemd-swap 配置文件朝向该数据集的安装点。

相关内容