v16.2.0 Pacific 发布

dgalloway

我们很高兴地宣布 Pacific v16.2.0 稳定系列 的第一个版本。与之前的 Ceph 版本相比,各个组件都发生了很大的变化,我们建议大家仔细阅读 发布和升级说明

https://www.youtube.com/watch?v=PVtn53MbxTc

与 Octopus 的主要变化

通用

  • Cephadm 可以自动将 Octopus 集群升级到 Pacific,只需一个命令即可启动该过程。

  • 过去一年中,Cephadm 得到了显著改进,对 RGW(独立和多站点)的支持得到改善,并新增了对 NFS 和 iSCSI 的支持。其中大部分更改已经回溯到最近的 Octopus 点版本,但随着 Pacific 版本的发布,我们将切换到仅回溯修复错误。

  • 为以下发行版构建软件包

  • CentOS 8

  • Ubuntu 20.04 (Focal)

  • Ubuntu 18.04 (Bionic)

  • Debian Buster

  • 容器镜像(基于 CentOS 8)

除 Debian Buster 之外,软件包和容器均针对 x86_64 和 aarch64 (arm64) 架构构建。

请注意,cephadm 集群可能适用于许多其他发行版,前提是 Python 3 和最新版本的 Docker 或 Podman 可用于管理容器。

Dashboard

仪表板在以下管理领域带来了改进

  • Orchestrator/Cephadm

  • 主机管理:维护模式、标签。

  • 服务:显示放置规范。

  • OSD:磁盘更换、显示正在进行的删除状态以及改进的健康/SMART 诊断报告。

  • 官方 mgr ceph api

  • 符合 OpenAPI v3 标准。

  • 从 Pacific 版本开始承诺稳定性。

  • 通过 HTTP Accept 标头进行版本控制(从 v1.0 开始)。

  • 经过彻底测试(>90% 覆盖率和每次拉取请求验证)。

  • 完全记录。

  • RGW

  • 多站点同步监控。

  • 管理多个 RGW 守护程序及其资源(存储桶和用户)。

  • 存储桶和用户配额使用情况可视化。

  • 改进了 S3 租户用户的配置。

  • 安全性(多次增强和修复,源于 IBM 进行的渗透测试)

  • 在配置数量的失败登录尝试后锁定帐户。

  • 改进了 Cookie 策略,以缓解 XSS/CSRF 攻击。

  • 审查并改进了 HTTP 标头中的安全性。

  • 敏感信息经过审查并从日志和错误消息中删除。

  • 禁用了 TLS 1.0 和 1.1 支持。

  • 启用调试模式时会触发 HEALTH_WARN。

  • 改进了复制和擦除编码模式的可视化。

  • 支持 CLAY 擦除码插件。

  • 警报和通知

  • 在集群网络中检测到 MTU 不匹配时触发警报。

  • 根据集群状态更改图标。

  • 其他

  • 登录页面:改进的图表和可视化。

  • 遥测配置向导。

  • OSD:管理单个 OSD 标志。

  • RBD 块存储:每个 RBD 镜像的 Grafana 仪表板。

  • CephFS:显示目录和 Caps。

  • NFS:仅支持 v4(计划向后兼容 v3)。

  • 前端:Angular 10 更新。

RADOS

  • Pacific 引入了 RocksDB 分片,从而减少了磁盘空间需求。
  • Ceph 现在通过 mclock 调度器提供客户端 I/O 和后台操作之间的 QoS。
  • 平衡器现在默认处于 upmap 模式,以改善 PGs 在 OSD 上的分布。
  • ceph -s 的输出得到了改进,以便在一个进度条中显示恢复进度。可以通过 ceph progress 命令查看更详细的进度条。

RBD 块存储

  • 镜像实时迁移功能已扩展为支持外部数据源。现在可以将镜像立即从本地文件、通过 HTTP(S) 提供的远程文件或远程 S3 存储桶导入,格式为 raw (rbd export v1) 或基本的 qcowqcow2 格式。对 rbd export v2 格式、高级 QCOW 功能和 rbd export-diff 快照差异的支持预计将在未来的版本中提供。
  • 已添加客户端加密的初始支持。该支持基于 LUKS,在未来的版本中将允许使用每个镜像加密密钥,同时保持快照和克隆功能,以便父镜像和潜在的多个克隆镜像可以使用不同的密钥进行加密。
  • 现在可以使用新的持久写入回退缓存。该缓存以日志结构化的方式运行,为后端镜像提供完全的即时一致性。它特别适合于 PMEM 设备。
  • 现在提供了一个 Windows 客户端,形式为 librbd.dllrbd-wnbd(Windows 网络块设备)守护程序。它允许映射、取消映射和操作镜像,类似于 rbd-nbd
  • librbd API 现在提供静默/取消静默挂钩,从而实现协调的快照创建。

RGW 对象存储

  • 初步支持 S3 Select。请参阅 s3-select-feature-table 以获取支持的查询。
  • 存储桶通知主题可以配置为 persistent,其中事件记录在 rados 中,以实现可靠的传递。
  • 存储桶通知可以传递到启用了 SSL 的 AMQP 端点。
  • Lua 脚本可以在请求期间运行,并访问其元数据。
  • SSE-KMS 现在支持 KMIP 作为密钥管理服务。
  • 多站点数据日志现在可以部署在 cls_fifo 上,以避免大型 omap 集群警告并使其修剪更便宜。

CephFS 分布式文件系统

  • CephFS MDS 修改了 RADOS 上的元数据,因此新格式不再与旧版本兼容。无法将文件系统从 Pacific(或更高版本)降级到旧版本。
  • 单个 Ceph 集群中的多个文件系统现在稳定。新的 Ceph 集群默认启用对多个文件系统的支持。现有的集群仍然必须设置 FS 上的 enable_multiple 标志。
  • 一个名为 mds_autoscalerceph-mgr 插件可用,用于根据 max_mds 配置的变化自动部署 MDS 守护程序。预计未来将进一步增强功能,以简化和自动化 MDS 扩展。
  • cephfs-top 是一个新工具,用于查看 CephFS 客户端的性能指标。它处于开发预览质量,并且会有错误。
  • 一个名为 snap_scheduleceph-mgr 插件提供了一个命令行工具集,用于安排 CephFS 文件系统上的快照。
  • Ceph 中的第一类 NFS 网关支持来了!现在可以使用少量命令创建可扩展的(“活动-活动”)NFS 网关集群,导出 CephFS。网关通过 cephadm 部署(未来在 Rook 中)。
  • 多活动 MDS 文件系统擦除现在稳定。不再需要将 max_mds 设置为 1 并等待非零等级停止。只能将擦除命令发送到等级 0:ceph tell mds.:0 scrub start /path ...
  • 临时固定——基于策略的子树固定——被认为是稳定的。mds_export_ephemeral_randommds_export_ephemeral_distributed 现在默认设置为 true。
  • 一个名为 cephfs-mirror 的守护程序可用,用于将 CephFS 文件系统镜像到远程 Ceph 集群。
  • 现在提供了一个 Windows 客户端,用于连接到 CephFS。这通过一个新的 ceph-dokan 工具提供,该工具通过 Dokan 用户空间 API 运行,类似于 FUSE。

从 Octopus 或 Nautilus 升级

在开始之前,请确保您的集群稳定且正常(没有关闭或恢复的 OSD)。(可选,但建议)。

升级 cephadm 集群

如果您的集群使用 cephadm 部署(首次在 Octopus 中引入),则升级过程完全自动化。要启动升级,


    ceph orch upgrade start --ceph-version 16.2.0

使用相同过程升级到未来的次要版本。

可以使用 ceph -s(提供一个简单的进度条)或更详细地使用来监控升级进度


    ceph -W cephadm

可以使用以下命令暂停或恢复升级


    ceph orch upgrade pause   # to pause
    ceph orch upgrade resume  # to resume

或使用以下命令取消


    ceph orch upgrade stop

请注意,取消升级只会停止该过程;无法降级回 Octopus。

升级非 cephadm 集群

