CN103577349A - 在高速缓存中选择数据进行刷盘的方法和装置 - Google Patents

在高速缓存中选择数据进行刷盘的方法和装置 Download PDF

Info

Publication number
CN103577349A
CN103577349A CN201310545445.3A CN201310545445A CN103577349A CN 103577349 A CN103577349 A CN 103577349A CN 201310545445 A CN201310545445 A CN 201310545445A CN 103577349 A CN103577349 A CN 103577349A
Authority
CN
China
Prior art keywords
data
storage unit
data block
dirty
sector
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.)
Granted
Application number
CN201310545445.3A
Other languages
English (en)
Other versions
CN103577349B (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.)
HUNAN QIANMENG INDUSTRIAL INTELLIGENT SYSTEM CO., LTD.
Original Assignee
Huawei 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 Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310545445.3A priority Critical patent/CN103577349B/zh
Publication of CN103577349A publication Critical patent/CN103577349A/zh
Application granted granted Critical
Publication of CN103577349B publication Critical patent/CN103577349B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例提供一种在高速缓存中选择数据进行刷盘的方法和装置,一种在高速缓存中选择数据进行刷盘的方法包括:将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块,所述第一数据块中存储脏数据的存储单元所占比例不低于预设阈值,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第一数据块内;为每一个所述第一数据块生成一个输入/输出指令;将所述输入/输出指令发送到目标存储器中,以使所述目标存储器存储所述第一数据块。本发明实施例提供的在高速缓存中选择数据进行刷盘的方法和装置,用于提高对高速缓存的刷盘效率并节约带宽。

Description

