提高虚拟机资源利用率的装置及方法制造方法及图纸

技术编号:15288044 阅读:149 留言:0更新日期:2017-05-10 12:31
本发明专利技术公开了一种提高虚拟机资源利用率的装置及方法,涉及云计算领域。该装置包括若干代理模块和一个执行模块,代理模块将原有的IO处理部分从虚拟机内移除,只通过一个单线程接收虚拟机磁盘的IO请求,转发给执行模块;执行模块启动时创建用于处理IO请求的线程池,并与每一个OSD建立链接;将代理模块发来的IO请求数据按照固定长度进行分片,对分片后的IO请求数据进行计算,计算出分片后的IO请求数据需要保存到的OSD的位置,通过已经建立的链接,将分片后的IO请求数据发送到对应的OSD上。当同一台物理机上的虚拟机增加时,系统占用的线程资源保持不变,不会因为虚拟机的增加而导致系统额外的开销,不影响虚拟机的性能。

Apparatus and method for increasing utilization ratio of virtual machine resource

The invention discloses a device and a method for increasing the utilization rate of a virtual machine resource. The apparatus includes a plurality of proxy module and an execution module, agent module of the original IO processing part from the virtual machine is removed, with only a single thread receives virtual machine disk IO request is forwarded to the execution module; execution module starts to create IO request processing thread pool, and establish links with each a OSD; data will be sent to the IO request proxy module separately according to the fixed length segment after the IO request data, calculate the patch after the IO request data to be stored to the location of the OSD, has been established through the link, will be after the IO request and sends the data to the corresponding OSD. When the virtual machine on the same physical machine increases, the thread resource of the system remains unchanged, and the overhead of the system will not be increased because of the increase of the virtual machine.

【技术实现步骤摘要】

