CN108897492B - 一种数据写入方法和装置 - Google Patents
一种数据写入方法和装置 Download PDFInfo
- Publication number
- CN108897492B CN108897492B CN201810542886.0A CN201810542886A CN108897492B CN 108897492 B CN108897492 B CN 108897492B CN 201810542886 A CN201810542886 A CN 201810542886A CN 108897492 B CN108897492 B CN 108897492B
- Authority
- CN
- China
- Prior art keywords
- physical block
- state
- data
- data writing
- physical
- 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
-
- 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/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]
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请提供一种数据写入方法和装置,该方法包括:获取存储设备的固态硬盘的处于编程状态的第一物理块,并在所述第一物理块中写入数据;若所述第一物理块的第一数据写入信息满足选取条件,则获取处于擦除状态的第二物理块;在获取处于擦除状态的第二物理块之后,若所述第一物理块的第二数据写入信息满足切换条件,则在所述第二物理块中写入数据,并将所述第二物理块从擦除状态修改为编程状态。通过本申请的技术方案,不用提前对物理块进行擦除操作,避免物理块长时间处于擦除后没有数据写入的状态,从而对物理块进行合理保护,避免物理块损坏和数据丢失等问题,提高数据存储的安全性和稳定性。
Description
技术领域
本申请涉及存储技术领域,尤其是涉及一种数据写入方法和装置。
背景技术
SSD(Solid State Drives,固态硬盘)是一种新型的硬盘,具有速度快、抗震安全性高、稳定性好、高集成度、超大容量、读写速度快、读写延迟小、功耗低、非易失性的存储介质等特性,从而被广泛应用于生活的各个领域,例如,消费电子、军事设备、监控安防、网络、服务器、手持设备、工业控制等。
Block(物理块,也称为数据块)是SSD的最小擦除单元,可以由大量Page(页,即组成Block的小单元,一个Block可以包括几千个Page)组成。在SSD的使用过程中,是不断向Block的各Page中写入数据的过程,一直到Block的所有Page被写满,然后向下一个Block的各Page中写入数据,以此类推。
随着数据的不断写入,有效Block的总量越来越少,为了保证数据正常写入,则可以对Block进行擦除操作,得到处于擦除状态的Block,并向该Block写入数据,而传统方式并没有对这种Block进行合理保护,从而可能出现Block损坏和数据丢失等问题,尤其是在温度变化快、湿度不稳定、高低压变化等环境下,更容易出现上述问题。例如,处于擦除状态的Block内的所有物理单元均是等电位的,没有达到整体范围内的高低电位的平衡,因此在温度变化快、湿度不稳定、高低压变化等环境,容易造成Block损坏和数据丢失等问题,若该Block在长时间内未写入数据,则Block损坏和数据丢失的风险也将显著增加。
发明内容
本申请提供一种数据写入方法,应用于存储设备,所述方法包括:
获取所述存储设备的固态硬盘的处于编程状态的第一物理块,所述第一物理块是未写满数据且不为空的物理块,并在所述第一物理块中写入数据;
若所述第一物理块的第一数据写入信息满足选取条件,则获取处于擦除状态的第二物理块,所述第二物理块是已擦除干净且未写入数据的物理块;
在获取处于擦除状态的第二物理块之后,若所述第一物理块的第二数据写入信息满足切换条件,则在所述第二物理块中写入数据,并将所述第二物理块从擦除状态修改为编程状态。
本申请提供一种数据写入装置,应用于存储设备,所述装置包括:
获取模块,用于获取所述存储设备的固态硬盘的处于编程状态的第一物理块,所述第一物理块是未写满数据且不为空的物理块;
写入模块,用于在所述第一物理块中写入数据;
所述获取模块,还用于若所述第一物理块的第一数据写入信息满足选取条件,则获取处于擦除状态的第二物理块,所述第二物理块是已擦除干净且未写入数据的物理块;
所述写入模块,还用于在所述获取模块获取处于擦除状态的第二物理块之后,若所述第一物理块的第二数据写入信息满足切换条件,则在所述第二物理块中写入数据,并将所述第二物理块从擦除状态修改为编程状态。
基于上述技术方案,本申请实施例中,在第一物理块中写入数据时,只有满足选取条件时,才获取处于擦除状态的第二物理块,在满足切换条件时,向第二物理块中写入数据。这样,在满足选取条件时,才对物理块进行擦除操作,得到处于擦除状态的物理块,并向物理块写入数据,不用提前对物理块进行擦除操作,避免物理块长时间处于擦除后没有数据写入的状态,即物理块处于擦除状态后,可以在短时间内就向物理块写入数据,从而对物理块进行合理保护,避免物理块损坏和数据丢失等问题,尤其是在温度变化快、湿度不稳定、高低压变化等环境,可以更好的对物理块进行合理保护,可以对物理块进行高效、科学、有效的管理,提高数据存储的安全性和稳定性,减弱数据丢失风险,保证物理块的安全稳定,可以延长固态硬盘的使用寿命,保持较高的读写性能。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1是本申请一种实施方式中的物理块的状态转换示意图;
图2是本申请另一种实施方式中的数据写入方法的流程图;
图3是本申请一种实施方式中的数据写入的示意图;
图4是本申请一种实施方式中的数据写入装置的结构图;
图5是本申请一种实施方式中的存储设备的硬件结构图。
具体实施方式
在本申请使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种数据写入方法,该方法可以应用于存储设备,该存储设备可以是采用固态硬盘(即SSD)存储数据的设备。其中,固态硬盘可以由大量Block(物理块,也可以称为数据块)组成,后续以物理块为例进行说明,物理块是SSD的最小擦除单元,每个物理块可以由大量页(Page)组成。
其中,固态硬盘可以是一种新型硬盘,其存储介质可以包括Flash(闪存)介质(如NAND Flash介质),通过将多个存储单元组成一个存储阵列,并加入控制单元和一些附加功能器件,可以组成一块固态硬盘。固态硬盘具有速度快、抗震安全性高、稳定性好、高集成度、超大容量、读写速度快、读写延迟小、功耗低、非易失性的存储介质等特性,从而被广泛应用于生活的各个领域。
在一个例子中,固态硬盘可以由大量物理块组成,利用固态硬盘存储数据的过程,就是不断向物理块的各个页中写入数据的过程,一直到物理块的所有页均被写满,然后,继续向下一个物理块的各个页中写入数据,以此类推。
在一个例子中,在数据写入过程中,可以涉及如下类型的物理块:
第一、处于空闲状态(FREE状态)的物理块,即存在无效数据、且当前未被使用的物理块,也就是说,物理块没有存储有效数据,可以写入新数据,但物理块存在无效数据,需要将无效数据擦除后,才可以在物理块中写入新数据。
第二、处于擦除状态(ERASE状态)的物理块,即已经擦除干净且未写入数据的物理块,也就是说,物理块中的所有数据已经被擦除,且在数据擦除完成后,还未写入新数据,即新数据能够写入到该物理块。例如,针对处于空闲状态的物理块,在将物理块中的数据擦除后,得到的是处于擦除状态的物理块。
第三、处于编程状态(PROGRAM状态)的物理块,即未写满数据、且不为空的物理块,是当前正在使用的物理块,也就是说,数据正在写入到该物理块中,但是,数据还没有填满这个物理块。例如,针对处于擦除状态的物理块,在使用这个物理块写入数据时,该物理块就可以是处于编程状态的物理块。
第四、处于使用状态(USED状态)的物理块,即已经写满数据的物理块,该物理块中有的数据是有效数据,有的数据可能为无效数据,该物理块已经被写满数据,不能再写入新数据,只有将该物理块的数据擦除后,才能够写入新数据,而且物理块的性能比较稳定。例如,针对处于编程状态的物理块,这个物理块被写满数据后,这个物理块就可以是处于使用状态的物理块。
第五、处于迁移状态(GC状态)的物理块,即进行垃圾回收(有效数据搬移)的物理块,需要对物理块中的有效数据进行垃圾回收,即将有效数据从物理块中迁移,对此垃圾回收过程不做限制。例如,针对处于使用状态的物理块,若需要对这个物理块进行垃圾回收,则物理块可以是处于迁移状态的物理块。
进一步的,在对物理块中的有效数据进行垃圾回收之后,若这个物理块还能够正常使用,则这个物理块就可以成为处于空闲状态的物理块,若这个物理块已经无法正常使用,则这个物理块就可以成为处于损坏状态的物理块。
第六、处于损坏状态(BAD状态)的物理块,即已经无法正常使用的物理块,是已经损坏的物理块。其中,损坏原因可以包括:出厂前就已经损坏、使用寿命到达极限、擦除次数达到阈值、数据写次数超过阈值,对此不做限制。
第七、处于迁移损坏状态(GC BAD状态)的物理块,即需要进行垃圾回收(有效数据搬移)的损坏物理块,需要对该物理块中的有效数据进行垃圾回收,即将有效数据从这个物理块中迁移,对此过程不做限制。而且,在对该物理块中的有效数据进行垃圾回收后,这个物理块已经无法正常使用,因此,这个物理块就可以是处于迁移损坏状态的物理块。例如,针对处于编程状态的物理块,在这个物理块的数据写入过程中,若数据写入失败,由于这个物理块中已经写入有效数据,因此,需要将该物理块中的有效数据搬移出来,又由于这个物理块已经损坏,因此,在将有效数据搬移出来后,该物理块将不再使用。
在固态硬盘使用的任何时刻,都存在着上述各种状态的物理块,各种状态的物理块之间也在相互转换,参见图1所示,为物理块的状态转换示意图。
状态转换1、可以从所有物理块中选择处于空闲状态的物理块,由于该物理块存在无效数据,因此,在该物理块被使用之前,可以将该物理块中的数据擦除,在将数据擦除后,该物理块就可以转换为处于擦除状态的物理块。由于物理块中的数据已经被擦除,从而可以保证数据写入之前,物理块的内容为空。
状态转换2、针对处于擦除状态的物理块,由于物理块已经擦除干净且未写入数据,因此,物理块可以供数据写入,即可以在这个物理块写入数据,在使用这个物理块写入数据时,该物理块就可以转换为处于编程状态的物理块。
状态转换3、针对处于编程状态的物理块,在物理块被写满数据后,这个物理块可以转换为处于使用状态的物理块,而该物理块的电荷达到平衡(写满数据的物理块,高电位数量和低电位数量是相当的),物理块的性能比较稳定。
状态转换4、针对处于使用状态的物理块,若需要对这个物理块进行垃圾回收,则这个物理块可以转换为处于迁移状态的物理块。其中,可以从所有处于使用状态的物理块中选择处于迁移状态的物理块,对此不做限制。
状态转换5、针对处于迁移状态的物理块,可以对该物理块进行垃圾回收(即有效数据搬移),即将有效数据从物理块中迁移,在迁移完成后,该物理块中没有有效数据,即该物理块中的数据均为无效数据,对此过程不做限制。在对有效数据进行垃圾回收后,若这个物理块还能够正常使用,则这个物理块可以转换为处于空闲状态的物理块,在下次使用该物理块时,可以执行状态转换1。
其中,在处于空闲状态的物理块中存在无效数据,无效数据对用户来说没有意义,是可以将物理块中的无效数据擦除的,但是,为了保持物理块的电荷平衡,保证该物理块的稳定性和安全性,并不将物理块中的无效数据擦除。
状态转换6、针对处于迁移状态的物理块,可以对物理块进行垃圾回收,即将有效数据从物理块中迁移,在迁移完成后,该物理块中没有有效数据,对此过程不做限制。在对有效数据进行垃圾回收后,若物理块已经无法正常使用(如物理块的使用寿命达到极限),则物理块可以转换为处于损坏状态的物理块。
状态转换7、针对处于编程状态的物理块,在这个物理块的数据写入过程中,若数据写入失败(如数据写入中断),则确定这个物理块已经损坏,又由于这个物理块中已经写入有效数据,需要将该物理块中的有效数据搬移出来,因此,这个物理块可以转换为处于迁移损坏状态的物理块,即需要数据搬移的坏块。
状态转换8、针对处于迁移损坏状态的物理块,可以对物理块进行垃圾回收,即将有效数据从该物理块中迁移,在迁移完成后,该物理块中没有有效数据,对此过程不做限制。在对有效数据进行垃圾回收后,由于这个物理块已经损坏,该物理块将不再使用,因此,该物理块可以转换为处于损坏状态的物理块。
状态转换9、针对处于擦除状态的物理块,若擦除失败,则确定该物理块已经损坏,该物理块将不再使用,该物理块可以转换为处于损坏状态的物理块。
通过上述过程,详细介绍了物理块的状态转换,对此状态转换不做限制。
在传统方式中,当处于空闲状态的物理块数量较少或系统比较空闲时,就会执行状态转换5,得到大量处于空闲状态的物理块,并通过状态转换1将大量处于空闲状态的物理块转换为处于擦除状态的物理块,即存在大量处于擦除状态的物理块。若存在大量处于擦除状态的物理块,就会存在以下问题:由于物理块已被擦除干净,且未写入数据,因此物理块内的所有物理单元是等电位的,没有达到整体范围内的高低电位的平衡(即高电位的数量和低电位的数量相当,而对于写满数据的物理块,高电位的数量和低电位的数量相当),因此出现外界情况变化时,造成物理块损坏,传统方式并没有对这种物理块进行合理保护。
针对上述发现,本申请实施例中,在需要使用处于编程状态的物理块写入数据时,才会执行状态转换5,得到处于空闲状态的物理块,并通过状态转换1,将处于空闲状态的物理块转换为处于擦除状态的物理块,然后在处于擦除状态的物理块中写入数据,而不是提前得到大量处于擦除状态的物理块。或者,当处于空闲状态的物理块数量较少或系统比较空闲时,就会执行状态转换5,得到大量处于空闲状态的物理块;但是,并不对这些处于空闲状态的物理块进行擦除操作,而是在需要使用处于编程状态的物理块写入数据时,才通过状态转换1将处于空闲状态的物理块转换为处于擦除状态的物理块,然后在处于擦除状态的物理块中写入数据,而不是提前得到大量处于擦除状态的物理块。
基于上述方式,可以使物理块尽量处于使用状态或者于空闲状态,从而减少处于擦除状态的物理块数量,避免物理块长时间处于擦除后没有数据写入的状态,而处于使用状态或者于空闲状态的物理块,由于物理块的电荷平衡,高电位的数量和低电位的数量相当,因此,可以保证物理块的安全性、稳定性和可靠性,对物理块进行合理保护,对物理块进行科学有效的管理,提高数据存储的安全性和稳定性,减弱数据丢失风险,保证物理块的安全稳定,避免物理块损坏和数据丢失等问题,可以延长固态硬盘的使用寿命,提高读写性能。
在上述应用场景下,参见图2所示,为本申请实施例的数据写入方法的流程图,应用于存储设备,该存储设备采用固态硬盘存储数据,该方法可以包括:
步骤201,获取该固态硬盘的处于编程状态的第一物理块,并在该第一物理块中写入数据。其中,该第一物理块可以是未写满数据且不为空的物理块。
步骤202,若第一物理块的第一数据写入信息满足选取条件,则获取处于擦除状态的第二物理块,第二物理块是已擦除干净且未写入数据的物理块。
在一个例子中,第一数据写入信息包括数据写入比例和数据写入状态;而且,可以通过以下方式确定第一物理块的第一数据写入信息满足选取条件:若数据写入比例已经达到预设比例阈值,则确定满足选取条件;或者,若数据写入状态为数据写入失败,且不存在与第一物理块对应的第二物理块,则确定满足选取条件。当然,还可以采用其它方式确定满足选取条件,对此不做限制。
在一个例子中,获取处于擦除状态的第二物理块,可以包括:获取处于空闲状态的第二物理块,该处于空闲状态的第二物理块是存在无效数据、且当前未被使用的物理块;然后,对处于空闲状态的第二物理块进行擦除操作,得到处于擦除状态的第二物理块,并将第二物理块从空闲状态修改为擦除状态。
其中,获取处于空闲状态的第二物理块,可以包括:可以从所有物理块中获取处于使用状态的多个物理块,并从所述多个物理块中选择部分物理块,如采用预设策略从所述多个物理块中选择部分物理块,而选择的部分物理块就是需要进行垃圾回收的第二物理块,并将该第二物理块从使用状态修改为迁移状态。然后,对该第二物理块进行垃圾回收,若这个第二物理块还能够正常使用,则这个第二物理块可以转换为处于空闲状态的第二物理块。或者,可以从所有物理块中直接获取处于空闲状态的第二物理块。
例如,采用预设策略从所述多个物理块中选择部分物理块可以包括:从所述多个物理块中选择有效数据占比小的部分物理块,如选择无效数据占比大于比例阈值的物理块;或者,从所述多个物理块中选择读取次数多的部分物理块,如选择读取次数大于次数阈值的物理块;或者,从所述多个物理块中选择存在时间长的部分物理块,如选择存在时间大于预设时间阈值的物理块。
步骤203,在获取处于擦除状态的第二物理块之后,若第一物理块的第二数据写入信息满足切换条件,则在第二物理块中写入数据,并将该第二物理块从擦除状态修改为编程状态。
在一个例子中,第二数据写入信息包括数据写入比例和数据写入状态;可以通过以下方式确定第一物理块的第二数据写入信息满足切换条件:若数据写入比例表示第一物理块已经被占满,则确定满足切换条件;或者,若数据写入状态为数据写入失败,且已存在与第一物理块对应的第二物理块,则确定满足切换条件。当然,还可以采用其它方式确定满足切换条件,对此不做限制。
参见图3所示,为本实施例中的数据写入示意图,固态硬盘可以包括多个通道,这些通道是并行处理,即数据可以并行写入到每个通道,如通道1、通道2……通道N等。由于每个通道的数据写入过程相同,因此后续以通道1为例。
针对通道1,可以先获取处于编程状态的物理块A(即第一物理块),并在物理块A中写入数据。在数据的写入过程中,可以实时监控物理块A的数据写入比例,一旦数据写入比例达到预设比例阈值(如50%),则说明物理块A已经被占用50%,且已经满足选取条件,并继续在物理块A中写入数据。
在满足选取条件时,则可以获取处于空闲状态的物理块B(即第二物理块,物理块B为预备物理块),然后,对物理块B进行擦除操作,得到处于擦除状态的物理块B,并将物理块B从空闲状态修改为擦除状态。
由于满足选取条件时,会继续向物理块A中写入数据,因此,可以继续监控物理块A的数据写入比例,一旦数据写入比例达到100%,则物理块A已经被占满,且满足切换条件。在满足切换条件时,由于已经得到处于擦除状态的物理块B,因此,可以直接在物理块B中写入数据,并将物理块B从擦除状态修改为编程状态。而且,在物理块B中写入数据后,这个物理块B就成为处于编程状态的第一物理块,重新执行上述步骤201-步骤203,以此类推。
此外,在继续向物理块A中写入数据时,一旦数据写入失败,则满足切换条件。在满足切换条件时,由于已经得到处于擦除状态的物理块B,因此,可以直接在物理块B中写入数据,并将物理块B从擦除状态修改为编程状态。
其中,针对获取处于空闲状态的物理块B,则可以包括:方式一、使物理块尽量处于使用状态,基于此,在满足选取条件时,才从处于使用状态的多个物理块中选择物理块B,并将物理块B从使用状态修改为迁移状态。然后,对物理块B进行垃圾回收,得到处于空闲状态的物理块B,并将物理块B从迁移状态修改为空闲状态。方式二、使物理块尽量处于空闲状态,基于此,当处于空闲状态的物理块数量较少或系统比较空闲时,就可以得到大量处于空闲状态的物理块,在满足选取条件时,可以从所有处于空闲状态的物理块中选择物理块B。
在另一个例子中,在物理块A的数据写入过程中,若数据写入比例达到预设比例阈值之前,就已经发生数据写入失败,则满足选取条件,不再向物理块A中写入数据。在满足选取条件时,可以获取处于空闲状态的物理块C(即第二物理块)。然后对物理块C进行擦除操作,得到处于擦除状态的物理块C,并将物理块C从空闲状态修改为擦除状态。又由于数据写入失败,因此已经满足切换条件,可以在物理块C中写入数据,并将物理块C从擦除状态修改为编程状态。而且,在物理块C中写入数据后,这个物理块C就成为处于编程状态的第一物理块,重新执行上述步骤201-步骤203,以此类推。
其中,获取处于空闲状态的物理块C的方式参见物理块B,在此不再赘述。
其中,参见图3所示,每个通道还可以具有块标记,块标记的初始状态为第一标识(如0)。基于此,在满足选取条件时,可以将所述块标记设置为第二标识(如1),表示满足选取条件,需要优先选择第二物理块。这样,处理器识别出块标记为第二标识1后,优先对该通道进行第二物理块的选择。然后,在第二物理块选择完成后,又可以将所述块标记设置为第一标识,以此类推。
综上所述,本实施例中,在物理块A的数据写入过程中,在满足选取条件时,才会对物理块进行擦除操作,得到处于擦除状态的物理块,并将该物理块从空闲状态修改为擦除状态,并在满足切换条件时,可以在该物理块中写入数据。上述方式可以使物理块尽量处于使用状态或者空闲状态,不用提前对物理块进行擦除操作,从而减少处于擦除状态的物理块数量,物理块在处于擦除状态后,可以在短时间内就向物理块写入数据,避免物理块长时间处于擦除后没有数据写入的状态,而处于使用状态或者空闲状态的物理块,由于物理块的电荷平衡,高电位的数量和低电位的数量相当,因此保证物理块的安全性、稳定性和可靠性,对物理块进行合理保护,对物理块进行科学有效的管理,提高数据存储的安全性和稳定性,减弱数据丢失风险,保证物理块的安全稳定,避免物理块损坏和数据丢失等问题,延长固态硬盘的使用寿命,保持较高读写性能。
在上述实施例中,参见物理块的状态转换过程,在第二物理块中写入数据之后,若第二物理块被写满数据,则可以将第二物理块转换为处于使用状态的第二物理块;进一步的,还可以从处于使用状态的第二物理块中选择需要垃圾回收的第二物理块,并将选择的第二物理块转换为处于迁移状态的第二物理块;然后,对处于迁移状态的第二物理块进行垃圾回收,得到处于空闲状态的第二物理块,或者,得到处于损坏状态的第二物理块。
在另一个例子中,在第二物理块中写入数据之后,若第二物理块的数据写入失败,则可以将第二物理块转换为处于迁移损坏状态的第二物理块,并对处于迁移损坏状态的第二物理块进行垃圾回收,得到处于损坏状态的第二物理块。
基于与上述方法同样的申请构思,本申请实施例中还提出一种数据写入装置,应用于存储设备,如图4所示,为所述装置的结构图,所述装置具体包括:
获取模块401,用于获取所述存储设备的固态硬盘的处于编程状态的第一物理块,所述第一物理块是未写满数据且不为空的物理块;
写入模块402,用于在所述第一物理块中写入数据;
所述获取模块401,还用于若所述第一物理块的第一数据写入信息满足选取条件,则获取处于擦除状态的第二物理块,所述第二物理块是已擦除干净且未写入数据的物理块;
所述写入模块402,还用于在所述获取模块获取处于擦除状态的第二物理块之后,若所述第一物理块的第二数据写入信息满足切换条件,则在所述第二物理块中写入数据,并将所述第二物理块从擦除状态修改为编程状态。
在一个例子中,所述第一数据写入信息包括数据写入比例和数据写入状态;
所述装置还包括(图中未示出):确定模块,用于通过以下方式确定所述第一物理块的第一数据写入信息满足选取条件:若所述数据写入比例已经达到预设比例阈值,则确定满足选取条件;或者,若所述数据写入状态为数据写入失败,且不存在与所述第一物理块对应的第二物理块,则确定满足选取条件。
所述第二数据写入信息包括数据写入比例和数据写入状态;
所述确定模块,用于通过以下方式确定所述第一物理块的第二数据写入信息满足切换条件:若所述数据写入比例表示所述第一物理块已经被占满,则确定满足切换条件;或者,若所述数据写入状态为数据写入失败,且已存在与所述第一物理块对应的第二物理块,则确定满足切换条件。
所述获取模块401获取处于擦除状态的第二物理块时具体用于:
获取所述固态硬盘的处于空闲状态的第二物理块,所述处于空闲状态的第二物理块是存在无效数据、且当前未被使用的物理块;
对所述处于空闲状态的第二物理块进行擦除操作,得到处于擦除状态的第二物理块,并将所述第二物理块从空闲状态修改为擦除状态。
所述获取模块401获取所述固态硬盘的处于空闲状态的第二物理块时具体用于:获取所述固态硬盘的处于使用状态的多个物理块,从多个物理块中选择部分物理块,将选择的物理块确定为处于迁移状态的第二物理块,并将第二物理块从使用状态修改为迁移状态;对处于迁移状态的第二物理块进行垃圾回收,得到处于空闲状态的第二物理块,并将第二物理块从迁移状态修改为空闲状态。
本申请实施例提供的存储设备,从硬件层面而言,硬件架构示意图具体可以参见图5所示,可以包括:机器可读存储介质和处理器,其中:
机器可读存储介质:存储指令代码。
处理器:与机器可读存储介质通信,读取和执行机器可读存储介质中存储的所述指令代码,实现本申请上述示例公开的数据写入操作。
这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(RadomAccess Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据写入方法,其特征在于,应用于存储设备,所述方法包括:
获取所述存储设备的固态硬盘的处于编程状态的第一物理块,所述第一物理块是未写满数据且不为空的物理块,并在所述第一物理块中写入数据;
若所述第一物理块的第一数据写入信息满足选取条件,则获取处于擦除状态的第二物理块,所述第二物理块是已擦除干净且未写入数据的物理块;
在获取处于擦除状态的第二物理块之后,若所述第一物理块的第二数据写入信息满足切换条件,则在所述第二物理块中写入数据,并将所述第二物理块从擦除状态修改为编程状态;
其中,所述获取处于擦除状态的第二物理块,包括:
获取所述固态硬盘的处于空闲状态的第二物理块,所述处于空闲状态的第二物理块是存在无效数据、且当前未被使用的物理块;
对所述处于空闲状态的第二物理块进行擦除操作,得到处于擦除状态的第二物理块,并将所述第二物理块从空闲状态修改为擦除状态。
2.根据权利要求1所述的方法,其特征在于,
所述第一数据写入信息包括数据写入比例和数据写入状态;
通过以下方式确定所述第一物理块的第一数据写入信息满足选取条件:
若所述数据写入比例已经达到预设比例阈值,则确定满足选取条件;或者,
若所述数据写入状态为数据写入失败,且不存在与所述第一物理块对应的第二物理块,则确定满足选取条件。
3.根据权利要求1所述的方法,其特征在于,
所述第二数据写入信息包括数据写入比例和数据写入状态;
通过以下方式确定所述第一物理块的第二数据写入信息满足切换条件:
若所述数据写入比例表示所述第一物理块已经被占满,则确定满足切换条件;或者,
若所述数据写入状态为数据写入失败,且已存在与所述第一物理块对应的第二物理块,则确定满足切换条件。
4.根据权利要求1所述的方法,其特征在于,
所述获取所述固态硬盘的处于空闲状态的第二物理块,包括:
获取所述固态硬盘的处于使用状态的多个物理块,并从多个物理块中选择部分物理块,将选择的物理块确定为处于迁移状态的第二物理块,并将第二物理块从使用状态修改为迁移状态;对处于迁移状态的第二物理块进行垃圾回收,得到处于空闲状态的第二物理块,并将第二物理块从迁移状态修改为空闲状态。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第二物理块中写入数据之后,若所述第二物理块被写满数据,则将所述第二物理块转换为处于使用状态的第二物理块;
从处于使用状态的第二物理块中选择需要垃圾回收的第二物理块,并将选择的第二物理块转换为处于迁移状态的第二物理块;
对处于迁移状态的第二物理块进行垃圾回收,得到处于空闲状态的第二物理块,或者,得到处于损坏状态的第二物理块。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第二物理块中写入数据之后,若所述第二物理块的数据写入失败,则将所述第二物理块转换为处于迁移损坏状态的第二物理块,并对处于迁移损坏状态的第二物理块进行垃圾回收,得到处于损坏状态的第二物理块。
7.一种数据写入装置,其特征在于,应用于存储设备,所述装置包括:
获取模块,用于获取所述存储设备的固态硬盘的处于编程状态的第一物理块,所述第一物理块是未写满数据且不为空的物理块;
写入模块,用于在所述第一物理块中写入数据;
所述获取模块,还用于若所述第一物理块的第一数据写入信息满足选取条件,则获取处于擦除状态的第二物理块,所述第二物理块是已擦除干净且未写入数据的物理块;
所述写入模块,还用于在所述获取模块获取处于擦除状态的第二物理块之后,若所述第一物理块的第二数据写入信息满足切换条件,则在所述第二物理块中写入数据,并将所述第二物理块从擦除状态修改为编程状态;
其中,所述获取模块获取处于擦除状态的第二物理块时具体用于:
获取所述固态硬盘的处于空闲状态的第二物理块,所述处于空闲状态的第二物理块是存在无效数据、且当前未被使用的物理块;
对所述处于空闲状态的第二物理块进行擦除操作,得到处于擦除状态的第二物理块,并将所述第二物理块从空闲状态修改为擦除状态。
8.根据权利要求7所述的装置,其特征在于,
所述第一数据写入信息包括数据写入比例和数据写入状态;
所述装置还包括:确定模块,用于通过以下方式确定所述第一物理块的第一数据写入信息满足选取条件:若所述数据写入比例已经达到预设比例阈值,则确定满足选取条件;或者,若所述数据写入状态为数据写入失败,且不存在与所述第一物理块对应的第二物理块,则确定满足选取条件。
9.根据权利要求7所述的装置,其特征在于,
所述第二数据写入信息包括数据写入比例和数据写入状态;
所述装置还包括:确定模块,用于通过以下方式确定所述第一物理块的第二数据写入信息满足切换条件:若所述数据写入比例表示所述第一物理块已经被占满,则确定满足切换条件;或者,若所述数据写入状态为数据写入失败,且已存在与所述第一物理块对应的第二物理块,则确定满足切换条件。
10.根据权利要求7所述的装置,其特征在于,
所述获取模块获取所述固态硬盘的处于空闲状态的第二物理块时具体用于:获取所述固态硬盘的处于使用状态的多个物理块,并从多个物理块中选择部分物理块,将选择的物理块确定为处于迁移状态的第二物理块,并将第二物理块从使用状态修改为迁移状态;对处于迁移状态的第二物理块进行垃圾回收,得到处于空闲状态的第二物理块,并将第二物理块从迁移状态修改为空闲状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810542886.0A CN108897492B (zh) | 2018-05-30 | 2018-05-30 | 一种数据写入方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810542886.0A CN108897492B (zh) | 2018-05-30 | 2018-05-30 | 一种数据写入方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108897492A CN108897492A (zh) | 2018-11-27 |
CN108897492B true CN108897492B (zh) | 2021-06-29 |
Family
ID=64343555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810542886.0A Active CN108897492B (zh) | 2018-05-30 | 2018-05-30 | 一种数据写入方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108897492B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181276B (zh) * | 2019-07-03 | 2023-06-20 | 北京忆恒创源科技股份有限公司 | 提升存储设备服务质量的大块构造、分配方法及其存储设备 |
CN110764712A (zh) * | 2019-10-31 | 2020-02-07 | 江苏华存电子科技有限公司 | 一种提高耗损平均技术效率的方法 |
CN111078137B (zh) * | 2019-11-07 | 2021-07-06 | 深圳市金泰克半导体有限公司 | 清理存储空间的方法 |
CN111552650B (zh) * | 2020-04-13 | 2021-03-02 | 深圳市时创意电子有限公司 | 一种数据保存方法、装置、存储介质和数据存储设备 |
CN114063906B (zh) * | 2021-10-15 | 2022-05-17 | 北京得瑞领新科技有限公司 | Nand闪存中物理块的管理方法、装置及ssd设备 |
CN116185282B (zh) * | 2022-12-20 | 2023-10-13 | 珠海妙存科技有限公司 | 一种闪存虚拟块的分段擦除方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266573A (zh) * | 2008-04-29 | 2008-09-17 | 中国船舶重工集团公司第七〇九研究所 | 允许覆盖的闪存均匀磨损循环队列技术 |
CN101477492A (zh) * | 2009-01-21 | 2009-07-08 | 华中科技大学 | 一种用于固态硬盘的循环重写闪存均衡方法 |
CN102768645A (zh) * | 2012-06-14 | 2012-11-07 | 国家超级计算深圳中心(深圳云计算中心) | 混合缓存的固态硬盘预取方法和固态硬盘ssd |
CN102866863A (zh) * | 2012-08-23 | 2013-01-09 | 深圳Tcl新技术有限公司 | 嵌入式多媒体卡数据迁移方法、系统层和嵌入式设备 |
CN106293530A (zh) * | 2016-08-09 | 2017-01-04 | 深圳市先天海量信息技术有限公司 | 一种数据写入方法和装置 |
CN106528000A (zh) * | 2016-12-02 | 2017-03-22 | 郑州云海信息技术有限公司 | 一种数据存储装置及其读写性能优化方法、系统 |
CN106844222A (zh) * | 2015-12-03 | 2017-06-13 | 西安三星电子研究有限公司 | 固态硬盘的数据处理的方法和设备 |
CN107346288A (zh) * | 2016-05-05 | 2017-11-14 | 中国科学院微电子研究所 | 一种数据写入方法及装置 |
-
2018
- 2018-05-30 CN CN201810542886.0A patent/CN108897492B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266573A (zh) * | 2008-04-29 | 2008-09-17 | 中国船舶重工集团公司第七〇九研究所 | 允许覆盖的闪存均匀磨损循环队列技术 |
CN101477492A (zh) * | 2009-01-21 | 2009-07-08 | 华中科技大学 | 一种用于固态硬盘的循环重写闪存均衡方法 |
CN102768645A (zh) * | 2012-06-14 | 2012-11-07 | 国家超级计算深圳中心(深圳云计算中心) | 混合缓存的固态硬盘预取方法和固态硬盘ssd |
CN102866863A (zh) * | 2012-08-23 | 2013-01-09 | 深圳Tcl新技术有限公司 | 嵌入式多媒体卡数据迁移方法、系统层和嵌入式设备 |
CN106844222A (zh) * | 2015-12-03 | 2017-06-13 | 西安三星电子研究有限公司 | 固态硬盘的数据处理的方法和设备 |
CN107346288A (zh) * | 2016-05-05 | 2017-11-14 | 中国科学院微电子研究所 | 一种数据写入方法及装置 |
CN106293530A (zh) * | 2016-08-09 | 2017-01-04 | 深圳市先天海量信息技术有限公司 | 一种数据写入方法和装置 |
CN106528000A (zh) * | 2016-12-02 | 2017-03-22 | 郑州云海信息技术有限公司 | 一种数据存储装置及其读写性能优化方法、系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108897492A (zh) | 2018-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897492B (zh) | 一种数据写入方法和装置 | |
US10915442B2 (en) | Managing block arrangement of super blocks | |
US8949507B2 (en) | Method for performing block management, and associated memory device and controller thereof | |
CN108874309B (zh) | 一种管理固态硬盘中物理块的方法和装置 | |
US9645895B2 (en) | Data storage device and flash memory control method | |
US11704239B2 (en) | Garbage collection method for storage medium, storage medium, and program product | |
TWI474335B (zh) | 增加記憶體的複數區塊的生命週期的系統、方法及電腦程式產品 | |
US8078923B2 (en) | Semiconductor memory device with error correction | |
US9292432B2 (en) | Garbage collection method for flash memory | |
CN109783017B (zh) | 一种存储设备坏块的处理方法、装置及存储设备 | |
US8433844B2 (en) | Method for managing a memory device having multiple channels and multiple ways, and associated memory device and controller thereof | |
US8417879B2 (en) | Method for suppressing errors, and associated memory device and controller thereof | |
CN107291405B (zh) | 一种NorFlash的数据管理方法与装置 | |
US10452280B2 (en) | Hybrid storage system employing reconfigurable memory | |
CN109343796B (zh) | 一种数据处理方法和装置 | |
US10241678B2 (en) | Data storage device and data writing method capable of avoiding repeated write operation of a TLC block when interrupted | |
US9400746B2 (en) | Data storage device and flash memory control method | |
CN111651371B (zh) | 非对称型平面管理方法以及数据存储装置及其控制器 | |
US9418731B1 (en) | Memory management method, memory storage device and memory control circuit unit | |
US20110093649A1 (en) | Method for managing a plurality of blocks of a flash memory, and associated memory device and controller thereof | |
CN110750466A (zh) | 提高闪存擦写寿命的方法和装置 | |
TW201732596A (zh) | 儲存裝置及其控制單元、可用於儲存裝置的資料搬移方 法 | |
CN115114180A (zh) | 在快闪存储器中进行耗损平衡操作的方法和相关控制器以及储存系统 | |
KR101699779B1 (ko) | 플래시 메모리의 색인 방법 | |
CN105868046B (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 |