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
-
Comando para Listar Tamanho de Diretórios no Linux
O comando abaixo permite listar o tamanho dos diretórios no Linux e desta forma detectarmos...
-
Recuperar uma unidade ZFS em uma nova instalação do Proxmox
Após trocar um disco de dados no formato ZFS para um novo servidor Promox, para adicionarmos a...
-
Firewall-cmd - Incluindo abertura de portas
O firewall-cmd é um comando para configuração do firewalld do Red Hat Enterprise Linux (RHEL) e...
-
Instalação do Bacula e Webacula no CentOS 8 - Stream
1. Realizar a instalação do apache e PHP: yum install httpd php php-gd php-curl php-mysqlnd -y 2....
-
Acesso SSH por certificado digital (sem usar senha)
Para facilitar o acesso via SSH a servidores ou outros terminais Linux ou OS X, você poderá gerar...
-
Proxmox - remover um node de um cluster
1. Acessar por linha de comando o host e listar os nodes existentes: pvecm nodesroot@proxmox2:~# pvecm...
Novos artigos Mikrotik
-
Configuração de VPN com Mikrotik (PPTP + Roteamento)
Scripts Mikrotik para configuração de VPN entre Matriz e Filial, já considerando que os...
-
Configuração de Internet com PPPoE no Mikrotik
Segue abaixo, arquivo de configuração, já comentado, de como configurar um Mikrotik para fazer...
-
Script de Padronização Mikrotik
Exemplo de Script de Padronização Mikrotik, assista ao vídeo no YouTube: ...
-
Enviando SMS utilizando modem 3G no Mikrotik + script Linux + PHP
Para realizar o envio de SMS utilizando uma routerboard Mikrotik, é necessário instalar um modem...
-
Configuração Otimizada para Enlace Mikrotik
Após verificar a dificuldade de diversas pessoas em otimizar um enlace Mikrotik, utilizando...
-
Script para atualização do No-IP no Mikrotik
Veja como podemos atualizar um IP dinâmico no No-IP. Utilizando este script, podemos atualizar o endereço...