在 SUSE Linux Micro 上安装、配置和管理 zram
- 内容
zram 是一个内核模块,用于在 RAM 中创建压缩的块设备。
- 原因
本文介绍如何在 SUSE Linux Micro 上安装和配置 zram。
- 工作量
读完本文大约需要 15 分钟。
- 目标
您将在 RAM 中配置块设备。
- 要求
已注册且正在运行的 SUSE Linux Micro 实例。
1 什么是 zram? #
zram 是一个内核模块,用于在 RAM 中创建压缩的块设备。块设备可以用作 RAM 磁盘(通常用于存储临时文件)或交换空间。
1.1 zram 的优势 #
使用 zram 可以获享以下好处:
快速 I/O 操作 — zram 本质上是基于 RAM 的,因此块设备可以提供非常快速的数据访问。
节省内存 — 由于使用 zram 时数据经过压缩,因此可以节省大量内存。这样 zram 便可有效地使用 RAM,特别适合低 RAM 环境,例如嵌入式系统。
块设备上的文件系统 — 您可以在块设备上创建文件系统。
1.2 zram 的局限性 #
即使您在永久存储设备上配置后备设备,也不支持休眠到 zram 交换空间。
2 设置 zram #
要在系统上正确设置 zram,请执行以下步骤。后续几节将提供相关细节。
安装
zram-generator
实用程序,用于根据提供的配置创建 RAM 块设备。关于 安装的细节,请参见第 2.1 节 “安装 zram 软件包”。按第 2.2 节 “zram 所需的配置”中所述准备配置。
按照第 2.3 节 “创建设备单元”中所述运行命令以创建新设备单元。
重引导计算机。
校验一切是否正常工作。运行
zramctl
命令,该命令应生成类似于以下内容的输出:>
sudo
zramctl
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT /dev/zram1 lzo-rle 96.6M 4K 79B 12K 1 [SWAP] /dev/zram0 lzo-rle 483M 4K 79B 12K 1 [SWAP]
2.1 安装 zram 软件包 #
SUSE Linux Micro 上默认不提供软件包 zram-generator
。按如下所示安装该软件包:
>
sudo
transactional-update pkg install zram-generator
安装成功后,重引导系统。
2.2 zram 所需的配置 #
zram 的主配置文件为 /etc/systemd/zram-generator.conf
。不过,您可以创建一个包含一组插入式文件的目录 /etc/systemd/zram-generator.conf.d/
,这些文件可以覆盖主配置文件中的条目。
2.2.1 /etc/systemd/zram-generator.conf
文件 #
该文件不会随 zram-generator
软件包一起安装,因此您需要编写自己的文件。下文介绍了要添加的选项。第 2.2.1.1 节 “/etc/systemd/zram-generator.conf
示例”中提供了一个示例。
请至少定义一个 zram 设备。编号从 0 开始,因此要定义一个 zram 设备,请在配置文件中添加 [zram0]
部分。
您可以在 zram 设备部分下定义以下条目:
- host-memory-limit
指定可创建块设备的情况下主机的 RAM 上限(以 MiB 为单位)。如果该值较大,则不会创建 zram 设备。如果未设置该值或将其设置为
none
,则主机 RAM 没有上限。- zram-size
指定 zram 设备相对于主机 RAM 的大小。默认值为
zram-size = min(ram / 10, RAM_HARD_LIMIT)
。它是二者中的较小值,其中ram
是使用MemTotal
获得的主机 RAM 大小。ram
是主机的总内存量(以 MB 为单位)。ram/10
– 是可用于 zram 的内存占主机总内存的比率。根据示例,zram 可以使用主机总内存的 10%。我们建议将占主机 RAM 的比率保持在 10 - 50% 之间。RAM_HARD_LIMIT 是 zram 可以使用的最大 RAM 量(以 MB 为单位)。
min()
是一个函数,用于比较 RAM_HARD_LIMIT 和根据比率计算得出的值,并选择其中的较小值。
- compression-algorithm
指定用于在 zram 中压缩数据的算法。您可以使用以下任一值:
deflate
— 无损数据压缩文件格式lz4
或lz4hc
— 一种专注于压缩和解压缩速度的无损数据压缩算法lzo-rle
— 一种专注于解压缩速度的无损数据压缩算法zstd
(又称 Zstandard) — 一种无损数据压缩算法,压缩率可与 DEFLATE 相媲美,但解压缩速度更快842
— 数据压缩算法
如果省略,则使用内核默认值(通常为 LZO-RLE)。
- options
指定 RAM 磁盘的交换或挂载选项。如果设置为
discard
或省略,则在系统运行期间将清理未使用的压缩页。这样的解决方案提供了高效的 zram 管理。要覆盖默认值 (discard
),请将值留空:options =
- writeback-device
指定用于存储不可压缩页的设备。这些页随后将从 zram 中去除。
- fs-type
如果设备用作磁盘,该元素用于指定要在该磁盘上使用的文件系统。例如,
ext4
。- mount-point
指定用于挂载文件系统的目录。当 zram 设备用作交换空间时,不使用此选项。
2.2.1.1 /etc/systemd/zram-generator.conf
示例 #
以下示例会在 RAM 中创建两个块设备 - zram0
用作交换空间,zram1
用于 ext4 文件系统。如果计算机的 RAM 超过 9 GB,则不会创建 zram0
。每个块设备最多将分配 2 GB 的 RAM。
[zram0] host-memory-limit = 9048 zram-size = min(ram / 10, 2048) compression-algorithm = lzo-rle options = discard writeback-device = /dev/zvol/tarta-zoot/swap-writeback [zram1] zram-size = ram / 10 fs-type = ext4 mount-point = /run/compressed-mount-point
2.3 创建设备单元 #
配置准备好后,请创建并启动设备。为此,请参见以下过程:
通过运行以下命令创建 zram 设备单元:
>
sudo
systemctl daemon-reload
启动设备:
>
sudo
systemctl start DEVICE_NAME
DEVICE_NAME is the name you configured in/etc/systemd/zram-generator.conf
and it is in the format/dev/zramN
要校验模块是否已启动,请为每个设备运行以下命令:
>
sudo
systemctl status DEVICE_NAME
3 法律声明 #
版权所有 © 2006–2025 SUSE LLC 和贡献者。保留所有权利。
根据 GNU 自由文档许可证 (GNU Free Documentation License) 版本 1.2 或(根据您的选择)版本 1.3 中的条款,在此授予您复制、分发和/或修改本文档的权限;本版权声明和许可证附带不可变部分。许可版本 1.2 的副本包含在题为“GNU Free Documentation License”的部分。
有关 SUSE 商标,请参见 https://www.suse.com/company/legal/。所有其他第三方商标分别为相应所有者的财产。商标符号(®、™ 等)代表 SUSE 及其关联公司的商标。星号 (*) 代表第三方商标。
本指南力求涵盖所有细节,但这不能确保本指南准确无误。SUSE LLC 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。