Linux カーネルモジュールレベルで RAM に圧縮ブロックデバイスを作成します。


zram#

zram は最新で2つの使用方法があります。

  • swap として使用する(実メモリより圧縮される分使用範囲が少なくできる)
  • 一時ファイルとして使用する(/tmp の代わり)

ここでは主に Debian 系で swap としての用途で説明しています。
swap として使用する事で特にメモリが少ない環境で効果があります。

Arch Linux 関連は Arch Linux Wiki にまとめられています。

https://wiki.archlinux.jp/index.php/Zram


デフォルトで採用される Linux ディストリビューション#

  • Fedora 33 以降(したがって RedHat 系は最新版すべて)
  • Raspberry Pi (Debian 13 trixie ベースから)

その他 MX Linux の MX-25 からインストーラーに zram の設定が含まれています。
MX-23 以前でも zram が考慮されていて、容易に使用できるようになっています。

https://mxlinux.org/wiki/other/zram/


systemd-zram-generator#

https://github.com/systemd/zram-generator

Debian 12 以降で使用できます。現在 Debian 系はこちらが主に採用されています。

sudo apt install systemd-zram-generator
sudo systemctl daemon-reload
sudo systemctl start /dev/zram0

使用量のデフォルト設定は zram-size = min(ram / 2, 4096) となっています。
メモリ 8GB 以上は 4GB 分、それより少なければ半分のメモリを zram へ割り当てます。
特にこの設定を変える必要はないでしょう。


zram-tools#

https://github.com/highvoltage/zram-tools

Debian 11 以降で使用できます。
ただし GitHub を見ると Public archive 状態になっています。

sudo apt install zram-tools
sudo nano /etc/default/zramswap

#  速度: lz4 > zstd > lzo
# 圧縮率: zstd > lzo > lz4
ALGO=zstd

# zram を使用する割合(%)。サイズよりも優先される
PERCENT=60

# zram を使用するサイズ
#SIZE=256

# swap として使用する際の優先度
#PRIORITY=100

sudo systemctl reload zramswap.service