====== NFS auf 2 Servern installieren ======
**Ziel:** \\
Zwei Ubuntu-Server sollen gegenseitig Daten über NFS austauschen.\\
Beide Server greifen mit einem gemeinsamen technischen User nfsync auf die Freigaben zu.\\
Dateien können gelesen, geschrieben, geändert und gelöscht werden.
**Beispiel:** \\
ubuntu01 exportiert: /media/daten/ubuntu01-share\\
ubuntu03 exportiert: /home/ubuntu03-share\\
auf ubuntu01 wird das Share von ubuntu03 nach /mnt/ubuntu03-share gemountet\\
auf ubuntu03 wird das Share von ubuntu01 nach /mnt/ubuntu01-share gemountet
**Platzhalter:** \\
IP_UBUNTU01 = IP-Adresse von ubuntu01\\
IP_UBUNTU03 = IP-Adresse von ubuntu03\\
UID_VON_nfsync / GID_VON_nfsync = Werte aus id nfsync
===== NFS-Pakete installieren =====
Auf beiden Servern ausführen:
sudo apt update
sudo apt install nfs-kernel-server nfs-common
==== NFS-User auf erstem Server anlegen ====
Auf z.B. ubuntu01:
sudo adduser nfsync
oder ohne Login-Shell:
sudo useradd -m -s /usr/sbin/nologin nfsync
UID und GID anzeigen:
id nfsync
Die ausgegebenen Werte für UID und GID notieren.
==== Gruppe auf zweitem Server anlegen ====
Auf dem zweiten Server die Gruppe mit derselben GID wie auf dem ersten Server anlegen:
sudo groupadd -g GID_VON_nfsync nfsync
==== Gleichen User auf zweitem Server anlegen ====
Auf dem zweiten Server den User mit derselben UID und GID anlegen:
sudo useradd -m -u UID_VON_nfsync -g GID_VON_nfsync -s /usr/sbin/nologin nfsync
Prüfen:
id nfsync
Auf beiden Servern müssen UID und GID identisch sein.
==== Exportverzeichnis auf ubuntu01 erstellen ====
sudo mkdir -p /media/daten/ubuntu01-share
sudo chown nfsync:nfsync /media/daten/ubuntu01-share
sudo chmod 770 /media/daten/ubuntu01-share
Hier liegen die eigenen Daten von ubuntu01, die über NFS freigegeben werden.
==== Exportverzeichnis auf ubuntu03 erstellen ====
sudo mkdir -p /home/ubuntu03-share
sudo chown nfsync:nfsync /home/ubuntu03-share
sudo chmod 770 /home/ubuntu03-share
Hier liegen die eigenen Daten von ubuntu03, die über NFS freigegeben werden.
==== /etc/exports auf ubuntu01 konfigurieren ====
sudo nano /etc/exports
Eintrag ergänzen:
/media/daten/ubuntu01-share IP_UBUNTU03(rw,sync,no_subtree_check,all_squash,anonuid=UID_VON_nfsync,anongid=GID_VON_nfsync)
Bedeutung:\\
rw = Lesen und Schreiben erlaubt\\
sync = synchron schreiben\\
no_subtree_check = weniger Probleme bei Unterverzeichnissen\\
all_squash = alle Zugriffe werden auf den anonymen User gemappt\\
anonuid / anongid = UID/GID des Users nfsync
===== /etc/exports auf ubuntu03 konfigurieren =====
sudo nano /etc/exports
Eintrag ergänzen:
/home/ubuntu03-share IP_UBUNTU01(rw,sync,no_subtree_check,all_squash,anonuid=UID_VON_nfsync,anongid=GID_VON_nfsync)
Exporte neu einlesen
Auf beiden Servern ausführen:
sudo exportfs -ra
Exportliste prüfen
sudo exportfs -v
Kontrollieren, ob beide Verzeichnisse korrekt exportiert sind.
UFW: NFS auf ubuntu01 erlauben
sudo ufw allow from IP_UBUNTU03 to any port nfs
UFW: NFS auf ubuntu03 erlauben
sudo ufw allow from IP_UBUNTU01 to any port nfs
==== Mountpoint auf ubuntu01 anlegen (für ubuntu03) ====
sudo mkdir -p /mnt/ubuntu03-share
Dieser Ordner ist nur der lokale Mountpoint auf ubuntu01.\\
Hier keine eigenen Daten ablegen.
==== Mountpoint auf ubuntu03 anlegen (für ubuntu01) ====
sudo mkdir -p /mnt/ubuntu01-share
Dieser Ordner ist nur der lokale Mountpoint auf ubuntu03.\\
Hier keine eigenen Daten ablegen.
Test-Mount auf ubuntu01 (Share von ubuntu03)
sudo mount -t nfs4 IP_UBUNTU03:/home/ubuntu03-share /mnt/ubuntu03-share
Danach zeigt /mnt/ubuntu03-share die Daten von /home/ubuntu03-share auf ubuntu03 an.
Test-Mount auf ubuntu03 (Share von ubuntu01)
sudo mount -t nfs4 IP_UBUNTU01:/media/daten/ubuntu01-share /mnt/ubuntu01-share
Danach zeigt /mnt/ubuntu01-share die Daten von /media/daten/ubuntu01-share auf ubuntu01 an.
Mounts prüfen
mount | grep nfs
zusätzlich:
ls -l /mnt/ubuntu03-share\\
ls -l /mnt/ubuntu01-share
==== Funktionstest: Datei von ubuntu01 nach ubuntu03 schreiben ====
Auf ubuntu01:
sudo -u nfsync touch /mnt/ubuntu03-share/test_von_ubuntu01.txt
Auf ubuntu03 prüfen:
ls -l /home/ubuntu03-share
Die Datei sollte dort sichtbar sein und dem User nfsync gehören.
==== Funktionstest: Datei von ubuntu03 nach ubuntu01 schreiben ====
Auf ubuntu03:
sudo -u nfsync touch /mnt/ubuntu01-share/test_von_ubuntu03.txt
Auf ubuntu01 prüfen:
ls -l /media/daten/ubuntu01-share
Die Datei sollte dort sichtbar sein und dem User nfsync gehören.
==== Dauerhafter Mount auf ubuntu01 (/etc/fstab) ====
sudo nano /etc/fstab
Zeile ergänzen:
IP_UBUNTU03:/home/ubuntu03-share /mnt/ubuntu03-share nfs4 rw,_netdev,auto 0 0
Dauerhafter Mount auf ubuntu03 (/etc/fstab)
sudo nano /etc/fstab
Zeile ergänzen:
IP_UBUNTU01:/media/daten/ubuntu01-share /mnt/ubuntu01-share nfs4 rw,_netdev,auto 0 0
fstab-Einträge testen
sudo umount /mnt/ubuntu03-share 2>/dev/null
sudo umount /mnt/ubuntu01-share 2>/dev/null
sudo mount -a
Wenn keine Fehlermeldung erscheint, sind die Einträge korrekt.
Rechte und Ownership prüfen
ls -ld /media/daten/ubuntu01-share /home/ubuntu03-share
ls -l /mnt/ubuntu01-share /mnt/ubuntu03-share
Dateien, die über NFS erzeugt wurden, sollten als User/Gruppe nfsync erscheinen.
==== Wichtiger Hinweis ====
Die NFS-Exports bleiben auf den Servern:
**ubuntu01: /media/daten/ubuntu01-share\\
ubuntu03: /home/ubuntu03-share**
Gemountet wird immer nur auf die lokalen Mountpoints:
**ubuntu01: /mnt/ubuntu03-share\\
ubuntu03: /mnt/ubuntu01-share**
Nicht auf das Export-Verzeichnis selbst mounten, da sonst die lokalen Daten an dieser Stelle überdeckt werden.
==== Mount wieder lösen ====
sudo umount /mnt/ubuntu03-share
sudo umount /mnt/ubuntu01-share
===== Fehlerdiagnose =====
Exportliste anzeigen:
sudo exportfs -v
Aktive NFS-Mounts prüfen:
mount | grep nfs
Erreichbare Exporte eines Servers anzeigen:
showmount -e IP_UBUNTU01
showmount -e IP_UBUNTU03