存储系统中存储设备的管理方法及存储系统与流程

文档序号:24570702发布日期:2021-04-06 12:17阅读:169来源:国知局
存储系统中存储设备的管理方法及存储系统与流程

本案是专利申请号为201780002717.1,申请日为2017年12月26日,发明名称为“存储系统中存储设备的管理方法及装置”的分案申请。

本发明涉及信息技术领域,尤其涉及一种存储系统中存储设备的管理方法及装置。



背景技术:

随着非易失性内存高速(non-volatilememoryexpress,nvme)接口规范的发展,支持nvme接口规范的存储设备(以下简称为nvme存储设备)应用于分布式存储系统中。分布式存储系统中,通常包含多个存储节点,每一个存储节点包含一个或多个支持nvme接口规范的存储设备。客户端访问分布式存储系统中的存储设备。首先客户端需要确定处理访问请求的存储节点,与存储节点建立通信,存储节点接收访问请求,存储节点的中央处理单元(centralprocessingunit,cpu)解析访问请求得到访问命令,将访问请求中的地址转化为nvme存储设备的存储地址,确定访问请求对应的nvme存储设备,将nvme存储设备的存储地址和访问命令发送给对应的nvme存储设备,上述操作过程与访问传统的非nvme接口规范的存储设备流程相同,无法充分利用nvme存储设备的性能。



技术实现要素:

申请提供了一种存储系统中存储设备的管理方法及装置。

本申请的第一方面提供了存储系统中存储设备的管理方法,在存储系统包含管理服务器和第一存储节点,其中,第一存储节点包含nvme接口规范的第一存储设备,第一存储设备的队列的起始地址位于第一存储节点的第一内存中的第一内存地址;管理服务器从第一存储节点获取第一队列消息;第一队列消息包含第一存储节点的标识和第一内存地址;管理服务器建立第一存储节点的标识和第一内存地址之间的第一映射关系;管理服务器接收来自客户端的查询请求;查询请求包含第一存储节点的标识;管理服务器根据第一映射关系向客户端发送查询请求响应;查询请求响应包含第一内存地址。管理服务器建立存储节点的标识和队列的起始地址的映射关系,客户端可以从管理服务器获得nvme存储设备队列的信息,从而可以直接访问nvme存储设备,不需要存储节点cpu的参与处理访问请求,充分发挥了nvme存储设备的性能,提高了存储系统的写性能。

结合本申请第一方面,在第一种可能实现方式中,还包括,管理服务器建立锁定标识,锁定标识用于锁定第一内存地址。从而管理服务器可以记录队列的分配情况。进一步的,管理服务器可以根据锁定信息统计nvme存储设备的负载。进一步的,管理服务器还可以记录获得队列的客户端的标识。

结合本申请第一方面,在第二种可能实现方式中,存储系统还包括第二存储节点,第二存储节点包含nvme接口规范的第二存储设备,第二存储设备的队列的起始地址位于第二存储节点的第二内存中的第二内存地址;管理服务器从第二存储节点获取第二存储设备的第二队列消息;第二队列消息包含第二存储节点的标识和第二内存地址;管理服务器建立第二存储节点的标识和第二内存地址的第二映射关系。管理服务器可以管理存储队列中所有存储节点包含的nvme设备的队列信息。

结合本申请第一方面,或第一方面的第一种或第二种可能实现方式,在第三种可能的实现方式中,管理服务器从第一存储节点获得第三队列消息;第三队列消息包含第一存储节点的标识和第三内存地址;管理服务器建立第一存储节点的标识和第三内存地址的第三映射关系;其中,nvme接口规范的第三存储设备的队列的起始地址位于第一内存中的第三内存地址,第三存储设备为第一存储节点新增加的存储设备。

结合本申请第一方面的第二或第三种可能的实现方式,在第四种可能的实现方式中,管理服务器从第二存储节点接收队列消息删除消息;队列消息删除消息包含第二内存地址;管理服务器删除第二映射关系。

结合本申请第一方面,在第五种可能的实现方式中,管理服务器检测到与第一存储节点通信中断,管理服务器删除第一映射关系。

结合本申请第一方面的第五种可能的实现方式,在第六种可能的实现方式中,管理服务器检测到与第一存储节点通信中断,具体包括:管理服务器在预定的时间内未收到第一存储节点的心跳。

本申请的第二方面提供了存储系统中存储设备的管理方法,存储系统包含管理服务器和存储节点,其中,存储节点包含nvme接口规范的第一存储设备;存储节点在内存中为第一存储设备的队列的起始地址分配第一内存地址;存储节点向管理服务器发送第一队列消息;第一队列消息包含存储节点的标识和第一内存地址。存储节点将存储设备的队列信息发送给管理服务器,从而使客户端能够使用队列信息直接访问存储设备。

结合本申请第二方面,在第一种可能实现方式中,存储节点检测到第一存储设备安装到存储节点。

结合本申请第二方面或第二方面的第一种可能实现方式,在第二种可能的实现方式中,存储节点检测述第一存储设备从存储节点中移除;存储节点向管理服务器发送队列消息删除消息;队列消息删除消息包含第一内存地址。

本申请第三方面提供了一种存储系统中存储设备的管理方法,其中存储系统包含管理服务器和第一存储节点,第一存储节点包含nvme接口规范的第一存储设备,第一存储设备的队列的起始地址位于第一存储节点的第一内存中的第一内存地址;管理服务器存储第一存储节点的标识和第一内存地址的第一映射关系;客户端向管理服务器发送查询请求;查询请求包含所述第一存储节点的标识;客户端接收来自管理服务器查询请求响应;查询请求响应包含管理服务器根据第一映射关系确定的第一内存地址。客户端查询管理服务器,可以获得存储节点中nvme存储设备的队列信息,从而能够根据队列信息直接访问nvme存储设备,不需要存储节点cpu参与,充分发挥了nvme存储设备的性能。

结合本申请第三方面,在第一种可能实现方式中,客户端向第一存储节点发送第一远程直接内存访问请求;第一远程直接内存访问请求包含第一内存地址。

结合本申请第三方面的第一种可能实现方式,在第二种可能实现方式中,存储系统还包含第二存储节点,第二存储节点包含nvme接口规范的第二存储设备,第二存储设备的队列的起始地址位于第二存储节点的第二内存中的第二内存地址;管理服务器存储第二存储节点的标识和所述第二内存地址的第二映射关系;查询请求包含所述第二存储节点的标识;查询请求响应包含管理服务器根据第二映射关系确定的所述第二内存地址;其中,第一存储设备和第二存储设备构成分条关系;客户端向第二存储节点发送第二远程直接内存访问请求;第二远程直接内存访问请求包含所述第二内存地址。

