经由固态驱动器(SSD)之间的连接在SSD之间传输数据的制作方法

文档序号:28446962发布日期:2022-01-12 03:57阅读:159来源:国知局
经由固态驱动器(SSD)之间的连接在SSD之间传输数据的制作方法
经由固态驱动器(ssd)之间的连接在ssd之间传输数据
1.相关申请的交叉引用
2.本公开要求于2019年03月14日提交的、题目为“peer-to-peer nvme-of ssd communication over fabric without host/compute”的美国临时申请号62/818,566的优先权,其内容通过引用以其整体并入本文。
技术领域
3.本公开涉及存储服务,即在网络结构上经由固态驱动器(ssd)之间的连接,在具有内置网络接口设备的ssd之间传输数据。


背景技术:

4.本文提供的背景描述是为了概括地呈现本公开的上下文。当前命名的发明人的工作,在本背景部分中描述的工作范围内,以及在提交申请时可能不符合现有技术的描述方面,既不明确也不暗示被承认是本公开的现有技术。
5.主机计算机(“主机”)与固态驱动器(ssd)通信以获得由ssd提供的数据服务,诸如读取数据、存储数据和擦除数据。固态驱动器(ssd)是一种数据存储设备,它使用非易失性存储器,诸如nand(not-and)非易失性存储器,来存储持久的数字编码数据。ssd可以被配置为模拟硬盘驱动器,即在快速旋转的盘片的磁性表面上存储持久性数字编码数据并且在许多应用中代替硬盘驱动器(hdd)的设备。ssd包括接口、计算、聚合器和一个或多个非易失性存储器。接口能够通过网络与主机计算机通信,网络可以包括通过有线和/或无线互连耦合的一个或多个中间设备,诸如一个或多个接口交换机和/或路由器。计算是协调ssd上的操作的处理器,并且聚合器提供到一个或多个非易失性存储器的外围组件互连快速(pcie)连接。
6.主机在网络上向ssd发送命令以获得数据服务。命令在接口处被接收,并且基于该命令,计算在聚合器的pcie连接上访问ssd的非易失性存储器。来自主机的命令符合与在网络上访问ssd相关联的结构上非易失性存储器快速(non-volatile memory express over fabric,nvme-of)协议。计算经由nvme协议访问非易失性存储器,该nvme协议定义了用于经由pcie连接访问非易失性存储器的命令集。主机还有助于将数据从一个ssd传输到另一个ssd。为了在ssd之间传输数据,主机在网络上向ssd发送一个或多个命令,以使计算向主机提供被存储在一个ssd上的数据。然后,主机向ssd发送一个或多个命令,以使主机上的数据存储在另一个ssd中。数据经由主机从一个ssd到另一个ssd的传输在主机和ssd之间的网络上生成数据流量。


技术实现要素:

7.本公开涉及固态存储器设备(ssd),即涉及在具有相应内置网络接口设备的ssd之间传输数据。具有相应内置网络接口设备的ssd通过网络结构耦合在一起,并且在ssd之间的连接上并且经由网络结构在ssd之间传输数据,而不是经由作为中介的主机传输数据。
8.在一个实施例中,一种方法用于在第一固态驱动器(ssd)与第二ssd之间传输数据,第一ssd具有被配置为经由网络结构通信的第一内置网络接口设备,并且第二ssd具有被配置为经由网络结构通信的第二内置网络接口设备。方法包括:在网络结构上打开第一ssd与第二ssd之间的连接;基于结构上的非易失性存储器(nvme-of)通信协议,将nvme命令封装在封装体中,以在该连接上在第一ssd与第二ssd之间传输数据;经由网络结构,在该连接上,将封装体从第一ssd发送到第二ssd;以及由第二ssd执行封装体中的nvme命令,以在该连接上在第一ssd与第二ssd之间传输数据。
附图说明
9.图1是根据一个实施例的示例存储系统的图,其有助于在具有相应内置网络接口设备的固态驱动器(ssd)之间传输数据,数据的传输在ssd之间的连接上、经由网络结构的连接上出现。
10.图2是根据另一个实施例的另一示例存储系统的图。
11.图3是根据又一实施例的又一示例存储系统的图。
12.图4是根据一些实施例的示例以太网帧的图,该示例以太网帧用于在图1至图3的示例存储系统中的ssd之间的连接上,在ssd之间传输数据。
13.图5是根据一个实施例的示例方法的流程图,用于在ssd之间的连接上,在具有相应内置网络接口设备的ssd之间传输数据。
14.附图是为了说明示例实施例,但是应当理解,实施例不限于附图中所示的布置和手段。
具体实施方式
15.本公开涉及存储服务,并且具体地涉及经由ssd之间的连接在固态驱动器(ssd)之间传输数据,该连接不包括主机处理器,例如,数据在ssd之间传输,而不必将数据从一个ssd传输到主机处理器,然后将数据从主机处理器传输到另一个ssd。在一个实施例中,ssd包括相应内置网络接口设备(例如,以太网网络接口设备、光纤通道网络接口设备、无线带宽(infiniband)网络接口设备等)。具有相应内置网络接口设备的ssd是存储设备,例如ssd能够进行对等通信,并且经由通信协议(例如,结构上的非易失性存储器(nvme-of)协议或另一适当的通信协议)通信,该通信协议被设计为控制诸如ssd的非易失性存储设备(或与之通信)。根据各种实施例,本文描述的ssd在ssd之间的连接上通信。根据各种实施例,本文描述的ssd根据一种或多种适当的通信协议通信,诸如以下项中的一项或多项:光纤通道、infiniband、以太网上光纤通道(fcoe)、远程直接存储器访问(rdma)、融合以太网上的rdma(roce)、用户数据协议(udp)作为传输层上的rdma、iwarp(一种在传输控制协议(tcp)和互联网协议(ip)(tcp/ip)上实现rdma的网络协议)、tcp作为传输层上的非易失性存储器快速(nvme)等,或用于在网络结构(诸如以太网结构、光纤通道结构、infiniband结构等)上与存储子系统交换数据的其他适当的通信协议。如本文描述的系统、装置、方法和技术的示例经由ssd之间的连接,在具有相应内置网络接口设备的ssd之间传输数据,而不必将数据从一个ssd传输到主机,然后将数据从主机传输到另一个ssd,从而减少ssd与主机之间传输的数据的量和/或减少主机进行的处理。
16.nvme-of协议与nvm express(nvme)协议有关。nvme定义了寄存器级接口,用于在pci express(pcie)总线上在主机和非易失性存储器子系统之间通信。nvme-of建立在由nvme定义的架构、命令集和队列接口上,并且是一种支持nvme在网络结构上访问ssd的协议。虽然nvme和nvme-of两者具有相似的特征,诸如使用命令集来控制如由主机请求的对存储设备的操作,但nvme和nvme-of之间的主要区别之一是用于发送和接收在设备之间通信的命令和响应的传输映射机制。nvme-of使用基于消息的模型来进行主机与ssd之间的通信,其中本地nvme通信包括在pcie接口协议上将命令和响应映射到主机中的共享存储器。nvme-of实现了到pcie的备用传输的使用,其中这些备用传输扩展了主机和ssd跨其连接的距离。通过使用nvme-of技术实现了更大的存储系统吞吐量。
17.下面描述的实施例利用具有内置以太网接口设备的ssd(有时在本文中被称为支持以太网的ssd)。具有支持以太网的ssd的实施例仅仅是具有内置网络接口设备的ssd的说明性示例。然而,其他实施例将ssd与其他类型的内置网络接口设备一起采用,诸如光纤通道网络接口设备、infiniband网络接口设备等。
18.在一些实施例中,具有内置网络接口设备的ssd被(至少部分地)封装在具有适当形状因子的壳体中,诸如标准硬盘驱动器(hdd)/ssd形状因子,诸如3.5英寸形状因子、2.5英寸形状因子或1.8英寸形状因子。壳体可以包含适于网络接口设备的物理网络接口连接器(或限定容纳其的孔径)。例如,根据一个实施例,如果内置网络接口设备包括以太网接口设备,则壳体可以包含适当的物理以太网连接器(例如,rj45连接器)(或限定容纳其的孔径)。作为另一示例,根据另一实施例,如果内置网络接口设备包括光纤通道(fc)接口设备,则壳体可以包含适当的物理fc连接器(或限定容纳其的孔径)。作为另一示例,根据另一个实施例,如果内置网络接口设备包括infiniband接口设备,则壳体可以包含适当的物理infiniband连接器(例如,qsfp连接器、cxp连接器、mpo连接器等)(或限定容纳其的孔径)。
19.在其他实施例中,具有内置网络接口设备的ssd没有被封装在壳体中。
20.在一些实施例中,本文描述的具有内置网络接口设备的ssd具有诸如在与本技术同日提交的、题目为“ethernet enabled solid state drive(ssd)”的us专利申请号_____中公开的结构,通过引用以其整体并入本文。在其他实施例中,具有内置网络接口设备的ssd具有不同的适当结构。
21.图1是根据一个实施例的示例存储系统100的图,该存储系统100使得能够经由支持以太网的ssd之间的连接在支持以太网的ssd之间传输数据,该连接不包括主机。示例存储系统100包括耦合到互连114的主机102,互连114又耦合到存储子系统104,存储子系统104具有网络结构106和两个支持以太网的ssd,被示为支持以太网的ssd 108和支持以太网的ssd 110。互连114可以是主机102与存储子系统104之间的网络,诸如局域网(lan)或广域网(wan)。互连114可以包括一个或多个中间设备,诸如一个或多个接口交换机和/或路由器,它们通过有线和/或无线互连耦合。在示例中,根据一个实施例,存储子系统104可以提供网络结构106、支持以太网的ssd 108和支持以太网的ssd 110中间的连接性,并且存储子系统104和主机102中的一个或多个可以位于数据中心机架中。机架可以具有多个被称为托架的安装槽,每个安装槽被设计为保持诸如主机102或存储子系统104的硬件单元。在一些示例中,机架可以包括机架顶交换机,其提供硬件单元与远程网络之间的连接性。在其他示例中,互连114包括机架的背板。此外,一个以上存储子系统104和一个以上主机102可以耦
合到互连114。其他存储系统可以是第一机架的一部分,其中存储子系统104位于或在第二机架中。类似地,第二主机可以是第一机架的一部分,并且主机102位于或在第二机架中。
22.主机102包括任何类型的主机,诸如计算机处理器或计算机和处理器的网络。此外,主机102不必限于单个主机设备,并且可以表示多个主机设备。在一个实施例中,主机102包括动态随机存取存储器(dram)形式的存储器122、诸如中央处理单元(cpu)的处理器124和网络接口卡(nic)126。存储器122可以仅在通电时存储数据,并且处理器124可以在一个或多个集成电路上被实现,并且处理器124被配置为执行存储在存储器122(或另一存储器(未示出))中的机器可读指令,以执行算术、逻辑、输入/输出(i/o)和其他操作。主机102可以具有或可以不具有有限的存储器(例如非易失性存储器),来在存储器未通电时存储数据。为了便于将数据存储在存储子系统104的非易失性存储器中,主机102利用nic 126来访问存储子系统104的非易失性存储器。nic 126可以促进在主机102与存储子系统104之间的互连114上传输数据。在一个实施例中,nic 126包括以太网网络接口设备。
23.存储子系统104包括支持以太网的ssd 108和支持以太网的ssd 110。支持以太网的ssd 108/110包括使用非易失性存储器的数据存储设备,诸如nand(not-and)非易失性存储器、闪存等,来持久地存储数字编码数据。支持以太网的ssd 108/110可以被配置为模拟硬盘驱动器(hdd)。支持以太网的ssd 108和支持以太网的ssd 110可以将数据存储在相应的非易失性存储器(nvm)116、118中。在示例中,支持以太网的ssd 108可以被配置有处理器128、诸如pci express(pcie)集群130的聚合器,以及一个或多个非易失性存储器116。在一个实施例中,处理器128被配置为执行存储在存储器(未示出)中的机器可读指令,以执行算术、逻辑、i/o和其他操作。在另一实施例中,处理器128附加地或备选地包括硬件处理器(例如,包括一个或多个硬件状态机),其包括被配置为执行算术、逻辑、i/o和其他操作的硬件电路。pcie集群130提供到一个或多个非易失性存储器116的pcie连接。处理器128使用例如nvme协议或其他适当的协议,在pcie集群130的pcie连接上访问非易失性存储器116。nvme协议定义了命令集,用于在pcie集群130到非易失性存储器116的pcie连接上访问存储在非易失性存储器116上的数据。在其他实施例中,支持以太网的ssd 108的nvm 116经由另一种适当的总线/连接来被访问,诸如光纤通道网络、串行at附接(sata)总线、串行附接小型计算机系统接口(scsi)(sas)连接等。
24.支持以太网的ssd 108还可以被配置为实现nvme-of协议。在各种实施例中,nvme-of建立在由nvme定义的架构、命令集和排队接口上,并且支持使用fcoe、rdma、infiniband、iwarp、rocev2、nvmetcp(其指定了tcp上的nvme协议)等,在网络结构106上对支持以太网的ssd 108进行nvme访问。为了支持这种访问,支持以太网的ssd 108包括以太网接口设备136,以太网接口设备136被配置为根据以太网协议在网络结构106上通信。此外,根据各种实施例,处理器128被配置为实施一种或多种协议,诸如nvme、sata、sas、fcoe、rdma、infiniband、iwarp、roce、nvmetcp等。在一个实施例中,支持以太网的ssd 108包括提交队列132和完成队列134。提交队列132和完成队列134被示为与处理器128分开,但在其他示例中,提交队列132和完成队列134可以被集成到处理器128中。提交队列132和完成队列134均可以与单向通信通道相关联。提交队列132可以促进将在本文被称为“封装体”的信息单元发送到另一个支持以太网的ssd,诸如支持以太网的ssd 110,并且完成队列134可以促进从其他支持以太网的ssd,诸如支持以太网的ssd 110接收封装体。封装体是与nvme-of相关联
的信息交换单元,并且可以包括nvme命令、对nvme命令的响应、数据和/或分散收集列表(sgl)。
25.支持以太网的ssd 110可以具有与关于支持以太网的ssd 108所示和描述的组件相同或相似的组件。例如,支持以太网的ssd 110可以具有相应的以太网接口设备150、处理器152、pcie集群154、nvm 118、提交队列156和完成队列158。在其他示例中,与支持以太网的ssd 108相比,支持以太网的ssd 110可以包括其他组件和/或可以省略组件。此外,在其他示例中,存储子系统104可以具有比图1所示更多或更少的支持以太网的ssd。
26.主机102与支持以太网的ssd之间的连接可以允许主机102访问存储在支持以太网的ssd上的数据。该连接还可以支持从一个ssd到主机102的存储器122,然后从主机102的存储器122到第二ssd的数据传输。代替主机102促进ssd之间的数据传输,支持以太网的ssd 108、110被配置为执行彼此之间的数据传输,而无需首先将数据传输到主机102。数据传输是经由支持以太网的ssd 108与支持以太网的ssd 110之间的连接138来被执行,而不是支持以太网的ssd 108或支持以太网的ssd 110与主机102之间的连接。数据的传输包括在连接138(其连接支持以太网的ssd 108和支持以太网的ssd 110)上将数据从支持以太网的ssd 108传输到支持以太网的ssd 110,而不将数据传输到主机102的存储器122作为中间操作,从而减少在互连114上在支持以太网的ssd 108/110与主机102之间传输的数据量和/或由主机102处理的数据量。
27.作为说明性示例,第一支持以太网的ssd 108可以将数据复制到第二支持以太网的ssd 110。非易失性存储器116可以是可寻址存储器,并且要被复制的数据可以位于第一支持以太网的ssd 108的非易失性存储器116的地址范围中。第一支持以太网的ssd 108可以在网络结构106上打开到第二支持以太网的ssd 110的连接138。作为说明性示例,连接138可以是基于光纤通道的nvme-of传输层连接。备选地,连接138可以是基于rdma、infiniband、rocev2、iwarp、nvmetcp或其他适当的协议。可以在支持以太网的ssd之间传输数据之前打开连接138。连接138可以建立一个或多个队列,诸如队列132、134和队列156、158,以促进数据在连接138上在支持以太网的ssd 108与支持以太网的ssd 110之间的后续传输。
28.第一支持以太网的ssd 108的处理器128可以通过将封装体放置在提交队列132中,在网络结构106中的连接138上将封装体发送到第二支持以太网的ssd 110。要被发送到第二支持以太网的ssd 110的封装体可以包含命令(诸如nvme写入命令)、来自nvm 116的要被复制到第二支持以太网的ssd 110的数据、指示非易失性存储器116中要被复制的数据的网络地址的sgl等。处理器128生成包括封装体的以太网分组,并且将以太网分组提供给以太网接口设备136。以太网接口设备136将以太网分组传送到网络结构106。
29.第二支持以太网的ssd 110的以太网接口设备150从网络结构106接收以太网分组,并且将以太网分组提供给处理器152。处理器152从以太网分组中取回封装体,并且将封装体存储在提交队列156中。后续,处理器158从提交队列156中取回封装体,并且响应于封装体中的命令,将数据从第一支持以太网的ssd 108复制到第二支持以太网的ssd 110的nvm 118。要被复制的数据可以被包括在封装体中,或者第二支持以太网的ssd 110可以使用封装体中的sgl信息,来随后在连接138上从第一支持以太网的ssd 110请求由sgl标识的数据,并且在经由连接138接收到所请求的数据时,将所请求的数据复制到nvm 118。数据可
以被复制,而从第一支持以太网的ssd 108取回的数据无须在互连114上被复制到主机102,并且主机102无须在互连114上将数据复制到第二支持以太网的ssd 110。在一些示例中,第二支持以太网的ssd 110可以在连接138上向nvme命令发送nvme响应,通过将具有nvme响应的封装体放置在完成队列158中,来指示复制的完成。处理器152生成包括该封装体的以太网分组,并且将以太网分组提供给以太网接口设备150。以太网接口设备150将以太网分组传送到网络结构106。
30.第二支持以太网的ssd 110的以太网接口设备136从网络结构106接收以太网分组,并且将以太网分组提供给处理器128。处理器128从以太网分组中取回封装体,并且将封装体存储在完成队列134中。后续,处理器128从完成队列134取回封装体,并且响应于封装体中的nvme响应,确定数据从第一支持以太网的ssd 108到第二支持以太网的ssd 110的nvm 118的复制已经完成。
31.在示例中,第一支持以太网的ssd 108和第二支持以太网的ssd110可以具有诸如动态ram(dram)160和dram 162的可寻址本地随机存取存储器(ram)以促进数据的复制。例如,作为复制命令的一部分,第一支持以太网的ssd 108可以将数据从nvm 116复制到其dram 160中。数据被复制到的dram 160中的本地地址可以与写命令一起被存储在封装体中。封装体可以被放置在提交队列132中。然后,当封装体被第二支持以太网的ssd 110接收时,第二支持以太网的ssd 110可以基于本地地址,从第一支持以太网的的ssd 108的dram 160获取数据,以用于存储在dram 160中。第二支持以太网的ssd 110然后可以根据nvme,经由pcie连接将dram 162中的数据存储到nvm 118,来完成数据的复制。当nvm 116不能被第二支持以太网的ssd 110直接访问时,dram 160和dram 162可以促进复制。
32.根据一个实施例,复制操作可以被执行以形成独立磁盘冗余阵列(raid),其中每个支持以太网的ssd对应于raid的一个“磁盘”,并且每个支持以太网的ssd具有相同数据的副本。例如,主机102可以首先将数据复制到一个支持以太网的ssd。然后,该一个支持以太网的ssd可以在连接138上将数据复制到另一个支持以太网的ssd以形成raid。在示例中,复制可以在附加支持以太网的ssd之间进一步重复一次或多次,以形成具有数据的副本的附加支持以太网的ssd。
33.其他数据操作可以包括经由存储子系统104中的支持以太网的ssd之间的连接138,从一个支持以太网的ssd取回数据,并且存储在另一个支持以太网的ssd中。例如,第一支持以太网的ssd 108可以发送通过将封装体置于提交队列132中,将封装体通过网络结构106在连接138上发送到第二支持以太网的ssd 110。被发送到第二支持以太网的ssd 110的封装体可以包含nvme读取命令,并且可以包含要从第二支持以太网的ssd 110的非易失性存储器118读取的数据的指示,诸如sgl,其指示非易失性存储器118中要取回的数据的网络地址。处理器128生成包括封装体的以太网分组,并且将以太网分组提供给以太网接口设备136。以太网接口设备136将以太网分组传送到网络结构106。
34.第二支持以太网的ssd 110的以太网接口设备150从网络结构106接收以太网分组,并且将以太网分组提供给处理器152。处理器152从以太网分组取回封装体,并且将封装体存储在提交队列156中。响应于提交队列156中的封装体,第二支持以太网的ssd 110也在连接138上向第一支持以太网的ssd 108提供数据。第二支持以太网的ssd 110可以通过将nvme响应放置在封装体中并且将具有nvme响应的封装体放置在完成队列158中,来将具有
数据的nvme响应发送到第一支持以太网的ssd 108。处理器152生成包括封装体的以太网分组,并且将以太网分组提供给以太网接口设备150。以太网接口设备150将以太网分组传送到网络结构106。nvme-of响应可以在连接138上被发送到支持以太网的ssd 108的完成队列134。
35.在示例中,dram 160和dram 162可以促进第一支持以太网的ssd 108取回第二支持以太网的ssd 110的nvm 118中的数据。dram 160中的第二支持以太网的ssd 110要将取回的数据写入到其中的本地地址,可以以读取命令被存储在封装体中。封装体可以被放置在提交队列132中。然后,当封装体被第二支持以太网的ssd 110接收时,第二支持以太网的ssd 110可以基于在封装体中的sgl,读取要从nvm 118取回的数据,并且将数据存储在dram 162中。然后,第二支持以太网的ssd 110可以基于封装体中的本地地址,将要被取回的数据写入到dram 160。然后,第一支持以太网的ssd 108可以根据nvme,经由pcie连接将dram 160中的数据写入到nvm 116以完成读取命令。当nvm 118不能被第一支持以太网的ssd 108直接访问时,dram 160和dram 162可以促进取回。
36.取回操作可以用于基于另一个支持以太网的ssd中的数据,来在一个支持以太网的ssd中构建数据,例如,如果raid的“磁盘”上的数据被破坏。支持以太网的ssd可以从另一个支持以太网的ssd取回数据,以便它在另一个支持以太网的ssd上具有相同的数据副本。
37.图2是根据另一个实施例的存储系统200的另一个示例的框图。存储系统200包括图1的支持以太网的ssd 108和110。支持以太网的ssd 108的处理器128执行通信协议层214、216、218,以促进在支持以太网的ssd之间的连接上在支持以太网的ssd之间传输数据。在一个实施例中,通信协议层214、216、218使用由处理器128执行的软件来被实现。在另一个实施例中,通信协议层214、216、218的至少一部分使用硬件电路装置来被实现,诸如一个或更多硬件状态机。
38.存储系统200包括图1中的示例存储系统100的组件,为简单起见,在存储系统200中未被示出。示例存储系统200包括主机102、互连114、存储系统104、250、以太网交换机106、260和支持以太网的ssd,支持以太网的ssd被示为支持以太网的ssd 108、支持以太网的ssd 110、支持以太网的ssd 256和支持以太网的ssd 258。
39.以太网交换机106包括一个或多个网络端口210。网络端口210中的一个或多个网络端口可以是物理接口,其实现支持以太网的ssd之间或支持以太网的ssd与主机102之间的通信。此外,支持以太网的的ssd 108、支持以太网的ssd 110、支持以太网的ssd 256和支持以太网的ssd 258可以具有一个或多个网络端口212,以支持与以太网交换机106的通信。
40.支持以太网的ssd 108还可以被配置有一个或多个与访问存储在支持以太网的ssd上的数据相关联的通信协议层。例如,支持以太网的ssd 108可以具有nvme层214、nvme-of层216和rdma层218。nvme层214可以是一种协议层,其定义架构、命令集和排队接口,以在pcie集群130上访问非易失性存储器116中存储的数据。nvme-of层216可以是定义对nvme层214的扩展的协议层,以用于在以太网交换机106上访问ssd。rdma层218可以是传输协议层,其在以太网交换机106上提供数据、nvme命令和nvme响应的可靠递送。rdma层218促进对要被递送的数据、sgl、命令和响应的直接存储器访问(dma)操作,与经由应用堆栈递送相比,减少了递送延迟。根据各种实施例,rdma层218可以采用聚合以太网上rdma v2(rdma over converged ethernet v2)(例如,rocev2)的形式,来支持以太网上rdma、infiniband或
iwarp。在一些实施例中,nvme-of层216和rdma层218的功能可以被配置为单层。在一些实施例中,rdma层218被集成在nvme-of层216内。
41.支持以太网的ssd 110、支持以太网的ssd 256和支持以太网的ssd 258可以具有与图1和图2中关于支持以太网的ssd 108所示和描述的组件类似的组件。例如,支持以太网的ssd 110、支持以太网的ssd 256和支持以太网的ssd 258可以具有相应的nvme层、nvme-of层和rdma层。在其他示例中,与支持以太网的ssd 108相比,支持以太网的ssd 110、支持以太网的ssd 256和支持以太网的ssd 258可以具有附加层。
42.支持以太网的ssd中的各种软件层可以用于在第一支持以太网的ssd 108与第二支持以太网的ssd 110之间执行数据操作,诸如经由第一支持以太网的ssd与第二支持以太网的ssd之间的连接138,将第一支持以太网的ssd 108的nvm 116中的数据复制到第二支持以太网的ssd 110的nvm 118,这减少了作为中间步骤的在互连114上向主机102传输数据的需要。
43.例如,第一支持以太网的ssd 108的rdma层和第二支持以太网的ssd 110的rdma层可以打开第一支持以太网的ssd 108与第二支持以太网的ssd 110之间的连接138。相应rdma层可以基于与第一支持以太网的ssd 108相关联的端口标识符(id)和与第二支持以太网的ssd 110相关联的端口id(其唯一地标识连接138的端口),来打开连接138。支持以太网的ssd端口是支持以太网的ssd与以太网交换机106之间的协议接口,并且是一起充当单个协议接口的一个或多个物理结构接口的集合。支持以太网的ssd可以具有一个或多个支持以太网的ssd端口。每个支持以太网的ssd端口可以具有端口id,它可以是16位的标识符。支持以太网的ssd的支持以太网的ssd端口可以支持不同的nvme-of传输连接。如果底层结构存在一个以上nvme-of传输绑定规范(例如,由端口id标识的支持以太网的ssd端口可以支持iwarp和rocev2两者),则支持以太网的ssd端口可以支持多个nvme-of传输连接。
44.支持以太网的ssd 108和支持以太网的ssd 110中的每个还可以具有网络地址,该网络地址唯一地标识网络中的支持以太网的ssd。网络地址可以是任何逻辑或物理地址,诸如媒体访问控制(mac)地址或互联网协议(ip)地址。连接138还可以是基于支持以太网的ssd 108的网络地址和支持以太网的ssd 110的网络地址。第一支持以太网的ssd 108的nvme层可以生成与数据操作相关联的命令,然后该命令被由nvme-of层216封装在封装体中,并且被放置在支持以太网的ssd 108的提交队列中。第一支持以太网的ssd 108的rdma层可以通过其网络端口212并且在以太网交换机106的连接138上,将封装体传输到第二支持以太网的ssd 110。第二支持以太网的ssd110层的rdma层可以经由其网络端口212在连接138上接收封装体。第二支持以太网的ssd 110的nvme-of层可以恢复nvme命令,并且向其nvme层提供nvme命令以执行数据操作。此外,如上所述,nvme-of层216和rdma层218的功能可以被配置为单层。在各种示例中,数据操作可以是将第一支持以太网的ssd 108的nvm 116中的数据复制到第二支持以太网的ssd 110的nvm 118,或由第一支持以太网的ssd 108取回第二支持以太网的ssd 110的nvm 118中的数据,并且将数据存储在第一支持以太网的ssd 108的nvm 116中。在一些示例中,第二支持以太网的ssd 110的rdma层可以附加地在连接138上,将也在封装体中的nvme响应发送到第一支持以太网的ssd 108。响应的发送可以是基于如上所述的nvme命令的类型和内容。响应可能已经由第二支持以太网的ssd 110的nvme层生成,并且被第二支持以太网的ssd 110的nvme-of层封装到封装体中。然后,封装体
可以被放置在第二支持以太网的ssd 110的完成队列中,以由第二支持以太网的ssd 110的rdma层传输到第一支持以太网的ssd 108。
45.被描述为在支持以太网的ssd之间打开的连接138本质上是示例性的。为了执行数据操作而打开的连接可以采用多种形式,具体取决于哪些支持以太网的ssd将传输数据。例如,不同存储系统250、104上的支持以太网的ssd 256和支持以太网的ssd 258可以打开连接254。连接254可以在以太网交换机106、以太网交换机260和互连114上。其他变化也是可能的。
46.图3是根据另一个实施例的存储系统300的又一个示例的框图。存储系统300可以包括图1中的示例存储系统100的组件,为简单起见,该组件在存储系统300中未被示出。存储系统200包括图1的ssd 108和ssd 110,其中ssd 108和ssd 110包括相应光纤通道(fc)网络接口设备,而不是以太网网络接口设备136、150。结合图3,ssd 108和ssd 110有时被称为支持fc的ssd。
47.在存储系统300的示例中,存储子系统104的网络结构106包括fc交换机304,并且存储子系统250包括fc交换机306。
48.支持fc的ssd 108的处理器128执行通信协议层214、216、302,以促进在支持fc的ssd之间的连接上在支持fc的ssd之间传输数据。在一个实施例中,通信协议层214、216、302使用由处理器128执行的软件来被实现。在另一个实施例中,通信协议层214、216、302的至少一部分使用硬件电路装置来被实现,诸如一个或更多硬件状态机。
49.示例存储系统300包括主机102、互连114、存储子系统104和支持fc的ssd,支持fc的ssd被示为支持fc的ssd 108、支持fc的ssd 110、支持fc的ssd 256和支持fc的ssd 258。
50.支持fc的ssd 108以及类似的支持fc的ssd 110、支持fc的ssd 256和支持fc的ssd 258实现各种通信协议层,包括nvme层214和nvme-of层216。支持fc的ssd 108以及类似的支持fc的ssd 110、支持fc的ssd 256和支持fc的ssd 258还实现了光纤通道上nvme-of(fc-nvme)层,该层包括传输协议层,传输协议层提供数据、nvme命令、nvme响应、sgl和/或fc交换机304和/或fc交换机306上的数据的可靠递送。在一些实施例中,nvme-of层216和fc-nvme层302的功能可以被配置为单层。在一些实施例中,fc-nvme层302被集成在nvme-of层216内。fc交换机304、306促进从一个支持fc的ssd到另一个支持fc的ssd的fc通信。网络端口210、212中的每个可以是fc端口,并且支持fc的ssd中的每个支持fc的ssd可以具有唯一网络地址,诸如唯一fc地址。fc-nvme层302(或另一适当的通信协议层)可以基于相应端口id和/或网络地址在第一支持fc的ssd 108与第二支持fc的ssd 110之间建立逻辑连接,以执行如上所述的数据操作,减少了作为中间步骤的将数据从第一支持fc的ssd传输到主机102,然后从主机传输到第二支持fc的ssd的需要。连接138和连接254被图示,但是连接也可以采用其他形式。
51.图4是根据实施例的示例以太网帧400的图,其与数据在以太网连接和支持以太网的网络结构上在第一支持以太网的ssd与第二支持以太网的ssd之间的传输相关联。帧400包括以太网第2层报头402和以太网类型字段404,其指示帧400与以太网相关联。在一个实施例中,报头402包括发射器mac地址(例如,正在传送以太网帧400的支持以太网的ssd的mac地址)和接收器mac地址(例如,将要接收以太网帧400的支持以太网的ssd的mac地址)。示例帧400可以包括ip报头406,其指示源ip网络地址和目的ip网络地址。源ip网络地址可
以是传送帧400的支持以太网的ssd的ip地址,目的ip网络地址可以是帧400将被发送到那里的支持以太网的ssd的ip地址。mac地址和/或ip网络地址可以促进经由结构106/260(图1和图2)将帧从第一支持以太网的ssd引导到第二支持以太网的ssd。根据一个实施例,以太网帧400中的mac地址和/或ip网络地址不包括主机102的网络地址。以太网帧400的有效负载408包括nvme-of封装体410,其包括与数据在第一支持以太网的ssd与第二支持以太网的ssd之间的传输相关联的nvme命令、响应、sgl等。帧400还可以包括其他数据,诸如与支持以太网的ssd之间的连接相关联的端口id,以促进帧在连接上从第一支持以太网的ssd到第二支持以太网的ssd的路由。
52.图5是根据一个实施例的示例方法500的流程图,用于经由网络结构在第一ssd与第二ssd之间传输数据。根据一个实施例,第一ssd包括被配置为经由网络结构通信的第一内置网络接口设备,并且第二ssd包括被配置为经由网络结构通信的第二内置网络接口设备。在各种实施例中,方法500涉及经由网络结构在第一ssd与第二ssd之间传输数据,而无需首先将数据中的任何数据传送到主机计算机。例如,在一些实施例中,第一ssd和第二ssd经由网络结构通信耦合到主机计算机,并且方法500涉及经由网络结构在第一ssd与第二ssd之间传输数据,而无需首先将数据中的任何数据传送到主机计算机。
53.在各种实施例中,方法500由存储系统100(图1)、存储系统200(图2)或存储系统300(图3)实施,并且为了便于说明,参考图1-图3中的一个或多个。在其他实施例中,方法500由另一种适当的存储系统来实施,该存储系统包括ssd,该ssd具有被配置为经由网络结构通信的相应内置网络接口设备,并且被配置为经由网络结构在ssd之间传输数据,而无需首先将数据中的任何数据传送到主机计算机。
54.在框504处,第一ssd经由网络结构打开与第二ssd的连接。在一个实施例中,在框504处打开连接包括:第一ssd的第一处理器(例如,图1的处理器128)打开连接。在一个实施例中,在框504处打开连接包括:根据用于与非易失性存储器设备通信的通信协议打开连接。在一个实施例中,在框504处打开连接包括:打开不包括主机计算机(例如,主机计算机102)的连接。
55.在一个实施例中,在框504处打开连接包括:根据nvme-of通信协议打开连接。在各种其他实施例中,在框504处打开连接附加地或备选地包括根据以下项中的一项或多项打开连接:i)光纤通道通信协议,ii)rdma通信协议,iii)infiniband通信协议,iv)nvmetcp通信协议等。
56.在一些实施例中,在框504处打开连接包括:第一ssd的第一内置网络接口设备,经由网络结构,向第二ssd的第二内置网络接口设备传送一个或多个第一分组,第一分组包括信息,该信息对应于根据用于与非易失性存储器设备通信的通信协议来打开连接。在一些实施例中,在框504处打开连接附加地包括:第一ssd的第一内置网络接口设备经由网络结构从第二ssd的第二内置网络接口设备接收一个或多个第二分组,第二分组包括信息,该信息对应于根据用于与非易失性存储器设备通信的通信协议来打开连接。在一些实施例中,第二分组中的信息对第一分组中的信息进行响应。
57.在一个实施例中,主机计算机经由互连(例如互连114)被通信耦合到第一ssd和第二ssd,并且在框504处打开连接包括经由互连打开连接,其中连接不包括主机计算机。
58.在框508处,第一ssd根据用于与非易失性存储器设备通信的通信协议,将用于在
网络结构上在第一ssd与第二ssd之间传输数据的命令封装在封装体中。在一个实施例中,在框508处封装命令包括:封装用于向ssd传输数据或从ssd传输数据的nvme命令。在一个实施例中,在框508处封装命令包括:根据nvme-of通信协议封装命令。在各种其他实施例中,在框508处封装命令附加地或备选地包括根据以下项中的一项或多项来封装命令:i)光纤通道通信协议,ii)rdma通信协议,iii)infiniband通信协议,iv)nvmetcp通信协议等。
59.在框512处,第一ssd根据通信协议,经由网络结构在连接上向第二ssd发送封装体。在一个实施例中,网络结构包括以太网交换机,并且在框512处发送封装体包括:经由以太网交换机在连接上发送在以太网分组中的封装体。例如,第一ssd的第一网络接口设备包括第一以太网网络接口设备(例如,以太网网络接口设备136);第一以太网网络接口设备将封装体封装在以太网分组中,并且将以太网分组传送到以太网交换机;并且以太网交换机将以太网分组转发到第二ssd。在一个实施例中,第二ssd的第二网络接口设备包括第二以太网网络接口设备(例如,以太网网络接口设备150),并且第二以太网网络接口设备从以太网分组将封装体解封装,并且将封装体提供给第二ssd的处理器(例如,处理器152)以执行封装体中的命令。
60.在另一个实施例中,网络结构包括光纤通道(fc)交换机,并且在框512处发送封装体包括:经由fc交换机,在连接上发送在fc帧中的封装体。例如,第一ssd的第一网络接口设备包括第一fc网络接口设备;第一fc网络接口设备将封装体封装在fc帧中,并且将fc帧传送到fc交换机;并且fc交换机将fc帧转发到第二ssd。在一个实施例中,第二ssd的第二网络接口设备包括第二fc网络接口设备,第二fc网络接口设备从fc帧将封装体解封装,并且将封装体提供给第二ssd的处理器(例如,处理器152)来执行封装体中的命令。
61.在另一个实施例中,网络结构包括infiniband交换机,并且在框512处发送封装体包括:经由infiniband交换机,在连接上发送infiniband分组中的封装体。例如,第一ssd的第一网络接口设备包括第一infiniband网络接口设备;第一infiniband网络接口设备将封装体封装在infiniband分组中,并且将infiniband分组传送到infiniband交换机;并且infiniband交换机将infiniband分组转发到第二ssd。在一个实施例中,第二ssd的第二网络接口设备包括第二infiniband网络接口设备,并且第二infiniband网络接口设备从infiniband分组将封装体解封装,并且将封装体提供给第二ssd的处理器(例如,处理器152)来执行封装体中的命令。
62.在框516处,第二ssd执行命令,以根据通信协议,在网络结构上在第一ssd与第二ssd之间传输数据。在框516处执行命令以传输数据包括:执行封装体中的nvme命令以在第一ssd和第二ssd之间传输数据。在一个实施例中,在框516处执行命令以传输数据包括:在无需将数据中的任何数据传输到主机计算机的情况下,在第一ssd与第二ssd之间传输数据,。
63.在一个实施例中,在框516处执行命令以传输数据包括:经由网络结构从第一ssd复制到第二ssd。在一个实施例中,在框516处执行命令以传输数据包括:从第二ssd取回,并且经由网络结构将取回的数据传送到第一ssd。
64.附加地或备选地,上述ssd之间的连接可以用于除如上所述在ssd之间传输数据之外的其他目的。例如,连接可以允许支持以太网的ssd、支持fc的ssd、支持infiniband的ssd等管理ssd的操作,诸如每个ssd在与主机102通信时要使用的数据速率。在示例中,一个ssd
可以充当主设备,并且发送指定其他ssd(从设备)在与主机通信时要使用的相应数据速率的相应封装体。作为说明性示例,主机可以能够以诸如25gbps的数据速率通信。主ssd可以指定主机数据速率的百分比(或分数)(例如,由0到1范围内的数字指定的百分比或分数)。为了使主机的数据速率被公平地或适当地划分,主机可以指定主机数据速率的相应百分比或分数,在主机数据速率的相应百分比或分数下,相应的ssd与主机102通信。主设备可以经由在主设备和从设备之间的连接上发送的封装体,来指示数据速率的百分比/分数。此外,当服务于主机102的从ssd的数目改变或要求特定从ssd改变时,主设备可以调整该百分比/分数。ssd之间的连接也可用于交换其他信息以用于其他适当的目的。
65.实施例1:一种用于在第一固态驱动器(ssd)与第二ssd之间传输数据的方法,第一ssd具有被配置为经由网络结构通信的第一内置网络接口设备,并且第二ssd具有被配置为经由网络结构通信的第二内置网络接口设备,该方法包括:在网络结构上打开第一ssd与第二ssd之间的连接;基于结构上的非易失性存储器(nvme-of)通信协议,将nvme命令封装在封装体中,以在连接上在第一ssd与第二ssd之间传输数据;经由网络结构,在连接上,将封装体从第一ssd发送到第二ssd;以及由第二ssd执行封装体中的nvme命令,以在连接上在第一ssd与第二ssd之间传输数据。
66.实施例2:根据实施例1所述的方法,其中:网络结构包括以太网交换机;该方法还包括:在第一ssd的第一内置网络接口设备处,将封装体封装在以太网分组中,以及在第二ssd的第二内置网络接口设备处,从以太网分组将封装体解封装;以及将封装体从第一ssd发送到第二ssd包括:经由以太网交换机发送在以太网分组中的封装体。
67.实施例3:根据实施例1所述的方法,其中打开连接包括根据以下项中的一项打开连接:i)光纤通道通信协议,ii)远程数据存储器访问(rdma)通信协议,iii)infiniband通信协议,或iv)传输控制协议上的nvme(nvme over transmission control protocol,nvmetcp)通信协议。
68.实施例4:根据实施例1至3中任一项所述的方法,其中:打开第一ssd与第二ssd之间的连接还包括:进一步在与主机计算机相关联的互连上打开连接;打开第一ssd与第二ssd之间的连接包括:打开不包括主机计算机的连接;以及执行封装体中的nvme命令以在第一ssd与第二ssd之间传输数据包括:在无需向主机计算机传输数据中的任何数据的情况下,在第一ssd与第二ssd之间传输数据。
69.实施例5:根据实施例1至4中任一项所述的方法,其中数据的传输包括:在第一ssd与第二ssd之间的连接上复制或取回数据。
70.实施例6:根据实施例1至5中任一项所述的方法,其中:打开第一ssd与第二ssd之间的连接包括:打开不包括与第一ssd和第二ssd通信耦合的主机计算机的连接;以及执行封装体中的nvme命令以在第一ssd与第二ssd之间传输数据包括:在无需向主机计算机传输数据中的任何数据的情况下,在第一ssd与第二ssd之间传输数据。
71.实施例7:根据实施例1至6中任一项所述的方法,其中打开连接包括:第一支持以太网的ssd的rdma层打开在网络结构中与第二支持以太网的ssd的rdma层的连接。
72.实施例8:根据实施例1至7中任一项所述的方法,其中主机以一定数据速率与第一支持以太网的ssd和第二支持以太网的ssd通信,方法还包括第一支持以太网的ssd在连接上发送对数据速率的分数的指示,在数据速率的分数下,第二支持以太网的ssd与主机通
信。
73.实施例9:根据实施例1至8中任一项所述的方法,其中网络结构被配置有tcp或以太网。
74.实施例10:根据实施例1至9中任一项所述的方法,其中在连接上将封装体从第一支持以太网的ssd发送到第二支持以太网的ssd包括:基于第二nvme-of ssd的封装体中的ip地址来发送封装体,ip地址指示封装体的目的地。
75.实施例11:一种存储系统,包括:第一固态驱动器(ssd),具有i)被配置为经由网络结构通信的第一内置网络接口设备,以及ii)第一处理器;第二ssd具有i)被配置为经由网络结构通信的第二内置网络接口设备,以及ii)第二处理器;以及网络结构;其中第一ssd的第一处理器被配置为:i)在结构上打开第一ssd与第二ssd之间的连接,连接在网络结构上,ii)基于结构上的非易失性存储器(nvme-of)通信协议,将非易失性存储器快速(nvme)命令封装在封装体中,以在连接上在第一ssd与第二ssd之间传输数据,以及iii)将封装体提供到第一内置网络接口设备,以在连接上将封装体发送到第二ssd的第二内置网络接口设备;以及其中第二ssd的第二处理器被配置为:i)从第二内置网络接口设备接收封装体,ii)根据nvme-of通信协议,从封装体将nvme命令解封装,以及iii)执行nvme命令,以在连接上在第一ssd与第二ssd之间传输数据。
76.实施例12:根据实施例11所述的存储系统,其中:第一ssd的第一处理器被配置为将封装体封装在以太网分组中;第一内置网络接口设备包括第一以太网接口设备,第一以太网接口设备被配置为传送以太网分组;网络结构包括以太网交换机,以太网交换机被配置为:将以太网分组转发到第二ssd的第二内置网络接口设备;第二内置网络接口设备包括第二以太网接口设备,第二以太网接口设备被配置为向第二ssd的第二处理器提供以太网分组;以及第二处理器被配置为从以太网分组将封装体解封装。
77.实施例13:根据实施例12所述的存储系统,其中:第一以太网接口设备进一步经由与主机计算机相关联的互连被通地耦合到第二以太网接口设备;第一ssd的第一处理器被配置为:进一步在互连上打开第一ssd与第二ssd之间的连接;并且第一处理器被配置为打开第一ssd与第二ssd之间的连接,连接不包括主机计算机;以及以太网交换机被配置为:在无需向主机计算机传送分组的情况下,在第一ssd与第二ssd之间引导以太网分组。
78.实施例14:根据实施例11至13中任一项所述的存储系统,其中第一ssd的第一处理器被配置为根据以下项中的一项打开连接:i)光纤通道通信协议,ii)远程数据存储器访问(rdma)通信协议,iii)infiniband通信协议,或iv)传输控制协议上的nvme(nvmetcp)通信协议。
79.实施例15:根据实施例11至14中任一项所述的存储系统,其中网络结构被配置为:在无需将数据中的任何数据传输到被通信耦合到第一ssd和第二ssd的主机计算机的情况下,在第一ssd与第二ssd之间传输数据。
80.实施例16:根据实施例15所述的存储系统,其中:主机计算机被配置为:经由网络结构,以第一数据速率与第一ssd和第二ssd通信;第一ssd的第一处理器被配置为:在连接上发送对第二数据速率的指示,在第二数据速率下,第二ssd在网络结构上与主机计算机通信;以及第二数据速率是第一数据速率的分数。
81.实施例17:根据实施例11至16中任一项所述的存储系统,其中网络结构包括以太
网交换机。
82.实施例18:根据实施例17所述的存储系统,其中:第一ssd的第一处理器被配置为:将封装体封装在具有第二ssd的网络地址的以太网分组中;第一内置网络接口设备包括第一以太网接口设备,第一以太网接口设备被配置为:向以太网交换机传送以太网分组;以太网交换机被配置为:使用以太网分组中的第二ssd的网络地址,来将以太网分组转发到第二内置网络接口设备;第二内置网络接口设备包括第二以太网接口设备,第二以太网接口设备被配置为:向第二ssd的第二处理器提供以太网分组。
83.实施例19:根据实施例11至18中任一项所述的存储系统,其中数据的传输包括:在第一ssd与第二ssd之间的连接上复制或取回数据。
84.实施例20:根据实施例11至19中任一项所述的存储系统,其中:第一ssd的第一处理器被配置为实现第一远程直接存储器访问(rdma)通信协议层;第二ssd的第二处理器被配置为实现第二rdma通信协议层;以及第一rdma通信协议层被配置为打开与第二rdma通信协议层的连接。
85.虽然已经结合作为示例被提出的本公开的特定实施例描述了本公开的方面,但可以进行示例的替代、修改和变化。因此,本文中阐述的实施例旨在是说明性而非限制性的。在不脱离所阐述的权利要求的范围的情况下可以做出改变。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1