CN108664217B - 一种降低固态盘存储***写性能抖动的缓存方法及*** - Google Patents
一种降低固态盘存储***写性能抖动的缓存方法及*** Download PDFInfo
- Publication number
- CN108664217B CN108664217B CN201810294987.0A CN201810294987A CN108664217B CN 108664217 B CN108664217 B CN 108664217B CN 201810294987 A CN201810294987 A CN 201810294987A CN 108664217 B CN108664217 B CN 108664217B
- Authority
- CN
- China
- Prior art keywords
- write request
- data
- new write
- new
- cache
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种降低固态盘存储***写性能抖动的缓存方法:S1、在新写请求到达缓存***时,将该新写请求数据存储至匹配的缓存簇;S2、基于该新写请求数据生成指纹信息,且将所述指纹信息与目标指纹库进行匹配,并根据匹配结果判断本次新写请求的操作类型;S3、根据本次新写请求的操作类型选择该新写请求数据在其所在缓存簇写回闪存时的处理方式。本发明通过指纹库技术,尽可能的选择更新数据页较多的簇写回闪存,并在原数据块所在存储单元空闲时,对原数据块执行垃圾回收,提高缓存空间利用率的同时降低了缓存中频繁更新数据写回闪存产生的大量无效数据页,减少了垃圾回收操作,降低固态盘写性能抖动。
Description
技术领域
本发明涉及缓存优化方法技术领域,尤其涉及一种降低固态盘存储***写性能抖动的缓存方法及***。
背景技术
固态盘作为一种新型存储设备,近年来已经被广泛应用于各类消费电子设备中作为存储介质。随着闪存固态盘的广泛应用,由其存储介质本身的物理特性带来的问题日益显现。写前擦除特性带来的异地更新操作会损耗固态盘性能和寿命。闪存固态盘在写入数据之前需要首先对存储空间进行擦除操作,因此当固态盘里的数据需要更新时,需要将更新后的数据写入到已经完成擦除的数据块中,然后将其所对应的原数据置为无效,当闪存固态盘内部存储容量达到一定阈值时,对无效数据空间进行回收操作,这一过程称为垃圾回收。垃圾回收主要由待擦除块内有效数据页的重写操作以及无效数据块的擦除操作两部分组成,待擦除块内有效数据页的重写操作可能会与外部新写请求争用总线,等到重写操作完成后外部新写请求才能被响应,这就造成外部新写请求性能抖动,大大增加了用户新写请求的响应时间;此外,闪存固态盘的擦除时间要远高于读写时间,这也再次增加了垃圾回收的时间开销。交易型存储***写性能抖动引起较大的响应延迟是不允许的,较大的写性能抖动对交易型存储***是致命的。而固态盘上的缓存***可以有效降低垃圾回收对用户响应时间的影响。
发明内容
基于背景技术存在的技术问题,本发明提出了一种降低固态盘存储***写性能抖动的缓存方法及***。
本发明提出的降低固态盘存储***写性能抖动的缓存方法,包括以下步骤:
S1、在新写请求到达缓存***时,将该新写请求数据存储至匹配的缓存簇;
S2、基于该新写请求数据生成指纹信息,且将所述指纹信息与目标指纹库进行匹配,并根据匹配结果判断本次新写请求的操作类型;
S3、根据本次新写请求的操作类型选择该新写请求数据在其所在缓存簇写回闪存时的处理方式。
优选地,步骤S1具体包括:
在新写请求到达缓存***时,根据新写请求的数据页地址在缓存***中查找是否有存储数据页地址范围包含该新写请求数据页地址的缓存簇,若有,将该新写请求数据存储至该缓存簇中,若没有,在缓存***中申请一个缓存空间形成缓存簇,且将该新写请求数据存储至该缓存簇中,并在目标指纹库中构建一个目标指纹库单元,且将上述缓存簇对应的闪存数据块中所有数据页指纹信息存储至上述目标指纹库单元。
优选地,步骤S2中,所述目标指纹库包括多个目标指纹库单元,每一个目标指纹库单元内存储有闪存中一个闪存数据块包含的所有数据页的指纹信息。
优选地,步骤S2具体包括:
基于该新写请求数据生成指纹信息,并将所述指纹信息与目标指纹库进行匹配,若在目标指纹库中没有找到与该新写请求相同逻辑地址数据页的指纹信息,判定本次新写请求为新写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配成功,判定本次新写请求为重复写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配不成功,判定本次新写请求为更新操作。
优选地,步骤S3具体包括:
根据本次新写请求的操作类型选择该新写请求数据在其所在缓存簇写回闪存时的处理方式:
当本次新写请求为新写操作时,在其所在缓存簇写回闪存时,将该新写请求数据随其所在的缓存簇一并写回闪存;当本次新写请求为重复写操作时,在其所在的缓存簇写回闪存时丢弃该新写请求数据;当本次新写请求为更新操作时,将与该新写请求数据所在的缓存簇的更新数据页标志位加一,并将该新写请求数据页对应的原闪存数据页置为无效状态,当其所在缓存簇的更新数据页标志位大于预设阈值时,将该新写请求数据随其所在的缓存簇一并写回闪存。
本发明提出的降低固态盘存储***写性能抖动的缓存***,包括:
信息存储模块,用于在新写请求到达缓存***时,将该新写请求数据存储至匹配的缓存簇;
信息匹配模块,用于基于该新写请求数据生成指纹信息,且将所述指纹信息与目标指纹库进行匹配,并根据匹配结果判断本次新写请求的操作类型;
动态操作模块,用于根据本次新写请求的操作类型选择该新写请求数据在其所在缓存簇写回闪存时的处理方式。
优选地,所述信息存储模块具体用于:
在新写请求到达缓存***时,根据新写请求的数据页地址在缓存***中查找是否有存储数据页地址范围包含该新写请求数据页地址的缓存簇,若有,将该新写请求数据存储至该缓存簇中,若没有,在缓存***中申请一个缓存空间形成缓存簇,且将该新写请求数据存储至该缓存簇中,并在目标指纹库中构建一个目标指纹库单元,且将上述缓存簇对应的闪存数据块中所有数据页指纹信息存储至上述目标指纹库单元。
优选地,所述信息匹配模块中,所述目标指纹库包括多个目标指纹库单元,每一个目标指纹库单元内存储有闪存中一个闪存数据块包含的所有数据页的指纹信息。
优选地,所述信息匹配模块具体用于:
基于该新写请求数据生成指纹信息,并将所述指纹信息与目标指纹库进行匹配,若在目标指纹库中没有找到与该新写请求相同逻辑地址数据页的指纹信息,判定本次新写请求为新写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配成功,判定本次新写请求为重复写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配不成功,判定本次新写请求为更新操作。
优选地,所述动态操作模块具体用于:
根据本次新写请求的操作类型选择该新写请求数据写回闪存时的处理方式:
当本次新写请求为新写操作时,在其所在缓存簇写回闪存时,将该新写请求数据随其所在的缓存簇一并写回闪存;当本次新写请求为重复写操作时,在其所在的缓存簇写回闪存时丢弃该新写请求数据;当本次新写请求为更新操作时,将与该新写请求数据所在的缓存簇的更新数据页标志位加一,并将该新写请求数据页对应的原闪存数据页置为无效状态,当其所在缓存簇的更新数据页标志位大于预设阈值时,将该新写请求数据随其所在的缓存簇一并写回闪存。
本发明提出的降低固态盘存储***写性能抖动的缓存方法,其缓存策略在以聚簇的形式组织数据的基础上,设计了面向写/更新操作的指纹库,实现了缓存与闪存存储之间语义交互的桥梁。利用指纹库中每一个指纹库单元中存储的指纹信息来检测每次写入缓存空间内I/O用户请求是否为更新操作,让***实时感知缓存簇所对应的闪存存储单元内数据块中无效页数是否达到阈值,当不活跃簇内更新数据页的数量达到阈值时,将该簇写回闪存;当原数据块所在存储单元空闲时,对原数据块执行垃圾回收,提高缓存空间利用率的同时,降低缓存与闪存之间频繁更新操作产生的大量无效数据页,减少了垃圾回收操作,从而尽可能降低了由于垃圾回收操作的有效数据页重写与外部新写请求争用总线冲突,降低固态盘写性能抖动。
附图说明
图1为一种降低固态盘存储***写性能抖动的缓存方法的步骤示意图;
图2为一种降低固态盘存储***写性能抖动的缓存***的结构示意图;
图3为一种降低固态盘存储***写性能抖动的缓存***运行过程的结构示意图;
图4为实施例中指纹库匹配的过程示意图;
图5为实施例中数据写回闪存的过程示意图。
具体实施方式
随着大数据应用规模不断增加,数据处理对计算机存储性能提出了更高的需求。基于磁盘的传统存储***性能较低,已无法满足响应时间要求较高的大数据应用需求。而基于闪存的固态盘被广泛应用到大数据处理的存储***中。
固态盘作为一种新型存储设备,近年来已经被广泛应用于各类消费电子设备中作为存储介质。与传统的磁盘设备相比,固态盘具有独特的优势。首先,固态盘读写速度快。传统的磁盘设备包含了机械部件,需要较长的寻址时间。而固态盘以电子器件为存储介质,寻址开销较小。固态盘存储介质的物理特性,比传统磁盘具有较高的存取性能。其次,固态盘能耗更低且抗震,固态盘的性能不断提升,同时3D闪存技术有效增加了存储容量,固态盘要明显比传统磁盘更适合大规模存储***。
目前,闪存存储介质被广泛应用到固态盘。闪存存储介质中写操作最小单元是页,擦除操作粒度是块,其具有读/写操作与擦除操作粒度不一致,读写速度不对称,写前擦除等物理特性。随着闪存固态盘的广泛应用,由其存储介质本身的物理特性带来的问题日益显现。写前擦除特性带来的异地更新操作会损耗固态盘性能和寿命。闪存固态盘在写入数据之前需要首先对存储空间进行擦除操作,因此当固态盘里的数据需要更新时,需要将更新后的数据写入到已经完成擦除的数据块中,然后将其所对应的原数据置为无效,当闪存固态盘内部存储容量达到一定阈值时,对无效数据空间进行回收操作,这一过程称为垃圾回收。垃圾回收主要由待擦除块内有效数据页的重写操作以及无效数据块的擦除操作两部分组成,待擦除块内有效数据页的重写操作可能会与外部新写请求争用总线,等到重写操作完成后外部新写请求才能被响应,这就造成外部新写请求性能抖动,大大增加了用户新写请求的响应时间;此外,闪存固态盘的擦除时间要远高于读写时间,这也再次增加了垃圾回收的时间开销。交易型存储***写性能抖动引起较大的响应延迟是不允许的,较大的写性能抖动对交易型存储***是致命的。而固态盘上的缓存***可以有效降低垃圾回收对用户响应时间的影响。
针对固态盘缓存***优化,前人已经做过了大量工作,并形成了许多经典算法。LRU算法是最具有代表性的缓存管理算法。LRU算法通过按照数据页的访问频度对页排列组成链表,当缓存已满需要进行页的替换时,把处于链表尾的页驱逐。LRU算法原理较为精简,但是其只根据单次访问记录来判断数据的活跃程度,并不能精准的驱逐出最不活跃的数据,可能将活跃的数据替换出缓存,造成闪存中产生大量无效数据页,增加垃圾回收频率。
为此,CFLRU算法对传统的LRU算法进行适当修改,产生的基于Flash介质的缓存管理算法,其充分考虑到闪存读写代价不对称特性,通过窗口时间的形式将链表分为包含最近访问数据页的工作区(Working Region)和包含未被访问数据页的擦除区(Clean-FirstRegion),当缓存满时,优先选择擦除区中的干净页替换出缓存。CFLRU算法提高了缓存替换时选择不活跃数据的精度,但是,当CFLRU的窗口时间不合适,优先擦除区中没有干净页时,其算法就退化为传统的LRU算法,并没有考虑脏页的访问频度,可能将冷脏页驻留在有限的缓存空间中。
通常来说,当用户读写I/O访问固态盘的存储单元时,如果该存储单元中存在垃圾回收操作,用户读写操作就会与垃圾回收操作的的有效数据页重写操作竞争资源,造成用户读写操作延迟至垃圾回收结束,读新写请求响应被延长,造成固态盘的性能抖动。
垃圾回收操作引起的写性能抖动问题严重影响了用户响应时间。当性能抖动发生时,将会产生“性能毛刺”现象,使得用户读新写请求无法及时响应,延迟较长,大大降低用户的使用体验,在一些实时交易类等实时性要求较高的***中,这种性能抖动带来的危害将会更大。
为了降低用户请求的响应时间,降低性能抖动,现有的方式主要是通过缓存活跃数据,只有当缓存空间不足时才将部分缓存的数据写回闪存,从而使得用户读新写请求尽可能在读写速度更快的缓存中得到响应。但是,这些方式在写回缓存数据时,并没有考虑都此时其写回的存储单元是否正在进行垃圾回收操作,如果该存储单元正在进行垃圾回收,就可能造成垃圾回收操作内部数据重写与写回数据请求之间争用总线的情况,从而使得写回数据请求必须等到垃圾回收结束后才能被响应,大大延长了写回数据请求的响应时间,产生性能抖动情况。
基于上述现有技术中存在的缓存缺陷,本发明提出了一种降低固态盘存储***写性能抖动的缓存方法及***,如图1-图5所示,图1-图5为本实施方式提出了一种降低固态盘存储***写性能抖动的缓存方法及***。
参照图1,本发明提出的降低固态盘存储***写性能抖动的缓存方法,包括以下步骤:
S1、在新写请求到达缓存***时,将该新写请求数据存储至匹配的缓存簇;
本实施方式中,逻辑地址与物理地址之间采用页级映射方式,并与缓存簇和闪存内数据块的数据组织方式相结合;缓存以数据块为单位按照聚簇的方式进行存储和管理,其中簇的大小与闪存存储单元内数据块的大小相同。缓存中每个空闲数据块被分配并以簇的方式存储特定LPN(logical page number)范围内的数据页,该数据块所能存储的LPN范围取决于首次分配到该数据块内的数据页的LPN地址。通过聚簇的形式,使数据页的存储分布变得相对有序,在缓存中,能够更好地利用目标指纹库将缓存中更新数据页较多的簇写回到闪存存储单元中,从而有效提高闪存存储单元中垃圾回收效率。例如,假设SSD每个数据块中最多能存放64个数据页,则逻辑页地址(LPN)在0~63之间的数据页将会存储到同一个数据块中,逻辑页地址(LPN)在64~127之间的数据页会存储到同一个数据块中。
本实施方式中,步骤S1具体包括:
在新写请求到达缓存***时,根据新写请求的数据页地址在缓存***中查找是否有存储数据页地址范围包含该新写请求数据页地址的缓存簇,若有,将该新写请求数据存储至该缓存簇中,若没有,在缓存***中申请一个缓存空间形成缓存簇,且将该新写请求数据存储至该缓存簇中,并在目标指纹库中构建一个目标指纹库单元,且将上述缓存簇对应的闪存数据块中所有数据页指纹信息存储至上述目标指纹库单元。
S2、基于该新写请求数据生成指纹信息,且将所述指纹信息与目标指纹库进行匹配,并根据匹配结果判断本次新写请求的操作类型;
步骤S2中,所述目标指纹库包括多个目标指纹库单元,每一个目标指纹库单元内存储有闪存中一个闪存数据块包含的所有数据页的指纹信息。
步骤S2具体包括:
基于该新写请求数据生成指纹信息,并将所述指纹信息与目标指纹库进行匹配,若在目标指纹库中没有找到与该新写请求相同逻辑地址数据页的指纹信息,判定本次新写请求为新写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配成功,判定本次新写请求为重复写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配不成功,判定本次新写请求为更新操作。
S3、根据本次新写请求的操作类型选择该新写请求数据在写回闪存时的处理方式。
步骤S3具体包括:
根据本次新写请求的操作类型选择该新写请求数据在其所在缓存簇写回闪存时的处理方式:
当本次新写请求为新写操作时,在其所在缓存簇写回闪存时,将该新写请求数据随其所在的缓存簇一并写回闪存;当本次新写请求为重复写操作时,在其所在的缓存簇写回闪存时丢弃该新写请求数据;当本次新写请求为更新操作时,将与该新写请求数据所在的缓存簇的更新数据页标志位加一,并将该新写请求数据页对应的原闪存数据页置为无效状态,当其所在缓存簇的更新数据页标志位大于预设阈值时,将该新写请求数据随其所在的缓存簇一并写回闪存。
以下结合图3、图4、图5,给出一个具体实施例对上述方法进行阐述:
假设LPN=P0的新写请求到达缓存***,根据聚簇的缓存数据组织形式,LPN=P0的新写请求应该存储到缓存簇1中,因此首先需要检查缓存中是否存在缓存簇1,以存储该LPN=P0的新写请求数据页;
若存在缓存簇1,将LPN=P0的新写请求数据页写入缓存中的缓存簇1;
若不存在缓存簇1,则寻找空闲缓存簇,令该缓存簇的LBN=1,将LPN=P0的数据页存储到该缓存簇1中,并在目标指纹库中申请一块空闲空间分配给新生成的目标指纹库单元1,将缓存簇1对应的闪存数据块1生成指纹信息存入目标指纹库单元1;
通过目标指纹库中的目标指纹库单元1相应内容字段是否为空,判断闪存的闪存数据块1中是否存在LPN=P0的数据页,如果存在则对该数据页的指纹信息进行匹配。(具体来说就是对LPN=P0的新写请求内容字段经过与目标指纹库同样的字符串压缩算法,得到LPN=P0的新写请求内容指纹为0001,将该内容指纹信息与目标指纹库单元1中LPN=P0的内容字段进行匹配);
若目标指纹库单元1中LPN=P0的内容字段不为空且匹配失败,则认为本次写操作为更新操作;当该缓存簇1数据页写回闪存后,将使闪存数据块1中LPN=P0的数据页失效;因此每次更新操作都需要统计,如果此时缓存簇1中更新数据页大于预设阈值,则将该缓存簇1所有数据页写回闪存内空闲闪存数据块1′中,然后通过数据重写方式将闪存中原LBN=1的闪存数据块1中有效页写入相同的空闲闪存数据块1′,将原来的闪存数据块1所有页置为无效,加入到垃圾回收队列中,等待执行垃圾回收操作。
通过上述操作,能够将有效数据页复制(重写)操作提前至簇写回闪存后完成,从而将垃圾回收时间减少为一次擦除的时间,降低了垃圾回收操作的时间,进一步减少了垃圾回收过程中重写操作与外部新写请求争用总线冲突的可能。由于板载内存空间有限,无法将闪存内所有数据块目标指纹库信息都存入到缓存中,因此我们以缓存中存储的簇为对象,提取闪存中与该簇的逻辑块号相同的闪存数据页指纹信息存储到目标指纹库中,当有数据页写入缓存时,就可以判断出本次用户新写请求是否会使闪存存储单元内相应数据页“过时”。此外,当缓存中有簇写回闪存时,该簇所对应的闪存数据块的指纹信息将会从目标指纹库中移除。
参照图2,图2为本发明提出的降低固态盘存储***写性能抖动的缓存***,包括:
信息存储模块,用于在新写请求到达缓存***时,将该新写请求数据存储至匹配的缓存簇;
本实施方式中,逻辑地址与物理地址之间采用页级映射方式,并与缓存簇和闪存内数据块的数据组织方式相结合;缓存以数据块为单位按照聚簇的方式进行存储和管理,其中簇的大小与闪存存储单元内数据块的大小相同。缓存中每个空闲数据块被分配并以簇的方式存储特定LPN(logical page number)范围内的数据页,该数据块所能存储的LPN范围取决于首次分配到该数据块内的数据页的LPN地址。通过聚簇的形式,使数据页的存储分布变得相对有序,在缓存中,能够更好地利用目标指纹库将缓存中更新数据页较多的簇写回到闪存存储单元中,从而有效提高闪存存储单元中垃圾回收效率。例如,假设SSD每个数据块中最多能存放64个数据页,则逻辑页地址(LPN)在0~63之间的数据页将会存储到同一个数据块中,逻辑页地址(LPN)在64~127之间的数据页会存储到同一个数据块中。
本实施方式中,所述信息存储模块具体用于:
在新写请求到达缓存***时,根据新写请求的数据页地址在缓存***中查找是否有存储数据页地址范围包含该新写请求数据页地址的缓存簇,若有,将该新写请求数据存储至该缓存簇中,若没有,在缓存***中申请一个缓存空间形成缓存簇,且将该新写请求数据存储至该缓存簇中,并在目标指纹库中构建一个目标指纹库单元,且将上述缓存簇对应的闪存数据块中所有数据页指纹信息存储至上述目标指纹库单元。
信息匹配模块,用于基于该新写请求数据生成指纹信息,且将所述指纹信息与目标指纹库进行匹配,并根据匹配结果判断本次新写请求的操作类型;
所述信息匹配模块中,所述目标指纹库包括多个目标指纹库单元,每一个目标指纹库单元内存储有闪存中一个闪存数据块包含的所有数据页的指纹信息。
本实施方式中,所述信息匹配模块具体用于:
基于该新写请求数据生成指纹信息,并将所述指纹信息与目标指纹库进行匹配,若在目标指纹库中没有找到与该新写请求相同逻辑地址数据页的指纹信息,判定本次新写请求为新写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配成功,判定本次新写请求为重复写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配不成功,判定本次新写请求为更新操作。
动态操作模块,用于根据本次新写请求的操作类型选择该新写请求数据在其所在缓存簇写回闪存时的处理方式。
本实施方式中,所述动态操作模块具体用于:
根据本次新写请求的操作类型选择该新写请求数据在其所在缓存簇写回闪存时的处理方式:
当本次新写请求为新写操作时,在其所在缓存簇写回闪存时,将该新写请求数据随其所在的缓存簇一并写回闪存;当本次新写请求为重复写操作时,在其所在的缓存簇写回闪存时丢弃该新写请求数据;当本次新写请求为更新操作时,将与该新写请求数据所在的缓存簇的更新数据页标志位加一,并将该新写请求数据页对应的原闪存数据页置为无效状态,当其所在缓存簇的更新数据页标志位大于预设阈值时,将该新写请求数据随其所在的缓存簇一并写回闪存。
以下结合图3、图4、图5,给出一个具体实施例对上述方法进行阐述:
假设LPN=P0的新写请求到达缓存***,根据聚簇的缓存数据组织形式,LPN=P0的新写请求应该存储到缓存簇1中,因此首先需要检查缓存中是否存在缓存簇1,以存储该LPN=P0的新写请求数据页;
若存在缓存簇1,将LPN=P0的新写请求数据页写入缓存中的缓存簇1;
若不存在缓存簇1,则寻找空闲缓存簇,令该缓存簇的LBN=1,将LPN=P0的数据页存储到该缓存簇1中,并在目标指纹库中申请一块空闲空间分配给新生成的目标指纹库单元1,将缓存簇1对应的闪存数据块1生成指纹信息存入目标指纹库单元1;
通过目标指纹库中的目标指纹库单元1相应内容字段是否为空,判断闪存的闪存数据块1中是否存在LPN=P0的数据页,如果存在则对该数据页的指纹信息进行匹配。(具体来说就是对LPN=P0的新写请求内容字段经过与目标指纹库同样的字符串压缩算法,得到LPN=P0的新写请求内容指纹为0001,将该内容指纹信息与目标指纹库单元1中LPN=P0的内容字段进行匹配);
若目标指纹库单元1中LPN=P0的内容字段不为空且匹配失败,则认为本次写操作为更新操作;当该缓存簇1数据页写回闪存后,将使闪存数据块1中LPN=P0的数据页失效;因此每次更新操作都需要统计,如果此时缓存簇1中更新数据页大于预设阈值,则将该缓存簇1所有数据页写回闪存内空闲闪存数据块1′中,然后通过数据重写方式将闪存中原LBN=1的闪存数据块1中有效页写入相同的空闲闪存数据块1′,将原来的闪存数据块1所有页置为无效,加入到垃圾回收队列中,等待执行垃圾回收操作。
本实施方式提出的缓存管理策略,其通过在聚簇的数据组织形式基础上,设计了一种为缓存和闪存提供“更新”语义交互的指纹库技术,尽可能的选择活跃度较低且写回闪存后能产生更多无效数据页的簇写回闪存空间,从而减少了垃圾回收次数,有效降低了由于垃圾回收操作可能存在的争用总线冲突引起写性能抖动,避免用户请求响应延迟过大问题,提高了垃圾回收效率,减少了写放大。
本实施方式提出的降低固态盘存储***写性能抖动的缓存方法,其缓存策略在以聚簇的形式组织数据的基础上,设计了面向写/更新操作的指纹库,实现了缓存与闪存存储之间语义交互的桥梁。利用指纹库中每一个指纹库单元中存储的指纹信息来检测每次写入缓存空间内I/O用户请求是否为更新操作,让***实时感知缓存簇所对应的闪存存储单元内数据块中无效页数是否达到阈值,当不活跃簇内更新数据页的数量达到阈值时,将该簇写回闪存;当原数据块所在存储单元空闲时,对原数据块执行垃圾回收,提高缓存空间利用率的同时,降低缓存与闪存之间频繁更新操作产生的大量无效数据页,减少了垃圾回收操作,从而尽可能降低了由于垃圾回收操作的有效数据页重写与外部新写请求争用总线冲突,降低固态盘写性能抖动。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (4)
1.一种降低固态盘存储***写性能抖动的缓存方法,其特征在于,包括以下步骤:
S1、在新写请求到达缓存***时,将该新写请求数据存储至匹配的缓存簇;
S2、基于该新写请求数据生成指纹信息,且将所述指纹信息与目标指纹库进行匹配,并根据匹配结果判断本次新写请求的操作类型;
S3、根据本次新写请求的操作类型选择该新写请求数据在其所在缓存簇写回闪存时的处理方式;
步骤S2中,所述目标指纹库包括多个目标指纹库单元,每一个目标指纹库单元内存储有闪存中一个闪存数据块包含的所有数据页的指纹信息;
步骤S2具体包括:
基于该新写请求数据生成指纹信息,并将所述指纹信息与目标指纹库进行匹配,若在目标指纹库中没有找到与该新写请求相同逻辑地址数据页的指纹信息,判定本次新写请求为新写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配成功,判定本次新写请求为重复写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配不成功,判定本次新写请求为更新操作;
步骤S3具体包括:
根据本次新写请求的操作类型选择该新写请求数据在其所在缓存簇写回闪存时的处理方式:
当本次新写请求为新写操作时,在其所在缓存簇写回闪存时,将该新写请求数据随其所在的缓存簇一并写回闪存;当本次新写请求为重复写操作时,在其所在的缓存簇写回闪存时丢弃该新写请求数据;当本次新写请求为更新操作时,将与该新写请求数据所在的缓存簇的更新数据页标志位加一,并将该新写请求数据页对应的原闪存数据页置为无效状态,当其所在缓存簇的更新数据页标志位大于预设阈值时,将该新写请求数据随其所在的缓存簇一并写回闪存。
2.根据权利要求1所述的降低固态盘存储***写性能抖动的缓存方法,其特征在于,步骤S1具体包括:
在新写请求到达缓存***时,根据新写请求的数据页地址在缓存***中查找是否有存储数据页地址范围包含该新写请求数据页地址的缓存簇,若有,将该新写请求数据存储至该缓存簇中,若没有,在缓存***中申请一个缓存空间形成缓存簇,且将该新写请求数据存储至该缓存簇中,并在目标指纹库中构建一个目标指纹库单元,且将上述缓存簇对应的闪存数据块中所有数据页指纹信息存储至上述目标指纹库单元。
3.一种降低固态盘存储***写性能抖动的缓存***,其特征在于,包括:
信息存储模块,用于在新写请求到达缓存***时,将该新写请求数据存储至匹配的缓存簇;
信息匹配模块,用于基于该新写请求数据生成指纹信息,且将所述指纹信息与目标指纹库进行匹配,并根据匹配结果判断本次新写请求的操作类型;
动态操作模块,用于根据本次新写请求的操作类型选择该新写请求数据在其所在缓存簇写回闪存时的处理方式;
所述信息匹配模块中,所述目标指纹库包括多个目标指纹库单元,每一个目标指纹库单元内存储有闪存中一个闪存数据块包含的所有数据页的指纹信息;
所述信息匹配模块具体用于:
基于该新写请求数据生成指纹信息,并将所述指纹信息与目标指纹库进行匹配,若在目标指纹库中没有找到与该新写请求相同逻辑地址数据页的指纹信息,判定本次新写请求为新写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配成功,判定本次新写请求为重复写操作,若在目标指纹库中找到与该新写请求相同逻辑地址数据页的指纹信息且两者内容字段指纹信息匹配不成功,判定本次新写请求为更新操作;
所述动态操作模块具体用于:
根据本次新写请求的操作类型选择该新写请求数据在其所在缓存簇写回闪存时的处理方式:
当本次新写请求为新写操作时,在其所在缓存簇写回闪存时,将该新写请求数据随其所在的缓存簇一并写回闪存;当本次新写请求为重复写操作时,在其所在的缓存簇写回闪存时丢弃该新写请求数据;当本次新写请求为更新操作时,将与该新写请求数据所在的缓存簇的更新数据页标志位加一,并将该新写请求数据页对应的原闪存数据页置为无效状态,当其所在缓存簇的更新数据页标志位大于预设阈值时,将该新写请求数据随其所在的缓存簇一并写回闪存。
4.根据权利要求3所述的降低固态盘存储***写性能抖动的缓存***,其特征在于,所述信息存储模块具体用于:
在新写请求到达缓存***时,根据新写请求的数据页地址在缓存***中查找是否有存储数据页地址范围包含该新写请求数据页地址的缓存簇,若有,将该新写请求数据存储至该缓存簇中,若没有,在缓存***中申请一个缓存空间形成缓存簇,且将该新写请求数据存储至该缓存簇中,并在目标指纹库中构建一个目标指纹库单元,且将上述缓存簇对应的闪存数据块中所有数据页指纹信息存储至上述目标指纹库单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810294987.0A CN108664217B (zh) | 2018-04-04 | 2018-04-04 | 一种降低固态盘存储***写性能抖动的缓存方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810294987.0A CN108664217B (zh) | 2018-04-04 | 2018-04-04 | 一种降低固态盘存储***写性能抖动的缓存方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108664217A CN108664217A (zh) | 2018-10-16 |
CN108664217B true CN108664217B (zh) | 2021-07-13 |
Family
ID=63783079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810294987.0A Active CN108664217B (zh) | 2018-04-04 | 2018-04-04 | 一种降低固态盘存储***写性能抖动的缓存方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108664217B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491620B (zh) * | 2018-11-23 | 2020-08-14 | 柏科数据技术(深圳)股份有限公司 | 存储数据重写方法、装置、服务器及存储介质 |
CN111857578A (zh) * | 2020-06-30 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种数据信息的读写方法、装置、设备及存储介质 |
CN113485649B (zh) * | 2021-07-23 | 2023-03-24 | 天翼云科技有限公司 | 数据存储方法、***、装置、介质与电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102646069A (zh) * | 2012-02-23 | 2012-08-22 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
CN103049397A (zh) * | 2012-12-20 | 2013-04-17 | 中国科学院上海微***与信息技术研究所 | 一种基于新型存储器的固态硬盘内部缓存管理方法及*** |
CN103678158A (zh) * | 2013-12-26 | 2014-03-26 | 中国科学院信息工程研究所 | 一种数据布局优化方法及*** |
CN106293525A (zh) * | 2016-08-05 | 2017-01-04 | 上海交通大学 | 一种提高缓存使用效率的方法及*** |
CN106445413A (zh) * | 2012-12-12 | 2017-02-22 | 华为技术有限公司 | 集群***中数据处理方法及装置 |
CN106599146A (zh) * | 2016-12-06 | 2017-04-26 | 腾讯科技(深圳)有限公司 | 缓存页面处理、缓存页面更新请求处理方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9690706B2 (en) * | 2015-03-25 | 2017-06-27 | Intel Corporation | Changing cache ownership in clustered multiprocessor |
US10089228B2 (en) * | 2016-05-09 | 2018-10-02 | Dell Products L.P. | I/O blender countermeasures |
-
2018
- 2018-04-04 CN CN201810294987.0A patent/CN108664217B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102646069A (zh) * | 2012-02-23 | 2012-08-22 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
CN106445413A (zh) * | 2012-12-12 | 2017-02-22 | 华为技术有限公司 | 集群***中数据处理方法及装置 |
CN103049397A (zh) * | 2012-12-20 | 2013-04-17 | 中国科学院上海微***与信息技术研究所 | 一种基于新型存储器的固态硬盘内部缓存管理方法及*** |
CN103678158A (zh) * | 2013-12-26 | 2014-03-26 | 中国科学院信息工程研究所 | 一种数据布局优化方法及*** |
CN106293525A (zh) * | 2016-08-05 | 2017-01-04 | 上海交通大学 | 一种提高缓存使用效率的方法及*** |
CN106599146A (zh) * | 2016-12-06 | 2017-04-26 | 腾讯科技(深圳)有限公司 | 缓存页面处理、缓存页面更新请求处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
Exploring SSD Endurance Model based on Write Amplification and Temperature;Hui Sun et al.;《 2016 Seventh International Green and Sustainable Computing Conference (IGSC). IEEE Computer Society, 2017》;20170406;1-5 * |
Also Published As
Publication number | Publication date |
---|---|
CN108664217A (zh) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107066393B (zh) | 提高地址映射表中映射信息密度的方法 | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
US8935484B2 (en) | Write-absorbing buffer for non-volatile memory | |
US9342458B2 (en) | Cache allocation in a computerized system | |
US20180121351A1 (en) | Storage system, storage management apparatus, storage device, hybrid storage apparatus, and storage management method | |
US9489239B2 (en) | Systems and methods to manage tiered cache data storage | |
US20070094445A1 (en) | Method to enable fast disk caching and efficient operations on solid state disks | |
CN105930282B (zh) | 一种用于nand flash的数据缓存方法 | |
CN103885728A (zh) | 一种基于固态盘的磁盘缓存*** | |
US8572321B2 (en) | Apparatus and method for segmented cache utilization | |
CN110968269A (zh) | 基于scm与ssd的键值存储***及读写请求处理方法 | |
CN108664217B (zh) | 一种降低固态盘存储***写性能抖动的缓存方法及*** | |
CN110674056B (zh) | 一种垃圾回收方法及装置 | |
CN113254358A (zh) | 用于地址表高速缓存管理的方法和*** | |
CN114185492B (zh) | 一种基于强化学习的固态硬盘垃圾回收方法 | |
KR101026634B1 (ko) | 하이브리드 플래시 메모리의 데이터 저장 방법 | |
CN102650972A (zh) | 数据存储方法、装置及*** | |
CN110968527B (zh) | Ftl提供的缓存 | |
US6324633B1 (en) | Division of memory into non-binary sized cache and non-cache areas | |
CN112148639A (zh) | 一种高效小容量高速缓冲存储器替换方法及*** | |
CN114115711B (zh) | 基于非易失内存文件***的快速缓存*** | |
CN112559384B (zh) | 一种基于非易失存储器的混合固态盘动态分区方法 | |
CN114610654A (zh) | 一种固态存储设备以及向其写入数据的方法 | |
CN111796757B (zh) | 一种固态硬盘缓存区管理方法和装置 | |
Kwon et al. | Fast responsive flash translation layer for smart devices |
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 |