Come funziona la cache di lettura NFS su Debian?


12

Sto pensando di utilizzare NFS per distribuire molti piccoli file. Verranno letti molto spesso, pertanto la memorizzazione nella cache lato client è cruciale. NFS gestisce questo? C'è un modo per aumentare la memorizzazione nella cache lato client in qualche modo?

... o dovrei guardare un'altra soluzione? La sincronizzazione periodica con rsync o all'unisono non è un'opzione poiché i file vengono di volta in volta modificati sul lato client.

Risposte:


6

Innanzitutto, NFS non fornisce la coerenza della cache, quindi se ne hai bisogno, devi cercare altrove.

Ciò che NFS specifica è un modello più debole chiamato coerenza quasi aperta. Ciò significa che quando un file viene chiuso, tutti i dati sporchi vengono scaricati sul server. Al contrario, quando viene aperto un file, viene eseguito un controllo degli attributi, il che significa che se il client ha pagine memorizzate nella cache da quel file, controlla se quelle pagine sono ancora valide.

Sebbene non sia nella specifica stessa, la maggior parte dei client NFS ha qualcosa chiamato timeout della cache degli attributi, ovvero quanti anni possono avere gli attributi di una directory o di un file aperto prima che il client contatta il server per riconvalidarli. Su Linux, vedi le opzioni di mount actimeo = etc. Valori più alti consentono una memorizzazione nella cache più aggressiva, ma aumentano il rischio di utilizzare dati non aggiornati se nel frattempo qualche altro client aggiorna il file.


Grazie per la risposta. Quindi, solo per averlo capito correttamente, la "cache degli attributi" sul lato client contiene solo una cache per gli attributi file / dir. la cache non contiene alcun contenuto di file?
Ztyx,

Sì, il client memorizza nella cache il contenuto del file nella cache della pagina, proprio come per un filesystem locale. Gli attributi vengono utilizzati per decidere se e quando il contenuto del file memorizzato nella cache viene invalidato.
janneb,

Ah. Grazie mille per aver risposto. Buona giornata.
Ztyx,

Quando dici "pagina" sembra significare che parti del file possono essere memorizzate nella cache e parti del file potrebbero non esserlo? Non è una cache di file, vero? Sono le suddivisioni del file che possono essere memorizzate nella cache.
CMCDragonkai,

@CMCDragonkai: il kernel tiene traccia del contenuto dei file memorizzati nella cache nella granularità della pagina (in genere 4KB), quindi sì, può memorizzare nella cache parte di un file. Non sono sicuro di come funzioni esattamente l'invalidazione della cache per NFS, la mia ipotesi sarebbe che dopo il timeout della cache dell'attributo quando contatta il server per riconvalidare, e se la riconvalida fallisce, rilascia tutte le pagine memorizzate nella cache appartenenti a quel file.
janneb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.