Escolha do sistema de arquivos do cluster para leitura / gravação de grande número de arquivos pequenos

3

Estou configurando um pequeno cluster Linux para o meu laboratório. Atualmente, temos um nó de login para envio de trabalho e 3 nós computacionais, e eles são conectados por Gigabit LAN (infelizmente sem infinibandos).

No começo, eu simplesmente usei o NFS para exportar o armazenamento compartilhado (pasta base) para os usuários do cluster. Mas logo descobrimos que o NFS não funciona bem em termos de carga real.

Descobri que é muito comum que meus usuários de cluster leiam e gravem GBs de arquivos de imagem pequenos (um é < 100KB) no armazenamento compartilhado. O NFS executa muito mal para o arquivo pequeno IO.

Eu tenho um teste simples de desempenho do NFS / CIFS / SSHFS para gravação de arquivos pequenos. Os tempos para descompactar 20000 arquivos pequenos (cerca de 600MB no total) em cada sistema de arquivos são:

  • CIFS : 25 ~ 30s
  • SSHFS : 45 ~ 55s
  • NFS (v3 / v4) : tão lento que não aguardei (estimativa é de 10 minutos)

O CIFS / SSHFS tem um desempenho muito bom em comparação ao NFS. Mas não é uma prática geral usar o CIFS / SSHFS para pastas base do Linux em um cenário de cluster de computador (e o CIFS não é um sistema de arquivos AFAIK realmente compatível com posix).

Qual é a sua opinião sobre uma escolha de sistema de arquivos de rede para carga de arquivos pequenos? Devo substituir o NFS por outro cluster / sistemas de arquivos distribuídos? Ou existe uma maneira de otimizar o NFS para arquivos pequenos?

    
por cuihao 08.04.2017 / 15:12

1 resposta

0

Se você tivesse uma configuração grande o suficiente, eu recomendaria o IBM Spectrum Scale (anteriormente GPFS), mas, considerando a escala de suas operações, sugiro que você vá com o ZFS com uma diferença: Defina o atime como off. Se você realmente não se importar em registrar o tempo de acesso nos arquivos, o ZFS terá um bom desempenho em seu cenário.

    
por 12.04.2017 / 05:42