私はjessie / sidを実行するsystemd 208を使用しており、次のワイルドカード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」といくつかの番号と呼ばれます)があります。ジェネレータインターフェイスを使用して作成しました。。山そして.automount各マシンのファイル:
#!/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デーモンの再ロードユニットを探す必要があります。/run/systemd/generators。次回の再起動時に有効になります。もちろん、次の呼び出しで手動で起動することもできます。systemd は oneofthenames.automount を起動します。。