发行注记
Red Hat Ceph Storage 4.1z3 发行注记
摘要
第 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.1 包含 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 版本中引入的所有主要更新、增强功能和新功能。
这个版本添加的主要功能是:
- Vault 支持
- 支持与 OSD 容器一起定位 Grafana 容器
- 从 CephFS 中的快照克隆子卷的功能
Vault 支持
在 Red Hat Ceph Storage 4.1 发行版本中,Ceph 对象存储网关(RGW)现在可以与 Hashicorp Vault 安全密钥管理服务交互。作为存储管理员,您可以在 HashiCorp Vault 中安全地存储密钥、密码和证书,以用于 Ceph 对象网关。HashiCorp Vault 为 Ceph 对象网关使用的服务器端加密提供安全密钥管理服务。
有关更多信息,请参阅 Red Hat Ceph Storage 对象网关配置和管理指南中的 HashiCorp Vault 部分。
支持定位 Grafana 容器
Red Hat Ceph Storage 4.1 发行版本支持带有 Ceph OSD 的 Grafana 容器和一个额外的横向扩展守护进程(卡inality 2)的共同定位。以前,卡性 2 只在 Red Hat Ceph Storage 4.0 版本中支持 Ceph 对象网关。
如需更多信息,请参阅 Red Hat Ceph 支持的配置。
从 CephFS 中的快照克隆子卷
可以通过克隆子卷快照来创建子卷。这是一个异步操作,涉及将快照中的数据复制到子卷。
有关从 CephFS 中快照克隆子卷的信息,请参阅 Red Hat Ceph Storage File System Guide。
3.1. Ceph Ansible 实用程序
ceph-ansible
现在支持使用多个域的多站点部署
在以前的版本中,ceph-ansible
多站点部署支持单个 RGW 域。在这个版本中,ceph-ansible
现在支持多个域及其相关 zone、zonegroups 和端点。
有关更多信息,请参阅 Red Hat Ceph Storage 安装指南中的配置多站点 Ceph对象网关 。
从 Filestore OSD 迁移到 Bluestore 时,专用日志设备会保留其配置
在以前的版本中,迁移到 Bluestore OSD 时无法重新利用 Filestore OSD 的专用日志设备。专用设备配置示例将 HDD 用于数据和日志的 SSD。
在这个版本中,专用日志设备会在迁移过程中保留其配置,以便使用 Bluestore OSD DB 重复使用它们。
如需更多信息,请参阅如何在 管理指南 中将对象存储从 FileStore 迁移到 BlueStore。
purge-container-cluster.yml
playbook 现在支持带有三位 ID 的集群
在以前的版本中,purge-container-cluster
仅支持具有最多 99 OSD 的 Red Hat Ceph Storage 集群。这是因为 playbook 支持带有两位索引的 ceph-osd 服务。在这个版本中,您可以使用三位 ID 正确清除集群。
OpenStack 用户可以通过具有只读权限的默认 admin 帐户部署 Ceph Dashboard
在以前的版本中,OpenStack 用户通过具有完整管理特权的 Ceph 用户所做的更改可能会覆盖集群设置或状态。借助此功能,Ceph Dashboard admin 帐户只能监控 Ceph 集群状态并检索信息和设置。
添加了对容器化 Red Hat Ceph Storage 部署中的 logrotate
的支持
在这个版本中,容器化 Ceph 日志会使用 logrotate
程序轮转。这有助于防止文件系统填充日志数据。
3.2. Ceph 文件系统
子卷和子卷快照的独立生命周期操作
因为 CSI 协议将快照视为第一类对象,这需要源子卷和子卷快照相互独立地运行。由于 Kubernetes 存储接口使用 CSI 协议,因此使用快照保留选项(--retain-snapshots
)进行子卷删除。这允许保留的快照上的其他生命周期操作正确进行。
3.3. Ceph 卷实用程序
在原始模式中使用 ceph-volume
时 Ceph OSD 加密支持
在此发行版本中,ceph-volume
命令可以准备 Ceph OSD 来使用 原始
模式进行加密。
3.4. 分发
Ceph 工具存储库中包含 S3 客户端
自本发行版本起,S3 命令行客户端 s3cmd
包含在 Red Hat Ceph Storage 4 Tools 软件仓库中。要安装 S3 命令行客户端软件包,请首先启用 rhceph-4-tools-for-rhel-8-x86_64-rpms
存储库。
3.5. Ceph 对象网关
支持 Ceph 对象网关中的 Amazon S3 资源
AWS 提供安全令牌服务(STS),允许对现有 OpenID Connect/ OAuth2.0 兼容身份服务(如 Keycloak)进行安全联合。STS 是一个独立的 REST 服务,它为应用程序或用户提供临时令牌,在用户进行身份验证后访问简单存储服务(S3)端点。
在以前的版本中,没有持久性 Amazon Web Services(AWS)凭证的用户无法通过 Ceph 对象网关访问 S3 资源。在这个版本中,Ceph Object Gateway 支持 STS AssumeRoleWithWebIdentity。此服务允许已通过 OpenID Connect/OAuth 2.0 兼容 IDP 验证的 Web 应用程序用户通过 Ceph 对象网关访问 S3 资源。
如需更多信息,请参阅 开发人员 指南中的安全令牌服务。
AWS S3 ListObjects v2 操作提供了改进的机制来列出 S3 存储桶中的对象,而无需额外的配置
在以前的版本中,S3 协议客户端(如 S3A 和 awscli 命令行工具)必须使用旧的 ListObjects 方法进行配置。借助此功能,AWS S3 ListObjects v2 操作是实现的,它提供了一个改进的机制,用于列出 S3 存储桶中的对象。
Ceph 对象网关的默认 bucket-index 分片增加到 11
新存储桶的默认 bucket-index 分片数量已经从 1 增加到 11。这会增加 small bucket 的写入吞吐量,并延迟动态重新划分。这个变化只会影响新的部署和区。
对于现有的部署,您可以使用 radosgw-admin zonegroup 修改 --bucket-index-max-shards=11
命令更改此默认值。如果 zonegroup 是 realm 的一部分,则必须使用 radosgw-admin period update --commit
命令提交更改。如果提交未完成,则更改将在 Ceph 对象网关重新启动后才会生效。
升级后,必须手动增大新的默认值,但在新的 Red Hat Ceph Storage 4.1 部署中自动设置新的默认值。
Ceph 对象网关日志包括 Beast 的 访问日志
在这个版本中,Ceph 对象网关日志中包括 Apache 样式的 访问日志行
Beast。在这个版本中,日志有助于诊断连接和客户端网络问题。
会话令牌过期的最小值可以配置
rgw_sts_min_session_duration
选项现在可以值小于默认值 900 秒。
列出大型存储桶的内容
在这个版本中,在以分隔和可能的前缀时,通过跳过较低伪目录中的对象来更有效地指定排序列表。这可以减少 Ceph 客户端和 Ceph 对象网关之间的交互,以及 Ceph 对象网关和 Ceph OSD 间的交互。此功能增强以及 HA 代理配置更改允许在大型存储桶中列出内容。
Ceph 对象网关日志包括 Beast 的访问日志
在这个版本中,前端 Web 服务器 Beast 在 Ceph 对象网关日志中包含一个 Apache 样式的访问日志行。在这个版本中,日志有助于诊断连接和客户端网络问题。
3.6. RADOS
更新,以使用 ping 时间来跟踪网络性能
在以前的版本中,当出现网络问题时,很难与其他性能问题相区分。在这个版本中,如果平均 Red Hat Ceph Storage OSD heartbeat 超过任何计算间隔的可配置阈值,将生成 heath 警告。Red Hat Ceph Storage OSD 计算 1 分钟、5 分钟和 15 分钟的时间间隔,平均、最小和最大值。
添加到仪表板中的 BlueStore 压缩统计信息
在这个版本中,在仪表板中可以看到 BlueStore OSD 的相关性能指标。
有关仪表板的更多信息,请参阅 控制面板指南。
当 Ceph OSD 遇到 I/O 错误时,存储集群状态会改变
在这个版本中,Ceph Monitor 有一个 mon_osd_warn_num_repaired
选项,该选项默认设置为 10
。如果任何 Ceph OSD 已修复超过这一许多 I/O 错误,则会生成 OSD_TOO_MANY_REPAIRS
健康警告状态。要清除此警告,在 ceph tell
命令中添加了 new clear_shards_repaired
选项。例如:
ceph tell osd.NUMBER clear_shards_repaired [COUNT]
默认情况下,clear_shards_repaired
选项会将修复计数设置为 0。
要在执行其他 Ceph OSD 修复时再次警告,您可以指定 mon_osd_warn_num_repaired
选项的值。
更新至 heartbeat 宽限期
在以前的版本中,当在 48 小时内没有 Ceph OSD 故障时,没有将宽限期重置回默认值的机制。在这个版本中,如果 Ceph OSD 上没有失败,心跳计时器被重置为默认值 20 秒。当最近失败和最新失败之间的故障间隔超过 48 小时时,宽限期将重置为默认值 20 秒。
宽限期是间隔,Ceph 存储集群将 Ceph OSD 视为没有心跳状态。宽限期根据估算或 Ceph ODS 遇到故障的频率进行扩展。
osd_client_message_cap
选项已添加回
在以前的版本中,
选项已被删除,但在这个发行版本中,osd_client_message_cap 选项已经被 re-introduced。此选项有助于通过限制这些请求来控制容器内客户端请求的最大数量。当 Ceph OSD flaps 造成大量基于客户端的流量时,这样做会很有用。
osd_client_message_cap
第 4 章 技术预览
本节概述了此 Red Hat Ceph Storage 发行版本中引入或更新的技术预览功能。
技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
如需红帽技术预览功能支持范围的更多信息,请参阅 https://access.redhat.com/support/offerings/techpreview/。
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 配置数据库章节。
第 6 章 程序错误修复
本节论述了在这个 Red Hat Ceph Storage 发行版本中修复的用户有严重影响的错误。此外,部分还包括之前版本中发现的固定已知问题的描述。
6.1. Ceph Ansible 实用程序
现在,可在 Ceph 集群部署后修改复制池的大小
在以前的版本中,在使用 director 部署 Ceph 集群后,增大复制池的大小会失败。这是因为任务负责自定义池大小的问题会阻止在 playbook 重新运行时执行。在这个版本中,您可以在集群部署后修改池大小。
(BZ#1743242)
Ceph Ansible 在 Ceph 仪表板部署期间支持多个 grafana
实例
在以前的版本中,在多节点环境中,ceph-ansible
无法配置多个 grafana
实例,因为只支持一个节点,保留了其余节点。借助此次更新,ceph-ansible
支持多个实例,并在部署 Ceph 控制面板的过程中在所有 Ceph 监控节点上注入 Ceph 特定的布局。
当仪表板功能被禁用时,运行 Ansible purge-cluster.yml
playbook 不再会失败
在以前的版本中,当仪表板功能被禁用时,使用 purge-cluster-yml
playbook 清除集群会失败:
registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.1 msg: '[Errno 2] No such file or directory'
这是因为 dashboard_enabled
变量被忽略。在这个版本中,dashboard_enabled
变量会被正确处理,purge-cluster.yml
会成功运行。
在 Red Hat OpenStack Platform 上安装 Red Hat Ceph Storage 不再失败
在以前的版本中,当尝试使用 Red Hat OpenStack Platform 16 安装 Red Hat Ceph Storage 时,ceph-ansible
工具变得无响应,它会返回类似如下的错误:
'Error: unable to exec into ceph-mon-dcn1-computehci1-2: no container with name or ID ceph-mon-dcn1-computehci1-2 found: no such container'
这是因为 ceph-ansible
从 handler_osds.yml 中错误的节点读取事实 container_exec_cmd
的值。
在这个版本中,ceph-ansible
从正确的节点读取 container_exec_cmd
的值,安装可以成功进行。
Ansible 在完成后取消设置 norebalance
标记
在以前的版本中,Ansible 不会取消设置 norebalance
标志,需要手动取消设置。在这个版本中,roll -update.yml
Ansible playbook 会在完成后自动取消设置 norebalance
标记,且不需要手动设置。
在启用仪表板时,Ansible 会升级多站点 Ceph 对象网关
在以前的版本中,当启用 Red Hat Ceph Storage Dashboard 且尝试使用 Ansible 升级到更新版本的 Red Hat Ceph Storage 时,在多站点设置中升级到辅助 Ceph 对象网关网站会失败。在这个版本中,对 Red Hat Ceph Storage 的升级可以正常工作。
Ceph Ansible 与 Ansible 2.9 配合使用。
在以前的版本中,ceph-ansible
版本 4.0 及更高版本无法用于 Ansible 版本 2.9。这是因为 ceph-validate
角色不允许对 Ansible 2.9 运行 ceph-ansible
。在这个版本中,ceph-ansible
可以与 Ansible 2.9 一起工作。
带有自定义软件存储库的 Ceph 安装不再失败
在以前的版本中,不允许使用自定义软件仓库来安装 Ceph。这是因为 redhat_custom_repository.yml
文件已被删除。在这个版本中,会包括 redhat_custom_repository.yml
文件,自定义软件仓库可用于安装 Red Hat Ceph Storage。
只有红帽签名的软件包才可以使用自定义软件存储库来安装 Ceph。不支持自定义第三方软件存储库。
(BZ#1808362)
如果没有安装仪表板,ceph-ansible
清除 playbook 不会失败
在以前的版本中,当没有部署仪表板时,在清除集群时清除 playbook 会失败,因为它会尝试删除不存在的仪表板相关资源。因此,清除 playbook 声明部署了仪表板,并清除失败。在这个版本中,如果不是部署的一部分,ceph-ansible
不会清除与仪表板相关的资源,并且清除可以成功完成。
(BZ#1808988)
将独立的 nfs-ganesha
守护进程用于外部 Ceph 存储集群不再在部署过程中复制密钥环
在以前的版本中,在由独立 nfs-ganesha
守护进程和外部 Ceph 存储集群组成的配置中,Ceph 密钥环没有在 Ceph Ansible 部署期间复制到 /etc/ceph。
在这个版本中,Ceph 密钥环被复制到 /etc/ceph/ 目录。
Ceph Ansible 在初始安装后更新 dashboard admin 用户的特权
在以前的版本中,ceph-ansible
只能在首次创建时设置仪表板用户的权限。在更改在安装过程中原始设置的 dashboard_admin_user_ro: false
后运行 playbook 不会更新用户的特权。在 Red Hat Ceph Storage 4.1z1 ceph-ansible
中,它已更新,以支持在成功运行 playbook 时更改仪表板用户权限。
docker-to-podman.yml
playbook 现在迁移仪表板容器
在以前的版本中,运行 docker-to-podman.yml
playbook,将所有守护进程从 docker
迁移到 podman
,但 grafana-server
和 dashboard 容器除外。在这个版本中,运行 docker-to-podman.yml
成功迁移所有守护进程。
来自旧容器的存储目录已被删除
在以前的版本中,旧容器的存储目录不会被删除。这可能导致高磁盘用量。如果您安装了 Red Hat Ceph Storage,清除它,然后重新安装它,则可以看到。在 Red Hat Ceph Storage 4.1z1 中,不再使用的容器的存储目录会被删除,不会过量磁盘用量。
在 Red Hat Enterprise Linux 8.1 上将容器化集群从 4.0 升级到 4.1 不会失败
在以前的版本中,当将 Red Hat Ceph Storage 集群从 4.0 升级到 4.1 时,升级可能会失败,并显示 set_fact ceph_osd_image_repodigest_before_pulling
的错误。由于如何更新容器镜像标签的问题,ceph-ansible
可能会失败。在 Red Hat Ceph Storage 4.1z1 ceph-ansible
中,它不再会失败,升级可以正常工作。
在现有 OpenStack 环境中启用 Ceph 仪表板会失败
在现有的 OpenStack 环境中,在启用 Ceph Manager 仪表板模块后配置 Ceph Dashboard 的 IP 地址和端口时,会导致与 HAProxy 配置冲突。为了避免这种冲突,请在启用 Ceph Manager 仪表板模块前配置 Ceph Dashboard 的 IP 地址和端口。
当部署 Ceph Object Gateway 次要站点时,Red Hat Ceph Storage Dashboard 会失败
在以前的版本中,Red Hat Ceph Storage Dashboard 无法在 Ceph 对象网关多站点部署中部署二级网站,因为 Ceph Ansible 运行 radosgw-admin 用户创建
命令时,命令会返回错误。在这个版本中,部署过程中的 Ceph Ansible 任务被分成两个不同的任务。这样,Red Hat Ceph Storage Dashboard 可以成功部署 Ceph 对象网关次要网站。
当使用 --limit
选项运行 playbook 时,Ceph 文件系统元数据服务器安装会失败
某些事实没有在第一个 Ceph Monitor 上设置,但这些事实已在所有对应的 Ceph 监控节点上设置。使用 --limit
选项运行 playbook 时,如果 Ceph monitor 不是批处理的一部分,则不会设置这些事实。当在任务用于 Ceph monitor 的任务时,这会导致 playbook 失败。在这个版本中,无论 playbook 使用 --limit
选项,Ceph Monitor 会设置这些事实。
升级失败时添加新的 Ceph Ojbect Gateway 实例
radosgw_frontend_port
选项没有考虑多个 Ceph 对象网关实例,并且为所有实例配置了端口 8080
。在这个版本中,每个 Ceph 对象网关实例增加了 radosgw_frontend_port
选项,允许您使用多个 Ceph 对象网关实例。
当在容器化环境中使用 FileStore 时,Ceph Ansible 的 shrink-osd.yml
playbook 会失败
Ceph Ansible 的 shrink-osd.yml
playbook 中缺少一个默认值,这会导致在容器化环境中缩小 FileStore 支持的 Ceph OSD 时导致失败。之前使用 ceph-disk
和 dmcrypt
的准备好的 Ceph OSD 在对应的 Ceph OSD 文件中保留了 加密的密钥
undefined。在这个版本中,添加了一个默认值,以便 Ceph Ansible shrink-osd.yml
playbook 可以在容器化环境中使用 dmcrypt
准备好的 Ceph OSD 上运行。
使用 HTTPS 会破坏 Prometheus 和警报管理器的访问
将 dashboard_protocol
选项设置为 https
会导致 Red Hat Ceph Storage Dashboard 尝试并访问 Prometheus API,这不支持 TLS 原生。在这个版本中,当将 dashboard_protocol
选项设置为 https
时,Prometheus 和警报管理器会强制使用 HTTP 协议。
Ceph Ansible shrink-osd.yml
playbook 无法正确清理 Ceph OSD
ceph_volume
模块的 zap
操作无法处理 osd_fsid
参数。这会导致 Ceph OSD 在底层设备上保留逻辑卷而不当缩小。在这个版本中,zap
操作可以正确地处理 osd_fsid
参数,并且可以在缩小后正确清理 Ceph OSD。
当存在多个存储集群时,Red Hat Ceph Storage 滚动更新会失败
在配置了多个存储集群时,运行 Ceph Ansible rolling_update.yml
playbook 会导致滚动更新失败,因为无法指定存储集群名称。在这个版本中,roll _update.yml
playbook 使用 --cluster
选项来允许特定存储集群名称。
在进行滚动更新时,hosts
字段具有无效值
Red Hat Ceph Storage 滚动更新失败,因为评估 Ceph Ansible rolling_update.yml
playbook 中的主机
值的语法已改变。在这个版本中,当 playbook 中指定 hosts
字段时,对代码的修复可以正确地更新语法。
运行 rolling_update.yml
playbook 不会检索存储集群 fsid
在运行 rolling_update.yml
playbook 时,Ceph Ansible 清单没有定义 Ceph Monitor 节点,例如在外部场景中,不会检索存储集群 fsid
。这会导致 rolling_update.yml
playbook 失败。在这个版本中,当清单中没有定义 Ceph monitor 时,会跳过 fsid
检索,允许 rolling_update.yml
playbook 在没有 Ceph monitor 时执行。
6.2. Cockpit Ceph 安装程序
Cockpit Ceph 安装程序不再为 RADOS 网关部署 Civetweb 而不是 Beast
在以前的版本中,Cockpit Ceph 安装程序将 RADOS 网关(RGW)配置为使用已弃用的 Civetweb 前端,而不是当前支持的 Beast 前端。在这个版本中,Cockpit Ceph 安装程序会使用 RGW 部署 Beast frontend。
因为缺少仓库,ansible-runner-service.sh
脚本不再会失败
在以前的版本中,Cockpit Ceph Installer 启动脚本可能会因为 /etc/containers/registries.conf
中缺少存储库而失败。缺少的存储库为 registry.redhat.io
。在 Red Hat Ceph Storage 4.1z1 中,ansible-runner-service.sh
脚本已更新,以明确状态 registry 名称,因此存储库不必包含在 /etc/containers/registries.conf
中。
Cockpit Ceph 安装程序不再在带有网桥的物理网络设备中失败
在以前的版本中,如果 Linux 软件桥接中使用了物理网络设备,则 Cockpit Ceph 安装程序会失败。这是因为代码中的一个逻辑错误。在 Red Hat Ceph Storage 4.1z1 中,代码已被修复,您可以使用 Cockpit Ceph Installer 在物理网络接口中使用桥接部署到节点上。
由于 cockpit-ceph-installer
没有为仪表板和 grafana 设置 admin 密码,集群安装不再会失败
在以前的版本中,cock-ceph-installer
不允许为仪表板和 Grafana 设置 admin 密码。这会导致存储集群配置失败,因为 ceph-ansible
需要修改默认密码。
在这个版本中,cock -ceph-installer
允许您在 Cockpit 中设置 admin 密码,以便存储集群配置可以成功完成。
Cockpit Ceph 安装程序允许在 Red Hat Enterprise Linux 8 中安装 RPM 安装类型
在以前的版本中,在 Red Hat Enterprise Linux 8 中,Cockpit Ceph Installer 不允许选择 RPM 安装类型,您只能安装容器化。在 Red Hat Ceph Storage 4.1z1 中,您可以选择 RPM 在裸机上安装 Ceph。
6.3. Ceph 文件系统
当子卷快照数量增加时,改进了 Ceph 文件系统性能
在以前的版本中,通过减慢文件系统操作,创建超过 400 个子卷快照会降低 Ceph 文件系统性能。在这个版本中,您可以将子卷配置为只支持 subvolume 根目录中的子卷快照,您可以防止跨子卷链接和重命名。这样,可以创建更高数量的子卷快照,且不会降低 Ceph 文件系统的性能。
big-endian 系统无法解码 Ceph MDS 的元数据
在以前的版本中,对 big-endian 系统上的 Ceph MDS 元数据解码会失败。这是因为 Ceph MDS 在解码 RADOS 中的结构时忽略 endianness。修复了 Ceph MDS 元数据例程,以更正此问题,从而导致 Ceph MDS 正确对结构进行编码。
6.4. Ceph Manager 插件
在设置警报间隔时 Ceph Manager 会崩溃
Ceph Manager 的 alert 模块中存在代码错误,这会导致 Ceph 管理器崩溃。在这个版本中,此代码错误已被修复,您可以在没有 Ceph Manager 崩溃的情况下设置警报间隔。
6.5. Ceph 卷实用程序
ceph-volume lvm batch
命令会失败,并显示混合设备类型
当使用 lvm batch
子命令过滤设备时,ceph-volume
命令不会返回预期的返回代码,并在 Ceph OSD 策略更改时返回。这会导致 ceph-ansible
任务失败。在此发行版本中,当 Ceph OSD 策略改变时,ceph-volume
命令会返回正确的状态代码,允许 ceph-ansible
正确检查是否能够添加新的 Ceph OSD。
ceph-volume
命令将逻辑卷视为裸设备
ceph-volume
命令将逻辑卷视为原始设备,这会导致 add-osds.yml
playbook 失败。这不允许将额外的 Ceph OSD 添加到存储集群中。在这个版本中,ceph-volume
中修复了一个代码错误,以便它正确处理逻辑卷,而 add-osds.yml
playbook 可用于将 Ceph OSD 添加到存储集群。
6.6. 容器
nfs-ganesha
守护进程正常启动
在以前的版本中,将 nfs-ganesha
与 RADOS 后端搭配使用的配置不会启动,因为缺少 nfs-ganesha-rados-urls
库。这是因为 RADOS 后端的 nfs-ganesha
库软件包已移到一个专门的软件包。借助此次更新,nfs-ganesha-rados-urls
软件包被添加到 Ceph 容器镜像中,因此 nfs-ganesha
守护进程可以成功启动。
6.7. Ceph 对象网关
Ceph 对象网关正确应用 AWS 请求签名
在以前的版本中,Ceph Object Gateway 没有正确地为签名标头应用 AWS 请求,并生成以下出错信息:
SignatureDoesNotMatch
在这个版本中,Ceph 对象网关代码已被修复,以正确地签名标头。这会导致在请求时成功签名请求。
radosgw-admin bucket check
命令不再显示不完整的多部分上传
在以前的版本中,运行 radosgw-admin 存储桶检查
命令会显示不完整的多部分上传。这可能会给站点 admin 造成混淆,因为输出可能已经出现,因为即使存储桶索引已损坏。在这个版本中,命令只显示错误和孤立的对象,并且过滤不完整的上传。
使用存储桶分片对象取消发布 omap 密钥
在版本控制存储桶中,偶尔删除对象操作无法完全完成。在这个状态中,这些对象的存储桶索引条目的名称和实例字符串为零。当后续重新划分时,空名称和实例字符串会导致该条目重新划分到 shard 0。不属于 shard 0 的条目结束在此处。这会在分片 0 上放置一个离散的条目数量,并大于其他分片。在这个版本中,删除操作部分不会清除 name 和 instance 字符串。如果重新划分划分,则没有完全删除的条目在正确的分片上结束,且不会被强制为 shard 0。
提高 Object Gateway 生命周期处理性能的整体吞吐量
在以前的版本中,因为给定环境中有很多存储桶或容器增加对象或存储桶工作负载,对象生命周期处理性能会受无法并行的。在这个版本中,并行处于两个方面,单个对象网关实例可以有多个生命周期处理线程,每个线程都有多个 work-pool 线程执行生命周期。另外,这个更新改进了 分片
分配给 worker 的分配,从而增加整体吞吐量。
当名为 rgw_parse_bucket_key
时,可以正确解释 bucket 租户状态
在以前的版本中,如果列出了某些租户 存储桶,则
bucket 统计数据 )在循环中处理密钥可能会错误地解释为租户。如果通过非空 rgw bucket 参数调用 rgw_parse_bucket_key
等 rgw_parse_bucket_key 等一些调用器(如 radosgw-adminrgw_parse_bucket_key
,则在密钥中没有租户时,它不会正确地为 bucket::tenant 分配空值。在 Red Hat Ceph Storage 4.1z1 中,如果没有正确解释租户应用租户状态,则存储桶租户成员会被清除。
Ceph 对象网关会尝试缓存和访问匿名用户信息
在以前的版本中,Ceph 对象网关会尝试获取尚未通过身份验证的每个请求的匿名用户信息。这个未经身份验证的访问会导致存储集群中的单个 Ceph OSD 造成高负载。在此发行版本中,Ceph 对象网关不会试图获取匿名用户信息,从而降低单个 Ceph OSD 的延迟和负载。
为对象正确报告生命周期过期
在以前的版本中,因为存在前缀规则,可能会报告一些对象不正确的生命周期过期时间。这是因为在生成 S3 HEAD 和 GET 请求中使用的过期标头时,生命周期过期规则中的可选前缀限制会被忽略。在 Red Hat Ceph Storage 4.1z1 中,规则前缀现在是正确报告对象过期的标头规则的一部分。
rgw.none
存储桶统计中大量对象
在某些情况下,计算统计的代码无法检查,如果存储桶索引条目引用了已存在的对象。这会导致存储桶统计不正确。在这个版本中,添加了代码来检查是否存在,修复存储桶统计。
对订购的存储桶列表的调用会卡住
在特定情况下,存储桶排序列表操作中的代码错误可能会造成,这个操作会卡在循环中,永远不会完成。在这个版本中,这个代码错误已被修复,因此对订购的存储桶列表的调用会如预期完成。
生命周期处理会忽略 NoncurrentVersionExpiration
中的 NoncurrentDays
假设在并行生命周期处理期间包含对象的修改时间被错误地初始化。这会导致在存储桶中带有非当前过期规则的非当前版本的对象在预期的过期时间前过期。在这个版本中,modificaction 时间(mtime
)会被正确初始化,并将其传播到生命周期的处理队列。这会导致在正确的时间段后过期过期。
有些对象的部分被错误地添加到垃圾回收中
在使用 Ceph 对象网关读取对象时,如果这些对象的某些部分值超过一半,则由 rgw_gc_obj_min_wait
选项定义,那么它们的 tail 对象被添加到垃圾回收列表中。垃圾回收列表中的 tail 对象已被删除,从而导致数据丢失。在这个版本中,垃圾回收功能用于延迟删除对象的垃圾回收已被禁用。因此,使用 Ceph Object Gateway 读取需要很长时间的对象不会添加到垃圾回收列表中。
6.8. 多站点 Ceph 对象网关
RGW 守护进程不再会崩溃
在以前的版本中,RGW 进程在某些情况下会因为 radosgw 关闭期间出现竞争条件而中止。使用多站点删除对象时会出现此问题。这是因为取消引用不安全的内存所致。在 Red Hat Ceph Storage 4.1z1 不安全内存中不再被引用,RGW 守护进程不再崩溃。
6.9. RADOS
当没有 Ceph Manager 或 OSD 在存储集群中时报告健康状态
在以前的 Red Hat Ceph Storage 版本中,存储集群健康状态为 HEALTH_OK
,即使存储集群中没有 Ceph Manager 或 OSD。在这个版本中,这个健康状况已改变,如果存储集群没有设置 Ceph Manager,或者所有 Ceph Manager 都停止,则会报告健康警告。因为 Red Hat Ceph Storage 大量依赖于 Ceph Manager 来提供关键功能,因此不建议运行不含 Ceph Manager 或 OSD 的 Ceph 存储集群。
ceph config show
命令显示正确的 fsid
在以前的版本中,ceph config show
命令只显示 Ceph Monitor 数据库中存在的配置键,因为
是 fsid
NO_MON_UPDATE
配置值,fsid 没有被正确显示。在这个版本中,ceph config show
命令会显示正确的 fsid
值。
RADOS 中的小对象和文件不再使用超过所需空间
Ceph 对象网关和 Ceph 文件系统 (CephFS) 将小对象和文件作为单独的对象存储在 RADOS 中。在以前的版本中,小于 BlueStore 的默认最小分配大小(min_alloc_size
)的对象使用了超过所需空间的 16 KB。这是因为,之前的默认值为 BlueStore 的 min_alloc_size
是固态设备(SSD)的 16 KB。目前,SSD 的 min_alloc_size
的默认值为 4 KB。这可以更好地利用空间,且不会影响性能。
减慢 ops 没有登录到集群日志
在以前的版本中,操作速度未登录到集群日志。它们记录在 osd
或 mon
日志中,但缺少预期的详细级别。在这个版本中,当 ops 被记录到集群日志级别,在一定程度上可以记录日志,从而使日志可用于调试。
回填不再在放置组合并过程中延迟
在以前的版本中,如果在合并前为源和目标放置组设置,在 Red Hat Ceph Storage 放置组合并中会比预期的时间要长。当不匹配显示为停滞时,进行回填操作。在 Red Hat Ceph Storage 4.1z1 中,代码已更新,代码只更新为合并其处理集合匹配的放置组。这个更改允许在不延迟的情况下完成合并。
Ceph Monitor 可能会超过内存目标
自动调节内存目标仅在 Ceph monitor 领导者上完成,而不是按照领导领导的 Ceph 监控器。这会导致 Ceph Monitor 关注器超过设置的内存目标,从而导致 Ceph monitor 在内存耗尽后崩溃。在这个版本中,自动调整过程为 Ceph Monitor 领导及其后续者应用内存目标,以便内存不会被在系统中耗尽。
当 OSD 长时间停机时,磁盘空间使用量不会增加
在以前的版本中,当 OSD 长时间停机时,会存储大量 osdmaps 且不修剪。这会导致过度的磁盘用量。在 Red Hat Ceph Storage 4.1z1 中,osdmaps 被修剪,无论是否有 down OSD 和磁盘空间没有被使用。
当 smartctl
退出带有非零错误代码时,会正确报告健康指标
在以前的版本中,如果 smartctl
以非零错误代码退出,Ceph 设备 get-health-metrics
命令可能无法报告指标,即使运行 smartctl
直接报告正确的信息。在这种情况下会报告 JSON 错误。在 Red Hat Ceph Storage 4.1z1 中,ceph 设备 get-health-metrics
命令会报告指标,即使 smartctl
会以非零错误代码退出,只要 smartctl
本身报告正确的信息。
由于存在时间范围导致的 Ceph Monitor 崩溃
在以前的版本中,当由 monotonic 时钟每次触发时,Ceph Monitor 可能会崩溃。这些崩溃会导致一个负的 monotonic 时间范围,并触发在 Ceph Monitor 中标记为崩溃。Ceph Monitor 代码已更新,可以容忍此断言,并将其解析为零长度的间隔,而不是负值。因此,当发生此断言时,Ceph Monitor 不会崩溃。
改进存储集群上的消息编码和解码
在部署包含异构架构(如 x86_64 和 s390)的 Red Hat Ceph Storage 集群时,可能会导致系统崩溃。另外,在某些用于 CephFS 的工作负载下,s390x 节点上的 Ceph Monitors 可能会意外崩溃。在这个版本中,使用标记 1
正确解码 entity_addrvec_t
,使用中间整数变量类型来正确解码大端系统上的 enum
类型。因此,s390x 节点上的异构存储集群和 Ceph Monitors 不再崩溃。
6.10. RADOS 块设备 (RBD)
可以同时发布多个 rbd unmap
命令,对应的 RBD 块设备则已被成功 map
在以前的版本中,发出并行 rbd unmap
命令可能会导致 udev 相关的事件竞争条件。命令会将故障分析失败,对应的 RBD 块设备可能仍然映射到其节点。在这个版本中,已修复了与 udev 相关的事件竞争条件,命令将不再失败。
第 7 章 已知问题
本节记录了本版本的 Red Hat Ceph Storage 中已知的问题。
7.1. Ceph Ansible 实用程序
仅在 CephFS 相关池中部署 PG 自动缩放器无法正常工作
要临时解决这个问题,可以在 playbook 运行后在 CephFS 相关池中手动启用 PG 自动缩放器。
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。
7.2. Ceph 管理仪表板
仪表板不提供正确的 Ceph iSCSI 错误消息
如果 Ceph iSCSI 返回错误,例如在用户登录时删除 iSCSI 目标时 HTTP "400" 代码,则 Red Hat Ceph Storage 仪表板不会使用弹出通知将该错误代码和消息转发到 Dashboard 用户,但会显示通用 "500 Internal Server Error"。因此,仪表板提供的消息没有提供的信息,甚至没有误导;预期行为("用户无法删除忙碌的资源")被识别为可操作失败("内部服务器错误")。要临时解决这个问题,请参阅 Dashboard 日志。
7.3. Ceph 卷实用程序
Ceph OSD 启动失败,因为 udev
重置 BlueStore DB 和 WAL 设备的权限
当使用 ceph-volume lvm create
命令或指定分区(使用带 Ceph Ansible 的 lvm_volume
选项)为 OSD 指定 BlueStore DB 和 WAL 分区时,可能会导致这些设备在启动时失败。udev
子系统将分区权限重新重置为 root:disk
。
要临时解决这个问题,请手动启动 systemd ceph-volume
服务。例如,若要使用 ID 为 8 启动 OSD,可运行以下命令: systemctl start 'ceph-volume@lvm*'
.您还可以使用 service
命令,例如: service ceph-volume@lvm-8-4c6ddc44-9032947d-903c-63b5a789ade5 start
。手动启动 OSD 会导致分区具有正确的权限,ceph:ceph
。
7.4. Ceph 对象网关
删除 Ceph 对象网关中的存储桶或对象会导致孤立 RADOS 对象
在 Ceph 对象网关垃圾回收(GC)处理 GC 队列后删除存储桶或对象会导致大量孤立 RADOS 对象。这些 RADOS 对象是属于已删除 bucket 的"聚合"数据。
随着时间的推移,孤立 RADOS 对象的数量可以填满数据池,并降低存储集群的性能。
要从这些孤立 RADOS 对象回收空间,请参阅 Red Hat Ceph Storage 对象网关配置和管理指南中的 Finding orphan 和leaky 对象 部分。
7.5. 多站点 Ceph 对象网关
对于多站点 Ceph Obejct Gateway 环境,在 second zone 中不允许创建和修改用户的 radosgw-admin
命令
使用 radosgw-admin
命令,在 second zone 上创建或修改用户和子用户不会将这些更改传播到 master zone,即使使用了 --yes-i-really-mean-it
选项。
要解决这个问题,请使用 REST API 而不是 radosgw-admin
命令。REST API 允许您在 second zone 中创建和修改用户,然后将这些更改传播到 master zone。
7.6. 软件包
当前版本的 Grafana 会导致仪表板中某些错误
Red Hat Ceph Storage 4 使用 Grafana 版本 5.2.4。这个版本会在 Red Hat Ceph Storage Dashboard 中出现以下错误:
当导航到 池 & gt; Overall Performance 时,Grafana 会返回以下错误:
TypeError: l.c[t.type] is undefined true
- 当查看池的性能详情(Pools > 从列表 > Performance Details中选择池)时,Grafana 栏与其他图形和值一起显示,但不应该显示它。
在以后的 Red Hat Ceph Storage 版本中,这些程序错误会被解决。
7.7. RADOS
在查询 MegaRaid 设备时,ceph device
命令不起作用
目前,ceph 设备 query-daemon-health-metrics
命令不支持查询附加到 MegaRaid 设备的磁盘的健康状况指标。这个命令会显示类似如下的错误:
smartctl returned invalid JSON
目前,MegaRaid 设备的磁盘故障预测模块不可用。目前,这个问题还没有临时解决方案。
有关在 Red Hat Ceph Storage 中使用 RAID 解决方案的更多信息,请参阅 Red Hat Ceph Storage 硬件指南。
第 8 章 源
更新的 Red Hat Ceph Storage 源代码软件包位于以下位置:
- 对于 Red Hat Enterprise Linux 7:http://ftp.redhat.com/redhat/linux/enterprise/7Server/en/RHCEPH/SRPMS/
- 对于 Red Hat Enterprise Linux 8:http://ftp.redhat.com/redhat/linux/enterprise/8Base/en/RHCEPH/SRPMS/