openstack之glance基础
第一: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基础的更多相关文章
- OpenStack实践系列①openstack简介及基础环境部署
OpenStack实践系列①openstack简介及基础环境部署 一.OpenStack初探1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运 ...
- OpenStack:安装Glance
>安装Glance1. 安装# apt-get install glance python-glanceclient删除sqlite文件rm -f /var/lib/glance/glance. ...
- openstack初始化Glance数据库时报错解决方式
环境为win7+virtualbox 中的centos6.5 安装Glance 的包 yum install openstack-glance python-glanceclient -y 配置Gla ...
- openstack的glance、nova、cinder使用ceph做后端存储
块设备与 OPENSTACK 通过 libvirt 你可以把 Ceph 块设备用于 OpenStack ,它配置了 QEMU 到 librbd 的接口. Ceph 把块设备映像条带化为对象并分布到集群 ...
- openstack核心组件——glance— 镜像服务(6)
云计算openstack核心组件——glance— 镜像服务(6) 一.glance介绍: Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像 ...
- openstack项目【day23】:glance基础
本节内容 一 什么是glance 二 为何要有glance 三 glance的功能 四 glance的两个版本 五 镜像的数据存放 六 镜像的访问权限 七 镜像及任务的各种状态 八 glance包含的 ...
- openstack 之~keystone基础
第一:keystone是什么? keystone是 OpenStack Identity Service 的项目名称,是一个负责身份管理验证.服务规则管理和服务令牌功能.它实现了openstack的i ...
- openstack之glance部署及操作
由于时间关系简单的架构图就先不展示了.后续的更新会贴上... 部署glance 安装memcache服务 yum install memcached python-memcached systemct ...
- Ceph与OpenStack的Glance相结合
http://docs.ceph.com/docs/master/rbd/rbd-openstack/?highlight=nova#kilo 在Ceoh的admin-node上进行如下操作: 1. ...
随机推荐
- mysql中cast() 和convert()的用法讲解
一.在mysql操作中我们经常需要对数据进行类型转换.此时我们应该使用的是cast()或convert(). 二.两者的对比 相同点:都是进行数据类型转换,实现的功能基本等同 不同点:两者的语法不同, ...
- [SDOI2018]荣誉称号
题解: 并不需要什么算法 首先我们随便画一画就会发现 能画出一颗满二叉树 然后要满足每个点从上往下的路径和都相同(%m意义下) 一个点上可能对应了多个点 然后这样我们可以暴力dp $2^k*m^2+n ...
- 【bzoj4817】[Sdoi2017]树点涂色&&bzoj3779-重组病毒
题解: 两道几乎差不多的题(所以说当年sdoi考了道原题) 都是将树上一段改为新颜色询问颜色数目 可以把改成新颜色这个操作看成access操作 然后通过线段树+dfs序来维护 另外换根了为什么还可以用 ...
- python基础——字符串、编码、格式化
1.三种编码:ascii Unicode utf8 2.字符串和编码数字的两个函数:ord(字符转数字ord(‘A’)=65)和 chr(数字转字符chr(65)=A) 3.bytes存储编码,记住两 ...
- 将input或textarea设置为disabled的样式问题
input:disabled{ -webkit-text-fill-color: #333;//是用来做填充色使用的 -webkit-opacity: 1; color: #333; } textar ...
- 今天才知道原来我还没弄清楚js中全局变量和局部变量的定义...
查资料看到这段还不错,来源:原文:https://blog.csdn.net/czh500/article/details/80429133 粘过来记录一下... 1.使用var声明变量,在方法内部是 ...
- AtCoder Regular Contest 101 (ARC101) D - Median of Medians 二分答案 树状数组
原文链接https://www.cnblogs.com/zhouzhendong/p/ARC101D.html 题目传送门 - ARC101D 题意 给定一个序列 A . 定义一个序列 A 的中位数为 ...
- Codechef CHSIGN Change the Signs(May Challenge 2018) 动态规划
原文链接http://www.cnblogs.com/zhouzhendong/p/9004583.html 题目传送门 - Codechef CHSIGN 题意 第一行,一个数$T$,表示数据组数. ...
- Django1.11.7配置静态文件
Django配置静态文件分为三步 1.建文件夹 2.设置setting 3.页面引用 1.文件目录结构 在APP下新建static文件夹,将js和css文件放入文件夹 2.配置settings.py ...
- day24 面向对象,交互,组合,命名空间,初始继承
面向对象的命名空间: #属性:静态属性 (直接和类名关联或者直接定义在class下的变量) # 对象属性 (在类内和self关联,在类外和对象名关联的变量) # 动态属性(函数) class Foo: ...