对象存储
块存储
统一存储层
集群管理
工具库
本月提交情况
本篇为 2018 年度《Ceph 开发者月报》专栏的第八篇,在《Ceph 开发者月报》中,我们 UMCloud 存储团队将以月度为单位,为大家分享当月 Ceph 社区的有趣的提交和重要的变更,方便大家即刻掌握一手 Ceph 社区开发资料。
每篇将以对象存储、块存储、统一存储层、集群管理、基础库等模块组织,为大家一一介绍。
本期看点:
mgr 引入编排模块,这个模块所有的功能直接使用k8s的命令都可以完成,所以mgr的编排模块对于通过k8s来管理Ceph集群这件事来说就是由把用户接口放回Ceph中了,预期之后rook就不需要再加rookctl之类的用户接口了。
对象存储
cors 规则新增数量限制
rgw: cors rules num limit (https://github.com/ceph/ceph/pull/23434)
为 cors 规则增加了数量限制,默认情况下,和 AWS S3 保持一致,最多 100 条。
块存储
迁移存储卷镜像 downtime 最小化
librbd: support migrating images with minimal downtime
(https://github.com/ceph/ceph/pull/15831)
社区当前针对块存储的工作重心之一是实现能够在客户端用户无感知的情况下,对底层的存储卷镜像进行迁移。上面的提交是社区第一阶段的工作,实现了在迁移存储卷镜像的处理过程中,将无法对外提供服务的时间最小化。
统一存储层
允许对对象的 data_digest 进行修复
osd: Allow repair of an object with a bad data_digest in object_info on all replicas (https://github.com/ceph/ceph/pull/23217)
在上面的提交中,社区实现了当一个对象的所有副本的 data_digest 信息有问题时,支持对其进行修复。
废弃 osd rm 并为删除 osd 引入安全检查机制
mon,mgr: add safety check to ‘osd destroy’; deprecate ‘osd rm’ (https://github.com/ceph/ceph/pull/22717)
在上面的提交中,社区废弃了
ceph osd rm
命令,取而代之,可以使用
ceph osd destroy
和
ceph osd purge
两个命令来对 osd 进行删除。同时,在上面的提交中,社区为删除 osd 操作新增了安全检查机制,可以在进行删除 osd 操作之前执行
ceph osd safe-to-destroy
命令来对该操作的安全性进行检查。
支持从网络层面对 client 用户的访问权限进行限制
mon: allow mon cap to be limited to a CIDR network (https://github.com/ceph/ceph/pull/22879)
osd 容量信息细化统计
osd: break down osd usage into data, omap, metadata buckets (https://github.com/ceph/ceph/pull/18096)
在上面的提交中,社区对 OSD 的使用容量信息进行了细化统计处理,支持分别统计显示 data, omap, metadata 的容量使用信息。
集群管理
mgr 新增 devicehealth 插件
mgr/devicehealth: respond to imminent device failures (https://github.com/ceph/ceph/pull/22692)
在上面的提交中,社区为 mgr 实现了 devicehealth 插件,从而支持:
– 当检测到有设备 (通常指磁盘) 即将发生故障时,能够提前抛出健康告警;
– 当检测到有设备 (通常指磁盘) 即将发生故障时,能够自动将该磁盘对应的 OSD 标记为 out,并对其中所存储的数据进行迁移。
通过执行如下命令来启用 devicehealth 模块:
$ ceph mgr module enable devicehealth
默认情况下,该模块是处于启用状态。对设备健康数据的采集包括如下几种模式:
- 采集所有设备的健康数据指标
$ ceph device scrape-health-metrics
- 采集某一特定设备的健康数据指标
$ ceph device scrape-health-metrics
- 采集某一特定 daemon 对应的所有设备的健康数据指标
$ ceph device scrape-daemon-health-metrics
默认情况下,devicehealth 模块会周期性地对系统中的所有设备进行健康检查。可以通过
mgr/devicehealth/enable_monitoring
选项来禁用这一处理。另外,可以通过
mgr/devicehealth/warn_threshold
选项来控制 devicehealth 模块抛出健康告警到设备真正发生故障之间的窗口期的长度。
可以通过
mgr/devicehealth/self_heal
选项的启停来控制 devicehealth 模块是否会自动将即将发生故障的 osd 标记为 out,并进行相关数据的迁移操作。该选项默认为启用状态。在该选项的基础上,还可以通过
mgr/devicehealth/mark_out_threshold
选项来控制 devicehealth 模块自动将一个 osd 标记为 out 到该设备真正发生故障之间的窗口期的长度。
mgr 新增 orchestrator 相关的命令行工具和 rook 模块
mgr: orchestrator interface and experimental Rook module (https://github.com/ceph/ceph/pull/23412)
在上面的提交中,社区为 mgr 新增了 orchestrator 相关的命令行工具和 rook 模块。
支持通过 Restful API 来直接从后端修改 dashboard 的配置
mgr/dashboard: Add backend support for changing dashboard configuration settings via the REST API (https://github.com/ceph/ceph/pull/22457)
工具库
新增 ceph-crash 服务
add ceph-crash service (https://github.com/ceph/ceph/pull/23240)
在上面的提交中,社区为 Ceph 新增了 ceph-crash 服务,与 mgr 的 crash 插件结合,对 crash dumps 信息进行监控和分析处理。