一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种全闪存储系统的恢复方法及相关装置与流程

2022-11-09 22:37:48 来源:中国专利 TAG:


1.本技术涉及存储技术领域,特别涉及一种全闪存储系统的恢复方法;还涉及一种全闪存储系统的恢复装置、设备以及计算机可读存储介质。


背景技术:

2.元数据是指描述数据的数据。在全闪存储系统中,元数据管理至关重要。元数据管理主要管理l-p映射、p-l映射等。由于涉及到大量且高并发、短时延的数据访问,全闪存储系统中元数据通常使用树的数据结构来组织。由于内存容量有限,大量的元数据管理需要固化保存,因此涉及到刷盘和盘上元数据空间分配。当存在掉电时非易失性内存丢失的软硬件故障,会导致存储系统节点故障,进而导致全闪存储系统不可用,需要修复才能继续处理业务。全闪存储系统的修复时间的长短决定客户业务中断的时间,全闪存储系统的修复时间的长短也反应了整个存储系统的可用性,可靠性和安全性。
3.因此,如何缩短修复时间,提高整个存储系统的可用性、可靠性以及安全性已成为本领域技术人员亟待解决的技术问题。


技术实现要素:

4.本技术的目的是提供一种全闪存储系统的恢复方法,能够实现全闪存储系统掉电故障后快速恢复,缩短修复时间,提高整个存储系统的可用性、可靠性以及安全性。本技术的另一个目的是提供一种全闪存储系统的恢复装置、设备以及计算机可读存储介质,均具有上述技术效果。
5.为解决上述技术问题,本技术提供了一种全闪存储系统的恢复方法,包括:当逻辑卷的元数据clean时,标记所述逻辑卷的元数据的状态为clean状态;当全闪存储系统恢复上电后,读取所述逻辑卷的元数据的状态;若所述逻辑卷的元数据为所述clean状态,则恢复上线。
6.可选的,所述当逻辑卷的元数据clean时,标记所述逻辑卷的元数据的状态为clean状态包括:当在预设定时周期内,所述逻辑卷没有io下发且所述逻辑卷的元数据下刷完成时,标记所述逻辑卷的元数据的状态为clean状态。
7.可选的,所述当在预设定时周期内,所述逻辑卷没有io下发且所述逻辑卷的元数据下刷完成时,标记所述逻辑卷的元数据的状态为clean状态包括:启动闲时下刷任务,并判断逻辑卷的元数据是否下刷完成;若逻辑卷的元数据下刷完成,则发起元数据的状态变clean的请求,以使状态机控制端触发状态机运行,发起变clean任务;执行所述变clean任务,标记所述逻辑卷的元数据的状态为clean状态。
8.可选的,所述标记所述逻辑卷的元数据的状态为clean状态包括:在所述逻辑卷中标记所述逻辑卷的元数据的状态为clean状态。
9.可选的,所述在所述逻辑卷中标记所述逻辑卷的元数据的状态为clean状态包括:在所述逻辑卷的头部的超级区块中标记所述逻辑卷的元数据的状态为clean状态。
10.可选的,还包括:当所述逻辑卷的元数据clean时,在所述逻辑卷的头部的超级区块中写入所述元数据所在树结构的根节点地址。
11.可选的,所述在所述逻辑卷的头部的超级区块中写入所述元数据所在树结构的根节点地址包括:在所述逻辑卷的头部的超级区块中写入所述元数据所在b 树的根节点地址。
12.可选的,还包括:读取所述根节点地址;根据所述根节点地址访问所述逻辑卷的正向元数据。
13.可选的,还包括:当逻辑卷的元数据dirty时,标记所述逻辑卷的元数据的状态为dirty状态。
14.可选的,所述当逻辑卷的元数据dirty时,标记所述逻辑卷的元数据的状态为dirty状态包括:当所述逻辑卷有io下发时,判断所述逻辑卷的元数据的状态是否为clean状态;若所述逻辑卷的元数据的状态为clean状态,则发起元数据的状态变dirty的请求,以使状态机控制端触发状态机运行,发起变dirty任务;执行所述变dirty任务,标记所述逻辑卷的元数据的状态为dirty状态。
15.可选的,还包括:若所述逻辑卷的元数据的状态为所述dirty状态,则重构正向元数据,并在重构所述正向元数据后,恢复上线。
16.可选的,所述重构正向元数据包括:读取所述逻辑卷在物理磁片的逻辑划分空间,并通过反向元数据重构所述正向元数据。
17.为解决上述技术问题,本技术还提供了一种全闪存储系统的恢复装置,包括:状态标记模块,用于当逻辑卷的元数据clean时,标记所述逻辑卷的元数据为clean状态;状态读取模块,用于当全闪存储系统恢复上电后,读取所述逻辑卷的元数据的状态;恢复上线模块,用于若所述逻辑卷的元数据的状态为所述clean状态,则恢复上线。
18.为解决上述技术问题,本技术还提供了一种全闪存储系统的恢复设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上任一项所述的全闪存储系统的恢复方法的步骤。
19.为解决上述技术问题,本技术还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的
全闪存储系统的恢复方法的步骤。
20.本技术所提供的全闪存储系统的恢复方法,包括:当逻辑卷的元数据clean时,标记所述逻辑卷的元数据的状态为clean状态;当全闪存储系统恢复上电后,读取所述逻辑卷的元数据的状态;若所述逻辑卷的元数据为所述clean状态,则恢复上线。
21.可见,本技术所提供的全闪存储系统的恢复方法,在逻辑卷的元数据clean时,会标记元数据的状态为clean状态,后续全闪存存储系统发生掉电故障并恢复上电后,如果逻辑卷的元数据的状态为clean状态,则会直接恢复上线,而不需要重构正向元数据,从而能够实现全闪存储系统掉电故障后快速恢复,缩短修复时间,提高整个存储系统的可用性、可靠性以及安全性。
22.本技术所提供的全闪存储系统的恢复装置、设备以及计算机可读存储介质均具有上述技术效果。
附图说明
23.为了更清楚地说明本技术实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1为本技术实施例所提供的一种全闪存储系统的恢复方法的流程示意图;图2为本技术实施例所提供的一种to_clean流程图;图3为本技术实施例所提供的一种to_dirty流程图;图4为本技术实施例所提供的一种全闪存储系统的恢复装置的示意图;图5为本技术实施例所提供的一种全闪存储系统的恢复设备的示意图。
具体实施方式
25.本技术的核心是提供一种全闪存储系统的恢复方法,能够实现全闪存储系统掉电故障后快速恢复,缩短修复时间,提高整个存储系统的可用性、可靠性以及安全性。本技术的另一个核心是提供一种全闪存储系统的恢复装置、设备以及计算机可读存储介质,均具有上述技术效果。
26.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
27.传统技术方案中,在全闪存储系统正常时不会标记逻辑卷的元数据的状态,在全闪存储系统发生掉电故障时,无论掉电故障前逻辑卷的元数据的状态如何,均会在恢复上电后首先重构正向元数据,由此导致恢复速度慢。为解决传统技术方案所存在的上述缺陷,本技术提供了一种全闪存储系统的恢复方法,能够实现全闪存储系统掉电故障后快速恢复,缩短修复时间。
28.请参考图1,图1为本技术实施例所提供的一种全闪存储系统的恢复方法的流程示意图,参考图1所示,该方法包括:
s101:当逻辑卷的元数据clean时,标记所述逻辑卷的元数据的状态为clean状态;clean是指逻辑卷的元数据下刷完成。如果元数据没有下刷完成,即在内存中存在没有下刷的元数据,则逻辑卷的元数据为dirty。全闪存储系统正常时,如果逻辑卷的元数据为clean,则此时会标记所述逻辑卷的元数据的状态为clean状态。
29.在一些实施例中,所述当逻辑卷的元数据clean时,标记所述逻辑卷的元数据的状态为clean状态可以包括:当在预设定时周期内,所述逻辑卷没有io下发且所述逻辑卷的元数据下刷完成时,标记所述逻辑卷的元数据的状态该为clean状态。
30.本实施例中,逻辑卷的元数据clean的条件为在预设定时周期内,所述逻辑卷没有io下发且所述逻辑卷的元数据下刷完成。如果满足上述条件,那么逻辑卷的元数据clean。否则,逻辑卷的元数据dirty。
31.当逻辑卷的元数据clean时,每当有新的io写入时,就会产生新的lp映射关系,逻辑卷的元数据就会变为dirty。当逻辑卷在一个预设定时周期内没有io下发且dirty的元数据全部下刷后,逻辑卷的元数据变为clean。如果逻辑卷的元数据clean,则标记逻辑卷的元数据的状态为clean状态。后续如果全闪存储系统发生掉电故障,在全闪存储系统恢复上电后,通过读取标记就可以获知掉电故障前逻辑卷的元数据的状态是否为clean。
32.需要说明的是,需要确保所标记的元数据的clean状态在全闪存储系统掉电恢复后不会丢失,可以正常获取到所标记的元数据的clean状态。在此前提下,标记逻辑卷的元数据的状态的方式可以差异性设置。例如,可以在逻辑卷自身标记逻辑卷的元数据为clean状态。也可以在逻辑卷之外的其他位置标记逻辑卷的元数据为clean状态。
33.为了更针对性的进行状态标记,以及便于读取逻辑卷的元数据的状态,在一些实施例中,所述标记所述逻辑卷的元数据的状态为clean状态包括:在所述逻辑卷中标记所述逻辑卷的元数据的状态为clean状态。
34.本实施例中,逻辑卷的元数据的clean状态标记在逻辑卷中。当需要读取逻辑卷的元数据的状态时,从逻辑卷中读取即可。
35.其中,所述在所述逻辑卷中标记所述逻辑卷的元数据的状态为clean状态可以包括:在所述逻辑卷的头部的超级区块中标记所述逻辑卷的元数据的状态为clean状态。
36.本实施例中用于标记逻辑卷的元数据的clean状态的区域为逻辑卷的头部的superblock即超级区块。如果逻辑卷的元数据clean,则在逻辑卷的superblock标记所述逻辑卷的元数据的状态为clean状态。
37.此外,所述当在预设定时周期内,所述逻辑卷没有io下发且所述逻辑卷的元数据下刷完成时,标记所述逻辑卷的元数据的状态为clean状态可以包括:启动闲时下刷任务,并判断逻辑卷的元数据是否下刷完成;若逻辑卷的元数据下刷完成,则发起元数据的状态变clean的请求,以使状态机控制端触发状态机运行,发起变clean任务;执行所述变clean任务,标记所述逻辑卷的元数据的状态为clean状态。
38.参考图2所示的to_clean流程,客户端的定时器设置为2分钟(也可以设置为其他时长),启动闲时下刷任务,并判断逻辑卷的元数据是否下刷完成。如果逻辑卷的元数据下
刷完成,则客户端请求元数据的状态变为clean。状态机控制端触发状态机运行,发起to_clean任务即发起变为clean任务。进而客户端执行任务,在逻辑卷的spuerblock标记逻辑卷的元数据的状态为clean状态。
39.s102:当全闪存储系统恢复上电后,读取所述逻辑卷的元数据的状态;s103:若所述逻辑卷的元数据的状态为所述clean状态,则访问所述逻辑卷的正向元数据。
40.当全闪存储系统发生掉电故障并恢复上电后,此时首先读取逻辑卷的元数据的状态。在逻辑卷的元数据的状态标记在逻辑卷的superblock的情况下,首先读取逻辑卷的superblock中标记逻辑卷的元数据的状态。如果读取的逻辑卷的元数据的状态为clean状态,表明硬盘或磁盘中有正向元数据,可以直接将正向元数据从硬盘或磁盘中读取到内存中,此时可以直接恢复上线,而不需要重构正向元数据。正向元数据是指逻辑块地址到物理块地址的映射的元数据。
41.在一些实施例中,还可以包括:当所述逻辑卷的元数据clean时,在所述逻辑卷的头部的超级区块中写入所述元数据所在树结构的根节点地址。
42.本实施例中,逻辑卷的元数据使用树结构来组织。当逻辑卷的元数据的状态为clean状态时,每当有新的io写入时,就会在树中插入一个新的lp映射关系即logical block address到physical block address的映射关系,就会使树至少一个节点变dirty,此时整棵树为dirty状态。当逻辑卷在一个预设定时周期内没有下发io且dirty的元数据全部下刷后,就会整棵树为clean状态,这时可在逻辑卷的superblock标记逻辑卷的元数据为clean状态,并同时写入树的根节点地址。
43.其中,所述在所述逻辑卷的头部的超级区块中写入所述元数据所在树结构的根节点地址包括:在所述逻辑卷的头部的超级区块中写入所述元数据所在b 树的根节点地址。
44.b 树索引具有o(logn)的查找时间复杂度和75%的空间使用率(非叶子节点作为索引节点,不作为保存数据的节点)。b 树查找是通过根节点然后逐级往下遍历直到叶子节点,因此非叶子节点是查询过程中重要的节点,是最常访问的节点,而且层次越低的节点访问频率越高,因此尽量将层次越低的非叶子节点保留在内存中。b 树具有更好的搜索效率,更适合组织元数据对象,因此本实施例中树具体采用b 树,以支持全闪存储系统内部元数据对象的有效查找。
45.当逻辑卷的元数据为clean状态时,每当有新的io写入时,就会在b 树中插入一个新的lp映射关系,就会使b 树至少一个节点变dirty,此时整棵b 树为dirty状态。当逻辑卷在一个定时周期内没有下发io且dirty的元数据全部下刷后,就会整棵b 树为clean状态,这时可在逻辑卷的superblock标记逻辑卷的元数据为clean状态,并同时写入b 树的根节点地址。
46.在以树结构组织元数据并标记所述元数据所在树结构的根节点地址的基础上,还可以包括:读取所述根节点地址;根据所述根节点地址访问所述逻辑卷的正向元数据。
47.全闪存储系统恢复上电后,当逻辑卷的元数据为clean状态时,可以直接恢复上线,并可以根据根节点地址访问逻辑卷的正向元数据。
48.进一步,在一些实施例中,还可以包括:当逻辑卷的元数据dirty时,标记所述逻辑卷的元数据的状态为dirty状态。
49.本实施例中,当逻辑卷的元数据clean时,会标记逻辑卷的元数据的状态为clean状态。当逻辑卷的元数据dirty时,还会标记逻辑卷的元数据的状态为dirty状态。当逻辑卷的元数据的状态为clean时,每当有新的io写入时,就会产生新的lp映射关系,逻辑卷的元数据的状态就会变为dirty。如果逻辑卷的元数据dirty,则会标记逻辑卷的元数据为dirty状态。后续如果全闪存储系统发生掉电故障,在全闪存储系统恢复上电后,通过读取标记就可以获知掉电故障前逻辑卷的元数据的状态是否为dirty。
50.同样可以在逻辑卷自身标记逻辑卷的元数据为dirty状态。也可以在逻辑卷之外的其他位置标记逻辑卷的元数据为dirty状态。
51.为了更针对性的进行状态标记,以及便于读取逻辑卷的元数据的状态,所述标记所述逻辑卷的元数据的状态为dirty状态可以包括:在所述逻辑卷中标记所述逻辑卷的元数据的状态为dirty状态。
52.本实施例中,逻辑卷的元数据的dirty状态同样标记在逻辑卷中。当需要读取逻辑卷的元数据的状态时,读取逻辑卷即可获知逻辑卷的元数据为clean状态还是dirty状态。
53.其中,所述在所述逻辑卷中标记所述逻辑卷的元数据的状态为dirty状态可以包括:在所述逻辑卷的头部的超级区块中标记所述逻辑卷的元数据的状态为dirty状态。
54.本实施例中用于标记逻辑卷的元数据的dirty状态的区域为在逻辑卷的头部的superblock即超级区块。如果逻辑卷的元数据dirty,则在逻辑卷的superblock标记所述逻辑卷的元数据的状态为dirty状态。
55.此外,所述当逻辑卷的元数据dirty时,标记所述逻辑卷的元数据的状态为dirty状态可以包括:当所述逻辑卷有io下发时,判断所述逻辑卷的元数据的状态是否为clean状态;若所述逻辑卷的元数据的状态为clean状态,则发起元数据的状态变dirty的请求,以使状态机控制端触发状态机运行,发起变dirty任务;执行所述变dirty任务,标记所述逻辑卷的元数据的状态为dirty状态。
56.参考图3所示的to_dirty流程,客户端判断逻辑卷的元数据是否为clean状态。如果逻辑卷的元数据是clean状态,则客户端请求元数据的状态变为dirty。状态机控制端触发状态机运行,发起客户端to_clean任务即发起变为dirty任务。客户端执行任务,在逻辑卷的superblock标记dirty状态。
57.除了可以在逻辑卷的头部的superblock标记逻辑卷的元数据的状态以及根节点地址外,还可以在逻辑卷的头部的superblock标记grainsize等信息。
58.进一步,在一些实施例中,还可以包括:若所述逻辑卷的元数据的状态为所述dirty状态,则重构所述正向元数据。
59.在标记逻辑卷的元数据为dirty状态的情况下。如果读取标记的逻辑卷的元数据的状态时,读取到的逻辑卷的元数据的状态为dirty状态,则此时需首先重构正向元数据,进而在重构正向元数据后恢复上线。
60.其中,所述重构正向元数据可以包括:读取所述逻辑卷在物理磁片的逻辑划分空间,并通过反向元数据重构所述正向元数据。
61.反向元数据是指物理块地址到逻辑块地址的映射的元数据。全闪存储系统恢复上电后,在逻辑卷的元数据的状态为dirty状态的情况下,首先读取逻辑卷在物理磁盘的逻辑划分空间,通过反向元数据重构逻辑卷的正向元数据。对于通过反向元数据重构正向元数据的实现过程,本技术在此不再赘述,可以参照现有技术。
62.以下通过一个具体的实施例阐述全闪存储系统掉电故障后的恢复过程:当逻辑卷的元数据为clean状态时,每当有新的io写入时,在b 树中插入一个新的lp映射关系,使b 树至少一个节点变dirty,此时整棵b 树为dirty状态,这时在逻辑卷的superblock标记dirty状态;当逻辑卷在一个定时周期内没有io下发且dirty的元数据全部下刷后整棵b 树为clean状态,这时在逻辑卷的superblock标记clean状态且同时写入b 树的根节点地址。
63.在全闪存储系统发生掉电非易失性内存丢失等故障场景下,全闪存储系统上电恢复时首先检查superblock标记的为clean状态还是dirty状态。
64.如果是clean状态,可以立即恢复上线且获取到根节点地址,并通过该根节点地址访问该逻辑卷的所有正向元数据。
65.如果是dirty状态,首先需要读取该逻辑卷在物理磁盘的逻辑划分空间,通过反向元数据重建卷的正向元数据,进而恢复上线。
66.上述实施例所提供的恢复方法,通过标记元数据的状态并根据元数据的状态进行恢复上线,可以实现一些场景下的全闪存储系统的快速恢复。例如,系统非计划内掉电;系统因软件故障导致集群状态不正常、不可用;系统软件故障导致非易失性内存未能保存;系统软件故障导致非易失性内存丢失;系统硬件故障导致非易失性内存丢失等场景下的全闪存储系统的快速恢复。
67.综上所述,本技术所提供的全闪存储系统的恢复方法,包括:当逻辑卷的元数据clean时,标记所述逻辑卷的元数据的状态为clean状态;当全闪存储系统恢复上电后,读取所述逻辑卷的元数据的状态;若所述逻辑卷的元数据为所述clean状态,则恢复上线。可见,本技术所提供的全闪存储系统的恢复方法,在逻辑卷的元数据clean时,会标记元数据为clean状态,后续全闪存存储系统发生掉电故障并恢复上电后,如果逻辑卷的元数据的状态为clean状态,则会直接恢复上线,而不需要重构正向元数据,从而能够实现全闪存储系统掉电故障后快速恢复,缩短修复时间,提高整个存储系统的可用性、可靠性以及安全性。
68.本技术还提供了一种全闪存储系统的恢复装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图4,图4为本技术实施例所提供的一种全闪存储系统的恢复装置的示意图,结合图4所示,该装置包括:状态标记模块10,用于当逻辑卷的元数据clean时,标记所述逻辑卷的元数据为clean状态;状态读取模块20,用于当全闪存储系统恢复上电后,读取所述逻辑卷的元数据的状态;恢复上线模块30,用于若所述逻辑卷的元数据的状态为所述clean状态,则恢复上
线。
69.全闪存储系统正常时,当逻辑卷的元数据clean时,标记逻辑卷的元数据的状态为clean状态。当全闪存储系统发生掉电故障并恢复上电后,此时首先读取逻辑卷的元数据的状态。如果读取的逻辑卷的元数据的状态为clean状态,则此时直接恢复上线,而不需要重构正向元数据。
70.在上述实施例的基础上,作为一种具体的实施方式,所述状态标记模块10具体用于:当在预设定时周期内,所述逻辑卷没有io下发且所述逻辑卷的元数据下刷完成时,标记所述逻辑卷的元数据的状态为clean状态。
71.本实施例中,逻辑卷的元数据clean的条件为在预设定时周期内,所述逻辑卷没有io下发且所述逻辑卷的元数据下刷完成。如果满足上述条件,那么逻辑卷的元数据clean。否则,逻辑卷的元数据dirty。
72.当逻辑卷的元数据clean时,每当有新的io写入时,就会产生新的lp映射关系,逻辑卷的元数据就会变为dirty。当逻辑卷在一个预设定时周期内没有io下发且dirty的元数据全部下刷后,逻辑卷的元数据就会变为clean。如果逻辑卷的元数据clean,则标记逻辑卷的元数据的状态为clean状态。后续如果全闪存储系统发生掉电故障,在全闪存储系统恢复上电后,通过读取标记就可以获知掉电故障前逻辑卷的元数据是否clean。
73.在上述实施例的基础上,作为一种具体的实施方式,所述状态标记模块10具体用于:在所述逻辑卷中标记所述逻辑卷的元数据的状态为clean状态。
74.为了更针对性的进行状态标记,以及便于读取逻辑卷的元数据的状态, 本实施例中,逻辑卷的元数据的clean状态标记在逻辑卷中。当需要读取逻辑卷的元数据的状态时,从逻辑卷中读取即可。
75.在上述实施例的基础上,作为一种具体的实施方式,所述状态标记模块10具体用于:在所述逻辑卷的头部的超级区块中标记所述逻辑卷的元数据的状态为clean状态。
76.本实施例中用于标记逻辑卷的元数据的clean状态的区域为逻辑卷的头部的superblock即超级区块。如果逻辑卷的元数据clean,则在逻辑卷的superblock标记所述逻辑卷的元数据的状态为clean状态。
77.在上述实施例的基础上,作为一种具体的实施方式,所述状态标记模块10具体用于:启动闲时下刷任务,并判断逻辑卷的元数据是否下刷完成;若逻辑卷的元数据下刷完成,则发起元数据的状态变clean的请求,以使状态机控制端触发状态机运行,发起变clean任务;执行所述变clean任务,标记所述逻辑卷的元数据的状态为clean状态。
78.在上述实施例的基础上,作为一种具体的实施方式,还包括:地址标记模块,当所述逻辑卷的元数据clean时,在所述逻辑卷的头部的超级区块中写入所述元数据所在树结构的根节点地址。
79.本实施例中,逻辑卷的元数据使用树结构来组织。当逻辑卷的元数据clean时,每当有新的io写入时,就会在树中插入一个新的lp映射关系即logical block address到physical block address的映射关系,就会使树至少一个节点变dirty,此时整棵树为dirty状态。当逻辑卷在一个预设定时周期内没有下发io且dirty的元数据全部下刷后,就会整棵树为clean状态,这时可在逻辑卷的superblock标记逻辑卷的元数据为clean状态,并同时写入树的根节点地址。
80.在上述实施例的基础上,作为一种具体的实施方式,所述地址标记模块具体用于:在所述逻辑卷的头部的超级区块中写入所述元数据所在b 树的根节点地址。
81.b 树索引具有o(logn)的查找时间复杂度和75%的空间使用率(非叶子节点作为索引节点,不作为保存数据的节点)。b 树查找是通过根节点然后逐级往下遍历直到叶子节点,因此非叶子节点是查询过程中重要的节点,是最常访问的节点,而且层次越低的节点访问频率越高,因此尽量将层次越低的非叶子节点保留在内存中。b 树具有更好的搜索效率,更适合组织元数据对象,因此本实施例中树具体采用b 树,以支持全闪存储系统内部元数据对象的有效查找。
82.当逻辑卷的元数据为clean状态时,每当有新的io写入时,就会在b 树中插入一个新的lp映射关系,就会使b 树至少一个节点变dirty,此时整棵b 树为dirty状态。当逻辑卷在一个定时周期内没有下发io且dirty的元数据全部下刷后,就会整棵b 树为clean状态,这时可在逻辑卷的superblock标记逻辑卷的元数据为clean状态,并同时写入b 树的根节点地址。
83.在上述实施例的基础上,作为一种具体的实施方式,还包括:地址读取模块,用于读取所述根节点地址;元数据访问模块,用于根据所述根节点地址访问所述逻辑卷的正向元数据。
84.全闪存储系统恢复上电后,当逻辑卷的元数据为clean状态时,可以直接恢复上线,并可以根据根节点地址访问逻辑卷的正向元数据。
85.在上述实施例的基础上,作为一种具体的实施方式,所述状态标记模块10还用于:当逻辑卷的元数据dirty时,标记所述逻辑卷的元数据的状态为dirty状态。
86.本实施例中,当逻辑卷的元数据clean时,会标记逻辑卷的元数据的状态为clean状态。当逻辑卷的元数据dirty时,还会标记逻辑卷的元数据的状态为dirty状态。当逻辑卷的元数据clean时,每当有新的io写入时,就会产生新的lp映射关系,逻辑卷的元数据就会变为dirty。如果逻辑卷的元数据dirty,则会标记逻辑卷的元数据为dirty状态。后续如果全闪存储系统发生掉电故障,在全闪存储系统恢复上电后,通过读取标记就可以获知掉电故障前逻辑卷的元数据的状态是否为dirty。
87.在上述实施例的基础上,作为一种具体的实施方式,所述状态标记模块10具体用于:在所述逻辑卷中标记所述逻辑卷的元数据的状态为dirty状态。
88.本实施例中,逻辑卷的元数据的dirty状态同样标记在逻辑卷中。当需要读取逻辑卷的元数据的状态时,读取逻辑卷即可获知逻辑卷的元数据为clean状态还是dirty状态。
89.在上述实施例的基础上,作为一种具体的实施方式,所述状态标记模块10具体用于:
在所述逻辑卷的头部的超级区块中标记所述逻辑卷的元数据的状态为dirty状态。
90.本实施例中用于标记逻辑卷的元数据的dirty状态的区域为在逻辑卷的头部的superblock即超级区块。如果逻辑卷的元数据的状态为dirty,则在逻辑卷的superblock标记所述逻辑卷的元数据的状态为dirty状态。
91.在上述实施例的基础上,作为一种具体的实施方式,还包括:元数据重构模块,用于若所述逻辑卷的元数据的状态为所述dirty状态,则重构正向元数据,并在重构所述正向元数据后,恢复上线。
92.在标记逻辑卷的元数据为dirty状态的情况下。如果读取标记的逻辑卷的元数据的状态时,读取到的逻辑卷的元数据的状态为dirty状态,则此时需首先重构正向元数据,进而在重构正向元数据后恢复上线。
93.在上述实施例的基础上,作为一种具体的实施方式,所述元数据重构模块具体用于:读取所述逻辑卷在物理磁片的逻辑划分空间,并通过反向元数据重构所述正向元数据。
94.反向元数据是指物理块地址到逻辑块地址的映射的元数据。全闪存储系统恢复上电后,在逻辑卷的元数据的状态为dirty状态的情况下,首先读取逻辑卷在物理磁盘的逻辑划分空间,通过反向元数据重构逻辑卷的正向元数据。对于通过反向元数据重构正向元数据的实现过程,本技术在此不再赘述,可以参照现有技术。
95.本技术所提供的全闪存储系统的恢复装置,在逻辑卷的元数据clean时,会标记元数据的状态为clean状态,后续全闪存存储系统发生掉电故障并恢复上电后,如果逻辑卷的元数据的状态为clean状态,则会直接恢复上线,而不需要重构正向元数据,从而能够实现全闪存储系统掉电故障后快速恢复,缩短修复时间,提高整个存储系统的可用性、可靠性以及安全性。
96.本技术还提供了一种全闪存储系统的恢复设备,参考图5所示,该设备包括存储器1和处理器2。
97.存储器1,用于存储计算机程序;处理器2,用于执行计算机程序实现如下的步骤:当逻辑卷的元数据clean时,标记所述逻辑卷的元数据的状态为clean状态;当全闪存储系统恢复上电后,读取所述逻辑卷的元数据的状态;若所述逻辑卷的元数据为所述clean状态,则访问所述逻辑卷的正向元数据。
98.本技术所提供的全闪存储系统的恢复设备,在逻辑卷的元数据clean时,会标记元数据的状态为clean状态,后续全闪存存储系统发生掉电故障并恢复上电后,如果逻辑卷的元数据的状态为clean状态,则会直接恢复上线,而不需要重构正向元数据,从而能够实现全闪存储系统掉电故障后快速恢复,缩短修复时间,提高整个存储系统的可用性、可靠性以及安全性。
99.对于本技术所提供的设备的介绍请参照上述方法实施例,本技术在此不做赘述。
100.本技术还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:
当逻辑卷的元数据clean时,标记所述逻辑卷的元数据的状态为clean状态;当全闪存储系统恢复上电后,读取所述逻辑卷的元数据的状态;若所述逻辑卷的元数据为所述clean状态,则访问所述逻辑卷的正向元数据。
101.该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory ,rom)、随机存取存储器(random access memory ,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
102.本技术所提供的计算机可读存储介质,在逻辑卷的元数据的状态为clean时,会标记元数据为clean状态,后续全闪存存储系统发生掉电故障并恢复上电后,如果逻辑卷的元数据的状态为clean状态,则会直接恢复上线,而不需要重构正向元数据,从而能够实现全闪存储系统掉电故障后快速恢复,缩短修复时间,提高整个存储系统的可用性、可靠性以及安全性。
103.对于本技术所提供的计算机可读存储介质的介绍请参照上述方法实施例,本技术在此不做赘述。
104.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
105.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
106.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
107.以上对本技术所提供的全闪存储系统的恢复方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献