雲計算openstack核心組件--glance-鏡像服務(6)

glance作什麼

OpenStack 由 Glance 提供 Image 服務html

獲取鏡像位置mysql

https://docs.openstack.org/image-guide/obtain-images.html#centoslinux

 

理解 Image

 

要理解 Image Service,先得搞清楚什麼是 Image 以及爲何要用 Image?web

在傳統 IT 環境下,安裝一個系統要麼從安裝 CD 從頭安裝,要麼用 Ghost 等克隆工具恢復。這兩種方式有以下幾個問題:redis

  1. 若是要安裝的系統多了效率就很低
  2. 時間長,工做量大
  3. 安裝完還要進行手工配置,好比安裝其餘的軟件,設置 IP 等
  4. 備份和恢復系統不靈活

雲環境下須要更高效的方案,這就是 Image。 Image 是一個模板,裏面包含了基本的操做系統和其餘的軟件。sql

舉例來講,有家公司須要爲每位員工配置一套辦公用的系統,通常須要一個 Win7 系統再加 MS office 軟件。 OpenStack 是這麼玩的:vim

  1. 先手工安裝好這麼一個虛機
  2. 而後對虛機執行 snapshot,這樣就獲得了一個 image
  3. 當有新員工入職須要辦公環境時,立馬啓動一個或多個該 image 的 instance(虛機)就能夠了

在這個過程當中,第 1 步跟傳統方式相似,須要手工操做和必定時間,但第 二、3 步很是快,全自動化,通常都是秒級別。並且 二、3 步能夠循環作。 好比公司新上了一套 OA 系統,每一個員工的 PC 上都得有客戶端軟件。 那麼能夠在某個現有虛機中先手工安裝好 OA 客戶端,而後執行 snapshot 操做,獲得新的 image,之後能夠就直接使用新 image 建立虛機了。另外,snapshot 還有備份的做用,可以很是方便的恢復系統。centos

 

理解Image Service

 

Image Service 的功能是管理 Image,讓用戶可以發現、獲取和保存 Image。在 OpenStack 中,提供 Image Service 的是 Glance,其具體功能以下:api

  1. 提供 REST API 讓用戶可以查詢和獲取 image 的元數據和 image 自己
  2. 支持多種方式存儲 image,包括普通的文件系統、Swift、Amazon S3 等
  3. 對 Instance 執行 Snapshot 建立新的 image

 

Glance 架構

glance-api

 

glance-api 是系統後臺運行的服務進程。 對外提供 REST API,響應 image 查詢、獲取和存儲的調用。bash

glance-api 不會真正處理請求。 若是操做是與 image metadata(元數據)相關,glance-api 會把請求轉發給 glance-registry; 若是操做是與 image 自身存取相關,glance-api 會把請求轉發給該 image 的 store backend。

在控制節點上能夠查看 glance-api 進程

glance-registry

 

glance-registry 是系統後臺運行的服務進程。 負責處理和存取 image 的 metadata,例如 image 的大小和類型。在控制節點上能夠查看 glance-registry 

Glance 支持多種格式的 image,包括

(1)RAW即常說的裸格式,它其實就是沒有格式,最大的特色就是簡單,數據寫入什麼就是什麼,不作任何修飾,因此在性能方面很不錯,甚至不須要啓動這種鏡像的虛擬機,只須要把文件掛載,便可直接讀寫內部數據。而且因爲RAW格式簡單,所以RAW和其餘格式之間的轉換也更容易。在KVM的虛擬化環境下,有不少使用RAW格式的虛擬機。
(2)qcow2
qcow2是qcow的升級版本,它是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所使用的鏡像格式。

 

Database

 

Image 的 metadata 會保持到 database 中,默認是 MySQL。 在控制節點上能夠查看 glance 的 database 信息

Store backend

 

Glance 本身並不存儲 image。 真正的 image 是存放在 backend 中的。 Glance 支持多種 backend,包括:

  1. A directory on a local file system(這是默認配置)
  2. GridFS
  3. Ceph RBD
  4. Amazon S3
  5. Sheepdog
  6. OpenStack Block Storage (Cinder)
  7. OpenStack Object Storage (Swift)
  8. VMware ESX

具體使用哪一種 backend,是在 /etc/glance/glance-api.conf 中配置的
在咱們的 devstack 環境中,image 存放在控制節點本地目錄 /var/lib/glance/images/中

其餘 backend 的配置可參考http://docs.openstack.org/liberty/config-reference/content/configuring-image-service-backends.html

查看目前已經存在的 image

 

查看保存目錄

[root@controller ~]# ls /var/lib/glance/images/
a86d1a0c-c388-4702-aaa6-be045cb234c1

每一個 image 在目錄下都對應有一個文件,文件以 image 的 ID 命名

 

經過 Web GUI 和 CLI 兩種方法建立 Image

 

OpenStack 爲終端用戶提供了 Web UI(Horizon)和命令行 CLI 兩種交換界面。

可能有些同窗以爲既然有更友好的 Web UI 了,幹嗎還要用 CLI? 這裏 給出下面的理由:

  1. Web UI 的功能沒有 CLI 全,有些操做只提供了 CLI。 即使是都有的功能,CLI 可使用的參數更多
  2. 通常來講,CLI 返回結果更快,操做起來更高效
  3. CLI 可放在腳本中進行批處理
  4. 有些耗時的操做 CLI 更合適,好比建立鏡像(後面將涉及)

 

Web UI 建立 image

 

第一步:admin 登陸後,Project -> Compute -> Images

