环境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