Wie aus Unix V.4 ein Echtzeit-Unix wurde

Besonderes Dateisystem für die größere Unix-Robustheit

28.02.1992

*Roland Weigel gehört zur Fachgruppe Betriebssysteme bei der Siemens Automatisierungstechnik AG in Nürnberg

Beim Einsatz von Unix-Systemen in der Automatisierungstechnik wird meist die Frage gestellt, durch welche Maßnahmen die Echtzeitfähigkeit erreicht werden kann. Weitere Aspekte sind die Zuverlässigkeit eines solchen Systems und seine Robustheit bei auftretenden Fehlern.

Im folgenden möchte ich skizzieren, durch welche Maßnahmen am Dateisystem ein Echtzeit-Betriebssystem für den Einsatz in der Automatisierungstechnik ertüchtigt wurde. Das Haupteinsatzgebiet von Unix-Systemen lag bisher in kommerziellen Anwendungen, bei denen die Rechner im Büro oder sogar in klimatisierten Räumen standen.

In vielen Fällen dienten diese Systeme als Entwicklungsrechner, bei denen ein Rechnerabsturz oder ein Plattenausfall keine sehr großen Schäden verursachen konnte, wenn die Datensicherung in sinnvollen Intervallen durchgeführt wurde.

Soll ein Unix-System jedoch in der Automatisierungstechnik Verwendung finden, so ändern sich diese Anforderungen dramatisch.

Hier ist eine rauhe Industrieumgebung gegeben, in der die Systeme durch Staub, extreme Temperaturen und Erschütterungen stark belastet werden, so daß mit einem Ausfall der Hardware insbesondere der Stromversorgung und der Platten eher gerechnet werden muß als im Büro.

SW trifft Vorkehrungen für HW-Ausfälle

Obwohl diesem Umstand durch den Einsatz einer besonders robusten Hardware bereits Rechnung getragen wird, muß auch die Software Vorkehrungen für Hardwareausfälle treffen. In vielen Fällen werden hier nämlich extrem wichtige Daten verarbeitet, bei denen Fehler einen großen materiellen Schaden verursachen und in manchen Fällen sogar Menschen zu Schaden kommen können.

Das Echtzeit-Unix aus dem Siemens-Bereich Automatisierungstechnik ist speziell auf die Anforderungen Echtzeit, Skalierbarkeit und Robustheit zugeschnitten. Basis-System ist Unix System V.4 von AT&T. Das Realtime-Unix ist jederzeit unterbrechbar und erreicht dadurch das notwendige deterministische Verhalten.

Das Prioritätenschema aus System V.4 wurde erweitert, außerdem haben die Entwickler neue schnelle Funktionen für die Interprozeßkommunikation geschaffen. Darüber hinaus wurde besonders auf die Robustheit des Filesystems geachtet und ein zusätzlicher Filesystem-Typ eingeführt.

Die Buffer-Cache-Technik eines Unix-Systems dient dazu, die Zugriffe auf mehrfach benutzte Daten zu beschleunigen, indem diese zuerst im Hauptspeicher zwischengepuffert werden (siehe Abbildung 1). Bei einem Spannungsausfall gehen jedoch diese Daten im Buffer-Cache verloren, und das Dateisystem wird inkonsistent.

Bereits in einem normalen Unix System V.4 hat der Anwender die Möglichkeit, gezielt die Daten bestimmter Dateien aus dem Buffer-Cache auf die Platte zu schreiben.

Dadurch ist es nicht mehr nötig, immer den gesamten, möglicherweise sehr großen Cache auf die Platte zu schreiben, wenn der Anwender nur die Daten einer Datei auf die Platte bringen will.

Dieser dateispezifische "fsync" ist die einzige Erweiterung gegenüber der Vorgängerversion im System-4-Dateisystem, um die Robustheit des Systems zu erhöhen. Deshalb ergeben sich für ein Sorix-Filesystem - das Echtzeit-Unix-System von Siemens Automatisierungstechnik - eine Reihe von Anforderungen bezüglich Robustheit, Performance und Vorhersehbarkeit der Zugriffszeiten. Die Echtzeitanwendungen sollen möglichst performant auf die Dateien zugreifen können. Dabei soll gleichzeitig eine hohe Sicherheit der Datenbestände gewährleistet werden. Um diese Anforderungen zu erfüllen, wurde auf die Schnittstelle des virtuellen Filesystems von System 4.0 ein neues Dateisystem implementiert. Dieses Filesystem ist kompatibel zum normalen System-V-System und erschließt durch eine Reihe von Erweiterungen neue Einsatzgebiete.

Diese Erweiterungen umfassen Maßnahmen zur Performance-Steigerung und zur Erhöhung der Systemsicherheit. Durch Verwaltung des freien Plattenplatzes mit Hilfe einer Bitmap kann das Anlegen einer neuen Datei wesentlich beschleunigt werden, da die zeitraubende Suche nach einem freien Plattenblock entfällt.

Außerdem wird durch eine besondere Allokierungsstrategie die Lage der Dateien auf der Platte optimiert, so daß bei einem Zugriff die Anzahl der Kopfbewegungen geringer wird. Noch weiter läßt sich die Anzahl der Kopfbewegungen minimieren, wenn Contiguous Files benutzt werden. Das sind Dateien, deren Daten in einem Stück auf der Platte hinterlegt werden und so einen optimalen Zugriff gewährleisten. Mit diesen Maßnahmen zum schnellen Zugriff auf Dateien ist jedoch erst ein Teil der Anforderungen an ein Filesystem für die Automatisierungstechnik erfüllt. Der wichtigste Teil sind die Robustheitsanforderungen, die an ein solches System gestellt werden.

Mit dem Begriff Robustheit verbinden sich zwei unterschiedliche Anforderungen. Das System soll nur sehr kurze Ausfallzeiten haben und muß daher sehr schnell nach einem Systemstillstand wieder hochlaufen können. Die auf der Platte gespeicherten Daten sollen möglichst sicher sein gegenüber Ausfällen der Hardware.

Der schnelle Wiederanlauf nach einem Systemstillstand (zum Beispiel Spannungsausfall) wird erreicht, indem Dateisysteme auch im inkonsistenten Zustand montiert werden können, um beim Systemhochlauf die notwendige Reparatur des Filesystems zu ersparen. Dieser sogenannte Filesystem-Check ("fsck") kann dann zu einem späteren Zeitpunkt, zum Beispiel bei der Wartung, nachgeholt werden.

Soll von einem Dateisystem nach dem Hochlauf zunächst nur gelesen werden, so besteht die Möglichkeit, dieses System nur lesbar zu montieren. In diesem Fall kann der Filesystem-Check sogar dann erfolgen, wenn dieses Dateisystem noch montiert ist.

Um die Sicherung der Daten bei einem Systemabsturz zu gewährleisten, benötigt der Anwender eine Möglichkeit, um seine Daten sicher, ohne Verwendung des Buffer-Caches auf die Platte schreiben zu können. Dies bietet im Fall des Siemens-Systems die sogenannte Raw-I/O-Funktion. Der Zugriff auf die Dateien kann so umgestellt werden, daß die Schreib- und Lesezugriffe auf die Platte direkt, unter Umgehung des Buffer-Caches, erfolgen (siehe Abbildung 2).

Um die Vorteile des direkten Schreibens auf die Platte auch in Standard-Unix-Anwendungen nutzen zu können, ist es möglich, ganze Dateisysteme für direktes Schreiben zu montieren.

Spiegelung schützt die Daten

In diesem Fall wird zwar der Buffer-Cache noch benutzt, aber nach jedem Schreibaufruf werden die Daten direkt auf die Platte geschrieben. Damit läßt sich aus Anwendersicht das gleiche Verhalten erreichen wie bei Systemen (zum Beispiel DOS), die generell ohne Cache arbeiten. Zusätzlich können Leseaufrufe wie gewohnt die Vorteile des Daten-Cachings nutzen.

Sind die Daten auf die Platte geschrieben, so sind diese gegen die meisten Fehler gesichert. Ein Ausfall der Platte kann jedoch die Daten immer noch zerstören. Deshalb können bei dem Siemens-System Platten ganz oder teilweise gespiegelt werden. Das heißt jeder Schreibauftrag wird automatisch nochmals auf eine zweite Platte ausgeführt (siehe Abbildung 3).

Fällt eine der beiden Platten aus, so schaltet das System automatisch auf die noch intakte Platte um. Nachdem die defekte Platte ausgetauscht ist, sorgt ein Update-Programm dafür, daß die neue Platte möglichst rasch wieder aktualisiert wird.

Die Spiegelung erreicht so den notwendigen Schutz von unwiederbringlichen Daten. Außerdem werden die Ausfallzeiten minimiert, da das System bis zum Tausch der defekten Komponente mit einer Platte weiterlaufen kann.