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日 |
#202 在 Unix API
每月 72 次下载
45KB
1K SLoC
systemd-zram-setup@.service
生成器用于 zram 设备
此生成器提供了一种简单快捷的机制来配置 /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生成器的示例。
安装
建议使用现有的包
- Fedora:
sudo dnf install zram-generator-defaults
(或sudo dnf install zram-generator
不安装默认配置) - Debian: nabijaczleweli提供的包,请参阅https://debian.nabijaczleweli.xyz/README。
- Arch:
sudo pacman -S zram-generator
(或https://aur.archlinux.org/packages/zram-generator-git/的最新git提交)
要从源直接安装,请执行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
(根据配置调整名称)。 - 调用
zramctl
或swapon
以确认已创建设备并正在使用。
安装和配置完成后,生成器将在引导早期由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