Pracuję na moim serwerze, z którego eksportuję jeden katalog za pomocą NFS. Oczywiście przez mniej więcej tydzień po ponownym uruchomieniu serwera wielokrotnie zapomniałem o umount
systemie plików eksportu na mojej stacji roboczej (który jest montowany /etc/fstab
po uruchomieniu). W międzyczasie byłem w stanie umount
po fakcie i ponownym zamontowaniu ( nie używam autofs
):
umount -fl /data0
mount /data0
Ale to już nie działa.
Nie mogę zamontować wyeksportowanego katalogu z serwera w innym katalogu (mount zawiesza się), ale nie mogę zamontować wyeksportowanego katalogu na maszynie wirtualnej działającej na mojej stacji roboczej.
Próbowałem usunąć ( rmmod
) moduł nfs
i nfsv3
(co nie działałoby Resource temporarily unavailable
:). lsof
zawiesza się. mount
nie pokazuje niczego zamontowanego przez nfs
. Wszystko to prawdopodobnie wynika z wielokrotnego użycia „umount -l”, ale pierwsze dwa razy zadziałało bez problemu.
W międzyczasie zrestartowałem serwer, po tym jak nie byłem w stanie zamontować bez tego różnicy. Ja także użyłem service nfs-kernel-server restart
. Podejrzewam, że wszystko wróci do normy po ponownym uruchomieniu stacji roboczej klienta.
Czy istnieje sposób na odzyskanie tego i ponowne zainicjowanie strony klienta NFS na mojej stacji roboczej bez ponownego uruchamiania?
Jeśli nie mogę tego naprawić bez ponownego uruchomienia, czy nie powtórzy się to, jeśli zacznę używać autofs
?
lsof -b
zawiesza się z ostatnimi wierszami:
lsof: avoiding readlink(/run/user/1001/gvfs): -b was specified.
lsof: avoiding stat(/run/user/1001/gvfs): -b was specified.
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1001/gvfs
Output information may be incomplete.
w wierszach poprzedzających to nie ma /data0
.
Wpis w /etc/fstab
:
192.168.0.2:/data0 /data0 nfs defaults,auto,nolock,user 0 2
lsof -b
powiesić?upstart
i wszystkich. Prawdopodobnie chcesz zrestartować wszystkie usługi wnfs-common
pakiecie, wygląda na to, że jest ich kilka. Kolejność prawdopodobnie również ma znaczenie, więc spróbuj zatrzymać, a następnie zacząć w kolejności zależności. Prawdopodobnie chcesz to zrobić równieżrpcbind
jako ostatni przystanek / pierwszy start. Zrobiłem to już wcześniej na Debianie, ale ma tylko jedną fajnąnfs-common
usługę.Odpowiedzi:
Jak sugeruje @PaperMonkey w komentarzach, możesz być przykręcony, ponieważ użyłeś domyślnych opcji montowania, które obejmują próbę na zawsze.
intr
kiedyś było sposobem na ułatwienie przerywania rzeczy, które utknęły na I / O na zepsutym montażu NFS, ale teraz nie ma możliwości.SIGKILL
wciąż może zakłócać procesy zatrzymane na NFS, przynajmniej taknfs(5)
twierdzi. Zobacz tę stronę podręcznika, by zobaczyć opcje montowania.Użyj
soft
zamiast domyślnego,hard
jeśli chcesz, aby NFS nie próbował ponownie na zawsze.Polecam również korzystanie z automountera. Twórz gdzieś dowiązania symboliczne do / net / host / foo / bar, jeśli chcesz.
Często łatwiej jest po prostu zrestartować komputer, ale myślę, że teoretycznie powinieneś być w stanie
kill -9
(tj.kill -KILL
) Dowolne procesy, które utknęły w systemie plików NFS. NASTĘPNIE umount -f może działać. Tylko uważaj, aby nie dopuścić do tego, aby uzupełnianie tabulatorami blokowało więcej procesów na montażu NFS.źródło
D
(uśpienie dysku) w ps / top prawdopodobnie utknął na NFS.Poniżej znajduje się lista poleceń, które należy uruchomić, aby rozwiązać ten problem w dystrybucji opartej na RPM.
Po tym:
źródło
Używanie
autofs
pomoże uniknąć tego problemu w przyszłości. Największą korzyściąautofs
jest to, że nie próbuje on zamontować katalogu, dopóki nie spróbujesz go użyć, co oznacza, że unikniesz zepsutych punktów montowania i że nie będzie próbował się montować w nieskończoność, możesz ustawić limit czasu dla odmontowania (co zwykle jest krótki). Nie jestem pewien, czy automount ponawia próbę w ogóle w tym okresie przedterminowym, ale tak czy inaczej normalnie ustawiam limit czasu automount na zaledwie kilka sekund.Aby rozwiązać problem bez ponownego uruchamiania, możesz być w stanie
umount -a
poradzić sobie z (odmontuj wszystko wymienione w / etc / fstab)mount -a
(zamontuj wszystko w / etc / fstab), ale ja, chyba że katalog, który utraciłeś zawiera katalog domowy, który „ najlepiej oszczędzać pracę w innym miejscu i po prostu restartować.źródło
Użyj wyników polecenia lsof, aby znaleźć procesy na kliencie przechowujące odwołania do przestarzałego systemu plików i zabić te procesy.
umount -f / data0
upewnij się, że możesz pingować serwer, a następnie ponownie zainstalować dysk. Uruchom ponownie żądane procesy.
Klastry
Uwaga: jeśli uruchomisz konfigurację serwera klastra, za każdym razem, gdy serwer będzie musiał przełączyć się w tryb failover, otrzymasz przestarzały uchwyt pliku NFS. Aby tego uniknąć, należy wyeksportować systemy plików za pomocą opcji fsid. Numer fsid powinien być taki sam dla każdego odpowiedniego systemu plików na dwóch serwerach. Zapewnienie replikacji plików zależy od Ciebie. Zobacz fragment ze strony podręcznika poniżej:
fsid = num | root | uuid NFS musi być w stanie zidentyfikować każdy eksportowany system plików. Zwykle użyje UUID dla systemu plików (jeśli system plików ma coś takiego) lub numeru urządzenia urządzenia przechowującego system plików (jeśli system plików jest przechowywany na urządzeniu). Ponieważ nie wszystkie systemy plików są przechowywane na urządzeniach i nie wszystkie systemy plików mają identyfikatory UUID, czasami konieczne jest jawne poinformowanie NFS, jak zidentyfikować system plików. Odbywa się to za pomocą opcji fsid =.
W przypadku NFSv4 istnieje wyróżniony system plików, który jest katalogiem głównym wszystkich eksportowanych systemów plików. Jest to określone za pomocą fsid = root lub fsid = 0, które oznaczają dokładnie to samo.
Inne systemy plików można zidentyfikować za pomocą małej liczby całkowitej lub identyfikatora UUID, który powinien zawierać 32 cyfry szesnastkowe i dowolną interpunkcję.
Jądra Linuksa w wersji 2.6.20 i wcześniejszych nie rozumieją ustawienia UUID, więc należy użyć małej liczby całkowitej, jeśli dla takich jąder należy ustawić opcję fsid. Obsługiwane jest ustawienie zarówno małej liczby, jak i identyfikatora UUID, dzięki czemu można skonfigurować tę samą konfigurację do pracy zarówno na starych, jak i nowych jądrach.
źródło