NFS: o cliente não vê novos arquivos criados no servidor (cache?)

1

O servidor NFS é um SLES11SP3, aqui está a declaração de exportação:

/media/data *domain.com(rw,sync,no_root_squash,fsid=1)

Eu suspeito que isso é um problema de cache no cliente (RHEL6), mas acredito que eu desliguei todo o cache, ainda assim o problema continua.

Como os problemas são exibidos:

No servidor eu faço um touch /media/data/test . O arquivo não é exibido no cliente, mesmo que eu aguarde alguns minutos.

Se eu touch /media/data (o diretório) no servidor, ele mostra. Também aparece quando eu touch /data/test2 do cliente.

O que eu tentei no cliente:

# original
server:/media/data   /data  nfs   rw,soft,vers=3,rsize=1048576,wsize=1048576,mountvers=3,sync,lookupcache=none
# mod 1 (remove parameters which have defaults: size, mountvers; add noac)
server:/media/data   /data  nfs   rw,soft,vers=3,sync,lookupcache=none,noac 0 0

Eu também tentei montar usando hard e especifique actimeo=1 , sem efeito.

Eu vi este e este . Não ajuda também.

Atualização # 1

Parece que o sistema de arquivos subjacente é especial.

O sistema de arquivos subjacente no servidor é um volume do Novell NSS.

O NSS tem certas propriedades exclusivas, como mapear o tempo de criação do arquivo para o ctime no Linux (que nativamente é o tempo mudança lá) ).

Significado: Ao modificar o conteúdo do diretório, somente o mtime é atualizado e não o ctime. Aparentemente, o cliente RHEL NFS não considera este um motivo suficiente para atualizar seu cache, enquanto os clientes SuSE NFS parecem ser corrigidos para isso.

Quais são as opções?

  • Altere as propriedades no volume NSS (que pode, opcionalmente, mapear ctime para Change Time e não Creation Time, embora seja necessário investigar as repercussões dessa configuração em todo o sistema de arquivos)
  • Consiga que o Redhat considere apenas o mtime e não o ctime (por que eles estão mesmo assim?)
  • Solução alternativa: toque nos diretórios antes de listá-los .......
por Marki 07.04.2015 / 16:13

1 resposta

0

Isso ocorreu devido a um "recurso" do NSS (Novell Storage Services) chamado noCtimeIsMetadataModTime, que mapas o NSS cria tempo para o Linux ctime .

Quando alteramos um arquivo no servidor, a hora modificada do diretório pai é atualizada, mas não a hora da "alteração", como normalmente é o caso. Para que o cache do cliente NFS seja atualizado, parece que tanto o tempo de modificação como precisam ser atualizados, pelo menos é o que vemos quando exportamos um ext3 FS em vez de NSS.

Este é o caso de clientes NFS mais antigos. Os clientes mais novos ficarão bem, mas temos que ter cuidado, pois eles parecem estar funcionando por coincidência (devido a uma otimização).

Uma solução é tocar no diretório pai no servidor depois que você quiser tornar suas alterações visíveis para o mundo externo ...

    
por 02.04.2016 / 23:30

Tags