首先登录 root 用户,确认系统种是否已经开启 zram 与 swap
swapon --show
如果已经开启 swap 但未开启 zram,建议先临时关闭 swap
swapoff -a
在 /etc/fstab 中临时注释掉 swap
# /swapfile none swap defaults
开启 zram
创建以下内容的文件,在加载 Linux 内核期间启用 zram
echo zram > /etc/modules-load.d/zram.conf
创建zram内核模块的配置文件
cat > /etc/modprobe.d/zram.conf << EOF options zram num_devices=1 EOF
可以通过 num_devices 设置 zram 块设备数量,一般设置为1即可
创建一条udev规则,并在其中指定 zram 的大小,可以通过 ATTR{disksize} 设置 zram 的设备容量大小,一般设置为物理内存的一半即可
cat > /etc/udev/rules.d/99-zram.rules << EOF
KERNEL=="zram0", ATTR{disksize}="512M",TAG+="systemd"
EOF
可以加入 ATTR{comp_algorithm}=”zstd” 参数改变压缩算法,建议不添加使用默认
如果需要更改压缩算法,应先查看系统支持的算法
cat /sys/block/zram0/comp_algorithm
创建 zram 服务
vi /etc/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 -p 2 /dev/zram0 ExecStop=/sbin/swapoff /dev/zram0 [Install] WantedBy=multi-user.target
开机自动启动 zram 服务
systemctl enable zram.service
优化内核参数
sed -i '/vm.swappiness/d' /etc/sysctl.conf sed -i '/vm.page-cluster/d' /etc/sysctl.conf sed -i '/vm.vfs_cache_pressure/d' /etc/sysctl.conf cat >> /etc/sysctl.conf << 'EOF' vm.swappiness = 100 vm.page-cluster = 0 vm.vfs_cache_pressure = 40 EOF sysctl -p
重启服务器
reboot
重启后,检查 zram 块设备的状态
zramctl
与 swap 共存
对于小内存的服务器,建议开启 swap
创建 swap 空间
fallocate -l 1G /swapfile chmod 600 /swapfile
如果是临时关闭 swap,则可以直接进行挂载,注意目录要与之前一致
挂载 swap
swapon /swapfile
这里需要加入 –priority -3 参数来降低 swap 的调度优先级
开机自动挂载 swap
cat >> /etc/fstab << 'EOF' /swapfile none swap defaults 0 0 EOF
查看 zram 与 swap 共存状态
swapon --show
如果能看到 zram 与 swap 的信息,即配置成功