首页 > 编程知识 正文

苹果6sp刚发布价格,21.9.1

时间:2023-05-05 11:41:06 阅读:22130 作者:752

SPDK发布了V19.10的新版本。

新版本的性能大幅提高:

NVMe over TCPTarget优化将单个CPU核心的性能提高30%

SPDK NVMe的初始化时间改进了10倍,提高了重新启动APP应用程序的可维护性

此版本包含以下新功能

分区bdev API :区域是bdev接口的扩展。 这个概念来自ATA/SCSI,目前用作NVMe TP。 现在可以联系Bdev检查区域语义。

OpalBdev :为了支持按opal规范管理NVMe自加密驱动器,添加了新的OpalBdev。 这个功能现在是实验性的。

NVMe字符设备:添加了基于CUSE库的NVMe字符设备实现。 可以在Linux内核中创建控制器和命名空间,即/dev/NVMeXnY的nvme设备节点。 这些文字设备可以在nvme-cli等工具中使用。 这个功能现在是实验性的。

在RPC上装载BlobFS—在RPC上装载blob fs并将其添加到主机路径中。

ocf :添加了对ocfv 19.06的支持。 添加了对只写、禁用写和回写模式的支持。

dpdk :添加了对dpdk 19.08的支持。

RPC名称不同组件之间简化的RPC调用的名称。 可以使用以前的RPC名称,但不推荐。

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/http://www.Sina.com /

http://www.Sina.com/http://www.Sina.com /

rpc在此版本中,许多SPDK的rpc被重命名为更一致、更直观的名称。

旧名称将继续使用,但会显示销毁警告。

' bdev_nvme_set_options'RPC方法的可选参数'--arbitration-burst '和'-- low/medium/high-priority-wew

在' construct_null_bdev'RPC方法中添加了可选参数'--md-size '。

在' construct_null_bdev'RPC方法中添加了可选参数'--dif-type '和'--dif-is-head-of-md '。

为了检测指定的bdev中是否存在blobfs,添加了blobfs_detectRPC方法。

为了在指定的bdev上生成blobfs,添加了blobfs_createRPC方法。

添加了blobfs_mountRPC方法,以便可以通过FUSE将指定bdev上的blobfs装载到主机路径上。

然后,在主机路径上,用户可以直接执行映射到blobfs的文件操作。

bdev将新参数cdw0添加到spdk _ bdev _ io _ complete _ nvme _ status ()和spdk_bdev_io_get_nvme_status )中

添加了spdk_bdev_get_write_unit_size ()以获取写入所需的逻辑块数。

已将新的区域相关字段添加到get_bdevsRPC调用的结果中。

zoned :指示设备是分区设备还是常规块设备

zone_size :单个区域中的块数

max_open_zones :最大开放区域数

optimal_open_zones :开放区域的最佳数量此zoned字段是布尔值,并且始终存在。 其馀字段仅适用于分区的bdev。

添加了新功能spdk_bdev_open_ext,取消了spdk_bdev_open功能。

新的open函数必须提供由异步事件(如bdev删除)调用的回调函数。 spdk_bdev_open_ext函数接受bdev名称作为参数,而不是bdev结构,以避免在“根据名称检索结构”调用与实际打开的bdev之间删除bdev时发生冲突。

添加了新的“调整大小”事件,通知您块设备的块计数属性发生了更改。

只有在使用spdk_bdev_open_ext功能打开块设备时,才会发送事件。

zonebdevAPI向分区的bdev添加了新的公共标题。 分区bdev是bdev接口的扩展。

spdk_bdev_get_zone_size (,spdk_bdev_get_max_open_zones )、spdk_bdev_get_optimal_ ),和

为获取分区的设备信息而添加的API。

spdk_bdev_get_z

one_info()添加了API,以检索有关分区设备中区域的信息。
添加了spdk_bdev_zone_management()用于更改区域状态的API。
spdk_bdev_zone_append()并且spdk_bdev_zone_append_with_md()添加了用于将数据追加到区域的API 。
添加了spdk_bdev_io_get_append location()用于检索I / O附加位置的功能。
添加了spdk_bdev_is_zoned()用于检查bdev是否支持分区名称空间语义的功能。

Opal bdev 

实验:已添加新的Opal bdev,以支持通过Opal规范支持对NVMe自加密驱动器的管理。如果包含该命名空间的控制器支持Opal ,则用户可以从NVMe命名空间bdev创建opal bdev 。当前仅支持名称空间ID = 1。下面的RPC已添加到支持Opal:bdev_nvme_opal_init,bdev_nvme_opal_revert,bdev_opal_create,bdev_opal_delete,bdev_opal_get_info,
bdev_opal_new_user,bdev_opal_set_lock_state。
它不支持在应用程序重启后重新创建Opal bdev。该bdev模块应被视为非常试验性的,并且RPC在将来的发行版中可能会发生重大变化。

delay bdev

添加了bdev_delay_update_latency以允许用户更新给定的延迟bdev的延时值。

compress bdev

一个新的RPC bdev_compress_get_orphans被添加到compress bdevs列表中,由于缺少持久化Metadata文件而无法加载。在这种情况下只能删除它们。

null bdev

元数据支持已添加到Null bdev模块。

保护信息支持已添加到Null bdev模块。

nvme

添加no_shn_notification到NVMe控制器初始化选项后,用户可以为NVMe控制器启用它。启用该选项后,控制器将不会执行关闭过程,而只是禁用控制器,用户可以稍后再次启动其应用程序以将控制器初始化为就绪状态。

