Up Right RAMS-Metaobjekte

Hochverfügbares Segment

Die höhere Verfügbarkeit wird einfach durch mehrfaches abspeichern einer Seite erreicht.

Je Seite wird eine Checksumme berechnet und ein Zeitstempel aufgehoben, um verschiedene Versionen zu unterscheiden zu können.

Beim Lesen wird die Integrität durch die Checksumme geprüft und die neuste Seite ermittelt. Fehlerhafte Blöcke werden durch die neueste Version überschrieben

Vgl [GrayReuter93]. Kap. 3.7.3. S.122

Passiert ein Fehler beim Schreiben, z.B. daß der Strom plötzlich ausfällt, so sollte das nur bei einer Version der Seite passieren.

Das Segment könnte auch auf mehrere redundante Dateien auf verschiedenen Platten aufgebauen. Es gibt in unserer Implementierung eine Strategie-Klasse, die verschiedene Techniken realisieren könnte.

Durch einen Editor wurde eine Testprogramm verändert, um einen Plattenfehler zu simmulieren. Bisher scheint unsere Implementierung zu funktionieren.

Ideen zur Implementierung

Scather-gather

Möchte man für die Anwendung die Sicht eines zusammenhängenden Speichers bewahren, so kann man die Verwaltungsdaten und die Nutzdaten mit readv(3) und writev(3) zusammenschreiben.

mprotect

Beim Lesen werden alle Seiten auf READ-ONLY gesetzt.
Beim Schreiben wird dann das SEGV-Signal ausgelöst, daß dann in der Signalbehandlung schreibbar gesetzt wird. Dabei wird in der Verwaltungsstruktur dann das dirty-bit gesetzt ...

Dieses wird mit dem PMSeg-Klasse realisiert.
Leider muß damit die Seitengröße auf die Systemseitengröße gesetzt werden. Eigendlich wäre es schöner, wenn die zu schreibenden Blöcke die systemseitengröße hätten. Aber man kann halt nicht alles haben.

weitere Überlegungen

Verschiedene Versionen einer Seite könnten mit Asynchoner IO auf die Platte gebracht werden. Damit könnte die Parallelität der hardware ausgenutzt werden.
Leider könnte es dann sein, daß mehrere Versionen kaputt geschrieben werden und deshalb erscheint es nicht ratsam.

Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber