CN112559388B - 数据缓存方法及装置 - Google Patents
数据缓存方法及装置 Download PDFInfo
- Publication number
- CN112559388B CN112559388B CN202011475299.8A CN202011475299A CN112559388B CN 112559388 B CN112559388 B CN 112559388B CN 202011475299 A CN202011475299 A CN 202011475299A CN 112559388 B CN112559388 B CN 112559388B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- cache block
- written
- address field
- 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
Images
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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- 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
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
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
本申请提供一种数据缓存方法及装置,应用于缓存模块,该缓存模块用于对存储设备包括的缓存进行管理。缓存模块接收到写命令时,对写命令中包括的待写入数据进行识别,如果该待写入数据由多个重复数据组成,则仅为其中一份重复数据分配预设大小的缓存空间,该缓存空间大小远远小于写命令对应逻辑空间大小,因此,可有效节约缓存资源,提升缓存利用率,提升存储设备的整体性能。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种数据缓存方法及装置。
背景技术
为了提升存储设备的响应速度,通常利用缓存来终结逻辑单元号(英文:LogicalUnit Number,缩写:LUN)的写命令。即,在数据写入缓存后,先向LUN返回执行结果,然后,再根据预设策略将缓存中的数据刷盘到磁盘中。
在向缓存中写入数据时,通常按照写命令对应逻辑空间(数据待写入的逻辑空间)大小分配缓存空间。在一些特殊的应用场景中,比如,销毁LUN时,一个写命令中会携带多个重复的销毁数据,如果仍然按照写命令对应逻辑空间分配缓存空间,则缓存中会存在大量重复数据,导致缓存利用率不高。
发明内容
有鉴于此,本申请提出一种数据缓存方法及装置,用以提升缓存利用率,提升存储设备的整体性能。
为实现上述申请目的,本申请提供了如下技术方案:
第一方面,本申请提供一种数据缓存方法,应用于缓存模块,所述缓存模块用于对存储设备包括的缓存进行管理,所述缓存包括第一缓存区和第二缓存区,所述第一缓存区中缓存块的大小大于所述第二缓存区中缓存块的大小,同一缓存区中缓存块的大小相同,每一个缓存块对应有管理数据,所述管理数据包括缓存块中用户数据所属LUN的标识以及在LUN中对应的地址段,所述方法包括:
接收针对目标LUN的写命令,所述写命令包括待写入数据以及在所述目标LUN中对应的待写入地址段;
判断所述第一缓存区中是否存在第一缓存块,所述第一缓存块对应地址段与所述待写入地址段存在重叠;
如果不存在所述第一缓存块,判断所述待写入数据是否由多个相同的目标数据组成;
如果所述待写入数据由多个相同的目标数据组成,判断所述第二缓存区中是否存在第二缓存块,所述第二缓存块对应地址段与所述待写入地址段存在重叠;
如果不存在所述第二缓存块,从所述第二缓存区中为所述目标数据分配第三缓存块,将所述目标数据写入所述第三缓存块,并设置所述第三缓存块对应地址段为所述待写入地址段。
可选的,所述方法还包括:
如果存在所述第二缓存块,判断所述第二缓存块中的数据与所述目标数据是否相同;
如果不同,从所述第二缓存区中为所述目标数据分配第三缓存块,将所述目标数据写入所述第三缓存块,并设置所述第三缓存块对应地址段为所述待写入地址段;更新所述第二缓存块对应地址段为第一地址段,所述第一地址段为所述第二缓存块对应原地址段剔除与所述待写入地址段重叠的部分;
如果相同,更新所述第二缓存块对应地址段为第二地址段,所述第二地址段为所述第二缓存块对应原地址段与所述待写入地址段的合集。
可选的,所述方法还包括:
如果存在所述第一缓存块,或者,不存在所述第一缓存块且所述待写入数据不是由多个相同的目标数据组成,将所述待写入数据写入所述第一缓存区对应缓存块;
判断所述第二缓存区中是否存在第二缓存块;
如果存在第二缓存块,更新所述第二缓存块对应地址段为第一地址段,所述第一地址段为所述第二缓存块对应原地址段剔除与所述待写入地址段重叠的部分。
可选的,所述判断所述待写入数据是否由多个相同的目标数据组成,包括:
获取预设的样本数据,所述样本数据的大小小于或等于所述第二缓存区中缓存块的大小;
将所述待写入数据按照所述样本数据的大小划分为多个子数据;
如果各子数据均与所述样本数据相同,确定所述待写入数据由多个相同的目标数据组成,将所述子数据作为所述目标数据。
可选的,所述判断所述待写入数据是否由多个相同的目标数据组成,包括:
将所述待写入数据按照预设目标数据大小划分为多个子数据,所述目标数据大小小于或等于所述第二缓存区中缓存块的大小;
如果各子数据均相同,确定所述待写入数据由多个相同的目标数据组成,将所述子数据作为所述目标数据。
第二方面,本申请提供一种数据缓存装置,应用于缓存模块,所述缓存模块用于对存储设备包括的缓存进行管理,所述缓存包括第一缓存区和第二缓存区,所述第一缓存区中缓存块的大小大于所述第二缓存区中缓存块的大小,同一缓存区中缓存块的大小相同,每一个缓存块对应有管理数据,所述管理数据包括缓存块中用户数据所属LUN的标识以及在LUN中对应的地址段,所述装置包括:
接收单元,用于接收针对目标LUN的写命令,所述写命令包括待写入数据以及在所述目标LUN中对应的待写入地址段;
判断单元,用于判断所述第一缓存区中是否存在第一缓存块,所述第一缓存块对应地址段与所述待写入地址段存在重叠;
所述判断单元,还用于如果不存在所述第一缓存块,判断所述待写入数据是否由多个相同的目标数据组成;
所述判断单元,还用于如果所述待写入数据由多个相同的目标数据组成,判断所述第二缓存区中是否存在第二缓存块,所述第二缓存块对应地址段与所述待写入地址段存在重叠;
缓存单元,用于如果不存在所述第二缓存块,从所述第二缓存区中为所述目标数据分配第三缓存块,将所述目标数据写入所述第三缓存块;
设置单元,用于设置所述第三缓存块对应地址段为所述待写入地址段。
可选的,所述判断单元,还用于如果存在所述第二缓存块,判断所述第二缓存块中的数据与所述目标数据是否相同;
所述缓存单元,用于如果不同,从所述第二缓存区中为所述目标数据分配第三缓存块,将所述目标数据写入所述第三缓存块;
所述设置单元,还用于设置所述第三缓存块对应地址段为所述待写入地址段;更新所述第二缓存块对应地址段为第一地址段,所述第一地址段为所述第二缓存块对应原地址段剔除与所述待写入地址段重叠的部分;
所述设置单元,还用于如果相同,更新所述第二缓存块对应地址段为第二地址段,所述第二地址段为所述第二缓存块对应原地址段与所述待写入地址段的合集。
可选的,所述缓存单元,还用于如果存在所述第一缓存块,或者,不存在所述第一缓存块且所述待写入数据不是由多个相同的目标数据组成,将所述待写入数据写入所述第一缓存区对应缓存块;
所述判断单元,还用于判断所述第二缓存区中是否存在第二缓存块;
所述设置单元,用于如果存在第二缓存块,更新所述第二缓存块对应地址段为第一地址段,所述第一地址段为所述第二缓存块对应原地址段剔除与所述待写入地址段重叠的部分。
可选的,所述判断单元判断所述待写入数据是否由多个相同的目标数据组成,包括:
获取预设的样本数据,所述样本数据的大小小于或等于所述第二缓存区中缓存块的大小;
将所述待写入数据按照所述样本数据的大小划分为多个子数据;
如果各子数据均与所述样本数据相同,确定所述待写入数据由多个相同的目标数据组成,将所述子数据作为所述目标数据。
可选的,所述判断单元判断所述待写入数据是否由多个相同的目标数据组成,包括:
将所述待写入数据按照预设目标数据大小划分为多个子数据,所述目标数据大小小于或等于所述第二缓存区中缓存块的大小;
如果各子数据均相同,确定所述待写入数据由多个相同的目标数据组成,将所述子数据作为所述目标数据。
由以上描述可以看出,本申请实施例针对包含多个重复数据的写命令,仅为其中一份重复数据分配预设大小的缓存空间,该缓存空间大小远远小于写命令对应逻辑空间大小,因此,可有效节约缓存资源,提升缓存利用率,提升存储设备的整体性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例示出的一种数据缓存方法流程图;
图2是本申请实施例示出的一种步骤103的实现流程;
图3是本申请实施例示出的另一种步骤103的实现流程;
图4是本申请实施例示出的一种数据缓存装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。
在本申请实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,协商信息也可以被称为第二信息,类似地,第二信息也可以被称为协商信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本申请实施例的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本申请实施例执行详细描述:
参见图1,为本申请实施例示出的一种数据缓存方法的流程图。该流程应用于缓存模块,该缓存模块用于对存储设备包括的缓存进行管理。
本申请实施例中,存储设备的缓存被划分为两个区域,分别称为第一缓存区和第二缓存区。这里,第一缓存区、第二缓存区只是为便于区分而进行的命名,并非用于限定。
其中,第一缓存区中缓存块的大小大于第二缓存区中缓存块的大小,且同一缓存区中缓存块的大小相同。比如,第一缓存区中各缓存块大小均为64KB,第二缓存区中各缓存块大小均为512B。
每一个缓存块对应有管理数据,该管理数据包括缓存块中用户数据所属LUN的标识以及在该LUN中对应的地址段。比如,某缓存块的管理数据为LUN1、起始地址为LBA1、数据长度为64KB,则说明该缓存块中缓存有LUN1中起始地址为LBA1的64KB用户数据,或者说,缓存有LUN1中【LBA1,LBA1+64KB】范围(地址段)内的用户数据。
如图1所示,该流程可包括以下步骤:
步骤101,接收针对目标LUN的写命令。
该写命令包括待写入数据以及在目标LUN中对应的待写入地址段。
这里,将当前写命令所要写入的LUN,称为目标LUN。可以理解的是,之所以称为目标LUN,只是为了便于区分而进行的命名,并非用于限定。
步骤102,判断第一缓存区中是否存在第一缓存块。
该第一缓存块为第一缓存区中地址段与待写入地址段存在重叠的缓存块。可以理解的是,之所以称为第一缓存块,只是为了便于区分而进行的命名,并非用于限定。
如果不存在第一缓存块,说明第一缓存区中没有该待写入地址段对应的数据。这时,需要判断当前写命令携带的待写入数据应该写入第一缓存区还是第二缓存区,转步骤103。
如果存在第一缓存块,说明第一缓存区有该待写入地址段对应数据,则需要将当前写命令携带的待写入数据写入第一缓存区,转步骤109。
步骤103,判断待写入数据是否由多个相同的目标数据组成。
比如,待写入数据由5个相同的数据(比如,5个A)组成,则这个相同数据(A)即为该待写入数据的目标数据。可以理解的是,之所以称为目标数据,只是为便于区分而进行的命名,并非用于限定。
判断待写入数据是否由多个相同目标数据组成的过程,在下文中介绍,这里暂不赘述。
如果缓存模块确定待写入数据由多个相同的目标数据组成,则将该待写入数据写入第二缓存区,转步骤104。
如果缓存模块确定待写入数据不是由多个相同的目标数据组成,则将该待写入数据写入第一缓存区,转步骤109。
步骤104,判断第二缓存区中是否存在第二缓存块。
该第二缓存块为第二缓存区中地址段与待写入地址段存在重叠的缓存块。可以理解的是,之所以称为第二地址段,只是为便于描述而进行的命名,并非用于限定。
如果不存在第二缓存块,说明第二缓存区中没有该待写入地址段对应数据,或者说,第二缓存区中没有该待写入地址段对应的缓存块,则转步骤105。
如果存在第二缓存块,说明第二缓存区中有该待写入地址段对应数据,则转步骤106。
步骤105,从第二缓存区中为目标数据分配第三缓存块,将目标数据写入第三缓存块,并设置第三缓存块对应地址段为待写入地址段。
本申请实施例中,针对由多个相同目标数据组成的待写入数据,仅为该待写入数据中一个目标数据分配缓存空间。
这里,需要说明的是,目标数据的大小通常小于或等于第二缓存区中缓存块的大小,因此,本步骤可从第二缓存区中为该目标数据分配一个缓存块,将该新分配的缓存块,称为第三缓存块。可以理解的是,之所以称为第三缓存块,只是为了便于区分而进行的命令,并非用于限定。
将该目标数据写入该第三缓存块,并设置该第三缓存块对应地址段为写命令对应的待写入地址段。
比如,缓存模块接收到针对LUN1的起始地址为LBA1的写命令,该写命令包括64KB待写入数据,该待写入数据由128个512B大小的相同数据(记为data1)组成,则本步骤为该data1分配一个512B的缓存块,将data1写入该缓存块,并设置该缓存块对应管理数据为“LUN1、起始地址为LBA1、数据长度为64KB”。可以看出,该待写入64KB逻辑空间的数据,在缓存中仅占用了512B的缓存空间,大大节约了缓存资源,提升了缓存利用率。
步骤106,判断第二缓存块中的数据与目标数据是否相同。
即,判断第二缓存块中已有数据与待写入的目标数据是否相同。如果不同,转步骤107;如果相同,转步骤108。
步骤107,从第二缓存区中为目标数据分配第三缓存块,将目标数据写入第三缓存块,并设置第三缓存块对应地址段为待写入地址段,更新第二缓存块对应地址段为第一地址段。
当第二缓存块中已有数据与待写入目标数据不同时,需要为目标数据分配新的缓存块(第三缓存块),并设置该第三缓存块对应地址段为写命令对应的待写入地址段。
由于第二缓存块对应地址段与待写入地址段存在重叠部分,因此,需要更新第二缓存块对应地址段,即,剔除第二缓存块对应地址段中与待写入地址段重叠的部分。这里,将剔除重叠部分后的地址段,称为第一地址段。可以理解的是,之所以称为第一地址段,只是为便于区分而进行的命名,并非用于限定。
比如,第二缓存块对应地址段为“起始地址为LBA2、数据长度为64KB”,待写入地址段为“起始地址为LBA1、数据长度为32KB”,其中,LBA1小于LBA2,LBA1与LBA2之间相差10KB逻辑空间,换言之,待写入地址段与第二缓存块对应地址段存在22KB的地址重叠区域。如果第二缓存块中已有数据与待写入目标数据不同,则为该目标数据分配新的512B大小的缓存块(第三缓存块),将目标数据写入该第三缓存块,并设置该第三缓存块对应地址段为“起始地址为LBA1、数据长度为32KB”;同时,更新第二缓存块对应地址段为“起始地址为LBA2+22KB(或者,LBA1+32KB),数据长度为42KB”。从而保证同一缓存区中各缓存块对应地址段不重叠。
再比如,第二缓存块对应地址段为“起始地址为LBA2、数据长度为64KB”,待写入地址段为“起始地址为LBA3、数据长度为32KB”,其中,LBA3大于LBA2,LBA2与LBA3之间相差10KB逻辑空间。也就是说,待写入地址段与第二缓存块对应地址段存在32KB的地址重叠区域,且该重叠区域位于第二缓存块对应地址段的中部。如果第二缓存块中已有数据与待写入目标数据不同,则为该目标数据分配一个512B大小的缓存块(第三缓存块),将目标数据写入该第三缓存块,并设置该第三缓存块对应地址段为“起始地址为LBA3、数据长度为32KB”。此外,可再分配一个512B大小的缓存块(记为第四缓存块),在该第四缓存块中写入与第二缓存块中相同的数据,设置该第四缓存块对应地址段为“起始地址为LBA2、数据长度为10KB”,并更新第二缓存块对应地址段为“起始地址为LBA3+32KB、数据长度为22KB”。从而保证同一缓存区中各缓存块对应地址段不重叠。
步骤108,更新第二缓存块对应地址段为第二地址段。
该第二地址段为第二缓存块对应原地址段与待写入地址段的合集。这里,第二地址段只是为便于区分而进行的命名,并非用于限定。
比如,第二缓存块对应地址段为“起始地址为LBA2、数据长度为64KB”,待写入地址段为“起始地址为LBA1、数据长度为32KB”,其中,LBA1小于LBA2,LBA1与LBA2之间相差10KB逻辑空间,换言之,待写入地址段与第二缓存块对应地址段存在22KB的地址重叠区域。由于第二缓存块中已有数据与待写入的目标数据相同,因此,无需执行写缓存操作,只需更新第二缓存块对应地址段为“起始地址为LBA1、数据长度为74KB”。可以看出,更新后,逻辑空间中74KB数据仅占用缓存空间中一个512B缓存块存储。
步骤109,将待写入数据写入第一缓存区对应缓存块。
采用现有分配缓存块的方式(按照待写入数据大小分配对应缓存空间),将待写入数据写入第一缓存区,这里不再赘述,转步骤110。
步骤110,判断第二缓存区中是否存在第二缓存块。
如前所述,第二缓存块为第二缓存区中地址段与待写入地址段存在重叠的缓存块。如果存在,说明第二缓存区缓存有待写入地址段对应的数据(旧数据),转步骤111;如果不存在,结束缓存处理流程。
步骤111,更新第二缓存块对应地址段为第一地址段。
由于待写入地址段对应待写入数据(新数据)已写入第一缓存区,因此,需要更新该待写入地址段在第二缓存区中命中的第二缓存块的地址段,即,剔除第二缓存块对应地址段中与待写入地址段重叠的部分,从而保证第一缓存区与第二缓存区中各缓冲块对应地址段不重叠。
至此,完成图1所示流程。
通过图1所示流程可以看出,本申请实施例针对包含多个重复数据的写命令,仅为其中一份重复数据分配预设大小的缓存空间,该缓存空间大小远远小于写命令对应逻辑空间大小,因此,可有效节约缓存资源,提升缓存利用率,提升存储设备的整体性能。
此外,需要补充说明的是,本申请实施例中,第一缓存区和第二缓存区的空间大小可动态调节。在初始分配时,可为第二缓存区分配少量缓存空间,比如,1MB,该1MB缓存空间可划分为2048个512B大小的缓存块。缓存模块监测第二缓存区中缓存块的使用情况,当第二缓存区中空闲缓存块的数量大于第一数量阈值(比如,256个)时,说明第二缓存区中空闲缓存块较多,可释放第二缓存区中部分缓存空间给第一缓存区;当第二缓存区中空闲缓存块的数量小于第二数量阈值(比如,16个)时,说明第二缓存区中空闲缓存块较少,第二缓冲区空间紧张,可从第一缓存区分配部分空间给第二缓存区。以实现各缓存区的动态调节。
下面对步骤103中判断待写入数据是否由多个相同目标数据组成的过程进行描述。
作为一个实施例,参见图2,为本申请实施例示出的一种步骤103的实现流程。该流程包括以下步骤:
步骤201,获取预设的样本数据。
本申请实施例中,可根据业务(比如,销毁LUN业务)需求预设需要重复写入的样本数据,该样本数据大小小于或等于第二缓存区中缓存块的大小。比如,将一个第二缓存区中缓存块大小(比如,512B)的全0数据作为样本数据;再比如,将一个第二缓存区中缓存块大小的全1数据作为样本数据。本申请对样本数据具体内容不作限定。
当然,本申请还可根据不同业务设置不同的样本数据。
步骤202,将待写入数据按照样本数据大小划分为多个子数据。
比如,待写入数据大小为64KB,按照样本数据大小(比如,512B)可划分为128个子数据。
步骤203,如果各子数据均与样本数据相同,则确定该待写入数据由多个相同的目标数据组成,并将子数据作为目标数据。
即,待写入数据由多个重复的子数据(样本数据)组成,因此,可将该子数据作为目标数据。
至此,完成图2所示流程。通过图2所示流程,实现识别待写入数据是否由多个相同数据组成以及确定该相同数据。
作为另一个实施例,参见图3,为本申请实施例示出的另一种步骤103的实现流程。该流程包括以下步骤:
步骤301,将待写入数据按照预设目标数据大小划分为多个子数据。
本申请实施例中,可根据业务特点预设需要重复写入的目标数据的大小。该目标数据大小通常小于或等于第二缓存区中缓存块的大小(比如,512B)。
将待写入数据按照预设目标数据大小划分为多个子数据。比如,待写入数据大小为64KB,预设目标数据大小为512B,则可划分为128个子数据。
步骤302,如果各子数据均相同,确定该待写入数据由多个相同的目标数据组成,且将子数据作为目标数据。
即,待写入数据由多个重复的子数据组成,因此,可将该子数据作为目标数据。
可见,本申请实施例确定重复数据的过程更加灵活,不需要预设大量样本数据。
至此,完成图3所示流程。通过图3所示流程,实现识别待写入数据是否由多个相同数据组成以及确定该相同数据。
以上对本申请实施例提供的方法进行了描述,下面对本申请实施例提供的装置进行描述:
参见图4,为本申请实施例提供的装置的结构示意图。该装置应用于缓存模块,所述缓存模块用于对存储设备包括的缓存进行管理,所述缓存包括第一缓存区和第二缓存区,所述第一缓存区中缓存块的大小大于所述第二缓存区中缓存块的大小,同一缓存区中缓存块的大小相同,每一个缓存块对应有管理数据,所述管理数据包括缓存块中用户数据所属LUN的标识以及在LUN中对应的地址段,所述装置包括:接收单元401、判断单元402、缓存单元403以及设置单元404,其中:
接收单元401,用于接收针对目标LUN的写命令,所述写命令包括待写入数据以及在所述目标LUN中对应的待写入地址段;
判断单元402,用于判断所述第一缓存区中是否存在第一缓存块,所述第一缓存块对应地址段与所述待写入地址段存在重叠;
所述判断单元402,还用于如果不存在所述第一缓存块,判断所述待写入数据是否由多个相同的目标数据组成;
所述判断单元402,还用于如果所述待写入数据由多个相同的目标数据组成,判断所述第二缓存区中是否存在第二缓存块,所述第二缓存块对应地址段与所述待写入地址段存在重叠;
缓存单元403,用于如果不存在所述第二缓存块,从所述第二缓存区中为所述目标数据分配第三缓存块,将所述目标数据写入所述第三缓存块;
设置单元404,用于设置所述第三缓存块对应地址段为所述待写入地址段。
作为一个实施例,所述判断单元402,还用于如果存在所述第二缓存块,判断所述第二缓存块中的数据与所述目标数据是否相同;
所述缓存单元403,用于如果不同,从所述第二缓存区中为所述目标数据分配第三缓存块,将所述目标数据写入所述第三缓存块;
所述设置单元404,还用于设置所述第三缓存块对应地址段为所述待写入地址段;更新所述第二缓存块对应地址段为第一地址段,所述第一地址段为所述第二缓存块对应原地址段剔除与所述待写入地址段重叠的部分;
所述设置单元404,还用于如果相同,更新所述第二缓存块对应地址段为第二地址段,所述第二地址段为所述第二缓存块对应原地址段与所述待写入地址段的合集。
作为一个实施例,所述缓存单元403,还用于如果存在所述第一缓存块,或者,不存在所述第一缓存块且所述待写入数据不是由多个相同的目标数据组成,将所述待写入数据写入所述第一缓存区对应缓存块;
所述判断单元402,还用于判断所述第二缓存区中是否存在第二缓存块;
所述设置单元404,用于如果存在第二缓存块,更新所述第二缓存块对应地址段为第一地址段,所述第一地址段为所述第二缓存块对应原地址段剔除与所述待写入地址段重叠的部分。
作为一个实施例,所述判断单元402判断所述待写入数据是否由多个相同的目标数据组成,包括:
获取预设的样本数据,所述样本数据的大小小于或等于所述第二缓存区中缓存块的大小;
将所述待写入数据按照所述样本数据的大小划分为多个子数据;
如果各子数据均与所述样本数据相同,确定所述待写入数据由多个相同的目标数据组成,将所述子数据作为所述目标数据。
作为一个实施例,所述判断单元402判断所述待写入数据是否由多个相同的目标数据组成,包括:
将所述待写入数据按照预设目标数据大小划分为多个子数据,所述目标数据大小小于或等于所述第二缓存区中缓存块的大小;
如果各子数据均相同,确定所述待写入数据由多个相同的目标数据组成,将所述子数据作为所述目标数据。
由以上描述可以看出,本申请实施例针对包含多个重复数据的写命令,仅为其中一份重复数据分配预设大小的缓存空间,该缓存空间大小远远小于写命令对应逻辑空间大小,因此,可有效节约缓存资源,提升缓存利用率,提升存储设备的整体性能。
以上所述仅为本申请实施例的较佳实施例而已,并不用以限制本申请,凡在本申请实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种数据缓存方法,其特征在于,应用于缓存模块,所述缓存模块用于对存储设备包括的缓存进行管理,所述缓存包括第一缓存区和第二缓存区,所述第一缓存区中缓存块的大小大于所述第二缓存区中缓存块的大小,同一缓存区中缓存块的大小相同,每一个缓存块对应有管理数据,所述管理数据包括缓存块中用户数据所属LUN的标识以及在LUN中对应的地址段,所述方法包括:
接收针对目标LUN的写命令,所述写命令包括待写入数据以及在所述目标LUN中对应的待写入地址段;
判断所述第一缓存区中是否存在第一缓存块,所述第一缓存块对应地址段与所述待写入地址段存在重叠;
如果不存在所述第一缓存块,判断所述待写入数据是否由多个相同的目标数据组成;
如果所述待写入数据由多个相同的目标数据组成,判断所述第二缓存区中是否存在第二缓存块,所述第二缓存块对应地址段与所述待写入地址段存在重叠;
如果不存在所述第二缓存块,从所述第二缓存区中为所述目标数据分配第三缓存块,将所述目标数据写入所述第三缓存块,并设置所述第三缓存块对应地址段为所述待写入地址段。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
如果存在所述第二缓存块,判断所述第二缓存块中的数据与所述目标数据是否相同;
如果不同,从所述第二缓存区中为所述目标数据分配第三缓存块,将所述目标数据写入所述第三缓存块,并设置所述第三缓存块对应地址段为所述待写入地址段;更新所述第二缓存块对应地址段为第一地址段,所述第一地址段为所述第二缓存块对应原地址段剔除与所述待写入地址段重叠的部分;
如果相同,更新所述第二缓存块对应地址段为第二地址段,所述第二地址段为所述第二缓存块对应原地址段与所述待写入地址段的合集。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
如果存在所述第一缓存块,或者,不存在所述第一缓存块且所述待写入数据不是由多个相同的目标数据组成,将所述待写入数据写入所述第一缓存区对应缓存块;
判断所述第二缓存区中是否存在第二缓存块;
如果存在第二缓存块,更新所述第二缓存块对应地址段为第一地址段,所述第一地址段为所述第二缓存块对应原地址段剔除与所述待写入地址段重叠的部分。
4.如权利要求1所述的方法,其特征在于,所述判断所述待写入数据是否由多个相同的目标数据组成,包括:
获取预设的样本数据,所述样本数据的大小小于或等于所述第二缓存区中缓存块的大小;
将所述待写入数据按照所述样本数据的大小划分为多个子数据;
如果各子数据均与所述样本数据相同,确定所述待写入数据由多个相同的目标数据组成,将所述子数据作为所述目标数据。
5.如权利要求1所述的方法,其特征在于,所述判断所述待写入数据是否由多个相同的目标数据组成,包括:
将所述待写入数据按照预设目标数据大小划分为多个子数据,所述目标数据大小小于或等于所述第二缓存区中缓存块的大小;
如果各子数据均相同,确定所述待写入数据由多个相同的目标数据组成,将所述子数据作为所述目标数据。
6.一种数据缓存装置,其特征在于,应用于缓存模块,所述缓存模块用于对存储设备包括的缓存进行管理,所述缓存包括第一缓存区和第二缓存区,所述第一缓存区中缓存块的大小大于所述第二缓存区中缓存块的大小,同一缓存区中缓存块的大小相同,每一个缓存块对应有管理数据,所述管理数据包括缓存块中用户数据所属LUN的标识以及在LUN中对应的地址段,所述装置包括:
接收单元,用于接收针对目标LUN的写命令,所述写命令包括待写入数据以及在所述目标LUN中对应的待写入地址段;
判断单元,用于判断所述第一缓存区中是否存在第一缓存块,所述第一缓存块对应地址段与所述待写入地址段存在重叠;
所述判断单元,还用于如果不存在所述第一缓存块,判断所述待写入数据是否由多个相同的目标数据组成;
所述判断单元,还用于如果所述待写入数据由多个相同的目标数据组成,判断所述第二缓存区中是否存在第二缓存块,所述第二缓存块对应地址段与所述待写入地址段存在重叠;
缓存单元,用于如果不存在所述第二缓存块,从所述第二缓存区中为所述目标数据分配第三缓存块,将所述目标数据写入所述第三缓存块;
设置单元,用于设置所述第三缓存块对应地址段为所述待写入地址段。
7.如权利要求6所述的装置,其特征在于:
所述判断单元,还用于如果存在所述第二缓存块,判断所述第二缓存块中的数据与所述目标数据是否相同;
所述缓存单元,用于如果不同,从所述第二缓存区中为所述目标数据分配第三缓存块,将所述目标数据写入所述第三缓存块;
所述设置单元,还用于设置所述第三缓存块对应地址段为所述待写入地址段;更新所述第二缓存块对应地址段为第一地址段,所述第一地址段为所述第二缓存块对应原地址段剔除与所述待写入地址段重叠的部分;
所述设置单元,还用于如果相同,更新所述第二缓存块对应地址段为第二地址段,所述第二地址段为所述第二缓存块对应原地址段与所述待写入地址段的合集。
8.如权利要求6所述的装置,其特征在于:
所述缓存单元,还用于如果存在所述第一缓存块,或者,不存在所述第一缓存块且所述待写入数据不是由多个相同的目标数据组成,将所述待写入数据写入所述第一缓存区对应缓存块;
所述判断单元,还用于判断所述第二缓存区中是否存在第二缓存块;
所述设置单元,用于如果存在第二缓存块,更新所述第二缓存块对应地址段为第一地址段,所述第一地址段为所述第二缓存块对应原地址段剔除与所述待写入地址段重叠的部分。
9.如权利要求6所述的装置,其特征在于,所述判断单元判断所述待写入数据是否由多个相同的目标数据组成,包括:
获取预设的样本数据,所述样本数据的大小小于或等于所述第二缓存区中缓存块的大小;
将所述待写入数据按照所述样本数据的大小划分为多个子数据;
如果各子数据均与所述样本数据相同,确定所述待写入数据由多个相同的目标数据组成,将所述子数据作为所述目标数据。
10.如权利要求6所述的装置,其特征在于,所述判断单元判断所述待写入数据是否由多个相同的目标数据组成,包括:
将所述待写入数据按照预设目标数据大小划分为多个子数据,所述目标数据大小小于或等于所述第二缓存区中缓存块的大小;
如果各子数据均相同,确定所述待写入数据由多个相同的目标数据组成,将所述子数据作为所述目标数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011475299.8A CN112559388B (zh) | 2020-12-14 | 2020-12-14 | 数据缓存方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011475299.8A CN112559388B (zh) | 2020-12-14 | 2020-12-14 | 数据缓存方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559388A CN112559388A (zh) | 2021-03-26 |
CN112559388B true CN112559388B (zh) | 2022-07-12 |
Family
ID=75063567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011475299.8A Active CN112559388B (zh) | 2020-12-14 | 2020-12-14 | 数据缓存方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559388B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986129B (zh) * | 2021-10-26 | 2023-04-25 | 杭州宏杉科技股份有限公司 | Lun数据复制方法及装置 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645969A (zh) * | 2013-12-13 | 2014-03-19 | 华为技术有限公司 | 数据复制方法及数据存储系统 |
CN103688246A (zh) * | 2011-05-17 | 2014-03-26 | 桑迪士克科技股份有限公司 | 具有在活跃slc和mlc存储器分区之间分布的小逻辑组的非易失性存储器和方法 |
CN104239233A (zh) * | 2014-09-19 | 2014-12-24 | 华为技术有限公司 | 缓存管理方法、缓存管理装置和缓存管理设备 |
CN105612488A (zh) * | 2014-09-15 | 2016-05-25 | 华为技术有限公司 | 数据写请求处理方法和存储阵列 |
CN107329859A (zh) * | 2017-06-29 | 2017-11-07 | 杭州宏杉科技股份有限公司 | 一种数据保护方法及存储设备 |
CN107844270A (zh) * | 2014-12-31 | 2018-03-27 | 华为技术有限公司 | 一种存储阵列系统及数据写请求处理方法 |
CN108319430A (zh) * | 2018-01-17 | 2018-07-24 | 杭州宏杉科技股份有限公司 | 处理io请求的方法及装置 |
CN108459826A (zh) * | 2018-02-01 | 2018-08-28 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN110134618A (zh) * | 2018-02-02 | 2019-08-16 | 富士通株式会社 | 存储控制装置、存储控制方法和记录介质 |
CN110554970A (zh) * | 2018-05-31 | 2019-12-10 | 北京忆恒创源科技有限公司 | 显著降低写放大的垃圾回收方法及存储设备 |
CN110908927A (zh) * | 2018-09-14 | 2020-03-24 | 慧荣科技股份有限公司 | 数据储存装置及其删除命名空间的方法 |
CN110968527A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | Ftl提供的缓存 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7509467B2 (en) * | 2006-01-13 | 2009-03-24 | Hitachi, Ltd. | Storage controller and data management method |
JP5216463B2 (ja) * | 2008-07-30 | 2013-06-19 | 株式会社日立製作所 | ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ |
US8560770B2 (en) * | 2009-11-13 | 2013-10-15 | Seagate Technology Llc | Non-volatile write cache for a data storage system |
-
2020
- 2020-12-14 CN CN202011475299.8A patent/CN112559388B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103688246A (zh) * | 2011-05-17 | 2014-03-26 | 桑迪士克科技股份有限公司 | 具有在活跃slc和mlc存储器分区之间分布的小逻辑组的非易失性存储器和方法 |
CN103645969A (zh) * | 2013-12-13 | 2014-03-19 | 华为技术有限公司 | 数据复制方法及数据存储系统 |
CN105612488A (zh) * | 2014-09-15 | 2016-05-25 | 华为技术有限公司 | 数据写请求处理方法和存储阵列 |
CN104239233A (zh) * | 2014-09-19 | 2014-12-24 | 华为技术有限公司 | 缓存管理方法、缓存管理装置和缓存管理设备 |
CN107844270A (zh) * | 2014-12-31 | 2018-03-27 | 华为技术有限公司 | 一种存储阵列系统及数据写请求处理方法 |
CN107329859A (zh) * | 2017-06-29 | 2017-11-07 | 杭州宏杉科技股份有限公司 | 一种数据保护方法及存储设备 |
CN108319430A (zh) * | 2018-01-17 | 2018-07-24 | 杭州宏杉科技股份有限公司 | 处理io请求的方法及装置 |
CN108459826A (zh) * | 2018-02-01 | 2018-08-28 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN110134618A (zh) * | 2018-02-02 | 2019-08-16 | 富士通株式会社 | 存储控制装置、存储控制方法和记录介质 |
CN110554970A (zh) * | 2018-05-31 | 2019-12-10 | 北京忆恒创源科技有限公司 | 显著降低写放大的垃圾回收方法及存储设备 |
CN110908927A (zh) * | 2018-09-14 | 2020-03-24 | 慧荣科技股份有限公司 | 数据储存装置及其删除命名空间的方法 |
CN110968527A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | Ftl提供的缓存 |
Non-Patent Citations (1)
Title |
---|
HDFS存储和优化技术研究综述;金国栋;《软件学报》;20190812;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112559388A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8688932B2 (en) | Virtual computer system and method of controlling the same | |
US10732905B2 (en) | Automatic I/O stream selection for storage devices | |
US10649890B2 (en) | Information processing system, storage control apparatus, storage control method, and storage control program | |
US9798655B2 (en) | Managing a cache on storage devices supporting compression | |
JP6613375B2 (ja) | プロファイリングキャッシュ置換 | |
US7246195B2 (en) | Data storage management for flash memory devices | |
WO2017000658A1 (zh) | 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法 | |
US9830266B1 (en) | Techniques for data prefetching | |
WO2017088185A1 (zh) | 一种存储设备存储数据的方法及存储设备 | |
US20130332693A1 (en) | Allocating storage memory based on future file size or use estimates | |
CN103399823B (zh) | 业务数据的存储方法、设备和系统 | |
CN104285214A (zh) | 混合储存集合块跟踪 | |
JP6262360B2 (ja) | 計算機システム | |
US8572321B2 (en) | Apparatus and method for segmented cache utilization | |
US20180113639A1 (en) | Method and system for efficient variable length memory frame allocation | |
CN110377233A (zh) | Ssd读性能优化方法、装置、计算机设备及存储介质 | |
CN111124951A (zh) | 管理数据访问的方法、设备和计算机程序产品 | |
KR20090107098A (ko) | 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법 | |
CN103927136B (zh) | 输入输出io类型的识别方法和装置 | |
CN112559388B (zh) | 数据缓存方法及装置 | |
JPWO2014192144A1 (ja) | ホストバスアダプタおよびシステム | |
US10180901B2 (en) | Apparatus, system and method for managing space in a storage device | |
CN116974491A (zh) | 固态硬盘的存储优化方法、装置、计算机设备及存储介质 | |
US9563363B2 (en) | Flexible storage block for a solid state drive (SSD)-based file system | |
CN107132996B (zh) | 基于智能精简配置的存储方法、模块及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |