NFS

NFS, Network File System, traduit; Système de Fichiers via Réseau, est comme son nom l'indique, un système de fichiers qui fonctionne au travers d'un réseau.. avec ça on peut donc monter le répertoire d'un ordinateur serveur sur un autre ordinateur client.. NFS utilise les adresses IP pour s'authentifier, aussi il va utiliser les droits d'accès du serveurs selon les UID et GID.assez de blah bla, voyons voir.

installation du serveur (sous debian)

pour faire fonctionner le serveur il faut:

  • le logiciel: nfs-kernel-server apt-get install nfs-kernel-server
  • les modules noyau suivants: (en générale c'est dans le noyau par défaut) NFS server support [*] Provide NFSv3 server support [*] Provide server support for the NFSv3 ACL protocol extension [*] Provide NFS server over TCP support
  • optionnel, le support pour monter le NFS (sera utile pour le client) NFS file system support

configuration

il faut définir ce que l'on veut partager via le fichier /etc/exports

/mnt/partage 192.168.88.8 (rw) 10.20.30.100 (ro) /home/user/autre 192.168.88.8 (rw)

explications :

  • le chemin du partage : on mets le chemin complet sans "slash" a la fin.
  • l'ip qui a droit au partage
  • droits sur le partage : (ro) (read only, lecture seul) ou (rw) (read write, lecture et écriture).

    je parlais de droits en introduction, ici il ne suffit pas de mettre uniquement (rw) pour avoir les pleins droits, l'utilisateur qui montera le partage aura un UID et GID qui dépends de sa machine, il faudra que ça corresponde aux droits sur l'hôte (ou que sur l'hôte ce soit 777 par exemple).

ensuite il faut configurer hosts allow et deny

/etc/hosts.deny par défaut on ferme tout :

portmap:ALL lockd:ALL mountd:ALL rquotad:ALL statd:ALL

/etc/hosts.allow et la on ouvre précisément pour ceux qu'on veut bien :

portmap: 192.168.88.8 10.20.30.100 lockd: 192.168.88.8 10.20.30.100 mountd: 192.168.88.8 10.20.30.100 rquotad: 192.168.88.8 10.20.30.100 statd: 192.168.88.8 10.20.30.100

redémarrage des services concernés

c'est pas bien compliqué

/etc/init.d/portmap restart /etc/init.d/nfs-kernel-server restart

coté client

c'est bien beau d'avoir un serveur de fichier, mais sans client on peut fermé boutique :] ici il nous faut:

  • les logiciels nfs-common portmap: apt-get install nfs-common portmap
  • les modules noyau suivants (souvent déjà dispo par défaut) : NFS file system support [*] Provide NFSv3 client support

configuration du client

il suffit maintenant de monter le partage NFS, pour cela il existe plusieurs possibilités, a la "main", via fstab, ou alors a la demande via autofs (voir l'article autofs)

on considere que :

  • SERVEUR_NFS est l'ip ou le nom de hôte du serveur NFS
  • /mnt/partage est le partage configuré sur le serveur NFS
  • /home/user/partage l'endroit ou l'on souhaite monter le partage sur le client

maintenant voyons les différentes manières de monter ce partage

  1. méthode a la "main" (faudra être root) mount SERVEUR_NFS:/mnt/partage /home/user/partage
  2. via /etc/fstab SERVEUR_NFS:/mnt/partage /home/user/partage nfs rw 0 0
  3. en passant par autofs partage rw SERVEUR_NFS:/mnt/partage

    avec plus d'options ça donnerait :

    partage -rsize=8192,wsize=8192,soft,timeo=14,rw SERVEUR_NFS:/mnt/partage

quelques options de montage NFS

  • hard or soft ?

    on pourra constater que lorsque le serveur NFS est injoignable le logiciel qui accède au montage NFS partira quelques temps en vacances. .... c'est normal, il est monté par défaut en "hard" (dur) ce qui signifie que tant que la source n'est plus disponible le programme ne peut plus continuer, une fois le serveur est de nouveau disponible tout repart comme si de rien n'etait. on peut donc ajouter l'option "soft" ce qui pourrait provoquer des perte de données en cas de coupure vers le serveur NFS, on pourra donc avoir des erreurs d'entrée/sortie. il faut donc faire un choix selon les besoins

  • rsize wsize

    cela défini la taille des blocs que s'échangent les 2 machines. certaines combinaisons de (vieilles) cartes réseau et modules noyau peuvent ne pas supporter des tailles trop grandes, mais ensuite des tailles plus grandes pourraient optimiser les transferts.. voir la page http://tldp.org/HOWTO/NFS-HOWTO/performance.html pour plus d'info

pour plus d'infos tout court

attention danger, ce site est en anglais :] http://tldp.org/HOWTO/NFS-HOWTO/