专利名称:虚拟存储系统和方法
技术领域:
本发明涉及信息存储技术领域,尤其涉及虚拟存储系统和方法。
背景技术:
随着虚拟存储技术的不断发展,存储系统逐渐成为网络服务器系统的主 要瓶颈。网络存储系统主要通过虚拟存储技术向外部提供高性能的数据服务。 传统的系统通过对应用负载进行分析,在线根据负载的变化对系统状态进行 相应调整进行性能优化。对负载特征的描述包括区分读写操作、访问频率、 应用需要的带宽和响应延迟、访问区域等。根据获取的负载特征可以对数据 通路上的数据传输和存放策略进行设计,如缓存和磁盘调度,从而优化存储 系统的性能。
但是,传统的虚拟存储系统的分析仅局限于简单特征描述或性能需求描 述,存在以下问题
存储系统的应用具有多样性、复杂性和不稳定性,使用简单负载特征难 以对其进行精确持久有效的描述,无法进一步发现应用负载的潜在语义特征, 限制了存储系统的优化潜力。
分析简单负载特征所使用的统计方法对复杂语义特征进行分析的开销难 以被实际系统接受。分析过程所占用的系统资源和造成的开销远远超过优化 带来的好处。
发明内容
本发明的目的在于,提供一种虚拟存储系统和方法,能够对复杂应用环
境自适应,根据应用负载的变化而调整。
本发明公开了一种虚拟存储系统,所述系统包括主缓存和预取缓存, 负载分析模块,用于收集到达所述系统的应用负载,分析得出所述应用
负载的数据块关系信息,发送所述数据块关系信息;数据预取模块,用于接收所述数据块关系信息,根据所述数据块关系信 息预测将被应用程序访问的数据,该数据为待访问的数据,将所述待访问的
数据从低速存储设备预取到预取缓存;
缓存替换模块,用于接收所述数据块关系信息,接收应用层的输入输出 请求,在主缓存、所述预取缓存和所述低速存储设备中査找并读取对应数据, 并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数 据块存储到所述主缓存的对应位置。
所述低速存储设备为磁盘,所述系统还包括,数据分布模块,用于接收 所述数据块关系信息,将同一数据块关系的数据块存放到磁盘上同一个磁道 的相邻扇区。
所述负载分析模块进一步用于接收应用层的输入输出请求,以收集到达 所述系统的应用负载;并对预设时长内的应用负载进行挖掘,获取所述数据 块关系信息。
所述负载分析模块在对预设时长内的应用负载进行挖掘,获取所述数据 块关系信息时进一步用于采用支持噪音过滤的数据块关系挖掘方法对预设时 长内的应用负载进行挖掘,生成频繁模式树,所述频繁模式树为所述数据块 关系信息的集合。
所述数据预取模块进一步用于在应用层的一个输入输出请求到达时,将 当前应用负载中出现的请求序列和频繁模式树中的所有前缀进行匹配,对同 所述请求序列相同的前缀在所述频繁模式树中的后继数据块进行预取。
所述缓存替换模块进一步用于当应用层的一个输入输出请求到达时,根 据所述输入输出请求的地址在所述主缓存中查找请求对应数据块,如果查找 到,则将对应的数据块返回所述应用;如果未査找到对应的数据块,则从所 述预取缓存或者通过所述数据分布模块从磁盘中读入对应数据块,并根据所 述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储 到主缓存的对应位置。
所述缓存替换模块在根据所述数据块关系信息预测数据块被预取的概 率,按所述概率将所述数据块存储到主缓存的对应位置时进一步用于将访问 所述数据块的请求中出现在符合数据块关系的请求序列中的请求的数量占请 求总数量的比例作为被预取的概率,如果所述概率超过第一阀值,则将所述数据块存放到最近最少使用端;如果所述概率小于第二阀值,则将所述数据 块存放到最近最多使用端;如果所述概率在所述第一阀值和所述第二阀值之 间,则判断当前对所述数据块的请求是否出现在符合数据块关系的请求序列 的前缀中,如果是,则被存放到最近最少使用端,否则,存放到最近最多使 用端;所述第一阀值大于所述第二阔值。
所述数据分布模块还用于对于在多个数据块关系中存在的数据块,在磁 盘上存放所述数据块多个副本;当接收到所述缓存替换模块或所述数据预取 模块发送的对所述数据块的输入输出请求时,选择距离磁头最近的副本进行 访问。
所述负载分析模块还用于在生成频繁模式树时,对所述频繁模式树中具 有相同或满足相似条件的请求集合的结点进行合并。
本发明还公开了一种虚拟存储方法,所述方法包括
步骤100,收集到达的应用负载,分析得出所述应用负载的数据块关系 信息,发送所述数据块关系信息;
步骤200,接收所述数据块关系信息,根据所述数据块关系信息预测将 被应用程序访问的数据,该数据为待访问的数据,将所述待访问的数据从低 速存储设备预取到预取缓存;
步骤300,接收所述数据块关系信息,接收应用层的输入输出请求,在 主缓存、所述预取缓存和所述低速存储设备中查找并读取对应数据,并根据 所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存 储到主缓存的对应位置。
所述低速存储设备为磁盘,
所述方法还包括
步骤400,接收所述数据块关系信息,将一个数据块关系的数据块存放 到磁盘上同一个磁道的相邻扇区。 所述步骤100进一步为,
步骤IIO,接收应用层的输入输出请求,以收集到达的应用负载;
步骤120,对预设时长内的应用负载进行挖掘,获取所述数据块关系信
必o
所述步骤120进一步为,步骤121,采用支持噪音过滤的数据块关系挖掘方法对预设时长内的应 用负载进行挖掘,生成频繁模式树,所述频繁模式树为所述数据块关系信息 的集合。
所述步骤200进一步为,
步骤210,在应用的一个输入输出请求到达时,将当前应用负载中出现 的请求序列和频繁模式树中的所有前缀进行匹配,对同所述请求序列相同的 前缀在所述频繁模式树中的后继数据块进行预取。
所述步骤300进一步为,
步骤310,当应用的一个输入输出请求到达时,根据所述输入输出请求 的地址在缓存中査找,如果查找到,则将对应的数据块返回所述应用;如果 未査找到对应的数据块,则执行步骤320;
步骤320,从预取缓存或者从磁盘中读入对应数据块,并根据所述数据 块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓 存的对应位置。
所述步骤320进一步为,
步骤321,将访问所述数据块的请求中出现在符合数据块关系的请求序 列中的请求的数量占请求总数量的比例作为被预取的概率;
步骤322,如果所述概率超过第一阀值,则将所述数据块存放到最近最 少使用端;
步骤323,如果所述概率小于第二阀值,则将所述数据块存放到最近最 多使用端;
步骤324,如果所述概率在所述第一阀值和所述第二阀值之间,则判断 当前对所述数据块的请求是否出现在符合数据块关系的请求序列的前缀中, 如果是,则被存放到最近最少使用端,否则,存放到最近最多使用端;
所述第一阀值大于所述第二阀值。
所述步骤400还包括,
步骤410,对于在多个数据块关系中存在的数据块,在磁盘上存放所述 数据块多个副本;
步骤420,当接收到所述缓存替换模块或所述数据预取模块发送的对所 述数据块的输入输出请求时,选择距离磁头最近的副本进行访问。所述歩骤100还包括,
步骤130,在生成频繁模式树时,对所述频繁模式树中具有相同或满足 相似条件的请求集合的结点进行合并。
本发明有益效果在于,通过分析获得应用负载数据块关系信息,并根据 该关系信息进行预取和存储,能够在复杂应用环境下自适应根据应用负载的 变化对整条数据通路进行性能优化,提升存储系统的性能;同时无需任何上
层应用或者人为对存储系统的设置,也无需对应用系统进行任何假设,具有 良好的通用性、透明性和可扩展性。
图1是本发明虚拟存储系统的结构图2是本发明虚拟存储系统的一个具体实施方式
结构图3是频繁模式树结构图4是有效模式示意图5是请求干涉噪音示意图6是请求顺序噪音示意图7是请求缺失噪音示意图8是通过精确挖掘方法输出的频繁模式树结构图9是本发明虚拟存储方法的流程图。
具体实施例方式
下面结合附图,对本发明做进一步的详细描述。
图1是本发明系统的结构图,本发明系统包括负载分析模块100、数
据预取模块200、缓存替换模块300、数据分布模块400、主缓存500和预取 缓存600。
数据块关系为应用的数据语义模式在存储系统中的表现。在存储系统中, 多个数据块之间由于数据语义相关导致被相继访问,称这些数据块之间存在 数据块关系。相比简单访问特征,数据块关系具有更多的数据块访问信息和 更好的稳定性,而且不需要对数据块的时空分布做任何假设。
负载分析模块100,用于收集到达所述系统的应用负载,分析得出所述应用负载的数据块关系信息,发送所述数据块关系信息。
数据预取模块200,用于接收所述数据块关系信息,根据所述数据块关 系信息预测将被应用程序访问的数据,该数据为待访问的数据,将所述待访 问的数据从低速存储设备预取到预取缓存600。
缓存替换模块300,用于接收所述数据块关系信息,接收应用的输入输 出请求,在主缓存、所述预取缓存和所述低速存储设备中查找并读取对应数 据,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所 述数据块存储到主缓存500的对应位置。
所述低速存储设备为磁盘,所述系统还包括,数据分布模块400,用于 接收所述数据块关系信息,将同一数据块关系的数据块存放到磁盘上同一个 磁道的相邻扇区。
负载分析模块100与数据预取模块200、缓存替换模块300和数据分布 模块400连接,对输入的数据流,将负载分析模块100的输出作为数据预取 模块200、缓存替换模块300和数据分布模块400的输入。数据预取模块200 和数据分布模块400连接,对输入的数据流,将数据预取模块200的输出作 为数据分布模块400的输入;对输出的数据流,将数据分布模块400的输出 作为数据预取模块200的输入。缓存替换模块300和数据分布模块400连接, 对输入的数据流,将缓存替换模块300的输出作为数据分布模块400的输入; 对输出的数据流,将数据分布模块400的输出作为缓存替换模块300的输入。
数据分布模块400在输入输出的情况下,负责将访问的逻辑地址映射为 实际存放数据块的磁盘物理地址。负载分析模块100在每一个分析周期,对 负载进行分析之后,数据分布模块400根据分析得到的数据块关系,将同一 数据块关系中出现的数据块在磁盘上存放在相邻的位置。
图2为本发明的系统具体实施方式
的结构。
虚拟存储系统包括负载分析模块100、数据预取模块200、缓存替换模块 300和数据分布模块400、主缓存500和预取缓存600。应用请求通过标准块 设备接口接入系统的负载分析模块100、数据预取模块200和缓存替换模块 300。
负载分析模块100,用于分析应用负载中的数据块关系信息。 负载分析模块100的输入为上层应用的I/0请求(输入输出请求),输出为数据块关系信息集合,例如一个频繁模式树(FP-Tree)。 例如,对于输入请求序列
S={abcdef…abcdef…abcdef…acbdef…abcdf…agd…agd〉;
输出的频繁模式树如图3所示。模式树中每一条从根结点到叶子结点的 路径均表示一个频繁访问模式,在图3中,(a,b,cl,dl,el,fl)为一个频繁访 问模式,每个结点表示该模式上对应数据块的请求序列,如a, cl都为一个结 点。从根结点到任意一个结点的路径为一个模式前缀,简称前缀,如 {a, b,cl,dl)为一个前缀。
负载分析模块100收集到达存储系统的应用负载,每隔一段预设时间便 对之前一段时间内的应用负载进行挖掘,获取数据块关系信息。
现有技术中进行挖掘的方法包含多种,例如,深度优先搜索的频繁访问 序列挖掘方法,Clospan方法。
Clospan方法通过数据库投影技术,将序列的后缀投影成一系列投影数 据库,在这些投影数据库中找出局部的频繁模式,生成频繁模式树。Clospan 对模式的后缀进行有条件的裁剪,在一定程度上避免了对重复分支的搜索。
在一个较佳的具体实施方式
中,采用支持噪音过滤的数据块关系挖掘方法。
设0= {、 ^,…,M为所有数据块集合,访问流的源请求序列S={1,
2,…mh设ieS,使得b(i)表示S第i个请求访问的数据块,bG)eD。设
S的子序列5 ={ r' , ^ ,…~ },其中, 1 s 。 < 5…~ 且
r"i—r"max—st印,其中max—st印为给定的最大请求间隔。设B(5 ) = {b。'),
b("2),…,b「'M为一个有序列表。
最大请求间隔为模式序列相邻请求间的请求间隔临界值。
两个相距很远的请求,即使在源序列中出现多次也不能表现它们存在着
相关性,也就无法用于指导优化。此外,由于多访问流的聚合,组成模式的
请求不一定能连续到达存储系统。因此,挖掘方法需要限制模式序列相邻请
求间的最大请求间隔。
假设频繁访问序列中两个相邻数据块a, b的到达间隔成指数分布 F(x) = l- 则对任意给定的概率p,存在
、—ln(1 —户) 附ax—5哗2-15~
义 使得a出现后,b第一次出现在max—st印之前的概率大于等于p。绝大 多数情况下两个相关的数据块总出现在一 定的间隔内。
频繁访问模式^={ W…^,满足^, \***~为S的子序列, B。')二B。0 -B(勺),且支持度sup(^)^、min—sup,其中min—sup为给 定的最小支持度。
因为在源访问序列中, 一个出现次数较少的访问子序列可能是由应用随 机产生,通常不会再次重现,因此该子序列所访问的数据块存在相关的可能 性不大。定义源序列中相同子序列出现的次数为该子序列的支持度。给定最 小支持度,当一个子序列出现的次数不低于最小支持度时,称为一个频繁访 问模式。
频繁访问模式挖掘为给定源请求序列S、最小支持度min—sup和最大请 求间隔max—st印,求频繁访问模式^的集合L。
为了便于表示,下文用B(s)表示s或者s所在的模式P。
由于模式序列访问的数据语义关系具有传递性,现有技术中频繁序列模 式挖掘算法中的长模式均由两数据块相关集合扩展而来,对相邻请求间隔的 限制,使得长模式能更好地描述数据块相关性。现有技术中频繁序列模式挖 掘方法不设置模式序列的间隔,现有技术的C-Miner算法中设置了整个模式 序列在访问流中所允许的最大间隔,max—gap。但是max—gap对不同长度的模 式挖掘不具有适应性,会截断较长的模式,而在辨识短模式时过大的间隔又 会引起大量的冗余搜索,影响挖掘效率。而采用max—st印不会影响长模式的 挖掘,并且在对短模式进行挖掘时避免了冗余的搜索开销。在较佳实施方式 中通过设置最大请求间隔解决上述问题。
在生成频繁模式树的过程中,采用模糊挖掘方法,对已经挖掘得到的模 式树结点请求集合的结点进行合并,减少噪音产生的冗余结点和模式。
现有技术中存在多种模糊挖掘方法,例如CloSpan对前缀具有包含关系的 后缀分枝进行合并。ApproxMAP先对序列数据库中的序列进行聚类,然后在 每一个类中分别进行挖掘,通过分治的方法减少挖掘的规模。TSP则只对前k 个最频繁的序列模式进行挖掘。这些方法可以获得较好的挖掘性能,但模式 信息的损失也较大。Mining Long Sequential Patterns in a Noisy Environment. , Proceedings of the 2002 ACM SIGM0D internationalconference on Management of data, Madison, Wisconsin, 2002, 406 - 417 中提出了在噪音环境下进行高效挖掘的方法,它通过计算候选序列集合的兼 容性矩阵,来评估两个序列可以连接的可能性,从而减少偶尔出现的噪音的 影响。这种方法同样需要较大的空间存放矩阵。Mining compressed frequent—pattern sets.Proceedings of the 31st international conference on Very large data bases, Trondheim, Norway, 2005, 709 -720中比较两个模式及其交易列表,如果模式之间存在包含关系并且交易列 表相似则可以对模式进行聚类。
在一个较佳的具体实施方式
ClosSpan中,采用如下方法进行合并。
理想情况下,如果访问序列中的随机请求不产生偶然出现的模式,且应 用发出的符合数据语义的请求序列均能在访问流中完整连续的出现,那么现 有技术的挖掘方法产生的模式树,每一条从根结点到叶子结点的路径都表示 一个完整独立的模式,因此可以高效地对其进行挖掘,完整体现数据语义相 关的频繁访问模式称为有效模式,如图4所示。
本发明根据产生的原因和对挖掘的影响,噪音可以被分为以下四种类型: 请求间隔噪音,应用流的聚合使有效模式的请求间隔增大。由于挖掘算法 需要限制模式序列的最大请求间隔,因此请求间隔的增大会导致有效模式被 截断甚至淹没,这类噪音称为请求间隔噪音。例如,有效模式(abcdel被请求 间隔噪音淹没,而只能挖掘得到数量更多的有效模式片段仏bh (abcW和 {cde}。
请求干涉噪音,同一个数据块往往存在多种访问语义,可能在多个模式 中出现或者被随机地访问到。对这些数据块的访问会对模式挖掘产生干扰。 如图5所示,有效模式序列仏cde)和仏bcd)相互干涉,产生了伪模式(adh 这类伪模式大多是正常模式的子模式。并且,伪模式仏W还会作为候选前缀 被继续扩展,导致冗余的搜索。
请求顺序噪音, 一些数据块之间具有非顺序敏感的数据块关系。有的应 用不限制相关数据块的访问顺序,例如数据库的一个表可以以不同的索引方 式被遍历。还有一些应用,符合语义相关的数据块访问由多个结点协作完成, 使得数据块访问请求的到达顺序随机产生。对相同数据块进行不同顺序的访 问,会使挖掘算法认为存在多种频繁访问模式。如图6所示,对数据块b和c的请求随机到达,产生了相似的模式序列(abcdeh (abdel和(acde)。
请求缺失噪音应用系统的缓存对具有时间局部性的数据块请求进行过 滤,同时也过滤掉有效模式序列中的一些请求,导致同一数据块关系产生不 同的访问序列。如图7所示,由于对数据块C的请求被缓存命中而没有在第
一个序列片断中出现,因此在挖掘得到有效模式"bcde)之外,还产生了伪模 式(abdeK这类因个别元素缺失而产生相似模式的噪音,称为请求缺失噪音。 由模式挖掘过程可知,请求顺序噪音和请求干涉噪音对同一数据块关系 产生不同的模式前缀,但这些模式前缀具有相同的后缀分支。由于顺序噪音 产生的模式前缀序列之间不具有包含关系,因此无法通过Clospan进行分支 裁剪。
较佳的具体实施方式
中,允许对任意前缀的后缀分支进行合并,称为全 局分支裁剪。
全局分支裁剪在产生一个新的前缀P时,如果前缀集合中存在P'具有与 P相同的后缀分支,则裁剪^的后缀。
全局分支裁剪不仅可以过滤请求顺序噪音产生的伪模式,由于它裁剪所 有相同的后缀分支,因此也可以有效过滤请求干涉噪音产生的伪模式。
对相同后缀分支的判断需要保存并比较每个候选前缀的序列集合,增加 了挖掘的时空开销。为了减少后缀分支的比较开销,全局分支裁剪比较每个 前缀的尾结点请求集合,使用位图进行优化。
负载分析模块100为频繁模式树的每个结点维护一个位图(bitmap)来 表示该结点的请求集合,其中每一位按顺序表示请求序列中出现的对该结点 代表数据块的访问请求;l表示该请求出现在该结点的请求集合中,O表示该 请求没有出现在该结点的请求集合中。通过对位图的比较和聚类可以判断是 否对结点进行合并,从而进一步减少分析所需要的时间和空间开销。
请求缺失噪音是产生伪模式簇的重要原因,最坏情况下,"个请求缺失 可以使一个有效模式产生规模为2"的伪模式。例如序列
S2={abcdef.. abcdef. . abcdef.. abcdef. . acdef}
挖掘得到sup(abcdef)二4, sup (acdef) =5。由图8所示,由于一个子序 列缺少对数据块b的请求,导致结点cl和c2的请求集合不同,产生了两个 搜索分支。与大多数请求缺失的情况一样,缺少访问数据块b的序列个数远小于完整序列的个数,因此cl和c2的请求集合近似,并且后缀分支也近似。 进一步,在全局分支裁剪的基础上进行分支聚类算法。对相似的后缀分 支进行裁剪,称为分支聚类。
如果两个前缀^和P'的尾结点请求集合T(P)"T(^'),则挖掘得到的后 缀模式分支也近似。Z-Miner方法采用经过修改的Kiedoids方法,根据尾 结点请求集合对模式前缀进行聚类,被聚类到一个簇的模式前缀具有相似的 后缀分支,这些后缀分支将被裁剪。
首先,两个模式的尾结点请求集合的相似程度为 IT(力门T(力l/iT(p)UT(p')1。 Z-Miner方法用位图Bm("来表示P的向量,
定义Count(Bm(")为Bm(P)中1的个数。规定^和P'的距离为
1^麵(;^') = 1-0麵《8一&8一)) Count(Bm的IBm(/ '))
其次,由于请求集合的聚类对距离敏感,大的距离会导致对两个差异很 大的后缀分支进行了合并。因此Z-Miner方法限制同一簇中向量离中心的最 大距离为聚类距离,max一dist。
最后,在新模式加入到一个簇时,不改变该簇的中心,以免引起漂移。 对不能合并到其他簇的模式P建立一个新簇,将^加入该簇并将Bm(P)作为 该簇的中心。为了提高挖掘的效率,当一个模式前缀可以被聚类到多个簇时, 选择加入第一个被找到的簇。
实施例如下所述。
Z-Miner方法, Z-Miner(S, max一st印,min_sup, L)
输入访问流源序列S,最小支持度min—sup,最大请求间隔max—st印;
输出模式集合L;
L<-0;
获取S中所有出现的数据块集合D;
对每个数据块bED do 将込加入L; MINING (込 ,S, min—sup, max_step, U ; end do
其中,込为访问序列S中数据块b的请求全集込二 UlieS且b(i) =b}, MINING如下所述。MINING(P, S, min_sup, max—step, L)
输入模式前缀广访问流序列S,最小支持度min一sup,最大请求间 隔max—step;
输出模式集合L;
对所有在S上出现在T("之后max—st印间隔内的请求,按数据块分别 产生请求集合^,^…;
对每个满足I " I 2min_Sup的数据块b do MATC, L,。; if P、0
将P指向^'的尾结点;
6ls6
将P按^扩展为^; 将A加入L;
M皿NG(A, S, min—sup, max—step, L);
end if end do
其中,Match(《、max—dist, L,尸)如下所述。
输入尾结点请求集合&,聚类距离max—dist,模式集合L;
输出模式前缀^;
P〈-0;
if存在P' e L,满足Distance^ max_dist; end ifQ
数据预取模块200,用于管理预取缓存600,接收负载分析模块100分析 得到的数据块关系信息,监控当前到达的应用负载流,并根据数据块关系信 息预测将被应用程序访问的数据,将该数据预取到预取缓存600中。
数据预取模块200的输入为负载分析模块100输出的数据块关系信息和 当前上层应用的I/0请求,输出为进行预取的I/0请求,转发给数据分布模 块400。
数据预取模块200在应用一个I/0请求到达时,将当前应用负载中出现的请求序列同频繁模式树中的所有前缀进行匹配,对同所述请求序列相同的
前缀在频繁模式树中的后继数据块进行预取。如果该前缀的后继路径在若干
个数据副本集合中,数据预取部件选择历史上在该前缀后出现概率最大的数 据副本集合进行预取。
缓存替换部件300,用于管理存储系统的主缓存500,接收所述负载分析 模块分析得到的数据块关系信息,对不同特征信息的数据采用不同的缓存策 略,提高缓存的命中率。
缓存替换模块300的输入为应用发送来的I/O请求和负载分析模块100 输出的数据块关系信息,输出为对预取缓存600和数据分布模块400的I/O 请求。
当应用的一个I/O请求到达缓存替换模块时,根据I/O请求的地址在缓 存中査找请求对应数据块,如果查找到对应的数据块则返回给该应用;如果 没有查找到对应的数据块,则从预取缓存600或者通过数据分布模块400从 磁盘中读入该数据块;同时根据被访问数据块的数据块关系信息在主缓存 500中存放该数据块。
在另一较佳实施方式中,读取对应数据时,判断对应数据是否在主缓存 中,如果是,则从主缓存中读取所述对应数据;如果不存在,则判断对应数 据是否在预取缓存,如果是则从预取缓存中读取所述对应数据,如果不在预 取缓存中,则从磁盘中读取对应数据。
根据数据块关系信息预测数据块被预取的概率,按所述概率将所述数据 块存储到对应位置。将访问所述数据块的请求中出现在符合数据块关系的请 求序列中的请求的数量占该数据块请求总数量的比例作为被预取的概率。
缓存替换模块300将数据块根据数据块关系信息分为通常可预取数据 块、通常不可预取数据块和部分可预取数据块。
如果概率超过第一阀值,则该数据块为通常可预取数据块,通常可以被 预取;
如果所述概率小于第二阀值,则该数据块为通常不能被预取数据块,通 常不能被预取;
如果所述概率在第一阀值和第二阀值之间,则该数据块为部分可预取数 据块。缓存替换模块300将通常可预取数据块放置到LRU端(最近最少使用端), 将通常不可预取数据块放置到MRU端(最近最多使用端);对部分可预取数
据块,如果当前对该数据块的请求出现在符合数据块关系的请求序列的前缀
中,则被放置到LRU端,否则放置到MRU端。
数据分布模块400,管理数据在磁盘中的映射关系,接收所述负载分析 模块分析得到的数据块关系信息,对数据进行迁移和重映射,或者使具有数 据块关系而被连续访问的数据被连续存放在磁盘的相邻位置上。
数据分布模块400的输入为负载分析模块100输出的数据块关系信息、 数据预取模块200和缓存替换模块300输出的I/O请求。
数据分布模块400根据数据块关系信息,负责在系统运行过程中进行数 据迁移和资源的重映射,使一个数据块关系的数据块,数据副本集合,在磁 盘上顺序存放。如果一个数据块在多个数据块关系中,则在磁盘上存在多个 副本。当接收到I/0请求时,数据分布模块选择距离磁头最近的数据副本进 行访问。
本发明的虚拟设备系统提供统一的数据块关系语义,将数据通路的管理 分为数据预取、缓存替换和数据分布功能,提高数据通路的带宽利用率,降 低访问延迟。
本发明的虚拟存储方法流程如图9所示。
步骤SIOO,收集到达的应用负载,分析出所述应用负载的数据块关系信 息,发送所述数据块关系信息。 所述步骤SIOO进一步为,
步骤S110,接收应用层的输入输出请求,以收集到达的应用负载; 步骤S120,对预设时长内的应用负载进行挖掘,获取所述数据块关系信息。
例如预设时长为24小时,则在每天的0点时刻对前一天的应用负载进行 挖掘。
较佳的,步骤S120为采用支持噪音过滤的数据块关系挖掘方法对预设时 长内的应用负载进行挖掘,生成频繁模式树,所述频繁模式树为所述数据块 关系信息的集合。
进一步,在生成频繁模式树时,对所述频繁模式树中具有相同或满足相似条件的请求集合的结点进行合并。
步骤S200,接收所述数据块关系信息,根据所述数据块关系信息预测将 被应用程序访问的数据,将所述数据预取到预取缓存。
较佳的,在应用的一个输入输出请求到达时,将当前应用负载中出现的 请求序列和频繁模式树中的所有前缀进行匹配,对同所述请求序列相同的前 缀在所述频繁模式树中的后继数据块进行预取。
步骤S300,接收所述数据块关系信息,接收应用的输入输出请求,在主 缓存、所述预取缓存和所述磁盘中査找并读取对应数据,并根据所述数据块 关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存 的对应位置。
较佳的,步骤S300进一步为,
步骤S310,当应用的一个输入输出请求到达时,根据所述输入输出请求 的地址在缓存中査找请求对以数据块,如果查找到,则将对应的数据块返回 所述应用;如果未査找到对应的数据块,则执行步骤S320;
步骤S320,从预取缓存或者磁盘中读入对应数据块,并根据所述数据块 关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存 的对应位置。
进一步,所述步骤S320为,
步骤S321,将访问所述数据块的请求中出现在符合数据块关系的请求序 列中的请求的数量占请求总数量的比例作为被预取的概率;
步骤S322,如果所述概率超过第一阀值,则将所述数据块存放到最近最 少使用端;
步骤S323,如果所述概率小于第二阀值,则将所述数据块存放到最近最 多使用端;
步骤S324,如果所述概率在所述第一阀值和所述第二阀值之间,则判断 当前对所述数据块的请求是否出现在符合数据块关系的请求序列的前缀中, 如果是,则被存放到最近最少使用端,否则,存放到最近最多使用端;
所述第一阀值大于所述第二阀值。
较佳的,方法还包括
步骤S400,接收所述数据块关系信息,将一个数据块关系的数据块在磁盘上顺序存放。
较佳的,所述步骤S400还包括,
步骤S410,对于在多个数据块关系中存在的数据块,在磁盘上存放所述 数据块多个副本;
步骤S420,当接收到所述缓存替换模块或所述数据预取模块发送的对所 述数据块的输入输出请求时,选择距离磁头最近的副本进行访问。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条 件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限 于以上的说明,而是由权利要求书的范围来确定的。
权利要求
1.一种虚拟存储系统,所述系统包括主缓存和预取缓存,其特征在于,所述系统还包括负载分析模块,用于收集到达所述系统的应用负载,分析得出所述应用负载的数据块关系信息,发送所述数据块关系信息;数据预取模块,用于接收所述数据块关系信息,根据所述数据块关系信息预测将被应用程序访问的数据,该数据为待访问的数据,将所述待访问的数据从低速存储设备预取到预取缓存;缓存替换模块,用于接收所述数据块关系信息,接收应用层的输入输出请求,在主缓存、所述预取缓存和所述低速存储设备中查找并读取对应数据,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到所述主缓存的对应位置。
2. 如权利要求1所述的虚拟存储系统,其特征在于, 所述低速存储设备为磁盘,所述系统还包括,数据分布模块,用于接收所述数据块关系信息,将同一数据块关系的数据块存放到磁盘上同一个磁道 的相邻扇区。
3. 如权利要求2所述的虚拟存储系统,其特征在于, 所述负载分析模块进一步用于接收应用层的输入输出请求,以收集到达所述系统的应用负载;并对预设时长内的应用负载进行挖掘,获取所述数据 块关系信息。
4. 如权利要求3所述的虚拟存储系统,其特征在于, 所述负载分析模块在对预设时长内的应用负载进行挖掘,获取所述数据块关系信息时进一步用于采用支持噪音过滤的数据块关系挖掘方法对预设时 长内的应用负载进行挖掘,生成频繁模式树,所述频繁模式树为所述数据块 关系信息的集合。
5. 如权利要求4所述的虚拟存储系统,其特征在于, 所述数据预取模块进一步用于在应用层的一个输入输出请求到达时,将当前应用负载中出现的请求序列和频繁模式树中的所有前缀进行匹配,对同 所述请求序列相同的前缀在所述频繁模式树中的后继数据块进行预取。
6. 如权利要求4所述的虚拟存储系统,其特征在于,所述缓存替换模块进一步用于当应用层的一个输入输出请求到达时,根 据所述输入输出请求的地址在所述主缓存中查找请求对应数据块,如果査找到,则将对应的数据块返回所述应用;如果未査找到对应的数据块,则从所 述预取缓存或者通过所述数据分布模块从磁盘中读入对应数据块,并根据所 述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储 到主缓存的对应位置。
7. 如权利要求6所述的虚拟存储系统,其特征在于, 所述缓存替换模块在根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存的对应位置时进一步用于将访问 所述数据块的请求中出现在符合数据块关系的请求序列中的请求的数量占请 求总数量的比例作为被预取的概率,如果所述概率超过第一阀值,则将所述 数据块存放到最近最少使用端;如果所述概率小于第二阀值,则将所述数据 块存放到最近最多使用端;如果所述概率在所述第一阀值和所述第二阀值之 间,则判断当前对所述数据块的请求是否出现在符合数据块关系的请求序列 的前缀中,如果是,则被存放到最近最少使用端,否则,存放到最近最多使 用端;所述第一阀值大于所述第二阀值。
8. 如权利要求4所述的虚拟存储系统,其特征在于,所述数据分布模块还用于对于在多个数据块关系中存在的数据块,在磁 盘上存放所述数据块多个副本;当接收到所述缓存替换模块或所述数据预取 模块发送的对所述数据块的输入输出请求时,选择距离磁头最近的副本进行 访问。
9. 如权利要求4所述的虚拟存储系统,其特征在于, 所述负载分析模块还用于在生成频繁模式树时,对所述频繁模式树中具有相同或满足相似条件的请求集合的结点进行合并。
10. —种虚拟存储方法,其特征在于,所述方法包括步骤100,收集到达的应用负载,分析得出所述应用负载的数据块关系 信息,发送所述数据块关系信息;步骤200,接收所述数据块关系信息,根据所述数据块关系信息预测将 被应用程序访问的数据,该数据为待访问的数据,将所述待访问的数据从低速存储设备预取到预取缓存;步骤300,接收所述数据块关系信息,接收应用层的输入输出请求,在 主缓存、所述预取缓存和所述低速存储设备中查找并读取对应数据,并根据 所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存 储到主缓存的对应位置。
11. 如权利要求10所述的虚拟存储方法,其特征在于, 所述低速存储设备为磁盘,所述方法还包括步骤400,接收所述数据块关系信息,将一个数据块关系的数据块存放 到磁盘上同一个磁道的相邻扇区。
12. 如权利要求ll所述的虚拟存储方法,其特征在于, 所述步骤100进一步为,步骤IIO,接收应用层的输入输出请求,以收集到达的应用负载;步骤120,对预设时长内的应用负载进行挖掘,获取所述数据块关系信息。
13. 如权利要求12所述的虚拟存储方法,其特征在于, 所述步骤120进一步为,步骤121,采用支持噪音过滤的数据块关系挖掘方法对预设时长内的应 用负载进行挖掘,生成频繁模式树,所述频繁模式树为所述数据块关系信息 的集合。
14. 如权利要求13所述的虚拟存储方法,其特征在于, 所述步骤200进一步为,步骤210,在应用的一个输入输出请求到达时,将当前应用负载中出现 的请求序列和频繁模式树中的所有前缀进行匹配,对同所述请求序列相同的 前缀在所述频繁模式树中的后继数据块进行预取。
15. 如权利要求13所述的虚拟存储方法,其特征在于, 所述步骤300进一步为,步骤310,当应用的一个输入输出请求到达时,根据所述输入输出请求 的地址在缓存中査找,如果查找到,则将对应的数据块返回所述应用;如果 未查找到对应的数据块,则执行步骤320;步骤320,从预取缓存或者从磁盘中读入对应数据块,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓 存的对应位置。
16. 如权利要求15所述的虚拟存储方法,其特征在于, 所述步骤320进一步为,步骤321,将访问所述数据块的请求中出现在符合数据块关系的请求序 列中的请求的数量占请求总数量的比例作为被预取的概率;步骤322,如果所述概率超过第一阀值,则将所述数据块存放到最近最 少使用端;步骤323,如果所述概率小于第二阀值,则将所述数据块存放到最近最 多使用端;步骤324,如果所述概率在所述第一阀值和所述第二阀值之间,则判断 当前对所述数据块的请求是否出现在符合数据块关系的请求序列的前缀中, 如果是,则被存放到最近最少使用端,否则,存放到最近最多使用端;所述第一阀值大于所述第二阀值。
17. 如权利要求13所述的虚拟存储方法,其特征在于, 所述步骤400还包括,步骤410,对于在多个数据块关系中存在的数据块,在磁盘上存放所述 数据块多个副本;步骤420,当接收到所述缓存替换模块或所述数据预取模块发送的对所 述数据块的输入输出请求时,选择距离磁头最近的副本进行访问。
18. 如权利要求13所述的虚拟存储方法,其特征在于, 所述步骤100还包括,步骤130,在生成频繁模式树时,对所述频繁模式树中具有相同或满足 相似条件的请求集合的结点进行合并。
全文摘要
本发明涉及虚拟存储系统及方法,系统包括主缓存和预取缓存,主缓存和预取缓存,负载分析模块,用于收集到达系统的应用负载,分析得出应用负载的数据块关系信息,发送数据块关系信息;数据预取模块,用于接收数据块关系信息,根据数据块关系信息预测将被应用程序访问的数据,该数据为待访问的数据,将待访问的数据从低速存储设备预取到预取缓存;缓存替换模块,用于接收数据块关系信息,接收应用层的输入输出请求,在主缓存、预取缓存和低速存储设备中查找并读取对应数据,并根据数据块关系信息预测数据块被预取的概率,按概率将数据块存储到主缓存的对应位置。本发明能够对复杂应用环境自适应,根据应用负载的变化而调整。
文档编号G06F12/08GK101630291SQ20091008918
公开日2010年1月20日 申请日期2009年8月3日 优先权日2009年8月3日
发明者张建刚, 朱旭东, 石兴杰, 鲁 许, 韩晓明 申请人:中国科学院计算技术研究所;天津中科蓝鲸信息技术有限公司