CN110673789B - 固态硬盘的元数据存储管理方法、装置、设备及存储介质 - Google Patents
固态硬盘的元数据存储管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110673789B CN110673789B CN201910839078.5A CN201910839078A CN110673789B CN 110673789 B CN110673789 B CN 110673789B CN 201910839078 A CN201910839078 A CN 201910839078A CN 110673789 B CN110673789 B CN 110673789B
- Authority
- CN
- China
- Prior art keywords
- metadata
- slc
- written
- data
- storing
- 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
- 239000007787 solid Substances 0.000 title claims abstract description 88
- 238000007726 management method Methods 0.000 title claims description 87
- 238000000034 method Methods 0.000 claims abstract description 52
- 230000008569 process Effects 0.000 claims description 18
- 238000013500 data storage Methods 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/062—Securing 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/0674—Disk device
-
- 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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种固态硬盘的元数据存储管理方法、装置、设备及计算机可读存储介质。其中,方法应用于固态硬盘额元数据管理模块,元数据管理模块用于管理固态硬盘的元数据和存储元数据的SLC块,方法包括预先构建用于存储未写入数据的SLC块的freeBlock列表和用于存储写满数据的SLC块的usedBlock列表,并从freeBlock列表中选择用于存储待写入元数据的第一SLC块;当检测待写入元数据写入时,将待写入元数据存储至第一SLC块,并更新第一SLC块的管理信息;管理信息包括存储数据类型、擦除次数、当前数据写入页号和读写擦错误信息。本申请技术方案可有效保证固态硬盘中存储元数据的准确性,从而提升固态硬盘的稳定性,降低故障发生概率。
Description
技术领域
本发明实施例涉及元数据存储技术领域,特别是涉及一种固态硬盘的元数据存储管理方法、装置、设备及计算机可读存储介质。
背景技术
随着互联网、云技术的快速发展,数据呈现爆炸式增长,相应的数据存储技术也面临着严峻的挑战。在大数据时代,海量数据的存储位于越来重要的地位,在CPU等计算部件速率越来越高的同时,数据的存储成为系统性能提升的瓶颈。固态硬盘(Solid StateDrive,SSD) 由于其读写速度快、能耗低,且随着NAND价格逐渐下降,而被广泛应用。
随着固态硬盘的应用场景越来越广和越来越复杂,固态硬盘的性能、容量的要求也越来越高。无论从性能还是稳定性上,都是有严格标准的,最重要的一方面就是性能的一致性,即在固态硬盘的使用过程中,不允许读写性能的突变,这将导致应用无法预知固态硬盘的状态,从而给应用的运行带来不必要的麻烦。如何保证固态硬盘性能的一致性成为了固态硬盘固件研究的一个重要课题。
当前固态硬盘的设计中,不仅要存储用户数据还要存储元数据,元数据为FTL(Flash translation layer,闪存转换层)的管理数据,包含用户数据的映射表L2P表、硬件配置信息等。尽管元数据的总数据量相比用户数据来说非常少,但是元数据信息的正确性影响着SSD固件运行的正确性和稳定性,对于保证固态硬盘性能的一致性是非常必要的。可见,如何保证固态硬盘中存储元数据的准确性,从而提升固态硬盘的稳定性,是本领域技术人员需要解决的问题。
发明内容
本公开实施例提供了一种固态硬盘的元数据存储管理方法、装置、设备及计算机可读存储介质,有效保证固态硬盘中存储元数据的准确性,从而提升固态硬盘的稳定性,降低故障发生概率。
为解决上述技术问题,本发明实施例提供以下技术方案:
本发明实施例一方面提供了一种固态硬盘的元数据存储管理方法,应用于元数据管理模块,所述元数据管理模块用于管理固态硬盘的元数据和存储所述元数据的SLC块,包括:
预先构建用于存储未写入数据的SLC块的freeBlock列表和用于存储写满数据的SLC块的usedBlock列表,并从所述freeBlock列表中选择用于存储待写入元数据的第一SLC块;
当检测待写入元数据写入时,将所述待写入元数据存储至所述第一SLC块,并更新所述第一SLC块的管理信息;
其中,所述管理信息包括存储数据类型、擦除次数、当前数据写入页号和读写擦错误信息。
可选的,所述将所述待写入元数据存储至所述第一SLC块包括:
预先设置元数据存储方式为顺序存储格式;所述顺序存储格式为同时将更新元数据和基础元数据写入至当前SLC中,所述更新元数据为所述待写入元数据,所述基础元数据为依次循环从按照数据块顺序编号的所述固态硬盘的初始元数据中选取的预设长度数据;
根据上一次写入元数据过程中的基础元数据确定当前基础元数据;
按照所述顺序存储格式将所述待写入元数据和所述当前基础元数据同时存储至所述第一SLC块。
可选的,所述按照所述顺序存储格式将所述待写入元数据和所述当前基础元数据同时存储至所述第一SLC块之后,还包括:
判断所述usedBlock列表中包含的SLC块总数是否超过预设阈值;
若是,则根据各SLC块加入至所述usedBlock列表的时间从前到后排列各SLC块,并按照降序擦除多个SLC块,以使所述usedBlock 列表中当前SLC块数量不超过预设阈值。
可选的,所述从所述freeBlock列表中选择用于存储待写入元数据的第一SLC块包括:
根据所述freeBlock列表中各SLC块管理信息中的擦除次数值选择最小擦除次数值对应的SLC块,以作为所述第一SLC块。
可选的,还包括:
判断所述usedBlock列表中是否存在有效数据量为0的第二SLC 块;
若是,则擦除所述第二SLC块,并将所述第二SLC块的管理信息中的擦除次数加1;将擦除次数递增后的第二SLC块发送至所述 freeBlock列表中。
可选的,所述将所述待写入元数据存储至所述第一SLC块,并更新所述第一SLC块的管理信息包括:
根据所述第一SLC块的管理信息中的当前数据写入页号,将所述待写入元数据写入相应页面上;
判断在所述第一SLC块中写入所述待存储数据的页号是否为所述第一SLC块的最后一页;
若是,则将所述第一SLC块发送至所述usedBlock列表中,并将所述第一SLC块的存储数据类型更改为对应所述待写入元数据的数据类型。
本发明实施例另一方面提供了一种固态硬盘的元数据存储管理装置,应用于元数据管理模块,所述元数据管理模块用于管理固态硬盘的元数据和存储所述元数据的SLC块,包括:
预处理模块,用于预先构建用于存储未写入数据的SLC块的 freeBlock列表和用于存储写满数据的SLC块的usedBlock列表,并从所述freeBlock列表中选择用于存储待写入元数据的第一SLC块;
元数据存储模块,用于当检测待写入元数据写入时,将所述待写入元数据存储至所述第一SLC块,并更新所述第一SLC块的管理信息;所述管理信息包括存储数据类型、擦除次数、当前数据写入页号和读写擦错误信息。
可选的,所述元数据存储模块包括:
存储格式设置子模块,用于预先设置元数据存储方式为顺序存储格式;所述顺序存储格式为同时将更新元数据和基础元数据写入至当前SLC中,所述更新元数据为所述待写入元数据,所述基础元数据为依次循环从所述固态硬盘当前时刻按照顺序编号的初始元数据中选取预设长度的数据;
基础元数据确定子模块,用于根据上一次写入元数据过程中的基础元数据确定当前基础元数据;
存储子模块,用于按照所述顺序存储格式将所述待写入元数据和所述当前基础元数据同时存储至所述第一SLC块。
本发明实施例还提供了一种固态硬盘的元数据存储管理设备,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述固态硬盘的元数据存储管理方法的步骤。
本发明实施例最后还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有固态硬盘的元数据存储管理程序,所述固态硬盘的元数据存储管理程序被处理器执行时实现如前任一项所述固态硬盘的元数据存储管理方法的步骤。
本申请提供的技术方案的优点在于,将固态硬盘的元数据存储至 SLC块中,由于SLC块寿命和稳定性均强于TLC块,故可保证元数据存储的准确性和稳定性;此外,利用元数据管理模块独立管理SLC 块,不仅方便元数据管理模块根据自身需求进行数据保存和迁移,还降低了固态硬盘的块管理模块的复杂度和负担,提升了固态硬盘固件设计和实现的难度,可有效提升固态硬盘的稳定性,降低故障发生概率,从而有利于确保固态硬盘的性能一致性。
此外,本发明实施例还针对固态硬盘的元数据存储管理方法提供了相应的实现装置、设备及计算机可读存储介质,进一步使得所述方法更具有实用性,所述装置、设备及计算机可读存储介质具有相应的优点。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
为了更清楚的说明本发明实施例或相关技术的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种固态硬盘的元数据存储管理方法的流程示意图;
图2为本发明实施例提供的另一种固态硬盘的元数据存储管理方法的流程示意图;
图3为本发明实施例提供的再一种固态硬盘的元数据存储管理方法的流程示意图;
图4为本发明实施例提供的一种基于顺序存储格式的数据存储过程示意图;
图5为本发明实施例提供的另一种基于顺序存储格式的数据存储过程示意图;
图6为本发明实施例提供的固态硬盘的元数据存储管理装置的一种具体实施方式结构图;
图7为本发明实施例提供的固态硬盘的元数据存储管理装置的另一种具体实施方式结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。
首先参见图1,图1为本发明实施例提供的一种固态硬盘的元数据存储管理方法的流程示意图,应用于元数据管理模块,本发明实施例可包括以下内容:
S101:预先构建freeBlock列表和usedBlock列表,并从freeBlock 列表中选择用于存储待写入元数据的第一SLC块。
可以理解的是,由于元数据的存储完整性关乎整个固态硬盘的稳定运行,所以可将元数据与用户数据进行区分对待,由于SLC块在寿命和稳定性上都比TLC块要好,可将TLC类型的block保存用户数据,而将部分TLC的block虚拟成为SLC block用来保存元数据,可以满足元数据正确性的要求。在具体实现过程中,SSD的容量越大,L2P 表就越大,需要使用的块就越多。可以先根据SSD的容量来确定存储元数据所需的SLC块的数量,一般可使用固态硬盘总块数的1%作为存储元数据的数据块。然后根据所需的SLC块的个数利用任何一种虚拟方法将SSD中的TLC块虚拟为SLC块。
在本申请中,元数据管理模块用于同时管理元数据和SLC块,也就是说,SLC块由元数据管理模块独立管理,而非使用固态硬盘的 block管理模块进行管理。这样既可以避免block管理模块同时管理两种block类型的复杂性,也可以方便元数据管理模块根据自己的需要进行数据的保存与迁移,且可以减少管理block的信息,只保留必要的信息,例如元数据管理模块可将TLC block独有的管理信息删除,只存储SLC block的管理信息。在元数据管理模块中,预先构建两个列表,freeBlock列表用于专门存储未写入数据的SLC块,usedBlock 列表用于专门存储写满数据的SLC块。然后从freeBlock列表中可随机选择一个SLC块,也可从freeBlock列表中选择擦除次数最小的SLC 块,直接放置在数据组中,以便新元数据写入时直接使用。每当元数据管理模块正在使用的SLC块的可写入数据容量为空时,会从 freeBlock列表种获取一个SLC块。为了保证所有SLC块磨损均衡,可优先使用擦除次数小的SLC块。
S102:判断是否有元数据写入,若是,则执行S103。
S103:将待写入元数据存储至第一SLC块,并更新第一SLC块的管理信息。
在本申请中,每个SLC块的管理信息可包括存储数据类型、擦除次数、当前数据写入页号和读写擦错误信息。其中,存储数据类型用于记录该SLC块中存储元数据的数据类型;擦除次数代表着SLC块的寿命,用于磨损均衡;当前数据写入页号为该SLC块写入到的页号,每当该SLC块使用一页后,当前数据写入页号递增,下次保存将保存到当前数据写入页号指定的页上,当前数据写入页号继续递增,同时还可表征该SLC块是否已经close掉;读写擦错误信息表征是否发生过读写擦错误,以避免使用坏块来保存数据,导致数据丢失。
在本发明实施例提供的技术方案中,将固态硬盘的元数据存储至 SLC块中,由于SLC块寿命和稳定性均强于TLC块,故可保证元数据存储的准确性和稳定性;此外,利用元数据管理模块独立管理SLC 块,不仅方便元数据管理模块根据自身需求进行数据保存和迁移,还降低了固态硬盘的块管理模块的复杂度和负担,提升了固态硬盘固件设计和实现的难度,可有效提升固态硬盘的稳定性,降低故障发生概率,从而有利于确保固态硬盘的性能一致性。
可以理解的是,SLC块在存储元数据时,可以随机存储,但是这种随机存储的方式会导致元数据管理模块对SLC块的管理难度和复杂度增加,基于此,本申请还可提供了一种顺序化保存元数据的方法,请参阅图2,可包括:
S201:预先构建freeBlock列表和usedBlock列表。
S202:预先设置元数据存储方式为顺序存储格式。
S203:从freeBlock列表中选择第一SLC块,并将第一SLC块放在数据组中,以用于在新元数据写入时直接使用。
在本申请中,顺序存储格式为同时将更新元数据和基础元数据写入至当前SLC中,更新元数据为待写入元数据,基础元数据为依次循环从固态硬盘当前时刻按照顺序编号的初始元数据中选取预设长度的数据,也就说是,初始元数据也就是为位于数据区的元数据,元数据在数据区都是按照数据块编号存储的,而在从数据区向SLC块中存储时,现有技术中元数据的数据块的编号是随机存储。基础元数据为初始元数据的一部分,也就是从初始元数据中截取预设长度的数据,或者说是连续几个相邻的数据块作为一个基础元数据,每次存储的基础元数据的长度相同或包含数据块个数相同。
S204:判断是否有元数据写入,若是,则执行S205。
S205:根据上一次写入元数据过程中的基础元数据确定当前基础元数据。
在本申请中,由于基础元数据为递进增加的,当前写入数据的基础元数据要根据上一次写入数据的基础元数据来确定。
S206:按照顺序存储格式将待写入元数据和当前基础元数据同时存储至第一SLC块。
图4和图5以一个示意性例子描述了顺序存储的实现过程。举例来说,若第一次写入数据为编号3的数据块,也即待写入数据为数据块3,基础元数据为包含3个数据块的数据,那么按照顺序存储格式存储时,需要将待写入数据块3和基础元数据123同时存储至第一SLC 块中。若第二次写入数据为编号6的数据块,根据第一次存储过程的基础元数据(数据块123)确定第二次的基础元数据为数据块456,将待写入数据块6和基础元数据456同时存储至第一SLC块中。若第四次写入数据为编号1的数据块,根据第三次存储过程的基础元数据(数据块789)确定第四次的基础元数据为数据块10、1和2,将待写入数据块1和基础元数据10、1和2同时存储至第一SLC块中。也就是说,本申请采用新增数据+基础数据的方式进行元数据存储,每次都有基础数据保存,即每次保存的基础数据是递进的,当保存的基础数据转圈后或循环完成一次后便可以无效掉上一轮该基础数据的保存。
其中,S201和S202的执行顺序本申请并不限制,也可先执行S202 或二者同时执行。本发明实施例与上述实施例相同的方法或步骤,可参阅上述实施例的描述,此实施例,便不再赘述。
由上可知,本发明实施例通过元数据管理模块独立管理SLC块降低block管理模块的复杂度,顺序化保存元数据减少有效数据搬移的复杂度,降低SLC块管理的复杂度,有利于提升SSD固件的稳定性,降低故障发生概率。
为了进一步高效、快速管理SLC块,还可对freeBlock列表和 usedBlock列表中的SLC块进行实时更新,降低无效元数据占用空间容量,提高SLC块的利用率。基于此,请参阅图3,可包括:
S301:预先构建freeBlock列表和usedBlock列表。
S302:预先设置元数据存储方式为顺序存储格式。
顺序存储格式为同时将更新元数据和基础元数据写入至当前SLC 中,更新元数据为待写入元数据,基础元数据为依次循环从固态硬盘当前时刻按照顺序编号的初始元数据中选取预设长度的数据;
S303:根据freeBlock列表中各SLC块管理信息中的擦除次数值选择最小擦除次数值对应的SLC块,作为存储当前元数据的第一SLC 块。
S304:判断是否有元数据写入,若是,则执行S204。
S305:根据上一次写入元数据过程中的基础元数据确定当前基础元数据。
S306:根据第一SLC块的管理信息中的当前数据写入页号,按照顺序存储格式将待写入元数据和当前基础元数据同时写入至第一SLC 块。
S307:判断在第一SLC块中写入待存储数据的页号是否为第一 SLC块的最后一页,若是,则执行S308。
S308:将第一SLC块发送至usedBlock列表中,并将第一SLC块的存储数据类型更改为对应待写入元数据的数据类型。
S309:判断usedBlock列表中包含的SLC块总数是否超过预设阈值;若是,则执行S310。
在本发明实施例中,元数据管理模块在保存元数据时将相关技术中的随机的元数据保存顺序转换成为顺序的保存顺序,这样就会出现连续的无效掉单个已使用SLC块的所有页,为了简单起见,可以计算元数据占用的block总数,当已使用的块总数超过预期值后,将最早加入到usedBlock列表中的SLC块直接擦除掉。由于顺序保存,每次写入都会无效掉最老的数据,次老的数据将变为最老数据。阈值可根据固态硬盘的实际物理参数进行确定,本申请对此不做任何限定。例如,固态硬盘包含10000个Block,那么存储元数据的Block可设置 100个,阈值可设置为40。
S310:根据各SLC块加入至usedBlock列表的时间从前到后排列各SLC块,并按照降序擦除多个SLC块,以使usedBlock列表中当前 SLC块数量不超过预设阈值。
可以理解的是,越早加入至usedBlock列表的SLC块,其内存储的有效数据就越少,故此步骤中是为了将最早加入至usedBlock列表的SLC块擦除。可对各SLC块按照加入时间从前到后进行排序,也就是加入时间早的排在前,新加入的SLC块排在后边。当然,也可将新加入的排在前,早加入的排在后,这样在擦除的时候从后往前依次擦除即可,这均不影响本申请的实现。
S311:判断usedBlock列表中是否存在有效数据量为0的第二SLC 块;若是,则执行S312。
可以理解的是,每当元数据保存一页,表示元数据保存发生更新,保存的旧数据失效,这样在对应SLC块中有效数据减少。当有效数据量减少为零时,可以将该SLC块擦除,然后将该SLC块的擦除次数递增后加入到freeBlock列表中。
S312:擦除第二SLC块,并将第二SLC块的管理信息中的擦除次数加1;将擦除次数递增后的第二SLC块发送至freeBlock列表中。
其中,S307-S318、S309-S310和S311-S312这三个执行判断操作的顺序本申请并不限制,也可先执行S309或S311这个判断过程,或者三者同时执行,这均不影响本申请的实现。本发明实施例与上述实施例相同的方法或步骤,可参阅上述实施例的描述,此实施例,便不再赘述。
由上可知,本发明实施例通过元数据管理模块独立管理SLC块降低block管理模块的复杂度,顺序化保存元数据减少有效数据搬移的复杂度,降低SLC块管理的复杂度,有利于提升SSD固件的稳定性,降低故障发生概率;此外,通过去除无效元数据,可降低无效元数据占用空间容量,从而提高SLC块的利用率。
本发明实施例还针对固态硬盘的元数据存储管理方法提供了相应的实现装置,进一步使得所述方法更具有实用性。下面对本发明实施例提供的固态硬盘的元数据存储管理装置进行介绍,下文描述的固态硬盘的元数据存储管理装置与上文描述的固态硬盘的元数据存储管理方法可相互对应参照。
参见图6,图6为本发明实施例提供的固态硬盘的元数据存储管理装置在一种具体实施方式下的结构图,应用于元数据管理模块,所述元数据管理模块用于管理固态硬盘的元数据和存储所述元数据的 SLC块,该装置可包括:
预处理模块601,用于预先构建用于存储未写入数据的SLC块的 freeBlock列表和用于存储写满数据的SLC块的usedBlock列表,并从 freeBlock列表中选择用于存储待写入元数据的第一SLC块。
元数据存储模块602,用于当检测待写入元数据写入时,将待写入元数据存储至第一SLC块,并更新第一SLC块的管理信息;管理信息包括存储数据类型、擦除次数、当前数据写入页号和读写擦错误信息。
可选的,在本实施例的一些实施方式中,所述元数据存储模块602 还可包括:
存储格式设置子模块,用于预先设置元数据存储方式为顺序存储格式;所述顺序存储格式为同时将更新元数据和基础元数据写入至当前SLC中,所述更新元数据为所述待写入元数据,所述基础元数据为依次循环从所述固态硬盘当前时刻按照顺序编号的初始元数据中选取预设长度的数据;
基础元数据确定子模块,用于根据上一次写入元数据过程中的基础元数据确定当前基础元数据;
存储子模块,用于按照所述顺序存储格式将所述待写入元数据和所述当前基础元数据同时存储至所述第一SLC块。
在另外一些实施方式中,所述预处理模块601还可为根据 freeBlock列表中各SLC块管理信息中的擦除次数值选择最小擦除次数值对应的SLC块,以作为第一SLC块的模块。
作为一种可选的实施方式,请参阅图7,所述装置例如还可以包括:
第一擦除模块603,用于若usedBlock列表中存在有效数据量为0 的第二SLC块,则擦除第二SLC块,并将第二SLC块的管理信息中的擦除次数加1;将擦除次数递增后的第二SLC块发送至freeBlock 列表中。
在本实施例的另一些实施方式中,请参阅图7,所述装置例如还可以包括第二擦除模块604,用于若usedBlock列表中包含的SLC块总数超过预设阈值,则根据各SLC块加入至usedBlock列表的时间从前到后排列各SLC块,并按照降序擦除多个SLC块,以使usedBlock列表中当前SLC块数量不超过预设阈值。
可选的,所述装置进一步还可包括usedBlock列表扩充模块605,所述usedBlock列表扩充模块605用于若在第一SLC块中写入待存储数据的页号为第一SLC块的最后一页,将第一SLC块发送至usedBlock 列表中,并将第一SLC块的存储数据类型更改为对应待写入元数据的数据类型。
本发明实施例所述固态硬盘的元数据存储管理装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
由上可知,本发明实施例有效保证固态硬盘中存储元数据的准确性,从而提升固态硬盘的稳定性,降低故障发生概率。
本发明实施例还提供了一种固态硬盘的元数据存储管理设备,具体可包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序以实现如上任意一实施例所述固态硬盘的元数据存储管理方法的步骤。
本发明实施例所述固态硬盘的元数据存储管理设备的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
由上可知,本发明实施例有效保证固态硬盘中存储元数据的准确性,从而提升固态硬盘的稳定性,降低故障发生概率。
本发明实施例还提供了一种计算机可读存储介质,存储有固态硬盘的元数据存储管理程序,所述固态硬盘的元数据存储管理程序被处理器执行时如上任意一实施例所述固态硬盘的元数据存储管理方法的步骤。该存储介质可以为U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例所述计算机可读存储介质的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
由上可知,本发明实施例有效保证固态硬盘中存储元数据的准确性,从而提升固态硬盘的稳定性,降低故障发生概率。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程 ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的一种固态硬盘的元数据存储管理方法、装置、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本公开进行若干改进和修饰,这些改进和修饰也落入本公开权利要求的保护范围内。
Claims (8)
1.一种固态硬盘的元数据存储管理方法,其特征在于,应用于元数据管理模块,所述元数据管理模块用于管理固态硬盘的元数据和存储所述元数据的SLC块,包括:
预先构建用于存储未写入数据的SLC块的freeBlock列表和用于存储写满数据的SLC块的usedBlock列表,并从所述freeBlock列表中选择用于存储待写入元数据的第一SLC块;
当检测待写入元数据写入时,将所述待写入元数据存储至所述第一SLC块,并更新所述第一SLC块的管理信息;
其中,所述管理信息包括存储数据类型、擦除次数、当前数据写入页号和读写擦错误信息;
其中,所述将所述待写入元数据存储至所述第一SLC块包括:
预先设置元数据存储方式为顺序存储格式;所述顺序存储格式为同时将更新元数据和基础元数据写入至当前SLC中,所述更新元数据为所述待写入元数据,所述基础元数据为依次循环从按照数据块顺序编号的所述固态硬盘的初始元数据中选取的预设长度数据;
根据上一次写入元数据过程中的基础元数据确定当前基础元数据;
按照所述顺序存储格式将所述待写入元数据和所述当前基础元数据同时存储至所述第一SLC块。
2.根据权利要求1所述的固态硬盘的元数据存储管理方法,其特征在于,所述按照所述顺序存储格式将所述待写入元数据和所述当前基础元数据同时存储至所述第一SLC块之后,还包括:
判断所述usedBlock列表中包含的SLC块总数是否超过预设阈值;
若是,则根据各SLC块加入至所述usedBlock列表的时间从前到后排列各SLC块,并按照降序擦除多个SLC块,以使所述usedBlock列表中当前SLC块数量不超过预设阈值。
3.根据权利要求1所述的固态硬盘的元数据存储管理方法,其特征在于,所述从所述freeBlock列表中选择用于存储待写入元数据的第一SLC块包括:
根据所述freeBlock列表中各SLC块管理信息中的擦除次数值选择最小擦除次数值对应的SLC块,以作为所述第一SLC块。
4.根据权利要求1至3任意一项所述的固态硬盘的元数据存储管理方法,其特征在于,还包括:
判断所述usedBlock列表中是否存在有效数据量为0的第二SLC块;
若是,则擦除所述第二SLC块,并将所述第二SLC块的管理信息中的擦除次数加1;将擦除次数递增后的第二SLC块发送至所述freeBlock列表中。
5.根据权利要求1至3任意一项所述的固态硬盘的元数据存储管理方法,其特征在于,所述将所述待写入元数据存储至所述第一SLC块,并更新所述第一SLC块的管理信息包括:
根据所述第一SLC块的管理信息中的当前数据写入页号,将所述待写入元数据写入相应页面上;
判断在所述第一SLC块中写入待存储数据的页号是否为所述第一SLC块的最后一页;
若是,则将所述第一SLC块发送至所述usedBlock列表中,并将所述第一SLC块的存储数据类型更改为所述待写入元数据的数据类型。
6.一种固态硬盘的元数据存储管理装置,其特征在于,应用于元数据管理模块,所述元数据管理模块用于管理固态硬盘的元数据和存储所述元数据的SLC块,包括:
预处理模块,用于预先构建用于存储未写入数据的SLC块的freeBlock列表和用于存储写满数据的SLC块的usedBlock列表,并从所述freeBlock列表中选择用于存储待写入元数据的第一SLC块;
元数据存储模块,用于当检测待写入元数据写入时,将所述待写入元数据存储至所述第一SLC块,并更新所述第一SLC块的管理信息;所述管理信息包括存储数据类型、擦除次数、当前数据写入页号和读写擦错误信息;
其中,所述元数据存储模块包括:
存储格式设置子模块,用于预先设置元数据存储方式为顺序存储格式;所述顺序存储格式为同时将更新元数据和基础元数据写入至当前SLC中,所述更新元数据为所述待写入元数据,所述基础元数据为依次循环从所述固态硬盘当前时刻按照顺序编号的初始元数据中选取预设长度的数据;
基础元数据确定子模块,用于根据上一次写入元数据过程中的基础元数据确定当前基础元数据;
存储子模块,用于按照所述顺序存储格式将所述待写入元数据和所述当前基础元数据同时存储至所述第一SLC块。
7.一种固态硬盘的元数据存储管理设备,其特征在于,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至5任一项所述固态硬盘的元数据存储管理方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有固态硬盘的元数据存储管理程序,所述固态硬盘的元数据存储管理程序被处理器执行时实现如权利要求1至5任一项所述固态硬盘的元数据存储管理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910839078.5A CN110673789B (zh) | 2019-09-05 | 2019-09-05 | 固态硬盘的元数据存储管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910839078.5A CN110673789B (zh) | 2019-09-05 | 2019-09-05 | 固态硬盘的元数据存储管理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110673789A CN110673789A (zh) | 2020-01-10 |
CN110673789B true CN110673789B (zh) | 2023-01-10 |
Family
ID=69076508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910839078.5A Active CN110673789B (zh) | 2019-09-05 | 2019-09-05 | 固态硬盘的元数据存储管理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110673789B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463053B (zh) * | 2020-11-27 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种固态硬盘的数据写入方法和装置 |
CN112558878B (zh) * | 2020-12-16 | 2023-07-04 | 北京华弘集成电路设计有限责任公司 | 一种基于不同类型存储机制的空间调换方法 |
CN113703681B (zh) * | 2021-08-26 | 2024-06-04 | 杭州海康存储科技有限公司 | 一种硬盘管理方法及装置、硬盘设备、存储介质 |
CN114489487A (zh) * | 2021-12-29 | 2022-05-13 | 深圳星火半导体科技有限公司 | 一种数据存储保护方法及系统 |
CN115729478B (zh) * | 2023-01-10 | 2023-05-02 | 苏州浪潮智能科技有限公司 | 固态硬盘block修正方法、装置、电子设备及存储介质 |
CN117742618B (zh) * | 2024-02-19 | 2024-05-07 | 鑫硕泰(深圳)科技有限公司 | 一种固态硬盘的数据存储管理方法和固态硬盘管理装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598484A (zh) * | 2016-11-17 | 2017-04-26 | 华为技术有限公司 | 数据的存储方法、闪存芯片以及存储装置 |
CN108664218A (zh) * | 2018-04-23 | 2018-10-16 | 浙江大华技术股份有限公司 | 一种基于数据特征的ssd存储方法、装置及系统 |
CN109918318A (zh) * | 2019-03-06 | 2019-06-21 | 苏州浪潮智能科技有限公司 | Ssd元数据管理方法、装置、设备及可读存储介质 |
-
2019
- 2019-09-05 CN CN201910839078.5A patent/CN110673789B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598484A (zh) * | 2016-11-17 | 2017-04-26 | 华为技术有限公司 | 数据的存储方法、闪存芯片以及存储装置 |
CN108664218A (zh) * | 2018-04-23 | 2018-10-16 | 浙江大华技术股份有限公司 | 一种基于数据特征的ssd存储方法、装置及系统 |
CN109918318A (zh) * | 2019-03-06 | 2019-06-21 | 苏州浪潮智能科技有限公司 | Ssd元数据管理方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110673789A (zh) | 2020-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110673789B (zh) | 固态硬盘的元数据存储管理方法、装置、设备及存储介质 | |
CN107608908B (zh) | 用于数据储存装置的磨损平均方法 | |
US9846641B2 (en) | Variability aware wear leveling | |
EP3588259B1 (en) | Garbage collection method for storage media, storage medium, and program product | |
US9652382B1 (en) | Look-ahead garbage collection for NAND flash based storage | |
CN111124305B (zh) | 固态硬盘磨损均衡方法、装置及计算机可读存储介质 | |
CN109753443B (zh) | 一种数据处理方法、装置及电子设备 | |
US20120317337A1 (en) | Managing data placement on flash-based storage by use | |
CN107168647A (zh) | Flash数据读写方法及系统 | |
US8667209B2 (en) | Non-volatile memory access method and system, and non-volatile memory controller | |
US8825946B2 (en) | Memory system and data writing method | |
CN110674056B (zh) | 一种垃圾回收方法及装置 | |
CN110534151B (zh) | 实现写入前擦除的方法、装置、计算机设备及存储介质 | |
CN108762989B (zh) | 固态硬盘的数据存储方法、装置、设备及可读存储介质 | |
CN109491592B (zh) | 存储设备及其数据写入方法、存储装置 | |
CN113867645A (zh) | 数据迁移和数据读写方法、装置、计算机设备及存储介质 | |
CN111930301A (zh) | 垃圾回收优化方法、装置、存储介质及电子设备 | |
TWI450271B (zh) | 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器 | |
CN107203341A (zh) | 基于闪存的数据存储方法、装置以及闪存芯片 | |
CN112347001B (zh) | 闪存垃圾回收的校验方法、装置及电子设备 | |
CN101739350B (zh) | 存储器储存装置及其控制方法 | |
US10007601B2 (en) | Data storage device and operating method for flash memory | |
CN111143238B (zh) | 基于eFlash存储芯片的数据擦写方法及系统 | |
CN104899158A (zh) | 访存优化方法和装置 | |
CN112395260B (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 |