CN108459826A - 一种处理io请求的方法及装置 - Google Patents
一种处理io请求的方法及装置 Download PDFInfo
- Publication number
- CN108459826A CN108459826A CN201810101627.4A CN201810101627A CN108459826A CN 108459826 A CN108459826 A CN 108459826A CN 201810101627 A CN201810101627 A CN 201810101627A CN 108459826 A CN108459826 A CN 108459826A
- Authority
- CN
- China
- Prior art keywords
- read
- data
- buffer space
- address
- request
- 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
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
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种处理IO请求的方法及装置,应用于存储设备,所述方法包括:接收读请求,确定所述读请求是否命中写缓存空间;其中,所述写缓存空间中的数据为处理写请求时写入的脏数据;如果未命中所述写缓存空间,确定所述读请求中的逻辑地址对应的物理地址;基于所述物理地址确定所述读请求是否命中读缓存空间;如果未命中所述读缓存空间,基于所述物理地址从磁盘将所述读请求的待读取数据读取到所述读缓存空间,并返回所述待读取数据。本申请技术方案减少了相同数据对缓存空间的占用,使得缓存空间可以缓存更多数据,并减少了从磁盘读取数据的操作次数,从而节省系统开销,提高了存储设备的性能。
Description
技术领域
本申请涉及存储领域,特别涉及一种处理IO请求的方法及装置。
背景技术
存储设备能为用户提供方便快捷的数据写入、数据保护和数据读取的功能。其中,实现数据的快速读写是衡量存储设备性能的重要标准。
通常情况下,可以采用缓存技术来提高处理IO(Input/Output,输入/输出)请求的响应速度,进而提高存储设备性能。存储设备上的多个LUN(Logical Unit Number,逻辑单元号)分别具有对应的缓存空间。
当接收到写请求时,可以首先将该写请求中的待写入数据写入到缓存空间,后续再从缓存空间写入到磁盘空间中。
当接收到读请求时,可以首先确定该读请求是否命中缓存,并在命中缓存的情况下,直接从缓存空间中返回该读请求的待读取数据。若未命中缓存,则可以从磁盘空间中读取上述待读取数据到缓存空间,然后返回上述待读取数据。写入到缓存空间的待读取数据可减少后续处理请求该待读取数据的读请求的响应时间。
存储设备可以利用重删技术来检查写入的数据是否重复,并对于重复的数据只保留唯一的副本,从而节省存储设备的磁盘空间。经过重删后,存储设备上的从多个LUN写入的相同数据会被存储到唯一的物理空间中,则后续处理针对多个LUN中的上述数据的读请求,会从上述物理空间中多次读取上述数据到多个LUN对应的缓存空间中。
在这种情况下,存储设备的缓存空间中存在许多重复的数据,导致缓存空间的实际利用率低下。此外,多次从磁盘空间读取相同数据,也会增加磁盘的读写命令,增大的系统开销,从而影响存储设备的性能。
发明内容
有鉴于此,本申请提供一种处理IO请求的方法及装置,用以提高缓存空间的实际利用率,并减少因多次从磁盘空间读取相同数据而产生的系统开销,从而提高存储设备的性能。
具体地,本申请是通过如下技术方案实现的:
一种处理IO请求的方法,应用于存储设备,包括:
接收读请求,确定所述读请求是否命中写缓存空间;其中,所述写缓存空间中的数据为处理写请求时写入的脏数据;
如果未命中所述写缓存空间,确定所述读请求中的逻辑地址对应的物理地址;
基于所述物理地址确定所述读请求是否命中读缓存空间;
如果未命中所述读缓存空间,基于所述物理地址从磁盘将所述读请求的待读取数据读取到所述读缓存空间,并返回所述待读取数据。
在所述处理IO请求的方法中,所述方法还包括:
如果命中所述写缓存空间,从所述写缓存空间获取所述待读取数据,并返回所述待读取数据。
在所述处理IO请求的方法中,所述方法还包括:
接收到写请求,将所述写请求中的待写入数据写入到写缓存空间;
返回写入成功信息,并更新预设的第一缓存表;
对所述待写入数据进行重删处理,若所述待写入数据在所述磁盘中没有相同的数据,将所述待写入数据写入所述磁盘;
记录所述写请求中的逻辑地址和所述待写入数据的物理地址的映射关系。
在所述处理IO请求的方法中,所述确定所述读请求是否命中写缓存空间,包括:
基于所述读请求中的所述逻辑地址和数据长度查找所述第一缓存表,确定是否存在对应的第一缓存表项;其中,所述第一缓存表包括逻辑地址、数据长度和本地缓存地址的映射关系。
在所述处理IO请求的方法中,所述确定所述读请求中的逻辑地址对应的物理地址,包括:
基于所述读请求中的逻辑地址查找预设的地址映射表,确定所述逻辑地址对应的物理地址;其中,所述地址映射表包括逻辑地址和物理地址的映射关系;或者,
基于所述读请求中的逻辑地址查找预设的逻辑地址映射表,确定所述逻辑地址对应的指纹;其中,所述逻辑地址映射表包括逻辑地址和指纹的映射关系;
基于所述逻辑地址对应的指纹查找预设的重删指纹库,确定所述指纹对应的物理地址;其中,所述重删指纹库包括物理地址和指纹的映射关系。
在所述处理IO请求的方法中,所述基于所述物理地址确定所述读请求是否命中读缓存空间,包括:
基于所述物理地址和所述读请求中的数据长度查找预设的第二缓存表,确定是否存在对应的第二缓存表项;其中,所述第二缓存表包括物理地址、数据长度和本地缓存地址的映射关系。
在所述处理IO请求的方法中,所述方法还包括:
如果命中所述读缓存空间,基于所述第二缓存表项中的数据长度和本地缓存地址从所述读缓存空间获取所述待读取数据,并返回所述待读取数据。
在所述处理IO请求的方法中,所述基于所述物理地址从磁盘将所述读请求的待读取数据读取到所述读缓存空间,还包括:
基于所述物理地址、所述待读取数据的数据长度和所述读缓存空间中的本地缓存地址,更新预设的第二缓存表。
在所述处理IO请求的方法中,所述方法还包括:
如果无法确定所述读请求中的逻辑地址对应的物理地址,返回全0数据。
一种处理IO请求的装置,应用于存储设备,包括:
接收单元,用于接收读请求,确定所述读请求是否命中写缓存空间;其中,所述写缓存空间中的数据为处理写请求时写入的脏数据;
第一确定单元,用于如果未命中所述写缓存空间,确定所述读请求中的逻辑地址对应的物理地址;
第二确定单元,用于基于所述物理地址确定所述读请求是否命中读缓存空间;
读取单元,用于如果未命中所述读缓存空间,基于所述物理地址从磁盘将所述读请求的待读取数据读取到所述读缓存空间,并返回所述待读取数据。
在本申请技术方案中,存储设备接收读请求,首先确定上述读请求是否命中写缓存空间;其中,上述写缓存空间中的数据为处理写请求时写入的脏数据;如果未命中上述写缓存空间,确定上述读请求中的逻辑地址对应的物理地址,然后基于上述物理地址确定上述读请求是否命中读缓存空间,若未命中上述读缓存空间,则就上述物理地址从磁盘将上述读请求的待读取数据读取到上述读缓存空间,并返回上述待读取数据;
由于本申请中,存储设备的缓存空间分为写缓存空间和读缓存空间,其中读缓存空间写入处理读请求时的待读取数据,因此,当处理过针对任一LUN中的目标数据的读请求后,后续可以直接从读缓存空间中返回上述目标数据,而无需多次从磁盘读取相同数据,节省了系统开销,也减少了相同数据对缓存空间的占用,从而提高了存储设备的性能。
附图说明
图1是现有技术的一种存储设备的架构图;
图2是本申请示出的一种存储设备的架构图;
图3是本申请示出的一种处理IO请求的方法的流程图;
图4是本申请示出的一种处理IO请求的装置的实施例框图;
图5是本申请示出的一种处理IO请求的装置的硬件结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对现有技术方案和本发明实施例中的技术方案作进一步详细的说明。
参见图1,为现有技术的一种存储设备的架构图,如图1所示,存储设备的各个LUN分别具有对应的缓存空间,用以缓存写请求的待写入数据或读请求的待读取数据,以提高处理IO请求的响应速度。
缓存空间中的待写入数据可以在经过重删处理后,确定磁盘中尚无相同数据后,写入到磁盘(即图中的数据副本池)。若磁盘中已存在相同数据,则无需重复写入,仅仅建立逻辑地址到磁盘中已写入数据的物理地址的映射关系,后续可以通过上述映射关系,从磁盘中读取上述数据。
当多个LUN写入同一目标数据时,存储设备会建立多个指向同一物理地址的映射关系,其中,各映射关系中的逻辑地址不同。后续,若接收到针对任一LUN上的目标数据的读请求,存储设备会将上述目标数据从磁盘读取到该LUN对应的缓存空间中,并向发送读请求的设备返回上述目标数据。读取到上述缓存空间中的上述目标数据可用于快速响应后续的读请求。
如果存储设备接收到针对多个LUN上的目标数据的读请求,则需要多次从磁盘读取上述目标数据到多个LUN的缓存空间中。比如,图1中存储设备接收到针对LUN-1、LUN-2、LUN-3和LUN-4上的目标数据的读请求,会分别从磁盘中读取目标数据到Cache-1、Cache-2、Cache-3和Cache-4中。
在这种情况下,存储设备需多次从磁盘中读取相同数据,这会增加磁盘的读写命令,增大系统开销,此外,缓存空间中存在许多重复的数据,导致缓存空间的实际利用率低下,进而影响存储设备的性能。
有鉴于此,本申请技术方案将写缓存空间和读缓存空间分离,参见图2,为本申请示出的一种存储设备的架构图,如图2所示,存储设备的各个LUN分别具有对应的写缓存空间,用以缓存写请求的待写入数据;存储设备还具有各个LUN共用的读缓存空间,用以缓存读请求的待读取数据。通过各个LUN共用读缓存空间,同样的数据,存储设备只需从磁盘写一次到读缓存空间即可,有效减少系统开销。
存储设备上预设记录写缓存空间中数据的第一缓存表和记录读缓存空间中数据的第二缓存表。其中,第一缓存表与现有的本地缓存表类似,记录逻辑地址(逻辑地址可以包括LUN标识和数据起始地址)、数据长度和本地缓存地址的映射关系;第二缓存表记录物理地址、数据长度和本地缓存地址的映射关系。
由于各个LUN共用读缓存空间,存储设备可以通过待读取数据的物理地址从第二缓存表中获取待读取数据在读缓存空间的本地缓存地址,从而在接收到针对不同的LUN上的目标数据的读请求时,都可以从读缓存空间中获取上述目标数据。
参见图3,为本申请示出的一种处理IO请求的方法的流程图,所述方法应用于存储设备,包括以下步骤:
步骤301:接收读请求,确定所述读请求是否命中写缓存空间;其中,所述写缓存空间中的数据为处理写请求时写入的脏数据。
在示出的一种实施方式中,存储设备可以基于上述读请求中的逻辑地址和数据长度查找预设的第一缓存表,确定是否存在对应的第一缓存表项。其中,上述第一缓存表包括逻辑地址、数据长度和本地缓存地址的映射关系,第一缓存表中的本地缓存地址指的是写缓存空间中的缓存地址。
一方面,如果存在对应的第一缓存表项,则说明命中上述写缓存空间,可以基于上述数据长度和该第一缓存表中的本地缓存地址从上述写缓存空间获取上述待读取数据,并向发送上述读请求的设备返回上述待读取数据。
另一方面,如果不存在对应的第一缓存表项,则说明未命中上述写缓存空间。
在本申请实施例中,存储设备接收到写请求,可以将上述写请求中的待写入数据写入到写缓存空间。另外,存储设备需向发送写请求的设备返回写入成功信息,并更新上述第一缓存表。
需要指出的是,在实际应用中,存储设备在处理写请求时,首先会基于上述写请求中的逻辑地址和数据长度,根据本地数据分片的位置,将上述写请求中的待写入数据进行拆分,获得多个写入子请求,然后将上述写入子请求中经过拆分的数据写入写缓存空间。因此,存储设备在更新第一缓存表时,实际上可能新建多条映射关系,其中,若拆分后的数据占满一个数据分片,则数据长度为数据分片的长度;若拆分后的数据未占满第一数据分片,则数据长度为拆分后的数据的实际长度。
比如:存储设备的本地数据分片的位置为从0字节起,每10个字节作为一个分片。当处理一个逻辑地址中的数据起始地址为第5字节,数据长度为25字节的写请求,存储设备可以将待写入数据分为第5字节到第9字节、第10字节到第19字节、第20字节到第29字节的3块,然后分别写入到缓存空间,并更新第一缓存表。新增的3条映射关系中,其中一个数据长度为5字节,另两个数据长度为10字节。
此外,计算指纹、更新逻辑地址和物理地址的映射关系、更新第二缓存表等操作,也是基于拆分后的数据来操作的;而存储设备接收到读请求时,也会基于本地数据分片的位置对读请求拆分后,再进行处理。具体可参照现有相关技术,本申请在此不再赘述。
进一步地,存储设备可以对上述待写入数据进行重删处理,若上述待写入数据在磁盘中没有相同的数据,则将上述待写入数据写入上述磁盘。此外,无论上述待写入数据在磁盘中是否存在相同的数据,存储设备都需记录上述写请求中的逻辑地址和上述待写入数据的物理地址的映射关系。
具体地,存储设备可以根据预设哈希算法计算上述待写入数据的指纹,然后将计算出的指纹在预设的重删指纹库中进行匹配,确定是否存在相同的指纹。其中,上述重删指纹库包括已写入磁盘的所有数据的指纹和物理地址的映射关系。
一方面,如果存在相同的指纹,则无需将上述待写入数据写入磁盘,直接记录上述写请求中的逻辑地址与已写入的数据的物理地址的映射关系。
在实际应用中,逻辑地址与物理地址的映射关系包括直接映射和间接映射。
在直接映射的情况下,存储设备通过地址映射表来记录逻辑地址和物理地址的映射关系。其中,上述地址映射表包括逻辑地址和物理地址的映射关系。
存储设备可以基于上述写请求中的逻辑地址和计算出的指纹在上述重删指纹库中对应的物理地址,在地址映射表中新建逻辑地址和物理地址的映射关系。
在间接映射的情况下,存储设备通过逻辑地址映射表和上述重删指纹库记录逻辑地址和物理地址的映射关系。其中,上述逻辑地址映射表包括逻辑地址和指纹的映射关系。
存储设备可以基于上述写请求中的逻辑地址和计算出的指纹在上述逻辑地址映射表中新建逻辑地址和指纹的映射关系。
另一方面,如果不存在相同的指纹,则存储设备可以将上述待写入数据写入磁盘,并记录上述写请求中的逻辑地址和上述待写入数据的物理地址的映射关系。
在直接映射的情况下,存储设备可以基于上述写请求中的逻辑地址和上述待写入数据的物理地址在上述地址映射表中新建逻辑地址和物理地址的映射关系。此外,存储设备还需基于计算出的指纹和上述待写入数据的物理地址,在上述重删指纹库中新建指纹和物理地址的映射关系。
在间接映射的情况下,存储设备可以基于上述写请求中的逻辑地址和计算出的指纹在上述逻辑地址映射表中新建逻辑地址和指纹的映射关系。
步骤302:如果未命中所述写缓存空间,确定所述读请求中的逻辑地址对应的物理地址。
存储设备确定上述读请求未命中上述写缓存空间后,可以查找上述读请求中的逻辑地址对应的物理地址。
在示出的一种实施方式中,若存储设备以直接映射的方式记录逻辑地址和物理地址的映射关系,可以基于上述读请求中的逻辑地址查找上述地址映射表,确定上述逻辑地址对应的物理地址。
在示出的另一种实施方式中,若存储设备以间接映射的方式记录逻辑地址和物理地址的映射关系,可以基于上述读请求中的逻辑地址查找上述逻辑地址映射表,确定对应的指纹,然后基于上述逻辑地址对应的指纹查找上述重删指纹库,确定上述指纹对应的物理地址,该物理地址即为逻辑地址对应的物理地址。
此外,如果存储设备无法查找到上述读请求中的逻辑地址对应的物理地址,一方面,说明存储设备未保存上述读请求的逻辑地址与物理地址的映射关系,此时,存储设备可以向发送上述读请求的设备返回全0数据;
另一方面,存储设备上存储包括逻辑地址和物理地址的映射关系的磁盘出现坏道,此时,存储设备可以向发送上述读请求的设备返回处理失败信息。
步骤303:基于所述物理地址确定所述读请求是否命中读缓存空间。
在示出的一种实施方式中,存储设备可以基于上述物理地址和上述读请求中的数据长度查找预设的第二缓存表,确定是否存在对应的第二缓存表项。其中,上述第二缓存表包括物理地址、数据长度和本地缓存地址的映射关系,第二缓存表中的本地缓存地址指的是读缓存空间中的缓存地址。
一方面,若存储设备可以查找到对应的第二缓存表项,则说明上述读请求命中上述读缓存空间,此时可以基于上述第二缓存表项中的数据长度和本地缓存地址,从上述读缓存空间获取上述待读取数据,并向发送上述读请求的设备返回上述待读取数据。
另一方面,若存储设备无法查找到对应的第二缓存表项,则说明上述读请求未命中上述读缓存空间。
步骤304:如果未命中所述读缓存空间,基于所述物理地址从磁盘将所述读请求的待读取数据读取到所述读缓存空间,并返回所述待读取数据。
当上述读请求未命中上述读缓存空间,存储设备可以基于上述物理地址和上述读请求中的数据长度从磁盘将上述读请求的待读取数据读取到上述读缓存空间,并向发送上述读请求的设备返回上述待读取数据。
此外,存储设备还可以基于上述物理地址、上述待读取数据的数据长度和上述读缓存空间的本地缓存地址,更新上述第二缓存表。
通过该措施,后续接收到请求上述待读取数据的读请求后,存储设备可以直接从读缓存空间返回上述待读取数据。
综上所述,在本申请技术方案中,存储设备将缓存空间分为写缓存空间和读缓存空间,其中,读缓存空间写入处理读请求时的待读取数据。存储设备的各个LUN共用读缓存空间,存储设备处理过针对任一LUN中的目标数据的读请求后,后续再接收到其它LUN上针对上述目标数据的读请求,可以直接从上述读缓存空间中返回上述目标数据,无需多次从磁盘读取相同数据,从而节省了开销。此外,本申请技术方案减少了相同数据对缓存空间的占用,使得缓存空间可以缓存更多数据,从而提高了存储设备的性能。
与前述处理IO请求的方法的实施例相对应,本申请还提供了处理IO请求的装置的实施例。
参见图4,为本申请示出的一种处理IO请求的装置的实施例框图:
如图4所示,该处理IO请求的装置40包括:
接收单元410,用于接收读请求,确定所述读请求是否命中写缓存空间;其中,所述写缓存空间中的数据为处理写请求时写入的脏数据。
第一确定单元420,用于如果未命中所述写缓存空间,确定所述读请求中的逻辑地址对应的物理地址。
第二确定单元430,用于基于所述物理地址确定所述读请求是否命中读缓存空间。
读取单元440,用于如果未命中所述读缓存空间,基于所述物理地址从磁盘将所述读请求的待读取数据读取到所述读缓存空间,并返回所述待读取数据。
在本例中,所述装置还包括:
所述读取单元440,进一步用于如果命中所述写缓存空间,从所述写缓存空间获取所述待读取数据,并返回所述待读取数据。
在本例中,所述装置还包括:
所述接收单元410,进一步用于接收到写请求,将所述写请求中的待写入数据写入到写缓存空间。
更新单元450(图中未示出),进一步用于返回写入成功信息,并更新预设的第一缓存表。
写入单元460(图中未示出),用于对所述待写入数据进行重删处理,若所述待写入数据在所述磁盘中没有相同的数据,将所述待写入数据写入所述磁盘。
记录单元470(图中未示出),用于记录所述写请求中的逻辑地址和所述待写入数据的物理地址的映射关系。
在本例中,所述接收单元410,进一步用于:
基于所述读请求中的所述逻辑地址和数据长度查找所述第一缓存表,确定是否存在对应的第一缓存表项;其中,所述第一缓存表包括逻辑地址、数据长度和本地缓存地址的映射关系。
在本例中,所述第一确定单元420,进一步用于:
基于所述读请求中的逻辑地址查找预设的地址映射表,确定所述逻辑地址对应的物理地址;其中,所述地址映射表包括逻辑地址和物理地址的映射关系;或者,
基于所述读请求中的逻辑地址查找预设的逻辑地址映射表,确定所述逻辑地址对应的指纹;其中,所述逻辑地址映射表包括逻辑地址和指纹的映射关系;
基于所述逻辑地址对应的指纹查找预设的重删指纹库,确定所述指纹对应的物理地址;其中,所述重删指纹库包括物理地址和指纹的映射关系。
在本例中,所述第二确定单元430,进一步用于:
基于所述物理地址和所述读请求中的数据长度查找预设的第二缓存表,确定是否存在对应的第二缓存表项;其中,所述第二缓存表包括物理地址、数据长度和本地缓存地址的映射关系。
在本例中,所述装置还包括:
所述读取单元440,进一步用于如果命中所述读缓存空间,基于所述第二缓存表项中的数据长度和本地缓存地址从所述读缓存空间获取所述待读取数据,并返回所述待读取数据。
在本例中,所述读取单元440,进一步用于基于所述物理地址、所述待读取数据的数据长度和所述读缓存空间中的本地缓存地址,更新预设的第二缓存表。
在本例中,所述第一确定单元420,进一步用于:
如果无法确定所述读请求中的逻辑地址对应的物理地址,返回全0数据。
本申请处理IO请求的装置的实施例可以应用在存储设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在存储设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请处理IO请求的装置所在存储设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的存储设备通常根据该处理IO请求的装置的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种处理IO请求的方法,应用于存储设备,其特征在于,包括:
接收读请求,确定所述读请求是否命中写缓存空间;其中,所述写缓存空间中的数据为处理写请求时写入的脏数据;
如果未命中所述写缓存空间,确定所述读请求中的逻辑地址对应的物理地址;
基于所述物理地址确定所述读请求是否命中读缓存空间;
如果未命中所述读缓存空间,基于所述物理地址从磁盘将所述读请求的待读取数据读取到所述读缓存空间,并返回所述待读取数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果命中所述写缓存空间,从所述写缓存空间获取所述待读取数据,并返回所述待读取数据。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
接收到写请求,将所述写请求中的待写入数据写入到写缓存空间;
返回写入成功信息,并更新预设的第一缓存表;
对所述待写入数据进行重删处理,若所述待写入数据在所述磁盘中没有相同的数据,将所述待写入数据写入所述磁盘;
记录所述写请求中的逻辑地址和所述待写入数据的物理地址的映射关系。
4.根据权利要求3所述的方法,其特征在于,所述确定所述读请求是否命中写缓存空间,包括:
基于所述读请求中的所述逻辑地址和数据长度查找所述第一缓存表,确定是否存在对应的第一缓存表项;其中,所述第一缓存表包括逻辑地址、数据长度和本地缓存地址的映射关系。
5.根据权利要求1所述的方法,其特征在于,所述确定所述读请求中的逻辑地址对应的物理地址,包括:
基于所述读请求中的逻辑地址查找预设的地址映射表,确定所述逻辑地址对应的物理地址;其中,所述地址映射表包括逻辑地址和物理地址的映射关系;或者,
基于所述读请求中的逻辑地址查找预设的逻辑地址映射表,确定所述逻辑地址对应的指纹;其中,所述逻辑地址映射表包括逻辑地址和指纹的映射关系;
基于所述逻辑地址对应的指纹查找预设的重删指纹库,确定所述指纹对应的物理地址;其中,所述重删指纹库包括物理地址和指纹的映射关系。
6.根据权利要求1所述的方法,其特征在于,所述基于所述物理地址确定所述读请求是否命中读缓存空间,包括:
基于所述物理地址和所述读请求中的数据长度查找预设的第二缓存表,确定是否存在对应的第二缓存表项;其中,所述第二缓存表包括物理地址、数据长度和本地缓存地址的映射关系。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
如果命中所述读缓存空间,基于所述第二缓存表项中的数据长度和本地缓存地址从所述读缓存空间获取所述待读取数据,并返回所述待读取数据。
8.根据权利要求1所述的方法,其特征在于,所述基于所述物理地址从磁盘将所述读请求的待读取数据读取到所述读缓存空间,还包括:
基于所述物理地址、所述待读取数据的数据长度和所述读缓存空间中的本地缓存地址,更新预设的第二缓存表。
9.根据权利要求5所述的方法,其特征在于,所述方法还包括:
如果无法确定所述读请求中的逻辑地址对应的物理地址,返回全0数据。
10.一种处理IO请求的装置,应用于存储设备,其特征在于,包括:
接收单元,用于接收读请求,确定所述读请求是否命中写缓存空间;其中,所述写缓存空间中的数据为处理写请求时写入的脏数据;
第一确定单元,用于如果未命中所述写缓存空间,确定所述读请求中的逻辑地址对应的物理地址;
第二确定单元,用于基于所述物理地址确定所述读请求是否命中读缓存空间;
读取单元,用于如果未命中所述读缓存空间,基于所述物理地址从磁盘将所述读请求的待读取数据读取到所述读缓存空间,并返回所述待读取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810101627.4A CN108459826B (zh) | 2018-02-01 | 2018-02-01 | 一种处理io请求的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810101627.4A CN108459826B (zh) | 2018-02-01 | 2018-02-01 | 一种处理io请求的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108459826A true CN108459826A (zh) | 2018-08-28 |
CN108459826B CN108459826B (zh) | 2020-12-29 |
Family
ID=63239356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810101627.4A Active CN108459826B (zh) | 2018-02-01 | 2018-02-01 | 一种处理io请求的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108459826B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240617A (zh) * | 2018-09-03 | 2019-01-18 | 郑州云海信息技术有限公司 | 分布式存储系统写请求处理方法、装置、设备及存储介质 |
CN109684236A (zh) * | 2018-12-25 | 2019-04-26 | 广东浪潮大数据研究有限公司 | 一种数据写缓存控制方法、装置、电子设备和存储介质 |
CN110008142A (zh) * | 2019-04-16 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 存储数据管理方法、装置、设备及计算机可读存储介质 |
CN110928496A (zh) * | 2019-11-12 | 2020-03-27 | 杭州宏杉科技股份有限公司 | 一种在多控存储系统上的数据处理方法及装置 |
CN111435331A (zh) * | 2019-01-14 | 2020-07-21 | 杭州宏杉科技股份有限公司 | 存储卷写数据方法、装置、电子设备及机器可读存储介质 |
CN111443874A (zh) * | 2020-03-28 | 2020-07-24 | 华中科技大学 | 基于内容感知的固态盘内存缓存管理方法、设备及固态盘 |
CN112231241A (zh) * | 2019-07-15 | 2021-01-15 | 深圳市中兴微电子技术有限公司 | 一种数据读取方法和装置、计算机可读存储介质 |
CN112540726A (zh) * | 2020-12-02 | 2021-03-23 | 深圳市硅格半导体有限公司 | 固态存储设备的数据读取方法、系统、设备及介质 |
CN112559388A (zh) * | 2020-12-14 | 2021-03-26 | 杭州宏杉科技股份有限公司 | 数据缓存方法及装置 |
CN112783446A (zh) * | 2021-01-22 | 2021-05-11 | 苏州浪潮智能科技有限公司 | 一种存储系统的数据写入方法和系统 |
CN113190477A (zh) * | 2021-04-19 | 2021-07-30 | 烽火通信科技股份有限公司 | 一种适用于查表应用的低延时ddr控制方法及装置 |
CN113282249A (zh) * | 2021-07-19 | 2021-08-20 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、系统、设备以及介质 |
WO2023005352A1 (zh) * | 2021-07-30 | 2023-02-02 | 上海商汤智能科技有限公司 | 数据处理的装置、方法、计算机设备和存储介质 |
CN117472597A (zh) * | 2023-12-28 | 2024-01-30 | 苏州元脑智能科技有限公司 | 输入输出请求处理方法、系统、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851673A (zh) * | 2005-12-13 | 2006-10-25 | 华为技术有限公司 | 处理器系统及其数据操作方法 |
CN103902474A (zh) * | 2014-04-11 | 2014-07-02 | 华中科技大学 | 一种支持固态盘缓存动态分配的混合存储系统和方法 |
CN104484287A (zh) * | 2014-12-19 | 2015-04-01 | 北京麓柏科技有限公司 | 一种非易失性缓存实现方法及装置 |
CN105630405A (zh) * | 2015-04-29 | 2016-06-01 | 上海磁宇信息科技有限公司 | 一种存储系统及采用该存储系统的读写方法 |
CN105930520A (zh) * | 2016-05-23 | 2016-09-07 | 浪潮电子信息产业股份有限公司 | 一种基于集群文件系统的缓存保护方法 |
CN107250993A (zh) * | 2015-02-23 | 2017-10-13 | 英特尔公司 | 向量缓存行写回处理器、方法、系统和指令 |
CN107391034A (zh) * | 2017-07-07 | 2017-11-24 | 华中科技大学 | 一种基于局部性优化的重复数据检测方法 |
-
2018
- 2018-02-01 CN CN201810101627.4A patent/CN108459826B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851673A (zh) * | 2005-12-13 | 2006-10-25 | 华为技术有限公司 | 处理器系统及其数据操作方法 |
CN103902474A (zh) * | 2014-04-11 | 2014-07-02 | 华中科技大学 | 一种支持固态盘缓存动态分配的混合存储系统和方法 |
CN104484287A (zh) * | 2014-12-19 | 2015-04-01 | 北京麓柏科技有限公司 | 一种非易失性缓存实现方法及装置 |
CN107250993A (zh) * | 2015-02-23 | 2017-10-13 | 英特尔公司 | 向量缓存行写回处理器、方法、系统和指令 |
CN105630405A (zh) * | 2015-04-29 | 2016-06-01 | 上海磁宇信息科技有限公司 | 一种存储系统及采用该存储系统的读写方法 |
CN105930520A (zh) * | 2016-05-23 | 2016-09-07 | 浪潮电子信息产业股份有限公司 | 一种基于集群文件系统的缓存保护方法 |
CN107391034A (zh) * | 2017-07-07 | 2017-11-24 | 华中科技大学 | 一种基于局部性优化的重复数据检测方法 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240617A (zh) * | 2018-09-03 | 2019-01-18 | 郑州云海信息技术有限公司 | 分布式存储系统写请求处理方法、装置、设备及存储介质 |
CN109684236A (zh) * | 2018-12-25 | 2019-04-26 | 广东浪潮大数据研究有限公司 | 一种数据写缓存控制方法、装置、电子设备和存储介质 |
CN111435331A (zh) * | 2019-01-14 | 2020-07-21 | 杭州宏杉科技股份有限公司 | 存储卷写数据方法、装置、电子设备及机器可读存储介质 |
CN110008142A (zh) * | 2019-04-16 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 存储数据管理方法、装置、设备及计算机可读存储介质 |
CN112231241A (zh) * | 2019-07-15 | 2021-01-15 | 深圳市中兴微电子技术有限公司 | 一种数据读取方法和装置、计算机可读存储介质 |
WO2021008552A1 (zh) * | 2019-07-15 | 2021-01-21 | 深圳市中兴微电子技术有限公司 | 数据读取方法和装置、计算机可读存储介质 |
CN112231241B (zh) * | 2019-07-15 | 2023-02-17 | 深圳市中兴微电子技术有限公司 | 一种数据读取方法和装置、计算机可读存储介质 |
CN110928496B (zh) * | 2019-11-12 | 2022-04-22 | 杭州宏杉科技股份有限公司 | 一种在多控存储系统上的数据处理方法及装置 |
CN110928496A (zh) * | 2019-11-12 | 2020-03-27 | 杭州宏杉科技股份有限公司 | 一种在多控存储系统上的数据处理方法及装置 |
CN111443874A (zh) * | 2020-03-28 | 2020-07-24 | 华中科技大学 | 基于内容感知的固态盘内存缓存管理方法、设备及固态盘 |
CN111443874B (zh) * | 2020-03-28 | 2021-07-27 | 华中科技大学 | 基于内容感知的固态盘内存缓存管理方法、设备及固态盘 |
CN112540726A (zh) * | 2020-12-02 | 2021-03-23 | 深圳市硅格半导体有限公司 | 固态存储设备的数据读取方法、系统、设备及介质 |
CN112559388B (zh) * | 2020-12-14 | 2022-07-12 | 杭州宏杉科技股份有限公司 | 数据缓存方法及装置 |
CN112559388A (zh) * | 2020-12-14 | 2021-03-26 | 杭州宏杉科技股份有限公司 | 数据缓存方法及装置 |
CN112783446A (zh) * | 2021-01-22 | 2021-05-11 | 苏州浪潮智能科技有限公司 | 一种存储系统的数据写入方法和系统 |
CN112783446B (zh) * | 2021-01-22 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种存储系统的数据写入方法和系统 |
CN113190477A (zh) * | 2021-04-19 | 2021-07-30 | 烽火通信科技股份有限公司 | 一种适用于查表应用的低延时ddr控制方法及装置 |
CN113282249A (zh) * | 2021-07-19 | 2021-08-20 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、系统、设备以及介质 |
WO2023005352A1 (zh) * | 2021-07-30 | 2023-02-02 | 上海商汤智能科技有限公司 | 数据处理的装置、方法、计算机设备和存储介质 |
CN117472597A (zh) * | 2023-12-28 | 2024-01-30 | 苏州元脑智能科技有限公司 | 输入输出请求处理方法、系统、电子设备及存储介质 |
CN117472597B (zh) * | 2023-12-28 | 2024-03-15 | 苏州元脑智能科技有限公司 | 输入输出请求处理方法、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108459826B (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459826A (zh) | 一种处理io请求的方法及装置 | |
US10402096B2 (en) | Unaligned IO cache for inline compression optimization | |
CN108268219B (zh) | 一种处理io请求的方法及装置 | |
US6785771B2 (en) | Method, system, and program for destaging data in cache | |
US9507720B2 (en) | Block storage-based data processing methods, apparatus, and systems | |
US7882304B2 (en) | System and method for efficient updates of sequential block storage | |
US9612758B1 (en) | Performing a pre-warm-up procedure via intelligently forecasting as to when a host computer will access certain host data | |
CN108647151A (zh) | 一种全闪系统元数据落盘方法、装置、设备及存储介质 | |
US20090024795A1 (en) | Method and apparatus for caching data | |
US8219749B2 (en) | System and method for efficient updates of sequential block storage | |
US10268381B1 (en) | Tagging write requests to avoid data-log bypass and promote inline deduplication during copies | |
CN107148622B (zh) | 智能闪存高速缓存记录器 | |
CN109144413A (zh) | 一种元数据管理方法及装置 | |
US11620219B2 (en) | Storage drive dependent track removal in a cache for storage | |
CN108334284A (zh) | 尾延迟感知前台垃圾收集算法 | |
CN107329704A (zh) | 一种缓存镜像方法及控制器 | |
CN107193503A (zh) | 一种数据重删方法及存储设备 | |
CN110427347A (zh) | 重复数据删除的方法、装置、存储节点及存储介质 | |
CN110147345A (zh) | 一种基于rdma的键值存储系统及其工作方法 | |
KR20210076828A (ko) | 키-값 장치 및 이의 블록 인터페이스 에뮬레이션 방법 | |
US9971520B2 (en) | Processing read and write requests | |
CN108334457B (zh) | 一种io处理方法及装置 | |
US11960419B2 (en) | Systems and methods for data prefetching for low latency data read from a remote server | |
US10838643B2 (en) | Elastically managing cache for sub-block deduplication | |
CN108984432B (zh) | 一种处理io请求的方法及装置 |
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 |