CN111352592B - 磁盘读写控制方法、装置、设备及计算机可读存储介质 - Google Patents
磁盘读写控制方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111352592B CN111352592B CN202010122317.8A CN202010122317A CN111352592B CN 111352592 B CN111352592 B CN 111352592B CN 202010122317 A CN202010122317 A CN 202010122317A CN 111352592 B CN111352592 B CN 111352592B
- Authority
- CN
- China
- Prior art keywords
- disk
- read
- virtual machine
- write
- speed
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Abstract
本申请实施例提供一种磁盘读写控制方法、装置、设备及计算机可读存储介质,其中,方法包括:获取预设时间段内虚拟机集群中的每一虚拟机接收到的需要磁盘阵列中的磁盘进行响应的读写请求;根据每一虚拟机接收到的所述读写请求,确定对应虚拟机的读写请求数量;根据每一虚拟机的所述读写请求数量,确定所述虚拟机集群的读写请求总量;当所述读写请求总量大于阈值时,对所述磁盘阵列中的至少一个磁盘的响应速度进行限速处理。通过本申请,能够对磁盘阵列中的每一磁盘的响应速度进行合理的控制,减小磁盘的压力,并提高虚拟机集群的性能。
Description
技术领域
本申请实施例涉及互联网技术领域,涉及但不限于一种磁盘读写控制方法、装置、设备及计算机可读存储介质。
背景技术
在规模中等或者比较大的私有云平台环境下,分布式存储系统的存储集群读写(IO,Input/Output)压力比较大,在对虚拟机没有做任何IO控制的情况下,存储集群在较大的压力下可能读写响应变慢,进而导致一些虚拟机出现异常现象,比如蓝屏。
目前,在分布式存储系统中,通常使用伪随机数据分布算法(Crush,ControlledReplication Under Scalable Hashing)进行数据分布,Crush算法可以根据Crush地图(Crush map)进行数据分布的灵活调整,所以在生产实践中,针对不同IO压力的虚拟机可以定制Crush map,使数据映射到不同性能的IO介质上,比如IO压力较高的虚拟机映射到固态硬盘(SSD,Solid State Drives)池,IO压力小的虚拟机映射到机械硬盘(HDD,Hard DiskDrive)池。
但是,使用大量的高性能的IO介质(例如SSD盘)需要一定的成本,且在大规模的私有云环境中,即使虚拟机IO压力不大,但是数百台低IO的虚拟机都创建在HDD池,也会使HDD池的压力增大,从而反过来影响虚拟机性能。
发明内容
本申请实施例提供一种磁盘读写控制方法、装置、设备及计算机可读存储介质,通过对云平台中的虚拟机的读写请求数量进行监控,能够合理控制磁盘的响应速度,从而使得虚拟机的读写请求被磁盘阵列中的磁盘进行有序的响应,进而减小磁盘的压力,并提高虚拟机集群的性能。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种磁盘读写控制方法,包括:
确定云平台中的虚拟机集群和与所述虚拟机集群对应的磁盘阵列;
获取预设时间段内所述虚拟机集群中的每一虚拟机接收到的需要所述磁盘阵列中的磁盘进行响应的读写请求;
根据每一虚拟机接收到的所述读写请求,确定对应虚拟机的读写请求数量;
根据每一虚拟机的所述读写请求数量,确定所述虚拟机集群的读写请求总量;
当所述读写请求总量大于阈值时,对所述磁盘阵列中的至少一个磁盘的响应速度进行限速处理。
本申请实施例提供一种磁盘读写控制装置,包括:
第一确定模块,用于确定云平台中的虚拟机集群和与所述虚拟机集群对应的磁盘阵列;
获取模块,用于获取预设时间段内所述虚拟机集群中的每一虚拟机接收到的需要所述磁盘阵列中的磁盘进行响应的读写请求;
第二确定模块,用于根据每一虚拟机接收到的所述读写请求,确定对应虚拟机的读写请求数量;
第三确定模块,用于根据每一虚拟机的所述读写请求数量,确定所述虚拟机集群的读写请求总量;
限速处理模块,用于当所述读写请求总量大于阈值时,对所述磁盘阵列中的至少一个磁盘的响应速度进行限速处理。
本申请实施例提供一种磁盘读写控制设备,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现上述的方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现上述的方法。
本申请实施例具有以下有益效果:
由于对云平台中的每一虚拟机的读写请求数量进行监控,并根据每一虚拟机的读写请求数量,确定虚拟机集群的读写请求总量,如此,当读写请求总量大于阈值时,对磁盘阵列中的磁盘的响应速度进行限速处理,即能够根据虚拟机集群的读写请求总量对磁盘阵列中的每一磁盘的响应速度进行合理的控制,使得虚拟机的读写请求被磁盘阵列中的磁盘进行有序的响应,进而减小磁盘的压力,并提高虚拟机集群的性能。
附图说明
图1是相关技术中采用Crush map对存储介质分流的结构示意图;
图2A是本申请实施例提供的磁盘读写控制系统的一个可选的架构示意图;
图2B是本申请实施例提供的磁盘读写控制系统应用于区块链系统的一个可选的结构示意图;
图2C是本申请实施例提供的区块结构的一个可选的示意图;
图3是本申请实施例提供的服务器的结构示意图;
图4本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图;
图5本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图;
图6本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图;
图7本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图;
图8本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图;
图9本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图;
图10是本申请实施例提供的磁盘读写控制的系统架构图;
图11是本申请实施例提供的虚拟机磁盘IO监控数据采集的流程示意图;
图12是本申请实施例提供的一种IO控制服务的模块图;
图13是本申请实施例提供的虚拟机和磁盘数量实时汇总的流程示意图;
图14是本申请实施例提供的磁盘IO的控制流程示意图;
图15是本申请实施例提供的另一种IO控制服务的模块图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本申请实施例所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)Livirt:一套用户管理硬件虚拟化的开源应用程序编程接口(API,ApplicationProgramming Interface),是开源的虚拟化管理工具,主要由三部分组成:一套API的静态链接库(lib库)、一个守护进程(libvirtd)和一个命令行实用程序(virsh),其中,lib库支持主流的编程语言,包括:C、python和ruby。
2)腾讯云TStack:是腾讯内部的一个云计算产品,基于开源的云端运算软件(例如,OpenStack软件)开发,是一个实现私有云或者混合云的基础软件。
3)Virsh:是Libvirt的命令行客户端用户管理虚拟机,并提供虚拟机的各种操作。
4)OpenStack:是开源的基础设施服务(Iaas,Infrastructure-as-a-service)管理平台。
5)Ceph:分布式文件系统,是开源的分布式存储系统,能同时提供对象、块、文件存储服务。
为了更好地理解本申请实施例中提供的磁盘读写控制方法,首先对相关技术中的磁盘读写控制方法进行说明:
云平台一般是提供Iaas服务,包括计算、存储、网络等相关资源,比如虚拟机、虚拟磁盘、虚拟网卡,其中使用最多的是虚拟机资源,其他的Iaas资源都要依赖于虚拟机而存在。一般一套私有化的云平台系统上线之后,运行的虚拟机数目少则上百台,多则上万台。Tstack使用Openstack和Ceph标准组合构建云平台,Ceph存储集群对于存储服务器要求不是很高,很适用于普通服务器,因此相对于一些使用特定规格存储服务器的专门存储系统而言性能差些。在规模中等或者比较大的私有云平台环境下,Ceph存储集群读写IO压力比较大,在对虚拟机没有做任何IO控制的情况下,Ceph集群在较大的压力下可能读写响应变慢,进而导致一些虚拟机出现异常现象,比如蓝屏。其次在没有限制的情况下,可能会出现惊群效应,比如一台虚拟机的业务很忙,读写IO很大,占用了Ceph集群的大部分带宽能力,导致一些其他原本正常的虚拟机分到的IO能力变少,出现这些虚拟机异常,业务卡顿等问题。
Ceph存储集群使用Crush算法进行数据分布,Crush根据Crush map可以进行数据分布的灵活调整,所以目前一些生产实践中,针对不同IO压力的虚拟机可以定制Crush map使其数据映射到不同性能的IO介质上。
图1是相关技术中采用Crush map对存储介质分流的结构示意图,如图1所示,虚拟机11具有高IO压力、虚拟机12和虚拟机13具有低IO压力,在Ceph存储集群10中,将具有高存储性能的多个SSD盘形成SSD池101,将具有低存储性能的多个HDD盘形成HDD池102,那么,就可以将IO压力较高的虚拟机11映射到SSD池101中,将IO压力较小的虚拟机12和虚拟机13映射到HDD池102中。
如图1所示,通过定制crush map,创建两个池:SSD池101和HDD池102。其中,创建在SSD池101中的云硬盘,其IO都会落到物理的SSD介质盘上,而创建在HDD池102中的云硬盘,其IO都会落在物理的HDD介质盘上。
图1中把高IO压力的虚拟机11的两块云硬盘创建在SSD池101中,低IO压力的虚拟机12和虚拟机13的云硬盘创建在HDD池102中,通过这种方式使IO压力大的虚拟机11尽量的保证运行在SSD上满足性能需求,而多台IO压力比较小的虚拟12和虚拟机13可以都申请到HDD池102中。
虽然相关技术中的方法能在一定程度上解决虚拟机IO请求对存储介质的需求,通过分池分规则进行IO压力的缓解。但是,相关技术中的方法不能从根本上解决问题,存在以下几个缺点:
第一,需要使用高性能IO的介质盘,而高性能IO的介质盘需要一定的成本,一般一套集群中SSD盘的占比不会超过50%。
第二,在大规模的私有云环境中,即使虚拟机的IO压力不大,但是数百台低IO的虚拟机都创建在HDD池中也会使HDD池的压力增大,从而反过来影响虚拟机性能。
基于相关技术所存在的上述至少一个问题,本申请实施例提供一种磁盘读写控制方法,首先,确定云平台中的虚拟机集群和与虚拟机集群对应的磁盘阵列;获取预设时间段内虚拟机集群中的每一虚拟机接收到的需要磁盘阵列中的磁盘进行响应的读写请求;然后,根据每一虚拟机接收到的读写请求,确定对应虚拟机的读写请求数量;根据每一虚拟机的读写请求数量,确定虚拟机集群的读写请求总量;最后,当读写请求总量大于阈值时,对磁盘阵列中的至少一个磁盘的响应速度进行限速处理。如此,由于对云平台中的每一虚拟机的读写请求数量进行监控,当读写请求总量大于阈值时,对磁盘阵列中的磁盘的响应速度进行限速处理,即能够根据虚拟机集群的读写请求总量对磁盘阵列中的每一磁盘的响应速度进行合理的控制,使得虚拟机的读写请求被磁盘阵列中的磁盘进行有序的响应,进而减小磁盘的压力,并提高虚拟机集群的性能。
下面说明本申请实施例提供的磁盘读写控制设备的示例性应用,本申请实施例提供的磁盘读写控制设备可以实施为笔记本电脑,平板电脑,台式计算机,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的终端,也可以实施为服务器。下面,将说明磁盘读写控制设备实施为服务器时的示例性应用。
参见图2A,图2A是本申请实施例提供的磁盘读写控制系统10的一个可选的架构示意图。为实现支撑磁盘读写请求的有效响应,磁盘读写控制系统10中包括虚拟机集群(如图2A中的虚拟机210、虚拟机211和虚拟机212组成的虚拟机集群)、磁盘阵列(如图2A中的磁盘220、磁盘221和磁盘222),网络200和服务器300。其中,虚拟机集群中的虚拟机可以部署在终端(例如图2A中的终端21-1和终端21-2)上,其中,虚拟机210部署在终端21-1上,虚拟机211和虚拟机212部署在终端21-2上。虚拟机集群中的每一虚拟机的读写请求都可以映射至磁盘阵列中的每一磁盘上。
在实现本申请实施例的磁盘读写控制方法时,虚拟机集群中的每一虚拟机接收用户输入的读写请求,并将读写请求通过网络200发送给服务器300,服务器300获取预设时间段内虚拟机集群中的每一虚拟机接收到的读写请求,并统计每一虚拟机接收到的需要磁盘阵列中的磁盘进行响应的读写请求数量,然后,根据每一虚拟机的读写请求数量,计算虚拟机集群的读写请求总量;当读写请求总量大于阈值时,向磁盘阵列中的至少一个磁盘发送限速指令,以实现对磁盘阵列中的至少一个磁盘的响应速度进行限速处理。在完成对磁盘的响应速度进行限速处理之后,按照虚拟机接收到的读写请求的先后顺序,依次控制磁盘对读写请求进行响应,并通过网络200向虚拟机返回响应消息。
本申请实施例涉及的磁盘读写控制系统10也可以是区块链系统的分布式系统201,参见图2B,图2B是本申请实施例提供的磁盘读写控制系统10应用于区块链系统的一个可选的结构示意图,其中,所述分布式系统201可以是由多个节点202(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端203形成的分布式节点,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,TransmissionControl Protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图2B示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币。
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
4)共识(Consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部,实现共识的机制包括工作量证明(PoW,Proof of Work)、权益证明(PoS,Proof of Stake)、股份授权证明(DPoS,Delegated Proof-of-Stake)、消逝时间量证明(PoET,Proof of Elapsed Time)等。
参见图2C,图2C是本申请实施例提供的区块结构(Block Structure)的一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
参见图3,图3是本申请实施例提供的服务器300的结构示意图,图3所示的服务器300包括:至少一个处理器310、存储器350、至少一个网络接口320和用户接口330。服务器300中的各个组件通过总线系统340耦合在一起。可理解,总线系统340用于实现这些组件之间的连接通信。总线系统340除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统340。
处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口330包括使得能够呈现媒体内容的一个或多个输出装置331,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口330还包括一个或多个输入装置332,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器350可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器350可选地包括在物理位置上远离处理器310的一个或多个存储设备。存储器350包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器350旨在包括任意适合类型的存储器。在一些实施例中,存储器350能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统351,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块352,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
输入处理模块353,用于对一个或多个来自一个或多个输入装置332之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图3示出了存储在存储器350中的一种磁盘读写控制装置354,该磁盘读写控制装置354可以是服务器300中的磁盘读写控制装置,其可以是程序和插件等形式的软件,包括以下软件模块:第一确定模块3541、获取模块3542、第二确定模块3543、第三确定模块3544和限速处理模块3545,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的磁盘读写控制方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。
下面将结合本申请实施例提供的服务器300的示例性应用和实施,说明本申请实施例提供的磁盘读写控制方法。参见图4,图4是本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图,将结合图4示出的步骤进行说明。
步骤S401,确定云平台中的虚拟机集群和与虚拟机集群对应的磁盘阵列。
本申请实施例的磁盘读写控制方法应用于云平台中,该云平台可以是Openstack平台。云平台中部署有虚拟机集群,虚拟机集群中包括至少一个虚拟机。虚拟机集群中的虚拟机与磁盘阵列中的磁盘之间具有映射关系,磁盘阵列中包括至少一个磁盘,当任一虚拟机与某一磁盘之间具有映射关系时,该磁盘用于存储对应虚拟机接收到的读写请求,并响应该读写请求。
本申请实施例中,磁盘阵列可以包括实体的存储介质,例如,SSD或HDD;磁盘阵列也可以包括虚拟磁盘。当磁盘阵列中包括虚拟磁盘时,虚拟磁盘可以与虚拟机集群共同部署在云平台上。
步骤S402,获取预设时间段内虚拟机集群中的每一虚拟机接收到的需要磁盘阵列中的磁盘进行响应的读写请求。
这里,预设时间段可以根据实际业务进行确定,例如可以是一天或者一小时。在预设时间段内,虚拟机集群中的每一虚拟机均可以正常的接收用户发送的读写请求,当虚拟机接收到读写请求后,由于读写数据被存储于磁盘中,因此可以通过磁盘对读写请求进行响应,以实现用户的业务需求,实现数据的读写过程。
本申请实施例中,当用户通过虚拟机发送读写请求时,服务器可以收集每一虚拟机接收到的读写请求并记录,实现对虚拟机读写请求数据的监控。服务器在收集读写请求时,不仅可以记录读写请求的数量,还可以记录每一读写请求所请求的数据、读写请求的发送时间和针对于同一读写数据的读写请求量等信息。
步骤S403,根据每一虚拟机接收到的读写请求,确定对应虚拟机的读写请求数量。
这里,在统计每一虚拟机的读写请求数量时,可以创建读写请求数量统计表,该统计表中包括每一虚拟机的标识和与每一虚拟机的标识对应的读写请求数量。在统计的预设时间段内,当任一虚拟机接收到读写请求时,在统计表中,与对应虚拟机的标识所对应的读写请求数量加一。
在一些实施例中,还可以统计每一虚拟机针对于同一读写数据的读写请求量或者虚拟机集群针对于同一读写数据的读写请求量。
在实现的过程中,当统计每一虚拟机针对于同一读写数据的读写请求量时,上述统计表中还可以包括每一虚拟机的标识与不同读写数据之间的对应关系,那么在统计的过程中,当某一虚拟机接收到针对任一读写数据的读写请求时,该虚拟机的对应读写数据的读写请求数量加一。
举例来说,虚拟机集群中包括虚拟机V1、V2和V3,不同读写数据包括数据D1、D2和D3,那么,虚拟机V1与数据D1、D2和D3分别具有对应关系,虚拟机V2与数据D1、D2和D3分别具有对应关系,虚拟机V3与数据D1、D2和D3分别具有对应关系,当虚拟机V1接收到针对数据D2的读写请求时,虚拟机V1对应的数据D2的读写请求数量加一。需要说明的是,本申请实施例中的不同数据可以是不同类型的数据,也可以是针对于不同业务的数据,也可以是针对于不同应用的数据等。
在实现的过程中,当统计虚拟机集群针对于同一读写数据的读写请求量时,上述统计表中还可以包括虚拟机集群标识与不同读写数据之间的对应关系,那么在统计的过程中,当任意一个虚拟机接收到针对某一读写数据的读写请求时,该虚拟机集群的对应读写数据的读写请求数量加一。
举例来说,对于虚拟机集群V中包括虚拟机V1、V2和V3,不同读写数据包括数据D1、D2和D3,那么,当虚拟机集群V中的虚拟机V1接收到针对数据D2的读写请求时,虚拟机集群V对应的数据D2的读写请求数量加一,当虚拟机集群V中的虚拟机V2也接收到针对数据D2的读写请求时,虚拟机集群V对应的数据D2的读写请求数量再加一。
步骤S404,根据每一虚拟机的读写请求数量,确定虚拟机集群的读写请求总量。
这里,在确定出每一虚拟机的读写请求数量之后,对虚拟机集群中的全部虚拟机的读写请求数量求和,得到虚拟机集群的读写请求总量。
在一些实施例中,在确定虚拟机集群的读写请求总量时,还可以考虑每一虚拟机所接收到的无效读写请求的数量,该无效读写请求包括不需要磁盘进行响应的读写请求和接收到的异常请求等。如果虚拟机集群中的虚拟机接收到无效读写请求时,上述读写请求总量是不包括无效读写请求的数量的。
步骤S405,当读写请求总量大于阈值时,对磁盘阵列中的至少一个磁盘的响应速度进行限速处理。
这里,当读写请求总量大于阈值时,表明当前的磁盘阵列的读写压力较大,则容易出现虚拟机异常或者业务卡顿等异常现象,那么为了避免异常现象的发生,则需要对磁盘阵列中的至少一个磁盘的响应速度进行限速处理,以保证磁盘阵列对虚拟机的读写请求进行有序的响应。
本申请实施例中,上述阈值可以根据以下性能参数中的至少之一确定:业务量、云平台的性能、虚拟机集群的性能、磁盘阵列的存储空间等。由于上述性能参数会根据实际需求和实际情况变化,因此,上述阈值也可以随着性能参数的变化而变化。
本申请实施例提供的磁盘读写控制方法,由于对云平台中的每一虚拟机的读写请求数量进行监控,并根据每一虚拟机的读写请求数量,确定虚拟机集群的读写请求总量,如此,当读写请求总量大于阈值时,对磁盘阵列中的磁盘的响应速度进行限速处理,即能够根据虚拟机集群的读写请求总量对磁盘阵列中的每一磁盘的响应速度进行合理的控制,使得虚拟机的读写请求被磁盘阵列中的磁盘进行有序的响应,进而减小磁盘的压力,并提高虚拟机集群的性能。
在一些实施例中,磁盘读写控制系统中包括虚拟机集群(虚拟机集群中包括至少一个虚拟机)、磁盘阵列(磁盘阵列中包括至少一个磁盘)和服务器。下面,将结合图2A的磁盘读写控制系统10对本申请实施例的磁盘读写控制方法进行说明。
本申请实施例以虚拟机集群中包括两个虚拟机(虚拟机1和虚拟机2)为例进行说明。图5是本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图,如图5所示,方法包括以下步骤:
步骤S501,虚拟机1和虚拟机2分别接收用户输入的读写请求。
步骤S502,虚拟机1和虚拟机2将接收到的读写请求发送给服务器。
步骤S503,服务器根据虚拟机1在预设时间段内接收到的所述读写请求,确定虚拟机1的读写请求数量N1。
步骤S504,服务器根据虚拟机2在预设时间段内接收到的所述读写请求,确定虚拟机2的读写请求数量N2。
步骤S505,根据虚拟机1的读写请求数量N1和虚拟机2的读写请求数量N2,确定虚拟机集群的读写请求总量。
这里,可以将读写请求数量N1和读写请求数量N2之和,确定为虚拟机集群的读写请求总量。
步骤S506,当所述读写请求总量大于阈值时,对磁盘阵列中的至少一个磁盘的响应速度进行限速处理。
本申请实施例提供的磁盘读写控制方法,服务器对云平台中的每一虚拟机的读写请求数量进行监控,并根据每一虚拟机的读写请求数量,确定虚拟机集群的读写请求总量,如此,当读写请求总量大于阈值时,对磁盘阵列中的磁盘的响应速度进行限速处理,即能够根据虚拟机集群的读写请求总量对磁盘阵列中的每一磁盘的响应速度进行合理的控制,使得虚拟机的读写请求被磁盘阵列中的磁盘进行有序的响应,进而减小磁盘的压力,并提高虚拟机集群的性能。
在一些实施例中,对磁盘阵列中的至少一个磁盘进行限速处理可以采用以下方式中的至少一种:对磁盘进行降速处理和对磁盘的读写请求进行转移。
基于图4,图6是本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图,如图6所示,步骤S405可以通过以下步骤实现:
步骤S601,在磁盘阵列中确定用于进行限速处理的待限速磁盘、和用于接收待限速磁盘的读写请求的目标磁盘。
这里,待限速磁盘是需要进行限速处理的磁盘,目标磁盘是当对待限速磁盘进行限速处理时,用于处理所限速的读写请求的磁盘。待限速磁盘接收到的读写请求数量大于自身能够进行有效处理的读写请求阈值,目标磁盘接收到的读写请求数量远小于自身能够进行有效处理的读写请求阈值。
本申请实施例中,待限速磁盘为磁盘阵列中的至少一个磁盘,目标磁盘为磁盘阵列中不同于待限速磁盘的至少一个磁盘。
步骤S602,当读写请求总量大于阈值时,确定待限速磁盘的溢出读写请求。
这里,上述阈值可以根据磁盘阵列中的全部磁盘的读写请求阈值确定或者根据全部磁盘的读写性能确定。举例来说,当磁盘阵列在特定时间内能够处理N条读写请求,一旦读写请求的数量大于N时,对应的磁盘即出现响应变慢等异常情况时,则可以将N确定为磁盘阵列的阈值。
溢出读写请求是指超出待限速磁盘处理能力(即待限速磁盘自身的读写请求阈值)的部分读写请求,溢出读写请求可以根据待限速磁盘的磁盘性能确定。当读写请求总量大于阈值时,在磁盘阵列中确定出待限速磁盘,并根据待限速磁盘自身的读写请求阈值,从待限速磁盘的全部读写请求中,将超出读写请求阈值的部分读写请求确定为溢出读写请求。
步骤S603,将溢出读写请求发送给目标磁盘,以使得目标磁盘对溢出读写请求进行处理。
这里,由于目标磁盘接收到的读写请求数量远小于自身能够进行有效处理的读写请求阈值,因此可以将溢出读写请求发送给目标磁盘,使得目标磁盘对溢出读写请求进行有效的处理,从而保证磁盘阵列中的每一磁盘所接收到的读写请求均可以得到有效的处理。
需要说明的是,步骤S601至步骤S603是对磁盘的读写请求进行转移的限速处理方式。当然,在另一些实施例中,还可以对磁盘进行降速处理。
请继续参照图6,步骤S405还可以通过以下步骤实现:
步骤S604,在磁盘阵列中确定用于进行限速处理的待限速磁盘。
步骤S605,当读写请求总量大于阈值时,将待限速磁盘对读写请求的响应速度降低到预设速度。
这里,当读写请求总量大于阈值时,直接对待限速磁盘进行降速,使得待限速磁盘的响应速度降低,从而提高了待限速磁盘对读写请求的响应时间,保证了待限速磁盘能够对每一读写请求进行响应。
步骤S606,按照虚拟机集群接收到的读写请求的先后顺序,采用预设速度对读写请求依次进行处理。
需要说明的是,在一些实施例中,在对磁盘阵列中的至少一个磁盘的响应速度进行限速处理,还可以既采用步骤S601至步骤S603中的对磁盘的读写请求进行转移的限速处理方式,还采用步骤S604至步骤S606中的对磁盘进行降速处理的限速处理方式,即步骤S405可以通过步骤S601至步骤S606实现。在实现的过程中,具体采用哪种限速处理方式,可以根据磁盘的性能以及磁盘的读写请求量进行选择,本申请实施例不做限定。
基于图6,图7是本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图,如图7所示,步骤S601可以通过以下步骤实现:
步骤S701,确定磁盘阵列中的每一磁盘的读写请求阈值。
这里,每一磁盘的读写请求阈值是根据对应磁盘的性能所确定的。
步骤S702,在磁盘阵列中,将读写请求量大于或等于相应读写请求阈值的磁盘确定为待限速磁盘。
这里,当读写请求量大于或等于自身的读写请求阈值时,磁盘的读写速度会变慢,因而会造成读写响应变慢,会出现虚拟机异常,业务卡顿等问题,因此,对于读写请求量大于或等于自身的读写请求阈值的磁盘需要进行限速处理。本申请实施例中将需要进行限速处理的磁盘确定为待限速磁盘。
步骤S703,将读写请求量小于相应读写请求阈值的磁盘确定为目标磁盘。
这里,目标磁盘是指当前的读写请求量较低,还可以承载除了当前需要响应的读写请求之外的其他读写请求的磁盘。
需要说明的是,上述步骤S604可以通过步骤S701和步骤S702实现。
在一些实施例中,还可以通过区分业务的繁忙时间段和空闲时间段,对虚拟机的读写请求进行合理的控制,使得云平台在大规模的时候,虚拟机能够保持相对稳定。基于图4,图8是本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图,如图8所示,步骤S405可以通过以下步骤实现:
步骤S801,确定繁忙时间段和空闲时间段。
这里,繁忙时间段和空闲时间段形成连续的时间段,例如,可以将一天中的早上8点到晚上9点确定为繁忙时间段,将晚上9点到第二天的早上8点确定为空闲时间段。
步骤S802,当读写请求总量大于阈值时,判断当前时刻是否位于繁忙时间段。
当判断结果为是时,则执行步骤S803;当判断结果为否时,则执行步骤S805。
步骤S803,对磁盘阵列中的至少一个磁盘的响应速度进行限速处理。
步骤S804,将经过限速处理的磁盘的标识记录于预设的目录文件中。
步骤S805,当确定出当前时刻位于空闲时间段时,从目录文件中获取经过限速处理的磁盘的标识。
步骤S806,恢复标识对应的经过限速处理的磁盘的响应速度。
这里,可以同时对目录文件中所记载的全部标识对应的磁盘进行响应速度恢复处理;也可以按照目录文件中磁盘的标识被记录的先后顺序,依次对目录文件中所记载的标识对应的磁盘进行响应速度恢复处理;也可以在目录文件中随机确定出磁盘的标识,并对确定出的标识对应的磁盘进行响应速度恢复处理;当然,也可以基于其他规则(例如磁盘的当前响应速度、磁盘的读写请求阈值等),依次从目录文件中获取磁盘的标识,并对该标识对应的磁盘进行响应速度恢复处理。
本申请实施例中,如果当前时刻处于繁忙时间段,则对磁盘阵列中的磁盘进行限速处理,如果当前时刻处理空闲时间段,则对磁盘阵列中的磁盘进行恢复处理,使得被限速处理的磁盘恢复到原始的响应速度,进而在空闲时间段对读写请求进行高效的响应,从而保证整个云平台中的虚拟机的稳定性。
请继续参照图8,在一些实施例中,方法还可以包括以下步骤:
步骤S807,确定繁忙时间段的第一读写请求数量和空闲时间段的第二读写请求数量。
步骤S808,根据第一读写请求数量和第二读写请求数量,对繁忙时间段和空闲时间段进行修改,得到修改后的繁忙时间段和修改后的空闲时间段。
这里,在得到修改后的繁忙时间段和修改后的空闲时间段之后,采用修改后的繁忙时间段和修改后的空闲时间段,替换步骤S801中的繁忙时间段和空闲时间段。因此,在对繁忙时间段和空闲时间段进行修改之后,返回继续执行步骤S801。
本申请实施例提供的磁盘读写控制方法,通过区分业务的繁忙时间段和空闲时间段,在不同的时间段内,采用不同的控制方法对虚拟机的读写请求分别进行合理的控制,如此,即使云平台在大规模的情况下,也能够保证云平台中的每一虚拟机的相对稳定。
在一些实施例中,虚拟机集群中的每一虚拟机与磁盘阵列中的任意至少一个磁盘之间具有映射关系;磁盘阵列中的磁盘包括以下至少之一:SSD、HDD和虚拟磁盘;虚拟机集群中的每一虚拟机与以下至少之一具有映射关系:SSD、HDD和虚拟磁盘。
基于图4,图9是本申请实施例提供的磁盘读写控制方法的一个可选的流程示意图,如图9所示,步骤S402可以通过以下步骤实现:
步骤S901,将与每一虚拟机具有映射关系的磁盘,确定为对应虚拟机的映射磁盘。
步骤S902,针对虚拟机集群中的每一虚拟机,获取对应虚拟机接收到的需要映射磁盘进行响应的读写请求。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
本申请实施例提供一种控制云平台中虚拟机磁盘读写(即磁盘IO)的方法,通过区分业务繁忙和空闲时段,对虚拟机的IO进行合理的控制,使云平台在大规模的时候虚拟机保持相对稳定。
本申请实施例利用监控云对虚拟机的磁盘IO进行监控,并在Openstack控制节点运行一个管理控制服务,通过设定的指标过滤需要IO控制的虚拟机,在libvirt层对虚拟机的磁盘IO进行动态调整以满足业务需求。本申请实施例的关键技术包括:虚拟机以及虚拟机磁盘数据的实时汇总;监控数据的采集;虚拟机磁盘IO调整的时机。
本申请实施例实现虚拟机磁盘IO的自适应动态控制,在产品方面主要增加一个服务管理模块,用来自适应调整虚拟机的IO,以使云平台稳定运行。
图10是本申请实施例提供的磁盘读写控制的系统架构图,如图10所示,系统架构中主要分为两层,分别是:业务层1001和基础云层1002。
业务层1001是用于实现数据监控的监控层,主要用于虚拟机和宿主机相关信息的采集,比如内存、中央处理器(CPU,Central Processing Unit)、磁盘IO等,主要通过安装在虚拟机和计算节点上面的代理(agent)进行采集,并通过监控平台对外展示各种用户关系的监控指标,监控服务使用虚拟地址(VIP,Virtual IP),在业务层后端部署多个监控服务1003,来分摊监控信息采集的请求压力,并通过分表分库解决数据库(DB,database)集群的压力。如图10所示,业务层1001包括多个监控服务1003和数据库1004,其中,监控服务1003将监控采集到的IO请求存储于数据库1004中。
基础云层1002主要是由开源的Openstack提供Iaas服务,包括控制节点1005和计算节点1006,控制节点1005上面主要部署Openstack的管理服务,计算节点主要运行虚拟机1007。其中Openstack层在控制节点1005增加了IO控制服务1008,用于控制整个云平台虚拟机的磁盘IO。
本申请实施例的方法主要包括以下几个阶段:虚拟机磁盘IO监控数据的采集、虚拟机和磁盘信息数据的汇总和虚拟机磁盘IO控制方法。
图11是本申请实施例提供的虚拟机磁盘IO监控数据采集的流程示意图,如图11所示,在虚拟机磁盘IO监控数据的采集阶段,磁盘IO数据的采集需要在虚拟机中安装代理程序1101,通过代理程序1101向监控服务上报数据,代理程序1101通过linux的磁盘数据采集命令(例如iostat命令),每隔一定时间(例如10秒)采集一次虚拟机的磁盘IO情况,然后通过RESTful类型的API上报给监控服务1102,监控服务1102根据虚拟机ID,将磁盘IO情况以键值对(K-V,key-value)的形式存入数据库1103中。虚拟机的代理程序1101采集数据上报请求都使用监控集群的VIP,使用负载均衡减轻监控采集压力。
在虚拟机和磁盘信息数据的汇总阶段,对于虚拟机磁盘IO的控制,首先需要把整个云平台的虚拟机都获取出来,以及每个虚拟机在哪台宿主机上面等详细信息均获取到。
图12是本申请实施例提供的一种IO控制服务的模块图,如图12所示,主要包括以下几个模块:OpenStack平台中的nova组件的客户端(nova client)1201、监控客户端(monitor client)1202、虚拟机控制器(VM controller)1203、计算节点管理器(Hostrunner)1204、数据库驱动(DB driver)1205、IO管理器(IO manager)1206。
其中,nova客户端1201,是与nova组件进行连接的客户端,主要用于获取云平台环境中的所有计算节点。
监控客户端1202,是与监控服务进行连接的客户端,主要用户获取各个虚拟机的磁盘IO的采集数据,用来作为虚拟机IO调整的依据。
虚拟机控制器1203,是IO控制服务管理器,主要用来周期性的检测业务繁忙时间段和业务空闲时间段,并且使用计算节点管理器1204管理每一个计算节点。
计算节点管理器1204,用来管理每一个计算节点,主要用来汇总每个计算节点上面的虚拟机以及磁盘,并把这些数据存入到数据库模块中。
数据库驱动1205,是数据库模块,主要用来存储各个计算节点管理器1204汇总过来的虚拟机信息,这个模块支持各种驱动:内存、redis、mysql等,也就是说,可以把数据存在内存中、redis以及数据库mysql中,可以默认使用的是内存。
IO管理器1206,是对虚拟机进行实际IO控制的模块,通过virsh命令设置虚拟机磁盘IO。
需要说明的是,在一些实施例中,虚拟机和磁盘数量的实时汇总主要是计算节点管理器1204和数据库驱动1205两个模块完成。
图13是本申请实施例提供的虚拟机和磁盘数量实时汇总的流程示意图,如图13所示,包括以下步骤:
步骤S1301,IO控制服务在启动的时候首先会通过虚拟机控制器1203通过nova客户端1201向openstack的nova组件获取所有的计算节点。
步骤S1302,根据获取的计算节点数量生成对应个数的计算节点管理器1204,每个计算节点管理器1204是一个单独的线程,用来管理每一个计算节点。
步骤S1303,每个计算节点管理器1204每5分钟同步汇总一次此计算节点上面的虚拟机个数和虚拟机所有磁盘个数。
在一些实施例中,还可以远程连接到计算节点,通过virsh命令行获取本计算节点上面所有的虚拟机,并与数据库中之前记录的此计算节点的虚拟机个数进行对比,获取虚拟机新增和删除列表,根据新增和删除列表修改数据库中的虚拟机记录,并且本主机线程的内存中也保留一份新增和删除列表。
步骤S1304,遍历主机线程的内存中的虚拟机列表,对每个虚拟机通过远程连接到计算节点,然后virsh列出此虚拟机的所有磁盘信息,并跟数据库中之前记录的磁盘信息进行对比,获取虚拟机磁盘的新增和删除列表,据此修改数据库中磁盘的记录。
通过以上步骤就完成了各个计算节点虚拟机和虚拟机磁盘数据的汇总。
在虚拟机磁盘IO控制方法阶段,磁盘IO的控制需要设置指标,比说在什么时间段,超过了多少时,需要进行IO的限速控制。
这里,主要使用两个指标,一个是空闲时间段和繁忙时间段,另一个是当虚拟机磁盘IO超过一个指定的阈值时进行IO的限速。而这两个指标在不同的环境下是不一样,需要观察一段时间内这套云平台上面跑的业务。一般业务的繁忙时间段是白天,晚上业务相对比较空闲,比如可以设置繁忙时间段是早上9点到晚上8点,其它的就是空闲时间段。举例来说,一套私有云环境在虚拟机每秒800个IO请求的时候,Ceph集群还比较稳定,但是,再高于此值时,Ceph集群就出现响应慢等情况,那么,虚拟机的IO阈值就设置为每秒800个IO请求。
在设置了指标之后,下面说明磁盘IO的控制流程,图14是本申请实施例提供的磁盘IO的控制流程示意图,如图14所示,方法包括以下步骤:
步骤S1401,判断当前的时间是否属于繁忙时间段。
如果判断结果为是,则执行步骤S1402;如果判断结果为否,则执行步骤S1408。
步骤S1402,如果是繁忙时间段,通过数据库获取所有的在线的虚拟机。
步骤S1403,遍历每一个虚拟机,判断这个虚拟机的磁盘IO是否超过了设置的阈值。
这里,判断方法如下:通过监控客户端向监控服务获取这个虚拟机所有盘最近5次上报的磁盘IO记录,然后每次对所有的盘进行累加,算出虚拟机整个磁盘IO,如果超过了阈值,就要进行IO控制。
如果判断结果为是,则执行步骤S1404;如果判断结果为否,则执行步骤S1405。
步骤S1404,将当前的虚拟机加入到限速队列。
步骤S1405,将限速队列中的每一个限速虚拟机远程连接到计算节点,进行限速。
步骤S1406,创建临时文件进行限速记录。
这里,磁盘IO控制通过查找数据库,找出这个虚拟机所在的计算节点和虚拟机所有的磁盘,然后通过远程连接到计算节点,通过virsh命令限制对虚拟机的每个盘进行IO限速,并对限速的虚拟机以及磁盘以文件形式记录到一个临时目录中,例如,存储时的文件名和内容可以是:{计算节点名字}_{虚拟机id}_{磁盘id}。通过这个记录可以在业务空闲时对之前做过IO限速的虚拟机进行还原操作。
步骤S1407,判断5分钟循环定时器是否到时。
如果到时,返回继续执行步骤S1401,循环触发虚拟机IO控制。也就是说,本申请实施例中,虚拟机控制器每隔5分钟触发一次虚拟机IO控制。
步骤S1408,如果是空闲时间段,遍历步骤S1405中IO限速记录的临时目录。
步骤S1409,对临时目录中的文件进行解析,解析出所需要恢复IO限速的计算节点、虚拟机、磁盘信息。
步骤S1410,远程连接计算节点,恢复限速。
步骤S1411,删除限速记录文件。
在上述实施例中,设置了两个指标进行IO控制,不过这两个指标有时候需要动态修改,比如繁忙时间段要调整,从9点到20点改成从10点到21点。本申请实施例提供一个RESTful接口的网络服务(web server),能够接受更改请求,比如修改虚拟机控制器中内存里的指标。基于图12,如图15所示,是本申请实施例提供的另一种IO控制服务的模块图,在图12的模块图的基础上,图15的IO控制服务模块图增加了一个网络服务模块1501。其中,网络服务模块1501提供RESTful API,以接受修改指标时间段和阈值请求,然后通过请求解析处理,用新值把虚拟机控制器1203中内存中的旧值替换掉,就达到了动态替换指标的功能,如此,实现了云平台虚拟机磁盘IO的控制。
本申请实施例中,利用监控云对虚拟机的磁盘IO进行监控,并在Openstack控制节点运行一个管理控制服务,来过滤需要IO控制的虚拟机,并在libvirt层对虚拟机的磁盘IO进行动态调整以满足业务需求,同时提供RESTful API,能够动态调整IO限速指标,这样能提高整个云平台的稳定性,从而在私有云市场上提升服务质量,增强核心竞争力。
下面继续说明本申请实施例提供的磁盘读写控制装置354实施为软件模块的示例性结构,在一些实施例中,如图3所示,存储在存储器350的磁盘读写控制装置354中的软件模块可以是服务器300中的磁盘读写控制装置,包括:
第一确定模块3541,用于确定云平台中的虚拟机集群和与所述虚拟机集群对应的磁盘阵列;
获取模块3542,用于获取预设时间段内所述虚拟机集群中的每一虚拟机接收到的需要所述磁盘阵列中的磁盘进行响应的读写请求;
第二确定模块3543,用于根据每一虚拟机接收到的所述读写请求,确定对应虚拟机的读写请求数量;
第三确定模块3544,用于根据每一虚拟机的所述读写请求数量,确定所述虚拟机集群的读写请求总量;
限速处理模块3545,用于当所述读写请求总量大于阈值时,对所述磁盘阵列中的至少一个磁盘的响应速度进行限速处理。
在一些实施例中,所述限速处理模块还用于:在所述磁盘阵列中确定用于进行所述限速处理的待限速磁盘、和用于接收所述待限速磁盘的读写请求的目标磁盘;当所述读写请求总量大于阈值时,确定所述待限速磁盘的溢出读写请求;将所述溢出读写请求发送给所述目标磁盘,以使得所述目标磁盘对所述溢出读写请求进行处理。
在一些实施例中,所述限速处理模块还用于:确定所述磁盘阵列中的每一磁盘的读写请求阈值;在所述磁盘阵列中,将所述读写请求量大于或等于相应读写请求阈值的磁盘确定为所述待限速磁盘;将所述读写请求量小于相应读写请求阈值的磁盘确定为所述目标磁盘。
在一些实施例中,所述限速处理模块还用于:在所述磁盘阵列中确定用于进行所述限速处理的待限速磁盘;对应地,所述限速处理模块还用于:当所述读写请求总量大于阈值时,将所述待限速磁盘对所述读写请求的响应速度降低到预设速度;按照所述虚拟机集群接收到的读写请求的先后顺序,采用所述预设速度对所述读写请求依次进行处理。
在一些实施例中,所述装置还包括:处理模块,用于当确定出当前时刻位于繁忙时间段时,对所述磁盘阵列中的至少一个磁盘的响应速度进行限速处理;记录模块,用于将经过所述限速处理的磁盘的标识记录于预设的目录文件中。
在一些实施例中,所述装置还包括:标识获取模块,用于当确定出当前时刻位于空闲时间段时,从所述目录文件中获取经过所述限速处理的磁盘的标识;恢复模块,用于恢复所述标识对应的经过限速处理的磁盘的响应速度。
在一些实施例中,所述装置还包括:第六确定模块,用于确定所述繁忙时间段的第一读写请求数量和所述空闲时间段的第二读写请求数量;修改模块,用于根据所述第一读写请求数量和所述第二读写请求数量,对所述繁忙时间段和所述空闲时间段进行修改。
在一些实施例中,所述虚拟机集群中的每一虚拟机与所述磁盘阵列中的任意至少一个磁盘之间具有映射关系;所述获取模块还用于:将与每一虚拟机具有所述映射关系的磁盘,确定为对应虚拟机的映射磁盘;针对所述虚拟机集群中的每一虚拟机,获取对应虚拟机接收到的需要所述映射磁盘进行响应的读写请求。
在一些实施例中,所述磁盘阵列中的磁盘包括以下至少之一:SSD、HDD和虚拟磁盘;所述虚拟机集群中的每一虚拟机与以下至少之一具有映射关系:SSD、HDD和虚拟磁盘。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图4示出的方法。
在一些实施例中,存储介质可以是计算机可读存储介质,例如,铁电存储器(FRAM,Ferromagnetic Random Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(CD-ROM,Compact Disk-Read Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (10)
1.一种磁盘读写控制方法,其特征在于,包括:
确定云平台中的虚拟机集群和与所述虚拟机集群对应的磁盘阵列;
获取预设时间段内所述虚拟机集群中的每一虚拟机接收到的需要所述磁盘阵列中的磁盘进行响应的读写请求;
根据每一虚拟机接收到的所述读写请求,确定对应虚拟机的读写请求数量;
根据每一虚拟机的所述读写请求数量,确定所述虚拟机集群的读写请求总量;
当所述读写请求总量大于阈值时,确定出当前时刻位于繁忙时间段,对所述磁盘阵列中的至少一个磁盘的响应速度进行限速处理,并将经过所述限速处理的磁盘的标识记录于预设的目录文件中;
当所述读写请求总量小于或等于所述阈值时,确定出当前时刻位于空闲时间段时,从所述目录文件中获取经过所述限速处理的磁盘的标识,并恢复所述标识对应的经过限速处理的磁盘的响应速度。
2.根据权利要求1所述的方法,其特征在于,所述当所述读写请求总量大于阈值时,对所述磁盘阵列中的至少一个磁盘进行限速处理,包括:
在所述磁盘阵列中确定用于进行所述限速处理的待限速磁盘、和用于接收所述待限速磁盘的读写请求的目标磁盘;
当所述读写请求总量大于阈值时,确定所述待限速磁盘的溢出读写请求;
将所述溢出读写请求发送给所述目标磁盘,以使得所述目标磁盘对所述溢出读写请求进行处理。
3.根据权利要求2所述的方法,其特征在于,所述在所述磁盘阵列中确定用于进行所述限速处理的待限速磁盘、和用于接收所述待限速磁盘的读写请求的目标磁盘,包括:
确定所述磁盘阵列中的每一磁盘的读写请求阈值;
在所述磁盘阵列中,将所述读写请求量大于或等于相应读写请求阈值的磁盘确定为所述待限速磁盘;
将所述读写请求量小于相应读写请求阈值的磁盘确定为所述目标磁盘。
4.根据权利要求1所述的方法,其特征在于,所述当所述读写请求总量大于阈值时,对所述磁盘阵列中的至少一个磁盘进行限速处理,包括:
在所述磁盘阵列中确定用于进行所述限速处理的待限速磁盘;
当所述读写请求总量大于阈值时,将所述待限速磁盘对所述读写请求的响应速度降低到预设速度;
按照所述虚拟机集群接收到的读写请求的先后顺序,采用所述预设速度对所述读写请求依次进行处理。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述繁忙时间段的第一读写请求数量和所述空闲时间段的第二读写请求数量;
根据所述第一读写请求数量和所述第二读写请求数量,对所述繁忙时间段和所述空闲时间段进行修改。
6.根据权利要求1所述的方法,其特征在于,所述虚拟机集群中的每一虚拟机与所述磁盘阵列中的任意至少一个磁盘之间具有映射关系;
所述获取预设时间段内所述虚拟机集群中的每一虚拟机接收到的需要所述磁盘阵列中的磁盘进行响应的读写请求,包括:
将与每一虚拟机具有所述映射关系的磁盘,确定为对应虚拟机的映射磁盘;
针对所述虚拟机集群中的每一虚拟机,获取对应虚拟机接收到的需要所述映射磁盘进行响应的读写请求。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述磁盘阵列中的磁盘包括以下至少之一:SSD、HDD和虚拟磁盘;
所述虚拟机集群中的每一虚拟机与以下至少之一具有映射关系:SSD、HD D和虚拟磁盘。
8.一种磁盘读写控制装置,其特征在于,包括:
第一确定模块,用于确定云平台中的虚拟机集群和与所述虚拟机集群对应的磁盘阵列;
获取模块,用于获取预设时间段内所述虚拟机集群中的每一虚拟机接收到的需要所述磁盘阵列中的磁盘进行响应的读写请求;
第二确定模块,用于根据每一虚拟机接收到的所述读写请求,确定对应虚拟机的读写请求数量;
第三确定模块,用于根据每一虚拟机的所述读写请求数量,确定所述虚拟机集群的读写请求总量;
限速处理模块,用于当所述读写请求总量大于阈值时,确定出当前时刻位于繁忙时间段,对所述磁盘阵列中的至少一个磁盘的响应速度进行限速处理,并将经过所述限速处理的磁盘的标识记录于预设的目录文件中;当所述读写请求总量小于或等于所述阈值时,确定出当前时刻位于空闲时间段时,从所述目录文件中获取经过所述限速处理的磁盘的标识,并恢复所述标识对应的经过限速处理的磁盘的响应速度。
9.一种磁盘读写控制设备,其特征在于,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010122317.8A CN111352592B (zh) | 2020-02-27 | 2020-02-27 | 磁盘读写控制方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010122317.8A CN111352592B (zh) | 2020-02-27 | 2020-02-27 | 磁盘读写控制方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352592A CN111352592A (zh) | 2020-06-30 |
CN111352592B true CN111352592B (zh) | 2021-04-20 |
Family
ID=71195877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010122317.8A Active CN111352592B (zh) | 2020-02-27 | 2020-02-27 | 磁盘读写控制方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111352592B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112671666B (zh) * | 2020-11-16 | 2022-05-27 | 新华三大数据技术有限公司 | Io处理方法及装置 |
CN112783441B (zh) * | 2021-01-08 | 2023-08-01 | 中国银联股份有限公司 | 一种调整虚拟机磁盘读写限速的方法、装置及计算设备 |
CN116610266B (zh) * | 2023-07-18 | 2023-10-10 | 中移(苏州)软件技术有限公司 | 虚拟机磁盘读写性能的调整方法、装置及相关设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000276305A (ja) * | 1999-03-23 | 2000-10-06 | Nec Corp | ディスクアレイ装置 |
CN107728954A (zh) * | 2017-11-06 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种磁盘运行状态的控制方法、装置及设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504594B (zh) * | 2009-03-13 | 2011-01-05 | 杭州华三通信技术有限公司 | 一种数据存储方法和装置 |
JP5862589B2 (ja) * | 2013-03-26 | 2016-02-16 | 日本電気株式会社 | ディスクアレイ装置 |
CN105528053A (zh) * | 2015-12-11 | 2016-04-27 | 曙光信息产业股份有限公司 | 分布式系统的管理方法和装置 |
CN106155931B (zh) * | 2016-06-30 | 2020-07-07 | 百度在线网络技术(北京)有限公司 | 一种磁盘读限速的方法和装置 |
CN108920249B (zh) * | 2018-05-08 | 2021-10-08 | 广东睿江云计算股份有限公司 | 一种基于多主机多虚拟机系统的限速方法 |
CN110046026B (zh) * | 2019-04-22 | 2020-05-12 | 无锡华云数据技术服务有限公司 | 云主机指定虚拟磁盘限速方法、计算设备及云平台 |
-
2020
- 2020-02-27 CN CN202010122317.8A patent/CN111352592B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000276305A (ja) * | 1999-03-23 | 2000-10-06 | Nec Corp | ディスクアレイ装置 |
CN107728954A (zh) * | 2017-11-06 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种磁盘运行状态的控制方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111352592A (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10795905B2 (en) | Data stream ingestion and persistence techniques | |
US10691716B2 (en) | Dynamic partitioning techniques for data streams | |
US10564870B1 (en) | Placing data storage volumes | |
US9460185B2 (en) | Storage device selection for database partition replicas | |
US9276959B2 (en) | Client-configurable security options for data streams | |
KR102013004B1 (ko) | 확장 가능한 환경에서의 동적 로드 밸런싱 기법 | |
US9794135B2 (en) | Managed service for acquisition, storage and consumption of large-scale data streams | |
US20170235645A1 (en) | Chained replication techniques for large-scale data streams | |
US10635644B2 (en) | Partition-based data stream processing framework | |
US9489443B1 (en) | Scheduling of splits and moves of database partitions | |
US9471585B1 (en) | Decentralized de-duplication techniques for largescale data streams | |
CN111352592B (zh) | 磁盘读写控制方法、装置、设备及计算机可读存储介质 | |
KR102013005B1 (ko) | 확장 가능한 환경에서의 파티션 관리 기법 | |
US8595364B2 (en) | System and method for automatic storage load balancing in virtual server environments | |
Lai et al. | Towards a framework for large-scale multimedia data storage and processing on Hadoop platform | |
JP2016027476A (ja) | 規模変更可能なデータ記憶サービスを実装するためのシステムおよび方法 | |
CA2930026A1 (en) | Data stream ingestion and persistence techniques | |
US10067704B2 (en) | Method for optimizing storage configuration for future demand and system thereof | |
US9984139B1 (en) | Publish session framework for datastore operation records | |
CN114090580A (zh) | 数据处理方法、装置、设备、存储介质及产品 | |
CN202872848U (zh) | 一种基于云信息云计算服务的云存储终端设备 | |
US10216534B1 (en) | Moving storage volumes for improved performance | |
JP6878369B2 (ja) | ボリューム配置管理装置、ボリューム配置管理方法、及びボリューム配置管理プログラム | |
US10348596B1 (en) | Data integrity monitoring for a usage analysis system | |
US10706073B1 (en) | Partitioned batch processing for a usage analysis system |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40024060 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |