Qual sistema de arquivos Linux você escolheria para obter a melhor velocidade no seguinte cenário:
- cem milhões de arquivos
- ~ Tamanho de arquivo 2k em média
- > 95% de acesso de leitura
- acesso bastante aleatório
- alta simultaneidade (> 100 processos)
Nota: Os arquivos são armazenados em uma árvore hierárquica profunda para evitar diretórios grandes. Cada diretório folha contém cerca de mil arquivos.
Como você avaliaria isso?
Respostas:
Aqui estão alguns resultados comparando todos os principais FSes do Linux com bonnie ++ que você pode usar como ponto de partida.
Em termos de buscas aleatórias, Reiser vence, seguido por EXT4, seguido por JFS. Não tenho certeza se isso se correlacionará exatamente com as pesquisas de diretório, mas parece que isso seria um indicador. Você terá que fazer seus próprios testes especificamente. O EXT2 supera tudo em termos de criação de arquivo, provavelmente devido à falta de um diário, ainda o EXT4 supera tudo, exceto o Reiser, que você pode não querer usar devido ao status atual do hans reiser.
Você pode procurar em unidades compatíveis com NCQ e garantir que sua instalação esteja configurada para usá-lo. Sob busca pesada, deve fornecer um aumento de velocidade.
Por fim, verifique se a sua máquina possui uma tonelada de RAM. Como os arquivos não são atualizados com freqüência, o linux acabará armazenando a maioria deles em cache, se houver espaço livre. Se os seus padrões de uso estiverem corretos, isso proporcionará um enorme aumento de velocidade.
fonte
Eu concordo com a maioria do que Andrew disse, exceto que eu recomendaria o Reiser4 ou o ReiserFS mais antigo (mas com melhor suporte) . Como esses testes (e a documentação do ReiserFS) indicam, ele foi projetado para a situação de que você está se perguntando (grande número de arquivos ou diretórios pequenos). Eu usei o ReiserFS no passado com o Gentoo e o Ubuntu sem problemas.
Quanto ao status de Hans Reiser, não o vejo como um problema com o código ou a estabilidade do próprio sistema de arquivos. O Reiser4 é até patrocinado pela DARPA e Linspire, portanto, embora eu concorde que o desenvolvimento adicional do Sistema de Arquivos Reiser seja indeterminado, não acho que isso seja um fator decisivo para se alguém deve usá-lo ou não.
fonte
Sei que essa não é uma resposta direta à sua pergunta, mas nesses casos acho que um banco de dados pode ser mais adequado para hospedar isso. Arquivos pequenos podem ser armazenados em formato binário em uma tabela de banco de dados e recuperados em wil. O software que está usando esses arquivos deve ser capaz de suportar isso ...
fonte
Alguém no StackExchange do Unix criou um benchmark (com origem) para testar apenas este cenário:
P: Qual é o sistema de arquivos Linux de mais alto desempenho para armazenar muitos arquivos pequenos (HDD, não SSD)?
O melhor desempenho de leitura parece vir do ReiserFS.
fonte
Na minha experiência, o ext2 sopra o ext4 para fora da água para arquivos pequenos. Se você não se importa com a integridade da gravação, é ótimo. Por exemplo, o subversion cria muitos, muitos e muitos arquivos pequenos, nos quais o ext4 e outros sistemas de arquivos (XFS) se engasgam (execute uma tarefa cron que sincroniza os dados para o ext4 a partir do ext2 a cada meia hora, praticamente resolvendo o problema.)
A execução desses comandos torna o ext2 ainda mais rápido (embora a maioria dessas opções torne o sistema de arquivos instável após uma falha, a menos que você execute a sincronização antes de travar). Esses comandos quase não têm efeito no ext4 com arquivos pequenos.
fonte
Eu acho que ext3 (ou ext4), talvez JFS seria uma boa solução. Eu ficaria cauteloso com ext4 e btrfs (os sistemas de arquivos são complicados - esteja preparado com backups se você quiser usar as coisas mais recentes e mais recentes).
Também existem vários parâmetros que você pode ajustar durante o tempo do mkfs para ajustar o sistema de arquivos ao seu gosto.
Eu certamente recomendaria contra o XFS. Não porque é um sistema de arquivos ruim, mas a criação / exclusão é uma operação cara.
Para evitar problemas com pesquisas de diretório, use um esquema de nomeação inteligente, por exemplo:
ou similares, esquemas mais complicados. Isso irá acelerar as pesquisas no diretório e, portanto, as velocidades gerais de acesso. (É um velho truque unix, de volta da V7, eu acho)
fonte
A maioria dos FSs engasga com mais de 65K arquivos em um diretório, acho que isso ainda é verdade no ext4. Os sistemas de arquivos Reiser não têm esse limite (o pessoal do mp3.com pagou para garantir isso). Não tenho certeza de mais nada, mas esse é um dos cenários de uso para os quais o ReiserFS foi criado.
fonte
ls
ou conclua a guia, ele funciona rapidamente. Provavelmente devido ao índice.