NVMeoverFabric中转发报文的方法、设备和系统与流程

文档序号:13985256
NVMe over Fabric中转发报文的方法、设备和系统与流程

本发明涉及信息技术领域,特别涉及一种网络(英文:fabric)上的非易失性存储器标准(英文:Non-Volatile Memory Express,NVMe),NVMe over Fabric,中转发报文的方法、设备和系统。



背景技术:

NVMe规定了以快速外围部件互连标准(英文:Peripheral Component Interconnect Express,PCIe)总线连接的NVMe设备和主机之间的传输机制。

已经发布的PCIe架构的NVMe标准在产业界取得了巨大的成功之后,业界很快希望将 NVMe标准扩展到数据中心领域。但受限于数据中心领域PCIe协议本身的缺陷(扩展性、远距离连接等),产业界正在推动将NVMe协议运行在网络上,以提供更灵活的更广泛的应用。 NVMe协议运行的网络包括但不限于沃普(英文:iWarp),基于融合以太的远程内存直接访问协议(英文:Remote Direct Memory Access Over Converged Ethernet,ROCE),无限带宽(英文:Infiniband),光纤通道(英文:Fiber Channel,FC),全路径(英文: Omni-Path)等。业界将NVMe协议运行在iWarp、ROCE、Infiniband、FC和Omni-Path等网络上的架构称为NVMe over Fabric(或NVMe-oF)。

在NVMe over Fabric架构中,主机负责发起数据的读写。目标存储设备负责接收并且执行主机发送的命令。在主机和目标存储设备之间可以有多条路径来实现命令和数据的传输。在主机的操作系统中集成多路径软件可以实现对多条路径的管理和控制。

为了在主机的操作系统中集成多路径软件,主机要为不同主机的操作系统版本开发相应的多路径软件,实现方式的复杂。



技术实现要素:

本申请提供一种NVMe over Fabric中转发报文的方法、设备和系统,以简化NVMe over Fabric中多路径控制的实现方式。

一方面,本申请提供了一种NVMe over Fabric中的转发处理设备,所述转发处理设备包括处理器、总线端口和至少两个网络端口,所述总线端口与快速外围部件互连标准PCIe 总线连接,所述至少两个网络端口分别与网络连接;所述处理器用于:

通过所述总线端口接收所述NVMe over Fabric中控制设备发送的第一报文,获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,所述输入输出命令或管理命令包括需要访问的目标硬盘的标识;

根据所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令生成第二报文,所述第二报文是执行所述输入输出命令或管理命令的报文;

根据所述目标硬盘的标识,获取所述至少两个网络端口中到达所述目标硬盘的多个网络端口,并在所述多个网络端口中选择转发所述第二报文的网络端口;

将所述第二报文封装为符合NVMe over Fabric转发要求的报文,通过选择的所述网络端口发送封装后的所述第二报文。

通过上述转发处理设备,NVMe over Fabric中的控制设备不需要安装多路径软件,省去了在控制设备安装多路径软件需要匹配各种可能的操作系统所带来的复杂性。并且,控制设备只需安装通用的NVMe标准驱动,即可实现NVMe输入输出命令和管理命令的下发,不需要针对NVMe over Fabric的网络的具体转发要求对操作系统做适应调整,简化了控制设备的维护成本。

可选的,所述网络端口通过iWarp、ROCE、Infiniband、FC或Omni-Path等网络与目标存储设备连接。

可选的,所述网络端口与所述目标存储设备之间通过一个以上的交换机连接。

可选的,所述输入输出命令用于向所述目标硬盘写入数据或从所述目标硬盘读取数据。所述管理命令包括但不限于:读取目标硬盘的设备信息,增加或删除目标硬盘等。

可选的,所述符合NVMe协议的输入输出命令或管理命令可以是符合NVMe协议字段或净荷。

在一个可能的设计中,所述总线端口支持PCIe协议;

所述总线端口,用于接收所述控制设备发送的所述第一报文,获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,并将获取到的所述第一报文中的符合NVMe 协议的输入输出命令或管理命令发送给所述处理器;或,

所述总线端口,用于接收所述控制设备发送的所述第一报文,将所述第一报文发送给所述处理器,由所述处理器获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令。

在一个可能的设计中,当所述第一报文中包括写数据命令时,所述处理器将所述写数据命令携带的需要存储的数据在所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述需要存储的数据的存储空间的地址,以生成所述第二报文;或,

当所述第一报文中包括管理命令且所述管理命令需要写管理数据到目标硬盘时,所述处理器将所述管理命令携带的所述管理数据在所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述管理数据的存储空间的地址,以生成所述第二报文。

可选的,所述转发处理设备中还包括主存,所述处理器根据所述写数据命令中包括的所述控制设备中存储所述需要存储的数据的存储空间的地址,从所述控制设备中获取所述需要存储的数据并保存在主存中,并将主存中存储所述需要存储的数据的地址,作为所述第二报文中包括的所述转发处理设备中存储所述需要存储的数据的存储空间的地址。

可选的,所述主存也可以通过独立的现场可编程门阵列(英文:Field Programmable Gate Array,FPGA)芯片来实现。

可选的,所述处理器从所述控制设备获取所述需要存储的数据,可以通过远程直接数据存取(英文:Remote Direct Memory Access,RDMA)的方式或直接内存访问(英文:Direct Memory Access,DMA)的方式传输。

在一个可能的设计中,当所述第一报文中包括读数据命令时,所述处理器将所述读数据命令中携带的需要读取的数据要写入所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述需要读取的数据的存储空间的地址,以生成所述第二报文;或,

当所述第一报文中包括管理命令且所述管理命令需要读取管理数据时,所述处理器将所述管理命令中携带的所述管理数据要写入所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述管理数据的存储空间的地址,以生成所述第二报文。

可选的,当所述转发处理设备接收到所述目标存储设备返回的报文时,所述处理器对接收到的报文进行解封装。即根据所述转发处理设备与所述目标存储设备之间所采用的具体的网络协议解封装接收到的所述目标存储设备返回的报文,并将获取到的命令信息或数据信息返回给所述控制设备。

可选的,当所述管理命令不需要读取或写入相关配置信息时,所述处理器对所述管理命令可以不做修改,直接生成用于执行所述管理命令的第二报文。当需要读写的数据在所述输入输出命令中直接携带时,所述处理器可以不用修改读写数据的地址,直接生成用于执行所述第一报文中符合NVMe协议的输入输出命令的第二报文。

可选的,所述处理器可以根据所述目标硬盘的标识,获取到达所述目标硬盘的全部或部分网络端口。

可选的,所述处理器,可以根据预设的选择策略,从所述到达所述目标硬盘的网络端口中选择转发所述第二报文的网络端口。其中,所述选择策略包括但不限于:主备选择策略、负荷分担、优先级策略或服务质量(英文:Quality of Service,QOS)策略。

其中,所述主备选择策略包括:默认选择预先设置的主路经中的网络端口作为发送的网络端口,当主路经出现故障后选择备用路径中的网络端口作为发送的网络端口,以及在主路径的故障解除后选择主路经中的网络端口作为发送的网络端口。

所述负荷分担策略包括:在两条以上的路径中选择至少两条路径,将至少两条路径中的每个网络端口都作为发送的网络端口。

所述优先级策略包括:对于报文中包括优先级信息的,根据报文中包括的优先级信息,选择与报文中优先级相对应的路径中的网络端口作为发送的网络端口。优先级高的路径,传输的可靠性和/或效率高。

所述QOS策略包括:对于报文中包括QOS信息的,根据报文中包括的QOS信息,选择与报文中QOS等级相对应的路径中的网络端口作为发送的网络端口。QOS高的路径,传输的可靠性和/或效率高。

在一个可能的设计中,所述将所述第二报文封装为符合NVMe over Fabric转发要求的报文包括:

根据所述转发处理设备与所述存储设备之间采用的网络协议,封装为符合所述转发处理设备与所述存储设备之间网络协议要求的报文。

可选的,所述处理器还用于对所述目标存储设备中硬盘的发现、建链、断链等管理,提供带内或是带外的管理功能接口等。

可选的,当所述处理器通过带内管理时,所述处理器通过所述总线端口或其它端口接收所述控制设备发送的管理命令,并根据接收到的管理命令实现配置和管理。当所述处理器通过带外管理时,所述处理器通过主板管理控制单元(英文:Baseboard Management Controller,BMC)接收所述控制设备发送的管理命令。

可选的,所述控制设备下发的管理或配置命令包括但不限于所述转发处理设备的初始化、接口配置,对目标存储设备中硬盘的发现、建链、断链等管理、鉴权等。

另一方面,本申请提供了一种NVMe over Fabric中的系统,所述系统包括控制设备和转发处理设备,所述转发处理设备与所述控制设备通过快速外围部件互连标准PCIe总线连接;

所述控制设备,用于通过PCIe总线发送第一报文给所述转发处理设备,所述第一报文包括符合NVMe协议的输入输出命令或管理命令,所述输入输出命令或管理命令包括需要访问的目标硬盘的标识;

所述转发处理设备,用于接收所述第一报文,获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,以及所述目标硬盘的标识;根据所述符合NVMe协议的输入输出命令或管理命令生成第二报文,所述第二报文是执行所述输入输出命令或管理命令的报文;根据所述目标硬盘的标识,获取所述至少两个网络端口中到达所述目标硬盘的多个网络端口,并在所述多个网络端口中选择转发所述第二报文的网络端口,并将所述第二报文封装为符合NVMe over Fabric转发要求的报文,通过选择的所述网络端口发送封装后的所述第二报文。

通过上述系统,NVMe over Fabric中的控制设备不需要安装多路径软件,省去了在控制设备安装多路径软件需要匹配各种可能的操作系统所带来的复杂性。并且,控制设备只需安装通用的NVMe标准驱动,即可实现NVMe输入输出命令和管理命令的下发,不需要针对 NVMe over Fabric的网络的具体转发要求对操作系统做适应调整,简化了控制设备的维护成本。

在一个可能的设计中,所述转发处理设备包括处理器、总线端口和至少两个网络端口,所述总线端口与PCIe总线连接,所述至少两个网络端口与网络连接;所述处理器用于:

通过所述总线端口接收所述控制设备发送的第一报文,获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令;

根据所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令生成第二报文,所述第二报文是执行所述输入输出命令或管理命令的报文;

根据所述目标硬盘的标识,获取到达所述目标硬盘的网络端口,从所述到达所述目标硬盘的网络端口中选择转发所述第二报文的网络端口;

将所述第二报文封装为符合NVMe over Fabric转发要求的报文,通过选择的所述网络端口发送封装后的所述第二报文。

可选的,所述网络端口通过iWarp、ROCE、Infiniband、FC或Omni-Path等网络与目标存储设备连接。

可选的,所述网络端口与所述目标存储设备之间通过一个以上的交换机连接。

可选的,所述输入输出命令用于向所述目标硬盘写入数据或从所述目标硬盘读取数据。所述管理命令包括但不限于:读取目标硬盘的设备信息,增加或删除目标硬盘等。

可选的,所述符合NVMe协议的输入输出命令或管理命令可以是符合NVMe协议字段或净荷。

在一个可能的设计中,所述总线端口支持快速外围部件互连PCIe协议;

所述总线端口,用于接收所述控制设备发送的所述第一报文,获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,并将获取到的所述第一报文中的符合NVMe 协议的输入输出命令或管理命令发送给所述处理器;或,

所述总线端口,用于接收所述控制设备发送的所述第一报文,将所述第一报文发送给所述处理器,由所述处理器获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令。

在一个可能的设计中,当所述第一报文中包括写数据命令时,所述处理器将所述写数据命令携带的需要存储的数据在所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述需要存储的数据的存储空间的地址,以生成所述第二报文;或,

当所述第一报文中包括管理命令且所述管理命令需要写管理数据到目标硬盘时,所述处理器将所述管理命令携带的所述管理数据在所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述管理数据的存储空间的地址,以生成所述第二报文。

可选的,所述转发处理设备中还包括主存,所述处理器根据所述写数据命令中包括的所述控制设备中存储所述需要存储的数据的存储空间的地址,从所述控制设备中获取所述需要存储的数据并保存在主存中,并将主存中存储所述需要存储的数据的地址,作为所述第二报文中包括的所述转发处理设备中存储所述需要存储的数据的存储空间的地址。

可选的,所述主存也可以通过独FPGA芯片来实现。

可选的,所述处理器从所述控制设备获取所述需要存储的数据,可以通过RDMA的方式或直DMA的方式传输。

在一个可能的设计中,当所述第一报文中包括读数据命令时,所述处理器将所述读数据命令中携带的需要读取的数据要写入所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述需要读取的数据的存储空间的地址,以生成所述第二报文;或,

当所述第一报文中包括管理命令且所述管理命令需要读取管理数据时,所述处理器将所述管理命令中携带的所述管理数据要写入所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述管理数据的存储空间的地址,以生成所述第二报文。

