一种超融合系统及其io请求下发方法、物理服务器

文档序号:1888623 发布日期:2021-11-26 浏览:3次 >En<

阅读说明:本技术 一种超融合系统及其io请求下发方法、物理服务器 (Super-fusion system, IO request issuing method thereof and physical server ) 是由 马怀旭 颜秉珩 于 2021-07-30 设计创作,主要内容包括:本申请公开了一种超融合系统,针对分布式块存储,该系统使用virtio半虚拟化技术,通过共享的大页内存和RDMA技术,实现从虚拟机IO到分布式块存储多副本间的全程内存零拷贝,即虚拟机直接通过大页内存访问物理机上的后端分布式块存储资源,使得虚拟机IO无需通过网络即可访问分布式块存储服务端的资源,缩减虚拟机到分布式块存储端的IO路径,并通过轮询加速IO访问速度,提高分布式块存储在虚拟化场景下的的IO性能,提高超融合性能。此外,本申请还提供了一种超融合系统的IO下发方法、物理服务器和可读存储介质,其技术效果与上述系统的技术效果相对应。(The application discloses super-fusion system, for distributed block storage, the system uses virtio paravirtualization technology, through shared large page memory and RDMA technology, realize from virtual machine IO to the whole journey memory zero copy between the distributed block storage multiple copies, the virtual machine directly visits the rear end distributed block storage resource on the physical machine through the large page memory promptly, make virtual machine IO need not to visit the resource of distributed block storage service end through the network, reduce the IO route of virtual machine to distributed block storage end, and through polling accelerateing IO access speed, improve the IO performance of distributed block storage under the virtualization scene, improve super-fusion performance. In addition, the application also provides an IO issuing method, a physical server and a readable storage medium of the super-fusion system, and the technical effect of the system corresponds to that of the system.)

一种超融合系统及其IO请求下发方法、物理服务器

技术领域

本申请涉及计算机技术领域,特别涉及一种超融合系统及其IO请求下发方法、物理服务器及可读存储介质。

背景技术

在信息爆炸增长的时代,海量数据的增长,传统存储成本高,效率低下无法满足用户数据的增长速度,高效智能的分布式存储技术解决这一痛楚,分布式存储具有以下几个特征:高性能、高可靠性、高可扩展性、透明性、自治性。分布式存储数据存放首先要进行分片切割处理,之后通过一定算法,计算出数据存放位置,由于用户数据被分为多个数据块,因此任何一个数据块丢失都可以造成数据不可用,因此分布式存储必须考虑合理的冗余存储模型,为用户的数据分块提供多个冗余的存储副本,从而保证数据的安全性和可靠性。

针对分布式存储提供的存储,有三种方向:对象存储、文件存储和块存储。对象存储主要用于储存不变的对象,文件存储主要为了储存文件,块存储提供块设备;块存储一般是提供块给qemu使用创建虚拟机或者是提供数据库或者是文件存储等应用;正常使用块存储来说有两种方式,一种是分布式存储提供iSCSI设备映射给主机,另外一种是通过私有协议直接连接使用分布式存储,但是都面临着IO路径比较长的缺点。

综上,在分布式块存储中,如何克服上述IO路径长的缺点,是亟待本领域技术人员解决的问题。

发明内容

本申请的目的是提供一种超融合系统及其IO请求下发方法、物理服务器及可读存储介质,用以解决在分布式块存储中IO路径长的问题。其具体方案如下:

第一方面,本申请提供了一种超融合系统,包括:

virtio前端驱动,用于申请大页内存,并创建请求队列;在虚拟机下发IO请求时,将所述IO请求存储至所述请求队列;

virtio后端驱动,用于轮询所述请求队列,在检测到IO请求时,调用分布式块存储的本地服务端对所述IO请求进行处理;

所述本地服务端,用于判断所述IO请求是否为本地读请求,若是,则将所述IO请求的请求内容写入所述大页内存,否则,通过RDMA方式将所述IO请求和所述大页内存的地址发送至分布式块存储的远程服务端;

所述远程服务端,用于根据所述大页内存的地址和所述IO请求,通过RDMA的方式对所述大页内存进行相应的读写操作。

可选的,所述virtio前端驱动用于:创建无锁化队列以作为请求队列。

可选的,所述本地服务端用于:从所述大页内存获取所述IO请求的请求地址,根据所述请求地址判断所述IO请求是否为本地读请求。

可选的,所述本地服务端用于:从所述大页内存获取所述IO请求的LUN信息和/或offset信息,根据所述LUN信息和/或offset信息判断所述IO请求是否为本地读请求。

