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-linuxVervolgens 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.
$ lsblkNAAM 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 sdcserver $ 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 tankserver $ 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/nfsshareDe 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-serverTraditioneel 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/nfsshareEerder 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/nfsshareDe '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-statusNoteer 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 /mntDit 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.