web-dev-qa-db-fra.com

mount.nfs: erreur de gestion de fichier périmé - impossible de démonter

Chaque fois que j'essaie de monter un partage NFS, j'obtiens ceci:

>> mount -t nfs gitlab-replica-storage.blah.com:/export/registry-gitlab-prod-data-vol /mnt/test
mount.nfs: Stale file handle

Le problème est que je ne peux pas démonter, comme il est dit:

>> umount -f -l /mnt/test
umount: /mnt/test: not mounted

J'ai essayé de vérifier si un processus utilisait le point de montage, mais ce n'est pas le cas.

Une autre alternative pour résoudre ce problème?

À titre de clarification:

  • Je peux le monter dans une autre machine.
  • Je ne peux pas le monter dans un autre point de montage sur la machine affectée.
5
djuarez

L'erreur, ESTALE, a été initialement introduite pour gérer la situation où un descripteur de fichier, que NFS utilise pour identifier de manière unique un fichier sur le serveur, ne fait plus référence à un fichier valide sur le serveur. Cela peut se produire lorsque le fichier est supprimé sur le serveur, soit par une application sur le serveur, un autre client accédant au serveur, ou parfois même par un autre système de fichiers monté du même client. Le serveur NFS renvoie également cette erreur lorsque le fichier réside sur un système de fichiers qui n'est plus exporté. En outre, certains serveurs NFS modifient même le descripteur de fichier lorsqu'un fichier est renommé, bien que cette pratique soit déconseillée.

Cette erreur se produit même si un fichier ou un répertoire du même nom est recréé sur le serveur sans que le client en soit conscient. Le descripteur de fichier fait référence à une instance spécifique d'un fichier et la suppression du fichier, puis sa recréation crée une nouvelle instance du fichier.

L'erreur, ESTALE, apparaît généralement lorsque les informations de répertoire mises en cache sont utilisées pour convertir un chemin d'accès en une paire dentry/inode. Les informations sont obsolètes ou périmées lorsqu'une opération ultérieure est envoyée au serveur NFS. Cela peut facilement se produire dans les appels système tels que stat (2) lorsque le chemin d'accès est converti en une paire dentry/inode à l'aide des informations mises en cache, mais un appel GETATTR ultérieur au serveur découvre que le descripteur de fichier n'est plus valide.

Cette erreur peut également se produire lorsqu'une modification est effectuée sur le serveur entre la recherche de différents composants du nom de chemin à rechercher ou entre une recherche réussie et une opération ultérieure.

Lien original sur ESTALE: ESTALE LWN .

Je vous suggère de vérifier les fichiers et les répertoires sur le serveur NFS ou de dire à l'administrateur du serveur NFS de le faire.

Peut-être que certaines anciennes entrées de cache de pagecache, d'inode et de dentry existent sur le serveur NFS. Veuillez le nettoyer:

# To free pagecache
echo 1 > /proc/sys/vm/drop_caches

# To free dentries and inodes
echo 2 > /proc/sys/vm/drop_caches

# To free pagecache, dentries and inodes
echo 3 > /proc/sys/vm/drop_caches
5
Yurij Goncharuk

UNE mount -t nfs échoue avec Stale file handle si le serveur a des entrées d'export périmées pour ce client.

Exemple de scénario: cela peut se produire lorsque le serveur redémarre sans que le client démonte d'abord les volumes nfs. Lorsque le serveur est de retour et que le client démonte puis essaie de monter le volume nfs, le serveur peut répondre avec:

mount.nfs: Stale file handle

Vous pouvez vérifier cela en consultant /proc/fs/nfs/exports ou /proc/fs/nfsd/exports. S'il y a une entrée pour le client, elle peut être périmée.

Vous pouvez résoudre ce problème en annulant explicitement la réexportation et en réexportant les exportations pertinentes sur le serveur. Par exemple, pour ce faire avec toutes les exportations:

# exportfs -ua
# cat /proc/fs/nfs/exports
# exportfs -a

Après cela, le client mount -t nfs ... devrait réussir.

Notez que le montage produisant ESTALE est assez différent de certains autres appels système (comme open/readdir/unlink/chdir ...) renvoyant ESTALE. Il s'agit d'une exportation périmée par rapport à un descripteur de fichier périmé. Un descripteur de fichier périmé se produit facilement avec NFS (par exemple, un client possède un descripteur de fichier mais le fichier a été supprimé sur le serveur).

9
maxschlepzig

Recherchez l'entrée de montage périmé sur le serveur NFS:

showmount -a | grep ip_address_of_nfs_client

Si vous voyez des lignes liées à l'adresse IP du client NFS et au partage que vous essayez de monter, supprimez les entrées périmées du rmtab:

vi /var/lib/nfs/rmtab

Rechargez le rpc.mountd pour qu'il voit le nouveau rmtab:

killall rpc.mountd ; /usr/sbin/rpc.mountd
1
JFP

Vérifiez si l'exportation est réellement montée:

# cat /proc/mounts | grep nfs

Une erreur de gestion de fichier obsolète signifie que le serveur NFS contient une ancienne version des fichiers dans son chemin d'exportation. Un redémarrage du serveur NFS peut parfois aider. Mais avec les anciens systèmes d'exploitation (RHEL/CentOS 6.9), il est parfois préférable de revenir à NFS3 au lieu de NFS4. D'après mon expérience, les anciens clients NFS4 ont parfois des difficultés avec les nouveaux serveurs NFS4.1. Cela est particulièrement vrai pour le verrouillage de fichiers.

0
monkeywrench