DE102012212511A1 - Checkpoint-basierte Hochverfügbarkeit mit Netzwerkpaketpufferung in der Hardware - Google Patents

Checkpoint-basierte Hochverfügbarkeit mit Netzwerkpaketpufferung in der Hardware Download PDF

Info

Publication number
DE102012212511A1
DE102012212511A1 DE102012212511A DE102012212511A DE102012212511A1 DE 102012212511 A1 DE102012212511 A1 DE 102012212511A1 DE 102012212511 A DE102012212511 A DE 102012212511A DE 102012212511 A DE102012212511 A DE 102012212511A DE 102012212511 A1 DE102012212511 A1 DE 102012212511A1
Authority
DE
Germany
Prior art keywords
network
checkpointing
virtual machine
adapter
packet
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.)
Granted
Application number
DE102012212511A
Other languages
English (en)
Other versions
DE102012212511B4 (de
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 DE102012212511A1 publication Critical patent/DE102012212511A1/de
Application granted granted Critical
Publication of DE102012212511B4 publication Critical patent/DE102012212511B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • 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
    • 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/2046Error 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 where the redundant components share persistent storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Retry When Errors Occur (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Ein Verfahren, ein System und ein Computerprogrammprodukt optimieren die Verfügbarkeit von Ressourcen/Prozessen durch die Bereitstellung hardwarebasierter Pufferung von Netzwerkpaketen während der Durchführung von Checkpoints in einer virtualisierten Umgebung. Ein High-Availability-Checkpoint-(HAC bzw. Hochverfügbarkeits-Checkpoint)-Dienstprogramm konfiguriert einen physischen Netzwerkadapter vorab, um ausgehende Netzwerkpakete von virtuellen Maschinen zu puffern, die eine Checkpointing-Technologie einsetzen. Als Reaktion auf den Empfang eines ausgehenden Netzwerkpakets von einer virtuellen Maschine und der Bestimmung, dass die virtuelle Maschine eine vorgegebene Checkpointing-Technologie einsetzt, puffert der physische Netzwerkadapter das ausgehende Netzwerkpaket. Darüber hinaus führt ein primärer Host Checkpoint-Operationen mit einem sekundären Host durch bzw. unterstützt diese (in Verbindung mit der virtuellen Maschine). Wenn die Checkpoint-Operationen erfolgreich abgeschlossen sind, löst das HAC-Dienstprogramm die Übertragung der gepufferten Netzwerkpakete vom Netzwerkadapter an ein Ziel im Netzwerk aus. Der physische Netzwerkadapter minimiert die Netzwerklatenz beim Checkpointing, indem einem gepufferten Netzwerkpaket von einer virtuellen Maschine mit Checkpointing vorab eine höhere Priorität als einem neuen Netzwerkpaket, das von einer virtuellen Maschine ohne Checkpointing stammt, zugewiesen wird.

Description

  • Hintergrund
  • Technischer Anwendungsbereich
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf Datenverarbeitungssysteme und im Besonderen auf Checkpoint-Operationen in einem Datenverarbeitungssystem. Noch spezieller bezieht sich die vorliegende Erfindung auf Checkpoint-Operationen beim Puffern von Netzwerkpaketen in einem Datenverarbeitungssystem.
  • Beschreibung der verwandten Technik
  • Checkpoint-basierte Hochverfügbarkeit ist eine Methodik, bei der eine virtuelle Maschine, die auf einer Hostmaschine (d. h., der „primäre Host”) ausgeführt wird, in regelmäßigen Intervallen (z. B. in Intervallen von 25 ms) den zugehörigen CPU- und Hauptspeicherzustand auf eine andere Hostmaschine (d. h., den „sekundären Host”) spiegelt. Dieser Spiegelungsprozess umfasst: (1) Verfolgen der Änderungen am Hauptspeicher der virtuellen Maschine; (2) Anhalten der virtuellen Maschine in periodischen Abständen; (3) Senden der Änderungen zusammen mit Änderungen von Aktualisierungen des CPU-Zustands über ein Netzwerk an den sekundären Host; (4) Warten, dass der sekundäre Host den Empfang der Hauptspeicher- und CPU-Zustandsaktualisierung bestätigt; und (5) Wiederaufnahme des Betriebs der virtuellen Maschine. Der Spiegelungs-/”Checkpointing”-Prozess stellt sicher, dass der sekundäre Host die Arbeitslast ohne Serviceausfall wiederaufzunehmen vermag, falls beim primären Host ein plötzlicher Hardwareausfall aufritt.
  • Was die Übertragung von Netzwerkpakten in herkömmlichen Checkpointing-Ansätzen betrifft, senden virtuelle Maschinen Netzwerkverkehr im Allgemeinen über einen einzelnen Virtualisierungspunkt (z. B. einem virtuellen Eingangs-/Ausgangsserver (VIOS) oder einem Hypervisor), der „Eigentümer” des Netzwerkadapters ist. Diese herkömmlichen Ansätze erfordern im Allgemeinen, dass für jede Netzwerkpaketübertragung ein Checkpoint durchgeführt wird. In der Folge steigt durch diese herkömmlichen Ansätze die Netzwerklatenz, und die Software wird komplexer.
  • Kurzzusammenfassung
  • Offengelegt werden ein Verfahren, ein System und ein Computerprogrammprodukt zur Optimierung der Verfügbarkeit von Ressourcen/Prozessen durch die Bereitstellung hardwarebasierter Pufferung von Netzwerkpaketen während der Durchführung von Checkpoints in einer virtualisierten Umgebung. Ein High-Availability-Checkpoint-(HAC bzw. Hochverfügbarkeits-Checkpoint)-Dienstprogramm konfiguriert einen physischen Netzwerkadapter vorab, um ausgehende Netzwerkpakete von virtuellen Maschinen (bzw. virtual machine) zu Puffern, die eine Checkpointing-Technologie einsetzen. Als Reaktion auf den Empfang eines ausgehenden Netzwerkpakets von einer virtuellen Maschine und der Bestimmung, dass die virtuelle Maschine eine vorgegebene Checkpointing-Technologie (bzw. Kontrollpunkt-Technologie) einsetzt, puffert der physische Netzwerkadapter das ausgehende Netzwerkpaket. Darüber hinaus führt ein primärer Host Checkpoint-Operationen mit einem sekundären Host durch bzw. unterstützt diese (in Verbindung mit der virtuellen Maschine). Wenn die Checkpoint-Operationen erfolgreich abgeschlossen wurden, löst das HAC-Dienstprogramm die Übertragung der gepufferten Netzwerkpakete vom Netzwerkadapter an ein Ziel im Netzwerk aus. Der physische Netzwerkadapter minimiert die Netzwerklatenz beim Checkpointing, indem einem gepufferten Netzwerkpaket von einer virtuellen Maschine mit Checkpointing vorab eine höhere Priorität als einem neuen Netzwerkpaket, das von einer virtuellen Maschine ohne Checkpointing stammt, zugewiesen wird.
  • Die obige Zusammenfassung enthält Vereinfachungen, Verallgemeinerungen und Auslassungen von Details und ist nicht als umfassende Beschreibung des beanspruchten Gegenstands gedacht, sondern soll vielmehr eine kurze Übersicht über einige der hiermit in Verbindung stehenden Funktionalitäten bieten. Andere Systeme, Verfahren, Funktionalitäten, Merkmale und Vorteile des beanspruchten Gegenstands sind oder werden für Fachleute bei Betrachtung der folgenden Abbildungen (Fig.) und der detaillierten schriftlichen Beschreibung offensichtlich.
  • Kurzbeschreibung der Zeichnungen
  • Eine bevorzugte Ausführungsform der vorliegenden Erfindung wird nun rein beispielhaft mit Bezugnahme auf die begleitenden Zeichnungen beschrieben. Diese stellen Folgendes dar:
  • 1 veranschaulicht gemäß einer Ausführungsform ein Netzwerk von Datenverarbeitungssystemen, die als virtualisierte Systeme konfiguriert sind, in denen verschiedene funktionale Merkmale der beschriebenen Ausführungsformen implementiert werden;
  • 2 veranschaulicht gemäß einer Ausführungsform eine interne Konfiguration eines primären Hosts, der über mehrere virtuelle Maschinen verfügt;
  • 3 veranschaulicht gemäß einer Ausführungsform ein Blockdiagramm mit funktionalen Komponenten eines primären Hosts und eines sekundären Hosts, wobei beide Hosts konfiguriert sind, um einer auf dem primären Host ausgeführten virtuellen Maschine Checkpoint-Operationen zu ermöglichen;
  • 4 ist gemäß einer Ausführungsform ein logisches Übersichtsflussdiagramm eines beispielhaften Verfahrens, in dem eine virtuelle Maschine Checkpoint-Operationen in Verbindung mit der Verwendung hardwarebasierter Pufferung von Netzwerkpaketen über einen Netzwerkadapter durchführt; und
  • 5 ist gemäß einer Ausführungsform ein logisches Übersichtsflussdiagramm eines beispielhaften Verfahrens, mit dem ein primärer Host mittels der Paketpriorität die Übertragung von gepufferten Netzwerkpaketen, die auf Checkpoint-Operationen folgt, plant.
  • Detaillierte Beschreibung
  • Die der Veranschaulichung dienenden Ausführungsformen sehen ein Verfahren, ein Datenverarbeitungssystem und ein Computerprogrammprodukt zur Optimierung die Verfügbarkeit von Ressourcen/Prozessen durch die Bereitstellung der hardwarebasierten Pufferung von Netzwerkpaketen während des Checkpointings in einer virtualisierten Umgebung vor. Ein High-Availability-Checkpoint-(HAC bzw. Hochverfügbarkeits-Checkpoint)-Dienstprogramm konfiguriert einen physischen Netzwerkadapter vorab, um ausgehende Netzwerkpakete von virtuellen Maschinen zu Puffern, die eine Checkpointing-Technologie einsetzen. Als Reaktion auf den Empfang eines ausgehenden Netzwerkpakets von einer virtuellen Maschine und der Bestimmung, dass die virtuelle Maschine eine vorgegebene Checkpointing-Technologie einsetzt, puffert der physische Netzwerkadapter das ausgehende Netzwerkpaket. Darüber hinaus führt ein primärer Host Checkpoint-Operationen mit einem sekundären Host durch bzw. unterstützt diese (in Verbindung mit der virtuellen Maschine). Wenn die Checkpoint-Operationen erfolgreich abgeschlossen sind, löst das HAC-Dienstprogramm die Übertragung der gepufferten Netzwerkpakete vom Netzwerkadapter an ein Ziel im Netzwerk aus. Der physische Netzwerkadapter minimiert die Netzwerklatenz beim Checkpointing, indem einem gepufferten Netzwerkpaket von einer virtuellen Maschine mit Checkpointing vorab eine höhere Priorität als einem neuen Netzwerkpaket, das von einer virtuellen Maschine ohne Checkpointing stammt, zugewiesen wird.
  • In der folgenden detaillierten Beschreibung von beispielhaften Ausführungsformen der Erfindung werden spezielle beispielhafte Ausführungsformen, in denen die Erfindung verwirklicht wird, in ausreichender Detailgenauigkeit beschrieben, um Fachleute die Verwirklichung der Erfindung zu ermöglichen, und es versteht sich, dass andere Ausführungsformen verwendet werden können und dass logische, architektonische, programmatische, mechanische, elektrische und andere Änderungen vorgenommen werden können, ohne vom Geist und Umfang der vorliegenden Erfindung abzuweichen. Die folgende detaillierte Beschreibung soll daher nicht in einem einschränkenden Sinne interpretiert werden, und der Umfang der vorliegenden Erfindung wird durch die angehängten Ansprüche und deren Entsprechungen definiert.
  • Bei den Beschreibungen der verschiedenen Ansichten der Figuren werden ähnliche Elemente mit ähnlichen Namen und Referenznummern wie die in den vorhergehenden Figuren vorgesehen. Die den Elementen zugewiesenen speziellen Bezugsziffern dienen nur als Beschreibungshilfe und sollen keine Beschränkungen (strukturell, funktional oder anderweitig) für die beschriebene Ausführungsform implizieren.
  • Es versteht sich, dass die Verwendung spezieller Komponenten-, Geräte- und/oder Parameternamen (beispielsweise die des ausgeführten Dienstprogramms/der Logik/der Firmware, die hier beschrieben werden) nur beispielhaft ist und keine Einschränkung der Erfindung darstellen soll. Die Erfindung kann daher ohne Beschränkung mit anderer Nomenklatur/Terminologie implementiert werden als die, die in diesem Dokument zum Beschreiben der Komponenten/Geräte/Parameter verwendet wird. Bezugnahmen auf ein spezielles Protokoll oder proprietäre Namen bei der Beschreibung eines oder mehrerer Elemente, Merkmale oder Konzepte der Ausführungsformen werden nur als Beispiele einer Implementierung bereitgestellt, und diese Bezugnahmen schränken die Erweiterung der Erfindung auf Ausführungsformen, in denen andere Element-, Merkmals- oder Konzeptnamen verwendet werden, in keiner Weise ein. Somit soll jeder der in der vorliegenden Erfindung verwendetem Begriffe die breiteste Interpretation in dem Kontext, in dem der Begriff verwendet wird, erhalten.
  • Wie im Folgenden weiter beschrieben, wird die Implementierung der funktionalen Merkmale der Erfindung in den Verarbeitungsgeräten/-strukturen bereitgestellt und beinhaltet die Verwendung einer Kombination aus Hardware, Firmware und verschiedenen Konstrukten auf Softwareebene (beispielsweise Programmcode). Die vorliegenden Figuren veranschaulichen sowohl Hardwarekomponenten wie auch Softwarekomponenten in einer beispielhaften Datenverarbeitungsarchitektur mit einer Reihe von Verarbeitungsknoten, die als ein oder mehrere elektronische Computing-Komplexe angeordnet/konfiguriert sind. Bei den der Veranschaulichung dienenden und beschriebenen Ausführungsformen wird davon ausgegangen, dass die Systemarchitektur auf eine viel größere Anzahl von Verarbeitungsknoten skaliert werden kann.
  • Es wird nun speziell auf 1 Bezug genommen, wo ein Blockdiagramm einer Beispielarchitektur (100) für ein Netzwerk virtualisierter Datenverarbeitungssysteme (DPS) dargestellt ist, in denen die funktionalen Aspekte der beschriebenen Ausführungsformen in vorteilhafter Weise implementiert werden können. Zur Vereinfachung soll die DPS-Netzwerkarchitektur (100) hier einfach als DPS 100 bezeichnet werden. DPS 100 weist eine Vielzahl bzw. Mehrzahl an Hostcomputern auf, von denen der primäre Host 110A und der sekundäre Host 110B dargestellt werden. Die Anzahl der Hostgeräte in DPS 100 kann variieren, von einem einzelnen Host in einem kleineren System bis hin zu Hunderten oder Tausenden von Hostgeräten in größer skalierten Systemen. Zur Vereinfachung sollen die Ausführungsformen aus der Perspektive eines einzelnen Hostgeräts (des primären Hosts 110A) oder von zwei Hostgeräten (dem primären Host 110A und dem sekundären Host 110B) beschrieben werden. In jedem Hostsystem 110A110B werden virtuelle Maschinen bereitgestellt, von denen die ersten beiden virtuellen Maschinen VM 114a und VM 114b sowie VM 114c und VM 114d hier jeweils dargestellt sind. Wie im Folgenden beschrieben, sind mit Bezugnahme auf 2 die VMs 114 logische Partitionen eines virtualisierten (oder im Betriebssystem partitionierten) Computingsystems. Die tatsächliche Anzahl der Clients/virtuellen Maschinen in jedem Hostgerät 110 kann ohne Beschränkung variieren und von einem Client/einer virtuellen Maschine bis zu Hunderten oder Tausenden von Clients/virtuellen Maschinen reichen. Aus Effizienzgründen werden bei der Darstellung der Konzepte der Erfindung in diesem Dokument nur zwei Clients/virtuelle Maschinen auf jedem Hostgerät 110 in den verschiedenen der Veranschaulichung dienenden und beschriebenen Ausführungsformen dargestellt.
  • DPS 100 weist auch eine verteilte (gemeinsam genutzte) Speichereinrichtung auf, auf die jedes der (Computer)-Hostsysteme/-geräte 110 und die Komponenten eines Hostsystem 110 zugreifen können. In einer Ausführungsform können der primäre Host 110A und der sekundäre Host 110B beide auf die verteilte Speichereinrichtung zugreifen. In einer anderen Ausführungsform greifen der primäre Host und der sekundäre Host auf getrennte/unterschiedene Speichereinrichtungen zu.
  • Jedes Hostgerät 110 in DPS 100 verbindet einen verteilten Speicher 150 über ein oder mehrere Netzwerke und/oder I/O-Interconnect/Switch Fabric (im Allgemeinen als Interconnect/Network Fabric 170 dargestellt). In den Beschreibungen und Abbildungen wird davon ausgegangen, dass wenigstens einige der Hostgeräte (110) von DPS 100 und der verteilte Speicher 150 sich in Bezug zueinander an einem Fernstandort befinden können, was zum Beispiel auch die Positionierung in verschiedenen Ländern miteinschließt, sodass eine direkte physische Konnektivität zwischen den betreffenden Geräten nicht unbedingt erforderlich ist. Zur Vereinfachung werden die Ausführungsformen so beschrieben, dass sie über ein primäres Interconnect/Netzwerk 170 verfügen, das ein privates Weitbereichsnetzwerk (WAN bzw. Wide Area Network) oder ein öffentliches WAN (wie das Internet) aufweist, obwohl auch andere Netzwerktypen (z. B. ein lokales Netzwerk) möglich sind und unterstützt werden.
  • Wie in einer oder mehreren Ausführungsformen dargestellt, ist jedes Hostgerät (z. B. der primäre Host 110A) auch mit einem oder mehreren benachbarten Hostgeräten (z. B. dem sekundären Host 110B) verbunden, um eine effiziente Failover- (bzw. Ausfallsicherung bzw. Backup oder Backup-System) und/oder Mobilitätsunterstützung und andere im Folgenden beschriebenen Funktionen bereitzustellen. Wie in diesem Dokument verwendet, bezieht sich der Begriff Nachbar auf ein verbundenes zweites Hostgerät, mit dem ein erstes Hostgerät kommunizieren kann, und es referenziert ein Nachbarhostgerät, das nicht auf ein zweites Hostgerät in geografischer Nähe des ersten Hostgeräts beschränkt ist. Der primäre Host 110A und der sekundäre Host 110B werden als miteinander über ein Verbindungsmedium verbunden veranschaulicht, zu dem auch ein anderes Netzwerk (wie ein lokales Netzwerk) 172 oder eine Art von Direktverbindung (z. B. einen Glasfaserverbindung) gehören kann, wenn sie sich physisch nahe zueinander befinden. Die Verbindung zwischen dem primären Nachbarhost 110A und dem sekundären Host 110B wird als Direktleitungsverbindung oder eine sekundäre Netzwerkverbindung (172) zwischen dem primären Host 110A und dem sekundären Host 110B veranschaulicht. Dabei ist aber hervorzuheben, dass die Verbindungen nicht unbedingt direkt sein müssen und tatsächlich auch über dasselbe allgemeine Interconnect/Netzwerk 170 an den verteilten Speicher 150 weitergeleitet werden können wie die anderen Hostsystemverbindungen.
  • Wie dargestellt, weist jedes Hostsystem 110 ein oder mehrere Netzwerkschnittstellen 134 und einen oder mehrere I/O-Adapter (bzw. Input-Output-Adapter) 132 auf, um dem Hostsystem 110 und somit den anderen Komponenten (d. h. virtuellen Maschinen) des Hostsystems 110 zu ermöglichen, an der Kommunikation auf Netzwerkebene teilzunehmen. Zu den Hardwarekomponenten 130 des beispielhaften primären Hosts 110A gehören ein oder mehrere Prozessoren (wie 131A), ein oder mehrere Hauptspeicher (wie 133A) und lokaler Speicher 144. Die Prozessoren sind mit einem oder einer Vielzahl an Hauptspeichern und mit lokalem Speicher 144 über einen Bus, einem Interconnect/Switch oder einem Interconnect Fabric (bzw. System mit Verbindungskomponenten) (nicht speziell dargestellt) verbunden. Jede virtuelle Maschine, wie VM 114A, erhält eine Zuordnung einer speziellen virtualisierten Hardware und OS-Ressourcen, darunter eine virtualisierte CPU 105A, Hauptspeicher 110A und OS 114A. Die Anwendung 116 wird auf der VM 114A ausgeführt. Jede VM 114 weist ein entsprechendes Hostbetriebssystem 114 auf, das den systemnahen Zugriff auf die Hardwareschicht (130) des primären Hosts 110A und/oder auf virtualisierte I/O-Funktionen und/oder Services steuert. Darüber hinaus wird das HAC-Dienstprogramm 250 auf dem primären Host 110A ausgeführt und ist für den Datenaustausch mit dem Hypervisor (HYP) 125 verbunden. In einer Ausführungsform ist das HAC-Dienstprogramm 250 in HYP 125 integriert. In einer Ausführungsform wird eine Verwaltungskonsole 175 zum Durchführen der Einrichtung und/oder Initialisierung der hier beschriebenen Checkpointing-Operationen für die einzelnen VMs 114 und/oder dem Netzwerk als Ganzem in verschiedenen Ausführungsformen verwendet.
  • In DPS 100 ist die Single-Root-IO-Virtualization-Technologie (d. h. SR-IOV bzw. I/O-Virtualisierungstechnologie mit einer einzigen Quelle) in der Lage, den in Ausführung befindlichen virtuellen Maschinen eine Netzwerkadapterfunktionalität bereitzustellen. Im Besonderen wird die SR-IOV-Technologie eingesetzt, um dem Hostsystem (z. B. primärer Host 110A) einen einzelnen physischen Netzwerkadapter (z B. Netzwerkadapter/-schnittstelle 134) als viele einzelne Netzwerkadapter darzustellen zu können. In einer Ausführungsform wird die große Anzahl an (konzeptionellen/virtuellen) einzelnen Netzwerkadaptern durch virtuelle Adapter/”Funktionen” dargestellt, die jeder virtuellen Maschine zugewiesen sind. In der Folge können Netzwerkressourcen mehreren virtuellen Maschinen (d. h. logischen Clientpartitionen) zugewiesen werden, die auf demselben Host ausgeführt werden, sodass jede virtuelle Maschine direkt mit der Netzwerkhardware kommunizieren kann, während die gemeinsame Nutzung des Adapters zwischen den virtuellen Maschinen weiterhin möglich ist. Darüber hinaus kennt der SR-IOV-Adapter die Existenz der verschiedenen virtuellen Maschinen und des einzelnen Datenverkehrs, der von den betreffenden virtuellen Maschinen stammt.
  • Mit Bezugnahme auf 2 wird nun eine andere Ansicht des beispielhaften DPS 100 dargestellt, die eine Systemarchitektur 200 mit virtualisierter Verarbeitung (d. h., der Architektur der einzelne Hostsysteme und im Besonderen des primären Hosts 110A) hervorhebt. Der primäre Host 110A dient als Beispielshostsystem und wird ausführlicher in 2 und in der gesamten Beschreibung beschrieben. Der primäre Host 110A wird als Server dargestellt, der Hardwarekomponenten und Software/Firmware/BS-Komponenten aufweist, die logisch partitioniert sind, um eine Vielzahl an virtuellen Maschinenpartitionen zu erstellen, die als virtuelle Maschinen (VMs) zugewiesen werden. Die Hardwarekomponenten 230 des beispielhaften primären Hosts 110A umfassen ein oder mehrere Prozessoren 231A231P, ein oder mehrere Hauptspeicher 233A233M und einen lokalen Speicher 234. Die Prozessoren 231A231P sind mit einem oder einer Vielzahl an Hauptspeichern 233A233M und dem mit lokalen Speicher 234 über einen Bus, einem Interconnect/Switch oder ein Interconnect Fabric (nicht speziell dargestellt) verbunden. Die spezielle interne Konnektivität der Komponenten, die über ein groß skaliertes Interconnect Fabric verteilt sein können, ist für die beschriebenen Ausführungsformen nicht relevant, und es werden keine weiteren Detailinformationen bezüglich des bestimmten Typ der Interkonnektivität zwischen den Hardwarekomponenten des Systems ausgeführt.
  • Ebenso sind in den Hardwarekomponenten 230 ein oder mehrere physische Netzwerkschnittstellen 134 enthalten, über die der primäre Host 110A mit einem externen Netzwerk, wie unter anderem das Netzwerk 170, eine Verbindung erstellt. Darüber hinaus weist die Hardwarekomponente 230 eine Vielzahl an I/O-Adaptern 232A232E auf, die die I/O-Schnittstelle für den primären Host 110A bereitstellen. Die I/O-Adapter 232A232E sind physische Adapter, über die der primäre Host 110 über eine I/O-Schnittstelle I/O-Operationen sowohl mit lokal verbundenen wie auch mit über Fernstandorte verbundenen (vernetzten) I/O-Geräten, darunter den verteilten Speicher 150, unterstützen kann. Beispiele von I/O-Adaptern sind unter anderem Peripheral Component Interface (PCI)-, PCI-X- oder PCI Express-Adapter sowie Small Computer System Interconnect(SCSI)-Adapter. Das Hostsystem 110 ist logisch partitioniert, sodass verschiedene I/O-Adapter 232 virtualisiert werden, und die virtuellen I/O-Adapter können dann eindeutig verschiedenen logischen Partitionen zugewiesen werden. In einer oder mehreren Ausführungsformen werden Konfigurationsdaten, die sich auf virtuelle Adapter und andere den VMs zugewiesenen Komponenten beziehen, mit jeder VM gepflegt und können von der VM gepflegt und aktualisiert werden, wenn Änderungen an diesen Konfigurationen vorgenommen werden und wenn Adapter hinzugefügt und/oder entfernt und/oder zugewiesen werden.
  • Logisch über der Hardwareebene (230) ist eine Virtualisierungsverwaltungskomponente angeordnet, die in einer Ausführungsform als Hypervisor (HYP) 225 bereitgestellt wird. Wenngleich sie in den verschiedenen Ausführungsformen als HYP 225 veranschaulicht und beschrieben wird, ist hervorzuheben, dass auch andere Arten von Virtualisierungsverwaltungskomponenten verwendet werden können und gleichermaßen auf die Implementierung der verschiedenen Ausführungsformen anwendbar sind. HYP 225 verfügt über einen zugehörigen Serviceprozessor 227, der damit im Hostsystem 110 verbunden ist. Mit dem Serviceprozessor 227 können einer oder mehreren logischen Partitionen verschiedene Services bereitgestellt werden. HYP 225 ist auch mit der Hardwareverwaltungssteuereinheit (HMC bzw. Hardware Management Controller) 229 verbunden, die außerhalb des physischen Hostsystems 110 vorliegt. HMC 229 ist eine mögliche Implementierung der in 1 veranschaulichten Verwaltungskonsole 175. Die Verwendung von HMC 229 im Besondern für diese Darstellung dient nur der Illustration einer konkreten Ausführungsform unter mehreren verfügbaren Optionen. Die Operationen der verschiedenen logischen Partitionen können über die HMC 229 gesteuert werden, die ein eigenes Datenverarbeitungssystem ist, über das ein Systemadministrator verschiedene Funktionen ausführen kann, wie die Neuzuweisung von Ressourcen an verschiedene logische Partitionen. Es ist wichtig, dass Merkmale, die sich auf ein Failover der OS-Partitionen (bzw. Betriebssystembereiche) beziehen und im Besonderen auf die virtuellen Maschinen und das Datenverarbeitungsnetzwerk in der vorliegenden Ausführungsform über HMC eingerichtet werden.
  • Der primäre Host 110A weist weiterhin eine Mehrzahl bzw. Vielzahl an virtuellen Maschinen (VMs) auf Clientebene auf, von denen die ersten beiden dargestellt sind und als einzelne VMs 114A114B im primären Host 110A dargestellt sind. Gemäß der verschiedenen der Veranschaulichung dienenden Ausführungsformen unterstützt der primäre Host 110A mehrere Clients und andere funktional arbeitende OS-Partitionen, die in einer virtualisierten Umgebung „erstellt” werden. Jede VM, z. B. VM 114B, erhält eine Zuordnung bestimmter virtualisierter Hardware- und OS-Ressourcen, darunter die virtualisierte CPU 205B, den Hauptspeicher 210B, das OS 214B, die lokale Firmware 216 und den lokalen Speicher (LStore) 218. Gemäß der aktuell beschriebenen Ausführungsformen weist die erste VM 114A einen Hauptspeicher MEM 210A auf, der die Prozessorzustände 262, die Hauptspeicherseiten 264 und die Checkpoint-Anwendung 266 beinhaltet, die alle verwendet und/oder in Checkpoint-bezogenen Operationen mit dem sekundären Host 110B ausgetauscht werden. Im Besonderen enthält der sekundäre Host 110B Kopien der Hauptspeicherseiten und Prozessorzustände der ersten VM 114A, wie von der vorherigen Checkpointing-Operation, wie durch die gespiegelten Prozessorzustände 272 und die gespiegelten Hauptspeicherseiten 274 in MEM 270 veranschaulicht. MEM 270 enthält auch die Checkpoint-Anwendung 276, um den sekundären Host 110B die Teilnahme an Checkpoint-Operationen mit dem primären Host 110A zu ermöglichen. Jede VM 114 weist ein entsprechendes Hostbetriebssystem 214 auf, das den systemnahen Zugriff auf die Hardwareschicht (230) des primären Hosts 110A und/oder auf virtualisierte I/O-Funktionen und/oder Services steuert. In einer Ausführungsform kann das Betriebssystem bzw. können die Betriebssysteme mit IBM i implementiert werden, das von der International Business Machines Corporation erhältlich ist (oder einem anderen Virtualisierungsbetriebssystem), das gestaltet ist, um eine Schnittstelle mit einer Partitionsverwaltungs-Firmware, wie HYP 225, zu bilden. Es versteht sich, dass beispielsweise andere Arten von Betriebssystemen (wie das Betriebssystem Advanced Interactive Executive (AIX), ein Markenzeichen der IBM Corporation, oder GNU®/Linux®, ein eingetragenes Markenzeichen von Linus Torvalds) abhängig von einer speziellen Implementierung verwendet werden können, und IBM i nur als ein Beispiel verwendet wird.
  • Fachleute werden verstehen, dass die in 1 und 2 dargestellte Hardware, Firmware/das Software-Dienstprogramm und die Softwarekomponenten und die Grundkonfiguration variieren können. Die der Veranschaulichung dienenden Komponenten von DPS 100 und im Besonderen von denen im primären Host 110A, in der ersten VM und der zweiten VM sollen nicht als erschöpfend betrachtet werden, sondern sind vielmehr repräsentativ, um einige der Komponenten hervorzuheben, die zur Implementierung bestimmter der beschriebenen Ausführungsformen verwendet werden. Zum Beispiel können verschiedene Konfigurationen der Datenverarbeitungssysteme/Hostgeräte bereitgestellt werden, die andere Geräte/Komponenten enthalten, die zusätzlich oder an Stelle der abgebildeten Hardware verwendet werden können und die unterschiedlich konfiguriert sein können. Das abgebildete Beispiel soll keine architektonischen oder anderen Beschränkungen bezüglich den aktuell beschriebenen Ausführungsformen und/oder der Erfindung im Allgemeinen implizieren. Das in verschiedenen FIG. dargestellte Hostgerät 110 kann zum Beispiel ein IBM eServer pSeries-System, ein Produkt der International Business Machines Corporation in Armonk, N. Y. sein, das das Betriebssystem AIX (Advanced Interactive Executive) oder das Betriebssystem LINUX ausführt.
  • Gemäß den aktuell beschriebenen Ausführungsformen, wird ein High-Availability-Checkpoint-(HAC)-Dienstprogramm (250) auf dem ersten Hostgerät 110A (d. h. einem primären Host) ausgeführt, um die Unterstützung der Durchführung von Checkpoint-Operationen für eine bestimmte virtuelle Maschine zu ermöglichen. Darüber hinaus wird ein eigenes Modul des HAC-Dienstprogramms 250 auf einem sekundären Host 110B ausgeführt, um Unterstützung für Checkpoint-Operationen auf dem primären Host 110A bereitzustellen. Das HAC-Dienstprogramm 250 konfiguriert den Netzwerkadapter 134 vor, um ausgehende Pakete von virtuellen Maschinen zu Puffern, die eine Checkpointing-Technologie einsetzen. Das HAC-Dienstprogramm 250 empfängt von einer oder mehreren virtuellen Maschinen, die auf einem primären Host ausgeführt werden, Konfigurationsinformationen, die eine Angabe enthalten, ob die virtuellen Maschinen jeweils eine Checkpointing-Technologie einsetzen. Der Netzwerkadapter bestimmt, ob ein ausgehendes von einer ersten virtuellen Maschine gesendetes Netzwerkpaket von einer virtuellen Maschine stammt, die Checkpointing-Technologie einsetzt. Wenn die erste virtuelle Maschine Checkpointing-Technologie einsetzt, initiieren eine oder mehrere VMs auf dem primären Host 110A Checkpoint-Operationen mit dem sekundären Host 110B, um die Hauptspeicherdaten und die Aktualisierungsdaten des CPU-Zustands der ersten virtuellen Maschine auf (eine zweite virtuellen Maschine auf) einem sekundären Host 110B zu spiegeln. Die Checkpointing-Operation wird vom Hypervisor und/oder Netzwerkadapter 134 unterstützt, der die Kommunikation zwischen dem primären Host und dem sekundären Host 110B ermöglicht. Wenn die Checkpoint-Operationen erfolgreich abgeschlossen sind, sendet das HAC-Dienstprogramm 250 einen Checkpoint-Befehl an einen physischen Netzwerkadapter 134, der der virtuellen Maschine zugeordnet ist, um eine Freigabe/Übertragung der gepufferten Netzwerkpakete vom Netzwerkadapter an ein (entferntes und/oder lokales) Netzwerkziel auszulösen. Der Netzwerkadapter 134 kennt (durch Verwendung der SR-IOV-Technologie) die Existenz verschiedener virtueller Maschinen und des einzelnen Datenverkehrs, der von den virtuellen Maschinen stammt. Zum Beispiel wird jeder „virtuellen Funktion”/jedem virtuellen Adapter 226 eine andere MAC-Adresse zugewiesen, sodass der physische Netzwerkadapter 134 die eingehenden Pakete an die korrekte virtuelle Funktion/den korrekten virtuellen Adapter 226 weiterleiten kann und Interrupts (bzw. Unterbrechungsanforderungen) an die korrekte virtuelle Maschine zustellt.
  • Das HAC-Dienstprogramm 250 stellt Code/Programmanweisungen bereit, die auf einer oder mehreren virtuellen Prozessoressourcen von einer oder mehreren VMs 114 auf Hostgeräten 110 ausgeführt werden, um spezielle Funktionen bereitzustellen. Zu der Funktionalität, die bei Ausführen des HAC-Dienstprogramms 250 bereitgestellt wird und die im Folgenden ausführlicher beschrieben wird gehört die folgende nicht-ausschließliche Liste: (a) Vor-Konfigurieren eines SR-IOV-Adapters, um ausgehende Netzwerkpakete zu Puffern, die von der virtuellen Maschine stammen, die Checkpointing-Technologie einsetzt; (b) Empfangen von Konfigurationsinformationen, von einer oder mehreren auf dem primären Host ausgeführten virtuellen Maschinen, die angeben, dass eine oder mehrere virtuelle Maschinen eine Checkpointing-Technologie einsetzen; (c) als Reaktion auf die Initiierung der Übertragung eines aktuellen ausgehenden Netzwerkpakets durch eine virtuelle Maschine, Bestimmen über den SR-IOV-Adapter, ob das aktuelle ausgehende Netzwerkpaket von einer virtuellen Maschine stammt, die eine Checkpointing-Technologie einsetzt; (d) als Reaktion auf die Bestimmung, dass das aktuelle ausgehende Netzwerkpaket von einer virtuellen Maschine stammt, die eine Checkpointing-Technologie einsetzt, Puffern des ausgehenden Netzwerkpakets von der virtuellen Maschine über den SR-IOV-Adapter; (e) Initiieren einer Gruppe von Checkpoint-Operationen mit einem sekundären Host; und (f) wenn eine Checkpointing-Operation erfolgreich abgeschlossen wurde, Auslösen mit einem Checkpoint-Befehl der Übertragung/Freigabe des gepufferten Netzwerkpakets vom Netzwerkadapter an ein Ziel in einem zugehörigen Netzwerk. In einer Ausführungsform werden einige der obigen Reihe an Funktionen durch den Netzwerkadapter 134 in Kommunikation mit dem Hypervisor und einer oder mehreren VMs aktiviert und/oder durchgeführt. Der Netzwerkadapter 134 unterstützt die Durchführung einer Checkpointing-Operation von einer oder mehreren VMs durch die Unterstützung/Ermöglichung der gegenseitigen Kommunikationen zwischen Hostgeräten.
  • Es wird nun auf 3 Bezug genommen, wo ein Blockdiagramm gemäß einer Ausführungsform dargestellt ist, das funktionale Komponenten eines primären Hosts und eines sekundären Hosts darstellt, wobei beide Hosts konfiguriert sind, um Checkpoint-Operationen auf dem primären Host für eine virtuelle Maschine zu ermöglichen. Ein Netzwerk an Datenverarbeitungssystemen (DPS) 300 weist den primären Host 110A und den sekundären Host 110B auf. Im primären Host 110A ist eine erste virtuelle Maschine (VM) 114A vorgesehen. In der ersten VM 114A sind der Hauptspeicher MEM 210A und der virtuelle I/O-Adapter 226 dargestellt. Der virtuelle I/O-Adapter 226 weist einen dedizierten Puffer 340 auf. Weiterhin ist in einer VM 114A ein ausgehendes Netzwerkpaket 320 dargestellt. Der primäre Host 110A weist auch einen physischen Netzwerkadapter/eine Schnittstelle 134 auf. Der Netzwerkadapter 134 weist einen Puffer 347 auf. In einer Ausführungsform steht der Puffer 347 für einen globalen Puffer. Die Checkpoint-Anwendung 360 ist auch im primären Host 110A dargestellt. Eine SR-IOV-Technologiesoftware/ein SR-IOV-Technologiemodul 343 ist ebenso beim primären Host 110A angegeben. Informationen 325 zum Typ der Checkpoint-Technologie und Informationen 335 zur Netzwerkpaketpriorität werden auch im primären Host 110A dargestellt. Weiterhin ist im primären Host 110A ein Netzwerkadapter 134 enthalten. In einer Ausführungsform ist der Netzwerkadapter 134 konfiguriert, um die Single Root IO-Virtualisierungstechnologie (d. h. SR-IOV) zu unterstützen. SR-IOV ermöglicht, dass ein einzelner physischer Netzwerkadapter dem Hostsystem (z. B. dem primären Host 110A) als eine große Anzahl einzelner Netzwerkadapter („virtuelle Funktionen”) dargestellt wird. Diese „virtuellen Funktionen” werden als virtuelle I/O-Adapter (z. B. virtueller I/O-Adapter 226) dargestellt. In der Folge können Netzwerkressourcen mehreren virtuellen Maschinen zugewiesen werden, die auf demselben Host ausgeführt werden, so dass jede virtuelle Maschine direkt mit der Netzwerkhardware kommunizieren kann, während der Adapter von den virtuellen Maschinen weiterhin gemeinsam genutzt werden kann. Der sekundäre Host 110B weist einen Hauptspeicher MEM 355 auf, der weiterhin eine Checkpoint-Anwendung 276 und ein Checkpoint-Datenabbild 310B aufweist. Das Checkpoint-Datenabbild 310B stellt den Hauptspeicherzustand und die CPU-Zustandsinformationen und Aktualisierungen dar (zusammen als Checkpoint-Daten 310A dargestellt), die der auf dem primären Host 110A ausgeführten virtuellen Maschine 114A (an einem vorherigen Checkpoint bzw. Kontrollpunkt) zugeordnet sind.
  • Das HAC-Dienstprogramm 250 wird auch im primären Host 110A oder in HYP 225 (in 2 abgebildet) ausgeführt, um Checkpoint-bezogene Funktionen/Operationen (unterstützt durch den Netzwerkadapter 134) bereitzustellen, um die Hochverfügbarkeit des Systems über die Pufferung der ausgehenden Netzwerkpakete 320 zu ermöglichen/zu verbessern. Um Checkpoint-bezogene Funktionen bereitzustellen, konfiguriert das HAC-Dienstprogramm 250 zuerst die VM 114A (z. B. über die Checkpoint-Anwendung 360), um anzugeben, ob die Checkpointing-Technologie von der ersten VM 114A eingesetzt wird. In der Folge empfängt das HAC-Dienstprogramm 250 Konfigurationsinformationen 325 von der VM 114A, wenn die VM 114A Checkpointing-Technologie einsetzt.
  • Das HAC-Dienstprogramm 250 initiiert auf dem primären Host die Durchführung eines Checkpoints für eine erste virtuelle Maschine unmittelbar vor der Übertragung des ausgehenden Netzwerkpakets 320 durch die virtuelle Maschine 114, die zuvor die Verwendung der Checkpointing-Technologie angegeben hat. In einer weiteren Ausführungsform wird auch die Initiierung eines Plattenschreibvorgangs verwendet, um die Durchführung von Checkpoints zu initiieren. Eine Netzwerkpaketübertragung oder ein Plattenschreibvorgang löst die Ausführung eines Checkpoints aus, um einen sekundären Host, der die Ausführung ab einem vorhergehenden/letzten Checkpoint wieder aufnimmt, daran zu hindern, ein Paket erneut senden oder einen Plattenschreibvorgang erneut durchführen zu müssen, wenn ein primärer Host 110A zuvor ein Netzwerkpaket freigegeben hat oder einen Plattenschreibvorgang durchgeführt hat und dabei ein Fehler auftrat. Durch die Initiierung von Checkpoints über den Netzwerk I/O und Platten I/O werden Redundanzen bei der Ausführung vermieden, da Paketübertragungen und Plattenschreibvorgänge, die nach dem letzten Checkpoint aufgetreten sind, weder vom primären noch vom sekundären Host wiederholt werden. Zum Beispiel initiiert in einer Ausführungsform das HAC-Dienstprogramm 250 die Durchführung des Checkpoints direkt nachdem die virtuelle Maschine den Hypervisor Call (HCALL, bzw. Hypervisor-Aufruf) an den zugrunde liegenden Hypervisor durchführt, um das Netzwerkpaket zu übertragen.
  • Während des Checkpoints überträgt das HAC-Dienstprogramm 250 den CPU- und Hauptspeicherzustand der ersten VM auf dem primären Host an (die zweite VM auf) dem sekundären Hostsystem (über die Checkpoint-Daten 310A), darunter Informationen bezüglich der „Intention” der virtuellen Maschine, ein Netzwerkpaket zu übertragen. Checkpoint-Daten 310A werden als Checkpoint-Datenabbild 310B in den Hauptspeicher 355 des sekundären Hosts 110B kopiert.
  • Es wird erneut auf die Verwendung der SR-IOV-Technologie Bezug genommen. Der SR-IOV-Adapter (z. B. Netzwerkschnittstelle/-adapter 134) kennt die Existenz von verschiedenen virtuellen Maschinen und des individuellen Datenverkehrs, der von den betreffenden virtuellen Maschinen stammt. In einem bestimmten Konfigurationsbeispiel kann jede „virtuelle Funktion”/virtueller I/O-Adapter 226 einer anderen MAC-Adresse zugeordnet werden, damit der physische Netzwerkadapter die eingehenden Pakete an die korrekte/entsprechende „virtuelle Funktion”/virtuellen I/O-Adapter 226 weiterleiten kann und Interrupts an die korrekte/entsprechende virtuelle Maschine liefert. In der Folge unterscheidet sich die SR-IOV-Adapterlösung wesentlich von den herkömmlichen virtuellen Netzwerkadapteransätzen, durch die die virtuellen Maschinen den entsprechenden Datenverkehr über einen einzigen Virtualisierungspunkt (z. B. VIOS oder einen Hypervisor) senden, der „Eigentümer” des Netzwerkadapters ist.
  • Der SR-ICV-Netzwerkadapter (d. h., der zur Verwendung von SR-IOV-Technologie 343 konfigurierte Netzwerkadapter 134) ist ausgebildet, um Datenverkehr von verschiedenen virtuellen Maschinen unterschiedlich zu verarbeiten, und im Besonderen ermöglicht der SR-IOV-Netzwerkadapter durch die Verwendung des HAC-Dienstprogramms 250 virtuellen Maschinen anzugeben, dass diese virtuellen Maschinen jeweils die Checkpointing-Technologie verwenden. Durch den Empfang der Angabe über die Verwendung von Checkpointing-Technologie wird dem Adapter die weitere Angabe bereitgestellt, dass eine bestimmte virtuelle Maschine „beabsichtigt”, die ausgehenden Netzwerkpakete zu Puffern, bis Checkpoints mit dem sekundären Host ausgetauscht wurden.
  • Der Netzwerkadapter 134 ist entweder (a) mit On-Board-Speicher (z. B. dem Hauptspeicherpuffer 340) konfiguriert, oder (b) mit dem Zugriff auf den Systemhauptspeicher ausgestattet. Der Netzwerkadapter 134 verwendet den Hauptspeicher zum Puffern ausgehender Netzwerkpakete, die von virtuellen Maschinen stammen, die zuvor die Verwendung der Checkpointing-Technologie angegeben haben. Wenn eine virtuelle Maschine angibt, dass ein Checkpoint abgeschlossen ist, beginnt der Netzwerkadapter 134 die gepufferten Netzwerkpakete für diese VM in das Netzwerk hinauszusenden.
  • Gemäß einer Ausführungsform, um die Latenz zu minimieren, die das Checkpointing zur Übertragung im Netzwerk aufgrund des Pufferns hinzufügt, priorisiert der Netzwerkadapter 134 gepufferte Netzwerkpakete (z. B. durch Verwenden der Informationen 335 zur Netzwerkpaketpriorität) gegenüber neu empfangenen Netzwerkpaketen, die von virtuellen Maschinen ohne Checkpointing stammen. In einer Ausführungsform arbeiten die Puffer (z. B. Puffer 340) im Netzwerkadapter 134 in zyklischer Weise, sodass neue Netzwerkpaket gepuffert werden können und gleichzeitig die gepufferten Netzwerkpakete des letzten Checkpoints übertragen werden. Wenn ein Puffer voll wird, wird ein Signal an die virtuellen Maschinen gesendet (z. B. über Broadcast bzw. Rundsenden von einem Punkt aus), die aktuell zum Durchführen des Checkpointings konfiguriert sind, um anzugeben, dass keine weitere Paketübertragung mehr auftreten kann, bis ein Checkpoint durchgeführt wird und der Puffer geleert werden kann.
  • Das HAC-Dienstprogramm 250 weist einer virtuellen Maschine 114A eines oder mehrere zu von: (a) einem dedizierten Pufferbereich (bzw. Buffer Space); und (b) einem globalen Puffer (z. B. Puffer 347), der das Speichern von verschachtelten Paketen aus mehreren virtuellen Maschinen mit Checkpointing ermöglicht. Der globale Puffer ermöglicht die automatische Übertragung von Datenverkehr, für den ein Checkpoint durchgeführt wurde, in der Reihenfolge, in der der Datenverkehr empfangen wird. Weiterhin wird der globale Puffer verwendet, um zu vermeiden, dass an den Netzwerkadapter eine Anforderung gestellt wird, zu bestimmen, welcher einer Gruppe von Checkpointing-Puffern 340 einer virtuellen Maschine zuerst geleert werden soll.
  • 4 und 5 sind Flussdiagramme, die die Verfahren veranschaulichen, durch die die obigen Prozesse der der Veranschaulichung dienenden Ausführungsform abgeschlossen werden. Obwohl das in 4 und 5 dargestellte Verfahren mit Bezugnahme auf Komponenten und Funktionalität beschrieben werden kann, die in Bezug auf 13 veranschaulicht und beschrieben werden können, versteht es sich, dass dies nur der Einfachheit halber geschieht und alternative Komponenten und/oder Konfigurationen davon mit der Implementierung der verschiedenen Verfahren verwendet werden können. Bestimmte Abschnitte der Verfahren können vom HAC-Dienstprogramm 250 abgeschlossen werden, das einen oder mehrere (virtuelle) Prozessoren (CPU 231/206A) in der VM 114 (1 oder 2) oder durch den SR-IOV-Adapter 134 ausführt. Die ausgeführten Prozesse steuern dann bestimmte Operationen von oder auf den Hostgeräten 110, den VMs 114 und dem SR-IOV-Adapter 134. Zur Vereinfachung der Beschreibung der Verfahren werden alle Verfahrensprozesse aus der Sicht von entweder einem/beiden des HAC-Dienstprogramms 250 und des SR-IOV-Adapters 134 und/oder der VM 114 beschrieben.
  • In 4 führt eine virtuelle Maschine Checkpoint-Operationen zusammen mit der Verwendung hardwarebasierter Pufferung der Netzwerkpakete über den Netzwerkadapter gemäß einer Ausführungsform aus. Das Verfahren beginnt am Initiatorblock 402 und geht zum Block 404 weiter, an dem das HAC-Dienstprogramm 250 den SR-IOV-Adapter 134 vorkonfiguriert, um ausgehende Pakete von virtuellen Maschinen, die Checkpointing-Technologie einsetzen, zu Puffern. Die verschiedenen Typen der Checkpointing-Technologien können beispielsweise eine Zusammenstellung proprietärer Checkpoint-Softwarepakete von den jeweiligen Unternehmen sein (die verschiedene Kommunikationsprotokolle verwenden). Darüber hinaus kann die Zusammenstellung der proprietären Softwarepakete ältere und neuere Versionen (die zusätzliche/verbesserte Funktionen aufweisen) von Checkpoint-Software aus demselben Unternehmen beinhalten. In Block 406 empfängt das HAC-Dienstprogramm 250 Konfigurationsinformationen von einer auf einem primären Host ausgeführten virtuellen Maschine, die eine Angabe bereitstellt, dass die virtuelle Maschine die Checkpointing-Technologie einsetzt. Bei Block 408 empfängt der SR-IOV-Adapter 134 ein ausgehendes Netzwerkpaket von einer virtuellen Maschine. Am Entscheidungsblock 410 bestimmt der SR-IOV-Adapter 134, ob das ausgehende Netzwerkpaket von einer virtuellen Maschine stammt, die Checkpointing-Technologie einsetzt. Wenn der SR-IOV-Adapter 134 an einem Entscheidungsblock 410 bestimmt, dass das ausgehende Netzwerkpaket nicht von einer virtuellen Maschine stammt, die Checkpointing-Technologie einsetzt, puffert der SR-IOV-Adapter 134 das ausgehende Netzwerkpaket nicht, wie in Block 412 gezeigt. Wenn jedoch der SR-IOV-Adapter 134 am Entscheidungsblock 410 bestimmt, dass das ausgehende Netzwerkpaket von einer virtuellen Maschine stammt, die Checkpointing-Technologie einsetzt, puffert der SR-IOV-Adapter 134 das ausgehende Netzwerkpaket, wie in Block 414 gezeigt. In einer Ausführungsform weist das HAC-Dienstprogramm 250 dem Netzwerkadapter auf dem primären Host eines oder mehrere zu von: (a) einer Zuordnung von On-Board-Speicher; und (b) einem Zugriff auf den Systemhauptspeicher. Die Zuordnung des On-Board-Speichers oder der Zugriff auf den Systemhauptspeicher wird genutzt, um ausgehende Netzwerkpakete zu puffern, die von der virtuellen Maschine stammen, die zuvor die Verwendung der Checkpointing-Technologie angegeben hat. Zudem initiiert/unterstützt in Block 416 ein primärer Host (der der virtuellen Maschine mit Checkpointing zugeordnet ist) über die Verwendung des HAC-Dienstprogramms 250 eine Gruppe von Checkpoint-Operationen mit einem sekundären Host. Am Entscheidungsblock 418 bestimmt das HAC-Dienstprogramm 250, ob die Checkpoint-Operationen erfolgreich abgeschlossen sind. Wenn am Entscheidungsblock 418 das HAC-Dienstprogramm 250 bestimmt, dass die Checkpoint-Operationen nicht erfolgreich abgeschlossen wurden, geht der Prozess zu Block 420 weiter, an dem der primäre Host die Checkpoint-Operationen mit dem sekundären Host erneut versucht/wiederholt. Als Reaktion auf die erfolgreich abgeschlossenen Checkpoint-Operationen löst das HAC-Dienstprogramm 250 die Freigabe/Übertragung der gepufferten Netzwerkpakete vom Netzwerkadapter an ein Ziel in einem zugehörigen Netzwerk aus, wie in Block 422 gezeigt. In einer Ausführungsform weist das HAC-Dienstprogramm 250 dem gepufferten Netzwerkpaket eine höhere Priorität zu und weist einem Netzwerkpaket, das aktuell von einer anderen virtuellen Maschine stammt, die keine Checkpointing-Technologie einsetzt, ein niedrigere Priorität zu. Das HAC-Dienstprogramm 250 weist diese höhere Priorität gepufferten Netzwerkpaketen zu, um die Netzwerklatenz zu minimieren. Der Prozess endet bei Block 424.
  • In 5 plant ein primärer Host gemäß einer Ausführungsform mittels der Paketpriorität die Übertragung gepufferter Netzwerkpakete nach den Checkpoint-Operationen. Das Verfahren beginnt beim Initiatorblock 502 und geht zu Block 504 weiter, bei dem der SR-IOV-Adapter 134 die ersten ausgehenden Netzwerkpakete von einer ersten virtuellen Maschine, die für das Checkpointing konfiguriert ist, puffert. In Block 506 ordnet der SR-IOV-Adapter 134 dem gepufferten ersten Netzwerkpaket von der ersten virtuellen Maschine eine hohe Priorität zu. In Block 508 empfängt der SR-IOV-Adapter 134 zweite ausgehende Netzwerkpakete von einer zweiten virtuellen Maschine, die nicht für das Checkpointing konfiguriert ist. In Block 510 puffert der SR-IOV-Adapter 134 das zweite Netzwerkpaket von der zweiten virtuellen Maschine. In Block 512 weist der SR-IOV-Adapter 134 dem zweiten gepufferten Netzwerkpaket von der zweiten virtuellen Maschine eine niedrige Priorität zu. In Block 514 plant der SR-IOV-Adapter 134 das erste gepufferte Netzwerkpaket von der ersten virtuellen Maschine vor dem zweiten gepufferten Netzwerkpaket der zweiten virtuellen Maschine basierend auf einer höheren Priorität des ersten gepufferten Netzwerkpakets für die Übertragung ein (nach einem erfolgreichen Abschluss der Checkpoint-Operationen, die der ersten virtuellen Maschine zugeordnet sind). Der Prozess endet bei Block 516.
  • Das Flussdiagramm und die Blockdiagramme, die in diesem Dokument in den verschiedenen Figuren dargestellt und beschrieben werden, veranschaulichen die Architektur, Funktionalität und Operation der möglichen Implementierungen der Systeme, Verfahren und Computerprogrammprodukte gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Flussdiagrammen oder Blockdiagrammen ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) aufweist. Es sollte ebenso beachtet werden, dass in einigen alternativen Implementierungen die im Block angegebenen Funktionen nicht in der in den FIG. angegeben Reihenfolge auftreten können. Zum Beispiel können in Abhängigkeit von der beinhalteten Funktionalität zwei aufeinanderfolgende Blöcke im Wesentlichen gleichzeitig ausgeführt werden, oder Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es sollte auch beachtet werden, dass jeder Block in den Blockdiagramm- und/oder Flussdiagrammabbildungen und den Kombinationen der Blöcke in den Blockdiagramm- und/oder Flussdiagrammabbildungen durch hardwarebasierte Spezialsysteme, die die angegebenen Funktionen oder Vorgänge ausführen, oder Kombinationen von Spezialhardware und Computeranweisungen implementiert werden kann.
  • Im obigen Flussdiagramm sind ein oder mehrere der Verfahren in einem computerlesbaren Medium, das computerlesbaren Code enthält, enthalten, sodass eine Reihe von Schritten ausgeführt wird, wenn der computerlesbare Code auf einem Computinggerät (durch die Verarbeitungseinheit) ausgeführt wird. Bei einigen Implementierungen werden bestimmte Prozesse der Verfahren kombiniert, gleichzeitig oder in einer anderen Reihenfolge ausgeführt oder möglicherweise weggelassen, ohne dass vom Geist und Umfang der Erfindung abgewichen wird. Daher soll, wenngleich die Verfahrensprozesse in einer bestimmten Folge beschrieben und veranschaulicht werden, die Verwendung einer bestimmten Prozessabfolge in keiner Weise als Einschränkung gegenüber der Erfindung interpretiert werden. Änderungen können bezüglich der Abfolge der Prozesse erfolgen, ohne vom Geist oder Umfang der vorliegenden Erfindung abzuweichen. Die Verwendung einer bestimmten Abfolge soll daher nicht in einem einschränkenden Sinne betrachtet werden, und der Umfang der vorliegenden Erfindung wird auf die angehängten Ansprüche und deren Entsprechungen erweitert.
  • Fachleute werden verstehen, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Demgemäß können Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform annehmen, einer reinen Software-Ausführungsform (einschließlich Firmware, speicherresidenter Software, Microcode usw.) oder einer Ausführungsform, die Software- und Hardwareaspekte vereint, die alle im Allgemeinen hier als „Schaltkreis”, „Modul” oder „System” bezeichnet werden können. Weiterhin können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem computerlesbaren Medium oder mehreren computerlesbaren Medien, die computerlesbaren Programmcode enthalten, enthalten ist.
  • Jede Kombination aus einem computerlesbaren Medium oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein Medium mit einem computerlesbaren Signal oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung, -gerät oder jede geeignete Kombination aus den Vorhergehenden sein. Zu den weiteren speziellen Beispielen (eine nicht erschöpfende Liste) von computerlesbaren Speichermedien gehören folgende: eine elektrische Verbindung mit einen oder mehreren Kabeln, eine tragbare Computerdiskette, eine Festplatte, Direktzugriffsspeicher (RAM bzw. Random Access Memory), Nur-Lese-Speicher (ROM bzw. Read-only Memory), ein löschbarer programmierbarer Festspeicher (EPROM- oder Flash-Speicher), eine Glasfaser, ein tragbarer Compact-Disc-Speicher (CD-ROM bzw. Compact Disc Read-only Memory), eine optische Speichervorrichtung, eine magnetische Speichervorrichtung oder jede geeignete Kombination des Vorhergehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm für die Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder einem Anweisungsausführungsgerät speichern kann.
  • Zu den computerlesbaren Signalmedien kann ein weitergeleitetes Datensignal mit computerlesbarem Programmcode darin gehören, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Solch ein weitergeleitetes Signal kann eine beliebige einer Vielzahl an Formen annehmen, einschließlich aber nicht beschränkt auf elektromagnetische, optische oder jede geeignete Kombination davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung oder in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder einem Anweisungsausführungsgerät kommunizieren, weiterleiten oder transportieren kann.
  • Auf einem computerlesbaren Medium enthaltener Programmcode kann mit jedem angemessenen Medium übertragen werden, darunter, ohne darauf beschränkt zu sein, Funk, Kabel, Glasfaser, HF oder jede geeignete Kombination aus dem vorhergehenden. Computerprogrammcode zum Ausführen der Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination einer oder mehreren Sprachen geschrieben sein, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ oder Ähnliches und herkömmliche Programmiersprachen, wie die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann ganz auf dem Rechner des Benutzers ausgeführt werden, teilweise auf dem Rechner des Benutzers, als eigenständiges Softwarepaket teilweise auf dem Rechner des Benutzers und teilweise auf einem entfernten Computer oder ganz auf dem entfernten Computer oder Server. Im letzteren Szenario kann der Ferncomputer mit dem Computer eines Benutzers über jede Art von Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN bzw. Local Area Network) oder ein Fernnetzwerk (WAN bzw. Wide Area Network), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet mit einem Internetdienstanbieter).
  • Aspekte der vorliegenden Erfindung werden im Folgenden mit Bezugnahme auf Flussdiagrammabbildungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systeme) und Computerprogrammprodukten gemäß den Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagrammabbildungen und/oder Blockdiagramme und Kombinationen der Blöcke in den Flussdiagrammabbildungen und/oder Blockdiagrammen durch Computerprogrammanweisungen implementiert werden kann. Diese Computerprogrammanweisungen können einem Prozessor eines Standardcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Implementierung der im Flussdiagramm und/oder Blockdiagrammblock bzw. -blöcken angegebenen Funktionen/Vorgänge erstellen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine anderen programmierbare Datenverarbeitungsvorrichtung oder andere Geräte anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Medium gespeicherten Anweisungen ein Produkt erstellen, das Anweisungen aufweist, die die Funktion/den Vorgang implementieren, der/die im Flussdiagramm und/oder Blockdiagrammblock bzw. -blöcke angegeben sind. Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Geräte geladen werden, um die Durchführung einer Reihe operativer Schritte auf dem Computer oder anderen programmierbaren Vorrichtungen oder anderen Geräten zu veranlassen, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder der programmierbaren Vorrichtung ausgeführten Anweisungen die Prozesse zum Implementieren der Funktionen/Vorgänge bereitstellen, die in dem Flussdiagramm und/oder Blockdiagrammblock bzw. -blocken angegeben sind.
  • Weiter ist hervorzuheben, dass die Prozesse in den Ausführungsformen der vorliegenden Erfindung mit einer beliebigen Kombination aus Software, Firmware oder Hardware implementiert werden können. Als vorbereitender Schritt zur Verwirklichung der Erfindung in Software wird der Programmiercode (unabhängig davon, ob es sich um Software oder Firmware handelt) in der Regel auf einem oder mehreren maschinenlesbaren Speichermedien gespeichert, wie Festplatten, Disketten, optische Platten, Magnetband, Halbleiterspeicher wie ROMs, PROMs usw., wodurch ein Produkt gemäß der Erfindung entsteht. Das Produkt mit dem Programmcode wird entweder durch Ausführen des Codes direkt vom Speichergerät, durch Kopieren des Codes vom Speichergerät auf ein anderes Speichergerät wie eine Festplatte, RAM usw. oder durch Übertragen des Codes zur Fernausführung mit einem Medium des Übertragungstyps wie digitale und analoge Kommunikationslinks verwendet. Die Verfahren der Erfindung können durch Kombination von einem oder mehreren maschinenlesbaren Speichergeräten, die Code enthalten, gemäß der vorliegenden Erfindung mit der geeigneten Verarbeitungshardware, die den darin enthaltenen Code ausführt, verwirklicht werden. Eine Vorrichtung zur Verwirklichung der Erfindung kann ein oder mehrere Verarbeitungsgeräte und Speichersysteme aufweisen, die ein gemäß der Erfindung kodiertes Programm oder gemäß der Erfindung kodierte Programme enthalten oder einen Netzwerkzugriff darauf haben.
  • Daher ist es wichtig, während eine veranschaulichende Ausführungsform der vorliegenden Erfindung im Kontext eines voll funktionsfähigen Computersystems (Server) mit installierter (oder ausgeführter) Software beschrieben wird, dass Fachleute verstehen, dass die Softwareaspekte einer veranschaulichenden Ausführungsform der vorliegenden Erfindung dazu ausgebildet sind, als Programmprodukt in verschiedenen Formen verteilt zu werden und dass eine der Veranschaulichung dienende Ausführungsform der vorliegenden Erfindung unabhängig von dem bestimmten Typ des Mediums, mit dem die Verteilung tatsächlich ausgeführt wird, gleichermaßen gilt.
  • Während die Erfindung mit Bezugnahme auf beispielhafte Ausführungsformen beschrieben wurde, werden Fachleute verstehen, dass verschiedene Änderungen vorgenommen werden können und Entsprechungen für Elemente als Ersatz verwendet werden können, ohne vom Umfang der Erfindung abzuweichen. Darüber hinaus können viele Veränderungen vorgenommen werden, um ein bestimmtes System, ein bestimmtes Gerät oder eine bestimmte Komponente davon an die erfindungsgemäße Lehre anzupassen, ohne vom wesentlichen Umfang davon abzuweichen. Daher ist es beabsichtigt, dass die Erfindung nicht auf bestimmte Ausführungsformen beschränkt ist, die zur Ausführung dieser Erfindung offengelegt werden, sondern alle Ausführungsformen beinhaltet, die in den Umfang der angehängten Ansprüche fallen. Zudem bezeichnet die Verwendung der Begriffe erstes, zweites, drittes etc. keine Reihenfolge oder die Wichtigkeit, sondern die Begriffe erstes, zweites, drittes etc. werden zur Unterscheidung eines Elements von einem anderen verwendet.
  • Die hier verwendete Terminologie dient dem Zweck, nur bestimmte Ausführungsformen zu beschreiben und ist nicht dazu gedacht, die Erfindung einzuschränken. Wie hier verwendet, sind die Singularformen „ein”, „eine” und „der”, „die” „das” dazu gedacht, auch die Pluralformen einzuschließen, sofern der Kontext dies nicht klar anders angibt. Es versteht sich, dass der Begriff „aufweist” oder „aufweisend”, wenn er in dieser Beschreibung verwendet wird, zur Angabe des Vorhandenseins angegebener Merkmale, Ganzzahlen, Schritte und/oder Komponenten verwendet wird, dies aber nicht das Vorhandensein oder das Hinzufügen eines oder mehrerer Merkmale, einer oder mehrerer Ganzzahlen, einer oder mehrerer Schritte, einer oder mehrerer Komponenten und/oder einer oder mehrerer Gruppen hiervon ausschließt.
  • Die zugehörigen Strukturen, Materialien, Vorgänge und Entsprechungen aller Mittel oder Schritte plus Funktionselemente in den folgenden Ansprüchen sind dazu gedacht, jede beliebige Struktur, jedes beliebige Material oder jeden beliebigen Vorgang einzuschließen, um die Funktion in Kombination mit anderen beanspruchten Elementen wie im Besonderen beansprucht durchzuführen. Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung dargelegt, es ist aber nicht beabsichtigt, dass sie erschöpfend oder auf die offengelegte Form der Erfindung beschränkt ist. Für Fachleute werden viele Veränderungen und Variationen ersichtlich sein, ohne dabei vom Umfang der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und in der Reihenfolge beschrieben, um die Prinzipien der Erfindung und der praktischen Anwendung am besten zu erklären und um anderen Fachleuten zu ermöglichen, die Erfindung in verschiedenen Ausführungsformen mit verschiedenen Änderungen zu verstehen, wie sie für die bestimmte vorgesehene Verwendung geeignet sind.

