CN114697349A - 使用中间设备对数据处理的方法、计算机系统、及中间设备 - Google Patents

使用中间设备对数据处理的方法、计算机系统、及中间设备 Download PDF

Info

Publication number
CN114697349A
CN114697349A CN202011582831.6A CN202011582831A CN114697349A CN 114697349 A CN114697349 A CN 114697349A CN 202011582831 A CN202011582831 A CN 202011582831A CN 114697349 A CN114697349 A CN 114697349A
Authority
CN
China
Prior art keywords
data
storage space
node
check
written
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202011582831.6A
Other languages
English (en)
Inventor
蔡昕辰
林钦亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202011582831.6A priority Critical patent/CN114697349A/zh
Priority to PCT/CN2021/142132 priority patent/WO2022143677A1/zh
Publication of CN114697349A publication Critical patent/CN114697349A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供一种计算机系统、数据处理方法和中间设备,所述系统包括计算节点、存储节点、校验节点和中间设备,所述计算节点通过中间设备访问存储节点和校验节点;计算节点上运行业务;中间设备用于基于预设的分片长度对写入所述业务对应的逻辑存储空间的待写数据进行切分得到多个数据,根据所述逻辑存储空间的元数据确定写入所述切分得到的数据的存储节点及写入所述待写数据的校验数据的校验节点,将切分得到的数据写入存储节点中与所述逻辑存储空间对应的物理存储空间中,并将所述校验数据写入校验节点与所述逻辑存储空间对应的物理存储空间中。本申请实施例提供的计算机系统有效减少了计算节点的负载,且减少了数据写入的时延。

Description

