automount nfs: ustawienia limitu czasu autofs dla niewiarygodnych serwerów - jak uniknąć zawieszania się?


18

Używam małego serwera dla naszego płaskiego udziału. Jest to głównie serwer plików z kilkoma dodatkowymi usługami. Klientami są maszyny z systemem Linux (głównie Ubuntu, ale niektóre także Distros) i niektóre komputery Mac (-Book) pomiędzy nimi (ale nie są ważne w przypadku pytania). Na serwerze działa Ubuntu 11.10 (Oneiric Ocelot) „Server Edition”, system, z którego wykonuję konfigurację i testy, uruchamia 11.10 „Desktop Edition”. Przez pewien czas działaliśmy z Sambą (z którą jesteśmy bardziej zaznajomieni), ale następnie przeprowadziliśmy migrację do NFS (ponieważ nie mamy żadnych użytkowników systemu Windows w sieci LAN i chcemy to wypróbować) i do tej pory wszystko działa dobrze .

Teraz chcę skonfigurować automatyczne montowanie przy użyciu autofs, aby wszystko było płynniejsze (do tej pory wszyscy montują udziały ręcznie, gdy jest to potrzebne). Wygląda na to, że auto-montaż również działa. Problem polega na tym, że nasz „serwer” nie działa 24 godziny na dobę, aby oszczędzać energię (jeśli ktoś potrzebuje czegoś z serwera, włącza go i wyłącza, a więc działa tylko kilka godzin dziennie). Ale ponieważ konfiguracja autofs powoduje, że klienci często się kończą, gdy serwer nie działa.

  • Mogę dobrze uruchomić wszystkich klientów, nawet gdy serwer nie działa.

  • Ale gdy chcę wyświetlić katalog (w terminalu lub nautilusie), który zawiera dowiązania symboliczne do udziału pod, /nfsgdy serwer nie jest uruchomiony, zawiesza się przez co najmniej dwie minuty (ponieważ autofs nie może połączyć się z serwerem, ale zachowuje próbuję, zakładam).

    • Czy istnieje sposób, aby tego uniknąć? Czy montowanie będzie opóźnione do momentu zmiany katalogu lub dostępu do zawartości tego katalogu? Nie, gdy „patrzysz” na link do udziału pod /nfs? Myślę, że nie, ale może nie można próbować uzyskać do niego dostępu tak długo? I po prostu daj mi pusty katalog lub „nie mogę znaleźć / połączyć się z tym katalogiem” lub coś w tym rodzaju.
  • Gdy serwer działa, wszystko działa poprawnie.

  • Ale kiedy serwer zostanie zamknięty, zanim odmontowany zostanie udział, narzędzia (jak dflub ll) zawiesią się (zakładając, że myślą, że udział jest nadal włączony, ale serwer nie będzie już odpowiadał).

    • Czy istnieje sposób na odmontowanie udziałów automatycznie, gdy połączenie zostanie utracone?
  • Ponadto klienci nie zamykają się ani nie uruchamiają ponownie, gdy serwer jest wyłączony i nadal mają zainstalowane udziały. Zawieszają się (jak się wydaje nieskończenie) w „ zabijaniu pozostałych procesów ” i nic się nie dzieje.

Myślę, że wszystko sprowadza się do dokładnych wartości limitu czasu podczas montowania i odmontowywania. A może, aby usunąć wszystkie udziały, gdy połączenie z serwerem zostanie utracone.

Więc moje pytanie brzmi: jak sobie z tym poradzić? I jako bonus: czy istnieje dobry sposób na połączenie w środku /nfsbez potrzeby montowania prawdziwych udziałów (opcja autofs lub może użycie pseudo FS, /nfsktórego zastępuje się, gdy nastąpi montowanie, czy coś takiego)?

Moja konfiguracja

Ustawienie NFS jest dość proste, ale jak dotąd służyło nam dobrze (przy użyciu NFSv4 ):

/ etc / default / nfs-common

NEED_STATD=
STATDOPTS=
NEED_IDMAPD=YES
NEED_GSSD=

/etc/idmapd.conf

[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

/ etc / export

/srv/   192.168.0.0/24(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)

Pod /srvkatalogiem głównym eksportu mamy dwa katalogi z bind:

/ etc / fstab (serwer)

...
/shared/shared/      /srv/shared/      none    bind  0 0
/home/Upload/        /srv/upload/      none    bind  0 0

Pierwszy jest w większości tylko do odczytu (ale wymuszam to poprzez atrybuty pliku i własność zamiast ustawień NFS), a drugi to rw dla wszystkich. Uwaga: Nie mają żadnych dodatkowych wpisów w / etc / export , jednak ich osobne montowanie działa.

Po stronie klienta są instalowane /etc/fstabi montowane ręcznie w razie potrzeby ( mortonjest to nazwa serwera i rozwiązuje się dobrze).

/ etc / fstab (klient)

morton:/shared  /nfs/shared nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0
morton:/upload  /nfs/upload nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0

Dla konfiguracji autofs usunąłem wpisy z /etc/fstabklientów i ustawiłem resztę w następujący sposób:

/etc/auto.master

/nfs    /etc/auto.nfs

Najpierw powiązałem dostarczony plik wykonywalny /etc/auto.net(możesz go tutaj obejrzeć ), ale nie będzie on automatycznie montował dla mnie niczego. Potem piszę na /etc/auto.nfspodstawie kilku poradników, które znalazłem online:

/etc/auto.nfs

shared  -fstype=nfs4  morton:/shared
upload  -fstype=nfs4  morton:/upload

I to trochę działa ... Lub działałoby, gdyby serwer działał 24/7. Tak więc zawieszamy się, gdy klient uruchamia się bez serwera lub gdy serwer się wyłącza, gdy udziały są nadal połączone.

Odpowiedzi:


2

Korzystając z dowolnego systemu montowania, chcesz uniknąć sytuacji, w których Nautilus wyświetla katalog zawierający instalację, która może zostać zamontowana lub nie. Tak więc, przy autofs, nie twórz mountów na przykład w / nfs. Jeśli to zrobisz, kiedy użyjesz Nautilusa do wyświetlenia „Systemu plików”, spróbuje utworzyć wszystkie montowania, które powinny istnieć w / nfs, a jeśli te próby montowania zakończą się niepowodzeniem, poświęcisz kilka minut.

Więc zmieniłem auto.master, aby utworzyć mounty w / nfs / mnt.

To rozwiązało problem. Dostaję duże opóźnienie tylko wtedy, gdy próbuję wymienić zawartość / nfs / mnt, czego mogę łatwo uniknąć.


20

Zamontuj udział NFS na klientach, używając opcji montowania „bg, intr, hard”.

Najważniejsze w twoim przypadku jest „bg” dla tła - które mówi systemowi, aby nie blokował, gdy serwer jest niedostępny.

„intr” dla przerywalnego - abyś mógł zabić wiszące wierzchowce na kliencie za pomocą polecenia kill.

„twardy” jest przeciwieństwem „miękkiego”. Różnica polega na tym, że „trudny” będzie próbował bez końca, podczas gdy „miękki” będzie wykładniczo wycofywał próby, gdy serwer nie będzie dostępny.


Dzięki za odpowiedzi. Nie mogę sprawdzić teraz bo nie jestem w domu, ale po wiążąc się dostać na stronę man (znowu), mam kilka pytań: harda bgdźwięki przeciwdziałać intuicyjny do mnie na początku. Chcę, aby wierzchowiec nie ponowił próby i natychmiast wrócił, jeśli zostanie zwolniony? intrwydaje się w porządku, ale wydaje się również, że już nie działa: „ Opcja montowania intr / nointr jest przestarzała po jądrze 2.6.25. Tylko SIGKILL może przerwać oczekującą operację NFS na tych jądrach, a jeśli jest określona, ​​ta opcja montowania jest ignorowana, aby zapewnić kompatybilność wsteczną ze starszymi jądrami. ”?
Brutus

2
Hard spróbuje bez końca - bg NIE zablokuje się, jeśli mount nie jest w tej chwili możliwy. Rezultat będzie taki, że zostanie zamontowany, gdy będzie dostępny, ale wszystkie inne operacje będą kontynuowane. INTR wydaje się teraz domyślny - co jest świetne. Na początku musiałeś zrestartować wiszącego klienta, jeśli twój serwer NFS zmarł ...
Nils,

Właśnie go przetestowałem, ale dodawanie hard,bgdo /etc/auto.masterwydaje się nic nie zmieniać. A time ls -l ~(mój katalog użytkownika zawiera dowiązanie symboliczne /nfs/upload) nadal trwa dłużej niż dwie minuty, gdy serwer nie działa.
Brutus

Czy uruchomiłeś ponownie autofs? Tylko zmiany podrzędne będą propagowane bez ponownego uruchamiania autofs.
Nils,

Zrobiłem:sudo reload autofs && sudo restart autofs
Brutus,

7

Grałem trochę więcej z niektórymi opcjami ze strony podręcznika. Wszystko bg,hard, bg,soft, fg,hardi fg,softdać mi powrócić razy ponad dwa pokoii.

Ustawienie retrans=1,retry=0(w połączeniu z dowolnym z powyższych) daje mi jednak czas około trzech sekund. Całkiem przyzwoity. Chociaż nie jestem pewien, co oznacza każda kombinacja. Będzie kopać dalej.

Natknąłem się również na opcje autofs MOUNT_WAITi UMOUNT_WAIT. Nie udało mi się uzyskać z nimi różnych rezultatów, ale będę próbował. Wydaje się, że Lika to dobry sposób na użycie „bezpieczniejszego” (czyli więcej powtórzeń itp.) Opcji NFS, ale szybki czas powrotu dla autofs, czy nie?


1
Wydaje się również, że istnieją inne opcje, takie rsize=32768,wsize=32768,noatimejak wspomniano tutaj: techrepublic.com/blog/opensource/…
Ehtesh Choudhury

-1

Aby skonfigurować system plików NFS do automatycznego montowania przy każdym uruchomieniu systemu Red Hat Linux, musisz dodać wpis dla tego systemu plików NFS do pliku / etc / fstab. Plik / etc / fstab zawiera informacje o różnych rodzajach zamontowanych (i dostępnych do zamontowania) systemów plików w systemie Red Hat Linux. EX:: nfs Odpowiada nazwie hosta, adresowi IP lub w pełni kwalifikowanej nazwie domeny serwera eksportującego system plików. Jest to ścieżka do wyeksportowanego katalogu. Określa, gdzie w lokalnym systemie plików należy zamontować wyeksportowany katalog. Ten punkt montowania musi istnieć przed odczytaniem / etc / fstab, inaczej montowanie zakończy się niepowodzeniem. Obszar określa opcje montowania dla systemu plików. Na przykład jeśli obszar opcji zawiera rw, suid, eksportowany system plików zostanie podłączony do odczytu i zapisu, a użytkownik i identyfikator grupy ustawione przez serwer zostaną użyte. Pamiętaj, że nawiasów nie należy tutaj używać

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.