Prévia do material em texto
Redundant Array of Independent Disks (RAID) Karine Silva Oliveira Professor: Eudes Diônatas Silva Souza 1. Introdução A tecnologia RAID (do inglês, Redundant Arrays of Independent Disks, ou Vetores Redundantes de Discos Independentes) surgiu como uma solução para dois desafios persistentes no armazenamento de dados. Tais desafios consistem em: a grande diferença de desempenho entre os discos magnéticos e as memórias e processadores, e a questão da confiabilidade, já que a chance de falha aumenta com o número de discos em um sistema. Nesse sentido, o RAID aborda esses problemas através de dois pilares: desempenho, alcançado através do paralelismo, distribuindo os dados entre múltiplos discos para que possam ser acessados simultaneamente; e confiabilidade, alcançada através da redundância, armazenando informações extras que permitem a recuperação de dados em caso de falha de um disco. Ademais, existem vários "níveis" de RAID, cada um oferecendo uma combinação diferente dessas técnicas. Por conseguinte, a escolha do nível ideal não é simples, pois envolve um compromisso entre desempenho, capacidade, tolerância a falhas e custo. Assim, o presente texto explicará os conceitos fundamentais do RAID, detalhará os níveis mais comuns e abordará considerações práticas para sua implementação, deixando claro que a configuração correta deve ser alinhada aos requisitos específicos de cada aplicação. 2. Pilares Tecnológicos do RAID As configurações RAID são construídas a partir de três técnicas fundamentais: striping, mirroring e paridade. Esses processos são a base para os níveis de RAID, os quais serão explanados nas seção 3. 2.1. Striping (Distribuição/Fracionamento) O striping é a principal técnica para ganho de desempenho. Dessa forma, ele distribui os dados de maneira transparente por múltiplos discos, fazendo com que eles atuem como um único disco lógico, grande e rápido. Consequentemente, o desempenho geral de E/S (Entrada/Saída) é melhorado, ao permitir que várias operações sejam atendidas em paralelo, resultando em altas taxas de transferência. Sob tal contexto, existem duas granularidades principais para o striping: o striping em nível de bloco e o striping em nível de bit. O primeiro tipo é a forma mais comum. Nela, blocos de um arquivo são espalhados pelos discos. Desse modo, permite que múltiplas solicitações independentes a blocos diferentes sejam atendidas em paralelo, diminuindo o tempo de fila e o tempo de resposta para grandes acessos. Já o striping em nível de bit consiste em dividir um byte de dados e gravar cada bit em um disco diferente. Portanto, com bytes de 8 bits, oito discos físicos podem ser vistos como um único disco lógico, multiplicando a taxa de transferência por oito. Nessa abordagem, um único registro fica fisicamente dividido entre todos os discos do conjunto. 2.2. Mirroring (Espelhamento) Esta é a forma mais simples de redundância. Destarte, os dados são escritos de forma idêntica e simultânea em dois ou mais discos, criando cópias exatas. Se um disco falhar, os dados estão imediatamente disponíveis em seu espelho, garantindo alta disponibilidade. Em vista disso, o espelhamento também pode melhorar o desempenho de leitura, uma vez que as solicitações podem ser atendidas por qualquer disco do par. 2.3 Paridade A paridade é uma forma de redundância mais eficiente em termos de espaço. Nesse sentido, ela utiliza uma operação matemática, geralmente o OU exclusivo (XOR), para criar um bloco de dados de verificação (o bloco de paridade) a partir dos blocos de dados correspondentes nos outros discos. Se um disco falhar, seu conteúdo pode ser reconstruído a partir dos dados restantes e da paridade. Por isso, essa técnica permite que um sistema tolere a falha de um disco usando o espaço de apenas um disco para a informação de redundância. 3. Análise dos Níveis de RAID As diferentes organizações de RAID, conhecidas como "níveis", são definidas com base em diversas combinações dos dois fatores principais: o detalhamento da intercalação (striping) e o padrão de dados usado para calcular as informações redundantes. Nessa conjuntura, na proposta original, foram definidos os níveis de 1 a 5, com os níveis 0 e 6 sendo adicionados posteriormente. Assim, cada nível, nomeado com a palavra "RAID" seguida de um número (por exemplo, RAID 0, RAID 1), oferece um balanço diferente entre os objetivos de confiabilidade, disponibilidade, desempenho e capacidade. 3.1 RAID 0 (Striping) Este nível, focado exclusivamente em desempenho, não possui redundância. Nesse panorama, os dados são divididos em blocos e gravados em discos separados, proporcionando grande velocidade de leitura e escrita. No entanto, a falha de um único disco resulta na perda total de todos os dados do conjunto. Por conseguinte, é ideal para dados não críticos onde a velocidade é o único requisito, como edição de vídeo ou armazenamento de arquivos temporários. 3.2 RAID 1 (Mirroring) Já neste nível, o foco é na máxima redundância, adiciona discos paralelos que funcionam como uma cópia exata dos discos principais. Sob tal ótica, ele oferece 100% de redundância, e em caso de falha, os dados são simplesmente copiados para o disco de substituição, sem necessidade de reconstrução complexa. Contudo, a desvantagem é o alto custo, pois 50% da capacidade total de armazenamento é perdida para o espelhamento. Portanto, é ideal para sistemas operacionais e aplicações críticas como contabilidade e finanças, onde a disponibilidade é a maior prioridade. 3.3 RAID 2 (Código de Hamming) Este nível, hoje de significado apenas histórico, adapta o mecanismo de detecção e correção de erros de memórias, o Código de Hamming, para discos. Nessa perspectiva, ele utiliza striping em nível de bit e dedica vários discos para armazenar os bits de verificação (ECC - Error-Correcting Code). À vista disso, o Código de Hamming permite a correção de erros "on the fly" (em tempo real), mas é ineficiente e caro, exigindo muitos discos de ECC em relação aos de dados, e por isso não possui implementações comerciais. 3.4 RAID 3 (Paridade Dedicada com Striping de Bytes) Utiliza striping em nível de byte e dedica um único disco exclusivamente para armazenar as informações de paridade. Nesse sentido, oferece taxas de transferência muito altas para leituras e escritas sequenciais, sendo ideal para edição de vídeo e streaming. Entretanto, como toda operação de E/S acessa todos os discos, ele não consegue atender múltiplas solicitações em paralelo. 3.5 RAID 4 (Paridade Dedicada com Striping de Blocos): Similar ao RAID 3, porém utiliza striping em nível de bloco. Consequentemente, permite que múltiplas solicitações de leitura sejam atendidas em paralelo, desde que acessem discos diferentes. Todavia, a principal desvantagem é que o disco de paridade dedicado se torna um gargalo para operações de escrita, pois toda escrita exige uma atualização nesse disco. 3.6 RAID 5 (Paridade Distribuída) É o nível de RAID seguro mais comum, exigindo no mínimo três discos. Dessa forma, ele combina o striping em nível de bloco com informações de paridade distribuídas por todos os discos, eliminando o gargalo do disco de paridade dedicado do RAID 4. Destarte, oferece um bom equilíbrio entre desempenho de leitura, capacidade útil e segurança, tolerando a falha de um disco. Não obstante, sua principal desvantagem é a penalidade de escrita: uma única operação de escrita lógica se traduz em quatro operações físicas no disco (ler dados antigos, ler paridade antiga, escrever novos dados, escrever nova paridade), o que o torna lento para cargas de trabalho com muitas escritas. 3.7 RAID 6 (Dupla Paridade Distribuída) É uma evolução do RAID 5, projetado para ambientes com discos de grande capacidade. Dessa maneira, ao calcular e distribuir duas informações de paridade independentes, um array RAID 6 pode tolerar a falha de até dois discossimultaneamente. Tal procedimento é crucial para garantir a integridade dos dados durante o longo processo de reconstrução de um disco falho, embora a penalidade de escrita seja ainda maior que a do RAID 5. 3.8 RAID 10 (ou 1+0): Um nível híbrido que combina espelhamento e striping. Vale ressaltar, a princípio, que os discos são espelhados em pares (RAID 1), e então esses pares são distribuídos (RAID 0). Assim, o resultado é um sistema com o excelente desempenho de leitura e escrita do RAID 0 e a alta redundância do RAID 1. Sob tal ótica, esta é a escolha padrão para aplicações de missão crítica que exigem alto desempenho de E/S e alta disponibilidade, como bancos de dados transacionais. 3.9 RAID 0+1: É o inverso do RAID 10. Primeiro, os dados são distribuídos (RAID 0) e, em seguida, o conjunto é espelhado. Contudo, possui menor tolerância a falhas que o RAID 10, pois a falha de um único disco torna todo o seu subconjunto de striping inutilizável, forçando o sistema a depender inteiramente do espelho. 3.10 RAID 50 (ou 5+0): É um nível aninhado que combina a paridade distribuída do RAID 5 com o striping do RAID 0. Nele, vários subgrupos RAID 5 são criados, e os dados são distribuídos (RAID 0) entre esses subgrupos. Por conseguinte, isso melhora o desempenho de escrita em comparação com um único RAID 5 grande e aumenta a tolerância a falhas, pois cada subgrupo pode perder um disco. 4. Hardware RAID vs. Software RAID A lógica do RAID pode ser implementada de duas formas: hardware RAID e software RAID. O hardware RAID utiliza uma placa controladora dedicada com seu próprio processador e memória, o que desonera a CPU principal do sistema e oferece desempenho superior e mais consistente, especialmente para níveis com paridade como RAID 5 e 6. Todavia, suas desvantagens são o custo mais elevado e o risco de dependência do fornecedor, pois uma controladora com falha pode precisar ser substituída por um modelo idêntico. Já no software RAID, a lógica do RAID é gerenciada pelo sistema operacional, utilizando os recursos da CPU e da RAM do servidor. Nessa conjuntura, É uma solução de baixo custo e flexível, mas pode consumir ciclos da CPU, impactando o desempenho geral do sistema, um problema notável em configurações de paridade sob cargas de trabalho intensivas. 5. Conclusão A seleção de um nível de RAID é um exercício de balanceamento entre desempenho, tolerância a falhas e custo. Não há uma resposta única, mas sim uma solução ótima para cada caso de uso. No entanto, é fundamental reforçar um princípio essencial da gestão de dados: RAID não é backup. Logo, o RAID foi projetado para garantir a continuidade das operações em caso de falha de hardware, mantendo os sistemas online. Porém, ele não oferece proteção contra exclusão acidental, corrupção por software, malware ou desastres físicos. Para esses cenários, uma estratégia de backup separada e robusta é indispensável. Em síntese, o RAID é um pilar da alta disponibilidade, mas é apenas um componente de uma estratégia completa de proteção de dados. 6. Referências [1] ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Banco de Dados. 6. ed. São Paulo: Pearson Addison Wesley, 2011. 2.3 Paridade A paridade é uma forma de redundância mais eficiente em termos de espaço. Nesse sentido, ela utiliza uma operação matemática, geralmente o OU exclusivo (XOR), para criar um bloco de dados de verificação (o bloco de paridade) a partir dos blocos de dados correspondentes nos outros discos. Se um disco falhar, seu conteúdo pode ser reconstruído a partir dos dados restantes e da paridade. Por isso, essa técnica permite que um sistema tolere a falha de um disco usando o espaço de apenas um disco para a informação de redundância. 3.1 RAID 0 (Striping) Este nível, focado exclusivamente em desempenho, não possui redundância. Nesse panorama, os dados são divididos em blocos e gravados em discos separados, proporcionando grande velocidade de leitura e escrita. No entanto, a falha de um único disco resulta na perda total de todos os dados do conjunto. Por conseguinte, é ideal para dados não críticos onde a velocidade é o único requisito, como edição de vídeo ou armazenamento de arquivos temporários. 3.2 RAID 1 (Mirroring) Já neste nível, o foco é na máxima redundância, adiciona discos paralelos que funcionam como uma cópia exata dos discos principais. Sob tal ótica, ele oferece 100% de redundância, e em caso de falha, os dados são simplesmente copiados para o disco de substituição, sem necessidade de reconstrução complexa. Contudo, a desvantagem é o alto custo, pois 50% da capacidade total de armazenamento é perdida para o espelhamento. Portanto, é ideal para sistemas operacionais e aplicações críticas como contabilidade e finanças, onde a disponibilidade é a maior prioridade.