一种存储设备的事务恢复方法,及装置的制造方法_4

文档序号:9579122阅读:来源:国知局
止,则进入704,如果为空闲,则跳过继续执行701 ;如果是已提交事务则进入703 ;
[0133]本步骤中,确定事务的状态,会执行如下操作:
[0134]若为空闲状态,则跳过;
[0135]若为活跃状态,由于处于活跃状态的事务尚未提交,在系统故障发生后不能继续执行,故而转为已中止状态,则执行步骤704 ;
[0136]若为已提交状态,则执行步骤703 ;
[0137]若为已中止状态,则执行步骤704 ;
[0138]若为已更新映射状态,则执行步骤704 ;
[0139]步骤703:对于已提交状态的事务,首先判断是否其已更新映射并且状态是否置位:若已经置位,则执行步骤704 ;若未更新映射表并且尚未置位,则将该事务中数据页面的映射关系更新至映射表中,以提供外部访问;具体流程可以如下:
[0140]首先,对每个数据页面元数据,回溯版本链,标记最新提交版本的前一版本所表示数据页面为可回收;
[0141]然后,读取每个数据页面元数据中的映射关系,并将该映射关系更新映射表,使得该页面更新外部可见;
[0142]再然后,修改事务元数据中的事务状态为已更新映射(CHECKPOINT)状态;
[0143]最后,在该事务中所有数据页面元数据均处理完毕后,执行步骤704 ;
[0144]步骤704:标记事务中数据页面元数据所指向缓存页面为可回收,清理数据页面元数据,并标记事务元数据状态为空闲(FREE),以服务后续请求。本步骤主要自行的是:清理该事务所使用内存,设置事务状态为空闲;
[0145]以上流程中,还可以在执行704之前,确定该事务中是否包含最新提交版本,如果确定结果为是,需要等待上述事务的所有页面均标记为可回收;如果确定结果为否可以直接执行步骤704。
[0146]至此,混合存储设备完成已提交事务的重做与已中止事务的清理工作,系统恢复至一致性状态。
[0147]本发明实施例还提供了一种存储设备的事务恢复装置,如图8所示,包括:
[0148]数据存储单元801,用于在执行事务处理过程中,将上述事务的第二版本数据存储到存储设备的非易失性缓存;若存在上述事务的第一版本数据,则上述第一版本数据存储在上述存储设备的非易失性缓存或者上述存储设备的非易失性存储器;上述第二版本数据为本次执行事务处理过程中产生的数据;上述第一版本数据为本次之前执行上述事务已提交的数据;
[0149]存储控制单元802,用于在将上述事务的第二版本数据存储到存储设备的非易失性缓存过程中,保持上述第一版本数据;
[0150]数据恢复单元803,用于若需要对上述事务进行恢复,则获取上述第一版本数据。
[0151]本发明实施例,事务处理中的数据新版本记录于非易失性缓存,而无需同步刷写至非易失性存储器,可以减轻同步刷写的性能开销;在写入数据新版本时首先记录于非易失性缓存中,而无需记录到非易失性存储器中,通过这种方法避免了数据新版本在非易失性存储器中的两次写;利用非易失性缓存的非易失性和字节寻址特性降低事务处理的开销实现数据一致性。
[0152]在本发明实施例中,第二版本数据是本次执行事务处理产生的数据,属于新数据版本,在事务处理提交之前新数据版本并不完整,其正确性无法保证,因此需要保持第一版本数据不被删除,具体的操作方式可以如下:可选地,上述存储控制单元802,用于禁止回收上述第一版本数据对应的地址空间;
[0153]若上述第一版本数据在非易失性缓存,则设置上述第一版本数据对应的地址空间有效;若上述第一版本数据在非易失性存储器,则禁止缓存替换算法选中上述第一版本数据对应的地址空间。
[0154]在本发明实施例中,可以通过映射表的方式来灵活控制软件可见的事务的数据的版本,具体如下:进一步地,如图9所示,上述装置,还包括:
[0155]映射更新单元901,用于在第二版本数据递交之后,并且在上述第一版本数据回收之前,将上述第二版本数据作为第一版本数据,并更新第一版本数据的逻辑地址与物理地址之间的映射关系;上述逻辑地址为软件可见的地址。
[0156]在本发明实施例中,通过事务的处理状态进行软件可见事务的数据版本控制、地址空间的回收等操作之前需要对事务的处理状态进行记录,以方便后续的控制流程。进一步地,如图10所示,上述装置,还包括:
[0157]状态记录单元1001,用于在将上述事务的第二版本数据存储到存储设备的非易失性缓存过程中,记录各事务对应的数据的处理状态,上述处理状态包括:空闲、活跃、已提交、中止以及已更新映射。
[0158]在发生故障等情况下,本发明实施例需要对事务的数据进行恢复,本发明实施例还给出了基于映射表的恢复方式,具体如下:可选地,上述数据恢复单元803,用于若需要对上述事务进行恢复,则获取非易失性缓存中上述事务的处理状态;若上述事务的处理状态为已提交并且未更新映射,则将上述第二版本数据作为第一版本数据,并更新第一版本数据的逻辑地址与物理地址之间的映射关系。
[0159]以上方案仅需要更新映射表,就可以灵活控制软件可见的数据,不需要重复写入数据,减少同步刷入次数,同时可以降低事务元数据(记录事务的状态和数据页面的数据信息)管理的开销。
[0160]本发明实施例还提供了基于前述实施例记录事务的处理状态,进行存储资源回收的方案,具体如下:进一步地,如图11所示,上述装置,还包括:
[0161]回收单元1101,用于若上述事务的处理状态为活跃或者中止,则回收上述事务对应的第二版本数据对应的地址空间。
[0162]在本发明实施例中,一个事务在处理过程中可能会产生很多数据,并且存放在不同的页面中,本发明实施例提供了如何确定存放在不同页面中的数据属于一个事务的可选实现方案,具体如下:进一步地,如图12所示,上述装置,还包括:
[0163]数据事务记录单元1201,用于通过链表记录存储在非易失性缓存或者非易失性存储器的各页面中的数据与事务之间的所属关系。
[0164]在本发明实施例中,非易失性存储器的空间是有限的,有可能存在非易失性存储器的存储空间不足的问题,本发明实施例提供了可选方案如下:进一步地,上述数据存储单元801,还用于若上述非易失性缓存的剩余存储空间小于单个事务所需存储空间,在上述非易失性存储器中扩展用于缓存上述第二版本数据的缓存空间。
[0165]可选地,在本发明实施例中,对事务的数据的管理优选地以事务为最小粒度,以确保数据一致性更为高效准确的进行,具体如下:上述存储控制单元802,还用于若需要对非易失性缓存进行缓存替换,则以事务为最小粒度执行缓存替换算法,并禁止处于未提交状态的数据被替换;或者,若需要对事务的第一版本数据或者第二版本数据的地址空间进行回收,以事务为最小粒度进行地址空间回收。
[0166]本发明实施例还提供了一种存储设备,如图13所示,包括:接收器1301、发射器1302、处理器1303,以及存储器1304 ;其中存储器1304为混合存储设备,包含非易失性缓存和非易失性存储器两部分;
[0167]其中,处理器1303用于:在执行事务处理过程中,将上述事务的第二版本数据存储到存储设备的非易失性缓存;若存在上述事务的第一版本数据,则上述第一版本数据存储在上述存储设备的非易失性缓存或者上述存储设备的非易失性存储器;上述第二版本数据为本次执行事务处理过程中产生的数据;上述第一版本数据为本次之前执行上述事务已提交的数据;在将上述事务的第二版本数据存储到存储设备的非易失性缓存过程中,保持上述第一版本数据;若需要对上述事务进行恢复,则获取上述第一版本数据。
[0168]本发明实施例,事务处理中的数据新版本记录于非易失性缓存,而无需同步刷写至非易失性存储器,可以减轻同步刷写的性能开销;在写入数据新版本时首先记录于非易失性缓存中,而无需记录到非易失性存储器中,通过这种方法避免了数据新版本在非易失性存储器中的两次写;利用非易失性缓存的非易失性和字节寻址特性降低事务处理的开销实现数据一致性。
[0169]在本发明实施例中,第二版本数据是本次执行事务处理产生的数据,属于新数据版本,在事务处理提交之前新数据版本并不完整,其正确性无法保证,因此需要保持第一版本数据不被删除,具体的操作方式可以如下:可选地,上述处理器1303用于:保持上述第一版本数据包括:禁止回收上述第一版本数据对应的地址空间;若上述第一版本数据在非易失性缓存,则设置上述第一版本数据对应的地址空间有效;若上述第一版本数据在非易失性存储器,则禁止缓存替换算法选中上述第一版本数据对应的地址空间。
[0170]在本发明实施例中,可以通过映射表的方式来灵活控制软件可见的事务的数据的版本,具体如下:进一步地,上述处理器1303还用于:在第二版本数据递交之后,并且在上述第一版本数据回收之前,将上述第二版本数据作为第一版本数据,并更新第一版本数据的逻辑地址与物理地址之间的映射关系;上述逻辑地址为软件可见的地址。
[0171]在本发明实施例中,通过事务的处理状态进行软件可见事务的数据版本控制、地址空间的回收等操作之前需要对事务的处理状态进行记录,以方便后续的控制流程。进一步地,上述处理器1303还用于:在将上述事务的第二版本数据存储到存储设备的非易失性缓存过程中,记录各事务对应的数据的处理状态,上述处理状态包括:空闲、活跃、已提交、中止以及已更新映射。
[0172]在发生故障等情况下,本发明实施例需要对事务的数据进行恢复,本发明实施例还给出了基于映射表的恢复方式,具体如下:可选地,上述处理器1303用于:若需要对上述事务进行恢复,则获取上述第一版本数据包括:若需要对上述事务进行恢复,则获取非易失性缓存中上述事务的处理状态;若上述事务的处理状态为已提交并且未更新映射,则将上述第二版本数据作为第一版本数据,并更新第一版本数据的逻辑地址与物理地址之间的映身寸关系。
[0173]以上方案仅需要更新映射表,就可以灵活控制软件可见的数据,不需要重复写入数据,减少同步刷入次数,同时可以降低事务元数据(记录事务的状态和数据页面的数据信息)管理
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1