Website-Suche

So konfigurieren Sie den autofs-Daemon unter CentOS 7/Rhel 7


Objektiv

Erfahren Sie, wie Sie den autofs-Daemon nutzen können, um Geräte und Remote-Freigaben automatisch bereitzustellen.

Anforderungen

  • Root-Rechte zum Installieren des autofs-Pakets und zum Bearbeiten von Konfigurationsdateien

Schwierigkeit

LEICHT

Einleitung

Das manuelle Ein- und Aushängen von Geräten, wie z. B. externen USB-Laufwerken oder Remote-NFS- oder Samba-Freigaben, kann bei der Verwaltung eines Rechners eine mühsame Aufgabe sein. Der autofs-Daemon kann uns helfen, ein Dateisystem bei Bedarf automatisch einzuhängen und es nach einer bestimmten Zeit wieder einzuhängen. In diesem Tutorial sehen wir das grundlegende Konzept des Automounters und wie man ihn konfiguriert.

Autofs-Installation

Das erste, was zu tun ist, ist die Installation des autofs-Pakets. Es ist in den offiziellen CentOS7- und Rhel7-Repositories verfügbar, daher müssen wir nur den yum-Paketmanager verwenden, um es zu erhalten:

sudo yum install autofs

Der nächste Schritt besteht darin, den autofs-Daemon zu starten und ihn beim Booten zu aktivieren:

sudo systemctl enable --now autofs

Die Konfiguration des autofs-Daemons

Der autofs-Daemon wird konfiguriert, indem einige Dateien bearbeitet werden, von denen jede ihren eigenen spezifischen Zweck hat. Was wir im Grunde tun müssen, ist, dem Daemon einige Anweisungen zu geben, um ihm mitzuteilen, wie er Mountpoints und Geräte verwalten soll (das nennen wir eine Map), und optional eine Reihe von Optionen, die verwendet werden können, um sein Verhalten zu ändern. Schauen wir uns an, was diese Konfigurationsdateien sind und welche Rolle sie spielen.

Die Datei /etc/sysconfig/autofs

Die Datei /etc/sysconfig/autofs ist die Hauptkonfigurationsdatei für den autofs-Daemon und enthält dessen globale Einstellungen. Dies ist der Dateiinhalt in einer Standardinstallation von CentOS 7.5:

#
Init syatem options
#
If the kernel supports using the autofs miscellanous device
and you wish to use it you must set this configuration option
to "yes" otherwise it will not be used.
#
USE_MISC_DEVICE="yes"
#
Use OPTIONS to add automount(8) command line options that
will be used when the daemon is started.
#
#OPTIONS=""
#

Wir können das Verhalten des Daemons ändern, indem wir den Kommentar bei Zeile 13 entfernen und Befehlszeilenargumente in Form eines Strings als Wert der Variablen OPTIONS übergeben.

Machen wir ein Beispiel: Nehmen wir an, wir möchten das Standardzeitintervall ändern, nach dem der Daemon ein Dateisystem automatisch aushängen soll: Der Standardwert beträgt 300 Sekunden oder 5 Minuten. Wenn wir das autofs-Handbuch (automount(8)) lesen, können wir sehen, dass wir zur Änderung dieses Parameters die Option --timeout verwenden sollten, die als Parameter das Zeitintervall in Sekunden annimmt:

 -t , --timeout 
        Set the global minimum timeout, in  seconds,  until  directories
        are unmounted. The default is 10 minutes. Setting the timeout to
        zero disables umounts completely.  The internal program  default
        is 10 minutes, but the default installed configuration overrides
        this and sets the timeout to 5 minutes  to  be  consistent  with
        earlier autofs releases.

Nehmen wir zum Beispiel an, wir möchten das Standard-Timeout für das Aushängen auf 10 Minuten ändern, so sollten wir die Datei /etc/sysconfig/autofs ändern:

OPTIONS="--timeout=600"

Nachdem wir die Änderungen gespeichert haben, sollten wir den Daemon neu starten, damit die neue Konfiguration wirksam wird. Wir können sehen, wie die neue Timeout-Option angenommen wurde, indem wir den Daemon-Status mit systemctl überprüfen:

systemctl status autofs
autofs.service - Automounts filesystems on demand
   [...]
   CGroup: /system.slice/autofs.service
           └─6452 /usr/sbin/automount --timeout=600 --foreground --dont-check-daemon
   [...]

Die Datei /etc/auto.master

Die auto.master-Datei ist sehr wichtig, da sie die Automounter-Mastermap enthält. Jede Map verknüpft einen Mountpoint mit einer Konfigurationsdatei, in der die zu mountenden Dateisysteme beschrieben werden, beschreibt also im Grunde eine andere Map. Eine Karte wird mit der folgenden Syntax erstellt:

<mountpoint> <configuration file> <options>

Die Konfiguration teilt dem Daemon mit, dass der gegebene Mountpoint von Maps verwaltet wird, die in der gegebenen Konfigurationsdatei gesetzt sind, wobei die bereitgestellten Optionen angewendet werden, die die globalen Optionen überschreiben können (dies kann z.B. nützlich sein, um für jeden Mountpoint eine spezifische Zeitüberschreitung beim Aushängen bereitzustellen). Sehen wir uns ein konkretes Beispiel an: Wenn wir einen Blick auf Zeile 7 der Datei werfen, sehen wir die folgende Karte:

/misc   /etc/auto.misc

Diese Konfiguration gibt an, dass der Einhängepunkt /misc von Zuordnungen interessiert ist, die in der Datei /etc/auto.misc beschrieben sind. Sehen wir uns an, wie diese Karten konfiguriert sind, indem wir einen Blick darauf werfen.

Die Datei /etc/auto.misc

Wie wir in der Datei /etc/auto.master gesehen haben, ist der Einhängepunkt /misc mit der Konfigurationsdatei /etc/auto.misc verknüpft. Jetzt werden wir es untersuchen, um zu verstehen, wie eine Karte für ein Gerät definiert ist. Dies ist der Standardinhalt der Datei:

#
This is an automounter map and it has the following format
key [ -mount-options-separated-by-comma ] location
Details may be found in the autofs(5) manpage

cd		-fstype=iso9660,ro,nosuid,nodev	:/dev/cdrom

[...]

Die für die Konfiguration verwendete Syntax lautet wie folgt:

<key> <mount options> <filesystem>

Das erste, was wir angeben müssen, ist der Schlüssel. Der Wert dieses Parameters wird im Falle von indirekten Maps (wir werden gleich verschiedene Arten von Maps bearbeiten) als Name des Unterverzeichnisses verwendet, das erstellt wird, wenn es nicht existiert, unter dem Hauptmountpoint, der in diesem Fall /misc ist. Das /dev/cdrom-Gerät wird daher automatisch in das Verzeichnis /misc/cd eingehängt.

Das zweite Element, das bereitgestellt werden muss, ist die Liste der Einhängeoptionen, die angewendet werden sollten: In diesem Beispiel wurde die Option -fstype verwendet, um den Dateisystemtyp zusammen mit ro, nosuid und nodev zu spezifizieren.

Schließlich müssen wir den Speicherort des Dateisystems angeben. Da es sich in diesem Fall um einen lokalen Pfad handelt, muss ihm das Zeichen : (Doppelpunkt) vorangestellt werden.

Im Falle einer Remote-NFS-Freigabe müssten wir stattdessen 192.168.1.39:/srv/nfs_share schreiben, wobei 192.168.1.39 die Adresse des Remote-Rechners ist (der Hostname kann auch verwendet werden) und /srv/nfs_share der Pfad des freigegebenen Verzeichnisses darauf ist.

Wenn wir uns auf eine Samba-Freigabe beziehen, hätten wir stattdessen -fstype=cifs als Option angeben sollen, indem wir die IP des entfernten Rechners und den Pfad des freigegebenen Verzeichnisses im folgenden Format angeben:

://192.168.1.39/srv/samba_share

Indirekte, direkte und Host-Maps

Wir haben bereits eine indirekte Karte erwähnt, sehen wir uns nun im Detail die verschiedenen Arten von Karten an. Es gibt drei Arten von Maps, die wir verwenden können: direkte, indirekte und Host-Maps: Ein Beispiel für eine indirekte Map ist das, was wir gerade in der Datei /etc/auto.master für den /misc Mountpoint gesehen haben.

Eine Zuordnung wird als indirekt bezeichnet, da der Schlüsselparameter, der in der Konfigurationsdatei (in diesem Fall /etc/auto.misc) angegeben ist, die dem Einhängepunkt (/etc/misc) zugeordnet ist, als Name des Verzeichnisses relativ zu dem Einhängepunkt verwendet wird, in dem das Dateisystem (in unserem Beispiel :/dev/cdrom) eingehängt wird.

Eine direkte Zuordnung wird immer mit der folgenden Syntax in der auto.master-Datei angegeben:

/- /etc/auto.misc

Wenn /- als Einhängepunkt in einer Karte verwendet wird, bedeutet dies, dass wir eine direkte Karte verwenden. In diesem Fall muss das Schlüsselelement der Syntax, das in der Konfigurationsdatei verwendet wird, die dem Mountpoint zugeordnet ist, ein absoluter Pfad sein. Daher hätten wir im obigen Beispiel geschrieben:

