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)

获取 Ceph