一种处理IO请求的方法及装置与流程

文档序号:14910778发布日期:2018-07-10 23:21阅读:273来源:国知局

本申请涉及存储领域,特别涉及一种处理IO请求的方法及装置。



背景技术:

存储设备能为用户提供方便快捷的数据写入、数据保护和数据读取的功能。其中,实现数据的快速读写是衡量存储设备性能的重要标准。

参见图1,为现有技术的一种存储设备的架构图,如图1所示,存储设备包括以下功能模块:

前端IO模块负责解析各类网络存储协议,比如FC(Fibre Channel,光纤通道)技术、ISCSI(Internet Small Computer System Interface,互联网小型计算机系统接口)等,将用户发送的读写请求转化为存储设备内部的IO(Input/Output,输入/输出)请求。

LUN(Logical Unit Number,逻辑单元号)业务模块负责LUN空间的分配和管理,以及执行基于LUN的高级功能,比如:精简配置、重删、快照、压缩等。

IO数据读写缓存模块,负责IO数据的缓存,通过各种写缓存算法和读缓存算法,解决CPU处理和硬盘处理之间速度不对等的问题,降低IO请求的响应延时;存储设备一般用内存来做缓存,并提供掉电保护的能力。

元数据读写缓存模块,负责元数据的缓存,由于元数据间的逻辑关系相比IO数据间的逻辑关系复杂,因此,缓存元数据采用的读写算法与缓存IO数据的算法不同。

硬盘读写模块,负责向硬盘中写入或读取数据,硬盘可以包括机械硬盘和固态硬盘,通常情况下,存储设备会通过RAID(Redundant Arrays of Independent Disks,磁盘阵列)技术将硬盘进行组织,以提供冗余数据保护。

如图1所示,IO数据读写缓存模块和元数据读写缓存模块处于LUN业务模块和硬盘读写模块之间,主要解决二者读写数据的速度不同的问题。

为保持较高的读请求的缓存命中率,存储设备需要保持简单、有规律的IO模型,这种情况下,会简化LUN业务模块的功能,取消精简配置、重删、快照和压缩等功能。

然而,固态硬盘的磨损次数有限,当存储设备以固态硬盘作为持久缓存介质时,应当延长固态硬盘的寿命。存储设备的LUN业务模块简化了高级功能后,无法减少固态硬盘中闪存介质的磨损。



技术实现要素:

有鉴于此,本申请提供一种处理IO请求的方法及装置,用以减少固态硬盘的闪存介质的磨损,从而延长存储设备的使用寿命。

具体地,本申请是通过如下技术方案实现的:

一种处理IO请求的方法,应用于存储设备,所述存储设备的持久存储介质为固态硬盘,包括:

接收写请求,将所述写请求中的待写入数据写入到缓存空间,并返回写入成功信息;

基于预设的业务策略对所述待写入数据进行处理;其中,所述业务策略包括重删和压缩中的一种或两种;

将处理过的所述待写入数据写入到所述固态硬盘。

在所述处理IO请求的方法中,所述方法还包括:

在基于所述业务策略处理所述待写入数据后,基于处理结果,更新所述缓存空间中的元数据;其中,所述元数据包括逻辑地址映射表、重删指纹映射库、本地缓存表,逻辑地址映射表包括逻辑地址和指纹的映射关系,重删指纹映射库包括物理地址和指纹的映射关系,本地缓存表包括逻辑地址、数据长度和本地缓存地址的映射关系;

基于预设的异步存储策略,将所述元数据写入到所述固态硬盘。

在所述处理IO请求的方法中,所述方法还包括:

接收读请求,确定所述读请求是否命中缓存;

如果未命中缓存,基于所述读请求中的逻辑地址查找所述元数据,确定所述读请求的待读取数据的物理地址;

根据所述待读取数据的物理地址和所述读请求中的数据长度读取所述待读取数据,并返回所述待读取数据。

在所述处理IO请求的方法中,所述方法还包括:

如果命中缓存,从所述缓存空间中读取所述待读取数据,并返回所述待读取数据;其中,所述缓存空间中的数据为处理所述写请求时写入的脏数据。

在所述处理IO请求的方法中,所述方法还包括:

当所述存储设备重启,从所述固态硬盘中将所述元数据读取到所述缓存空间。

一种处理IO请求的装置,应用于存储设备,所述存储设备的持久性存储介质为固态硬盘,包括:

接收单元,用于接收写请求,将所述写请求中的待写入数据写入到缓存空间,并返回写入成功信息;

处理单元,用于基于预设的业务策略对所述待写入数据进行处理;其中,所述业务策略包括重删和压缩中的一种或两种;

写入单元,用于将处理过的所述待写入数据写入到所述固态硬盘。

在所述处理IO请求的装置中,所述装置还包括:

更新单元,用于在基于所述业务策略处理所述待写入数据后,基于处理结果,更新所述缓存空间中的元数据;其中,所述元数据包括逻辑地址映射表、重删指纹映射库、本地缓存表,逻辑地址映射表包括逻辑地址和指纹的映射关系,重删指纹映射库包括物理地址和指纹的映射关系,本地缓存表包括逻辑地址、数据长度和本地缓存地址的映射关系;

所述写入单元,进一步用于基于预设的异步存储策略,将所述元数据写入到所述固态硬盘。

在所述处理IO请求的装置中,所述装置还包括:

所述接收单元,进一步用于接收读请求,确定所述读请求是否命中缓存;

查找单元,用于如果未命中缓存,基于所述读请求中的逻辑地址查找所述元数据,确定所述读请求的待读取数据的物理地址;

读取单元,用于根据所述待读取数据的物理地址和所述读请求中的数据长度读取所述待读取数据,并返回所述待读取数据。

在所述处理IO请求的装置中,所述装置还包括:

所述读取单元,进一步用于如果命中缓存,从所述缓存空间中读取所述待读取数据,并返回所述待读取数据;其中,所述缓存空间中的数据为处理所述写请求时写入的脏数据。

在所述处理IO请求的装置中,所述装置还包括:

所述读取单元,进一步用于当所述存储设备重启,从所述固态硬盘中将所述元数据读取到所述缓存空间。

在本申请实施例中,存储设备接收写请求,将上述写请求中的待写入数据写入到缓存空间后即可返回写入成功信息,显著提高了处理IO请求的响应时间;存储设备可以基于预设的业务策略对缓存空间中的上述待写入数据进行处理,其中,上述业务策略包括重删和压缩中的一种或两种,然后将处理过的上述待写入数据写入到固态硬盘;

由于存储设备可以对上述待写入数据进行重删或压缩处理,减少了向固态硬盘写入的数据量,从而减少固态硬盘中闪存介质的磨损,延长了存储设备的使用寿命;此外,存储设备在将上述写请求的待写入数据写入到缓存空间后即返回写入成功信息,从而避免了对上述待写入数据进行处理产生的IO响应的时延。

附图说明

图1是为现有技术的一种存储设备的架构图;

图2是本申请示出的一种存储设备的架构图;

图3是本申请示出的一种处理IO请求的方法的流程图;

图4是本申请示出的一种处理写请求的流程图;

图5是本申请示出的一种处理读请求的流程图;

图6是本申请示出的一种处理IO请求的装置的实施例框图;

图7是本申请示出的一种处理IO请求的装置的硬件结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对现有技术方案和本发明实施例中的技术方案作进一步详细的说明。

参见图2,为本申请示出的一种存储设备的架构图,如图2所示,IO数据读写缓存模块置于LUN业务模块之前,先于LUN业务模块处理IO请求。使得存储设备在接收到写请求时,将写请求中的待写入数据写入到缓存空间中即可返回写入成功信息,提高处理IO请求的响应时间。

需要指出的是,本申请中,IO数据读写缓存模块只在处理写请求时缓存待写入数据,在处理读请求时不缓存待读取数据,因此极大地减少了缓存数据所需的内存空间。在这种情况下,元数据读写缓存模块可以使用更多的内存空间用于缓存元数据,从而支持LUN业务模块实现更丰富的业务功能。

