Openstack之Nova组件(二)——云主机clone

一、原理

克隆的原理就是拿原虚拟机的属性创建个一模一样的vm,克隆的本质是创建。

二、流程

console---->horizon---->dozer----->nova

  1. 浏览器发出clone(POST /api/dozer/executions/)请求到horizon
  2. horizon发出请求(http://st2api:9101/v1/executions)到dozer
  3. dozer调用nova、cinder封装具体的创建参数,然后调用nova进行新虚拟机的创建。
    3.1 通过novaclient获取原vm的具体属性
    3.2 如果原vm是镜像启动的调用nova的接口进行快照的创建并等待创建结束(实质nova image-create)
    3.3 发送’compute.instance.clone.start’的notifications
    3.4 串行克隆原虚拟机的所有volume并阻塞等待新卷创建完成
    3.5 发送创建vm的请求到nova进行新vm的创建
    3.6 发送’compute.instance.clone.end’的notifications

三、问题和分析思路

主要有clone失败和clone慢两大主要问题

  1. 克隆失败
    可以根据clone流程从入口开始分析看到哪一步失败(因为我们克隆几乎没有详细的堆栈返回个浏览器)dozer相关的日志打印及到达流程如下:
dozer相关日志输出代表意义以及执行阶段
“start clone instance…”代表请求已经进入dozer开始处理clone
“boot from volume %s”打印是否是bfv
“start to take vm snapshot”代表是bfi且进入虚拟机快照创建并等待阶段
“finish to take vm snapshot: %s”代表是bfi且成功创建快照
“The vm failed to take snapshots, reason is %s.”代表是bfi且创建快照失败
“waiting for volume: %s available”代表已经进入clone volume的阶段并在等待克隆完成
“Failed to clone vm, reason is %s.”代表从克隆volume到新虚拟机的创建过程有问题

dozer基本只涉及快照的创建,卷的clone,如果没有问题的话,剩下的只需要分析nova的处理流程,和创建vm的分析流程一致。

  1. 克隆慢
    可以先根据dozer的打印去确定启动方式,bfi通常多了一个快照的创建和等待过程会耗时,然后分析下创卷的耗时,
    "waiting for volume: %s available"这个打印5s一次,乘以打印次数能大概得出创卷的耗时,然后查看nova的日志
    分析创建的耗时,所有耗时累加再加上各个服务交互的耗时就是克隆整体的耗时时间。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值