云计算openstack核心组件--glance-镜像服务(6)
glance做什么
OpenStack 由 Glance 提供 Image 服务
获取镜像位置
https://docs.openstack.org/image-guide/obtain-images.html#centos
理解 Image
要理解 Image Service,先得搞清楚什么是 Image 以及为什么要用 Image?
在传统 IT 环境下,安装一个系统要么从安装 CD 从头安装,要么用 Ghost 等克隆工具恢复。这两种方式有如下几个问题:
- 如果要安装的系统多了效率就很低
- 时间长,工作量大
- 安装完还要进行手工配置,比如安装其他的软件,设置 IP 等
- 备份和恢复系统不灵活
云环境下需要更高效的方案,这就是 Image。 Image 是一个模板,里面包含了基本的操作系统和其他的软件。
举例来说,有家公司需要为每位员工配置一套办公用的系统,一般需要一个 Win7 系统再加 MS office 软件。 OpenStack 是这么玩的:
- 先手工安装好这么一个虚机
- 然后对虚机执行 snapshot,这样就得到了一个 image
- 当有新员工入职需要办公环境时,立马启动一个或多个该 image 的 instance(虚机)就可以了
在这个过程中,第 1 步跟传统方式类似,需要手工操作和一定时间,但第 2、3 步非常快,全自动化,一般都是秒级别。而且 2、3 步可以循环做。 比如公司新上了一套 OA 系统,每个员工的 PC 上都得有客户端软件。 那么可以在某个现有虚机中先手工安装好 OA 客户端,然后执行 snapshot 操作,得到新的 image,以后可以就直接使用新 image 创建虚机了。另外,snapshot 还有备份的作用,能够非常方便的恢复系统。
理解Image Service
Image Service 的功能是管理 Image,让用户能够发现、获取和保存 Image。在 OpenStack 中,提供 Image Service 的是 Glance,其具体功能如下:
- 提供 REST API 让用户能够查询和获取 image 的元数据和 image 本身
- 支持多种方式存储 image,包括普通的文件系统、Swift、Amazon S3 等
- 对 Instance 执行 Snapshot 创建新的 image
Glance 架构

glance-api
glance-api 是系统后台运行的服务进程。 对外提供 REST API,响应 image 查询、获取和存储的调用。
glance-api 不会真正处理请求。 如果操作是与 image metadata(元数据)相关,glance-api 会把请求转发给 glance-registry; 如果操作是与 image 自身存取相关,glance-api 会把请求转发给该 image 的 store backend。
在控制节点上可以查看 glance-api 进程

glance-registry
glance-registry 是系统后台运行的服务进程。 负责处理和存取 image 的 metadata,例如 image 的大小和类型。在控制节点上可以查看 glance-registry

Glance 支持多种格式的 image,包括

(1)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所使用的镜像格式。
Database
Image 的 metadata 会保持到 database 中,默认是 MySQL。 在控制节点上可以查看 glance 的 database 信息

Store backend
Glance 自己并不存储 image。 真正的 image 是存放在 backend 中的。 Glance 支持多种 backend,包括:
- A directory on a local file system(这是默认配置)
- GridFS
- Ceph RBD
- Amazon S3
- Sheepdog
- OpenStack Block Storage (Cinder)
- OpenStack Object Storage (Swift)
- VMware ESX
具体使用哪种 backend,是在 /etc/glance/glance-api.conf 中配置的
在我们的 devstack 环境中,image 存放在控制节点本地目录 /var/lib/glance/images/中

其他 backend 的配置可参考http://docs.openstack.org/liberty/config-reference/content/configuring-image-service-backends.html
查看目前已经存在的 image

查看保存目录
[root@controller ~]# ls /var/lib/glance/images/
a86d1a0c-c388-4702-aaa6-be045cb234c1
每个 image 在目录下都对应有一个文件,文件以 image 的 ID 命名
通过 Web GUI 和 CLI 两种方法创建 Image
OpenStack 为终端用户提供了 Web UI(Horizon)和命令行 CLI 两种交换界面。
可能有些同学觉得既然有更友好的 Web UI 了,干嘛还要用 CLI? 这里 给出下面的理由:
- Web UI 的功能没有 CLI 全,有些操作只提供了 CLI。 即便是都有的功能,CLI 可以使用的参数更多
- 一般来说,CLI 返回结果更快,操作起来更高效
- CLI 可放在脚本中进行批处理
- 有些耗时的操作 CLI 更合适,比如创建镜像(后面将涉及)
Web UI 创建 image
第一步:admin 登录后,Project -> Compute -> Images

第二步:创建镜像
- 这里我们上传一个 image。 点击浏览,选择镜像文件 cirros-0.3.5-x86_64-disk.img。 cirros 是一个很小的 linux 镜像,非常适合测试用。 大家可以到 http://download.cirros-cloud.net/ 下载。
- 格式选择 QCOW2。

如果勾选共有,该 image 可以被其他 Project 使用 如果勾选受保护的是,该 image 不允许被删除。
第三步:查看创建的镜像

第四步:查看cirros详细信息,点击cirros

CLI 创建 image
cirros 这个 linux 镜像很小,通过 Web UI 上传很快,操作会很顺畅。但如果我们要上传的镜像比较大(比如好几个 G ),那么操作会长时间停留在上传的 Web 界面,我们也不知道目前到底处于什么状态。 对于这样的操作,CLI 是更好的选择。
- 将 image 上传到控制节点的文件系统中,例如 /tmp/cirros-0.3.5-x86_64-disk.img
- 执行创建命令
[root@controller tmp]# glance image-create --name cirros1 --file /tmp/cirros-0.3.-x86_64-disk.img --disk-format qcow2 --container-format bare --progress
[=============================>] %
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | f8ab98ff5e73ebab884d80c9dc9c7290 |
| container_format | bare |
| created_at | --07T16::58Z |
| disk_format | qcow2 |
| id | a218e386-bd4d-43df-a7d4-2128cb906f51 |
| min_disk | |
| min_ram | |
| name | cirros1 |
| owner | 3c48d267eaa14f44a7cacd7e88bb46b7 |
| protected | False |
| size | |
| status | active |
| tags | [] |
| updated_at | --07T16::59Z |
| virtual_size | None |
| visibility | shared |
+------------------+--------------------------------------+
在创建 image 的 CLI 参数中我们用 –progress 让其显示文件上传的百分比 %,是不是比 Web UI更直观呢?
在 /var/lib/glance/images/ 下查看新的 Image
[root@controller tmp]# ls /var/lib/glance/images/
a218e386-bd4d-43df-a7d4-2128cb906f51 fe4bca11-d413--9dd6-08941cae5ba8
web查看

如何使用 OpenStack CLI
OpenStack 服务都有自己的 CLI。
命令很好记,就是服务的名字,比如 Glance 就是 glance,Nova 就是 nova。
但 Keystone 比较特殊,现在是用 openstack 来代替老版的 keystone 命令。
不同服务用的命令虽然不同,但这些命令使用方式却非常类似,可以举一反三。
1. 执行命令之前,需要设置环境变量。
这些变量包含用户名、Project、密码等; 如果不设置,每次执行命令都必须设置相关的命令行参数
2. 各个服务的命令都有增、删、改、查的操作
其格式是
CMD <obj>-create [parm1] [parm2]…
CMD <obj>-delete [parm]
CMD <obj>-update [parm1] [parm2]…
CMD <obj>-list CMD <obj>-show [parm
例如 glance 管理的是 image,那么:
CMD 就是 glance,obj 就是 image,对应的命令就有
glance image-create
glance image-delete
glance image-update
glance image-list
glance image-show
再比如 neutron 负责管理网络和子网,那么:
CMD 就是 neutron;obj 就是 net 和 subnet 对应的命令就有
网络相关操作
neutron net-create
neutron net -delete
neutron net -update
neutron net -list
neutron net –show
子网相关操作
neutron subnet-create
neutron subnet -delete
neutron subnet -update
neutron subnet -list
neutron subnet–show
有的命令 <obj> 可以省略,比如 nova 下面的操作都是针对 instance
nova boot
nova delete
nova list
nova show
3. 每个对象都有 ID
delete,show 等操作都以 ID 为参数,例如


4. 可用 help 查看命令的用法
除了 delete,show 等操作只需要 ID 一个参数,其他操作可能需要更多的参数,用 help 查看所需的参数,格式是
CMD help [SUB-CMD]
例如查看 glance 都有哪些 SUB-CMD

查看 glance image-update 的用法

OpenStack 排查问题的方法
OpenStack 排查问题的方法主要是通过日志,Service 都有自己单独的日志。Glance 主要有两个日志,glance_api.log 和 glance_registry.log,保存在/var/log/glance 目录里。
[DEFAULT] [cors]
[cors.subdomain] [database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance [glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/ [image_format] [keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance [matchmaker_redis] [oslo_concurrency] [oslo_messaging_amqp] [oslo_messaging_kafka] [oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [oslo_middleware] [oslo_policy] [paste_deploy]
flavor = keystone [profiler] [store_type_location_strategy] [task] [taskflow_executor]
vim /etc/glance/glance-registry.conf
[DEFAULT] [database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance [keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance [matchmaker_redis] [oslo_messaging_amqp] [oslo_messaging_kafka] [oslo_messaging_notifications] [oslo_messaging_rabbit] [oslo_messaging_zmq] [oslo_policy] [paste_deploy]
flavor = keystone [profiler]
云计算openstack核心组件--glance-镜像服务(6)的更多相关文章
- 云计算OpenStack核心组件---glance镜像服务(6)
一.glance介绍: Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata ...
- 云计算openstack核心组件——glance— 镜像服务(6)
一.glance介绍: Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚 ...
- openstack核心组件——glance— 镜像服务(6)
云计算openstack核心组件——glance— 镜像服务(6) 一.glance介绍: Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像 ...
- OpenStack核心组件-glance镜像服务
1. glance介绍 Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata ...
- 5 云计算系列之glance镜像服务安装
preface 在上节中我们了解了keystone服务,下面就看看glance管理镜像的服务吧. glance组成 glance有两部分组成: glance-api 接受云系统镜像的创建,删除,读取请 ...
- OpenStack组件——Glance镜像服务
1.glance介绍 Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata及 ...
- 云计算openstack核心组件——nova计算服务(7)
一.nova介绍: Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova ...
- 云计算OpenStack核心组件---nova计算服务(7)
一.nova介绍 Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的. ...
- 云计算OpenStack核心组件---neutron网络服务(8)*****
一.neutron介绍 1.Neutron概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建. ...
随机推荐
- IE的F12开发人员工具不显示 转载自:http://blog.csdn.net/longyulu/article/details/8749705
IE的F12开发人员工具不显示问题: 按下F12之后,开发人员工具在桌面上看不到,但是任务栏里有显示.将鼠标放在任务栏的开发人员工具上,出现一片透明的区域,选中之后却出不来.将鼠标移动到开发人员工具的 ...
- 串口+RS485驱动
其实RS485不算什么协议,只是物理层做了差分传输,AB两线的电压差来表示0,1,0,1,可靠性和距离更加好,因此,一个串口外设只能作为半双工使用,而RS232是可以全双工的. max485模块可以直 ...
- 关于b站爬虫的尝试(一)
由于b站爬虫难度较小(url地址主要通过av定位),我第一的爬虫尝试就选择了b站 以下为初步的尝试. 首先,由于初步统计,b站空视频(已下架或者删除)的比例大概是百分之五十(统计样本基本在前几年的视频 ...
- Educational Codeforces Round 50 (Rated for Div. 2) F - Relatively Prime Powers(数学+容斥)
题目链接:http://codeforces.com/contest/1036/problem/F 题意: 题解:求在[2,n]中,x != a ^ b(b >= 2 即为gcd)的个数,那么实 ...
- H5页面测试总结
前言 在最近几个项目中,小编接触了较多关于H5页面的测试,H5页面的测试除了业务逻辑功能测试外,其他部分的测试方法基本是可以通用的,在此对H5页面的一些通用测试方法进行总结分享给大家. H5页面介绍 ...
- python函数参数的传递、带星号参数的传递
python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要 ...
- 字符串匹配问题x
qwq这个是栈的w 不是树w qwq我承认我发题很杂啦 字符串匹配问题x [问题描述] 字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配 ...
- jmeter正则表达式提取多个值
1.返回的数据截图,需要获取customerId.customerName的值 2.把jmeter查看结果树返回的数据放在 Regester,正则表达式写 : "customerId&quo ...
- 轻松搭建ES6开发环境
首先,你要自行查阅什么是ES6和ES5.javascript有什么关系,为什么要编译ES6.废话不多说,just go! 第一步:创建项目并让它成为npm可以管理的仓库. 新建一个项目,名字假设为te ...
- python之ActionChains方法列表
使用方法: 方法列表: click(on_element=None) ——单击鼠标左键 click_and_hold(on_element=None) ——点击鼠标左键,不松开 context_cli ...