O NFS é capaz de preservar a ordem de operações?

1

Eu tenho um host sem disco 'A', que tem um diretório NFS montado no servidor 'B'. Um processo em A grava em dois arquivos F1 e F2 nesse diretório e um processo em B monitora esses arquivos em busca de alterações. Suponha que B aponte para mudanças mais rápidas do que A é esperado para fazê-las. O processo A procura a cabeça dos arquivos, grava dados e libera. O processo B procura a cabeça dos arquivos e faz leituras.

qualquer garantias sobre como a ordem das mudanças realizadas por A será detectada em B?

Especificamente, se A grava alternadamente em um arquivo e, em seguida, no outro, é razoável esperar que B notará alterações alternadas em F1 e F2? Ou poderia B detectar uma série de mudanças em F1 e depois em uma série em F2?

Eu sei que há muitas suposições embutidas na questão. Por exemplo, estou praticamente certo de que, mesmo operando em apenas um arquivo, se A executar 100 operações no arquivo, B poderá ver um número menor de alterações que fornecem o mesmo resultado, devido ao armazenamento em cache de algumas das ações em A antes eles são comunicados a B. E, é claro, haveria problemas com o acesso simultâneo a arquivos, mesmo se o NFS não estivesse envolvido e o processo de leitura e gravação estivesse sendo executado no mesmo sistema de arquivos real .

A razão pela qual estou até colocando a questão aqui é que parece que na maioria das vezes, a configuração descrita acima faz detectar as mudanças em B na mesma ordem em que são feitas em A , mas ocasionalmente alguns eventos acontecem em ordem transposta. Então, vale a pena tentar fazer isso funcionar? Existe alguma maneira de ajustar o NFS para que funcione, talvez configurações de cache ou algo assim? Ou o comportamento refinado como esse é muito esperado do NFS?

    
por JustJeff 11.03.2010 / 01:43

3 respostas

1

Isso

Assume that B polls for changes

e

Specifically, if A alternately writes to one file, and then the other, is it reasonable to expect that B will notice alternating changes to F1 and F2? Or could B conceivably detect a series of changes on F1 and then a series on F2?

significa que não importa o que garanta que o sistema de arquivos faça com que haja uma condição de corrida aqui.

Ou seja: você não pode contar contar com a ordem em que o processo B detecta as alterações.

Considere o que acontece se

  1. Pesquisas B Foo
  2. A escreve para o Foo
  3. A escreve para o Bar
  4. Barra de enquetes B
por 12.03.2010 / 18:48
2

Eu não confiaria em pedidos consistentes em toda a rede. O próprio NFS geralmente garante apenas que após um cliente fecha um arquivo, outro cliente abrindo ele deve ver essas mudanças. (E isso não diz nada sobre o comportamento observado no sistema de arquivos do servidor).

Quais são as suas versões de cliente, servidor e protocolo NFS? O cliente NFS do kernel Linux, por exemplo, alterou os comportamentos de cache de atributos (padrão) por volta de 2.6.18, e você pode montar com -o sync para nenhum cache de gravação (dados ou atributos). O NFSv4 também permite mais controle sobre o comportamento do cache do que o NFSv3.

    
por 11.03.2010 / 21:40
0

Você pode querer ver a resposta para outra pergunta , que liga a uma descrição de NTFS transacional. É muito legal e pode ajudar sua situação.

    
por 11.03.2010 / 07:11