v12.1.2 Luminous RC 发布

TheAnalyst

这是 Luminous 的第三个候选版本,它是下一个长期稳定版本。

Ceph Luminous (v12.2.0) 将成为下一个长期稳定版本系列的基础。自 Kraken (v11.2.z) 和 Jewel (v10.2.z) 以来,已经发生了重大变化,并且升级过程并非易事。请仔细阅读这些发行说明。

Kraken 相比的主要变化

  • 常规:

  • RADOS:

    • BlueStore:

      • ceph-osd 的新的 BlueStore 后端现在稳定,并且是新创建的 OSD 的新默认设置。BlueStore 通过直接管理物理 HDD 或 SSD 而无需使用 XFS 等中间文件系统来管理每个 OSD 存储的数据。这提供了更高的性能和功能。
      • BlueStore 支持存储的所有数据完整数据和元数据校验和
      • BlueStore 支持使用 zlib、snappy 或 LZ4 进行内联压缩。(Ceph 也支持 zstd 用于 RGW 压缩,但出于性能原因不建议将其用于 BlueStore。) FIXME DOCS
    • 纠删码池现在完全支持覆盖写入,允许它们与 RBD 和 CephFS 一起使用。

    • 配置选项 “osd pool erasure code stripe width” 已被 “osd pool erasure code stripe unit” 取代,并具有被纠删码配置文件设置 “stripe_unit” 覆盖的能力。有关更多详细信息,请参阅文档中的 “Erasure Code Profiles”。

    • rbd 和 cephfs 可以将纠删码与 bluestore 一起使用。这可以通过将池的 'allow_ec_overwrites' 设置为 'true' 来启用。由于这依赖于 bluestore 的校验和来进行深度擦洗,因此不允许在存储在 filestore 上的池上启用此功能。

    • “rados df” 的 JSON 输出现在将数字值打印为数字而不是字符串。

    • mon_osd_max_op_age 选项已重命名为 mon_osd_warn_op_age(默认值:32 秒),以表明我们在此年龄生成警告。还有一个新的 mon_osd_err_op_age_ratio,表示为 mon_osd_warn_op_age 的倍数(默认值:128,大约 60 分钟)来控制何时生成错误。

    • 单个 RADOS 对象的默认最大大小已从 100GB 减少到 128MB。100GB 的限制在实践中完全不切实际,而 128MB 的限制略高,但尚属合理。如果您的应用程序直接写入 librados 并使用大于 128MB 的对象,则可能需要调整 osd_max_object_size。

    • “rados ls” 和 librados 对象列表操作的语义一直有点令人困惑,因为“白对象”(逻辑上不存在,如果您尝试访问它们将返回 ENOENT)包含在结果中。以前,白对象只出现在缓存分层池中。在 luminous 中,逻辑上已删除但已快照的对象现在会导致白对象,因此它们将出现在 'rados ls' 结果中,尽管尝试读取此类对象将导致 ENOENT。在这种情况下,可以使用 'rados listsnaps' 操作来枚举存在哪些快照。

      这可能看起来有点奇怪,但比拥有一个已删除但已快照的对象完全隐藏且无法从 librados 的对象枚举能力中看到的情况不那么奇怪。Ceph 的未来版本可能会包含一个替代对象枚举接口,使其更自然和高效地枚举所有对象及其快照和克隆元数据。

    • ceph-mgr:

      • 现在有一个新的守护进程,ceph-mgr,它是任何 Ceph 部署的必需部分。虽然在 ceph-mgr 停止运行时 IO 可以继续,但指标将不会刷新,并且某些与指标相关的调用(例如 ceph df)可能会被阻塞。我们建议部署多个 ceph-mgr 实例以提高可靠性。请参阅下面的 升级 说明。

      • ceph-mgr 守护程序包括一个基于 REST 的管理 API。该 API 仍处于试验阶段且功能有限,但将成为未来 Ceph API 管理的基础。

      • ceph-mgr 还包括一个 Prometheus 导出器插件,可以向 Prometheus 提供 Ceph perfcounters。

      • status ceph-mgr 模块默认启用,最初提供两个命令:ceph tell mgr osd status 和 ceph tell mgr fs status。这些是高级的彩色视图,以补充现有的 CLI。

    • 集群的整体可扩展性得到了提高。我们已经成功测试了具有多达 10,000 个 OSD 的集群。

    • 每个 OSD 现在都可以关联一个设备类(例如 hdd 或 ssd),允许 CRUSH 规则轻松地将数据映射到系统中的设备子集。通常不需要手动编写 CRUSH 规则或手动编辑 CRUSH。

    • 您现在可以优化 CRUSH 权重以在 OSD 之间保持近乎完美的数据分布。FIXME DOCS

    • 还有一个新的 upmap 异常机制,允许移动单个 PG 以实现完美分布(这需要 luminous 客户端)。

    • 每个 OSD 现在根据其底层设备是 HDD 还是 SSD 调整其默认配置。通常不需要手动调整。

    • 原型 mClock QoS 队列算法现已可用。

    • 现在有一个回退机制,可以防止 OSD 被无法当前处理 IO 的对象或 PG 的请求过载。

    • 有一个简化且更健壮的 OSD 替换过程。

    • 您可以使用 ceph features 查询所有连接的守护程序和客户端支持的功能和(表观)版本。

    • 您可以配置要允许连接到集群的最旧的 Ceph 客户端版本,通过 ceph osd set-require-min-compat-client,并且 Ceph 将阻止您启用将破坏与这些客户端兼容性的功能。

    • 几个睡眠设置,包括 osd_recovery_sleep、osd_snap_trim_sleep 和 osd_scrub_sleep 已经重新实现以高效工作。(这些在某些情况下用于解决限制后台工作的问题。)

    • 不推荐使用的 'crush_ruleset' 属性最终被删除;请改用 'crush_rule' 进行 'osd pool get ...' 和 'osd pool set ..' 命令。

    • 选项 'osd pool default crush replicated ruleset' 已被删除,取而代之的是 'osd pool default crush rule' 选项。默认值为 -1,这意味着 mon 将为复制池选择 CRUSH map 中的第一个类型复制规则。纠删码池如果未在池创建时指定规则,则会自动为它们创建规则。
  • RGW:

    • RGW 元数据搜索由 ElasticSearch 提供支持,现在支持通过 RGW 本身服务于最终用户请求,并且还支持自定义元数据字段。创建了一种查询语言和一组 RESTful API,以便用户能够按其元数据搜索对象。还添加了允许控制自定义元数据字段的新 API。
    • RGW 现在支持动态存储桶索引分片。随着存储桶中对象数量的增加,RGW 将自动响应地重新分片存储桶索引。不需要用户干预或存储桶大小容量规划。
    • RGW 引入了上传对象的服务器端加密,具有三种密钥管理选项:自动加密(仅推荐用于测试设置)、类似于 Amazon SSE-C 规范的客户提供密钥,以及通过使用外部密钥管理服务 (Openstack Barbican) 类似于 Amazon SSE-KMS 规范。
    • RGW 现在具有初步的类似 AWS 的存储桶策略 API 支持。目前,策略是表达一系列新授权概念的一种方式。未来,它将成为 STS 和组策略等附加授权功能的基础。
    • RGW 已经通过使用 rados 命名空间合并了几个元数据索引池。
  • RBD:

    • RBD 现在完全稳定地支持纠删码池,通过 rbd create 的新 --data-pool 选项。
    • RBD 镜像的 rbd-mirror 守护进程现在是高可用的。我们建议部署多个 rbd-mirror 实例以提高可靠性。
    • 默认的“rbd”池不再在集群创建期间自动创建。此外,在未指定池时 RBD CLI 使用的默认池的名称可以通过新的 rbd default pool = 覆盖。配置选项。
    • 通过新的 rbd trash CLI 命令提供延迟图像删除的初始支持。即使是那些被克隆主动使用的图像,也可以移动到回收站并在以后删除。
    • 新的池级别 rbd mirror pool promote 和 rbd mirror pool demote 命令,用于批量提升/降级池内的所有镜像图像。
    • 镜像现在可以选择性地支持通过 rbd mirroring replay delay = 可配置的复制延迟配置选项。
    • 改进了启用对象映射功能时的丢弃处理。
    • rbd CLI import 和 copy 命令现在检测到稀疏并保留稀疏区域。
    • 图像和快照现在将包含创建时间戳。
  • CephFS:

    • 多个活动 MDS 守护进程现在被认为是稳定的。可以在活动的 CephFS 文件系统上向上或向下调整活动 MDS 服务器的数量。
    • CephFS 目录碎片化 现在稳定,并在新的文件系统上默认启用。要在现有的文件系统上启用它,请使用“ceph fs set <fs_name> allow_dirfrags”。大型或非常繁忙的目录会自动分片并(可能)分布到多个 MDS 守护进程上。
    • 可以显式地将目录子树固定到特定的 MDS 守护进程,在自动负载平衡不理想或无效的情况下。
  • 杂项:

    • 发布包现在正在为Debian Stretch 构建。请注意,QA 仅限于 CentOS 和 Ubuntu(xenial 和 trusty)。我们构建的发行版包括
      • CentOS 7 (x86_64 和 aarch64)
      • Debian 8 Jessie (x86_64)
      • Debian 9 Stretch (x86_64)
      • Ubuntu 16.04 Xenial (x86_64 和 aarch64)
      • Ubuntu 14.04 Trusty (x86_64)
    • CLI 更改:
      • ceph -s 或 ceph status 命令具有全新的外观。
      • ceph mgr metadata 将转储与每个 mgr 守护进程关联的元数据。
      • ceph versions 或 ceph {osd,mds,mon,mgr} versions 总结了正在运行的守护进程的版本。
      • ceph {osd,mds,mon,mgr} count-metadata类似地,列出了可以通过 ceph {osd,mds,mon,mgr} metadata 命令看到的任何其他守护进程元数据。
      • ceph features 总结了连接的客户端和守护进程的功能和版本。
      • ceph osd require-osd-release取代了旧的 require_RELEASE_osds 标志。
      • ceph osd pg-upmap、ceph osd rm-pg-upmap、ceph osd pg-upmap-items、ceph osd rm-pg-upmap-items 可以显式管理 upmap 项(请参阅 使用 pg-upmap)。
      • ceph osd getcrushmap 返回 crush map 版本号到 stderr,ceph osd setcrushmap [version] 仅当版本匹配时才会注入更新的 crush map。这允许 crush map 在离线更新后重新注入到集群中,而无需担心破坏正在进行的变化(例如,由新添加的 osd 或其他管理员的更改)。
      • ceph osd create 已被 ceph osd new 替换。这应该被用户界面工具(例如 ceph-disk)隐藏。
      • ceph osd destroy 将标记一个 OSD 已销毁,并删除其 cephx 和 lockbox 密钥。但是,OSD id 和 CRUSH map 条目将保留在原位,允许 id 被替换设备重用,并且数据重新平衡最少。
      • ceph osd purge 将删除集群中 OSD 的所有痕迹,包括其 cephx 加密密钥、dm-crypt lockbox 密钥、OSD id 和 crush map 条目。
      • ceph osd ls-tree将输出给定 CRUSH 名称(如主机或机架名称)下的 OSD id 列表。这对于应用于整个子树的更改很有用。例如,ceph osd down `ceph osd ls-tree rack1`。
      • ceph osd {add,rm}-{noout,noin,nodown,noup} 允许将 noout、noin、nodown 和 noup 标志应用于特定的 OSD。
      • ceph log last [n] 将输出集群日志的最后 n 行。
      • ceph mgr dump 将转储 MgrMap,包括当前活动的 ceph-mgr 守护进程和任何待机守护进程。
      • ceph mgr module ls 将列出活动的 ceph-mgr 模块。
      • ceph mgr module {enable,disable}将启用或禁用指定的 mgr 模块。该模块必须存在于 ceph-mgr 正在运行的主机上配置的 mgr_module_path 中。
      • ceph osd crush swap-bucket将交换层次结构中的两个 CRUSH 存储桶,同时保留存储桶的 ID。这允许替换整个设备子树(例如,用新镜像的 BlueStore OSD 替换整个主机上的 FileStore OSD),而不会破坏相邻设备上的数据分布。
      • ceph osd set-require-min-compat-client配置集群需要支持的最旧的客户端版本。如果更改此设置会违反此设置,其他更改(如 CRUSH 可调参数)将失败。如果当前连接到集群的客户端版本早于指定的版本,则更改此设置也会失败。
      • ceph config-key dump 转储 config-key 条目及其内容。(现有的 ceph config-key list 仅转储密钥名称,而不是值。)
      • ceph config-key list 已弃用,取而代之的是 ceph config-key ls。
      • ceph auth list 已弃用,取而代之的是 ceph auth ls。
      • ceph osd crush rule list 已弃用,取而代之的是 ceph osd crush rule ls。
      • ceph osd set-{full,nearfull,backfillfull}-ratio 设置集群范围内的各种完整阈值比率(当集群拒绝 IO 时,当集群警告即将达到完整时,当 OSD 将延迟将 PG 重新平衡到自身时,分别)。
      • ceph osd reweightn 将指定多个 OSD 的 reweight 值在一个命令中。这等效于一系列 ceph osd reweight 命令。
      • ceph osd crush class {rm,ls,ls-osd} 管理新的 CRUSH 设备类功能。ceph crush set-device-class[...] 将为特定设备设置类。请注意,如果您指定一个不存在的类,它将自动创建。ceph crush rm-device-class[...] 将改为删除特定设备的类。如果一个类不再包含设备,它将自动销毁。
      • ceph osd crush rule create-replicated 替换了旧的 ceph osd crush rule create-simple 命令以创建复制池的 CRUSH 规则。值得注意的是,它接受一个用于目标设备类的 class 参数(例如,ssd 或 hdd)。
      • ceph mon feature ls 将列出 MonMap 中记录的监视器功能。ceph mon feature set 将设置一个可选功能(目前尚不存在这些功能)。
      • ceph tellhelp 现在将返回用法摘要。

与 Jewel 的主要变更

  • RADOS:
    • 我们现在默认使用 AsyncMessenger(ms 类型 = async)而不是旧的 SimpleMessenger。  最明显的区别是,我们现在使用固定大小的线程池进行网络连接(而不是 SimpleMessenger 的每个套接字两个线程)。
    • 现在可以几乎立即检测到一些 OSD 故障,而之前必须等待心跳超时(默认为 20 秒)过期。  这可以防止 IO 在主机仍然启动但 ceph-osd 进程不再运行时被阻止很长时间。
    • 编码的 OSDMap 大小已减小。
    • OSD 现在在恢复或重新平衡进行时会停止擦除。
  • RGW:
    • RGW 现在支持 S3 多部分对象 copy-part API。
    • 现在可以离线重新分片现有的存储桶。离线存储桶重新分片当前需要停止特定存储桶的所有 IO(尤其是写入)。(有关自动在线重新分片,请参见 Luminous 上面的新功能。)
    • RGW 现在支持对象的数据压缩。
    • Civetweb 版本已升级到 1.8
    • 现在支持 Swift 静态网站 API(之前已添加 S3 支持)。
    • 已添加 S3 存储桶生命周期 API。请注意,目前它仅支持对象过期。
    • 已为 LDAP 身份验证实现添加了自定义搜索过滤器支持。
    • 已为 RGW NFS 网关添加了 NFS 版本 3 的支持。
    • 已为 librgw 创建了一个 Python 绑定。
  • RBD:
    • rbd-mirror 守护进程现在支持将动态图像功能更新和从主图像到非主图像的图像元数据键/值对复制。
    • 可以可选地将图像快照的数量限制为可配置的最大值。
    • rbd Python API 现在支持异步 IO 操作。
  • CephFS:
    • libcephfs 函数定义已更改以启用正确的 uid/gid 控制。库版本已增加以反映接口更改。
    • 待机重放 MDS 守护进程现在在执行删除操作的工作负载上消耗更少的内存。
    • Scrub 现在修复回溯,并用发现的错误填充 damage ls。
    • cephfs-data-scan 的新 pg_files 子命令可以识别受损坏或丢失的 RADOS PG 影响的文件。
    • 已修复错误的“未能响应缓存压力”警告。

从 Jewel 或 Kraken 升级

  1. 确保已启用 sortbitwise 标志

    # ceph osd set sortbitwise

  2. 确保您的集群稳定且健康(没有 down 或 recovering 的 OSD)。(可选,但推荐。)

  3. 在升级监视器时,请勿创建任何新的 erasure-code 池。

  4. 可以使用 ceph versions 命令监控每个阶段的升级进度,该命令将告诉您每个类型守护进程正在运行的 ceph 版本。

  5. 在升级期间设置 noout 标志。(可选但推荐。)

    # ceph osd set noout

  6. 通过安装新软件包并重新启动监视器守护进程来升级监视器。请注意,与之前的版本不同,ceph-mon 守护进程必须首先升级

    # systemctl restart ceph-mon.target

    一旦所有监视器都启动,通过查找 mon map 中的 luminous feature string 来验证监视器升级是否完成。例如

    # ceph mon feature ls

    应该在 current monmap (epoch NNN) persistent: [kraken,luminous] required: [kraken,luminous] 下包含 luminous

    在持久功能中

  7. 添加或重新启动 ceph-mgr 守护进程。如果您是从 kraken 升级,请升级软件包并使用以下命令重新启动 ceph-mgr 守护进程:

    # systemctl restart ceph-mgr.target

    如果您是从 kraken 升级,您可能已经部署了 ceph-mgr 守护进程。如果没有,或者如果您是从 jewel 升级,可以使用 ceph-deploy 或 ceph-ansible 等工具部署新的守护进程。例如

    # ceph-deploy mgr create HOST

    通过检查 ceph -s 来验证 ceph-mgr 守护进程是否正在运行

    # ceph -s

    ... services: mon: 3 daemons, quorum foo,bar,baz mgr: foo(active), standbys: bar, baz ...

  8. 通过安装新软件包并在所有主机上重新启动 ceph-osd 守护进程来升级所有 OSD

    # systemctl restart ceph-osd.target

    可以使用新的 ceph versions 或 ceph osd versions 命令来监控 OSD 升级进度

    # ceph osd versions { "ceph version 12.2.0 (...) luminous (stable)": 12, "ceph version 10.2.6 (...)": 3, }

  9. 通过升级软件包并在所有主机上重新启动守护进程来升级所有 CephFS 守护进程

    # systemctl restart ceph-mds.target

  10. 通过升级软件包并在所有主机上重新启动守护程序来升级所有 radosgw 守护程序

    # systemctl restart radosgw.target

  11. 通过禁止 pre-luminous OSD 来完成升级

    # ceph osd require-osd-release luminous

    如果您在开始时设置了 noout,请务必使用以下命令清除它:

    # ceph osd unset noout

  12. 使用 ceph health 验证集群是否健康。

从 pre-Jewel 版本(如 Hammer)升级

必须先升级到 Jewel (10.2.z),然后再尝试升级到 Luminous。

升级兼容性说明,Kraken 到 Luminous

  • 我们不再测试 FileStore ceph-osd 后端与 btrfs 的组合。我们不建议使用 btrfs。如果您正在使用基于 btrfs 的 OSD 并希望升级到 luminous,您需要在 ceph.conf 中添加以下内容:

    enable experimental unrecoverable data corrupting features = btrfs

    该代码已经成熟,不太可能更改,但我们仅继续针对 btrfs 测试 Jewel 稳定分支。我们建议将这些 OSD 移动到 FileStore 与 XFS 或 BlueStore。

  • erasure code profiles 的 ruleset-* 属性已重命名为 crush-*,以 (1) 摆脱过时的“ruleset”术语,并更清楚地说明其目的。还有一个新的可选 crush-device-class 属性,用于指定 erasure coded 池要使用的 CRUSH 设备类。现有的 erasure code profiles 在升级完成时(当运行 ceph osd require-osd-release luminous 命令时)将自动转换,但任何创建 erasure coded 池的配置工具可能需要更新。

  • osd crush tree 的 XML 输出结构略有更改,以更好地匹配 osd tree 输出。顶层结构现在是 nodes 而不是 crush_map_roots。

  • 当将网络分配给公共网络而不是集群网络时,公共网络的网络规范也将用于集群网络。在早期版本中,这会导致集群服务绑定到 0.0.0.0,从而使集群服务比公共服务更公开。仅指定集群网络时,公共服务仍将绑定到 0.0.0.0。

  • 在以前的版本中,如果客户端将 op 发送到错误的 OSD,OSD 将回复 ENXIO。这里的理由是客户端或 OSD 显然存在错误,我们希望尽可能清楚地显示错误。现在,只有在启用 osd_enxio_on_misdirected_op 选项(默认情况下关闭)时,才会发送 ENXIO 回复。这意味着先前会收到 EIO 并进入只读状态的 VM,现在将看到被阻止/挂起的 IO。

  • “journaler allow split entries”配置设置已被删除。

  • librados:

    • omap_get_keys 和 omap_get_vals librados 函数的一些变体已被弃用,取而代之的是 omap_get_vals2 和 omap_get_keys2。新方法包括一个输出参数,指示是否还有其他键要获取。以前这必须根据请求的键数与返回的键数来推断,但这在新的 OSD 端限制了单个 omap 请求可以返回的键数或字节数时会中断。这些限制由 kraken 引入,但默认情况下被有效禁用(通过设置非常大的 1 GB 限制),因为新弃用接口的用户无法判断他们是否应该获取更多键。在 C++ 接口(IoCtx::get_omap_{keys,vals})中的独立调用情况下,librados 已更新为在客户端循环以通过对 OSD 的多次调用提供正确结果。然而,在用于构建多操作事务的方法的情况下,客户端循环是不切实际的,并且这些方法已被弃用。请注意,如果启用新的 OSD 限制,在旧 librados 版本上使用 IoCtx 方法或在任何 librados 版本上使用弃用方法都将导致不完整的结果。

    • 原始 librados rados_objects_list_open (C) 和 objects_begin (C++) 对象列表 API,在 Hammer 中已弃用,现已最终删除。使用此接口的用户必须更新其软件以使用 rados_nobjects_list_open (C) 和 nobjects_begin (C++) API 或新的 rados_object_list_begin (C) 和 object_list_begin (C++) API,然后再将客户端 librados 库更新到 Luminous。

      使用最新版本的 librados 和 pre-Hammer OSD 的对象枚举(通过任何 API)不再受支持。请注意,没有内置的 Ceph 服务依赖于通过弃用 API 进行对象枚举,因此可能只有外部 librados 用户受到影响。

      最新的 (推荐的) rados_object_list_begin (C) 和 object_list_begin (C++) API 只能在启用 SORTBITWISE 标志的集群上使用 (Jewel 及更高版本)。(请注意,在升级到 Jewel 之前,需要设置此标志。)

  • CephFS:

    • 在 /etc/fstab 中配置 ceph-fuse 安装时,可以使用 “ceph.” 的新语法=” 在 options 列中,而不是将配置放在 device 列中。旧的语法仍然有效。有关详细信息,请参阅文档页面“在文件系统表中挂载 CephFS”。
    • 没有 ‘p’ 标志的 CephFS 客户端在其身份验证功能字符串中,将不再能够设置配额或任何布局字段。此标志以前仅限制布局中 pool 和 namespace 字段的修改。
    • CephFS 将生成健康警告,如果您拥有的待机守护进程少于它认为您想要的。默认情况下,如果您曾经有过待机守护进程,这将是 1,如果您没有,则为 0。您可以使用 ceph fs setstandby_count_wanted进行自定义。将其设置为零将有效地禁用健康检查。
    • “ceph mds tell ...”命令已被删除。它已被 “ceph tell mds....” 取代。

自 v12.1.0 (RC1) 以来的显着变化

  • choose_args 编码已更改为与架构无关。如果您部署了 Luminous dev 版本或 12.1.0 rc 版本并使用了 CRUSH choose_args 功能,则需要在开始升级之前从 CRUSH map 中删除所有 choose_args 映射。
  • “ceph health” 结构化输出(JSON 或 XML)不再包含描述时间同步状态的“timechecks”部分。此信息现在可通过“ceph time-sync-status”命令获得。
  • “ceph health” 结构化输出中曾经出现的一些额外字段(如果 mons 磁盘空间不足)(这些字段复制了正常健康警告消息中的信息)现在消失了。
  • 默认情况下,“ceph -w”输出不再包含审核日志条目。添加“–watch-channel=audit”或“–watch-channel=*”以查看它们。
  • cephfs-journal-tool 的“apply”模式已被删除
  • 添加了新的配置“public bind addr”以支持 Kubernetes 等动态环境。设置后,Ceph MON 守护程序可以本地绑定到 IP 地址,并在网络上通告不同的 IP 地址“public addr”。
  • 新的“ceph -w”行为 - “ceph -w”输出不再包含 I/O 速率、可用空间、PG 信息等,因为这些不再记录到中心日志(即“ceph -w”显示的内容)。可以通过运行“ceph pg stat”获取相同信息;或者,可以使用“ceph osd pool stats”确定每个池的 I/O 速率。尽管这些命令不会像“ceph -w”那样自动更新,但它们确实能够通过提供“–format=” 选项来返回格式化输出。
  • 现在希望池与使用它们的应用程序相关联。完成升级到 Luminous 后,集群将尝试将现有池与已知应用程序(即 CephFS、RBD 和 RGW)相关联。未与应用程序关联的正在使用的池将生成健康警告。可以使用新的“ceph osd pool application enable”命令手动关联任何未关联的池。有关更多详细信息,请参阅文档中的“Associate Pool to Application”。
  • ceph-mgr 现在有一个 Zabbix 插件。它使用 zabbix_sender 将捕获器事件发送到 Zabbix 服务器,其中包含 Ceph 集群的高级信息。这使得监控 Ceph 集群的状态并在发生故障时发出通知变得容易。
  • “mon_warn_osd_usage_min_max_delta”配置选项已被删除,并且相关的健康警告已被禁用,因为它不能解决正在恢复或 CRUSH 规则未针对集群中的所有设备的集群。
  • 指定 RBD 客户端的用户授权功能已简化。使用 RBD 功能配置文件的通用语法为“mon ‘profile rbd’ osd ‘profile rbd[-read-only][ pool={pool-name}[, ...]]’”。有关详细信息,请参阅文档中的“用户管理”。
  • ceph config-key put 已弃用,取而代之的是 ceph config-key set。

自 v12.1.1 (RC2) 以来的显着变化

  • 新的“ceph -w”行为 - “ceph -w”输出不再包含 I/O 速率、可用空间、PG 信息等,因为这些不再记录到中心日志(即“ceph -w”显示的内容)。可以通过运行“ceph pg stat”获取相同信息;或者,可以使用“ceph osd pool stats”确定每个池的 I/O 速率。尽管这些命令不会像“ceph -w”那样自动更新,但它们确实能够通过提供“–format=” 选项来返回格式化输出。
  • 现在希望池与使用它们的应用程序相关联。完成升级到 Luminous 后,集群将尝试将现有池与已知应用程序(即 CephFS、RBD 和 RGW)相关联。未与应用程序关联的正在使用的池将生成健康警告。可以使用新的“ceph osd pool application enable”命令手动关联任何未关联的池。有关更多详细信息,请参阅文档中的“Associate Pool to Application”。
  • ceph-mgr 现在有一个 Zabbix 插件。它使用 zabbix_sender 将捕获器事件发送到 Zabbix 服务器,其中包含 Ceph 集群的高级信息。这使得监控 Ceph 集群的状态并在发生故障时发出通知变得容易。
  • “mon_warn_osd_usage_min_max_delta”配置选项已被删除,并且相关的健康警告已被禁用,因为它不能解决正在恢复或 CRUSH 规则未针对集群中的所有设备的集群。
  • 指定 RBD 客户端的用户授权功能已简化。使用 RBD 功能配置文件的通用语法为“mon ‘profile rbd’ osd ‘profile rbd[-read-only][ pool={pool-name}[, ...]]’”。有关详细信息,请参阅文档中的“用户管理”。
  • RGW:存储桶索引重新分片现在在日志池升级场景中也使用重新分片命名空间,这与 RC1 中的行为不同,RC1 中为重新分片创建了一个新池
  • RGW 多站点现在支持在存储桶级别启用或禁用同步。

