Desempenho de RAID de software x hardware e uso de cache

73

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 só for possível 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?

Sou só eu
fonte
Algo que eu notei que favorece o ataque HW: Na minha experiência, se você estiver executando um ataque SW e o sistema fizer algo diferente de um desligamento limpo, você culpará a matriz e precisará reconstruí-lo. O ataque HW não falha se não estava gravando quando o sistema foi desativado.
Loren Pechtel

Respostas:

146

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 o poder de computação era limitado, 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 acima de 4 GB / se desempenho da síndrome RAID-6 acima de 3 GB / s durante um núcleo de execução única .

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 aleatório de gravação (e lê esse hit) e basicamente transforma gravações aleatórias em gravações sequenciais. Um 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, eles 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 façanunca, 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 de um cache privado rápido para uma programação / apagamento eficiente 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 controlador e dependente firmware (por exemplo: em um Dell S6 / i com 256 MB de cache WB e de cache do disco habilitado , tive perdas durante múltipla, testes de queda de energia planejado), 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 supõe (certo) 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 do consumidor (leia-se: com cache de write-back 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 do ZFS (ZRAID) é extremamente avançado, mas, se não estiver configurado corretamente, pode oferecer IOPs muito 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).

Bottom line:

  1. se suas cargas de trabalho não são sensíveis à gravação aleatória sincronizada, você não precisa 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 puder perder metade do espaço devido aos espelhos e precisar dos recursos avançados do ZFS, use o ZRAID, mas pense cuidadosamente 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 tem proteção parcial - não é suficiente, mas melhor do que nada - enquanto as séries Intel DC e S têm perda total de energia proteção e o mesmo pode ser dito para os SSDs corporativos da Samsung)
  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 pequena matriz RAID10 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.
shodanshok
fonte
Muito obrigado pelas ótimas explicações, eu não fazia ideia de que as placas RAID desativavam o cache nos HDDs. Esse não é o tipo de servidor que justifica o investimento de quase US $ 800 +, portanto, estarei lendo um pouco mais as configurações de software RAID e provavelmente continuarei com isso.
precisa saber é o seguinte
2
O OP está falando sobre um hipervisor. O RAID5 deve estar fora de questão, e o cache de gravação será obrigatório.
ewwhite
11
Na realidade, mesmo em 2016, um software RAID 5/6 de 6 unidades grava a <25 MB / s, enquanto uma placa RAID de hardware adequada de 2010 grava a> 500 MB / s. Isso ocorre nos espaços de armazenamento Intel RSTe e Windows. Só não entendo qual é o gargalo em uma CPU moderna.
Monstieur 15/03/19
11
O problema com o software RAID 5/6 é que as gravações geralmente acionam uma leitura-modificação-gravação, que por sua vez diminui consideravelmente os discos. Um controlador RAID de hardware habilitado para BBU pode combinar várias gravações em um único acesso / transação ao disco, melhorando bastante o desempenho.
shodanshok
11
"[leituras aleatórias] quando usadas com SSDs, geralmente são excelentes" - Se o SSD não é um SSD corporativo (geralmente isso significa que não possui um capacitor para proteção contra perda de energia) e não mente, mesmo os SSDs podem têm IOPS extremamente baixo para operações como seqüencial fsync(). Consulte este artigo , que mostra que um SSD Samsung NVMe sem capacitor realiza apenas ~ 250 fsyncs por segundo (eu também medi isso). SSDs com capacitor fornecem ~ 30x mais fsyncs / s, um controlador RAID de hardware com bateria 100x mais.
NH2
7

Você desejará uma solução de bateria ou cache com flash para qualquer controlador de hardware que comprar. A maioria se arrepende de não ter feito isso .

Mas, para responder à sua pergunta, a maioria dos controladores possui taxas de cache configuráveis ​​... portanto, 100% do cache de leitura e 0% do cache de gravação negam 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. O Linux MD RAID é diferente do Windows Software RAID, que é diferente de algo como o ZFS . Soluções como o ZFS podem ter um desempenho melhor que o hardware, porque utilizam os recursos de RAM e CPU do servidor.

ewwhite
fonte
Com "o desempenho de gravação será péssimo", você quer dizer que será o mesmo que RAID de software ou RAID de hardware sem cache? Ou existe uma penalidade para gravar o desempenho além disso, se o cartão estiver dedicando o cache à leitura?
precisa saber é o seguinte
Depende do que você está fazendo. Se você não possui um aplicativo com gravação intensa, o impacto no desempenho pode não ser um problema.
precisa saber é
É um HOST Proxmox com VMs do Windows usado para hospedagem de email e web. Não há muito uso de banco de dados, mas o serviço de email provavelmente possui muita atividade de gravação. Atualmente, estou apenas debatendo se ter um cartão de cache somente leitura vale a pena pelo RAID de software.
precisa saber é o seguinte
Use um controlador RAID suportado por Flash para virtualização.
precisa saber é
11
Executamos um servidor de correio cyrus com cerca de 4000 contas usando o software RAID. As contas ativas que atingiam todos os dias eram mais ou menos 300 a 600. O desempenho foi notavelmente pior do que o nosso servidor de correio cyrus primário com RAID de hardware e uma BBU. O cache do controlador BBU e RAID oferece garantia de dados, mas também desempenho. Isso ocorre porque, quando os dados chegam ao controlador, eles podem dizer ao sistema operacional que a gravação está concluída. Caso contrário, seria necessário aguardar o disco rígido para sinalizar que a gravação está concluída. Isso economiza ciclos de relógio significativos. Movido para o RAID de hardware e resolvido.
Labradort
7

O controlador RAID que você vê é barato e é basicamente um falso. Depende até da sua placa principal fornecer algumas funções, como memória, e poucas placas possuem suporte, 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.

hspaans
fonte
3
Discordo. Muitas pessoas estão felizes com os controladores Dell, HP, IBM e LSI RAID de ponta. Mas, honestamente, a maioria dos servidores de qualidade modernos já possui soluções RAID integradas, portanto, a idéia de comprar um controlador individual é um pouco antiquada. As soluções de software RAID também precisam levar em consideração as cargas de trabalho de gravação de baixa latência. O ZFS possui um ZIL, mas muitas outras implementações de RAID por software estão faltando nessa frente.
precisa saber é
2
Eu também diferiria com o seu último parágrafo, RAID é disponibilidade, não proteção. A proteção requer backups, não RAID.
Rowan Hawkins
4

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 SAS de 6 TB 12 GB, 512 GB de 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 5k 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.

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.

Brent
fonte
2

A maioria dos escritores aqui são ignorantes do " buraco da 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, por exemplo, 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".

poige
fonte
11
Esse é outro motivo para evitar placas RAID de hardware sem um cache WB protegido adequado. Uma observação sobre o Linux MD Raid: não é totalmente imune a falhas de gravação. Como não possui proteção contra perda de energia, no caso de uma perda repentina de dados, os dados serão perdidos (pense em dados em trânsito e / ou gravações parciais). Claro que isso acontecerá mesmo no cenário de disco único, mas a natureza da paridade ou o RAID5 / 6 amplificam isso. No pior cenário, os metadados críticos do sistema de arquivos podem ser corrompidos, no entanto, os sistemas de arquivos modernos são resistentes o suficiente para se recuperar muito bem. Alguns dados podem ser perdidos, no entanto.
shodanshok
@shodanshok, você está totalmente errado. Pense em
poige
11
Muitas baterias, se mantidas em bom estado, podem ligar o cache WB por 24 a 96 horas, o que é bastante tempo para restaurar a energia, exceto em situações realmente extremas. Além disso, o controlador moderna mudou para NVRAM (leia-se: flash) de memória como armazenamento de longo prazo, de modo que em caso de uma falha de energia uma pequena bateria / ASSESSUPLAN irá liberar o conteúdo do cache na memória NV que pode reter dados por meses ou anos em outras palavra, um controlador RAID BBU irá evitar RAID5 / 6 furos em (quase) todas as circunstâncias.
shodanshok
11
Você disse que é imune a escrever um buraco. Os desenvolvedores dizem que não , embora tenham dito que isso não deveria importar muito no uso no mundo real.
shodanshok
11
Desculpe, mas você escreveu: "Esta é 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" . Isso está errado . As placas RAID de hardware adequadas oferecem proteção adicional , e eu lhe disse várias vezes que essa é a opinião dos mesmos desenvolvedores de LSR. Agora, faço uma pergunta: sua afirmação é boa ou errada? Como está errado, edite sua resposta ou outro usuário pode ser enganado por essa bobagem.
shodanshok
0

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.

O maluco III
fonte