Create Volume 操作(Part I) - 每天5分钟玩转 OpenStack(50)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

前面已经学习了 Cinder 的架构和相关组件,从本节我们开始详细分析 Cinder 的各种操作,首先讨论 Cinder 如何创建 volume。


Create 操作流程如下:

image326.png

  1. 客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(cinder-api)发送请求:“帮我创建一个 volume”。

  2. API 对请求做一些必要处理后,向 Messaging(RabbitMQ)发送了一条消息:“让 Scheduler 创建一个 volume”。

  3. Scheduler(cinder-scheduler)从 Messaging 获取到 API 发给它的消息,然后执行调度算法,从若干计存储点中选出节点 A。

  4. Scheduler 向 Messaging 发送了一条消息:“让存储节点 A 创建这个 volume”。

  5. 存储节点 A 的 Volume(cinder-volume)从 Messaging 中获取到 Scheduler 发给它的消息,然后通过 driver 在 volume provider 上创建 volume。

因为 Create Volume 操作比较复杂,我们将分三次讨论:
今天是第一部分,讨论 cinder-api 的处理过程;
第二部分讨论 cinder-scheduler;
第三部分讨论 cinder-volume 的操作。

向 cinder-api 发送请求

客户(可以是 OpenStack最终用户,也可以是其他程序)向 cinder-api发送请求:“帮我创建一个 volume。

GUI 上操作的菜单为 Project -> Compute -> Volumes -> Create Volume

设置 volume 的名称,volume type,大小,Availability Zone 等基本信息。

这里我们没有设置 Volume Source,这样会创建一个空白的 volume。

点击“Create Volume” 按钮,cinder-api 将接收到创建 volume 的请求。 查看 cinder-api 日志 /opt/stack/logs/c-api.log。

日志显示 cinder-api 接收到一个 POST 类型的 REST API,经过对 HTTP body 的分析,该请求是:创建一个 1GB 的 volume。

紧接着,cinder-api 启动了一个 Flow(工作流)volume_create_api。 Flow 的执行状态依次为 PENDING, RUNNING 和 SUCCESS。volume_create_api 当前的状态由 PENDING 变为 RUNNING。

volume_create_api 工作流包含若干 Task,每个 Task 完成特定的任务。 这些任务依次为 ExtractVolumeRequestTask, QuotaReserveTask, EntryCreateTask, QuotaCommitTask, VolumeCastTask。 Task 的执行状态也会经历 PENDING, RUNNING 和 SUCCESS 三个阶段。

Task 的名称基本上说明了任务的工作内容,前面几个 Task 主要是做一些创建 volume 的准备工作,比如:

ExtractVolumeRequestTask 获取 request 信息

QuotaReserveTask 预留配额

EntryCreateTask 在数据库中创建 volume 条目

QuotaCommitTask 确认配额

最后 VolumeCastTask 是向 cinder-sheduler 发送消息,开始调度工作

至此,Flow volume_create_api 已经完成,状态由 RUNNING 变为 SUCCESS,volume 创建成功。日志如下:

需要特别注意的是,“volume 创建成功”只是指 cinder-api 已经成功处理了 volume create 请求,将消息发给了 cinder-scheduler,但并不意味 volume 在存储节点上已经成功创建,这一点是容易引起误解的。我们可以通过 cinder-volume 创建 volume 日志的时间戳验证。

cinder-api 发送消息

cinder-api 向 RabbitMQ 发送了一条消息:“让cinder-scheduler 创建一个 volume” 前面我们提到消息是由 VolumeCastTask 发出的,因为 VolumeCastTask 没有打印相关日志,我们只能通过源代码查看 /opt/stack/cinder/cinder/volume/flows/api/create_volume.py ,方法为 create_volume。


下一节我们讨论 Create Volume 的第二部分: cinder-scheduler 的处理过程。

 

转载于:https://my.oschina.net/u/2397560/blog/698830

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何有效解决C与C++的相互调用问题

from:https://blog.csdn.net/gobitan/article/details/1532769在实际工作中可能经常要进行C和C的混合编程,C调用C语言的代码通常都比较容易,但也有一些细节需要注意。C要调用C的代码就略为麻烦一些,因为C不支持面向对象的特征。一…

Eclipse开发工具之崩溃和备份

1.通过在命令行中输入“where java”,找到除jdk目录下的所有java相关程序,直接删掉(一般会在C:WINDOWSsystem32下)以后再也不用怕找不到目录了 2.内存不足,打开Eclipse目录下的eclipse.ini,把里面的-Xmx512…

IOS-网络(监听网络状态)

1 //2 // BWNetWorkTool.h3 // IOS_0131_检测网络状态4 //5 // Created by ma c on 16/1/31.6 // Copyright © 2016年 博文科技. All rights reserved.7 //8 9 #import <Foundation/Foundation.h> 10 11 interface BWNetWorkTool : NSObject 12 ///是否是WiFi …

C++中的friend详细解析

C中的友元机制允许类的非公有成员被一个类或者函数访问&#xff0c;友元按类型分为三种&#xff1a;普通非类成员函数作为友元,类的成员函数作为友元&#xff0c;类作为友元。友元包括友元的声明以及友元的定义。 友元的声明默认为了extern&#xff0c;就是说友元类或者友元函数…

【VMCloud云平台】拥抱Docker(六)关于DockerFile(1)

之前我们说过通过Docker pull来下载Images创建容器&#xff0c;这一次我们来聊下如何通过DockerFile创建Images再创建容器&#xff0c;Dockerfile也是Docker中的重点&#xff0c;使用DockerFile能够更加便捷轻量的存储标准化环境&#xff0c;也是环境管理的重要手段&#xff0c…

