Trabalhando com Raid via Software no Debian / Ubuntu
Autor: Ensina Linux by Fábio Vieira | Publicado: 2012-10-08T21:53:00-03:00




Redundant Array of Independent Drives, também denominado  Redundant Array of Inexpensive Drives, mais conhecido como simplesmente RAID
 ou ainda em português: Conjunto Redundante de Discos Independentes ou 
também Conjunto Redundante de Discos Econômicos ou ainda Arranjo 
Redundante de Discos Independentes, é um meio de se criar um sub-sistema
 de armazenamento composto por vários discos individuais, com a 
finalidade de ganhar segurança e desempenho.




Popularmente, RAID
 seriam dois ou mais discos (por exemplo, HD ou disco rígido) 
trabalhando simultaneamente para um mesmo fim, por exemplo, citando o 
exemplo de RAID-1
 logo abaixo, serviria como um espelhamento simples, rápido e confiável 
entre dois discos, para fazer o backup de um disco em outro. Apesar do RAID oferecer segurança e confiabilidade na adição de redundância e evitar falhas dos discos, o RAID
 não protege contra falhas de energia ou erros de operação. Falhas de 
energia, código errado de núcleo ou erros operacionais podem danificar 
os dados de forma irrecuperável.&nbsp;




Implementação Via software
&nbsp;




Na implementação via software, o sistema operacional gerencia o RAID através da controladora de discos, sem a necessidade de um controlador de RAIDs, tornando-a mais barata.




Nesse tipo de implementação, todo o processamento necessário para o gerenciamento do RAID
 é feito pela CPU. Toda movimentação de dados(leitura e escrita) é feita
 por uma camada de software que faz a abstração entre a operação lógica (RAID) e os discos físicos, e é controlada pelo sistema operacional.




A configuração do RAID
 via software é feita pelo sistema operacional, que precisa ter 
implementado no próprio núcleo a utilização de RAIDs via software. É 
possível criar RAIDs via software no Mac OS
 X, Linux, FreeBSD, OpenBSD e no Windows (versão server). 
Alternativamente, podem ser criados com algum software especialmente 
dedicado a manutenção de discos rígidos do fabricante da placa mãe 
(quando há suporte para RAID, é claro).




&nbsp;
Implementação Via hardware




Controladoras RAID
 em hardware usam layouts de disco proprietários (e diferentes). Por 
isso, normalmente não é possível misturar controladoras de fabricantes 
diferentes. Eles não utilizam recursos do processador. O BIOS - Basic 
!Input/Output System - pode iniciar (dar boot) por ela, e uma integração
 maior com o driver de dispositivo pode oferecer um melhor tratamento de
 erros.




Uma implementação de RAID
 em hardware requer pelo menos uma controladora especialmente dedicada 
para isso. Em uma estação de trabalho (PC comum) isso pode ser uma placa
 de expansão PCI, PCI-e ou uma placa integrada à placa-mãe. 
Controladoras utilizando a maioria dos tipos de drive podem ser usadas -
 IDE/ATA, Serial ATA, SCSI,
 SSA, Fibre Channel, e às vezes uma combinação. A controladora e os 
discos utilizados devem estar isolados. Podem estar conectados 
diretamente ao computador, ou conectados via SAN. 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 proveem cache de leitura e 
escrita, o que (dependendo da carga de I/O) melhora a performance. Na 
maioria dos casos, o cache de escrita é não-volátil (protegido por 
bateria), e portanto, escritas pendentes não são perdidas no caso de uma
 falha no suprimento de energia. Implementações em hardware promovem 
performance garantida, não sobrecarregam o processador e podem suportar 
vários sistemas operacionais, já que a controladora apresentará ao 
sistema operacional um disco simples.
A maioria das implementações em hardware também suporta o 
“hot-swapping”, permitindo que discos com falha sejam substituídos 
enquanto o sistema está sendo executado.




&nbsp;
Níveis de RAID




Níveis de RAID são as várias maneiras de combinar discos para um fim.




&nbsp;
RAID




O sistema RAID
 consiste em um conjunto de dois ou mais discos rígidos com dois 
objetivos básicos:
tornar o sistema de disco mais rápido (isto é, acelerar o carregamento 
de dados do disco), através de uma técnica chamada divisão de dados 
(data striping ou RAID 0);tornar o sistema de disco mais seguro, através de uma técnica chamada espelhamento (mirroring ou RAID 1).




