DE112012001761T5 - Hochverfügbarkeit von virtuellen Maschinen - Google Patents

Hochverfügbarkeit von virtuellen Maschinen Download PDF

Info

Publication number
DE112012001761T5
DE112012001761T5 DE112012001761.7T DE112012001761T DE112012001761T5 DE 112012001761 T5 DE112012001761 T5 DE 112012001761T5 DE 112012001761 T DE112012001761 T DE 112012001761T DE 112012001761 T5 DE112012001761 T5 DE 112012001761T5
Authority
DE
Germany
Prior art keywords
application
error
virtual machine
recovery
copy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112012001761.7T
Other languages
English (en)
Inventor
Geraint North
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012001761T5 publication Critical patent/DE112012001761T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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 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.

Description

  • 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.

Claims (22)

  1. Verfahren zum Überwachen auf und Wiederherstellen nach Fehlern, aufweisend: Bereitstellen einer virtuellen Maschine mit einer Anwendung, wobei die Anwendung zum Ausführen in der virtuellen Maschine dient; Speichern von Maschinenzustandsinformationen von der sich in Ausführung befindlichen ersten virtuellen Maschine an regelmäßigen Prüfpunkten; Empfangen einer Fehlermeldung von der Anwendung, die einen Anwendungsfehlerzustand an einem Fehlerpunkt der Anwendung enthält; Anhalten der virtuellen Maschine und der Anwendung; Bereitstellen einer ersten Kopie der virtuellen Maschine und der Anwendung, wobei die Kopie der virtuellen Maschine und die Anwendungskopie in der Lage sind, ab einem Prüfpunkt vor dem Unterbrechungsfehlerpunkt ausgeführt zu werden; Senden einer Fehlerunterbrechung an die Anwendungskopie vor Erreichen eines entsprechenden Fehlerpunkts; und Initiieren eines ersten Satzes von einem oder mehreren Wiederherstellungsverfahren durch die erste Anwendungskopie als Reaktion auf die Fehlerunterbrechung, um zu versuchen, einen möglichen bevorstehenden Fehlerpunkt zu umgehen.
  2. Verfahren nach Anspruch 1, wobei das Verfahren die Schritte des Speicherns, Empfangens, Anhaltens für die erste und nachfolgende Kopie von virtuellen Maschinen und Anwendungen mit entsprechenden Fehlern wiederholt und die Schritte des Bereitstellens entsprechender zweiter und nachfolgender Kopien von virtuellen Maschinen und Anwendungen wiederholt und entsprechende Fehlerunterbrechungen sendet.
  3. Verfahren nach Anspruch 1 oder 2, wobei Wiederherstellungsverfahren aufweisen: Abbrechen einer oder mehrerer Transaktionen; Abbrechen eines oder mehrerer Threads; Leeren eines oder mehrerer Cachespeicher; Verwerfen einer oder mehrerer Datenstrukturen; und/oder Auswählen einer sichereren Betriebsart.
  4. Verfahren nach Anspruch 1, 2 oder 3, wobei, wenn der Fehler irgendeiner nachfolgenden Anwendung mit dem einer vorhergehenden Anwendung übereinstimmt, ein Satz von nachfolgenden Wiederherstellungsverfahren für den Fehler aus dem vorhergehenden Satz von Wiederherstellungsverfahren angepasst wird, um die Wahrscheinlichkeit des Vermeidens des Fehlerpunkts zu erhöhen.
  5. Verfahren nach Anspruch 4, wobei der angepasste Satz von Wiederherstellungsverfahren ein Wiederherstellungsverfahren mit einer stärkeren Auswirkung aufweist.
  6. Verfahren nach Anspruch 4, wobei der angepasste Satz von Wiederherstellungsverfahren ein neues Wiederherstellungsverfahren aufweist.
  7. Verfahren nach Anspruch 4, wobei ein neuer Fehler einen Satz von Wiederherstellungsverfahren beruhend auf dem Typ von Fehler wählt.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei das Speichern von Zustandsinformationen das Speichern sämtlicher virtueller Maschinenregister und Arbeitsspeicher aufweist.
  9. Verfahren nach einem der Ansprüche 1 bis 8, ferner aufweisend das Überwachen von Zustandsinformationen von virtuellen Maschinen und/oder Anwendungen auf Fehlerzustände in Echtzeit.
  10. Verfahren nach einem der Ansprüche 1 bis 9, aufweisend das Bereitstellen der virtuellen Maschine und der Anwendung auf einer ersten Plattform und das Bereitstellen der Kopie der virtuellen Maschine und Kopie der Anwendung auf einer zweiten Plattform.
  11. System zum Überwachen auf und Wiederherstellen nach Fehlern, aufweisend: 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 die Anwendungskopie in der Lage sind, ab einem Prüfpunkt vor dem Unterbrechungsfehlerpunkt ausgeführt zu werden; ein Mittel zum Senden einer Fehlerunterbrechung an die Anwendungskopie vor Erreichen eines entsprechenden Fehlerpunkts; und ein Mittel zum Initiieren eines ersten Satzes von einem oder mehreren Wiederherstellungsverfahren durch die erste Anwendungskopie als Reaktion auf die Fehlerunterbrechung, um zu versuchen, einen möglichen bevorstehenden Fehlerpunkt zu umgehen.
  12. System nach Anspruch 11, wobei das System ferner ein Mittel zum Wiederholen der Schritte des Speicherns, Empfangens, Anhaltens für die erste und nachfolgende Kopie von virtuellen Maschinen und Anwendungen mit entsprechenden Fehlern, und ein Mittel zum Wiederholen der Schritte des Bereitstellens entsprechender zweiter und nachfolgender Kopien von virtuellen Maschinen und Anwendungen und zum Senden entsprechender Fehlerunterbrechungen aufweist.
  13. System nach Anspruch 11 oder 12, wobei das Mittel zum Initiieren des ersten Satzes von einem oder mehreren Wiederherstellungsverfahren ein Mittel zum Initiieren eines Mittels für Folgendes aufweist: Abbrechen einer oder mehrerer Transaktionen; Abbrechen eines oder mehrerer Threads; Leeren eines oder mehrerer Cachespeicher; Verwerfen einer oder mehrerer Datenstrukturen; und/oder Auswählen einer sichereren Betriebsart.
  14. System nach Anspruch 11, 12 oder 13, wobei das System ferner infolge des Übereinstimmens des Fehlers irgendeiner nachfolgenden Anwendung mit dem einer vorhergehenden Anwendung ein Anpassungsmittel für einen Satz von nachfolgenden Wiederherstellungsverfahren aufweist, damit der Fehler aus dem vorhergehenden Satz von Wiederherstellungsverfahren angepasst wird, um die Wahrscheinlichkeit des Vermeidens des Fehlerpunkts zu erhöhen.
  15. System nach Anspruch 14, wobei das Anpassungsmittel ferner ein Mittel zum Anpassen des Satzes von Wiederherstellungsverfahren aufweist, der ein Wiederherstellungsverfahren mit einer stärkeren Auswirkung aufweist.
  16. System nach Anspruch 14, wobei das Anpassungsmittel ferner ein Mittel zum Anpassen des Satzes von Wiederherstellungsverfahren aufweist, der ein neues Wiederherstellungsverfahren aufweist.
  17. System nach Anspruch 14, ferner aufweisend ein Mittel für einen neuen Fehler zum Wählen eines Satzes von Wiederherstellungsverfahren beruhend auf dem Fehlertyp.
  18. System nach einem der Ansprüche 11 bis 17, ferner aufweisend ein Mittel zum Speichern von Zustandsinformationen, was das Speichern sämtlicher virtueller Maschinenregister und Arbeitsspeicher aufweist.
  19. System nach einem der Ansprüche 11 bis 18, ferner aufweisend ein Mittel zum Überwachen von Zustandsinformationen von virtuellen Maschinen und/oder Anwendungen auf Fehlerzustände in Echtzeit.
  20. System nach einem der Ansprüche 11 bis 19, ferner aufweisend ein Mittel zum Bereitstellen der virtuellen Maschine und der Anwendung auf einer ersten Plattform und zum Bereitstellen der Kopie der virtuellen Maschine und der Anwendung auf einer zweiten Plattform.
  21. Computerprogrammprodukt zum Überwachen auf und Wiederherstellen nach Fehlern, wobei das Computerprogrammprodukt aufweist: ein durch einen Verarbeitungsschaltkreis lesbares, Computer-lesbares Speichermedium, auf dem Anweisungen zur Ausführung durch den Verarbeitungsschaltkreis zur Durchführung eines Verfahrens nach einem der Ansprüche 1 bis 10 gespeichert sind.
  22. Auf einem durch einen Computer lesbaren Medium gespeichertes Computerprogramm, das in den internen Arbeitsspeicher eines digitalen Computers ladbar ist und Software-Code-Abschnitte zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 10 aufweist, wenn das Programm auf einem Computer ausgeführt wird.
DE112012001761.7T 2011-04-21 2012-04-16 Hochverfügbarkeit von virtuellen Maschinen Pending DE112012001761T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP11163393.3 2011-04-21
EP11163393 2011-04-21
PCT/IB2012/051883 WO2012143844A1 (en) 2011-04-21 2012-04-16 Virtual machine high availability

Publications (1)

Publication Number Publication Date
DE112012001761T5 true DE112012001761T5 (de) 2014-02-06

Family

ID=47041107

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012001761.7T Pending DE112012001761T5 (de) 2011-04-21 2012-04-16 Hochverfügbarkeit von virtuellen Maschinen

Country Status (5)

Country Link
US (1) US9448895B2 (de)
CN (1) CN103493021B (de)
DE (1) DE112012001761T5 (de)
GB (1) GB2506033B (de)
WO (1) WO2012143844A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
DE112012001761T5 (de) * 2011-04-21 2014-02-06 International Business Machines Corp. Hochverfügbarkeit von virtuellen Maschinen
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
CN103412800B (zh) * 2013-08-05 2016-12-28 华为技术有限公司 一种虚拟机热备份方法和设备
US9323553B2 (en) 2013-09-13 2016-04-26 International Business Machines Corporation Reducing virtual machine suspension time in checkpoint system
US9996378B2 (en) * 2013-10-09 2018-06-12 International Business Machines Corporation Managing a check-point based high-availability backup virtual machine
US9584617B2 (en) * 2013-12-31 2017-02-28 Successfactors, Inc. Allocating cache request in distributed cache system based upon cache object and marker identifying mission critical data
US9645879B2 (en) * 2014-02-27 2017-05-09 International Business Machines Corporation Salvaging hardware transactions with instructions
JP5713138B1 (ja) * 2014-09-12 2015-05-07 富士ゼロックス株式会社 仮想計算機システム、プリンタ制御システム、仮想計算機プログラム及びプリンタ制御プログラム
CN106559441B (zh) * 2015-09-25 2020-09-04 华为技术有限公司 一种基于云计算服务的虚拟机监控方法、装置及系统
US10255153B2 (en) 2016-10-21 2019-04-09 Microsoft Technology Licensing, Llc Systematic testing of failover and recovery for distributed system components
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
US20230261929A1 (en) * 2020-06-26 2023-08-17 Telefonaktiebolaget Lm Ericsson (Publ) Controller, a load balancer and methods therein for handling failures or changes of processing elements in a virtual network

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3072048B2 (ja) * 1996-03-19 2000-07-31 株式会社東芝 計算機システムおよび計算機システムのソフトウェア故障回復方法
US6421739B1 (en) * 1999-01-30 2002-07-16 Nortel Networks Limited Fault-tolerant java virtual machine
US6691250B1 (en) * 2000-06-29 2004-02-10 Cisco Technology, Inc. Fault handling process for enabling recovery, diagnosis, and self-testing of computer systems
US7243267B2 (en) * 2002-03-01 2007-07-10 Avaya Technology Llc Automatic failure detection and recovery of applications
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US7467325B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
CN100424650C (zh) 2005-11-30 2008-10-08 许先才 计算机上个人信息应用环境的保存与重现方法及装置
US20100058106A1 (en) 2008-08-27 2010-03-04 Novell, Inc. Virtual machine file system and incremental snapshot using image deltas
CN101833497B (zh) * 2010-03-30 2015-01-21 浪潮电子信息产业股份有限公司 一种基于专家系统方法的计算机故障管理系统
TWI537828B (zh) * 2010-12-21 2016-06-11 萬國商業機器公司 虛擬機管理的方法及其電腦系統之裝置和電腦程式
DE112012001761T5 (de) * 2011-04-21 2014-02-06 International Business Machines Corp. Hochverfügbarkeit von virtuellen Maschinen
US9996378B2 (en) * 2013-10-09 2018-06-12 International Business Machines Corporation Managing a check-point based high-availability backup virtual machine

Also Published As

Publication number Publication date
US20150309883A1 (en) 2015-10-29
WO2012143844A1 (en) 2012-10-26
US9448895B2 (en) 2016-09-20
GB2506033B (en) 2018-11-28
GB2506033A (en) 2014-03-19
GB201320461D0 (en) 2014-01-01
CN103493021A (zh) 2014-01-01
CN103493021B (zh) 2016-06-22

Similar Documents

Publication Publication Date Title
DE112012001761T5 (de) Hochverfügbarkeit von virtuellen Maschinen
US9996378B2 (en) Managing a check-point based high-availability backup virtual machine
DE112011102183B4 (de) Beschleuniger für die Migration virtueller Maschinen
Guo et al. Rex: Replication at the speed of multi-core
Laadan et al. Transparent Checkpoint-Restart of Multiple Processes on Commodity Operating Systems.
DE112012000693B4 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
Minhas et al. Remusdb: Transparent high availability for database systems
DE102015107990A1 (de) Verfahren und Vorrichtung zur dynamischen Knotenreparatur in einer Mehrfachknotenumgebung
DE112011104471T5 (de) Verfahren zur Failover-Verwaltung von virtuellen Maschinen und System zum Unterstützen desselben
CN104570831B (zh) 过程控制系统和方法
DE102012215216A1 (de) Verbesserte Erfassung von Speicherauszugsdaten von Hardwareausfallmodi
DE112012001660T5 (de) Speicher-Checkpointing in einem System gespiegelter virtueller Maschinen
GB2515501A (en) Replication for on-line hot-standby database
DE102020102232A1 (de) Verbessern der diagnostikfähigkeiten von datenverarbeitungssystemen durch kombinieren von variablenpatrouillierungs-api und vergleichsmechanismus von variablen
DE112007001245T5 (de) Fehlererkennung mit redundanten virtuellen Maschinen
DE112016004297T5 (de) Technologien für mehrstufige virtualisierung
DE112015001502T5 (de) Ausstieg aus mehreren Threads in einem Computer
Lorch et al. Tardigrade: Leveraging Lightweight Virtual Machines to Easily and Efficiently Construct {Fault-Tolerant} Services
Yamada et al. Traveling forward in time to newer operating systems using shadowreboot
DE112011104830T5 (de) Ein Verfahren zum Sicherstellen der Programmkorrektheit unter Verwendung von feingranularem spekulativem Hardwareausführen
DE102013022169A1 (de) Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
DE102013022166B4 (de) Seitenzustandsverzeichnis zur verwaltung eines vereinheitlichten virtuellen speichers
Terada et al. Dwarf: Shortening downtime of reboot-based kernel updates
Zhang et al. gha: An efficient and iterative checkpointing mechanism for virtualized gpus
DE102013021996A1 (de) Wiederholung von Speichertransaktionen während der Behandlung von Speicherzugriffsfehlern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence