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