Se você tiver duas unidades físicas:
RAID0: rápido, mas sem redundância. Qualquer erro na unidade matará toda a matriz. Algumas pessoas colocam armazenamento temporário no RAID0 (isto é, tempdb no MSSQL), mas eu ainda consideraria isso perigoso, pois você não perderá nenhum dado significativo se a matriz cair sobre você e haverá uma interrupção do servidor até a situação em que for reparada.
RAID1: Faça isso se você tiver duas unidades. Não há benefício no desempenho de gravação, embora você possa ver um aumento no desempenho de leitura com um bom controlador. O principal recurso do RAID1 é sobreviver a uma das unidades que estão morrendo.
Se você tiver três unidades físicas:
Suas opções são RAID5, o RAID10 de 3 unidades não padrão (ou RAID1E como os controladores IBM se referem a ele), se suportado. Obviamente, você pode usar o RAID1 e manter a unidade extra como reposição para quando uma das outras falhar, mas você deve manter peças sobressalentes em um ambiente de missão crítica de qualquer maneira, para que isso seja desnecessário.
O RAID5 oferece mais espaço que o RAID10 (duas unidades no valor de uma e meia), mas tem um problema de desempenho de gravação em potencial, pois para cada bloco gravado o controlador precisa ler o bloco de paridade, atualizá-lo e gravá-lo de volta. Esse problema de desempenho de gravação pode ser dobrado para gravações no banco de dados, pois há pelo menos duas gravações para cada atualização: uma no log de transações e outra nas áreas de dados reais. Como o espaço é barato hoje em dia, eu recomendaria o RAID10 de 3 unidades, se suportado para um melhor desempenho de gravação. O software RAID do Linux oferece isso, assim como muitos controladores IBM (eles chamam de RAID1E). Você pode encontrá-lo com outros nomes também, pois não é considerado um arranjo padrão, portanto não possui um nome padrão.
Tanto o R5 quanto o R10 acima de três oferecem a mesma redundância (qualquer unidade pode falhar por vez e a matriz sobrevive) e métricas de desempenho de leitura semelhantes (semelhantes a uma matriz RAID0 de duas unidades).
Se você tiver quatro unidades físicas:
Se você criar apenas uma matriz, existem duas opções (ignorando as variações "com hot spare"): RAID6 e RAID10 "tradicional" (um RAID0 de RAID1s).
Ambos oferecem o mesmo espaço (duas unidades dos seus quatro). O RAID6 oferece melhor redundância, pois qualquer uma das duas unidades pode falhar em um momento em que, como o RAID10 só pode sobreviver a quatro das seis possíveis situações de ausência de duas unidades. Ambos oferecem desempenho de leitura simialr, mas o RAID6 tem um problema de desempenho de gravação semelhante ao do RAID5 (o mesmo em um bom controlador, embora possa ser mais lento que o RAID5 em um mau controlador ou com o RAID de software, dependendo dos recursos de controle de E / S do SO. geralmente preferido para bancos de dados por motivos de desempenho - se você precisar de redundância extra, poderá usar seis unidades e ter um RAID0 ou 2 RAID1s de 3 unidades.
Depois de ter quatro ou mais unidades, as coisas ficam mais interessantes, pois você pode ter um par separado de matrizes RAID1. Isso pode oferecer benefícios significativos de desempenho com os discos giratórios, mantendo seus armazenamentos de dados em uma matriz e os logs de transações em outra - isso pode reduzir consideravelmente os movimentos da cabeça em alguns casos e os tempos de busca devido ao acesso "aleatório" são um verdadeiro problema para o desempenho. Para um data warehouse, assumindo que isso significa que haverá muito poucas gravações relativamente falando, a divisão de logs de transações de arquivos de dados pode ter um benefício mais limitado, mas você ainda pode considerar várias matrizes e, em vez disso, particionar seus dados sobre elas para obter um desempenho potencialmente melhor de leitura .
Se você tiver mais de quatro unidades:
Suas opções ficam abertas aqui e realmente depende de quais são seus dados e de quais são as cargas / padrões de atualização / leitura esperados. Por exemplo, uma vez que nossos serviços são executados em unidades de 12 a 70 GB:
- 4x como RAID10 para as áreas do sistema (SO, SQL Server (MSSQL no nosso caso), swap, tempdb).
- 4x como RAID10 para os arquivos de dados
- 4x como RAID10 para os logs de transações
Tempdb é mantido na matriz do sistema. Podemos movê-lo para as outras duas matrizes e apenas executar a matriz do sistema como 2 unidades em RAID1, pois a velocidade extra não é muito necessária para os blocos do sistema (pois isso é realmente significativo durante a inicialização ou a troca e garantimos que haja RAM suficiente para que ele nunca precise ser trocado), mas com a maneira como pagamos ao provedor de hospedagem por esse conjunto de máquinas, não nos custaria menos que abandonássemos as duas unidades. Os backups também vão para a matriz do sistema, antes de serem copiados para os locais de backup off-server, off-site e off-line.
É claro que isso é um exagero para alguns bancos de dados (não faria sentido executar um pequeno servidor de blog dessa maneira!), Mas nosso aplicativo principal funciona muito bem com esse arranjo.
Se você tiver seis unidades, considere três matrizes RAID1 ou duas matrizes RAID10 de três unidades.
Geralmente
Infelizmente, não existe uma "prática recomendada" simples, pois depende muito do tamanho e dos padrões de uso do seu sistema. As únicas regras gerais que posso pensar ou são:
- Evite RAID5 e 6, a menos que você saiba que o problema de desempenho de gravação não o afetará significativamente
- com quatro ou mais unidades baseadas em disco giratório, considere dividir coisas em várias matrizes para reduzir os movimentos da cabeça (o benefício total de várias matrizes não se aplicará a bons SSDs, pois não há movimentos físicos da cabeça a serem considerados, embora você possa ver alguma diferença dependendo de estratégia de combinação de gravação do controlador dos SSDs e assim por diante)
- teste, teste e teste novamente: é sempre bom tentar encontrar tempo para verificar se o arranjo escolhido é realmente ideal
RAID de hardware ou software?
Antes, o desempenho do RAID de software era inferior ao do RAID de hardware para RAID 5 devido aos cálculos de paridade e a todos os arranjos devido às interfaces lentas entre as unidades e a CPU. Com as CPUs modernas, o problema de paridade do calc não é realmente um problema, mas se você tiver unidades muito rápidas, o RAID de hardware ainda poderá vencer se a velocidade total das unidades puder chegar a qualquer lugarpróximo (dentro de uma ordem de grandeza, a um palpite) à rapidez com que a máquina pode conversar com o controlador de disco. Se você tiver um array RAID1 de quatro unidades (ou seja, quatro cópias dos mesmos dados para muita redundância) com software RAID, cada operação de gravação resultará no envio do SO quatro lotes de dados ao controlador de E / S, possivelmente sequencialmente - com um hardware controlador, o sistema operacional envia apenas uma solicitação de gravação e o controlador envia isso para as quatro unidades, provavelmente em paralelo.
Um bom RAID de hardware também pode oferecer outras vantagens: alguns controladores de alta especificação possuem cache de gravação com backup de bateria, para que as gravações pendentes não sejam perdidas em um corte de energia, mesmo que seu no-break falhe, por exemplo.
O RAID de software é obviamente mais barato e mais portátil, para que você não esteja vinculado a um controlador específico se precisar mover as matrizes devido a falha do controlador / máquina.
O RAID barato de hardware geralmente combina os aspectos negativos do RAID de software e hardware com poucos (ou nenhum) dos benefícios de ambos, pelo que é melhor evitar.
Eu costumo usar RAID de software em nossos servidores de desenvolvimento, teste e UAT e um bom RAID de hardware para servidores que executam serviços ao vivo / voltados para o público.