systemdを使用したワイルドカード自動マウント

systemdを使用したワイルドカード自動マウント

私は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 を起動します。

関連情報