一种数据文件修复方法、设备及计算机可读存储介质与流程

文档序号:17048870发布日期:2019-03-05 19:49阅读:166来源:国知局
一种数据文件修复方法、设备及计算机可读存储介质与流程

本发明涉及数据存储技术领域,尤其涉及一种数据文件修复方法、设备及计算机可读存储介质。



背景技术:

数据的存储是计算机软件最基础的功能之一,特别是现在的大数据,云存储,数据库软件等都离不开最基本的数据存储。目前大容量的数据文件存储,主要还是由机械盘来存储,由于其机械特性,容易导致存储数据文件的损坏或丢失,还有一种是由于底层链路交换网络出现问题,例如sas(serialattachedscsi,序列式scsi)线。而一旦出现数据文件损坏或丢失,既有可能导致内核文件系统异常,也有可能导致上层应用的错误处理或应用异常,比如在视频的应用中,影音数据文件的损坏或丢失就会导致用户播放该节目时黑屏或者卡顿。

在目前的数据文件存储模式中,保证数据文件可靠性存储的方式一般是采用多数据文件副本模式,即通过多个数据文件副本来实现数据文件的备份。这样在其中某块磁盘的数据文件异常时,能从其它磁盘中或者其他硬盘组中读取到对应的备份数据文件。而不管使用什么样的方式,存储服务器一般都会采用xfs,ext(extendedfilesystem,延伸文件系统)等文件系统来支撑这些数据文件的存储,而一旦xfs或者ext等底层文件系统出现异常,则需要修复底层文件系统。这个时候,正在这个底层文件系统访问的副本数据文件则不得不卸载关闭,访问到该副本上的业务受到影响。



技术实现要素:

本发明要解决的技术问题是,提供一种数据文件修复方法、设备及计算机可读存储介质,克服现有技术中的无法实时修复损坏的数据文件的缺陷。

本发明采用的技术方案是,所述一种数据文件修复方法,包括:

当接收到数据文件的访问指令时,检测所述数据文件是否损坏;

在检测所述数据文件损坏的情况下,访问所述数据文件对应的预置第一副本文件,并通过所述第一副本文件对所述数据文件进行修复。

可选的,所述当接收到数据文件的访问指令时,检测所述数据文件是否损坏,包括:

将所述数据文件的物理句柄,和所述第一副本文件的物理句柄,映射为一个虚拟句柄;

当接收到数据文件的访问指令时,基于所述虚拟句柄对应的所述数据文件的物理句柄,对所述数据文件进行检测。

可选的,所述访问所述数据文件对应的第一副本文件,并通过所述第一副本文件对所述数据文件进行修复,包括:

在所述第一副本文件的数量为多个的情况下,根据预置的所述第一副本文件的排序,基于所述虚拟句柄对应的每个所述第一副本文件的物理句柄,依次检测每个所述第一副本文件是否损坏;

在所述第一副本文件的排序中确定第一个未损坏的第二副本文件;

基于所述虚拟句柄对应的所述第二副本文件的物理句柄,访问所述第二副本文件,并通过所述第二副本文件对所述数据文件进行修复。

可选的,所述访问指令包括读取指令;

所述访问所述数据文件对应的第一副本文件,并通过所述第一副本文件对所述数据文件进行修复,包括:

基于所述虚拟句柄对应的所述第一副本文件的物理句柄,读取所述第一副本文件,并通过所述第一副本文件对所述数据文件进行修复。

可选的,所述访问指令包括写入指令;

所述访问所述数据文件对应的第一副本文件,并通过所述第一副本文件对所述数据文件进行修复,包括:

基于所述虚拟句柄对应的所述第一副本文件的物理句柄,写入所述第一副本文件;

通过所述第一副本文件对所述数据文件进行修复。

可选的,在通过所述第一副本文件对所述数据文件进行修复之前,所述方法还包括:

检测存储所述数据文件的存储介质是否损坏;

