原创 OSD&FileStore之CompatSet

CompatSet是一個結構體類型,其用於對特性兼容性進行管理。該類型的定義位於src/include/CompatSet.h文件中。 爲什麼需要該兼容性管理模塊: OSD對外提供一些功能特性,這個些特性需要OSD後端的存儲驅動(

原创 Messenger層數據傳輸協議

Messenger 層數據傳輸協議(Pipe消息體結構) 協議:用於連個獨立個體進行交互彼此必須準守的約定(個人理解)。 Messenger層的協議: 該協議包括了tag、header、front、middle、data、foot

原创 Pipe核心分析及消息體結構-reader

Pipe核心分析及消息體結構 Pipe是什麼 Pipe是SimpleMessenger中的一個複雜的組件,每個Pipe實例都擁有工作在socket上的兩個線程,分別負責socket連接上的讀取和寫入的數據傳輸,除此之外還會將s

原创 librados 處理過程

librados是ceph rados對外提供服務的原生api,本文是libradso接口調用的過程(從之前的文中摘錄)。 設置image 的id ioctx->exec(oid, "rbd", "set_id", in, ou

原创 RBD 導出一個image

RBD 導出一個image。 do_export(librbd::Image& image, const char *path) >image.stat(info, sizeof(info)) >open(path

原创 Pipe核心分析及消息體結構-writer

Pipe核心分析及消息體結構 Pipe是什麼 Pipe是SimpleMessenger中的一個複雜的組件,每個Pipe實例都擁有工作在socket上的兩個線程,分別負責socket連接上的讀取和寫入的數據傳輸,除此之外還會將s

原创 ObjectStore獲取文件系統的fsid

ceph version: Kraken ObjectStore獲取文件系統的fsid。OSD在用戶態又構造了一層自己文件系統來管理數據,併爲其分配了唯一標識UUID。該UUID是其文件系統元信息中的一員,底層使用的驅動不同

原创 RBD中回調函數的變遷

rbd中涉及的回調,以寫入爲例,跟蹤回調函數的變遷。 @rbd.cc ################################################ ******AioExportCont

原创 RBD AioRequest

RBD librados中AioRequest,以寫爲例。 |->m_ictx (ImageCtx) AioRequest--|-m_oid (string) /_\

原创 RBD Image映射到Object

該函數是將更新的image的範圍映射到具體的對象上.這個部分涉及到stripe的概念,需要預先了解這個概念(可以參考官網對其的解釋) void aio_write(ImageCtx *ictx, uint64_t off, siz

原创 RBD創建一個image

RBD創建一個image的過程分析。 rbd.cc do_create(librbd::RBD &rbd, librados::IoCtx& io_ctx,const char *imgname, uint64

原创 服務端連接日誌(AsyncMessenger)

AsyncMessenger 通信層,服務端連接日誌 7fdcf4d44700 10 Processor -- accept listen_fd=22 7fdcf4d44700 10 stack get_worker 7fdcf

原创 boost::variant的簡單介紹

boost::variant簡介 boost::Variant 是定義在boost/variant.hpp中的模板類,它的功能類似與union。Variant是一個模板,所以在使用時必須傳入至少一個類型參數。Varian

原创 MonClient中的函數

MonClient類位於mon目錄下,其功能是負責與monitor交互。 //在消息層組件中註冊MonClient實例,指定認證方式,初始化keyring,啓動定時器 int MonClient::init()

原创 MonClient/sub_want&renew_subs

MonClient/sub_want&renew_subs 文件 :MonClient/sub_want&renew_subs 方法: bool sub_want(string what, version_t start, unsig