Zapobieganie zawieszaniu się systemu klienta przez zerwane połączenie NFS


21

Mamy udział NFS 4, dzielący wolumen między wieloma serwerami (serwer NFS i klienci wszyscy Debian 8). Mieliśmy ostatnio problemy z awariami sieci powodującymi zamrożenie systemów klienckich.

Nasze opcje NFS były minimalne, tylko rw(a więc domyślne hard, fgitp).

Teraz eksperymentuję z tymi opcjami, ale nie otrzymuję oczekiwanego zachowania: rw,soft,bg,retrans=6,timeo=150

(Zwiększyłem retrans, aby zrównoważyć część ryzyka miękkiego)

Procedura, którą testuję, to:

  • Maszyna rozruchowa
  • cd do /mnt/mountpoint
  • Sprawdź poprawność połączenia NFS
  • cd /
  • zabić sieć ifdown eth0
  • cd do /mnt/mountpoint
  • ls

W tym momencie linia poleceń zawiesza się i nie mogę jej przerwać. Po pewnym czasie komunikat „nfs: server [nazwa serwera] nie odpowiada, upłynął limit czasu”, który wydaje się powtarzać raz na minutę (w nieokreślony sposób).

Co chciałbym / mam się spodziewać, aby operacja zakończyła się niepowodzeniem i zwróci kontrolę.

Czy ktoś mógłby mi powiedzieć, co robię źle z tymi ustawieniami?

(PS: Próbowałem również montować przy użyciu autofs, ale widziałem podobne zachowanie)

Dziękuję Ci


3
W softżadnym wypadku nie polecałbym . Pozwala to na odrzucenie danych w przypadku błędu . Zamiast tego sugerowałbym hard,intr.
roaima,

2
@roaima - Dzięki. Ta opinia wydaje się być bardzo rozpowszechniona w sieci :) Problem polega na tym, że obecna sytuacja hardjest dla nas równie niekorzystna (systemy giną i pozostają martwe do momentu ponownego uruchomienia). intrwedług man nie jest obsługiwany w NFS4.
UpTheCreek

2
(Poprawka, wygląda na intrto, że jest obsługiwana przez NFS4, ale nie przez jądra> 2.6.25)
UpTheCreek

Myślę, że różni się od „standardowych” odpowiedzi tym, że zmieniasz bieżący katalog roboczy na punkt montowania. Czy otrzymujesz takie samo zachowanie bez cd, ale zamiast tego ls /mnt/mountpoint? Możliwe, że po lsawarii powłoka próbuje wykonać operacje systemu plików zależne od PWD. (Co gorsza, jeśli byłbyś na tyle głupi, by włożyć .swoje $PATH)
Toby Speight

Odpowiedzi:


4

intrpowinny pozwolić ci odzyskać kontrolę po trafieniu ^C, ale zwykle nie od razu.

   intr           If an NFS file operation has a major timeout and it is hard mounted, then allow signals to interupt the
                  file  operation  and cause it to return EINTR to the calling program.  The default is to not allow file
                  operations to be interrupted.

Jak mówisz, problemem są tutaj oczekiwania. Problemy z siecią mogą być tymczasowe, ale niepowodzenie operacji jest trwałe. Dlatego większość operacji domyślnie blokuje się, dopóki operacja się nie zakończy.

To standardowa odpowiedź, ale patrząc na bieżącą stronę podręcznika widzę to:

                  The  intr / nointr mount option is deprecated after ker-
                  nel 2.6.25.  Only SIGKILL can interrupt  a  pending  NFS
                  operation on these kernels, and if specified, this mount
                  option is ignored  to  provide  backwards  compatibility
                  with older kernels.

Więc nie wydaje mi się to problemem NFS3 / NFS4, ale decyzja o tym, jak intrdziała. Powinieneś być w stanie wykonać KILLten proces, ale to może nie dać ci wiele użyteczności.

Nie udało mi się znaleźć dyskusji na temat przyczyny usunięcia tej opcji. Czy możesz zabić - ZABIJ swój proces?


Dzięki, ale według człowieka intrjest obsługiwany przez nfs 2/3, ale nie 4.
UpTheCreek

@UpTheCreek, nie rozumiem, dlaczego tak jest. Nie mam tutaj systemu Debian, ale jest wyraźnie wymieniony jako dostępny. Próbowałeś tego? „intr Pozwoli to na przerwanie operacji NFS4 (na mocowaniach twardych) podczas oczekiwania na odpowiedź z serwera.”
BowlOfRed

2
Tak, próbowałem i nie przyniosło to żadnego efektu. Mężczyzna twierdzi, że jest ignorowany w najnowszych wersjach jądra.
UpTheCreek

Nie można ZABIĆ procesu, ponieważ cały system zawiesza się. Z mojego doświadczenia nie można wydawać żadnych poleceń. (Chociaż w niektórych przypadkach może być możliwe włożenie SSH na tak zamrożoną maszynę.)
MountainX dla Moniki Cellio

3

Niektóre z moich odpowiedzi to opinia oparta na doświadczeniu. Tam, gdzie mam fakty, będę (staram się pamiętać) link do nich.

  1. NFS 4 jest uważany za ulepszenie w stosunku do wersji 2 i 3. Jednak nie widziałem jeszcze mocnego argumentu przemawiającego za potrzebą ulepszeń. Być może dlatego, że zamierzam eksportować systemy plików do klientów Windows z Sambą i do klientów Unix / Linux z NFS.
  2. Nie polecałbym softw prawie żadnych okolicznościach. Pozwala to na odrzucenie danych w przypadku błędu . Zamiast tego sugerowałbym hard,intr.
  3. Jak zauważyłeś, intrnie działa na NFS 4, ale wydaje się, że jest to zmiana jądra a nie NFS.
  4. NFS Automounter ( autofs) działa dobrze w moich przypadkach użycia z NFS w wersji 2 i 3, i pomaga chronić moje systemy klienckie przed awarią serwera poprzez montowanie systemów plików NFS tylko wtedy, gdy są one wymagane.

Moją sugestią byłoby rozważenie przejścia z NFS 4 na NFS 3 i sprawdzenie, czy to pomoże w konkretnym przypadku użycia. Nie myśl o tym jako o obniżeniu wersji.


1
Dzięki, ale nie jestem w stanie przejść na NFS3, a nawet gdybym, jak mówisz, intrnie był obsługiwany w najnowszych wersjach jądra.
UpTheCreek

2
Ach tak, wygląda na intr to, że jest obsługiwany w NFS4 (jest wymieniony zarówno w opcjach tylko 2/3, jak i tylko 4 w man, co jest nieco mylące), ale po prostu nie jest obsługiwany w ostatnich wersjach jądra.
UpTheCreek

1
„W żadnym wypadku nie polecam miękkiego” - naprawdę? W moim przypadku mam zajęty serwer WWW, który montuje katalog obrazów. Jeśli host obrazów ulegnie awarii, a my skorzystamy hard, cała strona internetowa ulegnie awarii. Jeśli użyjemy soft, możemy uzyskać kilka uszkodzonych obrazów (chociaż nasz system buforowania łagodzi to prawie całkowicie). Ryzyko softdopuszczenia uszkodzenia plików nie jest tak naprawdę wielkim problemem. Wolałbym mieć jeden uszkodzony plik obrazu niż stronę w dół!
Doug McLean,

1
@DougMcLean również był w podobnej sytuacji (zajęta farma internetowa, serwery obrazów, NFS ...) Powiedziałbym, że to dość wyspecjalizowany przypadek. Gdyby moje serwery obrazów były tak zawodne, podejrzewam, że mógłbym softzaakceptować to jako akceptowalne rozwiązanie. Odpowiedź zmieniona z „nigdy” na „prawie nigdy”. Dzięki!
roaima,

1
Jeśli moja pamięć jest poprawna, problem z zawieszaniem się systemu występował również w NFS v3.
MountainX dla Moniki Cellio
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.