在所述存储介质未损坏的情况下,检测存储所述数据文件的文件系统是否异常;

在所述文件系统为异常的情况下,修复所述文件系统,或者重新安装所述文件系统。

可选的,在所述依次检测每个所述第一副本文件是否损坏之后,所述方法还包括:

在检测到所述第一副本文件中存在损坏的第三副本文件的情况下,通过所述第二副本文件对所述第三副本文件进行修复。

本发明还提供一种数据文件修复设备,所述数据文件修复设备包括:处理器和存储器;

所述处理器用于执行存储器中存储的数据文件修复程序,以实现上述的数据文件修复方法的步骤。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的数据文件修复方法的步骤。

采用上述技术方案,本发明至少具有下列优点:

本发明所述一种数据文件修复方法、设备及计算机可读存储介质,能够实时地自动对损坏的数据文件进行修复,简化了数据文件的修复流程,提高了存储数据文件的文件系统的稳定性和安全性,提高了应用层软件访问数据文件的安全性和可靠性。

附图说明

图1为本发明第一实施例的数据文件修复方法流程图;

图2为本发明第二实施例的数据文件修复方法流程图;

图3为本发明第三实施例的数据文件修复设备组成结构示意图。

具体实施方式

为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。

本发明第一实施例,一种数据文件修复方法,如图1所示,包括以下具体步骤:

步骤s101,当接收到数据文件的访问指令时,检测数据文件是否损坏。

步骤s102,在检测数据文件损坏的情况下,访问数据文件对应的预置第一副本文件,并通过第一副本文件对数据文件进行修复。

其中,第一副本文件的数量为一个或多个。

可选的,步骤s102,包括:

第一副本文件的数量为一个;

在检测数据文件损坏的情况下,访问数据文件对应的预置第一副本文件,并通过第一副本文件对数据文件进行修复。

可选的,步骤s102,包括:

第一副本文件的数量为多个;

在检测数据文件损坏的情况下,在访问数据文件对应的预置第一副本文件中确定上一次访问的第二副本文件;并通过第二副本文件对数据文件进行修复。

其中,第一副本文件包括:第二副本文件。

在本发明的一些实施例中,数据文件对应的预置第一副本文件的数量根据数据文件的预置重要等级进行预先设置。

例如:重要等级为高的数据文件对应的第一副本文件的数量设置为n;其中,n≥2;

重要等级为一般的数据文件对应的第一副本文件的数量设置为2;

重要等级为低的数据文件对应的第一副本文件的数量设置为1。

在本发明的一些实施例中,数据文件对应的预置第一副本文件设置在不同的挂载点;其中,对挂载点不做具体限定,挂载点可以是一个硬盘的分区,也可以是多个硬盘组成的raid(redundantarraysofindependentdisks,磁盘阵列),也可以是网络上的一个节点。

在第一副本文件中确定上一次访问的副本文件,通常情况下上一次访问的副本文件为未损坏的副本文件,因此通过上一次访问的副本文件修复数据文件,能够极大的避免通过第一副本文件中损坏的副本文件修复数据文件,导致数据文件无法正常修复,提高了数据文件修复速度和准确度。

本发明第一实施例的一种数据文件修复方法,能够在访问数据文件,并检测到数据文件损坏的情况下,根据数据文件的副本文件,实时地自动对损坏的数据文件进行修复,简化了数据文件的修复流程,提高了数据文件的稳定性和安全性。

本发明第二实施例,一种数据文件修复方法,如图2所示,包括以下具体步骤:

步骤s201,当接收到数据文件的访问指令时,检测数据文件是否损坏。

可选的,步骤s201,包括:

将数据文件的物理句柄,和数据文件对应的预置第一副本文件的物理句柄,映射为一个虚拟句柄;

当接收到数据文件的访问指令时,基于虚拟句柄对应的数据文件的物理句柄,对数据文件进行检测。

其中,第一副本文件的数量为一个或多个。

