OpenStack 由 Glance 提供 Image 服務html
獲取鏡像位置mysql
https://docs.openstack.org/image-guide/obtain-images.html#centoslinux
要理解 Image Service,先得搞清楚什麼是 Image 以及爲何要用 Image?web
在傳統 IT 環境下,安裝一個系統要麼從安裝 CD 從頭安裝,要麼用 Ghost 等克隆工具恢復。這兩種方式有以下幾個問題:redis
雲環境下須要更高效的方案,這就是 Image。 Image 是一個模板,裏面包含了基本的操做系統和其餘的軟件。sql
舉例來講,有家公司須要爲每位員工配置一套辦公用的系統,通常須要一個 Win7 系統再加 MS office 軟件。 OpenStack 是這麼玩的:vim
在這個過程當中,第 1 步跟傳統方式相似,須要手工操做和必定時間,但第 二、3 步很是快,全自動化,通常都是秒級別。並且 二、3 步能夠循環作。 好比公司新上了一套 OA 系統,每一個員工的 PC 上都得有客戶端軟件。 那麼能夠在某個現有虛機中先手工安裝好 OA 客戶端,而後執行 snapshot 操做,獲得新的 image,之後能夠就直接使用新 image 建立虛機了。另外,snapshot 還有備份的做用,可以很是方便的恢復系統。centos
Image Service 的功能是管理 Image,讓用戶可以發現、獲取和保存 Image。在 OpenStack 中,提供 Image Service 的是 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 是系統後臺運行的服務進程。 負責處理和存取 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所使用的鏡像格式。
Image 的 metadata 會保持到 database 中,默認是 MySQL。 在控制節點上能夠查看 glance 的 database 信息
Glance 本身並不存儲 image。 真正的 image 是存放在 backend 中的。 Glance 支持多種 backend,包括:
具體使用哪一種 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 命名
OpenStack 爲終端用戶提供了 Web UI(Horizon)和命令行 CLI 兩種交換界面。
可能有些同窗以爲既然有更友好的 Web UI 了,幹嗎還要用 CLI? 這裏 給出下面的理由:
第一步:admin 登陸後,Project -> Compute -> Images
第二步:建立鏡像
若是勾選共有,該 image 能夠被其餘 Project 使用 若是勾選受保護的是,該 image 不容許被刪除。
第三步:查看建立的鏡像
第四步:查看cirros詳細信息,點擊cirros
cirros 這個 linux 鏡像很小,經過 Web UI 上傳很快,操做會很順暢。但若是咱們要上傳的鏡像比較大(好比好幾個 G ),那麼操做會長時間停留在上傳的 Web 界面,咱們也不知道目前到底處於什麼狀態。 對於這樣的操做,CLI 是更好的選擇。
[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。
命令很好記,就是服務的名字,好比 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 排查問題的方法主要是經過日誌,Service 都有本身單獨的日誌。Glance 主要有兩個日誌,glance_api.log 和 glance_registry.log,保存在/var/log/glance 目錄裏。
[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]