Dell PowerVault MD3200i Configuração de dm-multipath e problemas de desempenho no Debian 6.0 (squeeze)

1

Eu estarei usando este alvo iSCSI para alguns hosts da máquina virtual KVM baseados no Debian. Cada um dos controladores redundantes do alvo possui 4 portas ethernet; da mesma forma para os iniciadores. Eu uso dois switches (ZyXEL GS-2200-24) com um tronco entre eles, e as VLANs isolam cada caminho. Eu também habilitei quadros jumbo e controle de fluxo.

O sistema MPIO nesta versão Debian é fabuloso: contanto que o dm-multipath seja carregado antes de efetuar o login no iSCSI target, tudo o que é Just Works TM sem nenhum arquivo de configuração, desde que eu carregue scsi_dh_rdac antes mão.

Esse é o primeiro obstáculo: posso alterar alguns dos padrões se eu fornecer um arquivo /etc/multipath.conf . Eu testei com use_friendly_names yes , que cria com sucesso um link mpath0 em /dev/mapper/ - em vez de usar o WWID hostil. Mas se eu tentar alterar rr_min_io do padrão 1000 para 8, eu serei ignorado; então eu faço essa linda dança:

dmsetup suspend mpath0
dmsetup table mpath0 | sed 's, 1000, 8,g' | dmsetup reload mpath0
dmsetup resume mpath0

Isso altera o número de solicitações enviadas para baixo em um dos links quad antes do round-robin entrar em ação e enviá-lo para baixo, do padrão 1000 down para 8. Isso realmente muda a tabela multipath (por multipath -v3 | grep params ) . Como se configura esse padrão no novo código do multipath? Estou assumindo que isso funcionou antes que o multipath fosse todo dinâmico e autoconfigurável ... Pelo menos, todos os documentos do fornecedor que já li e outras discussões na Web supõem que isso funcionou.

Uma gravação sequencial simples usando dd bs=100M count=50 if=/dev/zero of=/dev/mapper/mpath0-part1 & sync vai de ~ 135MB / s até ~ 260MB / s com essa alteração. E esse é o segundo obstáculo: isso é cerca de 2 Gbps em vez dos 4 Gbps que tenho entre o iniciador e o alvo. A execução de iostat -kd 1 para 1 segundo de execução mostra apenas 2 dos 4 caminhos sendo preenchidos.

Esse LUN é de curta duração: seus 16 GB residem no início de um array RAID10 de 12 eixos de 600 discos SAS de 6 Gbps, girando a 15.000 rpm. Eu estava esperando que isso fosse o suficiente para saturar os 4Gbps que tenho; estou correto?

    
por Luis Bruno 19.01.2012 / 20:35

2 respostas

2

Reconfiguração on-line

A técnica usada para alterar o rr_min_io é o que o multipathd faz para você sob as capas. A maneira amigável de ajustar valores em um mapa em execução é echo reconfigure | multipathd -k

Por exemplo: aqui está uma NetApp que tem rr_min_io atualmente 128

# dmsetup table
360a98000534b504d6834654d53793373: 0 33484800 multipath 0 1 alua 2 1 round-robin 0 2 1 8:16 128 8:32 128 round-robin 0 2 1 8:64 128 8:48 128 
360a98000534b504d6834654d53793373-part1: 0 33484736 linear 251:0 64

/etc/multipath.conf foi alterado, então rr_min_io passou a ser 1000 . Então,

# echo reconfigure | multipathd -k
multipathd> reconfigure
ok

Para verificar a alteração:

# dmsetup table
360a98000534b504d6834654d53793373: 0 33484800 multipath 0 1 alua 2 1 round-robin 0 2 1 8:16 1000 8:32 1000 round-robin 0 2 1 8:48 1000 8:64 1000 
360a98000534b504d6834654d53793373-part1: 0 33484736 linear 251:0 64

Concordo que o multipathd poderia fazer um trabalho melhor em publicidade e reportar as variáveis adicionais que usa. O que o delta multipathd não relata, o dmsetup faz, mas isso não significa necessariamente que usar o dmsetup diretamente é a melhor idéia para reconfigurar essas configurações. Reconfigurar funciona para praticamente tudo.

Balanceamento de carga ativo-ativo

O guia de implantação diz que sua SAN está ativa-ativa, mas esse termo é indevidamente usado no setor; na prática, pode ser "ativo duplo", o que significa que um LUN só pode ser acessado por um único processador de armazenamento a qualquer momento. mas ambos os controladores podem estar ativos e dirigir LUNs distintos, eles simplesmente não podem carregar o equilíbrio para o mesmo lun.

Aqui na p79 sob a seção de balanceamento de carga.

Two sessions with one TCP connection are configured from the host to each controller (one
 session per port), for a total of four sessions. The multi-path failover driver balances 
I/O access across the sessions to the ports on the same controller. In a duplex 
configuration, with virtual disks on each controller, creating sessions using each of the 
iSCSI data ports of both controllers increases bandwidth and provides load balancing

Observe o uso plural de discos virtuais no contexto da configuração duplex , ele não chama o mesmo disco. Isso parece ser uma implantação com dupla atividade. As verdadeiras SANs ativas ativas geralmente são reservadas para implantações de Fibre Channel. Talvez existam SANs iSCSI que realizam isso, eu não encontrei um, embora eu não implemente o iSCSI extensivamente.

    
por 14.02.2012 / 16:17
0

O problema real por trás do valor ignorado rr_min_io é uma incompatibilidade de ABI simples e silenciosa entre o kernel em execução e as ferramentas multipath.

    
por 15.02.2012 / 00:28