Economize, use Software RAID

Uma das traduções aceitáveis da sigla RAID para o português é Conjunto Redundante de Discos Econômicos (Redundant Array of Inexpensive Disks). E apesar do termo já se referir a economia, ela intencionalmente se aplica aos discos rígidos usados para implementar essa tecnologia. Enquanto isso, outro componente geralmente usado no RAID, a controladora, na maioria dos casos não faz jus ao adjetivo econômico.

A questão do preço, aliada a popularização e ao amadurecimento da tecnologia, trouxe à tona a opção do RAID através de software, conhecido como Software RAID. Entre algumas vantagens em relação ao RAID por Hardware, o Software RAID dispensa o uso de uma controladora especializada, e, portanto, é de fato econômico.

Este artigo introduz o conceito de RAID e apresenta os principais níveis de implementação (RAID 0, 1, 5 e 10). Também compara as vantagens e desvantagens do RAID por Software e Hardware, com o propósito de definir em quais situações cada uma dessas tecnologias devem ser empregadas.

O que é RAID?

Direto da Wikipédia, RAID é um meio de se criar um subsistema de armazenamento com o uso simultâneo de dois ou mais discos rígidos, visando alcançar melhor desempenho, segurança e/ou capacidade de armazenamento. O resultado do RAID é um conjunto de discos chamado Array, que é visualizado pelo usuário e sistema operacional como um espaço único de armazenamento.

O principal exemplo de RAID é quando dois discos são combinados para oferecer um esquema de armazenamento redundante (espelhamento), onde todas as operações de escrita realizadas em um disco são automaticamente replicadas para o outro. Essa tecnologia, a princípio simples, é essencial para garantir a segurança dos dados contra problemas ocorridos por desgaste ou mau funcionamento em um dos discos. Caso ocorra uma falha em qualquer um deles, o outro assume automaticamente todas as operações de escrita e leitura, mantendo a integridade dos dados e a disponibilidade do sistema.

Além do exemplo clássico de espelhamento, existem outros esquemas de implementação do RAID, categorizados por níveis. Os níveis devem ser utilizados de acordo com as necessidades do sistema, sendo possível isolá-los ou combiná-los para adaptar suas características fundamentais.

Níveis de RAID

Atualmente existem exatos 7 níveis de RAID que são considerados os níveis padrões. Entre esses níveis padrões, do RAID 0 ao RAID 6, os mais populares são o RAID 0, RAID 1 e RAID 5. Além deles, alguns níveis podem ser combinados para somarem seus benefícios, estabelecendo outros níveis de RAID como, por exemplo, o RAID 10 (RAID 1 + 0) e o RAID 50 (RAID 5 + 0).

  • RAID 0

    Conhecido simplesmente pelo termo striping, o RAID 0 distribuí os dados em dois ou mais discos rígidos, criando um espaço de armazenamento com capacidade igual a soma das capacidades de cada disco rígido presente no Array.

    O objetivo principal desse nível é oferecer melhor desempenho nas operações de escrita e leitura, visto que essas operações são executadas em paralelo nos discos que fazem parte do Array. Entretanto, esse nível não implementa nenhum tipo de redundância, fazendo com que um único problema em qualquer um dos discos torne todo o conjunto inutilizável.

    Pela sua incapacidade de oferecer segurança, a utilização do RAID 0, em geral, não é apropriada para servidores, sendo recomendado somente quando houver por trás de sua implementação um confiável sistema de backup ou alta disponibilidade, que compense as deficiências encontradas nesse nível de RAID.

  • RAID 1

    Sem nenhuma dúvida, o RAID 1 é o nível mais utilizado em servidores, já que seu objetivo principal é fornecer a segurança das informações. Também conhecido como mirroring, o RAID 1 é justamente o nível que foi exemplificado anteriormente, onde todos os dados são gravados em dois discos rígidos diferentes. Se um disco falhar ou for removido, os dados preservados no outro disco garantem a disponibilidade do sistema.

    No RAID 1 é normal a utilização de um terceiro disco rígido, chamado de spare disk (disco de reposição), que é usado para reconstruir automaticamente o Array após uma falha. Essa é uma maneira de evitar o processo manual de reposição e o perigo de manter o Array funcionando com apenas um disco.

    Outra característica notável do RAID 1 é a sua capacidade de, em determinados cenários, melhorar o desempenho de leitura dos dados, pois as operações de leitura não-sequencial são divididas entre os dois discos do conjunto. Em contrapartida, o desempenho de escrita sofre um óbvio decréscimo, pela necessidade de cada operação ser realizada duas vezes.

    E justamente por armazenar a mesma informação em dois discos, esse nível tem o maior custo de armazenamento, com apenas 50% de aproveitamento do espaço total. Como conseqüência, o RAID 1 adapta-se melhor em pequenas bases de dados ou sistemas de pequena escala, que necessitem principalmente de confiabilidade.

  • RAID 5

    A necessidade de um nível que aproveitasse melhor a capacidade de armazenamento de um Array, e que ao mesmo tempo mantivesse as características de segurança do RAID 1, fez surgir os níveis do RAID 2 ao RAID 6, sendo que, entre eles, o RAID 5 é o mais empregado em servidores.

    O RAID 5 funciona com dois ou mais discos rígidos, nos quais, além dos dados, é distribuída entre eles uma informação adicional, chamada de paridade. A paridade é extraída sempre que houver uma operação de escrita no Array, a partir de cálculos realizados usando os próprios dados a serem gravados. Ela assegura que, em caso de falha em qualquer um dos discos, a informação seja recuperada fazendo o cálculo reverso para gerar os dados originais.

    Como era de se esperar, esse nível tem uma capacidade de armazenamento superior ao do RAID 1, que sempre desperdiça 50% da capacidade total. Graças a paridade distribuída, o espaço aproveitado pelo RAID 5 é igual a capacidade individual dos discos, multiplicado pelo número de discos instalados no Array menos 1. Por exemplo, considerando uma configuração em RAID 5 com 4 discos de 80 GB, o Array terá uma capacidade igual a 80*(4-1), ou seja, 240 GB.

    Embora listada apenas vantagens do RAID 5 em relação ao RAID 1, nem tudo é uma maravilha. No RAID 5, a implementação da paridade para fornecer segurança prejudica seu desempenho nas operações de escrita. Em ambientes que exigem várias operações de escrita simultâneas esse nível de RAID com certeza não é a melhor opção. Enquanto isso, as operações de leitura no RAID 5 tem um desempenho equivalente, considerando que também é possível executar essas operações em paralelo nos discos do Array.

    Outra desvantagem do RAID 5 aparece especificamente quando há uma falha em algum dos discos. Além da própria leitura dos dados exigir o cálculo da paridade para reconstruir as informações, a reconstrução completa do Array consome um enorme processamento de I/O, prejudicando os demais serviços que necessitem desse recurso. Vale ressaltar também que uma falha simultânea em dois discos do Array impossibilita o cálculo da paridade, causando a perda total das informações.

  • RAID 10 (1+0)
    O RAID 10, ou RAID 1+0, exige ao menos 4 discos rígidos. Cada par é configurado em RAID 1 (espelhamento), garantindo a segurança, e os pares de RAID 1 são agrupados em uma configuração RAID 0, melhorando o desempenho. Nesse nível, até dois discos de cada RAID 1 poderão falhar simultaneamente sem que haja perda de informação no conjunto.

    Como essa configuração é baseada no RAID 1, a capacidade total do Array será sempre 50% da soma das capacidades dos discos rígidos.

    Reunindo os benefícios do RAID 1 ao do RAID 0, o RAID 10 é o nível recomendado para bases de dados e servidores de e-mail, por ser o mais seguro e ter um excelente desempenho, assim como em qualquer outro sistema onde a necessidade de economia não se sobreponha à segurança e ao desempenho.

Software RAID versus Hardware RAID

Controladora 3wareA distribuição dos dados entre os múltiplos discos rígidos de um Array poderá ser gerenciada tanto por um software quanto por um hardware dedicado. Quando feito por software, ele é essencialmente parte integrante do sistema operacional.

Praticamente todos os sistemas operacionais mais populares para servidores têm a sua disposição uma implementação de RAID por software, incluindo o Linux, FreeBSD, Solaris, MAC OS X Server e o Microsoft Windows. No Linux, por exemplo, o nível de maturidade do Software RAID cresceu a ponto de convencer as maiores distribuições a incluir opções de configuração durante seu processo de instalação.

No caso do RAID por hardware, ele requer uma controladora especializada. Essa controladora fornece uma interface para gerenciamento dos discos e realiza as tarefas necessárias para o funcionamento dos diferentes níveis de RAID, como os cálculos de paridade e o balanceamento das operações de I/O. Ainda assim, como um nível de RAID pode exigir cálculos mais complexos do que outro, nem todas as controladoras suportam todos os níveis.

Vantagens do Software RAID

  • Como o Software RAID é implementado no kernel do sistema operacional, ele se torna mais flexível do que o Hardware RAID, alcançando uma diversidade maior de hardwares e softwares. Além disso, por ser mantido pelos desenvolvedores do próprio kernel, o diagnóstico e correção de um problema ocorre em menos tempo se comparado aos drivers proprietários dos fabricantes de hardwares.
  • Diferente do Hardware RAID, o formato utilizado pelo Software RAID é público, o que elimina a dependência tecnológica da solução a um único fabricante (vendor lock-in)
  • O nível de abstração e a independência em relação a controladora de I/O geram como benefícios a favor do Sofware RAID a possibilidade de que um Array seja migrado para outros tipos de controladoras, e também que os dados sejam distribuídos entre diferentes formatos de dispositivos, como SATA, ATA, SCSI, SAN, iSCSI, entre outros.
  • O cálculo de paridade nos níveis de RAID que usam esse recurso, como o RAID 5 e RAID 6, é geralmente superior no Software RAID, pelo fato dele ser executado no processador do próprio servidor, ao invés do processador da controladora RAID. Como outra conseqüência dessa característica, ao aumentar o poder de processamento de um servidor, aumenta-se também o desempenho do Software RAID.
  • Os firmwares de controladoras RAID têm um tempo de suporte bastante limitado. Na grande maioria dos casos, não são encontradas atualizações para controladoras mais antigas. Às vezes, até mesmo o fabricante deixa de existir.
  • O Software RAID permanece em constante evolução. Dependendo do sistema, uma simples atualização de kernel poderá trazer ganhos significativos de desempenho e funcionalidade. Um bom exemplo dessa evolução é que o Software RAID, especificamente no Linux, possui suporte ao RAID 6, enquanto muitas controladoras ainda não possuem.
  • Pesa muito a favor do Sofware RAID o custo. Um upgrade de memória e processador são geralmente mais baratos e mais efetivos do que comprar uma controladora RAID, considerando que o processamento exigido para o Software RAID é negligenciável em uma enorme variedade de cenários, onde o desempenho de I/O não é crítico para o funcionamento do sistema.

Vantagens do Hardware RAID

  • Presumindo que múltiplos dispositivos estejam conectados no mesmo barramento PCI, o Software RAID poderá saturar esse barramento bem antes que uma controladora RAID o faça.
  • A disponibilidade leva vantagem graças ao suporte completo e funcional da tecnologia hot-swap, que permite a troca de discos rígidos sem a necessidade de desligar o computador.
  • O cálculo de paridade nos níveis de RAID que usam esse recurso, como o RAID 5 e RAID 6, não é realizado pelo processador da própria máquina, deixando-o livre para o processamento de outras tarefas.
  • Por se tratar de um hardware, o nível de abstração permite um controle melhor e mais seguro do processo de boot do sistema. No Software RAID – que funciona no mesmo nível do sistema operacional – gerenciar o processo de boot não é uma tarefa simples, e inclusive gera algumas barreiras para determinadas configurações.
  • Grande parte das controladoras disponibilizam um recurso chamado write-back cache, que basicamente é uma memória cache usada para otimizar as operações de escrita no Array. Esse recurso traz ganhos de desempenho significativos para esse tipo de operação, e representa o maior diferencial do Hardware RAID em relação ao Software RAID.

Fake RAID

De acordo com o que foi mencionado, o processo de instalação do Software RAID não pode ser considerado simples para um usuário inexperiente, especialmente nas configurações relacionadas ao boot do sistema. Já na implementação via hardware, as controladoras têm um preço muito elevado, o que dificulta sua adoção em servidores de pequena e média escala.

Levando em consideração especificamente esses dois pontos, surgiu no mercado uma controladora mais barata – geralmente integrada às placas-mães mais modernas, que ao invés de possuir um processador próprio, emprega uma combinação de funções especiais na BIOS e drivers instalados no sistema operacional para auxiliar a configuração e diminuir o custo.

Apesar de manter o procedimento de instalação e configuração similar ao das controladoras RAID completas, a execução das operações do RAID é gerenciada por software, e assim como no Software RAID, todo o processamento é feito pela CPU da própria máquina. Portanto, esse tipo de controladora não consegue a mesma vantagem de desempenho encontrada no Hardware RAID, sendo essa a razão de ser conhecido como Fake RAID (Falso RAID).

Quando comparado ao Software RAID, o Fake RAID apresenta poucas vantagens concretas, sendo normalmente preterido em sistemas operacionais que possuem uma implementação por software madura e confiável.

Considerações Finais

É possível apontar qual tecnologia é melhor entre o RAID por software e hardware? O bom senso diz que não, pois a resposta irá depender exclusivamente de algumas questões a respeito do ambiente computacional. Caso o desempenho seja uma característica crítica para o sistema, a balança pende para o Hardware RAID, já em servidores de baixa e média escala, o Software RAID tem capacidade para atender a demanda sem muito esforço. Ainda assim, a opção pelo Software RAID deverá considerar o sistema operacional antes de ser julgada a mais correta.

E para o futuro, o crescimento acelerado do poder dos processadores – atualmente baseado em múltiplos núcleos – irá se somar ao também acelerado desenvolvimento dos sistemas operacionais de código aberto, resultando em uma rápida evolução do Software RAID nesses ambientes. A tendência dessa evolução é concretizar a estabilidade do Software RAID e diminuir ainda mais as vantagens do Hardware RAID, até torná-lo definitivamente uma exclusividade de servidores de larga escala.

Pelo menos é isso o que eu espero.

Referências

Schroder, Carla (10-05-2005). RAID: Faster and Cheaper with Linux. Enterprise Network Planet. Acessado em 17-06-2008.
Garzik, Jeff (17-11-2003). Why Software RAID?. linux.yyz.us. Acessado em 18-06-2008.
Østergaard, Jakob (03-06-2004). The Software-RAID HOWTO. The Linux Documentation Project. Acessado em 20-06-2008.
Wikipédia (15-06-2008). Redundant Array of Independent/Inexpensive Disks. Acessado em 20-06-2008.

7 comentários sobre “Economize, use Software RAID

    • Agora vou fazer uma bateria de testes com meus dois HDs Samsung 320Gb SATA. Já possuo uma placa mãe ASUS A8N-SLI DELUXE com controladora RAID integrada, mas já que é FAKE RAID vou verificar se montando exclusivamente via software o array (conjunto) dá uma melhorada.

  1. Parabéns! Muito bem explicado até que enfim sanou minhas dúvidas quanto ao raid 1 , pois segundo artigos do guia do hardware o raid 1 não oferece vantagem nenhuma em desempenho, o que é mentira pois ele aumenta consideravelmente a taxa de leitura, graças ao seu texto já me sinto seguro em implementar um RAID 1 por softtware em meu servidor LTSP.

  2. Parabéns pelo artigo.

    Gostaria de fazer uma observação, sobre a desvantagem do software RAID não suportar hot-swap completamente, acredito que seja controverso este ponto, pois se utilizarmos a tecnologia SATA o hot-swap se torna possível sim. Não tenho muitas fontes nem experiência a este respeito, mas já li sobre isso e a um tempo atrás comprei uma placa-mãe que explicava como utilizar o recurso para a controladora SATA da mesma.

    http://en.wikipedia.org/wiki/SATA
    http://www.infowester.com/serialata.php

    • Olá Wasare,

      Realmente é uma observação importante.

      As tecnologias SATA e SAS já foram desenvolvidas para suportar o Hot-swap (ou Hotplug) por padrão. Contudo, para funcionar corretamente, a controladora, o barramento (PCI, etc.) e o próprio driver do sistema operacional deverão lidar corretamente com o Hot-swap.

      Justamente por esse motivo, me limitei apenas a citar como vantagem do Hardware RAID o suporte completo e funcional do Hot-swap, já que essa tecnologia ainda é bastante limitada no Software RAID.

      Mas com certeza essa situação irá se igualar com os avanços das placas-mãe, controladoras SATA/SAS e dos sistemas operacionais. No caso específico do Linux, neste link é possível conferir o status do Hotplug no driver SATA (libata).

      Quanto aos discos SCSI, já me deparei com um punhado de informações que indicam um bom suporte ao Hot-swap no Linux.

  3. Parabéns Heitor, o assunto foi muito bem abordado além de ser, ainda, um assunto obscuro para muitos.

    Como sugestão para uma próxima etapa, seria interessante exemplificar quais as ferramentas para Gerenciamento de Software e FakeRaid.

    Novamente Parabéns.

Deixe um comentário para Leonardo Schäffer Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *