Mam trzy maszyny w produkcji -
machineA 10.66.136.129
machineB 10.66.138.181
machineC 10.66.138.183
i na wszystkich tych komputerach jest zainstalowany Ubuntu 12.04, a ja mam dostęp do roota na tych wszystkich trzech komputerach.
Teraz powinienem wykonać poniższe czynności na moich powyższych maszynach -
Create mount point /opt/exhibitor/conf
Mount the directory in all servers.
sudo mount <NFS-SERVER>:/opt/exhibitor/conf /opt/exhibitor/conf/
Utworzyłem już /opt/exhibitor/conf
katalog na wszystkich tych trzech komputerach, jak wspomniano powyżej.
Teraz próbuję utworzyć punkt montowania. Postępowałem zgodnie z poniższym procesem -
Zainstaluj pliki obsługi NFS i serwer jądra NFS na wszystkich powyższych trzech komputerach
$ sudo apt-get install nfs-common nfs-kernel-server
Utwórz wspólny katalog na wszystkich powyższych trzech komputerach
$ mkdir /opt/exhibitor/conf/
Zmodyfikowałem /etc/exports
i dodałem ten wpis we wszystkich powyższych trzech komputerach -
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/opt/exhibitor/conf/ 10.66.136.129(rw)
/opt/exhibitor/conf/ 10.66.138.181(rw)
/opt/exhibitor/conf/ 10.66.138.183(rw)
Próbowałem zamontować na maszynie A jak poniżej z maszyny B i maszyny C i to daje mi ten błąd -
root@machineB:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf
root@machineC:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf
Czy mój /etc/exports
plik wygląda dobrze? Jestem całkiem pewien, że popsułem mój exports
plik. Ponieważ mam tę samą zawartość na wszystkich trzech komputerach w pliku eksportu.
Masz pojęcie, co tutaj robię źle? A jaki będzie /exports
tutaj poprawny plik?
0750
lub0700
klient próbujący zamontować najprawdopodobniej zakończy się niepowodzeniem z tym samym komunikatem o błędzie. Zmieniłem hosta z0750
na,0755
a następnie błąd zniknął i wszystko było dobrze.Odpowiedzi:
exportfs
Podczas tworzenia
/etc/exports
pliku na serwerze musisz upewnić się, że go eksportujesz. Zazwyczaj będziesz chciał uruchomić to polecenie:Spowoduje to wyeksportowanie wszystkich wpisów w pliku eksportu.
showmount
Inną rzeczą, którą często robię, jest na innych komputerach. Za pomocą
showmount
polecenia sprawdzę każdy komputer, który eksportuje udziały NFS do sieci .Przykład
Powiedz na przykład, że jestem zalogowany w scully.
fstab
Aby zamontować je przy rozruchu, dodaj tę linię do komputerów klienckich, które chcą korzystać z podłączeń NFS.
automounting
Jeśli masz zamiar zrestartować te serwery, to wysoce sugeruję, abyś zajął się konfiguracją automounting (
autofs
) zamiast dodawania tych wpisów/etc/fstab
. To trochę więcej pracy, ale jest warte wysiłku.Pozwoli to na ponowne uruchomienie serwerów bardziej niezależnie od siebie, a także utworzy montaż NFS tylko wtedy, gdy jest on rzeczywiście potrzebny i / lub używany. Gdy stanie się bezczynny, zostanie odmontowany.
Bibliografia
źródło
exportfs -a
, pobiegłemexportfs -rv
. Czy jest jakaś różnica między nimi? I w moim przypadkushowmount -e 10.66.136.129
będę robił z maszyny B i maszyny C. dobrze?exportfs -rv
po prostu robi reexport + jest pełny.-a
Wyeksportuje wszystko. Jeślishowmount -e
tak, możesz go uruchomić z tych maszyn lub z tego, który obsługuje udziały.Widziałem ten sam błąd (
mount.nfs: access denied by server while mounting...
) i problem został rozwiązany przez-o v3
opcję w następujący sposób:źródło
mount.nfs: Connection timed out
. (Klientem jest Ubuntu 14.04 LTS 64-bit. Serwer to QNAP NFS z QTS 4.0.2 2016/01/09.)W moim przypadku działa przy użyciu nfs4 wykonując:
W
/etc/export
pliku na serwerzefsid=0
tworzy/Path/to/export
katalog główny podczas montowania udziału.crossmnt
, ponieważ mam kilka innych dysków w wyeksportowanym systemie plików, do których chcę również uzyskać dostęp.no_root_squash
, ponieważ chcę uzyskać dostęp jako użytkownik root (su) po stronie klienta. Jestem pewien, że tylko ja mogę to zrobić w mojej sieci lokalnej.Serwer i klient to Ubuntu 14.04 64bit.
Jeśli chcesz użyć nfs3, odpowiedź @ fumisky-wells również działa dla mnie.
źródło
Otrzymywałem ten sam komunikat o błędzie i mój problem okazał się spowodowany tym, że komputer kliencki ma dwa interfejsy sieciowe podłączone do tej samej sieci LAN. Serwer został skonfigurowany tak, aby oczekiwał określonego adresu IP, a na drugim interfejsie, który ma adres IP dhcp, wychodził ruch. Właśnie skonfigurowałem drugi interfejs, aby miał statyczny adres IP, a także dodałem drugi statyczny adres IP do konfiguracji serwera.
źródło
/etc/exports
musi być edytowany na komputerze serwera NFS , a nie na klientach, jak to stwierdziłeś, ponieważ jest sprawdzany przez serwer NFS, gdy klient żąda dostępu do udziału.Jeśli umieścisz następujące elementy
/etc/exports
na serwerze NFS, powinien on działać:źródło
exportfs -a
?Jeśli klient nfs próbuje zamontować wyeksportowany udział w kontenerze linux, wówczas kontener powinien działać w trybie uprzywilejowanym.
W przypadku dokera;
$ docker run -it --rm --privileged ubuntu:14.04
źródło
Dla mnie problem polegał na tym, że
/etc/exports/
zamiast adresu klienta korzystałem z adresu IP serwera .Chodzi o to, że powinieneś umieścić wszystkie IP, którym udzielasz dostępu na serwerze
/etc/exports/
źródło
Po wielu godzinach walki z tym samym komunikatem o błędzie mój problem okazał się niczym bardziej skomplikowanym niż staromodne dobre uprawnienia do plików Linuksa na hoście NFS.
Folder, który próbowałem udostępnić (
/home/foo/app/share
), miał odpowiednie uprawnienia, ale ponieważ katalog domowy użytkownika (/home/foo
) miał0750
w nim tryb, NFS nie był w stanie przejść do niego, aby uzyskać dostęp do udostępnionego katalogu.Gdy tylko ustawiłem katalog
0751
osobisty użytkownika na tryb , usługa NFS była w stanie przejść do niego i mogłem zamontować udział z mojego komputera klienckiego.źródło
Dla mnie problemem było to, że mój router zmienił używany adres IP klienta, tak że wpis
/etc/exports
na maszynie serwera pozwalał na dostęp tylko dla adresu IP, który nie był już używany.źródło
To samo może się zdarzyć, jeśli spróbujesz zamontować udział NFS w instancji Virtual Box z kartą sieciową skonfigurowaną jako
NAT
.Wybór
Bridged Adapter
ustawień sieciowych maszyny wirtualnej rozwiązuje ten problem.źródło
Wiem, że to stary wątek, ale mój problem dotyczył LXC i AppArmor .
Naprawiono to zabijając AppArmor lub dodając profil wyjątku.
źródło
Ten błąd może być również spowodowany próbą zamontowania zaszyfrowanej ścieżki. (Na przykład w katalogu domowym, jeśli zdecydujesz się go zaszyfrować)
źródło
Jedynym rozwiązaniem, które działało dla mnie, było eksportowanie systemów plików od
/srv
. Wygląda na to, że jest to ograniczenie (lub przynajmniej domyślna opcja) NFSv4.Ponieważ próbowałem wyeksportować dysk USB, na którym automatycznie się instaluje
/media
, potrzebowałem sposobu, aby uzyskać to „zamontowanie”/srv
. Aby to osiągnąć:I w
/etc/exports
:Kiedy eksportowałem
/media/jim/wdportable/videos
bezpośrednio, próba zamontowania na kliencie zawsze kończyła sięmount.nfs: access denied by server
.-o v3
Rozwiązanie działało, ale nie chcę, aby wymusić v3.źródło
/media/jim
folderu. Jeśli katalog, który próbujesz udostępnić, jest (lub znajduje się w nim) katalogiem zawierającym tylko tryb700
lub750
, NFS nie będzie mógł przejść do niego. Jeśli zmienisz/media/jim
na751
, prawdopodobnie będzie działać.sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share
(raspbian na Raspi 3 B +) też próbowałemsudo chmod 751 /media/pi
. Potem już nie potrzebowałem-o v3
:sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share
wykonałem robotę (po odmontowaniu). Ogromne podziękowania dla @DaleAnderson.Należy zauważyć, że linkowana strona, która mnie tu zaprowadziła, miała moją prawidłową odpowiedź, która brzmiała, że NIE możesz używać * symbolu wieloznacznego w adresie IP w eksporcie. Jest to * (wszystkie adresy IP) lub jest używany jako symbol wieloznaczny w nazwach domen IE: * .domain.com.
Np .: jest to poprawne
To nie zadziała (a przynajmniej jest niepoprawne), ale działało dla mnie przez lata, dopóki nie spróbowałem zamontować eksportu z maszyny wirtualnej Fedory.
źródło