发行注记

Red Hat Ceph Storage 4.2

Red Hat Ceph Storage 4.2 发行注记

摘要

本发行注记介绍了为 Red Hat Ceph Storage 4.2 产品发行版本实施的主要功能、增强功能、已知问题以及漏洞修复。本发行注记包括之前的 Red Hat Ceph Storage 4.2 版本发行注记,最高为当前版本。
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看 CTO Chris Wright 信息

第 1 章 简介

Red Hat Ceph Storage 是一个可大规模扩展、开放、软件定义的存储平台,它将最稳定版本的 Ceph 存储系统与 Ceph 管理平台、部署实用程序和支持服务相结合。

Red Hat Ceph Storage 文档位于 https://access.redhat.com/documentation/en/red-hat-ceph-storage/

第 2 章 致谢

Red Hat Ceph Storage 版本 4.2 包含 Red Hat Ceph Storage 团队的许多贡献。此外,Ceph 社区中个人和组织的贡献质量和数量有显著的增长。我们借此感谢 Red Hat Ceph Storage 团队的所有成员、Ceph 社区中的所有个人贡献者,并且包括但不限于:

  • Intel
  • Fujitsu
  • UnitedStack
  • Yahoo
  • Ubuntu Kylin
  • Mellanox
  • CERN
  • Deutsche Telekom
  • Mirantis
  • SanDisk
  • SUSE

第 3 章 新功能

本节列出了本 Red Hat Ceph Storage 版本中引入的所有主要更新、增强功能和新功能。

3.1. Ceph Ansible 实用程序

ceph-ansible playbook 从多个节点收集日志

在这个版本中,playbook 会自动从大型集群中的多个节点收集日志。

ceph-ansible 在两个站点之间执行额外的连接检查

在这个版本中,ceph-ansible 在 realm pull 之前在两个站点之间执行额外的连接检查。

purge playbook 删除未使用的 Ceph 文件

在这个版本中,清除集群 playbook 会在清除 Red Hat Ceph Storage 集群后删除 grafana-server 节点上的所有与 Ceph 相关的文件。

使用 --skip-tags wait_all_osds_up 选项跳过等待所有 OSD 正常运行的检查

在这个版本中,在升级存储集群时,使用 Ansible 运行时用户的 --skip-tags wait_all_osds_up 选项可以跳过此检查,从而在出现磁盘失败时防止 rolling_update.yml playbook 失败。

可以更新现有池的 crush_rule

在以前的版本中,特定池的 crush_rule 值是在创建池的过程中设置的,以后无法更新。在这个版本中,可以为现有池更新 crush_rule 值。

可以为 RADOS 网关池设置自定义 crush_rule

在这个版本中,RADOS 网关池除了具有 OpenStack、MDS 和 Client 等其他池外,还可以具有自定义 crush_rule 值。

设置 ceph_docker_http_proxyceph_docker_https_proxy,以在 HTTP 的代理后面解决容器 registry 中的代理问题

在以前的版本中,/etc/profile.d 目录中定义的环境变量不会被加载,从而导致登录和拉取 registry 操作失败。在这个版本中,通过设置环境变量 ceph_docker_http_proxy 和/或 ceph_docker_https_proxy,HTTP 代理后面的容器 registry 可以正常工作。

Ceph Ansible 仅适用于 Ansible 2.9

在以前的版本中,ceph-ansible 支持 2.8 和 2.9 版本 Ansible 作为迁移解决方案。在这个版本中,ceph-ansible 仅支持 Ansible 2.9。

默认情况下,仪表板设置为 HTTPS

在以前的版本中,仪表板被设置为 http。在这个版本中,仪表板默认设置为 https

在退出 playbook 前,ceph-mon 服务已被取消掩码

在以前的版本中,在失败期间,ceph-mon systemd 服务会被屏蔽,从而导致 playbook 失败,从而导致服务无法手动重启。在这个版本中,ceph-mon 服务在故障期间退出 playbook 之前没有屏蔽,用户现在可以在重启滚动更新 playbook 前手动重新启动 ceph-mon 服务。

3.2. Ceph 管理仪表板

在 Red Hat Ceph Storage Dashboard 中查看用户的存储桶配额使用量

在这个版本中,Red Hat Ceph Storage 仪表板显示用户的 bucket 配额使用情况,包括当前大小、已使用百分比和对象数量。

3.3. Ceph 文件系统

