====== 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