ti-enxame.com

Desempenho de RAID de software x hardware e uso de cache

Eu tenho lido muito sobre controladores/configurações RAID e uma coisa que surge muito é como os controladores de hardware sem cache oferecem o mesmo desempenho que o RAID de software. É este realmente o caso?

Eu sempre pensei que as placas RAID de hardware ofereceriam melhor desempenho, mesmo sem cache. Quero dizer, você tem hardware dedicado para executar as tarefas. Se for esse o caso, qual é o benefício de obter uma placa RAID que não possui cache, algo como um LSI 9341-4i que não é exatamente barato.

Além disso, se um ganho de desempenho for possível apenas com o cache, existe uma configuração de cache que grava no disco imediatamente, mas mantém os dados no cache para operações de leitura, tornando a BBU uma prioridade?

78
ItsJustMe

Resumindo: se estiver usando uma placa RAID low-end (sem cache), faça um favor e mude para o RAID de software. Se estiver usando uma placa de médio a alto nível (com BBU ou NVRAM), o hardware é frequentemente (mas nem sempre! Veja abaixo) uma boa opção.

Resposta longa: quando a capacidade de computação era limitada, as placas RAID de hardware tinham a vantagem significativa de descarregar o cálculo de paridade/síndrome para os esquemas RAID que os envolviam (RAID 3/4/5, RAID6, etc.).

