掌桥专利:专业的专利平台
掌桥专利
首页

I/O驱动的数据恢复方法、系统及装置

文献发布时间:2024-04-18 19:58:21


I/O驱动的数据恢复方法、系统及装置

技术领域

本发明实施例涉及数据恢复技术领域,尤其涉及一种I/O驱动的数据恢复方法、系统及装置。

背景技术

随着信息技术的发展,数据已成为企业和个人最重要的资产之一。而数据在存储、传输和处理过程中,往往会遇到故障或错误,例如硬盘故障、网络中断等,导致数据的丢失和损坏,给企业和个人造成重大的损失。

通常软件定义存储(Software Defined Storage,SDS)基于副本机制构建数据恢复流程,可以应对常见的磁盘故障(拔盘、磁盘卸载、磁盘挂载等)、节点故障(节点断电、节点重启、节点断网等)。通过故障触发恢复任务,由任务流生成大量数据恢复请求,提交至恢复队列,然后从其他可用数据对象副本进行数据恢复,达到数据高可用的目的。并且,一般情况下SDS对I/O是强一致性要求,只有所有副本均完成写入操作时,I/O才会完成返回。因此当分布式存储集群出现故障时,往往需要等待丢失或错误副本恢复完成后,I/O才能完成写入操作。而恢复操作依赖于故障产生任务中的数据恢复请求逐批处理,该处理方式采用先进先出方式批量处理,当需要恢复大量的数据对象时耗时会明显增加。这就会导致I/O出现长时间的中断,引发上层业务问题。

发明内容

鉴于此,为解决上述技术问题或部分技术问题,本发明实施例提供一种I/O驱动的数据恢复方法、系统及装置。

第一方面,本发明实施例提供一种I/O驱动的数据恢复方法,包括:

当I/O访问数据块出现异常时,获取I/O异常信息;

基于所述I/O异常信息识别出待恢复的数据块;

基于待恢复的数据块所在存储磁盘的状态,确定数据恢复类型;

基于所述数据恢复类型生成数据恢复请求;

将所述数据恢复请求提交到预设的第一优先级队列中,并基于所述数据恢复请求完成数据恢复。

在一个可能的实施方式中,所述方法还包括:

基于对所述数据块的内存信息访问结果确定I/O访问数据块是否出现异常,其中,所述内存信息的访问结果至少包括内存信息是否存在、数据块所在磁盘状态是否正常;

和/或基于对数据块进行读写操作时磁盘返回的读写结果确定I/O访问数据块是否出现异常,其中,所述磁盘返回的读写结果至少包括I/O结果信息、数据块是否错误信息。

在一个可能的实施方式中,所述方法还包括:

基于所述I/O异常信息的信息来源,识别出待恢复的数据块。

在一个可能的实施方式中,所述方法还包括:

预先设置本地数据恢复类型和远端数据恢复类型;

当所述待恢复的数据块所在存储磁盘的状态为卸载和/或挂载时,将所述存储磁盘的状态更新为等待状态;

当所述存储磁盘的状态为等待状态时,判定所述数据恢复类型为本地数据恢复类型。

在一个可能的实施方式中,所述方法还包括:

当所述待恢复的数据块所在存储磁盘中的数据无法访问时,判定所述数据恢复类型为远端数据恢复类型。

在一个可能的实施方式中,所述方法还包括:

将所述待恢复的数据块的ID信息加入预设的驱动恢复列表中。

在一个可能的实施方式中,所述方法还包括:

预先设置第一优先级队列和第二优先级队列,其中,所述第一优先级队列的优先级高于所述第二优先级队列;

将I/O驱动产生的数据恢复请求提交到所述第一优先级队列中,并根据数据恢复请求中对应的数据恢复类型进行数据恢复处理。

在一个可能的实施方式中,所述方法还包括:

若判定所述数据恢复类型为本地数据恢复类型,则启动本地数据恢复请求处理流程;

获取待恢复的数据块所在存储磁盘上的数据列表;

将所述数据列表中的数据逐个生成磁盘数据恢复请求;

在副本机制下,基于所述磁盘数据恢复请求读取远端副本节点中的目标数据;

将所述目标数据写入本地其他磁盘中。

在一个可能的实施方式中,所述方法还包括:

若判定所述数据恢复类型为远端数据恢复类型,则启动远端数据恢复请求处理流程;

在副本机制下,基于所述第一优先级队列中的数据恢复请求从远端副本所在节点中将目标数据恢复到本地磁盘中。

在一个可能的实施方式中,所述方法还包括:

在所述目标数据恢复过程中,将所述待恢复的数据块的状态更改为恢复状态;

