Utilizando RAID 1 e um dos discos estragou?  Veja como fazer a substituição do disco falho para a reconstrução do volume RAID de forma rápida e fácil.

Possuo um servidor Linux que utiliza 2 discos rígidos em RAID 1 (um espelho do outro).  Utilizo para gerenciar o RAID destes discos, a ferramenta dmraid.

O RAID foi configurado logo na instalação do Linux, utilizando a própria ferramenta de setup durante a instalação do CentOS.

Certo dia, o disco principal (/dev/sda) apresentou defeito e o servidor parou de funcionar inesperadamente.  Desconectei o disco principal e o sistema operacional iniciou e funcionou perfeitamente com apenas o disco secundário (/dev/sdb) que era o espelho do disco principal.  Por motivos de falta de tempo para desligar o servidor (já que é um servidor de e-mails e sites) deixei funcionando assim durante algum tempo, até o dia em que fiz a substituição do HD defeituoso.

O disco anterior era um Seagate de 500Gb e eu substitui por um Western Digital de 500Gb.

Ao ligar o servidor, o sistema operacional iniciou normalmente.  Fiz uma pesquisa na Internet sobre os utilitários para recuperação do RAID e tive dificuldade em encontrar algo que funcionasse.  Em páginas do Brasil, praticamente não encontrei a solução.

Eis que encontrei a solução, rápida e fácil de ser aplicada.

Ao digitar dmraid -r tive o diagnóstico de que o RAID estava utilizando apenas um disco rígido:

[root@mail ~]# dmraid -r
/dev/sdb: isw, "isw_cefjgecedf", GROUP, ok, 976773165 sectors, data@ 0

Digitando o comando dmraid -s -v eu obtive a informação de que o meu RAID estava inconsistente:

[root@mail ~]# dmraid -s -v
ERROR: isw: wrong number of devices in RAID set "isw_cefjgecedf_Web0" [1/2] on /dev/sdb
*** Group superset isw_cefjgecedf
--> *Inconsistent* Active Subset
name : isw_cefjgecedf_Web0
size : 976766976
stride : 128
type : mirror
status : inconsistent
subsets: 0
devs : 1
spares : 0

Como eu já sabia que o disco em funcionamento era o /dev/sdb e que o /dev/sda não estava sendo reconhecido pelo RAID, executei o seguinte comando para adicionar ao RAID o disco novo que ainda não estava sendo reconhecido:  dmraid -R isw_cefjgecedf /dev/sda.  


[root@mail ~]# mraid -R isw_cefjgecedf /dev/sda 
ERROR: isw: wrong number of devices in RAID set "isw_cefjgecedf_Web0" [1/2] on /dev/sdb
isw: drive to rebuild: /dev/sda

RAID set "isw_cefjgecedf_Web0" already active
device "isw_cefjgecedf_Web0" is now registered with dmeventd for monitoring
Error: Unable to find path to requested disk: port 0!
Error: can not initialize data for disks LED!
Error: Unable to find path to requested disk: port 1!
Error: can not initialize data for disks LED!

Veja que o parâmetro após o -R (isw_cefjgecedf) é o nome do meu volume RAID (conforme exibido após digitar dmraid -r) e que /dev/sda faz referência ao novo disco já instalado fisicamente no computador e que ainda não está agrupado no RAID.

Feito isto, o novo disco já será reconhecido pelo RAID e o mesmo já iniciará a reconstrução da cópia espelho no disco vazio.

Para certificamos disto, utilizamos novamente os comandos:

dmraid -r irá exibir agora que existem 2 discos reconhecidos pelo RAID:

[root@mail ~]# dmraid -r
/dev/sda: isw, "isw_cefjgecedf", GROUP, ok, 976773165 sectors, data@ 0
/dev/sdb: isw, "isw_cefjgecedf", GROUP, ok, 976773165 sectors, data@ 0

Após executarmos dmraid -s -v observamos que na linha devs já é apresentado 2 dispositivos, além de não mais mostrar a mensagem de *Inconsistent*, o que comprova que o disco novo foi agrupado ao RAID.

[root@mail ~]# dmraid -s -v
*** Group superset isw_cefjgecedf
--> Active Subset
name : isw_cefjgecedf_Web0
size : 976766976
stride : 128
type : mirror
status : nosync
subsets: 0
devs : 2
spares : 0


Utilizando o comando dmsetup status podemos observar o andamento da reconstrução do disco:

[root@mail ~]# dmsetup status
isw_cefjgecedf_Web0p3: 0 941939145 linear
isw_cefjgecedf_Web0p2: 0 32772600 linear
isw_cefjgecedf_Web0: 0 976766976 mirror 2 8:16 8:0 1399/7453 1 AA 1 core
isw_cefjgecedf_Web0p1: 0 2040192 linear

Finalizada a reconstrução do disco, ao digitarmos dmraid -s -v termos como retorno:

[root@mail ~]# dmraid -s -v
*** Group superset isw_cefjgecedf
--> Active Subset
name : isw_cefjgecedf_Web0
size : 976766976
stride : 128
type : mirror
status : OK
subsets: 0
devs : 2
spares : 0

Novos artigos Linux

Novos artigos Mikrotik

Scroll to top