一种基于热数据和删除重复操作的在线扩容io调度方法
技术领域
本发明涉及计算机网络与计算机存储领域,主要应用在HS6在线扩容方案中,特别涉及一种基于热数据和删除重复操作的在线扩容IO调度方法。
背景技术
随着网络技术在社会各行各业中的深度融合与发展,企业数据中心存储系统面临海量数据存储的需求,因而现有存储系统的容量不能满足日益增长的数据规模对容量提出的更高要求。为了提升数据中心存储系统的容量,扩充现有存储系统的容量空间是必须采用的技术,即扩容技术。在存储集群数据扩容的过程中,现有的扩容方案在设计时主要考虑如何降低数据迁移过程中的开销,很少考虑用户访问行为对扩容时的影响。
然而,用户的访问行为对扩容过程的影响很大。第一、密集的访问行为会造成磁盘的负载增大;第二、用户访问请求和迁移请求对磁盘磁头的争用会造成大量随机读写;第三、用户访问请求和迁移请求存在重复对一个数据块的写操作。这些原因都会导致扩容方案进行在线扩容时扩容效率的降低。
因此,提供一种基于热数据和删除重复操作的在线扩容IO调度方法是亟需解决的技术问题。
发明内容
针对上述问题,本发明的目的在于提供了一种基于热数据和删除重复操作的在线扩容IO调度方法。该方法包括步骤:
初始化存储系统;
监测一段时间内的用户访问请求;
当所述用户访问请求为写操作时,将所述用户访问请求的物理地址与需要迁移的数据块的目的地址进行比较,如果两者范围完全一致,则修改所述写操作的目标地址,将所述写操作的目标地址修改为所述数据块的目的地址;如果两者范围部分一致,则先将所述需要迁移的数据块剩下未命中的数据读出来,拼接到所述写操作内容中,再将所述写操作的地址修改为所述需要迁移的数据块的目标地址;
确定所述一端时间内计数器值最大的热数据空间,再生成所述热数据空间内的需要迁移的数据块对应的迁移请求;
将所述用户访问请求与所述迁移请求进行排序;
执行排序好的所述用户访问请求与所述迁移请求。
在实施例中,所述初始化储存系统的步骤包括:以扩容方案的存储条带的整数倍来划分热数据空间,所述热数据空间包括:物理地址信息,物理空间大小,该空间需要迁移的数据块信息以及计数器。
在实施例中,所述监测一段时间内的用户访问请求的步骤包括:逐条分析所述用户访问请求的类型、访问的物理地址位置;根据访问的物理地址位置计算出其所属的热数据空间,对所述热数据空间的计数器进行加1操作。
在实施例中,还包括步骤:对有相同的操作内容的所述用户访问请求与所述迁移请求进行分析,如果两者之间的相同是完整的对一个数据块内容的相同,则直接将用户写操作执行的目标位置修改为需要迁移的数据块的目标位置;如果两者之间的相同是部分相同,即命中了部分数据块内容,则产生一个新的读请求,将该数据块中未被用户写操作命中的数据内容读取出,并拼接在用户写操作的内容中,同样将所述用户写操作的目标位置修改为需要迁移的块的目标位置。
在实施例中,还包括步骤:将处理完的所述用户写操作请求,放行到时间段等待下一步操作,同时向热数据空间发出删除请求,将与所述用户写操作有着相同内容的迁移操作请求从热数据空间的需要迁移的数据块信息中删除。
本发明公开了一种基于热数据和删除重复操作的在线扩容IO调度方法,用来优化在线扩容过程的效率。首先是要优先迁移经常被用户访问的热数据区间,因为扩容算法是按照从磁盘首部到尾部的顺序进行迁移,如果用户经常访问该磁盘的靠近尾部的区域,那么磁盘头在分别执行迁移操作和用户访问操作时会产生大量的跳转,消耗大量的时间。我们首先对该热数据区的数据块迁移到新磁盘中,不但可以减轻旧磁盘此时的访问压力,同时新磁盘加入对用户访问请求的服务,增加了存储系统的带宽,可以明显的提升在线扩容时的效率。在此基础之上进一步对用户写操作进行分析,目的是要减少一次写操作请求,当用户写操作访问的块与迁移操作要迁移的块相同时,只需要执行一次即可。在执行所有操作前对所有访问请求进行顺序排序,进一步减少这些访问之间的随机读写行为。同时,考虑到热数据有时效性,上述所有操作都是在一段设定好的时间内进行的。
相比于现有技术的调度测量,本发明的调度方法具有以下优点:
(1)更充分的利用了存储系统的带宽:具有时效性的热数据区域的数据块优先从旧磁盘迁移到新磁盘,不仅解放了旧磁盘响应用户访问请求的压力,同时将新添加的磁盘最快速的加入到响应用户访问请求的服务中,快速提升了存储系统的带宽且达到了存储系统的负载均衡。
(2)更少的写操作:写操作在扩容算法中最消耗时间,因为写操作会引起校验块的更新操作。本策略通过对比用户访问请求和迁移请求的内容,减少了部分重复的写操作行为,大大提升了在线迁移过程中的效率。
(3)更快的用户响应时间:本策略通过热数据的优先迁移,快速增加了存储系统响应用户请求的带宽;通过顺序读写排序,减少了用户访问请求与迁移IO之间的随机读写;通过写请求重定向,减少了部分写请求操作,进而减少了用户访问请求与迁移IO之间的资源争用情况。以上三点都会为用户提供更快的响应时间。
参照后文的说明和附图,详细公开了本发明的特定实施方式,指明了本发明的原理可以被采用的方式。应该理解,本发明的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本发明的实施方式包括许多改变、修改和等同。
针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于热数据和删除重复操作的在线扩容IO调度策略流程图;
图2为本发明基于热数据和删除重复操作的在线扩容IO调度策略架构图。
具体实施方式
下面将结合附图和具体实施方式,对本发明的技术方案作详细说明,应理解这些实施方式仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落入本申请所附权利要求所限定的范围内。
本发明提供了一种基于热数据和删除重复操作的在线扩容IO调度方法,该方法包括步骤:
初始化存储系统;
监测一段时间内的用户访问请求;
当所述用户访问请求为写操作时,将所述用户访问请求的物理地址与需要迁移的数据块的目的地址进行比较,如果两者范围完全一致,则修改所述写操作的目标地址,将所述写操作的目标地址修改为所述数据块的目的地址;如果两者范围部分一致,则先将所述需要迁移的数据块剩下未命中的数据读出来,拼接到所述写操作内容中,再将所述写操作的地址修改为所述需要迁移的数据块的目标地址;
确定所述一端时间内计数器值最大的热数据空间,再生成所述热数据空间内的需要迁移的数据块对应的迁移请求;
将所述用户访问请求与所述迁移请求进行排序;
执行排序好的所述用户访问请求与所述迁移请求。
结合图1和图2所示,对基于热数据和删除重复操作的在线扩容IO调度方法做进一步地说明,该方法可以包括以下实施步骤:
(1)初始化存储系统,根据扩容算法设计的存储条带的布局划分新的热数据空间(Space),并设置热数据空间的起始物理位置、需要迁移的数据块相关信息和计数器(count)的相关初始化参数设置。
(2)监测一段时间内的用户的访问请求,RequestDeal模块对用户访问请求进行分析及处理操作;主要分析用户的访问类型,访问地址。
(3)RequestDeal模块对用户访问地址进行计算,得到该用户访问的目标位置所属的热数据空间,并对该热数据空间的计数器进行加1操作。
(4)RequestDeal模块对用户访问的类型进行判断,如果是读请求,将该请求放行到时间段模块(TimePart)等待下一步处理。如果是写请求,则对该访问的内容范围进行判断,判断其操作的数据块内容是否与需要迁移的数据块内容有相同,如果没有相同,将该写请求放行到时间段模块等待下一步处理;如果有相同,将该写请求发送到写操作重定向(WriteRedirect)模块处理。
(5)WriteRedirect模块对有相同的操作内容的用户请求与迁移请求进行具体分析,如果两者之间的相同是完整的对一个数据块内容的相同,则直接将用户写操作执行的目标位置修改为需要迁移的数据块的目标位置。如果两者之间的相同是部分相同,即命中了部分数据块内容,则WtireRedirect会产生一个新的读请求,将该数据块中未被用户写操作命中的数据内容读取出,并拼接在用户写操作的内容中,同样将用户写操作的目标位置修改为需要迁移的块的目标位置。
(6)将WriteRedirect处理完的用户写操作请求,放行到时间段(TimePart)等待下一步操作,同时向热数据空间(Space)发出删除请求,将与用户写操作有着相同内容的迁移操作请求从热数据空间的需要迁移的数据块信息中删除。
(7)时间段(TimePart)接收来自RequestDeal、WriteRedirect和热数据空间三处放行的请求(包括用户访问请求和迁移请求),对这些请求进行统一的顺序排序处理,SortRequest模块分析这些请求的目标物理位置信息,尽量将物理位置相近的请求按顺序排序在一起,达到顺序读写的目的。
(8)SortRequest将排序好的请求放入Sort_T_array集合中,按照Sort_T_array集合中的顺序,逐条对存储系统发出IO操作。
(9)Sort_T_array集合排序完成后,时间段模块会向热数据空间发送计数器重置请求。
(10)重置完成后,按步骤(1)-(10)开启下一轮IO调度操作。
本发明公开了一种IO调度方法,用来优化HS6在线扩容过程的效率。首先是要优先迁移经常被用户访问的热数据区间,因为HS6扩容算法是按照从磁盘首部到尾部的顺序进行迁移,如果用户经常访问该磁盘的靠近尾部的区域,那么磁盘头在分别执行迁移操作和用户访问操作时会产生大量的跳转,消耗大量的时间。我们首先对该热数据区的数据块迁移到新磁盘中,不但可以减轻旧磁盘此时的访问压力,同时新磁盘加入对用户访问请求的服务,增加了存储系统的带宽,可以明显的提升在线扩容时的效率。在此基础之上进一步对用户写操作进行分析,目的是要减少一次写操作请求,当用户写操作访问的块与迁移操作要迁移的块相同时,只需要执行一次即可。在执行所有操作前对所有访问请求进行顺序排序,进一步减少这些访问之间的随机读写行为。同时,考虑到热数据有时效性,上述所有操作都是在一段设定好的时间内进行的。
相比于现有技术的调度测量,本发明的调度方法具有以下优点:
(1)更充分的利用了存储系统的带宽:具有时效性的热数据区域的数据块优先从旧磁盘迁移到新磁盘,不仅解放了旧磁盘响应用户访问请求的压力,同时将新添加的磁盘最快速的加入到响应用户访问请求的服务中。
(2)更少的写操作:写操作在HS6扩容算法中最消耗时间,因为写操作会引起校验块的更新操作。本方法通过对比用户访问请求和迁移请求的内容,减少了部分重复的写操作行为,大大提升了在线迁移过程中的效率。
(3)更快的用户响应时间:本方法通过热数据的优先迁移,快速增加了存储系统响应用户请求的带宽;通过顺序读写排序,减少了用户访问请求与迁移IO之间的随机读写;通过写请求重定向,减少了部分写请求操作,进而减少了用户访问请求与迁移IO之间的资源争用情况。以上三点都会为用户提供更快的响应时间。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本教导的范围不应该参照上述描述来确定,而是应该参照所附权利要求以及这些权利要求所拥有的等价物的全部范围来确定。出于全面之目的,所有文章和参考包括专利申请和公告的公开都通过参考结合在本文中。在上述权利要求中省略这里公开的主题的任何方面并不是为了放弃该主体内容,也不应该认为发明人没有将该主题考虑为所公开的发明主题的一部分。