CN108399050B - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN108399050B CN108399050B CN201810105947.7A CN201810105947A CN108399050B CN 108399050 B CN108399050 B CN 108399050B CN 201810105947 A CN201810105947 A CN 201810105947A CN 108399050 B CN108399050 B CN 108399050B
- Authority
- CN
- China
- Prior art keywords
- node
- target
- data
- data block
- identifier
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据处理方法及装置,所述方法包括:当检测到针对数据块的写入操作时,将所述数据块映射至待映射的对象object;当所述object中的数据量达到预设容量时,对所述object进行存储处理。应用本发明实施例可以将小数据块I/O进行合并处理,转化为大数据块I/O落盘,减少资源消耗。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据处理方法及装置。
背景技术
Ceph(分布式存储***)是一种性能优异、高可靠性和高扩展性分布式存储***,广泛应用于各类大中小型存储环境。
Ceph的数据处理流程如下:
1、用户需要存储或访问的data(数据)通过librbd(Library RADOS(Reliable,Autonomous,Distributed Object Store,可靠、自治、分布式对象存储)Block Device,RADOS块存储接口库)映射为Ceph能够处理的object(对象);
2、在data被映射为一个或多个object之后,就需要将每个object独立地映射到一个PG(Placement Group,归置组)中;
3、将作为object的逻辑组织单元的PG映射到数据的实际存储单元OSD。
其中,Ceph利用CRUSH的算法,根据PG ID(标识)得到一组OSD,并将该PG中各object均分别保存到该组OSD中。由于该组OSD中的各OSD可能位于不同的主机节点,因此,需要通过网络将数据传输至相应的OSD上。
然而实践发现,当需要处理的data为地址随机,并且大小为4k的数据块时,每发起一次写操作请求都会对应一次I/O(Input/output,输入/输出)处理流程,此过程中会涉及到地址计算、网络传输、数据落盘等。当存在大量此类data需要进行处理,并且每个data对应不同的object,则会触发大量的I/O处理流程,进而消耗大量的CPU(Center ProcessUnit,中央处理单元)资源。
发明内容
本发明提供一种数据处理方法及装置,以解决现有Ceph***大量地址随机的小数据块会消耗大量的CPU资源的问题。
根据本发明的第一方面,提供一种数据处理方法,应用于分布式对象存储***的存储节点,该方法包括:
当检测到针对数据块的写入操作时,将所述数据块映射至待映射的对象object;其中,所述待映射的object为所分配的用于进行数据块映射,且未进行存储处理的object;所述object的大小大于所述数据块的大小,且为所述数据块大小的整数倍;
当所述object中的数据量达到预设容量时,对所述object进行存储处理。
根据本发明的第二方面,提供一种数据处理装置,应用于分布式对象存储***的存储节点,该装置包括:
检测单元,用于检测针对数据块的读写操作;
映射单元,用于当所述检测单元检测到针对数据块的写入操作时,将所述数据块映射至待映射的对象object;其中,所述待映射的object为所分配的用于进行数据块映射,且未进行存储处理的object;所述object的大小大于所述数据块的大小,且为所述数据块大小的整数倍;
处理单元,用于当所述object中的数据量达到预设容量时,对所述object进行存储处理,并将所分配的下一个object确定为待映射的object。
应用本发明公开的技术方案,当检测到针对数据块的写入操作时,将该数据块映射至待映射的object;当该object中的数据量达到预设容量时,对该object进行存储处理,将小数据块进行合并处理,转化为大数据块落盘,减少了资源消耗。
附图说明
图1是本发明实施例提供的一种基于Vobeject的数据处理框架示意图;
图2是本发明实施例提供的一种三层树形结构的Vobject的示意图;
图3是本发明实施例提供的一种数据处理方法的流程示意图;
图4是本发明实施例提供的一种基于三层树形结构的Vobject的数据处理的流程示意图;
图5是本发明实施例提供的一种数据处理装置的结构示意图;
图6是本发明实施例提供的另一种数据处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,下面先对本发明实施例中基于Vobject(Virtual object,虚拟对象)的数据处理架构进行简单说明。
Ceph中librbd主要功能是实现LUN(Logic Unit Number,逻辑单元号)卷到object的转换,按照LBA(Logical Block Address,逻辑区块地址)地址划分,通过地址换算得到数据块归属的object。
如图1所示,在本发明实施例中,在LUN卷与object之间增加一层Vobject,Vobject采用树形结构进行组织管理,树形结构元数据以及业务数据通过object进行存储。其中,n为LBA地址,也即逻辑区块的编号(该编号从0开始,即第一区块的编号为0(即LBA地址为0)),data n为第(n+1)区块中的数据。
如图2所示,为本发明实施例提供的一种树形结构的Vobject的示意图,如图2所示,Vobject为根节点(Root)、树枝节点(Branch)以及叶子节点(Leaf)的三层树形结构。其中:
Leaf为固定长度的数据块,大小可以设置,同一Vobject中的Leaf由左至右采用连续编号,LUN按照LBA地址采用线性映射的方式与Leaf一一对应。
举例来说,假设LUN大小为400M(逻辑区块大小为4k,LBA地址依次为0~(100k-1)),Vobject的大小为200M,Leaf的大小为4k,则一个LUN对应两个Vobject(如Vobject0和Vobject1),一个Vobject包括50k个Leaf,其编号从左至右可以依次为0~(50k-1)。LUN上LBA地址为0的逻辑区块对应Vobject0中的Leaf0,LBA地址为1的逻辑区块对应Vobject0中的Leaf1…LBA地址为(100k-1)的逻辑区块对应的Vobject1的Leaf(50k-1)。
需要说明的是,在本发明实施例中,设置Leaf大小时,可以以进行数据块写入时数据块的大小为Leaf大小的整数倍的原则进行设置,例如,可以将Leaf大小设置为最小数据块的大小。
Root与Branch用于对Leaf数据块进行组织管理,其大小可与Leaf不同,作为Vobject相应的元数据,Root中包含多个Branch,Branch中包含多个Leaf。
由于Vobject的Leaf是按照LUN的LBA地址排序,所以在进行数据处理时可以快速定位到数据所在的Leaf编号,而树形结构中Leaf的地址是存放在Branch中,即存放在Branch所属object对应的存储空间中,所以还需要通过Leaf编号找到对应的Branch,并从该Branch所属object对应的存储空间中获取相应的地址,依此递归,Branch的地址存放在Root中,即存放在Root所属object对应的存储空间中,通过Branch编号在Root所属object对应的存储空间中获取相应地址,最后得到Leaf的地址并获取数据。
其中,Root地址是根据Vobject编号进行分配的。Vobject中Leaf和Branch的地址由Object编号与Object内部offset(地址偏移量)组成。
为了使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
请参见图3,为本发明实施例提供的一种数据处理方法的流程示意图,其中,该数据处理方法可以应用于分布式对象存储***的存储节点,如Ceph中的存储节点,如图3所示,该数据处理方法可以包括以下步骤:
为便于描述,以下以步骤301~步骤303的执行主体为存储节点为例进行说明。
步骤301、当检测到针对数据块的写入操作时,将该数据块映射至待映射的object;其中,待映射的object为所分配的用于进行数据块映射,且未进行存储处理的object;该object的大小大于数据块的大小,且为数据块大小的整数倍。
本发明实施例中,当需要对LUN卷中的数据块进行数据写入时,存储节点可以确定用于映射数据块的object(本文中称为待映射的object),以及该数据块在该object中的地址偏移量(offset),进而,一方面,存储节点可以将该数据块映射至该object,另一方面,存储节点可以记录该数据块的写入地址与object的标识(即object ID)以及该数据块在该object中的地址偏移量的对应关系。
其中,object ID可以为object的编号,或其它与object的编号唯一对应的字符串。
优选地,在本发明实施例中,对于一次针对数据块的写入操作,待映射的object的数量为1,即当当前用于数据块映射的object进行存储处理之后,才会开始对所分配的下一个object进行数据映射处理。
在本发明其中一个实施例中,记录数据块的写入地址与object的标识以及数据块在object中的地址偏移量的对应关系,可以包括:
根据数据块的写入地址确定数据块在预先设置的Vobject中对应的叶子节点的标识;数据块的大小为叶子节点的大小的整数倍;
将该叶子节点的标识与object的标识以及数据块在object中的地址偏移量的对应关系记录至叶子节点在其对应的Vobject中的上一层节点;其中,该上一层节点为树枝节点或根节点,树枝节点的标识与树枝节点所属object的标识以及树枝节点在其所属object中的地址偏移量记录在上一层树枝节点或根节点中,根节点的数据映射至该根节点所属Vobject对应的目标object中,目标object用于映射根节点的数据。
在该实施例中,以基于三层树形结构(Root-Branch-Leaf)的Vobject进行数据处理为例。
在该实施例中,当需要对LUN卷中的数据块进行数据写入时,存储节点可以根据数据块的写入地址(LBA地址)确定数据块在Vobject中对应的叶子节点的标识(Leaf ID)。
其中,Leaf ID可以为Leaf的编号,或其它与Leaf的编号唯一对应的字符串。LBA地址与Leaf ID的映射的实现可以参见上述实施例中的相关描述,本发明实施例在此不再赘述。
在该实施例中,存储节点确定了数据块的写入地址对应的Leaf ID之后,可以将该Leaf ID与保存数据块的object的标识(即object ID)以及数据块在该object中的offset的对应关系记录到Branch中,即将该对应关系记录到Branch所属object对应的存储空间中。
在该实施例其中一个实施方式中,上述将该叶子节点的标识与object的标识以及数据块在object中的地址偏移量的对应关系记录至叶子节点在其对应的Vobject中的上一层节点,包括:
采用异址更新追加写的策略,将所述叶子节点的标识与所述object的标识以及所述数据块在所述object中的地址偏移量的对应关系记录至所述叶子节点在其对应的Vobject中的上一层节点。
在该实施方式中,当存储节点需要将Leaf ID与Object ID以及数据块在Object中的offset的对应关系记录到Branch中时,可以采用异址更新追加写的策略,即每一次需要将Leaf数据记录到Branch中时,均为Branch分配新的Object,并将Branch数据映射至该新分配的Object中,并将该Branch的标识(Branch ID)与Branch所属object的object ID以及Branch在其所属object中的offset的对应关系更新到Root中,即将该对应关系记录到Root所属object对应的存储空间中。
其中,当存储节点需要将Branch ID与Branch所属object的object ID以及Branch数据在其所属object中的offset的对应关系记录到Root中时,也可以采用异址更新追加写的策略,不过可以不用为Root分配新的对象,而是在同一对象中采用地址追加写,避免覆盖原有Root数据,以保证设备故障后数据一致性。例如,在Root数据更新之前出现断电的情况下,依然可以根据Root数据检索到原有数据,保证数据的一致性。
需要说明的是,当Root对应的对象中的数据量达到预设阈值时,可以在该对象中采用循环覆盖写的方式进行数据写入,由于被覆盖的数据通常为较早写入的数据,基本上属于无效数据,因此,对其进行覆盖写不会造成有效数据丢失。
在该实施方式中,当Root数据更新完成后,之前映射Branch数据的object中映射的该Branch的数据会成为无效数据,存储节点可以在特定条件下对这些无效数据进行垃圾回收,其具体实现在此不做赘述。
其中,Root的数据可以映射至专用于映射Root数据的object(本文中称为目标object)中,目标object可以与Vobject一一对应,也即与Root一一对应。
需要说明的是,在本发明实施例中,也可以在Branch创建时,分配用于映射该Branch的数据的object,该Branch的数据(即该Branch下的Leaf的地址信息)均映射在该object,其具体实现在此不做赘述。
步骤302、当该object中的数据量达到预设容量时,对该object进行存储处理。
本发明实施例中,当当前用于进行数据映射的object中的数据量达到预设容量(可以根据实际场景设定,如object的最大容量)时,调用object操作对该object进行存储处理,并后续再有数据块存在写入操作时,将所分配的下一个object确定为待映射的object,即将数据块映射至所分配的下一个object。
可见,在图3所示的方法流程中,通过按照数据块写入顺序依次将各数据块映射至待映射的object,并当该object中的数据量达到预设容量时,再对object进行存储处理,将小数据块进行合并处理,转化为大数据块落盘,减少了资源消耗。
在本发明其中一个实施例中,上述将数据块映射至待映射的object之后,还可以包括:
当该object中的数据量未达到预设容量,但当前时间与object中第一次映射数据块的时间之间的差值达到预设时长时,对该object进行存储处理。
在该实施例中,为了避免object中的数据量未达到预设容量,而长时间没有新的数据块写入,导致object中的数据一直不能落盘,对数据的安全性造成影响(如设备掉电等原因会造成数据丢失),可以预先设定一个时长(本文中称为预设时长,具体数值可以根据实际场景设定),当有数据块映射至object中时,需要在不超过该预设时长的时间内对该object进行存储处理。
相应地,在该实施例中,当存储节点将数据块映射至新分配的某个object中时,存储节点可以开始计时,当在预设时长内该object中的数据量达到预设容量时,将该object进行存储处理;当到达预设时长,但该object中的数据量未达到预设容量时,仍然对该object进行存储处理。
也即,在该实施例中,存储节点可以在object中的数据量达到预设容量,或,有数据块映射至object之后的时长达到预设时长的情况下,对object进行存储处理。
例如,当存储节点将数据块映射至新分配的某个object中时,存储节点可以启动定时器,该定时器的定时时长为上述预设时长,若该定时器超时前,该object中的数据量达到预设容量,则对该object进行存储处理;若该定时器超时时,该object中的数据量未达到预设容量,则仍对该object进行存储处理。
进一步地,在本发明实施例中,在基于三层树形结构(Root-Branch-Leaf)的Vobject进行数据处理的情况下,当存储节点检测到针对数据的读取操作时,根据该数据的读取地址确定该数据对应的Vobject(本文中称为目标Vobject)中的Leaf(本文中称为目标Leaf)的标识(即目标Leaf ID)。
由于Leaf与Branch之间是逻辑线性映射的,因此,根据Leaf ID可以计算得到其对应的Branch的标识。
相应地,存储节点可以根据目标Leaf ID确定对应的Branch(本文中称为目标Branch)的标识(即目标Branch ID),并根据目标Branch ID,从目标Vobject对应的目标object中获取目标Branch的地址信息;其中,目标Branch的地址信息包括目标Branch所属object的object ID以及在目标Branch在其所属object中的offset。
存储节点获取到目标Branch的地址信息之后,可以根据该目标Branch的地址信息,从目标Branch所属object中获取目标Leaf的地址信息;其中,该目标叶子节点的地址信息包括目标Leaf所属object的object ID以及目标Leaf在其所属object中的offset。
进而,存储节点可以根据目标Leaf的地址信息,从已存储的目标Leaf所属object中读取对应的数据。
应该认识到,在本发明实施例中,通过Vobject记录数据块的写入地址与object的标识以及数据块在object中的地址偏移量仅仅是本发明中的一种具体实现方式,而不是对本发明保护范围的限定,即也可以通过其它方式记录数据块写入地址与object的标识以及数据块在object中的地址偏移量,例如,通过表格的方式记录,其具体实现在此不做赘述。
为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体实例对本发明实施例提供的技术方案进行说明。
请参见图4,为本发明实施例提供的一种基于三层树形结构的Vobject的数据处理的流程示意图,如图4所示,数据处理流程如下:
当需要对LUN卷中大量随机的小数据块(例如4k大小的数据块)(如图4中的针对LBA地址70、8、96、19、68…的小数据块)进行写入操作时,存储节点会将针对这些小数据块写入操作添加至等待区。
其中,在该实施例中,假设小数据块的大小与Leaf的大小相等,object的大小为Leaf的大小的四倍;一个Vobject可以存储140个Leaf(从左至右依次编号为0~139)的数据,一个Branch可以存储70个Leaf的数据。
存储节点根据小数据块的LBA地址(即写入地址)确定各小数据块在Vobject中对应的Leaf ID。
在该实施例中,当LBA地址为70时,其对应的Leaf ID为Leaf 70;当LBA地址为8时,其对应的Leaf ID为Leaf 8;…;当LBA地址为68时,对应的Leaf ID为68;…。
对于等待区中的针对各小数据块写入操作对应的小数据块(下文中称为小数据块70、小数据块8…),存储节点根据先入先出的原则,依次将各小数据块映射至待映射的object。
在该实施例中,假设当前用于数据块映射的object(即待映射object)为dataobject n,则存储节点可以依次将小数据块70(对应的Leaf ID为Leaf 70)、小数据块8(对应的Leaf ID为Leaf 8)、小数据块96(对应的Leaf ID为Leaf 96)和小数据块19(对应的Leaf ID为Leaf 19)映射至data object n,并分别记录Leaf ID与object ID以及数据块在object中的offset的对应关系(即Leaf地址信息)。
假设小数据块70、小数据块8、小数据块96和小数据块19在data object n中的offset分别为offset1、offset2、offset3和offset4,则存储节点记录的Leaf地址信息如下:
Leaf 70-data object n-offset1、Leaf 8-data object n-offset2、Leaf 96-data object n-offset3以及Leaf 19-data object n-offset4。
存储节点采用异址更新追加写策略将Leaf地址信息记录到对应的Branch数据中,并更新Root数据。
其中,Branch数据和Root数据映射在meta(元数据)object中,映射Root数据的mete object的编号为Root所属Vobject的编号。
存储节点将小数据块70、小数据块8、小数据块96和小数据块19映射至dataobject n后,data object n中的数据量达到最大容量(即预设容量为object的最大容量),因此,存储节点调用object操作对data object n进行存储处理,并将所分配的下一个object(data object n+1)确定为待映射的object。
存储节点将小数据块68映射至data object n+1,记录Leaf地址信息:Leaf 68-data object n+1-offset1,采用异址更新追加写策略将Leaf地址信息记录到对应的Branch数据中,并更新Root数据。
由于data object n+1中的数据量未达到最大容量,因此,需要继续等待新的小数据块,并在数据量达到最大容量或当前时间与data object n+1中第一次映射数据块的时间之间的差值达到预设时长时,对data object n+1进行数据存储处理。
当检测到针对数据的读取操作时,根据该数据的读取地址确定该的数据对应的目标Vobject中的目标Leaf的目标Leaf ID。
在该实施例中,假设数据的读取地址为LBA地址70,则存储节点可以确定该LBA地址对应的目标Leaf ID为Leaf 70,并确定Leaf 70对应的目标Branch ID(假设为Branch2)。
进而,存储节点可以根据Branch 2从Vobject1对应的目标object中获取Branch 2的地址信息。
其中,假设LBA地址70对应的Vobject为Vobject1,则存储节点可以在meta object1中查询Branch 2的地址信息,并根据查询到的Branch 2的地址信息获取Branch 2的数据。
存储节点获取到Branch 2的数据后,可以从Branch 2所属object中获取Leaf 70的地址信息(Leaf 70-data object n-offset1),并根据该地址信息从data object n中获取对应的数据块。
通过以上描述可以看出,在本发明实施例提供的技术方案中,当检测到针对数据块的写入操作时,将该数据块映射至待映射的object;当该object中的数据量达到预设容量时,对该object进行存储处理,将小数据块进行合并处理,转化为大数据块落盘,减少了资源消耗。
请参见图5,为本发明实施例提供一种数据处理装置的结构示意图,其中,该装置可以应用于上述方法实施例中的存储节点,如图5所示,该装置可以包括:
检测单元510,用于检测针对数据块的读写操作;
映射单元520,用于当所述检测单元检测到针对数据块的写入操作时,将所述数据块映射至待映射的对象object;其中,所述待映射的object为所分配的用于进行数据块映射,且未进行存储处理的object;所述object的大小大于所述数据块的大小,且为所述数据块大小的整数倍;
处理单元530,用于当所述object中的数据量达到预设容量时,对所述object进行存储处理,并将所分配的下一个object确定为待映射的object。
在可选实施例中,所述处理单元540,还用于当所述object中的数据量未达到所述预设容量,但当前时间与所述object中第一次映射数据块的时间之间的差值达到预设时长时,对所述object进行存储处理。
请一并参见图6,为本发明实施例提供的另一种数据处理装置的结构示意图,如图6所示,在图5所示数据处理装置的基础上,图6所示数据处理装置还可以包括:
确定单元540,用于根据所述数据块的写入地址确定所述数据块在预先设置的虚拟对象Vobject中对应的叶子节点的标识;其中,所述数据块的大小为所述叶子节点的大小的整数倍;
记录单元550,用于将所述叶子节点的标识与所述object的标识以及所述数据块在所述object中的地址偏移量的对应关系记录至所述叶子节点在其对应的Vobject中的上一层节点;其中,所述上一层节点为树枝节点或根节点,树枝节点的标识与树枝节点所属object的标识以及树枝节点在其所属object中的地址偏移量记录在上一层树枝节点或根节点中,根节点的数据映射至该根节点所属Vobject对应的目标object中,所述目标object用于映射根节点的数据。
在可选实施例中,所述记录单元550,具体用于采用异址更新追加写的策略,将所述叶子节点的标识与所述object的标识以及所述数据块在所述object中的地址偏移量的对应关系记录至所述叶子节点在其对应的Vobject中的上一层节点。
在可选实施例中,Vobiect为根节点、树枝节点以及叶子节点的三层树形结构;
所述确定单元540,还用于当所述检测单元检测到针对数据的读取操作时,根据所述数据的读取地址确定所述读取的数据对应目标Vobject中的目标叶子节点的标识;
所述确定单元540,还用于对于任一目标叶子节点,根据所述目标叶子节点的标识确定对应的目标树枝节点的标识;
所述处理单元530,还用于根据所述目标树枝节点的标识,从所述目标Vobject对应的目标object中获取所述目标树枝节点的地址信息;所述目标树枝节点的地址信息包括所述目标树枝节点所属object的标识以及所述目标树枝节点在其所属object中的地址偏移量;
所述处理单元530,还用于根据所述目标树枝节点的地址信息,从所述目标树枝节点所属object中获取所述目标叶子节点的地址信息;所述目标叶子节点的地址信息包括所述目标叶子节点所属的object的标识以及所述目标叶子节点在其所属object中的地址偏移量;
所述处理单元530,还用于根据所述目标叶子节点的地址信息,从已存储的所述目标叶子节点所属object中读取所述数据。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,当检测到针对数据块的写入操作时,将该数据块映射至待映射的object;当该object中的数据量达到预设容量时,对该object进行存储处理,将小数据块进行合并处理,转化为大数据块落盘,减少了资源消耗。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据处理方法,应用于分布式对象存储***的存储节点,其特征在于,所述方法包括:
当检测到针对数据块的写入操作时,将所述数据块映射至待映射的对象object;其中,所述待映射的object为所分配的用于进行数据块映射,且未进行存储处理的object;所述object的大小大于所述数据块的大小,且为所述数据块大小的整数倍;
当所述object中的数据量达到预设容量时,对所述object进行存储处理。
2.根据权利要求1所述的方法,其特征在于,所述将所述数据块映射至待映射的对象object之后,还包括:
当所述object中的数据量未达到所述预设容量,但当前时间与所述object中第一次映射数据块的时间之间的差值达到预设时长时,对所述object进行存储处理。
3.根据权利要求1所述的方法,其特征在于,所述将所述数据块映射至待映射的object之后,还包括:
根据所述数据块的写入地址确定所述数据块在预先设置的虚拟对象Vobject中对应的叶子节点的标识;其中,所述数据块的大小为所述叶子节点的大小的整数倍;
将所述叶子节点的标识与所述object的标识以及所述数据块在所述object中的地址偏移量的对应关系记录至所述叶子节点在其对应的Vobject中的上一层节点;其中,所述上一层节点为树枝节点或根节点,树枝节点的标识与树枝节点所属object的标识以及树枝节点在其所属object中的地址偏移量记录在上一层树枝节点或根节点中,根节点的数据映射至该根节点所属Vobject对应的目标object中,所述目标object用于映射根节点的数据。
4.根据权利要求3所述的方法,其特征在于,所述将所述叶子节点的标识与所述object的标识以及所述数据块在所述object中的地址偏移量的对应关系记录至所述叶子节点在其对应的Vobject中的上一层节点,包括:
采用异址更新追加写的策略,将所述叶子节点的标识与所述object的标识以及所述数据块在所述object中的地址偏移量的对应关系记录至所述叶子节点在其对应的Vobject中的上一层节点。
5.根据权利要求3所述的方法,其特征在于,Vobiect为根节点、树枝节点以及叶子节点的三层树形结构;
所述方法还包括:
当检测到针对数据的读取操作时,根据所述数据的读取地址确定所述数据对应目标Vobject中的目标叶子节点的标识;
根据所述目标叶子节点的标识确定对应的目标树枝节点的标识;
根据所述目标树枝节点的标识,从所述目标Vobject对应的目标object中获取所述目标树枝节点的地址信息;所述目标树枝节点的地址信息包括所述目标树枝节点所属object的标识以及所述目标树枝节点在其所属object中的地址偏移量;
根据所述目标树枝节点的地址信息,从所述目标树枝节点所属object中获取所述目标叶子节点的地址信息;所述目标叶子节点的地址信息包括所述目标叶子节点所属的object的标识以及所述目标叶子节点在其所属object中的地址偏移量;
根据所述目标叶子节点的地址信息,从已存储的所述目标叶子节点所属object中读取所述数据。
6.一种数据处理装置,应用于分布式对象存储***的存储节点,其特征在于,所述装置包括:
检测单元,用于检测针对数据块的读写操作;
映射单元,用于当所述检测单元检测到针对数据块的写入操作时,将所述数据块映射至待映射的对象object;其中,所述待映射的object为所分配的用于进行数据块映射,且未进行存储处理的object;所述object的大小大于所述数据块的大小,且为所述数据块大小的整数倍;
处理单元,用于当所述object中的数据量达到预设容量时,对所述object进行存储处理。
7.根据权利要求6所述的装置,其特征在于,
所述处理单元,还用于当所述object中的数据量未达到所述预设容量,但当前时间与所述object中第一次映射数据块的时间之间的差值达到预设时长时,对所述object进行存储处理。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
确定单元,用于根据所述数据块的写入地址确定所述数据块在预先设置的虚拟对象Vobject中对应的叶子节点的标识;其中,所述数据块的大小为所述叶子节点的大小的整数倍;
记录单元,用于将所述叶子节点的标识与所述object的标识以及所述数据块在所述object中的地址偏移量的对应关系记录至所述叶子节点在其对应的Vobject中的上一层节点;其中,所述上一层节点为树枝节点或根节点,树枝节点的标识与树枝节点所属object的标识以及树枝节点在其所属object中的地址偏移量记录在上一层树枝节点或根节点中,根节点的数据映射至该根节点所属Vobject对应的目标object中,所述目标object用于映射根节点的数据。
9.根据权利要求8所述的装置,其特征在于,
所述记录单元,具体用于采用异址更新追加写的策略,将所述叶子节点的标识与所述object的标识以及所述数据块在所述object中的地址偏移量的对应关系记录至所述叶子节点在其对应的Vobject中的上一层节点。
10.根据权利要求8所述的装置,其特征在于,Vobiect为根节点、树枝节点以及叶子节点的三层树形结构;
所述确定单元,还用于当所述检测单元检测到针对数据的读取操作时,根据所述数据的读取地址确定所述读取的数据对应目标Vobject中的目标叶子节点的标识;
所述确定单元,还用于根据所述目标叶子节点的标识确定对应的目标树枝节点的标识;
所述处理单元,还用于根据所述目标树枝节点的标识,从所述目标Vobject对应的目标object中获取所述目标树枝节点的地址信息;所述目标树枝节点的地址信息包括所述目标树枝节点所属object的标识以及所述目标树枝节点在其所属object中的地址偏移量;
所述处理单元,还用于根据所述目标树枝节点的地址信息,从所述目标树枝节点所属object中获取所述目标叶子节点的地址信息;所述目标叶子节点的地址信息包括所述目标叶子节点所属的object的标识以及所述目标叶子节点在其所属object中的地址偏移量;
所述处理单元,还用于根据所述目标叶子节点的地址信息,从已存储的所述目标叶子节点所属object中读取所述数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810105947.7A CN108399050B (zh) | 2018-02-02 | 2018-02-02 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810105947.7A CN108399050B (zh) | 2018-02-02 | 2018-02-02 | 一种数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108399050A CN108399050A (zh) | 2018-08-14 |
CN108399050B true CN108399050B (zh) | 2021-06-29 |
Family
ID=63096136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810105947.7A Active CN108399050B (zh) | 2018-02-02 | 2018-02-02 | 一种数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108399050B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871355B (zh) * | 2019-01-23 | 2021-04-27 | 杭州宏杉科技股份有限公司 | 一种快照元数据存储方法、装置及设备、介质 |
CN110502611B (zh) * | 2019-08-01 | 2022-04-12 | 武汉虹信科技发展有限责任公司 | 字符串检索方法和装置 |
CN110673798B (zh) * | 2019-09-20 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 一种存储***及其io落盘方法和装置 |
CN111241036B (zh) * | 2020-01-21 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种异步io数据处理方法、装置、设备及介质 |
CN111338567B (zh) * | 2020-02-13 | 2021-09-17 | 苏州浪潮智能科技有限公司 | 一种基于Protocol Buffer的镜像缓存方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103366016A (zh) * | 2013-08-01 | 2013-10-23 | 南京大学 | 基于hdfs的电子文件集中存储及优化方法 |
CN103995855A (zh) * | 2014-05-14 | 2014-08-20 | 华为技术有限公司 | 存储数据的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4299555B2 (ja) * | 2002-03-15 | 2009-07-22 | 富士通株式会社 | キャッシュ制御プログラム |
-
2018
- 2018-02-02 CN CN201810105947.7A patent/CN108399050B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103366016A (zh) * | 2013-08-01 | 2013-10-23 | 南京大学 | 基于hdfs的电子文件集中存储及优化方法 |
CN103995855A (zh) * | 2014-05-14 | 2014-08-20 | 华为技术有限公司 | 存储数据的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108399050A (zh) | 2018-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399050B (zh) | 一种数据处理方法及装置 | |
US8909887B1 (en) | Selective defragmentation based on IO hot spots | |
US9747318B2 (en) | Retrieving data in a storage system using thin provisioning | |
CN108733761B (zh) | 一种数据处理方法装置及*** | |
US8799601B1 (en) | Techniques for managing deduplication based on recently written extents | |
CN104395904B (zh) | 高效的数据对象存储和检索 | |
US20060212495A1 (en) | Method and system for storing data into a database | |
WO2016086819A1 (zh) | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 | |
JP5129156B2 (ja) | アクセス装置、および、ライトワンス記録システム | |
CN103514249B (zh) | 一种数据自精简方法和***及存储装置 | |
US9305112B2 (en) | Select pages implementing leaf nodes and internal nodes of a data set index for reuse | |
CN103226965B (zh) | 基于时间位图的音视频数据存取方法 | |
KR20130108298A (ko) | 폐기가능 파일들의 카드-기반 관리 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
CN104461384B (zh) | 一种数据写入方法及存储设备 | |
CN110147203A (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN108304142A (zh) | 一种数据管理方法和装置 | |
CN111435286B (zh) | 一种数据存储方法、装置和*** | |
US8589652B2 (en) | Reorganization of a fragmented directory of a storage data structure comprised of the fragmented directory and members | |
CN105528344A (zh) | 确定存储设备中被读取数据所属媒体信息的方法及装置 | |
US20220374394A1 (en) | Method and system for identifying garbage data, electronic device, and storage medium | |
CN102063326B (zh) | 基于虚拟化的文件***容量的测试***和方法 | |
KR101465426B1 (ko) | 익스텐트 매핑 플래시 디바이스 | |
US9354820B2 (en) | VSAM data set tier management | |
CN110764695A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |