Otimize o sistema de arquivos do Linux para ler arquivos pequenos de 500M

2

Estamos vendo problemas de desempenho em um sistema de arquivos que contém arquivos ~ 500 M que são relativamente pequenos (geralmente dezenas de kb) e diretórios de ~ 150 K. O acesso a arquivos é predominantemente leituras e gravações são bastante raras. Os arquivos são armazenados principalmente em uma hierarquia de diretórios hash com ~ 30K arquivos por diretório, mas em alguns casos pode haver até 500 arquivos K em um diretório.

O servidor compartilha o sistema de arquivos em ~ 10 máquinas clientes.

Obter listagens de diretório geralmente é lento e, às vezes, também é possível ler arquivos por caminhos absolutos, até mesmo localmente.

Este é um servidor físico que roda o Ubuntu 12.04.4 (kernel: 3.8.0 / x86_64) e usamos o ext4 em um volume RAID-6 de hardware.

O que seria uma configuração de sistema de arquivos recomendada neste cenário?

  • existe um sistema de arquivos particularmente adequado para este caso (por exemplo, ext4, xfs, btrfs, ...)?
  • que tipo de configuração de RAID (por exemplo, sw vs. hw, nível de RAID, etc.) devemos usar?
  • e a configuração de compartilhamento de arquivos (tecnologia [por exemplo, NFS vs. concorrência], configuração, ...)?
por marko 26.06.2015 / 09:41

2 respostas

2

Quando você tem um problema como esse, precisa:

  • obtenha todos os requisitos (latência, largura de banda, redundância, confiabilidade, segurança, recursos necessários ...)
  • analise os sistemas atuais. Se eles não forem nenhum, crie ambientes de teste. Entenda como todos os componentes funcionam. Entenda a carga atual e a esperada.
  • adicione monitoramento do sistema (com gráficos) para os sistemas de produção e teste. Monitore pelo menos o uso da CPU, o uso da rede e o uso de E / S de disco.
  • crie servidores de teste e carregue-os. Teste de carga com benchmarks sintéticos não apenas com micro-benchmarks.

Use versões estáveis do SO recente com o kernel estável mais recente.

    
por 28.06.2015 / 17:29
0

What would be a recommended file system setup in this scenario?

is there a file system particularly well suited for this case (e.g. ext4, xfs, btrfs, ...)?

Acho que ext4 é a melhor escolha aqui em termos de segurança. Em termos de desempenho de leitura, o RaiserFS (/ 4) poderia ser melhor:

link

link

sistema de arquivos para milhões de arquivos pequenos

what kind of RAID configuration (e.g. sw vs. hw, RAID level etc.) should we use?

Você precisa:

  • reduza a latência / tempo de acesso
  • reduz o número de leituras / gravações (noatime, nodiratime, realtime, barrier = 0)

Todo nível de RAID, que tem possibilidade de realizar operações paralelas, será uma boa escolha, por exemplo, o RAID 10 (raid de software do Linux) tem muitas opções de ajuste.

what about the file sharing setup (technology [e.g. NFS vs. competition], configuration, ...)?

Eu não posso te dar números aqui, o compartilhamento de arquivos também é um termo bastante amplo. Eu tive uma experiência muito boa com o FTP quando lidas com muitos arquivos (não FTPS - porque negociar o TLS para cada transferência leva tempo), melhor encapsular o tráfego. Parece que a melhor divisão entre flexibilidade do protocolo (o que você pode fazer) e sobrecarga de protocolo (quanto tempo demora, espaço no pacote) ao lidar com arquivos pequenos.

    
por 26.06.2015 / 12:58