第二步:建立鏡像

  1. 這裏咱們上傳一個 image。 點擊瀏覽,選擇鏡像文件 cirros-0.3.5-x86_64-disk.img。 cirros 是一個很小的 linux 鏡像,很是適合測試用。 你們能夠到 http://download.cirros-cloud.net/ 下載。
  2. 格式選擇 QCOW2。

若是勾選共有,該 image 能夠被其餘 Project 使用 若是勾選受保護的是,該 image 不容許被刪除。

 

第三步:查看建立的鏡像

第四步:查看cirros詳細信息,點擊cirros

CLI 建立 image

 

cirros 這個 linux 鏡像很小,經過 Web UI 上傳很快,操做會很順暢。但若是咱們要上傳的鏡像比較大(好比好幾個 G ),那麼操做會長時間停留在上傳的 Web 界面,咱們也不知道目前到底處於什麼狀態。 對於這樣的操做,CLI 是更好的選擇。

  1. 將 image 上傳到控制節點的文件系統中,例如 /tmp/cirros-0.3.5-x86_64-disk.img
  2. 執行建立命令
[root@controller tmp]# glance image-create --name cirros1 --file /tmp/cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --progress
[=============================>] 100%
+------------------+--------------------------------------+
| Property         | Value                                |
+------------------+--------------------------------------+
| checksum         | f8ab98ff5e73ebab884d80c9dc9c7290     |
| container_format | bare                                 |
| created_at       | 2019-06-07T16:19:58Z                 |
| disk_format      | qcow2                                |
| id               | a218e386-bd4d-43df-a7d4-2128cb906f51 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | cirros1                              |
| owner            | 3c48d267eaa14f44a7cacd7e88bb46b7     |
| protected        | False                                |
| size             | 13267968                             |
| status           | active                               |
| tags             | []                                   |
| updated_at       | 2019-06-07T16:19:59Z                 |
| virtual_size     | None                                 |
| visibility       | shared                               |
+------------------+--------------------------------------+

在建立 image 的 CLI 參數中咱們用 –progress 讓其顯示文件上傳的百分比 %,是否是比 Web UI更直觀呢?

 

在 /var/lib/glance/images/ 下查看新的 Image

[root@controller tmp]# ls /var/lib/glance/images/
a218e386-bd4d-43df-a7d4-2128cb906f51  fe4bca11-d413-4282-9dd6-08941cae5ba8

 

web查看

 

如何使用 OpenStack CLI

 

OpenStack 服務都有本身的 CLI。

命令很好記,就是服務的名字,好比 Glance 就是 glance,Nova 就是 nova。

但 Keystone 比較特殊,如今是用 openstack 來代替老版的 keystone 命令。

不一樣服務用的命令雖然不一樣,但這些命令使用方式卻很是相似,能夠觸類旁通。

1. 執行命令以前,須要設置環境變量。

這些變量包含用戶名、Project、密碼等; 若是不設置,每次執行命令都必須設置相關的命令行參數

2. 各個服務的命令都有增、刪、改、查的操做

其格式是

CMD <obj>-create [parm1] [parm2]…
CMD <obj>-delete [parm]
CMD <obj>-update [parm1] [parm2]…
CMD <obj>-list CMD <obj>-show [parm

例如 glance 管理的是 image,那麼:
CMD 就是 glance,obj 就是 image,對應的命令就有

glance image-create
glance image-delete
glance image-update
glance image-list
glance image-show

再好比 neutron 負責管理網絡和子網,那麼:
CMD 就是 neutron;obj 就是 net 和 subnet 對應的命令就有

網絡相關操做

neutron net-create
neutron net -delete
neutron net -update
neutron net -list
neutron net –show

子網相關操做

neutron subnet-create
neutron subnet -delete
neutron subnet -update
neutron subnet -list
neutron subnet–show

有的命令 <obj> 能夠省略,好比 nova 下面的操做都是針對 instance

nova boot
nova delete
nova list 
nova show

3. 每一個對象都有 ID

delete,show 等操做都以 ID 爲參數,例如

 

4. 可用 help 查看命令的用法

除了 delete,show 等操做只須要 ID 一個參數,其餘操做可能須要更多的參數,用 help 查看所需的參數,格式是

CMD help [SUB-CMD]

例如查看 glance 都有哪些 SUB-CMD

查看 glance image-update 的用法

 

OpenStack 排查問題的方法

 

OpenStack 排查問題的方法主要是經過日誌,Service 都有本身單獨的日誌。Glance 主要有兩個日誌,glance_api.log 和 glance_registry.log,保存在/var/log/glance 目錄裏。

 

Glance配置文件
vim /etc/glance/glance-api.conf
[DEFAULT]
 
[cors]
[cors.subdomain]
 
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
 
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
 
[image_format]
 
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
 
[matchmaker_redis]
 
[oslo_concurrency]
 
[oslo_messaging_amqp]
 
[oslo_messaging_kafka]
 
[oslo_messaging_notifications]
 
[oslo_messaging_rabbit]
 
[oslo_messaging_zmq]
 
[oslo_middleware]
 
[oslo_policy]
 
[paste_deploy]
flavor = keystone
 
[profiler]
 
[store_type_location_strategy]
 
[task]
 
[taskflow_executor]

vim /etc/glance/glance-registry.conf

[DEFAULT]
 
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
 
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
 
[matchmaker_redis]
 
[oslo_messaging_amqp]
 
[oslo_messaging_kafka]
 
[oslo_messaging_notifications]
 
[oslo_messaging_rabbit]
 
[oslo_messaging_zmq]
 
[oslo_policy]
 
[paste_deploy]
flavor = keystone
 
[profiler]
相關文章
相關標籤/搜索