如果您的集群正在运行 Octopus (15.2.x),您可能选择先将其转换为使用 cephadm,以便将升级到 Pacific 自动化(如上所述)。

  • 在升级期间设置 `noout` 标志。(可选,但建议)。
    ceph osd set noout

  • 通过安装新软件包并重新启动监视器守护程序来升级监视器。例如,在每个监视器主机上,

         # systemctl restart ceph-mon.target
    

    完成所有监视器的升级后,通过查找监视器映射中的 `octopus` 字符串来验证监视器升级是否完成。

         # ceph mon dump | grep min_mon_release
    

    应报告

         min_mon_release 16 (pacific)
    

    如果未找到,则表示一个或多个监视器尚未升级和重新启动,或者仲裁不包括所有监视器。

  • 通过安装新软件包并重新启动所有管理器守护程序来升级 ceph-mgr 守护程序。例如,在每个管理器主机上,

         # systemctl restart ceph-mgr.target
    

    通过检查 ceph -s 验证 ceph-mgr 守护程序是否正在运行
    `# ceph -s

    ... services: mon: 3 daemons, quorum foo,bar,baz mgr: foo(active), standbys: bar, baz ...`

  • 通过安装新软件包并在所有 OSD 主机上重新启动 ceph-osd 守护程序来升级所有 OSD

         # systemctl restart ceph-osd.target
    

    请注意,如果您正在从 Nautilus 升级,每次 OSD 启动时,它都会执行格式转换,以改进“omap”数据的会计。这可能需要几分钟到几个小时(对于具有大量 omap 数据的 HDD)。可以使用以下命令禁用此自动转换:

         # ceph config set osd bluestore_fsck_quick_fix_on_mount false
    

    可以使用 ceph versionsceph osd versions 命令监控 OSD 升级的进度
    # ceph osd versions { "ceph version 14.2.5 (...) nautilus (stable)": 12, "ceph version 16.2.0 (...) pacific (stable)": 22, }

  • 升级所有 CephFS MDS 守护程序。对于每个 CephFS 文件系统,

    • 禁用 standby_replay
      # ceph fs set allow_standby_replay false

    • 将 ranks 数量减少到 1。(如果您计划稍后恢复它,请先记下原始 MDS 守护程序数量。)
      # ceph status # ceph fs set max_mds 1

    • 定期检查状态,等待集群停用任何非零 ranks
      # ceph status

    • 使用以下命令在适当的主机上关闭所有 standby MDS 守护程序
      # systemctl stop ceph-mds@

    • 确认只有一个 MDS 在线,并且它是您的 FS 的 rank 0
      # ceph status

    • 通过安装新软件包并重新启动守护程序来升级最后一个剩余的 MDS 守护程序
      # systemctl restart ceph-mds.target

    • 重新启动所有已关闭的 standby MDS 守护程序
      # systemctl start ceph-mds.target

    • 恢复卷的原始 `max_mds` 值
      # ceph fs set max_mds

  • 通过升级软件包并在所有主机上重新启动守护程序来升级所有 radosgw 守护程序
    # systemctl restart ceph-radosgw.target

  • 完成升级,禁止 Pacific 之前的 OSD 并启用所有新的 Pacific 专用功能
    # ceph osd require-osd-release pacific

  • 如果您在开始时设置了 noout,请务必使用以下命令清除它
    # ceph osd unset noout

  • 考虑过渡到 cephadm 部署和编排框架,以简化集群管理和未来的升级。

升级后

  • 使用 ceph health 验证集群是否正常。

    如果您的 CRUSH 可调参数早于 Hammer,Ceph 现在将发出健康警告。如果您看到健康警报,您可以还原此更改:

         ceph config set mon mon_crush_min_required_version firefly
    

    如果 Ceph 没有抱怨,我们建议您还将任何现有的 CRUSH 存储桶切换到 straw2,该存储桶是在 Hammer 版本中添加的。如果您有任何“straw”存储桶,这将导致少量数据移动,但通常不会太严重。

         ceph osd getcrushmap -o backup-crushmap
         ceph osd crush set-all-straw-buckets-to-straw2
    

    如果出现问题,可以轻松还原:

         ceph osd setcrushmap -i backup-crushmap
    

    移动到“straw2”存储桶将解锁一些新功能,例如在 Luminous 中添加的 `crush-compat` `balancer ` 模式。

  • 如果您尚未在从 Mimic 升级时执行此操作,我们建议您启用新的 v2 网络协议,并发出以下命令:

         ceph mon enable-msgr2
    

    这将指示绑定到旧默认端口 6789 以进行旧 v1 协议的所有监视器也绑定到新的 3300 v2 协议端口。要查看是否已更新所有监视器,

         ceph mon dump
    

    并验证每个监视器都列出了 `v2:` 和 `v1:` 地址。

  • 考虑启用 遥测模块,将匿名使用统计信息和崩溃信息发送给 Ceph 上游开发人员。要查看将报告的内容(无需实际将任何信息发送给任何人),

         ceph mgr module enable telemetry
         ceph telemetry show
    

    如果您对报告的数据感到满意,可以使用以下命令选择自动报告高级集群元数据

         ceph telemetry on
    

    可以访问公共仪表板,该仪表板汇总了 Ceph 遥测数据,网址为 https://telemetry-public.ceph.com。有关遥测模块的更多信息,请参阅遥测文档。

从 Nautilus 之前的版本升级(如 Mimic 或 Luminous)

在升级到 Pacific 之前,必须先升级到 Nautilus (14.2.z) 或 Octopus (15.2.z)。

