私は systemd 208 で jessie/sid を実行しており、次のワイルドカード autofs 構成を または / 定義に変換しようとして/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」に数字を加えたもの)があり、それらはすべて同じディレクトリ(物理ディスク)をエクスポートします。ジェネレータインターフェイスを使用して、1つを作成しました。。マウントそして1つ.自動マウント各マシンのファイル:
#!/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
スクリプトはシステムジェネレータ実行可能。そこに置いたら、systemdデーモンリロードそして単位は/run/systemd/ジェネレータ次回の再起動時に有効になり、もちろん手動で起動することもできます。systemd は oneofthenames.automount を開始します。