Installation et configuration d'un serveur NFS

De Wiki_du_Réseau_des_Electroniciens_du_CNRS
Version datée du 10 avril 2013 à 09:34 par William.benharbone (discussion | contributions) (Configuration NFS du serveur)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Pré-requis

a. Un ordinateur sous linux pour créer le serveur NFS ou sur lequel on puisse installer Linux

b. Un switch réseau et le nombre de câbles réseaux ( nb de Rpi +1)

c. Une connexion réseau internet nécessaire lors de l’installation

Les commandes linux sont effectuées avec sudo mais cela ne fonctionne que si le paquet sudo est installé et configuré.
Sinon vous pouvez aussi ouvrir une session en tant que Root avec la commande su qui vous demande le mdp Root.

Installation d'une distribution Debian

Il existe plusieurs distributions de Linux. Le choix de la distribution DEBIAN est lié au fait que la distribution RASPBIAN en découle. L'installation d'une distribution Linux peut se faire via différents supports. Si vous n'avez pas de lecteur de CD-ROM sur la machine sur laquelle vous souhaitez installer LINUX, l'installation à partir d'une clé USB associé au réseau est une possibilité.

a. Télécharger l'image de la distribution adéquate, correspondante au support utilisé et au processeur de la machine sur laquelle sera installer la distribution en question.

       Site DEBIAN officiel de téléchargement


b. Créer une clé USB bootable

• sous linux, depuis la version Squeeze la création de la clé est devenue plus simple car elle ne nécessite plus de logiciel supplémentaire. Il faut simplement copier l’image de cd d’installation sur la clé USB avec la commande linux suivante :

 dd if=nomdeladistribution.iso of=/dev/sdX 
 # dd (utilitaire de copie) if=(input file= chemin de votre image) of=(output file= chemin physique du périphérique)/dev/sdX
 # (correspond au périphérique, où «X» est  une lettre minuscule (a-z) à laquelle la clé est affectée)

Utilisez la commande linux suivante pour connaître le périphérique auquel la clé est associée

 dmesg | grep sd
 # dmesg (pour visualiser les périphériques branchés associés aux fichiers linux de périphériques)
 # il est suivi d'un "|" pipe permettant de faire suivre une commande à partir de la première
 # grep permet de filtrer la recherche et "sd" est son filtre. il affichera donc toutes les lignes contenant "sd"

• sous windows, en utilisant l’utilitaire UNetbootin et en suivant les instructions par exemple via ce lien tutorial UNetbootin


c. Installation de Linux

Brancher votre clé USB bootable sur l'ordinateur sur lequel vous allez installer Linux puis allumez-le et allez dans le BIOS pour paramétrer pour le boot, les périphériques USB. Ensuite suivez les instructions d'installation. Une fois l’installation complète effectuée, faites une mise à jour avec les commandes suivantes:

 sudo apt-get update 
 #sudo apt-get update (réalise la mise à jour du cache des paquets existants pour faire la comparaison avec ceux installés)
 sudo apt-get upgrade
 #sudo apt-getupgrade (réalise l'installation des paquets à mettre à jour)

d. Configuration réseau

Afin de créer un sous-réseau pour les RaspberryPi, il est nécessaire de modifier les paramètres réseaux. Vous n'êtes pas forcément maîtres de ces paramètres sur le réseau de votre laboratoire. La solution est de créer une passerelle avec une seconde carte réseau pour avoir un réseau local. Il faut aussi un commutateur (Switch) sur lequel branchez le futur serveur NFS, coté réseau local. Afin que le serveur soit trouvé sur le réseau par les RaspberryPi, il est nécessaire de lui donner une adresse fixe. Les RaspberryPi seront aussi configurés avec une adresse ip fixe chacun pour faciliter leur identification et leur gestion.

Pour configurer le réseau local, utilisez la commande suivante afin d’éditer le fichier interfaces :

 sudo nano /etc/network/interfaces
 # sudo nano /etc/network/interfaces (nano est un éditeur de texte. Le fichier ''interfaces'' contient la configuration réseau de l'ordinateur)

Ajouter si vous avez une seconde carte réseau le texte suivant contenant les paramètres habituels que son adresse ip, le masque de sous-réseau et la passerelle :

       iface eth1 inet static
       address 192.30.0.1
       netmask 255.255.255.0
       gateway 192.30.0.255
       

Sinon remplacer dhcp par static puis modifier de la même façon les paramètres, évidemment avec vos paramètres.

En Tapant ensuite la commande suivante :

ifconfig

Vous obtenez dans le cas d'un serveur avec deux cartes réseaux, la configuration des deux cartes réseaux eth0 et eth1 :

root@raspberry-server:/home/llrf# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:14:5e:dd:0d:2a
         inet adr:134.158.196.xxx  Bcast:134.158.197.xxx  Masque:255.255.254.0
         adr inet6: fe80::214:5eff:fedd:d2a/64 Scope:Lien
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:3379448 errors:0 dropped:0 overruns:0 frame:0
         TX packets:571691 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 lg file transmission:1000
         RX bytes:735047002 (700.9 MiB)  TX bytes:139612510 (133.1 MiB)
         Interruption:18 Mémoire:ca000000-ca012800
eth1      Link encap:Ethernet  HWaddr 00:14:5e:dd:0d:2c
         inet adr:192.30.0.1  Bcast:192.30.0.255  Masque:255.255.255.0
         UP BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 lg file transmission:1000
         RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
         Interruption:16 Mémoire:ce000000-ce012800
lo        Link encap:Boucle locale
         inet adr:127.0.0.1  Masque:255.0.0.0
         adr inet6: ::1/128 Scope:Hôte
         UP LOOPBACK RUNNING  MTU:16436  Metric:1
         RX packets:787 errors:0 dropped:0 overruns:0 frame:0
         TX packets:787 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 lg file transmission:0
         RX bytes:73390 (71.6 KiB)  TX bytes:73390 (71.6 KiB)

Une fois la configuration réseau effectuée. Vous pouvez pour faciliter l'identification du serveur et des RaspberryPi leur donner des noms . Utilisez la commande suivante:

  sudo hostname raspberry-server
 #hostname nomdemachine_souhaité (permet d'affecter un nom à la machine que vous êtes en train d'utiliser pour la session en cours. Pour une affectation
 #definitive,ouvrez le fichier ''/etc/hostname'' et tapez le nom souhaité. Pour les RaspberryPi, il y a déjà un nom, devinez ;)  )

Ensuite il faut attribuer le nom des différentes machines à leur adresse ip dans le fichier /etc/hosts en l'éditant avec la commande suivante :

 nano  /etc/hosts

Vous ajoutez ensuite les adresses ip avec le nom de machine associé :

127.0.0.1 localhost
192.30.0.1 raspberry-server
192.30.0.2 raspberry1
192.30.0.3 raspberry2

Configuration NFS du serveur

a. Installation des paquets nécessaires pour créer le serveur NFS

Il faut installer les paquets nfs-kernel-server, nfs-common et rpcbind en utilisant la commande suivante :

 sudo apt-get install nfs-kernel-server nfs-common rpcbind
 #sudo apt-get install ''nom_du_paquet1 nom_du_paquet2''

S'ils ne sont pas présents, vous trouverez les paquets de la distribution stable DEBIAN à installer sur via ce lien :http://packages.debian.org/squeeze/

Utilisez ensuite la commande pour décompresser et installer les paquets un par un :

 dpkg -i nfs-kernel-server.deb
 dpkg -i nfs-common.deb
 dpkg -i rpcbind.deb
 #dpkg -i nom_du_paquet.deb (permet de décompresser et installer le paquet nom_du_paquet.deb)

b. Création des répertoires de boot des RaspberryPi à exporter

Créez les répertoire de boot à exporter dans l’arborescence que vous souhaitez avec la commande:

 mkdir .../nfsRpi1
 mkdir .../nfsRpi2
 .
 .
 .
 mkdir .../nfsRpiN
 #mkdir nom_du_répertoire_à_créer

Utilisez ensuite la commande:

 ls -l  
 #ls -l (pour vérifier que les répertoires sont bien créés avec les droits associés)

c. Modification du fichier exports

Le fichier se trouve sous le répertoire/etc et contient la liste des répertoires exportés vers les machines définies avec les droits qui sont appliqués. Editez le fichier avec la commande :

 sudo nano /etc/exports
 #sudo nano /chemin_ou_répertoire/fichier_à_ouvrir_pour_modification  

Et ajouter les lignes correspondantes à votre besoin :

.../nfsRpi1        192.30.0.2(rw,sync,no_root_squash) 
.../nfsRpi2        192.30.0.3(rw,sync,no_root_squash) 
.
.
.
.../nfsRpiN        192.30.0.N(rw,sync,no_root_squash) 

Il faut aussi,si vous souhaitez restreindre les accès à votre répertoire partagé, configurer les fichiers /etc/hosts.allow et /etc/hosts.deny. voir le site NFS-HOWTO Setting Up an NFS Server

d. Démarrage des services NFS

Executez les commandes suivantes dans cet ordre :

 sudo /etc/init.d/rpcbind start
 sudo /etc/init.d/nfs-kernel-server start
 #sudo /chemin/ nom_du_programme start (pour le démarrer)

et vérifiez que NFS est démarré avec la commande :

 sudo rpcinfo –p
 #sudo rpcinfo –p (pour interroger le serveur RCP et ainsi vérifier que NFS est démarré)

Vous obtenez une liste de ce type :

   program vers proto   port  service
   100000    4   tcp    111  portmapper
   100000    3   tcp    111  portmapper
   100000    2   tcp    111  portmapper
   100000    4   udp    111  portmapper
   100000    3   udp    111  portmapper
   100000    2   udp    111  portmapper
   100024    1   udp  37252  status
   100024    1   tcp  35857  status
   100021    1   udp  36464  nlockmgr
   100021    3   udp  36464  nlockmgr
   100021    4   udp  36464  nlockmgr
   100021    1   tcp  51551  nlockmgr
   100021    3   tcp  51551  nlockmgr
   100021    4   tcp  51551  nlockmgr
   100003    2   tcp   2049  nfs
   100003    3   tcp   2049  nfs
   100003    4   tcp   2049  nfs
   100003    2   udp   2049  nfs
   100003    3   udp   2049  nfs
   100003    4   udp   2049  nfs
   100005    1   udp  60775  mountd
   100005    1   tcp  52319  mountd
   100005    2   udp  60775  mountd
   100005    2   tcp  52319  mountd
   100005    3   udp  60775  mountd
   100005    3   tcp  52319  mountd

Où vous devez voir le service nfs.

Sinon, vous pouvez affiner la commande avec :

 sudo rpcinfo –p | grep nfs
 #sudo rpcinfo –p (pour interroger le serveur RCP et ainsi vérifier que NFS est démarré)
 # grep permettra de faire un filtre sur les résultats

Vous obtenez une liste de ce type :

   program vers proto   port  service
   100003    2   tcp   2049  nfs
   100003    3   tcp   2049  nfs
   100003    4   tcp   2049  nfs
   100003    2   udp   2049  nfs
   100003    3   udp   2049  nfs
   100003    4   udp   2049  nfs

Voilà, les répertoires qui serviront aux différents RaspberryPi sont exportés et donc accessibles à distance. Il faut maintenant configurer les différents clients NFS pour y avoir accès.

Revenir au sommaire du RasberryPi