使用 systemd 自动挂载通配符

使用 systemd 自动挂载通配符

我正在使用 systemd 208 运行 jessie/sid 并尝试将以下通配符 autofs 配置转换为 or /etc/fstab/.mount定义.automount

$ cat /etc/auto.master
/home/* -fstype=nfs homeserver:/exp/home/&

(主服务器运行 Solaris,每个子目录都是/exp/home/一个单独的共享。)

有没有办法用 systemd 模拟通配符映射?

答案1

我想不会。 .mount/.automount 单元名称必须等于安装路径,并用 转义systemd-escape --path。 systemd 中实例化单元的唯一方法是表单的“模板语法” [email protected]。因此,至少不可能有一个动态实例化的安装单元。

只需使用 autofs 即可。 systemd 并不能替代一切。

答案2

你可以使用systemd发电机接口。基本上,它在启动或重新加载时动态创建服务文件。

我们的集群中有一系列机器(称为“dema”加上一些数字),它们都导出相同的目录(它们的物理磁盘)。我使用生成器界面创建了一个。山和一个.自动挂载每台机器的文件:

#!/bin/sh

svc_dir=/run/systemd/generator

for i in $(seq 1 99); do
    # this must match the mount path, / is converted to -
    unit_bn=cluster-dema$i
    cat << EOF > "${svc_dir}/${unit_bn}.automount"
[Unit]
Description=dema${i}s localdisks automount point
Documentation=file:///usr/lib/systemd/system-generators/dema-automount-generator
Before=remote-fs.target

[Automount]
Where=/cluster/dema$i
EOF

    cat << EOF > "${svc_dir}/${unit_bn}.mount"
[Unit]
Description=dema${i}s localdisks
Documentation=file:///usr/lib/systemd/system-generators/dema-automount-generator

[Mount]
What=dema$i:/localdisks
Where=/cluster/dema$i
Type=nfs
Options=rw,nosuid,nodev,hard,intr,rsize=8192,wsize=8192,noauto,x-systemd.automount
EOF
    ln -s "../${unit_bn}.automount" "${svc_dir}/remote-fs.target.requires"
done

该脚本必须放入/usr/lib/systemd/系统生成器并且可执行。把它放在那里后,打电话systemd 守护进程重新加载你应该找到单位/运行/systemd/生成器。下次重新启动时会激活,当然可以通过调用手动启动systemd 启动 oneofthenames.automount

相关内容