OpenStack—Glance鏡像服務


Glance鏡像服務

      它在OpenStack中的項目名稱為Glance。在早期的OpenStack版本中,Glance只有管理鏡像的功能,並不具備鏡像存儲功能。現在,Glance已發展成為集鏡像上傳、檢索、管理和存儲等多種功能的OpenStack核心服務。

鏡像

       鏡像的英文為lmage,又譯為映象,通常是指一系列文件或一個磁盤驅動器的精確副本。鏡像文件其實和ZIP壓縮包類似,它將特定的一系列文件按照一定的格式制作成單一的文件,方便用戶下載和使用。

比如:Ghost是使用鏡像文件的經典軟件,其鏡像文件可以包含更多信息,如系統文件、引導文件、分區表信息等,這樣鏡像文件就可以包含一個分區甚至是一塊硬盤所有信息。Ghost可基於鏡像文件快速安裝操作系統和應用程序。

例如:VMware的虛擬機模板

鏡像服務

       鏡像服務就是用來管理鏡像的,讓用戶能夠發現、獲取和保存鏡像。在OpenStack中提供鏡像服務的是Glance,其主要功能如下:

·查詢和獲取鏡像的元數據和鏡像本身

·注冊和上傳虛擬機鏡像,包括鏡像的創建、上傳、下載和管理

·維護鏡像信息,包括元數據和鏡像本身

·支持多種方式存儲鏡像,包括普通的文件系統、Swift、Amazon S3等

·對虛擬機實例執行創建快照命令來創建新的鏡像,或者備份虛擬機的狀態

lmages API的版本

Glance提供的RESTful API目前有兩個版本:API v1和API v2

·v1只提供基本的鏡像和成員操作功能,包括鏡像創建、刪除、下載、列表、詳細信息查詢、更新,以及鏡像租戶成員的創建、刪除和列表。

·v2除了支持v1的所有功能外,主要增加了鏡像位置的添加、刪除、修改,元數據和名稱空間操作,以及鏡像標記操作

兩個版本對鏡像存儲支持相同,v1從N版開始已經過時,遷移路徑使用v2進行替代

鏡像格式

虛擬機鏡像文件磁盤格式

·raw:無結構的磁盤格式

·vhd:該格式通用於VMware、Xen、VirtualBox以及其他虛擬機管理程序

·vhdx:vhd格式的增強版本,支持更大的磁盤尺寸

·vmdx:一種比較通用的虛擬機磁盤格式

·vdi:由VirtualBox虛擬機監控程序和QEMU仿真器支持的磁盤格式

·iso:用於光盤(CD-ROM)數據內容的檔案格式

·ploop:由Virtuozzo支持,用於運行OS容器的磁盤格式

·qcow2:由QEMU仿真支持,可動態擴展,支持寫時復制(Copy on Write)的磁盤格式

·aki:在Glance中存儲的Amazon內核格式

·ari:在Glance中存儲的Akazon虛擬內存盤(Ramdisk)格式

·ami:在Glance中存儲的Amazon機器格式

鏡像文件容器格式

·bare:沒有容器或元數據“信封”的鏡像

·ovf:開放虛擬化格式

·ova:在Glance中存儲的開放虛擬化設備格式

·aki:在Glance中存儲的Amazon內核格式

·Docker:在Glance中存儲的容器文件系統的Dockerd的tar檔案

如果不能確定選擇哪種容器格式,那么簡單地容器格式指定為bare是安全

鏡像狀態1

·queued:這是一種初始化狀態,鏡像文件剛被創建,在Glance數據庫只有其元數據,鏡像數據還沒有上傳至數據庫中

·saving:是鏡像的原始數據在上傳到數據庫中的一種過渡狀態,表示正在上傳鏡像

·uploading:指示已進行導入數據提交調用,此狀態下不允許調用PUT/file(saving狀態會執行PUT/file,這是另外一種上傳的方法)

·importing:指示已經完成導入調用,但是鏡像還未准備好使用

鏡像狀態2

·active:表示當鏡像數據成功上傳完畢,成為Glance中可用的鏡像

·deactivated:表示任何非管理員用戶都無權訪問鏡像數據,禁止下載鏡像,也禁止鏡像導出和鏡像克隆之類的操作

