Mise en place d’un dossier distant en NFS

Si vous disposez d’un NAS (ou de n’importe quel serveur Linux), il est possible de monter sur le Raspberry un espace de stockage hébergé sur serveur et ce de façon totalement transparente, grâce au protocole NFS.

Pour permettre au Raspberry de bénéficier de beaucoup d’espace disque, il est possible de brancher des disques en USB ou d’utiliser un disque réseau. La première solution est la plus simple à mettre en œuvre, mais souffre deux limitations :

  • le respect de l’ampérage max (qui nécessitera par exemple un hub alimenté)
  • le débit sera limité par l’USB 2

L’alternative est donc de créer un espace de stockage sur un serveur et de monter cet espace sur le raspberry, qui le verra alors comme un simple dossier local. Cette technique utilise le protocole NFS (Network File System)

Côté serveur (le NAS)

Après vous être connecté en SSH au NAS, commencez par identifier les espaces de stockage physiques (pour éviter de placer le dossier sur le disque système, peu pourvu en espace) :

df -h

Une fois que vous avez identifié un emplacement de taille suffisante, créez le dossier qui servira au NFS (ici NFS_RPi) :

mkdir /DataVolume/NFS_RPi

Si votre serveur est domestique, donc que vous vous souciez peu des droits d’accès, le plus simple est d’appliquer au dossier nouvellement créé toutes les permissions :

chmod 777 /DataVolume/NFS_RPi

Maintenant, il faut définir l’emplacement du dossier à « exporter » via le protocole NFS. Éditez le fichier /etc/exports :

nano /etc/exports

Dans ce fichier, il faut alors rajouter la ligne suivante :

/DataVolume/NFS_RPi 192.168.1.0/24(fsid=0,rw,no_subtree_check,secure)

La commande « 192.168.1.0/24 » signifie que « tous les clients du réseau 192.168.1.0 » pour monter ce répertoire. Il se peut que les adresses IP définies par votre box soient 192.168.1.x, auquel cas il faut remplacer le dernier 1 de ma commande par un 0.

Reste à relancer le serveur NFS :

service nfs-kernel-server reload

Côté client (le raspberry)

Commencez par créer un dossier qui servira de point de montage :

mkdir /home/xbian/NFS

Reste à ajouter ce montage au fstab :

sudo nano /etc/fstab

et ajoutez-y :

192.168.1.41:/DataVolume/NFS_RPi /home/xbian/NFS nfs nouser,atime,auto,rw,dev,exec,suid 0 0

Les options de cette commande sont les suivantes :

  • 192.168.1.41 : adresse IP du serveur, mais vous pouvez tout aussi bien utiliser son nom d’hôte, ou mettre en place un DNS
  • /DataVolume/NFS_RPi Chemin (sur le serveur) du dossier partagé
  • /home/xbian/NFS : point de montage NFS
  • nfs  : protocole utilisé
  • plein d’autre options que je ne détaillerai pas (voir ici pour plus d’infos).

Si vous êtes branché en Gigabit (mais surtout pas en Wifi), il peut être intéressant de rajouter les options suivantes au montage, pour gagner en débit :

 rsize=16384,wsize=16384

Si vous avez oublié le chemin sur le serveur du dossier partagé, vous pouvez le retrouver facilement avec la commande suivante :

sudo showmount -e <AdresseDuServeur>

Une fois le montage défini dans le fstab, il faut réactualiser les points de montage :

sudo mount -a

Il se peut alors que le terminal vous retourne une erreur disant le montage a échoué (sur le modèle B+ uniquement, semble-t-il). Dans ce cas, il suffit de lancer rpcbind  :

sudo rpcbind start

et de réitérer le montage.

Et voilà ! Sur le raspberry, vous devriez maintenant voir un dossier (ici appelé NFS), dont le contenu est physiquement hébergé sur votre NAS.

Lancer rpcbind au démarrage du Raspberry

Ajoutez au dossier /init.d/ un script de lancement :

sudo nano /etc/init.d/rpcbind.sh

Dans ce fichier, demandez le lancement de rpcbind :

#! /bin/bash
rpcbind start
exit 0

Ajoutez le droit d’exécution au script :

sudo chmod +x /etc/init.d/rpcbind.sh

Enfin, mettez à jour la liste des scripts de démarrage :

sudo update-rc.d rpcbind.sh defaults