Partage de fichiers sous Linux avec NFS

NFS est un protocole qui permet de partager des fichiers ou des dossiers entre système Unix/Linux depuis 1980.

Il permet de monter dans votre système de fichier local des fichiers d'autres ordinateurs et interagir comme si ils étaient montés localement.

Donc vous le comprendrez, NFS permet d'accéder de manière local à des fichiers distants. NFS est une architecture standard utilisé par des clients et serveur Unix. Avec NFS il n'est pas nécessaire d'avoir exactement le même système d'exploitation. Et grâce à NFS, nous pouvons réaliser une solution de stockage centralisé.

Le package serveur NFS inclus trois grandes parties inclus dans les package portmap et nfs-utils.

  • portmap est un mappeur appelé par les autres machines.
  • NFS est le logiciel qui permet de transférer le fichier ou les commandes vers le fichier distant, vers le système de fichier distant, et inversement.
  • RPC.mountd et le service qui permet de monter et démonter le système de fichier.

Au niveau configuration nous retenons 3 fichier de configuration.

/etc/exports correspond au fichier de configuration principal du système NFS. Tous les fichiers et dossiers exportés sont définies dans ce fichier sur le serveur NFS.

/etc/fstab permet de monter les dossiers NFS et de les remonter de manière automatique à chaque boot.

etc/sysconfig/nfs et le fichier de configuration du système NFS pour contrôler les ports RPC et les autres services en écoute.

Installer les composants serveur

Fedora 28

Sous Fedora 28, il faut installer les composants suivants :

$ sudo dnf install nfs-utils
Raspbian 10

Sous Raspbian 10, il faut installer les composants suivants :

$ sudo apt install nfs-kernel-server

Éditer la configuration

On doit modifier le fichier /etc/idmapd.conf en admin pour intégrer le domaine dans la configuration :

Décommenter la ligne et indiquer le nom du domaine :

Domain = acegrp.lan

On vérifira également la configuration du mapping :

Nobody-User = nobody
Nobody-Group = nogroup

L'idée principale est de centraliser les dossiers à partager dans le dossier /export.

Par exemple, je veux partager le dossier /media.

## Création du dossier /export/media :

$ sudo mkdir -p /export/media

## Création d'un point de montage entre /media et /export/media. Ajout d'une entrée dans le fichier /etc/fstab :

/media    /export/media   none    bind  0  0

## Demande de montage :

$ sudo /export/media

## Modifier le fichier /etc/exports :

/export       192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async)
/export/media 192.168.1.0/24(rw,nohide,insecure,no_subtree_check,async)

## Mise à jour des exports :

$ sudo exportfs -ra
Fedora 28 Sous Fedora 28, deux services doivent être activé et démarrés : RPCbind et nfs :
$ sudo systemctl start rpcbind nfs-server
$ sudo systemctl enable rpcbind nfs-server
Raspbian 10

Sous Raspbian 10, il faut activer le service nfs-kernel-server :

$ sudo systemctl enable nfs-kernel-server

Puis démarrer le service nfs-kernel-server :

$ sudo systemctl start nfs-kernel-server

## Installer les pilotes

Debian 9

Sous Debian ou assimilé, il faut installé le pilote nfs-common :

$ sudo apt install nfs-common

## Création des dossiers qui recevront le point de montage :

$ sudo mkdir /media/disk_6
$ sudo mkdir /media/disk_23
$ sudo mkdir /media/disk_24
$ sudo mkdir /media/disk_25

## Vérifier que les partages accessibles

Sous Fedora 28 et Raspbian 10 il peut être utile de vérifier l’accessibilité du service. On peut utiliser la commande showmount :

$ showmount -e 192.168.100.1
 
Export list for 192.168.100.1:
/export/media/disk_25 192.168.100.0/24
/export/media/disk_24 192.168.100.0/24
/export/media/disk_23 192.168.100.0/24
/export/media/disk_6  192.168.100.0/24

## Ajout dans le fichier /etc/fstab des lignes avec l'option nfs :

192.168.100.1:/export/media/disk_6  /media/disk_6  nfs auto 0 0
192.168.100.1:/export/media/disk_24  /media/disk_24  nfs auto 0 0
192.168.100.1:/export/media/disk_25  /media/disk_25  nfs auto 0 0
192.168.100.1:/export/media/disk_23  /media/disk_23  nfs auto 0 0

## Montage des points :

$ sudo mount /media/disk_6
$ sudo mount /media/disk_23
$ sudo mount /media/disk_24
$ sudo mount /media/disk_25
rpcinfo -p 192.168.100.5

Résultat

   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  40258  status
    100024    1   tcp  41279  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  60788  nlockmgr
    100021    3   udp  60788  nlockmgr
    100021    4   udp  60788  nlockmgr
    100021    1   tcp  35701  nlockmgr
    100021    3   tcp  35701  nlockmgr
    100021    4   tcp  35701  nlockmgr

Sous Fedora 28 et Raspbian 10 il peut être utile de vérifier l’accessibilité du service. On peut utiliser la commande showmount :

$ showmount -e 192.168.100.5
 
Export list for 192.168.100.5:
/media/disk_8 192.168.0.0/255.255.0.0
/media/disk_7 192.168.0.0/255.255.0.0
/media/disk_6 192.168.0.0/255.255.0.0
/media/disk_5 192.168.0.0/255.255.0.0

On rajoute 4 exceptions exactement :

  • 2049 en udp et tcp
  • 111 en udp et tcp
sudo firewall-cmd --add-port=2049/udp
sudo firewall-cmd --add-port=2049/tcp
sudo firewall-cmd --add-port=111/udp
sudo firewall-cmd --add-port=111/tcp

ou encore plus rapidement

sudo firewall-cmd --add-service=nfs --permanent
sudo firewall-cmd --reload

Le message clnt_create: RPC: Unable to receive apparaît après l'utilisation de la commande showmount. Que faire ?

# showmount -e 192.168.100.6

clnt_create: RPC: Unable to receive

1. Vérifier la connectivité au serveur avec la commande ping

# ping 192.168.100.6

PING 192.168.100.6 (192.168.100.6) 56(84) bytes of data.
64 bytes from 192.168.100.6: icmp_seq=1 ttl=64 time=0.224 ms
64 bytes from 192.168.100.6: icmp_seq=2 ttl=64 time=0.209 ms
^C
--- 192.168.100.6 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1009ms
rtt min/avg/max/mdev = 0.209/0.216/0.224/0.016 ms

Si la commande ping ne répond pas, vérifier par une connexion ssh

# ssh cedric@192.168.100.6

cedric@192.168.100.6's password:
Last login: Sat May  5 07:03:20 2018 from 192.168.100.29
[cedric@srv06 ~]$

2. Lister les informations RPC avec la commande rpcinfo

# rpcinfo -p 192.168.100.6

192.168.100.6: RPC: Remote system error - Connection refused
Entrer votre commentaire. La syntaxe wiki est autorisée:
 __  __  ____    ____   _  __  _   __
 \ \/ / / __ \  / __/  | |/_/ | | / /
  \  / / /_/ / _\ \   _>  <   | |/ / 
  /_/  \____/ /___/  /_/|_|   |___/
 
  • Partager le signet (social bookmarking)
  • Partager "Partage de fichiers sous Linux avec NFS" sur Reddit
  • Partager "Partage de fichiers sous Linux avec NFS" sur blogmarks
  • Partager "Partage de fichiers sous Linux avec NFS" sur Google
  • Partager "Partage de fichiers sous Linux avec NFS" sur Facebook
  • Partager "Partage de fichiers sous Linux avec NFS" sur Twitter
  • informatique/cfp/nfs.txt
  • Dernière modification: 2019/12/27 17:49
  • par Cédric ABONNEL