glance服务详解
一:简介
一:作用
1:glance是openstack镜像服务,用来注册,登陆和检索虚拟机镜像
2:glance服务提供了一个REST api使你能够查询虚拟机镜像元数据和检索实际的镜像
3:通过镜像服务提供的虚拟机镜像可以存储在不同的位置,从简单的文件系统到类似openstack对象存储系统
4:提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模版
二:基础概念
1: 镜像数据类型:
1:镜像元数据(metadata)
镜像元数据是存放在数据库中关于镜像的相关信息,如文件名,大小,状态,用于快速的检索,都可以通过镜像元数据进行查询
2:镜像文件(image file)
即镜像本身,它存储与后端存储,就是第三方存储系统
2:磁盘格式
1:RAW
即裸格式(无结构的磁盘格式),就是没有规格,最大的特点就是简单,数据写入什么就是什么,不做任何的修饰,甚至不需要启动镜像虚拟机,只需要文件挂载即可直接读写内部数据,并且RAW格式简单,因此RAW和其他的格式转换也更容易,在KVM的虚拟化环境下,有很多的RAW格式的虚拟机
2:QCOW2(openstack最常用的磁盘格式)
主要的特性就是磁盘文件大小可以随着数据的增长而增长,列如,创建了一个10G的虚拟机,实际内部用了5G那么初始的qcow2磁盘文件大小就是5G,与RAW相比,可以节省一部分的空间资源
3:VHD
也是一种通用的磁盘格式,支持VirtualPC和Hyper-V,VirtualBox也支持,要使用Hyper-V
的虚拟化,就要上传VHD格式的镜像文件
4:VMDK(虚拟机创建的一个磁盘格式)
也是一个开放的通用格式,
5:iso
存档数据文件在光盘上的格式
6:VDI
oracle公司的virtualbos虚拟软件使用的格式
3:容器格式
1:BARE(openstack最常用的容器格式)
没有容器的一种镜像元数据格式
2:OVF
开放虚拟化格式
3:OVA
开放虚拟化设备格式
4:组件架构
应用接口(glance-api):
提供对外服务的接口,当外部服务请求是对镜像元数据进行操作时,glance-api就会与数据库进行交互,实现对镜像元数据的检索,存储等相关功能;如果是对镜像文件进行操作的话,glance-api将会通过存储适配器调用后端存储对镜像文件进行操作,完成具体的上传,删除等操作
存储适配器(store adapter):
存储适配器是一个接口层,其中包含对镜像文件的各种操作方法,但这些方法都需要调用后端存储中的某个具体的文件系统来进行相应的文件处理
后端存储:
后端存储独立于glance,不是glance组件,glance自己不存储镜像,存储于后端存储上面
存储系统有file,ceph,S3,cinder,swift等
三:工作流程
上面就是nova向glance请求镜像文件的流程图,如果是查找镜像文件的信息,glance-api就会与数据库进行交互,如果是对镜像文件进行操作的话,就会调用存储适配器与后端存储进行交互,获得镜像数据
具体点:
glance-api:接收REST API的请求,然后通过其他的模块(glance-registry,image store)来完成镜像的查找,获取,上传,删除等操作,默认监听的端口9292
glance-registry:用于与数据库进行交互的用于存储或获取镜像的元数据(metadata),默认监听的端口9191
store adapter:通过提供的存储接口来获取镜像
database:image的metadata会保持到database
创建的镜像流程:
- Glance-api接收用户上传的镜像文件,并生成关于该镜像的元数据。
- Glance-api将这些元数据发送给Glance-registry,Glance-registry将这些元数据存储在数据库中。,所以glance-registry有存储和获取镜像元的数据
- 同时,Glance-api将实际的镜像数据存储在配置好的存储仓库(如OpenStack Swift、Amazon S3等)中。
nova请求请求镜像文件的流程:
glance-api先与数据库进行交互,获得镜像的地址,然后存储适配器根据镜像文件的地址在后端存储中找到,返回给nova
四:glance服务操作
1:上传镜像
openstack命令
#查看帮助文档
[root@controller ~]# openstack image create --help
usage: openstack image create [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--max-width <integer>]
[--fit-width] [--print-empty] [--noindent]
[--prefix PREFIX] [--id <id>]
[--container-format <container-format>]
[--disk-format <disk-format>]
[--min-disk <disk-gb>] [--min-ram <ram-mb>]
[--file <file> | --volume <volume>] [--force]
[--sign-key-path <sign-key-path>]
[--sign-cert-id <sign-cert-id>]
[--protected | --unprotected]
[--public | --private | --community | --shared]
[--property <key=value>] [--tag <tag>]
[--project <project>]
[--project-domain <project-domain>]
<image-name>
#上传镜像文件
一定要指定镜像文件的磁盘格式和容器格式
[root@controller ~]# openstack image create --disk-format qcow2 --container-format bare --public --file cirros-0.5.1-x86_64-disk.img cirrors
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| checksum | 1d3062cd89af34e419f7100277f38b2b |
| container_format | bare |
| created_at | 2024-02-19T02:55:25Z |
| disk_format | qcow2 |
| file | /v2/images/f9a1bdea-12b4-4111-9116-3f6f60f977e9/file |
| id | f9a1bdea-12b4-4111-9116-3f6f60f977e9 |
| min_disk | 0 |
| min_ram | 0 |
| name | cirrors |
| owner | c0e095cd4ffe4567a3028105f7197e50 |
| properties | os_hash_algo='sha512', os_hash_value='553d220ed58cfee7dafe003c446a9f197ab5edf8ffc09396c74187cf83873c877e7ae041cb80f3b91489acf687183adcd689b53b38e3ddd22e627e7f98a09c46', os_hidden='False' |
| protected | False |
| schema | /v2/schemas/image |
| size | 16338944 |
| status | active |
| tags | |
| updated_at | 2024-02-19T02:55:25Z |
| virtual_size | None |
| visibility | public |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
glance命令
glance image-create options image-name < 镜像文件
[root@controller ~]# glance image-create --disk-format qcow2 --container-format bare --name cirrors --progress < cirros-0.5.1-x86_64-disk.img [=============================>] 100% +------------------+----------------------------------------------------------------------------------+ | Property | Value | +------------------+----------------------------------------------------------------------------------+ | checksum | 1d3062cd89af34e419f7100277f38b2b | | container_format | bare | | created_at | 2024-02-19T03:06:51Z | | disk_format | qcow2 | | id | 9b1be449-43a1-4ec1-9256-f1daeef1b842 | | min_disk | 0 | | min_ram | 0 | | name | cirrors | | os_hash_algo | sha512 | | os_hash_value | 553d220ed58cfee7dafe003c446a9f197ab5edf8ffc09396c74187cf83873c877e7ae041cb80f3b9 | | | 1489acf687183adcd689b53b38e3ddd22e627e7f98a09c46 | | os_hidden | False | | owner | c0e095cd4ffe4567a3028105f7197e50 | | protected | False | | size | 16338944 | | status | active | | tags | [] | | updated_at | 2024-02-19T03:06:51Z | | virtual_size | Not available | | visibility | shared | +------------------+----------------------------------------------------------------------------------+
2:查看镜像
openstack命令
#列出已有的镜像文件 [root@controller ~]# openstack image list +--------------------------------------+---------+--------+ | ID | Name | Status | +--------------------------------------+---------+--------+ | 9b1be449-43a1-4ec1-9256-f1daeef1b842 | cirrors | active | +--------------------------------------+---------+--------+ #查看详细的镜像文件的信息 [root@controller ~]# openstack image show cirrors +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Field | Value | +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | checksum | 1d3062cd89af34e419f7100277f38b2b | | container_format | bare | | created_at | 2024-02-19T03:06:51Z | | disk_format | qcow2 | | file | /v2/images/9b1be449-43a1-4ec1-9256-f1daeef1b842/file | | id | 9b1be449-43a1-4ec1-9256-f1daeef1b842 | | min_disk | 0 | | min_ram | 0 | | name | cirrors | | owner | c0e095cd4ffe4567a3028105f7197e50 | | properties | os_hash_algo='sha512', os_hash_value='553d220ed58cfee7dafe003c446a9f197ab5edf8ffc09396c74187cf83873c877e7ae041cb80f3b91489acf687183adcd689b53b38e3ddd22e627e7f98a09c46', os_hidden='False' | | protected | False | | schema | /v2/schemas/image | | size | 16338944 | | status | active | | tags | | | updated_at | 2024-02-19T03:06:51Z | | virtual_size | None | | visibility | shared | +------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ [root@controller ~]#
glance命令
[root@controller ~]# glance image-list +--------------------------------------+---------+ | ID | Name | +--------------------------------------+---------+ | 9b1be449-43a1-4ec1-9256-f1daeef1b842 | cirrors | +--------------------------------------+---------+ [root@controller ~]# glance image-show 9b1be449-43a1-4ec1-9256-f1daeef1b842 +------------------+----------------------------------------------------------------------------------+ | Property | Value | +------------------+----------------------------------------------------------------------------------+ | checksum | 1d3062cd89af34e419f7100277f38b2b | | container_format | bare | | created_at | 2024-02-19T03:06:51Z | | disk_format | qcow2 | | id | 9b1be449-43a1-4ec1-9256-f1daeef1b842 | | min_disk | 0 | | min_ram | 0 | | name | cirrors | | os_hash_algo | sha512 | | os_hash_value | 553d220ed58cfee7dafe003c446a9f197ab5edf8ffc09396c74187cf83873c877e7ae041cb80f3b9 | | | 1489acf687183adcd689b53b38e3ddd22e627e7f98a09c46 | | os_hidden | False | | owner | c0e095cd4ffe4567a3028105f7197e50 | | protected | False | | size | 16338944 | | status | active | | tags | [] | | updated_at | 2024-02-19T03:06:51Z | | virtual_size | Not available | | visibility | shared | +------------------+----------------------------------------------------------------------------------+
3:更新
更新的就是镜像文件的元数据,镜像文件的状态等
openstack命令
[root@controller ~]# openstack image set --help | head -n 20
usage: openstack image set [-h] [--name <name>] [--min-disk <disk-gb>]
[--min-ram <ram-mb>]
[--container-format <container-format>]
[--disk-format <disk-format>]
[--protected | --unprotected]
[--public | --private | --community | --shared]
[--property <key=value>] [--tag <tag>]
[--architecture <architecture>]
[--instance-id <instance-id>]
[--kernel-id <kernel-id>] [--os-distro <os-distro>]
[--os-version <os-version>]
[--ramdisk-id <ramdisk-id>]
[--deactivate | --activate] [--project <project>]
[--project-domain <project-domain>]
[--accept | --reject | --pending]
<image>
#设置为私有镜像
[root@controller ~]# openstack image set --private cirrors
glance命令
#将镜像文件设置为公有的
[root@controller ~]# glance image-update --visibility=public 9b1be449-43a1-4ec1-9256-f1daeef1b842
+------------------+----------------------------------------------------------------------------------+
| Property | Value |
+------------------+----------------------------------------------------------------------------------+
| checksum | 1d3062cd89af34e419f7100277f38b2b |
| container_format | bare |
| created_at | 2024-02-19T03:06:51Z |
| disk_format | qcow2 |
| id | 9b1be449-43a1-4ec1-9256-f1daeef1b842 |
| min_disk | 0 |
| min_ram | 0 |
| name | cirrors |
| os_hash_algo | sha512 |
| os_hash_value | 553d220ed58cfee7dafe003c446a9f197ab5edf8ffc09396c74187cf83873c877e7ae041cb80f3b9 |
| | 1489acf687183adcd689b53b38e3ddd22e627e7f98a09c46 |
| os_hidden | False |
| owner | c0e095cd4ffe4567a3028105f7197e50 |
| protected | False |
| size | 16338944 |
| status | active |
| tags | [] |
| updated_at | 2024-02-19T03:38:47Z |
| virtual_size | Not available |
| visibility | public |
+------------------+----------------------------------------------------------------------------------+
[root@controller ~]#
4:导出
导出就是将镜像文件导入到一个文件中,备份非常的好用
openstack命令
[root@controller ~]# openstack image save --file /mnt/11 cirrors
glance命令
[root@controller mnt]# glance image-download --file /mnt/22 9b1be449-43a1-4ec1-9256-f1daeef1b842
5:删除
openstack命令
[root@controller mnt]# openstack image delete cirrors
glance命令
[root@controller mnt]# glance image-delete 9b1be449-43a1-4ec1-9256-f1daeef1b842
glance命令后面一般要加上镜像的id才行
6:图解