OpenStack卷启动的虚拟机rebuild无效

1. 描述

卷启动的虚拟机rebuild无效,rebuild卷启动的虚拟机相当于仅仅对虚拟机进行了一次重启。

  • 版本信息如下
组件版本
openstacktrain
nova20.6.0-1

看了好几遍rebuild的代码,都没有找到对卷启动的云硬盘重建或者数据清空的操作,最后找了下社区,找到了一些资料,原来社区没实现对卷启动虚拟机的rebuild,怪不得没找到相关的代码逻辑。

2. 相关资料

社区要实现一个专门用于卷启动虚拟机重装的api, 还没实现,但是已经有不是非常严谨的修复方案可以先用。

bp
specs

3. 修复方案

将原来的卷删除掉,使用重装的虚拟机创建一个新的卷挂给虚拟机,实现代码 Replace root volume during rebuild

4. 分析过程

总体代码流程就是一路rpc调用+检查,到计算节点上执行 nova.compute.manager.rebuild_instance -> _do_rebuild_instance -> _rebuild_default_impl

  • 卸载块存储、更新镜像元数据、销毁虚拟机

-> virt/libvirt/driver.spawn – 这一步又个创建镜像,卷启动的虚拟机不会创建镜像,所以rebuild实际上只是 关机->卸载磁盘->开机->挂盘

  • 创建新的虚拟机
  • 挂载块存储
  • 启动
  • 重建成功

具体代码流程可以参考这里,rebuild时序图

修复之后功能OK

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值