在高速缓存中选择数据进行刷盘的方法和装置
技术领域
本发明实施例涉及数据存储技术领域,尤其涉及一种在高速缓存中选择数据进行刷盘的方法和装置。
背景技术
在计算机系统中,为了弥补低速设备和高速设备之间的巨大性能差异,需要使用高速缓存(cache),cache广泛存在于各种计算机系统中,例如计算机CPU与内存之间、内存和外部硬盘之间等。Cache的容量一般较小,但速度高于低速设备而接近高速设备,在系统中设置cache可以提高低速设备的数据读写速度。
然而cache的容量是远远小于低速设备的,因此必然需要对cache中的数据进行换入换出处理。以硬盘作为低速设备,一部分内存作为cache为例,从硬盘中读取并存入cache的数据和硬盘上存储的数据相同,称之为干净数据;从外部新写入cache的数据或者从硬盘读取到cache后又被修改的数据称之为脏数据。对于干净数据,可以直接释放其所占的cache资源;而对于脏数据,为了避免数据丢失,需要将其写到硬盘中后,使其转变为干净数据后,再释放其所占的cache资源。把脏数据写入硬盘中的过程称之为刷盘,刷盘的效率直接影响整个系统的输入输出(Input and Output,I/O)性能。
现有的刷盘方法中,最简单的是对于cache中的某一存储区域,首先确定其中包含脏数据的数据块,然后分别为每个包含脏数据的数据块生成一个写I/O指令,并发送给硬盘进行存储,但这种方法会针对每个不连续的包含脏数据的数据块生成一个写I/O指令,存在下发写I/O指令过多的问题,刷盘效率较低。为了提高刷盘效率,可以对于cache中的某一存储区域,首先在该区域中找到包含尽量多的脏数据的连续数据块,然后对该连续数据块生成一个写I/O指令,并发送给硬盘进行存储,但这种方法中一段连续的数据块中可能包含过多的干净数据,在刷盘过程中可能存在浪费带宽的问题。
发明内容
本发明实施例提供一种在高速缓存中选择数据进行刷盘的方法和装置,用于提高对高速缓存的刷盘效率并节约带宽。
第一方面提供一种在高速缓存中选择数据进行刷盘的方法,包括:
将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块,所述第一数据块中存储脏数据的存储单元所占比例不低于预设阈值,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第一数据块内;
为每一个所述第一数据块生成一个输入/输出指令;
将所述输入/输出指令发送到目标存储器中,以使所述目标存储器存储所述第一数据块。
在第一方面第一种可能的实现方式中,所述第一数据块头部和尾部的存储单元中均存储有脏数据。
结合第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块,包括:
将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第二数据块,所述第二数据块头部和尾部的存储单元均存储有脏数据,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第二数据块内;
若所述第二数据块中存储脏数据的存储单元所占比例低于预设阈值,则去除所述第二数据块中连续存储干净数据的存储单元中最长的一段存储单元,并将剩余的两段存储单元分别作为新的第二数据块;
当所述第二数据块中存储脏数据的存储单元所占比例不低于预设阈值时,将所述第二数据块作为所述第一数据块。
结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,所述将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第二数据块,包括:
将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第三数据块,所述第三数据块头部和尾部的存储单元均连接未储存数据的存储单元,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第三数据块内;
将存储有脏数据的第三数据块作为第四数据块。
将所述第四数据块中第一个存储有脏数据的存储单元到最后一个存储有脏数据的数据单元之间连续的存储单元作为所述第二数据块。
结合第一方面至第一方面第三种可能的实现方式中任一种可能的实现方式,在第四种可能的实现方式中,所述将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块之前,还包括:
根据所述目标存储器当前数据读写状态确定所述预设阈值。
结合第一方面至第一方面第四种可能的实现方式中任一种可能的实现方式,在第五种可能的实现方式中,所述存储单元的大小为所述目标存储器最小访问单位的大小。
结合第一方面至第一方面第五种可能的实现方式中任一种可能的实现方式,在第六种可能的实现方式中,所述目标存储器包括机械式硬盘。
第二方面提供一种在高速缓存中选择数据进行刷盘的装置,包括:
分割模块,用于将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块,所述第一数据块中存储脏数据的存储单元所占比例不低于预设阈值,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第一数据块内;
生成模块,用于为每一个所述第一数据块生成一个输入/输出指令;
发送模块,用于将所述输入/输出指令发送到目标存储器中,以使所述目标存储器存储所述第一数据块。
在第二方面第一种可能的实现方式中,所述分割模块,还用于使所述第一数据块头部和尾部的存储单元中均存储有脏数据。
结合第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述分割模块,包括:
分割单元,用于将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第二数据块,所述第二数据块头部和尾部的存储单元均存储有脏数据,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第二数据块内;
判断单元,用于若所述第二数据块中存储脏数据的存储单元所占比例低于预设阈值,则去除所述第二数据块中连续存储干净数据的存储单元中最长的一段存储单元,并将剩余的两段存储单元分别作为新的第二数据块;
确定单元,用于当所述第二数据块中存储脏数据的存储单元所占比例不低于预设阈值时,将所述第二数据块作为所述第一数据块。
结合第二方面第二种可能的实现方式,在第三种可能的实现方式中,所述分割单元,具体用于将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第三数据块,所述第三数据块头部和尾部的存储单元均连接未储存数据的存储单元,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第三数据块内;将存储有脏数据的第三数据块作为第四数据块。将所述第四数据块中第一个存储有脏数据的存储单元到最后一个存储有脏数据的数据单元之间连续的存储单元作为所述第二数据块。
结合第二方面至第二方面第三种可能的实现方式中任一种可能的实现方式,在第四种可能的实现方式中,还包括:预处理模块,用于根据所述目标存储器当前数据读写状态确定所述预设阈值。
结合第二方面至第二方面第四种可能的实现方式中任一种可能的实现方式,在第五种可能的实现方式中,所述存储单元的大小为所述目标存储器最小访问单位的大小。
结合第二方面至第二方面第五种可能的实现方式中任一种可能的实现方式,在第六种可能的实现方式中,所述目标存储器包括机械式硬盘。
本实施例提供的在高速缓存中选择数据进行刷盘的方法和装置,通过将高速缓存中待处理的数据区域分割为至少一个第一数据块,该第一数据块中存储脏数据的存储单元所占比例不低于预设阈值,待处理数据区域中所有存储脏数据的存储单元均位于第一数据块内,并对每一第一数据块生成一个输入/输出指令发送至目标存储器,使目标存储器存储每一第一数据块中的数据,在减少高速缓存刷盘处理过程中生成的输入/输出指令数量的前提下,使输入/输出指令中包含的干净数据尽可能少,从而提高了高速缓存刷盘处理的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为存储有一段地址连续的数据的cache的示意图;
图2为存储有另一段地址连续的数据的cache的示意图;
图3为本发明实施例提供的高速缓存数据存储方法实施例一的流程图;
图4为本发明实施例示出的一段cache中待处理区域的示意图;
图5为本发明实施例提供的高速缓存数据存储方法实施例二的流程图;
图6A和图6B为图5所示实施例对cache中一段待处理区域的处理示意图;
图7为本发明实施例提供的高速缓存数据存储方法实施例三的流程图;
图8为本发明实施例提供的高速缓存数据存储装置实施例一的结构示意图;
图9为本发明实施例提供的高速缓存数据存储装置实施例二的结构示意图;
图10为本发明实施例提供的高速缓存数据存储装置实施例三的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的高速缓存数据存储方法可以适用于任意需要应用cache的场景中。本发明下述各实施例均以使用内存来缓存机械式硬盘上的数据为例对本发明实施例提供的在高速缓存中选择数据进行刷盘的方法进行说明,但本发明不限于此。
对于cache的刷盘处理,一般是将cache所要缓存的地址空间划分为多个区域,每个区域称为一个chunk,每个chunk表示一定大小的逻辑块地址(Logical Block Address,LBA)范围。当需要对cache进行刷盘时,首先选择一个包含脏数据的chunk,作为待刷盘的chunk,一般地,根据LBA的起始地址,依序选择chunk。然后在待刷盘的chunk中选择具体需要刷盘的数据,根据该数据构造写I/O指令并下发到硬盘。一个写I/O指令中携带的数据必须是LBA地址连续的一段数据。
对于机械式硬盘而言,其最小的访问单位为扇区,一个扇区包含512字节的存储容量,因此对于机械式硬盘而言,刷盘处理的最小单位也是以扇区为单位的。
图1为存储有一段地址连续的数据的cache的示意图,其中每一格代表一个扇区的数据,每8个扇区组成一个页面。图1中示出8个扇区组成一个页面的情况,但一个页面中还可以包括其他数量的扇区,例如16个等。假设图1中示出的这段数据就是一个待刷盘的chunk,其中有阴影填充的扇区11和扇区12表示存储有脏数据的扇区,其他扇区表示存储干净数据的扇区。现有的刷盘方法中,会针对扇区11和扇区12分别生成一个写I/O指令,生成的写I/O指令中分别写到有扇区11和扇区12中存储的数据,cache将生成的写I/O指令发送到硬盘后,硬盘将其中的数据存储下来即完成了对这一段数据的刷盘处理。但是这样会对每个存储有脏数据的扇区生成一个写I/O指令,当一个chunk中存储的脏数据过多时,会生成大量的写I/O指令,将大量的写I/O指令发送至硬盘进行存储会导致刷盘效率较低。
为了提高刷盘效率,尽量减少向硬盘发送写I/O指令,可以在一个写I/O指令中携带尽量多的数据。图2为存储有另一段地址连续的数据的cache的示意图,其中每一格代表一个扇区的数据,每8个扇区组成一个页面。图1中示出8个扇区组成一个页面的情况,但一个页面中还可以包括其他数量的扇区,例如16个等。假设图1中示出的这段数据就是一个待刷盘的chunk,其中有阴影填充的扇区21、扇区22和扇区23均表示存储有脏数据的扇区,而其他扇区表示存储干净数据的扇区。若针对每个存储有脏数据的扇区分别生成一个写I/O指令则需要生成三个写I/O指令,而由于图2中所示的为一段连续存储的数据,这里可以对于该段数据生成一个写I/O指令,该写I/O指令中携带有从扇区24到扇区25的所有扇区中存储的数据。这样当cache将生成的写I/O指令发送到硬盘后,硬盘可以在一次写处理中将图2所示的一段数据全部存储下来,同样完成了对该段数据的刷盘处理。但是使用这样的方法时,会导致很多干净的数据同样被存储到了硬盘中,并且这样生成的写I/O指令由于携带了很多干净数据,其数据量会较大,cache向硬盘发送这样的写I/O指令会占用过多的带宽资源。
图3为本发明实施例提供的在高速缓存中选择数据进行刷盘的方法实施例一的流程图,如图3所示,本实施例的方法包括:
步骤S101,将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块,第一数据块中存储脏数据的存储单元所占比例不低于预设阈值,待处理数据区域中所有存储脏数据的存储单元均位于第一数据块内。
具体地,为了解决现有技术对cache刷盘处理存在的问题,本实施例中,在对cache进行刷盘时,将数据进行一定的分割,使分割后的每段数据中脏数据的比例都不低于预设阈值,并对分割后的每段数据分别生成一个写I/O指令,这样将生成的写I/O指令既能够保证不包含过多的干净数据又能够控制总的写I/O指令的数量。当需要对cache进行刷盘时,首先需要将其划分为多个chunk,本实施例是针对一个chunk中的处理方法,对cache中每个chunk分别使用本实施例的处理方法即可对整个cache进行刷盘处理。这里将一个chunk中的存储空间称为待处理的数据区域,该待处理的数据区域包括若干个存储单元。这里对一个存储单元的大小不做具体限制,但一般地,为了减小对带宽的影响,将一个存储单元的大小设置为刷盘处理的目标存储器的最小访问单位的大小。本实施例中,以机械式硬盘为例进行说明,因此,在此一个存储单元的大小为一个扇区。本实施例中,需要对待处理的存储区域进行分割,具体的分割方法在本实施例中不做限定,只要使分割后的每段存储单元都为连续存储有数据的存储单元,并且每段存储单元中存储脏数据的存储单元所占比例不低于预设阈值即可,另外,待处理数据区域中所有存储脏数据的存储单元均处于任一段存储单元内,将分割后满足条件的每段存储单元均称之为第一数据块。由于一个写I/O指令中包含的数据的LBA必须连续,因此第一数据块中必须为连续存储有数据的存储单元;本实施例需要进行的是刷盘处理,因此待处理数据区域中所有存储有脏数据的存储单元都需要被分割到任意一个第一数据块中;另外,为了使本实施例提供的高速缓存数据存储方法达到最优的刷盘效率,第一数据块中存储脏数据的存储单元所占比例需要不低于预设阈值。该预设阈值可以是提前设置好的,也可以是根据cache刷盘的目标存储器(本实施例中为机械式硬盘)当前的数据读写状态实施确定的。
步骤S102,为每一个第一数据块生成一个输入/输出指令。
具体地,对步骤S101中生成的每个第一数据块分别生成一个写I/O指令,每个写I/O指令中均包括相应的第一数据块中的数据。本步骤之后,待处理数据区域中所有存储有脏数据的存储单元均位于任意一个第一数据块中,生成的所有写I/O指令中包含的存储脏数据的存储单元的比例均不低于预设阈值。
步骤S103,将输入/输出指令发送到目标存储器中,以使目标存储器存储第一数据块。
具体地,将步骤S102中生成的所有写I/O指令发送至目标存储器,在本实施例中目标存储器为机械式硬盘,目标存储器将收到的写I/O指令中包含的第一数据块中所有数据均存储下来,即完成了对cache中待处理数据区域的刷盘处理。依次对cache中每一chunk进行本实施例的处理即可完成对整个cache的刷盘处理。
本实施例,通过将高速缓存中待处理的数据区域分割为至少一个第一数据块,该第一数据块中存储脏数据的存储单元所占比例不低于预设阈值,待处理数据区域中所有存储脏数据的存储单元均位于第一数据块内,并对每一第一数据块生成一个输入/输出指令发送至目标存储器,使目标存储器存储每一第一数据块中的数据,在减少高速缓存刷盘处理过程中生成的输入/输出指令数量的前提下,使输入/输出指令中包含的干净数据尽可能少,从而提高了高速缓存刷盘处理的效率并节约了带宽。
进一步地,在上述步骤S101中,限定了将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块,第一数据块中存储脏数据的存储单元所占比例不低于预设阈值,待处理数据区域中所有存储脏数据的存储单元均位于第一数据块内的基础上,还可以对第一数据块进行进一步限定:第一数据块头部和尾部的存储单元中均存储有脏数据。
具体地,图4为本发明实施例示出的一段cache中待处理区域的示意图,如图4所示,其中每一格代表一个扇区的数据,每8个扇区组成一个页面。图4中示出8个扇区组成一个页面的情况,但一个页面中还可以包括其他数量的扇区,例如16个等。假设图4中示出的这段数据就是cache中一段待处理的数据区域,其中有阴影填充的扇区401、扇区402、扇区403和扇区404表示存储有脏数据的扇区,被全部填充的扇区405、扇区406和扇区407为没有存储数据的空扇区,其他扇区表示存储干净数据的扇区。
若不使用本发明实施例提供的高速缓存数据存储方法,则需要分别为扇区401、扇区402、扇区403和扇区404生成写I/O指令,即共生成4个写I/O指令;或者分别生成包括从扇区408到扇区409、从扇区410到扇区404的两个写I/O指令,但两个I/O中共包括有4个扇区存储有脏数据而8个扇区中存储有干净数据。由此可见现有刷盘方法显然都存在相应的问题。
而若采用如图3所示实施例提供的高速缓存数据存储方法对图4所示的一段cache中待处理区域进行处理时,例如可以首先设第一数据块中存储脏数据的存储单元所占比例的预设阈值为50%,则可以将待处理区域分为两个第一数据块,其中一个第一数据块包括从扇区401到扇区409共四个扇区,另一个第一数据块包括从扇区403到扇区404共四个扇区,两个第一数据块中均包括两个存储脏数据的扇区和存储干净数据的扇区,因此分割后的两个第一数据块中存储脏数据的扇区所占比例不低于预设的50%的阈值。由此可见,采用图3所示的方法对图4所示cache中的数据存储区域进行刷盘处理可以仅生成两个写I/O指令并且生成的写I/O指令中存储的脏数据比例为50%。
进一步地,还可以对于图4所示cache中的数据存储区域进行如下分割:将待处理区域分为两个第一数据块,其中一个第一数据块包括从扇区401到扇区402共三个扇区,另一个第一数据块包括从扇区403到扇区404共四个扇区,则此时一个第一数据块中包括两个存储脏数据的扇区和一个存储干净数据的扇区,而另一个第一数据块中包括两个存储脏数据的扇区和两个存储干净数据的扇区,因此分割后的两个第一数据块中存储脏数据的扇区所占比例不低于预设的50%的阈值,但两个第一数据块中总的存储脏数据的扇区所占比例为57.1%。由此可见,采用这种方法时,使分割后的第一数据块的头部和尾部的存储单元中均存储有脏数据,可以在图3所示实施例的基础上,提高生成的写I/O指令中存储的脏数据所占比例。进一步地提高刷盘效率。
图5为本发明实施例提供的在高速缓存中选择数据进行刷盘的方法实施例二的流程图,如图5所示,本实施例的方法包括:
步骤S501,将高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第二数据块,第二数据块头部和尾部的存储单元均存储有脏数据,待处理数据区域中所有存储脏数据的存储单元均位于第二数据块内。
具体地,本实施例为对cache中一段待处理数据区域的具体处理方法。当需要对cache进行刷盘时,首先需要将其划分为多个chunk,本实施例是针对一个chunk中的处理方法,对cache中每个chunk分别使用本实施例的处理方法即可对整个cache进行刷盘处理。这里将一个chunk中的存储空间称为待处理的数据区域,该待处理的数据区域包括若干个存储单元。这里对一个存储单元的大小不做具体限制,但一般地,为了减小对带宽的影响,将一个存储单元的大小设置为刷盘处理的目标存储器的最小访问单位的大小。本实施例中,以机械式硬盘为例进行说明,因此,在此一个存储单元的大小为一个扇区。本实施例中,首先将待处理的数据区域分割为至少一个由连续存储有数据的扇区组成的第二数据块,其中每一第二数据块头部和尾部的扇区均存储有脏数据,并且保证待处理数据区域中所有存储脏数据的扇区均位于任意的第二数据块内,另外,本步骤中可以使分割后的第二数据块中包括的扇区尽量多。
步骤S502,确定第二数据块中存储脏数据的存储单元所占比例是否低于预设阈值。
具体地,对分割后的每一第二数据块进行判断,确定每一第二数据块中存储脏数据的扇区所占比例是否低于预设阈值。该预设阈值可以是提前设置好的,也可以是根据cache刷盘的目标存储器(本实施例中为机械式硬盘)当前的数据读写状态实施确定的。
步骤S503,若第二数据块中存储脏数据的存储单元所占比例低于预设阈值,则去除第二数据块中连续存储干净数据的存储单元中最长的一段存储单元,并将剩余的两段存储单元分别作为新的第二数据块。
具体地,若步骤S502中经过判断发现有第二数据块中存在存储脏数据的扇区所占比例低于预设阈值的,则对该第二数据块中的扇区进行分析,将该第二数据块中连续存储干净数据的扇区中最长的一段扇区去除,将剩余的两段扇区分别作为新的第二数据,再次进行步骤S502的判断过程。若在第二数据块中发现有不止一段连续存储干净数据的扇区的长度相同且均为最长,则任意选择其中一段去除。执行完本步骤后新生成的两段扇区的头部和尾部同样均为存储有脏数据的扇区。
步骤S504,当第二数据块中存储脏数据的存储单元所占比例不低于预设阈值时,将第二数据块作为所述第一数据块。
具体地,若所有第二数据块经过步骤S502的判断后,均确定其中存储脏数据的扇区所占比例不低于预设阈值时,则此时将每一第二数据块分别作为第一数据块。
步骤S505,为每一个第一数据块生成一个输入/输出指令。
具体地,本步骤与步骤S102相同。
步骤S506,将输入/输出指令发送到目标存储器中,以使目标存储器存储第一数据块。
具体地,本步骤与步骤S103相同。
图6A和图6B为图5所示实施例对cache中一段待处理区域的处理示意图,如图6A和图6B所示,其中每一格代表一个扇区的数据,每8个扇区组成一个页面。图6A和图6B中示出8个扇区组成一个页面的情况,但一个页面中还可以包括其他数量的扇区,例如16个等。假设图6A中示出的这段数据就是cache中一段待处理的数据区域,其中有阴影填充的扇区601~扇区608表示存储有脏数据的扇区,被全部填充的扇区609~扇区612为没有存储数据的空扇区,其他扇区表示存储干净数据的扇区。图6A未示出扇区613和扇区614之间的部分扇区,图6B示出图6A中扇区609到扇区615之间的具体扇区。同样的,有阴影填充的扇区617~扇区620表示存储有脏数据的扇区。使用图5所示实施例的方法时,在步骤S501中,首先将这个待处理的数据区域分为两个第二数据块,分别为从扇区601到扇区603、从扇区604到扇区608。接着在步骤S502中,对两个第二数据块分别进行判断,确定其中存储脏数据的扇区所占比例是否低于预设阈值,这里假设预设阈值为50%。通过判断可知,扇区601到扇区603中存储脏数据的扇区所占比例远低于50%,而扇区604到扇区608中存储脏数据的扇区比例整好为50%。在步骤S503中,对从扇区601到扇区603组成的第二数据块进行分析后,确定从扇区621到扇区622为其中连续存储干净数据的最长扇区,将从扇区621到扇区622之间的扇区移除,则将从扇区601到扇区603组成的第二数据块分割为从扇区601到扇区620、从扇区602到扇区603两段扇区,将这两段扇区分别作为新的第二数据块,继续进行如步骤S502的判断。经过判断可知,从扇区601到扇区620、从扇区602到扇区603两个第二数据块中存储脏数据的扇区所占比例均不低于50%。然后再步骤S504中,分别将从扇区601到扇区620、从扇区602到扇区603、从扇区604到扇区608三个第二数据块作为三个第一数据块。在步骤S505中,分别对三个第一数据块生成写I/O指令,并在步骤S506中将三个写I/O指令发送至目标存储器(机械式硬盘),使目标存储器存储上个第一数据块,即完成了对图6A和图6B所示cache中一段待处理区域的刷盘处理。
图7为本发明实施例提供的在高速缓存中选择数据进行刷盘的方法实施例三的流程图,本实施例的方法为图5所示实施例中步骤S501的具体方法,如图7所示,本实施例的方法包括:
步骤S701,将高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第三数据块,第三数据块头部和尾部的存储单元均连接未储存数据的存储单元,待处理数据区域中所有存储脏数据的存储单元均位于第三数据块内。
具体地,本实施例可以为图5所示实施例中步骤S501的具体步骤。当需要对cache进行刷盘时,首先需要将其划分为多个chunk,本实施例是针对一个chunk中的处理方法,对cache中每个chunk分别使用本实施例的处理方法即可对整个cache进行刷盘处理。这里将一个chunk中的存储空间称为待处理的数据区域,该待处理的数据区域包括若干个存储单元。这里对一个存储单元的大小不做具体限制,但一般地,为了减小对带宽的影响,将一个存储单元的大小设置为刷盘处理的目标存储器的最小访问单位的大小。本实施例中,以机械式硬盘为例进行说明,因此,在此一个存储单元的大小为一个扇区。本实施例中,首先将待处理的数据区域分割为至少一个由连续存储有数据的扇区组成的第三数据块,其中每一第三数据块头部和尾部的扇区均连接未存储数据的扇区,并且保证待处理数据区域中所有存储脏数据的扇区均位于任意的第三数据块内。也就是说,本步骤实际上是去除掉待处理区域中未存储数据的扇区,并将剩余的每段连续存储数据的扇区分别作为第三数据块。本步骤是一个“贪心”的过程,即保证每个第三数据块中都包含尽量多的扇区。
步骤S702,将存储有脏数据的第三数据块作为第四数据块。
具体地,对步骤S701中得到的第三数据块分别进行判断,将不包含脏数据的第三数据块去除,将剩下的存储有脏数据的第三数据块作为第四数据块。
步骤S703,将第四数据块中第一个存储有脏数据的存储单元到最后一个存储有脏数据的数据单元之间连续的存储单元作为第二数据块。
具体地,再分别对每个第四数据块进行分析,将每一第四数据块中第一个存储有脏数据的扇区到最后一个存储有脏数据的扇区之间的所有扇区作为一个第二数据块。这样得到的第二数据块即为:连续存储有数据的扇区组成的,头部和尾部的扇区均存储有脏数据,待处理数据区域中所有存储脏数据的扇区均位于任意第二数据块中。
下面以图6A和图6B为例,对图7所示实施例进行说明。在步骤S701中,分别得到从扇区623到扇区624、从扇区601到扇区615、从扇区625到扇区608三个第三数据块。接着,在步骤S702中,由于从扇区623到扇区624的第三数据块中未存储脏数据,因此将其去除,得到从扇区601到扇区615、从扇区625到扇区608两个第四数据块。最后,在步骤S703中,得到从扇区601到扇区603、从扇区604到扇区608两个第二数据块。
进一步地,本发明提供的上述各实施例中,在将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块之前,还包括:根据目标存储器当前数据读写状态确定预设阈值。
具体地,使用本实施例提供的方法对cache进行刷盘时,分割后的第一数据块中存储脏数据的存储单元所占比例的预设阈值可以是提前预设的,也可以是根据目标存储器当前数据读写状态实时确定的。例如当目标存储器(例如机械式硬盘)目前正在进行大量数据读写处理,则此时对cache进行刷盘处理时不适于占用过多的带宽,因此此时可以将该阈值设置的高一些,使采用本实施例的方法生成的写I/O指令中包含的干净数据少一些,从而减少对带宽的占用。而如果目标存储器目前处理空闲状态或者数据读写量不大,则此时对cache进行刷盘处理时可以占用一定的带宽,因此此时可以将该阈值设置的低一些,使采用本实施例的方法生成的写I/O指令尽量少,从而提高刷盘的效率。
进一步地,本发明上述各实施例中,存储单元的大小为目标存储器最小访问单位的大小。虽然本发明实施例提供的高速缓存数据存储方法中,存储单元的大小可以任意大小,但是,考虑到尽量减少对带宽的影响,使进行刷盘的数据尽量减小,因此存储单元的大小优选为目标存储器最小访问单位的大小,例如对于机械式硬盘存储单元的大小优选为一个扇区。
图8为本发明实施例提供的在高速缓存中选择数据进行刷盘的装置实施例一的结构示意图,如图8所示,本实施例的高速缓存数据存储装置包括:
分割模块81,用于将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块,所述第一数据块中存储脏数据的存储单元所占比例不低于预设阈值,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第一数据块内。
生成模块82,用于为每一个所述第一数据块生成一个输入/输出指令。
发送模块83,用于将所述输入/输出指令发送到目标存储器中,以使所述目标存储器存储所述第一数据块。
本实施例的高速缓存数据存储装置用于实现图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,图8所示实施例中,分割模块81,还用于使所述第一数据块头部和尾部的存储单元中均存储有脏数据。
图9为本发明实施例提供的在高速缓存中选择数据进行刷盘的装置实施例二的结构示意图,如图9所示,本实施例的高速缓存数据存储装置在图8的基础上,分割模块81,包括:
分割单元91,用于将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第二数据块,所述第二数据块头部和尾部的存储单元均存储有脏数据,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第二数据块内。
判断单元92,用于若所述第二数据块中存储脏数据的存储单元所占比例低于预设阈值,则去除所述第二数据块中连续存储干净数据的存储单元中最长的一段存储单元,并将剩余的两段存储单元分别作为新的第二数据块。
确定单元93,用于当所述第二数据块中存储脏数据的存储单元所占比例不低于预设阈值时,将所述第二数据块作为所述第一数据块。
进一步地,图9所示实施例中,分割单元91,具体用于将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第三数据块,所述第三数据块头部和尾部的存储单元均连接未储存数据的存储单元,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第三数据块内;将存储有脏数据的第三数据块作为第四数据块。将所述第四数据块中第一个存储有脏数据的存储单元到最后一个存储有脏数据的数据单元之间连续的存储单元作为所述第二数据块。
图10为本发明实施例提供的在高速缓存中选择数据进行刷盘的实施例三的结构示意图,如图10所示,本实施例的高速缓存数据存储装置在图9的基础上,还包括:
预处理模块84,用于根据所述目标存储器当前数据读写状态确定所述预设阈值。
进一步地,图8至图10所示实施例中,所述存储单元的大小为所述目标存储器最小访问单位的大小。
进一步地,图8至图10所示实施例中,所述目标存储器包括机械式硬盘。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (14)