基于虚拟句柄,访问数据文件和/或第一副本文件,应用层的软件感知不到虚拟句柄与实际物理句柄的区别,应用层的软件还是像操作物理一样地操作虚拟句柄,对数据文件执行读取和/或写入操作,以实现上层应用的兼容。

在本发明的一些实施例中,数据文件对应的第一副本文件的数量根据数据文件的预置重要等级进行预先设置。

例如:重要等级为高的数据文件对应的第一副本文件的数量设置为n;其中,n≥2;

重要等级为一般的数据文件对应的第一副本文件的数量设置为2;

重要等级为低的数据文件对应的第一副本文件的数量设置为1。

在本发明的一些实施例中,数据文件对应的第一副本文件设置在不同的挂载点;其中,对挂载点不做具体限定,挂载点可以是一个硬盘的分区,也可以是多个硬盘组成的raid,也可以是网络上的一个节点。

在本发明的一些实施例中,通过linux内核包的形式加入到linux的内核中,或者通过fuse(filesysteminuserspace,用户空间文件系统)来重定向到存储数据文件的文件系统进程,以实现应用层软件的无缝迁移。

步骤202,在检测数据文件损坏的情况下,访问数据文件对应的预置第一副本文件,并通过第一副本文件对数据文件进行修复。

其中,第一副本文件的数量为一个或多个。

可选的,步骤s202,包括:

在第一副本文件的数量为一个的情况下,基于虚拟句柄对应的第一副本文件的物理句柄,访问第一副本文件,并通过第一副本文件对数据文件进行修复。

在本发明的一些实施例中,通过第一副本文件对数据文件进行修复的方式包括但不限于:

方式一,检测数据文件,得到数据文件损坏的数据块,通过第一副本文件对损坏的数据块进行修复;

方式二,将第一副本文件复制为数据文件。

可选的,步骤s202,包括:

在第一副本文件的数量为多个的情况下,根据预置的第一副本文件的排序,基于虚拟句柄对应的每个第一副本文件的物理句柄,依次检测每个第一副本文件是否损坏;

在第一副本文件的排序中确定第一个未损坏的第二副本文件;

基于虚拟句柄对应的第二副本文件的物理句柄,访问第二副本文件,并通过第二副本文件对数据文件进行修复。

在本发明的一些实施例中,通过第二副本文件对数据文件进行修复的方式包括但不限于:

方式一,检测数据文件,得到数据文件损坏的数据块,通过第二副本文件对损坏的数据块进行修复;

方式二,将第二副本文件复制为数据文件。

可选的,步骤s202,包括:

访问指令包括读取指令;

基于虚拟句柄对应的第一副本文件的物理句柄,读取第一副本文件,并通过第一副本文件对数据文件进行修复。

可选的,步骤s202,包括:

访问指令包括写入指令;

基于虚拟句柄对应的第一副本文件的物理句柄,写入第一副本文件;

在完成写入第一副本文件之后,通过第一副本文件对数据文件进行修复。

可选的,步骤s202,包括:

访问指令包括写入指令;

在第一副本文件的数量为多个的情况下,根据预置的第一副本文件的排序,基于虚拟句柄对应的每个第一副本文件的物理句柄,依次检测每个第一副本文件是否损坏;

在第一副本文件的排序中确定第一个未损坏的第二副本文件;

基于虚拟句柄对应的第二副本文件的物理句柄,写入第二副本文件;

在完成写入第二副本文件之后,通过第二副本文件对数据文件进行修复,并根据第二副本文件,更新第一副本文件中未损坏的所有第四副本文件。

可选的,步骤s202,包括:

在检测所述数据文件损坏的情况下,访问数据文件对应的预置第一副本文件,并检测存储数据文件的存储介质是否损坏;

若存储介质未损坏,则检测存储数据文件的文件系统是否异常;

若存储介质为损坏,则提醒设定用户对存储介质进行修复;

