Montar nfs trava cliente

1

No lado do servidor, tenho:

CentOS 7 updated
Kernel 4.13.12-1.el7.elrepo.x86_64
nfs-utils-1.3.0-0.48.el7_4.x86_64
libnfsidmap-0.25-17.el7.x86_64

No lado do cliente, exatamente o mesmo ambiente.

Temos um iptables, mas permite qualquer comunicação entre clientes e servidor (qualquer porta com qualquer protocolo).

A maioria dos clientes pode se conectar e montar um diretório de compartilhamento NFS exportado normalmente, sem nenhum problema. Eles têm exatamente o mesmo ambiente com exatamente as mesmas regras de iptable.

Alguns deles não podem montar o compartilhamento NFS e não tenho registros sobre isso.

Chamando um desse cliente problemático como CLIENT-A, se eu tentar montar o NFS manualmente, não tenho nenhum erro ou aviso ou qualquer tipo de log:

[root@]#  mount -vvv -t nfs MYSERVER:/home/shared/ /home/shared/

Às vezes, esse comando suspende o terminal, às vezes não. Se eu cancelar esse comando ou fizer um novo ssh e tentar fazer ls em / home, o terminal irá travar:

[root@]# ls /home/sha

(quando eu pressionei TAB, ele caiu sem erro). Mesmo se eu tentar escrever manualmente e pressionar enter, vou ter a mesma situação. Ele só irá travar depois de reiniciar o servidor. O comando "lsof" irá travar também.

E nas duas situações acima, não há erro de tempo limite. Eles nunca terminam. Eu já tentei reiniciar e tente novamente, sem sucesso. E repito: eles têm exatamente o mesmo ambiente. Você pode pensar como um clone com hardware e IP diferentes, mas com o mesmo software. Sim, não garante resultados igualmente, mas em geral a ideia de softwares é mostrar o mesmo resultado.

Eu posso criar uma conexão tcp com o servidor NFS manualmente:

[root@localhost]# telnet MYSERVER 2049
Trying MYSERVERIP...
Connected to MYSERVER.
Escape character is '^]'.

Não tenho registros em ambos os lados sobre o que está acontecendo. Eu acho que eles estão tentando criar uma conexão com a versão 4.1 do nfs (última versão desse módulo). Eu tentei a versão 3 manualmente sem sucesso.

Eu executei "rpcinfo -p localhost" no lado do servidor e encontrei uma questão curiosa: Alguns clientes estão usando a versão 4, alguns deles 3, 2 ou 1 (2 ou 1 ???? !!!). / p>

[root@ ~]# rpcinfo -p  localhost
program vers proto   port  service
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp  59356  status
100024    1   tcp  50117  status
100005    1   udp  20048  mountd
100005    1   tcp  20048  mountd
100005    2   udp  20048  mountd
100005    2   tcp  20048  mountd
100005    3   udp  20048  mountd
100005    3   tcp  20048  mountd
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100227    3   tcp   2049  nfs_acl
100003    3   udp   2049  nfs
100227    3   udp   2049  nfs_acl
100021    1   udp  58205  nlockmgr
100021    3   udp  58205  nlockmgr
100021    4   udp  58205  nlockmgr
100021    1   tcp  38641  nlockmgr
100021    3   tcp  38641  nlockmgr
100021    4   tcp  38641  nlockmgr

Então eu encontrei um cliente que está usando o NFSV3 e eu fiz:

[root@ ~]# mount -vvv -t nfs -o vers=4     MYSERVER:/home/shared/ /home/shared/
mount.nfs: timeout set for Sun Nov 12 14:03:02 2017
mount.nfs: trying text-based options 'vers=4.1,addr=MYSERVER,clientaddr=MYCLIENTIP'

Ele trava. Mas se eu tentar vers = 3, funciona.

[root@ ~]# mount -vvv -t nfs -o vers=3 MYSERVER:/home/shared/ /home/shared/
mount.nfs: timeout set for Sun Nov 12 14:03:12 2017
mount.nfs: trying text-based options 'vers=3,addr=MYSERVERIP'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying MYSERVERIP prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying MYSERVERIP prog 100005 vers 3 prot UDP port 20048

No lado do servidor, o diretório é exportado linha por linha para IPs diferentes com os mesmos parâmetros:

(ro,async,all_squash)

Retornando na pergunta CLIENT-A, tentei registrar todas as novas conexões das portas tcp e udp do CLIENT-A no lado do servidor. Eu posso ver o CLIENTE-A tentando abrir portas. E isso tenta muito. Então eu acho que o problema não é com os clientes. Talvez.

Então, minhas perguntas são:

  1. Como solucionar problemas a partir de agora? Eu só tenho logs no lado do servidor do RPC quando a montagem remota obtém sucesso.
  2. Por que rpcinfo -p mostra todas as versões sobre o nfs4?
  3. Por que (talvez relacionado com (1)) servidor igualmente configurado quebrou no nfs v4.1 e não no 3? OK, eu sei sobre questões de estabilidade, mas sem registros sobre erros é a questão principal.

Obrigado pelo seu tempo :)

    
por Francisco Panis Kaseker 12.11.2017 / 17:27

0 respostas