CN112988042B - 一种数据存储方法、装置、设备及可读存储介质 - Google Patents
一种数据存储方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN112988042B CN112988042B CN201911312256.5A CN201911312256A CN112988042B CN 112988042 B CN112988042 B CN 112988042B CN 201911312256 A CN201911312256 A CN 201911312256A CN 112988042 B CN112988042 B CN 112988042B
- Authority
- CN
- China
- Prior art keywords
- data
- timestamp
- updating
- period
- target
- 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
Abstract
本申请公开了一种数据存储方法、装置、设备及可读存储介质。本申请公开的方法包括:若接收到Trim操作指令,则根据Trim操作指令确定逻辑地址;将逻辑地址的更新周期更新为Trim操作指令的指令时间戳与逻辑地址的记录I/O时间戳的差值;更新周期表示通过逻辑地址存储的数据的活跃度;将逻辑地址的记录I/O时间戳更新为初始时间戳;若获取到逻辑地址对应的I/O数据,则根据更新周期和记录I/O时间戳存储I/O数据。本申请可以降低存储介质的磨损,提高存储介质的寿命和性能。相应地,本申请公开的一种数据存储装置、设备及可读存储介质,也同样具有上述技术效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种数据存储方法、装置、设备及可读存储介质。
背景技术
在固态硬盘及Nand Flash存储介质中,常通过擦除块来释放无效数据页占用的空间,以实现可用空间的回收。其中,擦除块会带来有效数据页的迁移,当有效数据页较多时,会导致数据写入量增大(即写放大),而数据写入量增大会加剧存储介质的磨损,降低存储介质的寿命和性能。
以固态硬盘为例,固态硬盘中包括多个物理块,每个物理块包括多个数据页。若通过擦除块来释放存储空间,则需要将当前物理块中的有效数据页中的数据迁移至其他物理块中,以便释放当前物理块的存储空间。若当前物理块中的有效数据页较多,那么数据迁移量和写入量会比较大,因此会直接影响固态硬盘的性能。
因此,如何降低存储介质的磨损,提高存储介质的寿命和性能,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种数据存储方法、装置、设备及可读存储介质,以降低存储介质的磨损,提高存储介质的寿命和性能。其具体方案如下:
第一方面,本申请提供了一种数据存储方法,包括:
若接收到Trim操作指令,则根据所述Trim操作指令确定逻辑地址;
将所述逻辑地址的更新周期更新为所述Trim操作指令的指令时间戳与所述逻辑地址的记录I/O时间戳的差值;所述更新周期表示通过所述逻辑地址存储的数据的活跃度;
将所述逻辑地址的记录I/O时间戳更新为初始时间戳;
若获取到所述逻辑地址对应的I/O数据,则根据所述更新周期和所述记录I/O时间戳存储所述I/O数据。
优选地,所述若获取到所述逻辑地址对应的I/O数据,则根据所述更新周期和所述记录I/O时间戳存储所述I/O数据,包括:
获取所述逻辑地址对应的I/O数据;
确定所述I/O数据对应的操作I/O时间戳;
判断所述记录I/O时间戳是否为初始时间戳;
若否,则将所述逻辑地址的更新周期更新为所述操作I/O时间戳与所述记录I/O时间戳的差值;
将所述记录I/O时间戳更新为所述操作I/O时间戳;
分别计算所述更新周期与每个分组的预设周期的差异度;
将所述I/O数据存储至最小差异度对应的目标分组所对应的目标物理块。
优选地,还包括:
若所述记录I/O时间戳为所述初始时间戳,则判断所述更新周期是否为初始周期;
若是,则将所述记录I/O时间戳更新为所述操作I/O时间戳,并将所述更新周期更新为最小预设周期;
将所述I/O数据存储至所述最小预设周期对应的对象分组所对应的对象物理块。
优选地,还包括:
若所述更新周期不是所述初始周期,则保留所述更新周期,并执行所述将所述记录I/O时间戳更新为所述操作I/O时间戳;分别计算所述更新周期与每个分组的预设周期的差异度;将所述I/O数据存储至最小差异度对应的目标分组所对应的目标物理块的步骤。
优选地,所述将所述I/O数据存储至最小差异度对应的目标分组所对应的目标物理块,包括:
将所述I/O数据写入所述目标分组对应的目标数据页,所述目标数据页为所述目标物理块中的物理数据页。
优选地,还包括:
将所述目标分组的预设周期更新为所述目标分组对应的所有逻辑地址的更新周期的平均值。
优选地,还包括:
判断所述目标分组对应的数据页个数是否为其他分组对应的数据页个数的两倍;
若是,则关闭所有分组中的数据页个数最少的分组,将所述目标分组拆分为两个分组,并建立所述两个分组与所述目标物理块的对应关系。
第二方面,本申请提供了一种数据存储装置,包括:
确定模块,用于若接收到Trim操作指令,则根据所述Trim操作指令确定逻辑地址;
第一更新模块,用于将所述逻辑地址的更新周期更新为所述Trim操作指令的指令时间戳与所述逻辑地址的记录I/O时间戳的差值;所述更新周期表示通过所述逻辑地址存储的数据的活跃度;
第二更新模块,用于将所述逻辑地址的记录I/O时间戳更新为初始时间戳;
存储模块,用于若获取到所述逻辑地址对应的I/O数据,则根据所述更新周期和所述记录I/O时间戳存储所述I/O数据。
第三方面,本申请提供了一种数据存储设备,包括:存储单元和主控制器,其中:
所述存储单元包括物理块,所述物理块中的物理数据页用于存储I/O数据;
所述主控制器用于执行前述公开的数据存储方法。
第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的数据存储方法。
通过以上方案可知,本申请提供了一种数据存储方法,包括:若接收到Trim操作指令,则根据所述Trim操作指令确定逻辑地址;将所述逻辑地址的更新周期更新为所述Trim操作指令的指令时间戳与所述逻辑地址的记录I/O时间戳的差值;所述更新周期表示通过所述逻辑地址存储的数据的活跃度;将所述逻辑地址的记录I/O时间戳更新为初始时间戳;若获取到所述逻辑地址对应的I/O数据,则根据所述更新周期和所述记录I/O时间戳存储所述I/O数据。
在本申请中,逻辑地址对应有记录I/O时间戳和更新周期。若接收到Trim操作指令后,根据Trim操作指令确定逻辑地址;将逻辑地址的更新周期更新为Trim操作指令的指令时间戳与逻辑地址的记录I/O时间戳的差值;将逻辑地址的记录I/O时间戳更新为初始时间戳;后续若获取到逻辑地址对应的I/O数据,则根据更新周期和记录I/O时间戳存储I/O数据。其中,更新周期表示通过逻辑地址存储的数据的活跃度。更新周期越短,表示数据越活跃;更新周期越长,表示数据越不活跃。活跃数据可看作热数据,不活跃的数据可看作冷数据。因此根据更新周期和记录I/O时间戳存储数据,可以实现冷热数据的分开存储。如此一来,若通过擦除块来释放存储空间,那么物理块中存留的有效数据页将大大减少,因此可以降低数据写入量和存储介质的磨损,提高存储介质的寿命和性能。
需要说明的是,实现冷热数据的分开存储后,若需要执行Trim操作,则需要处理的无效数据也会减少,因此本申请还可以提高Trim操作的执行效率。
相应地,本申请提供的一种数据存储装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据存储方法流程图;
图2为图1中S104步骤的细化流程图;
图3为本申请公开的一种数据处理方法流程图;
图4为本申请公开的一种数据存储装置示意图;
图5为本申请公开的一种数据存储设备示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,现有技术在通过擦除块来释放存储空间时,数据迁移量和写入量比较大,会加剧存储介质的磨损,降低存储介质的寿命和性能。为此,本申请提供了一种数据存储方案,能够降低存储介质的磨损,提高存储介质的寿命和性能。
参见图1所示,本申请实施例公开了一种数据存储方法,包括:
S101、若接收到Trim操作指令,则根据Trim操作指令确定逻辑地址。
具体的,Trim操作指令中会携带逻辑地址,因此可从Trim操作指令中获取逻辑地址,以便确定逻辑地址。
S102、将逻辑地址的更新周期更新为Trim操作指令的指令时间戳与逻辑地址的记录I/O时间戳的差值。
其中,更新周期表示通过逻辑地址存储的数据的活跃度。更新周期越短,表示数据越活跃;更新周期越长,表示数据越不活跃。
S103、将逻辑地址的记录I/O时间戳更新为初始时间戳。
S104、若获取到逻辑地址对应的I/O数据,则根据更新周期和记录I/O时间戳存储I/O数据。
在本实施例中,逻辑地址对应有记录I/O时间戳和更新周期。记录I/O时间戳可以用于确定更新周期。
在更新Trim操作对应的逻辑地址的记录I/O时间戳和更新周期后,可根据更新周期和记录I/O时间戳存储该逻辑地址上的I/O数据。更新周期越短,表示数据越活跃;更新周期越长,表示数据越不活跃。活跃数据可看作热数据,不活跃的数据可看作冷数据。因此根据更新周期和记录I/O时间戳存储数据,可以实现冷热数据的分开存储。
需要说明的是,实现冷热数据的分开存储后,若需要执行Trim操作,则需要处理的无效数据也会减少,因此本申请还可以提高Trim操作的执行效率。
可见,在本申请实施例中,逻辑地址对应有记录I/O时间戳和更新周期。若接收到Trim操作指令后,根据Trim操作指令确定逻辑地址;将逻辑地址的更新周期更新为Trim操作指令的指令时间戳与逻辑地址的记录I/O时间戳的差值;将逻辑地址的记录I/O时间戳更新为初始时间戳;后续若获取到逻辑地址对应的I/O数据,则根据更新周期和记录I/O时间戳存储I/O数据。如此一来,若通过擦除块来释放存储空间,那么物理块中存留的有效数据页将大大减少,因此可以降低数据写入量和存储介质的磨损,提高存储介质的寿命和性能。
请参见图2,图2为图1中S104步骤的细化流程图。图1中的S104的具体实现步骤包括:
S201、获取Trim操作的逻辑地址对应的I/O数据,并确定I/O数据对应的操作I/O时间戳。
其中,I/O数据可以是主机写操作对应的数据,也可以是垃圾回收操作对应的数据(即需要迁移的有效数据页中的数据)。
S202、判断逻辑地址的记录I/O时间戳是否为初始时间戳;若是,则执行S207;若否,则执行S203。
S203、将逻辑地址的更新周期更新为操作I/O时间戳与记录I/O时间戳的差值。
S204、将记录I/O时间戳更新为操作I/O时间戳。
S205、分别计算更新周期与每个分组的预设周期的差异度。
其中,计算更新周期与预设周期的差异度时,使用的更新后的更新周期。例如:S203步骤将更新周期由A更新为B,那么S205步骤计算的是B与每个分组的预设周期的差异度,从而获得多个差异度。
S206、将I/O数据存储至最小差异度对应的目标分组所对应的目标物理块。
需要说明的是,本实施例预设有多个分组,每个分组对应有预设周期,且各个分组与物理块具有对应关系。其中,若当前存储介质为固态硬盘,那么分组的数量不大于固态硬盘的并行度。其中,逻辑地址的更新周期表示通过该逻辑地址写入的数据的活跃度,更新周期越短,表示数据越活跃;更新周期越长,表示数据越不活跃。活跃数据可看作热数据,不活跃的数据可看作冷数据。各个分组对应的预设周期表示已写入数据的活跃度,因此若逻辑地址的更新周期与分组的预设周期的差异度越小,说明当前需要写入的I/O数据与已写入数据的活跃度相近。
例如:固态硬盘的并行度为3,则最多可预设3个分组:第一分组、第二分组、第三分组。假设第一分组的当前预设周期为8ms、第二分组的当前预设周期为16ms、第三分组的当前预设周期为32ms。固态硬盘初始化后,分组的第一个预设周期可以根据经验或当前固态硬盘支持的业务的规律人为确定。假设逻辑地址对应的更新后的更新周期为16ms,那么该更新周期与第二分组的预设周期的差异度最小,因此将该逻辑地址对应的I/O数据存储至第二分组对应的物理块。
在一种优选地具体实施方式中,将I/O数据存储至最小差异度对应的目标分组所对应的目标物理块,包括:将I/O数据写入目标分组对应的目标数据页,目标数据页为目标物理块中的物理数据页。
具体的,将I/O数据存储至最小差异度对应的目标分组所对应的目标物理块,包括:确定最小差异度对应的目标分组;对当前逻辑地址进行标记,以便当前逻辑地址与目标分组相对应,进而将I/O数据写入目标分组对应的目标数据页。其中,逻辑地址与分组的对应关系随更新周期和预设周期的变化而变化,因此逻辑地址与分组的对应关系是实时变化的。
需要说明的是,分组对应的预设周期根据其对应的逻辑地址的更新周期的更新而更新。例如:某一分组的当前预设周期为8,且I/O数据对应的逻辑地址的更新周期与预设周期8的差异度最小,则当前I/O数据写入该分组对应的物理块后,可根据当前逻辑地址的更新周期更新当前分组的预设周期。在一种优选地具体实施方式中,可以将预设周期更新为当前分组对应的所有逻辑地址的更新周期的平均值。
在本实施例中,可以将目标分组的预设周期更新为目标分组对应的所有逻辑地址的更新周期的平均值。
在一种优选地具体实施方式中,将I/O数据存储至最小预设周期对应的目标分组所对应的目标物理块之后,还包括分组拆分步骤。分组拆分步骤具体包括:判断目标分组对应的数据页个数是否为其他分组对应的数据页个数的两倍;若是,则关闭所有分组中的数据页个数最少的分组,将目标分组拆分为两个分组,并建立两个分组与目标物理块的对应关系。
在一种优选地具体实施方式中,将I/O数据存储至最小预设周期对应的目标分组所对应的目标物理块之前,还包括分组拆分步骤。分组拆分步骤具体包括:判断目标分组对应的数据页个数是否为其他分组对应的数据页个数的两倍;若是,则关闭所有分组中的数据页个数最少的分组,将目标分组拆分为两个分组,并建立两个分组与目标物理块的对应关系。
也就是说,当目标分组对应的数据页个数较多时,将其拆分为2个分组。若当前分组的数量等于固态硬盘的并行度,为避免分组的数量大于固态硬盘的并行度,因此将所有分组中的数据页个数最少的分组关闭。由上述可知:当满足分组拆分条件时,分组的拆分步骤可在I/O数据存储至物理块之前执行,也可在I/O数据存储至物理块之后执行。
按照上述拆分步骤的核心思想,分组拆分步骤可以包括:
判断目标分组对应的数据页个数是否为其他分组对应的数据页个数的N倍;N为实数且不小于2;若是,则将所有分组按照其对应的数据页个数从小到大排序,获得分组序列,删除分组序列中的前N-1个分组;将目标分组拆分为N-1个子分组,并建立N-1个子分组和目标物理块的对应关系。
S207、判断更新周期是否为初始周期;若是,则执行S208;若否,则保留更新周期,并执行S204。
S208、将记录I/O时间戳更新为操作I/O时间戳,并将更新周期更新为最小预设周期。
S209、将I/O数据存储至最小预设周期对应的对象分组所对应的对象物理块。
需要说明的是,若当前逻辑地址的更新周期和记录I/O时间戳均为初始值,表示该逻辑地址从未被写过数据,此种情况下,无法准确确定当前更新周期与哪个预设周期差异度最小,因此直接将I/O数据存储至最小预设周期对应的对象分组所对应的对象物理块。最小预设周期的更新周期最短,短时间内发生垃圾回收的可能性最大,可通过提前让这些I/O数据发生垃圾回收,以尽早暴露出分组是否准确,如果不准确,及时做分组调整(即更新逻辑地址的更新周期,以使下次该逻辑地址上有数据写入时,将数据存储至与其热度更接近的物理块)。其中,最小预设周期为当前所有预设周期中的最小值。由于各个分组的预设周期会实时变化,所以最小预设周期也是实时变化的。
其中,对象分组和目标分组可能是同一个分组,也可能是两个不同的分组。因此对象物理块和目标物理块可能是同一个物理块,也可能是两个不同的物理块。
在一种优选地具体实施方式中,将I/O数据存储至最小预设周期对应的对象分组所对应的对象物理块,包括:将I/O数据写入对象分组对应的对象数据页,对象数据页为对象物理块中的物理数据页。
在本实施例中,可以将对象分组的预设周期更新为对象分组对应的所有逻辑地址的更新周期的平均值。
在一种优选地具体实施方式中,将I/O数据存储至最小预设周期对应的对象分组所对应的对象物理块之后,还包括分组拆分步骤。分组拆分步骤具体包括:判断对象分组对应的数据页个数是否为其他分组对应的数据页个数的两倍;若是,则关闭所有分组中的数据页个数最少的分组,将对象分组拆分为两个分组,并建立两个分组与对象物理块的对应关系。
在一种优选地具体实施方式中,将I/O数据存储至最小预设周期对应的对象分组所对应的对象物理块之前,还包括分组拆分步骤。分组拆分步骤具体包括:判断对象分组对应的数据页个数是否为其他分组对应的数据页个数的两倍;若是,则关闭所有分组中的数据页个数最少的分组,将对象分组拆分为两个分组,并建立两个分组与对象物理块的对应关系。
也就是说,当对象分组对应的数据页个数较多时,将其拆分为2个分组。若当前分组的数量等于固态硬盘的并行度,为避免分组的数量大于固态硬盘的并行度,因此将所有分组中的数据页个数最少的分组关闭。由上述可知:当满足分组拆分条件时,分组的拆分步骤可在I/O数据存储至物理块之前执行,也可在I/O数据存储至物理块之后执行。
按照上述拆分步骤的核心思想,分组拆分步骤可以包括:
判断对象分组对应的数据页个数是否为其他分组对应的数据页个数的N倍;N为实数且不小于2;若是,则将所有分组按照其对应的数据页个数从小到大排序,获得分组序列,删除分组序列中的前N-1个分组;将对象分组拆分为N-1个子分组,并建立N-1个子分组和对象物理块的对应关系。
在一种优选地具体实施方式中,判断逻辑地址的记录I/O时间戳是否为初始时间戳之前,还包括:确定逻辑地址所属的地址范围,将地址范围的记录I/O时间戳和更新周期确定为逻辑地址的记录I/O时间戳和更新周期。
需要说明的是,逻辑地址的数量较多,若每个逻辑地址都对应一个记录I/O时间戳和一个更新周期,那么需要维护的记录I/O时间戳和更新周期将非常多,如此不利于方案实施,会增加计算开销。为此,可以将逻辑地址进行分段,分段后,属于同一地址段(即地址范围)的多个逻辑地址将对应同一个记录I/O时间戳和同一个更新周期,从而降低计算开销。
可见,若Trim操作的逻辑地址上有I/O数据需要写入,那么判断逻辑地址的记录I/O时间戳是否为初始时间戳;若否,则更新该逻辑地址的记录I/O时间戳和更新周期,进而确定更新周期与各个分组的预设周期的差异度,并将当前I/O数据存储至最小差异度对应的目标分组所对应的目标物理块,从而使具有相近活跃度的数据存储在同一物理块中,也就实现了冷热数据的分开存储。如此一来,若通过擦除块来释放存储空间,那么物理块中存留的有效数据页将大大减少,因此可以降低数据写入量和存储介质的磨损,提高存储介质的寿命和性能。
基于图2所示的方法,若接收到垃圾回收指令,可实现如图3所示的数据处理方法,包括:
S301、接收垃圾回收指令。
S302、确定垃圾回收指令对应的物理数据页。
S303、查询物理数据页对应的逻辑地址。
具体的,垃圾回收指令会携带有物理数据页的物理地址,因此可从垃圾回收指令中获取物理地址,进而依据物理地址与逻辑地址的映射表,确定逻辑地址。
S304、增大逻辑地址的更新周期,获得目标更新周期。
其中,更新周期表示物理数据页中的数据的活跃度。更新周期越短,表示数据越活跃;更新周期越长,表示数据越不活跃。活跃数据可看作热数据,不活跃的数据可看作冷数据。
S305、计算目标更新周期与每个分组的预设周期的差异度。
S306、将物理数据页中的数据迁移至最小差异度对应的分组所对应的物理块。
在一种优选地具体实施方式中,增大逻辑地址的更新周期,获得目标更新周期,包括:将更新周期加倍,获得目标更新周期。例如:原更新周期为3,将更新周期加倍后,获得的目标更新周期为3+3=6。在获得目标更新周期后,可计算目标更新周期与每个分组的预设周期的差异度,并将物理数据页中的数据迁移至最小差异度对应的分组所对应的物理块,如此可以实现冷热数据的分开存储。
需要说明的是,若某个物理块中存在有效物理数据页,则做垃圾回收时需要迁移出有效物理数据页;如果一个物理块做垃圾回收时需要迁移的有效物理数据页多,表明分组不准确。因此,一旦垃圾回收时需要搬移有效物理数据页,表明该有效物理数据页的分组是不准确的,需要对其进行惩罚重新调整分组。因此,本实施例中,通过垃圾回收指令确定需要迁移的有效物理数据页,再通过该有效物理数据页的物理地址查询该有效物理数据页对应的逻辑地址,最后通过增大该逻辑地址的更新周期进行惩罚调整分组。
在本实施例中,逻辑地址不仅对应有更新周期,还对应有记录I/O时间戳。记录I/O时间戳可以用于确定更新周期。
需要说明的是,本实施例预设有多个分组,每个分组对应有预设周期,且各个分组与物理块具有对应关系。其中,若当前存储介质为固态硬盘,那么分组的数量不大于固态硬盘的并行度。各个分组对应的预设周期表示已写入数据的活跃度,因此若逻辑地址的更新周期与分组的预设周期的差异度越小,说明当前需要写入的I/O数据与已写入数据的活跃度相近。
例如:固态硬盘的并行度为3,则最多可预设3个分组:第一分组、第二分组、第三分组。假设第一分组的当前预设周期为8ms、第二分组的当前预设周期为16ms、第三分组的当前预设周期为32ms。固态硬盘初始化后,分组的第一个预设周期可以根据经验或当前固态硬盘支持的业务的规律人为确定。假设逻辑地址对应的更新后的更新周期为16ms,那么该更新周期与第二分组的预设周期的差异度最小,因此将该逻辑地址对应的I/O数据存储至第二分组对应的物理块。
需要说明的是,实现冷热数据的分开存储后,若再次执行垃圾回收操作,则需要迁移的数据量会大大减少,因此本申请还可以提高垃圾回收操作的执行效率。
可见,在本申请实施例中,逻辑地址对应有更新周期。若对逻辑地址执行垃圾回收操作(即擦除该逻辑地址对应的物理数据页中的数据),那么增大逻辑地址的更新周期,从而降低当前迁移的数据的活跃度,使其与其他数据(与当前迁移的数据具有相近活跃度的数据)存储在同一物理块中,实现冷热数据的分开存储。如此一来,若通过擦除块来释放存储空间,那么物理块中存留的有效数据页将大大减少,因此可以降低数据写入量和存储介质的磨损,提高存储介质的寿命和性能。
参照图1、图2和图3所示的方法流程,可实现如下方案,具体实现过程包括:初始化部分以及更新部分。
一、初始化部分包括:初始化LBA(Logical Block Address,逻辑地址)生命周期表和初始化分组。
(1)初始化LBA生命周期表包括:
在固态硬盘内部建立LBA生命周期表,LBA生命周期表包括的字段如表1所示。
表1
行号(r) | 记录I/O时间戳 | 更新周期 |
1 | 1.244542359 | 2.35969464 |
在表1中,行号表示某一地址范围,包括多个逻辑地址;记录I/O时间戳和更新周期即当前地址范围对应的记录I/O时间戳和更新周期。在本实施例中,将距离当前时间最近的任意一个逻辑地址的操作I/O时间戳记录为记录I/O时间戳。当然,还可以将当前行号包括的所有逻辑地址的操作I/O时间戳的平均值记录为记录I/O时间戳。
各个行号对应的初始时间戳为-1,初始周期为0。由于多个逻辑地址对应一行,因此任何一个逻辑地址上有写操作发生,该行的记录I/O时间戳和更新周期就可能发生改变。
其中,同一个逻辑地址上有两次写操作的时间间隔,称为当前逻辑地址的更新周期,用两次操作I/O时间戳的差来表示,单位一般为微妙。当然,同一行号的不同逻辑地址的最近一次写操作的时间间隔,也成为当前逻辑地址的更新周期,用两个不同逻辑地址的两次操作,I/O时间戳的差来表示,单位一般为微妙。更新周期越短,表示被操作数据越活跃(即数据越热);更新周期越长,表示被操作数据越不活跃(即数据越冷)。
其中,记录I/O时间戳可以采用浮点数微妙为单位进行计算,也可以通过自定义定时器(比如若干时钟周期为一个定时周期)利用整数进行计算。如果利用浮点数,则需要64位来记录I/O时间戳,如果利用整数,则需要32位来记录I/O时间戳。
(2)初始化分组具体包括:
在固态硬盘内部建立8个分组,从0到7编号,并设置每个分组对应的预设周期,每个分组对应的物理块。其中,不同分组对应不同物理块。8为当前固态硬盘的并行度。各个分组与预设周期请参见表2。
表2
分组编号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
预设周期/ms | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 |
二、更新部分包括:更新LBA生命周期表和更新预设周期。
(1)更新LBA生命周期表具体包括:
若任一个逻辑地址上发生写操作(此写操作可以是主机写操作,也可以是垃圾回收操作时对有效数据页的迁移写操作),则确定当前写操作的操作I/O时间戳;同时判断逻辑地址的记录I/O时间戳是否为初始时间戳;若否,则将逻辑地址的更新周期更新为操作I/O时间戳与记录I/O时间戳的差值;将记录I/O时间戳更新为操作I/O时间戳;若记录I/O时间戳为初始时间戳,则判断更新周期是否为初始周期;若是,则将记录I/O时间戳更新为操作I/O时间戳,并将更新周期更新为最小预设周期。若更新周期不是初始周期,则保留更新周期,并将记录I/O时间戳更新为操作I/O时间戳。记录I/O时间戳和更新周期完成更新后,可按照相应流程写入当前写操作对应的数据,以实现冷热数据的分开存储。具体过程可参见图2,本实施例不再赘述。
若接收到Trim操作指令,则根据Trim操作指令确定逻辑地址;将逻辑地址的更新周期更新为Trim操作指令的指令时间戳与逻辑地址的记录I/O时间戳的差值;将逻辑地址的记录I/O时间戳更新为初始时间戳;后续若获取到逻辑地址对应的I/O数据,则根据更新周期和记录I/O时间戳存储I/O数据,从而实现冷热数据的分开存储。
若对逻辑地址执行垃圾回收操作(即擦除该逻辑地址对应的物理数据页中的数据),那么增大逻辑地址的更新周期,获得目标更新周期;计算目标更新周期与每个分组的预设周期的差异度;将物理数据页中的数据迁移至最小差异度对应的分组所对应的物理块,从而使具有相近活跃度的数据存储在同一物理块中,实现冷热数据的分开存储。
(2)更新预设周期具体包括:
根据当前逻辑地址对应的当前更新周期更新当前逻辑地址对应的分组的预设周期。即:将当前分组的预设周期更新为当前分组对应的所有逻辑地址的更新周期的平均值。
可见,本实施提供的方案以分组的思想来存储冷热数据,从而可降低写放大,从而延长固态硬盘的寿命,降低成本,同时提高固态硬盘的性能。
下面对本申请实施例提供的一种数据存储装置进行介绍,下文描述的一种数据存储装置与上文描述的一种数据存储方法可以相互参照。
参见图4所示,本申请实施例公开了一种数据存储装置,包括:
确定模块401,用于若接收到Trim操作指令,则根据Trim操作指令确定逻辑地址;
第一更新模块402,用于将逻辑地址的更新周期更新为Trim操作指令的指令时间戳与逻辑地址的记录I/O时间戳的差值;更新周期表示通过逻辑地址存储的数据的活跃度;
第二更新模块403,用于将逻辑地址的记录I/O时间戳更新为初始时间戳;
存储模块404,用于若获取到逻辑地址对应的I/O数据,则根据更新周期和记录I/O时间戳存储I/O数据。
在一种优选地具体实施方式中,存储模块包括:
获取单元,用于获取逻辑地址对应的I/O数据;
确定单元,用于确定I/O数据对应的操作I/O时间戳;
第一判断单元,用于判断记录I/O时间戳是否为初始时间戳;
第一更新单元,用于若记录I/O时间戳不是初始时间戳,则将逻辑地址的更新周期更新为操作I/O时间戳与记录I/O时间戳的差值;
第二更新单元,用于将记录I/O时间戳更新为操作I/O时间戳;
计算单元,用于分别计算更新周期与每个分组的预设周期的差异度;
第一存储单元,用于将I/O数据存储至最小差异度对应的目标分组所对应的目标物理块。
在一种优选地具体实施方式中,存储模块还包括:
第二判断单元,用于若记录I/O时间戳为初始时间戳,则判断更新周期是否为初始周期;
第三更新单元,用于若更新周期是初始周期,则将记录I/O时间戳更新为操作I/O时间戳,并将更新周期更新为最小预设周期;
第二存储单元,用于将I/O数据存储至最小预设周期对应的对象分组所对应的对象物理块。
在一种优选地具体实施方式中,存储模块还包括:
执行单元,用于若更新周期不是初始周期,则保留更新周期,并执行第二更新单元、计算单元和第一存储单元中的步骤。
在一种优选地具体实施方式中,第一存储单元具体用于:
将I/O数据写入目标分组对应的目标数据页,目标数据页为目标物理块中的物理数据页。
在一种优选地具体实施方式中,存储模块还包括:
第四更新单元,用于将目标分组的预设周期更新为目标分组对应的所有逻辑地址的更新周期的平均值。
在一种优选地具体实施方式中,存储模块还包括:
第三判断单元,用于判断目标分组对应的数据页个数是否为其他分组对应的数据页个数的两倍;
拆分单元,用于若目标分组对应的数据页个数是其他分组对应的数据页个数的两倍,则关闭所有分组中的数据页个数最少的分组,将目标分组拆分为两个分组,并建立两个分组与目标物理块的对应关系。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种数据存储装置,该装置可使具有相近活跃度的数据存储在同一物理块中,也就实现了冷热数据的分开存储。如此一来,若通过擦除块来释放存储空间,那么物理块中存留的有效数据页将大大减少,因此可以降低数据写入量和存储介质的磨损,提高存储介质的寿命和性能。
下面对本申请实施例提供的一种数据存储设备进行介绍,下文描述的一种数据存储设备与上文描述的一种数据存储方法及装置可以相互参照。
参见图5所示,本申请实施例公开了一种数据存储设备,包括:存储单元501和主控制器502,其中:
存储单元包括物理块,物理块中的物理数据页用于存储I/O数据;
主控制器用于执行前述任意实施例公开的方法。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种数据存储方法、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的数据存储方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种数据存储方法,其特征在于,包括:
若接收到Trim操作指令,则根据所述Trim操作指令确定逻辑地址;
将所述逻辑地址的更新周期更新为所述Trim操作指令的指令时间戳与所述逻辑地址的记录I/O时间戳的差值;所述更新周期表示通过所述逻辑地址存储的数据的活跃度;
将所述逻辑地址的记录I/O时间戳更新为初始时间戳;
若获取到所述逻辑地址对应的I/O数据,则根据所述更新周期和所述记录I/O时间戳存储所述I/O数据;
其中,若所述记录I/O时间戳为所述初始时间戳,则判断所述更新周期是否为初始周期;若是,则将所述记录I/O时间戳更新为所述I/O数据对应的操作I/O时间戳,并将所述更新周期更新为最小预设周期;将所述I/O数据存储至所述最小预设周期对应的对象分组所对应的对象物理块。
2.根据权利要求1所述的数据存储方法,其特征在于,所述若获取到所述逻辑地址对应的I/O数据,则根据所述更新周期和所述记录I/O时间戳存储所述I/O数据,包括:
获取所述逻辑地址对应的I/O数据;
确定所述I/O数据对应的操作I/O时间戳;
判断所述记录I/O时间戳是否为初始时间戳;
若否,则将所述逻辑地址的更新周期更新为所述操作I/O时间戳与所述记录I/O时间戳的差值;
将所述记录I/O时间戳更新为所述操作I/O时间戳;
分别计算所述更新周期与每个分组的预设周期的差异度;
将所述I/O数据存储至最小差异度对应的目标分组所对应的目标物理块。
3.根据权利要求2所述的数据存储方法,其特征在于,还包括:
若所述更新周期不是所述初始周期,则保留所述更新周期,并执行所述将所述记录I/O时间戳更新为所述操作I/O时间戳;分别计算所述更新周期与每个分组的预设周期的差异度;将所述I/O数据存储至最小差异度对应的目标分组所对应的目标物理块的步骤。
4.根据权利要求2所述的数据存储方法,其特征在于,所述将所述I/O数据存储至最小差异度对应的目标分组所对应的目标物理块,包括:
将所述I/O数据写入所述目标分组对应的目标数据页,所述目标数据页为所述目标物理块中的物理数据页。
5.根据权利要求4所述的数据存储方法,其特征在于,还包括:
将所述目标分组的预设周期更新为所述目标分组对应的所有逻辑地址的更新周期的平均值。
6.根据权利要求4所述的数据存储方法,其特征在于,还包括:
判断所述目标分组对应的数据页个数是否为其他分组对应的数据页个数的两倍;
若是,则关闭所有分组中的数据页个数最少的分组,将所述目标分组拆分为两个分组,并建立所述两个分组与所述目标物理块的对应关系。
7.一种数据存储装置,其特征在于,包括:
确定模块,用于若接收到Trim操作指令,则根据所述Trim操作指令确定逻辑地址;
第一更新模块,用于将所述逻辑地址的更新周期更新为所述Trim操作指令的指令时间戳与所述逻辑地址的记录I/O时间戳的差值;所述更新周期表示通过所述逻辑地址存储的数据的活跃度;
第二更新模块,用于将所述逻辑地址的记录I/O时间戳更新为初始时间戳;
存储模块,用于若获取到所述逻辑地址对应的I/O数据,则根据所述更新周期和所述记录I/O时间戳存储所述I/O数据;
其中,存储模块还包括:
第二判断单元,用于若所述记录I/O时间戳为所述初始时间戳,则判断所述更新周期是否为初始周期;
第三更新单元,用于若更新周期是初始周期,则将所述记录I/O时间戳更新为所述I/O数据对应的操作I/O时间戳,并将所述更新周期更新为最小预设周期;
第二存储单元,用于将所述I/O数据存储至所述最小预设周期对应的对象分组所对应的对象物理块。
8.一种数据存储设备,其特征在于,包括:存储单元和主控制器,其中:
所述存储单元包括物理块,所述物理块中的物理数据页用于存储I/O数据;
所述主控制器用于执行如权利要求1至6任一项所述的数据存储方法。
9.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的数据存储方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911312256.5A CN112988042B (zh) | 2019-12-18 | 2019-12-18 | 一种数据存储方法、装置、设备及可读存储介质 |
PCT/CN2020/115543 WO2021120731A1 (zh) | 2019-12-18 | 2020-09-16 | 数据存储方法及组件,数据处理方法及组件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911312256.5A CN112988042B (zh) | 2019-12-18 | 2019-12-18 | 一种数据存储方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112988042A CN112988042A (zh) | 2021-06-18 |
CN112988042B true CN112988042B (zh) | 2023-04-18 |
Family
ID=76344330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911312256.5A Active CN112988042B (zh) | 2019-12-18 | 2019-12-18 | 一种数据存储方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112988042B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799535A (zh) * | 2012-06-29 | 2012-11-28 | 记忆科技(深圳)有限公司 | 固态硬盘的数据处理方法及固态硬盘 |
CN102902628A (zh) * | 2012-09-18 | 2013-01-30 | 记忆科技(深圳)有限公司 | 一种基于闪存实现的冷热数据自动分离方法、系统及闪存 |
CN103455435A (zh) * | 2013-08-29 | 2013-12-18 | 华为技术有限公司 | 数据写入方法及装置 |
CN106227471A (zh) * | 2016-08-19 | 2016-12-14 | 深圳大普微电子科技有限公司 | 固态硬盘和应用于固态硬盘的数据存取方法 |
CN107239412A (zh) * | 2017-06-19 | 2017-10-10 | 杭州宏杉科技股份有限公司 | 基于Thin‑LUN的存储空间配置方法、数据写入方法及存储设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150081810A (ko) * | 2014-01-07 | 2015-07-15 | 한국전자통신연구원 | 데이터 저장장치에 대한 다중 스냅샷 관리 방법 및 장치 |
-
2019
- 2019-12-18 CN CN201911312256.5A patent/CN112988042B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799535A (zh) * | 2012-06-29 | 2012-11-28 | 记忆科技(深圳)有限公司 | 固态硬盘的数据处理方法及固态硬盘 |
CN102902628A (zh) * | 2012-09-18 | 2013-01-30 | 记忆科技(深圳)有限公司 | 一种基于闪存实现的冷热数据自动分离方法、系统及闪存 |
CN103455435A (zh) * | 2013-08-29 | 2013-12-18 | 华为技术有限公司 | 数据写入方法及装置 |
CN106227471A (zh) * | 2016-08-19 | 2016-12-14 | 深圳大普微电子科技有限公司 | 固态硬盘和应用于固态硬盘的数据存取方法 |
CN107239412A (zh) * | 2017-06-19 | 2017-10-10 | 杭州宏杉科技股份有限公司 | 基于Thin‑LUN的存储空间配置方法、数据写入方法及存储设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112988042A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7948798B1 (en) | Mixed multi-level cell and single level cell storage device | |
CN111125447A (zh) | 一种元数据访问方法、装置、设备及可读存储介质 | |
CN110673789B (zh) | 固态硬盘的元数据存储管理方法、装置、设备及存储介质 | |
KR102349999B1 (ko) | 반도체 장치 및 그 동작 방법 | |
JP2005242897A (ja) | フラッシュディスク装置 | |
WO2011072538A1 (zh) | Nandflash擦除均衡的方法及装置 | |
CN109960471B (zh) | 数据存储方法、装置、设备以及存储介质 | |
CN110377233B (zh) | Ssd读性能优化方法、装置、计算机设备及存储介质 | |
CN104731713A (zh) | 基于随机映射的相变内存磨损均衡方法及系统 | |
CN110389712B (zh) | 数据写入方法及其装置、固态硬盘和计算机可读存储介质 | |
CN110069218A (zh) | 冷热数据分离方法、装置、计算机设备及存储介质 | |
CN104714894A (zh) | 一种分层的基于随机映射的相变内存磨损均衡方法及系统 | |
JP2014225197A (ja) | データ記憶システムおよびその制御方法 | |
CN110688256A (zh) | 一种元数据上电恢复方法、装置、电子设备及存储介质 | |
CN115756312A (zh) | 数据访问系统、数据访问方法和存储介质 | |
CN114840449B (zh) | 基于MCU片内flash的数据存储方法、装置、设备及存储介质 | |
CN107273306B (zh) | 一种固态硬盘的数据读取、数据写入方法及固态硬盘 | |
KR100624973B1 (ko) | 플래시 메모리의 효율적인 소거 횟수 평준화방법(k-평준화) | |
CN104134027A (zh) | 一种顺序流识别的方法以及装置 | |
CN112988042B (zh) | 一种数据存储方法、装置、设备及可读存储介质 | |
CN105512047A (zh) | Flash闪存的写操作、擦除操作方法及装置 | |
CN112988040B (zh) | 一种数据存储方法、装置、设备及可读存储介质 | |
CN110795282B (zh) | 一种数据回滚方法、装置、设备及存储介质 | |
CN112988612B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN109992527B (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 |