第一:glance是什么?

glance是Image service的项目代号,是Openstack的镜像服务组件,为创建虚拟机提供镜像服务。

第二:glance的功能

Glance主要提供了一个虚拟机镜像文件的存储、查询和检索服务,通过提供一个虚拟磁盘映像目录和存储库,为Nova的虚拟机提供镜像服务

具体的:REST API的体现就是一个URI,而在glance中通过一个URI地址来唯一标识一个镜像的形式如下

<Glance Server Location>/v1/images/<ID>

<Glance Server Location>:glance服务按照的位置

/v1:使用v1版本,详见四

/images:请求的类型为镜像

/<ID>:一个uuid,在glance中全局唯一

第三:glance的详解:

两个版本:Glance REST API的版本V1和V2

v1:只提供了基本的image和user操作功能:镜像创建、删除、下载、列表、详细信息查询、更新,以及镜像成员的创建、删除和列表。

v2:1)支持v1所支持的功能

   2)镜像 location 的添加、删除和修改等操作

   3)metadata  namespace 操作

   4)image tag 操作

相同点:V1 和V2对 image store 的支持是相同的

V1的实现上,有glance-api和glance-registry两个WSGI 服务,都提供REST API,只不过glance-API的REST API对外使用,glance-registry的API只由glance-api使用。

结合图示理解glance:

而 V2在实现上,把 glance-registry 的功能合并到了 glance-api 中,减少了一个中间环节

注:v1必将被淘汰(官网说的)

glance的组件:

glance-api
接受api请求,并提供相应操作,包括发现,检索,存储
glance-registry
存储、处理、检索镜像的元数据,元数据包括例如镜像大小、类型等
Database
可以选择自己喜欢的数据库存储镜像元数据,大多数使用 MySQL.
Storage repository for image files
指的是存储镜像文件的仓库或者称为backend,可以是:
1.本地文件系统(或者任何挂载到glance-api控制节点的文件系统)
2.对象存储Object Storage(swift)
3.块存储RADOS(ceph)
4.VMware数据存储
5.HTTP
Metadata definition service
为厂商、管理员、openstack其他服务提供一个公用的API,并且用户可以自定义自己的元数据(有意义的)。
这个元数据功能非常强大,可以被用在不同类型的资源
image 镜像本身
artifacts
volumes 卷
flavors 套餐
aggregates 主机聚合
具体的可以拿主机聚合举例,
主机集合即多台物理主机的集合体,这个集合中的物理主机具有一个或多个硬件方面的优势,比如说内存大,固态磁盘等,专门用来部署数据库服务。

我们可以制作一个镜像,然后在该镜像内定义好元数据:绑定上述的主机结合。这样凡是用到该镜像安装系统的虚拟机,都会被指定到该集合内,然后从该集合内选出一台物理机创建出虚机.

第四:镜像的数据存放与访问权限

数据存放:

镜像的数据包括:1.镜像元数据;2.镜像本身即chunk

其中镜像的元数据是通过glance-registry保存到数据库中,而镜像的chunk数据是通过Glance store Drivers存放到各种bakcend store中

访问权限:

public 公共的:可以被所有的 tenant 使用。

private 私有的/项目的:只能被 image owner 所在的project使用。

shared 共享的:一个非共有的image 可以 共享给另外的project。

protected 受保护的:protected 的 image 不能被删除。

第五:镜像及任务的各种状态

官网链接:https://docs.openstack.org/developer/glance/statuses.html

镜像处理时的请求流程图:(从一个状态移动到下一个状态的表示形式。)

镜像在glance服务中有一下的状态:

queued:没有上传 image 数据,只有db 中的元数据。

saving:正在上传 image data,当注册一个镜像使用POST  /images并且当前携带了一个x-image-meta-location头,这个镜像将不会进入saving状态(镜像的数据已经是可以获得的,不能重传)

active:上传成功,可以被使用的镜像,是正常的状态

deactivated:不是admin用户没有权限访问镜像数据,禁止下载镜像,也禁止像镜像导出和镜像克隆之类的操作(请求镜像数据的操作)

killed:镜像在上传过程中发生错误,并且镜像是不可读的

deleted:glance已经保存了该镜像的数据,但是该镜像不再可用,处于该状态的镜像将在不久后被自动删除。

pending_delete: 与deleted相似,glance还没有清除镜像数据,只是处于该状态的镜像不可恢复。

在源码中有这样的代码,可帮助我们总结镜像的状态变化

   'queued' => ('saving', 'active', 'deleted')
   'saving' => ('active', 'killed', 'deleted', 'queued')
     'active' => ('queued', 'pending_delete', 'deleted')
   'killed' => ('deleted')
     'pending_delete' => ('deleted')
   'deleted' => ()

   注解:saving=>active;saving=>killed;saving=>deleted;saving=>queued他们之间是这种流程的

任务的状态

pending

任务已经保留,但是还没一开始处理

processing

正在执行

success

执行成功

failure

执行失败

第六:glance的工作流程详解

