CN115454570A - 灾备方法、灾备恢复方法、虚拟机系统、设备及存储介质 - Google Patents
灾备方法、灾备恢复方法、虚拟机系统、设备及存储介质 Download PDFInfo
- Publication number
- CN115454570A CN115454570A CN202211067085.6A CN202211067085A CN115454570A CN 115454570 A CN115454570 A CN 115454570A CN 202211067085 A CN202211067085 A CN 202211067085A CN 115454570 A CN115454570 A CN 115454570A
- Authority
- CN
- China
- Prior art keywords
- log
- processing
- processing result
- processing request
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Abstract
本说明书一个或多个实施例提供一种灾备方法、灾备恢复方法、虚拟机系统、设备及存储介质。所述灾备方法应用于虚拟化后端组件,所述虚拟化后端组件和虚拟机通过共享存储空间进行数据交互;所述方法包括:在从所述共享存储空间中读取所述虚拟机写入的处理请求之后,将所述处理请求写入日志、以及更新在所述日志中记录的恢复读取信息,并将所述处理请求下发给处理装置;在接收到处理装置的处理结果之后,将所述日志中与所述处理结果对应的处理请求删除、以及更新在所述日志中记录的恢复写入信息,并将所述处理结果写入所述共享存储空间。本实施例利用日志实现虚拟化后端组件重启后断点重连。
Description
技术领域
本说明书一个或多个实施例涉及虚拟化技术领域,尤其涉及一种灾备方法、灾备恢复方法、虚拟机系统、设备及存储介质。
背景技术
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。为实现虚拟机的处理请求的正确处理,电子设备中通常会设置与所述虚拟化后端组件(如Vhost-NVMe组件)与虚拟机进行数据交互,虚拟化后端组件将来自虚拟机的处理请求进行解析封装发送至处理装置,再向虚拟机返回处理装置处理完成的处理结果;其中,处理装置可以是某个物理硬件的驱动组件或者控制组件,用于与物理硬件进行交互以实现对处理请求的处理过程。
但是,虚拟化后端组件意外崩溃重启、热升级等事件发生时会导致相关信息丢失,使得虚拟化后端组件在重启后无法与虚拟机实现正确的数据交互。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种灾备方法、灾备恢复方法、虚拟机系统、设备及存储介质。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种虚拟机系统的灾备方法,应用于虚拟化后端组件,所述虚拟化后端组件和虚拟机通过共享存储空间进行数据交互;所述方法包括:
在从所述共享存储空间中读取所述虚拟机写入的处理请求之后,将所述处理请求写入日志、以及根据所述处理请求在所述共享存储空间中的读取位置,更新在所述日志中记录的恢复读取信息,并将所述处理请求下发给处理装置;所述恢复读取信息,用于指示所述虚拟化后端组件在重启后从所述共享存储空间中读取处理请求的读取位置;
在接收到处理装置的处理结果之后,将所述日志中与所述处理结果对应的处理请求删除、以及根据所述处理结果在所述共享存储空间中的待写入位置,更新在所述日志中记录的恢复写入信息,并将所述处理结果写入所述共享存储空间;所述恢复写入信息,用于指示所述虚拟化后端组件在重启后向所述共享存储空间写入处理结果的写入位置。
可选地,所述日志以队列形式存储处理请求,以位图形式记录队列中各个存储位置的存储状态;
所述将所述处理请求写入日志,包括:
根据所述位图在所述队列中查找所述处理请求的待写入位置,所述待写入位置的存储状态为未占用状态;
将所述处理请求写入所述待写入位置、以及将所述位图中所述处理请求的写入位置的存储状态更新为占用状态;
所述将所述日志中与所述处理结果对应的处理请求删除,包括:
在所述位图中,将所述处理结果对应的处理请求在所述队列中的存储位置的存储状态更新为未占用状态。
可选地,所述日志以第一事务标识记录与所述处理请求相关的信息在所述日志中的备份进度、以及以第二事务标识记录与所述处理结果相关的信息在所述日志中的备份进度;
在将所述处理请求写入所述待写入位置、以及更新了在所述日志中记录的恢复读取信息的情况下,所述第一事务标识的标识值被置为指示已备份部分信息;以及在更新了所述位图的情况下,所述第一事务标识的标识值被置为指示已备份全部信息;
在更新了所述日志中记录的恢复写入信息的情况下,所述第二事务标识的标识值被置为指示已备份部分信息;以及在更新了所述位图的情况下,所述第二事务标识的标识值被置为指示已备份全部信息。
可选地,在将所述处理请求写入所述待写入位置之后,利用内联体结构在所述日志中同步执行以下步骤:更新在所述日志中记录的恢复读取信息、以及将所述第一事务标识的标识值置为指示已备份部分信息;
在接收到处理装置的处理结果之后,利用内联体结构在所述日志中同步执行以下步骤:更新所述日志中记录的恢复写入信息、以及将所述第二事务标识的标识值被置为指示已备份部分信息。
可选地,所述虚拟化后端组件将所述处理结果写入所述共享存储空间的完成队列中,所述完成队列中的各个存储位置还存储有状态字段,所述状态字段的字段值用于指示该存储位置存储的处理结果是否有效、且每次重新从完成队列的队头写入处理结果时指示处理结果有效的字段值发生变化;
在接收到处理装置的处理结果之后,还包括:
根据所述处理结果在所述共享存储空间中的待写入位置,更新在所述日志中记录的指示处理结果有效的状态字段的字段值。
可选地,下发给所述处理装置的处理请求、及所述处理装置返回的处理结果均携带有位置标识,所述位置标识用于指示处理请求在日志中的存储位置;和/或
所述虚拟化后端组件从所述共享存储空间的提交队列中读取处理请求,所述日志中用于存储处理请求的队列的存储数量与所述提交队列的存储数量相同。
根据本说明书一个或多个实施例的第二方面,提出了一种虚拟机系统的灾备恢复方法,应用于虚拟化后端组件,所述虚拟化后端组件和虚拟机通过共享存储空间进行数据交互;所述方法包括:
在所述虚拟化后端组件重启后,获取与所述虚拟机对应的日志;所述日志中的内容基于第一方面任意一项所述的虚拟机系统的灾备方法生成;
将所述日志中记录的处理请求下发给处理装置、以及根据所述日志中记录的恢复读取信息指示的读取位置从所述共享存储空间中读取处理请求;
在接收到处理装置的处理结果之后,根据所述日志中记录的恢复写入信息指示的写入位置将所述处理结果写入所述共享存储空间。
可选地,所述日志以队列形式存储处理请求,以位图形式记录队列中各个存储位置的存储状态;
所述将所述日志中记录的处理请求下发给处理装置,包括:
根据所述位图确定所述队列中存储状态为占用状态的存储位置;
将所述队列中存储状态为占用状态的存储位置处存储的处理请求下发给处理装置。
可选地,所述日志以第一事务标识记录与所述处理请求相关的信息在所述日志中的备份进度、以及以第二事务标识记录与所述处理结果相关的信息在所述日志中的备份进度;
所述根据所述位图确定所述队列中存储状态为占用状态的存储位置,包括:
若所述日志中存在第一事务标识的标识值指示已备份部分信息,将所述位图中所述第一事务标识对应的处理请求的存储位置的存储状态更新为占用状态、以及将所述第一事务标识的标识值修正为指示已备份全部信息;
若所述日志中存在第二事务标识的标识值指示已备份部分信息,将所述位图中所述第二事务标识对应的处理请求的存储位置的存储状态更新为未占用状态、以及将所述第二事务标识的标识值修正为指示已备份全部信息;
在所述日志中所有第一事务标识的标识值和所有第二事务标识的标识值均指示已备份全部信息的情况下,根据所述位图确定所述队列中存储状态为占用状态的存储位置。
可选地,所述虚拟化后端组件将所述处理结果写入所述共享存储空间的完成队列中,所述完成队列中的各个存储位置还存储有状态字段,所述状态字段的字段值用于指示该存储位置存储的处理结果是否有效、且每次重新从完成队列的队头写入处理结果时指示处理结果有效的字段值发生变化;
在接收到处理装置的处理结果之后,还包括:
根据所述恢复写入信息指示的写入位置以及所述日志中记录的指示处理结果有效的状态字段的字段值,确定所述完成队列中指示处理结果有效的状态字段的字段值。
可选地,若所述恢复写入信息指示的写入位置为所述完成队列的队头,则所述完成队列中指示处理结果有效的状态字段的字段值与所述日志中记录的指示处理结果有效的状态字段的字段值不同;
若所述恢复写入信息指示的写入位置非所述完成队列的队头,则所述完成队列中指示处理结果有效的状态字段的字段值与所述日志中记录的指示处理结果有效的状态字段的字段值相同。
根据本说明书一个或多个实施例的第三方面,提出了一种虚拟机系统,包括虚拟化后端组件和虚拟机,所述虚拟化后端组件与所述虚拟机通过共享存储空间进行数据交互;
所述虚拟机用于将处理请求写入所述共享存储空间,以及从所述共享存储空间中读取处理请求的处理结果;
所述虚拟化后端组件用于执行第一方面或第二方面任意一项所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面中任一项所述的方法。
根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面所述方法的步骤。
本说明书一个或多个实施例提供一种虚拟机系统的灾备方法,在虚拟化后端组件下发从共享存储空间中读取的处理请求、以及将处理结果写入共享存储空间两个过程中,分别执行相关的备份操作。在下发从共享存储空间中读取的处理请求的过程中,在日志中存储下发的处理请求以及更新记录的恢复读取信息;在将处理结果写入共享存储空间的过程中,在日志中删除处理请求以及更新记录的恢复写入信息;实现了对虚拟化后端组件的相关关键信息的备份。
本说明书一个或多个实施例提供一种虚拟机系统的灾备恢复方法,在虚拟化后端组件意外崩溃的情况后,重启后的虚拟化后端组件能够将日志中记录的还未返回处理结果的处理请求重新下发,以及基于恢复读取信息继续从所述共享存储空间中读取处理请求,基于回复写入信息继续向所述共享存储空间写入处理结果,实现断点重连能力,保证重启后的虚拟化后端组件能够与虚拟机进行正确的数据交互。
附图说明
图1是一示例性实施例提供的一种虚拟机系统的结构示意图。
图2是一示例性实施例提供的一种虚拟机系统的灾备方法的流程示意图。
图3是一示例性实施例提供的一种虚拟机系统的灾备恢复方法的流程示意图。
图4是一示例性实施例提供的处理请求下发模块和处理结果写入模块分别执行对应流程的示意图。
图5是一示例性实施例提供的另一种虚拟机系统的结构示意图。
图6是一示例性实施例提供的处理请求下发过程的时序图。
图7是一示例性实施例提供的处理结果写入过程的时序图。
图8是一示例性实施例提供的另一种虚拟机系统的结构示意图。
图9是一示例性实施例提供的共享存储空间中存储的内容的示意图。
图10是一示例性实施例提供的一种电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
请参阅图1示出的虚拟机系统100,虚拟化后端组件20和虚拟机10通过共享存储空间进行数据交互,所述虚拟机10用于将处理请求写入所述共享存储空间,以及从所述共享存储空间中读取处理请求的处理结果。所述虚拟化后端组件20用于从所述共享存储空间中读取所述虚拟机写入的处理请求并将其下发给处理装置;在接收处理装置返回的处理结果之后,将处理结果写入共享存储空间。在一个例子中,所述处理装置可以是某个物理硬件的驱动组件或者控制组件,用于与物理硬件进行交互以实现对处理请求的处理过程。比如所述处理请求为I/O请求,所述处理装置可以是SSD硬盘的存储控制组件。
其中,虚拟机化后端组件维护有读取信息和写入信息,所述读取信息指示从共享内存中读取处理请求的读取位置,所述写入信息指示将处理请求的处理结果写入共享内存的写入位置;虚拟化后端组件从所述共享存储空间中读取所述虚拟机写入的处理请求时,需要同步更新所述读取信息,以便基于更新后的读取信息继续从共享存储空间中读取处理请求;虚拟机后端将处理装置返回的处理结果写入共享存储空间时,需要同步更新写入信息,以便基于更新后的写入信息继续将接收的处理结果写入共享存储空间。
示例性的,虚拟机和虚拟化后端组件为应用程序,虚拟机和虚拟化后端组件可以处于电子设备的用户态中。所述虚拟机内部可进一步划分成内核态和用户态,由处于虚拟机内核态的虚拟机操作系统与所述虚拟化后端组件通过共享存储空间进行数据交互。所述处理装置也是应用程序,所述处理装置可处于电子设备的内核态中,比如所述处理装置可以是某个物理硬件的驱动组件或者控制组件,用于与物理硬件进行交互以实现对处理请求的处理。
示例性的,所述虚拟机系统(包括虚拟机和虚拟化后端组件)和所述处理装置可以集成于同一电子设备中;或者,所述虚拟机系统(包括虚拟机和虚拟化后端组件)和所述处理装置也可以分别处于不同的电子设备,比如所述虚拟机系统中的虚拟机为云服务器,所述虚拟机系统中的虚拟化后端组件与所述处理装置通信连接。
当虚拟化后端组件崩溃或者热升级时会造成以下问题:
(1)比如虚拟化后端组件从共享存储空间中读取序号1~10共计10个处理请求并准备将其下发给处理装置处理,而虚拟机认为提交队列中的序号1~10共计10个处理请求已被读取,因此继续下发新的处理请求并覆盖了之前已被读取的处理请求,而虚拟化后端组件在下发这10个处理请求的过程中意外崩溃,此时可能有部分处理请求已经由处理请求处理装置处理完成并由虚拟化后端组件写入完成队列中,而有部分处理请求还未发送给处理请求处理装置处理,但是提交队列中有关于该部分处理请求已被虚拟机新下发的处理请求覆盖,从而造成部分处理请求丢失的情况。
(2)虚拟化后端组件维护的读取信息和写入信息丢失,导致重启后的虚拟化后端组件无法确定应该继续从共享存储空间中的哪个位置继续读取处理请求、以及将处理请求的处理结果写入共享存储空间中的哪个位置,无法通过共享存储空间与虚拟机进行数据交互。
针对于虚拟化后端组件意外崩溃或者热升级等事件导致信息丢失的情况,请参阅图2,图2示出了如图1所示的虚拟机系统的灾备方法的流程示意图,所述方法可应用于虚拟化后端组件。所述方法包括:
在步骤S101中,在从所述共享存储空间中读取所述虚拟机写入的处理请求之后,将所述处理请求写入日志、以及根据所述处理请求在所述共享存储空间中的读取位置,更新在所述日志中记录的恢复读取信息,并将所述处理请求下发给处理装置;所述恢复读取信息,用于指示所述虚拟化后端组件在重启后从所述共享存储空间中读取处理请求的读取位置。
在步骤S102中,在接收到处理装置的处理结果之后,将所述日志中与所述处理结果对应的处理请求删除、以及根据所述处理结果在所述共享存储空间中的待写入位置,更新在所述日志中记录的恢复写入信息,并将所述处理结果写入所述共享存储空间;所述恢复写入信息,用于指示所述虚拟化后端组件在重启后向所述共享存储空间写入处理结果的写入位置。
本实施例中,在虚拟化后端组件下发从共享存储空间中读取的处理请求、以及将处理结果写入共享存储空间两个过程中,分别执行相关的备份操作。在下发从共享存储空间中读取的处理请求的过程中,在日志中存储下发的处理请求以及更新记录的恢复读取信息;在将处理结果写入共享存储空间的过程中,在日志中删除处理请求以及更新记录的恢复写入信息;实现了对虚拟化后端组件的相关关键信息的备份。
并且本实施例实现在日志中存储处理请求的原因在于,在虚拟化后端组件崩溃后,虚拟机可能继续往共享存储空间中写入新的处理请求,在虚拟化后端组件重启后,此时共享存储空间存储的处理请求与虚拟化后端组件崩溃时的存储的处理请求不同,共享存储空间存储的处理请求不具备可靠性,因此本实施例实现在日志中同步存储从共享存储空间中读取的处理请求以保证处理请求的可靠性,日志中记录的处理请求为虚拟化后端组件从共享存储空间中读取的还未返回处理结果的处理请求。
在虚拟化后端组件意外崩溃的情况后,重启后的虚拟化后端组件能够基于上述记录的日志实现断点重连。请参阅图3,图3示出了如图1所示的虚拟机系统的灾备恢复方法的流程示意图,所述方法可应用于虚拟化后端组件。所述方法包括:
在步骤S201中,在所述虚拟化后端组件重启后,获取与所述虚拟机对应的日志;所述日志中的内容基于上述的虚拟机系统的灾备方法生成。
在步骤S202中,将所述日志中记录的处理请求下发给处理装置、以及根据所述日志中记录的恢复读取信息指示的读取位置从所述共享存储空间中读取处理请求。
在步骤S203中,在接收到处理装置的处理结果之后,根据所述日志中记录的恢复写入信息指示的写入位置将所述处理结果写入所述共享存储空间。
本实施例中,在虚拟化后端组件意外崩溃的情况后,重启后的虚拟化后端组件能够将日志中记录的还未返回处理结果的处理请求重新下发,以及基于恢复读取信息继续从所述共享存储空间中读取处理请求,基于回复写入信息继续向所述共享存储空间写入处理结果,实现断点重连能力,保证重启后的虚拟化后端组件能够与虚拟机进行正确的数据交互。
示例性的,请参阅图4,可以理解为虚拟化后端组件20包括处理请求下发模块21和处理结果写入模块22。处理请求下发模块21每次从所述共享存储空间中读取所述虚拟机写入的处理请求后,将所述处理请求写入日志(图4中以处理请求A举例)、以及更新在所述日志中记录的恢复读取信息,在完成日志备份后将所述处理请求下发给处理装置。处理结果写入模块22每次在接收到处理装置的处理结果之后,将所述日志中与所述处理结果对应的处理请求删除(图4中以处理请求B举例)、以及更新在所述日志中记录的恢复写入信息,在完成日志备份后将处理结果写入共享存储空间。即是说,处理请求下发模块21每次从所述共享存储空间中读取所述虚拟机写入的处理请求后,需要进行与处理请求相关的日志备份过程;处理结果写入模块22每次在接收到处理装置的处理结果之后,需要进行与处理结果相关的日志备份过程,两个过程相对独立。
在虚拟化后端组件重启之后,处理请求下发模块只需执行一次步骤S201,接下来即可按照步骤S101执行,进行日志备份和处理请求的正常下发。同理,在虚拟化后端组件重启之后,处理结果写入模块只需执行一次步骤S202,接下来即可按照步骤S102执行,进行日志备份和处理结果正常写入共享存储空间。
示例性的,请参阅图5,所述日志可以存储在所述共享存储空间中。也可以存储在其他位置,本实施例对此不做任何限制。
在一些实施例中,所述日志以队列形式存储处理请求,以位图形式记录队列中各个存储位置的存储状态。虚拟机将处理请求写入共享存储空间,虚拟化后端组件从所述共享存储空间中读取处理请求,根据所述位图在所述队列中查找所述处理请求的待写入位置,所述待写入位置的存储状态为未占用状态,然后将所述处理请求写入所述待写入位置、以及将所述位图中所述处理请求的写入位置的存储状态更新为占用状态;并且虚拟化后端组件根据所述处理请求在所述共享存储空间中的读取位置,更新在所述日志中记录的恢复读取信息;最后所述虚拟化后端组件将所述处理请求下发给处理请求处理装置。
示例性的,所述位图包括若干标志位,不同标志位用于指示所述日志中的队列中的不同存储位置的存储状态。在将所述处理请求写入所述待写入位置后,虚拟化后端组件在所述位图中将与所述处理请求的写入位置对应的标志位更改为指示存储状态为占用状态,比如标志位为0表示存储位置的存储状态为未占用状态,标志位为1表示存储位置的存储状态为占用状态,虚拟化后端组件可以将位图中用于指示所述处理请求的写入位置的标志位从0更改为1。可以理解的是,也可以采用其他数值来表示占用或未占用状态,本实施例对此不做任何限制。
示例性的,在将所述处理请求写入所述待写入位置时,还可以在所述处理请求的写入位置存储所述处理请求的处理状态,该处理状态指示该写入位置存储的处理请求正在处理,所述位图中与所述处理请求的写入位置对应的标志位被更新为指示占用状态。所述处理请求的处理状态和所述位图中与所述处理请求的写入位置对应的标志位同步更新。
在一些实施例中,所述日志以队列形式存储处理请求,以位图形式记录队列中各个存储位置的存储状态。处理装置在处理完处理请求后向虚拟化后端组件返回处理结果,虚拟化后端组件接收处理结果之后,将所述位图中与所述处理结果对应的处理请求、在所述队列中的存储位置的存储状态更新为未占用状态,表示所述队列中的该存储位置存储的处理请求已经处理完成。
示例性的,下发给所述处理装置的处理请求、及所述处理装置返回的处理结果均携带有位置标识,所述位置标识用于指示处理请求在日志中的存储位置,以便虚拟化后端组件可以基于该位置标识将所述日志中与所述处理结果对应的处理请求删除。
示例性的,所述位图包括若干标志位,不同标志位用于指示所述I/O请求队列中的不同存储位置的存储状态。比如标志位为0表示存储位置的存储状态为未占用状态,标志位为1表示存储位置的存储状态为占用状态,虚拟化后端组件接收到处理结果之后,可以根据与所述处理结果对应的处理请求在所述队列中的存储位置确定在所述位图中对应的标志位,并将该标志位从1更改为0。示例性的,在所述处理请求的存储位置还存储该处理请求的处理状态的情况下,可以同步将该处理状态更新为指示该存储位置存储的处理请求已处理完成。
在一些实施例中,在虚拟化后端组件因突然崩溃或者热升级等事件重启的情况下,重启后的虚拟化后端组件可以根据日志中的位图记录的存储状态,确定日志的队列中存储状态为占用状态的存储位置,然后将所述队列中存储状态为占用状态的存储位置处存储的处理请求(即未返回处理结果的处理请求)重新下发给处理装置,从而有效避免出现因虚拟化后端组因突然崩溃或者热升级等事件重启导致的处理请求丢失情况,保证处理请求的处理准确性。
在一些实施例中,在虚拟机系统所在的电子设备具有较强的并行处理能力的情况下,在从所述共享存储空间中读取所述虚拟机写入的处理请求之后,所述虚拟后后端组件可以同步进行以下步骤:将所述处理请求写入日志、以及更新在所述日志中记录的恢复读取信息。在接收到处理装置的处理结果之后,所述虚拟后后端组件可以同步进行以下步骤:将所述日志中与所述处理结果对应的处理请求删除、以及更新在所述日志中记录的恢复写入信息。即上述两个备份过程的信息同时成功备份或者同时备份不成功,同一备份过程中不存在有些信息备份成功而有些信息备份不成功的情况,从而保证日志中记录的信息的可靠性。
在另一些实施例中,在同一备份过程(与处理请求相关的日志备份过程、或与处理结果相关的日志备份过程)中进行信息备份也可能存在先后执行顺序,但这容易存在以下问题:在虚拟化后端组件突然崩溃时正在更新日志中的某些信息(比如位图、恢复读取信息等),可能某些信息更新成功而另外一些信息未更新成功,而重启后的虚拟化后端组件无法确定日志中信息哪些是更新后的、哪些是未更新的,从而导致重启后的虚拟化后端组件无法利用日志进行故障恢复。因此,为了避免出现上述问题,本实施例在所述日志中以第一事务标识记录与所述处理请求相关的信息在所述日志中的备份进度、以及以第二事务标识记录与所述处理结果相关的信息在所述日志中的备份进度。
在将所述处理请求写入所述待写入位置、以及更新了在所述日志中记录的恢复读取信息的情况下,所述第一事务标识的标识值被置为指示已备份部分信息;以及在更新了所述位图的情况下,所述第一事务标识的标识值被置为指示已备份全部信息。在更新了所述日志中记录的恢复写入信息的情况下,所述第二事务标识的标识值被置为指示已备份部分信息;以及在更新了所述位图的情况下,所述第二事务标识的标识值被置为指示已备份全部信息。本实施例实现通过第一事务标识和第二事务标识保证了日志中存储的信息的可靠性,使得重启后的虚拟化后端组件能够利用日志进行故障恢复。
在一些可能的实施方式中,请参阅图6,图6示出了处理请求下发过程的时序图。
(1)虚拟机将处理请求写入共享存储空间。
(2)虚拟化后端组件从共享存储空间中读取虚拟机写入的处理请求。
(3)虚拟化后端组件在日志中备份信息:
A、虚拟化后端组件根据所述位图在所述队列中查找所述处理请求的待写入位置,所述待写入位置的存储状态为未占用状态;将所述处理请求写入所述待写入位置。
B、①利用内联体结构在所述日志中同步执行以下步骤:更新在所述日志中记录的恢复读取信息、以及将所述第一事务标识的标识值置为指示已备份部分信息。
②将所述位图中所述处理请求的写入位置的存储状态更新为占用状态。
③将所述第一事务标识的标识值置为指示已备份全部信息。
(4)虚拟化后端组件将处理请求下发给处理装置。
其中,利用内联结构体可以一次性同步更新恢复读取信息和第一事务标识,有利于保证信息备份的原子性。示例性的,以64位操作系统为例,64位操作系统可以保证64bit数据的原子更新,即保证64bit数据一次性写入成功,或者64bit数据全部写入失败。可以将所述日志中与I/O请求下发过程相关的信息(比如上述的恢复读取信息和第一事务标识)组合到64bit的内联结构体中以实现一次性同步更新。当然,以实际应用过程中所使用的操作系统的处理位宽进行具体设置,本实施例对此不做任何限制。
示例性的,还可以在日志中记录所述处理请求的位图索引,所述位图索引用于指示所述位图中与所述处理请求的写入位置对应的标志位,所述虚拟化后端组件可以基于所述位图索引将所述位图中与所述处理请求的写入位置对应的标志位更新为指示占用状态。在一个例子中,可以利用内联体结构在所述日志中同步执行以下步骤:在日志中记录所述处理请求的位图索引、更新在所述日志中记录的恢复读取信息、以及将所述第一事务标识的标识值置为指示已备份部分信息,从而保证日志的原子性。
同理,处理结果写入过程与上述处理请求下发过程类似,请参阅图7,图7示出了处理结果写入过程的时序图。
(1)虚拟化后端组件获取所述处理装置处理完成的处理结果。
(2)虚拟化后端组件在日志中备份信息:
①利用内联体结构在所述日志中同步执行以下步骤:更新所述日志中记录的恢复写入信息、以及将所述第二事务标识的标识值被置为指示已备份部分信息。
②将所述位图中所述处理结果对应的处理请求在所述队列中的存储位置的存储状态更新为未占用状态。
③将第二事务标识的标识值置为指示已备份全部信息。
(3)虚拟化后端组件将处理结果写入共享存储空间。
(4)虚拟机从共享存储空间中读取处理结果。
其中,利用内联结构体可以一次性同步更新恢复写入信息和第二事务标识,有利于保证信息备份的原子性。
在一些可能的实施方式中,在虚拟化后端组件因突然崩溃或者热升级等事件重启的情况下,重启后的虚拟化后端组件加载日志,通过日志查找还没收到处理结果的需要下发给处理装置的处理请求,在此之前,需要先检查所述日志中的第一事务标识和第二事务标识以实现对日志中的信息的修正,以便基于修正后的正确的信息查找还没收到处理结果的需要下发给处理装置的处理请求。
若所述日志中存在第一事务标识的标识值指示已备份部分信息,表示虚拟化后端组件在重启前在对某个处理请求的相关信息进行备份时只进行到图6实施例的B中的①步骤,剩下的②和③步骤还未进行,则需要先处理②和③步骤,将所述位图中所述第一事务标识对应的处理请求的存储位置的存储状态更新为占用状态、以及将所述第一事务标识的标识值修正为指示已备份全部信息。示例性的,在进行图6实施例的B中的①步骤时可以同步记录所述处理请求的位图索引,从而可以将所述位图索引指示的位图中的标识位更新为指示占用状态。
若所述日志中存在第二事务标识的标识值指示已备份部分信息,表示虚拟化后端组件在重启前在对某个处理结果的相关信息进行备份时只进行到图7实施例的(2)中的①步骤,剩下的②和③步骤还未进行,则需要先处理②和③步骤,将所述位图中所述第二事务标识对应的处理请求的存储位置的存储状态更新为未占用状态、以及将所述第二事务标识的标识值修正为指示已备份全部信息。
在所述日志中所有第一事务标识的标识值和所有第二事务标识的标识值均指示已备份全部信息的情况下,表示日志中存储的信息无误,则虚拟化后端组件可以根据日志中的位图记录的存储状态确定日志的队列中存储状态为占用状态的存储位置,然后将所述队列中存储状态为占用状态的存储位置处存储的处理请求(即未返回处理结果的处理请求)重新下发给处理装置,从而有效避免出现因虚拟化后端组因突然崩溃或者热升级等事件重启导致的处理请求丢失情况,保证处理请求的处理准确性。
在一些实施例中,请参阅图7,处理请求和处理结果在共享存储空间中以队列形式存储,这里将共享存储空间中用于存储处理请求的队列称为提交队列(Submission Queue,SQ),用于存储处理结果的队列称为完成队列(Completion Queue,CQ)。虚拟机10将处理请求写入提交队列,虚拟化后端组件20从提交队列中读取处理请求。以及,虚拟化后端组件20将处理结果写入完成队列,虚拟机10从完成队列中读取处理结果。所述日志存储在所述共享存储空间中。
其中,日志中用于存储处理请求的队列能够存储的处理请求的数量与所述提交队列能够存储的处理请求的数量相同,从而确保在极限情况下,日志中的队列仍有空间能够保存处理请求。在一个例子中,假设提交队列的大小为1024(即能够存储1024个处理请求),极限情况下,虚拟机已经下发1024个处理请求,此时第2-1024个处理请求已经完成,但仍有第一个处理请求在处理中,此时虚拟化后端组件将第2-1024个处理请求的处理结果写入完成队列,虚拟机接收到通知认为当前提交队列中至少有1023个空余存储位置可以用来存放新的处理请求,因此向提交队列下发1023个新的处理请求。则相应地,由于日志中的队列的大小也是1024,从而使得日志中的队列仍然有1023个空闲存储位置可以用来存放新的处理请求。
需要说明的是,虚拟化后端组件可以从提交队列中一次性读取一个或多个处理请求,然后针对于每个处理请求再依次执行步骤S101后下发给处理请求处理装置。同理,虚拟化后端组件可以从处理请求处理装置中一次性获取一个或多个处理请求的处理结果,然后针对于每个处理请求再依次执行步骤S102之后将处理结果写入完成队列。
在一些实施例中,所述虚拟化后端组件将所述处理结果写入所述共享存储空间的完成队列中,所述完成队列中的各个存储位置还存储有状态字段,所述状态字段的字段值用于指示该存储位置存储的处理结果是否有效、且每次重新从完成队列的队头写入处理结果时指示处理结果有效的字段值发生变化。示例性的,所述完成队列为环形队列,所述状态字段包括第一数值和第二数值;每一轮虚拟化后端组件将处理结果写入到队尾并跳转到队头时,状态字段会反转一次,具体来说,若当前所述完成队列中指示处理结果无效的状态字段为第一数值、且指示处理结果有效的状态字段为第二数值,在重新从所述完成队列的队头开始存储处理请求的处理结果时,所述状态字段反转为指示处理结果无效的状态字段为第二数值,指示处理结果有效的状态字段为第一数值。
在一个例子中,所述状态字段包括0和1,当前完成队列中0表示处理结果无效,1表示处理结果有效,虚拟化后端组件在往所述完成队列中的指定存储位置写入处理请求的处理结果时,更新第二头指针并且将该指定存储位置处存储的状态字段从0修改为1,在当前轮中虚拟化后端组件处理到队尾时,该完成队列中各个存储位置的状态字段均从0修改为1,虚拟机可以根据所述完成队列中的各个存储位置的状态字段一次性读取一个或多个处理请求的处理结果。当虚拟化后端组件重新从所述完成队列的队头开始存储处理请求的处理结果时,状态字段反转一次,此时1表示处理结果无效,0表示处理结果有效,虚拟化后端组件在往所述完成队列中的指定存储位置写入处理请求的处理结果时,将该指定存储位置处存储的状态字段从1修改为0。同理,虚拟机在读取到队尾并跳转到队头时,虚拟机维护的所述状态字段也会对应地反转一次。其中,所述完成队列中各个存储位置存储的状态字段由所述虚拟化后端组件在将处理结果写入的时候同步更新。
因此,为了保证完成队列的准确写入及读取,则所述虚拟化后端组件在接收到处理装置的处理结果之后,除了在日志中备份上述信息,还需要根据所述处理结果在所述共享存储空间中的待写入位置,更新在所述日志中记录的指示处理结果有效的状态字段的字段值。
示例性的,可以利用内联结构体同步执行以下步骤:更新所述日志中记录的恢复写入信息、将所述第二事务标识的标识值被置为指示已备份部分信息、以及更新在所述日志中记录的指示处理结果有效的状态字段的字段值。
在一些可能的实施方式中,在虚拟化后端组件因突然崩溃或者热升级等事件重启的情况下,重启后的虚拟化后端组件可以根据所述恢复写入信息指示的写入位置以及所述日志中记录的指示处理结果有效的状态字段的字段值,确定所述完成队列中指示处理结果有效的状态字段的字段值,从而实现完成队列的准确写入及读取。
示例性的,若所述恢复写入信息指示的写入位置为所述完成队列的队头,则所述完成队列中指示处理结果有效的状态字段的字段值与所述日志中记录的指示处理结果有效的状态字段的字段值不同;若所述恢复写入信息指示的写入位置非所述完成队列的队头,则所述完成队列中指示处理结果有效的状态字段的字段值与所述日志中记录的指示处理结果有效的状态字段的字段值相同。
在一些示例性的实施例中,请参阅图8,处理请求和处理结果在共享存储空间中以队列形式存储,这里将共享存储空间中用于存储处理请求的队列称为提交队列(Submission Queue,SQ),用于存储处理结果的队列称为完成队列(Completion Queue,CQ)。所述日志存储在所述共享存储空间中。所述虚拟化后端组件可以是Vhost-NVMe组件。Vhost-NVMe存储虚拟化技术为近几年针对NVMe(Non-Volatile Memory Express)协议设计的vhost虚拟化技术。所述处理请求可以是I/O请求。
所述提交队列包括第一头指针和第一尾指针,所述完成队列包括第二头指针和第二尾指针。所述第一头指针和所述第二尾指针由所述虚拟机维护,所述第一尾指针和所述第二头指针由所述虚拟化后端组件维护。第一头指针用于记录提交队列中I/O请求的写入情况,第一尾指针用于记录提交队列中I/O请求的读取情况。第二头指针用于记录完成队列中处理结果的写入情况,第二尾指针用于记录完成队列中I/O请求处理结果的读取情况。其中,所述日志中记录的恢复读取信息包括所述第一尾指针,以及所述恢复写入信息包括所述第二头指针。
对于提交队列,虚拟机作为生产者将I/O请求写入提交队列,同时更新第一头指针,并通过doorbell寄存器通知虚拟化后端组件,此时虚拟化后端组件作为消费者从提交队列中获取I/O请求,然后同步更新第一尾指针并将I/O请求下发给I/O请求处理装置进行处理。当第一头指针和第一尾指针指向的存储位置相同,表示提交队列中I/O请求已全部被虚拟化后端组件读取。
对于完成队列,虚拟化后端组件作为生产者,从I/O请求处理装置获取处理完的I/O请求的处理结果,并将该处理结果写入完成队列并同步更新第一头指针,接着通知虚拟机。虚拟机作为完成队列的消费者从完成队列中读取I/O请求的处理结果,并同步更新第二尾指针。当第二头指针和第二尾指针指向的存储位置相同,表示完成队列中I/O请求处理结果已全部被虚拟机读取。
在应用本说明书实施例提供的灾备方法后,虚拟化后端组件在从所述提交队列中读取所述虚拟机写入的I/O请求之后,将所述I/O请求写入日志、以及根据所述I/O请求在所述提交队列中的读取位置,更新在所述日志中记录的第一尾指针,并将所述I/O请求下发给处理装置。在接收到I/O请求处理装置的处理结果之后,虚拟化后端组件将所述日志中与所述处理结果对应的I/O请求删除、以及根据所述处理结果在所述完成队列中的待写入位置,更新在所述日志中记录的第二头指针,并将所述处理结果写入所述完成队列。
在应用本说明实施例提供的灾备恢复方法后,在所述虚拟化后端组件重启后,获取与所述虚拟机对应的日志;将所述日志中记录的I/O请求下发给处理装置、以及根据所述日志中记录的第一尾指针指示的读取位置从所述提交队列中读取处理请求。在接收到I/O请求处理装置的处理结果之后,根据所述日志中记录的第二头指针指示的写入位置将所述处理结果写入所述共享存储空间。
在一个例子中,请参阅图9,在应用本说明书实施例提供的灾备方法后,所述日志中存储有I/O请求(以队列形式存储)和其他多项信息,所述元数据项包括但不限于第一尾指针、第二头指针、指示处理结果有效的状态字段、第一事务标识(与I/O请求一一对应)、第二事务标识(与I/O请求一一对应)、位图和日志状态等。其中,所述日志的状态指示所述日志是否被启用,虚拟化后端组件在突然崩溃或者热升级后重启,首先查看所述日志中日志状态,若所述日志状态指示该日志未启用,则按照相关技术中的处理过程与虚拟机继续通过共享存储空间中的提交队列和完成队列进行数据交互;如果所述日志状态指示该日志已启动,则根据所述日志中记录的信息进行故障恢复;日志中存储的其他信息的应用可参见上述描述过程,此处不再赘述。
以上实施方式中的各种技术特征可以任意进行组合,只要特征之间的组合不存在冲突或矛盾,因此上述实施方式中的各种技术特征的任意进行组合也属于本说明书公开的范围。
相应的,请参阅图1和图5,本说明书实施例还提供了一种虚拟机系统100,包括虚拟化后端组件20和虚拟机10,所述虚拟化后端组件20与所述虚拟机10通过共享存储空间进行数据交互;
所述虚拟机10用于将处理请求写入所述共享存储空间,以及从所述共享存储空间中读取处理请求的处理结果;
所述虚拟化后端组件20用于在从所述共享存储空间中读取所述虚拟机写入的处理请求之后,将所述处理请求写入日志、以及根据所述处理请求在所述共享存储空间中的读取位置,更新在所述日志中记录的恢复读取信息,并将所述处理请求下发给处理装置;所述恢复读取信息,用于指示所述虚拟化后端组件在重启后从所述共享存储空间中读取处理请求的读取位置;在接收到处理装置的处理结果之后,将所述日志中与所述处理结果对应的处理请求删除、以及根据所述处理结果在所述共享存储空间中的待写入位置,更新在所述日志中记录的恢复写入信息,并将所述处理结果写入所述共享存储空间;所述恢复写入信息,用于指示所述虚拟化后端组件在重启后向所述共享存储空间写入处理结果的写入位置。
在一些实施例中,所述日志以队列形式存储处理请求,以位图形式记录队列中各个存储位置的存储状态;所述虚拟化后端组件20具体用于:根据所述位图在所述队列中查找所述处理请求的待写入位置,所述待写入位置的存储状态为未占用状态;将所述处理请求写入所述待写入位置、以及将所述位图中所述处理请求的写入位置的存储状态更新为占用状态;在接收到处理装置的处理结果之后,在所述位图中,将所述处理结果对应的处理请求在所述队列中的存储位置的存储状态更新为未占用状态。
在一些实施例中,所述日志以第一事务标识记录与所述处理请求相关的信息在所述日志中的备份进度、以及以第二事务标识记录与所述处理结果相关的信息在所述日志中的备份进度;在将所述处理请求写入所述待写入位置、以及更新了在所述日志中记录的恢复读取信息的情况下,所述第一事务标识的标识值被置为指示已备份部分信息;以及在更新了所述位图的情况下,所述第一事务标识的标识值被置为指示已备份全部信息;在更新了所述日志中记录的恢复写入信息的情况下,所述第二事务标识的标识值被置为指示已备份部分信息;以及在更新了所述位图的情况下,所述第二事务标识的标识值被置为指示已备份全部信息。
在一些实施例中,在将所述处理请求写入所述待写入位置之后,虚拟化后端组件20具体用于利用内联体结构在所述日志中同步执行以下步骤:更新在所述日志中记录的恢复读取信息、以及将所述第一事务标识的标识值置为指示已备份部分信息。在接收到处理装置的处理结果之后,虚拟化后端组件20具体用于利用内联体结构在所述日志中同步执行以下步骤:更新所述日志中记录的恢复写入信息、以及将所述第二事务标识的标识值被置为指示已备份部分信息。
在一些实施例中,所述虚拟化后端组件20将所述处理结果写入所述共享存储空间的完成队列中,所述完成队列中的各个存储位置还存储有状态字段,所述状态字段的字段值用于指示该存储位置存储的处理结果是否有效、且每次重新从完成队列的队头写入处理结果时指示处理结果有效的字段值发生变化;所述虚拟化后端组件20还用于在接收到处理装置的处理结果之后,根据所述处理结果在所述共享存储空间中的待写入位置,更新在所述日志中记录的指示处理结果有效的状态字段的字段值。
在一些实施例中,下发给所述处理装置的处理请求、及所述处理装置返回的处理结果均携带有位置标识,所述位置标识用于指示处理请求在日志中的存储位置;和/或所述虚拟化后端组件从所述共享存储空间的提交队列中读取处理请求,所述日志中用于存储处理请求的队列的存储数量与所述提交队列的存储数量相同。
在一些实施例中,所述虚拟化后端组件20还用于:在重启后获取与所述虚拟机对应的日志;所述日志中的内容基于上述过程生成;将所述日志中记录的处理请求下发给处理装置、以及根据所述日志中记录的恢复读取信息指示的读取位置从所述共享存储空间中读取处理请求;在接收到处理装置的处理结果之后,根据所述日志中记录的恢复写入信息指示的写入位置将所述处理结果写入所述共享存储空间。
在一些实施例中,所述日志以队列形式存储处理请求,以位图形式记录队列中各个存储位置的存储状态。所述虚拟化后端组件20具体用于:在重启后,根据所述位图确定所述队列中存储状态为占用状态的存储位置;将所述队列中存储状态为占用状态的存储位置处存储的处理请求下发给处理装置。
在一些实施例中,所述日志以第一事务标识记录与所述处理请求相关的信息在所述日志中的备份进度、以及以第二事务标识记录与所述处理结果相关的信息在所述日志中的备份进度。所述虚拟化后端组件具体用于:若所述日志中存在第一事务标识的标识值指示已备份部分信息,将所述位图中所述第一事务标识对应的处理请求的存储位置的存储状态更新为占用状态、以及将所述第一事务标识的标识值修正为指示已备份全部信息;若所述日志中存在第二事务标识的标识值指示已备份部分信息,将所述位图中所述第二事务标识对应的处理请求的存储位置的存储状态更新为未占用状态、以及将所述第二事务标识的标识值修正为指示已备份全部信息;在所述日志中所有第一事务标识的标识值和所有第二事务标识的标识值均指示已备份全部信息的情况下,根据所述位图确定所述队列中存储状态为占用状态的存储位置。
在一些实施例中,所述虚拟化后端组件20将所述处理结果写入所述共享存储空间的完成队列中,所述完成队列中的各个存储位置还存储有状态字段,所述状态字段的字段值用于指示该存储位置存储的处理结果是否有效、且每次重新从完成队列的队头写入处理结果时指示处理结果有效的字段值发生变化;所述虚拟化后端组件还用于在接收到处理装置的处理结果之后,根据所述恢复写入信息指示的写入位置以及所述日志中记录的指示处理结果有效的状态字段的字段值,确定所述完成队列中指示处理结果有效的状态字段的字段值。
在一些实施例中,若所述恢复写入信息指示的写入位置为所述完成队列的队头,则所述完成队列中指示处理结果有效的状态字段的字段值与所述日志中记录的指示处理结果有效的状态字段的字段值不同;若所述恢复写入信息指示的写入位置非所述完成队列的队头,则所述完成队列中指示处理结果有效的状态字段的字段值与所述日志中记录的指示处理结果有效的状态字段的字段值相同。
上述系统中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
在一些实施例中,请参阅图10,本说明书实施例还提供了一种电子设备,包括:
处理器300;
用于存储处理器可执行指令的存储器400;
其中,所述处理器300通过运行所述可执行指令以实现上述任一项所述的方法。
示例性的,所述电子设备包括但不限于桌上型计算机、笔记本、掌上电脑或者服务器等计算设备。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当存储介质中的指令由终端的处理器执行时,使得终端能够执行上述方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (14)
1.一种虚拟机系统的灾备方法,应用于虚拟化后端组件,所述虚拟化后端组件和虚拟机通过共享存储空间进行数据交互;所述方法包括:
在从所述共享存储空间中读取所述虚拟机写入的处理请求之后,将所述处理请求写入日志、以及根据所述处理请求在所述共享存储空间中的读取位置,更新在所述日志中记录的恢复读取信息,并将所述处理请求下发给处理装置;所述恢复读取信息,用于指示所述虚拟化后端组件在重启后从所述共享存储空间中读取处理请求的读取位置;
在接收到处理装置的处理结果之后,将所述日志中与所述处理结果对应的处理请求删除、以及根据所述处理结果在所述共享存储空间中的待写入位置,更新在所述日志中记录的恢复写入信息,并将所述处理结果写入所述共享存储空间;所述恢复写入信息,用于指示所述虚拟化后端组件在重启后向所述共享存储空间写入处理结果的写入位置。
2.根据权利要求1所述的方法,所述日志以队列形式存储处理请求,以位图形式记录队列中各个存储位置的存储状态;
所述将所述处理请求写入日志,包括:
根据所述位图在所述队列中查找所述处理请求的待写入位置,所述待写入位置的存储状态为未占用状态;
将所述处理请求写入所述待写入位置、以及将所述位图中所述处理请求的写入位置的存储状态更新为占用状态;
所述将所述日志中与所述处理结果对应的处理请求删除,包括:
在所述位图中,将所述处理结果对应的处理请求在所述队列中的存储位置的存储状态更新为未占用状态。
3.根据权利要求2所述的方法,所述日志以第一事务标识记录与所述处理请求相关的信息在所述日志中的备份进度、以及以第二事务标识记录与所述处理结果相关的信息在所述日志中的备份进度;
在将所述处理请求写入所述待写入位置、以及更新了在所述日志中记录的恢复读取信息的情况下,所述第一事务标识的标识值被置为指示已备份部分信息;以及在更新了所述位图的情况下,所述第一事务标识的标识值被置为指示已备份全部信息;
在更新了所述日志中记录的恢复写入信息的情况下,所述第二事务标识的标识值被置为指示已备份部分信息;以及在更新了所述位图的情况下,所述第二事务标识的标识值被置为指示已备份全部信息。
4.根据权利要求3所述的方法,
在将所述处理请求写入所述待写入位置之后,利用内联体结构在所述日志中同步执行以下步骤:更新在所述日志中记录的恢复读取信息、以及将所述第一事务标识的标识值置为指示已备份部分信息;
在接收到处理装置的处理结果之后,利用内联体结构在所述日志中同步执行以下步骤:更新所述日志中记录的恢复写入信息、以及将所述第二事务标识的标识值被置为指示已备份部分信息。
5.根据权利要求1所述的方法,所述虚拟化后端组件将所述处理结果写入所述共享存储空间的完成队列中,所述完成队列中的各个存储位置还存储有状态字段,所述状态字段的字段值用于指示该存储位置存储的处理结果是否有效、且每次重新从完成队列的队头写入处理结果时指示处理结果有效的字段值发生变化;
在接收到处理装置的处理结果之后,还包括:
根据所述处理结果在所述共享存储空间中的待写入位置,更新在所述日志中记录的指示处理结果有效的状态字段的字段值。
6.根据权利要求1至5任意一项所述的方法,下发给所述处理装置的处理请求、及所述处理装置返回的处理结果均携带有位置标识,所述位置标识用于指示处理请求在日志中的存储位置;和/或
所述虚拟化后端组件从所述共享存储空间的提交队列中读取处理请求,所述日志中用于存储处理请求的队列的存储数量与所述提交队列的存储数量相同。
7.一种虚拟机系统的灾备恢复方法,应用于虚拟化后端组件,所述虚拟化后端组件和虚拟机通过共享存储空间进行数据交互;所述方法包括:
在所述虚拟化后端组件重启后,获取与所述虚拟机对应的日志;所述日志中的内容基于权利要求1至6任意一项所述的虚拟机系统的灾备方法生成;
将所述日志中记录的处理请求下发给处理装置、以及根据所述日志中记录的恢复读取信息指示的读取位置从所述共享存储空间中读取处理请求;
在接收到处理装置的处理结果之后,根据所述日志中记录的恢复写入信息指示的写入位置将所述处理结果写入所述共享存储空间。
8.根据权利要求7所述的方法,所述日志以队列形式存储处理请求,以位图形式记录队列中各个存储位置的存储状态;
所述将所述日志中记录的处理请求下发给处理装置,包括:
根据所述位图确定所述队列中存储状态为占用状态的存储位置;
将所述队列中存储状态为占用状态的存储位置处存储的处理请求下发给处理装置。
9.根据权利要求8所述的方法,所述日志以第一事务标识记录与所述处理请求相关的信息在所述日志中的备份进度、以及以第二事务标识记录与所述处理结果相关的信息在所述日志中的备份进度;
所述根据所述位图确定所述队列中存储状态为占用状态的存储位置,包括:
若所述日志中存在第一事务标识的标识值指示已备份部分信息,将所述位图中所述第一事务标识对应的处理请求的存储位置的存储状态更新为占用状态、以及将所述第一事务标识的标识值修正为指示已备份全部信息;
若所述日志中存在第二事务标识的标识值指示已备份部分信息,将所述位图中所述第二事务标识对应的处理请求的存储位置的存储状态更新为未占用状态、以及将所述第二事务标识的标识值修正为指示已备份全部信息;
在所述日志中所有第一事务标识的标识值和所有第二事务标识的标识值均指示已备份全部信息的情况下,根据所述位图确定所述队列中存储状态为占用状态的存储位置。
10.根据权利要求7所述的方法,所述虚拟化后端组件将所述处理结果写入所述共享存储空间的完成队列中,所述完成队列中的各个存储位置还存储有状态字段,所述状态字段的字段值用于指示该存储位置存储的处理结果是否有效、且每次重新从完成队列的队头写入处理结果时指示处理结果有效的字段值发生变化;
在接收到处理装置的处理结果之后,还包括:
根据所述恢复写入信息指示的写入位置以及所述日志中记录的指示处理结果有效的状态字段的字段值,确定所述完成队列中指示处理结果有效的状态字段的字段值。
11.根据权利要求10所述的方法,若所述恢复写入信息指示的写入位置为所述完成队列的队头,则所述完成队列中指示处理结果有效的状态字段的字段值与所述日志中记录的指示处理结果有效的状态字段的字段值不同;
若所述恢复写入信息指示的写入位置非所述完成队列的队头,则所述完成队列中指示处理结果有效的状态字段的字段值与所述日志中记录的指示处理结果有效的状态字段的字段值相同。
12.一种虚拟机系统,包括虚拟化后端组件和虚拟机,所述虚拟化后端组件与所述虚拟机通过共享存储空间进行数据交互;
所述虚拟机用于将处理请求写入所述共享存储空间,以及从所述共享存储空间中读取处理请求的处理结果;
所述虚拟化后端组件用于执行权利要求1至11任意一项所述的方法。
13.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至11中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1至11中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211067085.6A CN115454570A (zh) | 2022-09-01 | 2022-09-01 | 灾备方法、灾备恢复方法、虚拟机系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211067085.6A CN115454570A (zh) | 2022-09-01 | 2022-09-01 | 灾备方法、灾备恢复方法、虚拟机系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115454570A true CN115454570A (zh) | 2022-12-09 |
Family
ID=84299831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211067085.6A Pending CN115454570A (zh) | 2022-09-01 | 2022-09-01 | 灾备方法、灾备恢复方法、虚拟机系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115454570A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483284A (zh) * | 2023-05-12 | 2023-07-25 | 深圳天融信创新科技有限公司 | 一种读写虚拟硬盘的方法、装置、介质及电子设备 |
-
2022
- 2022-09-01 CN CN202211067085.6A patent/CN115454570A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483284A (zh) * | 2023-05-12 | 2023-07-25 | 深圳天融信创新科技有限公司 | 一种读写虚拟硬盘的方法、装置、介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9195542B2 (en) | Selectively persisting application program data from system memory to non-volatile data storage | |
US11269846B2 (en) | Efficient database journaling using non-volatile system memory | |
US10049036B2 (en) | Reliable distributed messaging using non-volatile system memory | |
EP2168042B1 (en) | Execution of point-in-time copy operations in continuous mirroring environments | |
US9767015B1 (en) | Enhanced operating system integrity using non-volatile system memory | |
US11599554B2 (en) | Synchronizing changes to stale components of a distributed object using synchronization bitmaps | |
US11301338B2 (en) | Recovery on virtual machines with existing snapshots | |
CN109284066B (zh) | 一种数据处理方法、装置、设备及系统 | |
CN111865831B (zh) | 数据处理的方法、网络设备、计算节点和系统 | |
CN115408411A (zh) | 数据写入方法、装置、电子设备及存储介质 | |
CN115454570A (zh) | 灾备方法、灾备恢复方法、虚拟机系统、设备及存储介质 | |
US11366596B2 (en) | Data storage device and data access method for quickly loading boot data | |
CN110928890B (zh) | 数据存储方法、装置、电子设备及计算机可读存储介质 | |
CN110531925B (zh) | 数据读取方法、装置、电子设备及机器可读存储介质 | |
CN112965783A (zh) | 一种使用存储快照备份虚拟机的系统及方法 | |
US10761892B2 (en) | Method and electronic device for executing data reading/writing in volume migration | |
US11693844B2 (en) | Processing delete requests based on change feed of updates | |
US9235349B2 (en) | Data duplication system, data duplication method, and program thereof | |
US11940878B2 (en) | Uninterrupted block-based restore operation using a read-ahead buffer | |
CN110287064B (zh) | 一种磁盘数据的还原方法、装置及电子设备 | |
US11010332B2 (en) | Set-based mutual exclusion using object metadata tags in a storage appliance | |
CN113791934A (zh) | 数据的恢复方法、计算设备及存储介质 | |
CN112416261A (zh) | 数据存储方法、装置、设备及系统、存储介质 | |
CN109271277B (zh) | 数据库宕机后的访问方法、装置和系统 | |
CN116431388A (zh) | 分布式文件系统的数据恢复方法及应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |