一种虚拟机的镜像管理方法及系统与流程
- 国知局
- 2024-07-31 22:50:11
本发明属于云计算领域,尤其涉及一种虚拟机的镜像管理方法及系统。
背景技术:
1、在边缘计算环境中,采用云原生方式创建虚拟机相对于传统方法有多项优势。首先,这种方式提供了一致的虚拟化api用于管理虚拟机,通过声明式配置简化了部署流程。其次,基于kubernetes(k8s)的方案提供了更强大的调度和资源隔离功能,增强了系统的稳定性和安全性。此外,云原生方式还使得计算、存储和网络资源的使用更加便捷快速,并且在边缘计算场景下展现出更强的可扩展性。
2、然而,在使用云原生方式创建虚拟机时,每次都需要下载完整镜像,并进行格式转换、大小调整等步骤才能生成用户所需的虚拟机镜像,因此降低了镜像下载、镜像转换、镜像导出等一系列功能的效率。
技术实现思路
1、鉴于以上现有技术的不足,发明的目的在于提供一种虚拟机的镜像管理方法及系统,开通虚拟机、导出虚拟机等场景效率明显提升。
2、本发明的第一方面,提出了一种虚拟机的镜像管理方法,包括:
3、镜像管理模块发送请求镜像指令;其中,所述请求镜像指令为请求获取含有目标类型的基础镜像的指令;
4、缓存代理模块请求接收所述请求镜像指令;
5、所述缓存代理模块获取所述基础镜像;
6、所述镜像管理模块从所述缓存代理模块获取所述基础镜像,所述镜像管理模块管理所述基础镜像并将所述基础镜像共享至其他虚拟机;其中,读写pvc访问读写pv获取所述基础镜像并对所述基础镜像进行管理,所述读写pv与所述基础镜像关联,所述基础镜像文件的体积等于所述读写pvc申请资源的体积,所述镜像管理模块创建只读pvc和只读pv,所述只读pv获取所述读写pv的存储后端信息,所述只读pvc访问所述只读pv获取所述基础镜像,所述只读pv通过所述存储后端信息获取到所述基础镜像,所述镜像管理模块通过所述只读pvc跨命名空间共享所述基础镜像;
7、所述虚拟机的镜像管理模块通过storageclass的预设存储名称对接不同存储后端设备建立对应关系以申请存储资源,所述镜像管理模块挂载申请的存储资源通过内嵌的镜像管理工具生成增量镜像,所述增量镜像由增量镜像pvc管理,所述增量镜像pvc的storageclassname与所述storageclass对象的预设存储名称建立对应关系,所述预设存储名称与不同存储后端设备建立对应关系以申请不同类型系统盘资源;
8、所述镜像管理模块将所述增量镜像与所述基础镜像进行链接,以得到目标镜像;其中,所述增量镜像为没有增量文件的镜像;
9、所述镜像管理模块根据所述目标镜像,创建虚拟机;其中,所述虚拟机采用pod管理,所述镜像管理模块包括所述pod,所述虚拟机挂载所述目标镜像并将所述目标镜像挂载在所述pod的目标目录中,所述虚拟机的系统盘的容纳体积等于所述增量镜像的增量镜像pvc的声明体积,所述虚拟机的系统盘的容纳体积不等于所述增量镜像文件的体积。
10、进一步地,所述缓存代理模块获取所述基础镜像包括:
11、若所述缓存代理模块的边缘缓存中存在所述基础镜像,且所述基础镜像不是由所述读写pvc管理,则从边缘集群获取所述基础镜像的镜像分片;
12、若所述缓存代理模块的边缘缓存中不存在所述基础镜像,则从云端获取所述基础镜像的镜像分片;
13、所述缓存代理模块将所述镜像分片转发至所述镜像转换job模块;
14、所述镜像转换job模块根据所述缓存代理模块的对job的定义,创建所述读写pvc,其中,所述基础镜像由所述多个镜像分片构成;其中,所述缓存代理模块对job的定义包括镜像管理模块地址、缓存代理模块地址、增量镜像pvc信息、基础镜像的读写pvc信息、基础镜像信息;
15、所述镜像转换job模块下载所述多个镜像分片并对所述多个镜像分片进行拼接,以得到所述基础镜像,若所述基础镜像与预设基础镜像匹配,则将所述基础镜像保存至所述读写pvc;
16、所述缓存代理模块访问所述读写pvc获取所述基础镜像;
17、所述镜像转换job模块更新对应的cache资源后,所述缓存代理模块完成所述读写pvc写入所述基础镜像。
18、进一步地,虚拟机的镜像管理方法还包括:
19、若所述边缘集群中不存在使用相同存储后端的pvc管理的,则所述缓存代理模块创建cache对象;其中,所述cache对象管理cache列表,所述cache列表包括cache信息;
20、所述缓存代理模块根据所述cache信息,创建文件加工任务;其中,所述文件加工任务为将所述基础镜像转换为job并将所述job挂载到目标pvc的任务;
21、所述镜像转换job模块执行所述文件加工任务,并 根据所述目标pvc的信息,查看所述cache列表中是否存在与所述文件加工任务对应由所述目标pvc管理的镜像源;
22、若所述cache列表中存在所述镜像源且所述镜像源支持卷克隆,则所述镜像转换job模块创建所述镜像源的pvc,其中,所述镜像源的pvc的datasource指向所述cache对象管理的源pvc,所述镜像源的pvc从所述源pvc得到所述基础镜像;其中,所述源pvc为历史创建所述虚拟机缓存的pvc;其中,所述源pvc为历史创建所述虚拟机缓存的pvc;
23、若所述cache列表中存在所述镜像源且所述镜像源不支持卷克隆,则所述镜像转换job模块创建pod挂载所述cache对象管理的源pvc,将所述源pvc数据流式传输到所述目标pvc,所述目标pvc复制所述源pvc的数据流式,以得到所述基础镜像;
24、若所述边缘集群存在所述使用相同存储后端的pvc管理的基础镜像且所述基础镜像与所述预设基础镜像匹配,则不再重复缓存及克隆所述基础镜像。
25、进一步地,在若所述cache列表中存在所述镜像源且所述镜像源不支持卷克隆,则创建pod挂载所述cache列表中的源pvc,将所述源pvc数据流式传输到所述目标pvc,所述目标pvc复制所述源pvc的数据流式,以得到所述基础镜像之后,虚拟机的镜像管理方法还包括:
26、所述镜像管理模块创建指向所述基础镜像的存储后端的只读pv、只读pvc;其中,只读pv通过将volumehandle、驱动以及存储类与所述cache对象管理的所述基础镜像的pvc对应的pv关联以使所述只读pv获取所述存储后端信息,所述只读pvc通过volumename与所述只读pv关联;
27、所述镜像管理模块通过所述只读pvc访问所述只读pv,所述只读pv获取所述存储后端信息并通过所述存储后端获取所述基础镜像
28、进一步地,在镜像管理模块通过所述只读pvc访问所述只读pv,所述只读pv获取所述存储后端信息并通过所述存储后端获取所述基础镜像之后,虚拟机的镜像管理方法还包括:
29、所述缓存代理模块将基础镜像的缓存结果保存到cache对象;
30、所述镜像转换job模块创建增量镜像pvc;
31、所述镜像转换job模块基于所述增量镜像pvc申请的存储资源创建增量镜像,所述镜像转换job模块将所述增量镜像链接指向基础镜像;
32、所述镜像转换job模块将创建所述增量镜像的成功结果发送所述缓存代理模块及所述镜像管理模块;
33、所述缓存代理模块将所述增量镜像的成功结果发送至cache对象;
34、所述镜像管理模块获取所述增量镜像的成功结果,并根据所述增量镜像pvc创建所述虚拟机。
35、进一步地,虚拟机的镜像管理方法还包括:
36、若所述缓存代理模块的缓存中不存在所述虚拟机的存储后端存储的基础镜像且存在其他虚拟机的存储后端存储的基础镜像且所述虚拟机的存储后端不支持卷克隆功能,则所述缓存代理模块根据所述基础镜像的目标类型,获取所述基础镜像的pvc信息;
37、所述缓存代理模块创建挂载所述cache对象管理的源pvc的pod;
38、所述缓存代理模块根据所述pvc信息,创建挂载空白pvc的pod并从所述空白pvc获取所述基础镜像;其中,所述空白pvc与所述源pvc相互关联;
39、所述空白pvc的pod请求从所述pvc的pod下载所述基础镜像。
40、进一步地,虚拟机的镜像管理方法还包括:
41、若所述缓存代理模块的缓存中不存在所述存储后端存储的基础镜像且存在其他虚拟机的存储后端存储的基础镜像且所述虚拟机的存储后端支持卷克隆功能,则所述缓存代理模块根据所述pvc信息,创建拷贝pvc并从所述拷贝pvc获取所述基础镜像;其中,所述拷贝pvc的数据源引用所述源pvc,以使所述拷贝pvc从所述源pvc下载所述基础镜像。
42、进一步地,虚拟机的镜像管理方法还包括:
43、若所述镜像管理模块已成功创建所述基础镜像且所述虚拟机应用所述基础镜像,则所述镜像管理模块通过已存在的cache对象保存所述基础镜像的读写pvc创建只读pv;其中,所述只读pv的体积与系统盘的体积不相同,所述只读pv的体积与所述读写pvc的体积相同、所述只读pv的driver与所述读写pvc的driver相同、所述只读pv的volumehandle与所述读写pvc的volumehandle相同、所述只读pv的storageclassname与所述读写pvc的storageclassname相同,所述只读pv的accessmodes配置为readonlymany;
44、所述镜像管理模块在所述租户命名空间创建租户pvc并申请所述只读pv资源;其中,所述租户pvc的配置与所述只读pv的配置相同,所述租户pvc的volumename设置为所述只读pv的名称,所述租户pvc通过所述只读pv从存储后端请求与所述基础镜像类型相同的目标基础镜像。
45、进一步地,所述镜像管理模块根据所述关联后的镜像,创建虚拟机之后,虚拟机的镜像管理方法还包括:
46、所述镜像管理模块接收导出镜像指令;其中,所述导出镜像指令为导出所述增量镜像的指令;
47、所述镜像管理模块根据所述导出镜像指令,将所述增量镜像上传至边缘集群;
48、所述边缘集群镜像管理模块根据所述导出镜像指令,创建导出镜像cr任务;
49、所述缓存代理模块根据所述导出镜像cr任务,创建边缘镜像导出job发送至所述边缘集群;
50、所述边缘集群根据所述边缘镜像导出job,对所述增量镜像进行拷贝,以得到临时增量文件;
51、所述边缘集群对所述临时增量镜像进行压缩,以得到压缩后的增量镜像并上传至所述缓存代理模块;
52、所述缓存代理模块将所述压缩后的增量镜像上传至云端镜像管理模块;
53、所述云端镜像管理模块解压所述压缩后的增量镜像;
54、所述云端镜像管理模块从镜像列表下载所述基础镜像并将所述解压后的增量镜像与所述下载后的基础镜像进行链接,并将所述增量镜像提交到所述基础镜像,以生成所述目标镜像;
55、所述云端镜像管理模块将所述目标镜像上传至所述云端,在所述云端存储所述目标镜像的镜像信息。
56、本发明的第二方面,提出了一种虚拟机的镜像管理系统,包括:
57、镜像管理模块,镜像管理模块发送请求镜像指令,其中,所述请求镜像指令为请求获取含有目标类型的基础镜像的指令;所述镜像管理模块从缓存代理模块获取所述基础镜像,所述镜像管理模块管理所述基础镜像并将所述基础镜像共享至其他虚拟机;其中,读写pvc访问读写pv获取所述基础镜像并对所述基础镜像进行管理,所述读写pv与所述基础镜像关联,所述基础镜像文件的体积等于所述读写pvc申请资源的体积,所述镜像管理模块创建只读pvc和只读pv,所述只读pv获取所述读写pv的存储后端信息,所述只读pvc访问所述只读pv获取所述基础镜像,所述只读pv通过所述存储后端信息获取到所述基础镜像,所述镜像管理模块通过所述只读pvc跨命名空间共享所述基础镜像;所述虚拟机的镜像管理模块通过storageclass的预设存储名称对接不同存储后端设备建立对应关系申请存储资源,所述镜像管理模块挂载申请的存储资源通过内嵌的镜像管理工具生成增量镜像,所述增量镜像由增量镜像pvc管理,所述增量镜像pvc的storageclassname与所述storageclass对象的预设存储名称建立对应关系,所述预设存储名称与不同存储后端设备建立对应关系以申请不同类型系统盘资源;所述镜像管理模块将所述增量镜像与所述基础镜像进行链接,以得到目标镜像;其中,所述增量镜像为没有增量文件的镜像;所述镜像管理模块根据所述目标镜像,创建虚拟机;其中,所述虚拟机采用pod管理,所述镜像管理模块包括所述pod,所述虚拟机挂载所述目标镜像并将所述目标镜像挂载在所述pod的目标目录中,所述虚拟机的系统盘的容纳体积等于所述增量镜像的增量镜像pvc的声明体积,所述虚拟机的系统盘的容纳体积不等于所述增量镜像文件的体积;
58、所述缓存代理模块,所述缓存代理模块与所述镜像管理模块通信连接,所述缓存代理模块请求接收所述请求镜像指令,获取所述基础镜像。
59、本发明的虚拟机的镜像管理方法及系统,通过在租户命名空间创建租户pvc并申请只读pv资源,其中,租户pvc的配置与只读pv的配置相同,租户pvc的volumename设置为只读pv的名称,租户pvc通过只读pv从存储后端请求与基础镜像类型相同的目标基础镜像,从而实现共享相同的基础镜像,以使得基础镜像不需要在重复存储。通过从云端或者边缘集群中下载基础镜像的分片数据,可以提高基础镜像的下载效率,以及通过卷克隆功能采用不同的方式复制基础镜像,也提高基础镜像的下载效率。通过自定义资源创建边缘镜像导出任务,并生成临时增量镜像,根据临时增量镜像,进行压缩等处理,并上传至云端,从而减少云边通信成本,提高导出效率。
本文地址:https://www.jishuxx.com/zhuanli/20240730/194897.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表