Estamos à procura de um armazenamento de velocidade razoável. Por causa do baixo orçamento, decidimos usar os alvos iSCSI ou AoE do software. Antes de alterar nossa infraestrutura de produção, estamos fazendo alguns testes para escolher a melhor tecnologia.
Para testes, usamos:
- Fujitsu Siemens RX200 S4 como alvo
- Fujitsu Siemens RX200 S4 como iniciador
- Switch gerenciado de 1 GBit do NetGear
- placas de rede integradas (Broadcom com TOE), placas de rede EdiMax, placas de rede Broadcom com TOE - todos com 1 GB
- O servidor de destino está usando um controlador QLogic com 6 unidades WD Blue SATA de 2 TB.
- os sistemas operacionais de destino e de iniciador são o Ubuntu 16.04 LTS com todas as atualizações. O switch é dedicado para fins de armazenamento. Testamos vínculos e caminhos múltiplos.
Nosso problema é a baixa velocidade de leitura. Para o teste, usamos dd
um arquivo de 40 a 100 GB.
- a leitura e gravação local em um servidor de destino tem mais de 300 MB / s.
- escrever no servidor por iSCSI ou AoE é superior a 200 MB / s, o que nos satisfaz.
- a leitura do servidor é sempre 95-99MB / s.
Tentamos ietd, aoetools, LIO. Utilizamos títulos de 2 NICs: balance-rr e LACP, caminhos múltiplos com rr. Frames normais e jumbo usados. Finalmente, fizemos conexão direta via Ethernet entre o destino e o host (sem comutador).
Todos os testes apresentam mais menos os mesmos resultados (é claro que o uso de NICs comuns sem TOE e iSCSI deu 20-30% de resultados piores).
A rede de testes com o iperf mostrou transferências de cerca de 200 MB / s (2 GBit). Observar o uso de NICs no alvo com bmon mostrou uma utilização igual de ambos os dispositivos (cada um cerca de 50 MB / s para leitura, cerca de 100 MB / s para gravação).
Como não tivemos sorte, decidimos usar uma terceira placa de rede (ambos os lados, é claro). Os resultados foram estranhos:
- 2 placas de rede - 50 MB / s cada
- 3 placas de rede - 33 MB / s cada
Existe algum limite no software de destino que desabilite a saída superior a 1 GBit / s?
O que fazemos de errado?