Odmontuj mount nfs w miejscu, gdzie zniknął serwer nfs

32

Serwer A był kiedyś serwerem NFS. Serwer B dokonywał eksportu tego. Wszystko było w porządku. Potem A zmarł. Właśnie się wyłączyłem. Odszedł. Zniknął

Jednak ten folder jest nadal zamontowany na B. Oczywiście nie mogę się cdw nim znaleźć ani w żadnym innym. Jednak umount /mnt/myfolderpo prostu zawiesza się i nie odmontowuje. Czy można go umontować bez ponownego uruchomienia B?

Zarówno klient, jak i serwer to maszyny z systemem Linux.

Rory
źródło

Odpowiedzi:

45

Zakładając Linux:

umount -f -l /mnt/myfolder

Rozwiązuje problem:

-f Wymuś odmontowanie (w przypadku nieosiągalnego systemu NFS). (Wymaga jądra 2.1.116 lub nowszego.)

-l Leniwy odmontować. Odłącz teraz system plików od hierarchii systemu plików i wyczyść wszystkie odniesienia do systemu plików, gdy tylko nie będzie już zajęty. (Wymaga jądra 2.4.11 lub nowszego.)

-f istnieje również w systemach Solaris i AIX.

Douglas Leeder
źródło
1
Miałem ten sam problem, wygooglowałem i przyjechałem tutaj. Tak - leniwa flaga naprawdę mi tutaj pomogła ... - jeśli sama tego nie robiła ...
wawawawa
tak, musi mieć opcję „-l” „-f” SAMY CZAS.
liuyang1
2
Czasami też odniosłem większy sukces, określając adres zdalny zamiast lokalnej ścieżki dla umount, np. umount -f -l nfsserver:/export/thefolder.
oliver
18

Opracowując wskazówki podane przez Davida Pashleya ,

chyba że „umount -l” rozwiąże twój problem, możesz skonfigurować fałszywy serwer z tym samym adresem co ten, który zniknął - ale tak naprawdę nie musisz konfigurować nowego serwera ani nic takiego. Najłatwiejszym wyjściem z sytuacji blokowania / zawieszania umount jest skonfigurowanie lokalnego interfejsu IP aliasu w następujący sposób:

ifconfig eth0:nfstmp 11.22.33.44 netmask 255.255.255.255
umount -l /mnt/deadnfsmount    # -l or -f or whichever that gets the job done
ifconfig eth0:nfstmp down

(oczywiście 11.22.33.44 jest (byłym) adresem IP (obecnie nieżywego) serwera NFS)

conny
źródło
To działało dla mnie, tyle że musiałem uruchomić lokalny serwer NFS.
gak
6

Rozsądnie byłoby dodać intropcję do wszystkich /etc/fstabwpisów, które mogą się zawiesić lub zawiesić. Jeśli nie użyjesz opcji softlub intr, wtedy gdy serwer hostujący pliki NFS ulegnie awarii, serwer, na którym pliki są zamontowane (klient) może zawiesić się podczas uruchamiania.

Według man 5 nfs:

miękki / twardy
Określa zachowanie odzyskiwania klienta NFS po przekroczeniu limitu czasu żądania NFS. Jeśli żadna opcja nie zostanie określona (lub jeśli podano opcję twardą), żądania NFS są ponawiane bez końca. Jeśli wybrana jest opcja miękka, klient NFS nie powiedzie się żądanie NFS po wysłaniu retransmisji, powodując, że klient NFS zwróci błąd do aplikacji wywołującej.

... a potem mówi się, że intrjest lepszy niż soft, ale ma podobny efekt, że zapobiega zawieszeniu.

sg
źródło
3
Zauważ, że w nowszych wersjach nfs, intr jest przestarzałe lub nie działa - w takim przypadku należy użyć soft.
Paul
3

umount -f /mnt/myfolderpowinien rozwiązać ten problem. Zobacz stronę umount.

Pauska
źródło
2
Nie robi to do końca z NFS i martwym serwerem. Potrzebujesz też leniwej flagi (lub sztuczki z dodaniem IfAlias). Polecenie lsof i utrwalacz zawiesza się i umount -f mówi „urządzenie zajęte”.
wawawawa
1

Tak na marginesie, użycie automount poradzi sobie z odmontowaniem udziałów NFS, gdy staną się one niedostępne, co pozwala uniknąć utknięcia w takiej sytuacji w przyszłości.

Coops
źródło
2
Niekoniecznie. instalacje automount mogą również zawiesić się w tym stanie, jeśli spróbujesz uzyskać dostęp do katalogu w jakikolwiek sposób, proces się zawiesi.
Kamil Kisiel,
Tak, automounter powoduje tyle problemów, ile rozwiązuje.
pjc50,
1

Nigdy nie udało mi się dostać umount -fdo pracy. Przydatną sztuczką jest skonfigurowanie innego serwera montującego ten sam eksport, nadając mu ten sam adres IP, co stary serwer. Twój klient NFS powinien myśleć, że wszystko wróciło do normy, a procesy zostaną odblokowane. Następnie możesz normalnie odmontować punkt montowania i usunąć adres IP z tymczasowego serwera NFS.

David Pashley
źródło
2
-l (leniwy) jest kluczem, jak wspomniano powyżej
Matt Simmons,
1

W przypadku systemu Solaris ponowne uruchomienie klienta NFS rozwiąże problem „spirali śmierci”. Komenda dla Solaris 10 brzmi: „svcadm restart network / nfs / client” Ostatnio nie próbowałem tego na Linux-ie (ponieważ wszyscy montują z flagą „intr”, więc rzadko mają ten problem), ale prawdopodobnie to również naprawi problem.

John Grant
źródło
0

Właśnie zauważyłem, że wymuszanie odmontowania w jądrze 3.2.0 zawiesza się przy montowaniu NFSv4. Odmontowane NFSv3 działają poprawnie.

$ mount [...] -o nfsvers=3
Kuu Tirronen
źródło
0

po prostu kontynuacja specyficzna dla OS X, ponieważ polecenia montowania są w większości * nix agnostyczne: flaga -l (leniwa) nie istnieje w OS X, jednak flaga -f (force) ma i okazała się wystarczająca . Ponadto generowane przez system punkty montowania znajdują się w / Volumes (/ Volumes / myserversexport)

niels
źródło
0

Spotkałem ten sam problem. Ponieważ serwer NFS został usunięty, nie mogę odmontować systemu plików NFS od klienta. Wypróbowałem następującą sztuczkę, sprawdź, czy może być pomocna. Ponieważ oryginalny serwer NFS zniknął, tworzę nowy serwer z tym samym adresem IP i eksportami. Następnie próbuję umount -f / mnt / nfs_part. W końcu mogłem umountować nfs teraz.

Lan
źródło