在Icehouse版本的時候,Glance API V2中加入了一個新的接口Task,它通過使用任務流進行鏡像的導入、導出、克隆功能。Kilo版本之前是通過eventlet的形式實作,Kilo版本的時候進行了重構,引入了taskflow(OpenStack下的一個關于任務流的項目),使之更簡潔實用。
1. Task簡介
Task是一個異步操作,使用者發送一個Task指令後,背景會自動處理,并把結果寫入資料庫,結果包括result和message。若是執行失敗,message中會顯示失敗原因。而以前的create接口是同步操作,當上傳的鏡像過大時,等待時間會很長,不便于操作,嚴重的甚至會導緻glance程序崩潰。
Task主要包含三種操作:import、export、clone。import用來鏡像導入,export用來導出,clone用來跨region同步鏡像資料,目前社群實作了import。
Import操作非常簡單,使用者按照要求,提供input資訊就行—其中包括import_from、import_from_format和image_properties三個參數。Task在接收到使用者請求後,首先把資訊寫入資料庫,并傳回給使用者。之後使用者就無需任何操作,Task會在背景啟一個taskflow線程,自動執行import操作,把結果寫入資料庫, 如果設定了work_dir和并conversion_format,task會進行鏡像虛拟大小的擷取以及格式轉換。 其中work_dir為鏡像虛拟大小的擷取以及格式轉換使用的本地目錄,conversion_format為鏡像轉換後的格式。
2. Task狀态
Task有四種狀态:
pending :Task已經建立,但Glance還未開始運作;
processing : Task正在運作;
success : Task成功運作;
failure :Task運作出錯。
3. Task測試
(1) glance-api.conf配置:
[task]
work_dir = /home/work/
[taskflow_executor]
conversion_format = raw
(2) 指令:
glance task-create --type import --input '{"import_from":"http://10.43.176.8/images/cirros-0.3.2-x86_64-disk.img","import_from_format": "","image_properties":{"disk_format":"raw","container_format":"bare","name":"test_img"}}'
這樣,就添加了一個新的task,當此task在背景執行完成後,glance中會新增一個名為test_img的鏡像,其disk_format和container_format分别是raw和bare,内容是從鏡像伺服器上下載下傳下來的cirros鏡像,存儲在glance指定的預設後端中。
(3) 結果:
能夠正常上傳鏡像,并且可以進行格式轉換,鏡像虛拟大小的擷取。
(需要手動配置work_dir和conversion_format,如果不配置,上傳鏡像不會進行格式轉換及鏡像虛拟大小的擷取)
關于disk_format,如果配置work_dir和conversion_format,會在查詢鏡像的虛拟大小時同時擷取這個參數;如果沒有配置work_dir和conversion_format,必須寫到–input的入參裡。
# glance image-show d7eb4c53-bbbc-4cf0-a546-e53e5104689e
+------------------+-----------------------------------------------------------------------------+
| Property | Value |
+------------------+-----------------------------------------------------------------------------+
| checksum | cf2392db1f59d59ed69a8f8491b670e |
| container_format | bare |
| created_at | 2016-06-14T16:15:53Z |
| direct_url | file:///opt/stack/data/glance/images/d7eb4c53-bbbc-4cf0-a546-e53e5104689e|
| disk_format | raw |
| id | d7eb4c53-bbbc-4cf0-a546-e53e5104689e |
| locations | [{"url": "file:///opt/stack/data/glance/images/d7eb4c53-bbbc- |
| | 4cf0-a546-e53e5104689e", "metadata": {}}] |
| min_disk | 0 |
| min_ram | 0 |
| name | test_img |
| owner | 3a54d03b484449e7a09f13caa770f7c0 |
| protected | False |
| size | 41126400 |
| status | active |
| tags | [] |
| updated_at | 2016-06-14T16:16:01Z |
| virtual_size | 41126400 |
| visibility | private |
+------------------+--------------------------------------------------------------------------------+
4. 注意事項
關于支援的import_from格式
目前Mitaka版本中會對import_from進行驗證,目前支援"http://"、 “https:// "
不支援"file:///”、“filesystem:///”(安全問題:see LP bug #942118 #1400966)
參考:
https://specs.openstack.org/openstack/glance-specs/specs/mitaka/approved/image-import/image-import-refactor.html
http://blog.csdn.net/wxy2933/article/details/48312705