·killed:表示鏡像上傳過程中發生錯誤,鏡像不可讀

·deleted:鏡像將在不久后被自動刪除,該鏡像不可再用,但是目前Glance仍然保留該鏡像的相關信息和原始數據

·pending_delete:與deleted相似,Glance還沒有清除鏡像數據,但處於該狀態的鏡像不可恢復

訪問權限

·Public(公共的):可以被所有的項目使用

·Private(私有的):只有被鏡像所有者所在的項目使用

·Shared(共享的):一個非公共的鏡像可以共享給其他項目,這是通過項目成員(member-*)操作來實現的

·Protected(受保護的):這種鏡像不能被刪除

架構圖

·客戶端是Glance服務應用程序使用者,是OpenStack命令行工具、Horizon或Nova服務

·glance-api是系統后台運行的服務進程,是進入Glance的入口。它對外提供REST API,負責接收用戶的RESTful請求,響應鏡像查詢、獲取和存儲的調用。

·glance-registry是系統后台運行的glance注冊服務進程,負責處理與鏡像元數據相關的RESTful請求,元數據包括鏡像大小、類型等信息。Glance-api接收的請求如果是與鏡像的元數據相關的操作,glance-api會把請求轉發給glance-registry。glance-registry會解析請求內容,並與數據庫交互,存儲、處理、檢索鏡像的元數據。glance-api對外提供API,而glance-registry的API只由glance-api使用。

·Glance的DB模塊存儲的是鏡像的元數據,可以選用MYSQL、MariaDB、SQLite等數據庫。鏡像的元數據通過glance-registry存放在數據庫中。注意,鏡像本身(chunk數據)是通過glance存儲驅動存放到各種存儲后端中的。

·存儲后端(Store Backend)Glance自身並不存儲鏡像,它將鏡像存放在后端存儲系統中。鏡像本身的數據通過glance_store存放在各種后端,並可從中獲取。支持本地存儲、對象存儲、RBD塊設備、Sheepdog分布式存儲、Cinder塊存儲、VMware數據存儲。

·具體使用哪種backend,是在/etc/glance/glance-api.conf中配置

glance的工作流程

首先是對客戶端的安全認證流程:openstack的操作都需要經過keystone進行身份認證,並授權,glance也不例外,授權成功再去請求glance服務,glance服務接收到外部請求后,會去keystone進行認證,此請求是否已授權,認證通過后,才會將請求傳到后端處理。

glance domain controller 是API和后端功能模塊的中間件,相當於調度器,作用是將外部服務分發到下面的各個功能層去處理。
在調度時,遵循調度算法,首先有一個預選,排除不符合要求的節點,再進行優選,通過打分機制,對都能夠處理此功能的節點進行打分,考慮它們當前的負荷,處理能力和速度,選出最優的一個。
對於一些有污點的節點,調度器是直接跳過他們的,如果其余可用節點負擔都太大,無法處理外部請求,會有一個容忍機制,由運維人員控制,讓調度器接受污點,對污點再進行優選

調度器的子功能模塊:

auth授權:控制鏡像的訪問權限;
notifier消息通知:將鏡像變化信息和錯誤添加到 消息隊列
policy規則定義:定義鏡像操作的訪問權限,在policy.json中定義
quota限額:限制上傳鏡像的大小
location定位:通過glance store 與后台存儲進行交互,指明鏡像存儲位置,還可以檢查位置的URL是否正確
DB數據庫:將鏡像轉換為相應的格式以存儲在數據庫中,並將從數據庫讀取的信息轉換為可以操作的鏡像對象。 

后端有兩種服務類型:一種是處理關於元數據的請求,另一種是關於鏡像數據的請求。由調度器將請求分配到對應的服務模塊。
當請求元數據時,glanceDB會與調度器進行交互提供服務,中間還可以通過 registry layer 注冊層進行一個安全交互。glanceDB存儲着元數據信息,並且對glance內部所有的組件都是共享的。
當請求的是關於鏡像本身服務時,glance store可以提供一個統一的接口訪問后端的存儲,並且有一個驅動模塊可以調用整個庫與外部服務進行交互。后端的存儲有多種存儲系統,對象存儲、文件存儲等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM