Glance

Glance(OpenStack Image Service)是一个提供发现,注册,和下载镜像的服务。Glance 提供了虚拟机镜像的集中存储。通过 Glance 的 RESTful API,可以查询镜像元数据、下载镜像。虚拟机的镜像可以很方便的存储在各种地方,从简单的文件系统到对象存储系统(比如 OpenStack Swift)。
在 Glance 里镜像被当做模板来存储,用于启动新实例。Glance 还可以从正在运行的实例建立快照用于备份虚拟机的状态。

Glance 架构

  1. Glance-api:接收REST API的请求,然后通过其他模块(glance-registry及image store)来完成诸如镜像的查找、获取、上传、删除等操作,默认监听端口9292。
    Glance 支持两种 RESTful API V1和V2。V1版本的实现,具有 glance-api 和 glance-registry 两个 WSGI 服务,二者都提供 RESTful API,但glance-registry 提供的 RESTful API 是给 glance-api 使用的,并不开放给外部用户。

  2. Glance-registry:用于与MariaDB数据库交互,用于存储或获取镜像的元数据(metadata),默认监听端口9191。
    V2版本的实现就是将 glance-registry 集成到了 glance-api 内部,这么做的好处是减少了一个中间的处理环节。V1版本在 Newton 中标注被弃用,目前已经被移除。

  3. Store Adapter:通过提供的存储接口来获取镜像。

  4. Database:Image的metadata会保持到database中,主要使用MySQL。
    在这里插入图片描述

支持的镜像格式

raw

无格式镜像,是最简单的一种格式,KVM和Xen管理程序都支持这种格式。

vhd

Virtual Hard Disk。经常被VMware、Xen、Microsoft、VirtualBox等公司使用的格式。

vhdx

是vhd格式的增强版。它支持更大的磁盘大小,并在断电时保护数据不受损坏。

vmdk

Virtual Machine Disk,另一种被很多虚拟机监控器使用的格式。

vdi

Virtual Disk Image,被VirtualBox虚拟机监视器和QEMU仿真器支持的镜像文件。

iso

ISO格式是用只读的ISO 9660(也称为ECMA-119)文件系统格式化的磁盘镜像,通常用于cd和dvd。

qcow2

QCOW2 (QEMU copy-on-write version 2)格式通常与KVM hypervisor一起使用。它可以动态扩展,支持写时复制。

aki

这表示Glance中存储的是Amazon Kernel Image (AKI)。它是一个内核文件,hypervisor最初将加载它来引导映像。对于Linux机器,这将是一个vmlinuz文件。

ari

这表明Glance中存储的是Amazon Ramdisk Image (ARI)。它是一个可选的ramdisk文件,在引导时挂载。对于Linux机器,这将是一个initrd文件。

ami

这表示Glance中存储的是Amazon Machine Image (AMI)。它是原始格式的虚拟机映像。

支持的后端存储

Glance本身不存储镜像,真正的镜像放在后端存储。
用户可以通过配置/etc/glance/glance-api.conf[glance_store]来设置glance的默认存储。
Glance支持多种后端存储:

  • file:默认配置,在本地的文件系统里进行保存镜像。
  • http:可以使用http服务获取镜像。这种方式只能只读。
  • rbd:使用Ceph的RBD接口存储到Ceph集群中。
  • swift:OpenStack Object Storage
  • cinder:OpenStack Block Storage
  • vmware

镜像状态

queued

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

saving

表示镜像的原始数据目前正在上传到Glance。当一个镜像被POST /images调用注册,并且存在一个x-image-meta-location时,该镜像将永远不会处于saving状态(因为镜像数据已经在其他一些位置可用)。

uploading

表明已经进行了镜像上传。在此状态下,不允许调用PUT /file。(请注意,对一个已经在队列中的镜像调用PUT /files 会使得镜像变成saving状态。当镜像处于saving状态时不允许执行PUT /stage操作。因此,不能对相同的镜像使用这两种上传方法。)

importing

表示已经进行了导入操作,但镜像还没有准备好使用。

active

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

deactivated

表示不允许任何非管理员用户访问镜像数据。禁止下载镜像,也禁止像图镜像导出和镜像克隆这样可能需要镜像数据的操作。

killed

表示在上传镜像数据时发生了错误,并且该镜像不可读。

deleted

Glance保留了有关镜像的信息,但已不再可用。处于这种状态的镜像将在以后被自动删除。

pending_delete

类似于删除,但Glance还没有删除镜像数据。处于这种状态的镜像不能恢复。
在这里插入图片描述

Glance工作流程

Admin Keystone GlanceClient glance_api glance_registry Cinder 镜像申请 获得token add-image请求 + token 验证token 通过验证 创建镜像 鉴权 通过验证 创建镜像 添加数据库信息 添加成功 存储镜像 鉴权 通过验证 存储镜像 Admin Keystone GlanceClient glance_api glance_registry Cinder
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