Autofs- automount (de)

From Manjaro Linux
Jump to: navigation, search


Einführung zu autofs

BigManjaroIcon.png

AutoFS ist ein Programm, das den Linux-Kernel-Automounter verwendet, um die Dateisysteme bei Bedarf automatisch zu installieren. Es funktioniert mit USB-Flash-Laufwerken und externen Festplatten, Netzwerkfreigaben, CD-ROM / DVD / BluRay und so weiter.

AutoFS arbeitet mit der Überwachung von Verzeichnissen auf dem lokalen Dateisystem. Wenn ein Programm versucht, auf eines dieser Verzeichnisse zuzugreifen, wird AutoFS etwas in diesem Verzeichnis einfügen. Wer mit vielen Mounts auf seinem System arbeitet bzw. zu tun hat wird evtl. genau deshalb die Überwachung von den Verzeichnissen (keine Einbindung als Geräte) hier einer der größten Stärken von autofs schätzen zu lernen.

Die Verzeichnisse zu überwachen, sowie deren Handhabung, sind in den AutoFS-Konfigurationsdateien wie der /etc/autofs/autofs.master angegeben.


Einige sind der Meinung das autofs am aussterben sei, da es ja nicht mehr weiter Entwickelt würde. Wer sich aber mal die Changelog bzw. History von autofs betrachtet wird erkennen das ein Programm das über 12 Jahre schon existiert und weiterentwickelt wurde wohl irgendwann auch nicht mehr "verbessert werden kann bzw. sich an einem Punkt befindet wo man es nicht mehr verbessern braucht, weil es genau das Fehlerfrei macht wofür es eben Entwickelt wurde?

* Download Source (HTTP): http://www.kernel.org/pub/linux/daemons/autofs/v5/autofs-5.1.2.tar.xz

Auszug aus dem Changelog
- 29/09/2003 autofs-4.0.0-1
....
- 15/06/2015 autofs-5.1.2

Auch auf neueren systemd - Linux-varianten (wie z.B. Manjaro) lässt sich autofs völlig Problemlos installieren und über "systemd" steuern.



Überprüfung und installieren der benötigten Pakete

Zuerst müssen wir Überprüfen ob wir die benötigten Pakete installiert haben und diese dann ggf. nachinstallieren.

Dazu gehen wir wie folgt im Terminal vor:

 pacman -Ss nfs-util


Wenn es schon installiert ist können wir nun sehen von welchem Repository es installiert ist und welche Version:

core/mkinitcpio-nfs-utils 0.3-5.3
   ipconfig and nfsmount tools for NFS root support in mkinitcpio
core/nfs-utils 2.1.1-3 [Installiert]
   Support programs for Network File Systems
community/nfs-utils-openrc 20170401-1 (openrc-base)
   OpenRC nfs-utils init script


Sollte es noch nicht installiert sein, installiert es mittels:

 sudo pacman -S nfs-util


Das nächste wäre dann das autofs selbst, geht genauso vor wie beim nfs-util:

pacman -Ss autofs
 
community/autofs 5.1.2-1 [Installiert]
    A kernel-based automounter for Linux.
community/autofs-openrc 20170401-1 (openrc-net)
    OpenRC autofs init script

Sollte es noch nicht installiert sein installiert dieses mittles:

 sudo pacman -S autofs


Wer wie ich mit "vi" als Editor nicht so recht zurecht kommt, kann sich auch gerne noch den einfachen "nano" Editor installieren:

sudo pacman -S nano



autofs einrichten und starten

Sind die obigen Pakete alle installiert können wir autofs starten und dauerhaft aktivieren, damit er bei jedem Systemstart auch wieder selbstständig startet

Hierzu sind folgende zwei Befehle nötig:

systemctl enable rpcbind

systemctl enable autofs.service



Info zum steuern von autofs

die autofs Dienste können mit folgenden Befehle gesteuert werden:

systemctl restart autofs.service

systemctl start autofs.service

systemctl stop autofs.service

systemctl status autofs.service


Beispiel das man zum Schluss erkennt ob der auto.service auch läuft:

systemctl status autofs.service
autofs.service - Automounts filesystems on demand
   Loaded: loaded (/lib/systemd/system/autofs.service; enabled)
   Active: active (running) since Mon 2016-04-18 23:06:29 CEST; 32min ago
 Main PID: 557 (automount)
   CGroup: /system.slice/autofs.service
           └─557 /usr/sbin/automount --pid-file /run/autofs.pid

In dieser Zeile: Active: active (running) Sieht man nun schön das die autofs.service funktioniert und betriebsbereit ist!



Der erste Versuch sich mit einem NFS-Server zu verbinden

Durch die Installation von den "nfs-utils" haben wir nun auch den Befehl "showmount" zur Verfügung.

