Escolha do sistema de arquivos distribuído para leituras e gravações intensivas

3

Eu tenho uma série de servidores (HP ProLiant, 34 servidores), cada um com 500 G de espaço no disco rígido. Esses servidores fazem parte de um cluster computacional que executa processos que se enquadram em duas "fases":

  • fase 1: lendo um pequeno número de arquivos grandes (até 6 Gb) e escrevendo arquivos relativamente grandes (até 1-2 Gb).
  • fase 2: lendo e escrevendo lotes (centenas) de pequenos arquivos que depois são combinados em arquivos maiores; Além disso, esses arquivos são gerados junto com arquivos temporários que servem como "pontos transacionais".

Os servidores não compartilham o mesmo gabinete e estão conectados via Ethernet Gbit.

Inicialmente, coloquei um compartilhamento NFS em um único servidor, conforme minha pergunta anterior , mas o nível de simultaneidade causava problemas de disponibilidade e bloqueio, fazendo com que os processos falhassem na segunda fase, com muita frequência.

Agora que posso usar os discos nos servidores, pensei em usar um sistema de arquivos distribuído. Minha abordagem inicial (usada graças a testes bem-sucedidos em outros lugares) era usar o GlusterFS (configuração distribuída + replicada).

No entanto, embora funcione perfeitamente para a primeira fase, os problemas não terminam no segundo, pois a latência na rede não é baixa o suficiente para lidar com todas essas leituras e gravações simultâneas de todos os servidores no pool, causando os vários servidores para sair de sincronia e, portanto, erros estranhos ao redor do caminho (falta de arquivos, permissão estranha negou erros ...).

Além disso, o "problema" é que os próprios servidores (ou uma parte deles, eu não preciso usar todos) precisarão executar o cálculo junto com o fornecimento de armazenamento (é um recurso doado, então não posso fazer mais do que isso).

Tudo isso para explicar o caso de uso, que então faz a pergunta: qual seria o melhor sistema de arquivos distribuídos para lidar com a "fase 2"? Observe que preciso de algo no nível do arquivo, por exemplo um ponto de montagem ou um dispositivo virtual.

    
por Einar 25.10.2013 / 14:26

3 respostas

1

Eu acredito LizardFS e GfarmFS são adequados para a tarefa.

Ambos os sistemas de armazenamento usam servidores de metadados (isto é, diretórios) permitindo operações de baixa latência em milhões de arquivos. LizardFS "master" (isto é, servidor de metadados) usa RAM (memória ocupada é menor que 3 GiB para arquivos 7_000_000) enquanto o servidor de metadados GfarmFS usa o PostgreSQL.

    
por 29.06.2015 / 13:53
0

Os sistemas de arquivos criam bancos de dados de baixa qualidade e os sistemas de arquivos de rede tornam-se ainda piores.

Fase 2: cheira muito como um banco de dados para mim.

Existem muitos tipos de escolhas hoje em dia. Um banco de dados básico de armazenamento de chave / valor pode ser relativamente simples de configurar e manter. Este é um ótimo livro para descobrir quais opções são possíveis.

link

    
por 27.10.2013 / 18:25
0

Para adicionar meus $ .02:

Dê uma olhada no ceph . Jogue nele meio gigabyte de memória em cada servidor (torne-os todos OSDs) e designe três servidores como MDS / MON (dependendo da carga, eles podem ou não executar outras coisas intensivas também). Use-o como um armazenamento de objetos ou como um dispositivo de bloco ou como um sistema de arquivos ... isso é com você ... Pode ser redundante e pode ser rápido. Ele escala (com alguns ajustes) para petabytes .

    
por 29.06.2015 / 14:07