backgroundbackground

Zram简明教程(Debian系)

Linux / Debian / Zram

教程

2024-05-01 11:00

一、Zram介绍

Zram是一个Linux内核模块,用于在RAM中创建基于压缩的块设备,也称为RAM磁盘,具有即时磁盘压缩功能。通过Zram创建的块设备可以用作交换空间或通用RAM磁盘。最常见的用途是用于存储临时文件(如/tmp)和作为交换设备。最初,Zram只用于交换空间,因此有了最初的名称"compcache"(压缩缓存)。与传统的交换空间不同,Zram在不使用时仅占用磁盘最大大小的0.1%。

Zram最早于2014年3月30日发布在Linux内核3.14版本中,经过四年的驱动阶段后,正式进入主线Linux内核。从Linux内核3.15版本开始,Zram支持多个压缩流和多种压缩算法,包括DEFLATELZ4LZOZstandard等。Zram的默认压缩算法是LZO-RLE,具有速度和压缩比的平衡。通过sysfs,可以选择压缩算法。

使用Zram作为压缩交换空间可以使Linux更有效地利用RAM,尤其对于内存较少的计算机效果显著。此外,Zram还可以减少对闪存设备的磨损,延长其使用寿命,并显著降低需要交换操作的Linux系统的I/O操作。

简单来说:Zram通过压缩内存来扩大内存可用量

相比于swap和zswap,zram不需要读写磁盘,它直接将压缩后的数据放在内存中,因此速度相比swap会快很多。

二、安装使用

1、安装zram

更新软件源并安装zram工具包:

sudo apt update
sudo apt install zram-tools

2、编辑配置文件

安装后会在/etc/default/zramswap生成默认配置文件,可用配置项如下

  • ALGO
    • 压缩算法,可选值见/sys/block/zram0/comp_algorithm
    • 算法对比:
      • 速度:lz4 > zstd > lzo
      • 压缩比率:zstd > lzo > lz4
  • PERCENT
    • 指定多少比例的内存可被压缩,该选项和SIZE互斥,一般用SIZE配置
  • SIZE
    • 指定多大内存可被zram压缩,单位MiB
  • PRIORITY
    • 优先级,数值越大优先级越高
    • 注意:该值应该大于硬盘swap的优先级,否则zram不生效

参考配置如下:

# 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=12000

# 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

修改完配置后重启zram服务生效:

sudo systemctl restart zramswap.service

3、查看Zram状态

使用该命令查看状态:

sudo zramctl

参考输出:

NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lz4          11.7G  6.1G  2.3G  2.5G      16 [SWAP]

输出说明:

  • NAME
    • zram设备名称
  • ALGORITHM
    • zram压缩算法
  • DISKSIZE
    • 可压缩的总内存大小
  • DATA
    • 已压缩的内存原始大小
  • COMPR
    • 已压缩的内存压缩后大小
  • TOTAL
    • zram设备当前占用总大小
    • 包括压缩后的内存以及元数据
  • STREAMS
    • 使用多少个线程进行压缩处理
  • MOUNTPOINT
    • 挂载点