可选的,当所述转发处理设备接收到所述目标存储设备返回的报文时,所述处理器对接收到的报文进行解封装。即根据所述转发处理设备与所述目标存储设备之间所采用的具体的网络协议解封装接收到的所述目标存储设备返回的报文,并将获取到的命令信息或数据信息返回给所述控制设备。

可选的,当所述管理命令不需要读取或写入相关配置信息时,所述处理器对所述管理命令可以不做修改,直接生成用于执行所述管理命令的第二报文。当需要读写的数据在所述输入输出命令中直接携带时,所述处理器可以不用修改读写数据的地址,直接生成用于执行所述第一报文中符合NVMe协议的输入输出命令的第二报文。

可选的,所述处理器可以根据所述目标硬盘的标识,获取到达所述目标硬盘的全部或部分网络端口。

可选的,所述处理器,可以根据预设的选择策略,从所述到达所述目标硬盘的网络端口中选择转发所述第二报文的网络端口。其中,所述选择策略包括但不限于:主备选择策略、负荷分担、优先级策略或QOS策略。

在一个可能的设计中,所述将所述第二报文封装为符合NVMe over Fabric转发要求的报文包括:

根据所述转发处理设备与所述存储设备之间采用的网络协议,封装为符合所述转发处理设备与所述存储设备之间网络协议要求的报文。

可选的,所述处理器还用于对所述目标存储设备中硬盘的发现、建链、断链等管理,提供带内或是带外的管理功能接口等。

可选的,当所述处理器通过带内管理时,所述处理器通过所述总线端口或其它端口接收所述控制设备发送的管理命令,并根据接收到的管理命令实现配置和管理。当所述处理器通过带外管理时,所述处理器通过BMC接收所述控制设备发送的管理命令。

可选的,所述控制设备下发的管理或配置命令包括但不限于所述转发处理设备的初始化、接口配置,对目标存储设备中硬盘的发现、建链、断链等管理、鉴权等。

再一方面,本申请提供了一种转发报文的方法,所述方法应用于NVMe over Fabric中报文的转发,所述NVMe over Fabric中包括转发处理设备和控制设备,所述方法包括:

所述转发处理设备接收所述控制设备发送的第一报文,获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,所述输入输出命令或管理命令包括需要访问的目标硬盘的标识;

根据所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令生成第二报文,所述第二报文是执行所述输入输出命令或管理命令的报文;

根据所述目标硬盘的标识,获取所述至少两个网络端口中到达所述目标硬盘的多个网络端口,并在所述多个网络端口中选择转发所述第二报文的网络端口;

将所述第二报文封装为符合NVMe over Fabric转发要求的报文,通过选择的所述网络端口发送封装后的所述第二报文。

通过上述方法,NVMe over Fabric中的控制设备不需要安装多路径软件,省去了在控制设备安装多路径软件需要匹配各种可能的操作系统所带来的复杂性。并且,控制设备只需安装通用的NVMe标准驱动,即可实现NVMe输入输出命令和管理命令的下发,不需要针对 NVMe over Fabric的网络的具体转发要求对操作系统做适应调整,简化了控制设备的维护成本。

在一个可能的设计中,所述获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令包括:

所述转发处理设备通过支持快速外围部件互连PCIe协议的端口接收所述控制设备通过 PCIe总线发送的第一报文,获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令。

可选的,所述网络端口通过iWarp、ROCE、Infiniband、FC或Omni-Path等网络与目标存储设备连接。

可选的,所述网络端口与所述目标存储设备之间通过一个以上的交换机连接。

可选的,所述输入输出命令用于向所述目标硬盘写入数据或从所述目标硬盘读取数据。所述管理命令包括但不限于:读取目标硬盘的设备信息,增加或删除目标硬盘等。

可选的,所述符合NVMe协议的输入输出命令或管理命令可以是符合NVMe协议字段或净荷。

在一个可能的设计中,所述根据所述第一报文中包括的符合NVMe协议的数据命令或管理命令生成第二报文包括:

当所述第一报文中包括写数据命令时,所述处理器将所述写数据命令携带的需要存储的数据在所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述需要存储的数据的存储空间的地址,以生成所述第二报文;或,

当所述第一报文中包括管理命令且所述管理命令需要写管理数据到目标硬盘时,所述处理器将所述管理命令携带的所述管理数据在所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述管理数据的存储空间的地址,以生成所述第二报文。

在一个可能的设计中,所述根据所述第一报文中符合NVMe协议的输入输出命令或管理命令生成第二报文包括:

当所述第一报文中包括读数据命令时,所述处理器将所述读数据命令中携带的需要读取的数据要写入所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述需要读取的数据的存储空间的地址,以生成所述第二报文;或,

当所述第一报文中包括管理命令且所述管理命令需要读取管理数据时,所述处理器将所述管理命令中携带的所述管理数据要写入所述控制设备中的存储空间的地址,修改为所述转发处理设备中存储所述管理数据的存储空间的地址,以生成所述第二报文。

可选的,当所述转发处理设备接收到所述目标存储设备返回的报文时,所述处理器对接收到的报文进行解封装。即根据所述转发处理设备与所述目标存储设备之间所采用的具体的网络协议解封装接收到的所述目标存储设备返回的报文,并将获取到的命令信息或数据信息返回给所述控制设备。

可选的,当所述管理命令不需要读取或写入相关配置信息时,所述处理器对所述管理命令可以不做修改,直接生成用于执行所述管理命令的第二报文。当需要读写的数据在所述输入输出命令中直接携带时,所述处理器可以不用修改读写数据的地址,直接生成用于执行所述第一报文中符合NVMe协议的输入输出命令的第二报文。

可选的,所述处理器可以根据所述目标硬盘的标识,获取到达所述目标硬盘的全部或部分网络端口。

可选的,所述处理器,可以根据预设的选择策略,从所述到达所述目标硬盘的网络端口中选择转发所述第二报文的网络端口。其中,所述选择策略包括但不限于:主备选择策略、负荷分担、优先级策略或QOS策略。

在一个可能的设计中,所述将所述第二报文封装为符合NVMe over Fabric转发要求的报文包括:

根据所述转发处理设备与所述存储设备之间采用的网络协议,封装为符合所述转发处理设备与所述存储设备之间网络协议要求的报文。

可选的,所述转发处理设备还用于对所述目标存储设备中硬盘的发现、建链、断链等管理,提供带内或是带外的管理功能接口等。

可选的,当所述转发处理设备通过带内管理时,所述转发处理设备通过所述总线端口或其它端口接收所述控制设备发送的管理命令,并根据接收到的管理命令实现配置和管理。当所述转发处理设备通过带外管理时,所述处理器通过BMC接收所述控制设备发送的管理命令。

可选的,所述控制设备下发的管理或配置命令包括但不限于所述转发处理设备的初始化、接口配置,对目标存储设备中硬盘的发现、建链、断链等管理、鉴权等。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中一种NVMe over Fabric架构中系统的结构示意图;

图2为本发明实施例提供的一种转发处理设备202的结构示意图;

图3为本发明实施例提供的一种系统200的结构示意图;

图4为本发明实施例提供的一种系统200的另一种实现方式结构示意图;

图5为本发明实施例提供的一种系统200的再一种实现方式结构示意图;

图6为本发明实施例提供的转发报文方法的具体实现方式的流程示意图;

图7为本发明实施例提供的一种NVMe over Fabric中的转发处理设备700的结构示意图;

图8为本发明实施例提供的一种NVMe over Fabric中的系统800的结构示意图;

图9为本发明实施例提供的一种转发报文的方法的流程示意图。

具体实施方式

本申请中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。

在NVMe over Fabric架构中,为避免Target出现单点故障,会通过冗余备份的方式来提高可靠性,并且利用冗余的路径还可以达到更高的性能。主机的操作系统认为每条路径连接一个实际存在的硬盘,但实际上多个路径通向同一个硬盘。当多个路径中的一条路径失效时,主机可以将通过另一条路径来传输,从而提高系统的可靠性。路径失效可以是线缆损坏、交换机故障或者目标存储设备的独立磁盘冗余阵列(英文:Redundant Array ofIndependent Disks,RAID)控制器故障等情况导致的。

图1为一种传统NVMe over Fabric架构中系统的结构示意图。该系统包括主机101、交换机102、交换机103、目标存储设备105和目标存储设备106。主机101通过交换机102和交换机103本别与目标存储设备105和目标存储设备106连接。图1中,以系统中包括一个主机、两个交换机、两个目标存储设备,并且主机和每个目标存储设备分别包括两个端口为例进行说明。

主机101包括中央处理器(英文:Central Processing Unit,CPU)1011,内存1012、主机总线适配器(英文:Host Bus Adapter,HBA)1016和PCIe总线1015。CPU1011和HBA1016 通过PCIe总线1015相互连接。HBA1016包括端口1013和端口1014,分别连接交换机102和交换机103。

目标存储设备105和目标存储设备106分别包括一个或多个非易失性存储器。图1中非易失性存储器以硬盘表示。非易失性存储器可以是固态磁盘(英文:Solid State Disk,SSD) 或硬盘驱动器(英文:Hard Disk Driver,HDD)。目标存储设备105包括端口1051和端口 1052。端口1051和端口1052分别与交换机102和交换机103主机连接。目标存储设备106包括端口1061和端口1062,分别与交换机102和交换机103主机连接。

图1中,主机101和目标存储设备105通过两条路径连接。其中一个路径为“端口1013-- 交换机102--端口1051”。另一个路径为“端口1014--交换机103--端口1052”。当其中一条路径故障时,主机101和目标存储设备105可以通过另一路径通信。

主机和目标存储设备之间也可以有两个以上的路径。当两个以上的路径都正常时,可以只用其中一个或一些主路径传输数据,其他路径为备份路径。或者,可以负荷分担的方式用全部或其中一些路径传输数据。

当主机101通过两条路径分别连接到目标存储设备105中的同一块硬盘时,运行在主机 101中的操作系统会认为是通过两条路径连接到目标存储设备中的两个逻辑硬盘。为了让主机101中的操作系统正确地使用这两个逻辑硬盘,需要在主机101中部署多路径软件,使得主机101中的操作系统将这两个不同的逻辑硬盘当做一个物理硬盘来使用,以避免可能出现的连接异常或数据被覆盖的问题。然而,在主机101部署多路径软件,会带来各个不同操作系统之间的软件匹配问题,同时也会带来多路径软件与主机101现有的软件的兼容性问题。

为解决上述问题,本发明实施例提供了一种转发处理设备,所述转发处理设备能够实现主机在访问NVMe over Fabric中的目标存储设备时的路径选择,使得主机只需加载通用的NVMe协议的驱动,即可通过NVMe over Fabric实现存储资源的访问或控制。

参考图2,图2为本发明实施例提供的一种转发处理设备202的结构示意图。转发处理设备202包括处理器2021、总线端口2022、网络端口2024和网络端口2025。其中,处理器2021与总线端口2022相连,且总线端口2022通过PCIe总线与NVMe over Fabric中作为控制设备的主机的CPU相连,接收所述主机CPU发送的报文或将转发处理设备发送给主机的报文发送给所述主机的CPU。网络端口2024和网络端口2025通过网络与目标存储设备相连,用于转发处理器2021向目标存储设备发送的报文,或接收目标存储设备向转发处理设备202发送的报文。处理器2021通过总线端口2022接收主机的CPU发送的第一报文,所述第一报文中包括符合NVMe协议的输入输出命令或管理命令。处理器2021根据所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,生成执行所述输入输出命令或管理命令的第二报文。即当所述第一报文中包括输入输出命令时,处理器2021根据所述第一报文中包括的输入输出命令,生成执行所述输入输出命令的第二报文。当所述第一报文中包括管理命令时,处理器2021根据所述第一报文中包括的管理命令,生成执行所述管理命令的第二报文。其中,所述符合NVMe协议的输入输出命令,可以是符合NVMe协议的读数据命令或符合NVMe协议的写数据命令等。

处理器2021还用于选择发送所述第二报文的路径。处理器2021选择发送所述第二报文的路径,可以通过选择发送所述第二报文的网络端口来实现。并且,处理器2021还用于将所述第二报文封装为符合NVMe over Fabric网络转发要求的形式并发送。即处理器2021 在网络端口2024和网络端口2025中选择一个网络端口,并将所述第二报文封装为符合 NVMe over Fabric网络转发要求的形式,通过所选择的网络端口发送封装后的第二报文。

下面以转发处理设备202与一个主机连接,并通过两个交换机与两个目标存储设备实现通信为例,对本发明实施例提供的转发处理设备202的实现方式进行详细的描述。如图3 所示,图3为本发明实施例提供的一种实现多路径控制的系统200的结构示意图。图3中,系统200包括主机201、交换机203、交换机204、目标存储设备205和目标存储设备 206。主机201包括CPU2011、内存2012、转发处理设备202和总线2013,CPU2011和转发处理设备202通过总线2013相互连接。目标存储设备205和目标存储设备206分别包括一个以上的硬盘,这些硬盘可以是SSD或HDD等存储介质,目标存储设备205包括端口 2051和端口2052,目标存储设备206包括端口2061和端口2062。

