Puncte:1

Reconstruiți RAID5 cu sectoare necorectabile pe mai multe discuri

drapel cn

Sistemul meu software RAID5 (mdadm) este format din cinci discuri.Recent, primesc erori I/O când citesc anumite fișiere. Cele mai multe dintre celelalte fișiere sunt încă lizibile.

La început, plănuiam să aflu ce disc este stricat (folosind smartctl) și să înlocuiesc rapid discul eșuat pentru a reconstrui matricea înainte ca și alte discuri să eșueze. Cu toate acestea, smartctl arată asta Trei discurile au erori necorectabile.

Aș crede că mdadm ar trebui să se poată reconstrui atâta timp cât sectoarele defecte ale acestor trei discuri nu se intersectează, permițându-mi opțiunea de a schimba și reconstrui unul câte unul.

Sau faptul că am o eroare I/O indică deja că paritatea este pierdută și același sector de pe mai multe discuri este ilizibil? Există vreo modalitate de a afla dacă sectoarele care nu se intersectează sau nu și, astfel, informațiile se pierd ireversibil?

Michael Hampton avatar
drapel cz
Se pare că nu aveți o copie de rezervă. Asta ar trebui să fie prioritatea ta principală.
Nikita Kipriyanov avatar
drapel za
@CIA Ultima idee despre dd este tentantă, dar dubioasă. Când un bloc nu poate fi citit, MD va vedea acest lucru și va recupera datele corecte de pe alte discuri. Pe de altă parte, `dd` va umple acest spațiu cu zerouri, iar blocul va fi citit de pe noul dispozitiv, iar stratul RAID nu va ști ce ar fi mai bine de recuperat, ceea ce ar duce la coruperea datelor. // De asemenea, nu trebuie să investiți în software „pentru a ajuta la identificarea modului în care sunt configurate blocurile”. Acest software se numește `mdadm`, vă va spune dacă întrebați corect, iar documentația și sursa kernel-ului Linux vă vor explica răspunsul în detaliu.
Puncte:3
drapel ru

Procedurile standard sunt:

  1. Aveți întotdeauna un bun, la zi backup (cel puțin două copii independente în locuri diferite, cel puțin pe suporturi diferite)
  2. Continuu monitor RAID-ul dumneavoastră pentru probleme. Un RAID nu are valoare atunci când erorile sunt lăsate să se acumuleze.
  3. Scrub discuri cel puțin lunar. Acest lucru evită acumularea de erori și pentru a preveni reconstrucțiile.
  4. Considera RAID 6 cu două discuri redundante.

Se pare că nu ai luat asta în serios. Încercați să recuperați ceea ce este încă acolo acum. Încercarea de a reconstrui acea matrice aproape eșuată ar putea cauza mai multe daune decât vă așteptați.

Dacă datele sunt suficient de valoroase, găsiți un serviciu de recuperare de date de încredere și capabil. Pune deoparte o sumă de numerar de patru până la cinci cifre. În caz contrar, clătiți și repetați - înlocuiți discurile, reformatați, reinstalați și luați mai în serios procedurile standard.

