首页 公告 项目 RSS

⬇️⬇️⬇️ 欢迎关注我的 telegram 频道和 twitter ⬇️⬇️⬇️


联系方式: Twitter Github Email Telegram

介绍一下zram

September 17, 2025 本文有 952 个字 需要花费 2 分钟阅读

简介

zram 是 Linux 原生支持的内存压缩模块。它在内存里创建一个虚拟块设备,所有写入数据都会即时压缩存储。最常见用途是当作 swap 设备:比传统硬盘 swap 快十倍以上,同时大幅减少对磁盘的磨损。zram一般用于于树莓派、路由器等低配设备,但是在内存比较大的机器上使用zram,也可以增加一定的系统性能,减少系统的oom,简而言之,zram swap属于“开了没坏处,出事时极有用”的增强手段。

操作

我最常使用nixos和ubuntu,所以介绍下这两个系统的配置方法

nixos最简单,直接在/etc/nixos/configuration.nix加入:

zramSwap.enable = true;

就可以了,一般默认是内存的一半大小,当然还有下面这些参数:

  • zramSwap.priority 设置 zram swap 的交换优先级。
  • zramSwap.memoryMax 设置 zram 设备的最大内存空间(即 zram 设备最大压缩块设备大小)。
  • zramSwap.algorithm 指定 zram 使用的压缩算法。
  • zramSwap.swapDevices 允许在 zramSwap 配置下声明多个 zram swap 设备。
  • zramSwap.memoryPercent 根据物理内存百分比自动分配 zram swap 大小 默认50%。
  • zramSwap.writebackDevice 实验性功能,让 zram swap 支持“写回”,部分 swap 数据先压缩存在 zram,超出后写回硬盘分区(结合硬盘swap和内存swap双策略)。

保存之后执行:

nixos-rebuild switch

就可以生效。

之后用:

swapon --show

验证效果。

ubuntu配置其实也不复杂,只要安装下面这个包就可以:

sudo apt install zram-tools

之后就是和nixos一样配置一些参数:

编辑 /etc/default/zramswap

# Compression algorithm selection
# speed: lz4 > zstd > lzo
# compression: zstd > lzo > lz4
# This is not inclusive of all that is available in latest kernels
# See /sys/block/zram0/comp_algorithm (when zram module is loaded) to see
# what is currently set and available for your kernel[1]
# [1]  https://github.com/torvalds/linux/blob/master/Documentation/blockdev/zram.txt#L86
ALGO=lz4

# Specifies the amount of RAM that should be used for zram
# based on a percentage the total amount of available memory
# This takes precedence and overrides SIZE below
PERCENT=50

# Specifies a static amount of RAM that should be used for
# the ZRAM devices, this is in MiB
SIZE=4096

# Specifies the priority for the swap devices, see swapon(2)
# for more details. Higher number = higher priority
# This should probably be higher than hdd/ssd swaps.
PRIORITY=100
  • ALGO 指定 zram 所用的压缩算法。
  • PERCENT 指定用多少百分比的物理内存分配给 zram。
  • SIZE 指定 zram swap 的固定大小,单位为 MiB(兆字节)。
  • PRIORITY 设置该swap设备的优先级。多个swap设备并存时,优先级数值越高,系统越优先使用(比如 zram swap 可以设为100,远高于默认的硬盘swap)。

之后重启下面服务生效:

systemctl restart zramswap.service

最后查看效果:

swapon --show

关于压缩算法

zram 支持很多压缩算法,你可以使用下面命令查看支持的压缩算法:

cat /sys/block/zram0/comp_algorithm

但是一般常用的是lzo和zstd,lzo的优势就是速度快,zstd的优势是压缩率高,所以追求容量可以使用zstd,追求速度可以使用lzo。

欢迎关注我的博客 www.bboy.app

Have Fun