linux:fedora:extend_zram_swap

Fedora 33 以降で標準になった ZRAM スワップの容量を拡張する

ブロックデバイス zram0 が SWAP としてマウントされている。

$ lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom
zram0  251:0    0  970M  0 disk [SWAP]
vda    252:0    0  100G  0 disk
├─vda1 252:1    0    1M  0 part
├─vda2 252:2    0   99G  0 part /
└─vda3 252:3    0    1G  0 part /boot

複数のスワップ領域が存在する場合は、swapon で優先順位なども分かります。

$ swapon --show

NAME       TYPE      SIZE USED PRIO
/dev/zram0 partition 970M 174M  100

ZRAM スワップの利用状況を表示する。

$ zramctl

NAME       ALGORITHM DISKSIZE   DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lzo-rle       970M 173.6M 55.4M 59.1M       2 [SWAP]

$ sudo nano /usr/lib/systemd/zram-generator.conf

標準の設定では使用可能な物理メモリー容量または最大 8GB の設定になっている。
そして、使用可能メモリー容量の 1 倍の設定です。

   1 # This config file enables a /dev/zram0 device with the default settings:
   2 # — size — same as available RAM or 8GB, whichever is less
   3 # — compression — most likely lzo-rle
   4 #
   5 # To disable, uninstall zram-generator-defaults or create empty
   6 # /etc/systemd/zram-generator.conf file.
   7 [zram0]
   8 zram-size = min(ram, 8192)

ZRAM スワップの設定を、使用可能な物理メモリー容量の 3 倍に変更する事も可能だが…🤔(推奨しない!)
物理メモリー容量を超えてスワップした場合に、メモリー圧縮しながら更にディスクスワップするので、最悪の場合マシンにログイン不能なほどパフォーマンスが劇的に悪化する😱

   1 # This config file enables a /dev/zram0 device with the default settings:
   2 # — size — same as available RAM or 8GB, whichever is less
   3 # — compression — most likely lzo-rle
   4 #
   5 # To disable, uninstall zram-generator-defaults or create empty
   6 # /etc/systemd/zram-generator.conf file.
   7 [zram0]
   8 #zram-size = min(ram, 8192)
   9 zram-fraction = 3.0
  10 max-zram-size = 8192

ZRAM スワップの設定は標準のままにする。

   1 # This config file enables a /dev/zram0 device with the default settings:
   2 # — size — same as available RAM or 8GB, whichever is less
   3 # — compression — most likely lzo-rle
   4 #
   5 # To disable, uninstall zram-generator-defaults or create empty
   6 # /etc/systemd/zram-generator.conf file.
   7 [zram0]
   8 zram-size = min(ram, 8192)

その代わりに従来のスワップファイルを追加する。
btrfs 上の swap ファイルは nocow(copy on write禁止) フラグを設定して生成する必要がある。

$ sudo truncate -s 0 /var/swap
$ sudo chattr +C /var/swap
$ sudo fallocate -l 3072M /var/swap
$ sudo lsattr /var/swap

---------------C------ /var/swap

$ sudo chmod 600 /var/swap

$ sudo mkswap /var/swap

Setting up swapspace version 1, size = 3 GiB (3221221376 bytes)
no label, UUID=d79c6784-7da2-480d-b0bf-4985d2d8aea1

$ sudo swapon -v /var/swap

swapon: /var/swap: found signature [pagesize=4096, signature=swap]
swapon: /var/swap: pagesize=4096, swapsize=3221225472, devsize=3221225472
swapon /var/swap

$ echo '/var/swap                                 none                    swap    sw              0 0' | sudo tee -a /etc/fstab

/var/swap                                 none                    swap    sw              0 0

サービス名を調べる。

$ systemctl | grep systemd-zram

  systemd-zram-setup@zram0.service                                                                                      loaded active exited    Create swap on /dev/zram0
  system-systemd\x2dzram\x2dsetup.slice                                                                                 loaded active active    Slice /system/systemd-zram-setup

サービスを再起動する。

$ sudo systemctl restart systemd-zram-setup@zram0

ZRAM スワップ+スワップファイルの容量が増えていることを確認する。(大きい priority が優先される🤔ここでは 1 の zram0 から優先して使われる😻)

$ swapon --show

NAME       TYPE      SIZE   USED PRIO
/dev/zram0 partition 964M 295.3M    1
/var/swap  file        3G     0B   -2

$ zramctl

NAME       ALGORITHM DISKSIZE   DATA  COMPR  TOTAL STREAMS MOUNTPOINT
/dev/zram0 lzo-rle       964M 295.2M 96.7M 101.6M       2 [SWAP]

$ free

               total        used        free      shared  buff/cache   available
Mem:          987588      599640       77528       14828      310420      221952
Swap:        4132856      302364     3830492

  • linux/fedora/extend_zram_swap.txt
  • 最終更新: 2025/10/03 05:57
  • by ともやん