Estou planejando minha nova infraestrutura de armazenamento compartilhado para um pequeno farm de servidores web. Portanto, eu fiz muitos testes com muitos sistemas de arquivos NAS. Ao fazer isso, obtive alguns resultados inesperados e gostaria de saber se alguém aqui pode confirmar isso.
Resumindo: o Samba é extremamente mais rápido que o NFS e o GlusterFS para pequenas gravações de arquivos.
Aqui o que eu fiz:
Eu executei um "benchmark rsync" simples com muitos arquivos para comparar o desempenho de gravação de arquivos pequenos. Para facilitar a reprodução, reproduzi-o agora mesmo com o conteúdo do wordpress atual tar.gz.
- GlusterFS replicado 2: 32-35 segundos , alta carga de CPU
- GlusterFS único: 14-16 segundos , alta carga de CPU
- Cliente GlusterFS + NFS: 16-19 segundos , alta carga de CPU
- Servidor de kernel NFS + Cliente NFS (sincronização): 32-36 segundos , carga de CPU muito baixa
- Servidor de kernel NFS + Cliente NFS (assíncrono): 3-4 segundos , carga de CPU muito baixa
- Samba: 4-7 segundos , carga média da CPU
- Disco direto: < 1 segundo
Eu não sou absolutamente nenhum guru de samba (acho que meu último contato foi com o samba 2.x), então eu não otimizei nada aqui - apenas configuração out-of-the-box (pacote debian / squeeze). A única coisa que eu adicionei "sync always = yes", que é suposto para impor a sincronização após a gravação (mas vendo os resultados ..). Sem isso, os testes duram cerca de 1-2 segundos mais rápido.
Todos os testes são executados na mesma máquina (auto-montado é a exportação do NAS), portanto, não há atrasos de rede - desempenho de protocolo puro.
Nó secundário: Como sistema de arquivos, usei ext4 e xfs. Os resultados acima são com ext4. O xfs funcionou até 40% (menos tempo) melhor. As máquinas são instâncias do EC2 m1.small. A exportação do NAS está em volumes do EBS, fontes (tar extraído) em disco efêmero.
Então, aqui vamos nós: Alguém pode me explicar por que o samba é muito mais rápido?
Além disso, o desempenho do NFS com o servidor do kernel deve ser horrível (superado pelo servidor NFS do GlusterFS) no modo de sincronização? Alguma idéia de como ajustar isso?
Obrigado, L