/cd -fstype=iso9660,ro,nosuid,nodev	:/dev/cdrom

Schließlich finden wir ein Beispiel für eine Host-Map in der Datei /etc/auto.master, unter Zeile 13:

/net	-hosts

Eine solche Karte ist standardmäßig definiert. Wie funktioniert das? Wenn eine Hostzuordnung angegeben wird, erstellt der Automounter ein Unterverzeichnis unter dem angegebenen Einhängepunkt (in diesem Fall /net) für jede Maschine, die in /etc/hosts aufgeführt ist und eine NFS-Freigabe exportiert. Dies ist dank des Skripts /etc/auto.net möglich, das wir jetzt untersuchen werden. Jedes der freigegebenen Verzeichnisse wird standardmäßig mit den Optionen nosuid und nodev gemountet.

Die Skripte /etc/auto.net und /etc/auto.smb

Es gibt zwei sehr nützliche Skripte, die in der autofs-Installation enthalten sind: /etc/auto.net und /etc/auto.smb. Diese Skripte sind im Grunde genommen Wrapper um die Programme showmount und smbclient, die verwendet werden, um verfügbare NFS- und Samba-Freigaben zu entdecken. Sie erzeugen Ergebnisse in einem Format, das vom Automounter verwendet werden kann.

Das Skript /etc/auto.net kann verwendet werden, um einen Überblick zu erhalten und NFS-Freigaben zu lesen. Wir können das Skript aufrufen, indem wir den Hostnamen oder die IP-Adresse des Servers, den wir durchsuchen möchten, als Argument angeben:

sudo /etc/auto.net 192.168.1.39

Stellen Sie sich nun vor, dass eine Freigabe gefunden wird. Der Befehl gibt eine Ausgabe ähnlich der folgenden zurück:

/shared 192.168.1.39:/shared

Dies würde bedeuten, dass auf dem Rechner mit der IP 192.168.1.39 das Verzeichnis /shared über NFS freigegeben wird. Basierend auf der Host-Map, die wir in der Datei /etc/auto.master gefunden haben, können wir auf die Freigabe unter /net/192.168.1.39/shared zugreifen. Dies liegt daran, dass, wie bereits erwähnt, bei der Verwendung einer Host-Map für jede Maschine in der Datei /etc/hosts, die eine NFS-Freigabe exportiert, ein Unterverzeichnis unter /net erstellt wird.

Die Datei /etc/auto.smb funktioniert auf ähnliche Weise. Wenn wir möchten, dass die Samba-Freigaben in unserem Netzwerk automatisch vom Automounter gemountet werden, so wie es bei NFS-Freigaben der Fall ist, müssen wir als erstes diese Karte in die Datei /etc/auto.master einfügen:

/cifs /etc/auto.smb

Nachdem die Map hinzugefügt wurde, sollten wir den Daemon neu starten:

sudo systemctl restart autofs

An dieser Stelle wird dank des Skripts /etc/auto.smb für jede Maschine, die eine oder mehrere SMB-Freigaben in unserem Netzwerk exportiert, ein Verzeichnis unter /cifs erstellt. Stellen Sie sich zum Beispiel vor, dass wir auf einem Rechner mit der IP 192.168.122.32 ein /srv/samba-Verzeichnis haben, das über Samba freigegeben wird. Wenn wir es überprüfen möchten, können wir das Skript /etc/auto.smb gegen die IP dieses Rechners ausführen. Hier ist die Ausgabe:

/etc/auto.smb 192.168.122.32
-fstype=cifs,guest \
	 "/sambadir" "://192.168.122.32/sambadir"

Wie bereits erwähnt, ist das Skript ein Wrapper um smbclient und erzeugt eine Ausgabe, die vom Automounter verwendet werden kann. Das freigegebene Verzeichnis wird in unserem lokalen Dateisystem in dem automatisch erstellten Verzeichnis /cifs/192.168.122.32/ verfügbar sein:

ls /cifs/192.168.122.32
sambadir

Verzögertes Ein- und Aussteigen

Um die Anzahl der erzeugten Einhängepunkte zu optimieren, verwendet der Automounter eine Technik, die als Lazy Mounting bezeichnet wird. Anstatt ein Gerät zu mounten, sobald es verfügbar oder entdeckt ist, wartet es, bis ein Benutzer versucht, auf das Dateisystem zuzugreifen: Erst dann wird der Einhängevorgang durchgeführt. Das Gleiche gilt für den Unmount-Prozess: Ein Gerät wird nach einer bestimmten Zeitüberschreitung automatisch ausgehängt.

Verwandte Artikel: