v14.2.10 Nautilus 发布
这是 Nautilus 系列的第十个版本。除了修复 RGW 中的一个安全相关错误外,此版本还修复了 Ceph 所有主要组件中的多个错误。我们建议所有 Nautilus 用户升级到此版本。
重要变更 ¶
CVE-2020-10753: rgw: 清理 s3 CORSConfiguration 的 ExposeHeader 中的换行符 (William Bowling, Adam Mohammed, Casey Bodley)
RGW: 存储桶通知现在支持 Kafka 端点。这需要 librdkafka 版本 0.9.2 及更高版本。请注意,Ubuntu 16.04.6 LTS (Xenial Xerus) 具有较旧的 librdkafka 版本,需要更新该库。
pg 自动缩放器使用的池参数
target_size_ratio的含义已更改。现在它在池之间进行了标准化,而不是指定一个绝对比例。有关详细信息,请参阅 Autoscaling placement groups。如果您在任何池上设置了目标大小比例,您可能希望将这些池设置为自动缩放warn模式,以避免在升级期间发生数据移动ceph osd pool set <pool-name> pg_autoscale_mode warn
rados 工具的
-o参数的行为已恢复到其原始行为,即指示输出文件。这使其与其他工具相比具有更一致的行为。现在通过使用大写 O-O来指定对象大小。ceph fs dump 中 MDS 的格式已更改。
如果 RADOS 池的
size设置为 1,或者换句话说,池配置为没有冗余,Ceph 将发出运行状况警告。可以通过将池大小设置为最低推荐值来修复此问题:ceph osd pool set <pool-name> size <num-replicas>
可以使用以下命令禁用此警告:
ceph config set global mon_warn_on_pool_no_redundancy false
RGW: 通过启发式地(在许多情况下是显着地)减少从每个存储桶索引分片请求的条目数,分片存储桶索引上的存储桶列表性能得到了显着改善。
变更日志 ¶
build/ops: 解决 rgw/multisite 测试运行中观察到的 SElinux 拒绝 (pr#34539, Kefu Chai, Kaleb S. Keithley)
build/ops: ceph.spec.in: 在 el8 上构建 (pr#35599, Kefu Chai, Brad Hubbard, Alfonso Martínez, Nathan Cutler, Sage Weil, luo.runbing)
build/ops: cmake: 改进 IBM Z 上 16 字节原子支持的测试 (pr#33716, Ulrich Weigand)
build/ops: do_cmake.sh: 修复 -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF 的应用 (pr#34008, Nathan Cutler, Kefu Chai)
build/ops: install-deps.sh: 对 rhel/centos 8 使用 dnf (pr#35461, Brad Hubbard)
build/ops: rpm: 添加 python3-saml 作为安装依赖项 (pr#34475, Kefu Chai, Ernesto Puerta)
build/ops: selinux: 允许 ceph setsched (pr#34433, Brad Hubbard)
build/ops: selinux: 允许 ceph-mgr 访问 httpd 目录 (pr#34434, Brad Hubbard)
build/ops: selinux: 允许 getattr 访问 /proc/kcore (pr#34870, Brad Hubbard)
build/ops: spec: 解决 RPM 4.15.1 引发的一些警告 (pr#34527, Nathan Cutler)
ceph-volume/batch: 在访问前检查 lvs 列表 (pr#34481, Jan Fajerski)
ceph-volume/batch: 当所有设备都被过滤时返回成功 (pr#34478, Jan Fajerski)
ceph-volume: 在单个 lvchange 调用中添加和删除 lvm 标签 (pr#35453, Jan Fajerski)
ceph-volume: 添加 ceph.osdspec_affinity 标签 (pr#35132, Joshua Schmid)
ceph-volume: devices/simple/scan: 修复日志语句中的字符串 (pr#34445, Jan Fajerski)
ceph-volume: 修复 nautilus 功能测试 (pr#33391, Jan Fajerski)
ceph-volume: lvm: get_device_vgs() 按提供的 prefix 过滤 (pr#33616, Jan Fajerski, Yehuda Sadeh)
ceph-volume: prepare: 对隐式大小调整使用 *-slots 参数 (pr#34278, Jan Fajerski)
ceph-volume: 抑制 ‘ceph-bluestore-tool’ 失败 (pr#33428, Sébastien Han)
ceph-volume: strip _dmcrypt suffix in simple scan json output (pr#33722, Jan Fajerski)
cephfs/tools: 在构建文件 dentry 时添加 accounted_rstat/rstat (pr#35185, Xiubo Li)
cephfs/tools: cephfs-journal-tool: 正确解析 –dry_run 参数 (pr#34784, Milind Changire)
cephfs: 允许使用连字符和句点的池名称 (pr#35391, Rishabh Dave, Ramana Raja)
cephfs: ceph-fuse: 链接到 libfuse3,如果 libfuse < 3.0.0,则传递 “-o big_writes” 给 libfuse (pr#34771, Kefu Chai, Xiubo Li, “Yan, Zheng”)
cephfs: client: 通过 libcephfs 公开 Client::ll_register_callback (pr#35393, Kefu Chai, Jeff Layton)
cephfs: client: 修复 Finisher assert 失败 (pr#35000, Xiubo Li)
cephfs: client: 修复 lseek SEEK_HOLE / SEEK_DATA 中错误处理不当的问题 (pr#34308, Jeff Layton)
cephfs: client: 仅在刷新脏 auth caps 时设置 MClientCaps::FLAG_SYNC (pr#35118, Jeff Layton)
cephfs: client: 如果不需要文件写入,则重置 requested_max_size (pr#34767, “Yan, Zheng”)
cephfs: mds: 处理 purge 队列中的黑名单错误 (pr#35149, Varsha Rao)
cephfs: mds: Migrator::export_sessions_flushed 中的 SIGSEGV (pr#33751, “Yan, Zheng”)
cephfs: mds: 使用 begin() 和 empty() 迭代 xlist (pr#34338, Shen Hang, “Yan, Zheng”)
cephfs: mds: 添加可配置的快照限制 (pr#33295, Milind Changire)
cephfs: mds: 在 ceph status 中显示 scrub 状态 (issue#41508, issue#42713, issue#44520, issue#42168, issue#42169, issue#42569, issue#41424, issue#42835, issue#36370, issue#42325, pr#30704, Venky Shankar, Patrick Donnelly, Sage Weil, Kefu Chai)
cephfs: mds: 解码 xattr map 时不要进行浅拷贝 (pr#35199, “Yan, Zheng”)
cephfs: mds: 处理坏的 purge queue item 编码 (pr#34307, “Yan, Zheng”)
cephfs: mds: 处理 blacklisting 上的 ceph_assert (pr#34435, Milind Changire)
cephfs: mds: 在关闭期间只删除 MDSIOContextBase (pr#34343, “Yan, Zheng”, Patrick Donnelly)
cephfs: mds: 按请求开始锁定的顺序获取 xlock (pr#35392, “Yan, Zheng”)
common/bl: 修复 bufferlist::claim_append() 中的内存损坏 (pr#34516, Radoslaw Zarzynski)
common/blkdev: telemetry 和 device backports 的编译 (pr#33726, Sage Weil, Difan Zhang, Patrick Seidensal, Kefu Chai)
common/blkdev: 修复 smart scraping 的一些问题 (pr#33421, Sage Weil)
common/ceph_time: 容忍单调时间倒退 (pr#34542, Sage Weil)
common/options: 默认再次禁用 bluefs_buffered_io (pr#34297, Mark Nelson)
compressor/lz4: 解决 liblz4 版本 <1.8.2 中的错误 (pr#35004, Sage Weil, Dan van der Ster)
core: bluestore/bdev: 在创建对象时初始化大小 (pr#34832, Willem Jan Withagen)
core: bluestore: 添加新设备时不要污染旧日志 (pr#34796, Yang Honggang)
core: bluestore: 修复 ‘unused’ 计算 (pr#34794, xie xingguo, Igor Fedotov)
core: bluestore: 修复主设备扩展后的 extent 泄漏 (pr#34711, Igor Fedotov)
core: bluestore: 更灵活的 DB volume 空间使用 (pr#33889, Igor Fedotov)
core: bluestore: 在扩展 DB/WAL 时以只读方式打开 DB (pr#34611, Igor Fedotov, Jianpeng Ma, Adam Kupczyk)
core: bluestore: 防止在同步元数据时 BlueFS::dirty_files 泄漏 (pr#34515, Xuehan Xu)
core: msg/async/rdma: 修复事件中心被 rdma 构造连接以传输 ib 同步消息而阻塞的错误 (pr#34780, Peng Liu)
core: msgr: backport EventCenter 相关的修复 (pr#33820, Radoslaw Zarzynski, Jeff Layton, Kefu Chai)
core: rados: 防止 ShardedOpWQ 在等待工作时 suicide_grace 丢失 (pr#34882, Dan Hill)
doc/mgr/telemetry: 添加设备通道详细信息 (pr#33684, Yaarit Hatuka)
doc/releases/nautilus: 重启 OSD 使它们绑定到 v2 地址 (pr#34524, Nathan Cutler)
doc: 修复设置 pg 自动缩放模式的参数 (pr#34518, Changcheng Liu)
doc: mds-config-ref: 更新 ‘mds_log_max_segments’ 值 (pr#35278, Konstantin Shalygin)
doc: 在 14.2.8 发布后重置 PendingReleaseNotes (pr#33863, Nathan Cutler)
global: 确保在早期参数处理之前解码 CEPH_ARGS (pr#33261, Kefu Chai, Jason Dillaman)
mgr/DaemonServer: 修复 pg 合并检查 (pr#34354, Sage Weil)
mgr/PyModule: 修复 handle_pyerror() 中缺少的 tracebacks (pr#34627, Tim Serong)
mgr/balancer: 容忍目标权重映射之外的 pg (pr#34761, Sage Weil)
mgr/dashboard/grafana: 添加 rbd-image 详细信息仪表板 (pr#35248, Enno Gotthold)
mgr/dashboard: CRUSH map 查看器中的 ‘destroyed’ 视图 (pr#33764, Avan Thakkar)
mgr/dashboard: 向 Dashboard RGW 后端添加更多调试信息 (pr#34399, Volker Theile)
mgr/dashboard: Dashboard 不允许设置 norebalance OSD 标志 (pr#33927, Nizamudeen)
mgr/dashboard: 禁用静态文件缓存 (pr#33763, Tiago Melo)
mgr/dashboard: 显示聚合请求数 (pr#35212, Tiago Melo)
mgr/dashboard: 修复 HomeTest 设置 (pr#35086, Tiago Melo)
mgr/dashboard: 修复 cherrypy 请求日志记录错误 (pr#31586, Kiefer Chang)
mgr/dashboard: 修复时区导致的单元测试错误 (pr#34473, Tiago Melo)
mgr/dashboard: 修复删除或移动时列出 RBD 时的错误 (pr#34120, Tiago Melo)
mgr/dashboard: 修复 iSCSI 的用户名和密码验证 (pr#34550, Tiago Melo)
mgr/dashboard: 修复 rbd 镜像 ‘purge trash’ 按钮和模态文本 (pr#33697, anurag)
mgr/dashboard: 改进重绘 datatables 的变通方法 (pr#34413, Volker Theile)
mgr/dashboard: 无法限制新用户创建存储桶 (pr#34692, Volker Theile)
mgr/dashboard: 池读/写 OPS 显示太多小数位 (pr#34039, anurag, Ernesto Puerta)
mgr/dashboard: 编辑控件时防止重新创建 iSCSI 目标 (pr#34551, Tiago Melo)
mgr/dashboard: REST API: OpenAPI 文档需要互联网连接 (pr#33032, Patrick Seidensal)
mgr/dashboard: RGW 端口自动检测不支持 “Beast” RGW 前端 (pr#34400, Volker Theile)
mgr/dashboard: 重构 Python 单元测试和控制器 (pr#34662, Volker Theile)
mgr/dashboard: 修复损坏的 grafana 面板 (pr#34417, Kristoffer Grönlund)
mgr/dashboard: 表格的可搜索对象 (pr#32891, Stephan Müller)
mgr/dashboard: Tabs 不处理点击事件 (issue#39326, pr#34282, Tiago Melo)
mgr/dashboard: UI 修复 (pr#34038, Avan Thakkar)
mgr/dashboard: 更新现有 E2E 测试以匹配新格式 (pr#33024, Nathan Weinberg)
mgr/dashboard: 使用 booleanText pipe (pr#33234, Alfonso Martínez, Volker Theile)
mgr/dashboard: 运行 “npm run build” 时使用默认语言 (pr#33668, Tiago Melo)
mgr/dashboard: 如果只有只读权限,则不显示 RGW API 密钥 (pr#33665, Alfonso Martínez)
mgr/dashboard: 修复 run-backend-api-tests.sh 中的 COVERAGE_PATH (pr#34489, Alfonso Martínez)
mgr/dashboard: 修复 backport #33764 (pr#34640, Ernesto Puerta)
mgr/dashboard: 修复使用 cert 文件启用 SSO 时的错误 (pr#34129, Alfonso Martínez)
mgr/dashboard: 修复 py2 strptime ImportError (非线程安全) (pr#35016, Alfonso Martínez)
mgr/dashboard: 修复后端 RBD purge 错误 (pr#34847, Kiefer Chang)
mgr/dashboard: 使用 pip 安装 teuthology (pr#35174, Nathan Cutler, Kefu Chai)
mgr/dashboard: 列出配置的 prometheus 警报 (pr#34373, Patrick Seidensal, Tiago Melo)
mgr/dashboard: 监控菜单项应指示正在触发的警报 (pr#34823, Tiago Melo, Volker Theile)
mgr/dashboard: 从系统角色中删除 ‘config-opt: read’ 权限 (pr#33739, Alfonso Martínez)
mgr/dashboard: 显示布尔值的复选框 (pr#33388, Tatjana Dehler)
mgr/dashboard: 使用 FQDN 进行故障转移重定向 (pr#34497, Ernesto Puerta)
mgr/insights: 修复 prune-health-history (pr#35214, Sage Weil)
mgr/pg_autoscaler: 修复除以零错误 (pr#33420, Sage Weil)
mgr/pg_autoscaler: 将目标比例视为权重 (pr#34087, Josh Durgin)
mgr/prometheus: ceph_pg_* 指标包含最后一个值而不是所有报告状态的总和 (pr#34162, Jacek Suchenia)
mgr/run-tox-tests: 修复 PYTHONPATH 问题 (pr#33688, Brad Hubbard)
mgr/telegraf: 捕获 FileNotFoundError 异常 (pr#34628, Kefu Chai)
mgr/telemetry: 向 status 添加 ‘last_upload’ (pr#33409, Yaarit Hatuka)
mgr/telemetry: 捕获 requests.put 期间的异常 (pr#33141, Sage Weil)
mgr/telemetry: 修复 UUID 和 STR 拼接 (pr#33666, Yaarit Hatuka)
mgr/telemetry: 修复和记录代理使用情况 (pr#33649, Lars Marowsky-Bree)
mgr/volumes: 添加获取子卷元数据的接口 (pr#34679, Kotresh HR)
mgr/volumes: fs subvolume clone cancel (issue#44208, pr#34036, Venky Shankar, Michael Fritch)
mgr/volumes: 次要修复 (pr#35482, Kotresh HR)
mgr/volumes: 同步克隆子卷的所有权(针对符号链接)和 inode 时间戳 (issue#24880, issue#43965, pr#33877, Ramana Raja, Rishabh Dave, huanwen ren, Venky Shankar, Jos Collin)
mgr: 向 mgr_util.py 添加 get_rates_from_data (pr#33893, Stephan Müller, Ernesto Puerta)
mgr: 改进内部 python 到 c++ 接口 (pr#34356, David Zafman)
mgr: exec 后关闭 restful 套接字 (pr#35213, liushi)
mgr: 强制从服务图中清除正常的 ceph 实体 (issue#44677, pr#34563, Venky Shankar)
mgr: 同步 ClusterState 的 health 和 mon_status (pr#34326, Radoslaw Zarzynski)
mgr: 当我们已经有来自该实体的守护程序状态时,更新 “hostname” (pr#33834, Kefu Chai)
mon/FSCommands: 修复 ‘add_data_pool’ 命令和 ‘fs new’ 命令 (pr#34774, Ramana Raja)
mon/OSDMonitor: 始终在所有 mons 上调整优先级缓存管理器内存 (pr#34916, Sridhar Seshasayee)
mon/OSDMonitor: 即使 osds 宕机,也允许修剪 map (pr#34983, Joao Eduardo Luis)
mon/PGMap: 修复 >32bit pg 状态的摘要显示 (pr#33275, Sage Weil, Adam C. Emerson)
mon: 在 remove_session 之前获取 session_map_lock (pr#34677, Xiaofei Cui)
mon: 在 osd pool set size 上计算 min_size (pr#34585, Deepika Upadhyay)
mon: 禁用每个 osd 警告的 min pg (pr#34618, Sage Weil)
mon: 修复/改进通过小 key 进行 mon sync (pr#33765, Sage Weil)
mon: 在引导时地址不匹配时隐藏较新的 map (pr#34500, Sage Weil)
monitoring: 修复 “10% OSDs down” 警报描述 (pr#35211, Benoît Knecht)
monitoring: 修复 pool capacity 不正确 (pr#34450, James Cheng)
monitoring: pool fill up 警报损坏 (pr#35137, Volker Theile)
monitoring: disk and pool fill up prediction 警报损坏 (pr#34394, Patrick Seidensal)
monitoring: 修复 RGW grafana 图表 ‘Average GET/PUT Latencies’ (pr#33860, Alfonso Martínez)
monitoring: 修复 Grafana % percentages 中的十进制精度 (pr#34829, Ernesto Puerta)
monitoring: root volume full 警报触发误报 (pr#34419, Patrick Seidensal)
osd/OSD: 将慢速操作/类型记录到集群日志 (pr#33503, Sage Weil, Sridhar Seshasayee)
osd/OSDMap: 如果池配置大小为 1,则显示运行状况警告 (pr#31842, Sridhar Seshasayee)
osd/PeeringState.h: 在 WaitLocalBackfillReserved 中忽略 RemoteBackfillReserved (pr#34512, Neha Ojha)
osd/PeeringState: 不要修剪超过 last_update_ondisk 的 pg log (pr#34957, Samuel Just, xie xingguo)
osd/PeeringState: 在 backfilling 之前将 async_recovery_targets 转换回 acting (pr#32849, xie xingguo)
osd: 提前退出时调度 dispatch_context 和 queue split finish (pr#35024, Sage Weil)
osd: 修复 OSD::osdmap 的 racy 访问 (pr#33530, Radoslaw Zarzynski)
pybind/mgr/*: 修复 config_notify 对默认值的处理 (pr#34116, Nathan Cutler, Sage Weil)
pybind/mgr: 使用 six==1.14.0 (pr#34316, Kefu Chai)
pybind/rbd: RBD.create() 方法的 ‘old_format’ 参数现在默认为 False (pr#35183, Jason Dillaman)
pybind/rbd: 确保镜像在允许操作之前打开 (pr#34424, Mykola Golub)
pybind/rbd: 修复未获取 locker 时会输出 ImageNotFound 异常的问题 (pr#34388, zhangdaolong)
rbd: librbd: copy API 默认不应继承 v1 镜像格式 (pr#35182, Jason Dillaman)
rbd: rbd-mirror: 改进黑名单状态检测 (pr#33533, Mykola Golub)
rgw/kafka: 添加 kafka 端点支持 (pr#32960, Yuval Lifshitz, Willem Jan Withagen, Kefu Chai)
rgw/notifications: backport features and bug fix (pr#34107, Yuval Lifshitz)
rgw/notifications: 修复 topic action 因 “MethodNotAllowed” 而失败 (issue#44614, pr#33978, Yuval Lifshitz)
rgw/notifications: versioned buckets 中未发送 version id (pr#35181, Yuval Lifshitz)
rgw: 当您中止分段上传请求时,配额可能未更新 (pr#33268, Richard Bai(白学余))
rgw: 添加对 subuser 的存储桶策略支持 (pr#33714, Seena Fallah)
rgw: 修复动态重新分片对 period 中空 zonegroup 不起作用的问题 (pr#33266, Or Friedmann)
rgw: 修复上传部分复制范围能够获取几乎任何字符串的问题 (pr#33265, Or Friedmann)
rgw: 配置了生命周期过期时间的存储桶上的 GET/HEAD 和 PUT 操作不返回 x-amz-expiration header (pr#32924, Matt Benjamin, Yuval Lifshitz)
rgw: MultipartObjectProcessor 支持 stripe size > chunk size (pr#33271, Casey Bodley)
rgw: ReplaceKeyPrefixWith 和 ReplaceKeyWith 不能同时设置... (pr#34599, yuliyang)
rgw: 匿名 swift 访问不存在的对象时应返回 401 (pr#35045, Matthew Oliver)
rgw: 清除 ent_list for each loop of bucket list (issue#44394, pr#34099, Yao Zongyou)
rgw: dmclock: 等待请求处理完毕 (pr#34954, GaryHyg)
rgw: 找到最旧的 period 并更新 RGWMetadataLogHistory() (pr#34597, Shilpa Jagannath)
rgw: 修复在 s3 client 中使用 ipv6 地址时 SignatureDoesNotMatch 的错误 (pr#33267, yuliyang)
rgw: 修复带有 namespace 的 marker 进行 (un)ordered bucket listing 的错误 (pr#34609, J. Eric Ivancich)
rgw: 修复 lc 不删除与规则标签不完全相同的对象的问题 (pr#35002, Or Friedmann)
rgw: 修复分段上传的错误响应 (pr#35019, GaryHyg)
rgw: 修复 sts 请求中 duration 无效时 rgw 崩溃的问题 (pr#33273, yuliyang)
rgw: 修复一些 list buckets 句柄泄漏 (pr#34986, Tianshan Qu)
rgw: get barbican secret key request 可能会返回错误代码 (pr#33965, Richard Bai(白学余))
rgw: 增加相同或更旧 period pull 消息的日志级别 (pr#34833, Ali Maredia)
rgw: 使 beast 中的 max_connections 可配置 (pr#33340, Tiago Pasqualini)
rgw: 使 implicit_tenants 向后兼容 (issue#24348, pr#33749, Marcus Watts)
rgw: multisite: 强制增量数据同步的 spawn window (pr#33270, Casey Bodley)
rgw: radosgw-admin: 在 bucket stats 命令中添加对 –bucket-id 的支持 (pr#34815, Vikhyat Umrao)
rgw: radosgw-admin: 修复 ‘datalog list’ 中的无限循环 (pr#35001, Casey Bodley)
rgw: reshard: 跳过来自 reshard 队列的 stale bucket id 条目 (pr#34735, Abhishek Lekshmanan)
rgw: 删除生命周期配置时设置两次 bucket attr (pr#34598, zhang Shaowen)
rgw: 为 append 设置正确的 storage class (pr#34064, yuliyang)
rgw: sts: 将所有 http args 添加到 req_info (pr#33355, yuliyang)
rgw: 调整分片存储桶列表 (pr#33675, J. Eric Ivancich)
tests: 将 qa/ 迁移到 python3 (pr#34171, Kefu Chai, Sage Weil, Casey Bodley, Rishabh Dave, Patrick Donnelly, Kyr Shatskyy, Michael Fritch, Xiubo Li, Ilya Dryomov, Alfonso Martínez, Thomas Bechtold)
tools/cli: bash_completion: 不要自动完成过时和隐藏的命令 (pr#35117, Kotresh HR)
tools/cli: ceph_argparse: 在 kwargs 上增加 matchcnt (pr#33160, Matthew Oliver, Shyukri Shyukriev)
tools/rados: 取消屏蔽 ‘-o’ 以恢复原始行为 (pr#33641, Brad Hubbard)