Fouttolerant systeem

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Fouttolerantie of beperkte werking is het vermogen om een systeem (vaak van een computer) goedwerkend door te laten draaien als er zich een (of meer) fouten voordoen in een van de onderdelen van het systeem. Als de werking van het systeem in eniger mate afneemt in kwaliteit, is de mate van de afname evenredig aan de ernst van de fout. Vergelijk dit met een systeem dat dom ontworpen is, waardoor zelfs een kleine fout de totale instorting van het systeem kan veroorzaken. Fouttolerantie is voornamelijk veelgevraagd in systemen die een hoge beschikbaarheid moeten hebben, en in levenskritische systemen.

Fouttolerantie is niet alleen een eigenschap van indivduele machines; het kan ook de regels voor hun interactie bepalen. Het Transmission Control Protocol (TCP) is bijvoorbeeld ontworpen om betrouwbare communicatie over en weer binnen een pakketgeschakeld netwerk mogelijk te maken, zelfs als de communicatieverbindingen gebrekkig of overbelast zijn. Dit wordt bereikt door van de eindpunten van de communicatie te eisen dat ze verlies, verdubbeling, herschikking en corruptie van pakketten verwachten, zodat deze omstandigheden de gegevensintegriteit niet beschadigen en de verwerkingscapaciteit slechts evenredig verminderen.

Een voorbeeld van beperkte werking door ontwerp in een doorzichtige afbeelding. In de twee bovenste afbeeldingen is de samengestelde afbeelding te zien zoals het wordt getoond in een programma dat doorzichtigheid ondersteunt. In de twee onderste afbeeldingen is te zien hoe de afbeelding wordt getoond in een programma dat doorzichtigheid wel ondersteunt. Omdat de doorzichtigheidslaag (midden onder) wordt verwijderd, blijft alleen de bovenlaag (midden boven) over; de afbeelding links is ontworpen om beperkt te kunnen werken, waardoor het nog steeds betekenis heeft zonder de doorzichtigheidslaag.

Gegevensformaten kunnen ook worden ontworpen om beperkt te werken. HTML is bijvoorbeeld ontworpen om voorwaarts compatibel te zijn, zodat webbrowsers nieuwe HTML-eenheden die ze niet begrijpen kunnen negeren zonder dat het document onbruikbaar wordt.

Het herstel van fouten in fouttolerante systemen kan worden getypeerd als rollforward of rollback. Als het systeem waarneemt dat het een fout gemaakt heeft, neemt rollforward-herstel de staat van het systeem op dat moment en repareert het, zodat het vooruit kan gaan. Rollback-herstel brengt de staat van het systeem terug naar een eerdere, juiste versie. Het gebruikt bijvoorbeeld controlepunten en gaat vanaf daar vooruit. Voor rollback-herstel is het noodzakelijk dat de handelingen tussen het controlepunt en de ontdekte foutieve staat idempotent kunnen worden gemaakt. Sommige systemen gebruiken zowel rollforward als rollback-herstel voor verschillende fouten of voor verschillende delen van één fout.

Binnen het bereik van een individueel systeem kan fouttolerantie worden bereikt door buitengewone omstandigheden te voorzien en het systeem zo te bouwen dat het ertegen opgewassen is. Ook kan fouttolerantie worden bereikt door over het algemeen te streven naar zelfstabilisatie zodat het systeem groeit naar een staat zonder fouten. Als de gevolgen van een systeemfout echter catastrofaal zijn, of als de kosten om het betrouwbaar genoeg te maken erg hoog zijn, kan het een betere oplossing zijn om een of andere manier van dupliceren te gebruiken. In elk geval moet het systeem in staat zijn om terug te keren naar een safe mode als de gevolgen van een systeemfout zo catastrofaal zijn. Dit lijkt op rollback-herstel, maar kan ook worden uitgevoerd door mensen als die aanwezig zijn in het proces.

Eisen aan fouttolerantie[bewerken]

De basiseigenschappen van fouttolerantie vereisen:

  1. Geen enkelvoudig punt voor de fout
  2. Isolatie van de fout in het onderdeel dat het begeeft.
  3. Foutbeheersing om verbreiding van de fout te voorkomen
  4. Beschikbaarheid van herstelmodes

Bovendien worden fouttolerante systemen gekenmerkt door zowel geplande uitval voor onderhoud, als ongeplande uitval voor onderhoud. Deze worden normaalgesproken beoordeeld op het niveau van de applicatie en niet alleen op het niveau van de hardware. Het getal dat de waarde aangeeft wordt beschikbaarheid genoemd en wordt uitgedrukt in procenten. Een systeem dat vijf negens heeft zou statistsch gezien 99,999% beschikbaarheid moeten leveren.

Fouttolerante systemen worden normaalgesproken gebaseerd op het principe van redundantie.

Fouttolerantie door replicatie[bewerken]

Reserveonderdelen behandelen de eerste basiseigenschap van fouttolerantie op drie manieren:

  • Replicatie: De verschaffing van meerdere identieke versies van hetzelfde systeem of subsysteem, waarbij taken of verzoeken naar alle versies tegelijk worden verstuurd en het juiste resultaat wordt gekozen op basis van een quorum;
  • Redundantie: De verschaffing van meerdere identieke versies van hetzelfde systeem, waarbij naar een van de overgebleven versies wordt overgeschakeld als er een fout optreedt (automatische omschakeling):
  • Diversiteit: De verschaffing van meerdere verschillende uitvoeringen van dezelfde specificatie, waarbij ze worden gebruikt als gerepliceerde systemen om fouten in een bepaalde uitvoering het hoofd te bieden.

Alle uitvoeringen van RAID, redundant array of independent disks, zijn voorbeelden van een fouttolerant opslagapparaat dat gebruik maakt van gegevensredundantie, met uitzondering van RAID 0.

Een fouttolerante machine die in lockstep draait gebruikt gerepliceerde elementen die tegelijkertijd draaien. Alle replicaties van elk element moeten op elke moment in dezelfde staat zijn. Elke replicatie krijgt dezelfde invoer, en uit elke replicatie wordt dezelfde uitvoer verwacht De uitvoer van de replicaties wordt vergeleken met behulp van een stemsysteem. Een machine met twee replicaties van elk element wordt Dual Modular Redundant (DMR) genoemd. In dit geval kan het stemsysteem alleen waarnemen dat de replicaties niet overeen komen. Het herstel is afhankelijk van andere methoden. Een machine met drie replicaties van elk element wordt Triple Modular Redundant (TMR) genoemd. Het stemsysteem kan bepalen welke replicatie de fout bevat als de stemming twee tegen één is. In dit geval kan het stemsysteem het juiste resultaat produceren en the foute versie weggooien. Hierna wordt aangenomen dat de interne staat van de foute replicatie verschilt van de staat van de andere twee en het stemsysteem schakelt over op een DMR mode. Dit model kan worden toegepast op een willekeurig aantal replicaties.

Fouttolerante machines in lockstep zijn het gemakkelijkst volledig synchroon te maken, omdat elke poort van elke replicatie dezelfde verandering in zijn staat maakt op exact hetzelfde tijdstip. Hierbij staan de klokken van de replicaties op exact dezelfde tijd. Het is echter mogelijk om lockstep systemen te bouwen die dit niet vereisen.

Om de replicaties synchroon te maken, moeten hun opgeslagen, interne staten hetzelfde zijn. Ze kunnen worden opgestart vanuit een vaste beginstaat, zoals bijvoorbeeld de reset staat. Een andere mogelijkheid is om the interne staat van de ene replicatie naar een andere replicatie te kopiëren.

Een variant op DMR is pair-and-spare Hierbij draaien twee gerepliceerde elementen als een paar in lockstep. Als hun werking niet overeenkomt, wordt dat waargenomen door het stemsysteem, dat een signaal afgeeft om aan te geven dat er een fout is. Een ander paar werkt op exact dezelfde manier. Een laatste proces kiest de uitvoer van het paar dat niet aangeeft dat er een fout is. Hoewel pair-and-spare vier replicaties nodig heeft in plaats van de drie bij TMR, is het commercieel gebruikt.

Geen enkelvoudig punt van herstel[bewerken]

Als een systeemfout zich voordoet, moet het systeem zonder onderbreking door kunnen draaien tijdens het herstelproces.

Isolatie van de fout in het onderdeel dat het begeeft[bewerken]

Als zich een fout voordoet moet het systeem in staat zijn de fout te isoleren in het onderdeel dat problemen geeft. Hiervoor zijn mechanismen speciaal voor het ontdekken van fouten nodig, die zich alleen maar met foutisolatie bezighouden.

Om een foute staat te herstellen, moet de fout of het onderdeel dat het begeeft worden geclassificeerd. Het National Institute of Standards and Technology (NIST) deelt fouten in op basis van Positie, Oorzaak, Duur en Effect.

Foutbeheersing[bewerken]

Sommige foutprocessen verspreiden hun fout in de rest van het systeem, waardoor ze een volledige instorting van het systeem kunnen veroorzaken. Een ’Rogue transmitter’ is een voorbeeld van dit type fout. Het overstelpt de echte communicatie in een systeem en kan daarmee de instorting van het systeem veroorzaken. Daarom zijn processen nodig die het systeem door isolatie beschermen tegen een rogue transmitter of een onderdeel dat het begeeft.

Zie ook[bewerken]

Bibliografie[bewerken]

Externe links[bewerken]