v15.2.8 Octopus 发布

dgalloway

这是 Octopus 系列的第 8 个向后移植版本。此版本修复了 CephFS 中的一个安全漏洞,并包含多项错误修复。我们建议用户更新到此版本。

重要变更

  • CVE-2020-27781:OpenStack Manila 使用 ceph_volume_client.py 库允许租户访问任何 Ceph 凭证的密钥。(Kotresh Hiremath Ravishankar, Ramana Raja)

  • ceph-volume:lvm batch 子命令进行了重大重写。这修复了许多错误,并提高了大小指定和计算方面的可用性,以及幂等行为和磁盘替换过程。有关更多详细信息,请参阅 https://docs.ceph.net.cn/en/latest/ceph-volume/lvm/batch/

  • MON:集群日志现在每隔 mon_health_to_clog_interval 记录一次健康状况详情,该间隔已从 1 小时更改为 10 分钟。如果健康摘要自上次已知以来没有变化,则将跳过记录健康状况详情。

  • ceph df 命令现在列出每个池中的 pg 数量。

  • bluefs_preextend_wal_files 选项已删除。

  • 现在可以使用 mon_host_override 配置选项或 --mon-host-override 命令行开关指定 Ceph 工具和守护程序要联系的初始监视器。这通常只应在调试时使用,并且只影响与 Ceph 监视器集群的初始通信。

变更日志

  • pybind/cephvolumeclient:禁止对现有 auth id 进行授权 (Kotresh Hiremath Ravishankar, Ramana Raja)

  • 启用按 RBD 镜像监控 (pr#37697, Patrick Seidensal)

  • [ceph-volume]: 删除对 getdevices() 的不必要调用 (pr#37412, Marc Gariepy)

  • bluestore: 修复 collectionlist 排序 (pr#37048, Mykola Golub)

  • bluestore: mempool 更细的粒度 + 添加遗漏的结构体 (pr#37264, Deepika Upadhyay, Igor Fedotov, Adam Kupczyk)

  • bluestore: 删除预扩展 WAL 支持 (pr#37373, Igor Fedotov)

  • ceph-volume batch: 在 argparser 中拒绝分区 (pr#38280, Jan Fajerski)

  • ceph-volume inventory: 使 libstoragemgmt 数据检索可选 (pr#38299, Jan Fajerski)

  • ceph-volume: 添加 libstoragemgmt 支持 (pr#36852, Paul Cuzner, Satoru Takeuchi)

  • ceph-volume: 向 zap 添加 no-systemd 参数 (pr#37722, wanghongxu)

  • ceph-volume: 暂时避免使用格式化字符串 (pr#37345, Jan Fajerski)

  • ceph-volume: 在 simple activate 中使用 mount opt (pr#38014, Dimitri Savineau)

  • ceph-volume: 修复 filestore/dmcrypt activate (pr#38199, Guillaume Abrioux)

  • ceph-volume: 修复 journal size 参数不起作用 (pr#37344, wanghongxu)

  • ceph-volume: 修复 lvm batch auto 和满 SSDs (pr#38045, Dimitri Savineau, Guillaume Abrioux)

  • ceph-volume: 修复 legacy osd 的 simple activate (pr#37194, Guillaume Abrioux)

  • ceph-volume: 实现 --log-level 标志 (pr#38426, Andrew Schoen)

  • ceph-volume: 重大批处理重构 (pr#37520, Jan Fajerski, Joshua Schmid)

  • ceph-volume: prepare: 对隐式大小调整使用 \*-slots 参数 (pr#38205, Jan Fajerski)

  • ceph-volume: 从文档和帮助文本中删除对 dmcache 的提及 (pr#38047, Dimitri Savineau, Andrew Schoen)

  • ceph-volume: 尝试重新获取锁失败时重试 (pr#36925, Sébastien Han)

  • ceph-volume: simple scan 应忽略 tmpfs (pr#36953, Andrew Schoen)

  • ceph-volume: 支持 mpath 设备 (pr#36928, Jan Fajerski)

  • ceph.in: 忽略刷新 stdout 失败 (pr#37225, Dan van der Ster)

  • ceph.spec, debian: 添加 smartmontools, nvme-cli 依赖项 (pr#37257, Yaarit Hatuka)

  • cephadm batch backport November (pr#38155, Ricardo Marques, Sebastian Wagner, Kyr Shatskyy, Dan Williams, Volker Theile, Varsha Rao, Tim Serong, Adam King, Dimitri Savineau, Patrick Seidensal, Dan Mick, Michael Fritch, Joshua Schmid)

  • cephadm batch backport September (1) (pr#36975, Stephan Müller, Matthew Oliver, Sebastian Wagner, Paul Cuzner, Adam King, Patrick Seidensal, Shraddha Agrawal, Michael Fritch, Dan Mick)

  • cephadm batch backport September (2) (pr#37436, Varsha Rao, Kiefer Chang, Patrick Donnelly, Sebastian Wagner, Kefu Chai, Guillaume Abrioux, Juan Miguel Olmo Martínez, Paul Cuzner, Volker Theile, Tim Serong, Zac Dover, Adam King, Michael Fritch, Joshua Schmid)

  • cephfs-journal-tool: 修复查找丢失对象时不正确的 readoffset (pr#37854, Xue Yantao)

  • cephfs: client: 修复目录 inode 无法调用 release callback (pr#37017, sepia-liu)

  • cephfs: client: 修复 extra open ref 减少 (pr#37249, Xiubo Li)

  • cephfs: client: 修复 inode llref 引用计数泄漏 (pr#37839, sepia-liu)

  • cephfs: client: 处理没有 Fs cap 的 readdir reply (pr#37370, "Yan, Zheng")

  • cephfs: client: 使 Client::open() 传递适当的 cap mask 给 pathwalk (pr#37369, "Yan, Zheng")

  • cephfs: client: 使用非静态 dirent 以确保线程安全 (pr#37351, Patrick Donnelly)

  • cephfs: libcephfs: 忽略恢复打开文件限制 (pr#37358, Xiubo Li)

  • cephfs: osdc/Journaler: 如果 onsafe 为 0,则不调用 onsafe-">complete() (pr#37368, Xiubo Li)

  • common/adminsocket: 始终验证参数 (pr#37341, Kefu Chai)

  • compressor: 添加一个配置选项来指定 Zstd 压缩级别 (pr#37253, Bryan Stillwell)

  • core: include/encoding: 修复大端系统上的浮点类型编码/解码 (pr#37032, Ulrich Weigand)

  • debian: 添加 ceph-mgr 缺失的 Python 依赖项 (pr#37422, Johannes M. Scheuermann)

  • doc/PendingReleaseNotes: 提及 bluefspreextendwalfiles (pr#37549, Nathan Cutler)

  • doc/mgr/orchestrator: 在文档中添加与自定义容器相关的提示 (pr#37962, Volker Theile)

  • doc: cephfs: 改进 "ceph nfs cluster create" 和 "ceph fs volume create" 命令的文档 (pr#37691, Nathan Cutler)

  • doc: 启用 Read the Docs (pr#37201, Kefu Chai)

  • erasure-code: 为 aarch64 平台启用 isa-l EC (pr#37504, luo rixin, Hang Li)

  • krbd: 可选跳过等待 udev 事件 (pr#37285, Ilya Dryomov)

  • librbd: 确保在处理受限 IO 时持有线程池锁 (pr#37116, Jason Dillaman)

  • librbd: 处理 immutable-object-cache 中的 DNE (pr#36860, Feng Hualong, Mykola Golub, Yin Congmin, Jason Dillaman)

  • librbd: 使用迁移中止可能导致数据丢失 (pr#37164, Jason Dillaman)

  • mds/CInode: 优化仅由子树固定的检查 (pr#37248, Mark Nelson)

  • mds: 考虑 hitsession 中正在关闭的会话 (pr#37856, Dan van der Ster)

  • mds: 在获取 auth pins 和 locks 之前添加请求到 batchop (pr#37022, "Yan, Zheng")

  • mds: 当客户端工作集合理时,不触发“client failing to respond to cap release” (pr#37353, Patrick Donnelly)

  • mds: 如果 dir 是 merge 的 basedir,则不提交 omaprmkeys (pr#37034, "Yan, Zheng", Chencan)

  • mds: 正常会话关闭后不恢复文件 (pr#37334, "Yan, Zheng")

  • mds: 修复设置 forwardallrequeststoauth 时出现的“forward loop” (pr#37360, "Yan, Zheng")

  • mds: 修复访问丢失父目录下的文件时挂起问题 (pr#37020, Zhi Zhang)

  • mds: 修复 kcephfs 解析 dirfrag 的 ndist 始终为 0 (pr#37357, Yanhu Cao)

  • mds: 修复 mds forwarding request 'noavailableopfound' (pr#37240, Yanhu Cao)

  • mds: 修复 MDCache::finishrollback 中的 nullptr dereference (pr#37243, "Yan, Zheng")

  • mds: 修复 purgequeue 的 calculateops 不准确 (pr#37372, Yanhu Cao)

  • mds: 使 MDSTRIM 阈值可配置 (pr#36970, Paul Emmerich)

  • mds: 优化 dentry 加载的随机阈值查找 (pr#37247, Patrick Donnelly)

  • mds: 将 MDSGatherBuilder 放在堆栈上 (pr#37354, Patrick Donnelly)

  • mds: 减少打开文件表预取内存使用 #37382 (pr#37383, "Yan, Zheng")

  • mds: 解决等待未提交片段时的 SIGSEGV (pr#37355, Patrick Donnelly)

  • mds: 恢复解码版本 (pr#37356, Jos Collin)

  • mds: 仅在 scrub 运行时才向 ceph-mgr 发送 scrub 状态 (issue#45349, pr#36047, Kefu Chai, Venky Shankar)

  • mds: standy-replay mds 在 resta... 后仍处于“resolve”状态 (pr#37363, Wei Qiaomiao)

  • messages,mds: 修复大端系统上的枚举类型解码 (pr#36813, Ulrich Weigand)

  • mgr/dashboard/api: 将 OSD 直方图移动/创建到单独的端点 (pr#37973, Aashish Sharma)

  • mgr/dashboard: 为遥测报告预览添加简短描述 (pr#37597, Nizamudeen A)

  • mgr/dashboard: 允许编辑有 initiators 登录的 iSCSI targets (pr#37277, Tiago Melo)

  • mgr/dashboard: 在表格列下拉菜单点击外部时自动关闭 (pr#36862, Tiago Melo)

  • mgr/dashboard: 在 Firefox 中复制到剪贴板不起作用 (pr#37493, Volker Theile)

  • mgr/dashboard: Datatable 捕获来自其他 datatable 的 select 事件 (pr#36899, Volker Theile, Tiago Melo)

  • mgr/dashboard: 禁用 TLS 1.0 和 1.1 (pr#38331, Volker Theile)

  • mgr/dashboard: 在用户表单上禁用自动完成 (pr#36901, Volker Theile)

  • mgr/dashboard: 如果没有 python3-saml,则禁用 sso (pr#38405, Kevin Meijer)

  • mgr/dashboard: 禁用只读模态框的表单输入 (pr#37239, Nizamudeen)

  • mgr/dashboard: 修复单元测试和 i18n 翻译中的错误 (pr#36991, Volker Theile)

  • mgr/dashboard: 修复 CrushMap viewer 项目垂直压缩问题 (pr#36871, Nizamudeen A)

  • mgr/dashboard: 修复 host-details Grafana dashboard 中的多对多问题 (pr#37299, Patrick Seidensal)

  • mgr/dashboard: 修复 npm 包的漏洞 (pr#36921, Tiago Melo)

  • mgr/dashboard: 如果 limit=0,则隐藏 table action 输入字段 (pr#36872, Volker Theile)

  • mgr/dashboard: 如果未由 Orchestrator 管理,则应禁用 Host delete action (pr#36874, Volker Theile)

  • mgr/dashboard: 改进通知徽章 (pr#37090, Aashish Sharma)

  • mgr/dashboard: 登录页面改进 (pr#37390, Tiago Melo, Alfonso Martínez)

  • mgr/dashboard: 合并 disable 和 disableDesc (pr#37763, Tiago Melo)

  • mgr/dashboard: 正确格式化 iSCSI target portals (pr#36870, Volker Theile)

  • mgr/dashboard: 未指定 Content-Type 时 REST API 返回 500 (pr#37308, Avan Thakkar)

  • mgr/dashboard: 删除 monitoring/alerts datatable details 中无用的选项卡 (pr#36875, Volker Theile)

  • mgr/dashboard: 当 replicated size 为 1 时显示警告 (pr#37578, Sebastian Krah)

  • mgr/dashboard: 性能 'Client Read/Write' 小部件显示不正确的写入值 (pr#38189, Volker Theile)

  • mgr/dashboard: 仅在必要时更新 datatable (pr#37331, Volker Theile)

  • mgr/dashboard: 使用 pipe 而不是在模板中调用函数 (pr#38094, Volker Theile)

  • mgr/dashboard: cluster > manager modules (pr#37434, Avan Thakkar)

  • mgr/dashboard: 在 tabset 中显示设备的健康信息 (pr#37784, Kiefer Chang)

  • mgr/dashboard: 修复在 Ganesha 表单中输入现有路径时的错误 (pr#37688, Kiefer Chang)

  • mgr/dashboard: 修复列出大量存储桶时的性能问题 (pr#37405, Alfonso Martínez)

  • mgr/dashboard: 修复某些 NFS-Ganesha 端点的安全范围 (pr#37450, Kiefer Chang)

  • mgr/dashboard: 修复在 NFS 导出中导出 CephFS 路径 "/" 时的错误 (pr#37686, Kiefer Chang)

  • mgr/dashboard: 从 mgr 获取 rgw daemon zonegroup 名称 (pr#37620, Alfonso Martinez)

  • mgr/dashboard: 增加 Grafana iframe 高度以避免滚动条 (pr#37182, Ngwa Sedrick Meh)

  • mgr/dashboard: 如果显示遥测通知,非管理员用户登录成功 (pr#37452, Tatjana Dehler)

  • mgr/dashboard: 支持 Orchestrator 和用户定义的 Ganesha 集群 (pr#37885, Kiefer Chang)

  • mgr/dashboard: table detail rows overflow (pr#37332, Aashish Sharma)

  • mgr/devicehealth: 即使集群中没有 OSD,也会创建 devicehealthmetrics pool (pr#37533, Sunny Kumar)

  • mgr/insights: 测试环境需要 'six' (pr#38396, Brad Hubbard)

  • mgr/prometheus: 添加 pool compression stats (pr#37562, Paul Cuzner)

  • mgr/telemetry: 修复匿名化 serial 时设备 ID 分割问题 (pr#37302, Yaarit Hatuka)

  • mgr/volumes/nfs: 检查 orchestrator spec serviceid 是否有效 (pr#37371, Varsha Rao)

  • mgr/volumes/nfs: 修复 pseudo path 的错误消息不正确 (pr#37855, Varsha Rao)

  • mgr/volumes: 使 cloner 线程数可配置 (pr#37671, Kotresh HR)

  • mgr/zabbix: 缩进 "zabbix config-show" 的输出 (pr#37128, Kefu Chai)

  • mgr: PyModuleRegistry::unregisterclient() 可能会无限期运行 (issue#47329, pr#37217, Venky Shankar)

  • mgr: 从 mon 接收 map 时不要更新 pending service map epoch (pr#37180, Mykola Golub)

  • mon scrub testing (pr#38361, Brad Hubbard)

  • mon/MDSMonitor do not ignore mds's down:dne request (pr#37858, chencan)

  • mon/MDSMonitor: 使用点号分隔 mds 标识符和 mds 真实名称 (pr#37857, Zhi Zhang)

  • mon/MonMap: 修复 initwithhosts 无条件失败 (pr#37817, Nathan Cutler, Patrick Donnelly)

  • mon/PGMap: 在 ceph df 命令中为 pools 添加 pg count (pr#36945, Vikhyat Umrao)

  • mon: 定期在集群日志中记录 "ceph health detail" (pr#38345, Prashant Dhange)

  • mon: 删除 CephFS 及其 pools 会导致 MONs 崩溃 (pr#37256, Patrick Donnelly)

  • mon: 使 'mon stat' 也能输出 json (pr#37705, Joao Eduardo Luis)

  • mon: 在 preprocess… 中更一致地将 pgtemp 消息标记为 noreply (pr#37347, Greg Farnum)

  • mon: 添加到 sessionmap 时设置 sessiontimeout (pr#37553, Ilya Dryomov)

  • mon: 将 mon 更新存储在 ceph context 中以供将来 MonMap 实例化 (pr#36705, Patrick Donnelly, Shyamsundar Ranganathan)

  • msg/async/ProtocolV2: 允许 rxbuf/txbuf 在测试中变大 (pr#37080, Ilya Dryomov)

  • os/bluestore: 默认启用更灵活的 bluefs 空间管理 (pr#37092, Igor Fedotov)

  • osd/osd-rep-recov-eio.sh: TESTradosrepairwarning: return 1 (pr#37853, David Zafman)

  • osd: 在块之间检查 nosrub/nodeep-scrub,以避免竞争 (pr#38359, David Zafman)

  • osdc/ObjectCacher: overwrite 可能会导致流氓读取请求回调 (pr#37674, Jason Dillaman)

  • osdc: 为 mons/osds 添加超时配置 (pr#37530, Patrick Donnelly)

  • prometheus: 正确分割 IPv6 地址的端口 (pr#36985, Matthew Oliver)

  • pybind/cephfs: 为不读取 conffile 添加特殊值 (pr#37724, Kefu Chai)

  • pybind/cephfs: 修复 cephfs.pyx 引发的自定义异常 (pr#37350, Ramana Raja)

  • pybind/mgr/volumes: 添加全局锁调试 (pr#37366, Patrick Donnelly)

  • qa/\*/mon/mon-last-epoch-clean.sh: 将 osd 标记为 out 而不是 down (pr#37349, Neha Ojha)

  • qa/cephfs: 添加 sessiontimeout 选项支持 (pr#37841, Xiubo Li)

  • qa/tasks/nfs: 测试使用 nfs command 创建的导出挂载 (pr#37365, Varsha Rao)

  • qa/tasks/{ceph,cephmanager}: 删除 py2 支持 (pr#37863, Kefu Chai)

  • qa/tests: 添加 rhel 8.2 (pr#38287, Yuri Weinstein)

  • qa/tests: 在 rados/thrash-old-clients 中仅对旧客户端使用 bionic (pr#36931, Yuri Weinstein)

  • qa/workunits/mon: 修复过大的 pool PG count (pr#37346, Jason Dillaman)

  • qa: 为 mgr tests 启用 debugclient (pr#37270, Brad Hubbard)

  • qa: 修复测试之间 fs 清理期间的 traceback (pr#36713, Kotresh HR)

  • qa: 添加 volumes plugin 使用 libcephfs 的调试信息 (pr#37352, Patrick Donnelly)

  • qa: 删除 hammer 分支 qa tests (pr#37728, Neha Ojha, Deepika Upadhyay)

  • qa: 忽略预期的 mds failover 消息 pr#37367, Patrick Donnelly)

  • rbd-mirror: 对等设置仍可能发生竞争并导致 peer 创建失败 (pr#37342, Jason Dillaman)

  • rbd: 在 krbd symlinks 中包含 RADOS 命名空间 (pr#37343, Ilya Dryomov)

  • rbd: journal: flush 和 append callback 之间可能存在竞争条件 (pr#37850, Jason Dillaman)

  • rbd: librbd: 禁用 object-map 时忽略 -ENOENT 错误 (pr#37852, Jason Dillaman)

  • rbd: librbd: 在评估 pending count 之前更新 AioCompletion 返回值 (pr#37851, Jason Dillaman)

  • rbd: 使通用选项覆盖 krbd-specific 选项 (pr#37408, Ilya Dryomov)

  • rbd: rbd-nbd: 按 image spec 取消映射时不要忽略命名空间 (pr#37812, Mykola Golub)

  • rgw/gc: 修复 perf counter 'gcretireobject' 增量问题 (pr#37847, Pritha Srivastava)

  • rgw/gc: 修复队列标记的条件 (pr#37846, Pritha Srivastava)

  • rgw/rgwfile: 修复不正确的 lru object eviction (pr#37672, luo rixin)

  • rgw: 在 bucket stats error logging 中添加 bucket name (pr#37335, Seena Fallah)

  • rgw: 向 beast 添加请求超时 (pr#37809, Adam C. Emerson, Or Friedmann)

  • rgw: RGWObjVersionTracker 跟踪增量版本 (pr#37337, Casey Bodley)

  • rgw: Swift API 匿名访问应为 401 (pr#37339, Matthew Oliver)

  • rgw: 添加用于在 rgw 中创建和管理 oidc provider 实体以及离线验证 OpenID Connect Access 和 ID Token 的代码 (pr#37640, Pritha Srivastava, Casey Bodley)

  • rgw: 允许 rgw-orphan-list 注意 rados 对象何时在命名空间中 (pr#37800, J. Eric Ivancich)

  • rgw: 在 RGWLifecycleConfiguration::dump() 中转储 transitions (pr#36812, Shengming Zhang)

  • rgw: 在 GC defer 期间,阻止新的 GC enqueue (pr#38249, Casey Bodley, J. Eric Ivancich)

  • rgw: 修复即使对象中只有一个与规则相同的标签,也会返回 expiration header 的问题 (pr#37807, Or Friedmann)

  • rgw: 修复有序和无序 bucket listing 中命名空间设置问题 (pr#37673, J. Eric Ivancich)

  • rgw: 修复 user stats 迭代增量 (pr#37779, Mark Kogan)

  • rgw: fix: S3 API KeyCount incorrect return (pr#37849, 胡玮文)

  • rgw: 将 resharding 事件日志级别设置为 1(以前为 20) (pr#36840, Or Friedmann)

  • rgw: radosgw-admin 在 listing bucket 时应在内部进行分页 (pr#37803, J. Eric Ivancich)

  • rgw: radosgw-admin: period pull 命令并非总是 rawstorageop (pr#37336, Casey Bodley)

  • rgw: 在 s3 v4 auth 的 canonical query string 中将 '+' 替换为 "%20" (pr#37338, yuliyangyewu)

  • rgw: rgwfile: 避免在关闭时长时间延迟 (pr#37551, Matt Benjamin)

  • rgw: s3: 将 bucket encryption 标记为未实现 (pr#36691, Abhishek Lekshmanan)

  • rgw: forwarding request 时 urlencode bucket name (pr#37340, caolei)

  • rgw: 为 teuthology rgw-orphan-list 测试使用 yum 而不是 dnf (pr#37845, J. Eric Ivancich)

  • rpm,deb: 删除 /etc/sudoers.d/cephadm (pr#37401, Nathan Cutler)

  • run-make-check.sh: 如果构建失败,则不运行测试 (pr#38294, Brad Hubbard)

  • systemd: 支持 AIO 节点的平滑重启 (pr#37300, Wong Hoi Sing Edison)

  • test/librados: 修复 checksum test cases 中的 endian bugs (pr#37604, Ulrich Weigand)

  • test/rbd-mirror: pool watcher registration error 可能导致竞争 (pr#37208, Jason Dillaman)

  • test/storetest: 对 death tests 使用 'threadsafe' 风格 (pr#37819, Igor Fedotov)

  • tools/osdmaptool.cc: 添加 cleantemps 能力 (pr#37348, Neha Ojha)

  • tools/rados: 在 "rados ls" 的 json 输出期间定期刷新 formatter (pr#37835, J. Eric Ivancich)

  • vstart.sh: 修复 fs set maxmds bug (pr#37837, Jinmyeong Lee)