linux:nfs

NFS

Installer le paquet nfs-kernel-server.

Ajouter un utilisateur :

useradd -r -s /usr/sbin/nologin nfs-client

Récupérer son UID et modifier /etc/exports :

/data/synchro/local      192.168.1.0/24(rw,sync,no_subtree_check,all_squash,anonuid=998,anongid=998)

Tous les utilisateurs accédant à ce partage seront considérés comme l'utilisateur à l'UID 998 (cet utilisateur sur le serveur doit avoir les droits en écriture sur le dossier partagé).

Seuls les clients avec l'IP 192.168.1.0/24 pourront monter le partage. Il n'est normalement pas possible de se connecter au serveur NFS avec un port supérieur à 1024. Dans le cas d'une machine virtuelle NATée, le serveur NFS verra le port translaté, avec une valeur supérieure à 1024, il est possible de permettre cet accès avec l'option insecure dans le partage (source). Cette option est aussi nécessaire pour que les Macs puissent se connecter.

Pour appliquer les changements :

exportfs -a

Connaître les versions NFS exposées par le serveur

Source

cat /proc/fs/nfsd/versions

Connaître les partages exposés par un serveur

Source

showmount -e <ip ou nom d'hôte du serveur>

S'assurer que les dossiers partagés sont présents avant de lancer le service

Pour que le service puisse démarrer, il doit pouvoir accéder aux dossiers qui sont partagés par NFS. Si ces dossiers sont sur partitions qui n'est pas la partition système, il faut surcharger le service nfs-kernel-server et y ajouter :

[Unit]
RequiresMountsFor=/data/synchro/local

Installer le paquet nfs-common.

mkdir /nfs
sudo mount 192.168.1.40:/data/synchro/local  /nfs

Pour débugguer les problèmes de montage, il est possible d'ajouter l'option --verbose à mount, ou bien regarder les logs sur le serveurs dans /var/log/daemon.log.

On peut ajouter dans /etc/fstab :

192.168.1.40:/data/synchro/local /nfs    nfs _netdev,rw,auto,defaults 0 0

et exécuter :

sudo mount -a

Monter automatiquement le système de fichier NFS

Attention, autofs semble déprécié depuis Debian 7 Wheezy.

Source

Pour monter le système à la demande, et le demonter après un temps d'inutilisation: rajouter dans /etc/fstab la ligne :

/etc/fstab
172.21.200.200:/srv/nfs /nfs    nfs noauto,x-systemd.automount,x-systemd.device-timeout=10,timeo=14,x-systemd.idle-timeout=1min 0 0
  • x-systemd.device-timeout=10: abandonner le montage au bout de 10 secondes
  • timeo=14: relancer une requête RPC au bout de 14 ms
  • x-systemd.idle-timeout=1min: démonter au bout de 1 min d'inactivité

mount -a ne fonctionne alors pas, il faut redémarrer la machine pour que ce soit pris en compte.

Sur Mac

Aller dans le Finder > Aller > Se connecter au serveur, puis saisir: nfs://172.21.200.200:/srv/nfs (source).

Si les fichiers avec des chemins avec caractères spéciaux posent problème, ajouter dans /etc/nfs.conf sur le client (source) :

nfs.client.mount.options = nfc

Si la connexion ne veut pas s'établir, faire une de ces actions (source) :

  • forcer la version 4 de NFS en mettant dans /etc/nfs.conf sur le client (source) :
    nfs.client.mount.options = vers=4
  • activer rpc-statd sur le serveur (source) :
    systemctl status rpc-statd.service
    systemctl reenable rpc-statd.service
    systemctl restart rpc-statd.service
rsync

Pour faire depuis MacOS du rsync avec un montage NFS, il faut ajouter l'option suivante pour gérer les chemins de fichiers avec des accents :

  • --iconv=utf-8-mac,utf-8 pour un transfert du Mac vers le montage NFS ;
  • --iconv=utf-8-mac,utf-8-mac pour un transfert du montage NFS vers le Mac.
  • linux/nfs.txt
  • Dernière modification : 2022/03/19 16:56
  • de phsw