SPDK NVMe-oF多路径结合Delay Bdev使用场景

本文介绍了SPDK NVMe-oF的多路径模式,包括其优势、工作原理和错误恢复机制。通过示例展示了如何在SPDK中使用Delay Bdev实现路径切换和状态更改,探讨了I/O超时处理和多路径策略。
摘要由CSDN通过智能技术生成

背景介绍

SPDK NVMe bdev模块支持两种模式:故障切换和多路径。故障切换模式只维护一个活动连接,只在切换期间连接备用路径。这可能会导致I/O延迟和上层调用报告I/O失败,但在任何给定时间都只维护一个活动连接的数量。在多路径模式下,每条路径都会维护主动连接,并根据”主动-被动”或”主动-主动”的策略使用主动连接。多路径模式还支持非对称命名空间访问(ANA),并使用它来制定策略决策。

为什么选择多路径

多路径技术支持在服务器和存储设备之间创建一条以上的物理路径。这样做可以为存储提供更有弹性的连接(向下的路径不会阻碍连接),也可以聚合存储带宽以提高性能。多路径实现了更好的容错和提供更高的性能。

什么是SPDK中的多路径

➢ 多路径模式

SPDK通过相同的NVMe bdev设备名称多次调用bdev_nvme_attach_controller RPC,用户可以在多个不同路径上建立连接到NVMe bdev的同一个NVMe-oF子系统的连接。此外,在连接第二条或更多其它路径时,此 RPC的多路径参数必须设置为“多路径(multipath)”。

bdev_nvme_attach_controller RPC每创建一条路径,都会创建一个NVMe-oF控制器。然后该控制器提供的命名空间集会被发现。每发现一个命名空间,NVMe bdev模块都会尝试将其与现有NVMe bdev进行匹配。如果找到匹配项,则会将给定的命名空间添加为备用路径。如果未找到匹配项,则会创建一个新的NVMe bdev。

I/O和admin qpairs是访问NVMe-oF控制器所必需的条件。创建一个admin qpair,并由所有SPDK线程共享。为了不使用锁提交I/O,将为每个SPDK线程创建一个I/O qpair,作为NVMe-oF控制器的I/O通道的动态上下文。

对于每个SPDK线程,NVMe bdev模块都会为NVMe bdev创建一个I/O通道,并将其提供给上层应用。NVMe bdev的I/O通道具有每个命名空间的I/O路径。I/O路径是向命名空间提交I/O的附加抽象,由I/O qpair上下文和命名空间组成。如果NVMe bdev具有多个命名空间,则NVMe bdev的I/O通道会有一系列的多条I/O路径。NVMe bdev的I/O通道具有重试I/O列表和路径选择策略的特性。

➢ 路径错误恢复

如果NVMe 驱动程序在qpair上检测到错误,它将断开qpair连接,并将错误通知给NVMe bdev模块。然后NVMe bdev模块开始重置相应的NVMe-oF控制器。NVMe-oF控制器重置包括以下步骤:1) 断开连接并删除所有I/O qpair;2) 断开admin qpair连接;3) 连接admin qpair;4) 配置 NVMe-oF 控制器;5) 创建并连接所有 I/O qpair。

如果步骤3、4、5失败,重置工作会恢复到步骤3,然后在reconnect_delay_sec秒后重试。如果在ctrlr_loss_timeout_sec 秒内未恢复成功,将自动删除NVMe-oF控制器。如果ctrlr_loss_timeout_sec 为-1,则会无限期重试。

➢ I/O 超时

NVMe驱动程序为已提交的I/O支持I/O 超时。当NVMe驱动程序通知I/O超时时,NVMe bdev模块会提供三种操作:中止(ABORT)、重置(RESET)或无(NONE)。用户可以使用选项action_on_timeout来设置超时操作。用户可以通过全局选项,timeout_us和timeout_admin_us,为I/O命令和管理命令分别设置不同的超时值。

如果选择中止(ABORT),NVMe bdev 模块会尝试中止超时的I/O,如果中止失败,它将启动NVMe-oF控制器重置。如果选择重置(RESET),NVMe bdev模块会启动NVMe-oF控制器重置。

如何通过Delay Bdev在SPDK中使用多路径

➢ 拓扑

举个例子来演示如何使用delay bdev实现多路径的路径切换和状态更改。我们使用SPDK NVMe-oF TCP目标和 SPDK NVMe-oF TCP启动器作为示例。拓扑如下所示。这两台物理机分别充当NVMe-oF目标和NVMe-oF启动器。这两台机器通过100G NIC电缆与E810 NIC背靠背直连。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值