CN113722147A - 一种保持业务连接方法及相关设备 - Google Patents
一种保持业务连接方法及相关设备 Download PDFInfo
- Publication number
- CN113722147A CN113722147A CN202010456732.7A CN202010456732A CN113722147A CN 113722147 A CN113722147 A CN 113722147A CN 202010456732 A CN202010456732 A CN 202010456732A CN 113722147 A CN113722147 A CN 113722147A
- Authority
- CN
- China
- Prior art keywords
- data
- connection
- module
- software
- state
- 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
- 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/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供一种保持业务连接方法及相关设备,该方法可包括:第一设备将软件的进程运行过程中产生的第一数据保存到共享内存中;第一设备与第二设备的连接的协议所使用的进程与软件使用相同的进程;第一设备将软件的进程运行过程中产生的第一文件描述符进行备份;响应软件重启,第一设备基于共享内存中的第一数据和备份的第一文件描述符保持业务连接。采用本申请实施例,能够保持重启后的软件的进程运行状态,降低对软件的进程的影响。
Description
技术领域
本申请涉及计算机操作***技术领域,尤其涉及一种保持业务连接方法及相关设备。
背景技术
软件部署在用户态,在软件升级时需要将老版本软件运行的进程关闭并采用新的软件版本重新建立进程,进程重启后默认会将所有的资源释放,会导致软件与设备的通信连接断开并需要重建与设备的通信连接,由于设备中的操作***和总线适配器驱动版本很多,而部分版本可能在软件与设备重新建立连接时存在兼容性问题,或者由于多路径配置原因导致业务冗余切换存在问题,导致升级失败。同时软件中的故障可能导致进程发生故障而重启,也会导致与设备的连接断开而使软件与设备之间的业务归零,如果多路径配置存在问题,可能导致软件与设备之间的业务中断。
在现有技术中,通过将软件和前端协议拆分到不同的进程部署,可以实现软件因故障或升级而导致软件的进程重启时,通过前端协议进程与新的软件的进程恢复业务可以实现与设备的连接不中断。但是,因为软件和前端协议拆分在不同的进程,可能导致在软件的进程重启时进程间通信会增加交互,从而影响业务性能和时延。
发明内容
本申请实施例公开了一种保持业务连接方法及相关设备,能够保持重启后的软件的进程运行状态,降低对软件的进程的影响。
第一方面,本本申请实施例提供了一种保持业务连接方法,包括:第一设备将软件的进程运行过程中产生的第一数据保存到共享内存中;所述第一设备与第二设备的连接的协议所使用的进程与所述软件使用相同的进程;所述第一设备将所述软件的进程运行过程中产生的第一文件描述符进行备份;响应所述软件重启,所述第一设备基于所述共享内存中的所述第一数据和备份的所述第一文件描述符保持所述业务连接。
通过第一方面提供的方法,第一电子设备可以将软件的进程运行过程中产生的第一数据保存到共享内存中;还可以将软件的进程运行过程中产生的第一文件描述符进程备份;在第一设备中的软件因更新或故障而导致软件的进程重启时,通过共享内存中的第一数据和备份的第一文件描述符保持软件的进程的业务连接不中断。通过本申请实施例,可以在第一设备的软件升级或故障而导致软件的进程重启时,保证软件的业务连接不中断,降低对软件提供业务的影响时间,从而可以提升软件提供业务服务的可靠性。
在一种可能的实现方式中,所述第一设备基于所述共享内存中的所述第一数据和备份的所述第一文件描述符保持所述业务连接,包括:将所述共享内存中的所述非稳态的数据恢复为稳态的数据;根据所述第一文件描述符和所述稳态的数据恢复所述重启后的软件的进程的IO运行状态来保持所述业务连接。
在一种可能的实现方式中,所述将所述共享内存中的非稳态的数据恢复为稳态的数据,包括:通过驱动模块将所述共享内存中的非稳态的数据管理信息恢复成稳态的数据管理信息,所述稳态的数据管理信息用于恢复所述驱动模块与网卡的连接;通过前端模块将所述共享内存中的非稳态的连接管理信息恢复成稳态的连接管理信息,所述稳态的连接管理信息用于恢复所述前端模块与所述驱动模块的连接,以及恢复所述前端模块与业务服务模块的连接。
在一种可能的实现方式中,所述根据所述第一文件描述符和所述稳态的数据恢复所述重启后的软件的进程的IO运行状态来保持所述业务连接,包括:在根据所述稳态的数据管理信息恢复所述驱动模块与网卡的连接之后,根据所述第一文件描述符和通过所述驱动模块从所述网卡读取所述驱动模块的输入输出IO数据来保持所述驱动模块的第一IO运行状态;在根据所述稳态的连接管理信息恢复所述前端模块与业务服务模块的连接之后,根据所述第一文件描述符和通过所述前端模块将所述前端模块的非稳态的IO数据恢复为稳态的IO数据来保持所述前端模块的第二IO运行状态;通过所述第一IO运行状态和所述第二IO运行状态来恢复所述重启后的软件的进程的IO运行状态来保持业务连接。
在一种可能的实现方式中,所述前端模块包括:光纤通道模块,或者小型计算机***接口模块,或者基于网络的非易失性存储标准模块。
在一种可能的实现方式中,所述驱动模块包括:光纤通道驱动模块,或者TCP卸载引擎和网络支配器驱动模块,或者开放结构企业分部和远程内存直接访问驱动模块。
在一种可能的实现方式中,所述第一文件描述符的标识携带在所述稳态的数据管理信中,用于指示保持所述软件的进程重启过程中所用的文件描述符为所述第一文件描述符。
在一种可能的实现方式中,所述第一文件描述符用于保持所述软件的用户态和内核态之间的通信。
第二方面,本申请实施例提供了一种保持业务连接装置,包括:保存单元,用于第一设备将软件的进程运行过程中产生的第一数据保存到共享内存中;所述第一设备与第二设备的连接的协议所使用的进程与所述软件使用相同的进程;备份单元,用于所述第一设备将所述软件的进程运行过程中产生的第一文件描述符进行备份;响应保持单元,用于响应所述软件重启,所述第一设备基于所述共享内存中的所述第一数据和备份的所述第一文件描述符保持所述业务连接。
在一种可能的实现方式中,所述第一数据包括非稳态的数据,所述保持单元,具体用于:将所述共享内存中的所述非稳态的数据恢复为稳态的数据;根据所述第一文件描述符和所述稳态的数据恢复所述重启后的软件的进程的IO运行状态来保持所述业务连接。
在一种可能的实现方式中,所述响应保持单元,具体用于:通过驱动模块将所述共享内存中的非稳态的数据管理信息恢复成稳态的数据管理信息,所述稳态的数据管理信息用于恢复所述驱动模块与网卡的连接;通过前端模块将所述共享内存中的非稳态的连接管理信息恢复成稳态的连接管理信息,所述稳态的连接管理信息用于恢复所述前端模块与所述驱动模块的连接,以及恢复建立所述前端模块与业务服务模块的连接。
在一种可能的实现方式中,所述响应保持单元,具体用于:在根据所述稳态的数据管理信息恢复所述驱动模块与网卡的连接之后,根据所述第一文件描述符和通过所述驱动模块从所述网卡读取所述驱动模块的输入输出IO数据来保持所述驱动模块的第一IO运行状态;在根据所述稳态的连接管理信息恢复所述前端模块与业务服务模块的连接之后,根据所述第一文件描述符和通过所述前端模块将所述前端模块的非稳态的IO数据恢复为稳态的IO数据来保持所述前端模块的第二IO运行状态;通过所述第一IO运行状态和所述第二IO运行状态来恢复所述软件的进程的IO运行状态来保持软件的进程的业务连接不中断。
在一种可能的实现方式中,所述前端模块包括光纤通道模块,或者小型计算机***接口模块,或者基于网络的非易失性存储标准模块。
在一种可能的实现方式中,所述驱动模块包括:光纤通道驱动模块,或者TCP卸载引擎和网络支配器驱动模块,或者开放结构企业分部和远程内存直接访问驱动模块。
在一种可能的实现方式中,所述第一文件描述符的标识携带在所述稳态的数据管理信息中,用于指示保持所述软件的进程重启过程中所需的文件描述符为所述第一文件描述符。
在一种可能的实现方式中,所述第一文件描述符用于保持所述软件的进程的用户态和内核态之间的通信。
第三方面,本申请实施例提供了一种保持业务连接的设备,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器被配置用于调用所述存储器存储的全部或部分计算机程序,执行第一方面所述的保持业务连接方法。
第四方面,本申请实施例提供一种计算机可读存储介质,用于储存为上述第一方面提供的一种保持业务连接的装置所用的计算机软件指令,其包含用于执行上述第一方面所述的保持业务连接方法的程序。
第五方面,本申请实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第一方面所述的保持业务连接方法。
第六方面,本申请提供了一种芯片***,该芯片***包括处理器,用于支持网络设备实现上述第一方面中所涉及的功能,例如,生成或处理上述第一方面保持业务连接方法中所涉及的信息。在一种可能的设计中,所述芯片***还包括存储器,所述存储器,用于保存数据发送设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
附图说明
以下对本申请实施例用到的附图进行介绍。
图1是本申请实施例提供的一种保持业务连接方法的***架构示意图;
图2是本申请实施例提供的一种设备的结构示意图;
图3是本申请实施例提供的一种保持业务连接方法的流程示意图;
图4是本申请实施例提供的另一种保持业务连接方法的流程示意图;
图5是本申请实施例提供的一种保持业务连接的装置的结构示意图;
图6是本申请实施例提供的一种保持业务连接的设备的结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本说明书中使用的术语“部件”、“模块”、“***”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地***、分布式***和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它***交互的互联网)的信号通过本地和/或远程进程来通信。
为了便于理解本申请实施例,下面先对本申请实施例所基于的一种保持业务连接方法的***架构进行描述。请参见图1,图1是本申请实施例提供的一种保持业务连接方法的***架构示意图,该***架构可包括第一设备100、软件101和第二设备103。其中,软件101可以部署在第一设备100上,例如,服务器上,或者由多个服务器组成的服务器集群上,或者终端设备(例如,手机、电脑等)上,第一设备100能够通过软件101为自己或者其他设备提供某些服务,如存储服务。需要说明的是,第一设备100可以是以下一种或多种:基于网络的非易失性存储标准(Non-Volatile Memory Express over Fabrics,NVMe-of)设备,基于融合以太的远程内存直接访问的网络附属存储(Network Attached Storage over RemoteDirect Memory Access over Converged Ethernet,NAS over RoCE)设备,使用数据库的设备,等等。
需要说明的,NVMe是一种控制器接口标准,规定通过快速***部件互连(PeripheralComponentInterconnecExpress,PCIe)总线进行连接的NVMe设备和主机(Host)之间的队列(Queue)传输机制,优化了队列接口等。业界将NVMe协议运行在基于融合以太的远程内存直接访问(Remote Direct Memory Access over Converged Ethernet,ROCE)、光纤通道(FiberChannel,FC)等网络上的应用称之为NVMeoverFabric(简称NOF)。另外,网络附属存储(NAS)可以理解为连接到计算机网络的计算机数据存储,它以数据为中心,将存储设备与服务器彻底分离。
第二设备103可以是与第一设备100互相进行连接的另一电子设备,该另一电子设备也可以是服务器,或者由多个服务器组成的服务器集群,或者终端设备。需要说明的是,当第一设备100为支持NVMe-of设备时,第二设备可以是主机(Host);当第一设备100为NASover RoCE设备时,第二设备可以是使用不同操作***的应用服务器。具体实现过程中,第一设备可以是存储阵列、存储服务器、硬盘框设备或硬盘等,本发明实施例对此不作限定。
需要说明的是,第一设备100与第二设备103的连接的协议所使用的进程与软件101使用相同的进程。比如说用于NVMe-of设备与主机(Host)的连接的协议所使用的进程与在NVMe-of设备上的软件使用相同的进程。
软件的进程101a是第一设备100中的软件101与第二设备103通信过程中某个数据集合的一次运行活动。
第一设备100与第二设备103之间的交互过程如下:
第二设备103接收用户操作***下发的请求命令后,第二设备103内部会生成标准命令发送给第一设备100,由第一设备100中的软件101对标准命令进行响应。以第一设备100为NVMe-of设备为例,NVMe-of设备通常采用NVMe协议来实现,在NVMe协议中主要分为两部分:主机(Host)和控制器(Controller),上述第二设备可以看做是主机(Host),上述第一设备可以看做是控制器(Controller)。其中,Host接收用户操作***下发的请求指令,由内部生成标准NVMe命令,再将标准NVMe命令发送给Controller,由Controller对NVMe命令进行操作。Controller作为第一设备的主控,主要通过软件101完成NVMe命令的卸载以及与第一设备中的存储单元的交互。可以看来,第一设备100是通过软件101向第二设备103提供业务服务。
第一设备100中的软件101部署在用户态,当软件101出现以下任意一种情形时,通过本申请实施例可以保持第一设备100与第二设备103之间的连接中断。
情形一,当软件101增加新特性(或者说功能)时需要进行版本升级,需要将软件101的软件的进程101a停止,并重新加载新的软件的进程。通过本申请实施例可以在软件101进行版本升级的过程中需要第二设备103不感知,并且可以保持第一设备100和第二设备103的连接不中断;
情形二,由于软件101中的漏洞bug(如访问非法内存)导致进程出现crash时需要重新快速加载进程,通过本申请实施例可以在进程重新加载的过程中减少对第二设备103提高业务的影响,第一设备101与第二设备103的连接不中断。
需要说明的是,本申请实施例提及的“业务连接”可以表述为“业务连接保持”。其中,“连接保持”表明第一设备100与第二设备103的连接不中断,第二设备103感知不到第一设备100中的软件101重启,可以实现第一设备100与第二设备103之间的业务不中断。
本申请实施例通过将软件的进程101a和前端模块101b的进程布署在同一进程中,基于共享内存管理机制102a、文件描述符保持机制102b和业务连接恢复机制来实现在软件的进程101a重启时第一设备100与第二设备103的连接不中断,从而可以实现业务不中断。其中,基于共享内存管理机制(shared memory management,SMM),文件描述符保持机制(file descriptor keep,FDK)。一般来说,当软件的进程101a重启后,分配给软件的进程101a的内存和文件描述符会***作***自动回收。所以在软件的进程101a正常运行过程中,基于共享内存管理机制102a可以将软件的进程101a中产生的第一数据保存到共享内存中;基于文件描述符保持机制102b可以将软件的进程101a运行过程中产生的第一文件描述符进行备份。因此当软件的进程101a重启时,通过共享内存中的第一数据和备份的第一文件描述符保持软件的进程101a的运行,从而可以保证第一设备100与第二设备103的连接不中断,来实现第一设备100向第二设备103提供的业务不中断。
基于上述保持业务连接***架构图,本申请实施例提供一种应用于上述保持业务连接方法的***架构中的第一设备100,请参见图2,图2是本申请实施例提供的一种设备的结构示意图,其中,软件101部署在第一设备100上。从图2可以看出,第一设备101具体可以包括:软件的进程101a、共享内存机制102a、文件描述符保持机制102b和网卡203。其中,软件的进程101a部署在用户态,软件的进程101a可以包括业务服务模块201、前端模块101b和驱动模块101c;共享内存管理机制102a和文件描述符保持机制102b部署在在内核态;网卡203位于硬件。业务服务模块201可以是目标器服务(target service,TGT service);图1或图2所示的前端模块101b可以包括以下一种或多种:光纤通道前端模块201a、小型计算机***接口前端模块201b和基于网络的非易失性存储标准前端模块201c。即,基于网络的非易失性存储标准(Non-Volatile Memory Express over Fabrics,NVMe-of)。
前端模块101b与驱动模块101c具有对应关系,例如,与光纤通道前端模块201a所对应的驱动模块是光纤通道驱动202a,即光纤通道驱动(FC driver);与小型计算机***接口前端模块201b所对应驱动模块是TCP卸载引擎和网络支配器驱动202b,即TCP卸载引擎(TCP offload engine,TOE)和网络支配器驱动(network interface controller driver,NIC driver);与基于网络的非易失性存储标准前端模块201c所对应的驱动模块是开放结构企业分布和远程内存直接访问驱动202c,即开放结构企业分布(Open FabricsEnterprise Distribution,OFED)和远程内存直接访问驱动(Remote Direct MemoryAccess driver,RDMA driver)。
驱动模块101c与网卡203具有对应关系,例如,与光纤通道驱动202a所对应的网卡是光纤通道接口卡203c或者FC主机总线适配器(Host bus adapter,HBA);与NICdriver所对应的网卡是网络支配器接口卡203或者NIC HBA;与RDMA driver所对应的网卡是远程内存直接访问接口卡。
为了便于理解,对第一设备100的组成结构进行详细说明,其中:
文件描述符保持机制102b,用于实现文件描述符保持功能,具体用于实现软件的进程在正常运行过程中的文件描述符备份功能,以及在软件的进程故障后文件描述符不释放;还用于实现在软件的进程重启时,文件描述符恢复功能,可以重新获取软件的进程正常运行过程中使用的文件描述符。第一设备100可以将软件的进程运行过程中产生的第一文件描述符进行备份,以及在软件的进程重启时通过文件描述符保持机制恢复第一文件描述符。
共享内存管理机制102a,具体用于实现共享内存管理机制;用于从操作***分配固定大小物理内存,此部分物理内存可以用于存储软件的进程运行过程中产生的第一数据,并且单独管理存储有第一数据的此部分内存;在软件的进程故障后,此部分内存不***作***回收;还用于实现共享内存固定映射机制,在软件的进程重启时映射的虚拟地址保持不变。第一设备100可以将软件的进程运行过程中产生的第一数据保存到共享内存中,以及在响应软件的重启时获取第一数据,可以理解的是,该共享内存可以是从操作***分配的物理内存。需要说明的是,第一数据可以是第一设备向第二设备提供业务服务所需要的相关数据。
驱动模块101c中的光纤通道驱动202a用于获取共享内存中的第一数据,将第一数据中的非稳态数据管理信息恢复成稳态数据管理信息,还用于从光纤通道接口卡203a(或FC HBA)中获取FC driver的IO数据来识别FC接口卡(或FC HBA)与FC driver当前的交互状态,恢复FC接口卡(或FC HBA)与FC driver间的关联来保持FC driver的第一IO运行状态;业务服务模块201为TGT service时,前端模块101b中的光纤通道前端模块201a可以是FCTGT,用于实现FC协议的目标器功能,主要用于获取共享内存中的第一数据,将第一数据中的非稳态的连接管理信息恢复成稳态的连接管理信息;可以通过稳态的连接管理信息恢复FC TGT与FC driver的连接,还可以通过稳态的连接管理信息实现连接恢复功能,模拟第二设备建立与TGT service的连接,从而可以触发TGT service恢复业务;在FC TGT建立与TGTservice的连接关系后,FC TGT可以实现IO恢复功能,将第一数据中非稳态的IO数据划分不同状态阶段,并根据IO数据的状态将非稳态的IO数据恢复成稳态的IO数据来保持FCTGT的第二IO运行状态。需要说明的是,FC是一种串行传输协议,是一种高速的网络传输技术。
驱动模块101c中的TCP卸载引擎和网络支配器驱动202b用于获取共享内存中的第一数据,将第一数据中的非稳态数据管理信息恢复成稳态数据管理信息,还用于从网络支配器接口卡203b(或NIC HBA)中获取网络支配器驱动的IO数据来识别NIC接口卡(或NICHBA)与NIC driver当前的交互状态,恢复NIC接口卡(或NIC HBA)与NIC driver间的关联来保持NIC driver的第一IO运行状态;业务服务模块201为TGT service时,前端模块101b中的小型计算机***接口前端模块201b可以是iSCSI TGT,用于实现iSCSI协议的目标器功能,主要用于获取共享内存中的第一数据,将第一数据中的非稳态的连接管理信息恢复成稳态的连接管理信息;可以通过稳态的连接管理信息恢复iSCSI TGT与NIC driver的连接,还可以通过稳态的连接管理信息实现连接恢复功能,模拟主机建立与TGT service的连接,从而可以触发TGT service恢复业务;在iSCSI TGT建立与TGT service的连接关系后,iSCSI TGT可以实现IO恢复功能,将第一数据中非稳态的IO数据划分不同状态阶段,并根据IO数据的状态将非稳态的IO数据恢复成稳态的IO数据来保持iSCSI TGT的第二IO运行状态。
驱动模块101c中的开放结构企业分布和远程内存直接访问驱动202c用于获取共享内存中的第一数据,将第一数据中的非稳态数据管理信息恢复成稳态数据管理信息,还用于从远程内存直接访问接口卡203c中获取RDMA driver的IO数据来识别RDMA接口卡与RDMA driver当前的交互状态,恢复RDMA接口卡与RDMA driver间的关联来保持RDMAdriver的第一IO运行转运;业务服务模块为TGT service时,前端模块101b中的基于网络的非易失性存储标准前端模块201c可以是NVMe-ofTGT,用于实现NVMe-of协议的目标器功能,主要用于获取共享内存中的第一数据,将第一数据中的非稳态的连接管理信息恢复成稳态的连接管理信息;可以通过稳态的连接管理信息恢复NVMe-of TGT与RDMA driver的连接,还可以通过稳态的连接管理信息实现连接恢复功能,模拟主机建立与TGT service的连接,从而可以触发TGT service恢复业务;在NVMe-of TGT建立与TGT service的连接关系后,NVMe-of TGT可以实现IO恢复功能,将第一数据中非稳态的IO数据划分不同状态阶段,并根据IO数据的状态将非稳态的IO数据恢复成稳态的IO数据来保持NVMe-of TGT的第二IO运行状态。
请参见图3,图3是本申请实施例提供的一种保持业务连接方法的流程示意图,该方法可应用于上述图1中所述的保持业务连接方法的***架构中。该方法包括但不限于如下步骤:
步骤S300,第一设备将软件的进程运行过程中产生的第一数据保存到共享内存中。
具体地,第一设备100可以从操作***分配固定大小的物理内存来存储软件的进程运行过程中产生的第一数据,并且可以单独管理此部分的内存;可以理解的,操作***分配的固定大小的物理内存可以看做是共享内存,因此,第一数据可以保存到共享内存中。需要说明的是,软件的进程可以是软件正常工作时的进程,第一数据可以是用于第一设备通过软件向第二设备提供业务的数据。在软件因为更新或者故障而使软件的进程需要重启时,第一设备100可以保证此部分的内存不会***作***回收;第一设备100还可以实现共享内存的固定映射机制,在软件因为更新或故障而需要重启时可以将共享内存重新进行固定地址映射来获取共享内存中的第一数据。
步骤S302,第一设备将所述软件的进程运行过程中产生的第一文件描述符进行备份。
具体地,在软件的进程运行过程中,部署在第一设备100上的软件打开现存文件或新建文件时,内核会返回一个文件描述符,读写文件也需要使用文件描述符来指定待读写的文件。文件描述符在形式上是一个非负整数,实际上它是一个索引值,指向内核为软件所维护的该进程打开文件的记录表。第一设备100可以实现软件在运行过程中文件描述符备份功能,将软件的进程运行过程中产生的第一文件描述符进行备份,在软件的进程故障后文件描述符不释放,并且在软件重启时可以获取软件的进程正常运行时所使用的文件描述符。
步骤S304,响应软件重启,第一设备基于共享内存中的第一数据和备份的第一文件描述符保持业务连接。
具体地,在第一设备中的软件因为更新或者故障而使软件的进程需要重启时,第一设备可以响应软件的重启,获取共享内存中的第一数据以及备份的第一文件描述符,然后可以基于第一数据和备份的文件描述符来保持业务连接。
可选的,所述第一数据包括非稳态的数据,将所述共享内存中的所述非稳态的数据恢复为稳态的数据;根据所述第一文件描述符和所述稳态的数据恢复重启后的所述软件的进程的IO运行状态来保持所述业务连接。共享内存中的第一数据可以包括非稳态的数据,非稳态的数据是指共享内存中的第一数据的状态是不确定的,稳态的数据是指第一数据的状态是确定的。而第一数据的状态是确定的就表明第一数据所包含的信息是已经完成的或者未完成的;状态是不确定的表明第一数据所包含的信息是正在完成过程中的。当第一数据的状态是确定的(即第一数据为稳态的数据)时,第一设备100可以根据第一数据继续进行接下来的处理;当第一数据的状态是不确定的(即第一数据为非稳态的数据)时,第一设备100需要将第一数据中的非稳态的数据恢复为稳态的数据。而第一文件描述符的标识携带在稳态的数据中,用于指示保持软件的进程运行所需的文件描述符为第一文件描述符,第一文件描述符用于保持软件的进程的用户态和内核态之间的通信。稳态的数据中携带有第一文件描述符的标识即索引值,第一设备100通过上述标识可以获取软件的进程正常运行所需要的文件描述符,从而可以打开软件的进程运行所需要的文件。因此,根据第一文件描述符和稳态的数据可以恢复重启后软件的进程的IO运行状态来保持业务连接。
可选地,将所述共享内存中的所述非稳态的数据恢复为稳态的数据包括:通过驱动模块将所述第一数据中的非稳态的数据管理信息恢复成稳态的数据管理信息,所述稳态的数据管理信息用于恢复所述驱动模块与网卡的连接;通过前端模块将所述第一数据中的非稳态的连接管理信息恢复成稳态的连接管理信息,所述稳态的连接管理信息用于恢复所述前端模块与所述驱动模块的连接,以及恢复建立所述前端模块与业务服务模块的连接。所述前端模块包括:光纤通道模块,或者小型计算机***接口模块,或者基于网络的非易失性存储标准模块。第一数据中的非稳态的数据可以包括非稳态的数据管理信息和非稳态的连接管理信息。数据管理信息可以是硬件的寄存器映射信息、队列对(Queue Pair,QP)相关的信息(包括:***请求队列(System Request Queue,SRQ)、发送队列(Send Queue,SQ)、完成队列(Complete Queue,CQ)相关信息等等)以及驱动模块的设备信息表、服务信息、事件消息队列等等;连接管理信息可以是驱动模块的监听信息、用于发送控制命令的队列和用于发送输入输出((InputOutput,IO)命令的队列等等。可以看出,稳态的数据可以包括稳态的数据管理信息和稳态的连接管理信息。
举例来说,若数据管理信息为QP信息,如果QP已经建立完成且数据结构中标识置为有效或者QP为空闲则为稳态,如果QP正在建立过程中则为非稳态,因此第一设备100需要通过前端模块将正在建立过程中的QP信息进程恢复处理,恢复成稳态的QP信息。需要说明的是,当第一设备100中的软件为了执行远程内存直接访问操作时,需要建立与第二设备的连接和适当的认证,而实现这些的机制是QP,QP会被映射到软件的虚拟地址空间,使得软件可以直接通过它访问第一设备100的网卡。所以,将非稳态的数据管理信息恢复成稳态的数据管理信息是用于恢复驱动模块与网卡的连接。或者以数据管理信息为驱动模块的设备信息表为例,如果设备信息状态是正常状态(即设备信息的相关处理流程已经完成且数据结构中的标识置为有效)或者设备信息状态为空闲,说明数据管理信息为稳态的;如果设备信息状态不是正常状态或空闲状态,说明数据管理信息为非稳态,则第一设备100需要将非稳态的数据管理信息恢复处理成空闲状态或正常状态。
需要说明的是,将非稳态的数据管理信息恢复成稳态的数据管理信息的状态与网卡的状态一致,所谓状态一致是稳态的数据管理信息的处理流程与网卡的处理流程一致,若网卡的相关处理流程已经完成且标记置为有效,则将非稳态的数据管理信息恢复成相关处理流程已经完成且标记置为有效的数据管理信息;若网卡的相关处理流程为空闲,则将非稳态的数据管理信息恢复成空闲状态的数据管理信息。
举例来说,以连接管理信息为驱动模块的监听信息为例,如果监听流程已经完成并且标记置为有效或者监听流程还未开始,则连接管理信息为稳态的,否则为非稳态的,则第一设备100需要将非稳态的连接管理信息恢复成稳态的连接管理信息,稳态的连接管理信息是已经完成并且标记置为有效或者状态是未开始的连接管理信息。其中,恢复的稳态的连接管理信息的状态需要与驱动模块的状态一致,若驱动模块的相关处理流程已经完成且标记置为有效,则将非稳态的连接管理信息恢复成相关处理流程已经完成且标记置为有效连接管理信息;若驱动模块的相关处理流程为未开始,则将非稳态的连接管理信息恢复成相关处理流程为未开始的连接管理信息。而软件可以通过稳态的连接管理信息来模拟第二设备重新建立与业务服务模块的连接,来触发业务服务模块快速恢复提供业务的能力。
可选地,根据所述第一文件描述符和所述稳态的数据恢复所述重启后的软件的进程的IO运行状态来保持所述业务连接包括:在根据所述稳态的数据管理信息恢复所述驱动模块与网卡的连接之后,根据所述第一文件描述符和通过所述驱动模块从所述网卡读取所述驱动模块的输入输出IO数据来保持所述驱动模块的第一IO运行状态。第一文件描述符的标识可以携带在稳态的数据管理信息中,标识可以用于指示保持软件进程重启过程中业务连接所用的文件描述符为所述第一文件描述符,而第一设备100根据第一文件描述符可以获取驱动模块所需要的文件;驱动模块的IO数据可以是驱动模块与硬件模块(比如说网卡)当前的交互信息数据,第一设备100可以在驱动模块与网卡恢复连接后,从网卡读取驱动模块的输入输出IO数据来来识别驱动模块与网卡的交互状态,从而可以恢复驱动模块与网卡间的关联,因此通过第一文件描述符获取到的驱动模块所需要的文件和驱动模块与网卡间的关联来保持驱动模块的第一IO运行状态。
在根据所述稳态的连接管理信息恢复所述前端模块与业务服务模块的连接之后,根据所述第一文件描述符和通过所述前端模块将所述前端模块的非稳态的IO数据恢复为稳态的IO数据来保持所述前端模块的第二IO运行状态。第一设备100根据第一文件描述符可以获取前端模块所需要的文件;前端模块的输入输出IO数据包括:1、IO的交互状态(比如说IO是读IO、写IO或者任务管理类IO)和IO的交互阶段(比如说刚刚接收IO数据、已经将IO数据交给业务服务模块、已经获取到IO数据、已经回复第二设备等等);2、IO与底层硬件的执行状态(比如说IO数据是否已经从硬件取出、IO是否已经发送数据请求给硬件、IO是否已经发送响应给硬件等等)。其中,IO的交互状态和交互阶段以及IO与底层硬件的执行状态是否确定是判断前端模块的IO数据是否为稳态的基础,以写IO为例,若确定第二设备已经向第一设备100完成发送数据或未开始发送则为稳态,否则为非稳态;若确定已经从硬件中获取数据或未获取数据则为稳态,若不确定(即可能获取了也可能没获取)则为非稳态。因此,在第一设备100建立前端模块与业务服务模块的连接之后,可以根据前端模块的IO数据的具体状态,将非稳态的IO数据恢复成的稳态的IO数据,因此可以根据第一文件描述符获取到的前端模块需要的文件和稳态的IO数据来保持前端模块的第二IO运行状态;
通过所述第一IO运行状态和所述第二IO运行状态来恢复所述软件的进程的IO运行状态来保持软件的进程的业务连接不中断。因此,可以在获取第一文件描述符的情况下,根据稳态的数据恢复软件的进程中的业务服务模块、前端模块以及驱动模块之间的连接来恢复业务服务模块、前端模块以及驱动模块各自的IO运行状态,来保持软件的进程的业务连接不中断,实现软件在更新或故障而重启过程中第一设备与第二设备之间的连接不断开,并且可以快速恢复提供业务服务的能力。
通过第一方面提供的方法,可以基于共享内存管理机制将软件的进程运行过程中产生的第一数据保存到共享内存中;还可以基于文件描述符机制将软件的进程运行过程中产生的第一文件描述符进程备份;在软件因更新或故障而导致软件的进程重启时,通过共享内存中的第一数据和备份的第一文件描述符保持软件的进程的业务连接不中断。通过本申请实施例,第一设备中的软件可以不会因为兼容性问题而导致升级失败;将软件的进程和前端模块部署在同一进程,可以避免在升级时由于切换进程而造成的进程间交互,从而可以提高软件设备的性能;可以在软件升级或故障而导致软件的进程重启时,保持软件的进程的业务连接不中断,降低对软件的影响时间,从而可以提升软件提供业务服务的可靠性。
请参见图4,图4是本申请实施例提供的另一种保持业务连接方法的流程示意图,图4所示的流程图是以第一设备为基于网络的非易失性存储标准(NVMe-of)设备为例、以第二设备为主机(Host)为例、以图3中的前端模块为基于网络的非易失性存储标准前端模块为例以及图3中的驱动模块为开放结构企业分布和远程内存直接访问驱动为例进行说明,即图4所示方法实施例可以看做是图3所示方法实施例的一种更具体的实现。图4所示的方法包括但不限于如下步骤:
步骤S400,基于网络的非易失性存储标准设备获取共享内存中的第一数据。
具体地,详细描述可参考步骤S200。
步骤S401,基于网络的非易失性存储标准设备通过远程内存直接访问驱动对数据管理信息进行恢复处理。
具体地,远程内存直接访问(RDMA)技术是为了解决网络传输中客户端与服务器端数据处理的延迟而产生的,它将数据之间从一台电子设备的内存传输到另一台电子设备,无需双方操作***的介入。对应于本申请实施例是为了解决网络传输中基于网络的非易失性存储标准(NVMe-of)设备与主机(Host)之间数据处理的延迟,其中,业界使用最广泛的RDMA协议是基于融合以太的远程内存直接访问(Remote Direct Memory Access overConverged Ethernet,RoCE),RoCE是一种允许在以太网上执行RDMA的网络协议。RDMA提供了基于消息队列的点对点通信,每个应用都可以直接获取自己的消息,无需操作***和协议栈的介入,消息服务建立在通信双方本端和远端应用之间创建的Channel-IO连接之上。当应用需要通信时,就会创建一条Channel连接,每条Channel的首尾端点是两对QueuePairs(QP)。每对QP由Send Queue(SQ)和Receive Queue(RQ)构成,这些队列中管理着各种类型的消息。QP会被映射到应用的虚拟地址空间,使得应用直接通过它访问RDMA网卡。除了QP描述的两种基本队列之外,RDMA还提供一种队列Complete Queue(CQ),CQ用来知会用户WQ上的消息已经被处理完。当软件因更新或故障而导致软件的进程重启时,NVMe-of设备需要从共享内存中获取远程内存直接访问驱动(RDMA driver)的数据管理信息,包括:硬件的寄存器映射信息、QP相关的信息包括SQ和RQ队列、send队列等、CQ相关信息等。
RDMA driver的数据管理信息包括稳态的数据管理信息和非稳态的数据管理信息,NVMe-of设备通过RDMA driver对非稳态的数据管理信息进行恢复处理成为稳态的数据管理信息。以QP信息为例,如果QP已经建立完成且数据结构中的标识置为有效或者QP为空闲则为稳态,如果QP正在建立过程中,则为非稳态;再以QP的SQ和RQ队列为例,如果某条SQ和RQ信息的状态为不确定上层应用是否已经取走或者不确定上层应用已经将SQ和RQ信息返回则状态为非稳态,否则为稳态。因为稳态指的是此条数据管理信息的状态是确定的,非稳态指的是此条数据管理信息的状态是不确定的,每类数据管理信息根据处理流程判定方式不同,所以NVMe-of设备需要根据RDMA driver的非稳态的数据管理信息的详细信息,对非稳态数据管理信息进行对应的恢复处理,恢复成为稳态的数据管理信息。RDMA driver稳态的数据管理信息的状态与RDMA网卡的状态一致,用于恢复RDMA driver与RDMA网卡的连接。
步骤S402,基于网络的非易失性存储标准设备通过开放结构企业分布对数据管理信息进行恢复处理。
具体地,开放结构企业分布(OFED)是一个可下载的网络开源软件包,是一个传输透明的软件堆栈,用于实现远程直接内存访问(RDMA)和内核旁路机制,为服务器端、块存储和文件***提供高效计算、线速消息、超低微秒延迟和快速IO。其中,OFED还包括增强版OFED,即OFEDA(OFED Advance)。所以,NVMe-of设备通过OFED对数据管理信息进行恢复处理还包括通过OFEDA对数据管理信息进程恢复处理。OFEDA的数据管理信息包括RDMA设备信息表、RDMA服务信息、RDMA事件消息队列等。OFEDA的每种数据管理信息都存在非稳态和稳态,以RDMA设备信息表为例:如果RDMA设备信息状态是正常状态(即RDMA设备信息相关的处理流程已经完成,且数据结构中的标识置为有效)或者RDMA设备信息状态为空闲则为稳态,否则此条RDMA设备信息为非稳态,NVMe-of设备需要根据硬件的状态进行处理,恢复为空闲状态或正常状态。因此,NVMe-of设备需要根据OFEDA的非稳态的数据管理信息的详细信息,对非稳态的数据管理信息进行对应的恢复处理,恢复成为稳态的数据管理信息。OFEDA稳态的数据管理信息的状态与RDMA driver的状态一致,用于恢复OFEDA与RDMA driver的连接。
步骤S403,基于网络的非易失性存储标准设备获取第一文件描述符。
具体地,第一文件描述符的标识携带在OFEDA稳态的数据管理信息中,因此NVMe-of设备根据OFEDA稳态的数据管理信息,基于文件描述符保持机制获取软件的进程运行所需要使用第一文件描述符。
步骤S404,基于网络的非易失性存储标准设备通过基于网络的非易失性存储标准对连接管理信息进程恢复处理。
具体地,非易失性存储标准(NVMe)传输是一种抽象协议层,旨在提供可靠的NVMe命令和数据传输。基于网络的非易失性存储标准(NVMe-of)支持把NVMe映射到多个Fabrics(网络)传输选项,通过Fabric扩展NVMe设备与NVMe子***进行通信的距离。NVMe-of的连接管理信息包括:RDMA监听信息、Admin queue和IO queue、RDMA端的SQ、RQ和CQ等。NVMe-of的每类连接管理信息都存在非稳态和稳态,以RDMA监听信息为例,如果监听流程已经完成且标记置为有效或者监听流程还未开始则为稳态,否则为非稳态;因此,NVMe-of设备需要根据NVMe-of的非稳态的连接管理信息的详细信息,对非稳态的连接管理信息进行对应的恢复处理,恢复成为稳态的连接管理信息。NVMe-of稳态的连接管理信息的状态与RDMAdriver盒OFEDA的状态一致,用于恢复NVMe-of与OFEDA和RDMA driver的连接。
步骤S405,基于网络的非易失性存储标准设备通过基于网络的非易失性存储标准模块建立与目标器服务的连接。
具体地,当NVMe-of设备通过NVMe-of模块将非稳态的连接管理信息恢复成稳态的连接管理信息后,可以通过稳态的连接管理信息可以建立与TGT service的连接状态,从而TGT service可以快速恢复提供业务的能力,可以实现1秒恢复提供存储业务的能力。
步骤S406,基于网络的非易失性存储标准设备通过基于网络的非易失性存储标准模块保持第二IO运行状态。
具体地,从共享内存中获取的NVMe-of模块的IO数据信息包括:1、IO的交互状态(比如说IO是读IO、写IO或者任务管理类IO)和IO的交互阶段(比如说刚刚接收IO数据、已经将IO数据交给业务服务模块、已经获取到IO数据、已经回复主机等等);2、IO与底层硬件的执行状态(比如说IO数据是否已经从硬件取出、IO是否已经发送数据请求给硬件、IO是否已经发送响应给硬件等等)。其中,IO的交互状态和交互阶段以及IO与底层硬件的执行状态是否确定是判断NVMe-of的IO数据是否为稳态的基础,以写IO为例,若确定主机(Host)已经向NVMe-of设备发送数据完成或未开始发送则为稳态,否则为非稳态;若确定已经从硬件中获取数据或未获取数据则为稳态,若不确认(即可能获取了也可能没获取)则为非稳态。因此,在建立NVMe-of模块与TGT service的连接之后,NVMe-of设备可以根据从共享内存中获取的IO数据的具体状态,通过NVMe-of模块将非稳态的IO数据恢复成稳态的IO数据来保持NVMe-of的第二IO运行状态。
步骤S407,基于网络的非易失性存储标准设备通过远程内存直接访问驱动保持第一IO运行状态。
具体地,NVMe-of设备通过RDMA driver从RDMA网卡中获取RDMA的IO数据,可以根据RDMA driver的IO数据来恢复第一IO运行状态。RDMA driver的IO数据可以是RDMAdriver与RDMA接口卡当前的交互信息数据,NVMe-of设备可以在RDMA driver与RDMA接口卡恢复连接后,从RDMA接口卡读取RDMA driver的IO数据来来识别RDMA driver与RDMA接口卡的交互状态,从而可以恢复RDMA driver与RDMA接口卡间的关联来保持RDMA driver的第一IO运行状态。
步骤S408,基于网络的非易失性存储标准设备通过目标器服务保持软件的进程的IO运行状态。
具体地,NVMe-of设备在通过RDMA drive保持第一IO运行状态和通过NVMe-of模块保持第二IO运行状态后,由TGT service继续进行IO处理,通过TGT service保持软件的进程的IO运行状态来恢复业务流程,从而可以保持NVMe-of设备与主机(Host)之间的业务连接不中断。
上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的相关装置。
请参见图5,图5是本申请实施例提供的一种保持业务连接的装置的结构示意图,该装置可以为图3所示方法实施例中的第一设备,或者该第一设备中的器件,该保持业务连接的装置50可以包括保存单元501、备份单元502和响应保持单元503,其中,各个单元的详细描述如下。
保存单元501,用于第一设备将软件的进程运行过程中产生的第一数据保存到共享内存中;所述第一设备与第二设备的连接的协议所使用的进程与所述软件使用相同的进程;
备份单元502,用于第一设备将软件的进程运行过程中产生的第一数据保存到共享内存中;所述第一设备与第二设备的连接的协议所使用的进程与所述软件使用相同的进程;
响应保持单元503,用于响应所述软件重启,所述第一设备基于所述共享内存中的所述第一数据和备份的所述第一文件描述符保持所述业务连接。
在一种可能的实现方式中,所述第一数据包括非稳态的数据,所述响应保持单元503,具体用于:将所述共享内存中的所述非稳态的数据恢复为稳态的数据;在获取所述第一文件描述符的情况下,根据所述第一文件描述符和所述稳态的数据恢复所述重启后的软件的进程的IO运行状态来保持所述业务连接。
在一种可能的实现方式中,所述响应保持单元503,具体用于:通过驱动模块将所述共享内存中的非稳态的数据管理信息恢复成稳态的数据管理信息,所述稳态的数据管理信息用于恢复所述驱动模块与网卡的连接;通过前端模块将所述共享内存中的非稳态的连接管理信息恢复成稳态的连接管理信息,所述稳态的连接管理信息用于恢复所述前端模块与所述驱动模块的连接,以及恢复建立所述前端模块与业务服务模块的连接。
在一种可能的实现方式中,所述响应保持单元503,具体用于:在根据所述稳态的数据管理信息恢复所述驱动模块与网卡的连接之后,根据所述第一文件描述符和通过所述驱动模块从所述网卡读取所述驱动模块的输入输出IO数据来保持所述驱动模块的第一IO运行状态;在根据所述稳态的连接管理信息恢复所述前端模块与业务服务模块的连接之后,根据所述第一文件描述符和通过所述前端模块将所述前端模块的非稳态的IO数据恢复为稳态的IO数据来保持所述前端模块的第二IO运行状态;通过所述第一IO运行状态和所述第二IO运行状态来恢复所述重启后的软件的进程的IO运行状态来保持业务连接。
在一种可能的实现方式中,所述前端模块包括光纤通道模块,或者小型计算机***接口模块,或者基于网络的非易失性存储标准模块。
在一种可能的实现方式中,所述驱动模块包括:光纤通道驱动模块,或者TCP卸载引擎和网络支配器驱动模块,或者开放结构企业分布和远程内存直接访问驱动模块。
在一种可能的实现方式中,所述第一文件描述符的标识携带在所述稳态的数据中,用于指示保持所述软件的进程重启过程中业务连接所用的文件描述符为所述第一文件描述符。
在一种可能的实现方式中,所述第一文件描述符用于保持所述软件的进程的用户态和内核态之间的通信。
需要说明的是,本申请实施例中所描述的软件的进程重启保持业务连接的装置50中各功能单元的功能可参见上述所述的保持业务连接方法实施例的相关描述,此处不再赘述。
如图6所示,图6是本申请实施例提供的一种保持业务连接的设备60的结构示意图,该设备60可以为图3或图4所示方法实施例中的第一设备,或者该第一设备中的器件,60包括至少一个处理器601,至少一个存储器602、至少一个通信接口603。此外,该设备60还可以包括天线等通用部件,在此不再详述。
处理器601可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。
通信接口603,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),核心网,无线局域网(Wireless Local Area Networks,WLAN)等。
存储器602可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,所述存储器602用于存储执行以上图3或者图4所示方法流程的计算机程序,并由处理器601来控制执行。所述处理器601用于执行所述存储器602中存储的计算机程序,从而实现上述图3或图4所示的保持业务连接方法,比如第一设备将软件的进程运行过程中产生的第一数据保存到共享内存中;所述第一设备与第二设备的连接的协议所使用的进程与所述软件使用相同的进程;所述第一设备将所述软件的进程运行过程中产生的第一文件描述符进行备份;响应所述软件重启,所述第一设备基于所述共享内存中的所述第一数据和备份的所述第一文件描述符保持所述业务连接。
需要说明的是,本申请实施例中所描述的保持业务连接的设备60中各功能单元的功能可参见图3或者图4所示的保持业务连接方法的相关描述,此处不再赘述。
本申请实施例还提供一种芯片***,所述芯片***包括至少一个处理器,存储器和接口电路,所述存储器、所述收发器和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有计算机程序;所述计算机程序被所述处理器执行时,实现图3或图4所示的方法流程。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在处理器上运行时,实现图3或图4所示的方法流程。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在处理器上运行时,实现图3或图4所示的方法流程。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务端或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(Read-OnlyMemory,缩写:ROM)或者随机存取存储器(RandomAccessMemory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (18)
1.一种保持业务连接方法,其特征在于,包括:
第一设备将软件的进程运行过程中产生的第一数据保存到共享内存中;所述第一设备与第二设备的连接的协议所使用的进程与所述软件使用相同的进程;
所述第一设备将所述软件的进程运行过程中产生的第一文件描述符进行备份;
响应所述软件重启,所述第一设备基于所述共享内存中的所述第一数据和备份的所述第一文件描述符保持所述业务连接。
2.根据权利要求1所述的方法,其特征在于,所述第一数据包括非稳态的数据,所述第一设备基于所述共享内存中的所述第一数据和备份的所述第一文件描述符保持所述业务连接,包括:
将所述共享内存中的所述非稳态的数据恢复为稳态的数据;
根据所述第一文件描述符和所述稳态的数据恢复所述重启后的软件的进程的IO运行状态来保持所述业务连接。
3.根据权利要求2所述的方法,其特征在于,所述将所述共享内存中的所述非稳态的数据恢复为稳态的数据,包括:
通过驱动模块将所述共享内存中的非稳态的数据管理信息恢复成稳态的数据管理信息,所述稳态的数据管理信息用于恢复所述驱动模块与网卡的连接;
通过前端模块将所述共享内存中的非稳态的连接管理信息恢复成稳态的连接管理信息,所述稳态的连接管理信息用于恢复所述前端模块与所述驱动模块的连接,以及恢复所述前端模块与业务服务模块的连接。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一文件描述符和所述稳态的数据恢复所述重启后的软件的进程的IO运行状态来保持所述业务连接,包括:
在根据所述稳态的数据管理信息恢复所述驱动模块与网卡的连接之后,根据所述第一文件描述符和通过所述驱动模块从所述网卡读取所述驱动模块的输入输出IO数据来保持所述驱动模块的第一IO运行状态;
在根据所述稳态的连接管理信息恢复所述前端模块与业务服务模块的连接之后,根据所述第一文件描述符和通过所述前端模块将所述前端模块的非稳态的IO数据恢复为稳态的IO数据来保持所述前端模块的第二IO运行状态;
通过所述第一IO运行状态和所述第二IO运行状态来恢复所述重启后的软件的进程的IO运行状态来保持业务连接。
5.根据权利要求3或4所述的方法,其特征在于,所述前端模块包括:光纤通道模块,或者小型计算机***接口模块,或者基于网络的非易失性存储标准模块。
6.根据权利要求3或4所述的方法,其特征在于,所述驱动模块包括:光纤通道驱动模块,或者TCP卸载引擎和网络支配器驱动模块,或者开放结构企业分部和远程内存直接访问驱动模块。
7.根据权利要求2-6任一项所述的方法,其特征在于,所述第一文件描述符的标识携带在所述稳态的数据中,用于指示保持所述软件的进程重启过程中业务连接所用的文件描述符为所述第一文件描述符。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述第一文件描述符用于保持所述软件的用户态和内核态之间的通信。
9.一种保持业务连接的装置,其特征在于,包括:
保存单元,用于第一设备将软件的进程运行过程中产生的第一数据保存到共享内存中;所述第一设备与第二设备的连接的协议所使用的进程与所述软件使用相同的进程;
备份单元,用于所述第一设备将所述软件的进程运行过程中产生的第一文件描述符进行备份;
响应保持单元,用于响应所述软件重启,所述第一设备基于所述共享内存中的所述第一数据和备份的所述第一文件描述符保持所述业务连接。
10.根据权利要求9所述的装置,其特征在于,所述第一数据包括非稳态的数据,所述响应保持单元,具体用于:
将所述共享内存中的所述非稳态的数据恢复为稳态的数据;
根据所述第一文件描述符和所述稳态的数据恢复所述重启后的软件的进程的IO运行状态来保持所述业务连接。
11.根据权利要求10所述的装置,其特征在于,所述响应保持单元,具体用于:
通过驱动模块将所述共享内存中的非稳态的数据管理信息恢复成稳态的数据管理信息,所述稳态的数据管理信息用于恢复所述驱动模块与网卡的连接;
通过前端模块将所述共享内存中的非稳态的连接管理信息恢复成稳态的连接管理信息,所述稳态的连接管理信息用于恢复所述前端模块与所述驱动模块的连接,以及恢复所述前端模块与业务服务模块的连接。
12.根据权利要求11所述的装置,其特征在于,所述响应保持单元,具体用于:
在根据所述稳态的数据管理信息恢复所述驱动模块与网卡的连接之后,根据所述第一文件描述符和通过所述驱动模块从所述网卡读取所述驱动模块的输入输出IO数据来保持所述驱动模块的第一IO运行状态;
在根据所述稳态的连接管理信息恢复所述前端模块与业务服务模块的连接之后,根据所述第一文件描述符和通过所述前端模块将所述前端模块的非稳态的IO数据恢复为稳态的IO数据来保持所述前端模块的第二IO运行状态;
通过所述第一IO运行状态和所述第二IO运行状态来恢复所述重启后的软件的进程的IO运行状态来保持业务连接。
13.根据权利要求11或12所述的装置,其特征在于,所述前端模块包括光纤通道模块,或者小型计算机***接口模块,或者基于网络的非易失性存储标准模块。
14.根据权利要求11或12所述的装置,其特征在于,所述驱动模块包括:光纤通道驱动模块,或者TCP卸载引擎和网络支配器驱动模块,或者开放结构企业分布和远程内存直接访问驱动模块。
15.根据权利要求10-14任一项所述的装置,其特征在于,所述第一文件描述符的标识携带在所述稳态的数据中,用于指示保持所述软件的进程重启过程中业务连接所用的文件描述符为所述第一文件描述符。
16.根据权利要求9-15任一项所所述的装置,其特征在于,所述第一文件描述符用于保持所述软件的进程的用户态和内核态之间的通信。
17.一种保持业务连接的设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器被配置用于调用所述存储器存储的全部或部分计算机程序,执行如权利要求1-8任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010456732.7A CN113722147A (zh) | 2020-05-26 | 2020-05-26 | 一种保持业务连接方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010456732.7A CN113722147A (zh) | 2020-05-26 | 2020-05-26 | 一种保持业务连接方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113722147A true CN113722147A (zh) | 2021-11-30 |
Family
ID=78672032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010456732.7A Pending CN113722147A (zh) | 2020-05-26 | 2020-05-26 | 一种保持业务连接方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113722147A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023109880A1 (zh) * | 2021-12-16 | 2023-06-22 | 华为技术有限公司 | 一种业务恢复方法、数据处理单元及相关设备 |
-
2020
- 2020-05-26 CN CN202010456732.7A patent/CN113722147A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023109880A1 (zh) * | 2021-12-16 | 2023-06-22 | 华为技术有限公司 | 一种业务恢复方法、数据处理单元及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7840736B2 (en) | Bus communication enumeration | |
US8484431B1 (en) | Method and apparatus for synchronizing a physical machine with a virtual machine while the virtual machine is operational | |
US7290166B2 (en) | Rollback of data | |
US10430082B2 (en) | Server management method and server for backup of a baseband management controller | |
CN111385296B (zh) | 一种业务进程重启方法、装置、存储介质以及*** | |
US20230029074A1 (en) | Shadow live migration over a smart network interface card | |
CN107003880B (zh) | 内核更新方法和装置、计算机设备 | |
US10990481B2 (en) | Using alternate recovery actions for initial recovery actions in a computing system | |
US10558453B1 (en) | System and method to achieve shared drive firmware version consistency via ESRT update | |
US20070061613A1 (en) | Restart method for operating system | |
EP3974989A1 (en) | Link state setting method and device for virtual network interface card, and storage medium | |
CN113722147A (zh) | 一种保持业务连接方法及相关设备 | |
US11740969B2 (en) | Detecting and recovering a corrupted non-volatile random-access memory | |
WO2022242665A1 (zh) | 一种数据存储方法及相关装置 | |
US20240086544A1 (en) | Multi-function uefi driver with update capabilities | |
US11734133B2 (en) | Cluster system and fail-over control method of cluster system | |
CN115291998A (zh) | 一种rbd-nbd映射方法及装置 | |
US11301156B2 (en) | Virtual disk container and NVMe storage management system and method | |
US10642788B1 (en) | Sand timer algorithm for tracking in-flight data storage requests for data replication | |
CN112579507A (zh) | 宿主机与bmc通信的方法、bios、操作***、bmc和服务器 | |
JP6822706B1 (ja) | クラスタシステム、サーバ装置、引継ぎ方法、及びプログラム | |
US20240241748A1 (en) | Asynchronous client to client task management | |
CN117687706A (zh) | 基于输入输出虚拟化的配置和请求处理方法、装置和设备 | |
US20230093402A1 (en) | Automatic population of boot volumes via provided urls | |
EP4394584A1 (en) | Application upgrading method and apparatus, network card, and device |
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 |