- 博客(14)
- 收藏
- 关注
原创 深挖Openstack Cinder - 数据库表结构
”深挖数据库表结构,相当于从原子角度去剖析整个模块组成。“ --- 我说的表清单1. backups – 数据备份2. cgsnapshots – 一致性组快照3. consistencygroups – 一致性组.4. driver_initiator_data – 驱动发起人数据5. encryption – 加密6. image_volume_cache_entries7. iscsi_t...
2018-06-14 10:03:05 2178
原创 深挖Openstack Glance - 源码分析(1)
v1版本API功能解析1. 创建image2. 更新image3. 获取image信息(metadata和data)4. 删除image5. 获取image列表6. 获取image元数据(metadata)7. 下载image这些功能都在/glance/api/v1/images.py里,该文件主要是提供与image相关的操作。接下来将对这些功能逐个分析:1. 创建image@utils.muta...
2018-06-12 14:42:17 1070
原创 深挖Openstack Glance - 基本知识
一. glance的作用:提供虚拟机镜像的发现、注册、检索,使用RESTful接口接收外部请求 二. 版本说明glance有两个版本API v1/v2,其中v2版本(F版)较为简洁,将glance-api和glance-registry合并在一块。1. glance-api:接收REST API的请求,分析消息请求信息并分发命令(如新增、删除、更新等)2. glance-registry:负责接收...
2018-06-11 10:49:10 966
原创 深挖Openstack Nova - evacuate疏散函数
一. 当实例所在的节点发生故障不可用时,可执行evacuate操作,在另外一个新节点rebuild该实例,实现高可用。这可以是OpenStack计算节点HA的一种实现方案。二. API调用nova.servers.evacuate(server=fm['id']), on_shared_storage=True1. on_shared_storage参数在2.14版本后废除,自动检查是否为共享存储...
2018-06-08 10:15:47 5530 1
原创 深挖Openstack Nova - Compute模块
一. nova-compute是一个非常重要的守护进程,负责创建和终止虚拟机实例,即管理着虚拟机实例的生命周期,包括instance的launch、shutdown、reboot、suspend、resume、terminate、resize、migration、snapshot等。 二. 例如对于创建虚拟机请求,nova-api接收到客户端请求后,经过nova-scheduler调度器调度,再将...
2018-06-07 10:25:48 3684
原创 深挖Openstack Nova - Scheduler调度策略(2)
当OpenStack自带的调度算法无法满足自己的业务需求时,这时我们可以增加自定义调度算法。现在有如下需求:需求1. 同一项目的多个实例分散到不同的计算节点上;需求2. 机柜感知 - 同一项目的多个实例分散到不同的机柜上;需求3. 要求实例B不放在与实例A相同的节点上。思路:需求1:(1)自带的ServerGroupAntiAffinityFilter过滤器可解决,创建实例时指定scheduler...
2018-06-06 09:55:55 1494
原创 深挖Openstack Nova - Scheduler调度策略(1)
一. Scheduler的作用就是在创建实例(instance)时,为实例选择出合适的主机(host)。这个过程分两步:过滤(Fliter)和计算权值(Weight)1. 过滤:过滤掉不符合我们的要求,或镜像要求(比如物理节点不支持64bit,物理节点不支持Vmware EXi等)的主机,留下符合过滤算法的主机集合。2. 计算权值通过指定的权值计算算法,计算在某物理节点上申请这个虚机所必须的消耗...
2018-06-06 09:37:11 4929 2
原创 深挖Openstack Nova - 实例创建(5)
--------------- 紧接上篇 nova实例创建(4) --------------------继续深入_provision_instances方法:3》在循环中,实例创建时需发送状态更新通知# 为实例的初始化建立发送一个状态更新通知,表示实例状态从不存在到建立# send_update_with_states:# 在一个实例中,发送compute.instance.update来通...
2018-06-05 18:12:16 486
原创 深挖Openstack Nova - 实例创建(4)
--------------- 紧接上篇 nova实例创建(3) --------------------(8)完成配额管理instances = self._provision_instances(context, instance_type, min_count, max_count, base_options, boot_meta, security_groups, ...
2018-06-05 15:17:50 429
原创 深挖Openstack Nova - 实例创建(3)
--------------- 紧接上篇 nova实例创建(2) --------------------5. 分析create方法在最开始的run_instances方法中可知创建实例是通过self.compute_api.create方法来实现的,该方法是在/nova/compute/api.py里# 建立所有类型的实例都要执行# 返回一个元组(实例或者是reservation_id的元组)...
2018-06-05 11:08:44 587
原创 深挖Openstack Nova - 实例创建(2)
--------------- 紧接上篇 nova实例创建(1) --------------------3. 分析show方法在2.1中的image = self.image_service.show(context, internal_id)中,由于S3是EC2的存储平台,所以调用/nova/image/s3.py的show方法def show(self, context, image_id)...
2018-06-04 23:38:15 412
原创 深挖Openstack Nova - 实例创建(1)
nova版本:Liberty一、创建实例涉及的主要目录结构(1)/nova/api/ec2/cloud.py:云控制器,执行EC2 REST API的调用,这个调用是通过AMQP RPC分派到其他节点(2)/nova/image/s3.py:从S3获取数据,建立镜像等相关方法(3)/nova/image/glance.py:使用Glance作为后端的镜像服务的实现(4)/nova/compute/...
2018-06-04 23:32:16 1440
原创 重构 - 观察者模式
在一个实现通知功能的接口中,通常用一个通知类型notifyType来区别不同的业务场景,然后用switch来划分不同的逻辑流向。String notifyType = "";switch (notifyType) { case "类型1": doType1(); // 逻辑1 break; case "类型2": doType2(...
2018-06-04 23:25:19 215 4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人