v14.2.22 Nautilus 发布
这是 Nautilus 系列的第 22 个,也是可能最后一个补丁版本。我们最终建议所有用户升级到较新的 Ceph 版本。
重要变更 ¶
此版本默认将
bluefs_buffered_io设置为 true,以提高元数据密集型工作负载的性能。启用此选项偶尔可能会在某些工作负载下导致过度的内核交换。目前,性能最佳的组合是启用 bluefs_buffered_io 并禁用系统级别的交换空间。bluestore_cache_trim_max_skip_pinned的默认值已增加到 1000,以控制由于 onodes 导致的内存增长。BlueStore 中的其他一些错误修复,包括修复了 Avl/Hybrid 分配器中的一个意外的 ENOSPC 错误。
监视器中的修剪逻辑已变得动态,引入了
paxos_service_trim_max_multiplier,这是一个因子,用于将paxos_service_trim_max相乘,以便在需要时加快修剪速度。将其设置为 0 会禁用修剪上限检查,并使监视器以最大速率进行修剪。osd ok-to-stop命令提供了一个--max <n>选项,允许一起停止最多 N 个 OSD,而不会使 PG 变得不可用。OSD:引入了
osd_fast_shutdown_notify_mon选项,允许 OSD 在启用osd_fast_shutdown的情况下通知监视器正在关闭。这有助于大型群集上的监视器日志,这些日志可能会收到许多“osd.X 由 osd.Y 立即报告失败”消息,并混淆工具。修复了 msgr v2 下 32 位和 64 位客户端/服务器互操作性问题。特别是,现在可以在同一群集中混合 armv7l (armhf) 和 x86_64 或 aarch64 服务器。
变更日志 ¶
PendingReleaseNotes:关于 14.2.18 mgr 修复的说明 (pr#40121, Josh Durgin)
在没有其他地址可用时,绑定到环回地址 (pr#41137, Kefu Chai, Matthew Oliver)
使用 distutils 构建 python 扩展 (pr#41167, Kefu Chai)
ceph-monstore-tool:使用足够大的 paxos/{first,last}_committed (issue#38219, pr#41874, Kefu Chai)
ceph-volume:禁用 blkid 调用中的缓存 (pr#41114, Rafał Wądołowski)
ceph-volume:修复批处理报告并尊重 ceph.conf 配置值 (pr#41716, Andrew Schoen)
ceph-volume:修复批处理报告并尊重 ceph.conf 配置值 (pr#41713, Andrew Schoen)
ceph-volume:实现 bluefs 卷迁移 (pr#41676, Kefu Chai, Igor Fedotov)
ceph.spec.in:在 IBM Power 和 Z 上启用 tcmalloc (pr#40283, Nathan Cutler, Yaakov Selkowitz)
cephfs:客户端:添加按 inode 号查找快照 inode 的能力 (pr#40769, Jeff Layton, Xiubo Li)
cephfs:客户端:仅为常规文件检查池权限 (pr#40730, Xiubo Li)
cephfs:客户端:唤醒前置 pos 等待器 (pr#40865, Xiubo Li)
客户端:修复 root 用户可执行访问检查 (pr#41297, Kotresh HR)
客户端:在缓冲区刷新后触发 finish_cap_snap() (pr#40722, Xiubo Li)
cls/rgw:在非 ASCII 纯命名空间中查找纯条目 (pr#41776, Mykola Golub)
cmake,zstd,debian:允许使用系统中的 libzstd (pr#40516, Kefu Chai, Bryan Stillwell, Dan van der Ster)
cmake:如果它们是内部库,则构建静态库 (pr#39903, Kefu Chai)
cmake:检测 gettid() 的存在 (pr#40333, Igor Fedotov)
cmake:为某些测试可执行文件设置空 RPATH (pr#40619, Nathan Cutler, Kefu Chai)
common/buffer:在调用 posix_memalign() 之前调整对齐方式 (pr#41246, Ilya Dryomov)
common/ipaddr:跳过名为“lo”的环回接口并对其进行测试 (pr#40423, Dan van der Ster)
common/mempool:仅在分片非常糟糕时才使测试失败 (pr#40567, singuliere)
common/options/global.yaml.in:增加 bluestore_cache_trim_max_skip_pinned 的默认值 (pr#40920, Neha Ojha)
common/options:默认情况下 bluefs_buffered_io=true (pr#40393, Dan van der Ster)
common:修复禁用和重新启用 clog_to_monitors 时的断言 (pr#39912, Gerald Yang)
common:删除 log_early 配置选项 (pr#40549, Changcheng Liu)
crush/CrushLocation:不在构造函数中打印日志消息 (pr#40750, Alex Wu)
crush/CrushWrapper:在 update_item() 上更新阴影树 (pr#39920, Sage Weil)
debian/ceph-common.postinst:不要 chown cephadm 日志目录 (pr#40698, Sage Weil)
debian/control:添加缺少的逗号,在 focal 上使用 python3 包进行“make check” (pr#40485, Kefu Chai, Alfredo Deza)
install-deps.sh:删除不同版本的现有 ceph-libboost (pr#40287, Kefu Chai)
libcephfs:忽略恢复打开文件的限制 (pr#41593, Xiubo Li)
librbd:允许中断的 trash move 请求重新启动 (pr#40675, Jason Dillaman)
librbd:在清除时不要在第一个不可删除的映像处停止 (pr#41662, Ilya Dryomov)
librbd:修复 TestMigration.StressLive 中的偶发故障 (pr#41788, Jason Dillaman)
librbd:在重叠的飞行中写入时禁用对象映射 (pr#41787, Jason Dillaman)
make-dist:如果脚本路径包含冒号,则拒绝运行 (pr#41088, Nathan Cutler)
mds:不要在 standby_replay 中从 lru 列表中修剪 inode (pr#41144, Xiubo Li)
mds:修复获取大型 dirfrag 的竞争条件 (pr#40720, Erqi Chen)
mds:仅在 scrub 运行时将 scrub 状态发送到 ceph-mgr (issue#45349, pr#36183, Kefu Chai, Venky Shankar)
mds:定期修剪 standby-replay 的缓存 (pr#40744, Patrick Donnelly)
mgr/ActivePyModules.cc:在尝试获取锁之前始终释放 GIL (pr#40047, Kefu Chai)
mgr/Dashboard:删除 hosts-overview Grafana 信息面板中的错误元素 (pr#41650, Malcolm Holmes)
mgr/PyModule:在 Py_GetPath() 之前放置 mgr_module_path (pr#40753, Kefu Chai)
mgr/dashboard:修复警报通知消息未定义的问题 (pr#40590, Nizamudeen A)
mgr/dashboard:修复 CephFS 的根路径缺失问题 (pr#39869, Yongseok Oh)
mgr/dashboard:监控警报徽章包含已抑制的警报 (pr#39511, Aashish Sharma)
mgr/dashboard:删除 Manager Modules/dashboard,influx 中的用户名和密码字段 (pr#40490, Aashish Sharma)
mgr/dashboard:撤销只读用户对 Manager 模块的访问权限 (pr#40650, Nizamudeen A)
mgr/dashboard:调试 nodeenv 挂起 (pr#40818, Ernesto Puerta)
mgr/dashboard:将单元测试与构建工件分离 (pr#40547, Alfonso Martínez)
mgr/dashboard:在将字符串传递给 exec_cmd() 之前对非 ASCII 字符串进行编码 (pr#40522, Kefu Chai)
mgr/dashboard:文件系统池大小应使用存储的统计信息 (pr#41021, Avan Thakkar)
mgr/dashboard:修复 API 文档链接 (pr#41521, Avan Thakkar)
mgr/dashboard:修复 OSD 主机详细信息/概览 grafana 图表 (issue#49769, pr#41531, Alfonso Martínez, Michael Wodniok)
mgr/dashboard:修复 base-href:恢复到以前的方法 (pr#41253, Avan Thakkar)
mgr/dashboard:修复 bucket 对象和大小计算 (pr#41648, Avan Thakkar)
mgr/dashboard:修复 dashboard 实例 ssl 证书功能 (pr#40003, Avan Thakkar)
mgr/dashboard:rgw 多站点同步性能的 grafana 面板 (pr#41386, Alfonso Martínez)
mgr/dashboard:python 2:修复非 ASCII 密码时出现的错误 (pr#40610, Alfonso Martínez)
mgr/dashboard:报告 mgr fsid (pr#39853, Ernesto Puerta)
mgr/dashboard:显示部分删除的 RBD (pr#41738, Tatjana Dehler)
mgr/dashboard:通过 promtool 测试 prometheus 规则 (pr#39984, Aashish Sharma, Kefu Chai)
mgr/progress:确保进度保持在 [0,1] 之间 (pr#41310, Dan van der Ster)
mgr/telemetry:检查“ident”通道是否处于活动状态 (pr#39923, Yaarit Hatuka)
mgr/telemetry:即使没有 ident 也传递 leaderboard 标志 (pr#41839, Sage Weil)
mgr/volumes:在克隆中保留 suid guid 位 (pr#40270, Kotresh HR)
mgr:添加 --max
到“osd ok-to-stop”命令 (pr#40676, Sage Weil, Xuehan Xu) mgr:添加使用类型为“mon”的 mon 元数据 (pr#40359, Kefu Chai)
mon/ConfigMap:修复流失的选项 (pr#40299, Sage Weil)
mon/MonClient:在 _reopen_session() 中重置 authenticate_err (pr#41016, Ilya Dryomov)
mon/MonClient:容忍略微过时的旋转密钥 (pr#41448, Ilya Dryomov)
mon/OSDMonitor:在一段时间后丢弃过时的 failure_info (pr#41213, Kefu Chai)
mon/OSDMonitor:即使可以_mark_down(),也丢弃过时的 failure_info (pr#41519, Kefu Chai)
mon:修改修剪逻辑以动态更改 paxos_service_trim_max (pr#41099, Aishwarya Mathuria)
mon:确保在打印之前进度在 [0,1] 之间 (pr#41098, Dan van der Ster)
mon:在 mkfs monmap 之前加载存储的映射 (pr#41762, Dan van der Ster)
monmaptool:不要在无效地址上调用 set_port (pr#40700, Brad Hubbard, Kefu Chai)
os/FileStore:不要将 split/merge 错误传播到“create”/“remove” (pr#40987, Mykola Golub)
os/FileStore:修复正确处理 readdir 错误 (pr#41238, Misono Tomohiro)
os/bluestore/BlueFS:不要 _flush_range 已删除的文件 (pr#40752, weixinwei)
os/bluestore/BlueFS:使用 iterator_impl::copy 代替 bufferlist::c_str() 以避免 bufferlist 重建 (pr#39883, weixinwei)
os/bluestore: 默认情况下,在 _open_super_meta 中提供更详细的输出信息 (pr#41060, Igor Fedotov)
os/bluestore: 不要将固定条目计为已修剪的条目 (pr#41173, Igor Fedotov)
os/bluestore: 修复 Avl/Hybrid 分配器中意外的 ENOSPC 错误 (pr#41673, Igor Fedotov)
os/bluestore: 为 bluestore 的修复程序引入多线程同步 (pr#41749, Igor Fedotov)
os/bluestore: 容忍分配器 init_[add/rm]_free() 的零长度 (pr#41750, Igor Fedotov)
osd/PG.cc: 处理 pgmeta 对象的移除 (pr#41682, Neha Ojha)
osd/PeeringState: 修复 acting_set_writeable min_size 检查 (pr#41611, Dan van der Ster)
osd: 添加 osd_fast_shutdown_notify_mon 选项 (默认值为 false) (issue#46978, pr#40014, Mauricio Faria de Oliveira)
osd: 通过原始空间利用率计算 OSD 的空间使用率 (pr#41111, Igor Fedotov)
osd: 不要多次转储一个 osd (pr#40747, Xue Yantao)
pybind/ceph_daemon: 如果 prettytable 不可用,则不要失败 (pr#40335, Kefu Chai)
pybind/cephfs: DT_REG 和 DT_LNK 值错误 (pr#40704, Varsha Rao)
pybind/mgr/balancer/module.py: 在平衡之前将权重集分配给所有 bucket (pr#40128, Neha Ojha)
pybind/mgr/volumes: 异步作业上的死锁挂起完成线程 (pr#41394, Patrick Donnelly)
pybind/rados: 应该将 "name" 传递给 cstr() (pr#41318, Kefu Chai)
pybind: volume_client 处理以 utf-8 编码的目录名称的清除 (pr#36679, Jose Castro Leon)
qa/tasks/mgr/test_progress: 修复 wait_until_equal (pr#39397, Kamoltat, Ricardo Dias)
qa/tasks/qemu: 精确的仓库已被归档 (pr#41641, Ilya Dryomov)
qa/tasks/vstart_runner.py: 启动所需的最大数量的 mgr (pr#40751, Alfonso Martínez)
qa/tests: 添加了 client-upgrade-nautilus-pacific 测试 (pr#39818, Yuri Weinstein)
qa/tests: 将 nautilus 初始版本提升到 14.2.20 (pr#41227, Yuri Weinstein)
qa/upgrade: 禁用旧客户端作为 lockowner 的 update_features test_notify 测试 (pr#41513, Deepika Upadhyay)
qa: 添加睡眠以使阻止生效 (pr#40714, Patrick Donnelly)
qa: 增加 ffsb 工作负载的 osd heartbeat grace (pr#40713, Nathan Cutler)
qa: 在 tearDown 期间删除所有 fs (pr#40709, Patrick Donnelly)
qa: krbd_blkroset.t: 为单独的 hw 和用户只读标志进行更新 (pr#40212, Ilya Dryomov)
qa: vstart_runner: TypeError: lstat: path should be string, bytes or os.PathLike, not NoneType (pr#41485, Patrick Donnelly)
rbd-mirror: 镜像重放器停止可能与实例重放器关闭竞争 (pr#41792, Mykola Golub, Jason Dillaman)
rgw : 捕获非 int 异常 (pr#40356, caolei)
rgw/http: 为 http 客户端添加超时 (pr#40667, Yuval Lifshitz)
rgw: 添加了从 keystone 获取的 S3 凭据的缓存 (pr#41158, James Weaver)
rgw: 使用正确的 bucket 信息通过 swift 执行 put 或 get 大对象 (pr#40106, zhiming zhang, yupeng chen)
rgw: 允许 rgw-orphan-list 处理包含二进制数据的中间文件 (pr#39767, J. Eric Ivancich)
rgw: beast 前端使用 512k mprotected coroutine 栈 (pr#39947, Yaakov Selkowitz, Mauricio Faria de Oliveira, Daniel Gryniewicz, Casey Bodley)
rgw: 在多对象删除中检查对象锁 (issue#47586, pr#41164, Mark Houghton, Matt Benjamin)
rgw: 在 reshard 锁争用期间,调整日志记录 (pr#41156, J. Eric Ivancich)
rgw: 将 rgw_gc_max_objs 限制为 RGW_SHARDS_PRIME_1 (pr#40670, Rafał Wądołowski)
rgw: radoslist 不完整的 multipart parts 标记 (pr#40827, J. Eric Ivancich)
rgw: 在评估 bucket policy 时,尽早返回 ERR_NO_SUCH_BUCKET (issue#38420, pr#40668, Abhishek Lekshmanan)
rgw: 在没有密钥的情况下尝试复制加密对象时返回错误 (pr#40671, Ilsoo Byun)
rgw: 用于定位缺少 rados 组件的 rgw 对象工具 (pr#39771, Michael Kidd, J. Eric Ivancich)
run-make-check.sh: 让 ctest 生成 XML 输出 (pr#40407, Kefu Chai)
src/global/signal_handler.h: 修复 alpine 的预处理器逻辑 (pr#39942, Duncan Bellamy)
test/TestOSDScrub: 修复 mktime() 错误 (pr#40621, luo rixin)
test/pybind: s/nosetests/python3/ (pr#40536, Kefu Chai)
test/rgw: test_datalog_autotrim 过滤掉新条目 (pr#40674, Casey Bodley)
test: 使用 std::atomic
代替 volatile 用于 cb_done 变量 (pr#40701, Jeff Layton) tests: ceph_test_rados_api_watch_notify: 允许重新连接 (pr#40697, Brad Hubbard)
vstart.sh: 禁用 "auth_allow_insecure_global_id_reclaim" (pr#40959, Kefu Chai)