Por que uma única unidade é muito mais rápida do que 4 delas no RAID5?

4

Eu tenho um servidor vintage de 2005 (Xeons dual 3GHz, controlador RAID / SCSI LSI53C1030T com 256MB de cache, 8GB de RAM) e estou reutilizando-o para algum serviço leve de armazenamento de VM.

A primeira tentativa foi colocar drives de 4x300GB em um RAID5 de hardware, e depois instalar o LVM e o iSCSI da Openfiler sobre ele. Isso resultou em velocidades de leitura muito inconsistentes (20MB / seg a 2GB / seg, mas isso é provavelmente o armazenamento em cache) e uma gravação horrível, porém consistente, de 8MB / seg. Todos esses resultados foram medidos com dd local e uma grande transferência real de arquivos pela rede, e ambos renderam resultados similares.

Então, depois de muita leitura, descobri que o controlador LSI mencionado não é ótimo para RAID de hardware, então desliguei a funcionalidade RAID no canal com as unidades 4x300GB, criei a matriz RAID com RAID de software mdadm e coloquei o LVM no topo disso. Fiz mais testes e os resultados melhoraram (20MB / s gravam), mas isso ainda é bastante horrível. Passei outro dia alinhando partições, otimizando partes, stripe-width, tamanhos de stride, jogando com opções ext4, diferentes opções de journaling, etc, sem muita melhora observável.

Outra experiência que fiz foi executar hdparm -tT em / dev / md0 vs / dev / mapper / vg0-lv0 (que era simplesmente um mapeamento de todo o md0) e obtive 2x de lentidão ao percorrer o LVM. Eu li que o LVM pode introduzir algumas penalidades de velocidade, mas cortar a velocidade pela metade não é aceitável.

Como nada disso fazia sentido, voltei ao básico, criei uma única partição em uma única unidade, sem LVM, RAID, apenas SCSI320 e executei alguns testes nela. Eu tenho ~ 75MB / sec leitura e ~ 55MB / sec escrever com várias execuções e vários programas.

Portanto, se uma unidade pode fazer 75 MB / s de leitura e 55 MB / s de gravação, por que o RAID5 (hardware ou software!) de 3 deles obtém velocidades tão horríveis? O que estou fazendo de errado? O que mais devo tentar?

UPDATE 1: Enquanto continuava com experimentos, notei que um dos discos às vezes não queria ser particionado; O parted e o fdisk simplesmente se recusariam a realmente escrever as partições para ele. Então eu tentei os mesmos comandos em todos os outros discos para ter certeza que não é um problema sistêmico, e parecia estar isolado apenas para aquele disco. Eu continuei executando os testes de saúde de smartctl , e tudo deu certo. dmesg foi a única fonte de qualquer indicação de que pode haver algo errado com a unidade, embora com mensagens bastante enigmáticas e não particularmente úteis. Por pura curiosidade, retirei a unidade, reiniciei e refiz tudo que fiz até agora para o software RAID5 sem LVM, mas com o ext4. Na primeira tentativa, recebi 200MB / s de leituras e 120MB / s de gravações em uma matriz de cinco unidades (encontrei mais duas unidades de 300GB enquanto isso) ao testar com dd despejando arquivos de 4.2GB em blocos de 64kB na nova partição. Aparentemente a unidade, embora não completamente morta, não foi particularmente cooperativa, e uma vez fora da equação, tudo correu muito melhor.

Eu me sinto mais sossegado agora, 8MB / s simplesmente não me sinto bem, não importa qual nível de RAID.

Amanhã: testando com o LVM e talvez voltando ao RAID de hardware.

    
por Marcin 08.06.2011 / 15:44

1 resposta

5

O RAID5 é notoriamente ruim para o desempenho de gravação. A razão para isso é que toda gravação em um disco em particular precisa atualizar o bloco de paridade, portanto toda gravação requer leituras de todos os outros discos na matriz + um cálculo da paridade que é então reescrita no disco onde a paridade é mantido para esse bloco em particular.

Isso leva muito tempo, comparado a apenas escrever um único bloco.

Se você quiser gravações rápidas, uma configuração espelhada é melhor, como RAID1 ou RAID10.

    
por 08.06.2011 / 15:48