Não, isso não é possível com uma única exportação NFS no servidor nfs baseado em kernel.
Como exports(5)
manual diz:
The file /etc/exports contains a table of local physical file systems on an NFS server that are accessible to NFS clients.
No entanto, você pode exportar partes da árvore e remontá-las nos clientes com bind.
Links simbólicos
Outro paliativo é usar links simbólicos:
/server_1
hourly.0 -> /backups/hourly.0/server\ 1
hourly.1 -> /backups/hourly.1/server\ 1
...
/server_2
hourly.0 -> /backups/hourly.0/server\ 2
hourly.1 -> /backups/hourly.1/server\ 2
...
Para isso funcionar, você teria que exportar toda a árvore de backups, bem como os diretórios do servidor. Isso significa que, com links simbólicos, cada servidor verá os backups dos outros servidores.
opção nohide
Existem nohide
e crossmount
opções no arquivo exports
. Só funciona para exportações de servidor único. Eu nunca usei isso por causa dos muitos avisos que acompanham esta opção nos documentos, como a possibilidade de conflito de número de inode .
Como você está exportando árvores de diretórios do mesmo sistema de arquivos físico, nunca encontrará este conflito de inode number ou o deadlock causado por um servidor intermediário morto que pode ocorrer ao exportar a subárvore montada pelo NFS.
Eu não acho que o servidor NFS do kernel Linux deixaria os sistemas de arquivos montados com a opção bind visível no nohide.
Fazendo o contrário
Eu estava pensando sobre a questão e percebi que provavelmente o caminho certo para abordar isso é fazê-lo ao contrário. Isso é fazer com que as árvores de diretórios de cada servidor sejam exportadas. Mova os dados para os locais apropriados e remonte a árvore / backups com mount -o bind
.
Esse é o seu sistema de arquivos que se parece com
/share/server1/1_Hour_Ago
2_Hour_Ago
...
/share/server2/1_Hour_Ago
2_Hour_Ago
...
Seu fstab seria
/share/server1/1_Hour_Ago /backups/hourly.0/server_1 none rw,bind 0 0
/share/server1/2_Hour_Ago /backups/hourly.1/server_1 none rw,bind 0 0
...
/share/server2/1_Hour_Ago /backups/hourly.0/server_2 none rw,bind 0 0
/share/server2/2_Hour_Ago /backups/hourly.1/server_2 none rw,bind 0 0
...
Seu exports
seria apenas
/share/server1 server1(rw,no_subtree_check)
/share/server2 server2(rw,no_subtree_check)