mgr/volumes CLI 现在可以用来列出 cephx 验证 ID

之前,ceph_volume_client 接口用于列出 cephx 身份验证 ID。这个接口现已弃用。

在这个版本中,Manila 等使用者可以使用 mgr/volume 接口列出授予对子卷的 cephx 身份验证 ID。

语法

ceph fs subvolume authorized_list _VOLUME_NAME_ _SUB_VOLUME_NAME_ [--group_name=_GROUP_NAME_]

3.4. Ceph Manager 插件

修改内部 python 到 C++ 接口以提高 Ceph 管理器性能

在以前的版本中,pg_dump 提供所有信息,从而影响 Ceph 管理器的性能。在这个版本中,内部 python 到 C++ 接口会被修改,模块会提供有关 pg_readypg_statspool_stats 和 'osd_ping_times'的信息。

可以关闭进度模块

在以前的版本中,无法关闭 progress 模块,因为它是一个 always-on 管理器模块。在本发行版本中,progress 模块可以使用 ceph progress off 关闭,使用 ceph progress on 打开。

3.5. Ceph 对象网关

Ceph Object Gateway 在存储桶索引上的默认分片请求 rgw_bucket_index_max_aio,增加到 128

在以前的版本中,存储桶索引中未完成的分片请求被限制为 8,从而导致在列出存储桶时性能较低。在这个版本中,存储桶索引上的默认分片请求数 rgw_bucket_index_max_aio 从 8 增加到 128,从而改进了存储桶列表性能。

集群日志信息现在包括存储桶的延迟信息

在以前的版本中,日志中的集群信息为存储桶请求提供延迟,但没有为每个存储桶指定延迟信息。在这个版本中,日志中的每一行都包含存储桶名称、对象名称、请求 ID、操作开始时间和操作名称。

借助这个增强功能,用户可以在解析日志时收集这些信息。要计算操作的延迟,请使用 awk 脚本减少操作启动时日志消息的时间。

Ceph 对象网关日志包括 Beast 的访问日志

在这个版本中,前端 Web 服务器 Beast 在 Ceph 对象网关日志中包含一个 Apache 样式的访问日志行。在这个版本中,日志有助于诊断连接和客户端网络问题。

Beast 前端明确请求超时

在以前的版本中,如果客户端闲置,通过高延迟网络连接的较慢客户端可能会丢失。

在这个版本中,/etc/ceph.conf 中的新 request_timeout_ms 选项添加了为 Beast 前端设置显式超时的功能。request_timeout_ms 的默认值为 65 秒。

设置更大的请求超时可让 Ceph 对象网关更好地接受较慢的客户端,并会减少丢弃的连接。

列出缺少数据的 RGW 对象

在以前的版本中,管理员无法知道被错误地删除数据的 RGW 对象,因此它们无法决定如何最好地解决这个问题。在这个版本中,集群管理员可以使用 rgw-gap-list 列出可能缺少数据的候选 RGW 对象。

3.6. 多站点 Ceph 对象网关

数据同步日志记录出现处理延迟

在以前的版本中,数据同步日志记录可能会在处理大量日志条目时出现延迟。

在这个版本中,数据同步包括存储桶同步状态的缓存。添加缓存可加快在存在积压时处理重复数据日志条目的速度。

数据同步日志记录出现处理延迟

在以前的版本中,数据同步日志记录可能会在处理大量日志条目时出现延迟。

在这个版本中,数据同步包括存储桶同步状态的缓存。添加缓存可加快在存在积压时处理重复数据日志条目的速度。

多站点同步日志记录现在可以使用 FIFO 将日志记录卸载到 RADOS 数据对象

在以前的版本中,多站点元数据和数据日志记录配置使用 OMAP 数据日志。在这个版本中,FIFO 数据日志记录可用。要将 FIFO 与绿色字段部署搭配使用,请将配置选项 rgw_default_data_log_backing 设置为 fifo。

注意

配置值区分大小写。在小写中使用 fifo 来设置配置选项。

要更改该站点使用的数据日志支持,可使用 radosgw-admin --log-type fifo datalog type 命令。

3.7. RADOS

Ceph 消息传递协议已修改为 msgr v2.1。

在这个版本中,将实施 Ceph 消息传递协议 msgr v2.1 的新版本,解决了上一版本 msgr v2.0 的几个安全性、完整性和潜在性能问题。现在,守护进程和客户端的所有 Ceph 实体默认为 msgr v2.1。

