Left Up RAMS-Metaobjekte

Schattenspeicher

Grundidee

Wenn sich eine Seite ändert, so wird sie nicht zurückgeschreiben, sondern auf einen neuen Block geschrieben.

Das Umschalten von alten und neuen Block muß dann atomar passieren. Die Verwaltung der Verwaltungsstruktur wird in einem hochverfügbaren Segment gemacht, die Daten selber werden in ganz normal in Blöcken in der Datei verwaltet.

Literatur

K. Mayer-Wegner:"Aufbau von Datenverwaltungssystemen",Vorlesungsskriptum Uni Erlangen WS1991
Loire 1977
könnte der Erfinder sein
TOSP
Transaktion oriented Schattenspeicher Konzept

Algorithmen aus dem Vorlesungsscript

wichtige Begriffe:

Schattenbit
kennzeichnet einen Block als neu geschrieben
Status
Status ist 0 für geschlossen oder 1 für offen
Wird ein Segment als offen angetroffen, so muß das Recovery erfolgen

Öffnen eines Segmentes Si

  1. Kopiere Vi0 nach Vi1 auf der Platte
  2. Setze Status=1
  3. Schreibe Master auf Platte
  4. Für alle Seiten mit Schattenbit: (Vorlesungsscript sagt: Lösche alle Schattenbits in Vi0 - was passiert mit alter Seite ? )
  5. ggf. Erzeuge CM als Kopie von Mk (je nach Mapswitch)

Modifikation einer Seite j

  1. Seite Pij muß auf der Platte mit dem bisherigen Block ba=Vi0(j) stehen
  2. Finde neuen Block bn mit CM(bn)=0 (unbenutzter Block) und CM(bn):=1
  3. Vi0(j)=bn
  4. Schreibe Pij nach bn
  5. Setze Schattenbit in Vi0(j)
(Weitere Änderungen werden gleich in bn gemacht)

Sicherungspunkt

  1. Erzeuge Kopie von Mk
  2. Für alle Vi0(j)=bn mit gesetzten Schattenbit und Vi1(j)=b
  3. Schreibe Vi0 auf Platte
  4. Schreibe M1 auf Platte
  5. Status(i)=0;
  6. Mapswitch=1
  7. Sichere Master
  8. Zusicherung: Segment vollständig auf Platte
  9. für alle Vi0=bn mit gesetztem Schattenbit
  10. Kopiere Vi0 nach Vi1 auf der Platte
  11. Setze Status(i)=1
  12. Schreibe Master auf Platte

Zurücksetzen auf dem letzten Sicherheitspunkt bei laufendem System

Reperatur eines Segments nach Systemausfall

Wichtige Bemerkungen

eigene Überlegungen zur Implementierung

Schutz mit mprotect und abfangen SEGV-Signal

Dieses wird mit dem PMSeg-Klasse realisiert.

Implementierung

Klasse ShadowSegment

Ideen:

Dimensionierung

BitMap: len=32 => 32*32bit=1024bit , for 4K Pages => 4 MB

Debugkonzept

Debuglevel
1
Prozeduren und wichtige Schritte
2
Anzeige wichtiger Datenstrukturen
3
Operationsdetails

weitere Ideen


Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber