>_Raid

Introdução teórica

Um servidor deve sofrer muitas manutenções durante seu período de uso? Não! Um servidor bem configurado e otimizado deve funcionar muito bem durante anos com poucas intervenções. Um servidor deve ser bem mais estável e confiável do que um desktop.

O servidor pode fornecer vários serviços como DNS, HTTP, Proxy, BD, e muitos outros. Tudo isso para um número de usuários grande ao mesmo tempo. Mas o que torna um servidor seguro?

O que torna um servidor seguro é o uso de componentes redundantes! Quais são os problemas comuns que ocorre em um servidor? Problemas nos discos rígidos e fontes de alimentação. Os discos rígidos são confiáveis? Não são! Discos rígidos possuem partes mecânicas e estas são extremamente sujeitas a falhas.

Qual a vida média útil de um HD? em torno de 5 anos. Você pode até dar sorte de funcionar por mais algum tempo, dependendo da marca e dos seus cuidados com o disco.

Um HD IDE é recomendável para um servidor? Não! Os HDs recomendados são os do tipo SCSI ou Sata. O Sata é uma opção mais barata! O HD IDE não oferece suporte a NCQ. Mas o que é NCQ? NCQ é um recurso que permite que a controladora do HD altere a sequência das leituras a fim de otimizar o processo.

Vermelho sem NCQ – Verde com NCQ

O Comando Nativo de Enfileiramento também conhecido como NCQ (do acrônimo do inglês Native Command Queuing), é um protocolo de comando para dispositivos com o padrão SATA que possibilita ter diversos comandos pendentes serem executados em uma ordem internamente determinada pelo dispositivo (disco rígido).

Em termos simples, a funcionalidade do NCQ é um tanto similar à um elevador. O elevador viaja sequencialmente de andar a andar e deixa as pessoas entrarem e saírem. Não segue a seqüência que os usuários apertaram os botões de pedido do andar porque significaria uma carga mecânica excessiva e um tempo muito mais longo para esperar ou montar.

Um dispositivo SATA que suporte NCQ tem uma fila interna em que os comandos podem dinamicamente ser reagendados e requisitados novamente. NCQ inclui um mecanismo de rastreamento para ambas parcelas proeminentes e terminadas do workload do dispositivo. Além disso, o NCQ pode deixar o host emitir comandos adicionais ao dispositivo enquanto o dispositivo atende outro comando.

Para resolver todos esses problemas, o mais aconselhável é usar RAID. No meu caso irei  apenas comentar sobre RAID via software, uma opção mais economica financeiramente, mas o correto em um ambiente de produção é usar RAID via Hardware.

O RAID (Redundant Array of Inexpensive Disks) Foi desenvolvido em 1988 como uma solução barata para garantir a disponibilidade da informação armazenada em discos, utilizando para isso uma configuração especial de discos rígidos, que podem oferecer redundância em caso de falhas e ganho de perfomance em escrita ou leitura, dependendo da configuração do conjunto RAID.

Como principais vantagens, o RAID oferece:

  • Ganho de desempenho no acesso para leitura ou gravação
  • Redundância em caso de falha em um dos discos
  • Uso múltiplo de várias unidades de discos
  • Facilidade em recuperação de conteúdo perdido

RAID Via Software

RAID via 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. Pode ser utilizado o sistema de arquivos ext2, ext3, DOS-FAT ou outro.

Este tipo de RAID é implementado através dos módulos MD[6] do kernel do Linux e das ferramentas relacionadas.

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. Ele oferece uma importante e distinta característica: opera sobre qualquer dispositivo do bloco podendo ser um disco inteiro (por exemplo, /dev/sda), uma partição qualquer (por exemplo, /dev/hdb1), um dispositivo de loopback (por exemplo, /dev/loop0) ou qualquer outro dispositivo de bloco compatível, para criar um único dispositivo RAID. Isso diverge da maioria das soluções de RAID via hardware, onde cada grupo junta unidades de disco inteiras em um arranjo.

Comparando as duas soluções, o RAID via hardware é transparente para o sistema operacional, e isto tende a simplificar o gerenciamento. Via software, há de longe mais opções e escolhas de configurações, fazendo com que o assunto se torne mais complexo.

Importante saber:

Redundância é ter componentes de reserva para substituir o componente principal mantedo disponibilidade de serviços. Existem fontes redundantes, matriz de discos redundantes, servidores redundantes. Manter redundância requer um custo um pouco alto.

Níveis de RAID

Os principais níveis de RAID utilizados hoje no mercado são os níveis 0,1,5 e suas derivações, como por exmplo, o RAID 10.

RAID Nível 0

Este nível também é conhecido como “striping”. Os dados do computador são divididos entre dois ou mais discos disponíveis, o que oferece alta performance de transferência de dados, porém não oferece redundância. A perda de dados irá acontecer quando houver falha em algum disco. O nível 0 pode ser usado para estações de alta performance, porém não é indicado para sistemas tipo missão-crítica.