1.一种在高速缓存中选择数据进行刷盘的方法,其特征在于,包括:
将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块,所述第一数据块中存储脏数据的存储单元所占比例不低于预设阈值,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第一数据块内;
为每一个所述第一数据块生成一个输入/输出指令;
将所述输入/输出指令发送到目标存储器中,以使所述目标存储器存储所述第一数据块。
2.根据权利要求1所述的方法,其特征在于,所述第一数据块头部和尾部的存储单元中均存储有脏数据。
3.根据权利要求2所述的方法,其特征在于,所述将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块,包括:
将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第二数据块,所述第二数据块头部和尾部的存储单元均存储有脏数据,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第二数据块内;
若所述第二数据块中存储脏数据的存储单元所占比例低于预设阈值,则去除所述第二数据块中连续存储干净数据的存储单元中最长的一段存储单元,并将剩余的两段存储单元分别作为新的第二数据块;
当所述第二数据块中存储脏数据的存储单元所占比例不低于预设阈值时,将所述第二数据块作为所述第一数据块。
4.根据权利要求3所述的方法,其特征在于,所述将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第二数据块,包括:
将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第三数据块,所述第三数据块头部和尾部的存储单元均连接未储存数据的存储单元,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第三数据块内;
将存储有脏数据的第三数据块作为第四数据块。
将所述第四数据块中第一个存储有脏数据的存储单元到最后一个存储有脏数据的数据单元之间连续的存储单元作为所述第二数据块。
5.根据权利要求1~4任一项所述的方法,其特征在于,所述将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块之前,还包括:
根据所述目标存储器当前数据读写状态确定所述预设阈值。
6.根据权利要求1~5任一项所述的方法,其特征在于,所述存储单元的大小为所述目标存储器最小访问单位的大小。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述目标存储器包括机械式硬盘。
8.一种在高速缓存中选择数据进行刷盘的装置,其特征在于,包括:
分割模块,用于将高速缓存中待处理数据区域分割为至少一个由连续存储有数据的存储单元组成的第一数据块,所述第一数据块中存储脏数据的存储单元所占比例不低于预设阈值,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第一数据块内;
生成模块,用于为每一个所述第一数据块生成一个输入/输出指令;
发送模块,用于将所述输入/输出指令发送到目标存储器中,以使所述目标存储器存储所述第一数据块。
9.根据权利要求8所述的装置,其特征在于,所述分割模块,还用于使所述第一数据块头部和尾部的存储单元中均存储有脏数据。
10.根据权利要求9所述的装置,其特征在于,所述分割模块,包括:
分割单元,用于将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第二数据块,所述第二数据块头部和尾部的存储单元均存储有脏数据,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第二数据块内;
判断单元,用于若所述第二数据块中存储脏数据的存储单元所占比例低于预设阈值,则去除所述第二数据块中连续存储干净数据的存储单元中最长的一段存储单元,并将剩余的两段存储单元分别作为新的第二数据块;
确定单元,用于当所述第二数据块中存储脏数据的存储单元所占比例不低于预设阈值时,将所述第二数据块作为所述第一数据块。
11.根据权利要求10所述的装置,其特征在于,所述分割单元,具体用于将所述高速缓存中待处理的数据区域分割为至少一个由连续存储有数据的存储单元组成的第三数据块,所述第三数据块头部和尾部的存储单元均连接未储存数据的存储单元,所述待处理数据区域中所有存储脏数据的存储单元均位于所述第三数据块内;将存储有脏数据的第三数据块作为第四数据块。将所述第四数据块中第一个存储有脏数据的存储单元到最后一个存储有脏数据的数据单元之间连续的存储单元作为所述第二数据块。
12.根据权利要求8~11任一项所述的装置,其特征在于,还包括:预处理模块,用于根据所述目标存储器当前数据读写状态确定所述预设阈值。
13.根据权利要求8~12任一项所述的装置,其特征在于,所述存储单元的大小为所述目标存储器最小访问单位的大小。
14.根据权利要求8~13任一项所述的装置,其特征在于,所述目标存储器包括机械式硬盘。
CN201310545445.3A 2013-11-06 2013-11-06 在高速缓存中选择数据进行刷盘的方法和装置 Active CN103577349B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310545445.3A CN103577349B (zh) 2013-11-06 2013-11-06 在高速缓存中选择数据进行刷盘的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310545445.3A CN103577349B (zh) 2013-11-06 2013-11-06 在高速缓存中选择数据进行刷盘的方法和装置

