CN104461936B - 缓存数据的刷盘方法及装置 - Google Patents
缓存数据的刷盘方法及装置 Download PDFInfo
- Publication number
- CN104461936B CN104461936B CN201410712971.9A CN201410712971A CN104461936B CN 104461936 B CN104461936 B CN 104461936B CN 201410712971 A CN201410712971 A CN 201410712971A CN 104461936 B CN104461936 B CN 104461936B
- Authority
- CN
- China
- Prior art keywords
- lba
- data block
- brushed
- plate
- dirty data
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种缓存数据的刷盘方法及装置。一种缓存数据的刷盘方法,应用于存储系统中,所述存储系统包括控制器、磁盘和SSD,所述SSD作为所述磁盘的缓存,所述方法由控制器执行,所述方法包括:向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;根据脏数据块的标识与LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。
Description
技术领域
本发明实施例涉及存储技术,尤其涉及一种缓存数据的刷盘方法及装置。
背景技术
随着固态硬盘(SSD,Solid State Drive)技术的成熟和成本的下降,越来越多的存储系统开始选用SSD作为高速缓冲存储器(cache)介质。
现有技术中,存储系统通过cache技术进行写缓存时:控制器首先接收处理器下发的写请求,其中该写请求包括了待写入数据及该待写入数据对应的逻辑区块地址(LBA,Logical Block Address);其次,将待写入数据写入到SSD的缓存块中,将该缓存块的状态设置为脏数据块,并将该脏数据块的标识与待写入数据对应的LBA进行关联存储;最后在cache的刷盘时机,向磁盘进行数据同步(即将写缓存中的数据发送到磁盘进行存储,本发明中也称为cache的刷盘)。现有技术中,在进行cache刷盘时:控制器采用异步IO的方式向SSD发送多个缓存数据读取请求以获得多个脏数据块的缓存数据;并在接收到任一缓存数据读取请求对应的缓存数据后,将该缓存数据及该缓存数据对应的LBA发送至磁盘,以使磁盘将该缓存数据存储至对应的LBA。
由于磁盘存储数据时,首先需要将磁头步进到LBA所指示的位置,再将缓存数据进行存储;因此,现有技术中,存在控制器刷盘效率低的问题。
发明内容
本发明提供一种缓存数据的刷盘方法及装置,用以解决现有技术中控制器刷盘效率低的问题。
第一方面,本发明提供一种缓存数据的刷盘方法,应用于存储系统中,所述存储系统包括控制器、磁盘和固态硬盘SSD,所述SSD作为所述磁盘的缓存,所述方法由控制器执行,所述方法包括:
向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;
接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;
根据脏数据块的标识与磁盘逻辑区块地址LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;
根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。
结合第一方面,在第一方面的第一种可能实现的方式中,所述向所述SSD发送缓存数据读取请求之前,还包括:根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,其中,所述M个待刷盘的脏数据块分别对应的M个LBA均大于所述当前刷盘操作的LBA。
结合第一方面的第一种可能实现的方式,在第一方面的第二种可能实现的方式中,所述根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,包括:根据所述当前刷盘操作的LBA和每个脏数据块的LBA,将所述每个脏数据块放入第一队列或第二队列,所述第一队列中的脏数据块的LBA大于或等于所述当前刷盘操作的LBA,所述第二队列中的脏数据块的LBA小于所述当前刷盘操作的LBA;从所述第一队列中选择所述M个待刷盘的脏数据块。
结合第一方面的第第二种可能实现的方式,在第一方面的第三种可能实现的方式中,从所述第一队列中选择LBA值小的所述M个待刷盘的脏数据块。
结合第一方面的第二种或第三种可能实现的方式,在第一方面的第四种可能实现的方式中,所述方法还包括:根据选择的所述M个待刷盘的脏数据块的LBA,将所述M个待刷盘的脏数据块中LBA连续的脏数据块进行合并,获得合并后的待刷盘的脏数据块;
相应的,向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识,包括:向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括所述合并后的待刷盘的脏数据块的标识。
第二方面,本发明提供一种控制器,所述控制器应用于存储系统中,所述存储系统包括所述控制器、磁盘和固态硬盘SSD,所述SSD作为所述磁盘的缓存,所述控制器包括:
读取请求发送模块,用于向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;
读取响应接收模块,用于接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;
LBA确定模块,用于根据脏数据块的标识与磁盘逻辑区块地址LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;
刷盘模块,用于根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。
结合第二方面,在第二方面的第一种可能实现的方式中,所述读取请求发送模块,还用于:根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,其中,所述M个待刷盘的脏数据块分别对应的M个LBA均大于所述当前刷盘操作的LBA。
结合第二方面的第一种可能实现的方式,在第二方面的第二种可能实现的方式中,所述读取请求发送模块,具体用于:根据所述当前刷盘操作的LBA和每个脏数据块的LBA,将所述每个脏数据块放入第一队列或第二队列,所述第一队列中的脏数据块的LBA大于所述当前刷盘操作的LBA,所述第二队列中的脏数据块的LBA小于所述当前刷盘操作的LBA;从所述第一队列中选择所述M个待刷盘的脏数据块。
结合第二方面的第二种可能实现的方式,在第二方面的第三种可能实现的方式中,所述读取请求发送模块,具体用于:从所述第一队列中选择LBA值小的所述M个待刷盘的脏数据块。
结合第二方面的第二种或第三种可能实现的方式,在第二方面的第四种可能实现的方式中,所述读取请求发送模块,还用于:根据选择的所述M个待刷盘的脏数据块的LBA,将所述M个待刷盘的脏数据块中LBA连续的脏数据块进行合并,获得合并后的待刷盘的脏数据块;
相应的,所述读取请求发送模块,具体用于:向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括所述合并后的待刷盘的脏数据块的标识。
本发明提供一种缓存数据的刷盘方法及装置,通过根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘,避免了由于磁盘来回寻道而浪费的刷盘时间,提高了控制器的刷盘效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明缓存数据的刷盘方法的应用场景示意图;
图2为本发明缓存数据的刷盘方法实施例一的流程图;
图3为本发明缓存数据的刷盘方法实施例二的流程图;
图4为本发明缓存数据的刷盘方法实施例三的流程图;
图5为本发明实施例LBA示意图;
图6为本发明控制器实施例一的结构示意图;
图7为本发明控制器实施例四的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明缓存数据的刷盘方法的应用场景示意图;如图1所示,存储系统中,处理器11将待写入的数据发送至控制器12;控制器12首先将接收到的数据发送至SSD 13进行缓存,然后再在cache的刷盘时机将缓存在SSD 13的数据同步至磁盘14。现有技术中,控制器12将缓存在SSD 13的数据同步至磁盘14时:控制器12采用异步IO的方式向SSD 13发送多个缓存数据读取请求以获得多个缓存数据;并在接收到任一缓存数据读取请求对应的缓存数据后,将该缓存数据及该缓存数据对应的LBA发送至磁盘14,以使磁盘14将该缓存数据存储至对应的LBA。由于磁盘存储数据时,首先需要将磁头步进到LBA所指示的位置,再将缓存数据进行存储;且磁头只能向一个方向步进;因此,存在控制器刷盘效率低的问题。
图2为本发明缓存数据的刷盘方法实施例一的流程图,如图2所示,本实施例的方法可以包括:
步骤201、向SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;
可选的,所述向SSD发送缓存数据读取请求,包括:
向SSD发送M个缓存数据读取请求,每一个缓存数据读取请求中包括一个待刷盘的脏数据块的标识;或者,向SSD发送一个缓存数据读取请求,该缓存数据读取请求中包括M个待刷盘的脏数据块的标识。
可选的,所述M个待刷盘的脏数据块可以为所有脏数据块中任选的M个脏数据块。
步骤202、接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;
步骤203、根据脏数据块的标识与LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;
步骤204、根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。
例如,若N=5,且待刷盘的脏数据块1对应的LBA为2、待刷盘的脏数据块2对应的LBA为5、待刷盘的脏数据块3对应的LBA为3、待刷盘的脏数据块4对应的LBA为6、待刷盘的脏数据块5对应的LBA为4;则:控制器按照先待刷盘的脏数据块1的缓存数据、再待刷盘的脏数据块3的缓存数据、再待刷盘的脏数据块5的缓存数据、再待刷盘的脏数据块2的缓存数据、再待刷盘的脏数据块4的缓存数据的顺序将5个待刷盘的脏数据块的缓存数据存储至磁盘。
现有技术中,控制器通过异步IO的方式向SSD发送多个缓存数据读取请求,并在接收到任一缓存数据读取请求对应的缓存数据后,就将该缓存数据同步至磁盘。本发明中,根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。
现有技术中,由于控制器通过异步IO的方式向SSD发送多个缓存数据读取请求,并在接收到任一缓存数据读取请求对应的缓存数据后,就将该缓存数据同步至磁盘;且磁盘在存储数据时,首先需要将磁头步进到LBA所指示的位置,再将缓存数据进行存储;且磁头只能向一个方向步进。因此,若磁头当前位于LBA等于3的位置,控制器第一次收到的缓存数据1对应的LBA为8、第二次收到的缓存数据2对应的LBA为6、第三次收到的缓存数据3对应的LBA为2;则:磁盘的磁头首先需要步进至LBA等于8为的位置将缓存数据1进行存储,接着磁头需要步进至LBA最大的位置后、重新回到LBA等于0的位置、再步进至LBA等于6的位置将缓存数据2进行存储,接着磁头又需要步进至LBA最大的位置后、重新又回到LBA等于0的位置、再步进至LBA等于2的位置将缓存数据3进行存储;因此,磁盘需要来回寻道(也即,步进至LBA最大的位置后、重新回到LBA等于0的位置、再步进至缓存数据对应的LBA的位置)才能实现对各缓存数据的存储;而磁盘来回寻道需要耗费较长时间;因此,现有技术中存在控制器刷盘效率低的问题。本发明中,通过根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘,避免了由于磁盘来回寻道而浪费的刷盘时间,提高了控制器的刷盘效率。
本实施例,通过根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘,避免了由于磁盘来回寻道而浪费的刷盘时间,提高了控制器的刷盘效率。
需要说明的是,本发明中方法的执行主体是控制器。
图3为本发明缓存数据的刷盘方法实施例二的流程图,如图3所示,本实施例的方法可以包括:
步骤301、获得脏数据块占SSD的所有缓存块的比例;
可选的,当控制器接收到处理器发送的待写入数据时,将待写入数据写入到SSD的若干个缓存块中,并将该若干个缓存块的状态设置为脏数据块;且该若干个缓存块分别对应一脏数据块的标识。
其中,所述脏数据块占SSD的所有缓存块的比例可以为:状态为脏数据块的缓存块的数量除以SSD缓存块的总数,再乘以百分之百。
步骤302、确定所述比例是否大于或等于预设比例;
若是,则执行步骤303;否则,结束。
可选的,预设比例可以为40%。
步骤303、根据当前刷盘操作的LBA,从全部脏数据块中选择M个待刷盘的脏数据块,其中,所述M个待刷盘的脏数据块分别对应的M个LBA均大于所述当前刷盘操作的LBA;
可选的,根据脏数据块占SSD的所有缓存块的比例来确定M的大小:当脏数据块占SSD的所有缓存块的比例越大时,M越大。
可选的,当前刷盘操作的LBA可以为最近一次将一脏数据块的缓存数据存储至磁盘时,该脏数据块对应的LBA。
本实施例中,通过根据当前刷盘操作的LBA,从全部脏数据块中选择M个待刷盘的脏数据块;其中,所述M个待刷盘的脏数据块分别对应的M个LBA均大于所述当前刷盘操作的LBA;使得控制器向磁盘进行同步的所有缓存数据所对应的LBA都大于或等于当前刷盘操作的LBA,使得在每次进行刷盘时磁头都是往一个方向步进,从而减小了磁头寻道的时间;进一步提高了控制器的刷盘效率。
可选的,所述根据当前刷盘操作的LBA,从全部脏数据块中选择M个待刷盘的脏数据块,包括:
根据所述当前刷盘操作的LBA和每个脏数据块的LBA,将所述每个脏数据块放入第一队列或第二队列,所述第一队列中的脏数据块的LBA大于或等于所述当前刷盘操作的LBA,所述第二队列中的脏数据块的LBA小于所述当前刷盘操作的LBA;从所述第一队列中选择所述M个待刷盘的脏数据块。
具体的,在所有脏数据块的标识中,确定若一脏数据块的LBA大于或等于当前刷盘操作的LBA,则将该脏数据块放入第一队列。
例如,若当前存在5个脏数据块,脏数据块1、脏数据块2、脏数据块3、脏数据块4和脏数据块5,脏数据块1的LBA为5,脏数据块2的LBA为15、脏数据块3的LBA为20、脏数据块4的LBA为25、脏数据块5的LBA为30,当前刷盘操作的LBA为9;则将脏数据块2、脏数据块3、脏数据块4、脏数据块5放入第一队列;将脏数据块1放入第二队列。
进一步可选的,从所述第一队列中选择LBA值小的所述M个待刷盘的脏数据块。
例如,若M等于2,第一队列包括脏数据块A、脏数据块B、脏数据块C、脏数据块D、脏数据块E;其中,脏数据块A的LBA为5,脏数据块B的LBA为9,脏数据块C的LBA为20,脏数据块D的LBA为3,脏数据块E的LBA为10;则通过从第一队列中选择LBA值小的所述M个待刷盘的脏数据块,获得的所述M个待刷盘的脏数据为脏数据块D和脏数据块A。
本实施例中,通过从第一队列中选择LBA值小的所述M个待刷盘的脏数据块,使得在刷盘时能够根据第一队列中所包括的各脏数据块的LBA由小至大的顺序,依次将第一队列中的M个脏数据块的缓存数据存储至磁盘;进一步减小了磁头寻道的时间,提高了控制器的刷盘效率。
步骤304、向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括所述M个待刷盘的脏数据块的标识;
可选的,控制器可以通过异步IO的方式向SSD发送缓存数据读取请求。
步骤305、接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;
步骤306、根据脏数据块的标识与LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;
步骤307、根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘;
当M大于N时,例如,若控制器向SSD发送缓存数据读取请求(其中,包括8(即,M)个待刷盘的脏数据块的标识)后,一段时间(例如,10ms)内收到了6(也即,N)个待刷盘的脏数据块的缓存数据;则:控制器可以首先对该6个缓存数据进行磁盘同步。
本实施例,通过向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;并在接收到N待刷盘的脏数据块的缓存数据后对该N个缓存数据进行磁盘同步;从而避免了当控制器接收到若干个缓存数据的时间较晚时,由于等待该若干个缓存数据而浪费较长的时间。
可选的,在将N个待刷盘的脏数据块的缓存数据存储至所述磁盘之后,再将剩余的M-N个待刷盘的脏数据块的缓存数据存储至磁盘。
步骤308、回收cache空间;
可选的,可以通过将SSD中存储所述N个缓存数据的缓存块的状态由脏数据块更新为干净缓存块实现cache空间的回收;若一缓存块对应的状态为干净缓存块时,则控制器可以使用该缓存块来缓存数据。
需要说明的是,步骤308执行完之后,执行步骤301。
需要说明的是,当将第一队列不存在脏数据块时(也即,所有的脏数据块的LBA都小于当前刷盘操作的LBA),可以从第二队列中选取M个待刷盘的脏数据块。
图4为本发明缓存数据的刷盘方法实施例三的流程图,如图4所示,本实施例的方法可以包括:
步骤401、从第一队列中选择M个待刷盘的脏数据块;
可选的,从所述第一队列中选择LBA值小的所述M个待刷盘的脏数据块。
步骤402、根据选择的所述M个待刷盘的脏数据块的LBA,将所述M个待刷盘的脏数据块中LBA连续的脏数据块进行合并,获得合并后的待刷盘的脏数据块;
其中,L小于或等于M;
例如,图5为本发明实施例LBA示意图,如图5所示,M=80,80个待刷盘的脏数据块分别对应的LBA为1~80,待刷盘的脏数据块的缓存数据的大小都为32K,且一个LBA对应32K;则将LBA连续的脏数据块合并后,可以获得3个(也即,L等于3)合并后的待刷盘的脏数据块(也即,合并后的待刷盘的脏数据块1、合并后的待刷盘的脏数据块2以及合并后的待刷盘的脏数据块3),且合并后的待刷盘的脏数据块1对应的LBA为1、合并后的待刷盘的脏数据块2对应的LBA为33、合并后的待刷盘的脏数据块3对应的LBA为65。在获得3个合并后的待刷盘的脏数据块后,可以根据合并后的待刷盘的脏数据块向SSD发送缓存数据读取请求。
步骤403、向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括所述合并后的待刷盘的脏数据块的标识;
步骤404、接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括合并后的待刷盘的脏数据块的缓存数据;
步骤405、根据脏数据块的标识与LBA的对应关系,确定所述合并后的待刷盘的脏数据块分别对应的LBA;
步骤406、根据所述合并后的待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述合并后的待刷盘的脏数据块的缓存数据存储至所述磁盘。
本实施例中,通过根据所述M个待刷盘的脏数据块的LBA,将所述M个待刷盘的脏数据块中LBA连续的脏数据块进行合并,获得合并后的待刷盘的脏数据块;根据所述合并后的待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述合并后的待刷盘的脏数据块的缓存数据存储至所述磁盘;减少了控制器向磁盘进行缓存数据同步的次数。
图6为本发明控制器实施例一的结构示意图,所述控制器应用于存储系统中,所述存储系统包括所述控制器、磁盘和SSD,所述SSD作为所述磁盘的缓存,如图6所示,本实施例的控制器可以包括:读取请求发送模块601,用于向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;读取响应接收模块602,用于接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;LBA确定模块603,用于根据脏数据块的标识与磁盘逻辑区块地址LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;刷盘模块604,用于根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。
本实施例的控制器,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
控制器实施例二
可选的,在本发明控制器实施例一的基础上,读取请求发送模块601,还用于:根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,其中,所述M个待刷盘的脏数据块分别对应的M个LBA均大于所述当前刷盘操作的LBA。
可选的,读取请求发送模块601,具体用于:根据所述当前刷盘操作的LBA和每个脏数据块的LBA,将所述每个脏数据块放入第一队列或第二队列,所述第一队列中的脏数据块的LBA大于所述当前刷盘操作的LBA,所述第二队列中的脏数据块的LBA小于所述当前刷盘操作的LBA;从所述第一队列中选择所述M个待刷盘的脏数据块。
进一步可选的,读取请求发送模块601,具体用于:从所述第一队列中选择LBA值小的所述M个待刷盘的脏数据块。
本实施例的控制器,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
控制器实施例三
可选的,在本发明控制器实施例二的基础上,读取请求发送模块601,还用于:根据选择的所述M个待刷盘的脏数据块的LBA,将所述M个待刷盘的脏数据块中LBA连续的脏数据块进行合并,获得合并后的待刷盘的脏数据块;相应的,读取请求发送模块602,具体用于:向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括所述合并后的待刷盘的脏数据块的标识。
本实施例的控制器,可以用于执行图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本发明控制器实施例四的结构示意图,如图7所示,本实施例的控制器可以包括:发射器701、接收器702和处理器703。其中,发射器701,用于向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;接收器702,用于接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;处理器703,用于根据脏数据块的标识与LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘。
本实施例的控制器,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
控制器实施例五
可选的,在本发明控制器实施例四的基础上,处理器703还用于:根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,其中,所述M个待刷盘的脏数据块分别对应的M个LBA均大于所述当前刷盘操作的LBA。
可选的,处理器703,具体用于:根据所述当前刷盘操作的LBA和每个脏数据块的LBA,将所述每个脏数据块放入第一队列或第二队列,所述第一队列中的脏数据块的LBA大于所述当前刷盘操作的LBA,所述第二队列中的脏数据块的LBA小于所述当前刷盘操作的LBA;从所述第一队列中选择所述M个待刷盘的脏数据块。
进一步可选的,处理器703,具体用于:从所述第一队列中选择LBA值小的所述M个待刷盘的脏数据块。
本实施例的控制器,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
控制器实施例六
可选的,在本发明控制器实施例五的基础上,处理器703还用于:根据选择的所述M个待刷盘的脏数据块的LBA,将所述M个待刷盘的脏数据块中LBA连续的脏数据块进行合并,获得合并后的待刷盘的脏数据块;
发射器701,具体用于:向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括所述合并后的待刷盘的脏数据块的标识。
本实施例的控制器,可以用于执行图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种缓存数据的刷盘方法,其特征在于,应用于存储系统中,所述存储系统包括控制器、磁盘和固态硬盘SSD,所述SSD作为所述磁盘的缓存,所述方法由控制器执行,所述方法包括:
向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;
接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;
根据脏数据块的标识与磁盘逻辑区块地址LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;
根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘;
所述向所述SSD发送缓存数据读取请求之前,还包括:
根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,其中,所述M个待刷盘的脏数据块分别对应的M个LBA均大于所述当前刷盘操作的LBA。
2.根据权利要求1所述的方法,其特征在于,所述根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,包括:
根据所述当前刷盘操作的LBA和每个脏数据块的LBA,将所述每个脏数据块放入第一队列或第二队列,所述第一队列中的脏数据块的LBA大于或等于所述当前刷盘操作的LBA,所述第二队列中的脏数据块的LBA小于所述当前刷盘操作的LBA;
从所述第一队列中选择所述M个待刷盘的脏数据块。
3.根据权利要求2所述的方法,其特征在于,从所述第一队列中选择LBA值小的所述M个待刷盘的脏数据块。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
根据选择的所述M个待刷盘的脏数据块的LBA,将所述M个待刷盘的脏数据块中LBA连续的脏数据块进行合并,获得合并后的待刷盘的脏数据块;
相应的,向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识,包括:
向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括所述合并后的待刷盘的脏数据块的标识。
5.一种控制器,其特征在于,所述控制器应用于存储系统中,所述存储系统包括所述控制器、磁盘和固态硬盘SSD,所述SSD作为所述磁盘的缓存,所述控制器包括:
读取请求发送模块,用于向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括M个待刷盘的脏数据块的标识;
读取响应接收模块,用于接收所述SSD发送的缓存数据读取响应,所述缓存数据读取响应包括N个待刷盘的脏数据块的缓存数据,M大于或等于N;
LBA确定模块,用于根据脏数据块的标识与磁盘逻辑区块地址LBA的对应关系,确定所述N个待刷盘的脏数据块分别对应的LBA;
刷盘模块,用于根据所述N个待刷盘的脏数据块分别对应的LBA,按照LBA由小至大的顺序,依次将所述N个待刷盘的脏数据块的缓存数据存储至所述磁盘;
所述读取请求发送模块,还用于:
根据当前刷盘操作的LBA,从全部脏数据块中选择所述M个待刷盘的脏数据块,其中,所述M个待刷盘的脏数据块分别对应的M个LBA均大于所述当前刷盘操作的LBA。
6.根据权利要求5所述的控制器,其特征在于,所述读取请求发送模块,具体用于:
根据所述当前刷盘操作的LBA和每个脏数据块的LBA,将所述每个脏数据块放入第一队列或第二队列,所述第一队列中的脏数据块的LBA大于所述当前刷盘操作的LBA,所述第二队列中的脏数据块的LBA小于所述当前刷盘操作的LBA;
从所述第一队列中选择所述M个待刷盘的脏数据块。
7.根据权利要求6所述的控制器,其特征在于,所述读取请求发送模块,具体用于:从所述第一队列中选择LBA值小的所述M个待刷盘的脏数据块。
8.根据权利要求6或7所述的控制器,其特征在于,所述读取请求发送模块,还用于:根据选择的所述M个待刷盘的脏数据块的LBA,将所述M个待刷盘的脏数据块中LBA连续的脏数据块进行合并,获得合并后的待刷盘的脏数据块;
相应的,所述读取请求发送模块,具体用于:向所述SSD发送缓存数据读取请求,所述缓存数据读取请求包括所述合并后的待刷盘的脏数据块的标识。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410712971.9A CN104461936B (zh) | 2014-11-28 | 2014-11-28 | 缓存数据的刷盘方法及装置 |
PCT/CN2015/083285 WO2016082550A1 (zh) | 2014-11-28 | 2015-07-03 | 缓存数据的刷盘方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410712971.9A CN104461936B (zh) | 2014-11-28 | 2014-11-28 | 缓存数据的刷盘方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104461936A CN104461936A (zh) | 2015-03-25 |
CN104461936B true CN104461936B (zh) | 2017-10-17 |
Family
ID=52908022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410712971.9A Active CN104461936B (zh) | 2014-11-28 | 2014-11-28 | 缓存数据的刷盘方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104461936B (zh) |
WO (1) | WO2016082550A1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461936B (zh) * | 2014-11-28 | 2017-10-17 | 华为技术有限公司 | 缓存数据的刷盘方法及装置 |
CN105095112B (zh) * | 2015-07-20 | 2019-01-11 | 华为技术有限公司 | 控制缓存刷盘方法、装置及非易失性计算机可读存储介质 |
CN104991745B (zh) * | 2015-07-21 | 2018-06-01 | 浪潮(北京)电子信息产业有限公司 | 一种存储系统数据写入方法和系统 |
CN106557430B (zh) * | 2015-09-19 | 2019-06-21 | 成都华为技术有限公司 | 一种缓存数据刷盘方法及装置 |
CN106227675B (zh) * | 2016-07-19 | 2019-05-24 | 华为技术有限公司 | 一种空间分配和刷盘相配合的方法及装置 |
CN108132756B (zh) * | 2016-11-30 | 2021-01-05 | 成都华为技术有限公司 | 一种对存储阵列进行刷盘的方法和装置 |
CN108089818B (zh) * | 2017-12-12 | 2021-09-07 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及存储介质 |
CN109542348B (zh) * | 2018-11-19 | 2022-05-10 | 郑州云海信息技术有限公司 | 一种数据下刷方法及装置 |
CN109783023B (zh) * | 2019-01-04 | 2024-06-07 | 平安科技(深圳)有限公司 | 一种数据下刷的方法和相关装置 |
CN111797080A (zh) * | 2019-04-09 | 2020-10-20 | Oppo广东移动通信有限公司 | 模型训练方法、数据回收方法、装置、存储介质及设备 |
CN110502457B (zh) * | 2019-08-23 | 2022-02-18 | 北京浪潮数据技术有限公司 | 一种元数据存储方法及装置 |
CN110928496B (zh) * | 2019-11-12 | 2022-04-22 | 杭州宏杉科技股份有限公司 | 一种在多控存储系统上的数据处理方法及装置 |
CN111177022B (zh) * | 2019-12-26 | 2022-08-12 | 广东浪潮大数据研究有限公司 | 一种特征提取方法、装置、设备及存储介质 |
CN111857589B (zh) * | 2020-07-16 | 2023-04-18 | 苏州浪潮智能科技有限公司 | 分布式存储系统中ssd缓存下刷速度控制方法及系统 |
CN112084048A (zh) * | 2020-09-25 | 2020-12-15 | 中国建设银行股份有限公司 | Kafka同步刷盘方法、装置及消息服务器 |
CN112181315B (zh) * | 2020-10-30 | 2022-08-30 | 新华三大数据技术有限公司 | 一种数据刷盘方法及装置 |
CN112306904B (zh) * | 2020-11-20 | 2022-03-29 | 新华三大数据技术有限公司 | 一种缓存数据的刷盘方法及装置 |
CN112817520B (zh) * | 2020-12-31 | 2022-08-09 | 杭州宏杉科技股份有限公司 | 数据刷盘方法及装置 |
CN112835528A (zh) * | 2021-02-22 | 2021-05-25 | 北京金山云网络技术有限公司 | 脏页刷新方法和装置、电子设备和存储介质 |
CN113986118B (zh) * | 2021-09-28 | 2024-06-07 | 新华三大数据技术有限公司 | 一种数据处理方法及装置 |
CN115168304B (zh) * | 2022-09-06 | 2023-01-20 | 北京奥星贝斯科技有限公司 | 一种数据处理方法、装置、存储介质及设备 |
CN115268798B (zh) * | 2022-09-27 | 2023-01-10 | 天津卓朗昆仑云软件技术有限公司 | 缓存数据的刷脏方法和系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101354633A (zh) * | 2008-08-22 | 2009-01-28 | 杭州华三通信技术有限公司 | 提高虚拟存储系统写效率的方法及虚拟存储系统 |
JP2012078939A (ja) * | 2010-09-30 | 2012-04-19 | Toshiba Corp | 情報処理装置およびキャッシュ制御方法 |
CN102541468A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 虚拟化环境下的脏数据回写系统 |
CN103229136A (zh) * | 2012-12-26 | 2013-07-31 | 华为技术有限公司 | 磁盘阵列刷盘方法及磁盘阵列刷盘装置 |
CN103488431A (zh) * | 2013-09-10 | 2014-01-01 | 华为技术有限公司 | 一种写数据方法及存储设备 |
CN103577349A (zh) * | 2013-11-06 | 2014-02-12 | 华为技术有限公司 | 在高速缓存中选择数据进行刷盘的方法和装置 |
CN103631528A (zh) * | 2012-08-21 | 2014-03-12 | 苏州捷泰科信息技术有限公司 | 用固态硬盘作为缓存器的读写方法、系统及读写控制器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241420A (zh) * | 2008-03-20 | 2008-08-13 | 杭州华三通信技术有限公司 | 用于提高写地址非连续的数据存储效率的方法和存储设备 |
CN101727299B (zh) * | 2010-02-08 | 2011-06-29 | 北京同有飞骥科技股份有限公司 | 连续数据存储中面向raid5的写操作优化设计方法 |
CN102147768B (zh) * | 2010-05-21 | 2014-03-05 | 苏州捷泰科信息技术有限公司 | 存储器、固态缓存系统及缓存数据处理方法 |
US9390020B2 (en) * | 2012-07-06 | 2016-07-12 | Seagate Technology Llc | Hybrid memory with associative cache |
CN103049222B (zh) * | 2012-12-28 | 2016-05-25 | 中国船舶重工集团公司第七0九研究所 | 一种raid5的写io优化处理方法 |
CN104461936B (zh) * | 2014-11-28 | 2017-10-17 | 华为技术有限公司 | 缓存数据的刷盘方法及装置 |
-
2014
- 2014-11-28 CN CN201410712971.9A patent/CN104461936B/zh active Active
-
2015
- 2015-07-03 WO PCT/CN2015/083285 patent/WO2016082550A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101354633A (zh) * | 2008-08-22 | 2009-01-28 | 杭州华三通信技术有限公司 | 提高虚拟存储系统写效率的方法及虚拟存储系统 |
JP2012078939A (ja) * | 2010-09-30 | 2012-04-19 | Toshiba Corp | 情報処理装置およびキャッシュ制御方法 |
CN102541468A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 虚拟化环境下的脏数据回写系统 |
CN103631528A (zh) * | 2012-08-21 | 2014-03-12 | 苏州捷泰科信息技术有限公司 | 用固态硬盘作为缓存器的读写方法、系统及读写控制器 |
CN103229136A (zh) * | 2012-12-26 | 2013-07-31 | 华为技术有限公司 | 磁盘阵列刷盘方法及磁盘阵列刷盘装置 |
CN103488431A (zh) * | 2013-09-10 | 2014-01-01 | 华为技术有限公司 | 一种写数据方法及存储设备 |
CN103577349A (zh) * | 2013-11-06 | 2014-02-12 | 华为技术有限公司 | 在高速缓存中选择数据进行刷盘的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104461936A (zh) | 2015-03-25 |
WO2016082550A1 (zh) | 2016-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104461936B (zh) | 缓存数据的刷盘方法及装置 | |
US9798472B1 (en) | Extent level cache destaging | |
CN105630638B (zh) | 用于为磁盘阵列分配缓存的设备和方法 | |
CN103092526B (zh) | 在存储设备间进行数据迁移的方法和装置 | |
CN105243033B (zh) | 数据处理方法及电子设备 | |
CN104881333B (zh) | 一种存储系统及其使用的方法 | |
US9582433B2 (en) | Disk array flushing method and disk array flushing apparatus | |
CN104965768B (zh) | 用于存储系统中的服务感知数据放置的方法和系统 | |
CN103678139B (zh) | 进行瘦供给的方法和装置 | |
CN101839997B (zh) | 一种地震数据并行存储系统 | |
CN105138469B (zh) | 一种数据读写方法以及主板 | |
CN106708751A (zh) | 包括用于多模操作的多分区的存储装置及其操作方法 | |
CN106201923B (zh) | 读写数据方法及装置 | |
CN104881259B (zh) | 一种数据处理方法和装置以及存储设备 | |
CN103116473A (zh) | 使用盘驱动器模拟模型来对盘i/o扼流 | |
CN105446893A (zh) | 数据存储方法及设备 | |
CN101673192B (zh) | 时序化的数据处理方法、装置及系统 | |
CN1645516B (zh) | 用于闪速存储器的数据恢复设备和方法 | |
CN102165408A (zh) | 用于确定数据的再调用顺序的装置、方法以及程序 | |
CN108334284A (zh) | 尾延迟感知前台垃圾收集算法 | |
CN109343797A (zh) | 一种缓存数据的传输方法、系统及相关组件 | |
CN109471843A (zh) | 一种元数据缓存方法、系统及相关装置 | |
CN104050057B (zh) | 一种历史感知的数据去重碎片消除方法与系统 | |
CN103514110A (zh) | 非易失性存储设备的缓存管理方法及装置 | |
CN104715048B (zh) | 一种文件系统缓存预读取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220214 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |