Zram

来自资料库(何亚红)
跳转到导航 跳转到搜索

说明

zram是一个基于内存的Linux块设备,其页可压缩。

zram通常配合swap使用时可优化内存实现内存压缩功能,也可以直接当作普通块设备使用。

手动加载

modprobe

modprobe可用于加载Linux内核模块。

注意:需要root权限执行。只能加载未加载的模块。

模块参数参数:

参数名称 说明
num_devices zram设备数量,如modprobe zram num_devices=32,用于加载zram时产生32个zram设备文件(zram0到zram31)。

zramctl

zramctl是一个设置或控制zram设备的工具。

注意:需要root权限执行。

zram设备文件的大小可由zramctl的-s选项设置。

自动加载

此章节适用于ubuntu 22.04(及以上)或者具有以下特征的Linux系统:

  • 采用udev作为设备管理器。
  • 采用systemd作为服务管理器及init系统。

模块自动加载

在/etc/modules或者/etc/modules-load/modules.conf(若都不存在则创建/etc/modules-load/modules.conf)中添加一行,内容为zram。

添加后开机将自动加载zram模块。

modprobe选项

在/etc/modprobe.d/zram.conf(若不存在则创建)中添加如下内容:

#使用options选项设置加载模块时的参数。
#下面的设置将zram设备数量设置为32
options zram num_devices=32

udev设置

在/etc/udev/rules.d/99-zram.rules(若不存在则创建)中添加如下内容:

#当加载zram0设备时通过sysfs设置zram磁盘大小为8G(也可设置为其它值):
KERNEL=="zram0",ATTR{disksize}="8192M",TAG+="systemd"

ZRAM设置为SWAP

此章节适用条件同模块自动加载。

注意:模块自动加载必须设置完成且SWAP将占用zram0。

创建文件/lib/systemd/system/zram.service并写入以下内容:

[Unit]
Description=Swap with zram
After=multi-user.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStartPre=/sbin/mkswap /dev/zram0
ExecStart=/sbin/swapon /dev/zram0
ExecStop=/sbin/swapoff /dev/zram0

[Install]
WantedBy=multi-user.target

使用systemctl enable zram启用zram作为swap,重启系统生效。

官方资料

https://docs.kernel.org/admin-guide/blockdev/zram.html