14 个版本 (4 个稳定版本)

1.1.2 2022年3月28日
1.1.1 2021年11月29日
1.0.1 2021年10月25日
0.3.2 2021年2月24日
0.1.1 2018年8月25日

#202Unix API

Download history 48/week @ 2024-04-01

每月 72 次下载

MIT 许可证

45KB
1K SLoC

systemd-zram-setup@.service 生成器用于 zram 设备

Packaging status

此生成器提供了一种简单快捷的机制来配置 /dev/zram* 设备上的交换空间。

主要用途是创建交换设备,但也可以创建带有文件系统的设备,见下文。

配置

默认配置文件可能位于 /usr 中。此生成器检查以下位置

  • /run/systemd/zram-generator.conf
  • /etc/systemd/zram-generator.conf
  • /usr/local/lib/systemd/zram-generator.conf
  • /usr/lib/systemd/zram-generator.conf

…并且列表中找到的第一个文件将生效。

此外,"drop-ins" 将从 .conf 文件加载,这些文件位于 /etc/systemd/zram-generator.conf.d//usr/lib/systemd/zram-generator.conf.d/ 等。

主配置文件在所有 drop-ins 之前读取,具有最低优先级;drop-ins 文件中的条目会覆盖主配置文件中的条目。

有关此逻辑的详细描述,请参阅 systemd.unit(5)。

有关可用的设置列表,请参阅 zram-generator.conf.example

交换设备

创建 /etc/systemd/zram-generator.conf

# /etc/systemd/zram-generator.conf
[zram0]
zram-size = ram / 2

将为每个部分创建一个 zram 设备。无需实际配置(除非覆盖,否则将使用默认的 zram-size = min(ram / 2, 4096)),但必须存在至少一个部分的配置文件。

挂载点

# /etc/systemd/zram-generator.conf
[zram1]
mount-point = /var/compressed

这将创建一个使用ext2格式的/dev/zram1,并为/var/compressed生成一个挂载单元。

如果您希望此路径可由用户写入,可以使用以下“高质量黑客”方法,直到systemd-makefs提供适当的机制来设置生成的文件系统的所有权。对于上面的示例,为systemd-zram-setup@zram1.service创建一个覆盖,例如使用systemctl edit,包含以下内容(注意所需的粘性位,如/var/tmp):

[Service]
ExecStartPost=/bin/sh -c 'd=$(mktemp -d); mount "$1" "$d"; chmod 1777 "$d"; umount "$d"; rmdir "$d"' _ /dev/%i

Rust

此程序的第二个目的是作为一个Rust中systemd生成器的示例。

安装

建议使用现有的包

要从源直接安装,请执行make build && sudo make install NOBUILD=true

  • zram-generator二进制文件安装到systemd系统生成器目录(通常是/usr/lib/systemd/system-generators/
  • zram-generator(8)zram-generator.conf(5)手册页安装到/usr/share/man/manN/,这需要ronn
  • units/systemd-zram-setup@.service被复制到systemd系统单元目录(通常是/usr/lib/systemd/system/
  • zram-generator.conf.example被复制到/usr/share/doc/zram-generator/。您需要在自己的配置文件中创建一个位置,如上述列表中所示。

tl;dr

  • 使用上述方法之一安装zram-generator
  • 创建一个zram-generator.conf配置文件。
  • 运行systemctl daemon-reload以创建新的设备单元。
  • 运行systemctl start /dev/zram0(根据配置调整名称)。
  • 调用zramctlswapon以确认已创建设备并正在使用。

安装和配置完成后,生成器将在引导早期由systemd调用,无需执行其他操作。

测试

测试需要加载zram模块,或者以root权限运行modprobe zram

将环境变量ZRAM_GENERATOR_ROOT设置为使用,而不是以root身份使用/

units/systemd-zram-setup@.service.d/binary-location.conf中的"{generator}"模板可以被用于替换二进制文件的非标准位置进行测试。

作者

由Zbigniew Jędrzejewski-Szmek <[email protected]>, Igor Raits <[email protected]>, наб <[email protected]>和其他人编写。查看https://github.com/systemd/zram-generator/graphs/contributors以获取完整列表。

依赖关系

~3MB
~39K SLoC