ZFS

OpenZFS-backad NFS-server del 1 - Skapa en server

OpenZFS-backad NFS-server del 1 - Skapa en server
Om du är bekant med OpenZFS vet du allt om dess funktionsrika gränssnitt, flexibel arkitektur, tillförlitliga kontrollsummor och COW-mekanismer. Kanske vill du också ha det på skrivbordet, men du vill inte formatera om dina befintliga diskar och partitioner. Du kanske använder Windows 10, som ännu inte stöder OpenZFS. Tja i det här blogginlägget kommer jag att diskutera hur du kan skapa ett nätverksfilsystem, eller NFS, som körs på en separat server. Denna NFS-enhet kan sedan monteras på din stationära arbetsstation. På detta sätt kan du ha ZFS tillförlitlighet och robusthet med användarvänligheten för ditt favorit Desktop OS, eftersom NFS är tillgängligt på alla plattformar.

Jag kommer att beskriva skapandet av NFS-monteringspunkt på en Windows 10-klient i del 2 i denna serie. Låt oss nu fokusera på en Ubuntu-server som erbjuder NFS-lagring och en Ubuntu-klient som försöker ansluta till den.

Upplägget

Min NFS-server kommer att baseras på Ubuntu 18.04 LTS. Du kan använda din favorit Linux-distro eller FreeBSD eller något annat operativsystem som stöder OpenZFS. Min anledning till att använda Ubuntu 18.04 är att det är ganska populärt och skulle avsevärt minska inträdesbarriären.

NFS ska vara tillgänglig endast på mitt LAN som har nätmask 255.255.255.0 och 192.168.0.1 som standardportal. På vanlig engelska betyder det att alla enheter som är anslutna till mitt hemnätverk (WiFi och Ethernet, et al) kommer att ha IP-adresser från 192.168.0.2 till 192.168.0.254.

NFS-servern kommer att konfigureras så att endast enheter med endast ovan nämnda IP-adress har åtkomst till NFS-servern. Detta skulle säkerställa att endast enheter som har anslutit till mitt LAN har åtkomst till mina filer och omvärlden inte kan komma åt den. Om du har en "öppen Wifi" -konfiguration eller om säkerheten på din routers slutpunkt är tveksam, skulle detta inte garantera någon säkerhet.

Jag skulle inte rekommendera att köra NFS över offentligt internet utan ytterligare säkerhetsåtgärd.

Slutligen har kommandona som körs på NFS-servern prompten, server $ och kommandona som ska köras på klientsidan har snabbklienten $

Skapa OpenZFS-pool och datauppsättning

1. Skapar zpool

Hoppa över det här steget om du redan har en zpool igång. På min NFS-server, som kör Ubuntu 18.04 LTS-server, jag installerar först OpenZFS.

server $ sudo apt installera zfsutils-linux

Därefter listar vi alla tillgängliga blockenheter för att se de nya diskarna (och partitionerna) som väntar på att formateras med zfs.

$ lsblk
NAMN MAJ: MIN RM STORLEK RO TYP MOUNTPOINT
loop0 7: 0 0 89.5M 1 slinga / snäpp / kärna / 6130
loop1 7: 1 0 86.9M 1 slinga / snäpp / kärna / 4917
loop2 7: 2 0 91.1M 1 slinga / snäpp / kärna / 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

Ett typiskt exempel visas ovan, men din namngivning kan vara väldigt annorlunda. Du måste använda ditt eget omdöme och vara mycket försiktig med det. Du vill inte oavsiktligt formatera din OS-disk. Till exempel har sda1-partitionen tydligt rotfilsystemet som sin monteringspunkt så det är inte klokt att röra vid det. Om du använder nya diskar är det troligt att de inte har någon monteringspunkt eller någon form av partitionering.

När du väl vet namnet på dina enheter kommer vi att använda kommandot zpool create för att formatera ett par av dessa blockenheter (kallas sdb och sdc) till en zpool med en enda vdev som består av två speglade diskar.

server $ sudo zpool skapa tank spegel sdb sdc
server $ sudo zpool status tank
zpool status tank
pool: tank
stat: ONLINE
skanna: ingen begärs
konfigurera:
NAMN STAT LÄS SKRIV CKSUM
tank ONLINE 0 0 0
spegel-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
fel: Inga kända datafel

Framåt kan du lägga till skivor i uppsättningar om två (kallas vdev) för att öka storleken på denna zpool, de nya skivorna kommer att visas som spegel-1, spegel-2 etc. Du behöver inte skapa din zpool som jag gjorde, du kan använda spegling med fler diskar, du kan använda striping utan redundans men bättre prestanda, eller så kan du använda RAIDZ. Du kan lära dig mer om det här.

I slutet av dagen betyder det att vi har skapat en tank som heter zpool. På vilken den delade NFS kommer att leva. Låt oss skapa en dataset som kommer att delas. Se först till att poolen, som heter "tank", är monterad. Standard monteringspunkt är '/ tank' .

server $ sudo zfs montera tank
server $ sudo zfs create tank / nfsshare #create a new dataset on the top of the pool

Ställa in behörigheter

När du delar en NFS-katalog har superanvändaren på klientsystemet inte åtkomst till någonting på resursen. Även om superanvändaren på klientsidan kan göra vad som helst på klientmaskinen, är NFS-fästet tekniskt inte en del av klientmaskinen. Så att tillåta operationer för superanvändaren på klientsidan som mappats som superanvändare på serversidan kan leda till säkerhetsproblem. Som standard kartlägger NFS superanvändaråtgärderna på klientsidan till ingen: gruppera användare och användargrupp. Om du tänker få åtkomst till de monterade filerna som root, bör dataset på vår NFS-server också ha samma behörigheter,

server $ sudo chown none: nogroup / tank / nfsshare

NFS-servern kommer att köra alla åtgärder av klientsidan som användare ingen, så ovanstående tillstånd tillåter operationerna att gå igenom.

Om du använder ett annat (vanligt) användarnamn är det ofta bekvämt att ha en användare med samma exakta användarnamn på båda sidor.

Skapar NFS-delning

När du har skapat Zpool bör du installera nfs-serverpaketet från din pakethanterare:

server $ sudo apt installera nfs-kernel-server

Traditionellt använder NFS-servern / etc / export-filen för att få en lista över godkända klienter och de filer de kommer att ha tillgång till. Vi kommer dock att använda ZFS inbyggda funktion för att uppnå detsamma.

Använd bara kommandot:

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

Tidigare antydde jag att endast ge vissa IP-adresser åtkomst. Du kan göra det på följande sätt:

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

'Rw' står för läs-skrivbehörigheter, och det följs av IP-intervallet. Se till att portnummer 111 och 2049 är öppna i din brandvägg. Om du använder ufw kan du kontrollera det genom att köra:

server $ ufw-status

Anteckna din servers IP på LAN genom att använda kommandot ifconfig eller ip addr. Låt oss kalla det server.ip

Montering på klientsidan

När resursen har skapats kan du montera den på din klientmaskin genom att köra kommandot:

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

Detta kommer att montera NFS-delningen på / mnt-mappen, men du kunde lika gärna ha valt vilken annan monteringspunkt du än väljer.

Slutsats

Fildelning är förmodligen den viktigaste aspekten av systemadministrationen. Det förbättrar din förståelse för lagringsstacken, nätverk, användarbehörigheter och behörigheter. Du kommer snabbt att inse vikten av principen om minst privilegium - det vill säga bara ge en användare den kortaste möjliga åtkomst som den behöver till sitt jobb.

Du lär dig också om driftskompatibiliteten mellan olika operativsystem. Windows-användare kan komma åt NFS-filer, så kan Mac- och BSD-användare också. Du kan inte begränsa dig till ett operativsystem när du arbetar med ett nätverk av maskiner som alla har sina egna konventioner och allmänna språk. Så fortsätt och experimentera med din NFS-andel. Jag hoppas att du har lärt dig något.

Gratis och öppen källkodsmotorer för utveckling av Linux-spel
Den här artikeln kommer att täcka en lista över gratis motorer med öppen källkod som kan användas för att utveckla 2D- och 3D-spel på Linux. Det finns...
Shadow of the Tomb Raider for Linux Tutorial
Shadow of the Tomb Raider är det tolfte tillskottet till Tomb Raider-serien - en action-äventyrsspelfranchise skapad av Eidos Montreal. Spelet mottogs...
Hur man förbättrar FPS i Linux?
FPS står för Bildrutor per sekund. FPS: s uppgift är att mäta bildfrekvensen i videouppspelningar eller spelprestanda. Med enkla ord betecknas antalet...