本专利技术涉及云计算领域,具体是涉及一种提高虚拟机资源利用率的装置及方法
技术介绍
当前云计算领域大量使用了分布式存储,当分布式存储可以作为云主机后端的块存储时,通常分布式存储都要提供一个私有的客户端程序,应用程序通过存储客户端连接到存储的server端。为了提高客户端访问存储的性能,客户端程序会启用大量的线程,通过大量线程来提高访问存储的并发性。在云计算的环境下,每个虚拟机进程在连接和使用分布式存储时,都需要占用大量的线程资源和文件描述符,如图1所示。分布式存储中每块硬盘对应一个OSD(ObjectStorageDaemon,对象存储设备),一个存储容量在PB(PetaByte,千万亿字节)级别的生产环境中,磁盘的数量会有几千块,每一个存储客户端都会启用几百个线程处理IO(Input/Output,输入/输出),例如500个,同时每个client(客户端)都会和所有OSD建立连接,以保证客户端能够正常读写数据。为了提高资源的利用率,一台物理主机上会运行尽可能多的虚拟机,当虚拟机较多时,例如30个以上的虚拟机,那么占用的系统线程数就达到了30×500=15000,在进行读写操作时,操作系统会占用大量的CPU(CentralProcessingUnit,中央处理器)处理线程切换,此时会降低虚拟机的读写性能,并且随着物理机上虚拟机数目的增加,导致系统额外的开销,对虚拟机性能的影响会进一步加剧。
技术实现思路
本专利技术的目的是为了克服上述
技术介绍
的不足,提供一种提高虚拟机资源利用率的装置及方法,当同一台物理机上的虚拟机增加时,系统占用的线程资源保持不变,不会因为虚拟机的增加而导致系统额外的开销,不影响虚拟机的性能。本专利技术提供一种提高虚拟机资源利用率的装置,该装置包括若干代理模块和一个执行模块,其中,代理模块位于虚拟机内部,执行模块位于虚拟机外部;所述代理模块用于:将原有的输入/输出IO处理部分从虚拟机内移除,只通过一个单线程接收虚拟机磁盘的IO请求,然后转发给执行模块;所述执行模块用于:启动时创建用于处理IO请求的线程池,并与每一个对象存储设备OSD建立链接,用于将IO请求发送到OSD节点;将代理模块发来的IO请求数据按照固定长度进行分片,对分片后的IO请求数据进行计算,计算出分片后的IO请求数据需要保存到的OSD的位置,然后通过已经建立的链接,将分片后的IO请求数据发送到对应的OSD上。在上述技术方案的基础上,所述执行模块与每一个OSD建立传输控制协议链接。在上述技术方案的基础上,所述代理模块作为虚拟机进程的一部分,接收每个虚拟机的IO请求,但是不处理这些IO请求,也不需要连接到所有的OSD;当虚拟机需要访问存储时,代理模块将需要访问的IO请求转发到执行模块。在上述技术方案的基础上,所述执行模块启用多线程并发处理代理模块发送过来的IO请求,当同一台物理机上的虚拟机增加时,系统占用的线程资源保持不变。本专利技术还提供一种应用于上述装置的提高虚拟机资源利用率的方法,包括以下步骤:S1、在虚拟机访问存储之前,执行模块先启用执行服务,创建用于处理输入/输出IO请求的线程池,并与每一个OSD建立链接,用于将IO请求发送到OSD节点;S2、用户创建虚拟机时,生成一个虚拟机进程,虚拟机进程中包括代理模块,代理模块仅仅作为一个虚拟机进程中的一个线程存在,且代理模块对虚拟机提供的IO接口保持不变;S3、代理模块接收虚拟机的IO请求后,直接将IO请求放入队列中,代理模块将队列中的IO请求按照顺序逐一取出,发送给执行模块;S4、执行模块将代理模块发来的IO请求数据按照固定长度进行分片,对分片后的IO请求数据进行计算,计算出分片后的IO请求数据需要保存到的OSD的位置,然后通过已经建立的链接,将分片后的IO请求数据发送到对应的OSD上。在上述技术方案的基础上,步骤S1中,所述执行模块与每一个OSD建立传输控制协议链接。在上述技术方案的基础上,步骤S3中,所述代理模块作为虚拟机进程的一部分,接收每个虚拟机的IO请求,但是不处理这些IO请求,也不需要连接到所有的OSD;当虚拟机需要访问存储时,代理模块将需要访问的IO请求转发到执行模块。在上述技术方案的基础上,步骤S4中,所述执行模块启用多线程并发处理代理模块发送过来的IO请求,当同一台物理机上的虚拟机增加时,系统占用的线程资源保持不变。与现有技术相比,本专利技术的优点如下:(1)本专利技术通过在虚拟机内增加代理的方式,将多个虚拟机所需要的线程资源进行整合,减少了虚拟机所属节点的线程使用,当同一台物理机上的虚拟机增加时,系统占用的线程资源保持不变,不会因为虚拟机的增加而导致系统额外的开销,不影响虚拟机的性能。(2)每个虚拟机不再需要和每个OSD都建立网络连接,避免OSD太多时,系统资源不足的情况。(3)在存储的服务端,每个OSD只需要和每个物理主机建立一条数据传输通道,数据传输的效率会更高。附图说明图1是现有虚拟机进程在连接和使用分布式存储时占用大量线程资源和文件描述符的示意图。图2是本专利技术实施例中提高虚拟机资源利用率的装置的结构框图。具体实施方式下面结合附图及具体实施例对本专利技术作进一步的详细描述。参见图2所示,本专利技术实施例提供一种提高虚拟机资源利用率的装置,该装置包括若干代理模块和一个执行模块,其中,代理模块位于虚拟机内部,执行模块位于虚拟机外部,代理模块的逻辑相对简单,执行模块用于真正的数据处理。代理模块用于:将原有复杂的IO(input/output,输入/输出)处理部分从虚拟机内移除,只通过一个单线程接收虚拟机磁盘的IO请求,然后转发给执行模块。执行模块用于:启动时创建用于处理IO请求的线程池,并与每一个OSD建立TCP(TransmissionControlProtocol,传输控制协议)链接,用于将IO请求发送到OSD节点;将代理模块发来的IO请求数据按照固定长度进行分片,对分片后的IO请求数据进行计算,计算出分片后的IO请求数据需要保存到的OSD(ObjectStorageDaemon,对象存储设备)的位置,然后通过已经建立的链接,将分片后的IO请求数据发送到对应的OSD上。代理模块作为虚拟机进程的一部分,负责接收每个虚拟机的IO(Input/Output,输入/输出)请求,但是代理模块不再处理这些IO请求,也不需要连接到所有的OSD。当虚拟机需要访问存储时,代理模块将需要访问的IO请求转发到执行模块。执行模块一方面接收所有代理模块发送过来的IO请求,另一方面负责连接到存储后端的所有OSD。在执行模块上启用多线程并发处理代理模块发送过来的IO请求,当同一台物理机上的虚拟机增加时,系统占用的线程资源保持不变,操作系统进行线程切换的开销不会随着虚拟机的增加而增大,同时物理机上和OSD的连接数也大大减少了。本专利技术实施例还提供一种应用于上述装置的提高虚拟机资源利用率的方法,包括以下步骤:S1、启动执行服务。执行模块作为一个独立的服务存在,在虚拟机访问存储之前,需要先启用执行服务,执行服务在启动时创建用于处理IO请求的线程池,并与每一个OSD建立TCP(TransmissionControlProtocol,传输控制协议)链接,用于将IO请求发送到OSD节点。S2、创本文档来自技高网...
提高虚拟机资源利用率的装置及方法

