我正在使用 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。