it-swarm-pt.tech

Devo executar meu banco de dados com uma configuração RAID 5?

Ouvi dizer que o desempenho de gravação do RAID 5 pode ser terrível às vezes. Embora eu queira a redundância que ele fornece, não quero sacrificar meus tempos de inserção/atualização do banco de dados.

Devo me preocupar com isso e, em caso afirmativo, qual seria a recomendação para obter redundância com bom desempenho de gravação?

13
Scott Saad

RAID 10 é geralmente recomendado, pois o I/O é tão aleatório. Aqui está um exemplo. Os cálculos são um pouco simplificados, mas bastante representativos.

Digamos que você tenha uma matriz de 6 unidades e suas unidades podem fazer 100 E/S por segundo (IOPS). Se você tiver 100% de leituras, todas as seis unidades serão usadas e você terá cerca de 600 IOPS para RAID 10 e RAID 5.

O pior cenário é 100% de gravações. Nesse cenário, o desempenho do RAID 10 será cortado pela metade (já que cada gravação vai para duas unidades), portanto, obterá 300 IOPS. O RAID-5 converterá cada gravação em duas leituras seguidas por duas gravações, portanto, obterá 1/4 do desempenho ou cerca de 150 IOPS. É um grande sucesso.

Seu padrão real de leitura/gravação estará em algum lugar entre esses dois extremos, mas é por isso que o RAID 10 é geralmente recomendado para bancos de dados.

No entanto, se você não tiver um servidor de banco de dados ocupado, poderá até mesmo usar RAID-6. Costumo fazer isso se souber que o banco de dados não será um gargalo, pois oferece muito mais segurança do que RAID 10 ou RAID 5.

23
TorgoGuy

bancos de dados transacionais

RAID-5 é relativamente lento para gravar, pois o controlador precisa carregar dados suficientes para recalcular a paridade em uma gravação. As operações de gravação incorrerão em pelo menos quatro operações de disco:

  • Leitura no bloco de paridade

  • Lendo no bloco antigo (assumindo que já não esteja no cache) para XOR o valor com o bloco de paridade.

  • Escrevendo o novo bloco de paridade (bloco de paridade antigo XOR bloco de dados antigo XOR novo bloco de dados)

  • Escrevendo o novo bloco de dados.

Se o sistema não usar o cache write-back, isso significa que todas essas operações estão no caminho crítico para a conclusão de E/S. Freqüentemente, esse é o caso com gravações de banco de dados - na verdade, a Microsoft (por exemplo) tem um programa de certificação para SAN equipamento para uso com servidor SQL que exige que os fornecedores garantam esse comportamento. Às vezes, mais antigo O equipamento RAID-5 não usou essa otimização e teve que recalcular a paridade de toda a faixa.

RAID-1 tem um espelho para cada unidade e não precisa ler dados adicionais para calcular a paridade. Isso significa que as gravações precisam de muito menos E/S física.

RAID-5 fica em algum lugar no meio, com o volume dividido em vários volumes RAID-5, que por sua vez são fracionados. Em um RAID-50 feito de grupos fracionados em um esquema 3 + 1, uma gravação gera no máximo três solicitações de E/S de disco adicionais. Se você se sentir inclinado, pode ver RAID-5 e RAID-10 como casos especiais de RAID-50. RAID-50 é usado principalmente para fornecer grandes volumes em muitos discos físicos

Outros esquemas de paridade, como RAID-6 (um esquema de paridade com dois discos redundantes por conjunto) também existem. Os discos modernos são grandes o suficiente para que a reconstrução de uma matriz possa levar muito tempo - tempo suficiente para que o risco de uma segunda falha de disco durante o reconstruir é bastante significativo. O RAID-6 atenua esse risco por ter um segundo disco de paridade, exigindo três falhas de disco para causar perda de dados. Um truque semelhante aos esquemas RAID-50 pode ser usado para fazer matrizes RAID-60.

Finalmente, um único par espelhado (conhecido como RAID-1) pode fornecer redundância e desempenho bom o suficiente para algumas tarefas. Em particular, você provavelmente descobrirá que o RAID-1 oferece rendimento suficiente para uma grande quantidade de tráfego de log do banco de dados. Mais sobre isso abaixo.

Se você tiver uma carga de trabalho pesada de gravação, provavelmente obterá um ganho de desempenho de um volume RAID-10. Isso pode ser uma vitória, pois você provavelmente pode obter a taxa de transferência necessária de um número menor de discos físicos, supondo que os discos tenham espaço suficiente). Alguns itens, como logs ou áreas temporárias em um servidor de banco de dados, devem estar em volumes RAID-1 ou RAID-10, pois eles recebem muito tráfego de gravação.

Logs

Os volumes de log são caracterizados por um padrão de acesso de dados principalmente sequencial e são essencialmente um buffer de anel que consiste em comandos ao longo das linhas de 'gravar esses dados neste bloco'. Eles são gravados como um produtor pelo mecanismo DBMS principal e processados ​​como um conum pela função de leitor de log. Um único par espelhado realmente controlará uma grande quantidade de tráfego de log.

sistemas de leitura pesada e servidores de arquivos

Em um sistema de leitura pesada, como um data warehouse, você pode querer usar um ou mais volumes RAID-5. Em um servidor de arquivos, os acessos ao disco serão em grande parte feitos em uma base de arquivo inteiro, portanto, as gravações provavelmente gravarão a maioria dos blocos que constituem o bloco de paridade de qualquer maneira. Neste caso, a penalidade de desempenho para RAID-5 será mais leve.

No passado, a economia de custo no disco pode ter sido significativa, mas é menos provável que isso seja um problema agora.

cache de write-back e RAID-5

Em um SAN ou controlador RAID interno com um cache de bateria, você pode habilitar o cache 'Write-back'. Isso armazena em cache as gravações e retorna o controle para o aplicativo. O I/O é relatado pelo controlador como concluído. No entanto, ele não necessariamente grava os dados no disco imediatamente. Este recurso permite que as operações de leitura/gravação de paridade RAID-5 sejam substancialmente otimizadas e pode atenuar a penalidade de desempenho de gravação para volumes RAID-5x.

No entanto, isso ainda traz um pequeno risco de problemas de integridade de dados. O sistema Host foi informado de que esta gravação foi concluída, quando este não é o caso. É possível que uma falha de hardware crie inconsistências de dados entre (digamos) os volumes de log e de dados em um servidor de banco de dados. Por esse motivo, o cache write-back não é recomendado para sistemas transacionais, embora possa ser um ganho de desempenho para algo como um processo ETL.

Resumo

O espaço em disco é tão barato hoje em dia que os sistemas transacionais provavelmente deveriam usar RAID-1 ou RAID-10 para volumes de log e RAID-10 para volumes de dados. O tamanho do disco físico provavelmente será muito maior do que o banco de dados e o RAID-10 permitirá mais rendimento de gravação para o mesmo número de discos, reduzindo potencialmente o número de volumes de disco necessários para dar suporte ao sistema.

Em algo como um data warehouse, você ainda pode mastigar espaço com tabelas de fatos grandes e fortemente indexadas, de modo que pode obter um pequeno ganho de preço com volumes de dados RAID-5 ou RAID-50. No entanto, os logs e o tempdb ainda devem ser colocados em um volume RAID-10, pois provavelmente terão muito trabalho durante o processamento de ETL. No entanto, a economia de custo no disco provavelmente será bastante pequena.

22
ConcernedOfTunbridgeWells

Depende de quanto você está escrevendo.

Se for um "aplicativo da web" bastante leve, é improvável que você veja qualquer impacto no desempenho do RAID5.

Se você estiver construindo um data warehouse de vários GB com grandes ETLs, o buffer de gravação no RAID 5 irá transbordar rapidamente e você irá direto para o "desempenho de gravação ruim" do RAID 5.

Cada gravação RAID5 causará pelo menos 3 gravações (mais um cálculo de CRC). Quando armazenado em buffer, isso é bom e rápido (pequenas rajadas de atividade - atualizações e inserções de registro único). Se forem gravações sustentadas (grandes inserções/atualizações em massa), isso será notado.

É um equilíbrio entre desempenho e espaço. RAID 10 (espelho de unidades distribuídas) oferece desempenho e resiliência, mas redução de 50% na capacidade.

RAID5 oferece maior capacidade, bom desempenho de leitura, mas baixo desempenho de gravação (grande).

3
Guy

Bem, isso depende muito de sua tolerância a falhas/riscos. RAID5 tem muitos problemas . Meu servidor de banco de dados atualmente tem duas unidades espelhadas e, se eu fosse escalá-las, optaria por algo com mais paridade, provavelmente RAID6 ou RAID10.

Além disso, se seu aplicativo for crítico para o tempo de atividade, provavelmente eu recomendaria ter dois servidores de banco de dados com replicação, master-master ou hot spare ou qualquer outro. RAID só ajuda contra falhas de disco, mas há muito mais coisas que podem dar errado em um servidor :)

3
mikl

Resposta curta: não.

Resposta longa: a menos que você tenha um banco de dados muito pequeno ou requisitos mínimos, não. A recuperação de dados depende muito das operações de E/S de disco por segundo, e a sobrecarga de striping consumirá seu acesso ao disco com o tempo, especialmente com longas execuções de consulta. A maioria dos bancos de dados é executada em uma configuração de estilo RAID 10 ou com volumes específicos contendo partições de dados. Sim, o RAID 10 custará gravações, mas seu desempenho de leitura (com a configuração correta) irá muito para cima.

2
Avery Payne

Para alguns guias do tipo "por que não", isso sempre foi muito popular entre os DBAs Oracle com quem trabalhei ...

A batalha contra qualquer Raid Five - http://www.miracleas.com/BAARF/

2
Mark Regensberg

RAID 1, essa é minha resposta final

Razões:

o par espelhado fornece redundância adequada para discos com falha e o RAID continua a funcionar no último disco.

o par espelhado produz maior desempenho de E/S para leituras se você colocar seus dados e índices com cuidado ... [dica: Use volumes separados para dados e seu (s) índice (s)]. Você pode obter ainda mais desempenho duplicando seus controladores.

2
ninegrid

qual seria a recomendação para obter redundância com bom desempenho de gravação?

Um grande cache de write-back. Aumente o RAM em seu controlador RAID de hardware ou o RAM disponível para sua solução RAID de software (ou seja, para o MDADM do Linux, aumente a RAM do sistema, balões MDADM para usar de outra forma sistema não utilizado RAM como cache de gravação). Este conselho vale para determinados valores de "grande" - se você frequentemente (5% do tempo?) gravando dados a uma taxa rápida o suficiente para preencher o cache de gravação, não importa quão grande seja, isso fará pouca diferença.

1
David Hicks

Na verdade, trata-se de separar seus arquivos de dados, arquivos de log, do seu arquivo do sistema operacional. Os registros são gravados sequencialmente Os dados incorrem em muitas leituras aleatórias e algumas gravações aleatórias

Ao construir configurações de RAID que suportam essas características, você melhora muito o desempenho

Raid 1 - o espelhamento é ótimo para os arquivos de registros O Raid 10 é bom para os seus arquivos de dados. Também vale a pena examinar a separação de TempbDB e backups em unidades separadas. Adicionar grupos de arquivos é outra maneira de aumentar o desempenho. Quando se trata de SANs, isso não é tão claro. Depende se você está construindo configurações específicas de raid para cada LUN ou contando com o número de eixos.

1
CPU_BUSY

Seguindo o espírito de artigo recente do blog StackOverflow dizendo que não devemos apresentar novamente as respostas já disponíveis na Internet, aponto para você this

O RAID-5 não é o único na redundância que fornece, apenas o faz enquanto consome menos discos adicionais do que algumas alternativas. Você pode escolher outra coisa com redundância igual ou melhor e melhor desempenho de gravação

0
The Archetypal Paul

Executar um banco de dados fora do RAID5 geralmente é um erro. Só vi isso ser feito em dois casos - bancos de dados bem projetados que faziam uso intensivo de leitura com poucas gravações e bancos de dados onde "desperdiçar espaço" devido ao RAID5 não era politicamente viável.

RAID5 destruirá o desempenho transacional.

Além disso, se você está considerando o RAID5, veja se consegue fazer o RAID6 funcionar. A confiabilidade teórica é muito melhor, embora a confiabilidade do mundo real muitas vezes seja pior devido a implementações imaturas.

0
carlito