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

Abd*_*laf 3 zfs ubuntu swap

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

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

现在,如果我想正常增加交换空间,我会按照Digital Ocean 中的教程进行操作,效果非常好。但是,由于我有 ZFS,我遇到了一些问题:

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

我环顾四周,确实ZFS / Fallocate()似乎有问题。

我也从 oracle看到了这个文档,但它对我来说也没有用:

qallaf89@desktop : ~ $ 交换 -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@desktop : ~ $ sudo apt show swap
N:无法找到包交换
N:无法找到包交换
E:未找到包

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

Ste*_*und 6

这来自 ArchWiki https://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
Run Code Online (Sandbox Code Playgroud)

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

在etc/fstab中:

/dev/zvol/rpool/swap none swap discard 0 0
Run Code Online (Sandbox Code Playgroud)

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

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

在这种情况下:

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

所以:

swapoff /dev/sda5
zpool attach bpool sda5 sda6
Run Code Online (Sandbox Code Playgroud)

并等待重新银化。

  • 最好使用“sync=standard”,而不是“sync=always”,因为有一个未解决的错误会导致交换 zvols 挂起! (2认同)