使用中间设备对数据处理的方法、计算机系统、及中间设备
技术领域
本申请涉及计算机技术领域,具体涉及一种使用中间设备对数据处理的方法、计算机系统、及中间设备。
背景技术
在多节点的计算机系统中,通常包括多个计算节点和多个存储节点。为了实现由多个计算节点并发地对应用的存储空间进行访问,相关技术中通过存储节点对应用的存储空间进行管理,而通过存储节点对应用的存储空间进行管理时,在计算节点对存储节点中存储的应用的数据访问时,会增加计算节点的负载,并影响数据处理的时延。例如,计算节点在基于数据分片存储方式对多个存储节点进行多分片写入的场景中,当计算节点需要将应用的数据写入应用对应的存储空间时,计算节点首先请求多个存储节点中的主存储节点在应用对应的存储空间中为所述数据分配写入地址,在获取写入地址后根据该写入地址对所述数据进行切分,再向所述写入地址对应的至少一个存储节点分别发送写入数据的各个部分的写请求。这样,在写入数据时,计算节点首先需要向所述主存储节点申请分配写入地址,在分配了写入地址之后,然后再向各个存储节点发送写入数据的一部分的写请求,即计算节点需要向存储节点发送至少两次请求,这不但增加了计算节点的负载,且增加了数据写入的时延。
发明内容
本申请实施例旨在提供一种数据处理的方法、计算机系统、及中间设备,通过在计算节点与存储节点之间连接的中间设备对应用的存储空间进行管理,有效减少了计算节点的负载,且减少了数据写入的时延。
为实现上述目的,本申请第一方面提供一种计算机系统,其特征在于,包括计算节点、存储节点、校验节点和中间设备,所述计算节点通过所述中间设备访问所述存储节点和所述校验节点;所述计算节点上运行业务;所述中间设备用于基于预设的分片长度对写入所述业务对应的逻辑存储空间的待写数据进行切分得到多个数据,根据所述逻辑存储空间的元数据确定写入所述切分得到的数据的存储节点及写入所述待写数据的校验数据的校验节点,将所述切分得到的数据写入存储节点中与所述逻辑存储空间对应的物理存储空间中,并将所述校验数据写入校验节点与所述逻辑存储空间对应的物理存储空间中。
通过将业务的逻辑存储空间的元数据存储在所述中间设备上,以使中间设备通过所述元数据对所述业务的逻辑存储空间进行管理,以进行对存储节点和校验节点的操作,这样可以减轻计算节点的负载,并减少了数据写入的时延。例如,当所述操作为写操作时,计算节点只需要发送写请求至中间设备即可,中间设备根据所述元数据为所述写请求在所述逻辑存储空间中分配地址,并根据所分配的地址将数据写入存储节点,并将校验数据写入校验节点,由于计算节点只需要发送请求至中间设备,所以减轻了计算节点的负载,也减少了数据写入的时延。
在本申请第一方面的一种可能的实现方式中,所述逻辑存储空间的元数据包括所述逻辑存储空间的标识,所述逻辑存储空间的地址信息,所述逻辑存储空间对应的N个存储节点中的N个第一物理存储空间的地址信息、以及所述逻辑存储空间对应的M个校验节点中的M个第二物理存储空间的地址信息,其中,所述第一物理存储空间的长度等于所述分片长度,所述逻辑存储空间的长度等于N个所述分片长度之和。
通过在所述元数据中记录应用的逻辑存储空间的地址信息、存储节点中物理存储空间的地址信息以及校验节点中物理存储空间的地址信息,中间设备可以将对逻辑存储空间的操作映射至对存储节点和校验节点中的物理存储空间的操作,从而实现对存储在存储节点中的物理存储空间中的业务数据的操作。
在本申请第一方面的一种可能的实施方式中,所述逻辑存储空间为持久化日志空间。
在本申请第一方面的一种可能的实施方式中,所述中间设备为网络交换设备。
由于计算节点与存储节点和校验节点之间的通信会经过网络交换机,所以将应用的存储空间的元数据存储在网络交换机中,可以更加方便的实现对应用的存储空间的管理。
在本申请第一方面的一种可能的实现方式中,所述第二物理存储空间的长度等于所述分片长度,当写入所述逻辑存储空间的待写数据的量等于所述逻辑存储空间的长度时,所述多个数据为N个数据分片,所述中间设备还用于计算所述N个数据分片的M个校验分片,所述中间设备用于将所述切分得到的数据写入存储节点中与所述逻辑存储空间对应的物理存储空间中,并将所述校验数据写入校验节点与所述逻辑存储空间对应的物理存储空间中具体包括,所述中间设备用于将所述N个数据分片分别写入所述N个存储节点中的所述第一物理存储空间中,将所述M个校验分片分别写入所述M个校验节点中的所述第二物理存储空间中。
通过由中间设备计算数据分片的校验分片,并将校验分片发送给校验节点,计算节点只需要发送写请求至中间设备即可,减轻了计算节点的负载,减少了写请求的延时。
在本申请第一方面的一种可能的实现方式中,所述第二物理存储空间的长度等于N个所述分片长度之和,当写入所述逻辑存储空间的待写数据的量小于所述逻辑存储空间的长度时,所述中间设备用于将所述切分得到的数据写入存储节点中与所述逻辑存储空间对应的物理存储空间中,并将所述校验数据写入校验节点与所述逻辑存储空间对应的物理存储空间中具体包括,所述中间设备用于将切分获取的多个数据分别写入对应的存储节点中的第一物理存储空间中,将所述待写数据写入每个校验节点中的第二物理存储空间中。
通过由中间设备基于分片长度对待写数据进行切分,并将切分得到的数据发送给对应的存储节点,将待写数据发送给每个校验节点,以使得校验节点进行对校验分片的计算,计算节点只需要发送写请求至中间设备即可,减轻了计算节点的负载,减少了写请求的延时。
在本申请第一方面的一种可能的实现方式中,所述待写数据为计算节点发送的一个写请求对应的数据,所述计算节点通过多个报文将所述待写数据写入所述逻辑存储空间,所述中间设备用于基于预设的分片长度对写入所述业务对应的逻辑存储空间的待写数据进行切分得到多个数据具体包括:所述中间设备用于,按照所述第一物理存储空间的长度从所述第一报文的待写数据切分出用于写入对应的第一存储节点中的第一物理存储空间的末尾地址的数据,在所述第一报文不是所述写请求最后一个报文的情况中,在缓冲区中存储所述第一报文的待写数据在切分之后的剩余数据,以用于在与接收的所述写请求的下一个报文的部分待写数据拼接成预定长度数据之后再发送给另一对应的存储节点。
通过将报文的在切分之后剩余的数据缓存起来并与后一个报文的部分数据拼接为满报文(即具有最大报文数据长度)再进行发送,避免了存储节点误判丢包的情况。
在本申请第一方面的一种可能的实现方式中,所述中间设备还用于,通过将所述第一报文的序列号修改为与所述第一存储节点对应的序列号,生成用于在所述确定的写入地址中写入所述第一报文的部分待写数据的报文,并在与所述第一存储节点对应的发送队列中存储该生成的报文,以向所述第一存储节点发送该报文。
由于中间设备对写请求的待写数据进行EC分包,一个报文可能会被切分发送给两个存储节点,中间设备通过修改从计算设备接收的报文的序列号,避免出现中间设备从计算设备接收的报文的序列号的增加数与中间设备向存储节点发送的报文的序列号的增加数不一致的问题。
在本申请第一方面的一种可能的实现方式中,所述M个校验节点还用于,基于存储的所述逻辑存储空间对应的业务数据的N个数据分片,生成该业务数据的校验分片,为该校验分片分配第三物理存储空间,在所述第三物理存储空间中存储所述校验分片,并将所述第三物理存储空间的地址信息发送给所述中间设备;所述中间设备还用于在从所述M个校验节点分别接收写入校验分片的第三物理存储空间的地址信息之后,将所述逻辑存储空间的元数据中的M个第二物理存储空间的地址信息修改为所述M个第三物理存储空间的地址信息。
本申请第二方面提供一种数据处理方法,其特征在于,所述方法由中间设备执行,所述中间设备连接计算节点、N个存储节点和M个校验节点,所述计算节点上运行业务,所述方法包括:接收所述计算节点发送的对所述业务的数据的写请求;基于预设的分片长度对所述写请求的待写数据进行切分得到多个数据;根据所述业务对应的逻辑存储空间的元数据,确定所述N个存储节点中的分别写入所述多个数据的多个存储节点及写入所述待写数据的校验数据的M个校验节点;请求所述多个存储节点将所述多个数据分别写入其与所述逻辑存储空间对应的物理存储空间中;请求所述M个校验节点分别将所述待写数据的校验数据写入其与所述逻辑存储空间对应的物理存储空间中。
在本申请第二方面的一种可能的实现方式中,所述逻辑存储空间的元数据包括所述逻辑存储空间的标识,所述逻辑存储空间的地址信息,所述逻辑存储空间对应的所述N个存储节点中的N个第一物理存储空间的地址信息、以及所述逻辑存储空间对应的所述M个校验节点中的M个第二物理存储空间的地址信息,其中,所述第一物理存储空间的长度等于所述分片长度,所述逻辑存储空间的长度等于N个所述分片长度之和。
在本申请第二方面的一种可能的实现方式中,所述方法还包括:从计算节点接收所述逻辑存储空间的信息;对所述N个存储节点分别发送第一物理存储空间分配请求,所述第一存储空间分配请求用于请求对所述逻辑存储空间中的一个分片长度的空间分配第一物理存储空间;对所述M个校验节点分别发送第二物理存储空间分配请求,所述第二存储空间分配请求用于请求对所述逻辑存储空间分配第二物理存储空间;从所述N个存储节点接收其为所述逻辑存储空间分配的第一物理存储空间的信息;从所述M个存储节点接收其为所述逻辑存储空间分配的第二物理存储空间的信息。
在本申请第二方面的一种可能的实现方式中,所述第二物理存储空间的长度等于N个所述分片长度之和,所述写请求的待写数据的量小于所述逻辑存储空间的长度,所述方法还包括:根据所述业务对应的逻辑存储空间的元数据,确定将所述多个数据分别写入所述多个存储节点的写入地址、及将所述待写数据写入每个校验节点的写入地址。
在本申请第二方面的一种可能的实现方式中,根据所述业务对应的逻辑存储空间的元数据,确定所述N个存储节点中的分别写入所述多个数据的多个存储节点及写入所述待写数据的校验数据的M个校验节点包括:为所述写请求在所述逻辑存储空间中分配第一地址;根据所述逻辑存储空间的元数据确定与所述第一地址对应的多个存储节点及各个存储节点中的写入地址;根据所述逻辑存储空间的元数据确定每个所述校验节点中的与所述第一地址对应的写入地址。
在本申请第二方面的一种可能的实现方式中,接收所述计算节点发送的对所述业务的数据的写请求包括,接收所述计算节点发送的所述写请求的第一报文,所述根据所述逻辑存储空间的元数据确定与所述第一地址对应的多个存储节点中的第二地址包括,为所述第一报文的至少部分待写数据分配所述第一地址中的地址,根据所述存储空间的元数据确定所述分配给第一报文的地址对应的用于写入所述第一报文中的至少部分待写数据的第一存储节点和该第一存储节点中的写入地址。
在本申请第二方面的一种可能的实现方式中,所述基于预设的分片长度对所述写请求的待写数据进行切分得到多个数据包括,在所述第一报文的部分待写数据被分配的所述第一地址中的地址位于所述逻辑存储空间中的一个分片长度空间的末尾地址的情况中,从所述第一报文的待写数据切分出用于写入所述第一存储节点的写入地址的数据,在所述第一报文不是所述写请求最后一个报文的情况中,在缓冲区中存储所述第一报文的待写数据在切分之后的剩余数据,以用于在与接收的所述写请求的下一个报文的部分待写数据拼接成预定长度数据之后再发送给另一对应的存储节点。
在本申请第二方面的一种可能的实现方式中,请求所述多个存储节点将所述多个数据分别写入其与所述逻辑存储空间对应的物理存储空间中包括,通过将所述第一报文的序列号修改为与所述第一存储节点对应的序列号,生成用于在所述第一存储节点的写入地址中写入所述第一报文中的至少部分待写数据的报文,并在与所述第一存储节点对应的发送队列中存储该生成的报文,以向所述第一存储节点发送该报文。
在本申请第二方面的一种可能的实现方式中,所述方法还包括:在请求所述M个校验节点分别将所述待写数据的校验数据写入其与所述逻辑存储空间对应的物理存储空间中之后,从所述M个校验节点分别接收写入校验分片的第三物理存储空间的地址信息,将所述逻辑存储空间的元数据中的M个第二物理存储空间的地址信息修改为所述M个第三物理存储空间的地址信息。
在本申请第二方面的一种可能的实现方式中,所述待写数据的量等于所述逻辑存储空间的长度,所述基于预设的分片长度对所述写请求的待写数据进行切分得到多个数据包括,基于所述分片长度对所述待写数据进行分片得到N个数据分片,所述方法还包括:基于所述N个数据分片生成M个校验分片;所述请求所述M个校验节点分别将所述待写数据的校验数据写入其与所述逻辑存储空间对应的物理存储空间中包括,请求所述M个校验节点分别写入所述M个校验分片中的一个校验分片。
在本申请第二方面的一种可能的实现方式中,所述方法还包括,在请求所述M个校验节点分别写入所述M个校验分片中的一个校验分片之后,从所述M个校验节点分别接收写入校验分片的第三物理存储空间的地址信息,将所述逻辑存储空间的元数据中的M个第二物理存储空间的地址信息修改为所述M个第三物理存储空间的地址信息。
本申请第三方面提供一种中间设备,所述中间设备连接计算节点、N个存储节点和M个校验节点,所述计算节点上运行业务,所述中间设备包括:接收单元,用于接收所述计算节点发送的对所述业务的数据的写请求;切分单元,用于基于预设的分片长度对所述数据进行切分得到多个数据;确定单元,用于根据所述业务对应的逻辑存储空间的元数据,确定所述N个存储节点中的分别写入所述多个数据的多个存储节点及写入所述待写数据的校验数据的M个校验节点;请求单元,用于请求所述多个存储节点将所述多个数据分别写入其与所述逻辑存储空间对应的物理存储空间中,及请求所述M个校验节点分别将所述待写数据的校验数据写入其与所述逻辑存储空间对应的物理存储空间中。
在本申请第三方面的一种可能的实现方式中,所述逻辑存储空间的元数据包括所述逻辑存储空间的标识,所述逻辑存储空间的地址信息,所述逻辑存储空间对应的所述N个存储节点中的N个第一物理存储空间的地址信息、以及所述逻辑存储空间对应的所述M个校验节点中的M个第二物理存储空间的地址信息,其中,所述第一物理存储空间的长度等于所述分片长度,所述逻辑存储空间的长度等于N个所述分片长度之和。
在本申请第三方面的一种可能的实现方式中,所述第二物理存储空间的长度等于N个所述分片长度之和,所述待写数据的量小于所述逻辑存储空间的长度,所述确定单元还用于:根据所述业务对应的逻辑存储空间的元数据,确定将所述多个数据分别写入所述多个存储节点的写入地址、及将所述待写数据写入每个校验节点的写入地址。
在本申请第三方面的一种可能的实现方式中,所述待写数据的量等于所述逻辑存储空间的长度,所述切分单元还用于,对所述数据进行分片得到N个数据分片,所述中间设备还包括:生成单元,用于基于所述N个数据分片生成M个校验分片;所述请求单元还用于,请求所述M个校验节点分别写入所述M个校验分片中的一个校验分片。
本申请第四方面提供一种中间设备,包括处理单元和存储单元,所述存储单元中存储有可执行代码,所述处理单元执行所述可执行代码以实现如本申请第二方面和第三方面所述的方法。
本申请第五方面提供一种中间设备,包括:通信接口,用于与存储节点及计算节点进行数据传输;处理单元,用于对所述通信接口接收的数据进行处理,以执行如本申请第二方面和第三方面所述的方法。
附图说明
通过结合附图描述本申请实施例,可以使得本申请实施例更加清楚:
图1为本申请实施例所应用的计算机系统的架构图;
图2为本申请实施例提供的一种在计算机系统中写数据的方法流程图;
图3为计算节点C0和C1并行对PLOG j进行写入的过程示意图;
图4为计算节点C0以上述第二种数据写入方式对PLOG j进行写入的过程示意图;
图5为在计算机系统中写数据的过程示意图;
图6为本申请实施例提供的另一种在计算机系统中写数据的过程示意图;
图7为本申请实施例提供的中间设备的架构图;
图8为本申请实施例提供的一种中间设备的架构图;
图9为本申请实施例提供的一种中间设备的架构图;
图10为本申请实施例提供的云服务系统的示意图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
图1为本申请实施例所应用的计算机系统100的架构图。如图1中所示,该计算机系统100中包括计算层12、网络层13和存储层14。其中,计算层12包括多个计算节点,图1中示意示出计算节点C0、C1和C2;网络层13包括多个中间设备,图1中示意示出中间设备St0和St1;存储层14包括多个存储节点和至少一个校验节点,图1中示意示出存储节点S0、S1和校验节点V0。其中,所述计算节点、存储节点和校验节点可以为物理服务器,或者也可以为虚拟机、容器等基于通用硬件资源抽象的虚拟实体。所述中间设备可以为可编程网络连接设备,例如交换机,下文中将以交换机作为中间设备的示例进行描述。所述多个计算节点例如可以作为多个应用(Application,APP)的应用服务器,为用户终端的用户提供业务处理服务。所述多个存储节点例如可用于存储APP的业务数据,所述至少一个校验节点用于存储所述业务数据的校验数据。存储节点和校验节点中可通过内存或硬盘等存储介质来存储业务数据及其校验数据。由于非易失性内存介质不仅具有大容量、高访问速度的特点,同时还具备非易失的存储特性,所以本发明实施例中的存储介质为非易失性内存介质,所述非易失性内存例如包括存储级内存(Storage class memory,SCM)。所述非易失性内存介质只是举例说明,但本发明实施例并不仅限于所述非易失性内存。
在图1所示的多节点分布式的计算机系统中,每个计算节点与至少一个交换机连接,每个交换机与多个存储节点和至少一个校验节点连接,从而计算节点通过交换机可访问到多个存储节点和至少一个校验节点。另外,交换机与交换机之间直接或间接连接,从而使得计算节点可通过任一交换机访问存储节点。其中,计算节点与交换机之间的连接、交换机与存储节点之间的连接可以为各种连接方式,如远程直接内存访问(Remote directmemory access,RDMA)连接方式,或者传输控制协议(Transmission Control Protocol,TCP)连接方式。多个计算节点可通过交换机对存储节点进行对业务数据的写入、读取等操作。
在相关技术中,为了通过数据分片存储的方式保证数据可靠性,计算节点与存储节点和校验节点直接连接,计算节点通过对与多个存储节点中的存储空间对应的一段逻辑存储空间进行访问,从而访问各个所述存储节点中的存储空间。所述逻辑存储空间例如为持久化日志空间(Persistence LOG,PLOG)。该PLOG通过PLOG的唯一标识PLOG ID来标识,PLOG上的存储数据采用追加写的形式进行存储,即,对于已经存储的数据不进行覆盖修改,而是将该修改追加存储到新的地址中。通常,PLOG与存储节点中的SCM、固态硬盘(SolidState Disk,SSD)等介质中的一段连续物理存储空间相对应,所述物理存储空间为存储节点对外部设备提供的存储空间,外部设备可以利用该存储空间进行数据的访问,对于SCM等介质来说所述物理存储空间即为数据实际存储的物理地址,但对于SSD等存储介质来说,并不是数据实际存储的物理地址。
在该相关技术中,在多个存储节点中的主存储节点中存储PLOG的元数据,该元数据中包括PLOG的ID、该PLOG对应的多个存储节点中的存储空间的地址、该PLOG的未分配空间的地址等信息,所述主存储节点通过PLOG的元数据对PLOG进行管理。例如,当计算节点希望通过PLOG写入数据至多个存储节点中的至少一个存储节点时,计算节点首先请求主存储节点在PLOG中为所述数据分配地址,主存储节点在根据PLOG元数据在所述PLOG中未分配的存储空间为所述数据分配地址后,将所分配的地址返回给计算节点。计算节点在获取所分配的地址之后,在需要的情况下根据所分配的地址对所述待写的数据进行切分,再向所述写入地址对应的至少一个存储节点发别发送写入对应的所述数据的一部分的写请求,以将所述数据写入所述写入地址对应的各个存储节点。在该相关技术中,计算节点在向至少一个存储节点写入数据的过程中,需要与存储节点进行多次通信,增加了计算节点的负载,且增加了数据写入的时延。
在本申请实施例中,如图1中所示,计算节点通过交换机与存储节点S0、S1和校验节点V0连接,交换机作为中间设备存储有PLOG的元数据,并对PLOG的元数据进行管理,从而通过对PLOG的元数据的管理实现对PLOG的管理。所述交换机中存储的PLOG的元数据包括PLOG的ID、该PLOG对应的各个存储节点中的存储空间的地址信息(例如可以为存储空间的起始地址及长度)、该PLOG的未分配空间的地址信息(例如可以为该PLOG未分配空间的起始地址)等,其中,该PLOG的空间长度等于存储节点S0和存储节点S1中相对于该PLOG分配的存储空间的长度之和。当计算节点响应于用户对应用的操作需要对PLOG写入数据时,计算节点向交换机发送对PLOG写入数据的写请求。交换机在接收到该写请求之后,基于PLOG的元数据,对该写请求分配PLOG中的写入地址,基于该写入地址确定将该写请求中的待写数据写入的至少一个存储节点及其中的对应地址,在需要的情况中对该待写数据进行切分,并向各个确定的存储节点发送对其中的对应地址写入所述待写数据的至少部分的请求,以使各个存储节点将所述待写数据的至少部分写入所述存储节点的存储空间。在本申请实施例的技术实现中,通过将PLOG的元数据存储在交换机中,使得交换机来管理PLOG,这样计算节点在将数据写入至少一个存储节点的时候,只要发送数据写请求至交换机即可,而不需要发送地址分配请求,如此,不但降低了计算节点的负载,而且降低了写请求的时延。
图2为本申请实施例提供的一种在计算机系统中写数据的方法流程图。
如图2所示,首先在步骤S201,计算节点发送对PLOG i的写请求1。
在本申请实施例中的流程图中,计算节点可以为图1中多个计算节点中的任一计算节点,交换机为与所操作的PLOG对应的交换机,存储节点和校验节点为与该PLOG对应的存储节点。在本申请实施例中,一个PLOG仅由一个交换机进行管理。在计算节点生成一个新的PLOG之后,该PLOG被确定归属于某个交换机,该确定的交换机即为该PLOG对应的交换机,所述对应的交换机中记录有该PLOG的元数据,并基于该元数据对该PLOG进行管理。所述PLOG对应的存储节点和校验节点为计算节点在生成一个新的PLOG之后为所述PLOG指定的存储节点和校验节点。确定PLOG所述归属的交换机的具体方法例如可以为:计算节点在生成新的PLOG之后,可对该PLOG的ID进行哈希计算,从而基于该PLOG ID的哈希值将该PLOG归属到某个交换机,并将该PLOG的信息发送到该交换机,以由该交换机对该PLOG进行管理。另一种确定PLOG所述归属的交换机的方法可以为:计算节点在生成新的PLOG之后,可将该PLOG的信息发给其连接的任一交换机,从而由多个交换机协商确定并记录该PLOG与交换机的映射关系,之后,接收到PLOG信息的交换机可基于所述映射关系将该PLOG的信息转发给对应的交换机,并由对应的交换机对该PLOG进行管理。
假设图2中的计算节点为图1中的计算节点C0。计算节点C0中设置有PLOG功能层,该PLOG功能层对应用提供调用接口,所述调用接口例如包括PLOG申请接口、PLOG写接口等等。当计算节点C0中的应用需要向计算机系统中写入数据时,首先,应用从PLOG功能层获取预先记录的当前可写入的PLOG的ID,确定当前可写入的PLOG为PLOG i,从而,应用调用PLOG功能层中的写接口,从而使得计算节点C0直接或间接向对应的交换机发送对PLOG i的写请求1。
具体是,计算节点C0中的应用调用所述写接口,传入PLOG i的标识,待写数据的存放地址、待写数据的长度,PLOG功能层根据传入的参数调用网卡的数据发送接口,根据待写数据的存放地址和待写数据的长度获取待写数据,基于该待写数据组装成写请求1的数据包(即报文)发送给交换机。根据设定的一次发送的最大报文长度,该写请求1可能以单个数据包发送给所述对应的交换机,或者以多个数据包发送给对应的交换机。其中,在该写请求1的数据包包括单个数据包的情况中,该写请求1中包括写请求1的编号、PLOG i的标识、待写数据及待写数据的长度。在该写请求1的数据包包括多个数据包的情况中,每个数据包中包括写请求1的编号、PLOG i的标识和待写数据中的一部分数据,另外,首个数据包中包括写请求1中的待写数据的长度。
在步骤S202,交换机确定PLOG i的剩余空间是否足够。
如上文所述,交换机St0与PLOG i相对应,因此,交换机St0中记录作为PLOG i的元数据,以通过所述元数据对PLOG i进行管理。该PLOG i的元数据中例如包括PLOG i的标识、PLOGi的地址信息(例如PLOGi的未分配存储空间的起始地址及PLOG i的长度等)、PLOGi对应的存储节点中的存储空间的地址信息等信息,由于所述PLOG i为逻辑存储空间,其中的地址为从0开始的偏移地址,从而,交换机通过以PLOG i的长度减去PLOGi的未分配存储空间的起始地址可获得PLOG i的剩余空间长度。
在接收到写请求1之后,交换机将写请求1的待写数据的长度与PLOG i的剩余空间的长度进行比较,以确定剩余空间是否足够用于写入该待写数据。如果剩余空间不足,则交换机通知计算节点申请新的PLOG用于写入写请求1的待写数据,如果剩余空间足够,则对PLOG i对应的物理存储空间进行写入。
在步骤S203,交换机在上述步骤S202确定PLOG i的剩余空间不足的情况中,向计算节点发送PLOG i空间不足的信息。
在步骤S204,计算节点生成PLOG j。
例如,在计算节点C0中,应用在接收到上述PLOG i空间不足的信息之后,可调用PLOG功能层中的PLOG申请接口,以向PLOG功能层发送申请新的PLOG的请求。在该申请请求中,指定了与该新申请的PLOG对应的N个存储节点和M个校验节点,该PLOG的长度等信息。在计算机系统中,可通过数据分片存储的方式保证数据存储的可靠性,在该方式中例如可通过(Redundant Arrays of Independent Disks,RAID)算法及纠删码(Erasure Coding,EC)算法计算分别存储至所述N个存储节点的N个数据分片的M个校验分片,然后将所述N个数据分片和所述M个校验分片分别存入到所述N个存储节点及所述M个校验节点中,从而在任意存储节点出现故障的情况下,可通过数据分片的校验分片恢复数据。对应于该数据分片存储方式,假设存储节点中的分片的长度为预设分片长度,可将PLOG的长度设置为N个分片长度之和,通过基于PLOG的元数据将PLOG中的每个分片所占用的存储空间与每个存储节点中的具有所述分片长度的存储空间对应起来,从而可以通过该PLOG进行对N个存储节点的分片存储的管理,例如,可基于PLOG的元数据进行对N个存储节点的写入或读取。另外,通过在PLOG的元数据中记录校验节点中存储校验分片的地址,当存储节点出现故障不能读取时,可基于PLOG的元数据从校验节点中读取PLOG的校验分片以恢复PLOG的数据分片。
其中,在多分片存储方式的场景下,有两种写入数据的方式。在第一种方式中,交换机St0对M个存储节点的存储空间先后写入不同写请求的数据作为N个数据分片,并将所述N个数据分片(即全部写请求的数据)都写入每个校验节点中,从而校验节点可基于其接收的N个数据分片计算对应的校验分片并存储该校验分片。在第二种方式中,在待写数据的长度在预定范围内的情况中,例如该长度大于(N-1)*a且小于等于N*a,其中a为一个数据分片的长度,从而,交换机St0可在接收到该待写数据之后,将该待写数据(如果该待写数据的长度小于N*a,则将其补全为N*a)切分为N个数据分片,计算该待写数据的M个校验分片,并将所述N个数据分片和M个校验分片分别写入对应的存储节点和校验节点。
计算节点C0中的PLOG功能层在从应用接收到对新的PLOG的申请之后,生成新的PLOGID,并将该ID返回给应用。该新生成的PLOGID可表示为“PLOG j”,该ID例如为根据PLOG的编号顺序生成,例如,PLOG i为PLOG 1,则确定“PLOG j”为PLOG 2。可以理解,本申请实施例不限于根据PLOG的编号顺序来确定PLOG ID,只要该PLOG ID可唯一标识该新生成的PLOG即可,例如,可将之前删除的PLOG的ID重新用作为该新的PLOG的ID。
在步骤S205,计算节点向交换机发送PLOG j的元数据信息。
计算节点C0的PLOG功能层在如上所述生成PLOG j之后,在一种实现方式中,计算节点C0可基于预定规则确定PLOG j对应的交换机,并将PLOG j的元数据信息发送给PLOG j对应的交换机;在另一种实施方式中,计算节点C0可将PLOG j的元数据信息发送给其连接的任一交换机,该交换机使得由多个交换机协商确定与PLOG j对应的交换机、并将PLOG j的元数据发送给与PLOG j对应的交换机。假设PLOG j对应的交换机为交换机St0,即,PLOGj的元数据信息被发送给交换机St0。所发送的元数据信息中包括PLOG j的标识、PLOG j对应的存储节点(即S0、S1)和校验节点V0、该PLOG j的长度等信息。
在步骤S206,交换机向各个存储节点和各个校验节点发送存储空间分配请求。
交换机St0在接收到PLOG j的元数据信息之后,在本地存储PLOG j的元数据,并在元数据中增加PLOG j的未分配存储空间的地址信息,例如未分配存储空间的起始地址。由于PLOGj还未被使用,因此,此时的PLOGj未分配存储空间的起始地址为默认的偏移地址0。
交换机St0可以表格的形式记录每个PLOG的元数据,如表1所示,为交换机St0中管理的PLOG的元数据。
PLOG 0 Offset=200,…
PLOG 1 Offset=100,…
PLOG j Offset=0,Volume=2M,S0:Addr=/S1:Addr=/V0:Addr=,…
表1
如表1中所示,表1中的“Offset”表示PLOG的未分配存储空间的起始地址,“Volume”表示PLOG的大小(长度)。另外,在PLOG j的元数据中,“S0:Addr=/S1:Addr=/S2:Addr=”表示PLOG j与存储节点S0、S1和校验节点V0相对应,存储节点S0、S1和校验节点V0中与PLOG j对应的地址(Addr)尚未确定,因此为空。也就是说,PLOG j对应于2个存储节点+1个校验节点的分片存储方式。根据表1,由于PLOG j的长度例如为2兆(M),由于PLOG j的长度等于N个分片的分片长度之和,这里N=2,因此,分片长度为1M,即在存储节点S0和存储节点S1中需要各分配1M的空间以与PLOG j相对应。
之后,交换机St0基于PLOG j的元数据中的PLOG j向对应的存储节点和校验节点发送存储空间分配请求,即向存储节点S0、S1(图2中仅示出一个存储节点作为示意)和校验节点V0分别发送存储空间分配请求。所述存储空间分配请求中包括该PLOG j的长度,如上文所示,由于所述PLOG j的大小为2M,因此,发送给存储节点S0和S1的存储空间分配请求用于请求在存储节点S0和存储节点S1中各分配1M的存储空间,该1M的存储空间即为PLOG j的一个数据分片的大小。
在确定通过上述第二种数据写入方式写入数据的情况中,交换机St0发送给校验节点的存储空间分配请求用于请求在校验节点V0中分配1M的存储空间,该1M的存储空间即为PLOG j的一个校验分片的大小。
在确定通过上述第一种数据写入方式进行写入的情况中,或者在不确定是通过第一种数据写入方式还是第二种数据写入方式进行写入的情况中,交换机St0发送给校验节点的存储空间分配请求用于请求在校验节点V0中分配2M的存储空间,该2M的存储空间也与PLOG j的2M空间相对应,从而用于在应用以上述第一种方式对PLOG j进行写入的过程中使得校验节点存储写入PLOG j的全部数据,并使得校验节点基于存储的写入PLOG j的数据计算对应的校验分片。
在步骤S207,存储节点和校验节点根据存储空间分配请求分配存储空间,并返回存储空间信息。
如上文所述,存储节点S0、S1和校验节点V0在分别接收到上述存储空间分配请求之后,将分别为PLOG j分配对应大小的本地的存储空间,并向交换机St0返回该存储空间信息。其中,存储节点S0(或存储节点S1)在接收到存储空间分配请求之后,在本地的存储介质中(例如SCM)中获取未使用的1M大小的连续存储空间,将该存储空间标记为已分配,并将该存储空间的地址信息(例如起始地址或者地址范围)返回给交换机St0。校验节点V0在接收到存储空间分配请求之后,在本地的存储介质中获取未使用的2M大小(或1M大小)的连续存储空间,将该存储空间标记为已分配,并将该存储空间的地址信息返回给交换机St0。
在步骤S208,交换机在PLOG j元数据中记录各个存储空间的地址信息。
交换机St0在从各个与PLOG j对应的存储节点和校验节点接收到存储空间的地址信息之后,记录到PLOG j的元数据中。具体是,交换机St0可将存储节点S0、S1和校验节点V0中的为PLOG j分配的存储空间的起始地址和地址长度分别记录到表1中的各个相应的“Addr”字段中。
另外,在计算节点中的应用首次使用的时候,计算节点会给应用分配一个初始PLOG,并为该初始PLOG分配存储空间,对初始PLOG分配存储空间的过程与为PLOG j分配存储空间的过程相同,具体请参考步骤S205-S208的描述,在此不再赘述。
在完成上述各个步骤之后,也即完成了对PLOG j的创建过程。交换机在该创建过程完成之后,可将新生成的PLOG j通知给各个计算节点,从而各个计算节点可并行对该PLOG j写数据。
由于相对于上述两种数据写入方式,图2中的步骤S209-S217具有不同的具体实施方式,因此,下文中将相对于上述两种数据写入方式分别进行对步骤S209-S219的描述。
首先相对于上述第一种数据写入方式描述图2中的步骤S209-S219。
图3为计算节点C0和C1并行对PLOG j进行写入的过程示意图。为了区别计算节点C0和C1的写入,在图3中,将与计算节点C0相关的操作用实线示出,将与计算节点C1相关的操作用虚线示出。另外,在图3中,如上文所述,在交换机St0中存储了PLOG j的元数据,图3中以数据条示意示出PLOG j,假设PLOG j中地址从左向右从0增大到2M,则该地址中的前1M的空间可设定为与存储节点S0相对应,该地址中的后1M的空间可设定为与存储节点S1相对应,其中,可将该PLOG j中的两个1M空间分别称为一个分片段。同时在与PLOG j对应的存储节点S0、S1和校验节点V0的SCM中分别为PLOG j分配了一段存储空间,该存储空间也以数据条示意示出,其中存储节点S0和S1中的存储空间为1M的长度,校验节点V0中的存储空间为2M的长度。
在步骤S209,计算节点C0向交换机St0发送对PLOG j的写请求1′。
计算节点C0中的应用在获取到新生成的PLOG j之后,可重新发起对该PLOG j的写请求1′,以写入上述未成功写入的待写数据。所述写请求1′用于与上述对PLOG i的写请求1相区别。类似地,该写请求1′中包括PLOG j的标识和待写数据。
在步骤S210,交换机St0基于分片长度对写请求1′的待写数据进行切分。
参考图3,假设计算节点C0相比于计算节点C1在先通过图3中的操作①对交换机St0发送对PLOG j的写请求1′,从而交换机St0在处理完写请求1′之后,再处理由计算节点C1发送的写请求。
相对于该写请求1′,交换机St0首先在PLOG j的未分配地址中按照地址从小到大的顺序对该写请求1′的待写数据分配地址。一般情况下,地址空间用起始地址加地址空间的长度表示,所以,在交换机St0为写请求1′分配地址空间1′时,首先从PLOG j的元数据中获取变量offset的值,所述变量offset的值用于表示PLOG j中未分配地址空间中的起始地址,将所述变量offset的值作为所述写请求1′的起始地址,如此,分配给所述写请求1′的地址空间1′即为以所述变量offset的值为起始地址,长度为待写数据长度的地址空间。在本申请实施例中,所述地址空间也可以称为“地址”。在为所述写请求1′分配地址空间1′之后,则交换机St0将元数据中PLOG j的offset更新为当前值加上写请求1′的待写数据的长度。例如,假设写请求1′中的待写数据的长度为1.7M,并且PLOG j的未分配地址的起始地址为0,则交换机St0将PLOG j中的前1.7M地址作为地址空间1′分配给写请求1′。该1.7M的地址对应于存储节点S0的1M存储空间和存储节点S1中的0.7M存储空间。
由于所述分配的地址与两个存储节点相对应,交换机St0根据预设的分片长度(即1M)将所述写请求1′的待写数据切分为1M的数据和0.7M的数据,以分别写入存储节点S0和存储节点S1。
在步骤S211,交换机St0根据PLOG j的元数据确定写入数据的存储节点和写入校验数据的校验节点。
所述PLOG j的元数据中记录了与PLOG j对应的存储节点S0和存储节点S1中的1M空间的地址,与PLOG j对应的对应的校验节点V0中的2M空间的地址,通过上述对写请求1′的地址分配可以得出,写入写请求1′的数据的存储节点包括存储节点S0和存储节点S1。另外在上述第一种写入方式中,将写请求1′的待写数据写入校验节点作为校验数据,校验节点在PLOG j写满之后会根据本地存储的PLOG j的两个数据分片计算校验分片。因此,交换机可从PLOG j的元数据确定写入写请求1′的校验数据的校验节点V0。
更具体地,交换机St0可根据对写请求1′分配的PLOG j中的地址,确定写入各个存储节点的地址和写入校验节点的地址。交换机通过将PLOG j元数据中记录的存储节点中的存储空间的起始地址与对写请求1′分配的地址中与该存储节点对应的地址相加,可获取存储节点中的写入地址。交换机通过将PLOG j元数据中记录的校验节点中的存储空间的起始地址与对写请求1′分配的地址相加,可获取校验节点中的写入地址。例如,根据写请求1′分配的PLOG j中的1.7M的地址,可确定写入存储节点S0的地址为所述全部1M存储空间,写入存储节点S1的地址为所述1M存储空间中的前0.7M空间,写入校验节点V0中的地址为所述2M空间中的前1.7M空间。
在步骤S212,交换机St0向各个存储节点发送写入数据的写请求2′。
参考图3,交换机St0通过操作③向存储节点S0发送写入上述1M数据的写请求2′,请求将该待写数据中的前1M数据写入存储节点S0中的所示数据条中,通过操作④向存储节点S1发送写入上述0.7M数据的写请求2′,请求将该待写数据的后0.7M数据写入存储节点S1中的所示数据条中的前0.7M的地址中。
在步骤S213,各个存储节点对PLOG j对应的存储空间写入对应的数据。
在步骤S214,各个存储节点在完成上述写入之后,返回写请求2′的完成信息。
在步骤S215,交换机St0向校验节点发送写入校验数据的写请求3′。
参考图3,,交换机St0通过操作⑤向校验节点V0发送写入写请求1′的1.7M待写数据的写请求3′,请求将该待写数据写入校验节点V0中的所示数据条中的前1.7M的地址中作为校验数据。
在步骤S216,校验节点V0对PLOG j对应的存储空间写入校验数据。
具体是,校验节点V0对PLOG j对应的2M存储空间的前1.7M空间写入所述写请求1′的待写数据。
在步骤S217,校验节点V0向交换机St0返回写请求3′的完成信息。
在步骤S218,交换机St0在确定存储节点S0、S1和校验节点V0都完成写入之后,确定写请求1′之前接收的访问PLOG j的写请求都已经完成。
本申请实施例中,通过根据交换机接收访问PLOGj的写请求的顺序向计算节点返回写请求,实现写请求在PLOG j的地址空间的保序写入。由于交换机St0根据接收写请求的顺序为访问PLOGj的各个写请求分配PLOG j中的地址空间,因此,较早接收的写请求被分配的地址空间中的地址较小,通过根据接收写请求的顺序向计算节点返回写请求,也即根据写请求的写入地址的从小到大的顺序返回写请求,从而可在PLOG j的地址空间保序写入,防止存储节点中与PLOGj对应的存储空间出现空洞。
在本申请实施例中,可基于写请求队列来进行该确定写请求1′之前接收的访问PLOG j的写请求都已经完成。交换机St0根据接收各个写请求时间顺序在该写请求队列中记录各个写请求,当接收到新的写请求后,则交换机St0将所述写请求的ID记录至所述写请求队列的队尾,当写请求完成之后,例如从存储节点和校验节点都接收到写请求的全部报文写完成确认信息之后,在确定该写请求的ID为写请求队列的队列头的情况中,向发送该写请求的计算节点返回写请求完成信息,并将所述写请求的ID从所述写请求队列中移除。可以理解,本申请实施例不限于通过写请求队列的方式来确认写请求1′之前接收的访问PLOG j的写请求都已经完成,其他可以确定写请求1′之前接收的访问PLOG j的写请求都已经完成的方式也在本发明实施例提供的保护范围之内。
在步骤S219,交换机St0向计算节点C0返回写请求1′的完成信息。
交换机St0在确定写请求1′之前接收的访问PLOG j的写请求都已经完成之后,向计算节点C0返回写请求1′的相关信息,该相关信息中包括写请求1′成功完成信息,以及写请求1′被分配的PLOG j中的写入地址。
计算节点C0中的应用在获取该写请求1′的成功完成信息之后,将所述写请求1′的写入地址(即PLOG j,地址空间1′)记录在产生所述写请求1′的业务中,以方便后续业务对写入所述写入地址的数据进行读取操作。当计算节点C0中的应用需要读取通过上述写请求1′写入的数据时,可对交换机St0发送对PLOG j的地址空间1′的读请求,交换机St0根据PLOG j的元数据,可从存储节点S0和S1中的与地址空间1′对应的地址空间读取到该数据,并将该数据返回给计算节点C0。
当在上述步骤S202中判断PLOG i的剩余空间足够的情况中,将与上文中处理写请求1′类似地通过执行步骤S212-S217,从而完成对写请求1的待写数据的写入,在此不再赘述。
从上述步骤S209-S219可以看出,由于交换机中存储了PLOGj的元数据,所以计算节点只需要发送写请求1′至交换机St0,由交换机St0根据PLOGj的元数据为写请求1′分配地址空间1′,且在为PLOGj分配了地址空间1′之后,交换机St0不需要将该分配的地址返回给计算节点C0,从而有效减少了计算节点C0的负载,并减少了数据的写入时延,从而提升了计算机系统的处理效率。
参考图3,计算节点C1在计算节点C0进行操作①之后,通过操作②对交换机St0发送对PLOG j的写请求,从而,交换机St0在处理写请求1′之后才开始处理来自计算节点C1的写请求。在处理该写请求的过程中,交换机St0在相对于该写请求确定PLOG j的剩余空间足够之后,由于PLOG j中已经分配给写请求1′1.7M的地址,因此在PLOG j中从1.7M的起始地址开始为该写请求分配地址,根据该分配的地址,交换机St0通过图3中的操作⑥请求将写请求的待写数据写入存储节点S1中的所示数据条中的从0.7M开始的地址中,并通过图3中的操作⑦请求将写请求的待写数据写入校验节点V0中的所示数据条中的从1.7M开始的地址中。
在PLOG j写满或者写到预定范围的情况中,校验节点可自行或基于来自计算节点的指示计算PLOG j的校验分片。校验节点V0可根据EC算法或者RAID算法,从本地存储的PLOG j的两个数据分片计算出一个校验分片,该校验分片的长度为1M,并将该校验分片另存到1M的存储空间中。之后,校验节点V0将存储校验分片的存储空间的地址信息发送给交换机St0。交换机St0在接收到该地址信息之后在PLOG j元数据中更新校验节点的对应存储空间的地址信息。
下面相对于上述第二种数据写入方式描述图2中的步骤S209-S219。
图4为计算节点C0以上述第二种数据写入方式对PLOG j进行写入的过程示意图。在图4中,与图3类似地,在交换机St0中存储了PLOG j的元数据,图4中以数据条示意示出PLOG j,假设PLOG j中地址从左向右从0增大到2M,则该地址中的前1M的空间可设定为与存储节点S0相对应,该地址中的后1M的空间可设定为与存储节点S1相对应。同时在与PLOG j对应的存储节点S0、S1和校验节点V0的SCM中分别为PLOG j分配了一段存储空间,该存储空间也以数据条示意示出,其中存储节点S0和S1中的存储空间为1M的长度,校验节点V0中的存储空间为1M的长度。
在步骤S209,计算节点C0向交换机St0发送对PLOG j的写请求1′。
计算节点C0中的应用在获取到新生成的PLOG j之后,可重新发起对该PLOG j的写请求1′,以写入上述未成功写入的待写数据。所述写请求1′用于与上述对PLOG i的写请求1相区别。类似地,该写请求1′中包括PLOG j的标识和待写数据。假设该写请求1′的待写数据的长度为2M,即所述PLOG j的长度。
在步骤S210,交换机St0对写请求1′的待写数据进行分片。
参考图4,交换机St0在接收到写请求1′之后,根据第二种写入方式,将写请求1′的2M待写数据分为两个各1M的数据分片(D1,D2),并基于该两个数据分片生成1M的校验分片CH1。
在步骤S211,交换机St0根据PLOG j的元数据确定写入数据分片的存储节点和写入校验数据的校验节点。
所述PLOG j的元数据中记录了与PLOG j对应的存储节点S0和存储节点S1中的1M空间的地址,与PLOG j对应的对应的校验节点V0中的1M空间的地址,因此,交换机St0可根据PLOG j的元数据确定写入数据分片D1的存储节点S0中的写入地址(即存储节点S0中的所述1M空间)、写入数据分片D2的存储节点S1中的写入地址(即存储节点S0中的所述1M空间)、及写入校验分片CH1的校验节点V0中的写入地址(即校验节点V0中的所述1M空间)。
在另一种实施方式中,由于初始尚未确定是通过第一种方式还是通过第二种方式进行写入,在所述校验节点中相对于PLOG j分配了2M存储空间,并在PLOG j元数据中记录了该2M存储空间的地址,在该情况中,交换机St0确定将所述校验分片CH1写入校验节点V0,但并不确定将校验分片CH1写入校验节点V0的所述分配给PLOG j的2M空间中,校验节点V0在接收到写入校验分片的请求之后将重新为PLOG j分配1M的空间用于写入校验分片CH1,并将该重新分配的空间地址发送给交换机St0,交换机St0在接收到该重新分配的地址之后,将PLOG j元数据中记录的校验节点V0的地址空间修改为该重新分配的地址。
在步骤S212,交换机St0向各个存储节点发送写入数据分片的写请求2′。
在该第二种数据写入方式中,由于交换机St0向各个存储节点发送写入数据分片(即1M)的写请求2′,因此,在该写请求2′中只需要包括各个存储节点中的与PLOG j对应的存储空间的地址和对应的数据分片。参考图4,交换机St0向存储节点S0发送写入数据分片D1的写请求2′,交换机St0向存储节点S1发送写入数据分片D1的写请求2′。
在步骤S213,各个存储节点对PLOG j对应的存储空间写入对应的数据分片。
在步骤S214,各个存储节点在完成上述写入之后,返回写请求2′的完成信息。
在步骤S215,交换机St0向校验节点发送写入校验数据的写请求3′。
由于交换机St0向校验节点发送写入满校验分片(即1M)的写请求3′,因此,在该写请求3′中只需要包括校验节点中的与PLOG j对应的存储空间的地址和对应的校验分片。参考图4,交换机St0向校验节点V0发送写入校验分片CH1的写请求3′。
在步骤S216,校验节点V0对PLOG j对应的存储空间写入校验数据。
具体是,校验节点V0对PLOG j对应的1M存储空间写入所述校验分片CH1。
可以理解,这里虽然仅示出了一个校验节点作为示例,在包括多个校验节点的情况中,交换机St0将多个校验分片分别发送给多个校验节点,每个校验节点执行与校验节点V0相同的处理,以写入与本校验节点对应的校验分片。
在步骤S217,校验节点V0向交换机St0返回写请求3′的完成信息。
在该第二种数据写入方式中,步骤S218和步骤S219的执行与上文所述相同,在此不再赘述。
在图2-图4所示的本申请实施例中,将原来由计算节点或存储节点运行的控制逻辑卸载到作为网络汇集点的可编程中间设备上,计算节点在写入数据的过程中,只需要与交换机进行一次通信,就可以对存储节点和校验节点进行多分片写入,有效降低了计算节点与交换机之间的通信次数,减少了计算节点的负载,且减少了数据写入的时延,提升了访问效率。
如上文所述,所述写请求可能以一个报文进行发送,也可能基于预设的最大报文长度被拆分成多个报文进行发送。所述报文是网络中交换与传输的数据单元,即数据发送端一次性发送的数据块。在计算机系统中可预先设定报文的最大报文长度和报文中的最大报文数据长度。下文中将参考图5和图6分别描述在写请求被拆分成多个报文的情况中实施上述第一种数据写入方式和第二种数据写入方式的具体过程。
图5为在计算机系统中写数据的过程示意图。该过程与上述第一种数据写入方式相对应。参考图5,假设根据预设的最大报文数据长度,计算节点C0在接收到写请求1′之后将写请求1′拆成顺序排列的M0~M5六个报文。其中,报文M0~M5中的每个报文都为对PLOG j的一个写请求,其写请求编号都为写请求1′的写请求编号,并且其中包括写请求1′的待写数据中的一部分数据,另外,其中的第一个报文M0中包括写请求1′的待写数据的长度。图5中以标注报文名称的实线框示意示出各个报文中的待写数据的长度。
参考图5,计算节点C0首先向交换机St0发送对PLOG j的写请求1′的报文M0。该报文M0中包括写请求1′的部分数据,该部分数据的长度例如等于预先设定的最大报文数据长度,另外,该报文M0中包括写请求1′的待写数据的长度。
之后,交换机St0根据报文M0中包括的写请求1′的待写数据的长度在PLOG j中为写请求1′分配地址空间1′。
对写请求1′分配地址空间1′的具体操作可参考上文的描述,在此不再赘述。例如,假设在为写请求1′分配地址之前,Offset的值为0,即,PLOG j当前的未分配地址空间中的起始地址为0。如图5中所示,假设写请求1′的待写数据的长度为L7字节,则交换机St0为写请求1′分配的写入地址空间为0~L7-1。然后,交换机St0将PLOG j的元数据中的变量Offset的值更新为0+L7=L7,即,当前PLOG j中的未分配地址空间的起始地址为L7。当St0在处理完写请求1′之后为其它写请求分配写入地址空间时,则以地址空间L7作为起始地址为所述写请求分配地址空间。
交换机St0在为写请求1′分配地址空间1′之后,在地址空间1′中为报文M0分配地址空间11′。
参考图5,在交换机中可通过变量offset1记录该过程中对地址空间1′的分配。该变量offset1可在PLOG j的元数据中进行记录,或者可以在交换机St0的其它存储地址进行记录。变量offset1的初始值为地址空间1′的起始地址(即0)。假设报文M0的待写数据的长度为L1,因此,交换机St0将地址空间1′中的0~L1-1的地址作为地址空间11′分配给报文M0,并将变量offset1的值改为L1
之后,交换机St0确定与地址空间11′(即地址空间0~L1-1)对应的存储节点中的地址空间2′。
参考图5中的交换机St0中的PLOG j的数据条,地址空间0~L1-1在PLOG j的0~1M的地址空间中,即,地址空间0~L1-1对应于存储节点S0。
在一种实现方式中,交换机可基于地址空间11′的起始地址和PLOG j的元数据中记录的存储节点中S0的对应存储空间的起始地址来计算出存储节点S0中与地址空间11′对应的地址空间2′的起始地址,并且可确定该地址空间2′的长度为报文M0的待写数据的长度。例如,假设存储节点S0中与PLOG j对应的存储空间的起始地址为100,而如上文所述,地址空间11′的起始地址为0,从而地址空间2′的起始地址=100+0=100,并且地址空间2′的长度为报文M0的待写数据的长度L1
可以理解,在上述实施方式中,通过确定地址空间2′的起始地址和地址空间长度来确定地址空间2′,本申请实施例不限于此,其他可以确定地址空间2′的方式也在本发明实施例提供的保护范围之内。
交换机St0在确定存储节点S0中与地址空间11′对应的地址空间2′的起始地址之后,生成写请求2′并将其发送给存储节点S0,该写请求2′包括地址空间2′的信息(例如起始地址)和报文M0中的待写数据。
其中,在RDMA连接方式中,交换机St0通过建立与计算节点对应的队列对(QueuePairs,QP)(图4中未示出)和三个分别与存储节点S0、S1和校验节点V0对应的QP,维护连接信息。所述QP中包括发送队列(Send Queue,SQ)和接收队列(Receive Quene,RQ)。图5中示意示出与存储节点S0、S1和校验节点V0分别对应的三个发送队列SQS0、SQS1和SQV0。交换机St0在基于从计算节点C0接收的报文生成发送至各个存储节点的写请求的过程中,由于交换机将从计算节点接收的多个报文分成至少一批以分别发送至至少一个存储节点,并且在该分批的过程中可能存在将单个报文切分为两个报文以分别发送给不同的存储节点的可能,因此,交换机从计算节点接收的报文数与发送至各个存储节点的报文数通常是不同的。因此,交换机St0将报文M0中的数据包序列号(package serial number,PSN)替换为与发送队列SQS0对应的PSN号以生成写请求2′,并将该写请求2′顺序放入发送队列SQS0中(图5中以发送队列SQS0中的标注M0的方框示出该写请求2′),以用于发送给存储节点S0的网卡。同时,交换机St0对发送队列SQS0对应的PSN号加1,以用于分配给下一个将通过发送队列SQS0发送的报文(或写请求)。
在发送了与报文M0对应的写请求2′之后,交换机St0可在本地的与PLOG j对应的写请求队列中对写请求1′进行记录,以用于在数据写入存储节点和校验节点后,按照写请求的接收顺序返回写请求。
存储节点S0在接收到写请求2′之后,响应于该写请求2′在与PLOG j对应的存储空间中的地址空间2′中写入写请求2′中的待写数据。在RDMA连接方式中,存储节点S0的网卡在接收到写请求2′之后例如通过单边写的方式将写请求2′中的待写数据写入存储节点S0中地址空间2′中。之后,存储节点S0向交换机St0返回写请求2′完成信息。
同时,交换机St0还对报文M0中的待写数据进行对校验节点的写入。为此,交换机St0在地址空间1′中为报文M0中的待写数据分配地址空间12′。如图5所示,可通过交换机St0中设置的变量offset2进行该分配。该变量offset2的初始值例如为地址空间1′的起始地址(这里为0),根据报文M0的长度L1,对报文M0中的待写数据分配PLOG j中的地址空间0~L1-1,同时将offset2的值更新为当前值+报文M0的长度L1,即0+L1=L1
之后,交换机St0根据元数据中记录的校验节点V0的对应存储空间的起始地址确定校验节点V0中与地址空间12′对应的地址空间3′,并基于地址空间3′和报文M0中的待写数据生成写请求3′,并将写请求3′发送给校验节点V0,图5中以SQV0队列中的标注M0的方框示意示出将发送给校验节点V0的写请求3′。
校验节点V0在接收到写请求3′之后,如图5中所示,对与PLOG j对应的存储空间中的地址空间3′写入报文M0中的待写数据。在该实例中只包括一个校验节点V0作为示例,在实际中可能存在多个校验节点,在存在多个校验节点的情况中,每个校验节点都写入报文M0的待写数据,也就是说,在该存储方式中,在校验节点计算PLOG j的校验分片之前,每个校验节点都相当于是用于存储PLOG j的全部数据的一个副本节点。
参考图5,计算节点C0在向交换机St0发送报文M0之后,依次向交换机St0发送写请求1′的其它报文。其中,相对于报文M1和M2所执行的写入过程与上文相对于报文M0执行的写入过程基本相同,在此不再赘述。
计算节点C0在向交换机St0发送报文M3之后,参考图5示出的PLOG j的数据条,由于PLOG j的0~1M的空间不足以存储报文M3中的待写数据,因此,交换机St0只对报文M3分配PLOG j的0~1M空间中的剩余空间L3~L4-1作为分配给报文M3的地址空间,同时修改变量offset1的值。
之后,交换机St0根据分配给报文M3的地址空间的长度从报文M3的待写数据中切分出前半部分作为写请求2′的待写数据生成写请求2′,并与上文类似地将写请求2′放入发送队列SQS0中,以发送给存储节点S0的网卡。同时,由于报文M3不是写请求1′的最后一个报文,因此,交换机St0将报文M3的剩余数据保存到缓冲区中,以用于与写请求1′的下一个报文的部分数据拼接成整报文(即具有最大报文数据长度)写入到对应的存储节点。
存储节点S0在接收到与报文M3的前半部分待写数据对应的写请求2′之后,对地址空间2′写入所述前半部分待写数据并向交换机St0返回写请求2′完成信息。之后,交换机St0和校验节点V0执行上述与针对报文M0的类似的过程,以在校验节点V0的对应存储空间中写入报文M3的全部待写数据,即,在对校验节点进行写入时,不需要对报文M3的待写数据进行切分。
计算节点C0在向交换机St0发送报文M4之后,交换机St0确定缓冲区中保存有报文M3的后半部分,并且交换机St0根据变量offset1的值可确定上述地址空间1′的未分配地址当前对应于存储节点S1,因此,交换机St0确定PLOG j的对应于存储节点S1的剩余地址空间与最大报文数据长度中的最小值。这里,最大报文数据长度最小,从而交换机St0从报文M4的待写数据切分出一部分待写数据与报文M3的后半部分拼接为最大报文数据长度的拼接数据,并在地址1′中为该拼接数据分配地址空间(即图5中PLOG j的地址L4~L5-1),在该分配之后,将offset1的值修改为L5。同时,交换机St0将报文M4中剩余的待写数据保存到缓冲区中。在另一种情况中,如果PLOG j的对应于存储节点S1的地址空间的剩余地址空间比最大报文数据长度小,则根据PLOG j的对应于存储节点S1的地址空间的剩余地址空间来在地址1′中分配发送的下一个报文的地址空间,并且根据所述剩余地址空间对缓冲区中的数据和报文M4中的待写数据进行处理,以使得将发送的下一个报文的待写数据的长度等于所述剩余地址空间的长度。
在分配地址空间L4~L5-1之后,交换机St0首先可根据地址L4~L5-1确定该地址对应于存储节点S1。在多分片存储方式中,对于N个数据分片的情况,可将N个存储节点编号为节点0~节点N-1,节点i对应的PLOG中的地址范围为[i*分片尺寸,(i+1)*分片尺寸-1],因此,根据分配的PLOG j中的地址所在的范围可确定该地址对应于哪个节点,或者根据地址除以分片尺寸的商可确定该地址对应于哪个节点。在图5所示实例中,存储节点S1(即节点1)对应的PLOG j中的地址范围为[1M,2M-1],地址L5=1M,地址L5除以分片尺寸(即1M)的商为1,可确定对应于节点1。之后,交换机St0根据PLOG j元数据中的存储节点S1的对应存储空间的起始地址,可确定与存储节点S1中与地址L4~L5-1对应的地址空间。之后,交换机St0根据上述确定的存储节点S1中的地址空间可基于上述生成的拼接数据生成写请求2′,并将该写请求2′发送给存储节点S1。存储节点S1在接收到写请求2′之后对地址空间2′写入所述拼接数据并返回写请求2′完成的信息。之后,交换机St0在校验节点V0的对应存储空间中写入报文M4的待写数据。
通过将报文M3的后半部分与报文M4的前半部分拼接为满报文发送给存储节点,避免了存储节点在接收到非写请求的最后报文的不满报文时误判丢包的情况。
计算节点C0在向交换机St0发送报文M5之后,交换机St0首先与处理报文M4类似的,对报文M4的部分待写数据与报文M5的部分待写数据的拼接数据分配地址空间,以向存储节点S1写入所述拼接数据。交换机St0在向存储节点S1写入所述拼接数据之后,由于报文M5为写请求1′的最后一个报文,因此,交换机St0不将报文M5的剩余待写数据保存到缓冲区中,而是将该部分数据写入存储节点S1的对应的地址空间中。之后,交换机St0在校验节点V0的对应存储空间中写入报文M5的待写数据。
交换机St0在完成对写请求1′各个报文的处理之后,可执行图2中的步骤S218和S219,在此不再赘述。
图6为本申请实施例提供的另一种在计算机系统中写数据的过程示意图。该过程与上述第二种数据写入方式相对应。
如上文参考图2的描述,计算节点C0在将写请求1发送给交换机St0之后,在基于写请求1的待写数据的长度确定PLOG i的剩余空间足够之后,交换机St0可基于该待写数据的长度确定是执行图5所示的过程还是执行图6所示的过程进行数据写入。如果待写数据的长度在预定范围内(例如对于图6所示的长度为2M的PLOG i,可将该预定范围预设为1.9M~2M-1),则交换机St0可确定执行图6所示的过程,否则,交换机St0可确定执行图5所示的过程。在交换机St0确定执行图6所示的过程的情况中,交换机St0在接收到写请求1的第一个报文之后将等待接收了写请求1的全部报文之后,再进行后续的处理。参考图6,假设写请求1的报文包括报文M0~M6七个报文,这七个报文中的待写数据的长度和(即写请求1的待写数据的长度)例如等于PLOG i的长度(即2M)。
交换机St0在接收了写请求1的全部七个报文之后,将写请求1的待写数据切分为N个数据分片。
在图6所示实例中,PLOG i与两个存储节点和一个校验节点对应,即该分片存储为2数据分片+1校验分片的分片方式,因此,交换机St0将写请求1的待写数据切分为2个数据分片,即在PLOG i中示意示出的在0~1M-1范围内的数据分片D1和在1M~2M-1范围内的数据分片D2。在写请求1的待写数据小于PLOG i的长度的情况中,可通过对该待写数据的预定位置(例如前部或后部等)补零,从而把该待写数据的长度扩充为PLOG i的长度,然后再进行数据分片的切分和后续对校验分片的生成。
之后,交换机St0基于N个数据分片生成M个校验分片。
交换机St0可根据EC算法或者RAID算法基于N个数据分片生成M个校验分片。在图6所示实例中,交换机St0基于2个数据分片D1和D2生成一个校验分片CH1,该校验分片CH1的长度也为1M。
之后,交换机St0对各个存储节点写入对应的数据分片,并对各个校验节点写入对应的校验分片。
具体是,为了发送各个数据分片和校验分片,交换机St0需要根据最大报文数据长度将各个数据分片和校验分片分为多个部分,以通过多个报文进行发送。例如,如图6所示,对于存储节点S0,交换机St0首先从数据分片D1中分出报文M0中的待写数据,之后,存储节点S0在具有分片长度的地址中对数据分片D1的部分数据(即图6中报文M0中的待写数据)分配地址空间11。所述分片长度即为1M,与图5所示类似地,可通过变量来记录对该分片长度地址的分配。之后,交换机St0根据PLOG i的元数据中记录的存储节点S0中的对应存储空间的起始地址,确定存储节点S0中与地址空间11对应的地址空间2。在确定地址空间2之后,交换机St0可基于地址空间2和所述部分数据生成写请求2,并向存储节点S0发送对地址空间2的写请求2。如图6所示,交换机St0在生成该写请求2之后,可将该写请求2(图6中以标注M0的方框示意示出)放入与存储节点S0对应的发送队列SQSO中以用于发送给存储节点S0。存储节点S0在接收到写请求2之后,对地址空间2写入报文M0中的待写数据,然后返回写请求2的完成信息。在完成对报文M0中的待写数据的写入之后,交换机St0可通过重复上述过程,从而将分片D1中其它部分数据分别写入存储节点S0。其中,如图6中所示,由于在切分数据分片的过程中,将报文M3的待写数据切分为写入存储节点S0和存储节点S1的两部分,因此,发送给存储节点S0的写请求1的最后一个报文只包括报文M3的前半部分待写数据。
在进行对分片D1的写入之后,交换机St0可同样地通过多次重复上述过程,而将数据分片D2中的四个报文发送给存储节点S1,从而存储节点S1在其与PLOG i对应的存储空间中写入数据分片D2。其中,在图6中的与存储节点S1对应的发送队列SQS1中,示出了分片D2的四个报文的待写数据,其中,第一个报文的待写数据为报文M3的部分待写数据与报文M4的部分待写数据的拼接数据,第二个报文的待写数据为报文M4的部分待写数据与报文M5的部分待写数据的拼接数据,第三个报文的待写数据为报文M5的部分待写数据与报文M6的部分待写数据的拼接数据,第四个报文的待写数据为报文M6的部分待写数据。
在完成对数据分片至存储节点的写入之后,交换机St0可进行对校验节点写入校验分片。具体是,交换机St0首先根据PLOG i的元数据确定校验节点V0中与PLOG i对应的地址空间3,该地址空间3即为校验节点V0中初始分配给PLOG i的2M空间。之后,交换机St0生成写请求3,并将写请求3和地址空间3的信息发送给校验节点V0。该写请求3中的待写数据为从校验分片中切分的具有最大报文数据长度的数据,在图6中以标注为P0的方框示意示出,并且该写请求3请求校验节点为校验分片分配1M的存储空间,并将该待写数据写入到该新分配的存储空间中。校验节点V0在接收到该写请求3之后为校验分片分配存储空间,将数据P0写入到该新分配的存储空间中,并向交换机St0返回写请求3的完成信息和为校验分片分配的存储空间的地址信息。交换机St0在接收到为校验分片分配的存储空间的地址信息之后,在PLOG i的元数据中更新校验节点的存储空间的地址信息。
对于校验分片中的后续每个报文,可分别通过与上述写入数据P0相同的过程而写入到校验节点中。在此不再赘述。
交换机St0在确定对存储节点和校验节点的写入都完成之后,可执行图2中的步骤S218和S219,在此不再赘述。
图7为本申请实施例提供的中间设备的架构图,所述中间设备连接计算节点、N个存储节点和M个校验节点,所述计算节点上运行业务,所述中间设备包括:
接收单元71,用于接收所述计算节点发送的对所述业务的数据的写请求;
切分单元72,用于基于预设的分片长度对所述数据进行切分得到多个数据;
确定单元73,用于根据所述业务对应的逻辑存储空间的元数据,确定所述N个存储节点中的分别写入所述多个数据的多个存储节点及写入所述待写数据的校验数据的M个校验节点;
请求单元74,用于请求所述多个存储节点将所述多个数据分别写入其与所述逻辑存储空间对应的物理存储空间中,及请求所述M个校验节点分别将所述待写数据的校验数据写入其与所述逻辑存储空间对应的物理存储空间中。
在一种可能的实现方式中,所述逻辑存储空间的元数据包括所述逻辑存储空间的标识,所述逻辑存储空间的地址信息,所述逻辑存储空间对应的所述N个存储节点中的N个第一物理存储空间的地址信息、以及所述逻辑存储空间对应的所述M个校验节点中的M个第二物理存储空间的地址信息,其中,所述第一物理存储空间的长度等于所述分片长度,所述逻辑存储空间的长度等于N个所述分片长度之和。
在一种可能的实现方式中,所述第二物理存储空间的长度等于N个所述分片长度之和,所述待写数据的量小于所述逻辑存储空间的长度,所述确定单元73还用于:根据所述业务对应的逻辑存储空间的元数据,确定将所述多个数据分别写入所述多个存储节点的写入地址、及将所述待写数据写入每个校验节点的写入地址。
在一种可能的实现方式中,所述待写数据的量等于所述逻辑存储空间的长度,所述切分单元72还用于,对所述数据进行分片得到N个数据分片,所述中间设备还包括:生成单元75,用于基于所述N个数据分片生成M个校验分片;所述请求单元74还用于,请求所述M个校验节点分别写入所述M个校验分片中的一个校验分片。
图8为本申请实施例提供的一种中间设备的架构图,包括处理单元81和存储单元82,所述存储单元82中存储有可执行代码,所述处理单元81执行所述可执行代码以实现如本申请图2~图6所示的方法。
图9为本申请实施例提供的一种中间设备的架构图,包括:通信接口91,用于与存储节点及计算节点进行数据传输;处理单元92,用于对所述通信接口接收的数据进行处理,以执行如本申请图2~图6所示的方法。
可以理解,上文所述计算节点、存储节点和校验节点可以为物理服务器,也可以为云服务器(如虚拟服务器)。图10为本申请实施例提供的云服务系统的示意图。参见图10,所述系统包括:计算设备1001、存储设备1002和中间设备1003。所述计算设备1001包括硬件层10016和运行在硬件层10016之上的虚拟机监控器(VMM)10011,以及多个虚拟机(VMi)10012。任一所述虚拟机10012可以作为云服务系统的一个虚拟的计算节点。所述存储设备1002与计算设备1001类似地包括硬件层和运行在硬件层之上的虚拟机监控器(VMM),以及多个虚拟机(VMj),任一所述虚拟机可以作为云服务系统的一个虚拟的存储节点或校验节点。下文将详细描述计算设备1001的组成作为示例。
具体的,虚拟机10012是通过虚拟机软件在公共硬件资源上模拟出的虚拟的计算机(服务器),虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。
硬件层10016是虚拟化环境运行的硬件平台,可以由一个或多个物理主机的硬件资源抽象得到的。其中,硬件层可包括多种硬件,例如,硬件层10016包括处理器10014(例如CPU)和存储器10015,还可以包括网卡(即NIC)10013、高速/低速输入/输出(I/O,Input/Output)设备,及具有特定处理功能的其它设备。其中,存储器10015可以为易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM)、动态随机存取存储器(Dynamic random-access memory,DRAM);所述存储器10015也可以为非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flashmemory),硬盘(hard disk drive,HDD)、固态硬盘(solid-state drive,SSD)、存储级内存(Storage class memory,SCM)等;所述存储器10015还可以包括上述种类的存储器的组合。虚拟机10012基于VMM10011,以及硬件层10016提供的硬件资源,运行可执行程序,以实现上述实施例中由计算节点执行的方法步骤。为了简洁,在此不再赘述。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本领域的技术人员可以清楚地了解到,本申请提供的各实施例的描述可以相互参照,为描述的方便和简洁,例如关于本申请实施例提供的各装置、设备的功能以及执行的步骤可以参照本申请方法实施例的相关描述,各方法实施例之间、各装置实施例之间也可以互相参照。
本领域技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的全部或部分步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,在没有超过本申请的范围内,可以通过其他的方式实现。例如,以上所描述的实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (16)

1.一种计算机系统,其特征在于,包括计算节点、存储节点、校验节点和中间设备,所述计算节点通过所述中间设备访问所述存储节点和所述校验节点;
所述计算节点上运行业务;
所述中间设备用于基于预设的分片长度对写入所述业务对应的逻辑存储空间的待写数据进行切分得到多个数据,根据所述逻辑存储空间的元数据确定写入所述切分得到的数据的存储节点及写入所述待写数据的校验数据的校验节点,将所述切分得到的数据写入存储节点中与所述逻辑存储空间对应的物理存储空间中,并将所述校验数据写入校验节点与所述逻辑存储空间对应的物理存储空间中。
2.根据权利要求1所述的系统,其特征在于,所述逻辑存储空间的元数据包括所述逻辑存储空间的标识,所述逻辑存储空间的地址信息,所述逻辑存储空间对应的N个存储节点中的N个第一物理存储空间的地址信息、以及所述逻辑存储空间对应的M个校验节点中的M个第二物理存储空间的地址信息,其中,所述第一物理存储空间的长度等于所述分片长度,所述逻辑存储空间的长度等于N个所述分片长度之和。
3.根据权利要求1或2所述的系统,其特征在于,所述第二物理存储空间的长度等于所述分片长度,当写入所述逻辑存储空间的待写数据的量等于所述逻辑存储空间的长度时,所述切分得到的多个数据为N个数据分片,所述中间设备还用于计算所述N个数据分片的M个校验分片,
所述中间设备用于将所述切分得到的数据写入存储节点中与所述逻辑存储空间对应的物理存储空间中,并将所述校验数据写入校验节点与所述逻辑存储空间对应的物理存储空间中包括,所述中间设备用于将所述N个数据分片分别写入所述N个存储节点中的所述第一物理存储空间中,将所述M个校验分片分别写入所述M个校验节点中的所述第二物理存储空间中。
4.根据权利要求1或2所述的系统,其特征在于,所述第二物理存储空间的长度等于N个所述分片长度之和,当写入所述逻辑存储空间的待写数据的量小于所述逻辑存储空间的长度时,所述中间设备用于将所述切分得到的数据写入存储节点中与所述逻辑存储空间对应的物理存储空间中,并将所述校验数据写入校验节点与所述逻辑存储空间对应的物理存储空间中包括,所述中间设备用于将切分获取的多个数据分别写入对应的存储节点中的第一物理存储空间中,将所述待写数据写入每个校验节点中的第二物理存储空间中。
5.一种数据处理方法,其特征在于,所述方法由中间设备执行,所述中间设备连接计算节点、N个存储节点和M个校验节点,所述计算节点上运行业务,所述方法包括:
接收所述计算节点发送的对所述业务的数据的写请求;
基于预设的分片长度对所述写请求的待写数据进行切分得到多个数据;
根据所述业务对应的逻辑存储空间的元数据,确定所述N个存储节点中的分别写入所述多个数据的多个存储节点及写入所述待写数据的校验数据的M个校验节点;
请求所述多个存储节点将所述多个数据分别写入其与所述逻辑存储空间对应的物理存储空间中;
请求所述M个校验节点分别将所述待写数据的校验数据写入其与所述逻辑存储空间对应的物理存储空间中。
6.根据权利要求5所述的方法,其特征在于,所述逻辑存储空间的元数据包括所述逻辑存储空间的标识,所述逻辑存储空间的地址信息,所述逻辑存储空间对应的所述N个存储节点中的N个第一物理存储空间的地址信息、以及所述逻辑存储空间对应的所述M个校验节点中的M个第二物理存储空间的地址信息,其中,所述第一物理存储空间的长度等于所述分片长度,所述逻辑存储空间的长度等于N个所述分片长度之和。
7.根据权利要求5或6所述的方法,其特征在于,还包括:
从计算节点接收所述逻辑存储空间的信息;
对所述N个存储节点分别发送第一物理存储空间分配请求,所述第一存储空间分配请求用于请求对所述逻辑存储空间中的一个分片长度的空间分配第一物理存储空间;
对所述M个校验节点分别发送第二物理存储空间分配请求,所述第二存储空间分配请求用于请求对所述逻辑存储空间分配第二物理存储空间。
8.根据权利要求5-7任一项所述的方法,其特征在于,所述第二物理存储空间的长度等于N个所述分片长度之和,所述写请求的待写数据的量小于所述逻辑存储空间的长度,所述方法还包括:根据所述业务对应的逻辑存储空间的元数据,确定将所述多个数据分别写入所述多个存储节点的写入地址、及将所述待写数据写入每个校验节点的写入地址。
9.根据权利要求8所述的方法,其特征在于,根据所述业务对应的逻辑存储空间的元数据,确定将所述多个数据分别写入所述多个存储节点的写入地址、及将所述待写数据写入每个校验节点的写入地址包括:
为所述写请求在所述逻辑存储空间中分配第一地址;
根据所述逻辑存储空间的元数据确定与所述第一地址对应的多个存储节点及各个存储节点中的写入地址;
根据所述逻辑存储空间的元数据确定每个所述校验节点中的与所述第一地址对应的写入地址。
10.根据权利要求5-7任一项所述的方法,其特征在于,所述待写数据的量等于所述逻辑存储空间的长度,所述基于预设的分片长度对所述写请求的待写数据进行切分得到多个数据包括,基于所述分片长度对所述待写数据进行分片得到N个数据分片,
所述方法还包括:基于所述N个数据分片生成M个校验分片;
所述请求所述M个校验节点分别将所述待写数据的校验数据写入其与所述逻辑存储空间对应的物理存储空间中包括,请求每个所述校验节点写入所述M个校验分片中的一个对应的校验分片。
11.一种中间设备,所述中间设备连接计算节点、N个存储节点和M个校验节点,所述计算节点上运行业务,所述中间设备包括:
接收单元,用于接收所述计算节点发送的对所述业务的数据的写请求;
切分单元,用于基于预设的分片长度对所述数据进行切分得到多个数据;
确定单元,用于根据所述业务对应的逻辑存储空间的元数据,确定所述N个存储节点中的分别写入所述多个数据的多个存储节点及写入所述待写数据的校验数据的M个校验节点;
请求单元,用于请求所述多个存储节点将所述多个数据分别写入其与所述逻辑存储空间对应的物理存储空间中,及请求所述M个校验节点分别将所述待写数据的校验数据写入其与所述逻辑存储空间对应的物理存储空间中。
12.根据权利要求11所述的中间设备,其特征在于,所述逻辑存储空间的元数据包括所述逻辑存储空间的标识,所述逻辑存储空间的地址信息,所述逻辑存储空间对应的所述N个存储节点中的N个第一物理存储空间的地址信息、以及所述逻辑存储空间对应的所述M个校验节点中的M个第二物理存储空间的地址信息,其中,所述第一物理存储空间的长度等于所述分片长度,所述逻辑存储空间的长度等于N个所述分片长度之和。
13.根据权利要求11或12所述的中间设备,其特征在于,所述第二物理存储空间的长度等于N个所述分片长度之和,所述待写数据的量小于所述逻辑存储空间的长度,所述确定单元还用于:根据所述业务对应的逻辑存储空间的元数据,确定将所述多个数据分别写入所述多个存储节点的写入地址、及将所述待写数据写入每个校验节点的写入地址。
14.根据权利要求11或12所述的中间设备,其特征在于,所述待写数据的量等于所述逻辑存储空间的长度,所述切分单元还用于,对所述数据进行分片得到N个数据分片,
所述中间设备还包括:生成单元,用于基于所述N个数据分片生成M个校验分片;
所述请求单元还用于,请求每个所述校验节点写入所述M个校验分片中的一个对应校验分片。
15.一种中间设备,包括处理单元和存储单元,所述存储单元中存储有可执行代码,所述处理单元执行所述可执行代码以实现权利要求5-10任意一项所述的方法。
16.一种中间设备,包括:
通信接口,用于与存储节点及计算节点进行数据传输;
处理单元,用于对所述通信接口接收的数据进行处理,以执行权利要求5-10任意一项所述的方法。
CN202011582831.6A 2020-12-28 2020-12-28 使用中间设备对数据处理的方法、计算机系统、及中间设备 Pending CN114697349A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011582831.6A CN114697349A (zh) 2020-12-28 2020-12-28 使用中间设备对数据处理的方法、计算机系统、及中间设备
PCT/CN2021/142132 WO2022143677A1 (zh) 2020-12-28 2021-12-28 使用中间设备对数据处理的方法、计算机系统、及中间设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011582831.6A CN114697349A (zh) 2020-12-28 2020-12-28 使用中间设备对数据处理的方法、计算机系统、及中间设备

Publications (1)

Publication Number Publication Date
CN114697349A true CN114697349A (zh) 2022-07-01

Family

ID=82130018

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011582831.6A Pending CN114697349A (zh) 2020-12-28 2020-12-28 使用中间设备对数据处理的方法、计算机系统、及中间设备

Country Status (2)

Country Link
CN (1) CN114697349A (zh)
WO (1) WO2022143677A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761058B (zh) * 2014-01-23 2016-08-17 天津中科蓝鲸信息技术有限公司 Raid1和raid4混合结构网络存储系统及方法
AU2016397189B2 (en) * 2016-11-25 2019-07-25 Huawei Technologies Co.,Ltd. Data check method and storage system
US10620868B1 (en) * 2019-03-22 2020-04-14 Hitachi, Ltd. Storage system and data transfer method

Also Published As

Publication number Publication date
WO2022143677A1 (zh) 2022-07-07

Similar Documents

Publication Publication Date Title
US11409705B2 (en) Log-structured storage device format
CN109445687B (zh) 一种数据存储方法以及协议服务器
CN112527186B (zh) 一种存储系统、存储节点和数据存储方法
US11579777B2 (en) Data writing method, client server, and system
CN109144406B (zh) 分布式存储系统中元数据存储方法、系统及存储介质
CN109597903B (zh) 图像文件处理装置和方法、文件存储系统及存储介质
US20210326207A1 (en) Stripe reassembling method in storage system and stripe server
CN113961139A (zh) 使用中间设备对数据处理的方法、计算机系统、及中间设备
US20190114076A1 (en) Method and Apparatus for Storing Data in Distributed Block Storage System, and Computer Readable Storage Medium
US11775194B2 (en) Data storage method and apparatus in distributed storage system, and computer program product
WO2021046693A1 (zh) 存储系统中数据处理方法、装置以及存储系统
CN113805789A (zh) 存储设备中的元数据处理方法及相关设备
CN114697349A (zh) 使用中间设备对数据处理的方法、计算机系统、及中间设备
CN112714910B (zh) 分布式存储系统及计算机程序产品
US11467906B2 (en) Storage system resource rebuild based on input-output operation indicator
US20230132442A1 (en) Method for processing data by using intermediate device, computer system, and intermediate device
CN114489465A (zh) 使用网卡进行数据处理的方法、网络设备及计算机系统
CN112988034B (zh) 一种分布式系统数据写入方法及装置
CN113590309B (zh) 一种数据处理方法、装置、设备及存储介质
CN111857547B (zh) 用于管理数据存储的方法、设备和计算机可读介质
CN115495010A (zh) 一种数据访问方法、装置和存储系统
CN111367712A (zh) 一种数据处理方法及装置

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