Essas duas técnicas podem ser usadas isoladamente ou em conjunto.




&nbsp;
Vetor RAID 0 Linear




É uma simples concatenação de partições para criar uma grande partição virtual.




&nbsp;
RAID 0 (Striping)




No striping, ou distribuição, os dados são subdivididos em segmentos 
consecutivos (stripes, ou faixas) que são escritos sequencialmente 
através de cada um dos discos de um array, ou conjunto. Cada segmento 
tem um tamanho definido em blocos. A distribuição, ou striping, oferece 
melhor desempenho comparado a discos individuais, se o tamanho de cada 
segmento for ajustado de acordo com a aplicação que utilizará o 
conjunto, ou array.
Há problemas de confiabilidade e desempenho. RAID-0
 não terá desempenho desejado com sistemas operacionais que não oferecem
 suporte a busca combinada de setores. Uma desvantagem desta organização
 é que a confiança se torna geometricamente pior. Um disco SLED com um 
tempo médio de vida de 20.000 horas será 4 vezes mais seguro do que 4 
discos funcionando em paralelo com RAID
 0 (admitindo-se que a capacidade de armazenamento somada dos quatro 
discos for igual ao do disco SLED). Como não existe redundância, não há 
confiabilidade neste tipo de organização.




&nbsp;
Vantagens:




 Acesso rápido as informações (até 50% mais rápido);


 custo baixo para expansão de memória.


Desvantagens:




 Caso algum dos setores de algum dos 
HD’s venha a apresentar perda de informações, o mesmo arquivo que está 
dividido entre os mesmos setores dos demais HD’s não terão mais sentido 
existir, pois uma parte do arquivo foi corrompida, ou seja, caso algum 
disco falhe, não tem como recuperar;


 Não é usada paridade.


RAID 1




&nbsp;
RAID-1 é o nível de RAID
 que implementa o espelhamento de disco, também conhecido como mirror.&nbsp;
Para esta implementação são necessários no mínimo dois discos. O 
funcionamento deste nível é simples: todos os dados são gravados em dois
 discos diferentes; se um disco falhar ou for removido, os dados 
preservados no outro disco permitem a não descontinuidade da operação do
 sistema.




&nbsp;
Vantagens:  




 Caso algum setor de um dos discos 
venha a falhar, basta recuperar o setor defeituoso copiando os arquivos 
contidos do segundo disco;


 Segurança nos dados (com relação a possíveis defeitos que possam ocorrer no HD).


Desvantagens:




 Custo relativamente alto se comparado ao RAID 0;


 Ocorre aumento no tempo de escrita;


 Não é usada paridade.


RAID 2




O RAID 2 surgiu no final dos anos 1980, onde os HDs não possuíam checagem de erros. Assim, pode-se dizer que o RAID 2 é similar ao RAID
 4, mas possuíndo algoritmos de Hamming ECC (Error Correcting Code)[1], 
que é a informação de controle de erros, no lugar da paridade. Além 
disso, pode-se ter várias configurações, como 10 discos normais + 4 
discos somente para ECC. Este fato possibilita uma protecção adicional, 
porém o RAID 2 ficou obsoleto pelas novas tecnologias de disco já possuírem este tipo de correcção internamente. O RAID
 2 origina uma maior consistência dos dados se houver queda de energia 
durante a escrita. Baterias de segurança e um encerramento correto podem
 oferecer os mesmos benefícios.




&nbsp;
Vantagem:




 Usa ECC, diminuindo a quase zero as taxas de erro, mesmo com falhas de energia.


Desvantagem:




 Hoje em dia, há tecnologias melhores para o mesmo fim.


 Dependendo da configuração e 
necessidade da empresa, era necessário a mesma quantidade de discos ECC 
para discos normais, isto é, desperdício de espaço que poderia ser usado
 para dados.


RAID 3




O RAID 3 é uma versão simplificada do RAID
 nível 2. Nesse arranjo, um único bit de paridade é computado para cada 
palavra de dados e escrito em um drive de paridade. À primeira vista, 
pode parecer que um único bit de paridade dá somente detecção de erro, e
 não correção de erro. Para o caso de erros aleatórios não detectados, 
essa observação é verdadeira. Todavia, para o caso de uma falha de 
drive, ela provê correção total de erros de um bit, uma vez que a 
posição do bit defeituoso é conhecida. Se um drive falhar, o controlador
 apenas finge que todos os seus bits são “zeros”. Se uma palavra 
apresentar erro de paridade, o bit que vem do drive extinto deve ter 
sido um “um”, portanto, é corrigido.




A fim de evitar o atraso em razão da latência rotacional, o RAID
 3 exige que todos os eixos das unidades de disco estejam sincronizados.
 A maioria das unidades de disco mais recentes não possuem a opção de 
sincronização do eixo, ou se são capazes disto, faltam os conectores 
necessários, cabos e documentação do fabricante.




&nbsp;
Vantagens:




 Leitura rápida;


 Escrita rápida;


 Possui controle de erros.


Desvantagem:




 Montagem difícil via software.


RAID 4




O RAID 4 
funciona com três ou mais discos iguais. 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. Os discos restantes, usados para 
armazenar dados, são configurados para usarem segmentos suficientemente 
grandes (tamanho medido em blocos) para acomodar um registro inteiro. 
Isto permite leituras independentes da informação armazenada, fazendo do
 RAID 4 um array perfeitamente ajustado para ambientes transacionais que requerem muitas leituras pequenas e simultâneas.




O RAID 4 assim como outros RAID's,
 cuja característica é utilizarem paridade, usam um processo de 
recuperação de dados mais envolvente que arrays espelhados, como RAID
 1. Este nível também é útil para criar discos virtuais de grande 
dimensão, pois consegue somar o espaço total oferecido por todos os 
discos, exceto o disco de paridade. O desempenho oferecido é razoável 
nas operações de leitura, pois podem ser utilizados todos os discos em 
simultâneo.




Sempre que os dados são escritos no array, as informações são lidas do 
disco de paridade e um novo dado sobre paridade deve ser escrito para o 
respectivo disco antes da próxima requisição de escrita ser realizada. 
Por causa dessas duas operações de I/O, o disco de paridade é o factor 
limitante do desempenho total do array. Devido ao facto do disco 
requerer somente um disco adicional para protecção de dados, este RAID é mais acessível em termos monetários que a implementação do RAID 1.




Vantagens:




 Taxa de leitura rápida;


 Possibilidade do aumento de área de discos físicos.


Desvantagens:




 Taxa de gravação lenta;


 Em comparação com o RAID 1, em caso de falha do disco, a reconstrução é difícil, pois o RAID 1 já tem o dado pronto no disco espelhado;


 Tecnologia não mais usada por haver melhores para o mesmo fim.


RAID 5




O RAID 5 é frequentemente usado e funciona similarmente ao RAID
 4, mas supera alguns dos problemas mais comuns sofridos por esse tipo. 
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.




Para aumentar o desempenho de leitura de um array RAID
 5, o tamanho de cada segmento em que os dados são divididos pode ser 
optimizado para o array que estiver a ser utilizado. O desempenho geral 
de um array RAID 5 é equivalente ao de um RAID
 4, excepto no caso de leituras sequenciais, que reduzem a eficiência 
dos algoritmos de leitura por causa da distribuição das informações 
sobre paridade. A informação sobre paridade é distribuída por todos os 
discos; perdendo-se um, reduz-se a disponibilidade de ambos os dados e a
 paridade, até à recuperação do disco que falhou. Isto causa degradação 
do desempenho de leitura e de escrita.




&nbsp;
Vantagens:




 Maior rapidez com tratamento de ECC;


 Leitura rápida (porém escrita não tão rápida).


Desvantagem:




 sistema complexo de controle dos HDs.


RAID 6




É um padrão relativamente novo, suportado por apenas algumas controladoras. É 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. Ao usar 8 HDs de 20 GB cada um, em RAID 6, teremos 120 GB de dados e 40 GB de paridade.




&nbsp;
Vantagem:




 Possibilidade falhar 2 HDs ao mesmo tempo sem perdas.


Desvantagens:




 Precisa de N+2 HDs para implementar por causa dos discos de paridade;



escrita lenta;




 Sistema complexo de controle dos HDs.


RAID 0 (zero) + 1




O RAID 0 + 1 é
 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. Assim, é possível 
utilizar o bom rendimento do nível 0 com a redundância do nível 1. No 
entanto, é necessário pelo menos 4 discos para montar um RAID desse tipo. Tais características fazem do RAID 0 + 1 o mais rápido e seguro, porém o mais caro de ser implantado. No RAID 0+1, se um dos discos vier a falhar, o sistema vira um RAID 0.




Ex: se os dois discos que possuam a sequencia A1, A3, A5 falharem ao 
mesmo tempo, haverá perda de dados. Se apenas uma das controladoras 
falhar, o sistema continua funcionando, mas sem outra tolerância a falha
 e sem o ganho de velocidade.




&nbsp;
Vantagens:




 Segurança contra perda de dados;


 Pode falhar 1 dos HD's, ou os dois HD's do mesmo !DiskGroup, porém deixando de ser RAID 0 + 1.


Desvantagens:




 Alto custo de expansão de hardware (custo mínimo = 4N HDs);


 Os drives devem ficar em sincronismo de velocidade para obter a máxima performance.


RAID 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.




&nbsp;
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 = 4N HDs);


 Os drivers devem ficar em sincronismo de velocidade para obter a máxima performance.


RAID 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:




&nbsp;
Vantagens:




 Alta taxa de transferência;


 Ótimo para uso em servidores.


Desvantagens:




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


RAID 100




O RAID 100 basicamente é composto do RAID 10+0. Normalmente ele é implementado utilizando uma combinação de software e hardware, ou seja, implementa-se o RAID 0 via software sobre o RAID 10 via Hardware.




Agora que ja aprendemos um pouco sobre raid, vamos começar as configurações.


&nbsp;
# aptitude update &amp;&amp; aptitude dist-upgrade &amp;&amp; aptitude install mdadm
&nbsp;

Precisamos carregar o módulo de raid


# modprobe dm_mod
&nbsp;
Agora vamos aos comandos para Desmontar um RAID


&nbsp;
# mdadm -S /dev/md0

Desfazer a ligação entre os discos:


&nbsp;
# mdadm --zero-superblock /dev/sde
# mdadm --zero-superblock /dev/sdf

&nbsp;
Agora vamos aos comandos para a criação do raid 0


&nbsp;
# mdadm -C /dev/md0 -v -l 0 -n 2 /dev/{sdb,sdc}

Aqui estamos utilizando 2 discos o /dev/sdb e o /dev/sdc




  mdadm é o comando para a criação do raid


  -C qual dispositivo que vai ser criado no nosso cado o /dev/md0


  -v modo verbose


  -l 0 O level de raid no nosso caso o raid 0


  -n numero de dispositivos utilizandos para o raid


 /dev/{sdb,sdc} → discos que vão ser utilizados para a criação do raid



O raid 0 não tem redundância ele serve para expandirmos o tamanho do disco ou seja caso tenhamos 2 discos de 20 GB
  e montarmos o raid 0 com eles vamos ter um raid de 40GB, porem caso um
 deles venha a falhar vamos perder toda a partição pois os dados são 
gravamos distribuindo pelos 2 discos.




&nbsp;
Agora vamos aos comandos para a criação de um raid 1


&nbsp;
# mdadm -C /dev/md1 -v -l 1 -n 2 /dev/{sdd,sde}


  mdadm é o comando para a criação do raid


  -C Qual dispositivo que vai ser criado no nosso caso o  /dev/md1


  -v Modo verbose


  -l 1 O level de raid no nosso caso o raid 1


  -n Número de dispositivos utilizados para o raid


  /dev/{sdd,sde} → Discos que vão ser utilizados para a criação do raid



O raid 1 trabalha com redundância pois espelha os discos no caso dos 
meus dois discos com 20GB o tamanho do raid vai ser 20GB pois estamos 
trabalhando com eles espelhando os dados, neste caso perderíamos um 
disco em questões de tamanho de armazenamento.




&nbsp;
Raid5




Um dos níveis mais utilizados. Nele, cada elemento do conjunto guarda 
dados e informações sobre paridade, o que resulta em uma melhor 
performace de gravação por não haver necessidade de acessar um outro 
disco para gravar a paridade dos dados. Se um dos elementos do conjuntos
 falhar, não prejudica o funcionamento do arranjo como um todo, apenas 
causa perda da performace até que esse elemento seja reintegrado ao 
conjunto.




OBS: Caso mais de um membro do arranjo falhe, ele se torna indisponível, ou seja o RAID 5 não suporte perda de mais de um componente do arranjo.




&nbsp;
Agora vamos aos comandos para a criação de um raid 5


&nbsp;
# mdadm -C /dev/md5 -v -l 5 -n 3 /dev/{sdf,sdg,sdh}

&nbsp;Aqui estamos utilizando 3 discos o /dev/sdf e o /dev/sdg e o /dev/sdh




  mdadm é o comando para a criação do raid


  -C Qual dispositivo que vai ser criado no nosso caso o  /dev/md5


  -v Modo verbose


  -l 5 O level de raid no nosso caso o raid 5


  -n Número de dispositivos utilizados para o raid


  /dev/{sdf,sdg,sdh} → Discos que vão ser utilizados para a criação do raid


Para acompanhar o raid podemos verificar o arquivo /proc/mdstat




Exemplo de um arquivo com um raid1 e um raid5


&nbsp;
# cat /proc/mdstat&nbsp;
&nbsp;
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdc[1] sdb[0]
      2096116 blocks super 1.2 [2/2] [UU]
&nbsp;
md5 : active raid5 sdf[3] sdd[0] sde[1]
      4191232 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
&nbsp;
unused devices: &lt;none&gt;

Agora é só montar o sistema de arquivos em um dos /dev/{md1,md5}


&nbsp;
# mkfs.ext3 -L raid1 /dev/md1
# mkfs.ext3 -L raid5 /dev/md5

Agora temos que efetuar a montagem do raid para podemos utilizá-lo


&nbsp;
# mkdir /mnt/{raid1,raid5}

Agora é só montar


&nbsp;
# mount /dev/md1 /mnt/raid1
# mount /dev/md5 /mnt/raid5

Vamos verificar as partições


&nbsp;
# df -Th&nbsp;
&nbsp;
Sist. Arq.    Tipo    Size  Used Avail Use% Montado em
/dev/sda1     ext3    323M  146M  161M  48% /
tmpfs        tmpfs    249M     0  249M   0% /lib/init/rw
udev         tmpfs    244M  180K  244M   1% /dev
tmpfs        tmpfs    249M     0  249M   0% /dev/shm
/dev/sda9     ext3    7,9G  147M  7,4G   2% /home
/dev/sda8     ext3    368M   11M  339M   3% /tmp
/dev/sda5     ext3    7,5G  704M  6,4G  10% /usr
/dev/sda6     ext3    2,8G  257M  2,4G  10% /var
/dev/md1      ext3    2,0G   36M  1,9G   2% /mnt/raid1
/dev/md5      ext3    4,0G   73M  3,7G   2% /mnt/raid5

Os últimos são os nossos arrays




Agora precisamos de uma forma para que eles subam na inicialização, então vamos pegar as identificações deles


&nbsp;
# mdadm --examine --scan &gt;&gt; /etc/mdadm/mdadm.conf

&nbsp;Um exemplo do arquivo /etc/mdadm/mdadm.conf


&nbsp;
# cat /etc/mdadm/mdadm.conf
&nbsp;
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
&nbsp;
# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions
&nbsp;
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
&nbsp;
# automatically tag new arrays as belonging to the local system
HOMEHOST &lt;system&gt;
&nbsp;
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
&nbsp;
# definitions of existing MD arrays
&nbsp;
# This file was auto-generated on Tue, 09 Aug 2011 09:29:33 -0300
# by mkconf 3.1.4-1+8efb9d1
ARRAY /dev/md/1 metadata=1.2 UUID=d54a7d1b:9f419df5:25251005:2ad3a668 name=debian22:1
ARRAY /dev/md/5 metadata=1.2 UUID=0e31bb76:46b38d02:cc02b1bc:7248912f name=debian22:5

Agora vamos tirar a identificação das partições


&nbsp;
# blkid
&nbsp;
/dev/sda1: UUID="b76bd2ef-b659-45d5-9fad-5bb15cd33040" TYPE="ext3"
/dev/sda5: UUID="e3bc4b38-68e0-48f5-8c91-741dc110ae45" TYPE="ext3"
/dev/sda6: UUID="275b073b-0b12-4781-98f3-26c87caee7dc" TYPE="ext3"
/dev/sda7: UUID="fb553dc0-5927-4ea4-8885-c9be8b0468d4" TYPE="swap"
/dev/sda8: UUID="3cf18df1-e31c-4fdf-a267-d8d4256b6ba2" TYPE="ext3"
/dev/sda9: UUID="ef9c85da-d5b3-4ddf-973a-4527f121d97d" TYPE="ext3"
/dev/sdb: UUID="d54a7d1b-9f41-9df5-2525-10052ad3a668" LABEL="debian22:1" TYPE="linux_raid_member"
/dev/sdc: UUID="d54a7d1b-9f41-9df5-2525-10052ad3a668" LABEL="debian22:1" TYPE="linux_raid_member"
/dev/md1: UUID="647d1da8-0f99-48c5-bbea-ab30595cfe76" TYPE="ext3"
/dev/sdd: UUID="0e31bb76-46b3-8d02-cc02-b1bc7248912f" LABEL="debian22:5" TYPE="linux_raid_member"
/dev/sde: UUID="0e31bb76-46b3-8d02-cc02-b1bc7248912f" LABEL="debian22:5" TYPE="linux_raid_member"
/dev/md5: UUID="1316b782-58e9-486e-b97e-75882a5a1807" TYPE="ext3"
/dev/sdf: UUID="0e31bb76-46b3-8d02-cc02-b1bc7248912f" LABEL="debian22:5" TYPE="linux_raid_member"

Nós precisamos da identificação do /dev/md1 e do /dev/md5 para colocarmos o nosso raid na inicialização.




O nosso arquivo do /etc/fstab tem que ficar parecido com o abaixo


&nbsp;
# cat /etc/fstab
&nbsp;
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=b76bd2ef-b659-45d5-9fad-5bb15cd33040 /               ext3    errors=remount-ro 0       1
# /home was on /dev/sda9 during installation
UUID=ef9c85da-d5b3-4ddf-973a-4527f121d97d /home           ext3    defaults        0       2
# /tmp was on /dev/sda8 during installation
UUID=3cf18df1-e31c-4fdf-a267-d8d4256b6ba2 /tmp            ext3    defaults        0       2
# /usr was on /dev/sda5 during installation
UUID=e3bc4b38-68e0-48f5-8c91-741dc110ae45 /usr            ext3    defaults        0       2
# /var was on /dev/sda6 during installation
UUID=275b073b-0b12-4781-98f3-26c87caee7dc /var            ext3    defaults        0       2
# swap was on /dev/sda7 during installation
UUID=fb553dc0-5927-4ea4-8885-c9be8b0468d4 none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
UUID="647d1da8-0f99-48c5-bbea-ab30595cfe76" /mnt/raid1    ext3    defaults         0      0
UUID="1316b782-58e9-486e-b97e-75882a5a1807" /mnt/raid5    ext3    defaults         0      0

Agora vamos ver como testamos o nosso raid vamos dar falha em um dispositivo do nosso raid


&nbsp;
# mdadm --fail /dev/md1 /dev/sdc
# mdadm: set /dev/sdc faulty in /dev/md1

Vamos analisar o arquivo /proc/mdstat pode ser notado que em md1 temos um [_U] que significa que o sdc esta falho


&nbsp;
# cat /proc/mdstat&nbsp;
&nbsp;
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdc[1](F) sdb[0]
      2096116 blocks super 1.2 [2/1] [_U]
&nbsp;
md5 : active raid5 sdf[3] sdd[0] sde[1]
      4191232 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
&nbsp;
unused devices: &lt;none&gt;

Agora vamos ver como fazemos para remover o dispositivo do array que esta com problema


&nbsp;
# mdadm --remove /dev/md1 /dev/sdc
# mdadm: hot removed /dev/sdc from /dev/md1

Como pode ser notado em /proc/mdstat temos somente um sdb em md1 ou seja
 estamos sem um disco agora vamos ver para adicionar ele novamente.


&nbsp;
# cat /proc/mdstat&nbsp;
&nbsp;
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdb[0]
      2096116 blocks super 1.2 [2/1] [_U]
&nbsp;
md5 : active raid5 sdf[3] sdd[0] sde[1]
      4191232 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
&nbsp;
unused devices: &lt;none&gt;

Adicionando o novo disco


&nbsp;
# mdadm --add /dev/md1 /dev/sdc
# mdadm: re-added /dev/sdc

Agora vamos acompanhar os logs


&nbsp;
# cat /proc/mdstat&nbsp;
&nbsp;
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdc[1] sdb[0]
      2096116 blocks super 1.2 [2/1] [_U]
      [================&gt;.............]  recovery = 38.5% (809408/2096116) finish=0.1min speed=202352K/sec
&nbsp;
md5 : active raid5 sdf[3] sdd[0] sde[1]
      4191232 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
&nbsp;
unused devices: &lt;none&gt;

Como pode ser notado o array esta sincronizando. Assim que terminar o array vamos ficar assim


&nbsp;
# cat /proc/mdstat&nbsp;
&nbsp;
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdc[1] sdb[0]
      2096116 blocks super 1.2 [2/2] [UU]
&nbsp;
md5 : active raid5 sdf[3] sdd[0] sde[1]
      4191232 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
&nbsp;
unused devices: &lt;none&gt;

Podemos acrescentar um novo disco para ficar de reserva com o comando abaixo.


&nbsp;
# mdadm --manage /dev/md1 --add /dev/sdg
mdadm: added /dev/sdg

Agora vamos verificar o arquivo /proc/mdstat


&nbsp;
# cat /proc/mdstat&nbsp;
&nbsp;
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdg[2](S) sdc[1] sdb[0]
      2096116 blocks super 1.2 [2/2] [UU]
&nbsp;
md5 : active raid5 sdd[0] sdf[3] sde[1]
      4191232 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
&nbsp;
unused devices: &lt;none&gt;

Como pode ser notado em md1 temos o sdg que esta com (S) que é de 
spare-disk nosso disco reserva entao caso o algum dos dois disco 
apresente problema ele assume automaticamente, vamos fazer um teste. 
Vamos fazer dar falha em um disco


&nbsp;
# mdadm --fail /dev/md1 /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md1

Vamos acompanhar o nosso raid


&nbsp;
# cat /proc/mdstat&nbsp;
&nbsp;
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdg[2] sdc[1](F) sdb[0]
      2096116 blocks super 1.2 [2/1] [_U]
      [==========&gt;................]  recovery = 21.8% (457984/2096116) finish=0.1min speed=228992K/sec
&nbsp;
md5 : active raid5 sdd[0] sdf[3] sde[1]
      4191232 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
&nbsp;
unused devices: &lt;none&gt;

Como pode ser notado o /dev/sdg vai assumir por causa que o sdc esta com (F) de fail.




Agora vamos obter dados do nosso raid


&nbsp;
# mdadm --detail --scan&nbsp;
&nbsp;
ARRAY /dev/md/5 metadata=1.2 name=debian22:5 UUID=0e31bb76:46b38d02:cc02b1bc:7248912f
ARRAY /dev/md/1 metadata=1.2 name=debian22:1 UUID=d54a7d1b:9f419df5:25251005:2ad3a668

Agora vamos obter informações sobre o nosso /dev/md1


&nbsp;
# mdadm --detail /dev/md1
&nbsp;
/dev/md1:
        Version : 1.2
  Creation Time : Tue Aug  9 09:30:58 2011
     Raid Level : raid1
     Array Size : 2096116 (2047.33 MiB 2146.42 MB)
  Used Dev Size : 2096116 (2047.33 MiB 2146.42 MB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent
&nbsp;
    Update Time : Tue Aug  9 10:46:37 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0
&nbsp;
           Name : debian22:1  (local to host debian22)
           UUID : d54a7d1b:9f419df5:25251005:2ad3a668
         Events : 226
&nbsp;
    Number   Major   Minor   RaidDevice State
       2       8       96        0      active sync   /dev/sdg
       0       8       16        1      active sync   /dev/sdb
&nbsp;
       1       8       32        -      faulty spare   /dev/sdc

Agora vamos ver como que paramos um raid


&nbsp;
# mdadm --stop /dev/md1
mdadm: stopped /dev/md1

Agora ele nem esta mais aparecendo no /proc/mdstat


&nbsp;
# cat /proc/mdstat&nbsp;
&nbsp;
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md5 : active raid5 sdd[0] sdf[3] sde[1]
      4191232 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
&nbsp;
unused devices: &lt;none&gt;

Agora vamos ver como subimos ele novamente


&nbsp;
# mdadm -A /dev/md1 --run /dev/{sdb,sdc}

Agora temos que habilitar o raid nao trabalhar somente em read-only


&nbsp;
# mdadm -w /dev/md1

Agora vamos adicionar o nosso hd extra


&nbsp;
# mdadm --manage /dev/md1 --add /dev/sdc
mdadm: re-added /dev/sdc

Vamos verificar novamente o nosso raid


&nbsp;
# cat /proc/mdstat&nbsp;
&nbsp;
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdc[1](S) sdg[2] sdb[0]
      2096116 blocks super 1.2 [2/2] [UU]
&nbsp;
md5 : active raid5 sdd[0] sdf[3] sde[1]
      4191232 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
&nbsp;
unused devices: &lt;none&gt;