openstack的Glance组件
1. Glance镜像服务介绍
Glance是OpenStack镜像服务,用来注册、登陆和检索虚拟机镜像。Glance服务提供了一个REST API,使读者能够查询虚拟机镜像元数据和检索的实际镜像。通过镜像服务提供的虚拟机镜像可以存储在不同的位置,从简单的文件系统对象存储到类似OpenStack对象存储系统。Glance与其他组件的关系如图1-1所示。

图1-1 Glance与其他组件的关系
默认情况下,上传的虚拟机镜像存储路径为/var/lib/glance/images/。Glance负责镜像文件的注册、查询和存储管理。
● glance-api负责接受Image API请求,处理image查询和存储等
● glance-registry负责存储,处理和检索image的元数据(大小,类型等)
● 使用数据库来存储image文件的元数据
● 支持不同的存储仓库来存储image文件,包括swift,本地磁盘,RADOS块设备,Amazon S3,HTTP。
2. Glance重要概念
(1)镜像状态
镜像状态是Glance管理镜像重要的一个内容,Glance组件给整个OpenStack提供的镜像查询和检索,Glance可以通过虚拟机镜像的状态感知某一镜像的可用状态。如图1-2所示,OpenStack中镜像的状态分成以下几种:
● Queued:Queued状态这是一种初始化镜像状态,在镜像文件刚刚被创建,在glance数据库中已经保存了镜像标示符,但还没有上传至glance中,此时的glance对镜像数据没有任何描述,其存储空间为0。
● Saving:Saving状态是镜像的原始数据在上传中的一种过度状态,它产生在镜像数据上传至glance的过程中,一般来讲,glance收到一个image请求后,才将镜像上传给glance。
● Active:Active状态是当镜像成功上传完毕以后的一种状态,它表明glance中可用的镜像。
● Killed:Killed状态出现在镜像上传失败或者镜像文件不可读的情况下,glance将镜像状态设置成Killed。
● Deleted:Deleted状态表明一个镜像文件马上会被删除,只是当前glance这种仍然保留该镜像文件的相关信息和原始镜像数据。
● Pending_delete:Pending_delete状态类似于deleted,虽然此时的镜像文件没有删除,但镜像文件不能恢复的。

图1-2 Glance镜像文件状态转换过程
(2)Glance基本架构和三大模块
它的设计模式采用C/S架构模式,Client通过Glance提供的REST API与Glance的服务器(Server)程序进行通信,Glance的服务器程序通过网络端口监听,接收Client发送来的镜像操作请求,基本架构如图1-3所示。

图1-3 Glance架构图
● Glance-api:接收REST API的请求,然后通过其他模块(glance-registry及image store)来完成诸如镜像的查找、获取、上传、删除等操作,默认监听端口9292。
● Glance-registry:用于与MariaDB数据库交互,用于存储或获取镜像的元数据(metadata);通过glance-registry,可以向数据库中写入或获取镜像的各种数据,glance-registry监听端口9191。
● Store Adapter:是一个存储的接口层,通过这个接口,glance可以获取镜像,image store支持的存储有Amazon的S3、OpenStack本身的Swift,本地文件存储和其他分布式存储。
(3)Glance组件的工作过程
如图1-4所示介绍了Glance组件在申请镜像是所与OpenStack平台进行交互的流程图。

图1-4 glance工作过程
3.创建镜像
(1)下载CirrOS镜像文件
CirrOS是一个极小的云操作系统,可以使用这个小的操作系统来进行Glance服务组件的操作练习。将提供的cirros-0.3.4-x86_64-disk.img镜像上传到controller节点的root目录下面。
[root@controller ~]# curl -O http://mirrors.douxuedu.com/newcloud/cirros-0.3.4-x86_64-disk.img
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12.6M 100 12.6M 0 0 25.4M 0 --:--:-- --:--:-- --:--:-- 25.4M
将镜像上传至controller节点后,通过file命令查看镜像文件信息。
[root@controller ~]# file cirros-0.3.4-x86_64-disk.img cirros-0.3.4-x86_64-disk.img: QEMU QCOW Image (v2), 41126400 bytes
(2)创建镜像
通过命令创建镜像,命令格式如下:
[root@controller ~]# glance help image-create
usage: glance image-create [--architecture <ARCHITECTURE>]
[--protected [True|False]] [--name <NAME>]
[--instance-uuid <INSTANCE_UUID>]
[--min-disk <MIN_DISK>] [--visibility <VISIBILITY>]
[--kernel-id <KERNEL_ID>]
[--tags <TAGS> [<TAGS> ...]]
[--os-version <OS_VERSION>]
[--disk-format <DISK_FORMAT>]
[--os-distro <OS_DISTRO>] [--id <ID>]
[--owner <OWNER>] [--ramdisk-id <RAMDISK_ID>]
[--min-ram <MIN_RAM>]
[--container-format <CONTAINER_FORMAT>]
[--property <key=value>] [--file <FILE>]
[--progress]
参数说明:
- --disk-format:镜像格式。
- --container-format:镜像在其他项目中可见性。
- --progress:显示上传镜像的进度
- --file:选择本地镜像文件
- --name:上传后镜像的名称。
使用镜像cirros-0.3.4-x86_64-disk.img通过命令上传镜像至OpenStack中。
[root@controller ~]# glance image-create --name cirros-0.3.4 --disk-form
at qcow2 --container-format bare --progress < cirros-0.3.4-x86_64-disk.i
mg
[=============================>] 100%
+------------------+----------------------------------------------------
------------------------------+
| Property | Value
|
+------------------+----------------------------------------------------
------------------------------+
| checksum | ee1eca47dc88f4879d8a229cc70a07c6
|
| container_format | bare
|
| created_at | 2022-11-19T11:37:21Z
|
| disk_format | qcow2
|
| id | 0bd27197-0547-49e3-8e66-9db6fa318643
|
| min_disk | 0
|
| min_ram | 0
|
| name | cirros-0.3.4
|
| os_hash_algo | sha512
|
| os_hash_value | 1b03ca1bc3fafe448b90583c12f367949f8b0e665685979d95b
004e48574b953316799e23240f4f7 |
| | 39d1b5eb4c4ca24d38fdc6f4f9d8247a2bc64db25d6bbdb2
|
| os_hidden | False
|
| owner | 0b6f2d0be1d342e09edc31dc841db7a5
|
| protected | False
|
| size | 13287936
|
| status | active
|
| tags | []
|
| updated_at | 2022-11-19T11:37:22Z
|
| virtual_size | Not available
|
| visibility | shared
|
+------------------+----------------------------------------------------
------------------------------+
2.管理镜像
(1)查看镜像
通过命令可以在OpenStack平台中查看当前Glance中所上传的镜像名称。具体命令如下:
[root@controller ~]# glance image-list +--------------------------------------+--------------+ | ID | Name | +--------------------------------------+--------------+ | 0bd27197-0547-49e3-8e66-9db6fa318643 | cirros-0.3.4 | +--------------------------------------+--------------+
也可以使用命令查看镜像详细信息。具体命令如下:
[root@controller ~]# glance image-show 0bd27197-0547-49e3-8e66-9db6fa318643 +------------------+----------------------------------------------------------------------------------+ | Property | Value | +------------------+----------------------------------------------------------------------------------+ | checksum | ee1eca47dc88f4879d8a229cc70a07c6 | | container_format | bare | | created_at | 2022-11-19T11:37:21Z | | disk_format | qcow2 | | id | 0bd27197-0547-49e3-8e66-9db6fa318643 | | min_disk | 0 | | min_ram | 0 | | name | cirros-0.3.4 | | os_hash_algo | sha512 | | os_hash_value | 1b03ca1bc3fafe448b90583c12f367949f8b0e665685979d95b004e48574b953316799e23240f4f7 | | | 39d1b5eb4c4ca24d38fdc6f4f9d8247a2bc64db25d6bbdb2 | | os_hidden | False | | owner | 0b6f2d0be1d342e09edc31dc841db7a5 | | protected | False | | size | 13287936 | | status | active | | tags | [] | | updated_at | 2022-11-19T11:37:22Z | | virtual_size | Not available | | visibility | shared | +------------------+----------------------------------------------------------------------------------+
(2)修改镜像
可以使用glance image-update更新镜像信息,命令格式如下:
[root@controller ~]# glance help image-update
usage: glance image-update [--architecture <ARCHITECTURE>]
[--protected [True|False]] [--name <NAME>]
[--instance-uuid <INSTANCE_UUID>]
[--min-disk <MIN_DISK>] [--visibility <VISIBILITY>]
[--kernel-id <KERNEL_ID>]
[--os-version <OS_VERSION>]
[--disk-format <DISK_FORMAT>]
[--os-distro <OS_DISTRO>] [--owner <OWNER>]
[--ramdisk-id <RAMDISK_ID>] [--min-ram <MIN_RAM>]
[--container-format <CONTAINER_FORMAT>]
[--property <key=value>] [--remove-property key]
<IMAGE_ID>
参数说明:
- --min-disk:镜像启动最小硬盘大小
- --name:镜像名称。
- --disk-format:镜像格式
- --min-ram:镜像启动最小内存大小
- --container-format:镜像在项目中可见性
如果需要改变镜像启动硬盘最低要求值(min-disk)1G,min-disk默认单位为G。使用glance image-update更新镜像信息操作如下:
[root@controller ~]# glance image-update --min-disk=1 0bd27197-0547-49e3
-8e66-9db6fa318643
+------------------+----------------------------------------------------
------------------------------+
| Property | Value
|
+------------------+----------------------------------------------------
------------------------------+
| checksum | ee1eca47dc88f4879d8a229cc70a07c6
|
| container_format | bare
|
| created_at | 2022-11-19T11:37:21Z
|
| disk_format | qcow2
|
| id | 0bd27197-0547-49e3-8e66-9db6fa318643
|
| min_disk | 1
|
| min_ram | 0
|
| name | cirros-0.3.4
|
| os_hash_algo | sha512
|
| os_hash_value | 1b03ca1bc3fafe448b90583c12f367949f8b0e665685979d95b
004e48574b953316799e23240f4f7 |
| | 39d1b5eb4c4ca24d38fdc6f4f9d8247a2bc64db25d6bbdb2
|
| os_hidden | False
|
| owner | 0b6f2d0be1d342e09edc31dc841db7a5
|
| protected | False
|
| size | 13287936
|
| status | active
|
| tags | []
|
| updated_at | 2022-11-19T11:44:55Z
|
| virtual_size | Not available
|
| visibility | shared
|
+------------------+----------------------------------------------------
------------------------------+
也可以使用命令更新镜像启动内存最低要求值(min-ram)为1G,min-ram默认单位为M。使用glance image-update更新镜像信息操作如下:
[root@controller ~]# glance image-update --min-ram=1024 0bd27197-0547-49e3-8e66-9db6fa318643 +------------------+----------------------------------------------------------------------------------+ | Property | Value | +------------------+----------------------------------------------------------------------------------+ | checksum | ee1eca47dc88f4879d8a229cc70a07c6 | | container_format | bare | | created_at | 2022-11-19T11:37:21Z | | disk_format | qcow2 | | id | 0bd27197-0547-49e3-8e66-9db6fa318643 | | min_disk | 1 | | min_ram | 1024 | | name | cirros-0.3.4 | | os_hash_algo | sha512 | | os_hash_value | 1b03ca1bc3fafe448b90583c12f367949f8b0e665685979d95b004e48574b953316799e23240f4f7 | | | 39d1b5eb4c4ca24d38fdc6f4f9d8247a2bc64db25d6bbdb2 | | os_hidden | False | | owner | 0b6f2d0be1d342e09edc31dc841db7a5 | | protected | False | | size | 13287936 | | status | active | | tags | [] | | updated_at | 2022-11-19T11:47:47Z | | virtual_size | Not available | | visibility | shared | +------------------+----------------------------------------------------------------------------------+
(3)删除镜像
可以使用glance image-delete删除上传至OpenStack平台中的镜像,使用命令格式如下:
[root@controller ~]# glance help image-delete usage: glance image-delete <IMAGE_ID> [<IMAGE_ID> ...] Delete specified image. Positional arguments: <IMAGE_ID> ID of image(s) to delete. Run `glance --os-image-api-version 1 help image-delete` for v1 help
只需要在命令后跟上镜像ID即可。命令如下:
[root@controller ~]# glance image-delete 0bd27197-0547-49e3-8e66-9db6fa3 18643 [root@controller ~]# glance image-list +----+------+ | ID | Name | +----+------+ +----+------+

浙公网安备 33010602011771号