1. 程式人生 > >Ceph Monitor原始碼機制分析(一)—— 概述

Ceph Monitor原始碼機制分析(一)—— 概述

0 前言

最近終於有點時間可以看看Ceph的程式碼了,接下來準備就Ceph monitor這個Ceph叢集中最重要的元件進行深入的分析。

1 Monitor的作用

Monitor在Ceph叢集中扮演著管理者的角色,維護了整個叢集的狀態(抽象成幾張map,包括osdmap、monmap、mdsmap、auth、log等),保證叢集的相關元件在同一時刻能夠達成一致,相當於叢集中的領導層。之所以說是相關而不是所有的主要是因為OSD map的更新採用了類似於灰度釋出的機制,這會導致在一個時刻叢集中所有OSD或者Client所持有的OSDmap的版本可能是不一致的。總結一句話就是monitor是負責收集叢集資訊、更新叢集資訊以及釋出叢集資訊的。如果只有一個monitor那麼,這件事情會輕鬆的多,叢集資訊的增、刪、改、查都有這個monitor完成。但作為一個分散式儲存解決方案,規避任何的單點故障都是一個必備條件,所以在使用Ceph的生產環境中也會部署多個Monitor。單點問題解決了,但Monitor多了之後相應的叢集資料管理也就複雜了,引入了許多新的問題,比如:叢集資料存在哪裡?資料到底有誰更新?其他元件從哪裡讀取資訊?多個monitor之間如何進行資料同步等?所以在一個標準的Ceph環境中,Monitor做的事情可以抽象成以下兩點:

  • 管好自己,其實也就解決多個monitor之間如何協同工作,比如誰負責更新資料,怎麼更新?monitor之間怎麼同步資料?誰負責釋出資料?如何確保monitor的健康問題?
  • 管好叢集資訊,其實也就解決儲存哪些資料?資料怎麼儲存?儲存在哪裡?怎麼保證儲存資料的正確性?

如何抽象成以上兩點呢?還得從程式碼入手,看一下monitor的程式碼目錄結構:


當然,以上原始碼檔案的劃分也不是完全分開的,彼此之間仍然有一些關聯關係存在,比如選舉這個過程實際上還會涉及monitor之間的資料同步也就是資料管理中的更新。資料更新,需要通過資料儲存模組完成持久化。Monitor管理的資料中OSDMap和MDSMap這兩部分沒有放在monitor目錄下,而是分別放在osd和mds目錄下的,所以這裡用紅色字型將他們標記了出來。

接下來的幾篇文章主要圍繞以上兩個大面詳解monitor中所涉及的相關技術。

相關推薦

Ceph Monitor原始碼機制分析—— 概述

0 前言 最近終於有點時間可以看看Ceph的程式碼了,接下來準備就Ceph monitor這個Ceph叢集中最重要的元件進行深入的分析。 1 Monitor的作用 Monitor在Ceph叢集中扮演著管理者的角色,維護了整個叢集的狀態(抽象成幾張map,包括osdmap、m

前程無憂爬蟲原始碼分析

一、網頁分析     1.1 關鍵字頁面(url入口)         首先在前程無憂網站上檢索關鍵詞"大資料":      &n

Qemu-KVM虛擬機器初始化及建立過程原始碼簡要分析

    我們知道,Qemu-KVM實際上包括Qemu和KVM兩部分,那麼在建立以及初始化虛擬機器時,實際上也是在這兩部分進行的。     KVM實際上就是kvm核心模組,包括kvm.ko、kvm-intel.ko、kvm-amd.ko三部分,後兩部分分別對應Intel體系的

Android Handler 訊息機制分析

        Handler,Message,MessageQueue,Looper,是android一種訊息處理機制,在android開發中經常會用到,當Handler建立後,會被繫結到它所在的執行緒上,處理訊息的成員及其功能如下:        Handler:傳送一個

Android Hanlder機制分析 Hanlder常見用方法及原理

一、Handler介紹   在android開發的過程中,經常需要對UI進行更新操作。但是在子執行緒中對UI進行更新在android中是不允許的,這涉及到了執行緒安全問題,因此更新UI只能在主執行緒(UI執行緒)中進行。但是如果將耗時操作放在了UI執行緒中會帶

KVM-QEMU vdagent實現機制分析

Spice agent執行在客戶機(虛擬機器)作業系統中。Spice server和Spice client利用spice agent來執行一些需要在虛擬機器裡執行的任務,如配置解析度,另外還有通過剪貼簿來拷貝檔案等。從上圖可以看出,Spice client與server與Spice Agent的通訊需要藉

nova建立虛擬機器過程原始碼簡要分析

nova部署虛擬機器原始碼呼叫過程簡要分析,關於novaclient的程式處理流程暫時還沒有分析。後期如果有時間會進一步分析novaclient的程式執行過程,以及客戶端和服務之間的http請求響應關係。 nova/api/openstack/compute/

[日更-2019.5.24、25、26] Android系統中的Binder通訊機制分析--servicemanager

宣告 其實對於Android系統Binder通訊的機制早就有分析的想法,記得去年6、7月份Mr.Deng離職期間約定一起對其進行

linux裝置驅動模型架構分析——概述

概述 LDD3中說:“Linux核心需要一個對系統結構的一般性描述。”這個描述就是linux裝置驅動模型(下面簡稱為LDDM)。LDDM不是獨立存在,其體系如下圖所示: LDDM體系結構 對架構的每一部分本文都會開闢獨立的章節進行描述。暫且拋開這個架構,首先從總體上了

seajs原始碼分析-執行機制淺析

前端技術發展簡直是日新月異,隨著angularjs,vuejs,reactjs等等這些框架的不斷興起,轉眼間jquery,seajs,Backbone這些框架已經成了清朝的框架了,再加上es6本身對於模組化的支援,也許,seajs模組化在將來的某天可能會徹底成為

Ceph 學習——OSD讀寫流程與原始碼分析

直接上圖: 同樣當前最新的版本,和之前的版本有所不同,有一些模組簡化了,類的名字也改了。先介紹圖中涉及的相關的類,然後在對類中具體函式主要呼叫流程進行分析。 OSD 模組主要的類 盜圖:其中ReplicatedPG 在最新的版本中

【原創】源碼角度分析Android的消息機制系列——Android消息機制概述

run 權限 開發 等待 通過 讀取 概述 走了 color ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 1.為什麽需要Android的消息機制 因為Android系統不允許在子線程中去訪問UI,即Android系統不允許在子線程中更新UI。 為什麽不允許

Zookeeper-watcher機制源碼分析

exc class sso referer 告訴 resp sessionid chm 同學 Watcher的基本流程 ZooKeeper 的 Watcher 機制,總的來說可以分為三個過程:客戶端註冊 Watcher、服務器處理 Watcher 和客戶端回調 Watche

Flume NG原始碼分析基於靜態properties檔案的配置模組

日誌收集是網際網路公司的一個重要服務,Flume NG是Apache的頂級專案,是分散式日誌收集服務的一個開源實現,具有良好的擴充套件性,與其他很多開源元件可以無縫整合。搜了一圈發現介紹Flume NG的文章有不少,但是深入分析Flume NG原始碼的卻沒有。準備寫一個系列分析一下Flume NG的

GCC原始碼分析——介紹與安裝

原文連結:http://blog.csdn.net/sonicling/article/details/6702031     上半年一直在做有關GCC和LD的專案,到現在還沒做完。最近幾天程式設計的那臺電腦壞了,所以趁此間隙寫一點相關的分析和

Glide原始碼分析從用法來看之with方法

繼續啃原始碼,用過Glide的人,肯定都覺得它好好用,我們一般只需要幾行程式碼,就可以達到我們想要的效果,可以在這個背後是什麼呢?就需要我們來看了。 我一般看原始碼,我喜歡先從用法來看,然後一步一步的再細扣,所以就先從用法來看Glide的整體流程。 用過Glide的人,用下面這段

zigbee 之ZStack-2.5.1a原始碼分析

先看main, 在檔案Zmain.c裡面 main osal_init_system(); osalInitTasks(); ... ... SampleApp_Init( taskID ); // 使用者定義的任務

Docker Client原始碼分析

主要內容: Docker Client在Docker中的定位,以及Docker Client原始碼的初步分析。 本文選取Docker拆分為DockerCE(社群版)和DockerEE(企業版)之後的Docker-CE的第一個穩定版本v17.06.0-ce。 https://github.com/docker

兄弟連區塊鏈教程以太坊原始碼分析CMD深入分析

cmd包分析 cmd下面總共有13個子包,除了util包之外,每個子包都有一個主函式,每個主函式的init方法中都定義了該主函式支援的命令,如 geth包下面的: func init() {     // Initialize the CLI app and st

Hibernate使用及原始碼分析

Hibernate使用及原始碼分析(一) 本篇文章主要通過hibernate初級使用分析一下原始碼,只是給初學者一點小小的建議,不喜勿噴,謝謝! hibernate環境搭建 簡單使用 原始碼走讀 一 hibernate環境搭建 這裡直接