Glance組件詳解


一、Glance組件介紹

1、概念

Glance是OpenStack鏡像服務,用來注冊、登陸和檢索虛擬機鏡像。Glance服務提供了一個REST API,使你能夠查詢虛擬機鏡像元數據和檢索的實際鏡像。

通過鏡像服務提供的虛擬機鏡像可以存儲在不同的位置,從簡單的文件系統對象存儲到類似OpenStack對象存儲系統。

提供了對虛擬機部署的時候所能提供的鏡像的管理,包含鏡像的導入,格式,以及制作相應的模板。

2、鏡像生命周期

  1. Queued:初始化鏡像狀態,在鏡像文件剛剛被創建,在glance數據庫中已經保存了鏡像標示符,但還沒有上傳至glance中,此時的glance對鏡像數據沒有任何描述,其存儲空間為0。
  2. Saving:鏡像的原始數據在上傳中的一種過度狀態,它產生在鏡像數據上傳至glance的過程中,一般來講,glance收到一個image請求后,才將鏡像上傳給glance。
  3. Active:鏡像成功上傳完畢以后的一種狀態,它表明glance中可用的鏡像。
  4. Killed:鏡像上傳失敗或者鏡像文件不可讀的情況下,glance將鏡像狀態設置成Killed。
  5. Deleted:鏡像文件馬上會被刪除,只是當前glance這種仍然保留該鏡像文件的相關信息和原始鏡像數據。
  6. Pending_delete:鏡像文件馬上會被刪除,鏡像文件不能恢復。

3、磁盤格式

  1. RAW:RAW即常說的裸格式,它其實就是沒有格式,最大的特點就是簡單,數據寫入什么就是什么,不做任何修飾,所以再性能方面很不錯,甚至不需要啟動這個鏡像的虛擬機,只需要文件掛載即可直接讀寫內部數據。並且由於RAW格式簡單,因此RAW和其他格式之間的轉換也更容易。在KVM的虛擬化環境下,有很多使用RAW格式的虛擬機。
  2. QCOW2:它是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所使用的鏡像格式。

4、容器格式

  1. BARE:沒有容器的一種鏡像元數據格式。
  2. OVF:開放虛擬化格式。
  3. OVA:開放虛擬化設備格式。
  4. AKI、ARI:Amazon公司的AWS所使用的鏡像格式。

二、架構

1、核心組件

  1. Glance-api:接收REST API的請求,然后通過其他模塊(glance-registry及image store)來完成諸如鏡像的查找、獲取、上傳、刪除等操作,默認監聽端口9292。
  2. Glance-registry:用於與MariaDB數據庫交互,用於存儲或獲取鏡像的元數據(metadata),默認監聽端口9191。
  3. Store Adapter:通過提供的存儲接口來獲取鏡像
  4. Database:Image的metadata會保持到database中,主要使用MySQL和SQLite。

blockchain

2、配置文件

1.Glance-api.conf :Glance api 服務配置文件。

  • Glance服務安裝的日志和調試信息,例如:debug、日志文件路徑log_file等參數。
  • Glance服務的API服務器的相關信息。例如:服務綁定的IP地址、端口bind_port等參數
  • Registry服務的相關信息,例如:Registry服務的網絡地址、監聽的端口號、glance與Registry間通信的協議等。
  • 系統消息相關參數,該部分主要配置glance與系統消息的收發。消息隊列rabbitmq的IP地址、監聽端口等參數
  • 鏡像后端存儲的相關配置,一般情況下,glance-api.config中包含普通文件存儲、swift、S3、RBD等較為常見的存儲設備的信息配置。

2.Glance-registry.conf :Glanceregistry服務配置文件,用戶存儲鏡像有關的元數據。

3.glance-scrubber.conf :用於清理已刪除的鏡像的服務。

4.policy.json :鏡像服務的訪問控制。在這里,我們可以定義角色和策略,是OpenStack Glance中的安全特性。

三、常用操作

1、查看

查看鏡像列表

