云场景下虚机获取数据源的方法及系统与流程

文档序号:31849641发布日期:2022-10-19 00:42阅读:69来源:国知局
云场景下虚机获取数据源的方法及系统与流程

1.本发明涉及云计算技术领域,具体地说是一种云场景下虚机获取数据源的方法及系统。


背景技术:

2.随着越来越多云厂商提供云业务,在云平台上创建云服务器并进行初始化配置也有了越来越多的方法,如cloud-init,cloudbase-init以及云厂商提供的云助手等工具。无论采用哪些工具,进行云服务器初始化配置均需要获取数据源,数据源中包含每台虚机启动时需要配置的参数,一般包含虚机名称、密码、网络信息等内容。
3.常用的数据源按照数据是否可以更新分为动态数据源和静态数据源,动态数据源可以根据虚机的配置变化,获取到更新后的配置,这种数据源的提供需要平台侧运行数据源的代理服务;静态数据源则在虚机创建或者启动时就已经确定,一般无法在虚机启动后或运行时进行数据的更新。
4.动态的数据源主要采用网络的方式和串口的方式。网络的方式为在虚机内对指定ip地址发起网络数据源的访问请求,平台侧对网卡的数据包进行处理,分析数据包来源的虚机,并为该虚机提供数据源服务,因此,从这种方式上看:
5.1)此过程会产生网络流量,占用小部分网络带宽;
6.2)整体过程依赖网络协议栈,当用户创建的虚机不需要网卡,或者网络不通的情况下,数据源访问会受阻。
7.使用串口的方式则会占用ttysx,x为数字,一般占用ttys1,虚机对数据源的请求通过读写ttys1设备来实现,传统串口设备有。使用静态数据源则无法满足动态的数据源更新需求。
8.故如何在不使用到网络协议栈的情况下,能够高速地获取动态数据源是目前亟待解决的技术问题。


技术实现要素:

9.本发明的技术任务是提供一种云场景下虚机获取数据源的方法及系统,来解决如何在不使用到网络协议栈的情况下,能够高速地获取动态数据源的问题。
10.本发明的技术任务是按以下方式实现的,一种云场景下虚机获取数据源的方法,该方法具体如下:
11.在虚机所在的物理机节点(即计算节点)部署数据源代理服务组件;
12.数据源代理服务组件连接指定地址的unix socket,并对该socket的文件描述符进行读写;
13.数据源代理服务组件根据socket地址通过虚拟机管理服务组件hypervisor匹配到虚机的uuid,并根据虚机的uuid向数据源服务组件发起请求,获取到虚机的数据源数据,写入与虚机对应的socket中;
14.虚机创建时,为虚机创建一个或多个virtio-serial设备,并指定channel类型为unix socket,同时设置unix socket地址;
15.在虚机镜像内安装虚机初始化软件,在虚机初始化软件中添加新的虚拟串口读写通信模块,虚拟串口读写通信模块用于与virtio-serial设备进行通信,写操作对应控制通道,读操作对应数据通道;
16.在虚机初始化软件中增加数据源列表项和以虚拟串口读写通信模块为基础的虚机内数据源请求组件,虚机内数据源请求组件发起对指定数据源地址的请求,调用虚拟串口读写通信模块发动数据源请求,并获取请求后的数据源数据内容。
17.作为优选,数据源代理服务组件具体如下:
18.数据源代理服务组件通过查询虚拟机管理服务组件获取虚机virtio-serial驱动的channel设备和与设备对应的unix socket地址,并获取到虚机的uuid,其中,channel设备用作控制和数据二合一通道或拆分为控制通道和数据通道。
19.数据源代理服务组件接收channel设备控制通道传来的虚机发起的数据源地址请求,根据请求地址和虚机的uuid向数据源服务发起数据源获取请求;
20.数据源代理服务组件从数据源服务组件获取到返回数据后,将数据写入该虚机的channel设备的数据通道。
21.更优地,当数据源代理服务组件从channel设备数据通道接收到指定信息或指定模式的输入时,向数据通道写入指定内容,完成认证过程,确保虚机内正确识别该channel设备对接的是数据源代理服务组件。
22.作为优选,虚机创建具体如下:
23.虚机创建时,配置virtio-serial设备驱动的channel设备;
24.channel设备指定设备类型为unix,即unix socket;
25.根据虚拟机管理服务组件以及计算节点服务配置,指定设备通信的socket地址;
26.将每台虚机的用于数据源获取的channel设备配置为一个控制和数据二合一通道或者拆分为控制通道和数据通道两个通道。
27.作为优选,虚机内数据源请求组件具体如下:
28.虚机内数据源请求组件调用虚拟串口读写通信模块进行初始化,初始化时虚拟串口读写通信模块进行对虚机内vport设备的控制通道进行指定字符串或字符串模式写入,并从数据通道读取返回数据,完成认证;
29.虚机内数据源请求组件生成数据源获取请求地址,调用虚拟串口读写通信模块将请求写入控制通道;
30.虚机内数据源请求组件监听数据通道,读取控制通道发送请求地址后的数据源数据
31.虚机内数据源请求组件解析和处理收到的数据源数据,以虚机初始化软件接收的格式或对象返回调用方,获取数据源。
32.更优地,虚拟机管理服务组件还具有如下作用:
33.根据虚机创建时的虚机定义,为虚机创建带有channel设备类型为unix socket的控制通道和数据通道;
34.为数据源代理服务组件提供虚机定义查询,用于匹配unix socket地址与虚机
uuid的对应关系。
35.一种云场景下虚机获取数据源的系统,该系统包括数据源服务组件、数据源代理服务组件、虚拟机管理服务组件和虚机内数据源请求组件;
36.数据源服务组件用于提供租户侧请求的api,平台侧的数据源代理服务组件通过远程调用方式获取虚机数据源信息;
37.数据源代理服务部署在虚机所在的物理机节点(即计算节点)上,用于读写虚机的virtio-serial设备的socket地址,并根据socket地址通过虚拟机管理服务组件匹配到虚机的uuid,发起数据源服务请求获取数据源;
38.虚拟机管理服务组件运行在虚拟机所在的计算节点上,用于虚拟机的创建、虚拟机的状态管理以及虚拟机设备管理;
39.虚机内数据源请求组件安装在虚机初始化软件内部,用于读取和缓存各种数据源类型的数据。
40.作为优选,虚机内数据源请求组件还用于在虚机初始化软件中添加新的虚拟串口读写通信模块,虚拟串口读写通信模块用于与virtio-serial设备进行通信,通过vport设备进行数据源的请求和数据的读取;
41.虚机内数据源请求组件包括vport类型数据源读取模块和vport读写模块,vport类型数据源读取模块用于读取virtio-serial设备的数据源,vport类型数据源读取模块调用vport读写模块完成数据源获取和通信。
42.一种电子设备,包括:存储器和至少一个处理器;
43.其中,所述存储器上存储有计算机程序;
44.所述至少一个处理器执行所述存储器存储的计算机程序,使得所述至少一个处理器执行如上述的云场景下虚机获取数据源的方法。
45.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如上述的云场景下虚机获取数据源的方法。
46.本发明的云场景下虚机获取数据源的方法及系统具有以下优点:
47.(一)本发明在云场景下,虚机通过virtio-serial的方式与计算节点元数据服务通信的方式获取数据源,实现在虚拟机不需要使用到网络协议栈的情况下,能够高速地获取动态数据源;
48.(二)本发明实现了租户侧虚拟机访问管理侧虚机数据源的需要,对平台网络流量的没有侵入性,不使用网络协议栈,可以在虚机没有网卡,或者网络故障下使用;
49.(三)本发明与静态数据源相比,不增加额外的存储空间;
50.(四)本发明不占用传统ttysx串口设备;
51.(五)本发明与传统的使用网络或传统ttysx设备相比,使用virtio-serial设备读写速度更快。
附图说明
52.下面结合附图对本发明进一步说明。
53.附图1为云场景下虚机获取数据源的方法的示意图。
具体实施方式
54.参照说明书附图和具体实施例对本发明的云场景下虚机获取数据源的方法及系统作以下详细地说明。
55.实施例1:
56.如附图1所示,本实施例提供了一种云场景下虚机获取数据源的方法,该方法具体如下:
57.s1、在虚机所在的物理机节点(即计算节点)部署数据源代理服务组件;
58.s2、数据源代理服务组件连接指定地址的unix socket,并对该socket的文件描述符进行读写;
59.s3、数据源代理服务组件根据socket地址通过虚拟机管理服务组件hypervisor匹配到虚机的uuid,并根据虚机的uuid向数据源服务组件发起请求,获取到虚机的数据源数据,写入与虚机对应的socket中;
60.s4、虚机创建时,为虚机创建一个或多个virtio-serial设备,并指定channel类型为unix socket,同时设置unix socket地址;
61.s5、在虚机镜像内安装虚机初始化软件,在虚机初始化软件中添加新的虚拟串口读写通信模块,虚拟串口读写通信模块用于与virtio-serial设备进行通信,写操作对应控制通道,读操作对应数据通道;
62.s6、在虚机初始化软件中增加数据源列表项和以虚拟串口读写通信模块为基础的虚机内数据源请求组件,虚机内数据源请求组件发起对指定数据源地址的请求,调用虚拟串口读写通信模块发动数据源请求,并获取请求后的数据源数据内容。
63.本实施例中的数据源代理服务组件具体如下:
64.(1)、数据源代理服务组件通过查询虚拟机管理服务组件获取虚机virtio-serial驱动的channel设备和与设备对应的unix socket地址,并获取到虚机的uuid,其中,channel设备用作控制和数据二合一通道或拆分为控制通道和数据通道。
65.(2)、数据源代理服务组件接收channel设备控制通道传来的虚机发起的数据源地址请求,根据请求地址和虚机的uuid向数据源服务发起数据源获取请求;
66.(3)、数据源代理服务组件从数据源服务组件获取到返回数据后,将数据写入该虚机的channel设备的数据通道。
67.本实施例中,当数据源代理服务组件从channel设备数据通道接收到指定信息或指定模式的输入时,向数据通道写入指定内容,完成认证过程,确保虚机内正确识别该channel设备对接的是数据源代理服务组件。
68.本实施例步骤s4中的虚机创建具体如下:
69.s401、根据配置清单生成xml文件,虚机管理服务组件使用该xml创建虚机;
70.s402、虚机创建时,配置virtio-serial设备驱动的channel设备;
71.s403、channel设备指定设备类型为unix,即unix socket;
72.s404、根据虚拟机管理服务组件以及计算节点服务配置,指定设备通信的socket地址;
73.s405、将每台虚机的用于数据源获取的channel设备配置为一个控制和数据二合一通道或者拆分为控制通道和数据通道两个通道。
74.本实施例中的虚机内数据源请求组件具体如下:
75.(1)、虚机内数据源请求组件调用虚拟串口读写通信模块进行初始化,初始化时虚拟串口读写通信模块进行对虚机内vport设备的控制通道进行指定字符串或字符串模式写入,并从数据通道读取返回数据,完成认证;
76.(2)、虚机内数据源请求组件生成数据源获取请求地址,调用虚拟串口读写通信模块将请求写入控制通道;
77.(3)、虚机内数据源请求组件监听数据通道,读取控制通道发送请求地址后的数据源数据
78.(4)、虚机内数据源请求组件解析和处理收到的数据源数据,以虚机初始化软件接收的格式或对象返回调用方,获取数据源。
79.本实施例中的虚拟机管理服务组件还具有如下作用:
80.根据虚机创建时的虚机定义,为虚机创建带有channel设备类型为unix socket的控制通道和数据通道;
81.为数据源代理服务组件提供虚机定义查询,用于匹配unix socket地址与虚机uuid的对应关系。
82.实施例2:
83.如附图1所示,本实施例提供了一种云场景下虚机获取数据源的系统,该系统包括数据源服务组件、数据源代理服务组件、虚拟机管理服务组件和虚机内数据源请求组件;
84.数据源服务组件用于提供租户侧请求的api,平台侧的数据源代理服务组件通过远程调用方式获取虚机数据源信息;
85.数据源代理服务部署在虚机所在的物理机节点(即计算节点)上,用于读写虚机的virtio-serial设备的socket地址,并根据socket地址通过虚拟机管理服务组件匹配到虚机的uuid,发起数据源服务请求获取数据源;
86.虚拟机管理服务组件运行在虚拟机所在的计算节点上,用于虚拟机的创建、虚拟机的状态管理以及虚拟机设备管理;
87.虚机内数据源请求组件安装在虚机初始化软件内部,用于读取和缓存各种数据源类型的数据。
88.本实施例中的虚机内数据源请求组件还用于在虚机初始化软件中添加新的虚拟串口读写通信模块,虚拟串口读写通信模块用于与virtio-serial设备进行通信,通过vport设备进行数据源的请求和数据的读取;
89.本实施例中的虚机内数据源请求组件包括vport类型数据源读取模块和vport读写模块,vport类型数据源读取模块用于读取virtio-serial设备的数据源,vport类型数据源读取模块调用vport读写模块完成数据源获取和通信。
90.本实施例中的数据源代理服务组件工作过程具体如下:
91.(1)、数据源代理服务组件通过查询虚拟机管理服务组件获取虚机virtio-serial驱动的channel设备和与设备对应的unix socket地址,并获取到虚机的uuid,其中,channel设备用作控制和数据二合一通道或拆分为控制通道和数据通道。
92.(2)、数据源代理服务组件接收channel设备控制通道传来的虚机发起的数据源地址请求,根据请求地址和虚机的uuid向数据源服务发起数据源获取请求;
93.(3)、数据源代理服务组件从数据源服务组件获取到返回数据后,将数据写入该虚机的channel设备的数据通道。
94.本实施例中,当数据源代理服务组件从channel设备数据通道接收到指定信息或指定模式的输入时,向数据通道写入指定内容,完成认证过程,确保虚机内正确识别该channel设备对接的是数据源代理服务组件。
95.本实施例中的虚机内数据源请求组件工作过程具体如下:
96.(1)、虚机内数据源请求组件调用虚拟串口读写通信模块进行初始化,初始化时虚拟串口读写通信模块进行对虚机内vport设备的控制通道进行指定字符串或字符串模式写入,并从数据通道读取返回数据,完成认证;
97.(2)、虚机内数据源请求组件生成数据源获取请求地址,调用虚拟串口读写通信模块将请求写入控制通道;
98.(3)、虚机内数据源请求组件监听数据通道,读取控制通道发送请求地址后的数据源数据
99.(4)、虚机内数据源请求组件解析和处理收到的数据源数据,以虚机初始化软件接收的格式或对象返回调用方,获取数据源。
100.实施例3:
101.本实施例还提供了一种电子设备,包括:存储器和处理器;
102.其中,存储器存储计算机执行指令;
103.处理器执行所述存储器存储的计算机执行指令,使得处理器执行本发明任一实施例中的云场景下虚机获取数据源的方法。
104.处理器可以是中央处理单元(cpu),还可以是其他通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通过处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
105.存储器可用于储存计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现电子设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器还可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,只能存储卡(smc),安全数字(sd)卡,闪存卡、至少一个磁盘存储期间、闪存器件、或其他易失性固态存储器件。
106.实施例4:
107.本实施例还提供了一种计算机可读存储介质,其中存储有多条指令,指令由处理器加载,使处理器执行本发明任一实施例中的云场景下虚机获取数据源的方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。
108.在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
109.用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-rym、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
110.此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
111.此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
112.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1