环境

版本: rdo OpenStack Kilo

qemu: 2.3.0

libvirt: 1.2.17-13


背景

想复用nova resize那套逻辑,resize用的还是cold_migrate那套逻辑,走conductor api.


实现思路

1、镜像需要qemu-guest-agent支持,在镜像中安装qemu-guest-agent包,并设置开机自启动,然后镜像设置元数据,这两种方式设置都可以:

glance p_w_picpath-update  --property hw_qemu_guest_agent=yes
nova p_w_picpath-meta {p_w_picpath_id} set hw_qemu_guest_agent=yes


2、 沿用原本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