2012年8月21日 星期二

在Openstack 如何建立Bootable volume (EBS like)

Source: network

艦長日誌:

延續上一篇"Openstack 跟AWS EC2 的API相容性測試",裡面提到EC2 API RunInstance 無法像AWS一樣直接啟動EBS-backed Instance ,為了解決這個問題我繼續去openstack 官網找尋答案,找到了下面三篇文章:

第一篇是 boot-from-volume,不過看裡面的內容,是提供這個功能了,但似乎透過API的確還是有問題,而且只有測過euca2ools ....=_= 是怎樣

Unresolved issues


  • volume snapshot related stuff.
  • EC2 API: At the moment EC2 API allows snapshot id to specify boot volume. However right now volume id is used. As a result the patches for euca2ools is necessary which includes bug fix.
 
 Source:boot from volume (Blueprints in grey have been implemented.)


第二篇 auto-create-boot-volumes 是第一篇的延伸,目的是希望Support Creating EBS boot volumes when boot-time ,也就是希望可以實作出跟Amazon EBS-backed Instance 樣的自動化流程,下圖是整個create bootable 的volume 的流程。但是很不幸的,這只是規劃,甚至都還沒排入release plan [issue]。



所以自動的方法和Call API的方法就先不用想了,最後只能試試看openstack document裡面寫的如何製作Bootable volume,以及透過command line 的方式手動產生,另外也有script 版本[1]。

[Update:2012/08/22]
那最後的實驗結果呢?失敗了!!有沒有那位高手有試成功呢?我也report 這個issue [#201690]
參考上圖的 7 和 9 的步驟,我再想可能少放了什麼到root volume?
另外先撇除無法用這個volume開機,的確關機後這個volume仍然存在,但是每次用這個volume create instance 都必須使用 "nova boot --image 的command"去執行,所以還是非常不方便。

 [Update:2012/08/23]
Bootable volume 這篇裡面的教法是mount 一個volume,然後用copy的方法是不可行的,後來解決方法如下:
1. 透過Dashboard or command line create 一個nova-volume
2. 找到那個vloume 在host實際存放的位置
3. 把要clone 的對象(bootable image)dd 到那個volume
4. 然後Create Instance 的時候選擇使用這個volume 開機  (EC2 API沒有這個功能)

Reference:
[1] how to boot from a volume script

沒有留言 :