Tips en Trucs 2016

Network File System (NFS)

NFS, Network File System wordt gebruikt om bestanden tussen linux/unix systemen te delen. Met NFS kunnen gebruikers bestanden op andere computers gebruiken alsof ze lokaal aanwezig zijn.

NFS heeft veel praktische toepassingen. Een paar voorbeelden:

NFS bestaat uit een server (aanbieder) en één of meer clients (gebruikers). De client gebruikt de gegevens die zijn opgeslagen op de server. Dit werkt enkel als enkele processen goed werken.

Deze diensten (deamons) moeten op de server draaien:

NFS server opzetten

We gebruiken twee systemen. Een NFS server (laptop) en NFS client (main). De NFS server heeft als IP-adres 192.168.1.3.

De NFS server installeren

Hoewel NFS in de Linux kernel is ingebakken, moet je toch het pakket nfs-kernel-server met allerlei hulpmiddelen installeren:

dany@laptop:~> sudo zypper install nfs-kernel-server
root's password:
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Afhankelijkheden tussen pakketten oplossen...

The following NEW package is going to be installed:
  nfs-kernel-server

1 new package to install.
Totale downloadgrootte: 122,7 KiB. Reeds in de cache: 0 B. Na de operatie zal aanvullend 436,6 KiB worden gebruikt.
Doorgaan? [j/n/? alle opties tonen] (j): 
package nfs-kernel-server-1.3.0-11.1.x86_64 wordt opgehaald                          (1/1), 122,7 KiB (436,6 KiB uitgepakt)
Ophalen: nfs-kernel-server-1.3.0-11.1.x86_64.rpm ....................................................[gereed (172,1 KiB/s)]
Controleren op conflicten tussen bestanden: .......................................................................[gereed]
(1/1) Installeert: nfs-kernel-server-1.3.0-11.1 ...................................................................[gereed]
De NFS dienst starten

Activeer en start de rpcbind en nfs diensten met de volgende opdrachten:

dany@laptop:~> sudo systemctl enable rpcbind.service
dany@laptop:~> sudo systemctl start rpcbind.service
dany@laptop:~> sudo systemctl enable nfsserver.service
dany@laptop:~> sudo systemctl start nfsserver.service

Mappen delen op de server

Creëer de map /var/nfs_share op de server en zorg dat gebruikers lees en schrijfrechten krijgen:

dany@laptop:~> sudo mkdir /var/nfs_share
dany@laptop:~> sudo chmod 755 /var/nfs_share/

Deel (exporteer) de map op de server door het /etc/exports configuratiebestand aan te passen (bijvoorbeeld met de teksteditor joe):

sudo joe /etc/exports

Voeg de te delen map toe aan het configuratiebestand /etc/exports:

# See the exports(5) manpage for a description of the syntax of this file.
# This file contains a list of all directories that are to be exported to
# other computers via NFS (Network File System).
# This file used by rpc.nfsd and rpc.mountd. See their manpages for details
# on how make changes in this file effective.
/var/nfs_share/     192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)

Sla de aanpassing op en sluit de teksteditor af.

Gebruikte opties voor de gedeelde map:

Na elke aanpassing van het /etc/export configuratiebestand moet je de NFS dienst op de hoogte brengen van de verandering door de volgende opdracht uit te voeren:

dany@laptop:~> sudo exportfs -a
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.1.0/24:/var/nfs_share/".
  Assuming default behaviour ('no_subtree_check').
  NOTE: this default has changed since nfs-utils version 1.0.x

En het herstarten van de rpcbind en nfs diensten:

dany@laptop:~> sudo systemctl restart rpcbind.service
dany@laptop:~> sudo systemctl restart nfsserver.service

Om de NFS gedeelde mappen aan de client computers aan te kunnen bieden, moet je NFS server poort van de firewall openen:

dany@laptop:~> sudo yast2 firewall services add zone=EXT service=service:nfs-kernel-server

Clients toegang geven tot NFS gedeelde mappen

Moderne Linux distributies zoals openSUSE Leap 42.1 installeren standaard NFS ondersteuning voor client computers.

Gedeelde NFS mappen koppelen

Creëer een map (/mnt/nfs_share) om de gedeelde NFS map aan te koppelen:

dany@main:~> sudo mkdir /mnt/nfs_share
root's password:

Geef deze map de nodige lees- en schrijfrechten:

dany@main:~> sudo chmod -R 777 /mnt/nfs_share/

Open de NFS client firewall poort om communicatie met de NFS server toe te laten:

dany@main:~> sudo yast2 firewall services add zone=EXT service=service:nfs-client

Koppel de NFS gedeelde map aan de door u aangemaakte map:

dany@main:~> sudo mount -t nfs 192.168.1.3:/var/nfs_share/ /mnt/nfs_share/

Controleer of de NFS gedeelde map gekoppeld is:

dany@main:~> sudo df -h
Bestandssysteem            Grootte Gebruikt Besch Geb% Aangekoppeld op
devtmpfs                      5,9G        0  5,9G   0% /dev
tmpfs                         5,9G     2,1M  5,9G   1% /dev/shm
tmpfs                         5,9G     2,4M  5,9G   1% /run
tmpfs                         5,9G        0  5,9G   0% /sys/fs/cgroup
/dev/sdc2                     324G     120G  204G  37% /
...
/dev/sdc2                     324G     120G  204G  37% /boot/grub2/i386-pc
192.168.1.3:/var/nfs_share     79G      12G   67G  15% /mnt/nfs_share

Of:

dany@main:~> sudo mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=6121508k,nr_inodes=1530377,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
...
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
/dev/sdc2 on / type btrfs (rw,relatime,ssd,space_cache,subvolid=259,subvol=/@/.snapshots/1/snapshot)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda2 on /boot/efi type vfat (rw,relatime,fmask=0002,dmask=0002,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/sda4 on /windows/C type fuseblk (rw,nosuid,nodev,noexec,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
/dev/sdb2 on /media/NTFS type fuseblk (rw,nosuid,nodev,noexec,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
/dev/sdb3 on /usr/home/Documents type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sdc2 on /.snapshots type btrfs (rw,relatime,ssd,space_cache,subvolid=258,subvol=/@/.snapshots)
...
/dev/sdc2 on /boot/grub2/i386-pc type btrfs (rw,relatime,ssd,space_cache,subvolid=260,subvol=/@/boot/grub2/i386-pc)
/dev/sdb3 on /srv/www/htdocs type xfs (rw,relatime,attr2,inode64,noquota)
vmware-vmblock on /run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=100)
tracefs on /sys/kernel/debug/tracing type tracefs (rw,relatime)
192.168.1.3:/var/nfs_share on /mnt/nfs_share type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.4,local_lock=none,addr=192.168.1.3)

NFS gedeelde mappen automatisch koppelen

Om bij elke start van het systeem NFS gedeelde mappen automatisch te koppelen, moet je het /etc/fstab bestand aanpassen:

sudo joe /etc/fstab

en voeg je de volgende regel toe:

192.168.1.3:/var/nfs_share/ /mnt/nfs_share/ nfs rw,sync,hard,intr 0 0

Sla de aanpassing op, sluit de teksteditor en controleer of de aanpassing correct werkt:

sudo mount -a

Alles is OK als je geen (fout)meldingen krijgt. Herstart nooit een systeem met fouten in het /etc/fstab configuratiebestand, de kans is namelijk zeer groot dat uw systeem niet meer opstart. Klaar, de NFS gedeelde map is nu steeds voor de client beschikbaar.

Network File System (NFS) in Dolphin