NFS est l'abréviation de Network File System, c'est-à-dire système de fichiers réseau.
Ce système de fichiers en réseau permet de partager des données principalement entre systèmes de type UNIX mais des versions existent également pour Microsoft Windows™ et Mac.
NFS est compatible avec IPv6 sur la plupart des systèmes.
Avant de vous lancer dans la lecture de cette documentation, il existe une application permettant de créer facilement un partage de fichiers avec NFS. Son usage évite d'utiliser le terminal et favorise la configuration du réseau partagé NFS.
https://github.com/Philippe734/Simple.NFS.GUI
Tuto vidéo en français sur le site officiel
Elle installera automatiquement les paquets fping, nfs-common et nfs-kernel-server
C'est-à-dire de pouvoir installer des paquets et utiliser la commande sudo
Voir ici de quoi il est question et en particulier la commande « sudo ».
NFS surtout avant la version 4 (incompatible avec les précédentes) ne doit être déployé que sur des réseaux sûrs.
Quelle que soit la version, NFS est a déployer dans un réseau local et n'a pas de vocation à être ouvert sur internet.
On peut utiliser par exemple NFS sur son réseau local derrière une Box assurant le rôle de routeur NAT.
Dans le terminal lancer « ifconfig », l'adresse est à la ligne « inet adr:
», paragraphe « eth
» si vous êtes connecté en ethernet, « wlan
» pour une connexion Wi-Fi.
Vous pouvez aussi connaître l'IP de vos PC via l'applet network-manager.
Pour la suite de cet exemple, on considérera que Serveur et Client ont une adresse locale fixe :
Les machines | IP locales | Points de montage des fichiers |
---|---|---|
Votre serveur | IP de votre serveur | Exemple : /home/Votre_Nom_d'Utilisateur_sur_Votre_Serveur |
Serveur | 192.168.0.10 | /Fichiers_à_partager_sur_Serveur |
Votre client | IP de votre client | Exemple : /home/Nom_d'Utilisateur_sur_le_Client/Partage |
Client | 192.168.0.20 | /Point_de_montage_sur_Client |
Installez sur le ou les serveurs NFS le paquet nfs-kernel-server
La configuration d'un 'export' NFS se fait en éditant le fichier /etc/exports
# Un exemple à adapter: /Dossier/à/partager/ 192.168.0.0/24(rw,all_squash,anonuid=1000,anongid=1000,sync,no_subtree_check) /Dossier/numero02/ master(rw) trusty(rw,no_root_squash) /media/moi/Photos 192.168.0.0/24(rw,all_squash,anonuid=1000,anongid=1000,sync,no_subtree_check) /media/moi/Sport/Petanque 192.168.0.0/99(sync)
Dans ce fichier, chaque ligne est définie comme ceci :
<dossier partagé> <hôte>(<options>) <hôte2>(<options>)...
Les informations se trouvant sur une ligne sont les suivantes1) :
hosts
).@<netgroup>
.*.ubuntu-fr.org
.192.168.0.0/24
ou 192.168.0.*
ro
; c'est-à-dire en lecture seule.async
. Le serveur NFS respecte le protocole NFS.root
vers l'utilisateur anonyme (option par défaut).root
.Ce qui pourrait donner par exemple:
/media/NFS 192.168.0.0/24(rw,all_squash,anonuid=1000,anongid=1000,sync,no_subtree_check)
/media/NFS 192.168.0.24(rw,sync,no_subtree_check) ou /media/nfs 192.168.0.24(sync)
Après avoir défini vos partages dans le fichier /etc/exports il suffit de relancer le service nfs:
sudo service nfs-kernel-server reload
Cette commande ne coupe pas les transferts en cours si la nouvelle configuration permet toujours leur accès au serveur. Vous pouvez donc la lancer plus ou moins à n'importe quel moment.
Pour vérifier que l'export a bien eu lieu, taper sur le serveur NFS la commande :
showmount -e
Si l'export n'est pas effectif , il faut faire restart du service NFS mais attention cela peut interrompre les transferts en cours :
sudo service nfs-kernel-server restart
Pas indispensable si vous avez un bon firewall entre internet et votre réseau local, NFS peut être protégé par le serveur le cas échéant. Testez tout d'abord votre configuration sans protection pour voir si tout fonctionne si vous comptez utiliser ce genre de protection dans le futur.
Si vous utilisez denyhosts sur le serveur, il vous faudra ajouter les lignes suivantes dans le fichier /etc/hosts.allow :
portmap: <ip de la machine cliente> lockd: <ip de la machine cliente> nfsd: <ip de la machine cliente> mountd: <ip de la machine cliente> rquotad: <ip de la machine cliente> statd: <ip de la machine cliente>
et également afin de sécuriser un peu plus votre installation, ajouter dans le fichier /etc/hosts.deny :
# Tout interdire sur portmap, nfsd et mountd
portmap:ALL
nfsd:ALL
mountd:ALL
Si vous mettez en veille votre serveur NFS ou si il se met en veille automatique après un certain délai pour économiser l'énergie, alors vos clients NFS qui utilisent les partitions exportées seront "bloqués". Par exemple si un client NFS se met en veille, lors du réveil, après saisie du mot de passe dans l'écran de session, vous serez "bloqué" et aurez bien du mal à reprendre la main. Pour éviter cet effet de bord, je vous conseille de ne pas utiliser la mise en veille automatique sur votre serveur NFS (celui qui exporte les partitions) mais seulement l'économie d'énergie de l'écran (sans effet sur les partitions).
Pour accéder à un NFS, il faut le "monter". En gros il s'agit de dire au service qui s'occupe des disques durs que ce serveur NFS est comme un disque dur et qu'il serait bête de ne pas s'en servir !
Il n'existe pas d'autoconfiguration pour NFS, il faudra donc le faire manuellement.
Le paquet nécessaire pour accéder à un NFS est nfs-common
Après avoir installé ce paquet, il existe deux solutions pour monter son NFS sur un ordinateur.
La première est plus adaptée à un Serveur allumé en permanence (ou presque), la seconde via autoFS est peut être plus tolérante à l'arrêt inopiné du serveur.
Pour parcourir les partages NFS d'un serveur (ici : serveur.local, que vous pouvez remplacer par l'IP) saisissez dans un terminal la commande suivante:
showmount -e serveur.local Export list for serveur.local: /mnt/nas/media *.local,192.168.0.0/255.255.0.0
Il faut tout d'abord créer un dossier dans lequel le NFS viendra se loger. Ouvrez donc un terminal sur vos clients puis tapez:
sudo mkdir /media/NFS
Vous pouvez bien entendu créer un répertoire du nom de votre choix; dans ce cas adaptez les instructions suivantes au besoin.
Pour ce faire, il suffit de modifier le fichier /etc/fstab pour y ajouter la ligne:
192.168.0.10:/<Dossier_à_partager>/ /media/NFS nfs defaults,user,auto,_netdev,bg 0 0
Ces options de montage permettront de booster légèrement à énormément (suivant la carte réseau) la vitesse de transfert sur les gros fichiers.
Vous devriez maintenant utiliser moins de processeur mais ceci peut ne pas marcher très bien si votre liaison réseau est de mauvaise qualité (ne surtout pas utiliser ces options sur les clients en Wifi !)
Se servir d'AutoFS a de grands avantages quand à la gestion d'un partage NFS pour un client qui peut être déplacé vers un autre réseau, comme un ordinateur portable. Des problèmes d'instabilité peuvent survenir quand le NFS est en montage automatique comme avec les indications ci-dessus. Et s'il n'est pas automatique alors cela nécessite de monter manuellement le partage quand on rejoint à nouveau le réseau local. Auto-FS permet très simplement de définir le montage automatique quand on accède aux dossiers correspondant au partage.
La première étape est d'installer autofs comme indiqué dans la page dédiée sous le lien plus haut.
Il y a plusieurs méthodes pour ajouter un partage NFS, mais celle qui offre le plus de souplesse est d'utiliser l'option hosts. Voici la ligne à ajouter en bas du fichier /etc/auto.master
/net -hosts -fstype=nfs4,rw
Redémarrez le service Autofs
sudo service autofs restart
Et c'est tout !
Ou presque, vous venez de définir que le dossier /net à la racine du système est un portail pour accéder à n'importe quel partage accessible. La configuration de ce partage n'est plus déterminée que par le chemin d'accès. Voici des exemples avec le serveur <serveur>.local et le partage /<Dossier à partager>, vous n'avez qu'à accéder à :
/net/<serveur>.local/<Dossier à partager>/
Pour vous simplifier la vie, ou si vous aviez déjà configuré préalablement le montage sur un dossier comme /media/NFS, il vous suffit de remplacer le dossier /media/NFS par un lien symbolique :
sudo umount /media/NFS # Démontage du partage existant si besoin sudo rmdir /media/NFS # Suppression du point de montage si existant sudo ln -s /net/<serveur>.local/<Dossier à partager> /media/NFS # Création du lien symbolique
Ainsi vos anciens raccourcis ne seront pas perturbés.
Sachez qu'un firewall ne vous servira à rien si vous êtes (comme ce tutoriel l'exige très important) derrière un routeur.
Si vous faites un partage de connexion via Network-Manager un routage sera en place automatiquement, les ordinateurs dans le partage n'ont donc rien à craindre.
Si vous utilisez un pare-feu entre le modem et le PC qui partage la connexion internet, n'ouvrez surtout pas le port NFS vers le modem ! Il faut l'ouvrir dans le sens inverse, c'est-à-dire vers le partage de connexion ! Ne vous trompez pas !
Le seul intérêt d'un pare-feu dans ce cas précis est seulement si vous avez un nombre très important de postes informatiques chez vous et que ces postes risquent d'être utilisés par des personnes malveillantes.
Si vous utilisez tout de même un pare-feu sur vos serveurs et/ou clients NFS, il vous faudra le configurer pour ne pas filtrer NFS et donc pouvoir y accéder :
Si vous obtenez un message comme:"mount.nfs: access denied by server while mounting"ipserveur"", c'est certainement que vous avez entré les bonnes adresses ip autorisés dans export, cependant, NFSv4 n'utilise pas le système d'authentification par ip, il est donc utile de rétrograder en version 3 pour que le serveur se base sur l'ip
Modifier le fichier /etc/default/nfs-kernel-server et éditer la ligne
RPCNFSDCOUNT='8'
par
RPCNFSDCOUNT='8 --no-nfs-version 4'
Ajoutez ,vers=3 aux options de montage dans le fichier fichier /etc/fstab comme ceci :
192.168.0.10:/<Dossier_à_partager>/ /media/NFS nfs defaults,user,auto,noatime,bg,vers=3 0 0
Utilisez nfsstat
pour vérifier que la modification à été prise en compte.
Commentez les lignes suivantes dans les fichiers /usr/bin/libreoffice et /usr/bin/soffice (ajouter un # devant les deux lignes)
SAL_ENABLE_FILE_LOCKING=1 export SAL_ENABLE_FILE_LOCKING
Les clients Ubuntu 13 et 14 présentent un bug connu : un temps de latence très long pour le montage https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/1270445
Pour le résoudre, sur le client Modifier le fichier /etc/default/nfs-common et éditer la ligne
# Do you want to start the gssd daemon? It is required for Kerberos mounts. NEED_GSSD=
par
# Do you want to start the gssd daemon? It is required for Kerberos mounts. NEED_GSSD=yes
puis blacklister le module 'rpcsec_gss_krb5' en éditant le fichier /etc/modprobe.d/blacklist.conf en y ajoutant à la fin la ligne :
#To improve NFS mounting time blacklist 'rpcsec_gss_krb5'