Discos em RAID

Uma forma de ganhar segurança e desempenho no armazenamento de dados é através do sistema de discos rígidos RAID (do inglês Redundant Array of Independent/Inexpensive Disks). Utilizando-se dois ou mais discos (HDs), é possível realizar o espelhamento, no qual os dados são copiados simultaneamente em diferentes discos – caso um deles dê problema, poderá ser substituído por outro novo e os dados podem ser copiados do disco espelhado para o novo. Também é possível utilizar dois ou mais discos para gravar os dados simultaneamente, priorizando-se a velocidade de gravação dos dados, em vez da segurança. Veja mais detalhes sobre essas e outras propriedades.

Foto de cinco slots de discos rígidos, em RAID 10 (slots 0+1 e 2+3) com o disco do slot 3 danificado (luz âmbar).
Foto de cinco slots de discos rígidos, em RAID 10 (slots 0+1 e 2+3) com o disco do slot 3 danificado (luz âmbar).

Pode-se criar volumes RAID ou LVM no momento da instalação ou mais tarde. São duas técnicas para abstrair os volumes montados a partir de seus equivalentes físicos (reais unidades de disco rígido ou partições do mesmo), visando proteger os dados de falhas no hardware através da introdução de redundância e tornar o gerenciamento de volumes mais flexível e independente do tamanho real nos discos, respectivamente. Em ambos os casos, o sistema acaba com novos volumes (partições, blocos), que podem ser usados para criar sistemas de arquivos ou espaço de troca, sem necessariamente ter eles mapeados em um disco físico.

A implementação da arquitetura pode ser via software, na qual o sistema operacional gerencia o RAID através da controladora de discos, sem a necessidade de um controlador de RAIDs. É uma opção mais barata, pois todo o processamento necessário para o gerenciamento do RAID é feito pela CPU (um software faz a abstração entre a operação lógica e os discos físicos), porém mais lenta que via hardware. É necessário o pacote mdadm, que cria os volumes no formato /dev/md* (com MD significando Multiple Device) e são listados no arquivo “/proc/mdstat”.

Controladoras RAID em hardware usam layouts de disco proprietários e requer pelo menos uma controladora especialmente dedicada para isso, que pode ser uma placa de expansão PCI/PCI-e (ou integrada à placa mãe). A controladora gerencia os drives e faz os cálculos de paridade necessários pelo nível de RAID escolhido. A maioria das implementações em hardware provê cache de leitura e escrita não-volátil (protegido por bateria) e também suporta o “hot-swapping”, permitindo que discos com falha sejam substituídos enquanto o sistema está sendo executado.

Níveis de RAID

Os discos podem ser combinados de várias maneiras, chamadas níveis:

  • RAID 0 (Striping) – os dados são subdivididos em segmentos consecutivos (stripes, ou faixas, com tamanho definido em blocos) que são escritos sequencialmente através de cada um dos discos de um array (ou conjunto). Dessa forma, existe um acesso mais rápido às informações e menor custo em expansão de memória, porém, caso um dos discos apresente perda de informações, o arquivo dividido entre os mesmos setores dos demais HD’s sofrerá danos irreparáveis, pois uma parte do arquivo foi corrompida.
  • RAID 1 (Mirror) – todos os dados são gravados em dois discos diferentes (espelhamento). Se um disco falhar ou for removido, os dados preservados no outro disco permitem a não descontinuidade da operação do sistema. Ao substituir o disco defeituoso por um novo, é realizada a operação de rebuild para copiar os dados do disco antigo.
  • RAID 10 (1+0) – exige ao menos 4 discos rígidos, sendo uma soma dos efeitos dos RAIDs 1 e 0. Cada par será espelhado, garantindo redundância, e os pares serão distribuídos, melhorando desempenho. É o nível mais recomendado para qualquer uso onde a necessidade de economia não se sobreponha à segurança e desempenho, por ser o mais seguro e dos mais velozes.
Esquema de RAID 10 (no caso do RAID 01, invertem-se as posições do RAID 0 e RAID 1).
Esquema de RAID 10 (no caso do RAID 01, invertem-se as posições do RAID 0 e RAID 1).
  • RAID 01 (0+1) – também é uma combinação dos níveis 0 (Striping) e 1 (Mirroring), onde os dados são divididos entre os discos para melhorar o rendimento, mas também utilizam outros discos para duplicar as informações. Se um dos discos vier a falhar, o sistema vira um RAID 0.
  • RAID 2 – similar ao RAID 4, mas possuindo algoritmos de Hamming ECC (Error Correcting Code), que é a informação de controle de erros, no lugar da paridade.
  • RAID 3 – versão simplificada do RAID nível 2, onde um único bit de paridade é computado para cada palavra de dados e escrito em um drive de paridade. Exige que todos os eixos das unidades de disco estejam sincronizados.
  • RAID 4 – um dos discos guarda a paridade (uma forma de soma de segurança) da informação contida nos discos. Se algum dos discos avariar, a paridade pode ser imediatamente utilizada para reconstituir o seu conteúdo.
  • RAID 5 – similar ao RAID 4, porém as informações sobre paridade para os dados do array são distribuídas ao longo de todos os discos do array, ao invés de serem armazenadas num disco dedicado, oferecendo assim mais desempenho que o RAID 4, e, simultaneamente, tolerância a falhas.
  • RAID 6 – semelhante ao RAID 5, porém usa o dobro de bits de paridade, garantindo a integridade dos dados caso até 2 dos HDs falhem ao mesmo tempo.

Seja por hardware ou software, um sistema RAID com redundância suficiente pode, de forma transparente, continuar operacional quando um disco falha; as camadas superiores da pilha (aplicações) podem até manter o acesso aos dados apesar da falha. No entanto, esse “modo degradado” pode ter impacto na performance, e a redundância é reduzida, até que o HD falho seja substituído. Uma vez que o novo disco seja colocado, o sistema RAID pode reconstruir os dados necessários e então retornar ao modo seguro. As aplicações não notarão nada, fora a potencial redução da velocidade de acesso, enquanto a array estiver no modo degradado ou durante a fase de reconstrução.

Níveis RAID que incluem redundância permitem atribuir mais discos do que o necessário para uma array. Os discos extras são usados como reservas quando um dos principais discos falha. Por exemplo, em um espelho de dois discos e mais um reserva, se um dos dois primeiros discos falhar, o núcleo irá automaticamente (e imediatamente) reconstruir o espelho usando o disco reserva, para que a redundância continue garantida após o momento de reconstrução.

Tela de setup da controladora, mostrando um RAID 1+0 defeituoso e abaixo outra tela de construção do RAID com dois HDs de 1 TB.
Tela de setup da controladora, mostrando um RAID 1+0 defeituoso e abaixo outra tela de construção do RAID com dois HDs de 1 TB.

Caso aconteça de um dos HDs der problema, basta trocá-lo por um novo e fazer o rebuild/reconstruct (comando que realiza a cópia do que está em um HD para o outro, ressincronizando as informações). Pode demorar várias horas, conforme a quantidade de dados.

Se dois discos de tamanhos diferentes são criados em um espelho, o maior não será totalmente usado, pois ele irá conter os mesmos dados como o menor e nada mais. O espaço útil disponível fornecido por um volume RAID-1, portanto, corresponde ao tamanho do disco menor na matriz. Por isso é importante, ao configurar arrays RAID (exceto RAID-0 ou “RAID linear”), só montar discos de tamanhos idênticos, ou muito perto, para evitar o desperdício de recursos.

Disk Storage Enclosure

Existem equipamentos que possuem diversas “gavetas” (chamadas “enclosure”) para conectar os HDs e protegê-los, externamente ao computador que está conectado a ele, conhecidos como Storage Enclosure. A storage deve ser conectada à máquina desligada, devendo ser ligada antes do PC conectado a ela. Com os HDs nele inseridos, é possível montar um sistema RAID utilizando setup próprio acessado durante inicialização. Caso ocorra interrupção de energia ou para manutenção, poderá aparecer a seguinte mensagem durante a inicialização (no caso da PERC 6/I Integrated BIOS Configuration Utility):