结合本申请第一方面或第一方面的第一至六任一种可能的实现方式中的存储系统中存储设备的管理方法,本申请第四方面还提供了一种管理服务器,管理服务器包含多个单元,用于执行本申请第一方面或第一方面的第一至六任一种可能的实现方式。

结合用于本申请第二方面或第二方面的第一至二任一种可能的实现方式中的存储系统中存储设备的管理方法,本申请第五方面还提供了一种存储节点,存储节点包含多个单元,用于执行本申请第二方面或第二方面的第一至二任一种可能的实现方式。

结合用于本申请第三方面或第三方面的第一至二任一种可能的实现方式中的存储系统中存储设备的管理方法,本申请第六方面还提供了一种客户端,客户端包含多个单元,用于执行本申请第三方面或第三方面的第一至二任一种可能的实现方式。

本申请第七方面还提供了一种管理服务器,应用于本申请第一方面或第一方面的第一至六任一种可能的实现方式中的存储系统,管理服务器包含处理器和接口,处理器与接口通信,处理器用于执行本申请第一方面或第一方面的第一至六任一种可能的实现方式。

本申请第八方面还提供了一种存储节点,应用于本申请第二方面或第二方面的第一至二任一种可能的实现方式中的存储系统,存储节点包含处理器和接口,处理器与接口通信,处理器用于执行用于执行本申请第二方面或第二方面的第一至二任一种可能的实现方式。

本申请第九方面还提供了一种客户端,应用于本申请第三方面或第三方面的第一至二任一种可能的实现方式中的存储系统,客户端包含处理器和接口,处理器与接口通信,处理器用于执行用于执行本申请第三方面或第三方面的第一至二任一种可能的实现方式。

相应地,本申请第十方面还提供了计算机可读存储介质和计算机程序产品,计算机可读存储介质和计算机程序产品中包含计算机指令用于实现本申请第一方面各方案。

相应地,本申请第十一方面还提供了计算机可读存储介质和计算机程序产品,计算机可读存储介质和计算机程序产品中包含计算机指令用于实现本申请第二方面各方案。

相应地,本申请第十二方面还提供了计算机可读存储介质和计算机程序产品,计算机可读存储介质和计算机程序产品中包含计算机指令用于实现本申请第三方面各方案。

附图说明

图1为本发明实施例分布式块存储系统示意图;

图2为本发明实施例存储节点结构示意图;

图3为本发明实施例分区视图;

图4为本发明实施例分区视图;

图5为本发明实施例nvme存储设备示意图;

图6为本发明实施例存储节点中nvme队列示意图;

图7为本发明实施例存储节点发送队列信息流程图;

图8为本发明实施例管理服务器存储nvme存储设备队列信息示意图;

图9为本发明实施例管理服务器与存储节点通信示意图;

图10为本发明实施例管理服务器存储nvme存储设备队列信息示意图;

图11为本发明实施例管理服务器存储nvme存储设备队列信息示意图;

图12为本发明实施例存储节点存储nvme存储设备队列信息示意图;

图13为本发明实施例访问请求处理流程示意图;

图14为本发明实施例分布式块存储系统示意图;

图15为本发明实施例客户端向存储类内存设备发送rdma写请求示意图;

图16为本发明实施例存储节点结构示意图;

图17为本发明实施例客户端结构示意图;

图18为本发明实施例管理服务器结构示意图;

图19为本发明实施例管理服务器结构示意图;

图20为本发明实施例客户端结构示意图;

图21为本发明实施例客户端结构示意图。

本发明实施例

本发明实施例中的存储系统可以应用到存储阵列(如华为18000系列,v3系列),分布式文件存储系统(如华为9000系列),分布式块存储系统(如华为系列)、分布式对象存储系统或支持日志结构(log-structure)接口的分布式存储系统等。

如图1所示,本发明实施例中的分布式块存储系统,如华为系列。分布式块存储系统包括多个存储节点,如存储节点1、存储节点2、存储节点3、存储节点4、存储节点5和存储节点6,存储节点间通过infiniband或以太网络等互相通信。在实际应用当中,分布式块存储系统中存储节点的数量可以根据实际需求增加,本发明实施例对此不作限定。每一个存储节点包含一个或多个nvme存储设备,例如nvme接口规范的固态硬盘(solidstatedisk,ssd)。本发明实施例中nvme存储设备不限于ssd。本发明实施例中存储节点包含nvme存储设备具体可能为存储节点内部包含nvme存储设备,nvme存储设备也可以是以硬盘簇(justabunchofdisks,jbod)的形式外置于存储节点。

存储节点包含如图2所示的结构。如图2所示,存储节点包含中央处理单元(centralprocessingunit,cpu)201、内存202、接口卡203。内存202中存储计算机指令,cpu201执行内存202中的程序指令执行相应的操作。接卡口303可以为网络接口卡(networkinterfacecard,nic)、infiniband协议接口卡等。另外,为节省cpu201的计算资源,现场可编程门阵列(fieldprogrammablegatearray,fpga)或其他硬件也可以代替cpu301执行上述相应的操作,或者,fpga或其他硬件与cpu201共同执行上述相应的操作。为方便描述,本发明实施例将cpu201与内存202、fpga及其他替代cpu201的硬件或fpga及其他替代cpu201的硬件与cpu201的组合统称为处理器。

在图2所示的结构中,客户端可以是独立于图2所示的设备,例如服务器、移动设备等,也可以是虚拟机(virtualmachine,vm)。客户端运行应用程序,其中,应用程序可以为vm或容器,也可以为某一个特定应用,如办公软件等。客户端向分布式块存储系统写入数据或从分布式块设备存储中读取数据。客户端的结构可参考图2及相关描述。

存储节点的内存202中加载分布式块存储系统程序,cpu201执行内存202中的分布式块存储系统程序,向客户端提供块协议访问接口,为客户端提供分布式块存储接入点服务,使客户端访问分布式块存储系统中存储资源池中的存储资源。通常,该块协议访问接口用于向客户端提供逻辑单元。示例性的,分布式块存储系统初始化时,将哈希空间(如0~2^32,)划分为n等份,每1等份是1个分区(partition),这n等份按照硬盘数量进行均分。例如,分布式块存储系统中n默认为3600,即分区分别为p1,p2,p3…p3600。假设当前分布式块存储系统有18块nvme存储设备,则每块nvme存储设备承载200个分区。分区p包含分别分布在m个存储节点上的共m个nvme存储设备,分区中m个nvme存储设备构成分条关系。分条关系可以为多副本或纠删码(erasurecoding,ec)。分区与nvme存储设备对应关系,即分区与分区包含的nvme存储设备的映射关系,也称为分区视图,如图3所示,以分区包含4个nvme存储设备为例,分区视图为“p2-(存储节点n1-nvme存储设备1)-(存储节点n2-nvme存储设备2)-(存储节点n3-nvme存储设备3)-(存储节点n4-nvme存储设备4)”。即nvme存储设备1、nvme存储设备2、nvme存储设备3和nvme存储设备4构成分条关系。当每个存储节点只包含一个nvme存储设备,图3所示的分区视图也可以表示为p2-存储节点n1-存储节点n2-存储节点n3-存储节点n4。通常分区的划分和分区视图的分配由管理服务器实现。管理服务器会在分布式块存储系统初始化时分配好分区视图,后续会随着分布式块存储系统中nvme存储设备数量的变化进行调整。其中,管理服务器的结构可参考图2所示的结构。为方便客户端访问,减少管理服务器访问压力,其中一种实现,管理服务器会将分区视图发送给客户端。

