Die Erstellung von NFS-Mount-Punkten auf einem Windows 10-Client werde ich im Teil 2 dieser Serie detailliert beschreiben. Konzentrieren wir uns vorerst auf einen Ubuntu-Server, der NFS-Speicher bietet, und einen Ubuntu-Client, der versucht, eine Verbindung dazu herzustellen.
Die Einrichtung
Mein NFS-Server basiert auf Ubuntu 18.04 LTS. Sie können Ihre bevorzugte Linux-Distribution oder FreeBSD oder jedes andere Betriebssystem verwenden, das OpenZFS unterstütztZ. Mein Grund für die Verwendung von Ubuntu 18.04 ist, dass es sehr beliebt ist und die Eintrittsbarriere erheblich senken würde.
Das NFS soll nur in meinem LAN verfügbar sein, das die Subnetzmaske von 255 . hat.255.255.0 und 192.168.0.1 als Standard-Gateway. Im Klartext bedeutet dies, dass alle mit meinem Heimnetzwerk verbundenen Geräte (WiFi und Ethernet usw.) IP-Adressen von 192 . haben.168.0.2 bis 192.168.0.254.
Der NFS-Server wird so konfiguriert, dass nur Geräte mit der oben genannten IP-Adresse auf den NFS-Server zugreifen können. Dies würde sicherstellen, dass nur Geräte, die mit meinem LAN verbunden sind, auf meine Dateien zugreifen und die Außenwelt nicht darauf zugreifen kann. Wenn Sie ein "offenes Wifi"-Setup haben oder die Sicherheit am Endpunkt Ihres Routers zweifelhaft ist, würde dies keine Sicherheit garantieren guarantee.
Ich würde nicht empfehlen, NFS ohne zusätzliche Sicherheitsmaßnahmen über das öffentliche Internet auszuführen.
Schließlich haben die auf dem NFS-Server ausgeführten Befehle die Eingabeaufforderung server $ und die auf der Clientseite auszuführenden Befehle die Eingabeaufforderung client $
OpenZFS-Pool und Dataset erstellen
1. Zpool erstellen
Wenn Sie bereits einen Zpool in Betrieb haben, überspringen Sie diesen Schritt. Auf meinem NFS-Server, auf dem Ubuntu 18 ausgeführt wird.04 LTS-Server, ich installiere zuerst OpenZFS.
server $ sudo apt install zfsutils-linuxAls nächstes werden wir alle verfügbaren Blockgeräte auflisten, um die neuen Festplatten (und Partitionen) zu sehen, die darauf warten, mit zfs formatiert zu werden.
$ lsblkNAME MAJ:MIN RM GRÖSSE RO TYP MOUNTPOINT
loop0 7:0 0 89.5 M 1 Schleife /snap/core/6130
loop1 7:1 0 86.9 M 1 Schleife /snap/core/4917
loop2 7:2 0 91.1 Mio. 1 Schleife /snap/core/6259
sda 8:0 0 50G 0 Festplatte
├─sda1 8:1 0 1M 0 Teil
└─sda2 8:2 0 50G 0 Teil /
sdb 8:16 0 931G 0 Festplatte
sdc 8:32 0 931G 0 Festplatte 0
sr0 11:0 1 1024 M 0 rom
Oben sehen Sie ein typisches Beispiel, aber Ihre Namenskonvention kann ganz anders sein. Sie müssen Ihr eigenes Urteilsvermögen verwenden und sehr vorsichtig damit umgehen. Sie möchten Ihre Betriebssystemfestplatte nicht versehentlich formatieren. Zum Beispiel hat die sda1-Partition eindeutig das Root-Dateisystem als Mount-Punkt, daher ist es nicht ratsam, sie anzufassen. Wenn Sie neue Festplatten verwenden, haben diese wahrscheinlich keinen Mount-Punkt oder irgendeine Art von Partitionierung.
Sobald Sie den Namen Ihrer Geräte kennen, verwenden wir den Befehl zpool create, um einige dieser Blockgeräte (sdb und sdc genannt) in einen zpool mit einem einzigen vdev zu formatieren, der aus zwei gespiegelten Festplatten besteht.
server $ sudo zpool erstellen tankspiegel sdb sdcserver $ sudo zpool status tank
zpool-status tank
Becken: Tank
Zustand: ONLINE
scannen: keine angefordert
Konfiguration:
NAME STAAT LESEN SCHREIBEN CKSUM
tank ONLINE 0 0 0
Spiegel-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
Fehler: Keine bekannten Datenfehler
In Zukunft können Sie Festplatten in Zweiergruppen hinzufügen (vdev genannt), um die Größe dieses Zpools zu vergrößern. Die neuen Festplatten werden als Mirror-1, Mirror-2 usw. angezeigt. Sie müssen Ihren Zpool nicht so erstellen, wie ich es getan habe, Sie können Spiegelung mit mehr Festplatten verwenden, Sie können Striping ohne Redundanz, aber bessere Leistung verwenden, oder Sie können RAIDZ verwenden. Hier kannst du mehr darüber erfahren.
Am Ende des Tages ist es wichtig, dass wir einen Zpool namens Tank erstellt haben. Von dem das geteilte NFS leben wird. Lassen Sie uns einen Datensatz erstellen, der geteilt wird. Stellen Sie zunächst sicher, dass der Pool mit dem Namen 'Tank' montiert ist. Standardeinhängepunkt ist '/tank' .
server $ sudo zfs mount tankserver $ sudo zfs create tank/nfsshare #erstelle einen neuen Datensatz über dem Pool
Berechtigungen festlegen
Bei der Freigabe eines NFS-Verzeichnisses hat der Superuser auf dem Client-System keinen Zugriff auf alles auf der Freigabe. Während der clientseitige Superuser auf dem Client-Rechner alles tun kann, ist der NFS-Mount technisch gesehen kein Teil des Client-Rechners. Das Zulassen von Operationen im Namen des clientseitigen Superusers, der als serverseitiger Superuser zugeordnet ist, kann daher zu Sicherheitsproblemen führen. Standardmäßig ordnet NFS die clientseitigen Superuser-Aktionen niemandem zu: nogroup user und user group. Wenn Sie als Root auf die gemounteten Dateien zugreifen möchten, sollte der Datensatz auf unserem NFS-Server auch die gleichen Berechtigungen haben,
server $ sudo chown niemand:nogroup /tank/nfsshareDer NFS-Server führt jede Aktion des clientseitigen Roots als Benutzer none aus, sodass die obige Berechtigung die Ausführung der Operationen ermöglicht.
Wenn Sie einen anderen (normalen) Benutzernamen verwenden, ist es oft praktisch, auf beiden Seiten einen Benutzer mit genau demselben Benutzernamen zu haben.
Erstellen einer NFS-Freigabe
Nachdem Sie Zpool erstellt haben, sollten Sie das nfs-Serverpaket von Ihrem Paketmanager installieren:
server $ sudo apt install nfs-kernel-serverTraditionell verwendet der NFS-Server die Datei /etc/exports, um eine Liste der genehmigten Clients und der Dateien zu erhalten, auf die sie Zugriff haben. Wir werden jedoch die eingebaute Funktion von ZFS verwenden, um dasselbe zu erreichen.
Verwenden Sie einfach den Befehl:
server $ sudo zfs set sharenfs=“on“ /tank/nfsshareVorhin habe ich darauf hingewiesen, dass nur bestimmten IPs der Zugriff gewährt wird. Sie können dies wie folgt tun:
server $ sudo zfs set sharenfs="[email protected]/24" tank/nfsshareDas 'rw' steht für Lese-Schreib-Berechtigungen, gefolgt vom Bereich der IPs. Stellen Sie sicher, dass die Portnummern 111 und 2049 in Ihrer Firewall geöffnet sind. Wenn Sie ufw verwenden, können Sie dies überprüfen, indem Sie Folgendes ausführen:
Server $ufw-StatusNotieren Sie sich die IP Ihres Servers im LAN, indem Sie den Befehl ifconfig oder ip addr verwenden. Nennen wir es Server.ip
Clientseitige Montage
Sobald die Freigabe erstellt wurde, können Sie sie auf Ihrem Client-Computer mounten, indem Sie den folgenden Befehl ausführen:
Client $ mount -t nfs Server.ip:/tank/nfsshare /mntDadurch wird die NFS-Freigabe im Ordner /mnt gemountet, aber Sie hätten genauso einfach einen anderen Mount-Punkt Ihrer Wahl auswählen können.
Fazit
Die gemeinsame Nutzung von Dateien ist wahrscheinlich der wichtigste Aspekt der Systemverwaltung. Es verbessert Ihr Verständnis des Speicherstapels, des Netzwerks, der Benutzerberechtigungen und -privilegien. Sie werden schnell erkennen, wie wichtig das Prinzip der geringsten Berechtigung ist - das heißt, einem Benutzer nur den geringstmöglichen Zugriff zu gewähren, den er für seine Arbeit benötigt.
Außerdem erfahren Sie mehr über die Interoperabilität zwischen verschiedenen Betriebssystemen. Windows-Benutzer können auf NFS-Dateien zugreifen, ebenso wie Mac- und BSD-Benutzer. Sie können sich nicht auf ein Betriebssystem beschränken, wenn Sie mit einem Netzwerk von Maschinen arbeiten, die alle ihre eigenen Konventionen und ihre eigene Sprache haben. Also mach weiter und experimentiere mit deiner NFS-Freigabe. Ich hoffe du hast was gelernt.