重要变更

  • 现在提供了一个新的库 libcephsqlite。它在 RADOS 之上提供了一个 SQLite 虚拟文件系统 (VFS)。数据库和日志条带化在 RADOS 上跨多个对象,仅受 SQLite 客户端限制,具有几乎无限的可扩展性和吞吐量。使用 SQLite 的应用程序可以通过仅指定替代 VFS 来更改为 Ceph VFS。我们预计该库对以前在 RADOS omap 中存储状态的应用程序影响最大,尤其是在没有条带化的应用程序中,这限制了可扩展性。

  • 新的 bluestore_rocksdb_options_annex 配置参数。补充 bluestore_rocksdb_options,允许设置 rocksdb 选项,而无需重复现有的默认值。

  • 配置路径中的 `$pid` 扩展,例如 admin_socket,现在将正确扩展为守护程序 pid,用于 ceph-mdsceph-osd 等命令。以前只有 ceph-fuse/rbd-nbd 使用实际的守护程序 pid 扩展 $pid

  • 某些 radosgw-admin 命令允许的选项已更改。

  • mdlog-listdatalog-listsync-error-list 不接受开始和结束日期,但接受单个可选的开始标记。

  • mdlog-trimdatalog-trimsync-error-trim 仅接受单个标记,该标记给出修剪范围的结束位置。

  • 类似地,日期范围和标记范围已从 RESTful DATALog 和 MDLog 列出和修剪操作中删除。

  • ceph-volume:lvm batch 子命令经过了重大重写。这关闭了许多错误,并改进了可用性,包括大小规范和计算、以及幂等行为和磁盘更换过程。请参阅 https://docs.ceph.net.cn/en/latest/ceph-volume/lvm/batch/ 以获取更多详细信息。

  • 允许的 scrub 时间配置变量已更改。osd_scrub_begin_hourosd_scrub_end_hour 的合法值是 0 - 23。使用 24 现在是非法的。为这两个值指定 0 将允许每个小时执行 scrub。osd_scrub_begin_week_dayosd_scrub_end_week_day 的合法值是 0 - 6。使用 7 现在是非法的。为这两个值指定 0 将允许每周的每一天执行 scrub。

  • volume/nfs: 最近移除了集群 ID 和 nfs-ganesha 常见配置对象中的“ganesha-” 前缀,以确保不同编排后端的一致命名空间。请在升级前删除任何现有的 nfs-ganesha 集群,并在升级到 Pacific 后重新部署新的集群。

  • 一个新的健康检查,DAEMON_OLD_VERSION,将在守护进程上运行不同版本的 Ceph 时发出警告。如果检测到多个版本,它将生成一个健康错误。为了触发健康状况,此状况必须存在超过 mon_warn_older_version_delay(默认设置为 1 周)。这允许大多数升级在不错误地看到警告的情况下进行。如果升级暂停较长时间,可以使用如下方式静默健康状况:ceph health mute DAEMON_OLD_VERSION --sticky。在这种情况下,升级完成后使用 ceph health unmute DAEMON_OLD_VERSION

  • MGR: progress 模块现在可以使用以下命令开启/关闭:ceph progress onceph progress off

  • 添加了一个符合 AWS 标准的 API:“GetTopicAttributes”,用于替换现有的“GetTopic” API。应使用新的 API 来获取用于 bucket 通知的主题信息。

  • librbd: 共享、只读父缓存的配置选项 immutable_object_cache_watermark 现在已更新为属性,以反映在回收空间之前缓存的上限利用率。默认 immutable_object_cache_watermark 现在是 0.9。如果容量达到 90%,守护进程将删除冷缓存。

  • OSD: 引入了选项 osd_fast_shutdown_notify_mon,允许 OSD 在 osd_fast_shutdown 启用时通知监视器正在关闭。这有助于大型集群的监视器日志,这些日志可能会收到许多“osd.X 由 osd.Y 立即报告失败”消息,并混淆工具。

  • mclock 调度器已得到改进。现在提供一组内置配置文件,可在 Ceph 的内部和外部客户端之间提供 QoS。要启用 mclock 调度器,请将配置选项 osd_op_queue 设置为 mclock_scheduler。默认启用 high_client_ops 配置文件,它将比内部客户端操作(例如后台恢复和 scrub)分配更多的 OSD 带宽给外部客户端操作。其他内置配置文件包括 high_recovery_opsbalanced。这些内置配置文件优化了 mclock 调度器提供的 QoS。

  • 均衡器现在默认以 upmap 模式开启。由于 upmap 模式需要 require_min_compat_client luminous,因此新集群默认仅支持 luminous 及更高版本的客户端。现有集群可以通过运行 ceph osd set-require-min-compat-client luminous 来启用 upmap 支持。仍然可以使用 ceph balancer off 命令关闭均衡器。在早期版本中,均衡器包含在 always_on_modules 列表中,但需要使用 ceph balancer on 命令显式开启。

  • cephx 身份验证协议的第 2 版(CEPHX_V2 功能位)现在默认是必需的。它于 2018 年推出,为授权者增加了重放攻击保护,并使 msgr v1 消息签名更强大(CVE-2018-1128 和 CVE-2018-1129)。Jewel 10.2.11、Luminous 12.2.6、Mimic 13.2.1、Nautilus 14.2.0 及更高版本都支持;上游内核 4.9.150、4.14.86、4.19 及更高版本;各种发行版内核,特别是 CentOS 7.6 及更高版本。要启用旧版客户端,请将 cephx_require_versioncephx_service_require_version 配置选项设置为 1。

  • blacklist 已在整个系统中被 blocklist 替换。以下命令已更改

  • ceph osd blacklist ... 现在是 ceph osd blocklist ...

  • ceph osd. dump_blacklist 现在是 ceph osd. dump_blocklist

  • 以下配置选项已更改

  • mon osd blacklist default expire 现在是 mon osd blocklist default expire

  • mon mds blacklist interval 现在是 mon mds blocklist interval

  • mon mgr blacklist interval 现在是 mon mgr blocklist interval

  • rbd blacklist on break lock 现在是 rbd blocklist on break lock

  • rbd blacklist expire seconds 现在是 rbd blocklist expire seconds

  • mds session blacklist on timeout 现在是 mds session blocklist on timeout

  • mds session blacklist on evict 现在是 mds session blocklist on evict

  • 以下 librados API 调用已更改

  • rados_blacklist_add 现在是 rados_blocklist_add;前者将发出弃用警告,并在未来的版本中删除。

  • 在 C++ API 中,rados.blacklist_add 现在是 rados.blocklist_add

  • 以下命令的 JSON 输出现在显示 blocklist 而不是 blacklist

  • ceph osd dump

  • ceph osd. dump_blocklist

  • 监视器现在具有配置选项 mon_allow_pool_size_one,默认情况下已禁用。但是,如果启用,用户现在必须传递 --yes-i-really-mean-it 标志到 osd pool set size 1,如果他们真的确定要配置池大小为 1。

  • ceph pg #.# list_unfound 输出已得到增强,以提供 might_have_unfound 信息,指示哪些 OSD 可能包含未找到的对象。

  • OSD: 添加了一个新的配置选项 osd_compact_on_start,它会在启动时触发 OSD 压缩。将此选项设置为 true 并重新启动 OSD 将导致在启动之前对 OSD 进行离线压缩。

  • OSD: 删除了名为 bdev_nvme_retry_count 的选项。由于在 SPDK v20.07 中,无法轻松访问 bdev_nvme 选项,并且此选项很少使用,因此已被删除。

  • 由于 Alpine Linux 的 aports 存储库已经包含 Ceph 的最新 APKBUILD 脚本,因此删除了与 Alpine 构建相关的脚本、文档和测试。

