一种实现磁盘阵列缓存分区管理的系统、装置及方法

文档序号:6429049阅读:142来源:国知局
专利名称:一种实现磁盘阵列缓存分区管理的系统、装置及方法
技术领域
本发明涉及磁盘阵列的缓存分区技术,尤其涉及针对特定的应用的磁盘阵列缓存分区管理的系统、装置及方法
背景技术
在实际应用中对大容量存储的需求,促使了独立冗余磁盘阵列(RAID,Redundant Array of Independent Disks)技术的诞生,并形成了相应的磁盘阵列产品。RAID技术是将多部硬盘通过RAID控制器(由硬件或软件实现)组成虚拟单台大容量的硬盘使用,其特点是加快对多部硬盘同时读取的速度,以及提高磁盘的容错性。随着互联网的普及及信息容量需求爆炸性的发展,磁盘阵列的需求日益扩大,存储系统作为一种共享资源需要同时向多种不同应用提供服务,譬如针对数据库服务器、文件服务器以及视频服务器这些不同类型的应用,要求存储系统具有不同的负载特征和性能需求。如何将缓存资源分配给最需要的应用,使得其性能最优化,以及使得应用之间的资源竞争有效地减少,便成为缓存器亟待解决的问题。

发明内容
本发明所要解决的技术问题是提供一种实现磁盘阵列缓存分区管理的系统、装置及方法,能够使得应用之间的资源竞争有效地减少。为了解决上述技术问题,本发明提供了一种实现磁盘阵列缓存分区管理的系统, 包括依次连接的一个或多个应用业务模块、缓存池管理装置以及后端存储设备,其中应用业务模块,用于向缓存池管理装置发出读写数据请求,并接收缓存池管理装置返回的数据;缓存池管理装置,用于分区管理缓存池中的缓存空间,针对应用业务设置缓存分区;根据应用业务模块的读写数据请求,将写入后端存储设备中应用业务相应的数据通过分配的缓存分区读取;后端存储设备,用于存储应用业务相应的数据。进一步地,应用业务模块包括应用业务IO线程,缓存池管理装置包括依次连接的缓存分区模块、缓存分配模块以及缓存数据访问模块,后端存储设备包括后端磁盘阵列,其中应用业务IO线程,用于向缓存数据访问模块发出读写数据请求;将缓存数据访问模块返回的数据提供给相应的应用业务;缓存分区模块,用于针对应用业务将缓存池中的缓存空间设置为相应的缓存分区,包括缓存分区总容量以及缓存分区中单位数据块的容量;缓存分配模块,用于根据输入的查找结果,分配具有一个或多个数据块的缓存分区,并向缓存数据访问模块输出数据读写指令或数据读指令;
缓存数据访问模块,用于根据接收的读写数据请求查找相应的缓存分区中状态有效的数据块,并将查找结果输出给缓存分配模块;根据输入的数据读写指令或数据读指令, 将从后端磁盘阵列读取的数据写入分配的缓存分区,和/或将从相应缓存分区中读取的数据返回给应用业务IO线程。进一步地,缓存分配模块根据所述查找结果为数据命中,则将缓存分区数据状态更新为有用,且读写数据请求是从后端磁盘读取数据,或者根据查找结果为数据未命中,则分配缓存分区,并向缓存数据访问模块输出数据读写指令;或者根据查找结果为数据命中,且读写数据请求是从缓存分区读取数据,则向缓存数据访问模块输出数据读指令;缓存数据访问模块根据数据读写指令将从后端磁盘阵列读取的数据写入分配的缓存分区,并将从该缓存分区中读取的数据返回给应用业务IO线程;或者根据数据读指令,将直接从该缓存分区中读取的数据返回给应用业务IO线程。进一步地,缓存池管理装置还包括与缓存分区模块连接的缓存回收模块,其中缓存分区模块每隔一段时间若查询缓存池中的空数据块数目低于低限值,则向缓存回收模块输出缓存回收指令;缓存回收模块,用于根据缓存回收指令将缓存分区中状态处于无用的数据块回收到缓存池中,并将回收的数据块状态更新为空。进一步地,缓存回收模块通过系统回收线程根据缓存回收策略启动相应的缓存分区回收线程,缓存分区回收线程在系统回收线程的启动下调用回收算法回收本缓存分区内状态处于无用的数据块;缓存回收策略包括按优先级回收策略及按缓存分区满足低限数据块回收策略中的任意一种或两种。为了解决上述技术问题,本发明提供了一种实现磁盘阵列缓存分区的缓存池管理装置,包括依次连接的缓存分区模块、缓存分配模块以及缓存数据访问模块,其中缓存分区模块,用于针对应用业务将缓存池中的缓存空间设置为相应的缓存分区;缓存分配模块,用于根据输入的查找结果分配缓存分区,并向缓存数据访问模块输出数据读写指令或数据读指令;缓存数据访问模块,用于根据应用业务模块发出的读写数据请求,查找相应的缓存分区中状态有效的数据块,并将查找结果输出给缓存分配模块;根据输入的数据读写指令或数据读指令,将从后端存储设备读取的数据写入分配的缓存分区,和/或将从相应缓存分区中读取的数据返回给应用业务模块。进一步地,缓存分区模块设置的缓存分区,包括缓存分区总容量以及缓存分区中单位数据 块的容量;缓存分配模块根据所述查找结果为数据命中,则将缓存分区的数据状态更新为有用,且若读写数据请求是从后端磁盘读取数据,或者根据查找结果为数据未命中,则分配具有一个或多个数据块的缓存分区,并向缓存数据访问模块输出数据读写指令;或者根据查找结果为数据命中,且读写数据请求是从缓存分区读取数据,则向缓存数据访问模块输出数据读指令;缓存数据访问模块根据数据读写指令将从后端存储设备读取的数据写入分配的缓存分区,并将从该缓存分区中读取的数据返回给应用业务模块;或者根据数据读指令,将直接从该缓存分区中读取的数据返回给应用业务模块。进一步地,缓存池管理装置还包括与缓存分区模块连接的缓存回收模块,其中缓存分区模块每隔一段时间若查询缓存池中的空数据块数目低于低限值,则向缓存回收模块输出缓存回收指令;缓存回收模块,用于根据缓存回收指令和缓存回收策略将缓存分区中状态处于无用的数据块回收到缓存池中,并将回收的数据块状态更新为空;缓存回收策略包括按优先级回收策略及按缓存分区满足低限数据块回收策略中任意的一种或两种。为了解决上述技术问题,本发明提供了一种实现磁盘阵列缓存分区管理的方法, 包括缓存池管理装置对缓存池中的缓存空间进行分区管理,针对应用业务设置缓存分区。进一步地,该方法还包括应用业务模块向缓存池管理装置发送读写数据请求;缓存池管理装置根据接收的读写数据请求,将写入后端存储设备中应用业务相应的数据通过分配的缓存分区读取。进一步地,缓存池管理装置针对应用业务设置的缓存分区,包括缓存分区总容量以及缓存分区中单位数据块的容量。进一步地,应用业务模块向所述缓存池管理装置发送的读写数据请求包括从后端存储设备读取数据和从缓存分区读取数据;缓存池管理装置根据接收的读写数据请求,将写入后端存储设备中应用业务相应的数据通过分配的缓存分区读取,具体包括根据接收的读写数据请求查找相应的缓存分区中状态有效的数据块,根据查找结果分配具有一个或多个数据块的缓存分区,并将从后端存储设备读取的数据写入分配的缓存分区,和/或将从相应缓存分区中读取的数据返回给应用业务模块。进一步地,缓存池管理装置根据查找结果分配具有一个或多个数据块的缓存分区,并将从后端存储设备读取的数据写入分配的缓存分区,和/或将从相应缓存分区中读取的数据返回给应用业务模块,具体包括根据查找结果为数据命中,则将缓存分区的数据状态更新为有用,且若读写数据请求是从后端磁盘读取数据,或者根据查找结果为数据未命中,则分配具有一个或多个数据块的缓存分区,将从后端存储设备读取的数据写入分配的缓存分区,并将从该缓存分区中读取的数据返回给应用业务模块;或者根据查找结果为数据命中,且读写数据请求是从缓存分区读取数据,则将直接从该缓存分区中读取的数据返回给应用业务模块。
进一步地,该方法还包括缓存池管理装置每隔一段时间若查询缓存池中的空数据块数目低于低限值,则根据缓存回收策略将缓存分区中状态处于无用的数据块回收到缓存池中,并将回收的数据块状态更新为空;缓存回收策略包括按优先级回收策略及按缓存分区满足低限数据块回收策略。本发明由于能够针对特定的应用业务动态地将缓存分成多个区域,缓存分区中的数据块可自动地在多个缓存分区间调配,因此可将缓存资源分配给最需要的应用业务,使得缓存资源的应用性能最优化,同时使得应用业务之间的资源竞争有效地减少。


图1是本发明针对后端磁盘阵列的缓存进行分区的示意图 图2是本发明的实现磁盘阵列缓存分区管理的系统实施例及装置实施例的结构示意图;图3是本发明的实现磁盘阵列缓存分区管理的方法实施例流程图。
具体实施例方式以下结合附图和优先实施例对本发明的技术方案进行详细地阐述。以下例举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。本发明针对磁盘阵列提供了一种缓存动态分区方法,它基于各类应用业务中的各种服务器(包括数据库服务器、文件服务器以及多媒体服务器中的一种或多种)对缓存资源进行分区管理,如图1所示。由于每个应用都建立在后端磁盘的磁盘阵列的逻辑单元号(LUN,Logical Unit Number)之上,因此本发明针对每个LUN设置应用业务的优先级、相应的缓存分区的总容量以及缓存分区中数据块大小。每个独立的缓存分区可以根据应用业务及其服务器的负载特征选择设置适合的数据块大小,以此来提高缓存资源的利用率和数据的命中率;譬如,针对数据库服务器设置相应的缓存分区中每一数据块大小为4K,针对文件服务器设置相应的缓存分区中每一数据块大小为16k,针对视频服务器设置相应的缓存分区中每一数据块大小为64K,这对于缓存数据的查找以及对缓存内元数据的管理的效率是相当高的;同时针对每个缓存分区所对应的磁盘阵列选择相应的条带大小,优化写入磁盘的操作。本发明还针对缓存分区通过可配置的缓存回收策略来回收缓存资源,包括按优先级回收策略、按缓存分区满足低限数据块回收策略以及按....回收策略,从而实现针对不同应用级别业务的缓存区分服务,对关键的应用业务可分配较多的缓存资源,以保证关键的业务有充分的缓存资源使用。同时,本发明将按照应用业务的需求分配缓存分区和按缓存回收策略回收缓存空间相结合的缓存分配机制,使得针对不同的应用业务使用不同的缓存(即缓存分区容量和缓存分区中数据块大小)成为可能。这里按优先级回收策略是指从在不同的缓存分区中按应用业务的优先级回收不同的缓存资源,譬如对于应用业务优先级低的缓存资源回收要优先回收。按优先级回收缓存策略,可以对各缓存分区进行动态调节。本发明提供的实现磁盘阵列缓存分区管理的系统实施例,其结构如图2所示,包括依次连接的一个或多个应用业务模块、缓存池管理装置以及后端存储设备,其中
应用业务模块,用于向缓存池管理装置发出读写数据请求,并接收缓存池管理装置返回的数据;缓存池管理装置,用于分区管理缓存池中的缓存空间,针对应用业务设置缓存分区;根据应用业务模块的读写数据请求,将写入后端存储设备中应用业务相应的数据通过分配的缓存分区读取;
后端存储设备,用于存储应用业务模块相应的数据。图2所示的缓存池管理装置进一步包括依次连接的缓存分区模块、缓存分配模块以及缓存数据访问模块,应用业务模块包括应用业务IO线程(图2中未示出),后端存储设备包括后端磁盘阵列,其中应用业务IO线程,用于向缓存数据访问模块发出读写数据请求;将缓存数据访问模块返回的数据提供给相应的应用业务;缓存分区模块,用于针对应用业务将缓存池中的缓存空间设置为相应的缓存分区,包括缓存分区总容量以及缓存分区中单位数据块的容量;缓存分配模块,用于根据输入的查找结果,分配数据块数目为N的缓存分区,并向缓存数据访问模块输出数据读写指令或数据读指令,N为大于或等于1的整数;缓存数据访问模块,用于接收的读写数据请求查找相应的缓存分区中状态有效的数据块,并将查找结果输出给缓存分配模块;根据输入的数据读写指令或数据读指令,将从后端磁盘阵列读取的数据写入分配的缓存分区,和/或将从相应缓存分区中读取的数据返回给应用业务IO线程。上述系统实施例中,缓存分配模块根据查找结果为数据命中,则将缓存分区数据状态更新为有用,且是请求从后端磁盘读取数据,或者根据查找结果为数据未命中,则分配数据块数目为N的缓存分区,向缓存数据访问模块输出数据读写指令;或者根据查找结果为数据命中,且是请求从缓存分区读取数据,则向缓存数据访问模块输出数据读指令;缓存数据访问模块根据数据读写指令将从后端磁盘读取的数据写入分配的缓存分区,并将从该缓存分区中读取的数据返回给应用业务IO线程;或者根据数据读指令,将直接从该缓存分区中读取的数据返回给应用业务IO线程。在上述系统实施例中,缓存池管理装置还包括与缓存分区模块连接的缓存回收模块,其中缓存分区模块每隔一段时间若查询缓存池中的空数据块数目低于低限值,则向缓存回收模块输出缓存回收指令;缓存回收模块,用于根据缓存回收指令将缓存分区中状态处于无用的数据块回收到缓存池中,并将回收的数据块状态更新为空。缓存回收模块通过系统回收线程根据缓存回收策略启动相应的缓存分区回收线程,缓存分区回收线程在系统回收线程的启动下回收本区内状态处于无用的数据块。缓存回收策略包括按优先级回收策略及按缓存分区满足低限数据块回收策略。本发明针对上述系统实施例,相应地还提供了实现磁盘阵列缓存分区管理的方法实施例,其流程如图3所示,包括如下步骤101 应用业务通过IO线程发出读写数据请求;
102、103:10线程在缓存分区中查找状态有效的数据块,若查找命中则执行下列步骤,若查找未命中,则执行步骤112 ;104 调用缓存替换算法将缓存的状态更新为数据有用状态;105:判断读写数据请求是否是从后端磁盘读数据,是则执行下列步骤,否则执行步骤109 ;106 判断缓存池中空数据块数目是否低于低限值,是则执行步骤110,否则执行下列步骤;107 分配数据块数目为N的缓存分区;108 调用底层读写接口将后端磁盘上存储的数据块读出至分配的缓存分区中;109 将从缓存分区读取的数据通过IO线程返回给应用业务,结束流程;110 通过系统回收线程根据回收策略启动缓存分区回收缓存空间;111 缓存分区通过回收线程调用回收算法回收不常用的缓存页,返回步骤106执行;112 分配数据块数目为N的缓存分区;113:判断缓存池中空数据块数目是否低于低限值,是则执行下列步骤,否则执行步骤108 ;114 回收缓存空间,执行步骤108。即通过系统回收线程根据回收策略启动缓存分区,缓存分区通过回收线程回收不常 用的缓存页。对于本领域的专业人员来说,在了解了本发明内容和原理后,能够在不背离本发明的原理和范围的情况下,根据本发明的方法进行形式和细节上的各种修正和改变,但是这些基于本发明的修正和改变仍在本发明的权利要求保护范围之内。
权利要求
1.一种实现磁盘阵列缓存分区管理的系统,包括依次连接的一个或多个应用业务模块、缓存池管理装置以及后端存储设备,其中应用业务模块,用于向缓存池管理装置发出读写数据请求,并接收缓存池管理装置返回的数据;缓存池管理装置,用于分区管理缓存池中的缓存空间,针对应用业务设置缓存分区;根据应用业务模块的读写数据请求,将写入后端存储设备中应用业务相应的数据通过分配的缓存分区读取;后端存储设备,用于存储应用业务相应的数据。
2.按照权利要求1所述的系统,其特征在于,所述应用业务模块包括应用业务IO线程,所述缓存池管理装置包括依次连接的缓存分区模块、缓存分配模块以及缓存数据访问模块,所述后端存储设备包括后端磁盘阵列,其中应用业务IO线程,用于向缓存数据访问模块发出所述读写数据请求;将缓存数据访问模块返回的数据提供给相应的应用业务;缓存分区模块,用于针对应用业务将所述缓存池中的缓存空间设置为相应的缓存分区,包括缓存分区总容量以及缓存分区中单位数据块的容量;缓存分配模块,用于根据输入的查找结果,分配具有一个或多个数据块的缓存分区,并向缓存数据访问模块输出数据读写指令或数据读指令;缓存数据访问模块,用于根据接收的所述读写数据请求查找相应的缓存分区中状态有效的数据块,并将所述查找结果输出给缓存分配模块;根据输入的数据读写指令或数据读指令,将从后端磁盘阵列读取的数据写入分配的缓存分区,和/或将从相应缓存分区中读取的数据返回给应用业务IO线程。
3.按照权利要求2所述的系统,其特征在于,所述缓存分配模块根据所述查找结果为数据命中,则将缓存分区数据状态更新为有用,且所述读写数据请求是从后端磁盘读取数据,或者根据所述查找结果为数据未命中,则分配所述缓存分区,并向所述缓存数据访问模块输出所述数据读写指令;或者根据所述查找结果为数据命中,且所述读写数据请求是从所述缓存分区读取数据,则向所述缓存数据访问模块输出所述数据读指令;所述缓存数据访问模块根据数据读写指令将从所述后端磁盘阵列读取的数据写入分配的所述缓存分区,并将从该缓存分区中读取的数据返回给所述应用业务IO线程;或者根据所述数据读指令,将直接从该缓存分区中读取的数据返回给所述应用业务IO线程。
4.按照权利要求2或3所述的系统,其特征在于,所述缓存池管理装置还包括与所述缓存分区模块连接的缓存回收模块,其中所述缓存分区模块每隔一段时间若查询缓存池中的空数据块数目低于低限值,则向缓存回收模块输出缓存回收指令;缓存回收模块,用于根据所述缓存回收指令将缓存分区中状态处于无用的数据块回收到所述缓存池中,并将回收的数据块状态更新为空。
5.按照权利要求4所述的系统,其特征在于,所述缓存回收模块通过系统回收线程根据缓存回收策略启动相应的缓存分区回收线程,所述缓存分区回收线程在系统回收线程的启动下调用回收算法回收本缓存分区内所述状态处于无用的数据块;所述缓存回收策略包括按优先级回收策略及按缓存分区满足低限数据块回收策略中的任意一种或两种。
6.一种实现磁盘阵列缓存分区的缓存池管理装置,其特征在于,包括依次连接的缓存分区模块、缓存分配模块以及缓存数据访问模块,其中缓存分区模块,用于针对应用业务将缓存池中的缓存空间设置为相应的缓存分区;缓存分配模块,用于根据输入的查找结果分配缓存分区,并向缓存数据访问模块输出数据读写指令或数据读指令;缓存数据访问模块,用于根据应用业务模块发出的读写数据请求,查找相应的缓存分区中状态有效的数据块,并将所述查找结果输出给缓存分配模块;根据输入的数据读写指令或数据读指令,将从后端存储设备读取的数据写入分配的缓存分区,和/或将从相应缓存分区中读取的数据返回给应用业务模块。
7.按照权利要求6所述的缓存池管理装置,其特征在于,缓存分区模块设置的缓存分区,包括缓存分区总容量以及缓存分区中单位数据块的容量;缓存分配模块根据所述查找结果为数据命中,则将所述缓存分区的数据状态更新为有用,且若所述读写数据请求是从后端磁盘读取数据,或者根据所述查找结果为数据未命中, 则分配具有一个或多个数据块的所述缓存分区,并向所述缓存数据访问模块输出所述数据读写指令;或者根据所述查找结果为数据命中,且所述读写数据请求是从所述缓存分区读取数据,则向所述缓存数据访问模块输出所述数据读指令;所述缓存数据访问模块根据所述数据读写指令将从所述后端存储设备读取的数据写入分配的缓存分区,并将从该缓存分区中读取的数据返回给所述应用业务模块;或者根据所述数据读指令,将直接从该缓存分区中读取的数据返回给所述应用业务模块。
8.按照权利要求6或7所述的缓存池管理装置,其特征在于,所述缓存池管理装置还包括与所述缓存分区模块连接的缓存回收模块,其中所述缓存分区模块每隔一段时间若查询缓存池中的空数据块数目低于低限值,则向缓存回收模块输出缓存回收指令;缓存回收模块,用于根据所述缓存回收指令和缓存回收策略将缓存分区中状态处于无用的数据块回收到所述缓存池中,并将回收的数据块状态更新为空;所述缓存回收策略包括按优先级回收策略及按缓存分区满足低限数据块回收策略中任意的一种或两种。
9.一种实现磁盘阵列缓存分区管理的方法,包括 缓存池管理装置对缓存池中的缓存空间进行分区管理,针对应用业务设置缓存分区。
10.按照权利要求9所述的方法,其特征在于,还包括应用业务模块向所述缓存池管理装置发送读写数据请求;所述缓存池管理装置根据接收的所述读写数据请求,将写入后端存储设备中应用业务相应的数据通过分配的缓存分区读取。
11.按照权利要求9或10所述的方法,其特征在于,所述缓存池管理装置针对应用业务设置的所述缓存分区,包括缓存分区总容量以及缓存分区中单位数据块的容量。
12.按照权利要求11所述的方法,其特征在于,所述应用业务模块向所述缓存池管理装置发送的读写数据请求包括从后端存储设备读取数据和从所述缓存分区读取数据;所述缓存池管理装置根据接收的所述读写数据请求,将写入后端存储设备中应用业务相应的数据通过分配的缓存分区读取,具体包括根据接收的所述读写数据请求查找相应的缓存分区中状态有效的数据块,根据查找结果分配具有一个或多个数据块的缓存分区,并将从后端存储设备读取的数据写入分配的缓存分区,和/或将从相应缓存分区中读取的数据返回给所述应用业务模块。
13.按照权利要求12所述的方法,其特征在于,所述缓存池管理装置根据查找结果分配具有一个或多个数据块的缓存分区,并将从后端存储设备读取的数据写入分配的缓存分区,和/或将从相应缓存分区中读取的数据返回给所述应用业务模块,具体包括根据所述查找结果为数据命中,则将所述缓存分区的数据状态更新为有用,且若所述读写数据请求是从后端磁盘读取数据,或者根据所述查找结果为数据未命中,则分配具有一个或多个数据块的所述缓存分区,将从所述后端存储设备读取的数据写入分配的缓存分区,并将从该缓存分区中读取的数据返回给所述应用业务模块;或者根据所述查找结果为数据命中,且所述读写数据请求是从所述缓存分区读取数据,则将直接从该缓存分区中读取的数据返回给所述应用业务模块。
14.按照权利要求10、12或13任一项所述的方法,其特征在于,还包括所述缓存池管理装置每隔一段时间若查询缓存池中的空数据块数目低于低限值,则根据缓存回收策略将缓存分区中状态处于无用的数据块回收到所述缓存池中,并将回收的数据块状态更新为空;所述缓存回收策略包括按优先级回收策略及按缓存分区满足低限数据块回收策略。
全文摘要
本发明提供了实现磁盘阵列缓存分区管理的系统、装置及方法,其中系统包括一个或多个应用业务模块向缓存池管理装置发出读写数据请求,并接收缓存池管理装置返回的数据;缓存池管理装置分区管理缓存池中的缓存空间,针对应用业务设置缓存分区;根据应用业务模块的读写数据请求,将写入后端存储设备中应用业务相应的数据通过分配的缓存分区读取;后端存储设备存储应用业务相应的数据。本发明可将缓存资源分配给最需要的应用业务,使得缓存资源的应用性能最优化,同时使得应用业务之间的资源竞争有效地减少。
文档编号G06F12/08GK102262512SQ201110205628
公开日2011年11月30日 申请日期2011年7月21日 优先权日2011年7月21日
发明者吕烁, 文中领 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1