在将目标数据恢复到本地后,将所述待恢复的数据块的状态更新为可用状态,以及将所述待恢复的数据块的ID信息从所述驱动恢复列表中删除。

在一个可能的实施方式中,所述方法还包括:

查询所述数据恢复请求对应的待恢复的数据块是否已经提交到所述第二优先级队列中;

若是,则将所述第二优先级队列中中的数据恢复请求移动至所述第一优先级队列中;

若否,则将所述数据恢复请求提交到所述第一优先级队列中。

在一个可能的实施方式中,所述方法还包括:

当所述第一优先级队列中存在未处理完成的数据恢复请求时,优先处理所述第一优先级队列中的数据恢复请求,在所述第一优先级队列中不存在数据恢复请求后继续处理所述第二优先级队列中的数据恢复请求。

在一个可能的实施方式中,所述方法还包括:

预先设置每种数据恢复类型对应的并发数据恢复请求数量的限制数量;

基于所述限制数量并发进行数据恢复请求处理。

在一个可能的实施方式中,所述方法还包括:

将数据对象预先定义为预设大小的数据块,所述数据块对应的数据块信息以内存形式维护在所述数据块所在的节点中,所述数据块信息至少包括数据块状态、数据块所在磁盘信息、数据块所在磁盘状态。

第二方面,本发明实施例提供一种I/O驱动的数据恢复系统,包括:

异常I/O识别模块、驱动恢复请求生成模块、恢复请求调度模块和I/O恢复模块;

所述异常I/O识别模块用于根据磁盘故障、节点故障特征,发现待恢复的数据块,以及基于待恢复的数据块所在存储磁盘的状态,确定数据恢复类型;

所述驱动恢复请求生成模块用于根据所述待恢复的数据块和数据恢复类型,生成数据恢复请求;

所述恢复请求调度模块用于将数据恢复请求分配到对应的优先级队列中;

所述I/O恢复模块用于基于所述优先级队列中的数据恢复请求对应的数据恢复类型完成数据恢复。

在一个可能的实施方式中,所述驱动恢复请求生成模块还用于建立驱动恢复列表;将生成的数据恢复请求对应的待恢复的数据块的ID信息加入所述驱动恢复列表中。

在一个可能的实施方式中,所述恢复请求调度模块还用于预先设置第一优先级队列和第二优先级队列,其中,所述第一优先级队列的优先级高于所述第二优先级队列;将I/O驱动产生的数据恢复请求提交到所述第一优先级队列中;当所述第一优先级队列中存在未处理完成的数据恢复请求时,控制所述I/O恢复模块优先处理所述第一优先级队列中的数据恢复请求,在所述第一优先级队列中不存在数据恢复请求后控制所述I/O恢复模块继续处理所述第二优先级队列中的数据恢复请求。

第三方面,本发明实施例提供一种I/O驱动的数据恢复装置,包括:

获取模块,用于当I/O访问数据块出现异常时,获取I/O异常信息;

识别模块,用于基于所述I/O异常信息识别出待恢复的数据块;

确定模块,用于基于待恢复的数据块所在存储磁盘的状态,确定数据恢复类型;

生成模块,用于基于所述数据恢复类型生成数据恢复请求;

恢复模块,用于将所述数据恢复请求提交到预设的第一优先级队列中,并基于所述数据恢复请求完成数据恢复。

第四方面,本发明实施例提供一种电子设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的I/O驱动的数据恢复程序,以实现上述第一方面中所述的I/O驱动的数据恢复方法。

第五方面,本发明实施例提供一种存储介质,包括:所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述第一方面中所述的I/O驱动的数据恢复方法。

本发明实施例提供的I/O驱动的数据恢复方案,通过当I/O访问数据块出现异常时,获取I/O异常信息;基于所述I/O异常信息识别出待恢复的数据块;基于待恢复的数据块所在存储磁盘的状态,确定数据恢复类型;基于所述数据恢复类型生成数据恢复请求;将所述数据恢复请求提交到预设的第一优先级队列中,并基于所述数据恢复请求完成数据恢复。相比于现有的数据恢复处理技术需要等待丢失或错误副本恢复完成后,I/O才能完成写入操作,导致I/O出现长时间的中断,引发上层业务问题的情况。由本方案,构建异常I/O识别方法,划分数据恢复类型,快速发现异常数据;根据数据恢复类型,驱动生成数据恢复请求,实现优先级队列机制,优先处理高优先级恢复请求,及时处理异常数据恢复;维护数据块状态、所在磁盘状态内存信息和全局驱动恢复列表,精细化I/O对异常数据块访问及驱动恢复管理,提升驱动恢复流程效能。

附图说明