感谢 Ceph Pacific 版本贡献者:

Sage Weil, Adam C. Emerson, Jason Dillaman, Kefu Chai, Tiago Melo, Yingxin Cheng, Samuel Just, Venky Shankar, Patrick Donnelly, Mahati Chamarthy, Lucian Petrut, Or Ozeri, Yuval Lifshitz, My
kola Golub, Ronen Friedman, Daniel Gryniewicz, Yan, Zheng, Courtney Caldwell, Myoungwon Oh, Igor Fedotov, pcuzner, Xiubo Li, Kiefer Chang, Kotresh HR, Jan Fajerski, Greg Farnum, Rishabh Dav
e, Volker Theile, Alfonso Martínez, Varsha Rao, Casey Bodley, Adam Kupczyk, Anthony D'Atri, Yuan Lu, Milind Changire, Simon Gao, Pritha Srivastava, Abhishek Lekshmanan, Zac Dover, Ramana Ra
ja, Michael Fritch, Matt Benjamin, Tatjana Dehler, Stephan Müller, Đặng Minh Dũng, João Eduardo Luís, Shyamsundar R, Marcus Watts, Aashish Sharma, Xiaoyan Li, Abutalib Aghayev, J. Eric Ivan
cich, Enno Gotthold, Robert Sander, Lenz Grimmer, Daniel-Pivonka, David Zafman, chunmei-liu, Xuehan Xu, Ishan Rai, Neha Ojha, David Galloway, Nathan Cutler, Adam King, Patrick Seidensal, Deepika Upadhyay,
Nizamudeen A, Sridhar Seshasayee, Matthew Oliver, Christopher Odom, Sebastian Krah, Juan Miguel Olmo Martínez, Ernesto Puerta, Brad Hubbard, Prateek Sachan, Kalpesh Pandya, Or Friedmann, Ka
moltat Sirivadhna, Shilpa Jagannath, Avan Thakkar, Sidharth Anupkrishnan, Yin Congmin, Jos Collin, Jeff Layton, gal salomon, Douglas Fuller, Prasad Krishnan, Josh Durgin, Ricardo Marques, T
om Schoonjans, Mark Kogan, Kyr Shatskyy, Yanhu Cao, Ma Jianpeng, Guillaume Abrioux, Xinying Song, Mark Nelson, Alin Gabriel Serdean, Fabrizio D Angelo, Mike Latimer, luo rixin, haoyixing, S
ong Weibin, shenhang, WangPengfei, zhengyin, Wencong Wan, Dan Mick, Tim Serong, Dan van der Ster, Abutalib Aghayev, Rodrigo Severo, Zhang Jiao, Amnon Hanuhov, Matthew Oliver, Hang Li, Mark
Houghton, nSedrickm, Satoru Takeuchi, Erqi Chen, zhangjiao, Yang Honggang, Sunny Kumar, Zhang Shaowen, Marc Schoechlin, dorindabassey, Alex Marangone, Georgios Kyratsas, Tarang Sharma, Ziye
Yang, Ulrich Weigand, Andrew Schoen, Alexandre Bruyelles, Avan Thakkar, Willem Jan Withagen, Zhi Zhang, Kinga Karczewska, Sean Fang, Shraddha Agrawal, Insu Jang, Luis Henriques, Marc Garie
py, Tyler, Boris Ranto, Chunsong Feng, Amrita, Ponnuvel Palaniyappan, Thomas Bechtold, fabrizio8, Wong Hoi Sing Edison, Vikhyat Umrao, Prashant D, Chencan, Ali Maredia, wangyunqing, mhacket
t, Yanhu Cao, jhonxue, Shengming Zhang, cao.leilc, Paul Emmerich, Jean henyxia Wasilewski, Yang Honggang, Kaleb S. Keithley, Jacek Suchenia, ghyer, Seena Fallah, Rachana Patel, Kristoffer G
rönlund, JiangYu, wanghongxu, Jianshen Liu, Yaarit Hatuka, Xie Xingguo, Ken Dreyer, Qiaowei Ren, Liu Lan, Michael Wodniok, Aditya Srivastava, Gerald Yang, Cory Snyder, Franck Bui, Duncan Be
llamy, Niels de Vos, Jonas Jelten, Hualong Feng, Andreas Unterkircher, Robin H. Johnson, Dimitri Savineau, Shon Paz, Nizamudeen A, Liao Pingfang, ianwatsonrh, Bryan Stillwell, Anthony D'Atri
i, Melissa Li, Zengran Zhang, wanghongxu, hzwuhongsong, Haomai Wang, Dehao Shang, 胡玮文, xuxuehan xuxuehan, Soumya Koduri, Roman Penyaev, Rafał Wądołowski, David Disseldorp, caolei, weixin
wei, Oluf Lorenzen, Mauricio Faria de Oliveira, John Wyatt, John Fulton, Jasper Spaans, Jakub Wilk, Ilsoo Byun, Goutham Pacha Ravi, Zeng JH, Yehu, Wido den Hollander, Vladimir Bashkirtsev,
Tianshan Qu, Nick Janus, John Law, Neal Gompa, Liu Shi, Snow Si, Kinga Karczewska, Kevin Meijer, yuliyang_yewu, Vikhyat Umrao, Matthew Vernon, James Page, Gaurav Sitlani, YuanXin, sepia-liu
, rakeshgm, Josh, James Cheng, Harley Gorrell, Hans Bogert, clyso, Benoît Knecht, Xingyi Wu, Mike Christie, Jarett DeAngelis, Aleksei Gutikov, ZhenLiu94, Yuri Weinstein, Yunfei Guan, Shun S
ong, Paul Dee, Daniël Vos, Daniel Vos, Alexander Sushko, ahaase-c4u, Wei Qiaomiao, Robin Lee, diwilli, xenago, Taeuk Kim, Ruan Zitao, Manuel Lausch, Ludwig Nussel, lijiaxu, Kajetan Janiak,
jrshiqi, Janne Johansson, Ivan Jager, Fabian Bonk, Drunkard Zhang, David Turner, Andreas Haase, Yan Jun, SHU Zhenyi, Redick Wang, Luo Runbing, Jerry Pu, Danny Abukalam, Dan Hill, CodingSpid
erFox, Augustinas, zhuo li, ypdai, Yongseok Oh, ylifshit@redhat.com, ybwang0211, Yanfei Xu, Tuan Hoang, Tim, Thomas Serlin, Thomas Goirand, Robbie Williamson, nanquanyuahao, Mitsumasa KONDO
, Mike Perez, Michał Nasiadka, Matthias Bach, Matthew Cengia, Maran Hidskes, Lukas Stockner, Leo Zhang, Junyoung, Sung, jshen28, jinmyeonglee, Jerry Lee, Jeffrey Chu, Jan Fajerski, Iain Buc
law, gk, Florian Florensa, es-gyt, Erwan Velu, Daniel Bevenius, Corey Bryant, Alfredo Sola, Alexey Miasoedov, ahanukov, zhoufeng, peng jiaqi, Luis Henriques, Johannes M. Scheuermann, fanjun
wei, Yuri Weinstein, Yehuda Sadeh, XueYu Bai, Xuehan Xu, Sébastien Han, Sebastian Wagner, Radoslaw Zarzynski, Liu Changcheng, Joshua Schmid, Ilya Dryomov, Eric Jackson, Anurag Bandhu