CN112328185B - 一种基于分布式存储的智能预读方法 - Google Patents
一种基于分布式存储的智能预读方法 Download PDFInfo
- Publication number
- CN112328185B CN112328185B CN202011573777.9A CN202011573777A CN112328185B CN 112328185 B CN112328185 B CN 112328185B CN 202011573777 A CN202011573777 A CN 202011573777A CN 112328185 B CN112328185 B CN 112328185B
- Authority
- CN
- China
- Prior art keywords
- reading
- data stream
- window
- read
- data
- 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
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
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
技术领域
本申请涉及分布式存储技术领域,具体而言,涉及一种基于分布式存储的智能预读方法。
背景技术
分布式存储一般都是由通用硬件服务器组成,将服务器本地硬盘组成存储资源池,对外提供存储服务。在逻辑上分布式存储一般分为几个主要组件:客户端组件、数据存储组件、集群管理组件。客户端一般用于提供外部的存储访问接口,内部则发送用户数据到不同的服务器上存储。数据存储组件用于管理本地的磁盘空间,将客户端写入的数据存储在本地硬盘上,同时也响应客户端的读取请求,从本地硬盘上读取数据返回给客户端。集群管理组件负责整个集群的管理,维护分布式存储集群的全局信息,比如节点状态、磁盘状态、内部心跳、客户端状态等。
对分布式存储而言,用户在客户端写入和读取数据的操作,而数据存储在后端的存储服务器上。当用户写入文件时,在客户端对文件内容进行分片,然后根据分片数据按照一定的算法或者策略存储在不同的服务器硬盘上。当需要读取文件时,再从不同的存储服务器硬盘上面读取分片数据,返回给用户,这样便可以发挥出分布式存储的并发访问的优势。
存储缓存技术主要是用于对存储性能进行加速,一般分为写缓存和读缓存,写缓存常用的方法是使用高速存储介质作为低速硬盘的缓存,数据写入高速存储介质的速度很快,写入成功后再采用一定的策略将高速存储介质中的数据刷到低速介质中,比如SSD盘作为缓存盘,机械硬盘作为主存盘。读缓存性能加速常见的方法有两种,一种是热点数据识别,使用软件识别***中的热点数据,将热点数据缓存在高速存储介质上,当访问热点数据时,能够快速的响应。另一种读加速的方法是数据的预读,主要是识别上层应用读IO的连续性,当识别到IO是顺序读取时,提前将后面还没有读取的数据从低速介质上迁移到高速介质,这样当顺序读取到后面的数据时,就能够在高速的缓存中命中,快速响应给上层。常用的IO连续性识别是依据磁盘LBA地址进行判断,访问磁盘时需要指定磁盘的LBA地址进行数据读取,当连续几个IO读取的磁盘LBA地址都是连续的(连续是指前一次读取的起始地址+长度等于下一次读取的起始地址),代表此时正在进行顺序读,就提前将后面的数据从磁盘上读取上来,放入SSD等高速存储介质中,当上层应用在读取后面的数据时,就可以直接在缓存中命中。
然而,传统的预读连续性判断在单个磁盘或者在集中式存储的方式下,能够有比较好的效果,但是在分布式存储的架构下,一套存储集群提供很多个卷给业务使用,每个卷的数据分片以后存储在不同节点的磁盘上,对应的每块硬盘上就承载了很多卷的一部分读写业务。这使得当多个卷在并发的情况下以顺序的方式读取卷的数据时,数据落到每一块硬盘上,每个硬盘上收到的读取数据的LBA地址就变得不再连续,进而造成预读的效果大大降低。
发明内容
为了解决上述问题,本申请实施例提供了一种基于分布式存储的智能预读方法。其能够在并发复杂的场景下,准确识别出连续的IO流,并对IO连续的IO流进行预读取。
第一方面,本申请实施例提供了一种基于分布式存储的智能预读方法,所述方法包括:
当接收到读请求时,客户端通过多窗口内数据流连续落入情况识别各所述数据流的顺序性,筛选获得具有顺序性的顺序数据流;
调整各所述顺序数据流对应窗口的大小对各所述顺序数据流进行预读,生成预读指令;
将所述预读指令发送至所述顺序数据流对应的各第一存储端,所述预读指令用于控制各所述第一存储端查找并存储所述顺序数据流对应的各预读数据至缓存盘内。
优选的,所述客户端通过多窗口内数据流连续落入情况识别各数据流的顺序性,筛选获得具有顺序性的顺序数据流,包括:
在客户端内使用多个初始窗口标定各数据流的起始地址后的预设存储空间段;
判断所述初始窗口在生命周期内是否连续落入有新的所述数据流;
若是,则将所述数据流确定为顺序数据流并将所述初始窗口确定为预读窗口;
若否,则将所述数据流确定为随机数据流。
优选的,所述判断所述初始窗口在生命周期内是否连续落入有新的所述数据流,包括:
在所述初始窗口的生命周期内检测存在新的数据流对应的读取地址落入所述存储空间段内时,进行一次计数;
判断累计计数是否达到预设数量。
优选的,所述通过多窗口内数据流连续落入情况识别各数据流的顺序性之后,还包括:
获取不具有顺序性的随机数据流,生成读取指令;
将所述读取指令发送至所述随机数据流对应的第二存储端,所述读取指令用于控制所述第二存储端查找所述随机数据流对应的读取数据;
接收所述第二存储端发送的所述读取数据。
优选的,所述在客户端内使用多个初始窗口标定各数据流的起始地址后的预设存储空间段,包括:
判断所述读请求中的LBA地址在内存中是否覆盖于已有初始窗口中;
若覆盖于已有初始窗口中,则使用所述初始窗口标定起始LBA地址后的预设存储空间段;
若不覆盖于已有初始窗口中,则生成新的初始窗口并使用新的所述初始窗口标定起始LBA地址后的预设存储空间段。
优选的,所述调整各所述顺序数据流对应窗口的大小对各所述顺序数据流进行预读,包括:
将当前顺序数据流的结束地址作为预读窗口的预读起始地址,预读所述顺序数据流长度预设倍数的预读长度,得到并标记预读数据流;
根据所述预读数据流中的预读命中次数调整所述预读数据流对应预读窗口的预读范围。
优选的,所述根据所述预读数据流中的预读命中次数调整所述预读数据流对应预读窗口的预读范围,包括:
在检测到数据流命中所述预读窗口时,记录预读命中次数并确定所述数据流的LBA地址在所述预读窗口内占比;
当所述数据流的LBA地址大于所述预读窗口的一半时,触发下一次预读并基于所述预读命中次数调整下一次预读对应预读窗口的预读范围。
优选的,所述触发下一次预读并基于所述预读命中次数调整下一次预读对应预读窗口的预读范围,包括:
当所述预读命中次数小于第一预设命中次数时,将下一次预读对应预读窗口的预读范围缩小;
当所述预读命中次数大于第二预设命中次数时,将下一次预读对应预读窗口的预读范围扩大。
第二方面,本申请实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面或第一方面的任意一种可能的实现方式提供的方法的步骤。
第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面或第一方面的任意一种可能的实现方式提供的方法。
本发明的有益效果为:1.通过在存储客户端中对数据进行顺序性判断并预读后,再根据存储客户端中预读的数据流在其对应的各分布式数据存储端中寻找对应预读数据进行预读存储,保证了分布式共享卷的场景下,读取缓存数据流的一致性。
2.当既有连续性数据流又有随机性数据流时,能够进行识别,对其中的顺序数据流进行预读,而部队随机性数据流进行预读。
3.当存在多路连续性数据流时,能够同时对多个连续性数据流进行预读。
4.能够根据预读的窗口中命中情况,自动调整后续预读的数据的大小,避免了读取资源的浪费或预读不及时的情况发生。
5.由于通过窗口进行顺序性判断,能够识别出伪随机的数据流,并且进行预读。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种基于分布式存储的智能预读方法的流程示意图;
图2为本申请实施例提供的基于预读窗口命中次数将下一次预读的预读范围扩大的窗口调整举例示意图;
图3为本申请实施例提供的基于预读窗口命中次数将下一次预读的预读范围缩小的窗口调整举例示意图;
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在下述介绍中,术语“第一”、“第二”仅为用于描述的目的,而不能理解为指示或暗示相对重要性。下述介绍提供了本发明的多个实施例,不同实施例之间可以替换或者合并组合,因此本发明也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征A、B、C,另一个实施例包含特征B、D,那么本发明也应视为包括含有A、B、C、D的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。
下面的描述提供了示例,并且不对权利要求书中阐述的范围、适用性或示例进行限制。可以在不脱离本发明内容的范围的情况下,对描述的元素的功能和布置做出改变。各个示例可以适当省略、替代或添加各种过程或组件。例如所描述的方法可以以所描述的顺序不同的顺序来执行,并且可以添加、省略或组合各种步骤。此外,可以将关于一些示例描述的特征组合到其他示例中。
本发明的设计思路为:由于传统的数据顺序性判断和预读都是在存储端上实现的,而对于分布式存储架构而言,存储端上的数据地址并不连续,导致预读效果差。本申请通过在客户端上对数据流进行顺序性判断和预读来确定需要预读的数据流段落后,再根据生成的预读指令控制与该需要预读的数据流段落所对应的各个存储端进行预读数据的读取,并将读取的各个预读数据集中存储至缓存盘中,以此实现更好的预读效果且保证了各预读数据之间的一致性。同时,由客户端上设置的多个窗口对所有的数据流进行顺序性判断和预读,使得各个存储端仅需要根据接收到的指令完成业务数据和预读数据的读取,不需要每个存储端在接收到拆分后的数据流后都需要对数据流进行一次顺序性判断和预读处理,增加了整体读取的效率。此外,窗口不仅仅是用于对顺序流的预读,还用于根据窗口生命周期内新数据流的落入情况来判断数据流的顺序性,这一方面能够更准确的识别出数据流中的顺序流和随机流,另一方面通过窗口的范围来确定顺序流使得其能够识别出相互间具有一定间隔的顺序流和按照一定顺序往返跳跃读取的伪随机流,而非只能识别出完全连接在一起的顺序流,也不会存在某些顺序流的顺序性在存储端中被打断的问题。
参见图1,图1为本申请实施例所提供的一种基于分布式存储的智能预读方法的流程示意图。在本申请实施例中,所述方法包括:
S101、当接收到读请求时,客户端通过多窗口内数据流连续落入情况识别各所述数据流的顺序性,筛选获得具有顺序性的顺序数据流。
所述数据流在本申请实施例中可以理解为用以进行读取的IO流,即输入输出流。
在本申请实施例中,一个分布式存储中存储卷的读取都是发生在分布式存储的客户端,当存在多个卷并发读写,一部分卷采用顺序读取的方式,一部分卷采用随机读取,可能还有部分卷上同时有顺序读取和随机读取。存储客户端根据应用读取数据的逻辑区块地址(Logical Block Address,LBA),将读取请求发送至存储端,存储端再从磁盘上读取数据返回给客户端。存储端的每一块硬盘上收到的读取请求可以被分成几种情况:单一的严格顺序流或单一的类顺序流、多路严格顺序流、顺序流和随机流混合、随机流。而预读是针对顺序数据流的,为了避免无效的读取,需要对顺序数据流进行识别,提升***的读性能。具体而言,当存在数据需要读取时,客户端将接收到读请求,并在客户端内设置的多个窗口中根据窗口内数据流的连续落入情况来识别各个数据流的顺序性。
在一种可实施方式中,步骤S101中所述客户端通过多窗口内数据流连续落入情况识别各数据流的顺序性,筛选获得具有顺序性的顺序数据流,包括:
在客户端内使用多个初始窗口标定各数据流的起始地址后的预设存储空间段;
判断所述初始窗口在生命周期内是否连续落入有新的所述数据流;
若是,则将所述数据流确定为顺序数据流并将所述初始窗口确定为预读窗口;
若否,则将所述数据流确定为随机数据流。
在本申请实施例中,在存储端收到的数据流由于多并发的原因,原本的顺序性可能会被打断,所以顺序数据流的识别将放在客户端进行。对数据流的顺序性判断是由于应用程序需要顺序的读取卷上的一段数据,所以数据流的连续性按照卷粒度进行识别,根据每个存储卷上的数据流判断是否存在顺序读的情况。客户端的存储卷上设置有多个初始窗口,初始窗口用于判断数据流的类别,初始窗口将标定各个数据流的起始地址往后的一段存储空间作为预设存储空间段,判断在初始窗口的生命周期内是否连续落入有新的数据流,并以此判断该数据流是否是顺序数据流,在确定顺序数据流后,将对顺序数据流进行预读。
在一种可实施方式中,所述判断所述初始窗口在生命周期内是否连续落入有新的所述数据流,包括:
在所述初始窗口的生命周期内检测存在新的数据流对应的读取地址落入所述存储空间段内时,进行一次计数;
判断累计计数是否达到预设数量。
在本申请实施例中,每一个窗口都具有自身的生命周期(例如3秒钟),在生命周期结束后窗口将会消失。初始窗口的起始地址可以是当前数据流的LBA地址,长度初始设定可以是当前数据流大小的四倍。初始窗口在生命周期内会检测落入窗口内的新的数据流,每检测到一个新的数据流落入会进行一次计数,当累计计数达到预设数量(例如3个)时,即认为该数据流为顺序数据流,准备启动预读。
在一种可实施方式中,所述通过多窗口内数据流连续落入情况识别各数据流的顺序性之后,还包括:
获取不具有顺序性的随机数据流,生成读取指令;
将所述读取指令发送至所述随机数据流对应的第二存储端,所述读取指令用于控制所述第二存储端查找所述随机数据流对应的读取数据;
接收所述第二存储端发送的所述读取数据。
在本申请实施例中,由于数据是被分布式存储,故存在多个存储数据的存储端,第二存储端为存储有随机数据流对应数据的存储端。对于不具有顺序性的随机数据流,将不进行预读,直接生成读取指令发送至存储端,使存储端在接收到读取指令后查找对应的读取数据并将其直接发送至客户端。
在一种可实施方式中,所述在客户端内使用多个初始窗口标定各数据流的起始地址后的预设存储空间段,包括:
判断所述读请求中的LBA地址在内存中是否覆盖于已有初始窗口中;
若覆盖于已有初始窗口中,则使用所述初始窗口标定起始LBA地址后的预设存储空间段;
若不覆盖于已有初始窗口中,则生成新的初始窗口并使用新的所述初始窗口标定起始LBA地址后的预设存储空间段。
在本申请实施例中,由于窗口具有生命周期,因此客户端的整个存储卷上不可能全部覆盖有窗口。若读请求中的LBA地址没有覆盖于已有的初始窗口,则客户端会生成新的初始窗口,并通过该初始窗口标定起始LBA地址后的预设存储空间段。
S102、调整各所述顺序数据流对应窗口的大小对各所述顺序数据流进行预读,生成预读指令。
在本申请实施例中,在确定了顺序数据流后,客户端将对顺序数据流进行预读,由于初始窗口的大小是固定的,通过初始窗口确定的预读窗口在刚开始预读时的大小也是固定的,而各顺序数据流的读取长度是不固定的,依靠固定大小的预读窗口将无法较好的进行预读,故将对窗口的大小进行适应性调整。
在一种可实施方式中,步骤S102中所述调整各所述顺序数据流对应窗口的大小对各所述顺序数据流进行预读,包括:
将当前顺序数据流的结束地址作为预读窗口的预读起始地址,预读所述顺序数据流长度预设倍数的预读长度,得到并标记预读数据流;
根据所述预读数据流中的预读命中次数调整所述预读数据流对应预读窗口的预读范围。
在本申请实施例中,预读时需要确定预读数据的起始地址和长度,起始地址设定为当前数据流的结束地址,长度可以设定为当前数据流大小的四倍。为了便于区分预读数据和普通业务数据,对预读数据流进行标记。即使是连续的顺序数据流,其也随时可能由于需要读取的内容已全部读取而停止落入后续的数据流,即预读窗口内预读缓存的数据并不一定会全部被读取。因此将确定后续的数据流在预读数据流中的命中次数,并以此调整预读窗口的大小。
在一种可实施方式中,所述根据所述预读数据流中的预读命中次数调整所述预读数据流对应预读窗口的预读范围,包括:
在检测到数据流命中所述预读窗口时,记录预读命中次数并确定所述数据流的LBA地址在所述预读窗口内占比;
当所述数据流的LBA地址大于所述预读窗口的一半时,触发下一次预读并基于所述预读命中次数调整下一次预读对应预读窗口的预读范围。
在本申请实施例中,在检测到数据流命中预读窗口后,将记录命中的次数,同时将确定新落入的数据流的LBA地址在预读窗口内的地址位置与占比,当LBA地址已经大于预读窗口的一半时,将会触发下一次预读,来生成新的预读窗口对后续部分进行预读,并根据命中次数调整后续预读的范围大小。
在一种可实施方式中,所述触发下一次预读并基于所述预读命中次数调整下一次预读对应预读窗口的预读范围,包括:
当所述预读命中次数小于第一预设命中次数时,将下一次预读对应预读窗口的预读范围缩小;
当所述预读命中次数大于第二预设命中次数时,将下一次预读对应预读窗口的预读范围扩大。
在本申请实施例中,如图2所示,下一次预读时检查当前预读窗口的命中次数,如果命中次数大于第二预设命中次数(比如命中数大于等于3),则扩大预读范围一倍(上限设置可以为4M)。如果命中次数小于第一预设命中次数(比如命中数小于等于2),则缩小预读范围1倍(最小设置可以为32K)。如果预读上来的数据一直没有被命中,则等待预读窗口的生命周期结束。
S103、将所述预读指令发送至所述顺序数据流对应的各第一存储端,所述预读指令用于控制各所述第一存储端查找并存储所述顺序数据流对应的各预读数据至缓存盘内。
在本申请实施例中,第一存储端为存储有顺序数据流对应数据的存储端,由于数据流中可能同时存在顺序流和随机流,故第一存储端与第二存储端可能是同一个存储端,也可能不是同一个存储端。缓存盘是存储端内专门用于集中存储各存储端预读出来的预读数据的部分。由于数据是被分布式存储,需要预读的顺序数据流对应数据可能存储在一个或多个第一存储端内,故客户端根据需要预读的部分生成预读指令,并发送预读指令至该段数据流所对应的各第一存储端来实现在分布式存储端中高效连续的预读,且预读出来的预读数据将集中存储至缓存盘内,保证了预读数据的连续性和一致性。客户端根据每个存储卷上的数据流,判断数据流的连续性,触发预读指令。预读指令由客户端发送至存储端,存储端负责读取数据,如果是正常的业务读取指令,则将对应的数据返回给客户端;如果是预读指令,只需要将数据从存储端的主存盘中读取出来放到缓存盘中,不需要向客户端返回。在存储端缓存数据的好处在于,如果数据缓存在客户端,一个客户端缓存了数据,另一个客户端对数据进行更新,当第一个客户端再读取数据时,会在客户端缓存中命中,此时读取到的就是旧的数据,在存储端的缓存盘内进行缓存则不会存在该问题。
参见图4,其示出了本发明实施例所涉及的一种电子设备的结构示意图,该电子设备可以用于实施图1所示实施例中的方法。如图4所示,电子设备400可以包括:至少一个中央处理器401,至少一个网络接口404,用户接口403,存储器405,至少一个通信总线402。
其中,通信总线402用于实现这些组件之间的连接通信。
其中,用户接口403可以包括显示屏(Display)、摄像头(Camera),可选用户接口403还可以包括标准的有线接口、无线接口。
其中,网络接口404可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,中央处理器401可以包括一个或者多个处理核心。中央处理器401利用各种接口和线路连接整个终端400内的各个部分,通过运行或执行存储在存储器405内的指令、程序、代码集或指令集,以及调用存储在存储器405内的数据,执行终端400的各种功能和处理数据。可选的,中央处理器401可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。中央处理器401可集成中央中央处理器(Central Processing Unit,CPU)、图像中央处理器(GraphicsProcessing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作***、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到中央处理器401中,单独通过一块芯片进行实现。
其中,存储器405可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器405包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器405可用于存储指令、程序、代码、代码集或指令集。存储器405可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作***的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器405可选的还可以是至少一个位于远离前述中央处理器401的存储装置。如图4所示,作为一种计算机存储介质的存储器405中可以包括操作***、网络通信模块、用户接口模块以及程序指令。
在图4所示的电子设备400中,用户接口403主要用于为用户提供输入的接口,获取用户输入的数据;而处理器401可以用于调用存储器405中存储的基于分布式存储的智能预读应用程序,并具体执行以下操作:
当接收到读请求时,客户端通过多窗口内数据流落入情况识别各所述数据流的顺序性,筛选获得具有顺序性的顺序数据流;
调整各所述顺序数据流对应窗口的大小对各所述顺序数据流进行预读,生成预读指令;
将所述预读指令发送至所述顺序数据流对应的各第一存储端,所述预读指令用于控制各所述第一存储端查找并存储所述顺序数据流对应的各预读数据至缓存盘内。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米***(包括分子存储器IC),或适合于存储指令和/或数据的任何类型的媒介或设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(Read-Only Memory, ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上所述者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。
Claims (8)
1.一种基于分布式存储的智能预读方法,其特征在于,所述方法包括:
当接收到读请求时,在客户端内使用多个初始窗口标定各数据流的起始地址后的预设存储空间段;
在所述初始窗口的生命周期内检测存在新的数据流对应的读取地址落入所述存储空间段内时,进行一次计数;
判断累计计数是否达到预设数量;
若是,则将所述数据流确定为顺序数据流并将所述初始窗口确定为预读窗口;
若否,则将所述数据流确定为随机数据流;
调整各所述顺序数据流对应窗口的大小对各所述顺序数据流进行预读,生成预读指令;
将所述预读指令发送至所述顺序数据流对应的各第一存储端,所述预读指令用于控制各所述第一存储端查找并存储所述顺序数据流对应的各预读数据至缓存盘内。
2.根据权利要求1所述的方法,其特征在于,还包括:
获取不具有顺序性的随机数据流,生成读取指令;
将所述读取指令发送至所述随机数据流对应的第二存储端,所述读取指令用于控制所述第二存储端查找所述随机数据流对应的读取数据;
接收所述第二存储端发送的所述读取数据。
3.根据权利要求1所述的方法,其特征在于,所述在客户端内使用多个初始窗口标定各数据流的起始地址后的预设存储空间段,包括:
判断所述读请求中的LBA地址在内存中是否覆盖于已有初始窗口中;
若覆盖于已有初始窗口中,则使用所述初始窗口标定起始LBA地址后的预设存储空间段;
若不覆盖于已有初始窗口中,则生成新的初始窗口并使用新的所述初始窗口标定起始LBA地址后的预设存储空间段。
4.根据权利要求1所述的方法,其特征在于,所述调整各所述顺序数据流对应窗口的大小对各所述顺序数据流进行预读,包括:
将当前顺序数据流的结束地址作为预读窗口的预读起始地址,预读所述顺序数据流长度预设倍数的预读长度,得到并标记预读数据流;
根据所述预读数据流中的预读命中次数调整所述预读数据流对应预读窗口的预读范围。
5.根据权利要求4所述的方法,其特征在于,所述根据所述预读数据流中的预读命中次数调整所述预读数据流对应预读窗口的预读范围,包括:
在检测到数据流命中所述预读窗口时,记录预读命中次数并确定所述数据流的LBA地址在所述预读窗口内占比;
当所述数据流的LBA地址大于所述预读窗口的一半时,触发下一次预读并基于所述预读命中次数调整下一次预读对应预读窗口的预读范围。
6.根据权利要求5所述的方法,其特征在于,所述触发下一次预读并基于所述预读命中次数调整下一次预读对应预读窗口的预读范围,包括:
当所述预读命中次数小于第一预设命中次数时,将下一次预读对应预读窗口的预读范围缩小;
当所述预读命中次数大于第二预设命中次数时,将下一次预读对应预读窗口的预读范围扩大。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-6任一项所述方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011573777.9A CN112328185B (zh) | 2020-12-28 | 2020-12-28 | 一种基于分布式存储的智能预读方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011573777.9A CN112328185B (zh) | 2020-12-28 | 2020-12-28 | 一种基于分布式存储的智能预读方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112328185A CN112328185A (zh) | 2021-02-05 |
CN112328185B true CN112328185B (zh) | 2021-03-23 |
Family
ID=74301869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011573777.9A Active CN112328185B (zh) | 2020-12-28 | 2020-12-28 | 一种基于分布式存储的智能预读方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112328185B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799589B (zh) * | 2021-01-14 | 2023-07-14 | 新华三大数据技术有限公司 | 一种数据读取方法及装置 |
CN114489469B (zh) * | 2021-07-20 | 2022-12-23 | 荣耀终端有限公司 | 一种数据读取方法、电子设备及存储介质 |
CN113672176B (zh) * | 2021-08-13 | 2023-12-29 | 济南浪潮数据技术有限公司 | 一种数据读取方法、***、设备及计算机可读存储介质 |
CN114461588B (zh) * | 2021-08-20 | 2023-01-24 | 荣耀终端有限公司 | 调节预读窗口的方法及电子设备 |
CN114579051B (zh) * | 2022-02-25 | 2024-04-23 | 阿里巴巴(中国)有限公司 | 识别硬盘读模式的方法以及装置 |
CN114327299B (zh) * | 2022-03-01 | 2022-06-03 | 苏州浪潮智能科技有限公司 | 一种顺序读预读的方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388824A (zh) * | 2008-10-15 | 2009-03-18 | 中国科学院计算技术研究所 | 一种机群***中分片存储模式下文件读取的方法及*** |
CN109542361A (zh) * | 2018-12-04 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种分布式存储***文件读取方法、***及相关装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102295769B1 (ko) * | 2014-05-20 | 2021-08-30 | 삼성전자주식회사 | 스토리지 컨트롤러 및 상기 스토리지 컨트롤러의 동작 방법 |
US9990296B2 (en) * | 2015-07-31 | 2018-06-05 | Oracle International Corporation | Systems and methods for prefetching data |
US10034407B2 (en) * | 2016-07-22 | 2018-07-24 | Intel Corporation | Storage sled for a data center |
US11036412B2 (en) * | 2019-09-27 | 2021-06-15 | Intel Corporation | Dynamically changing between latency-focused read operation and bandwidth-focused read operation |
-
2020
- 2020-12-28 CN CN202011573777.9A patent/CN112328185B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388824A (zh) * | 2008-10-15 | 2009-03-18 | 中国科学院计算技术研究所 | 一种机群***中分片存储模式下文件读取的方法及*** |
CN109542361A (zh) * | 2018-12-04 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种分布式存储***文件读取方法、***及相关装置 |
Non-Patent Citations (1)
Title |
---|
分布式文件***的流式数据预读;闫鹤;《计算机研究与发展》;20120215;第252-256页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112328185A (zh) | 2021-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112328185B (zh) | 一种基于分布式存储的智能预读方法 | |
US10860494B2 (en) | Flushing pages from solid-state storage device | |
CN108920387B (zh) | 降低读延迟的方法、装置、计算机设备及存储介质 | |
US8825946B2 (en) | Memory system and data writing method | |
CN112799595B (zh) | 数据处理方法、设备及存储介质 | |
US20210271640A1 (en) | File loading method and apparatus, electronic device, and storage medium | |
EP2919120A1 (en) | Memory monitoring method and related device | |
CN115639971B (zh) | 数据写入方法、装置、电子设备、存储介质及程序产品 | |
WO2021062982A1 (zh) | 管理hmb内存的方法、装置、计算机设备及存储介质 | |
CN114036077B (zh) | 数据处理方法及相关装置 | |
CN106991059B (zh) | 对数据源的访问控制方法 | |
CN115269454A (zh) | 数据访问方法、电子设备和存储介质 | |
JP2015158910A (ja) | ラップ読出しから連続読出しを行うメモリサブシステム | |
CN112612728B (zh) | 缓存管理方法及装置、设备 | |
US9158697B2 (en) | Method for cleaning cache of processor and associated processor | |
JPH11259627A (ja) | 画像管理装置およびその方法、画像管理システム、記憶媒体 | |
CN115481051A (zh) | 页表预取方法及装置、片上*** | |
US20140173225A1 (en) | Reducing memory access time in parallel processors | |
US9542318B2 (en) | Temporary cache memory eviction | |
CN109634877B (zh) | 流操作的实现方法、装置、设备及存储介质 | |
CN114168495A (zh) | 存储设备的增强的预读能力 | |
CN110908602A (zh) | 分布式存储***的数据写入方法、装置、设备及存储介质 | |
JP4164452B2 (ja) | 情報処理方法及び装置 | |
EP4187363A1 (en) | Storage controller, storage control method, solid state disk and storage system | |
CN118012338A (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 |