CN112506811B - 基于固态硬盘内数据冷热划分的数据块动态分配方法、装置 - Google Patents
基于固态硬盘内数据冷热划分的数据块动态分配方法、装置 Download PDFInfo
- Publication number
- CN112506811B CN112506811B CN202011496681.7A CN202011496681A CN112506811B CN 112506811 B CN112506811 B CN 112506811B CN 202011496681 A CN202011496681 A CN 202011496681A CN 112506811 B CN112506811 B CN 112506811B
- Authority
- CN
- China
- Prior art keywords
- block
- tree
- sbt
- data block
- sacrifice
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于固态硬盘内数据冷热划分的数据块动态分配方法、装置、计算机设备和存储介质。方法包括:获取回收代价最小的数据块,得到牺牲块;获取牺牲块的擦除次数记录;当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将牺牲块转换成空闲块;当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将牺牲块转换成热数据块;当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将牺牲块转换成冷数据块。采用本方法能够减少GC的执行次数,从而提高GC效率。
Description
技术领域
本申请涉及固态硬盘技术领域,特别是涉及一种基于固态硬盘内数据冷热划分的数据块动态分配方法、装置、计算机设备和存储介质。
背景技术
随着固态硬盘技术的发展,由于固态硬盘内数据不能覆盖写的缘故,其存储的数据在执行修改操作的过程中往往会产生无效数据。从而导致固态硬盘的使用性能下降,内部实际可用的空间减少。为了提高固态硬盘的使用性能,提升硬盘内部实际可用空间,因而出现了固态硬盘垃圾回收技术。
传统技术中,一般通过降低GC(garbage collection,垃圾回收)代价或者提高GC处理过程,从而实现提高GC效率,提高SSD(Solid State Drive,固态硬盘)的读写访问速度。
然而,目前的传统方法,由于每个待评估的回收块中保存的冷/热数据的数量参差不齐,往往会增加重复的数据迁移操作,增大GC的执行次数。
发明内容
基于此,有必要针对上述技术问题,提供一种能够减少GC的执行次数,从而提高GC效率的基于固态硬盘内数据冷热划分的数据块动态分配方法、装置、计算机设备和存储介质。
一种基于固态硬盘内数据冷热划分的数据块动态分配方法,所述方法包括:
获取回收代价最小的数据块,得到牺牲块;
获取所述牺牲块的擦除次数记录;
当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。
在其中一个实施例中,所述获取回收代价最小的数据块,得到牺牲块,包括:获取冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;所述第一SBT树记录各冷数据块的回收代价;所述第二SBT树记录各热数据块的回收代价;
从第一SBT树获取回收代价最小的冷数据块作为第一牺牲块、从第二SBT树中获取回收代价最小的热数据块作为第二牺牲块;
校验所述第一牺牲块的回收代价是否小于所述第二牺牲块的回收代价;
当所述第一牺牲块的回收代价小于所述第二牺牲块的回收代价时,将所述第一牺牲块作为回收代价最小的牺牲块;
当所述第一牺牲块的回收代价大于所述第二牺牲块的回收代价时,将所述第二牺牲块作为回收代价最小的牺牲块;
当从所述第一SBT树或第二SBT树中获取到回收代价最小的牺牲块时,将所述牺牲块从所述第一SBT树或第二SBT树中剔除,并对所述牺牲块进行擦除操作。
在其中一个实施例中,所述方法还包括:
对所述冷数据块和所述热数据块进行初始化;
将第一个冷数据块作为第一SBT树的根结点,将第一个热数据块作为第二SBT树的根结点;
根据第N+1个冷数据块的产生顺序和回收代价构建在所述第一SBT树各父结点的子结点,根据第N+1个热数据块的产生顺序和回收代价确定构建所述第二SBT树各父结点的子结点,得到冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;
其中,第一SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的冷数据块的回收代价,第一SBT树中右结点对应的冷数据块的回收代价,大于其父结点对应的冷数据块的回收代价;
第二SBT树中左结点对应的热数据块的回收代价,小于其父结点对应的热数据块的回收代价,第二SBT树中右结点对应的热数据块的回收代价,大于其父结点对应的热数据块的回收代价。
在其中一个实施例中,将所述牺牲块从所述第一SBT树或第二SBT树中剔除之后,还包括:
分别校验第一SBT树、第二SBT树的二叉树是否满足二叉树平衡原则;
当第一SBT树的二叉树不满足二叉树平衡原则时,对所述第一SBT树进行旋转操作;
当第二SBT树的二叉树不满足二叉树平衡原则时,对所述第二SBT树进行旋转操作。
在其中一个实施例中,将所述牺牲块从所述第一SBT树或第二SBT树中剔除,并对所述牺牲块进行擦除操作之后,还包括:
更新所述牺牲块记录的擦除次数。
在其中一个实施例中,所述方法还包括:
获取系统中各个热数据块、冷数据块和空闲块的擦除次数;
根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最大值确定最大擦除次数,根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最小值确定最小擦除次数。
一种基于固态硬盘内数据冷热划分的数据块动态分配装置,其特征在于,所述装置包括:
牺牲块获取模块,用于获取回收代价最小的数据块,得到牺牲块;
擦除次数记录模块,用于获取所述牺牲块的擦除次数记录;
空闲块转换模块,用于当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块;
热数据块转换模块,用于当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块;
冷数据块转换模块,用于当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。
在一个实施例中,所述牺牲块获取模块,还包括:
SBT树获取模块,用于获取冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;第一SBT树记录各冷数据块的回收代价,第二SBT树记录各热数据块的回收代价;
牺牲块获得模块,用于从第一SBT树获取回收代价最小的冷数据块作为第一牺牲块、从第二SBT树中获取回收代价最小的热数据块作为第二牺牲块;
回收代价校验模块,用于校验第一牺牲块的回收代价是否小于第二牺牲块的回收代价;
最小牺牲块确定模块,用于当第一牺牲块的回收代价小于第二牺牲块的回收代价时,将第一牺牲块作为回收代价最小的牺牲块;当第一牺牲块的回收代价大于第二牺牲块的回收代价时,将第二牺牲块作为回收代价最小的牺牲块;
牺牲块擦除模块,用于当从第一SBT树或第二SBT树中获取到回收代价最小的牺牲块时,将牺牲块从第一SBT树或第二SBT树中剔除,并对牺牲块进行擦除操作。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取回收代价最小的数据块,得到牺牲块;
获取所述牺牲块的擦除次数记录;
当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取回收代价最小的数据块,得到牺牲块;
获取所述牺牲块的擦除次数记录;
当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。
上述基于固态硬盘内数据冷热划分的数据块动态分配方法、装置、计算机设备和存储介质,获取回收代价最小的数据块,得到牺牲块;获取所述牺牲块的擦除次数记录;当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块;当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块;当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。由于数据读写频率的不一致性,访问频率高的数据往往更容易被修改,存储数据的数据块也更容易执行擦除操作。因此,在系统的最大擦除次数和最小擦除次数之间的差值大于预设阈值时,将擦除次数与最小擦除次数之间的差值不小于预设阈值的牺牲块转换成为冷数据块,将擦除次数与最小擦除次数之间的差值小于预设阈值的牺牲块转换成为热数据块,从而能够使各数据块的数量相差较小,分布较均衡。使本申请能够减少GC的执行次数,提高GC效率,且能在固态硬盘工作负载剧烈变化时,依旧确保各数据块之间的擦除次数差在可控范围内。
附图说明
图1为一个实施例中基于固态硬盘内数据冷热划分的数据块动态分配方法的应用环境图;
图2为一个实施例中基于固态硬盘内数据冷热划分的数据块动态分配方法的流程示意图;
图3为一个实施例中数据块的示意图;
图4为另一个实施例中确定回收代价最小的牺牲块的流程示意图;
图5为一个实施例中SBT树中数据块的数据结构示意图;
图6为一个实施例中第一SBT树进行左旋操作的状态变化示意图;
图7为另一个实施例中基于固态硬盘内数据冷热划分的数据块动态分配方法的流程示意图;
图8为一个实施例中基于固态硬盘内数据冷热划分的数据块动态分配装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的基于固态硬盘内数据冷热划分的数据块动态分配方法,可以应用于如图1所示的应用环境中。终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。
终端102通过I/O((Input/Output,即输入/输出)数据/命令接口和固态硬盘104实现通信连接,用户通过终端102访问固态硬盘104中的数据,其中,受访问频率较高的称为热数据,受访问频率较低的称为冷数据。固态硬盘104中有缓存模块、闪存转换层和NANDFlash存储介质,闪存转换层包括垃圾回收模块、磨损均衡模块、地址映射模块和数据块分配策略模块。其中,数据块分配策略模块包括数据块类型转换模块和同一类型数据块管理模块。
一旦冷/热数据块中有数据块被作为牺牲块,闪存转换层中的数据块类型模块会对该牺牲块进行擦除操作。在擦除操作完成之后,同一类型数据块管理模块会根据该牺牲块的擦除次数,将其转换成冷/热数据块或空闲块。
在一个实施例中,如图2所示,提供了一种基于固态硬盘内数据冷热划分的数据块动态分配方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤202,获取回收代价最小的数据块,得到牺牲块。
其中,牺牲块原本是冷数据块或热数据块中的一种,在固态硬盘垃圾回收过程中,作为被回收的数据块,为了区别于未被执行回收操作的冷/热数据块,因此,将冷/热数据块中被固态硬盘回收的数据块称之为牺牲块。
具体地,回收代价可以根据以下公式进行确定:
λ=0ifΔg=0andΔg=εmax-εmin;
其中:Δε等于最大擦除次数与最小擦除次数的差值。εmax表示最大的擦除次数值,εmin表示最小的擦除次数值。valid(j)表示块号为j的数据块中有效页的个数,valid(j)+invalid(j)表示块号为j的数据块中数据页的个数。λ和kε两者是设置的两个常量值,用来确定公式中的哪一部分起决定性作用(可调节)。erasures(j)表示的是块号为j的数据块的擦除次数值。
即数据块的回收代价可以根据其自身的擦除次数、自身的无效页和数据页个数、系统的最大擦除次数以及最小擦除次数等相关信息,在终端进行计算得以确定其对应的回收代价。固态硬盘在获取到回收代价最小的数据块时,将指定该数据块作为牺牲块。通过获取回收代价最小的数据块作为牺牲块,能使终端能够以最小的代价来换取最大的垃圾回收收益。
步骤204,获取所述牺牲块的擦除次数记录。
具体地,擦除次数是指数据块被固态硬盘回收后并执行擦除操作的次数,数据的访问频率间接的决定着数据块擦除次数的大小。其中,数据访问频率越高,数据被修改的几率就更大,受固态硬盘内数据不能覆盖写的影响,无效数据产生的概率就会越大,存储该数据的数据块被选为牺牲块的几率也会越大。热数据块存储热数据,因此其擦除次数增加的几率会相对较大;冷数据块存储冷数据,其擦除次数增加的几率会相对降低。数据块的数据结构如图3所示,包括块号、擦除次数、数据块类型、回收代价和无效页个数等。冷/热数据块的擦除次数是该冷/热数据块所包含的基本信息,牺牲块作为即将被回收的冷/热数据块,因此,牺牲块的基本信息中也包含有该牺牲块的擦除次数。固态硬盘在获取到牺牲块后,将会获取该牺牲块的擦除次数。
步骤206,当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块。
当系统的最小擦除次数和最大擦除次数的差值小于预先设置的阈值时,表明数据块的擦除次数在正常范围内,此时数据块不会受到该块中数据访问频率的影响,可以直接转换成空闲块。在将该牺牲块转换成空闲块之后,如果系统中存储冷/热数据的数据块空间不足,系统会将空闲块转换成相应的冷/热数据块,确保数据的存储工作不会收到影响。
具体地,固态硬盘根据各个数据块信息中的擦除次数的最大值确定最大擦除次数,并根据各个数据块信息中的擦除次数的最小值确定最小擦除次数。最小擦除次数和最大擦除次数的差值小于预先设置的阈值时,表明数据块的擦除次数在正常范围内,此时数据块不会受到该块中数据访问频率的影响,既可用于存储热数据,又可用于存储冷数据。当最小擦除次数和最大擦除次数的差值大于预先设置的阈值时,通过其内部的数据块类型转换模块判断该牺牲块的擦除次数与最小擦除次数的差值是否大于阈值,如果是,固态硬盘将判断该牺牲块的擦除次数较大,应在下次数据存储时转换为冷数据块,在将其转换成冷数据块之后,该牺牲块相应地只能存储访问频率不频繁的冷数据,冷数据是访问频率相对较低的数据类型。因而转换之后将降低该牺牲块的访问频率,降低该块再次被选为牺牲块的几率,从而有利于保证各数据块之间的擦除次数框定在一个预定范围内。
步骤208,当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块。
具体地,当牺牲块的擦除次数与最小擦除次数的差值小于阈值时,固态硬盘将判断该牺牲块的擦除次数较小,应在下次数据存储时置为热数据块。在将其转换成热数据块之后,该牺牲块相应地只能存储访问频率频繁的热数据,增加该块被再次选为牺牲块的几率。
步骤210,当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。
具体地,当牺牲块的擦除次数与最小擦除次数的差值不小于阈值时,固态硬盘将判断该牺牲块的擦除次数较大,应在下次数据存储时置为冷数据块。在将其转换成冷数据块之后,该牺牲块相应地只能存储访问频率较低的冷数据,降低该数据块被再次选为牺牲块的几率。
上述基于固态硬盘内数据冷热划分的数据块动态分配方法中,获取回收代价最小的数据块,得到牺牲块;获取所述牺牲块的擦除次数记录;当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块;当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块;当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。由于数据读写频率的不一致性,访问频率高的数据往往更容易被修改,存储数据的数据块也更容易执行擦除操作。因此,在系统的最大擦除次数和最小擦除次数之间的差值大于预设阈值时,将擦除次数与最小擦除次数之间的差值不小于预设阈值的牺牲块转换成为冷数据块,将擦除次数与最小擦除次数之间的差值小于预设阈值的牺牲块转换成为热数据块,从而能够使各数据块的数量相差较小,分布较均衡。使本申请能够减少GC的执行次数,从而提高GC效率,且能在固态硬盘工作负载剧烈变化时,依旧确保各数据块之间的擦除次数差在可控范围内。
在一个实施例中,如图4所示,获取回收代价最小的数据块,得到牺牲块,包括:步骤S402,获取冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;其中,第一SBT树记录各冷数据块的回收代价;第二SBT树记录各热数据块的回收代价。
具体地,SBT树又称为节点大小平衡树(Size Balanced Tree),第一SBT树和第二SBT树均为SBT树,其中,第一SBT树是指由冷数据块构建而成的SBT树,第二SBT树是由热数据块构建而成的SBT树。第一SBT树上记录有各冷数据块的回收代价,第二SBT树上记录有各热数据块的回收代价。
步骤S404,从第一SBT树获取回收代价最小的冷数据块作为第一牺牲块、从第二SBT树中获取回收代价最小的热数据块作为第二牺牲块。
具体地,固态硬盘通过同一类型数据块管理模块遍历找到第一SBT树中回收代价最小的冷数据块,固态硬盘将该回收代价最小的冷数据块视为第一牺牲块。固态硬盘通过同一类型数据块管理模块遍历找到第二SBT树中回收代价最小的热数据块,固态硬盘将该回收代价最小的热数据块视为第二牺牲块。
步骤S406,校验第一牺牲块的回收代价是否小于第二牺牲块的回收代价。
具体地,校验第一牺牲块的回收代价是否小于第二牺牲块的回收代价,可以在确认其中一个牺牲块的回收代价小于另一个牺牲块的回收代价时,将回收代价更小的牺牲块作为最终被选中的牺牲块,从而使垃圾回收代价最小。
当第一牺牲块的回收代价小于第二牺牲块的回收代价时,执行步骤S408,将第一牺牲块作为回收代价最小的牺牲块。
具体地,如果第一牺牲块的回收代价小于第二牺牲块的回收代价,此时,第一牺牲块的回收代价在第一SBT树和第二SBT树中最小,则同一类型数据块管理模块会把第一牺牲块作为被选中的牺牲块,将该第一牺牲块对应的结点从第一SBT树中删除。
当第一牺牲块的回收代价大于第二牺牲块的回收代价时,执行步骤S410,将第二牺牲块作为回收代价最小的牺牲块。
具体地,如果第一牺牲块的回收代价不小于第二牺牲块的回收代价,即第二牺牲块的回收代价小于第一牺牲块的回收代价。此时,第二牺牲块的回收代价在第一SBT树和第二SBT树中最小,则同一类型数据块管理模块会把第二牺牲块作为被选中的牺牲块,将该第二牺牲块对应的结点从第二SBT树中删除。
当从第一SBT树或第二SBT树中获取到回收代价最小的牺牲块时,执行步骤S412,将牺牲块从第一SBT树或第二SBT树中剔除,并对牺牲块进行擦除操作。
具体地,如前,被选中剔除的牺牲块即回收代价最小的牺牲块,可能是第一牺牲块,也有可能是第二牺牲块。当被选中剔除的牺牲块从第一SBT树或第二SBT树中剔除时,同一类型数据块管理模块还会对该回收代价最小的牺牲块进行擦除操作,擦除该牺牲块的回收代价、数据块类型及数据内容,为后续被回收重新进行数据块划分做准备。
在本实施例中,通过对第一SBT树中获得的回收代价最小的冷数据块,和从第二SBT树中获得的回收代价最小的热数据块进行比较,从而可以在第一SBT树和第二SBT树中获得回收代价最小的数据块作为牺牲块。选中该回收代价最小的牺牲块后,对该牺牲块进行擦除操作,此时它的数据块类型为空,既不属于冷/热数据块,也不属于空闲块,便于后续根据其擦除次数重新转换成相应的数据块类型。
在一个实施例中,基于固态硬盘内数据冷热划分的数据块动态分配方法还包括:构建冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树的步骤。具体地,该步骤包括:对冷数据块和热数据块进行初始化,将第一个冷数据块作为第一SBT树的根结点,将第一个热数据块作为第二SBT树的根结点;根据第N+1个冷数据块的产生顺序和回收代价构建在第一SBT树各父结点的子结点,根据第N+1个热数据块的产生顺序和回收代价确定构建第二SBT树各父结点的子结点,得到冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树。
具体地,初始时,所有数据块都属于空闲块类型,随着数据存储需求的不断增加,固态硬盘将冷数据存储在冷数据块中,热数据存储在热数据块中。当冷/热数据块的存储空间不足时,则向空闲块中进行申请,把空闲块类型转换为冷/热数据块类型。
第一个冷数据块是初始化之后,固态硬盘在划分冷/热数据块时,第一个得到的冷数据块。在得到第一个冷数据块时,固态硬盘将其作为第一SBT树的根结点。第一个热数据块是初始化之后,固态硬盘在划分热/热数据块时,第一个得到的热数据块。在得到第一个热数据块时,固态硬盘将其作为第二SBT树的根结点。
根据第N+1个冷数据块的产生顺序和回收代价构建在第一SBT树各父结点的子结点,根据第N+1个热数据块的产生顺序和回收代价确定构建第二SBT树各父结点的子结点,得到冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树。
其中,第一SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的冷数据块的回收代价,第一SBT树中右结点对应的冷数据块的回收代价,大于其父结点对应的冷数据块的回收代价。
第二SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的热数据块的回收代价,第二SBT树中右结点对应的热数据块的回收代价,大于其父结点对应的热数据块的回收代价。
具体地,第N+1个冷数据块,其中,N为自然数,根据第N+1个冷数据块的产生顺序和回收代价可以确定其在第一SBT树中的位置(各父结点的子结点)。例如N为1时,对应为第二个冷数据块,根据第二个冷数据块的产生顺序可以确定其位于根结点-第一个冷数据块的左结点或者右结点。根据第二个冷数据块的回收代价和第一个冷数据块的回收代价进行大小比较,当第二个冷数据块的回收代价小于第一个冷数据块的回收代价时,第二个冷数据块位于根结点的左结点上。当第二个冷数据块的回收代价大于第一个冷数据块的回收代价时,第二个冷数据块位于根结点的右结点上。对于第二个冷数据块而言,第一个冷数据块为其父结点,根据第二个冷数据块的产生顺序和回收代价可以将其构建为第一SBT树中第一个父结点(根结点/第一个冷数据块)的子结点。
在SBT树建立的过程中,如果添加的结点导致SBT树不再满足二叉树平衡原则时,则系统会对SBT树进行相应的旋转操作(期间,SBT树的根节点可能会发生改变)。
本实施例中,通过构建第一SBT树,使得各个冷数据块根据其产生时间顺序和回收代价,按照二叉树平衡原则有序排列分布,从而便于同一类型数据块管理模块快速索引到回收代价最小的冷数据块。通过构建第二SBT树,使得各个热数据块根据其产生时间顺序和回收代价,按照二叉树平衡原则有序排列分布,从而便于同一类型数据块管理模块快速索引到回收代价最小的热数据块。
在一个实施例中,将牺牲块从第一SBT树或第二SBT树中剔除之后,还包括:
分别校验第一SBT树、第二SBT树的二叉树是否满足二叉树平衡原则;当第一SBT树的二叉树不满足二叉树平衡原则时,对第一SBT树进行旋转操作;当第二SBT树的二叉树不满足二叉树平衡原则时,对第二SBT树进行旋转操作。其中,二叉树平衡原则是指对于平衡二叉树,其二叉树中某结点左子树的高度与右子树的高度之差的绝对值不大于1。第一SBT树保持满足二叉树平衡原则,可以确保各父结点及其对应的子结点的回收代价按照前述排序规则进行有序排列分布。从而避免插入新的冷数据块导致破坏第一SBT树原来的平衡性,不利于后续快速索引到回收代价最小的冷数据块,或者获取到的回收代价最小的冷数据块并不是实际的回收代价最小的冷数据块。同理,第二SBT树保持满足二叉树平衡原则,可以确保各父结点及其对应的子结点的回收代价按照前述排序规则进行有序排列分布。从而避免插入新的热数据块导致破坏第二SBT树原来的平衡性,不利于后续快速索引到回收代价最小的热数据块,或者获取到的回收代价最小的热数据块并不是实际的回收代价最小的热数据块。
具体地,当第一SBT树的二叉树失去平衡,不满足二叉树平衡原则时,固态硬盘会对第一SBT树进行旋转操作,包括左旋操作和右旋操作。如图5所示,SBT树记录的数据块结构包括块号501,回收代价值502和数据块类型标识503。其中,数据块类型标识包括0,用于标识冷数据块类型。
以图6中的SBT树的第一个数据块为例,通过数据结构可确定该数据块的块号8,回收代价5,为冷数据。当块号为4,回收代价为1的冷数据块被选为第一SBT树中回收代价最小的冷数据块时,该冷数据块将被剔除。剔除之后,第一SBT树中块号为1的冷数据块,其对应的回收代价为2;块号为5的冷数据块,其对应的回收代价为3;块号为2的冷数据块,其对应的回收代价为4。此时,块号为1的冷数据块是块号为5的冷数据块的父结点,块号为5的冷数据块是块号为2的冷数据块的父结点。块号为1的冷数据块相当于有一个右子结点和一个右孙结点,而缺乏左子结点,因此块号为1的冷数据块的左、右子树的高度差大于1,不再满足二叉树平衡原则。为了使第一SBT树回到平衡状态,根据各冷数据块的回收代价,对块号为1、5、2的冷数据块进行逆时针旋转(左旋)操作,从而使块号为5的冷数据块作为块号为1、2的冷数据块的父结点,块号为1的冷数据块作为该父结点的左子结点,块号为2的冷数据块作为该父结点的右子结点。
具体地,当第二SBT树的二叉树失去平衡,不满足二叉树平衡原则时,固态硬盘会对第二SBT树进行旋转操作,包括左旋操作和右旋操作。对第二SBT树进行旋转操作与对第一SBT树进行旋转操作的原理、流程相同。
此外,如果结点的回收代价值发生改变,同一类型数据块管理模块会先删除原有的结点建立一棵平衡SBT树,然后再将更新后的数据结点插入到SBT树中。
在本实施例中,通过校验第一SBT树和第二SBT树的二叉树是否满足二叉树平衡原则,当第一SBT树和第二SBT树不满足二叉树平衡原则时,将对一SBT树或第二SBT树进行旋转操作,从而使第一SBT树或第二SBT树保持平衡。可以降低二叉树建立后固态硬盘对其结点进行搜索以及修改的时间开销。
在一个实施例中,牺牲块的信息包括擦除次数;将牺牲块从第一SBT树或第二SBT树中剔除,并对牺牲块进行擦除操作之后,还包括:更新牺牲块记录的擦除次数。
具体地,在同一类型数据块管理模块对回收代价最小的牺牲块进行擦除操作时,擦除的内容不包括擦除次数,并且还会对该次擦除操作进行记录,从而更新牺牲块信息中的擦除次数。预设值是每执行一次擦除操作,对应的将在牺牲块的擦除次数中增加该预设值。例如预设值为1时,牺牲块每被执行一次擦除操作,牺牲块信息中的擦除次数将会在原来记录的擦除次数基础上加一。
在本实施例中,通过对牺牲块记录的擦除次数进行更新,从而可以使牺牲块每被执行一次擦除操作,擦除次数得以及时更新。
在一个实施例中,基于固态硬盘内数据冷热划分的数据块动态分配方法,还包括:获取系统中各个热数据块、冷数据块和空闲块的擦除次数。
根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最大值确定最大擦除次数,根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最小值确定最小擦除次数。
具体地,固态硬盘中有存储热数据的热数据块、存储冷数据的冷数据块以及存储自由的空闲块。系统通过遍历所有数据块的擦除次数信息可以得到最大擦除次数以及最小擦除次数。
在本实施例中,系统通过获取各个数据块的擦除次数,对数据块中信息中的擦除次数进行比较,从而可以确定得到最大擦除次数和最小擦除次数。
在一个实施例中,如图7所示,基于固态硬盘内数据冷热划分的数据块动态分配方法,包括:
步骤S702,对冷数据块和热数据块进行初始化。
步骤S704,将第一个冷数据块作为第一SBT树的根结点,将第一个热数据块作为第二SBT树的根结点。
步骤S706,根据第N+1个冷数据块的产生顺序和回收代价构建在第一SBT树各父结点的子结点,根据第N+1个热数据块的产生顺序和回收代价确定构建第二SBT树各父结点的子结点。
其中,第一SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的冷数据块的回收代价,第一SBT树中右结点对应的冷数据块的回收代价,大于其父结点对应的冷数据块的回收代价;
第二SBT树中左结点对应的热数据块的回收代价,小于其父结点对应的热数据块的回收代价,第二SBT树中右结点对应的热数据块的回收代价,大于其父结点对应的热数据块的回收代价。
步骤S708,获取冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;第一SBT树记录各冷数据块的回收代价,第二SBT树记录各热数据块的回收代价。
步骤S710,从第一SBT树获取回收代价最小的冷数据块作为第一牺牲块、从第二SBT树中获取回收代价最小的热数据块作为第二牺牲块。
步骤S712,校验第一牺牲块的回收代价是否小于第二牺牲块的回收代价。
当第一牺牲块的回收代价小于第二牺牲块的回收代价时,执行步骤S714,将第一牺牲块作为回收代价最小的牺牲块。
当第一牺牲块的回收代价大于第二牺牲块的回收代价时,执行步骤S716,将第二牺牲块作为回收代价最小的牺牲块。
当从第一SBT树或第二SBT树中获取到回收代价最小的牺牲块时,执行步骤S718,将牺牲块从第一SBT树或第二SBT树中剔除。
在将牺牲块从第一SBT树或第二SBT树中剔除之后,执行步骤S720,对牺牲块进行擦除操作。
在对牺牲块进行擦除操作之后,执行步骤S722,更新所述牺牲块记录的擦除次数。
步骤S724,获取所述牺牲块的擦除次数记录。
步骤S726,当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块。
步骤S728,当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块。
步骤S730,当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。
本实施例中,通过根据冷数据块构建第一SBT树,根据热数据块构建第二SBT树,从第一SBT树和第二SBT树中获得一个回收代价最小的数据块,作为牺牲块。同一类型数据块管理模块将该牺牲块从第一SBT树或第二SBT树上剔除,并对其数据内容进行擦除操作。当完成擦除操作之后,数据块类型转换模块会根据该牺牲块的擦除次数,将其转换成冷/热数据块或空闲块。将冷热数据划分与牺牲块选择策略建立直接联系,从而可以以最小的回收代价换取更大的回收收益。由于数据读写频率的不一致性,访问频率高的数据往往更容易被修改,存储数据的数据块也更容易执行擦除操作。因此,在系统的最大擦除次数和最小擦除次数之间的差值大于预设阈值时,将擦除次数与最小擦除次数之间的差值不小于预设阈值的牺牲块转换成为冷数据块,将擦除次数与最小擦除次数之间的差值小于阈值的牺牲块转换成为热数据块,从而能够使各数据块的数量相差较小,分布较均衡。使本申请能够减少GC的执行次数,从而提高GC效率,且能在固态硬盘工作负载剧烈变化时,依旧确保各数据块之间的擦除次数差在可控范围内。
应该理解的是,虽然上述实施例涉及的各流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述实施例涉及的各流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种基于固态硬盘内数据冷热划分的数据块动态分配装置,包括:牺牲块获取模块802、擦除次数记录模块804、空闲块转换模块806、热数据块转换模块808和冷数据块转换模块810,其中:
牺牲块获取模块802,用于获取回收代价最小的数据块,得到牺牲块。
擦除次数记录模块804,用于获取所述牺牲块的擦除次数记录。
空闲块转换模块806,用于当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块。
热数据块转换模块808,用于当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块。
冷数据块转换模块810,用于当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。
在一个实施例中,牺牲块获取模块,包括:SBT树获取模块,牺牲块获得模块,回收代价校验模块,最小牺牲块确定模块,牺牲块擦除模块,其中:
SBT树获取模块,用于获取冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;第一SBT树记录各冷数据块的回收代价,第二SBT树记录各热数据块的回收代价。
牺牲块获得模块,用于从第一SBT树获取回收代价最小的冷数据块作为第一牺牲块、从第二SBT树中获取回收代价最小的热数据块作为第二牺牲块。
回收代价校验模块,用于校验第一牺牲块的回收代价是否小于第二牺牲块的回收代价。
最小牺牲块确定模块,用于当第一牺牲块的回收代价小于第二牺牲块的回收代价时,将第一牺牲块作为回收代价最小的牺牲块;当第一牺牲块的回收代价大于第二牺牲块的回收代价时,将第二牺牲块作为回收代价最小的牺牲块。
牺牲块擦除模块,用于当从第一SBT树或第二SBT树中获取到回收代价最小的牺牲块时,将牺牲块从第一SBT树或第二SBT树中剔除,并对牺牲块进行擦除操作。
在一个实施例中,基于固态硬盘内数据冷热划分的数据块动态分配装置,还包括:数据块初始化模块,根结点确定模块,SBT树构建模块,其中:
数据块初始化模块,用于对冷数据块和热数据块进行初始化。
根结点确定模块,用于将第一个冷数据块作为第一SBT树的根结点,将第一个热数据块作为第二SBT树的根结点。
SBT树构建模块,用于根据第N+1个冷数据块的产生顺序和回收代价构建在第一SBT树各父结点的子结点,根据第N+1个热数据块的产生顺序和回收代价确定构建第二SBT树各父结点的子结点,得到冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;
其中,第一SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的冷数据块的回收代价,第一SBT树中右结点对应的冷数据块的回收代价,大于其父结点对应的冷数据块的回收代价;
第二SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的热数据块的回收代价,第二SBT树中右结点对应的热数据块的回收代价,大于其父结点对应的热数据块的回收代价。
在一个实施例中,基于固态硬盘内数据冷热划分的数据块动态分配装置,还包括:二叉树平衡校验模块,旋转操作模块,其中:
二叉树平衡校验模块,用于分别校验第一SBT树、第二SBT树的二叉树是否满足二叉树平衡原则。
旋转操作模块,当第一SBT树的二叉树不满足二叉树平衡原则时,对第一SBT树进行旋转操作;
当第二SBT树的二叉树不满足二叉树平衡原则时,对第二SBT树进行旋转操作。
在一个实施例中,基于固态硬盘内数据冷热划分的数据块动态分配装置,还包括:擦除次数更新模块,其中:
擦除次数更新模块,用于更新牺牲块记录的擦除次数。
在一个实施例中,基于固态硬盘内数据冷热划分的数据块动态分配装置,还包括:擦除次数获取模块,擦除次数确定模块,其中:
擦除次数获取模块,用于获取系统中各个热数据块、冷数据块和空闲块的擦除次数。
擦除次数确定模块,用于根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最大值确定最大擦除次数,根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最小值确定最小擦除次数。
关于基于固态硬盘内数据冷热划分的数据块动态分配装置的具体限定可以参见上文中对于基于固态硬盘内数据冷热划分的数据块动态分配方法的限定,在此不再赘述。上述基于固态硬盘内数据冷热划分的数据块动态分配装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种基于固态硬盘内数据冷热划分的数据块动态分配方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取回收代价最小的数据块,得到牺牲块;
获取所述牺牲块的擦除次数记录;
当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取牺牲块,包括:获取回收代价最小的数据块,得到牺牲块。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取回收代价最小的数据块,得到牺牲块,包括:获取冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;第一SBT树记录各冷数据块的回收代价,第二SBT树记录各热数据块的回收代价;
更新所述牺牲块记录的擦除次数。
从第一SBT树获取回收代价最小的冷数据块作为第一牺牲块、从第二SBT树中获取回收代价最小的热数据块作为第二牺牲块。
校验第一牺牲块的回收代价是否小于第二牺牲块的回收代价;
当第一牺牲块的回收代价小于第二牺牲块的回收代价时,将第一牺牲块作为回收代价最小的牺牲块;
当第一牺牲块的回收代价大于第二牺牲块的回收代价时,将第二牺牲块作为回收代价最小的牺牲块;
当从第一SBT树或第二SBT树中获取到回收代价最小的牺牲块时,将牺牲块从第一SBT树或第二SBT树中剔除,并对牺牲块进行擦除操作。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
对冷数据块和热数据块进行初始化;
将第一个冷数据块作为第一SBT树的根结点,将第一个热数据块作为第二SBT树的根结点;
根据第N+1个冷数据块的产生顺序和回收代价构建在第一SBT树各父结点的子结点,根据第N+1个热数据块的产生顺序和回收代价确定构建第二SBT树各父结点的子结点,得到冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;
其中,第一SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的冷数据块的回收代价,第一SBT树中右结点对应的冷数据块的回收代价,大于其父结点对应的冷数据块的回收代价;
第二SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的热数据块的回收代价,第二SBT树中右结点对应的热数据块的回收代价,大于其父结点对应的热数据块的回收代价。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将牺牲块从第一SBT树或第二SBT树中剔除之后,还包括:
分别校验第一SBT树、第二SBT树的二叉树是否满足二叉树平衡原则;
当第一SBT树的二叉树不满足二叉树平衡原则时,对第一SBT树进行旋转操作;
当第二SBT树的二叉树不满足二叉树平衡原则时,对第二SBT树进行旋转操作。
在一个实施例中,牺牲块的信息包括擦除次数;处理器执行计算机程序时还实现以下步骤:
将牺牲块从第一SBT树或第二SBT树中剔除,并对牺牲块进行擦除操作之后,还包括:
更新牺牲块记录的擦除次数,包括:对牺牲块记录的擦除次数增加预设值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取系统中各个热数据块、冷数据块和空闲块的擦除次数;
根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最大值确定最大擦除次数,根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最小值确定最小擦除次数。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取回收代价最小的数据块,得到牺牲块;
获取所述牺牲块的擦除次数记录;
当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取回收代价最小的数据块,得到牺牲块,包括:获取冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;第一SBT树记录各冷数据块的回收代价,第二SBT树记录各热数据块的回收代价;
从第一SBT树获取回收代价最小的冷数据块作为第一牺牲块、从第二SBT树中获取回收代价最小的热数据块作为第二牺牲块;
校验第一牺牲块的回收代价是否小于第二牺牲块的回收代价;
当第一牺牲块的回收代价小于第二牺牲块的回收代价时,将第一牺牲块作为回收代价最小的牺牲块;
当第一牺牲块的回收代价大于第二牺牲块的回收代价时,将第二牺牲块作为回收代价最小的牺牲块;
当从第一SBT树或第二SBT树中获取到回收代价最小的牺牲块时,将牺牲块从第一SBT树或第二SBT树中剔除,并对牺牲块进行擦除操作。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
对冷数据块和热数据块进行初始化;
将第一个冷数据块作为第一SBT树的根结点,将第一个热数据块作为第二SBT树的根结点;
根据第N+1个冷数据块的产生顺序和回收代价构建在第一SBT树各父结点的子结点,根据第N+1个热数据块的产生顺序和回收代价确定构建第二SBT树各父结点的子结点,得到冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;
其中,第一SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的冷数据块的回收代价,第一SBT树中右结点对应的冷数据块的回收代价,大于其父结点对应的冷数据块的回收代价;
第二SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的热数据块的回收代价,第二SBT树中右结点对应的热数据块的回收代价,大于其父结点对应的热数据块的回收代价。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将牺牲块从第一SBT树或第二SBT树中剔除之后,还包括:
分别校验第一SBT树、第二SBT树的二叉树是否满足二叉树平衡原则;
当第一SBT树的二叉树不满足二叉树平衡原则时,对第一SBT树进行旋转操作;
当第二SBT树的二叉树不满足二叉树平衡原则时,对第二SBT树进行旋转操作。
在一个实施例中,牺牲块的信息包括擦除次数;计算机程序被处理器执行时还实现以下步骤:
将牺牲块从第一SBT树或第二SBT树中剔除,并对牺牲块进行擦除操作之后,还包括:
更新牺牲块记录的擦除次数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取系统中各个热数据块、冷数据块和空闲块的擦除次数;
根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最大值确定最大擦除次数,根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最小值确定最小擦除次数。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于固态硬盘内数据冷热划分的数据块动态分配方法,其特征在于,所述方法包括:
获取回收代价最小的数据块,得到牺牲块;
获取所述牺牲块的擦除次数记录,所述牺牲块的擦除次数的大小基于数据的访问频率决定;
当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块;
当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。
2.根据权利要求1所述的方法,其特征在于,所述获取回收代价最小的数据块,得到牺牲块,包括:获取冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;所述第一SBT树记录各冷数据块的回收代价,所述第二SBT树记录各热数据块的回收代价;
从第一SBT树获取回收代价最小的冷数据块作为第一牺牲块、从第二SBT树中获取回收代价最小的热数据块作为第二牺牲块;
校验所述第一牺牲块的回收代价是否小于所述第二牺牲块的回收代价;
当所述第一牺牲块的回收代价小于所述第二牺牲块的回收代价时,将所述第一牺牲块作为回收代价最小的牺牲块;
当所述第一牺牲块的回收代价大于所述第二牺牲块的回收代价时,将所述第二牺牲块作为回收代价最小的牺牲块;
当从所述第一SBT树或第二SBT树中获取到回收代价最小的牺牲块时,将所述牺牲块从所述第一SBT树或第二SBT树中剔除,并对所述牺牲块进行擦除操作;其中,SBT树为节点大小平衡树。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对所述冷数据块和所述热数据块进行初始化;
将第一个冷数据块作为第一SBT树的根结点,将第一个热数据块作为第二SBT树的根结点;
根据第N+1个冷数据块的产生顺序和回收代价构建在所述第一SBT树各父结点的子结点,根据第N+1个热数据块的产生顺序和回收代价确定构建所述第二SBT树各父结点的子结点,得到冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;
其中,第一SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的冷数据块的回收代价,第一SBT树中右结点对应的冷数据块的回收代价,大于其父结点对应的冷数据块的回收代价;
第二SBT树中左结点对应的冷数据块的回收代价,小于其父结点对应的热数据块的回收代价,第二SBT树中右结点对应的热数据块的回收代价,大于其父结点对应的热数据块的回收代价。
4.根据权利要求2所述的方法,其特征在于,将所述牺牲块从所述第一SBT树或第二SBT树中剔除之后,还包括:
分别校验第一SBT树、第二SBT树的二叉树是否满足二叉树平衡原则;
当第一SBT树的二叉树不满足二叉树平衡原则时,对所述第一SBT树进行旋转操作;
当第二SBT树的二叉树不满足二叉树平衡原则时,对所述第二SBT树进行旋转操作。
5.根据权利要求2所述的方法,其特征在于,将所述牺牲块从所述第一SBT树或第二SBT树中剔除,并对所述牺牲块进行擦除操作之后,还包括:
更新所述牺牲块记录的擦除次数。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取系统中各个热数据块、冷数据块和空闲块的擦除次数;
根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最大值确定最大擦除次数,根据所述热数据块、所述冷数据块和所述空闲块中擦除次数的最小值确定最小擦除次数。
7.一种基于固态硬盘内数据冷热划分的数据块动态分配装置,其特征在于,所述装置包括:
牺牲块获取模块,用于获取回收代价最小的数据块,得到牺牲块;
擦除次数记录模块,用于获取所述牺牲块的擦除次数记录,所述牺牲块的擦除次数的大小基于数据的访问频率决定;
空闲块转换模块,用于当系统的最大擦除次数和最小擦除次数的差值小于预设阈值时,将所述牺牲块转换成空闲块;
热数据块转换模块,用于当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值小于预设阈值时,将所述牺牲块转换成热数据块;
冷数据块转换模块,用于当系统的最大擦除次数和最小擦除次数的差值不小于预设阈值,且当所述牺牲块的擦除次数和最小擦除次数之间的差值不小于预设阈值时,将所述牺牲块转换成冷数据块。
8.根据权利要求7所述的装置,所述牺牲块获取模块,还包括:
SBT树获取模块,用于获取冷数据块对应的第一SBT树,以及热数据块构建对应的第二SBT树;第一SBT树记录各冷数据块的回收代价,第二SBT树记录各热数据块的回收代价;
牺牲块获得模块,用于从第一SBT树获取回收代价最小的冷数据块作为第一牺牲块、从第二SBT树中获取回收代价最小的热数据块作为第二牺牲块;
回收代价校验模块,用于校验第一牺牲块的回收代价是否小于第二牺牲块的回收代价;
最小牺牲块确定模块,用于当第一牺牲块的回收代价小于第二牺牲块的回收代价时,将第一牺牲块作为回收代价最小的牺牲块;当第一牺牲块的回收代价大于第二牺牲块的回收代价时,将第二牺牲块作为回收代价最小的牺牲块;
牺牲块擦除模块,用于当从第一SBT树或第二SBT树中获取到回收代价最小的牺牲块时,将牺牲块从第一SBT树或第二SBT树中剔除,并对牺牲块进行擦除操作;其中,SBT树为节点大小平衡树。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011496681.7A CN112506811B (zh) | 2020-12-17 | 2020-12-17 | 基于固态硬盘内数据冷热划分的数据块动态分配方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011496681.7A CN112506811B (zh) | 2020-12-17 | 2020-12-17 | 基于固态硬盘内数据冷热划分的数据块动态分配方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112506811A CN112506811A (zh) | 2021-03-16 |
CN112506811B true CN112506811B (zh) | 2023-06-09 |
Family
ID=74922099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011496681.7A Active CN112506811B (zh) | 2020-12-17 | 2020-12-17 | 基于固态硬盘内数据冷热划分的数据块动态分配方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112506811B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114281242B (zh) * | 2021-11-15 | 2024-05-10 | 北京智芯微电子科技有限公司 | 存储器负载均衡的方法、装置和设备 |
CN117806573B (zh) * | 2024-03-01 | 2024-05-24 | 山东云海国创云计算装备产业创新中心有限公司 | 一种固态硬盘的搜索方法、装置、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324303A (zh) * | 2020-01-21 | 2020-06-23 | 深圳忆联信息系统有限公司 | Ssd垃圾回收方法、装置、计算机设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339808B (zh) * | 2008-07-28 | 2011-02-09 | 华中科技大学 | 存储块的擦除方法及装置 |
KR102282962B1 (ko) * | 2014-12-22 | 2021-07-30 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
CN105528301A (zh) * | 2015-12-07 | 2016-04-27 | 中国人民解放军信息工程大学 | 一种NAND Flash闪存垃圾回收方法 |
US10445230B2 (en) * | 2017-12-08 | 2019-10-15 | Macronix International Co., Ltd. | Managing block arrangement of super blocks |
CN110688326A (zh) * | 2019-09-23 | 2020-01-14 | 西安微电子技术研究所 | 一种基于多阈值的闪存磨损均衡算法 |
-
2020
- 2020-12-17 CN CN202011496681.7A patent/CN112506811B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324303A (zh) * | 2020-01-21 | 2020-06-23 | 深圳忆联信息系统有限公司 | Ssd垃圾回收方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112506811A (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8880544B2 (en) | Method of adapting a uniform access indexing process to a non-uniform access memory, and computer system | |
US9164887B2 (en) | Power-failure recovery device and method for flash memory | |
KR100977899B1 (ko) | 비휘발성 메모리 시스템에서 아웃-오브-시퀀스 기록 프로세스를 효과적으로 수행하기 위한 방법 및 장치 | |
US8037112B2 (en) | Efficient access of flash databases | |
US7890550B2 (en) | Flash memory system and garbage collection method thereof | |
US8041883B2 (en) | Restoring storage devices based on flash memories and related circuit, system, and method | |
US10922234B2 (en) | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive | |
TWI423022B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
CN112506811B (zh) | 基于固态硬盘内数据冷热划分的数据块动态分配方法、装置 | |
US11397669B2 (en) | Data storage device and non-volatile memory control method | |
TWI479505B (zh) | 資料管理方法、記憶體控制器與記憶體儲存裝置 | |
US7870122B2 (en) | Self-tuning index for flash-based databases | |
CN109947353B (zh) | 存储管理方法、固态硬盘及可读存储介质 | |
US9009442B2 (en) | Data writing method, memory controller and memory storage apparatus | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
CN115756312A (zh) | 数据访问系统、数据访问方法和存储介质 | |
CN109840218A (zh) | 有效数据管理方法以及存储控制器 | |
CN114090637A (zh) | 数据存取方法、装置、设备及存储介质 | |
Lee et al. | An efficient buffer management scheme for implementing a B-tree on NAND flash memory | |
Lee et al. | RMSS: an efficient recovery management scheme on NAND flash memory based solid state disk | |
CN115729439A (zh) | 数据管理方法、装置及固态硬盘 | |
CN114281242A (zh) | 存储器负载均衡的方法、装置和设备 | |
CN110968520B (zh) | 基于统一缓存架构的多流存储设备 | |
Byun et al. | An index rewriting scheme using compression for flash memory database systems |
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 |