Publications (2)

Publication Number Publication Date
CN103577349A true CN103577349A (zh) 2014-02-12
CN103577349B CN103577349B (zh) 2016-11-23

Family

ID=50049166

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310545445.3A Active CN103577349B (zh) 2013-11-06 2013-11-06 在高速缓存中选择数据进行刷盘的方法和装置

Country Status (1)

Country Link
CN (1) CN103577349B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461936A (zh) * 2014-11-28 2015-03-25 华为技术有限公司 缓存数据的刷盘方法及装置
CN106227675A (zh) * 2016-07-19 2016-12-14 华为技术有限公司 一种空间分配和刷盘相配合的方法及装置
CN107577439A (zh) * 2017-09-28 2018-01-12 郑州云海信息技术有限公司 分配处理资源的方法、装置、设备及计算机可读存储介质
CN111966285A (zh) * 2020-07-20 2020-11-20 四川虹美智能科技有限公司 向eeprom存储数据的方法、主控芯片和系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6490657B1 (en) * 1996-09-09 2002-12-03 Kabushiki Kaisha Toshiba Cache flush apparatus and computer system having the same
CN1617110A (zh) * 2003-11-12 2005-05-18 华为技术有限公司 磁盘阵列结构中进行回写的方法
CN102063271A (zh) * 2010-12-17 2011-05-18 曙光信息产业(北京)有限公司 一种磁盘外置Cache基于状态机的写回方法
CN102508619A (zh) * 2011-11-21 2012-06-20 成都市华为赛门铁克科技有限公司 存储系统服务质量控制方法、系统和存储系统
CN103049397A (zh) * 2012-12-20 2013-04-17 中国科学院上海微系统与信息技术研究所 一种基于新型存储器的固态硬盘内部缓存管理方法及系统
CN103229136A (zh) * 2012-12-26 2013-07-31 华为技术有限公司 磁盘阵列刷盘方法及磁盘阵列刷盘装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6490657B1 (en) * 1996-09-09 2002-12-03 Kabushiki Kaisha Toshiba Cache flush apparatus and computer system having the same
CN1617110A (zh) * 2003-11-12 2005-05-18 华为技术有限公司 磁盘阵列结构中进行回写的方法
CN102063271A (zh) * 2010-12-17 2011-05-18 曙光信息产业(北京)有限公司 一种磁盘外置Cache基于状态机的写回方法
CN102508619A (zh) * 2011-11-21 2012-06-20 成都市华为赛门铁克科技有限公司 存储系统服务质量控制方法、系统和存储系统
CN103049397A (zh) * 2012-12-20 2013-04-17 中国科学院上海微系统与信息技术研究所 一种基于新型存储器的固态硬盘内部缓存管理方法及系统
CN103229136A (zh) * 2012-12-26 2013-07-31 华为技术有限公司 磁盘阵列刷盘方法及磁盘阵列刷盘装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461936A (zh) * 2014-11-28 2015-03-25 华为技术有限公司 缓存数据的刷盘方法及装置
CN104461936B (zh) * 2014-11-28 2017-10-17 华为技术有限公司 缓存数据的刷盘方法及装置
CN106227675A (zh) * 2016-07-19 2016-12-14 华为技术有限公司 一种空间分配和刷盘相配合的方法及装置
WO2018014591A1 (zh) * 2016-07-19 2018-01-25 华为技术有限公司 一种空间分配和刷盘相配合的方法及装置
CN106227675B (zh) * 2016-07-19 2019-05-24 华为技术有限公司 一种空间分配和刷盘相配合的方法及装置
CN107577439A (zh) * 2017-09-28 2018-01-12 郑州云海信息技术有限公司 分配处理资源的方法、装置、设备及计算机可读存储介质
CN111966285A (zh) * 2020-07-20 2020-11-20 四川虹美智能科技有限公司 向eeprom存储数据的方法、主控芯片和系统
CN111966285B (zh) * 2020-07-20 2022-09-06 四川虹美智能科技有限公司 向eeprom存储数据的方法、主控芯片和系统

Also Published As

Publication number Publication date
CN103577349B (zh) 2016-11-23

Similar Documents

Publication Publication Date Title
US10133666B2 (en) File storage method and apparatus
CN105589812B (zh) 磁盘碎片整理方法、装置及主机
TWI494761B (zh) 分割實體區塊之方法及記憶體系統
US9582433B2 (en) Disk array flushing method and disk array flushing apparatus
US8769218B2 (en) System and apparatus for flash memory data management
CN104503703B (zh) 缓存的处理方法和装置
CN101382948A (zh) 一种文件存储方法、装置和系统
CN103838676B (zh) 数据存储系统、数据存储方法及pcm桥
US9507721B2 (en) Disk cache allocation
EP3196767A1 (en) Method for writing data into flash memory device, flash memory device and storage system
CN103577349A (zh) 在高速缓存中选择数据进行刷盘的方法和装置
CN115933994B (zh) 一种数据处理方法、装置、电子设备及存储介质
US20170003911A1 (en) Information processing device
CN105373487A (zh) 一种存储操作系统的碎片整理方法及系统
CN104834478A (zh) 一种基于异构混合存储设备的数据写入及读取方法
CN110990301A (zh) 多plane存储介质的顺序读方法及相关装置
CN103761052A (zh) 一种管理高速缓存的方法及存储装置
JP5907189B2 (ja) ストレージ制御装置、ストレージ制御方法、及び、プログラム
CN105630403A (zh) 文件存储系统及其文件存储控制方法与装置
CN110795034B (zh) 存储系统的数据迁移方法、装置、设备及可读存储介质
CN111522512B (zh) 优化的冷热数据分离方法、装置、计算机设备及存储介质
CN112860599B (zh) 数据缓存处理方法、装置以及存储介质
CN104252415A (zh) 一种重新分布数据的方法和系统
CN106202262A (zh) 一种信息处理方法及电子设备
WO2014147840A1 (ja) アクセス制御プログラム、ディスク装置及びアクセス制御方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170510

Address after: 510640 Guangdong City, Tianhe District Province, No. five, road, public education building, unit 371-1, unit 2401

Patentee after: Guangdong Gaohang Intellectual Property Operation Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: Huawei Technologies Co., Ltd.

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Li Yingchi

Inventor after: Wu Xianliang

Inventor after: Yang Can

Inventor after: Sheng Rongfen

Inventor after: Ning Li

Inventor before: Feng Yu

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20170525

Address after: 414000 Hunan Province, Yueyang City Economic Development Zone Industrial Park qikang Montevideo Road No. 28

Patentee after: HUNAN QIANMENG INDUSTRIAL INTELLIGENT SYSTEM CO., LTD.

Address before: 510640 Guangdong City, Tianhe District Province, No. five, road, public education building, unit 371-1, unit 2401

Patentee before: Guangdong Gaohang Intellectual Property Operation Co., Ltd.