一、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支持多个压缩流和多种压缩算法,包括DEFLATE
、LZ4
、LZO
、Zstandard
等。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
- 指定多大内存可被zram压缩,单位
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
- 挂载点