这份指南将帮助你在 Alpine Linux 上从零开始配置 zram。由于 Alpine 极其精简,手动确认内核支持是成功的关键。


Alpine Linux zram 配置完全手册

第一步:检查内核支持与压缩算法

在配置之前,必须确认内核是否加载了模块,以及支持哪些算法。

  1. 加载内核模块:

    modprobe zram
    
  2. 查看支持的算法:

    cat /sys/block/zram0/comp_algorithm
    
  • 输出示例: lzo lzo-rle [lz4] zstd
  • 注意: 带有中括号 [] 的是当前默认值。请记录下你看到的算法(推荐顺序:zstd > lz4 > lzo)。

第二步:安装管理工具

安装 Alpine 官方提供的 zram 初始化脚本和基础工具包:

apk add zram-init util-linux

第三步:配置 zram 参数

编辑配置文件。如果你的内存较小(如 300MB),建议设置 zram 大小为内存的 1:1 或 1.5:1。

vi /etc/conf.d/zram-init

建议配置内容:

# 1. 设置设备数量(通常只需 1 个作为 Swap)
num_devices=1

# 2. 设置设备 0 的参数
type0=swap
flag0=

# 3. 设置算法(填入第一步中查到的支持算法,如 lz4 或 zstd)
algo0=lz4

# 4. 设置大小(单位 MB,建议 300)
size0=300

第四步:启动与开机自启

清理可能存在的残留手动设置,并启动服务:

  1. 重置并启动:

    swapoff /dev/zram0 2>/dev/null
    rc-service zram-init restart
    
  2. 设置开机自动加载:

    rc-update add zram-init default
    

第五步:验证运行状态

使用以下两个命令确认 zram 是否正在为你工作:

  1. 查看 Swap 优先级:

    swapon --show
    
  • 确认 /dev/zram0 的 PRIO(优先级)高于其他的 /swapfile(数值越大优先级越高)。
  1. 查看压缩统计:

    zramctl
    
  • DISKSIZE: 你设定的虚拟大小(如 300M)。
  • DATA: 实际存入的数据。
  • COMPR: 压缩后占用的物理内存。

💡 常见问题排查

  • 报错 Invalid argument: 通常是 algo0 填写的算法内核不支持,请回到第一步重新确认。
  • zram1 报错: 如果你不需要把 /tmp 挂载到 zram,确保配置文件中注释掉所有以 1 结尾的变量(如 type1, size1)。
  • 内存依然不足: 可以尝试将 size0 调大到物理内存的 2 倍,lz4 算法通常能处理这种压缩比。

附注(raymoon): 推荐使用alpine/debian通用的脚本,包括清理碎片等功能:
https://ytai.de/t/zram-debian-alpine/43