Forcer le démontage du répertoire monté sur NFS [fermé]

163

J'ai un répertoire monté sur NFS sur une machine Linux qui s'est bloquée. J'ai essayé de forcer un démontage, mais cela ne semble pas fonctionner:

$ umount -f /mnt/data
$ umount2: Device or resource busy
$ umount: /mnt/data: device is busy

Si je tape " mount", il semble que le répertoire n'est plus monté, mais il se bloque si je fais " ls /mnt/data", et si j'essaye de supprimer le point de montage, j'obtiens:

$ rmdir /mnt/data
rmdir: /mnt/data: Device or resource busy

Puis-je faire autre chose que redémarrer la machine?

Lorin Hochstein
la source
3
Je suis d'accord, quiconque a voté pour clôturer cela est sérieusement confus. Ce problème me tourmente depuis des années, et la réponse ci-dessous, umount -l, pour Linux, est la première solution que j'ai trouvée qui a fonctionné.
Lizardx
1
ok, mais vous pouvez le trouver sur Super User. même si je ne vois pas pourquoi la question n'a pas été déplacée au lieu d'être close.
deeenes
For umount --forceessaiera plus fort de démonter et -vou -vvvmême révélera plus quel est le problème avec mount. Alors essayez:umount -vvv --force /badmount
gaoithe
5
@deeenes Parce que cette question a été posée en septembre 2008, et Super User n'a été lancé qu'en juillet 2009 ;-)
Martin Tournoij
@Carpetsmoker mais cela a été marqué comme hors sujet en 2013
indices

Réponses:

254

Vous pouvez essayer un démontage paresseux:

umount -l
Tessein
la source
3
Cela n'est pas mis en œuvre partout. Je ne l'ai pas sur FreeBSD, par exemple.
Daniel Papasian
28
@ Daniel: Bien sûr, mais il est une question Linux (étiqueté en tant que telle , même), et Linux ne l' avoir.
Jürgen A. Erhard le
5
J'ai essayé cette commande sur Ubuntu et cela n'a pas fonctionné.
Kieran Andrews
1
Cela a fonctionné pour moi (Slackware 14.0). J'avais un support CIFS, pas NFS, qui accrochait tout (y compris lsof). J'ai causé le problème en sortant d'un script de sauvegarde que j'écris. Le script monte et démonte le répertoire, mais quelque chose à propos de la rupture de rsyncmon montage a gâché. Je ne savais pas pour le démontage paresseux. C'est peut-être le périphérique NAS qui a causé tous les problèmes. Après avoir réussi le démontage, il s'est avéré que je devais redémarrer l'appareil avant de pouvoir le remonter.
paddy
10
@KieranAndrews et n'importe qui d'autre sur Ubuntu, essayez fusermount -uz /path/to/file. A travaillé un charme pour moi! :)
Matt Fletcher
78

Si le serveur NFS a disparu et que vous ne pouvez pas le remettre en ligne, une astuce que j'utilise est d'ajouter un alias à l'interface avec l'adresse IP du serveur NFS (dans cet exemple, 192.0.2.55).

Linux

La commande pour cela est quelque chose à peu près comme:

ifconfig eth0:fakenfs 192.0.2.55 netmask 255.255.255.255

Où 192.0.2.55 est l'adresse IP du serveur NFS qui a disparu. Vous devriez alors pouvoir envoyer une requête ping à l'adresse, et vous devriez également pouvoir démonter le système de fichiers (utilisez unmount -f). Vous devez ensuite détruire l'interface aliasée afin de ne plus acheminer le trafic vers l'ancien serveur NFS vers vous avec:

ifconfig eth0:fakenfs down

FreeBSD et systèmes d'exploitation similaires

La commande serait quelque chose comme:

ifconfig em0 alias 192.0.2.55 netmask 255.255.255.255

Et puis pour le supprimer:

ifconfig em0 delete 192.0.2.55

