環境git
版本: rdo OpenStack Kilo
github
qemu: 2.3.0api
libvirt: 1.2.17-13bash
背景ide
想複用nova resize那套邏輯,resize用的仍是cold_migrate那套邏輯,走conductor api.spa
實現思路3d
一、鏡像須要qemu-guest-agent支持,在鏡像中安裝qemu-guest-agent包,並設置開機自啓動,而後鏡像設置元數據,這兩種方式設置均可以:orm
glance p_w_picpath-update <p_w_picpath-id> --property hw_qemu_guest_agent=yes nova p_w_picpath-meta {p_w_picpath_id} set hw_qemu_guest_agent=yes
二、 沿用本來resize的邏輯,因此live-resize也是以flavor來的,並且仍是設置元數據(hw:max_vcpus、hw:max_memory、hw:max_memory_slots)接口
hw:max_memory_slots: 是內存插槽數內存
舉例以下:
[root@controller01 ~(keystone_admin)]$ nova flavor-show 29797db8-0f32-4c2f-b5ee-4b4657be5277
+----------------------------+--------------------------------------+
| Property | Value |
+----------------------------+--------------------------------------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| disk | 14 |
| extra_specs | {"hw:max_vcpus": "4"} |
| id | 29797db8-0f32-4c2f-b5ee-4b4657be5277 |
| name | m1.small |
| os-flavor-access:is_public | True |
| ram | 1548 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 1 |
+----------------------------+--------------------------------------+
[root@controller01 ~(keystone_admin)]$ nova flavor-show 7efa6a5e-9271-4820-a098-67f50bcb982a
+----------------------------+--------------------------------------+
| Property | Value |
+----------------------------+--------------------------------------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| disk | 14 |
| extra_specs | {"hw:max_vcpus": "4"} |
| id | 7efa6a5e-9271-4820-a098-67f50bcb982a |
| name | m1.small.big |
| os-flavor-access:is_public | True |
| ram | 1548 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 2 |
+----------------------------+--------------------------------------+
具體實現
模仿resize的接口,實現一遍live_resize邏輯。
patch地址(disk、內存還未作):https://github.com/yaoice/nova/commit/175c5f003ddecdb87a45578bc06f3a1f9edc9727