分布式块存储系统为客户端提供卷作为存储资源。具体实现,分布式块存储系统将nvme存储设备的逻辑地址划分资源池,为客户端提供数据访问,客户端接收的访问请求中的存储地址映射到nvme存储设备的逻辑地址,即客户端访问请求中的存储地址所在的数据块映射到nvme存储设备提供的逻辑地址。客户端访问卷的访问请求,如写请求,写请求携带存储地址和数据。在分布式块存储系统中,存储地址为逻辑块地址(logicalblockaddress,lba)。根据写请求中的存储地址确定写请求对应的数据块。客户端根据数据块查询管理服务器中的分区视图或客户端本地保存的分区视图,确定为数据块分配存储空间的nvme存储设备。例如,假设数据块大小为1024字节,卷中数据块编号从0开始。写请求包含的存储地址为写起始地址为1032字节,大小为64字节,写请求位于编号为1的数据块中(1032/1024),数据块为内偏移为8(1032%1024)。

例如,如图3所示,第1个数据块分布在分区p2,nvme存储设备1、nvme存储设备2、nvme存储设备3和nvme存储设备4构成分条关系为多副本关系。客户端查询分区视图,确定写请求包含的存储地址映射到nvme设备的逻辑地址,例如,存储地址映射到nvme存储设备1、nvme存储设备2、nvme存储设备3和nvme存储设备4的逻辑地址分别为l1、l2、l3和l4。具体实现,客户端根据分区视图查询分区视图中的主存储节点,如存储节点n1,存储节点n1向客户端提供l1、l2、l3和l4。客户端确定提供逻辑地址的nvme存储设备,获得nvme存储设备1、nvme存储设备2、nvme存储设备3和nvme存储设备4的队列的起始地址在内存中的内存地址(以下简称队列的起始地址),客户端获得nvme存储设备的队列的起始地址在内存中的内存地址的具体实现请见下面描述。客户端分别向nvme存储设备1、nvme存储设备2、nvme存储设备3和nvme存储设备4发送rdma写请求。其中,客户端向nvme存储设备1发送的rdma写请求中包含逻辑地址l1和nvme存储设备1的队列的起始地址,还包含客户端接收的写请求中写入l1的数据;客户端向nvme存储设备2发送的rdma写请求中包含逻辑地址l2和nvme存储设备2的队列的起始地址,还包含客户端接收的写请求中写入l2的数据;客户端向nvme存储设备3发送的rdma写请求中包含逻辑地址l3和nvme存储设备3的队列的起始地址,还包含客户端接收的写请求中写入l3的数据;客户端向nvme存储设备4发送的rdma写请求中包含逻辑地址l4和nvme存储设备4的队列的起始地址,还包含客户端接收的写请求中写入l4的数据。具体实现,客户端分别向nvme存储设备1所在的存储节点1的接口卡、nvme存储设备2所在的存储节点2的接口卡、nvme存储设备3所在的存储节点3的接口卡和nvme存储设备4所在的存储节点4的接口卡发送rdma写请求。

另一种实现,如图4所示,分区视图为p2-(存储节点n1-nvme存储设备1)-(存储节点n2-nvme存储设备2)-(存储节点n3-nvme存储设备3)-(存储节点n4-nvme存储设备4)-(存储节点n5-nvme存储设备5)-(存储节点n6-nvme存储设备6)。第1个数据块分布在分区p2,nvme存储设备1、nvme存储设备2、nvme存储设备3、nvme存储设备4、nvme存储设备5和nvme存储设备6构成ec关系,nvme存储设备1、nvme存储设备2、nvme存储设备3和nvme存储设备4为存储数据分片的存储设备,nvme存储设备5和nvme存储设备6为存储校验分片的存储设备。ec分条的长度为12千字节(kilobyte,kb),则数据分片和校验分片的长度均为2kb。例如,第1个分条中,nvme存储设备1、nvme存储设备2、nvme存储设备3和nvme存储设备4分别存储存储地址为0~2kb-1,2kb~4kb-1,4kb~6kb-1,6kb~8kb-1的数据分片,nvme存储设备5和nvme存储设备6分别存储第1分条的校验分片。在该分区的第2个分条中,nvme存储设备1、nvme存储设备2、nvme存储设备3和nvme存储设备4分别存储存储地址为8kb~10kb-1,10kb~12kb-1,12kb~14kb-1,14kb~16kb-1的数据分片,nvme存储设备5和nvme存储设备6分别存储第2分条的校验分片。例如,客户端接收写请求,写请求中包含的存储地址sa为0~8kb-1。客户端查询分区视图,确定存储地址为0~2kb-1的第1数据分片对应的nvme存储设备1的逻辑地址为l1,确定存储地址为2kb~4kb-1的第2数据分片对应的nvme存储设备2的逻辑地址为l2,确定存储地址为4kb~6kb-1的第3数据分片对应的nvme存储设备3的逻辑地址为l3,确定存储地址为6kb~8kb-1的第4数据分片对应的nvme存储设备4的逻辑地址为l4,确定第1分条的第1校验分片对应的nvme存储设备5的逻辑地址为l5,确定第1分条的第2校验分片对应的nvme存储设备6的逻辑地址为l6。客户端查询分区视图的具体实现可以参见本发明实施例前面的描述,在此不再赘述。本发明实施例中,存储地址sa分别映射到l1、l2、l3、l4、l5和l6。客户端确定提供逻辑地址的nvme设备,客户端获得nvme存储设备1、nvme存储设备2、nvme存储设备3、nvme存储设备4、nvme存储设备5和nvme存储设备6的队列的起始地址,客户端获得nvme存储设备的队列的起始地址的具体实现请见下面描述。客户端分别向nvme存储设备1、nvme存储设备2、nvme存储设备3、nvme存储设备4、nvme存储设备5和nvme存储设备6发送rdma请求。其中,客户端向nvme存储设备1发送的rdma写请求中包含逻辑地址l1和nvme存储设备1的队列的起始地址,还包含客户端接收的写请求中写入l1的第1数据分片;客户端向nvme存储设备2发送的rdma写请求中包含逻辑地址l2和nvme存储设备2的队列的起始地址,还包含客户端接收的写请求中写入l2的第2数据分片;客户端向nvme存储设备3发送的rdma写请求中包含逻辑地址l3和nvme存储设备3的队列的起始地址,还包含客户端接收的写请求中写入l3的第3数据分片;客户端向nvme存储设备4发送的rdma写请求中包含逻辑地址l4和nvme存储设备4的队列的起始地址,还包含客户端接收的写请求中写入l4的第4数据分片;客户端向nvme存储设备5发送的rdma写请求中包含逻辑地址l5和nvme存储设备5的队列的起始地址,还包含第1校验分片;客户端向nvme存储设备6发送的rdma写请求中包含逻辑地址l6和nvme存储设备6的队列的起始地址,还包含第2校验分片。

在上述实现方式中,客户端使用rdma写请求将数据直接写入nvme存储设备在存储节点的内存中队列的起始地址,不需要存储节点cpu的参与处理客户端发送的写请求,充分发挥了nvme存储设备的性能,提高了存储系统的写性能。

另一种实现,分布式块存储系统为客户端提供卷作为存储资源。具体实现,分布式块存储系统将nvme存储设备的逻辑地址划分资源池,为客户端提供数据访问,即客户端访问请求中的存储地址所在的数据块映射到nvme存储设备提供的逻辑地址,不需要分区视图。数据块与nvme存储设备提供的逻辑地址的映射可以表示为数据块-----nvme存储设备----逻辑地址。

为进一步描述本发明实施例,如图5所示,nvme存储设备包含nvme控制器501和存储介质502。nvme规范中定义了三个关键组件用于访问请求和数据的处理:提交队列(submissionqueue,sq)、完成队列(completionqueue,cq)和门铃寄存器(doorbellregister,db)。sq用于存储客户端发送的访问请求,cq用于存储nvme存储设备处理访问请求的结果。sq和cq以队列对的形式存在。如图6所示,sq和cq位于存储节点的内存202中,本发明实施例称一对sq和cq为队列。nvme存储设备用于处理访问请求的队列的数量最大可以达到65535个。sq和cq都是环形队列,nvme控制器从sq队列的头获取待处理的访问请求,sq尾用于存储客户端最新发送的访问请求。客户端从cq的头获取访问结果,cq队列的尾用于存储nvme控制器最新处理访问请求的结果。客户端使用rdma请求访问nvme存储设备,需要获取nvme存储设备的sq和cq队列的尾,也就是sq和cq的起始地址分别在内存202中的内存地址。在nvm控制器中有寄存器,用于记录sq和cq的头尾位置,每个sq或cq,都有两个对应的寄存器,即头寄存器和尾寄存器。通常头寄存器也称为头门铃(doorbell,db),尾寄存器也称为尾db。关于db的作用将在后面实施例中具描述。

nvme存储设备连接到存储节点,存储节点启动后,nvme存储设备向存储节点进行注册,如图7所示,存储节点执行如下流程:

步骤701:存储节点在内存202中为队列分配内存地址。

存储节点在内存202中为队列分配内存地址,包含为队列的起始地址在内存中分配内存地址。

步骤702:存储节点向管理服务器发送队列消息;队列消息包含存储节点的标识和队列的起始地址。

存储节点在本地建立存储节点的标识和队列的起始地址的映射关系。存储节点可以包含一个或多个nvme存储设备,队列消息中还可以包含nvme存储设备的标识,以区分存储节点的不同nvme存储设备的队列的起始地址。当存储节点只包含一个nvme存储设备时,队列消息中可以只包含存储节点的标识和队列的起始地址。

在存储节点运行过程中,新的nvme存储设备连接到存储节点,存储节点也执行图7所示的流程。

进一步的,存储节点检测到nvme存储设备从存储节点移除,存储节点向管理服务器发送队列信息删除消息,队列信息删除消息包含队列的起始地址。nvme存储设备从存储节点移除,具体可以包含物理移除或nvme存储设备故障。存储节点可以检测nvme存储设备的驱动以确定nvme存储设备是否从存储节点移除。

管理服务器从存储节点获取队列信息。具体实现,可以由管理服务器向存储节点发送请求用于指示存储节点上报队列信息,或者存储节点主动向管理服务器发送队列信息。其中,队列信息包含存储节点的标识和存储节点为nvme存储设备的队列分配的队列的起始地址。管理服务器建立存储节点的标识和队列的起始地址的映射关系。通常,存储节点包含多个nvme存储设备,为区分同一个存储节点不同nvme存储设备的队列的起始地址,队列信息还包含nvme存储设备的标识,管理服务器建立的映射关系中还包含nvme存储设备的标识。一种实现方式,上述映射关系作为表项存储在如图8所示的表中。换句话说,映射关系可以用如图8所示的表项结构,或其他可体现标识和地址之间关系的数据结构储存。其中,n1、n2和n3分别表示存储节点的标识,d11和d12分别表示存储节点1中的nvme存储设备的标识,add1表示标识为d11的nvme存储设备的队列的起始地址。因为标识为d11的nvme存储设备可以有多个队列,其中一种实现,add1表示nvme存储设备的sq的起始地址,另一种实现,add1还可以表示nvme存储设备的队列的起始地址(sq的起始地址和cq的起始地址)。图8所示的表中其他项的含义可参考上述的表述。存储节点的标识和队列的起始地址的映射关系作为图8所示的表的表项。在存储系统中,每一个存储节点有一个唯一标识,该标识可以是管理服务器为每一个存储节点分配的编号,也可以是存储节点的硬件信息,如接口卡硬件信息,还可以是存储节点的地址信息,如互联网协议地址(internetprotocol,ip)地址。nvme存储设备的标识可以是nvme存储设备的硬件信息,也可以是nvme存储设备所在的存储节点中的内部编号,比如,存储节点1中的nvme存储设备可以标识为d11和d12,或者表示为n1+nvme设备编号,例如,n1+1,n1+2等。管理服务器建立存储节点的标识和队列的起始地址的映射关系,客户端可以从管理服务器获得nvme存储设备队列的信息,从而可以直接访问nvme存储设备,不需要存储节点cpu的参与,充分发挥了nvme存储设备的性能。

在一种实现方式中,如图9所示,管理服务器与存储节点通信,确定存储节点是否正常,如通过定期接收来自存储节点的心跳确定存储节点是否正常。例如管理服务器在预定的时间内未收到存储节点的心跳,管理服务器判断与存储节点通信中断,存储节点发生故障。例如,管理服务器未在预定的时间内收到图9所示的存储节点1发送的心跳,管理服务器判断与存储节点1的通信中断,存储节点1发生故障。结合图8,管理服务器删除表中记录的存储节点1相关的表项,即映射信息,删除存储节点1相关的表项后,表如图10所示。当存储节点1恢复后,执行图7所示的流程。

存储节点中nvme存储设备移除,管理服务器接收来自存储节点的队列信息删除消息,队列信息删除消息包含队列的起始地址。例如,标识为d11的nvme存储设备从存储接节点1中移除,存储节点1向管理服务器发送队列信息删除消息,如图11所示,管理服务器删除图8所示的标识为d11的所有映射关系。另一种实现,存储节点包含多个nvme存储设备,为区分同一个存储节点不同nvme存储设备的队列的起始地址,队列信息还包含nvme存储设备的标识,管理服务器建立的映射关系中还包含nvme存储设备的标识。存储节点向管理服务器发送的队列信息删除消息包含nvme存储设备的标识,管理服务器删除包含该nvme存储设备的标识的映射关系。另一种实现,当新的nvme存储设备安装到存储节点1时,存储节点1在内存中为新的nvme存储设备的队列分配内存地址,执行图7所示流程,在此不再赘述。

本发明实施例中,存储节点本地存储图12所示的表,用于记录本存储节点中nvme存储设备的标识与nvme存储设备的队列的起始地址的映射关系。关于图12中的nvme存储设备的标识的描述可以参考图8到图11的描述,在此不再赘述。本发明实施例图8至图12的表作为一种示意性的数据结构,具体实现可以有多种方式,例如以索引的方式存在,进一步的,可以以多级索引方式存在,例如在图8至图11所示的表中,第一级索引为存储节点标识,用于查找对应的nvme存储设备的标识;第二级索引为nvme存储设备的标识,用于查找存储nvme存储设备的队列的起始地址。

如前所述,客户端访问存储系统,根据访问请求中包含的存储地址确定访问地址对应的nvme存储设备的逻辑地址,例如客户端发送写请求。具体实现可以访问客户端保存的分区视图或查询管理服务器中的分区视图。例如,客户端确定存储地址对应存储节点1中的nvme存储设备1的逻辑地址l1、存储节点2中的nvme存储设备2的逻辑地址l2、存储节点3中的nvme存储设备3的逻辑地址l3和存储节点4中的nvme存储设备4的逻辑地址l4,即nvme存储设备1、nvme存储设备2、nvme存储设备3和nvme存储设备4构成多副本的分条关系。客户端根据为获取提供逻辑地址的nvme存储设备的队列的起始地址,向管理服务器发送查询请求,查询请求中包含存储节点的标识。当存储节点包含多个nvme存储设备时,查询请求中还包括nvme存储设备的标识。例如查询请求中分别包含以下几组标识:存储节点1的标识n1和nvme存储设备1的标识d11,存储节点2的标识n2和nvme存储设备2的标识d21,存储节点3的标识n3和nvme存储设备3的标识d31,存储节点4的标识n4和nvme存储设备4的标识d41。结合图8,管理服务器接收来自客户端的查询请求,查询表项中记录的映射关系,向客户端发送查询请求响应。响应中包含存储节点1的nvme存储设备1的队列的起始地址add1、存储节点2的nvme存储设备2的队列的起始地址addk、存储节点3的nvme存储设备3的队列的起始地址addy、存储节点4的nvme存储设备4的队列的起始地址addz。本发明实施例中,管理服务器向客户端发送的查询请求响应中包含的队列的起始地址包含sq的起始地址,还可以包含cq的起始地址。客户端与管理服务器通信,可以一次获取多个nvme存储设备队列的起始地址,减少了通信交互次数。

管理服务器建立锁定标识,锁定标识用于锁定起始地址add1、addk、addy和addz,一旦存储队列的起始地址被锁定,表示该队列已经被分配给客户端。因此,也可以表述为锁定标识用于锁定存储节点的标识和队列的起始地址的映射关系。具体实现,锁定标识可以是一个标记位,例如用0表示锁定,1表示未锁定。锁定标识可以记录在图8所示的表项中。进一步的,管理服务器还可以记录获得队列的客户端的标识。该标识可以是管理服务器为每一个客户端分配的编号,也可以是客户端的硬件信息,如接口卡硬件信息,还可以是客户端的地址信息,如ip地址。

在本发明实施例中,管理服务器可以根据nvme存储设备的队列的起始地址的锁定信息统计nvme存储设备的负载,根据nvme存储设备的负载动态决定存储地址与nvme存储设备的逻辑地址的映射关系,从而实现存储系统的负载均衡。根据nvme存储设备的负载动态决定存储地址与nvme存储设备的逻辑地址的映射关系是指存储地址与nvme存储设备的逻辑地址映射关系不是在存储系统初始化时绑定的,而是在客户端接收到写请求时,确定写请求中的存储地址映射的nvme存储设备的逻辑地址。其中一种实现,管理服务器在客户端查询写请求中的存储地址映射的nvme存储地址时,管理服务器根据存储系统中nvme存储设备的负载确定nvme存储设备的逻辑地址;另一种实现,管理服务器根据存储系统中nvme存储设备的负载确定分区视图,如分区与存储节点的映射关系。具体的,nvme存储设备的负载可以根据nvme存储设备的队列的起始地址的锁定信息统计。

客户端分别向存储节点1、存储节点2、存储节点3和存储节点4发送rdma写请求。其中,发送给存储节点1的rdma写请求中包含l1和add1;发送给存储节点2的rdma写请求中包含l2和addk;发送给存储节点3的rdma写请求中包含l3和addy;发送给存储节点4的rdma写请求中包含l4和addz。关于客户端分别向存储节点1、存储节点2、存储节点3和存储节点4发送rdma写请求,可以参考本发明实施例前面的描述。本发明实施例以客户端向存储节点1发送rdma写请求为例进行描述。客户端向存储节点1的接口卡发送rdma写请求,存储节点1的接口卡接收rdma写请求,将逻辑地址l1和客户端接收的写请求中写入l1的数据发送到存储节点1的内存地址add1。在图13所示,sq和cq是空的,即初始的头地址和尾地址相同,cq的初始的头地址和尾地址相同。具体操作过程如图13所示:

①客户端向sq的尾发送写请求。

客户端向存储节点1发送rdma写请求,rdma写请求中包含l1和队列的起始地址add1,还包含客户端接收的写请求中写入l1的数据。存储节点1的接口卡接收到rdma写请求,获取l1和add1,例如add1为0。如前所述,本发明实施例中,队列的起始地址add1包含sq的起始地址,另一种实现,队列的起始地址add1还可以包含cq的起始地址,sq尾db初始值为0,cq尾db初始值为0。存储节点1的接口卡将l1和客户端接收的写请求中写入l1的数据发送到sq的起始地址。rdma写请求为1个命令。

