v14.2.3 Nautilus 发布

TheAnalyst

这是 Ceph Nautilus 发布系列的第三个错误修复版本。我们建议所有 Nautilus 用户升级到此版本。此版本修复了一个安全问题。对于从旧版本 Ceph 升级的用户,必须遵循 Nautilus 升级的一般准则。

重要变更

  • CVE-2019-10222- 修复了一个拒绝服务漏洞,未经验证的 Ceph Object Gateway 客户端可能会因未捕获的异常而触发崩溃。
  • 基于 Nautilus 的 librbd 客户端现在可以打开 Jewel 集群上的镜像。
  • RGW num_rados_handles 已被移除。如果您使用的 num_rados_handles 值大于 1,请将当前的 objecter_inflight_ops 和 objecter_inflight_op_bytes 参数乘以旧的 num_rados_handles 值以获得相同的限流行为。
  • Messenger v2 协议的安全模式在此版本中不再是实验性的。此模式现在是监视器连接的首选模式。
  • “osd_deep_scrub_large_omap_object_key_threshold” 已降低,以便更容易检测具有大量 omap 键的对象。
  • Ceph Dashboard 现在支持静默 Prometheus 通知。

变更日志

  • bluestore: 由于 bluefs_preextend_wal_files = false 导致的 50-100% iops 丢失 (issue#38559, pr#28573, Vitaliy Filippov)
  • bluestore: 为 collection_listing 添加慢速操作检测 (pr#29227, Igor Fedotov)
  • bluestore: 避免 Stupid Allocator 返回的 extent 长度溢出 (issue#40703, pr#29023, Igor Fedotov)
  • bluestore/bluefs_types: 合并连续的 extent (pr#28862, Sage Weil)
  • bluestore/bluestore-tool: 迁移相关的次要修复 (pr#28893, Igor Fedotov)
  • bluestore: 首次设置 FLAG_OMAP 时创建尾部 (issue#36482, pr#28963, Tao Ning)
  • bluestore: 不要从 cgroup 限制设置 osd_memory_target 默认值 (pr#29745, Sage Weil)
  • bluestore: 修复 >2GB 的 bluefs 写入 (pr#28966, kungf, Sage Weil)
  • bluestore: 无条件加载所有 OSD 压缩设置 (issue#40480, pr#28892, Igor Fedotov)
  • bluestore: 在 bluefs 空间不足时更智能地转储分配器信息 (issue#40623, pr#28891, Igor Fedotov)
  • bluestore: 将 rocksdb 中的并发 max_background_compactions 设置为 2 (issue#40769, pr#29162, Mark Nelson)
  • bluestore: 支持 buffered read 模式下的 RocksDB 预取 (pr#28962, Igor Fedotov)
  • build/ops: 模块 ‘dashboard’ 失败:没有名为 routes 的模块 (issue#24420, pr#28992, Paul Emmerich)
  • build/ops: rpm: 删除 SuSEfirewall2 (issue#40738, pr#29007, Matthias Gerstner)
  • build/ops: rpm: 要求 ceph-grafana-dashboards (pr#29682, Boris Ranto)
  • cephfs: ceph-fuse: mount 不支持 fallocate() (issue#40615, pr#29157, huanwen ren)
  • cephfs: ceph_volume_client: d_name 在使用前需要转换为字符串 (issue#39406, pr#28609, Rishabh Dave)
  • cephfs: client: 将 ll_ref 从 int32 提升到 uint64_t (pr#29186, Xiaoxi CHEN)
  • cephfs: client: 将 snapdir 的链接计数设置为 1 (issue#40101, pr#29343, “Yan, Zheng”)
  • cephfs: client: 删除 llref=0 的 inode 的 dentry (issue#40960, pr#29478, Xiaoxi CHEN)
  • cephfs: 对 snap inode 的 getattr 操作卡住 (issue#40361, pr#29231, “Yan, Zheng”)
  • cephfs: mds: 无法将 mds 状态从 standby-replay 切换到 active (issue#40213, pr#29233, simon gao)
  • cephfs: mds: 分割快照 inode 时清理不需要的 client_snap_caps (issue#39987, pr#29344, “Yan, Zheng”)
  • cephfs-shell: do_rm() 中未定义名称 ‘files’ 错误 (issue#40489, pr#29158, Varsha Rao)
  • cephfs-shell: poutput 中的 TypeError (issue#40679, pr#29156, Varsha Rao)
  • ceph.spec.in: 如果为 SUSE 构建,则删除 systemd BuildRequires (pr#28937, Dominique Leuenberger)
  • ceph-volume: 批量功能幂等性测试失败,因为消息现在位于 stderr (pr#29689, Jan Fajerski)
  • ceph-volume: 当同一个设备在两个设备列表中传递时,batch 会感到困惑 (pr#29690, Jan Fajerski)
  • ceph-volume: 不识别 ceph-disk 创建的 wal/db 分区 (pr#29464, Jan Fajerski)
  • ceph-volume: [filestore,bluestore] 跟踪设备为集合后,单类型策略失败 (pr#29702, Jan Fajerski)
  • ceph-volume: lvm.activate: 如果 WAL/DB 设备不存在,则返回错误 (pr#29040, David Casier)
  • ceph-volume: 报告挂载时缺少字符串替换 (issue#25030, pr#29260, Shyukri Shyukriev)
  • ceph-volume: 使用 –format json 时将错误打印到 stdout (issue#38548, pr#29506, Jan Fajerski)
  • ceph-volume: 将日志消息打印到 stdout (pr#29600, Jan Fajerski, Kefu Chai, Alfredo Deza)
  • ceph-volume: 运行功能测试时不带 dashboard (pr#29694, Andrew Schoen)
  • ceph-volume: 简单功能测试删除了 lvm zap 的测试 (pr#29660, Jan Fajerski)
  • ceph-volume: 测试为 Debian 设置 noninteractive 标志 (pr#29899, Alfredo Deza)
  • ceph-volume: 当 ‘type’ 文件不存在时激活失败 (pr#29416, Alfredo Deza)
  • cmake: 更新 FindBoost.cmake (pr#29436, Willem Jan Withagen)
  • common/config: 遵守 POD_MEMORY_REQUEST *和* POD_MEMORY_LIMIT 环境变量 (pr#29562, Patrick Donnelly, Sage Weil)
  • common: ceph auth get 创建的 keyring 不适用于 ceph auth import (issue#22227, pr#28740, Kefu Chai)
  • common: OutputDataSocket 在错误路径上重新获取互斥锁 (issue#40188, pr#29147, Casey Bodley)
  • core: osd_snap_trim_sleep 的更好的默认值 (pr#29678, Neha Ojha)
  • core: 将 bluestore_fsck_on_mount_deep 的默认值更改为 false (pr#29697, Neha Ojha)
  • core: 延迟 omap 统计信息收集 (pr#29188, Brad Hubbard)
  • core: librados: 将 buffer free 函数移动到 inline namespace (issue#39972, pr#29244, Jason Dillaman)
  • core: maybe_remove_pg_upmap 对于大型集群可能效率低下 (issue#40104, pr#28756, xie xingguo)
  • core: MDSMonitor: 使用 stringstream 而不是 dout 来显示 mds repaired (issue#40472, pr#29159, Zhi Zhang)
  • core: osd beacon 有时会有空的 pg 列表 (issue#40377, pr#29254, Sage Weil)
  • core: s3tests-test-readwrite 在 rados 运行中失败 (连接被拒绝) (issue#17882, pr#29325, Casey Bodley)
  • doc: 记录更多缓存模式 (issue#14153, pr#28958, Nathan Cutler)
  • doc: 修复 rgw ldap 用户名令牌 (pr#29455, Thomas Kriechbaumer)
  • doc: 改进的 dashboard 功能概述 (pr#28919, Lenz Grimmer)
  • doc: Object Gateway multisite 文档 read-only 参数错误 (issue#40458, pr#29306, Chenjiong Deng)
  • doc/rados: 修正 clay 代码文档中的一些拼写错误 (pr#29191, Myna)
  • doc/rbd: 初始的 live-migration 文档 (issue#40486, pr#29724, Jason Dillaman)
  • doc/rgw: 记录使用 ‘realm pull’ 而不是 ‘period pull’ (issue#39655, pr#29484, Casey Bodley)
  • doc: 在现有 rgw zone 上禁用 metadata_heap 的步骤 (issue#18174, pr#28738, Dan van der Ster)
  • doc: 更新 ‘ceph-iscsi’ 最小版本 (pr#29444, Ricardo Marques)
  • journal: 跳过无效范围后正确推进读取偏移量 (pr#28816, Mykola Golub)
  • librbd: 提高日志性能以匹配预期的降级 (issue#40072, pr#29723, Mykola Golub, Jason Dillaman)
  • librbd: 正确跟踪进行中的 flush 请求 (issue#40555, pr#28769, Jason Dillaman)
  • librbd: 在 copyup 期间快照对象映射可能不一致 (issue#39435, pr#29722, Ilya Dryomov)
  • mds: 更改 mds 撤销过期 caps 的方式 (issue#17854, pr#28583, Rishabh Dave, “Yan, Zheng”)
  • mgr: 将 mgr metdata 添加到 prometheus exporter 模块 (pr#29168, Paul Cuzner)
  • mgr/dashboard: 添加、更新和删除翻译 (issue#39701, pr#28938, Sebastian Krah)
  • mgr/dashboard: cephfs multimds 图表堆叠在一起 (issue#37579, pr#28889, Kiefer Chang)
  • mgr/dashboard: 更改 rgw-api-host 不会生效,除非禁用/启用 dashboard mgr 模块 (issue#40252, pr#29044, Ricardo Marques)
  • mgr/dashboard: controllers/grafana 不兼容 Python3 (issue#40428, pr#29524, Patrick Nawracay)
  • mgr/dashboard: 文件系统页面中 MDS 守护程序的 Dentries 值与 ceph fs status 输出不一致 (issue#40097, pr#28912, Kiefer Chang)
  • mgr/dashboard: 为每个 iSCSI 客户端显示登录信息 (issue#40046, pr#29045, Ricardo Marques)
  • mgr/dashboard: 修复由 webdriver 版本引起的 e2e 失败 (pr#29491, Tiago Melo)
  • mgr/dashboard: 修复 npm 漏洞 (issue#40677, pr#29102, Tiago Melo)
  • mgr/dashboard: 修复表 mouseenter 事件处理测试 (issue#40580, pr#29354, Stephan Müller)
  • mgr/dashboard: 互锁 fast-diff 和 object-map (issue#39451, pr#29442, Patrick Nawracay)
  • mgr/dashboard: 事先通知用户未设置 ‘mon_allow_pool_delete’ 标志 (issue#39533, pr#28833, Tatjana Dehler)
  • mgr/dashboard: 优化门户 IP 的计算 (issue#39580, pr#29061, Ricardo Marques, Kefu Chai)
  • mgr/dashboard: 池图表/迷你图点不显示正确的值 (issue#39650, pr#29352, Stephan Müller)
  • mgr/dashboard: RGW 用户配额验证不正确 (pr#29650, Volker Theile)
  • mgr/dashboard: 静默 Alertmanager 警报 (issue#36722, pr#28968, Stephan Müller)
  • mgr/dashboard: SSL 证书上传命令抛出弃用警告 (issue#39123, pr#29065, Ricardo Dias)
  • mgr/dashboard: 将 ng2-toastr 切换到 ngx-toastr (pr#29050, Tiago Melo, Ernesto Puerta)
  • mgr/dashboard: 升级到 ceph-iscsi config v10 (issue#40566, pr#28974, Ricardo Marques)
  • mgr/diskprediction_cloud: 服务不可用 (issue#40478, pr#29454, Rick Chen)
  • mgr/influx: 模块由于缺少 close() 方法而失败 (issue#40174, pr#29207, Kefu Chai)
  • mgr/orchestrator: 缓存和 DeepSea iSCSI + NFS (pr#29060, Sebastian Wagner, Tim Serong)
  • mgr/rbd_support: 支持调度长时间运行的后台操作 (issue#40621, issue#40790, pr#29725, Venky Shankar, Jason Dillaman)
  • mgr: 当 ipv6 被禁用时使用 ipv4 默认值 (issue#40023, pr#29194, kungf)
  • mgr/volumes: subvolumes 的后台清除队列 (issue#40036, pr#29079, Patrick Donnelly, Venky Shankar, Kefu Chai)
  • mgr/volumes: 次要增强和错误修复 (issue#40927, issue#40617, pr#29490, Ramana Raja)
  • mon: auth mon 重启后未加载完整的 KeyServerData (issue#40634, pr#28993, Sage Weil)
  • mon/MgrMonitor: 修复指定无效格式化程序时的空指针解引用 (pr#29566, Sage Weil)
  • mon/OSDMonitor: 当 require_osd_release < N 时允许 pg_num 增加 (issue#39570, pr#29671, Neha Ojha, Sage Weil)
  • mon/OSDMonitor.cc: 关于 min_size 的更好的错误消息 (pr#29617, Neha Ojha)
  • mon: paxos: 引入新的 reset_pending_committing_finishers 以确保安全 (issue#39484, pr#28528, Greg Farnum)
  • mon: 在 cephfs metadata pool 上设置恢复优先级等 (pr#29275, Sage Weil)
  • mon: 在 handle_conf_change 中获取 mon 锁 (issue#39625, pr#29373, huangjun)
  • msg/async: 避免不必要的昂贵唤醒以进行出站消息传递 (pr#29141, Jason Dillaman)
  • msg/async: 默认启用安全模式,不再是实验性的 (pr#29143, Sage Weil)
  • msg/async: Message 不需要设置 connection (pr#29142, Jianpeng Ma)
  • msg/async, v2: 使 reset_recv_state() 无条件 (issue#40115, pr#29140, Radoslaw Zarzynski, Sage Weil)
  • nautilus:common/options.cc: 降低 osd_deep_scrub_large_omap_object_key_threshold 的默认值 (pr#29173, Neha Ojha)
  • osd: 当设置 noscrub 时不要随机化深度 scrub (issue#40198, pr#28768, David Zafman)
  • osd: 修复常规 scrub 后触发自动修复的方式 (issue#40530, issue#40073, pr#28869, sjust@redhat.com, David Zafman)
  • osd/OSD: 自动将心跳会话标记为过期并将其拆除 (issue#40586, pr#29391, xie xingguo)
  • osd/OSD: 如果卡在启动阶段,则保持与 mon 同步 (pr#28639, xie xingguo)
  • osd/PG: 如果 PG 在 unblock 时未处于活动状态,则不要排队 scrub (issue#40451, pr#29372, Sage Weil)
  • osd/PG: 修复 PG 删除时 pgmeta-like 对象的清理 (pr#29115, Sage Weil)
  • rbd/action: 修复获取位置参数错误 (issue#40095, pr#28870, songweibin)
  • rbd: [cli] ‘export’ 应处理并发 IO 完成 (issue#40435, pr#29329, Jason Dillaman)
  • rbd: librbd: 在 resize 期间增长对象映射之前不要解除 IO 阻塞 (issue#39952, pr#29246, Jason Dillaman)
  • rbd-mirror: 处理 image sync throttler 队列中的重复项 (issue#40519, pr#28817, Mykola Golub)
  • rbd-mirror: 链接到指定的 alloc 库 (issue#40110, pr#29193, Jason Dillaman)
  • rbd-nbd: sscanf 返回 0 表示不匹配 (issue#39269, pr#29315, Jianpeng Ma)
  • rbd: profile rbd OSD cap 应默认添加 class rbd metadata_list cap (issue#39973, pr#29328, songweibin)
  • rbd: 降低 cls/journal 和 cls/rbd 预期错误的日志级别 (issue#40865, pr#29551, Jason Dillaman)
  • rbd: tests: 将 “rbd diff” 覆盖添加到套件 (issue#39447, pr#28575, Shyukri Shyukriev, Nathan Cutler)
  • rgw: 添加 ‘GET /admin/realm?list’ api 来列出 realms (issue#39626, pr#28751, Casey Bodley)
  • rgw: 允许 radosgw-admin 使用 –allow-unordered 列出 bucket (issue#39637, pr#28230, J. Eric Ivancich)
  • rgw: 有条件地允许具有非唯一电子邮件地址的内置用户 (issue#40089, pr#28715, Matt Benjamin)
  • rgw: 当 bucket 包含未完成的分段上传时,删除 bucket 可能会失败 (issue#40526, pr#29154, J. Eric Ivancich)
  • rgw: 复制时未提供元数据指令时不会崩溃 (issue#40416, pr#29499, Adam C. Emerson)
  • rgw_file: advance_mtime() 应该考虑命名空间过期 (issue#40415, pr#29410, Matt Benjamin)
  • rgw_file: advance_mtime() 无条件获取 RGWFileHandle::mutex (pr#29801, Matt Benjamin)
  • rgw_file: 所有目录相对于内容都是虚拟的 (issue#40204, pr#28886, Matt Benjamin)
  • rgw_file: 修复顶层目录的失效 (issue#40196, pr#29309, Matt Benjamin)
  • rgw_file: 修复 readdir eof() 计算——调用者停止意味着 !eof (issue#40375, pr#29409, Matt Benjamin)
  • rgw_file: 在散列 bucket 名称时包含租户 (issue#40118, pr#28854, Matt Benjamin)
  • rgw: 修复 STSService::storeARN 中 miss get ret (issue#40386, pr#28713, Tianshan Qu)
  • rgw: 修复 LCFilter 中的前缀处理 (issue#37879, pr#28550, Matt Benjamin)
  • rgw: 修复 rgw 崩溃并设置正确的错误代码 (pr#28729, yuliyang)
  • rgw: hadoop-s3a 套件因更多 ansible 错误而失败 (issue#39706, pr#28735, Casey Bodley)
  • rgw: hadoop-s3a 套件因更多 ansible 错误而失败 (issue#39706, pr#29265, Casey Bodley)
  • rgw: Librgw 没有正确 GC 删除的对象 (issue#37734, pr#28648, Tao Chen, Matt Benjamin)
  • rgw: multisite: DELETE Bucket CORS 未转发到 master zone (issue#39629, pr#28714, Chang Liu)
  • rgw: multisite: 修复 ‘radosgw-admin bucket rm’ 的 –bypass-gc 标志 (issue#24991, pr#28549, Casey Bodley)
  • rgw: multisite: ‘radosgw-admin bilog trim’ 在 1000 个条目后停止 (issue#40187, pr#29326, Casey Bodley)
  • rgw: multisite: ‘radosgw-admin bucket sync status’ 应该调用 syncs_from(source.name) 而不是 id (issue#40022, pr#28739, Casey Bodley)
  • rgw: multisite: radosgw-admin 命令不应在非 master zone 上修改元数据 (issue#39548, pr#29163, Shilpa Jagannath)
  • rgw: multisite: 用于数据完全同步的 RGWListBucketIndexesCR 需要分页 (issue#39551, pr#29311, Shilpa Jagannath)
  • rgw/OutputDataSocket: append_output(buffer::list&) 声称它会 (但不会) 在 data_max_backlog 处丢弃输出 (issue#40178, pr#29310, Matt Benjamin)
  • rgw, Policy 应该在 assume_role 时进行 url_decode (pr#28728, yuliyang)
  • rgw: 提供对管理员友好的 reshard 状态输出 (issue#37615, pr#29286, Mark Kogan)
  • rgw: Put LC 不会清除现有的生命周期 (issue#39654, pr#29313, Abhishek Lekshmanan)
  • rgw: 移除 rgw_num_rados_handles;为 rgw metadata pools 设置 autoscale 参数 (pr#27684, Adam C. Emerson, Casey Bodley, Sage Weil)
  • rgw: RGWGC 添加 perfcounter retire counter (issue#38251, pr#29308, Matt Benjamin)
  • rgw: 保存不必要的 RGWEnv 副本 (issue#40183, pr#29205, Mark Kogan)
  • rgw: set null version object 问题 (issue#36763, pr#29287, Tianshan Qu)
  • rgw: Swift 接口:如果对象名称包含 “?”,则服务器端复制失败 (issue#27217, pr#28736, Casey Bodley)
  • rgw: TempURL 不应允许带有 X-Object-Manifest 的 PUT 请求 (issue#20797, pr#28712, Radoslaw Zarzynski)
  • rgw: S3 API 的 Multi-Object Delete 操作错误地处理了 Code 响应元素 (issue#18241, pr#28737, Radoslaw Zarzynski)
  • rocksdb: rocksdb_rmrange 相关改进 (pr#29439, Zengran Zhang, Sage Weil)
  • rocksdb: 更新到 v6.1.2 (pr#29440, Mark Nelson)
  • tools: ceph-kvstore-tool: 打印 db stats (pr#28810, Igor Fedotov)