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. "?