OpenZFS støttet NFS -server del 1 - Opprette en server

OpenZFS støttet NFS -server del 1 - Opprette en server
Hvis du er kjent med OpenZF -er, vet du alt om dets Feature Rich Interface, Fleksible Architecture, Pålitelige sjekksum og kumemekanismer. Kanskje du også vil ha det på skrivebordet ditt, men du vil ikke formatere eksisterende disker og partisjoner. Kanskje du bruker Windows 10, som ikke støtter OpenZFS. Vel, i dette blogginnlegget, vil jeg diskutere hvordan du kan opprette et nettverksfilsystem, eller NFS, som kjører på en separat server. Denne NFS -enheten kan deretter monteres på skrivebordets arbeidsstasjon. På denne måten kan du ha påliteligheten og robustheten til ZFS med brukervennligheten til ditt favoritt Desktop OS, siden NFS er tilgjengelig på alle plattformer.

Jeg vil detaljere opprettelsen av NFS -monteringspunkt på en Windows 10 -klient i delen 2 i denne serien. La oss foreløpig fokusere på en Ubuntu -server som tilbyr NFS -lagring og en Ubuntu -klient som prøver å koble seg til den.

Oppsettet

NFS -serveren min kommer til å være basert på Ubuntu 18.04 LTS. Du kan bruke din favoritt Linux -distro eller FreeBSD, eller et hvilket som helst annet operativsystem som støtter OpenZFS. Min grunn til å bruke Ubuntu 18.04 er at det er ganske populært og vil redusere inngangsbarrieren betydelig.

NFS skal visstnok være tilgjengelig bare på LAN som har undernettmasken på 255.255.255.0 og 192.168.0.1 som standard gateway. På vanlig engelsk betyr dette at alle enhetene som er koblet til hjemmenettverket mitt (WiFi og Ethernet, et al) vil ha IP -adresser fra 192.168.0.2 til 192.168.0.254.

NFS -serveren vil bli konfigurert til at bare enheter med bare den nevnte IP -adressen skal ha tilgang til NFS -serveren. Dette vil sikre at bare enheter som har koblet til LAN -en min, får tilgang til filene mine og omverdenen ikke får tilgang til det. Hvis du har et "åpent wifi" -oppsett, eller hvis sikkerheten på ruterens endepunkt er tvilsom, vil dette ikke garantere noen sikkerhet.

Jeg vil ikke anbefale å kjøre NFS over offentlig internett uten ekstra sikkerhetstiltak.

Til slutt har kommandoene som kjøres på NFS -serveren, serveren $ og kommandoene som skal kjøres på klientsiden, har den hurtige klienten $

Opprette OpenZFS -basseng og datasett

1. Opprette Zpool

Hvis du allerede har en zpool i gang, kan du hoppe over dette trinnet. På min NFS -server, som kjører Ubuntu 18.04 LTS -server, jeg installerer først OpenZFS.

server $ sudo apt installerer zfsutils-linux

Neste gang vil vi liste opp alle tilgjengelige blokkeringsenheter, for å se de nye diskene (og partisjonene) som venter på å bli formatert med ZFS.

$ LSBLK
Navn MAJ: Min RM -størrelse RO Type Mountpoint
Loop0 7: 0 0 89.5m 1 loop/snap/core/6130
Loop1 7: 1 0 86.9m 1 loop/snap/core/4917
Loop2 7: 2 0 91.1m 1 loop/snap/core/6259
SDA 8: 0 0 50g 0 Disk
├─Sda1 8: 1 0 1m 0 Del
└─Sda2 8: 2 0 50g 0 Del /
SDB 8:16 0 931G 0 Disk
SDC 8:32 0 931G 0 Disk
SR0 11: 0 1 1024M 0 ROM

Et typisk eksempel er vist ovenfor, men navnekonvensjonen din kan være veldig annerledes. Du må bruke din egen skjønn, og være veldig forsiktig med det. Du vil ikke ved et uhell formatere OS -disken din. For eksempel har SDA1 -partisjonen tydelig rotfilsystemet som monteringspunkt, så det er ikke lurt å berøre det. Hvis du bruker nye disker, er sjansen stor for at de ikke har et monteringspunkt eller noen form for partisjonering.

Når du vet navnet på enhetene dine, vil vi bruke Zpool Create Command for å formatere et par av disse blokkenhetene (kalt SDB og SDC) til en Zpool med en enkelt VDEV som består av to speilede disk.

server $ sudo zpool lage tank speil sdb sdc
server $ sudo zpool status tank
Zpool -status tank
Basseng: Tank
Stat: Online
Skanning: Ingen ba om
konfigurasjon:
Navn State Les Skriv cksum
Tank Online 0 0 0
Mirror-0 Online 0 0 0
SDB Online 0 0 0
SDC Online 0 0 0
Feil: Ingen kjente datafeil

Fremover kan du legge til disker i sett med to (kalt VDEV) for å vokse størrelsen på denne zpoolen, vil de nye diskene vises som speil-1, speil-2 osv. Du trenger ikke å lage din Zpool slik jeg gjorde, du kan bruke speiling med flere disker, du kan bruke striping uten redundans, men bedre ytelse, eller du kan bruke Raidz. På slutten av dagen er det som betyr noe at vi har laget en Zpool som heter Tank. Som de delte NF -ene vil leve på. La oss lage et datasett som vil bli delt. Forsikre deg først om at bassenget, som heter 'Tank', er montert. Standard monteringspunkt er '/tank' .

server $ sudo zfs montering tank
server $ sudo zfs opprette tank/nfsshare #skap et nytt datasett på toppen av bassenget

Sette tillatelser

Når du deler en NFS -katalog, har ikke superbrukeren på klientsystemet tilgang til noe på aksjen. Mens superbruker-siden er i stand til å gjøre noe på klientmaskinen, er NFS-monteringen teknisk sett ikke en del av klientmaskinen. Så å tillate operasjoner på vegne av superbruker-siden som er kartlagt som superbruker-siden, kan føre til sikkerhetsproblemer. Som standard kartlegger NFS kundesiden Superuser-handlinger til ingen: Nogroup-bruker og brukergruppe. Hvis du har tenkt å få tilgang til de monterte filene som root, bør datasett på NFS -serveren vår også ha de samme tillatelsene,

server $ sudo chown ingen: nogroup /tank /nfsshare

NFS-serveren vil kjøre enhver handling fra klientsiden som bruker ingen, så ovennevnte tillatelse vil tillate operasjonene å gå gjennom.

Hvis du bruker et annet (vanlig) brukernavn, er det ofte praktisk å ha en bruker med samme eksakte brukernavn på begge sider.

Opprette NFS -deling

Når du har opprettet Zpool, bør du installere NFS -serverpakken fra Package Manager:

server $ sudo apt install nfs-kernel-server

Tradisjonelt bruker NFS -serveren /etc /eksportfil for å få som liste over godkjente klienter og filene de vil ha tilgang til. Imidlertid vil vi bruke ZFS 'innebygde funksjon for å oppnå det samme.

Bare bruk kommandoen:

server $ sudo zfs set sharenfs = ”på” /tank /nfsshare

Tidligere henviste jeg til å gi bare visse IP -er tilgangen. Du kan gjøre det som å følge:

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

'RW' står for lese-skriv tillatelser, og det blir fulgt av utvalget av IPS. Forsikre deg om at portnummeret 111 og 2049 er åpne på brannmuren din. Hvis du bruker UFW, kan du sjekke det ved å kjøre:

server $ ufw status

Noter serverens IP på LAN, ved å bruke IFConfig eller IP Addr -kommandoen. La oss kalle det server.IP

Klientsiden montering

Når andelen er opprettet, kan du montere den på klientmaskinen din ved å kjøre kommandoen:

klient $ montering -t nfs server.ip:/tank/nfsshare/mnt

Dette vil montere NFS -delingen på /mnt -mappen, men du kunne like gjerne valgt et hvilket som helst annet monteringspunkt du ønsker.

Konklusjon

Fildeling er sannsynligvis det viktigste aspektet ved systemadministrasjon. Det forbedrer din forståelse av lagringsstabelen, nettverk, brukertillatelser og privilegier. Du vil raskt innse viktigheten av prinsippet om minst privilegium - det vil si, bare gi en bruker den barest mulig tilgangen den trenger til jobben.

Du vil også lære om interoperabiliteten mellom forskjellige operativsystemer. Windows -brukere kan få tilgang til NFS -filer, så kan Mac- og BSD -brukerne. Du kan ikke begrense deg til ett operativsystem når du arbeider med et nettverk av maskiner som alle har sine egne konvensjoner og språklige. Så gå videre og eksperimentere med din NFS -deling. Jeg håper du lærte noe.