若文件系统为异常,则修复文件系统,或者重新安装文件系统;在无法修复文件系统,和无法重新安装文件系统的情况下,提醒设定用户对文件系统进行修复;

若文件系统为正常,则通过第一副本文件对数据文件进行修复。

其中,重新安装文件系统的方式,包括但不限于:

重新安装文件系统;

在第一副本文件的数量为一个的情况下,根据虚拟句柄对应的第一副本文件的物理句柄,获取第一副本文件,并将第一副本文件复制至重新安装的文件系统;

或者,在第一副本文件的数量为多个的情况下,根据预置的第一副本文件的排序,基于虚拟句柄对应的第一副本文件的物理句柄,依次检测每个第一副本文件是否损坏;在第一副本文件的排序中确定第一个未损坏的第二副本文件;并将第二副本文件复制至重新安装的文件系统。

在本发明的一些实施例中,对检测存储数据文件的存储介质是否损坏的方式不做具体限定,可以包括不到限于以下方式:尝试读写、日志检查smart(self-monitoringanalysisandreportingtechnology)查询和网络检查等。

当重建文件系统时,重新安装文件系统会导致文件系统中的数据文件被删除,通过将第二副本文件复制至重新安装的文件系统,实现了文件系统的自动修复。

通过自动检测数据文件和/或第一副本文件是否损坏,根据预置的第一副本文件的排序,基于虚拟句柄,读取和/或写入下一物理句柄对应的第一副本文件,以实现应用层的软件无感知数据文件异常的情况下,读取和/或写入数据文件,极大地提高了数据文件的正常读取和/或写入,提高了数据文件的正常读取和/或写入速度和准确度。

步骤s203,在检测到第一副本文件中存在损坏的第三副本文件的情况下,通过第二副本文件对第三副本文件进行修复。

其中,第三副本文件的数量为一个或多个。

在本发明的一些实施例中,通过第二副本文件对第三副本文件进行修复的方式包括但不限于:

方式一,检测第三副本文件,得到第三副本文件损坏的数据块,通过第二副本文件对第三副本文件损坏的数据块进行修复;

方式二,将第二副本文件复制为第三副本文件。

本发明第二实施例的一种数据文件修复方法,能够在访问数据文件,并检测到数据文件损坏的情况下,根据数据文件的副本文件,地自动对损坏的数据文件进行修复,简化了数据文件的修复流程,提高了数据文件的稳定性和安全性。

本发明第三实施例,一种数据文件修复设备,如图3所示,包括以下组成部分:

处理器501和存储器502。在本发明的一些实施例中,处理器501和存储器502可通过总线或者其它方式连接。

处理器501可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路。其中,存储器502用于存储所述处理器501的可执行指令;

存储器502,用于存储程序代码,并将该程序代码传输给处理器501。存储器502可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram);存储器502也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器502还可以包括上述种类的存储器的组合。

其中,处理器501用于调用所述存储器502存储的程序代码管理代码,以实现本发明第一实施例至本发明第二实施例中任一实施例中部分或全部步骤。

本发明第三实施例所述的一种数据文件修复设备,能够实时地自动对损坏的数据文件进行修复,简化了数据文件的修复流程,提高了存储数据文件的文件系统的稳定性和安全性,提高了应用层软件访问数据文件的安全性和可靠性。

本发明第四实施例,一种计算机可读存储介质。

计算机存储介质可以是ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动硬盘、cd-rom或者本领域已知的任何其他形式的存储介质。

计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现本发明第一实施例至本发明第二实施例中任一实施例中部分或全部步骤。

本发明第四实施例中所述的一种计算机可读存储介质,存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,能够实时地自动对损坏的数据文件进行修复,简化了数据文件的修复流程,提高了存储数据文件的文件系统的稳定性和安全性,提高了应用层软件访问数据文件的安全性和可靠性。

通过具体实施方式的说明,应当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明加以限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1