【技术保护点】
一种提高虚拟机资源利用率的装置,其特征在于:该装置包括若干代理模块和一个执行模块,其中,代理模块位于虚拟机内部,执行模块位于虚拟机外部;所述代理模块用于:将原有的输入/输出IO处理部分从虚拟机内移除,只通过一个单线程接收虚拟机磁盘的IO请求,然后转发给执行模块;所述执行模块用于:启动时创建用于处理IO请求的线程池,并与每一个对象存储设备OSD建立链接,用于将IO请求发送到OSD节点;将代理模块发来的IO请求数据按照固定长度进行分片,对分片后的IO请求数据进行计算,计算出分片后的IO请求数据需要保存到的OSD的位置,然后通过已经建立的链接,将分片后的IO请求数据发送到对应的OSD上。

【技术特征摘要】
1.一种提高虚拟机资源利用率的装置,其特征在于:该装置包括若干代理模块和一个执行模块,其中,代理模块位于虚拟机内部,执行模块位于虚拟机外部;所述代理模块用于:将原有的输入/输出IO处理部分从虚拟机内移除,只通过一个单线程接收虚拟机磁盘的IO请求,然后转发给执行模块;所述执行模块用于:启动时创建用于处理IO请求的线程池,并与每一个对象存储设备OSD建立链接,用于将IO请求发送到OSD节点;将代理模块发来的IO请求数据按照固定长度进行分片,对分片后的IO请求数据进行计算,计算出分片后的IO请求数据需要保存到的OSD的位置,然后通过已经建立的链接,将分片后的IO请求数据发送到对应的OSD上。2.如权利要求1所述的提高虚拟机资源利用率的装置,其特征在于:所述执行模块与每一个OSD建立传输控制协议链接。3.如权利要求1所述的提高虚拟机资源利用率的装置,其特征在于:所述代理模块作为虚拟机进程的一部分,接收每个虚拟机的IO请求,但是不处理这些IO请求,也不需要连接到所有的OSD;当虚拟机需要访问存储时,代理模块将需要访问的IO请求转发到执行模块。4.如权利要求1所述的提高虚拟机资源利用率的装置,其特征在于:所述执行模块启用多线程并发处理代理模块发送过来的IO请求,当同一台物理机上的虚拟机增加时,系统占用的线程资源保持不变。5.一种应用于权利要求1所述装置的提高虚拟机资源利用率的方法,其特征在于,包括以下步骤:S...

【专利技术属性】
技术研发人员:田松王振宇
申请(专利权)人:武汉烽火信息集成技术有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1