Este tipo de implemnteação vai utilizar o máximo disponível de discos no sistema, mas não vai garantir redundância e de fato vai aumentar as chances do disco virtual falhar. Se um disco pifar, a controladora não consegue reconstruir os arquivos.

RAID Nível 1

O nível 1 também é conhecido como “espelhamento”. Os dados do computador são divididos e gravados em 2 ou mais discos ao mesmo tempo, oferecendo portanto redundância dos dados e fácil recuperção, com proteção contra falha em disco. A operação com dados neste nível possuem tendência de serem gravados mais lentamente, porém com leitura rápida. Para criar um RAID1 é necessários implementar sempre discos em pares.

Importante saber:

RAID1 não é Backup. Se um arquivo for apagado, esse arquivo será apagado em todos os discos.
RAID1

  • Redundância, se um dos discos falhar o sistema continua funcionando
  • É preciso de 2 HDs, mas só vai usar a área útil de um
  • Reduz um pouco o desempenho da escrita, pois o mesmo dado é gravado nos discos que estiverem em RAID1.

RAID nível 4

Eeste tipo de RAID, basicamente, divide os dados entre os discos, sendo que um é exclusivo para paridade. A diferença entre o nível 4 e o nível 3, é que em caso de falha de um dos discos, os dados podem ser reconstruídos em tempo real através da utilização da paridade calculada a partir dos outros discos, sendo que cada um pode ser acessado de forma independente. O RAID 4 é indicado para o armazenamento de arquivos grandes, onde é necessário assegurar a integridade das informações. Isso porque, neste nível, cada operação de gravação requer um novo cálculo de paridade, dando maior confiabilidade ao armazenamento (apesar de isso tornae as gravações de dados mais lentas).

RAID Nível 5

Neste nível de RAID teremos um balanço das vantagens e desvantagens do níveis anteriores, ou seja, RAID5 provém um ganho de desempenho e tolerância a falhas a custo menores que RAID0 ou RAID1 individualmente. O ganho de desempenho está mais uma vez na leitura. Quanto mais discos forem adicionados a composição, mais rápida será a leitura, uma vez que a gravação é distribuída em blocos de tamanho igual por todos os discos. A mágica do RAID5 está justamente na divisão e distribuição destes blocos. Numa composiçao de três discos os dados serão divididos em dois blcos, A1 e B1, sendo que bits destes dois blocos serão comparado através de um XOR (“ou exclusivo”). O resultado será gravado no terceiro volume como P1. Além disso, os blocos de paridade são alternadamente gravados em cada disco, aumentando a tolerância.

A1 B1 P1
A2 P2 C2
P3 B3 C3

Qualquer um dos discos que falhar pode ser rapidamente reconstruído através de novas operações XOR entre os dados restantes.

O que é XOR?

A operação XOR significa que se são iguais ‘0’ e ‘0’ ou ‘1’ e ‘1’, então o resultado é verdadeiro (0). Se houver mais dois blocos paraa serem comparados, calcule a paridade de dos dois primeiros, e com resultado, compare com o terceiro, e assim sucessivamene. A principal desvantagem do RAID5 é o custo de processamento da paridade. Portanto, RAID5 é menos eficiente na gravação que seus antecessores.

A quantidade mínima de discos no RAID5 é 3, podendo suportar qualquer número maior que 3, mesmo para discos de tamanhos diferentes. O volume disponível para armazenar é dado pela equação (Q-1)*Dmenor, onde Q é a quantidade de discos, e Dmenor o tamanho do menor disco.

Os níveis de RAID podem ser combinados para se potencializar alguma das vantagens deles. As combinações mais comuns são os chamados RAID 10, RAID 0+1 e RAID 50.

RAID  Nível 1+0

O RAID 1+0, ou 10, exige ao menos 4 discos rígidos. Cada par será espelhado, garantindo redundância, e os pares serão distribuídos, melhorando desempenho. Até metade dos discos pode falhar simultaneamente, sem colocar o conjunto a perder, desde que não falhem os dois discos de um espelho qualquer — razão pela qual usam-se discos de lotes diferentes de cada ‘lado’ do espelho. É o nível recomendado para bases de dados, por ser o mais seguro e dos mais velozes, assim como qualquer outro uso onde a necessidade de economia não se sobreponha à segurança e desempenho.

Vantagens:

– Segurança contra perda de dados.
– Pode falhar um ou dois dos HDs ao mesmo tempo, dependendo de qual avaria.

Desvantagens:

– Alto custo de expansão de hardware (custo mínimo = 2N HDs).
– Os drivers devem ficar em sincronismo de velocidade para obter a máxima performance.

RAID Nível 50

É um arranjo híbrido que usa as técnicas de RAID com paridade em conjunção com a segmentação de dados. Um arranjo RAID-50 é essencialmente um arranjo com as informações segmentadas através de dois ou mais arranjos. Veja o esquema representativo abaixo:

Vantagens:

– Alta taxa de transferência.
– Ótimo para uso em servidores.

Desvantagens:

– Alto custo de implementação e expansão de memória.

Comparação dos Níveis de RAID

Pode-se fazer uma comparação entre os vários níveis de RAID, de acordo com desempenho (leitura, gravação e reconstrução), disponibilidade de dados e o número mínimo de unidades requeridas. Observe na tabela a descrição destes atributos para comparação dos níveis de RAID. Seguindo as referências:

  • A= Disponibilidade dos Dados
  • B= Desempenho de Leitura
  • C= Desempenho de Gravação
  • D= Desempenho de Reconstrução
  • E= Número Mínimo de Unidades Requeridas

Tabela de atributos de comparação dos Vários Níveis de RAID

Nível de RAID A B C D E
RAID 0 Nenhuma Muito bom Muito bom Não disponível N
RAID 1 Excelente Muito bom Bom Bom 2N
RAID 4 Boa E/S seqüencial: Boa E/S transacional: Boa E/S seqüencial: Muito boa E/S transacional: Ruim Satisfatória N + 1 (N pelo menos 2)
RAID 5 Boa E/S seqüencial: Boa E/S transacional: Muito boa Satisfatória (a menos que o cache write-back seja usado) Ruim N + 1 (N pelo menos 2)
RAID 10 Excelente Muito boa Satisfatória Boa 2N
RAID 50 Excelente Muito boa Satisfatória Satisfatória N+2

Configurand um RAID via Software na prática

1 – Crie 3 partições de 512mb cada.

# cfdisk

1

2
na escolha do tipo da partição, coloque o tipo fd.

Com as partições criadas, será preciso reinicair o sistema.

# shutdown -r now

Lembre-se que neste post estou fazendo RAID via software através do mesmo disco, isso jamais será correto em um ambiente de produção. O correto é fazer RAID via software com  dois discos ou mais.

2 – Agora temos que instalar o pacote mdadm

# aptitude install mdadm

3 – Agora execute o comando abaixo em outro terminal

# watch cat /proc/mdstat

Esse comando verifica a cada 2 segundos o estado doRAID no Kernel.

4 – Agora iremos criar o RAID nível 1 utilizando “dois discos” e um “spare“.

# mdadm  –create /dev/md0 –level=1 –raid-devices=2 –spare-devices=1 /dev/sda6 /dev/sda7 /dev/sda8

No segundo terminal, verifique o estado do RAID no Kernel

5 – Depois de criarmos o RAID, é preciso editar o arquivo /etc/mdadm/mdadm.conf, que será utilizado durante a administração do RAID.

# vim /etc/mdadm/mdadm.conf

1

2

6 – Agora iremos aplicar o sistema de arquivos ext3 no dispositivo /dev/md0

7 – Crie um ponto de montagem em /mnt/raid

8 – Montando o RAID

# mount -t ext3 /dev/md0 /mnt/raid

verificando a partição com RAID

10 – Configure o /etc/fstab

#  vim /etc/fstab

/dev/md0 /mnt/raid ext3 defaults 0 2

Verificando o funcionamento do RAID

# mdadm -E /dev/sda6
# mdadm -E /dev/sda7
# mdadm -E /dev/sda8

11 – Agora vamos testar a redundância. Crie um script chamado testeraid que escreva em um arquivo de 3 em 3 segundos

# vim /root/testeraid

#!/bin/bash

while true ; do
date >> /mnt/raid/dados.txt
sleep 3
done

Este scirpt diz o seguinte, enquanto verdadeiro faça, escreva a data dentro do diretório /mnt/raid, no arquivo dados.txt a cada 3 egundos.

Insira a permissão de execução neste script. Agora execute o script em segundo plano.

Com o comando tail-f eu verifico em tempo real o arquivo dados.txt

Administrando o RAID

Agora vamos aprender a adicionar, remover e simular uma falha m um dos discos do RAID.

1 – Provocando uma falha

# mdadm /dev/md0 –fail /dev/sda6

2 – Verificando os detalhes do RAID após a falha

# watch cat /prc/mdstat

# mdadm  –detail /dev/md0

3 – Removendo o disco defeituoso

# mdadm /dev/md0 –remove /dev/sda6

# watch cat /prc/mdstat

# mdadm –detail /dev/md0

4 – Adicionando um disco ai RAID

# mdadm /dev/md0 –add /dev/sda6

# watch cat /prc/mdstat

# mdadm –detail /dev/md0

Perceba que o arquivo permaneceu perfeito durante o processo de falha, remoção e inserção de um disco no RAID.

Para parar o RAID

# mdadm -S /dev/md0

Para iniciar o RAID

# mdadm -As /dev/md0

Para remover o RAID definitivamente do seu sistema, siga os passos abaixo:

1 – umount /mnt/raid
2 – mdadm -S /dev/md0
3 – mdadm –manage –remove /dev/md0
5 – remova a chamada criado dentro do arquivo rc2.d

Este mesmo post feito em Debian, serve exatamente para o CentOS.

“Se não puder se destacar pelo talento, vença pelo esforço.”
(Dave Weinbaum)

>_Raid
Tagged on:

Deixe uma resposta

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

%d blogueiros gostam disto: