É seguro fazer links simbólicos para toda a máquina?

6

Eu tenho uma máquina virtual com quantidade limitada de armazenamento que se tornou um problema. Eu tenho meu diretório home vinculado ao armazenamento NFS em um servidor e tem funcionado sem um problema. Mas agora preciso vincular toda a minha máquina ao NFS, assim como estou constantemente com pouco armazenamento!

Só estou querendo saber se é seguro vincular a máquina inteira (isto é, o inteiro: / ) ao NFS?

Eu quero usar os seguintes comandos para fazer isso:

/storage/nfs é basicamente meu NFS montado.

$ mkdir /storage/nfs/myvmroot
$ sudo cp -rp /* /storage/nfs/myvmroot
$ sudo mv /* /old-root
$ sudo ln -s /storage/nfs/myvmroot /
    
por zirodec 14.11.2017 / 14:29

2 respostas

10

Você não pode tornar / um link simbólico. Isso simplesmente não é possível. / tem que ser um diretório. Se / fosse um link simbólico, ele apontaria para algum caminho - e para resolver esse caminho, o sistema passaria por / , que é um link simbólico que precisa ser resolvido ... Um link simbólico que aponta sob ele mesmo sempre causa um erro quando é desreferenciado, mas em qualquer caso, você não poderá fazer / um link simbólico já que ele já é um diretório existente.

O que você pode fazer, e vai conseguir o efeito que você queria, é montar um sistema de arquivos NFS como o sistema de arquivos raiz, em vez de montar um sistema de arquivos local como normalmente é feito. Isso é possível e suportado pelo Ubuntu. Há um tutorial no wiki da comunidade Ubuntu (ele cobre uma instalação completa sem disco, você pode pular as partes sobre o TFTP se você continuar /boot localmente). Mover um sistema existente é um pouco diferente de fazer a instalação inicial, portanto, não espere seguir o tutorial ao pé da letra.

Você precisa garantir que o initramfs contenha os drivers necessários. O initramfs é gerado pelo comando update-initramfs baseado no atual configuração do sistema e nos arquivos de configuração em /etc/initramfs-tools . Você precisará adicionar explicitamente as configurações do NFS para /etc/initramfs-tools/initramfs.conf , pelo menos, adicione uma linha BOOT=nfs (acho que os outros parâmetros podem ser especificados no momento da inicialização, mas BOOT=nfs é necessário para incluir os drivers NFS e DEVICE=… também pode ser necessário para incluir o driver Ethernet) . Depois de modificar o /etc/initramfs-tools/initramfs.conf , execute update-initramfs .

Eu recomendo manter /boot como uma partição local, separada de / , se ainda não estiver.

Não use cp -rp /* /storage/nfs/myvmroot para copiar arquivos , isso não funcionaria. Você precisa excluir sistemas de arquivos montados da cópia. Passe a opção -x . Além disso, use -a em vez de -rp , existem atributos que -rp não preserva.

cp -ax /* /storage/nfs/myvmroot

ou, caso a cópia seja interrompida

rsync -axAX / /storage/nfs/myvmroot

Outra opção, provavelmente mais fácil, é manter o sistema de arquivos raiz local e mover apenas parte dele. Você geralmente obterá desempenho e confiabilidade significativamente melhores de um sistema de arquivos local do que do NFS, mesmo com um servidor rápido e uma rede rápida.

Você não pode simplesmente cortar em qualquer lugar: o que você coloca remotamente não deve ser necessário muito cedo no processo de inicialização. Eu acho que cortar em /usr não é oficialmente suportado pelo Ubuntu atualmente, mas é pelo Debian distribuição Debian, então ele tem uma chance de funcionar. Outro local com boas chances de trabalho é /usr/share . Eu não recomendo /var , é provável que seja um incômodo se algo quebrar, já que é onde os logs são mantidos. (Se o cliente NFS estiver insatisfeito com alguma coisa e tentar gravar logs em /var/log , mas /var não estiver respondendo, boa sorte para diagnosticar a falha.)

    
por Gilles 14.11.2017 / 18:29
10

Não. Isso tornaria sua máquina virtual não inicializável. O sistema NFS é carregado em um certo ponto no processo de inicialização. Antes deste ponto, nenhum arquivo no NFS estará acessível. Isso significa que a máquina não poderá acessar os arquivos necessários para inicializar. Estes incluem (mas não estão limitados a) o próprio kernel, o shell padrão /bin/sh e tudo sob /bin , o que inclui os comandos necessários para montar o compartilhamento NFS.

Então, não, isso não é uma boa ideia. Mais importante, não é necessário. A maioria dos diretórios em / não é muito grande. Basta identificar o que está ocupando o espaço e colocar esse aí. Você deve conseguir mover um dos itens a seguir sem problemas importantes:

  • /var/cache
  • /usr/local
  • O /usr em si também pode ser movido, mas verifique se nada essencial está em /usr/local/bin . Provavelmente não será, mas confira.

Esses provavelmente são os que ocupam o espaço de qualquer maneira.

    
por terdon 14.11.2017 / 15:46