一种数据访问方法、装置和系统与流程

文档序号:14491493阅读:164来源:国知局
一种数据访问方法、装置和系统与流程
本申请涉及存储
技术领域
,尤其涉及一种数据访问方法、装置和系统。
背景技术
:如图1所示,为现有技术提供的一种存储系统的架构示意图。该存储系统通过两个交换机连接至主机。该存储系统还包括与每一交换机均连接的多个双控阵列。每个双控阵列包括两个存储控制器,以及与每一存储控制器均连接的多个机械硬盘(harddiskdrive,hdd)。两个存储控制器之间通过冗余镜像通道连接,以实现写数据流程中的镜像操作。在该系统中,每个双控阵列作为一个双控阵列单元,每个双控阵列单元与主机的一部分逻辑区块地址(logicalblockaddress,lba)对应。主机发送的读/写请求经交换机被转发至与该读/写请求所携带的lba对应的双控阵列单元。然后,该双控阵列单元在本地实现数据的读/写操作。图1所示的系统架构是基于hdd提出的,随着快速非易失性存储器(nonvolatilememoryexpress,nvme)固态硬盘(solidstatedisk,ssd)的逐渐普及,将nvmessd应用于双控阵列成为一种普遍的选择。然而,相对hdd,nvmessd的性能有了数百倍乃至上千倍的增强,如intel的p3600nvmessd,只读iops达到了45万次,只写iops也达到了7万次,其中,iops是每秒进行读/写操作的次数(input/outputoperationspersecond)的英文缩写。由于图1所示的系统架构中,所有的处理操作均集中在两个存储控制器上,而存储控制器的处理能力有限,因此,图1所示的双控阵列存储架构不再适用于以nvmessd作为存储介质的存储系统,亟需提供一种新的系统架构。技术实现要素:本申请实施例提供一种数据访问方法、装置和系统,用以提供一种适用于以nvmessd作为存储介质的存储系统。为达到上述目的,本申请实施例采用如下技术方案:第一方面,提供一种数据访问方法,应用于存储系统中的第一存储节点,第一存储节点通过交换机与主机和存储系统中的至少一个第二存储节点连通,至少一个第二存储节点所包括的物理盘映射为第一存储节点的虚拟盘。该方法可以包括:接收第一写请求,第一写请求携带第一待写数据;然后,对第一待写数据进行条带化,得到条带化数据;并将条带化数据写入第一存储节点的物理盘和/或虚拟盘;以及记录条带化数据的写入位置。其中,第一存储节点可以是存储系统中的任意一个存储节点。第一存储节点接收的第一写请求可以是主机发送的第一写请求,也可以是任一个第二存储节点转发的来自主机的第一写请求。该技术方案中,每一存储节点包括的部分或全部物理盘(例如存储芯片)可以映射到其他存储节点,作为其他存储节点的虚拟盘,例如但不限于通过nof协议进行映射,因此,相比现有技术,可以不受双控阵列中cpu或存储控制器处理能力的限制,可以很大程度上提高存储系统的处理能力。在一种可能的设计中,当条带化数据写入的是虚拟盘时,将条带化数据写入第二存储节点中映射虚拟盘的物理盘。例如,第一存储节点将对应的条带化数据发送至对应的第二存储节点中,然后,由第二存储节点将所接收到的数据存储在本地盘(即映射至该虚拟盘的物理盘)中。在一种可能的设计中,在记录条带化数据的写入位置时,还记录第一待写数据的指纹。例如但不限于在第一待写数据的分布信息中记录条带化数据的写入位置以及第一待写数据的指纹。具体实现可以参考下述具体实施方式。在一种可能的设计中,在记录条带化数据的写入位置时,还记录第一待写数据的lba,其中,该lba是写请求中携带的lba。例如但不限于在第一待写数据的分布信息中记录条带化数据的写入位置,以及第一待写数据的lba。上文中是以第一存储节点作为执行写操作的存储节点提供的技术方案。在另一些实施例中,第一存储节点还可以执行其他步骤:在一种可能的设计中,第一存储节点可以接收主机发送的第二写请求,第二写请求携带第二待写数据;然后,根据第二写请求确定第二写请求的归属节点,如果第二写请求的归属节点是第一存储节点,则由第一存储节点对第二写请求执行写操作,如果第二写请求的归属节点是第二存储节点,则第一存储节点将第二写请求转发至第二存储节点,以使第二存储节点对第二写请求执行写操作。其中,执行写操作的实现方式可以参考上文提供的技术方案或者下文中的具体实施方式,此处不再赘述。在一种可能的设计中,根据第二写请求确定第二写请求的归属节点,可以包括:计算第二待写数据的指纹;然后,根据第二待写数据的指纹确定第二写请求的归属节点。该可能的设计中,第二写请求的归属节点具体是第二待写数据的归属节点。在此基础上,可选的,该方法还可以包括;确定第二写请求携带的lba的归属节点;其中,lba的归属节点用于管理lba与第二待写数据的指纹之间的映射关系。在一种可能的设计中,根据第二写请求确定第二写请求的归属节点,可以包括:根据第二写请求携带的lba确定第二写请求的归属节点。该可能的设计中,第二写请求的归属节点具体是第二写请求携带的lba的归属节点。上文中是以写数据流程中,第一存储节点所执行的步骤为例进行说明的,以下说明在读数据流程中,第一存储节点所执行的步骤。在一种可能的设计中,第一存储节点接收第一读请求所请求的第一待读数据的指纹;然后,根据第一待读数据的指纹,获取第一待读数据的写入位置,并从第一待读数据的写入位置,读取第一待读数据的条带化数据。其中,第一存储节点中存储有第一待写数据的写入位置与第一待写数据的指纹之间的映射关系。在一种可能的设计中,第一存储节点第一读请求,第一读请求携带第一lba;然后,根据第一lba,获取第一读请求所请求的第一待读数据的写入位置,并从第一待读数据的写入位置,读取第一待读数据的条带化数据。其中,第一存储节点中存储有第一待写数据的写入位置与第一lba之间的映射关系。上文中读数据流程所提供的技术方案,是以第一存储节点执行读操作的存储节点为例进行说明的,在另一些实施例中,第一存储节点还可以执行其他步骤:在一种可能的设计中,第一存储节点接收主机发送的第二读请求;然后,根据第二读请求确定第二读请求的归属节点,如果第二读请求的归属节点是第一存储节点,则由第一存储节点对第二读请求执行读操作,如果第二读请求的归属节点是第二存储节点,则第一存储节点将第二读请求转发至第二存储节点,以使第二存储节点对第二读请求执行读操作。其中,执行读操作的实现方式可以参考上文提供的技术方案或者下文中的具体实施方式,此处不再赘述。在一种可能的设计中,根据第二读请求确定第二读请求的归属节点,可以包括:确定第二读请求携带的lba的归属节点,lba的归属节点用于管理lba与第二读请求所请求的第二待读数据的指纹的映射关系;然后,从第二lba的归属节点中获取第二待读数据的指纹;并根据第二待读数据的指纹确定第二读请求的归属节点。或者,确定第二读请求携带的lba的归属节点,然后,从第二lba的归属节点中获取第二待读数据的指纹以及第二读请求的归属节点。该可能的设计中,第二读请求的归属节点具体是第二待读数据的归属节点。在一种可能的设计中,根据第二读请求确定第二读请求的归属节点,可以包括:根据第二读请求携带的lba,确定第二读请求的归属节点。该可能的设计中,第二读请求的归属节点具体是第二读请求携带的lba的归属节点。第二方面,提供一种存储节点,该存储节点可以根据上述方法示例对存储节点进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。第三方面,提供一种存储节点,包括:存储器和处理器,其中,存储器用于存储计算机程序,该计算机程序被处理器执行时,使得第一方面提供的任意方法被执行。其中,存储器可以是内存和/或存储芯片等。处理器可以是cpu和/或控制存储器等。第四方面,提供一种数据访问系统,包括:上述第二方面和第三方面提供的任一种存储节点,该存储节点通过交换机与主机和存储系统中的至少一个第二存储节点连通,至少一个第二存储节点所包括的物理盘映射为该存储节点的虚拟盘。本申请还提供了一种计算机可读存储介质,其上储存有计算机程序,当该程序在计算机上运行时,使得计算机执行上述第一方面所述的方法。本申请还提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一方面所述的方法。本申请还提供了一种通信芯片,其中存储有指令,当其在存储节点上运行时,使得存储节点上述第一方面所述的方法。可以理解地,上述提供的任一种装置或计算机存储介质或计算机程序产品均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。附图说明图1为现有技术提供的一种存储系统的架构示意图;图2为本申请实施例提供的技术方案所适用的一种系统架构的示意图;图3为本申请实施例提供的一种物理盘与虚拟盘之间的映射示意图;图4a为图2所示的系统架构的一种硬件形态的前视图;图4b为图2所示的系统架构的一种硬件形态的后视图;图4c为图2所示的系统架构的一种硬件形态的顶视图;图5为图2所示的系统架构的一种扩展后的系统架构的示意图;图6为本申请实施例提供的写数据的方法的流程图一;图7为本申请实施例提供的基于图6的读数据的方法的流程图;图8为本申请实施例提供的写数据的方法的流程图二;图9为本申请实施例提供的基于图8的读数据的方法的流程图;图10为本申请实施例提供的写数据的方法的流程图三;图11为本申请实施例提供的基于图10的读数据的方法的流程图;图12为本申请实施例提供的写数据的方法的流程图四;图13为本申请实施例提供的基于图12的读数据的方法的流程图;图14为本申请实施例提供的一种存储节点的结构示意图。具体实施方式本文中的术语“多个”是指两个或两个以上。本文中的术语“第一”、“第二”等仅是为了区分不同的对象,并不对其顺序进行限定,比如第一存储节点和第二存储节点是为了区分不同的对象,并不对其顺序进行限定。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。图2给出了本申请提供的技术方案所适用的一种系统架构的示意图。图2所示的系统架构可以包括主机1以及存储系统2。存储系统2可以包括:交换机21,以及与该交换机21分别连接的多个存储节点22。可以理解的,为了提高可靠性,存储系统2中一般可以设置至少两个交换机21,此时,每一存储节点22均与每一交换机21连接。图2中以存储系统2包括2个交换机21为例进行说明。交换机21,用于连通各存储节点22,以及存储节点22与主机1。交换机21可以例如但不限于是以太网交换机(ethernetswitch),ib交换机(infinibandswitch),pcie交换机(pcieswitch)等。示例的,从功能上进行划分,交换机21可以包括内部交换端口211和存储服务端口212,可选的,还可以包括扩展端口213。其中,内部交换机端口211是连接存储节点22的端口。每个交换机22上可以设置一个或多个内部交换端口211,每个内部交换端口211可以连接一个存储节点22的一个内部端口220。存储服务端口212是连接主机1的端口,用于对外提供存储服务。每个交换机21上可以设置一个或多个存储服务端口212。扩展端口213,用于连接其他交换机21,以实现多个存储系统2的横向扩展。应注意,上述几种端口是从用途上进行划分的,在物理实现上,这些端口可以是相同的。例如,在某些情况下,扩展端口213可以作为存储服务端口212使用,其他示例不再一一列举。理论上,内部交换端口211可以作为存储服务端口212或扩展端口213,实际上,可以根据存储系统的硬件形态来设置。例如在如图4a~4c所示的硬件形态中,由于内部交换端口211位于机框内部,而存储服务端口212和扩展端口213位于机框表面,因此,一般地,不将内部交换端口211作为存储服务端口212或扩展端口213。存储节点22,是存储系统中提供输入/输出(input/output,i/o)处理能力与存储空间的核心部件。示例的,每个存储节点22上可以设置一个或多个内部端口220,其中,内部端口220是连接交换机21的内部交换端口211的端口,每个内部端口220可以连接一个交换机21。内部端口220可以例如但不限于通过远程直接内存访问(remotedirectmemoryaccess,rdma)网卡提供。如果交换机21是以太网交换机,这样,就组成了冗余的以太网络,或者称为存储系统2的内部以太网,有助于实现当任何一个端口或者连接或者交换机失效时仍然有连接可用。在一种实现方式中,图2所示的存储节点包括:执行与i/o模块221,以及与执行与i/o模块221连接的一个或多个存储模块222。执行与i/o模块221,负责i/o请求(包括读/写请求)的输入输出以及相关处理流程的执行。具体实现时,执行与i/o模块221可以是至少一个中央处理器(centralprocessingunit,cpu)通过i/o总线,与至少一个rdma网卡连接,另外,cpu上还可以连接一定数量的内存。rdma网卡上提供内部端口220,以连接交换机21。其中,i/o总线可以例如但不限于是快速外部设备互连总线(peripheralcomponentinterconnectexpress,pcie)。应注意,在物理实现上,此处的cpu、i/o总线、与rdma网卡中的部分或全部可以集成在一起,如片上系统(systemonchip,soc)或现场可编程门阵列(field-programmablegatearray,fpga);也可以是通用器件,如通过cpu(如至强cpu)和通用rdma网卡。执行与i/o模块221通过内部i/o总线与存储模块222连接。存储模块222,可以包括至少一个存储控制器,以及每一存储控制器连接的多个存储芯片。其中,存储芯片可以是nandflash芯片,也可以是其他的非易失的存储芯片,如相变存储器(phasechangememory,pcm)、磁阻式随机访问存储器(magneticrandomaccessmemory,mram)、阻变式存储器(resistiverandomaccessmemory,rram)。存储控制器可以是专用集成电路(applicationspecificintegratedcircuit,asic)芯片,也可以是fpga。同样的,此处的存储模块的物理形态可以是通用的固态硬盘(solidstatedrives,ssd),也可以是将存储控制器、存储芯片与上述执行与i/o模块221通过i/o总线连接起来。在一种实现方式中,当执行与i/o模块221、存储模块222均由通用部件构成,例如由通用的cpu(如x86至强)、通用的rdma网卡、通用的ssd等器件构成,此时,存储节点22即为通用服务器。本申请提供的技术方案中,主机与存储系统之间可以通过nof(nvmeoverfabric)协议访问。每一存储节点包括的部分或全部物理盘(例如存储芯片)可以映射到其他存储节点,作为其他存储节点的虚拟盘。例如基于nof协议进行映射。如此一来,在执行读/写操作时,存储节点中的软件系统(即cpu或内存控制器所执行的指令)可以将这些虚拟盘当作本地的物理盘使用。也就是说,本申请提供了一种分布式存储系统。由于本存储系统中,不同存储节点之间通过交换机互相连通,通过rdma网卡及nof协议所提供的rdma方式互相访问,相比图1所示的系统架构,不受双控阵列中cpu或存储控制器处理能力的限制,可以很大程度上提高存储系统的处理能力。图3给出了一种物理盘与虚拟盘之间的映射示意图。其中,图3中是以存储系统中包括16个存储节点,分别编号为1~16,且以存储节点2~15中的每一存储节点将其中的物理盘映射到存储节点1中,作为存储节点1的虚拟盘为例进行说明的。另外,以存储芯片是nvmessd为例进行说明。例如,存储节点2~15中的每一存储节点将其中的物理盘映射到存储节点1中的一种实现方式为:存储系统初始化时,存储节点2~15分别配置允许映射至存储节点1的物理盘的信息;然后分别与存储节点1之间建立连接。建立连接之后,存储节点1可以获取到存储节点2~15分别确定允许映射至存储节点1的物理盘的信息,并为映射至存储节点1的物理盘分配盘符,作为存储节点1的虚拟盘,并记录虚拟盘与远端物理盘的映射关系。如此一来,存储节点1上的软件系统可感知有16个nvmessd,但实际上只有1个nvmessd是在本地的,其余15个nvmessd是其他存储节点的nvmessd通过nof协议虚拟出来的。由于nof协议的低延迟特性,访问本地盘(即物理盘)与虚拟盘性能差异可以时忽略不计。以下,对nof协议做简单介绍:nof协议的目标是可以将nvmessd与本地计算机系统解耦,即可以将远端nvmessd用rdma网卡与本地计算机连接起来,在本地计算机系统中“看到”的是一个虚拟的nvmessd。由于使用了rdma技术,远端的nvmessd(即虚拟nvmessd)与本地的nvmessd(即物理nvmessd)性能基本没有差别。nof继承了nvme的所有命令,并增加了一些管理命令,例如:authenticationsend、authenticationreceive、connect、propertyget、propertyset。为了适配rdma网络,nof协议的数据传送方式以及流程相对于原始nvme协议有一些改变,具体可以包括:使用rdma方式传送命令(如读/写请求)/数据,而非nvme使用的pcie内存空间映射方式,这是因为在nof系统中,启动器(initiator)和目标器(target)无法“看到”对方的内存空间。在本申请的一种实现方式中,启动器可以是主机,目标器可以是存储节点。在另一种实现方式中,启动器可以是一个存储节点,目标器可以是另一个存储节点。nof协议中,读数据流程可以包括:目标器接收到读请求(即read命令)之后,根据该读请求获得要写入启动器的缓存的地址信息。然后,目标器向启动器发起rdma_write,以将读取到的数据写入主机缓存。接着,目标器向启动器发起rdma_send,以通知启动器传送完毕。nof协议中,写数据流程可以包括:启动器将写请求(即write命令)组装完毕,通过rdma_send发送给目标器。目标器收到写请求后,启动rdma_read并从启动器获取该写请求要写入的数据。目标器接收到启动器回应的数据之后,向启动器发起rdma_send,以通知启动器传送完毕。以下,说明存储系统2的硬件形态。本申请对交换机21和存储节点22的硬件形态均不进行限定。存储节点22与交换机21可以存在于一个机框内。当存储节点22采用通用服务器实现时,存储节点22与交换机21可以存在于一个机架内。存储节点22与交换机21存在于一个机框时,该机框内可以包括一个或多个交换机,一个或多个电源,多个存储节点,以及连接存储节点22与交换机21的背板等。图4a~图4c给出了图2所示的系统架构的一种硬件形态。其中,图4a示出了一个机架式机框的前视图,图4b示出了该机架式机框的后视图,图4c示出了该机架式机框的顶视图。由图4a~2c可以看出,该机架式机框包括2个以太网交换机、4个冗余电源、16个存储节点、以及连接存储节点与以太网交换机的背板。从图4a所示的前视图以及图4c所示的顶视图可以看出,机架式机框上设置有16个空槽位,每个空槽位可用于插入一个存储节点,实际实现时,可以不全部插满,同时为了满足冗余要求,最低可以插入2个存储节点。每个存储节点上设置有一个或多个拉手条,用于实现将该存储节点插入到空槽位。从图4b所示的后视图可以看出,存储服务端口与扩展端口通过以太网交换机提供。这里的服务端口可以是多种以太网速率(如10g/40g/25g/50g/100g)的端口;扩展端口则可以是高速端口(如40g/50g/100g)。从图4c所示的顶视图可以看出,以太网交换机的内部端口与存储节点的内部端口可以通过背板实现连接。应注意,图4a~图4c所示的机架式机框,仅为图2所示的系统架构的硬件形态的一种示例,其不构成对图2所示的系统架构的硬件形态的限制。图5提供了一种扩展的系统架构。该系统架构中,存储系统通过存储服务端口对外提供存储服务,与m个主机通过网络连接,其中,m是大于或等于1的整数。此处的网络可由直连的或者通过交换机组成的网络构成。若该网络是以太网网络,则存储系统对外的服务可使用基于以太网的存储协议提供,包括但不限于是以下任一种:iscsi、nof、iser、nfs、samba等。另外,存储系统也可以通过扩展端口进行横向扩展,如图5所示包括n个存储系统,其中,n是大于或等于2的整数。同样的,横向扩展可以通过直连的网络或者通过交换机进行连接。以下,结合附图对基于本申请提供的系统架构下的读写数据的流程进行说明。在此之前,需要说明的是,下文所示的实施例均是以存储系统中包括16个存储节点,编号为存储节点1~16为例进行说明的,当然具体实现时不限于此。另外需要说明的是,每一存储节点所执行的步骤可以是由该存储节点中的cpu和/或存储控制器执行。实施例1如图6所示,为本申请实施例提供的应用于图2所示的存储系统的一种写数据的方法的流程图。具体的:s101:主机向存储系统发送写请求,其中,该写请求包括lba1和待写数据。存储系统中的存储节点1接收该写请求。具体的:主机经交换机将该写请求转发至存储节点1。其中,存储节点1可以是存储系统中的任意一个存储节点。通常,为了降低写流程中因存储节点失效等原因导致待写数据丢失,存储系统接收到来自主机的写请求之后,会对该写请求进行备份。具体可以参考s102~s103。可以理解的,s102~s103是可选的步骤。s102:存储节点1向存储节点1的镜像节点如存储节点2发送该写请求。具体的,存储节点1经交换机向存储节点2发送该写请求。存储节点2接收该写请求。存储系统中的任意两个存储节点可以互为彼此的镜像节点,通常,哪两个存储节点互为彼此的镜像节点可以是根据一定的规则预先设置好的。该规则可以例如但不限于根据一定的规则设置,以实现负载均衡,其中,这里的负载均衡是指,执行镜像操作的步骤尽量由各存储节点均匀分担。例如,依次将编号相邻的两个存储节点作为彼此的镜像节点,例如,存储节点1与存储节点2互为彼此的镜像节点,存储节点3与存储节点4互为彼此的镜像节点……s103:存储节点2缓存该写请求,并向存储节点1返回镜像完成指示,存储节点1接收该镜像完成指示。s104:存储节点1接收到镜像完成指示之后,向主机发送写操作完成指示。通常,为了加快存储系统对主机的写请求的响应,在镜像完成之后,存储系统即向主机发送写操作完成指示。而存储系统中继续执行以下步骤s105~s118中的部分或全部,完成对写请求中的待写数据的写入。s105:存储节点1生成待写数据的指纹,并根据该指纹确定待写数据的归属节点,例如存储节点3。数据的指纹用于唯一标记该数据的特征,换言之,数据的指纹可以理解为数据的身份标识(identity,id)。若两个数据的指纹相同,则认为这两个数据相同。若两个数据的指纹不同,则认为这两个数据不同。本申请对如何计算得到数据的指纹不进行限定,例如,可以通过对数据进行哈希(hash)运算得到,其中,哈希运算可以例如但不限于是安全散列算法1(securehashalgorithm1,sha-1),循环移位校验(cyclicredundancycheck,crc)32等,其中,crc32是crc一种具体实现,其可以生成32比特的校验值。以sha-1为例,对数据进行哈希运算之后,会得到160位的摘要,该摘要即为该数据的指纹。数据的归属节点即对该数据执行写操作的存储节点。本申请对如何确定数据的归属节点不进行限定,具体可以例如但不限于根据一定的算法确定数据的归属节点,以实现负载均衡,这里的负载均衡是指,执行写操作的步骤尽量由各存储节点均匀分担。例如,该算法可以是取模运算。具体的,对指纹进行取模运算,若得到的值为a,则该数据的归属节点是存储节点a+1,其中,a≥0,a是整数,存储系统中的存储节点从1开始编号。例如,若存储系统中共有16个存储节点,数据的指纹是65537,则可以将65537按照16取模,得到1,即该数据的归属节点是存储节点2。应注意,待写数据的归属节点是依据数据的指纹确定的,而存储节点1的镜像节点是依据存储节点1确定的,二者无关联关系,可以为同一存储节点,也可以为不同的存储节点,本实施例中是二者不同为例进行说明的。可以理解的,接收主机发送的写请求的存储节点(本实施例中以存储节点1为例),也可以作为该写请求所携带的待写数据的归属节点。例如,基于上述示例,若待写数据的指纹是65536,则可以将65536按照16取模,得到0,即待写数据的归属节点是存储节点1。s106:存储节点1向待写数据的归属节点(如存储节点3)转发该写请求。存储节点3接收该写请求。s107:存储节点3查询数据分布信息集合,并判断该集合中是否包含待写数据的指纹。若否,说明存储系统中还未存储待写数据,则执行s108。若是,说明存储系统中已经存储了待写数据,则执行s111,以避免重复存储,从而节省存储空间。数据的归属节点可以管理数据分布信息集合。数据的归属节点所管理的数据分布信息集合中包括的数据分布信息的个数随着该存储节点执行下盘操作的个数的增加而增加。初始时刻(即该存储节点并未执行写操作时),可以认为该存储节点所管理的数据分布信息集合为空,或者可以认为存储系统中还没有建立该存储节点所管理的数据分布信息集合。其他时刻,每一数据分布信息集合可以包括至少一个数据的分布信息。数据的分布信息可以用元数据表m1表示,m1的相关说明如下文。s108:存储节点3对待写数据进行条带化,得到条带化数据,并将条带化数据写入存储节点3的物理盘和/或虚拟盘。该步骤可以理解为对数据进行冗余处理,其基本原理为:将一个完整的数据(具体为写请求中携带的数据)打散,得到多个数据块,可选的还可以生成一个或多个校验块。然后将这些数据块和校验块存储在不同的盘(即磁盘)中。s108中的条带化数据可以包括数据块,进一步地可以包括校验块。本申请对冗余处理方式不进行限定,可以例如但不限于是:独立硬盘冗余阵列(redundantarrayofindependentdisks,raid,简称磁盘阵列)或者纠删码(erasurecoding,ec)等。本申请中,由于一个或多个存储节点的物理盘可以被映射至同一个存储节点的虚拟盘,所以在存储节点3写入数据的时候,可以将该虚拟盘作为本地盘使用,这样,存储节点3可以选择该虚拟盘作为条带化数据写入的磁盘,而在将数据写入虚拟盘时,存储节点3可以首先确定映射该虚拟盘的其他存储节点的物理磁盘,然后根据nof协议,通过rdma的方式将写入该虚拟盘的数据块写入所确定的其他存储节点的物理磁盘。例如,以存储系统包括16个存储节点,且冗余处理方式是ec为例,一种可能的实现方式是:存储节点3依据ec算法对待写数据进行条带化,得到14个数据块以及2个校验块。然后,将这16个块中的每一块写入存储系统的一个存储节点。s109:存储节点3记录条带化数据的写入位置。具体的,存储节点3可以通过记录待写数据的分布信息记录该条带化数据的写入位置。数据的分布信息可以用元数据表m1表示,一种元数据表m1包括的元素可以如表1所示。表1元素描述fingerprint数据的指纹hostlba写请求中携带的lbahostlength数据的总长度seg.type条带化数据中的每一块是数据块还是校验块seg.diskid条带化数据中的每一块写入的盘(可以是虚拟盘或者物理盘)的idseg.startlba条带化数据中的每一块在写入的盘中的起始lbaseg.length条带化数据中的每一块的长度其中,fingerprint、seg.diskid、seg.startlba和seg.length可以用于表示一数据的条带化数据的写入位置。应注意,hostlba所表示的是主机和存储系统信息交互所使用的lba。而seg.startlba所表示的是所写入的数据在存储模块中的起始lba地址。本申请对表1中的各元素的记录方式不进行限定,例如若条带化数据中的每一块的长度均相同,则记录一个长度即可,其他示例不再一一列举。例如,基于s108中的示例,执行步骤s109之后,存储节点3记录的待写数据的分布信息可以包括:待写数据的指纹,lba1,待写数据的总长度,待写数据的14个数据块以及2个冗余块中每一块的类型、写入的盘的id、长度等信息。s108~s109可以被称为数据的归属节点对写请求/待写入数据执行写操作。为了提高可靠性,数据的归属节点可以对元数据表m1进行冗余处理,具体可以参考s110。可以理解的,s110是可选的步骤。s110:存储节点3将条带化数据的写入位置写入存储节点3的物理盘和/或虚拟盘。具体的,存储节点3可以通过将待写数据的分布信息写入存储节点3的物理盘和/或虚拟盘,实现将条带化数据的写入位置写入存储节点3的物理盘和/或虚拟盘。该步骤可以理解为对数据的分布信息进行冗余处理,可以理解的,该步骤为可选的步骤。本申请对冗余处理方式不进行限定,例如但不限于是多份复制、ec或raid等方式。以三份复制为例,存储节点3可以在本地保存一份待写数据的分布信息,然后从存储系统中选择两个存储节点,接着,将该待写数据的分布信息复制两份,每一份写入这两个存储节点中的一个存储节点。其中,本申请对如何选择这两个存储节点不进行限定,例如但不限于采用取模运算进行选择。s111:存储节点3向存储节点1反馈写操作完成指示,存储节点1接收该写操作完成指示。可以理解的,在s105中,若存储节点1确定的待写数据的归属节点是存储节点1,则可以不执行s106和s111,且s107~s111的执行主体是存储节点1。s112:存储节点1获取该写请求携带的lba1的归属节点,例如存储节点4。lba的归属节点用于管理lba与指纹之间的映射关系。本申请对如何确定lba的归属节点不进行限定,具体可以例如但不限于根据一定的算法确定lba的归属节点,以实现负载均衡,这里的负载均衡是指,执行管理lba与指纹之间的映射关系的步骤尽量由各存储节点均匀分担。例如,该算法可以是取模运算。应注意,数据的归属节点是依据该数据的指纹确定的,而lba的归属节点是依据lba确定的,二者无关联关系,可以为同一存储节点,也可以为不同的存储节点。lba的归属节点与存储节点1的镜像节点之间无关联关系。本实施例是以lba1的归属节点、待写数据的归属节点与存储节点1的镜像节点均不同为例进行说明的。s113:存储节点1向存储节点4发送待写数据的指纹与写请求携带的lba1。s114:存储节点4记录待写数据的指纹与写请求携带的lba1之间的映射关系。该映射关系可以用元数据表m2表示,一种元数据表m2包括的元素可以如表2所示。表2元素描述fingerprint指纹lbalist该指纹对应的lba列表nodeid该指纹所指示的数据的归属节点的id在一种实现方式中,元数据表m2包括上述fingerprint与lbalist即可。其中,一个lba列表可以包括一个或多个lba。lba列表可以表示为单向链表。同一个指纹可以与多个lba之间存在映射关系。例如,假设主机向存储系统发送了4个写请求,这4个写请求的相关信息如表3所示。表3写请求携带的信息lba的归属节点数据的归属节点写请求1lba1,待写数据1存储节点a存储节点c写请求2lba2,待写数据1存储节点a存储节点c写请求3lba3,待写数据1存储节点b存储节点c写请求4lba4,待写数据2存储节点a存储节点d基于表3,存储系统执行这4个写请求之后,存储节点a记录的元数据表m2如表4所示。表4指纹该指纹对应的lba列表该指纹所指示的数据的归属节点待写数据1的指纹lba1、lba2存储节点c待写数据2的指纹lba4存储节点d基于表3,存储系统执行这4个写请求之后,存储节点b记录的元数据表m2如表5所示。表5指纹该指纹对应的lba列表该指纹所指示的数据的归属节点待写数据1的指纹lba3存储节点cs115:存储节点4将待写数据的指纹与写请求携带的lba1间的映射关系写入存储节点4的物理盘和/或虚拟盘。该步骤可以理解为对待写数据的指纹与写请求携带的lba1之间的映射关系进行冗余处理,可以理解的,该步骤为可选的步骤。本申请对冗余处理方式不进行限定,例如可以参考上文。s116:存储节点4向存储节点1反馈映射关系完成指示,存储节点1接收该映射关系完成指示。这样,可以防止后续进行待写数据读取时,在同一节点读取指纹相同的数据,从而造成拥塞,如果将lba打散到不同的节点,则在后续对数据进行读操作时,可以从lba的归属节点处读取待写数据,具体请参考图7所述的读数据的流程。s117:存储节点1向该存储节点1的镜像节点(如存储节点2)发送删除镜像数据的指令,存储节点2接收该指令。s118:存储节点2接收到该指令后,删除该写请求的镜像数据。至此,写流程结束。如图7所示,为本申请实施例提供的一种应用于图2所示的存储系统的一种读数据的方法的流程图。具体的:s201:主机向存储系统发送读请求,该读请求中携带lba1。存储系统中的存储节点1接收该写请求。具体的:主机向交换机发送读请求,该交换机接收到该读请求后,将该读请求转发至存储节点1。需要说明的是,在实施例1中,图6所示的写数据流程和图7所示的读数据流程中,均是以存储节点1接收来自主机的请求(包括写请求和读请求)为例进行说明的,实际实现时,由于实施例1所示的写数据流程和读数据流程均是基于交换机将写请求/读请求转发至任一存储节点这一思想进行设计的,因此,写数据流程和读数据流程中,接收来自主机发送的写请求和读请求的存储节点也可以不同。s202:存储节点1获取lba1的归属节点。其具体实现方式可以参考上文,此处不再赘述。基于上文中的描述可知,所确定的lba1的归属节点是存储节点4。s203:存储节点1向存储节点4发送该读请求,存储节点4接收该读请求。s204:存储节点4根据lba与数据的指纹之间的映射关系,例如但不限于如表2所示的元数据表m2,得到待读数据的指纹。其中,该待读数据的指纹即为上文中的待写数据的指纹。可选的,存储节点4还可以得到该待读数据的归属节点,基于上文中的描述可知,所确定的待读数据的归属节点是存储节点3。s205:存储节点4向存储节点1反馈待读数据的指纹,存储节点1接收待读数据的指纹,并根据待读数据的指纹,确定待读数据的归属节点,即存储节点3。可选的,存储节点4还可以向存储节点1反馈待数据的归属节点即存储节点3的id,这样存储节点1不需要根据指纹获取待读数据的归属节点,从而可以节省存储节点1的计算复杂度。s206:存储节点1向存储节点3发送待读数据的指纹,存储节点3接收待读数据的指纹。s207:存储节点3根据待读数据的指纹确定待读数据的条带化数据的写入位置,例如但不限于根据表1所示的元数据表m1,得到条带化数据的写入位置。然后,从这些写入位置获取部分或全部条带化数据。可以理解的,在正常读取数据的过程中,读取待读数据的数据块即可,无需读取校验块。可选的,在数据需要恢复的场景中,可以读取待读数据的校验块,然后可以例如但不限于按照raid或者ec算法进行数据恢复。s208:存储节点3将所读取到的数据块构建成完整的数据,即执行条带化之前的数据,至此,认为存储节点3获取到了待读数据。存储节点3将该待读数据反馈给存储节点1,存储节点1接收该待读数据。s209:存储节点1接收到待读数据之后,将该待读数据反馈给主机。图7所示的读数据流程是基于图6所示的写数据流程进行说明的,本领域技术人员应当能够根据图7所示的读数据流程,确定出如下场景下的实施例:lba1的归属节点与存储节点1相同的场景,和/或,待读数据的归属节点与存储节点1相同的场景,和/或,lba1的归属节点与待读数据的归属节点相同的场景。此处不再一一赘述。本实施例提供的读写数据流程中,将执行读写操作步骤按照数据的指纹分配到了存储系统的存储节点中,以及将执行管理指纹与主机的lba的步骤按照lba分配到了存储系统的存储节点中。这样,有助于实现负载均衡,从而提高系统性能。实施例2如图8所示,为本申请实施例提供的一种应用于图2所示的存储系统的一种写数据的方法的流程图。具体的:s301~s304:可以参考上述s101~s104,当然本申请不限于此。s305:可以参考上述s112,当然本申请不限于此。s306:存储节点1向存储节点4发送该写请求,存储节点4接收该写请求。s307:存储节点4对待写数据进行条带化,得到条带化数据,并将条带化数据写入存储节点4的物理盘和/或虚拟盘。s308:存储节点4记录条带化数据的写入位置。具体的,存储节点4可以通过记录待写数据的分布信息记录该条带化数据的写入位置。数据的分布信息可以用元数据表m3表示,一种元数据表m3包括的元素可以是上述表1中除去fingerprint后得到的表。s309:存储节点4将条带化数据的写入位置写入存储节点4的物理盘和/或虚拟盘。上述步骤s307~s309的相关描述可以参考上述s108~s110,此处不再赘述。s310:存储节点4记录条带化数据的写入位置与lba1之间的映射关系。s311:存储节点4将条带化数据的写入位置与lba1之间的映射关系写入存储节点4的物理盘和/或虚拟盘。s312~s314:可以参考上述s116~s118,当然本申请不限于此。如图9所示,为本申请实施例提供的一种应用于图2所示的存储系统的一种读数据的方法的流程图。具体的:s401~s403:可以参考s201~s203当然本申请不限于此。s404:存储节点4根据lba1确定待读数据的条带化数据的写入位置,例如但不限于基于表1删除数据的指纹后得到的元数据表,得到待读数据的条带化数据的写入位置。然后,从这些写入位置获取部分或全部条带化数据。s405:存储节点4将所读取到的数据块构建成完整的数据,即执行条带化之前的数据,至此,认为存储节点4获取到了待读数据。存储节点4将该待读数据反馈给存储节点1。s406:可以参考s209,当然本申请不限于此。图9所示的读数据流程是基于图8所示的写数据流程进行说明的,本领域技术人员应当能够根据图9所示的读数据流程,确定出如下场景下的实施例:lba1的归属节点与存储节点1相同的场景。此处不再赘述。本实施例中,将执行管理数据的写入位置与主机的lba的步骤按照lba分配到了存储系统的存储节点中。这样,有助于实现负载均衡,从而提高系统性能。实施例3如图10所示,为本申请实施例提供的一种应用于图2所示的存储系统的一种写数据的方法的流程图。具体的:s501:主机向存储系统发送写请求,该写请求包括lba1和待写数据。存储系统中的存储节点1接收该写请求。具体的:主机向交换机发送写请求,该交换机接收到该写请求后,根据该写请求携带的信息,将该写请求转发至存储节点1。与上述实施例1和实施例2的区别在于,本实施例中,主机可以先将携带特定lba的写请求发送至特定的存储节点,这样,可以降低存储系统的计算复杂度。在一种示例中,主机可以预先存储lba范围与存储节点之间的对应关系,例如lba1~100对应存储节点1,lba101~lba200对应存储节点2……,然后,在写请求中携带lba所对应的存储节点的信息,其中,存储节点的信息可以例如但不限于包括该存储节点的网络地址,可选的还可以包括该存储节点的id等,这样,交换机接收到写请求时,可以根据该写请求中写到的存储节点的信息,确定将该写请求转发至哪个存储节点。s502~s511:可以参考s102~s111,当然本申请不限于此。s512:存储节点1记录待写数据的指纹与写请求携带的lba1之间的映射关系。s513:存储节点1将待写数据的指纹与写请求携带的lba1之间的映射关系写入存储节点1的物理盘和/或虚拟盘。其中,s512~s513的相关内容的解释可以参考上述s114~s115,此处不再赘述。s514~s515:可以参考s117~s118,当然本申请不限于此。如图11所示,为本申请实施例提供的一种应用于图2所示的存储系统的一种读数据的方法的流程图。具体的:s601:主机向存储系统发送读请求,该读请求中携带lba1。存储系统中的存储节点1接收该写请求。具体的:主机向交换机发送读请求,该交换机接收到该读请求后,根据该读请求将该读请求转发至存储节点1。图11所示的读数据流程时基于图10所示的写数据流程进行说明的。关于交换机如何将读请求转发至存储节点1的具体实现过程,可以参考图10所示的写数据流程中,交换机如何将写请求转发至存储节点1的具体实现过程,此处不再赘述。s602:存储节点1根据lba与数据的指纹之间的映射关系,例如但不限于如表2所示的元数据表m2,得到待读数据的指纹。其中,该待读数据的指纹即为上文中的待写数据的指纹。然后,存储节点1还可以根据元数据表m2记录的信息,或者根据计算得到该待读数据的归属节点,基于上文中的描述可知,所确定的该待读数据的归属节点是存储节点3。s603:存储节点1获取待读数据的归属节点如存储节点3s604~s607:可以参考s206~s209,当然本申请不限于此。本实施例中,由主机根据lba与存储节点之间的对应关系,确定将读/写请求发送至存储系统中的哪个存储节点,也就是说,存储节点不需要确定lba的归属节点,这样,可以减少存储节点之间的信令交互,从而提高读/写速率。另外,基于上述实施例1的有益效果可知,本实施例有助于实现负载均衡,从而提高系统性能。实施例4如图12所示,为本申请实施例提供的一种应用于图2所示的存储系统的一种写数据的方法的流程图。具体的:s701~s704:可以参考s501~s504,当然本申请不限于此。s705:存储节点1对待写数据进行条带化,得到条带化数据,并将条带化数据写入存储节点1的物理盘和/或虚拟盘。s706:存储节点1记录条带化数据的写入位置。具体的,存储节点1可以通过记录待写数据的分布信息记录该条带化数据的写入位置。s707:存储节点1将条带化数据的写入位置写入存储节点1的物理盘和/或虚拟盘。其中,s705~s707的相关描述可以参考上述s307~s309,此处不再赘述。s708:存储节点1记录条带化数据的写入位置与lba1之间的映射关系。s709:存储节点1将条带化数据的写入位置与lba1之间的映射关系写入存储节点1的物理盘和/或虚拟盘。s710~s711:可以参考上述s117~s118,当然本申请不限于此。如图13所示,为本申请实施例提供的一种应用于图2所示的存储系统的一种读数据的方法的流程图。具体的:s801:可以参考上述s601,当然本申请不限于此。s802:存储节点1根据lba确定待读数据的条带化数据的写入位置,例如但不限于基于表1删除数据的指纹后得到的元数据表,得到待读数据的条带化数据的写入位置。然后,从这些写入位置获取部分或全部条带化数据。s803:存储节点1将所读取到的数据块构建成完整的数据,即执行条带化之前的数据。其中,s802~s803的相关描述可以参考上述s404~s405,此处不再赘述。s804:存储节点1向主机反馈该待读数据。本实施例中,由主机根据lba与存储节点之间的对应关系,确定将读/写请求发送至存储系统中的哪个存储节点,也就是说,存储节点不需要确定lba的归属节点,这样,可以减少存储节点之间的信令交互,从而提高读/写速率。另外,基于上述实施例2的有益效果可知,本实施例有助于实现负载均衡,从而提高系统性能。上述主要从各个节点之间交互的角度对本申请实施例提供的方案进行了介绍。可以理解的是,各个节点,例如主机或者存储节点。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。本申请实施例可以根据上述方法示例对存储节点进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。下面以采用对应各个功能划分各个功能模块为例进行说明:图14给出了一种存储节点140的结构示意图。该存储节点140可以是上文中涉及的任意一个存储节点。存储节点140通过交换机与主机和存储系统中的至少一个第二存储节点连通,至少一个第二存储节点所包括的物理盘映射为存储节点140的虚拟盘;存储节点140包括:收发单元1401、处理单元1402和存储单元1403。收发单元1401,用于接收第一写请求,第一写请求携带第一待写数据。处理单元1402,用于对第一待写数据进行条带化,得到条带化数据;并将条带化数据写入存储节点140的物理盘和/或虚拟盘。存储单元1403,用于记录条带化数据写入位置。例如,结合图6或图10,存储节点140可以是存储节点3,收发单元1401可以用于执行s106/s506,处理单元1402可以用于执行s108/s508,存储单元1403可以用于执行s109/s509。例如,结合图8,存储节点140可以是存储节点4,收发单元1401可以用于执行s306,处理单元1402可以用于执行s307,存储单元1403可以用于执行s308。例如,结合图12,存储节点140可以是存储节点1,收发单元1401可以用于执行s701,处理单元1402可以用于执行s705,存储单元1403可以用于执行s706。在一种可能的设计中,处理单元1402具体可以用于:当条带化数据写入的是虚拟盘时,将条带化数据写入第二存储节点中映射虚拟盘的物理盘。在一种可能的设计中,存储单元1403还可以用于:在记录条带化数据写入位置时,还记录第一待写数据的指纹。例如,可以参考实施例1中的表1。在一种可能的设计中,存储单元1403还可以用于:在记录条带化数据写入位置时,还记录第一待写数据的lba。例如,结合图8或图12,存储单元1403可以用于执行s310/s708。在一种可能的设计中,收发单元1401还可以用于:接收主机发送的第二写请求,第二写请求携带第二待写数据。处理单元1402还用于:根据第二写请求确定第二写请求的归属节点,如果第二写请求的归属节点是存储节点140,则由存储节点140对第二写请求执行写操作,如果第二写请求的归属节点是第二存储节点,则存储节点140将第二写请求转发至第二存储节点,以使第二存储节点对第二写请求执行写操作。例如,结合图6、图8或图10,存储节点140可以是存储节点1。收发单元1401可以用于执行s101/s301/s501。处理单元1402可以用于执行s105/s305/s505。在一种可能的设计中,处理单元1402具体可以用于:计算第二待写数据的指纹;然后,根据第二待写数据的指纹确定第二写请求的归属节点。例如,结合图6或图10处理单元1402可以用于执行s105/s505。在一种可能的设计中,处理单元1402还可以用于:确定第二写请求携带的lba的归属节点;lba的归属节点用于管理lba与第二待写数据的指纹之间的映射关系。例如,结合图6,处理单元1402可以用于执行s112。在一种可能的设计中,处理单元1402具体可以用于:根据第二写请求携带的lba确定第二写请求的归属节点。例如,结合图8,处理单元1402可以用于执行s305。在一种可能的设计中,收发单元1401还可以用于,接收第一读请求所请求的第一待读数据的指纹。处理单元1402还可以用于,根据第一待读数据的指纹,获取第一待读数据的写入位置,并从第一待读数据的写入位置,读取第一待读数据的条带化数据。例如,结合图7或图11,存储节点140可以是存储节点3。收发单元1401可以用于执行s206/s604,处理单元1402可以用于执行s207/s605。在一种可能的设计中,收发单元1401还可以用于,接收第一读请求,第一读请求携带第一lba。处理单元1402还可以用于:根据第一lba,获取第一读请求所请求的第一待读数据的写入位置,并从第一待读数据的写入位置,读取第一待读数据的条带化数据。例如,结合图9,存储节点140可以是存储节点4,收发单元1401可以用于执行s403,处理单元1402可以用于执行s404。例如,结合图13,存储节点140可以是存储节点1,收发单元1401可以用于执行s801,处理单元1402可以用于执行s803。在一种可能的设计中,收发单元1401还可以用于,接收主机发送的第二读请求。处理单元1402还可以用于,根据第二读请求确定第二读请求的归属节点,如果第二读请求的归属节点是存储节点140,则由存储节点140对第二读请求执行读操作,如果第二读请求的归属节点是第二存储节点,则存储节点140将第二读请求转发至第二存储节点,以使第二存储节点对第二读请求执行读操作。例如,结合图7、图9或图11,存储节点140可以是存储节点1。收发单元1401可以用于执行s201/s401/s601,处理单元1402可以用于执行s205/s402/s603。在一种可能的设计中,处理单元1402具体可以用于:确定第二读请求携带的lba的归属节点,lba的归属节点用于管理lba与第二读请求所请求的第二待读数据的指纹的映射关系;从第二lba的归属节点中获取第二待读数据的指纹;根据第二待读数据的指纹确定第二读请求的归属节点。例如,结合图7或图11,收发单元1401可以用于执行s201/s601,处理单元1402可以用于执行s205/s603。在一种可能的设计中,处理单元1402具体可以用于:根据第二读请求携带的lba,确定第二读请求的归属节点。例如,结合图9,收发单元1401可以用于执行s401,处理单元1402可以用于执行s402。需要说明的是,虽然,在上述有些实现方式中,存储节点140可以具体可以是同一个附图中的不同的存储节点,例如,结合图6,在存储系统接收到第一写请求的场景中,存储节点140具体可以是存储节点3;在存储系统接收到第一读请求的场景中,存储节点140具体可以是存储节点1。但是,由于存储系统中每一存储节点均具有任意性,因此,具体实现时,在多次对不同数据进行读写的场景中,同一存储节点140可以具有上文任一技术方案中所提供的功能。另外需要说明的是,上述均以举例的方式说明了存储节点140中的各单元与上文所示的方法实施例中的一些步骤之间的联系,实际上,存储节点140中的各单元还可以执行上文所示的方法实施例中的其他相关步骤,此处不再一一列举。存储节点140的一种硬件实现方式可以参考图2中所示的存储节点。结合图2,上述接收单元1401可以对应图2中的内部端口220。处理单元1402可以对应图2中的cpu和/或存储控制器。存储单元1403可以对应图2中的内存,可选的也可以对应图2中的存储芯片。由于本申请实施例提供的存储节点可用于执行上述提供的读写流程,因此其所能获得的技术效果可参考上述方法实施例,本申请实施例在此不再赘述。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,dvd)、或者半导体介质(例如ssd)等。尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1