NFS - Mise en place d'un serveur NFS v4

Submitted by ptitlouis (non vérifié) on lun, 07/09/2007 - 17:58

Cet article a pour but de présenter rapidement la mise en place d'un serveur NFS v4 sous Debian Etch avec des clients sous Debian unstable. D'autres articles suivront peut-être pour agrémenter ce document avec l'utilisation d'autofs-ldap pour le montage des répertoires personnels et l'authentification kerberos associé au serveur NFS v4.

Mise en place de partages NFS v4 :
 
NFS v4 est la nouvelle version du protocole de partages de fichiers historique pour *NIX Cette version apporte de nombreuses améliorations telles que :
  • sécurité via l’utilisation de kerberos pour l’authentification
  • la fiabilité avec l’utilisation de TCP par défaut
  • le passage à travers un firewall est beaucoup plus simple en utilisant par défaut le port 2049
  • le support de l’ipv6
  • réplication, failover et récupération des sessions en cas de panne du serveur

Cette version du protocole est incompatible avec les anciennes versions mais, cette incompatibilité est largement compensée par les améliorations apportées et la migration de l’une à l’autre est relativement simple à effectuer.

Mise en place sur serveur :
 
Le serveur NFS tourne sur une Debian etch à jour, les versions des outils utilisés sont, pour le moment, nfs-common et nfs-kernel-server 1.0.10-1 et linux-image-2.6.17-2-k7 compilé à la main pour des raisons de support matériel mais les images précompilées supportent aussi NFS 4.

Avant de commencer la configuration il faut s’assurer que les deux lignes suivantes soient présentes dans la sortie de mount :

nfsd on /proc/fs/nfsd type nfsd (rw)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

Sans ces deux lignes, NFS v4 ne pourra pas être mis en place. nfsd est monté par le script d’init du paquet nfs-kernel-server et rpc_pipefs est quant à lui monté par le script d’init de nfs-common.

NFS 4 permet maintenant de monter des partages en fonction d’une racine virtuelle. Ce partage racine est remarquable dans le fichier /etc/exports car il contient fsid=0. Par exemple pour définir la racine des répertoires NFS partagés sous /exports il faut ajouter dans le fichier /etc/exports :

/export *(rw,fsid=0,insecure,no_subtree_check)

La grande différence entre NFS v3 et NFS v4 est là, pour monter sur un client la racine des partage en NFS v3 il fallait faire :

mount -t nfs server:/export /mnt

alors qu’avec NFS v4 la commande devient :

mount -t nfs4 server:/ /mnt

Chaque sous-répertoire du répertoire /export sera partagé en fonction de la racine virtuelle. Donc pour partager un répertoire à l’extérieur de cette racine virtuelle, vous pouvez utiliser l’option --bind de mount(1). Par exemple pour partager les répertoires utilisateurs, utilisez la commande suivante pour ajouter le répertoire à la racine virtuelle :

mount --bind /home /export/home

un répertoire /export/home est alors présent dans /export. Pour exporter ce répertoire, vous pouvez utiliser la syntaxe habituelle des exports NFS.

Configuration du client :
 
Le montage d’un export NFS v4 sur un client requiert un util-linux récent (ici 2.12r-11) et nfs-common mais il reste une anomalie (#389557) dans le paquet Debian d’util-linux et génère cet avertissement :

Warning: rpc.idmapd appears not to be running.
All uids will be mapped to the nobody uid.

Pour monter un partage NFS, en supposant que les partages du serveur se situent dans /export, il faut utiliser la commande :

mount -t nfs4 serveur:/ /mnt

alors qu’avec NFS v3 et inférieure la commande aurait été :

mount -t nfs server:/export /mnt

Dans le fichier /etc/fstab le point de montage sera de cette forme :

serveur:/ /mnt nfs4 wsize=32768,rsize=32768 0 0

Services obsolètes :
 
L’arrivée de NFS v4 rend obsolète les services suivants :
  • portmapper
  • rpc.lockd
  • rpc.quotad

 

Liens externes :
 

 

Historique
 
  • Article rédigé par Julien Louis ( julien . louis at gmail . com ) le 13 Janvier 2007