automount nfs: autofs timeout settings para servidores não confiáveis ​​- como evitar o desligamento?

18

Estou executando um servidor pequeno para nosso compartilhamento simples. É principalmente um servidor de arquivos com alguns serviços adicionais. Os clientes são máquinas Linux (principalmente o Ubuntu, mas também outras distros) e alguns Mac (-Book) no meio (mas não são importantes para a questão). O servidor está executando o Ubuntu 11.10 (Oneiric Ocelot) 'Server Edition', o sistema no qual eu faço minhas configurações e testes executa o 11.10 'Desktop Edition'. Estamos executando nossos compartilhamentos com o Samba (com os quais estamos mais familiarizados) há algum tempo, mas depois migramos para o NFS (porque não temos nenhum usuário do Windows na LAN e queremos testá-lo) e até agora tudo funciona bem .

Agora, quero configurar a montagem automática com autofs para facilitar as coisas (até agora todos montam os compartilhamentos manualmente, quando necessário). A montagem automática parece funcionar também. O problema é que o nosso "servidor" não funciona 24 horas por dia, 7 dias por semana, para economizar energia (se alguém precisar de coisas do servidor, ele será ligado e desligado depois, para que funcione apenas algumas horas por dia). Mas, desde a configuração dos autofs, os clientes desligam com frequência quando o servidor não está em execução.

  • Posso iniciar todos os clientes perfeitamente, mesmo quando o servidor não está em execução.

  • Mas quando eu quero exibir um diretório (no terminal ou nautilus), que contém links simbólicos para um compartilhamento /nfsenquanto o servidor não está em execução, ele fica paralisado por pelo menos dois minutos (porque os autofs não podem se conectar ao servidor, mas mantêm tentando, eu assumo).

    • Existe uma maneira de evitar isso? Para que a montagem seja atrasada até que uma alteração no diretório ou até que o conteúdo desse diretório seja acessado? Não quando "olhando" para um link para um compartilhamento abaixo /nfs? Acho que não, mas talvez seja possível não tentar acessá-lo por tanto tempo? E apenas me dê um diretório vazio ou um "não é possível encontrar / conectar-se a esse diretório" ou algo assim.
  • Quando o servidor está em execução, tudo funciona bem.

  • Mas quando o servidor é desligado, antes que um compartilhamento seja desmontado, as ferramentas (como dfou ll) são interrompidas (supondo que eles acham que o compartilhamento ainda está ativo, mas o servidor não responde mais).

    • Existe uma maneira de desmontar compartilhamentos automaticamente, quando a conexão é perdida?
  • Além disso, os clientes não irão desligar ou reiniciar quando o servidor estiver inoperante e ainda tiverem compartilhamentos montados. Eles ficam (infinitamente como parece) " matando os processos restantes " e nada parece acontecer.

Eu acho que tudo se resume a valores de tempo limite para montar e desmontar. E talvez para remover todos os compartilhamentos quando a conexão com o servidor for perdida.

Então, minha pergunta é: como lidar com isso? E como um bônus: existe uma boa maneira de vincular dentro /nfssem a necessidade de montar os compartilhamentos reais (uma opção autofs ou talvez usar um pseudo FS para o /nfsqual é substituído quando a montagem acontece ou algo assim)?

Minha configuração

A configuração do NFS é bastante básica, mas nos serviu bem até agora (usando o NFSv4 ):

/ etc / default / nfs-common

NEED_STATD=
STATDOPTS=
NEED_IDMAPD=YES
NEED_GSSD=

/etc/idmapd.conf

[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

/ etc / exportações

/srv/   192.168.0.0/24(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)

Sob a raiz de exportação /srv, temos dois diretórios com bind:

/ etc / fstab (servidor)

...
/shared/shared/      /srv/shared/      none    bind  0 0
/home/Upload/        /srv/upload/      none    bind  0 0

O primeiro é principalmente somente leitura (mas eu imponho isso através de atributos de arquivo e propriedade, em vez de configurações do NFS) e o segundo é rw para todos. Nota: Eles não têm entradas extras no / etc / exportações , montando-os separadamente funciona embora.

No lado do cliente, eles são configurados /etc/fstabe montados manualmente, conforme necessário ( mortoné o nome do servidor e resolve bem).

/ etc / fstab (cliente)

morton:/shared  /nfs/shared nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0
morton:/upload  /nfs/upload nfs4    noauto,users,noatime,soft,intr,rsize=8192,wsize=8192    0   0

Para a configuração do autofs , removi as entradas dos /etc/fstabclientes e configurei o restante da seguinte maneira:

/etc/auto.master

/nfs    /etc/auto.nfs

Primeiro, amarrei o executável fornecido /etc/auto.net(você pode dar uma olhada aqui ), mas ele não monta nada automaticamente para mim. Depois, escrevo um com /etc/auto.nfsbase em alguns HowTos que encontrei on-line:

/etc/auto.nfs

shared  -fstype=nfs4  morton:/shared
upload  -fstype=nfs4  morton:/upload

E meio que funciona ... Ou funcionaria se o servidor fosse executado 24/7. Portanto, temos os problemas quando um cliente inicializa sem o servidor em execução ou quando o servidor fica inativo enquanto os compartilhamentos ainda estavam conectados.

Brutus
fonte

Respostas:

2

Usando qualquer sistema de montagem, você deseja evitar situações em que o Nautilus lista o diretório que contém uma montagem que pode ou não ser montada. Portanto, com autofs, não crie montagens em, por exemplo, / nfs. Se o fizer, quando você usar o Nautilus para listar o 'Sistema de Arquivos', ele tentará criar quaisquer montagens que devam existir no / nfs, e se essas tentativas de montagem falharem, leva alguns minutos para desistir.

Então, o que fiz foi alterar o auto.master para criar as montagens em / nfs / mnt.

Isso corrigiu o problema para mim. Eu só recebo um longo atraso se tentar listar o conteúdo de / nfs / mnt, o que posso evitar facilmente.

Tim Passingham
fonte
20

Monte o compartilhamento NFS nos clientes usando as opções de montagem "bg, intr, hard".

O mais importante no seu caso é "bg" para segundo plano - o que instrui o sistema a não bloquear quando o servidor não estiver disponível.

"intr" para interrupção - para que você possa matar montagens suspensas no cliente com o comando kill.

"hard" é o oposto de "soft". A diferença é que "hard" continuará tentando infinitamente, enquanto "soft" recuará exponencialmente suas tentativas quando o servidor não estiver disponível.

Nils
fonte
Obrigado pela resposta. Não posso testar agora porque não estou em casa, mas depois de tentar obter a página de manual (novamente), recebi mais algumas perguntas: harde me bgparece contra-intuitivo no começo. Quero que a montagem não tente novamente e volte imediatamente se cair. intrparece bom, mas também parece não funcionar mais: " A opção de montagem intr / nointr está obsoleta após o kernel 2.6.25. Somente o SIGKILL pode interromper uma operação NFS pendente nesses kernels e, se especificado, essa opção de montagem é ignorada para fornecer compatibilidade com versões anteriores. com kernels mais antigos. "?
Brutus
2
O disco tentará novamente sem parar - o bg NÃO bloqueará se a montagem não for possível no momento. O resultado será que ele será montado quando disponível, mas todas as outras operações continuarão. INTR parece ser o padrão agora - o que é ótimo. No começo, você tinha que reiniciar o cliente suspenso se o servidor NFS morresse ...
Nils
Eu só testei, mas acrescentando hard,bgque /etc/auto.masterparece mudar nada. Um time ls -l ~(meu diretório de usuário contém um link simbólico para /nfs/upload) ainda leva mais de dois minutos, quando o servidor não está sendo executado.
Brutus
Você reiniciou os autofs? Somente as alterações do submapa serão propagadas sem a reinicialização dos autofs.
Nils
Eu fiz:sudo reload autofs && sudo restart autofs
Brutus
7

Eu brinquei um pouco mais com algumas das opções da página de manual. Todos bg,hard, bg,soft, fg,harde fg,softdá-me voltar vezes de mais de dois minuetos.

A configuração retrans=1,retry=0(combinada com qualquer uma das opções acima), porém, me dá tempos em torno de três segundos. Bastante decente. Embora eu não tenha certeza do que cada combinação significa. Vai cavar mais longe.

Também me deparei com as opções de autofs MOUNT_WAITe UMOUNT_WAIT. Não consegui obter resultados diferentes com eles, mas continuarei tentando. Parece uma boa maneira de usar a opção NFS "mais segura" (mais tentativas, etc.), mas com tempos de retorno rápidos para autofs, ou não?

Brutus
fonte
11
Há também parecem ser outras opções, como rsize=32768,wsize=32768,noatimecomo observado aqui: techrepublic.com/blog/opensource/...
Ehtesh Choudhury
-1

Para configurar um sistema de arquivos NFS para montar automaticamente sempre que você iniciar o sistema Red Hat Linux, você precisará adicionar uma entrada para esse sistema de arquivos NFS ao arquivo / etc / fstab. O arquivo / etc / fstab contém informações sobre todos os diferentes tipos de sistemas de arquivos montados (e disponíveis para serem montados) para o seu sistema Red Hat Linux. EX:: nfs Corresponde ao nome do host, endereço IP ou nome de domínio totalmente qualificado do servidor que exporta o sistema de arquivos. O é o caminho para o diretório exportado. Especifica onde, no sistema de arquivos local, montar o diretório exportado. Este ponto de montagem deve existir antes que o / etc / fstab seja lido ou a montagem falhará. A área especifica opções de montagem para o sistema de arquivos. Por exemplo, se a área de opções indicar rw, suid, o sistema de arquivos exportado será montado como leitura e gravação e o usuário e o ID do grupo definidos pelo servidor serão usados. Observe que parênteses não devem ser usados ​​aqui

M.Zaman
fonte