systemd によるワイルドカード自動マウント

systemd によるワイルドカード自動マウント

私は 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 を開始します

関連情報