第 4 章 程序错误修复
本节论述了在这个 Red Hat Ceph Storage 发行版本中修复的用户有严重影响的错误。此外,部分还包括之前版本中发现的固定已知问题的描述。
4.1. Cephadm 实用程序 复制链接链接已复制到粘贴板!
PID 限制已被删除,容器中的工作负载不再崩溃
在以前的版本中,在 Red Hat Enterprise Linux 9 部署中,pid 限制强制限制可在容器中运行的进程数量。因此,某些操作(如 Ceph 对象网关同步)会导致崩溃。
在这个版本中,pid 限制
为所有 Ceph 容器设置 无限
,从而防止容器中的工作负载崩溃。
Cephadm
不再随机临时删除配置和密钥环文件
在以前的版本中,由于在计算客户端 conf 和密钥环时的时间不正确,cephadm
会计算不应放在任何主机上配置和密钥环,然后删除所有它们。
在这个版本中,计算的时间被改变,以保证计算的最新信息。Cephadm
不再随机,临时删除它所管理的配置和密钥环文件。
Ceph 对象网关守护进程现在可以正确绑定到回送地址
在以前的版本中,当查找主机上的有效 IP 地址来绑定 Ceph 对象网关守护进程时,cephadm
排除回送接口,因此守护进程不会绑定到回环地址。
在这个版本中,Ceph 对象网关守护进程可以通过执行显式检查来绑定到回环地址。如果检测到回环接口,则 127.0.0.1
地址用于 IPv4,::1 用于 IPv6 作为环回地址。
Cephadm
现在在超过 Ceph 监控存储大小限制后将设备信息分成多个条目
在以前的版本中,当设备信息超过 monitor 存储默认最大大小限制时,cephadm
无法刷新主机并完成大多数操作。这会导致条目大小错误。因此,如果用户有大量磁盘的主机,用户必须提高默认限制。
在这个版本中,如果设备信息空间超过大小限制,则 cephadm
现在会将设备信息分成多个条目。如果用户有大量磁盘的主机,用户不再需要提高 monitor 存储条目大小限制。
崩溃守护进程现在可以正确地记录崩溃事件并将其报告到存储集群
在以前的版本中,当向存储集群发送崩溃报告时,崩溃守护进程无法正确验证,这会导致它无法正确记录崩溃事件发送到集群。
在这个版本中,崩溃守护进程在发送崩溃报告时可以正确地使用其身份验证信息。现在,它可以正确地记录崩溃事件并将其报告给集群。
cephadm.log
的日志轮转应该不会再造成问题
在以前的版本中,如果 /var/log/ceph
目录是由 cephadm
以外的其他目录创建的,则 logrotate
命令会导致问题,如 ceph-common
或 ceph-ansible
。因此,cephadm.log
无法轮转。
在这个版本中,su root
被添加到 logrotate 配置中,以 root
用户身份轮转。logrotate
命令不再导致 var/log/ceph
目录的所有权出现问题,因此 cephadm.log
会如预期轮转。
cephadm
日志记录配置已更新。
在以前的版本中,cephadm
脚本将所有输出记录到 stderr
。因此,cephadm bootstrap 日志表示部署也被发送到 stderr
,而不是 stdout
。
在这个版本中,cephadm
脚本对某些命令有不同的日志记录配置,用于 bootstrap 现在只会将错误记录到 stderr
。
网络检查不再导致主机从监控网络中排除
在以前的版本中,网络检查会失败,因为 cephadm
会查找主机网络和一些配置的公共网络之间的完全匹配。这会导致具有有效网络配置的主机(属于 public_network
的接口)从主机排除在监控网络中。
在这个版本中,它会检查主机网络是否与任何配置的公共网络重叠,而不是查找完全匹配,因此有效的主机不再从监控网络中排除。
cephadm
不再删除主机级别的 osd_memory_target
配置设置
在以前的版本中,如果将 osd_memory_target_autotune
全局关闭,cephadm
将删除用户在主机级别为 osd_memory_target
设置的值。另外,对于具有 FQDN 名称的主机,虽然 crush map 使用短名称,cephadm
仍会使用 FQDN 设置配置选项。因此,用户无法在主机级别手动设置 osd_memory_target
, osd_memory_target
自动性能优化无法使用 FQDN 主机。
在这个版本中,如果 osd_memory_target_autotune
设置为 false
,osd_memory_target
配置设置在主机一级不再会被从 cephadm
中删除。在设置主机级别 osd_memory_target
时,它也始终为主机使用短名称。如果在主机级别 osd_memory_target_autotune
被设置为 false
,用户可以手动设置 osd_memory_target
,并可以选择不从 cephadm
中删除。另外,自动调整应该使用 FQDN 名称添加到 cephadm
中的主机。
Cephadm
重写 Ceph OSD 配置文件
在以前的版本中,在重新部署 OSD 时,cephadm
不会编写用于 Ceph OSD 的配置,因此当 Ceph 监控守护进程被添加或删除时,OSD 不会在其配置文件中获取更新的监控器配置。
在这个版本中,当重新部署 OSD 和 OSD 配置文件更新时,cephadm
会自动重写配置文件,以便在 monitor 添加或删除 monitor 时显示 monitor 的新位置,而无需用户干预。
用户现在可以排空在显式放置中列出的主机
在以前的版本中,排空列为显式放置一部分的主机会导致主机无法正确排空,并在排空停止或主机从任何显式放置中删除前,会记录回溯。
在这个版本中,内部实施对显式放置的处理,cephadm
可以确定它是否需要从主机移除守护进程。因此,用户现在可以排空列为显式放置一部分的主机,而无需首先从放置中删除主机。
但是,在删除明确列出主机的主机前,用户仍然需要从任何显式放置中删除主机。
当 --apply-spec
选项在 bootstrap 过程中失败时,cephadm
返回非零代码
在以前的版本中,如果操作完成,cephadm
bootstrap 始终返回代码 0。如果使用
--apply-spec
选项部署中存在失败,它不会反映返回码中的任何故障。
在这个版本中,当在 bootstrap 中应用规格失败时,cephadm
会返回非零值。
现在,复杂的 OSD 部署或被共享 DB 设备的替换不需要一次完成
在以前的版本中,当 cephadm
创建 OSD 时,已经用作之前 OSD 的 db
设备的设备被过滤为不可用的设备。因此,复杂的 OSD 部署将设备用作其 DB,但不会一次部署,因为创建后续 OSD 时也不会过滤 DB 设备,即使它们不应遵循 OSD 规格。
在这个版本中,使用共享 DB 设备的复杂 OSD 部署不需要一次性完成。如果用户更新 OSD 规格,使其包含要与规格中已列出的 db 设备配对的额外数据设备,cephadm
应能够创建这些新 OSD。
如果 cephadm
检测到无效的 tuned-profile
规格,则会引发正确的错误
在以前的版本中,cephadm
不会验证 tuned-profile
的 YAML 规格,因此在在无效的 tuned-profile
规格中应用无效和缺失的数据时不会返回错误或警告。
在这个版本中,添加了多个检查来验证 tuned-profile
规格。现在,当 cephadm
检测到无效的 tuned-profile
规格时,会引发正确的错误:
- YAML 规格中的"settings"中提到无效的可调整。
- YAML 规格中的"settings"部分为空。
- 检测到无效的放置。