在传统 IT 环境下,安装一个系统是要么从安装 CD 从头安装,要么用 Ghost 等克隆工具恢复。这两种方式有如下几个问题:
如果要安装的系统多了效率就很低
时间长,工作量大
安装完还要进行手工配置,比如安装其他的软件,设置 IP 等
备份和恢复系统不灵活
云环境下需要更高效的解决方案,这就是 Image。
Image 是一个模板,里面包含了基本的操作系统和其他的软件。
举例来说,有家公司需要为每位员工配置一套办公用的系统,一般需要一个 Win7 系统再加 MS office 软件。OpenStack 是这样的:
先手工安装好这么一个虚机;
然后对虚机执行 snapshot,这样就得到了一个 image;
当有新员工入职需要办公环境时,立马启动一个或多个该 image 的 instance(虚机)就可以了。
在这个过程中,第 1 步跟传统方式类似,需要手工操作和一定时间。
但第 2、3 步非常快,全自动化,一般都是秒级别。
而且 2、3 步可以循环做。
比如公司新上了一套 OA 系统,每个员工的 PC 上都得有客户端软件。
那么可以在某个员工的虚机中手工安装好 OA 客户端,然后执行 snapshot ,得到新的 image,以后就直接使用新 image 创建虚机就可以了。
另外,snapshot 还有备份的作用,能够非常方便的恢复系统。
Glance是OpenStack镜像服务,用来注册、登陆和检索虚拟机镜像。Glance服务提供了一个REST API,使你能够查询虚拟机镜像元数据和检索的实际镜像。通过镜像服务提供的虚拟机镜像可以存储在不同的位置,从简单的文件系统对象存储到类似OpenStack对象存储系统。
默认情况下,上传的虚拟机镜像存储路径为
/var/lib/glance/images/
Glance负责镜像文件的注册、查询和存储管理。
镜像使用URI作为唯一标识。URL符合以下格式:
/images/
一般glance部署完毕,OpenStack默认的将用户上传的镜像文件保存在/var/lib/glance/images中,可以在这个文件路径下,查看glance管理的镜像文件。下面就是在配置glance以后该路径下的一个镜像文件。
root@controller:/# cd /var/lib/glance/images
root@controller:/var/lib/glance/images# ls
40056951-e712-47f2-b91b-a3c03cd37dbe
镜像状态是glance管理镜像重要的一个内容,glance组件给整个OpenStack提供的镜像查询和检索,glance可以通过虚拟机镜像的状态感知某一镜像的可用状态。一般来讲,OpenStack中镜像的状态分成以下几种:
Queued:Queued状态这是一种初始化镜像状态,在镜像文件刚刚被创建,在glance数据库中已经保存了镜像标示符,但还没有上传至glance中,此时的glance对镜像数据没有任何描述,其存储空间为0。
Saving:Saving状态是镜像的原始数据在上传中的一种过度状态,它产生在镜像数据上传至glance的过程中,一般来讲,glance收到一个image请求后,才将镜像上传给glance。
Active:Active状态是当镜像成功上传完毕以后的一种状态,它表明glance中可用的镜像。
Killed:Killed状态出现在镜像上传失败或者镜像文件不可读的情况下,glance将镜像状态设置成Killed。
Deleted:Deleted状态表明一个镜像文件马上会被删除,只是当前glance这种仍然保留该镜像文件的相关信息和原始镜像数据。
Pending_delete:Pending_delete状态类似于deleted,虽然此时的镜像文件没有删除,但镜像文件不能恢复的。
图中描述的是glance中镜像文件的状态转换过程,正常情况一个镜像一般会经历Queued、Saving、Active和Deleted过程,其他几种状态则是只有镜像出现异常时特殊情况才会出现。
(3)磁盘格式(Disk Forma)
glance中的磁盘格式指的是虚拟机镜像的磁盘格式。在虚拟机的创建时,需要指定镜像的磁盘格式。下面是OpenStack支持的镜像文件磁盘格式。
(4)容器格式(Container Format)
从文件角度,glance中的容器格式是指虚拟镜像的文件格式,glance对镜像文件进行管理,往往把镜像元数据装载与一个“容器”(信封)中。在这个容器中包含了虚拟机的元数据(metadata)和其他相关信息等数据。在虚拟镜像文件创建的时候,需要管理员指定镜像的Container format。
它的设计模式采用C/S架构模式,Client通过Glance提供的REST API与Glance的服务器(Server)程序进行通信,Glance的服务器程序通过网络端口监听,接收Client发送来的镜像操作请求,基本架构如图所示。
Glance-api:接收REST API的请求,然后通过其他模块(glance-registry及image store)来完成诸如镜像的查找、获取、上传、删除等操作,默认监听端口9292。
Glance-registry:用于与MariaDB数据库交互,用于存储或获取镜像的元数据(metadata);通过glance-registry,可以向数据库中写入或获取镜像的各种数据,glance-registry监听端口9191。
Store Adapter:是一个存储的接口层,通过这个接口,glance可以获取镜像,image store支持的存储有Amazon的S3、OpenStack本身的Swift,本地文件存储和其他分布式存储。
Glance服务安装的日志和调试信息,例如:debug、日志文件路径log_file等参数
Glance服务的API服务器的相关信息。例如:服务绑定的IP地址、端口bind_port等参数
Registry服务的相关信息,例如:Registry服务的网络地址、监听的端口号、glance与Registry间通信的协议等
系统消息相关参数,该部分主要配置glance与系统消息的收发。消息队列rabbitmq的IP地址、监听端口等参数
镜像后端存储的相关配置,一般情况下,glance-api.config中包含普通文件存储、swift、S3、RBD等较为常见的存储设备的信息配置。
glance-api-paste.ini文件
glance的日志文件