CN115576654B - 一种请求处理方法、装置、设备及存储介质 - Google Patents

一种请求处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115576654B
CN115576654B CN202211437516.3A CN202211437516A CN115576654B CN 115576654 B CN115576654 B CN 115576654B CN 202211437516 A CN202211437516 A CN 202211437516A CN 115576654 B CN115576654 B CN 115576654B
Authority
CN
China
Prior art keywords
request
virtual machine
acceleration module
queue
memory
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
CN202211437516.3A
Other languages
English (en)
Other versions
CN115576654A (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
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
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202211437516.3A priority Critical patent/CN115576654B/zh
Publication of CN115576654A publication Critical patent/CN115576654A/zh
Application granted granted Critical
Publication of CN115576654B publication Critical patent/CN115576654B/zh
Priority to PCT/CN2023/116229 priority patent/WO2024103912A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请涉及存储技术领域,公开了一种请求处理方法、装置、设备及存储介质,应用于连接虚拟机和后端存储的请求加速模块,包括:对共享内存中的请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作;当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。本申请在虚拟机和后端存储之间设置请求加速模块,该请求加速模块连接虚拟机和后端存储,通过采用共享内存及请求队列轮询的方式来对IO请求进行处理,减少内存拷贝次数和用户态内核态切换次数,同时缩短IO路径,降低IO处理的开销,从而提高整个存储系统的性能。

Description

一种请求处理方法、装置、设备及存储介质
技术领域
本发明涉及存储技术领域,特别涉及一种请求处理方法、装置、设备及存储介质。
背景技术
传统的以虚拟机作为NAS服务载体的统一存储架构,虚拟机连接后端存储的物理空间通过iscsi协议,IO路径冗长且协议的封装和解析开销比较大。且统一存储架构的NAS采用虚拟机作为连接后端磁盘的载体,通常基于SAN提供的ipsan技术,在虚拟机内部映射成本地块设备,然后基于此创建文件系统和加载共享服务,需要多次内存拷贝次数,以及在用户态和内核态之间多次切换,从而导致以虚拟机为载体的NAS性能比较低。
因此,上述技术问题亟待本领域技术人员解决。
发明内容
有鉴于此,本发明的目的在于提供一种请求处理方法、装置、设备及存储介质,能够减少内存拷贝次数和用户态内核态切换次数,同时缩短IO路径,降低IO处理的开销,从而提高整个存储系统的性能。其具体方案如下:
本申请的第一方面提供了一种请求处理方法,应用于连接虚拟机和后端存储的请求加速模块,包括:
对共享内存中的请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作;
当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。
可选的,所述请求处理方法,还包括:
操作系统在存储系统启动阶段为所述虚拟机预先分配大页内存,并通过在所述虚拟机内部的物理地址和所述大页内存之间创建映射关系的方式得到所述共享内存。
可选的,所述操作系统通过在所述虚拟机内部的物理地址和所述大页内存之间创建映射关系的方式得到所述共享内存,包括:
所述操作系统创建所述虚拟机内部的物理地址和所述大页内存之间的映射关系;
所述虚拟机将创建出的所述映射关系发送至所述请求加速模块;
所述请求加速模块根据所述映射关系确定出内存地址范围,以得到所述共享内存。
可选的,所述操作系统在存储系统启动阶段为所述虚拟机预先分配大页内存之后,还包括:
所述请求加速模块进行启动并在启动之后创建控制文件,以便所述请求加速模块通过所述控制文件与所述虚拟机进行通信。
可选的,所述请求加速模块在启动之后创建控制文件,包括:
所述请求加速模块在启动之后创建用于所述请求加速模块与所述虚拟机之间进行通信的sock文件。
可选的,所述操作系统创建所述虚拟机内部的物理地址和所述大页内存之间的映射关系之前,还包括:
所述虚拟机读取所述大页内存及所述控制文件,并利用所述大页内存及所述控制文件进行启动。
可选的,所述虚拟机将创建出的所述映射关系发送至所述请求加速模块,包括:
所述虚拟机通过所述控制文件向所述请求加速模块发送携带有所述映射关系的通信信号。
可选的,所述请求加速模块根据所述映射关系确定出内存地址范围,以得到所述共享内存,包括:
所述请求加速模块接收所述通信信号,并对所述通信信号进行解析得到所述映射关系,及根据所述映射关系确定出内存地址范围得到所述共享内存。
可选的,所述请求队列包括第一请求队列和第二请求队列;
相应的,所述对共享内存中的请求队列进行轮询,包括:
分别对所述共享内存中的所述第一请求队列和所述第二请求队列进行轮询;其中,所述第一请求队列中存储所述虚拟机内部发起的目标读请求,所述第二请求队列中存储所述虚拟机内部发起的目标写请求。
可选的,所述通过调用对应处理函数的方式对所述目标请求进行处理之后,还包括:
生成请求处理完成信号,并将所述请求处理完成信号发送至所述虚拟机。
可选的,如果所述目标请求为所述目标读请求,所述通过调用对应处理函数的方式对所述目标请求进行处理之后,还包括:
将根据所述目标读请求读取到的目标数据存储至所述第一请求队列;
生成所述请求处理完成信号,并将所述请求处理完成信号发送至所述虚拟机,以便所述虚拟机根据所述请求处理完成信号从所述第一请求队列中读取所述目标数据。
可选的,所述请求处理方法,还包括:
所述请求加速模块基于所述共享内存通过创建环形队列的方式创建所述请求队列。
本申请的第二方面提供了一种请求处理装置,应用于连接虚拟机和后端存储的请求加速模块,包括:
队列轮询模块,用于对共享内存中的请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作;
请求处理模块,用于当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。
本申请的第三方面提供了一种电子设备,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述请求处理方法。
本申请的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述请求处理方法。
本申请中,先对共享内存中的请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作;当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。可见,本申请在虚拟机和后端存储之间设置请求加速模块,该请求加速模块连接虚拟机和后端存储,通过采用共享内存及请求队列轮询的方式来对IO请求进行处理,减少内存拷贝次数和用户态内核态切换次数。通过实现一个虚拟机请求加速模块,缩短IO路径,降低IO处理的开销,提高虚拟机后端连接磁盘阵列的速度,从而加速IO处理性能及提高整个存储系统的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种请求处理方法流程图;
图2为本申请提供的一种具体的请求处理方法流程图;
图3为本申请提供的一种具体的共享内存生成方法流程图;
图4为本申请提供的一种具体的请求处理方法流程图;
图5为本申请提供的一种请求处理装置结构示意图;
图6为本申请提供的一种请求处理电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有的以虚拟机作为NAS服务载体的统一存储架构,虚拟机连接后端存储的物理空间通过iscsi协议,IO路径冗长且协议的封装和解析开销比较大。且统一存储架构的NAS采用虚拟机作为连接后端磁盘的载体,通常基于SAN提供的ipsan技术,在虚拟机内部映射成本地块设备,然后基于此创建文件系统和加载共享服务,需要多次内存拷贝次数,以及在用户态和内核态之间多次切换,从而导致以虚拟机为载体的NAS性能比较低。针对上述技术缺陷,本申请提供一种请求处理方案,本申请实施例在虚拟机和后端存储之间设置请求加速模块,该请求加速模块连接虚拟机和后端存储,通过采用共享内存及请求队列轮询的方式来对IO请求进行处理,减少内存拷贝次数和用户态内核态切换次数。通过实现一个虚拟机请求加速模块,缩短IO路径,降低IO处理的开销,提高虚拟机后端连接磁盘阵列的速度,从而加速IO处理性能及提高整个存储系统的性能。
图1为本申请实施例提供的一种请求处理方法流程图。参见图1所示,该请求处理方法应用于连接虚拟机和后端存储的请求加速模块,包括:
S11:对共享内存中的请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作。
半虚拟化技术是在全虚拟化的基础上,对客户机操作系统进行修改,增加一个专门的API将客户机操作系统发出的指令进行最优化,即不需要Hypervisor耗费一定的资源进行翻译操作,因此Hypervisor的工作负担变得非常小,而且整体的性能也有很大的提升。Hypervisor是一个软件层或子系统,也称为VMM( Virtual Machine Monitor,虚拟机监控器)。对于VMM来说,掌管的是实际的物理内存,并且需要分配和掌管每个虚拟机的物理内存,对于客户机操作系统(guest)来说,所看到的是连续的物理地址空间。因此VMM会存在多次IO地址转换,IO路径较长,且涉及多次用户态和内核态切换,导致整个存储系统的存储性能较低。
本实施例中,在虚拟机和后端存储之间设置请求加速模块,该请求加速模块连接虚拟机和后端存储,用于缩短IO路径,降低IO处理的开销。以NAS服务为例,对于通过虚拟机提供NAS服务的存一存储实现架构,NAS服务的后端与SAN服务共用后端磁盘阵列。NAS服务通过虚拟机连接后端磁盘阵列,并且通过前端网络端口对外提供NAS服务。本实施例即基于统一存储架构增加一个NAS后端IO处理加速模块,提高后端IO处理速度。
可以理解,NAS(Network Attached Storage,网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。本实施例的请求处理方案也适用于其他存储系统,本实施例对此不进行限定。
本实施例中,所述共享内存对于虚拟机和后端的请求加速模块来说是共享的,都可以对这个范围的内存地址进行读写,读写过程中传输中的IO数据结构中会记录IO数据要下发的内存地址。即用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作。另外,在所述共享内存中还设置有所述请求队列,所述请求队列的数量和种类可以根据业务需求自行设定,本实施例对此不进行限定。
S12:当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。
本实施例中,在对所述请求队列进行轮询时,如果轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。虚拟机内部发起请求时,会往所述共享内存中的所述请求队列中存放数据,后端的所述请求加速模块通过一直轮训所述共享内存中的所述请求队列,发现有新的请求进来队列时,就调用对应的处理函数对数据进行处理。采用内存共享+ IO队列轮训方式,节省用户态和内核态切换的开销,同时缩短IO路径,进而提高整个存储系统的性能。
可见,本申请实施例先对共享内存中的请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作;当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。本申请实施例在虚拟机和后端存储之间设置请求加速模块,该请求加速模块连接虚拟机和后端存储,通过采用共享内存及请求队列轮询的方式来对IO请求进行处理,减少内存拷贝次数和用户态内核态切换次数。通过实现一个虚拟机请求加速模块,缩短IO路径,降低IO处理的开销,提高虚拟机后端连接磁盘阵列的速度,从而加速IO处理性能及提高整个存储系统的性能。
图2为本申请实施例提供的一种具体的请求处理方法流程图。参见图2所示,该请求处理方法包括:
S21:操作系统在存储系统启动阶段为虚拟机预先分配大页内存。
本实施例中,共享内存是基于大页内存实现的。首先由操作系统在存储系统启动阶段为虚拟机预先分配大页内存。存储系统启动时,通过操作系统预分配大页内存,大页内存支撑虚拟机启动以及加速模块和虚拟机之间的共享数据使用。
S22:请求加速模块进行启动并在启动之后创建控制文件,以便所述请求加速模块通过所述控制文件与所述虚拟机进行通信。
本实施例中,操作系统预先分配好大页内存之后,请求加速模块开始启动,并在启动之后创建控制文件,以便所述请求加速模块通过所述控制文件与所述虚拟机进行通信。所述请求加速模块启动之后,进一步创建通过与虚拟机通信使用的控制文件。所述控制文件将会作为虚拟机启动的参数用于启动虚拟机。所述控制文件也会用于所述请求加速模块与所述虚拟机之间的通信。具体的,所述控制文件可以为sock文件,即所述请求加速模块在启动之后创建用于所述请求加速模块与所述虚拟机之间进行通信的sock文件。
S23:所述虚拟机读取所述大页内存及所述控制文件,并利用所述大页内存及所述控制文件进行启动。
本实施例中,所述虚拟机启动时,具体为,所述虚拟机读取所述大页内存及所述控制文件,并利用所述大页内存及所述控制文件进行启动。虚拟机启动时,采用操作系统预留的所述大页内存进行启动,同时读取所述请求加速模块创建的所述控制文件。
S24:通过在所述虚拟机内部的物理地址和所述大页内存之间创建映射关系的方式得到共享内存。
本实施例中,所述虚拟机启动完成之后,通过在所述虚拟机内部的物理地址和所述大页内存之间创建映射关系的方式得到共享内存。具体包括(图3所示):
S241:所述操作系统创建所述虚拟机内部的物理地址和所述大页内存之间的映射关系。
S242:所述虚拟机将创建出的所述映射关系发送至所述请求加速模块。
所述虚拟机通过所述控制文件向所述请求加速模块发送携带有所述映射关系的通信信号。
S243:所述请求加速模块根据所述映射关系确定出内存地址范围,以得到所述共享内存。
本实施例中,先由所述操作系统创建所述虚拟机内部的物理地址和所述大页内存之间的映射关系。然后所述虚拟机将创建出的所述映射关系发送至所述请求加速模块。最后所述请求加速模块根据所述映射关系确定出内存地址范围,以得到所述共享内存。虚拟机内部的物理地址和所述大页内存会创建一个对应的映射关系,然后虚拟机发送信号,通知请求加速模块虚拟机内部内存地址的映射关系。具体的,所述虚拟机通过所述控制文件向所述请求加速模块发送携带有所述映射关系的通信信号。即所述虚拟机通过控制文件发送信号。
本实施例中,所述请求加速模块接收所述通信信号,并对所述通信信号进行解析得到所述映射关系,及根据所述映射关系确定出内存地址范围得到所述共享内存。具体的,请求加速模块接收到虚拟机的信号之后,读取解析信号,获取所述虚拟机用来与请求加速模块的内存地址范围。这部分内存对于虚拟机和请求加速模块来说是共享的,都可以对这个范围的内存地址进行读写,读写过程中传输中的IO数据结构中会记录IO数据要下发的内存地址。
S25:所述请求加速模块基于所述共享内存通过创建环形队列的方式创建所述请求队列。
本实施例中,在得到所述共享内存之后,所述请求加速模块进一步基于所述共享内存通过创建环形队列的方式创建所述请求队列。即基于这个内存范围创建两个环形队列用来传输虚拟机内部的数据,所述请求队列的数量和种类可以根据业务需求自行设定,本实施例对此不进行限定。
S26:所述请求加速模块对所述共享内存中的所述请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作。
S27:当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,所述请求加速模块则通过调用对应处理函数的方式对所述目标请求进行处理。
本实施例中,关于上述步骤S26和S27的具体过程,可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本申请实施例的操作系统在存储系统启动阶段为虚拟机预先分配大页内存,然后请求加速模块进行启动并在启动之后创建控制文件,以便所述请求加速模块通过所述控制文件与所述虚拟机进行通信。所述虚拟机读取所述大页内存及所述控制文件,并利用所述大页内存及所述控制文件进行启动。通过在所述虚拟机内部的物理地址和所述大页内存之间创建映射关系的方式得到共享内存。具体的,所述操作系统创建所述虚拟机内部的物理地址和所述大页内存之间的映射关系;所述虚拟机将创建出的所述映射关系发送至所述请求加速模块;所述请求加速模块根据所述映射关系确定出内存地址范围,以得到所述共享内存。接着所述请求加速模块基于所述共享内存通过创建环形队列的方式创建所述请求队列。在此基础上,所述请求加速模块对所述共享内存中的所述请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作。当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,所述请求加速模块则通过调用对应处理函数的方式对所述目标请求进行处理。本实施例通过共享内存直接获取虚拟机内部的读写请求,省略了VMM的IO地址转换,缩短了IO路径,同时避免了用户态和内核态的切换,IO的前半段处理全部在用户态完成,极大地提高了虚拟机后端IO处理的效率。
图4为本申请实施例提供的一种具体的请求处理方法流程图。参见图4所示,该请求处理方法应用于连接虚拟机和后端存储的请求加速模块,包括:
S31:分别对所述共享内存中的第一请求队列和第二请求队列进行轮询;其中,所述第一请求队列中存储虚拟机内部发起的目标读请求,所述第二请求队列中存储虚拟机内部发起的目标写请求。
本实施例中,所述请求队列包括第一请求队列和第二请求队列,所述请求加速模块在进行队列轮询时,分别对所述共享内存中的第一请求队列和第二请求队列进行轮询。轮询方式可以是实时轮询也可以是按照预设周期进行间歇式轮询,本实施例对此不进行限定。
本实施例中,所述请求队列设置为两个,分别存储读请求和写请求,具体的,所述第一请求队列中存储虚拟机内部发起的目标读请求,所述第二请求队列中存储虚拟机内部发起的目标写请求。其中,所述第一请求队列也可称为发送队列,所述第二请求队列也可称为接收队列。
S32:当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。
本实施例中,关于上述步骤S32的具体过程,可以参考前述实施例中公开的相应内容,在此不再进行赘述。当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。
S33:生成请求处理完成信号,并将所述请求处理完成信号发送至所述虚拟机。
本实施例中,处理完成之后,还可以生成请求处理完成信号,并将所述请求处理完成信号发送至所述虚拟机。
在一种实施例中,虚拟机内部发起读请求时,会往所述共享内存中的发送队列中存放数据。请求加速模块通过一直轮训共享内存中的发送队列,发现有新的请求进来队列时,就调用对应的处理函数对数据进行处理。处理完成之后发送IO完成信号返回给虚拟机IO完成的信号。在当将根据所述目标读请求读取到的目标数据存储至所述第一请求队列的情境中,所述请求加速模块生成所述请求处理完成信号后,将所述请求处理完成信号发送至所述虚拟机,以便所述虚拟机根据所述请求处理完成信号从所述第一请求队列中读取所述目标数据。
在另一种实施例中,虚拟机内部发起写请求时,会往共享内存中的接收队列中存放数据。请求加速模块通过一直轮训共享内存中的接收队列,发现有新的请求进入队列时,就调用对应的处理函数对数据进行处理,处理完成之后发送IO完成信号返回给虚拟机IO完成的信号。
本实施例中,分别对所述共享内存中的第一请求队列和第二请求队列进行轮询;其中,所述第一请求队列中存储虚拟机内部发起的目标读请求,所述第二请求队列中存储虚拟机内部发起的目标写请求。当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。最后生成请求处理完成信号,并将所述请求处理完成信号发送至所述虚拟机。能够对虚拟机内部请求进行分类处理,同时结合反馈处理机制,提高请求处理效率和成功率。
参见图5所示,本申请实施例还相应公开了一种请求处理装置,应用于连接虚拟机和后端存储的请求加速模块,包括:
队列轮询模块11,用于对共享内存中的请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作;
请求处理模块12,用于当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。
半虚拟化技术是在全虚拟化的基础上,对客户机操作系统进行修改,增加一个专门的API将客户机操作系统发出的指令进行最优化,即不需要Hypervisor耗费一定的资源进行翻译操作,因此Hypervisor的工作负担变得非常小,而且整体的性能也有很大的提升。Hypervisor是一个软件层或子系统,也称为VMM( Virtual Machine Monitor,虚拟机监控器)。对于VMM来说,掌管的是实际的物理内存,并且需要分配和掌管每个虚拟机的物理内存,对于客户机操作系统(guest)来说,所看到的是连续的物理地址空间。因此VMM会存在多次IO地址转换,IO路径较长,且涉及多次用户态和内核态切换,导致整个存储系统的存储性能较低。
本实施例中,在虚拟机和后端存储之间设置请求加速模块,该请求加速模块连接虚拟机和后端存储,用于缩短IO路径,降低IO处理的开销。以NAS服务为例,对于通过虚拟机提供NAS服务的存一存储实现架构,NAS服务的后端与SAN服务共用后端磁盘阵列。NAS服务通过虚拟机连接后端磁盘阵列,并且通过前端网络端口对外提供NAS服务。本实施例即基于统一存储架构增加一个NAS后端IO处理加速模块,提高后端IO处理速度。
可以理解,NAS(Network Attached Storage,网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。本实施例的请求处理方案也适用于其他存储系统,本实施例对此不进行限定。
本实施例中,所述共享内存对于虚拟机和后端的请求加速模块来说是共享的,都可以对这个范围的内存地址进行读写,读写过程中传输中的IO数据结构中会记录IO数据要下发的内存地址。即用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作。另外,在所述共享内存中还设置有所述请求队列,所述请求队列的数量和种类可以根据业务需求自行设定,本实施例对此不进行限定。
本实施例中,在对所述请求队列进行轮询时,如果轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。虚拟机内部发起请求时,会往所述共享内存中的所述请求队列中存放数据,后端的所述请求加速模块通过一直轮训所述共享内存中的所述请求队列,发现有新的请求进来队列时,就调用对应的处理函数对数据进行处理。采用内存共享+ IO队列轮训方式,节省用户态和内核态切换的开销,同时缩短IO路径,进而提高整个存储系统的性能。
可见,本申请实施例先对共享内存中的请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作;当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。本申请实施例本申请实施例在虚拟机和后端存储之间设置请求加速模块,该请求加速模块连接虚拟机和后端存储,通过采用共享内存及请求队列轮询的方式来对IO请求进行处理,减少内存拷贝次数和用户态内核态切换次数。通过实现一个虚拟机请求加速模块,缩短IO路径,降低IO处理的开销,提高虚拟机后端连接磁盘阵列的速度,从而加速IO处理性能及提高整个存储系统的性能。
在一些具体实施例中,所述请求处理装置还包括:
内存分配模块,用于操作系统在存储系统启动阶段为所述虚拟机预先分配大页内存;
文件创建模块,用于所述请求加速模块进行启动并在启动之后创建控制文件,以便所述请求加速模块通过所述控制文件与所述虚拟机进行通信;
虚拟机启动模块,用于所述虚拟机读取所述大页内存及所述控制文件,并利用所述大页内存及所述控制文件进行启动;
映射关系创建模块,用于操作系统通过在所述虚拟机内部的物理地址和所述大页内存之间创建映射关系的方式得到所述共享内存。
在一些具体实施例中,所述映射关系创建模块,具体包括:
创建单元,用于所述操作系统创建所述虚拟机内部的物理地址和所述大页内存之间的映射关系;
关系发送单元,用于所述虚拟机将创建出的所述映射关系发送至所述请求加速模块;
地址范围确定单元,用于所述请求加速模块根据所述映射关系确定出内存地址范围,以得到所述共享内存。
在一些具体实施例中,所述关系发送单元,具体用于所述虚拟机通过所述控制文件向所述请求加速模块发送携带有所述映射关系的通信信号。
在一些具体实施例中,所述地址范围确定单元,具体用于所述请求加速模块接收所述通信信号,并对所述通信信号进行解析得到所述映射关系,及根据所述映射关系确定出内存地址范围得到所述共享内存。
在一些具体实施例中,所述文件创建模块,具体用于所述请求加速模块在启动之后创建用于所述请求加速模块与所述虚拟机之间进行通信的sock文件。
本实施例中,共享内存是基于大页内存实现的。首先由操作系统在存储系统启动阶段为虚拟机预先分配大页内存。存储系统启动时,通过操作系统预分配大页内存,大页内存支撑虚拟机启动以及加速模块和虚拟机之间的共享数据使用。
本实施例中,操作系统预先分配好大页内存之后,请求加速模块开始启动,并在启动之后创建控制文件,以便所述请求加速模块通过所述控制文件与所述虚拟机进行通信。所述请求加速模块启动之后,进一步创建通过与虚拟机通信使用的控制文件。所述控制文件将会作为虚拟机启动的参数用于启动虚拟机。所述控制文件也会用于所述请求加速模块与所述虚拟机之间的通信。具体的,所述控制文件可以为sock文件,即所述请求加速模块在启动之后创建用于自身与所述请求加速模块之间进行通信的sock文件。
本实施例中,所述虚拟机启动时,具体为,所述虚拟机读取所述大页内存及所述控制文件,并利用所述大页内存及所述控制文件进行启动。虚拟机启动时,采用操作系统预留的所述大页内存进行启动,同时读取所述请求加速模块创建的所述控制文件。
本实施例中,所述虚拟机启动完成之后,通过在所述虚拟机内部的物理地址和所述大页内存之间创建映射关系的方式得到共享内存。
本实施例中,先由所述操作系统创建所述虚拟机内部的物理地址和所述大页内存之间的映射关系。然后所述虚拟机将创建出的所述映射关系发送至所述请求加速模块。最后所述请求加速模块根据所述映射关系确定出内存地址范围,以得到所述共享内存。虚拟机内部的物理地址和所述大页内存会创建一个对应的映射关系,然后虚拟机发送信号,通知请求加速模块虚拟机内部内存地址的映射关系。具体的,所述虚拟机通过所述控制文件向所述请求加速模块发送携带有所述映射关系的通信信号。即所述虚拟机通过控制文件发送信号。
本实施例中,所述请求加速模块接收所述通信信号,并对所述通信信号进行解析得到所述映射关系,及根据所述映射关系确定出内存地址范围得到所述共享内存。具体的,请求加速模块接收到虚拟机的信号之后,读取解析信号,获取所述虚拟机用来与请求加速模块的内存地址范围。这部分内存对于虚拟机和请求加速模块来说是共享的,都可以对这个范围的内存地址进行读写,读写过程中传输中的IO数据结构中会记录IO数据要下发的内存地址。
本实施例中,在得到所述共享内存之后,所述请求加速模块进一步基于所述共享内存通过创建环形队列的方式创建所述请求队列。即基于这个内存范围创建两个环形队列用来传输虚拟机内部的数据,所述请求队列的数量和种类可以根据业务需求自行设定,本实施例对此不进行限定。
在一些具体实施例中,所述请求队列包括第一请求队列和第二请求队列,所述队列轮询模块11,具体用于分别对所述共享内存中的所述第一请求队列和所述第二请求队列进行轮询;其中,所述第一请求队列中存储所述虚拟机内部发起的目标读请求,所述第二请求队列中存储所述虚拟机内部发起的目标写请求。
在一些具体实施例中,所述请求处理装置还包括:
信号生成及发送模块,用于生成请求处理完成信号,并将所述请求处理完成信号发送至所述虚拟机。
队列创建模块,用于所述请求加速模块基于所述共享内存通过创建环形队列的方式创建所述请求队列。
在一些具体实施例中,如果所述目标请求为所述目标读请求,所述请求处理装置还包括:
读取及存储模块,用于将根据所述目标读请求读取到的目标数据存储至所述第一请求队列;
相应的,所述信号生成及发送模块,具体用于生成所述请求处理完成信号,并将所述请求处理完成信号发送至所述虚拟机,以便所述虚拟机根据所述请求处理完成信号从所述第一请求队列中读取所述目标数据。
本实施例中,所述请求队列包括第一请求队列和第二请求队列,所述请求加速模块在进行队列轮询时,分别对所述共享内存中的第一请求队列和第二请求队列进行轮询。轮询方式可以是实时轮询也可以是按照预设周期进行间歇式轮询,本实施例对此不进行限定。
本实施例中,所述请求队列设置为两个,分别存储读请求和写请求,具体的,所述第一请求队列中存储虚拟机内部发起的目标读请求,所述第二请求队列中存储虚拟机内部发起的目标写请求。其中,所述第一请求队列也可称为发送队列,所述第二请求队列也可称为接收队列。
本实施例中,当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理。
本实施例中,处理完成之后,还可以生成请求处理完成信号,并将所述请求处理完成信号发送至所述虚拟机。
在一种实施例中,虚拟机内部发起读请求时,会往所述共享内存中的发送队列中存放数据。请求加速模块通过一直轮训共享内存中的发送队列,发现有新的请求进来队列时,就调用对应的处理函数对数据进行处理。处理完成之后发送IO完成信号返回给虚拟机IO完成的信号。在当将根据所述目标读请求读取到的目标数据存储至所述第一请求队列的情境中,所述请求加速模块生成所述请求处理完成信号后,将所述请求处理完成信号发送至所述虚拟机,以便所述虚拟机根据所述请求处理完成信号从所述第一请求队列中读取所述目标数据。
在另一种实施例中,虚拟机内部发起写请求时,会往共享内存中的接收队列中存放数据。请求加速模块通过一直轮训共享内存中的接收队列,发现有新的请求进入队列时,就调用对应的处理函数对数据进行处理,处理完成之后发送IO完成信号返回给虚拟机IO完成的信号。
进一步的,本申请实施例还提供了一种电子设备。图6是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图6为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的请求处理方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的请求处理方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223可以包括电子设备20收集到的读写操作。
进一步的,本申请实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的请求处理方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的请求处理方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (13)

1.一种请求处理方法,其特征在于,应用于连接虚拟机和后端存储的请求加速模块,包括:
对共享内存中的请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作;
当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理;
所述请求处理方法,还包括:
操作系统在存储系统启动阶段为所述虚拟机预先分配大页内存;
所述操作系统创建所述虚拟机内部的物理地址和所述大页内存之间的映射关系;
所述虚拟机将创建出的所述映射关系发送至所述请求加速模块;
所述请求加速模块根据所述映射关系确定出内存地址范围,以得到所述共享内存。
2.根据权利要求1所述的请求处理方法,其特征在于,所述操作系统在存储系统启动阶段为所述虚拟机预先分配大页内存之后,还包括:
所述请求加速模块进行启动并在启动之后创建控制文件,以便所述请求加速模块通过所述控制文件与所述虚拟机进行通信。
3.根据权利要求2所述的请求处理方法,其特征在于,所述请求加速模块在启动之后创建控制文件,包括:
所述请求加速模块在启动之后创建用于所述请求加速模块与所述虚拟机之间进行通信的sock文件。
4.根据权利要求2所述的请求处理方法,其特征在于,所述操作系统创建所述虚拟机内部的物理地址和所述大页内存之间的映射关系之前,还包括:
所述虚拟机读取所述大页内存及所述控制文件,并利用所述大页内存及所述控制文件进行启动。
5.根据权利要求2所述的请求处理方法,其特征在于,所述虚拟机将创建出的所述映射关系发送至所述请求加速模块,包括:
所述虚拟机通过所述控制文件向所述请求加速模块发送携带有所述映射关系的通信信号。
6.根据权利要求5所述的请求处理方法,其特征在于,所述请求加速模块根据所述映射关系确定出内存地址范围,以得到所述共享内存,包括:
所述请求加速模块接收所述通信信号,并对所述通信信号进行解析得到所述映射关系,及根据所述映射关系确定出内存地址范围得到所述共享内存。
7.根据权利要求1至6任一项所述的请求处理方法,其特征在于,所述请求队列包括第一请求队列和第二请求队列;
相应的,所述对共享内存中的请求队列进行轮询,包括:
分别对所述共享内存中的所述第一请求队列和所述第二请求队列进行轮询;其中,所述第一请求队列中存储所述虚拟机内部发起的目标读请求,所述第二请求队列中存储所述虚拟机内部发起的目标写请求。
8.根据权利要求7所述的请求处理方法,其特征在于,所述通过调用对应处理函数的方式对所述目标请求进行处理之后,还包括:
生成请求处理完成信号,并将所述请求处理完成信号发送至所述虚拟机。
9.根据权利要求8所述的请求处理方法,其特征在于,如果所述目标请求为所述目标读请求,所述通过调用对应处理函数的方式对所述目标请求进行处理之后,还包括:
将根据所述目标读请求读取到的目标数据存储至所述第一请求队列;
生成所述请求处理完成信号,并将所述请求处理完成信号发送至所述虚拟机,以便所述虚拟机根据所述请求处理完成信号从所述第一请求队列中读取所述目标数据。
10.根据权利要求7所述的请求处理方法,其特征在于,还包括:
所述请求加速模块基于所述共享内存通过创建环形队列的方式创建所述请求队列。
11.一种请求处理装置,其特征在于,应用于连接虚拟机和后端存储的请求加速模块,包括:
队列轮询模块,用于对共享内存中的请求队列进行轮询;其中,用于提供统一存储服务的所述虚拟机和所述请求加速模块均能对所述共享内存进行读写操作;
请求处理模块,用于当轮询到所述请求队列中存在由所述虚拟机内部发起的目标请求,则通过调用对应处理函数的方式对所述目标请求进行处理;
所述请求处理装置,还用于:
操作系统在存储系统启动阶段为所述虚拟机预先分配大页内存;
所述操作系统创建所述虚拟机内部的物理地址和所述大页内存之间的映射关系;
所述虚拟机将创建出的所述映射关系发送至所述请求加速模块;
所述请求加速模块根据所述映射关系确定出内存地址范围,以得到所述共享内存。
12.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至10任一项所述的请求处理方法。
13.一种计算机可读存储介质,其特征在于,用于存储计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至10任一项所述的请求处理方法。
CN202211437516.3A 2022-11-17 2022-11-17 一种请求处理方法、装置、设备及存储介质 Active CN115576654B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211437516.3A CN115576654B (zh) 2022-11-17 2022-11-17 一种请求处理方法、装置、设备及存储介质
PCT/CN2023/116229 WO2024103912A1 (zh) 2022-11-17 2023-08-31 一种请求处理方法、装置、设备及非易失性可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211437516.3A CN115576654B (zh) 2022-11-17 2022-11-17 一种请求处理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN115576654A CN115576654A (zh) 2023-01-06
CN115576654B true CN115576654B (zh) 2023-03-10

Family

ID=84588743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211437516.3A Active CN115576654B (zh) 2022-11-17 2022-11-17 一种请求处理方法、装置、设备及存储介质

Country Status (2)

Country Link
CN (1) CN115576654B (zh)
WO (1) WO2024103912A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115756732B (zh) * 2023-01-09 2023-04-07 苏州浪潮智能科技有限公司 Io请求的监测方法及装置、存储介质及电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3347813A4 (en) * 2016-01-05 2019-05-08 Hewlett-Packard Enterprise Development LP MESSAGE TRANSMISSION IN VIRTUAL MACHINE
CN109302494A (zh) * 2018-11-20 2019-02-01 郑州云海信息技术有限公司 一种网络存储系统的配置方法、装置、设备及介质
CN112764872B (zh) * 2021-04-06 2021-07-02 阿里云计算有限公司 计算机设备、虚拟化加速设备、远程控制方法及存储介质
CN113703672B (zh) * 2021-07-30 2023-07-14 郑州云海信息技术有限公司 一种超融合系统及其io请求下发方法、物理服务器
CN114584541A (zh) * 2022-03-07 2022-06-03 浪潮云信息技术股份公司 一种加速虚拟机网络的方法

Also Published As

Publication number Publication date
WO2024103912A1 (zh) 2024-05-23
CN115576654A (zh) 2023-01-06

Similar Documents

Publication Publication Date Title
US10701139B2 (en) Life cycle management method and apparatus
US20240031309A1 (en) Data Processing Method, Apparatus, Device and Storage Medium
US9244817B2 (en) Remote debugging in a cloud computing environment
US8336047B2 (en) Provisioning virtual resources using name resolution
US20180210752A1 (en) Accelerator virtualization method and apparatus, and centralized resource manager
US20200293216A1 (en) Method, apparatus and electronic device for cloud service migration
WO2019178855A1 (zh) 一种虚拟机访问远端加速设备方法及系统
JP2013513174A (ja) 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム
WO2022179423A1 (zh) 虚拟化处理系统、方法、装置及设备
CN110046026B (zh) 云主机指定虚拟磁盘限速方法、计算设备及云平台
US10489177B2 (en) Resource reconciliation in a virtualized computer system
CN110865989A (zh) 一种大规模计算集群的业务处理方法
US20170153909A1 (en) Methods and Devices for Acquiring Data Using Virtual Machine and Host Machine
US10728169B1 (en) Instance upgrade migration
CN115576654B (zh) 一种请求处理方法、装置、设备及存储介质
CN114281252A (zh) 非易失性高速传输总线NVMe设备的虚拟化方法及设备
CN116774933A (zh) 存储设备的虚拟化处理方法、桥接设备、系统及介质
US11283723B2 (en) Technologies for managing single-producer and single consumer rings
CN111143072A (zh) 用户态程序内存分配方法、系统及相关组件
CN113254160B (zh) 一种io资源请求方法和装置
CN115562871A (zh) 内存分配管理的方法和装置
CN107967165B (zh) 基于lvm的虚拟机离线迁移方法
CN107515725B (zh) 一种核心网虚拟化系统共享磁盘的方法、装置及网管mano系统
US20230062517A1 (en) Storage Provisioning
CN113806019A (zh) 一种OpenStack云平台中绑定及解绑PMEM设备的方法

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
GR01 Patent grant
GR01 Patent grant