CN103544110A - 一种基于固态盘的块级连续数据保护方法 - Google Patents
一种基于固态盘的块级连续数据保护方法 Download PDFInfo
- Publication number
- CN103544110A CN103544110A CN201310463447.8A CN201310463447A CN103544110A CN 103544110 A CN103544110 A CN 103544110A CN 201310463447 A CN201310463447 A CN 201310463447A CN 103544110 A CN103544110 A CN 103544110A
- Authority
- CN
- China
- Prior art keywords
- solid
- module
- state disk
- write request
- request
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于固态盘的块级连续数据保护方法,包括:在内存中创建一个空的写请求队列缓存,用于缓存来自用户的写请求,在固态盘的FTL层初始化一个内存空间CDP_store,用来记录FTL映射表的历史记录CDP_entry,接收来自于用户的请求,并判断该请求是对数据块的读写请求还是恢复请求,如果是对数据块的读写请求则判断该请求是读请求还是写请求,如果是写请求,则判断写请求队列缓存中是否有剩余的缓存空间,如果没有则将写请求队列缓存中的内容写回固态盘上。本发明结合固态盘本身的特性,利用固态盘内在的“异地更新”产生的“被覆盖”历史数据遗留在固态盘中的特征,来实现将固态盘回滚恢复至之前的历史时间点状态,从而实现基于SSD的连续数据保护的功能。
Description
技术领域
本发明属于计算机数据存储和备份领域,更具体地,涉及一种基于固态盘的块级连续数据保护方法。
背景技术
连续数据保护技术是一种有效的数据灾备技术,它的提出就是为了解决传统备份技术需要停机进行备份、灾难发生时数据丢失量大等缺点。全球网络存储工业协会(Storage Networking Industry Association,简称SNIA)给连续数据保护(Continuous Data Protection,简称CDP)的定义是:连续数据保护是一套方法,它可以捕获或跟踪数据的变化,并将其在生产数据之外独立存放,以确保数据可以恢复到过去的任意时间点。连续数据保护就是持续地对存储系统进行安全保护,而不需要专门地对系统进行停机操作。它持续地跟踪和保存存储系统发生的状态变化,即它具有存储状态任意时间点的映像版本。因此与备份技术相比,它能够将存储系统状态恢复到与灾难发生点无限接近的时刻,而不只是有限个的备份时间点,数据丢失量大大减少。因此,企业通常采用备份与连续数据技术相结合的方式来保证数据可靠安全,即对数据进行周期的备份作为数据参照版本,而在两次备份点之间则采用连续数据保护技术以减少灾难发生时的数据丢失量。
固态盘内部具有一个重要的闪存转换层(File translation layer,简称FTL)中间软件,FTL内部有个逻辑地址到物理页面的映射表,它表示当前时刻固态盘的逻辑地址与物理页面之间的对应关系。随着逻辑地址被写入新的内容,与逻辑地址对应的物理页面也会随之而改变。由于FTL的存在,系统对同一逻辑地址进行写操作时,不需要先将页面擦除,而只需要将数据直接写到新分配的空闲页面,然后修改FTL映射表使得该逻辑地址对应数据写入的新地址。避免了擦除操作对写操作性能的影响。从上层的角度来看,SSD所呈现的存储状态是完全由FTL当前映射表的内容决定的,而与当前SSD磁盘的实际物理状态无关。对于同一磁盘的物理状态,FTL映射表的内容不同,则SSD的对外的状态也不同。这就是固态盘内在的“异地更新”产生的“被覆盖”历史数据遗留在固态盘中的特征,
然而,传统的连续数据保护技术实现都是基于硬盘驱动器(Hard disk drive,简称HDD)而提出的,它具有两方面的缺陷。首先,需要对每次数据写操作进行跟踪并保存数据,对系统具有持续性的影响,而且这种影响往往很大。其次,为了保证最小的影响,往往需要在当前的系统中预留一部分存储空间来存储捕获的数据,因而减少了运行系统的可用存储空间。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于固态盘的块级连续数据保护方法和系统,其目的在于结合固态盘本身的特性,利用固态盘内在的“异地更新”产生的“被覆盖”历史数据遗留在固态盘中的特征,来实现将固态盘回滚恢复至之前的历史时间点状态,从而实现基于固态盘存储系统上的连续数据保护的功能。
为实现上述目的,按照本发明的一个方面,提供了基于固态盘的块级连续数据保护方法,包括以下步骤:
(1)在内存中创建一个空的写请求队列缓存,用于缓存来自用户的写请求,在固态盘的FTL层初始化一个内存空间CDP_store,用来记录FTL映射表的历史记录CDP_entry;
(2)接收来自于用户的请求,并判断该请求是对数据块的读写请求还是恢复请求,如果是对数据块的读写请求则转入步骤(3),如果是恢复请求则转入步骤(12);
(3)判断该请求是读请求还是写请求,如果是读请求,则进入步骤(4),如果是写请求,则进入步骤(7);
(4)检查写请求队列缓存中是否存在该读请求的逻辑页面对应的写请求记录,如果存在则进入步骤(5),否则进入步骤(6);
(5)将读请求的逻辑页面对应的写请求记录返回给用户,然后过程结束;
(6)在固态盘的FTL映射表中查找该读请求的逻辑页面对应的物理页面,并读取该物理页面,然后过程结束;
(7)判断写请求队列缓存中是否有剩余的缓存空间,如果有则进入步骤(8),否则进入步骤(9);
(8)直接将写请求添加到写请求队列缓存中,然后过程结束;
(9)将写请求队列缓存中的内容写回固态盘上,更新固态盘的FTL映射表以及FTL映射表的历史记录CDP_entry,并将该写请求添加到写请求队列缓存中;
(10)判断当前固态盘内部可用的空闲页面率是否低于预先设定的最小可用阈值LOWGC,若低于LOWGC,则转步骤(11),否则过程结束;
(11)启动垃圾回收进程,并将固态盘的保护窗口向前滑动时间△t,回收那些时间戳落在滑动过程经过的窗口中的物理页面,判断当前固态盘内部可用的空闲页面率是否高于预先设定的垃圾回收进程停止阈值HIGHGC,如果高于则垃圾回收结束,否则继续将保护窗口向前滑动时间△t;
(12)判断该恢复请求的恢复时间点是否落在固态盘的保护窗口内,若落在保护窗口内,则转步骤(13),否则转入步骤(18);
(13)顺序地扫描内存空间CDP_store中与每个逻辑页面对应的数组元素为表头的链表;
(14)判断链表中时间点是等于或者最大小于(maximum less than)恢复时间点,还是大于恢复时间点,如果是等于或者最大小于,则获得该链表中该时间点对应的CDP_entry中记录的物理页面地址,然后转入步骤(15),如果是大于恢复时间点,则说明该页面在恢复后的状态中是不可见的,转入步骤(16);
(15)将固态盘的FTL映射表中逻辑页面对应的映射项中的物理页面地址更新为该物理页面地址,然后过程结束;
(16)将该链表中该时间点对应的CDP_entry的逻辑页面对应的映射项置为空;
(17)重复上述步骤(14)至(16),直至检查完所有的逻辑页面对应的物理页面地址为止,由此完成了恢复操作,然后过程结束;
(18)向用户提示数据恢复出错,然后过程结束。
优选地,步骤(11)具体包括以下子步骤:
(11-1)启动垃圾回收进程,并将固态盘的保护窗口向前滑动时间△t,以增加固态盘的可用磁盘空间;
(11-2)顺序扫描所有的FTL映射表的历史记录CDP_entry,将那些时间戳落在滑动过程经过的窗口中的CDP_entry标识位置零,根据标识出的无效物理页面去回收相应的物理页面,更新系统中的状态信息;
(11-3)判断当前固态盘内部可用的空闲页面率是否高于预先设定的垃圾回收进程停止阈值HIGHGC,如果高于则过程结束,否则返回步骤(11-1);
优选地,垃圾回收进程停止阈值HIGHGC的取值范围是30%至70%,并且大于最小可用阈值LOWGC。
按照本发明的另一方面,提供了一种基于固态盘的块级连续数据保护系统,包括:
第一模块,在内存中创建一个空的写请求队列缓存(Write requestqueue buffer,简称WRQB),用于缓存来自用户的写请求,在固态盘的FTL层初始化一个内存空间CDP_store,用来记录FTL映射表的历史记录CDP_entry;
第二模块,接收来自于用户的请求,并判断该请求是对数据块的读写请求还是恢复请求,如果是对数据块的读写请求则转入第三模块,如果是恢复请求则转入第十二模块;
第三模块,判断该请求是读请求还是写请求,如果是读请求,则进入第四模块,如果是写请求,则进入第七模块;
第四模块,检查写请求队列缓存中是否存在该读请求的逻辑页面对应的写请求记录,如果存在则进入第五模块,否则进入第六模块;
第五模块,将读请求的逻辑页面对应的写请求记录返回给用户,然后过程结束;
第六模块,在固态盘的FTL映射表中查找该读请求的逻辑页面对应的物理页面,并读取该物理页面,然后过程结束;
第七模块,判断写请求队列缓存中是否有剩余的缓存空间,如果有则进入第八模块,否则进入第九模块;
第八模块,,直接将写请求添加到写请求队列缓存中,然后过程结束;
第九模块,将写请求队列缓存中的内容写回固态盘上,更新固态盘的FTL映射表以及FTL映射表的历史记录CDP_entry,并将该写请求添加到写请求队列缓存中。
第十模块,判断当前固态盘内部可用的空闲页面率是否低于预先设定的最小可用阈值LOWGC,若低于LOWGC,则转第十一模块,否则过程结束;
第十一模块,启动垃圾回收进程,并将固态盘的保护窗口向前滑动时间△t,回收那些时间戳落在滑动过程经过的窗口中的物理页面,判断当前固态盘内部可用的空闲页面率是否高于预先设定的垃圾回收进程停止阈值HIGHGC,如果高于则垃圾回收结束,否则继续将保护窗口向前滑动时间△t;
第十二模块,判断该恢复请求的恢复时间点是否落在固态盘的保护窗口内,若落在保护窗口内,则转入第十三模块,否则转入第十八模块;
第十三模块,顺序地扫描内存空间CDP_store中与每个逻辑页面对应的数组元素为表头的链表;
第十四模块,判断链表中时间点是等于或者最大小于(maximum lessthan)恢复时间点,还是大于恢复时间点,如果是等于或者最大小于,则获得该链表中该时间点对应的CDP_entry中记录的物理页面地址,然后转入第十五模块,如果是大于恢复时间点,则说明该页面在恢复后的状态中是不可见的,转入第十六模块;
第十五模块,将固态盘的FTL映射表中逻辑页面对应的映射项中的物理页面地址更新为该物理页面地址,然后过程结束。;
第十六模块,将该链表中该时间点对应的CDP_entry的逻辑页面对应的映射项置为空;
第十七模块,重复进入上述模块第十四至第十七,直至检查完所有的逻辑页面对应的物理页面地址为止,由此完成了恢复操作,然后过程结束;
第十八模块,向用户提示数据恢复出错,然后过程结束。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
1、由于采用了步骤(1)、步骤(7)和步骤(8),在对不太硬盘写入数据块时不需要对每次数据写操作进行跟踪并保存数据,因此对系统没有持续性的影响;
2、由于采用了步骤(11),保证了固态盘中可用空间一直高于预先设定的最低也用阈值,因此改进了运行系统的可用存储空间;
3、由于采用了步骤(1)、步骤(7)和步骤(8),引入一个WRQB来暂时缓存到达的写请求,然后批量地刷新写到固态盘上以减少有效页面的分散程度。WRQB的缓存作用,使得“滑过窗口”期间的垃圾都比较集中地分散在了少量块中,减少垃圾回收过程的开销,同时也减小了直接写入固态盘的次数,延长了固态盘的有效寿命;
4、由于采用了步骤(1)、步骤(13)、步骤(14)和步骤(15),充分利用了固态盘内在的“异地更新”产生的“被覆盖”历史数据遗留在固态盘中的特性实现将固态盘回滚恢复至之前的历史时间点状态。实施连续数据保护功能以及进行恢复时只需要将FTL映射表的状态恢复到所请求的恢复时间点时刻的状态即可,都只涉及了FTL映射表项的拷贝、存储操作,而没有涉及任何数据内容的读写操作。由于映射表项的大小要大大少于数据内容的大小,因此本发明引起的额外开销要比传统的连续数据保护方法小得多。
附图说明
图1是本发明基于固态盘的块级连续数据保护方法的流程图。
图2是普通SSD的结构示意图和本发明基于固态盘的块级连续数据保护系统的结构对比示意图。
图3示出CDP_entry结构对应的字段。
图4是CDP_entry的存储组织结构。
图5是本发明中滑动窗口和保护窗口。
图6是固态盘中垃圾回收开销示意图,其中上图表示回收时有效页面较均匀地分布在被选块中,下图表示有效页面较有序地分布在被选块中。
图7是本发明实现的系统运行过程中FTL映射表和CDP_store内容变化以及恢复操作示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
以下首先对本发明中的技术术语进行解释和说明。
连续数据保护(CDP):Continuous Data Protection,是一套方法,它可以捕获或跟踪数据的变化,并将其在生产数据之外独立存放,以确保数据可以恢复到过去的任意时间点;
闪存转换层(FTL):在固态盘内部一个重要的中间软件,FTL内部有个逻辑地址到物理页面的映射表,它表示当前时刻固态盘的逻辑地址与物理页面之间的对应关系;
CDP_store:用来记录FTL映射表的历史状态的部件,可以用一个数据库实现,CDP_store还提供相应的管理和检索接口来管理FTL映射表的历史;
CDP_entry:用来表示每个存储到CDP_store表项,CDP_entry表项由FTL映射表项与FTL映射表项被覆盖时刻构成;
保护窗口:Protection Window,系统能够正确恢复到的任意时间点状态所对应的时间长度;
垃圾回收(GC):固态盘内部运行的一项重要活动,它将那些“被覆盖”了的物理页面进行擦除操作(erase),使其变成空闲页面以备将来再次使用;
写请求队列缓存(WRQB):WRQB是一个具有可配置大小的缓存区,它可以缓存一定数量写页面请求;
异地更新:由于FTL的存在,系统对同一逻辑地址进行写操作时,不需要先将页面擦除,而只需要将数据直接写到新分配的空闲页面,然后修改FTL映射表使得该逻辑地址对应数据写入的新地址,避免了擦除操作对写操作性能的影响。
下面将结合本发明实施实例中的附图,对本发明实例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的总体思路是在原固态盘的FTL层增加了一个CDP_store用来记录历史FTL映射表的历史状态,如图2所示,其余组织部件都与原固态盘的相同。CDP_store是一个具有存储数据记录功能的存储引擎,它可以用数据库(DB2,MySQL等)实现,也可以用专门设计的逻辑结构实现。CDP_store所存储的记录可以完全存储在固态盘内部的RAM中,以提高访问速度,也可以先写入到缓存区中然后写入到固态盘上指定的区域。在完成写操作后更新FTL映射表时,将与写逻辑地址对应的映射表项以及当前的时间组成一个记录项存储到CDP_store中。恢复时,调用CDP_store模块提供的恢复接口,并给定需要恢复到的历史时间点,CDP_store检索出所有逻辑地址在请求的恢复时间点所对应的映射关系,并将其作为当前有效的FTL映射表。本发明还设计了快照接口用来一次性释放更多的空间。做一次快照操作相当于对系统做一次全量备份,快照的内容可以看作是系统的起始状态。快照操作后,快照时间点之前所有的历史数据都将被释放,因此系统不能再恢复到快照时间点之前的任何状态,即快照时间点对应的数据保护窗口长度为0。图4中每个数组元素的数据类型中包含了一个64位时间(first_written_time)。该时间戳对应系统启动时间点或者系统执行快照后页面快照状态所对应的最后修改时间点。
如图1所示,本发明基于固态盘的块级连续数据保护方法包括以下步骤:
(1)在内存中创建一个空的写请求队列缓存(Write request queuebuffer,简称WRQB),用于缓存来自用户的写请求,在固态盘的FTL层初始化一个内存空间CDP_store,用来记录FTL映射表的历史记录CDP_entry;如图3所示。具体而言,内存空间CDP_store是一个具有存储数据记录功能的存储引擎,它可以用数据库(诸如DB2,MySQL等)实现,也可以用专门设计的逻辑结构实现。内存空间CDP_store所存储的记录可以完全存储在固态盘内部的RAM中,以提高访问速度,也可以先写入到缓存区中然后写入到固态盘上指定的区域。CDP_entry是用来表示每个存储到CDP_store中的FTL映射表的历史记录,CDP_entry的构成如图3所示,CDP_entry表是由FTL映射表与FTL映射表被覆盖的时刻构成。
本步骤的优点在于,引入一个WRQB来暂时缓存到达的写请求,然后批量地刷新写到固态盘上以减少有效页面的分散程度。WRQB的缓存作用,使得“滑过窗口”期间的垃圾都比较集中地分散在了少量块中,减少垃圾回收过程的开销。
(2)接收来自于用户的请求,并判断该请求是对数据块的读写请求还是恢复请求,如果是对数据块的读写请求则转入步骤(3),如果是恢复请求则转入步骤(12);具体而言,如果是对数据块的读写请求,则该请求中包括读写操作的逻辑地址,如果是对数据块的恢复请求,则该请求中包括请求恢复到的时间;
(3)判断该请求是读请求还是写请求,如果是读请求,则进入步骤(4),如果是写请求,则进入步骤(7);
(4)检查写请求队列缓存中是否存在该读请求的逻辑页面对应的写请求记录,如果存在则进入步骤(5),否则进入步骤(6);
(5)将读请求的逻辑页面对应的写请求记录返回给用户,然后过程结束;
(6)在固态盘的FTL映射表中查找该读请求的逻辑页面对应的物理页面,并读取该物理页面,然后过程结束;
(7)判断写请求队列缓存中是否有剩余的缓存空间,如果有则进入步骤(8),否则进入步骤(9);具体而言,如图7所示,图中上半部分表示FTL映射表分别在T0、T1和T2时刻的存储状态,下半部分表示CDP_store的内容。每个写操作用一个包含逻辑页面(LP)、物理页面(PP)、写操作发生时刻的三元组来表示。比如,三元组(0,9,T1)表示逻辑页面在T1时刻被修改,并且新内容被写到了物理页面9上。图中顶部是用三元组表示到达固态盘的写请求序列。
(8)直接将写请求添加到写请求队列缓存中,然后过程结束;
(9)将写请求队列缓存中的内容写回固态盘上,更新固态盘的FTL映射表以及FTL映射表的历史记录CDP_entry,并将该写请求添加到写请求队列缓存中。具体而言,如图7所示,在T1时刻到达4个写请求,其中(0,9,T1)和(1,16,T1)两个写操作是对逻辑页面0和1的覆盖写操作,而(3,20,T1)和(4,8,T1)是分别对逻辑页面3和4的首次写入。完成这四个写操作会产生(2,T0)和(7,T0)两个CDP_entry,并且分别将他们插入到页面0和1的链表中。与此类似,完成了T2时刻到达的3个写请求会产生另外三个CDP_entry,将分别插入到对应的逻辑页面链表中。
(10)判断当前固态盘内部可用的空闲页面率是否低于预先设定的最小可用阈值LOWGC,若低于LOWGC,则转步骤(11),否则过程结束;最小可用阈值LOWGC的取值范围是30%-70%,取值越小,则垃圾回收进程的频率会更高,则会消耗系统的CPU利用率,取值越大,则垃圾回收进程的频率会越低,会改进系统的CPU利用率;
本步骤的优点在于,设置更小的垃圾回收进程控制阈值(启动阈值LOWGC和停止阈值HIGHGC),以尽可能地延长“被覆盖”的历史数据在固态盘中存留时间,达到延长保护窗口目的。在固态盘中,当剩余空闲页面数量低于某个预设阈值时,垃圾回收进程就会启动以释放空间。在普通的固态盘中,这个阈值通常是以单个芯片为单位,即若阈值设定为20%,当某个芯片内的空闲页面率小于该阈值时,垃圾回收进程会启动并释放该芯片内的“被覆盖”的历史页面,因此,即使其它芯片仍有很多空闲页面(比如空闲页面小于阈值的那个芯片可能在过去某段时间里对应应用的热点数据区,而其它页面对应冷数据区,则会导致对应热点数据区芯片中的剩余空闲页面很少,而对应冷点数据区芯片中的剩余空闲页面很多),该芯片上的历史数据也会被回收,因而无法提供恢复回滚功能。在本发明中,该阈值被设定为具有全局意义的数值,即只有当固态盘内总的剩余空闲页面占固态盘总页面数的比例低于阈值时,垃圾回收进程才会启动,这就避免了因局部芯片过度消耗而启动垃圾回收进程将历史数据提前擦除了,从而延长了保护窗口。
(11)启动垃圾回收进程,并将固态盘的保护窗口向前滑动时间△t,回收那些时间戳落在滑动过程经过的窗口中的物理页面,判断当前固态盘内部可用的空闲页面率是否高于预先设定的垃圾回收进程停止阈值HIGHGC,如果高于则垃圾回收结束,否则继续将保护窗口向前滑动时间△t;本步骤具体包括以下子步骤:
(11-1)启动垃圾回收进程,并将固态盘的保护窗口向前滑动时间△t,以增加固态盘的可用磁盘空间,如图5所示,△t的取值是由写操作所消耗的磁盘空间决定;
(11-2)顺序扫描所有的FTL映射表的历史记录CDP_entry,将那些时间戳落在滑动过程经过的窗口中的CDP_entry标识位置零,表示其对应的物理页面可以被回收。根据标识出的无效物理页面去回收相应的物理页面,更新系统中的状态信息;
(11-3)判断当前固态盘内部可用的空闲页面率是否高于预先设定的垃圾回收进程停止阈值HIGHGC,如果高于则过程结束,否则返回步骤(11-1);垃圾回收进程停止阈值HIGHGC的取值范围是30%至70%,并且大于最小可用阈值LOWGC。
本步骤的优点在于,垃圾回收进程只能回收那些被覆盖时刻落在“滑过窗口”中的历史物理页面。计算块内页面利用率时需要同时包括当前正被FTL映射表映射项指向的物理页面和块内那些还没有被“滑过”的物理页面。“被覆盖”的历史数据是否仍有效在对应的CDP_entry中有相应标识位标记,这样尽可能地延长“被覆盖”的历史数据在固态盘中存留时间。
(12)判断该恢复请求的恢复时间点是否落在固态盘的保护窗口内,若落在保护窗口内,则转步骤(13),否则转入步骤(18);
(13)顺序地扫描内存空间CDP_store中与每个逻辑页面对应的数组元素为表头的链表;
(14)判断链表中时间点是等于或者最大小于(maximum less than)恢复时间点,还是大于恢复时间点,如果是等于或者最大小于,则获得该链表中该时间点对应的CDP_entry中记录的物理页面地址,然后转入步骤(15),如果是大于恢复时间点,则说明该页面在恢复后的状态中是不可见的,转入步骤(16);如图7所示,假设在T时刻(T0,T2),用户请求将固态盘的状态恢复到之前的某时间点T’(T0<T′<T1)。可以在逻辑页面0,1和6的链表中分别找到符合条件(T0是链表中最大小于T’的时间点)的CDP_entry。它们分别是(2,T0),(7,T0)和(11,T0)。而对于从来没有被写过的逻辑页面(页面5和页面7),则直接跳过,将其对应映射表项设为空;对于只被写过一次且其链表为空的逻辑页面,则判断其初始时间是否小于或等于所请求的恢复时间点(T’);
(15)将固态盘的FTL映射表中逻辑页面对应的映射项中的物理页面地址更新为该物理页面地址,然后过程结束。如图7所示,若小于等于T’,则该逻辑页面恢复后的状态应为所记录的初始状态;
本步骤的优点在于,充分利用了固态盘内在的“异地更新”产生的“被覆盖”历史数据遗留在固态盘中的特性实现将固态盘回滚恢复至之前的历史时间点状态。实施连续数据保护功能以及进行恢复时只需要将FTL映射表的状态恢复到所请求的恢复时间点时刻的状态即可,都只涉及了FTL映射表项的拷贝、存储操作,而没有涉及任何数据内容的读写操作。由于映射表项的大小要大大少于数据内容的大小,因此本发明引起的额外开销要比传统的连续数据保护方法小得多。本发明的恢复操作只需要将FTL映射表的状态恢复到所请求的恢复时间点时刻的状态即可。
(16)将该链表中该时间点对应的CDP_entry的逻辑页面对应的映射项置为空;
(17)重复上述步骤(14)至(16),直至检查完所有的逻辑页面对应的物理页面地址为止,由此完成了恢复操作,然后过程结束。如图7所示,恢复后逻辑页面2对应的物理页面为5(因为其初始时刻T0小于恢复时间点T’),而逻辑页面4的映射项为空(因为其初始时刻T1大于恢复时间点T’)。综合起来,恢复后逻辑页面的映射表状态为(0,2),(1,7),(2,5),(6,11);
(18)向用户提示数据恢复出错,然后过程结束。
本发明基于固态盘的块级连续数据保护系统包括:
第一模块,在内存中创建一个空的写请求队列缓存(Write requestqueue buffer,简称WRQB),用于缓存来自用户的写请求,在固态盘的FTL层初始化一个内存空间CDP_store,用来记录FTL映射表的历史记录CDP_entry;
第二模块,接收来自于用户的请求,并判断该请求是对数据块的读写请求还是恢复请求,如果是对数据块的读写请求则转入第三模块,如果是恢复请求则转入第十二模块;
第三模块,判断该请求是读请求还是写请求,如果是读请求,则进入第四模块,如果是写请求,则进入第七模块;
第四模块,检查写请求队列缓存中是否存在该读请求的逻辑页面对应的写请求记录,如果存在则进入第五模块,否则进入第六模块;
第五模块,将读请求的逻辑页面对应的写请求记录返回给用户,然后过程结束;
第六模块,在固态盘的FTL映射表中查找该读请求的逻辑页面对应的物理页面,并读取该物理页面,然后过程结束;
第七模块,判断写请求队列缓存中是否有剩余的缓存空间,如果有则进入第八模块,否则进入第九模块;
第八模块,,直接将写请求添加到写请求队列缓存中,然后过程结束;
第九模块,将写请求队列缓存中的内容写回固态盘上,更新固态盘的FTL映射表以及FTL映射表的历史记录CDP_entry,并将该写请求添加到写请求队列缓存中。
第十模块,判断当前固态盘内部可用的空闲页面率是否低于预先设定的最小可用阈值LOWGC,若低于LOWGC,则转第十一模块,否则过程结束;
第十一模块,启动垃圾回收进程,并将固态盘的保护窗口向前滑动时间△t,回收那些时间戳落在滑动过程经过的窗口中的物理页面,判断当前固态盘内部可用的空闲页面率是否高于预先设定的垃圾回收进程停止阈值HIGHGC,如果高于则垃圾回收结束,否则继续将保护窗口向前滑动时间△t;
第十二模块,判断该恢复请求的恢复时间点是否落在固态盘的保护窗口内,若落在保护窗口内,则转入第十三模块,否则转入第十八模块;
第十三模块,顺序地扫描内存空间CDP_store中与每个逻辑页面对应的数组元素为表头的链表;
第十四模块,判断链表中时间点是等于或者最大小于(maximum lessthan)恢复时间点,还是大于恢复时间点,如果是等于或者最大小于,则获得该链表中该时间点对应的CDP_entry中记录的物理页面地址,然后转入第十五模块,如果是大于恢复时间点,则说明该页面在恢复后的状态中是不可见的,转入第十六模块;
第十五模块,将固态盘的FTL映射表中逻辑页面对应的映射项中的物理页面地址更新为该物理页面地址,然后过程结束。;
第十六模块,将该链表中该时间点对应的CDP_entry的逻辑页面对应的映射项置为空;
第十七模块,重复进入上述模块第十四至第十七,直至检查完所有的逻辑页面对应的物理页面地址为止,由此完成了恢复操作,然后过程结束。
第十八模块,向用户提示数据恢复出错,然后过程结束。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于固态盘的块级连续数据保护方法,其特征在于,包括以下步骤:
(1)在内存中创建一个空的写请求队列缓存,用于缓存来自用户的写请求,在固态盘的FTL层初始化一个内存空间CDP_store,用来记录FTL映射表的历史记录CDP_entry;
(2)接收来自于用户的请求,并判断该请求是对数据块的读写请求还是恢复请求,如果是对数据块的读写请求则转入步骤(3),如果是恢复请求则转入步骤(12);
(3)判断该请求是读请求还是写请求,如果是读请求,则进入步骤(4),如果是写请求,则进入步骤(7);
(4)检查写请求队列缓存中是否存在该读请求的逻辑页面对应的写请求记录,如果存在则进入步骤(5),否则进入步骤(6);
(5)将读请求的逻辑页面对应的写请求记录返回给用户,然后过程结束;
(6)在固态盘的FTL映射表中查找该读请求的逻辑页面对应的物理页面,并读取该物理页面,然后过程结束;
(7)判断写请求队列缓存中是否有剩余的缓存空间,如果有则进入步骤(8),否则进入步骤(9);
(8)直接将写请求添加到写请求队列缓存中,然后过程结束;
(9)将写请求队列缓存中的内容写回固态盘上,更新固态盘的FTL映射表以及FTL映射表的历史记录CDP_entry,并将该写请求添加到写请求队列缓存中;
(10)判断当前固态盘内部可用的空闲页面率是否低于预先设定的最小可用阈值LOWGC,若低于LOWGC,则转步骤(11),否则过程结束;
(11)启动垃圾回收进程,并将固态盘的保护窗口向前滑动时间△t,回收那些时间戳落在滑动过程经过的窗口中的物理页面,判断当前固态盘内部可用的空闲页面率是否高于预先设定的垃圾回收进程停止阈值HIGHGC,如果高于则垃圾回收结束,否则继续将保护窗口向前滑动时间△t;
(12)判断该恢复请求的恢复时间点是否落在固态盘的保护窗口内,若落在保护窗口内,则转步骤(13),否则转入步骤(18);
(13)顺序地扫描内存空间CDP_store中与每个逻辑页面对应的数组元素为表头的链表;
(14)判断链表中时间点是等于或者最大小于(maximum less than)恢复时间点,还是大于恢复时间点,如果是等于或者最大小于,则获得该链表中该时间点对应的CDP_entry中记录的物理页面地址,然后转入步骤(15),如果是大于恢复时间点,则说明该页面在恢复后的状态中是不可见的,转入步骤(16);
(15)将固态盘的FTL映射表中逻辑页面对应的映射项中的物理页面地址更新为该物理页面地址,然后过程结束;
(16)将该链表中该时间点对应的CDP_entry的逻辑页面对应的映射项置为空;
(17)重复上述步骤(14)至(16),直至检查完所有的逻辑页面对应的物理页面地址为止,由此完成了恢复操作,然后过程结束;
(18)向用户提示数据恢复出错,然后过程结束。
2.根据权利要求1所述的块级连续数据保护方法,其特征在于,步骤(11)具体包括以下子步骤:
(11-1)启动垃圾回收进程,并将固态盘的保护窗口向前滑动时间△t,以增加固态盘的可用磁盘空间;
(11-2)顺序扫描所有的FTL映射表的历史记录CDP_entry,将那些时间戳落在滑动过程经过的窗口中的CDP_entry标识位置零,根据标识出的 无效物理页面去回收相应的物理页面,更新系统中的状态信息;
(11-3)判断当前固态盘内部可用的空闲页面率是否高于预先设定的垃圾回收进程停止阈值HIGHGC,如果高于则过程结束,否则返回步骤(11-1)。
3.根据权利要求2所述的块级连续数据保护方法,其特征在于,垃圾回收进程停止阈值HIGHGC的取值范围是30%至70%,并且大于最小可用阈值LOWGC。
4.一种基于固态盘的块级连续数据保护系统,其特征在于,包括:
第一模块,在内存中创建一个空的写请求队列缓存(Write request queue buffer,简称WRQB),用于缓存来自用户的写请求,在固态盘的FTL层初始化一个内存空间CDP_store,用来记录FTL映射表的历史记录CDP_entry;
第二模块,接收来自于用户的请求,并判断该请求是对数据块的读写请求还是恢复请求,如果是对数据块的读写请求则转入第三模块,如果是恢复请求则转入第十二模块;
第三模块,判断该请求是读请求还是写请求,如果是读请求,则进入第四模块,如果是写请求,则进入第七模块;
第四模块,检查写请求队列缓存中是否存在该读请求的逻辑页面对应的写请求记录,如果存在则进入第五模块,否则进入第六模块;
第五模块,将读请求的逻辑页面对应的写请求记录返回给用户,然后过程结束;
第六模块,在固态盘的FTL映射表中查找该读请求的逻辑页面对应的物理页面,并读取该物理页面,然后过程结束;
第七模块,判断写请求队列缓存中是否有剩余的缓存空间,如果有则进入第八模块,否则进入第九模块;
第八模块,,直接将写请求添加到写请求队列缓存中,然后过程结束;
第九模块,将写请求队列缓存中的内容写回固态盘上,更新固态盘的 FTL映射表以及FTL映射表的历史记录CDP_entry,并将该写请求添加到写请求队列缓存中。
第十模块,判断当前固态盘内部可用的空闲页面率是否低于预先设定的最小可用阈值LOWGC,若低于LOWGC,则转第十一模块,否则过程结束;
第十一模块,启动垃圾回收进程,并将固态盘的保护窗口向前滑动时间△t,回收那些时间戳落在滑动过程经过的窗口中的物理页面,判断当前固态盘内部可用的空闲页面率是否高于预先设定的垃圾回收进程停止阈值HIGHGC,如果高于则垃圾回收结束,否则继续将保护窗口向前滑动时间△t;
第十二模块,判断该恢复请求的恢复时间点是否落在固态盘的保护窗口内,若落在保护窗口内,则转入第十三模块,否则转入第十八模块;
第十三模块,顺序地扫描内存空间CDP_store中与每个逻辑页面对应的数组元素为表头的链表;
第十四模块,判断链表中时间点是等于或者最大小于(maximum less than)恢复时间点,还是大于恢复时间点,如果是等于或者最大小于,则获得该链表中该时间点对应的CDP_entry中记录的物理页面地址,然后转入第十五模块,如果是大于恢复时间点,则说明该页面在恢复后的状态中是不可见的,转入第十六模块;
第十五模块,将固态盘的FTL映射表中逻辑页面对应的映射项中的物理页面地址更新为该物理页面地址,然后过程结束。;
第十六模块,将该链表中该时间点对应的CDP_entry的逻辑页面对应的映射项置为空;
第十七模块,重复进入上述模块第十四至第十七,直至检查完所有的逻辑页面对应的物理页面地址为止,由此完成了恢复操作,然后过程结束;
第十八模块,向用户提示数据恢复出错,然后过程结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310463447.8A CN103544110A (zh) | 2013-10-08 | 2013-10-08 | 一种基于固态盘的块级连续数据保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310463447.8A CN103544110A (zh) | 2013-10-08 | 2013-10-08 | 一种基于固态盘的块级连续数据保护方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103544110A true CN103544110A (zh) | 2014-01-29 |
Family
ID=49967582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310463447.8A Pending CN103544110A (zh) | 2013-10-08 | 2013-10-08 | 一种基于固态盘的块级连续数据保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103544110A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103777905A (zh) * | 2014-02-14 | 2014-05-07 | 华中科技大学 | 一种软件定义的固态盘融合存储方法 |
CN103955432A (zh) * | 2014-04-22 | 2014-07-30 | 深圳市硅格半导体有限公司 | 数据存储的方法及装置 |
CN104899114A (zh) * | 2014-03-07 | 2015-09-09 | 中国科学院苏州纳米技术与纳米仿生研究所 | 一种固态硬盘上的连续时间数据保护方法 |
CN105159622A (zh) * | 2015-10-22 | 2015-12-16 | 湖南国科微电子股份有限公司 | 一种减小ssd读写io时延的方法与系统 |
CN105353979A (zh) * | 2015-10-22 | 2016-02-24 | 湖南国科微电子股份有限公司 | SSD内部数据文件系统eblock链接结构、管理系统及方法 |
CN106557437A (zh) * | 2016-11-22 | 2017-04-05 | 上海联影医疗科技有限公司 | 一种生数据的高速存储方法和系统 |
CN107329904A (zh) * | 2017-06-30 | 2017-11-07 | 湖南国科微电子股份有限公司 | 数据读取方法及装置 |
CN107589908A (zh) * | 2017-08-17 | 2018-01-16 | 暨南大学 | 一种基于固态盘缓存系统中非对齐更新数据的合并方法 |
CN108268219A (zh) * | 2018-02-01 | 2018-07-10 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN109344091A (zh) * | 2018-09-29 | 2019-02-15 | 武汉斗鱼网络科技有限公司 | 一种缓冲数组规整方法、装置、终端及可读介质 |
CN109408416A (zh) * | 2018-09-20 | 2019-03-01 | 新华三技术有限公司 | 一种地址映射表项页管理方法及装置 |
CN110119250A (zh) * | 2019-05-13 | 2019-08-13 | 湖南国科微电子股份有限公司 | 非易失性存储介质数据处理方法及非易失性存储介质 |
CN115629720A (zh) * | 2022-12-20 | 2023-01-20 | 鹏钛存储技术(南京)有限公司 | 基于闪存为介质的存储设备上的非对称条带化方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499028A (zh) * | 2009-03-18 | 2009-08-05 | 成都市华为赛门铁克科技有限公司 | 一种基于非易失性存储器的数据保护方法和装置 |
CN101770412A (zh) * | 2010-01-22 | 2010-07-07 | 华中科技大学 | 一种连续数据缓存系统及其数据缓存方法 |
-
2013
- 2013-10-08 CN CN201310463447.8A patent/CN103544110A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499028A (zh) * | 2009-03-18 | 2009-08-05 | 成都市华为赛门铁克科技有限公司 | 一种基于非易失性存储器的数据保护方法和装置 |
CN101770412A (zh) * | 2010-01-22 | 2010-07-07 | 华中科技大学 | 一种连续数据缓存系统及其数据缓存方法 |
Non-Patent Citations (1)
Title |
---|
PING HUANG等: "BVSSD: Build Built-in Versioning Flash-based Solid State Drives", 《SYSTOR’12 PROCEEDINGS OF THE 5TH ANNUAL INTERNATIONAL SYSTEMS AND STORAGE CONFERENCE》, 4 June 2012 (2012-06-04) * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103777905A (zh) * | 2014-02-14 | 2014-05-07 | 华中科技大学 | 一种软件定义的固态盘融合存储方法 |
CN103777905B (zh) * | 2014-02-14 | 2017-04-12 | 华中科技大学 | 一种软件定义的固态盘融合存储方法 |
CN104899114B (zh) * | 2014-03-07 | 2018-03-20 | 中国科学院苏州纳米技术与纳米仿生研究所 | 一种固态硬盘上的连续时间数据保护方法 |
CN104899114A (zh) * | 2014-03-07 | 2015-09-09 | 中国科学院苏州纳米技术与纳米仿生研究所 | 一种固态硬盘上的连续时间数据保护方法 |
CN103955432A (zh) * | 2014-04-22 | 2014-07-30 | 深圳市硅格半导体有限公司 | 数据存储的方法及装置 |
CN103955432B (zh) * | 2014-04-22 | 2017-09-19 | 深圳市硅格半导体有限公司 | 数据存储的方法及装置 |
CN105159622A (zh) * | 2015-10-22 | 2015-12-16 | 湖南国科微电子股份有限公司 | 一种减小ssd读写io时延的方法与系统 |
CN105353979A (zh) * | 2015-10-22 | 2016-02-24 | 湖南国科微电子股份有限公司 | SSD内部数据文件系统eblock链接结构、管理系统及方法 |
CN106557437A (zh) * | 2016-11-22 | 2017-04-05 | 上海联影医疗科技有限公司 | 一种生数据的高速存储方法和系统 |
CN107329904A (zh) * | 2017-06-30 | 2017-11-07 | 湖南国科微电子股份有限公司 | 数据读取方法及装置 |
CN107589908A (zh) * | 2017-08-17 | 2018-01-16 | 暨南大学 | 一种基于固态盘缓存系统中非对齐更新数据的合并方法 |
CN107589908B (zh) * | 2017-08-17 | 2020-01-17 | 暨南大学 | 一种基于固态盘缓存系统中非对齐更新数据的合并方法 |
CN108268219A (zh) * | 2018-02-01 | 2018-07-10 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN108268219B (zh) * | 2018-02-01 | 2021-02-09 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN109408416A (zh) * | 2018-09-20 | 2019-03-01 | 新华三技术有限公司 | 一种地址映射表项页管理方法及装置 |
CN109408416B (zh) * | 2018-09-20 | 2021-01-26 | 新华三技术有限公司 | 一种地址映射表项页管理方法及装置 |
CN109344091A (zh) * | 2018-09-29 | 2019-02-15 | 武汉斗鱼网络科技有限公司 | 一种缓冲数组规整方法、装置、终端及可读介质 |
CN109344091B (zh) * | 2018-09-29 | 2021-03-12 | 武汉斗鱼网络科技有限公司 | 一种缓冲数组规整方法、装置、终端及可读介质 |
CN110119250A (zh) * | 2019-05-13 | 2019-08-13 | 湖南国科微电子股份有限公司 | 非易失性存储介质数据处理方法及非易失性存储介质 |
CN115629720A (zh) * | 2022-12-20 | 2023-01-20 | 鹏钛存储技术(南京)有限公司 | 基于闪存为介质的存储设备上的非对称条带化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103544110A (zh) | 一种基于固态盘的块级连续数据保护方法 | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
CN103577574B (zh) | 一种基于nand flash的高可靠线性文件系统 | |
US8819367B1 (en) | Accelerated translation power recovery | |
CN102576293B (zh) | 固态存储设备和分层存储系统中的数据管理 | |
US7363540B2 (en) | Transaction-safe FAT file system improvements | |
CN106815152B (zh) | 一种优化页级闪存转换层的方法 | |
CN101515276B (zh) | 一种文件数据写操作的方法、文件数据恢复方法及系统 | |
US20090193182A1 (en) | Information storage device and control method thereof | |
US20140129758A1 (en) | Wear leveling in flash memory devices with trim commands | |
CN103631536B (zh) | 一种利用ssd的无效数据优化raid5/6写性能的方法 | |
US8972651B2 (en) | Storage system and storage method | |
CN105242871A (zh) | 一种数据写入方法及装置 | |
CN112035294B (zh) | 安全日志文件系统及其实现方法和介质 | |
CN102033793A (zh) | 快照方法和固态硬盘 | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
CN109669889B (zh) | 一种轻量型Nor Flash闪存控制方法和装置 | |
CN106104515A (zh) | 利用非易失性存储器的文件系统设计和故障恢复方法 | |
CN108874574B (zh) | 一种垃圾回收处理方法及相关装置 | |
KR20110046118A (ko) | 적응적 로깅 장치 및 방법 | |
CN100470677C (zh) | 提高闪存盘数据写入速度的方法 | |
CN111580757B (zh) | 数据写入方法、系统和固态硬盘 | |
CN106021124B (zh) | 一种数据的存储方法及存储系统 | |
CN105353979A (zh) | SSD内部数据文件系统eblock链接结构、管理系统及方法 | |
KR101353967B1 (ko) | 환형 구조의 비휘발성 메모리 캐쉬에 데이터를 읽고 쓰기 위한 데이터 처리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140129 |