虚拟机初始化方法、计算机设备和存储介质与流程

文档序号:29136635发布日期:2022-03-05 02:03阅读:198来源:国知局
虚拟机初始化方法、计算机设备和存储介质与流程

1.本技术涉及云计算技术领域,特别是涉及一种虚拟机初始化方法、计算机设备和存储介质。


背景技术:

2.云主机,即虚拟化层面的虚拟机,其初始化是基本要求,因为使用的镜像是统一的,但是交付业务面对的客户、行业、业务诉求是不同的,统一之中又要个性化配置。虚拟机初始化的发生时机是虚拟机新建完毕刚启动,初始化需要执行的常规操作包括配置主机名、持久化配置ip地址、对将外部文件注入虚拟机内部、修改系统登录安全策略、扩容根分区以及执行任意脚本等。
3.虽然业界有对应的实现,例如openstack、aws的metadata service配合虚拟机镜像内置代理服务可以实现,但是具体使用的时候还是有一些问题,例如:(1)由于虚拟机镜像内置代理服务依赖网络访问metadata service,但是sdn不一定稳定可靠,会导致初始化失败;(2)将metadata service的思路从公有云借鉴到私有云平台来实现,也会因为企业私有云部署时使用vlan网络,业务网络局域网禁用dhcp导致虚拟机无法获取ip无法访问metadata sevice导致该方案不可行;(3)因为metadata service部署于管理网,该实现依赖于虚拟机业务网、管理网间的穿透,存在安全隐患。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够初始化操作过度依赖虚拟机网络的虚拟机初始化方法、计算机设备和存储介质。
5.一方面,提供一种虚拟机初始化方法,所述方法包括:
6.根据预设规则构建初始化文件目录树;
7.将所述初始化文件目录树打包为配置镜像文件,并指定卷标;
8.将所述配置镜像文件挂载至虚拟机;
9.在启动虚拟机后,开机启动脚本根据卷标查找配置镜像文件并挂载;
10.基于上述预设规则解析配置镜像文件;
11.读取初始化信息并根据所述初始化信息初始化系统。
12.在其中一个实施例中,预设规则包括:二级文件为虚拟机目录,三级文件为文件目录、配置目录,其中文件目录用以存放内拷文件,配置目录用以存放配置信息以及用户脚本。
13.在其中一个实施例中,配置信息包括虚拟机的主机名、唯一识别码、初始化密码中至少一项,以及将文件目录存储的内拷文件拷贝到虚拟机的目标路径;用户脚本包括在虚拟机内执行的用户自定义脚本以及声明的解释器。
14.在其中一个实施例中,文件目录存放的内拷文件按照4位16进制字符串命名并排序,配置信息采用键值对格式。
15.在其中一个实施例中,使用mkisofs将所述初始化文件目录树打包为配置镜像文件,使用virsh工具将配置镜像文件挂载至虚拟机。
16.在其中一个实施例中,开机启动脚本以iso9660文件系统类型挂载配置镜像文件。
17.在其中一个实施例中,读取初始化信息并根据所述初始化信息初始化系统,包括:
18.读取初始化信息中的文件目录,根据配置信息中的目标路径将内拷文件拷贝至虚拟机;
19.读取初始化信息中的配置信息并设置虚拟机;
20.读取初始化信息中的用户脚本,并交给解释器执行初始化操作。
21.在其中一个实施例中,方法还包括:
22.初始化完成之后,用户脚本在虚拟机内部写入初始化结果记录,标记初始化是否成功。
23.再一方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
24.根据预设规则构建初始化文件目录树;
25.将所述初始化文件目录树打包为配置镜像文件,并指定卷标;
26.将所述配置镜像文件挂载至虚拟机;
27.在启动虚拟机后,开机启动脚本根据卷标查找配置镜像文件并挂载;
28.基于上述预设规则解析配置镜像文件;
29.读取初始化信息并根据所述初始化信息初始化系统。
30.在其中一个实施例中,所述处理器执行所述计算机程序时实现:
31.所述预设规则包括:二级文件为虚拟机目录,三级文件为文件目录、配置目录,其中文件目录用以存放内拷文件,配置目录用以存放配置信息以及用户脚本。
32.在其中一个实施例中,所述处理器执行所述计算机程序时实现:
33.所述配置信息包括虚拟机的主机名、唯一识别码、初始化密码中至少一项,以及将文件目录存储的内拷文件拷贝到虚拟机的目标路径;用户脚本包括在虚拟机内执行的用户自定义脚本以及声明的解释器。
34.在其中一个实施例中,所述处理器执行所述计算机程序时实现:
35.文件目录存放的内拷文件按照4位16进制字符串命名并排序,配置信息采用键值对格式。
36.在其中一个实施例中,所述处理器执行所述计算机程序时实现以下步骤:
37.使用mkisofs将所述初始化文件目录树打包为配置镜像文件,使用virsh工具将配置镜像文件挂载至虚拟机。
38.在其中一个实施例中,所述处理器执行所述计算机程序时实现以下步骤:
39.开机启动脚本以iso9660文件系统类型挂载配置镜像文件。
40.在其中一个实施例中,所述处理器执行所述计算机程序时实现以下步骤:
41.读取初始化信息中的文件目录,根据配置信息中的目标路径将内拷文件拷贝至虚拟机;
42.读取初始化信息中的配置信息并设置虚拟机;
43.读取初始化信息中的用户脚本,并交给解释器执行初始化操作。
44.在其中一个实施例中,所述处理器执行所述计算机程序时实现以下步骤:
45.初始化完成之后,用户脚本在虚拟机内部写入初始化结果记录,标记初始化是否成功。
46.又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
47.根据预设规则构建初始化文件目录树;
48.将所述初始化文件目录树打包为配置镜像文件,并指定卷标;
49.将所述配置镜像文件挂载至虚拟机;
50.在启动虚拟机后,开机启动脚本根据卷标查找配置镜像文件并挂载;
51.基于上述预设规则解析配置镜像文件;
52.读取初始化信息并根据所述初始化信息初始化系统。
53.在其中一个实施例中,所述计算机程序被处理器执行时实现:
54.所述预设规则包括:二级文件为虚拟机目录,三级文件为文件目录、配置目录,其中文件目录用以存放内拷文件,配置目录用以存放配置信息以及用户脚本。
55.在其中一个实施例中,所述计算机程序被处理器执行时实现:
56.所述配置信息包括虚拟机的主机名、唯一识别码、初始化密码中至少一项,以及将文件目录存储的内拷文件拷贝到虚拟机的目标路径;用户脚本包括在虚拟机内执行的用户自定义脚本以及声明的解释器。
57.在其中一个实施例中,所述计算机程序被处理器执行时实现:
58.文件目录存放的内拷文件按照4位16进制字符串命名并排序,配置信息采用键值对格式。
59.在其中一个实施例中,所述计算机程序被处理器执行时实现以下步骤:
60.使用mkisofs将所述初始化文件目录树打包为配置镜像文件,使用virsh工具将配置镜像文件挂载至虚拟机。
61.在其中一个实施例中,所述计算机程序被处理器执行时实现以下步骤:
62.开机启动脚本以iso9660文件系统类型挂载配置镜像文件。
63.在其中一个实施例中,所述计算机程序被处理器执行时实现以下步骤:
64.读取初始化信息中的文件目录,根据配置信息中的目标路径将内拷文件拷贝至虚拟机;
65.读取初始化信息中的配置信息并设置虚拟机;
66.读取初始化信息中的用户脚本,并交给解释器执行初始化操作。
67.在其中一个实施例中,所述计算机程序被处理器执行时实现以下步骤:
68.初始化完成之后,用户脚本在虚拟机内部写入初始化结果记录,标记初始化是否成功。
69.上述虚拟机初始化方法、计算机设备和存储介质,根据预设规则构建初始化文件目录树;将所述初始化文件目录树打包为配置镜像文件,并指定卷标;将所述配置镜像文件挂载至虚拟机;在启动虚拟机后,开机启动脚本根据卷标查找配置镜像文件并挂载;基于上述预设规则解析配置镜像文件;读取初始化信息并根据所述初始化信息初始化系统。通过配置镜像文件、配置镜像文件规范用以解决云主机的初始化问题,并规避初始化操作过度
依赖虚拟机网络。镜像内置的开机启动脚本遵循配置镜像文件规范解析配置镜像文件数据,完成虚拟机初始化。
附图说明
70.图1为一个实施例中虚拟机初始化方法的流程示意图;
71.图2为另一个实施例中虚拟机初始化方法的流程示意图;
72.图3为一个实施例中计算机设备的内部结构图。
具体实施方式
73.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
74.本技术提供的虚拟机初始化方法,应用于云主机,如图1所示,包括以下步骤:
75.步骤101,根据预设规则构建初始化文件目录树;
76.在一个实施例中,预设规则为config drive规范,config drive本质是iso或软盘等可以被虚拟机挂载的外置存储驱动(drive),只不过存储的是用以对虚拟机初始化配置(config)所需的各种数据,包括key-value形式存储的虚拟机配置信息、用户自定义的后续需要在虚拟机内执行的脚本、从外部预备拷贝入虚拟机的文件等。该驱动包含的文件系统按特定的规范进行组织
77.包括:二级文件为虚拟机目录,三级文件为文件目录、配置目录,其中文件目录用以存放内拷文件,配置目录用以存放配置信息以及用户脚本。
78.具体的,预设规则示例如下:
[0079][0080][0081]
即二级约定为cloud目录,三级约定为files、config目录。files目录用以存放内
拷文件,config目录用以存放key-value格式的配置信息(如meta_data.json,固定名称)以及用户脚本(如user_data,固定名称)
[0082]
在一个实施例中,配置信息包括虚拟机的主机名、唯一识别码、初始化密码中至少一项,以及将文件目录存储的内拷文件拷贝到虚拟机的目标路径;用户脚本包括在虚拟机内执行的用户自定义脚本以及声明的解释器。
[0083]
具体的,config目录下的meta_data.json包含虚拟机的配置信息,包括虚拟机的hostname、uuid、初始化密码等,以及将files目录存储的文件拷贝到虚拟机对应的路径,示例如下:
[0084][0085]
config目录下的user_data包含在虚拟机内执行的用户自定义脚本,需要声明对应解释器,以linux shell为例:
[0086]
[root@cs112-04 config-2]#cat cloud/config/user_data
[0087]
#!/bin/bash
[0088]
echo“welcome”》》/root/splash
[0089]
在一个实施例中,文件目录存放的内拷文件按照4位16进制字符串命名并排序,配置信息采用键值对格式。
[0090]
步骤102,将所述初始化文件目录树打包为配置镜像文件,并指定卷标;
[0091]
在一个实施例中,使用mkisofs将所述初始化文件目录树打包为配置镜像文件。
[0092]
具体的,使用mkisofs将上述目录打包为iso(或其他工具制作软盘),制作时指定卷标为cloud-init,该iso即为config drive:
[0093]
[root@cs112-04 config-2]#mkisofs-l-j-l-r-vcloud-init-o/root/cloud.iso.
[0094]
步骤103,将所述配置镜像文件挂载至虚拟机;
[0095]
在一个实施例中,使用virsh工具将配置镜像文件挂载至虚拟机。
[0096]
具体的,使用虚拟化管理工具,e.g.virsh,将于config drive挂载到虚拟机:
[0097]
[root@cs112-04 config-2]#virsh change-media centos7 hda/root/cloud.iso
‑‑
config
[0098]
successfully updated media.
[0099]
步骤104,在启动虚拟机后,开机启动脚本根据卷标查找配置镜像文件并挂载;
[0100]
在一个实施例中,开机启动脚本以iso9660文件系统类型挂载配置镜像文件。
[0101]
具体的,镜像内置的开机启动脚本按卷标(label)查找config drive,并以iso9660文件系统类型挂载该config drive:
[0102]
[root@demo.cloud.org/]#ls

l/dev/disk/by-label/cloud-init
[0103]

[0104]
[root@demo.cloud.org/]#mkdir

p/tmp/init
[0105]
[root@demo.cloud.org/]#mount

tiso9660/dev/disk/by-label/cloud-init/tmp/init
[0106]
[root@demo.cloud.org/]#cd/tmp/init
[0107]
[root@demo.cloud.orginit]#
[0108]
步骤105,基于上述预设规则解析配置镜像文件;
[0109]
具体的,基于configdrive规范解析上述文件系统,虚拟机脚本看到的目录结构与第一步定义的目录一致。
[0110]
步骤106,读取初始化信息并根据所述初始化信息初始化系统。
[0111]
在一个实施例中,步骤106包括:
[0112]
步骤1061,读取初始化信息中的文件目录,根据配置信息中的目标路径将内拷文件拷贝至虚拟机;
[0113]
步骤1062,读取初始化信息中的配置信息并设置虚拟机;
[0114]
步骤1063,读取初始化信息中的用户脚本,并交给解释器执行初始化操作。
[0115]
具体的,(1)取files目录的文件,按照config/meta_data.json中files.path约定的目标路径将文件拷贝虚拟机。
[0116]
(2)取config/meta_data.json中的hostname、uuid、admin_pass设置虚拟机的主机名、uuid、登录密码。
[0117]
(3)读取config/user_data的用户自定义脚本,交给解释器进行执行。
[0118]
在一个实施例中,方法还包括:
[0119]
步骤107,初始化完成之后,用户脚本在虚拟机内部写入初始化结果记录,标记初始化是否成功。
[0120]
具体的,虚拟机重启之后,初始化脚本读取标记,如果确定有标记信息且标记信息显示之前已经成功初始化,则避免再次初始化。
[0121]
上述虚拟机初始化方法中,通过配置镜像文件、配置镜像文件规范用以解决云主机的初始化问题,并规避初始化操作过度依赖虚拟机网络。镜像内置的开机启动脚本遵循配置镜像文件规范解析配置镜像文件数据,完成虚拟机初始化。
[0122]
在另一个实施中,本技术提供的虚拟机初始化方法,应用于云主机重启以后,包括以下步骤:
[0123]
步骤201,根据预设规则构建初始化文件目录树;
[0124]
步骤202,将所述初始化文件目录树打包为配置镜像文件,并指定卷标;
[0125]
步骤203,将所述配置镜像文件挂载至虚拟机;
[0126]
步骤204,在启动虚拟机后,初始化脚本读取初始化标记,如果存在初始化成功标
记,跳转步骤205,否则跳转步骤206;
[0127]
步骤205,正常进入虚拟机;
[0128]
步骤206,开机启动脚本根据卷标查找配置镜像文件并挂载;
[0129]
步骤207,基于上述预设规则解析配置镜像文件;
[0130]
步骤208,读取初始化信息并根据所述初始化信息初始化系统。
[0131]
从上述步骤可以看出,初始化步骤与前一实施例基本相同,主要区别在于在执行初始化前先检测是否已经初始化完成,如未完成则进行初始化,若已完成,则正常进入虚拟机。
[0132]
应该理解的是,虽然图1-2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0133]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储文件数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种虚拟机初始化方法。
[0134]
本领域技术人员可以理解,图3中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0135]
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
[0136]
根据预设规则构建初始化文件目录树;
[0137]
将所述初始化文件目录树打包为配置镜像文件,并指定卷标;
[0138]
将所述配置镜像文件挂载至虚拟机;
[0139]
在启动虚拟机后,开机启动脚本根据卷标查找配置镜像文件并挂载;
[0140]
基于上述预设规则解析配置镜像文件;
[0141]
读取初始化信息并根据所述初始化信息初始化系统。
[0142]
在其中一个实施例中,所述处理器执行所述计算机程序时实现:
[0143]
所述预设规则包括:二级文件为虚拟机目录,三级文件为文件目录、配置目录,其中文件目录用以存放内拷文件,配置目录用以存放配置信息以及用户脚本。
[0144]
在其中一个实施例中,所述处理器执行所述计算机程序时实现:
[0145]
所述配置信息包括虚拟机的主机名、唯一识别码、初始化密码中至少一项,以及将文件目录存储的内拷文件拷贝到虚拟机的目标路径;用户脚本包括在虚拟机内执行的用户
自定义脚本以及声明的解释器。
[0146]
在其中一个实施例中,所述处理器执行所述计算机程序时实现:
[0147]
文件目录存放的内拷文件按照4位16进制字符串命名并排序,配置信息采用键值对格式。
[0148]
在其中一个实施例中,所述处理器执行所述计算机程序时实现以下步骤:
[0149]
使用mkisofs将所述初始化文件目录树打包为配置镜像文件,使用virsh工具将配置镜像文件挂载至虚拟机。
[0150]
在其中一个实施例中,所述处理器执行所述计算机程序时实现以下步骤:
[0151]
开机启动脚本以iso9660文件系统类型挂载配置镜像文件。
[0152]
在其中一个实施例中,所述处理器执行所述计算机程序时实现以下步骤:
[0153]
读取初始化信息中的文件目录,根据配置信息中的目标路径将内拷文件拷贝至虚拟机;
[0154]
读取初始化信息中的配置信息并设置虚拟机;
[0155]
读取初始化信息中的用户脚本,并交给解释器执行初始化操作。
[0156]
在其中一个实施例中,所述处理器执行所述计算机程序时实现以下步骤:
[0157]
初始化完成之后,用户脚本在虚拟机内部写入初始化结果记录,标记初始化是否成功。
[0158]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0159]
根据预设规则构建初始化文件目录树;
[0160]
将所述初始化文件目录树打包为配置镜像文件,并指定卷标;
[0161]
将所述配置镜像文件挂载至虚拟机;
[0162]
在启动虚拟机后,开机启动脚本根据卷标查找配置镜像文件并挂载;
[0163]
基于上述预设规则解析配置镜像文件;
[0164]
读取初始化信息并根据所述初始化信息初始化系统。
[0165]
在其中一个实施例中,所述计算机程序被处理器执行时实现:
[0166]
所述预设规则包括:二级文件为虚拟机目录,三级文件为文件目录、配置目录,其中文件目录用以存放内拷文件,配置目录用以存放配置信息以及用户脚本。
[0167]
在其中一个实施例中,所述计算机程序被处理器执行时实现:
[0168]
所述配置信息包括虚拟机的主机名、唯一识别码、初始化密码中至少一项,以及将文件目录存储的内拷文件拷贝到虚拟机的目标路径;用户脚本包括在虚拟机内执行的用户自定义脚本以及声明的解释器。
[0169]
在其中一个实施例中,所述计算机程序被处理器执行时实现:
[0170]
文件目录存放的内拷文件按照4位16进制字符串命名并排序,配置信息采用键值对格式。
[0171]
在其中一个实施例中,所述计算机程序被处理器执行时实现以下步骤:
[0172]
使用mkisofs将所述初始化文件目录树打包为配置镜像文件,使用virsh工具将配置镜像文件挂载至虚拟机。
[0173]
在其中一个实施例中,所述计算机程序被处理器执行时实现以下步骤:
[0174]
开机启动脚本以iso9660文件系统类型挂载配置镜像文件。
[0175]
在其中一个实施例中,所述计算机程序被处理器执行时实现以下步骤:
[0176]
读取初始化信息中的文件目录,根据配置信息中的目标路径将内拷文件拷贝至虚拟机;
[0177]
读取初始化信息中的配置信息并设置虚拟机;
[0178]
读取初始化信息中的用户脚本,并交给解释器执行初始化操作。
[0179]
在其中一个实施例中,所述计算机程序被处理器执行时实现以下步骤:
[0180]
初始化完成之后,用户脚本在虚拟机内部写入初始化结果记录,标记初始化是否成功。
[0181]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0182]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0183]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1