No entanto, com o desempenho cada vez maior da CPU, essa vantagem basicamente desapareceu: até a CPU antiga do meu laptop (Core i5 M 520, geração Westmere) tem desempenho [XOR "superior a 4 GB/s e o desempenho da síndrome RAID-6 acima 3 GB/s em um único núcleo de execução .

A vantagem que o RAID de hardware mantém hoje é a presença de um cache DRAM protegido contra perda de energia, na forma de BBU ou NVRAM. Esse cache protegido fornece latência muito baixa para acesso de gravação aleatória (e lê essa ocorrência) e basicamente transforma gravações aleatórias em gravações sequenciais. m controlador RAID sem esse cache é quase inútil. Além disso, alguns controladores RAID low-end não apenas vêm sem um cache, mas desativam à força o cache DRAM privado do disco , levando a um desempenho mais lento do que sem a placa RAID. Um exemplo são as placas PERC H200 e H300 da Dell: se o firmware mais recente não tiver alterado isso, elas desativarão totalmente o cache privado do disco (e não poderá ser reativado enquanto os discos estiverem conectados ao controlador RAID). Faça um favor a si mesmo e nunca, nunca compre esses controladores. Embora mesmo os controladores mais avançados desabilitem o cache privado do disco, eles pelo menos têm seu próprio cache protegido - tornando o cache privado do HDD (mas não do SSD!) Um tanto redundante.

Este não é o fim, no entanto. Mesmo controladores capazes (aquele com cache BBU ou NVRAM) podem fornecer resultados inconsistentes quando usados ​​com SSD, basicamente porque os SSDs realmente precisam (- = --- ==) precisam de um cache privado rápido para obter eficiência. Programação/apagamento da página FLASH. E enquanto alguns (a maioria?) Controladores permitem reativar o cache privado do disco (por exemplo: PERC H700/710/710P permite ao usuário reativá-lo), se esse cache privado não estiver protegido contra gravação, você corre o risco de perder dados. de perda de energia. O comportamento exato realmente depende do controlador e do firmware (por exemplo: em um Dell S6/i com cache WB de 256 MB e cache do disco ativado , eu tinha sem perdas durante vários testes planejados de perda de energia), dando incerteza e muita preocupação.

Os RAIDs de software de código aberto, por outro lado, são muito mais controláveis ​​- seu software não está dentro de um firmware proprietário e possui padrões e comportamentos de metadados bem definidos. O RAID de software faz a suposição (correta) de que o cache DRAM privado do disco não está protegido, mas ao mesmo tempo é crítico para um desempenho aceitável - para que eles normalmente não o desabilitem, em vez disso, usam os comandos ATA FLUSH/FUA para garantir que os dados críticos dados pousam em armazenamento estável. Como eles geralmente são executados a partir das portas SATA conectadas ao chipset SB, a largura de banda é muito boa e o suporte ao driver é excelente.

No entanto, se usado com HDDs mecânicos, o padrão de acesso de gravação aleatório sincronizado (por exemplo: bancos de dados, máquinas virtuais) sofrerá muito em comparação com um controlador RAID de hardware com cache WB. Por outro lado, quando usado com SSDs corporativos (ou seja: com um cache de gravação protegido contra powerloss), o RAID de software geralmente se destaca e fornece resultados ainda mais altos do que o que é possível com as placas RAID de hardware. Dito isso, é necessário lembrar que os SSDs dos consumidores (leia-se: com cache de gravação não protegido), embora sejam muito bons em leitura e gravação assíncrona, oferecem IOPS muito baixo em cargas de trabalho de gravação sincronizada.

Considere também que os RAIDs de software não são todos iguais. O RAID de software do Windows tem uma má reputação, desempenho e até o Storage Space não parece muito diferente. O Linux MD Raid é excepcionalmente rápido e versátil, mas a pilha de E/S do Linux é composta de várias partes independentes que você precisa entender com cuidado para extrair o máximo desempenho. O RAID de paridade ZFS (ZRAID) é extremamente avançado, mas, se não estiver configurado corretamente, poderá fornecer muito IOPs ruins; o espelhamento + striping, por outro lado, funciona muito bem. De qualquer forma, ele precisa de um dispositivo SLOG rápido para o tratamento de gravação síncrona (ZIL).

Conclusão:

  1. se suas cargas de trabalho não forem sensíveis à gravação aleatória sincronizada, você não precisará de um cartão RAID
  2. se você precisar de uma placa RAID, não compre um controlador RAID sem cache WB
  3. se você planeja usar o software SSD, o RAID é o preferido, mas lembre-se de que, para gravações aleatórias sincronizadas e altas, é necessário um SSD protegido por powerloss (por exemplo: Intel S4600, Samsung PM/SM863, etc.). Para um desempenho puro, a melhor opção provavelmente é o Linux MD Raid, mas hoje em dia geralmente uso espelhos ZFS distribuídos. Se você não pode perder metade do espaço devido aos espelhos e precisa dos recursos avançados do ZFS, use o ZRAID, mas com cuidado pense na configuração dos seus VDEVs.
  4. se você, mesmo usando SSD, realmente precisa de uma placa RAID de hardware, use SSDs com caches protegidos contra gravação (o Micron M500/550/600 possui proteção parcial - não é suficiente, mas é melhor que nada - enquanto Intel DC e A série S possui proteção total contra perda de energia, e o mesmo pode ser dito para os SSDs Samsung da empresa)
  5. se você precisar de RAID6 e usar HDDs mecânicos normais, considere comprar uma placa RAID rápida com cache WB de 512 MB (ou mais). O RAID6 possui uma penalidade de alto desempenho de gravação, e um cache WB de tamanho adequado pode pelo menos fornecer um armazenamento intermediário rápido para pequenas gravações síncronas (por exemplo: diário do sistema de arquivos).
  6. se você precisar de RAID6 com HDDs, mas não puder/não quiser comprar uma placa RAID de hardware, pense cuidadosamente na configuração do RAID do software. Por exemplo, uma solução possível com o Linux MD Raid é usar duas matrizes: uma matriz RAID10 pequena para gravações de diário/logs de banco de dados e uma matriz RAID6 para armazenamento bruto (como servidor de arquivos). Por outro lado, o software RAID5/6 com SSDs é muito rápido, portanto você provavelmente não precisa de uma placa RAID para uma configuração de todos os SSDs.
151
shodanshok

O controlador RAID que você vê é barato e é basicamente um fakeraid. Depende até da sua placa principal fornecer algumas funções, como memória, e muitas delas não suportam, o que resulta em que você não pode carregar o driver.

Sobre o HW vs o próprio SW-RAID. Não uso mais o HW-RAID, a menos que seja uma caixa com o logotipo da EMC, por exemplo. Para todo o resto, mudei de volta para o SW-RAID muitas luas novamente por alguns motivos muito simples.

  1. Você precisa de hardware adicional e precisa combiná-los. Você também precisa combinar o firmware e mantê-lo sincronizado. Muitos discos não funcionarão corretamente e você terá picos na latência de IO sem motivo claro.

  2. O hardware adicional é caro, portanto você pode usar US $ 1000 adicionais (controlador decente com dois/três discos) para uma solução pequena melhor. Invista em mais discos e controladores padrão, memória ECC, CPU mais rápida. E um disco sobressalente no local, talvez se você planeja executá-lo por um período maior que o período de garantia ou não deseja pagar as taxas expressas pelo envio noturno.

  3. A atualização é uma dor, pois você precisa acompanhar os patches e o firmware do SO para disco e controlador. Isso pode resultar em uma situação em que a atualização/atualização não é mais possível.

  4. Em formatos de disco. Fornecedores suficientes usam algum layout interno para armazenar dados vinculados a uma revisão da combinação de hardware e firmware. Isso pode resultar em uma situação em que uma peça de reposição impossibilita o acesso aos seus dados.

  5. É um SPOF e um gargalo. Ter apenas um controlador atrás de apenas uma ponte PCI não oferece o desempenho e a redundância de que você realmente precisa. Com isso, também não há caminho de migração para migrar dados para outro conjunto de discos fora do alcance dos controladores.

A maioria desses pontos foi resolvida com as novas gerações de software ou soluções SW-RAID, como ZFS e BtrFS. Lembre-se de que, no final, você deseja proteger seus dados e não ter acesso rápido, mas lixo redundante.

7
hspaans

Você deseja uma solução de bateria ou cache com flash para qualquer controlador de hardware que comprar. Lamento muito não o fazer .

Mas, para responder à sua pergunta, a maioria dos controladores possui taxas de cache configuráveis ​​... então 100% cache e 0% O cache de gravação anula a necessidade de proteção da BBU. Seu desempenho de gravação será péssimo.

Não consigo responder à sua pergunta sobre RAID de software porque depende. Linux MD RAID é diferente do Windows Software RAID, que é diferente de algo como ZFS . Soluções como o ZFS podem ter um desempenho melhor que o hardware, porque aproveitam os recursos do servidor RAM e CPU).

7
ewwhite

Passei o último ano (ininterruptamente até 2014-2015) testando várias configurações paralelas do CentOS 6.6 RAID 1 (espelhado) usando 2 LSI 9300 HBA versos 2 controladores LSI 9361-8i RAID com sistemas construídos sobre o seguinte: 2U Supermicro CSE- Chassi 826BAC4-R920LPB, uma placa-mãe ASUS Z9PE-D16, 2 processadores Intel Xeon E5-2687W v2 de oito núcleos e 3,4 GHz de 3,4 GHz, espelhado Seagate ST6000NM0014 6TB SAS 12Gbs, 512 GB RAM. Observe que esta é uma configuração totalmente compatível com SAS3 (12Gbps).

Vasculhei artigos escritos sobre software de ajuste e uso o RAID do software Linux há mais de 10 anos. Ao executar testes básicos de E/S (dd-oflag = arquivos diretos de 5 a 100G, hdparam -t etc.), o RAID de software parece se acumular favoravelmente ao ataque de hardware. O RAID do software espelhado através de HBAs separados. Fui até o ponto de testar com as configurações padrão do kernel CentOS 6, kernel-lt e kernel-ml. Também experimentei vários ajustes de mdadm, sistema de arquivos, subsistema de disco e o/s sugeridos por vários artigos on-line escritos sobre o RAID de software Linux. Apesar de ajustar, testar, ajustar e testar, ao executar em um mundo de leitura, sistema de processamento de transações (com um banco de dados MySQL ou Oracle), eu descobri que executar um controlador RAID de hardware resulta em um aumento de 50 vezes no desempenho. Atribuo isso ao controle de cache otimizado de RAID do hardware.

Por muitos e muitos meses eu não estava convencido de que o RAID de hardware poderia ser muito melhor; no entanto, após uma pesquisa exaustiva sobre o RAID do software Linux, testes e ajustes, esses foram meus resultados.

4
Brent

A maioria dos escritores aqui são ignorantes de " furo de gravação ". Essa é a base que permite a criação de unidades de backup de batalhas de RAIDs de hardware versus a ausência de um desses RAIDs de software. Bem, para e. g., a implementação de RAID do software Linux suporta bitmaps de operações de gravação ou faz um recálculo completo de "paridade" em caso de desligamento não limpo. O ZFS sempre se esforça para escrever faixas completas para evitar essa inconsistência ou adiar a verificação novamente. Então, como um resumo, o RAID de software suficientemente inteligente hoje em dia costuma ser bom o suficiente para ser usado em vez de "quem sabe o que está dentro" do chamado "RAID de hardware".

Quanto à parte do cache da pergunta, isso realmente não importa muito, porque o próprio cache de gravação do sistema operacional pode ser muito maior do que o adaptador de "hardware".

2
poige

Eu trabalho isso o tempo todo. Depende muito do que você está fazendo e do nível de ataque que você apoia. Um controlador SW executando um Raid 0 ou 1 para o sistema operacional e nada de especial está bem. A execução de um controlador SW com um Raid 5 em um banco de dados está causando problemas! ALGUNS controladores de hardware oferecem melhor desempenho, mas isso depende se ele pode armazenar em cache e o chipset do processador da placa RAID. Além disso, nem todos os controladores de software são suportados por todos os sistemas operacionais. Às vezes, você pode precisar comprar um HW para executar o ESXi ... A menos que você use conexões sata.

0
The wacky guy III