Queued:初始化鏡像狀態,在鏡像文件剛剛被創建,在glance數據庫中已經保存了鏡像標示符,但還沒有上傳至glance中,此時的glance對鏡像數據沒有任何描述,其存儲空間0
Saving:鏡像的原始數據在上傳中的一種過度狀態,它產生在鏡像數據上傳至glance的過程中,一般來講,glance收到一個image請求后,才將鏡像上傳給glance
Active:鏡像成功上傳完畢以后的一種狀態,它表明glance中可用的鏡像
Killed:鏡像上傳失敗或者鏡像文件不可讀的情況下,glance將鏡像狀態設置成Killed
Deleted:鏡像文件馬上會被刪除,只是當前glance這種仍然保留該鏡像文件的相關信息和原始鏡像數據
Pending_delete:
1.Image identifiers
Image 使用 URI 作為唯一標識,URL 符合以下格式 <Glance Server Location>/image/<ID>
2.Image Statuses
-
queued 標識該鏡像ID已經被保留,但是鏡像還未上傳
-
saving 標識鏡像正在被上傳
-
active 標識鏡像在 Glance 中完全可用
-
killed 標識鏡像上傳過程中出錯,鏡像完全不可用
-
deleted Glance 已經保存了鏡像的信息,但是無法繼續使用。在此狀態下的鏡像稍后將會被自動清除
-
pending_delete 類似於 deleted,區別在於 Glance 還沒有移除鏡 像數據。在此狀態下的鏡像是可以被恢復的
3.Task Statuses
-
pending 在 Glance 中保留 task identifier。但此時還沒有進程開始執行
-
processing 任務已被底層執行者選中,並且后端 Glance 根據任務類型開始執行對應的邏輯操作
-
success 表示該任務已成功運行。在任務的“result”域中會顯示關於輸出結果的更多細節
-
failure 表示在任務的執行過程中發生了一個錯誤,並且它不能繼續執行下去。任務的 “message”域展示了是什么錯誤
4.磁盤和容器格式
Disk Format:虛擬機鏡像的磁盤格式是底層磁盤鏡像的格式
Container Format:container 格式表示虛擬機鏡像是否在一個包括虛擬機的 metadata 文件格式中;當 disk format 為 aki ari ami 時,disk format 和 container format 一致
5.Image Registries
使用 Glance,鏡像 metadata 可以注冊至 image registries
只要為 image metadata 提供了 rest like API,任何 web 程序可以作為 image registries 與 Glance 對接
6.組件及架構
Glance 主要由三個部分構成:glance-api、glance-registry 以及 image store
-
Glance-api 接收 REST API 的請求,類似 nova-api,都是接收 REST API 請求,然后通過其 他模塊(glance-registry 及 image store)來完成諸如鏡像的查找、獲取、上傳、 刪除等操作,默認監聽端口 9292
-
glance-registry 用於與 MySQL 數據庫交互,用於存儲或獲取鏡像的元數據 (metadata);glance-registry 監聽端口 9191。Glance 的數據庫中有兩張表,一張是 image 表,另一張是 image property 表。Image 表 保存了鏡像格式、大小等信息;image property 表則主要保存鏡像的定制化信息
-
image store 是一個存儲的接口層,通過這個接口,glance 可以獲取鏡像, image store 支持的存儲有 Amazon 的 S3、OpenStack 本身的 Swift,還有諸 如 ceph,sheepdog,GlusterFS 等分布式存儲。 Image store 是鏡像保存與獲取的接口,它僅僅是一個接口層,具體的實現需要外部的存儲支持,支持的接口有 Amazon S3、GlusterFS、Swift,sheepdog, ceph 等
7.鏡像緩存機制
Glance 中的鏡像文件不管用什么樣的方式存儲,都是存儲在 server 端,用戶 在創建實例的前要先從 server 端獲取相應鏡像,再到本地根據配置進行相關的處 理。有些鏡像文件非常的大,在從服務端傳到客戶端要花費大量的時間,使實例 的啟動變得非常慢,對於一些特定的應用來說會比較吃力,如果利用 Glance 的 緩存機制,預先通過命令將特定的鏡像進行緩存,緩存到需要的計算節點上會有 很好的效果。對鏡像進行緩存變相的增加了鏡像存儲的可靠性
本地緩存的另一個好處就是,你可以通過它實現鏡像的 base imag(或者叫金 手指,差異鏡像等)的功能。比如一些分布式自動化測試平台對於運行時間的要求是非常的高的就可以利用緩存功能
Glance 的緩存服務是需要在配置文件中進行配置開啟的。Glance 緩存還提供了緩存,刪除,根據配置的過期時間刪除等眾多的功能
openstack命令
[root@controller ~]# openstack image list
[root@controller ~]# openstack image create --container-format <container-format> #指定容器格式 --disk-format <disk-format> #指定磁盤格式 --min-disk <disk-gb> #指定磁盤大小 --min-ram <ram-mb> #指定內存大小 --file <file> #指定文件路徑 <image-name> #指定鏡像名稱 [root@controller ~]# openstack image create --container-format bare --disk-format qcow2 --file /root/cirros-0.3.4-x86_64-disk.img cirros
更新鏡像
[root@controller ~]# openstack image set --name=cirros mycirros
查看鏡像詳細信息
[root@controller ~]# openstack image show 鏡像ID
鏡像導出
[root@controller ~]# openstack image save --file /root/centos <image>
鏡像刪除
[root@controller ~]# openstack image delete 鏡像ID
glance命令
鏡像列表信息
[root@controller ~]# glance image-list
+----+------+
| ID | Name |
+----+------+
+----+------+
[root@controller ~]# glance image-create --name cirros --disk-format qcow2 --container-format bare < cirros-0.3.4-x86_64-disk.img
[root@controller ~]# glance image-update --name=cirros mycirros
查看鏡像詳細信息
[root@controller ~]# glance image-show 鏡像ID
鏡像導出
[root@controller ~]# glance image-download --file /root/centos --progress <image_id>
鏡像刪除
[root@controller ~]# glance image-delete 鏡像ID
glance api
從本地文件上傳 image
file 是本地文件的全路經,endpoint 是 glance 的 endpoit
from glanceclient import Client endpoint = get_service_endpoint('glance') glance = Client('1', endpoint, token) meta = { 'name': image_name, 'is_public': True, 'disk_format': disk_format, 'container_format': container_format, } image = glance.images.create(**meta) image.update(data=open(file, 'rb'))
從遠程 URL 上傳 image
file_path 就是相關 image 的 URL
from glanceclient import Client endpoint = get_service_endpoint('glance') glance = Client('1', endpoint, token) meta = { 'name': image_name, 'is_public': True, 'disk_format': disk_format, 'container_format': container_format, 'copy_from': file_path, } image = glance.images.create(**meta)