近期,SPDK团队正式发布了20.07版本,一起来看看都有哪些新功能吧!(温馨提示:英文函数名较长,为了获得更佳的阅读体验,手机上建议横屏阅读~)

新功能

-SPDK CSI驱动:添加了CSI驱动,通过NVMe-oF 或 iSCSI将SPDK引入Kubernetes存储。支持动态卷部署,允许Pods对SPDK存储进行透明访问。此功能目前是实验性的。详情参见以下链接https://github.com/spdk/spdk-csi

-加速框架:添加了compare, dualcast, crc32c的命令,以及对所有插件中命令的批处理支持。详情参见以下链接https://spdk.io/doc/accel_fw.html

-I/O 中止:对NVMe, NVMe-oF 和Bdev添加了中止I/O命令的支持。

-Env PCI 驱动:添加了 env API,为注册和访问轮询模式 PCI 驱动提供更大的灵活性。

-RDMA库:添加了 rdma库,为不同的RDMA provider提供抽象层。两个可用的提供程序分别为verbs 和 mlx5 Direct Verbs.

-spdk_dd:添加了一个应用程序,用于在文件和SPDK bdevs之间高效地复制数据。

-bdevperf config: 添加了对类似于FIO的配置文件的支持,允许对更复杂的用例进行基准测试。详情参见以下链接https://spdk.io/doc/bdevperf.html

-DPDK:增加了DPDK 20.05的支持。

查看完整版本,请点击"阅读原文"或访问以下链接

https://github.com/spdk/spdk/releases/tag/v20.07

特别感谢

本次版本包含来自44位作者的842次提交,其中包含超过44,000行代码更改。我们尤其要感谢在v20.07版本中第一次提交代码的社区贡献者:

              Dayu Liu

              Haichao Li

              Jörg Thalheim

              Kyle Zhang

              Monica Kenguva

              Ntsaravana

              Peng Yu

              Simon A. F. Lund

              Sochin Jiang

              Sven Breuner

              Wenhua Liu

              Yibo Cai

SPDK开源社区

衷心感谢大家的参与和贡献!

详细的发布说明如下

accel

  • 添加了新的API spdk_accel_get_capabilities,允许应用程序查询当前启用的accel引擎后端的功能。

  • 通过spdk_accel_submit_crc32c添加了新功能CRC-32C。

  • 软件加速引擎添加了CRC-32C支持。

  • 通过spdk_accel_submit_compare添加了新功能compare。

  • 软件加速引擎的实现增加了对compare操作的支持。

  • accel_engine.h添加了若干API,以支持批量提交操作。

  • accel_engine.h添加了若干API,以支持dualcast操作。

accel_fw

  • 更新了accel_fw,不再需要应用程序代其分配accel_task。目前,所有公共API都把回调arg作为参数(以前的参数是accel_task)。

  • 不再使用accel_fw API spdk_accel_task_size,已将其移除。

  • 更新了accel_fw,以支持compare, dualcast, crc32c操作

  • accel_fw引入了对所有插件中所有命令的批处理支持。详情参阅文档。

bdev

  • 添加了新的API spdk_bdev_abort 来提交中止请求,中止其回调上下文与给定通道上的bdev匹配的所有I / O。

build

  • fio插件现在可以编译为build/fio,命名为spdk_bdev和spdk_nvme。

  • 现有的Fio配置文件将需要更新。

dpdk

  • 最新的DPDK子模块为DPDK 20.05版本。

env

  • 新的公共API spdk_env_get_primary_core 返回SPDK进程中主核的index。

  • 添加了若干新的API,为注册和访问轮询模式PCI驱动程序提供更大的灵活性。详情参见env.h

idxd

  • 更新了accel_fw的idxd库和插件模块,以支持所有accel_fw命令以及批处理。库和插件模块都能支持批处理。

  • 添加了对CRC-32C的IDXD引擎支持。

ioat

  • 添加了新的API spdk_ioat_get_max_descriptors。

