Kako oporaviti podatke i obnoviti neuspjele softverske RAID-ove - 8. dio


U prethodnim člancima ove RAID serije prešli ste od nule do RAID heroja. Pregledali smo nekoliko softverskih RAID konfiguracija i objasnili suštine svake od njih, zajedno sa razlozima zašto biste se sklonili jednoj ili drugoj u zavisnosti od vašeg specifičnog scenarija.

U ovom vodiču ćemo razgovarati o tome kako ponovo izgraditi softverski RAID niz bez gubitka podataka u slučaju kvara diska. Radi kratkoće, razmotrićemo samo RAID 1 podešavanje – ali koncepti i komande se primenjuju na sve slučajeve podjednako.

Scenario za testiranje RAID-a

Prije nego što nastavite dalje, provjerite jeste li postavili RAID 1 niz slijedeći uputstva data u 3. dijelu ove serije: Kako postaviti RAID 1 (Mirror) u Linuxu.

Jedine varijacije u našem sadašnjem slučaju će biti:

1) drugačija verzija CentOS-a (v7) od one korištene u tom članku (v6.5), i
2) različite veličine diskova za /dev/sdb i /dev/sdc (po 8 GB).

Osim toga, ako je SELinux omogućen u načinu primjene, morat ćete dodati odgovarajuće oznake u direktorij u koji ćete montirati RAID uređaj. U suprotnom, naići ćete na ovu poruku upozorenja dok pokušavate da ga montirate:

Ovo možete popraviti pokretanjem:


restorecon -R /mnt/raid1

Postavljanje RAID nadzora

Postoji niz razloga zašto uređaj za pohranu može pokvariti (SSD-ovi su uvelike smanjili šanse da se to dogodi), ali bez obzira na uzrok, možete biti sigurni da se problemi mogu pojaviti u bilo kojem trenutku i morate biti spremni zamijeniti neispravan dio i osigurati dostupnost i integritet vaših podataka.

Prvo savjet. Čak i kada možete pregledati /proc/mdstat kako biste provjerili status svojih RAID-ova, postoji bolja metoda koja štedi vrijeme koja se sastoji od pokretanja mdadm u monitoru + skeniranju modu, koji će slati upozorenja putem e-pošte unaprijed definiranom primaocu.

Da biste ovo postavili, dodajte sljedeći red u /etc/mdadm.conf:


MAILADDR user@<domain or localhost>

U mom slučaju:


MAILADDR gacanepa@localhost

Da pokrenete mdadm u načinu rada monitor + skeniranje, dodajte sljedeći crontab unos kao root:


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

Podrazumevano, mdadm će provjeravati RAID nizove svakih 60 sekundi i poslati upozorenje ako pronađe problem. Ovo ponašanje možete izmijeniti dodavanjem opcije --delay na unos crontab iznad zajedno sa količinom sekundi (na primjer, --delay 1800 znači 30 minuta).

Konačno, provjerite da li imate instaliran Mail User Agent (MUA), kao što je mutt ili mailx. U suprotnom nećete primati nikakva upozorenja.

Za minut ćemo vidjeti kako izgleda upozorenje koje šalje mdadm.

Simulacija i zamjena neispravnog RAID uređaja za pohranu

Da bismo simulirali problem s jednim od uređaja za pohranu u RAID nizu, koristit ćemo opcije --manage i --set-faulty na sljedeći način:


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

Ovo će rezultirati da /dev/sdc1 bude označen kao neispravan, kao što možemo vidjeti u /proc/mdstat:

Još važnije, da vidimo da li smo primili upozorenje putem e-pošte s istim upozorenjem:

U tom slučaju, morat ćete ukloniti uređaj iz softverskog RAID niza:


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

Zatim ga možete fizički ukloniti iz mašine i zamijeniti ga rezervnim dijelom (/dev/sdd, gdje je prethodno kreirana particija tipa fd):


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

Na našu sreću, sistem će automatski početi obnavljati niz s dijelom koji smo upravo dodali. Ovo možemo testirati tako što ćemo označiti /dev/sdb1 kao neispravan, ukloniti ga iz niza i osigurati da je datoteka tecmint.txt i dalje dostupna na / mnt/raid1:


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

Slika iznad jasno pokazuje da je nakon dodavanja /dev/sdd1 nizu kao zamjene za /dev/sdc1, sistem automatski izvršio rekonstrukciju podataka bez intervencije sa naše strane.

Iako to nije strogo potrebno, odlična je ideja imati rezervni uređaj pri ruci kako bi se proces zamjene neispravnog uređaja dobrim diskom mogao obaviti u trenu. Da bismo to učinili, dodajmo ponovo /dev/sdb1 i /dev/sdc1:


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

Oporavak od gubitka redundance

Kao što je ranije objašnjeno, mdadm će automatski ponovo izgraditi podatke kada jedan disk pokvari. Ali šta se dešava ako 2 diska u nizu pokvare? Simulirajmo takav scenario označavajući /dev/sdb1 i /dev/sdd1 kao neispravne:


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

Pokušaji ponovnog kreiranja niza na isti način na koji je kreiran u ovom trenutku (ili korištenjem opcije --assume-clean) mogu dovesti do gubitka podataka, pa ga treba ostaviti kao posljednje sredstvo.

Pokušajmo povratiti podatke sa /dev/sdb1, na primjer, na sličnu particiju diska (/dev/sde1 – imajte na umu da to zahtijeva da kreirate particiju upišite fd u /dev/sde prije nego što nastavite) koristeći ddrescue:


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

Imajte na umu da do ovog trenutka nismo dirali /dev/sdb ili /dev/sdd, particije koje su bile dio RAID niza.

Sada ponovo izgradimo niz koristeći /dev/sde1 i /dev/sdf1:


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

Imajte na umu da ćete u stvarnoj situaciji obično koristiti iste nazive uređaja kao i kod originalnog niza, to jest, /dev/sdb1 i /dev/sdc1 nakon neispravni diskovi su zamijenjeni novim.

U ovom članku sam odabrao da koristim dodatne uređaje da ponovo kreiram niz sa potpuno novim diskovima i da izbjegnem zabunu s originalnim neispravnim diskovima.

Na pitanje da li da nastavite sa pisanjem niza, otkucajte Y i pritisnite Enter. Niz bi trebao biti pokrenut i trebali biste moći pratiti njegov napredak sa:


watch -n 1 cat /proc/mdstat

Kada se proces završi, trebali biste moći pristupiti sadržaju vašeg RAID-a:

Sažetak

U ovom članku smo pregledali kako se oporaviti od RAID kvarova i gubitaka redundancije. Međutim, morate imati na umu da je ova tehnologija rješenje za pohranu i NE zamjenjuje sigurnosne kopije.

Principi objašnjeni u ovom vodiču važe za sve RAID postavke, kao i koncepte koje ćemo pokriti u sljedećem i konačnom vodiču ove serije (RAID upravljanje).

Ako imate bilo kakvih pitanja o ovom članku, slobodno nam pošaljite poruku koristeći obrazac za komentare ispod. Radujemo se Vašem odgovoru!