ZFS

OpenZFS-gestützter NFS-Server Teil 1 – Erstellen eines Servers

OpenZFS-gestützter NFS-Server Teil 1 – Erstellen eines Servers
Wenn Sie mit OpenZFS vertraut sind, wissen Sie alles über seine funktionsreiche Schnittstelle, flexible Architektur, zuverlässige Prüfsummen und COW-Mechanismen. Vielleicht möchten Sie es auch auf Ihrem Desktop, aber Sie möchten Ihre vorhandenen Festplatten und Partitionen nicht neu formatieren. Vielleicht verwenden Sie Windows 10, das OpenZFS noch nicht unterstützt. Nun, in diesem Blogbeitrag werde ich diskutieren, wie Sie ein Network File System (NFS) erstellen können, das auf einem separaten Server läuft running. Dieses NFS-Gerät kann dann auf Ihrer Desktop-Workstation gemountet werden. Auf diese Weise können Sie die Zuverlässigkeit und Robustheit von ZFS mit der Benutzerfreundlichkeit Ihres bevorzugten Desktop-Betriebssystems nutzen, da NFS auf allen Plattformen verfügbar ist.

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

Als 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.

$ lsblk
NAME   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 sdc
server $ 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 tank
server $ 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/nfsshare

Der 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-server

Traditionell 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/nfsshare

Vorhin 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/nfsshare

Das '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-Status

Notieren 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 /mnt

Dadurch 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.

So steigern Sie die FPS unter Linux?
FPS steht für Bilder pro Sekunde. Die Aufgabe von FPS besteht darin, die Bildrate bei Videowiedergaben oder Spielleistungen zu messen. In einfachen Wo...
Top Oculus App Lab-Spiele
Wenn Sie Besitzer eines Oculus-Headsets sind, müssen Sie über Sideloading informiert sein. Sideloading ist der Prozess der Installation von Inhalten, ...
Top 10 Spiele zum Spielen auf Ubuntu
Die Windows-Plattform war eine der dominierenden Plattformen für Spiele aufgrund des großen Prozentsatzes von Spielen, die heute entwickelt werden, um...