automount nfs: configurações de tempo limite de autofs para servidores não confiáveis - como evitar o desligamento?

18

Estou executando um pequeno servidor para o nosso compartilhamento simples. É principalmente um servidor de arquivos com alguns serviços adicionais. Os clientes são máquinas Linux (principalmente Ubuntu, mas algumas outras Distros também) e alguns Mac (-Book) s entre (mas não são importantes para a questão). O servidor está executando o Ubuntu 11.10 (Oneiric Ocelot) 'Server Edition', o sistema do qual eu faço minha configuração e teste roda o 11.10 'Desktop Edition'. Nós onde rodamos nossos compartilhamentos com o Samba (com o qual estamos mais familiarizados) por algum tempo, mas depois migramos para o NFS (porque não temos usuários do Windows na LAN e queremos testá-lo ) e até agora tudo funciona bem .

Agora, quero configurar a montagem automática com autofs para suavizar 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 poupar energia (se alguém precisar de coisas do servidor, ele liga e desliga depois, então ele funciona apenas algumas horas por dia). Mas desde a configuração do autofs, os clientes desligam frequentemente quando o servidor não está em execução.

  • Eu posso iniciar todos os clientes bem, 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 em /nfs enquanto o servidor não está em execução, ele fica paralisado por pelo menos dois minutos (porque o autofs não pode conectar ao servidor, mas continua tentando, eu presumo).

    • Existe uma maneira de evitar isso? De modo que a montagem seria adiada até uma mudança no diretório ou até que o conteúdo desse diretório fosse acessado? Não quando "procura" em um link para um compartilhamento em /nfs ? Eu 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 consigo encontrar / me conectar a esse diretório" ou algo assim.
  • Quando o servidor está em execução, tudo funciona bem.

  • Mas quando o servidor é desligado, antes um compartilhamento é desmontado, ferramentas (como df ou ll ) são interrompidas (presumindo que eles acham que o compartilhamento ainda está ativo, mas o servidor venceu responda mais).

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

Acho que tudo se resume a valores de tempo limite para montagem e desmontagem. 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 link dentro de /nfs sem a necessidade de montar os compartilhamentos reais (uma opção autofs ou talvez usando um pseudo FS para /nfs que é substituído quando a montagem acontece ou algo parecido) ?

Minha configuração

A configuração NFS é bem básica, mas nos serviu bem até agora (usando 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 / exports

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

Sob a raiz de exportação /srv , obtivemos 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 de NFS) e o segundo é rw para todos. Nota: Eles não têm entradas extras em / etc / exports , montando-os separadamente funciona embora.

No lado do cliente, eles são configurados em /etc/fstab e 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 de /etc/fstab nos clientes e defini o resto da seguinte forma:

/etc/auto.master

/nfs    /etc/auto.nfs

Primeiro eu ativei o executável fornecido /etc/auto.net (você pode dar uma olhada nele aqui ) mas ele não será automaticamente monte qualquer coisa para mim. Em seguida, escrevo um /etc/auto.nfs com base em alguns HowTos encontrados on-line:

/etc/auto.nfs

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

E isso funciona ... Ou funcionaria se o servidor fosse executado 24 horas por dia, 7 dias por semana. Portanto, temos as restrições quando um cliente é inicializado sem o servidor em execução ou quando o servidor fica inativo enquanto os compartilhamentos ainda estão conectados.

    
por Brutus 15.01.2012 / 20:39

4 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 o autofs, não crie montagens em, por exemplo, / nfs. Se você fizer isso, quando usar o Nautilus para listar o 'Sistema de Arquivos', ele tentará criar as montagens que existirem em / nfs, e se essas tentativas falharem, leva alguns minutos para desistir.

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

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

    
por 22.11.2013 / 23:12
20

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

O mais importante no seu caso é "bg" para background - que diz ao sistema para não bloquear quando o servidor não estiver disponível.

"intr" para interrupção - assim você pode matar as montagens suspensas no cliente com o comando kill.

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

    
por 15.01.2012 / 21:46
6

Eu brinquei mais com algumas das opções da man page. Todos os bg,hard , bg,soft , fg,hard e fg,soft me retornam mais de dois minutos.

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

Também me deparei com as opções autofs MOUNT_WAIT e UMOUNT_WAIT . Eu não fui capaz de obter alguns resultados diferentes com eles, mas vou continuar tentando. Parece que lika é uma boa maneira de usar "mais seguro" (também mais tentativas, etc.) Opção NFS, mas tempos de retorno rápido para autofs, ou não?

    
por 18.01.2012 / 18:15
-1

Para configurar um sistema de arquivos NFS para montar automaticamente toda vez que você iniciar seu sistema Red Hat Linux, você precisa adicionar uma entrada para o 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 O 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. O especifica onde no sistema de arquivos local para montar o diretório exportado. Este ponto de montagem deve existir antes de o / etc / fstab ser 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 read-write e o usuário e o groupid definidos pelo servidor serão usados. Note que os parênteses não devem ser usados aqui

    
por 03.05.2013 / 16:13