v16.2.15 Pacific 发布
这是 Pacific 系列中的第十五个回溯移植版本,预计也是最后一个。
重要变更 ¶
ceph config dump --format <json|xml>输出将显示本地化的选项名称,而不是其规范化的版本。例如,将显示 "mgr/prometheus/x/server_port",而不是 "mgr/prometheus/server_port"。这与命令的非漂亮打印格式化版本的输出一致。CephFS: MDS 会驱逐未推进其请求 tid 的客户端,这会导致会话元数据大量堆积,从而导致 MDS 因 RADOS 操作超出大小阈值而变为只读。
mds_session_metadata_threshold配置控制(编码的)会话元数据可以增长的最大大小。RADOS:
get_pool_is_selfmanaged_snaps_modeC++ API 已被弃用,因为它容易产生误报结果。其更安全的替代品是pool_is_in_selfmanaged_snaps_mode。RBD:在 fast-diff 模式下对起始时间进行差异比较时(
fromsnapname == NULL),如果独占锁可用,则保证 diff-iterate 在本地执行(whole_object == true且启用了fast-diff镜像功能且有效)。这为 QEMU 实时磁盘同步和备份用例带来了显著的性能改进。
变更日志 ¶
[CVE-2023-43040] rgw: 修复针对 POST 策略的桶验证 (pr#53758, Joshua Baergen)
admin/doc-requirements: 将 Sphinx 提升至 5.0.2 (pr#55258, Nizamudeen A)
blk/kernel: 为块设备添加 O_EXCL (pr#53567, Adam Kupczyk)
Bluestore: 修复 bluestore collection_list 延迟性能计数器 (pr#52949, Wangwenjuan)
bluestore: 修复卷选择器问题 (pr#53587, Adam Kupczyk)
ceph-volume,python-common: 数据分配比例 (pr#53581, Jonas Pfefferle)
ceph-volume: 为 raw prepare 添加 --osd-id 选项 (pr#52928, Guillaume Abrioux)
ceph-volume: 修复 _check_generic_reject_reasons 中的错误 (pr#54707, Kim Minjong, Guillaume Abrioux, Michael English)
ceph-volume: 修复 lvm 设备的 raw list (pr#52981, Guillaume Abrioux)
ceph-volume: 修复 devices.lvm.zap 中的 zap_partitions() (pr#55658, Guillaume Abrioux)
ceph-volume: 修复 devices.lvm.zap 中的 zap_partitions() (pr#55481, Guillaume Abrioux)
ceph-volume: 修复 is_device 和 is_partition 中回退到 stat 的问题 (pr#54709, Guillaume Abrioux, Teoman ONAY)
ceph: 允许在放置 xlock 状态时为 LOCK_PREXLOCK (pr#53662, Xiubo Li)
cephadm: 添加 tcmu-runner 到 logrotate 配置 (pr#53975, Adam King)
cephadm: 添加对 public_network cfg 部分的支持 (pr#52411, Redouane Kachach)
cephadm: 允许在采用、重新配置、重新部署期间在防火墙中打开端口 (pr#52083, Adam King)
cephadm: 使 custom_configs 适用于 tcmu-runner 容器 (pr#53469, Adam King)
cephadm: 通过脚本运行 tcmu-runner 以在失败时重新启动 (pr#53977, Adam King, Raimund Sacherer)
cephfs-journal-tool: 消除 all 关键字的使用歧义(在工具帮助中)(pr#53645, Manish M Yathnalli)
cephfs-mirror: 不要同时运行 C_RestartMirroring 上下文 (issue#62072, pr#53640, Venky Shankar)
cephfs-top: 在 --dump 输出中包含缺失的字段 (pr#53453, Jos Collin)
cephfs: 在必要时升级 cephfs-shell 的路径 (pr#54144, Rishabh Dave)
cephfs_mirror: 正确设置顶层目录权限 (pr#53270, Milind Changire)
client: 始终在会话打开时刷新 mds feature bits (issue#63188, pr#54245, Venky Shankar)
client: 修复 sync fs 以强制刷新所有会话的 mdlog (pr#53981, Xiubo Li)
client: 如果不存在 cap,立即发布 cap release (pr#52852, Xiubo Li)
client: 如果有 ditry caps/snapcaps,则排队延迟 cap flushing (pr#54472, Xiubo Li)
cmake/modules/BuildRocksDB.cmake: 继承父级的 CMAKE_CXX_FLAGS (pr#55500, Kefu Chai)
common/weighted_shuffle: 不要将全零权重馈送给 std::discrete_distribution (pr#55155, Radosław Zarzyński)
common: intrusive_lru 析构函数添加 (pr#54558, Ali Maredia)
doc/cephfs: 关于开始时间时区的说明 (pr#53576, Milind Changire)
doc/cephfs: 在文档中完整地写出 cephfs 命令 (pr#53403, Rishabh Dave)
doc/rados/configuration/bluestore-config-ref: 修复小写拼写错误 (pr#54696, Adam Kupczyk)
doc/rados: 更新 autoscaler 配置 (pr#55440, Zac Dover)
doc: 澄清
rados rm命令的使用 (pr#51260, J. Eric Ivancich)doc: 讨论标准的 CephFS 多租户安全模型 (pr#53560, Greg Farnum)
修复 BlueStore resharding 示例 (pr#54474, Adam Kupczyk)
isa-l: 合并 aarch64 文本重定位修复 (pr#51314, luo rixin)
libcephsqlite: 在未读缓冲区部分填充 0s (pr#53103, Patrick Donnelly)
librados: 使查询池以获取 selfmanaged snaps 可靠 (pr#55024, Ilya Dryomov)
librbd: 每个镜像请求附加一个 journal 事件 (pr#54820, Joshua Baergen)
librbd: 在与 hole 进行 diff 时不要报告 HOLE_UPDATED (pr#54949, Ilya Dryomov)
librbd: 修复 ObjectListSnapsRequest 中的回归 (pr#54860, Ilya Dryomov)
librbd: 提高 rbd_diff_iterate2() 在 fast-diff 模式下的性能 (pr#55256, Ilya Dryomov)
librbd: 当等待锁时客户端被 blocklist 时,启动 ExclusiveLock 状态机 (pr#53295, Ramana Raja)
librbd: 使 CreatePrimaryRequest 删除任何未链接的镜像快照 (pr#53274, Ilya Dryomov)
log: 修复转储线程 ID 时的格式 (pr#53465, Radoslaw Zarzynski)
log: 使 log_max_recent 再次生效 (pr#48311, Joshua Baergen)
make-dist: wget 不使用 --continue 选项 (pr#55090, Casey Bodley)
make-dist: 从 kernel.io 下载 liburing 而不是 github (pr#53197, Laura Flores)
MClientRequest: 正确处理 ceph_mds_request_head_legacy 中的 ext_num_retry, ext_num_fwd, owner_uid, owner_gid (pr#54410, Alexander Mikhalitsyn)
mds,qa: 当 debug_mds >= 5 时,一些 balancer 调试消息 (<=5) 不会打印 (pr#53552, Patrick Donnelly)
mds/Server: 在请求中标记 cap acquisition throttle event (pr#53169, Leonid Usov)
mds: 在 open 中获取 inode snaplock (pr#53185, Patrick Donnelly)
mds: 添加 getattr/lookup 批处理事件 (pr#53556, Patrick Donnelly)
mds: 修剪 segments for st... 时调整 MDLog 的 pre_segments_size (issue#59833, pr#54033, Venky Shankar)
mds: blocklist 具有“ bloated”会话元数据的客户端 (issue#61947, issue#62873, pr#53634, Venky Shankar)
mds: 当锁集更改时丢弃锁并重试 (pr#53243, Patrick Donnelly)
mds: 确保在请求丢弃时排队下一个重放 (pr#54314, Patrick Donnelly)
mds: 修复 unlinking 和 linkmerge 之间的死锁 (pr#53495, Xiubo Li)
mds: 修复发出冗余的 reintegrate/migrate_stray 请求 (pr#54517, Xiubo Li)
mds: 记录因 asok 命令退出时的消息 (pr#53550, Patrick Donnelly)
mds: 仅在处理客户端会话消息时替换引导会话 (pr#53362, Mer Xuanyi)
mds: 仅在检查任何 OSD 是否 laggy 后才报告因 laggy OSD 导致的 laggy 客户端 (pr#54120, Dhairya Parmar)
mds: 为 LOCK_EXCL_XSYN 设置 loner 为 true (pr#54912, Xiubo Li)
mds: 在 MDSAuthCaps 中直接使用变量 g_ceph_context (pr#52821, Rishabh Dave)
mgr/BaseMgrModule: 优化 Finish Function 中的 CPython 调用 (pr#55109, Nitzan Mordechai)
mgr/cephadm: 为 orch apply rgw 添加 "networks" 参数 (pr#53974, Teoman ONAY)
mgr/cephadm: 当 ipv6 地址被方括号包围时 ceph orch add 失败 (pr#53978, Teoman ONAY)
mgr/dashboard: 为 dashboard api 'get rbd' 端点添加 'omit_usage' 查询参数 (pr#54192, Cory Snyder)
mgr/dashboard: 允许使用配置选项 tls 1.2 (pr#53781, Nizamudeen A)
mgr/dashboard: 在 grafana 面板中将 null 值视为零 (pr#54542, Aashish Sharma)
mgr/dashboard: 修复 CephPGImbalance 警报 (pr#49478, Aashish Sharma)
mgr/dashboard: 修复 CephPoolGrowthWarning 警报 (pr#49477, Aashish Sharma)
mgr/dashboard: 修复 constraints.txt (pr#54652, Ernesto Puerta)
mgr/dashboard: 修复 hostname 无法解析时 rgw 页面问题 (pr#53215, Nizamudeen A)
mgr/dashboard: 为未经授权的访问设置 CORS 标头 (pr#53202, Nizamudeen A)
mgr/prometheus: 避免 rbd_stats_pools 的重复和已删除条目 (pr#48524, Avan Thakkar)
mgr/prometheus: 将 pg_repaired_objects 名称更改为 pool_repaired_objects (pr#48439, Pere Diaz Bou)
mgr/prometheus: 修复 pool_objects_repaired 和 daemon_health_metrics 格式 (pr#51692, banuchka)
mgr/rbd_support: 修复 CreateSnapshotRequests 锁上的递归锁定 (pr#54293, Ramana Raja)
mgr/snap-schedule: 使用正确的方法检查返回的结果... (pr#53355, Mer Xuanyi)
mgr/snap_schedule: 允许 retention spec 'n' 由用户定义 (pr#52750, Milind Changire, Jakob Haufe)
mgr/volumes: 修复 volume info 中的 pending_subvolume_deletions (pr#53574, Kotresh HR)
mgr: 为每个模块添加一个 finisher 线程 (pr#51045, Kotresh HR, Patrick Donnelly)
mgr: 为 DaemonServer 添加 throttle 策略 (pr#54013, ericqzhao)
mgr: 不在 holding gil 时转储全局配置 (pr#50194, Mykola Golub)
mgr: 修复 DaemonServer::handle_report() 中的竞争条件 (pr#52993, Radoslaw Zarzynski)
mgr: 在 ms_handle_accept 中注册 OSD (pr#53189, Patrick Donnelly)
mgr: 从 mgr daemons 中删除 out&down osd (pr#54553, shimin)
mon/ConfigMonitor: 在 "config dump --format json" 输出中显示本地化名称 (pr#53984, Sridhar Seshasayee)
mon/MonClient: 恢复原始的 client_mount_timeout 处理 (pr#52533, Ilya Dryomov)
mon/Monitor.cc: 如果 !osdmon()->is_writeable() && mon/OSDMonitor: 在 mon.go_recovery_stretch_mode() 之前添加额外检查 (pr#51414, Kamoltat)
mon/Monitor: 在关机期间不接受新的身份验证和 crea... (pr#55113, Nitzan Mordechai)
mon: 为 ceph health mute 添加异常处理 (pr#55118, Daniel Radjenovic)
mon: 为缓存层选项添加代理 (pr#50552, tan changzhi)
mon: 修复 health store 大小无限增长的问题 (pr#55472, Wei Wang)
mon: 修复 PGMap::apply_incremental 中的迭代器处理不当 (pr#52555, Oliver Schmidt)
mon: 修复一种情况下 mds 元数据丢失的问题 (pr#54318, shimin)
msg/async: 在 RDMAStack::create_worker() 中初始化 worker 并删除 Stack::num_workers (pr#55443, Kefu Chai)
msg/AsyncMessenger: 在 'wait()' 中唤醒时重新评估停止条件 (pr#53716, Leonid Usov)
fstab 中的 nofail 选项不受支持 (pr#52987, Leonid Usov)
os/bluestore: 附加新设备时不需要 bluestore_db_block_size (pr#52948, Igor Fedotov)
os/bluestore: 在分配器中去除结果 lba 对齐 (pr#54434, Igor Fedotov)
osd,bluestore: 优雅地处理 meta collection load 期间的失败 (pr#53135, Igor Fedotov)
osd/OpRequest: 在 osd 日志文件中为延迟操作添加详细描述 (pr#53693, Yite Gu)
osd/OSD: 引入 reset_purged_snaps_last (pr#53970, Matan Breizman)
osd/OSDMap: 在 stretch 模式后检查不等权重 & != 2 buckets (pr#52459, Kamoltat)
osd/scrub: 修复 scrub starts 消息在集群日志中刷屏的问题 (pr#53430, Prashant D)
osd: stat+write ops 不需要 RWEXCL 锁 (pr#54593, Alice Zhao)
osd: 确保异步恢复不会将 pg 降至 min_size 以下 (pr#54548, Samuel Just)
osd: 修复 shard-threads 无法唤醒的错误 (pr#51262, Jianwei Zhang)
osd: 修复 build_incremental_map_msg() 中的 use-after-move (pr#54268, Ronen Friedman)
osd: 记录稀疏读取的 extents 数量 (pr#54604, Xiubo Li)
pacifc: Revert "mgr/dashboard: unselect rows in datatables" (pr#55415, Nizamudeen A)
pybind/mgr/autoscaler: 如果 autoscaler 未开启,则不显示 NEW PG_NUM 值 (pr#53464, Prashant D)
pybind/mgr/mgr_util: 修复 to_pretty_timedelta() (pr#51243, Sage Weil)
pybind/mgr/volumes: 记录互斥锁以帮助调试死锁 (pr#53916, Kotresh HR)
pybind/mgr: ceph osd status crash with ZeroDivisionError (pr#46696, Nitzan Mordechai, Kefu Chai)
pybind/rados: 如果 watch 已关闭,则不要在 dealloc 中关闭 (pr#51259, Tim Serong)
pybind/rados: 修复 PEP484 样式类型注解中遗漏的更改 (pr#54361, Igor Fedotov)
pybind/rbd: 在 aio_mirror_image_get_info() 出现错误时不要产生信息 (pr#54053, Ilya Dryomov)
python-common/drive_group: 即使提供了 'spec',也处理 'spec' 之外的字段 (pr#52413, Adam King)
python-common/drive_selection: 降低 limit policy 消息的日志级别 (pr#52412, Adam King)
qa/distros: 回溯移植从 rhel 8.4 -> 8.6 的更新 (pr#54901, Casey Bodley, David Galloway)
qa/suites/krbd: 压力测试以从 watch 错误中恢复 (pr#53784, Ilya Dryomov)
qa/suites/orch: 将测试环境中预期的警告列入白名单 (pr#55523, Laura Flores)
qa/suites/rbd: 添加测试以检查 rbd_support 模块恢复 (pr#54294, Ramana Raja)
qa/suites/upgrade/pacific-p2p: 运行 pacific tip 的 librbd python API 测试 (pr#55418, Yuri Weinstein)
qa/suites/upgrade/pacific-p2p: 跳过 TestClsRbd.mirror_snapshot 测试 (pr#53204, Ilya Dryomov)
qa/suites: 添加更多白名单 + 修复拼写错误 (pr#55717, Kamoltat)
qa/tasks/cephadm: 启用 mon_cluster_log_to_file (pr#55429, Dan van der Ster)
qa/upgrade: 禁用失败的 ceph_test_cls_cmpomap 测试用例 (pr#55519, Casey Bodley)
qa/upgrade: 使用 ragweed 分支作为起始 ceph 版本 (pr#55382, Casey Bodley)
qa/workunits/rbd/cli_generic.sh: 在 blocklist 模块的客户端后,检查 rbd_support 模块命令失败时缩小竞争窗口 (pr#54771, Ramana Raja)
qa: 为替换的 MDS 分配文件系统亲和性 (issue#61764, pr#54039, Venky Shankar)
qa: 忽略 damage tests 中预期的集群警告 (pr#53486, Patrick Donnelly)
qa: 延长 thrashed MDS 的关机超时时间 (pr#53555, Patrick Donnelly)
qa: 将 arg 作为列表传递以修复测试用例失败 (pr#52763, Dhairya Parmar)
qa: 删除重复导入 (pr#53447, Patrick Donnelly)
qa: 使用较新的 tarball 运行 kernel_untar_build (pr#54713, Milind Changire)
qa: 等待文件具有正确大小 (pr#52744, Patrick Donnelly)
rados: 当 "WITH_MGR" 关闭时,最小化构建 (pr#51250, J. Eric Ivancich)
rados: 将 osd_max_write_op_reply_len 默认值增加到 64 字节 (pr#53470, Matt Benjamin)
RadosGW API: HEAD /{bucket}/?usage 响应中不正确的桶配额 (pr#53439, shreyanshjain7174)
radosgw-admin: 允许 'bi purge' 在 entrypoint 不存在时删除索引 (pr#54010, Casey Bodley)
radosgw-admin: 没有 --storage-class 时不要因 --placement-id 而崩溃 (pr#53474, Casey Bodley)
radosgw-admin: 修复未指定 source/dest zone 时 pipe modify 上的段错误 (pr#51256, caisan)
rbd-nbd: 修复 disable request 导致的卡顿 (pr#54256, Prasanna Kumar Kalever)
rgw - 修复 NoSuchTagSet 错误 (pr#50533, Daniel Gryniewicz)
rgw/auth: 忽略 HTTP OPTIONS 调用的签名 (pr#55550, Tobias Urdin)
rgw/beast: 添加 max_header_size 选项,默认值为 16k,高于 4k (pr#52113, Casey Bodley)
rgw/keystone: EC2Engine 对 ERR_SIGNATURE_NO_MATCH 使用 reject() (pr#53764, Casey Bodley)
rgw/notification: 从 bucket notifications 中删除非 x-amz-meta-* 属性 (pr#53376, Juan Zhu)
rgw/putobj: RadosWriter 使用 multipart parts 的 part head object (pr#55586, Casey Bodley)
rgw/s3: ListObjectsV2 返回正确的对象所有者 (pr#54160, Casey Bodley)
rgw/sts: AssumeRole 不再写入用户元数据 (pr#52051, Casey Bodley)
rgw/sts: 当 IAM 策略时返回错误的代码 (pr#44462, Pritha Srivastava)
rgw/sts: 使用 .well-known/openid-configuration URL 获取证书的代码 (pr#44464, Pritha Srivastava)
rgw/sts: createbucket op 应考虑 session_policies (pr#44476, Pritha Srivastava)
rgw/sts: 修复 read_obj_policy 权限评估 (pr#44471, Pritha Srivastava)
rgw/sts: 修复使用 LDAP 验证的 getsessiontoken (pr#44463, Pritha Srivastava)
rgw/swift: 检查 slo manifest 文件中第一个斜杠的位置 (pr#51600, Marcio Roberto Starke)
rgw/sync-policy: 更正 "sync status" & "sync group" 命令 (pr#53410, Soumya Koduri)
rgw: 'bucket check' 在 multipart meta 的 pending_map 不为空时删除其索引 (pr#54016, Huber-ming)
rgw: 添加 radosgw-admin bucket check olh/unlinked 命令 (pr#53808, Cory Snyder)
rgw: 启用 OPA authz 时避免段错误 (pr#46106, Benoît Knecht)
rgw: beast frontend 检查 local_endpoint() 错误 (pr#54167, Casey Bodley)
rgw: 在关机期间排空 async_processor 请求队列 (pr#53472, Soumya Koduri)
rgw: 修复 convert_plain_entry_to_versioned 后 2 个 null versionID (pr#53400, rui ma, zhuo li)
rgw: 修复 Browser POST content-length-range 最小值 (pr#52936, Robin H. Johnson)
rgw: 修复计算每个 bi shard 的条目时 FP 错误 (pr#53593, J. Eric Ivancich)
rgw: 修复 unregister_watch() 错误后 rgw 缓存失效 (pr#54014, lichaochao)
rgw: 修复当 extra headers 以 'x-amz' 开头时 SignatureDoesNotMatch (pr#53772, rui ma)
rgw: 修复截断的 ListBuckets 响应 (pr#49526, Joshua Baergen)
rgw: 修复 radosgw 启动时 unwatch 崩溃 (pr#53759, lichaochao)
rgw: 修复当 src object 不存在且 src bucket 不存在时 UploadPartCopy 错误代码 (pr#53356, yuliyang)
rgw: 使用 v4 auth 处理 http options CORS (pr#53416, Tobias Urdin)
rgw: 在 chunkupload 场景中提高 buffer list 利用率 (pr#53775, liubingrun)
rgw: 未使用 multisite data log 标志 (pr#52055, J. Eric Ivancich)
rgw: 在缺少 http_x_amz_date 的情况下选择 http_date (pr#53443, Seena Fallah, Mohamed Awnallah)
rgw: 防止索引完成线程中出现虚假/丢失的通知 (pr#49093, Casey Bodley, Yuval Lifshitz)
rgw: 使用 INVALIDATE_OBJ 重试元数据缓存通知 (pr#52797, Casey Bodley)
rgw: s3 object lock 避免保留日期溢出 (pr#52605, Casey Bodley)
rgw: s3website 不会为 web_dir() 检查进行预取 (pr#53769, Casey Bodley)
rgw: 在 admin api user create 上从 master zone 设置 keys (pr#51602, Ali Maredia)
rgw: 解决 Multipart upload 结果中未填充 etag 的问题 (pr#51445, Ali Masarwa)
rgw: swift: 检查 POST forms 中的有效 key (pr#52729, Abhishek Lekshmanan)
rgw: 更新 "CEPH_RGW_DIR_SUGGEST_LOG_OP" 以删除条目 (pr#50540, Soumya Koduri)
rgw: 在 BucketTrimWatche 中使用 unique_ptr 进行 flat_map emplace (pr#52996, Vedansh Bhartia)
rgwlc: 防止一个桶的 lc 超过时间预算 (pr#53562, Matt Benjamin)
test/lazy-omap-stats: 各种增强功能 (pr#50518, Brad Hubbard)
test/librbd: 避免 DiscardWithPruneWriteOverlap 中与配置相关的崩溃 (pr#54859, Ilya Dryomov)
test/store_test: 调整物理 extents 以注入错误 (pr#54782, Igor Fedotov)
tools/ceph_objectstore_tool: action_on_all_objects_in_pg 跳过 pgmeta (pr#54691, Matan Breizman)
tools/ceph_objectstore_tool: 支持 get/set/superblock (pr#55013, Matan Breizman)
tools/osdmaptool: 修复存在 down osd 时可能发生的段错误 (pr#52203, Mykola Golub)
Tools/rados: 改进对象名称解析的错误消息 (pr#55111, Nitzan Mordechai)
vstart_runner: 传递 --debug 时保持日志级别 (pr#52977, Rishabh Dave)
vstart_runner: 当 os.stat() 失败时使用 FileNotFoundError (pr#52978, Rishabh Dave)
win32_deps_build.sh: 更改 Boost URL (pr#55086, Lucian Petrut)