添加了一个控制器标志SPDK_NVME_CTRLR_WRR_SUPPORTED,以指示控制器
可以支持加权轮循仲裁功能与提交队列。

为仲裁功能增加arbitration_burst选项,并增加三个
low/medium/high_priority_weight加权轮循仲裁选项。

新增spdk_nvme_ns_cmd_write_uncorrectable。

添加了新的错误处理和报告功能。这包括几个新的API函数,用以在qpair或
控制器发生故障时促进应用程序恢复。

spdk_nvme_ctrlr_reconnect_io_qpair-重新连接失败的I / O qpair。
spdk_nvme_ctrlr_set_trid-设置现有控制器的Trid。在故障转移情况下可以用来更改trid。

spdk_nvme_ctrlr_is_failed-返回控制器的失败状态。
spdk_nvme_ctrlr_fail-强制控制器进入故障状态。

修改了多个API函数的返回行为,以便在qpair失败时更好地向应用程序指示。此功能列表包括:

spdk_nvme_qpair_process_completions
spdk_nvme_ns_cmd_*
spdk_nvme_ctrlr_process_admin_completions
spdk_nvme_ctrlr_cmd_*

现在,当这些函数在其上运行的qpair或控制器发生故障时,它们将返回-ENXIO 。

实验:添加了NVMe字符设备支持,以允许在Linux内核中为控制器以及命名空间创建NVMe设备节点,并照常从Linux环境中处理ioctl请求。

nvmf

该spdk_nvmf_tgt_create函数现在接受类型的对象spdk_nvmf_target_opts
作为其唯一参数。这个新结构包含先前传递给该函数的max_subsystems参数。

添加了新的公共API函数spdk_nvmf_get_tgt,该函数允许用户通过提供对象名称来检索指向该spdk_nvmf_tgt对象的指针。在RPC或应用程序仅创建单个目标的特殊情况下,此函数可以接受空名称参数,并将返回唯一可用的目标。

现在,大多数NVMe-oF RPC都接受可选的tgt_name参数。这将使这些RPC与创建多个目标的应用程序一起使用。

三个新的NVMe-oF RPC被添加,nvmf_create_target,nvmf_delete_target和nvmf_get_targets。这些新的RPC提供了用于管理多个目标对象的基本接口。在SPDK中,目标对象定义了唯一的发现服务。从此版本开始,这些RPC不能与树状SPDK目标应用程序spdk_tgt和nvmf_tgt一起使用,它们使用单个全局目标结构。因此,它们不包含在scripts / rpc.py中。还添加了三个新的标头函数,以帮助处理多个目标。

spdk_nvmf_tgt_get_name将目标指针作为参数并返回其可读名称。
spdk_nvmf_get_first_target不接受任何参数,并返回全局列表中的第一个目标。
spdk_nvmf_get_next_tgt将目标指针用作参数并返回全局列表中的下一个指针。

spdk_nvmf_tgt_accept接受额外的参数,允许传递任意的new_qpair回调信息。当具有多个nvmf目标或不适合从全局变量检索上下文信息时,这将简化代码。

blobstore

新功能spdk_bdev_create_bs_dev_from_desc已添加,并且不建议使用spdk_bdev_create_bs_dev功能。
新的create函数可以与spdk_bdev_open_ext函数协同使用,后者提供回调函数,可以通过异步事件(如bdev移除)调用该回调函数。

blobfs_bdev

添加了一个新的blobfs模块bdev,以简化bdev在bdev上的操作。

添加spdk_blobfs_bdev_detect函数来检测给定块上是否存在blobfs设备。

添加spdk_blobfs_bdev_create函数来在给定块设备上创建blobfs。

通过FUSE 将函数spdk_blobfs_bdev_mount添加到给定块设备上的blobfs挂载到主机路径,然后,专门为一个挂载点创建一个新线程来处理blobfs API的FUSE请求。

build

选项将FUSE组件构建到blobfs_bdev模块中,以便安装blobfs文件系统。
这需要安装libfuse3。默认情况下,它是禁用的。如果./configure与--with-fuse选项一起运行,它将被启用。

iSCSI

iSCSI Portal (入口)将不再与cpumask关联。新的连接的调度转向更加动态的机制。

添加一个新的RPCiscsi_portal_group_set_auth来设置特定于现有iSCSI Portal组的CHAP的认证。此RPC通过iSCSI Portal组的全局参数覆盖设置。

socket

添加spdk_sock_is_connected以检查套接字当前是否已连接。
spdk_sock_group_poll现在返回成功事件的数量。

env

添加spdk_pci_device_unclaim()了清理pciq声明文件的功能。

event

framework_start_initRPC在初始化期间,不再因错误而停止应用程序。

DPDK

将DPDK子模块更新为DPDK 19.08。

ocf

将OCF子模块更新为OCF v19.06

与更新一起,添加了新的缓存模式“只写”。

通过RPC添加了新的缓存模式,可以使用wi-写入无效和wa-写入。

新版本的OCF提供了完全异步的管理API。

特别感谢

本次版本包含来自44位作者的845次提交,其中包含超过44k行代码更改。我们特别要感谢所有第一次提交代码的贡献者:

Benjamin Saunders

Kay Bouché

Marcin Dzięgielewski

Michael Haeuptle

Michal Ben Haim

Tom Nabarro

Yang Fan

Yan Wang

Yao Liu

SPDK开源社区衷心感谢大家的贡献和努力!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。