CN118312355A - 基于换页写的写事务的保护方法、装置、设备及存储介质 - Google Patents

基于换页写的写事务的保护方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN118312355A
CN118312355A CN202410415050.XA CN202410415050A CN118312355A CN 118312355 A CN118312355 A CN 118312355A CN 202410415050 A CN202410415050 A CN 202410415050A CN 118312355 A CN118312355 A CN 118312355A
Authority
CN
China
Prior art keywords
page
backup
current
transaction
mark
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
Application number
CN202410415050.XA
Other languages
English (en)
Inventor
朱琳琳
秦远富
刘立黎
朱超凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Kedao Xinguo Intelligent Technology Co ltd
Original Assignee
Sichuan Kedao Xinguo Intelligent Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan Kedao Xinguo Intelligent Technology Co ltd filed Critical Sichuan Kedao Xinguo Intelligent Technology Co ltd
Priority to CN202410415050.XA priority Critical patent/CN118312355A/zh
Publication of CN118312355A publication Critical patent/CN118312355A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明实施例公开了一种基于换页写的写事务的保护方法、装置、设备及存储介质,在存在需要备份的目标原始页时从空闲事务页中分配当前备份页和当前备份标志页,利用当前备份页备份目标原始页,根据当前备份标志页更新逻辑页码,并将目标原始页与新增备份页之间的映射关系以及历史映射关系合并至当前备份标志页中,最后对待操作的原始页进行写操作。本发明避免备份信息列表和事务开始标记被破坏掉而导致事务失败,本发明实现了备份信息列表、事务开始标记和原始页的备份,从而避免同一个备份标志页被频繁擦写而提前破坏,保证了备份信息列表和事务开始标记、原始页数据等数据的安全性和可还原性,有效实现了数据的掉电保护。

Description

