Ceph讀寫流程分析


http://www.quts.me/ceph-readwrite/

初步的Ceph讀寫流程分析。更詳細的IO路徑整理好了放上來。

Ceph OSD層的數據層級

1.OSD

主要實現 OSD,OSDService ,每個數據節點的守護進程

2.PG

主要實現 PG,ReplicatedPG,ReplicatedBackend,Object的邏輯組織

3.ObjectStore

主要實現 FileStore,KeyValueStore,MemStore,直接操作數據

OSD層和PG層的讀寫

OSD和ObjectStore層,都有一個線程池(tp)和消息隊列(wq),每個線程會從不同消息隊列中取出消息然后執行。

  • 下圖是OSD的消息入隊路徑,紅色為主要路徑

OSD-in

  • 消息入隊后,線程池OSDService->op_tp(osd->osd_op_tp)從隊列中拿出消息開始工作。詳細流程見下圖

OSD-out

圖中,紅色方框都是主OSD的操作,藍色方框是從OSD的操作。

首先會有主OSD消息,經過一定檢查后,執行到右半部分,提交事務前,先將從OSD的op添加到Apply和Commit的等待隊列,然后發消息給從PG的OSD,最后提交自己的操作到ObjectStore。

從OSD收到消息后,會注冊Apply和Commit事件(在完成事務后執行),然后提交事務到ObjectStore。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM