Capítulo 7. Começando com o FS-Cache
O FS-Cache é um cache local persistente que os sistemas de arquivos podem usar para obter dados recuperados através da rede e armazená-los em cache em disco local. Isto ajuda a minimizar o tráfego de rede para usuários que acessam dados de um sistema de arquivo montado sobre a rede (por exemplo, NFS).
7.1. Visão geral do FS-Cache
O diagrama a seguir é uma ilustração de alto nível de como funciona o FS-Cache:
Figura 7.1. Visão geral do FS-Cache
O FS-Cache é projetado para ser o mais transparente possível para os usuários e administradores de um sistema. Ao contrário de cachefs
no Solaris, o FS-Cache permite que um sistema de arquivo em um servidor interaja diretamente com o cache local de um cliente sem criar um sistema de arquivo super montado. Com NFS, uma opção de montagem instrui o cliente a montar o compartilhamento NFS com o FS-cache habilitado. O ponto de montagem causará o upload automático para dois módulos do kernel: fscache
e cachefiles
. O daemon cachefilesd
se comunica com os módulos do kernel para implementar o cache.
O FS-Cache não altera a operação básica de um sistema de arquivo que funciona através da rede - ele apenas fornece a esse sistema de arquivo um lugar persistente no qual ele pode armazenar dados. Por exemplo, um cliente ainda pode montar um compartilhamento NFS quer o FS-Cache esteja ou não habilitado. Além disso, o NFS em cache pode lidar com arquivos que não caberão no cache (seja individual ou coletivamente), pois os arquivos podem ser parcialmente armazenados em cache e não precisam ser lidos completamente na frente. O FS-Cache também esconde todos os erros de E/S que ocorrem no cache do driver do sistema de arquivos do cliente.
Para fornecer serviços de cache, a FS-Cache precisa de um cache back end. Um back end de cache é um driver de armazenamento configurado para fornecer serviços de cache, que é cachefiles
. Neste caso, o FS-Cache requer um sistema de arquivo baseado em bloco montado que suporte bmap
e atributos estendidos (por exemplo, ext3) como seu back end de cache.
Os sistemas de arquivo que suportam as funcionalidades exigidas pelo back end de cache FS-Cache incluem as implementações do Red Hat Enterprise Linux 8 dos seguintes sistemas de arquivo:
- ext3 (com atributos estendidos ativados)
- ext4
- XFS
O FS-Cache não pode armazenar arbitrariamente qualquer sistema de arquivos, seja através da rede ou de outra forma: o driver do sistema de arquivos compartilhado deve ser alterado para permitir interação com o FS-Cache, armazenamento/recuperação de dados e configuração e validação de metadados. O FS-Cache precisa de indexing keys e coherency data do sistema de arquivo em cache para suportar a persistência: chaves de indexação para fazer corresponder os objetos do sistema de arquivo aos objetos do cache, e dados de coerência para determinar se os objetos do cache ainda são válidos.
No Red Hat Enterprise Linux 8, o cachefilesd não é instalado por padrão e precisa ser instalado manualmente.