ZFS

OpenZFS ondersteunde NFS-server Deel 1 - Een server maken

OpenZFS ondersteunde NFS-server Deel 1 - Een server maken
Als u bekend bent met OpenZFS, weet u alles over de veelzijdige interface, flexibele architectuur, betrouwbare checksums en COW-mechanismen. Misschien wilt u het ook op uw bureaublad, maar wilt u uw bestaande schijven en partities niet opnieuw formatteren. Misschien gebruikt u Windows 10, dat OpenZFS nog niet ondersteunt. Welnu, in deze blogpost zal ik bespreken hoe u een netwerkbestandssysteem, of NFS, kunt maken dat op een aparte server draait. Dit NFS-apparaat kan vervolgens op uw desktopwerkstation worden gemonteerd. Op deze manier kunt u de betrouwbaarheid en robuustheid van ZFS hebben met de gebruiksvriendelijkheid van uw favoriete Desktop OS, aangezien NFS beschikbaar is op alle platforms.

Ik zal het maken van een NFS-koppelpunt op een Windows 10-client beschrijven in deel 2 van deze serie detail. Laten we ons nu concentreren op een Ubuntu-server die NFS-opslag biedt en een Ubuntu-client die er verbinding mee probeert te maken.

De opzet

Mijn NFS-server wordt gebaseerd op Ubuntu 18.04 LTS. Je kunt je favoriete Linux-distro of FreeBSD gebruiken, of elk ander besturingssysteem dat OpenZFS ondersteunt. Mijn reden om Ubuntu 18 . te gebruiken.04 is dat het behoorlijk populair is en de toegangsdrempel aanzienlijk zou verminderen.

De NFS zou alleen beschikbaar moeten zijn op mijn LAN met het subnetmasker 255.255.255.0 en 192.168.0.1 als zijn standaard gateway. In gewoon Engels betekent dit dat alle apparaten die op mijn thuisnetwerk zijn aangesloten (WiFi en Ethernet, et al) IP-adressen hebben variërend van 192.168.0.2 tot en met 192.168.0.254.

De NFS-server wordt zo geconfigureerd dat alleen apparaten met alleen het bovengenoemde IP-adres toegang hebben tot de NFS-server. Dit zou ervoor zorgen dat alleen apparaten die verbonden zijn met mijn LAN toegang hebben tot mijn bestanden en dat de buitenwereld er geen toegang toe heeft. Als je een 'open Wifi'-configuratie hebt of als de beveiliging op het eindpunt van je router twijfelachtig is, zou dit geen garantie bieden voor beveiliging.

Ik zou niet aanraden om NFS via openbaar internet te gebruiken zonder extra beveiligingsmaatregelen.

Ten slotte hebben de opdrachten die op de NFS-server worden uitgevoerd de prompt, server $ en de opdrachten die aan de clientzijde moeten worden uitgevoerd de prompt client $

OpenZFS-pool en dataset maken

1. zpool maken

Als je al een zpool in gebruik hebt, sla deze stap dan over. Op mijn NFS-server, waarop Ubuntu 18 . draait.04 LTS-server, ik installeer eerst OpenZFS.

server $ sudo apt install zfsutils-linux

Vervolgens zullen we een lijst maken van alle beschikbare blokapparaten om de nieuwe schijven (en partities) te zien die wachten om te worden geformatteerd met zfs.

$ lsblk
NAAM   MAJ:MIN RM  MAAT RO TYPE BEVESTIGINGSPUNT
loop0    7:0    0 89.5M 1 lus /snap/core/6130
loop1    7:1    0 86.9M 1 lus /snap/core/4917
loop2    7:2    0 91.1M 1 lus /snap/core/6259
sda      8:0    0   50G  0 schijf
├─sda1   8:1    0    1M  0 deel
└─sda2   8:2    0   50G  0 deel /
sdb      8:16   0  931G  0 schijf
sdc      8:32   0  931G  0 schijf
sr0     11:0    1 1024M  0 rom

Een typisch voorbeeld wordt hierboven getoond, maar uw naamgevingsconventie kan heel anders zijn. Je zult je eigen oordeel moeten gebruiken en er heel voorzichtig mee zijn. U wilt niet per ongeluk uw OS-schijf formatteren. De sda1-partitie heeft bijvoorbeeld duidelijk het root-bestandssysteem als koppelpunt, dus het is niet verstandig om het aan te raken. Als je nieuwe schijven gebruikt, is de kans groot dat ze geen koppelpunt of enige vorm van partitionering hebben.

Zodra u de naam van uw apparaten kent, zullen we de opdracht zpool create gebruiken om een ​​aantal van deze blokapparaten (genaamd sdb en sdc) te formatteren in een zpool met een enkele vdev die bestaat uit twee gespiegelde schijven.

server $ sudo zpool maak tank spiegel sdb sdc
server $ sudo zpool status tank
zpool statustank
zwembad: tank
staat: ONLINE
scan: geen gevraagd
configuratie:
NAAM        STAAT     LEES SCHRIJVEN CKSUM
tank        ONLINE       0     0     0
mirror-0  ONLINE       0     0     0
sdb     ONLINE       0     0     0
sdc     ONLINE       0     0     0
fouten: Geen bekende gegevensfouten

In de toekomst kun je schijven toevoegen in sets van twee (genaamd vdev) om de grootte van deze zpool te vergroten, de nieuwe schijven zullen verschijnen als mirror-1, mirror-2 enz. U hoeft uw zpool niet te maken zoals ik deed, u kunt mirroring gebruiken met meer schijven, u kunt striping gebruiken zonder redundantie maar betere prestaties, of u kunt RAIDZ gebruiken. Je kunt er hier meer over leren.

Waar het uiteindelijk om gaat, is dat we een zpool hebben gemaakt met de naam tank. Waarop de gedeelde NFS zal voortleven. Laten we een dataset maken die wordt gedeeld. Zorg er eerst voor dat het zwembad, genaamd 'tank', is gemonteerd. Standaard aankoppelpunt is '/tank' .

server $ sudo zfs mount tank
server $ sudo zfs create tank/nfsshare #creëer een nieuwe dataset bovenop de pool

Machtigingen instellen

Bij het delen van een NFS-directory heeft de superuser op het clientsysteem geen toegang tot iets op de share. Hoewel de superuser aan de clientzijde alles kan doen op de clientcomputer, is de NFS-mount technisch gezien geen onderdeel van de clientcomputer. Dus het toestaan ​​van bewerkingen namens de client-side superuser die is toegewezen als server-side superuser kan leiden tot beveiligingsproblemen. Standaard wijst NFS de superuser-acties aan de clientzijde toe aan niemand: geen groep gebruiker en gebruikersgroep. Als je van plan bent om de gekoppelde bestanden als root te benaderen, dan moet de dataset op onze NFS-server ook dezelfde rechten hebben,

server $ sudo chown niemand:nogroup /tank/nfsshare

De NFS-server voert elke actie van de client-side root uit als gebruiker niemand, dus de bovenstaande toestemming laat de bewerkingen doorgaan.

Als je een andere (gewone) gebruikersnaam gebruikt, is het vaak handig om aan beide kanten een gebruiker te hebben met exact dezelfde gebruikersnaam.

NFS-share maken

Zodra je Zpool hebt gemaakt, moet je het nfs-serverpakket installeren vanuit je pakketbeheerder:

server $ sudo apt install nfs-kernel-server

Traditioneel gebruikt de NFS-server het /etc/exports-bestand om een ​​lijst te krijgen van goedgekeurde clients en de bestanden waartoe ze toegang hebben. We zullen echter de ingebouwde functie van ZFS gebruiken om hetzelfde te bereiken.

Gebruik gewoon de opdracht:

server $ sudo zfs set sharenfs=”on” /tank/nfsshare

Eerder zinspeelde ik erop om alleen bepaalde IP's toegang te geven. U kunt dit als volgt doen:

server $ sudo zfs set sharenfs="[email protected]/24" tank/nfsshare

De 'rw' staat voor lees-schrijfrechten, en dat wordt gevolgd door het bereik van IP's. Zorg ervoor dat de poortnummers 111 en 2049 open staan ​​op uw firewall. Als u ufw gebruikt, kunt u dat controleren door het volgende uit te voeren:

server $ ufw-status

Noteer het IP-adres van uw server op het LAN, met behulp van de opdracht ifconfig of ip addr. Laten we het server noemen.ik p

Montage aan clientzijde

Nadat de share is gemaakt, kunt u deze koppelen aan uw clientcomputer door de opdracht uit te voeren:

client $ mount -t nfs-server.ip:/tank/nfsshare /mnt

Dit zal de NFS-share aankoppelen in de map /mnt, maar je had net zo gemakkelijk een ander aankoppelpunt naar keuze kunnen kiezen.

Conclusie

Het delen van bestanden is waarschijnlijk het belangrijkste aspect van systeembeheer. Het verbetert uw begrip van de opslagstack, netwerken, gebruikersrechten en privileges. U zult snel het belang inzien van het principe van het minste privilege - dat wil zeggen, geef een gebruiker alleen de minimaal mogelijke toegang die hij nodig heeft voor zijn werk.

Je leert ook over de interoperabiliteit tussen verschillende besturingssystemen. Windows-gebruikers hebben toegang tot NFS-bestanden, net als de Mac- en BSD-gebruikers. Je kunt jezelf niet beperken tot één besturingssysteem als je te maken hebt met een netwerk van machines die allemaal hun eigen conventies en volkstaal hebben. Dus ga je gang en experimenteer met je NFS-share. Ik hoop dat je iets hebt geleerd.

Hoe u uw gamesessie op Linux kunt vastleggen en streamen
In het verleden werd het spelen van games alleen als een hobby beschouwd, maar met de tijd zag de game-industrie een enorme groei in termen van techno...
Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...
OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...