Thuis
Contacten

    Hoofdpagina


Chapter 15: Crash resilience and persistent data

Dovnload 241.43 Kb.

Chapter 15: Crash resilience and persistent data



Pagina1/2
Datum25.10.2017
Grootte241.43 Kb.

Dovnload 241.43 Kb.
  1   2

Chapter 15: Crash resilience and persistent data

15.1 Crashes

Figuur: extern zichtbare effecten van een operatie – do input/output, write to persistent storage…


probleem: systeem kan crashen op gelijk welk moment, dus ook op moment dat wijzigingen al gedaan zijn, maar voordat gegevens naar schijf geschreven zijn
indien geen zichtbare effecten => herstart/herhaal operatie
wel zichtbare effecten => wat moet het systeem doen (als het al iets moet doen) voor de operatie herstart/herhaald wordt?


15.2 A model of a crash

We beschouwen (enkel) een simpel model: fail-stop model


=> crash resulteert in verlies van alles wat in intern geheugen, buffer,… zit (loss of volatile state)
=> als dat niet zo zou zijn, weet je na crash niet meer welke gegevens in intern geheugen nog
correct zijn

 Non-volatile RAM (NVRAM): als het systeem niet crasht volgens fail-stop model, dan kan dit leiden tot corruptie van data in het geheugen


Systeem is kwetsbaarder? => moet beschermd worden dmv protocol, memory management hardware

15.3 Crash resilience or failure transparency

Hoe moet systeem herstarten na crash (recovery from system crash)?


Crash resilience is beter optionele extra in systeem aangezien er grote overhead mee gepaard gaat, en niet alle toepassingen hebben de beschouwde oplossingen nodig (bv wel filesysteem in algemeen maar niet elke file afzonderlijk)
oplossing 1: idempotente operaties
oplossing 2: atomaire operaties

    1. idempotent (repeatable) operations

Idempotente operatie: resultaat blijft altijd hetzelfde, hoe vaak de operatie ook wordt uitgevoerd.
niet alle operaties kunnen idempotent gemaakt worden
voorbeelden : * x = 3 is idempotent and machine-level atomic
* x = x + 1 is not idempotent and not necessarily atomic
* "Write this block of data at offset n" in a data structure in main memory is
idempotent but not machine-level atomic
* "Write this byte sequence at byte-offset n" in a file is idempotent; it is atomic if only
one disk-block needs to be written but not otherwise
wordt belangrijker in distributed systems, wanneer overvol network ervoor zorgt dat een reply message (‘operation done’) enorme vertraging oploopt of verloren gaat => degene die aanroept weet dit niet en herhaalt request terwijl de operatie eigenlijk al uitgevoerd is

zie ook NFS (Network File System): dit is een stateless server en houdt dus geen toestanden bij



figuur:
‘create’ en ‘remove’ op zich niet idempotent, maar kan geen kwaad op opnieuw op te roepen want dan krijg je gewoon foutmelding van systeem (“is al gebeurd”) => de operatie zelf wordt niet opnieuw uitgevoerd
idempotente ‘write’: overschrijft gegevens met dezelfde gegevens

15.5 Atomic operations on persistent objects

All or nothing: bij atomische operaties voer je ofwel alles uit, ofwel helemaal niets


commit: de operatie is succesvol beëindigd  abort
systeem moet ervoor zorgen dat alle effecten van een aborted transaction ongedaan gemaakt worden, alsof de transaction nooit is uitgevoerd

  • - computer systems crash: data in main memory is lost
    - if the system tells a client that an atomic operation has been done then the changes made by it must have been recorded in persistent store



Additionele vereiste: stable storage
=> een atomaire operatie moet resultaten wegschrijven naar persistent geheugen voor de
commit; gegevens wegschrijven naar schijf (op het checkpoint) is niet voldoende: alles moet
minimaal naar 2 verschillende schijven weggeschreven worden (voor geval schijf crasht)
ook nood aan concurrency control (maar hier niet behandeld)

15.6 implementation of atomic operations

15.6.1 Logging


  1   2


Dovnload 241.43 Kb.