Ceph 开发者月报 2019-03

ceph周报logo

本期看点:

 
为多站点数据同步添加 perf counters

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

 

本篇为 2019 年度《Ceph 开发者月报》专栏的第三篇,在《Ceph 开发者月报》中,我们 UMCloud 存储团队将以月度为单位,为大家分享当月 Ceph 社区的有趣的提交和重要的变更,方便大家即刻掌握一手 Ceph 社区开发资料。

每篇将以对象存储、块存储、统一存储层、集群管理、基础库等模块组织,为大家一一介绍。

 

对象存储

为多站点数据同步添加 perf counters

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

为每个 source zone 添加 perf counter, 可以用来测量:

  • object replication 的带宽
  • log replication 的请求频率和平均延迟

 

块存储

librbd: 新增 simple scheduler

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

如果对象还在处理过程中,可以延迟对象的更新。在某些情况下可以将顺序 I/O 聚集到同一个对象上。

 

统一存储层

基于 seastar 重构 OSD 的工作推进

crimson/osd: init PG with more info #27064 (https://github.com/ceph/ceph/pull/27064)

crimson/osd: create msgrs in main.cc #27066 (https://github.com/ceph/ceph/pull/27066)

crimson/osd: report pg_stats to mgr #27065 (https://github.com/ceph/ceph/pull/27065)

crimson/osd: add minimal state machine for PG peering #27071 (https://github.com/ceph/ceph/pull/27071)

crimon/osd: serve read requests #26697 (https://github.com/ceph/ceph/pull/26697)

vstart.sh: add an option to use crimson-osd #27108 (https://github.com/ceph/ceph/pull/27108)

 

集群管理

 1. dashboard 添加存储池 IO 统计
mimic: mgr/dashboard: show I/O stats in Pool list #27053 (https://github.com/ceph/ceph/pull/27053)

2. 通过 required features 过滤 iSCSI target 镜像

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

用户可以根据所选 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 (https://github.com/ceph/ceph/pull/26764)

 

2. 为 RBD 和 RGW 提供一个共享的只读 cache

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

上面的 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 (https://github.com/ceph/ceph/pull/26942)

  • 新增 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 (https://github.com/ceph/ceph/pull/26940)

如果 mon 有更多 CPU、RAM, 则可以给她更高权重.

monitor 现在选举过程:

  1. 首先比较 priority,越低越好
  2. 如果第一步选出多个,比较相应 weight 进行选举;如果没有有效 weight,则在这些目标里随机选择

 

3. crush map 里新增 bucket type: zone

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

crush map 里新增 zone,对应 Kubernetes 内置的节点标签 failure-domain.beta.kubernetes.io/zone。避免使用 rook 时需要定制 crush map 类型.

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

 

 

本月提交情况

image

发表评论

电子邮件地址不会被公开。 必填项已用*标注