Puncte:2
drapel za
  1. Aveți dreptate că, dacă sectoarele ilizibile „nu se intersectează”, adică situate în dungi diferite, MD RAID Mai recuperați datele utilizând paritatea. Dar s-ar putea să scoată o anumită conducere în timpul recuperării, iar apoi șansele vor scădea semnificativ.

  2. Există o regulă generală de recuperare a datelor: începe întotdeauna cu o groapă crudă. Acest lucru vă garantează încercări nelimitate: dacă încurcați ceva, puteți începe din nou cu dump.Deci, în general, puteți clona toate discurile aflate pe moarte pe unele care funcționează, citind erorile și apoi asamblați RAID din discuri noi.

  3. Puteți începe cu clonarea fiecărei unități sector cu sector pentru o înlocuire cu ddrescue (adică nu prin utilizarea procedurii de recuperare MD RAID). Pe lângă copierea erorilor, creează ceea ce numește a fișier jurnal, care este de fapt harta sectorului prost. Când le clonați pe toate trei, puteți compara acele hărți și puteți afla dacă există intersecții. Nu le arunca, aceste hărți te pot ajuta în timpul recuperării.

  4. Cu toate acestea, RAID5 este o fiară foarte urâtă în sensul unor astfel de gropi. Ce ar putea merge prost? Dacă sectorul unității dvs. nu citește deloc eroarea I/O de aruncare, stratul RAID va recupera acele date de pe alte discuri; asta ar fi cazul discurilor vechi. Dar dacă citește fără erori, dar returnează date greșite, RAID nu va încerca să le recupereze de la paritate și să returneze acele date greșite. ddrescue va umple sectoarele care nu pot fi citite cu zerouri, care vor fi citite înapoi dacă asamblați mai târziu matricea cu acest dispozitiv clonat, astfel încât acest lucru se va traduce prin citirea zerourilor (date corupte) unde a fost posibil să se recupereze datele originale. RAID nu garantează datele integritate. Și aceasta este adevărata problemă pentru toate variantele, cu excepția RAID6 care are două sindroame de paritate sau RAID1 cu mai mult de două oglinzi. Și, poate ați ghicit deja, această problemă se manifestă în cel mai disruptiv mod în cazul RAID5. (Există o considerație suplimentară împotriva acesteia, ceva despre dimensiunile discurilor moderne și ratele lor de eroare pe biți.)

  5. În timpul oricărei operațiuni de clonare, un disc poate muri complet. Apoi te-ai blocat. Există posibilitatea de a face recuperare dincolo de acest punct, dar vă va costa mult. Există servicii în care sunt „camere curate” și pot de ex. înlocuiți capete în interiorul hard disk-urilor și reîncercați să le citiți; este lent, predispus la erori și probabil că te percepe destul de mult. Luați în considerare acest lucru dacă datele dvs. sunt foarte valoroase.

  6. Prin urmare, este înțelept să clonați discurile originale, dar apoi să puneți clonele deoparte, să asamblați matricea din original discuri și încercați să cloneze din matrice în sine (/dev/mdX). Dacă ceva nu merge bine (disc moare), înlocuiți-l cu o clonă și recuperați manual dungile rupte (citiți p.4) după aceea, consultând fișierele jurnal (p.3). Aceasta este o muncă destul de grea. Observați, de asemenea, că trebuie să economisiți de două ori spațiul inițial pentru a efectua recuperarea. Sau nu face nimic singur, externalizează toată munca către specialiști. Acesta este prețul pe care îl plătiți pentru întreținerea necorespunzătoare a matricei și a datelor.

  7. Și, acum, aveți această experiență prețioasă. Nu da vina pe matrice, da vina pe tine, învață lecția și gestionează-le corect:

  • Gândiți-vă de trei ori înainte de a utiliza RAID5. Apoi spuneți „nu” și alegeți un alt nivel RAID.
  • Curățați matricea în mod regulat. Aceasta înseamnă că MD RAID va citi și compara datele de pe unități și va suna dacă ceva nu este în regulă (nepotrivire, blocare imposibil de citit). Atunci este posibil să înlocuiți unitatea care se comportă rău la primele simptome. Distribuțiile bune au acest lucru configurat imediat (cel puțin Debian).
  • Monitorizați discurile și matricea, pentru a nu rata semne importante de probleme.
  • În sfârșit, bun venit în clubul administratorilor care își fac în mod regulat copii de siguranță ale datelor.
user9517 avatar
drapel cn
Ultimul punct ar trebui să fie primul.
Nikita Kipriyanov avatar
drapel za
Întrebarea nu a fost „cum se gestionează corect matricea”, ci „cum se recuperează matricea”. Deci, din punct de vedere tehnic, ultimul punct este *offtopic*. Dar este util, de aceea l-am inclus.
user9517 avatar
drapel cn
Nu strica sa consolidezi buna practica devreme si des.
Nikita Kipriyanov avatar
drapel za
O.k., deci este *ultimul* punct, cel mai bun loc pentru a consolida. Încerc să ajut, să nu-l termin pe cel care a întrebat, care probabil că deja își rupe părul pentru că nu a făcut copiile de rezervă.
drapel cn
@NikitaKipriyanov Despre p.1: De ce MD RAID ar „dezbate” o unitate în timpul recuperării? Ce înseamnă „kick out” în acest sens? Mă așteptam să fie mult mai ușor de rezolvat t.b.h. Cel puțin atâta timp cât sectoarele proaste nu se intersectează. M-am gândit că aș putea pur și simplu 1) să schimb primul disc eșuat 2) să reconstruiesc RAID-ul și 3) să repet acest proces pentru toate de trei ori. Să presupunem că înlocuiesc discul #1, este șansa într-adevăr atât de mare ca discul #2 să fie „expulsat” în procesul de reconstrucție a RAID-ului?
Nikita Kipriyanov avatar
drapel za
1. MD RAID are o stare „eșuată” a discului. Este starea în care discul este numărat ca parte a matricei, dar nu participă la operațiunile I/O. MD poate transfera un disc în această stare dacă se comportă „prea rău”, de exemplu, lent (încălță termenele limită), aruncă multe erori I/O și așa mai departe. 2. Chiar și în teorie, făcând acest mod „ușor” pierzi efectiv oportunitatea de a recupera toate sectoarele defecte ale tuturor celorlalte discuri. Pentru că necesită datele care se aflau în sectoarele active ale unui prim disc vechi, pe care l-ați schimbat. Numai asta ar fi inacceptabil pentru mine. Dar acesta nu este singurul avertisment.
Nikita Kipriyanov avatar
drapel za
(2. continuare) Problema principală este comportamentul procesului de resincronizare MD RAID atunci când întâlnește o eroare I/O. Nu am trecut niciodată prin acest proces pentru RAID5, dar în cazul resincronizării RAID1, am văzut următoarele: dacă întâlnește blocuri de necitit pe sursă (singura unitate care are o copie completă deocamdată), repornește resincronizarea de la început. Și apoi merge până la primul bloc prost și repornește din nou. Nu a trecut niciodată de primul bloc prost. Am rezolvat odată acest lucru prin remaparea forțată a acelui sector prost (`hdparm -w` dacă îmi amintesc, ahi). Acesta este motivul pentru care scenariul tău „ușor” mi se pare complet greșit.
drapel cn
Văd punctul tău de vedere: atunci când elimin discul eșuat #1, elimin efectiv și informațiile necesare pentru a reconstrui sectoarele ilizibile, de exemplu, discul eșuat #2. Totuși, să presupunem că _adaug_ un nou disc la matricea mea, nu ar trebui teoretic să fie posibil să umplu acel disc cu informații redundante, astfel încât să pot schimba și reconstrui discurile defectuoase unul câte unul? Este „doar” o chestiune de faptul că instrumentele nu sunt disponibile pentru a face acest lucru, dacă scap complet de ideea de ce este fundamental imposibil?
Nikita Kipriyanov avatar
drapel za
Da, nu există o rezoluție automată a defecțiunilor de mai multe discuri și nici o întreținere a consistenței intrinseci, așa cum am descris în p.4. Acesta este RAID5, ar trebui să știi asta când l-ai implementat. Procedura pe care am descris-o la p.6 (clonarea datelor din matricea asamblată) este modalitatea de rezolvare, bazată pe ipoteza din p.1). P.3 este necesar să fie protejat împotriva celor mai grave cazuri, deoarece p.6 ar putea fi în general o operație stresantă.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.