Resize 的做用是調整instance的vCPU、內存和磁盤資源。
Instance 須要多少資源是定義在flavor中的,Resize操做是經過爲Instance選擇新的flavor來調整資源的分配。
有了前面對 Migrate的分析,再來看Resize的實現就很是簡單了。由於 Instance 須要分配的資源發生了變化,在Resize以前須要藉助nova-scheduler 從新爲Instance 選擇一個合適的計算節點,若是選擇的節點與當前節點不是同一個,那麼就須要作Migrate。
因此本質上講:Resize 是在Migrate 的同時應用新的flavor。Migrate 能夠看作是一個Resize的特例: flavor 沒有發生變化的Resize,這也是爲何咱們在上一節日誌彙總看到 Migrate其實是在執行Resize操做。
Resize 分兩種狀況:
A、nova-scheduler 選擇的目標節點與源節點不一樣,操做過程和上一節中的Migrate徹底同樣,只是在目標節點啓動Instance時按照新的flavor分配資源。
B、目標節點與源節點是同一節點,下面將是操做流程
一、nova-api發送Resize請求到Messaging
二、nova-scheduler 收到Resize請求後選擇合適的節點,最終選擇了源節點
三、nova-scheduler 發送在源節點Resize的信息給Messaging
四、nova-compute在目標節點上按照新的flavor爲Instance準備 cpu、mem、disk
五、關閉Instance
六、建立新的Instance鏡像文件
七、將Instance的目錄備份一份,命名爲_resize,以便revert
八、建立新的Instance xml 定義文件
九、準備虛擬網絡
十、啓動Instance
十一、詢問用戶 Resize仍是回退
十二、繼續Resize 則刪掉原Instance目錄_resize。回退的話,關閉新的Instance,用_resize 恢復Instance目錄,最後啓動Instance