Serwer A
eksportuje katalog /srv
przez NFS z opcją nohide
. Podkatalog wewnątrz /srv
, /srv/foo
jest to punkt montowania innej lokalizacji na serwerze NFS przy użyciu --bind
opcji, takich jak
server# mount --bind /bar/foo/ /srv/foo/
Klient B
importuje A:/srv
i montuje go przy /mnt/srv
użyciu NFS. Zawartość /mnt/srv
jest zawartością A:/srv
.
Problem w tym, że /mnt/srv/foo
jest pusty, podczas gdy spodziewam się zobaczyć jego zawartość A:/bar/foo/
.
Jak poprawnie eksportować i importować udziały NFS, które mają podkatalogi jako punkty podłączenia?
/srv/foo --> /bar/foo
?/bar/foo
na maszynie klientaB
, a nie na serwerzeA
.Odpowiedzi:
crossmnt
jest twoim przyjacielem.źródło
Natknąłem się na ten problem podczas korzystania z przewodnika Diskless Arch , co naprawdę mnie spowolniło. Podzielę się tutaj swoimi odkryciami, ponieważ jestem ciekawy, czy to zadziała dla kogokolwiek innego.
Zgodnie z przewodnikiem bezdyskowym mam główny system plików klienta bezdyskowego (rzeczywiste dane, które muszę wyeksportować) w obrazie pętli zwrotnej, który został zamontowany na
/srv/des1
:Następnie utworzyłem punkt montowania,
/nfs/des1
a następnie uruchom go i potwierdź, że wszystko widzę:Odnosząc się do przewodnika Arch NFS , następnie umieściłem
/etc/exports
na serwerze:Następnie uruchomiłem
exportfs -rav
na serwerze, aby zastosować te zmiany.Jednak potem zamontowałem udział na kliencie testowym za pomocą:
mount server:/des1 /mnt/tmp
tylko po to, by znaleźć pusty katalog, kiedy spodziewałem się, że istnieje system plików root-bezdyskowych.Na tym etapie próbowałem prawie wszystkiego, aż coś doprowadziło mnie do tej opcji na
exports
stronie podręcznika :Więc po wypróbowaniu wszystkiego innego zamieniłem to, więc
/etc/exports
wyglądałem tak:Po przeczytaniu wpisu strony podręcznika można by pomyśleć, że będzie to miało taki sam efekt jak poprzedni kod, ale kiedy
exportfs -rav
ponownie uruchomiłem program, aby zarejestrować zmiany, spróbowałem ponownie połączyć się z klientem i zadziałało!źródło
Wygląda na to, że każdy podpunkt podłączenia musi zostać wyeksportowany przez serwer NFS, aby był widoczny dla klientów. W powyższej sytuacji
/etc/exports
plik powinien wyglądać następująco:Następnie importowanie
/srv
na kliencie z opcją-t nfs
spowoduje zarówno/srv
i/srv/foo
właściwie niedostępna.edycja przez OP
ta linia
działał w moim przypadku zamiast
źródło
Naprawdę też chciałem to zrobić, ale wydaje się, że z tym pomysłem są problemy, ponieważ klienci NFS oczekują, że liczba i-węzłów plików będzie unikalna w widoku klienta na jedno podłączenie.
Problemy są szczegółowo opisane w tym poście na blogu (nie przeze mnie): http://utcc.utoronto.ca/~cks/space/blog/unix/MultiFilesystemNFSIssue
Zdecydowałem się zamontować systemy plików osobno i połączyć je symbolicznie, co powinno działać dla wszystkich klientów NFS.
źródło
UWAGA: włączony tylko jeden użytkownik
To, co dodaje, to zestaw edycji po stronie serwera i klienta. Po stronie serwera
/etc/exports
i/etc/fstab
po stronie klienta.Po stronie serwera
Asus eeepc
Strona klienta
Jądro Linux 4.15.0-38-generic x86_64
źródło