Foreign configuration(s) found on adapter.
Press any key to continue or ‘C’ load the configuration utility,
or press ‘F’ to import foreign configuration(s) and continue.

Ao escolher “F”, os HDs deixam de ser marcados como “foreign”: HD(s) que foi (ou foram) substituído(s) ou que possuam informações defasadas com relação ao seu espelho, considerando que formam um array, passarão automaticamente para o estado de “Rebuild”, copiando as informações do HD espelhado, e os que não foram danificados permanecerão como “online”.

perc_screen
Tela de setup de controladora Perc 6/E, iniciando rebuild de HD reinserido.

Além da Perc (comum em servidores Dell e HP), outro utilitário para storages é o LSI Web BIOS (comum na Supermicro). Seguem as teclas de acesso durante boot para acessar menu:

  • PERC 4 – CTRL+M
  • PERC 6/E – CTRL +R
  • LSI Web BIOS – CTRL+H

Veja esses tutoriais para criar um novo RAID e para inserir um novo disco como RAID 0 clicando nos links.

LVM

RAID e LVM são dois subsistemas do kernel. Em ambos os casos, o kernel fornece um arquivo de dispositivo de bloco semelhante aos que correspondem a uma unidade de disco rígido ou partição. Quando um pedido ou uma outra parte do núcleo requer o acesso a um bloco de um dado dispositivo, as rotas de subsistemas apropriadas do bloco são usadas para a camada física relevante. Dependendo da configuração, este bloco pode ser armazenado em um ou vários discos físicos e sua localização física pode não ser diretamente relacionada com a localização do bloco no dispositivo lógico.

O LVM (Logical Volume Manager), é uma outra abordagem (“concorrente” do RAID-0) para abstrair volumes lógicos a partir de seus suportes físicos, visando aumentar a velocidade de escrita e flexibilidade em vez da confiabilidade. Nele, é possível adicionar novos discos, migrar os dados para eles, e remover os discos velhos, sem desmontar o volume.

Alguns conceitos sobre LVM permitem essa flexibilidade. O PV (Physical Volume) é a entidade mais próxima ao hardware: ele pode ser partições em um disco, ou um disco inteiro, ou até mesmo qualquer outro dispositivo de bloco (incluindo, por exemplo, uma array RAID). Vários PVs podem ser agrupados em um VG (Volume Group), que são abstratos e não aparecem em um arquivo de dispositivo na hierarquia /dev. O LV (Logical Volume) é um pedaço de um VG (como se fosse uma partição, aparecendo como um dispositivo de bloco com uma entrada em /dev). Se o hardware disponível inclui discos rápidos e discos lentos, os rápidos poderiam ser agrupados em um VG e os lentos em outro.

As ferramentas necessárias estão no pacote lvm2 e suas dependência, através dos comandos pvcreate e lvcreate; volumes lógicos, quando criados, são representados como dispositivos de blocos no “/dev/mapper/”. Quando o computador é inicializado, o script “/etc/init.d/lvm” faz uma busca nos dispositivos disponíveis; aqueles que tiverem sido inicializados como volumes físicos para o LVM são registrados em um subsistema LVM, aqueles que pertencem aos grupos de volume são montados, e os volumes lógicos relevantes são iniciados e tornados disponíveis. Ao adicionar novos discos físicos, pode-se usar o comando lvresize, e então o resize2fs para adaptar o sistema de arquivos em conformidade – somente se for encolher é que precisa desmontar para sistemas de arquivos ext3, ext4 e xfs. Maiores detalhes na documentação do Debian.

Fonte: Wikipedia e Understanding Dell PowerEdge RAID Controllers

Compartilhe :)

One comment

Leave a Reply

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.