Exportar (via NFS) raiz (/) FS

2

Eu tenho 3 sistemas de CPU embutidos rodando o Linux 2.6.37, que são conectados via Ethernet. Cada CPU tem sua própria memória flash NAND. Um deles é o número de CPU "principal" 0, enquanto outros 2 são seus companheiros. Eu quero que todos os três executem a partir do mesmo sistema de arquivos raiz que residem na CPU0 para evitar a triplicação de possíveis atualizações / alterações em arquivos RootFS.

Para isso eu queria exportar o '/' (sistema de arquivos raiz) via NFS na CPU0, enquanto CPU1 & A CPU2 inicializará a partir da CPU0 via NFS (nfsroot).

Mas isso parece não funcionar - qualquer tentativa de exportar o '/' falha com a mensagem: exportfs: / não suporta exportação NFS

Existe alguma limitação principal na exportação de '/'? Se sim, alguma ideia do que pode ser feito para alcançar o objetivo? Muito obrigado pela frente.

Adição / atualização:

  1. Cada CPU sabe seu número, o carregador de inicialização (u-boot) colocará os parâmetros corretos na linha de comando do Linux para inicializar a partir do NAND (CPU0) ou do NFS (CPU1-2). Da mesma forma, o CPU0 irá iniciar o servidor NFS, enquanto o CPU1-2 não irá.

  2. Não há necessidade de arquivos "privados", pois, em qualquer caso, o sistema de arquivos raiz é montado como somente leitura também hoje. Apenas cada CPUx tem sua própria NAND privada, enquanto eu quero eliminar isso.

  3. Este não é o mesmo caso de "diskless", porque em caso de diskless algum SUBDIRECTORY é exportado como FS raiz, enquanto no meu caso todo o FS raiz deve ser exportado.

  4. Devo observar que a exportação de qualquer subdiretório da NAND funciona bem (pelo menos tentei vários). Apenas exportando '/' falha.

por leonp 20.04.2017 / 13:41

2 respostas

0

Se as CPUs compartilhassem todo o sistema de arquivos raiz, isso incluiria todas as configurações, incluindo, por exemplo, a configuração nfs. Como eles saberiam que são principais ou companheiros?

Uma abordagem seria criar partições no flash para os maiores diretórios (descubra com du -sm /*|sort -n ) e montá-los a partir dos complementares, se possível (você pode fazer com /home ou /usr , mas não com /etc ).

Mas enquanto o sistema ainda está em desenvolvimento, você pode não saber quanto espaço precisará em cada partição, portanto, talvez seja melhor ter apenas uma pequena partição /root e uma outra partição grande como /shared , que pode ser montado. Você terá que criar links simbólicos como ln -s /shared/home /home . Mas certifique-se de não bloquear seu sistema! Se você tentar mover /bin para a partição compartilhada, /bin/mount não será encontrado na inicialização.

    
por 20.04.2017 / 14:15
0

Não-recursivamente bind-mount o diretório raiz em outro lugar, por exemplo /srv/nfs/root :

mount --bind / /srv/nfs/root

Em seguida, exporte /srv/nfs/root .

Não faça uma ligação recursiva ( --rbind ) ou então, diretórios como / proc, / sys e / dev também serão exportados.

    
por 15.08.2017 / 16:29