Linux NFS trava após cerca de 15 minutos

1

Sou um pouco novo quando se trata de administrar Linux e NFS, então, por favor, tenha paciência comigo.

Estamos tentando configurar um pequeno cluster no trabalho. Atualmente, o sistema é apenas duas estações de trabalho high-end da DELL, rodando o CentOS 6.5. Para facilitar a administração de usuários e arquivos, decidimos compartilhar via NFS o diretório / home e quatro arquivos de / etc ( passwd , grupo , shadow , e gshadow (Isso é feito movendo-os para um subdiretório e usando links para colocá-los de volta em / etc))

Os arquivos são compartilhados com isso em / etc / exports no servidor:

/home/  x.x.x.0/24(rw,sync,no_root_squash,no_all_squash)  
/etc/sub_dir/   x.x.x.0/24(rw,sync,no_root_squash,no_all_squash)  

Os arquivos são montados com isto em / etc / fstab no cliente:

server_name:/home/          /home/          nfs rw,sync,hard,intr 0 0
server_name:/etc/sub_dir/           /etc/sub_dir/           nfs rw,sync,hard,intr 0 0

Depois de definir tudo isso, o sistema funcionou bem por cerca de um mês . Contanto que o servidor estivesse ligado, quando o cliente iniciasse, todos os usuários do servidor ficariam visíveis e também todos os arquivos.

No entanto, há cerca de 5 dias, começou a agir. Depois de iniciar o cliente, ele funcionaria bem por cerca de 15 minutos (mais ou menos). Os usuários podem fazer logon localmente ou via SSH. Depois dos primeiros 15 minutos, o sistema travaria quase totalmente. Novos usuários não puderam fazer login e os usuários logados não puderam fazer nada. (Coisas básicas como mover o mouse ainda funcionam). A única maneira de fazer o sistema funcionar novamente é desligar e ligar o cliente. Infelizmente, isso também significa que a depuração no cliente é muito difícil.

Reduzimos o problema para ter algo a ver com os compartilhamentos NFS dos arquivos descritos acima. (Sabemos disso porque desabilitar as montagens em / etc / fstab permite que o cliente volte para seus próprios arquivos locais e tudo funciona bem)

O mais distante que podemos descobrir é o sistema inicia, monta tudo e funciona. Em seguida, as conexões são interrompidas e, na próxima vez que o cliente precisar de acesso a um arquivo (por exemplo, passwd), ele não poderá encontrá-lo e o sistema trava aguardando a conexão.

Os computadores estão no mesmo comutador de 1000 Mbps e a carga é bastante leve.

Qualquer ajuda seria muito apreciada.

ATUALIZAÇÕES :

Eu tenho feito mais algumas escavações. Eu encontrei este problema semelhante aqui na falha do servidor, mas também não está resolvido.
Eu também tentei mudar para UDP , mas também não resolveu o problema.
Eu me deparei com artigos explicando como encontrar e resolver NFS sendo obsoletos (mas não tenho certeza se esse é o problema).

ATUALIZAÇÕES :

Eu consegui obter um log do cliente em / var / log / messages (durante alguns minutos de operação).
Olhando através dele, eu encontrei um padrão repetitivo de nfsidmap sendo "bloqueado", em seguida, um Rastreamento de Chamada com muitas entradas "[nfs]".

Aug  7 14:17:01 computer-name kernel: INFO: task crond:10578 blocked for more than 120 seconds.
Aug  7 14:17:01 computer-name kernel:      Tainted: P           ---------------    2.6.32-431.20.3.el6.x86_64 #1
Aug  7 14:17:01 computer-name kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Aug  7 14:17:01 computer-name kernel: crond         D 000000000000000e     0 10578      1 0x00000080
Aug  7 14:17:01 computer-name kernel: ffff880a5cf0b148 0000000000000082 0000000000000000 ffffffff81059096
Aug  7 14:17:01 computer-name kernel: ffff880a5cf0b0d8 ffff880a5f77eaa0 ffff880a5cf0b0d8 ffffffff8105559d
Aug  7 14:17:01 computer-name kernel: ffff880a555a5098 ffff880a5cf0bfd8 000000000000fbc8 ffff880a555a5098
Aug  7 14:17:01 computer-name kernel: Call Trace:
Aug  7 14:17:01 computer-name kernel: [<ffffffff81059096>] ? enqueue_task+0x66/0x80
Aug  7 14:17:01 computer-name kernel: [<ffffffff8105559d>] ? check_preempt_curr+0x6d/0x90
Aug  7 14:17:01 computer-name kernel: [<ffffffff815296d5>] schedule_timeout+0x215/0x2e0
Aug  7 14:17:01 computer-name kernel: [<ffffffff8109afb6>] ? autoremove_wake_function+0x16/0x40
Aug  7 14:17:01 computer-name kernel: [<ffffffff810546b9>] ? __wake_up_common+0x59/0x90
Aug  7 14:17:01 computer-name kernel: [<ffffffff81529353>] wait_for_common+0x123/0x180
Aug  7 14:17:01 computer-name kernel: [<ffffffff81061d00>] ? default_wake_function+0x0/0x20
Aug  7 14:17:01 computer-name kernel: [<ffffffff81095211>] ? __queue_work+0x41/0x50
Aug  7 14:17:01 computer-name kernel: [<ffffffff8152946d>] wait_for_completion+0x1d/0x20
Aug  7 14:17:01 computer-name kernel: [<ffffffff8109386c>] call_usermodehelper_exec+0x10c/0x120
Aug  7 14:17:01 computer-name kernel: [<ffffffff812246ae>] call_sbin_request_key+0x24e/0x2f0
Aug  7 14:17:01 computer-name kernel: [<ffffffff8121eb03>] ? key_instantiate_and_link+0xa3/0xb0
Aug  7 14:17:01 computer-name kernel: [<ffffffffa1060030>] ? nfs4_callback_layoutrecall+0x30/0x90 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffff812241e5>] request_key_and_link+0x315/0x3d0
Aug  7 14:17:01 computer-name kernel: [<ffffffff812243b0>] request_key+0x50/0xa0
Aug  7 14:17:01 computer-name kernel: [<ffffffffa105cb65>] nfs_idmap_request_key+0xc5/0x170 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa105d194>] nfs_idmap_lookup_id+0x34/0x80 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa105d5d5>] nfs_map_name_to_uid+0x75/0xa0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa1057504>] decode_getfattr_attrs+0xf64/0xfa0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffff810097cc>] ? __switch_to+0x1ac/0x320
Aug  7 14:17:01 computer-name kernel: [<ffffffffa10575c3>] decode_getfattr_generic.clone.0+0x83/0xe0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa1057ce0>] nfs4_xdr_dec_access+0xb0/0xc0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa1057c30>] ? nfs4_xdr_dec_access+0x0/0xc0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f90fc4>] rpcauth_unwrap_resp+0x84/0xb0 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa1057c30>] ? nfs4_xdr_dec_access+0x0/0xc0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f85923>] call_decode+0x1b3/0x800 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffff8109b020>] ? wake_bit_function+0x0/0x50
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f85770>] ? call_decode+0x0/0x800 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f8f677>] __rpc_execute+0x77/0x350 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffff8109ae27>] ? bit_waitqueue+0x17/0xd0
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f8f9b1>] rpc_execute+0x61/0xa0 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f863a5>] rpc_run_task+0x75/0x90 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f864c2>] rpc_call_sync+0x42/0x70 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa104ba9e>] _nfs4_call_sync+0x3e/0x40 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa104a7cc>] _nfs4_proc_access+0x11c/0x1a0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa104a89b>] nfs4_proc_access+0x4b/0x80 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa102658c>] nfs_do_access+0x19c/0x240 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f92625>] ? generic_lookup_cred+0x15/0x20 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f915f0>] ? rpcauth_lookupcred+0x70/0xc0 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa10266d8>] nfs_permission+0xa8/0x1e0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffff81198e93>] __link_path_walk+0xb3/0x1000
Aug  7 14:17:01 computer-name kernel: [<ffffffff81199abf>] __link_path_walk+0xcdf/0x1000
Aug  7 14:17:01 computer-name kernel: [<ffffffff8119a09a>] path_walk+0x6a/0xe0
Aug  7 14:17:01 computer-name kernel: [<ffffffff8119a2ab>] filename_lookup+0x6b/0xc0
Aug  7 14:17:01 computer-name kernel: [<ffffffff81226c26>] ? security_file_alloc+0x16/0x20
Aug  7 14:17:01 computer-name kernel: [<ffffffff8119b784>] do_filp_open+0x104/0xd20
Aug  7 14:17:01 computer-name kernel: [<ffffffff8128f70a>] ? strncpy_from_user+0x4a/0x90
Aug  7 14:17:01 computer-name kernel: [<ffffffff811a8a62>] ? alloc_fd+0x92/0x160
Aug  7 14:17:01 computer-name kernel: [<ffffffff81185ba9>] do_sys_open+0x69/0x140
Aug  7 14:17:01 computer-name kernel: [<ffffffff81185cc0>] sys_open+0x20/0x30
Aug  7 14:17:01 computer-name kernel: [<ffffffff8100b072>] system_call_fastpath+0x16/0x1b
Aug  7 14:17:01 computer-name kernel: INFO: task nfsidmap:13767 blocked for more than 120 seconds.
Aug  7 14:17:01 computer-name kernel:      Tainted: P           ---------------    2.6.32-431.20.3.el6.x86_64 #1
Aug  7 14:17:01 computer-name kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Aug  7 14:17:01 computer-name kernel: nfsidmap      D 000000000000000e     0 13767  13766 0x00000080
Aug  7 14:17:01 computer-name kernel: ffff88145d1e93f8 0000000000000086 0000000000000000 ffff880a5bae6080
Aug  7 14:17:01 computer-name kernel: ffff88145d1e9378 ffffffff814b1d35 0000000053e3c1ad 0000000028930cb7
Aug  7 14:17:01 computer-name kernel: ffff88145139f058 ffff88145d1e9fd8 000000000000fbc8 ffff88145139f058
Aug  7 14:17:01 computer-name kernel: Call Trace:
Aug  7 14:17:01 computer-name kernel: [<ffffffff814b1d35>] ? tcp_event_new_data_sent+0xb5/0x110
Aug  7 14:17:01 computer-name kernel: [<ffffffff81223d90>] ? key_wait_bit+0x0/0x20
Aug  7 14:17:01 computer-name kernel: [<ffffffff81223d9e>] key_wait_bit+0xe/0x20
Aug  7 14:17:01 computer-name kernel: [<ffffffff81529a8f>] __wait_on_bit+0x5f/0x90
Aug  7 14:17:01 computer-name kernel: [<ffffffff81223d90>] ? key_wait_bit+0x0/0x20
Aug  7 14:17:01 computer-name kernel: [<ffffffff81529b38>] out_of_line_wait_on_bit+0x78/0x90
Aug  7 14:17:01 computer-name kernel: [<ffffffff8109b020>] ? wake_bit_function+0x0/0x50
Aug  7 14:17:01 computer-name kernel: [<ffffffff81223d7e>] wait_for_key_construction+0x6e/0x80
Aug  7 14:17:01 computer-name kernel: [<ffffffff812243c5>] request_key+0x65/0xa0
Aug  7 14:17:01 computer-name kernel: [<ffffffffa105cb65>] nfs_idmap_request_key+0xc5/0x170 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa105d194>] nfs_idmap_lookup_id+0x34/0x80 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa105d5d5>] nfs_map_name_to_uid+0x75/0xa0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa1057504>] decode_getfattr_attrs+0xf64/0xfa0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffff810097cc>] ? __switch_to+0x1ac/0x320
Aug  7 14:17:01 computer-name kernel: [<ffffffffa10575c3>] decode_getfattr_generic.clone.0+0x83/0xe0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa1057ce0>] nfs4_xdr_dec_access+0xb0/0xc0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa1057c30>] ? nfs4_xdr_dec_access+0x0/0xc0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f90fc4>] rpcauth_unwrap_resp+0x84/0xb0 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa1057c30>] ? nfs4_xdr_dec_access+0x0/0xc0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f85923>] call_decode+0x1b3/0x800 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffff8109b020>] ? wake_bit_function+0x0/0x50
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f85770>] ? call_decode+0x0/0x800 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f8f677>] __rpc_execute+0x77/0x350 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffff8109ae27>] ? bit_waitqueue+0x17/0xd0
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f8f9b1>] rpc_execute+0x61/0xa0 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f863a5>] rpc_run_task+0x75/0x90 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f864c2>] rpc_call_sync+0x42/0x70 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa104ba9e>] _nfs4_call_sync+0x3e/0x40 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa104a7cc>] _nfs4_proc_access+0x11c/0x1a0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa104a89b>] nfs4_proc_access+0x4b/0x80 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa102658c>] nfs_do_access+0x19c/0x240 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f92625>] ? generic_lookup_cred+0x15/0x20 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa0f915f0>] ? rpcauth_lookupcred+0x70/0xc0 [sunrpc]
Aug  7 14:17:01 computer-name kernel: [<ffffffffa10266d8>] nfs_permission+0xa8/0x1e0 [nfs]
Aug  7 14:17:01 computer-name kernel: [<ffffffff81198e93>] __link_path_walk+0xb3/0x1000
Aug  7 14:17:01 computer-name kernel: [<ffffffff81199abf>] __link_path_walk+0xcdf/0x1000
Aug  7 14:17:01 computer-name kernel: [<ffffffff8119a09a>] path_walk+0x6a/0xe0
Aug  7 14:17:01 computer-name kernel: [<ffffffff8119a2ab>] filename_lookup+0x6b/0xc0
Aug  7 14:17:01 computer-name kernel: [<ffffffff81226c26>] ? security_file_alloc+0x16/0x20
Aug  7 14:17:01 computer-name kernel: [<ffffffff8119b784>] do_filp_open+0x104/0xd20
Aug  7 14:17:01 computer-name kernel: [<ffffffff811a27e8>] ? d_free+0x58/0x60
Aug  7 14:17:01 computer-name kernel: [<ffffffff8128f70a>] ? strncpy_from_user+0x4a/0x90
Aug  7 14:17:01 computer-name kernel: [<ffffffff811a8a62>] ? alloc_fd+0x92/0x160
Aug  7 14:17:01 computer-name kernel: [<ffffffff81185ba9>] do_sys_open+0x69/0x140
Aug  7 14:17:01 computer-name kernel: [<ffffffff81185cc0>] sys_open+0x20/0x30
Aug  7 14:17:01 computer-name kernel: [<ffffffff8100b072>] system_call_fastpath+0x16/0x1b

(Desculpe pelo tamanho, não tenho idéia de quais partes são úteis)
Esse padrão se repete a cada dois minutos.

De acordo com isso e this , a mensagem indica que existe algum tipo de fome de recursos. No entanto, o cliente normalmente está ocioso.

    
por Maculin 11.08.2014 / 17:32

2 respostas

1

Eu comecei apenas tentando coisas , e parece que eu tropecei na resposta.

No cliente, a linha para montar os arquivos passwd , grupo , sombra e gshadow em / etc / fstab foi assim:

server_name:/etc/sub_dir/           /etc/sub_dir/           nfs rw,sync,hard,intr 0 0

Eu mudei para isso:

server_name:/etc/sub_dir/           /etc/sub_dir/           nfs ro,sync,hard,intr,nolock,noexec,noacl,nfsvers=3 0 0

As alterações são:

  • Alterou rw para ro
  • Adicionado nolock
  • Adicionado noexec
  • Adicionado noacl
  • Adicionado nfsvers = 3 (Isso também foi sugerido por gtirloni acima, obrigado!)

Depois disso, reinicie o cliente e tudo parece estar OK. O cliente está ativo há mais de 40 minutos e está tudo bem (o problema seria exibido 10 a 15 minutos após a inicialização, portanto, 40 minutos é um registro).

Desde que eu mudei 5 coisas de uma vez, não tenho certeza do que consertou (suspeito que seja o nolock ou o nfsvers = 3). Além disso, eu ainda não tenho ideia de por que funcionou bem por cerca de um mês, então decidi ser difícil.

    
por 13.08.2014 / 21:18
5

As mensagens de erro do kernel indicam que não foi possível agendar um processo para ser executado por 120 segundos. É um uso ou contenção de CPU extremamente alto no nível de E / S.

Eu recomendaria contra o uso do NFS para compartilhar arquivos críticos do sistema, como / etc / passwd ou mesmo links simbólicos, porque as próprias operações do NFS são dependentes delas. Você poderia pensar em configurar um script para transferi-los via SCP e sobrescrever os atuais, mas, então, é preciso pensar na lógica para determinar qual servidor tem os arquivos mais recentes.

A solução a longo prazo seria adotar o LDAP.

EDITAR: com base em informações adicionais fornecidas nos comentários, a mudança do NFSv4 para o NFSv3 é uma alternativa.

    
por 12.08.2014 / 17:32