Claims (15)

  1. Ein Betriebsverfahren eines Datenverarbeitungssystems, das aufweist einen Prozessor, einen mit dem Prozessor verbundenen Hauptspeicher, wenigstens einen Eingabe/Ausgabe(I/O)-Adapter, der eine Verbindung zu einem externen Netzwerk ermöglicht, und eine Virtualisierungsverwaltungskomponente, die im Datenverarbeitungssystem ausgeführt wird und die (a) eine Mehrzahl an Betriebssystempartitionen (OS) erzeugt, wobei das Verfahren aufweist: Empfangen am physischen Netzwerkadapter von Konfigurationsinformationen, die eine Angabe bereitstellen, dass eine oder mehrere virtuelle Maschinen jeweils eine Checkpointing-Technologie verwenden; Empfangen am physischen Netzwerkadapter von einem oder mehreren ausgehenden Netzwerkpaketen von einer ersten virtuellen Maschine; wobei der physische Netzwerkadapter als Reaktion auf den Empfang der ausgehenden Netzwerkpakete von der ersten virtuellen Maschine durch den physischen Netzwerkadapter: bestimmt, ob die virtuelle Maschine, von der das ausgehende Netzwerkpaket stammt, eine Checkpointing-Technologie einsetzt; und als Reaktion auf eine Bestimmung, dass die virtuelle Maschine, von der das ausgehende Netzwerkpaket stammt, eine Checkpointing-Technologie einsetzt, die ausgehenden Netzwerkpakete puffert; eine Benachrichtigung empfängt, dass eine Checkpointing-Operation erfolgreich abgeschlossen wurde; und als Reaktion auf den Empfang der Benachrichtigung, dass die Checkpointing-Operation erfolgreich abgeschlossen wurde, eine Übertragung des gepufferten Netzwerkpaketes vom Netzwerkadapter an ein Ziel in einem zugehörigen Netzwerk auslöst.
  2. Das Verfahren gemäß Anspruch 1, das weiterhin aufweist: Unterstützen einer Durchführung einer Checkpointing-Operation, in der Zustandsinformationen der ersten virtuellen Maschine, von der das ausgehende Netzwerkpaket stammt, mit einer zweiten virtuellen Maschine auf einem sekundären Host synchronisiert werden, wobei die Unterstützung aufweist: Weiterleiten von Hauptspeicher- und CPU-Zustandsinformationen, die der ersten virtuellen Maschine zugeordnet sind, an die zweite virtuelle Maschine auf dem sekundären Host, der als Backup für den Fall eines Ausfalls des primären Hosts genutzt werden soll; und Bereitstellen einer Angabe einer erwarteten Übertragung der ausgehenden Netzwerkpakete für den sekundären Host.
  3. Das Verfahren gemäß Anspruch 1, das weiterhin aufweist: Zuweisen einer höheren Priorität an gepufferte Netzwerkpakete, die von einer virtuellen Maschine stammen, die Checkpointing-Technologie nutzt; und Zuweisen einer niedrigeren Priorität an ein Netzwerkpaket, das aktuell von einer anderen virtuellen Maschine stammt, die keine Checkpointing-Technologie nutzt; und Bestimmen einer Planung der Paketübertragung unter Verwendung einer einem Netzwerkpaket zugewiesenen Priorität; wobei die dem gepufferten Netzwerkpaket zugewiesene höhere Priorität eine Netzwerklatenz minimiert.
  4. Das Verfahren gemäß Anspruch 1, wobei das Puffern weiterhin aufweist: Vorab-Zuweisen an den Netzwerkadapter auf dem primären Host eines oder mehrerer von: (a) einer Zuordnung von On-Board-Speicher; und (b) einem Zugriff auf einen Systemhauptspeicher; und Puffern der ausgehenden Netzwerkpakete, die von der virtuellen Maschine stammen, die die Verwendung der Checkpointing-Technologie angegeben hat, unter Nutzung der Zuordnung von On-Beard-Speicher und des Zugriffes auf den Systemspeicher.
  5. Das Verfahren gemäß Anspruch 1, das weiterhin aufweist: Zuweisen an die virtuelle Maschinen eines oder mehrerer von: (a) einem dedizierten Pufferbereich; und (b) einem globalen Puffer, der ein Speichern von verschachtelten Paketen aus mehreren virtuellen Maschinen mit Checkpointing ermöglicht; wobei der globale Puffer eine automatische Übertragung gepufferter Netzwerkpakete in einer Reihenfolge ermöglicht, in der die gepufferten Netzwerkpakete empfangen werden; und wobei der globale Puffer verwendet wird, um zu vermeiden, dass an den Netzwerkadapter eine Anforderung gestellt wird, zu bestimmen, welcher einer Gruppe von Checkpointing-Puffer einer virtuellen Maschine zuerst geleert werden soll.
  6. Das Verfahren gemäß Anspruch 1, das weiterhin aufweist: Konfigurieren von Puffern, die dem physischen Netzwerkadapter zugeordnet sind, um eine zyklische Operation bereitzustellen, wobei es durch diese zyklische Operation möglich wird, neue Netzwerkpakete zu Puffern und gleichzeitig gepufferte Netzwerkpakete aus einer zuvor ausgeführten Checkpoint-Operation zu übertragen; Erfassen, wenn ein Puffer voll wird; und als Reaktion darauf, wenn der Puffer voll wird, Senden einer Benachrichtigung an eine oder mehrere virtuelle Maschinen, die Checkpointing-Technologie einsetzen, um anzugeben, dass eine weitere Paketübertragung angehalten wird, bis eine andere Checkpointing-Operation abgeschlossen ist, wobei die Puffer durch Abschluss der weiteren Checkpointing-Operation geleert werden können.
  7. Eine Datenverarbeitungsvorrichtung, die aufweist: einen Prozessor; eine Eingabe-/Ausgabe(I/O)-Schnittstelle, die mit einem externen Netzwerk verbunden ist; einen physischen Netzwerkadapter, der die SR-IOV-Technologie implementiert; und einen mit dem Prozessor verbundener Hauptspeicher, wobei der Hauptspeicher aufweist: einen Hypervisor; eine Checkpoint-Anwendung; eine Mehrzahl an Betriebssystem(OS)-Partitionen; eine Mehrzahl an virtuellen Maschinen (VMs); und ein Dienstprogramm, dessen Ausführung auf dem Prozessor den physischen Netzwerkadapter veranlasst zum: Empfangen von Konfigurationsinformationen, die eine Angabe bereitstellen, dass eine oder mehrere virtuelle Maschinen jeweils eine Checkpointing-Technologie einsetzen; Empfangen am physischen Netzwerkadapter von einem oder mehreren ausgehenden Netzwerkpaketen von einer ersten virtuellen Maschine; wobei der physische Netzwerkadapter als Reaktion auf den Empfang des ausgehenden Netzwerkpaketes von der ersten virtuellen Maschine durch den physischen Netzwerkadapter: bestimmt, ob die virtuelle Maschine, von der das ausgehende Netzwerkpaket stammt, eine Checkpointing-Technologie einsetzt; und als Reaktion auf eine Bestimmung durch den physischen Netzwerkadapter, dass die virtuelle Maschine, die das ausgehende Netzwerkpaket erstellt hat, eine Checkpointing-Technologie einsetzt, die ausgehenden Netzwerkpakete puffert; eine Benachrichtigung empfängt, dass eine Checkpointing-Operation erfolgreich abgeschlossen wurde; und als Reaktion auf den Empfang der Benachrichtigung, dass die Checkpointing-Operation erfolgreich abgeschlossen wurde, eine Übertragung des gepufferten Netzwerkpakets vom Netzwerkadapter an ein Ziel in einem zugehörigen Netzwerk auslöst.
  8. Die Datenverarbeitungsvorrichtung gemäß Anspruch 7, wobei weiterhin der physische Adapter eine Durchführung einer Checkpointing-Operation ermöglicht, in der Zustandsinformationen der ersten virtuellen Maschine, von der das ausgehende Netzwerkpaket stammt, mit einer zweiten virtuellen Maschine auf einem sekundären Host synchronisiert werden, durch: Weiterleiten von Hauptspeicher- und CPU-Zustandsaktualisierungen, die der ersten virtuellen Maschine zugeordnet sind, an den sekundären Host, der als Backup für den Fall eines Ausfalls des primären Hosts genutzt werden soll; und Bereitstellen einer Angabe einer erwarteten Übertragung der ausgehenden Netzwerkpakete für den sekundären Host.
  9. Die Datenverarbeitungsvorrichtung gemäß Anspruch 7, die weiterhin Funktionen aufweist zum: Zuweisen einer höheren Priorität an gepufferte Netzwerkpakete, die von einer virtuellen Maschine stammen, die Checkpointing-Technologie einsetzt; und Zuweisen einer niedrigeren Priorität an ein Netzwerkpaket, das aktuell von einer anderen virtuellen Maschine stammt, die keine Checkpointing-Technologie nutzt; und Bestimmen einer Planung einer Paketübertragung unter Verwendung einer einem Netzwerkpaket zugeordneten Priorität; wobei die dem gepufferten Netzwerkpaket zugeordnete höhere Priorität eine Netzwerklatenz minimiert.
  10. Die Datenverarbeitungsvorrichtung gemäß Anspruch 7, wobei die Funktionen zum Puffern weiterhin Funktionen aufweisen zum: Vorab-Zuweisen an den Netzwerkadapter auf dem primären Host eines oder mehrerer von: (a) einer Zuordnung von On-Board-Speicher; und (b) einem Zugriff auf einen Systemhauptspeicher; und Puffern der ausgehenden Netzwerkpakete, die von der virtuellen Maschine stammen, die die Verwendung von Checkpointing-Technologie angegeben hat, unter Nutzung der Zuordnung von On-Board-Speicher und des Zugriffes auf den Systemspeicher.
  11. Die Datenverarbeitungsvorrichtung gemäß Anspruch 7, die weiterhin Funktionen aufweist zum: Zuweisen an die virtuelle Maschinen eines oder mehrerer: (a) einem dedizierten Pufferbereich; und (b) einem globalen Puffer, der ein Speichern von verschachtelten Paketen aus mehreren virtuellen Maschinen mit Checkpointing ermöglicht; wobei der globale Puffer die automatische Übertragung der gepufferten Netzwerkpakete in einer Reihenfolge ermöglicht, in der die gepufferten Netzwerkpakete empfangen werden; und wobei der globale Puffer verwendet wird, um die zu vermeiden, dass an den Netzwerkadapter eine Anforderung gestellt wird, zu bestimmen, welcher einer Gruppe von Checkpointing-Puffer einer virtuellen Maschine zuerst geleert werden soll.
  12. Die Datenverarbeitungsvorrichtung gemäß Anspruch 7, die weiterhin Funktionen aufweist zum: Konfigurieren von Puffern, die dem physischen Netzwerkadapter zugeordnet sind, um eine zyklische Operation bereitzustellen, wobei es durch diese zyklische Operation ermöglicht wird, neue Netzwerkpakete zu puffern und gleichzeitig gepufferte Netzwerkpakete aus einer zuvor ausgeführten Checkpoint-Operation zu übertragen; Erfassen, wenn ein Puffer voll wird; und als Reaktion darauf, dass der Puffer voll wird, eine Benachrichtigung an eine oder mehrere virtuelle Maschinen zu senden, die die Checkpointing-Technologie einsetzen, um anzugeben, dass die weitere Paketübertragung angehalten wird, bis eine andere Checkpointing-Operation abgeschlossen ist, wobei durch Abschluss der weiteren Checkpointing-Operation ermöglicht wird, die Puffer zu leeren.
  13. Ein Computerprogrammprodukt, aufweisend: ein computerlesbares Speichermedium; und Programmcode auf dem computerlesbaren Speichermedium, der bei der Ausführung durch einen Prozessor im Datenverarbeitungssystem, das einen Prozessor, einen mit dem Prozessor verbundenen Hauptspeicher, wenigstens einen Eingabe/Ausgabe(I/O)-Adapter, der die Verbindung zu einem externen Netzwerk ermöglicht, und eine Virtualisierungsverwaltungskomponente, die im Datenverarbeitungssystem ausgeführt wird, aufweist und das eine Vielzahl an Betriebssystem(OS)-Partitionen bereitstellt und bewirkt, dass der physische Netzwerkadapter Funktionen bereitstellt zum: Empfangen von Konfigurationsinformationen, die eine Angabe bereitstellen, dass eine oder mehrere virtuelle Maschinen jeweils eine Checkpointing-Technologie verwenden; Empfangen am physischen Netzwerkadapter von einem oder mehreren ausgehenden Netzwerkpaketen von einer ersten virtuellen Maschine; der physische Netzwerkadapter als Reaktion auf den Empfang des ausgehenden Netzwerkpakets von der ersten virtuellen Maschine durch den physischen Netzwerkadapter: bestimmt, ob die virtuelle Maschine, von der das ausgehende Netzwerkpaket stammt, eine Checkpointing-Technologie einsetzt; und als Reaktion auf eine Bestimmung durch den physischen Netzwerkadapter, dass die virtuelle Maschine, von der das ausgehende Netzwerkpaket stammt, eine Checkpointing-Technologie einsetzt, die ausgehenden Netzwerkpakete puffert; eine Benachrichtigung empfängt, dass eine Checkpointing-Operation erfolgreich abgeschlossen wurde; und als Reaktion auf den Empfang der Benachrichtigung, dass die Checkpointing-Operation erfolgreich abgeschlossen wurde, die Übertragung des gepufferten Netzwerkpakets vom Netzwerkadapter an ein Ziel in einem zugehörigen Netzwerk auslöst.
  14. Computerprogrammprodukt gemäß Anspruch 13, das weiterhin die Unterstützung der Durchführung einer Checkpointing-Operation aufweist, in der Zustandsinformationen der ersten virtuellen Maschine, von der das ausgehende Netzwerkpaket stammt, mit einer zweiten virtuellen Maschine auf einem sekundären Host synchronisiert werden, durch: Weiterleiten von Hauptspeicher- und CPU-Zustandsaktualisierungen, die der ersten virtuellen Maschine zugeordnet sind, an den sekundären Host, der als Backup für den Fall eines Ausfalls des primären Hosts genutzt werden soll; und Bereitstellen einer Angabe einer erwarteten Übertragung des ausgehenden Netzwerkpakets für den sekundären Host, und/oder wobei der Programmcode zum Puffern weiterhin Programmcode aufweist zum: Vorab-Zuweisen an den Netzwerkadapter auf dem primären Host eines oder mehrerer von: (a) einer Zuordnung von On-Board-Speicher; und (b) einen Zugriff auf den Systemhauptspeicher; und Puffern der ausgehenden Netzwerkpakete, die von der virtuellen Maschine stammen, die die Verwendung der Checkpointing-Technologie angegeben hat, Nutzen der Zuordnung von On-Board-Speicher und des Zugriffes auf den Systemspeicher.
  15. Das Computerprogrammprodukt gemäß Anspruch 13, das weiterhin Programmcode aufweist zum: Zuweisen einer höheren Priorität an gepufferte Netzwerkpakete, die von einer virtuellen Maschine stammen, die Checkpointing-Technologie einsetzt; und Zuweisen einer niedrigeren Priorität an ein Netzwerkpaket, das aktuell von einer anderen virtuellen Maschine stammt, die keine Checkpointing-Technologie einsetzt; und Bestimmen der Planung der Paketübertragung unter Verwendung einer einem Netzwerkpaket zugewiesenen Priorität; wobei die dem gepufferten Netzwerkpaket zugeordnete höhere Priorität die Netzwerklatenz minimiert. und/oder weiterhin Programmcode aufweist zum: Zuweisen an die virtuelle Maschinen eines oder mehrerer von: (a) einem dedizierten Pufferbereich; und (b) einem globalen Puffer, der das Speichern von verschachtelten Paketen aus mehreren virtuellen Maschinen mit Checkpointing ermöglicht; wobei der globale Puffer die automatische Übertragung der gepufferten Netzwerkpakete in einer Reihenfolge ermöglicht, in der die gepufferten Netzwerkpakete empfangen werden; und wobei der globale Puffer verwendet wird, um die zu vermeiden, dass an den Netzwerkadapter eine Anforderung gestellt wird, zu bestimmen, welcher einer Gruppe von Checkpointing-Puffer einer virtuellen Maschine zuerst geleert werden soll, und/oder weiterhin Programmcode aufweist zum: Konfigurieren von Puffern, die dem physischen Netzwerkadapter zugeordnet sind, um eine zyklische Operation bereitzustellen, wobei durch diese zyklische Operation ermöglicht wird, neue Netzwerkpakete zu Puffern und gleichzeitig gepufferte Netzwerkpakete aus einer zuvor ausgeführten Checkpoint-Operation zu übertragen; Erfassen, wenn ein Puffer voll wird; und als Reaktion darauf, wenn der Puffer voll wird, eine Benachrichtigung an eine oder mehrere virtuelle Maschinen zu senden, die die Checkpointing-Technologie einsetzen, um anzugeben, dass die weitere Paketübertragung angehalten wird, bis eine andere Checkpointing-Operation abgeschlossen ist, wobei durch Abschluss der weiteren Checkpointing-Operation ermöglicht wird, die Puffer zu leeren.
DE102012212511.6A 2011-07-18 2012-07-17 Betriebsverfahren eines Datenverarbeitungssystems, Datenverarbeitungsvorrichtung und Computerprogrammprodukt zum Bereitstellen einer Checkpoint-basierten Hochverfügbarkeit mit Netzwerkpaketpufferung in der Hardware Active DE102012212511B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/184,740 2011-07-18
US13/184,740 US8769533B2 (en) 2011-07-18 2011-07-18 Check-point based high availability: network packet buffering in hardware

Publications (2)

Publication Number Publication Date
DE102012212511A1 true DE102012212511A1 (de) 2013-01-24
DE102012212511B4 DE102012212511B4 (de) 2019-03-21

Family

ID=46396871

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012212511.6A Active DE102012212511B4 (de) 2011-07-18 2012-07-17 Betriebsverfahren eines Datenverarbeitungssystems, Datenverarbeitungsvorrichtung und Computerprogrammprodukt zum Bereitstellen einer Checkpoint-basierten Hochverfügbarkeit mit Netzwerkpaketpufferung in der Hardware

Country Status (5)

Country Link
US (1) US8769533B2 (de)
CN (1) CN102891882B (de)
CA (1) CA2776184C (de)
DE (1) DE102012212511B4 (de)
GB (1) GB2493047B (de)

Families Citing this family (26)

* 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
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
US9032248B1 (en) * 2012-10-04 2015-05-12 Amazon Technologies, Inc. Memory write tracking for virtual machines
US9069594B1 (en) * 2012-12-27 2015-06-30 Emc Corporation Burst buffer appliance comprising multiple virtual machines
US9280371B2 (en) * 2013-07-10 2016-03-08 International Business Machines Corporation Utilizing client resources during mobility operations
US9471491B2 (en) 2013-11-06 2016-10-18 International Business Machines Corporation Cache configured to log addresses of high-availability data
US9288135B2 (en) * 2013-12-13 2016-03-15 International Business Machines Corporation Managing data flows in software-defined network using network interface card
US20150205688A1 (en) * 2013-12-30 2015-07-23 Stratus Technologies Bermuda Ltd. Method for Migrating Memory and Checkpoints in a Fault Tolerant System
ES2652262T3 (es) 2013-12-30 2018-02-01 Stratus Technologies Bermuda Ltd. Método de retardar puntos de comprobación inspeccionando paquetes de red
US9652338B2 (en) 2013-12-30 2017-05-16 Stratus Technologies Bermuda Ltd. Dynamic checkpointing systems and methods
WO2015102875A1 (en) 2013-12-30 2015-07-09 Stratus Technologies Bermuda Ltd. Checkpointing systems and methods of using data forwarding
KR102209525B1 (ko) * 2014-01-06 2021-01-29 삼성전자주식회사 마이크로 서버, mac 주소 할당 방법 및 컴퓨터 판독가능 기록매체
US9529997B2 (en) * 2014-09-19 2016-12-27 Intel IP Corporation Centralized platform settings management for virtualized and multi OS systems
US10620979B2 (en) 2014-10-08 2020-04-14 Intel Corporation Techniques for checkpointing/delivery between primary and secondary virtual machines
US9774540B2 (en) 2014-10-29 2017-09-26 Red Hat Israel, Ltd. Packet drop based dynamic receive priority for network devices
US9430272B2 (en) * 2014-12-17 2016-08-30 Microsoft Technology Licensing, Llc Efficiently providing virtual machine reference points
CN106487766B (zh) 2015-08-31 2021-10-29 微软技术许可有限责任公司 具有独立服务子系统的路由设备
US10162559B2 (en) * 2016-09-09 2018-12-25 Veritas Technologies Llc Systems and methods for performing live migrations of software containers
CN107026852B (zh) * 2017-03-22 2020-05-05 中电长城网际系统应用广东有限公司 一种解决大规模视频云应用中的网络性能瓶颈的方法
US10884878B2 (en) * 2018-06-07 2021-01-05 International Business Machines Corporation Managing a pool of virtual functions
US11822946B2 (en) * 2018-06-28 2023-11-21 Cable Television Laboratories, Inc. Systems and methods for secure network management of virtual network functions
US11563677B1 (en) * 2018-06-28 2023-01-24 Cable Television Laboratories, Inc. Systems and methods for secure network management of virtual network function
US11356362B2 (en) * 2019-01-21 2022-06-07 Vmware, Inc. Adaptive packet flow monitoring in software-defined networking environments
WO2023081473A1 (en) * 2021-11-08 2023-05-11 Smashcut, Inc. Virtualization-based collaborative activity framework with predictive preloading of virtual machines
US12032997B2 (en) 2022-01-16 2024-07-09 Microsoft Technology Licensing, Llc Reducing interrupts using buffering for data processing

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US6826616B2 (en) * 1998-10-30 2004-11-30 Science Applications International Corp. Method for establishing secure communication link between computers of virtual private network
US6798777B1 (en) * 2000-04-17 2004-09-28 Juniper Networks, Inc. Filtering and route lookup in a switching device
US7620955B1 (en) * 2001-06-08 2009-11-17 Vmware, Inc. High-performance virtual machine networking
US7093086B1 (en) * 2002-03-28 2006-08-15 Veritas Operating Corporation Disaster recovery and backup using virtual machines
US20080177994A1 (en) * 2003-01-12 2008-07-24 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows
US7529897B1 (en) * 2003-12-31 2009-05-05 Vmware, Inc. Generating and using checkpoints in a virtual computer system
US8204931B2 (en) * 2004-12-28 2012-06-19 Sap Ag Session management within a multi-tiered enterprise network
US20060150010A1 (en) * 2005-01-03 2006-07-06 Stiffler Jack J Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support
US7681075B2 (en) 2006-05-02 2010-03-16 Open Invention Network Llc Method and system for providing high availability to distributed computer applications
US20070174484A1 (en) * 2006-01-23 2007-07-26 Stratus Technologies Bermuda Ltd. Apparatus and method for high performance checkpointing and rollback of network operations
US7962566B2 (en) * 2006-03-27 2011-06-14 Sap Ag Optimized session management for fast session failover and load balancing
US7571307B2 (en) * 2006-07-26 2009-08-04 International Business Machines Corporation Capacity upgrade on-demand for I/O adapters
US20080267176A1 (en) * 2007-04-27 2008-10-30 Ganesh Perinkulam I Selective preservation of network state during a checkpoint
US8407518B2 (en) 2007-10-26 2013-03-26 Vmware, Inc. Using virtual machine cloning to create a backup virtual machine in a fault tolerant system
US8006079B2 (en) * 2008-02-22 2011-08-23 Netapp, Inc. System and method for fast restart of a guest operating system in a virtual machine environment
US8351426B2 (en) * 2008-03-20 2013-01-08 International Business Machines Corporation Ethernet virtualization using assisted frame correction
US7843919B2 (en) * 2008-03-20 2010-11-30 International Business Machines Corporation Ethernet virtualization using a network packet alteration
JP5040773B2 (ja) * 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム
US8667187B2 (en) * 2008-09-15 2014-03-04 Vmware, Inc. System and method for reducing communication overhead between network interface controllers and virtual machines
US8499297B2 (en) * 2008-10-28 2013-07-30 Vmware, Inc. Low overhead fault tolerance through hybrid checkpointing and replay
US8146082B2 (en) * 2009-03-25 2012-03-27 Vmware, Inc. Migrating virtual machines configured with pass-through devices
US20100287262A1 (en) 2009-05-08 2010-11-11 Uri Elzur Method and system for guaranteed end-to-end data flows in a local networking domain
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US8549241B2 (en) * 2010-01-06 2013-10-01 Vmware, Inc. Method and system for frequent checkpointing
US8359367B2 (en) * 2010-01-08 2013-01-22 International Business Machines Corporation Network support for system initiated checkpoints
US8898518B2 (en) * 2010-05-18 2014-11-25 Vmware, Inc. Method and system for enabling checkpointing fault tolerance across remote virtual machines
US8171338B2 (en) * 2010-05-18 2012-05-01 Vmware, Inc. Method and system for enabling checkpointing fault tolerance across remote virtual machines
US8739177B2 (en) * 2010-06-21 2014-05-27 Intel Corporation Method for network interface sharing among multiple virtual machines

Also Published As

Publication number Publication date
CA2776184C (en) 2019-05-07
US20130024855A1 (en) 2013-01-24
CN102891882A (zh) 2013-01-23
CA2776184A1 (en) 2013-01-18
GB2493047A (en) 2013-01-23
DE102012212511B4 (de) 2019-03-21
GB2493047B (en) 2013-06-05
GB201208269D0 (en) 2012-06-20
CN102891882B (zh) 2016-07-06
US8769533B2 (en) 2014-07-01

Similar Documents

Publication Publication Date Title
DE102012212511B4 (de) Betriebsverfahren eines Datenverarbeitungssystems, Datenverarbeitungsvorrichtung und Computerprogrammprodukt zum Bereitstellen einer Checkpoint-basierten Hochverfügbarkeit mit Netzwerkpaketpufferung in der Hardware
DE112013006063B4 (de) Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung
DE102015105884B4 (de) Rechenknoten und Verfahren zur Migration einer virtuellen Maschine, Rechenzentrummanager zur Migration virtueller Maschinen, Maschinenlesbares Speichermedium und Rechenvorrichtungen
DE112011103666B4 (de) Speicherverwaltung in Cluster-Datenverarbeitungssystemen
DE69125840T2 (de) Fehlertolerierendes rechnersystem
US10050850B2 (en) Rack awareness data storage in a cluster of host computing devices
DE112010003554B4 (de) Symmetrische Direktmigration von Virtuellen Maschinen
US9940210B2 (en) Healing cloud services during upgrades
DE112010001469B4 (de) Flexible Integration von Endpunktlogik in unterschiedlichen Plattformen
EP3252608A1 (de) Knotensystem, servervorrichtung, skalierungssteuerungsverfahren und programm
DE112017003294B4 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE102016105589A1 (de) Anwenden von Firmware-Updates in einem System mit Null-Stillstandszeit durch wahlweise Abschalten und Einschalten von Hardware unter Verwenden einer Hypervisor-Schicht
US9052833B2 (en) Protection of former primary volumes in a synchronous replication relationship
DE112012002241T5 (de) Migration eines transparenten Dateisystems zu einem neuen physischen Speicherort
DE112012002404B4 (de) Konfiguration und Management virtueller Netzwerke
DE102014108249A1 (de) Realisieren erweiterter Fehlerbehandlung für einen gemeinsam genutzten Adapter in einem virtualisierten System
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE112013004187T5 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE112020003608T5 (de) Wiederherstellung der verbindungsgeschwindigkeit in einem datenspeichersystem
DE112010004140T5 (de) Dynamischer Austausch von Replikat-Datenträgern in einem Verbund
DE102022108863A1 (de) Sicherung von daten für einen namensraum, der einem mandanten zugeordnet ist
EP2801030A1 (de) Verfahren und apparat zur bildung von software fault-containment units (swfcus) in einem verteilten echtzeitsystem
DE112018002049T5 (de) Verfahren zum erkennen entfernt angeordneter knoten und zum überprüfen sowie verbinden von übertragungskanälen
DE112012004554B4 (de) Serielle Verarbeitung des Zugriffs auf Daten bei Datenverarbeitungsumgebungen mitmehreren Grossrechnern
DE102016008158A1 (de) System und steuerverfahren

Legal Events

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

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: SPIES DANNER & PARTNER PATENTANWAELTE PARTNERS, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R016 Response to examination communication
R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final