其他值得注意的更改

  • bluestore: bluestore/BlueFS: pass string as const ref (pr#16600, dingdangzhang)
  • bluestore: common/options: make “blue{fs,store}_allocator” LEVEL_DEV (issue#20660, pr#16645, Kefu Chai)
  • bluestore: os/bluestore/BlueStore: Avoid double counting state_kv_queued_lat (pr#16374, Jianpeng Ma)
  • bluestore: os/bluestore/BlueStore: remove unused code (pr#16522, Jianpeng Ma)
  • bluestore: os/bluestore: move aio.h/cc from fs dir to bluestore dir (pr#16409, Pan Liu)
  • bluestore: os/bluestore/StupidAllocator: rounded down len to an align boundary (issue#20660, pr#16593, Zhu Shangzhong)
  • bluestore: os/bluestore: use reference to avoid string copy (pr#16364, Pan Liu)
  • build/ops: ceph-disk: don’t activate suppressed journal devices (issue#19489, pr#16123, David Disseldorp)
  • build/ops: do_cmake.sh: fix syntax for /bin/sh (doesn’t have +=) (pr#16433, Dan Mick)
  • build/ops: include/assert: test c++ before using static_cast<> (pr#16424, Kefu Chai)
  • build/ops: install-deps.sh: add missing dependencies for FreeBSD (pr#16545, Alan Somers)
  • build/ops,rbd,rgw: CMakeLists: trim rbd/rgw forced dependencies (pr#16574, Patrick Donnelly)
  • build/ops: rpm: Drop legacy libxio support (pr#16449, Nathan Cutler)
  • build/ops: rpm: fix typo WTIH_BABELTRACE (pr#16366, Nathan Cutler)
  • build/ops: rpm: put mgr python build dependencies in make_check bcond (issue#20425, pr#15940, Nathan Cutler, Tim Serong)
  • build/ops,tests: qa: make run-standalone work on FreeBSD (pr#16595, Willem Jan Withagen)
  • cmake: disable -fvar-tracking-assignments for config.cc (pr#16695, Kefu Chai)
  • cmake: use CMAKE_INSTALL_INCLUDEDIR (pr#16483, David Disseldorp)
  • common: buffer: silence unused var warning on FreeBSD (pr#16452, Willem Jan Withagen)
  • common: common/common_init: disable default dout logging for UTILITY_NODOUT too (issue#20771, pr#16578, Sage Weil)
  • common: common/options: refactors to set the properties in a more structured way (pr#16482, Kefu Chai)
  • common: common/WorkQueue: use threadpoolname + threadaddr for heartbeat_han… (pr#16563, huangjun)
  • common,core: osd,mds,mgr: do not dereference null rotating_keys (issue#20667, pr#16455, Sage Weil)
  • common: fix Option set_long_description (pr#16668, Yan Jun)
  • common: follow up to new options infrastructure (pr#16527, John Spray)
  • common: HashIndex.cc: add compat.h for ENODATA (pr#16697, Willem Jan Withagen)
  • common: libradosstriper: fix format injection vulnerability (issue#20240, pr#15674, Stan K)
  • common,mon: crush,mon: add weight-set introspection and manipulation commands (pr#16326, Sage Weil)
  • common: mon/MonClient: scale backoff interval down when we have a healthy mon session (issue#20371, pr#16576, Kefu Chai, Sage Weil)
  • common: prevent unset_dumpable from generating warnings (pr#16462, Willem Jan Withagen)
  • common,rbd: osdc/Objecter: unify disparate EAGAIN handling paths into one (pr#16627, Sage Weil)
  • common: remove config opt conversion utility (pr#16480, John Spray)
  • common: Revamp config option definitions (issue#20627, pr#16211, John Spray, Kefu Chai, Sage Weil)
  • common,rgw: cls/refcount: store and use list of retired tags (issue#20107, pr#15673, Yehuda Sadeh)
  • common: the latency dumped by “ceph osd perf” is not real (issue#20749, pr#16512, Pan Liu)
  • common: use std::move() for better performance (pr#16620, Xinying Song)
  • core: auth: Remove unused function in AuthSessionHandler (pr#16666, Luo Kexue)
  • core: ceph: allow ‘-‘ with -i and -o for stdin/stdout (pr#16359, Sage Weil)
  • core: ceph-disk: support osd new (pr#15432, Loic Dachary, Sage Weil)
  • core: common/options: remove mon_warn_osd_usage_min_max_delta from options.cc too (pr#16488, Sage Weil)
  • core: kv: resolve a crash issue in ~LevelDBStore() (pr#16553, wumingqiao)
  • core: kv/RocksDBStore: use vector instead of VLA for holding slices (pr#16615, Kefu Chai)
  • core: messages: default-initialize MOSDPGRecoveryDelete[Reply] members (pr#16584, Greg Farnum)
  • core: mgr/MgrClient: do not attempt to access a global variable for config (pr#16544, Jason Dillaman)
  • core,mgr,tests: qa: flush out monc’s dropped msgs on msgr failure injection (issue#20371, pr#16484, Joao Eduardo Luis)
  • core,mon: crush, mon: simplify device class manipulation commands (pr#16388, xie xingguo)
  • core: mon, osd: misc fixes (pr#16283, xie xingguo)
  • core,mon,rbd: mon,osd: new rbd-based cephx cap profiles (pr#15991, Jason Dillaman)
  • core: msg/async: fix the bug of inaccurate calculation of l_msgr_send_bytes (pr#16526, Jin Cai)
  • core: objclass: modify omap_get_{keys,vals} api (pr#16667, Yehuda Sadeh, Casey Bodley)
  • core: osd/PG: fix warning so we discard_event() on a no-op state change (pr#16655, Sage Weil)
  • core: osd/PG: ignore CancelRecovery in NotRecovering (issue#20804, pr#16638, Sage Weil)
  • core: osd/PGLog: fix inaccurate missing assert (issue#20753, pr#16539, Josh Durgin)
  • core: osd/PrimaryLogPG: fix recovering hang when have unfound objects (pr#16558, huangjun)
  • core: osd/PrimaryLogPG: skip deleted missing objects in pg[n]ls (issue#20739, pr#16490, Josh Durgin)
  • core,performance: kv/RocksDBStore: Table options for indexing and filtering (pr#16450, Mark Nelson)
  • core,performance: osd/PG: make prioritized recovery possible (pr#13723, Piotr Dałek)
  • core: PGLog: store extra duplicate ops beyond the normal log entries (pr#16172, Josh Durgin, J. Eric Ivancich)
  • core,rgw,tests: qa/suits/rados/basic/tasks/rgw_snaps: wait for pools to be created (pr#16509, Sage Weil)
  • core,tests: ceph_test_rados_api_watch_notify: flush after unwatch (issue#20105, pr#16402, Sage Weil)
  • core,tests: ceph_test_rados: max_stride_size must be more than min_stride_size (issue#20775, pr#16590, Lianne Wang)
  • core,tests: qa: move ceph-helpers-based make check tests to qa/standalone; run via teuthology (pr#16513, Sage Weil)
  • core,tests: qa/suites/rados: at-end: ignore PG_{AVAILABILITY,DEGRADED} (issue#20693, pr#16575, Sage Weil)
  • core,tests: qa/tasks/ceph_manager: wait for osd to start after objectstore-tool sequence (issue#20705, pr#16454, Sage Weil)
  • core,tests: qa/tasks/ceph: wait for mgr to activate and pg stats to flush in health() (issue#20744, pr#16514, Sage Weil)
  • core,tests: qa/tasks/dump_stuck: fix dump_stuck test bug (pr#16559, huangjun)
  • core,tests: qa/workunits/cephtool/test.sh: add sudo for daemon compact (pr#16500, Sage Weil)
  • core,tests: test: add separate ceph-helpers-based smoke test (pr#16572, Sage Weil)
  • core: throttle: Minimal destructor fix for Luminous (pr#16661, Adam C. Emerson)
  • core: vstart.sh: start mgr after mon, before osds (pr#16613, Sage Weil)
  • crush: a couple of weight-set fixes (pr#16623, xie xingguo)
  • crush: enforce buckets-before-rules rule (pr#16453, Sage Weil)
  • crush: s/ruleset/id/ in decompiled output; prevent compilation when ruleset != id (pr#16400, Sage Weil)
  • doc: Add amitkumar50 affiliation to .organizationmap (pr#16475, Amit Kumar)
  • doc: add doc requirements on PR submitters (pr#16394, John Spray)
  • doc: added mgr caps to manual deployment documentation (pr#16660, Nick Erdmann)
  • doc: add instructions for replacing an OSD (pr#16314, Kefu Chai)
  • doc: add rbd new trash cli and cleanups in release-notes.rst (issue#20702, pr#16498, songweibin)
  • doc: Add Zabbix ceph-mgr plugin to PendingReleaseNotes (pr#16412, Wido den Hollander)
  • doc: AUTHORS: update CephFS PTL (pr#16399, Patrick Donnelly)
  • doc: ceph-disk: use ‘-‘ for feeding ceph cli with stdin (pr#16362, Kefu Chai)
  • doc: common/options.cc: document bluestore config options (pr#16489, Sage Weil)
  • doc: Describe mClock’s use within Ceph in great detail (pr#16707, J. Eric Ivancich)
  • doc: doc/install/manual-deployment: update osd creation steps (pr#16573, Sage Weil)
  • doc: doc/mon: fix ceph-authtool command in rebuild mon’s sample (pr#16503, huanwen ren)
  • doc: doc/qa: cover config help command (pr#16727, John Spray)
  • doc: doc/rados: add page for health checks and update monitoring.rst (pr#16566, John Spray)
  • doc: doc/rados/operations/health-checks: osd section (pr#16611, Sage Weil)
  • doc: doc/release-notes: fix upmap and osd replacement links; add fixme (pr#16730, Sage Weil)
  • doc: [docs/quick-start]: update quick start to add a note for mgr create command for luminous+ builds (pr#16350, Vasu Kulkarni)
  • doc: Documentation updates for July 2017 releases (pr#16401, Bryan Stillwell)
  • doc: document mClock related options (pr#16552, Kefu Chai)
  • doc: Fixed a typo in yum repo filename script (pr#16431, Jeff Green)
  • doc: fix typo in config.rst (pr#16721, Jos Collin)
  • doc: fix typos in config.rst (pr#16681, Song Shun)
  • doc: mailmap: add affiliation for Zhu Shangzhong (pr#16537, Zhu Shangzhong)
  • doc: .mailmap, .organizationmap: Update ztczll affiliation (pr#16038, zhanglei)
  • doc: PendingReleaseNotes: “ceph -w” behavior has changed drastically (pr#16425, Joao Eduardo Luis, Nathan Cutler)
  • doc: Remove contractions from the documentation (pr#16629, John Wilkins)
  • doc: remove docs on non-existant command (pr#16616, Luo Kexue, Kefu Chai)
  • doc: reword mds deactivate docs; add optional fs_name argument (issue#20607, pr#16471, Jan Fajerski)
  • doc: rgw clarify limitations when creating tenant names (pr#16418, Abhishek Lekshmanan)
  • doc: update ceph(8) man page with new sub-commands (pr#16437, Kefu Chai)
  • doc: Update .organizationmap (pr#16507, luokexue)
  • doc: update the pool names created by vstart.sh by default (pr#16652, Zhu Shangzhong)
  • doc: update the rados namespace docs (pr#15838, Abhishek Lekshmanan)
  • doc: upmap docs; various missing links for release notes (pr#16637, Sage Weil)
  • doc: various fixes (pr#16723, Kefu Chai)
  • librados: add missing implementations for C service daemon API methods (pr#16543, Jason Dillaman)
  • librbd: add compare and write API (pr#14868, Zhengyong Wang, Jason Dillaman)
  • librbd: add LIBRBD_SUPPORTS_WRITESAME support (pr#16583, Xiubo Li)
  • mgr: add per-DaemonState lock (pr#16432, Sage Weil)
  • mgr: fix lock cycle (pr#16508, Sage Weil)
  • mgr: mgr/dashboard: add OSD list view (pr#16373, John Spray)
  • mgr: mgr_module interface to report health alerts (pr#16487, Sage Weil)
  • mgr: mgr/PyState: shut up about get_config on nonexistent keys (pr#16641, Sage Weil)
  • mgr: mon/MgrMonitor: fix standby addition to mgrmap (issue#20647, pr#16397, Sage Weil)
  • mgr,mon: mon/AuthMonitor: generate bootstrap-mgr key on upgrade (issue#20666, pr#16395, Joao Eduardo Luis)
  • mgr,mon: mon/MgrMonitor: reset mgrdigest timer with new subscription (issue#20633, pr#16582, Sage Weil)
  • mgr: perf schema fns/change notification and Prometheus plugin (pr#16406, Dan Mick)
  • mgr: pybind/mgr/zabbix: fix health in non-compat mode (issue#20767, pr#16580, Sage Weil)
  • mgr,pybind,rbd: mgr/dashboard: show rbd image features (pr#16468, Yanhu Cao)
  • mgr,rbd: mgr/dashboard: RBD iSCSI daemon status page (pr#16547, Jason Dillaman)
  • mgr,rbd: mgr/dashboard: rbd mirroring status page (pr#16360, Jason Dillaman)
  • mgr: vstart.sh: fix mgr vs restful command startup race (pr#16564, Sage Weil)
  • mon: add force-create-pg back (issue#20605, pr#16353, Kefu Chai)
  • mon: add mgr metdata commands, and overall ‘versions’ command for all daemon versions (pr#16460, Sage Weil)
  • mon: a few health fixes (pr#16415, xie xingguo)
  • mon: ‘config-key put’ -> ‘config-key set’ (pr#16569, Sage Weil)
  • mon: do not dereference empty mgr_commands (pr#16501, Sage Weil)
  • mon: Fix deep_age copy paste error (pr#16434, Brad Hubbard)
  • mon: Fix output text and doc (pr#16367, Yan Jun)
  • mon: ‘* list’ -> ‘* ls’ (pr#16423, Sage Weil)
  • mon: load mgr commands at runtime (pr#16028, John Spray, Sage Weil)
  • mon: mon/HealthMonitor: avoid sending unnecessary MMonHealthChecks to leader (pr#16478, xie xingguo)
  • mon: mon/HealthMonitor: trigger a proposal if stat updated (pr#16477, Kefu Chai)
  • mon: mon/LogMonitor: don’t read list’s end() for log last (pr#16376, Joao Eduardo Luis)
  • mon: mon/MDSMonitor: close object section of formatter (pr#16516, Chang Liu)
  • mon: mon/MgrMonitor: only induce mgr epoch shortly after mkfs (pr#16356, Sage Weil)
  • mon: mon/OSDMonitor: ensure UP is not set for newly-created OSDs (issue#20751, pr#16534, Sage Weil)
  • mon: mon/OSDMonitor: issue pool application related warning (pr#16520, xie xingguo)
  • mon: mon/OSDMonitor: remove zeroed new_state updates (issue#20751, pr#16518, Sage Weil)
  • mon: mon/PGMap: remove skewed utilizatoin warning (issue#20730, pr#16461, Sage Weil)
  • mon: OSDMonitor: check mon_max_pool_pg_num when set pool pg_num (pr#16511, chenhg)
  • mon: prime pg_temp and a few health warning fixes (pr#16530, xie xingguo)
  • mon: show destroyed status in tree view; do not auto-out destroyed osds (pr#16446, xie xingguo)
  • mon: stop issuing not-[deep]-scrubbed warnings if disabled (pr#16465, xie xingguo)
  • mon: support pool application metadata key/values (pr#15763, Jason Dillaman)
  • msg: messages/: always set header.version in encode_payload() (issue#19939, pr#16421, Kefu Chai)
  • msg: mgr/status: row has incorrect number of values (issue#20750, pr#16529, liuchang0812)
  • msg: msg/async: use auto iterator having more simple code and good performance (pr#16524, dingdangzhang)
  • osd: add default_device_class to metadata (pr#16634, Neha Ojha)
  • osd: add dump filter for tracked ops (pr#16561, Yan Jun)
  • osd: Add recovery sleep configuration option for HDDs and SSDs (pr#16328, Neha Ojha)
  • osd: cmpext operator should ignore -ENOENT on read (pr#16622, Jason Dillaman)
  • osd: combine conditional statements (pr#16391, Yan Jun)
  • osd: do not send pg_created unless luminous (issue#20785, pr#16677, Kefu Chai)
  • osd: EC read handling: don’t grab an objectstore error to use as the read error (pr#16663, David Zafman)
  • osd: fix a couple bugs with persisting the missing set when it contains deletes (issue#20704, pr#16459, Josh Durgin)
  • osd: fix OpRequest and tracked op dump information (pr#16504, Yan Jun)
  • osd: fix pg ref leaks when osd shutdown (issue#20684, pr#16408, Yang Honggang)
  • osd: Log audit (pr#16281, Brad Hubbard)
  • osd: moved OpFinisher logic from OSDOp to OpContext (issue#20783, pr#16617, Jason Dillaman)
  • osd: populate last_epoch_split during build_initial_pg_history (issue#20754, pr#16519, Sage Weil)
  • osd: PrimaryLogPG, PGBackend: complete callback even if interval changes (issue#20747, pr#16536, Josh Durgin)
  • osd: process deletes during recovery instead of peering (issue#19971, pr#15952, Josh Durgin)
  • osd: rephrase “wrongly marked me down” clog message (pr#16365, John Spray)
  • osd: scrub_to specifies clone ver, but transaction include head write… (issue#20041, pr#16404, David Zafman)
  • osd: support cmpext operation on EC-backed pools (pr#15693, Zhengyong Wang, Jason Dillaman)
  • performance,rgw: rgw_file: permit dirent offset computation (pr#16275, Matt Benjamin)
  • pybind: pybind/mgr/restful: fix typo (pr#16560, Nick Erdmann)
  • rbd: cls/rbd: silence warning from -Wunused-variable (pr#16670, Yan Jun)
  • rbd: cls/rbd: trash_list should be iterable (issue#20643, pr#16372, Jason Dillaman)
  • rbd: fixed coverity ‘Argument cannot be negative’ warning (pr#16686, amitkuma)
  • rbd: make it more understandable when adding peer returns error (pr#16313, songweibin)
  • rbd-mirror: guard the deletion of non-primary images (pr#16398, Jason Dillaman)
  • rbd-mirror: initialize timer context pointer to null (pr#16603, Jason Dillaman)
  • rbd: modified some commands’ description into imperative sentence (pr#16694, songweibin)
  • rbd,tests: qa/tasks/rbd_fio: bump default fio version to 2.21 (pr#16656, Ilya Dryomov)
  • rbd,tests: qa: thrash tests for backoff and upmap (pr#16428, Ilya Dryomov)
  • rbd,tests: qa/workunits: adjust path to ceph-helpers.sh (pr#16599, Sage Weil)
  • rgw: acl grants num limit (pr#16291, Enming Zhang)
  • rgw: check placement existence when create bucket (pr#16385, Jiaying Ren)
  • rgw: check placement target existence during bucket creation (pr#16384, Jiaying Ren)
  • rgw: delete object in error path (issue#20620, pr#16324, Yehuda Sadeh)
  • rgw: Do not decrement stats cache when the cache values are zero (issue#20661, pr#16389, Pavan Rallabhandi)
  • rgw: Drop dump_usage_bucket_info() to silence warning from -Wunused-function (pr#16497, Wei Qiaomiao)
  • rgw: drop unused find_replacement() and some function docs (pr#16386, Jiaying Ren)
  • rgw: fix asctime when logging in rgw_lc (pr#16422, Abhishek Lekshmanan)
  • rgw: fix error message in removing bucket with –bypass-gc flag (issue#20688, pr#16419, Abhishek Varshney)
  • rgw: fix err when copy object in bucket with specified placement rule (issue#20378, pr#15837, fang yuxiang)
  • rgw: Fix for Policy Parse exception in case of multiple statements (pr#16689, Pritha Srivastava)
  • rgw: fix memory leaks during Swift Static Website’s error handling (issue#20757, pr#16531, Radoslaw Zarzynski)
  • rgw: fix parse/eval of policy conditions with IfExists (issue#20708, pr#16463, Casey Bodley)
  • rgw: fix radosgw will crash when service is restarted during lifecycl… (issue#20756, pr#16495, Wei Qiaomiao)
  • rgw: fix rgw hang when do RGWRealmReloader::reload after go SIGHUP (issue#20686, pr#16417, fang.yuxiang)
  • rgw: fix segfault in RevokeThread during its shutdown procedure (issue#19831, pr#15033, Radoslaw Zarzynski)
  • rgw: fix the UTF8 check on bucket entry name in rgw_log_op() (issue#20779, pr#16604, Radoslaw Zarzynski)
  • rgw: modify email to empty by admin RESTful api doesn’t work (pr#16309, fang.yuxiang)
  • rgw: never let http_redirect_code of RGWRedirectInfo to stay uninitialized (issue#20774, pr#16601, Radoslaw Zarzynski)
  • rgw: raise debug level of RGWPostObj_ObjStore_S3::get_policy (pr#16203, Shasha Lu)
  • rgw: req xml params size limitation error msg (pr#16310, Enming Zhang)
  • rgw: restore admin socket path in mrgw.sh (pr#16540, Casey Bodley)
  • rgw: rgw_file: properly & |‘d flags (issue#20663, pr#16448, Matt Benjamin)
  • rgw: rgw multisite: feature of bucket sync enable/disable (pr#15801, Zhang Shaowen, Casey Bodley, Zengran Zhang)
  • rgw: should unlock when reshard_log->update() reture non-zero in RGWB… (pr#16502, Wei Qiaomiao)
  • rgw: test,rgw: fix rgw placement rule pool config option (pr#16380, Jiaying Ren)
  • rgw: usage (issue#16191, pr#14287, Ji Chen, Orit Wasserman)
  • rgw: use a namespace for rgw reshard pool for upgrades as well (issue#20289, pr#16368, Karol Mroz, Abhishek Lekshmanan)
  • rgw: Use comparison instead of assignment (pr#16653, amitkuma)
  • tests: add setup/teardown for asok dir (pr#16523, Kefu Chai)
  • tests: cephtool/test.sh: Only delete a test pool when no longer needed (pr#16443, Willem Jan Withagen)
  • tests: qa: Added luminous to the mix in schedule_subset.sh (pr#16430, Yuri Weinstein)
  • tests: qa,doc: document and fix tests for pool application warnings (pr#16568, Sage Weil)
  • tests: qa/run-standalone.sh: fix the find option to be compatible with GNU find (pr#16646, Kefu Chai)
  • tests: qa/suites/rados/singleton/all/erasure-code-nonregression: fix typo (pr#16579, Sage Weil)
  • tests: qa/suites/upgrade/jewel-x: misc fixes for new health checks (pr#16429, Sage Weil)
  • tests: qa/tasks/ceph-deploy: Fix bluestore options for ceph-deploy (pr#16571, Vasu Kulkarni)
  • tests: qa/tasks/reg11184: use literal ‘foo’ instead pool_name (pr#16451, Kefu Chai)
  • tests: qa/workunits/cephtool/test.sh: “ceph osd stat” output changed, update accordingly (pr#16444, Willem Jan Withagen, Kefu Chai)
  • tests: qa/workunits/cephtool/test.sh: disable ‘fs status’ until bug is fixed (issue#20761, pr#16541, Sage Weil)
  • tests: qa/workunits/cephtool/test.sh: fix test to watch audit channel (pr#16470, Sage Weil)
  • tests: test: ceph osd stat out has changed, fix tests for that (pr#16403, Willem Jan Withagen)
  • tests: test: create asok files in a temp directory under $TMPDIR (issue#16895, pr#16445, Kefu Chai)
  • tests: test: Fixes for test_pidfile (issue#20770, pr#16587, David Zafman)
  • tests: test/osd: kill compile warning (pr#16669, Yan Jun)
  • tests: test/rados: fix wrong parameter order of RETURN1_IF_NOT_VAL (pr#16589, Yan Jun)
  • tests: test: reg11184 might not always find pg 2.0 prior to import (pr#16610, David Zafman)
  • tests: test: s/osd_objectstore_type/osd_objectstore (pr#16469, xie xingguo)
  • tests: test: test_pidfile running 2nd mon has unreliable log output (pr#16635, David Zafman)
  • tools: ceph-disk: change the lockbox partition number to 5 (issue#20556, pr#16247, Shangzhong Zhu)
  • tools: ceph-disk: Fix for missing ‘not’ in *_is_diskdevice checks (issue#20706, pr#16481, Nikita Gerasimov)
  • tools: ceph_disk/main.py: FreeBSD root has wheel for group (pr#16609, Willem Jan Withagen)
  • tools: ceph-disk: s/ceph_osd_mkfs/command_check_call/ (issue#20685, pr#16427, Zhu Shangzhong)
  • tools: ceph-release-notes: escape _ for unintended links (issue#17499, pr#16528, Kefu Chai)
  • tools: ceph-release-notes: port it to py3 (pr#16261, Kefu Chai)
  • tools: ceph-release-notes: refactor and fix regressions (pr#16411, Nathan Cutler)
  • tools: os/bluestore/bluestore_tool: add sanity check to get rid of occasionally crash (pr#16013, xie xingguo)
  • tools: script: add docker core dump debugger (pr#16375, Patrick Donnelly)