Ceph寫流程分析

作者:Summer_ZJU

來源:CSDN

原文:https://blog.csdn.net/xiaqunfeng123/article/details/78574348

版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接棱诱!


一康嘉、rbd到OSD映射關(guān)系

?客戶端使用RBD設(shè)備劳景,使用librbd镀钓、librados庫進(jìn)行訪問管理塊設(shè)備进栽。

?1雷滋、創(chuàng)建一個pool类缤,為這個pool指定pg的數(shù)量臼勉,同時在這個pool中指明保存數(shù)據(jù)的副本數(shù)(通常為3個副本)。

?2餐弱、在這個pool中創(chuàng)建一個rbd設(shè)備rbd0宴霸,那么這個rbd0都會保存三份囱晴,在創(chuàng)建rbd0時必須指定rbd的size,對于這個rbd0的任何操作不能超過這個size瓢谢。

?3畸写、將這個塊設(shè)備進(jìn)行切塊,每個塊的大小默認(rèn)為4M恩闻,并且每個塊都有一個名字艺糜,名字就是object+序號。

?4幢尚、將每個object通過pg進(jìn)行副本位置的分配破停,pg會尋找3個osd,把這個object分別保存在這三個osd上尉剩。最后對于object的存儲就變成了存儲一個文件rbd0.object1.file真慢。數(shù)據(jù)層次映射圖如下:?

數(shù)據(jù)層次映射圖

?經(jīng)過pool,rbd理茎,object黑界、pg的層層映射關(guān)系,在PG這一層中皂林,已經(jīng)知道存儲數(shù)據(jù)的3個OSD所在位置及主從關(guān)系朗鸠。

?客戶端與primay OSD建立SOCKET通信,將要寫入的數(shù)據(jù)傳給primary OSD础倍,由primary OSD再將數(shù)據(jù)發(fā)送給其他replica OSD數(shù)據(jù)節(jié)點烛占。

?讀寫框架圖:

?讀寫框架圖

二、寫請求流程

1沟启、rbd上的處理

?在rbd中一個操作對象為一個image忆家,這個請求經(jīng)過處理拆分成object對象的請求,拆分后交給Objector進(jìn)行處理德迹,找到目標(biāo)osd的集合及主osd芽卿。

?將請求封裝成MOSDOp消息,交由SimpleMessenger處理胳搞,SimpleMessager會嘗試查找/創(chuàng)建一個OSDSession卸例,并且為這個OSDSession創(chuàng)建一個數(shù)據(jù)通道pipe。消息從SimpleMessager收到后會保存到pipe的outq隊列中肌毅。

?pipe與目標(biāo)osd建立Socket通信通道币厕,并有專門的寫線程writer來負(fù)責(zé)socket通信。writer線程同時監(jiān)視這個outq隊列芽腾,當(dāng)隊列中存在消息等待發(fā)送時,會就將消息寫入socket页衙,發(fā)送給目標(biāo)OSD摊滔。

? OSD將數(shù)據(jù)消息處理完成之后阴绢,進(jìn)行回調(diào),反饋執(zhí)行結(jié)果艰躺。

?關(guān)鍵代碼序列圖如下:

Ceph Write時序圖

2呻袭、osd上的處理

?OSD接收到message信息以后,解析并將消息轉(zhuǎn)換成OpRequest腺兴,加入dispatch隊列左电。同時從message中得到pool及PG的信息,將message交由PG進(jìn)行相關(guān)處理页响。此時從OSD處理的message轉(zhuǎn)化為了PG處理的op篓足,添加到osd->op_wq隊列中。PG中創(chuàng)建一個OpContext結(jié)構(gòu)闰蚕,接管message中的所有ops的操作栈拖。

?解析出OpRequest中的所有op與data,用Transaction結(jié)構(gòu)進(jìn)行管理没陡,即將ops與Transaction綁定涩哟,將操作和數(shù)據(jù)打包成事務(wù),并發(fā)送給其他副本盼玄,同時管理自己和其他副本的數(shù)據(jù)處理統(tǒng)計贴彼,創(chuàng)建repop所有的applied與commit的管理。

?提交事務(wù)后埃儿,交由filestore進(jìn)行處理器仗。

?如果數(shù)據(jù)處理完成了,使用eval_repop()進(jìn)行收尾的工作蝌箍,將結(jié)果回調(diào)給客戶端青灼。

?關(guān)鍵代碼序列圖如下:

OSD時序圖

3、filestore上的處理

?當(dāng)數(shù)據(jù)進(jìn)行寫入的時候需要寫到j(luò)ournal中一份妓盲,當(dāng)data數(shù)據(jù)失敗的時候可以從journal中進(jìn)行恢復(fù)杂拨。從_op_journal_transactions()開始激發(fā)寫入日志的操作,回調(diào)函數(shù)C_JournaledAhead的會在日志完成之后進(jìn)行回調(diào)處理悯衬,將data寫入磁盤弹沽。

?將日志保存完成的回調(diào)ondisk交給ondisk_finisher,ondisk注冊回調(diào)為C_OSD_OnOpApplied筋粗,在后續(xù)finisher線程中處理策橘。在該函數(shù)中,循環(huán)處理需要回調(diào)的請求娜亿,回復(fù)剛開始接收到請求的MOSDOp的操作丽已,將請求發(fā)還給客戶端。

?寫完data的回調(diào)函數(shù)注冊的為C_OSD_OnOpCommit买决,該函數(shù)處理并回復(fù)OSD一些狀態(tài)的邏輯沛婴。

?關(guān)鍵代碼序列圖如下:

File Wtite時序圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吼畏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嘁灯,更是在濱河造成了極大的恐慌泻蚊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丑婿,死亡現(xiàn)場離奇詭異性雄,居然都是意外死亡,警方通過查閱死者的電腦和手機羹奉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門秒旋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尘奏,你說我怎么就攤上這事滩褥。” “怎么了炫加?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵瑰煎,是天一觀的道長。 經(jīng)常有香客問我俗孝,道長酒甸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任赋铝,我火速辦了婚禮插勤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘革骨。我一直安慰自己农尖,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布良哲。 她就那樣靜靜地躺著盛卡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪筑凫。 梳的紋絲不亂的頭發(fā)上滑沧,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音巍实,去河邊找鬼滓技。 笑死,一個胖子當(dāng)著我的面吹牛棚潦,可吹牛的內(nèi)容都是我干的令漂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼洗显!你這毒婦竟也來了外潜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤挠唆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嘱吗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玄组,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年谒麦,在試婚紗的時候發(fā)現(xiàn)自己被綠了俄讹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡绕德,死狀恐怖患膛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耻蛇,我是刑警寧澤踪蹬,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站臣咖,受9級特大地震影響跃捣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜夺蛇,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一疚漆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刁赦,春花似錦娶聘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宦焦,卻和暖如春发钝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背波闹。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工酝豪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人精堕。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓孵淘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親歹篓。 傳聞我的和親對象是個殘疾皇子瘫证,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容