天天看點

OpenStack Glance特性之Task介紹

在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

繼續閱讀