首页 / 专利库 / 地球科学 / 水汽凝结体 / / 云主机指定虚拟磁盘限速方法、计算设备及云平台

主机指定虚拟磁盘限速方法、计算设备及云平台

阅读:1067发布:2020-06-15

专利汇可以提供主机指定虚拟磁盘限速方法、计算设备及云平台专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种 云 主机 指定 虚拟磁盘限速方法,一种计算设备以及基于Openstack架构的云平台,该方法包括以下步骤:步骤S1、调用Cinder API设置对指定虚拟磁盘进行限速操作的虚拟磁盘规格;步骤S2、基于Nova API调用步骤S1所确定的对指定虚拟磁盘所设置的虚拟磁盘规格;步骤S3、Nova API基于Libvirt API将自Cinder API所获取的虚拟磁盘规格加载至云主机的指定虚拟磁盘。通过本 申请 所揭示的云主机指定虚拟磁盘限速方法、计算设备及云平台,实现了对基于Openstack架构的云平台的 虚拟机 的指定虚拟磁盘进行限速,且限速操作不会对其其他虚拟磁盘造成影响,从而有效地防止了云平台中的指定租户过分占用云平台中形成的虚拟磁盘资源,提高了云平台操过的隔离性。,下面是主机指定虚拟磁盘限速方法、计算设备及云平台专利的具体信息内容。

1.一种主机指定虚拟磁盘限速方法,其特征在于,包括以下步骤:
步骤S1、调用Cinder API设置对指定虚拟磁盘进行限速操作的虚拟磁盘规格;
步骤S2、基于Nova API调用步骤S1所确定的对指定虚拟磁盘所设置的虚拟磁盘规格;
步骤S3、Nova API基于Libvirt API将自Cinder API所获取的虚拟磁盘规格加载至云主机的指定虚拟磁盘。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1与步骤S2受控于基于HTTP请求的控制系统,所述Cinder API运行于Cinder模中,所述Nova API运行于Nova模块中,所述控制系统与Cinder模块及Nova模块在逻辑上彼此独立。
3.根据权利要求2所述的方法,其特征在于,所述步骤S1还包括:Cinder API将控制系统所下发的虚拟磁盘的IO参数写入挂载至Cinder API的Cinder数据库中;其中,写入Cinder数据库中的IO参数分别使用第一表单及第二表单保存IO参数,所述第一表单记录volume_id与虚拟磁盘规格id所形成的映射关系,所述第二表单记录volume_id与虚拟磁盘规格id及虚拟磁盘规格所形成的映射关系;
所述虚拟磁盘规格包括顺序读带宽上限参数、顺序写带宽上限参数、随机写IOPS上限参数及随机读IOPS上限参数,所述虚拟磁盘规格以键-值对形式保存。
4.根据权利要求2所述的方法,其特征在于,所述步骤S2具体包括以下子步骤:
S21、控制系统向Nova API基于HTTP请求发起对指定虚拟磁盘刷新虚拟磁盘规格的进程
S22、通过Nova API调用Cinder数据库所保存的第二表单中的虚拟磁盘规格;
S23、将调用得到的第二表单中的虚拟磁盘规格写入与Nova API关联的Nova数据库中以形成第三表单,所述第三表单记录的虚拟磁盘规格由第一表单中volume_id与第二表单中的虚拟磁盘规格id所关联的虚拟磁盘规格进行确定。
5.根据权利要求2所述的方法,其特征在于,所述控制系统通过Dashboard受控于对指定虚拟磁盘发起限速操作的主体,所述主体为机器人程序、管理员、用户或者集群服务器
6.根据权利要求5所述的方法,其特征在于,所述步骤S3具体包括以下子步骤:
S31、基于Libvirt API自Nova数据库调用对云主机的虚拟磁盘所对应的虚拟磁盘规格对指定虚拟磁盘进行修改
S32、Nova API将自Cinder API所获取的虚拟磁盘规格加载至指定虚拟磁盘后,使用实例文件动态增加iotune节点以及与所述iotune节点所匹配的键值,以根据Nova API基于Libvirt API将自Cinder API所获取的虚拟磁盘规格所对应的键值加载至指定虚拟磁盘所对应的云主机中。
7.根据权利要求6所述的方法,其特征在于,所述iotune节点所匹配的键值是虚拟磁盘规格的至少一种参数。
8.根据权利要求6所述的方法,其特征在于,所述步骤S3之后还包括:判断对云主机指定虚拟磁盘限速是否成功的操作,并具体为:
使用virsh dumpxml命令在指定虚拟磁盘所关联的iotune节点中查询是否存在第二表单记录volume_id与虚拟磁盘规格id及虚拟磁盘规格所形成的至少一种映射关系,若存在,则表示对指定虚拟磁盘进行限速操作成功;
若不存在,则表示对指定虚拟磁盘进行限速操作不成功。
9.一种计算设备,包括:
处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时执行如权利要求1至8中任一所述的云主机指定虚拟磁盘限速方法。
10.一种基于Openstack架构的云平台,其特征在于,包括:
处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时执行如权利要求1至8中任一所述的云主机指定虚拟磁盘限速方法。

