DE102012215918A1 - Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host - Google Patents

Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host Download PDF

Info

Publication number
DE102012215918A1
DE102012215918A1 DE102012215918A DE102012215918A DE102012215918A1 DE 102012215918 A1 DE102012215918 A1 DE 102012215918A1 DE 102012215918 A DE102012215918 A DE 102012215918A DE 102012215918 A DE102012215918 A DE 102012215918A DE 102012215918 A1 DE102012215918 A1 DE 102012215918A1
Authority
DE
Germany
Prior art keywords
memory
memory pages
memory page
response
virtual machines
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
DE102012215918A
Other languages
English (en)
Inventor
Graham Hunter
James Mulcahy
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 DE102012215918A1 publication Critical patent/DE102012215918A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/1466Management of the backup or restore process to make the backup process non-disruptive
    • 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
    • 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
    • G06F11/2097Error 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 maintaining the standby controller/processing unit updated
    • 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
    • G06F11/202Error 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 where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • 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
    • G06F11/202Error 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 where processing functionality is redundant
    • G06F11/2038Error 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 where processing functionality is redundant with a single idle spare processing component
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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

Abstract

Verfahren, System und Computerprogrammprodukt zum Spiegeln virtueller Maschinen von einem primären Host auf einen sekundären Host. Das Verfahren beinhaltet das Überwachen von Änderungen bei jeder einer Vielzahl von Arbeitsspeicherseiten und jedem einer Vielzahl von Prozessorzuständen einer oder mehrerer virtueller Maschinen des primären Hosts. Als Reaktion auf das Auftreten eines Prüfpunktes werden die virtuellen Maschinen des primären Hosts gestoppt. Es wird eine Ermittlung vorgenommen, ob jede der Arbeitsspeicherseiten häufig geändert wird. Als Reaktion darauf, dass die Arbeitsspeicherseite häufig geändert wird, wird die häufig geänderte Arbeitsspeicherseite als beschreibbar markiert und in einen Puffer kopiert. Als Reaktion darauf, dass die Arbeitsspeicherseite selten geändert wird, wird die selten geänderte Arbeitsspeicherseite als schreibgeschützt markiert. Der Betrieb der einen oder mehreren virtuellen Maschinen des primären Hosts wird wieder aufgenommen. Eine Kopie der Arbeitsspeicherseiten, des Puffers und der Änderungen an den Prozessorzuständen wird auf den sekundären Host übertragen.

Description

  • HINTERGRUND
  • 1. Technisches Gebiet
  • Die vorliegende Erfindung betrifft Computersysteme im Allgemeinen. Insbesondere betrifft die vorliegende Erfindung das Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host.
  • 2. Beschreibung des Stands der Technik
  • Bei Computersystemen für Anwendungen, die eine hohe Verfügbarkeit und hohe Zuverlässigkeit erfordern, werden Sicherungscomputer verwendet, um bei einem Hardwareausfall den kontinuierlichen Betrieb und den Verlust von Dienstfunktionen zu ermöglichen. Daten und Anwendungen werden regelmäßig von einem primären Computer auf einen oder mehrere Sicherungscomputer kopiert. Dieser Kopiervorgang kann auch als Spiegeln des Inhalts des primären Computers auf den Sicherungscomputer bezeichnet werden. In einer Umgebung mit virtuellen Maschinen können auf jedem Computer eine oder mehrere virtuelle Maschinen unter der Kontrolle eines Managers für virtuelle Maschinen oder Hypervisors in Betrieb sein. Jede dieser virtuellen Maschinen erfordert unter Umständen eine Sicherung.
  • KURZDARSTELLUNG
  • Es werden ein Verfahren, ein System und ein Computerprogrammprodukt zum Spiegeln virtueller Maschinen von einem primären Host auf einen sekundären Host offenbart.
  • Das Verfahren beinhaltet das Überwachen von Änderungen bei jeder einer Vielzahl von Arbeitsspeicherseiten einer oder mehrerer virtueller Maschinen des primären Hosts und das Überwachen von Änderungen an einer Vielzahl von Prozessorzuständen bei einer oder mehreren virtuellen Maschinen des primären Hosts. Als Reaktion auf das Auftreten eines Prüfpunktes werden die virtuellen Maschinen des primären Hosts gestoppt. Es wird eine Ermittlung vorgenommen, ob jede der jeweiligen Arbeitsspeicherseiten häufig geändert wird. Als Reaktion darauf, dass die jeweilige Arbeitsspeicherseite häufig geändert wird, wird die häufig geänderte Arbeitsspeicherseite als beschreibbar markiert und in einen Puffer des primären Hosts kopiert. Als Reaktion darauf, dass die jeweilige Arbeitsspeicherseite selten geändert wird, wird die selten geänderte Arbeitsspeicherseite als schreibgeschützt markiert. Der Betrieb der einen oder mehreren virtuellen Maschinen des primären Hosts wird wieder aufgenommen. Eine Kopie der Arbeitsspeicherseiten, des Puffers und der Änderungen an den Prozessorzuständen wird auf den sekundären Host übertragen. Durch das Markieren der häufig geänderten Arbeitsspeicherseiten als beschreibbar und das Kopieren der häufig geänderten Arbeitsspeicherseiten in einen Puffer auf dem primären Host wird das Auftreten von Arbeitsspeicherseiten-Zugriffsfehlern verringert.
  • Der obige Überblick enthält Vereinfachungen, Verallgemeinerungen und Auslassungen von Details und ist nicht als umfassende Beschreibung des beanspruchten Gegenstands beabsichtigt, sondern vielmehr als kurze Übersicht über einige damit zusammenhängende Funktionalitäten gedacht. Weitere Systeme, Verfahren, Funktionalitäten, Merkmale und Vorteile des beanspruchten Gegenstands sind oder werden Fachleuten nach der Auseinandersetzung mit den folgenden Figuren und der folgenden eingehenden Beschreibung klar.
  • Der vorstehende Text sowie weitere Zielsetzungen, Merkmale und Vorteile der vorliegenden Erfindung werden in der folgenden eingehenden Beschreibung deutlich.
  • Bei einem Aspekt betrifft die Erfindung ein Computerprogrammprodukt, aufweisend:
    ein computerlesbares Speichermedium; und
    Programmcode auf dem computerlesbaren Speichermedium, der bei Ausführung in einer Datenverarbeitungseinheit die Funktionalität bereitstellt:
    Überwachen von Änderungen bei jeder einer Vielzahl von Arbeitsspeicherseiten einer oder mehrerer virtueller Maschinen des primären Hosts;
    Überwachen von Änderungen an einer Vielzahl von Prozessorzuständen bei einer oder mehreren virtuellen Maschinen des primären Hosts;
    als Reaktion auf das Auftreten eines Prüfpunktes das Stoppen einer oder primären mehrerer der virtuellen Maschinen des Hosts;
    Ermitteln für die Arbeitsspeicherseiten, ob mindestens eine bestimmte Arbeitsspeicherseite der Vielzahl von Arbeitsspeicherseiten eine häufig geänderte Arbeitsspeicherseite ist;
    als Reaktion darauf, dass mindestens eine bestimmte Arbeitsspeicherseite eine häufig geänderte Arbeitsspeicherseite ist, das Markieren der häufig geänderten Arbeitsspeicherseite als beschreibbar und Kopieren der häufig geänderten Arbeitsspeicherseite in einen Puffer;
    als Reaktion darauf, dass eine Arbeitsspeicherseite selten geändert wird, das Markieren der selten geänderten Arbeitsspeicherseite als schreibgeschützt;
    Wiederaufnehmen des Betriebs der einen oder mehreren virtuellen Maschinen des primären Hosts; und
    Übertragen einer Kopie der Arbeitsspeicherseiten, des Puffers und der Änderungen an den Prozessorzuständen auf den sekundären Host.
  • Gemäß einer Ausführungsform der Erfindung weist das Computerprogrammprodukt ferner Programmcode auf dem computerlesbaren Speichermedium auf, der bei Ausführung in der Datenverarbeitungseinheit die Funktionalität des Verwaltens eines Zählwertes einer Anzahl von Prüfpunktfenstern bereitstellt, in die jede Arbeitsspeicherseite geschrieben wird.
  • Gemäß einer weiteren Ausführungsform der Erfindung weist das Computerprogrammprodukt ferner Programmcode auf dem computerlesbaren Speichermedium auf, der bei Ausführung in der Datenverarbeitungseinheit die Funktionalität bereitstellt, dass als Reaktion darauf, dass der Zählwert einen Schwellenwert überschreitet, die Arbeitsspeicherseiten als häufig geänderte Arbeitsspeicherseiten verarbeitet werden, und als Reaktion darauf, dass der Zählwert unter einen Schwellenwert absinkt, die Arbeitsspeicherseiten als selten geänderte Arbeitsspeicherseiten verarbeitet werden.
  • Gemäß einer weiteren Ausführungsform der Erfindung weist das Computerprogrammprodukt ferner Programmcode auf dem computerlesbaren Speichermedium auf, der bei Ausführung in der Datenverarbeitungseinheit die Funktionalität bereitstellt, dass als Reaktion darauf, dass der Zählwert einen Schwellenwert überschreitet, die Arbeitsspeicherseiten als häufig geänderte Arbeitsspeicherseiten verarbeitet werden, und als Reaktion darauf, dass der Zählwert unter einen Schwellenwert absinkt, die Arbeitsspeicherseiten als selten geänderte Arbeitsspeicherseiten verarbeitet werden.
  • Gemäß einer weiteren Ausführungsform der Erfindung weist das Computerprogrammprodukt ferner Programmcode auf dem computerlesbaren Speichermedium auf, der bei Ausführung in der Datenverarbeitungseinheit die Funktionalität bereitstellt, dass als Reaktion darauf, dass der Zählwert unter den Schwellenwert absinkt, die betreffende häufig geänderte Arbeitsspeicherseite aus dem Puffer entfernt wird.
  • Gemäß einer weiteren Ausführungsform der Erfindung weist das Computerprogrammprodukt ferner Programmcode auf dem computerlesbaren Speichermedium auf, der bei Ausführung in der Datenverarbeitungseinheit die Funktionalität des Bestätigens bereitstellt, dass die Kopie der Arbeitsspeicherseiten, des Puffers und der Prozessorzustände durch den sekundären Host empfangen wurde.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Beschreibung der veranschaulichenden Ausführungsformen ist in Verbindung mit den beigefügten Zeichnungen zu lesen, wobei:
  • 1 ein Blockschaltbild eines beispielhaften Datenverarbeitungssystems wiedergibt, in dem eine oder mehrere der beschriebenen Ausführungsformen praktisch umgesetzt sind;
  • 2 ein Blockschaltbild mit virtuellen Maschinen veranschaulicht, die gemäß einer Ausführungsform auf Datenverarbeitungssystemen des primären und des sekundären Hosts betrieben werden;
  • 3 ein Blockschaltbild der Funktionsmodule und Komponenten veranschaulicht, die gemäß einer Ausführungsform beim Spiegeln virtueller Maschinen verwendet werden.
  • 4 (A und B) einen Ablaufplan der Prozesse zum Spiegeln virtueller Maschinen von einem primären Host auf einen sekundären Host gemäß einer Ausführungsform veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Die veranschaulichenden Ausführungsformen stellen ein Verfahren, ein System und ein Computerprogrammprodukt zum Spiegeln virtueller Maschinen von einem primären Host auf einen sekundären Host bereit. Änderungen an Arbeitsspeicherseiten einer oder mehrerer virtueller Maschinen des primären Hosts und an Prozessorzuständen werden überwacht. Beim Auftreten eines Prüfpunktes werden die virtuellen Maschinen des primären Hosts gestoppt. Zu jeder der Arbeitsspeicherseiten wird ermittelt, ob die Arbeitsspeicherseiten häufig geändert werden. Wenn die Arbeitsspeicherseiten häufig geändert werden, werden die häufig geänderten Arbeitsspeicherseiten als beschreibbar markiert und in einen Puffer im primären Host kopiert. Wenn die Arbeitsspeicherseiten selten geändert werden, werden die selten geänderten Arbeitsspeicherseiten als schreibgeschützt markiert. Der Betrieb der virtuellen Maschinen des primären Hosts wird wieder aufgenommen. Die selten geänderten Arbeitsspeicherseiten zusammen mit den Prozessorzuständen und der Puffer mit den häufig geänderten Arbeitsspeicherseiten werden im Hintergrund auf den sekundären Host kopiert. Durch das Markieren der häufig geänderten Arbeitsspeicherseiten als beschreibbar und das Kopieren der häufig geänderten Arbeitsspeicherseiten in einen Puffer wird das Auftreten von Arbeitsspeicherseiten-Zugriffsfehlern verringert.
  • In der folgenden eingehenden Beschreibung beispielhafter Ausführungsformen der Erfindung werden bestimmte beispielhafte Ausführurgsformen, in denen die Erfindung praktisch umgesetzt werden kann, so eingehend beschrieben, dass Fachleute die Erfindung praktisch umsetzen können, und es versteht sich, dass andere Ausführungsformen genutzt werden können und dass logische, architektonische, programmtechnische, mechanische, elektrische oder andere Änderungen vorgenommen werden können, ohne dass vom Gedanken oder Schutzbereich der vorliegenden Erfindung abgewichen wird. Die folgende eingehende Beschreibung ist daher nicht in einschränkendem Sinne zu verstehen, und der Schutzbereich der vorliegenden Erfindung ist durch die beigefügten Ansprüche und deren Äquivalente definiert.
  • Es versteht sich, dass die Verwendung von bestimmten Komponenten-, Einheiten- und/oder Parameternamen (z. B. der Namen der hier beschriebenen Ausführungsprogramme bzw. Ausführungslogik) nur als Beispiel dient und nicht als Einschränkung der Erfindung gedacht ist. Die Erfindung kann daher ohne Einschränkung unter Verwendung einer anderen Nomenklatur bzw. Terminologie realisiert werden, als sie im vorliegenden Dokument zur Beschreibung der Komponenten/Einheiten/Parameter verwendet wird. Jeder der im vorliegenden Dokument verwendeten Begriffe ist im jeweiligen Kontext, in dem er verwendet wird, im breitesten Sinne zu verstehen.
  • Unter Bezugnahme auf die Figuren, wobei mit 1 begonnen wird, ist in dieser Figur ein Blockschaltbild eines beispielhaften Datenverarbeitungssystems (Data Processing System, DPS) bildlich dargestellt, das bei einer Ausführungsform verwendet wird. Das Datenverarbeitungssystem weist laut Beschreibung Merkmale auf, die bei einem Server-Computer üblich sind. In dem im vorliegenden Dokument verwendeten Sinne schließt der Begriff „Datenverarbeitungssystem” jedoch jede beliebige Art von Datenverarbeitungseinheit oder Datenverarbeitungsmaschine ein, die ein Softwareprodukt aufnehmen, speichern und ausführen kann, wobei hierzu nicht nur Computersysteme gehören, sondern auch Einheiten wie z. B. Datenübertragungseinheiten (z. B. Router, Switches, Pager, Telefone, elektronische Bücher, elektronische Magazine und elektronische Zeitungen usw.) sowie persönliche Einheiten und Einheiten aus der Heimelektronik (z. B. Handcomputer, internetfähige Fernsehgeräte, Automatisierungssysteme für den Heimbereich, Multimedia-Wiedergabesysteme usw.).
  • 1 und die folgende Erörterung sollen eine kurze und allgemeine Beschreibung eines beispielhaften Datenverarbeitungssystems geben, das zur Realisierung der beschriebenen Ausführungsformen geeignet ist. Obwohl Ausführungsformen im allgemeinen Kontext von Anweisungen beschrieben werden, die sich auf Hardware in einem Server-Computer befinden, wird Fachleuten klar sein, dass Ausführungsformen in einer Kombinationen von Programmmodulen realisiert sein können, die auf einem Betriebssystem ausgeführt werden. Programmmodule enthalten im Allgemeinen Routinen, Programme, Komponenten und Datenstrukturen, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Die Erfindung kann außerdem in verteilten Datenverarbeitungsumgebungen praktisch umgesetzt werden, in denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. Bei einer verteilten Datenverarbeitungsumgebung können sich Programmmodule sowohl auf lokal als auch auf entfernt angeordneten Arbeitsspeichereinheiten befinden.
  • Ein primärer Host wie z. B. das DPS 100 kann eine oder mehrere Verarbeitungseinheiten 122 und 124, einen Systemarbeitsspeicher 126, der mit einer Arbeitsspeicher-Steuereinheit 128 verbunden ist, und eine Systemverbindungsstruktur 130 enthalten, die die Arbeitsspeicher-Steuereinheit 128 mit der Verarbeitungseinheit bzw. den Verarbeitungseinheiten 122 und 124 und mit anderen Komponenten des DPS 100 des primären Hosts verbindet. Die Verbindungsstruktur 130 bei einer Ausführungsform kann ein Adress- und Datenbus sein. Befehle auf der Systemverbindungsstruktur 130 werden unter der Steuerung des Bus-Arbiters 132 an verschiedene Systemkomponenten übertragen.
  • Das DPS 100 des primären Hosts kann ferner zur schnellen Speicherung häufig verwendeter Daten den Cachespeicher 123 und 125 enthalten. Der Cachespeicher 123 kann mit dem Prozessor 122 verbunden oder zu Datenübertragungszwecken an diesen angeschlossen sein. Obwohl die Cachespeicher 123 und 125 als mit den Prozessoren 122 und 124 wirkverbunden gezeigt sind, können Cachespeicher 123 und 125 auch als Teil des Systemarbeitsspeichers 126 wirken.
  • Das DPS 100 des primären Hosts enthält ferner computerlesbare Speichermedien wie z. B. ein oder mehrere Festplattenlaufwerke 134 und eine oder mehrere Benutzerschnittstelleneinheiten 138. Die Plattenlaufwerke 134 und die Benutzerschnittstelleneinheiten 138 können zu Datenübertragungszwecken über eine Eingangs-/Ausgangsschnittstelle 136 (E/A-Schnittstelle) mit der Systemverbindungsstruktur 130 verbunden sein. Die Plattenlaufwerke 134 stellen dem DPS 100 des primären Hosts nichtflüchtigen Speicher bereit. Die Benutzerschnittstelleneinheiten 138 ermöglichen einem Benutzer, dem DPS 100 des primären Hosts Eingaben bereitzustellen und Ausgabewerte von diesem zu erhalten. Beispielsweise können zu Benutzerschnittstelleneinheiten 138 Eingabeeinheiten, Tastaturen und Zeigeeinheiten wie z. B. eine Maus gehören. Obwohl sich die Beschreibung von oben aufgeführten computerlesbaren Speichermedien auf eine Festplatte bezieht, dürfte Fachleuten klar sein, dass andere Arten von Medien, die von einem Computer gelesen werden können, ebenfalls in der beispielhaften Computerbetriebsumgebung verwendet werden können, z. B. austauschbare Magnetplatten, CD-ROM-Platten, Magnetkassetten, Flash-Speicherkarten, Digital-Videoplatten, Bernoulli-Kassetten und weitere, später entwickelte Hardware.
  • Das DPS 100 des primären Hosts kann unter Verwendung einer oder mehrerer logischer Verbindungen zu einem oder mehreren entfernt angeordneten Computern oder Hosts wie z. B. dem sekundären Host 102 in einer vernetzten Umgebung arbeiten. Beim sekundären Host 102 kann es sich um einen Computer, einen Server, einen Router oder eine Peer-Einheit (gleichberechtigte Partnereinheit) handeln, wobei der Host normalerweise viele oder alle der im Zusammenhang mit dem DPS 100 des primären Hosts beschriebenen Elemente enthält. Bei einer vernetzten Umgebung können vom DPS 100 des primären Hosts genutzte Programmmodule oder Teile davon in einer entfernt angeordneten Arbeitsspeichereinheit (nicht gezeigt) gespeichert sein. Zu den in 1 abgebildeten logischen Verbindungen können Verbindungen über ein Netzwerk 140 gehören. Bei einer Ausführungsform kann es sich bei dem Netzwerk 140 um ein lokales Netzwerk (LAN) handeln. Bei alternativen Ausführungsformen kann das Netzwerk 140 ein Weitverkehrsnetzwerk (WAN) aufweisen. Das DPS 100 des primären Hosts ist über eine Eingabe-/Ausgangsschnittstelle wie z. B. eine Netzwerkschnittstelle 142 mit dem Netzwerk 140 verbunden. Es versteht sich, dass es sich bei den gezeigten Netzwerkverbindungen um beispielhafte Netzwerkverbindungen handelt und andere Mittel zum Einrichten einer Datenübertragungsverbindung zwischen den Computern verwendet werden können.
  • 2 veranschaulicht mehrere virtuelle Maschinen, die gemäß einer Ausführungsform in einem logisch partitionierten (abgeteilten) System auf dem Datenverarbeitungssystem eines primären und eines sekundären Hosts betrieben werden. Das DPS 100 des primären Hosts enthält mehrere virtuelle Maschinen oder logische Partitionen (LPAR) wie z. B. LPAR1 202 und LPAR2 204. Obwohl zwei virtuelle Maschinen oder logische Partitionen veranschaulicht sind, können im DPS 100 viele weitere virtuelle Maschinen oder logische Partitionen verwendet werden. Jede der logischen Partitionen LPAR1 202 und LPAR2 204 weist einen Teilbereich der Datenverarbeitungsfunktionen oder Datenverarbeitungsressourcen des DPS 100 des primären Hosts auf.
  • Jede LPAR, wie die beispielhafte LPAR1 202, weist eine virtuelle zentrale Verarbeitungseinheit (CPU) oder einen virtuellen Prozessor 206, virtuellen Arbeitsspeicher 208, virtuelle Firmware 210 und virtuellen Speicher 212 auf. Die LPAR1 202 enthält ferner Funktionsmodule oder Softwaremodule wie z. B. das virtuelle Betriebssystem (BS) 216 und Anwendungssoftware 214. Die Anwendungssoftware 214 wird durch den Prozessor 206 in der logischen Partition LPAR1 202 ausgeführt. Die LPAR1 202 und die LPAR2 204 arbeiten unter der Steuerung des Hypervisors 220. Jede LPAR kann mit dem Hypervisor 220 Daten austauschen, und alle LPAR können über den Hypervisor 220 untereinander Daten austauschen. Der Hypervisor 220 verwaltet das Zusammenwirken der logischen Partitionen LPAR1 202 und LPAR2 204 und ordnet diesen logischen Partitionen Ressourcen zu, z. B. Prozessorressourcen wie den virtuellen Prozessor 206. Der Hypervisor 220 steuert den Betrieb von LPAR1 202 und LPAR2 204, indem er die gleichzeitige Ausführung mehrerer nicht abgeänderter Betriebssysteme auf dem DPS 100 des primären Hosts ermöglicht, und sorgt für ein gewisses Maß an Robustheit und Stabilität des Systems. Jedes Betriebssystem im Hypervisor arbeitet unabhängig von den anderen, sodass die anderen Betriebssysteme bei Ausfall eines Betriebssystems ohne Unterbrechung weiterarbeiten können.
  • Das DPS 100 des primären Hosts enthält ferner Hardware 230, auf der die logischen Partitionen LPAR1 202 und LPAR2 204 realisiert sind. Die Hardware 230 weist eine(n) oder mehrere Verarbeitungseinheiten oder Prozessoren 240, Cachespeicher 232, einen oder mehrere Arbeitsspeicher 234, eine oder mehrere Speichereinheiten 236 wie z. B. eine Festplatte, einen oder mehrere Eingabe-/Ausgabeadapter 238 und eine oder mehrere Netzwerkschnittstellen 242 auf. Der Hypervisor 220 steht mit der Hardware 230 in Verbindung. Der Hypervisor 220 ermöglicht, dass mehrere Betriebssysteme und Anwendungen gemeinsam einen einzigen Hardware-Host nutzen. Der Hypervisor 220 steuert den Betrieb der Hardware 230 einschließlich des Prozessors 240 und anderer Systemressourcen, indem er jeder logischen Partition Ressourcen zuordnet.
  • Ebenso kann der sekundäre Host 102 mehrere virtuelle Maschinen oder logische Partitionen (LPAR) wie z. B. LPAR3 252 und LPAR4 254 enthalten. Obwohl zwei logische Partitionen veranschaulicht sind, können im sekundären Host 102 viele weitere logische Partitionen verwendet werden. Jede der logischen Partitionen LPAR3 252 und LPAR4 254 bildet einen Teilbereich von Ressourcen des sekundären Hosts 102.
  • Jede LPAR, wie z. B. die LPAR3 252, weist einen virtuellen Prozessor 256, virtuellen Arbeitsspeicher 258, virtuelle Firmware 260 und virtuellen Speicher 262 auf. Die LPAR3 252 enthält ferner Funktionsmodule oder Softwaremodule wie z. B. das virtuelle Betriebssystem (BS) 266 und Anwendungssoftware 264. Die Anwendungssoftware 264 wird in der logischen Partition LPAR3 252 ausgeführt. Die LPAR3 252 und die LPAR4 254 arbeiten unter der Steuerung des Hypervisors 270. Alle LPAR können untereinander und mit dem Hypervisor 270 Daten austauschen. Der Hypervisor 270 verwaltet das Zusammenwirken der logischen Partitionen LPAR3 252 und LPAR4 254 und ordnet diesen logischen Partitionen virtuelle Prozessoren wie z. B. den virtuellen Prozessor 256 zu. Der Hypervisor 270 steuert den Betrieb von LPAR3 252 und LPAR4 254, ermöglicht die gleichzeitige Ausführung mehrerer nicht abgeänderter Betriebssysteme auf dem sekundären Host 102 und sorgt für ein gewisses Maß an Robustheit und Stabilität des Systems. Jedes Betriebssystem im Hypervisor arbeitet unabhängig von den anderen, sodass die anderen Betriebssysteme bei Ausfall eines Betriebssystems ohne Unterbrechung weiterarbeiten können.
  • Der sekundäre Host 102 enthält ferner Hardware 280, auf der die logischen Partitionen LPAR3 252 und LPAR4 254 realisiert sind. Die Hardware 280 weist eine Verarbeitungseinheit oder einen Prozessor 290, Cachespeicher 282, Arbeitsspeicher 284, Speicher 286 wie z. B. ein Festplattenlaufwerk, einen Eingabe-/Ausgabeadapter 288 und eine Netzwerkschnittstelle 292 auf. Der Hypervisor 270 steht mit der Hardware 280 in Verbindung. Der Hypervisor 270 ermöglicht, dass mehrere Betriebssysteme und Anwendungen gemeinsam einen einzigen Hardware-Host nutzen. Der Hypervisor 270 steuert den Betrieb der Hardware 280 einschließlich des Prozessors 290 und anderer Systemressourcen, indem er jeder logischen Partition Ressourcen zuordnet. Das Netzwerk 140 stellt die Datenübertragung zwischen dem DPS 100 des primären Hosts und dem sekundären Host 102 bereit. Das Netzwerk 140 ermöglicht den Datenaustausch zwischen dem Hypervisor 220 und dem Hypervisor 270 und die Übertragung von Daten und Betriebsparametern vom DPS 100 des primären Hosts auf den sekundären Host 102.
  • Fachleuten mit durchschnittlichen Kenntnissen wird klar sein, dass die in 1 und 2 abgebildeten Hardwarekomponenten und die abgebildete Grundkonfiguration variieren können. Die veranschaulichenden Komponenten im DPS 100 des primären Hosts und im sekundären Host 102 sind nicht als vollständig anzusehen, sondern dienen vielmehr der Hervorhebung wesentlicher Komponenten, die zur Realisierung der vorliegenden Erfindung genutzt werden. Beispielsweise können zusätzlich zur abgebildeten Hardware oder an deren Stelle andere Einheiten/Komponenten verwendet werden. Das abgebildete Beispiel ist nicht als architektonische oder anderweitige Einschränkung in Bezug auf die gegenwärtig beschriebenen Ausführungsformen und/oder auf die allgemeine Erfindung gedacht. Bei dem in 1 und 2 abgebildeten Datenverarbeitungssystem kann es sich z. B. um ein System des Typs IBM eServer pSeries, ein Produkt der International Business Machines Corporation in Armonk, N. Y., USA, handeln, das auf dem Betriebssystem Advanced Interactive Executive (AIX) (Marke der IBM Corporation) oder LINUX (Marke von Linus Torvalds) ausgeführt wird.
  • 3 veranschaulicht Funktionsmodule und Komponenten, die zum Spiegeln oder Kopieren des DPS 100 des primären Hosts auf den sekundären Host 102 verwendet werden. Bei der Erörterung von 3 wird außerdem auf Elemente Bezug genommen, die bei 1 und 2 beschrieben wurden. Das DPS 100 des primären Hosts enthält den Hypervisor 220, der das Zusammenwirken mehrerer virtueller Maschinen oder logischer Partitionen steuert und verwaltet, z. B. von LPAR1 202 und LPAR2 204, und deren Ressourcen zuordnet. Der Hypervisor 220 steht in Verbindung mit dem virtuellen Arbeitsspeicher 208, dem virtuellen Cachespeicher 312 und dem Puffer 328 und steuert deren Betrieb. Der virtuelle Arbeitsspeicher 208 speichert Daten und Softwareprogramme, die auf dem virtuellen Prozessor 206 ausgeführt werden. Der virtuelle Arbeitsspeicher 208 speichert Arbeitsspeicherseiten 304, die Prüfsumme 306 und die Spiegelungssoftware 308. Der virtuelle Arbeitsspeicher 208 kann ferner einen Cachespeicher 312 enthalten, in dem ein Zählwert 310 gespeichert wird, der die Häufigkeit oder Anzahl angibt, wie oft eine Arbeitsspeicherseite geändert oder wie oft auf die Arbeitsspeicherseite geschrieben wurde. Der Zählwert 310 wird für jede Arbeitsspeicherseite erzeugt oder verwaltet. Entsprechend der Verwendung in diesem Kontext kann der Puffer 328 ein separater Arbeitsspeicherplatz sein, der der Steuerung durch den Hypervisor 220 unterliegt. Im Puffer 328 werden häufig geänderte Arbeitsspeicherseiten 330 (die auch als zum Senden gepufferte Arbeitsspeicherseiten bezeichnet werden) und Prozessorzustände 302 gespeichert.
  • Der sekundäre Host 102 enthält den Hypervisor 270, der das Zusammenwirken mehrerer gespiegelter oder kopierter logischer Partitionen steuert und verwaltet, z. B. von LPAR3 252 und der gespiegelten LPAR4 254, und deren Ressourcen zuordnet. Der Hypervisor 270 steht in Verbindung mit dem gespiegelten virtuellen Arbeitsspeicher 258 und steuert dessen Betrieb. Der gespiegelte virtuelle Arbeitsspeicher 258 speichert eine Kopie der Daten und Softwareprogramme aus dem virtuellen Arbeitsspeicher 208. Die Daten und Softwareprogramme des gespiegelten virtuellen Arbeitsspeichers 258 werden auf dem virtuellen Prozessor 256 ausgeführt. Der gespiegelte virtuelle Arbeitsspeicher 258 speichert gespiegelte Prozessorzustände 322, gespiegelte Arbeitsspeicherseiten 324 und die Spiegelungssoftware 326.
  • Das Netzwerk 140 stellt die Datenübertragung zwischen dem DPS 100 des primären Hosts und dem sekundären Host 102 bereit. Das Netzwerk 140 ermöglicht den Datenaustausch zwischen dem Hypervisor 220 und dem Hypervisor 270 und die Übertragung von Arbeitsspeicherseiten und Prozessorzuständen.
  • Bei einer Ausführungsform kann das DPS 100 des primären Hosts regelmäßig eine oder mehrere der virtuellen Maschinen LPAR1 202 und LPAR2 204 einschließlich des Inhalts von Arbeitsspeicherseiten 304 und Prozessorzuständen 302 auf den sekundären Host 102 kopieren oder spiegeln. Beispielsweise kann das DPS 100 des primären Hosts den Inhalt des virtuellen Arbeitsspeichers 208 bei einem alle n Millisekunden auftretenden Prüfpunkt auf den sekundären Host 102 kopieren oder spiegeln, wobei n ein beliebiger ausgewählter Auslegungsparameter wie z. B. 25 Millisekunden ist. Die virtuellen Maschinen LPAR3 252 und LPAR4 254 sind Kopien oder Nachbildungen von LPAR1 202 bzw. LPAR2 204. Die gespiegelten virtuellen Maschinen LPAR3 252 und LPAR4 254 sind mit exakt denselben Hardware- und Betriebssystemressourcen wie die virtuellen Maschinen LPAR1 202 und LPAR2 204 ausgestattet.
  • Der gespiegelte Arbeitsspeicher 258 ermöglicht dem sekundären Host 102 die Fortsetzung normaler Datenverarbeitungsoperationen ohne den Verlust von Dienstfunktionen, falls am DPS 100 des primären Hosts eine Störung der Hardware 230 oder an einer der virtuellen Maschinen LPAR1 202 und LPAR2 204 auftritt. Wenn der Hypervisor 270 des sekundären Hosts 102 feststellt, dass das DPS 100 des primären Hosts nicht reagiert, oder vom DPS 100 des primären Hosts eine definitive Störungsbenachrichtigung empfängt, startet der Hypervisor 270 des sekundären Hosts 102 die gespiegelte Version von virtuellen Maschinen, die gespiegelte LPAR3 252 und die gespiegelte LPAR4 254. Die gespiegelte Version virtueller Maschinen, die gespiegelte LPAR3 252 und die gespiegelte LPAR4 254 nehmen nach einer Störung im DPS 100 des primären Hosts die normalen Datenverarbeitungsoperationen wieder auf bzw. setzen diese fort.
  • Einer der Engpässe bzw. eine der Beschränkungen der Leistungsfähigkeit beim Prozess des Spiegelns des DPS 100 des primären Hosts auf den sekundären Host 102 ist die Geschwindigkeit, mit der Seiten des geänderten Arbeitsspeichers während der Ausführung vom DPS 100 des primären Hosts auf den sekundären Host 102 übertragen werden. Der von der LPAR1 202 verwendete Arbeitsspeicher kann nach jedem Prüfpunkt als schreibgeschützt markiert werden. Ein Arbeitsspeicherseiten-Zugriffsfehler kann auftreten, wenn die LPAR1 202 versucht, auf eine schreibgeschützte Arbeitsspeicherseite 304 zuzugreifen.
  • Die auf einem primären Computer ausgeführte virtuelle Maschine kann regelmäßig wiederkehrend gestoppt und der Inhalt der virtuellen Maschine an den Sicherungscomputer gesendet werden. Unter Berücksichtigung der Tatsache, dass das regelmäßige Kopieren oder Spiegeln des Inhalts des primären Computers auf den Sicherungscomputer einen Leistungsrückgang oder einen Engpass verursachen kann, erhöhen die beschriebenen Ausführungsformen während der Kopier- und Übertragungsoperationen die Effizienz von Systemressourcen erheblich.
  • 4A und 4B veranschaulichen einen Ablaufplan eines beispielhaften Prozesses zum Verringern von Arbeitsspeicherseitenfehlern bei einer virtuellen Maschine gemäß einer veranschaulichenden Ausführungsform. Bei der Erörterung der 4A und 4B wird außerdem auf Elemente Bezug genommen, die bei 1, 2 und 3 beschrieben wurden. Das mittels Computer realisierte Verfahren 400 kann im DPS 100 des primären Hosts in Verbindung mit dem sekundären Host 102 und dem Netzwerk 140 realisiert sein. Bei einer Ausführungsform kann das mittels Computer realisierte Verfahren 400 die Leistung eines primären Host-Computers wie z. B. des DPS 100 erhöhen, der seine Inhalte bei einer Reihe wiederkehrender Prüfpunkte regelmäßig auf einen oder mehrere redundante sekundäre Host-Computer wie z. B. auf den sekundären Host 102 kopiert oder spiegelt.
  • Der Hypervisor 220 initialisiert oder startet den Betrieb des DPS 100 des primären Hosts einschließlich des Initialisierens der Spiegelungssoftware 308, des Setzens der Prüfsumme 306 auf null und des Setzens des Zählwertes 310 auf null (402). Gleichzeitig initialisiert oder startet der Hypervisor 270 den Betrieb des sekundären Hosts 102, wozu das Initialisieren der Software 326 gehört (402).
  • Der Hypervisor 220 überwacht Änderungen am Arbeitsspeicher und an den Prozessorzuständen, die auf dem DPS 100 des primären Hosts ausgeführt werden (404). Hierzu können Änderungen an der CPU 206 und am Arbeitsspeicher 208 in der logischen Partition LPAR1 202 und beliebige Änderungen an weiteren logischen Partitionen wie z. B. der LPAR2 204 gehören.
  • Der Hypervisor 220 verwaltet oder erzeugt einen Zählwert der Anzahl aufeinanderfolgender Prüfpunktfenster, in die eine Arbeitsspeicherseite geschrieben wurde (406). Der Zählwert gibt die Anzahl aufeinanderfolgender Prüfpunktfenster (d. h. den Zeitraum zwischen aufeinanderfolgenden Prüfpunkten) an, innerhalb dessen eine einzelne Arbeitsspeicherseite während der Verarbeitung in die Prüfpunktfenster geschrieben oder verfälscht wird. Der Zählwert wird für jede Arbeitsspeicherseite verwaltet. Für einen schnellen Zugriff kann der Zählwert im Cachespeicher 312 gespeichert werden. Der Zählwert wird im Cachespeicher 312 auf einen Teil der Arbeitsspeicheradressen Hash-codiert. Bei der Hash-Codierung wird eine Hash-Funktion oder eine mathematische Funktion verwendet, um eine große Datenmenge mit möglicherweise unterschiedlicher Größe in ein kleines Bezugselement, normalerweise in eine einzelne Ganzzahl, umzuwandeln, das als Index für ein Array dienen kann. Das kleine Bezugselement wird an die Arbeitsspeicheradresse angehängt.
  • Der Hypervisor 220 führt eine Prüfung durch, um festzustellen, ob ein Prüfpunkt aufgetreten ist (408). Hier wird der Begriff Prüfpunkt zur Bezeichnung eines in regelmäßigen Abständen wiederkehrenden Punktes verwendet, bei dem die virtuellen Maschinen des primären Hosts auf virtuelle Maschinen des sekundären Hosts gespiegelt werden. Bei einer Ausführungsform kann der Prüfpunkt alle 25 Millisekunden auftreten. Die Zählung kann bei jedem Prüfpunkt beginnen oder über eine Reihe aufeinanderfolgender Prüfpunkt hinweg vorgenommen werden.
  • Bei den überwachten Änderungen (404) kann es sich um Änderungen an Arbeitsspeicherseiten und Prozessorzuständen handeln, die zwischen zwei aufeinanderfolgenden Prüfpunkten auftreten. Eine Seite oder Arbeitsspeicherseite ist definiert als ein fortlaufender Block real vorhandenen oder virtuellen Arbeitsspeichers mit einer festen Länge, bei dem es sich um die kleinste Dateneinheit für die Arbeitsspeicherzuordnung handelt, die das Betriebssystem für ein Programm oder für eine Übertragung zwischen Systemarbeitsspeicher oder Cachespeicher und einer beliebigen anderen Einheit, wie z. B. einem sekundären Host, durchführt. Eine Arbeitsspeicherseite kann in Teilen oder Größen von 4 K oder in anderen Größen zugeordnet werden. Ein Prozessorzustand bezeichnet den Betriebszustand des Prozessors. Beispielsweise kann sich ein Prozessor in einem Betriebszustand, in einem Haltezustand oder in einem Ruhezustand befinden.
  • Wenn ein Prüfpunkt aufgetreten ist, stoppt der Hypervisor 220 die virtuelle(n) Maschine(n), die auf dem DPS 100 des primären Hosts ausgeführt werden (410). Falls kein Prüfpunkt auftrat, kehrt das Verfahren 400 zu Schritt 404 zurück.
  • Der Hypervisor 220 ermittelt zu jeder Arbeitsspeicherseite, ob die Arbeitsspeicherseite häufig geändert wird bzw. ob häufig auf die Seite geschrieben wird (412). Der Hypervisor 220 führt den Schritt 412 aus, indem er eine Prüfung durchführt, um festzustellen, ob der Zählwert über einen Schwellenwert für jede Arbeitsspeicherseite angestiegen ist oder diesen Schwellenwert überschritten hat. Bei einer Ausführungsform kann der Schwellenwert vorgegeben sein. Bei einer anderen Ausführungsform kann sich der Schwellenwert je nach Systemauslastung und Leistungsfaktoren ändern oder verändert werden.
  • Wenn der Zählwert in Schritt 412 den Schwellenwert nicht überschreitet, markiert der Hypervisor 220 die Arbeitsspeicherseite(n) als schreibgeschützt (414), die unter dem Schwellenwert liegen. Der Hypervisor 220 nimmt anschließend den Betrieb der virtuellen Maschine(n) wieder auf, die auf dem DPS 100 des primären Hosts ausgeführt wird bzw. werden (415). Der Hypervisor 220 erfasst die Änderungen der Arbeitsspeicherseiten und die Änderungen an den Prozessorzuständen des DPS 100 des primären Hosts und überträgt eine Kopie der Änderungen der Arbeitsspeicherseiten und der Änderungen an den Prozessorzuständen über das Netzwerk 140 an den sekundären Host 102 (416). Der Übertragungsvorgang findet im Hintergrund statt. Der Hypervisor 270 des sekundären Hosts 102 bestätigt oder quittiert dem Hypervisor 220 den Empfang der Arbeitsspeicher- und Prozessorzustandsänderungen in Form eines Hintergrundvorgangs (418). Die Vorgänge der Schritte 416 und 418 finden im Hintergrund zu derselben Zeit statt, zu der die virtuelle(n) Maschine(n) auf dem DPS 100 des primären Hosts ausgeführt werden.
  • Nachdem der Hypervisor 220 den Betrieb der virtuellen Maschine bzw. virtueller Maschinen auf dem DPS 100 des primären Hosts wieder aufnimmt (415), führt das Verfahren 400 eine Prüfung durch, um festzustellen, ob ein Arbeitsspeicherseiten-Zugriffsfehler aufgetreten ist, wenn der Hypervisor 220 auf eine Arbeitsspeicherseite zu schreiben versucht, die im DPS 100 des primären Hosts als schreibgeschützt markiert ist (420). Da die Arbeitsspeicherseite als schreibgeschützt markiert ist, führt jegliche versuchte Schreiboperation auf den schreibgeschützten Arbeitsspeicheradressen zu einem Arbeitsspeicherseiten-Zugriffsfehler. Wenn ein Programm versucht, auf einen Speicherplatz in einer derartigen Arbeitsspeicherseite zuzugreifen, wird ein Ausnahmefehler erzeugt, der als Arbeitsspeicherseiten-Zugriffsfehler bezeichnet wird. Wenn in Schritt 420 kein Arbeitsspeicherseiten-Zugriffsfehler aufgetreten ist, kehrt das Verfahren 400 zu Schritt 404 zurück, in dem der Hypervisor 220 die Arbeitsspeicher- und Prozessorzustandsänderungen des DPS 100 des primären Hosts überwacht.
  • Wenn in Schritt 420 ein Arbeitsspeicherseiten-Zugriffsfehler aufgetreten ist, überträgt der Hypervisor 220 die Arbeitsspeicherseite an den sekundären Host 102 und wartet auf den Empfang einer Bestätigung vom sekundären Host 102, dass der Kopiervorgang der Arbeitsspeicherseite abgeschlossen ist (430). Bei allen Arbeitsspeicherseiten, die während des vorhergehenden Prüfpunktes geändert wurden, wird die Arbeitsspeicherseite unverzüglich übertragen. Arbeitsspeicherseiten mit neuen Änderungen oder Modifikationen werden beim nächsten auftretenden Prüfpunkt übertragen. Bei einer alternativen Ausführungsform kann der Schritt 430 dadurch ersetzt werden, dass der Hypervisor 220 die Arbeitsspeicherseite in einen sekundären Puffer im Hardware-Arbeitsspeicher 234 kopiert, auf den die virtuelle(n) Maschine(n) LPAR1 202 nicht zugreifen kann bzw. können. In Schritt 432 entfernt der Hypervisor 220 den Schreibschutz oder den Schreibschutzstatus der Arbeitsspeicherseite, sodass die Arbeitsspeicherseite keinen weiteren Arbeitsspeicherseitenfehler verursacht. Das Verfahren 400 kehrt anschließend zu Schritt 404 zurück, in dem der Hypervisor 220 die Änderungen am Arbeitsspeicher und an den Prozessorzuständen des DPS 100 des primären Hosts überwacht.
  • Wenn der Zählwert in Schritt 412 den Schwellenwert überschreitet, geht das Verfahren 400 zu Schritt 422 über, in dem der Hypervisor 220 die Arbeitsspeicherseiten als beschreibbar markiert, bei denen der Schwellenwert überschritten wurde. Auf diese Arbeitsspeicherseiten kann daher geschrieben werden.
  • Als Nächstes kopiert der Hypervisor 220 Arbeitsspeicherseiten in einen Puffer, bei denen der Zählwert über dem Schwellenwert liegt (423). Der Puffer speichert daher Arbeitsspeicherseiten, die häufig verwendet werden bzw. auf die häufig geschrieben wird. Das Kopieren der ausgewählten Arbeitsspeicherseiten in den Puffer geschieht, während der Betrieb der virtuellen Maschinen am Prüfpunkt gestoppt oder ausgesetzt ist. Der Hypervisor 220 nimmt anschließend den Betrieb der virtuellen Maschine(n) wieder auf, die auf dem DPS 100 des primären Hosts ausgeführt werden (415). Der Hypervisor 220 erfasst die häufig geänderten Arbeitsspeicherseiten und Prozessorzustandsänderungen des DPS 100 des primären Hosts und überträgt in Form eines oder mehrerer im Hintergrund stattfindender Vorgänge eine Kopie der häufig geänderten Arbeitsspeicherseite(n), des Puffers und der Prozessorzustandsänderungen über das Netzwerk 140 auf den sekundären Host 102 (424). Der Hypervisor 270 des sekundären Hosts 102 bestätigt oder quittiert dem Hypervisor 220 den Empfang der Arbeitsspeicherseiten, des Puffers und der Prozessorzustandsänderungen in Form eines Hintergrundvorgangs (425). Die Vorgänge der Schritte 424 und 425 finden im Hintergrund zu derselben Zeit statt, zu der die virtuelle(n) Maschine(n) auf dem DPS 100 des primären Hosts ausgeführt werden (415). Zu jeder Arbeitsspeicherseite, die in den Puffer kopiert wurde (426), wird eine Prüfsumme erzeugt und mit einer früheren Prüfsumme verglichen. Eine Prüfsumme ist ein Bezugselement fester Größe, das aus einem Block von Digitaldaten berechnet wird, um Fehler oder Änderungen in dem Datenblock zu erkennen. Während der Initialisierung (402) wird die Prüfsumme auf einen Nullwert gesetzt. Die Prüfsumme wird mithilfe einer Prüfsummenfunktion oder eines Prüfsummenalgorithmus für die Arbeitsspeicherseite berechnet.
  • Als Nächstes führt der Hypervisor 220 eine Prüfung durch, um festzustellen, ob die neue Prüfsumme dieselbe wie die frühere oder gleich der früheren Prüfsumme ist (428). Die neuen Prüfsummen und die früheren Prüfsummen werden bei jeder Arbeitsspeicherseite verglichen, die in den Puffer kopiert wurde. Wenn die neue Prüfsumme und die frühere Prüfsumme gleich sind, verringert der Hypervisor 220 den Zählwert bei den Arbeitsspeicherseiten mit gleichen Prüfsummen (436). Wenn die neue Prüfsumme und die frühere Prüfsumme nicht gleich sind, kehrt der Hypervisor 220 zu Schritt 404 zurück, in dem der Hypervisor 220 die Arbeitsspeicher- und Prozessorzustandsänderungen des DPS 100 des primären Hosts überwacht. Der Zweck des Erzeugens der Prüfsumme besteht darin, festzustellen, auf welche gepufferten Arbeitsspeicherseiten nicht mehr häufig geschrieben wird, und diese Arbeitsspeicherseiten zum Entfernen aus dem Puffer 328 zu kennzeichnen.
  • Der Hypervisor 220 führt eine Prüfung durch, um festzustellen, ob der Zählwert unter den Schwellenwert abgesunken ist (438). Wenn der Zählwert unter den Schwellenwert abgesunken ist, bei dem die Arbeitsspeicherseiten mit einem Zählwert unterhalb des Schwellenwertes vom Hypervisor aus dem Puffer entfernt werden 220 (440). Wenn der Zählwert in Schritt 438 nicht unter den Schwellenwert abgesunken ist, nimmt der Hypervisor 220 den Betrieb der virtuellen Maschine(n) auf dem DPS 100 des primären Hosts wieder auf (434). Nach dem Schritt 440 markiert der Hypervisor 220 die Arbeitsspeicherseiten mit einem Zählwert unterhalb des Schwellenwertes beim nächsten Prüfpunkt als schreibgeschützt (448). Das Verfahren 400 kehrt anschließend zu Schritt 404 zurück, in dem der Hypervisor 220 die Arbeitsspeicherseiten- und Prozessorzustandsänderungen des DPS 100 des primären Hosts überwacht.
  • Eine oder mehrere der beschriebenen Ausführungsformen stellen ein Verfahren zum Überwachen häufig verwendeter Arbeitsspeicherseiten bereit, mit dem das Auftreten von Arbeitsspeicherseiten-Zugriffsfehlern verringert wird. Die beschriebenen Ausführungsformen reduzieren die Auslastung in einem Datenverarbeitungssystem. Die Auslastung bzw. der Betriebsaufwand auf der virtuellen Maschine, die/den das Unterbrechen der virtuellen Maschine zur Behandlung von Arbeitsspeicherseitenfehlern bei häufig verwendeten Arbeitsspeicherseiten verursacht, wird wesentlich verringert oder beseitigt. Die Auslastung bzw. der Betriebsaufwand auf dem Hypervisor wird reduziert, da der Hypervisor während der Ausführung virtueller Maschinen häufig verwendete Arbeitsspeicherseiten nicht mehr auf Arbeitsspeicherseitenfehler überwachen muss. Durch das Kopieren häufig verwendeter Arbeitsspeicherseiten in einen Puffer kann in dem Netzwerk zwischen dem primären Host und dem sekundären Host übertragener Datenverkehr auf effiziente Weise übertragen werden.
  • Bei jedem der oben erwähnten Ablaufpläne können eines oder mehrere der Verfahren in einen computerlesbaren Medium verkörpert sein, das computerlesbaren Code enthält, sodass eine Reihe von Schritten ausgeführt wird, wenn der computerlesbare Code auf einer Datenverarbeitungseinrichtung ausgeführt wird. Bei einigen Realisierungsformen werden bestimmte Schritte der Verfahren kombiniert, gleichzeitig oder in einer anderen Reihenfolge ausgeführt oder möglicherweise weggelassen, ohne dass vom Gedanken und Schutzbereich der Erfindung abgewichen würde. Daher soll die Verwendung einer bestimmten Reihenfolge von Schritten keine Einschränkung der Erfindung darstellen, auch wenn die Verfahrensschritte in einer bestimmten Reihenfolge beschrieben und veranschaulicht werden. Es können Änderungen hinsichtlich der Reihenfolge von Schritten vorgenommen werden, ohne dass vom Gedanken oder Schutzbereich der Erfindung abgewichen würde. Die Verwendung einer bestimmten Reihenfolge ist daher nicht in einem einschränkenden Sinne zu verstehen, und der Schutzbereich der vorliegenden Erfindung wird einzig durch die beigefügten Ansprüche definiert.
  • Fachleuten wird klar sein, dass Aspekte der vorliegenden Erfindung in Form eines Systems, Verfahrens oder Computerprogrammprodukts verkörpert sein können. Demzufolge können Aspekte der vorliegenden Erfindung die Form einer komplett in Hardware realisierten Ausführungsform, einer komplett in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte kombiniert, die hier allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden. Ferner können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
  • Es können beliebige Kombinationen eines oder mehrerer computerlesbarer Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Zu computerlesbaren Speichermedien können beispielsweise und ohne Beschränkung auf die folgende Aufzählung ein elektronisches, magnetisches, optisches oder elektromagnetisches System bzw. ein Infrarot- oder Halbleitersystem bzw. eine derartige Vorrichtung oder Einheit oder beliebige geeignete Kombinationen des Vorstehenden gehören. Zu genaueren Beispielen (unvollständige Liste) computerlesbarer Speichermedien zählen unter anderem folgende: elektrische Verbindung mit einer oder mehreren Leitungen, tragbare Computerdiskette, Festplatte, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), optische Speichereinheit, magnetische Speichereinheit oder beliebige geeignete Kombinationen des Vorstehenden. Im Kontext des vorliegenden Dokuments kann ein computerlesbares Speichermedium jedes beliebige konkrete Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Ein computerlesbares Signalmedium kann unter anderem ein im Basisband oder als Teil einer Trägerwelle übertragenes Datensignal mit darin verkörpertem computerlesbarem Programmcode sein. Ein derartiges übertragenes Signal kann eine beliebige einer Vielfalt von Vielfalt Formen annehmen, darunter und ohne Beschränkung auf die Aufzählung eine elektromagnetische oder optische Form oder beliebige geeignete Kombinationen davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, bei dem es sich nicht um ein computerlesbares Speichermedium handelt und das ein Programm übertragen, senden oder transportieren kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes beliebigen geeigneten Mediums, beispielsweise und ohne Beschränkung auf die Aufzählung, über drahtlose oder drahtgebundene Medien, Lichtwellenleiter, HF usw., oder unter Verwendung beliebiger geeigneter Kombinationen des Vorstehenden übertragen werden. Computerprogrammcode zum Ausführen von Operationen bei Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter in einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder Ähnlichem und in herkömmlichen prozeduralen Programmiersprachen wie „C” oder ähnlichen Programmiersprachen geschrieben sein. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)).
  • Aspekte der vorliegenden Erfindung sind unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben worden. Es versteht sich, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaltbildern durch Computerprogrammanweisungen realisiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderer programmierbarer Datenverarbeitungsvorrichtungen bereitstellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Realisieren der in einem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen schaffen.
  • Diese Computerprogrammanweisungen können ebenfalls in einem computerlesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Medium gespeicherten Anweisungen ein Fertigprodukt erzeugen, das Anweisungen enthält, die die in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebene Funktion/Aktion realisieren. Die Computerprogrammanweisungen können auch in einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, den anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt werden, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer oder auf anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zur Realisierung der in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen bereitstellen.
  • Ferner versteht sich, dass die Prozesse bei Ausführungsformen der vorliegenden Erfindung unter Verwendung einer beliebigen Kombination aus Software, Firmware oder Hardware realisiert werden können. Als Vorbereitungsschritt zur praktischen Umsetzung der Erfindung in Software wird der Programmiercode (gleichgültig, ob Software oder Firmware) normalerweise auf einem oder mehreren maschinenlesbaren Medien wie z. B. Festplattenlaufwerken, Disketten, optischen Platten, Magnetband, Halbleiterspeichern wie ROMS, PROMs usw. gespeichert, wodurch ein Fertigprodukt gemäß der Erfindung erzeugt wird. Das Fertigprodukt, das den Programmiercode enthält, wird verwendet, indem entweder der Code direkt von der Speichereinheit aus ausgeführt wird, indem der Code von der Speichereinheit auf eine andere Speichereinheit wie z. B. eine Festplatte, RAM usw. kopiert oder mithilfe von Übertragungsmedien wie z. B. digitalen und analogen Datenübertragungsverbindungen zur Ausführung auf einem entfernt angeordneten System übertragen wird. Die Verfahren der Erfindung können praktisch umgesetzt werden, indem ein oder mehrere maschinenlesbare Speichereinheiten, die den Code entsprechend der vorliegenden Erfindung enthalten, zur Verarbeitung des darin enthaltenen Codes mit geeigneter Verarbeitungshardware kombiniert werden. Eine Vorrichtung zur praktischen Umsetzung der Erfindung könnte aus einer oder mehreren Verarbeitungseinheiten und einem oder mehreren Speichersystemen bestehen, die einen Netzwerkzugriff auf erfindungsgemäß codierte Programme enthalten oder aufweisen.
  • Daher ist es wichtig, dass es, obwohl eine veranschaulichende Ausführungsform der vorliegenden Erfindung im Kontext eines voll funktionsfähigen Computer(server)-Systems mit installierter (oder ausgeführter) Software beschrieben wurde, Fachleuten klar ist, dass die Softwareaspekte einer veranschaulichenden Ausführungsform der vorliegenden Erfindung in einer Vielfalt von Formen als Programmprodukt verteilt sein können und dass eine veranschaulichende Ausführungsform der vorliegenden Erfindung unabhängig davon gilt, welche Art Medien für die eigentliche Durchführung der Verteilung verwendet wird.
  • Obwohl die Erfindung unter Bezugnahme auf beispielhafte Ausführungsformen beschrieben wurde, wird Fachleuten klar sein, dass verschiedene Änderungen vorgenommen und Elemente der Erfindung durch Äquivalente ersetzt werden können, ohne dass vom Schutzbereich der Erfindung abgewichen würde. Außerdem können viele Modifikationen vorgenommen werden, um ein bestimmtes System, eine bestimmte Einheit oder Komponente davon an die Erkenntnisse der Erfindung anzupassen, ohne dass von deren wesentlichem Schutzbereich abgewichen würde. Daher soll die Erfindung nicht auf die jeweiligen Ausführungsformen beschränkt sein, die zur Realisierung dieser Erfindung beschrieben wurden, sondern die Erfindung schließt alle Ausführungsformen ein, die in den Schutzbereich der beigefügten Ansprüche fallen. Darüber hinaus bezeichnet die Verwendung der Begriffe „erster/erste/erstes”, „zweiter/zweite/zweites” usw. keinerlei Reihenfolge oder Bedeutung, sondern die Begriffe „erster/erste/erstes”, „zweiter/zweite/zweites” usw. werden verwendet, um ein Element von einem anderen zu unterscheiden.
  • Die im vorliegenden Dokument verwendete Terminologie dient ausschließlich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Einschränkung der Erfindung gedacht. Die hier verwendeten Einzahlformen „ein/eine” und „der/die/das” schließen auch die Pluralformen ein, sofern im Kontext nichts ausdrücklich anderes angegeben ist. Es versteht sich des Weiteren, dass die Begriffe „weist auf” bzw. „aufweisen” bei Verwendung in der vorliegenden Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Abläufe, Elemente und/oder Komponenten bezeichnen, aber das Vorhandensein oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Abläufe, Elemente, Komponenten und/oder Gruppen davon nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Aktionen und Äquivalente aller Mittel bzw. Schritt-plus-Funktion-Elemente (Step plus Function Elements) in den folgenden Ansprüchen sollen alle Strukturen, Materialien oder Aktionen zur Ausführung der Funktion in Verbindung mit anderen ausdrücklich beanspruchten Elementen mit einschließen. Die Beschreibung der vorliegenden Erfindung soll der Veranschaulichung und Beschreibung dienen, ist jedoch in Bezug auf die Erfindung in der offenbarten Form nicht erschöpfend oder einschränkend. Für Fachleute mit durchschnittlichen Kenntnissen sind viele Modifikationen und Variationen denkbar, ohne dass diese eine Abweichung vom Schutzbereich und Gedanken der Erfindung darstellen würden. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken und die praktische Anwendung der Erfindung auf bestmögliche Weise zu erklären und anderen Fachleuten das Verständnis dafür zu ermöglichen, dass verschiedene Ausführungsformen der Erfindung mit verschiedenen Modifikationen denkbar sind, die sich die jeweils beabsichtigte Verwendung eignen

Claims (15)

  1. Mittels Computer realisiertes Verfahren zum Spiegeln von Inhalten eines primären Host-Computersystems auf ein sekundäres Host-Computersystem, aufweisend: Überwachen von Änderungen bei jeder einer Vielzahl von Arbeitsspeicherseiten einer oder mehrerer virtueller Maschinen des primären Hosts; Überwachen von Änderungen an einer Vielzahl von Prozessorzuständen bei einer oder mehreren virtuellen Maschinen des primären Hosts; als Reaktion auf das Auftreten eines Prüfpunktes das Stoppen einer oder mehrerer der virtuellen Maschinen des primären Hosts; Ermitteln für die Arbeitsspeicherseiten, ob mindestens eine bestimmte Arbeitsspeicherseite der Vielzahl von Arbeitsspeicherseiten eine häufig geänderte Arbeitsspeicherseite ist; als Reaktion darauf, dass mindestens eine bestimmte Arbeitsspeicherseite eine häufig geänderte Arbeitsspeicherseite ist, das Markieren der häufig geänderten Arbeitsspeicherseite als beschreibbar und das Kopieren der häufig geänderten Arbeitsspeicherseite in einen Puffer; als Reaktion darauf, dass eine Arbeitsspeicherseite selten geändert wird, das Markieren der selten geänderten Arbeitsspeicherseite als schreibgeschützt; Wiederaufnehmen des Betriebs der einen oder mehreren virtuellen Maschinen des primären Hosts; und Übertragen einer Kopie der Arbeitsspeicherseiten, des Puffers und der Änderungen an den Prozessorzuständen auf den sekundären Host.
  2. Verfahren nach Anspruch 1, das ferner das Verwalten eines Zählwertes einer Anzahl von Prüfpunktfenstern aufweist, in die jede Arbeitsspeicherseite geschrieben wird.
  3. Verfahren nach einem der Ansprüche 1 bis 2, bei dem ferner als Reaktion darauf, dass der Zählwert einen Schwellenwert überschreitet, die Arbeitsspeicherseiten als häufig geänderte Arbeitsspeicherseiten verarbeitet werden und als Reaktion darauf, dass der Zählwert unter einen Schwellenwert absinkt, die Arbeitsspeicherseiten als selten geänderte Arbeitsspeicherseiten verarbeitet werden.
  4. Verfahren nach Anspruch 2, das ferner aufweist: Erzeugen einer neuen Prüfsumme zu jeder der häufig geänderten Arbeitsspeicherseiten; Vergleichen der neuen Prüfsumme mit einer früheren Prüfsumme zu jeder der häufig geänderten Arbeitsspeicherseiten; und als Reaktion darauf, dass die neue Prüfsumme gleich der früheren Prüfsumme ist, das Verringern des zu jeder der häufig geänderten Arbeitsspeicherseiten gehörenden Zählwertes.
  5. Verfahren nach Anspruch 4, bei dem ferner als Reaktion darauf, dass der Zählwert unter den Schwellenwert absinkt, die betreffende häufig geänderte Arbeitsspeicherseite aus dem Puffer entfernt wird.
  6. Verfahren nach einem der Ansprüche 1 bis 5, das ferner das Bestätigen aufweist, dass die Kopie der Arbeitsspeicherseiten, des Puffers und der Prozessorzustände vom sekundären Host empfangen wurde.
  7. Datenverarbeitungssystem, aufweisend: mindestens einen Arbeitsspeicher mit einer darin befindlichen Menge von Anweisungen; einen oder mehrere mit dem Arbeitsspeicher in Verbindung stehende Prozessoren, wobei die Prozessoren so betriebsfähig sind, dass sie die Menge von Anweisungen ausführen, die bewirken, dass der Prozessor: Änderungen bei jeder einer Vielzahl von Arbeitsspeicherseiten einer oder mehrerer virtueller Maschinen des primären Hosts überwacht; Änderungen an einer Vielzahl von Prozessorzuständen bei einer oder mehreren virtuellen Maschinen des primären Hosts überwacht; als Reaktion auf das Auftreten eines Prüfpunktes eine oder mehrere der virtuellen Maschinen des primären Hosts stoppt; für die Arbeitsspeicherseiten ermittelt, ob mindestens eine bestimmte Arbeitsspeicherseite der Vielzahl von Arbeitsspeicherseiten eine häufig geänderte Arbeitsspeicherseite ist; als Reaktion darauf, dass mindestens eine bestimmte Arbeitsspeicherseite eine häufig geänderte Arbeitsspeicherseite ist, die häufig geänderte Arbeitsspeicherseite als beschreibbar markiert und die häufig geänderte Arbeitsspeicherseite in einen Puffer kopiert; als Reaktion darauf, dass eine Arbeitsspeicherseite selten geändert wird, die selten geänderte Arbeitsspeicherseite als schreibgeschützt markiert; den Betrieb der einen oder mehreren virtuellen Maschinen des primären Hosts wieder aufnimmt; und eine Kopie der Arbeitsspeicherseiten, des Puffers und der Änderungen an den Prozessorzuständen auf den sekundären Host überträgt.
  8. Datenverarbeitungssystem nach Anspruch 7, das ferner Anweisungen aufweist, die bewirken, dass der Prozessor einen Zählwert einer Anzahl von Prüfpunktfenstern verwaltet, in die jede Arbeitsspeicherseite geschrieben wird.
  9. Datenverarbeitungssystem nach Anspruch 8, das ferner Anweisungen aufweist, die bewirken, dass der Prozessor als Reaktion darauf, dass der Zählwert einen Schwellenwert überschreitet, die Arbeitsspeicherseiten als häufig geänderte Arbeitsspeicherseiten verarbeitet, und als Reaktion darauf, dass der Zählwert unter einen Schwellenwert absinkt, die Arbeitsspeicherseiten als selten geänderte Arbeitsspeicherseiten verarbeitet.
  10. Datenverarbeitungssystem nach Anspruch 8, das ferner Anweisungen aufweist, die bewirken, dass der Prozessor: eine neue Prüfsumme zu jeder der häufig geänderten Arbeitsspeicherseiten erzeugt; zu jeder der häufig geänderten Arbeitsspeicherseiten die neue Prüfsumme mit einer früheren Prüfsumme vergleicht; und als Reaktion darauf, dass die neue Prüfsumme gleich der früheren Prüfsumme ist, den zu jeder der häufig geänderten Arbeitsspeicherseiten gehörenden Zählwert verringert.
  11. Datenverarbeitungssystem nach Anspruch 10, das ferner Anweisungen aufweist, die bewirken, dass der Prozessor als Reaktion darauf, dass der Zählwert unter den Schwellenwert absinkt, die betreffende häufig geänderte Arbeitsspeicherseite aus dem Puffer entfernt.
  12. Datenverarbeitungssystem nach einem der Ansprüche 7 bis 11, das ferner Anweisungen aufweist, die bewirken, dass der Prozessor bestätigt, dass die Kopie der Arbeitsspeicherseiten, des Puffers und der Prozessorzustände vom sekundären Host empfangen wurde.
  13. Computerprogrammprodukt, aufweisend: ein computerlesbares Speichermedium; und Programmcode auf dem computerlesbaren Speichermedium, der bei Ausführung in einer Datenverarbeitungseinheit die Funktionalität bereitstellt: Überwachen von Änderungen bei jeder einer Vielzahl von Arbeitsspeicherseiten einer oder mehrerer virtueller Maschinen des primären Hosts; Überwachen von Änderungen an einer Vielzahl von Prozessorzuständen bei einer oder mehreren virtuellen Maschinen des primären Hosts; als Reaktion auf das Auftreten eines Prüfpunktes Stoppen einer oder mehrerer der virtuellen Maschinen des primären Hosts; Ermitteln für die Arbeitsspeicherseiten, ob mindestens eine bestimmte Arbeitsspeicherseite der Vielzahl von Arbeitsspeicherseiten eine häufig geänderte Arbeitsspeicherseite ist; als Reaktion darauf, dass mindestens eine bestimmte Arbeitsspeicherseite eine häufig geänderte Arbeitsspeicherseite ist, Markieren der häufig geänderten Arbeitsspeicherseite als beschreibbar und Kopieren der häufig geänderten Arbeitsspeicherseite in einen Puffer; als Reaktion darauf, dass eine Arbeitsspeicherseite selten geändert wird, Markieren der selten geänderten Arbeitsspeicherseite als schreibgeschützt; Wiederaufnehmen des Betriebs der einen oder mehreren virtuellen Maschinen des primären Hosts; und Übertragen einer Kopie der Arbeitsspeicherseiten, des Puffers und der Änderungen an den Prozessorzuständen auf den sekundären Host.
  14. Computerprogrammprodukt nach Anspruch 13, das ferner Programmcode auf dem computerlesbaren Speichermedium aufweist, der bei Ausführung in der Datenverarbeitungseinheit die Funktionalität des Verwaltens eines Zählwertes einer Reihe von Prüfpunktfenstern bereitstellt, in die jede Arbeitsspeicherseite geschrieben wird.
  15. Computerprogrammprodukt nach Anspruch 14, das ferner Programmcode auf dem computerlesbaren Speichermedium aufweist, der bei Ausführung in der Datenverarbeitungseinheit die Funktionalität bereitstellt, dass als Reaktion darauf, dass der Zählwert einen Schwellenwert überschreitet, die Arbeitsspeicherseiten als häufig geänderte Arbeitsspeicherseiten verarbeitet werden und als Reaktion darauf, dass der Zählwert unter einen Schwellenwert absinkt, die Arbeitsspeicherseiten als selten geänderte Arbeitsspeicherseiten verarbeitet werden.
DE102012215918A 2011-09-20 2012-09-07 Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host Pending DE102012215918A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/236,842 2011-09-20
US13/236,842 US8549210B2 (en) 2011-09-20 2011-09-20 Mirroring virtual machines from a primary host to a secondary host

Publications (1)

Publication Number Publication Date
DE102012215918A1 true DE102012215918A1 (de) 2013-03-21

Family

ID=47137093

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012215918A Pending DE102012215918A1 (de) 2011-09-20 2012-09-07 Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host

Country Status (3)

Country Link
US (2) US8549210B2 (de)
DE (1) DE102012215918A1 (de)
GB (1) GB2494969B (de)

Families Citing this family (20)

* 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
US8639984B2 (en) * 2011-08-09 2014-01-28 International Business Machines Corporation Checkpoint debugging using mirrored virtual machines
US9459898B2 (en) * 2011-10-06 2016-10-04 Hitachi, Ltd. Virtual server processing control method, system, and virtual server processing control management server
US20130166922A1 (en) * 2011-12-23 2013-06-27 Ati Technologies Ulc Method and system for frame buffer protection
US10140139B1 (en) 2012-06-19 2018-11-27 Bromium, Inc. Ensuring the privacy and integrity of a hypervisor
US9021476B1 (en) * 2012-06-19 2015-04-28 Bromium, Inc. Ensuring the privacy and integrity of a hypervisor
US9135046B1 (en) 2012-06-19 2015-09-15 Bromium, Inc. Preventing host operating system from inspecting or modifying data received by hardware controller by moving host operating system into a virtual machine after boot up
US9122873B2 (en) 2012-09-14 2015-09-01 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
US9471632B2 (en) 2013-10-18 2016-10-18 International Business Machines Corporation Query optimization considering virtual machine mirroring costs
US9563569B2 (en) * 2014-01-28 2017-02-07 Red Hat Israel, Ltd. Memory transformation in virtual machine live migration
US9785378B2 (en) * 2014-01-28 2017-10-10 Red Hat Israel, Ltd. Tracking transformed memory pages in virtual machine chain migration
US10459746B2 (en) * 2014-02-27 2019-10-29 Red Hat Israel, Ltd. Resuming a paused virtual machine
US9430401B2 (en) * 2015-01-16 2016-08-30 International Business Machines Corporation Implementing paging optimization to avoid populate on page fault during an IO read
US10545670B2 (en) * 2016-02-26 2020-01-28 Red Hat Israel, Ltd. Scalable page migration after memory de-duplication
US11915022B2 (en) 2016-04-14 2024-02-27 Red Hat, Inc. Reducing memory inconsistencies between synchronized computing devices
US10714159B2 (en) 2018-05-09 2020-07-14 Micron Technology, Inc. Indication in memory system or sub-system of latency associated with performing an access command
US10754578B2 (en) * 2018-05-09 2020-08-25 Micron Technology, Inc. Memory buffer management and bypass
US10942854B2 (en) 2018-05-09 2021-03-09 Micron Technology, Inc. Prefetch management for memory
US11010092B2 (en) 2018-05-09 2021-05-18 Micron Technology, Inc. Prefetch signaling in memory system or sub-system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100678913B1 (ko) 2005-10-25 2007-02-06 삼성전자주식회사 가상 메모리 시스템에서 페이지 폴트를 줄이는 장치 및방법
US7962703B1 (en) 2007-08-08 2011-06-14 Symantec Corporation Techniques for improving dirty page logging
US8661211B2 (en) 2007-08-27 2014-02-25 International Business Machines Corporation Method for migrating contents of a memory on a virtual machine
US20100077128A1 (en) 2008-09-22 2010-03-25 International Business Machines Corporation Memory management in a virtual machine based on page fault performance workload criteria
US8566821B2 (en) 2008-11-11 2013-10-22 Netapp Inc. Cloning virtual machines
US8661213B2 (en) 2010-01-06 2014-02-25 Vmware, Inc. Method and system for frequent checkpointing

Also Published As

Publication number Publication date
US8549210B2 (en) 2013-10-01
GB2494969B (en) 2014-01-29
GB201215980D0 (en) 2012-10-24
GB2494969A (en) 2013-03-27
US20130073823A1 (en) 2013-03-21
US20130073778A1 (en) 2013-03-21
US8769183B2 (en) 2014-07-01

Similar Documents

Publication Publication Date Title
DE102012215918A1 (de) Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host
DE112018000193B4 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE112013001421B4 (de) Auf Richtlinien beruhendes Verwalten von Speicherfunktionen in Datenreplikationsumgebungen
DE112011100819B4 (de) Speicherplatzreservierung in einem Deduplizierungssystem
DE112011103666B4 (de) Speicherverwaltung in Cluster-Datenverarbeitungssystemen
DE112011101633B4 (de) Virtualisierung und dynamische Ressourcenzuweisung berücksichtigendes Neuordnen von Speicherebenen
DE112017000629T5 (de) Multi-Tenant-Arbeitsspeicherdienst für Architekturen mit Arbeitsspeicher-Pools
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE112011103408T5 (de) Verwalten von komprimiertem Speicher unter Verwendung gestaffelter Interrupts
DE112012005275T5 (de) Datenauswahl zur Sicherung von Datenspeichern
DE102013101863A1 (de) Hochverfügbares Hauptspeicher-Datenbanksystem, Arbeitsverfahren und deren Verwendungen
DE112013001905T5 (de) Erhöhte Inline-Deduplizierungseffizienz
DE202015009260U1 (de) Effiziente Datenlesungen von verteilten Speichersystemen
DE112018003524T5 (de) Dynamische datenverlagerung unter verwendung von speicherbänken auf cloud-grundlage
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE112012000693T5 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE102014114108A1 (de) Prozessleitsysteme und -verfahren
DE112012003695T5 (de) Aufrechterhalten mehrerer Zielkopien
DE112013007300T5 (de) Speichersysteme mit adaptiver Löschcode-Generierung
DE112018005121T5 (de) Speichersystem unter verwendung von cloud-speicher als eine speicherbank
DE112018004637T5 (de) Maschinelles lernen zum verbessern von wiederherstellungen von redundanten anordnungen von unabhängigen festplatten
DE112018005135T5 (de) Thin provisioning unter verwendung von speicherbänken auf cloud-grundlage
DE112020000305T5 (de) Verringern der wiederherstellungszeit in einer computerspeicherumgebung
DE102021115763A1 (de) Identifizierung und klassifizierung der schreibstrompriorität
DE102022124530A1 (de) Speicherpoolmanagement

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE GBR, DE

Representative=s name: RICHARDT PATENTANWAELTE PART GMBB, DE

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication