CN108984432B - 一种处理io请求的方法及装置 - Google Patents
一种处理io请求的方法及装置 Download PDFInfo
- Publication number
- CN108984432B CN108984432B CN201810776037.1A CN201810776037A CN108984432B CN 108984432 B CN108984432 B CN 108984432B CN 201810776037 A CN201810776037 A CN 201810776037A CN 108984432 B CN108984432 B CN 108984432B
- Authority
- CN
- China
- Prior art keywords
- cache table
- write
- cache
- 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
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Abstract
本申请提供一种处理IO请求的方法及装置,该方法包括:接收读请求,确定所述读请求是否命中预设的读缓存表;其中,所述读缓存表记录处理读请求时缓存的有效数据;若未命中所述读缓存表,确定所述读请求是否命中预设的写缓存表;其中,所述写缓存表记录处理写请求时缓存的脏数据;若未命中所述写缓存表,确定所述读请求是否命中预设的临时缓存表;其中,所述临时缓存表记录已写入磁盘空间的脏数据;若命中所述临时缓存表的任一临时缓存表项,从所述临时缓存表项对应的缓存块中获取并返回待读取数据。在本申请中,存储设备可以更有效地利用缓存空间,提高了存储系统的性能。
Description
技术领域
本申请涉及存储领域,特别涉及一种处理IO请求的方法及装置。
背景技术
在存储系统中,用户或应用程序访问LUN(Logical Unit Number,逻辑单元号)来读写数据,而数据存储的物理介质为磁盘。
当存储设备接收到针对任一LUN的IO(Input/Output,输入/输出)请求,会将数据写入至磁盘或从磁盘读取数据。由于从磁盘中读写数据的速度较慢,可以为各LUN分配缓存空间,利用缓存技术来提高处理IO请求的响应速度,进而提高存储系统的性能。
在相关技术中,可以为每一LUN分配读缓存空间和写缓存空间。其中,读缓存空间中保存了从磁盘读取到的有效数据,有效数据为磁盘中数据的备份;写缓存空间中保存了脏数据,脏数据为处理写请求时缓存的待写入数据,后续会被写入到磁盘。
当存储设备接收到读请求,可以在读缓存空间中查找是否存在待读取数据,若不存在,则可以进一步在写缓存空间中查找是否存在待读取数据。通过上述措施,存储设备可以减少从磁盘中读取数据,提高了处理读请求的响应速度。
然而,在相关技术中,当写缓存空间中的脏数据写入到磁盘之后,脏数据所在的缓存空间就被释放。即使被释放的缓存空间中暂无新的数据写入,原有的脏数据也无法用于响应读请求,降低了存储系统的性能。
发明内容
有鉴于此,本申请提供一种处理IO请求的方法及装置,用于合理地使用缓存空间,从而更有效的提升存储系统的性能。
具体地,本申请是通过如下技术方案实现的:
一种处理IO请求的方法,应用于存储设备,包括:
接收读请求,确定所述读请求是否命中预设的读缓存表的任一读缓存表项;其中,所述读缓存表记录处理读请求时缓存的有效数据;
若未命中任一读缓存表项,确定所述读请求是否命中预设的写缓存表的任一写缓存表项;其中,所述写缓存表记录处理写请求时缓存的脏数据;
若未命中任一写缓存表项,确定所述读请求是否命中预设的临时缓存表的任一临时缓存表项;其中,所述临时缓存表记录已写入磁盘空间的脏数据;
若命中任一临时缓存表项,从所述临时缓存表项对应的缓存块中获取并返回待读取数据。
一种处理IO请求的装置,应用于存储设备,包括:
第一确定单元,用于接收读请求,确定所述读请求是否命中预设的读缓存表的任一读缓存表项;其中,所述读缓存表记录处理读请求时缓存的有效数据;
第二确定单元,用于若未命中任一读缓存表项,确定所述读请求是否命中预设的写缓存表的任一写缓存表项;其中,所述写缓存表记录处理写请求时缓存的脏数据;
第三确定单元,用于若未命中任一写缓存表项,确定所述读请求是否命中预设的临时缓存表的任一临时缓存表项;其中,所述临时缓存表记录已写入磁盘空间的脏数据;
处理单元,用于若命中任一临时缓存表项,从所述临时缓存表项对应的缓存块中获取并返回待读取数据。
在本申请实施例中,存储设备预配置临时缓存表,用于记录写入到磁盘空间的脏数据;因此,当接收到读请求,确定该读请求未命中读缓存表和写缓存表以后,可以进一步判断该读请求是否命中上述临时缓存表,并在命中上述临时缓存表的任一临时缓存表项时,从该临时缓存表项对应的缓存块中获取并返回待读取数据;
由于可以通过临时缓存表记录已写入到磁盘空间的脏数据,当写缓存空间中的脏数据被写入到磁盘后,其中的脏数据仍可用于响应读请求;因此,存储设备可以更有效地利用缓存空间,提高了存储设备响应速度,提高了存储系统的性能。
附图说明
图1是本申请示出的一种处理读请求的示意图;
图2是本申请示出的一种处理IO请求的方法的流程图;
图3是本申请示出的一种处理读请求的流程图;
图4是本申请示出的一种处理写请求的流程图;
图5是本申请示出的一种处理IO请求的装置的实施例框图;
图6是本申请示出的一种处理IO请求的装置的硬件结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对现有技术方案和本发明实施例中的技术方案作进一步详细的说明。
存储设备的每一LUN都被分配读缓存空间和写缓存空间。其中,读缓存空间中写入了从磁盘读取到的有效数据,写缓存空间写入了脏数据。
存储设备可以基于预设策略,将写缓存空间中的脏数据写入到磁盘空间中。比如:周期性将写缓存空间中的脏数据写入到磁盘空间;或者,当写缓存空间的数据量达到预设阈值后,将脏数据写入到磁盘空间。
存储设备将写缓存空间中的脏数据写入到磁盘空间后,可以释放写缓存空间,从而在接收到新的写请求后,将写请求中的待写入数据写入至写缓存空间。其中,写入至写缓存空间的待写入数据即为脏数据。
参见图1,为本申请示出的一种处理读请求的示意图。存储设备接收到针对任一LUN的读请求后,可分为三种情况。
一方面,参见图1中的A示意图,若存储设备可以在分配至上述LUN的读缓存空间中查到该读请求所请求的待读取数据,则存储设备可以直接从读缓存空间中获取上述待读取数据,并向发送上述读请求的设备或服务返回上述待读取数据。
另一方面,参见图1中的B示意图,若存储设备无法在读缓存空间中查找到该读请求所请求的待读取数据,则可以在分配至上述LUN的写缓存空间中查找该读请求所请求的待读取数据。若在写缓存空间查找上述待读取数据,则可以从写缓存空间中获取上述待读取数据,并向发送上述读请求的设备或服务返回上述待读取数据。
又一方面,参见图1中的C示意图,若存储设备无法从分配至上述LUN的读缓存空间或写缓存空间中查到该读请求所请求的待读取数据,则可从磁盘空间获取上述待读取数据,并向发送上述读请求的设备或服务返回上述待读取数据。在这种情况下,存储设备可以将上述待读取数据缓存至读缓存空间中,使得后续接收到获取上述待读取数据的读请求时,可以更快地响应读请求。
在现有技术中,当写缓存空间中的脏数据写入到磁盘空间之后,脏数据所在的缓存空间就被释放。即使被释放的缓存空间中暂无新的数据写入,原有的脏数据也无法用于响应读请求,降低了存储系统的性能。
有鉴于此,在本申请技术方案中,通过临时缓存表记录写缓存空间中已经写入到磁盘空间的脏数据,从而在接收到读请求后,可以在临时缓存表中查找待读取数据;由于将已写入磁盘空间的脏数据用于响应读请求,有效提高了缓存空间的使用效果,提高了存储系统的性能。
参见图2,为本申请示出的一种处理IO请求的方法的流程图,该方法应用于存储设备,包括以下步骤:
步骤201:接收读请求,确定所述读请求是否命中预设的读缓存表的任一读缓存表项;其中,所述读缓存表记录处理读请求时缓存的有效数据。
存储设备上预配置读缓存表、写缓存表和临时缓存表。上述三个缓存表均包括LUN标识、逻辑地址(LBA,Logical Block Address)和缓存块标识的映射关系,其中,缓存块标识可以是缓存块的物理地址(PBA,Physics Block Address)。
存储设备的每一LUN都被分配读缓存空间和写缓存空间。其中,读缓存空间中写入了从磁盘读取到的有效数据,由读缓存表记录读缓存空间中写入的数据;写缓存空间中写入了处理写请求时保存的脏数据和已写入磁盘空间的脏数据,由写缓存表记录处理写请求时保存的脏数据,由临时缓存表记录已写入磁盘空间的脏数据。
当然,存储设备上还包括其它用于管理数据的元数据。比如说,存储设备上还可以包括逻辑地址映射表,该逻辑地址映射表包括LUN标识、逻辑地址和物理地址的映射关系,用以记录写入到LUN中的数据实际所在的磁盘空间的位置。
需要指出的是,在实际应用中,上述元数据(包括读缓存表、写缓存表、临时缓存表和逻辑地址映射表)的形式可以是多样的,比如,缓存表可以由多个表组成,或者,缓存表中存在一项内容并未被直接记录,而可由其它内容计算得到。
存储设备接收到读请求后,可以基于上述读请求中的LUN标识、逻辑地址和数据长度查找上述读缓存表,确定是否查找对应的读缓存表项。
参见图3,为本申请示出的一种处理读请求的流程图。如图3所示,存储设备在接收到读请求后,确定该读请求是否命中读缓存,换而言之,是否查找到对应的读缓存表项。
一方面,若查找到对应的读缓存表项,则可以从上述读缓存表项对应的缓存块中获取待读取数据,并返回至发送上述读请求的设备或服务。
另一方面,若无法查找到对应的读缓存表项,则可以确定未命中读缓存表的任一读缓存表项,需进一步对上述读请求进行处理。具体详见下文相关描述。
需要指出的是,在读缓存表中,各读缓存表项分别对应读缓存空间的一个缓存块,而一个缓存块可保存数据的数据长度是固定的,因此,各读缓存表项可记录的最大数据长度是固定的。
在实际应用中,存储设备接收读请求后,可基于该读请求中的LUN标识、逻辑地址和数据长度将该读请求拆分为若干个子读请求,各子读请求中的数据长度不大于缓存块的数据长度。存储设备可基于各子读请求的LUN标识和逻辑地址在上述读缓存表中分别查找对应的读缓存表项。
另外,作为一种实施例,上述读缓存表中的各读缓存表项包括数据位图,该数据位图用于表征对应的缓存块中实际写入数据的扇区。比如:各缓存块为8KB(Kilobyte,千字节),最小存储单位为512B(Byte,字节)。则各缓存块可基于最小存储单位划分为16个扇区,各扇区对应数据位图的一个标识位,若任一扇区写入数据,则对应的标识位为1;若任一扇区未写入数据,则对应的标识位为0。
在这种实施例中,存储设备查找到对应的读缓存表项后,可以通过上述数据位图确定读缓存表项对应的缓存块中实际写入数据的扇区。因此,通过上述数据位图可以更细致地管理缓存块中的数据。
步骤202:若未命中任一读缓存表项,确定所述读请求是否命中预设的写缓存表的任一写缓存表项;其中,所述写缓存表记录处理写请求时缓存的脏数据。
存储设备可以基于上述读请求中的LUN标识、逻辑地址和数据长度查找上述写缓存表,确定是否查找到对应的写缓存表项。
继续参见图3,当上述读请求未命中任一读缓存表项时,存储设备可以进一步确定该读请求是否命中写缓存,换而言之,是否查找到对应的写缓存表项。
一方面,若查找到对应的写缓存表项,则可以从上述写缓存表项对应的缓存块中获取待读取数据,并返回至发送上述读请求的设备或服务。
另一方面,若无法查找到对应的写缓存表项,则可以确定未命中写缓存表,需进一步对上述读请求进行处理。具体详见下文相关描述。
需要指出的是,在写缓存表中,各写缓存表项分别对应写缓存空间的一个缓存块,而一个缓存块可保存数据的数据长度是固定的,因此,各写缓存表项可记录的最大数据长度是固定的。
在实际应用中,存储设备可以将该读请求拆分出的各子读请求的LUN标识和逻辑地址在上述写缓存表中查找对应的写缓存表项。
另外,作为一种实施例,上述写缓存表中的各写缓存表项包括数据位图,该数据位图用于表征对应的缓存块中实际写入数据的扇区。
在这种实施例中,存储设备查找到对应的写缓存表项后,可以通过上述数据位图确定写缓存表项对应的缓存块中实际写入数据的扇区。因此,通过上述数据位图可以更细致地管理缓存块中的数据。
步骤203:若未命中任一写缓存表项,确定所述读请求是否命中预设的临时缓存表的任一临时缓存表项;其中,所述临时缓存表记录已写入磁盘空间的脏数据。
步骤204:若命中任一临时缓存表项,从所述临时缓存表项对应的缓存块中获取并返回待读取数据。
存储设备可以基于上述读请求中的LUN标识、逻辑地址和数据长度查找上述临时缓存表,确定是否查找到对应的临时缓存表项。
继续参见图3,当上述读请求未命中任一写缓存表项时,存储设备可以继续确定该读请求是否命中临时缓存,换而言之,是否查找到对应的临时缓存表项。
一方面,若查找到对应的临时缓存表项,则可以确定命中上述临时缓存表,存储设备可以从上述临时缓存表项对应的缓存块中获取待读取数据,并返回至发送上述读请求的设备或服务。
另一方面,若无法查找到对应的临时缓存表项,则可以确定的未命中临时缓存表。在这种情况下,存储设备需从磁盘空间中获取待读取数据,并返回至发送上述读请求的设备或服务。具体可参照现有相关技术,在此不再赘述。
需要指出的是,在临时缓存表中,各临时缓存表项分别对应写缓存空间的一个缓存块,而一个缓存块可保存数据的数据长度是固定的,因此,各临时缓存表项可记录的最大数据长度是固定的。
在实际应用中,存储设备可以将该读请求拆分出的各子读请求的LUN标识和逻辑地址在上述临时缓存表中查找对应的临时缓存表项。
另外,作为一种实施例,上述临时缓存表中的各临时缓存表项包括数据位图,该数据位图用于表征对应的缓存块中实际写入数据的扇区。
在这种实施例中,存储设备查找到对应的写缓存表项后,可以通过上述数据位图确定写缓存表项对应的缓存块中实际写入数据的扇区。因此,通过上述数据位图可以更细致地管理缓存块中的数据。
至此,本申请处理读请求的流程介绍完毕。
下面介绍本申请技术方案中,存储设备处理写缓存空间中的脏数据的流程。
在本申请实施例中,存储设备将写缓存空间中的脏数据写入到磁盘空间之后,可通过上述临时缓存表记录已写入磁盘空间的脏数据,从而使得已写入磁盘空间的脏数据仍可用于响应读请求。
首先,存储设备可以从上述写缓存表选择若干写缓存表项。
在示出的一种实施方式中,存储设备可以在写缓存空间的脏数据的数据量达到预设阈值后,选择预设数量的写缓存表项。
作为一种实施例,存储设备可以基于生成写缓存表项的先后顺序,选择最早生成的预设数量的写缓存表项。
在示出的另一种实施方式中,存储设备可以周期性从上述写缓存表中选择预设数量的写缓存表项。其中,周期时长可以基于实际应用环境进行配置。
同样地,作为一种实施例,存储设备可以基于生成写缓存表项的先后顺序,选择最早生成的预设数量的写缓存表项。
选中若干写缓存表项后,存储设备可以将选中的写缓存表项记录的脏数据写入至磁盘空间。
具体地,存储设备可以将上述写缓存表项对应的缓存块中获取脏数据,然后基于上述写缓存表项中的LUN标识和逻辑地址查找预设的逻辑地址映射表,基于查找到的物理地址将脏数据写入到磁盘空间。
进一步地,为保证已写入磁盘空间的脏数据仍可用于响应读请求,存储设备可以将选中的上述写缓存表项转移至上述临时缓存表中。
至此,本申请将写缓存空间中的脏数据写入到磁盘空间的流程介绍完毕。
下面介绍本申请技术方案中,存储设备处理写请求的流程。
在本申请实施例中,存储设备接收写请求后,需检查该写请求是否命中缓存表(包括读缓存表、写缓存表和临时缓存表),以便在命中缓存表的任一缓存表项时更新缓存表项和缓存空间中的数据。
首先,存储设备可以确定上述写请求是否命中上述读缓存表的任一读缓存表项。具体地,存储设备可以根据上述写请求中的LUN标识、逻辑地址和数据长度查找上述读缓存表,确定是否查找到对应的读缓存表项。
参见图4,为本申请示出的一种处理写请求的流程图。如图4所示,存储设备在接收到写请求后,确定该写请求是否命中读缓存,换而言之,是否查找到对应的读缓存表项。
一方面,如果查找到对应的读缓存表项,则可以确定命中上述读缓存表的读缓存表项。在这种情况下,为避免缓存表中存在多个与同一地址(LUN标识加逻辑地址)对应的缓存表项,存储设备可以删除上述读缓存表项。
此外,存储设备可以选择空闲的缓存块,并将上述写请求中的待写入数据写入至上述缓存块。作为一种实施例,存储设备可以从为上述写请求中的LUN标识对应的LUN分配的写缓存空间中选择空闲的缓存块,然后将上述写请求中的待写入数据写入至上述缓存块。
存储设备可以为上述缓存块生成对应的写缓存表项,并将上述写缓存表项添加至上述写缓存表。
作为一种实施例,上述写缓存表项包括数据位图,该数据位图用于表征对应的缓存块中实际写入数据的扇区。因此,存储设备可以基于上述缓存块中实际写入数据的扇区的位置,填写数据位图的标识位。比如:若任一扇区写入数据,则对应的标识位填入1;若任一扇区未写入数据,则对应的标识位填入0。
在示出的一种实施方式中,若不存在空闲的缓存块,则存储设备可以选择上述临时缓存表中最新的临时缓存表项对应的缓存块,并将上述写请求中的待写入数据写入至上述缓存块中。
进一步地,存储设备可以删除上述缓存块对应的临时缓存表项,然后为上述缓存块生成对应的写缓存表项,并将上述写缓存表项添加至上述写缓存表。
通过该措施,后续存储设备可以从上述写缓存表项中获取最新的脏数据,用于响应接收到的读请求。
同样地,作为一种实施例,存储设备可以基于上述缓存块中实际写入数据的扇区的位置,填写数据位图的标识位。
另一方面,如果查不到对应的读缓存表项,则可以确定未命中上述读缓存表。此时,需进一步对上述写请求进行处理。具体详见下文相关描述。
若未命中上述读缓存表,存储设备可以确定上述写请求是否命中上述写缓存表。具体地,存储设备可以根据上述写请求中的LUN标识、逻辑地址和数据长度查找上述写缓存表,确定是否查找到对应的写缓存表项。
继续参见图4,当上述写请求未命中任一读缓存表项时,存储设备可以进一步确定该写请求是否命中写缓存,换而言之,是否查找到对应的写缓存表项。
一种情况下,若查找到对应的写缓存表项,则可以确定命中上述写缓存表的写缓存表项。在这种情况下,存储设备可以直接将上述写请求中的待写入数据写入至上述写缓存表项对应的缓存块。
同样地,作为一种实施例,存储设备可以基于上述缓存块中实际写入数据的扇区的位置,填写数据位图的标识位。
另一种情况下,若查不到对应的写缓存表项,则可以确定未命中上述写缓存表的任一写缓存表项。此时,需进一步对上述写请求进行处理。具体详见下文相关描述。
若未命中上述写缓存表,存储设备可以确定上述写请求是否命中上述临时缓存表。具体地,存储设备可以根据上述写请求中的LUN标识、逻辑地址和数据长度查找上述临时缓存表,确定是否查找到对应的临时缓存表项。
继续参见图4,当上述写请求未命中任一写缓存表项时,存储设备可以进一步确定该写请求是否命中临时缓存,换而言之,是否查找到对应的临时缓存表项。
一方面,若查找到对应的临时缓存表项,则可以确定命中上述临时缓存表的临时缓存表项。在这种情况下,存储设备可以将上述写请求中的待写入数据写入至上述临时缓存表项对应的缓存块,并将上述临时缓存表项转移至上述写缓存表中。转移至写缓存表中的临时缓存表项即为写缓存表项,作为一种实施例,存储设备可以基于上述缓存块中实际写入数据的扇区的位置,填写数据位图的标识位。
另一方面,若查不到对应的临时缓存表项,则可以确定未命中上述临时缓存表的任一临时缓存表项。在这种情况下,存储设备可以选择空闲的缓存块,并将上述写请求中的待写入数据写入至上述缓存块。作为一种实施例,存储设备可以从为上述写请求中的LUN标识对应的LUN分配的写缓存空间中选择空闲的缓存块,然后将上述写请求中的待写入数据写入至上述缓存块。
存储设备可以为上述缓存块生成对应的写缓存表项,并将上述写缓存表项添加至上述写缓存表。
同样地,作为一种实施例,存储设备可以基于上述缓存块中实际写入数据的扇区的位置,填写数据位图的标识位。
在示出的一种实施方式中,若不存在空闲的缓存块,则存储设备可以选择上述临时缓存表中最新的临时缓存表项对应的缓存块,并将上述写请求中的待写入数据写入至上述缓存块中。
进一步地,存储设备可以删除上述缓存块对应的临时缓存表项,然后为上述缓存块生成对应的写缓存表项,并将上述写缓存表项添加至上述写缓存表。
同样地,作为一种实施例,存储设备可以基于上述缓存块中实际写入数据的扇区的位置,填写数据位图的标识位。
至此,本申请处理写请求的流程介绍完毕。
综上所述,在本申请技术方案中,存储设备通过临时缓存表记录已写入磁盘空间的脏数据,当存储设备接收到读请求后,分别在读缓存表和写缓存表中均未查找到待读取数据后,可在上述临时缓存表中进行查找,并返回查找到的待读取数据;
由于可通过临时缓存表记录已写入到磁盘空间的脏数据,使得写入到磁盘的脏数据仍可用于响应读请求;因此,存储设备可以更有效地利用缓存空间,在混合读写环境下,提高了存储设备的处理读请求的响应速度,提升了存储系统的性能。
与前述处理IO请求的方法的实施例相对应,本申请还提供了处理IO请求的装置的实施例。
参见图5,为本申请示出的一种处理IO请求的装置的实施例框图:
如图5所示,该处理IO请求的装置50包括:
第一确定单元510,用于接收读请求,确定所述读请求是否命中预设的读缓存表的任一读缓存表项;其中,所述读缓存表记录处理读请求时缓存的有效数据。
第二确定单元520,用于若未命中任一读缓存表项,确定所述读请求是否命中预设的写缓存表的任一写缓存表项;其中,所述写缓存表记录处理写请求时缓存的脏数据。
第三确定单元530,用于若未命中任一写缓存表项,确定所述读请求是否命中预设的临时缓存表的任一临时缓存表项;其中,所述临时缓存表记录已写入磁盘空间的脏数据。
处理单元540,用于若命中任一临时缓存表项,从所述临时缓存表项对应的缓存块中获取并返回待读取数据。
在本例中,所述装置还包括:
选择单元550(图中未示出),用于从所述写缓存表选择若干写缓存表项。
写入单元560(图中未示出),用于将选中的写缓存表项记录的脏数据写入至磁盘空间。
更新单元570(图中未示出),用于将选中的写缓存表项转移至所述临时缓存表中。
在本例中,所述装置还包括:
所述第一确定单元510,进一步用于接收写请求,确定所述写请求是否命中所述读缓存表的任一读缓存表项。
所述第二确定单元520,进一步用于若未命中任一读缓存表项,确定所述写请求是否命中所述写缓存表的任一写缓存表项。
所述第三确定单元530,进一步用于若未命中任一写缓存表项,确定所述写请求是否命中所述临时缓存表的任一临时缓存表项。
所述处理单元540,进一步用于若命中任一临时缓存表项,将所述写请求中的待写入数据写入至所述临时缓存表项对应的缓存块,并将所述临时缓存表项转移至所述写缓存表中。
在本例中,所述装置还包括:
删除单元580(图中未示出),用于若命中所述读缓存表的任一读缓存表项,删除所述读缓存表项。
所述选择单元550(图中未示出),进一步用于选择空闲的缓存块,并将所述写请求中的待写入数据写入至所述缓存块。
所述更新单元570(图中未示出),进一步用于为所述缓存块生成对应的写缓存表项,并将所述写缓存表项添加至所述写缓存表。
在本例中,所述装置还包括:
所述处理单元540,进一步用于若命中所述写缓存表的任一写缓存表项,将所述写请求中的待写入数据写入至所述写缓存表项对应的缓存块。
在本例中,所述装置还包括:
所述处理单元540,进一步用于若未命中所述临时缓存表的任一临时缓存表项,选择空闲的缓存块,并将所述写请求中的待写入数据写入至所述缓存块。
所述更新单元570(图中未示出),进一步用于为所述缓存块生成对应的写缓存表项,并将所述写缓存表项添加至所述写缓存表。
在本例中,所述装置还包括:
所述选择单元550(图中未示出),进一步用于若不存在空闲的缓存块,选择所述临时缓存表中最新的临时缓存表项对应的缓存块,并将所述写请求中的待写入数据写入至所述缓存块。
所述删除单元580(图中未示出),进一步用于删除所述缓存块对应的临时缓存表项。
所述更新单元570(图中未示出),进一步为所述缓存块生成对应的写缓存表项,并将所述写缓存表项添加至所述写缓存表。
在本例中,所述写缓存表、所述读缓存表和所述临时缓存表的各表项包括数据位图,所述数据位图用于表征对应的缓存块中实际写入数据的扇区。
本申请处理IO请求的装置的实施例可以应用在存储设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在存储设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本申请处理IO请求的装置所在存储设备的一种硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的存储设备通常根据该处理IO请求的装置的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种处理IO请求的方法,应用于存储设备,其特征在于,包括:
接收读请求,确定所述读请求是否命中预设的读缓存表的任一读缓存表项;其中,所述读缓存表记录处理读请求时缓存的有效数据;
若未命中任一读缓存表项,确定所述读请求是否命中预设的写缓存表的任一写缓存表项;其中,所述写缓存表记录处理写请求时缓存的脏数据;
若未命中任一写缓存表项,确定所述读请求是否命中预设的临时缓存表的任一临时缓存表项;其中,所述临时缓存表记录已写入磁盘空间的脏数据;
若命中任一临时缓存表项,从所述临时缓存表项对应的缓存块中获取并返回待读取数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述写缓存表选择若干写缓存表项;
将选中的写缓存表项记录的脏数据写入至磁盘空间;
将选中的写缓存表项转移至所述临时缓存表中。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收写请求,确定所述写请求是否命中所述读缓存表的任一读缓存表项;
若未命中任一读缓存表项,确定所述写请求是否命中所述写缓存表的任一写缓存表项;
若未命中任一写缓存表项,确定所述写请求是否命中所述临时缓存表的任一临时缓存表项;
若命中任一临时缓存表项,将所述写请求中的待写入数据写入至所述临时缓存表项对应的缓存块,并将所述临时缓存表项转移至所述写缓存表中。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若命中所述读缓存表的任一读缓存表项,删除所述读缓存表项;
选择空闲的缓存块,并将所述写请求中的待写入数据写入至所述缓存块;
为所述缓存块生成对应的写缓存表项,并将所述写缓存表项添加至所述写缓存表。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若命中所述写缓存表的任一写缓存表项,将所述写请求中的待写入数据写入至所述写缓存表项对应的缓存块。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若未命中所述临时缓存表的任一临时缓存表项,选择空闲的缓存块,并将所述写请求中的待写入数据写入至所述缓存块;
为所述缓存块生成对应的写缓存表项,并将所述写缓存表项添加至所述写缓存表。
7.根据权利要求4或6所述的方法,其特征在于,所述方法还包括:
若不存在空闲的缓存块,选择所述临时缓存表中最新的临时缓存表项对应的缓存块,并将所述写请求中的待写入数据写入至所述缓存块;
删除所述缓存块对应的临时缓存表项;
为所述缓存块生成对应的写缓存表项,并将所述写缓存表项添加至所述写缓存表。
8.根据权利要求1至6任一所述的方法,其特征在于,所述写缓存表、所述读缓存表和所述临时缓存表的各表项包括数据位图,所述数据位图用于表征对应的缓存块中实际写入数据的扇区。
9.一种处理IO请求的装置,应用于存储设备,其特征在于,包括:
第一确定单元,用于接收读请求,确定所述读请求是否命中预设的读缓存表的任一读缓存表项;其中,所述读缓存表记录处理读请求时缓存的有效数据;
第二确定单元,用于若未命中任一读缓存表项,确定所述读请求是否命中预设的写缓存表的任一写缓存表项;其中,所述写缓存表记录处理写请求时缓存的脏数据;
第三确定单元,用于若未命中任一写缓存表项,确定所述读请求是否命中预设的临时缓存表的任一临时缓存表项;其中,所述临时缓存表记录已写入磁盘空间的脏数据;
处理单元,用于若命中任一临时缓存表项,从所述临时缓存表项对应的缓存块中获取并返回待读取数据。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
选择单元,用于从所述写缓存表选择若干写缓存表项;
写入单元,用于将选中的写缓存表项记录的脏数据写入至磁盘空间;
更新单元,用于将选中的写缓存表项转移至所述临时缓存表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810776037.1A CN108984432B (zh) | 2018-07-16 | 2018-07-16 | 一种处理io请求的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810776037.1A CN108984432B (zh) | 2018-07-16 | 2018-07-16 | 一种处理io请求的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108984432A CN108984432A (zh) | 2018-12-11 |
CN108984432B true CN108984432B (zh) | 2020-08-14 |
Family
ID=64548753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810776037.1A Active CN108984432B (zh) | 2018-07-16 | 2018-07-16 | 一种处理io请求的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108984432B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117234430B (zh) * | 2023-11-13 | 2024-02-23 | 苏州元脑智能科技有限公司 | 一种缓存框架、数据处理方法、装置、设备和存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6321298B1 (en) * | 1999-01-25 | 2001-11-20 | International Business Machines Corporation | Full cache coherency across multiple raid controllers |
US20100057984A1 (en) * | 2008-08-26 | 2010-03-04 | Seagate Technology Llc | Memory hierarchy containing only non-volatile cache |
CN105630700B (zh) * | 2015-04-29 | 2019-03-19 | 上海磁宇信息科技有限公司 | 一种具有二级缓存结构的存储系统及读写方法 |
CN106775466A (zh) * | 2016-12-05 | 2017-05-31 | 深圳市金泰克半导体有限公司 | 一种无dram的ftl读缓存管理方法及装置 |
CN107221351B (zh) * | 2017-05-27 | 2020-06-02 | 华中科技大学 | 一种固态盘系统中纠错码的优化处理方法及其应用 |
CN107943719B (zh) * | 2017-11-28 | 2020-07-21 | 杭州电子科技大学 | 一种基于请求分类的闪存转换层控制方法 |
-
2018
- 2018-07-16 CN CN201810776037.1A patent/CN108984432B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108984432A (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459826B (zh) | 一种处理io请求的方法及装置 | |
CN108268219B (zh) | 一种处理io请求的方法及装置 | |
US9298384B2 (en) | Method and device for storing data in a flash memory using address mapping for supporting various block sizes | |
CN108647151A (zh) | 一种全闪系统元数据落盘方法、装置、设备及存储介质 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
US11269783B2 (en) | Operating method for data storage device | |
CN109240944B (zh) | 一种基于可变长缓存行的数据读写方法 | |
CN111061655A (zh) | 存储设备的地址转换方法与设备 | |
WO2020192710A1 (zh) | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 | |
CN106095331B (zh) | 一种固定大文件内部资源的控制方法 | |
WO2014153931A1 (zh) | 文件存储方法、装置、访问客户端及元数据服务器系统 | |
KR101026634B1 (ko) | 하이브리드 플래시 메모리의 데이터 저장 방법 | |
CN108984432B (zh) | 一种处理io请求的方法及装置 | |
US11366609B2 (en) | Technique for encoding deferred reference count increments and decrements | |
CN108334457B (zh) | 一种io处理方法及装置 | |
US9104325B2 (en) | Managing read operations, write operations and extent change operations | |
WO2022257685A1 (zh) | 存储系统、网卡、处理器、数据访问方法、装置及系统 | |
US10929032B1 (en) | Host hinting for smart disk allocation to improve sequential access performance | |
CN111290975A (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
CN114840452A (zh) | 一种控制部件 | |
CN111290974A (zh) | 用于存储设备的缓存淘汰方法与存储设备 | |
CN110968527A (zh) | Ftl提供的缓存 | |
CN110968520B (zh) | 基于统一缓存架构的多流存储设备 | |
CN113254363A (zh) | 具有部分逻辑到物理地址转换表的非易失性存储控制器 | |
CN115509437A (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 |