CN112988034B - 一种分布式系统数据写入方法及装置 - Google Patents

一种分布式系统数据写入方法及装置 Download PDF

Info

Publication number
CN112988034B
CN112988034B CN201911214053.2A CN201911214053A CN112988034B CN 112988034 B CN112988034 B CN 112988034B CN 201911214053 A CN201911214053 A CN 201911214053A CN 112988034 B CN112988034 B CN 112988034B
Authority
CN
China
Prior art keywords
partition
data
written
temporary
writing
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.)
Active
Application number
CN201911214053.2A
Other languages
English (en)
Other versions
CN112988034A (zh
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 Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing 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 Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN201911214053.2A priority Critical patent/CN112988034B/zh
Publication of CN112988034A publication Critical patent/CN112988034A/zh
Application granted granted Critical
Publication of CN112988034B publication Critical patent/CN112988034B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种分布式系统数据写入方法及装置,用于降低数据写入操作的负担以及校验的网络开销,以提高分布式系统的整体性能。该方法包括:在接收到包括第一数据写请求和第二数据写请求的至少两个数据写入请求后,首先根据第一数据写请求携带的第一待写数据和第一归属分区以及第二数据写请求携带的第二待写数据和第二归属分区,确定出一个临时分区;然后再将第一待写数据和第二待写数据写入临时分区,并对写入临时分区后的第一待写数据对应的临时分区和第一归属分区以及第二待写数据对应的临时分区和第二归属分区进行标记,进而可以根据这些临时标记,将第一待写数据写回第一归属分区,将第二待写数据写回第二归属分区。

Description

一种分布式系统数据写入方法及装置
技术领域
本申请涉及数据处理技术领域,尤其涉及一种分布式系统数据写入方法及装置。
背景技术
在目前这个信息数据暴风增长的时代中,为了提高数据处理速率,越来越多的采用分布式系统进行数据的存储,以提供海量数据的分布式存储服务和高速读写访问的能力。
分布式系统是包括客户端和若干数据存储节点相互连接构成。其中,数据存储节点负责数据的存储,每个对象存储设备(object storage device,OSD)模块部署在一个数据存储节点上,且分布式系统中通常设置有固定数量的分区,比如,可以设置有1024个分区,且每一分区归属于一个或多个不同的数据存储节点。
目前采用现有的分布式系统数据写入方法,在进行数据写入时,首先是按照分区将待写数据凑成分条,然后再分发到该分区归属的所有数据存储节点中。但这种数据写入方案,在分区数量较多的情况下,很难实现将每一分区的分条均凑满再写入到各个分区归属的数据存储节点中,从而会造成存储空间的浪费,并且增加了数据写入操作的负担以及校验的网络开销,降低了分布式系统的整体性能。
发明内容
本申请实施例提供了一种分布式系统数据写入方法及装置,用于降低数据写入操作的负担以及校验的网络开销,提高分布式系统的整体性能。
第一方面,本申请提供了一种分布式系统数据写入方法,该方法包括:在接收到包括第一数据写请求和第二数据写请求的至少两个数据写入请求后,首先根据第一数据写请求携带的第一待写数据和第一归属分区以及第二数据写请求携带的第二待写数据和第二归属分区,确定出一个临时分区;如图6所示,假设第一数据写请求携带的第一待写数据的写入位置为分区1中的MetaRV1和DataRV1,第一归属分区为分区1,第二数据写请求携带的第二待写数据的写入位置为分区2中的MetaRV2和DataRV2,第二归属分区为分区2,则可以将分区3确定为临时分区。然后再将第一待写数据和第二待写数据写入临时分区,并对写入临时分区后的第一待写数据对应的临时分区(如图6中的分区3)和第一归属分区(如图6中的分区1)进行标记,以及对写入临时分区后的第二待写数据对应的临时分区(如图6中的分区3)和第二归属分区(如图6中的分区2)进行标记,进而可以根据这些标记,将第一待写数据写回第一归属分区(如图6中的分区1),将第二待写数据写回第二归属分区(如图6中的分区2)。
与传统技术相比,本申请实施例是将两个不同分区的第一待写数据和第二待写数据先写入一个临时分区,再根据对二者的临时分区和对应归属分区进行的临时标记,将第一待写数据和第二待写数据分别写回第一归属分区和第二归属分区,从而能够有效减少数据写入操作的次数以及对应的校验次数,从而降低了校验的网络开销,提高了分布式系统的整体性能。
一种可能的实现方式中,根据第一待写数据、第一归属分区、第二待写数据和第二归属分区确定一个临时分区包括:确定第一归属分区中需要写入第一待写数据的第一资源卷RV所属的第一数据存储节点;确定第二归属分区中需要写入第二待写数据的第二资源卷RV所属的第二数据存储节点;将包含属于第一数据存储节点的第三资源卷RV,且包含属于第二数据存储节点的第四资源卷RV的分区确定为临时分区;第三资源卷RV与第一资源卷RV的编号相同,第四资源卷RV与第二资源卷RV的编号相同。
这样,可以准确确定出一个临时分区,用以写入多个归属分区中的待写数据,以便后续可以在该临时分区中对这些待写数据进行凑数据块分条,进而减少了数据写入操作的次数,降低了校验的网络开销。
一种可能的实现方式中,将第一待写数据和第二待写数据写入临时分区包括:将第一待写数据写入临时分区的第三资源卷RV,并将磁盘虚拟逻辑区块地址LBA与第一待写数据之间的映射关系写入第一归属分区中的第一资源卷RV;将第二待写数据写入临时分区的第四资源卷RV,并将LBA与第二待写数据之间的映射关系写入第二归属分区中的第二资源卷RV。
这样,实现了将不同归属分区的待写数据写入同一个临时分区,并将LBA与待写数据之间的关系写入对应归属分区的RV,减少了分区数量,便于后续在同一临时分区中的将待数据凑成数据块分条。
一种可能的实现方式中,将第一待写数据写入临时分区的第三资源卷RV,并将磁盘虚拟逻辑区块地址LBA与第一待写数据之间的映射关系写入第一归属分区中的第一资源卷RV,包括:将第一待写数据写入临时分区中对应的业务数据资源卷DataRV,凑成第一临时数据块GRAIN分条;将磁盘虚拟逻辑区块地址LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入第一归属分区中的元数据资源卷MetaRV;将第二待写数据写入临时分区的第四资源卷RV,并将LBA与第二待写数据之间的映射关系写入第二归属分区中的第二资源卷RV,包括:将第二待写数据写入临时分区中对应的业务数据资源卷DataRV,凑成第二临时数据块GRAIN分条;将磁盘虚拟逻辑区块地址LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入第二归属分区中的元数据资源卷MetaRV;其中,资源卷RV包含业务数据资源卷DataRV和元数据资源卷MetaRV。
这样,实现了将不同归属分区的待写数据写入同一个临时分区的对应DataRV,凑成临时GRAIN分条,并将LBA、临时GRAIN分条的条带ID和DataRV ID之间的映射关系写入对应分区中的MetaRV,克服了目前不同分区中数据不能凑分条的问题,可以形成交叉包含关系。
一种可能的实现方式中,对写入临时分区后的第一待写数据进行临时分区和第一归属分区标记,包括:对第一临时数据块GRAIN分条对应的临时分区和第一归属分区进行标记;对写入临时分区后的第二待写数据进行临时分区和第二归属分区标记,包括:对第二临时数据块GRAIN分条对应的临时分区和第二归属分区进行标记。便于后续可以根据这些标记将所有待写数据分别写回各自对应的归属分区。
一种可能的实现方式中,根据写入临时分区后的第一待写数据的临时分区和第一归属分区的标记,将第一待写数据写回第一归属分区,包括:更新第一归属分区中的元数据资源卷MetaRV中存储的LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系;根据写入临时分区后的第二待写数据的临时分区和第二归属分区的标记,将第二待写数据写回第二归属分区,包括:更新第二归属分区中的元数据资源卷MetaRV中存储的LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系。
这样,通过更新归属分区中的MetaRV中存储的LBA、临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系即可改变各归属分区中LBA的指向,快速、便捷的实现了将待写数据从临时分区写回对应的归属分区。
一种可能的实现方式中,更新第一归属分区中的元数据资源卷MetaRV中存储的LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,具体包括:将第一归属分区中的元数据资源卷MetaRV中存储的LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为LBA、第一待写数据写入第一归属分区的分条的条带ID和DataRV ID之间的映射关系;更新第二归属分区中的元数据资源卷MetaRV中存储的LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,具体包括:将第二归属分区中的元数据资源卷MetaRV中存储的LBA、第二临时数据块GRAIN分条的条带ID和DataRVID之间的映射关系,更新为LBA、第二待写数据写入第二归属分区的分条的条带ID和DataRVID之间的映射关系。
这样,通过将归属分区中的MetaRV中存储的LBA、临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系更新为LBA、待写数据写入归属分区的分条的条带ID和DataRVID之间的映射关系,可实现将每一归属分区中LBA指向该归属分区对应的DataRV,从而快速、便捷的实现了将每一待写数据从临时分区写回其对应的归属分区,有效减少了数据写入操作的次数以及对应的校验次数,进而降低了校验的网络开销,也提高了分布式系统的整体性能。
第二方面,本申请还提供了一种分布式系统数据写入装置,该装置包括:接收单元,用于接收以下至少两个数据写请求:第一数据写请求和第二数据写请求;第一数据写请求携带第一待写数据和第一归属分区,第二数据写请求携带第二待写数据和第二归属分区;确定单元,用于根据第一待写数据、第一归属分区、第二待写数据和第二归属分区确定一个临时分区;写入单元,用于将第一待写数据和第二待写数据写入临时分区,并对写入临时分区后的第一待写数据进行临时分区和第一归属分区标记,对写入临时分区后的第二待写数据进行临时分区和第二归属分区标记;写回单元,用于根据写入临时分区后的第一待写数据的临时分区和第一归属分区的标记,将第一待写数据写回第一归属分区;根据写入临时分区后的第二待写数据的临时分区和第二归属分区的标记,将第二待写数据写回第二归属分区。
一种可能的实现方式中,确定单元包括:第一节点确定子单元,用于确定第一归属分区中需要写入第一待写数据的第一资源卷RV所属的第一数据存储节点;第二节点确定子单元,用于确定第二归属分区中需要写入第二待写数据的第二资源卷RV所属的第二数据存储节点;临时分区确定子单元,用于将包含属于第一数据存储节点的第三资源卷RV,且包含属于第二数据存储节点的第四资源卷RV的分区确定为临时分区;第三资源卷RV与第一资源卷RV的编号相同,第四资源卷RV与第二资源卷RV的编号相同。
一种可能的实现方式中,写入单元包括:第一写入子单元,用于将第一待写数据写入临时分区的第三资源卷RV,并将磁盘虚拟逻辑区块地址LBA与第一待写数据之间的映射关系写入第一归属分区中的第一资源卷RV;第二写入子单元,用于将第二待写数据写入临时分区的第四资源卷RV,并将LBA与第二待写数据之间的映射关系写入第二归属分区中的第二资源卷RV。
一种可能的实现方式中,第一写入子单元具体用于:将第一待写数据写入临时分区中对应的业务数据资源卷DataRV,凑成第一临时数据块GRAIN分条;将磁盘虚拟逻辑区块地址LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入第一归属分区中的元数据资源卷MetaRV;第二写入子单元具体用于:将第二待写数据写入临时分区中对应的业务数据资源卷DataRV,凑成第二临时数据块GRAIN分条;将磁盘虚拟逻辑区块地址LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入第二归属分区中的元数据资源卷MetaRV;其中,资源卷RV包含业务数据资源卷DataRV和元数据资源卷MetaRV。
一种可能的实现方式中,写入单元还包括:第一标记子单元,用于对第一临时数据块GRAIN分条对应的临时分区和第一归属分区进行标记;第二标记子单元,用于对第二临时数据块GRAIN分条对应的临时分区和第二归属分区进行标记。
一种可能的实现方式中,写回单元包括:第一更新子单元,用于更新第一归属分区中的元数据资源卷MetaRV中存储的LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系;第二更新子单元,用于更新第二归属分区中的元数据资源卷MetaRV中存储的LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系。
一种可能的实现方式中,第一更新子单元具体用于:将第一归属分区中的元数据资源卷MetaRV中存储的LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为LBA、第一待写数据写入第一归属分区的分条的条带ID和DataRV ID之间的映射关系;第二更新子单元具体用于:将第二归属分区中的元数据资源卷MetaRV中存储的LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为LBA、第二待写数据写入第二归属分区的分条的条带ID和DataRV ID之间的映射关系。
第三方面,本申请还提供了一种分布式系统数据写入设备,该分布式系统数据写入设备包括:存储器、处理器,
存储器,用于存储指令;处理器,用于执行存储器中的指令,执行上述方法。
第四方面,本申请还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例在进行分布式系统数据写入时,在接收到包括第一数据写请求和第二数据写请求的至少两个数据写入请求后,首先根据第一数据写请求携带的第一待写数据和第一归属分区以及第二数据写请求携带的第二待写数据和第二归属分区,确定出一个临时分区;然后再将第一待写数据和第二待写数据写入临时分区,并对写入临时分区后的第一待写数据对应的临时分区和第一归属分区进行标记,以及对写入临时分区后的第二待写数据对应的临时分区和第二归属分区进行标记,进而可以根据这些标记,将第一待写数据写回第一归属分区,将第二待写数据写回第二归属分区。可见,本申请实施例是将两个不同分区的第一待写数据和第二待写数据先写入一个临时分区,再根据对二者的临时分区和对应归属分区进行的临时标记,将第一待写数据和第二待写数据分别写回第一归属分区和第二归属分区,因此,相较于目前将每个分区分别凑分条进行数据写入的方法而言,能够有效减少数据写入操作的次数以及对应的校验次数,从而降低了校验的网络开销,提高了分布式系统的整体性能。
附图说明
图1为本申请实施例应用的一种分布式系统架构的示例图;
图2为本申请实施例提供的分区1所属数据存储节点的示意图;
图3为本申请实施例提供的一种分布式系统数据写入方法的流程图;
图4为本申请实施例提供的LBA与MetaRV之间关系的示意图;
图5为本申请实施例提供的确定临时分区的方法的流程图;
图6为本申请实施例提供的临时分区的示意图;
图7为本申请实施例提供的分区中GRAIN的分布示意图;
图8为本申请实施例提供的一种分布式系统数据写入装置的结构框图;
图9为本申请实施例提供的一种分布式系统数据写入设备的结构示意图。
具体实施方式
本申请实施例提供了一种分布式系统数据写入方法、装置及系统,用于降低数据写入操作的负担以及校验的网络开销,以提高分布式系统的整体性能。
下面结合附图,对本申请的实施例进行描述。
参见图1,其示出了本申请实施例应用的一种分布式系统架构的示例图,如图1所示,该场景中,包括了虚拟块存储管理组件(virtual block system,VBS)101、客户端CLIENT102、元数据服务器(meta data controller,MDC)103和OSD104(包括图1中的OSD1、OSD2、OSD3、OSD4)。VBS 101与客户端CLIENT102连接,客户端CLIENT102和MDC103连接,同时,客户端CLIENT102和各个数据储存节点中部署的OSD104连接。上述“连接”可以是直接连接,也可以是间接连接。
其中,VBS101指的是基于逻辑卷管理(logical volume manager,LVM)、小型计算机系统接口(internet small computer system interface,iSCSI)和开源虚拟机的块存储系统,主要功能是负责卷元数据的管理,提供分布式集群接入点服务,使计算资源能够通过其与客户端102的连接,访问分布式存储资源,例如,VBS101可以为电脑上用于存储数据的硬盘的各个主分区,如C盘、D盘等。
客户端CLIENT102用于通过访问部署在各个数据存储节点中的OSD104,来实现分布式块设备存储的存储资源的读写。具体来讲,客户端CLIENT102在接收到VBS101发送的数据写请求后,可以采用纠删码(erasure coding,EC)技术,将待写数据存储到多个数据存储节点进行冗余备份存储,比如,可以使用3+1模式,即3个数据块(GRAIN)和1个校验块组成数据EC条带。以分区1归属于4个数据存储节点为例,则可以采用3+1模式,将分区1中的待写数据组成数据分条,即,分区1对应的分区视图可以为“分区1-数据存储节点1-数据存储节点2-数据存储节点3-数据存储节点4(校验存储节点),如图2所示。
MDC 103通过与客户端CLIENT102和OSD104的交互,来维护分布式系统中各个分区中的资源卷(resource volume,RV)与部署在各个数据存储节点中的OSD104之间的对应关系。具体来讲,首先,MDC103可以为客户端CLIENT102提供访问任意文件所含对象的能力,并且OSD104在接收到每个请求时将先验证该能力,然后才可以访问。其次,MDC103还可以在存储系统上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等。另外,为了提高客户端CLIENT102的性能,在对象存储系统设计时通常支持客户端CLIENT102方的缓存。由于引入客户端CLIENT102方的缓存,带来了缓存一致性问题,对此,MDC 103还可以支持基于客户端CLIENT102的文件缓存,当缓存的文件发生改变时,将通知客户端CLIENT102刷新缓存,从而可以防止缓存不一致引发的问题。
OSD104部署在对应的数据存储节点上,是分布式系统中提供输入输出(input/output,I/O)处理能力和存储空间的核心组成部分。如图1中以示例形式显示的OSD1、OSD2、OSD3和OSD4。具体来讲,OSD104管理存储在其上对象的元数据,该元数据与传统的元数据相似,通常包括对象的数据块和对象的长度。而在传统的存储系统中,这些元数据是由文件服务器维护的,而本申请的分布式系统中主要的元数据管理工作是由OSD104来完成,从而可以降低客户端CLIENT102的开销。
本申请中,客户端CLIENT102在接收到包括第一数据写请求和第二数据写请求的至少两个数据写请求后,首先根据第一数据写请求携带的第一待写数据和第一归属分区,以及第二数据写请求携带的第二待写数据和第二归属分区,确定出一个临时分区,然后再将第一待写数据和第二待写数据写入该临时分区,并对写入临时分区后的第一待写数据进行临时分区和第一归属分区标记,以及对写入临时分区后的第二待写数据进行临时分区和第二归属分区标记,进一步可以根据这些临时标记,分别将第一待写数据写回第一归属分区,将第二待写数据写回第二归属分区,而不再采用现有的先按照分区将待写数据凑成分条,然后再分发到该分区归属的所有数据存储节点的数据写入方式,从而能够有效减少数据写入操作的次数以及对应的校验次数,进而降低了校验的网络开销,提高了分布式系统的整体性能。
需要注意的是,上述应用场景仅是为了便于理解本申请而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
基于以上应用场景,本申请实施例提供了一种分布式系统数据写入方法,下面对该方法进行介绍。
S301:接收以下至少两个数据写请求:第一数据写请求和第二数据写请求;其中,第一数据写请求携带第一待写数据和第一归属分区,第二数据写请求携带第二待写数据和第二归属分区。
在本实施例中,如图1所示的分布式系统通常会通常设置有固定数量的分区,比如,可以设置有1024个分区,且每一分区归属于一个或多个不同的数据存储节点。
其中,每个分区均设置有固定数量的元数据资源卷MetaRV和业务数据资源卷DataRV,比如,每个分区可以包括10个MetaRV和DataRV,编号可以为从1到10,即,每个分区可以包括MetaRV1和DataRV1、MetaRV2和DataRV2、MetaRV3和DataRV3、……、MetaRV10和DataRV10这10个MetaRV和DataRV。且每一分区中各个相同编号的MetaRV存储的元数据数量和格式是相同的,各个相同编号的DataRV存储的业务数据数量和格式也是相同的。例如,分区1中的MetaRV1和分区2中的MetaRV1能够存储的元数据的数量和格式均为相同的,分区1中的DataRV1和分区2中的DataRV1能够存储的业务数据的数量和格式均为相同的。
元数据资源卷MetaRV用于维护逻辑块地址(logical block address,LBA)与待写数据实际存储地址(如GRAIN对应的条带ID和DataID,参见图4中的GRAINID)之间的映射关系,如图4所示,即,MetaRV中存储有表征LBA与待写数据实际存储地址之间的映射关系的映射表。而业务数据资源卷DataRV则为一系列EC条带,用于存储各个分区中的待写数据组成的数据块(GRAIN)分条。GRAIN分条是按照固定大小进一步划分的更细粒度的数据块(默认存储空间为4KB~8KB),它是组成IO数据的基本单位。
在进行分布式系统数据写入时,客户端可以接收到包含以下至少两个数据写请求:第一数据写请求和第二数据写请求。其中,第一数据写请求携带第一待写数据和第一归属分区,第二数据写请求携带第二待写数据和第二归属分区。且第一归属分区和第二归属分区为不同的分区,例如,第一归属分区和第二归属分区可以分别为分布式系统中的分区1和分区2。
S302:根据第一待写数据、第一归属分区、第二待写数据和第二归属分区确定一个临时分区。
在本实施例中,通过步骤S301接收到包括第一数据写请求和第二数据写请求的至少两个数据写请求后,进一步可以根据第一数据写请求携带的第一待写数据和第一归属分区,以及第二数据写请求携带的第二待写数据和第二归属分区,确定出一个临时分区,该临时分区是分布式系统中区别于第一归属分区和第二归属分区的其他分区,例如,假设第一归属分区和第二归属分区分别为分布式系统中的分区1和分区2,那么该临时分区可以为分区3、分区4或分区5等。
需要说明的是,本步骤S302中确定临时分区的具体实现过程可参见后续实施例的详细介绍。
S303:将第一待写数据和第二待写数据写入临时分区,并对写入临时分区后的第一待写数据进行临时分区和第一归属分区标记,对写入临时分区后的第二待写数据进行临时分区和第二归属分区标记。
在本实施例中,通过步骤S302确定出临时分区后,为了降低数据写入操作的负担,减少凑分条次数,本申请不再将第一待写数据直接写入第一归属分区,也不再将第二待写数据直接写入第二归属分区,来分别凑分条,而是将第一待写数据和第二待写数据先写入临时分区,统一在临时分区这一个分区中凑分条,这样就避免了无法在第一归属分区和第二归属分区这两个分区间凑分条,无法形成交叉保护关系的问题。
需要说明的是,在将第一待写数据和第二待写数据写入临时分区后,为了后续能够将第一待写数据和第二待写数据分别写回各自对应的第一归属分区和第二归属分区,可以对写入临时分区后的第一待写数据进行临时分区和第一归属分区标记,并对写入临时分区后的第二待写数据进行临时分区和第二归属分区标记。
举例说明:假设第一归属分区和第二归属分区分别为分布式系统中的分区1和分区2,临时分区为分区3,则可以对写入分区3的第一待写数据标记出其所属的临时分区为分区3,归属分区为分区1,同理,可以对写入分区3的第二待写数据标记出其所属的临时分区为分区3,归属分区为分区2。
需要说明的是,本步骤S303的具体实现过程可参见后续实施例的详细介绍。
S304:根据写入临时分区后的第一待写数据的临时分区和第一归属分区的标记,将第一待写数据写回第一归属分区;根据写入临时分区后的第二待写数据的临时分区和第二归属分区的标记,将第二待写数据写回第二归属分区。
在本实施例中,通过步骤S303将第一待写数据和第二待写数据写入临时分区,并分别对二者进行临时分区和归属分区的标记后,进一步可以根据记录的这些临时标记,将二者写回各自对应的归属分区,以实现最终的分布式数据写入。
举例说明:基于上述举例,假设第一归属分区和第二归属分区分别为分布式系统中的分区1和分区2,临时分区为分区3,则可以根据写入分区3的第一待写数据的分区3(临时分区)和分区1(第一归属分区)的标记,将第一待写数据写回分区1,同理,可以根据写入分区3的第二待写数据的分区3(临时分区)和分区2(第二归属分区)的标记,将第二待写数据写回分区2。
需要说明的是,本步骤S304的具体实现过程可参见后续实施例的详细介绍。
综上,本实施例提供的一种分布式系统数据写入方法,在接收到包括第一数据写请求和第二数据写请求的至少两个数据写入请求后,首先根据第一数据写请求携带的第一待写数据和第一归属分区以及第二数据写请求携带的第二待写数据和第二归属分区,确定出一个临时分区;然后再将第一待写数据和第二待写数据写入临时分区,并对写入临时分区后的第一待写数据对应的临时分区和第一归属分区进行标记,以及对写入临时分区后的第二待写数据对应的临时分区和第二归属分区进行标记,进而可以根据这些标记,将第一待写数据写回第一归属分区,将第二待写数据写回第二归属分区。可见,本申请实施例是将两个不同分区的第一待写数据和第二待写数据先写入一个临时分区,再根据对二者的临时分区和对应归属分区进行的临时标记,将第一待写数据和第二待写数据分别写回第一归属分区和第二归属分区,因此,相较于目前将每个分区分别凑分条进行数据写入的方法而言,能够有效减少数据写入操作的次数以及对应的校验次数,从而降低了校验的网络开销,提高了分布式系统的整体性能。
接下来,本实施例将通过下述步骤S3021-S3023,对步骤S302中确定临时分区的具体实现过程进行介绍。
S3021:确定第一归属分区中需要写入第一待写数据的第一资源卷RV所属的第一数据存储节点。
在本实施例中,为了确定出可以分别写入第一待写数据和第二待写数据的临时分区,减少数据写入操作的负担以及校验的网络开销,首先需要确定出第一归属分区中需要写入第一待写数据的资源卷RV(此处将其定义为第一资源卷RV)所属的数据存储节点(此处将其定义为第一数据存储节点)。
举例说明:如图6所示,假设第一归属分区为分区1,并且分区1中需要写入第一待写数据的资源卷RV(即第一资源卷RV)为MetaRV1和DataRV1,则根据图6可以确定出分区1中MetaRV1和DataRV1所属的数据存储节点(即第一数据存储节点)为存储节点2,对应的OSD为OSD2。
S3022:确定第二归属分区中需要写入第二待写数据的第二资源卷RV所属的第二数据存储节点。
在本实施例中,为了确定出可以分别写入第一待写数据和第二待写数据的临时分区,减少数据写入操作的负担以及校验的网络开销,不仅需要确定出第一归属分区中需要写入第一待写数据的第一资源卷RV所属的第一数据存储节点,还需要需要确定出第二归属分区中需要写入第二待写数据的资源卷RV(此处将其定义为第二资源卷RV)所属的数据存储节点(此处将其定义为第二数据存储节点)。
举例说明:如图6所示,假设第二归属分区为分区2,并且分区2中需要写入第二待写数据的资源卷RV(即第二资源卷RV)为MetaRV2和DataRV2,则根据图6可以确定出分区2中MetaRV2和DataRV2所属的数据存储节点(即第二数据存储节点)为存储节点3,对应的OSD为OSD3。
S3023:将包含属于第一数据存储节点的第三资源卷RV,且包含属于第二数据存储节点的第四资源卷RV的分区确定为临时分区;其中,第三资源卷RV与第一资源卷RV的编号相同,第四资源卷RV与第二资源卷RV的编号相同。
在本实施例中,为了确定出可以分别写入第一待写数据和第二待写数据的临时分区,减少数据写入操作的负担,需要保证将第一待写数据写入临时分区的资源卷RV与第一归属分区中需要写入第一待写数据的资源卷RV的编号是相同的,这样,才能保证写入的第一待写数据的数量和格式均为相同的,以便于后续可以将第一待写数据从临时分区写回第一归属分区中需要写入第一待写数据的资源卷RV(即第一资源卷RV)。
同理,还需要保证将第二待写数据写入临时分区的资源卷RV与第二归属分区中需要写入第二待写数据的资源卷RV的编号是相同的,这样,才能保证写入的第二待写数据的数量和格式均为相同的,以便于后续可以将第二待写数据从临时分区写回第二归属分区中需要写入第二待写数据的资源卷RV(即第二资源卷RV)。
具体来讲,可以在分布式系统中先查询出所有与第一资源卷RV的编号相同且属于第一数据存储节点的资源卷RV,以及所有与第二资源卷RV的编号相同且属于第二数据存储节点的资源卷RV,然后可以查询出同时包含这两种资源卷RV的分区,进而可以从中选出一个分区作为临时分区,并将该临时分区中包含的与第一资源卷RV的编号相同且属于第一数据存储节点的资源卷RV定义为第三资源卷RV,以及将该临时分区中包含的与第二资源卷RV的编号相同且属于第二数据存储节点的资源卷RV定义为第四资源卷RV。
举例说明:如图6所示,假设第一归属分区为分区1,分区1中的第一资源卷RV为MetaRV1和DataRV1,第一数据存储节点为存储节点2,对应的OSD为OSD2。且第二归属分区为分区2,分区2中的第二资源卷RV为MetaRV2和DataRV2,第二数据存储节点为存储节点3,对应的OSD为OSD3。则可以从分布式系统中查询出一个分区,使得这个分区同时包含MetaRV1和DataRV1以及MetaRV2和DataRV2,且其中MetaRV1和DataRV1属于存储节点2,MetaRV2和DataRV2属于存储节点3,如图6所示的分区3,此时即可将分区3确定为临时分区。
需要说明的是,若客户端接收到的至少两个数据写入请求中还包括第三数据写入请求,且第三数据写入请求携带第三待写数据和第三归属分区。其中,第三归属分区为分布式系统中区别于第一归属分区和第二归属分区的其他分区,则在通过上述步骤确定临时分区时,还需要先确定出第三归属分区中需要写入第三待写数据的资源卷RV所属的第三数据存储节点,进而在确定临时分区时,还需要保证临时分区中包含有第五资源卷RV,并且该第五资源卷与第三归属分区中需要写入第三待写数据的资源卷RV的编号是相同的,并且二者均属于第三数据存储节点。
举例说明:假设第一归属分区为分区1,分区1中的第一资源卷RV为MetaRV1和DataRV1,第一数据存储节点为存储节点2,对应的OSD为OSD2。第二归属分区为分区2,分区2中的第二资源卷RV为MetaRV2和DataRV2,第二数据存储节点为存储节点3,对应的OSD为OSD3。第三归属分区为分区3,分区3中的需要写入第三待写数据的资源卷RV为MetaRV3和DataRV3,第三数据存储节点为存储节点4,对应的OSD为OSD4。则可以从分布式系统中查询出一个分区,使得这个分区同时包含MetaRV1和DataRV1、MetaRV2和DataRV2、以及MetaRV3和DataRV3,且其中MetaRV1和DataRV1属于存储节点2,MetaRV2和DataRV2属于存储节点3,MetaRV3和DataRV3属于存储节点4,此时即可将该分区确定为临时分区。
或者,若客户端接收到的至少两个数据写入请求中还包括第三数据写入请求,且第三数据写入请求携带第三待写数据和第一归属分区。则在通过上述步骤确定临时分区时,还需要先确定出第一归属分区中需要写入第三待写数据的资源卷RV所属的第三数据存储节点,进而在确定临时分区时,还需要保证临时分区中包含有第五资源卷RV,并且该第五资源卷与第一归属分区中需要写入第三待写数据的资源卷RV的编号是相同的,并且二者均属于第三数据存储节点。
举例说明:假设第一归属分区为分区1,分区1中的第一资源卷RV为MetaRV1和DataRV1,第一数据存储节点为存储节点2,对应的OSD为OSD2,且分区1中的需要写入第三待写数据的资源卷RV为MetaRV3和DataRV3,第三数据存储节点为存储节点4,对应的OSD为OSD4。第二归属分区为分区2,分区2中的第二资源卷RV为MetaRV2和DataRV2,第二数据存储节点为存储节点3,对应的OSD为OSD3。则可以从分布式系统中查询出一个分区,使得这个分区同时包含MetaRV1和DataRV1、MetaRV2和DataRV2、以及MetaRV3和DataRV3,且其中MetaRV1和DataRV1属于存储节点2,MetaRV2和DataRV2属于存储节点3,MetaRV3和DataRV3属于存储节点4,此时即可将该分区确定为临时分区。
需要说明的是,客户端接收到的至少两个数据写入请求中还可以包括更多的数据写请求,对于这些数据写请求,均可按照上述介绍的几种方式,来确定出最终的临时分区,用以写入待写数据,具体实现过程可参照上述实施例的介绍,本申请实施例在此不再一一赘述。并且,本申请实施例后续仍将以接收到第一数据写请求和第二数据写请求这两个数据写请求为例进行介绍。
接下来,在通过执行上述步骤S3021-S3023,确定出临时分区后,一种可选的实现方式是,进一步可以通过下述步骤A-B,将第一待写数据和第二待写数据分别写入临时分区,即,步骤S303中“将第一待写数据和第二待写数据写入临时分区”的具体实现过程如下:
步骤A:将第一待写数据写入临时分区的第三资源卷RV,并将磁盘虚拟逻辑区块地址LBA与第一待写数据之间的映射关系写入第一归属分区中的第一资源卷RV。
在本实现方式中,在通过上述步骤S3021-S3023确定出临时分区以及临时分区中的第三资源卷RV后,基于第三资源卷RV与第一资源卷RV的编号相同,可以存储的数据数量和格式是相同的,且资源卷RV包含了业务数据资源卷DataRV和元数据资源卷MetaRV。由此,进一步可以将第一待写数据写入临时分区的第三资源卷RV,并将磁盘虚拟逻辑区块地址LBA与第一待写数据实际存储地址(GRAINID)之间的映射关系写入第一归属分区中的第一资源卷RV;
具体来讲,可以将第一待写数据写入临时分区中对应的业务数据资源卷DataRV,凑成第一临时数据块GRAIN分条;将LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入第一归属分区中对应的MetaRV。其中,第一临时数据块GRAIN分条的条带ID和DataRV ID是表征第一临时数据块GRAIN分条唯一性的地址信息数据,也就是临时分区中第一待写数据的实际存储地址GRAINID。如图7所示,其示出了分区中GRAIN分条、条带ID和DataRV ID三者之间的对应关系,例如,条带1和DataRV1表征的即为图7中左上角的数据块GRAIN分条地址信息。
举例说明:如图6所示,第一归属分区为分区1,第二归属分区为分区2,临时分区为分区3,则可以将第一待写数据写入分区3中的DataRV1,凑成第一临时数据块GRAIN分条,同时可以将LBA、该第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入分区1中对应的MetaRV1。
步骤B:将第二待写数据写入临时分区的第四资源卷RV,并将LBA与第二待写数据之间的映射关系写入第二归属分区中的第二资源卷RV。
在本实现方式中,在通过上述步骤S3021-S3023确定出临时分区以及临时分区中的第四资源卷RV后,基于第四资源卷RV与第二资源卷RV的编号相同,可以存储的数据数量和格式是相同的,由此,进一步可以将第二待写数据写入临时分区的第四资源卷RV,并将LBA与第二待写数据实际存储地址(GRAINID)之间的映射关系写入第二归属分区中的第二资源卷RV;
具体来讲,可以将第二待写数据写入临时分区中对应的业务数据资源卷DataRV,凑成第二临时数据块GRAIN分条;将LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入第二归属分区中对应的MetaRV。其中,第二临时数据块GRAIN分条的条带ID和DataRV ID是表征第二临时数据块GRAIN分条唯一性的地址信息数据,也就是临时分区中第二待写数据的实际存储地址GRAINID。
举例说明:如图6所示,第一归属分区为分区1,第二归属分区为分区2,临时分区为分区3,则可以将第二待写数据写入分区3中的DataRV2,凑成第二临时数据块GRAIN分条,同时可以将LBA、该第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入分区2中对应的MetaRV2。
需要说明的是,本实施例不限制步骤A和步骤B的执行顺序,可以先执行步骤A后执行步骤B、或先执行步骤A后执行步骤B、或同时执行步骤A和步骤B。
还需要说明的是,在通过执行上述步骤A-B,将第一待写数据和第二待写数据写入临时分区后,一种可选的实现方式是,进一步可以对写入临时分区后的第一待写数据进行临时分区和第一归属分区标记,对写入临时分区后的第二待写数据进行临时分区和第二归属分区标记。
在本实现方式,步骤S303中“写入临时分区后的第一待写数据进行临时分区和第一归属分区标记”的具体实现过程为:对第一临时数据块GRAIN分条对应的临时分区和第一归属分区进行标记。
具体来讲,为了后续能够将写入临时分区的第一待写数据写回第一归属分区,在将第一待写数据写入临时分区中对应的DataRV以凑成第一临时数据块GRAIN分条后,进一步还可以标记出该第一临时数据块GRAIN分条对应的临时分区编号和第一归属分区编号。
举例说明:基于上述举例,如图6所示,第一归属分区为分区1,第二归属分区为分区2,临时分区为分区3,则在将第一待写数据写入分区3中的DataRV1以凑成第一临时数据块GRAIN分条后,进一步可以标记出该GRAIN分条对应的临时分区为分区3以及第一归属分区为分区1。
另外,在本实现方式,步骤S303中“对写入临时分区后的第二待写数据进行临时分区和第二归属分区标记”的具体实现过程为:对第二临时数据块GRAIN分条对应的临时分区和第二归属分区进行标记。
具体来讲,为了后续能够将写入临时分区的第二待写数据写回第二归属分区,在将第二待写数据写入临时分区中对应的DataRV以凑成第二临时数据块GRAIN分条后,进一步还可以标记出该第二临时数据块GRAIN分条对应的临时分区编号和第二归属分区编号。
举例说明:基于上述举例,如图6所示,第一归属分区为分区1,第二归属分区为分区2,临时分区为分区3,则在将第二待写数据写入分区3中的DataRV2以凑成第二临时数据块GRAIN分条后,进一步可以标记出该GRAIN分条对应的临时分区为分区3以及第二归属分区为分区2。
一种可选的实现方式是,得到上述临时标记后,进一步可以将这些临时标记记录在一个单独的临时统计表中,用以记录临时分区中哪些GRAIN分条是临时凑分条形成的,后续需要根据表中的临时标记,写回各自对应的归属分区中,进而可以与临时分区中其他数据块GRAIN分条相区别。
接下来,本实施例将对通过步骤S304的具体实现过程进行介绍。
一种可选的实现方式是,步骤S304中“根据写入临时分区后的第一待写数据的临时分区和第一归属分区的标记,将第一待写数据写回第一归属分区”的具体实现过程为:更新第一归属分区中的元数据资源卷MetaRV中存储的LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系。
具体来讲,可以将第一归属分区中的MetaRV中存储的LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为LBA、第一待写数据写入第一归属分区的分条的条带ID和DataRV ID之间的映射关系。
举例说明:基于上述举例,如图6所示,第一归属分区为分区1,第二归属分区为分区2,临时分区为分区3,则在将第一待写数据写入分区3中的DataRV1以凑成第一临时数据块GRAIN分条并标记出该GRAIN分条对应的临时分区为分区3以及第一归属分区为分区1后,为了能够将第一待写数据写回分区1,则需要将分区1的MetaRV1中记录的LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为LBA、分区1中GARIN对应的DataRV1和条带ID(如条带1)之间的映射关系,从而更新了分区1的MetaRV1中LBA的指向,即,将其指向了分区1中DataRV1和条带1表征的GRAIN分条数据,这样,通过需要更新分区1的MetaRV1,将LBA指向分区1的DataRV1中的GRAIN分条数据,实现了该GRAIN分条数据从分区3的DataRV1重新写回到分区1的DataRV1。
同理,步骤S304中“根据写入临时分区后的第二待写数据的临时分区和第二归属分区的标记,将第二待写数据写回第二归属分区”的具体实现过程为:更新第二归属分区中的元数据资源卷MetaRV中存储的LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系。
具体来讲,可以将第二归属分区中的元数据资源卷MetaRV中存储的LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为LBA、第二待写数据写入第二归属分区的分条的条带ID和DataRV ID之间的映射关系。
举例说明:基于上述举例,如图6所示,第一归属分区为分区1,第二归属分区为分区2,临时分区为分区3,则在将第二待写数据写入分区3中的DataRV2以凑成第二临时数据块GRAIN分条并标记出该GRAIN分条对应的临时分区为分区3以及第二归属分区为分区2后,为了能够将第二待写数据写回分区2,则需要将分区2的MetaRV2中记录的LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为LBA、分区2中GARIN对应的DataRV2和条带ID(如条带2)之间的映射关系,从而更新了分区2的MetaRV2中LBA的指向,即,将其指向了分区2中DataRV2和条带2表征的GRAIN分条数据,这样,通过需要更新分区2的MetaRV2,将LBA指向分区2的DataRV2中的GRAIN分条数据,实现了该GRAIN分条数据从分区3的DataRV2重新写回到分区2的DataRV2。
为便于更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关装置。请参见图8所示,本申请实施例提供的分布式系统数据写入装置800。该装置800可以包括:获取单元801、确定单元802、写入单元803和写回单元804。其中,获取单元801用于执行图3所示实施例中的S301。确定单元802用于执行图3所示实施例中的S302。写入单元803用于执行图3所示实施例中的S303。写回单元804用于执行图3所示实施例中的S304。具体的,
接收单元801,用于接收以下至少两个数据写请求:第一数据写请求和第二数据写请求;第一数据写请求携带第一待写数据和第一归属分区,第二数据写请求携带第二待写数据和第二归属分区;
确定单元802,用于根据第一待写数据、第一归属分区、第二待写数据和第二归属分区确定一个临时分区;
写入单元803,用于将第一待写数据和第二待写数据写入临时分区,并对写入临时分区后的第一待写数据进行临时分区和第一归属分区标记,对写入临时分区后的第二待写数据进行临时分区和第二归属分区标记;
写回单元804,用于根据写入临时分区后的第一待写数据的临时分区和第一归属分区的标记,将第一待写数据写回第一归属分区;根据写入临时分区后的第二待写数据的临时分区和第二归属分区的标记,将第二待写数据写回第二归属分区。
在本实施例的一种实现方式中,确定单元802包括:
第一节点确定子单元,用于确定第一归属分区中需要写入第一待写数据的第一资源卷RV所属的第一数据存储节点;
第二节点确定子单元,用于确定第二归属分区中需要写入第二待写数据的第二资源卷RV所属的第二数据存储节点;
临时分区确定子单元,用于将包含属于第一数据存储节点的第三资源卷RV,且包含属于第二数据存储节点的第四资源卷RV的分区确定为临时分区;第三资源卷RV与第一资源卷RV的编号相同,第四资源卷RV与第二资源卷RV的编号相同。
在本实施例的一种实现方式中,写入单元803包括:
第一写入子单元,用于将第一待写数据写入临时分区的第三资源卷RV,并将磁盘虚拟逻辑区块地址LBA与第一待写数据之间的映射关系写入第一归属分区中的第一资源卷RV;
第二写入子单元,用于将第二待写数据写入临时分区的第四资源卷RV,并将LBA与第二待写数据之间的映射关系写入第二归属分区中的第二资源卷RV。
在本实施例的一种实现方式中,第一写入子单元具体用于:将第一待写数据写入临时分区中对应的业务数据资源卷DataRV,凑成第一临时数据块GRAIN分条;将磁盘虚拟逻辑区块地址LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入第一归属分区中的元数据资源卷MetaRV;第二写入子单元具体用于:将第二待写数据写入临时分区中对应的业务数据资源卷DataRV,凑成第二临时数据块GRAIN分条;将磁盘虚拟逻辑区块地址LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入第二归属分区中的元数据资源卷MetaRV;其中,资源卷RV包含业务数据资源卷DataRV和元数据资源卷MetaRV。
在本实施例的一种实现方式中,写入单元803还包括:
第一标记子单元,用于对第一临时数据块GRAIN分条对应的临时分区和第一归属分区进行标记;
第二标记子单元,用于对第二临时数据块GRAIN分条对应的临时分区和第二归属分区进行标记。
在本实施例的一种实现方式中,写回单元804包括:
第一更新子单元,用于更新第一归属分区中的元数据资源卷MetaRV中存储的LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系;
第二更新子单元,用于更新第二归属分区中的元数据资源卷MetaRV中存储的LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系。
在本实施例的一种实现方式中,第一更新子单元具体用于:将第一归属分区中的元数据资源卷MetaRV中存储的LBA、第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为LBA、第一待写数据写入第一归属分区的分条的条带ID和DataRV ID之间的映射关系;第二更新子单元具体用于:将第二归属分区中的元数据资源卷MetaRV中存储的LBA、第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为LBA、第二待写数据写入第二归属分区的分条的条带ID和DataRV ID之间的映射关系。
综上,本申请实施例中提供的分布式系统数据写入装置,在接收到包括第一数据写请求和第二数据写请求的至少两个数据写入请求后,首先根据第一数据写请求携带的第一待写数据和第一归属分区以及第二数据写请求携带的第二待写数据和第二归属分区,确定出一个临时分区;然后再将第一待写数据和第二待写数据写入临时分区,并对写入临时分区后的第一待写数据对应的临时分区和第一归属分区进行标记,以及对写入临时分区后的第二待写数据对应的临时分区和第二归属分区进行标记,进而可以根据这些标记,将第一待写数据写回第一归属分区,将第二待写数据写回第二归属分区。可见,本申请实施例是将两个不同分区的第一待写数据和第二待写数据先写入一个临时分区,再根据对二者的临时分区和对应归属分区进行的临时标记,将第一待写数据和第二待写数据分别写回第一归属分区和第二归属分区,因此,相较于目前将每个分区分别凑分条进行数据写入的方法而言,能够有效减少数据写入操作的次数以及对应的校验次数,从而降低了校验的网络开销,提高了分布式系统的整体性能。
参见图9,本申请实施例提供了一种分布式系统数据写入设备900,该设备包括存储器901、处理器902和通信接口903,
存储器901,用于存储指令;
处理器902,用于执行存储器901中的指令,执行上述应用于图3所示实施例中的分布式系统数据写入方法;
通信接口903,用于进行通信。
存储器901、处理器902和通信接口903通过总线904相互连接;总线904可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在具体实施例中,处理器902用于在接收到包括第一数据写请求和第二数据写请求的至少两个数据写入请求后,首先根据第一数据写请求携带的第一待写数据和第一归属分区以及第二数据写请求携带的第二待写数据和第二归属分区,确定出一个临时分区;然后再将第一待写数据和第二待写数据写入临时分区,并对写入临时分区后的第一待写数据对应的临时分区和第一归属分区进行标记,以及对写入临时分区后的第二待写数据对应的临时分区和第二归属分区进行标记,进而可以根据这些标记,将第一待写数据写回第一归属分区,将第二待写数据写回第二归属分区。该处理器902的详细处理过程请参考上述图3所示实施例中S301、S302、S303和S304的详细描述,这里不再赘述。
上述存储器901可以是随机存取存储器(random-access memory,RAM)、闪存(flash)、只读存储器(read only memory,ROM)、可擦写可编程只读存储器(erasableprogrammable read only memory,EPROM)、电可擦除可编程只读存储器(electricallyerasable programmable read only memory,EEPROM)、寄存器(register)、硬盘、移动硬盘、CD-ROM或者本领域技术人员知晓的任何其他形式的存储介质。
上述处理器902例如可以是中央处理器(central processing unit,CPU)、通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。
上述通信接口903例如可以是接口卡等,可以为以太(ethernet)接口或异步传输模式(asynchronous transfer mode,ATM)接口。
本申请实施例还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述分布式系统数据写入方法。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑模块划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要获取其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各模块单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件模块单元的形式实现。
所述集成的单元如果以软件模块单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (14)

1.一种分布式系统数据写入方法,其特征在于,所述方法包括:
接收以下至少两个数据写请求:第一数据写请求和第二数据写请求;所述第一数据写请求携带第一待写数据和第一归属分区,所述第二数据写请求携带第二待写数据和第二归属分区;
根据所述第一待写数据、所述第一归属分区、所述第二待写数据和所述第二归属分区确定一个临时分区,所述临时分区是分布式系统中区别于所述第一归属分区和所述第二归属分区的其他分区;
将所述第一待写数据和所述第二待写数据写入所述临时分区,并对写入所述临时分区后的第一待写数据进行所述临时分区和所述第一归属分区标记,对写入所述临时分区后的第二待写数据进行所述临时分区和所述第二归属分区标记;
根据写入所述临时分区后的第一待写数据的所述临时分区和所述第一归属分区的标记,将所述第一待写数据写回所述第一归属分区;根据写入所述临时分区后的第二待写数据的所述临时分区和所述第二归属分区的标记,将所述第二待写数据写回所述第二归属分区;
所述根据所述第一待写数据、所述第一归属分区、所述第二待写数据和所述第二归属分区确定一个临时分区,包括:
确定所述第一归属分区中需要写入所述第一待写数据的第一资源卷RV所属的第一数据存储节点;
确定所述第二归属分区中需要写入所述第二待写数据的第二资源卷RV所属的第二数据存储节点;
将包含属于所述第一数据存储节点的第三资源卷RV,且包含属于所述第二数据存储节点的第四资源卷RV的分区确定为所述临时分区;所述第三资源卷RV与所述第一资源卷RV的编号相同,所述第四资源卷RV与所述第二资源卷RV的编号相同。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一待写数据和所述第二待写数据写入所述临时分区,包括:
将所述第一待写数据写入所述临时分区的第三资源卷RV,并将磁盘虚拟逻辑区块地址LBA与所述第一待写数据之间的映射关系写入所述第一归属分区中的第一资源卷RV;
将所述第二待写数据写入所述临时分区的第四资源卷RV,并将所述LBA与所述第二待写数据之间的映射关系写入所述第二归属分区中的第二资源卷RV。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一待写数据写入所述临时分区的第三资源卷RV,并将磁盘虚拟逻辑区块地址LBA与所述第一待写数据之间的映射关系写入所述第一归属分区中的第一资源卷RV,包括:
将所述第一待写数据写入所述临时分区中对应的业务数据资源卷DataRV,凑成第一临时数据块GRAIN分条;将磁盘虚拟逻辑区块地址LBA、所述第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入所述第一归属分区中的元数据资源卷MetaRV;
所述将所述第二待写数据写入所述临时分区的第四资源卷RV,并将所述LBA与所述第二待写数据之间的映射关系写入所述第二归属分区中的第二资源卷RV,包括:
将所述第二待写数据写入所述临时分区中对应的业务数据资源卷DataRV,凑成第二临时数据块GRAIN分条;将磁盘虚拟逻辑区块地址LBA、所述第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入所述第二归属分区中的元数据资源卷MetaRV;
其中,资源卷RV包含业务数据资源卷DataRV和元数据资源卷MetaRV。
4.根据权利要求3所述的方法,其特征在于,所述对写入所述临时分区后的第一待写数据进行所述临时分区和所述第一归属分区标记,包括:
对所述第一临时数据块GRAIN分条对应的所述临时分区和所述第一归属分区进行标记;
所述对写入所述临时分区后的第二待写数据进行所述临时分区和所述第二归属分区标记,包括:
对所述第二临时数据块GRAIN分条对应的临时分区和所述第二归属分区进行标记。
5.根据权利要求3所述的方法,其特征在于,所述根据写入所述临时分区后的第一待写数据的所述临时分区和所述第一归属分区的标记,将所述第一待写数据写回所述第一归属分区,包括:
更新所述第一归属分区中的元数据资源卷MetaRV中存储的LBA、所述第一临时数据块GRAIN分条的条带ID和DataRVID之间的映射关系;
所述根据写入所述临时分区后的第二待写数据的所述临时分区和所述第二归属分区的标记,将所述第二待写数据写回所述第二归属分区,包括:
更新所述第二归属分区中的元数据资源卷MetaRV中存储的LBA、所述第二临时数据块GRAIN分条的条带ID和DataRVID之间的映射关系。
6.根据权利要求5所述的方法,其特征在于,所述更新所述第一归属分区中的元数据资源卷MetaRV中存储的LBA、所述第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,具体包括:
将所述第一归属分区中的元数据资源卷MetaRV中存储的LBA、所述第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为所述LBA、所述第一待写数据写入所述第一归属分区的分条的条带ID和DataRVID之间的映射关系;
所述更新所述第二归属分区中的元数据资源卷MetaRV中存储的LBA、所述第二临时数据块GRAIN分条的条带ID和DataRVID之间的映射关系,具体包括:
将所述第二归属分区中的元数据资源卷MetaRV中存储的LBA、所述第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为所述LBA、所述第二待写数据写入所述第二归属分区的分条的条带ID和DataRVID之间的映射关系。
7.一种分布式系统数据写入装置,其特征在于,所述装置包括:
接收单元,用于接收以下至少两个数据写请求:第一数据写请求和第二数据写请求;所述第一数据写请求携带第一待写数据和第一归属分区,所述第二数据写请求携带第二待写数据和第二归属分区;
确定单元,用于根据所述第一待写数据、所述第一归属分区、所述第二待写数据和所述第二归属分区确定一个临时分区,所述临时分区是分布式系统中区别于所述第一归属分区和所述第二归属分区的其他分区;
写入单元,用于将所述第一待写数据和所述第二待写数据写入所述临时分区,并对写入所述临时分区后的第一待写数据进行所述临时分区和所述第一归属分区标记,对写入所述临时分区后的第二待写数据进行所述临时分区和所述第二归属分区标记;
写回单元,用于根据写入所述临时分区后的第一待写数据的所述临时分区和所述第一归属分区的标记,将所述第一待写数据写回所述第一归属分区;根据写入所述临时分区后的第二待写数据的所述临时分区和所述第二归属分区的标记,将所述第二待写数据写回所述第二归属分区;
所述确定单元包括:
第一节点确定子单元,用于确定所述第一归属分区中需要写入所述第一待写数据的第一资源卷RV所属的第一数据存储节点;
第二节点确定子单元,用于确定所述第二归属分区中需要写入所述第二待写数据的第二资源卷RV所属的第二数据存储节点;
临时分区确定子单元,用于将包含属于所述第一数据存储节点的第三资源卷RV,且包含属于所述第二数据存储节点的第四资源卷RV的分区确定为所述临时分区;所述第三资源卷RV与所述第一资源卷RV的编号相同,所述第四资源卷RV与所述第二资源卷RV的编号相同。
8.根据权利要求7所述的装置,其特征在于,所述写入单元包括:
第一写入子单元,用于将所述第一待写数据写入所述临时分区的第三资源卷RV,并将磁盘虚拟逻辑区块地址LBA与所述第一待写数据之间的映射关系写入所述第一归属分区中的第一资源卷RV;
第二写入子单元,用于将所述第二待写数据写入所述临时分区的第四资源卷RV,并将所述LBA与所述第二待写数据之间的映射关系写入所述第二归属分区中的第二资源卷RV。
9.根据权利要求8所述的装置,其特征在于,所述第一写入子单元具体用于:
将所述第一待写数据写入所述临时分区中对应的业务数据资源卷DataRV,凑成第一临时数据块GRAIN分条;将磁盘虚拟逻辑区块地址LBA、所述第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入所述第一归属分区中的元数据资源卷MetaRV;
所述第二写入子单元具体用于:
将所述第二待写数据写入所述临时分区中对应的业务数据资源卷DataRV,凑成第二临时数据块GRAIN分条;将磁盘虚拟逻辑区块地址LBA、所述第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系对应写入所述第二归属分区中的元数据资源卷MetaRV;
其中,资源卷RV包含业务数据资源卷DataRV和元数据资源卷MetaRV。
10.根据权利要求9所述的装置,其特征在于,所述写入单元还包括:
第一标记子单元,用于对所述第一临时数据块GRAIN分条对应的所述临时分区和所述第一归属分区进行标记;
第二标记子单元,用于对所述第二临时数据块GRAIN分条对应的临时分区和所述第二归属分区进行标记。
11.根据权利要求9所述的装置,其特征在于,所述写回单元包括:
第一更新子单元,用于更新所述第一归属分区中的元数据资源卷MetaRV中存储的LBA、所述第一临时数据块GRAIN分条的条带ID和DataRVID之间的映射关系;
第二更新子单元,用于更新所述第二归属分区中的元数据资源卷MetaRV中存储的LBA、所述第二临时数据块GRAIN分条的条带ID和DataRVID之间的映射关系。
12.根据权利要求11所述的装置,其特征在于,所述第一更新子单元具体用于:
将所述第一归属分区中的元数据资源卷MetaRV中存储的LBA、所述第一临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为所述LBA、所述第一待写数据写入所述第一归属分区的分条的条带ID和DataRVID之间的映射关系;
所述第二更新子单元具体用于:
将所述第二归属分区中的元数据资源卷MetaRV中存储的LBA、所述第二临时数据块GRAIN分条的条带ID和DataRV ID之间的映射关系,更新为所述LBA、所述第二待写数据写入所述第二归属分区的分条的条带ID和DataRVID之间的映射关系。
13.一种分布式系统数据写入设备,其特征在于,所述设备包括存储器、处理器;
所述存储器,用于存储指令;
所述处理器,用于执行所述存储器中的所述指令,执行权利要求1-6任意一项所述的方法。
14.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得所述计算机执行以上权利要求1-6任意一项所述的方法。
CN201911214053.2A 2019-12-02 2019-12-02 一种分布式系统数据写入方法及装置 Active CN112988034B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911214053.2A CN112988034B (zh) 2019-12-02 2019-12-02 一种分布式系统数据写入方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911214053.2A CN112988034B (zh) 2019-12-02 2019-12-02 一种分布式系统数据写入方法及装置

Publications (2)

Publication Number Publication Date
CN112988034A CN112988034A (zh) 2021-06-18
CN112988034B true CN112988034B (zh) 2024-04-12

Family

ID=76331177

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911214053.2A Active CN112988034B (zh) 2019-12-02 2019-12-02 一种分布式系统数据写入方法及装置

Country Status (1)

Country Link
CN (1) CN112988034B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953948B1 (en) * 2005-06-17 2011-05-31 Acronis Inc. System and method for data protection on a storage medium
CN103180852A (zh) * 2012-08-09 2013-06-26 华为技术有限公司 分布式数据处理方法及装置
CN106503058A (zh) * 2016-09-27 2017-03-15 华为技术有限公司 一种数据加载方法、终端和计算集群
CN106662983A (zh) * 2015-12-31 2017-05-10 华为技术有限公司 分布式存储系统中的数据重建的方法、装置和系统
CN108064374A (zh) * 2017-08-10 2018-05-22 华为技术有限公司 一种数据访问方法、装置和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953948B1 (en) * 2005-06-17 2011-05-31 Acronis Inc. System and method for data protection on a storage medium
CN103180852A (zh) * 2012-08-09 2013-06-26 华为技术有限公司 分布式数据处理方法及装置
CN106662983A (zh) * 2015-12-31 2017-05-10 华为技术有限公司 分布式存储系统中的数据重建的方法、装置和系统
CN106503058A (zh) * 2016-09-27 2017-03-15 华为技术有限公司 一种数据加载方法、终端和计算集群
CN108064374A (zh) * 2017-08-10 2018-05-22 华为技术有限公司 一种数据访问方法、装置和系统

Also Published As

Publication number Publication date
CN112988034A (zh) 2021-06-18

Similar Documents

Publication Publication Date Title
US10374792B1 (en) Layout-independent cryptographic stamp of a distributed dataset
CN108459826B (zh) 一种处理io请求的方法及装置
US20200320036A1 (en) Data unit cloning in memory-based file systems
US10248623B1 (en) Data deduplication techniques
US20160179581A1 (en) Content-aware task assignment in distributed computing systems using de-duplicating cache
US10740018B2 (en) Data migration method and apparatus applied to computer system, and computer system
EP3321792B1 (en) Method for deleting duplicated data in storage system, storage system and controller
EP3316150B1 (en) Method and apparatus for file compaction in key-value storage system
CN109445687B (zh) 一种数据存储方法以及协议服务器
CN109144406B (zh) 分布式存储系统中元数据存储方法、系统及存储介质
CN106126374B (zh) 数据写入方法、数据读取方法及装置
CN104067240A (zh) 块级存储
US20180364948A1 (en) Data Processing Method, Related Device, and Storage System
US11487460B2 (en) Deferred reclamation of invalidated entries associated with replication in a log-structured array
US8903804B2 (en) Data existence judging device and data existence judging method
US20190114076A1 (en) Method and Apparatus for Storing Data in Distributed Block Storage System, and Computer Readable Storage Medium
CN115470156A (zh) 基于rdma的内存使用方法、系统、电子设备和存储介质
US11775194B2 (en) Data storage method and apparatus in distributed storage system, and computer program product
CN107430546B (zh) 一种文件更新方法及存储设备
CN111666043A (zh) 一种数据存储方法及设备
CN112988034B (zh) 一种分布式系统数据写入方法及装置
CN108121504B (zh) 数据删除方法及装置
US8935488B2 (en) Storage system and storage control method
CN111966845B (zh) 图片管理方法、装置、存储节点及存储介质
EP3889778B1 (en) Distributed storage system and computer program product

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
TA01 Transfer of patent application right

Effective date of registration: 20220210

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant