glance做什麼
OpenStack 由 Glance 提供 Image 服務
擷取鏡像位置
https://docs.openstack.org/image-guide/obtain-images.html#centos
了解 Image
要了解 Image Service,先得搞清楚什麼是 Image 以及為什麼要用 Image?
在傳統 IT 環境下,安裝一個系統要麼從安裝 CD 從頭安裝,要麼用 Ghost 等克隆工具恢複。這兩種方式有如下幾個問題:
- 如果要安裝的系統多了效率就很低
- 時間長,工作量大
- 安裝完還要進行手工配置,比如安裝其他的軟體,設定 IP 等
- 備份和恢複系統不靈活
雲環境下需要更高效的方案,這就是 Image。 Image 是一個模闆,裡面包含了基本的作業系統和其他的軟體。
舉例來說,有家公司需要為每位員工配置一套辦公用的系統,一般需要一個 Win7 系統再加 MS office 軟體。 OpenStack 是這麼玩的:
- 先手工安裝好這麼一個虛機
- 然後對虛機執行 snapshot,這樣就得到了一個 image
- 當有新員工入職需要辦公環境時,立馬啟動一個或多個該 image 的 instance(虛機)就可以了
在這個過程中,第 1 步跟傳統方式類似,需要手工操作和一定時間,但第 2、3 步非常快,全自動化,一般都是秒級别。而且 2、3 步可以循環做。 比如公司新上了一套 OA 系統,每個員工的 PC 上都得有用戶端軟體。 那麼可以在某個現有虛機中先手工安裝好 OA 用戶端,然後執行 snapshot 操作,得到新的 image,以後可以就直接使用新 image 建立虛機了。另外,snapshot 還有備份的作用,能夠非常友善的恢複系統。
了解Image Service
Image Service 的功能是管理 Image,讓使用者能夠發現、擷取和儲存 Image。在 OpenStack 中,提供 Image Service 的是 Glance,其具體功能如下:
- 提供 REST API 讓使用者能夠查詢和擷取 image 的中繼資料和 image 本身
- 支援多種方式存儲 image,包括普通的檔案系統、Swift、Amazon S3 等
- 對 Instance 執行 Snapshot 建立新的 image
Glance 架構
glance-api
glance-api 是系統背景運作的服務程序。 對外提供 REST API,響應 image 查詢、擷取和存儲的調用。
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是指一種存檔資料檔案在CD光牒上的格式。
(7)AKI、ARI、AMI
Amazon公司的AWS所使用的鏡像格式。
Database
Image 的 metadata 會保持到 database 中,預設是 MySQL。 在控制節點上可以檢視 glance 的 database 資訊
Store backend
Glance 自己并不存儲 image。 真正的 image 是存放在 backend 中的。 Glance 支援多種 backend,包括:
- A directory on a local file system(這是預設配置)
- GridFS
- Ceph RBD
- Amazon S3
- Sheepdog
- OpenStack Block Storage (Cinder)
- OpenStack Object Storage (Swift)
- 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
檢視儲存目錄
[[email protected] ~]# 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? 這裡 給出下面的理由:
- Web UI 的功能沒有 CLI 全,有些操作隻提供了 CLI。 即便是都有的功能,CLI 可以使用的參數更多
- 一般來說,CLI 傳回結果更快,操作起來更高效
- CLI 可放在腳本中進行批處理
- 有些耗時的操作 CLI 更合适,比如建立鏡像(後面将涉及)
Web UI 建立 image
第一步:admin 登入後,Project -> Compute -> Images
第二步:建立鏡像
- 這裡我們上傳一個 image。 點選浏覽,選擇鏡像檔案 cirros-0.3.5-x86_64-disk.img。 cirros 是一個很小的 linux 鏡像,非常适合測試用。 大家可以到 http://download.cirros-cloud.net/ 下載下傳。
- 格式選擇 QCOW2。
如果勾選共有,該 image 可以被其他 Project 使用 如果勾選受保護的是,該 image 不允許被删除。
第三步:檢視建立的鏡像
第四步:檢視cirros詳細資訊,點選cirros
CLI 建立 image
cirros 這個 linux 鏡像很小,通過 Web UI 上傳很快,操作會很順暢。但如果我們要上傳的鏡像比較大(比如好幾個 G ),那麼操作會長時間停留在上傳的 Web 界面,我們也不知道目前到底處于什麼狀态。 對于這樣的操作,CLI 是更好的選擇。
- 将 image 上傳到控制節點的檔案系統中,例如 /tmp/cirros-0.3.5-x86_64-disk.img
- 執行建立指令
[[email protected] 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
[[email protected] 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:[email protected]/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:[email protected]/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]
轉載于:https://www.cnblogs.com/Super-It/p/11368721.html