1. 程式人生 > 其它 >Glance元件詳解

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。

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、上傳

[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