Zoeken op website

Gegevens herstellen en mislukte software-RAID's opnieuw opbouwen - Deel 8


In de voorgaande artikelen van deze RAID-serie ging je van nul naar RAID hero. We hebben verschillende software-RAID-configuraties beoordeeld en de essentie van elke configuratie uitgelegd, samen met de redenen waarom u naar de een of de ander zou neigen, afhankelijk van uw specifieke scenario.

In deze handleiding bespreken we hoe u een software-RAID-array opnieuw kunt opbouwen zonder gegevensverlies in geval van een schijfstoring. Kortheidshalve beschouwen we alleen een RAID 1-installatie, maar de concepten en opdrachten zijn op alle gevallen van toepassing.

RAID-testscenario

Voordat u verder gaat, moet u ervoor zorgen dat u een RAID 1-array hebt ingesteld volgens de instructies in deel 3 van deze serie: RAID 1 (Mirror) instellen in Linux.

De enige variaties in ons huidige geval zijn:

1) een andere versie van CentOS (v7) dan degene die in dat artikel wordt gebruikt (v6.5), en
2) verschillende schijfgroottes voor /dev/sdb en /dev/sdc (elk 8 GB).

Bovendien, als SELinux is ingeschakeld in de afdwingende modus, moet je de corresponderende labels toevoegen aan de map waar je het RAID-apparaat gaat mounten. Anders zul je dit waarschuwingsbericht tegenkomen terwijl je probeert het te mounten:

Je kunt dit oplossen door het volgende uit te voeren:


restorecon -R /mnt/raid1

RAID-bewaking instellen

Er zijn verschillende redenen waarom een opslagapparaat defect kan raken (SSD's hebben de kans hierop echter aanzienlijk verkleind), maar ongeacht de oorzaak kunt u er zeker van zijn dat er op elk moment problemen kunnen optreden en dat u voorbereid moet zijn op het vervangen van het defecte apparaat. onderdeel en om de beschikbaarheid en integriteit van uw gegevens te garanderen.

Eerst een woord van advies. Zelfs als u /proc/mdstat kunt inspecteren om de status van uw RAID's te controleren, is er een betere en tijdbesparende methode die bestaat uit het uitvoeren van mdadm in monitor + scan modus, waarmee waarschuwingen via e-mail naar een vooraf gedefinieerde ontvanger worden verzonden.

Om dit in te stellen, voegt u de volgende regel toe in /etc/mdadm.conf:


MAILADDR user@<domain or localhost>

In mijn geval:


MAILADDR gacanepa@localhost

Om mdadm uit te voeren in de monitor- en scanmodus, voegt u het volgende crontab-item toe als root:


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

Standaard controleert mdadm de RAID-arrays elke 60 seconden en stuurt een waarschuwing als er een probleem wordt gevonden. U kunt dit gedrag wijzigen door de optie --delay toe te voegen aan de crontab-invoer hierboven, samen met het aantal seconden (--delay 1800 betekent bijvoorbeeld 30 minuten).

Zorg er ten slotte voor dat u een Mail User Agent (MUA) geïnstalleerd heeft, zoals mutt of mailx. Anders ontvangt u geen waarschuwingen.

Binnen een minuut zullen we zien hoe een waarschuwing verzonden door mdadm eruit ziet.

Een defect RAID-opslagapparaat simuleren en vervangen

Om een probleem met een van de opslagapparaten in de RAID-array te simuleren, gebruiken we de opties --manage en --set-faulty als volgt:


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

Dit zal ertoe leiden dat /dev/sdc1 als defect wordt gemarkeerd, zoals we kunnen zien in /proc/mdstat:

Wat nog belangrijker is, laten we eens kijken of we een e-mailwaarschuwing hebben ontvangen met dezelfde waarschuwing:

In dit geval moet u het apparaat uit de software-RAID-array verwijderen:


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

Vervolgens kunt u het fysiek van de machine verwijderen en vervangen door een reserveonderdeel (/dev/sdd, waar eerder een partitie van het type fd is gemaakt):


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

Gelukkig voor ons begint het systeem automatisch met het opnieuw opbouwen van de array met het onderdeel dat we zojuist hebben toegevoegd. We kunnen dit testen door /dev/sdb1 als defect te markeren, het uit de array te verwijderen en ervoor te zorgen dat het bestand tecmint.txt nog steeds toegankelijk is op / mnt/raid1:


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

De afbeelding hierboven laat duidelijk zien dat na het toevoegen van /dev/sdd1 aan de array ter vervanging van /dev/sdc1, het opnieuw opbouwen van gegevens automatisch door het systeem werd uitgevoerd, zonder tussenkomst wat ons betreft.

Hoewel dit niet strikt noodzakelijk is, is het een goed idee om een reserveapparaat bij de hand te hebben, zodat het proces van het vervangen van het defecte apparaat door een goede schijf in een handomdraai kan worden uitgevoerd. Laten we daarvoor /dev/sdb1 en /dev/sdc1 opnieuw toevoegen:


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

Herstellen van een redundantieverlies

Zoals eerder uitgelegd zal mdadm de gegevens automatisch opnieuw opbouwen wanneer een schijf defect raakt. Maar wat gebeurt er als twee schijven in de array uitvallen? Laten we een dergelijk scenario simuleren door /dev/sdb1 en /dev/sdd1 als defect te markeren:


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

Pogingen om de array opnieuw te maken op dezelfde manier waarop deze op dat moment is gemaakt (of met behulp van de optie --assume-clean) kunnen resulteren in gegevensverlies, dus dit moet als laatste redmiddel worden gebruikt.

Laten we proberen de gegevens van /dev/sdb1 te herstellen, bijvoorbeeld naar een vergelijkbare schijfpartitie (/dev/sde1 – houd er rekening mee dat hiervoor een partitie moet worden gemaakt van typ fd in /dev/sde voordat je doorgaat) met ddrescue:


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

Houd er rekening mee dat we tot nu toe nog niet hebben gesproken over /dev/sdb of /dev/sdd, de partities die deel uitmaakten van de RAID-array.

Laten we nu de array opnieuw opbouwen met behulp van /dev/sde1 en /dev/sdf1:


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

Houd er rekening mee dat u in een echte situatie doorgaans dezelfde apparaatnamen gebruikt als bij de originele array, dat wil zeggen /dev/sdb1 en /dev/sdc1 na de defecte schijven zijn vervangen door nieuwe.

In dit artikel heb ik ervoor gekozen om extra apparaten te gebruiken om de array opnieuw te maken met gloednieuwe schijven en om verwarring met de oorspronkelijke defecte schijven te voorkomen.

Wanneer u wordt gevraagd of u door wilt gaan met het schrijven van array, typt u Y en drukt u op Enter. De array zou moeten worden gestart en u zou de voortgang ervan moeten kunnen bekijken met:


watch -n 1 cat /proc/mdstat

Wanneer het proces is voltooid, zou u toegang moeten hebben tot de inhoud van uw RAID:

Samenvatting

In dit artikel hebben we besproken hoe u kunt herstellen van RAID-fouten en redundantieverliezen. Houd er echter rekening mee dat deze technologie een opslagoplossing is en NIET back-ups vervangt.

De principes die in deze handleiding worden uitgelegd, zijn van toepassing op alle RAID-opstellingen, evenals de concepten die we zullen behandelen in de volgende en laatste handleiding van deze serie (RAID-beheer).

Als u vragen heeft over dit artikel, kunt u ons een bericht sturen via het onderstaande opmerkingenformulier. Wij horen graag van u!