为树莓派启用zram,也适用于其他Linux发行版和硬件,这里仅作示例。
- 树莓派:Raspberry Pi 3b
- SoC:BCM2835
- RAM:1GB LPDDR2
配置zram
手动启用 Zram
手动启用和
zramctl
配置方式任选其一即可。
- 启用zram模块:
1
sudo modprobe zram
- 设定zram大小,我这里设定为512MB:
1
echo 512M | sudo tee /sys/block/zram0/disksize
- 将zram格式化为swap:
1
sudo mkswap /dev/zram0
- 启用zram:
1
sudo swapon /dev/zram0
此时已经可以看到zram了:
1 | root@raspberrypi:~# swapon --show |
持久化启用zram
- 启用zram模块:
编辑/etc/modules-load.d/zram.conf
文件(如果没有则需要创建):编辑1
zram
/etc/modprobe.d/zram.conf
文件(如果没有则需要创建):1
options zram num_devices=1
- 设置zram参数
编辑/etc/udev/rules.d/99-zram.rules
文件(如果没有则需要创建):我这里采用了1
KERNEL=="zram0", ATTR{disksize}="512M", ATTR{comp_algorithm}="lz4", TAG+="systemd"
lz4
算法,zram0
容量为512MB。 - 创建Systemd配置文件使得启动时自动挂载Zram:其中
1
2
3
4
5
6
7
8
9
10
11
12
13[Unit]
Description=Swap with zram
After=multi-user.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStartPre=/usr/sbin/mkswap /dev/zram0
ExecStart=/usr/sbin/swapon /dev/zram0
ExecStop=/usr/sbin/swapoff /dev/zram0
[Install]
WantedBy=multi-user.targetExecStart
行可添加--priority
参数指定优先级,值为0-100,越高越优先,不指定则由内核自动分配并交叉调用,例如:系统将按照swap的优先级来使用不同的swap项。1
ExecStart=/usr/sbin/swapon --priority 50 /dev/zram0
至此每次启动时都会由udev自动创建对应参数的zram设备并由Systemd格式化和挂载:
1 | root@raspberrypi:~# swapon --show |
停用zram
- 从swap上卸载:
1
sudo swapoff /dev/zram0
- 重置zram0:
1
echo 1 | sudo tee /sys/block/zram0/reset