System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于输入输出虚拟化的配置和请求处理方法、装置和设备制造方法及图纸_技高网

基于输入输出虚拟化的配置和请求处理方法、装置和设备制造方法及图纸

技术编号:40625830 阅读:3 留言:0更新日期:2024-03-13 21:13
公开了一种基于IO虚拟化的配置和请求处理方法、装置和设备,属于计算机领域。该方法应用于计算设备,该计算设备包括运行在计算设备的硬件层上的宿主机以及运行在宿主机的用户态的前端和与前端对应的至少两个后端。该方法包括:获得配置信息,配置信息用于在前端和该至少两个后端后端之间创建虚拟队列,虚拟队列用于存放前端发送的IO请求,该至少两个后端包括第一后端和第二后端,第一后端为用于处理前端发送的IO请求的主后端,第二后端为为处于准备状态的从后端,第二后端用于在第一后端故障后处理前端发送的IO请求;根据配置信息配置前端与后端之间的虚拟队列。在第一后端故障时,能够通过第二后端快速恢复IO处理。

【技术实现步骤摘要】

本申请涉及通信,特别涉及一种基于输入输出(input/output,io)虚拟化的配置和请求处理方法、装置和设备。


技术介绍

1、虚拟化技术是一种将底层硬件设备与上层操作系统及应用程序分离的去耦合技术。io虚拟化是虚拟化技术中的一个关键技术。

2、在一种io虚拟化方案中,在宿主机(host)的用户态运行前端和后端。前端中包括io虚拟设备的前端设备,后端中包括io虚拟设备的后端设备。前端向后端发送配置信息。后端根据配置信息完成配置,以在前端与后端之间为io虚拟设备建立虚拟队列。后续io虚拟设备的前端设备和后端设备之间能够通过该虚拟队列传递该io虚拟设备对应的数据。

3、然而,由于前端和后端之间通常存在多个io虚拟设备的虚拟队列,且每个io虚拟设备对应一个或多个虚拟队列,所以前端和后端之间的虚拟队列数量较多。当后端故障时,需要逐个恢复虚拟队列,恢复所需时间较长。io虚拟设备对应的虚拟机(virtual machine,vm)会感知到io中断,影响用户体验。


技术实现思路

1、本申请提供了一种基于io虚拟化的配置和请求处理方法、装置和设备,有利于在后端故障时,快速恢复io处理。

2、第一方面,提供了一种基于io虚拟化的配置方法。该方法应用于计算设备,所述计算设备包括运行在所述计算设备的硬件层上的host以及运行在host的用户态的前端和与所述前端对应的至少两个后端。所述方法包括:获得配置信息,所述配置信息用于在所述前端和所述至少两个后端之间创建虚拟队列,所述虚拟队列用于存放所述前端发送的io请求,所述至少两个后端包括第一后端和第二后端,所述第一后端为用于处理所述前端发送的io请求的主后端,所述第二后端为处于准备状态的从后端,所述第二后端用于在所述第一后端故障后处理所述前端发送的io请求;根据所述配置信息配置所述前端与所述至少两个后端之间的虚拟队列。

3、当作为主后端的第一后端故障无法进行io处理时,可以将第二后端变为主后端。由于第二后端与前端之间已经预先建立了虚拟队列,所以第二后端在变为主后端之后,可以直接从虚拟队列中获取对应的io请求,根据获取到的io请求进行io处理,无需重新建立虚拟队列,从而可以快速恢复io处理。

4、在本申请中,前端和后端均是host的用户态的进程。虚拟队列是前端和后端之间的一块共享内存,不同的io虚拟设备对应的虚拟队列不同。前端和后端之间可以通过该共享内存进行数据传递。

5、这里,根据所述配置信息配置所述前端与所述至少两个后端之间的虚拟队列,是指将配置信息从前端传递到各个后端,每个后端均根据该配置信息完成地址映射。这样,前端和后端能够使用各自的地址访问该共享内存,并从共享内存中获取io请求。

6、在一种可能的实施方式中,该方法由管理进程执行,该管理进程为host的用户态的另一进程。当该方法由管理进程执行时,前端的功能没有发生变化,无需对前端的已有协议进行改进,易于实现。在另一种可能的实施方式中,该方法由前端执行。

7、在本申请中,主后端具有处于激活状态的io处理线程,通过该io处理线程处理所述前端发送的io请求;从后端具有处于准备状态的io处理线程。

8、在第一后端进行io处理的过程中,管理进程可以监测第一后端的运行状态。例如,管理进程监测与第一后端的连接是否断开,如果与第一后端之间的连接断开,则管理进程确定第一后端故障,将第二后端设置为主后端。这样,第二后端的io处理线程切换为激活状态,开始处理io请求。

9、为了避免第二后端异常而导致io处理中断,该方法还包括:在将所述第二后端设置为所述主后端之后,将第三后端设置为从后端,所述第三后端为所述至少两个后端中除了所述第一后端和所述第二后端之外的一个或者恢复后的所述第一后端。这样,第三后端与前端之间也建立了虚拟队列,当第二后端异常时,可以将第三后端设置为主后端,继续进行io处理。

10、当需要对后端进行升级时,host根据用户指令对后端程序文件进行升级(即采用新的后端程序文件替换原来的后端程序文件),然后,基于升级后的后端程序文件重启从后端。将重启后的所述从后端设置为新的主后端。在从后端重启的过程中,主后端仍然在进行io处理,io处理正常进行,不会受到影响。而在从后端基于所述升级后的后端程序文件重启之后,使用重启的从后端作为新的主后端进行io处理,完成主后端的升级。

11、为了避免新的主后端异常而导致io处理中断,该方法还包括:在将所述重启后的从后端设置为新的主后端之后,基于所述升级后的后端程序文件重启所述主后端;将重启后的所述主后端设置为新的从后端,以使所述重启的主后端的io处理线程处于准备状态。这样,将基于升级后的后端程序文件重启的主后端作为新的从后端作为新的主后端的备份,当新的主后端异常时,采用该新的从后端继续进行io处理。

12、在一些示例中,所述配置信息携带在虚拟宿主机用户消息vhost user message中,从而将配置信息发送给第一后端和第二后端。

13、示例性地,该配置信息包括内存信息、队列信息和事件描述符,所述内存信息用于指示io虚拟设备所在的虚拟机vm使用的第一虚拟内存空间,所述队列信息用于指示所述io虚拟设备对应的虚拟队列的数量以及每个所述虚拟队列对应的地址信息,所述地址信息所指示的地址属于所述第一虚拟内存空间,所述事件描述符用于所述前端和所述主后端之间通知对方事件发生或完成。

14、当该方法由管理进程执行时,管理进程除了需要与后端通信之外,还需要与前端通信,因此,该方法还包括:接收前端发送的连接请求;根据所述连接请求与所述前端建立连接。在一些示例中,所述连接请求是所述前端检测到所述前端与管理进程之间的连接断开时发送的,可以被称为重连接请求。在另一些示例中,所述连接请求是前端和管理进程创建之后首次进行连接时发送的。

15、第二方面,提供了一种基于io虚拟化的io请求处理方法。该方法基于第一方面中的第一后端和第二后端实现。该方法包括:通过所述第一后端处理所述虚拟队列中的第一io请求;在所述第一后端故障后,通过所述第二后端处理所述虚拟队列中的第二io请求,所述第二io请求为所述虚拟队列中除所述第一io请求之外的io请求。即第二io请求为第一后端故障时,虚拟队列中还未完成的io请求。

16、在本申请中,虚拟队列中存放了前端发送的io请求。第一后端和第二后端均可以看到该虚拟队列中的io请求。当第一后端正常时,通过第一后端来处理虚拟队列中的io请求。而在第一后端故障时,通过第二后端来处理虚拟队列中的io请求,无需重新建立虚拟队列,从而可以快速恢复io处理。

17、可选地,通过所述第一后端处理所述虚拟队列中的第一io请求,包括:通过所述第一后端从所述虚拟队列中获取第一io请求;通过所述第一后端,调用所述第一io请求对应的io物理设备完成所述第一io请求。

18、在本申请中,第一后端为主后端,预先建立了与i本文档来自技高网...

【技术保护点】

1.一种基于输入输出IO虚拟化的配置方法,其特征在于,应用于计算设备,所述计算设备包括运行在所述计算设备的硬件层上的宿主机、以及运行在所述宿主机的用户态的前端和与所述前端对应的至少两个后端,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

4.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:

5.根据权利要求4所述的方法,其特征在于,所述方法还包括:

6.根据权利要求1至5任一项所述的方法,其特征在于,所述根据所述配置信息配置所述前端与所述至少两个后端之间的虚拟队列,包括:

7.根据权利要求1至5任一项所述的方法,其特征在于,所述计算设备还包括运行在所述宿主机的用户态的管理进程,所述方法由所述管理进程执行。

8.根据权利要求1至6任一项所述的方法,其特征在于,所述配置信息包括内存信息、队列信息和事件描述符,所述内存信息用于指示IO虚拟设备所在的虚拟机VM使用的第一虚拟内存空间,所述队列信息用于指示所述IO虚拟设备对应的虚拟队列的数量以及每个所述虚拟队列对应的地址信息,所述地址信息所指示的地址属于所述第一虚拟内存空间,所述事件描述符用于所述前端和所述主后端之间通知对方事件发生或完成。

9.一种基于输入输出IO虚拟化的IO请求处理方法,其特征在于,应用于计算设备,所述计算设备包括运行在所述计算设备的硬件层上的宿主机、以及运行在所述宿主机的用户态的前端和与所述前端对应的至少两个后端,所述前端与所述至少两个后端之间存在虚拟队列,所述虚拟队列用于存放所述前端发送的IO请求,所述至少两个后端包括第一后端和第二后端;

10.根据权利要求9所述的方法,其特征在于,所述在所述第一后端故障后,通过所述第二后端处理所述虚拟队列中的第二IO请求,包括:

11.一种基于输入输出IO虚拟化的配置装置,其特征在于,应用于计算设备,所述计算设备包括运行在所述计算设备的硬件层上的宿主机以及运行在所述宿主机的用户态的前端和与所述前端对应的至少两个后端,所述装置包括:

12.一种基于输入输出IO虚拟化的IO请求处理装置,其特征在于,应用于计算设备,所述计算设备包括运行在所述计算设备的硬件层上的宿主机以及运行在所述宿主机的用户态的前端和与所述前端对应的至少两个后端,所述前端与所述至少两个后端之间存在虚拟队列,所述虚拟队列用于存放所述前端发送的IO请求,所述至少两个后端包括第一后端和第二后端,所述装置包括:

13.一种计算设备,其特征在于,所述计算设备包括处理器和存储器;所述存储器用于存储软件程序,所述处理器通过执行存储在所述存储器内的软件程序,以使得所述计算设备实现如权利要求1至8任一项所述的方法,或者,如权利要求9至10任一项所述的方法。

14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机可读存储介质中的计算机指令被计算设备执行时,使得所述计算设备执行如权利要求1至8任一项所述的方法,或者,如权利要求9至10任一项所述的方法。

...

【技术特征摘要】

1.一种基于输入输出io虚拟化的配置方法,其特征在于,应用于计算设备,所述计算设备包括运行在所述计算设备的硬件层上的宿主机、以及运行在所述宿主机的用户态的前端和与所述前端对应的至少两个后端,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

4.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:

5.根据权利要求4所述的方法,其特征在于,所述方法还包括:

6.根据权利要求1至5任一项所述的方法,其特征在于,所述根据所述配置信息配置所述前端与所述至少两个后端之间的虚拟队列,包括:

7.根据权利要求1至5任一项所述的方法,其特征在于,所述计算设备还包括运行在所述宿主机的用户态的管理进程,所述方法由所述管理进程执行。

8.根据权利要求1至6任一项所述的方法,其特征在于,所述配置信息包括内存信息、队列信息和事件描述符,所述内存信息用于指示io虚拟设备所在的虚拟机vm使用的第一虚拟内存空间,所述队列信息用于指示所述io虚拟设备对应的虚拟队列的数量以及每个所述虚拟队列对应的地址信息,所述地址信息所指示的地址属于所述第一虚拟内存空间,所述事件描述符用于所述前端和所述主后端之间通知对方事件发生或完成。

9.一种基于输入输出io虚拟化的io请求处理方法,其特征在于,应用于计算设备,所述计算设备包括运行在所述计算设备的硬件层上的宿主机、以及运行在所述宿主机的用户态的前端和与所...

【专利技术属性】
技术研发人员:马腾李浪波
申请(专利权)人:成都华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1