[root@controller ~]# glance image-list
+--------------------------------------+---------+
| ID                                   | Name    |
+--------------------------------------+---------+
| 3023637e-045b-4833-b953-476d72f2f21b | centos7 |
+--------------------------------------+---------+
[root@controller ~]# openstack image list
+--------------------------------------+---------+--------+
| ID                                   | Name    | Status |
+--------------------------------------+---------+--------+
| 3023637e-045b-4833-b953-476d72f2f21b | centos7 | active |
+--------------------------------------+---------+--------+

查看鏡像詳情

# 語法:glance image-show <image-id>
[root@controller ~]# glance image-show 3023637e-045b-4833-b953-476d72f2f21b
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | 8fedcc705e0f107be3376ebf57f304cd     |
| container_format | bare                                 |
| created_at       | 2021-12-06T22:06:30Z                 |
| disk_format      | qcow2                                |
| id               | 3023637e-045b-4833-b953-476d72f2f21b |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | centos7                              |
| owner            | 386dbfcf77e444c7872e4e23d5829fcc     |
| protected        | False                                |
| size             | 1141178368                           |
| status           | active                               |
| tags             | []                                   |
| updated_at       | 2021-12-06T22:06:33Z                 |
| virtual_size     | None                                 |
| visibility       | private                              |
+------------------+--------------------------------------+

# 語法:openstack image show <image>
[root@controller ~]# openstack image show centos7
+------------------+------------------------------------------------------+
| Field            | Value                                                |
+------------------+------------------------------------------------------+
| checksum         | 8fedcc705e0f107be3376ebf57f304cd                     |
| container_format | bare                                                 |
| created_at       | 2021-12-06T22:06:30Z                                 |
| disk_format      | qcow2                                                |
| file             | /v2/images/3023637e-045b-4833-b953-476d72f2f21b/file |
| id               | 3023637e-045b-4833-b953-476d72f2f21b                 |
| min_disk         | 0                                                    |
| min_ram          | 0                                                    |
| name             | centos7                                              |
| owner            | 386dbfcf77e444c7872e4e23d5829fcc                     |
| protected        | False                                                |
| schema           | /v2/schemas/image                                    |
| size             | 1141178368                                           |
| status           | active                                               |
| tags             |                                                      |
| updated_at       | 2021-12-06T22:06:33Z                                 |
| virtual_size     | None                                                 |
| visibility       | private                                              |
+------------------+------------------------------------------------------+

組合命令獲取鏡像列表

[root@controller images]# curl -g -i -X GET http://192.168.16.10:9292/v2/images \
> -H "User-Agent:python-openstackclient keystoneauth1/2.4.1 python-requests/2.10.0 CPython/2.7.5" \
> -H "X-Auth-Token:$(openstack token issue|awk -F '|' '/ id /{print $3}')"
HTTP/1.1 200 OK
Content-Length: 1248
Content-Type: application/json; charset=UTF-8
X-Openstack-Request-Id: req-71b99538-4880-4c75-9279-dc6f89aa85fe
Date: Sun, 12 Dec 2021 02:31:03 GMT

{"images": [{"status": "active", "name": "centos7.2", "tags": [], "container_format": "bare", "created_at": "2021-12-12T02:23:56Z", "size": 400752640, "disk_format": "qcow2", "updated_at": "2021-12-12T02:23:59Z", "visibility": "private", "self": "/v2/images/6b53e52d-8e45-4396-9d1b-7183ce55d503", "min_disk": 0, "protected": false, "id": "6b53e52d-8e45-4396-9d1b-7183ce55d503", "file": "/v2/images/6b53e52d-8e45-4396-9d1b-7183ce55d503/file", "checksum": "ea197f4c679b8e1ce34c0aa70ae2a94a", "owner": "386dbfcf77e444c7872e4e23d5829fcc", "virtual_size": null, "min_ram": 0, "schema": "/v2/schemas/image"}, {"status": "active", "name": "centos7", "tags": [], "container_format": "bare", "created_at": "2021-12-06T22:06:30Z", "size": 1141178368, "disk_format": "qcow2", "updated_at": "2021-12-06T22:06:33Z", "visibility": "private", "self": "/v2/images/3023637e-045b-4833-b953-476d72f2f21b", "min_disk": 0, "protected": false, "id": "3023637e-045b-4833-b953-476d72f2f21b", "file": "/v2/images/3023637e-045b-4833-b953-476d72f2f21b/file", "checksum": "8fedcc705e0f107be3376ebf57f304cd", "owner": "386dbfcf77e444c7872e4e23d5829fcc", "virtual_size": null, "min_ram": 0, "schema": "/v2/schemas/image"}], "schema": "/v2/schemas/images", "first": "/v2/images"} 

2、上傳

# 語法:
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>
  optional arguments:
    --id <id>             Image ID to reserve  # 鏡像ID
    --container-format <container-format>      # 鏡像容器格式,支持ami, ari, aki, bare, docker, ova, ovf。默認格式bare.
    --disk-format <disk-format>                # 鏡像磁盤格式,支持ami,ari, aki, vhd, vmdk, raw, qcow2, vhdx, vdi, iso, ploop。默認是raw
    --min-disk <disk-gb>  Minimum disk size needed to boot image, in gigabytes     # 啟動鏡像最小的硬盤
    --min-ram <ram-mb>    Minimum RAM size needed to boot image, in megabytes      # 啟動鏡像最小的內存
    --file <file>         Upload image from local file                             # 從本地文件上傳鏡像
    --volume <volume>     Create image from a volume                               # 從卷創建鏡像
    --protected           Prevent image from being deleted                         # 阻止鏡像被刪除
    --unprotected         Allow image to be deleted (default)                      # 允許鏡像被刪除
    --public              Image is accessible to the public                        # 鏡像可被公開訪問
    --private             Image is inaccessible to the public (default)            # 鏡像不能被公開訪問
    --community           Image is accessible to the community                     # 鏡像可被社區訪問
    --shared              Image can be shared                                      # 鏡像可共享
    --project-domain <project-domain>   Domain the project belongs to (name or ID).     # 項目所屬的域(名稱或ID)

[root@controller ~]# openstack image create --container-format bare --disk-format qcow2 \
--min-disk 10 --file CentOS_7.2_x86_64_XD.qcow2  --public \
centos7.2
+------------------+----------------------------------+
| Field            | Value                                                                                                                                                                                      |
+------------------+-------------------------------------------------+
| checksum         | ea197f4c679b8e1ce34c0aa70ae2a94a                                                                                                                                                           |
| container_format | bare                                                                                                                                                                                       |
| created_at       | 2022-12-02T11:44:33Z                                                                                                                                                                       |
| disk_format      | qcow2                                                                                                                                                                                      |
| file             | /v2/images/356cdc45-ad0b-493c-a0ba-cf3a889ec23b/file                                                                                                                                       |
| id               | 356cdc45-ad0b-493c-a0ba-cf3a889ec23b                                                                                                                                                       |
| min_disk         | 10                                                                                                                                                                                         |
| min_ram          | 0                                                                                                                                                                                          |
| name             | centos7.2                                                                                                                                                                                  |
| owner            | 4188570a34464b938ed3fa7e08681df8                                                                                                                                                           |
| properties       | os_hash_algo='sha512', os_hash_value='ee1841060288e9b34e221eea0d97043d3d18fff8cd65ba53b83f4604ad3803e1cae3a2524e463f7668dd697447458bba49b01f0d5b63e2a01b137b7d7f465ca6', os_hidden='False' |
| protected        | False                                                                                                                                                                                      |
| schema           | /v2/schemas/image                                                                                                                                                                          |
| size             | 400752640                                                                                                                                                                                  |
| status           | active                                                                                                                                                                                     |
| tags             |                                                                                                                                                                                            |
| updated_at       | 2022-12-02T11:44:35Z                                                                                                                                                                       |
| virtual_size     | None                                                                                                                                                                                       |
| visibility       | public 
+------------------+-----------------------------------------------------+
# 該虛擬機創建好后,可以用root/000000登錄。

# 上傳容器鏡像
[root@controller ~]# openstack image create centos7.5-docker --public --container-format docker --disk-format raw < /root/CentOS7_1804.tar
+------------------+-----------------------------------------+
| Field            | Value                                                                                                                                                                                      |
+------------------+----------------------------------------+
| checksum         | 438e76cdb677a3ab1156e284f58aa366                                                                                                                                                           |
| container_format | docker                                                                                                                                                                                     |
| created_at       | 2022-12-02T12:06:12Z                                                                                                                                                                       |
| disk_format      | raw                                                                                                                                                                                        |
| file             | /v2/images/1eb75af5-43ef-44e0-9367-83681181312a/file                                                                                                                                       |
| id               | 1eb75af5-43ef-44e0-9367-83681181312a                                                                                                                                                       |
| min_disk         | 0                                                                                                                                                                                          |
| min_ram          | 0                                                                                                                                                                                          |
| name             | centos7.5-docker                                                                                                                                                                           |
| owner            | 4188570a34464b938ed3fa7e08681df8                                                                                                                                                           |
| properties       | os_hash_algo='sha512', os_hash_value='f98fe6c1094585b3e5912d9881f91e81428bf767e574c4db0a2463cd7bba188b465ee05be226c7b7d60c9de60fbd815249b564f235e1ef56c0a929b104ba6222', os_hidden='False' |
| protected        | False                                                                                                                                                                                      |
| schema           | /v2/schemas/image                                                                                                                                                                          |
| size             | 381696512                                                                                                                                                                                  |
| status           | active                                                                                                                                                                                     |
| tags             |                                                                                                                                                                                            |
| updated_at       | 2022-12-02T12:06:14Z                                                                                                                                                                       |
| virtual_size     | None                                                                                                                                                                                       |
| visibility       | public                                                                                                                                                                                     |
+------------------+--------------------------------------------------+

# 語法:glance image-create [--options] <image-name>
[root@controller ~]# cd /opt/iaas/images/
[root@controller images]# ls
CentOS_6.5_x86_64_XD.qcow2  CentOS_7.2_x86_64_XD.qcow2  centos7.qcow2  CentOS-7-x86_64-DVD-1511.iso  MySQL_5.6_XD.qcow2
[root@controller images]# glance image-create --name "centos7.2" --disk-format qcow2 --container-format bare --progress < CentOS_7.2_x86_64_XD.qcow2
[=============================>] 100%
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | ea197f4c679b8e1ce34c0aa70ae2a94a     |
| container_format | bare                                 |
| created_at       | 2021-12-12T02:23:56Z                 |
| disk_format      | qcow2                                |
| id               | 6b53e52d-8e45-4396-9d1b-7183ce55d503 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | centos7.2                            |
| owner            | 386dbfcf77e444c7872e4e23d5829fcc     |
| protected        | False                                |
| size             | 400752640                            |
| status           | active                               |
| tags             | []                                   |
| updated_at       | 2021-12-12T02:23:59Z                 |
| virtual_size     | None                                 |
| visibility       | private                              |
+------------------+--------------------------------------+

3、更新

# 語法:
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>

# 示例:
[root@controller images]# glance image-update --min-disk 1 6b53e52d-8e45-4396-9d1b-7183ce55d503 
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | ea197f4c679b8e1ce34c0aa70ae2a94a     |
| container_format | bare                                 |
| created_at       | 2021-12-12T02:23:56Z                 |
| disk_format      | qcow2                                |
| id               | 6b53e52d-8e45-4396-9d1b-7183ce55d503 |
| min_disk         | 1                                    |
| min_ram          | 0                                    |
| name             | centos7.2                            |
| owner            | 386dbfcf77e444c7872e4e23d5829fcc     |
| protected        | False                                |
| size             | 400752640                            |
| status           | active                               |
| tags             | []                                   |
| updated_at       | 2021-12-12T02:47:49Z                 |
| virtual_size     | None                                 |
| visibility       | private                              |
+------------------+--------------------------------------+

4、導出

# 語法:glance image-download [--file <FILE>] [--progress] <IMAGE_ID>

[root@controller ~]# glance image-download --file /opt/centos72.qcow2 --progress 6b53e52d-8e45-4396-9d1b-7183ce55d503
[=============================>] 100%
[root@controller ~]# cd /opt/
[root@controller opt]# ls
centos7.2  centos72.qcow2  iaas
[root@controller opt]# du -sh *
4.2G	centos7.2
383M	centos72.qcow2

5、刪除

# 語法:glance image-delete <IMAGE_ID> [<IMAGE_ID> ...]

[root@controller opt]# glance image-delete 3023637e-045b-4833-b953-476d72f2f21b


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM