一 介绍
创建一个虚拟机至少需要指定的参数有3个:虚拟机名字,镜像,Flavor。执行“nova image-list”命令可以看到目前可用的虚拟机镜像。
命令执行结果如下:
[root@localhost ~(keystone_demo)]# nova image-list
WARNING: Command image-list is deprecated and will be removed after Nova 15.0.0 is released. Use python-glanceclient or openstackclient instead
+--------------------------------------+--------+--------+--------+
| ID                                   | Name   | Status | Server |
+--------------------------------------+--------+--------+--------+
| 740a2773-9cc8-4222-8790-899df4b6d748 | cirros | ACTIVE |        |
+--------------------------------------+--------+--------+--------+
创建一个名为test的虚拟机,使用flavor类型m1.tiny的命令如下:
[root@localhost ~(keystone_demo)]# nova boot --flavor m1.tiny --image cirros test
+--------------------------------------+-----------------------------------------------+
| Property                             | Value                                         |
+--------------------------------------+-----------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                        |
| OS-EXT-AZ:availability_zone          |                                               |
| OS-EXT-STS:power_state               | 0                                             |
| OS-EXT-STS:task_state                | scheduling                                    |
| OS-EXT-STS:vm_state                  | building                                      |
| OS-SRV-USG:launched_at               | -                                             |
| OS-SRV-USG:terminated_at             | -                                             |
| accessIPv4                           |                                               |
| accessIPv6                           |                                               |
| adminPass                            | NeeWrsEoLP3Z                                  |
| config_drive                         |                                               |
| created                              | 2018-03-27T13:24:06Z                          |
| description                          | -                                             |
| flavor                               | m1.tiny (1)                                   |
| hostId                               |                                               |
| id                                   | 8c940566-5996-412b-a75f-96ccc5bf810d          |
| image                                | cirros (740a2773-9cc8-4222-8790-899df4b6d748) |
| key_name                             | -                                             |
| locked                               | False                                         |
| metadata                             | {}                                            |
| name                                 | test                                          |
| os-extended-volumes:volumes_attached | []                                            |
| progress                             | 0                                             |
| security_groups                      | default                                       |
| status                               | BUILD                                         |
| tags                                 | []                                            |
| tenant_id                            | b38c09cb0b5a4d46820c66052bb0ee94              |
| updated                              | 2018-03-27T13:24:06Z                          |
| user_id                              | 7ed4ce59626941478efb08c37cad526e              |
+--------------------------------------+-----------------------------------------------+
创建之后可以执行“nova list”查看虚拟机是否正常运行,下面是执行结果:
[root@localhost ~(keystone_demo)]# nova list
+--------------------------------------+------+---------+------------+-------------+-------------------+
| ID                                   | Name | Status  | Task State | Power State | Networks          |
+--------------------------------------+------+---------+------------+-------------+-------------------+
| 57835459-1d60-40ae-b0c7-381bcbaba738 | test | SHUTOFF | -          | Shutdown    | private=10.0.0.3  |
| 8c940566-5996-412b-a75f-96ccc5bf810d | test | ACTIVE  | -          | Running     | private=10.0.0.10 |
+--------------------------------------+------+---------+------------+-------------+-------------------+
在KVM环境下,使用Libvirt库提供的virsh命令创建一个虚拟机需要一个XML配置文件。
在Nova中创建一个虚拟机同样也需要这个XML配置文件,不同的是这个XML配置文件由Nova根据用户设定的参数自动生成。
针对packstack安装的openstack,Nova生成的配置文件都存放在/var/lib/nova/instances目录,这些配置文件很好体现了Nova在创建虚拟机时需要哪些参数信息。
[root@localhost 8c940566-5996-412b-a75f-96ccc5bf810d(keystone_demo)]# ll
total 2268
-rw-------. 1 root root   18994 Mar 27 21:24 console.log
-rw-r--r--. 1 qemu qemu 2293760 Mar 27 21:25 disk
-rw-r--r--. 1 nova nova      79 Mar 27 21:24 disk.info
8c940566-5996-412b-a75f-96ccc5bf810d表示新建虚拟机的UUID,这个目录下存放了该虚拟机的内核镜像等文件。
二 创建虚拟机过程
创建虚拟机的过程如下图
三 创建虚拟机代码调用关系
1文件 nova.api.openstack.coumpute.servers
1函数 def create(self, req, body):
1调用 (instances, resv_id) = self.compute_api.create(context,
2文件 nova.compute.api
2函数 def create(self, context, instance_type,
2调用 return self._create_instance(
3文件 nova.compute.api
3函数 def _create_instance(self, context, instance_type,
3调用 self.compute_task_api.build_instances(context,
4文件 nova.conductor.manager
4函数 def build_instances(self, context, instances, image, filter_properties,
5调用 hosts = self.scheduler_client.select_destinations(context,
6调用 self.compute_rpcapi.build_and_run_instance(context,
5文件 nova.scheduler.manager
5函数 def select_destinations(self, context, request_spec, filter_properties):
5调用 dests = self.driver.select_destinations(context, request_spec,
5文件 nova.scheduler.filter_scheduler
5函数 def select_destinations(self, context, request_spec, filter_properties):
6文件 nova.compute.api.manager
6函数 def build_and_run_instance(self, context, instance, image, request_spec,
6调用 self._do_build_and_run_instance(*args, **kwargs)
7文件 nova.compute.api.manager
7函数 def _do_build_and_run_instance(self, context, instance, image,
7调用 _build_and_run_instance
四 创建虚拟机过程解析
1 创建虚拟机等TaskAPI任务,已经由nova-conductor承担,因此nova-api监听到创建虚拟机HTTP请求后,会通过RPC调用nova.conductor.manager.ComputeTaskManager中的build_instances()方法。
2 nova-conductor会在build_instances()中生成request_spec字典,其中包括了详细的虚拟机信息,nova-scheduler依据这些信息为虚拟机选中一个最佳的主机,然后nova-conductor再通过RPC调用nova-computer创建虚拟机。
3 nova-compute首先会使用Resource Tracker的Claim机制检测一下主机的可用资源是否能够满足新建虚拟机的需要,然后通过具体的Virt Driver创建虚拟机。

Nova创建虚拟机流程解读相关推荐

  1. nova 创建虚拟机流程

    1   Nova创建虚机流程 Openstack创建虚拟机的整个流程如图1所示.前端horizon发送创建虚机的请求之后,novaapi接收请求,并作处理,详见1.1节.注:Nova schedule ...

  2. PVE虚拟化平台之创建虚拟机流程

    PVE虚拟化平台之创建虚拟机流程 一.PVE介绍今天,2022 年 11 月 17 日,有236篇文章可用. 二.登录PVE平台 三.登录PVE系统检查环境 1.进入PVE底层系统的shell命令终端 ...

  3. Nova 启动虚拟机流程解析

    目录 文章目录 目录 前言 从请求说起 nova-api service 阶段 前言 Nova 启动虚拟机的东西太多,持续更新- 从请求说起 无论是通过 Dashboard 还是 CLI 启动一个虚拟 ...

  4. nova创建虚拟机源码分析系列之六 api入口create方法

    openstack 版本:Newton 注:博文图片采用了很多大牛博客图片,仅作为总结学习,非商用. 该图全面的说明了nova创建虚机的过程,从逻辑的角度清晰的描述了前端请求创建虚拟机之后发生的一系列 ...

  5. nova创建instance流程

    ################################################################### # Start: Jeffrey 的话 ############ ...

  6. OpenStack---T版-nova组件部署流程

    OpenStack---T版-nova组件部署流程 nova组件部署位置 计算节点Nova服务配置 nova组件部署位置 [控制节点ct] nova-api(nova主服务) nova-schedul ...

  7. 【JVM】Java对象创建的流程步骤

    · 本文摘要 · 罗列Java创建对象的各种方式: · 讲解Java对象创建的流程步骤: 一.Java创建对象的各种方式 · 1. 用关键字new,老少皆知的方法:StringBuffer sb = ...

  8. 使用QEMU创建虚拟机

    解决办法: 执行:yum upgrade device-mapper-libs yum -y install avahi /etc/init.d/messagebus restart /etc/ini ...

  9. VMWare 环境下devstack创建虚拟机报错及修改nova-api返回数据得条目

    1.在生产环境中, 由于某个tenant下创建了有1300+条得security-group通过查询nova得数据库可以看出确实有1300+条得存在,但是通过curl调用的时候发现返回得数目只有100 ...

最新文章

  1. oracle 只读同名词,Oracle创建只读用户,授予视图/同义词/会话权限
  2. 洛谷 P2324 [SCOI2005]骑士精神 解题报告
  3. sklearn 线性回归_使用sklearn库做线性回归拟合
  4. xshell最多支持4个_中集拉钢卷专用挂车来了!自重5吨,最多能装4个钢卷
  5. LeetCode 669. 修剪二叉搜索树
  6. arduino tft 方向_ESP32在Arduino环境下玩转 LVGL,ESP32移植LVGL详细教程
  7. 如何开始使用centos_如何开始使用CentOS
  8. NameError:name ‘xrange’ is not defined
  9. 2009年云计算将引发一场黑客攻击高潮
  10. ganglia不能获取gpu_免费试用亚马逊云服务器进行深度学习实验:免环境配置/GPU支持...
  11. 数据结构之八大排序算法(C语言实现)
  12. krohne流量计接线图_KROHNE科隆电磁流量计工作原理介绍
  13. SPSS学习(五)独立样本t检验
  14. 服务器安全,服务器密码遭篡改
  15. win10安装visio2010出错_win10系统安装Office2010提示错误1935的解决方案
  16. 【selenium】126官网邮箱登录
  17. 并购支付牌照中金支付90.01%股权该注意哪些风险
  18. [数据分析与可视化] Python绘制数据地图2-GeoPandas地图可视化
  19. python金融风控评分卡模型和数据分析
  20. 机器学习比赛、项目之模板

热门文章

  1. 判断一个数是否能被3或5整除
  2. css 2倍行距,如何在css中设置行间距
  3. Oracle 复制表空间 (imp/exp)
  4. 矩阵分解模型(MF)
  5. 六轴机器人轨迹规划之五次多项式插值
  6. 用OKR工作法让2023年的自己的薪酬翻倍
  7. WCF Rest用法
  8. IC卡水表大多都用在什么项目上?有什么功能特点吗?
  9. 【仪器仪表】万用表的精度和准确度怎么看?
  10. 中国农业大学2022年法学硕士研究生拟录取名单