Como o cache de leitura NFS funciona no Debian?

12

Estou planejando usar o NFS para servir muitos arquivos pequenos. Eles serão lidos com muita frequência, portanto, o cache do lado do cliente é crucial. O NFS lida com isso? Existe uma maneira de aumentar o cache do lado do cliente de alguma forma?

... ou devo procurar outra solução? Sincronizar usando rsync ou unison periodicamente não é uma opção, pois os arquivos são modificados no lado do cliente periodicamente.

Ztyx
fonte

Respostas:

6

Primeiro, o NFS não fornece coerência de cache; portanto, se você precisar, deve procurar outro lugar.

O que o NFS especifica é um modelo mais fraco chamado consistência quase aberta. Isso significa que, quando um arquivo é fechado, qualquer dado sujo é liberado para o servidor. Por outro lado, quando um arquivo é aberto, uma verificação de atributo é executada, o que significa que, se o cliente tiver páginas em cache desse arquivo, ele verificará se essas páginas ainda são válidas.

Embora não esteja na especificação em si, a maioria dos clientes NFS tem algo chamado tempo limite do cache de atributo, ou seja, quantos anos os atributos de um diretório ou arquivo aberto podem ter antes que o cliente entre em contato com o servidor para revalidá-los. No Linux, consulte as opções de montagem actimeo = etc. Valores mais altos permitem armazenamento em cache mais agressivo, mas aumentam o risco de usar dados obsoletos se algum outro cliente atualizar o arquivo nesse meio tempo.

janneb
fonte
Obrigado por sua resposta. Portanto, apenas para que eu entenda isso corretamente, o "cache de atributos" do lado do cliente contém apenas um cache para atributos de arquivo / dir. o cache não contém nenhum conteúdo de arquivo?
Ztyx
Sim, o cliente armazena em cache o conteúdo do arquivo no cache da página, exatamente como em um sistema de arquivos local. Os atributos são usados ​​para decidir se e quando o conteúdo do arquivo em cache é invalidado.
janneb
Ah Muito obrigado por responder a isso. Tenha um bom dia.
Ztyx
Quando você diz "página", isso significa que partes do arquivo podem ser armazenadas em cache e partes do arquivo podem não ser? Não é um cache de arquivos, é? São subdivisões do arquivo que podem ser armazenadas em cache.
CMCDragonkai #
@CMCDragonkai: O kernel monitora o conteúdo do arquivo em cache na granularidade da página (normalmente 4KB); portanto, sim, ele pode armazenar em cache parte de um arquivo. Não tenho certeza de como exatamente a invalidação de cache funciona para o NFS, meu palpite seria que, após o tempo limite do cache do atributo, quando ele entrar em contato com o servidor para revalidar, e se a revalidação falhar, eliminará todas as páginas em cache pertencentes a esse arquivo.
janneb