Glance(镜像)服务

1.镜像的概述

Glance服务实现发现、注册、获取虚拟机镜像和镜像元数据,镜像数据支持存储多种的存储系统,这些存储系统可以是简单的文件系统、对象存储系统。

C/S架构,glance-client、Glance、Glance-store。

所有的镜像文件操作都是通过glance_store库完成的,它是提供通用的接口,用来对接后端外部不同的存储。

Glance架构里面分为很多组件,如下:

(1)客户端:外部用于同Glance服务的交互和操作

(2)api:对外的REST接口

(3)数据库的抽象层(DAL):Glance和数据库之间直接交互的编程接口。

(4)域控制器:中间件实现了Glance的认证、通知、策略和数据连接等功能

(5)注册层:可选,用于管理域控制和数据库DAL层之间的安全通信

(6)DB:存储镜像的元数据,可以根据需要选择不同的数据库,目前采用的数据库类型是Mysql

(7)store:对接不同数据存储的抽象层

(8)后端存储:实际接入的存储系统。可以接入简单的文件系统、对象存储、Ceph、S3云存储

在使用Glance服务时需要配置两个模块的文件(glance-api.conf、glance-registry.conf)。

(1)Glance-registry:存储、处理和获取镜像元数据,内部服务只对Glance内部进行支持,不会暴露给用户。

(2)Glance-all:对于api和registry进程的封装。

(3)glance-api:接受镜像的调用请求

2.镜像和容器的文件格式

云主机镜像需要指定磁盘格式和容器的格式。

(1)qcow2:qemu模拟器,支持可动态扩展、写时复制的磁盘格式,也是KVM虚拟机默认使用的磁盘文件格式。

(2)raw:非结构化的磁盘镜像格式。

(3)AMI/AKI/ARI:是亚马逊云 EC2最初支持的镜像格式。

(4)VHD:微软虚拟磁盘文件。

(5)VMDK:是VMware创建的虚拟机格式。

(6)OVF:开放的虚拟化格式,OVF文件一种开源的文件规范,可以用在虚拟文件的打包。

容器格式我们可以理解成,虚拟机镜像添加元数据后重新打包的格式。

(1)Bare:指定没有容器和元数据封装在镜像中,如果Glance和Openstack的其他服务没有使用容器格式的字符串,为了安全起见,建议设置bare。

(2)aki:存储在Glance中的是亚马逊的内核镜像

(3)ari:亚马逊ramdisk镜像

(4)ova:存储在Glance中的OVA的tar归档文件

3.镜像的状态

(1)queued(排队):镜像的ID已经创建和注册,但是镜像数据还没上传

(2)saving(保存):镜像数据在上传中

(3)active(有效的):镜像成功被创建,状态是有效的可以去使用

(4)deactived(不活跃的):镜像成功的创建了,但是对于非管理员用户是不可用的

(5)killed(错误):上传镜像数据出错,不可以读取的状态

(6)delete(被删除):镜像已经不可用,将会被自动删除

(7)pending_delete(等待删除):镜像不可用,等待将被自动删除

4. 运维镜像服务

[root@controller ~]# mount chinaskills_cloud_iaas_v2.0.3.iso  /opt/iaas/
mount: /dev/loop0 is write-protected, mounting read-only
[root@controller ~]# cd /opt/iaas/images/
[root@controller images]# ls
amphora-x64-haproxy.qcow2  CentOS-7-x86_64-2009.qcow2    MySQL_5.6_XD.qcow2
CentOS7_1804.tar           cirros-0.3.4-x86_64-disk.img
[root@controller images]# source  /etc/keystone/admin-openrc.sh
[root@controller images]# glance image-create --name "centos7.9" --disk-format qcow2  --container-format bare --progress <CentOS-7-x86_64-2009.qcow2
[=============================>] 100%
+------------------+----------------------------------------------------------------------------------+
| Property         | Value                                                                            |
+------------------+----------------------------------------------------------------------------------+
| checksum         | c939f3fc8bc41f0b0a0a5fa6f2a4ce83                                                 |
| container_format | bare                                                                             |
| created_at       | 2022-10-16T07:34:25Z                                                             |
| disk_format      | qcow2                                                                            |
| id               | 3b983a5e-8c0c-4d1f-b2fa-f47e9d29e3a9                                             |
| min_disk         | 0                                                                                |
| min_ram          | 0                                                                                |
| name             | centos7.9                                                                        |
| os_hash_algo     | sha512                                                                           |
| os_hash_value    | 4506fcff79aa46c1db6938a419f55bfe1a02d053c66eaca4f1107cc64fc969bf53fd03a79ef94a6e |
|                  | 3b3264f87e50ae38dc9342cb5dce8b268b930787650c4d7d                                 |
| os_hidden        | False                                                                            |
| owner            | a9ef1cb9c3db40c0889807210939dee9                                                 |
| protected        | False                                                                            |
| size             | 399900672                                                                        |
| status           | active                                                                           |
| tags             | []                                                                               |
| updated_at       | 2022-10-16T07:34:40Z                                                             |
| virtual_size     | Not available                                                                    |
| visibility       | shared                                                                           |
+------------------+----------------------------------------------------------------------------------+
[root@controller images]# openstack-service  status |grep glance
MainPID=1020 Id=openstack-glance-api.service ActiveState=active
MainPID=1028 Id=openstack-glance-registry.service ActiveState=active
[root@controller images]# systemctl  status openstack-glance*         //查询镜像服务的状态
[root@controller images]# glance image-list        //查看镜像列表
+--------------------------------------+-----------+
| ID                                   | Name      |
+--------------------------------------+-----------+
| 5b556f8f-6ddf-4139-972a-0eb61407ad23 | centos7.2 |
| 3b983a5e-8c0c-4d1f-b2fa-f47e9d29e3a9 | centos7.9 |
+--------------------------------------+-----------+
[root@controller images]# glance image-show 5b556f8f-6ddf-4139-972a-0eb61407ad23     //查看镜像的详细信息,必须要带ID号查看
[root@controller images]# glance image-delete  5b556f8f-6ddf-4139-972a-0eb61407ad23  //删除一个镜像