Aufheben der Bereitstellung des NFS-gemounteten Verzeichnisses erzwingen [geschlossen]

163

Ich habe ein NFS-gemountetes Verzeichnis auf einem Linux-Computer, der hängen geblieben ist. Ich habe versucht, ein Abhängen zu erzwingen, aber es scheint nicht zu funktionieren:

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

Wenn ich " mount" eingebe, scheint das Verzeichnis nicht mehr gemountet zu sein, aber es hängt, wenn ich " ls /mnt/data" mache , und wenn ich versuche, den Mountpoint zu entfernen, erhalte ich:

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

Kann ich etwas anderes tun, als den Computer neu zu starten?

Lorin Hochstein
quelle
3
Ich stimme zu, wer auch immer dafür gestimmt hat, dies ernsthaft verwirrt zu schließen. Dieses Problem hat mich jahrelang geplagt, und die Antwort umount -l für Linux ist die erste Lösung, die ich gefunden habe und die funktioniert hat.
Lizardx
1
ok, aber du könntest es auf Super User finden. obwohl ich nicht verstehe, warum die Frage nicht verschoben statt geschlossen wurde.
Deeenes
Denn umount --forcewird sich mehr bemühen, die Montage aufzuheben, und / -voder -vvvsogar mehr enthüllen, was das Problem mit der Montage ist. Also versuchen Sie:umount -vvv --force /badmount
Gaoithe
5
@deeenes Weil diese Frage im September 2008 gestellt wurde und Super User erst im Juli 2009 gestartet wurde
;-)
@ Carpetsmoker, aber es wurde als Off-Topic im Jahr 2013 markiert
Hinweise

Antworten:

254

Sie könnten versuchen, faul abzusteigen:

umount -l
Tessein
quelle
3
Dies ist nicht überall implementiert. Ich habe es zum Beispiel nicht auf FreeBSD.
Daniel Papasian
28
@ Daniel: Sicher, aber es ist eine Linux-Frage (sogar als solche gekennzeichnet), und Linux hat sie.
Jürgen A. Erhard
5
Ich habe diesen Befehl unter Ubuntu ausprobiert und er hat nicht funktioniert.
Kieran Andrews
1
Das hat bei mir funktioniert (Slackware 14.0). Ich hatte ein CIFS-Mount, kein NFS, das alles aufhängte (einschließlich lsof). Ich habe das Problem verursacht, indem ich aus einem Sicherungsskript ausgebrochen bin, das ich schreibe. Das Skript mounten und unmounten das Verzeichnis, aber etwas über das Ausbrechen hat rsyncmein Mount durcheinander gebracht. Ich wusste nichts über das faule Absteigen. Möglicherweise hat das NAS-Gerät alle Probleme verursacht. Nach dem erfolgreichen Abmelden stellte sich heraus, dass ich das Gerät neu starten musste, bevor ich es erneut bereitstellen konnte.
Reis
10
@KieranAndrews und alle anderen auf Ubuntu, versuchen Sie es fusermount -uz /path/to/file. Hat einen Zauber für mich gewirkt! :)
Matt Fletcher
78

Wenn der NFS-Server verschwunden ist und Sie ihn nicht wieder online schalten können, besteht ein Trick darin, der Schnittstelle einen Alias ​​mit der IP des NFS-Servers hinzuzufügen (in diesem Beispiel 192.0.2.55).

Linux

Der Befehl dafür ist ungefähr so:

ifconfig eth0:fakenfs 192.0.2.55 netmask 255.255.255.255

Wobei 192.0.2.55 die IP des NFS-Servers ist, der verschwunden ist. Sie sollten dann in der Lage sein, die Adresse zu pingen, und Sie sollten auch in der Lage sein, die Bereitstellung des Dateisystems aufzuheben (verwenden Sie unmount -f). Sie sollten dann die Alias-Schnittstelle zerstören, damit Sie den Datenverkehr nicht mehr an sich selbst weiterleiten:

ifconfig eth0:fakenfs down

FreeBSD und ähnliche Betriebssysteme

Der Befehl wäre ungefähr so:

ifconfig em0 alias 192.0.2.55 netmask 255.255.255.255

Und dann, um es zu entfernen:

ifconfig em0 delete 192.0.2.55

Mann ifconfig (8) für mehr!

Daniel Papasian
quelle
5
Eine Kombination von ifconfig eth0:fakenfs ...' and umount -f -l / my / mount / dir 'löste das Problem für mich.
Punkte
1
Auch ich, das Unmount-Problem hindert mich daran, meinen Laptop auszusetzen, daher ist diese Lösung wirklich nützlich. Ich habe mein eigenes Skript erstellt, um es auch zu automatisieren.
Albfan
Wenn Sie also einen Alias ​​von Linux entfernen möchten, wäre dies der Fall ifconfig eth0:fakenfs delete? Oder suche ich etwas anderes? Wie ifconfig eth0 delete 192.0.2.55?
Ehtesh Choudhury
2
@Shurane Unter Linux sollte das Entfernen eines Alias ​​mit ausreichen ifconfig eth0:fakenfs down.
Sven
1
danke, geniale Arbeit! in meinem fall war der nfs server wieder online und konnte ihn immer noch nicht umounten, das hat den trick gemacht,
Prost
20

Versuche zu rennen

lsof | grep /mnt/data

Das sollte jeden Prozess auflisten, der auf / mnt / data zugreift, der verhindern würde, dass die Bereitstellung aufgehoben wird.

Ryan Ahearn
quelle
1
Auf jeden Fall hilfreich, hat mich aber nicht vollständig gerettet. Aber hilfreich.
James T Snell
2
Wenn lsof für immer hängt, versuchen Sie "lsof -b" (es gibt einen lsof-Fehler, der in NFS realisiert wurde, siehe z . B. bugzilla.redhat.com/show_bug.cgi?id=962755 ).
dr0i
11

Ich hatte das gleiche Problem, und weder umount /path -f, weder umount.nfs /path -f, weder fuser -km /path , Werke

Endlich habe ich eine einfache Lösung gefunden>. <

sudo /etc/init.d/nfs-common restart, dann lass uns das einfach machen umount;-)

Daniel N.
quelle
5
Arbeitete für mich mitumount -f -l ...
mivk
Auf Ubuntu Server 14.04 musste ich sudo service nfs-kernel-server restart, aber Ihre Antwort hat mich definitiv auf den richtigen Weg gebracht, danke!
Murmel
4

Ihr NFS-Server ist verschwunden.

Idealerweise ist es am besten, wenn der NFS-Server zurückkommt.

Wenn nicht, hätte das "umount -f" den Trick machen sollen. Es funktioniert nicht IMMER, wird es aber oft.

Wenn Sie zufällig wissen, welche Prozesse das NFS-Dateisystem verwenden, können Sie versuchen, diese Prozesse zu beenden, und dann funktioniert möglicherweise ein Unmount.

Schließlich würde ich vermuten, dass Sie neu starten müssen.

Montieren Sie Ihre NFS-Laufwerke auch NICHT soft. Sie verwenden Hard-Mounts, um sicherzustellen, dass sie funktionieren. Das ist notwendig, wenn Sie schreiben.


quelle
Die weiche oder harte Montage scheint eine Frage der Anwendungsfälle zu sein. Ja, ein Soft Mount würde dazu führen, dass Dateien, die gerade geschrieben werden, beschädigt werden, wenn der NFS-Server aus irgendeinem Grund ausfällt. Daher sind sie möglicherweise keine geeigneten systemkritischen Verzeichnisse, aber für ein Laufwerk mit nicht kritischen Dateien wie Musik und Filmen würde dies funktionieren Alles gut.
Zrajm
4

Konnte hier keine funktionierende Antwort finden; Aber unter Linux können Sie "umount.nfs4 / volume -f" ausführen und die Bereitstellung wird definitiv aufgehoben.

Dave
quelle
4
Ist umount.nfs4 nicht ein Unterbefehl für umount? Mit anderen Worten, umount -f /some/mountpointist das gleiche wie umount.nfs4 /some/mountpoint -f.
Ville
1
Interessant. An meiner Seite (nachdem NFS-Server verschwunden ist): umountAnrufe umount.nfs, bleibt für immer hängen (unabhängig von der Option). umount.nfs4 /mnt -fdauert ziemlich lange, ist aber abgeschlossen. umount.nfs4 /mnt -lwird sofort abgeschlossen (möglicherweise, weil nicht auf Prozesse gewartet wird).
Tino