RAID rebuild ? voorkom gegevensverlies deel 2

maandag 22 april 2013 door Tormod Nymoen

Dit is een vervolg op het oorspronkelijke artikel RAID defect? Aandachtpunten bij een Raid rebuild over het opnieuw opbouwen van RAID en schijven. Sinds de plaatsing daarvan zijn er een aantal vragen gesteld over het opnieuw opbouwen van RAID en schijven en het voorkomen van gegevensverlies. In deel 2 probeer ik daar een antwoord op te geven.

Een van de lezers merkte op: "In je eerste voorbeeld ontbreekt de pariteit in stripe 4. Je vertelt niet hoe de stripe opnieuw kan worden opgebouwd zonder pariteit."

De pariteit ontbreekt van stripe 4 omdat die zich op de ontbrekende of beschadigde schijf zou moeten bevinden. Met andere woorden, in een gezonde array zou de pariteit bovenaan stripe 4 staan. Wat het opnieuw opbouwen betreft: in dit voorbeeld zijn alle gegevens intact en is de pariteit op schijf 1 in stripe 4 opnieuw opgebouwd door de XOR-functie toe te passen op de gegevens op schijven 2-4 (P4 = XOR (D9, D8, D7). Hieronder is de opnieuw opgebouwde schijf te zien.

Een vraag die meerdere keren werd gesteld in reactie op het vorige artikel had te maken met andere manieren waarop gegevens in een RAID of op een schijf verloren kunnen gaan of beschadigd kunnen raken.

Een van de lezers vroeg:"In je tweede voorbeeld laat je zien hoe gegevens verloren kunnen gaan als op de verkeerde manier opnieuw wordt opgebouwd, 'zoals' het opnieuw opbouwen van pariteit. Is dit het enige geval? ‘Zoals’ impliceert dat er meerdere manieren van opbouwen zijn die tot problemen kunnen leiden."

RAID rebuild  met gegevensverlies als gevolg

Er zijn meerdere manieren van opnieuw opbouwen waarbij gegevens verloren kunnen gaan. Hieronder staan een aantal daarvan.

  1. Pariteit opnieuw opbouwen met een met nullen gevulde schijf (pariteit overschreven).
  2. Pariteit opnieuw opbouwen met een beschadigde schijf (geforceerd online en pariteit overschreven).
  3. Pariteit opnieuw opbouwen met schijven in verkeerde volgorde (pariteit en gegevens overschreven).
  4. RAID opnieuw opbouwen met een ontbrekende schijf (pariteit en gegevens overschreven).
  5. RAID opnieuw opbouwen met een andere stripe-grootte (pariteit en gegevens overschreven).
  6. RAID opnieuw opbouwen met afwijkende configuratie (pariteit en gegevens overschreven).

Bijvoorbeeld: een van de meest voorkomende gevallen van gegevensverlies met RAID treedt op wanneer de pariteit wordt bijgewerkt met een met nullen gevulde schijf in de RAID-configuratie (RAID opnieuw opbouwen in plaats van de schijf opnieuw opbouwen). Hiermee wordt de oorspronkelijke pariteit in feite vernietigd en kan de schijf niet opnieuw worden opgebouwd. Als de pariteit is overschreven, kunnen de ontbrekende gegevens op de beschadigde of ontbrekende schijf niet worden hersteld.

Een ander scenario voor gegevensverlies is de situatie waarin de volgorde van de RAID-array niet meer klopt, en dan met name tijdens het opnieuw opbouwen van de RAID. Het opnieuw opbouwen van pariteit op schijven die niet op de goede volgorde staan, kan gebruikersgegevens overschrijven waar niets mee aan de hand is.

In het bovenstaande voorbeeld worden de gegevens die oorspronkelijk op stripe 1 van schijf 3 stonden, overschreven met de nieuwe pariteit. De pariteit op stripe 1 van schijf 4 wordt nu beschouwd als gebruikersgegevens in plaats van pariteit, en dat leidt tot zogeheten 'logical corruption' (logische beschadiging). Daarnaast staan de gegevens op stripe 1 van schijf 2 nu scheef, wat verder bijdraagt aan de beschadiging van het logische volume. Alle rood gemarkeerde gedeelten raken zo beschadigd.

Maar zelfs zonder opnieuw opbouwen van de pariteit zou er beschadiging van het logische volume optreden. Dergelijke beschadigingen resulteren vaak in het opstarten van reparatietools (zoal CHKDSK en FSCK). Deze hulpprogramma's proberen vervolgens de logische beschadiging te 'repareren' terwijl de daadwerkelijke schade zich op het niveau van de RAID bevindt. Dit resulteert in nog meer schade, door bijvoorbeeld het verwijderen van metagegevens, waardoor het hele systeem onherstelbaar verloren gaat.

Een ander scenario is het opnieuw opbouwen van een RAID na de uitval van twee schijven, waarbij gebruik wordt gemaakt van een beschadigde schijf die geforceerd online is en een nieuwe schijf. Door deze combinatie wordt bij het opnieuw opbouwen de 'goede' pariteit overschreven met de 'slechte' pariteit, waardoor het systeem meestal onherstelbaar verloren gaat of de gegevens onbruikbaar worden.

Het laatste voorbeeld betreft de situatie waarin de RAID-configuratie wijzigt en de pariteit- en gegevensgebieden worden overschreven met de nieuwe configuratie.

Stel, we hebben een RAID 5-array met een stripe-grootte van 64 K. Het besturingssysteem leest de gegevens van de stripes, beginnend bij schijf 1 en de gegevens op M1. Vervolgens wordt M2 gelezen, dan D1 enzovoort.

Als de configuratie op de array-controller verloren gaat en de gebruiker een verkeerde configuratie forceert, kunnen gegevens worden beschadigd. In dit voorbeeld heeft de gebruiker een nieuwe configuratie ingesteld met een stripegrootte van 32 K, waardoor de gegevens effectief in tweeën worden gehakt.

Het besturingssysteem leest eerst de eerste helft van het eerste gedeelte van de metagegevens, hier weergegeven als M1.1. Vervolgens springt het besturingssysteem naar de volgende schijf in de stripe en leest het de eerste helft van het tweede gedeelte van de metagegevens, weergegeven als M2.1. Dit leidt tot logische beschadiging en onbruikbare gegevens. In veel gevallen worden reparatietools gestart die de logische schade proberen te 'herstellen', maar dat kan weer leiden tot meer beschadiging of kan het volume zelfs onbruikbaar maken.

RAID recovery Tips

Hoe bescherm je jezelf tegen een situatie zoals hierboven beschreven? Hieronder staan een aantal tips om dit type gegevensverlies te voorkomen:

  1. Maak een image van de schijven voordat je opnieuw gaat opbouwen. Dat zorgt ervoor dat de gegevens veilig zijn als het opnieuw opbouwen niet lukt. Zorg er wel voor dat het imaging-programma een forensische image of image op sector-/block-niveau kan maken.
  2. Zet back-ups terug naar een ander volume. Hiermee weet je zeker dat alle belangrijke bestanden in de back-up veilig zijn voordat de gegevens op het actieve volume mogelijk worden overschreven.
  3. Test in geval van een RAID-probleem de back-up eerst, door die terug te zetten naar een andere locatie, of maak een image van elke schijf in de RAID voordat je aan het opnieuw opbouwen begint. Soms verloopt het opnieuw opbouwen van een RAID niet goed, waardoor het probleem alleen maar verergert.
  4. Maak geen nieuwe bestanden op de schijf die moet worden hersteld en voer ook geen applicaties uit totdat de belangrijke gegevens zijn hersteld. Nieuwe bestanden kunnen de bestanden die moeten worden hersteld overschrijven.
  5. Gebruik geen reparatietools zoals FSCK of CHKDSK op een virtuele schijf voordat een goede back-up is gevalideerd door die terug te zetten naar een ander volume. Deze reparatietools gaan ervan uit dat er een goede back-up van de gegevens aanwezig is, en kunnen bestands-pointers overschrijven om een bestandssysteem consistent te maken. Eventueel kunnen deze programma's worden uitgevoerd in alleen-lezenmodus en beschadigingen zoeken voordat ze worden gerepareerd.
  6. Verwijder geen andere bestanden voordat de beschadigde gegevens zijn hersteld. Bij het verwijderen van bestanden worden die van de bronlocatie naar een ander volume verplaatst. Een verplaatsing bestaat simpelweg uit kopiëren en daarna verwijderen. Als je een kopie van de brongegevens nodig hebt, kopieer die dan en verplaats ze niet. Het verwijderen van nog meer bestanden kan het herstel van gegevens bemoeilijken.
  7. Gebruik geen software voor gegevensherstel tenzij je zeker weet dat er niets wordt geschreven naar de schijf die moet worden hersteld. Sommige herstelsoftware probeert te schrijven naar de bronschijf en kan daarmee latere herstelpogingen hinderen.
  8. Roep de hulp in van een professional op het gebied van gegevensherstel. Die kan je een idee geven van de gevolgen van je methode voor de herstelbaarheid van de gegevens, en heeft mogelijk suggesties voor manieren om het zelf te doen.

Meer over RAID recovery

img_600x600_shirtontrack

Direct hulp nodig? Bel!