OpenStack_Glance
什么是Glace
Glance即image service(镜像服务),就是为创建虚拟机提供镜像的地方
为什么要有Glance
这个问题问的好,openstack就是构建Iaas平台对外提供虚拟机的啊,构建虚拟机没有镜像怎么行,而且还不能只有一个
Glance的功能
Glance服务使用户能够发现,注册,检索虚拟机的镜像,它提供一个能够查询虚拟机镜像元数据和检索真实镜像的REST API(实际上就是一个URL,glance就是通过url来标志一个镜像的)
<Glance Server Location>/v1/image/<ID>
<Glance Server Location>:glance服务安装的位置
/v1:使用v1版本
/images:请求的类型为镜像
/<ID>:一个uuid,在glance中全局唯一
Glance的两个版本
在Newton之前的版本中,glance支持两种REST API V1和V2,两者区别还是很明显的:
(1). V1只提供了基本的image和member操作功能:镜像创建、删除、下载、列表、详细信息查询、更新,以及镜像tenant成员的创建、删除和列表。
(2). V2除了支持V1的所有功能外,主要是增加了如下功能:
- 镜像 location 的添加、删除和修改等操作
- metadata namespace 操作
- image tag 操作
(3).V1 和V2对 image store 的支持是相同的。
V1版本的实现,具有glance-api和glance-registry两个WSGI服务,二者都提供REST API,但需要强调的一点是:glance-registry提供的REST API是给glance-api使用的,即The registry is a private internal service meant for use by OpenStack Image service. Do not expose this service to users。
v2的实现就是将glance-registry集成到了glance-api内部,这么做的好处是减少了一个中间的处理环节
在Newton版本中V1已经过时了,并且V1最终会被移除
镜像的数据存放
镜像的数据包括:1.镜像元数据;2.镜像本身即chunk
其中镜像的元数据是通过glance-registry保存到数据库中,而镜像的chunk数据是通过Glance store Drivers存放到各种bakcend store中。
在配置glance时我们使用file作为后端,即将镜像存放于本地文件系统中,上传或者存储镜像的目录位于按照glance服务的机器上(控制节点),默认目录是:/var/lib/glance/images/,我们应该确认该目录有足够的空间可以使用。
需要特别强调的一点是:fileh后端通常位于控制节点本身,因而这种后端并不适用于多节点部署。
在glance服务上周星期的运行很多进程来支持缓存。在做glance集群时要考虑使用复制服务来确保一致性和可用性,其他的周期性的进程包括auditors, updaters, and reapers。
镜像的访问权限
public 公共的:可以被所有的项目使用。
private 私有的/项目的:只能被image owner所在的project使用(即只能在一个项目中使用)
shared 共享的:一个非共享的image可以共享给其他project。
protected 受保护的:protected的image不能被删除
镜像及任务的各种状态
下图为官网图

注解:
queued:没有上传image数据,只有db中的元数据
saving:正在上传image data。
active:当镜像上传完毕,镜像就可以被使用,此时属于active
deactivated:表示任何非管理员用户都无权访问镜像数据,禁止下载镜像,也禁止镜像导出和镜像克隆之类的操作(请求镜像数据的操作)
killed:表示上传过程中发生错误,并且镜像不可读
deleted:glance已经保存了该镜像的数据,但是该镜像不在可用,处于该状态的镜像将在不久后被自动删除
pending_delete:与delete想说,glance还没有清除镜像数据,处于该状态的镜像不可恢复
小结:
'queued' => ('saving', 'active', 'deleted')
'saving' => ('active', 'killed', 'deleted', 'queued')
'active' => ('queued', 'pending_delete', 'deleted')
'killed' => ('deleted')
'pending_delete' => ('deleted')
'deleted' => ()
任务的状态
pending:任务已经保留,但是还没开始处理
processing:正在执行
success:执行成功
failure:表示在执行任务的过程中发生了错误,并且不能继续执行
Glance包含的组件
glance-api
接受api请求,并提供相应操作,包括发现、检索、存储
glance-registry
存储、处理、检索镜像的元数据,元数据包括例如镜像大小、类型等
Database
可以选择组件喜欢的数据库存储进行元数据,大多数使用MySQL或者SQLite.
Storage repository for image files
指的是存储镜像文件的仓库或者称为backend,可以是:
1本地文件存储(或者任何挂载到glance-api控制节点的文件系统)
2.对象存储Object Stroage(Swift)
3.块存储RADOS(ceph)
4.VMware数据存储
5.HTTP
Glance和OpenStack其他服务的关系
对glance来说,他的客户端Glance Cli可以是:
1.glance的命令行工具
2.Horizon
3.nova
同keystone一样,glance是Iass的另外一个中心,keystone是关于权限的中心,而glance是关于镜像的中心。glance可以被终端用户或者nova服务访问:接受磁盘或者镜像的API请求和定义镜像元数据的操作
Glance工作流程

注解:
A client
然后使用glance服务的应用程序,可以是命令行工具,horizon,nova等
REST API
glance是一个client-server架构,提供一个REST API,而使用者就是通过REST API来执行关于镜像的各种操作。
Glance Domain Controller(glance域控制器)
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之间的通信
Clance DB
glance服务使用同一一个核心库Glance DB,该库对glance内部所有依赖数据库的组件来说是共享的。
Glance Store
用来组织处理Glance和各种存储后端的交互
所有有的进行文件操作都是通过调用Glance Store库执行的,它负责与外部存储端和(或)本地文件存储系统的交互。
Glance Store提供了一个统一的接口来访问后端的存储
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的更多相关文章
- OpenStack 多节点纳管 vCenter 5.5
目录 目录 测试环境 Nova 配置OpenStack 纳管 vCenter 虚拟机 Glance 配置OpenStack 纳管 vCenter 镜像 Cinder 配置OpenStack 纳管 vC ...
- VMware 接入 Openstack — 使用 Openstack 创建 vCenter 虚拟机
目录 目录 软件环境 前言 Openstack 接口驱动 使用 KVM 在 Compute Node 上创建虚拟机的流程 使用 VCDirver 在 vCenter 上创建虚拟机的流程 配置 vCen ...
随机推荐
- shell监控网卡流量
#!/bin/bashRx=`ifconfig eno16777736 | grep RX | grep packets | awk '{print $5}'`Tx=`ifconfig eno1 ...
- CentOS下WDCP下的MYSQL开启远程连接
1.首先要在防火墙开启3306端口访问 2.然后做如下操作 如何开启MySQL的远程帐号-1)首先以 root 帐户登陆 MySQL 在 Windows 主机中点击开始菜单,运行,输入"cm ...
- vim高亮设置
vim高亮设置 前提: 查看vim是否完整安装 rpm -qa | grep vim 若完整安装,则会出现如下相关信息 vim-filesystem-7.4.629-5.el6.x86_64 vim- ...
- 每天一个linux命令(24)--Linux文件类型与扩展名
linux 文件类型和Linux 文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如 file.txt file.tar.gz.这些文件虽然要用不同的程序来打开,但放在Lin ...
- Struts2学习第一天——struts2基本流程与配置
struts2框架 什么是框架,框架有什么用? 框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率. 学习框架 ,清楚的知道框架能做什么? 还有哪些工作需要自己编码实 ...
- 关于开发中使用writeToFile时的注意事项
总会有一些坑在前面等着你 我们先来看一下后台返回的部分json数据,稍后再来分析问题,仔细看一下userId和userCode两个字段,其他不用看 "list": [{ " ...
- 2017 3-4/5 两天的学习的REVIEW
明天就要去面试啦,去感受一下,估计又是一顿虐,蓝瘦-- 3月4日:计算机安全基础技术与原理方面的学习 密码体制(密码)由五个部分组成: 消息空间(m),密文空间(c),密钥空间(k),加密算法(E), ...
- 《你不知道的JavaScript》整理(五)——值与原生函数
一.值 1)数字 JavaScript只有一种数值类型:number(数字),包括"整数"和带小数的十进制数. //数字的语法 a.toExponential(); // &quo ...
- canvas小球动画原理
随着html5发展,canvas标签作为h5革命性的发展标志也越来越流行.canvas标签的强大之处,不仅在于它可以作为一个独立的画布,也可以利用canvas做一些动画而不用导入flash文件.同时, ...
- UVa 1588 换抵挡装置
前言 题目 大意是说,两个槽能够插在一起,并保证每一列的高度不高于3,保证最短长度. 思路 思路很简单,取短字符串遍历长字符串的每一个位置,纪录下位置,并取最短即可. 实现 //习题3-11 换抵挡装 ...