nfs
Use the Digital Ocean link below to quickly make NFS work ....
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-22-04
https://en.wikipedia.org/wiki/Network_File_System
https://tools.ietf.org/html/rfc1094
http://www.tldp.org/HOWTO/NFS-HOWTO/
http://www.tecmint.com/how-to-setup-nfs-server-in-linux/
CLIENT: nfs-common
SERVER: nfs-common + nfs-kernel-server
some tests:
- Is the server listening ...
$ sudo netstat -tupan | egrep 'rpc|Active|Proto'
LISTEN 2511/rpc.mountd LISTEN 2208/rpc.statd LISTEN 2511/rpc.mountd LISTEN 1974/rpcbind
- are there active connections ...
$ sudo netstat -tn | egrep '2049|Active|Proto'
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State
(no active connections yet cause no shares and no clients)
- give some statistics
$ nfsstat
Server rpc stats: calls badcalls badclnt badauth xdrcall 1 0 0 0 0 Server nfs v3: null getattr setattr lookup access readlink 1 100% 0 0% 0 0% 0 0% 0 0% 0 0% read write create mkdir symlink mknod 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% remove rmdir rename link readdir readdirplus 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% fsstat fsinfo pathconf commit 0 0% 0 0% 0 0% 0 0% Client rpc stats: calls retrans authrefrsh 0 0 0
- test shares
create directories like/shares/pluto
and/shares/mars
and put something inside
- exports file (here are your shares)
vim /etc/exports
# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /shares (insecure,no_root_squash,rw)
- restart the server:
$ sudo /etc/init.d/nfs-kernel-server restart
$ sudo /etc/init.d/idmapd restart
- client
installeer nfs-common
use mount or fstab
# mount -t nfs4 ....
-
testomgeving
We beginnen met het opzetten van een testomgeving:- 1 ubuntu server 16.04 met 2 netwerkkaarten: 1 kaart op NAT via DHCP // 1 kaart op intnet op 172.16.0.1/24 (of een andere private range)
- 1 linux-mint-client 19 op intnet
Het is nuttig de linux-mint-client eerst via NAT aan te sluiten en de softwarenfs-common
te installeren, daarna de client een statisch adres te geven als in http://linux800.be/inleiding/basic-services/static-net-config.
Daarna configureer ik de client op intnet via ip-adres 172.16.0.2/24
- de server zijde
Ik vind het leuker te werken op een server via ssh dan via de virtualbox terminal. Indien de vbox-machine op NAT is ingesteld lukt dit echter niet. We kunnen echter in de advanced config van de virtualbox NAT netwerkkaart, port forwarding inschakelen:
Nu kan ik een verbinding maken met de server via:
$ ssh localhost -p 2222 -l user
Het netwerk is als volgt geconfigureerd:# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet static address 172.16.0.1 netmask 24
We installerennfs-kernel-server
$ sudo apt-get install nfs-kernel-server Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: keyutils libgssglue1 libnfsidmap2 libtirpc1 nfs-common rpcbind Suggested packages: open-iscsi watchdog The following NEW packages will be installed: keyutils libgssglue1 libnfsidmap2 libtirpc1 nfs-common nfs-kernel-server rpcbind 0 upgraded, 7 newly installed, 0 to remove and 3 not upgraded. Need to get 460 kB of archives. After this operation, 2,049 kB of additional disk space will be used. Do you want to continue? [Y/n] y
Ik maak een testdirectory met te sharen files:$ sudo mkdir -p /srv/solarsystem/mars $ sudo mkdir /srv/solarsystem/pluto $ cd /srv/solarsystem/mars/ $ sudo touch deimos phobos $ cd ../pluto $ sudo touch charon stix nix kerberos
Ik stel de/etc/exports
file in:# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) /srv/solarsystem 172.16.0.2(rw,sync,no_subtree_check)
Wijzigingen in de
/etc/exports
file moeten worden ingeladen met een service reload:
$ sudo service nfs-kernel-server reload
Re-exporting directories for NFS kernel daemon... [ OK ]
- de client zijde
We brengen het netwerk van de client in orde: we zettenavahi-daemon
ennetwork-manager
uit.
/etc/network/interfaces
ziet er aangepast zo uit:# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 172.16.0.2 netmask 24 # gateway 172.16.0.1 # dns-nameservers 10.28.100.20
Als je er in slaagt in de test-omgeving de nfs-server om te schakelen als nat-router kun je de out-commented gateway en dns ook toevoegen.
Om nfs te testen maken we een mountpoint en voeren we eenmount
-commando uit:
sudo mount -t nfs 172.16.0.1:/srv/solarsystem /mnt/solarsystem/
Dit werkt: we kunnen metls
in de directory structuur, en met touch kunnen we aanpassingen maken:stien@nfscl-173 ~ $ ls /mnt/solarsystem/ -R /mnt/solarsystem/: earth mars pluto venus /mnt/solarsystem/earth: moon /mnt/solarsystem/mars: deimos phobos /mnt/solarsystem/pluto: charon kerberos nix stix /mnt/solarsystem/venus: stien@nfscl-173 ~ $ mkdir /mnt/solarsystem/mercury stien@nfscl-173 ~ $ ls -l /mnt/solarsystem/ total 20 drwxr-xr-x 2 stien stien 4096 Jun 3 10:13 earth drwxrwxrwx 2 root root 4096 Jun 3 09:56 mars drwxr-xr-x 2 stien stien 4096 Jun 3 11:09 mercury drwxrwxrwx 2 root root 4096 Jun 3 09:56 pluto drwxrwxr-x 2 ludo ludo 4096 Jun 3 10:18 venus
Nu we zeker zijn dat onzemount
werkt kunne we deze toevoegen aan de/etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda1 during installation UUID=990f7a23-5364-4fde-8edf-83e213ae88af / ext4 errors=remount-ro 0 1 # swap was on /dev/sda5 during installation UUID=22e1d7e4-af54-4f42-a24c-4dd1aad01a0c none swap sw 0 0 # onze NFS share 172.16.0.1:/srv/solarsystem /mnt/solarsystem/ nfs defaults 0 0
Ik herstart mijn test-client-machine ...
... en alles werkt:
$ mount
...
172.16.0.1:/srv/solarsystem on /mnt/solarsystem type nfs (rw,vers=4,addr=172.16.0.1,clientaddr=172.16.0.2)
...