-
Technisches Anwendungsgebiet
-
Diese Erfindung betrifft ein Verfahren und eine Vorrichtung zum Verwalten der Hochverfügbarkeit von virtuellen Maschinen. Insbesondere betrifft diese Erfindung ein Verfahren und eine Vorrichtung zum Verwalten der auf Prüfpunkten beruhenden Hochverfügbarkeit einer virtuellen Sicherungsmaschine (backup virtual machine) im Falle eines Anwendungsfehlers auf einer primären virtuellen Maschine.
-
HINTERGRUND
-
Bei der Datenverarbeitung wird üblicherweise im Sinne einer Anwendung und einer unterstützenden Plattform gedacht.
-
Eine unterstützende Plattform beinhaltet üblicherweise eine Hardware-Infrastruktur mit einem Prozessorkern, einer Eingabe/Ausgabe, einem Arbeitsspeicher und einem Festspeicher, deren Kombination ein Betriebssystem unterstützt, das wiederum Anwendungen unterstützt.
-
Bei Anwendungen handelt es sich üblicherweise um eigenständige Logikpakete, die sich fast nur auf Kernobjektdateien und verwandte Ressourcen-Dateien stützen. Als die Datenverarbeitung unerlässlich für die moderne Industrie wurde, wurden Anwendungen auch abhängig von dem Vorhandensein anderer Anwendungen, so dass die erforderliche Umgebung für eine Anwendung nicht nur das zugrunde liegende Betriebssystem und die unterstützende Hardware-Plattform beinhaltete, sondern auch andere Schlüsselanwendungen. Zu derartigen Schlüsselanwendungen gehörten Anwendungsserver, Datenbankverwaltungsserver, Collaboration-Server und eine Datenaustauschlogik, die im Allgemeinen als Middleware bezeichnet wird. Auf Grund der Komplexität der Dialogfähigkeit zwischen Anwendung und Plattform können verschiedene Kombinationen von sich auf einer einzelnen Hardware-Plattform in Ausführung befindlichen Anwendungen unterschiedliche Grade von Leistungsfähigkeit und Stabilität an den Tag legen.
-
Als Technologie zielt die Virtualisierung darauf ab, eine Schicht zwischen einer unterstützenden Plattform und sich in Ausführung befindlichen Anwendungen einzufügen. Vom Standpunkt der Geschäftskontinuität und der Wiederherstellung nach einem Stör-/Katastrophenfall stellt die Virtualisierung den dazugehörenden Vorteil der Umgebungsportabilität bereit. Konkret handelt es sich beim Verlagern einer kompletten Umgebung, die mit mehreren verschiedenen Anwendungen konfiguriert ist, um das Verlagern eines virtuellen Abbilds von einer unterstützenden Hardware-Plattform auf eine andere. Ferner können leistungsfähigere Datenverarbeitungsumgebungen das gleichzeitige Vorhandensein mehrerer verschiedener virtueller Abbilder unterstützen, während eine virtuelle Trennung zwischen den Abbildern aufrechterhalten wird. Folglich kann ein Fehlerzustand in einem virtuellen Abbild die Unversehrtheit von anderen, sich gleichzeitig in Ausführung befindlichen virtuellen Abbildern auf derselben Hardware-Plattform nicht gefährden.
-
Ein Überwachungsprogramm für virtuelle Maschinen, nach dem Stand der Technik als „Hypervisor” bekannt, verwaltet die Interaktion zwischen jedem virtuellen Abbild und den zugrunde liegenden Ressourcen, die durch die Hardware-Plattform bereitgestellt werden. In diesem Hinblick läuft ein Bare-Metal-Hypervisor direkt auf der Hardware-Plattform, in etwa so, wie ein Betriebssystem direkt auf Hardware läuft. Im Vergleich dazu läuft ein per Hosting bereitgestellter Hypervisor innerhalb eines Host-Betriebssystems. In jedem Fall kann der Hypervisor den Betrieb von verschiedenen „Gastbetriebssystemabbildern” unterstützen, die als virtuelle Maschinen-(VM-)Abbilder bekannt sind. Die Anzahl von VM-Abbildern ist lediglich durch die Verarbeitungsressourcen eines VM-Containers beschränkt, der die VM-Abbilder oder die Hardware-Plattform selbst enthält.
-
Die Virtualisierung hat sich besonders nützlich für diejenigen Endbenutzer erwiesen, die getrennte Datenverarbeitungsumgebungen für verschiedene Typen von Anwendungen benötigen und auf eine einzelne Hardware-Plattform beschränkt sind. Es ist zum Beispiel bestens bekannt, dass ein primäres Betriebssystem, das für einen Typ von Hardware-Plattform nativ ist, ein virtualisiertes Gastbetriebssystem bereitstellt, das für eine andere Hardware-Plattform nativ ist, so dass Anwendungen, die das Vorhandensein des Gastbetriebssystems erfordern, mit anderen Anwendungen, welche die Anwesenheit des primären Betriebssystems erfordern, gleichzeitig existieren können. Auf diese Weise müssen die Endbenutzer keine getrennten Datenverarbeitungsumgebungen bereitstellen, um jeweils einen anderen Typ von Anwendung zu unterstützen. Trotzdem bleibt der Zugriff auf die zugrunde liegenden Ressourcen der einzelnen Hardware-Plattform unabhängig von dem Gastbetriebssystem statisch.
-
Virtualisierte Umgebungen wurden eingesetzt, um verschiedene voneinander abhängende Anwendungen in verschiedenen VMs zum Zusammenstellen einer Anwendungslösung zusammenzufassen. Ein Anwendungsserver kann zum Beispiel innerhalb einer VM ausgeführt werden, während ein Datenbankverwaltungssystem in einer anderen VM ausgeführt werden kann, während ein Web-Server in noch einer anderen VM ausgeführt werden kann. Jede VM kann jeweils mit einer anderen für den Datenaustausch in einem sicheren Netzwerk verbunden sein; jede beliebige Implementierung der Anwendungen kann jedoch direkt (live) auf eine andere Implementierung migriert werden, ohne das Ausführen der anderen Anwendungen in den anderen VMs zu beeinträchtigen. In einer typischen direkten Migration kann eine VM von einem Host-Server zu einem anderen verlagert werden, um eine Server-Wartung zu ermöglichen oder eine Verbesserung der Hardware-Unterstützung für die VM zu ermöglichen.
-
Bei einer auf Prüfpunkten beruhenden Hochverfügbarkeit handelt es sich um eine Technik, bei der eine auf einer primären Host-Maschine laufende virtuelle Maschine alle 25 ms ihren Prozessor- und Arbeitsspeicherzustand auf eine sekundäre Host-Maschine spiegelt. Dieser Spiegelungsprozess geht mit Folgendem einher: Verfolgen von Änderungen des Arbeitsspeicher- und Prozessorzustands der virtuellen Maschine; periodisches Anhalten der virtuellen Maschine; Senden dieser Änderungen an den sekundären Host-Computer über ein Netzwerk; Warten auf eine Bestätigung über den Empfang der Aktualisierung des Arbeitsspeicher- und Prozessorzustands von dem sekundären Host-Computer; und Fortsetzen der virtuellen Maschine.
-
Der Spiegelungsprozess stellt sicher, dass der sekundäre Host-Computer in der Lage ist, die Arbeitslast ohne Verlust von Diensten fortzusetzen, falls der primäre Host-Computer einen plötzlichen Hardware-Ausfall erfahren sollte. Wenn der sekundäre Host-Computer erkennt, dass der primäre Host-Computer nicht antwortet oder eine ausdrückliche Mitteilung von dem primären Host-Computer empfängt, startet der die gespiegelte Version der virtuellen Maschine, und die Wirkung nach außen besteht darin, dass die virtuelle Maschine die Ausführung über den Ausfall des primären Host-Computers hinweg nahtlos fortgesetzt hat.
-
Obwohl diese Technik einen wirkungsvollen Schutz vor Hardware-Ausfällen bereitstellt, schützt sie nicht vor software-bedingten Ausfällen. Da der Zustand des Arbeitsspeichers und des Prozessors der virtuellen Maschine auf dem sekundären Host-Computer originalgetreu nachgebildet ist, würde die virtuelle Maschine, falls ein Software-Absturz (zum Beispiel der Rückverweis auf einen Nullzeiger) einen Ausweichbetrieb auf dem sekundären Host-Computer verursacht, die Ausführung ab dem letzten Prüfpunkt fortsetzen, und derselbe Fehler wird auftreten, wenn die Programmausführung deterministisch ist.
-
Es gibt einige eingeschränkte Fälle, in denen die virtuelle Maschine möglicherweise nicht abstürzt, wenn ein software-bedingter Ausfall einen Ausweichbetrieb ausgelöst hat. Diese Fälle treten jedoch nur ganz vereinzelt auf und hängen mehr vom Glück als von der Ausgestaltung ab. Ein software-bedingter Ausfall, der sich als eine Wettlaufbedingung zeigt, bei der ein Prozessor auf Daten zugreifen kann, die durch einen anderen Prozessor geändert wurden, tritt zum Beispiel möglicherweise nicht auf, wenn die Arbeitslast auf dem sekundären Host-Computer fortgesetzt wurde, da durch Zufall bei der zeitlichen Planung möglicherweise nicht gleichzeitig auf die Daten zugegriffen wird.
-
Die Verwendung der Prüfpunktverfügbarkeit in virtuellen Maschinen ist bekannt. Die Veröffentlichung „IMPLEMENTATION AND EVALUATION OF A SCALABLE APPLICATION-LEVEL CHECKPOINT-RECOVERY SCHEME FOR MPI PROGRAMS”, Greg Bronevetsky u. a. versucht, ein Prüfpunktverfügbarkeitsproblem zu lösen, dass die Laufzeiten vieler Computeranwendungen viel länger als die mittlere Zeitspanne bis zum Ausfall von aktuellen Hochleistungs-Datenverarbeitungsplattformen sind.
-
Obwohl sich diese Veröffentlichung Anwendungsprüfpunkten annimmt, beschreibt sie einen bestimmten „Prüfpunkt-und-Neustart”-Ansatz, der eine Anwendung zur Kompilierungszeit erweitert, um einen ausreichenden Zustand zur Laufzeit zu speichern, so dass sie im Falle eines Hardware-Ausfalls neu gestartet werden kann. Sie behandelt keine Anwendungsfehler.
-
Folglich gibt es auf dem Fachgebiet den Bedarf, sich dem oben genannten Problem zu widmen.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Unter einem ersten Aspekt der Erfindung wird ein wie in Anspruch 1 beschriebenes Verfahren bereitgestellt.
-
Diese Erfindung fügt eine Unterbrechung ein, die einer Anwendung von einer virtuellen Maschine bereitgestellt werden kann, um sie vor einem bevorstehenden Software-Absturz zu warnen. Diese Unterbrechung wird einer Anwendung bereitgestellt, sobald sie abgestürzt ist und ab dem letzten Prüfpunkt auf einem sekundären Host-Computer fortgesetzt wurde. Die Unterbrechung stellt der Anwendung Einzelheiten des bevorstehenden Absturzes bereit, so dass die Anwendung die größten Anstrengungen unternehmen kann, um diesen zu vermeiden.
-
Im Gegensatz zu einer herkömmlichen auf Prüfpunkten beruhenden Hochverfügbarkeit kann dies selbst dann wertvoll sein, wenn es sich bei dem primären und dem sekundären Host-Computer um dasselbe System handelt; in diesem Fall erhält die virtuelle Maschine keinen Schutz vor Hardware-Ausfällen, aber sie ist in der Lage, durch den Unterbrechungsmechanismus vor software-bedingten Ausfällen zu schützen.
-
Der Unterbrechungsmechanismus garantiert nicht, dass die Anwendung vor einem Software-Absturz gerettet werden kann, aber er stellt einen Mechanismus bereit, bei dem Software-Anwendungsentwickler, die eine Wiederherstellung im Falle eines Absturzes versuchen möchten, nun eine größere Flexibilität beim Wiederherstellen nach einem Fehler haben, da sie über den bevorstehenden Fehler informiert werden, wenn sich die Anwendung noch in einem guten, laufenden Zustand befindet.
-
Diese Erfindung fügt zu den bestehenden Migrationssteuersystemen einen zusätzlichen Sperrpunkt (interlock point) hinzu.
-
Gemäß einem zweiten Aspekt stellt die vorliegende Erfindung ein System zum Überwachen auf und Wiederherstellen nach Fehlern bereit, das Folgendes aufweist: ein Mittel zum Bereitstellen einer virtuellen Maschine mit einer Anwendung, wobei die Anwendung zum Ausführen in der virtuellen Maschine dient; ein Mittel zum Speichern von Maschinenzustandsinformationen von der sich in Ausführung befindlichen ersten virtuellen Maschine an regelmäßigen Prüfpunkten; ein Mittel zum Empfangen einer Fehlermeldung von der Anwendung, die einen Anwendungsfehlerzustand an einem Fehlerpunkt der Anwendung enthält; ein Mittel zum Anhalten der virtuellen Maschine und der Anwendung; ein Mittel zum Bereitstellen einer ersten Kopie der virtuellen Maschine und der Anwendung, wobei die Kopie der virtuellen Maschine und der Anwendung zum Ausführen ab einem Prüfpunkt vor dem Unterbrechungsfehlerpunkt dient; ein Mittel zum Senden einer Fehlerunterbrechung an die Anwendungskopie vor dem Erreichen eines entsprechenden Fehlerpunkts; und ein Mittel zum Initiieren eines ersten Satzes von einem oder mehreren Wiederherstellungsverfahren beruhend auf der Fehlerunterbrechung durch die erste Anwendungskopie, um zu versuchen, einen möglichen bevorstehenden Fehlerpunkt zu umgehen.
-
Gemäß einem weiteren Aspekt stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Überwachen auf und Wiederherstellen nach Fehlern bereit, wobei das Computerprogrammprodukt Folgendes aufweist: ein durch einen Computer lesbares Speichermedium, das durch einen Verarbeitungsschaltkreis gelesen werden kann und auf dem Befehle zur Ausführung durch den Verarbeitungsschaltkreis gespeichert sind, um ein Verfahren zum Durchführen der Schritte der Erfindung durchzuführen.
-
Gemäß einem weiteren Aspekt stellt die vorliegende Erfindung ein auf einem durch einen Computer lesbaren Medium gespeichertes Computerprogramm bereit, das in den internen Arbeitsspeicher eines digitalen Computers geladen werden kann und Software-Code-Teile zur Durchführung der Schritte der Erfindung aufweist, wenn das Programm auf einem Computer ausgeführt wird.
-
BESCHREIBUNG DER ZEICHNUNGEN
-
Ausführungsformen der Erfindung werden nun lediglich beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in denen:
-
1 ein Implementierungsschema einer Plattform der vorliegenden Ausführungsform ist;
-
2 ein Implementierungsschema einer sich in Ausführung befindlichen Hypervisor-Umgebung ist;
-
3 ein Komponentenschaubild eines Hypervisor-Wiederherstellungssystems gemäß der vorliegenden Ausführungsform ist;
-
4 ein Komponentenschaubild eines Anwendungswiederherstellungssystems gemäß der vorliegenden Ausführungsform ist;
-
5 ein Verfahrensschaubild eines Hypervisor-Wiederherstellungsverfahrens gemäß der vorliegenden Ausführungsform ist;
-
6 ein Verfahrensschaubild eines Anwendungswiederherstellungsverfahrens gemäß der vorliegenden Ausführungsform ist;
-
7 ein Verfahrensschaubild eines Anwendungsfehlerverfahrens gemäß der bevorzugten Ausführungsform ist;
-
Die 8A bis 8F beispielhafte Zustandsdiagramme von Zuständen von virtuellen Maschinen im Zeitverlauf gemäß der bevorzugten Ausführungsform sind;
-
9 beispielhafte Wiederherstellungsdatensätze gemäß der bevorzugten Ausführungsform ist; und
-
Die 10A bis 10E den sich ändernden Zustand einer beispielhaften Anwendungsregistriertabelle 42A und eines Wiederherstellungsdatensatzes 54A für denselben wieder auftretenden Fehler gemäß der bevorzugten Ausführungsform zeigen.
-
BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Eine Plattform 10 für den Dialog mit einem Benutzer 12 unter Verwendung eines Bildschirms 14 und einer Tastatur 16 wird unter Bezugnahme auf ein Implementierungsschema in 1 beschrieben. Die Plattform 10 weist auf: einen Prozessor 18; einen Arbeitsspeicher 20; Schnittstellen 22; und einen Massenspeicher 24. Ein Beispiel für die Plattform 10 ist ein IBM® PowerPC 750TM Express-Server.
-
Der Prozessor 18 ruft Anweisungen und Daten aus dem Arbeitsspeicher ab und führt an den Daten logische Funktionen gemäß den Anweisungen durch. Zu Beispielen für Anweisungen gehören das Addieren von Daten, das Subtrahieren von Daten, das Lesen von Daten, das Schreiben von Daten. Ein Beispiel für einen Prozessor ist ein IBM POWER7®-Prozessor. IBM, PowerPC 750, POWER und POWER7 sind Marken von International Business Machines Corporation, die in vielen Jurisdiktionen weltweit eingetragen sind.
-
Der Arbeitsspeicher 20 ist schneller als der Massenspeicher 24 und auf Geschwindigkeit ausgelegt und beschränkt somit nicht die Geschwindigkeit des Datenaustauschs mit dem Betriebsprozessor. Der Prozessor weist einen noch schnelleren Cachespeicher für kleine Teile einer Anwendung auf, aber die Speicherung einer gesamten sich in Ausführung befindlichen Anwendung findet in dem Arbeitsspeicher 20 statt. Ein Beispiel für den Arbeitsspeicher sind 8 Gigabyte bis 512 Gigabyte an RDIMM-Modulen (registrierte Dual-Inline-Speichermodule), die eine Reihe von integrierten Schaltungen mit dynamischem Direktzugriffsspeicher (DRAM) umfassen.
-
Die Schnittstellen 22 stellen die Schnittstelle zwischen der Plattform 10 und dem Benutzer 12 bereit. Eine Tastatureingabeeinheit sendet über eine Schnittstelle 22 Daten an den Arbeitsspeicher 20. Daten werden von dem Arbeitsspeicher 20 an eine Ausgabeeinheit wie zum Beispiel einen Videomonitor gesendet.
-
Der Massenspeicher 24 ist langsamer als der Arbeitsspeicher 20, ist jedoch so ausgelegt, dass er wesentlich mehr Daten aufnehmen kann als der Ausführungsspeicher. Ein Beispiel für Massenspeicher ist eine SSF-(Small Form Factor)SAS-(Serial Attached SCSI) Festplatte mit 8 Terabytes. Bei SCSI (Klein-Computer-System-Schnittstelle – Small Computer System Interface) handelt es sich um einen Computerbus, der zum Verlagern von Daten zu und von Computerspeichereinheiten wie zum Beispiel Festplattenlaufwerken verwendet wird.
-
Wenn die Plattform nicht in Betrieb ist, ist der Arbeitsspeicher 20 leer und der Massenspeicher 24 speichert dauerhaft Abbilder der zum Ausführen auf der Plattform benötigten Anwendungen. In der vorliegenden Ausführungsform enthält der Massenspeicher: einen Hypervisor 26; ein Hypervisor-Wiederherstellungssystem 27; eine virtuelle Maschine 30; und eine beispielhafte Anwendung 32. Andere Artefakte werden gespeichert, aber die genannten sind die wesentlichen zum Beschreiben der Erfindung benötigten Komponenten. Ein Hypervisor kann abhängig von dem Typ von Hypervisor ein zugrunde liegendes Betriebssystem benötigen.
-
Eine sich in Ausführung befindliche Anwendung 32A, eine virtuelle Maschine 30A und ein Hypervisor 26A werden wie folgt unter Bezugnahme auf 2 beschrieben. Bei der virtuellen Maschine 30A handelt es sich um die Ausführungsumgebung für ein Betriebssystem 34A und die Anwendung 32A. Die Anwendung 32 weist ein Anwendungswiederherstellungssystem 29A auf.
-
Der Hypervisor 26 weist Programmcodeanweisungen auf, die, wenn sie in einen ausführbaren Arbeitsspeicher geladen und ausgeführt werden, die Plattform 10 dazu anweisen, die logischen Operationen des Hypervisors 26A durchzuführen. Die logischen Operationen des Hypervisors 26A beziehen ein Hypervisor-Wiederherstellungssystem 27A und die virtuelle Maschine 30A ein.
-
Das Hypervisor-Wiederherstellungssystem 27 weist Anweisungen auf, die, wenn sie unter Aufsicht eines aktiven Hypervisors 26A in einen Arbeitsspeicher geladen werden, die Plattform 10 und den Hypervisor dazu anweisen, die logischen Operationen des Fehler- und Wiederherstellungssystems 27A durchzuführen.
-
Die virtuelle Maschine 30 weist Programmcodeanweisungen auf, die, wenn sie unter Aufsicht eines aktiven Hypervisors 26A in einen Arbeitsspeicher geladen werden, die Plattform und den Hypervisor dazu anweisen, die logischen Operationen der virtuellen Maschine 30A durchzuführen. Die logischen Operationen der virtuellen Maschine 30A beinhalten das Ausführen des entsprechenden Betriebssystems 34A und der Anwendung 32A.
-
Die beispielhafte Anwendung 32 weist Programmcodeanweisungen auf, die, wenn sie unter Aufsicht der aktiven virtuellen Maschinen 30A in einen Arbeitsspeicher geladen werden, die virtuellen Maschinen dazu anweisen, die logischen Operationen der beispielhaften Anwendung 32A durchzuführen.
-
Das Hypervisor-Wiederherstellungssystem 27 (siehe 3) weist Folgendes auf: ein Hypervisor-Wiederherstellungsverfahren 500; und eine Hypervisor-Wiederherstellungsdatenbank 40.
-
Das Hypervisor-Wiederherstellungsverfahren 500 wird nachfolgend in Bezug auf 5 ausführlicher beschrieben.
-
Die Hypervisor-Wiederherstellungsdatenbank 40 weist Folgendes auf: die Anwendungsregistriertabelle 42; und Prüfpunkte 44 des Zustands der virtuellen Maschine.
-
Die Anwendungsregistriertabelle 42 weist eine Tabelle mit Anwendungsdatensätzen auf. Jeder Anwendungsdatensatz weist Folgendes auf: eine Anwendungskennung; einen Fehlercode; einen Prüfpunkt; und eine Zeit nach dem Prüfpunkt. Eine beispielhafte Anwendungsregistriertabelle 42A ist in den 10A bis 10E gezeigt. Bei der Anwendungskennung handelt es sich um eine Kennung für die sich selbst in dem Wiederherstellungssystem registrierende Anwendung. Der Fehlercode weist den Fehlercode auf, der bei Auftreten eines Fehlers in der Anwendung an das Wiederherstellungssystem gesendet wird. Bei dem Prüfpunkt handelt es sich um den Prüfpunkt vor dem Auftreten eines Fehlers. Bei der Zeit nach dem Prüfpunkt handelt es sich um die Zeit in Sekunden nach dem Prüfpunkt, an dem der Fehler auftrat.
-
Bei den Prüfpunkten 44 des Zustands der virtuellen Maschine handelt es sich um den Arbeitsspeicher und das Register einer virtuellen Maschine, die zum Wiederherstellen der virtuellen Maschine und sämtlicher auf dieser laufenden Anwendungen zu einem bestimmten Zeitpunkt benötigt werden.
-
Das Anwendungswiederherstellungssystem 29 (siehe 4) weist Folgendes auf: ein Anwendungswiederherstellungsverfahren 600; ein Anwendungsfehlerverfahren 700; und eine Anwendungswiederherstellungsdatenbank 50.
-
Die Anwendungswiederherstellungsdatenbank 50 weist Wiederherstellungsberichte 52 und Wiederherstellungsberichtsvorlagen 54 und 55 auf. Beispiele der Wiederherstellungsberichtsvorlagen 54 und 55 sind in 9 gezeigt. Bei einem Wiederherstellungsbericht handelt es sich um eine Instantiierung einer Wiederherstellungsberichtsvorlage, die dazu verwendet wird, das Anwendungswiederherstellungssystem 29 dazu anzuweisen, bestimmte Verfahren anzuwenden. Ein Wiederherstellungsbericht wird auch zum Aufzeichnen von Ergebnissen verwendet, so dass das Anwendungswiederherstellungssystem 29 nach jedem Fehler Wiederherstellungsverfahren anpassen kann.
-
Das Anwendungswiederherstellungsverfahren 600 wird nachfolgend in Bezug auf 6 ausführlicher beschrieben.
-
Das Anwendungsfehlerverfahren 700 wird nachfolgend in Bezug auf 7 ausführlicher beschrieben.
-
Das Hypervisor-Wiederherstellungsverfahren 500 (siehe 5) wird unter Bezugnahme auf den logischen Prozess beschrieben, der mit Schritt 502 anfängt und mit Schritt 518 aufhört.
-
Schritt 502 dient zum Initiieren des Verfahrens 500 bei Bereitstellung der Anwendung und der virtuellen Maschine. Dabei handelt es sich um die Initialisierung des Verfahrens 500, das von der Plattform, dem Hypervisor, der virtuellen Maschine und der Anwendung durchgeführt wird, wenn die virtuelle Maschine und die Anwendung auf dem Hypervisor bereitgestellt werden.
-
Schritt 504 dient zum Registrieren einer Anwendung, nachdem ein Signal von einer auf der virtuellen Maschine laufenden Anwendung empfangen wird. Eine sich in Ausführung befindliche Anwendung initiiert eine Registrierungsanforderung, und Schritt 504 nimmt diese Anforderung an. Da es keinen bestehenden Eintrag in der Registriertabelle 42 gibt, wird der Name der Anwendung gespeichert, und die Steuerung kann zu Schritt 508 übergehen.
-
Schritt 508 dient zum Speichern von Zustandsinformationen von der virtuellen Maschine an regelmäßigen Prüfpunkten. Nächster Schritt 510.
-
Schritt 510 dient dem Überwachen von Zustandsinformationen auf Fehlerzustände in Echtzeit. Wenn es einen stabilen Zustand und keine Fehler gibt, kehrt der Prozess periodisch, abhängig von den Wiederherstellungseinstellungen, zu Schritt 508 zurück, um Zustandsinformationen zu speichern. Wenn die Anwendung beendet wird, wird die Steuerung an Schritt 518 übergeben. Wenn es jedoch einen Fehler der Anwendung gibt, geht die Steuerung zu Schritt 512 über.
-
Schritt 512 dient dem Empfangen einer Fehlermeldung von der Anwendung, die einen Fehlercode und einen Fehlerpunkt beinhaltet, und dem Füllen der Anwendungsregistriertabelle mit den Einzelheiten. Nächster Schritt 514.
-
Schritt 514 dient dem Anhalten der eine fehlgeschlagene Anwendung ausführenden virtuellen Maschine. Nächster Schritt 516.
-
Schritt 516 dient dem Bereitstellen einer neuen virtuellen Maschine mit der Anwendung und dem Ausführen der Anwendung ab einem Prüfpunkt, der vor der Unterbrechung liegt. Der nächste Schritt ist Schritt 517.
-
Schritt 517 dient dem Ermitteln der letzten Fehlermeldung für eine sich bereits in Ausführung befindliche Anwendung. Ein Nachschlagen in der Anwendungsregistriertabelle zeigt eine Fehlermeldung und einen Hinweis darauf, an welchem Punkt die Fehlermeldung empfangen wurde. In der bevorzugten Ausführungsform wird die Zeit nach dem letzten Prüfpunkt mit der Fehlermeldung gespeichert. Schritt 517 dient dem Senden einer Unterbrechung an die Anwendung mit den gespeicherten Einzelheiten des letzten Fehlers, darunter der Hinweis, wann die Fehlermeldung empfangen wurde. In einem Beispiel ist der Unterbrechungsname SIGCAREFUL. Der nächste Schritt ist 508, wo das Verfahren wieder eine Schleife ausführt, um Prüfpunkte zu speichern und die neue virtuelle Maschine und die Anwendung zu überwachen.
-
Schritt 518 stellt das Ende des Verfahrens dar.
-
Das Anwendungswiederherstellungsverfahren 600 (siehe 6) weist logische Prozessschritte auf, die mit Schritt 602 beginnen und mit Schritt 616 enden. Dieses Verfahren kommt ins Spiel, sobald eine neue Kopie der Anwendung mit dem Hypervisor-Wiederherstellungssystem 27 auf einer virtuellen Maschine läuft (Verfahren 700).
-
Schritt 602 dient dem Empfangen einer Unterbrechung mit einer Fehlermeldung und einem Fehlerpunkt.
-
Schritt 604 dient dem Finden oder Aufbauen eines Wiederherstellungsdatensatzes für einen Fehlerpunkt in einer Anwendung. Wenn ein neuer Datensatz erstellt werden muss, dann folgt Schritt 606, sonst Schritt 608. Ein Wiederherstellungsdatensatz wird sowohl durch eine Fehlermeldung als auch durch einen Fehlerpunkt indiziert, da gleichartige Fehler an unterschiedlichen Punkten in einer Anwendung auftreten können. Ein Wiederherstellungsdatensatz weist das Anwendungswiederherstellungsverfahren dazu an, ein oder mehrere Wiederherstellungsverfahren zu initiieren.
-
Schritt 606 dient dem Erstellen eines Wiederherstellungsdatensatzes, der für den Fehlertyp ausgewählte Wiederherstellungsverfahren beinhaltet. Der wiederhergestellte Datensatz wird aus einer Wiederherstellungsdatensatzvorlage erstellt, die gemäß der Fehlermeldung ausgewählt wurde. Arbeitsspeicherintensive Wiederherstellungsverfahren werden zum Beispiel für einen Arbeitsspeicherfehler ausgewählt; massenspeicherintensive Wiederherstellungsverfahren werden für einen Massenspeicherfehler ausgewählt; transaktionsintensive Wiederherstellungsverfahren werden für einen Transaktionsfehler ausgewählt; und netzwerkintensive Wiederherstellungsverfahren werden für einen Netzwerkfehler ausgewählt. Die Datensatzvorlagen können auch daraus ermittelt werden, welche Wiederherstellungsverfahren verfügbar sind; neue Wiederherstellungsverfahren können hinzugefügt werden, indem neue Wiederherstellungsdatensatzvorlagen hinzugefügt werden.
-
Wiederherstellungsverfahren in einem Wiederherstellungsdatensatz werden gemäß dem Fehlertyp priorisiert. In der bevorzugten Ausführungsform werden Wiederherstellungsverfahren zuerst nach der Fehlermeldung und dann nach der Reihenfolge des Anrichtens des geringsten Schadens priorisiert. Zwei Beispiele für Wiederherstellungsdatensatzvorlagen sind unter Bezugnahme auf 9 beschrieben. Der nächste Schritt ist 608.
-
Schritt 608 dient dem Abbrechen von Transaktionen gemäß dem Wiederherstellungsdatensatz. Der Wiederherstellungsdatensatz gibt an, ob dieser Schritt durchzuführen ist. Die Anzahl oder die Stufe von abzubrechenden Transaktionen kann in der bevorzugten Ausführungsform angepasst werden.
-
Schritt 610 dient dem Verwerfen von Datenstrukturen gemäß dem Wiederherstellungsdatensatz.
-
Schritt 612 dient dem Eintreten in eine sichere Betriebsart gemäß einem Wiederherstellungsdatensatz.
-
Schritt 614 dient dem Leeren eines Cachespeichers gemäß einem Wiederherstellungsdatensatz.
-
Schritt 616 stellt das Ende des Verfahrens dar.
-
Das Anwendungsfehlerverfahren 700 (siehe 7) weist logische Prozessschritte auf, die mit Schritt 702 beginnen und mit Schritt 712 enden. Hierbei handelt es sich um das Hauptverfahren für eine Anwendung dieser Ausführungsform.
-
Schritt 702 dient dem Registrieren der Anwendung für einen auf dem Hypervisor laufenden Wiederherstellungsdienst.
-
Schritt 704 dient dem Überwachen des Anwendungszustands. Wenn die Anwendung fehlschlägt, folgt Schritt 708. Wenn eine Unterbrechung von dem Hypervisor empfangen wird, folgt Schritt 706.
-
Schritt 706 dient dem Aufrufen des Anwendungswiederherstellungsverfahrens 600 beim Empfangen einer Unterbrechung. Schritt 706 wird erst dann erreicht, nachdem eine Kopie einer Anwendung und einer virtuellen Maschine bereitgestellt wird.
-
Schritt 708 dient dem Senden des Anwendungsfehlers und des Fehlerpunkts an den Hypervisor.
-
Schritt 710 stellt das Ende des Verfahrens dar, wahrscheinlich da die Anwendung abgestürzt ist.
-
Beispielhafte Zustände von virtuellen Maschinen im Zeitverlauf werden wie folgt unter Bezugnahme auf die 8A bis 8F beschrieben. Zustandsänderungen sind in jeder Figur innerhalb eines gestrichelten Ovals eingeschlossen.
-
8A zeigt die auf dem Hypervisor 26A laufende virtuelle Maschine 30A. Beim Ausführen von Anweisungen durch die Anwendung setzt jede Anweisung die virtuelle Maschine von einem Arbeitsspeicherzustand in einen anderen. Ein Bereich von Arbeitsspeicherzuständen ist über einen Zeitabschnitt gezeigt: 1; 2; 3; 4; ... x; und x + 1. Diese Zustände stellen den vollständigen Arbeitsspeicherzustand der virtuellen Maschine dar. Periodisch werden die Zustände als Prüfpunkte ausgewählt und in dem Hypervisor 26A gespeichert, zum Beispiel Zustand 4 und Zustand x. Von diesen Prüfpunkten kann eine vollständige Kopie der virtuellen Maschine mit einer sich aktuell in Ausführung befindlichen Anwendung wiederhergestellt werden.
-
Die Anwendung 32A wurde darauf ausgelegt, eine Fehlerunterbrechung zu unterstützen (in dem Beispiel SIGCAREFUL genannt). Bei Ausführung erklärt die Anwendung 32A, dass sie derart ausgelegt ist, indem sie sich bei dem Hypervisor-Wiederherstellungssystem für einen Fehlerdienst registriert. Sollte in der Anwendung ein Softwareabsturz erfolgen, sollte der Hypervisor die Anwendung auf eine sekundäre virtuelle Maschine übertragen und dann die Unterbrechung SIGCAREFUL auslösen.
-
8B zeigt das Auftreten eines Fehlers nach dem Arbeitsspeicherzustand x + n; eine sich daraus ergebende Fehlermeldung wird auf den Hypervisor übertragen.
-
8C zeigt, wie die Kopie der virtuellen Maschine 30B ab dem Prüfpunkt x initiiert wird. Die Anwendung 32B läuft auf der virtuellen Maschine 30B in demselben Zustand wie x auf der virtuellen Maschine 30A. Die Anwendung 32B wird ausgeführt und geht in den Zustand x + 1 über.
-
8D zeigt, wie der Hypervisor die Unterbrechung SIGCAREFUL an die virtuelle Maschine 30B sendet, wo sie empfangen wird, nachdem die Anwendung x + 1 erreicht hat, aber vor dem Zustand, in dem der entsprechende Fehler aufgetreten ist (Zustand x + n).
-
8E zeigt, wie Wiederherstellungsverfahren vor dem Zustand x + n angewendet werden. Die Anwendung kann alle beliebigen Wiederherstellungsschritte durchführen, die zum Vermeiden des Absturzes notwendig sind. Die Wiederherstellungsverfahren sind speziell für eine jeweilige Anwendung bestimmt und werden durch die Wiederherstellungsdatensatzvorlagen gesteuert. Wenn der Anwendung (durch die Unterbrechung SIGCCAREFUL) mitgeteilt wird, dass sie beendet werden wird, da sie auf eine nicht zugeordnete Arbeitsspeicheradresse zugreift, könnten bestehende Transaktionen abgebrochen, Cachespeicher geleert und so viele Datenstrukturen wie möglich verworfen werden. Wenn einer Java® Virtual Machine mitgeteilt wird, dass sie kurz davor steht, eine illegale Anweisung auszuführen, könnte sie ihre Just-in-Time-(JIT-)Cachespeicher leeren und zu einer langsameren, Bytecode interpretierenden Betriebsart zurückkehren. Wenn einer Anwendung mitgeteilt wird, dass sie beendet werden wird, da der Kernel ihr keinen weiteren Arbeitsspeicher zuweisen kann (d. h., wenn die Systemkonfiguration es Prozessen gestattet, mehr Arbeitsspeicher zuzuordnen, als das System in physischem Arbeitsspeicher und ausgelagertem Speicher zur Verfügung hat), könnte die Anwendung ihre Arbeitsspeichernutzung verringern, indem Zwischenspeicherungen von Daten verworfen oder die Anzahl von gleichzeitig verarbeiteten Transaktionen verringert werden. Java und sämtliche auf Java beruhenden Marken und Logos sind Marken bzw. registrierte Marken von Oracle und/oder ihren zugehörigen Unternehmen.
-
8F zeigt den Zustand x + m und dann einen weiteren auftretenden Fehler, der den durch die Ausführungsform bereitgestellten laufenden Schutz veranschaulicht. Die Fehlereinzelheiten werden an den Hypervisor gesendet, und die Prozesse werden wiederholt. In diesem Beispiel ist die virtuelle Maschine in einen späteren Zustand als die vorhergehende virtuelle Maschine übergegangen, also scheinen die Wiederherstellungsverfahren eine positive Auswirkung gehabt zu haben.
-
Zwei Beispiele für Wiederherstellungsdatensatzvorlagen 54 und 55 sind unter Bezugnahme auf 9 beschrieben. Jede Vorlage ist speziell für die Anwendung 32 bestimmt und weist sechs Wiederherstellungsverfahren auf. Jeder Datensatz weist Folgendes auf: eine Folgenummer; ein Wiederherstellungsverfahren; eine Wiederherstellungsverfahrensdringlichkeit; und einen Zeitstempel. Bei der Folgenummer handelt es sich um die Reihenfolge, in der das Wiederherstellungsverfahren angewendet wird. Das Datensatzwiederherstellungsverfahren enthält den Namen des aufzurufenden Wiederherstellungsverfahrens. Dieses Beispiel ist auf vier Wiederherstellungsverfahren beschränkt. Bei der Datensatz-Wiederherstellungsverfahrensdringlichkeit handelt es sich um einen Parameter, der auf das Wiederherstellungsverfahren angewendet wird, wenn dieses aufgerufen wird; dieses Beispiel weist lediglich einen einzelnen einfachen Parameter auf, der einem einfachen Wiederherstellungsverfahren entspricht, wobei aber mehrere Parameter, die komplexe Ausdrücke beinhalten, verwendet werden könnten. Der Zeitstempel wird aufgezeichnet, wenn das Wiederherstellungsverfahren auf eine Reihe von verwandten Fehlerpunkten angewendet wurde.
-
Die Vorlage 54 ist für den Transaktionsfehler 110 optimiert. Drei verschiedene Transaktionsabbruch-Wiederherstellungsverfahren werden zuerst aufgeführt, von denen jedes eine höhere Dringlichkeitsstufe aufweist. Danach folgt ein Leerungswiederherstellungsverfahren; ein Wiederherstellungsverfahren für eine sichere Betriebsart und ein Verfahren zum Verwerfen von Datenstrukturen. Im Betrieb wird die Wiederherstellungsdatensatzvorlage für einen an einem bestimmten Fehlerpunkt auftretenden Fehler ausgewählt (in dieser Ausführungsform in einem Zeitraum). Bei jedem Auftreten des Fehlers und des Fehlerpunkts wird eine steigende Nummer der Wiederherstellungsverfahren angewendet.
-
Die Vorlage 55 ist für das Arbeitsspeicherproblem 120 optimiert. Zwei Cachespeicher-Leerungswiederherstellungsverfahren werden zuerst aufgeführt, wobei das zweite eine höhere Dringlichkeit des Leerens aufweist. Als nächstes werden zwei Datenstruktur-Wiederherstellungsverfahren aufgeführt, wobei das zweite eine höhere Dringlichkeit aufweist. Als nächstes wird ein Wiederherstellungsverfahren zum Abbrechen von Transaktionen mit hoher Dringlichkeit aufgeführt; gefolgt von einem Wiederherstellungsverfahren in sicherer Betriebsart.
-
Die sich ändernden Zustände einer beispielhaften Anwendungsregistriertabelle 42A und eines Wiederherstellungsdatensatzes 54A werden nun für denselben wieder auftretenden Fehler beschrieben (siehe 10A bis 10E). In diesem Beispiel wird derselbe wiederauftretende Fehler als Fehler innerhalb eines Satzes von Fehlercodes behandelt (Fehler 120, Fehler 122 und 124). Der Fehlerpunkt ist durch einen Zeitbereich von +/–10 Sekunden nach dem letzten Prüfpunkt X festgelegt. Die wichtige Änderung des Zustands jeder Figur ist in einem gestrichelten Oval eingeschlossen.
-
Unter Bezugnahme auf 10A wird der Anfangszustand einer Anwendungsregistriertabelle 42A und eines Wiederherstellungsdatensatzes 54A mit einem Datensatzfeld gemäß dem Vorlagedatensatz gezeigt. Die Anwendung 32 hat sich an dem Wiederherstellungssystem registriert. In der Anwendungstabelle ist die Tatsache aufgezeichnet, dass ein Fehler 120 30 Sekunden nach dem letzten Prüfpunkt X (X + 30) aufgetreten ist. Als Reaktion auf den Fehler 120 wird eine neue virtuelle Maschine mit einer neuen Anwendung gestartet. Rechtzeitig vor Erreichen des entsprechenden Fehlerpunkts (30 Sekunden) unterbricht der Hypervisor 26A die Anwendung, und das Anwendungswiederherstellungsverfahren 600 wird aufgerufen, in diesem Beispiel 10 Sekunden vor dem bevorstehenden Fehler. Da kein bestehender Wiederherstellungsdatensatz gefunden wird, wird aus der Vorlage 54 ein Wiederherstellungsdatensatz 54A erstellt.
-
Unter Bezugnahme auf 10B führt das Anwendungsverfahren 600 das erste Wiederherstellungsverfahren in dem Datensatz durch; Transaktionen 1 (Dringlichkeit 1) abbrechen und die Operation bei 16/3/2011 X + 20 (10 Sekunden vordem vorhergehenden Fehlerpunkt) mit Zeitstempel versehen. Um zu ermitteln, ob ein Wiederherstellungsverfahren erfolgreich war, wird ein Fehlerpunktzeitgeber gestartet, um zu sehen, ob derselbe Fehler zu demselben oder einem gleichartigen Zeitpunkt nach dem Prüfpunkt auftritt. Falls nicht, werden das Wiederherstellungsverfahren bzw. die Verfahren in dem Wiederherstellungsdatensatz als erfolgreich gekennzeichnet, und in diesem Beispiel wird nach dem Zeitstempel ein Strichpunkt eingefügt. 10B zeigt, dass das Wiederherstellungsverfahren Transaktionen 1 abbrechen dieses Mal erfolgreich war, da es ein Strichpunkt-Suffix aufweist.
-
Unter Bezugnahme auf 10C scheint es, dass die Anwendung 32 einen weiteren Fehler 120 innerhalb eines gleichartigen Bereichs derselben Prüfpunktzeit hatte (X + 32 unterscheidet sich um 2 Sekunden, liegt aber innerhalb des beispielhaften Bereichs); diese Faktoren erkennen den Wiederherstellungsdatensatz 54A als bestehenden Wiederherstellungsdatensatz für den Fehler 120. In diesem Beispiel wurden zwar Transaktion 1 abbrechen und angewendet und mit dem Zeitstempel 17/3/2011 X + 22 versehen, aber die Anwendung ist trotzdem abgestürzt, bevor der Wiederherstellungszeitgeber dies als Erfolg erachtet hat. Es wurde kein Strichpunkt-Suffix hinzugefügt, so dass ein anderer Fehler diese Tatsache aufgreifen kann.
-
Unter Bezugnahme auf 10D ist gezeigt, dass die Anwendung 32 einen weiteren Fehler 122 (in diesem Beispiel einen gleichartigen Fehler) innerhalb eines gleichartigen Bereichs derselben Prüfpunktzeit hatte (X + 25 liegt 5 Sekunden innerhalb des beispielhaften Bereichs); diese Faktoren erkennen den Wiederherstellungsdatensatz 54A als bestehenden Wiederherstellungsdatensatz für den Fehler 122. In diesem Beispiel wird Transaktionen 1 abbrechen ignoriert, da es vorher nicht funktioniert hat, und das Wiederherstellungsverfahren Transaktionen 2 abbrechen wird angewendet und mit dem Zeitstempel 17/3/2011 X + 15 versehen. Die Anwendung stürzt jedoch noch immer ab, bevor der Wiederherstellungszeitgeber dies als Erfolg erachtet hat. Es wurde kein Strichpunkt-Suffix hinzugefügt, so dass ein anderer Fehler diese Tatsache aufgreifen kann.
-
Unter Bezugnahme auf 10E ist gezeigt, dass die Anwendung 32 einen weiteren Fehler 123 (einen gleichartigen Fehler) innerhalb eines gleichartigen Bereichs derselben Prüfpunktzeit hatte (X + 35 liegt 5 Sekunden innerhalb des beispielhaften Bereichs); diese Faktoren erkennen den Wiederherstellungsdatensatz 54A als bestehenden Wiederherstellungsdatensatz für den Fehler 123. In diesem Beispiel werden Transaktionen 1 und 2 abbrechen ignoriert, da sie vorher nicht funktioniert haben, und das Wiederherstellungsverfahren Transaktionen 3 abbrechen wird angewendet und mit dem Zeitstempel 17/3/2011 X + 25 versehen. Dieses Mal stürzt die Anwendung nicht ab, bevor es als Erfolg erachtet wurde, und es wurde ein Strichpunkt-Suffix hinzugefügt, so dass ein anderer Fehler diese Tatsache aufgreifen kann.
-
Weitere Wiederherstellungsverfahren können bei Bedarf angewendet werden: in diesem Beispiel wurden sichere Betriebsart und Datenstrukturen verwerfen nicht angewendet, wobei sie separat oder zusätzlich zu den Verfahren mit Transaktion abbrechen hätten angewendet werden können.
-
Zusammengefasst betrifft diese Erfindung ein Verfahren und eine Vorrichtung zum Verwalten der Hochverfügbarkeit von virtuellen Maschinen. Insbesondere betrifft diese Erfindung ein Verfahren und eine Vorrichtung zum Verwalten der auf Prüfpunkten beruhenden Hochverfügbarkeit einer virtuellen Sicherungsmaschine im Falle eines Anwendungsfehlers auf einer primären virtuellen Maschine. Es werden ein Verfahren, ein System, ein Computerprogrammprodukt und ein Computerprogramm zum Überwachen auf und Wiederherstellen nach Fehlern beschrieben, aufweisend: das Bereitstellen einer ersten Kopie einer Anwendung einer ersten virtuellen Maschine; das Speichern von Zustandsinformationen von der sich in Ausführung befindlichen ersten Anwendung an regelmäßigen Prüfpunkten; das Überwachen von Zustandsinformationen auf Fehlerzustände in Echtzeit; das Erzeugen einer Unterbrechung aus Zustandsinformationen eines Fehlerpunkts; bei Unterbrechung das Bereitstellen einer zweiten Kopie der Anwendung zum Ausführen ab dem Prüfpunkt; das Durchführen einer ersten Änderung an der Betriebsumgebung der zweiten Kopie vor dem Fehlerpunkt; und das Initiieren des Ausführens der zweiten Kopie der Anwendung.
-
Es werden nun andere in Betracht gezogene Ausführungsformen der Erfindung beschrieben.
-
Dem Fachmann wird einleuchten, dass das gesamte Verfahren der bevorzugten Ausführungsformen der vorliegenden Erfindung oder Teile davon entsprechend und zweckmäßig in einer Logikvorrichtung oder einer Vielzahl von Logikvorrichtungen ausgeführt werden können, die Logikelemente umfassen, die so angeordnet sind, dass sie die Schritte des Verfahrens durchführen, und dass derartige Logikelemente Hardware-Komponenten, Firmware-Komponenten oder eine Kombination dieser umfassen können.
-
Dem Fachmann wird gleichermaßen einleuchten, dass die gesamte Logikanordnung gemäß den bevorzugten Ausführungsformen der vorliegenden Erfindung oder Teile davon zweckmäßig in einer Logikvorrichtung ausgeführt werden können, die Logikelemente zum Durchführen der Schritte des Verfahrens umfasst, und dass derartige Logikelemente Komponenten wie Logikgatter zum Beispiel in einer programmierbaren Logikanordnung oder einer anwendungsspezifischen integrierten Schaltung umfassen können. Derartige Logikanordnungen können ferner in Form von Aktivierungselementen zum vorübergehenden oder dauerhaften Herstellen von Logikstrukturen in einer derartigen Anordnung bzw. Schaltung ausgeführt werden, zum Beispiel unter Verwendung einer virtuellen Hardware-Beschreibungssprache, die unter Verwendung von festen oder übertragbaren Trägermedien gespeichert und übertragen werden kann.
-
Man wird verstehen, dass das oben beschriebene Verfahren bzw. die oben beschriebene Anordnung zweckmäßig auch vollständig oder teilweise durch auf einem oder mehreren Prozessoren ausgeführte Software durchgeführt werden können, und dass die Software in Form von einem oder mehreren Computerprogrammelementen auf jedem beliebigen geeigneten (nicht in den Figuren gezeigten) Datenträger wie einer magnetischen oder optischen Platte oder dergleichen bereitgestellt werden kann. Kanäle für das Übertragen von Daten können gleichermaßen Speichermedien jeglicher Beschreibungen sowie signalführende Medien wie drahtgebundene oder drahtlose signalführende Medien umfassen.
-
Die vorliegende Erfindung kann ferner zweckmäßig als Computerprogrammprodukt zur Verwendung mit einem Computersystem ausgeführt werden. Eine derartige Implementierung kann eine Reihe von durch einen Computer lesbaren Anweisungen umfassen, die entweder auf einem physischen Medium wie einem durch einen Computer lesbaren Medium, z. B. eine Diskette, eine CD-ROM, eine ROM oder eine Festplatte, festgehalten sind oder unter Verwendung eines Modems oder einer anderen Schnittstelleneinheit entweder über ein physisches Medium, darunter optische oder analoge Datenübertragungsleitungen, aber nicht darauf beschränkt, oder nicht physisch mit drahtlosen Techniken, darunter Mikrowelle, Infrarot- oder andere Übertragungstechniken, aber nicht darauf beschränkt, auf ein Computersystem übertragen werden können. Die Reihe von durch einen Computer lesbaren Anweisungen führt die gesamte vorher hierin beschriebene Funktionalität oder Teile davon aus.
-
Ein Fachmann wird verstehen, dass derartige durch einen Computer lesbare Anweisungen in einer Reihe von Programmiersprachen zur Verwendung mit vielen Computerarchitekturen bzw. Betriebssystemen geschrieben sein können. Des Weiteren können derartige Anweisungen unter Verwendung jeder beliebigen aktuellen oder zukünftigen Speichertechnologie gespeichert werden, darunter Halbleiter, magnetisch oder optisch, aber nicht darauf beschränkt, oder sie können unter Verwendung jeder beliebigen aktuellen oder zukünftigen Datenübertragungstechnologie übertragen werden, darunter optisch, per Infrarot oder Mikrowelle, aber nicht darauf beschränkt. Es wird in Betracht gezogen, dass ein derartiges Computerprogrammprodukt als auswechselbares Medium mit zugehöriger gedruckter oder elektronischer Dokumentation zum Beispiel als eingeschweißte Software, vorinstalliert auf einem Computersystem, zum Beispiel auf einem System-ROM oder einer Festplatte, oder über ein Netzwerk wie zum Beispiel das Internet bzw. World Wide Web über einen Server oder ein elektronisches schwarzes Brett vertrieben werden kann.
-
Als Alternative kann die bevorzugte Ausführungsform der vorliegenden Erfindung in Form eines auf einem Computer ausgeführten Verfahrens zum Implementieren eines Dienstes realisiert werden, das Schritte zum Implementieren von Computerprogrammcode umfasst, der die Funktion besitzt, das Computersystem dazu zu veranlassen, sämtliche Schritte des Verfahrens durchzuführen, wenn er in einer Computerinfrastruktur implementiert und darin ausgeführt wird.
-
Als weitere Alternative kann die bevorzugte Ausführungsform der vorliegenden Erfindung in Form eines Datenträgers realisiert werden, auf dem sich funktionale Daten befinden, wobei die funktionalen Daten funktionale Computerdatenstrukturen umfassen, die ein Computersystem in die Lage versetzen, sämtliche Schritte des Verfahrens durchzuführen, wenn sie in das Computersystem geladen und von diesem verarbeitet werden.
-
Einem Fachmann wird einleuchten, dass viele Verbesserungen und Abwandlungen an der oben beschriebenen beispielhaften Ausführungsform vorgenommen werden können, ohne von dem Umfang der vorliegenden Erfindung abzuweichen.