v9.2.0 Infernalis 发布

sage

Infernalis此重要版本将作为下一个稳定系列的基础。自 v0.94.x Hammer 版本以来,已经发生了一些重大变化,升级过程并非轻而易举。请仔细阅读这些发行说明。

自 HAMMER 以来的主要变化

  • 常规:
    • Ceph 守护程序现在通过 systemd 管理(Ubuntu Trusty 除外,它仍然使用 upstart)。
    • Ceph 守护程序现在以“ceph”用户而不是 root 用户运行。
    • 在 Red Hat 发行版上,还有一个 SELinux 策略。
  • RADOS:
    • RADOS 缓存层现在可以将写操作代理到基础层,从而无需强制将对象迁移到缓存中即可处理写操作。
    • SHEC 纠删编码支持不再被标记为实验性。SHEC 通过额外的存储空间换取更快的修复速度。
    • 现在有一个统一的队列(因此具有优先级)的客户端 IO、恢复、擦洗和快照修剪。
    • 对低级修复工具(ceph-objectstore-tool)进行了许多改进。
    • 内部 ObjectStore API 已经进行了重大清理,以便于支持像 NewStore 这样的新存储后端。
  • RGW:
    • Swift API 现在支持对象过期。
    • 有很多 Swift API 兼容性改进。
  • RBD:
    • rbd du 命令显示实际使用情况(在启用 object-map 时快速)。
    • object-map 功能已经进行了许多稳定性改进。
    • object-map 和 exclusive-lock 功能可以动态启用或禁用。
    • 现在可以存储用户元数据并设置与单个镜像关联的持久 librbd 选项。
    • 新的 deep-flatten 功能允许扁平化克隆及其所有快照。(以前快照无法扁平化。)
    • export-diff 命令现在更快(它使用 aio)。还有一个新的 fast-diff 功能。
    • 可以使用后缀指定单位的 --size 参数(例如,--size 64G)。
    • 有一个新的 rbd status 命令,目前显示谁打开/映射了镜像。
  • CephFS:
    • 现在可以重命名快照。
    • 在管理、诊断和检查和修复工具方面进行了持续改进。
    • 客户端缓存状态的缓存和撤销因未使用的 inode 而显著改进。
    • ceph-fuse 客户端在 32 位主机上的行为更好。

发行版兼容性

我们决定放弃对许多旧发行版的支持,以便我们可以迁移到较新的编译器工具链(例如 C++11)。尽管仍然可以通过安装向后移植的开发工具在旧发行版上构建 Ceph,但我们不再为 ceph.com 构建和发布发行包。

我们现在为以下发行版构建包:

  • CentOS 7 或更高版本。我们已放弃对 CentOS 6(以及其他 RHEL 6 派生版本,如 Scientific Linux 6)的支持。
  • Debian Jessie 8.x 或更高版本。Debian Wheezy 7.x 的 g++ 对 C++11 的支持不完整(并且没有 systemd)。
  • Ubuntu Trusty 14.04 或更高版本。不再支持 Ubuntu Precise 12.04。
  • Fedora 22 或更高版本。

从 FIREFLY 升级

不建议直接从 Firefly v0.80.z 升级。可以直接升级,但并非没有停机时间。我们建议集群首先升级到 Hammer v0.94.4 或更高版本的 v0.94.z 版本;只有这样才能升级到 Infernalis 9.2.z 以进行在线升级(见下文)。

要直接从 Firefly 进行离线升级,必须在允许任何 Infernalis OSD 启动之前停止所有 Firefly OSD 并将其标记为 down。Infernalis 监视器强制执行此隔离,因此请使用以下升级过程:

  1. 升级监视器主机上的 Ceph

  2. 重新启动所有 ceph-mon 守护程序

  3. 升级所有 OSD 主机上的 Ceph

  4. 停止所有 ceph-osd 守护程序

  5. 使用类似如下命令将所有 OSD 标记为 down:

    ceph osd down seq 0 1000

  6. 启动所有 ceph-osd 守护程序

  7. 升级并重新启动剩余的守护程序(ceph-mds, radosgw)

从 HAMMER 升级

  • 对于所有支持 systemd 的发行版(CentOS 7、Fedora、Debian Jessie 8.x、OpenSUSE),Ceph 守护程序现在使用本机 systemd 文件管理,而不是旧的 sysvinit 脚本。例如,

    systemctl start ceph.target # 启动所有守护程序 systemctl status ceph-osd@12 # 检查 osd.12 的状态

    尚未使用 systemd 的主要发行版是 Ubuntu trusty 14.04。(下一个 Ubuntu LTS,16.04,将使用 systemd 代替 upstart。)

  • Ceph 守护程序现在默认以用户和组 ceph 运行。ceph 用户有一个由 Fedora 和 Debian 分配的静态 UID(也用于 RHEL/CentOS 和 Ubuntu 等派生发行版)。在 SUSE 上,创建用户时,ceph 用户目前会获得动态分配的 UID。

    如果您的系统已经存在 ceph 用户,升级软件包将导致问题。我们建议您在升级之前首先删除或重命名现有的“ceph”用户和“ceph”组。

    在升级时,管理员有两个选择

    1. 将以下行添加到所有主机的 ceph.conf

      setuser match path = /var/lib/ceph/$type/$cluster-$id

      如果守护程序的数据目录仍然由 root 拥有,这将使 Ceph 守护程序以 root 身份运行(即,不放弃权限并切换到用户 ceph)。新部署的守护程序将使用由用户 ceph 拥有的数据创建,并将以减少的权限运行,但升级的守护程序将继续以 root 身份运行。

    2. 在升级过程中修复数据所有权。这是首选选项,但工作量更大,而且非常耗时。每个主机的过程是:

      1. 升级 ceph 包。这将创建 ceph 用户和组。例如

        ceph-deploy install --stable infernalis HOST

      2. 停止守护程序。

        service ceph stop # fedora, centos, rhel, debian stop ceph-all # ubuntu

      3. 修复所有权

        chown -R ceph:ceph /var/lib/ceph

      4. 重新启动守护程序。

        start ceph-all # ubuntu systemctl start ceph.target # debian, centos, fedora, rhel

      或者,可以使用单个守护程序类型执行相同的过程,例如仅停止监视器并仅更改 /var/lib/ceph/mon 的所有权。

  • 实验性 KeyValueStore OSD 后端的磁盘格式已更改。在升级使用它的任何测试集群之前,您需要删除任何使用该后端的 OSD。

  • 当达到池配额时,librados 操作现在会无限期阻塞,就像集群填满时一样。(以前它们会返回 -ENOSPC)。默认情况下,已满的集群或池现在将阻塞。如果您的 librados 应用程序可以优雅地处理 ENOSPC 或 EDQUOT 错误,您可以使用新的 librados OPERATION_FULL_TRY 标志来获取错误返回。

  • librbd 的 rbd_aio_read 和 Image::aio_read API 方法的返回值不再在成功时返回读取的字节数。相反,它在成功时返回 0,在失败时返回负值。

  • ‘ceph scrub’、‘ceph compact’ 和 ‘ceph sync force’ 现在已弃用。用户应改用 ‘ceph mon scrub’、‘ceph mon compact’ 和 ‘ceph mon sync force’。

  • ‘ceph mon_metadata’ 应改为使用 ‘ceph mon metadata’。无需弃用此命令(自首次引入以来,同一主要版本)。

  • “osdmaptool”的 –dump-json 选项被 –dump json 取代。

  • “pg ls-by-{pool,primary,osd}” 和 “pg ls” 命令现在使用 “recovering” 而不是 “recovery”,以将正在恢复的 pg 包含在列出的 pg 中。

自 HAMMER 以来的显著变化

  • aarch64:添加优化的 crc32c 版本 (Yazen Ghannam, Steve Capper)
  • auth: 缓存/重用 crypto lib 密钥对象,优化 msg 签名检查 (Sage Weil)
  • auth:fork() 后重新初始化 NSS (#11128 Yan, Zheng)
  • autotools: 修复树外构建 (Krxysztof Kosinski)
  • autotools: 改进 make check 输出 (Loic Dachary)
  • buffer: 添加 invalidate_crc() (Piotr Dalek)
  • buffer: 修复零错误 (#12252 Haomai Wang)
  • buffer: 一些清理 (Michal Jarzabek)
  • build: 允许 tcmalloc-minimal (Thorsten Behrens)
  • 构建:现在支持 C++11
  • build: cmake: 修复 nss 链接 (Danny Al-Gaaf)
  • build: cmake: 杂项修复 (Orit Wasserman, Casey Bodley)
  • build:默认禁用 LTTNG (#11333 Josh Durgin)
  • build: 不要使用 tcmalloc 构建 ceph-dencoder (#10691 Boris Ranto)
  • build: 修复 Fedora 22 上的 junit 检测 (Ira Cooper)
  • build: 修复 pg ref 禁用 (William A. Kennington III)
  • build:修复 ppc 构建 (James Page)
  • build: install-deps: 杂项修复 (Loic Dachary)
  • build: install-deps.sh 改进 (Loic Dachary)
  • build:install-deps:支持 OpenSUSE (Loic Dachary)
  • build: make_dist_tarball.sh (Sage Weil)
  • 构建:许多 cmake 改进
  • build:杂项 cmake 修复 (Matt Benjamin)
  • build: 杂项修复 (Boris Ranto, Ken Dreyer, Owen Synge)
  • 构建:OSX 构建修复(Yan, Zheng)
  • 构建:删除 rest-bench
  • ceph-authtool: 修复错误时的返回码 (Gerhard Muntingh)
  • ceph-detect-init: 添加 Linux Mint (Michal Jarzabek)
  • ceph-detect-init: 健壮的 init 系统检测 (Owen Synge)
  • ceph-disk: 确保 'zap' 仅对整个磁盘进行操作 (#11272 Loic Dachary)
  • ceph-disk: 修复 zap sgdisk 调用 (Owen Synge, Thorsten Behrens)
  • ceph-disk:在创建 journal 时遵循 ceph-osd 提示 (#9580 Sage Weil)
  • ceph-disk:处理重用现有分区 (#10987 Loic Dachary)
  • ceph-disk:改进 parted 输出解析 (#10983 Loic Dachary)
  • ceph-disk: 安装 pip > 6.1 (#11952 Loic Dachary)
  • ceph-disk:使抑制作用适用于 activate-all 和 activate-journal (Dan van der Ster)
  • ceph-disk: 许多修复 (Loic Dachary, Alfredo Deza)
  • ceph-disk: 修复以遵守 init 系统 (Loic Dachary, Owen Synge)
  • ceph-disk: 在 prepare 子命令中传递 --cluster 参数 (Kefu Chai)
  • ceph-disk:支持多路径设备(Loic Dachary)
  • ceph-disk: 支持 NVMe 设备分区 (#11612 Ilja Slepnev)
  • ceph: 修复 'df' 单位 (Zhe Zhang)
  • ceph: 修复交互式 cli 模式中的解析 (#11279 Kefu Chai)
  • cephfs-data-scan: 许多添加和改进 (John Spray)
  • ceph-fuse:在卸载时不需要成功的重新挂载 (#10982 Greg Farnum)
  • ceph-fuse, libcephfs:在修剪 null 时不要清除 COMPLETE (Yan, Zheng)
  • ceph-fuse, libcephfs: 在 rmdir 完成时删除 inode (#11339 Yan, Zheng)
  • ceph-fuse,libcephfs: 修复 uninline (#11356 Yan, Zheng)
  • ceph-fuse, libcephfs:在“拥有”的目录上持有独占 cap (#11226 Greg Farnum)
  • ceph-fuse:在 32 位主机上表现良好(Yan, Zheng)
  • ceph: 改进 ‘tell’ 的错误输出 (#11101 Kefu Chai)
  • ceph-monstore-tool: 修复 store-copy (Huangjun)
  • ceph:新的 ‘ceph daemonperf’ 命令 (John Spray, Mykola Golub)
  • ceph-objectstore-tool:许多许多改进 (David Zafman)
  • ceph-objectstore-tool: 重构和清理 (John Spray)
  • ceph-post-file: 杂项修复 (Joey McDonald, Sage Weil)
  • ceph_test_rados: 测试流水线读取 (Zhiqiang Wang)
  • client: 避免发送不必要的 FLUSHSNAP 消息 (Yan, Zheng)
  • client: 在计算 oldest tid 时排除 setfilelock (Yan, Zheng)
  • client: 修复 check_pool_perm 中的错误处理 (John Spray)
  • client: fsync 仅等待 inode 的 cap 刷新 (Yan, Zheng)
  • client: 当缓存大小超出限制时使内核 dcache 失效 (Yan, Zheng)
  • client: 使 fsync 等待不安全的目录操作 (Yan, Zheng)
  • client: 锁定查找 dentry 以避免 inode 被释放 (Yan, Zheng)
  • common:为 perfcounters 添加描述 (Kiseleva Alyona)
  • common: 添加性能计数器描述 (Alyona Kiseleva)
  • 通用:bufferlist 性能调整(Piotr Dalek, Sage Weil)
  • common: 检测 int config 值溢出 (#11484 Kefu Chai)
  • common: 修复 bit_vector 范围计算 (#12611 Jason Dillaman)
  • common: 修复 utf8 的 json 解析 (#7387 Tim Serong)
  • common: 修复 pthread_mutexattr 泄漏 (#11762 Ketor Meng)
  • common:修复 LTTNG 与 fork 问题 (Josh Durgin)
  • common: 修复 throttle max 更改 (Henry Chang)
  • 通用:使互斥锁更高效
  • common: 使工作队列的添加/删除线程安全 (#12662 Jason Dillaman)
  • common: optracker 改进 (Zhiqiang Wang, Jianpeng Ma)
  • common:PriorityQueue 测试 (Kefu Chai)
  • 通用:一些异步压缩基础设施(Haomai Wang)
  • crush: 添加 –check 以验证悬挂名称、最大 osd id (Kefu Chai)
  • crush: 清理,与内核同步 (Ilya Dryomov)
  • crush: 修复由于无效的 ‘take’ 参数导致的崩溃 (#11602 Shiva Rkreddy, Sage Weil)
  • crush: 修复 straw2 中的除以 2 错误 (#11357 Yann Dupont, Sage Weil)
  • crush: 修复 has_v4_buckets (#11364 Sage Weil)
  • crush: 修复 adjust_subtree_weight 上的子树基权重 (#11855 Sage Weil)
  • crush: 在地图创建时遵守默认的复制规则集配置 (Ilya Dryomov)
  • crushtool:修复操作顺序,用法 (Sage Weil)
  • crypto: 修复 NSS 泄漏 (Jason Dillaman)
  • crypto: 修复不平衡的初始化/关闭 (#12598 Zheng Yan)
  • deb: 修复 rest-bench-dbg 和 ceph-test-dbg 依赖项 (Ken Dreyer)
  • debian:小的包重组 (Ken Dreyer)
  • deb, rpm: 将 ceph-objectstore-tool 移动到 ceph (Ken Dreyer)
  • doc:记录对象语料库生成 (#11099 Alexis Normand)
  • doc: 记录区域主机名 (Robin H. Johnson)
  • doc:修复性别中立性 (Alexandre Maragone)
  • doc:修复安装文档 (#10957 Kefu Chai)
  • doc:修复 sphinx 问题 (Kefu Chai)
  • doc: man 页面更新 (Kefu Chai)
  • doc:mds 数据结构文档 (Yan, Zheng)
  • doc: 杂项更新 (Fracois Lafont, Ken Dreyer, Kefu Chai, Owen Synge, Gael Fenet-Garde, Loic Dachary, Yannick Atchy-Dalama, Jiaying Ren, Kevin Caradant, Robert Maxime, Nicolas Yong, Germain Chipaux, Arthur Gorjux, Gabriel Sentucq, Clement Lebrun, Jean-Remi Deveaux, Clair Massot, Robin Tang, Thomas Laumondais, Jordan Dorne, Yuan Zhou, Valentin Thomas, Pierre Chaumont, Benjamin Troquereau, Benjamin Sesia, Vikhyat Umrao, Nilamdyuti Goswami, Vartika Rai, Florian Haas, Loic Dachary, Simon Guinot, Andy Allan, Alistair Israel, Ken Dreyer, Robin Rehu, Lee Revell, Florian Marsylle, Thomas Johnson, Bosse Klykken, Travis Rhoden, Ian Kelling)
  • doc:swift tempurls (#10184 Abhishek Lekshmanan)
  • doc:切换 doxygen 集成回 breathe (#6115 Kefu Chai)
  • doc: 更新发布计划文档 (Loic Dachary)
  • erasure-code: 清理 (Kefu Chai)
  • erasure-code: 改进测试 (Loic Dachary)
  • erasure-code: shec: 修复恢复错误 (Takanori Nakao, Shotaro Kawaguchi)
  • erasure-code:将 ISA-L 更新到 2.13 (Yuan Zhou)
  • gmock:切换到子模块 (Danny Al-Gaaf, Loic Dachary)
  • hadoop:添加 terasort 测试 (Noah Watkins)
  • init-radosgw: 与 sysv 版本合并; 修复枚举 (Sage Weil)
  • java:修复 libcephfs 绑定 (Noah Watkins)
  • libcephfs: 添加 pread, pwrite (Jevon Qiao)
  • libcephfs,ceph-fuse: 缓存清理 (Zheng Yan)
  • libcephfs,ceph-fuse:修复 cap 重连时的请求重发 (#10912 Yan, Zheng)
  • librados: 添加配置观察者 (Alistair Strachan)
  • librados:添加 FULL_TRY 和 FULL_FORCE 标志,用于处理完全填满的集群或池(Sage Weil)
  • librados: 为 copy-from 添加 src_fadvise_flags (Jianpeng Ma)
  • librados:从 C 常量定义 C++ 标志 (Josh Durgin)
  • librados: 每个操作的 fadvise 标志 (Jianpeng Ma)
  • librados:修复 last_force_resent 处理 (#11026 Jianpeng Ma)
  • librados:修复 C_TwoContexts 的内存泄漏 (Xiong Yiliang)
  • librados:修复通知完成竞态条件(#13114 Sage Weil)
  • librados:修复 stripe_count = 1 且 stripe_unit != object_size 时的条带器 (#11120 Yan, Zheng)
  • librados, libcephfs:随机化客户端 nonce(Josh Durgin)
  • librados:op perf counters (John Spray)
  • librados:pybind:修复二进制 omap 值(Robin H. Johnson)
  • librados:pybind:修复 write() 方法返回值 (Javier Guerra)
  • librados: 在 pool_create 上尊重 default_crush_ruleset (#11640 Yuan Zhou)
  • libradosstriper:修复泄漏 (Danny Al-Gaaf)
  • librbd: 为 single-client-only 功能添加 const (Josh Durgin)
  • librbd: 添加 deep-flatten 操作 (Jason Dillaman)
  • librbd:添加 purge_on_error 缓存行为 (Jianpeng Ma)
  • librbd: 允许将其他元数据存储在镜像中 (Haomai Wang)
  • librbd: 避免阻塞 aio API 方法 (#11056 Jason Dillaman)
  • librbd: 更好地处理 dup flatten 请求 (#11370 Jason Dillaman)
  • librbd: 在 watch 错误时取消正在进行的的操作 (#11363 Jason Dillaman)
  • librbd: 默认将新镜像格式设置为 2 (#11348 Jason Dillaman)
  • librbd: copy、export、import 的 fadvise (Jianpeng Ma)
  • librbd: 利用对象映射的快速差异实现 (Jason Dillaman)
  • librbd: 修复 fast diff 错误 (#11553 Jason Dillaman)
  • librbd: 修复镜像格式检测 (Zhiqiang Wang)
  • librbd: 修复锁排序问题 (#11577 Jason Dillaman)
  • librbd:修复大于缓存大小的读取(Lu Shi)
  • librbd: 修复在其他快照处于活动状态时的快照创建 (#11475 Jason Dillaman)
  • librbd: flatten/copyup 修复 (Jason Dillaman)
  • librbd: 处理 NOCACHE fadvise 标志 (Jinapeng Ma)
  • librbd: lockdep, helgrind 验证 (Jason Dillaman, Josh Durgin)
  • librbd:元数据过滤器修复(Haomai Wang)
  • librbd:杂项 aio 修复 (#5488 Jason Dillaman)
  • librbd:杂项 rbd 修复 (#11478 #11113 #11342 #11380 Jason Dillaman, Zhiqiang Wang)
  • librbd: 新的 diff_iterate2 API (Jason Dillaman)
  • librbd: 对象映射重建支持 (Jason Dillaman)
  • librbd: 仅在持有独占锁时更新镜像标志 (#11791 Jason Dillaman)
  • librbd: 可选地禁用分配提示 (Haomai Wang)
  • librbd: 防止 resize 请求之间的竞争 (#12664 Jason Dillaman)
  • librbd:readahead 修复 (Zhiqiang Wang)
  • librbd: 从 close 返回结果代码 (#12069 Jason Dillaman)
  • librbd:存储元数据,包括配置选项,在镜像中 (Haomai Wang)
  • librbd: 获取镜像元数据时容忍旧 OSD (#11549 Jason Dillaman)
  • librbd:尽可能使用 write_full(Zhiqiang Wang)
  • log: 修复由于日志轮换导致的的数据损坏竞争 (#12465 Samuel Just)
  • logrotate.d: 优先使用 service 而不是 invoke-rc.d (#11330 Win Hierman, Sage Weil)
  • mds:为 MDSMap 添加 ‘damaged’ 状态 (John Spray)
  • mds:为 perfcounters 添加昵称 (John Spray)
  • mds:避免在驱逐会话之前发出 cap 警告(John Spray)
  • mds: 避免在 XLOCKDONE 中卡住 (#11254 Yan, Zheng)
  • mds:禁用 snap 父级中的有问题 rstat 传播 (Yan, Zheng)
  • mds: 不要将快照项添加到 bloom 过滤器 (Yan, Zheng)
  • mds: 通过 asok 暴露 frags (John Spray)
  • mds:修复日志对象中的预期孔洞(#13167 Yan, Zheng)
  • mds: 修复对缺失 mydir dirfrag 的处理 (#11641 John Spray)
  • mds: 修复大型客户端 ID 上的整数截断 (Henry Chang)
  • mds:修复 mydir 副本问题与关机 (#10743 John Spray)
  • mds:修复乱序消息 (#11258 Yan, Zheng)
  • mds: 修复重新加入 (Yan, Zheng)
  • mds: 修复在一次 setxattr 中设置整个文件布局 (John Spray)
  • mds: 修复关闭 (John Spray)
  • mds:修复关机时存在 stray (#10744 John Spray)
  • mds:修复删除池上的 SnapServer 崩溃(John Spray)
  • mds: 修复快照错误 (Yan, Zheng)
  • mds: 修复流浪重新集成 (Yan, Zheng)
  • mds:修复 stray 处理 (John Spray)
  • mds: 修复自杀信标 (John Spray)
  • mds:在 do_open_truncate 中立即刷新 (#11011 John Spray)
  • mds: 处理杂项损坏问题 (John Spray)
  • mds:改进 dump 方法 (John Spray)
  • mds:许多修复(Yan, Zheng, John Spray, Greg Farnum)
  • mds: 许多快照和流浪修复 (Yan, Zheng)
  • mds: 杂项修复 (Jianpeng Ma, Dan van der Ster, Zhang Zhi)
  • mds:杂项 journal 清理和修复 (#10368 John Spray)
  • mds: 杂项修复改进 (John Spray)
  • mds: 杂项快照修复 (Zheng Yan)
  • mds: 杂项快照修复 (Yan, Zheng)
  • mds:使用 omap 的新的 SessionMap 存储 (#10649 John Spray)
  • mds: 可靠地持久化 completed_requests (#11048 John Spray)
  • mds:减少内存消耗 (Yan, Zheng)
  • mds: 在黑名单上重生而不是自杀 (John Spray)
  • mds: 在 Journaler 中分离 safe_pos (#10368 John Spray)
  • mds: 支持快照重命名 (#3645 Yan, Zheng)
  • mds: 将布局存储在 header 对象上 (#4161 John Spray)
  • mds:限制 purge stray 操作 (#10390 John Spray)
  • mds:容忍时钟向后跳跃 (#11053 Yan, Zheng)
  • mds: 警告客户端未能推进 oldest_client_tid (#10657 Yan, Zheng)
  • 杂项清理和修复 (Danny Al-Gaaf)
  • misc coverity 修复 (Danny Al-Gaaf)
  • misc: 性能和清理 (Nathan Cutler, Xinxin Shu)
  • mon:添加 MonitorDBStore 上的缓存(Kefu Chai)
  • mon: 添加 'mon_metadata'命令 (Kefu Chai)
  • mon: 添加 'node ls ...' 命令 (Kefu Chai)
  • mon: 为 mon 命令添加 NOFORWARD、OBSOLETE、DEPRECATE 标志 (Joao Eduardo Luis)
  • mon: 在 ‘ceph osd df’ 输出中添加 PG 计数 (Michal Jarzabek)
  • mon:‘ceph osd metadata’ 可以转储所有 osd(Haomai Wang)
  • mon: 清理,重新组织一些 mon 命令 (Joao Eduardo Luis)
  • monclient: flush_log (John Spray)
  • mon:检测 kv 后端故障(Sage Weil)
  • mon: 禁止 >2 层 (#11840 Kefu Chai)
  • mon: 禁止 ec 池作为 tiers (#11650 Samuel Just)
  • mon: 不要停用最后一个 MDS (#10862 John Spray)
  • mon: 修复 ‘osd df’ 的平均利用率计算 (Mykola Golub)
  • mon:修复新池的 CRUSH 映射测试(Sage Weil)
  • mon: 修复调试时的日志转储崩溃 (Mykola Golub)
  • mon: 修复 mds 信标回复 (#11590 Kefu Chai)
  • mon: 修复元数据更新竞争 (Mykola Golub)
  • mon:修复 min_last_epoch_clean 跟踪(Kefu Chai)
  • mon: 修复 'pg ls' 排序顺序, 状态名称 (#11569 Kefu Chai)
  • mon: 修复刷新 (#11470 Joao Eduardo Luis)
  • mon: 修复 ‘osd df’ 中的方差计算 (Sage Weil)
  • mon: 改进对 crushtool 的调用 (Mykola Golub)
  • mon: 使阻塞操作消息更具可读性 (Jianpeng Ma)
  • mon:使 osd get pool ‘all’ 只返回适用的字段 (#10891 Michal Jarzabek)
  • mon:各种缩放修复(Sage Weil)
  • mon: 规范化擦除码配置文件以进行存储和比较 (Loic Dachary)
  • mon: 仅将 mon 元数据发送到支持的对等节点 (Sage Weil)
  • mon: 在 'osd create' 上可选指定 osd id (Mykola Golub)
  • mon: 'osd tree' 修复 (Kefu Chai)
  • mon: 定期后台 scrub (Joao Eduardo Luis)
  • mon: 防止被 CRUSH 规则引用的 bucket 删除 (#11602 Sage Weil)
  • mon: 防止 pgp_num > pg_num (#12025 Xinxin Shu)
  • mon: 防止具有快照状态的池用作 tier (#11493 Sage Weil)
  • mon: 在 CRUSH 映射更改时启动 pg_temp (Sage Weil)
  • mon: 细化 check_remove_tier 检查 (#11504 John Spray)
  • mon: 拒绝过大的 max_mds 值 (#12222 John Spray)
  • mon: 从 'mds rm ...' 中删除多余的 who 参数 (John Spray)
  • mon:简化会话处理,修复内存泄漏(Sage Weil)
  • mon:升级必须通过 hammer(Sage Weil)
  • mon:警告错误的缓存层配置 (Jianpeng Ma)
  • msgr: 添加 ceph_perf_msgr 工具 (Hoamai Wang)
  • msgr: async: 修复 seq 处理 (Haomai Wang)
  • msgr: async: 许多修复 (Haomai Wang)
  • msgr: simple: 修复 clear_pipe (#11381 Haomai Wang)
  • msgr: simple: 修复 connect_seq 断言 (Haomai Wang)
  • msgr: xio: fastpath 改进 (Raju Kurunkad)
  • msgr: xio: 修复 ip 和 nonce (Raju Kurunkad)
  • msgr: xio: 改进 lane 分配 (Vu Pham)
  • msgr: xio: 与 accellio v1.4 同步 (Vu Pham)
  • msgr: xio: 杂项修复 (#10735 Matt Benjamin, Kefu Chai, Danny Al-Gaaf, Raju Kurunkad, Vu Pham, Casey Bodley)
  • msg:单元测试 (Haomai Wang)
  • objectcacher:杂项错误修复 (Jianpeng Ma)
  • osd: 添加分层操作的延迟性能计数器 (Xinze Chi)
  • osd:添加杂项 perfcounters (Xinze Chi)
  • osd:在恢复中添加简单的睡眠注入 (Sage Weil)
  • osd:允许 SEEK_HOLE/SEEK_DATA 用于稀疏读取 (Zhiqiang Wang)
  • osd:避免 pg 元数据中的 dup omap 集 (#11120 Yan, Zheng)
  • osd: 避免多次命中集插入 (Zhiqiang Wang)
  • osd: 在某些情况下避免事务追加 (Sage Weil)
  • osd: 将 PG 删除分解为多个迭代 (#10198 Guang Yang)
  • osd:缓存 proxy-write 支持(Zhiqiang Wang, Samuel Just)
  • osd: 在处理映射时检查 scrub 状态 (Jianpeng Ma)
  • osd:清理一些 constness,privateness (Kefu Chai)
  • osd: 如果提升失败,则清理临时对象 (Jianpeng Ma)
  • osd:基于写入近度配置提升(Zhiqiang Wang)
  • osd: 将集合限制为 meta 和 PG(正常和临时)(Sage Weil)
  • osd:不要发送重复的 MMonGetOSDMap 请求(Sage Weil, Kefu Chai)
  • osd:EIO 注入 (David Zhang)
  • osd: 消除 txn apend, ECSubWrite 复制 (Samuel Just)
  • osd:erasure-code:根据 LRU 删除条目 (Andreas-Joachim Peters)
  • osd:erasure-code:修复 SHEC 浮点错误(#12936 Loic Dachary)
  • osd:erasure-code:更新到 ISA-L 2.14(Yuan Zhou)
  • osd: filejournal: 清理 (David Zafman)
  • osd: filestore: 使用 splice 进行克隆 (Jianpeng Ma)
  • osd: filestore: 修复递归锁 (Xinxin Shu)
  • osd: 修复 check_for_full (Henry Chang)
  • osd: 修复 make_writeable 中的脏数据核算 (Zhiqiang Wang)
  • osd: 修复 dup 提升丢失操作错误 (Zhiqiang Wang)
  • osd: 修复无法恢复对象时的无限修复 (Jianpeng Ma, Kefu Chai)
  • osd:修复 hitset 对象命名以使用 GMT(Kefu Chai)
  • osd:修复各种内存泄漏(Sage Weil)
  • osd:修复 backfill 期间的负退化统计信息 (Guang Yang)
  • osd: 修复 osdmap dump 的黑名单项 (John Spray)
  • osd:修复 FileStore 中 peek_queue 锁定(Xinze Chi)
  • osd: 修复 PG 复活 (#11429 Samuel Just)
  • osd:修复提升与完全缓存层(Samuel Just)
  • osd:修复 pg 仍在激活时重新排队(#13116 Samuel Just)
  • osd:修复 scrub stat 错误(Sage Weil, Samuel Just)
  • osd: 修复来自缓存 tier 的快照刷新(再次) (#11787 Samuel Just)
  • osd: 修复升级时的快照处理 (#11296 Sam Just)
  • osd: 修复临时清除 (David Zafman)
  • osd:强制提升 EC 无法处理的操作(Zhiqiang Wang)
  • osd: 处理具有重叠条目的日志拆分 (#11358 Samuel Just)
  • osd: 在 unfound 计算中忽略不存在的 OSD (#10976 Mykola Golub)
  • osd:改进具有大内存页面的机器上的行为(Steve Capper)
  • osd: 在每个集合/pgid 中使用临时命名空间 (Sage Weil)
  • osd: 增加默认最大打开文件数 (Owen Synge)
  • osd: keyvaluestore: 杂项修复 (Varada Kari)
  • osd: 低速和高速刷新模式 (Mingxin Liu)
  • osd: 使自杀超时可单独配置 (Samuel Just)
  • osd:将多个 setattr 调用合并到一个 setattrs 调用中(Xinxin Shu)
  • osd:杂项修复 (Ning Yao, Kefu Chai, Xinze Chi, Zhiqiang Wang, Jianpeng Ma)
  • osd: 将 scrub 移到 OpWQ (Samuel Just)
  • osd:newstore 原型(Sage Weil)
  • osd:ObjectStore 内部 API 重构(Sage Weil)
  • osd: peer_features 包含自身 (David Zafman)
  • osd: 池大小更改触发新间隔 (#11771 Samuel Just)
  • osd: 在只有对等方缺少时预填充 needs_recovery_map (#9558 Guang Yang)
  • osd: 随机化 scrub 时间 (#10973 Kefu Chai)
  • osd: 恢复、对等修复 (#11687 Samuel Just)
  • osd: 重构 scrub 和摘要记录 (Sage Weil)
  • osd: 拒绝在非零偏移处首次写入 EC 对象 (Jianpeng Ma)
  • osd: 放宽代理读取的回复顺序 (#11211 Zhiqiang Wang)
  • osd: 需要 firefly 功能 (David Zafman)
  • osd: 使用更精确的精度设置初始 crush 权重 (Sage Weil)
  • osd:SHEC 不再是实验性的
  • osd: 跳过 flush/evict 操作的提升 (Zhiqiang Wang)
  • osd: 在小的 xattrs 上条带化以适应 XFS 的 255 字节内联限制 (Sage Weil, Ning Yao)
  • osd: 在 syncfs 上同步 object_map (Samuel Just)
  • osd: 如果 op 是 rw 则获取 excl lock (Samuel Just)
  • osd:限制驱逐操作(Yunchuan Wen)
  • osd:升级必须通过 hammer(Sage Weil)
  • osd: 使用临时对象进行恢复 (Sage Weil)
  • osd: 使用 blkid 收集分区信息 (Joseph Handzik)
  • osd:使用 SEEK_HOLE / SEEK_DATA 进行稀疏复制(Xinxin Shu)
  • osd: WBThrottle 清理 (Jianpeng Ma)
  • osd: 在干净关闭时写入 journal 标头 (Xinze Chi)
  • osdc/Objecter: 允许按池调用 op_cancel_writes (John Spray)
  • os/filestore:增大 getxattr 缓冲区大小 (Jianpeng Ma)
  • pybind:pep8 清理 (Danny Al-Gaaf)
  • pycephfs: 许多绑定修复 (Haomai Wang)
  • qa:修复 filelock_interrupt.py 测试 (Yan, Zheng)
  • qa:改进 ceph-disk 测试 (Loic Dachary)
  • qa:改进 docker 构建层 (Loic Dachary)
  • qa: run-make-check.sh 脚本 (Loic Dachary)
  • rados: 添加 –striper 选项以使用 libradosstriper (#10759 Sebastien Ponce)
  • rados: bench: 添加 –no-verify 选项以提高性能 (Piotr Dalek)
  • rados bench: 杂项修复 (Dmitry Yatsushkevich)
  • rados: 修复池删除失败时的错误消息 (Wido den Hollander)
  • radosgw-admin: 添加用于修复 bucket 索引的 ‘bucket check’ 函数 (Yehuda Sadeh)
  • radosgw-admin: 修复子用户修改输出 (#12286 Guce)
  • rados: 正确处理 –snapid 参数 (Abhishek Lekshmanan)
  • rados: 改进基准缓冲区处理、性能 (Piotr Dalek)
  • rados: 杂项 bench 修复 (Dmitry Yatsushkevich)
  • rados: 新的池导入实现 (John Spray)
  • rados: 在 CLI 中将 errno 转换为字符串 (#10877 Kefu Chai)
  • rbd:接受 map 选项配置选项 (Ilya Dryomov)
  • rbd: 添加磁盘使用工具 (#7746 Jason Dillaman)
  • rbd: 允许按规范进行 unmapping (Ilya Dryomov)
  • rbd:cli:修复带有 –io-pattern 的参数解析 (Dmitry Yatsushkevich)
  • rbd: 弃用 --new-format 选项 (Jason Dillman)
  • rbd:修复错误消息 (#2862 Rajesh Nambiar)
  • rbd: 修复链接问题 (Jason Dillaman)
  • rbd: 改进 CLI 参数解析、用法 (Ilya Dryomov)
  • rbd:rbd-replay-prep 和 rbd-replay 改进(Jason Dillaman)
  • rbd: 识别 queue_depth 内核选项 (Ilya Dryomov)
  • rbd: 支持 CLI 中的 G 和 T 单位 (Abhishek Lekshmanan)
  • rbd:更新 rbd man 页面 (Ilya Dryomov)
  • rbd:更新 xfstests 测试 (Douglas Fuller)
  • rbd: 在帮助中使用 image-spec 和 snap-spec (Vikhyat Umrao, Ilya Dryomov)
  • rest-bench: 杂项修复 (Shawn Chen)
  • rest-bench: 支持 https (#3968 Yuan Zhou)
  • rgw: 添加最大 multipart 上传部分 (#12146 Abshishek Dixit)
  • rgw:添加缺失的标头到 Swift 容器详细信息 (#10666 Ahmad Faheem, Dmytro Iurchenko)
  • rgw:为帐户 GET 添加统计信息到标头 (#10684 Yuan Zhou)
  • rgw: 添加 Trasnaction-Id 到响应 (Abhishek Dixit)
  • rgw:为 Swift 容器添加 X-Timestamp (#10938 Radoslaw Zarzynski)
  • rgw: 始终检查 token 是否过期 (#11367 Anton Aksola, Riku Lehto)
  • rgw: 转换工具以修复损坏的多部分对象 (#12079 Yehuda Sadeh)
  • rgw: 记录池和对象的布局 (Pete Zaitcev)
  • rgw: 不在 bucket header 中使用引号 (#11860 Wido den Hollander)
  • rgw: 不为 HEAD 请求预取数据 (Guang Yang)
  • rgw: 在复制对象时不要保留 ACL (#12370 Yehuda Sadeh)
  • rgw: 如果长度为 0,则不要设置 content-type (#11091 Orit Wasserman)
  • rgw:不要在设置 ACL 时覆盖 bucket/object 所有者 (#10978 Yehuda Sadeh)
  • rgw: 不要为命名空间对象列表使用 end_marker (#11437 Yehuda Sadeh)
  • rgw:如果配置了前端,则不要使用 rgw_socket_path (#11160 Yehuda Sadeh)
  • rgw: 对 Swift cont/obj 上的 POST 强制执行 Content-Length (#10661 Radoslaw Zarzynski)
  • rgw: 如果前端未发送所有数据则出错 (#11851 Yehuda Sadeh)
  • rgw:通过管理套接字公开不健康的 worker 数量(Guang Yang)
  • rgw: 如果未指定 parts 进行多部分上传,则失败 (#11435 Yehuda Sadeh)
  • rgw: 修复复制对象属性的分配 (#11563 Yehuda Sadeh)
  • rgw: 修复容器列表中的损坏统计信息 (#11285 Radoslaw Zarzynski)
  • rgw: 修复域/子域拆分中的错误 (Robin H. Johnson)
  • rgw:修复 Content-Type 标头的拼写(Robin H. Johnson)
  • rgw: 修复 civetweb 最大线程数 (#10243 Yehuda Sadeh)
  • rgw: 修复 Connection: header 处理 (#12298 Wido den Hollander)
  • rgw: 修复复制元数据,支持 swift 的 X-Copied-From (#10663 Radoslaw Zarzynski)
  • rgw: 修复数据损坏竞争条件 (#11749 Wuxingyi)
  • rgw:修复从 Swift DLO 获取对象时 X-Object-Manifest 的解码(Radslow Rzarzynski)
  • rgw: 修复 limit == 0 时 swift 帐户上的 GET (#10683 Radoslaw Zarzynski)
  • rgw:修复 Swift 容器上的空元数据项处理 (#11088 Radoslaw Zarzynski)
  • rgw: 修复获取用户配额时的 JSON 响应 (#12117 Wuxingyi)
  • rgw: 修复以 _ 开头的对象的定位器 (#11442 Yehuda Sadeh)
  • rgw:修复日志轮换 (Wuxingyi)
  • rgw: 修复重试路径中的多部分上传 (#11604 Yehuda Sadeh)
  • rgw: 修复 POST 上的配额执行 (#11323 Sergey Arkhipov)
  • rgw: 修复 reset_loc (#11974 Yehuda Sadeh)
  • rgw: 修复丢失上传时的返回码 (#11436 Yehuda Sadeh)
  • rgw:修复 sysvinit 脚本
  • rgw:修复具有多个实例的 sysvinit 脚本(Sage Weil, Pavan Rallabhandi)
  • rgw: 强制 swift bucket stats 请求的内容类型 (#12095 Orit Wasserman)
  • rgw: 强制对没有正文的响应设置 content length 标头 (#11438 Orit Wasserman)
  • rgw:为 civetweb 生成 Date 标头 (#10873 Radoslaw Zarzynski)
  • rgw: 在设置属性时生成新的对象标签 (#11256 Yehuda Sadeh)
  • rgw: 改进 content-length 环境变量处理 (#11419 Robin H. Johnson)
  • rgw: 改进对 swift 帐户元数据的支持 (Radoslaw Zarzynski)
  • rgw:改进过时桶处理(Radoslaw Rzarzynski)
  • rgw: 在刷新缓存数据之前对第一个块发出 aio (#11322 Guang Yang)
  • rgw:将日志记录到 /var/log/ceph 而不是 /var/log/radosgw
  • rgw:使 init 脚本等待 radosgw 停止 (#11140 Dmitry Yatsushkevich)
  • rgw: 使 max put 大小可配置 (#6999 Yuan Zhou)
  • rgw:使配额/gc 线程可配置 (#11047 Guang Yang)
  • rgw: 使读取用户 bucket 向后兼容 (#10683 Radoslaw Zarzynski)
  • rgw: 正确合并具有前缀覆盖的清单 (#11622 Yehuda Sadeh)
  • rgw: 仅扫描不在命名空间中的对象 (#11984 Yehuda Sadeh)
  • rgw: 孤儿检测工具 (Yehuda Sadeh)
  • rgw:传递 civetweb 可配置项 (#10907 Yehuda Sadeh)
  • rgw:纠正 PUT 响应中的 202 Accepted (#11148 Radoslaw Zarzynski)
  • rgw:删除 bucket 后删除 meta 文件 (#11149 Orit Wasserman)
  • rgw: 从 HTTP_HOST 标头中删除尾随的 :port (Sage Weil)
  • rgw: 在列出 bucket 时,对错误的 limit 返回 412 (#11613 Yehuda Sadeh)
  • rgw: 重做 X-Trans-Id 标头以符合 Swift API (Radoslaw Rzarzynski)
  • rgw:s3 encoding-type 用于获取桶(Jeff Weber)
  • rgw: 为 swift 发送 ETag、Last-Modified (#11087 Radoslaw Zarzynski)
  • rgw: 设置 content length 到容器 GET、PUT、DELETE、HEAD (#10971, #11036 Radoslaw Zarzynski)
  • rgw:在 ceph.conf 中设置每个用户的最大桶数(Vikhyat Umrao)
  • rgw: 在多个 librados 实例上分片工作 (Pavan Rallabhandi)
  • rgw: 支持 swift 容器 GET 上的 end marker (#10682 Radoslaw Zarzynski)
  • rgw:支持 Swift 过期 API(Radoslaw Rzarzynski, Yehuda Sadeh)
  • rgw:swift:允许使用 COPY 设置属性 (#10662 Ahmad Faheem, Dmytro Iurchenko)
  • rgw: swift: 不要覆盖发送的内容类型 (#12363 Orit Wasserman)
  • rgw: swift: 在响应中强制执行 Content-Type (#12157 Radoslaw Zarzynski)
  • rgw: swift: 修复帐户列表 (#11501 Radoslaw Zarzynski)
  • rgw:swift:修复复制上的元数据处理 (#10645 Radoslaw Zarzynski)
  • rgw:swift:发送 Last-Modified 标头 (#10650 Radoslaw Zarzynski)
  • rgw: swift: 为帐户 GET 设置 Content-Length (#12158 Radoslav Zarzynski)
  • rgw: swift: 为 keystone 令牌设置 content-length (#11473 Herv Rousseau)
  • rgw:使用 token 信息更新 keystone 缓存 (#11125 Yehuda Sadeh)
  • rgw:更新到最新的 civetweb,启用 IPv6 配置 (#10965 Yehuda Sadeh)
  • rgw: 在复制时使用源存储桶中的 attrs (#11639 Javier M. Mellid)
  • rgw: 使用正确的 oid 进行 gc 链 (#11447 Yehuda Sadeh)
  • rgw:user rm 是幂等的(Orit Wasserman)
  • rgw: 为 civetweb 使用唯一的请求 ID (#10295 Orit Wasserman)
  • rocksdb: 添加 get/put 延迟的性能计数器 (Xinxin Shu)
  • rocksdb, leveldb: 修复 compact_on_mount (Xiaoxi Chen)
  • rocksdb: 将选项作为单个字符串传递 (Xiaoxi Chen)
  • rocksdb:更新到最新版本 (Xiaoxi Chen)
  • rpm: 添加 suse 防火墙文件 (Tim Serong)
  • rpm: 始终重建并安装 rpm 的 man 页面 (Owen Synge)
  • rpm:放宽 ceph-test 依赖项 (Ken Dreyer)
  • rpm: 许多 spec 文件修复 (Owen Synge, Ken Dreyer)
  • rpm: 杂项修复 (Boris Ranto, Owen Synge, Ken Dreyer, Ira Cooper)
  • rpm: 杂项 systemd 和 SUSE 修复 (Owen Synge, Nathan Cutler)
  • selinux 策略(Boris Ranto, Milan Broz)
  • systemd: logrotate 修复 (Tim Serong, Lars Marowsky-Bree, Nathan Cutler)
  • systemd:许多修复(Sage Weil, Owen Synge, Boris Ranto, Dan van der Ster)
  • systemd:守护进程现在以用户 ceph 身份运行
  • sysvinit 兼容性: 杂项修复 (Owen Synge)
  • test: 杂项 fs 测试改进 (John Spray, Loic Dachary)
  • test: python 测试、linter 清理 (Alfredo Deza)
  • tests: rbd xstests 修复 (Douglas Fuller)
  • tests: 修复 tiering 健康检查 (Loic Dachary)
  • tests: 低级性能测试 (Haomai Wang)
  • tests: 许多 ec 非回归改进 (Loic Dachary)
  • tests: 许多许多 ec 测试改进 (Loic Dachary)
  • upstart: 限制重启次数 (#11798 Sage Weil, Greg Farnum)

获取 Ceph