Dit artikel bevat informatie over datafouten, dubbele storingen en punctures in een RAID-array. Daarnaast bevat het artikel aanbevelingen waarmee u deze problemen kunt voorkomen/beperken en tips over hoe u deze problemen moet oplossen nadat ze zich hebben voorgedaan.
Inhoudsopgave
- Datafouten en dubbele storingen
- Punctures: Wat zijn ze en hoe worden ze veroorzaakt?
- Problemen voorkomen voordat ze zich voordoen en punctures oplossen als ze zich hebben voorgedaan
Hoofdstuk 1: Datafouten en dubbele storingen
RAID-arrays zijn niet immuun voor datafouten. Firmware voor RAID-controllers en harde schijven bevatten functionaliteit waarmee verschillende soorten datafouten kunnen worden gedetecteerd en gecorrigeerd voordat ze naar een array/schijf worden geschreven. Het gebruik van verouderde firmware kan ertoe leiden dat onjuiste data naar een array/schijf worden geschreven omdat de functies voor foutafhandeling/foutcorrectie die beschikbaar zijn in de nieuwste firmwareversies ontbreken.
Datafouten kunnen ook worden veroorzaakt door fysieke slechte blokken. Dit kan bijvoorbeeld gebeuren wanneer de lees-/schrijfkop het draaiplateau raakt (ook wel 'head crash' genoemd). Blokken kunnen na een tijdje verslechteren doordat het plateau op een specifieke locatie minder goed bits magnetisch kan opslaan. Slechte blokken als gevolg van een minder goed functionerend plateau kunnen vaak wel gelezen worden. Zo'n slecht blok kan alleen af en toe of via een uitgebreide diagnose op de schijven worden gedetecteerd.
Een slecht blok, ook wel een slecht logisch blokadres (LBA) genoemd, kan ook door logische datafouten worden veroorzaakt. Dit gebeurt wanneer data verkeerd naar een schijf worden geschreven terwijl dit wel als juist wordt gerapporteerd. Daarnaast kunnen goede data op een schijf per ongeluk worden gewijzigd. Een voorbeeld hiervan is 'bitmanipulatie' die kan optreden wanneer de lees-/schrijfkop overgaat of schrijft naar een nabijgelegen locatie waardoor data, bestaande uit nullen en enen, een andere waarde krijgen. Hierdoor wordt de 'consistentie' van de data beschadigd. De waarde van de data op een specifiek blok wijkt af van de oorspronkelijke data en komt niet meer overeen met de checksum van de data. De fysieke LBA is goed en kan met succes worden geschreven, maar bevat momenteel onjuiste data en kan worden geïnterpreteerd als een slecht blok.
Slechte LBA's worden meestal gerapporteerd als de
Sense Code 3/11/0. Detectiesleutel 3 is een
mediumfout. De ASC en de ASCQ van 11/00 worden gedefinieerd als een
niet-herstelde leesfout. Er wordt geen poging gedaan om het blok te herstellen en er wordt ook niet gekeken of het slechte blok wordt veroorzaakt door een fysiek defect op het schijfplateau of een datafout die ergens anders door veroorzaakt wordt. Het bestaan van een Sense Code 3/11/00 betekent niet automatisch dat de fysieke schijf defect is of dat deze moet worden vervangen.
Dell hardwarematige RAID-controllers bieden functies zoals Patrol Read en Check Consistency om veel scenario's voor datafouten te corrigeren. Patrol Read werkt standaard automatisch op de achtergrond en controleert alle individuele blokken op een harde schijf zodat de data juist worden gelezen. Patrol Read probeert slechte blokken te herstellen en wijst onherstelbare blokken toe aan gereserveerde blokken. Check Consistency is een functie die handmatig geactiveerd (of gepland) kan worden en die alle schijven in een array met elkaar vergelijkt om ervoor te zorgen dat de data en redundantie kloppen. Zo worden bijvoorbeeld drie schijven in een RAID 5-array vergeleken om ervoor te zorgen dat de data en de pariteit de juiste waarden gebruiken. Als één enkele storing wordt gedetecteerd, dan wordt de foute waarde met behulp van de resterende data en/of pariteit opnieuw geschreven en hersteld. Op dezelfde manier worden in een RAID 1-array de data op de ene schijf vergeleken met de andere schijf om ervoor te zorgen dat de data correct worden gespiegeld.
Een enkele fout in een RAID-array, indien niet hersteld, kan ernstigere fouten in de array veroorzaken, vooral wanneer er een tweede fout optreedt. Eén of meer enkele storingen leiden niet tot verlies van data zolang de array in optimale staat verkeert. Er is nog steeds voldoende data plus redundantie om normaal te werken terwijl de array optimaal is.
Vanwege de mogelijkheid van de controller om fouten tijdens normale bewerkingen te corrigeren, is het niet altijd gemakkelijk om te detecteren wanneer er onderliggende problemen in de data aanwezig zijn. In het controllerlogboek, hardwarelogboek of het gebeurtenislogboek van uw besturingssysteem komen zelden storingen of waarschuwingen voor wanneer een of meerdere enkele storingen voorkomen. Om deze reden lijkt een array zeer lang normaal te werken, ondanks de aanwezigheid van consistentiefouten en/of enkele fouten.
Afbeelding 1: Meerdere enkelvoudige fouten in een RAID 5-array - Optimale arraya's
die worden weergegeven in afbeelding 1, de array heeft meerdere fouten. Aangezien er echter slechts een enkele storing in een strip voorkomt, heeft de controller nog steeds toegang tot alle data vanwege de redundantie van RAID 5. Als de storing optreedt in het segment met pariteit, zijn alle data intact en heeft de storing geen gevolgen voor de leesbewerkingen. Als de storing optreedt in een datasegment, moet een XOR-vergelijking tussen de goede data en de goede pariteitsbits worden uitgevoerd om het ontbrekende of slechte datasegment te herberekenen. In beide gevallen, omdat er slechts één fout is in een strip, is er voldoende redundantie beschikbaar om toegang te krijgen tot alle data.
Wanneer een of meer schijven in een RAID-array datafouten bevatten en een andere schijf in de array niet langer een actief lid is als de array vanwege een schijfstoring, afwijkende configuratie, schijfverwijdering of een andere reden, leidt dit tot een zogenaamde 'dubbele fout'. Een dubbele storing leidt tot onmiddellijk dataverlies van informatie in de getroffen strips.
Afbeelding 2: Dubbele fout met een defecte schijf (data in strips 1 en 2 gaan verloren) - Verslechterde array
Het is mogelijk dat een dubbele foutconditie kan optreden met de array die in een optimale staat blijft. Zoiets zou kunnen gebeuren met identieke slechte LBA's op meerdere harde schijven. Dit komt echter zeer zelden voor, alleen al vanwege het aantal LBA's op de huidige grotere harde schijven. Het is zeer onwaarschijnlijk dat dezelfde LBA op meerdere harde schijven tegelijkertijd 'slecht' is.
Het uitvoeren van regelmatige Check Consistency-bewerkingen zal worden gecorrigeerd voor enkele fouten, of het nu gaat om een fysiek slecht blok of een logische fout van de data. Check Consistency beperkt bovendien de kans op een dubbele storing bij extra fouten. Wanneer er niet meer dan één fout is in een bepaalde strip, kan een Check Consistency de fout vrijwel altijd elimineren.
Terug naar boven
Hoofdstuk 2: Punctures: Wat zijn ze en hoe worden ze veroorzaakt?
Een puncture is een functie van Dell PERC-controllers waarmee de controller de redundantie van de array kan herstellen ondanks dat er door de dubbele storing data verloren zijn gegaan. Een puncture wordt ook wel 'reconstrueren met fouten' genoemd. De RAID-controller detecteert een dubbele storing, maar omdat er onvoldoende redundantie is om de data in de betreffende strip te herstellen, maakt de controller een puncture in die strip aan waardoor het opnieuw samenstellen kan doorgaan.
- Wanneer data in dezelfde strip op meerdere schijven niet meer toegankelijk zijn, heet dat een dubbele storing
- Dubbele storingen zorgen ervoor dat alle data op de betreffende strip verloren gaan
- Elke puncture is een dubbele storing, maar NIET elke dubbele storing is een puncture
Afbeelding 3: Punctured Strips (Data in Strips 1 en 2 gaan verloren als gevolg van een dubbele storing) - Optimale arrayMet
de puncturefunctie mislukt het opnieuw opbouwen van de array en blijft de array in een verslechterde staat. In sommige gevallen veroorzaken de storingen ook fouten op de andere schijven waardoor de array helemaal niet meer functioneert en offline gaat. Bij een puncture kan een array nog steeds opstarten en zijn data nog steeds toegankelijk. Schade of verlies van data als gevolg van een dubbele storing is dan al opgetreden.
Punctures kunnen in de volgende twee situaties voorkomen:
- Bestaande dubbele storing (data zijn al verloren gegaan)
- De datafout op een online schijf wordt verspreid (gekopieerd) naar een schijf die opnieuw wordt samengesteld
- Dubbele storing bestaat niet (data gaan verloren bij de tweede fout)
- Als een slecht blok op een online schijf in verslechterde staat optreedt, wordt een puncture op die LBA uitgevoerd
Het voordeel van een puncture op een array is dat het systeem beschikbaar blijft in productie en dat de redundantie van de array wordt hersteld. De data op de betreffende strip zijn verloren gegaan, of de puncture nu wordt uitgevoerd of niet. Het voornaamste nadeel van de LSI-methode is dat er op de array ook met de puncture niet-herstelbare fouten blijven voorkomen zodra de eventuele getroffen data worden gebruikt.
Punctures kunnen op drie locaties voorkomen. Ten eerste kan een puncture voorkomen in een in lege ruimte die geen data bevat. Die strip is niet toegankelijk, maar doordat er zich daar geen data bevinden, zijn de gevolgen te overzien. Elke poging van een besturingssysteem om naar een strip met een puncture te schrijven zal mislukken en data worden naar een andere locatie geschreven.
Ten tweede kan een puncture voorkomen in een strip met niet-kritieke data, zoals een README.TXT-bestand. Als de betreffende data niet worden gebruikt, worden er tijdens normale I/O geen fouten gegenereerd. Pogingen om een systeemback-up te maken van de bestanden die door de puncture zijn getroffen, mislukken. Het uitvoeren van een Check Consistency- of Patrol Read-bewerking genereert sense-code: 3/11/00 voor de toepasselijke LBA en/of strips.
Ten derde kan er een puncture optreden in dataruimte die wordt geopend. In zo'n geval kan verloren data verschillende fouten veroorzaken. Het kunnen kleine fouten zijn die de productieomgeving niet nadelig beïnvloeden. Het kunnen ook ernstigere fouten zijn die ervoor zorgen dat het systeem niet meer naar een besturingssysteem opstart of applicaties laten mislukken.
Een array met een puncture moet uiteindelijk worden verwijderd en opnieuw worden samengesteld om de puncture te elimineren. Door deze procedure worden alle data gewist. De data moeten dan opnieuw worden samengesteld of hersteld van een back-up nadat de puncture is verwijderd. De oplossing voor een puncture kan worden gepland voor een tijd die voordeliger is voor de behoeften van het bedrijf.
Als de data binnen een strip met punctures worden geopend, blijven fouten worden gemeld tegen de getroffen slechte ABA's zonder dat er correctie beschikbaar is. Uiteindelijk (dit kan een kwestie van minuten, dagen, weken, maanden, enz. zijn) raakt de tabel met slecht blokbeheer (BBM) vol, waardoor een of meerdere schijven gemarkeerd zullen worden met een prognostische fout. Als we kijken naar afbeelding 3 dan zal schijf 0 meestal de schijf zijn die met een prognostische fout gemarkeerd zal worden, omdat de fouten op schijf 1 en 2 hiernaartoe worden verspreid. Schijf 0 werkt mogelijk normaal en het vervangen van schijf 0 zal er alleen voor zorgen dat die vervanging uiteindelijk ook wordt gemarkeerd als prognostische fout.
Een controleconsistentie die wordt uitgevoerd nadat een puncture is veroorzaakt, zal het probleem niet oplossen. Vandaar dat het heel belangrijk is om Check Consistency regelmatig te gebruiken. Het is met name belangrijk om dit te doen, indien mogelijk, voordat u schijven gaat vervangen. De array moet zich in een optimale staat bevinden om de Check Consistency uit te voeren.
Een RAID-array die een enkele datafout bevat in combinatie met een extra foutgebeurtenis, zoals een storing van de harde schijf, veroorzaakt een puncture wanneer de defecte of vervangende schijf in de array opnieuw wordt opgebouwd. Een voorbeeld: Een optimale RAID 5-array bestaat uit drie leden: Schijf 0, schijf 1 en schijf 2. Als schijf 0 defect is (afbeelding 2) en wordt vervangen, worden de resterende data en pariteit op schijven 1 en 2 gebruikt om de ontbrekende informatie op de vervangende schijf 0 weer op te bouwen. Als er echter een datafout op schijf 1 voorkomt wanneer tijdens de opbouw die fout wordt bereikt, bevat die strip onvoldoende informatie om de ontbrekende data op die strip mee op te bouwen. Schijf 0 bevat geen data, schijf 1 heeft slechte data en schijf 2 heeft goede data omdat deze opnieuw wordt opgebouwd. Er komen dus meerdere fouten binnen die strip voor. Schijf 0 en schijf 1 bevatten geen goede data, waardoor de data in die strip niet hersteld kan worden en dus verloren gaat. Zoals u in afbeelding 3 ziet worden tijdens de opbouw punctures (in strips 1 en 2) aangemaakt. De fouten worden verspreid naar schijf 0.
Punctures herstellen de redundantie in de array en zorgen dat de array weer terugkeert naar een optimale staat. De array blijft hierdoor beschermd tegen extra dataverlies bij nieuwe fouten of schijfstoringen.
Terug naar boven
Hoofdstuk 3: Problemen voorkomen voordat ze optreden en punctures oplossen nadat ze zich hebben voorgedaan
Het kan verleidelijk zijn om te denken dat dingen die functioneren, niet gerepareerd hoeven te worden. Hoewel dit vaak zal kloppen, raden wij toch ten zeerste aan dat u regelmatig onderhoud verricht om uw storagesubsystemen te beschermen en te beheren. Proactief onderhoud kan bestaande fouten herstellen en voorkomen dat bepaalde fouten ontstaan. Niet alle fouten kunnen worden voorkomen, maar proactief onderhoud kan het aantal ernstigere fouten aanzienlijk beperken. Dit zijn de stappen voor storage- en RAID-subsystemen:
- Drivers en firmware bijwerken voor controllers, harde schijven, backplanes en andere apparaten
- Regelmatig bewerkingen met Check Consistency uitvoeren
- Logboeken controleren of er zich problemen voordoen
Dit hoeft geen technische beoordeling op hoog niveau te zijn, maar kan gewoon een cursorachtige weergave zijn van de logboeken die op zoek zijn naar zeer duidelijke indicaties van potentiële problemen
. Neem contact op met Dell Technische Support als u vragen of problemen
hebtEen van de meest essentiële dingen die moeten worden gedaan, is ervoor zorgen dat de firmware up-to-date wordt gehouden. Firmware is de plaats waar zich alle logica voor de bediening van een apparaat bevindt. Firmware zorgt voor de werking en de functies van het apparaat, maar ook voor verschillende manieren waarop fouten afgehandeld/hersteld worden. Bijgewerkte firmware zorgt voor betere prestaties en minder fouten. Nieuwe functies en verbeteringen kunnen ook worden toegevoegd via een firmware-update.
Firmware kan zich op een aantal plaatsen bevinden. Ook RAID-controllers bevatten firmware net als elke afzonderlijke harde schijf die in een systeem of array is geïnstalleerd. Backplanes en externe behuizingen bevatten ook firmware die van invloed kan zijn op de werking van stations en arrays erin.
Een andere proactieve onderhoudsaanbevolen is het uitvoeren van een "Check Consistency". Check Consistency is een handmatige bewerking omdat het een deel van de totale beschikbare bandbreedte van de RAID-controller gebruikt. De controleconsistentie kan echter worden gepland voor een tijd waarin dit de minste invloed heeft op de prestaties.
Check consistency controleert op slechte blokken op de schijven, maar nog belangrijker is dat de data in de array worden vergeleken om er zeker van te zijn dat alle stukken correct overeenkomen. Als Check Consistency een probleem vindt, kijkt het programma hoe de data eruit moeten zien en herstelt het de data door de data op andere schijven binnen de array te controleren. Relatief kleine fouten herstellen is de beste manier om punctures te beperken die door bestaande datafouten samen met een tweede fout of storing worden veroorzaakt. Het bestaan van dubbele storingen en punctures kan leiden tot productiviteitsverlies voor de tijd die nodig is om de array(s) en data terug te zetten naar een functionerende staat of zelfs het volledige verlies van alle data.
Wanneer er sprake is van een dubbele storing of puncture, is er vaak sprake van dataverlies. Als deze fouten zich in een lege ruimte of niet-kritieke dataruimte voordoen, zijn de directe gevolgen op data in een productieomgeving te overzien. De aanwezigheid van deze fouten kan echter leiden tot ernstigere problemen. Hardwarefouten en verouderde firmware kunnen onmiddellijke aandacht vereisen.
Als er sprake is van een bekende of vermoedelijke dubbele storing of puncture, volgt u deze stappen om het risico op ernstigere problemen tot een minimum te beperken:
- Voer de functie Check Consistency uit (array moet wel optimaal werken)
- Controleer of er hardwareproblemen zijn
- Bekijk het controllerlogboek
- Voer een hardwarediagnose uit
- Neem indien nodig contact op met de Technische Support van Dell
Als u deze stappen hebt doorlopen, moet u ook op de volgende zaken letten. Punctures kunnen na verloop van tijd ervoor zorgen dat prognostische fouten in de harde schijven optreden. Datafouten die naar een schijf worden verspreid worden als mediafouten op de schijf gerapporteerd, zelfs als er geen daadwerkelijk hardwareprobleem bestaat. Elke keer dat de LBA wordt geopend, wordt een fout gemeld. Zodra het foutlogboek vol is, meldt de schijf zichzelf als voorspellende fout.
Een LBA met één puncture op een schijf kan meerdere keren worden gemeld. Afhankelijk van het aantal punctures kunnen meerdere schijven in een array als prognostische fout gerapporteerd worden. Het vervangen van de schijf met de prognostische fout zal de bestaande punctures naar de vervangende schijf verspreiden, waardoor de vervangende schijf ook als prognostische fout gemarkeerd zal worden. In een dergelijk geval is de enige corrigerende actie het oplossen van de punctureconditie.
In afbeelding 3 zien we dat er een puncture is op strips 1 en 2. Vervangende harde schijven lossen dit probleem niet op, omdat er te weinig dataredundantie is om de oorspronkelijke data mee op te bouwen. Data in de strips met punctures zijn verloren (tenzij ze in een eerdere back-up zijn opgeslagen). Vergeet niet dat een puncture geen verlies van data veroorzaakt. Een dubbele storing doet dat wel. Een puncture zorgt dat redundantie naar een array hersteld wordt die een dubbele storing bevat.
Opmerking: Dit is het proces dat wordt gebruikt om de meeste punctures op te lossen. Het is niet altijd nodig om alle stappen te volgen om het probleem op te lossen. Als u deze stappen hebt doorlopen en het probleem is niet opgelost, neem dan contact op met Dell Technische Support voor verdere hulp.
Waarschuwing: Als u deze stappen uitvoert, gaan alle data op de array verloren. Voordat u deze stappen gaat uitvoeren, moet u vanaf een back-up of op een andere manier kunnen herstellen. Wees voorzichtig en zorg dat deze stappen geen gevolgen hebben voor andere arrays.
- Verwijder de bewaarde cache (indien aanwezig)
- Wis afwijkende configuraties (indien aanwezig)
- Verwijder de array
- Schuif de schijven een plaats op (gebruik afbeelding 1, verplaats schijf 0 naar slot 1, schijf 1 naar slot 2 en schijf 2 naar slot 0)
- Stel de array desgewenst opnieuw samen
- Voer een volledige initialisatie van de array uit (geen snelle initialisatie)
- Voer een Check Consistency op de array uit
Als Check Consistency geen fouten oplevert, kunt u ervan uitgaan dat de array in goede staat is en de puncture is verwijderd. Data kunnen nu worden hersteld naar de gezonde array.
In ernstigere gevallen is het probleem mogelijk niet opgelost en kunnen fouten blijven bestaan ondanks het volgen van deze stappen. Als het volgen van deze stappen een probleem niet oplost, neemt u contact op met De Technische Support van Dell voor verdere hulp.
Het kan nodig zijn om de punctures in meer detail te analyseren om te bepalen welke schijven gemeenschappelijk zijn. Een voorbeeld: In afbeelding 3 geeft het controllerlogboek een puncture bij schijven 0 en 1 en een puncture bij schijven 0 en 2. Schijf 0 is de gemeenschappelijke schijf. Volg dezelfde stappen als hierboven, maar verwijder eerst volledig de gemeenschappelijke schijven. Als we naar afbeelding 1 kijken, verwijdert u schijf 0 en volg dan de beschreven stappen. Stel de array samen met behulp van de resterende schijven (1 en 2). Nadat de controle is voltooid en de consistentie na een controle bepaalt dat de array gezond is, voegt u schijf 0 weer toe en voert u de stappen opnieuw uit met alle schijven, of gebruikt u de RLM-functies (RAID-niveaumigratie) en/of OCE (Online Capacity Expansion) om de resterende schijven weer aan de array toe te voegen.
Schijven met een voorspellende fout moeten worden verwijderd en niet worden opgenomen in het herstelproces. We gebruiken afbeelding 3 opnieuw als voorbeeld: Als schijf 0 een prognostische fout gaf, verwijdert u die schijf. Voer vervolgens de stappen hierboven uit. Aangezien er nog slechts 2 schijven over zijn, is de gemaakte RAID-array een RAID 1 in plaats van een RAID 5. Nadat u schijf 0 hebt vervangen (vanwege de voorspellende fout) voert u de stappen opnieuw uit, inclusief alle 3 schijven, of voegt u schijf 0 toe aan de bestaande array met behulp van RLM en wijzigt u deze van een RAID 1 met 2 schijven in een RAID 5 met 3 schijven.
Het proces kan lastig zijn, vooral gezien de kans op dataverlies. Het gezegde 'Voorkomen is beter dan genezen' is hier beslist op zijn plaats. De ervaring heeft geleerd dat bijna alle dubbele storingen en punctures voorkomen hadden kunnen worden door proactief onderhoud op de RAID-hardware en de arrays uit te voeren.
Opmerking: Door het systeem effectief te controleren, kunnen problemen tijdig worden gedetecteerd en gecorrigeerd, waardoor ook het risico op ernstigere problemen wordt verminderd.
Gerelateerd artikel
PERC - Een RAID-puncture oplossen
Terug naar boven