专利名称:一种缓存分配方法及装置的制作方法
技术领域:
本发明涉及通信领域,特别涉及一种缓存分配方法及装置。
背景技术:
固态硬盘(SSD,Solid State Disk或Solid State Drive),也称作电子硬盘或者 固态电子盘,由于固态硬盘没有普通硬盘的旋转介质,因而抗震性极佳,且其芯片的工作温 度范围很宽(-40°C 85°C),目前广泛应用于军事、车载、工控、视频监控、网络监控、网络 终端、电力、医疗、航空等、导航设备等领域,SSD Cache是将SSD运用到存储系统中一种新 型应用,属于二级缓存,它主要利用SSD读写响应较短,尤其是读响应时间很短,将热点数 据存储在SSD中,当访问这些数据时,可以从SSD中而不是从传统磁盘中读取,这样可以大 大提高系统的性能,1-4个SSD盘片组成SSD Cache资源池,SSD盘片一般只能供存储系统 的一端控制器使用,当存储系统的一端控制器失效后,存储在其中的热点数据丢失,从而影 响系统的整体性能。现有技术中,SSD盘片组成的SSD Cache资源池可以供存储系统的两端控制器使 用,即使系统的一端控制器失效,另一个控制器也会接管其业务,不会影响系统的整体性 能。但是在上述现有技术中,如果出现分属于两端控制器的两个或两个以上的逻辑单 元(LUN,Logical Unit Number)需要同时访问一处缓存资源中数据的问题,那么两端控制 器之间便需要对因存储数据及读取数据产生的冲突进行通信协商,协商过程比较复杂,可 能会出现异常造成数据丢失等严重后果。
发明内容
本发明实施例提供了一种缓存分配方法及装置,可以避免两个及两个以上LUN同 时访问缓存资源池中的数据,从而避免控制两端控制器之间复杂的通信协商过程,保障数 据的安全。本发明实施例提供的一种缓存分配方法包括确定获取到的业务数据需要存储的逻辑单元;查找与所述逻辑单元对应的虚拟 子资源池;将所述业务数据存储于查找到的虚拟子资源池所包括的缓存资源中;其中,缓 存资源池被预先划分为与所述逻辑单元数量相等的虚拟子资源池,每个虚拟子资源池对应 一个不同的逻辑单元,且每个虚拟子资源池所包括的缓存资源存储对应逻辑单元的业务数 据。本发明实施例提供的一种缓存分配装置包括确定单元,用于确定获取到的业务数据需要存储的逻辑单元;查找单元,用于查找 与所述逻辑单元对应的虚拟子资源池;存储单元,用于将所述业务数据存储于查找到的虚 拟子资源池所包括的缓存资源中;划分单元,用于缓存资源池被预先划分为与所述逻辑单 元数量相等的虚拟子资源池。
从以上技术方案可以看出,本发明实施例具有以下优点根据LUN的数量将缓存 资源池划分为数量相等的虚拟子资源池,每个虚拟子资源池与不同的逻辑单元LUN—一对 应,每个虚拟子资源池只供各自对应的LUN访问缓存数据,因此避免分别来自两端控制器 的两个及两个以上LUN同时访问同一缓存数据,从而避免控制两端控制器之间为访问同一 缓存资源数据而进行复杂的通信协商过程,保障数据的安全。
图1为本发明实施例中缓存分配方法的一个实施例示意图;图2为本发明实施例缓存分配过程中的缓存系统结构示意图;图3为本发明实施例中缓存分配方法的另一个实施例示意图;图4为本发明实施例中缓存分配装置的一个实施例示意图。
具体实施方式
本发明实施例提供了一种缓存分配方法及装置,可以将缓存资源池供存储系统的 两端控制器均衡使用,即使系统的一端控制器失效,另一个控制器也会接管其业务,因实现 双控而提高系统整体性能,下面分别进行详细说明。请参阅图1,本发明实施例中缓存分配方法的一个实施例包括101、确定获取到的业务数据需要存储的逻辑单元;各类型业务数据均需要存储到系统的逻辑单元LUN中,LUN是唯一的,不同LUN的 业务数据类型可能会是相同的。本发明实施例中,首先要确定获取得到的业务数据对应的LUN。102、查找与逻辑单元对应的虚拟子资源池;本发明实施例中,SSD Cache缓存资源被预先划分为与逻辑单元数量相等的虚拟 子资源池,每个虚拟子资源池与一个不同的逻辑单元对应,即每个虚拟子资源池的数据仅 供一个LUN访问,而且每个虚拟子资源池所包括的缓存资源存储对应逻辑单元的业务数 据,每个LUN在其对应的虚拟子资源池中对数据的访问均独立于其他LUN进行,但每个虚拟 子资源池的数据有机会供任意LUN访问。需要说明的是,各SSD Cache虚拟子资源池的初始容量可以相同,也可以不同,但 各虚拟子资源池只能使用划分的容量。103、将业务数据存储于查找到的虚拟子资源池所包括的缓存资源中。根据在步骤102中查找到与LUN对应的虚拟子资源池后,将业务数据也对应的存 储于分属不同LUN的不同虚拟子资源池所包括的缓存资源中。本发明实施例中,确定业务数据所要存储的逻辑单元,查找逻辑单元对应的虚拟 子资源池并将该业务数据存储其中,由于SSD Cache缓存资源被预先划分为与逻辑单元数 量相等的虚拟子资源池,每个虚拟子资源池与一个不同的逻辑单元对应,因此避免分别来 自两端控制器的多个LUN同时访问同一缓存数据,从而避免控制两端控制器之间为访问同 一缓存资源数据而进行复杂的通信协商过程。本发明实施例中,缓存分配过程中的缓存系统结构示意图请参阅图2,缓存系统有 两端控制器,201为第一控制器,202为第二控制器,203是缓存系统的业务层,LUNO, LUNl及LUN2均为业务层的业务,其中LUNO与LUNl由第一控制器201控制,LUN2由第二控制器 202控制,204是缓存系统的资源层,其中,208为固态硬盘缓存资源层,由固态硬盘组成,根 据不同的LUN业务的数量,将SSD Cache资源池划分成不同数量的SSD Cache虚拟子资源 池,具体划分为第一虚拟子资源池205,第二虚拟子资源池206,第三虚拟子资源池207,该 各虚拟子资源池对应各自的LUN业务,如图所示,第一虚拟子资源池205对应LUN0,第二虚 拟子资源池206对应LUN1,第三虚拟子资源池207对应LUN2。为了便于理解,下面以另一实施例对本发明实施例中的缓存分配方法进行详细描 述,请参阅图3,本发明实施例中的缓存分配方法的另一实施例包括301 303、本发明实施中步骤301至303的内容,请参见前述图1所述实施例中 步骤101至103所描述的内容,此处不再赘述。304、当到达预置时长时,获取所划分的虚拟子资源池中所存储数据的访问热度 值;在SSD Cache资源池系统内,可设置调整线程,预先设置一定的时长,每到达该预 置的时长则获取步骤101中所划分的虚拟子资源池中存储的数据的访问热度值,该时长的 设定与实际应用过程相关,时长的具体数值此处不作限定。需要说明的是,访问热度值包括虚拟子资源池中存储的数据的访问频率及虚拟子 资源池中存储的热点数据数量,访问频率越高,热点数据数量越多,表示访问热度值越高。需要进一步说明的是,虚拟子资源池中存储数据的访问频率及虚拟子资源池中存 储的热点数据数量均可由系统内部的计数器进行计数,具体为本领域技术人员公知技术, 此处不再赘述。305、将虚拟子资源池的容量调整至与当前存储数据访问热度值相匹配的容量;根据预置的访问热度值与虚拟子资源池容量的匹配关系,将虚拟子资源池的容量 调整至与当前存储数据访问热度值相匹配的容量。访问热度值可以在一定程度上反映访问存储数据的频繁程度,一般访问数据越频 繁则需要的缓存资源越多,因此可以设置为,访问热度值则对应的虚拟子资源池的容量也 大,访问热度值小则对应的虚拟子资源池的容量也小,具体设置过程与实际应用过程相关, 此处不作限定。在系统内,可预先设置虚拟子资源池中所存储数据的访问热度值与虚拟子资源池 的容量的对应关系,在实际应用中,该对应关系一般不设置为具体数值之间的对应,而是设 置为两个范围内数值的对应,例如,当访问热度值为50 100时,其对应的虚拟子资源池的 容量在30兆字节至60兆字节,那么如果某虚拟子资源池的容量为40兆字节,当前存储数 据访问热度值为60,则可确定此时的虚拟子资源池的容量与当前存储数据访问热度值向匹 配。具体的,若根据预置的访问热度值与虚拟子资源池的容量的匹配关系,可知某个 虚拟子资源池的容量高于与当前存储数据访问热度值相匹配的容量,那么从存储数据访问 热度值角度分析,则表明当前存储数据访问热度值较低,访问数据频率低,当前的虚拟子资 源池容量偏大,与存储数据访问热度值不匹配,为节省缓存资源,则减少该虚拟子资源池的 容量,因调整而空余出来的容量可供其他需要增加容量的虚拟子资源池使用。 若根据预置的访问热度值与虚拟子资源池的容量的匹配关系,可知某个虚拟子资源池的容量低于与当前存储数据访问热度值相匹配的容量,那么从存储数据访问热度值角 度分析,则表明当前存储数据访问热度值高,访问数据频率高,当前的虚拟子资源池容量偏 小,可能无法提供足够的容量满足存储数据的需求,则增加该虚拟子资源池的容量,可从当 某个虚拟子资源池的容量偏高而被减少的容量中划取。306、删除虚拟子资源池中的非热点数据。由于各虚拟子资源池只能使用划分给自身的缓存资源,那么,若当前划分给虚拟子资源池的容量低于与当前存储数据访问热度值相匹配的容量时,虚拟子资源池没有可供 业务数据存储的容量时,可通过删除该虚拟子资源池中的非热点数据获取更多空余容量。具体的,当虚拟子资源池没有可供业务数据存储的容量时,可将该虚拟子资源池 中数据的访问频率进行排序,排序方式可由高到低,也可由低到高,然后删除访问频率排 序最末尾的一个或多个数据,具体删除的数据数量,与实际应用过程相关,此处不作具体限 定。需要说明的是,虚拟子资源池中数据的访问频率可由系统内计数器进行计数,具 体为本领域技术人员公知技术,此处不再赘述。本发明实施例中,还需要对缓存资源池进行以下的初始化配置将SSD Cache资源池根据业务的类型划分成多个数据块,由于LUN对应的业务有 多种类型,而不同类型的业务数据所需要的缓存容量不同,一般来说,来自网页请求的业务 所产生的热点数据需要的缓存容量小,而来自视频请求或者数据块业务所产生的热点数据 需要的缓存容量大,相应的,根据业务数据所需容量大小划分缓存资源池,或对逻辑单元所 对应的虚拟子资源池容量进行调整,使得存储数据需要缓存容量大的业务分配到的缓存容 量大,存储数据需要缓存容量小的业务分配到的缓存容量小。本发明实施例中,当到达一定的预置时长时,根据预置的访问热度值与虚拟子资 源池容量的匹配关系,将虚拟子资源池的容量调整至与当前存储数据访问热度值相匹配的 容量,不断动态调整各虚拟子资源池的容量,使得对虚拟子资源池的容量分配更符合实际 应用,对缓存资源池的应用更合理。本发明实施例还提供了一种缓存分配装置,请参阅图4,本发明实施例中缓存分配 装置的一个实施例包括确定单元401,用于确定获取到的业务数据需要存储的逻辑单元,确定逻辑单元对 应的业务数据类型;查找单元402,用于查找与逻辑单元对应的虚拟子资源池;存储单元403,用于将业务数据存储于查找到的虚拟子资源池所包括的缓存资源 中;划分单元404,用于缓存资源池被预先划分为与逻辑单元数量相等的虚拟子资源 池。本实施例中的缓存分配装置还可以进一步包括获取单元405,用于当到达预置时长时,获取所划分的虚拟子资源池中所存储数据 的访问热度值;调整单元406,用于根据预置的访问热度值与虚拟子资源池容量的匹配关系,将虚 拟子资源池的容量调整至与当前存储数据访问热度值相匹配的容量,还用于根据业务数据类型对逻辑单元所对应的虚拟子资源池容量进行调整;排序单元407,用于当虚拟子资源池没有可供业务数据存储的容量时,将虚拟子资 源池中数据的访问频率进行排序;删除单元408,用于删除访问频率最低的数据。需要说明的是,本实施例中的调整单元406还可以进一步包括第一调整单元4061,用于若虚拟子资源池的容量高于与当前存储数据访问热度值 相匹配的容量,则减少该虚拟子资源池的容量;第二调整单元4062,用于若虚拟子资源池的容量低于与当前存储数据访问热度值 相匹配的容量,则增加该虚拟子资源池的容量,增加的虚拟子资源池的容量不大于减少的 虚拟子资源池的容量。为了便于理解,下面以一具体应用场景对本实施例中缓存分配装置的各单元之间 的联系进行说明。本发明实施例中,确定单元401确定逻辑单元对应的业务数据类型,且确定单元 401确定获取到的业务数据需要存储的逻辑单元LUN,查找单元402查找与逻辑单元对应的 虚拟子资源池。需要说明的是,SSD Cache缓存资源被划分单元404预先划分为与逻辑单元数量 相等的虚拟子资源池,每个虚拟子资源池与一个不同的逻辑单元对应,即每个虚拟子资源 池的数据仅供一个LUN访问,而且每个虚拟子资源池所包括的缓存资源存储对应逻辑单元 的业务数据,每个LUN在其对应的虚拟子资源池中对数据的访问均独立于其他LUN进行,但 每个虚拟子资源池的数据有机会供任意LUN访问。存储单元403将业务数据存储于查找到的虚拟子资源池所包括的缓存资源中,存 储过程可参见前述图1所示实施例中步骤103所描述的相关内容,此处不再赘述。当到达预置时长时,获取单元405获取所划分的虚拟子资源池中所存储数据的访 问热度值,在SSD Cache资源池系统内,可设置调整线程,预先设置一定的时长,每到达该预 置的时长则获取所划分的虚拟子资源池中存储的数据的访问热度值,该时长的设定与实际 应用过程相关,时长的具体数值此处不作限定。需要说明的是,访问热度值包括虚拟子资源池中存储的数据的访问频率及虚拟子 资源池中存储的热点数据数量,访问频率越高,热点数据数量越多,表示访问热度值越高, 虚拟子资源池中存储数据的访问频率及虚拟子资源池中存储的热点数据数量均可由系统 内部的计数器进行计数,具体为本领域技术人员公知技术,此处不再赘述。根据预置的访问热度值与虚拟子资源池容量的匹配关系,调整单元406将虚拟子 资源池的容量调整至与当前存储数据访问热度值相匹配的容量,其中,若虚拟子资源池的 容量高于与当前存储数据访问热度值相匹配的容量,则第一调整单元4061减少该虚拟子 资源池的容量,若虚拟子资源池的容量低于与当前存储数据访问热度值相匹配的容量,则 第二调整单元4062增加该虚拟子资源池的容量,增加的虚拟子资源池的容量不大于减少 的虚拟子资源池的容量,具体调整过程请参见前述图3所示实施例中步骤305所描述的内 容,此处不再赘述。 由于各虚拟子资源池只能使用划分给自身的缓存资源,那么,若当前划分给虚拟 子资源池的容量低于与当前存储数据访问热度值相匹配的容量时,虚拟子资源池没有可供业务数据存储的容量时,可由删除单元408删除该虚拟子资源池中的非热点数据获取更多 空余容量,具体的,由排序单元407将该虚拟子资源池中数据的访问频率进行排序,排序方 式可由高到低,也可由低到高,然后由删除单元408删除访问频率排序最末尾的一个或多 个数据,具体删除的数据数量,与实际应用过程相关,此处不作具体限定。需要说明的是,虚拟子资源池中数据的访问频率可由系统内计数器进行计数,具 体为本领域技术人员公知技术,此处不再赘述。本发明实施例中,SSD Cache缓存资源被划分单元404预先划分为与逻辑单元数 量相等的虚拟子资源池,每个虚拟子资源池与一个不同的逻辑单元对应,即每个虚拟子资 源池的数据仅供一个LUN访问,而且每个虚拟子资源池所包括的缓存资源存储对应逻辑单 元的业务数据,由于每个虚拟子资源池与一个不同的逻辑单元对应,因此避免分别来自两 端控制器的多个LUN同时访问同一缓存数据,从而避免控制两端控制器之间为访问同一缓 存资源数据而进行复杂的通信协商过程,根据预置的访问热度值与虚拟子资源池容量的匹 配关系,调整单元406将虚拟子资源池的容量调整至与当前存储数据访问热度值相匹配的 容量,不断动态调整各虚拟子资源池的容量,使得对虚拟子资源池的容量分配更符合实际 应用。上述实施例中的缓存资源以SSD Cache资源为例,可以理解的是,也可应用在其他 相同类型的存储资源,缓存资源应用的具体类型与实际应用过程相关,此处不作限定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以 通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上 述提到的存储介质可以是只读存储器,磁盘或光盘等。以上对本发明所提供的一种分配缓存方法及装置进行了详细介绍,对于本领域的 一般技术人员,依据本发明实施例的思想,在具体实施方式
及应用范围上均会有改变之处, 综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种缓存分配方法,其特征在于,包括确定获取到的业务数据需要存储的逻辑单元; 查找与所述逻辑单元对应的虚拟子资源池;将所述业务数据存储于查找到的虚拟子资源池所包括的缓存资源中; 其中,缓存资源池被预先划分为与所述逻辑单元数量相等的虚拟子资源池,每个虚拟 子资源池对应一个不同的逻辑单元,且每个虚拟子资源池所包括的缓存资源存储对应逻辑 单元的业务数据。
2.根据权利要1所述的方法,其特征在于,还包括当到达预置时长时,获取所划分的虚拟子资源池中所存储数据的访问热度值; 根据预置的访问热度值与虚拟子资源池容量的匹配关系,将虚拟子资源池的容量调整 至与当前存储数据访问热度值相匹配的容量。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括当虚拟子资源池没有可供业务数据存储的容量时,将所述虚拟子资源池中数据的访问 频率进行排序;删除所述访问频率排序中末尾一位或多位数据。
4.根据权利要求1至3中任意一项所述的方法,其特征在于,还包括 确定逻辑单元对应的业务数据类型;根据业务数据类型对逻辑单元所对应的虚拟子资源池容量进行调整。
5.根据权利要求1至3中任意一项所述的方法,其特征在于,所述根据预置的访问热度 值与虚拟子资源池容量的匹配关系,将虚拟子资源池的容量调整至与当前存储数据访问热 度值相匹配的容量包括若所述虚拟子资源池的容量高于与当前存储数据访问热度值相匹配的容量,则减少所 述虚拟子资源池的容量;若所述虚拟子资源池的容量低于与当前存储数据访问热度值相匹配的容量,则增加所 述虚拟子资源池的容量,所述增加的虚拟子资源池的容量不大于所述减少的虚拟子资源池 的容量。
6.一种缓存分配装置,其特征在于,包括确定单元,用于确定获取到的业务数据需要存储的逻辑单元; 查找单元,用于查找与所述逻辑单元对应的虚拟子资源池;存储单元,用于将所述业务数据存储于查找到的虚拟子资源池所包括的缓存资源中; 划分单元,用于缓存资源池被预先划分为与所述逻辑单元数量相等的虚拟子资源池。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括获取单元,用于当到达预置时长时,获取所划分的虚拟子资源池中所存储数据的访问 热度值;调整单元,用于根据预置的访问热度值与虚拟子资源池容量的匹配关系,将虚拟子资 源池的容量调整至与当前存储数据访问热度值相匹配的容量。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括排序单元,用于当虚拟子资源池没有可供业务数据存储的容量时,将所述虚拟子资源 池中数据的访问频率进行排序;删除单元,用于删除所述访问频率排序中末尾一位或多位数据。
9.根据权利要求7所述的装置,其特征在于,所述确定单元,还用于确定逻辑单元对应的业务数据类型;所述调整单元,还用于根据业务数据类型对逻辑单元所对应的虚拟子资源池容量进行 调整。
10.根据权利要求6至9任意一项所述的装置,其特征在于,所述调整单元包括第一调整单元,用于若所述虚拟子资源池的容量高于与当前存储数据访问热度值相匹 配的容量,则减少所述虚拟子资源池的容量;第二调整单元,用于若所述虚拟子资源池的容量低于与当前存储数据访问热度值相匹 配的容量,则增加所述虚拟子资源池的容量,所述增加的虚拟子资源池的容量不大于所述 减少的虚拟子资源池的容量。
全文摘要
本发明实施例公开了一种缓存分配方法及装置,用于避免系统因两端控制产生的两端控制器间的协商过程。本发明实施例方法包括将缓存资源池被预先划分为与逻辑单元数量相等的虚拟子资源池,每个虚拟子资源池对应一个不同的逻辑单元,且每个虚拟子资源池所包括的缓存资源存储对应逻辑单元的业务数据。本发明实施例能够避免控制两端控制器之间复杂的通信协商过程,保障数据的安全。
文档编号G06F12/08GK102043732SQ20101061614
公开日2011年5月4日 申请日期2010年12月30日 优先权日2010年12月30日
发明者林宇, 肖飞 申请人:成都市华为赛门铁克科技有限公司