Acessar arquivos localizados no sistema de arquivos subjacente de um ponto de montagem do NFS

8

Talvez seja uma solicitação estranha, mas é o oposto da pergunta detalhada em:

É possível visualizar o conteúdo de uma montagem NFS subjacente sem desmontar o conteúdo NFS?

Eu tenho um acordo em que os servidores Linux em vários sites remotos montam um compartilhamento NFS de um servidor central (todos os CentOS 5.x). Pense: /opt/softwareou algo semelhante.

Se tudo estiver bem, os sistemas do cliente montam a exportação NFS do servidor principal e são executados sem incidentes. Os dados contidos no compartilhamento não são alterados com frequência (talvez semanalmente).

Estou preocupado com a situação em que há uma perda de conectividade com o servidor NFS principal (interrupção do servidor NFS, corte de fibra etc.). Como os dados compartilhados não são alterados com frequência, eu gostaria que esses sistemas fossem executados de maneira independente se perderem a montagem do NFS.

Digamos que a montagem vá embora, eu gostaria de usar os arquivos locais localizados /opt/softwareembaixo da montagem NFS no mesmo local. Além disso, eu manteria uma sincronização diária desses arquivos.

A montagem do NFS é de leitura / gravação, pois as alterações no volume montado precisam ser possíveis em qualquer site do cliente.

Isso é possível? Como faço para acessar (ou substituir) os arquivos no diretório subjacente? Possivelmente haveria problemas de tempo limite? Existem opções / dicas de montagem que podem ajudar com isso?

ewwhite
fonte

Respostas:

16
mount -o bind / /mnt

Quando você olha para / mnt / opt / software, encontrará os arquivos (se houver) que estão embaixo da montagem em / opt / software.

Seth Robertson
fonte
Mas isso montaria todo o sistema de arquivos raiz em / mnt. Hmm ...
ewwhite 19/05
1
Assim? Que mal isso vai causar? Apenas permite sincronizar os arquivos que você deseja. Você pode até colocá-lo em / private / root, em que / private é 700 root, para que ninguém mais possa acessar esses arquivos, não que isso prejudicaria se eles pudessem, pois eles têm exatamente as mesmas permissões. Parece basicamente uma resposta exata para sua pergunta. Agora, se sua pergunta é como recuperar uma vez que o servidor NFS desaparece, isso é completamente diferente e provavelmente envolve desmontagem forçada. Isso invalidará e, portanto, interromperá metade de seus processos, forçando uma reinicialização de qualquer maneira.
Seth Robertson
Isso estava próximo, mas decidi montar o diretório ao qual eu precisava acessar com o parâmetro bind em outro local no sistema de arquivos.
E27h11
Na verdade, isso é muito útil em um caso específico e eu gostaria de saber sobre essa opção há muito tempo. Acabei de entrar nessa situação novamente. Basicamente, eu tinha um diretório / usr que estava vinculado ao sistema de arquivos raiz e queria movê-lo para seu próprio sistema de arquivos para recuperar espaço na raiz. Então, depois de criar usr e migrar os dados para lá e reiniciar para montar o novo usr, como você remove facilmente os dados antigos / usr? Uma maneira é usar o modo de usuário único e esperar que nada esteja usando arquivos lá. Outra maneira é usar esse truque de ligação e remover o diretório de dados de um caminho alternativo.
Deltaray 8/02
8

Isso é possível usando a mount --bindopção

Since Linux 2.4.0 it is possible to remount part of the file hierarchy somewhere else. The call is
   mount --bind olddir newdir
After this call the same contents is accessible in two places.

Então eu pude mount --bind /opt/software /foo

E, em seguida, aplique a montagem do NFS /opt/software, mantendo a capacidade de ver os arquivos subjacentes em /foo.

ewwhite
fonte
3

O que você pode precisar, já que os arquivos são relativamente estáticos, é rsync. A menos que vários clientes remotos tenham a capacidade de alterar arquivos. Se os dados são essencialmente somente leitura, por que não sincronizar novamente duas vezes por dia por meio de um trabalho semelhante ao cron, em cada máquina. Novamente, posso estar perdendo o objetivo, mas se os dados no NFS forem basicamente somente leitura, isso poderá ser feito.

slashdot
fonte
Tradicionalmente, o Rsync faria sentido, mas há uma chance de os arquivos serem modificados em qualquer site. Se eu estivesse montando somente leitura, o rsync seria uma escolha melhor. A menos que você sabe de uma solução de sincronização bidirecional ...
ewwhite
Uma coisa que você pode fazer com o rsync é configurar um trabalho cron que verifique os registros de data e hora nos seus arquivos em cada máquina, e talvez faça isso a cada 5 minutos. Assim que uma atualização é notada, envie os arquivos para nfs e, ao mesmo tempo, talvez crie um arquivo acionador que todas as outras máquinas verifiquem em um período fixo. Assim que eles veem esse gatilho, todos executam o rsync para obter os arquivos mais atualizados do NFS.
Slashdot
Eu posso tentar o Unison como uma abordagem para resolver isso.
Ewwhite 23/05