基于换页写的写事务的保护方法、装置、设备及存储介质
技术领域
本发明涉及存储技术领域,尤其涉及一种基于换页写的写事务的保护方法、装置、设备及存储介质。
背景技术
现有技术中写操作是一个事务操作,每个写操作的底层至少需要进行4次FLASH写入动作(写入备份数据、写入备份信息和事务开始标记、写入新数据、清除事务开始标记)。
写操作的过程包含了更新备份信息列表和更新事务开始标记的步骤,这就需要另外采取方法来保证这两个操作的原子性,避免备份信息列表和事务开始标记被破坏掉而导致事务失败。
传统的事务操作通常采用固定页面来保存备份信息列表和事务开始标记,而FLASH都有擦写寿命限制,这就容易导致保存备份信息列表和事务开始标记的页面因为频繁擦写而提前损坏,进而导致这个页面无法再用。
发明内容
本发明的主要目的在于提供一种基于换页写的写事务的保护方法、装置、设备及存储介质,可以解决现有技术中保存备份信息列表和事务开始标记的页面容易损坏的技术问题,同时避免在写的过程中由于掉电导致事务信息的破坏。
为实现上述目的,本发明第一方面提供一种基于换页写的写事务的保护方法,该方法包括:
每次执行写操作时自动启动写事务保护,从可用的空闲事务页中为目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页,其中,目标原始页为需要进行备份且待进行写操作的原始页;
在当前备份标志页中增加并设置事务开始标记,使事务开始标记指示当前事务已启动;
将目标原始页的原始数据备份至对应的当前备份页;
将当前备份标志页作为第一逻辑页,按照预设顺序对其他事务页的逻辑页码进行顺序更新;
若存在历史备份信息,则将当前备份页与对应的目标原始页的映射关系作为新增备份信息与历史备份信息合并写入至当前备份标志页,若不存在历史备份信息,则将当前备份页与对应的目标原始页的映射关系作为新增备份信息写入至当前备份标志页,其中,当前备份标志页中的逻辑页码均为更新的当前逻辑页码;
设置当前备份标志页的备份标志页定位计数器的计数值,其中,计数值为计数初始值或者是对已有的无效备份标志页的最大计数值加1得到的;
对当前待进行写操作的原始页进行写操作。
为实现上述目的,本发明第二方面提供一种基于换页写的写事务的保护装置,该装置包括:
事务页分配模块,用于每次执行写操作时自动启动写事务保护,从可用的空闲事务页中为目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页,其中,目标原始页为需要进行备份且待进行写操作的原始页;
第一设置模块,用于在当前备份标志页中增加并设置事务开始标记,使事务开始标记指示当前事务已启动;
备份模块,用于将目标原始页的原始数据备份至对应的当前备份页;
页码更新模块,用于将当前备份标志页作为第一逻辑页,按照预设顺序对其他事务页的逻辑页码进行顺序更新;
备份信息写入模块,用于若存在历史备份信息,则将当前备份页与对应的目标原始页的映射关系作为新增备份信息与历史备份信息合并写入至当前备份标志页,若不存在历史备份信息,则将当前备份页与对应的目标原始页的映射关系作为新增备份信息写入至当前备份标志页,其中,当前备份标志页中的逻辑页码均为更新的当前逻辑页码;
第二设置模块,用于设置当前备份标志页的备份标志页定位计数器的计数值,其中,计数值为计数初始值或者是对已有的无效备份标志页的最大计数值加1得到的;
写操作模块,用于对当前待进行写操作的原始页进行写操作。
为实现上述目的,本发明第三方面提供一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述任意一项方式中的步骤。
为实现上述目的,本发明第四方面提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述任意一项方式中的步骤。
采用本发明实施例,具有如下有益效果:
本申请在存在需要备份的目标原始页时从空闲事务页中分配当前备份页和当前备份标志页,利用当前备份页备份目标原始页,根据当前备份标志页更新逻辑页码,并将目标原始页与新增备份页之间的映射关系以及历史映射关系合并至当前备份标志页中,最后对待操作的原始页进行写操作。本申请每进行一轮写操作,将所有备份信息以及标记写入到一个备份标志页中,减少了对事务页的占用,由于历史备份标志页的存在,保证了备份信息列表和事务开始标记等数据更新操作的原子性和可追溯性,避免备份信息列表和事务开始标记被破坏掉而导致事务失败,且,本申请并不固定备份标志页,而是根据情况选择新的空闲事务页新增为备份标志页来记录备份信息列表和事务开始标记等数据,相当于实现了备份信息列表和事务开始标记的备份,从而避免同一个备份标志页被频繁擦写而提前破坏,有效保证了备份标志页的可使用性,且,本申请利用备份页对原始页的数据进行备份,保证了备份信息列表和事务开始标记、原始页数据等数据的安全性和可还原性,有效实现了数据的掉电保护。本事务对备份页或备份标志页的更新,都需要更换页面,确保在页面更新的过程中不会破坏原有的备份信息和标志信息,备份标志页更新通过计数器来作废旧的备份标志页,备份更新通过更新页面映射关系来作废旧的备份页,实现了换页写的写事务保护;另外,由于每个事务页都可能被用来作为备份页或备份标志页,而并非频繁固定的使用一个事务页,因此,可以保证所有事务页可以均摊擦写频率,减少单个事务页的被擦写频率,降低事务页成为坏块的概率,延长存储模块的寿命。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1为本发明实施例中基于换页写的写事务的保护方法的流程图;
图2为本发明实施例中备份标志页的存储数据示意图;
图3为本发明实施例中事务页与逻辑页的对应关系示意图;
图4为本发明另一实施例中事务页与逻辑页的对应关系示意图;
图5为本发明另一实施例中事务页与逻辑页的对应关系示意图;
图6为本发明另一实施例中事务页与逻辑页的对应关系示意图;
图7为本发明另一实施例中事务页与逻辑页的对应关系示意图;
图8为本发明实施例中基于换页写的写事务的保护装置的结构框图;
图9为本发明实施例中计算机设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,Flash Memory(以下简称FLASH)存在如下局限性:
写数据之前,必须先擦除,然后才能写入。一般是按页擦除。每次写操作必须写一页,哪怕只需要写一个字节,也需要操作一整页。块擦写次数有限制,一旦超出次数将成为坏块,这一块无法再使用。
如果在FLASH擦除的过程中,发生了掉电操作,就会导致数据的破坏,需要采取某种机制来保护数据。
通常,针对写操作都采用事务机制,保证每次写操作都具有原子性,要么成功修改,要么不修改。主要流程如下:
读取原始页的数据,写入备份页,对原始页形成备份。记录原始页和备份页的对应关系,写入备份信息列表。写入事务开始标记,通常用独立的一页来保存。把新的数据写入原始页。清除事务开始标记,即事务已结束。
写操作的过程包含了更新备份信息列表和更新事务开始标记的步骤,这就需要另外采取方法来保证这两个操作的原子性,避免备份信息列表和事务开始标记被破坏掉而导致事务失败。
上述传统的事务操作通常采用固定页面来保存备份信息列表和事务开始标记,而FLASH都有擦写寿命限制,这就容易导致保存备份信息列表和事务开始标记的页面因为频繁擦写而提前损坏,导致这个页面无法再用。
基于上述技术问题,本申请提供了一种基于换页写的写事务的保护方案。
参考图1,本申请提供了一种基于换页写的写事务的保护方法,该基于换页写的写事务的保护方法包括:
S100:每次执行写操作时自动启动写事务保护,从可用的空闲事务页中为目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页,其中,目标原始页为需要进行备份且待进行写操作的原始页。
具体地,事务都是针对写操作进行保护处理,一个事务中存在一个或多个写操作。
本实施例中事务区使用多个(例如,32个、64个等)页面用作备份页,这些在物理上实际存在的页面称为“事务页”。本申请对事物页的数量不作限制。
空闲事务页为除了当前有效备份标志页(或,当前备份标志页)和有效备份页之外的其他事务页;例如包括:无效备份标志页、空白事务页、无效备份页都可以作为空闲事务页。
每进行一次写操作,可能会产生一个新的当前备份标志页,最新的当前备份标志页会成当前有效备份标志页,之后上一轮写操作的当前备份标志页会变为无效备份标志页,以此类推,同一时间只有一个当前有效备份标志页,其他备份标志页均为无效备份标志页。当前有效备份标志页为当前计数器的计数值最大的备份标志页。
当前备份标志页中存储有备份标志页标记,通过备份标志页标记可以确定哪些是备份标志页。
空白事务页的内容为空。
一个原始页可能存在多次写操作,因此,可能会产生多个备份页,而同一时间一个原始页至多对应一个有效备份页,其他历史备份页会变为无效备份页。
当前备份页的数量根据当前待进行写操作的原始页的数量确定,或者,当前备份页的数量根据当前待进行写操作的原始页的数量以及是否存在历史备份页确定。
每轮写操作,当前备份标志页最多只能选一个,即,最多选定一个当前备份标志页。
本实施例将事务开始标记、每次写操作中需要记录的备份信息列表(包括备份信息)等数据都保存到一个页面中,这一页称为“备份标志页”。
其中,每个当前待进行写操作的原始页至多对应一个当前备份页,即可能存在当前备份页也可能不存在或不分配当前备份页;每个原始页同一时间至多对应一个有效备份页,其他历史备份页为无效备份页。
S200:在当前备份标志页中增加并设置事务开始标记,使事务开始标记指示当前事务已启动。
S300:将目标原始页的原始数据备份至对应的当前备份页。
具体地,其中,目标原始页为当前待进行写操作的原始页中的部分或全部。当然,也可能当前待进行写操作的原始页中没有需要备份的原始页。
待进行写操作的原始页为所有原始页中的部分,在对待进行写操作的原始页进行写操作之前,目标原始页需要进行备份。具体地,将目标原始页的原始数据写入至对应的当前备份页,从而实现备份。不需要备份的待进行写操作的原始页可能已经历史备份过,已经存在备份页,因此,不需要重复备份。
需要说明的是,在不同情况下,有的待进行写操作的原始页需要进行备份,有的待进行写操作的原始页不需要备份。因此,有可能全部的待进行写操作的原始页均需要备份,还有可能全部的待进行写操作的原始页均不需要备份,还有可能部分的待进行写操作的原始页需要备份。具体根据实际应用场景确定,本申请对此不做限制。
S400:将当前备份标志页作为第一逻辑页,按照预设顺序对其他事务页的逻辑页码进行顺序更新。
具体地,本实施例将所有事务页虚拟为逻辑页(逻辑页面)进行管理,第一个逻辑页称为逻辑页0,逻辑页0对应的事务页是系统从32个事务页中随机选择的一页。紧邻逻辑页0的下一个事务页称为逻辑页1,依次类推,直到逻辑页31。
系统可以将这32个逻辑页虚拟为首尾相连的集合(或环形集合),如图2所示。预设顺序例如可以是顺时针,也可以是逆时针等,本申请对此不做限制。
逻辑页0改变,则事务页的逻辑页码会随之改变。其他事务页的逻辑页码为相对于逻辑页0的页偏移量。
S500:若存在历史备份信息,则将当前备份页与对应的目标原始页的映射关系作为新增备份信息与历史备份信息合并写入至当前备份标志页,若不存在历史备份信息,则将当前备份页与对应的目标原始页的映射关系作为新增备份信息写入至当前备份标志页。
具体地,映射关系或备份信息包括原始页的原始页地址和对应备份页的当前逻辑页码(当前逻辑页编号)之间的映射关系。
另外,历史备份信息中的映射关系的逻辑页码也需要随之更新。
在备份标志页中,每个映射关系可以作为一个备份信息。所有备份信息组成了备份信息列表。
当前备份标志页中可以写入所有备份信息。如果存在历史备份信息,则需要将当前获取的目标原始页与当前备份页之间的新映射关系与历史备份信息中旧映射关系进行整合后,再写入至当前备份标志页。
当前备份标志页还可以存储有备份页数量。
其中,整合的目的是使得同一个原始页在同一个时间只对应至多一个备份页,其余历史备份页则被无效掉。即,在当前备份标志页存储的映射关系中每个原始页对应一个备份页。
如果不存在历史备份信息,则只需将当前获取的目标原始页与当前备份页之间的新映射关系写入至当前备份标志页。
其中,历史备份信息是历史目标原始页与其对应的备份页之间映射关系。历史备份信息可能存在也可能不存在,数量可能是1个或多个等。
S600:设置当前备份标志页的备份标志页定位计数器的计数值,其中,计数值为计数初始值或者是对已有的无效备份标志页的最大计数值加1得到的。
具体地,若当前写操作为第一次写操作,则获取计数初始值作为当前备份标志页的计数,若当前写操作为非第一次写操作,则对已有的无效备份标志页的最大计数值加1得到当前备份标志页的计数。根据得到的计数设置当前备份标志页的备份标志页定位计数器。
当事务区存在多个备份标志页时,需要比较各页内的备份标志页定位计数器的计数值大小,谁的计数值最大,谁所在的页就是当前有效备份标志页,其他备份标志页在当前都已无效。
计数最大的为当前有效备份标志页,基于此,当前备份标志页为当前有效备份标志页。
综上,备份标志页在内存中更新后,一次性写入到在事务区为其分配的FLASH页面,每次备份标志页的更新都需要重新分配一个新的备份标志页,新的备份标志页会成为当前有效备份标志页,实现换页写,计数器的计数值大小标记了备份标志页的有效性,最大计数值对应的备份标志页为当前有效备份标志页,其他计数值的备份标志页成为历史无效备份标志页。
图2为本发明实施例中备份标志页的存储数据示意图;参考图2,该“备份标志页”存储有以下数据:
事务开始标记、备份信息列表(包括:备份信息1、备份信息2、备份信息3...备份信息n)、备份页数量(为备份信息总数量n)、备份标志页定位计数器和备份标志页标记。
备份页数量即已使用的备份页数量,也即备份信息列表的长度。
备份信息BackupInfo用于记录原始页和备份页的映射关系。每个备份信息中存储有原始页与对应的有效备份页之间的对应关系。
其中,sourceFlashAddr保存原始页地址,backupPageNo保存对应的备份页的逻辑页编号,也就是该页相对于当前有效备份标志页(逻辑页0)的页偏移量。需要注意的是,随着每次选出新的逻辑页0,所有备份信息中的逻辑页面编号都要随之更新。
事务开始标记即transBeginTag,默认为全FF,表示当前没有事务在处理;当事务开始或进行中时,需要将本标记的值设为例如0x5A5B5C5D。当然,本申请对事务开始标记的值的设置不作限制。
备份标志页标记即pageFlag,是备份标志页的特定标记,用于指示该事务页为备份标志页。
所有事务页中,任何一个页面都可能被选中成为备份标志页,系统对这个被选中的事务页面进行特殊标记,使其成为备份标志页。例如,当标记值为0x5A5AA5A5时,表示本页是备份标志页;否则,可能是备份页,存有从原始页备份过来的具体数据;也有可能是还未使用的空白事务页。
当然,本申请对备份标志页标记的值的设置不作限制。
备份标志页标记这个标记必须放在备份标志页数据结构的最后,确保在更新pageFlag的时候,其他数据都已经更新了。
如果备份标志页为当前备份标志页,则其逻辑页码为逻辑页0。
备份标志页的定位计数器即pageCounter:事务开始后,系统第一次确定的备份标志页(pageFlag=0x5A5AA5A5)里,该计数器值为1;第二个写操作形成的备份标志页里,该计数器值为2,即在原有基础上递增1;后续写操作,以此类推。当事务区存在多个备份标志页时,需要比较各页内的定位计数器pageCounter的值大小,谁的值最大,谁所在的页就是当前有效备份标志页,其他备份标志页在当前都已无效,即为,无效备份标志页。
当前已经备份的页数即备份页数量或backupNumber,也表示了备份信息列表backupInfoList中备份信息的个数。
备份信息列表backupInfoList,由一个或多个备份信息组成。
S700:对当前待进行写操作的原始页进行写操作。
具体地,当前待进行写操作的原始页的数量大于或等于目标原始页。不论当前待进行写操作的原始页是否需要备份,其一定需要执行写操作。
由上述可知,存储备份信息等数据的备份标志页会根据实际情况更换,即,备份标志页并非固定,因此,本实施例不会对同一个备份标志页进行频繁擦写,每个事务页都可能成为备份标志页,因此,可以避免同一个备份标志页被频繁擦写而提前破坏,有效保证了事务页的可使用性。
本实施例使用换页写方式,将备份信息列表和事务开始标记等数据写入到新的备份标志页。使用换页写方式,通过计数值来作废之前的备份标志页,即计数值最大的是当前有效的备份标志页,这样可以确保在写的过程中即使掉电也不至于破坏之前的备份标志页。
本实施例在存在需要备份的目标原始页时从空闲事务页中分配当前备份页和当前备份标志页,利用当前备份页备份目标原始页,根据当前备份标志页更新逻辑页码,并将目标原始页与新增备份页之间的映射关系以及历史映射关系合并至当前备份标志页中,最后对待操作的原始页进行写操作。本实施例每进行一轮写操作,将所有备份信息以及标记写入到一个备份标志页中,减少了对事务页的占用,由于历史备份标志页的存在,保证了备份信息列表和事务开始标记等数据更新操作的原子性和可追溯性,避免备份信息列表和事务开始标记被破坏掉而导致事务失败,且,本实施例并不固定备份标志页,而是根据情况选择新的空闲事务页新增为备份标志页来记录备份信息列表和事务开始标记等数据,相当于实现了备份信息列表和事务开始标记的备份,从而避免同一个备份标志页被频繁擦写而提前破坏,有效保证了备份标志页的可使用性,且,本实施例利用备份页对原始页的数据进行备份,保证了备份信息列表和事务开始标记、原始页数据等数据的安全性和可还原性,有效实现了数据的掉电保护。本事务对备份页或备份标志页的更新,都需要更换页面,确保在页面更新的过程中不会破坏原有的备份信息和标志信息,备份标志页更新通过计数器来作废旧的备份标志页,备份更新通过更新页面映射关系来作废旧的备份页,实现了换页写的写事务保护;另外,由于每个事务页都可能被用来作为备份页或备份标志页,而并非频繁固定的使用一个事务页,因此,可以保证所有事务页可以均摊擦写频率,减少单个事务页的被擦写频率,降低事务页成为坏块的概率,延长存储模块的寿命。
本发明在原有的事务操作基础上进行了改进,减少事务开始和提交的次数,极端情况下可以将一个命令的全部操作当中一个事务,大大提高了FLASH写速度,实际效果至少提高一倍以上。
在一个实施例中,若当前待进行的写操作为原子写操作,则步骤S100中从可用的空闲事务页中为目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页,包括:
若当前待进行写操作为非第一次写操作或存在历史备份标志页,则根据上一个有效备份标志页中的备份信息,查找并判断每个当前待进行写操作的原始页是否已对应有备份页;
若存在当前待进行写操作的原始页没有对应的备份页,则将没有备份页的当前待进行写操作的原始页作为目标原始页,从空闲事务页中仅为目标原始页分配当前备份页;
从可用的空闲事务页中随机选定一个空闲事务页标记为当前备份标志页;
若当前待进行写操作为第一次写操作或不存在历史备份标志页,则从空闲事务页中为每个当前待进行写操作的原始页选定一个当前备份页;
从可用的空闲事务页中随机选定一个空闲事务页标记为当前备份标志页;
步骤S300中所述将所述目标原始页的原始数据备份至对应的当前备份页,包括:
将所述目标原始页的初始原始数据作为原始数据备份至对应的当前备份页;
步骤S500中将当前备份页与对应的目标原始页的映射关系作为新增备份信息与历史备份信息合并写入至当前备份标志页,包括:
根据当前逻辑页码更新历史备份信息中的备份页的逻辑页码;
将全部新增备份信息和更新逻辑页码后的历史备份信息写入至当前备份标志页。
具体地,写操作又分为原子写和非原子写两种。原子写操作可以回滚,非原子写操作要求立即将数据写入FLASH,不允许进行回滚。所以二者的具体流程存在一些不同。
本实施例具体是原子写操作的流程如下:
若当前待进行的写操作为原子写操作,则:因为每个备份标志页均设置有备份标志页标记,以与其他事务页或备份页区分。因此,根据备份标志页标记可以判断是否存在历史备份标志页。
如果当前待进行写操作为非第一次写操作或存在历史备份标志页,则根据上一个有效备份标志页中的备份信息,查找并判断每个当前待进行写操作的原始页是否已对应有备份页。
其中,上一个有效备份标志页属于历史备份标志页,是指上一轮写操作中的当前备份标志页,上一个有效备份标志页也是上一轮写操作中计数值最大的备份标志页,上一个有效备份标志页,即,计数值最大的历史备份标志页。
上一个有效备份标志页中记录了上一轮操作中所有的有效备份页及对应的原始页的映射关系。如果在上一个有效备份标志页中记录了当前待进行写操作的原始页已有对应的备份页(有效备份页),则该当前待进行写操作的原始页不需要重复备份。如果在上一个有效备份标志页中记录了当前待进行写操作的原始页不存在对应的备份页(有效备份页),则该当前待进行写操作的原始页作为目标原始页,需要进行备份,需要为目标原始页分配或选定一个当前备份页。即,从空闲事务页中仅为没有备份页的当前待进行写操作的原始页分配当前备份页。
另外,由于有新增的当前备份页,因此,还需要从空闲事务页中随机选定一个空闲事务页作为当前备份标志页。
另外,如果当前待进行写操作的原始页均已有对应的备份页,则无需选定当前备份页,也无需从可用的空闲事务页中选定当前备份标志页。
若当前待进行写操作为第一次写操作或不存在历史备份标志页,则说明当前待进行写操作的原始页均不存在对应的备份页,因此,需要从空闲事务页中为每个当前待进行写操作的原始页选定一个当前备份页。且,需要从所有可用的空闲事务页中随机选定一个空闲事务页标记为当前备份标志页,用来记录每次写操作中需要记录的备份信息列表等数据。
同一时间只能存在一个有效备份标志页,且,计数值最大的为当前备份标志页。
如果不存在新增的当前备份页,则无需创建新的当前备份标志页,仍然可以沿用上一个有效备份标志页。
如果存在新增的当前备份页,则需要创建新的当前备份标志页,该当前备份标志页会作为当前有效备份标志页替代上一个有效备份标志页,而上一个有效备份标志页则会变成无效备份标志页。
如果当前待进行写操作不是第一次写操作,则存在上一个备份标志页(上一个有效备份标志页),上一个备份标志页存储有历史备份信息,需要将历史备份信息与新增备份信息整合后写入当前备份标志页中。整合具体操作是:由于新增了当前备份标志页(即,当前有效备份标志页),因此,所有事务页的逻辑页码会重新更新。因此,对于历史备份信息,则需要更新其备份页的逻辑页码。最终将包含新增备份信息和更新逻辑页码后的历史备份信息写入至当前备份页。
若当前待进行写操作为非第一次写操作或存在历史备份标志页,且,新增备份页的数量大于0,则将上一个有效备份标志页中的备份信息以及新增的当前备份页与原始页的备份信息合并写入至当前备份标志页中。
若当前待进行写操作为非第一次写操作或存在历史备份标志页,且,新增备份页的数量为0,则无需新增当前备份标志页和当前备份页。
若当前待进行写操作为第一次写操作或不存在历史备份标志页,则将新增的当前备份页与原始页的备份信息写入至当前备份标志页中(根据新增的当前备份页与原始页的备份信息更新当前备份标志页)。
需要说明的是,一个原始页如果只经历原子写操作,则一个原始页至多对应一个备份页,且备份页中的原始数据为原始页最初始的原始数据,即使原始页经过多次写操作,备份页的原始数据始终为最初始的初始原始数据,而非中间版本的数据,因此,一个原始页最多备份一次即可。
如果一个原始页既经过原子写操作也经过非原子写操作,则如果第一次写操作是原子写操作,则备份页中存储的是最初原始数据,如果后续该原始页还经历了非原子写操作,则在非原子写操作中备份页会更新,且,更新的备份页中存储的数据包括最初原始数据和非原子写操作新增的数据。
除了将指示原始页与备份页之间的映射关系的备份信息写入当前备份标志页中之外,如果当前备份标志页中还包括备份页数量,则还需要同步更新备份页数量。备份页数量即最终保留的映射关系或备份信息的数量。
图3为本发明实施例中事务页与逻辑页的对应关系示意图;参考图3,以总共32个事务页为例。在第一次写操作或第一轮写操作时,事务页x为逻辑页0(即,当前有效备份标志页),按照顺时针,事务页x+1为逻辑页1,事务页x+2为逻辑页2,事务页x+3为逻辑页3,事务页y为逻辑页n,事务页x-1为逻辑页31,事务页x-2为逻辑页30,以此类推。
参考图4为第一次写操作完成,事务页x为当前有效备份标志页即逻辑页0,其计数值即pageCounter为1,对应新增的备份页包括逻辑页1(即,事务页x+1)和逻辑页2(即,事务页x+2)。
参考图5为第二次写操作完成,事务页x+4变为当前有效备份标志页即逻辑页0,记做备份标志页B,其计数值即pageCounter为2;事务页x变为无效备份标志页,记做备份标志页A,其计数值即pageCounter仍然为1,不变,其逻辑页码变为逻辑页28,发生改变。事务页x+3是第二次写操作新增的备份页,其逻辑页码变为逻辑页31,记做备份页B1。事务页x+1的逻辑页码变为逻辑页29,记做备份页A1。事务页x+2的逻辑页码变为逻辑页30,记做备份页A2。事务页x+5的逻辑页码变为逻辑页1;事务页x-1的逻辑页码变为逻辑页27;事务页x-2的逻辑页码变为逻辑页26。
参考图6为第三次写操作完成,事务页x+7变为当前有效备份标志页即逻辑页0,记做备份标志页C,其计数值即pageCounter为3;事务页x变为无效备份标志页,记做备份标志页A,其计数值即pageCounter仍然为1,不变,其逻辑页码变为逻辑页25,发生改变。事务页x+5是第三次写操作新增的备份页,其逻辑页码变为逻辑页30,记做备份页C1。事务页x+6是第三次写操作新增的备份页,其逻辑页码变为逻辑页31,记做备份页C2。
事务页x+1的逻辑页码变为逻辑页26,记做备份页A1。事务页x+2的逻辑页码变为逻辑页27,记做备份页A2。事务页x+3的逻辑页码变为逻辑页28,记做备份页B1。事务页x+4的逻辑页码变为逻辑页29,记做备份标志页B,其计数值即pageCounter仍然为2,不变。
事务页x+8的逻辑页码变为逻辑页1;事务页x-1的逻辑页码变为逻辑页24。
参考图7为事务提交或回滚后完成事务页与逻辑页的对应关系示意图;擦除了所有无效备份标志页和当前有效备份标志页,保留了备份页。逻辑页码仍然是第三次写操作完成时的逻辑页码,不再更改。
本实施例使用换页写方式,将备份信息列表和事务开始标记等数据写入到新的备份标志页。使用换页写方式,通过计数值来作废之前的备份标志页,即计数值最大的是当前有效的备份标志页,这样可以确保在写的过程中即使掉电也不至于破坏之前的备份标志页。
本实施例对于原子写操作,只对没有备份页的原始页分配备份页,对于已有备份页的原始页则不再重复分配备份页,减少了对事务页的频繁写操作和对事务页的占用。本实施例在存在需要备份的目标原始页时从空闲事务页中分配当前备份页和当前备份标志页,利用当前备份页备份目标原始页,根据当前备份标志页更新逻辑页码,并将目标原始页与新增备份页之间的映射关系以及历史映射关系合并至当前备份标志页中,最后对待操作的原始页进行写操作。本实施例保证了备份信息列表和事务开始标记等数据更新操作的原子性和可追溯性,避免备份信息列表和事务开始标记被破坏掉而导致事务失败,且,本实施例并不固定备份标志页,而是根据情况选择新的空闲事务页新增为备份标志页来记录备份信息列表和事务开始标记等数据,相当于实现了备份信息列表和事务开始标记的备份,从而避免同一个备份标志页被频繁擦写而提前破坏,有效保证了备份标志页的可使用性,且,本实施例利用备份页对原始页的数据进行备份,保证了备份信息列表和事务开始标记、原始页数据等数据的安全性和可还原性,有效实现了数据的掉电保护。另外,由于每个事务页都可能被用来作为备份页或备份标志页,而并非频繁固定的使用一个事务页,因此,可以保证所有事务页可以均摊擦写频率,减少单个事务页的被擦写频率,降低事务页成为坏块的概率,延长存储模块的寿命。
本发明在原有的事务操作基础上进行了改进,减少事务开始和提交的次数,极端情况下可以将一个命令的全部操作当中一个事务,大大提高了FLASH写速度,实际效果至少提高一倍以上。
在一个实施例中,该方法还包括:获取事务开始标记的取值,若事务开始标记指示事务还未开始,则从空闲事务页中随机选定一个空闲事务页作为备份标志页;
若事务开始标记指示事务已开始,则无需处理。
在一个实施例中,若当前待进行写操作为非原子写操作,则步骤S100中从所有可用的空闲事务页中随机选定一个空闲事务页标记为作为当前备份标志页,以及从其他空闲事务页中为当前待进行写操作的原始页选定当前备份页,包括:
将每个当前待进行写操作的原始页均作为目标原始页,从空闲事务页中为每个目标原始页选定一个当前备份页;
从可用的空闲事务页中选定一个空闲事务页标记为当前备份标志页;
步骤S300中所述将所述目标原始页的原始数据备份至对应的当前备份页,包括:
若所述目标原始页存在历史备份页,则将最新历史备份页中的历史备份数据与当前待非原子写入的新数据合并后作为原始数据备份至对应的当前备份页;
若所述目标原始页不存在历史备份页,则将所述目标原始页的初始原始数据与当前待非原子写入的新数据合并后作为原始数据备份至对应的当前备份页;
步骤S500中将当前备份页与对应的目标原始页的映射关系作为新增备份信息与历史备份信息合并写入至当前备份标志页,包括:
读取上一个有效备份标志页中的备份信息,得到历史备份信息;
根据当前待进行写操作的原始页与新增的当前备份页之间的新增备份信息以替换形式更新历史备份信息,根据当前逻辑页码更新保留的历史备份信息中的备份页的逻辑页码;
将得到的更新备份信息写入至当前备份标志页,其中,更新备份信息包括新增备份信息和更新逻辑页码后的保留的历史备份信息,当前备份标志页中的逻辑页码均为更新的当前逻辑页码。
具体地,需要说明的是,对于非原子写操作,一个原始页可能对应多个备份页,但是同一时间至多一个备份页为有效备份页,其他历史备份页均为无效备份页,且有效备份页中的原始数据为原始页最新的原始数据(经过一次或多次写操作后更新的数据),即,有效备份页中的数据为最初始的原始数据,也可能是经过写操作后得到的中间版本的数据。同一个原始页每被写操作一次,则需要备份一次,因此,一个原始页可能被备份一次或多次。
以下表1为原子写操作和非原子写操作的备份示意表:
表1
备份页 原始页 写操作
内容:A1(初始原始数据)
1 A1 内容:A1+A2 原子写入A2
2 A1 内容:A1+A2+A3 原子写入A3
3 A1+A4 内容:A1+A2+A3+A4 非原子写入A4
4 A1+A4 内容:A1+A2+A3+A4+A5 原子写入A5
5 A1+A4+A6 内容:A1+A2+A3+A4+A5+A6 非原子写入A6
参见表1,原始页的最初原始数据为A1,在对原始页原子写入A2之前,对原始页进行第一次备份,备份页备份数据A1;在对原始页原子写入A3之前,无需对原始页进行重复备份,无需分配新的备份页,因此,仍然沿用前面存储A1的备份页;在对原始页非原子写入A4之前,需要分配新的备份页,且,新的备份页中写入的数据是历史备份页中的A1和新增的非原子数据A4;产生新的备份页之后,之前的备份页作废;在对原始页原子写入A5之前,无需对原始页进行重复备份,无需分配新的备份页,因此,仍然沿用前面存储A1+A4的备份页;在对原始页非原子写入A6之前,需要分配新的备份页,且,新的备份页中写入的数据是历史备份页中的A1+A4和新增的非原子数据A6,即,新增备份页存储的是A1+A4+A6。
在上述多次原子写和非原子写过程中,原始页每次原子写或非原子写都会被写入新的数据,原子页的数据在不断更新。
综上,如果当前为非原子写操作,且对应的原始页已经备份过,则将该原始页最新一份的历史备份页中的历史备份数据和待非原子写入的新增数据合并后写入到新分配的备份页中,通过换页写机制保证在写的过程中不破坏旧的备份页,新的备份页写完成后,通过更改原始页与备份页之间的映射关系,建立原始页与新的备份页之间的映射关系,删除原始页与旧的历史备份页之间的映射关系,完成旧备份页的作废。
因此,本实施例对于非原子写操作,不论当前待进行写操作的原始页是否存在历史备份页,均会分配新的当前备份页,且,会选定一个新的当前备份标志页。
每个当前待进行写操作的原始页均为一个目标原始页。因此,每个当前待进行写操作的原始页的原始数据会备份至对应的当前备份页中。
如果当前待进行写操作的原始页存在历史备份页,则其对应的当前备份页会代替历史备份页成为当前的有效备份页,其历史备份页成为无效备份页。
为了区分有效备份页和无效备份页,需要在当前备份标志页中更新映射关系即备份信息。存在于当前有效备份标志页中的备份页即为有效备份页,不存在于当前有效备份标志页中的备份页即为无效备份页。
对于同一个原始页,若同时存在新增备份信息和历史备份信息,则利用新增备份信息替换对应的历史备份信息。
例如,一个原始页Y存在历史备份页A,且为原始页Y新分配了一个当前备份页B,则在当前备份标志页中会存储原始页Y与当前备份页B之间的映射关系作为新的备份信息,且,删除原始页Y与备份页A的历史备份信息。
如果一个原始页Y不存在历史备份页,且当前为原始页Y分配了一个当前备份页B,则将原始页Y与当前备份页B之间的映射关系作为新增备份信息存储到当前备份标志页中。
如果一个原始页Y存在历史备份页A,且当前原始页Y不属于当前待进行写操作的原始页,即,原始页Y没有新增的当前备份页,则将原始页Y与历史备份页A的历史备份信息中的逻辑页码更新后写入到当前备份标志页中。
除了将指示原始页与备份页之间的映射关系的备份信息写入当前备份标志页中之外,如果当前备份标志页中还包括备份页数量,则还需要同步更新备份页数量。备份页数量即最终保留的映射关系或备份信息的数量。
本实施例使用换页写方式,将备份信息列表和事务开始标记等数据写入到新的备份标志页。使用换页写方式,通过计数值来作废之前的备份标志页,即计数值最大的是当前有效的备份标志页,这样可以确保在写的过程中即使掉电也不至于破坏之前的备份标志页。
本实施例对于非原子操作,对每个待进行写操作的原始页进行备份,对于有历史备份页的使用最新的备份页替换掉,进而作废重复的历史备份页,既减少了对事务页的占用,又能保证备份的原始页数据是最新的,实现了非原子写操作,本实施例每进行一轮写操作,将所有备份信息以及标记写入到一个备份标志页中,由于历史备份标志页的存在,保证了备份信息列表和事务开始标记等数据更新操作的原子性和可追溯性,避免备份信息列表和事务开始标记被破坏掉而导致事务失败,且,本实施例并不固定备份标志页,而是根据情况选择新的空闲事务页新增为备份标志页来记录备份信息列表和事务开始标记等数据,相当于实现了备份信息列表和事务开始标记的备份,从而避免同一个备份标志页被频繁擦写而提前破坏,有效保证了备份标志页的可使用性,且,本实施例利用备份页对原始页的数据进行备份,保证了备份信息列表和事务开始标记、原始页数据等数据的安全性和可还原性,有效实现了数据的掉电保护。另外,由于每个事务页都可能被用来作为备份页或备份标志页,而并非频繁固定的使用一个事务页,因此,可以保证所有事务页可以均摊擦写频率,减少单个事务页的被擦写频率,降低事务页成为坏块的概率,延长存储模块的寿命。
本发明在原有的事务操作基础上进行了改进,减少事务开始和提交的次数,极端情况下可以将一个命令的全部操作当中一个事务,大大提高了FLASH写速度,实际效果至少提高一倍以上。
在一个实施例中,该方法还包括:事务提交操作;
事务提交操作:
查找并擦除清除无效备份标志页;
无效备份标志页擦除后再擦除当前有效备份标志页。
具体地,每轮写操作至多有一个有效备份标志页,在事务提交时,先擦除计数值小的备份标志页即无效备份标志页,最后擦除计数值最大的当前有效备份标志页。事务提交操作一般是在一轮写操作正常完成后进行。
基于此,通过遍历读取每个事务页是否存在备份标志页标记,若不存在备份标志页标记,则指示读取的事务页不属于备份标志页,无需擦除,读取下一个事务页;若存在备份标志页标记,则指示读取的事务页属于备份标志页;再判断该备份标志页是否为无效标志页,如果属于无效标志页(计数值不是最大计数值),则整页擦除该无效标志页中的内容。如果该备份标志页属于当前有效备份标志页,且,其他无效备份标志页都已擦除(不存在无效备份标志页了),则擦除该当前有效备份标志页。如果该备份标志页属于当前有效备份标志页,且,存在其他无效备份标志页未擦除,则跳过该当前有效备份标志页,读取下一个事务页,直到擦除完所有无效备份标志页后,再最后擦除当前有效备份标志页。
本实施例通过先擦除无效备份标志页,最后擦除有效备份标志页,可以在掉电等突发状况发生时,再次上电时可以根据未擦除的有效备份标志页进行数据还原,保证了数据安全。可以有效避免掉电导致数据破坏。
在一个实施例中,该方法还包括:若接收到回滚指令,则执行事务主动回滚操作;
事务主动回滚操作,包括:
查找并擦除无效备份标志页;
同时查找到当前有效备份标志页,获取备份信息;
根据备份信息查找备份页,根据备份页的数据还原对应的原始页;
数据还原完成以后,擦除当前有效备份标志页。
具体地,事务主动回滚操作是用户指示的回滚操作,用户可以根据需要向系统下发回滚指令,系统接收到回滚指令后,会执行事务主动回滚操作。
执行事务主动回滚操作遵循先数据还原和擦除无效备份标志页,最后擦除当前有效备份标志页的原则执行相应流程。
数据还原与擦除无效备份标志页的执行顺序不作限制。
本实施例在主动回滚时,根据有效备份标志页中的备份信息来进行数据还原恢复,保证了数据的安全性和完整性,再先擦除无效备份标志页,最后擦除有效备份标志页,可以在掉电等突发状况发生时,再次上电时可以根据未擦除的有效备份标志页进行数据还原,保证了数据安全。本实施例可以有效避免掉电导致数据破坏。
在一个实施例中,该方法还包括:若检测到上电事件,则执行事务上电检测回滚操作;
事务上电检测回滚操作,包括:
搜索是否存在当前有效备份标志页,查找的同时删除无效备份标志页;
若存在当前有效备份标志页,则从当前有效备份标志页中获取备份信息;
根据备份信息查找备份页,根据查找到的备份页的数据还原对应的原始页;
数据还原完成后,擦除当前有效备份标志页。
具体地,在写操作过程中如果发生断电等异常,可能会导致数据丢失,因此,为了保证数据的完整性,在上电时,均需要执行事务上电检测回滚操作。
如果写操作过程中没有发生断电等异常,则写完成后会进行事务提交,事务提交过程中会擦除或清除无效备份标志页和当前有效备份标志页,使得不存在备份标志页。因此,上电时,不会搜索到有效备份标志页。
如果写操作过程中发生了断电等异常,则无法正常进行事务提交,或者,事务提交无法正常完成,因此,会存在当前有效备份标志页或者会存在当前有效备份标志页和一些无效备份标志页未擦除。
基于此,在上电时,通过事务上电检测回滚操作,可以先搜索是否存在当前有效备份标志页,如果存在当前有效备份标志页,则表示上轮写操作可能存在断电等异常,因此,需要进行数据还原回滚。
当前有效备份标志页中存储有备份页及对应的原始页的映射关系,因此,根据备份信息可以查找到备份页,根据查找到的备份页的数据还原对应的原始页;此外,还需要查找并擦除无效备份标志页;数据还原完成以及所有无效备份标志页擦除后,擦除当前有效备份标志页。
下次写操作时会重新选定备份页和当前有效备份标志页,参见上述步骤,此处不再赘述。
检查事务开始标记是否有效;如果该标记无效,表示无需回滚,不做任何处理。如果该标记有效,表示有FLASH写操作未成功完成,需要回滚。回滚动作包括:读取备份信息列表,获得备份页和原始页的对应关系。使用备份页的数据来还原已被破坏的原始页数据。清除事务开始标记。
本实施例在上电时,通过搜索是否存在有效备份标志页来确定是否发生掉电,在确定存在有效备份标志页时,根据有效备份标志页中的备份信息来进行数据还原恢复,保证了数据的安全性和完整性,再先擦除无效备份标志页,最后擦除有效备份标志页,可以在掉电等突发状况发生时,再次上电时可以根据未擦除的有效备份标志页进行数据还原,保证了数据安全。本实施例可以有效避免掉电导致数据破坏。
在一个实施例中,该方法还包括:
若不存在需要进行备份且待进行写操作的原始页,即不存在目标原始页,所有待进行写操作的原始页均不需要进行备份,则对当前待进行写操作的原始页进行写操作。
具体地,因为所有当前待进行写操作的原始页均不需要备份,因此,无需新增当前备份页,进而无需新增当前备份标志页,当前沿用上一个有效备份标志页作为当前有效备份标志页。逻辑页码也无需更新。因此,直接进行原始页的写操作即可。
在一个实施例中,步骤S100中从可用的空闲事务页中为目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页,包括:
从上一个有效备份标志页的下一个空闲事务页开始,按照预设顺序从可用的空闲事务页中目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页;
或者;
从所有可用的空闲事务页中随机为目标原始页选定当前备份页,以及,随机选定一个空闲事务页标记为当前备份标志页。
具体地,本实施例可以先选定当前备份页,再选定当前备份标志页;也可以先选定当前备份标志页,再选定当前备份页。
还可以按照预设顺序先选定当前备份页之后再将最后一个当前备份页的下一个空闲事务页作为当前备份标志页。
还可以先选定当前备份标志页之后再按照预设顺序从当前备份标志页的下一个空闲事务页开始为目标原始页选定当前备份页。
或者,随机从可用的空闲事务页中选定当前备份页和当前备份标志页,先后顺序不定。
在一个具体实施例中,若当前写操作为第一次写操作,则从所有可用的空闲事务页中随机选定一个空闲事务页标记为作为当前备份标志页,
从当前备份标志页的下一个空闲事务页开始,按照预设顺序从其他空闲事务页中为目标原始页选定当前备份页。
若当前写操作为非第一次写操作,则从上一次写操作的有效备份标志页开始按照预设顺序从其他空闲事务页中为目标原始页选定当前备份页,将最后一个当前备份页的下一个空闲事务页作为当前备份标志页。
或者;
在一个具体实施例中,从所有可用的空闲事务页中随机选定一个空闲事务页标记为作为当前备份标志页,从当前备份标志页的下一个空闲事务页开始,按照预设顺序从其他空闲事务页中为目标原始页选定当前备份页。即,按照先选当前备份标志页,再选当前备份页的方式。
其中,所有事务页作为逻辑页首尾相连形成环形集合。
本发明将备份信息列表和事务开始标记合并保存到同一个页面。每次更新备份标志页,都需要在事务区分配一个新页,并使用定位计数器指示哪一个是有效的备份标志页,从而避免不完整的写入操作导致备份标志页被破坏。对于非原子写,原始页和备份页都要写入新数据,确保写操作过程中既不破坏原有数据,又保证新数据写入不会回滚。所有事务区的抽象为一个环形页面集合,每次事务开始时会随机确定备份标志页的位置,实现事务区全部页面的FLASH擦写均衡,可延长FLASH寿命。
对备份标志页的数据进行更新时,不能直接写备份标志页,每次需分配一个新的备份标志页,并整合、更新备份信息列表,然后旧的备份标志页失效。这样可以避免掉电导致数据破坏。清除备份标志页时,查找到计数值最大的有效备份标志页,同时清除其他失效的备份标志页。最后才清除计数值最大的有效备份标志页。在写命令的处理开始时,自动开启事务,命令结束后自动提交事务,用户也可以主动开启事务和提交事务。
参考图8,本申请还提供了一种基于换页写的写事务的保护装置,该装置包括:
事务页分配模块100,用于每次执行写操作时自动启动写事务保护,从可用的空闲事务页中为目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页,其中,目标原始页为需要进行备份且待进行写操作的原始页;
第一设置模块200,用于在当前备份标志页中增加并设置事务开始标记,使事务开始标记指示当前事务已启动;
备份模块300,用于将目标原始页的原始数据备份至对应的当前备份页;
页码更新模块400,用于将当前备份标志页作为第一逻辑页,按照预设顺序对其他事务页的逻辑页码进行顺序更新;
备份信息写入模块500,用于若存在历史备份信息,则将当前备份页与对应的目标原始页的映射关系作为新增备份信息与历史备份信息合并写入至当前备份标志页,若不存在历史备份信息,则将当前备份页与对应的目标原始页的映射关系作为新增备份信息写入至当前备份标志页,其中,当前备份标志页中的逻辑页码均为更新的当前逻辑页码;
第二设置模块600,用于设置当前备份标志页的备份标志页定位计数器的计数值,其中,计数值为计数初始值或者是对已有的无效备份标志页的最大计数值加1得到的;
写操作模块700,用于对当前待进行写操作的原始页进行写操作。
图9示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是终端,也可以是服务器。如图9所示,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现上述方法实施例中的各个步骤。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行上述方法实施例中的各个步骤。本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提出了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述任意一项方法的步骤。
在一个实施例中,提出了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述任意一项方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种基于换页写的写事务的保护方法,其特征在于,所述方法包括:
每次执行写操作时自动启动写事务保护,从可用的空闲事务页中为目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页,其中,目标原始页为需要进行备份且待进行写操作的原始页;
在所述当前备份标志页中增加并设置事务开始标记,使事务开始标记指示当前事务已启动;
将所述目标原始页的原始数据备份至对应的当前备份页;
将所述当前备份标志页作为第一逻辑页,按照预设顺序对其他事务页的逻辑页码进行顺序更新;
若存在历史备份信息,则将所述当前备份页与对应的目标原始页的映射关系作为新增备份信息与历史备份信息合并写入至所述当前备份标志页,若不存在历史备份信息,则将所述当前备份页与对应的目标原始页的映射关系作为新增备份信息写入至所述当前备份标志页,其中,当前备份标志页中的逻辑页码均为更新的当前逻辑页码;
设置所述当前备份标志页的备份标志页定位计数器的计数值,其中,所述计数值为计数初始值或者是对已有的无效备份标志页的最大计数值加1得到的;
对所述当前待进行写操作的原始页进行写操作。
2.根据权利要求1所述的方法,其特征在于,若当前待进行的写操作为原子写操作,则所述从可用的空闲事务页中为目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页,包括:
若当前待进行写操作为非第一次写操作或存在历史备份标志页,则根据上一个有效备份标志页中的备份信息,查找并判断每个当前待进行写操作的原始页是否已对应有备份页;
若存在当前待进行写操作的原始页没有对应的备份页,则将没有备份页的当前待进行写操作的原始页作为目标原始页,从空闲事务页中仅为所述目标原始页分配当前备份页;
从可用的空闲事务页中随机选定一个空闲事务页标记为当前备份标志页;
若当前待进行写操作为第一次写操作或不存在历史备份标志页,则从空闲事务页中为每个当前待进行写操作的原始页选定一个当前备份页;
从可用的空闲事务页中随机选定一个空闲事务页标记为当前备份标志页;
所述将所述目标原始页的原始数据备份至对应的当前备份页,包括:
将所述目标原始页的初始原始数据作为原始数据备份至对应的当前备份页;
所述将所述当前备份页与对应的目标原始页的映射关系作为新增备份信息与历史备份信息合并写入至所述当前备份标志页,包括:
根据当前逻辑页码更新历史备份信息中的备份页的逻辑页码;
将全部新增备份信息和更新逻辑页码后的历史备份信息写入至所述当前备份标志页。
3.根据权利要求1所述的方法,其特征在于,若当前待进行写操作为非原子写操作,则所述从可用的空闲事务页中为目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页,包括:
将每个当前待进行写操作的原始页均作为目标原始页,从空闲事务页中为每个所述目标原始页选定一个当前备份页;
从可用的空闲事务页中选定一个空闲事务页标记为当前备份标志页;
所述将所述目标原始页的原始数据备份至对应的当前备份页,包括:
若所述目标原始页存在历史备份页,则将最新历史备份页中的历史备份数据与当前待非原子写入的新数据合并后作为原始数据备份至对应的当前备份页;
若所述目标原始页不存在历史备份页,则将所述目标原始页的初始原始数据与当前待非原子写入的新数据合并后作为原始数据备份至对应的当前备份页;
所述将所述当前备份页与对应的目标原始页的映射关系作为新增备份信息与历史备份信息合并写入至所述当前备份标志页,包括:
读取上一个有效备份标志页中的备份信息,得到历史备份信息;
根据所述当前待进行写操作的原始页与新增的当前备份页之间的新增备份信息以替换形式更新所述历史备份信息,根据当前逻辑页码更新保留的历史备份信息中的备份页的逻辑页码;
将得到的更新备份信息写入至所述当前备份标志页,其中,所述更新备份信息包括新增备份信息和更新逻辑页码后的保留的历史备份信息,所述当前备份标志页中的逻辑页码均为更新的当前逻辑页码。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:事务提交操作;
所述事务提交操作:
查找并擦除清除无效备份标志页;
无效备份标志页擦除后再擦除当前有效备份标志页。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:若接收到回滚指令,则执行事务主动回滚操作;
所述事务主动回滚操作,包括:
查找并擦除无效备份标志页;
同时查找到当前有效备份标志页,获取备份信息;
根据所述备份信息查找备份页,根据所述备份页的数据还原对应的原始页;
数据还原完成以后,擦除所述当前有效备份标志页。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:若检测到上电事件,则执行事务上电检测回滚操作;
所述事务上电检测回滚操作,包括:
搜索是否存在当前有效备份标志页,查找的同时删除无效的备份标志页;
若存在当前有效备份标志页,则从所述当前有效备份标志页中获取备份信息;
根据所述备份信息查找备份页,根据查找到的备份页的数据还原对应的原始页;
数据还原完成后,擦除所述当前有效备份标志页。
7.根据权利要求1所述的方法,其特征在于,所述从可用的空闲事务页中为目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页,包括:
从上一个有效备份标志页的下一个空闲事务页开始,按照所述预设顺序从可用的空闲事务页中目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页;
或者;
从所有可用的空闲事务页中随机为目标原始页选定当前备份页,以及,随机选定一个空闲事务页标记为当前备份标志页。
8.一种基于换页写的写事务的保护装置,其特征在于,所述装置包括:
事务页分配模块,用于每次执行写操作时自动启动写事务保护,从可用的空闲事务页中为目标原始页选定当前备份页,以及,从可用的空闲事务页中选定空闲事务页标记为当前备份标志页,其中,目标原始页为需要进行备份且待进行写操作的原始页;
第一设置模块,用于在所述当前备份标志页中增加并设置事务开始标记,使事务开始标记指示当前事务已启动;
备份模块,用于将所述目标原始页的原始数据备份至对应的当前备份页;
页码更新模块,用于将所述当前备份标志页作为第一逻辑页,按照预设顺序对其他事务页的逻辑页码进行顺序更新;
备份信息写入模块,用于若存在历史备份信息,则将所述当前备份页与对应的目标原始页的映射关系作为新增备份信息与历史备份信息合并写入至所述当前备份标志页,若不存在历史备份信息,则将所述当前备份页与对应的目标原始页的映射关系作为新增备份信息写入至所述当前备份标志页,其中,当前备份标志页中的逻辑页码均为更新的当前逻辑页码;
第二设置模块,用于设置所述当前备份标志页的备份标志页定位计数器的计数值,其中,所述计数值为计数初始值或者是对已有的无效备份标志页的最大计数值加1得到的;
写操作模块,用于对所述当前待进行写操作的原始页进行写操作。
9.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
10.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
CN202410415050.XA 2024-04-08 2024-04-08 基于换页写的写事务的保护方法、装置、设备及存储介质 Pending CN118312355A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410415050.XA CN118312355A (zh) 2024-04-08 2024-04-08 基于换页写的写事务的保护方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410415050.XA CN118312355A (zh) 2024-04-08 2024-04-08 基于换页写的写事务的保护方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN118312355A true CN118312355A (zh) 2024-07-09

Family

ID=91726721

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410415050.XA Pending CN118312355A (zh) 2024-04-08 2024-04-08 基于换页写的写事务的保护方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN118312355A (zh)

Similar Documents

Publication Publication Date Title
TWI703438B (zh) 映射表更新方法
CN107220145B (zh) 一种闪存数据库数据恢复的方法
KR0128218B1 (ko) 일괄 소거형 비휘발성 메모리
US7979626B2 (en) Flash recovery employing transaction log
US7849253B2 (en) Method for fast access to flash-memory media
EP2955633B1 (en) Data erasing method and device for flash memory
US20060224639A1 (en) Backup system, program and backup method
JP2013061799A (ja) 記憶装置、記憶装置の制御方法およびコントローラ
JP2671860B2 (ja) フラッシュメモリ用ファイルシステム
US20060200500A1 (en) Method of efficiently recovering database
CN112988611A (zh) 非易失性存储器的数据写入方法、终端和可读存储介质
CN115705152A (zh) 使用存储器内日志在非易失性存储器装置中的元数据管理
US10942811B2 (en) Data processing method for solid state drive
US7185140B2 (en) Method for storing in nonvolatile memory and storage unit
CN118312355A (zh) 基于换页写的写事务的保护方法、装置、设备及存储介质
CN112988037A (zh) 静态磨损均衡方法、终端和计算机可读存储介质
CN111090542A (zh) 基于异常掉电的异常块识别方法、装置及计算机设备
US7376806B2 (en) Efficient maintenance of memory list
CN112433959A (zh) 实现数据存储处理的方法、装置、计算机存储介质及终端
US11150940B2 (en) System and method for recording transaction associated with a page-oriented non-volatile memory
US20040073744A1 (en) Method for the secure updating data areas in non volatile memory, device to perform such a method
CN111367718A (zh) 数据库的启动方法、装置、设备和存储介质
CN110795275A (zh) 基于异常掉电过程中的异常块识别方法和装置
CN113778330B (zh) 一种基于Flash存储器的事务处理方法
CN116126591B (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