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.pswp.cn/news/458338.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458338.shtml
英文地址,請注明出處:http://en.pswp.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;你要讀取…