一种基于虚拟机的数据传输方法及相关装置
技术领域
本申请涉及云平台技术领域,尤其涉及一种基于虚拟机的数据传输方法及相关装置。
背景技术
随着云平台的大规模应用,用户对虚拟机上所部署的云数据库性能的要求日益增长。
现有技术中,虚拟机的磁盘通常采用半虚拟化磁盘(virtio-blk)模式,在该模式下,虚拟机到分布式文件系统(ceph)的输入输出(Input/Output,IO)路径较长,具体如图1所示,虚拟机上部署的云数据库进行一次读写操作时,需要经过虚拟机文件系统,虚拟机的前端驱动(virtio-blk),再到宿主机上的后端驱动(virtio-backend),最后通过宿主机上ceph的块存储接口(librbd)成功访问ceph进行读写操作。
由于现有技术中虚拟机访问ceph的IO路径需要贯穿虚拟机和宿主机,路径过长导致云数据库的读写很慢。
发明内容
本申请实施例提供了一种基于虚拟机的数据传输方法及相关装置,能够令虚拟机直接访问ceph,能够有效提高虚拟机上云数据库的读写效率,即提高了云数据库的每分钟交易次数(Transactions Per Minute,TPM)。
本申请第一方面提供一种基于虚拟机的数据传输方法,所述虚拟机包括网络块设备(Network Block Device,NBD)以及块存储接口,所述块存储接口与分布式文件系统ceph具有对应关系,所述数据传输方法包括:
获取数据读写请求;
根据所述数据读写请求,通过所述NBD向所述块存储接口发送所述数据读写请求;
通过所述块存储接口向所述ceph发送所述数据读写请求,以使所述ceph根据所述数据读写请求与所述虚拟机建立通信连接;
当所述虚拟机访问所述ceph时,对所述ceph进行数据读写操作。
本申请第二方面提供一种数据传输装置,所述数据传输装置包括网络块设备NBD以及块存储接口,所述块存储接口与分布式文件系统ceph具有对应关系,所述数据传输装置还包括:
第一获取模块,用于获取数据读写请求;
第一发送模块,用于根据所述数据读写请求,通过所述NBD向所述块存储接口发送所述数据读写请求;
第二发送模块,用于通过所述块存储接口向所述ceph发送所述数据读写请求,以使所述ceph根据所述数据读写请求与所述虚拟机建立通信连接;
读写模块,用于当所述虚拟机访问所述ceph时,对所述ceph进行数据读写操作。
本申请第三方面提供一种网络设备,该网络设备部署有虚拟机,该虚拟机包括网络块设备NBD以及块存储接口,块存储接口与分布式文件系统ceph具有对应关系,该网络设备还包括存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序,包括如下步骤:
获取数据读写请求;
根据所述数据读写请求,通过所述NBD向所述块存储接口发送所述数据读写请求;
通过所述块存储接口向所述ceph发送所述数据读写请求,以使所述ceph根据所述数据读写请求与所述虚拟机建立通信连接;
当所述虚拟机访问所述ceph时,对所述ceph进行数据读写操作;
所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
本申请第四方面提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如第一方面所述的数据传输方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例提供了一种基于虚拟机的数据传输方法及相关装置,其中,该方法中的虚拟机包括NBD和块存储接口,该块存储接口与ceph相对应,因此,虚拟机中的云数据库通过NBD、块存储接口所组成的IO路径直接访问ceph以进行读写操作,无需通过宿主机进行转接,能够有效提高云数据库的读写效率,即提高了云数据库的TPM值。
附图说明
图1为现有技术中虚拟机云数据库访问ceph的IO路径示意图;
图2为本申请实施例提供的一种基于虚拟机的数据传输方法的一个实施例的流程示意图;
图3为虚拟机内部NBD的结构示意图;
图4为虚拟机内部数据库程序、磁盘挂载程序和CPU的示意图;
图5为本实施例中VCPU绑定程序的CPU分配过程的一个示意图;
图6为本实施例中VCPU绑定程序的CPU分配过程的另一示意图;
图7为本申请实施例虚拟机云数据库访问ceph的IO路径示意图;
图8为本申请实施例提供的一种数据传输装置的一个实施例的结构示意图;
图9为本申请实施例提供的一种数据传输装置的另一个实施例的结构示意图;
图10为本申请实施例提供的一种网络设备的一个实施例的结构示意图。
具体实施方式
本申请实施例提供了一种基于虚拟机的数据传输方法及相关装置,能够令虚拟机直接访问ceph,能够有效提高虚拟机上云数据库的读写效率,即提高了云数据库的TPM值。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本申请应用于云平台技术场景,比如基于云计算管理平台(Openstack)的私有云方案。更进一步地,本申请具体适用于使用ceph的云数据库等产品场景中。云计算平台包括以数据存储为主的存储型云平台,以数据处理为主的计算型云平台以及计算和数据存储处理兼顾的综合云计算平台。
由于虚拟机上磁盘采用virtio-blk模式,当部署于虚拟机上的云数据库进行一次读写操作时,需要经过虚拟机文件系统,虚拟机的前端驱动,再到宿主机上的后端驱动,最后通过宿主机上块存储接口成功访问分布式文件系统(即存储)进行读写操作。由于该IO路径过长,导致云数据库读写很慢。
因此,本申请实施例提供了一种基于虚拟机的数据传输方法,该方法能够令虚拟机直接访问ceph,能够有效提高虚拟机上云数据库的读写效率,即提高了云数据库的TPM值。
请参阅图2,图2为本申请实施例提供的一种基于虚拟机的数据传输方法的一个实施例,需要说明的是,本实施例中的虚拟机包括网络块设备NBD以及块存储接口,块存储接口与分布式文件系统ceph具有对应关系。该实施例包括:
201、获取数据读写请求;
本实施例中,当用户要启动虚拟机上的云数据库以进行数据读写操作时,可以向虚拟机输入数据读写请求。应理解,数据读写请求可以为读取请求或写入请求,由于用户的需求不同,其可以向云数据库读取数据或写入数据,因此,本实施例中的数据读写请求可以为数据读取请求或数据写入请求中的任意一种,此处不做具体限制。
202、根据数据读写请求,通过NBD向块存储接口发送数据读写请求;
虚拟机上所部署的云数据库在接收到数据读写请求后,将该数据读写请求发送至NBD。可以理解的是,NBD包括本地块设备、NBD客户端以及NBD服务端,云数据库将数据读写请求发送本地块设备后,该请求依次通过本地块设备、NBD客户端以及NBD服务端转发至块存储接口。
203、通过块存储接口向ceph发送数据读写请求,以使ceph根据数据读写请求与虚拟机建立通信连接;
由于位于虚拟机上的块存储接口与ceph具备对应关系,虚拟机可以通过该块存储接口向ceph发送数据读写请求,当ceph响应于数据读写请求后,则与虚拟机建立通信连接,以进行数据交互。
204、当虚拟机访问ceph时,对ceph进行数据读写操作。
虚拟机与ceph之间的通信连接建立后,虚拟机可以成功访问ceph,对ceph进行与数据读写请求相对应的数据读取操作或数据写入操作。
本实施例虚拟机中的云数据库通过NBD、块存储接口所组成的IO路径直接访问ceph以进行读写操作,无需通过宿主机进行转接,能够有效提高云数据库的读写效率,即提高了云数据库的TPM值。
可选的,NBD中的本地块设备为虚拟机通过NBD将ceph的磁盘挂载至虚拟机上所得到的块设备。需要说明的是,在虚拟机启动的时候,会启动内置于虚拟机的磁盘挂载程序。该程序启动后,虚拟机可将ceph预先分配的一块磁盘在特定镜像的协助下,通过NBD方式挂载至虚拟机内部,使得虚拟机可以直接访问ceph。
为了便于理解,以下将结合图3对本实施例中虚拟机内部NBD的结构进行具体说明,图3为虚拟机内部NBD的结构示意图,如图3所示,由于创建虚拟机的镜像内置磁盘挂载程序,镜像同时对外暴露接口,当用户启动虚拟机时,可以通过接口触发虚拟机的挂载动作。当虚拟机基于NBD方式进行磁盘挂载时,可以根据ceph的磁盘动态创建得到本地块设备,在虚拟机内部可以呈现为/dev/nbd。由于虚拟机基于NBD方式进行磁盘挂载,故在虚拟机内部构建了NBD的基本框架,即本地块设备、NBD客户端、NBD服务端,且在NBD服务端上还设置有指向ceph的块存储接口,如librbd。可以理解的是,当云数据库接收到数据读写请求时,虚拟机可以通过NBD间接调用librbd完成对ceph的访问,如图3中的箭头(IO路径)所示,因此,本实施例中的虚拟机可以直接访问ceph完成数据读写操作,而不需要经过宿主机,提高了云数据库的读写速度。
应理解,如图4所示,对虚拟机而言,数据库程序401和磁盘挂载程序402都是运行在虚拟机内的应用程序,二者之所以能够执行,是靠调度程序403调度到虚拟机上的中央处理器(Central Processing Unit,CPU)404上执行的。对于调度程序403而言,二者的地位是均等的普通程序。然而,当云数据库负载压力上升的时候,会导致数据库程序401和磁盘挂载程序402争抢CPU404的情况。
如数据库程序401抢占到CPU404的资源而磁盘挂载程序402未抢占到该资源,则会导致云数据库的读写操作无法落盘。又如磁盘挂载程序402抢占到CPU404而数据库程序401未能抢占到该资源,则会导致数据库操作被中止。总之,这两种情况都会导致数据库的TPM剧烈下降。
因此,为了解决程序之间的CPU的分配问题,基于图2所对应的实施例,本申请实施例提供的基于虚拟机的数据传输方法的一个可选实施例,该方法还包括:
若第一中央处理器CPU使用率大于或等于预置第一阈值,从虚拟机的CPU中获取预置第一子CPU,第一CPU使用率与磁盘挂载相对应;
根据预置第一子CPU进行磁盘挂载;
若第二CPU使用率大于或等于预置第二阈值,且第一CPU使用率小于预置第一阈值,从预置第一子CPU中获取预置第二子CPU,第二CPU使用率与云数据库相对应;
根据预置第二子CPU确定云数据库的存储空间。
本实施例中,虚拟机内置CPU自适应绑定程序,为方便理解,以下对CPU绑定进行说明。通常虚拟机内部部署有CPU,需要说明的是,该CPU是一个较大的框架,其包含多个子CPU。CPU绑定即将多个子CPU分配至各个程序,使得每个程序都可以在对应分配的子CPU上运行,提高程序对CPU资源的使用效率,实现虚拟机内部CPU资源的优化利用。
当虚拟机的云数据库启动后,会自动启动该虚拟机CPU(VCPU)绑定程序。为了便于理解,以下将结合图5和图6对本实施中VCPU绑定程序的CPU分配过程进行说明,图5为本实施例中VCPU绑定程序的CPU分配过程的一个示意图,图6为本实施例中VCPU绑定程序的CPU分配过程的另一示意图。
如图5所示,由于数据库程序501依赖于磁盘挂载程序502,因此,磁盘挂载程序502需要优先保证。当VCPU绑定程序504判断磁盘挂载程序502的第一CPU使用率大于或等于预置第一阈值时,则在CPU中隔离出第一子CPU505(图5中虚线表示的CPU)供磁盘挂载程序502专有,不允许数据库程序501抢占,图5中还示出了调度程序503。
如图6所示,当数据库程序更急需CPU资源时,即VCPU绑定程序604判断数据库程序601的第二CPU使用率大于或等于预置第二阈值,且磁盘挂载程序602的第一CPU使用率小于预置第一阈值时,则从第一子CPU(图6中三个虚线表示的CPU)中隔离出第二子CPU605给数据库程序601使用,即第二子CPU605可额外用于供云数据库运行,进而支持云数据库的存储空间,图6中还示出了调度程序603。
本实施例通过VCPU绑定程序,实时动态调整磁盘挂载程序的CPU使用情况,合理分配磁盘挂载程序和数据库程序的CPU占比,使得数据运行速度和存储能力有效协调,有效的提高了云数据库的TPM值,提高了云数据库的可用性。
以下以一个应用例对本申请实施例提供的一种数据传输方法进行进一步的介绍,该应用例包括:
当云平台侦测到用户需要使用虚拟机的云数据库后,则启动虚拟机,虚拟机启动的同事可以启动虚拟机内置的磁盘挂载程序,需要说明的是,此处虚拟机为现有的虚拟机结构,当磁盘挂载程序启动后,可以在ceph中分配一块磁盘,在特定镜像的协助下,将该磁盘通过磁盘挂载程序挂载至虚拟机内部,因此,则得到了具有NBD结构的新虚拟机。NBD在新的虚拟机内部所呈现的结构分为四个部分,分别为本地块设备、NBD客户端、NBD服务端和块存储接口,其中,该块存储接口与ceph相对应,因此,在该新虚拟机的基础上,当用户在该新虚拟机启动云数据库时(即需要通过云数据库调用数据时),云数据库可以通过由本地块设备、NBD客户端、NBD服务端和块存储接口依次所构成的IO路径直达ceph,成功访问ceph并进行数据读写操作。故本应用例可以有效的缩短虚拟机的IO路径,使得云数据库有效提高读写效率,进而提高数据库的可用性。
然而,由于数据库程序和磁盘挂载程序均会占用一定的CPU资源,为了适应性调配两个程序的CPU资源使用率,防止程序之间发生抢占CPU资源的情况导致读写操作受阻,因此,虚拟机还内置有VCPU绑定程序,具体的,该程序可以实时获取数据库程序和磁盘挂载程序的CPU使用率,当该程序判断磁盘挂载程序的CPU使用率大于或等于预置第一阈值时,则在CPU中隔离出特定部分CPU供磁盘挂载程序专有,不允许数据库程序抢占。当程序判断数据库程序的CPU使用率大于或等于预置第二阈值,且磁盘挂载程序的CPU使用率小于预置第一阈值时,则从上述特定部分CPU中隔离出一部分CPU给数据库程序使用,进而完成对两个程序的CPU资源之间的动态调节,能够合理分配数据库程序和磁盘挂载程序的CPU占比,有效规划了云数据库中各个应用程序,能很好的保证数据库繁忙情况下的TPM。
本申请实施例通过两方面提高了云数据库的性能:
(1)如图7所示,通过磁盘挂载构建了一种新的虚拟机结构,该虚拟机包括NBD和块存储接口,该块存储接口与ceph相对应,因此,虚拟机中的云数据库通过NBD、块存储接口所组成的IO路径直接访问ceph以进行读写操作,无需通过宿主机进行转接,能够有效提高云数据库的读写效率,即提高了云数据库的TPM值。
(2)虚拟机内置VCPU绑定技术,有效规划了云数据库中各个应用程序,能很好的保证数据库繁忙情况下的TPM。
以上是对本申请提供的一种基于虚拟机的数据传输方法进行的详细说明,以下将对本申请提供的一种数据传输装置的结构和连接关系进行介绍,图8为本申请实施例提供的一种数据传输装置的一个实施例的结构示意图,请参阅图8,该实施例包括:
第一获取模块801,用于获取数据读写请求;
第一发送模块802,用于根据数据读写请求,通过NBD向块存储接口发送数据读写请求;
第二发送模块803,用于通过块存储接口向ceph发送数据读写请求,以使ceph根据数据读写请求与虚拟机建立通信连接;
读写模块804,用于当虚拟机访问ceph时,对ceph进行数据读写操作。
更进一步地,NBD包括本地块设备、NBD客户端以及NBD服务端,其中,本地块设备为通过NBD将ceph的磁盘挂载至虚拟机上所得到的块设备。
可选的,基于图8对应的实施例,本申请实施例提供的一种数据传输装置的一个可选实施例,请参阅图9,图9为本申请实施例提供的一种数据传输装置的另一个实施例的结构示意图,该装置包括:第一获取模块901第一发送模块902、第二发送模块903和读写模块904,需要说明的是,第一获取模块901第一发送模块902、第二发送模块903和读写模块904和上述实施例中的第一获取模块801第一发送模块802、第二发送模块803和读写模块804的功能一致,此处不再赘述。
该装置还包括:
第二获取模块905,用于若第一中央处理器CPU使用率大于或等于预置第一阈值,从虚拟机的CPU中获取预置第一子CPU,第一CPU使用率与磁盘挂载相对应;
挂载模块906,用于根据预置第一子CPU进行磁盘挂载;
第三获取模块907,用于若第二CPU使用率大于或等于预置第二阈值,且第一CPU使用率小于预置第一阈值,从预置第一子CPU中获取预置第二子CPU;
确定模块908,用于根据预置第二子CPU确定云数据库的存储空间。
本实施例中的数据传输装置即为前述的虚拟机,该虚拟机包括NBD和块存储接口,该块存储接口与ceph相对应,因此,虚拟机中的云数据库通过NBD、块存储接口所组成的IO路径直接访问ceph以进行读写操作,无需通过宿主机进行转接,能够有效提高云数据库的读写效率,即提高了云数据库的TPM值。
本申请实施例还提供了一种网络设备,图10是本申请实施例提供的一种网络设备的一个实施例的结构示意图,该网络设备部署有虚拟机,虚拟机包括网络块设备NBD以及块存储接口,块存储接口与分布式文件系统ceph具有对应关系。请参阅图10,该网络设备1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessing units,CPU)1022(例如,一个或一个以上处理器)和存储器1032,一个或一个以上存储应用程序1042或数据1044的存储介质1030(例如一个或一个以上海量存储设备)。其中,存储器1032和存储介质1030可以是短暂存储或持久存储。存储在存储介质1030的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对网络设备中的一系列指令操作。更进一步地,中央处理器1022可以设置为与存储介质1030通信,在网络设备1000上执行存储介质1030中的一系列指令操作。
网络设备1000还可以包括一个或一个以上电源1026,一个或一个以上有线或无线网络接口1050,一个或一个以上输入输出接口1058,和/或,一个或一个以上操作系统1041,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由虚拟机所执行的步骤可以基于该图10所示的网络设备结构进行实现。
本申请实施例还涉及一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行以下数据传输方法:
获取数据读写请求;
根据数据读写请求,通过NBD向块存储接口发送数据读写请求;
通过块存储接口向ceph发送数据读写请求,以使ceph根据数据读写请求与虚拟机建立通信连接;
当虚拟机访问ceph时,对ceph进行数据读写操作。
更进一步地,本实施例中的NBD包括本地块设备、NBD客户端以及NBD服务端,其中,本地块设备为通过NBD将ceph的磁盘挂载至虚拟机上所得到的块设备。
更进一步地,本实施例中计算机所执行的数据传输方法还包括:
若第一中央处理器CPU使用率大于或等于预置第一阈值,从虚拟机的CPU中获取预置第一子CPU,第一CPU使用率与磁盘挂载相对应;
根据预置第一子CPU进行磁盘挂载。
更进一步地,本实施例中计算机所执行的数据传输方法还包括:
若第二CPU使用率大于或等于预置第二阈值,且第一CPU使用率小于预置第一阈值,从预置第一子CPU中获取预置第二子CPU,第二CPU使用率与云数据库相对应;
根据预置第二子CPU确定云数据库的存储空间。
在本实施例中,由于虚拟机包括NBD和块存储接口,该块存储接口与ceph相对应,因此,虚拟机中的云数据库通过NBD、块存储接口所组成的IO路径直接访问ceph以进行读写操作,无需通过宿主机进行转接,能够有效提高云数据库的读写效率,即提高了云数据库的TPM值。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。