zram 技术详解与实战指南
1. 技术原理
什么是 zram
zram(最初称为 compcache)是 Linux 内核中的一个模块,它在 RAM 中创建一个压缩的块设备。当数据写入该设备时,数据会被实时压缩并存储在内存中;当读取数据时,数据会被解压缩。
zram 最常见的用途是作为 Swap(交换分区)。通过将内存中的冷数据压缩后存回内存,而不是写入缓慢的磁盘,zram 可以显著提高系统的响应速度,尤其是在内存受限的设备(如嵌入式系统、旧电脑、入门级云主机)上。
工作原理
zram 的核心流程如下:
- 写操作:文件系统或 Swap 子系统向 zram 设备发送写请求(Page)。zram 驱动接收请求,使用选定的压缩算法(如 LZO, LZ4, ZSTD)压缩数据,然后通过
zsmalloc分配器将压缩后的数据存储在物理内存中。 - 读操作:系统请求读取数据。zram 驱动找到对应的内存块,解压缩数据,并将其返回给请求者。
zram vs 传统 Swap
| 特性 | zram (压缩内存 Swap) | 传统磁盘 Swap (HDD/SSD) |
|---|---|---|
| 存储介质 | 物理 RAM | 硬盘 / SSD |
| I/O 延迟 | 极低 (微秒级, CPU 密集型) | 高 (毫秒级, IO 密集型) |
| 吞吐量 | 极高 (GB/s 级别) | 受限于磁盘接口 (MB/s) |
| CPU 消耗 | 较高 (用于压缩/解压) | 极低 (DMA 传输) |
| 内存占用 | 占用物理内存 (压缩后) | 不占用物理内存 |
| 磁盘磨损 | 无 | 有 (尤其是 SSD) |
| 适用场景 | 内存紧张、嵌入式、无 Swap 分区 | 内存充足、休眠 (Hibernation) |
注:zram 的读写延迟远低于传统 HDD Swap,略高于纯内存操作,但提供了更大的有效内存容量。
内核实现架构
zram 位于 Linux 内核的块设备层(Block Device Layer)。它不直接操作底层物理磁盘,而是通过 zsmalloc 内存分配器管理内存池。
- VFS / Block Layer: 处理上层的文件系统请求。
- zram Driver: 核心驱动,负责压缩/解压调度。
- Compressor: 压缩算法后端(LZO, LZ4, ZSTD 等)。
- zsmalloc: 专门为存储压缩页面设计的内存分配器,解决内存碎片问题。
2. 配置部署指南
安装与检查
zram 自 Linux 3.14 起已合并入主线内核,大多数现代发行版默认已编译该模块。
检查内核模块:
modinfo zram
加载模块:


