一、Glance概述

1. Glance镜像服务介绍

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

Glance与其他组件的关系如图1-1所示。

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,虽然此时的镜像文件没有删除,但镜像文件不能恢复的。

(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平台进行交互的流程图。

二、Glance运维

2.1 Glance基本操作

1)上传镜像

$ openstack image create "cirros" --disk-format qcow2 \
  --container-format bare --public \
  --file ~/images/cirros-0.3.5-x86_64-disk.img

参数说明
-–disk-format: 映像磁盘格式,支持的选项有:ami,ari, aki, vhd, vmdk, raw, qcow2, vhdx, vdi, iso, 默认格式为:raw
–-container-format: 图像容器格式,支持的选项有:ami、ari、aki、bare、docker、ova、ovf。 默认格式为:bare
–-public: 镜像可供公众访问
–-file:   从本地文件上传镜像

2)更新镜像

$ openstack  image set --min-ram 1 --min-disk 2 镜像id/name

参数说明
--min-ram: 镜像所需的最小 RAM 大小,以兆字节为单位
--min-disk: 镜像所需的最小磁盘大小,以 GB 为单位

--name:            镜像名称
--disk-format:     镜像格式
--container-format:镜像在项目中可见性

3)列出所有镜像

$ openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| eaf49775-a9b1-45df-9255-056e5f21636b | cirros | active |
+--------------------------------------+--------+--------+

4)查看镜像的详细信息

$ openstack image show 镜像id/name
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field            | Value                                                                                                                                                                                      |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| checksum         | c939f3fc8bc41f0b0a0a5fa6f2a4ce83                                                                                                                                                           |
| container_format | bare                                                                                                                                                                                       |
| created_at       | 2022-09-22T01:49:41Z                                                                                                                                                                       |
| disk_format      | qcow2                                                                                                                                                                                      |
| file             | /v2/images/eaf49775-a9b1-45df-9255-056e5f21636b/file                                                                                                                                       |
| id               | eaf49775-a9b1-45df-9255-056e5f21636b                                                                                                                                                       |
| min_disk         | 0                                                                                                                                                                                          |
| min_ram          | 0                                                                                                                                                                                          |
| name             | cirros                                                                                                                                                                                     |
| owner            | 02a5917b30b14eb49da3f1530e7639db                                                                                                                                                           |
| properties       | os_hash_algo='sha512', os_hash_value='4506fcff79aa46c1db6938a419f55bfe1a02d053c66eaca4f1107cc64fc969bf53fd03a79ef94a6e3b3264f87e50ae38dc9342cb5dce8b268b930787650c4d7d', os_hidden='False' |
| protected        | False                                                                                                                                                                                      |
| schema           | /v2/schemas/image                                                                                                                                                                          |
| size             | 399900672                                                                                                                                                                                  |
| status           | active                                                                                                                                                                                     |
| tags             |                                                                                                                                                                                            |
| updated_at       | 2022-09-22T01:49:44Z                                                                                                                                                                       |
| virtual_size     | None                                                                                                                                                                                       |
| visibility       | public                                                                                                                                                                                     |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

5)删除镜像

$ openstack image delete 镜像id/name

2.2 配额

1)限制单个镜像文件大小

$  vim /etc/glance/glance-api.conf
[DEFAULT]
image_size_cap = 104857600 
这里单位为 B,100M 转换成字节为 104857600# 重启服务让设置生效
$  systemctl restart openstack-glance-api.service

2.3 用户镜像权限设置

. 使用提供的OpenStack私有云平台,修改普通用户权限,使普通用户不能对镜像进行创建和删除操作

[root@controller ~]# vi /etc/glance/policy.json
"add_image": "role:admin",
"delete_image": "role:admin"
Logo

一站式 AI 云服务平台

更多推荐