发行注记
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 支持
- 支持将 Grafana 容器与 OSD 容器共存
- 从 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 容器共同定位,以及额外的 scale-out 守护进程,即卡 2。以前,cardinality 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
支持多个域,它们关联区域、zonegroup 和端点。
有关更多信息,请参阅 Red Hat Ceph Storage 安装指南中的配置多站点 Ceph对象网关 。
专用日志设备在从 Filestore OSD 迁移到 Bluestore 时保留其配置
在以前的版本中,当迁移到 Bluestore OSD DB 时,无法重复使用 Filestore OSD 的专用日志设备。专用设备配置示例使用 HDD 进行数据和 SSD 进行日志。
在这个版本中,专用日志设备在迁移过程中保留其配置,以便它们可以与 Bluestore OSD DB 重复使用。
如需更多信息,请参阅管理指南中的将对象存储从 FileStore 迁移到 BlueStore。https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/4/html-single/administration_guide/
purge-container-cluster.yml
playbook 现在支持具有三位 ID 的集群
在以前的版本中,purge-container-cluster
仅支持最多 99 个 OSD 的 Red Hat Ceph Storage 集群。这是因为 playbook 支持具有两位索引的 ceph-osd 服务。在这个版本中,您可以使用三位 ID 正确清除集群。
OpenStack 用户可以使用具有只读权限的默认 admin 帐户部署 Ceph 控制面板
在以前的版本中,具有完整管理员特权的 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
命令可以使用 raw
模式准备 Ceph OSD 进行加密。
3.4. 分发
Ceph 工具存储库中包含 S3 客户端
从这个版本开始,Red Hat Ceph Storage 4 Tools 软件存储库中包含 S3 命令行客户端 s3cmd
。要安装 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 服务,为应用程序或用户提供临时令牌,以便在用户针对身份提供程序(IDP)进行身份验证后访问简单存储服务(S3)端点。
在以前的版本中,没有持久性 Amazon Web Services (AWS)凭证的用户无法通过 Ceph 对象网关访问 S3 资源。在这个版本中,Ceph 对象网关支持 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。这会增加小存储桶的写入吞吐量量,并延迟动态重新划分。此更改仅影响新的部署和区域。
对于现有部署,您可以使用 radosgw-admin zonegroup modify --bucket-index-max-shards=11
命令更改此默认值。如果 zonegroup 是域的一部分,则更改必须使用 radosgw-admin period update --commit
命令提交。如果没有执行提交,则更改将在 Ceph 对象网关重启后生效。
升级后,必须手动增加新的默认值,但在新的 Red Hat Ceph Storage 4.1 部署中,会自动设置新的默认值。
Ceph 对象网关日志包括 Beast 的 访问日志
在这个版本中,前端 Web 服务器 Beast 在 Ceph 对象网关日志中包括 Apache 样式的 访问日志行
。在这个版本中,日志有助于诊断连接和客户端网络问题。
会话令牌过期的最小值可以配置
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
健康警告状态。要清除此警告,新的 clear_shards_repaired
选项已添加到 ceph tell
命令中。例如:
ceph tell osd.NUMBER clear_shards_repaired [COUNT]
默认情况下,clear_shards_repaired
选项可将 repair 数设置为 0。
如果执行额外的 Ceph OSD 修复,则需要再次警告,您可以指定 mon_osd_warn_num_repaired
选项的值。
更新至心跳宽限期
在以前的版本中,当没有超过 48 小时的 Ceph OSD 失败时,没有将宽限期重置为默认值的机制。在这个版本中,如果 Ceph OSD 没有故障时间为 48 小时,则心跳宽限期被重置为默认值 20 秒。当最后一次失败和最新失败之间的故障间隔超过 48 小时时,宽限期将重置为默认值 20 秒。
宽限期是 Ceph 存储集群因没有心跳而将 Ceph OSD 视为 down 的时间间隔。宽限期基于滞后或 Ceph ODS 遇到失败的频率进行扩展。
osd_client_message_cap
选项已添加回
在以前的版本中,osd_client_message_cap
选项已被删除,但在这个版本中,osd_client_message_cap
选项已被重新引入。此选项有助于通过限制这些请求来控制容器内客户端请求的最大数量。当 Ceph OSD 出现大量基于客户端的流量时,这样做会很有用。
第 4 章 技术预览
本节概述了此 Red Hat Ceph Storage 发行版本中引入或更新的技术预览功能。
技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
如需红帽技术预览功能支持范围的更多信息,请参阅 https://access.redhat.com/support/offerings/techpreview/。
4.1. 块设备(RBD)
将 RBD 镜像映射到 NBD 镜像
rbd-nbd
实用程序将 RADOS 块设备(RBD)镜像映射到 Network Block Devices(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
标志,它必须手动取消设置。在这个版本中,rolling-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
purge playbook 不会失败
在以前的版本中,当没有部署仪表板时,清除 playbook 会在清除集群时失败,因为它会尝试删除不存在的仪表板相关资源。因此,清除 playbook 表示部署了仪表板,清除失败。在这个版本中,如果不是部署的一部分,ceph-ansible
不会清除仪表板相关资源,清除可以成功完成。
(BZ#1808988)
将独立的 nfs-ganesha
守护进程与外部 Ceph 存储集群搭配使用,在部署期间不再无法复制密钥环
在以前的版本中,在由独立 nfs-ganesha
守护进程和外部 Ceph 存储集群组成的配置中,Ceph 密钥环不会在 Ceph Ansible 部署期间复制到 /etc/ceph。
在这个版本中,Ceph 密钥环被复制到 /etc/ceph/ 目录中。
Ceph Ansible 在初始安装后更新仪表板 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
和仪表板容器除外。在这个版本中,运行 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 控制面板的 IP 地址和端口时,这会导致与 HAProxy 配置冲突。为避免这种冲突,请在启用 Ceph Manager 仪表板模块前配置 Ceph 控制面板的 IP 地址和端口。
在部署 Ceph 对象网关次要站点时,Red Hat Ceph Storage Dashboard 会失败
在以前的版本中,Red Hat Ceph Storage Dashboard 无法在 Ceph 对象网关多站点部署中部署二级站点,因为当 Ceph Ansible 运行 radosgw-admin user create
命令时,命令会返回错误。在这个版本中,部署过程中的 Ceph Ansible 任务被分成两个不同的任务。这样做可让 Red Hat Ceph Storage 控制面板成功部署 Ceph 对象网关次要站点。
当使用 --limit
选项运行 playbook 时,Ceph 文件系统元数据服务器安装会失败
一些事实没有在第一个 Ceph 监控器上设置,但这些事实已在所有对应的 Ceph 监控节点上设置。使用 --limit
选项运行 playbook 时,如果 Ceph 监控器不是批处理的一部分,则在 Ceph monitor 上不会设置这些事实。当这些事实用于 Ceph Monitor 的任务中使用时,这会导致 playbook 失败。在这个版本中,Ceph Monitor 上设置了这些事实,该 playbook 是否使用 --limit
选项。
升级时添加新的 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 文件中。在这个版本中,添加了一个默认值,以便 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 会导致滚动更新失败,因为无法指定存储集群名称。在这个版本中,rolling_update.yml
playbook 使用 --cluster
选项来允许特定存储集群名称。
在进行滚动更新时,hosts
字段具有无效的值
Red Hat Ceph Storage 滚动更新失败,因为评估 Ceph Ansible rolling_update.yml
playbook 中的 hosts
值的语法已改变。在这个版本中,当 playbook 中指定 hosts
字段时,对代码的修复会正确更新语法。
运行 rolling_update.yml
playbook 不会检索存储集群 fsid
在运行 rolling_update.yml
playbook 时,Ceph Ansible 清单没有定义 Ceph 监控节点,例如在外部场景中,不会检索存储集群 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 Installer 将 RADOS 网关(RGW)配置为使用已弃用的 Civetweb 前端,而不是当前支持的 Beast 前端。在这个版本中,Cockpit Ceph Installer 使用 RGW 按预期部署 Beast frontend。
因为缺少存储库,ansible-runner-service.sh
脚本不再会失败
在以前的版本中,由于 /etc/containers/registries.conf
中缺少存储库,Cockpit Ceph Installer 启动脚本可能会失败。缺少的存储库为 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 安装程序在物理网络接口上使用网桥部署到节点上。
因为 cockpit-ceph-installer
没有为仪表板和 grafana 设置管理员密码,集群安装不再会失败
在以前的版本中,cockpit-ceph-installer
不允许为仪表板和 Grafana 设置 admin 密码。这会导致存储集群配置失败,因为 ceph-ansible
需要更改默认密码。
在这个版本中,cockpit-ceph-installer
允许您在 Cockpit 中设置管理员密码,以便存储集群配置可以成功完成。
Cockpit Ceph Installer 在 Red Hat Enterprise Linux 8 上允许 RPM 安装类型
在以前的版本中,在 Red Hat Enterprise Linux 8 中,Cockpit Ceph 安装程序不允许为 Installation 类型选择 RPM,您只能安装容器化。在 Red Hat Ceph Storage 4.1z1 中,您可以选择 RPM 在裸机上安装 Ceph。
6.3. Ceph 文件系统
改进了 Ceph 文件系统性能,因为子卷快照的数量会增加
在以前的版本中,通过减慢文件系统操作,创建超过 400 个子卷快照会降低 Ceph 文件系统性能。在这个版本中,您可以将子卷配置为只支持子卷根目录下的子卷快照,您可以防止跨子卷链接和重命名。这样做可以创建更多数量的子卷快照,且不会降低 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 的 alerts 模块中有一个代码错误,这会导致 Ceph Manager 崩溃。在这个版本中,这个代码 bug 已被修复,您可以在没有 Ceph Manager 崩溃的情况下设置警报间隔。
6.5. Ceph 卷实用程序
ceph-volume lvm batch
命令失败,并显示混合设备类型
当使用 lvm batch
子命令过滤设备时,ceph-volume
命令不会返回预期的返回代码,当 Ceph OSD 策略发生变化时。这会导致 ceph-ansible
任务失败。在这个版本中,ceph-volume
命令在 Ceph OSD 策略更改时返回正确的状态代码,允许 ceph-ansible
正确检查新的 Ceph OSD 是否可以添加或不添加新的 Ceph OSD。
ceph-volume
命令将逻辑卷视为原始设备
ceph-volume
命令将逻辑卷视为原始设备,这会导致 add-osds.yml
playbook 失败。这不允许额外的 Ceph OSD 添加到存储集群中。在这个版本中,ceph-volume
中修复了一个代码 bug,因此它可以正确处理逻辑卷,而 add-osds.yml
playbook 则可用于将 Ceph OSD 添加到存储集群中。
6.6. 容器
nfs-ganesha
守护进程正常启动
在以前的版本中,使用带有 RADOS 后端的 nfs-ganesha
的配置不会启动,因为缺少 nfs-ganesha-rados-urls
库。这是因为 RADOS 后端的 nfs-ganesha
库软件包已移到专用软件包中。在这个版本中,nfs-ganesha-rados-urls
软件包添加到 Ceph 容器镜像,因此 nfs-ganesha
守护进程可以成功启动。
6.7. Ceph 对象网关
Ceph 对象网关正确应用 AWS 请求签名
在以前的版本中,Ceph 对象网关没有正确应用用于签名标头的 AWS 请求,并生成以下出错信息:
SignatureDoesNotMatch
在这个版本中,Ceph 对象网关代码已被修复,以正确签署标头。这会导致请求时签名请求成功。
radosgw-admin bucket check
命令不再显示不完整的多部分上传
在以前的版本中,运行 radosgw-admin bucket check
命令显示不完整的多部分上传。这可能会导致站点 admin 混淆,因为输出可能看起来像存储桶索引损坏一样。在这个版本中,命令仅显示错误和孤立对象,并过滤掉不完整的上传。
使用存储桶分片对象不均匀分布 omap 密钥
在版本控制 bucket 中,偶尔删除对象操作无法完全完成。在此状态中,这些对象的 bucket 索引条目的名称和实例字符串为零。当后续重新划分时,空名称和实例字符串会导致将条目重新分片到分片 0。不属于分片 0 的条目最终会结束。这会在分片 0 上划分条目数,且大于其他分片。在这个版本中,在 delete 操作中不再清除名称和实例字符串。如果进行 reshard,则没有完全删除的条目在正确的分片上最终没有结束,且不会强制分片 0。
增加对象网关生命周期处理性能的整体吞吐量
在以前的版本中,由于在给定环境中有多个存储桶或容器增加的对象或存储桶工作负载,对象网关生命周期处理性能会因为缺少并行性而受到限制。在这个版本中,parallelism 在两个维度中,单个对象网关实例可以有多个生命周期处理线程,每个线程都有多个执行生命周期的线程。另外,这个更新改进了将 分片
分配给 worker,从而增加总体吞吐量。
当调用 rgw_parse_bucket_key
时,存储桶租户状态会被正确解释
在以前的版本中,rgw_parse_bucket_key
的一些调用者(如 radosgw-admin bucket stats
)处理循环中的密钥,如果列出了一些租户存储桶,则可能会错误地将未租户的存储桶解释为租户。如果使用非空 rgw_parse_bucket_key
调用 rgw_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
bucket stats 中的大量对象
计算统计的代码无法检查,在某些情况下,bucket 索引条目是否引用已存在的对象。这会导致存储桶统计不正确。在这个版本中,添加了代码来检查是否存在,修复存储桶统计。
对有序存储桶列表的调用会卡住
bucket 排序列表操作中的代码错误可能会导致特定情况下,此操作会停留在循环中,且永远不会完成。在这个版本中,这个代码 bug 已被修复,因此调用一个排序的存储桶列表可以如预期完成。
生命周期处理会忽略 NoncurrentVersionExpiration
中的 NoncurrentDays
假设在并行生命周期处理期间包含对象的修改时间被错误初始化的变量。这会导致存储桶中的非当前过期规则的对象版本在预期的过期时间前过期。在这个版本中,modificaction 时间(mtime
)会被正确初始化,并传播到生命周期的处理队列。这会导致在正确时间段内进行非当前过期。
有些对象的部分被错误地添加到垃圾回收中
使用 Ceph 对象网关读取对象时,如果这些对象的部分值超过一半,如 rgw_gc_obj_min_wait
选项定义,则它们的 tail 对象被添加到垃圾回收列表中。垃圾回收列表中的这些 tail 对象已被删除,从而导致数据丢失。在这个版本中,垃圾回收功能会禁用删除对象的垃圾回收。因此,使用需要很长时间的 Ceph 对象网关读取对象不会添加到垃圾回收列表中。
6.8. 多站点 Ceph 对象网关
RGW 守护进程在关闭时不再崩溃
在以前的版本中,因为 radosgw 关闭过程中出现竞争条件,RGW 进程会中止。在使用多站点时删除对象时,会出现这个问题的一个情况。这是因为取消引用不安全内存造成的。在 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 管理器来提供主要功能,因此不建议在没有 Ceph 管理器或 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
的默认值是 16 KB 用于固态设备(SSD)。目前,SSD 的 min_alloc_size
的默认值为 4 KB。这可以更好地利用空间,且不会影响性能。
slow ops 没有记录在集群日志中
在以前的版本中,slow ops 没有记录在集群日志中。它们登录到 osd
或 mon
日志,但缺少预期的详情级别。在这个版本中,slow ops 被记录在集群日志中,它有一定程度的详细信息,使日志可用于调试。
回填在放置组合并过程中不再延迟
在以前的版本中,在 Red Hat Ceph Storage 放置组合并中,如果在合并前为源和目标放置组设置的时间比预期的要长。当不匹配时,回填操作可能会显示为停滞。在 Red Hat Ceph Storage 4.1z1 中,代码已更新为仅合并其活跃集合匹配的放置组。此更改允许合并在没有延迟的情况下完成。
Ceph 监控可能会超过内存目标
自动调整内存目标仅在 Ceph 监控领导机上执行,而不是 Ceph 监控器遵循领导。这会导致 Ceph Monitor 遵循者超过集合的内存目标,从而导致 Ceph 监控器在内存耗尽后崩溃。在这个版本中,自动调整过程为 Ceph Monitor 领导及其后续程序应用内存目标,以便系统上的内存不会耗尽。
当 OSD 长时间停机时,磁盘空间使用量不会增加
在以前的版本中,当 OSD 长时间停机时,会存储大量 osdmaps,且不会修剪。这会导致磁盘用量过高。在 Red Hat Ceph Storage 4.1z1 中,无论 OSD 和磁盘空间没有被过度使用,osdmaps 都会被修剪。
当使用非零错误代码退出 smartctl
时,健康指标会被正确报告
在以前的版本中,如果 smartctl
以非零错误代码退出,ceph device get-health-metrics
命令可能无法报告指标,即使运行 smartctl
会直接报告正确的信息。在这种情况下,会报告 JSON 错误。在 Red Hat Ceph Storage 4.1z1 中,ceph device get-health-metrics
命令会报告指标,即使 smartctl
本身报告正确的信息,即使 smartctl
退出了非零错误代码。
崩溃由负时间范围导致的 Ceph 监控器
在以前的版本中,当由 monotonic 时钟触发时,Ceph Monitor 可能会崩溃。这些崩溃导致一个负的 monotonic 时间范围,并在 Ceph 监控器中触发断言并导致它们崩溃。Ceph 监控代码已更新,可以容忍此断言,并将其解释为零长度间隔,而不是负值。因此,在进行这个断言时,Ceph Monitor 不会崩溃。
对存储集群中消息的编码和解码的改进
在部署包含异构架构的 Red Hat Ceph Storage 集群时,如 x86_64 和 s390,可能会导致系统崩溃。另外,在 CephFS 的某些工作负载下,s390x 节点上的 Ceph 监控可能会意外崩溃。在这个版本中,使用标记 1
正确解码 entity_addrvec_t
,使用中间整数变量类型正确解码 big-endian 系统上的 enum
类型,并在 big-endian 系统上固定编码和解码 浮点
数类型。因此,s390x 节点上的异构存储集群和 Ceph Monitor 不再崩溃。
6.10. RADOS 块设备 (RBD)
可以同时发出多个 rbd unmap
命令,对应的 RBD 块设备被成功映射
在以前的版本中,发出并发 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-8-*'
。您还可以使用 service
命令,例如: service ceph-volume@lvm-8-4c6ddc44-903osgi7d-903c-63b5a789ade5 start
。手动启动 OSD 会导致分区具有正确的权限 ceph:ceph
。
7.4. Ceph 对象网关
删除 Ceph 对象网关中的 bucket 或对象会导致孤立 RADOS 对象
在 Ceph 对象网关垃圾回收(GC)处理 GC 队列后删除存储桶或对象会导致大量孤立 RADOS 对象。这些 RADOS 对象是属于已删除存储桶的 "leaked" 数据。
随着时间的推移,孤立 RADOS 对象的数量可以填满数据池并降低存储集群的性能。
要从这些孤立 RADOS 对象回收空间,请参阅 Red Hat Ceph Storage Object Gateway Configuration and Administration Guide 的 Finding orphan and leaky objects 部分。
7.5. 多站点 Ceph 对象网关
对于多站点 Ceph Obejct 网关环境,在二级区中不允许创建和修改用户的 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 在 Dashboard 中会导致某些错误
Red Hat Ceph Storage 4 使用 Grafana 版本 5.2.4。此版本在 Red Hat Ceph Storage Dashboard 中造成以下错误:
当导航到 Pools > Overall Performance 时,Grafana 会返回以下错误:
TypeError: l.c[t.type] is undefined true
- 当查看池的性能详情(池 >,从列表中选择一个池)时,Grafana 栏会与其他图形和值一起显示,但不应存在。
在以后的 Red Hat Ceph Storage 发行版本中,在重新移至较新的 Grafana 版本后,会修复这些程序错误。
7.7. RADOS
在查询 MegaRaid 设备时 ceph device
命令无法正常工作
目前,ceph device query-daemon-health-metrics
命令不支持查询附加到 MegaRaid 设备的磁盘的健康状况指标。这个命令显示类似如下的错误:
smartctl returned invalid JSON
当前无法使用 MegaRaid 设备的磁盘故障预测模块。目前,这个问题还没有临时解决方案。
有关将 RAID 解决方案与 Red Hat Ceph Storage 搭配使用的更多信息,请参阅 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/