Glance


Glance是OpenStack鏡像服務,用來注冊、登陸和檢索虛擬機鏡像。Glance服務提供了一個REST API,使你能夠查詢虛擬機鏡像元數據和檢索的實際鏡像。通過鏡像服務提供的虛擬機鏡像可以存儲在不同的位置,從簡單的文件系統對象存儲到類似OpenStack對象存儲系統

  • 鏡像的狀態
    • 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)

 

 


免責聲明!

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



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