Linux Network
PROFESSOR ATOS RAMOS
Linux Network
Objetivos
Entender os principais níveis de RAID;
Configurar RAID-1;
Verificar o estado do RAID;
Simular falhas no RAID.
Linux Network
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”,”Banco de Dados”, e
muitos outros. Todos eles configurados para atender um alto número de usuários simultâneos. Mas
o que torna um servidor seguro?
O que torna um servidor seguro é o uso de componentes redundantes. Quais são os
problemas mais comuns que ocorrem 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.
Linux Network
Qual a vida média útil de um HD? Em torno de 5 anos. Pode-se ter sorte e ele funcionar por
mais algum tempo bem. Depende da marca e dos seus cuidados com o disco.
HDs “IDE” não são recomendados para servidores. 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”? Trata-se de um recurso que
permite à controladora do HD alterar a sequência das leituras no disco, a fim de otimizar o
processo.
Linux Network
Linux Network
O que poderia ser feito para garantir que esse servidor continue operando caso um disco pife?
Usar RAID.
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 performance em escrita ou leitura, dependendo da configuração do
conjunto “RAID”.
Linux Network
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.
Existem duas formas de criarmos um “RAID”:
Linux Network
Via Software: Feito por aplicativos e módulos do sistema operacional. O “RAID” via software só
entra em funcionamento depois que o “Kernel” é carregado na memória do computador. A
principal vantagem é a facilidade de configuração e a flexibilidade, já que podemos
trabalhar com vários discos diferentes. A principal desvantagem é a dependência da correta
configuração do sistema operacional.
Via Hardware: Feito por uma placa controladora que conecta um disco ao outro. A principal
vantagem é o desempenho, já que um “RAID” via hardware é mais rápido e independente do
sistema operacional. A principal desvantagem, é que a placa controladora se torna um SPOF -
Single Point of Failure, ou seja, é necessário ter uma controladora de discos igual ou compatível
com a que você possui para o caso de falhas neste hardware.
Linux Network
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 exemplo, o RAID 10. Vamos entendê-los:
RAID 0: Este é o único nível de “RAID” que não implementa redundância. Sua finalidade é
aumentar o desempenho de leitura e gravação, uma vez que ao gravar, divide os dados em
partes iguais e armazena cada fragmento em um disco diferente simultaneamente. Por isso,
com dois discos, a velocidade de leitura praticamente dobra. Com três discos, triplica. E assim
por diante. Sua desvantagem é que se qualquer um dos disco falhar, o sistema operacional
para de funcionar, além de ocasionar perda dos dados. São necessários ao menos dois discos
para implementar “RAID 0”, e eles podem ser de tamanhos diferentes.
Linux Network
Linux Network
Então o RAID 0 garante redundância?
Não. Este tipo de implementação vai utilizar o máximo disponível de discos no sistema, mas não vai te
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. Portanto é um método que requer cuidados.
Características do RAID 0:
* Excelente gravação e leitura;
* Aproveitamento total de espaço;
* Nenhuma redundância.
Linux Network
RAID 1: O nível mais utilizado. Sua principal finalidade é prover redundância dos dados. Esta é
garantida pela duplicação dos dados que são igual e simultaneamente gravados em cada par
de discos, logo, se um deles falhar, o outro continuará operando e mantendo a informação
disponível, até que a substituição do disco defeituoso seja feita. O ganho de desempenho está
na leitura, uma vez que os dados são lidos em partes iguais e simultaneamente de todos os
discos. A desvantagem desse nível é que só metade do volume total de armazenamento nos
discos utilizados ficará disponível para o sistema operacional. É preciso no mínimo dois discos
para implementar “RAID 1”, sempre em pares.
Linux Network
Linux Network
RAID1 é backup? Não. É apenas redundância.
DICA DE SEGURANÇA: “RAID 1” espelhado não é backup. Se você apagar um arquivo
acidentalmente esse arquivo vai ser apagado em todos os discos. Sempre tenha uma CÓPIA dos
dados.
Características do RAID 1:
* Redundância: se um dos discos falhar o sistema continua funcionando;
* Você vai precisar 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 “RAID
1”.
Fique atento, a prova do LPI irá cobrar a utilização e conceitos de “RAID”. Um comando que
podemos utilizar para fazer backup e manutenção de arquivos no sistema é o comando “rsync”.
Outros comandos que nos mostra alguns detalhes importantes são “hdparm” e “sdparm”.
Linux Network
RAID 5: Neste nível de “RAID” teremos um balanço das vantagens e desvantagens do níveis
anteriores, ou seja, “RAID 5” provém um ganho de desempenho e tolerância a falhas a custos
menores que “RAID 0” ou “RAID 1” 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ídas em blocos de tamanhos iguais por todos os discos. A “mágica” do
“RAID 5” está justamente na divisão e distribuição destes blocos. Numa composição de três discos os
dados serão divididos em dois blocos, “A1” e “B1”, sendo que os bits destes dois blocos serão
comparados através de um “XOR” que é um identificador de exclusividade. 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.
Exemplo:
A1 B1 P1
A2 P2 C2
P3 B3 C3
Linux Network
Qualquer um dos discos que falhar pode ser rapidamente reconstruído através de novas operações “XOR” entre
os dados restantes. Tomemos por exemplo “A1 = 01001100” e “B1 = 10100101”.
01001100 XOR
10100101
--------
11101001
Agora suponha que o bloco “B1” foi perdido. Para recuperá-lo basta aplicar um “XOR” entre “A1” e “P1”.
01001100 XOR
00010110
--------
01011010
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 de
dois blocos para serem comparados, calcule a paridade dos dois primeiros, e com resultado, compare com o
terceiro, e assim sucessivamente. A principal desvantagem do “RAID 5” é o custo de processamento da paridade.
Portanto, “RAID 5” é menos eficiente na gravação que seus antecessores.
Linux Network
A quantidade mínima de discos no “RAID 5” é 3, podendo suportar qualquer número maior que
3, mesmo para discos de tamanhos diferentes. O volume disponível para armazenamento é
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 chamado “RAID 10”, “RAID 0+1” e “RAID 50”.
A prova LPI pode cobrar conhecimentos do aluno sobre os níveis de “RAID” citados. Não
esqueça que “RAID” não é Backup. Tenha sempre Backup.
Linux Network
Antes de criarmos as partições “RAID”, temos que ter em mente nossa tabela de particionamento:
# cat /etc/fstab
Agora iremos ver nossas partições:
# cat /proc/partitions
Por causa do Aula de “RAID” iremos ter que recriar as partições, e deixar estas Partições Livres
para nossos testes:
Tipo Device Ponto de Montagem Tamanho em MB Filesystem
Log /dev/sda10 Não montado 512 MB Sem fs
Log /dev/sda11 Não montado 512 MB Sem fs
Log /dev/sda12 Não montado 512 MB Sem fs
Log /dev/sda13 Não montado 512 MB Sem fs
Log /dev/sda14 Não montado 512 MB Sem fs
Nas partições para realização deste trabalho, defina o tipo das partições como “sem fs”, e utilize o
programa “cfdisk” para realização desta tarefa. Não esqueça de reiniciar o computador.
# cfdisk /dev/sda
Linux Network
Trabalhando com MDADM
Verifique se o pacote “mdadm” já está instalado, e instale-o se necessário:
# dpkg -l mdadm
# aptitude install mdadm
Depois de instalar o pacote “mdadm”, abra um segundo terminal e visualize o estado
do “RAID” no Kernel:
# watch cat /proc/mdstat
Linux Network
Criando o “RAID”
Vamos criar o “RAID” utilizando o nível 1 utilizando dois discos e um "spare":
# mdadm --create /dev/md0 --level=1 --raid-devices=2 --spare-devices=1
/dev/sda11 /dev/sda12 /dev/sda13
No segundo terminal, verifique a sincronização do RAID.
Depois de criarmos o “RAID”, é necessário editar o arquivo “/etc/mdadm/[Link]”, que será
utilizado durante a administração do “RAID”:
# vim /etc/mdadm/[Link]
Modifique o arquivo, adicionando o seguinte conteúdo:
DEVICE /dev/sda11 /dev/sda12 /dev/sda13
ARRAY /dev/md0 devices=/dev/sda11,/dev/sda12,/dev/sda13
Depois de criarmos o “RAID”, aplique o sistema de arquivos “ext3” no dispositivo “/dev/md0”:
# mkfs.ext3 /dev/md0
Linux Network
Crie um ponto de montagem em “/mnt/raid”
# mkdir /mnt/raid
Montando o “RAID”:
# mount -t ext3 /dev/md0 /mnt/raid
Configure o “/etc/fstab”:
/dev/md0 /mnt/raid ext3 defaults 0 2
Linux Network
Verificando os dispositivos individualmente:
# mdadm -E /dev/sda11
# mdadm -E /dev/sda12
# mdadm -E /dev/sda13
Para testar a redundância, vamos criar um “script” chamado
"[Link]" que escreve em um arquivo de 3 em 3 segundos:
# vim /root/[Link]
#!/bin/bash
while true ; do
date >> /mnt/raid/[Link] Vamos atribuir as permissões
necessárias para execução:
sleep 3
# chmod +x /root/[Link]
done
# /root/[Link]
Linux Network
Administrando o RAID
Vamos aprender a adicionar, remover e simular uma
falha em um dos discos do RAID.
Provocando uma falha:
# mdadm /dev/md0 --fail /dev/sda11
• Adicionando um disco ao “RAID”:
# mdadm /dev/md0 --add /dev/sda11
# mdadm --detail /dev/md0
Verificando os detalhes do “RAID” após a falha:
# mdadm --detail /dev/md0 • Parando o “RAID”:
# umount /mnt/raid
Removendo o disco defeituoso: # mdadm -S /dev/md0
# mdadm /dev/md0 --remove /dev/sda11
# mdadm --detail /dev/md0 • Reiniciando o “RAID”:
# mdadm -As /dev/md0
Obrigado a todos
PROFESSOR ATOS RAMOS