转发处理设备202中的总线端口2022与主机201中的总线连接,实现转发处理设备 202与主机201之间的通信。转发处理设备202中的网络端口2024与交换机203连接,并通过交换机203分别与目标存储设备205和目标存储设备206连接,即与目标存储设备 205中的端口2051连接以实现转发处理设备202与目标存储设备205之间的通信,与目标存储设备206中的端口2061连接以实现转发处理设备202与目标存储设备206之间的通信。转发处理设备202中的网络端口2025与交换机204连接,并通过交换机204分别与目标存储设备205和目标存储设备206连接。即与目标存储设备205中的端口2052连接以实现转发处理设备202与目标存储设备205之间的通信,与目标存储设备206中的端口 2062连接以实现转发处理设备202与目标存储设备206之间的通信。

需要说明的是,图3中,以转发处理设备202通过两个网络端口,即网络端口2024和网络端口2025,与目标存储设备连接为例进行说明。在具体实现时,转发处理设备202可以通过两个以上的网络端口通过网络与目标存储设备连接。

转发处理设备202与目标存储设备(例如目标存储设备205和目标存储设备206)之间可以通过Fabric网络,例如iWarp、ROCE、Infiniband、FC或Omni-Path等网络,实现连接和通信。交换机203和交换机204是NVMe over Fabric架构中的交换机。可以理解,图3只是以两个交换机(交换机203和交换机204)为例进行说明,在具体实现时,转发处理设备202与目标存储设备设备之间,也可以由一个或两个以上的交换机实现网络的通信。

转发处理设备202中的总线端口2022是PCIe总线端口。主机201中的总线2013是 PCIe总线,总线端口2022与总线2013之间基于PCIe协议通信。

本发明实施例中,总线端口2022通过总线2013接收主机201发送的第一报文,所述第一报文是基于PCIe协议发送的报文,并且所述第一报文中包括符合NVMe协议的输入输出命令或管理命令,所述符合NVMe协议的输入输出命令或管理命令中包括需要访问的目标存储设备(例如目标存储设备205或目标存储设备206)中目标硬盘的标识。其中,所述输入输出命令用于向所述目标硬盘写入数据或从所述目标硬盘读取数据。所述管理命令包括但不限于:读取目标硬盘的设备信息(例如序列号、温度等),增加或删除目标硬盘等。可选的,所述符合NVMe协议的输入输出命令或管理命令可以是符合NVMe协议字段或净荷。

总线端口2022接收到所述第一报文后,获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,并将获取的所述符合NVMe协议的输入输出命令或管理命令发送给处理器2021。具体的,所述第一报文为PCIe报文,总线端口2022获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令。例如,可以是总线端口2022根据PCIe 协议,获取作为PCIe报文的所述第一报文中包括的与NVMe协议相关的字段或净荷的内容,以获取所述第一报文中包括的所述符合NVMe协议的输入输出命令或管理命令。

所述处理器2021根据接收到的所述第一报文中基于NVMe协议的输入输出命令或管理命令,生成第二报文。所述第二报文是执行所述第一报文中包括的所述输入输出命令或管理命令的报文。

在一种实现方式中,所述处理器2021生成所述第二报文,可以通过下述方式实现:所述处理器2021根据接收到的所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,依据NVMe协议生成以所述转发处理设备202作为NVMe over Fabric中的主机发送的、执行所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令的报文。例如,所述处理器2021根据接收到的所述第一报文中包括的符合NVMe协议的输入输出命令,按照NVMe协议的要求,生成以转发处理设备202为发送数据或接收数据的设备,并执行所述第一报文中包括的符合NVMe协议的输入输出命令的报文,以生成所述第二报文。或者,所述处理器2021根据接收到的所述第一报文中包括的符合NVMe协议的管理命令,按照NVMe 协议的要求,生成以转发处理设备202为发送管理命令的设备,并执行所述第一报文中包括的符合NVMe协议的管理命令的报文,以生成所述第二报文。

同时,所述处理器2021还根据所述目标硬盘的标识,选择发送所述第二报文的网络端口,并将所述第二报文封装为符合NVMe over Fabric转发要求的报文,通过选择的网络端口发送封装后的所述第二报文。所述处理器2021选择发送所述第二报文的网络端口,通过网络端口能够将所述第二报文从一条路径发送。所述第二报文能够通过对网络端口的选择,实现到达目标存储设备的多条路径的选择。

这样,主机201中不需要安装多路径软件,省去了在主机201安装多路径软件需要匹配各种可能的操作系统所带来的复杂性。并且,主机201只需安装通用的NVMe标准驱动,即可实现NVMe输入输出命令和管理命令的下发,不需要针对NVMe over Fabric的网络的具体转发要求对操作系统做适应调整,简化了主机201的维护成本。对主机201而言,转发处理设备202是一个符合NVMe标准的设备,主机201的操作系统可以通过加载标准的开源的NVMe驱动,向转发处理设备202发送与NVMe相关的输入输出命令或管理命令。

具体的,所述处理器2021生成第二报文的具体方式,因所述第一报文中包括的是输入输出命令或管理命令而有所不同。下面分别就所述第一报文包括写数据命令、读数据命令和管理命令等情况,对所述处理器2021生成第二报文的方式进行说明。

当所述第一报文中包括符合NVMe协议的写数据命令时,所述写数据命令中携带 SGL(英文:Scatter Gather List),以及目标硬盘的标识。其中,所述目标硬盘是所述写数据命令需要写入数据的硬盘。本发明实施例中将需要写入所述目标硬盘的数据称为需要存储的数据。所述SGL中包括一个字段,例如可以是一个entry,该字段包括主机201存储所述需要存储的数据的存储空间中的地址、所述需要存储的数据的长度、以及所述需要存储的数据在所述目标硬盘中的地址等信息。需要说明的是,所述SGL也可以包括多个字段,例如多个entry,每个entry都包括主机201中存储所述需要存储的数据的存储空间的地址、所述需要存储的数据的长度、以及所述需要存储的数据在所述目标硬盘中的地址等信息。当所述需要存储的数据包括多个地址段,即所述需要存储的数据在主机201中是不连续,存在于多个地址段中时,就需要用多个entry来记录多个地址段中的数据。本发明实施例以SGL中包括一个entry为例进行说明。

所述处理器2021在生成所述第二报文时,将所述写数据命令携带的所述主机201中存储所述需要存储的数据的存储空间的地址,修改为所述转发处理设备202中存储所述需要存储的数据的存储空间的地址,以生成所述第二报文。即所述处理器2021生成的第二报文包括所述转发处理设备202中存储所述需要存储的数据的存储空间的地址、所述需要存储的数据的长度、以及所述需要存储的数据在所述目标硬盘的地址等信息。具体的,可以是在所述第二报文的SGL中,包括所述转发处理设备202中存储所述需要存储的数据的存储空间的地址、所述需要存储的数据的长度、以及所述需要存储的数据在所述目标硬盘的地址等信息。

其中,所述转发处理设备202中存储所述需要存储的数据的存储空间的地址,可以是转发处理设备202中的主存(英文:primary storage)的地址。如图4所示,转发处理设备202中还包括主存2026,处理器2021根据所述写数据命令中包括的主机201中存储所述需要存储的数据的存储空间的地址,从主机201中获取所述需要存储的数据并保存在主存2026中,并将主存2026中存储所述需要存储的数据的地址,作为所述第二报文中包括的所述转发处理设备202中存储所述需要存储的数据的存储空间的地址。

可选的,所述处理器2021从主机201获取所述需要存储的数据,可以通过远RDMA的方式或DMA的方式传输。在所述转发处理设备202与目标存储设备之间传输所述需要存储的数据时,也可以通过RDMA或DMA的方式传输。

当所述第一报文中包括符合NVMe协议的读数据命令时,所述读数据命令中携带SGL 以及所述目标硬盘的标识。其中,所述SGL中包括所述需要读取的数据在所述目标硬盘中的地址、所述需要读取的数据的长度、以及所述需要读取的数据要写入主机201中的存储空间的地址等信息。

所述处理器2021在生成所述第二报文时,将所述读数据命令中携带的所述需要读取的数据要写入主机201中的存储空间的地址,修改为所述转发处理设备202中存储所述需要读取的数据的存储空间的地址,例如主存2026中存储所述需要读取的数据的存储空间的地址。即所述处理器2021生成的第二报文中包括所述需要读取的数据在所述目标硬盘中的存储空间的地址、所述需要读取的数据的长度、以及所述转发处理设备202中存储所述需要读取的数据的存储空间的地址等信息。具体的,可以是在所述第二报文的SGL中,包括所述需要读取的数据在所述目标硬盘中的存储空间的地址、所述需要读取的数据的长度、以及所述转发处理设备202中存储所述需要读取的数据的存储空间的地址等信息。

当所述第一报文中包括符合NVMe协议的管理命令时,所述管理命令是针对某一个硬盘做相关的管理操作,所述管理操作的对象即目标硬盘。同时,所述管理命令可能需要读取目标硬盘的相关信息或发送相关的配置信息给目标硬盘。当所述管理命令需要发送相关的配置信息给目标硬盘时,所述处理器2021生成第二报文的方式与将写数据命令生成第二报文的方式类似;当所述管理命令需要读取目标硬盘的相关信息时,所述处理器2021生成第二报文的方式与将读数据命令生成第二报文的方式类似,不再赘述。

可选的,当所述管理命令不需要读取或写入相关配置信息时,所述处理器2021对这些管理命令可以不做修改,直接生成用于执行所述管理命令的第二报文。当需要读写的数据在所述输入输出命令中直接携带时,所述处理器2021可以不用修改读写数据的地址,直接生成用于执行所述第一报文中符合NVMe协议的输入输出命令的第二报文。

需要说明的是,图4中只是以主存为例说明转发处理设备202存储数据的方式。在具体实现时,所述主存2026也可以通过其它存储介质,例如具有存储功能的设备或芯片,例如FPGA芯片来实现。图4中只是以主存2026为例进行说明,本发明实施例不限定转发处理设备202存储数据的介质或方式。

本发明实施例中,处理器2021根据所述目标硬盘的标识,选择发送所述第二报文的网络端口包括:

处理器2021根据所述目标硬盘的标识,确定能够到达所述目标硬盘的网络端口,以选择发送第二报文的网络端口。可选的,处理器2021可以根据所述目标硬盘的标识,确定能够到达所述目标硬盘的所有网络端口或部分网络端口。处理器2021还可以在确定能够到达所述目标硬盘的所有网络端口或部分网络端口后,依据预先设置的选择策略,选择发送第二报文的网络端口。

下面以到达目标硬盘的网络端口有两个为例对所述处理器2021选择网络端口的方式进行说明。例如图3中,路径1:“网络端口2024--交换机203--端口2051”和路径2:“网络端口2025--交换机204--端口2052”是所述转发处理设备202与目标存储设备205 中的硬盘01之间的路径。由于是两个路径都可以到达硬盘01,处理器2021记录了硬盘01 的唯一标识与路径1和路径2的对应关系。当所述目标硬盘是硬盘01时,处理器2021可以根据所述硬盘01的唯一标识确定连接所述硬盘01的路径,例如确定到硬盘01的路径有路径1和路径2。路径1中包括网络端口2024,路径2中包括网络端口2025,则处理器2021 确定到达目标硬盘的网络端口有网络端口2024和网络端口2025。然后在根据预先设置的路径选择策略,选择发送所述命令的网络端口,即选择网络端口2024或网络端口2025。

可选的,本发明实施例中的所述目标硬盘的标识是目标存储设备中硬盘的唯一标识,包括但不限于:硬盘的序列号或是其它唯一的特征码等。

本发明实施例中,所述路径选择策略包括但不限于:主备选择策略、负荷分担、优先级策略或QOS策略等策略。

其中,所述主备选择策略包括:默认选择预先设置的主路经中的网络端口作为发送的网络端口,当主路经出现故障后选择备用路径中的网络端口作为发送的网络端口,以及在主路径的故障解除后选择主路经中的网络端口作为发送的网络端口。

所述负荷分担策略包括:在两条以上的路径中选择至少两条路径,将至少两条路径中的每个网络端口都作为发送的网络端口。

所述优先级策略包括:对于报文中包括优先级信息的,根据报文中包括的优先级信息,选择与报文中优先级相对应的路径中的网络端口作为发送的网络端口。优先级高的路径,传输的可靠性和/或效率高。

所述QOS策略包括:对于报文中包括QOS信息的,根据报文中包括的QOS信息,选择与报文中QOS等级相对应的路径中的网络端口作为发送的网络端口。QOS高的路径,传输的可靠性和/或效率高。

本发明实施例中,所述处理器2021将所述第二报文封装为符合NVMe over Fabric转发要求的报文包括:

所述处理器2021根据所述转发处理设备202与目标存储设备(例如:目标存储设备 205或目标存储设备206)之间采用的网络协议,封装为符合转发处理设备202与目标存储设备之间网络协议要求的报文。

