CN113448773B - 容错系统 - Google Patents

容错系统 Download PDF

Info

Publication number
CN113448773B
CN113448773B CN202110176279.9A CN202110176279A CN113448773B CN 113448773 B CN113448773 B CN 113448773B CN 202110176279 A CN202110176279 A CN 202110176279A CN 113448773 B CN113448773 B CN 113448773B
Authority
CN
China
Prior art keywords
interrupt
synchronization information
host
instruction
bytecode
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.)
Active
Application number
CN202110176279.9A
Other languages
English (en)
Other versions
CN113448773A (zh
Inventor
吉田善贵
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.)
Yokogawa Electric Corp
Original Assignee
Yokogawa Electric 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
Priority claimed from JP2020053258A external-priority patent/JP7327235B2/ja
Application filed by Yokogawa Electric Corp filed Critical Yokogawa Electric Corp
Publication of CN113448773A publication Critical patent/CN113448773A/zh
Application granted granted Critical
Publication of CN113448773B publication Critical patent/CN113448773B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提供一种容错系统。容错系统(1)包括:主虚拟机(120),具有执行字节码并输出基于与执行的字节码相关的信息的同步信息的同步信息生成部(124)、以及拦截从外部输入的中断的第一中断拦截部(122);以及次虚拟机(220),具有基于同步信息执行字节码的同步执行部(224)、以及拦截中断的第二中断拦截部(222)。同步信息生成部(124)在取得中断的情况下,基于中断执行字节码。第一中断拦截部(122)将包含于字节码的接受中断的指令的执行中输入的中断输出到同步信息生成部(124)。

Description

容错系统
技术领域
本发明涉及一种容错系统。
背景技术
以往,已知一种容错系统,能够将由主虚拟机输入的虚拟中断定时准确地传递到次虚拟机,并且在次虚拟机中在相同的定时输入虚拟中断(例如参照专利文献1)。
专利文献1:日本专利公开公报特开2014-59749号
发明内容
需要一种以低负荷动作的容错系统。
本发明是鉴于上述问题而完成的,其目的在于提供一种能够以低负荷动作的容错系统。
几个实施方式的容错系统包括:主虚拟机,具有执行字节码并输出基于与执行的字节码相关的信息的同步信息的同步信息生成部、以及拦截从外部输入的中断的第一中断拦截部;以及次虚拟机,具有基于所述同步信息执行所述字节码的同步执行部、以及拦截所述中断的第二中断拦截部,所述同步信息生成部在取得所述中断的情况下,基于所述中断执行所述字节码,在所述字节码包含接受所述中断的指令的情况下,所述第一中断拦截部将接受所述中断的指令的执行中输入的所述中断输出到所述同步信息生成部。通过上述方式,能够减小用于冗余化的处理量或程序大小。其结果是,实现能够以低负荷动作的容错系统。
在一实施方式的容错系统中,也可以为,所述字节码包含在执行中接受所述中断的第一指令和在执行中不接受所述中断的第二指令。也可以为,所述第一中断拦截部将所述同步信息生成部执行所述第一指令的过程中输入的所述中断输出到所述同步信息生成部,不将在所述同步信息生成部执行所述第二指令的过程中输入的所述中断输出到所述同步信息生成部。通过上述方式,能够不执行复杂的定时调整,根据需要接受中断并实现冗余化。其结果是,实现能够以低负荷动作的容错系统。
在一实施方式的容错系统中,也可以为,所述中断包括由所述第一指令接受的第一中断和不由所述第一指令接受的第二中断。也可以为,所述第一中断拦截部与所述同步信息生成部执行中的指令无关地拦截所述第二中断,在所述同步信息生成部执行所述第二指令的过程中拦截所述第一中断。通过上述方式,能够简单地执行第二中断的拦截。即,降低中断拦截部的处理负荷。其结果是,实现能够以低负荷动作的容错系统。
在一实施方式的容错系统中,也可以为,所述同步信息包含确定所述同步信息生成部执行的字节码的信息。通过上述方式,中断拦截部容易基于同步信息来判断是否拦截第一中断。即,降低中断拦截部的处理负荷。其结果是,实现能够以低负荷动作的容错系统。
在一实施方式的容错系统中,也可以为,所述字节码包含从外部取得数据的输入指令。也可以为,所述同步信息生成部将与执行所述输入指令而取得的数据相关的信息作为所述同步信息输出。通过上述方式,次虚拟机能够基于同步信息取得从外部输入的数据。因此,包括次虚拟机的次机可以不与外部进行通信。其结果是,减轻容错系统的负荷,并且实现能够以低负荷动作的容错系统。
在一实施方式的容错系统中,也可以为,所述中断包含定时器处理。通过上述方式,容错系统不是无条件地拦截中断而能够接受必要的中断。其结果是,提高容错系统的有用性。
在一实施方式的容错系统中,也可为,所述中断包含网络收发处理。通过上述方式,容错系统不是无条件地拦截中断而能够接受必要的中断。其结果是,提高容错系统的有用性。
根据本发明,提供一种能够以低负荷动作的容错系统。
附图说明
图1是表示比较例的容错系统的框图。
图2是表示一实施方式的容错系统的构成例的框图。
图3是表示网络处理部的构成例的框图。
图4是表示执行字节码的构成例的框图。
图5是表示执行字节码的步骤的一例的流程图。
图6是表示次VM继续执行字节码的步骤的一例的流程图。
图7是表示其他实施方式的容错系统的构成例的框图。
附图标记说明:
1:容错系统;
100:主机(110:应用程序、110A~110N:第一~第N应用程序、120:主VM、120A~120N:第一~第N主VM、122:中断拦截部、124:同步信息生成部、130:主OS);
140:硬件(142:CPU、144:存储器、146:NIC);
150:网络处理部(152:网络协议栈、154:外部通信用虚拟NIC、156:同步通信用虚拟NIC、158:虚拟L2SW);
200:次机(210:应用程序、210A~210N:第一~第N应用程序、220:次VM、220A~220N:第一~第N次VM、222:中断拦截部、224:同步执行部、230:次OS);
240:硬件(242:CPU、244:存储器、246:NIC);
250:网络处理部;
300:网络;
500:外部设备。
具体实施方式
(比较例)
如图1所示,比较例的容错系统9包括主机800和次机900。主机800和次机900经由网络300连接成能够通信。主机800和次机900双方都执行相同的处理。在主机800发生故障的情况下,次机900接管处理。通过上述方式,作为容错系统9整体继续进行处理。
主机800包括硬件840,在硬件840上使主OS(Operating System操作系统)830或管理程序动作。主机800在主OS830上或管理程序上使主VM(Virtual Machine虚拟机)820动作。主VM820包括虚拟中断生成部822和同步信息生成部824。主机800在主VM820上使主客户OS812和应用程序810动作。
次机900包括硬件940,在硬件940上使次OS930或管理程序动作。次机900在次OS930上或管理程序上使次VM920动作。次VM920包括虚拟中断输入转换部922和同步修正部924。次机900在次VM920上使次客户OS912和应用程序910动作。
主机800和次机900以应用程序810和应用程序910的处理成为相同的处理的方式使应用程序810和应用程序910动作。通过上述方式,在主机800发生故障的情况下,次机900能够接管处理。应用程序810、910在不进行区分的情况下简称为应用程序。
硬件840包括CPU(Central Processing Unit中央处理器)842、存储器844和NIC(Network Interface Controller网络接口控制器)846。硬件940包括CPU942、存储器944和NIC946。硬件840、940在不进行区分的情况下简称为硬件。
CPU842、942可以是相互相同或类似的构成。CPU842、942可以由一个以上的处理器构成。处理器可以通过执行规定的程序来实现各种功能。处理器可以从存储器844、944取得程序,也可以从网络300取得程序。程序可以存储于非临时性的计算机可读取的介质。CPU842、942在不进行区分的情况下简称为CPU。
存储器844、944可以是相互相同或类似的结构。存储器844、944例如由可以半导体存储器等构成,也可以由磁盘等存储介质构成。存储器844、944可以分别作为CPU842、942的工作存储器发挥功能。存储器844、944可以包含于CPU842、942。存储器844、944在不进行区分的情况下简称为存储器。
NIC846、946可以是相互相同或类似的结构。NIC846、946可以包括LAN(Local AreaNetwork局域网)等通信接口而构成。NIC846、946在不进行区分的情况下简称为NIC。
主VM820包括虚拟中断生成部822和同步信息生成部824。虚拟中断生成部822针对实际输入到主OS830或管理程序的来自外部的中断,生成调整了中断的频率或定时的虚拟中断,并输入到应用程序810。同步信息生成部824生成用于将主VM820中的应用程序810的执行状况传送到次VM920的同步信息,并发送到次VM920。
次VM920包括虚拟中断输入转换部922和同步修正部924。虚拟中断输入转换部922与从主VM820的同步信息生成部824取得的同步信息的定时一致地将虚拟中断输入到应用程序910。同步修正部924从主VM820接收同步信息,与主VM820中的应用程序810的执行状况同步地执行应用程序910。
在比较例中的容错系统9中,如果针对主VM820产生来自外部的中断,则包含产生了中断的定时及其数据的同步信息被发送到次VM920。次VM920比主VM820稍微延迟地动作,在与接收到的同步信息相同的定时伪输入数据或中断。由此,主VM820和次VM920能够同步地执行相同的动作。
此处,为了在主VM820与次VM920之间使外部中断同步,需要进行以下处理。首先,在主VM820中,计测输入了中断的定时。具体而言,利用CPU的功能,作为从计算机启动时刻起的执行指令数等来计测定时。接着,为了在任意的定时输入中断,次VM920以指定的执行指令数暂时中断虚拟机的处理并输入虚拟中断,使虚拟机的动作重新开始。基于这些处理的外部中断的同步处理是对CPU带来过大的处理负荷的处理,成为依赖于CPU的处理能力的处理。例如,由于有时在指定的定时无法中断处理,所以需要调整中断主VM820的处理的定时的功能。定时调整进行依赖于CPU的功能的复杂的处理,因此为了在嵌入式处理器中动作,需要安装与对象处理器匹配的调整方法。
此外,在作为中间语言程序使用Java(注册商标)等高功能的编程语言的情况下,能够以多线程高效地动作,但是需要线程间的处理的同步。此外,由于是高功能,所以中间语言的执行环境的程序大小变大。由于嵌入式设备的存储器大小有限,所以需要简单且轻量的执行环境。另外,中间语言的执行环境一般被称为“虚拟机”。例如,Java(注册商标)的中间语言的执行环境被称为JavaVM。此处,虽然“JavaVM”包含“VM”的记载,但是与主VM820或次VM920的“VM”不同。由此,“JavaVM”表示为“中间语言的执行环境”。
此外,如日本专利公开公报特开2003-36101号记载的那样,也可以在与外部之间的数据的输入输出的定时取得同步。但是,在输入输出的定时取得同步的方法中,在容错系统9中实现的冗余化功能的对象应用程序例如被限定为IEC61131-3标准等PLC控制用编程语言。此外,为了数据等值化,需要通过专用的系统总线来耦合控制器。
如上所述,在比较例的容错系统9中,为了实现冗余化的功能,硬件的负荷变得过大。此外,还要求在通用计算机中使用通用编程语言来实现冗余化的功能。
因此,本发明对能够以低负荷动作的容错系统1(参照图2)进行说明。
(实施方式)
如图2所示,本发明的一实施方式的容错系统1包括主机100和次机200。主机100和次机200经由网络300连接成能够通信。主机100和次机200双方都执行相同的处理。在主机100发生故障的情况下,次机200接管处理。通过上述方式,作为容错系统1整体继续进行处理。
主机100包括硬件140,在硬件140上使主OS(Operating System)130动作。主机100在主OS130上使主虚拟机120动作。以下,主虚拟机120称为主VM(Virtual Machine)120。主VM120具有中断拦截部122和同步信息生成部124。主机100在主VM120上使应用程序110动作。
次机200包括硬件240,在硬件240上使次OS230动作。次机200在次OS230上使次虚拟机220动作。以下,次虚拟机220称为次VM220。次VM220具有中断拦截部222和同步执行部224。次机200在次VM220上使应用程序210动作。
主机100和次机200以应用程序110和应用程序210的处理成为相同的处理的方式使应用程序110和应用程序210动作。通过上述方式,在主机100发生故障的情况下,次机200能够接管处理。应用程序110、210在不进行区分的情况下简称为应用程序。
(构成例)
硬件140包括CPU(Central Processing Unit)142、存储器144和NIC(NetworkInterface Controller)146。硬件240包括CPU242、存储器244和NIC246。硬件140、240在不进行区分的情况下简称为硬件。
CPU142、242可以是相互相同或类似的结构。CPU142、242可以由一个以上的处理器构成。处理器可以通过执行规定的程序来实现各种功能。处理器可以从存储器144、244取得程序,也可以从网络300取得程序。CPU142、242在不进行区分的情况下简称为CPU。
存储器144、244可以是相互相同或类似的结构。存储器144、244例如可以由半导体存储器等构成,也可以由磁盘等存储介质构成。存储器144、244可以分别作为CPU142、242的工作存储器发挥功能。存储器144、244可以包含于CPU142、242。存储器144、244在不进行区分的情况下简称为存储器。
NIC146、246可以是相互相同或类似的结构。NIC146、246可以包括LAN(Local AreaNetwork)等通信接口而构成。NIC146、246在不进行区分的情况下简称为NIC。
主VM120包括中断拦截部122和同步信息生成部124。中断拦截部122从应用程序110的执行处理中拦截输入到主OS130的来自外部的中断。主VM120的中断拦截部122也称为第一中断拦截部。同步信息生成部124生成用于将主VM120中的应用程序110的执行状况传送到次VM220的同步信息,并发送到次VM220。
次VM220包括中断拦截部222和同步执行部224。中断拦截部222从应用程序210的执行处理中拦截输入到次OS230的来自外部的中断。次VM220的中断拦截部222也称为第二中断拦截部。同步执行部224从主VM120接收同步信息,与主VM120中的应用程序110的执行状况同步地执行应用程序210。
主VM120和次VM220分别包括网络处理部150、250,但是并不是必须的。网络处理部150、250从网络300接收数据或将数据发送到网络300。如图3例示的那样,网络处理部150包括:网络协议栈152、外部通信用虚拟NIC154、同步通信用虚拟NIC156和虚拟L2SW(Layer2Switch二层交换机)158。网络处理部150所具备的各构成的说明如后所述。网络处理部250构成为与网络处理部150相同或类似。
(应用程序的动作)
主VM120在主OS130上动作。次VM220在次OS230上动作。主VM120和次VM220统称为VM。主OS130和次OS230统称为OS。即,VM在OS上动作。OS和VM的功能通过包括CPU的硬件来实现。
主OS130使主VM120执行应用程序110的处理。次OS230使次VM220执行应用程序210的处理。即,OS使VM执行应用程序110、210的处理。
VM可以作为通用的编程语言处理系统来实现。通用的编程语言处理系统例如可以包括mruby或Micro Python等。mruby是面向嵌入式系统的轻量的Ruby语言处理系统,即使在省内存的环境中也能够动作。Ruby的处理系统主要作为解释器来安装。源代码在程序的执行时或程序的执行前被编译为字节码。解释器逐一指令地执行字节码。
主VM120和次VM220将各字节码存储于相同的指令地址。主VM120和次VM220从相同的指令地址取得字节码,执行与字节码对应的动作。执行与字节码对应的动作也称作执行字节码。主VM120可以使同步信息生成部124执行字节码。次VM220可以使同步执行部224执行字节码。主VM120和次VM220每当执行与一个字节码对应的动作时取得同步。主VM120和次VM220在执行与一个字节码对应的动作而取得同步之后,执行与下一个字节码对应的动作。通过上述方式,主VM120和次VM220能够一边相互取得同步一边进行处理。
在字节码对应于取得从外部输入的数据或将数据输出到外部的动作的情况下,仅主VM120实际上执行与外部之间的数据的输入输出。另一方面,次VM220实际上不执行与外部之间的数据的输入输出。
在字节码对应于取得从外部输入的数据的动作的情况下,次VM220从主VM120取得从外部输入到主VM120的数据来代替取得从外部输入的数据。在字节码对应于将数据输出到外部的动作的情况下,次VM220跳过该字节码的执行。
主VM120每当执行一个字节码时向次VM220发送同步信息。同步信息可以包含存储有字节码的指令地址或从外部输入到主VM120的数据。同步信息可以包含表示执行的指令数的信息。同步信息也可以包含确定主VM120执行的字节码的信息。
次VM220从主VM120接收同步信息,基于同步信息进行字节码的处理。次VM220进行与从主VM120接收到的指令地址或执行的指令数一致的字节码的处理。次VM220在一个字节码的处理结束后,中断处理直到从主VM120接收到下一个同步信息。
主VM120和次VM220能够通过以上述方式收发同步信息,能够同步地进行字节码的处理。
为了实现VM的省内存化,mruby简化处理而使VM的程序大小变小。用于简化处理的功能之一是程序处理的单线程化。单线程化是指构成为不同时并行地执行多个指令,并且处理不会因来自外部的中断而中断。通过处理不会因来自外部的中断而中断,不需要复杂的定时调整功能。其结果是,处理被简化。
此处,即使在VM的级别中未产生来自外部的中断,有时也在OS的级别中产生来自外部的中断。因此,有时在VM中执行字节码的期间产生来自外部的中断。但是,字节码的执行结果不会因来自外部的中断而变化。
主VM120的同步信息生成部124伴随主VM120中的字节码的执行,取得执行的字节码的指令地址或执行指令数。同步信息生成部124在主VM120取得从外部输入的数据的情况下取得该数据。同步信息生成部124生成包含取得的指令地址或者执行指令数或从外部输入的数据的同步信息并发送到次VM220。取得从外部输入的数据的指令也称为输入指令。同步信息生成部124通过执行作为字节码的输入指令,输出从外部输入的数据作为同步信息。
此外,同步信息生成部124在将同步信息发送到次VM220之后,使主VM120不执行下一个字节码,直到从次VM220接收到响应通知为止。换句话说,同步信息生成部124在从次VM220接收到响应通知的情况下,准许主VM120执行下一个字节码。
次VM220的同步执行部224从主VM120的同步信息生成部124接收同步信息。同步执行部224基于接收到的同步信息,控制次VM220中的字节码的执行。例如,同步执行部224可以使次VM220执行存储于同步信息所包含的指令地址的字节码。同步执行部224也可以以与同步信息所包含的执行指令数一致的方式使次VM220执行字节码。
在由次VM220下一步执行的字节码对应于取得从外部输入的数据的动作的情况下,同步执行部224使次VM220跳过该字节码的执行。在该情况下,同步信息包含从外部输入的数据。次VM220将包含于同步信息的从外部输入的数据视为作为跳过的字节码的执行结果而得到的数据,并且前进至下一个字节码的处理。通过同步信息包含从外部输入的数据,次机200可以不与外部进行通信。通过上述方式,减轻容错系统1的负荷。其结果是,实现能够以低负荷动作的容错系统1。
主VM120的中断拦截部122和次VM220的中断拦截部222拦截从外部对OS输入的中断。从外部对OS输入的中断也称为外部中断。外部中断可以是从实现OS和VM的功能的CPU观察的来自外部的中断。从CPU观察的来自外部的中断可以包含来自存储器或NIC的中断,也可以包含来自硬件的外部的中断。中断拦截部122、222拦截外部中断,以使得外部中断不会对执行字节码的中途的VM产生影响。
主VM120判断拦截的外部中断是否与字节码的执行相关联。在拦截的外部中断不与字节码的执行相关联的情况下,中断拦截部122可以丢弃该外部中断。在拦截的外部中断与字节码的执行相关联的情况下,中断拦截部122将该外部中断发送到主VM120。换句话说,在字节码是接受中断并基于该中断执行的指令的情况下,中断拦截部122将该指令的执行中输入的中断发送到主VM120(同步信息生成部124)。主VM120可以基于外部中断执行字节码。次VM220可以不执行接受外部中断并基于该中断执行的字节码。因此,次VM220的中断拦截部222可以丢弃所有外部中断。
<程序的一例>
此处,作为mruby的程序以如下程序为例进行说明,该程序从外部取得字符串,将另一个字符串与所取得的字符串连结并将连结的字符串输出到外部。两个字符串表示为X和Y。该程序能够编译为以下的四个字节码。代码A、B、C、D分别与一个指令对应。
代码A:VM将字符串常数“X”代入第一寄存器。
代码B:VM取得字符串作为从外部输入的数据并代入第二寄存器。在本程序例中,取得“Y”作为字符串。
代码C:VM连结第一寄存器的字符串和第二寄存器的字符串,将连结的字符串代入第一寄存器。
代码D:VM将第一寄存器的字符串输出到外部。
参照图4和图5,说明主机100和次机200在使上述字节码同步的同时执行上述字节码的构成。
如图4所示,主机100和次机200经由网络300与外部设备500能够通信地连接。主机100从外部设备500取得输入数据。主机100将输出数据输出到外部设备500。主机100将同步信息发送到次机200。主机100在从外部设备500取得了输入数据的情况下,将包含输入数据的同步信息输出到次机200。
假设在主机100中发生了故障的情况下,次机200能够继续执行字节码。次机200在主机100动作的期间不与外部设备500进行通信,但是在主机100因故障而停止的情况下,能够与外部设备500进行通信来输入输出数据。
主VM120和次VM220按照图5所示的步骤执行上述字节码。
主VM120执行代码A(步骤S11)。主VM120作为与代码A对应的动作而将字符串常数“X”代入第一寄存器。主VM120在按照步骤S11的步骤执行代码A之后,将同步信息A发送到次VM220。另外,字符串常数“X”包含于代码A,因此不包含于同步信息A。
次VM220在从主VM120接收到同步信息A的情况下,基于同步信息A执行代码A(步骤S21)。次VM220作为与代码A对应的动作而将字符串常数“X”代入第一寄存器。次VM220在按照步骤S21的步骤执行代码A之后,将表示完成了代码A的执行的响应发送到主VM120。
主VM120在从次VM220接收到响应的情况下,执行作为下一个字节码的代码B(步骤S12)。主VM120作为与代码B对应的动作,从外部设备500取得字符串“Y”作为输入数据并代入第二寄存器。主VM120在按照步骤S12的步骤执行代码B之后,将包含作为来自外部设备500的输入数据的字符串“Y”的同步信息B发送到次VM220。
次VM220在从主VM120接收到同步信息B的情况下,基于同步信息B执行代码B(步骤S22)。次VM220作为与代码B对应的动作,将包含于同步信息B的字符串“Y”代入第二寄存器来代替从外部设备500取得输入数据。次VM220在按照步骤S22的步骤执行代码B之后,将表示完成了代码B的执行的响应发送到主VM120。
主VM120在从次VM220接收到响应的情况下,执行作为下一个字节码的代码C(步骤S13)。主VM120作为与代码C对应的动作,连结第一寄存器的字符串和第二寄存器的字符串并将连结的字符串代入第一寄存器。在该情况下,代入到第一寄存器的字符串成为“XY”。主VM120在按照步骤S13的步骤执行代码C之后,将同步信息C发送到次VM220。
次VM220在从主VM120接收到同步信息C的情况下,基于同步信息C执行代码C(步骤S23)。次VM220作为与代码C对应的动作,连结第一寄存器的字符串和第二寄存器的字符串并将连结的字符串代入第一寄存器。在该情况下,在次VM220中,代入到第一寄存器的字符串成为“XY”。次VM220在按照步骤S23的步骤执行代码C之后,将表示完成了代码C的执行的响应发送到主VM120。
主VM120在从次VM220接收到响应的情况下,执行作为下一个字节码的代码D(步骤S14)。主VM120作为与代码D对应的动作,将第一寄存器的字符串输出到外部设备500。在该情况下,外部设备500取得的字符串成为“XY”。主VM120在按照步骤S14的步骤执行代码D之后,将同步信息D发送到次VM220。
次VM220在从主VM120接收到同步信息D的情况下,基于同步信息D执行代码D(步骤S24)。次VM220作为与代码D对应的动作,不将第一寄存器的字符串输出到外部设备500,不执行任何处理。即,次VM220跳过与代码D对应的动作。次VM220在按照步骤S24的步骤作为代码D的执行而跳过对应的动作之后,将表示完成了代码D的执行的响应发送到主VM120。
次VM220在将表示完成了代码D的执行的响应发送到主VM120之后,结束一系列的字节码的执行。主VM120通过从次VM220接收响应,结束一系列的字节码的执行。
如参照图4和图5说明的那样,主VM120和次VM220能够在相互取得同步的同时执行字节码。在主VM120在执行一系列的字节码的中途因故障而停止的情况下,次VM220也能够继续执行字节码。次机200经由网络300与外部设备500能够通信地连接,由此也能够继续执行与输入输出数据的动作对应的字节码。
在容错系统1中,在主机100和次机200的双方都正常动作的情况下,实现处理的冗余化。此处,说明主机100或次机200因故障而停止时的容错系统1的动作。
<主机100发生故障的情况>
在主机100发生了故障的情况下,主VM120有时无法正常地执行字节码的执行等控制处理。容错系统1将字节码的执行等控制处理从主机100的主VM120切换为次机200的次VM220。容错系统1成为仅次机200动作的单运行的状态。在单运行的状态下,代替主VM120的动作的次VM220停止与主VM120的同步处理。
主VM120在能够检测到主机100的故障的情况下,尝试向次VM220发送故障通知,并使主机100停止或重新启动。可以以与同步信息相同的通信路径发送故障通知。在主VM120能够向次VM220发送故障通知的情况下,次VM220通过从主VM120接收故障通知,掌握在主机100中发生了故障。在主VM120无法向次VM220发送故障通知的情况下,次VM220可以通过监视主机100的装置来掌握在主机100中发生了故障。次VM220在掌握了在主机100中发生了故障的情况下,从主VM120接管字节码的执行等控制处理,并且停止与主机100的同步处理。此外,次VM220代替主VM120而经由次OS230执行与外部之间的数据的输入输出处理。
在主VM120无法检测主机100的故障的情况下,主机100直接停止。次VM220可以通过监视主机100的装置来掌握在主机100中发生了故障。次VM220在掌握了在主机100中发生了故障的情况下,从主VM120接管字节码的执行等控制处理,并且停止与主机100的同步处理。
<次机200发生故障的情况>
在次机200发生了故障的情况下,容错系统1成为仅主机100动作的单运行的状态。在单运行的状态下,主VM120停止与次VM220的同步处理。
次VM220在能够检测到次机200的故障的情况下,尝试向主VM120发送故障通知,并使次机200停止或重新启动。可以以与同步信息相同的通信路径发送故障通知。在次VM220能够向主VM120发送故障通知的情况下,主VM120通过从次VM220接收故障通知,掌握在次机200中发生了故障。在次VM220无法向主VM120发送故障通知的情况下,主VM120可以通过监视次机200的装置来掌握在次机200中发生了故障。主VM120在掌握了在次机200中发生了故障的情况下,停止字节码的执行等控制处理中的与次机200的同步处理。主VM120可以通过停止同步信息生成部124的动作来停止同步处理。
在次VM220无法检测次机200的故障的情况下,次机200直接停止。主VM120可以通过监视次机200的装置来掌握在次机200中发生了故障。主VM120在掌握了在次机200中发生了故障的情况下,停止字节码的执行等控制处理中的与次机200的同步处理。
主VM120监视次机200的方法或次VM220监视主机100的方法例如能够以如下方式实现。
例如,主VM120和次VM220可以相互执行用于心跳等死活监视的定期通信。主VM120可以在没有来自次VM220的响应的情况下,判断为次机200发生了故障。次VM220可以在没有来自主VM120的响应的情况下,判断为主机100发生了故障。次VM220可以通过在同步处理中从主VM120接收同步信息,判断为在主机100中未发生故障。主VM120可以通过在同步处理中从自次VM220接收响应,判断为在次机200中未发生故障。
例如,与主机100和次机200不同的第三机可以监视主机100和次机200的动作。第三机可以向次VM220通知在主机100中发生的故障,也可以向主VM120通知在次机200中发生的故障。第三机可以在与主VM120以及次VM220之间执行用于心跳等死活监视的定期通信。
主VM120和次VM220有时由于用于死活监视的通信因网络故障而中止,从而误判断为主机100和次机200发生了故障。为了避免由网络故障引起的主机100和次机200的故障的误检测,可以复用用于死活监视的通信路径。
此处,说明主机100发生故障时的容错系统1的动作的一例。次VM220例如可以通过执行图6所示的流程图的步骤,在主VM120因故障而停止的情况下,继续执行字节码。
假设主机100发生了故障(步骤S31)。主VM120判断是否检测到主机100的故障(步骤S32)。
主VM120在未检测到主机100的故障的情况下(步骤S32:“否”),前进至步骤S35的步骤。主VM120在检测到主机100的故障的情况下(步骤S32:“是”),判断是否能够向次VM220通知在主机100中发生了故障(步骤S33)。即,主VM120判断是否能够将故障通知发送到次VM220。
主VM120在无法将故障通知发送到次VM220的情况下(步骤S33:“否”),前进至步骤S35的步骤。主VM120在能够将故障通知发送到次VM220的情况下(步骤S33:“是”),将故障通知发送到次VM220(步骤S34)。
主VM120停止或重新启动主机100(步骤S35)。在主VM120未检测到主机100的故障的情况下,主机100直接停止。主VM120可以在判断为无法发送故障通知之后或在发送了故障通知之后停止主机100,也可以重新启动主机100。通过停止或重新启动主机100,避免主机100和次机200双方都作为主机100动作。主VM120在执行步骤S35的步骤之后,结束图6的流程图的步骤的执行。
次VM220判断是否从主VM120接收到故障通知(步骤S41)。
次VM220在从主VM120接收到故障通知的情况下(步骤S41:“是”),前进至步骤S45的步骤。次VM220在从主VM120未接收到故障通知的情况下(步骤S41:“否”),判断是否接收到来自主VM120的响应(步骤S42)。次VM220在从主VM120未接收到响应的情况下(步骤S42:“否”),前进至步骤S45的步骤。次VM220在从主VM120接收到响应的情况下(步骤S42:“是”),判断为主机100正常动作(步骤S43)。次VM220在主机100正常动作的情况下,继续进行作为次VM220的动作(步骤S44)。次VM220在执行步骤S44的步骤之后,结束图6的流程图的步骤的执行。
次VM220在步骤S41的步骤中从主VM120接收到故障通知的情况下或在步骤S42的步骤中从主VM120未接收到响应的情况下,判断为主机100发生了故障(步骤S45)。次VM220在主机100发生了故障的情况下,代替主VM120的动作,继续执行字节码(步骤S46)。具体而言,次VM220的同步执行部224通过停止来自主VM120的同步信息的接收等待,停止与主VM120的同步处理。次VM220代替主VM120执行主VM120接下来要执行的字节码。例如,在主VM120要执行接受来自外部的数据输入的字节码的情况下,次VM220代替主VM120接受来自外部的数据输入。次VM220的中断拦截部222执行与主VM120的中断拦截部122相同的处理。次VM220在执行步骤S46的步骤之后,结束图6的流程图的步骤的执行。
容错系统1通过执行图6中例示的流程图的步骤,即使在主机100中发生了故障,也能够在次机200中继续进行字节码的执行等控制处理。接着图6的步骤,在次机200继续进行控制处理的期间解决了主机100的故障的情况下,容错系统1能够从单一动作的状态返回到冗余化处理的状态。具体而言,次VM220返回到主机100的故障发生前的动作。主VM120在主机100的发生故障的期间接收次VM220处理的信息作为同步信息,并且从次VM220接管作为主VM120的动作。或者,主VM120和次VM220也可以互换功能进行动作。
如上所述,本实施方式的容错系统1不执行复杂的定时调整,能够在主机100与次机200之间取得同步的同时执行字节码。通过上述方式,降低用于实现主机100和次机200的冗余化的处理负荷。即,用于冗余化的处理量或程序大小变小。其结果是,实现能够以低负荷动作的容错系统1。换句话说,容错系统1即使在使用处理性能低的处理器作为主机100和次机200的情况下,也能够实现冗余化。
(中断处理的例子)
字节码被分类为在执行中接受外部中断的指令和在执行中不接受外部中断的指令。在执行中接受外部中断的指令对应于产生与处理的执行相应的外部中断的指令,也称为中断指令或第一指令。在执行中不接受外部中断的指令对应于不产生与处理的执行相应的外部中断的指令,也称为非中断指令或第二指令。上述的确定字节码的信息可以确定字节码是相当于中断指令还是相当于非中断指令。
中断指令例如包括网络收发指令、存储装置读写指令或与定时器处理相关的指令等。实现VM的功能的CPU在处理中断指令的情况下,从开始处理到结束有时花费时间。此外,在中断指令的处理中有时利用CPU以外的存储器或NIC,因此,CPU有时不知道处理完成。在该情况下,CPU能够通过来自存储器或NIC的中断来掌握中断指令的处理完成。因此,CPU能够通过接收外部中断来结束中断指令的执行。
非中断指令例如包括将值代入寄存器的处理或四则运算处理等。CPU能够与外部中断无关地结束非中断指令的执行。
以下,对中断指令的具体例进行说明。
<与网络收发处理相关的指令>
NIC在完成了来自网络300的数据接收的情况下或完成了向网络300的数据发送的情况下,发行外部中断。OS当接受到外部中断时,中断其他处理,从NIC读出由NIC接收到的数据或将发送到NIC的数据写入到NIC。
由CPU实现的OS和VM通过以下表示为从步骤S51到S56的步骤的动作来执行与网络收发相关的指令。
S51:VM开始执行对应于与网络收发相关的指令的字节码。
S52:VM执行与OS的网络收发相关的指令(系统调用)并等待至完成为止。
S53:OS在与NIC之间收发数据并从NIC接收外部中断。在NIC从外部接收到数据的情况下或NIC将数据发送到外部的情况下,产生外部中断。
S54:OS在与VM之间收发数据并向VM通知外部中断。
S55:VM通过外部中断掌握网络收发指令的处理完成并从系统调用复原。此外,主VM120在接收到外部中断的情况下,将外部中断输出到同步信息生成部124,在同步信息生成部124中生成包含与外部中断相关的信息的同步信息并发送到次VM220。
S56:VM对收发的数据执行必要的处理,结束对应于与网络收发相关的指令的字节码的执行。
通过执行上述从步骤S51到S56的步骤,在VM执行与网络收发指令对应的字节码的期间产生的外部中断在VM内被处理而不通知给应用程序。通过在VM内处理NIC发行的外部中断,容错系统1不是无条件地拦截中断而能够接受必要的中断。其结果是,提高容错系统1的有用性。
<与定时器处理相关的指令>
硬件还包括定时器。定时器根据设定的时间来发行外部中断。定时器可以设定成以固定的周期发行外部中断。定时器也可以根据每次设定的时间来发行外部中断。
由CPU实现的OS和VM通过以下表示为从步骤S61到S67的步骤的动作来执行与定时器处理相关的指令。
S61:VM开始执行对应于与定时器处理相关的指令的字节码。
S62:VM执行OS的计时指令(系统调用)并等待至完成为止。
S63:OS对定时器设定等待时间(间隔)。
S64:OS在经过设定于定时器的时间后接收定时器发行的外部中断。
S65:OS向VM通知外部中断。
S66:VM通过外部中断掌握定时器处理完成的情况,从系统调用复原。此外,主VM120在接收到外部中断的情况下,将外部中断输出到同步信息生成部124,在同步信息生成部124中生成包含与外部中断相关的信息的同步信息并发送到次VM220。
S67:VM对定时器执行必要的处理,结束对应于与定时器处理相关的指令的字节码的执行。
通过执行上述的从步骤S61到S67的步骤,在VM执行对应于与定时器处理相关的指令的字节码的期间产生的外部中断在VM内被处理而不通知给应用程序。通过在VM内处理定时器发行的外部中断,容错系统1不是无条件地拦截中断而是能够接受必要的中断。其结果是,提高容错系统1的有用性。
以上,如对执行网络收发指令或与定时器处理相关的指令的构成进行了说明的那样,容错系统1能够不执行复杂的定时调整,根据需要接受中断并实现冗余化。通过上述方式,降低了CPU的处理负荷。其结果是,即使在作为CPU使用处理性能低的处理器的情况下,也能够实现冗余化。此外,容错系统1能够不对应用程序的处理产生影响地处理外部中断。
例示的与网络处理相关的指令接受NIC发行的中断而不接受其他中断。此外,与定时器处理相关的指令接受定时器发行的中断而不接受其他中断。即,各种中断被分类为中断指令接受的中断和中断指令不接受的中断。中断指令接受的中断也称为第一中断。中断指令不接受的中断也称为第二中断。无论主VM120(同步信息生成部124)是正在执行中断指令(第一指令)还是正在执行非中断指令(第二指令),主VM120的中断拦截部122都拦截第二中断。另一方面,如果主VM120(同步信息生成部124)正在执行非中断指令(第二指令),则中断拦截部122拦截第一中断。通过上述方式,能够简单地执行第二中断的拦截。即,降低中断拦截部122的处理负荷。其结果是,实现能够以低负荷动作的容错系统1。此外,通过确定主VM120执行的字节码的信息包含于同步信息,中断拦截部122容易基于同步信息来判断是否拦截中断。即,降低中断拦截部122的处理负荷。其结果是,实现能够以低负荷动作的容错系统1。
(其他实施方式)
以下,对其他几个实施方式进行说明。
<同步定时>
主VM120和次VM220可以在执行对应于伴随与外部之间的输入输出的动作的字节码的情况下收发同步信息。在该情况下,主VM120和次VM220仅在与外部之间执行输入输出的定时使处理相互同步。
具体而言,仅在具有来自外部的输入的定时从主VM120向次VM220发送同步信息。即,次VM220仅在执行与来自外部的输入对应的字节码的情况下等待来自主VM120的同步信息。此外,仅在具有向外部的输出的定时从次VM220向主VM120发送响应。即,主VM120仅在执行与向外部的输出对应的字节码的情况下等待来自次VM220的响应。主VM120和次VM220可以在执行其他字节码的情况下,不相互等待而执行字节码。
如以上说明的那样,通过仅在伴随与外部之间的输入输出的情况下同步,与每当执行一个字节码时收发同步信息和响应的情况相比,降低处理的延迟。
<同步信息的收发方法>
例如可以通过以太网(注册商标)执行主VM120与次VM220之间的同步信息的收发。在该情况下,需要分别对主机100和次机200分配IP地址。
作为分配IP地址的一个方法,例如可以对主机100和次机200分配相同的IP地址。通过上述方式,在主机100因故障停止而次机200接管处理的情况下,外部设备500能够以相同的IP地址持续进行数据通信。另一方面,无法执行主机100与次机200之间的IP通信。因此,主机100与次机200之间的通信不利用TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)或UDP/IP(User Datagram Protocol/Internet Protocol,用户数据报协议/网际协议),通过利用MAC(Media Access Control,介质访问控制)地址的以太网(注册商标)帧通信来实现。
此外,作为分配IP地址的其他方法,例如可以分别对主机100和次机200分配不同的IP地址。通过上述方式,主机100与次机200之间的通信通过IP通信来实现。另一方面,在主机100因故障停止而次机200接管处理的情况下,从外部设备500的角度来看,为了持续与容错系统1通信,需要切换IP地址。
在例示的两种方法的任意一种中,主机100和次机200各自的MAC地址相互不同。因此,外部设备500为了继续与容错系统1通信而需要变更MAC地址。此处,在使用UDP/IP通信的情况下,UDP/IP通信不需要连接,因此能够继续通信。另一方面,在使用TCP/IP通信的情况下,TCP/IP通信无法接管TCP连接,因此需要重新连接。
<TCP/IP通信的继续>
以下,说明TCP/IP通信的继续方法的一例。如图2和图3中例示的那样,主机100和次机200分别还包括网络处理部150、250,但是并不是必须的。网络处理部150、250在不进行区分的情况下简称为网络处理部。
图2和图3例示的主机100和次机200通过NIC和OS执行TCP/IP或UDP/IP等网络协议处理。NIC的MAC地址针对每个硬件固定。因此,在主机100与次机200之间不接管MAC地址。此外,在OS内进行网络协议处理,因此通信所需的信息、例如TCP的连接信息等不由VM的冗余化功能(一方的VM的停止时由另一方的VM接管处理的功能)接管。因此,TCP通信有时被排除在VM的冗余化的对象以外。
此处,主VM120内的网络处理部150包括:虚拟L2SW158、外部通信用虚拟NIC154、同步通信用虚拟NIC156和网络协议栈152。由此,VM能够管理为了接管通信所需的信息而需要的处理。外部通信用虚拟NIC154和同步通信用虚拟NIC156也统称为虚拟NIC。
具体而言,执行以下例示的动作。
VM通过使NIC以混杂模式动作,将所有的接收数据传送到虚拟NIC。在该情况下,NIC成为与一般的网络交换机(L2交换机)相同的处理,由硬件固定的MAC地址对通信的切换不产生影响。
虚拟L2SW中继NIC与虚拟NIC之间的通信。
在虚拟NIC中由软件设定MAC地址。通过由软件设定MAC地址,在主VM120的虚拟NIC和次VM220的虚拟NIC中设定相同的MAC地址。虚拟NIC包括外部通信用虚拟NIC154和同步通信用虚拟NICI156。对外部通信用虚拟NIC154和同步通信用虚拟NICI156分别分配IP地址。外部通信用虚拟NIC154用于与外部的通信。同步通信用虚拟NIC156用于主VM120与次VM220之间的同步信息的收发。
网络协议栈152进行OS进行的网络协议处理。具体而言,进行虚拟NIC接收到的通信数据的网络层(IP)和传输层(TCP或UDP)的处理。由此,能够在VM内管理TCP连接信息等。
主VM120的同步信息生成部124除了生成的同步信息以外,还收集虚拟NIC或网络协议栈152的信息并发送到次VM220。由此,TCP连接信息被等值化。其结果是,能够继续TCP/IP通信。
如图7所示,主机100包括从第一主VM120A到第N主VM120N作为主VM120。从第一主VM120A到第N主VM120N分别执行从第一应用程序110A到第N应用程序110N的处理。主机100作为从主VM120分离的构成而包括网络处理部150。
次机200包括从第一次VM220A到第N次VM220N作为次VM220。从第一次VM220A到第N次VM220N分别执行从第一应用程序210A到第N应用程序210N的处理。次机200作为从次VM220分离的构成而包括网络处理部250。
在该构成中,主机100和次机200可以使网络处理部作为从VM分离的另一进程动作。通过上述方式,容错系统1即使在同时处理多个应用程序的情况下,也能够集中对通信处理进行处理。在该情况下,主VM120和次VM220的动作可以与至此为止说明的实施方式的动作相同。
以上,参照附图对本发明的实施方式进行了说明,但是具体构成并不限定于该实施方式,也包括在不脱离本发明的主旨的范围内的各种变更。

Claims (7)

1.一种容错系统,其特征在于,包括:
主虚拟机,是在主OS上运行的主虚拟机,且具有执行字节码并输出基于与执行的字节码相关的信息的同步信息的同步信息生成部、以及拦截输入到所述主OS的主中断的第一中断拦截部;以及
次虚拟机,是在次OS上运行的次虚拟机,且具有基于所述同步信息执行所述字节码的同步执行部、以及拦截输入到所述次OS的次中断的第二中断拦截部,
所述同步信息生成部在取得所述主中断的情况下,基于所述主中断执行所述字节码,
所述第一中断拦截部将包含于所述字节码的接受所述主中断的指令的执行中输入的所述主中断输出到所述同步信息生成部。
2.根据权利要求1所述的容错系统,其特征在于,
所述字节码包含在执行中接受所述主中断的第一指令和在执行中不接受所述主中断的第二指令,
所述第一中断拦截部将在所述同步信息生成部执行所述第一指令的过程中输入的所述主中断输出到所述同步信息生成部,不将在所述同步信息生成部执行所述第二指令的过程中输入的所述主中断输出到所述同步信息生成部。
3.根据权利要求2所述的容错系统,其特征在于,
所述主中断包括由所述第一指令接受的第一中断和不由所述第一指令接受的第二中断,
所述第一中断拦截部与所述同步信息生成部执行中的指令无关地拦截所述第二中断,在所述同步信息生成部执行所述第二指令的过程中拦截所述第一中断。
4.根据权利要求1至3中任一项所述的容错系统,其特征在于,
所述同步信息包含确定所述同步信息生成部执行的字节码的信息。
5.根据权利要求1至3中任一项所述的容错系统,其特征在于,
所述字节码包含从外部取得数据的输入指令,
所述同步信息生成部将与执行所述输入指令而取得的数据相关的信息作为所述同步信息输出。
6.根据权利要求1至3中任一项所述的容错系统,其特征在于,
所述主中断包含定时器处理。
7.根据权利要求1至3中任一项所述的容错系统,其特征在于,
所述主中断包含网络收发处理。
CN202110176279.9A 2020-03-24 2021-02-09 容错系统 Active CN113448773B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020-053258 2020-03-24
JP2020053258A JP7327235B2 (ja) 2020-03-24 2020-03-24 フォールトトレラントシステム

Publications (2)

Publication Number Publication Date
CN113448773A CN113448773A (zh) 2021-09-28
CN113448773B true CN113448773B (zh) 2024-06-28

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102656561A (zh) * 2010-03-16 2012-09-05 松下电器产业株式会社 信息处理装置、虚拟机生成方法及应用发布系统
CN103678022A (zh) * 2012-09-18 2014-03-26 横河电机株式会社 容错系统和用于执行容错的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102656561A (zh) * 2010-03-16 2012-09-05 松下电器产业株式会社 信息处理装置、虚拟机生成方法及应用发布系统
CN103678022A (zh) * 2012-09-18 2014-03-26 横河电机株式会社 容错系统和用于执行容错的方法

Similar Documents

Publication Publication Date Title
US8893122B2 (en) Virtual computer system and a method of controlling a virtual computer system on movement of a virtual computer
JP5630671B2 (ja) フォールトトレラントシステム
CA2339783A1 (en) Fault tolerant computer system
JP5700009B2 (ja) フォールトトレラントシステム
US8615586B2 (en) Discovery of logical images at storage area network endpoints
US20110047550A1 (en) Software program execution device, software program execution method, and program
CN113448773B (zh) 容错系统
JP7327235B2 (ja) フォールトトレラントシステム
WO2006137223A1 (ja) デバッグシステム、デバッグ方法、およびプログラム
JP2000222376A (ja) 計算機システムとその運用方法
JP5660096B2 (ja) フォールトトレラントシステム
JP2006209386A (ja) 仮想計算機システム及びその外部割込み制御方法
JP2005316679A (ja) 並列演算処理装置
KR100544805B1 (ko) 분산 컴퓨터 시스템의 초기화 시스템 및 방법
CN117806871A (zh) 主机以及容错系统
US9176806B2 (en) Computer and memory inspection method
US20080271024A1 (en) Information processing apparatus, information processing system and information processing method for processing tasks in parallel
JP2018077594A (ja) 仮想マシン管理装置、システム、仮想マシン移動方法及びプログラム
WO2018221118A1 (ja) 仮想ネットワークシステム、および仮想ネットワークシステムの通信方法
JP5660097B2 (ja) フォールトトレラントシステム
US7886306B2 (en) Extensions to coupling channels to support multiple coupling facility sharing, interrupts, and message passing
US20030061475A1 (en) Extensions to coupling channels to support multiple coupling facility sharing, interrupts, and message passing
JPH07281915A (ja) 集積回路モジュール同期2重系情報処理装置
US20220103416A1 (en) Failure notification system, failure notification method, failure notification device, and failure notification program
US20220261298A1 (en) Computer system and program execution method

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant