arquivo NFS com o mesmo nome, mas conteúdo diferente dependendo do host

3

Eu tenho cluster usando o NFS com um programa myprogram que grava em um local fixo, por exemplo, %código%. Isso significa que, se você executar /home/sharedfs/somedir/somefile.txt de cada nó, todos eles gravarão no myprogram compartilhado, mas isso não é desejável.

Então, eu estava pensando: existe uma maneira de criar um arquivo para cada nó e criar um link flexível no NFS, de modo que o link em cada nó aponte para um arquivo específico do nó diferente? Isto é, tendo

/home/sharedfs/somedir/somefile.node0.txt
/home/sharedfs/somedir/somefile.node1.txt
/home/sharedfs/somedir/somefile.nodeN.txt

e

/home/sharedfs/somedir/somefile.txt -> link to somefile.node0.txt only on node0
/home/sharedfs/somedir/somefile.txt -> link to somefile.node1.txt only on node1
/home/sharedfs/somedir/somefile.txt -> link to somefile.nodeN.txt only on nodeN

Isso é possível?

Outra opção é ter diferentes diretórios /home/sharedfs/somedir/somefile.txt , que são montados de forma diferente para cada nó, para que somedir aponte para um diretório diferente (não compartilhado) em cada nó.

Qualquer ideia é bem vinda!

    
por AkiRoss 06.06.2014 / 11:19

1 resposta

3

Suponho que quando você diz que myprogram escreve em um arquivo fixo, significa que você não pode modificar este programa para que ele grave em outro arquivo (talvez você não tenha o código-fonte).

Também tenho certeza de que o que você deseja fazer não é possível com o NFS. De qualquer forma, a solução que você mencionou usando diferentes pontos de montagem funcionará, mas não é muito prática se você tiver muitos nós.

Seu programa grava o arquivo somefile.txt usando um caminho absoluto ou apenas o arquivo no diretório atual? Se estiver no diretório atual, você pode apenas criar alguns subdiretórios como:

/home/sharedfs/somedir/nodeN/somefile.txt

e execute myprogram no diretório correspondente:

cd /home/sharedfs/somedir/nodeN
./myprogram

Em seguida, em cada nó (nodeN), use um link simbólico em um diretório local, como algo assim:

ln -s /home/sharedfs/somedir/nodeN/somefile.txt /usr/local/somefile.txt

O arquivo somefile.txt pode ser acessado em cada nó com o mesmo nome, mas aponta para um arquivo diferente de acordo com o nó. Se você quiser acessar o arquivo de outro nó, isso pode ser feito através do sistema de arquivos montado.

    
por 06.06.2014 / 16:38

Tags