跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / 在 SUSE Linux Micro 上安装、配置和管理 zram

SUSE Linux Micro 上安装、配置和管理 zram

出版日期:2025-03-20
内容

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,请执行以下步骤。后续几节将提供相关细节。

  1. 安装 zram-generator 实用程序,用于根据提供的配置创建 RAM 块设备。关于 安装的细节,请参见第 2.1 节 “安装 zram 软件包”

  2. 第 2.2 节 “zram 所需的配置”中所述准备配置。

  3. 按照第 2.3 节 “创建设备单元”中所述运行命令以创建新设备单元。

  4. 重引导计算机。

  5. 校验一切是否正常工作。运行 zramctl 命令,该命令应生成类似于以下内容的输出:

    > sudozramctl
    
    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 — 无损数据压缩文件格式

  • lz4lz4hc — 一种专注于压缩和解压缩速度的无损数据压缩算法

  • 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 创建设备单元

配置准备好后,请创建并启动设备。为此,请参见以下过程:

  1. 通过运行以下命令创建 zram 设备单元:

                > 
                sudo
                systemctl daemon-reload
  2. 启动设备:

    > sudosystemctl start DEVICE_NAMEDEVICE_NAME is the name you configured in
    /etc/systemd/zram-generator.conf and it is in the format /dev/zramN
  3. 要校验模块是否已启动,请为每个设备运行以下命令:

                > 
                sudo
                systemctl status DEVICE_NAME