nova start 虚机的代码流程分析】的更多相关文章

nova start 虚机的代码流程分析,以ocata版本为分析基础1.nova api服务接受用户下发的 nova start启动虚机请求其对应的http restfull api接口为post /servers/{server_id}/action发送的action为os-start nova/api/openstack/compute/servers.py class ServersController(wsgi.Controller): def _start_server(self, r…
前言        Openstack作为一个虚拟机管理平台,核心功能自然是虚拟机的生命周期的管理,而负责虚机管理的模块就是Nova. 本文就是openstack中Nova模块的分析,所以本文重点是以下三点:   先了解Openstack的整体架构,搞清楚为什么要用这样的架构: 然后再了解架构中的各个组件,组件提供的主要功能与各个组件之间的交互: 了解虚机的启动过程,能在遇到问题时发现问题出在哪个模块中的哪个组件.   Nova组件介绍 接下来进行详细介绍,如有错误,欢迎拍砖! 下图为创建虚拟机…
一.vectors.S 1.1 代码地址 vectors.S (arch\arm\lib) 1.2 流程跳转 跳转符号 B 为 start.S 中的 reset 执行代码,暂且先不看,先看看 vector.S 中的执行. 1.3 代码分析 ldr{条件} 目的寄存器 <存储器地址> _start: #ifdef CONFIG_SYS_DV_NOR_BOOT_CFG .word CONFIG_SYS_DV_NOR_BOOT_CFG #endif /* LDR{条件} 目的寄存器 <存储器地…
一.重定位 1.以前版本的重定位 2.新版本 我们的程序不只涉及一个变量和函数,我们若想访问程序里面的地址,则必须使用SDRAM处的新地址,即我们的程序里面的变量和函数必须修改地址.我们要修改地址,则必须知道程序的地址,就需要在链接的时候加上PIE选项: 加上PIE选项后,链接时候的地址就会生成,然后存储在段里面,如下段(u-boot.lds): 然后我们根据这些地址的信息来修改代码,程序就可以复制到SDRAM的任何地方去. 二.代码流程 start.S中执行到了 bl _main,跳转到_ma…
1文件 nova.api.openstack.coumpute.servers1函数 def create(self, req, body):1调用 (instances, resv_id) = self.compute_api.create(context, 2文件 nova.compute.api2函数 def create(self, context, instance_type,2调用 return self._create_instance( 3文件 nova.compute.api3…
一.代码执行总体流程图 1.1 代码路径 U-boot.lds (arch\arm\cpu) vectors.S (arch\arm\lib) start.S (arch\arm\cpu\arm920t) lowlevel_init.S (board\samsung\jz2440) crt0.S (arch\arm\lib) relocate.S (arch\arm\lib) Board_init.c (common\init) Board_f.c (common) Jz2440.h (incl…
 一  checkConfig  Before     1.1  private static final TestConfig testConfig = TestConfig.getConfig();          这里加载一个配置文件(test路径/src/test/java/org/hyperledger/fabric/sdk/testutils.properties,文件不存在就加载代码中写死的默认配置),     配置文件需要设置peer,orderer,ca,eventhub的地…
调用 board_init_r,传入全局 GD 和 SDRAM 中的目的地址 gd->rellocaddr void board_init_r(gd_t *new_gd, ulong dest_addr) { /* * Set up the new global data pointer. So far only x86 does this * here. * TODO(sjg@chromium.org): Consider doing this for all archs, or * drop…
执行完 board_init_f 后,重新跳转回 _main 中执行. 9.1 relloc_code 前 9.1.1 gd 设置 在调用board_init_f()完成板卡与全局结构体变量 gd 的初始化后将其拷贝到在代码段下重新分配的全局结构体中.接下来进行sp的重新设置,将r9指向重新分配的全局变量gd,然后进行代码的重定位. /* 将 sp 指针指向全局gd的gd->start_addr_sp,即栈底 */ ldr r0, [r9, #GD_START_ADDR_SP] /* sp =…
接着上一节,板子开始做前期初始化工作. 8.1 board_init_f Board_f.c (common) /* 板子初次初始化.boot_flags = 0 */ void board_init_f(ulong boot_flags) { gd->flags = boot_flags; gd->have_console = ; if (initcall_run_list(init_sequence_f)) hang(); #if !defined(CONFIG_ARM) &&am…
7.1 start.S 修改 在上一节中的流程中,发现初始化的过程并没由设置看门狗,也未进行中断屏蔽 如果看门狗不禁用,会导致系统反复重启,因此需要在初始化的时候禁用看门狗:中断屏蔽保证启动过程中不出现异常现象 时钟不需要初始化,直接由外部晶振提供初始化,在第二阶段 C 部分再进行初始化. 代码主要在 start.S 中进行修改.修改后的代码如下: /* 头文件包含 */ #include <asm-offsets.h> #include <common.h> #include &…
6.1 _start 入口函数 6.1.1 vectors.S (arch\arm\lib) 从上一节可以知道,uboot 的入口函数为 _start .此 函数定义在 vectors.S (arch\arm\lib) 中. 在此文件中,定义了异常向量表,及其操作函数._start 开始后,直接跳入  reset 复位中执行启动. /* 头文件包含,包含架构和配置相关的头文件,自动生成的 */ #include <config.h> /* * A macro to allow insertio…
1. 总体流程 翻译自原文(英文):https://ilearnstack.com/2013/04/26/request-flow-for-provisioning-instance-in-openstack/ 创建虚机的请求流如下: Dashboard 或者 CLI 获取用户的登录信息,调用 Keystone 的 REST API 去做用户身份验证. Keystone 对用户登录信息进行校验,然后产生验证token并发回.它会被用于后续 REST 调用请求. Dashboard 或者 CLI…
本文梳理一下 Nova 主要操作的流程. 0. Nova REST-CLI-Horizon 操作对照表 Nova 基本的 CRUD 操作和 extensions: # 类别 Nova V2 REST API Action Nova CLI Horizon 解释   虚机操作 POST boot Launch Instance 启动一个新的虚机 http://www.cnblogs.com/sammyliu/p/4558638.html     DELETE delete Terminate In…
本文首发于安全客 链接:https://www.anquanke.com/post/id/219094 0x1 前言 在Android平台上,程序员编写的Java代码最终将被编译成字节码在Android虚拟机上运行.自从Android进入大众的视野后,apktool,jadx等反编译工具也层出不穷,功能也越来越强大,由Java编译成的字节码在这些反编译工具面前变得不堪一击,这相当于一个人裸奔在茫茫人海,身体的各个部位被众人一览无余.一种事物的出现,也会有与之对立的事物出现.有反编译工具的出现,当…
本文转载自:http://blog.csdn.net/dearsq/article/details/55049182 Platform: RK3399 OS: Android 6.0 Version: v2016.08 代码流程 代码详解 mipi dsi 接口信息初始化 fb相关信息读取 timing 参数初始化 mipi dsi controller 初始化 lcdc控制器注册 本文分为两部分. <[RK3399] 双屏异显代码实现流程分析(一)>为分析 RK video 部分标准的代码(…
本质上,Ext3 mount的过程实际上是inode被替代的过程. 例如,/dev/sdb块设备被mount到/mnt/alan目录.命令:mount -t ext3 /dev/sdb /mnt/alan. 那么mount这个过程所需要解决的问题就是将/mnt/alan的dentry目录项所指向的inode屏蔽掉,然后重新定位到/dev/sdb所表示的inode索引节点. 在没有分析阅读linux vfs mount代码的时候,我的想法是修改dentry所指向的inode索引节点,以此实现mou…
转载:原文地址http://www.linuxeye.com/linuxrumen/1121.html 本质上,Ext3 mount的过程实际上是inode被替代的过程.例如,/dev/sdb块设备被mount到/mnt/alan目录.那么mount这个过程所需要解决的问题就是将/mnt/alan的dentry目录项所指向的inode屏蔽掉,然后重新定位到/dev/sdb所表示的inode索引节点.在没有分析阅读linux vfs mount代码的时候,我的想法是修改dentry所指向的inod…
android4 SystemUI 流程分析 什么是SystemUI? 对于Phone来说SystemUI指的是:StatusBar(状态栏).NavigationBar(导航栏).而对于Tablet或者是TV来说SystemUI指的是:CombinedBar(包括了StatusBar和NavigationBar). 启动后Phone界面上的信号,蓝牙标志,Wifi标志等等这些状态显示标志都会在StatusBar上显示.当我们的设备开机后,首先需要给用户呈现的就是各种界面同时也包括了我们的Sys…
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云(Hybrid cloud)支持 主流硬件支持.云快速交付 和 SLA 保证 大规模扩展性支持 私有云外围环境支持(包括支持CDN .商业SDN控制器.防火墙和VPN/专线等) 良好的可使用性(用户和运维 Dashboard 等) 向上扩展性(PaaS 和 SaaS 等支撑) 企业数据中心IT环境支持…
欢迎各位关注我的博客:http://weibo.com/u/216633637 废话开头: 之前参考这位同学的博客http://www.cnblogs.com/awy-blog/p/3447176.html,同时综合OpenStack的ubuntu的官方安装文档,在修改了一些小错误之后,成功地用三台普通的物理PC机搭了一个OpenStack的环境,各项服务.功能都测试了一遍,感觉还可以.不过后来,由于其中的一台物理机被别人拿走之后,于是乎没继续使用测试了,转而去研究代码了. 后来,由于某种需求,…
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7)Neutron LBaas (8)Neutron Security Group (9)Neutro…
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7)Neutron LBaas (8)Neutron Security Group (9)Neutro…
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分配和 SR-IOV (5)libvirt 介绍 (6)Nova 通过 libvirt 管理 QEMU/KVM 虚机 (7)快照 (snapshot) (8)迁移 (migration) 1. QEMU/KVM 迁移的概念 迁移(migration)包括系统整体的迁移和某个工作负载的迁移.系统整理迁移…
和物理机一样,虚拟机包括几个重要的部分:CPU.内存.磁盘设备.网络设备等.本文将简要总结虚机磁盘设备有关知识. 1. Nova boot CLI 中有关虚机块设备的几个参数 nova boot CLI 的完整参数如下: usage: nova boot [--flavor <flavor>] [--image <image>] //boot from image with id [--image-with <key=value>] //image metadata p…
1. QEMU/KVM 迁移的概念 迁移(migration)包括系统整体的迁移和某个工作负载的迁移.系统整理迁移,是将系统上所有软件包括操作系统完全复制到另一个物理机硬件机器上.虚拟化环境中的迁移,可分为静态迁移(static migration,或者 冷迁移 cold migration,或者离线迁移 offline migration) 和 动态迁移 (live migration,或者 热迁移 hot migration 或者 在线迁移 online migration).静态迁移和动态…
作者:Sammy Liu 刘世民 本系列会介绍OpenStack 企业私有云的几个需求: GPU 支持 自动扩展(Auto-scaling)支持 混合云(Hybrid cloud)支持 物理机(Bare metal)支持 CDN 支持 企业负载均衡器(F5)支持 大规模扩展性(100个计算节点)支持 商业SDN控制器支持 1.3 在虚机内使用 GPU 的几种方式 (GPU 虚拟化) 1.3.1 集中 GPU 虚拟化实现技术 (1)API Remoting (远程API) 远程API 方法分为前端…
OpenStack之虚机冷迁移代码简析 前不久我们看了openstack的热迁移代码,并进行了简单的分析.真的,很简单的分析.现在天气凉了,为了应时令,再简析下虚机冷迁移的代码. 还是老样子,前端的Horizon代码就省去了,直接看后端的代码实现,前端通过请求的action进入到nova/api/openstack/compute/contrib/admin_actions.py文件.代码如下: @wsgi.action('migrate') def _migrate(self, req, id…
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分配和 SR-IOV (5)libvirt 介绍 (6)Nova 通过 libvirt 管理 QEMU/KVM 虚机 (7)快照 (snapshot) (8)迁移 (migration) 1. Libvirt 在 OpenStack 架构中的位置 在 Nova Compute 节点上运行的 nova-…
作为个人学习笔记分享.有不论什么问题欢迎交流! 在openstack中创建虚拟机的底层实现是nova使用了libvirt,代码在nova/virt/libvirt/driver.py. #image_meta:镜像的相关内容,#injected_files:要注入到VM的文件 #network_info:网络相关信息.block_device_info:磁盘相关信息 def spawn(self, context, instance, image_meta, injected_files, ad…