Analyse und Entwurf von Fehlertoleranzstrategien für ein transaktionales verteiltes Betriebssystem
Zusammenfassung der Projektergebnisse
Das am Institut für Verteilte System der Universität Ulm entwickelte Plurix-System ist ein verteiltes Betriebssystem, das sich zum Ziel gesetzt hat, die einfache Programmierung von verteilten Systemen bei hoher Performanz der implementierten Anwendungen zu ermöglichen. Es läuft auf einem Cluster aus handelsüblichen PCs, die mit einem Fast-Ethernet-Netzwerk verbunden sind. Um moderne Hardware angemessen zu nutzen, wurde es auf 64 Bit portiert und firmiert nun unter dem Namen „Rainbow OS“. Die Programmierung des Betriebssystems und seiner Anwendungen erfolgt in einem Java-Dialekt unter Nutzung des Small Java Compilers (SJC). Alle teilnehmenden Rechner eines Rainbow-Clusters greifen auf einen transaktionalen verteilten Speicher (TDM, Transactional Distributed Memory) zu, dessen Konsistenz vom System gewährleistet wird. Dies ermöglicht das bequeme Programmieren verteilter Anwendungen als scheinbar isolierte Programme. Die Fehlertoleranz des Clusters wird durch systemweite Schnappschüsse gewährleistet, die ein dedizierter Knoten namens „Pageserver“ erstellt und speichert. Zusammenspiel von transaktionalem Speicher und I/O-Zugriffen Falls ein Clusterknoten ausfällt, kann es zu Datenverlust kommen. In diesem Fall fällt der Cluster auf den zuletzt erstellten Schnappschuss zurück und läuft von dort aus weiter. Dieser Rückfall kann Inkonsistenzen in den internen Zuständen der Hardwaregeräte und deren Treiber verursachen, die kompensiert werden müssen. Zu diesem Zweck wurde eine Klassifizierung von Geräten bezüglich der Komplexität der Inkonsistenz-Kompensierungsmaßnahmen durchgeführt, welche Wege eröffnet, dem Programmierer der Treiber einen Großteil der zusätzlichen Komplexität abzunehmen, indem Treiberklassen-spezifische Frameworks angeboten werden, die generische Kompensierungsmaßnahmen anbieten. Als Demonstrator wurde ein Framework für PCI-Geräte implementiert und erfolgreich getestet. Nebenläufige Erstellung von Schnappschüssen Im Plurix-System monopolisierte die Erstellung eines Schnappschusses für eine gewisse Zeit den Cluster reduzierte so die Gesamtleistung. Durch eine Erweiterung des TDM-Protokolls ist es nun möglich, komplett nebenläufige Schnappschüsse anzufertigen, indem die einzelnen Clusterknotenauf Hinweis des Pageservers zusätzlich zu den aktuellen Daten unter Umständen ebenfalls eine ältere Version der Daten zusätzlich speichern. Sobald der Schnappschuss komplett ist, werden alle veralteten Datenkopien verworfen. Solid State Disks (SSDs) als Pageserver-Speichermedium Mit Blick auf die aktuellen Trends in der Festplattentechnologie wird im Pageserver nun statt einer Magnetplatte eine SSD verwendet. Die resultiert in niedrigeren Latenzen und höheren Datenraten, erfordert aber eine Anpassung der Zugriffsalgorithmen um eine hohe Performanz zu garantieren. Reorganisation der SSD Hohe Schreibdatenraten lassen sich auf einer SSD nur dann erzielen, wenn die zu schreibenden Daten in Blöcken einer gewissen Mindestgröße geschrieben werden. Modifikationen von Blöcken geringerer Größe lässt hingegen die Schreibrate stark einbrechen. Aus diesem Grund werden die gesicherten Daten regelmäßig nebenläufig reorganisiert, so dass immer eine genügende Anzahl ausreichend großer Speicherblöcke zum Beschreiben bereit steht. Weiterhin werden nicht sämtliche angefertigten Schnappschüsse auf unbegrenzte Zeit auf der SSD gespeichert. Eine geeignete Funktion definiert eine Dichte von Schnappschüssen entlang der Zeit, so dass viele jüngere, aber nur wenige ältere Schnappschüsse vorgehalten werden. Nicht mehr benötigte Schnappschüsse werden automatisch erkannt und der Freispeichersammlung zugeführt. Unterstützung von Transaktionaler Konsistenz in Peripherie-Hardware Die Programmierung von Geräten aus einem transaktional konsistenten Umfeld heraus ließe sich vereinfachen, indem eine bestimmte Funktionalität, die momentan in Software implementiert ist, in die Gerätehardware selbst verlagert würde. Auf diese Weise müsste sich ein Treiber bei der Gerätekommunikation nur im geringen Umfang oder gar nicht mehr um die Sicherung der Konsistenz kümmern, da sich das Gerät idealerweise von selbst transaktional konsistent verhält und vom Gerätetreiber hierzu nur über den Beginn und den Abschluss einer Transaktion informiert wird. Zum Test eines um das Konzept der transaktionalen Konsistenz erweiterten Geräte-Prototyps ist es ausreichend, eine vorhandene Geräteemulation einer Virtualisierungsumgebung wie Qemu [1] bzw. KVM [1] oder VirtualBox [3] mit zusätzlichen Fähigkeiten auszustatten, so dass im ersten Schritt auf die Entwicklung eines Hardware-Prototyps verzichtet werden kann. Geräte-Transaktionen innerhalb der Treiber Ein Zwischenschritt auf dem Weg zu transaktional konsistenter Hardware bietet sich in Form von Gerätetransaktionen an. Hierbei wird der Mechanismus eines transaktionalen Speichers auf ein Gerät übertragen, so dass sämtliche Zugriffe auf das Gerät innerhalb von Gerätetransaktionen ablaufen. Dies garantiert insbesondere im Zusammenspiel mit einem TDM die Konsistenz des Gerätezustands auch im Falle von Abbrüchen. Freispeichersammlung mittels Pageserver-Schnappschuss Eine automatische Freispeichersammlung nimmt dem Programmierer die manuelle Freigabe nicht mehr benötigter Objekte ab und verhindert so das Auftreten von Fehlern, die durch versehentlich doppelte Freigaben entstehen. Eine performante automatische Freispeichersammlung über Rechnergrenzen hinweg stellt hierbei eine besondere Herausforderung dar. Die Komplexität und der Aufwand der Freispeichersammlung lassen sich in Rainbow OS wesentlich reduzieren, indem Synergieeffekte mit dem Pageserver-Knoten ausgenutzt werden. Sobald mindestens ein Schnappschuss des Clusters existiert, könnte der Pageserver ohne großen Mehraufwand in diesem alle nicht mehr referenzierten Objekte identifizieren und dem laufenden Cluster eine Liste aller Objekte mitteilen, die zum Zeitpunkt des Schnappschusses nicht mehr in Benutzung waren und die nun freigegeben werden können. Obwohl die Information über die nicht mehr referenzierten Objekte etwas veraltet ist, kann sie trotzdem als verlässlich betrachtet werden, da es in Rainbow OS dank der Verwendung einer typsicheren Sprache unmöglich ist, Referenzen auf beliebige Objekte zu schmieden. Sobald also alle Referenzen auf ein bestimmtes Objekt entfernt wurden, kann auch in Zukunft keine neue Referenz auf dieses Objekt erstellt werden, so dass einer Freigabe des verwendeten Speichers nichts im Wege steht. Fairness auf Protokoll-Ebene Durch eine Erweiterung des Protokolls ergibt sich die Möglichkeit, bestimmte Fairness-Eigenschaften bezüglich des parallelen Ablaufs von Tasks zu definieren. Hierdurch kann beispielsweise garantiert werden, dass jede Task auch im Hochkonfliktfall in endlicher Zeit zum Abschluss kommen kann. Kontrolliertes Herunterfahren eines Knoten oder des Gesamtclusters Zu Wartungszwecken kann es erforderlich sein, einen Knoten oder auch den Gesamtcluster kontrolliert herunterzufahren. Um einem potenziellen Datenverlust beim Abschalten eines Rechners vorzubeugen, ist es erforderlich, alle Daten, die ausschließlich auf diesem Knoten vorhanden sind, auf einen anderen Knoten oder den Pageserver zu übertragen. Wenn letzterer alle aktuellen Daten in einem neuen Schnappschuss auf seiner Festplatte gespeichert hat, lässt sich der Cluster ohne Datenverlust herunterfahren.
Projektbezogene Publikationen (Auswahl)
- „Smart Snapshots on top of a Distributed Transactional Memory“ in Proceedings of the Eurosys 2007 (Poster Session), Lisbon, Portugal, 2007
S. Gerhold and M. Schoettner and M. Fakler and M. Sonnenfroh and P. Schulthess
- Improved Checkpoint / Restart Using Solid State Disk Drives“ in Proceedings of the 32. International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO), Opatija, Croatia, 2009
S. Gerhold and P. Schmidt and A. Weggerle and P. Schulthess
- „Transactional Distributed 64-Bit Memory for PC-Clusters“ in Journal on the research topic "Eingebettete und Selbstorganisierende Systeme" of the 11. Chemnitzer Linux-Tage, Chemnitz, Germany, 2009
N. Kaemmer and S. Gerhold and P. Schmidt and M. Sonnenfroh and S. Frenz and P. Schulthess
- „Consistent Device Communication in Restartable Transactional Distributed Memory Systems “ in proceedings of the 23rd Canadian Conference on Electrical and Computer Engineering, Alberta, Canada, 2010
S. Gerhold, C. Himpel, A. Weggerle, T. Schmitt, P. Schulthess
- „Pageserver: High-Performance SSD-Based Checkpointing of Transactional Distributed Memory“ in Proceedings of the 2nd International Conference on Computer Engineering and Applications (IC- CEA 2010), Bali Island, Indonesia
S. Gerhold and N. Kaemmer and A. Weggerle and C. Himpel and P. Schulthess