由于NVMe over Fabric是主机与目标存储设备之间采用iWarp、ROCE、Infiniband、 FC和Omni-Path等网络实现连接的统称,主机与目标存储设备之间根据具体的实现情况,会采用不同的网络来实现传输。处理器2021生成所述第二报文后,需要将所述第二报文封装为转发处理设备202与目标存储设备之间所采用的具体网络所要求的报文形式。这样,转发处理设备202才能将所述第二报文通过NVMe over Fabric网络发送给目标存储设备。

可选的,所述处理器2021还用于对目标存储设备中硬盘的发现、建链、断链等管理,提供带内或是带外的管理功能接口等。

可选的,在本发明实施例中,当所述处理器2021通过带内管理时,所述处理器2021 通过总线端口2022或其它端口接收CPU2011发送的管理命令,并根据接收到的管理命令实现配置和管理。当所述处理器2021通过带外管理时,所述处理器2021通过主板管理控制单元(英文:BMC,baseboard management controller)接收CPU2011发送的管理命令。如图5所示,系统200还包括BMC207,BMC207通过PCIe总线,例如总线2013,连接主机 201中的CPU2011。BMC207还可以通过总线转发处理设备202中的处理器2021,BMC207连接处理器2021的总线可以是内部整合电路(英文:I2C,Inter-Integrated Circuit)或 PCIe总线等。BMC207接收CPU2011下发的管理或配置命令,并将接收到的管理或配置命令发送给处理器2021进行处理。其中,CPU2011下发的管理或配置命令包括但不限于转发处理设备202的初始化、接口配置、对目标存储设备中硬盘的发现、建链、断链等管理、鉴权等。

可选的,图5中还可以包括网络接口器2023。网络接口器2023与处理器2021连接,并连接网络端口2024和网络端口2025。网络接口器2023用于将处理器2021封装后的报文通过网络端口2024或网络端口2025转发到网络。当转发处理设备202包括网络接口器2023 时,网络接口器2023用于执行网络端口部分的功能,即转发处理器2021封装后的报文,使得处理器2021封装后的报文能够通过网络端口(例如网络端口2024或网络端口2025) 发送到NVMe over Fabric的网络上。

上述实施例中,总线端口2022接收到所述第一报文后,根据PCIe协议获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,并将获取的所述符合NVMe协议的输入输出命令或管理命令发送给处理器2021。在这种情况下,总线端口2022运行PCIe 协议相关的微码或程序,解析接收到的PCIe报文,获取CPU2011通过总线2013发送的PCIe 报文中包括的符合NVMe协议的输入输出命令或管理命令。。

在具体实现时,总线端口2022也可以不对所述第一报文做处理,只是将所述第一报文透传给所述处理器2021,由所述处理器2021获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令。在这种情况下,处理器2021运行PCIe相关的程序,以获取 CPU2011通过总线2013发送的PCIe报文中包括的符合NVMe协议的输入输出命令或管理命令。

进一步的,当所述转发处理设备202接收到目标存储设备返回的报文时,所述处理器 2021接收目标存储设备返回的报文,并对接收到的报文进行解封装。即根据转发处理设备 202与目标存储设备之间所采用的具体的网络协议解封装接收到的目标存储设备返回的报文。在对接收到的目标存储设备返回的报文解封装后,所述处理器2021获取所述目标存储设备返回的报文中包括的命令信息或数据信息,并将获取到的命令信息或数据信息返回给主机201。

下面分别就所述所述目标存储设备返回的报文是写数据命令的返回报文、读数据命令的返回报文和管理命令的返回报文,对所述处理器2021将获取到的命令信息或数据信息返回给主机201的方式进行说明。

当所述目标存储设备返回的报文是对写数据命令返回的报文时,所述返回的报文是写数据成功或失败的信息,所述处理器2021根据所述目标存储设备返回的报文生成符合 NVMe协议的响应命令,并封装为满足PCIe转发要求的形式,通过端点2022或其它支持 PCIe协议的端口返回给主机201。

当所述目标存储设备返回的报文是对读数据命令返回的数据时,所述返回的数据为需要读取的数据,所述处理器将接收到的所述需要读取的数据存储在主存2026中,并通过 DMA的方式,将主存2026中存储的所述需要读取的数据通过总线端口2022或其它支持PCIe 协议的端口返回给主机201。

当目标存储设备返回的报文是对管理命令返回的报文时,所述返回的报文可能包括相关的数据或只是管理响应消息。当返回的报文只包括管理响应消息不包括数据时,所述处理器2021将获取到的管理响应消息发送给主机201的方式与返回的报文是写数据命令时的方式类似。当返回的报文包括数据时,所述处理器2021将获取到的数据和信息发送给主机201的方式与返回的报文是读数据命令时的处理方式类似。不再赘述。

可选的,本发明实施例中,所述转发处理设备202可以是HBA设备。所述转发处理设备202中的处理器2021,可以为CPU(例如ARM架构的CPU或X86架构的处理器)、现场可编程门阵列(英文:Field Programmable Gate Array,FPGA)、专用集成电路(英文: Application-Specific Integrated Circuit,ASIC)或其任意组合。

需要说明的是,本发明实施例中的报文,例如第二报文,可以包括命令或数据,也可以同时包括命令和数据,只要能够实现NVMe over Fabric架构中命令、数据或其它信息的转发或传输,都是本发明实施例中报文的实现方式。

下面结合图3所示的系统结构为例,对本发明实施例提供的转发报文的方法进行描述。

如图6所示,图6为本发明实施例提供的转发报文方法的具体实现方式的流程示意图,所述方法包括:

步骤100:主机201生成符合NVMe协议的第一报文,将所述第一报文发送给转发处理设202,所述第一报文包括符合NVMe协议的输入输出命令或管理命令,所述输入输出命令或管理命令包括需要访问的目标硬盘的标识;

其中,主机201只需安装通用的NVMe标准驱动,例如主机201的操作系统可以通过加载标准的开源的NVMe驱动,即可在所述第一报文中包括符合NVMe协议的输入输出命令或管理命令。主机201不需要针对NVMe over Fabric的网络做具体的适配性调整。并且,主机201也不需要安装多路径软件,省去了安装多路径软件需要兼容不同操作系统版本的问题。

并且,总线2013是基于PCIe协议的总线,主机201可以基于PCIe总线发送基于PCIe 报文给转发处理设备202。即CPU2011通过总线2013发送经过PCIe协议封装后的所述第一报文给转发处理设备202。

步骤102:转发处理设备202接收所述第一报文,获取所述第一报文中包括的符合NVMe 协议的输入输出命令或管理命令,以及目标硬盘的标识;

具体的,由于总线端口2022是支持PCIe协议的端口,即总线端口2022与总线2013通过PCIe协议进行物理上的连接。转发处理设备202能够通过总线端口2022接收CPU2011 发送的经过PCIe协议封装后所述第一报文。

在具体实现时,总线端口2022接收到所述第一报文后,可以获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,将获取到的所述符合NVMe协议的输入输出命令或管理命令发送给处理器2021。总线端口2022也可以直接将所述第一报文发送给处理器2021,由所述处理器2021获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令。

步骤104:转发处理设备202根据所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令生成第二报文,所述第二报文是执行所述输入输出命令或管理命令的报文;并根据所述目标硬盘的标识,选择转发所述第二报文的网络端口;

处理器2021生成第二报文的方式,与上述CPU2021针对所述第一报文中的符合NVMe 协议的输入输出命令或管理命令是写数据命令、读数据命令和管理命令时的实现方式类似,不再赘述。

处理器2021根据所述目标硬盘的标识,选择转发所述第二报文的网络端口,与上述选择转发所述第二报文的网络端口的方式类似,不再赘述。

步骤106:转发处理设备202将所述第二报文封装为符合NVMe over Fabric转发要求的报文,通过选择的所述网络端口发送封装后的所述第二报文。

具体的,转发处理设备202中的处理器2021根据所述转发处理设备202与目标存储设备(例如:目标存储设备205或目标存储设备206)之间采用的网络协议,封装为符合转发处理设备202与目标存储设备之间网络协议要求的报文。

通过上述方法,主机201中不需要安装多路径软件,省去了在主机201安装多路径软件需要匹配各种可能的操作系统所带来的复杂性。并且,主机201只需安装通用的NVMe标准驱动,即可实现NVMe输入输出命令和管理命令的下发,不需要针对NVMe over Fabric的网络的具体转发要求对操作系统做适应调整,简化了主机201的维护成本。对主机201而言,转发处理设备202是一个符合NVMe标准的设备,主机201的操作系统可以通过加载标准的开源的NVMe驱动,向转发处理设备202发送与NVMe相关的输入输出命令或管理命令。

进一步的,上述方法还包括步骤108(图中未示出):转发处理设备202在接收到目标存储设备(例如:目标存储设备205或目标存储设备206)返回的响应消息或数据时,所述处理器2021接收目标存储设备返回的报文,并对接收到的报文进行解封装,并将解封装后的响应消息或数据返回给主机201。即处理器2021根据转发处理设备202与目标存储设备之间所采用的具体的网络协议解封装接收到的目标存储设备返回的报文,获取所述目标存储设备返回的报文中包括的响应消息或数据,并将获取到的响应消息或数据返回给主机201。

参考图7,图7为本发明实施例提供的一种NVMe over Fabric中的转发处理设备700的结构示意图。所述转发处理设备700包括处理器701、总线端口702和至少两个网络端口:网络端口703和网络端口704,所述总线端口702与PCIe总线连接,所述网络端口703和网络端口704分别与网络连接;所述处理器701用于执行下述步骤:

通过所述总线端口702接收所述NVMe over Fabric中控制设备发送的第一报文,获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,所述输入输出命令或管理命令包括需要访问的目标硬盘的标识;

根据所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令生成第二报文,所述第二报文是执行所述输入输出命令或管理命令的报文;

根据所述目标硬盘的标识,获取所述至少两个网络端口中到达所述目标硬盘的多个网络端口,并在所述多个网络端口中选择转发所述第二报文的网络端口;

将所述第二报文封装为符合NVMe over Fabric转发要求的报文,通过选择的所述网络端口发送封装后的所述第二报文。

具体的,所述转发处理设备700可以参考上述图2至图5中的转发处理设备202的实现方式来实现,也可参考上述图6中转发处理设备202的实现方式来实现,不再赘述。例如,所述总线端口702可以参考上述图2至图5中的总线端口2022的实现方式来实现,网络端口703或网络端口704可以考上述图2至图5中的网络端口2024或网络端口2025的实现方式来实现,不再赘述。

参考图8,图8为本发明实施例提供的一种NVMe over Fabric中的系统800的结构示意图。如图8所示,所述系统800包括转发处理设备801和控制设备802,所述转发处理设备801与所述控制设备802通过PCIe总线连接;

所述控制设备802,用于通过PCIe总线发送第一报文给所述转发处理设备801,所述第一报文包括符合NVMe协议的输入输出命令或管理命令,所述输入输出命令或管理命令包括需要访问的目标硬盘的标识;

所述转发处理设备801,用于接收所述第一报文,获取所述第一报文中包括的符合NVMe 协议的输入输出命令或管理命令,以及所述目标硬盘的标识;根据所述符合NVMe协议的输入输出命令或管理命令生成第二报文,所述第二报文是执行所述输入输出命令或管理命令的报文;根据所述目标硬盘的标识,获取所述至少两个网络端口中到达所述目标硬盘的多个网络端口,并在所述多个网络端口中选择转发所述第二报文的网络端口,并将所述第二报文封装为符合NVMe over Fabric转发要求的报文,通过选择的所述网络端口发送封装后的所述第二报文。

具体的,所述系统800可以参考上述图3至图5中的系统200的实现方式来实现,即转发处理设备801可以参考图3至图5中的转发处理设备202的实现方式来实现,控制设备802可以参考图3至图5中的主机201的实现方式来实现。所述系统800也可参考上述图6中的实现方式来实现,不再赘述。

参考图9,图9为本发明实施例提供的一种转发报文的方法的流程示意图。所述方法应用于NVMe over Fabric中报文的转发;所述NVMe over Fabric架构中还包括转发处理设备和控制设备,如图9所示,所述方法包括:

步骤900:所述转发处理设备接收所述控制设备发送的第一报文,获取所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令,所述输入输出命令或管理命令包括需要访问的目标硬盘的标识;

步骤902:根据所述第一报文中包括的符合NVMe协议的输入输出命令或管理命令生成第二报文,所述第二报文是执行所述输入输出命令或管理命令的报文;

步骤904:根据所述目标硬盘的标识,获取所述至少两个网络端口中到达所述目标硬盘的多个网络端口,并在所述多个网络端口中选择转发所述第二报文的网络端口;

步骤906:将所述第二报文封装为符合NVMe over Fabric转发要求的报文,通过选择的所述网络端口发送封装后的所述第二报文。

图9所示的流程的具体实现方式,还可以参考上述图2至图6中所描述的实现方式来实现不再赘述。

本发明实施例公开内容所描述的方法或步骤,可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(英文:Random Access Memory,RAM)、闪存、只读存储器(英文: Read-Only Memory,ROM)、可擦除可编程只读存储器(英文:Erasable Programmable ROM, EPROM)、电可擦可编程只读存储器(英文:Electrically EPROM,EEPROM)、硬盘、光盘或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1