Como distribuir arquivos e pastas para lidar com grande número de arquivos

5

Eu quero gerenciar um grande número de arquivos no meu servidor (digamos milhões). É necessário salvar arquivos em dois ou três níveis de pastas para manter baixo o número de arquivos em cada pasta. Por outro lado, não é bom ter muitas pastas para gastar inodes.

Qual é a proporção ideal de arquivos por pasta? Existe uma abordagem teórica para determinar isso, ou depende das especificações do servidor?

    
por Googlebot 18.09.2011 / 21:02

1 resposta

5

As especificações do servidor provavelmente serão menos problemáticas do que o sistema de arquivos que você está usando. Diferentes sistemas de arquivos têm diferentes abordagens para armazenar dados de diretório. Isso afetará a velocidade de digitalização em vários tamanhos.

Outra consideração importante é o ciclo de vida dos arquivos. Se você tem adição e exclusão frequentes de arquivos, talvez queira que os diretórios folha sejam menores do que poderiam ser de outra forma.

Você pode querer olhar para as estruturas de diretório de cache usadas pelo servidor web Apache e pelo proxy Squid. Estes são caches bem testados que lidam com taxas relativamente altas de mudança e escalam bem.

EDIT: A resposta à sua pergunta depende significativamente do ciclo de vida e dos padrões de acesso dos arquivos. Esses fatores influenciarão significativamente os requisitos de E / S de disco e memória de buffer. É provável que o número de arquivos seja um fator menos significativo.

Além do sistema de arquivos escolhido, a memória, as interfaces de disco, o número de discos e a configuração do ataque afetarão o desempenho do acesso ao disco. O desempenho precisa ser suficiente para os requisitos com alguma margem de manobra.

A configuração do disco tende a ser mais importante à medida que as gravações e as exclusões aumentam. Também pode ser mais importante quando o acesso aos arquivos se torna mais aleatório. Esses fatores tendem a aumentar o requisito de taxa de transferência de disco.

Aumentar a memória geralmente torna mais provável que os arquivos sejam acessados a partir de buffers de disco do que de discos. Isso aumentará o desempenho do acesso a arquivos para a maioria dos sistemas. O acesso a muitos arquivos grandes pode resultar em um armazenamento em cache mais fraco.

Para a maioria dos sistemas com os quais trabalhei, a probabilidade de um arquivo ser acessado está relacionada a quando foi acessado pela última vez. Quanto mais recentemente um arquivo é acessado, mais provável será acessado novamente. Algoritmos de hash tendem a ser importantes para otimizar a recuperação nesses casos. Se o acesso a arquivos for realmente aleatório, isso é menos significativo.

A E / S de disco necessária para excluir um arquivo pode ser significativamente maior do que adicionar um arquivo. Muitos sistemas têm problemas significativos ao excluir um grande número de arquivos de diretórios grandes. Quanto maior a taxa de adições e exclusões de arquivos, mais significativo isso se torna. O ciclo de vida dos arquivos é um fator importante ao considerar esses fatores.

Os backups são outro problema e podem precisar ser agendados para não causar problemas de buffer de disco. Os sistemas mais recentes permitem que o pedido de inserção seja aproveitado para que os backups e outros programas de manutenção tenham menos impacto no aplicativo.

    
por 18.09.2011 / 21:52