注解:

A client

然后使用glance服务的应用程序,可以是命令行工具,horizon,nova等

REST API

glance是一个client-server架构,提供一个REST API,而使用者就是通过REST API来执行关于镜像的各种操作。

Glance Domain Controller

是glance内主要的中间件实现,就相当于一调度员,作用是将glance内部服务的操作分发到各层(Auth认证,Notifier,Policy策略,Quota,Location,DB数据库连接)具体任务由每个层实现。

  • 第一层:Auth

验证镜像自己或者它的属性是否可以被修改,只有管理员和该镜像的拥有者才可以执行该修改操作,否则报错。

  • 第二层:Property protection

由glance domain controller控制的七层组件

是可选的层,只有在glance的配置文件中设置了property_protection_file参数才会生效,它提供了两种类型的镜像属性:

1.核心属性,是在镜像参数中指定的;2元数据属性,是任意可以被附加到一个镜像上的key/value

该层的功能就是通过调用glance的public API来管理对meta属性的访问,你也可以在它的配置文件中限定这个访问

  • 第三层:Notifier

把下列信息添加到queue队列中

1.关于所有镜像修改的通知

2.在使用过程中发生的所有的异常和警告

  • 第四层:Policy

负责:

1.定义操作镜像的访问规则rules,这些规则都定义在/etc/policy.json文件中

2.监控rules的执行

  • 第五层:Quota

如果针对一个用户,管理员为其规定好他能够上传的所有镜像的大小配额,此处的Quota层就是用来检测用户上传是否超出配额限制:

1.如果没有超出配额限制,那么添加镜像的操作成功

2.如果超出了配额,那么添加镜像的操作失败并且报错。

  • 第六层:Location

与Glance Store交互,如上传下载等。由于可以有多个存储后端,不同的镜像存放的位置都被该组件管理。

负责:

1.当一个新的镜像位置被添加时,检测该URI是否正确。

2.当一个镜像位置被改变时,负责从存储中删除该镜像。

3.阻止镜像位置的重复

  • 第七层:DB

1.实现了与数据库API的交互

2.将镜像转换为相应的格式以记录在数据库中。并且从数据库接收的信息转换为可操作的镜像对象。

Registry Layer

属于可选的层,用来组织安全。

通过使用这个单独的服务,来控制Glance Domain Controller与Glance DB之间的通信。

Glance DB
glance服务使用统一一个核心库Glance DB,该库对glance内部所有依赖数据库的组件来说是共享的。

Glance Store

用来组织处理Glance和各种存储后端的交互。

所有的镜像文件操作都是通过调用Glance Store库执行的,它负责与外部存储端和(或)本地文件系统的交互。Glance Store提供了一个统一的接口来访问后端的存储。

第七:glance与其他服务的关系

针对glance来说,它的客户端Glance Cli可以是:

1.glance的命令行工具

2.Horizon

3.nova

同keystone一样,glance是Iaas的另外一个中心,keystone是关于权限的中心,而glance是关于镜像的中心。glance可以被终端用户或者nova服务访问:接受磁盘或者镜像的API请求和定义镜像元数据的操作。

第八:Disk和Container格式

当我们添加一个镜像到glance时,你必须指定虚拟机的disk格式和container格式,关于disk格式请自行研究kvm等虚拟。

disk和container格式是每个部署的基本配置,常用的格式如下:

1.Disk Format

不同的虚拟化应用的厂针有不同的虚拟机镜像的disk格式:

  • raw

    This is an unstructured disk image format

  • vhd

    This is the VHD disk format, a common disk format used by virtual machine monitors from VMware, Xen, Microsoft, VirtualBox, and others

  • vhdx

    This is the VHDX disk format, an enhanced version of the vhd format which supports larger disk sizes among other features.

  • vmdk

    Another common disk format supported by many common virtual machine monitors

  • vdi

    A disk format supported by VirtualBox virtual machine monitor and the QEMU emulator

  • iso

    An archive format for the data contents of an optical disc (e.g. CDROM).

  • ploop

    A disk format supported and used by Virtuozzo to run OS Containers

  • qcow2

    A disk format supported by the QEMU emulator that can expand dynamically and supports Copy on Write

  • aki

    This indicates what is stored in Glance is an Amazon kernel image

  • ari

    This indicates what is stored in Glance is an Amazon ramdisk image

  • ami

    This indicates what is stored in Glance is an Amazon machine image

2.Container Format

容器container格式是指虚拟机映像是否包含一个文件格式,该文件格式还包含有关实际虚拟机的元数据。

需要注意的是:容器格式字符串在当前并不会被glance或其他OpenStack组件的使用,所以如果你不确定,简单的将容器格式指定bare是安全的。

你可以设置如下容器格式:

  • bare

    This indicates there is no container or metadata envelope for the image

  • ovf

    This is the OVF container format

  • aki

    This indicates what is stored in Glance is an Amazon kernel image

  • ari

    This indicates what is stored in Glance is an Amazon ramdisk image

  • ami

    This indicates what is stored in Glance is an Amazon machine image

  • ova

    This indicates what is stored in Glance is an OVA tar archive file

  • docker

    This indicates what is stored in Glance is a Docker tar archive of the container filesystem

openstack之glance基础的更多相关文章

  1. OpenStack实践系列①openstack简介及基础环境部署

    OpenStack实践系列①openstack简介及基础环境部署 一.OpenStack初探1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运 ...

  2. OpenStack:安装Glance

    >安装Glance1. 安装# apt-get install glance python-glanceclient删除sqlite文件rm -f /var/lib/glance/glance. ...

  3. openstack初始化Glance数据库时报错解决方式

    环境为win7+virtualbox 中的centos6.5 安装Glance 的包 yum install openstack-glance python-glanceclient -y 配置Gla ...

  4. openstack的glance、nova、cinder使用ceph做后端存储

    块设备与 OPENSTACK 通过 libvirt 你可以把 Ceph 块设备用于 OpenStack ,它配置了 QEMU 到 librbd 的接口. Ceph 把块设备映像条带化为对象并分布到集群 ...

  5. openstack核心组件——glance— 镜像服务(6)

    云计算openstack核心组件——glance— 镜像服务(6)   一.glance介绍:              Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像 ...

  6. openstack项目【day23】:glance基础

    本节内容 一 什么是glance 二 为何要有glance 三 glance的功能 四 glance的两个版本 五 镜像的数据存放 六 镜像的访问权限 七 镜像及任务的各种状态 八 glance包含的 ...

  7. openstack 之~keystone基础

    第一:keystone是什么? keystone是 OpenStack Identity Service 的项目名称,是一个负责身份管理验证.服务规则管理和服务令牌功能.它实现了openstack的i ...

  8. openstack之glance部署及操作

    由于时间关系简单的架构图就先不展示了.后续的更新会贴上... 部署glance 安装memcache服务 yum install memcached python-memcached systemct ...

  9. Ceph与OpenStack的Glance相结合

    http://docs.ceph.com/docs/master/rbd/rbd-openstack/?highlight=nova#kilo 在Ceoh的admin-node上进行如下操作: 1. ...

随机推荐

  1. mysql中cast() 和convert()的用法讲解

    一.在mysql操作中我们经常需要对数据进行类型转换.此时我们应该使用的是cast()或convert(). 二.两者的对比 相同点:都是进行数据类型转换,实现的功能基本等同 不同点:两者的语法不同, ...

  2. [SDOI2018]荣誉称号

    题解: 并不需要什么算法 首先我们随便画一画就会发现 能画出一颗满二叉树 然后要满足每个点从上往下的路径和都相同(%m意义下) 一个点上可能对应了多个点 然后这样我们可以暴力dp $2^k*m^2+n ...

  3. 【bzoj4817】[Sdoi2017]树点涂色&&bzoj3779-重组病毒

    题解: 两道几乎差不多的题(所以说当年sdoi考了道原题) 都是将树上一段改为新颜色询问颜色数目 可以把改成新颜色这个操作看成access操作 然后通过线段树+dfs序来维护 另外换根了为什么还可以用 ...

  4. python基础——字符串、编码、格式化

    1.三种编码:ascii Unicode utf8 2.字符串和编码数字的两个函数:ord(字符转数字ord(‘A’)=65)和 chr(数字转字符chr(65)=A) 3.bytes存储编码,记住两 ...

  5. 将input或textarea设置为disabled的样式问题

    input:disabled{ -webkit-text-fill-color: #333;//是用来做填充色使用的 -webkit-opacity: 1; color: #333; } textar ...

  6. 今天才知道原来我还没弄清楚js中全局变量和局部变量的定义...

    查资料看到这段还不错,来源:原文:https://blog.csdn.net/czh500/article/details/80429133 粘过来记录一下... 1.使用var声明变量,在方法内部是 ...

  7. AtCoder Regular Contest 101 (ARC101) D - Median of Medians 二分答案 树状数组

    原文链接https://www.cnblogs.com/zhouzhendong/p/ARC101D.html 题目传送门 - ARC101D 题意 给定一个序列 A . 定义一个序列 A 的中位数为 ...

  8. Codechef CHSIGN Change the Signs(May Challenge 2018) 动态规划

    原文链接http://www.cnblogs.com/zhouzhendong/p/9004583.html 题目传送门 - Codechef CHSIGN 题意 第一行,一个数$T$,表示数据组数. ...

  9. Django1.11.7配置静态文件

    Django配置静态文件分为三步 1.建文件夹 2.设置setting 3.页面引用 1.文件目录结构 在APP下新建static文件夹,将js和css文件放入文件夹 2.配置settings.py ...

  10. day24 面向对象,交互,组合,命名空间,初始继承

    面向对象的命名空间: #属性:静态属性 (直接和类名关联或者直接定义在class下的变量) # 对象属性 (在类内和self关联,在类外和对象名关联的变量) # 动态属性(函数) class Foo: ...