distribuindo acesso entre vários discos

2

Eu tenho um aplicativo bastante grande que requer acesso simultâneo a um grande número (300+) de arquivos grandes e os acessa lendo-os todos ao mesmo tempo.

Se todos os arquivos forem colocados em 1 disco (se eu tiver um disco grande o suficiente), a velocidade de execução do aplicativo será reduzida. Para contornar isso eu distribuo os arquivos através de um par de discos físicos, e máquinas, NFS montar as partições e usar scripts bash para criar um monte de links sym para que todos os arquivos parecem estar em um diretório enorme. Isso faz maravilhas para melhorar a velocidade de execução, dividir entre 3 discos melhora a velocidade de execução, por um fator de 10 ou mais.

Alguém tem alguma sugestão sobre uma maneira menos complicada de configurar isso? Meu receio é que o striping como no RAID ou no Gluster pode não funcionar muito bem, já que altas velocidades de leitura em qualquer arquivo nunca são necessárias, mas um grande número de acessos simultâneos é sempre necessário.

    
por camelccc 13.07.2013 / 13:03

1 resposta

3

  • O uso do NFS, em vez de muitos discos locais, reduzirá sua velocidade significativamente, já que qualquer disco moderno pode saturar uma conexão Ethernet de 1 GB, sem falar em mais de um.
  • O uso de um RAID0 também melhora sua velocidade significativamente sem a sobrecarga administrativa, mas, em média, será apenas cerca de 50% da melhoria da velocidade de tantos discos com o layout do symlink (50% porque seu desempenho depende quantas faixas podem ser usadas ao mesmo tempo - na pior das hipóteses, seu aplicativo precisa ler tudo a partir de apenas um disco, no melhor caso, ele pode ler de cada disco).
  • O uso de SSDs melhorará drasticamente seu desempenho. É caro, mas nada pode superar um SSD nesse cenário.

Então, em resumo, eu colocaria os discos no sistema local e experimentaria diferentes tamanhos de RAID para otimizar o desempenho e seriamente considerar a compra de SSDs.

    
por 13.07.2013 / 13:33