Eu tenho três máquinas em produção -
machineA 10.66.136.129
machineB 10.66.138.181
machineC 10.66.138.183
e todas essas máquinas têm o Ubuntu 12.04 instalado e eu tenho acesso root a todas essas três máquinas.
Agora devo fazer as coisas abaixo nas minhas máquinas acima -
Create mount point /opt/exhibitor/conf
Mount the directory in all servers.
sudo mount <NFS-SERVER>:/opt/exhibitor/conf /opt/exhibitor/conf/
Eu já criei o /opt/exhibitor/conf
diretório em todas essas três máquinas, como mencionado acima.
Agora estou tentando criar um ponto de montagem. Então eu segui o processo abaixo -
Instale os arquivos de suporte NFS e o servidor do kernel NFS nas três máquinas acima
$ sudo apt-get install nfs-common nfs-kernel-server
Crie o diretório compartilhado em todas as três máquinas acima
$ mkdir /opt/exhibitor/conf/
Editou /etc/exports
e adicionou a entrada desta maneira em todas as três máquinas acima -
# /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)
Eu tentei montar na máquinaA, como abaixo, da máquinaB e da máquinaC e isso me dá esse erro-
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
Meu /etc/exports
arquivo ficou bom? Tenho certeza de que estraguei meu exports
arquivo. Como eu tenho o mesmo conteúdo em todas as três máquinas no arquivo de exportações.
Alguma idéia do que estou fazendo errado aqui? E qual será o /exports
arquivo correto aqui?
0750
ou0700
o cliente que estiver tentando montar provavelmente falhará com a mesma mensagem de erro. Mudei o host de0750
para0755
e então o erro foi embora e tudo estava bem.Respostas:
exportfs
Ao criar um
/etc/exports
arquivo em um servidor, você precisa exportá-lo. Normalmente, você deseja executar este comando:Isso exportará todas as entradas no arquivo de exportação.
showmount
A outra coisa que frequentemente faço é a partir de outras máquinas, verificarei qualquer máquina que exporte compartilhamentos NFS para a rede usando o
showmount
comandoExemplo
Digamos, por exemplo, que estou logado.
fstab
Para montá-las nas botas, você adicionaria essa linha às máquinas clientes que desejam consumir as montagens NFS.
montagem automática
Se você estiver reinicializando esses servidores, sugiro que você configure a automounting (
autofs
) em vez de adicionar essas entradas a/etc/fstab
. É um pouco mais trabalhoso, mas vale a pena.Isso permitirá que você reinicie os servidores de forma mais independente um do outro e também criará a montagem NFS quando for realmente necessário e / ou em uso. Quando ficar ocioso, será desmontado.
Referências
fonte
exportfs -a
, eu corriexportfs -rv
. Existe alguma diferença entre esses? E no meu caso,showmount -e 10.66.136.129
eu vou estar fazendo da máquina B e da máquina C. direito?exportfs -rv
apenas reexporta + é detalhado. O-a
exportará tudo. Quanto ashowmount -e
sim, você pode executá-lo a partir dessas máquinas ou da que serve os compartilhamentos.Eu vi o mesmo erro (
mount.nfs: access denied by server while mounting...
) e o problema foi corrigido por-o v3
opção da seguinte maneira:fonte
mount.nfs: Connection timed out
. (Cliente é o Ubuntu 14.04 LTS 64-bit Server é um QNAP NFS com QTS 4.0.2 2016/01/09..)No meu caso funciona usando nfs4 fazendo:
No
/etc/export
arquivo no servidorfsid=0
cria o/Path/to/export
diretório raiz quando você monta o compartilhamento.crossmnt
, porque tenho outras unidades no sistema de arquivos exportado que também quero acessar.no_root_squash
, porque eu quero acessar como usuário root (su) no lado do cliente. Tenho certeza de que sou o único que pode fazer isso na minha rede local.Servidor e clientes são Ubuntu 14.04 64bit.
Se você quiser usar o nfs3, a resposta do @ fumisky-wells também funciona para mim.
fonte
Eu estava recebendo a mesma mensagem de erro e o problema ocorreu devido à máquina cliente ter duas interfaces de rede conectadas à mesma LAN. O servidor foi configurado para esperar um endereço IP específico e o tráfego estava saindo na segunda interface que possui um endereço IP DHCP. Então, acabei de configurar a segunda interface para ter um endereço IP estático e também adicionei o segundo endereço IP estático à configuração do servidor.
fonte
/etc/exports
precisa ser editado na máquina do servidor NFS , não nos clientes, como você disse, como é verificado pelo servidor NFS quando um cliente solicita acesso a um compartilhamento.Se você colocar o seguinte no
/etc/exports
servidor NFS, ele funcionará:fonte
exportfs -a
?Se o nfs-client estiver tentando montar o compartilhamento exportado dentro do contêiner linux, o contêiner deverá ser executado no modo privilegiado.
Em caso de estivador;
$ docker run -it --rm --privileged ubuntu:14.04
fonte
Para mim, o problema era que eu estava usando o endereço IP do servidor em
/etc/exports/
vez do endereço do cliente .O problema é que você deve colocar todos os ips aos quais concede acesso no servidor
/etc/exports/
fonte
Depois de lutar com a mesma mensagem de erro por horas, meu problema acabou sendo nada mais complicado do que as boas e antigas permissões de arquivo Linux no host NFS.
A pasta que eu estava tentando compartilhar (
/home/foo/app/share
) tinha as permissões corretas, mas como o diretório inicial do usuário (/home/foo
) tinha o0750
modo, o NFS não pôde atravessá-lo para acessar o diretório compartilhado.Assim que eu defini o diretório inicial do usuário para o modo
0751
, o serviço NFS pôde entrar nele e eu consegui montar o compartilhamento na minha máquina cliente.fonte
Para mim, o problema era que meu roteador alterava o endereço IP usado do cliente, de forma que a entrada na
/etc/exports
máquina do servidor permitia apenas o acesso a um endereço IP que não era mais usado.fonte
O mesmo poderia acontecer se você tentar montar um compartilhamento NFS na instância do Virtual Box com o adaptador de rede configurado como
NAT
.Escolher
Bridged Adapter
nas configurações de rede da máquina virtual corrige esse problema.fonte
Eu sei que esse é um thread antigo, mas meu problema estava relacionado ao LXC e ao AppArmor .
Matar o AppArmor , ou adicionar um perfil de exceção, o corrigiu.
fonte
Este erro também pode ser causado ao tentar montar um caminho criptografado. (Por exemplo, no seu diretório pessoal, se você optar por criptografá-lo)
fonte
A única solução que funcionou para mim foi exportar sistemas de arquivos começando com
/srv
. Parece que essa é uma limitação (ou opção padrão, pelo menos) do NFSv4.Como eu estava tentando exportar uma unidade USB para
/media
a qual é montada automaticamente , eu precisava de uma maneira de montá-la/srv
. Para conseguir isso:E em
/etc/exports
:Quando eu exportava
/media/jim/wdportable/videos
diretamente, a tentativa de montar no cliente sempre resultavamount.nfs: access denied by server
.A
-o v3
solução funcionou, mas eu não queria forçar a v3.fonte
/media/jim
pasta. Se o diretório que você está tentando compartilhar for (ou estiver dentro de) um diretório com only700
ou750
mode, o NFS não poderá atravessá-lo. Se você mudou/media/jim
para751
, provavelmente funcionaria.sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share
(raspbian no Raspi 3 B +), eu também tenteisudo chmod 751 /media/pi
. Depois, não precisei-o v3
mais:sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share
fiz o trabalho (após desmontar). Muito obrigado a @DaleAnderson.Note-se que uma página vinculada que me levou até aqui tinha a minha resposta correta: NÃO é possível usar * curinga no endereço IP na exportação. É * (todos os IPs) ou usado como curinga nos nomes de domínio IE: * .domain.com.
Por exemplo: isso está correto
Isso não funcionará (ou está incorreto, pelo menos), mas funcionou para mim por anos até eu tentar montar a exportação de uma VM do Fedora.
fonte