Carga desigual de 2 discos em um grupo de volumes

1

Temos um servidor de aplicativos com 2 SSDs Fusion-IO colocados em um grupo de volumes, formando um único volume. Dentro deste volume existem 128 arquivos de 40GB cada acessados através do mapa de memória.

Ao olhar para o iostat, encontramos a carga de trabalho não distribuída uniformemente pelos dois discos. A diferença é de 25%.

Quais poderiam ser as possíveis causas desse problema? Como devo investigar esse problema?

>lsblk
NAME                      MAJ:MIN RM   SIZE RO MOUNTPOINT
...
fioa                      253:0    0   2.9T  0
└─instvg-instant (dm-17)  252:17   0   5.8T  0 /instant
fiob                      253:16   0   2.9T  0
└─instvg-instant (dm-17)  252:17   0   5.8T  0 /instant

>iostat -xk -d fioa -d fiob
Linux 3.0.101-0.47.52-default (...)        08/10/2015      _x86_64_

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
fioa              0.00     0.00 1295.05 3116.02 65326.45 16359.80    37.04     0.29    0.07   0.01   3.82
fiob              0.00     0.00 1847.35 4090.05 88087.96 21608.44    36.95     0.42    0.02   0.01   5.98
    
por Stan 10.08.2015 / 18:03

1 resposta

0

Eu precisaria da saída de lvs -o +devices,segtype para confirmar isso, mas meu melhor palpite é que você acabou de espalhar o LV linearmente pelos dois PVs. Essa é uma idéia ruim de uma perspectiva de balanceamento de carga, porque o sistema de arquivos tenderá a preencher do início ao fim, e a primeira metade do sistema de arquivos está em um PV, e o segundo semestre está no outro PV. Então, até que o sistema de arquivos esteja meio cheio, praticamente todo o I / O irá para o primeiro PV.

Para corrigir isso, o LV precisa ser criado como striped volume, em vez de linear . Isso pode ser feito com -i 2 passado para lvcreate . Converter um LV em listrado é possível, mas somente se você tiver uma pilha de espaço extra, o que você não parece ter aqui. O que isso vai fazer é alternar pedaços do LV em ambos os PVs, de modo que (por exemplo) os primeiros 8 KiB de dados estarão no primeiro PV, os próximos 8 KiB no segundo PV, os próximos 8 KiB de volta no primeiro PV, e assim por diante.

Dito isto, o seu perfil de I / O não está terrivelmente fora de equilíbrio. Você nunca obterá E / S idêntica em ambos os PVs, simplesmente porque os pedidos enviados para os PVs não serão perfeitamente balanceados.

    
por 10.08.2015 / 23:00