本篇為 2019 年度《Ceph 開發者月報》專欄的第三篇,在《Ceph 開發者月報》中,我們 UMCloud 存儲團隊將以月度為單位,為大家分享當月 Ceph 社區的有趣的提交和重要的變更,方便大家即刻掌握一手 Ceph 社區開發資料。

每篇將以對象存儲、塊存儲、統一存儲層、集群管理、基礎庫等模塊組織,為大家一一介紹。

本期看點:

為多站點數據同步添加 perf counters

rgw multisite: add perf counters to data sync #26722 (github.com/ceph/ceph/pu)

對象存儲

為多站點數據同步添加 perf counters

rgw multisite: add perf counters to data sync #26722 (github.com/ceph/ceph/pu)

為每個 source zone 添加 perf counter, 可以用來測量:

  • object replication 的帶寬
  • log replication 的請求頻率和平均延遲

塊存儲

librbd: 新增 simple scheduler

librbd: simple scheduler plugin for object dispatcher layer #26675 (github.com/ceph/ceph/pu)

如果對象還在處理過程中,可以延遲對象的更新。在某些情況下可以將順序 I/O 聚集到同一個對象上。

統一存儲層

基於 seastar 重構 OSD 的工作推進

  • crimson/osd: init PG with more info #27064 (github.com/ceph/ceph/pu)
  • crimson/osd: create msgrs in main.cc #27066 (github.com/ceph/ceph/pu)
  • crimson/osd: report pg_stats to mgr #27065 (github.com/ceph/ceph/pu)
  • crimson/osd: add minimal state machine for PG peering #27071 (github.com/ceph/ceph/pu)
  • crimon/osd: serve read requests #26697 (github.com/ceph/ceph/pu)
  • vstart.sh: add an option to use crimson-osd #27108 (github.com/ceph/ceph/pu)

集群管理

1. dashboard 添加存儲池 IO 統計

mimic: mgr/dashboard: show I/O stats in Pool list #27053 (github.com/ceph/ceph/pu)

2. 通過 required features 過濾 iSCSI target 鏡像

mgr/dashboard: Validate iSCSI images features #27135 (github.com/ceph/ceph/pu)

用戶可以根據所選 backstore 的 required_rbd_features/supported_rbd_features 過濾掉不可用的 RBD image.

例如,ceph-iscsi/tcmu-runner 導出 iSCSI target 需要鏡像有 exclusive-lock feature,沒有開啟該 feature 的 RBD 鏡像都會被過濾掉 。

基礎工具集

1. 支持通過 crush class 或 crush bucket-name 篩選 ceph osd df 結果

mgr: 『osd df』 by specified class or (crush) name #26764 (github.com/ceph/ceph/pu)

2. 為 RBD 和 RGW 提供一個共享的只讀 cache

tools: adding ceph level immutable obj cache daemon #25545 (github.com/ceph/ceph/pu)

上面的 PR 實現了一個新的守護進程,用於緩存 Ceph 集群的對象。基於 promote 請求和讀操作,該守護進程會將對象 promote 到本地文件夾進行緩存。

一些細節:

  • 可以為 RBD 和 RGW 提供只讀緩存,甚至支持緩存對象的一部分內容
  • 使用 domain socket 用於 IPC,效率更高
  • 用 LRU 作為緩存的 promotion/demotion 機制
  • 可以通過 systemd 啟停該後台程序

一些配置:

# 緩存目錄配置,可以配置在 SSD 上
immutable_object_cache_path = /mnt/cache
# 緩存大小
immutable_object_cache_max_size = 4G
# 水位標記,用於 LRU 驅逐舊數據
immutable_object_cache_watermark = 0.1
# 仍在發送過程中或是客戶端處理過程中的消息數量
immutable_object_cache_max_inflight_ops = 128

基礎庫

1. PG auto repair 的改進

Feature: Improvements to auto repair #26942 (github.com/ceph/ceph/pu)

  • 新增 failed_repair 狀態。如果 PG repair 無法修復所有 scrub errors 則進入該狀態
  • 如果 regular scrub 出現 scrub errors, 觸發 deep scrub 和 auto repair

2. 新增 monitor weight 配置,用於 monitor 選舉

mon/MonClient: weight-based mon selection #26940 (github.com/ceph/ceph/pu)

如果 mon 有更多 CPU、RAM, 則可以給她更高權重.

monitor 現在選舉過程:

  1. 首先比較 priority,越低越好
  2. 如果第一步選出多個,比較相應 weight 進行選舉;如果沒有有效 weight,則在這些目標里隨機選擇

3. crush map 里新增 bucket type: zone

osd/OSDMap: add zone to default crush map #27070 (github.com/ceph/ceph/pu)

crush map 里新增 zone,對應 Kubernetes 內置的節點標籤 failure-domain.beta.kubernetes.io/zone。避免使用 rook 時需要定製 crush map 類型.

現在的 crush hierarchy: root -> region -> zone -> …

本月提交情況


推薦閱讀:
相关文章