CN113238716A - 数据访问请求的处理方法、装置和电子设备 - Google Patents
数据访问请求的处理方法、装置和电子设备 Download PDFInfo
- Publication number
- CN113238716A CN113238716A CN202110639839.XA CN202110639839A CN113238716A CN 113238716 A CN113238716 A CN 113238716A CN 202110639839 A CN202110639839 A CN 202110639839A CN 113238716 A CN113238716 A CN 113238716A
- Authority
- CN
- China
- Prior art keywords
- data
- access request
- data block
- identifier
- occupied
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title description 8
- 238000000034 method Methods 0.000 claims abstract description 62
- 238000012545 processing Methods 0.000 claims abstract description 41
- 238000007493 shaping process Methods 0.000 claims description 16
- 238000000605 extraction Methods 0.000 claims description 10
- 239000002699 waste material Substances 0.000 abstract description 9
- 238000004891 communication Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
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/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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据访问请求的处理方法、装置和电子设备,接收针对存储系统的第一数据访问请求,确定第一数据访问请求所访问的目标数据;存储系统存储的数据预先被切分为多个数据块,每个数据块设置有状态标识,状态标识用于指示数据块是否正在被数据访问请求占用;基于状态标识判断目标数据对应的数据块中是否存在被占用的数据块;如果不存在被占用的数据块,执行第一数据访问请求。该方式通过指示数据块是否正在被占用的状态标识,可快速判定数据访问请求所访问的数据块是否被占用,在未被占用时执行数据访问请求,该方式无需将数据访问请求所访问的数据与正在进行的所有请求逐个对比,从而避免了CPU资源的浪费,也提高了请求处理的效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其是涉及一种数据访问请求的处理方法、装置和电子设备。
背景技术
块存储驱动层能够将存储系统中针对块设备的读写请求,基于该读写请求携带的偏移、长度和要读写的数据转换成底层存储系统能接受的读写请求。如果底层存储系统对块设备同一个偏移位置的读写不能保证顺序性,则需要驱动层保证对同一个偏移位置的读写访问互斥,即同一时刻发送给底层存储系统对同一个偏移位置的读写请求只能有一个,从而避免数据脏读脏写的问题。
相关技术中,驱动层会保存用户发送的读写请求,而且当驱动层接收到新请求时,会根据这个新请求的类型、访问的块设备偏移、长度,来遍历已经发送给底层存储系统的正在进行的读写请求,以逐个对比每个正在进行的读写请求与新请求的类型、访问的块设备偏移、长度,如果发现有读写、写读或写写的位置冲突,则认为新请求与正在进行的某个读写请求有冲突,此时,这个新请求需要排队等待,直到冲突的读写请求完成后才能下发。该方式每次处理新请求时,需要当前正在进行的所有请求逐个与新请求进行对比,该逐个比对的过程造成了CPU资源的浪费,并导致了请求处理效率较低。
发明内容
本发明的目的在于提供一种数据访问请求的处理方法、装置和电子设备,以避免CPU资源的浪费,并提高请求的处理效率。
第一方面,本发明提供了一种数据访问请求的处理方法,该方法包括:接收针对存储系统的第一数据访问请求,确定该第一数据访问请求所访问的目标数据;其中,存储系统存储的数据预先被切分为多个数据块,每个数据块设置有状态标识,该状态标识用于指示数据块是否正在被数据访问请求占用;基于状态标识,判断目标数据对应的数据块中是否存在被占用的数据块;如果不存在被占用的数据块,执行第一数据访问请求。
在可选的实施方式中,上述执行第一数据访问请求的步骤之后,上述方法还包括:将目标数据对应的数据块的状态标识设置为第一标识符;该第一标识符用于指示:数据块正在被数据访问请求占用。
在可选的实施方式中,上述方法还包括:如果目标数据对应的数据块中存在被占用的数据块,将第一数据访问请求加入预设的等待队列中,直到第一数据访问请求所访问的目标数据对应的数据块的状态标识均未设置为第一标识符,执行该第一数据访问请求。
在可选的实施方式中,上述存储系统对应的每个数据块设置的状态标识保存在指定内存中;该状态标识为第一标识符指示数据块正在被数据访问请求占用;该状态标识为第二标识符指示数据块未被占用;上述基于状态标识,判断目标数据对应的数据块中是否存在被占用的数据块的步骤,包括:根据目标数据对应的数据块,生成指定位数的第一整形数;其中,该第一整形数包括:目标数据对应的数据块的状态标识为第一标识符,除目标数据对应的数据块之外的状态标识为第二标识符;从指定内存中,提取出指定位数的包含有目标数据对应的数据块的状态标识的第二整形数;对第一整形数和第二整形数进行位运算,得到运算结果;判断运算结果是否为指定数值;如果是,确定目标数据对应的数据块中不存在被占用的数据块。
在可选的实施方式中,上述从指定内存中,提取出指定位数的包含有目标数据对应的数据块的状态标识的第二整形数的步骤,包括:根据目标数据对应的数据块中的起始数据块,在指定内存中确定提取起始位置;从提取起始位置开始,从指定内存中提取出指定位数的第二整形数。
在可选的实施方式中,上述第一标识符为1,第二标识符为0;指定数值为0;上述对第一整形数和第二整形数进行位运算,得到运算结果的步骤,包括:对第一整形数和第二整形数进行与运算,得到运算结果;上述判断运算结果是否为指定数值;如果是,确定目标数据对应的数据块中不存在被占用的数据块的步骤,包括:判断运算结果是否为0;如果为0,确定目标数据对应的数据块中不存在被占用的数据块。
在可选的实施方式中,上述将目标数据对应的数据块的状态标识设置为第一标识符的步骤之后,该方法还包括:如果接收到第一数据访问请求执行完成的消息,将目标数据对应的数据块的状态标识设置为第二标识符;该第二标识符用于指示:数据块未被数据访问请求占用。
在可选的实施方式中,上述将目标数据对应的数据块的状态标识设置为第二标识符的步骤之后,该方法还包括:判断预设的等待队列中是否有满足预设条件的目标请求;其中,该预设条件包括:目标请求所访问的数据对应的数据块的状态标识均未设置为第一标识符;如果有满足预设条件的目标请求,执行该目标请求。
在可选的实施方式中,上述确定第一数据访问请求所访问的目标数据的步骤,包括:根据第一数据访问请求携带的访问起始位置和访问长度,确定第一数据访问请求所访问的目标数据。
第二方面,本发明提供了一种数据访问请求的处理装置,该装置包括:数据确定模块,用于接收针对存储系统的第一数据访问请求,确定第一数据访问请求所访问的目标数据;其中,该存储系统存储的数据预先被切分为多个数据块,每个数据块设置有状态标识,该状态标识用于指示数据块是否正在被数据访问请求占用;状态判断模块,用于基于状态标识,判断目标数据对应的数据块中是否存在被占用的数据块;请求处理模块,用于如果不存在被占用的数据块,执行第一数据访问请求。
第三方面,本发明提供了一种电子设备,该电子设备包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现前述实施方式任一项所述的数据访问请求的处理方法。
第四方面,本发明提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现前述实施方式任一项所述的数据访问请求的处理方法。
本发明实施例带来了以下有益效果:
本发明提供的一种数据访问请求的处理方法、装置和电子设备,首先接收针对存储系统的第一数据访问请求,确定该第一数据访问请求所访问的目标数据;其中,存储系统存储的数据预先被切分为多个数据块,每个数据块设置有状态标识,该状态标识用于指示数据块是否正在被数据访问请求占用;进而基于状态标识,判断目标数据对应的数据块中是否存在被占用的数据块;如果不存在被占用的数据块,执行第一数据访问请求。该方式通过指示数据块是否正在被占用的状态标识,可快速判定数据访问请求所访问的数据块是否被占用,在未被占用时执行数据访问请求,该方式在处理数据访问请求时无需将数据访问请求所访问的数据与正在进行的所有请求逐个对比,从而避免了因逐个对比造成的CPU资源浪费,也提高了请求处理的效率。
本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据访问请求的处理方法的流程图;
图2为本发明实施例提供的另一种数据访问请求的处理方法的流程图;
图3为本发明实施例提供的另一种数据访问请求的处理方法的流程图;
图4为本发明实施例提供的一种数据访问请求的处理装置的结构示意图;
图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
驱动层为了保证对块设备中同一个偏移位置的读写访问不互斥,通常驱动层会保存用户发送给底层存储系统的读写请求,而且当驱动层接收到新请求时,会根据这个新请求的类型、访问的块设备偏移、长度,来遍历已经发送给底层存储系统的正在进行的所有读写请求,以逐个对比正在进行的读写请求与新请求的类型、访问的块设备偏移、长度;如果发现有读写、写读或写写的位置冲突,则认为新请求与正在进行的某个读写请求有冲突,此时,这个新请求需要排队等待,直到冲突的读写请求完成后才能下发。与此同时,当底层存储系统完成了一个请求后,需要判断由于冲突导致等待的排队等待队列中,是否有满足条件可以下发的,如果有,则将这个等待的请求下发给底层存储系统。该方式每次处理新请求时,需要当前正在进行的所有请求逐个与新请求进行对比,该逐个比对的过程造成了CPU(Central Processing Unit,中央处理器)资源的浪费,并导致了请求处理效率较低。
基于上述问题,本发明实施例提供了一种数据访问请求的处理方法、装置和电子设备,该技术可以应用于存储系统中块设备的数据读取、数据写入等场景中。为便于对本实施例进行理解,首先对本发明实施例所公开的一种数据访问请求的处理方法进行详细介绍,如图1所示,该方法包括如下具体步骤:
步骤S102,接收针对存储系统的第一数据访问请求,确定该第一数据访问请求所访问的目标数据;其中,存储系统存储的数据预先被切分为多个数据块,每个数据块设置有状态标识,该状态标识用于指示数据块是否正在被数据访问请求占用。
在具体实现时,上述第一数据访问请求可以是用户通过终端设备发送的,该终端设备可以是手机、平板电脑、智能手环等移动终端,还可以是计算机等。该第一数据访问请求可以是数据读取请求,也可以是数据写入请求,还可以是数据查询请求等。
上述存储系统通常是以块设备的形式存储数据的,该块设备通常可以将数据存储在固定大小的块中,每个块都有自己的地址,可以在块设备的任意位置读取一定长度的数据。在执行步骤S102之前,需要将存储系统中每个块设备存储的数据按照固定长度进行切分,得到多个固定长度的数据块,该固定长度可以根据研发需求设定,例如,该固定长度可以设置为4K或者8K等。其中,每个数据块都设置有状态标识,某一数据块的状态标识用于指示该数据块是否正在被数据访问请求占用,也可以理解为指示该数据块是否正在进行数据访问请求。在具体实现时,可以用不同的状态标识符来设置状态标识,也即是用不同的状态标识符表示数据块是否正在被数据访问请求占用。
在接收到第一数据访问请求时,需要根据该第一数据访问请求携带的访问信息,确定该第一数据访问请求所访问的目标数据,进而确定目标数据对应的数据块;该访问信息可以包括请求类型、访问偏移位置和访问长度等信息;其中,请求类型包括数据写入或者数据读取等。
步骤S104,基于上述状态标识,判断目标数据对应的数据块中是否存在被占用的数据块。
步骤S106,如果不存在被占用的数据块,执行第一数据访问请求。
根据存储系统中每个数据块对应的状态标识,可以判定目标数据对应的数据块中是否存在被占用的数据块,如果不存在被占用的数据块,则说明第一数据访问请求与正在进行的数据访问请求不冲突,即可执行第一数据访问请求,并将第一数据访问请求所访问的目标数据对应的数据块的状态标识设置为正在被数据访问请求占用。其中,执行第一数据访问请求可以理解为:将该第一数据访问请求下发给底层存储系统,以使底层存储系统处理该第一数据访问请求,并返回处理结果。
如果目标数据对应的数据块中存在一个或者多个被占用的数据块,则说明第一数据访问请求与正在进行的某个数据访问请求冲突,不能将该第一数据访问请求下发给底层存储系统,需要将该第一数据访问系统加入到预设的等待队列中,以等待第一数据访问请求所访问的目标数据对应的数据块均未被占用时,执行该第一数据访问请求。该等待队列中可以保存多个数据访问请求,等待队列中的数据访问请求均为所访问数据对应的数据块存在被占用的数据块的请求。
本发明实施例提供的一种数据访问请求的处理方法,首先接收针对存储系统的第一数据访问请求,确定该第一数据访问请求所访问的目标数据;其中,存储系统存储的数据预先被切分为多个数据块,每个数据块设置有状态标识,该状态标识用于指示数据块是否正在被数据访问请求占用;进而基于状态标识,判断目标数据对应的数据块中是否存在被占用的数据块;如果不存在被占用的数据块,执行第一数据访问请求。该方式通过指示数据块是否正在被占用的状态标识,可快速判定数据访问请求所访问的数据块是否被占用,在未被占用时执行数据访问请求,该方式在处理数据访问请求时无需将数据访问请求所访问的数据与正在进行的所有请求逐个对比,从而避免了因逐个对比造成的CPU资源浪费,也提高了请求处理的效率。
本发明实施例还提供了另一种数据访问请求的处理方法,该方法在上述实施例方法的基础上实现;该方法重点描述基于状态标识,判断目标数据对应的数据块中是否存在被占用的数据块的具体过程(通过下述步骤S204-S210实现);如图2所示,该方法包括如下具体步骤:
步骤S202,接收针对存储系统的第一数据访问请求,确定该第一数据访问请求所访问的目标数据;其中,存储系统存储的数据预先被切分为多个数据块,每个数据块设置的状态标识保存在指定内存中,该状态标识为第一标识符指示数据块正在被数据访问请求占用,状态标识为第二标识符指示数据块未被占用。
在具体实现时,需要根据存储系统存储的数据切分成的数据块的数量,申请一片内存(相当于指定内存),该指定内存中的每一bit位都对应一个数据块的状态标识。该状态标识为第一标识符时,指示数据块正在被数据访问请求占用,也即是该数据块被正在执行的数据访问请求占用,无法执行其他数据访问请求;该状态标识为第二标识符时,指示数据块当前未被数据访问请求占用。上述第一标识符和第二标识符可以根据研发需求设定,该第一标识符和第二标识符为不同的标识符,例如,第一标识符为1,第二标识符为0。
步骤S204,根据目标数据对应的数据块,生成指定位数的第一整形数;其中,该第一整形数包括:目标数据对应的数据块的状态标识为第一标识符,除目标数据对应的数据块之外的状态标识为第二标识符。
根据目标数据对应的数据块,可确定出目标数据对应的起始数据块和结束数据块,由于目标数据对应的数据块是连续的,因而可以根据起始数据块和结束数据块生成一个指定位数的第一整形数,该第一整形数中每一位对应一个数据块的状态标识,该状态标识是根据目标数据对应的数据块确定的,也即是将目标数据对应的数据块的状态标识设置为第一标识符(也可以理解为将起始数据块到结束数据块的状态标识均设置为第一标识符),将第一整形数中目标数据对应的数据块之外的状态标识设置为第二标识符。上述指定位数可以根据用户需求设置,例如,可以设置为32位或者64位等。
步骤S206,从上述指定内存中,提取出指定位数的包含有目标数据对应的数据块的状态标识的第二整形数。
从指定内存中提取出的第二整形数中每位对应的数据块,需要与第一整形数相对应,以便后续对第一整形数和第二整形数进行运算。上述指定内存中保存的是存储系统对应的所有数据块对应的状态标识,该状态标识指示的是正在执行的所有请求对数据块的占用情况。
在具体实现时,上述步骤S206可以通过下述步骤10-11实现:
步骤10,根据目标数据对应的数据块中的起始数据块,在指定内存中确定提取起始位置。
步骤11,从上述提取起始位置开始,从指定内存中提取出指定位数的第二整形数。
在具体实现时,指定内存中的一个bit位对应一个数据块的状态标识,8个bit位对应一个字节,由于提取的最小单位为字节,那么需要确定目标数据对应的数据块中的起始数据块对应的bit位在指定内存中所属的字节,然后从这个字节开始取指定位数的比特位,得到一个第二整形数。例如,当指定位数为32位时,可以从这个字节开始取4个字节,得到一个32位的第二整形数。
步骤S208,对第一整形数和第二整形数进行位运算,得到运算结果。
在具体实现时,根据第一整形数和第二整形数中相同数据块对应的状态标识进行位运算,可得到运算结果,然后根据该运算结果可以确定第一数据访问请求是否与正在进行的请求所访问的数据块有冲突。
步骤S210,判断运算结果是否为指定数值;如果是,执行步骤S212;否则,执行步骤S214。
在具体现实时,上述指定数值可以根据设置的第一标识符、第二标识符和所采用的位运算,确定指定数值的具体数值。例如,可以假设第一标识符为1,第二标识符为0,指定数值为0;那么上述步骤S208的具体过程可以为:对第一整形数和第二整形数进行与运算,得到运算结果。在与运算中,只有1与1的与运算结果为1,其余的与运算结果均为0。如果运算结果为0,确定目标数据对应的数据块中不存在被占用的数据块;如果运算结果为其他值,确定目标数据对应的数据块中至少有一个数据块被占用,也即是第一数据访问请求与正在执行的某一个数据访问请求相冲突。
步骤S212,确定目标数据对应的数据块中不存在被占用的数据块,执行第一数据访问请求,将指定内存中目标数据对应的数据块的状态标识设置为第一标识符。
如果确定目标数据对应的数据块中不存在被占用的数据块,那么第一数据访问请求与正在进行的请求不冲突,该第一数据访问请求可以下发到底层存储系统,此时,会自动在指定内存中将第一数据访问请求所访问的目标数据对应的数据块的状态标识设置为第一标识符,以更新指定内存中的状态标识。
步骤S214,确定目标数据对应的数据块中存在被占用的数据块,将第一数据访问请求加入预设的等待队列中,直到第一数据访问请求所访问的目标数据对应的数据块的状态标识均未设置为第一标识符,执行第一数据访问请求。
在具体实现时,每次正在进行的数据访问请求中有请求执行完成时,均可以判断等待队列中的请求是否可以下发到底层存储系统中,这里的判断逻辑可以参考上述步骤S204-S212,也即是判断等待队列的请求中,是否有某一请求所访问的数据对应的数据块均未被占用(也即是在指定内存中的状态标识均未设置为第一标识符)。在一些实施例中,可以仅判断等待队列中的第一个请求是否可以下发到底层存储系统中,也可以在第一个请求不可以下发时,再判断等待队列中的第二个请求是否可以下发到底层存储系统中,直到判断出等待队列中有一个请求可以下发到底层存储系统中,或者等待队列中的请求均判断完成未发现可下发到底层存储系统中的请求为止。
上述数据访问请求的处理方法,首先接收针对存储系统的第一数据访问请求,确定第一数据访问请求所访问的目标数据;进而根据目标数据对应的数据块,生成指定位数的第一整形数;再从指定内存中提取出指定位数的包含有目标数据对应的数据块的状态标识的第二整形数;判断第一整形数和第二整形数进行位运算的运算结果是否为指定数值;如果是,确定目标数据对应的数据块中不存在被占用的数据块,执行第一数据访问请求,将指定内存中目标数据对应的数据块的状态标识设置为第一标识符;否则,确定目标数据对应的数据块中存在被占用的数据块,将第一数据访问请求加入预设的等待队列中,直到第一数据访问请求所访问的目标数据对应的数据块的状态标识均未设置为第一标识符,执行第一数据访问请求。该方式只需要将第一数据访问请求所访问的目标数据块对应的整形数,与指定内存中正在进行的所有请求对应的整形数进行位运算,即可确定是否执行第一数据请求,相对于现有技术中逐个对比的方式,该方式减少了CPU资源的浪费,并提高了数据访问请求的处理效率。
本发明实施例还提供了另一种数据访问请求的处理方法,该方法在上述实施例方法的基础上实现;该方法重点描述确定第一数据访问请求所访问的目标数据的具体过程(通过下述步骤S304实现);如图3所示,该方法包括如下具体步骤:
步骤S302,接收针对存储系统的第一数据访问请求。
步骤S304,根据第一数据访问请求携带的访问起始位置和访问长度,确定第一数据访问请求所访问的目标数据。
第一数据访问请求中通常携带有访问起始位置(相当于访问偏移位置)和访问长度,将存储系统中从访问起始位置开始,到访问长度对应的位置的数据,均确定为第一数据访问请求所访问的目标数据,根据该目标数据也可以确定第一数据访问请求所跨数据块,也即是目标数据对应的数据块。
步骤S306,基于目标数据对应的数据块的状态标识,判断目标数据对应的数据块中是否存在被占用的数据块;如果不存在,执行步骤S308;否则,执行步骤S310。
步骤S308,执行第一数据访问请求,并将目标数据对应的数据块的状态标识设置为第一标识符;执行步骤S312。
在具体实现时,上述第一标识符用于指示数据块正在被数据访问请求占用。
步骤S310,将第一数据访问请求加入预设的等待队列中;执行步骤S312。
步骤S312,如果接收到第一数据访问请求执行完成的消息,将目标数据对应的数据块的状态标识设置为第二标识符。
在具体实现时,上述第二标识符用于指示数据块未被数据访问请求占用。当第一数据访问请求执行完成后,需要将目标数据对应的数据块的状态标识从第一标识符更新为第二标识符,以便后续的数据访问请求访问目标数据对应的数据块。
步骤S314,判断等待队列中是否有满足预设条件的目标请求;其中,该预设条件包括:目标请求所访问的数据对应的数据块的状态标识均未设置为第一标识符;如果有,执行步骤S316;否则,结束。
当第一数据访问请求执行完成,或者有其他数据访问请求执行完成后,可以判断等待队列中是否有满足预设条件的目标请求,该目标请求也即是等待队列中满足预设条件的请求;该预设条件为:数据访问请求所访问的数据对应的数据块的状态标识均未设置为第一标识符(也可以理解为均未被占用)。
步骤S316,执行目标请求。
上述数据访问请求的处理方法,该方式通过指示数据块是否正在被占用的状态标识,可快速判定数据访问请求所访问的数据块是否被占用,在未被占用时执行数据访问请求,该方式无需将数据访问请求所访问的数据与正在进行的所有请求逐个对比,从而避免了因逐个对比造成的CPU资源浪费,也提高了请求处理的效率。
针对于上述数据访问请求的处理方法的实施例,本发明实施例提供了一种数据访问请求的处理装置,如图4所示,该装置包括:
数据确定模块40,用于接收针对存储系统的第一数据访问请求,确定第一数据访问请求所访问的目标数据;其中,该存储系统存储的数据预先被切分为多个数据块,每个数据块设置有状态标识,该状态标识用于指示数据块是否正在被数据访问请求占用。
状态判断模块41,用于基于状态标识,判断目标数据对应的数据块中是否存在被占用的数据块。
请求处理模块42,用于如果不存在被占用的数据块,执行第一数据访问请求。
上述数据访问请求的处理装置,首先接收针对存储系统的第一数据访问请求,确定该第一数据访问请求所访问的目标数据;其中,存储系统存储的数据预先被切分为多个数据块,每个数据块设置有状态标识,该状态标识用于指示数据块是否正在被数据访问请求占用;进而基于状态标识,判断目标数据对应的数据块中是否存在被占用的数据块;如果不存在被占用的数据块,执行第一数据访问请求。该方式通过指示数据块是否正在被占用的状态标识,可快速判定数据访问请求所访问的数据块是否被占用,在未被占用时执行数据访问请求,该方式在处理数据访问请求时无需将数据访问请求所访问的数据与正在进行的所有请求逐个对比,从而避免了因逐个对比造成的CPU资源浪费,也提高了请求处理的效率。
进一步地,上述装置还包括第一状态更新模块,用于:在执行第一数据访问请求时,将目标数据对应的数据块的状态标识设置为第一标识符;该第一标识符用于指示:数据块正在被数据访问请求占用。
进一步地,上述装置还包括请求等待模块,用于:如果目标数据对应的数据块中存在被占用的数据块,将第一数据访问请求加入预设的等待队列中,直到第一数据访问请求所访问的目标数据对应的数据块的状态标识均未设置为第一标识符,执行第一数据访问请求。
在具体实现时,上述存储系统对应的每个数据块设置的状态标识保存在指定内存中;该状态标识为第一标识符指示数据块正在被数据访问请求占用;该状态标识为第二标识符指示数据块未被占用;上述状态判断模块41,包括:整形数生模块,用于根据目标数据对应的数据块,生成指定位数的第一整形数;其中,该第一整形数包括:目标数据对应的数据块的状态标识为第一标识符,除目标数据对应的数据块之外的状态标识为第二标识符;整形数提取模块,用于从指定内存中,提取出指定位数的包含有目标数据对应的数据块的状态标识的第二整形数;位运算模块,用于对第一整形数和第二整形数进行位运算,得到运算结果;结果判断模块,用于判断运算结果是否为指定数值;如果是,确定目标数据对应的数据块中不存在被占用的数据块。
进一步地,上述整形数提取模块用于:根据目标数据对应的数据块中的起始数据块,在指定内存中确定提取起始位置;从提取起始位置开始,从指定内存中提取出指定位数的第二整形数。
在实际应用中,上述第一标识符为1,第二标识符为0,指定数值为0;上述位运算模块,用于:对第一整形数和第二整形数进行与运算,得到运算结果;上述结果判断模块,用于:判断运算结果是否为0;如果为0,确定目标数据对应的数据块中不存在被占用的数据块。
进一步地,上述装置还包括第二状态更新模块,用于:如果接收到第一数据访问请求执行完成的消息,将目标数据对应的数据块的状态标识设置为第二标识符;该第二标识符用于指示:数据块未被数据访问请求占用。
进一步地,上述装置还包括队列请求执行模块,用于:判断预设的等待队列中是否有满足预设条件的目标请求;其中,该预设条件包括:目标请求所访问的数据对应的数据块的状态标识均未设置为所述第一标识符;如果有满足预设条件的目标请求,执行目标请求。
进一步地,上述数据确定模块40,还用于:根据第一数据访问请求携带的访问起始位置和访问长度,确定第一数据访问请求所访问的目标数据。
本发明实施例所提供的数据访问请求的处理装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例还提供了一种电子设备,如图5所示,该电子设备包括处理器101和存储器100,该存储器100存储有能够被处理器101执行的机器可执行指令,该处理器101执行机器可执行指令以实现上述数据访问请求的处理方法。
进一步地,图5所示的电子设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述数据访问请求的处理方法,具体实现可参见方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种数据访问请求的处理方法,其特征在于,所述方法包括:
接收针对存储系统的第一数据访问请求,确定所述第一数据访问请求所访问的目标数据;其中,所述存储系统存储的数据预先被切分为多个数据块,每个所述数据块设置有状态标识,所述状态标识用于指示所述数据块是否正在被数据访问请求占用;
基于所述状态标识,判断所述目标数据对应的数据块中是否存在被占用的数据块;
如果不存在被占用的数据块,执行所述第一数据访问请求。
2.根据权利要求1所述的方法,其特征在于,所述执行所述第一数据访问请求的步骤之后,所述方法还包括:
将所述目标数据对应的数据块的状态标识设置为第一标识符;所述第一标识符用于指示:所述数据块正在被数据访问请求占用。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
如果所述目标数据对应的数据块中存在被占用的数据块,将所述第一数据访问请求加入预设的等待队列中,直到所述第一数据访问请求所访问的目标数据对应的数据块的状态标识均未设置为所述第一标识符,执行所述第一数据访问请求。
4.根据权利要求1所述的方法,其特征在于,所述存储系统对应的每个所述数据块设置的状态标识保存在指定内存中;所述状态标识为第一标识符指示所述数据块正在被数据访问请求占用;所述状态标识为第二标识符指示所述数据块未被占用;
所述基于所述状态标识,判断所述目标数据对应的数据块中是否存在被占用的数据块的步骤,包括:
根据所述目标数据对应的数据块,生成指定位数的第一整形数;其中,所述第一整形数包括:所述目标数据对应的数据块的状态标识为所述第一标识符,除所述目标数据对应的数据块之外的状态标识为所述第二标识符;
从所述指定内存中,提取出所述指定位数的包含有所述目标数据对应的数据块的状态标识的第二整形数;
对所述第一整形数和所述第二整形数进行位运算,得到运算结果;
判断所述运算结果是否为指定数值;如果是,确定所述目标数据对应的数据块中不存在被占用的数据块。
5.根据权利要求4所述的方法,其特征在于,所述从所述指定内存中,提取出所述指定位数的包含有所述目标数据对应的数据块的状态标识的第二整形数的步骤,包括:
根据所述目标数据对应的数据块中的起始数据块,在所述指定内存中确定提取起始位置;
从所述提取起始位置开始,从所述指定内存中提取出所述指定位数的所述第二整形数。
6.根据权利要求4所述的方法,其特征在于,所述第一标识符为1,所述第二标识符为0;所述指定数值为0;
所述对所述第一整形数和所述第二整形数进行位运算,得到运算结果的步骤,包括:
对所述第一整形数和所述第二整形数进行与运算,得到所述运算结果;
所述判断所述运算结果是否为指定数值;如果是,确定所述目标数据对应的数据块中不存在被占用的数据块的步骤,包括:
判断所述运算结果是否为0;如果为0,确定所述目标数据对应的数据块中不存在被占用的数据块。
7.根据权利要求2所述的方法,其特征在于,所述将所述目标数据对应的数据块的状态标识设置为第一标识符的步骤之后,所述方法还包括:
如果接收到所述第一数据访问请求执行完成的消息,将所述目标数据对应的数据块的状态标识设置为第二标识符;所述第二标识符用于指示:所述数据块未被数据访问请求占用。
8.根据权利要求7所述的方法,其特征在于,所述将所述目标数据对应的数据块的状态标识设置为第二标识符的步骤之后,所述方法还包括:
判断预设的等待队列中是否有满足预设条件的目标请求;其中,所述预设条件包括:所述目标请求所访问的数据对应的数据块的状态标识均未设置为所述第一标识符;
如果有满足预设条件的目标请求,执行所述目标请求。
9.根据权利要求1所述的方法,其特征在于,所述确定所述第一数据访问请求所访问的目标数据的步骤,包括:
根据所述第一数据访问请求携带的访问起始位置和访问长度,确定所述第一数据访问请求所访问的目标数据。
10.一种数据访问请求的处理装置,其特征在于,所述装置包括:
数据确定模块,用于接收针对存储系统的第一数据访问请求,确定所述第一数据访问请求所访问的目标数据;其中,所述存储系统存储的数据预先被切分为多个数据块,每个所述数据块设置有状态标识,所述状态标识用于指示所述数据块是否正在被数据访问请求占用;
状态判断模块,用于基于所述状态标识,判断所述目标数据对应的数据块中是否存在被占用的数据块;
请求处理模块,用于如果不存在被占用的数据块,执行所述第一数据访问请求。
11.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至9任一项所述的数据访问请求的处理方法。
12.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使处理器实现权利要求1至9任一项所述的数据访问请求的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110639839.XA CN113238716A (zh) | 2021-06-08 | 2021-06-08 | 数据访问请求的处理方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110639839.XA CN113238716A (zh) | 2021-06-08 | 2021-06-08 | 数据访问请求的处理方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113238716A true CN113238716A (zh) | 2021-08-10 |
Family
ID=77137218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110639839.XA Pending CN113238716A (zh) | 2021-06-08 | 2021-06-08 | 数据访问请求的处理方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113238716A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150019830A1 (en) * | 2013-07-15 | 2015-01-15 | Seagate Technology Llc | Dynamic address mapping for finish in the field |
US20170177220A1 (en) * | 2014-08-30 | 2017-06-22 | Huawei Technologies Co., Ltd. | Disk area isolation method and device |
WO2017201977A1 (zh) * | 2016-05-25 | 2017-11-30 | 杭州海康威视数字技术股份有限公司 | 一种数据写、读方法、装置及分布式对象存储集群 |
CN111984184A (zh) * | 2019-05-23 | 2020-11-24 | 浙江宇视科技有限公司 | 固态硬盘的数据管理方法、装置、存储介质及电子设备 |
-
2021
- 2021-06-08 CN CN202110639839.XA patent/CN113238716A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150019830A1 (en) * | 2013-07-15 | 2015-01-15 | Seagate Technology Llc | Dynamic address mapping for finish in the field |
US20170177220A1 (en) * | 2014-08-30 | 2017-06-22 | Huawei Technologies Co., Ltd. | Disk area isolation method and device |
WO2017201977A1 (zh) * | 2016-05-25 | 2017-11-30 | 杭州海康威视数字技术股份有限公司 | 一种数据写、读方法、装置及分布式对象存储集群 |
CN111984184A (zh) * | 2019-05-23 | 2020-11-24 | 浙江宇视科技有限公司 | 固态硬盘的数据管理方法、装置、存储介质及电子设备 |
Non-Patent Citations (3)
Title |
---|
J LI ET AL.: ""An In-Depth Analysis of Cloud Block Storage Workloads in Large-Scale Production"", 《2020 IEEE INTERNATIONAL SYMPOSIUM ON WORKLOAD CHARACTERIZATION (IISWC)》, 19 November 2020 (2020-11-19), pages 37 - 47 * |
蔡涛;王杰;牛德姣;刘佩瑶;陈福丽;: ""基于冲突检测的高吞吐NVM存储系统"", 《计算机研究与发展》, no. 02, 15 February 2020 (2020-02-15), pages 19 - 30 * |
魏征 等: ""一种基于条带的一致性散列数据放置算法"", 《计算机研究与发展》, vol. 58, no. 4, 30 April 2021 (2021-04-30), pages 888 - 903 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108572876B (zh) | 一种读写锁的实现方法及装置 | |
CN111309466B (zh) | 一种基于云平台多线程调度的方法、系统、设备及介质 | |
CN104268229A (zh) | 一种基于多进程浏览器的资源获得方法及装置 | |
CN112861346A (zh) | 数据处理系统、方法及电子设备 | |
CN113608699A (zh) | 数据写入方法、装置及电子设备 | |
CN115114232A (zh) | 一种历史版本对象列举方法、装置及其介质 | |
CN110855529A (zh) | 网络信息安全监护方法、装置、服务器及可读存储介质 | |
CN111857600B (zh) | 一种数据读写方法及装置 | |
CN113238716A (zh) | 数据访问请求的处理方法、装置和电子设备 | |
CN112000589A (zh) | 一种数据写入方法、数据读取方法、装置及电子设备 | |
CN108776665B (zh) | 一种数据处理方法及装置 | |
CN111061429A (zh) | 一种数据访问方法、装置、设备、介质 | |
CN115970295A (zh) | 请求处理方法、装置和电子设备 | |
CN115587053A (zh) | 内存区域确定方法、装置、电子设备及计算机可读介质 | |
CN113961152A (zh) | 数据读写请求的处理方法、装置和电子设备 | |
CN115390847A (zh) | 日志处理方法及装置、计算机可读存储介质、终端 | |
CN112068948B (zh) | 数据散列方法、可读存储介质和电子设备 | |
CN111562983A (zh) | 内存优化方法、装置、电子设备及存储介质 | |
CN113010454A (zh) | 数据读写方法、装置、终端及存储介质 | |
CN114816219A (zh) | 数据写入和读取方法、装置及数据读写系统 | |
CN113067581B (zh) | 解码系统、解码方法、电子设备及存储介质 | |
CN114900566A (zh) | 数据通信方法、装置、电子设备及介质 | |
CN109947469B (zh) | 地址划分方法、装置及计算机可读存储介质 | |
CN117271440B (zh) | 一种基于freeRTOS文件信息存储方法、读取方法及相关设备 | |
CN114691072A (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 |