OpenStack之Glance模块
一、Glance服务
1.Glance架构
Glance架构是一个典型的CS架构,提供的也是标准的Rest接口,各个layer分层也是很清楚的。
2.Glance服务
Glance是OpenStack镜像服务组件,glance服务默认监听在9292端口,其接收REST API请求,然后通过其他模块(glance-registry及image store)来完成诸如镜像的获取、上传、删除等操作,Glance提供restful API可以查询虚拟机镜像的metadata,并且可以获得镜像,通过Glance,虚拟机镜像可以被存储到多种存储上,比如简单的文件存储或者对象存储(比如OpenStack中swift项目)是在创建虚拟机的时候,需要先把镜像上传到glance,对镜像的列出镜像、删除镜像和上传镜像都是通过glance进行管理。
3.Glance主要组件
- glance-api
glance-api是系统后台运行的服务进程,对外提供REST API,响应image查询、获取和存储的调用。
glance-api不会真正处理请求。如果是与image metadata(元数据)相关的操作,glance-api会把请求转发给 glance-registry。如果是与image自身存取相关的操作,glance-api会把请求转发给该image的store backend。 - glance-registry
glance-registry负责与mysql数据交互,用于存储或获取镜像的元数据(metadata),提供镜像元数据相关的REST接口,通过glance-registry可以向数据库中写入或获取镜像的各种数据,glance-registyr监听的端口是9191,glance数据库中有两张表,一张是image表,一张是image property表,image表保存了镜像格式、大小等信息,image property表保存了镜像的定制化信息。 - Database
Image的metadata会保持到database中,主要使用MySQL和SQLite。 - image store
image store是一个存储的接口层,通过这个接口glance可以获取镜像,image store支持的存储有Amazon的S3、openstack本身的swift、还有ceph、glusterFS、sheepdog等分布式存储,image store是镜像保存与读取的接口,但是它只是一个接口,具体的实现需要外部的支持,glance不需要配置消息队列,但是需要配置数据库和keystone。
Glance自己并不存储image。真正的image是存放在repository中的,Glance支持多种repository。如下:
A directory on a local file system(这是默认配置)
RADOS block devices
VMware datastore
Amazon S3
HTTP
OpenStack Block Storage (Cinder)
OpenStack Object Storage (Swift)
- Metadata definition service
对于厂商、管理员、服务常见的API来说,用户有意地定义自己元数据。此元数据可用于不同类型的资源,如镜像、卷、单个主机和集合。本服务可以定义新属性的键、描述、约束以及与之相关联的资源类型。
4.Glance的格式
(1)磁盘格式
虚拟机镜像的磁盘格式是底层磁盘镜像的格式。以下是OpenStack支持的磁盘格式。
格式说明:
- 1、RAW
RAW即常说的裸格式,它其实就是没有格式,最大的特点就是简单,数据写入什么就是什么,不做任何修饰,所以再性能方面很不错,甚至不需要启动这个镜像的虚拟机,只需要文件挂载即可直接读写内部数据。并且由于RAW格式简单,因此RAW和其他格式之间的转换也更容易。在KVM的虚拟化环境下,有很多使用RAW格式的虚拟机。 - 2、QCOW2
qcow2是qcow的升级版本,它是QEMU的CopyOn Write特性的磁盘格式,主要特性是磁盘文件大小可以随着数据的增长而增长。譬如创建一个10GB的虚拟机,实际虚拟机内部只用了5GB,那么初始的qcow2磁盘文件大小就是5GB。与RAW相比,使用这种格式可以节省一部分空间资源。 - 3、VHD
VHD也是一种通用的磁盘格式。微软公司的Virtual PC和Hyper-V使用的就是VHD格式。VirtualBox也提供了对VHD的支持。如果要在OpenStack上使用Hyper-V的虚拟化,就应该上传VHD格式的镜像文件。 - 4、VMDK
VMware创建的一个虚拟机磁盘格式,目前也是一个开放的通用格式,除了VMware自家的产品外,QEMU和VirtualBox也提供了对VMDK格式的支持。 - 5、VDI
Oracle公司的VirtualBox虚拟软件所使用的格式。 - 6、ISO
ISO是指一种存档数据文件在光盘上的格式。 - 7、AKI、ARI、AMI
Amazon公司的AWS所使用的镜像格式。
(2)容器格式
正如OpenStack glance也支持容器格式的概念,它描述了文件格式,并包含关于实际虚拟机的额外元数据。
以下是OpenStack Glance支持的Container格式。
二、Glance处理流程
1.Glance请求流程
Client端发送请求,api端router.py中将请求下发,选择相应的方法处理请求,经过中间auth, notifier, policy, quota到location,会调用到glance_store进行底端存储,并返回存储的位置信息,需要写到数据库中 在跟数据库的交互中需要用到glance_registry,将镜像的相关信息写到数据库中,值得注意的是会将上面镜像存储的位置信息location_uri写入到数据库中,在进行删除等操作会直接从数据库中读取这个uri,进行删除。
2.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
可以停用镜像。也可以重新激活,或者删除。当管理员对镜像进行更新时,可以先把镜像停用,这样镜像对非管理员用户就不可见了,当更新完成后,可以重新激活镜像,以便用户可以用更新后镜像启动虚拟机。
三、镜像与实例
如前所述,磁盘镜像作为模板存储。镜像服务存储和管理镜像。实例是在计算节点上运行的单个虚拟机,计算节点管理这些实例。用户可以从用同一个镜像启动任意数量的实例。每个启动的实例都是基于镜像的一个副本,所以实例上的任何修改都不会影响到镜像。我们可以对正在运行实例做快照,并可以用快照于启动另一个新的实例。
当我们启动一个实例时,我们需要指定Flavor。Flavor定义了实例可以有多少个虚拟CPU,多大的RAM以及临时磁盘的大小。 OpenStack提供了预定义的flavor,我们也可以新创建和编辑Flavor。
下图显示了启动实例的系统状态。glance store包含一定数量的镜像,计算节点包含可用的vcpu,内存和本地磁盘资源,cinder-volume包含一定数量的volume。
启动实例之前,需要选择一个镜像,flavor和任何可选属性。选定的 flavor提供一个系统盘,标记为vda,另外一个临时盘被标记为vdb,cinder-volume提供的volume被映射到第三个虚拟磁盘并将其称为vdc。
vdc使用iSCSI连接到cinder-volume。随后计算节点提供vCPU和内存资源之后,该实例将从vda.启动。该实例运行并更改磁盘上的数据。如果volume store位于单独的网络上,需要在计算节点nova.conf里指定的my_block_storage_ip,将会通过存储网络直接通信。
实例被删除后, 除volume之外的其它资源都会被回收。临时盘将会被清空,内存和vCPU资源被会被释放。在这个过程中镜像不会发生任何改变。
四、Glance配置文件
Glance-api.conf :Glance api 服务配置文件.
Glance-registry.conf :Glanceregistry服务配置文件,用户存储镜像有关的元数据。
glance-scrubber.conf :用于清理已删除的镜像的服务。
policy.json :镜像服务的访问控制。在这里,我们可以定义角色和策略,是OpenStack Glance中的安全特性。
参考文章:
http://www.sohu.com/a/156310708_610730
http://www.bubuko.com/infodetail-2287562.html
https://www.2cto.com/net/201707/657859.html
OpenStack之Glance模块的更多相关文章
- openstack初始化Glance数据库时报错解决方式
环境为win7+virtualbox 中的centos6.5 安装Glance 的包 yum install openstack-glance python-glanceclient -y 配置Gla ...
- openstack核心组件——glance— 镜像服务(6)
云计算openstack核心组件——glance— 镜像服务(6) 一.glance介绍: Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像 ...
- OpenStack:安装Glance
>安装Glance1. 安装# apt-get install glance python-glanceclient删除sqlite文件rm -f /var/lib/glance/glance. ...
- openstack的glance、nova、cinder使用ceph做后端存储
块设备与 OPENSTACK 通过 libvirt 你可以把 Ceph 块设备用于 OpenStack ,它配置了 QEMU 到 librbd 的接口. Ceph 把块设备映像条带化为对象并分布到集群 ...
- openstack之Glance
一.Glance简介.基本概念: Glance是openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等操作. Glance提供restful API可以查询虚拟机镜像的m ...
- OpenStack之Nova模块
Nova简介 nova和swift是openstack最早的两个组件,nova分为控制节点和计算节点,计算节点通过nova computer进行虚拟机创建,通过libvirt调用kvm创建虚拟机,no ...
- OpenStack之Keystone模块
一.Keystone介绍 OpenStack Identity(Keystone)服务为运行OpenStack Compute上的OpenStack云提供了认证和管理用户.帐号和角色信息服务,并为Op ...
- openstack之Glance介绍
什么是Glance glance即image service(镜像服务),是为虚拟机的创建提供镜像服务 为什么要有Glance 我们基于openstack是构建基本的Iaas平台对外提供虚机,而虚机在 ...
- OpenStack核心组件-glance镜像服务
1. glance介绍 Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata ...
随机推荐
- 比较好用的Opera 翻译工具 ddict
http://ddict.me
- html5文本超出部分用省略号表示
<p style="overflow:hidden; text-overflow:ellipsis;width:170px; white-space:nowrap; "> ...
- Java中的常用方法
Java中的常用方法 第一章 字符串 1.获取字符串的长度:length() 2.判断字符串的前缀或后缀与已知字符串是否相同 前缀 startsWith(String s).后缀 endsWit ...
- 每日集成CruiseControl.NET + SVN + Msbuild + NAnt
CruiseControl.NET-1.8.4.0-Setup.exe 是服务器,安装时可以选择生成windows service以便开启,建议测试时不用windows se ...
- Android logcat详细用法
admin| 2011-10-29 11:16| 分类:学习文档| Android logcat | 评论:[0]| Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和 ...
- 前端开发 - jsBom
一.jsBom简介 jsBom = javascript browser object modelBOM指的是浏览器对象模型 Browser Object Model,它的核心就是浏览器. 二.Bom ...
- JPA 入门程序及相关注解
1. 概述 JPA(Java Persistence API):用于对象持久化的API; JPA本质上是一种ORM规范,不是ORM框架;提供了一些编程的API接口; Hibernate是实现; 1.1 ...
- Json与字符串互相转换
jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 浏览器 ...
- phpcms 添加稿件到栏目 add_content
private $db; private $content_model; public function __construct() { parent::__construct (); $this-& ...
- JS通过身份证号获取生日、年龄、性别
<script> function IdCard(UUserCard,num){ if(num==1){ //获取出生日期 birth=UUserCard.substring(6, 10) ...