Wildcard-Automounts mit systemd

Wildcard-Automounts mit systemd

Ich führe Jessie/Sid mit Systemd 208 aus und versuche, die folgende Platzhalter-Autofs-Konfiguration entweder in eine /etc/fstaboder eine .mount/ .automount-Definition zu konvertieren.

$ cat /etc/auto.master
/home/* -fstype=nfs homeserver:/exp/home/&

(Auf dem Homeserver wird Solaris ausgeführt, wobei jedes Unterverzeichnis /exp/home/eine separate Freigabe ist.)

Gibt es eine Möglichkeit, Wildcard-Maps mit systemd zu emulieren?

Antwort1

Ich denke nicht. Der Name der .mount/.automount-Einheit muss dem Mount-Pfad entsprechen, der mit maskiert ist systemd-escape --path. Und die einzige Möglichkeit in systemd, Einheiten zu instanziieren, ist die „Vorlagensyntax“ der Form [email protected]. Daher ist es zumindest nicht möglich, eine dynamisch instanziierte Mount-Einheit zu haben.

Verwenden Sie einfach Autofs. Systemd ist kein Ersatz für alles.

Antwort2

Sie könnten systemd's verwendenGeneratorschnittstelle. Grundsätzlich werden Servicedateien beim Start oder Neuladen im laufenden Betrieb erstellt.

Wir haben eine Reihe von Maschinen (genannt "dema" plus eine Nummer) in unserem Cluster, die alle dasselbe Verzeichnis exportieren (ihre physische Festplatte). Ich habe die Generatorschnittstelle verwendet, um eine zu erstellen.montierenund ein.automountDatei für jede Maschine:

#!/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

Das Skript muss in/usr/lib/systemd/system-generatorenund ausführbar. Nachdem Sie es dort abgelegt haben, rufen SieSystemd-Daemon neu ladenund Sie sollten die Einheiten in/run/systemd/generator. Sie werden beim nächsten Neustart aktiviert und können natürlich manuell gestartet werden, indem Siesystemd startet oneofthenames.automount.

verwandte Informationen