Um grande número de arquivos (pequenos) pode degradar o desempenho de um sistema de arquivos?

4

Estou trabalhando em um projeto de arquivamento e atualmente estou armazenando 514600 imagens (variando de 200kb a 2mb) na minha unidade NAS de 4TB. A unidade em si é formatada como ext4 e estou escrevendo os arquivos pela rede via cifs / smb.

Existe alguma implicação de armazenar um número tão grande de arquivos? O sistema de arquivos será vítima de fragmentação?

    
por yuikonnu 10.04.2014 / 20:58

3 respostas

4

A fragmentação ocorre quando um arquivo já em disco é alterado, tornando-se maior do que antes, e nenhum arquivo menor que o seu cluster tamanho deve acabar fragmentado. Para responder corretamente à sua pergunta, precisamos saber o tamanho do cluster, a porcentagem da unidade em uso e se os arquivos serão alterados após a alocação inicial do espaço em disco.

As operações de E / S em muitos arquivos pequenos versus alguns arquivos grandes são muito mais lentas, devido a toda a sobrecarga do sistema de arquivos (e ao tempo de varredura / busca), portanto, se você considerar esse desempenho degradado, sim. isso realmente depende mais se você está acessando 5000 deles de uma só vez, ou apenas alguns de cada vez.

O ext4 em particular não requer desfragmentação da mesma forma que os sistemas de arquivos do Windows fazem por causa do caminho ele aloca espaço para arquivos, desde que sua partição não esteja 90% cheia, eu não me preocuparia com isso.

    
por 10.04.2014 / 21:39
1

Is there any implications of storing such a huge number of files?

Acrescentarei que você deve observar o número máximo de arquivos que seu sistema de arquivos pode manipular. Arquivos (no ext4 que você usa) consomem inodes. A tabela de inodes é alocada estaticamente quando o sistema de arquivos é criado e a única maneira de aumentá-la é recriar o sistema de arquivos.

Você pode verificar seus números atuais de inode usados / gratuitos com df -i ou tune2fs -l /path/to/device

Os valores padrão devem ser um problema apenas ao armazenar arquivos muito pequenos.

    
por 11.04.2014 / 02:54
0

A velocidade de acesso diminui significativamente. É uma dor comum em projetos Java, onde você tem toneladas de arquivos relativamente pequenos. É mais eficiente armazená-los em um único arquivo, o acesso é mais rápido, apesar do fato de que eles precisam ser descompactados.

No seu caso, seus arquivos não são pequenos, então provavelmente não haverá problemas com a fragmentação.

Você trabalha em um projeto de arquivamento, então provavelmente você deve usar ZIP ou TAR / GZIP . Se seus arquivos já estiverem compactados, você pode usar apenas TAR para juntá-los em um arquivo maior. Encontre uma "unidade de embalagem" razoável - para que você possa localizar todos os seus arquivos com facilidade mais tarde.

    
por 11.04.2014 / 02:47