CN109753225A - 一种数据存储方法及设备 - Google Patents

一种数据存储方法及设备 Download PDF

Info

Publication number
CN109753225A
CN109753225A CN201711073029.2A CN201711073029A CN109753225A CN 109753225 A CN109753225 A CN 109753225A CN 201711073029 A CN201711073029 A CN 201711073029A CN 109753225 A CN109753225 A CN 109753225A
Authority
CN
China
Prior art keywords
logical address
data block
number
data
written
Prior art date
Application number
CN201711073029.2A
Other languages
English (en)
Inventor
赵旺
陈飘
张鹏
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to CN201711073029.2A priority Critical patent/CN109753225A/zh
Publication of CN109753225A publication Critical patent/CN109753225A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from or digital output to record carriers, e.g. RAID, emulated record carriers, networked record carriers

Abstract

本申请实施例公开了一种数据存储方法及设备,涉及计算机技术领域,解决了由于数据被跨节点发送了两次,导致系统的I/O带宽较低的问题。具体方案为:接收节点接收包括有待写入数据和待写入数据的逻辑地址的第一写请求,并将待写入数据存储在自身的缓存中,且根据待写入数据的逻辑地址确定镜像节点,记录第一对应关系,该第一对应关系为待写入数据的逻辑地址与镜像节点的映射关系,且接收节点将待写入数据和待写入数据的逻辑地址发送至镜像节点,并根据第一对应关系从自身的缓存中选择N个目标数据块,该N个目标数据块的镜像节点互不相同,且分别向N个目标数据块对应的N个镜像节点发送通知消息。本申请实施例用于存储数据的过程。

Description

一种数据存储方法及设备

技术领域

本申请实施例涉及计算机技术领域,尤其涉及一种数据存储方法及设备。

背景技术

分布式独立磁盘冗余阵列(redundant array of independent disk,RAID)系统一般由多个存储节点通过网络互联组成。在将数据存储至分布式RAID系统的情况下,为了确保数据的可靠性,可以采用冗余算法,如纠删码(erasure code,EC)算法来实现数据的冗余存放,且为了提升系统的输入/输出(input/output,I/O)性能,可以在分布式RAID系统中实现数据缓存(cache)机制,使得存储节点可以从缓存中快速读写数据。

在现有技术中,本地存储节点可以在接收到一个写请求后,向分布式RAID系统中的其他存储节点发送该写请求,使得该写请求中的数据能够分别存储到包括本地存储节点在内的至少两个存储节点的缓存中,以确保该数据的可靠性,然后本地存储节点可以回复该写请求。在本地存储节点接收到多个写请求之后,可以从自身缓存中还未写入硬盘的数据中确定N个数据块,并根据EC算法计算出M个校验数据块,再分别向N+M个存储节点发送N个数据块和M个校验数据块,以便N+M个存储节点中的每个存储节点可以将接收到的数据块中的数据存储至自身的硬盘中。

现有技术中至少存在以下技术问题:由于在将数据存储到硬盘的过程中,本地存储节点向其他存储节点发送写请求时会跨节点发送数据,本地存储节点向N个存储节点发送N个数据块时也需要跨节点发送数据,因此数据被跨节点发送了两次,导致系统的I/O带宽较低。

发明内容

本申请实施例提供一种数据存储方法及设备,解决了由于数据被跨节点发送了两次,导致系统的I/O带宽较低的问题。

为达到上述目的,本申请采用如下技术方案:

第一方面,本申请提供一种数据存储方法,应用于分布式RAID系统,该分布式RAID系统包括K个存储节点,K为大于0的整数,该方法可以包括:接收节点接收包括有待写入数据和待写入数据的逻辑地址的第一写请求,并将待写入数据存储在自身的缓存中,且根据待写入数据的逻辑地址确定镜像节点,并记录第一对应关系,该第一对应关系为待写入数据的逻辑地址与镜像节点的映射关系,且接收节点将待写入数据和待写入数据的逻辑地址发送至镜像节点,并根据第一对应关系从自身的缓存中选择N个目标数据块,该N个目标数据块的镜像节点互不相同,这样,接收节点分别向N个目标数据块对应的N个镜像节点发送通知消息,每个通知消息中包括该通知消息所发往的镜像节点对应的目标数据块的逻辑地址,用于指示镜像节点将自身缓存中与该通知消息中的逻辑地址对应的数据块存储至自身的硬盘中。其中,该接收节点为K个存储节点中的任意一个,N为大于0且小于K的整数。

本申请实施例提供的数据存储方法,接收节点通过根据待写入数据的逻辑地址确定镜像节点,并向镜像节点发送待写入数据和待写入数据的逻辑地址,使得N个目标数据块分别存储在N个镜像节点中,接收节点便可以直接向N个镜像节点发送包含有目标数据块的逻辑地址的通知消息,来指示镜像节点将与该逻辑地址对应的数据块写入硬盘,这样,本申请与现有技术中存储节点需要跨节点发送两次待写入数据相比,接收节点仅需在向镜像节点发送待写入数据时跨节点发送一次数据,且由于通知消息中包括的逻辑地址的数据量较小,占用的带宽较小,因此与现有技术相比,提升了系统I/O带宽。

结合第一方面,在一种可能的实现方式中,待写入数据的逻辑地址包括至少一个子逻辑地址,接收节点根据待写入数据的逻辑地址确定镜像节点,具体的可以包括:接收节点采用公式:X=Int(子逻辑地址/数据块的长度),对待写入数据的逻辑地址中的每个子逻辑地址在除以数据块的长度之后进行取整运算,获得与每个子逻辑地址对应的整数X,且接收节点采用预先配置的哈希算法对每个整数X进行哈希计算,再对每个哈希计算的结果进行取余,并根据取余的结果得到镜像节点的编号。其中,数据块的长度为每个数据块所包括的子逻辑地址的个数。

结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,接收节点在采用预先配置的哈希算法对每个整数X进行哈希计算时,如果镜像节点的预设数量为1个,则采用预先配置的哈希算法对整数X进行哈希计算。

结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,接收节点在采用预先配置的哈希算法对每个整数X进行哈希计算时,如果镜像节点的预设数量大于1个,则采用预先配置的不同种类的哈希算法对整数X进行计算。

结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,接收节点在采用预先配置的哈希算法对每个整数X进行哈希计算时,如果镜像节点的预设数量大于1个,则先采用预先配置的一种哈希算法对整数X进行计算,然后根据该计算结果获取预设数量的其他结果。

结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,待写入数据的逻辑地址包括至少一个子逻辑地址,第一对应关系记录了每个子逻辑地址对应的镜像节点。接收节点根据第一对应关系在缓存中选择N个目标数据块,具体的可以包括:接收节点在第一对应关系中确定具有同样镜像节点的子逻辑地址,并从N个不同镜像节点对应的子逻辑地址中选出构成一个数据块的子逻辑地址,所选择的子逻辑地址对应的数据构成N个目标数据块。

结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,接收节点在从N个不同镜像节点对应的子逻辑地址中选出构成一个数据块的子逻辑地址时,确定构成一个数据块时缺失的子逻辑地址,确定缺失的子逻辑地址是否记录在第二对应关系中,该第二对应关系为写入镜像节点的硬盘的数据的逻辑地址与写入该镜像节点的硬盘的物理地址的对应关系。如果不存在,设置缺失的子逻辑地址对应的数据为0以构成目标数据块,并将缺失的子逻辑地址记录至第一对应关系;如果存在,则根据第二对应关系,从该镜像节点中获取缺失的子逻辑地址对应的数据构成目标数据块,并将缺失的子逻辑地址加入第一对应关系。

结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,还可以包括:接收节点根据N个目标数据块计算M个校验数据块,并将M个校验数据块发送至除N个镜像节点之外的存储节点存储。

结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在接收节点将M个校验数据块发送至除N个镜像节点之外的存储节点存储之后,还可以包括:接收节点从第一对应关系中删除N个目标数据块的子逻辑地址与镜像节点的对应关系。且接收节点从自身的缓存中删除N个目标数据块,并分别向N个目标数据块对应的N个镜像节点发送指示消息,每个指示消息中包括该指示消息所发往的镜像节点对应的目标数据块的逻辑地址,用于指示镜像节点从缓存中删除与该指示消息中的逻辑地址对应的数据块。

第二方面,本申请提供一种数据存储方法,应用于分布式RAID系统,该分布式RAID系统包括K个存储节点,K为大于0的整数,该方法可以包括:镜像节点接收至少一个接收节点发送的第一写请求,该第一写请求包括镜像数据及镜像数据的逻辑地址,并将镜像数据写入自身的缓存,记录镜像数据的逻辑地址与接收节点的对应关系。且镜像节点根据镜像数据与接收节点的对应关系在自身的缓存中选择N个目标数据块,该N个目标数据块的接收节点互不相同,并分别向N个目标数据块对应的N个接收节点发送通知消息,每个通知消息包括该通知消息所发往的接收节点对应的目标数据块的逻辑地址,以指示接收节点将自身缓存中与该逻辑地址对应的数据块写入硬盘。其中,接收节点为从主机接收到第二写入请求的节点,第二写请求包括待写入数据及待写入数据的逻辑地址,该镜像节点为接收节点根据待写入数据的逻辑地址确定,镜像数据为接收节点确定的写入该镜像节点的数据,N为大于0且小于K的整数。

本申请实施例提供的数据存储方法,镜像节点通过将接收到的第一写请求中的镜像数据写入缓存,并记录镜像数据的逻辑地址与接收节点的对应关系,使得N个目标数据块分别存储在N个接收节点中,镜像节点便可以直接向N个接收节点发送包含有目标数据块的逻辑地址的通知消息,来指示接收节点将与该逻辑地址对应的数据块写入硬盘,这样,本申请与现有技术中存储节点需要跨节点发送两次待写入数据相比,仅跨节点发送了一次数据,且由于通知消息中包括的逻辑地址的数据量较小,占用的带宽较小,因此与现有技术相比,提升了系统I/O带宽。

第三方面,本申请提供一种接收节点,该接收节点可以包括能够实现上述第一方面及其各实施方式中的方法的模块。

第四方面,本申请提供一种镜像节点,该镜像节点可以包括能够实现上述第二方面中的方法的模块。

第五方面,本申请提供一种存储节点,该存储节点包括:至少一个处理器、存储器、通信接口和通信总线。至少一个处理器与存储器、通信接口通过通信总线连接,存储器用于存储计算机执行指令,当存储节点运行时,处理器执行存储器存储的计算机执行指令,以使存储节点执行如第一方面或第一方面的可能的实现方式中任意一项的数据存储方法,或者执行如第二方面中的数据存储方法。

第六方面,本申请提供一种计算机存储介质,其上存储有计算机执行指令,当计算机执行指令被处理器执行时,实现如第一方面或第一方面的可能的实现方式中任意一项的数据存储方法,或实现如第二方面中的数据存储方法。

第七方面,本申请还提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的方法。

第八方面,本申请还提供了一种通信芯片,其中存储有计算机执行指令,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的方法。

可以理解地,上述提供的任一种装置或计算机存储介质或计算机程序产品均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。

附图说明

图1为本申请实施例提供的一种可以应用本申请实施例的架构图;

图2为本申请实施例提供的一种存储节点的组成示意图;

图3为本申请实施例提供的一种数据存储方法的流程图;

图4为本申请实施例提供的另一种数据存储方法的流程图;

图5为本申请实施例提供的另一种存储节点的组成示意图;

图6为本申请实施例提供的另一种存储节点的组成示意图;

图7为本申请实施例提供的另一种存储节点的组成示意图;

图8为本申请实施例提供的另一种存储节点的组成示意图。

具体实施方式

图1为本申请实施例提供的一种可以应用本申请实施例的架构图,如图1所示,该架构可以包括:主机11和分布式RAID系统12。

其中,主机11用于在主机11需要将数据存储至分布式RAID系统12时,向分布式RAID系统12中的任意一个存储节点发送第一写请求,还用于接收该存储节点返回的响应消息,该响应消息用于通知主机11第一写请求中需存储的数据已存储在分布式RAID系统12中。

分布式RAID系统12由K个存储节点通过网络互联组成,用于提供海量存储空间,K为大于1的整数,且分布式RAID系统12中的每个存储节点在具体的实现中可以为服务器。

需要说明的是,在本申请实施例中,为了便于区分分布式RAID系统12中不同的存储节点,可以用不同的编号来代表不同的存储节点。

图2为本申请实施例提供的一种存储节点的组成示意图,如图2所示,该存储节点可以包括:至少一个处理器21、存储器22、通信接口23和通信总线24。

下面结合图2对存储节点的各个构成部件进行具体的介绍:

处理器21是存储节点的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器21是一个中央处理器(central processing unit,CPU),也可以是特定集成电路(application specific integrated circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个数字信号处理器(digital signalprocessor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)。

在具体的实现中,作为一种实施例,存储节点可以包括一个或多个CPU,例如图2中所示的CPU0和CPU1。且,作为一种实施例,存储节点可以包括多个处理器,例如图2中所示的处理器21和处理器25。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

在具体的实现中,处理器21可以通过运行或执行存储在存储器22内的软件程序,以及调用存储在存储器22内的数据,执行存储节点的各种功能。例如,处理器21可以运行存储器22中保存的计算机程序代码,以执行本申请提供的数据存储方法,将写请求中需存储的数据保存至分布式RAID系统的硬盘中。

存储器22可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器22可以是独立存在,通过通信总线24与处理器21相连接。存储器22也可以和处理器21集成在一起。

在具体的实现中,存储器22,用于存储本申请中的数据和执行本申请的软件程序。例如,存储器22可以用于存储本申请实施例提供的数据存储方法所对应的计算机程序代码。且在本申请实施例中,存储器22可以包括缓存和硬盘,用于存储写请求中需存储的数据。

通信接口23,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如主机、无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。通信接口23可以包括接收单元实现接收功能,以及发送单元实现发送功能。

通信总线24,可以是工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component interconnect,PCI)总线或扩展工业标准体系结构(extended industry standard architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

由于在现有技术中,本地存储节点向其他存储节点发送写请求时需要跨节点发送数据,且分别向N个存储节点发送N个数据块时也需要跨节点发送数据,使得数据被跨节点发送了两次,从而导致系统的I/O带宽较低。因此为了解决系统的I/O带宽较低的问题,可以采用图3所示的数据存储方法来存储数据,如图3所示,该方法可以包括:

需要说明的是,在本申请实施例中,以接收节点为第一存储节点为例进行说明,第一存储节点为分布式RAID系统中任意一个接收到主机发送的第一写请求的存储节点。

301、第一存储节点接收主机发送的第一写请求。

其中,第一写请求中可以包括待写入数据和待写入数据的逻辑地址,该待写入数据的逻辑地址包括至少一个子逻辑地址。在具体的实现中,该待写入数据的逻辑地址一般包括首地址和数据长度,例如,如果首地址为0,数据长度为3,则说明该待写入数据的逻辑地址包括3个子逻辑地址,即逻辑地址0、逻辑地址1、及逻辑地址2。

302、第一存储节点将第一写请求中的待写入数据存储在自身的缓存中。

303、第一存储节点根据第一写请求中的待写入数据的逻辑地址确定镜像节点。

其中,数据块的长度为每个数据块所包括的子逻辑地址的个数。在第一存储节点将待写入数据存储在自身的缓存中之后,第一存储节点可以采用公式:X=Int(子逻辑地址/数据块的长度),对待写入数据的逻辑地址中的每个子逻辑地址在除以数据块的长度之后进行取整运算,获得与每个子逻辑地址对应的整数X。此时,第一存储节点便可以采用预先配置的哈希算法对每个整数X进行哈希计算,再对每个哈希计算的结果在除以分布式RAID系统中存储节点的数量K之后进行取余,并根据取余的结果得到镜像节点的编号。

其中,第一存储节点在采用预先配置的哈希算法对每个整数X进行哈希计算时,如果镜像节点的预设数量仅有1个,则第一存储节点可以采用预先配置的哈希算法对整数X进行计算,然后取余,得到镜像节点的编号。如果镜像节点的预设数量大于1个,则,在一种实现方式中,第一存储节点可以采用预先配置的不同种类的哈希算法对整数X进行计算,哈希算法的种类与镜像节点的数量相同,对哈希结果取余后,分别得到不同的镜像节点的编号。在另一种实现方式中,第一存储节点可以先对整数X进行哈希计算,并取余后,得到一个镜像节点的编号,然后根据已确定的镜像节点的编号结果确定其他镜像节点的编号,例如,若镜像节点的预设数量为3个,则第一存储节点可以先对整数X进行哈希计算,并取余后得到的镜像节点的编号,然后将与确定的镜像节点的编号结果左右相邻的两个镜像节点编号值作为其他两个镜像节点,或者对计算结果再做两次哈希计算,得到其他两个镜像节点的编号。

需要说明的是,在本申请实施例中,可以在第一存储节点中预先配置数据块的长度S,使得从子逻辑地址0开始,每连续的S个子逻辑地址便为一个数据块的逻辑地址。这样,第一存储节点通过采用数据块的长度S对每个子逻辑地址进行取整运算,使得根据一个数据块中的每个子逻辑地址取整得到的整数X相同,从而使得根据一个数据块中的每个子逻辑地址计算得到的镜像节点相同,也就是说,使得一个数据块能够存在一个镜像节点中。

且,在本申请实施例中,预设数量的镜像节点是由分布式RAID系统的可靠性指标决定的。示例性的,假设分布式RAID系统的可靠性指标为在两个存储节点的缓存分别发生故障的情况下,这两个存储节点缓存中的数据仍可以恢复,那么每个存储节点中的数据便需要分别在至少三个存储节点的缓存中存储,即第一存储节点中镜像节点的预设数量为两个或两个以上。

示例性的,假设待写入数据的逻辑地址中包括的子逻辑地址为:逻辑地址2、逻辑地址3、逻辑地址4,第一存储节点中预先配置的数据块的长度S为4,且预先配置有两种哈希算法,镜像节点的预设数量为两个,分布式RAID系统中存储节点的数量K为16。那么第一存储节点可以分别对逻辑地址2、3、4进行取整计算,得到相应的X分别为0、0、1。这样,第一存储节点可以分别采用两种哈希算法对整数0进行哈希计算,再分别对两个哈希计算结果在除以16之后进行取余,获得镜像节点的编号,假设分别为5和6,并分别采用两种哈希算法对整数1进行计算,再分别对两个哈希计算结果在除以16之后进行取余,获得镜像节点的编号,假设分别为6和7。此时,第一存储节点便可以确定与逻辑地址2对应的镜像节点是编号为5和6的存储节点,与逻辑地址3对应的镜像节点是编号为5和6的存储节点,与逻辑地址4对应的镜像节点是编号为6和7的存储节点。

304、第一存储节点记录第一对应关系。

其中,在第一存储节点根据待写入数据的逻辑地址确定出镜像节点之后,第一存储节点可以保存第一对应关系,该第一对应关系为每个子逻辑地址与镜像节点的编号的映射关系。

示例性的,按照步骤303中的例子,假设第一存储节点的编号为1,那么第一存储节点1可以保存如表1所示的第一对应关系。

表1

逻辑地址 接收节点的编号 镜像节点的编号 2、3 1 5、6 4 1 6、7

305、第一存储节点将待写入数据和待写入数据的逻辑地址发送至镜像节点。

其中,在第一存储节点记录了第一对应关系之后,第一存储节点可以向镜像节点发送待写入数据和待写入数据的逻辑地址。具体的:第一存储节点可以向每个镜像节点发送第二写请求,该第二写请求中包括镜像数据和镜像数据的逻辑地址,其中,镜像数据的逻辑地址为第一对应关系中与该镜像节点对应的逻辑地址。该镜像节点便可以在自身缓存中保存接收到的第二写请求中包含的镜像数据。且该镜像节点可以向第一存储节点发送响应消息,用于通知第一存储节点该第二写请求包含的镜像数据已存储到该镜像节点的缓存中。

示例性的,按照步骤304中的例子,假设第一写请求中包括的待写入数据为数据A、数据B和数据C,其中,数据A与逻辑地址2对应,数据B和逻辑地址3对应,数据C与逻辑地址4对应,那么第一存储节点1向存储节点5发送的第二写请求中,镜像数据的逻辑地址包括:与镜像节点5对应的逻辑地址2、逻辑地址3,镜像数据包括:数据A和数据B。第一存储节点1向存储节点6发送的第二写请求中,镜像数据的逻辑地址包括:与镜像节点6对应的逻辑地址2、逻辑地址3、逻辑地址4,镜像数据包括:数据A、数据B和数据C。第一存储节点1向存储节点7发送的第二写请求中,镜像数据的逻辑地址包括:与镜像节点7对应的逻辑地址4,镜像数据包括数据C。

306、第一存储节点向主机发送响应消息。

其中,在第一存储节点接收到每个镜像节点发送的响应消息之后,第一存储节点可以向主机发送响应消息,用于通知主机第一写请求中待写入数据已存储在分布式RAID系统中。

需要说明的是,在本申请实施例中,主机会向第一存储节点发送多个写请求,此时,第一存储节点可以根据处理能力并行处理接收到的多个写请求,且第一存储节点处理每个写请求时均可以执行步骤301-步骤306。在第一存储节点向主机回复了响应消息之后,便可以在后台进行数据的持久化,具体可以执行以下步骤307-步骤308:

307、第一存储节点根据第一对应关系从自身的缓存中选择N个目标数据块,这N个目标数据块的镜像节点互不相同。

其中,目标数据块中包括每连续的S个逻辑地址对应的数据。第一存储节点可以先在第一对应关系中确定具有同样镜像节点的子逻辑地址,该同样的镜像节点可能是一个,也可能是多个,如果同样的镜像节点有多个,则第一存储节点可以先从多个镜像节点中选出一个镜像节点。这样,第一存储节点便可以选择N个互不相同的镜像节点,并从N个不同镜像节点对应的子逻辑地址中选出构成一个数据块的子逻辑地址,所选择的子逻辑地址对应的数据便为N个目标数据块。

且第一存储节点在选出构成一个数据块的子逻辑地址时,可以先确定构成一个数据块时缺失的子逻辑地址,然后再判断该缺失的逻辑地址是否记录在第二对应关系中,该第二对应关系为写入镜像节点的硬盘的数据的逻辑地址与写入该镜像节点的硬盘的物理地址的对应关系。如果第二对应关系中不存在该缺失的子逻辑地址,则表明第一存储节点未将与缺失的子逻辑地址对应的数据写入硬盘,此时第一存储节点可以设置与该缺失的子逻辑地址对应的数据为0以构成目标数据块,并将该缺失的子逻辑地址记录至第一对应关系中。如果第二对应关系中存在该缺失的子逻辑地址,则表明第一存储节点已将与该缺失的逻辑地址对应的数据存储到镜像节点的硬盘中,此时,第一存储节点可以根据第二对应关系,从该镜像节点中获取与该缺失的子逻辑地址对应的数据以构成目标数据块,并将该缺失的子逻辑地址记录至第一对应关系中。

示例性的,假设数据块的长度S为3,N为3,第一存储节点1保存的第一对应关系如表2所示。

表2

逻辑地址 接收节点 镜像节点 3 1 2 0、1、2 1 4 4 1 2 9、10 1 3 11 1 3 15 1 7

那么第一存储节点1可以在表2中分别确定,具有镜像节点2、3、4、7的子逻辑地址。然后,第一存储节点1可以选择3个互不相同的镜像节点,如编号为2、3和4的镜像节点,此时,第一存储节点1可以从这3个镜像节点对应的子逻辑地址中选出构成一个数据块的子逻辑地址,且在选出构成一个数据块的子逻辑地址时,第一存储节点可以确定缺失的子逻辑地址5,并补入与缺失的逻辑地址5对应的数据以构成目标数据块,并将缺失的逻辑地址5记录至第一对应关系中,此时,第一存储节点1选出的3个目标数据块分别为:逻辑地址3、逻辑地址4和逻辑地址5对应的数据,逻辑地址9、逻辑地址10和逻辑地址11对应的数据,逻辑地址0、逻辑地址1和逻辑地址2对应的数据。

308、第一存储节点分别向N个目标数据块对应的N个镜像节点发送通知消息。

其中,每个通知消息中包括该通知消息所发往的镜像节点对应的目标数据块的逻辑地址,该通知消息用于指示镜像节点将自身缓存中与该通知消息中的逻辑地址对应的数据块存储至自身的硬盘中。

在第一存储节点确定出N个目标数据块之后,第一存储节点可以分别向N个目标数据块对应的N个镜像节点发送通知消息。每个镜像节点在接收到通知消息之后,可以先判断自身缓存中是否存储有与通知消息中的逻辑地址对应的数据。如果自身缓存中存储有与通知消息中的逻辑地址对应的数据,则该镜像节点可以将与通知消息中的逻辑地址对应的数据块存储至自身的硬盘中。如果自身缓存中未存储有与通知消息中的某个逻辑地址对应的数据,则该镜像节点可以判断该缺失数据的逻辑地址是否记录在写入硬盘的数据的逻辑地址与写入硬盘的物理地址的映射关系中,如果不存在,那么该镜像节点可以设置与该缺失数据的逻辑地址对应的数据为0以构成目标数据块。如果存在,那么该镜像节点可以根据写入硬盘的数据的逻辑地址与写入硬盘的物理地址的映射关系,获取与该逻辑地址对应的数据构成目标数据块。然后第一存储节点再将与通知消息中的逻辑地址对应的数据块存储至自身的硬盘中。

示例性的,按照步骤307中的例子,第一存储节点1可以分别向编号为2、3、4的存储节点发送通知消息,其中,第一存储节点1向编号为2的存储节点发送的通知消息中包括的逻辑地址为3、4、5,第一存储节点1向编号为3的存储节点发送的通知消息中包括的逻辑地址为9、10、11,第一存储节点1向编号为4的存储节点发送的通知消息中包括的逻辑地址为0、1、2。

309、第一存储节点根据N个目标数据块计算M个校验数据块。

其中,为了在将数据写入硬盘时确保数据的可靠性,在步骤307第一存储节点确定出N个目标数据块之后,第一存储节点可以采用EC算法对N个目标数据块的数据进行计算,获得M个校验数据块。

310、第一存储节点将M个校验数据块发送至除N个镜像节点之外的存储节点存储。

其中,在第一存储节点获得M个校验数据块之后,第一存储节点可以选择除N个镜像节点外的M个存储节点,并将M个校验数据块分别发送至该M个存储节点存储,以便每个存储节点将接收到的校验数据块存储至自身硬盘中,这样N个存储节点的硬盘中存储的N个目标数据块和M个存储节点的硬盘中存储的M个校验数据块可以组成一个条带,使得在该条带的N个目标数据块中的任意Y个目标数据块的数据损坏或丢失的情况下,可以通过该条带中其余未损坏的N-Y个目标数据块的数据以及M个校验数据块的数据来恢复损坏的Y个目标数据块的数据。

311、第一存储节点从第一对应关系中删除N个目标数据块的子逻辑地址与镜像节点的对应关系,并从自身的缓存中删除N个目标数据块,且分别向N个目标数据块对应的N个镜像节点发送指示消息。

其中,在分布式RAID系统的N个存储节点的硬盘中存储有N个目标数据块的数据,M个存储节点的硬盘中存储有M个校验数据块的数据之后,表明该N个目标数据块的数据已可靠地存储在分布式RAID系统中了。此时,第一存储节点可以从第一对应关系中删除N个目标数据块的子逻辑地址与镜像节点的对应关系。且第一存储节点可以从自身的缓存中删除N个目标数据块,并分别向N个目标数据块对应的N镜像节点发送指示消息,该指示消息中包括该指示消息所发往的镜像节点对应的目标数据块的逻辑地址,用于指示镜像节点从自身缓存中删除与该指示消息中的逻辑地址对应的数据块。

需要说明的是,在本申请实施例中,第一存储节点向N个目标数据块对应的N个镜像节点中的任意一个镜像节点发送的指示消息中包括的逻辑地址,与步骤308中第一存储节点向该镜像节点发送的通知消息中包括的逻辑地址相同。

本申请实施例提供的数据存储方法,接收节点通过根据待写入数据的逻辑地址确定镜像节点,并向镜像节点发送待写入数据和待写入数据的逻辑地址,使得N个目标数据块分别存储在N个镜像节点中,接收节点便可以直接向N个镜像节点发送包含有目标数据块的逻辑地址的通知消息,来指示镜像节点将与该逻辑地址对应的数据块写入硬盘,这样,本申请与现有技术中存储节点需要跨节点发送两次待写入数据相比,接收节点仅需在向镜像节点发送待写入数据时跨节点发送一次数据,且由于通知消息中包括的逻辑地址的数据量较小,占用的带宽较小,因此与现有技术相比,提升了系统I/O带宽。

并且,第一存储节点通过采用数据块的长度对每个子逻辑地址进行取整运算,使得一个数据块能够存在一个镜像节点中。通过对每个哈希计算的结果在除以K之后进行取余,并根据取余的结果得到镜像节点的编号,使得计算得到的镜像节点是分布式RAID系统中的存储节点。

图4为本申请实施例提供的另一种数据存储方法的流程图,如图4所示,该方法可以包括:

需要说明的是,在本申请实施例中,以镜像节点为第二存储节点为例进行说明。

401、第二存储节点接收至少一个接收节点发送的第一写请求。

其中,第一写请求包括镜像数据及镜像数据的逻辑地址,接收节点为从主机接收到第二写请求的节点,第二写请求包括待写入数据及待写入数据的逻辑地址,镜像节点为接收节点根据待写入数据的逻辑地址确定,镜像数据为接收节点确定的写入该镜像节点的数据。且镜像数据的逻辑地址中包括至少一个子逻辑地址。

402、第二存储节点将镜像数据写入自身的缓存,并记录镜像数据的逻辑地址与接收节点的对应关系。

其中,在第二存储节点接收到第一写请求之后,第二存储节点可以在自身缓存中保存接收到的第一写请求中的镜像数据,并记录镜像数据的逻辑地址中的每个子逻辑地址与接收节点的对应关系。

403、第二存储节点根据镜像数据的逻辑地址与接收节点的对应关系从自身的缓存中选出N个目标数据块,这N个数据块的接收节点互不相同。

其中,第二存储节点可以先在镜像数据的逻辑地址与接收节点的对应关系中确定具有同样接收节点的子逻辑地址。然后,第一存储节点便可以选择N个互不相同的接收节点,并从N个不同接收节点对应的子逻辑地址中选出构成一个数据块的子逻辑地址,所选择的子逻辑地址对应的数据便为N个目标数据块。

需要说明的是,在本申请实施例中,对于第二存储节点选出构成一个数据块的子逻辑地址的具体描述可以参考图3中步骤307中,第一存储节点选出构成一个数据块的子逻辑地址的相关描述,本申请实施例在此不再赘述。

步骤404-步骤407,在本申请实施例中,步骤404-步骤407的相关描述与本申请另一实施例图3中步骤308-步骤311的相关描述类似,对于步骤404-步骤407的相关描述,可以参考图3中步骤308-步骤311的相关描述,本申请实施例不再一一赘述。

本申请实施例提供的数据存储方法,镜像节点通过将接收到的第一写请求中的镜像数据写入缓存,并记录镜像数据的逻辑地址与接收节点的对应关系,使得N个目标数据块分别存储在N个接收节点中,镜像节点便可以直接向N个接收节点发送包含有目标数据块的逻辑地址的通知消息,来指示接收节点将与该逻辑地址对应的数据块写入硬盘,这样,本申请与现有技术中存储节点需要跨节点发送两次待写入数据相比,仅跨节点发送了一次数据,且由于通知消息中包括的逻辑地址的数据量较小,占用的带宽较小,因此与现有技术相比,提升了系统I/O带宽。

上述主要从存储节点的角度对本申请实施例提供的方案进行了介绍。可以理解的是,存储节点为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

本申请实施例可以根据上述方法示例对存储节点进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图5示出了上述和实施例中涉及的存储节点的一种可能的组成示意图,如图5所示,该存储节点可以包括:接收单元51、存储单元52、确定单元53、发送单元54和选择单元55。

其中,接收单元51,用于支持存储节点执行图3所示的数据存储方法中的步骤301。

存储单元52,用于支持存储节点执行图3所示的数据存储方法中的步骤302、步骤304。

确定单元53,用于支持存储节点执行图3所示的数据存储方法中步骤303。

发送单元54,用于支持存储节点执行图3所示的数据存储方法中步骤305、步骤306、步骤308、步骤310、步骤311所述的分别向N个目标数据块对应的N个镜像节点发送指示消息。

选择单元55,用于支持存储节点执行图3所示的数据存储方法中步骤307。

在本申请实施例中,进一步的,如图6所示,存储节点还可以包括:计算单元56和删除单元57。

计算单元56,用于支持存储节点执行图3所示的数据存储方法中的步骤309。

删除单元57,用于支持存储节点执行图3所示的数据存储方法中的步骤311所述的从第一对应关系中删除N个目标数据块的子逻辑地址与镜像节点的对应关系,并从自身的缓存中删除N个目标数据块。

需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

本申请实施例提供的存储节点,用于执行上述图3中的数据存储方法,因此可以达到与上述数据存储方法相同的效果。

在采用对应各个功能划分各个功能模块的情况下,图7示出了上述和实施例中涉及的存储节点的一种可能的组成示意图,如图7所示,该存储节点可以包括:接收单元61、存储单元62、选择单元63和发送单元64。

其中,接收单元61,用于支持存储节点执行图4所示的数据存储方法中的步骤401。

存储单元62,用于支持存储节点执行图4所示的数据存储方法中的步骤402。

选择单元63,用于支持存储节点执行图4所示的数据存储方法中的步骤403。

发送单元64,用于支持存储节点执行图4所示的数据存储方法中的步骤404、步骤406、步骤407所述的分别向N个目标数据块对应的N个接收节点发送指示消息。

需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

本申请实施例提供的存储节点,用于执行上述图4中的数据存储方法,因此可以达到与上述数据存储方法相同的效果。

在采用集成的单元的情况下,图8示出了上述实施例中所涉及的存储节点的另一种可能的组成示意图。如图8所示,该存储节点包括:处理模块71和通信模块72。

处理模块71用于对存储节点的动作进行控制管理,例如,处理模块71用于支持存储节点执行图3中的步骤303、步骤307、步骤309、步骤311所述的从第一对应关系中删除N个目标数据块的子逻辑地址与镜像节点的对应关系,并从自身的缓存中删除N个目标数据块,图4所示的步骤403、步骤405、步骤407所述的从镜像数据的逻辑地址与接收节点的对应关系中删除N个目标数据块的子逻辑地址与镜像节点的对应关系,并从自身的缓存中删除N个目标数据块,和/或用于本文所描述的技术的其它过程。通信模块72用于支持存储节点与其他网络实体,如主机、分布式RAID系统中的其他存储节点的通信。例如,通信模块72,用于支持存储节点执行图3中的步骤301、步骤305、步骤306、步骤308、步骤310、步骤311所述的分别向N个目标数据块对应的N个镜像节点发送指示消息,图4所示的步骤401、步骤404、步骤406、步骤407所述的分别向N个目标数据块对应的N个接收节点发送指示消息。存储节点还可以包括存储模块73,用于保存存储节点的程序代码和数据。例如,存储模块73用于支持存储节点执行图3中的步骤302、步骤304,图4所示的步骤402。

其中,处理模块71可以是图2中的处理器或控制器。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块72可以是图2中的通信接口等。存储模块73可以是图2中的存储器。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

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

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

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种数据存储方法,其特征在于,应用于分布式独立磁盘冗余阵列RAID系统,所述分布式RAID系统包括K个存储节点,K为大于1的整数,所述方法包括:
接收节点接收第一写请求,所述第一写请求包括待写入数据和待写入数据的逻辑地址,所述接收节点为所述K个存储节点中的任意一个;
所述接收节点将所述待写入数据存储在自身的缓存中;
所述接收节点根据所述待写入数据的逻辑地址确定镜像节点,并记录第一对应关系,所述第一对应关系为待写入数据的逻辑地址与镜像节点的映射关系;
所述接收节点将所述待写入数据和所述待写入数据的逻辑地址发送至所述镜像节点;
所述接收节点根据所述第一对应关系在缓存中选择N个目标数据块,所述N个目标数据块的镜像节点互不相同,其中,N为大于0且小于K的整数;
所述接收节点分别向所述N个目标数据块对应的N个镜像节点发送通知消息,每个通知消息中包括该通知消息所发往的镜像节点对应的目标数据块的逻辑地址,该通知消息用于指示镜像节点将自身缓存中与该通知消息中的逻辑地址对应的数据块存储至自身的硬盘中。
2.根据权利要求1所述的方法,其特征在于,所述待写入数据的逻辑地址包括至少一个子逻辑地址,所述接收节点根据所述待写入数据的逻辑地址确定镜像节点,包括:
所述接收节点采用公式:X=Int(子逻辑地址/数据块的长度),对所述待写入数据的逻辑地址中的每个子逻辑地址除以所述数据块的长度之后进行取整运算,获得与每个子逻辑地址对应的整数X,所述数据块的长度为每个数据块所包括的子逻辑地址的个数;
所述接收节点采用预先配置的哈希算法对每个整数X进行哈希计算,再对每个哈希计算的结果在除以K之后进行取余,并根据取余的结果得到镜像节点的编号。
3.根据权利要求1或2所述的方法,其特征在于,所述待写入数据的逻辑地址包括至少一个子逻辑地址,所述第一对应关系记录了每个子逻辑地址对应的镜像节点;
所述接收节点根据所述第一对应关系在缓存中选择N个目标数据块,包括:
所述接收节点在所述第一对应关系中确定具有同样镜像节点的子逻辑地址;
所述接收节点从N个不同镜像节点对应的子逻辑地址中选出构成一个数据块的子逻辑地址,所选择的子逻辑地址对应的数据构成所述N个目标数据块。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述方法还包括:
所述接收节点根据所述N个目标数据块计算M个校验数据块;
所述接收节点将所述M个校验数据块发送至除所述N个镜像节点之外的存储节点存储。
5.根据权利要求4所述的方法,其特征在于,在所述接收节点将所述M个校验数据块发送至除所述N个镜像节点之外的存储节点存储之后,还包括:
所述接收节点从所述第一对应关系中删除所述N个目标数据块的子逻辑地址与镜像节点的对应关系;
所述接收节点从自身的缓存中删除所述N个目标数据块,并分别向所述N个目标数据块对应的N个镜像节点发送指示消息;每个指示消息中包括该指示消息所发往的镜像节点对应的目标数据块的逻辑地址,该指示消息用于指示镜像节点从缓存中删除与该指示消息中的逻辑地址对应的数据块。
6.一种数据存储方法,其特征在于,应用于分布式独立磁盘冗余阵列RAID系统,所述分布式RAID系统包括K个存储节点,K为大于1的整数,所述方法包括:
镜像节点接收至少一个接收节点发送的第一写请求,所述第一写请求包括镜像数据及镜像数据的逻辑地址,所述接收节点为从主机接收到第二写入请求的节点,所述第二写请求包括待写入数据及待写入数据的逻辑地址,所述镜像节点为所述接收节点根据所述待写入数据的逻辑地址确定,所述镜像数据为所述接收节点确定的写入所述镜像节点的数据;
所述镜像节点将所述镜像数据写入自身的缓存,并记录所述镜像数据的逻辑地址与所述接收节点的对应关系;
所述镜像节点根据所述镜像数据与所述接收节点的对应关系在自身的缓存中选择N个目标数据块,所述N个目标数据块的接收节点互不相同,其中,N为大于0且小于K的整数;
所述镜像节点分别向所述N个目标数据块对应的N个接收节点发送通知消息,每个通知消息包括该通知消息所发往的接收节点对应的目标数据块的逻辑地址,以指示所述接收节点将自身缓存中与该逻辑地址对应的数据块写入硬盘。
7.一种接收节点,其特征在于,应用于分布式独立磁盘冗余阵列RAID系统,所述分布式RAID系统包括K个存储节点,K为大于1的整数,所述接收节点为所述K个存储节点中的任意一个,所述接收节点包括:接收单元、存储单元、确定单元、发送单元和选择单元;
所述接收单元,用于接收第一写请求,所述第一写请求包括待写入数据和待写入数据的逻辑地址;
所述存储单元,用于将所述待写入数据存储在自身的缓存中;
所述确定单元,用于根据所述待写入数据的逻辑地址确定镜像节点;
所述存储单元,还用于记录第一对应关系,所述第一对应关系为待写入数据的逻辑地址与镜像节点的映射关系;
所述发送单元,用于将所述待写入数据和所述待写入数据的逻辑地址发送至所述镜像节点;
所述选择单元,还用于根据所述存储单元记录的所述第一对应关系在缓存中选择N个目标数据块,所述N个目标数据块的镜像节点互不相同,其中,N为大于0且小于K的整数;
所述发送单元,还用于分别向所述N个目标数据块对应的N个镜像节点发送通知消息,每个通知消息中包括该通知消息所发往的镜像节点对应的目标数据块的逻辑地址,该通知消息用于指示镜像节点将自身缓存中与该通知消息中的逻辑地址对应的数据块存储至自身的硬盘中。
8.根据权利要求7所述的接收节点,其特征在于,所述待写入数据的逻辑地址包括至少一个子逻辑地址,所述确定单元,具体用于:
采用公式:X=Int(子逻辑地址/数据块的长度),对所述待写入数据的逻辑地址中的每个子逻辑地址在除以所述数据块的长度之后进行取整运算,获得与每个子逻辑地址对应的整数X,所述数据块的长度为每个数据块所包括的子逻辑地址的个数;
采用预先配置的哈希算法对每个整数X进行哈希计算,再对每个哈希计算的结果进行取余,并根据取余的结果得到镜像节点的编号。
9.根据权利要求7或8所述的接收节点,其特征在于,所述待写入数据的逻辑地址包括至少一个子逻辑地址,所述第一对应关系记录了每个子逻辑地址对应的镜像节点;
所述选择单元,具体用于:
在所述第一对应关系中确定具有同样镜像节点的子逻辑地址;
从N个不同镜像节点对应的子逻辑地址中选出构成一个数据块的子逻辑地址,所选择的子逻辑地址对应的数据构成N个目标数据块。
10.根据权利要求7-9任意一项所述的接收节点,其特征在于,所述接收节点还包括:计算单元;
所述计算单元,用于根据所述N个目标数据块计算M个校验数据块;
所述发送单元,还用于将所述M个校验数据块发送至除所述N个镜像节点之外的存储节点存储。
11.根据权利要求10所述的接收节点,其特征在于,所述接收单元还包括:删除单元;
所述删除单元,用于从所述第一对应关系中删除所述N个目标数据块的子逻辑地址与镜像节点的对应关系,并从自身的缓存中删除所述N个目标数据块;
所述发送单元,还用于分别向所述N个目标数据块对应的N个镜像节点发送指示消息;每个指示消息中包括该指示消息所发往的镜像节点对应的目标数据块的逻辑地址,该指示消息用于指示镜像节点从缓存中删除与该指示消息中的逻辑地址对应的数据块。
12.一种镜像节点,其特征在于,应用于分布式独立磁盘冗余阵列RAID系统,所述分布式RAID系统包括K个存储节点,K为大于1的整数,所述镜像节点包括:接收单元、存储单元、选择单元和发送单元;
所述接收单元,用于接收至少一个接收节点发送的第一写请求,所述第一写请求包括镜像数据及镜像数据的逻辑地址,所述接收节点为从主机接收到第二写入请求的节点,所述第二写请求包括待写入数据及待写入数据的逻辑地址,所述镜像节点为所述接收节点根据所述待写入数据的逻辑地址确定,所述镜像数据为所述接收节点确定的写入所述镜像节点的数据;
所述存储单元,用于将所述镜像数据写入自身的缓存,并记录所述镜像数据的逻辑地址与所述接收节点的对应关系;
所述选择单元,用于根据所述镜像数据与所述接收节点的对应关系在自身的缓存中选择N个目标数据块,所述N个目标数据块的接收节点互不相同,其中,N为大于0且小于K的整数;
所述发送单元,用于分别向所述N个目标数据块对应的N个接收节点发送通知消息,每个通知消息包括该通知消息所发往的接收节点对应的目标数据块的逻辑地址,以指示所述接收节点将自身缓存中与该逻辑地址对应的数据块写入硬盘。
CN201711073029.2A 2017-11-03 2017-11-03 一种数据存储方法及设备 CN109753225A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711073029.2A CN109753225A (zh) 2017-11-03 2017-11-03 一种数据存储方法及设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711073029.2A CN109753225A (zh) 2017-11-03 2017-11-03 一种数据存储方法及设备
PCT/CN2018/113837 WO2019086016A1 (zh) 2017-11-03 2018-11-02 一种数据存储方法及设备

Publications (1)

Publication Number Publication Date
CN109753225A true CN109753225A (zh) 2019-05-14

Family

ID=66332466

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711073029.2A CN109753225A (zh) 2017-11-03 2017-11-03 一种数据存储方法及设备

Country Status (2)

Country Link
CN (1) CN109753225A (zh)
WO (1) WO2019086016A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010056525A1 (en) * 2000-06-19 2001-12-27 Storage Technology Corporation Using current internal mapping mechanisms to implement dynamic mapping operations
CN101646994A (zh) * 2006-12-06 2010-02-10 弗森多系统公司(dba弗森-艾奥) 利用内存库交错管理固态存储器的命令的装置、系统及方法
CN103164667A (zh) * 2011-12-08 2013-06-19 三星电子株式会社 数据存储设备和数据管理方法
CN103797770A (zh) * 2012-12-31 2014-05-14 华为技术有限公司 一种共享存储资源的方法和系统
CN104603739A (zh) * 2012-08-30 2015-05-06 微软公司 对并行存储的块级访问
US20160188211A1 (en) * 2014-12-30 2016-06-30 International Business Machines Corporation Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410667A (en) * 1992-04-17 1995-04-25 Storage Technology Corporation Data record copy system for a disk drive array data storage subsystem
CN101504594B (zh) * 2009-03-13 2011-01-05 杭州华三通信技术有限公司 一种数据存储方法和装置
CN103544045A (zh) * 2013-10-16 2014-01-29 南京大学镇江高新技术研究院 一种基于hdfs的虚拟机镜像存储系统及其构建方法
CN106155937B (zh) * 2015-04-07 2019-03-05 龙芯中科技术有限公司 缓存访问方法、设备和处理器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010056525A1 (en) * 2000-06-19 2001-12-27 Storage Technology Corporation Using current internal mapping mechanisms to implement dynamic mapping operations
CN101646994A (zh) * 2006-12-06 2010-02-10 弗森多系统公司(dba弗森-艾奥) 利用内存库交错管理固态存储器的命令的装置、系统及方法
CN103164667A (zh) * 2011-12-08 2013-06-19 三星电子株式会社 数据存储设备和数据管理方法
CN104603739A (zh) * 2012-08-30 2015-05-06 微软公司 对并行存储的块级访问
CN103797770A (zh) * 2012-12-31 2014-05-14 华为技术有限公司 一种共享存储资源的方法和系统
US20160188211A1 (en) * 2014-12-30 2016-06-30 International Business Machines Corporation Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes

Also Published As

Publication number Publication date
WO2019086016A1 (zh) 2019-05-09

Similar Documents

Publication Publication Date Title
CN102770848B (zh) 存储控制器中的转出任务的动态管理
US8327110B2 (en) Storage system including a virtual volume, a plurality of disk drives and a plurality of flash memory devices
US7356643B2 (en) System, method and program for managing storage
CN104040516B (zh) 用于数据去重的方法、设备和系统
US8332367B2 (en) Parallel data redundancy removal
JP5370897B2 (ja) リモート・ダイレクト・ストレージ・アクセス
US9049242B2 (en) Atomic cache transactions in a distributed storage system
CN102387169B (zh) 分布式缓存的对象删除方法、系统及删除服务器
US20060200697A1 (en) Storage system, control method thereof, and program
TW200925878A (en) System and method for management of an IOV adapter through a virtual intermediary in an IOV management partition
KR20040071187A (ko) 데이터 네트워크에 배속된 스토리지 자원의 관리
WO2009088435A1 (en) System and method for automatic storage load balancing in virtual server environments
US20030187627A1 (en) I/O velocity projection for bridge attached channel
US8140725B2 (en) Management system for using host and storage controller port information to configure paths between a host and storage controller in a network
US6954839B2 (en) Computer system
US10204017B2 (en) Variable drive health determination and data placement
CN103842972B (zh) 基于性能要求自动选择功能的方法和系统
US8245272B2 (en) System and method for monitoring computer system resource performance
JP4473175B2 (ja) 記憶制御方法、プログラム及び装置
KR100528973B1 (ko) 가비지 콜렉션 방법 및 그 장치
CN102156738B (zh) 数据块处理方法、数据块存储设备及系统
JP5132812B2 (ja) 優先度を用いて入出力要求をキューに入れるか否かを決定するための方法、システム、および製造品(優先度を用いて、記憶装置に送出された入出力(i/o)要求をキューに入れるか否かを決定すること)
JP2002091804A (ja) ストレージ・デバイス上でのスペースの割振りを管理する方法、システム、およびプログラム記憶媒体
KR20120102664A (ko) 미래 사용 추정에 기반한 저장 메모리 할당
US9430321B2 (en) Reconstructing data stored across archival data storage devices

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination