Minha infraestrutura de servidores está crescendo rapidamente e decidi criar um cluster de armazenamento distribuído. Eu tenho procurado por um sistema de arquivos adequado para esta tarefa que atenda ao meu requisito, mas nenhum deles suporta uma funcionalidade de cache de disco local. Cada um dos meus servidores tem dois discos rígidos SAS de 600 GB e eu gosto de usá-los como um armazenamento em cache para os arquivos acessados com mais freqüência a partir do armazenamento distribuído.
Algum sistema de arquivos opensource suporta esta funcionalidade? Eu gosto de usar Ceph ou GlusterFS, mas não encontrei nada sobre o cache de disco local. Eu acho que é um dos recursos básicos que o sistema de arquivos distribuído deve suportar.
Outro concorrente é XtreemFS : o conjunto de recursos inclui
In addition to full replicas that contain a complete copy, XtreemFS also supports partial replicas. These replicas are filled on demand when a client accesses data.
Como com comentários em outros lugares - seria possível usar o armazenamento em disco local para armazenar em cache o I / O do gluster, embora ao custo do cache do VFS, o AFS pareça ser apropriado. Mas as grandes omissões de sua pergunta são se você está tentando obter tolerância a falhas ou desempenho, e se o armazenamento replicado deve suportar transações ou gravações frequentes.
Outras opções incluem
O OpenAFS tem um cache de arquivos local, mas também o NFSv4 com a configuração apropriada.
No entanto, a menos que o acesso a arquivos seja em grande parte somente de leitura, o armazenamento em cache pode gerar um desempenho muito menor do que você poderia esperar. Em situações em que muitos clientes tentam gravar nos mesmos servidores, isso pode realmente diminuir o desempenho.
E o flashcache e o ceph?
IPFS , apesar de ainda ser relativamente novo e o desempenho ainda não se equiparar ao Ceph ou ao GlusterFS.
Eu o recomendo porque o design é exatamente o que você precisa para um cache local eficiente. Todo o conteúdo (incluindo a estrutura de diretório) é imutável e endereçado por um hash criptograficamente verificável. Isso significa que o conteúdo pode ser recuperado de qualquer lugar - na memória, no disco ou até mesmo em um ponto não confiável. Além disso, você obtém deduplicação gratuitamente.
Ao pesquisar um arquivo por hash, não é necessário entrar em contato com um servidor remoto para saber das atualizações e não é necessário manipular a invalidação de cache para nada além de liberar espaço em disco. Endereços mutáveis podem ser obtidos com IPNS, mas são apenas ponteiros para hashes de arquivos, o que significa que apenas uma única solicitação é necessária para descobrir uma árvore de arquivos atualizada.
Você pode experimentar o MooseFS no sistema de arquivos distribuídos. Na máquina MooseFS Master, a estrutura completa do sistema de arquivos é armazenada em cache na RAM para melhor velocidade.
Parece que o gluster realiza o armazenamento em cache de arquivos locais. Alguns dos valores ajustáveis são
Option Description Default Value Available Options
performance.cache-size Size of the read cache. 32 MB size in bytes
performance.cache-max-file-size Sets the maximum file size cached by the io-cache translator. Can use the normal size descriptors of KB,MB,GB,TB or PB (ie. 6GB). Maximum size uint64. 2 ^ 64 -1 bytes size in bytes
performance.cache-min-file-size Sets the minimum file size cached by the io-cache translator. Values same as "max" above. 0B size in bytes
performance.cache-refresh-timeout The cached data for a file will be retained till 'cache-refresh-timeout' seconds, after which data re-validation is performed. 1 sec 0 < cache-timeout < 61