说明书全文

主机指定虚拟磁盘限速方法、计算设备及云平台

技术领域

[0001] 本发明涉及云计算技术领域,尤其涉及一种云主机指定虚拟磁盘限速方法、计算设备及云平台。

背景技术

[0002] 基于Openstack的云计算平台中,可通过物理机(PM)虚拟化形成多个云主机(VM),并以云主机向用户进行响应。在云计算应用场景中,存储资源通常以虚拟化的方式部署给用户。为了保证集群资源高效的利用,以及用户之间的公平性分配,需要保证在满足单个用户最大IO资源需求的前提下,不影响其他用户IO资源的使用。对每个用户进行IO请求控制,一般统称为质量服务(Quality of Service,QoS)。
[0003] 目前业界通常采用的Cgroup的虚拟磁盘IO的QoS控制无法对Page Cache层的IO进行有效的QoS控制。但是这些隔离方式在有些应用场景下,部分参数难以估计,运维人员无法简单有效的实施虚拟磁盘IO的QoS控制,因而在实际的生产中没有得到广泛的应用。
[0004] 尤其的,当云平台或者集群服务器的虚拟磁盘存在多种不同类型的场景时,如果采用Cgroup机制对特定用户所关联的指定磁盘进行限速的话,则会到导致整个云平台或者集群服务器中所配置的其他云主机对其他用户的响应,从而对物理机(PM)虚拟化形成多个云主机(VM)的指定虚拟磁盘进行限速操作时无法实现“隔离操作”。

发明内容