LUN业务模块可以基于预设的业务策略对缓存空间中的待写入数据进行处理,丰富了存储设备的业务功能。其中,上述业务策略可以包括重删、压缩和精简配置中的一种或多种的组合。

参见图3,为本申请示出的一种处理IO请求的方法的流程图,该方法应用于存储设备,该存储设备的持久性存储介质为固态硬盘,所述方法包括以下步骤:

步骤301:接收写请求,将所述写请求中的待写入数据写入到缓存空间,并返回写入成功信息。

存储设备接收到写请求,首先可以将上述写请求中的待写入数据写入到缓存空间,然后向发送写请求的设备返回写入成功信息。

需要指出的是,缓存空间可以为待写入数据提供掉电保护。具体可参照现有相关技术,本申请在此不再赘述。

通过该措施,可以显著提高处理写请求的响应时间。

步骤302:基于预设的业务策略对所述待写入数据进行处理;其中,所述业务策略包括重删和压缩中的一种或两种。

存储设备可以基于预设的业务策略对缓存空间中的上述待写入数据进行处理,其中,上述业务策略可以是重删,也可以是压缩,或者是重删和压缩。

需要指出的是,存储设备对上述待写入数据进行处理的时机可以是在待写入数据保存到缓存空间之后的某个时间点。换而言之,存储设备可以在将多个写请求中的待写入数据保存到缓存空间后,再基于上述业务策略进行处理。

参见图4,为本申请示出的一种处理写请求的流程图,如图4所示,存储设备将写请求中的待写入数据保存到缓存空间后,会异步处理上述待写入数据。

通过上述措施,存储设备可以减少向固态硬盘写入的数据量,减少固态硬盘的闪存介质的磨损,从而延长存储设备的使用寿命。

在本申请实施例中,存储设备在基于上述业务策略处理上述待写入数据后,可以基于处理结果,更新缓存空间中的元数据。

其中,上述元数据包括与上述业务策略相关的元数据和存储流程相关的元数据,可以包括逻辑地址映射表、重删指纹映射库和本地缓存表,逻辑地址映射表包括逻辑地址和指纹的映射关系,重删指纹映射库包括物理地址和指纹的映射关系,本地缓存表包括逻辑地址、数据长度和本地缓存地址的映射关系。

具体的更新过程可以参照现有相关技术,本申请在此不再赘述。

参见图4,存储设备可以基于预设的异步存储策略,将上述元数据写入到固态硬盘。

比如,存储设备可以在上述缓存空间中的元数据达到预设的容量阈值时,将元数据写入固态硬盘;

或者,存储设备可以周期性地将上述缓存空间中的元数据写入到固态硬盘。

后续当存储设备重启,可以从上述固态硬盘中将上述元数据读取到上述缓存空间,从而使得存储设备可以直接通过缓存空间中的元数据处理IO请求,提高处理IO请求的响应时间。

步骤303:将处理过的所述待写入数据写入到所述固态硬盘。

存储设备在基于上述业务策略处理缓存空间中的待写入数据,可以将上述待写入数据写入到固态硬盘。

至此,存储设备完成对写请求的处理过程。

参见图5,为本申请示出的一种处理写请求的流程图,如图5所示,存储设备接收到读请求,首先确定上述读请求是否命中缓存。

具体地,存储设备可以基于读请求中的逻辑地址(包括LUN标识和数据起始地址)查找上述本地缓存表,确定是否存在对应的本地缓存表项。

一方面,如果存在对应的本地缓存表项,说明命中缓存,存储设备可以从上述缓存空间中读取上述待读取数据,并向发送读请求的设备返回上述待读取数据。

需要指出的是,缓存空间中的数据全都是处理写请求时写入的脏数据。

另一方面,如果不存在对应的本地缓存表项,说明未命中缓存,在这种情况下,存储设备可以基于上述读请求中的逻辑地址查找上述元数据,确定上述读请求的待读取数据的物理地址。

具体地,存储设备可以基于上述逻辑地址查找上述逻辑地址映射表,确定上述待读取数据的指纹,然后基于上述待读取数据的指纹查找上述重删指纹映射库,确定上述待读取数据的物理地址。

进一步地,存储设备可以基于上述物理地址和上述读请求中的数据长度从固态硬盘中读取上述待读取数据,然后向发送读请求的设备返回上述待读取数据。

由于保存元数据的缓存空间较大,缓存空间中可保存大量元数据用于处理IO请求,提高了处理IO请求的响应时间。而固态硬盘本身的响应速度较快,取消处理读请求时缓存待读取数据的步骤,并不会对处理读请求造成太大的影响。因此,从整体上看,处理写请求和处理读请求的响应时间都减少了。

综上所述,在本申请实施例中,存储设备接收写请求,可以将上述写请求中的待写入数据写入到缓存空间后即返回写入成功信息,显著提高了处理写请求的响应时间;

存储设备基于预设的业务策略对上述待写入数据进行异步处理,然后将处理过的上述待写入数据写入到固态硬盘;上述业务策略包括重删或压缩中的一种或两种,经过处理后的待写入数据的数据量变小,减少了向固态硬盘写入待写入数据造成的闪存介质的磨损,有效延长了存储设备的使用寿命;

此外,本申请中,存储设备在处理读请求时,不缓存待读取数据,减少了缓存待读取数据的系统开销,也使得更多的内存空间用于缓存元数据,从而提高了处理读请求时查找元数据的速度,减少了处理读请求的响应时间;而大量的元数据也可以更好地支持存储设备执行上述业务策略。

与前述处理IO请求的方法的实施例相对应,本申请还提供了处理IO请求的装置的实施例。

参见图6,为本申请示出的一种处理IO请求的装置的实施例框图:

如图6所示,该处理IO请求的装置60包括:

接收单元610,用于接收写请求,将所述写请求中的待写入数据写入到缓存空间,并返回写入成功信息。

处理单元620,用于基于预设的业务策略对所述待写入数据进行处理;其中,所述业务策略包括重删和压缩中的一种或两种。

写入单元630,用于将处理过的所述待写入数据写入到所述固态硬盘。

在本例中,所述装置还包括:

更新单元640(图中未示出),用于在基于所述业务策略处理所述待写入数据后,基于处理结果,更新所述缓存空间中的元数据;其中,所述元数据包括逻辑地址映射表、重删指纹映射库、本地缓存表,逻辑地址映射表包括逻辑地址和指纹的映射关系,重删指纹映射库包括物理地址和指纹的映射关系,本地缓存表包括逻辑地址、数据长度和本地缓存地址的映射关系。

所述写入单元630,进一步用于基于预设的异步存储策略,将所述元数据写入到所述固态硬盘。

在本例中,所述装置还包括:

所述接收单元610,进一步用于接收读请求,确定所述读请求是否命中缓存。

查找单元650(图中未示出),用于如果未命中缓存,基于所述读请求中的逻辑地址查找所述元数据,确定所述读请求的待读取数据的物理地址。

读取单元660(图中未示出),用于根据所述待读取数据的物理地址和所述读请求中的数据长度读取所述待读取数据,并返回所述待读取数据。

在本例中,所述装置还包括:

所述读取单元660(图中未示出),进一步用于如果命中缓存,从所述缓存空间中读取所述待读取数据,并返回所述待读取数据;其中,所述缓存空间中的数据为处理所述写请求时写入的脏数据。

在本例中,所述装置还包括:

所述读取单元660(图中未示出),进一步用于当所述存储设备重启,从所述固态硬盘中将所述元数据读取到所述缓存空间。

本申请处理IO请求的装置的实施例可以应用在存储设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在存储设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本申请处理IO请求的装置所在存储设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的存储设备通常根据该处理IO请求的装置的实际功能,还可以包括其他硬件,对此不再赘述。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1