Своп-файл проще раздела:

fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

На Btrfs раньше нужен был отдельный chattr +C (отключить copy-on-write), иначе своп-файл не работал вовсе. В свежих util-linux (mkswap ≥ 2.41) mkswap --file сам выставляет nocow — ручной chattr больше не обязателен.

zram — не файл и не раздел, а блочное устройство в сжатом виде прямо в RAM: zramctl --find --size 2G + mkswap + swapon, либо декларативно через /etc/systemd/zram-generator.conf:

[zram0]
zram-size = ram / 2

Если своп на диске и zram сосуществуют — приоритет решает swapon -p N (больше = предпочтительнее). zram обычно ставят выше, чтобы диск включался только когда сжатая RAM-область заполнена.

#linux