②客户端更新sq的尾db。

客户端向sq写入1个rdma写请求,sq的尾变为1。客户端向sq写入1个rdma写请求命令后,更新nvme控制器中的sq尾db,值为1。客户端更新sq尾db的同时,也是在通知nvme控制器有写请求需要执行。

③nvme控制器从sq队列获取写请求并执行写请求。

客户端更新sq尾db,nvme控制器收到通知,从sq获取写请求并执行写请求。

④nvme控制器更新sq头db。

nvme控制器把sq中的写请求执行完,sq的头也变为1,nvme控制器把sq1的头写入到sq头db。

⑤nvme控制器向cq写入写请求执行结果。

nvme控制器执行写请求,将写请求执行结果写入cq的尾。

⑥客户端更新cq的尾db。

nvme控制器执行写请求,向cq尾写入写请求执行结果,更新cq的尾db,值为1。

⑦客户端获取写请求执行结果。

具体实现,客户端可以采用轮询的方式,从cq获取写请求执行结果。

⑧nvme控制器更新cq的头db。

客户端向cq的头db中写入cq的头的地址,值为1。

本发明实施例访问请求处理流程另一种实现方式中,图13中的步骤②和⑥可以也可以由存储节点的接口卡实现。

如图12所示,存储节点记录本存储节点中nvme存储设备的标识与nvme存储设备的队列的起始地址的映射关系。客户端访问存储系统,客户端根据访问请求中包含的存储地址确定存储地址对应的nvme存储设备的逻辑地址,具体实现请参见前面描述。例如,客户端确定存储地址对应存储节点1中的nvme存储设备1的逻辑地址l1、存储节点2中的nvme存储设备2的逻辑地址l2、存储节点3中的nvme存储设备3的逻辑地址l3和存储节点4中的nvme存储设备4的逻辑地址l4,即nvme存储设备1、nvme存储设备2、nvme存储设备3和nvme存储设备4构成多副本的分条关系。在另一种实现方式,客户端分别向存储节点1、存储节点2、存储节点3和存储节点4发送查询请求,查询请求中包含nvme存储设备的标识。结合图12,存储节点1接收来自客户端的查询请求,查询表项中记录的映射关系,向客户端发送查询请求响应。响应中包含存储节点1的nvme存储设备1的队列的起始地址add1。存储节点2、存储节点3和存储节点4分别根据查询请求执行查询操作,向客户端发送查询请求响应。仍以存储节点1为例,存储节点1建立锁定标识,锁定标识用于锁定队列的起始地址add1。一旦队列的起始地址被锁定,表示该队列已经被分配给客户端。具体实现,锁定标识可以是一个标记位,例如用0表示锁定,1表示未锁定。锁定标识可以记录在图12所示的表项中。在这种实现方式中,客户端向存储节点发送查询请求,可以减少管理服务器的负载。客户端从存储节点接收查询请求响应,执行图13所示的操作。

本发明实施例中另一种实现方式,nvme存储设备构成ec的分条关系。客户端也可以使用上述两种方式访问nvme存储设备,在此不再赘述。

本发明实施例中,客户端获得nvme存储设备队列的起始地址,在释放该nvme存储设备队列之前,客户端根据接收访问请求的数量以及队列的起始地址,根据nvme存储设备队列的起始地址的变化,向nvme存储设备队列发送rdma访问请求,并从nvme存储设备的cq获得访问请求执行结果。

在本发明实施例中,客户端可以直接向存储系统中存储节点的nvme存储设备发送rdma请求,不需要存储节点的cpu参与,充分发挥和利用了nvme存储设备的性能。

在nvme存储设备应用到本发明实施例的同时,随着存储设备的发展,存储系统采用多种类似存储设备以提升存储系统性能。例如,存储级内存(storageclassmemory,scm)的存储设备同时具备持久化和快速字节级访问的特点。目前比较流行的scm的存储设备主要包含相变存储器(phase-changememory,pcm)、阻抗随机存储器(resistiverandom-accessmemory,reram)、磁性随机存储器(magneticrandomaccessmemory)和碳纳米管随机存储器(nantero’scntrandomaccessmemory)等。如图14所示,本发明实施例中的分布式块存储系统,每一个存储节点包含一个或多个nvme存储设备,例如nvme接口规范的固态硬盘(solidstatedisk,ssd),同时包含一个或多个scm的存储设备。另一种实现,部分存储节点包含一个或多个nvme存储设备,部分存储节点包含一个或多个scm的存储设备。

在图14所示的分布式块存储系中,分布式块存储系统将nvme存储设备的逻辑地址划分资源池,将scm的存储设备划分为资源池,客户端接收的访问请求中的存储地址映射到nvme存储设备提供的逻辑地址,具体实现可参考前面实施例描述。客户端接收的访问请求中的存储地址到存储设备提供的地址的映射方式可以表示为存储地址-----nvme存储设备----逻辑地址,存储地址---scm的存储设备---基地址。

基于图14所示的分布式存储系统,数据的多个副本可以存储在不同类型的存储设备上。例如,一个副本存储在scm的存储设备上,一个或多个副本存储在nvme存储设备上。或者一个副本存储在scm的存储设备上,一个副本以ec分条的形式存储在多个nvme存储设备上。客户端读取数据时,从scm的存储设备中获取数据,从而提高读性能。

本发明实施例以一个副本存储在scm的存储设备上,两个副本存储在nvme存储设备上为例进行描述。客户端接收的写请求中的数据映射到一个scm的存储设备的基地址和两个nvme存储设备的逻辑地址。如前面所述,具体实现,写请求中的存储地址到scm的存储设备提供的基地址映射以及写请求中的存储地址到nvme存储设备的逻辑地址的映射可以基于图3和图4所示的分区视图,也可以是写请求中的存储地址到scm的存储设备提供的基地址的直接映射以及写请求中的存储地址与nvme存储设备的逻辑地址的直接映射。

进一步的,客户端接收访问请求,根据访问请求中的存储地址,确定存储地址映射的scm的存储设备基地址以及存储地址映射的nvme存储设备的逻辑地址。本发明实施例中,客户端确定存储地址映射的nvme存储设备的逻辑地址,后续的访问过程可以参考前面客户端访问nvme存储设备的过程,在此不再赘述。如图15所示,以副本长度为8字节为例,客户端向scm的存储设备发送rdma写请求的过程如下:

①客户端向存储节点发送获取与增加(fetchandadd(ptr,8))命令。

