Ziel
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 Bearbeiten von Konfigurationsdateien
Schwierigkeit
EINFACH
Einführung
Manuelles Mounten und Unmounten von Geräten wie externen USB-Laufwerken oder Remote-NFS
oder Samba
Freigaben können bei der Verwaltung einer Maschine mühsame Aufgaben sein. Die autofs
Daemon kann uns dabei helfen, ein Dateisystem bei Bedarf automatisch zu mounten und nach einer bestimmten Zeit wieder auszuhängen. In diesem Tutorial sehen wir das Grundkonzept des Automounters und wie man ihn konfiguriert.
Autofs-Installation
Als erstes müssen Sie die autofs
installieren Paket. Es ist in den offiziellen CentOS7- und Rhel7-Repositories verfügbar, daher müssen wir nur den yum
verwenden Paketmanager, um es zu erhalten:
$ sudo yum install autofs
Der nächste Schritt besteht darin, autofs
zu starten Daemon und aktivieren Sie ihn beim Booten:
$ sudo systemctl enable --now autofs
Die autofs-Daemon-Konfiguration
Der autofs-Daemon wird konfiguriert, indem einige Dateien manipuliert werden, jede mit ihrem eigenen spezifischen Zweck. Was wir im Grunde tun müssen, ist, dem Daemon einige Anweisungen zu geben, damit er weiß, wie er Einhängepunkte 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. Sehen wir uns an, was diese Konfigurationsdateien sind und welche Rolle sie spielen.
Die Datei /etc/sysconfig/autofs
Die /etc/sysconfig/autofs
Datei ist die Hauptkonfigurationsdatei für autofs
Daemon und enthält seine globalen 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 in Zeile 13 entfernen und Befehlszeilenargumente in Form einer Zeichenfolge als Wert von OPTIONS
übergeben Variable.
Machen wir ein Beispiel:Angenommen, wir möchten das Standardzeitintervall ändern, nach dem der Daemon ein Dateisystem automatisch aushängen soll:Der Standardwert ist 300
Sekunden oder 5 Minuten. Durch Lesen des autofs-Handbuchs (automount(8)
), können wir sehen, dass wir zum Ändern dieses Parameters --timeout
verwenden sollten Option, die als Parameter das in Sekunden
ausgedrückte Zeitintervall akzeptiert :
-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.
Angenommen, wir möchten das standardmäßige Unmount-Timeout auf 10 Minuten ändern, so sollten wir /etc/sysconfig/autofs
ändern Datei:
OPTIONS="--timeout=600"
Nach dem Speichern der Änderungen sollten wir den Daemon neu starten, damit die neue Konfiguration wirksam wird. Wir können sehen, wie die neue Timeout-Option übernommen 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
Der auto.master
Datei ist sehr wichtig, da sie den Automounter master map
enthält . Jede Map ordnet einen Einhängepunkt einer Konfigurationsdatei zu, 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 angegebene mountpoint
wird von Karten verwaltet, die in der angegebenen Konfigurationsdatei
festgelegt sind , wobei die bereitgestellten Optionen angewendet werden, die die globalen überschreiben können (dies kann beispielsweise nützlich sein, um ein bestimmtes Unmount-Timeout für jeden Einhängepunkt bereitzustellen). Sehen wir uns ein konkretes Beispiel an:Wenn wir uns Zeile 7 der Datei ansehen, können wir die folgende Karte sehen:
/misc /etc/auto.misc
Diese Konfiguration gibt an, dass die Datei /misc
mountpoint interessiert sich für Mappings, die in /etc/auto.misc
beschrieben sind Datei. Lassen Sie uns sehen, wie diese Karten konfiguriert sind, indem Sie einen Blick darauf werfen.
Die Datei /etc/auto.misc
Wie wir in /etc/auto.master
gesehen haben Datei, die /misc
Einhängepunkt ist mit /etc/auto.misc
verknüpft Konfigurationsdatei. 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 key
. Der Wert dieses Parameters wird im Fall von indirect maps
verwendet (wir werden gleich verschiedene Arten von Maps behandeln) als Name des Unterverzeichnisses, das erstellt wird, wenn es nicht existiert, unter dem Hauptmountpunkt, der in diesem Fall /misc
ist . Die Datei /dev/cdrom
Gerät, wird daher automatisch auf /misc/cd
gemountet Verzeichnis.
Das zweite bereitzustellende Element ist die Liste der Mount-Optionen, die angewendet werden sollten:in diesem Beispiel der -fstype
Option wurde verwendet, um den Dateisystemtyp zusammen mit dem ro
anzugeben , nosuid
und nodev
.
Schließlich müssen wir den Speicherort des Dateisystems angeben. Da es sich in diesem Fall um einen lokalen Pfad handelt, muss ihm ein :
vorangestellt werden (Doppelpunkt) Zeichen.
Im Fall eines entfernten NFS
share, wir müssten 192.168.1.39:/srv/nfs_share
schreiben stattdessen, wobei 192.168.1.39
die Adresse des entfernten Rechners ist (der Hostname kann auch verwendet werden) und /srv/nfs_share
ist der Pfad des freigegebenen Verzeichnisses darauf.
Wenn wir uns auf eine Samba-Freigabe beziehen, hätten wir stattdessen -fstype=cifs
angeben sollen Optional können Sie die IP-Adresse des Remote-Computers und den Pfad des freigegebenen Verzeichnisses im folgenden Format angeben:
://192.168.1.39/srv/samba_share
Indirekte, direkte und hosts-Maps
Wir haben eine indirekte Karte
erwähnt Sehen wir uns jetzt die verschiedenen Arten von Karten im Detail an. Es gibt drei Arten von Maps, die wir verwenden können:direct
, indirekt
und hostet Karten:ein Beispiel für indirekte Karte
haben wir gerade in der Datei /etc/auto.master für /misc
gesehen Einhängepunkt.
Eine Map heißt indirekt, weil der key
Parameter, der in der Konfigurationsdatei angegeben ist (/etc/auto.misc
in diesem Fall) mit dem Einhängepunkt verknüpft (/etc/misc
), wird als Name des Verzeichnisses relativ zu dem Einhängepunkt verwendet, an dem das Dateisystem (:/dev/cdrom
in unserem Beispiel) wird gemountet.
Eine direkte Karte
, wird in der Datei auto.master immer mit folgender Syntax angegeben:
/- /etc/auto.misc
Wenn /-
wird als Einhängepunkt in einer Karte verwendet, das heißt, wir verwenden eine direkte Karte. In diesem Fall der key
Element der Syntax, die in der dem Einhängepunkt zugeordneten Konfigurationsdatei verwendet wird, muss ein absoluter Pfad sein. Daher müssten wir im obigen Beispiel schreiben:
/cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
Endlich können wir eine host map
finden Beispiel in der Datei /etc/auto.master, Zeile 13:
/net -hosts
Eine solche Karte ist standardmäßig definiert; wie funktioniert es? Wenn eine Hosts-Zuordnung angegeben wird, erstellt der Automounter ein Unterverzeichnis unter dem angegebenen Einhängepunkt (/net
in diesem Fall) für jeden Computer, der in /etc/hosts
aufgeführt ist die ein NFS
exportiert Teilen. Dies ist dank /etc/auto.net
möglich Skript, das wir nun untersuchen werden. Jedes der freigegebenen Verzeichnisse wird standardmäßig mit der nosuid
gemountet und nodev
Optionen.
Die Skripte /etc/auto.net und /etc/auto.smb
Es gibt zwei sehr nützliche Skripte, die in den autofs
enthalten sind Installation:/etc/auto.net
und /etc/auto.smb
. Diese Skripte sind im Wesentlichen Wrapper um den showmount
und smbclient
Programme, die verwendet werden, um verfügbare NFS- und Samba-Freigaben zu entdecken. Sie erzeugen Ergebnisse in einem Format, das vom Automounter verwendet werden kann.
Die /etc/auto.net
Skript kann verwendet werden, um sich einen Überblick zu verschaffen und NFS-Freigaben auszulesen. Wir können das Skript aufrufen, indem wir den Hostnamen oder die IP-Adresse des zu durchsuchenden Servers 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 der Maschine mit der IP 192.168.1.39 der /shared
Verzeichnis wird über NFS freigegeben. Basierend auf hosts map
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, wie wir bereits gesagt haben, dass bei Verwendung einer Hosts-Map für jede Maschine in der /etc/hosts-Datei, die eine NFS-Freigabe exportiert, ein Unterverzeichnis unter /net erstellt wird.
Die /etc/auto.smb
funktioniert in ähnlicher Weise. Wenn wir möchten, dass die Samba-Freigaben in unserem Netzwerk automatisch vom Automounter gemountet werden, genau wie es bei NFS-Freigaben der Fall ist, müssen wir als erstes diese Map in /etc/auto.master
Datei:
/cifs /etc/auto.smb
Nachdem die Karte hinzugefügt wurde, sollten wir den Daemon neu starten:
sudo systemctl restart autofs
An dieser Stelle danke an die /etc/auto.smb
script wird 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 einer Maschine mit IP 192.168.122.32 einen /srv/samba
haben über Samba freigegebenes Verzeichnis. Wenn wir es überprüfen wollen, können wir /etc/auto.smb
ausführen Skript gegen die IP dieser Maschine. 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 ist in unserem lokalen Dateisystem innerhalb des automatisch erstellten /cifs/192.168.122.32/
verfügbar Verzeichnis:
$ ls /cifs/192.168.122.32 sambadir
Faules Mounten und Unmounten
Um die Anzahl der erstellten 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 die Mount-Operation durchgeführt. Das Gleiche gilt für den Unmount-Prozess:Ein Gerät wird nach einem festgelegten Timeout automatisch unmountet.