图1为本发明实施例提供的一种I/O驱动的数据恢复方法的流程示意图;

图2为本发明实施例提供的另一种I/O驱动的数据恢复方法的流程示意图;

图3为本发明实施例提供的一种数据恢复类型判定流程图;

图4为本发明实施例提供的一种I/O驱动的数据恢复装置的结构示意图;

图5为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。

图1为本发明实施例提供的一种I/O驱动的数据恢复方法的流程示意图,如图1所示,该方法具体包括:

S11、当I/O访问数据块出现异常时,获取I/O异常信息。

本发明实施例中,根据常见的磁盘故障、节点故障特征,发现需要恢复的数据对象,依据I/O异常捕获确定恢复类型,判定流程如附图3所示。

首先,本发明实施例中声明的数据对象定义为预设大小(例如,4M)的数据块,数据块对应的数据块信息以内存形式维护在所述数据块所在的节点中,其中,数据块信息至少包括数据块状态、数据块所在磁盘信息、数据块所在磁盘状态。

进一步的,基于对数据块的内存信息访问结果确定I/O访问数据块是否出现异常,其中,内存信息的访问结果至少包括内存信息是否存在、数据块所在磁盘状态是否正常;或者,基于对数据块进行读写操作时磁盘返回的读写结果确定I/O访问数据块是否出现异常,其中,磁盘返回的读写结果至少包括I/O结果信息、数据块是否错误信息。

S12、基于所述I/O异常信息识别出待恢复的数据块。

当I/O访问该数据块出现异常时,通过捕获I/O异常信息,识别出待恢复的数据块。异常信息来源于两处,一是对数据块内存信息访问时的判断,例如数据块内存信息不存在、数据块所在磁盘状态不正常;二是对数据块进行读写操作由磁盘设备OSD返回的异常,例如I/O错误信息EIO、坏块错误信息。

S13、基于待恢复的数据块所在存储磁盘的状态,确定数据恢复类型。

识别出待恢复的数据块后,依据数据块所在磁盘OSD状态区分数据恢复类型。本发明实施例中将数据恢复类型分为两种,一种是本地恢复类型,该类型主要是为了应对主动运维操作,例如磁盘的卸载和挂载,当磁盘卸载/挂载时,将触发节点内部的数据均衡,本地节点会将旧盘上的数据均衡至新挂载盘或者卸载盘上的数据均衡至其他盘。数据均衡指节点内部数据的迁移,例如卸载磁盘时会将待卸载磁盘的数据均衡的迁移至本节点其他磁盘上。正常的数据分布下,节点内部的数据会均分在所有磁盘上,当挂载磁盘后,会重新计算每个磁盘上的数据大小,然后将其他盘上的数据迁移至新挂载盘。例如本节点共100G数据,5个数据盘,正常分布下每个磁盘上有20G数据,这时卸载一个磁盘,剩余4个数据盘,每个数据盘就会增长到25G数据,这个数据迁移的过程为数据均衡。本过程中会将磁盘信息更新为WAITING状态(等待状态),当I/O访问到的数据块所在磁盘OSD状态为WAITING时,就会判定为本地恢复类型;另一种是远端恢复类型,主要是为了应对本地数据不存在、不可用或者损坏的场景下,需要从其他副本所在节点恢复到本节点上,例如拔盘、断电断网等故障场景。

S14、基于所述数据恢复类型生成数据恢复请求。

根据识别判定出的待恢复的数据块和数据恢复类型信息,生成数据恢复请求。建立全局驱动恢复列表,生成数据恢复请求后将该数据块信息加入该列表中,防止重复生成数据恢复请求。

具体的,生成数据恢复请求后,关键在于将数据块的ID信息加入驱动恢复列表。因为对同一数据块可能会并发多个I/O访问,若数据块出现问题则多个I/O均会被识别为需要对同一个数据块进行恢复。因此,建立驱动恢复列表通过记录已生成恢复请求的数据块ID可防止重复恢复同一个数据块。

进一步的,预先设置第一优先级队列(高优先级队列)和第二优先级队列(低优先级队列),其中,第一优先级队列的优先级高于所述第二优先级队列;将I/O驱动产生的数据恢复请求提交到第一优先级队列中,并根据数据恢复请求中对应的数据恢复类型进行数据恢复处理。

具体的,I/O驱动产生的恢复请求提交至高优先级队列优先处理,然后根据恢复请求中对应的恢复类型进行数据恢复处理。

需要说明的是,故障触发的任务流同样会生成数据恢复请求,该请求以分批方式批量提交至低优先级队列。当高优先级队列中存在未处理完成请求时,不会处理低优先级队列,优先遍历高优先级队列中的请求,达到快速处理驱动恢复数据的目的。本发明实施例中的故障分为磁盘故障和节点故障,磁盘故障主要指拔盘、卸载盘、挂载盘;节点故障指节点断电、断网、重启。

为避免任务流产生的数据恢复请求与I/O驱动的数据恢复请求重复,当I/O驱动的数据恢复请求提交至高优先级队列前,将会查询对应数据块是否已提交至低优先级队列中恢复。若查到,则将任务流生成的数据恢复请求从低优先级队列移至高优先级队列,释放I/O驱动产生的数据恢复请求。若未查到,则正常提交至高优先级队列中恢复,并将其从任务恢复列表中删除。

S15、将所述数据恢复请求提交到预设的第一优先级队列中,并基于所述数据恢复请求完成数据恢复。

本发明实施例按照数据恢复请求中的数据恢复类型提交至对应的恢复请求处理流程,远端数据恢复类型提交至远端恢复请求处理流程,本地数据恢复类型提交至本地恢复请求处理流程。数据块内存状态更改为恢复状态,该状态下I/O无法访问。

为了防止大量请求提交导致磁盘恢复数据压力过大,导致恢复效率降低,影响I/O性能。在处理流程中还可以添加限速机制,通过限制指定恢复类型的并发恢复请求数量,达到限速的目的。经过测试验证,将远端数据恢复类型和本地数据恢复类型限制为同时处理8个请求时,数据恢复性能最佳,对I/O影响最小。

最后,当恢复任务完成后,将数据块内存状态更新为可用状态,并且从驱动恢复列表中删除。后续I/O即可访问该数据对象,正常进行读写操作。

例如,以磁盘拔盘故障为例,在任务恢复流程中,当磁盘被拔掉后设备管理器识别到磁盘故障后触发拔盘数据恢复任务,该任务首先会获取该磁盘上的数据列表,然后将该列表中的数据逐个生成数据恢复请求提交至调度流程。在副本机制下,每个数据恢复请求会去远端另一副本节点上读取数据,然后写在本地另一磁盘上。

I/O驱动过程由I/O访问到拔掉磁盘上的数据时,通过OSD的异常信息返回识别到数据异常。然后根据恢复类型判定流程判定为从远端恢复,直接生成了数据请求放入恢复请求调度流程。具体远端数据恢复流程跟上述任务产生的恢复请求去远端恢复过程一致。

本发明实施例提供的I/O驱动的数据恢复方法,通过当I/O访问数据块出现异常时,获取I/O异常信息;基于所述I/O异常信息识别出待恢复的数据块;基于待恢复的数据块所在存储磁盘的状态,确定数据恢复类型;基于所述数据恢复类型生成数据恢复请求;将所述数据恢复请求提交到预设的第一优先级队列中,并基于所述数据恢复请求完成数据恢复。相比于现有的数据恢复处理技术需要等待丢失或错误副本恢复完成后,I/O才能完成写入操作,导致I/O出现长时间的中断,引发上层业务问题的情况。由本方法,构建异常I/O识别方法,划分数据恢复类型,快速发现异常数据;根据数据恢复类型,驱动生成数据恢复请求,实现优先级队列机制,优先处理高优先级恢复请求,及时处理异常数据恢复;维护数据块状态、所在磁盘状态内存信息和全局驱动恢复列表,精细化I/O对异常数据块访问及驱动恢复管理,提升驱动恢复流程效能。

图2为本发明实施例提供的另一种I/O驱动的数据恢复方法的流程示意图,结合图2所示的方法,本发明实施例还提供一种I/O驱动的数据恢复系统,具体包括:异常I/O识别模块、驱动恢复请求生成模块、恢复请求调度模块和I/O恢复模块。

第一步,异常I/O识别模块能够根据常见的磁盘故障、节点故障特征,发现需要恢复的数据对象,依据I/O异常捕获确定恢复类型,判定流程如附图3所示。

首先,本发明实施例中声明的数据对象定义为4M大小的数据块,数据块的相关信息将以内存形式维护在数据块所在节点,其内存信息主要包括数据块状态、数据块所在磁盘OSD信息、数据块所在磁盘OSD状态等。当I/O访问该数据块出现异常时,本模块通过捕获I/O异常信息,识别出需要恢复的数据块。异常信息来源于两处,一是对数据块内存信息访问时的判断,例如数据块内存信息不存在、数据块所在磁盘状态不正常;二是对数据块进行读写操作由磁盘设备OSD返回的异常,例如I/O错误信息EIO、坏块错误信息。

然后,识别出需要恢复的数据块后,依据数据块所在磁盘OSD状态区分数据恢复类型。本设计中将数据恢复类型分为两种,一种是本地恢复类型,该类型主要是为了应对主动运维操作,例如磁盘的卸载和挂载,当磁盘卸载/挂载时,将触发节点内部的数据均衡,本地节点会将旧盘上的数据均衡至新挂载盘或者卸载盘上的数据均衡至其他盘。本过程中会将磁盘信息更新为WAITING状态,当I/O访问到的数据块所在磁盘OSD状态为WAITING时,就会判定为本地恢复类型;另一种是远端恢复类型,主要是为了应对本地数据不存在、不可用或者损坏的场景下,需要从其他副本所在节点恢复到本节点上,例如拔盘、断电断网等故障场景。

第二步,驱动恢复请求生成模块根据识别判定出的数据块和恢复类型信息,生成数据恢复请求。建立全局驱动恢复列表,生成数据恢复请求后将该数据块信息加入该列表中,防止重复生成数据恢复请求。

生成数据恢复请求后,关键在于将数据块的ID信息加入驱动恢复列表。因为对同一数据块可能会并发多个I/O访问,若数据块出现问题则多个I/O均会被识别为需要对同一个数据块进行恢复。因此,建立驱动恢复列表通过记录已生成恢复请求的数据块ID可防止重复恢复同一个数据块。

第三步,恢复请求调度模块中分为高优先级队列和低优先级队列,I/O驱动产生的恢复请求提交至高优先级队列优先处理,然后I/O恢复模块根据恢复请求中对应的恢复类型进行数据恢复处理。

故障触发的任务流同样会生成数据恢复请求,该请求以分批方式批量提交至低优先级队列。当高优先级队列中存在未处理完成请求时,不会去处理低优先级队列,优先遍历高优先级队列中的请求,达到快速处理驱动恢复数据的目的。

为避免任务流产生的数据恢复请求与I/O驱动的数据恢复请求重复,当I/O驱动的数据恢复请求提交至高优先级队列前,将会查询对应数据块是否已提交至低优先级队列中恢复。若查到,则将任务流生成的恢复请求从低优先级队列移至高优先级队列,释放I/O驱动产生的恢复请求。若未查到,则正常提交至高优先级队列中恢复,并将其从任务恢复列表中删除。

恢复请求调度模块将按照数据恢复请求中的数据恢复类型提交至对应的恢复请求处理流程,远端数据恢复类型提交至远端恢复请求处理流程,本地数据恢复类型提交至本地恢复请求处理流程。数据块内存状态更改为恢复状态,该状态下I/O无法访问。

为了防止大量请求提交导致磁盘恢复数据压力过大,导致恢复效率降低,影响I/O性能。在处理流程中可以添加限速机制,通过限制指定恢复类型的并发恢复请求数量,达到限速的目的。经过测试验证,将远端数据恢复类型和本地数据恢复类型限制为同时处理8个请求时,数据恢复性能最佳,对I/O影响最小。

第四步,当恢复任务完成后,将数据块内存状态更新为可用状态,并且从驱动恢复列表中删除。后续I/O即可访问该数据对象,正常进行读写操作。

本发明实施例提供的I/O驱动的数据恢复系统包括:异常I/O识别模块、驱动恢复请求生成模块、恢复请求调度模块和I/O恢复模块;异常I/O识别模块用于根据磁盘故障、节点故障特征,发现待恢复的数据块,以及基于待恢复的数据块所在存储磁盘的状态,确定数据恢复类型;驱动恢复请求生成模块用于根据所述待恢复的数据块和数据恢复类型,生成数据恢复请求;恢复请求调度模块用于将数据恢复请求分配到对应的优先级队列中;I/O恢复模块用于基于所述优先级队列中的数据恢复请求对应的数据恢复类型完成数据恢复。通过划分数据恢复类型,快速发现异常数据;根据数据恢复类型,驱动生成数据恢复请求,实现优先级队列机制,优先处理高优先级恢复请求,及时处理异常数据恢复;维护数据块状态、所在磁盘状态内存信息和全局驱动恢复列表,精细化I/O对异常数据块访问及驱动恢复管理,提升驱动恢复流程效能。

图4为本发明实施例提供的一种I/O驱动的数据恢复装置的结构示意图,具体包括:

获取模块401,用于当I/O访问数据块出现异常时,获取I/O异常信息;

识别模块402,用于基于所述I/O异常信息识别出待恢复的数据块;

确定模块403,用于基于待恢复的数据块所在存储磁盘的状态,确定数据恢复类型;

生成模块404,用于基于所述数据恢复类型生成数据恢复请求;