可选的,所述远程服务端用于:在完成所述读写操作后,向所述virtio后端驱动发送IO处理完成的提示信息,所述virtio后端驱动向所述virtio前端驱动发送IO处理完成的提示信息。

可选的,所述本地服务端用于:在所述IO请求不是本地读请求时,将所述大页内存注册至智能网卡,利用所述智能网卡通过RDMA方式将所述IO请求和所述大页内存的地址发送至分布式块存储的远程服务端。

第二方面,本申请提供了一种超融合系统的IO请求下发方法,应用于宿主机,包括:

利用virtio前端驱动申请大页内存,并创建请求队列;在虚拟机下发IO请求时,利用所述virtio前端驱动将所述IO请求存储至所述请求队列;

利用virtio后端驱动轮询所述请求队列,在检测到IO请求时,将所述IO请求发送至分布式块存储的本地服务端;

利用所述本地服务端判断所述IO请求是否为本地读请求,若是,则将所述IO请求的请求内容写入所述大页内存,否则,通过RDMA方式将所述IO请求和所述大页内存的地址发送至远端主机,以便于所述远端主机上的分布式块存储的远程服务端根据所述大页内存的地址和所述IO请求,通过RDMA的方式对所述大页内存进行相应的读写操作。

第三方面,本申请提供了一种超融合系统的IO请求下发方法,应用于远端主机,包括:

接收宿主机上的分布式块存储的本地服务端通过RDMA的方式发送的IO请求和大页内存的地址;

根据所述大页内存的地址和所述IO请求,通过RDMA的方式对所述宿主机上的大页内存进行相应的读写操作,所述大页内存为virtio前端驱动在所述宿主机申请的;

所述本地服务端向所述远端主机发送IO请求和大页内存的地址的过程,包括:

接收virtio后端驱动发送的调用请求,所述virtio后端驱动用于轮询请求队列,并在检测到IO请求时向所述本地服务端发出对所述IO请求进行处理的调用请求,所述请求队列为所述virtio前端驱动在所述宿主机创建的;判断所述IO请求是否为本地读请求,若是,则将所述IO请求的请求内容写入所述大页内存,否则,通过RDMA方式将所述IO请求和所述大页内存的地址发送至所述远端主机。

第四方面,本申请提供了一种超融合系统的物理服务器,包括:

存储器:用于存储计算机程序;

处理器:用于执行所述计算机程序,以实现如上所述的超融合系统的IO请求下发方法。

第五方面,本申请提供了一种可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的超融合系统的IO请求下发方法。

本申请所提供的一种超融合系统,包括virtio前端驱动,virtio后端驱动,分布式块存储的本地服务端,分布式块存储的远程服务端。其中,virtio前端驱动用于申请大页内存,并创建请求队列,在虚拟机下发IO请求时,将IO请求存储至请求队列;virtio后端驱动用于轮询请求队列,在检测到IO请求时,调用本地服务端对IO请求进行处理;本地服务端,用于判断IO请求是否为本地读请求,若是,则将IO请求的请求内容写入大页内存,否则,通过RDMA方式将IO请求和大页内存的地址发送至远程服务端;远程服务端,用于根据大页内存的地址和IO请求,通过RDMA的方式对大页内存进行相应的读写操作。

可见,在超融合场景下,针对分布式块存储,该系统使用virtio半虚拟化技术,通过共享的大页内存和RDMA技术,实现从虚拟机IO到分布式块存储多副本间的全程内存零拷贝,即虚拟机直接通过大页内存访问物理机上的后端分布式块存储资源,使得虚拟机IO无需通过网络即可访问分布式块存储服务端的资源,缩减虚拟机到分布式块存储端的IO路径,并通过轮询加速IO访问速度,提高分布式块存储在虚拟化场景下的的IO性能,提高超融合性能。

此外,本申请还提供了一种超融合系统的IO下发方法、物理服务器和可读存储介质,其技术效果与上述系统的技术效果相对应,这里不再赘述。

附图说明

为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请所提供的超融合系统实施例一的示意图;

图2为本申请所提供的超融合系统实施例二的一种示意图;

图3为本申请所提供的超融合系统实施例二的另一种示意图;

图4为本申请提供的应用于宿主机的超融合系统的IO请求下发方法实施例的流程图;

图5为本申请提供的应用于远端主机的超融合系统的IO请求下发方法实施例的流程图。

具体实施方式

本申请的核心是提供一种超融合系统及其IO下发方法、物理服务器和可读存储介质,用以缩减虚拟机到分布式块存储端的IO路径,提高分布式块存储在虚拟化场景下的的IO性能,提高超融合性能。

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

下面对本申请提供的超融合系统实施例一进行介绍,参见图1,实施例一包括:

virtio前端驱动,用于申请大页内存,并创建请求队列;在虚拟机下发IO请求时,将IO请求存储至所述请求队列;

virtio后端驱动,用于轮询请求队列,在检测到IO请求时,调用分布式块存储的本地服务端对IO请求进行处理;

本地服务端,用于判断IO请求是否为本地读请求,若是,则将IO请求的请求内容写入大页内存,否则,通过RDMA(Remote Direct Memory Access,远程直接数据存取)方式将IO请求和大页内存的地址发送至分布式块存储的远程服务端;

远程服务端,用于根据大页内存的地址和IO请求,通过RDMA的方式对大页内存进行相应的读写操作。

本实施例应用于超融合(Hyper Converged Infrastructure,HCI)场景。本实施例使用大内存页,最大可以定义1GB的页面大小。在系统启动期间,用大内存页为virtio前端驱动和virtio后端驱动预留一部分内存,这部分内存不会被其他程序占用。virtio前端驱动和virtio后端驱动共享大页内存,通过内存共享实现节点内部数据直接内存地址访问,无需内存拷贝。而且,大页内存不会产生缺页中断,因此能够实现内存全速访问。

作为一种优选的实施方式,virtio前端驱动创建无锁化队列以作为请求队列。无锁化队列直接多生产者多消费者,能够避免虚拟机内部IO多线程访问锁竞争,实现高并发。

具体的,本地服务端从大页内存获取IO请求的请求地址,根据请求地址判断IO请求是否为本地读请求,其中请求地址具体可以为LUN(Logical Unit Number,逻辑单元号)信息和/或offset信息。

本地服务端在将IO请求的请求内容写入大页内存之后,会告知virtio后端驱动IO请求已经处理完成,然后virtio后端驱动告知virtio前端驱动IO请求已经处理完成。同理,远程服务端在完成对大页内存的读写操作后,会向virtio后端驱动发送IO处理完成的提示信息,然后virtio后端驱动向virtio前端驱动发送IO处理完成的提示信息。

作为一种优选的实施方式,通过智能网卡实现本地服务端与远程服务端之间的数据传输。具体的,本地服务端在IO请求不是本地读请求时,将大页内存注册至智能网卡,利用智能网卡通过RDMA方式将IO请求和大页内存的地址发送至分布式块存储的远程服务端。

本实施例所提供的超融合系统,应用于超融合场景下,针对分布式块存储,使用virtio半虚拟化技术,通过共享的大页内存、无锁化队列和RDMA技术,实现从虚拟机IO到分布式块存储多副本间全程内存零拷贝,即虚拟机直接通过大页内存访问物理机上的后端分布式块存储资源,无需通过网络即可实现虚拟机IO访问分布式块存储服务端的资源,缩减虚拟机到分布式块存储端的IO路径,并通过轮询和无锁化队列加速IO访问速度,此外通过智能网卡卸载Roce(RDMA over Converged Ethernet)协议充分发挥分布式块存储的硬件性能,减少IO时延,提高分布式块存储在虚拟化场景下的的IO性能,提高超融合性能。

下面开始详细介绍本申请提供的超融合系统实施例二,架构如图2和图3所示。

实施例二中,分布式块存储提供virtio后端驱动,用于和分布式块存储的本地服务端联动,直接可以进行分布式块存储IO请求下发。虚拟机启动时候通过virtio前端驱动,通过无锁化队列和大页内存和分布式块存储的virtio后端驱动进行联动。

虚拟机进行下发IO请求时候通过virtio前端驱动。具体的,虚拟机调用内部可识别的virtio前端驱动,申请大页内存地址存放具体要下发的内容,同时将IO请求插入无锁化队列。Virtio后端驱动轮询无锁化队列,检测到虚拟机下发IO请求和对应的大页内存地址,则调用分布式块存储的IO请求下发流程。也就是说,IO请求直接下发到分布式块存储的本地服务端,共享内存直接可以在本地服务端进行访问,因此内存仅申请一次,无需拷贝。

之后,分布式块存储端通过下发IO对应的LUN、offset等信息判断虚拟机请求读写的地址,如果是本地读请求,即请求类型为读请求且本机存在请求内容,则直接通过IO下发,将请求内容直接填写大内存页地址上,同时通知virtio前端驱动IO完成。

如果IO请求是写请求或者是远端读请求,则通过分布式块存储的远程服务端处理IO请求。具体的,分布式块存储的本地服务端将大内存页注册到智能网卡上,通过RDMA的方式将大内存页地址和IO请求告知分布式块存储的远程服务端,远程服务端根据IO请求和大页内存的地址通过RDMA方式对大页内存进行相应的IO操作,全程无内存拷贝,完成之后远程服务端告知virtio后端驱动IO完成,virtio后端驱动进而通知virtio前端驱动IO完成。

可见,本实施例提供的超融合系统,至少具备以下优点:

1、通过大页内存共享实现节点内部数据直接内存地址访问,无需内存拷贝。而且,大页内存不会产生缺页中断,因此能够实现内存全速访问。

2、通过无锁化队列实现高并发。无锁化队列直接多生产者多消费者,避免了虚拟机内部IO多线程访问锁竞争等,提高了业务的并发能力。

3、通过轮询加速事件感知,通过独占一颗CPU进行轮询操作,不会产生CPU线程切换产生的影响事件处理的性能,提高事件处理及时性和效率。

4、使用智能网卡卸载RDMA流量。分布式块存储是通过多节点存放多个副本来进行保证故障冗余,写操作时候需要将IO发送到远端的分布式块存储服务端上,在多个远端分布式块存储服务端上保存数据,读请求仅仅查找到一个副本所在位置即可访问数据,因此需要网络访问来保证数据分发访问。RDMA网络是通过RoCE协议进行传输,智能网卡会根据协议类型自动卸载网络,减少CPU的负担。RDMA网络中使用的内存是大页内存,大页内存在物理内存地址是固化的,将整个大页内存注册到物理网卡上,物理网卡直接可以通过RDMA进行物理地址访问,无需内存拷贝进行网络传输,网卡内部实现内存拷贝,网络传输过程中没有资源拷贝等信息,同时卸载了传输过程,降低了物理机的CPU压力。同时节省了虚拟机IO流程中所需要申请的内存,节省分布式块存储使用的内存。

下面对本申请提供的应用于宿主机的超融合系统的IO请求下发方法进行介绍,该方法基于前述超融合系统实现。

如图4所示,本实施例的应用于宿主机的超融合系统的IO请求下发方法,包括以下步骤:

S41、利用virtio前端驱动申请大页内存,并创建请求队列;在虚拟机下发IO请求时,利用virtio前端驱动将IO请求存储至请求队列;

S42、利用virtio后端驱动轮询请求队列,在检测到IO请求时,将IO请求发送至分布式块存储的本地服务端;

S43、利用本地服务端判断IO请求是否为本地读请求,若是,则将IO请求的请求内容写入大页内存,否则,通过RDMA方式将IO请求和大页内存的地址发送至远端主机,以便于远端主机上的分布式块存储的远程服务端根据大页内存的地址和IO请求,通过RDMA的方式对大页内存进行相应的读写操作。

下面对本申请提供的应用于远端主机的超融合系统的IO请求下发方法进行介绍,该方法基于前述超融合系统实现。

如图5所示,本实施例的应用于远端主机的超融合系统的IO请求下发方法,包括以下步骤:

S51、接收宿主机上的分布式块存储的本地服务端通过RDMA的方式发送的IO请求和大页内存的地址;

S52、根据大页内存的地址和IO请求,通过RDMA的方式对宿主机上的大页内存进行相应的读写操作,大页内存为virtio前端驱动在宿主机申请的;

本地服务端向远端主机发送IO请求和大页内存的地址的过程,包括:接收virtio后端驱动发送的调用请求,virtio后端驱动用于轮询请求队列,并在检测到IO请求时向本地服务端发出对IO请求进行处理的调用请求,请求队列为virtio前端驱动在宿主机创建的;判断IO请求是否为本地读请求,若是,则将IO请求的请求内容写入大页内存,否则,通过RDMA方式将IO请求和大页内存的地址发送至远端主机。

此外,本申请还提供了一种超融合系统的物理服务器,包括:

存储器:用于存储计算机程序;

处理器:用于执行所述计算机程序,以实现如上文所述的应用于宿主机的超融合系统的IO请求下发方法,或应用于远端主机的超融合系统的IO请求下发方法。

最后,本申请提供了一种可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序被处理器执行时用于实现如上文所述的应用于宿主机的超融合系统的IO请求下发方法,或应用于远端主机的超融合系统的IO请求下发方法。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种存储系统的写数据方法及相关装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类