`
德安德鲁
  • 浏览: 44930 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

【OpenStack源码单排 一】cinder创建磁盘总述(一)

 
阅读更多

声明:本博客欢迎转发,但请保留原作者信息! 内容系本人学习、研究和总结,如有雷同,实属荣幸!

新浪微博:@支支zHi小冬

博客地址:http://xiaodongzhi.github.io/

联系邮箱:517341003@qq.com

openstack版本信息:ocata

Cinder架构简述

- Cinder API:提供cinder的REST API,通常部署在控制节点。 - Cinder Scheduler:负责Cinder请求调度,与nova-scheduler类似,根据请求中的调度条件,如volume-type,size等选择合适的后端存储来进行块存储管理。 - Cinder-volume:通过cinder-driver与各个厂商的存储设备进行交互,来进行块存储操作。

Cinder创建磁盘流程图

Cinder API

重点讲下api中的几个task:

ExtractVolumeRequestTask:

1、参数校验,包含镜像创建卷时,卷属性与磁盘属性是否冲突,如磁盘容量小于镜像大小。 2、获取availabilityzone信息,创建时指定>snapshot>sourcevolume>defaultavailabilityzone

QuotaReserveTask:

预留Quota信息 检查cinder的配额,是否有足够配额用以创建磁盘。如果够,会更新quota信息减一。

EntryCreateTask:

数据库中创建volume信息。

QuotaCommitTask:

更新Quota信息到数据库

VolumeCastTask:

1、创建磁盘信息任务。从请求信息中获取host(就是创建卷的后端存储信息)。snapshot>sourcevolid>sourcereplicaid 2、如果从请求中获取到host信息,则直接调用cinder-volume的rpc接口在该host上创建卷 3、如果请求中未获取到host信息,则调用cinder-scheduler的rpc接口创建volume。

Cinder Scheduler

主要简单描述下scheduler中的几个Task:

ExtractSchedulerSpecTask:

获取用于调度的信息:

{
    'volume_id': volume.id,
    'snapshot_id': snapshot_id,
    'image_id': image_id,
    'volume_properties': {
        'size': utils.as_int(volume.size, quiet=False),
        'availability_zone': volume.availability_zone,
        'volume_type_id': volume_type_id,
    },
    'volume_type': list(dict(vol_type).items()),
}

ScheduleCreateVolumeTask:

1、根据调度信息信息调度host(后端存储) 1.1、查询符合条件的host 1.2、weigh host 1.3、选取最合适的主机 2、在选择的host上创建磁盘

Cinder Volume

cinder volume的处理机制与cinder api 和schedule一致,均通过任务队列完成。类似于工作流。

linear_flow相关介绍,参考这里

顺序执行:

1、ExtractVolumeRefTask

2、OnFailureRescheduleTask

3、ExtractVolumeSpecTask

4、NotifyVolumeActionTask

创建卷的主业务任务,详解见下一章

5、CreateVolumeFromSpecTask

6、CreateVolumeOnFinishTask

 

转自:http://stacker.top/blog/2016/12/02/Cinder%E4%BB%A3%E7%A0%81%E8%B5%B0%E8%AF%BB%E7%B3%BB%E5%88%97%E4%B8%80-%E5%88%9B%E5%BB%BA%E7%A3%81%E7%9B%98-%E4%B8%80-cinder-api/

分享到:
评论

相关推荐

    OpenStack源码

    Nova是OpenStack的核心组件之一,负责处理计算实例生命周期管理,如创建、删除虚拟机以及资源调度。它是一个分布式系统,由多个服务构成,如计算服务(Nova Compute)、调度服务(Nova Scheduler)和API服务等。 ...

    cinder创建volume过程

    Cinder创建卷过程是OpenStack中的一种核心过程,涉及到Cinder服务架构、Cinder-API、Cinder-Scheduler、Cinder-Volume等多个组件。只有全面了解Cinder的架构和工作机制,才能更好地使用Cinder提供的功能。

    openstack 源码下载脚本

    openstack所有组件下载脚本 直接在linux系统中执行即可

    openstack其中四大组件源码

    在提到的"四大组件源码"中,Cinder、Swift、Glance和Keystone是OpenStack的核心组件,它们各自承担着关键的职责。 1. Cinder: Cinder是OpenStack中的块存储服务,主要用于提供持久化的块设备,这些设备可以被挂载...

    openstack cinder之块存储管理

    6. 从卷启动:OpenStack Cinder还支持从卷启动实例的功能,即在创建虚拟机时,可以指定使用一个已存在的卷作为系统盘,这样可以快速克隆出多个相同的实例,节省时间和资源。 四、Cinder卷驱动 Cinder的灵活性体现...

    openstack-java-cinder-client-3.1.3-2.el7.noarch.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    openstack源码安装

    OpenStack是一个开源的云计算平台,用于构建私有云和公共云服务。它的核心组件包括Keystone、Nova、Cinder和Quantum(现称为Neutron),这些组件分别负责身份管理、计算、块存储和网络服务。以下是对这些组件源码...

    OpenStack源码分析-NOVA

    ### OpenStack源码分析—NOVA模块 #### 一、OpenStack与NOVA概述 OpenStack作为一款开源的云计算管理平台,提供了丰富的功能和服务来帮助用户构建和管理云基础设施。在其众多服务中,Nova(计算服务)是核心组成...

    openstack nova源码分析

    OpenStack Nova是OpenStack云平台的核心组件之一,主要负责计算资源的管理,包括虚拟机的生命周期管理、调度、网络配置和存储操作等。在进行OpenStack Nova源码分析时,我们需要深入了解其架构、核心模块以及关键...

    nova源码+无标注+OpenStack社区下载

    Nova是OpenStack项目的核心组件之一,负责计算服务的管理,包括虚拟机的生命周期管理、资源调度、网络配置等。在OpenStack社区下载的nova源码中,你可以深入了解这个开源云计算平台如何处理IaaS(基础设施即服务)的...

    Docker使用OpenStack Cinder持久化 volume原理分析及实践.docx

    Cinder Plugin 会与 OpenStack Cinder API 交互,在 Cinder 中创建一个新的 Volume,并返回给 Docker Daemon。 3. **挂载 Volume**:用户将 Volume 挂载到容器中时,Docker Daemon 会调用 Cinder Plugin 的 `mount`...

    OpenStack之块存储服务(Cinder)

    OpenStack之块存储服务(Cinder)是OpenStack中提供块存储服务的组件,主要功能是为虚拟机实例提供虚拟磁盘管理服务。Cinder的前身是Nova中的“nova-volume”组件,OpenStack F 版以后就将其从Nova中被剥离出来作为一...

    openstack-java-cinder-model-3.2.7-1.el7.noarch.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    openstack-java-cinder-model-3.2.5-1.el7.noarch.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    openstack-java-cinder-model-3.2.4-1.el7.noarch.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    openstack-java-cinder-model-3.1.3-2.el7.noarch.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    openstack-java-cinder-model-3.1.2-2.el7.noarch.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    openstack-java-cinder-client-3.2.7-1.el7.noarch.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    openstack-java-cinder-client-3.2.5-1.el7.noarch.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

    openstack-java-cinder-client-3.2.4-1.el7.noarch.rpm

    官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装

Global site tag (gtag.js) - Google Analytics