CN102298556B - 数据流识别方法及装置 - Google Patents

数据流识别方法及装置 Download PDF

Info

Publication number
CN102298556B
CN102298556B CN201110247931.8A CN201110247931A CN102298556B CN 102298556 B CN102298556 B CN 102298556B CN 201110247931 A CN201110247931 A CN 201110247931A CN 102298556 B CN102298556 B CN 102298556B
Authority
CN
China
Prior art keywords
logical address
moving window
data block
initial
data stream
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110247931.8A
Other languages
English (en)
Other versions
CN102298556A (zh
Inventor
董浩
张翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Huawei Technology Co Ltd
Original Assignee
Huawei Symantec Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Symantec Technologies Co Ltd filed Critical Huawei Symantec Technologies Co Ltd
Priority to CN201110247931.8A priority Critical patent/CN102298556B/zh
Publication of CN102298556A publication Critical patent/CN102298556A/zh
Application granted granted Critical
Publication of CN102298556B publication Critical patent/CN102298556B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种数据流识别方法及装置。方法包括:接收主机请求,所述主机请求中包括至少一路数据流;为所述主机请求中的每一路数据流分配一个滑动窗口,所述滑动窗口具有起始逻辑地址和结束逻辑地址;根据一路数据流中请求访问的数据块更新分配给该路数据流的滑动窗口;在第一预设时间内,如果所述滑动窗口的起始逻辑地址和结束逻辑地址均发生更新,且所述滑动窗口的大小不超过预设的最大值,则将该路数据流识别为顺序流。装置包括:接收模块、分配模块、更新模块和识别模块。本发明提供的方案有效解决了乱序的问题,同时,有效实现了多路顺序流的识别。

Description

数据流识别方法及装置
技术领域
本发明实施例涉及数据存储领域,尤其涉及一种数据流识别方法及装置。
背景技术
随着流媒体的广泛应用,对存储系统的读性能要求越来越高。若要提升存储系统的读性能,就需要对主机读请求进行预判,即在主机读请求还没有到达前,便已从磁盘上将主机要读的数据预先读到缓存(CACHE)中,使得主机读请求可以直接在缓存中命中,从而缩短主机读请求时延,提升存储系统的读性能。
要提升主机读请求在缓存中的命中率,缩短读请求的时延,前提是系统要支持预取功能,而预取的关键是对输入输出(Input/Output,简称为:IO)特征进行识别,IO特征可以分为两大类:顺序IO和随机IO。对于随机读请求是不需要预取的,而对顺序读请求则需要预取。因此顺序流的IO特征进行识别才是预取的关键点。
现有技术中包括多种顺序流识别方法。其中一种为对磁盘中的每个数据块引入顺序度计数,如果一个数据块被读入缓存,该数据块的顺序度计数是前一个位置数据块的顺序度计数加1,如果前一个位置数据块不存在,则该数据块的顺序度计数为1,如果该数据块的顺序度计数没有达到顺序读阀值,则认为该数据块为随机数据;如果该数据块的顺序度计数达到了顺序度阀值,则认为该数据块为顺序数据。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
主机在发送请求时是顺序的,但由于传输过程中可能会出现乱序,导致请求到达存储系统时并不一定是顺序的,该方法没有考虑顺序流乱序的情况,也没有考虑多路顺序流并存的情况,使得目前数据流识别方法无法识别乱序的顺序流,也无法处理多数顺序流并存的情况,直接导致了顺序流识别的效率低、准确度差。
发明内容
本发明实施例提供一种数据流识别方法及装置,用以解决现有技术中存在的问题。
本发明实施例提供一种数据流识别方法,包括:
接收主机请求,所述主机请求中包括至少一路数据流,所述主机请求中的每一路数据流中携带请求访问的卷标识,请求访问的逻辑地址以及请求访问的逻辑地址长度;
为所述主机请求中的每一路数据流分配一个滑动窗口,所述滑动窗口具有起始逻辑地址和结束逻辑地址;
根据该路数据流中请求访问的逻辑地址以及请求访问的逻辑地址长度,确定请求访问的逻辑地址范围,以及所述逻辑地址范围在卷中所属的数据块;判断所述数据块的起始逻辑地址和结束逻辑地址是否超出滑动窗口的逻辑地址范围;如果未超出,根据所述数据块的起始逻辑地址或结束逻辑地址将所述数据块加入到所述滑动窗口中;如果所述数据块的起始逻辑地址与所述滑动窗口的起始逻辑地址相同,则更新所述滑动窗口的起始逻辑地址和结束逻辑地址,将所述滑动窗口的起始逻辑地址更新为加入到滑动窗口中的数据块的结束逻辑地址,所述滑动窗口的结束逻辑地址向右移动所述数据块的长度;如果所述数据块的起始逻辑地址与所述滑动窗口的起始逻辑地址不同,且所述数据块的结束逻辑地址不超出所述滑动窗口的结束逻辑地址,则不更新所述滑动窗口的起始逻辑地址和结束逻辑地址;
在第一预设时间内,如果所述滑动窗口的起始逻辑地址和结束逻辑地址均发生更新,且所述滑动窗口的大小不超过预设的最大值,则将该路数据流识别为顺序流。
本发明实施例提供一种数据流识别装置,包括:
接收模块,用于接收主机请求,所述主机请求中包括至少一路数据流,所述主机请求中的每一路数据流中携带请求访问的卷标识,请求访问的逻辑地址以及请求访问的逻辑地址长度;
分配模块,用于为所述主机请求中的每一路数据流分配一个滑动窗口,所述滑动窗口具有起始逻辑地址和结束逻辑地址;
更新模块,用于根据一路数据流中请求访问的数据块更新分配给该路数据流的滑动窗口;所述更新模块包括:确定单元,用于根据该路数据流中请求访问的逻辑地址以及请求访问的逻辑地址长度,确定请求访问的逻辑地址范围,以及所述逻辑地址范围在卷中所属的数据块;判断单元,用于判断所述数据块的起始逻辑地址和结束逻辑地址是否超出滑动窗口的逻辑地址范围;加入单元,用于如果所述判断单元的判断结果为未超出,根据所述数据块的起始逻辑地址或结束逻辑地址将所述数据块加入到所述滑动窗口中;
判定模块,用于判断所述数据块的起始逻辑地址与所述滑动窗口的起始逻辑地址是否相同;如果所述数据块的起始逻辑地址与所述滑动窗口的起始逻辑地址相同,则更新所述滑动窗口的起始逻辑地址和结束逻辑地址,将所述滑动窗口的起始逻辑地址更新为加入到滑动窗口的数据块的结束逻辑地址,所述滑动窗口的结束逻辑地址向右移动所述数据块的长度;如果所述数据块的起始逻辑地址与所述滑动窗口的起始逻辑地址不同,且所述数据块的结束逻辑地址不超出所述滑动窗口的结束逻辑地址,则不更新所述滑动窗口的起始逻辑地址和结束逻辑地址;
识别模块,用于在第一预设时间内,如果所述滑动窗口的起始逻辑地址和结束逻辑地址均发生更新,且所述滑动窗口的大小不超过预设的最大值,则将该路数据流识别为顺序流。
本发明实施例的数据流识别方法及装置,通过为主机请求中的每一路数据流分配一个滑动窗口,并根据一路数据流中请求访问的数据块更新分配给该路数据流的滑动窗口,也即利用滑动窗口对主机请求中的每一路数据流请求访问的数据块进行排序,有效解决了乱序的问题,同时,通过为每路数据流分配一个滑动窗口,有效实现了多路顺序流的识别。本方案提高了在IO乱序和/或多路流并存情况下的顺序流识别能力。识别出顺序流之后,可以达到提升预取的命中率,大幅提高读的性能,增强系统的IO并发处理能力的效果,同时,根据顺序流识别技术可精确限制随机写数据的个数,在顺序写与随机写并存时,大幅提高顺序写的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据流识别方法流程图;
图2a至图2c为本发明实施例提供的将已确定的数据块加入到滑动窗口中的过程示意图;
图3为本发明实施例提供的数据流识别装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
存储系统可以是由一个或多个存储单元组成,存储单元可以是磁盘、闪存盘片或其他非易失性存储介质,下文以磁盘为例进行说明,每一个磁盘的容量大小可以依据需要设定。这些磁盘可以映射为包含多个不同卷的主机,不同卷通过不同的卷标识进行区分,不同的卷中可以包含不同类型的数据。以电影电视这种最常见的数据为例,不同的卷可以根据不同的划分标准分为动作片卷、爱情片卷、灾难片卷等等。
图1为本发明实施例提供的数据流识别方法流程图,如图1所示,该方法包括:
步骤101、接收主机请求,该主机请求中包括至少一路数据流。
主机请求既可以是读请求,也可以是写请求,此处不做限定。主机请求中可以包括一路数据流或多路数据流。主机请求中的数据流可以是顺序流,也可以是随机流。以视频点播这种常见的主机请求为例,如果主机请求的是播放一部电影,那么这一路数据流很可能是顺序流。主机请求中的每一路数据流中会携带的参数包括:请求访问的卷标识ID、请求访问的逻辑地址、以及请求访问的逻辑地址长度等。
步骤102、为主机请求中的每一路数据流分配一个滑动窗口。
其中,为每一路数据流分配一个滑动窗口可以包括:为每一路数据流确定滑动窗口的起始逻辑地址和结束逻辑地址。滑动窗口的起始逻辑地址是根据每一路数据流具体接收的请求逻辑地址来确定的,滑动窗口的起始逻辑地址可以根据如下方式确定:
根据请求访问的卷标识确定主机请求访问的存储系统的卷,然后将该路数据流第一个请求访问的逻辑地址,作为滑动窗口的起始逻辑地址。
滑动窗口的结束逻辑地址可以根据如下方式确定:由于滑动窗口的最大值是固定不变的,因此,滑动窗口的起始逻辑地址加上滑动窗口的最大值即为滑动窗口的结束逻辑地址。
这里对逻辑地址进行如下说明:逻辑地址是逻辑块寻址(Logical BlockAddressing,简称为:LBA)地址,是磁盘的上划分卷的地址,卷地址与真正磁盘地址之间是需要转换的。例如,卷的逻辑地址为100,对应磁盘的地址可能是3000等。
当主机请求中存在多路数据流时,存储系统会为每一路数据流分配一个滑动窗口,这时存储系统中会同时存在多个滑动窗口,滑动窗口可以按照LBA进行排序,采用如哈希(Hush)表进行组织。需要说明的是,本发明实施例也可以采用红黑树的数据结构进行组织,以便于记录顺序流的窗口信息。
步骤103、根据一路数据流中请求访问的数据块更新分配给该路数据流的滑动窗口。
换言之,步骤103可以理解为利用分配的滑动窗口对每一路数据流中请求访问的数据块进行排序。
这里所说的数据块由存储系统的一个卷中的部分连续逻辑地址的数据组成,数据块的大小为预先划分的。预先划分数据块的步骤可以发生在步骤101之前。具体包括:将存储系统划分为若干相同大小的数据块,每一个数据块具有起始逻辑地址和结束逻辑地址。将存储系统划分为若干相同大小的数据块可以理解为对每一个卷分别进行划分。一个数据块的大小可以为16k或者32k,根据实际需要进行划分,此处不做限定。相应的,如果步骤101中主机请求中的数据流为顺序流,则主机请求中的该路数据流会依次访问步骤100中划分的数据块,如果主机请求中的数据流为随机流,则主机请求中的该路数据流访问步骤100中划分的数据块是随机的。滑动窗口的最大值可以为步骤100中划分的数据块的n倍,n为大于1的正整数,优选n的数值可以为1024或者2048等。
正如上面所述的,如果主机请求是顺序流,那么主机请求中请求访问的逻辑地址范围(以及对应的数据块)应该是连续的,这些连续的逻辑地址范围在到达存储系统时可能会乱序,但从一定时间内的整体上来看,请求还是依次访问卷中的多个数据块的。因此,可以利用一个滑动窗口对可能乱序的数据块进行排序。
可选的,具体的排序方法包括:
1、读取该路数据流中请求访问的逻辑地址和请求访问的逻辑地址长度。
2、将请求访问的逻辑地址和请求访问的逻辑地址长度相加和可以确定请求访问的逻辑地址范围,并确定该逻辑地址范围属于哪一个或者哪几个数据块。
具体的判断方法是:判断该请求访问的逻辑地址是否处于某一数据块的起始逻辑地址和结束逻辑地址之间,如果是,则该请求访问的逻辑地址属于该数据块。也即可以认为,请求访问的是该数据块中的数据。请求访问的逻辑地址范围可以会覆盖多个数据块,这种情况下,多个数据块是逻辑地址连续的,所以,也可以变相地理解为是一个大的数据块。这个大的数据块的起始逻辑地址是请求访问的第一个逻辑地址对应的数据块的起始逻辑地址,这个大的数据块的结束逻辑地址是请求访问的最后一个逻辑地址对应的数据块的结束逻辑地址。在后续描述中,如果涉及到请求访问的逻辑地址范围覆盖多个数据块的情况,提到的数据块均可以理解为是这个大的数据块。
3、判断已确定的数据块是否超出滑动窗口的逻辑地址范围。
换句话讲,也即判断已确定的数据块是否位于滑动窗口的起始逻辑地址和结束逻辑地址之间,如果位于,则说明已确定的数据块未超出滑动窗口的逻辑地址范围。
4、如果未超出,按照逻辑地址的顺序,将已确定的数据块加入到滑动窗口中。
需要说明的是,滑动窗口实际上是通过起始逻辑地址和结束逻辑地址来界定的一个逻辑地址范围。如果已确定的数据块的起始逻辑地址和结束逻辑地址并没有超出该逻辑地址范围,则按照逻辑地址的顺序将已确定的数据块加入该滑动窗口。下面结合具体实例对排序过程进行说明,需要说明的是,这里仅以对一个一个的数据块进行排序为例进行说明,对于连续多个数据块(即前面所说的一个大的数据块)的情况,可以参考该说明,不做赘述。
如图2a至图2c所示的将已确定的数据块加入到滑动窗口中的过程示意图,假设读取一路数据流中请求访问的逻辑地址后确定请求访问的逻辑地址属于数据块D03,滑动窗口的逻辑地址范围从数据块D01的起始逻辑地址到数据块D07的结束逻辑地址,则将该数据块D03加入到滑动窗口中。然后,读取该路数据流中请求访问的逻辑地址后确定请求访问的逻辑地址属于数据块D04,则将该数据块D04加入到滑动窗口中。再次,读取该路数据流中请求访问的逻辑地址后确定请求访问的逻辑地址属于数据块D01,则将该数据块D01加入到滑动窗口中,此时发现该数据块D01的起始逻辑地址与滑动窗口的起始逻辑地址相同,需要更新滑动窗口的起始逻辑地址和结束逻辑地址,即可以将滑动窗口的逻辑地址范围更新为从数据块D02的起始逻辑地址至数据块D08的结束逻辑地址。并依次类推。
5、判断是否需要更新滑动窗口的起始逻辑地址和结束逻辑地址。
如果需要,更新滑动窗口的起始逻辑地址和结束逻辑地址。
如果加入到滑动窗口中的数据块的起始逻辑地址与滑动窗口的起始逻辑地址相同,则更新滑动窗口的起始逻辑地址和结束逻辑地址,可选的:滑动窗口的起始逻辑地址更新为该加入到滑动窗口中的数据块的结束逻辑地址,结束逻辑地址也可以相应的更新,即可以理解为向右移动该数据块的长度。如果加入到滑动窗口中的数据块的起始逻辑地址与滑动窗口的起始逻辑地址不相同,则不更新滑动窗口的起始逻辑地址。
需要说明的是,本发明实施例可以将滑动窗口的起始逻辑地址更新为加入到滑动窗口中的数据块的结束逻辑地址,有多个连续的数据块加入到滑动窗口中时,滑动窗口的起始逻辑地址可以更新为多个连续的数据块中的最后一个数据块的结束逻辑地址。相应的,滑动窗口的结束逻辑地址也可以相应的更新,即可以理解为结束逻辑地址向右移动一个或多个数据块的长度,本发明在此仅作为示例,本发明也可以根据实际的需要更新其逻辑地址和结束逻辑地址,例如,将滑动窗口的起始逻辑地址更新为预定值,需要参考IO请求的大小以及数据块的大小等,然后,将结束逻辑地址也可以进行相应的更新,本发明不以此为限。
对于滑动窗口向右移动数据块的长度,需要说明的是:当滑动窗口接收到数据块后,这个滑动窗口即会不时地向右移动,也即滑动窗口的起始逻辑地址和结束逻辑地址会不时地发生更新。滑动窗口的左边沿(起始逻辑地址)向右边沿(结束逻辑地址)靠近时称之为滑动窗口的合拢,这种现象发生在接收到顺序数据块时;滑动窗口的右边沿向右移动称之为滑动窗口的张开,有可能会超过最大值,这种现象发生在接收到非顺序数据块时。
步骤104、如果在第一预设时间内,滑动窗口的起始逻辑地址和结束逻辑地址均发生更新,且滑动窗口的大小不超过预设的最大值,则将该路数据流识别为顺序流。
例如,滑动窗口大小可以设置为1024也可以是2048。
简单解释如下:如果一路数据流是顺序流,那么主机请求中请求访问的逻辑地址(以及对应的数据块)应该是连续的,这些连续的逻辑地址在到达存储系统时可能会乱序,但从一定时间内的整体上来看,请求还是依次访问卷中的多个数据块的。依次访问卷中的多个数据块,就使得滑动窗口不断地向右滑动,即滑动窗口的起始逻辑地址和结束逻辑地址不断以一个或多个数据块的逻辑地址范围为单位向右移动,而且不会超出预设的最大值。如果某一路数据流满足上述条件,便可以将该路数据流识别为顺序流。
进一步的,可选的,如果在第一预设时间内,滑动窗口的起始逻辑地址不更新,而结束逻辑地址不断向右更新,且超过滑动窗口的最大值,则说明该路数据流是随机流;如果在第二预设时间内滑动窗口的起始逻辑地址和结束逻辑地址均不再发生更新,则说明该路顺序流已经结束。需要说明的是,第一预设时间和第二预设时间均为本领域技术人员根据对滑动窗口技术的经验进行的设定,针对不同的系统和不同的情况可以设置为不同的数值,此处不做具体的限定。
具体举例如下:假设给定的一路数据流,其第一个请求访问的逻辑地址加上请求访问的逻辑地址就是为该路流分配的滑动窗口的起始逻辑地址。若第二个请求访问的逻辑地址与滑动窗口的起始逻辑地址相同,则更新滑动窗口的起始逻辑地址为第二个请求访问的逻辑地址加上请求访问的逻辑地址长度之后得到的逻辑地址,此时滑动窗口的结束逻辑地址发生更新,更新为更新后的起始逻辑地址加上滑动窗口的最大值。若第二个请求访问的逻辑地址与滑动窗口的起始逻辑地址不同,则更新滑动窗口的结束逻辑地址为第二个请求访问的逻辑地址加上请求访问的逻辑地址长度之后得到的逻辑地址,此时,滑动窗口的起始逻辑地址不发生更新。如果起始逻辑地址不发生更新,而结束逻辑地址不断发生更新,并超出了滑动窗口的最大值,说明给定的该路数据流为随机流。如果起始逻辑地址不断发生更新,且结束逻辑地址也不断发生更新,并且没有超出滑动窗口的最大值,说明给定的该路数据流的顺序流。如果一个滑动窗口的起始逻辑地址和结束逻辑地址在第二预设时间内如3分钟或者5分钟等等均没有发生更新,则说明该路数据流结束。
本发明实施例提供的数据流识别方法,通过为主机请求中的每一路数据流分配一个滑动窗口,并根据一路数据流中请求访问的数据块更新分配给该路数据流的滑动窗口,也即利用滑动窗口对主机请求中的每一路数据流请求访问的数据块进行排序,有效解决了乱序的问题,同时,通过为每路数据流分配一个滑动窗口,有效实现了多路顺序流的识别。本领域技术人员可以理解,实现多路顺序流识别功能,提升预取的命中率,大幅提高读数据的性能,增强系统的IO并发处理能力;多路顺序流识别可精确限制随机写数据的个数,在顺序写与随机写并存时,通过限制随机写占用的资源数,大幅提高顺序写数据的性能。
图3为本发明实施例提供的数据流识别装置的结构示意图,如图3所示,该数据流识别装置包括:接收模块301、分配模块302、更新模块303以及识别模块304。其中,接收模块301用于接收主机请求,该主机请求中包括至少一路数据流;分配模块302用于为主机请求中的每一路数据流分配一个滑动窗口,该滑动窗口具有起始逻辑地址和结束逻辑地址;更新模块303用于根据一路数据流中请求访问的数据块更新分配给该路数据流的滑动窗口;识别模块304用于如果在第一预设时间内,滑动窗口的起始逻辑地址和结束逻辑地址均发生更新,且滑动窗口的大小不超过预设的最大值,则将该路数据流识别为顺序流。
可选的,一种实施方式下,主机请求中的每一路数据流中携带请求访问的卷标识,请求访问的逻辑地址以及请求访问的逻辑地址长度,则分配模块302包括:确定单元,起始地址获得单元,以及结束地址获得单元。其中,确定单元用于根据请求访问的卷标识在存储系统中确定请求访问的卷;起始地址获得单元用于将请求访问的逻辑地址获得滑动窗口在请求访问的卷中的起始逻辑地址;结束地址获得单元用于根据滑动窗口的预设的最大值以及滑动窗口的起始逻辑地址获得滑动窗口的结束逻辑地址。
可选的,一种实施方式下,主机请求中的每一路数据流中携带请求访问的卷标识,请求访问的逻辑地址以及请求访问的逻辑地址长度,则更新模块303包括:确定单元,判断单元,以及加入单元。其中的确定单元用于根据该路数据流中请求访问的逻辑地址和请求访问的逻辑地址长度,确定请求访问的逻辑地址在卷中所属的数据块;判断单元用于判断数据块的起始逻辑地址和结束逻辑地址是否超出滑动窗口的逻辑地址范围;加入单元用于如果判断单元的判断结果为未超出,根据数据块的起始逻辑地址或结束逻辑地址将数据块加入到滑动窗口中。
在上述实施方式的基础上,可选的,该装置还可以包括:判定模块,用于判断数据块的起始逻辑地址与滑动窗口的起始逻辑地址是否相同;如果数据块的起始逻辑地址与滑动窗口的起始逻辑地址相同,则判定更新滑动窗口的起始逻辑地址和结束逻辑地址。如果数据块的起始逻辑地址与滑动窗口的起始逻辑地址不同,且数据块的结束逻辑地址不超出滑动窗口的结束逻辑地址,则判定不更新滑动窗口的起始逻辑地址和结束逻辑地址。
进一步的,该装置还可以包括:划分模块,用于将存储系统中的卷划分为多个相同大小的数据块,每一个数据块具有起始逻辑地址和结束逻辑地址。
本发明实施例提供的数据流识别装置,可以使用在分布式系统中,也可以使用在集中式系统中。其具体的产品形态可以为存储区域网络(StorageArea Network,简称为:SAN),也可以为网络附属存储(Network AttachedStorage,简称为:NAS)。通过为主机请求中的每一路数据流分配一个滑动窗口,并根据一路数据流中请求访问的数据块更新分配给该路数据流的滑动窗口,也即利用滑动窗口对主机请求中的每一路数据流请求访问的数据块进行排序,有效解决了乱序的问题,同时,通过为每路数据流分配一个滑动窗口,有效实现了多路顺序流的识别。本方案提高了在IO乱序和/或多路流并存情况下的顺序流识别能力。识别出顺序流之后,可以达到提升预取的命中率,大幅提高读的性能,增强系统的IO并发处理能力的效果,同时,根据顺序流识别技术可精确限制随机写数据的个数,在顺序写与随机写并存时,大幅提高顺序写的性能。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (6)

1.一种数据流的识别方法,其特征在于,包括:
接收主机请求,所述主机请求中包括至少一路数据流,所述主机请求中的每一路数据流中携带请求访问的卷标识,请求访问的逻辑地址以及请求访问的逻辑地址长度;
为所述主机请求中的每一路数据流分配一个滑动窗口,所述滑动窗口具有起始逻辑地址和结束逻辑地址;
根据该路数据流中请求访问的逻辑地址以及请求访问的逻辑地址长度,确定请求访问的逻辑地址范围,以及所述逻辑地址范围在卷中所属的数据块;判断所述数据块的起始逻辑地址和结束逻辑地址是否超出滑动窗口的逻辑地址范围;如果未超出,根据所述数据块的起始逻辑地址或结束逻辑地址将所述数据块加入到所述滑动窗口中;如果所述数据块的起始逻辑地址与所述滑动窗口的起始逻辑地址相同,则更新所述滑动窗口的起始逻辑地址和结束逻辑地址,将所述滑动窗口的起始逻辑地址更新为加入到滑动窗口中的数据块的结束逻辑地址,所述滑动窗口的结束逻辑地址向右移动所述数据块的长度;如果所述数据块的起始逻辑地址与所述滑动窗口的起始逻辑地址不同,且所述数据块的结束逻辑地址不超出所述滑动窗口的结束逻辑地址,则不更新所述滑动窗口的起始逻辑地址和结束逻辑地址;
在第一预设时间内,如果所述滑动窗口的起始逻辑地址和结束逻辑地址均发生更新,且所述滑动窗口的大小不超过预设的最大值,则将该路数据流识别为顺序流。
2.根据权利要求1所述的方法,其特征在于,所述为所述主机请求中的每一路数据流分配一个滑动窗口包括:
根据所述请求访问的卷标识在存储系统中确定请求访问的卷;
将所述请求访问的逻辑地址,获得所述滑动窗口在所述请求访问的卷中的起始逻辑地址;
根据所述滑动窗口的预设的最大值以及所述滑动窗口的起始逻辑地址获得所述滑动窗口的结束逻辑地址。
3.根据权利要求1或2所述的方法,其特征在于,所述接收主机请求之前,所述方法还包括:
将存储系统中的卷划分为多个相同大小的数据块,每一个数据块具有起始逻辑地址和结束逻辑地址。
4.一种数据流的识别装置,其特征在于,包括:
接收模块,用于接收主机请求,所述主机请求中包括至少一路数据流,所述主机请求中的每一路数据流中携带请求访问的卷标识,请求访问的逻辑地址以及请求访问的逻辑地址长度;
分配模块,用于为所述主机请求中的每一路数据流分配一个滑动窗口,所述滑动窗口具有起始逻辑地址和结束逻辑地址;
更新模块,用于根据一路数据流中请求访问的数据块更新分配给该路数据流的滑动窗口;所述更新模块包括:确定单元,用于根据该路数据流中请求访问的逻辑地址以及请求访问的逻辑地址长度,确定请求访问的逻辑地址范围,以及所述逻辑地址范围在卷中所属的数据块;判断单元,用于判断所述数据块的起始逻辑地址和结束逻辑地址是否超出滑动窗口的逻辑地址范围;加入单元,用于如果所述判断单元的判断结果为未超出,根据所述数据块的起始逻辑地址或结束逻辑地址将所述数据块加入到所述滑动窗口中;
判定模块,用于判断所述数据块的起始逻辑地址与所述滑动窗口的起始逻辑地址是否相同;如果所述数据块的起始逻辑地址与所述滑动窗口的起始逻辑地址相同,则更新所述滑动窗口的起始逻辑地址和结束逻辑地址,将所述滑动窗口的起始逻辑地址更新为加入到滑动窗口的数据块的结束逻辑地址,所述滑动窗口的结束逻辑地址向右移动所述数据块的长度;如果所述数据块的起始逻辑地址与所述滑动窗口的起始逻辑地址不同,且所述数据块的结束逻辑地址不超出所述滑动窗口的结束逻辑地址,则不更新所述滑动窗口的起始逻辑地址和结束逻辑地址;
识别模块,用于在第一预设时间内,如果所述滑动窗口的起始逻辑地址和结束逻辑地址均发生更新,且所述滑动窗口的大小不超过预设的最大值,则将该路数据流识别为顺序流。
5.根据权利要求4所述的装置,其特征在于,所述分配模块包括:
确定单元,用于根据所述请求访问的卷标识在存储系统中确定请求访问的卷;
起始地址获得单元,用于将所述请求访问的逻辑地址,获得所述滑动窗口在所述请求访问的卷中的起始逻辑地址;
结束地址获得单元,用于根据所述滑动窗口的预设的最大值以及所述滑动窗口的起始逻辑地址获得所述滑动窗口的结束逻辑地址。
6.根据权利要求4或5所述的装置,其特征在于,所述装置还包括:
划分模块,用于将存储系统中的卷划分为多个相同大小的数据块,每一个数据块具有起始逻辑地址和结束逻辑地址。
CN201110247931.8A 2011-08-26 2011-08-26 数据流识别方法及装置 Active CN102298556B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110247931.8A CN102298556B (zh) 2011-08-26 2011-08-26 数据流识别方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110247931.8A CN102298556B (zh) 2011-08-26 2011-08-26 数据流识别方法及装置

Publications (2)

Publication Number Publication Date
CN102298556A CN102298556A (zh) 2011-12-28
CN102298556B true CN102298556B (zh) 2013-10-02

Family

ID=45358985

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110247931.8A Active CN102298556B (zh) 2011-08-26 2011-08-26 数据流识别方法及装置

Country Status (1)

Country Link
CN (1) CN102298556B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103927136B (zh) * 2014-04-21 2017-02-22 华为技术有限公司 输入输出io类型的识别方法和装置
CN104156321B (zh) * 2014-07-23 2017-06-09 华为技术有限公司 一种数据预取的方法以及装置
CN104134027B (zh) * 2014-07-23 2017-10-10 华为技术有限公司 一种顺序流识别的方法以及装置
CN104216663A (zh) * 2014-08-27 2014-12-17 山东超越数控电子有限公司 一种提高文件写入速度的方法
CN107229580B (zh) * 2016-03-23 2020-08-11 北京忆恒创源科技有限公司 顺序流检测方法与装置
CN110297787B (zh) * 2018-03-22 2021-06-01 龙芯中科技术股份有限公司 I/o设备访问内存的方法、装置及设备
CN111198659B (zh) * 2019-12-26 2023-09-05 天津中科曙光存储科技有限公司 基于多滑动窗口实现的并发i/o流模型识别方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101634970A (zh) * 2009-08-26 2010-01-27 成都市华为赛门铁克科技有限公司 预取长度调整方法、装置和存储系统
US7822731B1 (en) * 2008-03-28 2010-10-26 Emc Corporation Techniques for management of information regarding a sequential stream
CN102023931A (zh) * 2010-12-17 2011-04-20 曙光信息产业(北京)有限公司 一种自适应缓存预取方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060288184A1 (en) * 2005-06-17 2006-12-21 Seagate Technology Llc Admission control in data storage devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7822731B1 (en) * 2008-03-28 2010-10-26 Emc Corporation Techniques for management of information regarding a sequential stream
CN101634970A (zh) * 2009-08-26 2010-01-27 成都市华为赛门铁克科技有限公司 预取长度调整方法、装置和存储系统
CN102023931A (zh) * 2010-12-17 2011-04-20 曙光信息产业(北京)有限公司 一种自适应缓存预取方法

Also Published As

Publication number Publication date
CN102298556A (zh) 2011-12-28

Similar Documents

Publication Publication Date Title
CN102298556B (zh) 数据流识别方法及装置
US10983907B1 (en) Nonvolatile memory controller that supports host selected data movement based upon metadata generated by the nonvolatile memory controller
US11216365B1 (en) Maintenance of non-volaitle memory on selective namespaces
US9836419B2 (en) Efficient data movement within file system volumes
US10474397B2 (en) Unified indirection in a multi-device hybrid storage unit
US7500063B2 (en) Method and apparatus for managing a cache memory in a mass-storage system
US9229854B1 (en) Multi-array operation support and related devices, systems and software
JP2021006984A (ja) 不揮発性メモリデータの書き込み管理
US9003135B2 (en) Efficient allocation and reclamation of thin-provisioned storage
CN102087586B (zh) 数据处理方法及装置
US10761750B2 (en) Selectively storing data into allocation areas using streams
US20110072225A1 (en) Application and tier configuration management in dynamic page reallocation storage system
US11249652B1 (en) Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
KR102538126B1 (ko) 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘
CN112771493B (zh) 将写入流分离到多个分区中
JP2015531089A (ja) ストレージ装置及びデータ管理方法
CN103942011A (zh) 一种差量快照系统及其使用方法
CN103761053A (zh) 一种数据处理方法和装置
US20170315924A1 (en) Dynamically Sizing a Hierarchical Tree Based on Activity
CN113918087B (zh) 存储装置以及用于管理存储装置中的命名空间的方法
CN111124302B (zh) 一种san共享文件存储和归档方法和系统
US10078642B1 (en) Dynamic memory shrinker for metadata optimization
CN115437579B (zh) 一种元数据管理方法、装置、计算机设备及可读存储介质
US8504764B2 (en) Method and apparatus to manage object-based tiers
CN104731714A (zh) 数据访问方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Applicant after: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.

Address before: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Applicant before: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES Co.,Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES CO., LTD. TO: HUAWEI DIGITAL TECHNOLOGY (CHENGDU) CO., LTD.

C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220830

Address after: No. 1899 Xiyuan Avenue, high tech Zone (West District), Chengdu, Sichuan 610041

Patentee after: Chengdu Huawei Technologies Co.,Ltd.

Address before: 611731 Qingshui River District, Chengdu hi tech Zone, Sichuan, China

Patentee before: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.