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...