v0.91 发布
sage
我们正快速接近 Hammer 功能冻结,但在达到目标之前还有几个开发版本需要发布。主要更新包括 CephFS 中的基于子树的配额支持(目前仅支持 ceph-fuse/libcephfs 客户端)、RBD 和 RGW 使用的 watch/notify librados API 的重写、OSDMap 校验和以确保集群内部的映射始终一致、librados 和 librbd 中模拟 posix_fadvise 的 IO 提示的新 API 调用,以及改进的每 PG 状态存储。
我们预计在第一个 Hammer 候选版本 (v0.93) 之前还会发布两个版本。
升级 ¶
- 对象的“category”字段已被移除。最初添加该字段是为了跟踪不同对象类别在 PG 统计汇总中的使用情况,供 radosgw 使用。它现在没有已知用户,并且容易被滥用,因为它可能导致 pg_stat_t 结构无限增长。接受此字段的 librados API 调用现在会忽略它,并且 OSD 不再跟踪每个类别的汇总信息。
- “rados df”的输出已更改。“category”级别已被移除,因此现在每个池只有一个统计对象。JSON 输出的结构不同,并且纯文本输出少了一列。
- “rados create
[category]”可选的 category 参数不再受支持或识别。 - rados.py 的 Rados 类不再具有 __del__ 方法;它在使用解释器关闭和线程时会导致问题。如果您的代码具有有限生命周期的 Rados 对象,并且担心锁定资源,请显式调用 Rados.shutdown()。
- 存在一个全新的 librados watch/notify API,其语义得到了极大的改进。鼓励使用此接口的任何应用程序迁移到新的 API。旧的 API 调用已被标记为已弃用,并最终将被移除。
- 用于传递无效句柄的 librados rados_unwatch() 调用曾经是安全的。新版本在传递错误的值(例如,当 rados_watch() 返回错误并且未定义句柄时)时行为未定义。
- 格式化“pg stat”命令的结构已更改,以避免使用“+”字符(出现在状态名称中)作为 XML 标记的一部分(这是非法的)。
值得注意的更改 ¶
- asyncmsgr:各种修复 (Haomai Wang)
- buffer:添加“shareable”结构 (Matt Benjamin)
- build:aarch64 构建修复 (Noah Watkins, Haomai Wang)
- build:支持 jemalloc (Shishir Gowda)
- ceph-disk:允许日志分区重用 (#10146 Loic Dachary, Dav van der Ster)
- ceph-disk:各种修复 (Christos Stavrakakis)
- ceph-fuse:修复内核缓存修剪 (#10277 Yan, Zheng)
- ceph-objectstore-tool:许多许多改进 (David Zafman)
- common:支持新的 gperftools 标头位置 (Key Dreyer)
- crush:修复 straw bucket 权重计算 (#9998 Sage Weil)
- doc:各种改进 (Nilamdyuti Goswami, John Wilkins, Chris Holcombe)
- libcephfs,ceph-fuse:添加“status”asok (John Spray)
- librados, osd:新的 watch/notify 实现 (Sage Weil)
- librados:删除“category”功能 (Sage Weil)
- librados:修复池删除处理 (#10372 Sage Weil)
- librados:新的 fadvise API (Ma Jianpeng)
- libradosstriper:修复 remove() (Dongmao Zhang)
- librbd:在关闭镜像之前完成待处理的操作 (#10299 Josh Durgin)
- librbd:fadvise API (Ma Jianpeng)
- mds:ENOSPC 和 OSDMap epoch 屏障 (#7317 John Spray)
- mds:dirfrag buf 修复 (Yan, Zheng)
- mds:禁止在非活动 MDS 上执行大多数命令 (Greg Farnum)
- mds:删除已删除目录中的 dentries 和 leases (#10164 Yan, Zheng)
- mds:处理零大小 xattr (#10335 Yan, Zheng)
- mds:支持子树配额 (Yunchuan Wen)
- memstore:空闲空间跟踪 (John Spray)
- misc 清理 (Danny Al-Gaaf, David Anderson)
- mon:‘osd crush reweight-all’命令 (Sage Weil)
- mon:允许手动清除 full 标志 (#9323 Sage Weil)
- mon:延迟故障注入 (Joao Eduardo Luis)
- mon:修复 paxos 超时 (#10220 Joao Eduardo Luis)
- mon:从 leader 获取规范 OSDMap (#10422 Sage Weil)
- msgr:修复 RESETSESSION 错误 (#10080 Greg Farnum)
- objectstore:弃用 collection attrs (Sage Weil)
- osd, mon:为所有 OSDMap 添加校验和 (Sage Weil)
- osd:允许删除带有 watcher 的对象 (#2339 Sage Weil)
- osd:允许 Push/Pull 的稀疏读取 (Haomai Wang)
- osd:缓存 reverse_nibbles 哈希值 (Dong Yuan)
- osd:删除对 pre-dumpling 的升级支持 (Sage Weil)
- osd:启用并使用 posix_fadvise (Sage Weil)
- osd:erasure-code:强制块大小对齐 (#10211 Loic Dachary)
- osd:erasure-code:支持 NEON 的 jerasure (Loic Dachary)
- osd:erasure-code:放宽 cauchy w 限制 (#10325 David Zhang, Loic Dachary)
- osd:erasure-code:更新 gf-complete 到最新的上游版本 (Loic Dachary)
- osd:修复 WBTHrottle 性能计数器 (Haomai Wang)
- osd:修复回填错误 (#10150 Samuel Just)
- osd:修复偶发的 peering 停滞 (#10431 Sage Weil)
- osd:修复 scrub 与 try-flush 错误 (#8011 Samuel Just)
- osd:修复带有 -f 或 -d 的 stderr (Dan Mick)
- osd:各种 FIEMAP 修复 (Ma Jianpeng)
- osd:优化 Finisher (Xinze Chi)
- osd:将 PG 元数据存储在每个 collection 对象中以提高并发性 (Sage Weil)
- pyrados:添加对象锁支持 (#6114 Mehdi Abaakouk)
- pyrados:修复错误的 wait_* 路由 (#10104 Dan Mick)
- pyrados:各种清理 (Kefu Chai)
- qa:添加大型 auth ticket 测试 (Ilya Dryomov)
- qa:许多 ‘make check’ 改进 (Loic Dachary)
- qa:各种测试 (Loic Dachary, Yan, Zheng)
- rgw:条件 PUT on ETag (#8562 Ray Lv)
- rgw:修复错误代码 (#10334 #10329 Yehuda Sadeh)
- rgw:正确索引 swift 密钥 (#10471 Yehuda Sadeh)
- rgw:防止不符合 placement rule 的非法 bucket policy (Yehuda Sadeh)
- rgw:使用 systemd 作为 apache 运行 radosgw (#10125 Loic Dachary)
- rgw:支持 Swift 存储策略兼容的 X-Storage-Policy 标头 (Yehuda Sadeh)
- rgw:使用 rn 作为 http 标头 (#9254 Yehuda Sadeh)
- rpm:各种修复 (Key Dreyer)