Hiermit können wir nun über den Terminal vom Linuxsystem aus prüfen ob auf unseren NFS-Server auch NFS-Freigaben vorhanden sind.

Dies geschieht mittels diesem Befehl:


showmount -e ip_deines_NAS_bzw._Server


Das ganze kann dann in etwa so aussehen:

[egle@i7-core-4770 ~]$ showmount -e 192.168.1.11
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
[egle@i7-core-4770 ~]$

Hier habe ich mit Absicht eine IP-Adresse gewählt wo kein NFS-Server installiert ist, damit Ihr auch gleich mal eine Fehlermeldung seht !


Richtig in meinem Fall wäre:

[egle@i7-core-4770 ~]$ showmount -e 192.168.1.15
Export list for 192.168.1.15:
/media/sdcard 192.168.1.15/24
/media/hdd    192.168.1.15/24
[egle@i7-core-4770 ~]$ 

Dies wäre der NFS-Server meiner Dreambox 7080, und wie man erkennt wurde dort die eingebaute Festplatte und die eingesteckte SDCard "Freigegeben" !

Wichtig ist natürlich das sichergestellt ist das der NFS-Server auch einwandfrei funktioniert und konfiguriert wurde, sonst sucht man hier beim "autofs" evtl. einen Fehler der eigentlich vom Server auftritt.


Zum testen meines Beispiels anhand des Verzeichnis "/media/hdd" Sieht der Testbefehl dann so aus:

[egle@i7-core-4770 ~]$ sudo mount -t nfs 192.168.1.15:/media/hdd /mnt/
[egle@i7-core-4770 ~]$

Sollten hierbei keine Fehlermeldung auftreten wie in meinem Beispiel kann man nun im Verzeichnis /mnt den Inhalt der eingebunden Platte/Verzeichnis auslesen.

[egle@i7-core-4770 ~]$ ls /mnt
Serien
enigma2_crash_1465506940.log
log
lost+found
mediaportal
movie
[egle@i7-core-4770 ~]$

Hier erkennbar ein älteres Crashlogfile und das Verzeichnis "movie" worin die TV-Aufnahmen liegen.

note: Dies ist aber nur bis zum nächsten Neustart im Verzeichnis /mnt zu finden!

Oder wir unmounten das ganze wieder mittels:

sudo umount -t nfs 192.168.1.15:/media/hdd /mnt/


Wer hierbei schon Probleme hat liest bitte unten bei den Problemen weiter und Überspringt den nächsten Schritt bis seine Testverbindung auch wirklich funktioniert...

note: Höchstwahrscheinlich stimmt dann etwas mit euren NFS-Server nicht!


Hat dies alles geklappt ist die erste Hürde schon überwunden und wir müssen nun nur noch das ganze als Autostart einrichten....



autofs (automatisches einbinden) einrichten

note: Bootet euer System nun bitte neu, somit ist der Mount in /mnt wieder verschwunden, oder verwendet den Befehl zum unmounten eurer Testverbindung!

Nach dem Booten könnt Ihr nun auch erstmal testen ob autofs auch wirklich selbständig startet:

[egle@i7-core-4770 ~]$ systemctl status autofs.service
● autofs.service - Automounts filesystems on demand
   Loaded: loaded (/usr/lib/systemd/system/autofs.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2017-04-18 23:14:59 CEST; 37min ago
  Process: 1179 ExecStart=/usr/bin/automount $OPTIONS --pid-file /run/autofs.pid (code=exited, status=0/SUCCESS)
 Main PID: 1181 (automount)
    Tasks: 7 (limit: 4915)
   CGroup: /system.slice/autofs.service
           └─1181 /usr/bin/automount --pid-file /run/autofs.pid

Apr 18 23:14:59 i7-core-4770 systemd[1]: Starting Automounts filesystems on demand...
Apr 18 23:14:59 i7-core-4770 systemd[1]: Started Automounts filesystems on demand.
[egle@i7-core-4770 ~]$ 

So der auto.service ist wieder "active (running)" und wir können loslegen mit autofs.

Ich selbst liebe Ordnung/Struktur auch auf der Platte und in Verzeichnissen.

Daher bediene ich mich nicht einfach nur einer "auto.network" oder wie die nun alle benannt werden sondern

ich Unterteile das Ganze in "auto.dreambox" und "auto.nas" usw. Aber das kann jeder machen wie er will....


Das bedeutet ich erstelle im Verzeichnis "/etc/autofs/auto.master.d" eine Datei mit dem Namen "dreambox.autofs".

sudo nano /etc/autofs/auto.master.d/dreambox.autofs


Die Datei "dreambox.autofs" hat folgenden einzelne Zeile als Inhalt:

/media/dreambox /etc/autofs/auto.dreambox --ghost --timeout=60


Diese Config-Datei ist verantwortlich wohin ich meine Mounts einbinden will (entsprechendes Verzeichnis wird dann vom System selbst erstellt).

Hier im Beispiel soll es /media/dreambox sein.


Und in dieser Datei wird der Pfad zur nächsten Datei angegeben worin sich die einzelnen Mounts (Einbindungen) befinden die einzulesen sind.

Hier im Beispiel; /etc/autofs/auto.dreambox


Die Option --ghost erzeugt leere Dateiverzeichnisse in /media/dreambox für alle Einbindungen die dann in der /etc/autofs/auto.dreambox definiert wurden. Damit der Verbindungsaufbau auch nach einem Timeout wieder erzeugt werden kann.

Der Schalter --timeout definiert wie viele Sekunden gewartet wird, bis ein ungenutztes Dateisystem unmounted (gelöst) wird.


Abgespeichert wird der Text mit den Tasten <strg + O> (Linke Steuerungstaste und großes O Ohhh)


Nun erstellen wir passend zur der "Master-Map-Datei" /etc/autofs/auto.dreambox die entsprechend dazu gehörende "Map-Datei"

wie dort vorgeschlagen im Verzeichnis "/etc/autofs als zweite Datei mit dem Namen "auto.dreambox".


sudo nano /etc/autofs/auto.dreambox


Die Datei "auto.dreambox" hat folgenden einzelne Zeile als Inhalt (ausgehen von dem obigen Beispiel aus):

DB7080 -fstype=nfs,rw,soft,retry=0 192.168.1.15:/media/hdd


Abgespeichert wird der Text mit den Tasten <strg + O> (Linke Steuerungstaste und großes O Ohhh)


Besitzt man mehrere Dreamboxen könnte es auch so aussehen z.B.:

DB7080	-fstype=nfs,rw,soft,retry=0 192.168.1.15:/media/hdd
DB7020HD -fstype=nfs,rw,soft,tcp,retry=0 192.168.1.14:/media/hdd

Nach einem Neustart der Box sollte nun auch im Verzeichnis /media das Verzeichnis dreambox enthalten sein wo die eingebunden Dreamboxen zu finden sind.

Wer keinen Neustart machen will, kann dies natürlich auch wie weiter oben erklärt im Abschnitt Info zum steuern von autofs mit dem Befehl tun:

sudo systemctl restart autofs.service


Hat alles geklappt war es das schon,

gibt es hier Probleme habt Ihr Schreibfehler eingebaut, nicht das Unixformat verwendet oder falsche rechte....

Was aber eigentlich nach dieser Anleitung nicht der fall sein sollte, wenn es alles Händisch wie hier beschreiben wurde erstellt und editiert wurde....




Kurze Erläuterung (Auswahl) zu <options>

Die Optionen können erweiterut und verlängert werden, diese sind immer mit einem "Komma" ohne Leerzeichen zu trennen.

  • noauto, auto - Mit "noauto" wird dieser mount nicht als Abhängigkeit für local-fs.target oder remote-fs.target hinzugefügt. Dies bedeutet, dass er nicht automatisch während des Bootvorgangs eingebunden wird, es sei denn, er wird von einer anderen Einheit eingezogen. Die automatische Option hat die entgegengesetzte Bedeutung und ist die Voreinstellung.


  • retry=0 - Diese sorgt dafür, dass mount sofort aufgibt, falls der Server nicht erreichbar ist. Anderenfalls würde mount für zwei Minuten versuchen den Server zu erreichen und so lange blockieren. Dieses Verhalten ist an sich kein Problem, kann man aber somit vermeiden.


  • nolock - Deaktiviert das Sperren von Dateien. Wird gelegentlich für die Verbindung zu alten NFS-Servern benötigt


  • soft - Bei Unterbrechungen sofort einen Timeout machen (verhindert ein Einfrieren des Dateimanagers)


  • timeo=<SEKUNDEN> - In Verbindung mit soft kann festgelegt werden, wann der Timeout erfolgen soll.


  • nofail - Mit nofail wird der mount nur von local-fs.target oder remote-fs.target gewünscht, nicht benötigt. Dies bedeutet, dass der Bootvorgang fortgesetzt wird, auch wenn dieser Einhängepunkt nicht erfolgreich eingebunden ist.


  • retrans=n - Die Anzahl der Mountversuche, die der NFS-Client eine Anforderung wiederholt, bevor er eine weitere Wiederherstellungsaktion ausführt. Wenn die Retrans-Option nicht angegeben ist, versucht der NFS-Client jede Anfrage dreimal. Der NFS-Client generiert eine "Server nicht reagierende" Nachricht nach Retrans-Wiederholungen, dann versucht weitere Wiederherstellung (je nachdem, ob die Hard-Mount-Option in Kraft ist).


Mehr infos zu den möglichen Mount-Optionen siehe in den Anleitungen (ManPage) zu mount, systemd.mount, autofs, NFS, CIFS usw.




Problemlösung

Hier mal ein Paar Gedankenanstöße die bei Problemen helfen können....


Schreibfehler

Wer Tippfehler bei sich drinn hat, kann ich nicht beurteilen....


Falsche Rechte

Wer falsche Rechte hat, oder denkt das er Sie hat kann mit dem Befehl "chmod" die rechte setzten

sudo chmod 644 /etc/autofs/auto.master.d/dreambox.autofs

sudo chmod 644 /etc/autofs/auto.dreambox

Laufen die Dienste auch

Prüfen ob alle Dienste auch laufen wenn keine Mounts eingebunden wurden:

[egle@i7-core-4770 /]$ sudo ps -A|grep "nfs\|rpc"
[sudo] Passwort für egle: 
  209 ?        00:00:00 rpcbind


Wenn was eingebunden wurde:

[egle@i7-core-4770 /]$ ps -A|grep "nfs\|rpc"
 209 ?        00:00:00 rpcbind
3952 ?        00:00:00 rpciod
3958 ?        00:00:00 nfsiod
3974 ?        00:00:00 rpc.statd

Manuelles mounten mit ausgabe zur Fehlerbestimmung

Sollte eine Mount einfach nicht funktionieren, probiert es erst mit einem Manuellen Einbinden in dieser Art

[egle@i7-core-4770 /]$ sudo mount -v -t nfs 192.168.1.10:/Multimedia /mnt/
mount.nfs: timeout set for Sat Apr 22 13:30:19 2017
mount.nfs: trying text-based options 'vers=4.2,addr=192.168.1.10,clientaddr=192.168.1.2'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.1,addr=192.168.1.10,clientaddr=192.168.1.2'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.0,addr=192.168.1.10,clientaddr=192.168.1.2'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'addr=192.168.1.10'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.1.10 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.1.10 prog 100005 vers 3 prot UDP port 30000

Hier erkannt man schön das der NFS-Server keine NFS4 kann und er dann weiter testet mit NFS3 Da keine weiter Meldung kommt hat der Mount auch geklappt.


Sollte der Mount nicht klappen würde dies in etwa so aussehen:

[egle@i7-core-4770 /]$ sudo mount -v -t nfs 192.168.1.10:/Web /mnt/
mount.nfs: timeout set for Sat Apr 22 13:34:15 2017
mount.nfs: trying text-based options 'vers=4.2,addr=192.168.1.10,clientaddr=192.168.1.2'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.1,addr=192.168.1.10,clientaddr=192.168.1.2'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.0,addr=192.168.1.10,clientaddr=192.168.1.2'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'addr=192.168.1.10'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.1.10 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.1.10 prog 100005 vers 3 prot UDP port 30000
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 192.168.1.10:/Web


Hier erkennt man das versucht wurde zu Verbinden und zum Schluss bricht das ganze ab mit der Meldung: access denied by server while mounting 192.168.1.10:/Web

Also Entweder ist wie in diesem Fall /Web nicht freigeben oder es wurde ein Tippfehler gemacht...



Fehlermeldungen loggen

Allgemeine Fehlermeldungen kann man auch erhalten mittels dem Befehl:

journalctl -u autofs > /tmp/log.txt

Damit wird im die Datei log.txt im /tmp Verzeichnis erstellt und man kann dort nachsehen ob dort Fehler ersichtlich sind.



Probleme mit den Verbindungen (Ruckeln, Abrisse usw.)

Ich selbst verwende ein Gigabit LAN mit Netgear-und TPlInk router auf allen habe ich aber entweder OpenWRT oder DD-Wrt als Firmware installiert. Habe keinerlei Probleme seit Jahren egal mit welcher meiner Boxen. Kann aus Erfahrung nur soviel berichten das ich bei meiner Qnap schon Probleme hatte was aber immer an der Firmware gelegen hatte. Mit Fitzboxen kenne ich mich nicht aus da ich keinen habe. Ob Ihr also nun noch weiter Einsträge benötigt euer Netzwerk auf 100MB drosselt oder rwsize usw. einsetzt, müssen euch andere helfen ;(

Ich brauche dies nicht mit meinen Boxen (DM820, DM7020HD, DM7080, Qnap-TS119) also muss ich hier passen...


Hoffe da euch dieser Beitrag etwas hilft und ein wenig Licht ins Dunkel bringt.

Weiter gute Informationen findet man auch in folgenden Links:

NFS Wiki Ubuntuuser

Autofs Wiki Ubuntuuser

mount Wiki Ubuntuuser


etwas älter:

NFS Linuxwiki