Ubuntu

如何在 Ubuntu 20.04 ZFS 上增加交換空間?

  • February 2, 2021

我最近安裝了帶有 ZFS作為文件系統的**Ubuntu 20.04 。**我檢查了我的 RAM / 交換,如下所示:

**qallaf89 @ 桌面**: **~** $ free -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 @ 桌面**: **~** $ swap -l

找不到命令“交換”,您的意思是:

來自 deb systemtap 的命令“stap”(4.2-3)
來自 deb dvb-apps (1.1.1+rev1500-1.2) 的命令“szap”
來自 deb soapaligner (2.20-3) 的命令“soap”
來自 deb sway (1.4-2) 的命令“搖擺”
來自 deb slurm-client (19.05.5-1) 的命令“smap”
來自 deb 安全刪除 (3.1-6ubuntu2) 的命令“sswap”
來自 deb snapd (2.44.3+20.04) 的命令“snap”
來自 deb sinkless-tools 的命令 'swarp' (44-1)
來自 deb odin (2.0.3-2build1) 的命令“swab”

嘗試: sudo apt install <deb name>

**qallaf89@desktop** : **~** $ sudo apt show swap
N:無法找到包交換
N:無法找到包交換
**E:**沒有找到包

有這方面知識的人可以幫我增加我的交換空間嗎?

這來自 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

我不確定 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:FreeBSD 手冊中的zpool 管理部分描述瞭如何將 vdev 更改為鏡像對。

在這種情況下:

  1. 交換 sda5
  2. 最終清除標籤
  3. 重新連接 vdev
  4. 等待重發
  5. 添加引導程序

所以:

swapoff /dev/sda5
zpool attach bpool sda5 sda6

然後等待resilver。

引用自:https://unix.stackexchange.com/questions/593976