云计算实验平台虚拟机镜像的管理与维护

2017-11-27 06:00金永霞
实验技术与管理 2017年11期
关键词:镜像文件补丁脚本

金永霞, 孙 宁

(河海大学 物联网工程学院, 江苏 常州 213022)

云计算实验平台虚拟机镜像的管理与维护

金永霞, 孙 宁

(河海大学 物联网工程学院, 江苏 常州 213022)

针对云平台在实验教学应用中出现的一些问题,设计实现了虚拟机镜像管理与维护系统。通过在云平台的持续集成环境中部署脚本,实现对镜像的缓存、回收、更新升级等维护功能,给出了维护模块的具体实现方法和维护管理流程。镜像的管理和维护有利于虚拟机保持良好运行,使云平台可以快速创建实验环境和及时回收实验资源,为实验教学提供有效的环境支撑。

云计算实验平台; 虚拟机镜像; 管理与维护; 持续集成环境

虚拟机镜像是封装了操作系统、应用软件和系统配置的一种特定格式的文件,云计算IaaS (infrastructure as a service)平台以镜像为模板构建虚拟机并分配vCPU、内存等硬件资源,按用户需求提供动态计算资源和个性化的云服务。一个完整的镜像文件通常有GB级的容量,镜像文件的存储、传输和加载都会消耗底层硬件资源,对云平台的资源利用率和服务性能有很大的影响,因此对镜像文件的优化管理已成为云计算研究的关键问题[1-3]。

笔者采用“IBM OpenStack Solution for System X”云解决方案构建了基于私有云架构的云计算实验平台[4],在云平台中根据不同的实验要求配置了多种虚拟机镜像,需要时利用这些镜像创建虚拟机为用户提供实验环境。镜像是虚拟机的基础,对镜像的有效管理和安全控制有利于虚拟机的良好运行,也是使云实验平台保持良好系统性能的主要维护手段。本文针对实验教学中使用云平台时出现的一些问题,如批量部署虚拟机耗时长、云平台长期运行后产生闲置镜像占用资源、虚拟机镜像的升级更新需求等,设计实现了虚拟机镜像管理与维护系统,通过在云平台的持续集成环境中建立脚本对镜像进行定期的回收、更新、清除等维护工作,提升云平台的资源效用比,提高虚拟机集群的部署效率。

1 云实验平台架构简介

云计算实验平台主要为实验教学和应用开发提供环境支持,要求能够根据需求快速创建实验环境,并对云资源的分配和使用情况进行有效的管理和监控。通过在云平台中部署系统资源管理和监控工具、云环境配置工具以及满足实验需求的应用服务,实现对软硬件资源的统一管理和按需分配。云实验平台架构如图1所示,主要包括虚拟化资源层、服务管理层、接口访问层。

(1) 虚拟化资源层。云计算实验平台建立在由多台物理机组成的计算机集群网络中,包括控制节点和计算节点。物理服务器集群提供基础的计算资源、存储设备和网络设备,借助KVM虚拟化技术对底层硬件进行抽象形成统一的虚拟化资源池。

(2) 服务管理层。通过建立和配置云计算节点,部署云计算IaaS服务实现对云平台资源的动态规划和管理,提供虚拟资源管理、服务配置管理、持续集成管理、实时监控管理等众多应用服务。通过部署OpenStack的核心服务组件实现对云资源的管理,根据业务需求创建、配置和管理虚拟机用以提供云服务,这些组件包括存储服务(Glance、Cinder)、计算服务(Nova)、认证服务(Keystone)、网络服务(Neutron)等。设置自动化配置管理工具Chef对云环境进行自动化配置和部署。配置开源的网络资源监控工具Ganglia和Nagios,对云平台的主机运行状况、服务状态以及性能进行实时监控。搭建持续集成环境Jenkins[5]用以持续自动地构建和测试软件项目,监控一些定时执行的任务。这些服务运行于控制节点所配置的独立虚拟机中,并伴随控制节点系统一起启动。利用虚拟机运行有利于服务的迁移和备份,也易于调整服务需要的资源[6]。

(3) 接口访问层。提供云平台的访问入口,接受用户的服务创建请求,提供服务部署和可视化的操作界面。

2 镜像维护功能及实现方法

2.1 持续集成环境

Jenkins是一个开源的持续集成工具,可以用来搭建持续集成自动化测试平台,配置在云环境中,主要用于管理和测试软件项目的执行。持续集成环境包括1个可获取源代码的仓库、1个包含构建脚本的项目以及1个Jenkins服务器,其工作流程如图2所示。

图2 Jenkins工作流程

对镜像的管理和维护功能可以借助持续集成平台下的脚本设计来实现,通过在持续集成环境中部署镜像维护管理所需的脚本,定期构建、编译、运行相应代码实现对镜像生命周期的管理,提供对镜像的更新、回收、清除等服务机制。通过在云平台中部署存储源码的仓库(SVN Repository),用于提交代码和处理源码修改的版本控制。Jenkins的构建项目中需要配置代码仓库地址、触发的方式、构建后的步骤以及邮件通知等信息[7],所有配置都通过其提供的Web界面实现。Jenkins根据构建请求发起相应的操作,通过给定的代码仓库地址URL,将代码拉取到项目对应的工作区执行构建过程。

当云平台中配置了提供Jenkins持续集成的节点后,通过登录Jenkins Web服务器,在可视化的操作界面中选择要执行的项目名称和构建所需的相关参数,就可以开始一次脚本的构建、编译和执行,之后脚本会按照所配置的触发方式和频率进行构建执行。

2.2 镜像的缓存和清除

与云实验平台连接的客户机中配置了镜像的定制环境,用户通过在Linux系统中运行的虚拟化工具Virt-Manager制作一台适用于KVM的虚拟机镜像文件,在进行适当配置后上传到云平台的镜像存储池保存,同时对镜像进行描述的数据字段也存入数据库中。基于OpenStack的云平台支持多种虚拟机镜像格式,不同的镜像格式读写性能也不尽相同[8],本实验平台中制作的镜像文件采用qcow2格式。qcow2格式具有占用磁盘空间小、支持快照、压缩和加密等特性。当定制的镜像文件上传到云平台后就开启了镜像文件的生命周期运转,用户可以按照需要使用不同的镜像创建虚拟机获得实验环境。

OpenStack平台下的镜像管理组件Glance用于镜像的元数据信息管理和镜像存储池的管理。在基于本地存储的虚拟机运行方案中,Nova需要从Glance服务器下载大小为GB级的镜像文件缓存到计算节点本地,该镜像文件是格式为raw的基础镜像,并基于该镜像生成一个运行虚拟机的实例镜像,所有对于虚拟机的写操作都会写入这个实例镜像。在云实验平台中上传了一个新制作的镜像后,每个计算节点还没有缓存该镜像,此时批量部署虚拟机需要长时间等待镜像下载,使虚拟机的启动变得很慢。为此,利用Glance的缓存机制,在部署虚拟机集群前预先通过执行脚本将所需的镜像缓存到计算节点上,有利于提高虚拟机的创建速度。镜像缓存脚本执行的基本流程如下:

(1) 上传一个镜像后在指定计算节点上通过该镜像创建一个虚拟机实例;

(2) 若虚拟机实例创建成功,则获取虚拟机实例ID,否则处理错误并退出;

(3) 在计算节点根据虚拟机实例ID查询虚拟机存放目录下的镜像信息,确定虚拟机实例对应的基础镜像文件名;

(4) 遍历计算节点,将所获取的基础镜像文件从已缓存的计算节点同步到其他未缓存的计算节点。

在云平台中顺序启动多个使用相同镜像创建的虚拟机实例,所消耗的时间包括镜像在网络中传输的时间和在计算节点启动镜像的时间。镜像的缓存相当于对镜像进行预加载,通过启动第一台虚拟机实例将镜像下载到本地,然后把镜像同步到其他计算节点,镜像的同步可以借助对远程同步工具的优化缩短网络传输所用的时间。在镜像文件缓存到所有计算节点的情况下,如果使用该镜像创建多个相同配置的虚拟机,云平台将直接生成运行虚拟机的实例镜像,使虚拟机的启动速度明显提高,适用于需要批量部署实验环境的教学场景。

需要注意的是在计算节点上产生的基础镜像不会随着虚拟机的删除而自动清除,云平台长期运行后会导致基础镜像占用大量磁盘空间。因此在实验平台中配置了对基础镜像进行清除的脚本,用于定期检查缓存镜像的保存时间,对于长期不使用的镜像,在没有虚拟机运行的情况下删除基础镜像文件释放磁盘空间,以提高硬件资源利用率[9]。

2.3 闲置镜像回收

