OpenStack源码分析-NOVA
文章平均质量分 83
溜溜小哥
我们需要的是沉淀自己
展开
-
OpenStack Nova-scheduler组件的源码解析(1)
说实话,关于Nova-scheduler服务的资料已经很多,而且弄明白后其原理也是很简单的,实现选取最优目标主机实际上就是两个步骤,过滤和称重。PS:上周针对Nova-scheduler的调度器算法和Nova-cell的调度器算法写了两个专利,后来才知道,加入某些协议的开源项目是不能申请专利的。希望时间不要白费啊,哈哈哈......好啦,这篇博客先来说说Nova-scheduler组件原创 2013-11-12 22:25:09 · 10079 阅读 · 3 评论 -
OpenStack Nova-scheduler组件的源码解析(2)
这篇博客中,我会针对建立虚拟机实例的请求,来解析Nova调度器选取最优主机节点的过程。首先来看方法/nova/scheduler/manager.py----def run_instance:def run_instance(self, context, request_spec, admin_password, injected_files, requeste原创 2013-11-12 23:40:26 · 8949 阅读 · 12 评论 -
OpenStack建立实例完整过程源码详细分析(1)
研究和学习OpenStack这么长时间了,一直想写写技术博客的,但是由于工作时间的原因,一直没有做到。现在开始从头整理一下以前看的内容,也是对研究过的内容的一个回顾了! 从接触OpenStack开始,本人利用工作之余时间研究OpenStack的部分源码,第一遍看的之后只是看了个大概,头脑中对OpenStack的架构有了个大体的概念和印象,然后总感觉很多东西需要细致的看一下,所以又开始一步原创 2013-06-19 23:48:32 · 25957 阅读 · 3 评论 -
OpenStack建立实例完整过程源码详细分析(4)
再回到源码详细分析(1)中最开始的方法run_instances:def run_instances(self, context, **kwargs): """ 准备实例,并且发送实例的信息和要运行实例的请求消息到远程调度器scheduler; 实现实例的简历和运行,由调度器完成; ""原创 2013-06-23 01:23:08 · 4880 阅读 · 0 评论 -
OpenStack建立实例完整过程源码详细分析(7)
继续看方法get_project_quotas: def get_project_quotas(self, context, resources, project_id, quota_class=None, defaults=True, usages=T原创 2013-06-25 19:55:05 · 4030 阅读 · 0 评论 -
OpenStack建立实例完整过程源码详细分析(8)
前面解析完了get_project_quotas方法,现在我们回到方法def _get_quotas(self, context, resources, keys, has_sync, project_id=None):def _get_quotas(self, context, resources, keys, has_sync, project_id=None): ""原创 2013-06-26 00:47:58 · 3774 阅读 · 0 评论 -
Libvirt学习总结
这是本人之前在实验室做的一个LIBVIRT学习报告。什么是libvirt虚拟云实现的三部曲:虚拟化技术实现-->虚拟机管理-->集群资源管理(云管理)。各种不同的虚拟化技术都提供了基本的管理工具。比如,启动,停用,配置,连接控制台等。这样在构建云管理的时候就存在两个问题:1) 如果采用混合虚拟技术,上层就需要对不同的虚拟化技术调用不同管理工具,很是麻烦。2) 虚原创 2013-08-01 00:22:13 · 56523 阅读 · 9 评论 -
OpenStack基于Libvirt的虚拟化平台调度实现----Nova虚拟机启动源码实现(2)
来继续解析方法_create_image,这是建立虚拟机过程中比较重要的一个方法,它实现了虚拟机镜像的建立。,需要注意的是,这个方法并没有实现新建立的虚拟机的启动。具体来看方法_create_image:原创 2013-08-22 00:12:40 · 7432 阅读 · 1 评论 -
OpenStack基于Libvirt的虚拟化平台调度实现----Nova虚拟机启动源码实现(3)
我们继续来原创 2013-08-23 17:16:28 · 6203 阅读 · 2 评论 -
为OpenStack制作UBUNTU 12.04系统镜像
本文是本人借鉴了网上的一些资料和本人在实际制作OpenStack UBUNTU 12.04的系统镜像过程中进行的总结。记录下来以便日后使用方便。安装 Ubuntu 镜像首先下载要安装的 ubuntu 版本:# wget http://releases.ubuntu.com/lucid/ubuntu-12.04-desktop-amd64.iso创建一个 10GB 大小的 “硬盘原创 2013-08-23 17:39:29 · 14441 阅读 · 1 评论 -
OpenStack建立实例完整过程源码详细分析(12)----依据AMQP通信架构实现消息发送机制解析之一
我们来继续分析方法_create_instance的实现,先来回顾方法_create_instance的代码实现: def _create_instance(self, context, instance_type, image_href, kernel_id, ramdisk_id, min_count, max_count,原创 2013-10-02 04:41:32 · 8657 阅读 · 3 评论 -
Openstack Eventlet分析(1)
本来打算总结一下eventlet在OpenStack中的应用,正巧在网上找到几篇别人已经总结好的资料,而且总结的很好,这里直接转载过来。同时也向作者表示感谢。Eventlet库在OpenStack服务中上镜率很高,尤其是在服务的多线程和WSGIServer并发处理请求的情况下,深入了解eventlet库是很必要的。Eventlet库是由secondlife开源的高性能网络库,从Eventl转载 2013-10-21 17:55:13 · 11958 阅读 · 2 评论 -
OpenStack文件注入相关分析(1)
openstack在创建实例的时候可以将文件和相关的参数注入到实例的镜像中,来完成密码的设定、密钥的添加等动作,而这些动作的完成都是在实例启动之前。这在有些情况下会非常有用,比如修改root密码,注入ssh密钥,对实例的个性化定制等等。1.相关源码的源码结构文件和元数据注入是/nova/virt/disk/下的源码文件实现的,我们先来看一下/nova/virt/disk/的源码原创 2013-10-25 01:13:48 · 10182 阅读 · 6 评论 -
OpenStack文件注入相关分析(2)
上一篇博客中我们介绍了文件注入的相关内容,相关代码的结构,以及文件注入过程中支持的镜像文件挂载方式。现在,我们具体来看代码中文件注入的具体实现,由于在之前的虚拟机建立代码分析过程中涉及到了此部分的内容,所以我们只是来看看大致的流程,以便更好的掌握上一篇博文中的内容,就不对代码的每一行实现进行详细的解析。在虚拟机建立的过程中,在虚拟机启动之前,可以对实例镜像进行相关文件和元数据的注入操作,具体的原创 2013-10-25 04:30:47 · 7324 阅读 · 2 评论 -
OpenStack Nova源码结构(1)
以下是本人通过阅读Grizzly版OpenStack源码,整理的简要的Nova模块源码结构,希望和大家相互交流。/bin:Nova各个服务的启动脚本/nova/api/auth.py:通用身份验证的中间件,访问keystone;/nova/api/manager.py:Metadata管理初始化;/nova/api/sizelimit.py:limit中间件的实现;/nov原创 2013-09-02 04:57:13 · 16578 阅读 · 6 评论 -
OpenStack Nova源码结构(2)
接续上篇博文,继续来看OpenStack Nova的结构:/nova/cells/driver.py:cell通讯驱动基类;/nova/cells/manager.py:cell服务管理API,主要定义了类CellsManager;/nova/cells/messaging.py:cell通信模块;/nova/cells/opts.py:cell的全局配置选项;/nova/原创 2013-09-02 04:57:33 · 8261 阅读 · 0 评论 -
OpenStack Nova-cell服务的源码解析(2)
在上一篇博客中,我们解析了OpenStack Nova-cell服务的源码结构,在这篇博客中我将以几个例子对nova-cell服务的源码架构和nova-cell服务的具体实现流程进行解析。1.以实例说明,nova-cell源码结构/nova/cells/manager.py----class CellsManager(manager.Manager):原创 2013-11-08 01:41:55 · 3354 阅读 · 1 评论 -
OpenStack Nova-cell服务的源码解析(1)
上篇博客中对nova-cell服务的架构和配置进行了介绍,这篇博客我将对nova-cell服务的源码进行解析。1.nova-cell服务的源码结构图2.nova-cell服务的源码结构解析/nova/cells/driver.pyclass BaseCellsDriver(object):cells通讯驱动基类,这个类主要实现了消息消费者处理的相关方法; def原创 2013-11-06 13:05:49 · 4143 阅读 · 0 评论 -
OpenStack Nova-cell服务的介绍和配置
我将先在此篇博客中介绍nova-cell服务的架构和配置,在下一篇博客中,我将具体分析nova-cell的源码。cell的功能允许我们以更加灵活的分布式的方式实现对OpenStack Compute云的缩放,而不需要更加复杂的技术,只需数据库和消息队列等。它的目的是支持更大规模的部署。当启用了这个功能的时候,OpenStack Compute云中的主机会被分组,称作cell。cell的原创 2013-10-30 18:07:13 · 7512 阅读 · 2 评论 -
Openstack Eventlet分析(2)
上一篇博客OpenStack-Eventlet分析(一)以eventlet库中的spawn函数为代表,详细的介绍了spawn函数的运行过程。最终的重点是在hubs用来进行调度的一面,而hubs关于网络的一面还没有涉及。然而,上一篇只专注于每一行代码的执行流程了,而没有eventlet用来调度greenthread的框架分析,这样容易导致阅读源码会出现的一个常见问题,只见树木不见树林。所以在这一篇,转载 2013-10-21 18:00:50 · 7628 阅读 · 1 评论 -
OpenStack建立实例完整过程源码详细分析(9)
继续看方法quota_reserve:def quota_reserve(context, resources, quotas, deltas, expire, until_refresh, max_age, project_id=None): elevated = context.elevated() # 获取db_session的session; #原创 2013-06-26 23:29:15 · 5084 阅读 · 0 评论 -
NOVA源码分析——NOVA中的RabbitMQ解析
本篇文章是对本人阅读NOVA源码过程中的心得、RabbitMQ的官方文档以及网上的一些资料整理总结而成的,也为了方便以后对这部分内容的复习。 NOVA是OpenStack系统的核心模块,主要负责虚拟机实例的生命周期管理、网络管理(前几个版本)、存储卷管理(前几个版本)、用户管理以及其他相关云平台管理功能,在能力上类似于Amazon EC2和Rackspace Cloud Server原创 2013-07-30 10:04:24 · 14969 阅读 · 3 评论 -
OpenStack基于Libvirt的虚拟化平台调度实现----Nova虚拟机启动源码实现(1)
Nova通过独立的软件管理模块实现XenServer、Hyper-V和VMWare ESX的调用与管理,同时对于其他的Hypervisor,如KVM、LXC、QEMU、UML和Xen则是通过Libvirt标准接口统一实现,其中KVM是Nova-Compute中Libvirt默认调用的底层虚拟化平台。为了更好地理解在Nova环境下Libvirt是如何管理底层的Hypervisor,先要基本了解Lib原创 2013-08-15 23:44:18 · 14157 阅读 · 1 评论 -
OpenStack基于Libvirt的虚拟化平台调度实现----Nova虚拟机启动源码实现(4)
继续来看方法原创 2013-08-24 00:28:25 · 6643 阅读 · 6 评论 -
OpenStack建立实例完整过程源码详细分析(11)
在这篇博文中,我们将回到方法/nova/compute/api.py----def _create_instance中,继续对这个方法中发送要运行实例('run_instance')的请求消息到远程节点的功能实现部分进行解析。首先来看方法_create_instance的实现代码:def _create_instance(self, context, instance_type,原创 2013-09-04 11:40:23 · 4185 阅读 · 3 评论 -
OpenStack建立实例完整过程源码详细分析(15)----依据AMQP通信架构实现消息接收机制解析之二
此片博文继续上一篇博文的工作,继续对/nova/server.py中类Service下的方法def start(self)进行解析,来实现对Nova下的AMQP的消息消费者机制的解析工作。2.3 语句self.conn.consume_in_thread()的解析这条语句实现了从队列中获取消息,并最终实现了对消息的处理和执行操作。def consume_in_thread(self原创 2013-10-02 14:28:36 · 5853 阅读 · 1 评论 -
OpenStack建立实例完整过程源码详细分析(2)
继续解析方法def show(self, context, image_id): def show(self, context, image_id): """ # 调用之一传进来的参数: # context:上下文信息; # image_i原创 2013-06-20 13:37:07 · 8366 阅读 · 0 评论 -
OpenStack建立实例完整过程源码详细分析(3)
继续解析方法def show(self, context, image_id): def show(self, context, image_id): """ # 调用之一传进来的参数: # context:上下文信息; # im原创 2013-06-22 23:57:28 · 4856 阅读 · 0 评论 -
OpenStack建立实例完整过程源码详细分析(5)
现在开始,开始分析great这个最重要的方法。我们回到第一篇文章中的run_instances方法:def run_instances(self, context, **kwargs): """ 准备实例,并且发送实例的信息和要运行实例的请求消息到远程调度器scheduler; 实现实例的简历和运行,由调度器完原创 2013-06-24 00:44:18 · 5585 阅读 · 2 评论 -
OpenStack建立实例完整过程源码详细分析(6)
继续看/nova/compute/api.py中的creat方法: def create(self, context, instance_type, image_href, kernel_id=None, ramdisk_id=None, min_count=None, max_count=None,原创 2013-06-25 01:00:26 · 6857 阅读 · 0 评论 -
OpenStack基于Libvirt的虚拟化平台调度实现----Nova虚拟机动态迁移源码分析
这篇博文开始,我们来解析一下Nova虚拟机动态迁移的实现源码。这里不会再像前面那样对代码进行逐行的详细解析,目的是来整理Nova虚拟机动态迁移的实现步骤和相关源码部分架构。首先我们来看虚拟机动态迁移在Opentack Nova中的API请求处理函数/nova/api/openstack/compute/contrib/admin_actions.py----def _migrate_liv原创 2013-08-28 22:09:57 · 7777 阅读 · 6 评论 -
OpenStack建立实例完整过程源码详细分析(10)
我们接续博文 OpenStack建立实例完整过程源码详细分析(9),来继续分析OpenStack建立实例完整过程源码实现。在上一篇博文中,我们具体分析了磁盘配额管理相关的方法实现,完成了对方法/nova/compute/api.py----_check_num_instances_quota的源码解析。这里我们回到方法/nova/compute/api.py----_validate_an原创 2013-09-02 22:32:39 · 7939 阅读 · 1 评论 -
OpenStack建立实例完整过程源码详细分析(13)----依据AMQP通信架构实现消息发送机制解析之二
这篇博文来继续对方法def cast(conf, context, topic, msg)进行解析,首先来看这个方法的源码:def cast(conf, context, topic, msg, connection_pool): """ 发送一个topic主题的消息,不用等待任何信息的返回; """ LOG.debug(_('Making asynchro原创 2013-10-02 08:07:12 · 4999 阅读 · 0 评论 -
OpenStack建立实例完整过程源码详细分析(14)----依据AMQP通信架构实现消息接收机制解析之一
这篇博文开始解析NOVA中的AMQP架构下消息的消费者如何从特定的消息队列中读取发送给自己的消息,并进行执行操作。总体来讲,Nova中的各个服务在启动的时候就会初始化会用到的队列,而且会启动一个绿色线程,不断的循环验证新的消息的到来,一旦有新的消息,将会由合适的consumer进行读取,并进一步进行消息的解析和执行操作。下面,我将会以compute服务的启动作为实例,重点解析AMQP架构下原创 2013-10-02 12:40:08 · 7320 阅读 · 0 评论 -
什么是openstack的metadata
metadata字面上是元数据,是一个不容易理解的概念。在除了openstack的其他场合也经常会碰到。openstack里的metadata,是提供一个机制给用户,可以设定每一个instance 的参数。 比如你想给instance设置某个属性,比如主机名。metadata的一个重要应用,是设置每个instance的ssh公钥。公钥的设置有两种方式: 1、创建instance转载 2013-10-25 04:40:44 · 5890 阅读 · 0 评论 -
rootwrap模块解析以及功能扩展
感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!如果转载,请保留作者信息。博客地址:http://blog.csdn.net/gaoxingnengjisuan邮箱地址:dong.liu@siat.ac.cnPS:因为各方面的原因好久没有写博客了,有时间还是要写一写的! 使用rootwrap的目的就是针对系统某些特定的操作,让非特权用户以root用户的身原创 2015-07-28 16:30:41 · 5508 阅读 · 1 评论