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、目标节点与源节点是同一节点,下面将是操作流程
 
    1、nova-api发送Resize请求到Messaging
    2、nova-scheduler 收到Resize请求后选择合适的节点,最终选择了源节点
    3、nova-scheduler 发送在源节点Resize的信息给Messaging
    4、nova-compute在目标节点上按照新的flavor为Instance准备 cpu、mem、disk
    5、关闭Instance
    6、创建新的Instance镜像文件
    7、将Instance的目录备份一份,命名为_resize,以便revert
    8、创建新的Instance xml 定义文件
    9、准备虚拟网络
    10、启动Instance 
    11、询问用户 Resize还是回退
    12、继续Resize 则删掉原Instance目录_resize。回退的话,关闭新的Instance,用_resize 恢复Instance目录,最后启动Instance
 
 
05-20 05:45