[0005] 本发明的目的在于揭示一种云主机指定虚拟磁盘限速方法,以及基于该方法的一种计算设备及云平台,用以实现对OpenStack架构作为底层虚拟化技术所配置出的云主机的虚拟磁盘进行独立限速配置,并防止对指定租户所分配的虚拟磁盘进行限速的操作对其他租户所分配的虚拟磁盘造成影响,并且能够适应不同类型的虚拟磁盘,从而防止云平台中的指定租户过分占用云平台中形成的虚拟磁盘资源,以提高云平台操过的隔离性。同时,基于上述第一个发明目的,本申请还公开了一种计算设备以及一种云平台。
[0006] 为实现上述第一个目的,本发明提供了一种云主机指定虚拟磁盘限速方法,包括以下步骤:
[0007] 步骤S1、调用Cinder API设置对指定虚拟磁盘进行限速操作的虚拟磁盘规格;
[0008] 步骤S2、基于Nova API调用步骤S1所确定的对指定虚拟磁盘所设置的虚拟磁盘规格;
[0009] 步骤S3、Nova API基于Libvirt API将自Cinder API所获取的虚拟磁盘规格加载至云主机的指定虚拟磁盘。
[0010] 作为本发明的进一步改进,所述步骤S1与步骤S2受控于基于HTTP请求的控制系统,所述Cinder API运行于Cinder模中,所述Nova API运行于Nova模块中,所述控制系统与Cinder模块及Nova模块在逻辑上彼此独立。
[0011] 作为本发明的进一步改进,所述步骤S1还包括:Cinder API将控制系统所下发的虚拟磁盘的IO参数写入挂载至Cinder API的Cinder数据库中;其中,
[0012] 写入Cinder数据库中的IO参数分别使用第一表单及第二表单保存IO参数,所述第一表单记录volume_id与虚拟磁盘规格id所形成的映射关系,所述第二表单记录volume_id与虚拟磁盘规格id及虚拟磁盘规格所形成的映射关系;
[0013] 所述虚拟磁盘规格包括顺序读带宽上限参数、顺序写带宽上限参数、随机写IOPS上限参数及随机读IOPS上限参数,所述虚拟磁盘规格以键-值对形式保存。
[0014] 作为本发明的进一步改进,所述步骤S2具体包括以下子步骤:
[0015] S21、控制系统向Nova API基于HTTP请求发起对指定虚拟磁盘刷新虚拟磁盘规格的进程
[0016] S22、通过Nova API调用Cinder数据库所保存的第二表单中的虚拟磁盘规格;
[0017] S23、将调用得到的第二表单中的虚拟磁盘规格写入与Nova API关联的Nova数据库中以形成第三表单,所述第三表单记录的虚拟磁盘规格由第一表单中volume_id与第二表单中的虚拟磁盘规格id所关联的虚拟磁盘规格进行确定。
[0018] 作为本发明的进一步改进,所述控制系统通过Dashboard受控于对指定虚拟磁盘发起限速操作的主体,所述主体为机器人程序、管理员、用户或者集群服务器。
[0019] 作为本发明的进一步改进,所述步骤S3具体包括以下子步骤:
[0020] S31、基于Libvirt API自Nova数据库调用对云主机的虚拟磁盘所对应的虚拟磁盘规格对指定虚拟磁盘进行修改
[0021] S32、Nova API将自Cinder API所获取的虚拟磁盘规格加载至指定虚拟磁盘后,使用实例文件动态增加iotune节点以及与所述iotune节点所匹配的键值,以根据Nova API基于Libvirt API将自Cinder API所获取的虚拟磁盘规格所对应的键值加载至指定虚拟磁盘所对应的云主机中。
[0022] 作为本发明的进一步改进,所述iotune节点所匹配的键值是虚拟磁盘规格的至少一种参数。
[0023] 作为本发明的进一步改进,所述步骤S3之后还包括:判断对云主机指定虚拟磁盘限速是否成功的操作,并具体为:
[0024] 使用virsh dumpxml命令在指定虚拟磁盘所关联的iotune节点中查询是否存在第二表单记录volume_id与虚拟磁盘规格id及虚拟磁盘规格所形成的至少一种映射关系,[0025] 若存在,则表示对指定虚拟磁盘进行限速操作成功;
[0026] 若不存在,则表示对指定虚拟磁盘进行限速操作不成功。
[0027] 基于相同发明思想,本申请还公开了一种计算设备,包括:
[0028] 处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时执行如上述任一项发明创造所揭示的云主机指定虚拟磁盘限速方法。
[0029] 此外,基于相同发明思想,本申请还一种基于Openstack架构的云平台,包括:
[0030] 处理器、存储器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时执行如上述任一项发明创造所揭示的云主机指定虚拟磁盘限速方法。
[0031] 与现有技术相比,本发明的有益效果是:通过本申请所揭示的云主机指定虚拟磁盘限速方法、计算设备及云平台,实现了对基于Openstack架构的云平台的虚拟机的指定虚拟磁盘进行限速,且限速操作不会对其其他虚拟磁盘造成影响,从而实现了对虚拟磁盘服务质量的定向、精确控制,从而有效地防止了云平台中的指定租户过分占用云平台中形成的虚拟磁盘资源,提高了云平台操过的隔离性。附图说明
[0032] 图1为本发明一种云主机指定虚拟磁盘限速方法的流程图
[0033] 图2为本发明云主机指定虚拟磁盘限速方法在云平台实现对指定虚拟磁盘进行限速操作所依赖的限速系统的拓扑图;
[0034] 图3本发明一种云主机指定虚拟磁盘限速方法的时序图;
[0035] 图4为图2所示的限速系统与发起限速操作指令的主体连接后所形成的拓扑图;
[0036] 图5为本发明一种计算设备的拓扑图;
[0037] 图6为Cinder模块的拓扑图。

具体实施方式

[0038] 下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
[0039] 实施例一:
[0040] 图1为本发明一种云主机指定虚拟磁盘限速方法的流程图。本实施例所揭示的一种云主机指定虚拟磁盘限速方法(以下简称“限速方法”)可独立或者同时适用于Linux操作系统在本地存储或者异地存储中,并通过租户、APP、机器人程序,甚至是另一个逻辑上与本地存储相互独立的集群服务器对对端的存储设备所虚拟化形成的指定虚拟磁盘进行限速操作。同时,图1所示出的云主机指定虚拟磁盘限速方法可通过图2所示出的限速系统实现。
[0041] 需要说明的是,在本申请各个实施例中,本地存储与异地存储仅仅在计算机逻辑上层面上构成的相对关系,并非构成对本发明各个实施例所蕴含技术方案的限定。例如,本地存储既可以对异地存储中形成的虚拟磁盘进行限速操作;反之,异地存储也可以受控于能够发出虚拟磁盘限速操作的主体(参图4所示)对本地存储中形成的虚拟磁盘进行限速操作。
[0042] 同时,在本实施例中,术语“指定虚拟磁盘”是云平台中的一个指定的租户所分配的一个或者多个虚拟磁盘。术语“服务质量”与术语“QoS”具等同技术含义。术语“用户”与术语“租户”、术语“Client”或者术语“tenant”具等同技术含义。
[0043] 配合参照图2至图4及图6所示,本实施例所揭示的一种云主机指定虚拟磁盘限速方法,包括以下步骤S1至步骤S3,并具体如下所示。
[0044] 首先,执行步骤S1、调用Cinder API20设置对指定虚拟磁盘进行限速操作的虚拟磁盘规格。优选的,该步骤S1还包括:Cinder API20将控制系统10所下发的虚拟磁盘的IO参数写入挂载至Cinder API20的Cinder数据库21中。其中,步骤S1具体对应图2中的序号①~序号②所示出的操作过程。
[0045] 虚拟磁盘规格可由顺序读带宽上限参数(read_bytes_sec)、顺序写带宽上限参数(write_bytes_sec)、随机写IOPS上限参数(write_iops_sec)及随机读IOPS上限参数(read_iops_sec)组成,所述虚拟磁盘规格以键-值对形式保存。同时,虚拟磁盘规格还可包括如下参数:total_bytes_sec(the total allowed bandwidth for the guest per second)和/或total_iops_sec(the total allowed IOPS for the guest per second),IOPS的含义为每秒的读写次数。设置虚拟磁盘的QoS(服务质量)可以实现对虚拟磁盘的读和/或写速率的限制,单位可以是IOPS或者字节,并彼此具有等同技术效果。
[0046] 控制系统10位于上层设备,该上层设备相对于通过虚拟化技术所池化形成的虚拟存储、虚拟网络、虚拟计算等网络组件,并可通过APIs被图4中的主体12通过HTTP/POST请求执行对话,以通过主体12向控制系统10下发对指定虚拟磁盘执行限速操作的指令,并向上反馈指定虚拟磁盘执行本实施例所揭示的限速方法后所具有的当前状态下的虚拟磁盘服务质量。在本实施例中,该控制系统10可被理解为能够调用HTTP/POST请求的装置、系统或者软件
[0047] 参图6所示,Cinder API20逻辑上位于Cinder模块2之中,Cinder模块2是在虚拟机和具体存储设备之间引入了一层“逻辑存储卷”的抽象,Cinder模块本身并不是一种存储技术,只是提供一个中间的抽象层,Cinder模块通过调用不同存储后端类型的驱动接口来管理相对应的后端存储,为用户或者租户提供统一的“卷操作”的存储接口。Cinder模块2主要由Cinder Client22、Cinder API20、Cinder-scheduler23、Cinder-volume24以及Cinder-backup25等多个服务组成,多个服务之间通过消息队列(Message Queue)进行通信。Cinder API20的作用主要是为用户提供Restful格的接口,接收Client的请求,在该服务中可以对用户的权限和传入的参数进行提前的检查,无误后方才将请求信息交给消息队列,由后续的其它服务根据消息队列信息进行处理。Cinder所调用不同存储后端类型可以是Ceph,也可是ISCSI,也为其他各种存储类型并支持块存储(Block Storage)的存储系统。
[0048] 更具体的,序号①所示出的操作过程具体如下所示,控制系统10接收到上层设备的主体12所下发的对指定虚拟磁盘进行限速操作的指令后,控制系统10可将该指令发送至Cinder API20。HTTP/POST请求携带对指定虚拟磁盘进行限速操作的ID。该HTTP/POST请求包含一个关联至指定虚拟磁盘的URL,URL具体如下所示:
[0049] http://{cinder_api_ip}:{cinder_api_port}/v2/{tenant_id}/volumes/{volume_i d}/action;
[0050] 其中,
[0051] cinder_api_ip:cinder api服务端IP;
[0052] cinder_api_port:cinder api服务端端口;
[0053] tenant_id:租户ID(备注:基于Openstack架构的云平台中,虚拟磁盘所对应的存储资源都是要挂在对应的租户名);
[0054] volume_id:虚拟磁盘ID(备注:用于区分不同用户的虚拟磁盘或者用于区分分配给同一个用户的不同虚拟磁盘)。
[0055] HTTP/POST请求所形成的消息体数据如下所示:
[0056]
[0057] 步骤S1受控于基于HTTP请求的控制系统10,Cinder API20运行于Cinder模块2中,控制系统10与Cinder模块2在逻辑上彼此独立。Cinder模块2在整个云平台中的色被定义为存储模块。
[0058] 序号②所示出的操作过程具体如下所示:Cinder API21将控制系统10所下发的虚拟磁盘的IO参数写入挂载至Cinder API20的Cinder数据库21中;其中,
[0059] 写入Cinder数据库21中的IO参数分别使用第一表单及第二表单保存IO参数,所述第一表单记录volume_id与虚拟磁盘规格id所形成的映射关系,所述第二表单记录volume_id与虚拟磁盘规格id及虚拟磁盘规格所形成的映射关系;虚拟磁盘规格包括顺序读带宽上限参数、顺序写带宽上限参数、随机写IOPS上限参数及随机读IOPS上限参数,所述虚拟磁盘规格以键-值对形式保存。
[0060] 具体的,Cinder数据库21中的第一表单用来保存volume_id跟虚拟磁盘规格之间所形成的映射关系,并如下第一表单所示:
[0061]
[0062] 第一表单实例
[0063] Cinder数据库21中的第二表单用来存储具体的需要执行限速操作的虚拟磁盘以及qos_specs_id对应的映射关系,并如下第二表单所示:
[0064]
[0065] 第二表单实例
[0066] 其中,第二表单的“specs_id”对应于第一表单中的qos_specs_id字段值,“Key”存储具体的需要执行限速操作的虚拟磁盘规格。
[0067] 然后,执行步骤S2、基于Nova API30调用步骤S1所确定的对指定虚拟磁盘所设置的虚拟磁盘规格。具体的,该步骤S2具体包括以下子步骤:子步骤S21、控制系统10向Nova API30基于HTTP请求发起对指定虚拟磁盘刷新虚拟磁盘规格的进程;子步骤S22、通过Nova API30调用Cinder数据库21所保存的第二表单中的虚拟磁盘规格;子步骤S23、将调用得到的第二表单中的虚拟磁盘规格写入与Nova API30关联的Nova数据库31中以形成第三表单,第三表单记录的虚拟磁盘规格由第一表单中volume_id与第二表单中的虚拟磁盘规格id所关联的虚拟磁盘规格进行确定。
[0068] 参图2所示,在本实施例中,步骤S1与步骤S2受控于基于HTTP请求的控制系统10,Cinder API20运行于Cinder模块2中,Nova API30运行于Nova模块3中,控制系统10与Cinder模块2及Nova模块3在逻辑上彼此独立。Nova模块3在整个云平台中的角色被定义为计算模块(结合图4所示),Cinder模块2在整个云平台中的角色被定义为存储模块(结合图4所示)。步骤S2的具体过程参序号③~序号⑤所示出的操作过程,且分别对应上述子步骤S21、子步骤S22与子步骤S23。
[0069] 序号③所示出的操作过程(即子步骤S21、控制系统10向Nova API30基于HTTP请求发起对指定虚拟磁盘刷新虚拟磁盘规格的进程)具体如下所示,
[0070] 该HTTP/POST请求包含一个关联至指定虚拟磁盘的URL,URL具体如下所示:
[0071] http://{nova_api_ip}:{nova_api_port}/v2/{tenant_id}/servers/{server_id}/o s-reload_qos_specs;
[0072] 该URL包含具体的云主机ID,其消息体数据包含虚拟磁盘ID。请求的接口地址要包含具体的云主机ID,然后具体的参数内带上虚拟磁盘ID:
[0073] 其中,
[0074] nova_api_ip:nova api服务端IP;
[0075] nova_api_port:nova api服务端端口;
[0076] tenant_id:租户ID;
[0077] server_id:云主机ID;
[0078] os-reload_qos_specs:虚拟磁盘具体的接口名。
[0079] HTTP/POST请求所形成的消息体数据如下所示:
[0080]
[0081] 序号④所示出的操作过程(即子步骤S22、通过Nova API30调用Cinder数据库21所保存的第二表单中的虚拟磁盘规格)具体如下所示:Nova API30调用Cinder client获取Cinder API20对应的Cinder数据库21内所保存的第二表单中的虚拟磁盘规格。具体的,在本实施例中,虚拟磁盘规格选用“write_bytes_sec”,其值为1024000(单位:字节/每秒)、“read_iops_sec”,其值为50(单位:读写次数/每秒),“read_bytes_sec”(单位:字节/秒)以及,“write_iops_sec”(单位:读写次数/每秒)。
[0082] 序号⑤所示出的操作过程(即子步骤S23、将调用得到的第二表单中的虚拟磁盘规格写入与Nova API30关联的Nova数据库31中以形成第三表单)具体如下所示,第三表单的数据结构如下所示:
[0083]
[0084]
[0085] 第三表单记录的虚拟磁盘规格由第一表单中volume_id与第二表单中的虚拟磁盘规格id所关联的虚拟磁盘规格进行确定。即,通过第一表单中虚拟磁盘的UUID(22d06898-268c-445b-ad6c-fb0506bcf3e8)在第二表单中的“qos_specs_id”匹配出加粗黑框中的四个“qos_specs_id”所对应的id,即“22d06898-268c-445b-ad6c-fb0506bcf3e8”。至此,Nova API30基于Cinder模块2中的Client Client22匹配出对需要执行限速操作的指定虚拟磁盘的虚拟磁盘规格参数,并保存于Nova数据库31中,以待最后通过Nova API30将虚拟磁盘规格参数通过Libvirt API函数调用并设置云主机。在本实施例中,对指定虚拟磁盘执行限速操作过程中,通过引入volume_id,使得整个限速操作能够针对指定虚拟磁盘执行限速,并关联至指定虚拟磁盘上,从而能够使得该限速方法能够确保限速操作不会对其其他虚拟磁盘造成影响,从而实现了对虚拟磁盘服务质量的定向、精确控制;同时也能忽略虚拟磁盘存在多种不同类型的场景,进一步提高了该限速方法在不同场景中的适应性。
[0086] 参图2所示,VM1~VM3可独立或者组合封装为一个向上层设备提供服务的云主机,并可通过后续的步骤S3最终实现对云主机的指定虚拟磁盘所执行的限速操作。VM1~VM3等一个或者多个虚拟机构成虚拟机集群32。
[0087] 最后,执行步骤S3、Nova API30基于Libvirt API将自Cinder API20所获取的虚拟磁盘规格加载至云主机的指定虚拟磁盘。
[0088] Libvirt对存储卷(volume)的管理,主要是对域的镜像文件的管理,镜像文件可为raw、qcow2、vmdk、qed等各种格式。Libvirt对存储卷的管理,首先需要创建virStorageVolPtr这个存储卷的对象,然后才能对其进行查询或控制操作。Libvirt提供了三个函数来分别通过不同的方式来获取存储卷对象,如:virStorageVolLookupByKey函数可以根据全局唯一的键值来获得一个存储卷对象,virStorageVolLookupByName函数可以根据名称在一个存储资源池(storage  pool)中获取一个存储卷对象,virStorageVolLookupByPath函数可以根据它在节点上路径来获取一个存储卷对象。有一些函数用于查询存储卷的信息,如:virStorageVolGetInfo函数可以查询某个存储卷的使用情况,virStorageVolGetName函数可以获取存储卷的名称,virStorageVolGetPath函数可以获取存储卷的路径,virStorageVolGetConnect函数可以查询存储卷的连接。其他类型的Libvirt API函数用于创建和修改存储卷,如:virStorageVolCreateXML函数可以根据提供的XML文件描述来创建一个存储卷。
[0089] 具体的,该步骤S3具体包括以下子步骤:
[0090] 子步骤S31、基于Libvirt API自Nova数据库31调用对云主机的虚拟磁盘所对应的虚拟磁盘规格对指定虚拟磁盘进行修改。子步骤S32、Nova API30将自Cinder API20所获取的虚拟磁盘规格加载至指定虚拟磁盘后,使用实例文件动态增加iotune节点以及与所述iotune节点所匹配的键值,以根据Nova API30基于Libvirt API将自Cinder API20所获取的虚拟磁盘规格所对应的键值加载至指定虚拟磁盘所对应的云主机中。该步骤S3如序号⑥所示出的操作过程。
[0091] Libvirt API可以用来调节云主机的虚拟磁盘对应的虚拟磁盘规格参数。而云主机在基于Openstack架构的云平台中,存在instance-00000002.xml(即上文所揭示的“实例文件”),以通过上述实例文件存储指定云主机虚拟磁盘所对应的虚拟磁盘规格参数,并可记录修改前及修改后的虚拟磁盘规格参数,以为后期检索历史修改记录提供依据。
[0092] 当调用Libvirt API设置云主机的指定虚拟磁盘的虚拟磁盘规格参数修改成功后,instance-00000002.xml文件就会增加iotune节点,以及对应的虚拟磁盘规格参数所对应的节点的值。Iotune节点表示指定的虚拟磁盘对应的虚拟磁盘IO读写限制的子节点
[0093] 在本实施例中,子节点为:read_bytes_sec、write_bytes_sec、read_iops_sec或者write_iops_sec。Iotune节点的消息体数据如下所示:
[0094]
[0095] 优选的,在本实施例中,该步骤S3之后还包括:判断对云主机指定虚拟磁盘限速是否成功的操作,并具体为:
[0096] 使用virsh dumpxml命令在指定虚拟磁盘所关联的iotune节点中查询是否存在第二表单记录volume_id与虚拟磁盘规格id及虚拟磁盘规格所形成的至少一种映射关系,[0097] 若存在,则表示对指定虚拟磁盘进行限速操作成功;
[0098] 若不存在,则表示对指定虚拟磁盘进行限速操作不成功。
[0099] iotune节点所匹配的键值是虚拟磁盘规格的至少一种参数。具体而言iotune节点所匹配的键值可是:read_bytes_sec、write_bytes_sec、read_iops_sec或者write_iops_sec中的任意一种,也可是任意两种、三种的组合,也可以是全部的组合。如果有出现iotune节点以及对应的子节点,表示指定的虚拟磁盘限速成功。例如:virsh dumpxml instance-00000002。
[0100] 在本实施例中,关注iotune节点的匹配情况,基于判断子节点是否存在步骤S1~步骤2中所设置的虚拟磁盘规格参数的键值对(Key-value),并可通过数据库索引进行快速扫描的方式以进行判断。同时,Cinder API20与Nova API30均可独立向控制系统10进行反馈。Cinder API20向控制系统10反馈对指定虚拟磁盘进行限速操作的指令是否被Nova模块3所调用的处理结果,Nova API30向控制系统10反馈对指定虚拟磁盘进行限速操作是否成功的结果。
[0101] 实施例二:
[0102] 结合图4所示,本实施例示出了一种云主机指定虚拟磁盘限速方法的一种变形例。在本实施例中,控制系统10挂载计算模块、存储模块及网络模块;其中计算模块可选自实施例一所揭示的Nova模块3,存储模块可选自实施例一所揭示的Cinder模块2,网络模块可选自NEUTRON模块。
[0103] Nova模块3包括Nova API30、nova-scheduler及nova-compute;Nova API30位于表示层并主要负责处理外部请求,nova-scheduler位于逻辑控制层,主要负责为选择的主机(HOST)创建VM,nova-compute虚拟机创建和资源分配,不提供虚拟化功能,但是支持KVM、LXC、Xen等。Nova API30、nova-scheduler及nova-compute这三个组件通过rabbit MQ进行消息传递。
[0104] 本实施例所揭示的限速方法与实施例一相比,其主要区别在于,在本实施例中,控制系统10通过Dashboard11受控于对指定虚拟磁盘发起限速操作的主体12,该主体12为机器人程序、管理员、用户或者集群服务器。机器人程序可被理解为各种能够自动运行的程序,例如APP、数字签名、插件、数字证书或者其他可在计算机装置或者系统中运行的其他各种程序或者逻辑。在本实施例中,通过设置Dashboard11可使得虚拟机集群32支持多节点控制,使得在云平台对虚拟机的指定虚拟磁盘的限速操作更为灵活,进一步提高了该限速方法的适应性。尤其需要说明的是,作为一个另一种变形,还可将主体12、Dashboard11及控制系统10作为一个整体逻辑或者一个组件,以按照图2所示出的技术方案对云主机的指定虚拟磁盘执行限速操作。
[0105] 本实施例所揭示的限速方法与实施例一种相同部分的技术方案,请参实施例一所示,在此不再赘述。
[0106] 实施例三:
[0107] 参图5所示,本实施例所揭示的一种计算设备,包括:处理器5、存储器6以及存储在存储器6上并可在处理器5上运行的计算机程序,处理器5执行所述计算机程序时执行如实施例一或者实施例二中任一实施例所述的云主机指定虚拟磁盘限速方法。
[0108] 处理器5通过硬件或者软件受控于主体12。存储器6基于OpenStack架构形成虚拟磁盘61至虚拟磁盘6i(参数i取大于1的正整数)。虚拟磁盘61至虚拟磁盘6i在主体12的控制下对一个或者多个虚拟磁盘执行限速操作。该限速操作的具体实现过程参实施例一和/或实施例二所示。该存储器6选自机械硬盘、固态硬盘、Ceph存储、NAS存储、SAN存储、NVDIMM、RAID或者数据库中的一种或者几种。
[0109] 本实施例所揭示的计算设备与实施例一和/或实施例二中相同部分的技术方案,请参实施例一和/或实施例二所示,在此不再赘述。
[0110] 实施例四:
[0111] 配合参照图5所示,本实施例公开了一种基于Openstack架构的云平台,包括:
[0112] 处理器5、存储器6以及存储在存储器6上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时执行如实施例一或者实施例二中任一实施例所述的云主机指定虚拟磁盘限速方法。云主机指定虚拟磁盘限速方法的具体实现过程参实施例一至实施例二所示。该云主机指定虚拟磁盘限速方法依赖图2所示出的限速系统所实现。
[0113] 本实施例所揭示的基于Openstack架构的云平台与实施例一至实施例三中相同部分的技术方案,请参实施例一至实施例三所示,在此不再赘述。
[0114] 应该理解到,在本申请所提供的几个实施例中所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0115] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0116] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0117] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0118] 上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
[0119] 对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
[0120] 此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
相关专利内容
标题 发布/更新时间 阅读量
云桥监控方法 2020-05-12 87
云台控制装置 2020-05-13 310
一种Android云终端 2020-05-12 639
云锦织造防尘布 2020-05-12 343
云朵机混合器 2020-05-13 245
一种摄像云台 2020-05-13 240
大气云动抽水机 2020-05-12 439
WiFi云存储 2020-05-11 984
乘梯云收费系统 2020-05-12 254
双面云锦 2020-05-11 791
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