NFS Fildeling

Bilde av Olia Nayda fra Unsplash

Bilde av Olia Nayda fra Unsplash

NFS er ett supert filsystem som er skreddersydd for deling mellom Linux maskiner. Når en NFS server er satt opp, vil man kunne ta i bruk det delte filsystemet omtrent som om det var en disk som ble fysisk kobles til datamaskinen.

Denne guiden tar utgangspunkt i Ubuntu 20.04 server og dekstop, men de aller fleste Debian baserte Linux distroer bruker de samme pakkene. Dermed skal det være mulig å følge de samme stegene.

NFS server

Installasjon og oppsett

En NFS server er ikke nødvendigvis en server plassert i ett rack skap. Det kan fint være en vanlig datamaskin. Kriteriet for at den kalles en NFS server er at den tilbyr lagring til andre datamaskiner på nettverket.

Vi starter med å installere de nødvendige pakkene på serveren:

sudo apt update && sudo apt upgrade
sudo apt install nfs-kernel-server

Mappen jeg har tenkt å dele vil jeg plassere i /media mappen, og jeg ønsker å kalle den share.

sudo mkdir /media/share

For at deling av mapper skal fungere som det skal må alle ha lese, skrive og execute rettigheter på den delte mappen. Det oppretter vi slik:

sudo chmod 777 /media/share

Vi kontroller at alt ble som vi ønsket før vi går videre til neste steg

ls -ld /media/share
drwxrwxrwx 2 root root 4096 mai   18 17:43 /media/share/

Vi går videre med å finne ut hvilket nettverk vi befinner oss på, og samtidig ser hvilken IP-adresse serveren har.

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether 00:0c:29:86:fd:f8 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.239.10/24 brd 192.168.239.255 scope global dynamic noprefixroute ens33
       valid_lft 1165sec preferred_lft 1165sec
    inet6 fe80::360a:46d:8953:6232/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Ut ifra terminal dumpen over kan vi se at IP adressen er 192.168.239.10. og siden det er på subnettet /24 kan vi regne oss frem til at nettverket har ID 192.168.239.0/24. For mer informasjon om hvordan nettverk og IP-adresser fungere. Les denne artikkelen.

Nå har vi alt vi trenger å vite for å konfigurere NFS serveren, slik at den kan dele mappen med andre datamaskinene på nettverket.

Teknisk sett er det programmet exportfs som tar seg av deling av mappen via NFS, og fungerer som NFS serveren. Derfor er det i realiteten konfigurasjonsfilen til exportfs vi endrer på.

Vi åpner konfigurasjonsfilen og legger til følgende linje nederst:

sudo nano /etc/exports
/etc/exports
...
/media/share 192.168.239.0/24(rw,sync)

Nå gjenstår det bare å laste inn de nye instillingene i exportfs.

sudo exportfs -ar

Brannmur oppsett

NFS serveren lytter på port 2069, derfor må vi være sikker på at der er åpen. Jeg foretrekke å bruke ufw til gjøre endringer på brannumuren i Linux. Porten åpnes med denne kommandoen:

sudo ufw allow from 192.168.239.0/24 to any port nfs

Siden vi vil være litt forsiktige med hvilket nettverk som skal ha tilgang til NFS serveren, spesifiserte vi det i kommandoen over.

Så er det lurt å kontrollere at endringene ble som forventet kjør

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
2049                       ALLOW       192.168.239.0/24

Klient oppsett

Ta i bruk NFS filsystemet på en Linux maskin

Nå som serveren er klart til å server NFS filsystemet over nettverket kan vi konfigurere klient datamaskinen, som skal bruke NFS filsystemet fra serveren.

Først må en pakke med NFS verktøy installeres på klienten.

sudo apt install nfs-common

For å kunne ta i bruk NFS filsystemet på klienten må vi ha ett sted å mounte det, derfor oppretter vi en mappe som skal brukes som mount point.

sudo mkdir /media/from_nfs_server

Nå kan vi mounte NFS filsystemet fra serveren på denne mappen:

sudo mount -t nfs 192.168.239.10:/media/share /media/from_nfs_server

Hvis du ikke fikk noen feilmelding var mountingen vellykket. For å være sikker kan vi kontrollere at mounten er i orden.

mount | grep nfs
192.168.239.10:/media/share /media/from_nfs_server type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=900,retrans=5,sec=sys,clientaddr=192.168.239.140,local_lock=none,addr=192.168.239.10,_netdev)

Nå skal du kunne bruke filsystemet på akkurat samme måte som om det var en fysisk disk som var tilkoblet datamaskinen din.

For at NFS filsystemet skal forbli tilkoblet etter en reboot må du legge det til som en linje i fstab.

sudo nano /etc/fstab
/etc/fstab
...
192.168.239.10:/media/share /media/from_nfs_server nfs defaults 0 0

Gratulerer du har nå satt opp en NFS server og tatt i bruk NFS filsystemet på en Linux maskin.