Ceph 健康详情记录在集群日志中

在以前的版本中,集群日志没有 Ceph 健康详情,因此很难根据问题的根本原因来总结。在这个版本中,Ceph 健康详情记录在集群日志中,以便检查集群中可能出现的问题。

提高了 PG 移除代码的效率

在以前的版本中,代码效率较低,因为它不会在每个传递中一直指向 PG (PG) 中最后一个删除的对象,这会导致每次都对所有对象进行不必要的迭代。在这个版本中,PG 删除性能得到改进,对客户端 I/O 的影响较低。osd_delete_sleep_ssdosd_delete_sleep_hybrid 参数现在的默认值为 1 秒。

3.8. RADOS 块设备 (RBD)

新选项 -o noudev 从 rbd 内核客户端上的自定义网络命名空间运行命令

在以前的版本中,在 rbd 内核客户端上的来自自定义网络命名空间中的 rbd maprbd unmap 等命令会挂起,直到手动干预为止。在这个版本中,将选项 o -noudev 添加到 rbd map -o noudevrbd unmap -o noudev 等命令中,可以正常工作。在 OCP 中使用 Multus 而不是默认的 OpenShift SDN 进行联网时,这尤其有用。

第 4 章 技术预览

本节概述了此 Red Hat Ceph Storage 发行版本中引入或更新的技术预览功能。

重要

技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

如需有关红帽技术预览功能支持范围的更多信息,请参阅 https:

4.1. 块设备(RBD)

将 RBD 镜像映射到 NBD 镜像

rbd-nbd 实用程序将 RADOS 块设备(RBD)镜像映射到网络块设备(NBD),并允许 Ceph 客户端访问 Kubernetes 环境中的卷和镜像。若要使用 rbd-nbd,请安装 rbd-nbd 软件包。详情请查看 rbd-nbd(7) 手册页。

4.2. 对象网关

对象网关归档网站

在这个版本中,存档站点作为技术预览提供。归档站点可让您具有 S3 对象的历史记录,它们只能通过与存档区域关联的网关消除。在多区配置中包含存档区,可让您在一个区中只拥有 S3 对象历史记录的灵活性,同时节省版本 S3 对象副本在区域的其余部分中消耗的空间。

第 5 章 过时的功能

本节概述了在 Red Hat Ceph Storage 发行本的所有次版本中弃用的功能。

不再支持 Ubuntu

不再支持在 Ubuntu 上安装 Red Hat Ceph Storage 4 集群。请使用 Red Hat Enterprise Linux 作为底层操作系统。

不再支持使用 ceph-ansible 配置 iSCSI 网关

不再支持使用 ceph-ansible 实用程序配置 Ceph iSCSI 网关。使用 ceph-ansible 安装网关,然后使用 gwcli 实用程序来配置 Ceph iSCSI 网关。详情请参阅 Red Hat Ceph Storage 块设备指南中的 Ceph iSCSI 网关章节。

ceph-disk 已被弃用

在这个版本中,ceph-disk 实用程序不再被支持。改为使用 ceph-volume 实用程序。详情请参阅 Red Hat Ceph Storage 4 管理指南中的 ceph-volume 替换 'ceph-disk' 的原因

在生产环境中不再支持 FileStore

FileStore OSD 后端现已弃用,因为生产环境中完全支持新的 BlueStore 后端。详情请参阅 Red Hat Ceph Storage 安装指南中的如何将对象存储从 FileStore 迁移到 BlueStore 部分。

Ceph 配置文件现已过时

Ceph 配置文件 (ceph.conf) 现已被弃用,取代存储在 Ceph monitor 中的新的集中式配置。详细信息,请参见 Red Hat Ceph Storage 配置指南中的 Ceph 配置数据库章节。

5.1. Ceph 卷实用程序

不支持在 dm-cache 的设备设置上部署 OSD

不再支持使用 dm-cache 部署 OSD。使用 Bluestore 后端,而不是 dm-cache

详情请参阅 Red Hat Ceph Storage 安装指南中的如何将对象存储从 FileStore 迁移到 BlueStore 部分。

第 6 章 程序错误修复

本节论述了在这个 Red Hat Ceph Storage 发行版本中修复的用户有严重影响的错误。此外,部分还包括之前版本中发现的固定已知问题的描述。

6.1. Ceph Ansible 实用程序

/targets URL 显示 Prometheus 作为 down

在以前的版本中,Prometheus 目标 URL 配置有 localhost 值。当目标状态被视为关闭时,localhost 值会导致 Prometheus 服务不侦听 localhost 地址。在这个版本中,Prometheus 配置文件被更新为使用目标 URL 值的 IP 地址。因此,Prometheus 目标状态会被正确报告。

(BZ#1933560)

Ceph-volume 可能会在 Ceph 部署中创建 OSD 时造成元数据崩溃

在以前的版本中,当 ceph-volume 发出 LVM 命令时,如创建卷组、逻辑卷、设置标签等时,在 Ceph 部署期间创建 OSD 时可能会导致元数据损坏。在此发行版本中,用户可以通过将主机上的 group _vars/all.yml 文件中的 lvmetad _disabled 参数设置为 true 来禁用 lvmetad 服务,从而可以避免元数据崩溃。

(BZ#1955040)

ceph-ansible 中的 ceph-dashboard 角色强制将自签名证书的通用名称强制到 ceph-dashboard

在以前的版本中,当使用 ceph-ansible 生成的自签名证书时,它会强制将通用名称(CN)强制到 ceph-dashboard,从而导致 Prometheus 等应用程序因为节点向客户端发送证书不匹配而出现错误。

在这个版本中,ceph-ansible 设置具有适当值的 CN,Prometheus 可以正常工作。

(BZ#1978869)

当 Ceph 容器并置时,滚动升级会失败

当 Ceph 监控器和 Ceph 对象网关守护进程与容器并启用了多站点 Ceph 对象网关时,roll _update.yml Ansible playbook 会失败。此失败是由 radosgw-admin 命令造成的,因为 Ceph Monitor 容器在升级过程中停止,因此无法执行。在这个版本中,在升级过程中跳过 ceph-handler 角色内的多站点 Ceph 对象网关代码。因此,roll _update.yml Ansible playbook 会成功运行。

(BZ#1984880)

在切换到容器化守护进程时,Ceph Monitor 仲裁检查会失败

switch-from-non-containerized-to-ceph-daemons.yml Ansible playbook 中引入了一个回归程序错误。因为当前节点的主机名没有测试,所以 Ceph Monitor 仲裁检查导致 Ceph Monitor 仲裁检查失败。在这个版本中,当前 Ceph Monitor 节点的 ansible_hostname 事实会被正确使用。因此,Ceph Monitor 仲裁检查可以成功。

(BZ#1990733)

在升级失败时添加新 Ceph 对象网关实例

radosgw_frontend_port 选项没有考虑多个 Ceph 对象网关实例,并且为所有实例配置了端口 8080。在这个版本中,每个 Ceph 对象网关实例增加了 radosgw_frontend_port 选项,允许您使用多个 Ceph 对象网关实例。

(BZ#1859872)

Ceph Ansible 删除任何套接字文件,并启用集群重新部署

在以前的版本中,*.asok 文件保留在清除 playbook 完成后,从而导致在重新部署集群时失败。在这个版本中,ceph-ansible 会移除任何可能存在的套接字文件,并可安全地重新部署集群。

(BZ#1861755)

添加了对容器化 Red Hat Ceph Storage 部署中的 tcmu-runner 进程的日志轮转的支持

在以前的版本中,当在容器中部署带有 iSCSI 的 Red Hat Ceph Storage 时,tcmu-runner 进程没有日志轮转,因此消耗容器中的所有空间。在这个版本中,日志轮转支持被添加到 tcmu-runner 进程中,日志文件会定期轮转,从而减少空间消耗。

(BZ#1873915)

对于混合了 FileStore OSD 和 BlueStore OSD 的 OSD 节点,FileStore 到 BlueStore 的迁移过程可能会失败

在以前的版本中,如果部署运行比 3.2 更早的 Red Hat Ceph Storage 版本,当没有将 osd_objectstoregroup_varshost_varsinventory 中明确设置时,部署会有 FileStore OSD。FileStore 是 Red Hat Ceph Storage 3.2 之前的默认设置。

将部署的存储集群升级到 Red Hat Ceph Storage 3.2 后,向现有 OSD 节点添加的新 OSD 将使用 BlueStore 后端,因为它成为新的默认值。这会导致在同一节点上混合使用 FileStore 和 BlueStore OSD。在某些情况下,FileStore OSD 可能会与 BlueStore OSD 共享日志或 DB 设备。在这种情况下,重新部署所有 OSD 会导致 ceph-volume 错误,原因是分区无法在 lvm batch 中传递,或者因为 GPT 标头。

在这个版本中,迁移混合了 FileStore 和 BlueStore 配置的 OSD 有两个选项:

  • 在运行 filestore-to-bluestore.yml playbook 时,额外变量 force_filestore_to_bluestore 被设为 true。此设置强制 playbook 自动迁移所有 OSD,甚至那些已使用 BlueStore 的 OSD。
  • 运行 filestore-to-bluestore.yml playbook,但不设置 force_filestore_to_bluestore (默认为 false)。这会导致 playbook 在混合了 FileStore 和 BlueStore OSD 的节点上自动跳过迁移。它将迁移仅具有 FileStore OSD 的节点。在 playbook 执行结束时,将显示一个报告来显示哪些节点被跳过。

在从 Red Hat Ceph Storage 3 升级到 4 之前,请手动检查跳过的每个节点,以确定迁移 OSD 的最佳方法。

(BZ#1875777)

可以在 Docker registry 密码中使用特殊字符

在以前的版本中,Docker registry 密码中设置的特殊字符不会被正确处理。在此发行版本中,如果在 Docker registry 中使用了特殊字符时,Ansible playbook 不会失败。现在 Docker registry 密码中可以使用特殊字符,Ansible playbook 可以按预期工作

(BZ#1880252)

ceph-volume Ansible 模块报告有关逻辑卷和卷组的正确信息

在以前的版本中,当在带有基于 OSD 上的 Red Hat Enterprise Linux 8 容器的 Red Hat Enterprise Linux 7 主机中应用 ceph-volume lvm zap --destroy 命令时,lvm 缓存没有为主机刷新,仍然报告存在的逻辑卷和卷组。在这个版本中,ceph_volume Ansible 模块会在主机上触发 命令,以确保刷新 lvm 缓存并报告有关逻辑卷和卷组的正确信息。

(BZ#1886534)

可以使用 journalctl 命令查看 Ceph 容器日志

在以前的版本中,在 journald 中不存在 Ceph 容器日志,因为 Podman 在以分离模式运行容器和 systemd 类型时,使用 Kubernetes 文件作为默认日志驱动程序。在这个版本中,Ceph 容器配置有 journald 日志驱动程序,其日志可通过 journalctl 命令访问。

(BZ#1890439)

Ceph Ansible 将文件和目录所有权值设置为 nobody:nobody

在以前的版本中,Ceph Ansible 将文件和目录所有权值设置为 root:root。这会导致 alertmanagerprometheus 服务的权限问题。

在这个版本中,Ceph Ansible 将所有权设置为 nobody:nobody。这消除了权限问题。

(BZ#1901543)

6.2. Cockpit Ceph 安装程序

通过 Cockpit 安装 Ceph 不再失败

在以前的版本中,当用户在主机选择页面中提供 localhost 作为主机名称时,Cockpit 安装会失败并带有一个 Systemd must be present 错误。在这个版本中,主机页面 UI 将显示正确的错误消息,并拒绝用户使用 localhost 作为主机名继续。

(BZ#1828246)

cockpit 安装程序在 rgws.yml 中为存储桶数量生成不正确的值

在以前的版本中,使用 Cockpit 安装程序生成 rgws.yml 文件会为 defaults.rgw.buckets.data:pgnumrgw_override_bucket_index_max_shards 生成不正确的值。

在这个版本中,Cockpit 安装程序会在 rgws.yml 中创建正确的值。

(BZ#1855148)

6.3. Ceph 管理仪表板

修复 prometheus 查询,以报告仪表板中 CPU 使用情况的实时指标

在以前的版本中,Red Hat Ceph Storage 仪表板中的主机页面显示有关集群中节点的 CPU 用量不正确的数据,因为 prometheus 查询不准确。在这个版本中,prometheus 查询已被修复,CPU 用量数据给出了接近实时的指标。

(BZ#1830375)

删除了预期 Red Hat Ceph Storage 仪表板中嵌入的 Grafana 仪表板中将来数据的选项

在以前的版本中,当从整体性能图中的"Historical Data"中选择选项"这个星期"时,在 Grafana 指标预期将来的数据中不会显示指标较少的历史数据选项。在这个版本中,预期将来数据的历史数据选项已被删除,指标会如预期显示。

(BZ#1868638)

cherrypy 不再在标头和错误页面中显示其版本

在以前的版本中,cherrypy 在标头和错误页面中显示其版本。公开此信息会导致潜在的安全漏洞。在这个版本中,仪表板和 Prometheus 服务器的标头现在显示 Ceph-Dashboard 和 Ceph-Prometheus 而不是 cherrypy 版本。此更改消除了安全漏洞。

(BZ#1927719)

6.4. Ceph 文件系统

Ceph fs status 命令不再失败并带有 AttributeError' 异常

在以前的版本中,Ceph fs status 命令会失败并带有 AttributeError 异常,原因是在重新加入期间处理元数据不正确。在这个版本中,Ceph fs status 命令将预期的状态返回为未知对象,如果 NoneType 是 metadata 对象类型。

(BZ#1884463)

6.5. Ceph Manager 插件

Ceph 管理器的 alarm 模块可以正常工作,没有健康警告

在以前的版本中,Ceph 管理器会使用默认值覆盖一些特定于模块的配置选项,从而导致模考失败,并带有 ALERTS_SMTP_ERROR unable to send alert email,这是因为它会继续使用默认值 smtp_ssl=true。在这个版本中,Ceph 管理器的默认值处理已被修复,警报模块可以正常工作,没有健康警告。

(BZ#1878145)

现在可以访问 restful 模块 API 端点

在以前的版本中,restful 模块使用 dict.iteritems,它在 python 3 中已不再可用。因此,无法访问很多 restful 模块 API 端点。在这个版本中,restful 模块已更新为使用 dic.items,API 端点可以被访问。

(BZ#1897995)

ceph-mgr Prometheus exporter 没有正确处理 IPv6 地址

在以前的版本中,ceph-mgr Prometheus 导出器输出中的一些元数据指标显示 IPv6 地址不完整或格式不正确。在这个版本中,exporter 可以正确处理 IPv6 地址。

(BZ#1929064)

6.6. Ceph 卷实用程序

执行 ceph-volume 命令,将调试输出发送到 /var/log/ceph/ceph-volume.log

在以前的版本中,执行 ceph-volume 命令始终会将调试级别输出发送到 /var/log/ceph/ceph-volume.log,而不会考虑 --log-level 选项中设置的级别。在本发行版本中,执行 ceph-volume 命令会在 --log-level 选项指定的级别上发送输出。

(BZ#1867717)

ceph volume lvm batch 正确报告 SSD 设备,并部署正确的配置

在以前的版本中,ceph-volume lvm batch 命令会导致 udev 的竞争条件导致 SSD 设备错误报告为 HDD,从而导致意外的部署配置。通过此发行版中的代码更新,ceph-volume lvm batch 命令正确报告 SSD,并部署集群的预期配置。

(BZ#1878500)

将新的 SSD OSD 添加到存储集群后堆栈更新失败

在以前的版本中,使用堆栈更新将新的 SSD OSD 添加到存储集群中的同一卷组 (VG) 会导致堆栈更新失败。这是因为堆栈更新错误地认为新 SSD 属于不同的逻辑卷 (LV),而不是属于同一 LV。在这个版本中,堆栈更新新添加的 OSD 作为属于同一 LV 的 OSD,并且不再失败。

(BZ#1892441)

6.7. Ceph 对象网关

对升级的 OSD 的 set-lifecycle 和 delete-lifecycle 操作现在可以正常工作

在以前的版本中,在从 Red Hat Ceph Storage 3 升级到 Red Hat Ceph Storage 4.2z2 时,针对升级的 OSD 安装旧生命周期策略会产生一个结构解码错误,虽然集合生命周期操作会成功。在这个版本中,解码存储桶生命周期状态条目所需的更改已被修复,守护进程的升级可以正常工作。

(BZ#1993365)

--reset-stats 选项为具有大量存储桶的用户更新组中存储桶

在以前的版本中,radosgw-admin 用户 --reset-stats 选项同时更新用户拥有的所有存储桶的统计信息。对于 bucket 数量非常多的用户,进行更新所需的时间可能会超过关联的 RADOS 操作长度。这可能会导致 Ceph 将 OSD 标记为 down,并可能导致 OSD 出现问题。

在这个版本中,--reset-stats 选项更新 1000 存储桶组中的统计信息。这允许大量存储桶进行更新,而不会产生 OSD 阻塞。

(BZ#1859257)

当 gc 条目从系统中清除时,gc perf 计数器会递增

在以前的版本中,当 gc 条目从系统中清除时,gc perf 计数器不会递增。在这个版本中,根据从系统中删除的 gc 条目数观察 gc perf 计数器的正确值。

(BZ#1882484)

列出上一个 GC 对象中的条目不会进入一个循环

在以前的版本中,最后一个 GC 对象中的条目列表会进入一个循环,因为每次为最后一个 GC 对象重置标记。在这个版本中,会更新截断的标记,它不会导致标记被重置,列表可以正常工作。

(BZ#1884023)

Ceph 对象网关在 bucket 创建过程中同步存储桶缓存信息

在以前的版本中,Ceph 对象网关不会在创建存储桶时同步存储桶信息的缓存。如果用户尝试从某一个 RGW 访问不存在的存储桶,然后从另一个 Ceph 对象网关创建该 bucket,从第一个 Ceph 对象网关访问存储桶会导致 404 错误,表示该 bucket 不存在,尽管不存在。在这个版本中,RGW 在 bucket 创建过程中同步缓存,以便每个 Ceph 对象网关可以访问存储桶。

(BZ#1901973)

KafkaConnect 将对象从 Kafka 主题发送到 RGW S3 存储桶

在以前的版本中,将对象从 Kafka 主题发送到 RGW S3 存储桶会失败,因为 chunked-encoding 对象签名没有被正确计算。

这会在 RADOS 网关日志中产生以下错误:

20 AWSv4ComplMulti: ERROR: chunk signature mismatch

在这个版本中,chunked-encoding 对象签名会被正确计算,允许 KafkaConnect 成功发送对象。

(BZ#1912538)

6.8. 多站点 Ceph 对象网关

bucket 索引在存储桶同步被禁用后不会收集条目

在以前的版本中,在禁用多站点同步的存储桶上使用 radosgw-admin bucket check --fix …​ 变量会设置一个不正确的标记,表示同步没有被禁用。将数据添加到 bucket 索引日志中,这些日志不会被使用或修剪,因此随着时间的推移消耗了更多的存储。在这个版本中,在运行 radosgw-admin bucket check --fix …​ 命令时,同步标志会被正确复制。bucket 索引日志在存储桶同步被禁用后不会收集条目。

(BZ#1894702)

6.9. RADOS

Progress 模块不再会被无限期的卡住

在以前的版本中,Ceph 状态中的进度 vents 会被无限期的卡住。这是因为 Progress 模块尽早检查 PG 状态,而不与 OSD map 的 epoch 同步。在这个版本中,进度事件按预期弹出。

(BZ#1826224)

导致 Ceph Monitor 崩溃的进度模块

在回填和恢复操作期间,progress 模块可以生成负进度事件。对于大型存储集群,太多的负进度事件可能会导致 Ceph Monitor 节点上的大型内存分配,从而导致 Ceph Monitor 崩溃。在这个版本中,代码可确保进度事件不为负数。因此,progress 模块不会导致 Ceph monitor 崩溃。

(BZ#1997838)

Ceph 监控现在在处理转发 OSD 故障报告时要小心

在以前的版本中,Ceph monitor 会错误地向管理员和日志记录系统报告速度较慢的操作。在这个版本中,Ceph monitor 会谨慎处理转发 OSD 故障报告,因此速度较慢的操作可能会发生很多。

(BZ#1866257)

适当地监控 osdmaps

在以前的版本中,尽管 monitor 已被"out" OSD 使用,但 monitor 无法修剪 stm stale osdmaps,因为在修剪 osdmaps 时监控器同时考虑了"in"和"out" OSD。在这个版本中,不会考虑"out" OSD,并且 osdsmaps 被正确修剪。

(BZ#1875628)

在混合集群中,BlueStore 和 FileStore OSD 以相同的顺序列出对象

在以前的版本中,在使用 BlueStore 和 FileStore OSD 的集群中,深度清理和回填可能会报告因为后端中的排序机制不一致而缺少的对象。在这个版本中,添加了一个功能标记 OSD_FIXED_COLLECTION_LIST,以确保 BlueStore 中的 collection_list 方法以与 FileStore 相同的顺序列出对象。

(BZ#1880188)

创建的日志文件带有不正确的权限

在以前的版本中,代码加法改变了相关功能的调用顺序。这会导致一些守护进程创建具有不正确权限的日志文件。在这个版本中,以正确的顺序调用功能,守护进程会创建具有正确权限的日志文件。

(BZ#1884469)

启用 bluefs_buffered_io 可防止性能下降

在以前的版本中,禁用了 bluefs_buffered_io 选项,这会导致在某些情况下 RocksDB 和 OMAP 交互速度较慢。在此发行版本中,选项 bluefs_buffered_io 设置为 True,从而防止性能下降。

(BZ#1930264)

现在控制 onodes 内存增长

在以前的版本中,bluestore_cache_trim_max_skip_pinned 选项的默认值为 64,大型集群非常低。由于这个选项控制修剪 onodes 的速度,使用当前的默认值,所以可能会导致 onode 的构建导致内存增长。在这个版本中,bluestore_cache_trim_max_skip_pinned' 的默认值是 1000,内存增长会被控制。

(BZ#1947215)

6.10. RADOS 块设备 (RBD)

在启用客户端 QoS 节流时,使用 librbd 的应用可以正常工作

在以前的版本中,当 librbd 中启用了客户端 QoS 节流时,它可能会崩溃,因为数据路径没有被锁定正确保护。在这个版本中,添加缺少的锁定,在启用客户端的 QoS 节流时,为 IO 使用 librbd 的应用可以正常工作。

(BZ#1878268)

6.11. NFS Ganesha

READDIR 返回结果中的所有文件布局

在以前的版本中,一些文件布局会在 READDIR 中造成循环,并且永远不会返回的结果。在这个版本中,READDIR 可以正常工作,并正确返回结果。

(BZ#1845501)

第 7 章 已知问题

本节记录了本版本的 Red Hat Ceph Storage 中已知的问题。

7.1. Ceph Ansible 实用程序

仅在 CephFS 相关池中部署 PG 自动缩放器无法正常工作

要临时解决这个问题,可以在 playbook 运行后在 CephFS 相关池中手动启用 PG 自动缩放器。

(BZ#1836431)

Ceph OSD 无法使用 osd_max_markdown_count 参数作为 systemd 单元模板强制执行参数'Restart=always'

OSD 守护进程的 systemd 单元模板强制执行参数 Restart=always,因此阻止使用 osd_max_markdown_count 参数,从而导致服务重启。要解决这个问题,请使用 ceph_osd_systemd_overrides 变量覆盖 OSD systemd 模板中的 Restart= 参数,即:

[osds]
osd0 ceph_osd_systemd_overrides="{'Service': {'Restart': 'no'}}"

(BZ#1860739)

filestore-to-bluestore playbook 不支持 'osd_auto_discovery' 场景

基于 osd_auto_recovery 场景的 Red Hat Ceph Storage 4 部署无法使用 filestore-to-bluestore playbook 来简化 BlueStore 迁移。

要临时解决这个问题,请使用 shrink-osd playbook,并使用 osd_objectstore: bluestore 重新部署缩小的 OSD。

(BZ#1881523)

升级过程不会自动停止 ceph-crash 容器守护进程。

升级过程会向角色 ceph-crash 发出调用,但调用仅启动 ceph-crash 服务。如果在升级过程中 ceph-crash 容器守护进程仍在运行,则在升级完成后不会重启它们。

要临时解决这个问题,请在升级后手动重启 ceph-crash 容器。

(BZ#1943471)

7.2. Ceph 卷实用程序

当用户运行 osd.ymlsite.yml playbook 时,ceph-ansible 不会在新设备上创建 OSD

当用户明确传递一组 db 设备、--db-devices 或 wal 设备 --wal-devices 时,ceph-volume lvm batch 不可用时,它会被过滤掉,结果会有所不同。当前 ceph-volume lvm batch 的实施在其中一个传递的 db 或 wal 设备不可用时不允许在非交互模式中添加新的 OSD,以防止预期的 OSD 拓扑。由于 ceph-volume 的限制,ceph-ansible 无法在设备和 dedicated_devices 的批处理场景中添加新 OSD。

(BZ#1896803)

7.3. 多站点 Ceph 对象网关

Ceph 对象网关多站点设置中的对象无法同步

当用户在 Ceph 对象网关多站点设置中运行 radosgw-admin sync status 命令时,一些对象可能无法成功同步并导致状态不匹配。

目前,这个问题还没有临时解决方案。

(BZ#1905369)

第 8 章 源

更新的 Red Hat Ceph Storage 源代码软件包位于以下位置: