Chapitre 9. FS-Cache
FS-Cache est un cache local persistant qui peut être utilisé par les systèmes de fichiers pour prendre les données récupérées sur le réseau et les mettre en cache sur le disque local. Ceci permet de minimiser le trafic réseau pour les utilisateurs accédant aux données à partir d'un système de fichiers monté sur le réseau (par exemple NFS).
Le diagramme suivant est une illustration de haut niveau du fonctionnement de FS-Cache :
Figure 9.1. Aperçu de FS-Cache
FS-Cache est conçu pour être aussi transparent que possible aux utilisateurs et administrateurs d'un système. Contrairement à
cachefs
sur Solaris, FS-Cache permet à un système de fichiers d'interagir directement avec le cache local d'un client sans créer de système de fichiers surmonté. Avec NFS, une option de montage ordonne au client de monter le partage NFS avec FS-cache activé.
FS-Cache n'altère pas les opérations de base d'un système de fichiers qui fonctionne sur le réseau - il offre simplement à ce système de fichiers un emplacement permanent dans lequel ses données peuvent être mises en cache. Par exemple, un client peut toujours monter un partage NFS, que FS-Cache soit activé ou non. En outre, NFS caché peut gérer des fichiers qui sont trop grands pour le cache (que ce soit le cas individuellement ou collectivement), car les fichiers peuvent être mis en cache de manière partielle et n'ont pas besoin d'être lus directement. FS-Cache cache aussi toutes les erreurs d'E/S se produisant dans le cache provenant du pilote du système de fichiers client.
Pour fournir ses services de mise en cache, FS-Cache a besoin d'un backend de cache. Un backend de cache est un pilote de stockage configuré pour offrir des services de mise en cache (c'est-à-dire des
cachefiles
). Dans ce cas, FS-Cache requiert un système de fichiers monté basé sur blocs, qui prendrait en charge bmap
et des attributs étendus (par exemple ext3) en tant que backend de cache.
FS-Cache ne peut pas mettre en cache n'importe quel système de fichiers arbitrairement, que ce soit via le réseau ou autrement : le pilote du système de fichiers partagé doit être altéré afin de permettre des interactions avec FS-Cache, le stockage ou le récupération de données, et le paramétrage et la validation de métadonnées. FS-Cache a besoin de clés d'indexation et de données de cohérence du système de fichiers mis en cache afin de prendre en charge la persistance : les clés d'indexation pour faire correspondre les objets de systèmes de fichiers avec les objets du cache, et les données de cohérence pour déterminer sur les objets du cache sont toujours valides.
Note
Dans Red Hat Enterprise Linux 7,
cachefilesd
n'est pas installé par défaut et doit donc être installé manuellement.
9.1. Garantie des performances
FS-Cache ne garantit pas de performances améliorées, cependant, des performances cohérentes sont assurées en évitant la congestion du réseau. L'utilisation d'un backend de cache provoque des pénalités de performances : par exemple, des partages NFS mis en cache ajoutent des accès du disque aux recherches à travers plusieurs réseaux. Malgré le fait que FS-Cache tente autant que possible de rester asynchrone, certains chemins seront synchronisés (par exemple les lectures) lorsque cela n'est pas possible.
Par exemple, l'utilisation de FS-Cache pour mettre en cache un partage NFS entre deux ordinateurs sur un réseau GigE vide ne démontrera aucune amélioration des performances sur l'accès aux fichiers. En revanche, les requêtes NFS seront satisfaites plus rapidement à partir de la mémoire serveur qu'à partir du disque local.
Ainsi, l'utilisation de FS-Cache est un compromis entre divers facteurs. Si par exemple, FS-Cache est utilisé pour mettre le trafic NFS en cache, le client pourrait en être quelque peu ralenti, mais la charge du réseau et du serveur seront très fortement réduites en satisfaisant les requêtes de lecture localement, sans consommer de bande réseau.