Olá,
Quando falamos em bancos de dados, a primeira coisa que vêem em nossas mentes é a preocupação com a performance, mas segurança para mim, realmente é fundamental. Neste artigo irei comentar um pouco sobre o uso da tecnologia RAID, mais especificamente sobre o RAID 0, RAID 1 e a junção dos dois que é um híbrido entre RAID 0 e RAID 1. Outra coisa que irei comentar é sobre a diferença entre RAID 10 (1+0) e RAID 01 (0+1) que são implementações completamente diferentes e que às vezes muitos profissionais de TI não percebem. Em resumo, mostrarei porque uma configuração em RAID 10 (1+0) tem uma certa superioridade em relação a uma configuração em RAID 01 (0+1).
O que é RAID?
- RAID por hardware é sempre uma controladora de disco, isto é, um dispositivo que pode através de um cabo conectar os discos. Geralmente ele vem na forma de uma placa adaptadora que pode ser "plugada". O conceito básico do RAID (Redundant Array of Independent Disks) que traduzido para o português seria algo como Matriz Redundamente de Discos Independentes é combinar vários discos em uma disposição que se obtenha não só alta performance, mas também segurança no que se refere a tolerância à falhas de disco. Na verdade ele visa primariamente a proteção contra falha de disco às custas do uso de mais espaço em disco. Entretanto, as implementações do RAID têm diferenças importantes em suas características de E/S, as quais têm impacto sobre o desempenho e limitam ou ampliam sua adequação às diferentes situações. Cada nível do RAID difere na forma como a redundância é implementada no nível de hardware. Existem vários tipos de RAID e foram definidos inicialmente cinco tipos de arquiteturas de disposição de discos, RAID 1 até RAID 5, cada qual com tolerância a falhas, porém com diferentes propostas de características e performance. Além destas cinco arquiteturas, tornou-se comum referir-se a uma disposição não redundante como RAID 0.
- RAID por software é uma configuração de módulos do kernel, juntamente com utilitários de administração que implementam RAID puramente por software, e não requer um hardware especializado. RAID por software, por ter sua natureza no software, tende a ser muito mais flexível que uma solução por hardware. O lado negativo é que ele em geral requer mais ciclos e capacidade de CPU para funcionar bem, quando comparado a um sistema de hardware.
Em resumo, comparando as duas soluções e no meu ponto de vista, o RAID via hardware é transparente para o sistema operacional, e isto tende a simplificar o gerenciamento, já que via software mesmo que tenha mais opções e escolhas de configurações, pode fazer com que o gerenciamento se torne mais complexo.
RAID 0 (STRIPING – SEGMENTAÇÃO DE DADOS)
O RAID 0 não é realmente um array redundante. Como dito anteriormente, eu tiraria o R (Redundante) e deixaria apenas o AID (Array de discos Independentes) pelo fato de mesmo não proporcionar nenhuma tolerância contra falhas de disco. O uso de RAID 0 é mais indicado quando custo e performance são críticos e a integridade de dados pode ficar em segundo plano, ou seja, abrir mão da segurança em detrimento da performance. Chamamos de “striping” a combinação de vários discos em apenas uma única unidade lógica de armazenamento que particiona o espaço de armazenamento de cada disco em faixas. O striping busca melhorar o desempenho de disco distribuindo a atividade de E/S através de várias unidades de disco e reduzindo ou eliminando um gargalo de E/S. Como exemplo, é possível usar de dois a quatro discos rígidos em RAID 0, onde os mesmos serão acessados como se fosse um único disco, aumentando o desempenho do acesso aos dados. Os dados gravados são divididos em partes e são gravados por todos os discos. Na hora de ler, os discos são acessados ao mesmo tempo. De acordo com algumas pesquisas, teremos um aumento de desempenho de cerca de 97% usando dois discos, 179% usando 3 discos e algo próximo a 249% usando 4 discos. As capacidades dos discos são somadas e usando 4 discos de 80 GB, por exemplo, passaríamos a ter um único grande disco de 320 GB.
Obs: O tamanho do disco virtual criado a partir do RAID 0 é igual ao dobro do tamanho do menor disco. Isso possibilita utilizarmos discos de diferentes capacidades, porém perderemos espaço no disco de maior tamanho e o desempenho também ficará limitado ao desempenho do disco mais lento.
RAID 1 (MIRRORING - ESPELHAMENTO)
Obs: O RAID 1 não pode ser considerado como um substituto para backup porque neste nível os dados são replicados em discos, e no caso de deletarmos o conteúdo do primeiro disco, automaticamente os dados do disco-espelho também serão deletados.
Multiplexing e Mirroring são a mesma coisa?
Mesclando mirroring e striping
Este tipo de RAID é um híbrido do RAID 0 e RAID 1 que usa tanto o mirroring quanto o striping. Ele combina os benefícios de alta disponibilidade oferecidos pelo RAID 1 com os benefícios de desempenho relacionados ao striping do RAID 0. Existem duas combinações que podem ser escolhidas ao utilizar a técnica de striping e mirroring juntas a qual eu chamo de nível duplo de RAID. Observe que é preciso no mínimo quatro discos para montar este tipo de configuração.
RAID 01 (ou RAID 0+1) – Striping e Mirroring
Na figura acima vemos que o discos 1 e 2 formam um RAID 0 sendo após espelhados pelo discos 3 e 4 também em RAID 0, formando assim RAID 1 sobre RAID 0. Apesar de ser uma configuração que proporciona alta performance, se perdermos um disco em um dos lados, praticamente teremos uma configuração em RAID 0, porque em uma configuração RAID 0 se um disco falha todo o conjunto falhará. Neste caso, se o disco 1 falhar, então o disco 2 que está intacto ficará inutilizado, restando assim os discos 3 e 4 em RAID 0.
RAID 10 (ou RAID 1+0) – Mirroring e Striping
Em uma implementação RAID 1+0, os dados são segmentados através de grupos de discos espelhados, isto é, os dados são primeiro espelhados e para depois serem segmentados como demonstrado na figura abaixo:
Na figura acima vemos que o discos 1 e 2 formam um RAID 1 e os discos 3 e 4 também sendo após segmentados em RAID 0, formando assim RAID 0 sobre RAID 1. Além de ser uma configuração que proporciona o mesmo nível de performance proporcionado pelo RAID 01, o RAID 10 proporciona mais tolerância à falhas que o RAID 01 porque poderíamos ter uma falha simultânea dos discos 1 e 3 e ainda assim o conjunto estaria intacto, pois teríamos os espelhos em perfeito funcionamento. No meu ponto de vista, este conjunto é o mais indicado nos casos onde necessitamos aliar performance e redundância, como é o caso, por exemplo, de bancos de dados Oracle de alta performance.
Conclusão
Nos dois casos (0+1 ou 1+0), a perda de um único disco não resultará na falha do sistema RAID. A diferença aparece no caso da perda de um segundo disco que dependendo do disco, o sistema RAID 0+1 ficaria em desvantagem sobre o sistema RAID 1+0. Uma outra diferença é na velocidade de recuperação, porque caso ocorra uma falha de disco, no sistema RAID 1+0 será necessário apenas re-espelhar um disco, ao contrário do sistema RAID 0+1 que será necessário espelhar todo um conjunto segmentado. Portanto não se esqueça que RAID 01 é diferente de RAID 10.
RAID 10 (1+0)Em resumo, para bancos de dados de produção de alta disponibilidade, escolha os arrays de disco hot swappable que permitem substituir um disco falho sem precisar desligar todo o array. Se eu não estiver enganado, esse recurso é quase que um padrão atualmente. Melhor ainda que os discos hot swappable é o recurso standby disk, no qual um disco substituto já está contido no array, pronto para assumir caso um disco falhe.
A constante evolução da tecnologia Oracle busca melhorar a resposta e simplificar a gestão da plataforma tecnológica. Como resultado, surgiu o revolucionário Automatic Storage Manager, ou ASM, componente da nova versão do banco de dados Oracle 10g. O ASM possibilita que o usuário não se preocupe com RAID. Com ele, é possível aproveitar não apenas os recursos do hardware de armazenamento, mas também todas as decisões de stripping e espelhamento adequados à configuração de dados e sua dinâmica de utilização, mas é importante salientar que o ASM não substitui o RAID, mas aproveita os recursos do hardware e aplica de maneira automática e transparente para o administrador a configuração de stripping e mirroring mais adequada, de acordo com o número de dispositivos disponíveis e com as características de uso e volume do banco de dados em questão. Esse esclarecimento é importante para evitar confusões, já que o ASM usa as capacidades de RAID do hardware.
Para maiores detalhes sobre RAID com Oracle, visite a página da Oracle:
http://www.oracle.com/technology/deploy/availability/htdocs/hafaq.html
http://www.oracle.com/technology/deploy/availability/techlisting.html


9 comentários:
Eduardo
Ótimo artigo, além da informação técnica explicada com propriedade, foi claro e objetivo!
Parabéns e obrigado!
Olá André,
Obrigado pela visita ;-)
Abraços e até mais ...
Excelente material!
Olá meu amigo. Só uma dúvida: no RAID 0+1 se falharem os discos 1 e 4, não é a mesma tolerância do RAID 1+0? Você recomenda alguma literatura ou url sobre o tema?
Sds.
Olá Anônimo,
O RAID 10 proporciona mais tolerância à falhas que o RAID 01 porque poderemos ter uma falha simultânea dos discos 1 e 4 e ainda assim o conjunto estaria intacto, pois teríamos os espelhos (2 e 3) em perfeito funcionamento. No caso do RAID 01, se perdermos um disco em um dos lados, praticamente teremos uma configuração em RAID 0, porque em uma configuração RAID 0 se um disco falha todo o conjunto falhará. Neste caso, se o disco 1 falhar, então o disco 2 que está intacto ficará inutilizado, restando assim os discos 3 e 4 em RAID 0. Se os discos 1 e 4 falharem, então todo o array falhará, inutilizando os 4 discos.
Acredito que um link interessante seria o http://pt.wikipedia.org/wiki/RAID
Abraços e até mais ...
Olá Eduardo,
muito interessante esse artigo.
Você recomenda utilizar o ASM entregando os discos em raw, deixando que o oracle gerencie o mirror e stripe, (nesse cenário, não precisaria de hot spare), ou usar a abordagem tradicional, criar o RAID pelo storage entregando LUNs para o ASM ?
Olá Anônimo,
ASM é um recurso que praticamente ainda não tenho uma experiência forte. Eu acho que a questão é uma preferência administrativa de quem vai gerenciar, mas em questão de ASM eu escolheria a 1ª opção. O ASM possibita a utilização de recursos dos discos de forma que não tenhamos que se preocupar com RAID e isso é fato. Eu ainda trabalho com muitos bancos que usam o RAID tradicional sem ASM ;) Realmente, eu vejo que a grande vantagem do Oracle em gerenciar o mirror e stripe com o ASM é essa baixa intervenção do DBA em ficar gerenciando a carga de I/O entre os recursos (discos) disponíveis, etc... O ASM assume o controle e pronto. No mais, pra mim, raw devices é uma caixa preta e que inclusive vai ser descontinuada pela Oracle nas futuras versões ;-)
Abraços e obrigado pela visita ...
Eduardo, ótimo artigo. Só para complementar quero adicionar 2 comentários:
1- Pelos motivos que vc explicou muito bem, a Oracle recomenda RAID 10 para datafiles;
2- Uma grande vantagem do RAID 10 em relação ao RAID 01 é o MTTR em caso de desastres.
[]s
Fábio Prado
www.fabioprado.net
Olá Fábio,
Concordo plenamente! ;-)
Obrigado pela visita e até mais
Legatti
Postar um comentário