CN102866956B - 基于固态存储介质的数据实时跟踪存储***及方法 - Google Patents
基于固态存储介质的数据实时跟踪存储***及方法 Download PDFInfo
- Publication number
- CN102866956B CN102866956B CN201210342895.8A CN201210342895A CN102866956B CN 102866956 B CN102866956 B CN 102866956B CN 201210342895 A CN201210342895 A CN 201210342895A CN 102866956 B CN102866956 B CN 102866956B
- Authority
- CN
- China
- Prior art keywords
- sequence number
- physical block
- data
- ppa
- write
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明揭示了一种基于固态存储介质的数据实时跟踪存储***及方法,所述***包括存储模块、数据更新模块、序列号生成模块、数据更新实时跟踪模块。序列号生成模块用以从数列中选取当前序列号,供一个物理块或一组物理块更新时使用;当前序列号被使用之后,从所述数列中选取当前序列号的下一个序列号作为当前序列号;数据更新实时跟踪模块用以在一个物理块被擦除且重新写入数据时,将该物理块或该组物理块与序列号生成模块选取的当前序列号进行关联,实现数据更新的实时跟踪;并将写入的数据及对应序列号同时存储,以便在需要恢复时使用。本发明可利用最小化的***资源实现对数据的准确定位,并能够在最大程度上减小突发情况下丢失数据的可能性。
Description
技术领域
本发明属于数据存储技术领域,涉及一种存储***,尤其涉及一种基于固态存储介质的数据实时跟踪存储***;同时,本发明还涉及一种基于固态存储介质的数据实时跟踪存储方法。
背景技术
固态数据存储技术,尤其是基于闪存(NAND Flash)的数据存储技术在过去十几年发展迅速。在移动应用和高性能计算***中逐渐取代了基于磁记录的硬盘(Hard disk drive)成为主流的存储***。
闪存的结构从上级至下级可分为目标单元Target,逻辑单元LUN(logic unitnumber),平面Plane,物理块Block,和物理页page。一个Target可包含一个或多个LUN;图1展示了一个NAND的***结构。
一个LUN通常由2个或4个Plane组成;一个Plane由多个block组成(如4096block)而一个block由多个page组成(如256page)。图2描述了一个LUN的内部架构。图3揭示了闪存阵列数据结构。
闪存的一大特性是其不可重写性:保存在闪存中的一物理页(page)数据必需要经过其页面所在的整个物理块(block)擦除之后才可以写入新的数据。为了使基于闪存的存储***兼容传统的数据存储读写协议,基于闪存的存储***需要闪存控制器通过FTL(Flash Translation Layer,闪存转换层)实现对闪存的管理。FTL层的典型结构如图4中所示。闪存转换层(FTL)主要由地址映射分配表、垃圾回收单元和磨损均衡单元组成。FTL把闪存当作一日志设备完成如下功能:
1.分配物理页面地址(PPA:physical page address)给新的逻辑数据页面(LPA:logical page address),并在地址映射表中存储其对应的PPA地址。
2.分配新的物理页面地址PPA给需要更新的逻辑数据页面,并在映射表中更新其物理地址。
3.将该数据更新前存放的物理页面标记为无效(invalid or outdated),从而该页面(page)所在的块(block)在将来可以被FTL重新擦除回收,既垃圾回收(GC:Garbage Collection)。在垃圾回收时,被回收的块中仍然有效的数据页面将被拷贝到新的物理页面。当拷贝完成之后,该块中的所有页面都成为无效数据,因此整个数据块可以擦除之后再重新利用。
4.为防止某些物理块(block)被过度使用而造成***失效(闪存的物理块拥有有限的擦除读写次数,如5000次),FTL应用磨损均衡(WL:wear leveling)使得整个设备中的物理块使用程度平均,以最大化***使用寿命。
由上可见在基于闪存的固态存储器可能存在同一逻辑页面的多份拷贝。在这多份拷贝中,除了最新写入(主机更新写入或是GC/WL写入)的数据是有效的外,其它的拷贝都应该是无效的。FTL的任务之一便是能准确地跟踪定位对LPA唯一有效的PPA,并能尽可能地减少无效或者说已失效拷贝的数量达到充分利用存储空间的目的。
在实现LPA到PPA的映射表时,最直接的方法是将映射表存储在RAM中而在***关机时将映射表备份存储在闪存介质中。这一方案有两个缺陷:
(1)随着存储器容量的增加,映射表所需的存储量也相应增加。在更新后存储映射表的相应负荷也加大,需要占用很多的存储空间。
(2)在突发断电的情况下,如果映射表未能保存则有可能出现数据丢失或错误现象。
另一方案是对每一个LPA写入时加入时间信息(time stamp)使得***能够唯一识别最新的数据。而这一种做法的缺陷是这些唯一的时间信息占用非常多的存储空间使得存储效率大幅度减低。
发明内容
本发明所要解决的技术问题是:提供一种基于固态存储介质的数据实时跟踪存储***,可利用最小化的***资源实现对数据的准确定位,并能够在最大程度上减小突发情况下(如***掉电)丢失数据的可能性。
此外,本发明还涉及一种基于固态存储介质的数据实时跟踪存储方法,可利用最小化的***资源实现对数据的准确定位,并能够在最大程度上减小突发情况下(如***掉电)丢失数据的可能性。
为解决上述技术问题,本发明采用如下技术方案:
一种基于固态存储介质的数据实时跟踪存储***,所述***包括:
存储模块,包括若干物理块,用以存储数据;
数据更新模块,用以擦除物理块中的数据,并向该物理块中重新写入数据;
序列号生成模块,用以从一数列中选取当前序列号,供一个物理块或一组物理块更新时使用;当前序列号被使用之后,从所述数列中选取当前序列号的下一个序列号作为当前序列号;所述数列为能唯一确定数列中各项序列号使用先后顺序的数列;
数据更新实时跟踪模块,用以在一个物理块或一组物理块中的一个物理块被擦除且重新写入数据时,将该物理块或该组物理块与所述序列号生成模块选取的当前序列号进行关联,实现数据更新的实时跟踪;并将写入的数据及对应序列号同时存储,以便在需要恢复时使用。
作为本发明的一种优选方案,所述存储模块包括一个或多个目标单元target,而一个目标单元包括一个或多个逻辑单元LUN,一个逻辑单元包括一个或多个物理块;
所述一组物理块为超级物理块,超级物理块包括若干物理块,这些物理块来自多个LUN,并共享一个序列号;
如果同一逻辑数据页面LPA出现在不同的超级物理块中,具有后使用序列号的超级物理块存储的是最新数据;
如果同一超级物理块中包括多个同一LPA,按照写入数据的先后顺序,后写入的物理页面地址PPA所对应的数据是最新的数据。
作为本发明的一种优选方案,所述***进一步包括:
序列号先后判定模块,用以根据序列号的使用情况判定在设定时间段内各序列号的先后使用顺序;
映射表重构模块,用以构建LPA至PPA的映射表;对于存储在介质中的每一个PPA,读出其对应的LPA;如果在重新构建的映射表中某LPA记录为空,则将PPA地址填入作为存储地址;如果在重新构建的映射表中已有PPA记录,记为PPA_o;(1)如果当前PPA与PPA_o属于同一物理块或超级物理块,则再进一步比较页面在物理块或超级物理块中写入顺序;如果该PPA的写入顺序晚于映射表中PPA_o的写入顺序,则更新该记录被更新成当前PPA,否则,该记录将维持不变;(2)如果当前PPA与PPA_o属于不同物理块或超级物理块,则比较PPA和PPA_o对应序列号的先后顺序;如果PPA对应的序列号后于PPA_o对应的序列号,则更新记录为PPA;否则维持记录不变。
作为本发明的一种优选方案,所述***进一步包括多进程写入控制模块,用以控制多个写入进程进行数据写入时共享同一序列号生成模块;
在固态数据存储***中包括不同类别的数据;在写入过程中,不同类别的数据由对应的不同写入进程分别处理;序列号可以在任何一个写入进程完成一个物理块或一组物理块的同时分配,并保证在同一逻辑页面(LPA)在写入一个物理块或者一组物理块的过程中不发生线程的跳转。
作为本发明的一种优选方案,所述序列号生成模块生成的序列号呈递增或递减;
或者,所述序列号生成模块循环利用数列中的各项序列号,或者所述数列为循环数列;但确保设定时间段内数列中序列号的唯一性。
一种基于固态存储介质的数据实时跟踪存储方法,所述方法包括如下步骤:
数据更新步骤:擦除物理块中的数据,并向该物理块中重新写入数据;
序列号生成步骤:从一数列中选取当前序列号,供一个物理块或一组物理块更新时使用;当前序列号被使用之后,从所述数列中选取当前序列号的下一个序列号作为当前序列号;所述数列为能唯一确定数列中各项序列号使用先后顺序的数列;
数据更新实时跟踪步骤:在一个物理块或一组物理块中的一个物理块被擦除且重新写入数据时,将该物理块或该组物理块与所述序列号生成模块选取的当前序列号进行关联,实现数据更新的实时跟踪;并将写入的数据及对应序列号同时存储,以便在需要恢复时使用。
作为本发明的一种优选方案,存储***的存储模块包括一个或多个目标单元target,而一个目标单元包括一个或多个逻辑单元LUN,一个逻辑单元包括一个或多个物理块;
所述一组物理块为超级物理块,超级物理块包括若干物理块,这些物理块来自多个LUN,并共享一个序列号;
所述方法进一步包括:
如果同一逻辑数据页面LPA出现在不同的超级物理块中,具有后使用序列号的超级物理块存储的是最新数据;
如果同一超级物理块中包括多个同一LPA,按照写入数据的先后顺序,后写入的物理页面地址PPA所对应的数据是最新的数据。
作为本发明的一种优选方案,所述方法进一步包括:
序列号先后判定步骤,根据序列号的使用情况判定在设定时间段内各序列号的先后使用顺序;
映射表重构步骤,构建LPA至PPA的映射表;对于存储在介质中的每一个PPA,读出其对应的LPA;如果在重新构建的映射表中某LPA记录为空,则将PPA地址填入作为存储地址;如果在重新构建的映射表中已有PPA记录,记为PPA_o;(1)如果当前PPA与PPA_o属于同一物理块或超级物理块,则再进一步比较页面在物理块或超级物理块中写入顺序;如果该PPA的写入顺序晚于映射表中PPA_o的写入顺序,则更新该记录被更新成当前PPA,否则,该记录将维持不变;(2)如果当前PPA与PPA_o属于不同物理块或超级物理块,则比较PPA和PPA_o对应序列号的先后顺序;如果PPA对应的序列号后于PPA_o对应的序列号,则更新记录为PPA;否则维持记录不变。
作为本发明的一种优选方案,所述方法进一步包括多进程写入控制步骤,控制多个写入进程进行数据写入时共享同一序列号生成模块;
在固态数据存储***中包括不同类别的数据;在写入过程中,不同类别的数据由对应的不同写入进程分别处理;序列号可以在任何一个写入进程完成一个物理块或一组物理块的同时分配,并保证同一LPA在写入一个物理块或者一组物理块的过程中不发生线程的跳转。
作为本发明的一种优选方案,所述序列号生成步骤中,生成的序列号呈递增或递减;
或者,所述序列号生成步骤中,循环利用数列中的各项序列号,或者所述数列为循环数列;但确保设定时间段内数列中序列号的唯一性。
本发明的有益效果在于:本发明提出的基于固态存储介质的数据实时跟踪存储***及方法,利用最小化的***资源实现对数据的准确定位,并能够在最大程度上减小突发情况下(如***掉电)丢失数据的可能性。
附图说明
图1为现有闪存设备的组成结构示意图。
图2为现有闪存内部结构示意图。
图3为现有闪存阵列数据结构示意图。
图4为现有固态存储***架构示意图。
图5为序列号与物理块关联示意图。
图6为多个并行LUN共享一个序列号的示意图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
实施例一
本发明揭示了一种基于固态存储介质的数据实时跟踪存储***,所述***包括:存储模块、数据更新模块、序列号生成模块、数据更新实时跟踪模块、序列号先后判定模块、映射表重构模块。
【存储模块】
存储模块包括若干物理块,用以存储数据;本实施例中,存储模块可以为闪存等固态数据存储介质。本实施例中,为解释方便,假设固态数据存储***的存储模块由一个目标单元Target组成,目标单元Target包括一个逻辑单元LUN,一个逻辑单元包括一个或多个物理块。
【数据更新模块】
数据更新模块用以擦除物理块中的数据,并向该物理块中重新写入数据。
【序列号生成模块】
序列号生成模块用以从一数列中选取当前序列号,供一个物理块或一组物理块更新时使用;当前序列号被使用之后,从所述数列中选取当前序列号的下一个序列号作为当前序列号。
所述数列为能唯一确定数列中各项序列号使用先后顺序的数列;如,所述数列可以是单调递增的自然数如0,1,2,3....;也可以是单调递减的自然数如10000,9999,9998,…。广义上而言,只要是能够唯一识别先后顺序的数列都可以用于做序列号,简单的一个例子是偶数序列,或质数序列等等。
在实际使用过程中,循环数列也可以用来做序列号(优选地,需要确保设定时间段内数列中序列号的唯一性)。假设使用0至99的自然数作为序列号,而***保证在任何时候的最大有效物理块或实施例二中的超级物理块(简称超级块)的个数不超过100,则序列号可以循环使用。例如在一时刻t1,序列号90,91,92,…,99,0,1,2,…,79被使用:序列号79将比90相对而言更新,而且序列号79对应的超级物理块内的数据是所有数据中最新的。在下一时刻t2,序列号91,92,93,…,99,0,1,2,…,79,80被使用,则序列号80对应的超级块比79对应的超级块更新。
如图5所示,当一个序列号被使用之后,序列号加1之后将与下一个将要被使用的物理块关联。由于序列号的唯一性,如果一个LPA在多个物理块中出现,只需比较其所在物理块的序列号:所在物理块据有最新的序列号是最新的数据,即是用户所存储对应该LPA最新的数据。对于有些LPA,由于主机host更新比较快在同一物理块中,有可能出现同一LPA的多个拷贝:在host完成写完一个物理块之前,该LPA经过了多次更新。在优选实施例子中,物理块的物理页面具有固定的写入顺序。因而物理页地址(PPA)可以识别物理块的写入顺序。
【数据更新实时跟踪模块】
数据更新实时跟踪模块用以在一个物理块或一组物理块中的一个物理块被擦除且重新写入数据时,将该物理块或该组物理块与所述序列号生成模块选取的当前序列号进行关联,并将写入的数据及对应序列号同时存储,以便在需要恢复时使用。序列号可以存储在物理块的任何一页,如最后一页或者是第一页;如果需要的话,序列号也可以储存在每一页中,即有多份相同的拷贝。
所使用的唯一序列号与host数据同时存储在物理介质中。该方法同时解决了其它解决方法面临的两个问题:(1)每一个物理块只需存储一个序列号,***开销相当小;(2)序列号与数据一并存储,大幅度降低了由于突发断电而造成的数据丢失或讹误。
【序列号先后判定模块】
序列号先后判定模块用以根据序列号的使用情况判定在设定时间段内各序列号的先后使用顺序;由于本发明中的各序列号是有先后顺序的,因此可以轻易判断各序列号使用的先后顺序。
【映射表重构模块】
映射表重构模块用以在***初始化时,如主机启动时构建LPA至PPA的映射表;对于存储在介质中的每一个PPA,读出其对应的LPA;如果在重新构建的映射表中某LPA记录为空,则将PPA地址填入作为存储地址;如果在重新构建的映射表中已有PPA记录,记为PPA_o。(1)如果当前PPA与PPA_o属于同一物理块或超级物理块,则再进一步比较页面在物理块或超级物理块中写入顺序;如果该PPA的写入顺序晚于映射表中PPA_o的写入顺序,则更新该记录被更新成当前PPA,否则,该记录将维持不变;(2)如果当前PPA与PPA_o属于不同物理块或超级物理块,则比较PPA和PPA_o对应序列号的先后顺序;如果PPA对应的序列号后于PPA_o对应的序列号,则更新记录为PPA;否则维持记录不变。
映射表经过以上重构之后可以保证数据的实时性,并同时减少了***开销及数据丢失的可能性。
以上介绍了本发明固态数据存储***的组成,本发明还揭示一种固态数据存储***的数据存储方法,所述方法包括如下步骤:
【数据更新步骤】
擦除物理块中的数据,并向该物理块中重新写入数据。
【序列号生成步骤】
从序列号数列中选取当前序列号,供一个物理块或一组物理块更新时使用;当前序列号被使用之后,从所述数列中选取当前序列号的下一个序列号作为当前序列号;所述数列为能唯一确定数列中各项序列号使用先后顺序的数列。
【数据更新实时跟踪步骤】
在一个物理块或一组物理块中的一个物理块被擦除且重新写入数据时,将该物理块或该组物理块与所述序列号生成模块选取的当前序列号进行关联,并将写入的数据及对应序列号同时存储,以便在需要恢复时使用。
序列号可以存储在物理块的任何一页,如最后一页或者是第一页;如果需要的话,序列号也可以储存在每一页中,即有多份相同的拷贝。
【序列号先后判定步骤】
根据序列号的使用情况判定在设定时间段内各序列号的先后使用顺序。
【映射表重构步骤】
构建LPA至PPA的映射表;对于存储在介质中的每一个PPA,读出其对应的LPA;如果在重新构建的映射表中某LPA记录为空,则将PPA地址填入作为存储地址;如果在重新构建的映射表中已有PPA记录,记为PPA_o;(1)如果当前PPA与PPA_o属于同一物理块或超级物理块,则再进一步比较页面在物理块或超级物理块中写入顺序;如果该PPA的写入顺序晚于映射表中PPA_o的写入顺序,则更新该记录被更新成当前PPA,否则,该记录将维持不变;(2)如果当前PPA与PPA_o属于不同物理块或超级物理块,则比较PPA和PPA_o对应序列号的先后顺序;如果PPA对应的序列号后于PPA_o对应的序列号,则更新记录为PPA;否则维持记录不变。
经过本发明的上述改进,可以利用最小化的***资源实现对数据更新的准确定位,并且能够在最大程度上减小突发情况下(如***掉电)丢失数据的可能性。
实施例二
在固态存储***中,为提高***性能,通常使用多个目标单元和多个LUN并行。在这种应用情况下,一个物理块可以扩展到多个物理块,定义为超级物理块(可简称为超级块)。超级物理块包括若干物理块,这些物理块来自多个LUN,并共享一个序列号。控制器可以以超级物理块为单位进行序列号的管理,既一个由多个物理块组成的超级物理块在数据写入时具有唯一的序列号。
图6描述了本实施例的一个具体案例;如图6所示,一个超级物理块由8个物理块组成。这些物理块来自2个不同的target和其各自的2个LUN。每个LUN包含2个Plane。一个超级块中所有的物理块共享一个序列号。
与一个物理块的情况类似,同一LPA如果出现在不同的超级块中,具有较大序列号的超级块拷贝对应于最新的数据。对于同一超级块中的多个同一LPA,按照写的先后顺序,后写的物理页地址所对应的数据是最新的。例如,在写的过程中,写的顺序如表1所示。
写入顺序 | Page | Block | Plane | LUN | Target |
0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 0 |
2 | 0 | 0 | 0 | 1 | 0 |
3 | 0 | 0 | 1 | 1 | 0 |
4 | 0 | 0 | 0 | 0 | 1 |
5 | 0 | 0 | 1 | 0 | 1 |
6 | 0 | 0 | 0 | 1 | 1 |
7 | 0 | 0 | 1 | 1 | 1 |
8 | 1 | 0 | 0 | 0 | 0 |
9 | 1 | 0 | 1 | 0 | 0 |
10 | 1 | 0 | 0 | 1 | 0 |
11 | 1 | 0 | 1 | 1 | 0 |
12 | 1 | 0 | 0 | 0 | 1 |
13 | 1 | 0 | 1 | 0 | 1 |
14 | 1 | 0 | 0 | 1 | 1 |
15 | 1 | 0 | 1 | 1 | 1 |
16 | 2 | 0 | 0 | 0 | 0 |
... |
表1
则在同一超级物理块中,块内的写入顺序号代表了数据的实时性:例如LPA0在page 0,block 0,plane 0,LUN0,Target 0中及page 1,block 0,plane 1,LUN 1,Target 1中同时出现,则在page1,block0,plane1,LUN1,Target 1中的数据是LPA0所对应的最新数据。
实施例三
本实施例与实施例一、实施例二的区别在于,本发明可以推广到多个写入进程共享同一序列号生成器。对应地,所述***进一步包括多进程写入控制模块,用以控制多个写入进程进行数据写入时共享同一序列号生成模块;在固态数据存储***中包括不同类别的数据;在写入过程中,不同类别的数据由对应的不同写入进程分别处理;序列号可以在任何一个写入进程完成一个物理块或一组物理块的同时分配,保证在一个逻辑页面LPA在写入一个物理块或者一组物理块过程中,在该物理块或者一组物理块完成写入时,不发生线程的跳转。
如在固态存储***中有热数据和冷数据。在写入过程中,热数据和冷数据可能由两个不同的写入进程分别处理。在这种应用情况下,序列号可以在任何一个写入进程完成一个物理块或超级物理块的同时分配。虽然LPA可能由于温度的动态变化由一个写入线程跳到另一个写入线程,只要LPA开始写入同一个物理块或者超级物理块的过程中不发生线程的跳转,可以完全记录和恢复数据的实时性。
例如,第一线程可能分配使用了序列号0,1,2和5;第二线程可能分配使用了序列号3和4。
综上所述,本发明的利用简单而有效的机制使得固态存储***能够准确地跟踪定位数据的实时性。其关键机理包含:
(1)利用唯一序列号辨识时间顺序;序列号与数据一起存储在存储物理介质内,以便将来数据恢复时可以使用。
(2)利用了多个逻辑页面(LPA)共享一个序列号,既一个物理块或超级物理块内的多个LPA使用同一序列号。在不同物理块或超级块之间的时间顺序可以根据序列号得到识别定位。
(3)在同一物理块或超级块内的共享序列号的LPA时间顺序依照块内的写入顺序得以识别。
使用该机制的固态存储***以最小的***开销实现数据实时性的准确定位和跟踪。
这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。
Claims (10)
1.一种基于固态存储介质的数据实时跟踪存储***,其特征在于,所述***包括:
存储模块,包括若干物理块,用以存储数据;
数据更新模块,用以擦除物理块中的数据,并向该物理块中重新写入数据;
序列号生成模块,用以从一数列中选取当前序列号,供一个物理块或一组物理块更新时使用;当前序列号被使用之后,从所述数列中选取当前序列号的下一个序列号作为当前序列号;所述数列为能唯一确定数列中各项序列号使用先后顺序的数列;
数据更新实时跟踪模块,用以在一个物理块或一组物理块中的一个物理块被擦除且重新写入多个逻辑块数据时,将该物理块或该组物理块与所述序列号生成模块选取的当前序列号进行关联,实现数据更新的实时跟踪;并将写入的数据及对应序列号同时存储,以便在需要恢复时使用;
序列号先后判定模块,用以在恢复数据时判断物理块的写入先后顺序;
映射表重构模块,用以在***初始化时构建逻辑地址LPA至物理地址PPA的映射。
2.根据权利要求1所述的基于固态存储介质的数据实时跟踪存储***,其特征在于:
所述存储模块包括一个或多个目标单元target,而一个目标单元包括一个或多个逻辑单元LUN,一个逻辑单元包括一个或多个物理块;
所述一组物理块为超级物理块,超级物理块包括若干物理块,这些物理块来自多个LUN,并共享一个序列号;
如果同一逻辑数据页面LPA出现在不同的超级物理块中,具有后使用序列号的超级物理块存储的是最新数据;
如果同一超级物理块中包括多个同一LPA,按照写入数据的先后顺序,后写入的物理页面地址PPA所对应的数据是最新的数据。
3.根据权利要求1或2所述的基于固态存储介质的数据实时跟踪存储***,其特征在于:
所述映射表重构模块,用以构建LPA至PPA的映射表;对于存储在介质中的每一个PPA,读出其对应的LPA;如果在重新构建的映射表中某LPA记录为空,则将PPA地址填入作为存储地址;如果在重新构建的映射表中已有PPA记录,记为PPA_o;(1)如果当前PPA与PPA_o属于同一物理块或超级物理块,则再进一步比较页面在物理块或超级物理块中写入顺序;如果该PPA的写入顺序晚于映射表中PPA_o的写入顺序,则更新该记录被更新成当前PPA,否则,该记录将维持不变;(2)如果当前PPA与PPA_o属于不同物理块或超级物理块,则比较PPA和PPA_o对应序列号的先后顺序;如果PPA对应的序列号后于PPA_o对应的序列号,则更新记录为PPA;否则维持记录不变。
4.根据权利要求1或2所述的基于固态存储介质的数据实时跟踪存储***,其特征在于:
所述***进一步包括多进程写入控制模块,用以控制多个写入进程进行数据写入时共享同一序列号生成模块;
在固态数据存储***中包括不同类别的数据;在写入过程中,不同类别的数据由对应的不同写入进程分别处理;序列号在任何一个写入进程完成一个物理块或一组物理块的同时分配。
5.根据权利要求1或2所述的基于固态存储介质的数据实时跟踪存储***,其特征在于:
所述序列号生成模块生成的序列号呈递增或递减;
或者,所述序列号生成模块循环利用数列中的各项序列号,或者所述数列为循环数列;但确保设定时间段内数列中序列号的唯一性。
6.一种基于固态存储介质的数据实时跟踪存储方法,其特征在于,所述方法包括如下步骤:
数据更新步骤:擦除物理块中的数据,并向该物理块中重新写入数据;
序列号生成步骤:从一数列中选取当前序列号,供一个物理块或一组物理块更新时使用;当前序列号被使用之后,从所述数列中选取当前序列号的下一个序列号作为当前序列号;所述数列为能唯一确定数列中各项序列号使用先后顺序的数列;
数据更新实时跟踪步骤:在一个物理块或一组物理块中的一个物理块被擦除且重新写入数据时,将该物理块或该组物理块与所述序列号生成模块选取的当前序列号进行关联,实现数据更新的实时跟踪;并将写入的数据及对应序列号同时存储,以便在需要恢复时使用;
序列号先后判定步骤,根据序列号的使用情况判定在设定时间段内各序列号的先后使用顺序;
映射表重构步骤,在***初始化时构建逻辑地址LPA至物理地址PPA的映射。
7.根据权利要求6所述的基于固态存储介质的数据实时跟踪存储方法,其特征在于:
存储***的存储模块包括一个或多个目标单元target,而一个目标单元包括一个或多个逻辑单元LUN,一个逻辑单元包括一个或多个物理块;
所述一组物理块为超级物理块,超级物理块包括若干物理块,这些物理块来自多个LUN,并共享一个序列号;
所述方法进一步包括:
如果同一逻辑数据页面LPA出现在不同的超级物理块中,具有后使用序列号的超级物理块存储的是最新数据;
如果同一超级物理块中包括多个同一LPA,按照写入数据的先后顺序,后写入的物理页面地址PPA所对应的数据是最新的数据。
8.根据权利要求6或7所述的基于固态存储介质的数据实时跟踪存储方法,其特征在于:
映射表重构步骤中,对于存储在介质中的每一个PPA,读出其对应的LPA;如果在重新构建的映射表中某LPA记录为空,则将PPA地址填入作为存储地址;如果在重新构建的映射表中已有PPA记录,记为PPA_o;(1)如果当前PPA与PPA_o属于同一物理块或超级物理块,则再进一步比较页面在物理块或超级物理块中写入顺序;如果该PPA的写入顺序晚于映射表中PPA_o的写入顺序,则更新该记录被更新成当前PPA,否则,该记录将维持不变;(2)如果当前PPA与PPA_o属于不同物理块或超级物理块,则比较PPA和PPA_o对应序列号的先后顺序;如果PPA对应的序列号后于PPA_o对应的序列号,则更新记录为PPA;否则维持记录不变。
9.根据权利要求6或7所述的基于固态存储介质的数据实时跟踪存储方法,其特征在于:
所述方法进一步包括多进程写入控制步骤,控制多个写入进程进行数据写入时共享同一序列号生成模块;
在固态数据存储***中包括不同类别的数据;在写入过程中,不同类别的数据由对应的不同写入进程分别处理;序列号在任何一个写入进程完成一个物理块或一组物理块的同时分配。
10.根据权利要求6或7所述的基于固态存储介质的数据实时跟踪存储方法,其特征在于:
所述序列号生成步骤中,生成的序列号呈递增或递减;
或者,所述序列号生成步骤中,循环利用数列中的各项序列号,或者所述数列为循环数列;但确保设定时间段内数列中序列号的唯一性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210342895.8A CN102866956B (zh) | 2012-09-14 | 2012-09-14 | 基于固态存储介质的数据实时跟踪存储***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210342895.8A CN102866956B (zh) | 2012-09-14 | 2012-09-14 | 基于固态存储介质的数据实时跟踪存储***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102866956A CN102866956A (zh) | 2013-01-09 |
CN102866956B true CN102866956B (zh) | 2015-02-18 |
Family
ID=47445835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210342895.8A Active CN102866956B (zh) | 2012-09-14 | 2012-09-14 | 基于固态存储介质的数据实时跟踪存储***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102866956B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103513991B (zh) * | 2013-10-17 | 2017-04-12 | 杭州安恒信息技术有限公司 | 一种在差额限定条件下的在数列间建立双向映射的方法 |
CN104679440B (zh) * | 2013-11-29 | 2017-11-10 | 深圳市国微电子有限公司 | 一种闪存阵列管理方法及装置 |
CN104461391B (zh) * | 2014-12-05 | 2019-08-02 | 上海宝存信息科技有限公司 | 一种存储设备元数据管理处理方法及*** |
CN108959108B (zh) * | 2017-05-26 | 2021-08-24 | 上海宝存信息科技有限公司 | 固态硬盘访问方法以及使用该方法的装置 |
US10387243B2 (en) * | 2017-12-08 | 2019-08-20 | Macronix International Co., Ltd. | Managing data arrangement in a super block |
KR102492729B1 (ko) * | 2017-12-13 | 2023-01-27 | 마이크론 테크놀로지, 인크. | 가변 폭 수퍼 블록 어드레싱 |
CN108170614B (zh) * | 2018-01-19 | 2022-01-11 | 湖南国科微电子股份有限公司 | 一种避免数据重复回收的方法、装置及固态硬盘 |
CN108710579A (zh) * | 2018-04-27 | 2018-10-26 | 江苏华存电子科技有限公司 | 一种超过寻址空间大容量的管理方法 |
CN111708481B (zh) * | 2020-04-24 | 2021-04-06 | 浙江大学 | 一种基于超级块的固态硬盘ssd双区磨损均衡处理方法 |
CN111581022B (zh) * | 2020-04-30 | 2022-07-08 | 江苏芯盛智能科技有限公司 | 一种数据恢复方法及*** |
CN111666177B (zh) * | 2020-05-07 | 2023-06-30 | 中国石油天然气股份有限公司 | 一种气液两相流量计仪表数据存储方法 |
CN112068769B (zh) * | 2020-07-28 | 2023-11-14 | 深圳市宏旺微电子有限公司 | 闪存设备双向链表管理方法和闪存存储设备 |
CN112698986A (zh) * | 2020-12-25 | 2021-04-23 | 北京浪潮数据技术有限公司 | 一种数据恢复方法、装置及相关设备 |
CN112948173A (zh) * | 2021-02-02 | 2021-06-11 | 湖南国科微电子股份有限公司 | 一种数据恢复方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236789A (zh) * | 2006-12-18 | 2008-08-06 | 三星电子株式会社 | 检测静态数据区、磨损均衡、和合并数据单元的方法和装置 |
CN101539886A (zh) * | 2008-03-21 | 2009-09-23 | 株式会社东芝 | 具有多个非易失性存储器器件的存储装置 |
CN101751343A (zh) * | 2009-12-28 | 2010-06-23 | 成都市华为赛门铁克科技有限公司 | 固态硬盘数据写入方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7418544B2 (en) * | 2005-10-05 | 2008-08-26 | Oracle International Corporation | Method and system for log structured relational database objects |
-
2012
- 2012-09-14 CN CN201210342895.8A patent/CN102866956B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236789A (zh) * | 2006-12-18 | 2008-08-06 | 三星电子株式会社 | 检测静态数据区、磨损均衡、和合并数据单元的方法和装置 |
CN101539886A (zh) * | 2008-03-21 | 2009-09-23 | 株式会社东芝 | 具有多个非易失性存储器器件的存储装置 |
CN101751343A (zh) * | 2009-12-28 | 2010-06-23 | 成都市华为赛门铁克科技有限公司 | 固态硬盘数据写入方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102866956A (zh) | 2013-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102866956B (zh) | 基于固态存储介质的数据实时跟踪存储***及方法 | |
US10990526B1 (en) | Handling asynchronous power loss in a memory sub-system that programs sequentially | |
CN101515276B (zh) | 一种文件数据写操作的方法、文件数据恢复方法及*** | |
US20150186224A1 (en) | Data storage device and flash memory control method | |
CN103270500B (zh) | 事务日志恢复 | |
CN101923448B (zh) | 一种nand闪存的转换层读写方法 | |
KR101678868B1 (ko) | 플래시 주소 변환 장치 및 그 방법 | |
CN102135942B (zh) | 一种存储设备中实现损耗均衡的方法及存储设备 | |
US9575844B2 (en) | Mass storage device and method of operating the same to back up data stored in volatile memory | |
US20110131365A1 (en) | Data Storage System and Method | |
TWI484334B (zh) | 非揮發記憶體的區域式管理方法 | |
TWI434175B (zh) | 用來進行區塊管理之方法以及記憶裝置及控制器 | |
CN104035830A (zh) | 一种数据恢复方法和装置 | |
CN108170614B (zh) | 一种避免数据重复回收的方法、装置及固态硬盘 | |
CN110347613B (zh) | 多租户固态盘中实现raid的方法、控制器及多租户固态盘 | |
CN104142872A (zh) | 一种raid磁盘阵列的快速重建方法 | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
CN101556555A (zh) | 用于闪存的区块管理方法、其控制器与储存*** | |
CN105204783A (zh) | 一种基于数据生存期的固态盘垃圾回收方法 | |
CN107885620B (zh) | 一种提高固态盘阵列性能和可靠性的方法及*** | |
CN101408864B (zh) | 用于断电时的数据保护方法及使用此方法的控制器 | |
CN108491290B (zh) | 一种数据写入方法及装置 | |
US7702864B2 (en) | Apparatus, system, and method for writing stripes in parallel to unique persistent storage devices | |
CN116204137B (zh) | 基于dpu的分布式存储***、控制方法、装置及设备 | |
US11100005B2 (en) | Logical-to-physical (L2P) table sharping strategy |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |