Com recuperar dades i reconstruir RAID de programari fallits - Part 8


En els articles anteriors d'aquesta sèrie RAID vau passar de zero a heroi RAID. Vam revisar diverses configuracions de RAID de programari i vam explicar l'essencial de cadascuna, juntament amb els motius pels quals t'inclinarias cap a l'una o l'altra segons el teu escenari específic.

En aquesta guia parlarem de com reconstruir una matriu RAID de programari sense pèrdua de dades en cas de fallada del disc. Per a la brevetat, només considerarem una configuració RAID 1, però els conceptes i les ordres s'apliquen a tots els casos per igual.

Abans de continuar, assegureu-vos que heu configurat una matriu RAID 1 seguint les instruccions proporcionades a la part 3 d'aquesta sèrie: Com configurar RAID 1 (mirall) a Linux.

Les úniques variacions en el nostre cas actual seran:

1) una versió diferent de CentOS (v7) que la que s'utilitza en aquest article (v6.5) i
2) diferents mides de disc per a /dev/sdb i /dev/sdc (8 GB cadascun).

A més, si SELinux està habilitat en mode d'aplicació, haureu d'afegir les etiquetes corresponents al directori on muntareu el dispositiu RAID. En cas contrari, trobareu aquest missatge d'advertència mentre intenteu muntar-lo:

Podeu solucionar-ho executant:

# restorecon -R /mnt/raid1

Configuració de la supervisió RAID

Hi ha diverses raons per les quals un dispositiu d'emmagatzematge pot fallar (tot i que els SSD han reduït molt les possibilitats que això succeeixi), però independentment de la causa, podeu estar segur que els problemes es poden produir en qualsevol moment i haureu d'estar preparat per substituir el que ha fallat. part i per garantir la disponibilitat i integritat de les seves dades.

Primer un consell. Fins i tot quan podeu inspeccionar /proc/mdstat per comprovar l'estat dels vostres RAID, hi ha un mètode millor i d'estalvi de temps que consisteix a executar mdadm en mode monitor + escaneig, que enviarà alertes per correu electrònic a un destinatari predefinit.

Per configurar-ho, afegiu la línia següent a /etc/mdadm.conf:

MAILADDR [email <domain or localhost>

En el meu cas:

MAILADDR [email 

Per executar mdadm en mode monitor + escaneig, afegiu l'entrada crontab següent com a root:

@reboot /sbin/mdadm --monitor --scan --oneshot

Per defecte, mdadm comprovarà les matrius RAID cada 60 segons i enviarà una alerta si troba algun problema. Podeu modificar aquest comportament afegint l'opció --delay a l'entrada crontab anterior juntament amb la quantitat de segons (per exemple, --delay 1800 significa 30 minuts).

Finalment, assegureu-vos que teniu instal·lat un agent d'usuari de correu (MUA), com ara mutt o mailx. En cas contrari, no rebrà cap alerta.

En un minut veurem com és una alerta enviada per mdadm.

Simulació i substitució d'un dispositiu d'emmagatzematge RAID fallit

Per simular un problema amb un dels dispositius d'emmagatzematge de la matriu RAID, utilitzarem les opcions --manage i --set-faulty de la següent manera:

# mdadm --manage --set-faulty /dev/md0 /dev/sdc1  

Això farà que /dev/sdc1 es marqui com a defectuós, com podem veure a /proc/mdstat:

Més important encara, a veure si hem rebut una alerta per correu electrònic amb el mateix avís:

En aquest cas, haureu d'eliminar el dispositiu de la matriu RAID de programari:

# mdadm /dev/md0 --remove /dev/sdc1

A continuació, podeu eliminar-lo físicament de la màquina i substituir-lo per una peça de recanvi (/dev/sdd, on prèviament s'ha creat una partició de tipus fd):

# mdadm --manage /dev/md0 --add /dev/sdd1

Per sort per a nosaltres, el sistema començarà automàticament a reconstruir la matriu amb la part que acabem d'afegir. Podem provar-ho marcant /dev/sdb1 com a defectuós, eliminant-lo de la matriu i assegurant-nos que el fitxer tecmint.txt encara sigui accessible a /mnt/raid1:

# mdadm --detail /dev/md0
# mount | grep raid1
# ls -l /mnt/raid1 | grep tecmint
# cat /mnt/raid1/tecmint.txt

La imatge de dalt mostra clarament que després d'afegir /dev/sdd1 a la matriu com a reemplaçament de /dev/sdc1, la reconstrucció de dades es va realitzar automàticament pel sistema sense intervenció de la nostra part.

Tot i que no és estrictament obligatori, és una gran idea tenir un dispositiu de recanvi a mà perquè el procés de substitució del dispositiu defectuós per una bona unitat es pugui fer en un instant. Per fer-ho, tornem a afegir /dev/sdb1 i /dev/sdc1:

# mdadm --manage /dev/md0 --add /dev/sdb1
# mdadm --manage /dev/md0 --add /dev/sdc1

Recuperació d'una pèrdua de redundància

Com s'ha explicat anteriorment, mdadm reconstruirà automàticament les dades quan falla un disc. Però què passa si 2 discs de la matriu fallen? Simulem aquest escenari marcant /dev/sdb1 i /dev/sdd1 com a defectuosos:

# umount /mnt/raid1
# mdadm --manage --set-faulty /dev/md0 /dev/sdb1
# mdadm --stop /dev/md0
# mdadm --manage --set-faulty /dev/md0 /dev/sdd1

Els intents de tornar a crear la matriu de la mateixa manera que es va crear en aquest moment (o utilitzant l'opció --assume-clean) poden provocar la pèrdua de dades, per la qual cosa s'hauria de deixar com a últim recurs.

Intentem recuperar les dades de /dev/sdb1, per exemple, en una partició de disc similar (/dev/sde1; tingueu en compte que això requereix que creeu una partició de tipus fd a /dev/sde abans de continuar) amb ddrescue:

# ddrescue -r 2 /dev/sdb1 /dev/sde1

Tingueu en compte que fins ara, no hem tocat /dev/sdb o /dev/sdd, les particions que formaven part de la matriu RAID.

Ara reconstruïm la matriu utilitzant /dev/sde1 i /dev/sdf1:

# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1

Tingueu en compte que en una situació real, normalment utilitzareu els mateixos noms de dispositiu que amb la matriu original, és a dir, /dev/sdb1 i /dev/sdc1 després que els discs fallits s'hagin substituït per de nous.

En aquest article he optat per utilitzar dispositius addicionals per tornar a crear la matriu amb discs nous i per evitar confusions amb les unitats originals fallides.

Quan se us demani si voleu continuar escrivint matriu, escriviu Y i premeu Intro. La matriu s'hauria d'iniciar i hauríeu de poder veure el seu progrés amb:

# watch -n 1 cat /proc/mdstat

Quan finalitzi el procés, hauríeu de poder accedir al contingut del vostre RAID:

Resum

En aquest article hem revisat com recuperar-nos d'errors de RAID i pèrdues de redundància. Tanmateix, cal recordar que aquesta tecnologia és una solució d'emmagatzematge i NO substitueix les còpies de seguretat.

Els principis explicats en aquesta guia s'apliquen a totes les configuracions RAID per igual, així com els conceptes que tractarem a la següent i final guia d'aquesta sèrie (gestió RAID).

Si teniu cap pregunta sobre aquest article, no dubteu a enviar-nos una nota mitjançant el formulari de comentaris a continuació. Esperem amb interès tenir notícies teves!