CN112835534A - 一种基于存储阵列数据访问的垃圾回收优化方法及装置 - Google Patents
一种基于存储阵列数据访问的垃圾回收优化方法及装置 Download PDFInfo
- Publication number
- CN112835534A CN112835534A CN202110220806.1A CN202110220806A CN112835534A CN 112835534 A CN112835534 A CN 112835534A CN 202110220806 A CN202110220806 A CN 202110220806A CN 112835534 A CN112835534 A CN 112835534A
- Authority
- CN
- China
- Prior art keywords
- data
- access request
- data access
- queue
- accessed
- 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
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
- G06F3/064—Management of blocks
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
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 (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种基于存储阵列数据访问的垃圾回收优化方法及装置,该方法包括:根据请求来源和预设的数据冷热分类算法对接收的数据访问请求进行分类判别,得到对应的分类信息;根据分类信息调用缓存队列算法对数据访问请求进行缓存判断,以加入至对应分类的目标缓存队列中;若目标缓存队列中的待访问数据达到预设标准阈值,则根据地址映射表将待访问数据以条带为单位写入至对应的目标节点中;若所述存储阵列中没有可写入的存储空间或者工作队列中的空白节点小于预设数量,则采用延时删除无效数据的垃圾回收机制进行数据回收。通过实施本申请,能够解决现有技术中存在的存储阵列写放大问题及引起严重的IO问题等。
Description
技术领域
本申请涉及固态盘存储技术领域,特别是涉及一种基于存储阵列数据访问的垃圾回收优化方法及装置。
背景技术
固态盘存储阵列(以下简称为固态盘阵列)作为高性能的冗余阵列已经在当今时代广泛的应用。固态盘阵列相对于直接使用多个盘,能有效提升其工作性能,使用固态硬盘组成冗余阵列理论上会带来相乘的性能提升。但由于冗余阵列技术提出的时代限制,其工作特性更契合机械硬盘。因为固态硬盘在接口和操作上兼容于传统的机械硬盘,可直接将其按照传统的阵列方案来组织,但其新能提升效果不足,不能达到传统磁盘的提升效果。例如,固态硬盘由于其数据块擦除特性,引入了垃圾回收机制,会带来写放大问题;冗余阵列每次进行数据写入时,都需要进行校验位的重新计算,也存在着额外的写放大问题。而固态盘阵列则同时存在这两种写放大问题,其相互叠加,使得额外的IO问题更加严重。
发明内容
为克服上述现有技术存在的不足,本申请之目的在于提供一种基于存储阵列数据访问的垃圾回收优化方法及装置,能够解决现有技术中存在的存储阵列写放大问题及引起严重的IO问题等。
为达上述及其它目的,本申请提出一种基于存储阵列数据访问的垃圾回收优化方法,包括如下步骤:
步骤S1:根据请求来源和预设的数据冷热分类算法对接收的数据访问请求进行分类判别,得到所述数据访问请求的分类信息;所述数据访问请求用于请求对待访问数据的访问;
步骤S2:根据所述数据访问请求的分类信息,调用缓存队列算法对所述数据访问请求进行缓存判断,以将所述数据访问请求加入至对应分类的目标缓存队列中;
步骤S3:若所述目标缓存队列中的待访问数据达到预设标准阈值,则根据地址映射表中所述待访问数据的逻辑地址与物理地址之间的映射关系,将所述待访问数据以条带为单位写入至所述存储阵列中与所述物理地址相对应的目标节点中;
步骤S4:若所述存储阵列中没有可写入的存储空间或者工作队列中的空白节点小于预设数量,则采用延时删除无效数据的垃圾回收机制进行数据回收,其中所述存储阵列采用工作队列的结构进行存储空间的管理。
可选的,所述根据所述数据访问请求的分类信息,调用缓存队列算法对所述数据访问请求进行缓存判断,以将所述数据访问请求加入至对应分类的目标缓存队列中包括:
判断所述数据访问请求中的待访问数据是否已存在于初始缓存队列中;
若不存在,则直接将所述数据访问请求中的待访问数据加入至所述初始缓存队列中;
若存在,则判断所述数据访问请求的类型,若所述数据访问请求为内部写请求,则直接丢弃所述数据访问请求;若所述数据访问请求为外部访问请求,则判断所述数据访问请求对应的归属类型与所述初始缓存队列所属的分类类型是否相同,如果相同,则将所述数据访问请求中的待访问数据更新至所述初始缓存队列中;如果不相同,则将所述数据访问请求中的待访问数据更新至所述初始缓存队列中,并将所述初始缓存队列中的所述待访问数据迁移至与所述归属类型相同的目标缓存队列中。
可选的,所述工作队列将使用多个指针来标记所述工作队列中的工作节点,且使用一个额外指针指向空白节点;当所述工作队列中的任一工作节点写满后,将所述额外指针指向的空白节点分配给所述任一工作节点,并将所述额外指针指向下一个空白节点。
可选的,所述采用延时删除无效数据的垃圾回收机制进行数据回收包括:
采用贪婪算法从所述工作队列中选取有效数据块最少的工作节点,作为受害节点;
为所述受害节点中的有效数据块生成对应的内部写请求,重复执行上述步骤S1-S3,在所述有效数据块全部迁移完毕后,将所述受害节点进行全部数据擦除,并将所述受害节点加到所述工作队列的末尾以等待下次数据的写入。
可选的,所述方法还包括:
当所述有效数据块多于所述目标节点的剩余存储空间,若此时再触发第二次垃圾回收,则先切换所述目标节点进行所述有效数据块的迁移,在迁移完毕后再执行所述第二次垃圾回收,以避免写入拥塞。
为达上述及其它目的,本申请还提出一种基于存储阵列数据访问的垃圾回收优化装置,包括:
判别模块,用于根据请求来源和预设的数据冷热分类算法对接收的数据访问请求进行分类判别,得到所述数据访问请求的分类信息;所述数据访问请求用于请求对待访问数据的访问;
缓存队列模块,用于根据所述数据访问请求的分类信息,调用缓存队列算法对所述数据访问请求进行缓存判断,以将所述数据访问请求加入至对应分类的目标缓存队列中;若所述目标缓存队列中的待访问数据达到预设标准阈值,则将所述待访问数据以条带为单位发送给编码模块;
编码模块,用于根据地址映射表中所述待访问数据的逻辑地址与物理地址之间的映射关系,将所述待访问数据以条带为单位写入至所述存储阵列中与所述物理地址相对应的目标节点中;
垃圾回收模块,用于若所述存储阵列中没有可写入的存储空间或者工作队列中的空白节点小于预设数量,则采用延时删除无效数据的垃圾回收机制进行数据回收,其中所述存储阵列采用工作队列的结构进行存储空间的管理。
可选的,所述缓存队列模块具体用于:
判断所述数据访问请求中的待访问数据是否已存在于初始缓存队列中;
若不存在,则直接将所述数据访问请求中的待访问数据加入至所述初始缓存队列中;
若存在,则判断所述数据访问请求的类型,若所述数据访问请求为内部写请求,则直接丢弃所述数据访问请求;若所述数据访问请求为外部访问请求,则判断所述数据访问请求对应的归属类型与所述初始缓存队列所属的分类类型是否相同,如果相同,则将所述数据访问请求中的待访问数据更新至所述初始缓存队列中;如果不相同,则将所述数据访问请求中的待访问数据更新至所述初始缓存队列中,并将所述初始缓存队列中的所述待访问数据迁移至与所述归属类型相同的目标缓存队列中。
可选的,所述工作队列将使用多个指针来标记所述工作队列中的工作节点,且使用一个额外指针指向空白节点;当所述工作队列中的任一工作节点写满后,将所述额外指针指向的空白节点分配给所述任一工作节点,并将所述额外指针指向下一个空白节点。
可选的,所述垃圾回收模块具体用于:
采用贪婪算法从所述工作队列中选取有效数据块最少的工作节点,作为受害节点;
为所述受害节点中的有效数据块生成对应的内部写请求,重复执行上述判别模块、缓存队列模块及编码模块的操作,在所述有效数据块全部迁移完毕后,将所述受害节点进行全部数据擦除,并将所述受害节点加到所述工作队列的末尾以等待下次数据的写入。
可选的,所述垃圾回收模块还用于:
当所述有效数据块多于所述目标节点的剩余存储空间,若此时再触发第二次垃圾回收,则先切换所述目标节点进行所述有效数据块的迁移,在迁移完毕后再执行所述第二次垃圾回收,以避免写入拥塞。
由上可见本申请提供了一种基于存储阵列数据访问的垃圾回收优化方法及装置,能达到以下有益效果:本申请提出一种更稳定和精简的数据冷热分类方案,采用内外部数据写请求分离的方式,即可达到很好的减少数据写入量的效果,同时采用数据队列算法可以较为高效的命中访问较热的数据,即识别冷热数据的准确率较高;例如将数据的冷热程度分为三级,具体地将垃圾回收机制(算法)的数据标记为最冷数据,将缓存队列算法命中次数较多的数据标记为最热数据,将其他的系统请求涉及的数据默认标记为温数据等等。这样方案比较容易实现,只需增加相应地数据缓存队列来生成数据条带即可,这样可有效地提升数据块访问热度的识别准确率和稳定性,从而有效解决现有技术中存在的诸如存储阵列写放大以及IO严重等问题。
附图说明
图1是本申请实施例提供的一种存储阵列系统的结构示意图。
图2是本申请实施例提供的一种基于存储阵列数据访问的垃圾回收优化方法的流程示意图。
图3是本申请实施例提供的一种缓存队列算法的工作流程示意图。
图4是本申请实施例提供的一种工作队列的结构示意图。
图5是本申请实施例提供的一种工作节点的状态切换示意图。
图6是本申请实施例提供的一种基于存储阵列数据访问的垃圾回收优化装置的结构示意图。
具体实施方式
以下通过特定的具体实例并结合附图说明本申请的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本申请的其它优点与功效。本申请亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本申请的精神下进行各种修饰与变更。
申请人在提出本申请的过程中还发现:独立冗余磁盘阵列通过并行或者数据冗余的方式,提供数据稳定性或性能层次的提升。组成阵列时,有校验功能的冗余阵列会通过增加校验数据提供数据错误保护。虽然这是一种广泛使用的提高存储系统容错能力的方案,但由于每个校验位都是由多个用户数据计算得出的,因此每次更新用户数据时都需要更新校验数据,这就带来了大量的额外数据写入问题。此外,固态盘本身也存在着写放大的缺陷,两者叠加使得写放大问题更加严重。为解决上述问题,现有技术提出以下一系列方案:
ParityLogging(校验日志)提出了基于固态硬盘和机械硬盘混合架构的改进方案,其核心思想是以增加更新的方式更新奇偶校验块,并将校验块的增量更新追加写入到单独的日志存储设备(Hard Disk Drive,HDD)。ParityLogging采用混合架构,使用固态盘阵列存储用户数据和校验数据,使用HDD存储校验数据的更新日志,进而减轻了固态盘阵列因更新写数据产生的大量额外数据的负担。
EPlog(Elastic Parity Logging,弹性校验日志)则提出了进一步的提升方案,其改变了日志的生成方式,通过将不同固态硬盘的小写数据(具体指一个写请求中数据量较少的数据)进行缓存,再弹性选择数据组成新条带,计算校验块并更新增量日志。通过组合出条带写请求,其有效减少了校验块的更新日志数据量。RFPL(Recovery Friendly ParityLogging,恢复友好的校验日志方案)则进一步利用数据访问的不对称性(指数据访问频率的不同),将访问频率高的数据(过期较快)组合在一起,将访问频率较低的数据组合在一起,减少了新旧数据的混合,进而减小了写代价并提高了数据恢复时的工作性能。
RAFS(RAID-aware file system,阵列感知文件系统)提出了一种基于基于固态盘阵列结构和文件布局信息优化的文件系统。RAFS将文件系统空间划分为多个条带单元,以条带为空间分配单位。同时,利用现代文件系统的延时分配特性将特小的写入操作进行合并为统一的条带单元,进而减少了小写请求量。总而言之,RAFS设计了一个比较新的缓冲区数据管理策略,达成了数据的高效合并,有效地降低了部分条带写的问题。其通过改变文件系统的访问粒度,进一步地减少了固态盘阵列的写开销。
GC-steering(GC-aware request steering,垃圾回收感知的请求转向装置)则针对固态盘阵列因垃圾回收而阻塞的现象进行改进,阵列由多个磁盘组成,在理想情况下每个固态盘均处于非拥塞的正常工作状态。但实际上由于硬盘数量的增多,很可能会有硬盘处于垃圾回收状态。GC-steering则可以识别硬盘是否忙碌,并根据其状态有效地调整数据读取请求和写入请求,同增加专用的暂存空间(例如设置单独的硬盘)缓冲这些不能及时处理的操作,进而保证请求相应地及时性。此外,通过暂存空间的加速和相应地并行恢复策略,其还提高了阵列从故障状态恢复的速度。
eSAP(elastic Striping and Anywhere Parity,弹性条带校验方案)提出了一种针对全固态盘阵列的优化方案,具体可根据写入请求的到达顺序,动态地构建条带,并将校验块放在条带的任何位置。eSAP改变了传统的条带组织和生成方式,构建了一个新的地址转换表,使用转换后的地址构成条带。通过转换表的更新,将新写、更新写全部映射为顺序写入的新写,极大地减少了校验位的更新数量。不过这种方式需要保留旧数据,因此需要引入额外的GC(Garbage-Collection,垃圾回收)过程,来回收无效数据所占用的空间。WAS(Workload-Aware Elastic Striping,负载感知弹性条带方案)在此基础上,提出了GLRU(grouping-based least recently used,基于分组的最近最少使用算法)的热度感知方法,通过将不同热度的数据分配到不同的组,减少了垃圾回收的消耗。
然而在实践中发现,全闪存储阵列方案eSAP比较好地提升了整个阵列的工作性能,但该方案的延时删除策略引入了额外的垃圾回收过程。WAS通过热度感知算法GLRU减少了GC过程的额外开销,但其方案仍然存在着适用范围小、效果不稳定等问题。为解决上述问题,本申请提出一种基于存储阵列数据访问的垃圾回收优化方法及装置。具体地本申请设计了一个比较完整地固态盘阵列系统,其整体工作框架和工作原理如图1所示。
如图1,固态盘阵列系统分为两个大部分,阵列控制部分和固态阵列部分。其中,阵列控制部分主要包括判别模块101、缓存队列模块102、编码模块103以及垃圾回收模块104。其中:
判别模块101用于对系统收到的数据访问请求进行分类,并将分类后的数据访问请求发送给缓存队列模块102。缓存队列模块102中维护有多个不同分类级别的缓存队列,这些缓存队列的主要功能是接收来自判别模块101分类后的各个数据访问请求,并对数据访问请求中所需请求的各个待访问数据进行缓存以方便后续的编码。在缓存队列中的数据量达到了缓存设定的预设阈值后,将数据以条带为单位交给后续的编码模块103进行编码。相应地,编码模块103以条带为单位对各个待访问数据进行编码,并将其写入至固态盘阵列的相应磁盘中。当发现没有可用的写入空间时,编码模块103会通知垃圾回收模块104进行存储空间的回收操作。关于判别模块101、缓存队列模块102、编码模块103以及垃圾回收模块104中具体工作原理,将在本申请下文进行详述,这里不做叙述。
请参见图2,是本申请实施例提供的一种基于存储阵列数据访问的垃圾回收优化方法的流程示意图。如图2所示的方法包括如下实施步骤。
步骤S1、根据请求来源和预设的数据冷热分类算法对系统接收的数据访问请求进行分类判别,得到所述数据访问请求的分类信息。所述数据访问请求用于请求对待访问数据的访问。
本申请当系统接收到数据访问请求后,会先使用判别模块进行分类,具体地判别模块会根据请求的不同来源以及预设的冷热分类算法将数据访问请求中的待访问数据分配给不同分类级别的初始缓存队列。该冷热分类算法用于对数据的冷然级别进行分类,其可包括但不限于自适应缓存替换算法(Adjustable Replacement Cache,ARC)、基于分组的最近最少使用算法GLRU、或其他用于数据冷热级别分类的算法等。举例来说,可将数据的热度分为三个级别,如将垃圾回收算法所需回收的数据标记为最冷数据,将缓存队列算法命中次数较多的数据标记为最热数据,将其他的系统请求涉及的数据默认标记为温数据等等。
在可选实施例中,阵列控制模块还需管理比较重要的地址映射表。通过该地址映射表,可将数据访问请求中待访问数据的逻辑地址进行重映射,将其映射到存储阵列中可用的存储空间(也可称为地址空间)中。该地址映射表中除了管理有映射关系,也是数据条带的生成和写入、可用存储空间的探测以及垃圾回收算法的重要基础构建。该地址映射表的核心思想是将待访问数据(具体可指待写入数据)映射到新地址而不是在原地址进行数据更新,同时引入新的条带管理方案。随着数据的写入,数据逻辑地址到物理地址之间的映射关系在不断变化,因此本申请在实现时增加额外的地址映射表来记录不断变化的映射关系。此外,本申请还需在映射关系中增加额外的状态标记位,用于标记数据的状态,例如有效数据、无效数据或空白数据等。
在实际应用中,由于存储阵列层次的数据块单位比较大,实际相对于容量为1TB的存储阵列而言,其数据块的数据量级只在几兆或几十兆的数据级别。因此该地址映射表的条目数量并不多,开销是可以接受的。
本申请涉及的数据访问请求具体可包括但不限于数据读取请求、数据写入请求、或者数据读写请求等。若数据访问请求为数据读取请求时,则待访问数据为待读取数据;若数据访问请求为数据写入请求时,则待访问数据为待写入数据。
步骤S2、根据所述数据访问请求的分类信息,调用缓存队列算法对所述数据访问请求进行缓存判断,以将所述数据访问请求中的待访问数据加入至对应分类的目标缓存队列中。
缓存队列模块的主要功能是接收判别模块分类后的数据访问请求中的各待访问数据,并对其进行缓存以方便后续的编码。缓存队列模块是系统设计中比较复杂的一部分,其工作流程示意图具体如图3所示。本申请下文以数据访问请求为数据写入请求进行相关内容阐述,但并不构成限定。
如图3,当接收到数据写入请求后,缓存队列模块将调用缓存队列算法先将该数据写入请求所请求的待写入数据的逻辑地址与初始缓存队列中的已有数据进行对比,若没有命中缓存(即数据没有在初始缓存队列),则只需要将待写入数据直接加入其相应地缓存队列中即可。若在初始缓存队列中找到了该待写入数据,则先判断数据写入请求的类型,若该数据写入请求为内部写请求,则该待写入数据一定是由垃圾回收算法所需回收的数据,这说明了初始缓存队列中的数据版本要新于当前的待写入数据,因此可以直接将数据写入请求中的待写入数据丢弃。若数据写入请求为外部写请求(产生的),则说明待写入数据的版本比较新,则可以接受本次数据写入请求的处理,之后可对待写入数据进行更新。具体实现时,若待写入数据命中的初始缓存队列对应的归属类型与当前待写入数据的分类类型相同,则可直接对初始缓存队列中待写入数据的逻辑地址对应的数据进行更新,即直接更新缓存。但如果不相同,除了要对初始缓存队列中的数据进行更新外,还要将待写入数据迁移至与待写入数据的分类类型相同类型的目标缓存队列中,进而进行下一步的判断。无论待写入数据是由于未命中初始缓存队列或是进行了数据转移(迁移)操作,都相当于增加了缓存队列中的数据量,因此需进一步判断缓存队列中数据量是否达到了缓存设定的预设标准阈值,若达到了阈值,则需将缓存队列中的待写入数据以条带为单位交给后续的编码模块进行编码。
S3、若所述目标缓存队列中的待访问数据达到预设标准阈值,则根据地址映射表中所述待访问数据的逻辑地址与物理地址之间的映射关系,将所述待访问数据以条带为单位写入所述存储阵列中与所述物理地址相对于的目标节点中。
编码模块接收以条带为单位的待写入数据后,会执行校验数据的计算、条带的生成以及地址映射的更新等操作。最终将这些待写入数据以条带的方式写入至存储阵列的相应工作节点中。
在本申请涉及的存储阵列系统中,采用工作队列的结构来进行存储空间的管理(即地址管理)。如图4示出一种工作队列的结构示意图。如图4,工作队列包括多个工作节点,每个工作节点包括至少一个条带,每个条带包括有多个数据块。图示中灰色矩形表示写入的有效数据;黑色矩形表示写入过但因为新写入而失效的数据,简称失效数据;空白矩形表示未被写入过的块。因为本申请需要应对多种类型数据的写入,且还需比较频繁第对节点状态进行切换,因此本申请的工作队列使用了双向队列来实现。同时,本申请还使用多个指针来标记工作节点,并使用一个额外的指针(Next)指向空白节点的头部。当某一工作节点写满时,例如图所示的Type1工作节点写满时,会将Next指针指向的空白节点分配给Type1工作节点,并将Next指针指向其下一个工作节点。
S4、若所述存储阵列中没有可写入的存储空间,或者工作队列中的空白节点数量小于预设数量,则采用延时删除无效数据的垃圾回收机制进行数据回收。
本申请所涉及的存储阵列系统中,垃圾回收模块整体采用的是延时删除无效数据的方法,将回收单元的大小固定为256个条带,这是一个大小比较适中的参数。本申请选用了贪婪算法选取有用(有效)数据块最少的回收单元进行数据回收,该算法容易实现、性能表现更加稳定,同时也是最契合用于数据冷热分类的目的。
本申请在确定存储阵列中无可用的存储空间,或者在任一工作节点写满后发现当前工作队列中的空白节点少于设定的预设数量标准,则会触发垃圾回收过程。具体地,垃圾回收算法(模块)使用贪婪算法从工作队列中选取有效数据最少的工作节点作为受害节点。选定好受害节点后,需为受害节点中的有效数据生成其对应的内部写请求,该内部写请求用于请求将受害节点中的有效数据迁移至工作队列的其他节点中。进一步可重复执行上述步骤S1-S3,将受害节点的全部有效数据搬运迁移至其对应分类的工作节点中。在将受害节点的全部有效数据迁移完毕后,可进一步将受害节点的全部数据进行擦除,并将擦除后的受害节点(即空白节点)加入到工作队列的末尾以等待下一次的数据写入。
举例来说,请参见图5示出一种工作队列的垃圾回收工作流程示意图。引用全文图4所示例子,如图5系统在接收到新的数据块写入图4所示的Type1工作节点时,因为该Type1节点已经被写满了无法再写入数据,所以按照前文图4所述方法对Type1工作节点进行切换。当新的存储空间被分配好后,会立即将数据写入到切换后Type1工作节点的空白块中。节点写满之后,垃圾回收算法会检测当前工作队列的空白节点数量是否小于设定的预设数量标准,若少于,则会触发垃圾回收过程。
具体地,垃圾回收算法使用贪婪策略选择工作队列中有效数据块最少的工作节点为受害节点。选定还受害节点后,本申请需要将其中的有效数据搬运迁移,实际系统工作时会生成对应的内部写请求,将有效数据传给判别模块、再经过缓存队列模块等结构才会写回。假设这里有效数据经过其他模块的处理,被分类为0类别,因此可将有效数据写回至Type0工作节点。最后将受害节点的全部数据擦除,并将其加入到工作队列的末尾以等待下次写入。
上述例子中分析了比较理想的垃圾回收算法的工作流程。但在实际垃圾回收时还有其他问题,例如当触发垃圾回收时,如果受害节点的有效数据块过多或者回收数据将会被写入的Type0工作节点可用存储空间比较少,将会出现数据将无法被全部写入当前工作的Type0节点。这时候很可能会触发第二次垃圾回收,此时本申请则通过先切换当前工作节点,写入有效数据再触发第二次垃圾回收操作。即使触发了第二次数据回收,由于之前已经完成了一次有效数据的写入,并且当前写指针和可用工作节点的指针的切换已经持久化,所以每次内部写请求的处理都和正常情况是相同的,节点能够保持正常工作。除此之外,从理论上分析理解到,从受害节点回收的有效数据量不可能多于一个工作节点的容量,而第二次触发垃圾回收时这两个工作节点均已经切换到新节点,容量足够满足本次垃圾回收的数据写入需求。因此垃圾回收最多会被连续触发两次,不会引发更多的连锁反应。这样本申请方案能较好地避免写入过程拥塞的发生,此外每次数据回收的数据量也在可控范围内。
通过实施本申请实施例,本申请提出一种更稳定和精简的数据冷热分类方案,采用内外部数据写请求分离的方式,即可达到很好的减少数据写入量的效果,同时采用数据队列算法可以较为高效的命中访问较热的数据,即识别冷热数据的准确率较高;例如将数据的冷热程度分为三级,具体地将垃圾回收机制(算法)的数据标记为最冷数据,将缓存队列算法命中次数较多的数据标记为最热数据,将其他的系统请求涉及的数据默认标记为温数据等等。这样方案比较容易实现,只需增加相应地数据缓存队列来生成数据条带即可,这样可有效地提升数据块访问热度的识别准确率和稳定性,从而有效解决现有技术中存在的诸如存储阵列写放大以及IO严重等问题。
请参见图6,是本申请实施例提供的一种基于存储阵列数据访问的垃圾回收优化装置的结构示意图。如图6所示的装置包括:判别模块601、缓存队列模块602、编码模块603和垃圾回收模块604;其中:
所述判别模块601,用于根据请求来源和预设的数据冷热分类算法对接收的数据访问请求进行分类判别,得到所述数据访问请求的分类信息;所述数据访问请求用于请求对待访问数据的访问;
所述缓存队列模块602,用于根据所述数据访问请求的分类信息,调用缓存队列算法对所述数据访问请求进行缓存判断,以将所述数据访问请求加入至对应分类的目标缓存队列中;若所述目标缓存队列中的待访问数据达到预设标准阈值,则将所述待访问数据以条带为单位发送给编码模块;
所述编码模块603,用于根据地址映射表中所述待访问数据的逻辑地址与物理地址之间的映射关系,将所述待访问数据以条带为单位写入至所述存储阵列中与所述物理地址相对应的目标节点中;
所述垃圾回收模块604,用于若所述存储阵列中没有可写入的存储空间或者工作队列中的空白节点小于预设数量,则采用延时删除无效数据的垃圾回收机制进行数据回收,其中所述存储阵列采用工作队列的结构进行存储空间的管理。
可选的,所述缓存队列模块602具体用于:
判断所述数据访问请求中的待访问数据是否已存在于初始缓存队列中;
若不存在,则直接将所述数据访问请求中的待访问数据加入至所述初始缓存队列中;
若存在,则判断所述数据访问请求的类型,若所述数据访问请求为内部写请求,则直接丢弃所述数据访问请求;若所述数据访问请求为外部访问请求,则判断所述数据访问请求对应的归属类型与所述初始缓存队列所属的分类类型是否相同,如果相同,则将所述数据访问请求中的待访问数据更新至所述初始缓存队列中;如果不相同,则将所述数据访问请求中的待访问数据更新至所述初始缓存队列中,并将所述初始缓存队列中的所述待访问数据迁移至与所述归属类型相同的目标缓存队列中。
可选的,所述工作队列将使用多个指针来标记所述工作队列中的工作节点,且使用一个额外指针指向空白节点;当所述工作队列中的任一工作节点写满后,将所述额外指针指向的空白节点分配给所述任一工作节点,并将所述额外指针指向下一个空白节点。
可选的,所述垃圾回收模块604具体用于:
采用贪婪算法从所述工作队列中选取有效数据块最少的工作节点,作为受害节点;
为所述受害节点中的有效数据块生成对应的内部写请求,重复执行上述判别模块、缓存队列模块及编码模块的操作,在所述有效数据块全部迁移完毕后,将所述受害节点进行全部数据擦除,并将所述受害节点加到所述工作队列的末尾以等待下次数据的写入。
可选的,所述垃圾回收模块604还用于:
当所述有效数据块多于所述目标节点的剩余存储空间,若此时再触发第二次垃圾回收,则先切换所述目标节点进行所述有效数据块的迁移,在迁移完毕后再执行所述第二次垃圾回收,以避免写入拥塞。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何本领域技术人员均可在不违背本申请的精神及范畴下,对上述实施例进行修饰与改变。因此,本申请的权利保护范围,应如权利要求书所列。
Claims (10)
1.一种基于存储阵列数据访问的垃圾回收优化方法,其特征在于,包括:
步骤S1:根据请求来源和预设的数据冷热分类算法对接收的数据访问请求进行分类判别,得到所述数据访问请求的分类信息;所述数据访问请求用于请求对待访问数据的访问;
步骤S2:根据所述数据访问请求的分类信息,调用缓存队列算法对所述数据访问请求进行缓存判断,以将所述数据访问请求加入至对应分类的目标缓存队列中;
步骤S3:若所述目标缓存队列中的待访问数据达到预设标准阈值,则根据地址映射表中所述待访问数据的逻辑地址与物理地址之间的映射关系,将所述待访问数据以条带为单位写入至所述存储阵列中与所述物理地址相对应的目标节点中;
步骤S4:若所述存储阵列中没有可写入的存储空间或者工作队列中的空白节点小于预设数量,则采用延时删除无效数据的垃圾回收机制进行数据回收,其中所述存储阵列采用工作队列的结构进行存储空间的管理。
2.根据权利要求1所述的基于存储阵列数据访问的垃圾回收优化方法,其特征在于,所述根据所述数据访问请求的分类信息,调用缓存队列算法对所述数据访问请求进行缓存判断,以将所述数据访问请求加入至对应分类的目标缓存队列中包括:
判断所述数据访问请求中的待访问数据是否已存在于初始缓存队列中;
若不存在,则直接将所述数据访问请求中的待访问数据加入至所述初始缓存队列中;
若存在,则判断所述数据访问请求的类型,若所述数据访问请求为内部写请求,则直接丢弃所述数据访问请求;若所述数据访问请求为外部访问请求,则判断所述数据访问请求对应的归属类型与所述初始缓存队列所属的分类类型是否相同,如果相同,则将所述数据访问请求中的待访问数据更新至所述初始缓存队列中;如果不相同,则将所述数据访问请求中的待访问数据更新至所述初始缓存队列中,并将所述初始缓存队列中的所述待访问数据迁移至与所述归属类型相同的目标缓存队列中。
3.根据权利要求1所述的基于存储阵列数据访问的垃圾回收优化方法,其特征在于,所述工作队列将使用多个指针来标记所述工作队列中的工作节点,且使用一个额外指针指向空白节点;当所述工作队列中的任一工作节点写满后,将所述额外指针指向的空白节点分配给所述任一工作节点,并将所述额外指针指向下一个空白节点。
4.根据权利要求1所述的基于存储阵列数据访问的垃圾回收优化方法,其特征在于,所述采用延时删除无效数据的垃圾回收机制进行数据回收包括:
采用贪婪算法从所述工作队列中选取有效数据块最少的工作节点,作为受害节点;
为所述受害节点中的有效数据块生成对应的内部写请求,重复执行上述步骤S1-S3,在所述有效数据块全部迁移完毕后,将所述受害节点进行全部数据擦除,并将所述受害节点加到所述工作队列的末尾以等待下次数据的写入。
5.根据权利要求4所述的基于存储阵列数据访问的垃圾回收优化方法,其特征在于,所述方法还包括:
当所述有效数据块多于所述目标节点的剩余存储空间,若此时再触发第二次垃圾回收,则先切换所述目标节点进行所述有效数据块的迁移,在迁移完毕后再执行所述第二次垃圾回收,以避免写入拥塞。
6.一种基于存储阵列数据访问的垃圾回收优化装置,其特征在于,包括:
判别模块,用于根据请求来源和预设的数据冷热分类算法对接收的数据访问请求进行分类判别,得到所述数据访问请求的分类信息;所述数据访问请求用于请求对待访问数据的访问;
缓存队列模块,用于根据所述数据访问请求的分类信息,调用缓存队列算法对所述数据访问请求进行缓存判断,以将所述数据访问请求加入至对应分类的目标缓存队列中;若所述目标缓存队列中的待访问数据达到预设标准阈值,则将所述待访问数据以条带为单位发送给编码模块;
编码模块,用于根据地址映射表中所述待访问数据的逻辑地址与物理地址之间的映射关系,将所述待访问数据以条带为单位写入至所述存储阵列中与所述物理地址相对应的目标节点中;
垃圾回收模块,用于若所述存储阵列中没有可写入的存储空间或者工作队列中的空白节点小于预设数量,则采用延时删除无效数据的垃圾回收机制进行数据回收,其中所述存储阵列采用工作队列的结构进行存储空间的管理。
7.根据权利要求6所述的基于存储阵列数据访问的垃圾回收优化装置,其特征在于,所述缓存队列模块具体用于:
判断所述数据访问请求中的待访问数据是否已存在于初始缓存队列中;
若不存在,则直接将所述数据访问请求中的待访问数据加入至所述初始缓存队列中;
若存在,则判断所述数据访问请求的类型,若所述数据访问请求为内部写请求,则直接丢弃所述数据访问请求;若所述数据访问请求为外部访问请求,则判断所述数据访问请求对应的归属类型与所述初始缓存队列所属的分类类型是否相同,如果相同,则将所述数据访问请求中的待访问数据更新至所述初始缓存队列中;如果不相同,则将所述数据访问请求中的待访问数据更新至所述初始缓存队列中,并将所述初始缓存队列中的所述待访问数据迁移至与所述归属类型相同的目标缓存队列中。
8.根据权利要求6所述的基于存储阵列数据访问的垃圾回收优化装置,其特征在于,所述工作队列将使用多个指针来标记所述工作队列中的工作节点,且使用一个额外指针指向空白节点;当所述工作队列中的任一工作节点写满后,将所述额外指针指向的空白节点分配给所述任一工作节点,并将所述额外指针指向下一个空白节点。
9.根据权利要求6所述的基于存储阵列数据访问的垃圾回收优化装置,其特征在于,所述垃圾回收模块具体用于:
采用贪婪算法从所述工作队列中选取有效数据块最少的工作节点,作为受害节点;
为所述受害节点中的有效数据块生成对应的内部写请求,重复执行上述判别模块、缓存队列模块及编码模块的操作,在所述有效数据块全部迁移完毕后,将所述受害节点进行全部数据擦除,并将所述受害节点加到所述工作队列的末尾以等待下次数据的写入。
10.根据权利要求9所述的基于存储阵列数据访问的垃圾回收优化装置,其特征在于,所述垃圾回收模块还用于:
当所述有效数据块多于所述目标节点的剩余存储空间,若此时再触发第二次垃圾回收,则先切换所述目标节点进行所述有效数据块的迁移,在迁移完毕后再执行所述第二次垃圾回收,以避免写入拥塞。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110220806.1A CN112835534B (zh) | 2021-02-26 | 2021-02-26 | 一种基于存储阵列数据访问的垃圾回收优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110220806.1A CN112835534B (zh) | 2021-02-26 | 2021-02-26 | 一种基于存储阵列数据访问的垃圾回收优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835534A true CN112835534A (zh) | 2021-05-25 |
CN112835534B CN112835534B (zh) | 2022-08-02 |
Family
ID=75934056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110220806.1A Active CN112835534B (zh) | 2021-02-26 | 2021-02-26 | 一种基于存储阵列数据访问的垃圾回收优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835534B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064516A (zh) * | 2021-11-16 | 2022-02-18 | 深圳市时创意电子有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN114217587A (zh) * | 2021-12-15 | 2022-03-22 | 之江实验室 | 一种拟态执行体多类型数据实时比较和汇聚方法 |
CN114706797A (zh) * | 2022-06-08 | 2022-07-05 | 天津南大通用数据技术股份有限公司 | 一种高效回收存储空间的方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101965559A (zh) * | 2007-12-27 | 2011-02-02 | 普莱恩特技术股份有限公司 | 包括将处理器与内部存储器连接的交叉切换器的用于闪存的存储控制器 |
CN103902475A (zh) * | 2014-04-23 | 2014-07-02 | 哈尔滨工业大学 | 一种基于队列管理机制的固态硬盘并行访问方法及装置 |
CN106095342A (zh) * | 2016-06-15 | 2016-11-09 | 华中科技大学 | 一种动态可变长条带的瓦记录磁盘阵列构建方法及系统 |
CN110515859A (zh) * | 2019-07-09 | 2019-11-29 | 杭州电子科技大学 | 一种固态硬盘读写请求并行处理方法 |
CN111708713A (zh) * | 2020-05-20 | 2020-09-25 | 杭州电子科技大学 | 一种固态硬盘智能垃圾回收与调度方法 |
CN111880745A (zh) * | 2020-07-29 | 2020-11-03 | 北京浪潮数据技术有限公司 | 基于固态盘阵列的数据处理方法、装置、设备及存储介质 |
CN113921077A (zh) * | 2020-07-09 | 2022-01-11 | 爱思开海力士有限公司 | 存储器装置 |
-
2021
- 2021-02-26 CN CN202110220806.1A patent/CN112835534B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101965559A (zh) * | 2007-12-27 | 2011-02-02 | 普莱恩特技术股份有限公司 | 包括将处理器与内部存储器连接的交叉切换器的用于闪存的存储控制器 |
CN103902475A (zh) * | 2014-04-23 | 2014-07-02 | 哈尔滨工业大学 | 一种基于队列管理机制的固态硬盘并行访问方法及装置 |
CN106095342A (zh) * | 2016-06-15 | 2016-11-09 | 华中科技大学 | 一种动态可变长条带的瓦记录磁盘阵列构建方法及系统 |
CN110515859A (zh) * | 2019-07-09 | 2019-11-29 | 杭州电子科技大学 | 一种固态硬盘读写请求并行处理方法 |
CN111708713A (zh) * | 2020-05-20 | 2020-09-25 | 杭州电子科技大学 | 一种固态硬盘智能垃圾回收与调度方法 |
CN113921077A (zh) * | 2020-07-09 | 2022-01-11 | 爱思开海力士有限公司 | 存储器装置 |
CN111880745A (zh) * | 2020-07-29 | 2020-11-03 | 北京浪潮数据技术有限公司 | 基于固态盘阵列的数据处理方法、装置、设备及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064516A (zh) * | 2021-11-16 | 2022-02-18 | 深圳市时创意电子有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN114064516B (zh) * | 2021-11-16 | 2022-08-30 | 深圳市时创意电子有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN114217587A (zh) * | 2021-12-15 | 2022-03-22 | 之江实验室 | 一种拟态执行体多类型数据实时比较和汇聚方法 |
CN114706797A (zh) * | 2022-06-08 | 2022-07-05 | 天津南大通用数据技术股份有限公司 | 一种高效回收存储空间的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112835534B (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112835534B (zh) | 一种基于存储阵列数据访问的垃圾回收优化方法及装置 | |
US10496293B2 (en) | Techniques for selecting storage blocks for garbage collection based on longevity information | |
US9575672B2 (en) | Storage system comprising flash memory and storage control method in which a storage controller is configured to determine the number of allocatable pages in a pool based on compression information | |
CN110597455B (zh) | 通过改进的元数据管理增加闪存耐用性的方法 | |
CN110032521B (zh) | 增强闪存转换层映射灵活性的方法和系统 | |
TWI399644B (zh) | 非揮發記憶體區塊管理方法 | |
US10503424B2 (en) | Storage system | |
KR101678868B1 (ko) | 플래시 주소 변환 장치 및 그 방법 | |
US10719439B2 (en) | Garbage collection of a storage device | |
WO2012106362A2 (en) | Apparatus, system, and method for managing eviction of data | |
CN110347613B (zh) | 多租户固态盘中实现raid的方法、控制器及多租户固态盘 | |
CN112860594B (zh) | 一种固态盘地址重映射方法、设备及固态盘 | |
TWI792892B (zh) | 鏡像資料至非揮發性記憶體之控制器之寫入快取中 | |
US20100318726A1 (en) | Memory system and memory system managing method | |
US11307997B2 (en) | Logical to physical data storage mapping | |
CN111722797B (zh) | 面向ssd与ha-smr混合存储系统数据管理方法、存储介质及设备 | |
CN115203079A (zh) | 一种将数据写入固态硬盘的方法 | |
CN112346658A (zh) | 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率 | |
WO2016194979A1 (ja) | ストレージシステム、ストレージ制御装置、ストレージ制御方法及びプログラム | |
JP2021033945A (ja) | メモリシステムおよび制御方法 | |
CN116301576A (zh) | 一种面向zns-ssd存储系统的垃圾回收方法 | |
US20200073572A1 (en) | Storage system and storage control method | |
JP5631486B2 (ja) | Nandメモリのブロックベースファイルシステムへログベースバファリングを用いて書き込む方法 | |
KR20110082978A (ko) | 플래시 메모리를 사용하는 raid 저장 장치에서 패리티 데이터 관리 방법 및 그 장치 | |
KR101791855B1 (ko) | 스토리지 장치 및 이의 공간 재수거 방법 |
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 |