
Estamos executando o nfs em um cluster de isilons e experimentando intermitentemente um grande atraso ao criar um diretório em uma máquina e lê-lo em outra (cerca de 30s).
Isso parece acontecer apenas quando a rede está bastante ocupada, mas foi sugerido que executar 'ls' no diretório pai antes de tentar ler o novo diretório forçará o NFS a armazenar novamente em cache.
Isso parece certo?
Responder1
Parece que você precisa ajustar as opções de montagem acdirmin/acdirmax em seus clientes para alterar os limites superior e inferior da idade do cache das informações do diretório. Esses 30 segundos correspondem ao acdirmin padrão de 30 segundos, o que significa que as informações devem estar no cache por pelo menos 30 segundos antes que o cliente considere sair e atualizá-las.
Veja se ajustar o acdirmin para 15 ou 10 segundos ajuda.
Além disso, o motivo pelo qual o 'ls' pode estar ajudando é que ele está causando a ocorrência de um stat() em "." o que poderia estar invalidando o cache dessa entrada. Lembro-me de termos que modificar algumas de nossas ferramentas para stat() um arquivo ou diretório antes de open() para validar que o item estava lá para algumas de nossas coisas NFS.
Responder2
Então são outros clientes percebendo que o arquivo foi criado? (ou inclui alterações na quantidade de dados que os arquivos contêm).
Todas as operações estão em um único diretório, pois os isilons têm problemas com o desempenho dos metadados em um único diretório.
Tem certeza de que não é o servidor que está gravando o arquivo que está fazendo o cache, se você logar no isilon e observar o diretório do "appliance" você vê os arquivos aparecendo no servidor ao mesmo tempo que o cliente diz que tem escrevê-lo.
Por curiosidade, as duas máquinas estão montando o mesmo tijolo isilon (embora não deva importar, seria interessante).
Quais opções de montagem você tem? (O nfs v2 faz alguma diferença (mais uma curiosidade, não tem readir+))