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
/nfs
enquanto 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.
- 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
Quando o servidor está em execução, tudo funciona bem.
Mas quando o servidor é desligado, antes que um compartilhamento seja desmontado, as ferramentas (como
df
oull
) 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 /nfs
sem a necessidade de montar os compartilhamentos reais (uma opção autofs ou talvez usar um pseudo FS para o /nfs
qual é 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/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 dos /etc/fstab
clientes 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.nfs
base 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.
hard
e mebg
parece contra-intuitivo no começo. Quero que a montagem não tente novamente e volte imediatamente se cair.intr
parece 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. "?hard,bg
que/etc/auto.master
parece mudar nada. Umtime 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.sudo reload autofs && sudo restart autofs
Eu brinquei um pouco mais com algumas das opções da página de manual. Todos
bg,hard
,bg,soft
,fg,hard
efg,soft
dá-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_WAIT
eUMOUNT_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?fonte
rsize=32768,wsize=32768,noatime
como observado aqui: techrepublic.com/blog/opensource/...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
fonte