CN111694504A - 一种处理读请求的方法及装置 - Google Patents
一种处理读请求的方法及装置 Download PDFInfo
- Publication number
- CN111694504A CN111694504A CN201910197505.4A CN201910197505A CN111694504A CN 111694504 A CN111694504 A CN 111694504A CN 201910197505 A CN201910197505 A CN 201910197505A CN 111694504 A CN111694504 A CN 111694504A
- Authority
- CN
- China
- Prior art keywords
- reading
- request
- channel
- read
- table entry
- 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.)
- Granted
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种处理读请求的方法及装置,该方法包括:接收到第一读请求,查找预设的通道读取表,确定是否存在对应该第一读请求的通道读取表项;其中,通道读取表中记录多个对应于读取通道的通道读取表项,每一通道读取表项记录该读取通道的读取结束位置;如果存在对应的通道读取表项,基于所述第一读请求中的逻辑起始地址和数据长度更新该通道读取表项中的读取结束位置;确定是否需为该第一读请求产生预读请求,若是,为所述第一读请求生成预读请求;基于所述预读请求从本地的磁盘空间读取数据到缓存空间。本申请可在有预读需求的情况下产生预读请求,使得后续接收到的读请求可直接命中缓存,有效提高处理读请求的响应速度。
Description
技术领域
本申请涉及存储领域,特别涉及一种处理读请求的方法及装置。
背景技术
在存储***中,通常可为本地的各个LUN(Logical Unit Number,逻辑单元号)分配缓存空间,来提高处理IO(Input/Output,输入/输出)请求的响应速度。以处理读请求(即Output)而言,存储设备可在处理逻辑存储地址(LBA,Logical Block Address)连续的多个读请求时,可从磁盘阵列中预读取上述读请求的逻辑存储地址后面一定长度的数据到缓存空间中。后续存储设备接收到读取上述逻辑存储地址后面的数据的读请求时,可直接从缓存空间中获取数据响应该读请求。通过该措施,可显著提高处理读请求的响应速度。
发明内容
有鉴于此,本申请提供一种处理读请求的方法及装置,用于提高处理读请求的响应速度。
具体地,本申请是通过如下技术方案实现的:
一种处理读请求的方法,应用于存储设备,包括:
接收到第一读请求,基于所述第一读请求中的LUN标识和逻辑起始地址查找预设的通道读取表,确定是否存在对应的通道读取表项;其中,所述通道读取表中记录多个对应于读取通道的通道读取表项,每一通道读取表项记录该读取通道的读取结束位置;
如果存在对应的通道读取表项,基于所述第一读请求中的逻辑起始地址和数据长度更新该通道读取表项中的读取结束位置;
确定是否需为该第一读请求产生预读请求,若是,为所述第一读请求生成预读请求;
基于所述预读请求从本地的磁盘空间读取数据到缓存空间。
在所述处理读请求的方法中,所述方法还包括:
如果不存在对应的通道读取表项,基于所述第一读请求中的LUN标识、逻辑起始地址和数据长度新建通道读取表项。
在所述处理读请求的方法中,所述方法还包括:
基于所述第一读请求中的LUN标识、逻辑起始地址和数据长度查找本地缓存表,确定是否存在对应的缓存表项;
如果存在对应的缓存表项,基于所述缓存表项中的缓存地址从缓存空间获取目标数据;
返回针对所述第一读请求的所述目标数据。
在所述处理读请求的方法中,所述方法还包括:
如果不存在对应的缓存表项,基于所述第一读请求从所述磁盘空间中读取目标数据到缓存空间,并更新所述缓存表;
返回针对所述第一读请求的所述目标数据。
在所述处理读请求的方法中,所述确定是否需为该第一读请求产生预读请求,包括:
如果存在对应的通道读取表项,确定需为所述第一读请求产生预读请求;或者,
如果存在对应的通道读取表项,检查所述通道读取表项中记录的读请求数量是否达到预设的数量阈值,若是,确定需为所述第一读请求产生预读请求;或者,
如果存在对应的通道读取表项,检查该通道读取表项对应的读取通道的数据读取长度是否达到预设的长度阈值,若是,确定需为所述第一读请求产生预读请求;其中,所述数据读取长度由通道读取表项中的读取结束位置和读取开始位置确定,所述读取开始位置为接收到的该读取通道的首个读请求的逻辑起始地址。
一种处理读请求的装置,应用于存储设备,包括:
查找单元,用于接收到第一读请求,基于所述第一读请求中的LUN标识和逻辑起始地址查找预设的通道读取表,确定是否存在对应的通道读取表项;其中,所述通道读取表中记录多个对应于读取通道的通道读取表项,每一通道读取表项记录该读取通道的读取结束位置;
更新单元,用于如果存在对应的通道读取表项,基于所述第一读请求中的逻辑起始地址和数据长度更新该通道读取表项中的读取结束位置;
生成单元,用于确定是否需为该第一读请求产生预读请求,若是,为所述第一读请求生成预读请求;
预读单元,用于基于所述预读请求从本地的磁盘空间读取数据到缓存空间。
在所述处理读请求的装置中,所述装置还包括:
所述更新单元,进一步用于如果不存在对应的通道读取表项,基于所述第一读请求中的LUN标识、逻辑起始地址和数据长度新建通道读取表项。
在所述处理读请求的装置中,所述装置还包括:
确定单元,用于基于所述第一读请求中的LUN标识、逻辑起始地址和数据长度查找本地缓存表,确定是否存在对应的缓存表项;
获取单元,用于如果存在对应的缓存表项,基于所述缓存表项中的缓存地址从缓存空间获取目标数据;
响应单元,用于返回针对所述第一读请求的所述目标数据。
在所述处理读请求的装置中,所述装置还包括:
所述获取单元,进一步用于如果不存在对应的缓存表项,基于所述第一读请求从所述磁盘空间中读取目标数据到缓存空间,并更新所述缓存表;
所述响应单元,用于返回针对所述第一读请求的所述目标数据。
在所述处理读请求的装置中,所述生成单元,进一步用于:
如果存在对应的通道读取表项,确定需为所述第一读请求产生预读请求;或者,
如果存在对应的通道读取表项,检查所述通道读取表项中记录的读请求数量是否达到预设的数量阈值,若是,确定需为所述第一读请求产生预读请求;或者,
如果存在对应的通道读取表项,检查该通道读取表项对应的读取通道的数据读取长度是否达到预设的长度阈值,若是,确定需为所述第一读请求产生预读请求;其中,所述数据读取长度由通道读取表项中的读取结束位置和读取开始位置确定,所述读取开始位置为接收到的该读取通道的首个读请求的逻辑起始地址。
在本申请实施例中,存储设备接收到第一读请求后,可以基于该第一读请求中的LUN标识和逻辑起始地址查找预设的通道读取表,确定是否存在对应的通道读取表项;其中,该通道读取表记录多个对应于读取通道的通道读取表项,每一通道读取表项记录该读取通道的读取结束位置;如果存在对应的通道读取表项,可基于该第一读请求中的逻辑起始地址和数据长度更新其中的读取结束位置,进一步地,判断是否需为该第一读请求产生预读请求,若是,则为该第一读请求生成预读请求,然后从本地的磁盘空间读取数据到缓存空间,并更新本地的缓存表;
由于上述通道读取表项可区分不同读取通道的读请求,在高并发环境下,存储设备可准确识别出连续读请求,从而在有预读需求的情况下生产预读请求,使得后续接收到的读请求可直接命中缓存,有效提高处理读请求的响应速度。
附图说明
图1是本申请示出的一种处理读请求的示意图;
图2是本申请示出的另一种处理读请求的示意图;
图3是本申请示出的一种处理读请求的方法的流程图;
图4是本申请示出的又一种处理读请求的示意图;
图5是本申请示出的一种处理读请求的装置的实施例框图;
图6是本申请示出的一种处理读请求的装置的硬件结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对现有技术方案和本发明实施例中的技术方案作进一步详细的说明。
参见图1,为本申请示出的一种处理读请求的示意图,如图1所示,服务器向存储设备下发读请求后,存储设备接收上述读请求并检查该读请求所请求的目标数据。图1中的操作“1”即为服务器下发读请求,存储设备确定该读请求所请求的是LUN中512KB的目标数据。
进一步地,存储设备可检查缓存空间中是否存在待读取的目标数据,并在不存在的情况下从磁盘阵列中读取上述目标数据,然后将上述目标数据写入至缓存空间中。接着,存储设备可将上述目标数据返回至服务器。在图1中,即为“2”、“3”、“4”、“5”和“6”的操作过程。可以看出,图1中缓存块大小为128KB,因此,上述读请求被拆分为4个子读请求,4个子读请求的数据分别写入到4个缓存块中。
此外,存储设备可基于上述连续读请求生成预读请求,从而将连续读请求所请求的数据后面512KB的数据从磁盘阵列读取到缓存空间中。如图1所示,存储设备同时处理操作“3”和操作“3′”,以及,同时处理操作“4”和操作“4′”。换而言之,存储设备在从磁盘阵列中获取上述目标数据时也获取预读请求对应的数据;进而将上述目标数据和预读请求对应的数据都写入到缓存空间。在图1中,基于上述预读请求所读取的512KB的数据同样写入到4个缓存块中。
后续存储设备接收到新的读请求后,检查确定上述读请求命中预读到缓存中的数据后,可直接从缓存空间中获取数据然后返回至服务器。在图1中,即为“7”和“8”的操作过程。
通过上述措施,存储设备可极大地提高处理读请求的响应速度。
在相关技术中,存储设备一般在接收到连续读请求时会从磁盘阵列预读数据到缓存空间。然而,服务器下发的可能是分段的连续读请求。在高并发的应用场景下,存储设备并发地接收到服务器上多个业务下发的读请求后,由于各个业务下发的读请求中的逻辑存储地址并不连续,存储设备会在整体上将接收到的多个读请求识别为随机读请求。
参见图2,为本申请示出的一种处理读请求的示意图,如图2所示,存储设备从两个路径接收到服务器下发的读请求(图2中颜色相同即表示同一业务下发的读请求所请求的目标数据),每一业务读请求形成连续读请求,然而,由于存储设备同时处理所有读请求,会将两个业务的读请求误识别为随机读请求。
在这种情况下,存储设备不会产生预读请求,也就无法提高对后续的读请求的响应速度。
当然,在特殊情况下,不同的业务下发的读请求也可以形成连续读请求,此时,存储设备当然也可产生预读请求。
为使存储设备可以更准确地识别出形成连续读请求的多个读请求,本申请引入读取通道的概念。在本申请中,读取通道表示针对LUN当中一段连续数据进行读取的读请求集合,换而言之,多个连续读请求处于一个读取通道中,孤立的单个读请求也处于一个读取通道中。
对现有技术的上述缺陷,实际上就是存储设备在同时接收到多个读取通道的读请求时,无法区分属于各读取通道的读请求,从而无法识别出连续读请求的问题。
有鉴于此,本申请实施例区分不同读取通道的读请求,依据各读取通道确定出连续读请求,进而为连续读请求产生预读请求,提高了对连续读请求后续的读请求的响应速度。
参见图3,为本申请示出的一种处理读请求的方法的流程图,该方法应用于存储设备,包括以下步骤:
步骤301:接收到第一读请求,基于所述第一读请求中的LUN标识和逻辑起始地址查找预设的通道读取表,确定是否存在对应的通道读取表项;其中,所述通道读取表中记录多个对应于读取通道的通道读取表项,每一通道读取表项记录该读取通道的读取结束位置。
其中,上述第一读请求泛指存储设备接收到的读请求,其只是为便于描述进行的命名,并不限定本申请技术方案。
上述通道读取表是记录读取通道的数据集合,具体的数据结构不做限定,比如,可通过数组形式构造上述通道读取表。
在接收到上述第一读请求之后,存储设备需要检查此前是否接收到该第一读请求所在的读取通道的读请求,因此,可查找上述通道读取表。当任一通道读取表项中的读取结束位置与第一读请求中的逻辑起始地址相同,且通道读取表项中的LUN标识与第一读请求的LUN标识相同,则可确定该通道读取表项对应于该第一读请求。
一方面,不存在对应的通道读取表项,说明此前未接收到该第一读请求所在的读取通道的读请求,这种情况下,可基于上述第一读请求中的LUN标识、逻辑起始地址和数据长度新建通道读取表项。其中,新建的通道读取表项中的读取结束位置由该第一读请求中的逻辑起始地址加上数据长度得到。
另一方面,存在对应的通道读取表项,说明此前已接收到该第一读请求所在的读取通道的读请求,在这种情况下,存储设备需进一步确定是否为该读取通常产生预读请求,具体详见下文相关描述。
步骤303:如果存在对应的通道读取表项,基于所述第一读请求中的逻辑起始地址和数据长度更新该通道读取表项中的读取结束位置。
步骤304:确定是否需为该第一读请求产生预读请求,若是,为所述第一读请求生成预读请求。
查找到对应的通道读取表项后,由于第一读请求中的逻辑起始地址和通道读取表项中的读取结束位置相同,可直接将第一读请求中的数据长度加上通道读取表项中的读取结束位置,从而得到新的读取结束位置。
进一步地,存储设备可确定是否需为该第一读请求产生预读请求。
在示出的一种实施方式中,如果存在对应的通道读取表项,即可确定需为上述第一读请求产生预读请求。
在这种实施方式中,存储设备在任一读取通道上接收到连续两个读请求,即生成预读请求。
在示出的另一种实施方式中,如果存在对应的通道读取表项,可进一步检查上述通道读取表项中记录的读请求数量是否已达到预设的数量阈值。作为一种实施例,通道读取表的各通道读取表项中可记录存储设备接收到的该读取通道的读请求的数量,在该实施例中,存储设备在确定存在对应于读请求的通道读取表项后,还需更新该通道读取表项中的读请求数量,进而判断更新后的读请求数量是否达到上述数量阈值。
其中,上述数量阈值可基于应用环境进行预配置。比如,若数量阈值为4,则存储设备需在接收到读取通道的连续第四个读请求后,为该读取通道生成预读请求。
一方面,上述通道读取表项中的读请求数量未达到上述数量阈值,则确定无需产生预读请求。
另一方面,上述通道读取表项中的读请求数量达到上述数量阈值,则确定需为上述第一读请求产生预读请求。
在这种实施方式中,存储设备在任一读取通道上接收到连续多个读请求后,确定该读取通道存在连续数据读取需求,从而在更有预读需求时进行预读。
在示出的又一种实施方式中,如果存在对应的通道读取表项,可进一步检查上述通道读取表项对应的数据读取长度是否达到预设的长度阈值。作为一种实施例,通道读取表的各通道读取表项中可记录存储设备接收到的该读取通道的首个读请求的逻辑起始地址作为读取开始位置,因此,基于读取通道表项中的读取结束位置和读取开始位置可确定出该读取通道的数据读取长度。
其中,上述长度阈值可基于应用环境进行预配置。比如,若长度阈值为128KB,则存储设备需在确定针对任一读取通道的数据读取长度达到128KB以后,确定该读取通道存在连续数据读取需求,为该读取通道生成预读请求。
一方面,上述通道读取表项对应的读取通道的数据读取长度未达到上述长度阈值,则确定无需产生预读请求。
另一方面,上述通道读取表项对应的读取通道的数据读取长度达到上述长度阈值,则确定需产生预读请求。
当然,存储设备还可基于其它策略来判断是否需为上述第一读请求产生预读请求,本申请在此不再赘述。
在确定需生成预读请求后,可基于上述第一读请求的LUN标识、逻辑起始地址和数据长度生成预读请求,该预读请求中的逻辑起始地址即为该第一读请求中的逻辑起始地址加上数据长度得到。
步骤304:基于所述预读请求从本地的磁盘空间读取数据到缓存空间。
其中,上述预读请求中的数据长度可预先配置,也可以基于预设的预读策略以第一读请求中的数据长度确定得到。
当然,存储设备基于预读请求中的LUN标识、逻辑起始地址和数据长度从磁盘空间读取数据时,还需确定数据所在的物理地址,具体可参照相关技术,在此不再赘述。
当然,存储设备将读取到的数据写入到缓存空间以后,还可基于为数据分配的缓存块更新本地缓存表,使得后续接收到的读请求可通过查找上述缓存表来确定该读请求是否命中缓存。其中,缓存表包括对应于各缓存块的缓存表项,每一缓存表项记录LUN标识、逻辑起始地址和缓存起始地址的映射关系。
参见图4,为本申请示出的又一种处理读请求的示意图,如图4所示,存储设备从两个路径接收到服务器下发的读请求(图4的LUN中颜色相同即表示同一读取通道的读请求所请求的目标数据),每一读取通道的读请求形成连续读请求。由于存储设备可基于通道读取表区分不同读取通道的读请求,可有效地识别出同一读取通道的连续读请求,从而为连续读请求生成预读请求。图4中,存储设备确定通道1的读请求连续请求LUN当中1、2、3的位置的数据后,即可生成预读请求,该预读请求指示LUN当中4、5位置中的数据,从而可将LUN中4、5位置中的数据写入到缓存空间中;同样地,存储设备确定通道2的读请求指示LUN中连续位置的目标数据后,即可生成预读请求,从而将后面的数据写入到缓存空间中。
此外,在本申请实施例中,存储设备除了判断是否为上述第一读请求产生预读请求以后,还需响应上述第一读请求,返回目标数据。
存储设备可以基于上述第一读请求中的LUN标识、逻辑起始地址和数据长度查找本地缓存表,确定是否存在对应的缓存表项。
需要指出的是,由于各缓存块所能缓存的数据最大长度有限,因此,存储设备查找缓存表时,实际上是基于缓存块大小将上述第一读请求拆分为多个子读请求后进行查找。具体可参照相关技术,在此不赘述。
一种情况下,如果查找到对应的缓存表项,存储设备可基于缓存表项中的缓存地址从缓存空间中获取目标数据,然后返回针对上述第一读请求的上述目标数据,即向下发该第一读请求的服务器返回获取到的目标数据。
另一种情况下,如果未查找到对应的缓存表项,存储设备可基于上述第一读请求从上述磁盘空间中读取目标数据到缓存空间,并更新上述缓存表。进一步地,存储设备可返回针对该第一读请求的目标数据,即向下发该第一读请求的服务器返回读取到的目标数据。
至此,一次读请求的处理过程完毕。
综上所述,在本申请实施例中,存储设备接收到第一读请求后,可以基于该第一读请求中的LUN标识和逻辑起始地址查找预设的通道读取表,确定是否存在对应的通道读取表项;其中,该通道读取表记录多个对应于读取通道的通道读取表项,每一通道读取表项记录该读取通道的读取结束位置;如果存在对应的通道读取表项,可基于该第一读请求中的逻辑起始地址和数据长度更新其中的读取结束位置,进一步地,判断是否需为该第一读请求产生预读请求,若是,则为该第一读请求生成预读请求,然后从本地的磁盘空间读取数据到缓存空间,并更新本地的缓存表;
由于上述通道读取表项可区分不同读取通道的读请求,在高并发环境下,存储设备可准确识别出连续读请求,从而在有预读需求的情况下生产预读请求,使得后续接收到的读请求可直接命中缓存,有效提高处理读请求的响应速度。
与前述处理读请求的方法的实施例相对应,本申请还提供了处理读请求的装置的实施例。
参见图5,为本申请示出的一种处理读请求的装置的实施例框图:
如图5所示,该处理读请求的装置50,包括:
查找单元510,用于接收到第一读请求,基于所述第一读请求中的LUN标识和逻辑起始地址查找预设的通道读取表,确定是否存在对应的通道读取表项;其中,所述通道读取表中记录多个对应于读取通道的通道读取表项,每一通道读取表项记录该读取通道的读取结束位置;
更新单元520,用于如果存在对应的通道读取表项,基于所述第一读请求中的逻辑起始地址和数据长度更新该通道读取表项中的读取结束位置;
生成单元530,用于确定是否需为该第一读请求产生预读请求,若是,为所述第一读请求生成预读请求;
预读单元540,用于基于所述预读请求从本地的磁盘空间读取数据到缓存空间。
在本例中,所述装置还包括:
所述更新单元520,进一步用于如果不存在对应的通道读取表项,基于所述第一读请求中的LUN标识、逻辑起始地址和数据长度新建通道读取表项。
在本例中,所述装置还包括:
确定单元550(图中未示出),用于基于所述第一读请求中的LUN标识、逻辑起始地址和数据长度查找本地缓存表,确定是否存在对应的缓存表项;
获取单元560(图中未示出),用于如果存在对应的缓存表项,基于所述缓存表项中的缓存地址从缓存空间获取目标数据;
响应单元570(图中未示出),用于返回针对所述第一读请求的所述目标数据。
在本例中,所述装置还包括:
所述获取单元560,进一步用于如果不存在对应的缓存表项,基于所述第一读请求从所述磁盘空间中读取目标数据到缓存空间,并更新所述缓存表;
所述响应单元570,用于返回针对所述第一读请求的所述目标数据。
在本例中,所述生成单元530,进一步用于:
如果存在对应的通道读取表项,确定需为所述第一读请求产生预读请求;或者,
如果存在对应的通道读取表项,检查所述通道读取表项中记录的读请求数量是否达到预设的数量阈值,若是,确定需为所述第一读请求产生预读请求;或者,
如果存在对应的通道读取表项,检查该通道读取表项对应的读取通道的数据读取长度是否达到预设的长度阈值,若是,确定需为所述第一读请求产生预读请求;其中,所述数据读取长度由通道读取表项中的读取结束位置和读取开始位置确定,所述读取开始位置为接收到的该读取通道的首个读请求的逻辑起始地址。
本申请处理读请求的装置的实施例可以应用在存储设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在存储设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本申请处理读请求的装置所在存储设备的一种硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的存储设备通常根据该处理读请求的装置的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种处理读请求的方法,应用于存储设备,其特征在于,包括:
接收到第一读请求,基于所述第一读请求中的LUN标识和逻辑起始地址查找预设的通道读取表,确定是否存在对应的通道读取表项;其中,所述通道读取表中记录多个对应于读取通道的通道读取表项,每一通道读取表项记录该读取通道的读取结束位置;
如果存在对应的通道读取表项,基于所述第一读请求中的逻辑起始地址和数据长度更新该通道读取表项中的读取结束位置;
确定是否需为该第一读请求产生预读请求,若是,为所述第一读请求生成预读请求;
基于所述预读请求从本地的磁盘空间读取数据到缓存空间。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果不存在对应的通道读取表项,基于所述第一读请求中的LUN标识、逻辑起始地址和数据长度新建通道读取表项。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
基于所述第一读请求中的LUN标识、逻辑起始地址和数据长度查找本地缓存表,确定是否存在对应的缓存表项;
如果存在对应的缓存表项,基于所述缓存表项中的缓存地址从缓存空间获取目标数据;
返回针对所述第一读请求的所述目标数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
如果不存在对应的缓存表项,基于所述第一读请求从所述磁盘空间中读取目标数据到缓存空间,并更新所述缓存表;
返回针对所述第一读请求的所述目标数据。
5.根据权利要求1所述的方法,其特征在于,所述确定是否需为该第一读请求产生预读请求,包括:
如果存在对应的通道读取表项,确定需为所述第一读请求产生预读请求;或者,
如果存在对应的通道读取表项,检查所述通道读取表项中记录的读请求数量是否达到预设的数量阈值,若是,确定需为所述第一读请求产生预读请求;或者,
如果存在对应的通道读取表项,检查该通道读取表项对应的读取通道的数据读取长度是否达到预设的长度阈值,若是,确定需为所述第一读请求产生预读请求;其中,所述数据读取长度由通道读取表项中的读取结束位置和读取开始位置确定,所述读取开始位置为接收到的该读取通道的首个读请求的逻辑起始地址。
6.一种处理读请求的装置,应用于存储设备,其特征在于,包括:
查找单元,用于接收到第一读请求,基于所述第一读请求中的LUN标识和逻辑起始地址查找预设的通道读取表,确定是否存在对应的通道读取表项;其中,所述通道读取表中记录多个对应于读取通道的通道读取表项,每一通道读取表项记录该读取通道的读取结束位置;
更新单元,用于如果存在对应的通道读取表项,基于所述第一读请求中的逻辑起始地址和数据长度更新该通道读取表项中的读取结束位置;
生成单元,用于确定是否需为该第一读请求产生预读请求,若是,为所述第一读请求生成预读请求;
预读单元,用于基于所述预读请求从本地的磁盘空间读取数据到缓存空间。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
所述更新单元,进一步用于如果不存在对应的通道读取表项,基于所述第一读请求中的LUN标识、逻辑起始地址和数据长度新建通道读取表项。
8.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
确定单元,用于基于所述第一读请求中的LUN标识、逻辑起始地址和数据长度查找本地缓存表,确定是否存在对应的缓存表项;
获取单元,用于如果存在对应的缓存表项,基于所述缓存表项中的缓存地址从缓存空间获取目标数据;
响应单元,用于返回针对所述第一读请求的所述目标数据。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
所述获取单元,进一步用于如果不存在对应的缓存表项,基于所述第一读请求从所述磁盘空间中读取目标数据到缓存空间,并更新所述缓存表;
所述响应单元,用于返回针对所述第一读请求的所述目标数据。
10.根据权利要求6所述的装置,其特征在于,所述生成单元,进一步用于:
如果存在对应的通道读取表项,确定需为所述第一读请求产生预读请求;或者,
如果存在对应的通道读取表项,检查所述通道读取表项中记录的读请求数量是否达到预设的数量阈值,若是,确定需为所述第一读请求产生预读请求;或者,
如果存在对应的通道读取表项,检查该通道读取表项对应的读取通道的数据读取长度是否达到预设的长度阈值,若是,确定需为所述第一读请求产生预读请求;其中,所述数据读取长度由通道读取表项中的读取结束位置和读取开始位置确定,所述读取开始位置为接收到的该读取通道的首个读请求的逻辑起始地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910197505.4A CN111694504B (zh) | 2019-03-15 | 2019-03-15 | 一种处理读请求的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910197505.4A CN111694504B (zh) | 2019-03-15 | 2019-03-15 | 一种处理读请求的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111694504A true CN111694504A (zh) | 2020-09-22 |
CN111694504B CN111694504B (zh) | 2023-03-31 |
Family
ID=72475936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910197505.4A Active CN111694504B (zh) | 2019-03-15 | 2019-03-15 | 一种处理读请求的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111694504B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1027069A (ja) * | 1996-07-09 | 1998-01-27 | Hitachi Ltd | 記憶装置 |
US20050114289A1 (en) * | 2003-11-25 | 2005-05-26 | Fair Robert L. | Adaptive file readahead technique for multiple read streams |
JP2005322308A (ja) * | 2004-05-07 | 2005-11-17 | Sony Corp | 記録再生装置及び方法 |
CN102073463A (zh) * | 2010-12-28 | 2011-05-25 | 创新科存储技术有限公司 | 流预测方法和装置及预读控制方法和装置 |
CN106339326A (zh) * | 2016-08-26 | 2017-01-18 | 记忆科技(深圳)有限公司 | 一种提升固态硬盘顺序读性能的方法 |
-
2019
- 2019-03-15 CN CN201910197505.4A patent/CN111694504B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1027069A (ja) * | 1996-07-09 | 1998-01-27 | Hitachi Ltd | 記憶装置 |
US20050114289A1 (en) * | 2003-11-25 | 2005-05-26 | Fair Robert L. | Adaptive file readahead technique for multiple read streams |
JP2005322308A (ja) * | 2004-05-07 | 2005-11-17 | Sony Corp | 記録再生装置及び方法 |
CN102073463A (zh) * | 2010-12-28 | 2011-05-25 | 创新科存储技术有限公司 | 流预测方法和装置及预读控制方法和装置 |
CN106339326A (zh) * | 2016-08-26 | 2017-01-18 | 记忆科技(深圳)有限公司 | 一种提升固态硬盘顺序读性能的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111694504B (zh) | 2023-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459826B (zh) | 一种处理io请求的方法及装置 | |
US11157449B2 (en) | Managing data in storage according to a log structure | |
WO2018072420A1 (zh) | 存储管理方法及存储设备 | |
CN111694770B (zh) | 一种处理io请求的方法及装置 | |
US9710283B2 (en) | System and method for pre-storing small data files into a page-cache and performing reading and writing to the page cache during booting | |
CN108363641B (zh) | 一种主备机数据传递方法、控制节点以及数据库*** | |
US10824359B2 (en) | Optimizing inline deduplication during copies | |
US20140188912A1 (en) | Storage apparatus, control method, and computer product | |
CN103635887A (zh) | 缓存数据的方法和存储*** | |
JP6268116B2 (ja) | データ処理装置、データ処理方法およびコンピュータプログラム | |
CN107329704A (zh) | 一种缓存镜像方法及控制器 | |
US7272611B1 (en) | Apparatus and method for searching a n-branch data structure using information in entries | |
CN115269454A (zh) | 数据访问方法、电子设备和存储介质 | |
CN106095331B (zh) | 一种固定大文件内部资源的控制方法 | |
CN114546898A (zh) | 一种tlb管理方法、装置、设备及存储介质 | |
CN113064919B (zh) | 数据处理方法、数据存储***、计算机设备及存储介质 | |
CN113853778B (zh) | 一种文件***的克隆方法及装置 | |
US20200349186A1 (en) | Method, apparatus and computer program product for managing metadata of storage object | |
CN111694504B (zh) | 一种处理读请求的方法及装置 | |
CN108804571B (zh) | 一种数据存储方法、装置以及设备 | |
US11803469B2 (en) | Storing data in a log-structured format in a two-tier storage system | |
US8055815B2 (en) | Optimal paths with SCSI I/O referrals | |
CN108984432B (zh) | 一种处理io请求的方法及装置 | |
CN111209304B (zh) | 数据处理方法、装置及*** | |
CN112015672A (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 |