一些链接

  • Ceph Mailing Lists:https://ceph.com/irc/#mailing-lists
  • Ceph Wiki:http://wiki.ceph.com/
  • Ceph Bug Tracker:http://tracker.ceph.com/projects/ceph

一个工具 -- Rook

Rook 是一款云原生环境下的开源分布式存储编排系统,目前已进入 CNCF 孵化。Rook 的官方网站是 https://rook.io。 Rook 现在处于 alpha 状态,并且最初专注于在 Kubernetes 之上运行 Ceph。

它提供了一种新的部署 Ceph 的方式 -- 通过容器编排。效果大概是这样:

$ kubectl -n rook get pod
NAME                             READY     STATUS    RESTARTS   AGE
rook-api-848df956bf-q6zf2        1/1       Running   0          4m
rook-ceph-mgr0-cfccfd6b8-cpk5p   1/1       Running   0          4m
rook-ceph-mon0-t496l             1/1       Running   0          6m
rook-ceph-mon1-zcn7v             1/1       Running   0          5m
rook-ceph-mon3-h97qx             1/1       Running   0          3m
rook-ceph-osd-557tn              1/1       Running   0          4m
rook-ceph-osd-74frb              1/1       Running   0          4m
rook-ceph-osd-zf7rg              1/1       Running   1          4m
rook-tools                       1/1       Running   0          2m

除了 Ceph 的部署以外,更重大的意义是:Rook+Ceph 可以直接用于 Kubernetes 集群的数据存储。我想可以用于一些像 Prometheus 和 Grafana 等监控系统的持久化存储。

v12.2.10 Luminous 新版本发布

这是 Luminous v12.2.x 长期稳定版本系列的第 10 个错误修复版本。

新闻:Ceph 基金会成立

类似 Linux 基金会。

主要变化/修复

  • 此版本恢复了 v12.2.9(https://tracker.ceph.com/issues/23979)中添加的 PG 硬限制补丁
  • 不再需要 bluestore_cache_* 选项。它们被 osd_memory_target 取代,默认为 4GB

学习笔记

Ceph 存储引擎学习

Ceph 后端支持多种存储引擎,这些存储后端模块是以插件式的方式被管理,目前支持的实现方式包括 Filestore(默认存储后端),KeyValue Store、Memstore、NewStore 和最新的 Bluestore。

FileStore

FileStore 是 Ceph 目前默认的 ObjectStore 后端存储引擎,FileStore 基于 Journal 机制实现了事务处理能力,除了支持事务特性(consistency、atomic 等)以外,Journal 还可将多个小 IO 写合并为顺序写 Journal 来提升系统性能。

FileStore 存在的一些问题:Journal 机制使一次写请求在 OSD 端往下写时,变为两次写操作。这可以通过 SSD 实现 Journal ,可缓解 Journal 和 object 写操作的性能影响;写入的每个 Object 都对应 OSD 本地文件系统的一个物理文件,对于大量小 Object 存储场景来说,OSD 端无法缓存本地所有文件的元数据,这使读写操作可能需要多次本地 IO 操作,系统性能差等。

BlueStore

BlueStore 初衷就是为了减少写放大,并针对 SSD 做优化,直接管理裸盘(物理磁盘设备),从理论上来讲,进一步规避了文件系统部分的开销,通过块设备提升存储性能。

在 Filestore 存储引擎里,对象的表现形式是对应到文件系统里的文件,默认 4MB 大小的文件,但是在 Bluestore 里,已经没有传统的文件系统,而是自己管理裸盘,要求管理对象 Onode 需要常驻内存的数据结构中,持久化的时候会以 KV 的形式存到 RocksDB 里。

总而言之 BlueStore 的性能优于 FileStore,并提供完整的数据检验和和内置压缩能力。FileStore 将数据保存到与 Posix 兼容的文件系统,在 Ceph 后端使用传统的 Linux 文件系统尽管提供了一些好处,但也有代价,如性能、对象属性与磁盘本地文件系统属性匹配存在限制等。

PG 学习

PG 常见异常状态解析:

  • Degraded:降级,副本少于正常副本数目。在发生了一些故障比如 OSD 挂掉之后,Ceph 将这个 OSD 上的所有 PG 标记为 degraded。修复方法是恢复 OSD 或者 OUT OSD 重新分配。
  • Peered:副本数目少于 min_size,卡 IO。
  • remapped+backfilling:PG 处于自我克隆复制的自愈过程。
  • inconsistent:发现其中一个副本跟其他副本不一致。
  • Recover:发现数据不一致后自我修复过程。