| Prochaine révision | Révision précédente |
| linux:nfs [2018/10/24 09:02] – créée phsw | linux:nfs [2022/03/19 16:56] (Version actuelle) – [Installer un serveur NFS] wait for shares to be mounted phsw |
|---|
| ====== NFS ====== | ====== NFS ====== |
| |
| === Monter un système de fichier NFS === | * [[https://www.linuxtricks.fr/wiki/nfs-parametrer-les-partages-avec-le-fichier-exports]] |
| | * [[https://wiki.debian-fr.xyz/Partage_NFS]] |
| | * [[https://debian-handbook.info/browse/fr-FR/stable/sect.nfs-file-server.html]] |
| | * [[https://www.howtoforge.com/tutorial/install-nfs-server-and-client-on-debian/]] |
| | * [[https://help.ubuntu.com/community/NFSv4Howto]] |
| | |
| | |
| | ==== Installer un serveur NFS ==== |
| | |
| | Installer le paquet ''nfs-kernel-server''. |
| | |
| | Ajouter un utilisateur : |
| | <code bash> |
| | useradd -r -s /usr/sbin/nologin nfs-client |
| | </code> |
| | |
| | Récupérer son UID et modifier ''/etc/exports'' : |
| | <code bash> |
| | /data/synchro/local 192.168.1.0/24(rw,sync,no_subtree_check,all_squash,anonuid=998,anongid=998) |
| | </code> |
| | 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 ([[https://serverfault.com/a/417736|source]]). Cette option est aussi nécessaire pour que les Macs puissent se connecter. |
| | |
| | Pour appliquer les changements : |
| | <code bash> |
| | exportfs -a |
| | </code> |
| | |
| | |
| | === Connaître les versions NFS exposées par le serveur === |
| | |
| | [[https://wiki.debian.org/NFSServerSetup|Source]] |
| | |
| | <code bash> |
| | cat /proc/fs/nfsd/versions |
| | </code> |
| | |
| | |
| | === Connaître les partages exposés par un serveur === |
| | |
| | [[https://cweiske.de/tagebuch/nfs-showmount-not-registered.htm|Source]] |
| | |
| | <code bash> |
| | showmount -e <ip ou nom d'hôte du serveur> |
| | </code> |
| | |
| | |
| | === 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 [[linux:service#surcharger_un_service|surcharger le service]] ''nfs-kernel-server'' et y ajouter : |
| | <code> |
| | [Unit] |
| | RequiresMountsFor=/data/synchro/local |
| | </code> |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | ==== Monter un système de fichier NFS ==== |
| |
| Installer le paquet ''nfs-common''. | Installer le paquet ''nfs-common''. |
| <code bash> | <code bash> |
| sudo mkdir /nfs | mkdir /nfs |
| sudo /sbin/mount.nfs -o rw 172.21.200.200:/srv/nfs /nfs | sudo mount 192.168.1.40:/data/synchro/local /nfs |
| | </code> |
| | |
| | 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'' : |
| | <code> |
| | 192.168.1.40:/data/synchro/local /nfs nfs _netdev,rw,auto,defaults 0 0 |
| | </code> |
| | et exécuter : |
| | <code bash> |
| | sudo mount -a |
| </code> | </code> |
| |
| [[https://wiki.archlinux.org/index.php/Fstab#Automount_with_systemd|Source]] | [[https://wiki.archlinux.org/index.php/Fstab#Automount_with_systemd|Source]] |
| |
| Pour monter le système à la demande, et le demander après un temps d'inutilisation: rajouter dans ''/etc/fstab'' la ligne: | Pour monter le système à la demande, et le demonter après un temps d'inutilisation: rajouter dans ''/etc/fstab'' la ligne : |
| <file bash /etc/fstab> | <file bash /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 | 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 |
| * ''timeo=14'': relancer une requête RPC au bout de 14 ms | * ''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é | * ''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%%'' ([[https://www.cyberciti.biz/faq/apple-mac-osx-nfs-mount-command-tutorial/|source]]). |
| | |
| | Si les fichiers avec des chemins avec caractères spéciaux posent problème, ajouter dans ''/etc/nfs.conf'' sur le client ([[https://apple.stackexchange.com/questions/255063/nfs-share-from-linux-with-accented-and-non-ascii-characters-files-work-in-term|source]]) : |
| | <code> |
| | nfs.client.mount.options = nfc |
| | </code> |
| | |
| | Si la connexion ne veut pas s'établir, faire une de ces actions ([[https://forums.macrumors.com/threads/since-upgrading-to-big-sur-i-can-not-longer-mount-remote-nfs-drives.2274862/|source]]) : |
| | * forcer la version 4 de NFS en mettant dans ''/etc/nfs.conf'' sur le client ([[https://discussions.apple.com/thread/252631266|source]]) :<code> |
| | nfs.client.mount.options = vers=4 |
| | </code> |
| | * activer rpc-statd sur le serveur ([[https://askubuntu.com/questions/1344687/cant-mount-nfs-share-on-mac-os-big-sur-shared-from-ubuntu-21-04-rpc-statd-not|source]]) :<code bash> |
| | systemctl status rpc-statd.service |
| | systemctl reenable rpc-statd.service |
| | systemctl restart rpc-statd.service |
| | </code> |
| | |
| | |
| | == 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. |
| | |