发布 v13.2.9 Mimic

TheAnalyst

这是 Ceph Mimic 稳定版系列中的第九个版本,很可能是最后一个稳定版本。此版本修复了所有组件中的错误,还包含一个 RGW 安全修复程序。我们建议所有 Mimic 用户升级到此版本。

重要变更

  • CVE-2020-1760: 修复了由于 RGW GetObject header 分割导致的安全漏洞
  • 用于 upmap 平衡的配置值 osd_calc_pg_upmaps_max_stddev 已被移除。请改用 mgr balancer 配置 upmap_max_deviation,它现在是每个 OSD 与目标 PG 偏差的 PG 整数。这可以通过类似 ceph config set mgr mgr/balancer/upmap_max_deviation 2 的命令设置。默认的 upmap_max_deviation 为 1。在某些情况下,crush 规则不允许池完全平衡 PG。例如,如果 crush 要求在 3 个机架上各有 1 个副本,但其中一个机架中的 OSD 较少。在这些情况下,可以增加配置值。
  • cephfs-data-scan scan_links 命令现在会自动修复 inotables 和 snaptable。

变更日志

  • bluestore: os/bluestore: 修复 STATE_KV_SUBMITTED 的不当设置 (pr#31673, Igor Fedotov)
  • ceph-volume/batch: 在访问前检查 lvs 列表 (pr#34479, Jan Fajerski)
  • ceph-volume/batch: 在非交互模式下对过滤的设备失败 (pr#33201, Jan Fajerski)
  • ceph-volume/batch: 当所有设备都被过滤时返回成功 (pr#34476, Jan Fajerski)
  • ceph-volume/lvm/activate.py: 澄清错误消息: fsid 指的是 osd_fsid (pr#32865, Yaniv Kaul)
  • ceph-volume/test: 修补 VolumeGroups (pr#32559, Jan Fajerski)
  • ceph-volume: 在 lvm list 中解引用符号链接 (pr#32876, Benoît Knecht)
  • ceph-volume: 为原始模式添加 db 和 wal 支持 (pr#33622, Sébastien Han)
  • ceph-volume: 添加方法以将过滤器传递给 pvs、vgs 和 lvs 命令 (pr#33215, Rishabh Dave)
  • ceph-volume: 为分区添加适当的大小属性 (pr#32529, Jan Fajerski)
  • ceph-volume: 添加原始模式 (pr#33580, Jan Fajerski, Sage Weil, Guillaume Abrioux)
  • ceph-volume: 为 prepare 添加大小参数 (pr#33578, Jan Fajerski)
  • ceph-volume: 添加实用函数 (pr#32544, Mohamad Gebai)
  • ceph-volume: 允许在任何地方使用原始块设备 (pr#32869, Jan Fajerski)
  • ceph-volume: 允许跳过 restorecon 调用 (pr#32530, Alfredo Deza)
  • ceph-volume: 避免对没有 LV 的 VG 调用 zap_lv (pr#33610, Jan Fajerski)
  • ceph-volume: batch bluestore 修复 create_lvs 调用 (pr#33579, Jan Fajerski)
  • ceph-volume: batch bluestore 修复 create_lvs 调用 (pr#33623, Jan Fajerski)
  • ceph-volume: 检查我们是否在 selinux 环境中运行 (pr#32866, Jan Fajerski)
  • ceph-volume: 检查我们是否在 selinux 环境中运行,现在也在 py2 中 (pr#32867, Jan Fajerski)
  • ceph-volume: devices/simple/scan: 修复日志语句中的字符串 (pr#34444, Jan Fajerski)
  • ceph-volume: 默认不创建 osd['block.db'] (pr#33626, Jan Fajerski)
  • ceph-volume: zapping filestore 时不要删除两次 vg (pr#33615, Jan Fajerski)
  • ceph-volume: inventory 中更细粒度的可用性概念 (pr#33606, Jan Fajerski)
  • ceph-volume: 修复 lvm batch 的 is_ceph_device (pr#33608, Jan Fajerski, Dimitri Savineau)
  • ceph-volume: 修复整数溢出 (pr#32872, dongdong tao)
  • ceph-volume: import mock.mock 而不是 unittest.mock (py2) (pr#32871, Jan Fajerski)
  • ceph-volume: lvm deactivate 命令 (pr#33208, Jan Fajerski)
  • ceph-volume: lvm/deactivate: 添加单元测试,移除 –all (pr#32862, Jan Fajerski)
  • ceph-volume: lvm: get_device_vgs() 按提供的 prefix 过滤 (pr#33617, Jan Fajerski, Yehuda Sadeh)
  • ceph-volume: 使 get_devices fs 位置独立 (pr#33124, Jan Fajerski)
  • ceph-volume: 对“simple scan”子命令帮助进行小幅清理 (pr#32557, Michael Fritch)
  • ceph-volume: mokeypatch 调用 lvm 相关二进制文件 (pr#31406, Jan Fajerski)
  • ceph-volume: 将 journal_size 作为 Size 而不是字符串传递 (pr#33611, Jan Fajerski)
  • ceph-volume: 重构 api/lvm.py (pr#31407, Rishabh Dave)
  • ceph-volume: 重构 listing.py + 修复 (pr#33603, Jan Fajerski, Rishabh Dave, Theofilos Mouratidis, Guillaume Abrioux)
  • ceph-volume: inventory 中拒绝小于 5GB 的磁盘 (issue#40776, pr#32528, Jan Fajerski)
  • ceph-volume: 抑制 ‘ceph-bluestore-tool’ 失败 (pr#33605, Sébastien Han)
  • ceph-volume: 运行 tox 测试时跳过缺失的解释器 (pr#33489, Andrew Schoen)
  • ceph-volume: 如果已完成则跳过 osd 创建 (pr#33607, Guillaume Abrioux)
  • ceph-volume: simple scan json 输出中去除 _dmcrypt 后缀 (pr#33618, Jan Fajerski)
  • ceph-volume: 如果使用 db-devices 且 osds_per_device > 1,则使用正确的 extent (pr#32875, Fabian Niepelt)
  • ceph-volume: dd 命令使用 fsync (pr#31552, Rishabh Dave)
  • ceph-volume: 在 has_common_vg 中使用 get_device_vgs (pr#33609, Jan Fajerski)
  • ceph-volume: util: 在 $PATH 中查找可执行文件 (pr#32861, Shyukri Shyukriev)
  • cephfs: cephfs: osdc/objecter: 修复 last_sent 中的科学计数法格式,并为 ops 添加 age (pr#31384, Varsha Rao)
  • cephfs: cephfs: test_volume_client: 只为 python 版本声明一个默认值 (issue#40460, pr#30110, Rishabh Dave)
  • cephfs: client: 更精确的 CEPH_CLIENT_CAPS_PENDING_CAPSNAP (pr#31283, "Yan, Zheng")
  • cephfs: client: 移除 Inode.dir_contacts 字段并优雅地处理 llseek 的错误 whence 值 (pr#31380, Jeff Layton)
  • cephfs: mds: 避免过早调用 clientreplay_done() (pr#31282, "Yan, Zheng")
  • cephfs: mds: 修复 OpenFileTable 的 assert(omap_num_objs <= MAX_OBJECTS) (pr#32757, "Yan, Zheng")
  • cephfs: mds: 修复 Locker::file_update_finish 中的无限循环 (pr#31284, "Yan, Zheng")
  • cephfs: mds: 当删除的文件不存在时,mds 返回 -5(EIO) 错误 (pr#31381, huanwen ren)
  • cephfs: mds: 如果 op 使目录过大,则分割目录,因为一些 op 可能正在进行中 (pr#31379, simon gao)
  • cephfs: tools/cephfs: 使 'cephfs-data-scan scan_links' 重构 snaptable (pr#31281, "Yan, Zheng")
  • common/config: 解析 –log-early 选项 (pr#33130, Sage Weil)
  • common: common/admin_socket: 增加 socket 超时时间 (pr#33323, Brad Hubbard)
  • common: common/config: 当通过 mon 移除值时更新值 (pr#33327, Sage Weil)
  • common: common/util: 使用 ifstream 从 /proc 文件读取 (pr#32902, Kefu Chai, songweibin)
  • core,mgr,tests: mgr: 释放 GIL 并修复 Balancer (pr#31957, Neha Ojha, Kefu Chai, Noah Watkins, David Zafman)
  • core,mgr: mgr/prometheus: 当 obj_store 不是 filestore 或 bluestore 时,为 osd_dev_node 分配一个值 (pr#31557, jiahuizeng)
  • core,tests: qa/tasks/cbt: 安装 python3 依赖项 (pr#34193, Sage Weil)
  • core: mon/OSDMonitor: 修复格式错误 ceph osd stat –format json (pr#33322, Zheng Yin)
  • core: mon: 在 feature 更改期间不要放置 session (pr#33154, Brad Hubbard)
  • core: osd/PeeringState.cc: 不要让 num_objects 变为负数 (pr#33331, Neha Ojha)
  • core: osd/PeeringState.cc: 发现所有 missing 时跳过 peer_purged (pr#33329, Neha Ojha)
  • core: osd/PeeringState.h: 在 Peering/GetInfo 中忽略 MLogRec (pr#33594, Neha Ojha)
  • core: osd/PeeringState: 不要从 acting_recovery_backfill 中排除 up (pr#33324, Nathan Cutler, xie xingguo)
  • core: osd: 允许将 64 个字符的主机名作为 CRUSH 中的“host”添加 (pr#33145, Michal Skalski)
  • core: osd: upmap 清理的诊断日志记录 (pr#32717, David Zafman)
  • core: osd: 在最满的 OSD 只有 1% 的集群上看到 backfill_toofull (pr#32361, David Zafman)
  • core: osd: 在 collection 创建、pg load 时设置 collection pool opts (pr#32125, Sage Weil)
  • core: selinux: 允许 ceph 读取 udev db (pr#32258, Boris Ranto)
  • core: selinux: 允许 ceph-mgr 访问 httpd 目录 (pr#34458, Brad Hubbard)
  • doc/_templates/page.html: 重定向到 etherpad (pr#32249, Neha Ojha)
  • doc/cephfs/client-auth: 描述和示例不一致 (pr#32782, Ilya Dryomov)
  • doc: 移除无效选项 mon_pg_warn_max_per_osd (pr#31875, zhang daolong)
  • doc: 描述 crush_rule 的数据类型错误 (pr#32255, Kefu Chai)
  • mgr,pybind: mgr/prometheus: 报告每个池的 pg 状态 (pr#33158, Aleksei Zakharov)
  • mgr,pybind: mgr/telemetry: 检查 get_metadata 返回值 (pr#33096, Yaarit Hatuka)
  • mount.ceph: 当没有 mds 启动或集群滞后时给出提示消息 (pr#32911, Xiubo Li)
  • pybind: pybind/mgr: 取消输出颜色控制 (pr#31805, Zheng Yin)
  • qa: 移除 iterkeys 以实现 py3 兼容性 (pr#33999, Kyr Shatskyy)
  • rbd: 创建 thick-provision image 进度百分比信息超过 100% (pr#33318, Xiangdong Mu)
  • rbd: librbd: 具有 fast-diff 的 diff iterate 现在正确地包含父级 (pr#32470, Jason Dillaman)
  • rbd: librbd: 不要从 mirror::GetInfoRequest 状态机调用 refresh (pr#32952, Mykola Golub)
  • rbd: librbd: 修复 rbd_open_by_id, rbd_open_by_id_read_only (pr#33315, yangjun)
  • rbd: nautilus: rbd-mirror: 修复 'rbd mirror status' asok 命令输出 (pr#32714, Mykola Golub)
  • rbd: rbd-mirror: clone v2 镜像改进 (pr#31520, Mykola Golub)
  • rbd: rbd-mirror: 改进黑名单状态检测 (pr#33598, Mykola Golub)
  • rbd: rbd-mirror: 使 logrotate 工作 (pr#32598, Mykola Golub)
  • rgw: 复制 obj 时添加 bucket 权限验证 (pr#31377, NancySu05)
  • rgw: 添加 list user admin OP API (pr#31754, Oshyn Song)
  • rgw: sync user info 时添加缺失的 admin 属性 (pr#30804, zhang Shaowen)
  • rgw: 将 num_shards 添加到 radosgw-admin bucket stats (pr#31183, Paul Emmerich)
  • rgw: 更改 bucket versioning status 时添加 mfa 代码验证 (pr#33303, Pritha Srivastava)
  • rgw: 允许取消不存在的 bucket 的 reshard log entries (pr#33302, J. Eric Ivancich)
  • rgw: 自动清理不存在的 bucket 的 reshard queue entries (pr#33300, J. Eric Ivancich)
  • rgw: 将 "rgw admin status" 'num_shards' 输出更改为有符号整数 (issue#37645, pr#33305, Mark Kogan)
  • rgw: crypt: 允许 RGW-AUTO/default 与 SSE-S3 headers 一起使用 (pr#31861, Matt Benjamin)
  • rgw: 找到最旧的 period 并更新 RGWMetadataLogHistory() (pr#33309, Shilpa Jagannath)
  • rgw: 修复 resharding 完成后 bucket instance obj 无法删除的 bug (pr#33306, zhang Shaowen)
  • rgw: 修复 reshard 后 versioned bucket 上的错误 user stats (pr#33304, J. Eric Ivancich)
  • rgw: 修复删除对象时的内存增长问题 (pr#31378, Mark Kogan)
  • rgw: get barbican secret key request 可能会返回错误代码 (pr#33966, Richard Bai(白学余))
  • rgw: 使 beast 中的 max_connections 可配置 (pr#33341, Tiago Pasqualini)
  • rgw: 使 implicit_tenants 向后兼容 (issue#24348, pr#33748, Marcus Watts)
  • rgw: reload operator 发生时可能 core dump (pr#33313, Richard Bai(白学余))
  • rgw: 即使有许多 rgw.none 索引,也要向前移动 marker (pr#33311, Ilsoo Byun)
  • rgw: 如果 bucket 正在 resharding,则阻止 bucket reshard scheduling (pr#31299, J. Eric Ivancich)
  • rgw: resharding 期间更新 multipart entries 的 hash source (pr#33312, dongdong tao)