Qual é a configuração RAID recomendada para um banco de dados Oracle?

16

O RAID (matrizes redundantes de discos baratos) vem com configurações diferentes (RAID-0, RAID-1 ...). Qual é a configuração RAID recomendada que devo definir e usar ao instalar um banco de dados Oracle. O banco de dados será usado principalmente como um data warehouse.

Eddie Awad
fonte
RAID0 e RAID1 são coisas totalmente diferentes. Você usa RAID0 somente para desempenho e RAID1 somente para tolerância a falhas em caso de falha da unidade.
Jonas
4
O RAID0 nunca deve ser usado em um servidor de banco de dados. A menos que você goste de restaurar da fita.
mrdenny

Respostas:

13

Depende. Ao analisar um data warehouse, se você não tiver um design específico em mente, o gerenciamento automático de armazenamento pode ser uma excelente rota.

Considere a discussão em AskTom , Fóruns da OTN , Fóruns da OTN 2 e Fóruns da OTN 3 .

Não existe uma maneira certa de lidar com as coisas, e as respostas mudam com base em uma série de fatores de hardware e rede. Para descobrir por si mesmo, pré-carregue um data warehouse de amostra (apenas um show ou dois, o suficiente para jogar) em uma máquina baseada em ASM, em uma SAN com o Raid sendo virtualizado pelo linux e em uma máquina de ataque baseada em hardware.

Cronometrando os resultados das consultas nos três ambientes, você poderá descobrir qual metodologia funciona melhor para você em termos de desempenho. Implantei bancos de dados usando ataques virtuais baseados em ASN e Linux, e um ataque virtual se comportou um pouco melhor (alguns anos atrás.) No entanto, suspeito que isso tenha ocorrido em parte à maneira como as unidades foram configuradas.

Não existe uma resposta correta singular. Se você puder nos fornecer mais detalhes sobre os requisitos de tamanho e desempenho, talvez seja possível explorar vários casos de teste.

--Editar--

Cada " grupo de discos " pode ser composto de um ou mais discos, diretórios ou arquivos no subsistema apropriado. A Oracle recomenda "Para obter melhor desempenho e confiabilidade, escolha um dispositivo RAID ou um volume lógico em mais de um dispositivo físico e implemente a metodologia Stripe-and-Mirror-Everything (SAME)". ao colocar arquivos em um sistema de arquivos. É como se a Oracle estivesse recomendando RAID 1 + 0.

Grupos de discos gerenciados pelo ASM, no entanto, "Um grupo de discos de redundância normal requer no mínimo dois grupos de falhas (ou dois dispositivos de disco) se você estiver usando o espelhamento bidirecional. O espaço em disco efetivo em um grupo de discos de redundância normal é metade da soma de o espaço em disco em todos os seus dispositivos "aparentemente fornece automaticamente o espelhamento.

Esses dispositivos podem ser compostos por dispositivos RAID e assim por diante. Em testes práticos, quando eu estava configurando data warehouses RAID, um RAID 5 virtual simples no sistema de arquivos oferecia um desempenho aceitável, e o ASM adicional não agregava benefícios de desempenho. Nesse tipo de tarefa de otimização, primeiro identifique seus recursos e, em seguida, teste todas as configurações possíveis, pois às vezes os resultados podem ser extremamente contra-intuitivos.

Brian Ballsun-Stanton
fonte
1
Sons RAID virtuais muito engraçado: /
jcolebrand
10

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.

David Spillett
fonte
5

O " Banco de Dados Oracle Guia de Performance Tuning " tem um capítulo dedicado à configuração I / O . Em resumo:

  • Usar striping (RAID de hardware, RAID de software, ASM)
  • Não use RAID5 para arquivar e refazer logs
  • Alinhar o tamanho do bloco do sistema de arquivos e o tamanho do bloco do banco de dados
Benoit
fonte
4

Em alguns casos, JBOD é a resposta correta (ou seja, não RAID).

O problema é que, se você tem grupos de RAID muito grandes, não tem flexibilidade para especificar como o armazenamento físico é organizado no banco de dados, como garantir que os índices e registros de uma tabela sejam armazenados em eixos separados, e certificando-se de equilibrar as gravações em todos os seus discos.

Você pode usar a distribuição (RAID0) para equilibrar as gravações, mas se for um grande grupo, não será possível separar os índices x os registros.

O espelhamento (RAID1) é tolerante a falhas e é mais rápido para leituras (como você pode ler em qualquer eixo que não esteja ocupado), mas pode ser mais lento para gravações, pois é necessário aguardar a gravação das duas cópias.

Eu nunca iria RAID5 ou RAID6 em um banco de dados. Se os dados forem importantes, compre mais discos e use o RAID1; O RAID5 / 6 é lento (especialmente em software) e, com os tamanhos atuais de disco rígido, pode levar dias para ser reconstruído após a substituição de discos com falha por um grande grupo de discos ... sem mencionar que a maneira como a maioria dos sistemas RAID5 / 6 lida com erros de paridade é apenas recalcular a paridade ... mas as probabilidades são: a falha está nos dados, não a paridade, mas você não tem idéia de onde estava a falha. (infelizmente, não acho que exista algo como LOCKSS para bancos de dados)

...

O layout mais interessante que eu já vi no banco de dados envolveu ter duas partições por eixo - a parte mais interna do disco foi usada para o banco de dados de produção, as seções superiores do disco foram usadas para backups. (e eles garantiram que uma partição não fosse copiada para o mesmo eixo; acho que havia vários bancos de dados; portanto, cada um fez backup nos discos de outro). Isso lhes dava a vantagem de espalhar coisas por mais eixos durante o dia de trabalho e, à noite, eles executavam backups.

Suponho que haveria uma recuperação mais lenta se algo desse errado e você precisasse restaurar, pois algumas leituras do disco externo acontecem enquanto os bancos de dados estão em uso durante o dia, mas sempre há trocas em tudo.

...

De qualquer maneira, o argumento que estou tentando enfatizar - não há uma resposta que se encaixe em todas as situações. Se houvesse, os DBAs ficariam sem empregos e as empresas comprariam dispositivos de banco de dados pré-criados.

Os bancos de dados com os quais lido são o que meu chefe chama de 'WORN': Escreva uma vez, leia nunca; ele está brincando, mas "data warehouse" pode significar qualquer nível de atividade ... Eu vi alguns que foram carregados em fita todas as noites / semana (e eram apenas cópias da instância OLTP, e nos ajudaram a verificar se as fitas estavam boas) e enormes trabalhos de análise foram executados neles, e outros em que há um fluxo constante de informações e leituras ocasionais, mas não existe uma competição real por recursos.

Joe
fonte
1
Grr por não ter votos positivos. Voltarei a esta noite, porque gosto muito de alguns de seus pontos. Também sou um grande fã de JBOD ou, de preferência, muitos pares de RAID1.
jcolebrand
@jcolebrand: na verdade, depois de postar isso, li o 'ASM' que Brian Ballsun-Stanton mencionou e parece que é o Oracle manipulando espelhamento + striping, em vez de no nível do OS / FS / hardware, por isso fizemos pontos semelhantes, mas ele deu uma solução melhor para instalações recentes do Oracle.
Joe
O que requer um JBOD como você recomendou, sim?
jcolebrand
@ jcolebrand: praticamente. (que seria aconselhável, mas eu não acho necessário )
Joe
3

Minha recomendação para servidores é sempre o RAID 5 . O tempo e o esforço gastos na recuperação do seu primeiro disco rígido com falha serão sempre memoráveis. Se você configurar matrizes RAID, eu recomendo que você padronize em um único tamanho de unidade e guarde 2 discos rígidos sobressalentes na sala do servidor. Uma unidade vai mal? Coloque uma das substituições em (e deixe a matriz reconstruir). Eu vi as matrizes RAID ficarem mais difíceis porque uma segunda unidade falhou enquanto aguardavam a chegada da primeira (a entrega no dia seguinte ainda era muito tarde).

Tangurena
fonte
Mas mudar os discos rígidos não é o domínio do DBA, é? Os discos de monitoramento para a vida útil e a taxa de falhas são para as ferramentas automatizadas da multidão do SF. Não vamos duplicar o trabalho e destruir os motivos da especialização. Nós são dba de depois de tudo;)
jcolebrand
Raid 5 implementado onde? Hardware? Programas? Oráculo? Em quantos discos? E o conjunto de unidades recomendado pela Oracle? Não é para isso que servem os logs de refazer archive?
Brian Ballsun-Stanton
2
O RAID5 pode ter problemas significativos de desempenho de gravação. RAID10 é mais comum para servidores de banco de dados.
David Spillett
@jcolebrand, Muitas empresas em que trabalhei tratam administradores de rede == administradores de servidores == administradores de bancos de dados. Em algumas, existem poucas pessoas com acesso ao datacenter de produção, portanto, essas pessoas precisam usar 2 chapéus de uma vez. Em muitos para quem trabalhei, os administradores de servidor não sabem o que está acontecendo, portanto, eu me envolvo, por isso preciso conhecer também o trabalho deles.
Tangurena 6/01/11
Bem, isso é legal e é péssimo ao mesmo tempo. Feliz por ter a voz da experiência;) [PS: Mina tem sido o +1]
jcolebrand
2

Quantos dados você planeja usar e com que frequência vai ler ou gravar no sistema? Há muito planejamento para isso, o suficiente para que algumas pessoas dediquem uma carreira acadêmica inteira ao assunto.

Normalmente, eu diria para você ir à Wikipedia e ler o artigo antes de continuar, pois existem alguns tipos de RAID e cada um é melhor usado em um local diferente.

O básico é assim:

RAID0

Bom para jogadores de vídeo. Ruim para praticamente qualquer outra pessoa. Não seria ruim usar isso para um servidor de cache que não precise manter os dados por um período de tempo. Depois que um disco falha, o sistema está inoperante. Fim de jogo.

RAID1

Ótimo para confiabilidade. Não há muita capacidade de expansão. Muito bom na velocidade.

RAID5

A combinação preferida entre RAID0 e RAID1 (mais ou menos).

Agora, depois disso, realmente se torna quase algo que deve ser solicitado no ServerFault, devido ao fato de ser mais uma configuração do servidor do que o design do banco de dados. Sempre discuta o desempenho do servidor com o administrador do servidor. É para isso que eles estão lá. Se este não fosse um beta privado, eu votaria em fechar para migrar você para lá.

jcolebrand
fonte
2
Embora ServerFault certamente não seja um lugar errado para esta pergunta, provavelmente está correto aqui. Os problemas de desempenho de E / S são algo que um DBA deve estar ciente.
precisa saber é o seguinte
@ David Concordo plenamente, mas há uma diferença no beig consciente e especificando você mesmo. Na minha experiência, nunca foi uma tarefa de uma pessoa quando o site seria grande e ocupado. Duas cabeças pensam melhor que uma e tudo o que
jcolebrand