专栏名称: 云技术实践
关注云计算,云技术,云运维,云存储,存储,分布式,OpenStack,SDN,Ceph,虚拟化,运维,分享在云计算/虚拟化/运维项目实施中的资讯、经验、技术,坚持干货。
目录
相关文章推荐
51好读  ›  专栏  ›  云技术实践

一文读懂OpenStack Glance是什么

云技术实践  · 公众号  · 架构  · 2017-07-11 20:16

正文

OpenStack Glance是一种提供发现,注册,和下载的镜像服务。OpenStack Glance是一个提供虚拟机镜像的集中式仓库。通过Glance的RESTful API,可以查询镜像元数据下载镜像。虚拟机的镜像可以很方便的存储在各种地方,从简单的文件系统到对象存储系统(如OpenStack Swift项目)。


在Glane里镜像被当做模板来存储,用于启动新实例。 Glance是一个可以组织和管理大量虚拟磁盘镜像的独立服务。Glance为云磁盘镜像提供了一个端到端的解决方案。它还可以从正在运行的实例建立快照用于备份虚拟机的状态。


Glance 组件

Glance有以下几个组件:

  • glance-api, 接收镜像发现,查询,和存储镜像的api调用。

  • glance-registry, 存储,处理和查询镜像的元数据信息。

  • database, 存储镜像元数据

  • repository, 集成了各种openstack组件,比如文件系统,S3, 以及其它的http镜像存储。




Glance接收来自终端用户或Nova组件的镜像的API请求,镜像文件可以存储在对象存储服务swift上或者其它存储仓库。


镜像服务支持以下几种后端存储:

  • 文件系统 Openstack的镜像默认存储在文件系统后端。在本地的文件系统里进行保存镜像。

  • 对象存储 swift

  • Block Storage cinder.

  • VMware ESX/ESXi or vCenter.

  • S3 亚马逊的s3等等.

  • HTTP 可以使用英特网上的http服务获取镜像。这种方式只能只读。

  • RADOS Block Device (RBD) 使用Ceph的RBD接口存储到Ceph集群中

  • Sheepdog 专为QEMU/KVM提供的一个分布式存储系统.

  • GridFS 使用MongoDB存储镜像.


Glance 架构

Glance具有客户端 - 服务器体系结构,并提供Rest API,通过Rest API来请求服务。通过客户端发送Rest API的请求,并等待Keystone认证。 Glance域控制器管理所有内部操作,这些分为很多层,每层实现自己的任务。


Glance store是glacne和外部存储后端或者本地文件系统提供通信的一个层,并提供统一的访问接口。数据库为每一个组件提供一个集中的数据访问。


Glance架构由以下几个组件组成:

  • Client - 任何应用都可以通过Client来使用glance服务。

  • REST API – 通过REST方式暴露Glance功能。

  • Database Abstraction Layer (DAL) –统一Glance和数据库交互的一个应用层接口。

  • Glance Domain Controller –完成glance主要的功能的中件间:

  • authorization,notifications, policies, database connections.

  • Glance Store – 集成glance和各种后端存储服务.

  • Registry Layer –可选层,通过使用单独的服务来组织domain和DAL之间的安全通信。




Glance 格式

当我们上传镜像时,我们需要指定虚拟机镜像的格式。 Glance支持各种格式,如磁盘格式和容器格式。虚拟磁盘类似于物理服务器的引导驱动程序,只会压缩到文件中。不同的虚拟化支持不同的磁盘格式。


磁盘格式
虚拟机镜像的磁盘格式是底层磁盘镜像的格式。以下是OpenStack支持的磁盘格式。


容器格式

正如OpenStack glance也支持容器格式的概念,它描述了文件格式,并包含关于实际虚拟机的额外元数据。

以下是OpenStack Glance支持的Container格式.




这里注意下,Glance或其他OpenStack组件目前并不支持使用容器格式。如果不确定,最好使用'bare'作为容器格式,比如我们上传镜像到glance,bare就是没有容器.


使用如下命令上传镜像到glance

root@CONTROLLER:~#glance image-create --name "cirros-0.3.4-x86_64" --file/tmp/images/cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-formatbare --visibility public --progress

这里使用image-create来上传镜像,其--name表示上传镜像后镜像的名称,--file表示要上传镜像的路径,磁盘格式--disk-format以qcow2和--container-format为bare。可见性--visibility public表示镜像可以公开访问,进度--pogress表示显示上传进度条。



Glance 状态流

上传镜像时Glance会显示镜像的各种状态。当我们第一步上传镜像时,第一步就是入队列,经过短时间的验证,镜像进入queued状态,保存镜像并开始上传。之后镜像会进入saving的状态,表示还没有完全上传完毕。镜像完全上传后,状态会变成Active。如果上传失败,将会变成killed或deleted状态。另外我们还可以使用命令停用或者重新激活完全上传成功的镜像。


下图为glance镜像的状态流转图。




queued

在Glance registry里已经通过验证可以开始存储. 暂时没有镜像数据被上传到glance,镜像大小在上传时设置为0。

saving

表示正在上传镜像到Glance。通过POST /images接口注册镜像,如果有x-image-meta-location http头,这个镜像将不会处于saving状态(因为镜像数据在其他位置已经可用)。

active

表示在glance里是一个完全可用的镜像。当镜像上传成功后,会切换到这个状态。.

deactivated

表示不允许任何非管理的用户访问。禁止下载镜像,同时也禁止所以可能获取镜像数据的操作,比如镜像导出和镜像克隆等操作。

killed

表示上传镜像时发生错误,这个镜像不可用。

deleted

Glance仍然保留了镜像的相关信息,但不能在被使用。这个状态下的镜像将会被自动删除。

Deactivatingand Reactivating an image

可以停用镜像。也可以重新激活,或者删除。当管理员对镜像进行更新时,可以先把镜像停用,这样镜像对非管理员用户就不可见了,当更新完成后,可以重新激活镜像,以便用户可以用更新后镜像启动虚拟机。








请到「今天看啥」查看全文