Glance架構是一個典型的CS架構,提供的也是標準的Rest接口,各個layer分層也是很清楚的。
html
Glance是OpenStack鏡像服務組件,glance服務默認監聽在9292端口,其接收REST API請求,而後經過其餘模塊(glance-registry及image store)來完成諸如鏡像的獲取、上傳、刪除等操做,Glance提供restful API能夠查詢虛擬機鏡像的metadata,而且能夠得到鏡像,經過Glance,虛擬機鏡像能夠被存儲到多種存儲上,好比簡單的文件存儲或者對象存儲(好比OpenStack中swift項目)是在建立虛擬機的時候,須要先把鏡像上傳到glance,對鏡像的列出鏡像、刪除鏡像和上傳鏡像都是經過glance進行管理。
mysql
A directory on a local file system(這是默認配置) RADOS block devices VMware datastore Amazon S3 HTTP OpenStack Block Storage (Cinder) OpenStack Object Storage (Swift)
(1)磁盤格式
虛擬機鏡像的磁盤格式是底層磁盤鏡像的格式。如下是OpenStack支持的磁盤格式。
sql
格式說明:數據庫
(2)容器格式
正如OpenStack glance也支持容器格式的概念,它描述了文件格式,幷包含關於實際虛擬機的額外元數據。json
如下是OpenStack Glance支持的Container格式。
swift
Client端發送請求,api端router.py中將請求下發,選擇相應的方法處理請求,通過中間auth, notifier, policy, quota到location,會調用到glance_store進行底端存儲,並返回存儲的位置信息,須要寫到數據庫中 在跟數據庫的交互中須要用到glance_registry,將鏡像的相關信息寫到數據庫中,值得注意的是會將上面鏡像存儲的位置信息location_uri寫入到數據庫中,在進行刪除等操做會直接從數據庫中讀取這個uri,進行刪除。api
上傳鏡像時Glance會顯示鏡像的各類狀態。當咱們第一步上傳鏡像時,第一步就是入隊列,通過短期的驗證,鏡像進入queued狀態,保存鏡像並開始上傳。以後鏡像會進入saving的狀態,表示尚未徹底上傳完畢。鏡像徹底上傳後,狀態會變成Active。若是上傳失敗,將會變成killed或deleted狀態。另外咱們還可使用命令停用或者從新激活徹底上傳成功的鏡像。安全
下圖爲glance鏡像的狀態流轉圖。
restful
狀態說明:網絡
如前所述,磁盤鏡像做爲模板存儲。鏡像服務存儲和管理鏡像。實例是在計算節點上運行的單個虛擬機,計算節點管理這些實例。用戶能夠從用同一個鏡像啓動任意數量的實例。每一個啓動的實例都是基於鏡像的一個副本,因此實例上的任何修改都不會影響到鏡像。咱們能夠對正在運行實例作快照,並能夠用快照於啓動另外一個新的實例。
當咱們啓動一個實例時,咱們須要指定Flavor。Flavor定義了實例能夠有多少個虛擬CPU,多大的RAM以及臨時磁盤的大小。 OpenStack提供了預約義的flavor,咱們也能夠新建立和編輯Flavor。
下圖顯示了啓動實例的系統狀態。glance store包含必定數量的鏡像,計算節點包含可用的vcpu,內存和本地磁盤資源,cinder-volume包含必定數量的volume。
啓動實例以前,須要選擇一個鏡像,flavor和任何可選屬性。選定的 flavor提供一個系統盤,標記爲vda,另一個臨時盤被標記爲vdb,cinder-volume提供的volume被映射到第三個虛擬磁盤並將其稱爲vdc。
vdc使用iSCSI鏈接到cinder-volume。隨後計算節點提供vCPU和內存資源以後,該實例將從vda.啓動。該實例運行並更改磁盤上的數據。若是volume store位於單獨的網絡上,須要在計算節點nova.conf裏指定的my_block_storage_ip,將會經過存儲網絡直接通訊。
實例被刪除後, 除volume以外的其它資源都會被回收。臨時盤將會被清空,內存和vCPU資源被會被釋放。在這個過程當中鏡像不會發生任何改變。
Glance-api.conf :Glance api 服務配置文件.
Glance-registry.conf :Glanceregistry服務配置文件,用戶存儲鏡像有關的元數據。
glance-scrubber.conf :用於清理已刪除的鏡像的服務。
policy.json :鏡像服務的訪問控制。在這裏,咱們能夠定義角色和策略,是OpenStack Glance中的安全特性。
參考文章:
http://www.sohu.com/a/156310708_610730
http://www.bubuko.com/infodetail-2287562.html
https://www.2cto.com/net/201707/657859.html