DE102013106923A1 - A method of operating a high availability computer system using one or more virtual machines - Google Patents
A method of operating a high availability computer system using one or more virtual machines Download PDFInfo
- Publication number
- DE102013106923A1 DE102013106923A1 DE102013106923.1A DE102013106923A DE102013106923A1 DE 102013106923 A1 DE102013106923 A1 DE 102013106923A1 DE 102013106923 A DE102013106923 A DE 102013106923A DE 102013106923 A1 DE102013106923 A1 DE 102013106923A1
- Authority
- DE
- Germany
- Prior art keywords
- application
- application program
- control system
- virtual machine
- application programs
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/202—Error 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/2023—Failover techniques
- G06F11/203—Failover techniques using migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1487—Generic software techniques for error detection or fault masking using N-version programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/202—Error 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/2038—Error 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
Abstract
Die Erfindung betrifft ein Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen, bei welchem zur Ausführung einer Anwendungsapplikation mehrere Anwendungsprogramme bereitgestellt werden. Die Anwendungsprogramme können nicht identisch oder identisch zueinander sein. Bei der Verwendung eines einzigen Steuerungssystems mit zwei nicht identischen Anwendungsprogrammen wird Softwarehochverfügbarkeit erreicht. Bei der Verwendung von zwei oder mehr Steuerungssystemen mit nicht identischen oder identischen Anwendungsprogrammen wird Soft- und Hardwarehochverfügbarkeit erreicht. Identische Anwendungsprogramme werden nach dem Master/Slave Verfahren betrieben. Nicht identische Anwendungsprogramme werden von den virtuellen Maschinen zeitgleich betrieben, wobei Zugriffe auf das Ein-/Ausgabesystem synchronisiert werden. The invention relates to a method for operating a high-availability computer system using one or more virtual machines, in which a plurality of application programs are provided for executing an application application. The application programs may not be identical or identical to each other. Using a single control system with two non-identical application programs achieves software uptime. When using two or more control systems with non-identical or identical application programs, software and hardware uptime is achieved. Identical application programs are operated according to the master / slave method. Non-identical application programs are operated by the virtual machines at the same time, whereby accesses to the input / output system are synchronized.
Description
Die Erfindung betrifft ein Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Software Maschinen, nachfolgend virtuelle Maschine genannt. The invention relates to a method for operating a high-availability computer system using one or more virtual software machines, referred to below as a virtual machine.
Hochverfügbare Computersysteme sind bereits bekannt. Sie weisen eine Master-/Slave-Konfiguration auf, wobei jeweils der Master einen technischen Prozess bzw. eine Anwendungsapplikation durch Ausführung eines Anwendungsprogrammes aktiv steuert, während der Slave im Standbymodus betrieben wird und bei einem Ausfall des Masters die Steuerung des technischen Prozesses übernimmt. Bei diesem technischen Prozess kann es sich beispielsweise um den Arbeitsvorgang einer Produktionsmaschine handeln, welcher vom Master unter Verwendung von Zugriffen auf ein Eingabe-/Ausgabe-System gesteuert wird. Highly available computer systems are already known. They have a master / slave configuration, with the master in each case actively controlling a technical process or an application application by executing an application program, while the slave is operated in standby mode and assuming control of the technical process in the event of a failure of the master. For example, this engineering process may be the operation of a production machine controlled by the master using access to an input / output system.
Aus der
Die Lösung in
Die Aufgabe der Erfindung besteht darin, ein Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen bereitzustellen, bei welchem bei einem Ausfall des einen technischen Prozess steuernden Anwendungsprogrammes die Weiterführung des technischen Prozesses beschleunigt ist. The object of the invention is to provide a method for operating a fault-tolerant computer system using one or more virtual machines in which, in the event of a failure of the application program controlling a technical process, the continuation of the technical process is accelerated.
Diese Aufgabe wird durch ein Verfahren mit den im Anspruch 1 angegebenen Merkmalen gelöst. Vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung sind in den abhängigen Ansprüchen angegeben. This object is achieved by a method having the features specified in
Die Vorteile der Erfindung ergeben sich aus deren nachfolgender beispielhafter Erläuterung anhand der Figuren. Es zeigt The advantages of the invention will become apparent from the following exemplary explanation with reference to FIGS. It shows
Gemäß der vorliegenden Erfindung wird ein Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen bereitgestellt. Dieses Computersystem weist ein, zwei oder mehr Steuerungssysteme auf. Sind zwei oder mehr Steuerungssysteme vorhanden, dann sind diese durch bidirektionale Kommunikationsverbindungen miteinander gekoppelt. Jedes dieser Steuerungssysteme enthält eine virtuelle Maschine, wobei die virtuellen Maschinen verschiedener Steuerungssysteme identisch sind. Jede virtuelle Maschine implementiert eine komplette Laufzeitumgebung für ein oder mehrere Anwendungsprogramme. According to the present invention, there is provided a method of operating a high availability computer system using one or more virtual machines. This computer system has one, two or more control systems. If there are two or more control systems, these are coupled together by bidirectional communication links. Each of these control systems includes a virtual machine where the virtual machines of different control systems are identical. Each virtual machine implements a complete runtime environment for one or more application programs.
Ein Anwender des Computersystems erstellt in einem ersten Schritt ein zur Ausführung einer Anwendungsapplikation vorgesehenes Anwendungsprogramm in einer gewünschten Programmiersprache. Dadurch entsteht ein Quellencode, der von einem Compiler in die Maschinensprache der virtuellen Maschine übersetzt wird. Diese Maschinensprache wird dann von einem Interpreter der virtuellen Maschine ausgeführt. A user of the computer system creates in a first step an application program provided for executing an application application in a desired programming language. This creates a source code that is translated by a compiler into the machine language of the virtual machine. This machine language is then executed by an interpreter of the virtual machine.
Die
Während dieses Betreibens der Anwendungsprogramme durch die virtuelle Maschine erfolgt eine Synchronisierung der beiden Anwendungsprogramme durch die virtuellen Maschine, wobei diese Synchronisierung bei jedem Zugriff eines der beiden Anwendungsprogramme auf das Eingangs-/Ausgangssystem des Steuerungssystems vorgenommen wird. Will eines der Anwendungsprogramme an einer bestimmten Programmstelle Daten schreiben, dann stoppt die virtuelle Maschine dieses Anwendungsprogramm solange, bis auch das andere Anwendungsprogramm auf das I/O System zugreift. Danach werden beide Anwendungsprogramme zeitsynchron fortgesetzt. Durch diese Synchronisation laufen beide Anwendungsprogramme im Hinblick auf die Bearbeitung der Eingangs-/Ausgangssignale synchron und sind in sich konsistent. During this operation of the application programs by the virtual machine, synchronization of the two application programs by the virtual machine takes place, this synchronization being performed each time one of the two application programs accesses the input / output system of the control system. If one of the application programs wants to write data at a particular program location, then the virtual machine stops this application program until the other application program also accesses the I / O system. Thereafter, both application programs are continued synchronously. Through this synchronization, both application programs are synchronized with respect to the processing of the input / output signals and are inherently consistent.
Während dieses Betreibens der Anwendungsprogramme überwacht die virtuelle Maschine die beiden Anwendungsprogramme in Bezug auf das Auftreten von Fehlern. Zu diesen Fehlern gehören beispielsweise das Auftreten einer Division durch Null, ein stetig steigender Speicherbedarf, usw.. Erkennt die virtuelle Maschine das Auftreten eines Fehlers, dann wird das betroffene Anwendungsprogramm von der virtuellen Maschine abgebrochen. Ist der Fehler bei Anwendung AW1 aufgetreten, dann führt die virtuelle Maschine eine stoßfreie Umschaltung von Anwendung AW1 nach Anwendung AW2 durch, d. h. vom ersten Anwendungsprogramm auf das zweite Anwendungsprogramm. Bei dieser stoßfreien Umschaltung tritt keinerlei Datenverlust auf, da die beiden Anwendungsprogramme stets Zugriff auf die momentan gültigen Laufzeitdaten haben und in Bezug auf ihre Zugriffe auf das Eingang-/Ausgangsystem miteinander synchronisiert sind. Nach dieser stoßfreien Umschaltung wird das zweite Anwendungsprogramm zur weiteren Steuerung der Anwendungsapplikation verwendet. Auf diese Weise wird nach alledem eine Software Hochverfügbarkeit und damit auch eine Hochverfügbarkeit der Anwendungsapplikation erreicht. During this operation of the application programs, the virtual machine monitors the two application programs for the occurrence of errors. These errors include, for example, the occurrence of a division by zero, a steadily increasing memory requirement, and so on. If the virtual machine detects the occurrence of an error, then the affected application program is aborted by the virtual machine. If the error occurred in application AW1, then the virtual machine performs a bumpless switchover from application AW1 to application AW2, i. H. from the first application program to the second application program. This bumpless transfer does not lose any data because the two application programs always have access to the currently valid runtime data and are synchronized with each other in terms of their access to the input / output system. After this bumpless transfer, the second application program is used to further control the application application. In this way, software high availability and thus high availability of the application application is achieved after all.
Durch die Verwendung zweier nicht identischer Anwendungsprogramme wird die Wahrscheinlichkeit des Auftretens von Software Gleichtaktfehlern, d. h. im Falle einer identischen Programmierung auftretender Fehler, vermindert. Using two non-identical application programs increases the likelihood of software common mode errors, i. H. in the case of identical programming errors occurring, reduced.
Tritt bei diesem Ausführungsbeispiel jedoch ein kompletter Stromausfall im (einzigen) Steuerungssystem auf, dann ist eine weitere Steuerung der Anwendungsprogramme und damit eine Ausführung der Anwendungsapplikation nicht mehr möglich. Occurs in this embodiment, however, a complete power failure in the (single) control system, then a further control of the application programs and thus an execution of the application application is no longer possible.
Die
Im Falle eines im ersten Steuerungssystem auftretenden Fehlers, der nicht vom ersten Anwendungsprogramm verursacht wurde, wird das erste Anwendungsprogramm gestoppt und es werden die Laufzeitdaten und die Peripheriedaten des ersten Anwendungsprogrammes an das zweite Steuerungssystem übertragen. Das dort vorhandene identische Anwendungsprogramm übernimmt die weitere Ausführung der Anwendungsapplikation. In the case of an error occurring in the first control system which was not caused by the first application program, the first application program is stopped and the runtime data and the peripheral data of the first application program are transmitted to the second control system. The existing identical application program takes over the further execution of the application application.
Die Umschaltung zwischen dem im ersten Steuerungssystem implementierten ersten Anwendungsprogramm auf das im zweiten Steuerungssystem implementierte, identische zweite Anwendungsprogramm erfolgt stoßfrei, d. h. ohne Datenverlust, da die Laufzeitdaten und die Peripheriedaten des ersten Anwendungsprogrammes beim Auftreten eines Fehlers dem zweiten Anwendungsprogramm bereitgestellt werden. The switching between the first application program implemented in the first control system and the identical second application program implemented in the second control system takes place bumplessly, ie. H. without data loss, since the runtime data and the peripheral data of the first application program are provided to the second application program when an error occurs.
Die
Die Umschaltung zwischen dem im ersten Steuerungssystem implementierten ersten Anwendungsprogramm auf das im zweiten Steuerungssystem implementierte, nicht identische zweite Anwendungsprogramm erfolgt stoßfrei, da die Zugriffe beider Anwendungsprogramme auf das Eingabe-/Ausgabesystem synchronisiert erfolgen. The switchover between the first application program implemented in the first control system and the non-identical second application program implemented in the second control system is bum-free, since the accesses of both application programs to the input / output system are synchronized.
Die
Die virtuellen Maschinen überprüfen jeweils die ihr zugeordneten, nicht identischen Anwendungsprogramme, welche zeitgleich ausgeführt werden und bezüglich ihrer Zugriffe auf das Eingabe/Ausgabesystem synchronisiert werden, und überwachen auch den Zustand des jeweiligen Steuerungssystems. The virtual machines check their assigned, non-identical application programs, which are executed at the same time and synchronized with respect to their accesses to the input / output system, and also monitor the state of the respective control system.
Im Falle eines im ersten Steuerungssystem auftretenden Fehlers, bei dem es sich um einen Laufzeitfehler eines Anwendungsprogrammes handelt, wird das fehlerhafte Anwendungsprogramm von der virtuellen Maschine gestoppt. Die virtuelle Maschine prüft nun den Typ des Fehlers. Abhängig vom erkannten Fehler werden entweder:
- – Die Laufzeit- und Peripheriedaten des gestoppten Anwendungsprogammes an das zweite Steuerungssystem übertragen. Das identische Anwendungsprogramm des zweiten Steuerungssystems übernimmt die weitere Ausführung der Anwendungsapplikation oder:
- – Das nicht identische Anwendungsprogramm des ersten Steuersystems übernimmt die weitere Ausführung der Anwendungsapplikation.
- - Transfer the runtime and peripheral data of the stopped application program to the second control system. The identical application program of the second control system takes over the further execution of the application application or:
- - The non-identical application program of the first control system takes over the further execution of the application application.
Die
Das Laufzeitsystem implementiert eine komplette Laufzeitumgebung für ein oder mehrere Anwenderprogramme. Dabei erstellt ein Anwender in einem ersten Schritt ein Anwendungsprogramm
Wird dann im Normalbetrieb des Computersystems vom Interpreter
Mittels der Eingabe-/Ausgabeeinheit
Die
Die
Beide Systeme enthalten eine Befehlsverarbeitungseinheit
Mittels des Agenten
Im Betrieb mit identischen Anwenderprogrammen erfolgt die Ausführung der Anwendungsapplikation unter Steuerung der im Mastersystem vorgesehenen virtuellen Maschine, die das im Mastersystem vorgesehene Anwendungsprogramm zur Ausführung der Anwendungsapplikation verwendet. Das Mastersystem hat dabei die alleinige Kontrolle über die Anwendungsapplikation. Das Slavesystem befindet sich im Standbymodus. Die virtuelle Maschine des Slavesystems hat ein identisches Anwendungsprogramm geladen, das jedoch im Normalbetrieb vom zugehörigen Interpreter nicht ausgeführt wird. Der Interpreter selbst befindet sich ebenfalls in einem Standbymodus. Das Slavesystem überwacht das Mastersystem durch eine zyklische Kommunikation über die Kommunikationsverbindung zwischen den beiden Systemen. In operation with identical user programs, the application application is executed under the control of the virtual machine provided in the master system, which uses the application program provided in the master system for executing the application application. The master system has the sole control over the application application. The Slave system is in standby mode. The virtual machine of the slave system has loaded an identical application program, which, however, is not executed in normal operation by the associated interpreter. The interpreter itself is also in a standby mode. The slave system monitors the master system through cyclic communication over the communication link between the two systems.
Das Mastersystem fährt mit der Ausführung der Anwendungsapplikation fort, solange im Mastersystem kein Fehler auftritt. The master system continues execution of the application application as long as no error occurs in the master system.
Mögliche Fehler lassen sich in die beiden folgenden Kategorien aufteilen:
- – von der virtuellen Maschine nicht detektierbare Fehler und
- – von der virtuellen Maschine detektierbare Fehler.
- - errors undetectable by the virtual machine and
- - Errors detectable by the virtual machine.
Zu den Fehlern, die von der virtuellen Maschine nicht detektiert werden können, gehören beispielsweise ein plötzlicher Spannungsausfall des Mastersystems sowie ein Totalausfall der Hardwareplattform. Errors that can not be detected by the virtual machine include, for example, a sudden power failure of the master system and a total failure of the hardware platform.
Ein plötzlicher Spannungsausfall führt zu einem sofortigen Systemstillstand, sofern keine Batteriepufferung vorgesehen ist, welche die Spannung noch für einige Zeit aufrechterhält. Ein totaler Ausfall der Hardwareplattform des Mastersystems liegt vor, wenn systemrelevante Hardwarebaugruppen des Mastersystems wie beispielsweise Speicherbaugruppen oder der Prozessor selbst nicht mehr funktionsfähig sind. In derartigen Fällen kann die virtuelle Maschine keine kontrollierte Umschaltung auf das Slavesystem initiieren. A sudden power failure will result in an immediate system shutdown unless battery backup is provided, which will maintain the voltage for some time. A total failure of the hardware platform of the master system occurs when system-relevant hardware modules of the master system such as memory modules or the processor itself are no longer functional. In such cases, the virtual machine can not initiate a controlled switch to the slave system.
Die virtuelle Maschine kann hingegen auftretende Fehler detektieren:
- – Fehler im Eingabe/Ausgabesystem,
- – kritische Fehler im Anwendungsprogramm,
- – einen stetig steigenden Ressourcenverbrauch des Anwendungsprogrammes,
- – Fehler in den Subsystemen der virtuellen Maschine selbst.
- - errors in the input / output system,
- - critical errors in the application program,
- A constantly increasing resource consumption of the application program,
- - Errors in the subsystems of the virtual machine itself.
Fehler im Eingabe/Ausgabesystem treten auf, wenn die I/O-Hardware
Im Wesentlichen werden zwei Redundanzfälle unterschieden:
- – Redundanzfall bei nicht detektierbaren Fehlern
- – Redundanzfall bei detektierbaren Fehlern.
- - Redundancy case with undetectable errors
- - Redundancy case with detectable errors.
Tritt ein Redundanzfall durch einen nicht detektierbaren Fehler auf, dann kann das Mastersystem keine kontrollierte Umschaltung auf das Slavesystem vornehmen. Da das Slavesystem das Mastersystem über den Kommunikationskanal zyklisch überwacht und auch das aktuelle Abbild über Eingangs- und Ausgangssignale zyklisch mitgeteilt bekommt, übernimmt der Slave automatisch die Kontrolle, wenn nach Ablauf der Zykluszeit die Kommunikation mit dem Master nicht mehr stattfindet. Dabei verwendet der Slave die zuletzt vom Master erhaltenen Werte der I/O-Signale. Da sich zum Zeitpunkt der Übernahme der Kontrolle durch den Slave die I/O-Signale geändert haben können, ist der Slave nicht im Besitz der letzten Änderung der I/O-Signale. Dies bedeutet, dass sein Abbild dieser Signale eventuell inkonsistent ist. If a redundancy case occurs due to an undetectable error, then the master system can not make a controlled switchover to the slave system. Since the slave system cyclically monitors the master system via the communication channel and also receives the current image cyclically via input and output signals, the slave automatically takes over control if the communication with the master no longer takes place after the cycle time has expired. The slave uses the last values of the I / O signals received from the master. Since the I / O signals may have changed at the time of taking control of the slave, the slave is not in possession of the last change in the I / O signals. This means that its image of these signals may be inconsistent.
Tritt hingegen ein Redundanzfall durch einen von der virtuellen Maschine detektierbaren Fehler auf, so kann das Mastersystem eine stoßfreie Umschaltung auf das Slavesystem durchführen, bei welchem kein Informationsverlust auftritt. If, on the other hand, a redundancy case occurs due to an error detectable by the virtual machine, the master system can carry out a bumpless switchover to the slave system in which no loss of information occurs.
Dieser letztgenannte Fall wird nachfolgend anhand der
Die
Der Interpreter des Mastersystems führt den Befehl IOSYS $R1 aus und ruft die Schreibfunktion des I/O-Systems auf, um ein entsprechendes Ausgangssignal zu setzen. Bei Hardwarezugriff des I/O-Systems tritt ein Fehler F auf, so dass das Signal nicht geschrieben werden kann. Das I/O-System meldet an die Fehlerbehandlung der virtuellen Maschine einen Fehler der I/O-Hardware. Die virtuelle Maschine hält die Programmbearbeitung durch den Interpreter an, so dass der Befehlszeiger des Registers auf den Befehl IOSYS $R1 verweist und stehen bleibt. The interpreter of the master system executes the command IOSYS $ R1 and calls the write function of the I / O system to set a corresponding output signal. Hardware access of the I / O system causes an error F, so that the signal can not be written. The I / O system reports to the error handling of the virtual machine an error in the I / O hardware. The virtual machine stops program execution by the interpreter, so the register's instruction pointer points to the IOSYS $ R1 command and stops.
Durch den Kommunikationskanal informiert der Master den Slave, dass ein Redundanzfall eingetreten ist. Through the communication channel, the master informs the slave that a redundancy case has occurred.
Der Master überträgt die Werte aller I/O-Signale sowie die Laufzeitinformation des Interpreters bestehend aus den Arbeitsregistern und dem Datensegment des Anwendungsprogrammes zum Slave. The master transmits the values of all I / O signals as well as the runtime information of the interpreter consisting of the working registers and the data segment of the application program to the slave.
Dies ist in der
Der Slave übernimmt die aktuellen Werte aller I/O-Signale, die dem genauen Abbild des zu steuernden Prozesses zum Zeitpunkt des Fehlers entsprechen. Weiterhin initialisiert die virtuelle Maschine des Slavesystems den Interpreter mit der Laufzeitinformation des Mastersystems. Dabei werden alle variablen Werte der Applikation aus dem Datensegment des Masters in das Datensegment des Slaves geschrieben. Ebenso werden die Inhalte sämtlicher Register des Interpreters des Masters in die Register des Interpreters des Slaves übernommen. Das Befehlszeigerregister wird dabei so initialisiert, dass es auf denselben Maschinenbefehl verweist, der im Master einen Fehler verursacht hat. In diesem Anwendungsfall zeigt der Befehlszeiger auf den Maschinenbefehl IOSYS $R1 an derselben Stelle im Codesegment. Anschließend wird der Interpreter des Slaves gestartet, der jetzt genau diesen Maschinenbefehl ausführt, da dieser Befehl aufgrund eines Fehlers in I/O-System im Master nicht ausgeführt werden konnte. Der Interpreter des Slaves führt diesen I/O-Befehl in der bereits beschriebenen Art und Weise aus, indem er das entsprechende Signal in der eigenen, redundant vorhandenen I/O-Hardware setzt. The slave accepts the current values of all I / O signals that correspond to the exact image of the process to be controlled at the time of the error. Furthermore, the virtual machine of the slave system initializes the interpreter with the runtime information of the master system. All variable values of the application from the data segment of the master are written to the data segment of the slave. Also the contents of all registers of the interpreter of the master are transferred to registers of the interpreter of the slave. The instruction pointer register is initialized to refer to the same machine instruction that caused an error in the master. In this case, the instruction pointer points to the machine command IOSYS $ R1 at the same position in the code segment. Then the interpreter of the slave is started, which now executes exactly this machine command, because this command could not be executed due to an error in the I / O system in the master. The interpreter of the slave executes this I / O command in the manner already described by setting the corresponding signal in its own redundant I / O hardware.
In diesem Verfahren kann die Programmausführung befehlsgenau vom Master auf den Slave umgeschaltet werden, ohne dass Laufzeitinformation der Applikation sowie aktuelle Werte von I/O-Signalen verloren gehen. Herkömmliche Systeme benötigen für eine möglichst exakte Umschaltung eine zyklische Synchronisation zwischen Master und Slave während des Normalbetriebes und müssen mitunter eine Historie von applikationsspezifischen Zustandsdaten mitführen. In this procedure, the program execution can be switched from the master to the slave with the correct command, without loss of runtime information of the application as well as current values of I / O signals. Conventional systems require a cyclic synchronization between master and slave during normal operation for as exact a changeover as possible and must sometimes carry a history of application-specific status data.
Bei dem hier beschriebenen Verfahren ist weder eine zyklische Synchronisation im Normalbetrieb noch das Mitführen einer Historie von applikationsspezifischen Zustandsdaten notwendig. Durch das Übertragen der Laufzeitinformation des Interpreters vom Master zum Slave kann die Anwendungsapplikation im Slavesystem befehlsgenau weitergeführt werden. In the method described here, neither a cyclic synchronization in normal operation nor the carrying of a history of application-specific status data is necessary. By transferring the runtime information of the interpreter from the master to the slave, the application application in the slave system can be continued with command accuracy.
Die
Bei diesem Ausführungsbeispiel erfolgt beim Auftreten eines Fehlers im Eingabe/Ausgabesystem
Die Verwendung verschiedener, d. h. beispielsweise eine unterschiedliche Programmierung und damit unterschiedlichen Programmcode aufweisender Anwendungsprogramme A und B, die zur Ausführung derselben Anwendungsapplikation vorgesehen sind, hat den Vorteil, dass sogenannte Gleichtaktfehler vermieden werden. Gleichtaktfehler würden auftreten, wenn im Falle eines Fehlers im Anwendungsprogramm des Masters eine Umschaltung vom Master zum Slave erfolgt und im Slave ein identisches Anwendungsprogramm, d. h. ein Anwendungsprogramm gleicher Implementierung, geladen wäre. The use of different, d. H. For example, a different programming and thus different program code having application programs A and B, which are provided for execution of the same application application, has the advantage that so-called common mode errors can be avoided. Common mode errors would occur if, in the event of a fault in the application program of the master, there is a switchover from the master to the slave and an identical application program in the slave, i. H. an application program of the same implementation would be loaded.
Grundsätzlich sind bei der Verwendung zweier verschiedener Anwendungsprogramme, die zur Ausführung derselben Anwendungsapplikation vorgesehen sind, folgende beiden Konfigurationen möglich:
- – die beiden verschiedenen Anwendungsprogramme sind – wie es in
der 10 dargestellt ist – in einem einzigen Steuerungssystem implementiert; - – die beiden verschiedenen Anwendungsprogramme sind in zwei verschiedenen Steuerungssystemen implementiert, wobei in jedem dieser Steuerungssystem eines der Anwendungsprogramme implementiert ist.
- - the two different application programs are - as it is in the
10 illustrated - implemented in a single control system; - The two different application programs are implemented in two different control systems, one of the application programs being implemented in each of these control systems.
Das in der
Im Normalbetrieb des in der
Damit beim Auftreten eines Fehlers in Anwendung A eine stoßfreie Umschaltung von Anwendung A zu Anwendung B erfolgen kann, wird bei jedem Zugriff eines der beiden Anwendungsprogramme auf das Eingabe/Ausgabesystem
Auf diese Weise wird eine Synchronisation der beiden Anwendungsprogramme sichergestellt, aufgrund derer die beiden Anwendungsprogramme, die aufgrund ihrer unterschiedlichen Implementierung unterschiedlichen Code ausführen, stets das gleiche Abbild der I/O-Signale besitzen. Dadurch sind die internen Zustandsdaten und Variablen des jeweiligen Anwendungsprogrammes im Hinblick auf die aktuellen Werte der I/O-Signale stets konsistent, so dass im Falle des Auftretens eines Fehlers in Anwendung A eine stoßfreie, datenverlustfreie Umschaltung von Anwendung A zu Anwendung B erfolgen kann. In this way, a synchronization of the two application programs is ensured, due to which the two application programs that perform different code due to their different implementation, always have the same image of the I / O signals. As a result, the internal state data and variables of the respective application program with respect to the current values of the I / O signals are always consistent, so that in the case of the occurrence of an error in application A bumpless, loss of data loss application A to application B can be done.
Die
Bei der in der
Das Mastersystem weist zwei Interpreter
Im Normalbetrieb werden im Mastersystem die beiden dort implementierten, verschiedenen Anwendungsprogramme A und B zur selben Zeit ausgeführt. Die im Slavesystem implementierten Anwendungsprogramme A und B befinden sich während des Normalbetriebes im Standby Modus. In normal operation, the two different application programs A and B implemented there are executed at the same time in the master system. The application programs A and B implemented in the slave system are in standby mode during normal operation.
Die Anwendungsprogramme A und B führen verschiedenen Code aus. Dabei führen die beiden Interpreter das ihnen jeweils zugeordnete Anwendungsprogramm aus und haben dabei keinen Zugriff auf den Laufzeitdatenbereich des jeweils anderen Anwendungsprogrammes. Damit eine befehlsgenaue Umschaltung vom Master auf den Slave im Fehlerfall durchgeführt werden kann, werden beide Anwendungsprogramme A und B (innerhalb einer virtuellen Maschine) beim Zugriff auf das I/O-System synchronisiert. Wenn beispielsweise nach dem Start der beiden Anwendungsprogramme ein bestimmtes Signal geschrieben werden soll und das Anwendungsprogramm A die entsprechende Stelle im Code zuerst erreicht, dann wird das Signal geschrieben und das I/O-System blockiert den Interpreter des Anwendungsprogrammes A solange, bis das Anwendungsprogramm B das gleiche Signal schreiben will. Sobald der Interpreter des Anwendungsprogrammes B dann ebenfalls das I/O-System aufruft, um das Signal zu schreiben, wird der wartende Interpreter des Anwendungsprogrammes A wieder fortgeführt, wobei der Interpreter des Anwendungsprogrammes B ebenfalls weiterläuft. The application programs A and B execute different code. The two interpreters execute the respective application program assigned to them and thereby have no access to the runtime data area of the respective other application program. In order to be able to perform a command-precise changeover from the master to the slave in the event of a fault, both application programs A and B (within a virtual machine) are synchronized when accessing the I / O system. For example, if after the start of the two application programs a particular signal is to be written and the application program A reaches the corresponding location in the code first, then the signal is written and the I / O system blocks the interpreter of the application program A until the application program B want to write the same signal. As soon as the interpreter of the application program B then also calls the I / O system to write the signal, the waiting interpreter of the application program A is continued again, wherein the Interpreter of application program B also continues to run.
Auf diese Weise wird eine Synchronisation der beiden Anwendungsprogramme auf I/O-Signalebene durchgeführt. Dadurch ist sichergestellt, dass beide Anwendungsprogramme, welche unterschiedlichen Code ausführen, immer das gleiche Abbild der I/O-Signale besitzen. Dadurch sind die internen Zustandsdaten und Variablen des jeweiligen Anwendungsprogrammes im Hinblick auf die aktuellen Werte der I/O-Signale stets konsistent. In this way, a synchronization of the two application programs on I / O signal level is performed. This ensures that both application programs that execute different code always have the same image of the I / O signals. As a result, the internal state data and variables of the respective application program are always consistent with regard to the current values of the I / O signals.
Aus der
Die virtuelle Maschine überträgt nun das Abbild aller I/O-Signale sowie die Laufzeitinformation des Anwendungsprogrammes B an das Slavesystem. Das Slavesystem initialisiert den Laufzeitdatenbereich seines Anwendungsprogrammes B, das sich im Standbymodus befindet, mit der vom Master erhaltenen Laufzeitinformation. Der Interpreter des Anwendungsprogrammes B im Slavesystem führt den nächsten Maschinenbefehl aus, in diesem Fall den Befehl LOAD $R2, $R1. The virtual machine now transmits the image of all I / O signals as well as the runtime information of application program B to the slave system. The slave system initializes the runtime data area of its application program B, which is in standby mode, with the runtime information received from the master. The interpreter of application program B in the slave system executes the next machine command, in this case the command LOAD $ R2, $ R1.
Auf diese Weise wird eine stoßfreie, befehlsgenaue Umschaltung vom Master zum Slave ohne Laufzeitdatenverlust ermöglicht. Dabei ist es nicht relevant, welches Anwendungsprogramm ausfällt, da das System immer die Laufzeitinformation des jeweils funktionsfähigen Anwendungsprogrammes an den Slave übertragen kann. Es muss in diesem Anwendungsfall weder eine zyklische Synchronisation im Normalbetrieb zwischen Master und Slave stattfinden, noch ist das Mitführen einer Historie von applikationsspezifischen Zustandsdaten notwendig. In dem hier beschriebenen Ausführungsbeispiel werden vom Anwender zwei verschiedene Anwendungsprogramme für dieselbe Anwendungsapplikation implementiert. Das hier beschriebene Verfahren ist im Hinblick auf die redundant vorhandenen Anwendungsprogramme skalierbar, so dass der Anwender theoretisch beliebig viele Anwendungsprogramme für dieselbe Anwendungsapplikation implementieren kann. Es erhöht sich in diesem Fall lediglich der Zeitbedarf für die Synchronisierung der Anwendungsprogramme bei I/O-Zugriffen. In this way, a bumpless, command-accurate switching from master to slave without runtime data loss is possible. It is irrelevant which application program fails because the system can always transmit the runtime information of the respective functional application program to the slave. In this application, there must be no cyclic synchronization in normal operation between master and slave, nor is it necessary to carry a history of application-specific status data. In the embodiment described here, the user implements two different application programs for the same application application. The method described here is scalable with regard to the redundant application programs, so that the user can theoretically implement any number of application programs for the same application application. In this case, only the time required for the synchronization of the application programs for I / O access increases.
Die vorstehend beschriebene Synchronisation der Anwendungsprogramme beim Zugriff auf I/O-Signale erfolgt, um zwei unabhängig voneinander laufende Anwendungsprogramme im Hinblick auf die Verarbeitung der I/O-Signale konsistent zu halten und ein redundantes Verhalten zu ermöglichen. Die beiden Anwendungsprogramme rufen Funktionen des I/O-Systems auf, um I/O-Signale zu schreiben oder zu lesen. Ruft eines der Anwendungsprogramme das I/O-System auf, um ein bestimmtes Signal mit einem bestimmten Wert zu schreiben, dann wird dieses Anwendungsprogramm solange blockiert, bis auch das andere Anwendungsprogramm das I/O-System aufruft. Das I/O-System prüft dabei, ob beide Anwendungsprogramme dasselbe Signal lesen oder mit dem gleichen Wert schreiben wollen. Dies bedeutet, dass eine konsistente Synchronisation nur dann möglich ist, wenn folgende Kriterien erfüllt sind:
- – beide Anwendungsprogramme greifen auf das gleiche Signal zu,
- – beide Anwendungsprogramme wollen die gleiche Operation auf dem Signal ausführen, d. h. beide Anwendungsprogramme wollen das Signal entweder lesen oder schreiben, und
- – wenn das Signal von beiden Anwendungsprogrammen geschrieben werden soll, wird geprüft, ob der gleiche Wert geschrieben werden soll.
- - both application programs access the same signal,
- - both application programs want to perform the same operation on the signal, ie both application programs want to either read or write the signal, and
- - if the signal is to be written by both application programs, it is checked whether the same value should be written.
Werden nicht alle vorgenannten Kriterien erfüllt, dann laufen beide Anwendungsprogramme nicht synchron und eine Redundanz ist nicht mehr gegeben. Da das I/O-System einen derartigen Synchronisationsfehler erkennt, kann das System entsprechend reagieren. Nachdem der Zugriff auf ein bestimmtes I/O-Signal unter erfolgreicher Prüfung der obigen Kriterien erfolgt ist, lässt das I/O-System beide Anwendungsprogramme unabhängig voneinander weiterlaufen, bis der nächste Zugriff auf ein I/O-Signal erfolgt. Auf diese Weise haben beide Anwendungsprogramme immer das aktuelle Abbild der I/O-Signale. Fällt nun ein Anwendungsprogramm aufgrund eines Fehlers aus, kann das weitere, redundante Anwendungsprogramm durch das konsistente Abbild der I/O-Signale alleine weiterlaufen, was eine stoßfreie Umschaltung vom fehlerhaften zum redundanten Anwendungsprogramm ermöglicht. Werden beide Anwendungsprogramme im selben Steuerungssystem ausgeführt, dann erfolgt die Synchronisation innerhalb des I/O-Systems über Betriebssystemmechanismen. Werden beide Anwendungsprogramme in verschiedenen Steuerungssystemen ausgeführt, dann wird die Synchronisation über den Austausch von Daten über eine Kommunikationsverbindung zwischen den Steuerungssystemen des Masters und des Slaves ausgeführt. If not all of the above criteria are met, then both application programs are out of sync and redundancy is no longer given. Since the I / O system detects such a synchronization error, the system can respond accordingly. After accessing a particular I / O signal under successful verification of the above criteria, the I / O system keeps both application programs running independently until the next access to an I / O signal occurs. In this way, both application programs always have the current image of the I / O signals. If an application program now fails due to an error, the further, redundant application program can continue to run through the consistent image of the I / O signals alone, which enables bumpless switching from the faulty to the redundant application program. If both application programs are executed in the same control system, synchronization takes place within the I / O system via operating system mechanisms. Be both Application programs executed in different control systems, then the synchronization is carried out via the exchange of data via a communication link between the control systems of the master and the slave.
Die virtuellen Maschinen werden bereits im Anlauf auf allen Computern gestartet und laufen, je nach Anwendungsfall, zeitlich parallel, nicht befehlssynchron, mit. Alle Betriebssystem technischen Anforderungen wie eine Reservierung von Speicherbedarf, etc., werden bereits beim Anlauf durchgeführt. Die virtuellen Maschinen bearbeiten jeweils ein oder mehrere Anwendungsprogramme zeitgleich. The virtual machines are already started at startup on all computers and run, depending on the application, in parallel time, not synchronous, with. All operating system technical requirements such as a reservation of storage requirements, etc., are already carried out at startup. The virtual machines each process one or more application programs at the same time.
Die Erfindung betrifft nach alledem ein Verfahren zum Betreiben eines hochverfügbaren Computersystems unter Verwendung einer oder mehrerer virtueller Maschinen, wobei zur Ausführung einer Anwendungsapplikation mehrerer Anwendungsprogramme bereitgestellt wurden. Diese können nicht identisch oder identisch zueinander sein. Wird ein einziges Steuerungssystem verwendet, welches mit zwei nicht identischen Anwendungsprogrammen ausgestattet ist, dann wird eine Softwarehochverfügbarkeit erreicht. Werden zwei oder mehr Steuerungssysteme, die mit identischen oder nicht identischen Anwendungsprogrammen ausgestattet sind, verwendet, dann wird eine Software- und Hardwarehochverfügbarkeit erreicht. Nicht identische Anwendungsprogramme werden von den virtuellen Maschinen zeitgleich betrieben, wobei Zugriffe aus das Ein-/Ausgabesystem synchronisiert werden. The invention, after all, relates to a method of operating a high availability computer system using one or more virtual machines having been provided for executing an application application of multiple application programs. These can not be identical or identical to each other. If a single control system is used which is equipped with two non-identical application programs, then software uptime is achieved. When two or more control systems equipped with identical or non-identical application programs are used, software and hardware uptime is achieved. Non-identical application programs are operated by the virtual machines at the same time, whereby accesses from the input / output system are synchronized.
ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.
Zitierte PatentliteraturCited patent literature
- DE 102005053275 A1 [0003, 0004] DE 102005053275 A1 [0003, 0004]
Claims (8)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102013106923.1A DE102013106923A1 (en) | 2013-07-02 | 2013-07-02 | A method of operating a high availability computer system using one or more virtual machines |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102013106923.1A DE102013106923A1 (en) | 2013-07-02 | 2013-07-02 | A method of operating a high availability computer system using one or more virtual machines |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102013106923A1 true DE102013106923A1 (en) | 2015-01-08 |
Family
ID=52106028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102013106923.1A Withdrawn DE102013106923A1 (en) | 2013-07-02 | 2013-07-02 | A method of operating a high availability computer system using one or more virtual machines |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102013106923A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3968152A1 (en) * | 2020-09-15 | 2022-03-16 | Siemens Aktiengesellschaft | Method for transmitting a software application from a first to a second data processing device |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102005053275A1 (en) | 2004-11-25 | 2006-06-08 | Fujitsu Siemens Computers Gmbh | Highly available interconnected computer system for operating a virtual back-up computer unit within itself has a virtual computer unit and a control device |
-
2013
- 2013-07-02 DE DE102013106923.1A patent/DE102013106923A1/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102005053275A1 (en) | 2004-11-25 | 2006-06-08 | Fujitsu Siemens Computers Gmbh | Highly available interconnected computer system for operating a virtual back-up computer unit within itself has a virtual computer unit and a control device |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3968152A1 (en) * | 2020-09-15 | 2022-03-16 | Siemens Aktiengesellschaft | Method for transmitting a software application from a first to a second data processing device |
WO2022058153A1 (en) * | 2020-09-15 | 2022-03-24 | Siemens Aktiengesellschaft | Method for transferring a software application from a first to a second data processing device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE602005003490T2 (en) | Distributed system with quorum redundancy and method for it | |
DE19810814B4 (en) | Computer system and status copying process for scalable software updates | |
DE2908316C2 (en) | Modular multi-processor data processing system | |
DE3127349C2 (en) | ||
DE102007025397B4 (en) | Multi-processor system and method of operation | |
EP0057756B1 (en) | Data exchange unit in multi-microcomputer systems operating in parallel | |
EP2466466B1 (en) | Method for detecting errors when executing a real-time operating system | |
EP2817682B1 (en) | Method for the failsafe operation of a process control system with redundant control devices | |
EP2513796B1 (en) | Method for operating a processor | |
EP1952239A1 (en) | Apparatus and method for eliminating errors in a system having at least two execution units with registers | |
DE112013007469B4 (en) | Communication system, standby device, communication method, and standby program | |
DE602004003327T2 (en) | Computer system and method of restarting by means of remote copying | |
DE60303468T2 (en) | Fault tolerant information processing device | |
DE19780639C2 (en) | Work-over system | |
EP1358554A1 (en) | Automatic startup of a cluster system after occurrence of a recoverable error | |
EP2732347A1 (en) | Method and system for the dynamic distribution of program functions in distributed control systems | |
DE4010109C2 (en) | Duplex computer system | |
DE10014390C2 (en) | Fault-tolerant computer system and method for switching over machining programs of a fault-tolerant computer system | |
WO2014161986A1 (en) | Control and data transfer system for redundant process control and method for firmware updating | |
DE102013106923A1 (en) | A method of operating a high availability computer system using one or more virtual machines | |
DE102015218898A1 (en) | Method for the redundant processing of data | |
EP3654121B1 (en) | Redundant automation system with a plurality of processing units for each hardware unit | |
DE1966991A1 (en) | FAIL-SAFE DATA PROCESSING SYSTEM | |
DE102005053275B4 (en) | Highly available computer network system | |
DE19983595B3 (en) | CPU unit and run alternative control method of a programmable controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R082 | Change of representative |
Representative=s name: ZIMMERMANN & PARTNER, DE Representative=s name: ZIMMERMANN & PARTNER PATENTANWAELTE MBB, DE |
|
R081 | Change of applicant/patentee |
Owner name: SCHORR, HUBERT, DE Free format text: FORMER OWNERS: CONCURRENT SOFTWARE GMBH, 97475 ZEIL, DE; GEFAZ MBH, 91301 FORCHHEIM, DE Owner name: GEFAZ MBH, DE Free format text: FORMER OWNERS: CONCURRENT SOFTWARE GMBH, 97475 ZEIL, DE; GEFAZ MBH, 91301 FORCHHEIM, DE |
|
R082 | Change of representative |
Representative=s name: ZIMMERMANN & PARTNER PATENTANWAELTE MBB, DE |
|
R012 | Request for examination validly filed | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |