CN115827508B - 一种数据处理方法、***、设备以及存储介质 - Google Patents

一种数据处理方法、***、设备以及存储介质 Download PDF

Info

Publication number
CN115827508B
CN115827508B CN202310026962.3A CN202310026962A CN115827508B CN 115827508 B CN115827508 B CN 115827508B CN 202310026962 A CN202310026962 A CN 202310026962A CN 115827508 B CN115827508 B CN 115827508B
Authority
CN
China
Prior art keywords
read
data
reading
data object
response
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
CN202310026962.3A
Other languages
English (en)
Other versions
CN115827508A (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310026962.3A priority Critical patent/CN115827508B/zh
Publication of CN115827508A publication Critical patent/CN115827508A/zh
Application granted granted Critical
Publication of CN115827508B publication Critical patent/CN115827508B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据处理方法,包括在bluestore层执行以下步骤:响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数;响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据。根据所述读IO中的地址长度从所述剩余所有数据中筛选与所述读IO对应的待读取数据并返回上层,以及将其余数据放入所述bluestore层的缓存中。本发明还公开了一种***、设备以及存储介质。本发明提出的方案能够提高小IO顺序读性能,减少对盘的频繁访问达到延长使用寿命同时降低功耗的功效,降低硬件成本,提升产品的竞争力。

Description

一种数据处理方法、***、设备以及存储介质
技术领域
本发明涉及存储领域,具体涉及一种数据处理方法、***、设备以及存储介质。
背景技术
随着信息技术的不断发展,数据作为一种宝贵资源逐渐被人们重视,如何快速处理数据资源并得到预期结果成为由资源到资产转变的关键问题之一。人们在工作生活中的各种活动都会产生数据,收集这些数据再通过分析处理能够获得很有用信息,实现有资源到资产的转化,从而催化了大数据、高性能计算的高速发展。数据存储作为数据资源的核心要素之一也迎来了高速发展的时期。传统的网络存储***采用集中的存储服务器存放所有数据,存储服务器成为***性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储***采用可扩展的***结构,不但提高了***的可靠性、可用性和存取效率,还易于扩展,从而被越来越多的企业单位接受认可。分布式存储***一般有3到N个节点构成,用以提供高性能、海量数据存储。
分布式存储在块场景使用过程中,有些应用场景的数据访问方式是小IO顺序读。同一个对象的顺序小IO读操作相当于把并行处理改变为串行处理,并发量降低,同时读请求在读盘时消耗的时间较多,因此顺序小IO读的性能不高,不能完全发挥出来分布存储的性能优势。业界一般通过增加非易失性缓存或者更高性能的CPU来处理此类问题,而这需要增加额外硬件和升级CPU性能,又增加了成本。
发明内容
有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种数据处理方法,包括在bluestore层执行以下步骤:
响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数;
响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据;
根据所述读IO中的地址长度从所述剩余所有数据中筛选与所述读IO对应的待读取数据并返回上层,以及将其余数据放入所述bluestore层的缓存中。
在一些实施例中,还包括:
在每一个数据对象的元数据中增加用于记录被读取的次数的访问计数器以及用于记录读取时间的时间戳记录器。
在一些实施例中,响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数,进一步包括:
响应于接收到读IO,判断是否能够在缓存中命中所述待读取数据;
响应于能够在缓存中命中所述待读取数据,直接将所述待读取数据返回上层。
在一些实施例中,还包括:
响应于在缓存中没有命中所述待读取数据,读取所述对应的数据对象对应的元数据中的访问计数器和时间戳记录器。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
响应于访问计数器为0,则将所述对应的元数据中的访问计数器置为1并不开启预读。
在一些实施例中,还包括:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
响应于访问计数器不为0,获取所述对应的元数据中的时间戳记录器并与当前时间进行对比;
响应于两者差值大于所述预设时间段,将所述对应的数据对象的访问计数器置为1并不开启预读。
在一些实施例中,还包括:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,还包括:
响应于两者差值小于所述预设时间段,将所述对应的数据对象的访问计数器加1。
在一些实施例中,还包括:
判断所述对应的数据对象的访问计数器是否不小于阈值;
响应于不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据。
在一些实施例中,还包括:
响应于小于阈值,不开启预读并直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
获取并解析所述对应的数据对象的对象名以得到对象编号和存储卷名;
根据所述存储卷名确定对应的存储池并获取存储池中PG的数量;
根据所述对象编号加上所述PG的数量确定下一个数据对象的编号,进而确定下一个数据对象的名。
在一些实施例中,还包括:
读取所述下一个数据对象中所有数据并放入所述bluestore层的缓存中。
在一些实施例中,还包括:
获取预设的每次预读数据的大小;
判断所述对应的数据对象中剩余所有数据是否小于所述每次预读数据的大小;
响应于所述对应的数据对象中剩余所有数据小于所述每次预读数据的大小,从所述下一个数据对象中读取相应大小的数据以使预读的数据达到所述每次预读数据的大小。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种数据处理***,包括:
获取模块,配置为响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数;
预读模块,配置为响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据;
返回模块,配置为根据所述读IO中的地址长度从所述剩余所有数据中筛选与所述读IO对应的待读取数据并返回上层,以及将其余数据放入所述bluestore层的缓存中。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时执行如上所述的任一种数据处理方法的步骤。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种数据处理方法的步骤。
本发明具有以下有益技术效果之一:本发明提出的方案通过在bluestore层识别阈值时间内对同一个对象读的次数,对判定为热数据的对象扩大读取数据的范围,并将读到的数据放入内存缓存中,实现数据预读,将多次小IO读转为大IO读,还能智能识别、预读下一个对象的数据到内存中,使后续对该对象的顺序读直接从内存中读数据,避免每次都从盘上读取数据,降低每次读的时延,从而达到提升小IO顺序读性能的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明的实施例提供的数据处理方法的流程示意图;
图2为本发明的实施例提供的数据处理***的结构示意图;
图3为本发明的实施例提供的计算机设备的结构示意图;
图4为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
在本发明的实施例中,分布式块存储是一种扩展性的存储架构。能够实现跨设备数据分发,能够多个服务器共享负载的存储架构。在物理机与虚拟机应用中,块存储可作为一种长期存储设备来使用,一般包含备份和快照等高级服务。
对象:存储数据都会被分割成多个对象,每个对象都有一个对象id,每个对象的大小是可以设置的,默认是4MB,对象可以看成是分布式存储的最小存储单元。
OSD:英文全称是Object Storage Device,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等。一般情况下一块硬盘对应一个OSD,由OSD来对硬盘存储进行管理,当然一个分区也可以成为一个OSD。
Bluestore:分布式存储用来管理底层数据的一种对象存储引擎。
Onode:记录对象元数据信息的数据结构,每个对象对应一个onode。
小IO:定义小于预设大小(例如128KB)的IO读为小IO读。
PG:PG是一些对象的集合,是组成存储池的基本单位,存储池的各种特性,诸如多副本和纠删码等数据备份策略,最终要依托于PG实现。
Shard(分片):一个PG所分布的OSD集合称为一个shard集合,集合中每个osd称为一个shard,有各自的编号,从0开始,根据数据备份策略不同,shard集合中的osd个数不同。比如三副本备份策略中,一个shard集合包含3个osd,shard编号为0、1、2。
卷:块存储中数据以块的形式存储在卷里,卷会挂接到节点上。它可以为应用程序提供更大的存储容量,并且可靠性和性能都更高。这些块形成的卷会映射到操作***中,并被文件***层控制。
块存储中的对象名:块存储中对象大小一般为4MB,一个卷按照4MB划分若干个对象,这些对象按照卷内部偏移从0开始编号,对象名由两部分组成:卷名和对象编号。
根据本发明的一个方面,本发明的实施例提出一种数据处理方法,如图1所示,其可以包括在bluestore层执行以下步骤:
S1,响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数;
S2,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据;
S3,根据所述读IO中的地址长度从所述剩余所有数据中筛选与所述读IO对应的待读取数据并返回上层,以及将其余数据放入所述bluestore层的缓存中。
本发明提出的方案能够提高小IO顺序读性能,减少对盘的频繁访问达到延长使用寿命同时降低功耗的功效,降低硬件成本,提升产品的竞争力。
在一些实施例中,还包括:
在每一个数据对象的元数据中增加用于记录被读取的次数的访问计数器以及用于记录读取时间的时间戳记录器。
具体的,可以在记录对象元数据信息的数据结构中增加一个访问计数器和一个时间戳记录器,用来统计一段时间内该对象被小IO读访问的次数和时间。
在一些实施例中,响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数,进一步包括:
响应于接收到读IO,判断是否能够在缓存中命中所述待读取数据;
响应于能够在缓存中命中所述待读取数据,直接将所述待读取数据返回上层。
具体的,Bluestore在接收到读请求后,先从内存缓存中尝试读取数据,如果在内存缓存中命中,则直接返回数据到上层;如果没有命中,则从盘上读取数据。
在一些实施例中,还包括:
响应于在缓存中没有命中所述待读取数据,读取所述对应的数据对象对应的元数据中的访问计数器和时间戳记录器。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
响应于访问计数器为0,则将所述对应的元数据中的访问计数器置为1并不开启预读。
在一些实施例中,还包括:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
响应于访问计数器不为0,获取所述对应的元数据中的时间戳记录器并与当前时间进行对比;
响应于两者差值大于所述预设时间段,将所述对应的数据对象的访问计数器置为1并不开启预读。
在一些实施例中,还包括:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,还包括:
响应于两者差值小于所述预设时间段,将所述对应的数据对象的访问计数器加1。
在一些实施例中,还包括:
判断所述对应的数据对象的访问计数器是否不小于阈值;
响应于不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据。
在一些实施例中,还包括:
响应于小于阈值,不开启预读并直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
具体的,在预设时间段(例如3秒)内,同一个对象被小IO从盘上读数据次数累计达到阈值(例如3次)时,则开启预读。
当数据对象被第一次读取时,此时计数器值为0,因此将给对象的对应的计数器加1,并更新当前的时间戳,此时不执行预读操作。
若数据对象不是被第一次读取,此时计数器不为0,则比对记录时间戳与当前时间,若超过预设时间段则计数器置为1,并更新当前时间戳,不执行预读操作;若不超过预设时间段秒,则计数器加1,并更新当前时间戳,同时判断计数器值是否达到阈值,若达到则开启预读,否则不开启预读。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
获取并解析所述对应的数据对象的对象名以得到对象编号和存储卷名;
根据所述存储卷名确定对应的存储池并获取存储池中PG的数量;
根据所述对象编号加上所述PG的数量确定下一个数据对象的编号,进而确定下一个数据对象的名。
在一些实施例中,还包括:
读取所述下一个数据对象中所有数据并放入所述bluestore层的缓存中。
具体的,开启预读后,基于读IO的读位置(offset),将读IO读取长度由length扩大范围到该对象剩余全部数据。
并且在开启预读后,还可以根据当前对象名自动识别本PG上接下来要读的下一个对象,并在本shard上对其预读该对象的全部数据。具体为:解析对象名,获取卷名和对象编号,当前对象编号加上本存储池的PG个数即为本shard上下一个对象的编号,如此即获得下一个对象的对象名。根据获取到的对象名预读整对像的数据。
在一些实施例中,还包括:
获取预设的每次预读数据的大小;
判断所述对应的数据对象中剩余所有数据是否小于所述每次预读数据的大小;
响应于所述对应的数据对象中剩余所有数据小于所述每次预读数据的大小,从所述下一个数据对象中读取相应大小的数据以使预读的数据达到所述每次预读数据的大小。
具体的,在一些场景中,可以不将下一个对象的所有数据均进行预读,例如可以设置每次预读数据的大小,若待读取数据所在的数据对象中剩余所有数据小于所述每次预读数据的大小,则从所述下一个数据对象中读取相应大小的数据以使预读的数据达到所述每次预读数据的大小。
在一些实施例中,Bluestore本地读取本对象剩余数据后,将length长度的数据返回到上层确保数据一致性,并把这剩余数据放入bluestore缓存中。当Bluestore缓存数据到一定阈值时,对最早加入缓存的数据进行trim,以释放缓存空间。
需要说明的是,Bluestore层的预读不被上层感知。
本发明提出的方案通过在bluestore层识别阈值时间内对同一个对象读的次数,对判定为热数据的对象扩大读取数据的范围,并将读到的数据放入内存缓存中,实现数据预读,将多次小IO读转为大IO读,还能智能识别、预读下一个对象的数据到内存中,使后续对该对象的顺序读直接从内存中读数据,避免每次都从盘上读取数据,降低每次读的时延,从而达到提升小IO顺序读性能的目的。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种数据处理***400,如图2所示,包括:
获取模块401,配置为响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数;
预读模块402,配置为响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据;
返回模块403,配置为根据所述读IO中的地址长度从所述剩余所有数据中筛选与所述读IO对应的待读取数据并返回上层,以及将其余数据放入所述bluestore层的缓存中。
在一些实施例中,还包括元数据模块,配置为:
在每一个数据对象的元数据中增加用于记录被读取的次数的访问计数器以及用于记录读取时间的时间戳记录器。
在一些实施例中,获取模块401还配置为:
响应于接收到读IO,判断是否能够在缓存中命中所述待读取数据;
响应于能够在缓存中命中所述待读取数据,直接将所述待读取数据返回上层。
在一些实施例中,获取模块401还配置为:
响应于在缓存中没有命中所述待读取数据,读取所述对应的数据对象对应的元数据中的访问计数器和时间戳记录器。
在一些实施例中,获取模块401还配置为:
响应于访问计数器为0,则将所述对应的元数据中的访问计数器置为1并不开启预读。
在一些实施例中,获取模块401还配置为:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,获取模块401还配置为:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,预读模块402还配置为:
响应于访问计数器不为0,获取所述对应的元数据中的时间戳记录器并与当前时间进行对比;
响应于两者差值大于所述预设时间段,将所述对应的数据对象的访问计数器置为1并不开启预读。
在一些实施例中,预读模块402还配置为:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,预读模块402还配置为:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,预读模块402还配置为:
响应于两者差值小于所述预设时间段,将所述对应的数据对象的访问计数器加1。
在一些实施例中,预读模块402还配置为:
判断所述对应的数据对象的访问计数器是否不小于阈值;
响应于不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据。
在一些实施例中,预读模块402还配置为:
响应于小于阈值,不开启预读并直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,预读模块402还配置为:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,预读模块402还配置为:
获取并解析所述对应的数据对象的对象名以得到对象编号和存储卷名;
根据所述存储卷名确定对应的存储池并获取存储池中PG的数量;
根据所述对象编号加上所述PG的数量确定下一个数据对象的编号,进而确定下一个数据对象的名。
在一些实施例中,预读模块402还配置为:
读取所述下一个数据对象中所有数据并放入所述bluestore层的缓存中。
在一些实施例中,预读模块402还配置为:
获取预设的每次预读数据的大小;
判断所述对应的数据对象中剩余所有数据是否小于所述每次预读数据的大小;
响应于所述对应的数据对象中剩余所有数据小于所述每次预读数据的大小,从所述下一个数据对象中读取相应大小的数据以使预读的数据达到所述每次预读数据的大小。
本发明提出的方案通过在bluestore层识别阈值时间内对同一个对象读的次数,对判定为热数据的对象扩大读取数据的范围,并将读到的数据放入内存缓存中,实现数据预读,将多次小IO读转为大IO读,还能智能识别、预读下一个对象的数据到内存中,使后续对该对象的顺序读直接从内存中读数据,避免每次都从盘上读取数据,降低每次读的时延,从而达到提升小IO顺序读性能的目的。
基于同一发明构思,根据本发明的另一个方面,如图3所示,本发明的实施例还提供了一种计算机设备501,包括:
至少一个处理器520;以及
存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行以下步骤:
响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数;
响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据。
根据所述读IO中的地址长度从所述剩余所有数据中筛选与所述读IO对应的待读取数据并返回上层,以及将其余数据放入所述bluestore层的缓存中。
在一些实施例中,还包括:
在每一个数据对象的元数据中增加用于记录被读取的次数的访问计数器以及用于记录读取时间的时间戳记录器。
在一些实施例中,响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数,进一步包括:
响应于接收到读IO,判断是否能够在缓存中命中所述待读取数据;
响应于能够在缓存中命中所述待读取数据,直接将所述待读取数据返回上层。
在一些实施例中,还包括:
响应于在缓存中没有命中所述待读取数据,读取所述对应的数据对象对应的元数据中的访问计数器和时间戳记录器。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
响应于访问计数器为0,则将所述对应的元数据中的访问计数器置为1并不开启预读。
在一些实施例中,还包括:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
响应于访问计数器不为0,获取所述对应的元数据中的时间戳记录器并与当前时间进行对比;
响应于两者差值大于所述预设时间段,将所述对应的数据对象的访问计数器置为1并不开启预读。
在一些实施例中,还包括:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,还包括:
响应于两者差值小于所述预设时间段,将所述对应的数据对象的访问计数器加1。
在一些实施例中,还包括:
判断所述对应的数据对象的访问计数器是否不小于阈值;
响应于不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据。
在一些实施例中,还包括:
响应于小于阈值,不开启预读并直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
获取并解析所述对应的数据对象的对象名以得到对象编号和存储卷名;
根据所述存储卷名确定对应的存储池并获取存储池中PG的数量;
根据所述对象编号加上所述PG的数量确定下一个数据对象的编号,进而确定下一个数据对象的名。
在一些实施例中,还包括:
读取所述下一个数据对象中所有数据并放入所述bluestore层的缓存中。
在一些实施例中,还包括:
获取预设的每次预读数据的大小;
判断所述对应的数据对象中剩余所有数据是否小于所述每次预读数据的大小;
响应于所述对应的数据对象中剩余所有数据小于所述每次预读数据的大小,从所述下一个数据对象中读取相应大小的数据以使预读的数据达到所述每次预读数据的大小。
基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序610,计算机程序610被处理器执行时执行以下步骤:
响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数;
响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据。
根据所述读IO中的地址长度从所述剩余所有数据中筛选与所述读IO对应的待读取数据并返回上层,以及将其余数据放入所述bluestore层的缓存中。
在一些实施例中,还包括:
在每一个数据对象的元数据中增加用于记录被读取的次数的访问计数器以及用于记录读取时间的时间戳记录器。
在一些实施例中,响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数,进一步包括:
响应于接收到读IO,判断是否能够在缓存中命中所述待读取数据;
响应于能够在缓存中命中所述待读取数据,直接将所述待读取数据返回上层。
在一些实施例中,还包括:
响应于在缓存中没有命中所述待读取数据,读取所述对应的数据对象对应的元数据中的访问计数器和时间戳记录器。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
响应于访问计数器为0,则将所述对应的元数据中的访问计数器置为1并不开启预读。
在一些实施例中,还包括:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
响应于访问计数器不为0,获取所述对应的元数据中的时间戳记录器并与当前时间进行对比;
响应于两者差值大于所述预设时间段,将所述对应的数据对象的访问计数器置为1并不开启预读。
在一些实施例中,还包括:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,还包括:
响应于两者差值小于所述预设时间段,将所述对应的数据对象的访问计数器加1。
在一些实施例中,还包括:
判断所述对应的数据对象的访问计数器是否不小于阈值;
响应于不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据。
在一些实施例中,还包括:
响应于小于阈值,不开启预读并直接从所述对应的数据对象中读取所述待读取数据并返回上层。
在一些实施例中,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
在一些实施例中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
获取并解析所述对应的数据对象的对象名以得到对象编号和存储卷名;
根据所述存储卷名确定对应的存储池并获取存储池中PG的数量;
根据所述对象编号加上所述PG的数量确定下一个数据对象的编号,进而确定下一个数据对象的名。
在一些实施例中,还包括:
读取所述下一个数据对象中所有数据并放入所述bluestore层的缓存中。
在一些实施例中,还包括:
获取预设的每次预读数据的大小;
判断所述对应的数据对象中剩余所有数据是否小于所述每次预读数据的大小;
响应于所述对应的数据对象中剩余所有数据小于所述每次预读数据的大小,从所述下一个数据对象中读取相应大小的数据以使预读的数据达到所述每次预读数据的大小。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (20)

1.一种数据处理方法,其特征在于,包括在bluestore层执行以下步骤:
响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数,其中,所述读IO对应的待读取数据的大小小于预设大小;
响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据;
根据所述读IO中的地址长度从所述剩余所有数据中筛选与所述读IO对应的待读取数据并返回上层,以及将其余数据放入所述bluestore层的缓存中;
其中,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
获取并解析所述对应的数据对象的对象名以得到对象编号和存储卷名;
根据所述存储卷名确定对应的存储池并获取存储池中PG的数量;
根据所述对象编号加上所述PG的数量确定下一个数据对象的编号,进而确定下一个数据对象的名;
读取所述下一个数据对象中所有数据并放入所述bluestore层的缓存中。
2.如权利要求1所述的方法,其特征在于,还包括:
在每一个数据对象的元数据中增加用于记录被读取的次数的访问计数器以及用于记录读取时间的时间戳记录器。
3.如权利要求2所述的方法,其特征在于,响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数,进一步包括:
响应于接收到读IO,判断是否能够在缓存中命中所述待读取数据;
响应于能够在缓存中命中所述待读取数据,直接将所述待读取数据返回上层。
4.如权利要求3所述的方法,其特征在于,还包括:
响应于在缓存中没有命中所述待读取数据,读取所述对应的数据对象对应的元数据中的访问计数器和时间戳记录器。
5.如权利要求4所述的方法,其特征在于,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
响应于访问计数器为0,则将所述对应的元数据中的访问计数器置为1并不开启预读。
6.如权利要求5所述的方法,其特征在于,还包括:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
7.如权利要求5所述的方法,其特征在于,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
8.如权利要求4所述的方法,其特征在于,响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据,进一步包括:
响应于访问计数器不为0,获取所述对应的元数据中的时间戳记录器并与当前时间进行对比;
响应于两者差值大于所述预设时间段,将所述对应的数据对象的访问计数器置为1并不开启预读。
9.如权利要求8所述的方法,其特征在于,还包括:
直接从所述对应的数据对象中读取所述待读取数据并返回上层。
10.如权利要求8所述的方法,其特征在于,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
11.如权利要求8所述的方法,其特征在于,还包括:
响应于两者差值小于所述预设时间段,将所述对应的数据对象的访问计数器加1。
12.如权利要求11所述的方法,其特征在于,还包括:
判断所述对应的数据对象的访问计数器是否不小于阈值;
响应于不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据。
13.如权利要求12所述的方法,其特征在于,还包括:
响应于小于阈值,不开启预读并直接从所述对应的数据对象中读取所述待读取数据并返回上层。
14.如权利要求11或13所述的方法,其特征在于,还包括:
根据当前时间更新所述对应的元数据中的时间戳记录器。
15.如权利要求1所述的方法,其特征在于,还包括:
获取预设的每次预读数据的大小;
判断所述对应的数据对象中剩余所有数据是否小于所述每次预读数据的大小;
响应于所述对应的数据对象中剩余所有数据小于所述每次预读数据的大小,从所述下一个数据对象中读取相应大小的数据以使预读的数据达到所述每次预读数据的大小。
16.如权利要求1所述的方法,其特征在于,还包括:
对所述bluestore层的缓存中的数据进行回收。
17.如权利要求16所述的方法,其特征在于,对所述bluestore层的缓存中的数据进行回收,进一步包括:
响应于所述bluestore层的缓存中的数据量达到预设阈值,对最早加入缓存的数据进行回收。
18.一种数据处理***,其特征在于,包括:
获取模块,配置为响应于接收到读IO,获取所述读IO对应的数据对象在预设时间段内被读取的次数,其中,所述读IO对应的待读取数据的大小小于预设大小;
预读模块,配置为响应于所述被读取的次数不小于阈值,开启预读并根据所述读IO中的地址偏移读取所述对应的数据对象中剩余所有数据;
返回模块,配置为根据所述读IO中的地址长度从所述剩余所有数据中筛选与所述读IO对应的待读取数据并返回上层,以及将其余数据放入bluestore层的缓存中;
预读模块还配置为:
获取并解析所述对应的数据对象的对象名以得到对象编号和存储卷名;
根据所述存储卷名确定对应的存储池并获取存储池中PG的数量;
根据所述对象编号加上所述PG的数量确定下一个数据对象的编号,进而确定下一个数据对象的名;
读取所述下一个数据对象中所有数据并放入所述bluestore层的缓存中。
19.一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求1-17任意一项所述的方法的步骤。
20.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1-17任意一项所述的方法的步骤。
CN202310026962.3A 2023-01-09 2023-01-09 一种数据处理方法、***、设备以及存储介质 Active CN115827508B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310026962.3A CN115827508B (zh) 2023-01-09 2023-01-09 一种数据处理方法、***、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310026962.3A CN115827508B (zh) 2023-01-09 2023-01-09 一种数据处理方法、***、设备以及存储介质

Publications (2)

Publication Number Publication Date
CN115827508A CN115827508A (zh) 2023-03-21
CN115827508B true CN115827508B (zh) 2023-05-09

Family

ID=85520452

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310026962.3A Active CN115827508B (zh) 2023-01-09 2023-01-09 一种数据处理方法、***、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN115827508B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786401A (zh) * 2014-12-25 2016-07-20 ***通信集团公司 服务器集群***中的数据管理方法及装置
CN106844740A (zh) * 2017-02-14 2017-06-13 华南师范大学 基于内存对象缓存***的数据预读方法
CN111190655A (zh) * 2019-12-30 2020-05-22 中国银行股份有限公司 一种应用缓存数据的处理方法、装置、设备及***
CN113687781A (zh) * 2021-07-30 2021-11-23 济南浪潮数据技术有限公司 一种热数据的上拉方法、装置、设备及介质
CN114138688A (zh) * 2021-11-14 2022-03-04 郑州云海信息技术有限公司 一种数据读取方法、***、设备以及介质
CN114527938A (zh) * 2022-01-24 2022-05-24 苏州浪潮智能科技有限公司 一种基于固态硬盘的数据读取方法、***、介质及设备
CN115203072A (zh) * 2022-06-07 2022-10-18 中国电子科技集团公司第五十二研究所 一种基于访问热度的文件预读缓存分配方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115686385B (zh) * 2023-01-03 2023-03-21 苏州浪潮智能科技有限公司 一种数据存储方法、装置、计算机设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786401A (zh) * 2014-12-25 2016-07-20 ***通信集团公司 服务器集群***中的数据管理方法及装置
CN106844740A (zh) * 2017-02-14 2017-06-13 华南师范大学 基于内存对象缓存***的数据预读方法
CN111190655A (zh) * 2019-12-30 2020-05-22 中国银行股份有限公司 一种应用缓存数据的处理方法、装置、设备及***
CN113687781A (zh) * 2021-07-30 2021-11-23 济南浪潮数据技术有限公司 一种热数据的上拉方法、装置、设备及介质
CN114138688A (zh) * 2021-11-14 2022-03-04 郑州云海信息技术有限公司 一种数据读取方法、***、设备以及介质
CN114527938A (zh) * 2022-01-24 2022-05-24 苏州浪潮智能科技有限公司 一种基于固态硬盘的数据读取方法、***、介质及设备
CN115203072A (zh) * 2022-06-07 2022-10-18 中国电子科技集团公司第五十二研究所 一种基于访问热度的文件预读缓存分配方法及装置

Also Published As

Publication number Publication date
CN115827508A (zh) 2023-03-21

Similar Documents

Publication Publication Date Title
US7711916B2 (en) Storing information on storage devices having different performance capabilities with a storage system
CN102782683B (zh) 用于数据库服务器的缓冲池扩展
US20150039837A1 (en) System and method for tiered caching and storage allocation
CN110413685B (zh) 数据库服务切换方法、装置、可读存储介质和计算机设备
CN113296696A (zh) 一种数据的访问方法、计算设备及存储介质
CN108108089B (zh) 一种图片加载方法及装置
JP6409105B2 (ja) 共有コンテンツアイテムのストレージ制約付きの同期
EP3789883A1 (en) Storage fragment managing method and terminal
CN114281762B (zh) 一种日志存储加速方法、装置、设备及介质
CN113778662B (zh) 内存回收方法及装置
CN113806300B (zh) 数据存储方法、***、装置、设备及存储介质
CN109558456A (zh) 一种文件迁移方法、装置、设备及可读存储介质
CN107133334B (zh) 基于高带宽存储***的数据同步方法
CN115827508B (zh) 一种数据处理方法、***、设备以及存储介质
CN110413689B (zh) 一种内存数据库的多节点数据同步方法与装置
CN111913913A (zh) 访问请求的处理方法和装置
JP2005258789A (ja) ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法
KR101419428B1 (ko) 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법
CN114328007B (zh) 一种容器备份还原方法、装置及其介质
CN115543930A (zh) 一种在内存中锁定文件的方法、装置及相关设备
CN114265828A (zh) 行迁移消除方法、装置、计算机设备和存储介质
CN103164431B (zh) 关系型数据库的数据存储方法和存储***
CN117235088B (zh) 一种存储***的缓存更新方法、装置、设备、介质及平台
CN117950597B (zh) 数据修改写方法、数据修改写装置以及计算机存储介质
CN112131433B (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