v15.2.8 Octopus 发布
这是 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.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)
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)