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.