man ifconfig (8) pour en savoir plus!

Daniel Papasian
la source
5
Une combinaison de ifconfig eth0:fakenfs ...' and umount -f -l / my / mount / dir 'a résolu le problème pour moi.
pts
1
moi aussi, le problème de démontage m'empêche de suspendre mon ordinateur portable, donc cette solution est vraiment utile. J'ai aussi fait mon propre script pour automatiser.
albfan
Donc, pour supprimer un alias de Linux, serait-ce le cas ifconfig eth0:fakenfs delete? Ou est-ce que je cherche autre chose? Comme ifconfig eth0 delete 192.0.2.55?
Ehtesh Choudhury
2
@Shurane Sous Linux, supprimer un alias avec ifconfig eth0:fakenfs downdevrait faire l'affaire.
Sven
1
merci, travail génial! dans mon cas, le serveur nfs était de nouveau en ligne et ne pouvait toujours pas le démonter, cela a fait l'affaire,
bravo
20

Essayez de courir

lsof | grep /mnt/data

Cela devrait lister tout processus qui accède à / mnt / data qui l'empêcherait d'être démonté.

Ryan Ahearn
la source
1
Vraiment utile, mais ne m'a pas complètement sauvé. Mais utile.
James T Snell
2
Quand lsof se bloque pour toujours, essayez "lsof -b" (il y a un bogue lsof réalisé sur NFS, voir par exemple bugzilla.redhat.com/show_bug.cgi?id=962755 ).
dr0i
11

J'ai eu le même problème, et ni l'un umount /path -fni l' autre , ni l'un umount.nfs /path -fni l' autre ne fuser -km /pathfonctionne

enfin j'ai trouvé une solution simple>. <

sudo /etc/init.d/nfs-common restart, alors faisons le simple umount;-)

Daniel N.
la source
5
A travaillé pour moi avecumount -f -l ...
mivk
Sur le serveur ubuntu 14.04, je devais le faire sudo service nfs-kernel-server restart, mais votre réponse m'a définitivement mis sur la bonne voie, merci!
Murmel
4

Votre serveur NFS a disparu.

Idéalement, votre meilleur pari est si le serveur NFS revient.

Sinon, le "umount -f" aurait dû faire l'affaire. Cela ne fonctionne pas TOUJOURS, mais cela fonctionnera souvent.

Si vous savez quels processus utilisent le système de fichiers NFS, vous pouvez essayer de tuer ces processus et peut-être qu'un démontage fonctionnerait.

Enfin, je suppose que vous devez redémarrer.

De plus, NE montez PAS vos disques NFS en mode logiciel. Vous utilisez des montages rigides pour garantir qu'ils fonctionnent. C'est nécessaire si vous écrivez.


la source
Le montage souple ou dur semble être une question de cas d'utilisation. Oui, un montage logiciel entraînerait la rupture des fichiers en cours d'écriture si le serveur NFS tombe en panne pour une raison quelconque, et pourrait donc ne pas être des répertoires critiques du système appropriés, mais pour un lecteur avec des fichiers non critiques comme la musique et les films, cela fonctionnerait ça va.
zrajm
4

Impossible de trouver une réponse fonctionnelle ici; mais sous Linux, vous pouvez exécuter "umount.nfs4 / volume -f" et il le démonte définitivement.

Dave
la source
4
Umount.nfs4 n'est-il pas une sous-commande pour umount? En d'autres termes, umount -f /some/mountpointc'est la même chose que umount.nfs4 /some/mountpoint -f.
Ville du
1
Intéressant. À mes côtés (après la disparition du serveur NFS): umountappels umount.nfs, se bloque pour toujours (quelle que soit l'option). umount.nfs4 /mnt -fprend assez de temps, mais se termine. umount.nfs4 /mnt -lse termine immédiatement (peut-être parce qu'il n'attend pas les processus).
Tino