Linux 更改内存交换 swap 为 zram 压缩,减小磁盘写入

1、查看当前 swap 的方式

swapon --show

我这里是默认的 swap 文件,大小为 2G。

2、安装 zram

Ubuntu 下:

sudo apt install zram-tools

安装后默认会启动:

3、关闭默认的 swap 文件

sudo swapoff /swapfile

其次是关闭 /etc/fstab 中的 /swapfile(下图最后一行):

这一步只是优化,不关闭也没影响。

4、配置 zram

该文件安装 zram 后默认会生成,根据个人喜好选择编辑器,我习惯 vi:

sudo vi /etc/default/zramswap

可以根据个人情况,修改以下几个参数:

# 压缩算法
ALGO=lz4 
# 定义 zram 设备占用的最大内存空间(如 50% 内存)
PERCENT=20%
# swap 优先级(越高越优先使用)
PRIORITY=100

    ALGO:

    speed: lz4 > zstd > lzo
    compression: zstd > lzo > lz4

    lz4 为大多数场景的最佳选择。

    PERCENT:

    • ​内存 ≤ 4GB​​:建议 PERCENT=50%~100%(激进交换)。
    • ​内存 4~8GB​​:建议 PERCENT=25%~50%
    • ​内存 > 8GB​​:可设为 10%~25%(zram 主要用于临时突发负载)。
    • ​警告​​:过度分配可能导致 OOM(内存耗尽),尤其在低内存设备上。

    PRIORITY:

    • 通常为 0~32767,默认磁盘 swap 优先级为 -2
    • ​推荐值​​:PRIORITY=100(确保 zram 优先于磁盘)。

    5、重启 zram 服务

    sudo systemctl restart zramswap.service  # 重启服务生效

    如果遇到重启失败报错,提示设备或资源忙:

    zramswap.service - Linux zramswap setup
         Loaded: loaded (/lib/systemd/system/zramswap.service; enabled; vendor preset: enabled)
         Active: failed (Result: exit-code) since Tue 2025-05-06 20:13:21 CST; 16s ago
           Docs: man:zramswap(8)
        Process: 5786 ExecStart=/usr/sbin/zramswap start (code=exited, status=1/FAILURE)
       Main PID: 5786 (code=exited, status=1/FAILURE)
            CPU: 15ms
    
    5月 06 20:13:21 systemd[1]: Starting Linux zramswap setup...
    5月 06 20:13:21 root[5787]: Starting Zram
    5月 06 20:13:21 zramswap[5787]: <13>May  6 20:13:21 root: Starting Zram
    5月 06 20:13:21 zramswap[5786]: /usr/sbin/zramswap: 第 53 行: echo: 写入错误:设备或资源忙
    5月 06 20:13:21 systemd[1]: zramswap.service: Main process exited, code=exited, status=1/FAILURE
    5月 06 20:13:21 systemd[1]: zramswap.service: Failed with result 'exit-code'.
    5月 06 20:13:21 systemd[1]: Failed to start Linux zramswap setup.

    需要手动关闭 zram:

    # 停止所有 swap 并卸载 zram 模块
    sudo swapoff -a
    sudo modprobe -r zram 2>/dev/null || true
    sudo rm -f /dev/zram*
    
    # 确保内核模块干净加载
    sudo modprobe zram num_devices=1

    重新启动服务即可:

    sudo systemctl restart zramswap.service

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    plmm烟酒僧

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值