云实验平台的管理员或用户创建一个新的虚拟机时,虚拟机加载镜像,使镜像激活并处于在线状态。当镜像长期不用时处于闲置状态,但仍会占用云平台有限的资源,在一定程度上影响系统的性能,所以有必要及时对闲置的镜像进行回收以释放资源。通过在Jenkins持续集成环境中构建和执行回收镜像资源的脚本,定期对镜像进行扫描获取镜像信息,可以识别出长期闲置不用的镜像资源并进行处理。

镜像资源的相关信息在上传到云平台时会注册到OpenStack的Nova数据库中,实现镜像回收服务需要设置OpenStack数据库的连接配置信息(数据库服务器地址,Nova数据库和Keystone数据库的用户名、密码)、镜像资源生命周期配置信息(资源留存的时长,对用户进行提醒通知的时间)、云平台管理账户配置信息以及Web服务的端口[10]。回收服务启动时读取这些配置信息,连接OpenStack数据库,对镜像的最后修改日期、用户、主机、镜像ID等进行查询操作,比较镜像的最后修改日期和当前日期,判断镜像资源是否处于过期或即将过期的状态,并对镜像资源进行延期、删除等操作。对于已过期的资源,执行自动清除并通知所有者;对于将过期的资源,提醒所有者通过改写镜像的最后修改日期来实现延期。镜像回收的流程见图3。

图3 闲置镜像回收流程

在脚本中设计实现API接口函数,用以获取镜像信息以及对镜像进行筛选、延期和删除等操作,通过连接数据库使用SQL语句来实现查询镜像的过期信息和更新镜像的最后修改日期。在云实验平台中配置自动回收镜像的脚本,可以避免存在和积累闲置的镜像,提高CPU、存储、网络等硬件资源的利用率,减少系统不必要的开销。

2.4 镜像升级更新

在云实验平台的节点上运行着不同的基于Linux系统的虚拟机,它们提供具体的业务服务功能和实验环境支持。在很多情况下,云平台构建的虚拟机需要以操作系统镜像为基础版本,用户基于此系统镜像的虚拟机实例安装实验所需的相关软件并配置相应参数,生成能够满足实验环境要求的虚拟机。基于Linux操作系统发行版的虚拟机镜像需要根据软件安装的需求进行及时的更新升级,这是维护虚拟机实验环境稳定性的需要,也有利于云平台的安全运行。

云实验平台对镜像的更新维护采用在线更新机制,即在虚拟机系统正常运行的状态下执行更新脚本进行软件的升级和更新操作。镜像升级更新的实现过程:选择扫描节点和虚拟机镜像,对镜像和补丁源进行遍历和匹配,获取需要更新的软件补丁包,在线安装补丁,对更新后的虚拟机进行备份形成新的镜像。

对虚拟机镜像补丁的管理可以借助镜像安装操作系统提供的软件包管理工具来实现,软件包管理工具使用特定格式的数据来保存已安装软件的相关信息,并提供了系统配置文件保存软件升级库的信息。本实验平台运行的虚拟机基于RedHat操作系统,可以借助yum方式实现对节点虚拟机镜像补丁的扫描和更新。为了获得较快的更新访问速度,在私有云的网络环境下搭建一个内部补丁服务器[11],用于下载存储从镜像发行方获取的补丁软件包和操作系统版本匹配的补丁信息库,虚拟机镜像更新时从内部补丁服务器获取补丁包进行升级。虚拟机镜像的升级更新主要通过2个脚本来实现:

(1) 补丁源遍历和匹配脚本。主要功能是让所选节点中的虚拟机镜像和补丁信息库扫描比较,通过匹配已安装的包和可获得的包的信息来检查软件包是否已经过期,得到需要更新的软件包补丁列表。脚本执行时以最新的补丁信息库作为虚拟机镜像扫描的参照数据库,然后从rpm数据库文件内提取已安装软件包的信息,与补丁信息库进行对比,确定需要更新的补丁详细信息。镜像扫描的结果记录在数据表中,详细信息包括扫描时间、云节点标识、虚拟机镜像标识、需要更新的软件包名、软件包当前版本、需要更新的版本信息、补丁升级站点等。

(2) 补丁更新脚本。在脚本中配置参数使云节点的虚拟机可以通过yum方式更新补丁,编辑系统配置文件repo文件使yum服务器指向内部补丁服务器。yum服务器能整理出每个rpm软件包的基本信息,如软件名、软件版本、配置文件等,使用yum工具执行更新或安装命令时会从指定的配置文件中解析yum服务器的地址,在更新时清除原有补丁的缓存,从内部补丁服务器中获取匹配的rpm软件包执行安装更新操作[12]。

补丁更新升级成功后对虚拟机进行备份,在云平台管理端使用镜像操作命令更改这个备份的属性,使之成为一个新的镜像。内部补丁服务器设置为定期下载补丁和更新补丁信息库,使存储的软件版本足够满足实验教学的环境要求,能保持虚拟机稳定运行即可,这种方式也解决了软件更新过程中复杂的依赖包安装问题。

3 结语

在云实验平台中对镜像资源的有效管理和维护有利于虚拟机保持良好运行、提供满足实验教学需求的个性化实验环境。通过在云平台中部署脚本实现虚拟机镜像的缓存、回收以及更新升级等维护功能,在一定程度上提高了批量创建虚拟机的效率,能够及时回收实验资源,维护云实验环境的稳定性。镜像维护是云实验平台运维工作的主要内容,利用脚本的自动构建和执行实现对虚拟机镜像的维护,也提高了云平台的运维效率。

References)

[1] 李锋,陆婷婷,郭建华.一种基于重复数据删除的镜像文件存储方法研究[J].计算机科学,2016,43(11):495-498.

[2] 吴凡,宋云奎,徐继伟,等.QoS约束的虚拟机镜像放置优化方法[J].计算机系统应用,2015,24(10):197-203.

[3] 李思阳,罗宇.基于多级索引的云平台镜像管理系统Milance的设计与实现[J].计算机工程与科学,2015,37(9):1637-1642.

[4] 金永霞,孙宁.基于OpenStack的云计算实验平台建设与应用[J].实验技术与管理,2016,33(6):145-149.

[5] Jenkins[EB/OL].[2017-04-10].https://jenkins.io/.

[6] 张小斌.OpenStack企业云平台架构与实践[M].北京:电子工业出版社,2015.

[7] 刘华婷.基于Jenkins快速搭建持续集成环境[EB/OL].(2011-11-24) [2017-04-10].https://www.ibm.com/developerworks/cn/java/j-lo-jenkins/.

[8] 鲁志军,祖立军.云计算虚拟化环境下开源镜像对比分析[J].计算机应用与软件,2015,32(8):84-87.

[9] 黄凯,毛伟杰,顾骏杰.OpenStack实战指南[M].北京:机械工业出版社,2014.

[10] 胡国清,吴春峰.OpenStack中自动回收实例与镜像的最佳实践[EB/OL].(2015-09-14)[2017-04-10].https://www.ibm.com/developerworks/cn/cloud/library/1509_hugq_openstackautocollect/.

[11] 张敬东. Linux服务器配置与管理[M]. 北京:清华大学出版社,2014.

[12] 杨卓然.基于OpenStack的云计算镜像安全管理的研究[D].北京:中国地质大学,2016.

Management and maintenance of virtual machine mirror image at cloud computing experimental platform

Jin Yongxia, Sun Ning

(College of Internet of Things Engineering, Hohai University. Changzhou 213022, China)

In view of some problems in the application of the cloud platform in experimental teaching, a management and maintenance system for the virtual machine mirror image is designed and realized. Through the deployment of scripts in continuous integration environment of the cloud platform, the maintenance functions such as mirror image caching, recycling, updating, upgrading, etc., can be realized. The management and maintenance of the mirror image are beneficial for the virtual machine to maintain good operation, so that the cloud platform can quickly create the experimental environment and recycle the experimental resources in time to provide effective environmental support for the experimental teaching.

cloud computing experimental platform; virtual machine mirror image; management and maintenance; continuous integration environment

10.16791/j.cnki.sjg.2017.11.025

TP393.07

A

1002-4956(2017)11-0102-04

2017-04-26

江苏高校品牌专业建设工程资助项目(PPZY2015B141)

金永霞(1973—),女,宁夏平罗,硕士,实验师,研究方向为云计算实践与应用.

猜你喜欢
镜像文件补丁脚本
酒驾
安奇奇与小cool 龙(第二回)
新旧电脑资料迁移高效帮手
健胃补丁
绣朵花儿当补丁
补丁奶奶
没光驱不要紧 装个免费虚拟的
快乐假期
小编的新年愿望
开发闲置内存,为本本轻松提速