ceph分布式儲存 MON模組內部結構分析

2021-09-27 11:16:07 字數 4414 閱讀 3979

monitor 作為ceph的 metada server 維護了集群的資訊,它包括了6個 map,

分別是 monmap,osdmap,pgmap,logmap,authmap,mdsmap。

其中 pgmap 和 osdmap 是最重要的兩張map。

monitor內部使用一套paxos來實現各種資料的更新,所以所有繼承自paxosservice的monitor

實現資料更新時需要通過paxos達成一致後才能進行。

paxosservice的dispatch內部呼叫子類的preprocess_query進行查詢相關操作,如果非查詢類處理,

再呼叫子類的prepare_update介面實現資料的更新,所以子類monitor實現兩個介面來處理相關的業務訊息。

訊息型別

訊息結構體

訊息作用

處理介面

ceph_msg_ping

mping

定期ping monitor確認monitor的存在

handle_ping

ceph_msg_mon_get_map

mmongetmap

認證前獲取monmap

handle_mon_get_map

ceph_msg_mon_metadata

mmonmetadata

處理儲存某個monitor的系統資訊(cpu,記憶體等)

handle_mon_metadata

msg_mon_command

mmoncommand

傳遞命令列訊息給monitor,monitor再分發給相應的***monitor進行處理

handle_command

ceph_msg_mon_get_version

mmongetversion

獲取cluster map的版本資訊

handle_get_version

ceph_msg_mon_subscribe

mmonsubscribe

cluster map訂閱更新

handle_subscribe

msg_route

mroute

路由請求**(待確認)

handle_route

msg_mon_probe

mmonprobe

啟動加入時需要向其他monitor傳送probe請求

handle_probe

msg_mon_sync

mmonsync

同步paxos狀態資料

handle_sync

msg_mon_scrub

mmonscrub

monitordbstore資料一致性檢測

handle_scrub

msg_mon_join

mmonjoin

如果不在monmap中申**入到monmap

monmapmonitor::prepare_join

msg_mon_paxos

mmonpaxos

選舉完成後,leader會觸發paxos::leader_init,狀態置為state_recovering,並發起該訊息的op_collect流程

paxos::dispatch

msg_mon_election

mmonelection

發起選舉流程

elector::dispatch

msg_forward

mforward

將請求**到leader

handle_forward

msg_timecheck

mtimecheck

monitor每隔mon_timecheck_interval檢測所有monitor的系統時間來檢測節點之間的時間差

handle_timecheck

msg_mon_health

mmonhealth

每隔mon_health_data_update_interval檢測存放monitor上面使用的leveldb資料的狀態

healthmonitor::service_dispatch

訊息型別

訊息結構體

訊息作用

處理介面

msg_mon_command

mmoncommand

處理ceph auth ***命令列相關處理

preprocess_command處理ceph auth get/export/list等

prepare_command處理ceph auth import/add/get-or-create/caps等

ceph_msg_auth

mauth

實現認證和授權訊息處理

prep_auth

訊息型別

訊息結構體

訊息作用

處理介面

ceph_msg_mon_get_osdmap

mmongetosdmap

獲取osdmap

preprocess_get_osdmap

msg_osd_mark_me_down

mosdmarkmedown

osd shutdown之前通知monitor傳送該訊息

preprocess_mark_me_down

prepare_mark_me_down

msg_osd_failure

mosdfailure

1. osd每隔osd_tick_interval檢測心跳無響應的osd,並將失敗的osd report給monitor

2. monitor判斷上報次數》=mon_osd_min_down_reports,那麼就將target_osd標識為down

preprocess_failure

msg_osd_boot

mosdboot

新osd加入時傳送請求到monitor,參考新osd的加入流程

preprocess_bootprepare_boot

msg_osd_alive

mosdalive

osd判斷up_thru_wanted決定是否傳送請求給monitor,monitor傳送incremental osdmap返回給osd

preprocess_alive

prepare_alive

msg_osd_pgtemp

mosdpgtemp

primary osd處於backfilling狀態無法提供讀取服務時,會傳送該訊息到monitor,將pg臨時對映到其他的osd上提供去服務

preprocess_pgtemp

prepare_pgtemp

msg_remove_snaps

mremovesnaps

刪除快照資訊

prepare_remove_snaps

ceph_msg_poolop

mpoolop

刪除/建立pool,建立/刪除pool快照等

prepare_pool_op

訊息型別

訊息結構體

訊息作用

處理介面

ceph_msg_statfs

mstatfs

返回檔案系統osd占用的kb容量

handle_statfs

msg_pgstats

mpgstats

查詢或者更新pg狀態

preprocess_pg_stats

prepare_pg_stats

msg_getpoolstats

mgetpoolstats

獲取pool彙總狀態資訊

preprocess_getpoolstats

msg_mon_command

mmoncommand

處理ceph pg ***相關命令列

preprocess_command

訊息型別

訊息結構體

訊息作用

處理介面

msg_mon_join

mmonjoin

更新monmap

preprocess_join

prepare_join

msg_mon_command

mmoncommand

處理ceph mon ***相關命令列

preprocess_command

prepare_command

訊息型別

訊息結構體

訊息作用

處理介面

msg_mds_beacon

msg_mds_offload_targets

訊息型別

訊息結構體

訊息作用

處理介面

msg_log

分布式儲存系統 Ceph

你了解ceph嗎?ceph是一種分布式儲存系統,它可以將多台伺服器組成乙個超大集群,把這些機器中的磁碟資源整合到一塊兒,形成乙個大的資源池 pb級別 然後按需分配給應用使用。那麼你知道ceph的架構嗎?ceph的底層實現是rados,rados是由c 寫的,但是它向外界暴露了呼叫介面,即librad...

分布式儲存系統 Ceph

你了解ceph嗎?ceph是一種分布式儲存系統,它可以將多台伺服器組成乙個超大集群,把這些機器中的磁碟資源整合到一塊兒,形成乙個大的資源池 pb級別 然後按需分配給應用使用。那麼你知道ceph的架構嗎?ceph的底層實現是rados,rados是由c 寫的,但是它向外界暴露了呼叫介面,即librad...

Ceph分布式儲存系統簡介

內容 注 了解ceph的作用與基本概念 ceph是乙個可靠地 自動重均衡 自動恢復的分布式儲存系統,根據場景劃分可以將ceph分為三大塊,分別是物件儲存 塊裝置儲存和檔案系統服務。在虛擬化領域裡,比較常用到的是ceph的塊裝置儲存,比如在openstack專案裡,ceph的塊裝置儲存可以對接open...