如何在 systemd 服务初始化期间创建 ramdisk(例如 Postgresql)?

如何在 systemd 服务初始化期间创建 ramdisk(例如 Postgresql)?

有没有办法在 systemd 服务初始化期间创建 ramdisk,并在创建后和“主”服务进程启动后运行一些命令?

基本上我想要完成的是,在启动 Postgres 数据库(例如sudo systemctl start postgresql@13-my_db)时,我首先创建一个 ramdisk,运行一个从安全保管库读取 TLS 证书和私钥的脚本,并将其存储在具有正确权限的该 ramdisk 中,然后 Postgres 可以开始从该 ramdisk 读取文件。

此外,当服务停止时,文件也会消失,因为 ramdisk 会被系统自动卸载。

这可能吗?我发现几乎可行的唯一方法是使用TemporaryFileSystem功能来创建 ramdisk,然后使用ExecStartPre它来运行获取文件的脚本。

这可行,但不幸的是,systemd 似乎在ExecStartPreExecStart调用之间卸载了 ramdisk,因此当 Postgres 数据库启动时,ramdisk 已经不可用。

相关内容