C++中相对路径与绝对路径以及斜杠与反斜杠的区别 及 处理代码

转载自&#xff1a;http://blog.csdn.net/sszgg2006/article/details/8447176文件路径正斜杠和反斜杠正斜杠&#xff0c;又称左斜杠&#xff0c;符号是"/"&#xff1b;反斜杠&#xff0c;也称右斜杠&#xff0c;符号是"\"。文件路径的表示可以分为绝对路径…

01参考资料

《Visual C#经典游戏编程开发》 目标&#xff1a; 掌握小游戏开发的思路&#xff0c;在实际开发过程中&#xff0c;思考实践面向对象&#xff0c;为cocos2d-x开发打下基础转载于:https://www.cnblogs.com/sharpfeng/p/5181260.html

WPF的二维绘图(一)——DrawingContext

DrawingContext比较类似WinForm中的Graphics 类&#xff0c;是基础的绘图对象&#xff0c;用于绘制各种图形&#xff0c;它主要API有如下几种&#xff1a; 绘图API 绘图API一般形为DrawingXXX系列&#xff0c;常用的基础的绘图API有&#xff1a; DrawEllipseDrawGeometryDrawG…

Windows系统编程之进程间通信

Windows系统编程之进程间通信作者&#xff1a;北极星2003来源&#xff1a;看雪论坛&#xff08;www.pediy.com&#xff09;Windows 的IPC&#xff08;进程间通信&#xff09;机制主要是异步管道和命名管道。&#xff08;至于其他的IPC方式&#xff0c;例如内存映射、邮槽等这里…

前端知识体系收藏

1. 布局框架&#xff1a; Bootstrap: http://getbootstrap.com/ Foundation: http://foundation.zurb.com/ Uikit: http://www.getuikit.com/ Web Components:http://css-tricks.com/modular-future-web-components// 2. 构建工具及包管理器&#xff1a; Grunt: http://gruntjs…

20分钟快速了解Redis

Redis可以说是目前最火爆的NoSQL数据库&#xff01; 过去几年&#xff0c;Memcached很盛行&#xff0c;现在有很多公司已将Memcached替换成了Redis。当然&#xff0c;很多人替换并不清楚为什么&#xff0c;只是感觉不想让主流抛弃&#xff0c;这也充分反映了目前Redis的强势。 …

进程通信例子

from&#xff1a;https://msdn.microsoft.com/zh-cn/library/system.diagnostics.process.beginoutputreadline(vvs.80).aspx?cs-save-lang1&cs-langcsharp#code-snippet-4备注可同步或异步读取 StandardOutput 流。Read、ReadLine 和 ReadToEnd 等方法对进程的输出流执行…

IDEA15 下运行Scala遇到问题以及解决办法

为了让Scala运行起来还是很麻烦&#xff0c;为了大家方便&#xff0c;还是记录下来&#xff1a; 1、首先我下载的是IDEA的社区版本&#xff0c;版本号为15. 2、下载安装scala插件&#xff1a; 2.1 进入设置菜单。 2.2 点击安装JetBrains plugin 2.3 输入scala查询插件&#xff…

通过扫码自定义链接安装iOS app,版本更新总结。

1、打包ipa&#xff0c;plist工具&#xff1a;xcode6证书&#xff1a;企业级开发证书 1.1&#xff09;xcode6开始企业级打包时不在生成plist&#xff0c;需要自己编写&#xff1a;模版见下&#xff1a; <?xml version"1.0" encoding"UTF-8"?><!…

安排与愿想

机器学习的理论学了好久了&#xff0c;对于回归&#xff0c;分类&#xff0c;聚类&#xff0c;数据的预处理的各种算法也有了深刻认识&#xff1b; 但纸上谈兵&#xff0c;没有意义&#xff1b; 从今天开始用起来吧&#xff0c;把各种算法的实践以及思路记录下来&#xff0c;附…

pdf破解版

网页说明http://aikongke.com/3754.html1118-1805-7284-0295-8107-3663您好 亲 看到您拍的宝贝了&#xff01; 链接&#xff1a;http://pan.baidu.com/s/1c0iE44C 密码&#xff1a;bnyc XI版转载于:https://www.cnblogs.com/computerMatainance/p/5192834.html

使用try-with-resources替代try finally释放资源

2019独角兽企业重金招聘Python工程师标准>>> 1、旧社会 Java里&#xff0c;对于文件操作IO流、数据库连接等开销非常昂贵的资源&#xff0c;用完之后必须及时通过close方法将其关闭&#xff0c;否则资源会一直处于打开状态&#xff0c;直至程序停止&#xff0c;增加…

MFC模态对话框和非模态对话框

MFC中对话框有两种形式&#xff0c;一个是模态对话框&#xff08;model dialog box&#xff09;&#xff0c;一个是非模态对话框&#xff08;modeless dialog box&#xff09;。一、模态对话框&#xff08;model dialog box&#xff09;在程序运行的过程中&#xff0c;若出现了…

平板电脑离寿终正寝还有多远?

近期有评论称&#xff0c;因为大尺寸智能手机越来越普及&#xff0c;小尺寸平板正遭受着越来越严重的冲击&#xff0c;在这样的背景下&#xff0c;平板厂商也纷纷转攻超大尺寸平板市场&#xff0c;以此避开大尺寸智能手机的竞争&#xff0c;只是。这样的策略转变是否能扭转平板…

Swift 与 JSON 数据

转载自&#xff1a; http://www.cnblogs.com/theswiftworld/p/4660177.html 我们大家平时在开发 App 的时候&#xff0c;相信接触最多的就是 JSON 数据了。只要你的 App 有读取网络数据的功能&#xff0c;你就免不了要与 JSON 打交道。比如你做一个新闻 App&#xff0c;你要读取…