我最近安装了带有 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:
- “getconf PAGESIZE”是什么意思,即内存系统的首选内存页面大小?
- 创建 zfs 卷用于交换
- 准备作为交换
- 开始交换
- 在 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 更改为镜像对。
在这种情况下:
- 交换 sda5
- 最终清除标签
- 重新连接 vdev
- 等待重新银化
- 添加启动程序
所以:
swapoff /dev/sda5
zpool attach bpool sda5 sda6
并等待重新银化。
答案2
答案3
我以前用过systemd-swap
包取得了一些成功(到目前为止仅在 arch 上)——这可以在需要时动态分配目录内的交换文件,因此您不需要在池内保留一个大的 ZVOL,这会占用可用空间。我不确定它的性能如何,其他人可能会提供比我在这里更多的信息,但是,我创建了一个新的文件系统并将属性设置com.sun:auto-snapshot
为false
如上所述 - 这可以防止某些实用程序创建快照,但直到今天我才意识到我仍然有使用手动创建的快照snapshot -r
,所以我很快就会寻找更好的方法来做到这一点!但一般来说,您会希望阻止为此数据集创建任何快照,并根据您的场景进行调整,以实现速度和空间权衡(如果相关)。然后你会想要指向 systemd-swap 配置文件朝向该数据集的安装点。