ZFS 分区作为交换

Dan*_*Dan 10 server swap zfs

我正在使用 native-zfs 并且想知道是否有一种方法可以将 ZFS 分区用于 SWAP。我正在使用拇指驱动器运行我的服务器,并认为这是加快速度的好方法。

mzu*_*her 6

这是从zfsonlinux wiki复制的更详细的指南:

步骤 1:创建用作交换设备的卷数据集 (zvol)

zfs create -V 4G -b $(getconf PAGESIZE) -o compression=zle \
      -o logbias=throughput -o sync=always \
      -o primarycache=metadata -o secondarycache=none \
      -o com.sun:auto-snapshot=false rpool/swap
Run Code Online (Sandbox Code Playgroud)

您可以根据需要调整尺寸(4G零件)。

压缩算法设置为 ,zle因为它是最便宜的可用算法。对于ashift=12(磁盘上有4 kiB 块),4 kiB 页面大小的常见情况意味着没有压缩算法可以减少 I/O。例外是全零页,它们被 ZFS 删除;但是必须启用某种形式的压缩才能获得此行为。如果您的池使用ashift=9,则可以使用compression=lz4.

第 2 步:格式化交换设备

mkswap -f /dev/zvol/rpool/swap
Run Code Online (Sandbox Code Playgroud)

第 3 步:更新 /etc/fstab

echo /dev/zvol/rpool/swap none swap defaults 0 0 >> /etc/fstab
Run Code Online (Sandbox Code Playgroud)

警告:始终/dev/zvol在配置文件中使用长别名。切勿使用简短的/dev/zdX设备名称。

步骤 4:启用交换设备

swapon -av
Run Code Online (Sandbox Code Playgroud)


jll*_*gre 4

使用 ZFS 进行交换应该可以正常工作,就像在 Solaris 和 FreeBSD 下一样。

zfs create pool/swap -V 1G -b 4K
mkswap -f /dev/pool/swap
swapon /dev/pool/swap
Run Code Online (Sandbox Code Playgroud)