Comment fonctionne le cache de lecture NFS sur Debian?

12

Je prévois d'utiliser NFS pour servir de nombreux petits fichiers. Ils seront lus très souvent, donc la mise en cache côté client est cruciale. NFS gère-t-il cela? Existe-t-il un moyen d'augmenter la mise en cache côté client d'une manière ou d'une autre?

... ou devrais-je envisager une autre solution? La synchronisation périodique à l'aide de rsync ou unison n'est pas une option car les fichiers sont modifiés de temps en temps côté client.

Ztyx
la source

Réponses:

6

Tout d'abord, NFS ne fournit pas de cohérence de cache, donc si vous en avez besoin, vous devez chercher ailleurs.

Ce que NFS spécifie est un modèle plus faible appelé cohérence proche de l'ouverture. Cela signifie que lorsqu'un fichier est fermé, toutes les données sales sont vidées sur le serveur. Inversement, lorsqu'un fichier est ouvert, une vérification des attributs est effectuée, ce qui signifie que si le client a mis en cache des pages de ce fichier, il vérifie si ces pages sont toujours valides.

Bien que n'étant pas dans la spécification elle-même, la plupart des clients NFS ont quelque chose appelé délai d'expiration du cache d'attributs, c'est-à-dire quel âge les attributs d'un répertoire ou d'un fichier ouvert peuvent avoir avant que le client contacte le serveur pour les revalider. Sous Linux, voir les options de montage actimeo = etc.. Des valeurs plus élevées permettent une mise en cache plus agressive, mais augmentent le risque d'utiliser des données périmées si un autre client a mis à jour le fichier entre-temps.

janneb
la source
Merci pour votre réponse. Donc, juste pour que j'ai bien compris, le "cache d'attribut" côté client ne contient qu'un cache pour les attributs file / dir ie. le cache ne contient aucun contenu de fichier?
Ztyx
Oui, le client met en cache le contenu des fichiers dans le cache de pages, comme il le fait pour un système de fichiers local. Les attributs sont utilisés pour décider si et quand le contenu du fichier mis en cache est invalidé.
janneb
Ah. Merci beaucoup d'avoir répondu à cela. Bonne journée.
Ztyx
Lorsque vous dites «page», cela semble signifier que des parties du fichier peuvent être mises en cache et que certaines parties du fichier ne le sont pas? Ce n'est pas un cache de fichiers, n'est-ce pas? Ce sont des subdivisions du fichier qui peuvent être mises en cache.
CMCDragonkai
@CMCDragonkai: Le noyau garde la trace du contenu des fichiers mis en cache à la granularité de la page (généralement 4Ko), donc oui, il peut mettre en cache une partie d'un fichier. Je ne sais pas exactement comment fonctionne l'invalidation du cache pour NFS, je suppose qu'après l'expiration du cache d'attribut lorsqu'il contacte le serveur pour revalider, et si la revalidation échoue, il supprime toutes les pages mises en cache appartenant à ce fichier.
janneb