恢复模块405,用于将所述数据恢复请求提交到预设的第一优先级队列中,并基于所述数据恢复请求完成数据恢复。

在一个可能的实施方式中,所述识别模块402,还用于基于所述I/O异常信息的信息来源,识别出待恢复的数据块。

在一个可能的实施方式中,所述确定模块403,还用于基于对所述数据块的内存信息访问结果确定I/O访问数据块是否出现异常,其中,所述内存信息的访问结果至少包括内存信息是否存在、数据块所在磁盘状态是否正常;和/或基于对数据块进行读写操作时磁盘返回的读写结果确定I/O访问数据块是否出现异常,其中,所述磁盘返回的读写结果至少包括I/O结果信息、数据块是否错误信息。

在一个可能的实施方式中,所述确定模块403,还用于预先设置本地数据恢复类型和远端数据恢复类型;当所述待恢复的数据块所在存储磁盘的状态为卸载和/或挂载时,将所述存储磁盘的状态更新为等待状态;当所述存储磁盘的状态为等待状态时,判定所述数据恢复类型为本地数据恢复类型。

在一个可能的实施方式中,所述确定模块403,还用于当所述待恢复的数据块所在存储磁盘中的数据无法访问时,判定所述数据恢复类型为远端数据恢复类型。

在一个可能的实施方式中,所述生成模块404,还用于将所述待恢复的数据块的ID信息加入预设的驱动恢复列表中。

在一个可能的实施方式中,所述恢复模块405,还用于预先设置第一优先级队列和第二优先级队列,其中,所述第一优先级队列的优先级高于所述第二优先级队列;将I/O驱动产生的数据恢复请求提交到所述第一优先级队列中,并根据数据恢复请求中对应的数据恢复类型进行数据恢复处理。

在一个可能的实施方式中,所述恢复模块405,还用于若判定所述数据恢复类型为本地数据恢复类型,则启动本地数据恢复请求处理流程;获取待恢复的数据块所在存储磁盘上的数据列表;将所述数据列表中的数据逐个生成磁盘数据恢复请求;在副本机制下,基于所述磁盘数据恢复请求读取远端副本节点中的目标数据;将所述目标数据写入本地其他磁盘中。

在一个可能的实施方式中,所述恢复模块405,还用于若判定所述数据恢复类型为远端数据恢复类型,则启动远端数据恢复请求处理流程;在副本机制下,基于所述第一优先级队列中的数据恢复请求从远端副本所在节点中将目标数据恢复到本地磁盘中。

在一个可能的实施方式中,所述恢复模块405,还用于在所述目标数据恢复过程中,将所述待恢复的数据块的状态更改为恢复状态;在将目标数据恢复到本地后,将所述待恢复的数据块的状态更新为可用状态,以及将所述待恢复的数据块的ID信息从所述驱动恢复列表中删除。

在一个可能的实施方式中,所述恢复模块405,还用于查询所述数据恢复请求对应的待恢复的数据块是否已经提交到所述第二优先级队列中;若是,则将所述第二优先级队列中中的数据恢复请求移动至所述第一优先级队列中;若否,则将所述数据恢复请求提交到所述第一优先级队列中。

在一个可能的实施方式中,所述恢复模块405,还用于当所述第一优先级队列中存在未处理完成的数据恢复请求时,优先处理所述第一优先级队列中的数据恢复请求,在所述第一优先级队列中不存在数据恢复请求后继续处理所述第二优先级队列中的数据恢复请求。

在一个可能的实施方式中,所述恢复模块405,还用于预先设置每种数据恢复类型对应的并发数据恢复请求数量的限制数量;基于所述限制数量并发进行数据恢复请求处理。

在一个可能的实施方式中,所述恢复模块405,还用于将数据对象预先定义为预设大小的数据块,所述数据块对应的数据块信息以内存形式维护在所述数据块所在的节点中,所述数据块信息至少包括数据块状态、数据块所在磁盘信息、数据块所在磁盘状态。

本实施例提供的I/O驱动的数据恢复装置可以是如图4中所示的I/O驱动的数据恢复装置,可执行如图1-3中I/O驱动的数据恢复方法的所有步骤,进而实现图1-3所示I/O驱动的数据恢复方法的技术效果,具体请参照图1-3相关描述,为简洁描述,在此不作赘述。

图5为本发明实施例提供的一种电子设备的结构示意图,图5所示的电子设备500包括:至少一个处理器501、存储器502、至少一个网络接口504和其他用户接口503。电子设备500中的各个组件通过总线系统505耦合在一起。可理解,总线系统505用于实现这些组件之间的连接通信。总线系统505除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统505。

其中,用户接口503可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。

可以理解,本发明实施例中的存储器502可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器 (Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器 (Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。 本文描述的存储器502旨在包括但不限于这些和任意其它适合类型的存储器。

在一些实施方式中,存储器502存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统5021和应用程序 5022。

其中,操作系统5021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序5022,包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序5022中。

在本发明实施例中,通过调用存储器502存储的程序或指令,具体的,可以是应用程序5022中存储的程序或指令,处理器501用于执行各方法实施例所提供的方法步骤,例如包括:

当I/O访问数据块出现异常时,获取I/O异常信息;基于所述I/O异常信息识别出待恢复的数据块;基于待恢复的数据块所在存储磁盘的状态,确定数据恢复类型;基于所述数据恢复类型生成数据恢复请求;将所述数据恢复请求提交到预设的第一优先级队列中,并基于所述数据恢复请求完成数据恢复。

在一个可能的实施方式中,基于对所述数据块的内存信息访问结果确定I/O访问数据块是否出现异常,其中,所述内存信息的访问结果至少包括内存信息是否存在、数据块所在磁盘状态是否正常;和/或基于对数据块进行读写操作时磁盘返回的读写结果确定I/O访问数据块是否出现异常,其中,所述磁盘返回的读写结果至少包括I/O结果信息、数据块是否错误信息。

在一个可能的实施方式中,基于所述I/O异常信息的信息来源,识别出待恢复的数据块。

在一个可能的实施方式中,预先设置本地数据恢复类型和远端数据恢复类型;当所述待恢复的数据块所在存储磁盘的状态为卸载和/或挂载时,将所述存储磁盘的状态更新为等待状态;当所述存储磁盘的状态为等待状态时,判定所述数据恢复类型为本地数据恢复类型。

在一个可能的实施方式中,当所述待恢复的数据块所在存储磁盘中的数据无法访问时,判定所述数据恢复类型为远端数据恢复类型。

在一个可能的实施方式中,将所述待恢复的数据块的ID信息加入预设的驱动恢复列表中。

在一个可能的实施方式中,预先设置第一优先级队列和第二优先级队列,其中,所述第一优先级队列的优先级高于所述第二优先级队列;将I/O驱动产生的数据恢复请求提交到所述第一优先级队列中,并根据数据恢复请求中对应的数据恢复类型进行数据恢复处理。

在一个可能的实施方式中,若判定所述数据恢复类型为本地数据恢复类型,则启动本地数据恢复请求处理流程;获取待恢复的数据块所在存储磁盘上的数据列表;将所述数据列表中的数据逐个生成磁盘数据恢复请求;在副本机制下,基于所述磁盘数据恢复请求读取远端副本节点中的目标数据;将所述目标数据写入本地其他磁盘中。

在一个可能的实施方式中,若判定所述数据恢复类型为远端数据恢复类型,则启动远端数据恢复请求处理流程;在副本机制下,基于所述第一优先级队列中的数据恢复请求从远端副本所在节点中将目标数据恢复到本地磁盘中。

在一个可能的实施方式中,在所述目标数据恢复过程中,将所述待恢复的数据块的状态更改为恢复状态;在将目标数据恢复到本地后,将所述待恢复的数据块的状态更新为可用状态,以及将所述待恢复的数据块的ID信息从所述驱动恢复列表中删除。

在一个可能的实施方式中,查询所述数据恢复请求对应的待恢复的数据块是否已经提交到所述第二优先级队列中;若是,则将所述第二优先级队列中中的数据恢复请求移动至所述第一优先级队列中;若否,则将所述数据恢复请求提交到所述第一优先级队列中。

在一个可能的实施方式中,当所述第一优先级队列中存在未处理完成的数据恢复请求时,优先处理所述第一优先级队列中的数据恢复请求,在所述第一优先级队列中不存在数据恢复请求后继续处理所述第二优先级队列中的数据恢复请求。

在一个可能的实施方式中,预先设置每种数据恢复类型对应的并发数据恢复请求数量的限制数量;基于所述限制数量并发进行数据恢复请求处理。

在一个可能的实施方式中,将数据对象预先定义为预设大小的数据块,所述数据块对应的数据块信息以内存形式维护在所述数据块所在的节点中,所述数据块信息至少包括数据块状态、数据块所在磁盘信息、数据块所在磁盘状态。

上述本发明实施例揭示的方法可以应用于处理器501中,或者由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array, FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程 存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成上述方法的步骤。

可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSPDevice,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。

对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。

本实施例提供的电子设备可以是如图5中所示的电子设备,可执行如图1-3中I/O驱动的数据恢复方法的所有步骤,进而实现图1-3所示I/O驱动的数据恢复方法的技术效果,具体请参照图1-3相关描述,为简洁描述,在此不作赘述。

本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。

当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在电子设备侧执行的I/O驱动的数据恢复方法。

所述处理器用于执行存储器中存储的I/O驱动的数据恢复程序,以实现以下在电子设备侧执行的I/O驱动的数据恢复方法的步骤:

当I/O访问数据块出现异常时,获取I/O异常信息;基于所述I/O异常信息识别出待恢复的数据块;基于待恢复的数据块所在存储磁盘的状态,确定数据恢复类型;基于所述数据恢复类型生成数据恢复请求;将所述数据恢复请求提交到预设的第一优先级队列中,并基于所述数据恢复请求完成数据恢复。

在一个可能的实施方式中,基于对所述数据块的内存信息访问结果确定I/O访问数据块是否出现异常,其中,所述内存信息的访问结果至少包括内存信息是否存在、数据块所在磁盘状态是否正常;和/或基于对数据块进行读写操作时磁盘返回的读写结果确定I/O访问数据块是否出现异常,其中,所述磁盘返回的读写结果至少包括I/O结果信息、数据块是否错误信息。

在一个可能的实施方式中,基于所述I/O异常信息的信息来源,识别出待恢复的数据块。

在一个可能的实施方式中,预先设置本地数据恢复类型和远端数据恢复类型;当所述待恢复的数据块所在存储磁盘的状态为卸载和/或挂载时,将所述存储磁盘的状态更新为等待状态;当所述存储磁盘的状态为等待状态时,判定所述数据恢复类型为本地数据恢复类型。

在一个可能的实施方式中,当所述待恢复的数据块所在存储磁盘中的数据无法访问时,判定所述数据恢复类型为远端数据恢复类型。

在一个可能的实施方式中,将所述待恢复的数据块的ID信息加入预设的驱动恢复列表中。

在一个可能的实施方式中,预先设置第一优先级队列和第二优先级队列,其中,所述第一优先级队列的优先级高于所述第二优先级队列;将I/O驱动产生的数据恢复请求提交到所述第一优先级队列中,并根据数据恢复请求中对应的数据恢复类型进行数据恢复处理。

在一个可能的实施方式中,若判定所述数据恢复类型为本地数据恢复类型,则启动本地数据恢复请求处理流程;获取待恢复的数据块所在存储磁盘上的数据列表;将所述数据列表中的数据逐个生成磁盘数据恢复请求;在副本机制下,基于所述磁盘数据恢复请求读取远端副本节点中的目标数据;将所述目标数据写入本地其他磁盘中。

在一个可能的实施方式中,若判定所述数据恢复类型为远端数据恢复类型,则启动远端数据恢复请求处理流程;在副本机制下,基于所述第一优先级队列中的数据恢复请求从远端副本所在节点中将目标数据恢复到本地磁盘中。

在一个可能的实施方式中,在所述目标数据恢复过程中,将所述待恢复的数据块的状态更改为恢复状态;在将目标数据恢复到本地后,将所述待恢复的数据块的状态更新为可用状态,以及将所述待恢复的数据块的ID信息从所述驱动恢复列表中删除。

在一个可能的实施方式中,查询所述数据恢复请求对应的待恢复的数据块是否已经提交到所述第二优先级队列中;若是,则将所述第二优先级队列中中的数据恢复请求移动至所述第一优先级队列中;若否,则将所述数据恢复请求提交到所述第一优先级队列中。

在一个可能的实施方式中,当所述第一优先级队列中存在未处理完成的数据恢复请求时,优先处理所述第一优先级队列中的数据恢复请求,在所述第一优先级队列中不存在数据恢复请求后继续处理所述第二优先级队列中的数据恢复请求。

在一个可能的实施方式中,预先设置每种数据恢复类型对应的并发数据恢复请求数量的限制数量;基于所述限制数量并发进行数据恢复请求处理。

在一个可能的实施方式中,将数据对象预先定义为预设大小的数据块,所述数据块对应的数据块信息以内存形式维护在所述数据块所在的节点中,所述数据块信息至少包括数据块状态、数据块所在磁盘信息、数据块所在磁盘状态。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 分布式文件系统集群节点的数据恢复方法、装置及介质
  • 一种显示面板的驱动方法、驱动系统和显示装置
  • 直线驱动装置、安全钳装置及电梯系统的控制方法
  • 一种拉丝机控制的方法、驱动控制系统及相关装置
  • 驱动程序安全检测方法、装置和图像形成系统
  • 数据恢复装置、数据管理服务器、数据管理系统、数据恢复方法及程序
  • 数据恢复方法、数据恢复装置、存储器及存储系统
技术分类

06120116483424