其中,fetchandadd(ptr,lenvalue)为rdma原子操作指令,用于获取当前已经分配的存储空间的结束地址以及写入数据长度。lenvalue表示写入数据长度,本发明实施例中当前已经分配的存储空间的结束地址为10,lenvalue为8字节。

②存储节点为客户端分配长度为8字节的存储地址。

存储节点收到fetchandadd(ptr,8)命令,将存储地址为11-18预留给客户端。

③存储节点向客户端返回当前已经分配的存储空间的结束地址。

④客户端向存储节点发送rdma写请求。其中,rdma请求中包含长度为8字节的数据和当前已经分配的存储空间的结束地址(基地址)为10。

结合图1所示的存储系统,另一种实现方式,存储节点还可以包含机械硬盘,每一个存储节点包含一个或多个nvme存储设备,例如nvme接口规范的固态硬盘(solidstatedisk,ssd),同时包含一个或多个机械硬盘。另一种实现,部分存储节点包含一个或多个nvme存储设备,部分存储节点包含一个或多个机械硬盘。数据的多个副本可以存储在不同类型的存储设备上。例如,一个副本存储在nvme存储设备上,一个或多个副本存储在机械硬盘上。或者一个副本存储在nvme存储设备上,一个副本以ec分条的形式存储在多个机械硬盘上。客户端读取数据时,从nvme存储设备中获取数据,从而提高读性能。具体访问过程可参考本发明上述各实施例描述,在此不再赘述。客户端向机械硬盘发送的写请求包含客户端接收的写请求中的存储地址映射到机械硬盘的逻辑地址。客户端向机械硬盘发送的写请求也可以为rdma请求。

本发明上述实施例以客户端向存储节点中的nvme存储设备及scm的存储设备发送rdma写请求为例进行说明,本发明实施例方案也可以应用到向存储节点中的nvme存储设备及scm的存储设备发送rdma读请求等,本发明实施例对此不作限定。即本发明实施例可以实现客户端向存储节点中的nvme存储设备及scm的存储设备发送rdma访问请求。本发明实施例中,客户端接收到的访问请求中包含的存储地址可以对应多个存储设备的逻辑地址(或基地址),因此,对其中一个存储设备而言,表示为逻辑地址映射到该存储设备的逻辑地址(或基地址)

基于本发明上述实施例的描述,本发明实施例还提供了存储节点,如图16所示,应用于存储系统中,存储系统还包含管理服务器,存储节点包含nvme接口规范的第一存储设备;存储节点包括分配单元161和发送单元162;其中,分配单元,用于在内存中为第一存储设备的队列的起始地址分配第一内存地址,发送单元162,用于向管理服务器发送第一队列消息;第一队列消息包含存储节点的标识和第一内存地址。进一步的,存储节点还包括检测单元,用于检测到第一存储设备安装到所述存储节点。进一步的,检测单元,还用于检测到第一存储设备从存储节点中移除;发送单元162,还用于向管理服务器发送队列消息删除消息;队列消息删除消息包含第一内存地址。

与图16所示的存储节点对应,本发明实施例还提供了如图17所示的一种应用于存储系统的客户端,存储系统包含管理服务器和第一存储节点,第一存储节点包含nvme接口规范的第一存储设备,第一存储设备的队列的起始地址存储在第一存储节点的第一内存中的第一内存地址;管理服务器存储第一存储节点的标识和第一内存地址的第一映射关系;客户端包括发送单元171和接收单元172,其中,发送单元171,用于向管理服务器发送查询请求;查询请求包含第一存储节点的标识;接收单元172,用于接收来自管理服务器查询请求响应;查询请求响应包含管理服务器根据第一映射关系确定的第一内存地址。进一步的,发送单元171,还用于向第一存储节点发送第一远程直接内存访问请求;第一远程直接内存访问请求包含第一内存地址。进一步的,存储系统还包含第二存储节点,第二存储节点包含nvme接口规范的第二存储设备,第二存储设备的队列的起始地址位于第二存储节点的第二内存中的第二内存地址;管理服务器存储第二存储节点的标识和第二内存地址的第二映射关系;查询请求包含所述第二存储节点的标识;查询请求响应包含所述管理服务器根据第二映射关系确定的第二内存地址;其中,第一存储设备和第二存储设备构成分条关系;发送单元171,还用于向第二存储节点发送第二远程直接内存访问请求;第二远程直接内存访问请求包含第二内存地址。

与图16和17对应,在图18所示实施例中提供了一种存储系统中的管理服务器,存储系统包含管理服务器和第一存储节点,第一存储节点包含nvme接口规范的第一存储设备,第一存储设备的队列的起始地址位于第一存储节点的第一内存中的第一内存地址;管理服务器包括获取单元181、建立单元182、接收单元183和发送单元184;其中,获取单181元,用于从第一存储节点获取第一队列消息;第一队列消息包含第一存储节点的标识和第一内存地址;建立单元182,用于建立第一存储节点的标识和第一内存地址之间的第一映射关系;接收单元183,用于接收来自客户端的查询请求;查询请求包含第一存储节点的标识;发送单元184,用于根据第一映射关系向客户端发送查询请求响应;查询请求响应包含第一内存地址。进一步的,建立单元182,还用于建立锁定标识,锁定标识用于锁定第一内存地址。进一步的,存储系统还包括第二存储节点,第二存储节点包含nvme接口规范的第二存储设备,第二存储设备的队列的起始地址位于第二存储节点的第二内存中的第二内存地址;获取单元181还用于从第二存储节点获取第二存储设备的第二队列消息;第二队列消息包含第二存储节点的标识和第二内存地址;建立单元182,还用于建立第二存储节点的标识和第二内存地址的第二映射关系。进一步的,获取单元181还用于从第一存储节点获得第三队列消息;第三队列消息包含第一存储节点的标识和第三内存地址;建立单元182,还用于建立第一存储节点的标识和第三内存地址的第三映射关系;其中,nvme接口规范的第三存储设备的队列的起始地址位于第一内存中的第三内存地址,第三存储设备为所述第一存储节点新增加的存储设备。进一步的,接收单元183,还用于从第二存储节点接收队列消息删除消息;队列消息删除消息包含第二内存地址,管理服务器还包含删除单元,用于删除第二映射关系。进一步的,管理服务器,还包括检测单元和删除单元;其中,检测单元,用于检测到与第一存储节点通信中断;删除单元,用于删除第一映射关系。进一步的,检测单元,具体用于检测在预定的时间内未收到第一存储节点的心跳。

如图19所示,本发明实施例进一步提供了一种存储系统中的管理服务器,存储系统还包含第一存储节点和第二存储节点,第一存储节点包含nvme接口规范的第一存储设备,第一存储设备的队列的起始地址位于第一存储节点的第一内存中的第一内存地址;第二存储节点包含nvme接口规范的第二存储设备,第二存储设备的队列的起始地址位于第二存储节点的第二内存中的第二内存地址;管理服务器存储映射表,映射表包含第一存储节点的标识和第一内存地址之间的第一映射关系以及第二存储节点的标识和第二内存地址之间的第二映射关系;管理服务器包括接收单元191和发送单元192;其中,接收单元191,用于接收来自客户端的查询请求;查询请求包含第一存储节点的标识和第二存储节点的标识;发送单元192,用于根据映射表向所述客户端发送查询请求响应;查询请求响应包含第一内存地址和第二内存地址。进一步的,管理服务器还包括获取单元和建立单元,用于从第一存储节点获取第一队列消息,从第二存储节点获取第二队列消息;第一队列消息包含第一存储节点的标识和第一内存地址;第二队列消息包含第二存储节点的标识和第二内存地址;建立单元,用于建立第一映射关系和第二映射关系。进一步的,建立单元还用于建立锁定标识,锁定标识用于锁定第一映射关系和第二映射关系。进一步的,获取单元还用于从第一存储节点获得第三队列消息;第三队列消息包含第一存储节点的标识和第三内存地址;建立单元,还用于建立第一存储节点的标识和第三内存地址的第三映射关系;其中,nvme接口规范的第三存储设备的队列的起始地址位于第一内存中的第三内存地址,第三存储设备为所述第一存储节点新增加的存储设备。进一步的,管理服务器,还包括删除单元;接收单元191,还用于从第二存储节点接收队列消息删除消息;队列消息删除消息包含第二内存地址;删除单元,用于从映射表中删除第二映射关系。进一步的,管理服务器,还包括检测单元和删除单元;其中,检测单元,用于检测到与第一存储节点通信中断;删除单元,用于删除第一映射关系。进一步的,检测单元具体用于检测到在预定的时间内未收到第一存储节点的心跳。

与图19描述的管理服务器对应,图20提供了本发明实施例的存储系统中的客户端,存储系统包含管理服务器、第一存储节点和第二存储节点,第一存储节点包含nvme接口规范的第一存储设备,第一存储设备的队列的起始地址位于第一存储节点的第一内存中的第一内存地址;第二存储节点包含nvme接口规范的第二存储设备,第二存储设备的队列的起始地址位于第二存储节点的第二内存中的第二内存地址;管理服务器存储映射表,映射表包含第一存储节点的标识和所述第一内存地址之间的第一映射关系以及第二存储节点的标识和第二内存地址之间的第二映射关系;客户端包括发送单元2001和接收单元2002;其中,发送单元2001,用于向管理服务器发送查询请求;查询请求包含第一存储节点的标识和第二存储节点的标识;接收单元2002,用于接收来自管理服务器的查询请求响应;查询请求响应包含管理服务器根据映射表确定的第一内存地址和第二内存地址。进一步的,发送单元2002,还用于向第一存储节点发送第一远程直接内存访问请求,向第二存储节点发送第二远程直接内存访问请求;第一远程直接内存访问请求包含第一内存地址;第二远程直接内存访问请求包含第二内存地址。

如图21所示,本发明实施例提供了存储系统中另一种客户端,存储系统包含第一存储节点,第一存储节点包含nvme接口规范的第一存储设备,第一存储设备的队列的起始地址位于第一存储节点的第一内存中的第一内存地址,客户端包括接收单元2101、查询单元2102、获取单元2103和发送单元2104;其中,接收单元2101,用于接收写请求,写请求包含存储地址;查询单元2102,用于查询存储地址的映射关系,存储地址的映射关系所述存储地址映射到第一存储节点的第一存储设备的第一逻辑地址;获取单元2103,用于获取第一存储设备的队列的起始地址所在的第一内存地址;发送单元2104,用于向第一存储节点发送第一远程直接内存访问写请求;第一远程直接内存访问写请求包含第一内存地址和第一逻辑地址。进一步的,存储系统还包括管理服务器,管理服务器存储有第一存储节点的标识与所述内存地址的映射关系;获取单元2103,具体用于:向管理服务器发送第一查询请求;第一队列查询请求包含第一存储节点的标识,接收来自管理服务器的第一查询请求响应,第一查询请求响应包含第一内存地址。进一步的,获取单元2103,具体用于:向第一存储节点发送第二查询请求;第二查询请求包含第一存储设备的标识;接收来自第一存储节点的第二查询请求响应;第二查询请求响应包含所述第一内存地址。进一步的,存储系统还包括第二存储节点,第二存储节点包含存储级内存的第二设备,存储地址的映射关系包含存储地址映射到第二存储设备的第一基地址;发送单元2104,还用于向所述第二存储节点发送第二远程直接内存访问写请求;第二远程直接内存访问写请求包含所述第一基地址。进一步的,存储系统还包括第三存储节点,第三存储节点包含第三存储设备,存储地址的映射关系包含存储地址映射到第三存储设备的第三逻辑地址;第三存储设备为机械硬盘;发送单元2104,还用于向第三存储节点发送第三写请求;第三写请求包含所述第三逻辑地址。进一步的,存储系统包含第四存储节点,第四存储节点包含nvme接口规范的第四存储设备,第四存储设备的队列的起始地址位于第四存储节点的第三内存中的第三内存地址;存储地址的映射关系包含存储地址映射到第四存储设备的第四逻辑地址;获取单元2101,还用于获取第四存储设备的队列的起始地址所在的第三内存地址;发送单元2104,还用于向第一存储节点发送第四远程直接内存访问写请求;第四远程直接内存访问写请求包含第三内存地址和第四逻辑地址。

本发明实施例中,队列的起始地址位于内存中的内存地址与队列在内存中的起始地址具有相同的含义。上述描述也称为队列在内存中的起始地址位于内存中的某一内存地址。

本发明实施例的管理服务器、存储节点和客户端的实现可以参考前面本发明实施例中的管理服务器、存储节点和客户端的描述。具体的,本发明实施例中的装置可以为软件模块,可以运行在服务器上,从而使服务器完成本发明实施例中描述的各种实现。装置也可以为硬件设备,具体可以参考图2所示的结构,装置的各单元可以由图2描述的服务器的处理器实现。

相应的,本发明实施例还提供了计算机可读存储介质和计算机程序产品,计算机可读存储介质和计算机程序产品中包含计算机指令用于实现本发明实施例中描述的各种方案。

本发明实施例中以ec和多副本作为分条算法,但本发明实施例中的分条算法并不限于ec和多副本作为分条算法。

在本发明所提供的几个实施例中,应该理解到,所公开的装置、方法,可以通过其它的方式实现。例如,以上所描述的装置实施例所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

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

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

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