真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Ceph實現(xiàn)讀寫流程的示例分析

這篇文章主要介紹了Ceph實現(xiàn)讀寫流程的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、銀州網(wǎng)站維護、網(wǎng)站推廣。

一、Osd中的模塊

消息封裝

在OSD上發(fā)送和接收信息。有兩類:

1.cluster_messenger -與其它OSDs和monitors溝通
2.client_messenger -與客戶端溝通

消息調(diào)度

Dispatcher類,主要負責消息分類

工作隊列

1.       OpWQ: 處理ops(從客戶端)和sub ops(從其他的OSD)。運行在op_tp線程池。

2.       PeeringWQ: 處理peering任務(wù),運行在op_tp線程池。

3.       CommandWQ:處理cmd命令,運行在command_tp。

4.       RecoveryWQ: 數(shù)據(jù)修復,運行在recovery_tp。

5.       SnapTrimWQ: 快照相關(guān),運行在disk_tp。

6.       ScrubWQ: scrub,運行在disk_tp。

7.       ScrubFinalizeWQ: scrub,運行在disk_tp。

8.       RepScrubWQ: scrub,運行在disk_tp。

9.       RemoveWQ: 刪除舊的pg目錄。運行在disk_tp。

 

線程池

有4種 OSD線程池:

1.       op_tp: 處理ops和sub ops

2.       recovery_tp:處理修復任務(wù)

3.       disk_tp: 處理磁盤密集型任務(wù)

4.       command_tp: 處理命令

二、Ceph讀流程

Ceph實現(xiàn)讀寫流程的示例分析
 

注:索引的格式,查找更新索引、如何持久化的,還沒搞清楚。

沒有所謂索引,一切皆規(guī)則:

每個object的文件名格式為:

objectname_key_head(snap_num)_hash_namespace_poolid

?  objectname:對象名

?  key、namespace:都是客戶端指定,做名稱空間細分用。當塊兒設(shè)備使用時,一般都置為空

?  head(snap_num):snapshot版本

?  hash:由objectname計算得到,u_int32_t類型,這里轉(zhuǎn)換為16進制字符打印,如3AF0B980

?  poolid:pool的id

目錄結(jié)構(gòu):

數(shù)據(jù)目錄/PG名稱/子目錄/object文件名

舉例說明:

/data09/ceph/osd2/current/0.0_head/DIR_0/DIR_8/DIR_9/10000007af4.00000000__head_3AF0B980__0

其中,子目錄是根據(jù)object文件名中hash字段的字符反向排列生成。當一個目錄中的文件個數(shù)大于配置值(merge_threshold * 16 * split_multiplier)時,會建子目錄,對文件進行歸檔。

ReplicatedPG.h

ReplicatedPG.cc

 int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops)函數(shù)中的

 Case CEPH_OSD_OP_READ分支                                       

 r = osd->store->fiemap(coll, soid, op.extent.offset, op.extent.length, bl);

 r = pgbackend->objects_read_sync(                  

           soid, miter->first, miter->second, &tmpbl);

 pgbackend->objects_read_sync轉(zhuǎn)int ReplicatedBackend::objects_read_sync調(diào)用 store->read(coll, hoid, off, len, *bl) ,來自O(shè)bjectStore::read

三、Ceph寫流程

階段1:主節(jié)點發(fā)請求

Ceph實現(xiàn)讀寫流程的示例分析 

階段2:從節(jié)點處理請求

Ceph實現(xiàn)讀寫流程的示例分析
 

osd->store->queue_transactions(&osr, rm->tls, onapply, oncommit);

這里注冊的兩個回調(diào):

 Context *oncommit = new C_OSD_RepModifyCommit(rm);  當日志寫入磁盤后被調(diào)用

 Context *onapply = new C_OSD_RepModifyApply(rm);    當該操作被處理后被調(diào)用

分別向主節(jié)點做ACK和ON_DISK兩種回應(yīng)。

注:transaction封裝,journal log寫入細節(jié),對象寫入細節(jié)還沒來得及看。

階段3:主節(jié)點接收從節(jié)點回應(yīng),并回應(yīng)客戶端

Ceph實現(xiàn)讀寫流程的示例分析

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Ceph實現(xiàn)讀寫流程的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!


名稱欄目:Ceph實現(xiàn)讀寫流程的示例分析
標題鏈接:http://weahome.cn/article/gihooi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部