nvme

  • 在spdk_nvme_ctrlr_opts 结构中添加了opts_size元素,以解决不同SPDK版本之间的ABI兼容性问题。

  • 添加了新的API spdk_nvme_ctrlr_cmd_abort_ext ,以中止先前提交的回调参数匹配的命令。

  • 公共API添加了便捷函数spdk_nvme_print_command 和spdk_nvme-print_completion 。

  • 新函数spdk_nvmf_cuse_update_namespaces更新了NVMe控制器的cuse 表现形式。

  • nvme的传输接口添加了新函数qpair_iterate_requests 。传输接口的所有实现都必须实现该函数。

 

nvmf

  • NVMe-oF Target不再支持连接调度配置,始终使用以前称为“传输”的调度。 

  • spdk_nvmf_tgt_accept 不再把函数指针用作参数。新的连接由相应的传输自动分配给轮询组。此外,spdk_nvmf_transport_ops已更改,接受函数指针不再将函数指针作为参数。此前传输要调用回调时,现在都应调用spdk_nvmf_tgt_new_qpair。

  • 现在,NVMe-oF Target支持中止任何一项已提交的NVM 或管理员命令。在此前,NVMe-oF Target只能中止异步事件请求命令。

rdma

  • 添加了新的rdma库,它是不同RDMA提供程序上的抽象层。两个可用应用程序分别是verbs(默认情况下,在启用RDMA或显式启用--with-rdma = verbs时使用)和mlx5 Direct Verbs (又名DV,由--with-rdma = mlx5_dv启用)。

  • 使用mlx5_dv需要在系统上安装libmlx5。

rpc

  • 已弃用rpc.py 脚本接受的nvmf_create_transport RPC命令的参数-p或--max-qpairs-per-ctrlr。添加了新参数-m或--max-io-qpairs-per-ctrlr。

  • 添加了sock_impl_get_options和sock_impl_set_options RPC方法。

  • 命令行参数-r和--rpc-socket将不再接受TCP端口。RPC服务器现在必须在Unix域套接字上启动。现在,用户要负责在网络上公开RPC并(在必要时)提供适当的身份验证。

  • RPC bdev_set_options添加了新的选项bdev_auto_examine,用于控制 bdev 模块的自动检查功能。

  • 添加了新的RPCsock_impl_get_options 和sock_impl_set_options ,以公开新的套接字功能。有关详细信息,请参阅sock部分。

sock

  • 添加了spdk_sock_impl_get_opts 和spdk_sock_impl_set_opts 函数,用于设置/获取套接字层配置选项,可以为每个实现独立设置选项。

  • 添加了recv_buf_size 和 'send_buf_size'套接字层选项,它们仅用于posix实现。

  • 添加了基于uring的套接字实现,该代码位于module/sock/uring中。此功能仅在内核版本大于5.4.3的Linux中可用。当前,我们的CI pool添加了针对iSCSI目标的套接字测试以及SPDK NVMe-oF TCP传输的测试。

  • 添加了enable_recv_pipe socket套接字层选项,以允许在接收时禁用双重缓冲。

    新选项仅用于posix实现。

  • 添加了enable_zerocopy_send套接字层选项,以允许在发送时禁用零拷贝流。

    新选项仅用于posix实现。

util

  • 一些此前公开的CRC32函数已从公共API中删除,包括spdk_crc32_update, spdk_crc32_table_init 和the spdk_crc32_table struct.

vhost

  • 删除了函数spdk_vhost_blk_get_dev 。                   

SPDK发布v20.07版本

转载须知

DPDK与SPDK开源社区公众号文章转载声明

推荐阅读

SPDK发布v20.04版本

SPDK与io_uring新异步IO机制

Iostat.py: 输出SPDK Bdev IO子系统性能指标

SPDK发布v20.07版本

SPDK发布v20.07版本

点击“阅读原文”,查看20.07 release原文~

相关文章: