数据处理方法和存储设备的制作方法

文档序号:6397087阅读:217来源:国知局
专利名称:数据处理方法和存储设备的制作方法
技术领域
本发明涉及存储技术,尤其涉及一种数据处理方法和存储设备。
背景技术
数据备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。现有技术中通常采用快照的方式来实现数据备份。快照是关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。通常的做法是,预先设置好进行快照的时间点,定时对IO请求中待写入的地址中存储的数据进行快照,当需要恢复某个时间点的数据时,再将快照数据转化为备份或副本数据。但是这种技术无法将数据恢复到任意时间点,而只能恢复到快照时间点。

发明内容
本发明实施例提供一种数据处理方法和存储设备,能够恢复任意时刻的数据。第一方面,本发明实施例提供一种数据处理方法,包括:在日志表中记录写操作日志,所述写操作日志包括接收的至少一条写数据操作的时间点、待写入数据以及逻辑块地址LBA ;当预设的快照时间点到达时,对所述写操作日志中的LBA对应的数据块做快照处理得到快照数据,并在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点;根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复。在第一方面的第一种可能的实现方式中,所述对所述写操作日志中LBA对应的数据块做快照处理得到快照数据包括:给所述LBA对应的数据块做快照处理的标记,以表示所述LBA对应的数据块需要做快照处理;根据所述快照处理的标记,将所述写操作日志中每条写操作日志的LBA对应的数据块中的数据保存至快照区。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,还包括:将所述日志表保存至存储设备中,以进行数据恢复。结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,还包括:当预设的快照时间点到达时,悬挂写数据操作,并将所述待写入数据写入存储设备的非易失性存储介质中。
在第一方面的第一种可能的实现方式中,所述根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复包括:根据指定时间点确定所述指定时间点之前的最后一次快照时间点,当所述最后一次快照时间点为所述预设的快照时间点时,得到所述预设的快照时间点对应的快照数据;获取所述预设的快照时间点之后的写操作日志;根据所述预设的快照时间点之后的写操作日志,以及所述预设的快照时间点对应的快照数据恢复所述指定时间点的数据。第二方面,本发明实施例提供一种存储设备,包括:写操作日志模块,用于在日志表中记录写操作日志,所述写操作日志包括接收的至少一条写数据操作的时间点、待写入数据以及逻辑块地址LBA ;快照处理模块,用于当预设的快照时间点到达时,对所述写操作日志中的LBA对应的数据块做快照处理得到快照数据,并在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点;恢复模块,用于根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复。在第二方面的第一种可能的实现方式中,所述快照处理模块包括:标记单元,用于给所述LBA对应的数据块做快照处理的标记,以表示所述LBA对应的数据块需要做快照处理;保存单元,用于根据所述快照处理的标记,将所述写操作日志中每条写操作日志的LBA对应的数据块中的数据保存至快照区;记录单元,用于在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点。结合第二方面的第一种可能的实现方式,第二方面的第二种可能的实现方式,还包括:日志保存模块,用于将所述日志表保存至存储设备中,以进行数据恢复。结合第二方面的第一种可能的实现方式,第二方面的第三种可能的实现方式,还包括:悬挂模块,用于当预设的快照时间点到达时,悬挂写数据操作,并将所述待写入数据写入存储设备的非易失性存储介质中。在第二方面的第一种可能的实现方式中,所述恢复模块包括:快照数据获取单元,用于根据指定时间点确定所述指定时间点之前的最后一次快照时间点,当所述最后一次快照时间点为所述预设的快照时间点时,得到所述预设的快照时间点对应的快照数据;写操作日志获取单元,用于获取所述预设的快照时间点之后的写操作日志;数据恢复单元,用于根据所述预设的快照时间点之后的写操作日志,以及所述预设的快照时间点对应的快照数据恢复所述指定时间点的数据。第三方面,本发明实施例提供一种存储设备,包括:处理器、通信接口和通信总线.-^4 ,其中,所述处理器和所述通信接口通过所述通信总线进行通信;所述处理器,用于在日志表中记录写操作日志,所述写操作日志包括接收的至少一条写数据操作的时间点、 待写入数据以及逻辑块地址LBA ;当预设的快照时间点到达时,对所述写操作日志中的LBA对应的数据块做快照处理得到快照数据,并在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点;根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复。在本发明第三方面的第一种可能实施方式中,所述处理器用于对所述写操作日志中LBA对应的数据块做快照处理得到快照数据包括:所述处理器用于给所述LBA对应的数据块做快照处理的标记,以表示所述LBA对应的数据块需要做快照处理;根据所述快照处理的标记,将所述写操作日志中每条写操作日志的LBA对应的数据块中的数据保存至快照区。结合第三方面的第一种可能的实现方式,第三方面的第二种可能的实现方式,所述处理器还用于,将所述日志表保存至存储设备中,以进行数据恢复。结合第三方面的第一种可能的实现方式,第三方面的第三种可能的实现方式,所述处理器还用于,当预设的快照时间点到达时,悬挂写数据操作,并将所述待写入数据写入存储设备的非易失性存储介质中。在本发明第三方面的第一种可能实施方式中,所述处理器用于根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复包括:所述处理器用于根据指定时间点确定所述指定时间点之前的最后一次快照时间点,当所述最后一次快照时间点为所述预设的快照时间点时,得到所述预设的快照时间点对应的快照数据;获取所述预设的快照时间点之后的写操作日志;根据所述预设的快照时间点之后的写操作日志,以及所述预设的快照时间点对应的快照数据恢复所述指定时间点的数据。第四方面,本发明实施例提供一种存储设备,包括:包括如权利要求7-12任意权利要求所述的存储设备和主机; 所述主机,用于向所述存储设备发送写数据操作。结合第四方面的第一种可能的实现方式,第四方面的第二种可能的实现方式,所述存储系统还包括连接设备;所述连接设备用于连接所述主机和所述存储设备;所述主机,用于向所述存储设备发送写数据操作包括:所述主机,用于通过所述连接设备向所述存储设备发送写数据操作。在本发明实施例中,由于对每个写数据操作进行截获,将每个写数据操作中携带的待写入数据形成日志记录在日志表中,因此除了可以直接通过快照日志恢复快照时间点的数据以外,还可以通过日志表恢复任意时间点数据。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种数据处理方法的应用网络架构示意图;图2为本发明实施例提供的一种数据处理方法的流程图;图3为本发明实施例提供的又一种数据处理方法的流程图4为本发明实施例提供的一种存储设备的结构示意图;图5为本发明实施例提供的又一种存储设备的结构示意图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供的数据处理方法可以在存储系统上实现。图1为本发明实施例提供的一种数据处理方法的系统架构示意图,如图1所示,该存储系统包括主机、存储设备和连接设备。主机可以包括当前技术已知的任何计算设备,如服务器、台式计算机等等。在主机内部,安装有操作系统以及其他应用程序。存储设备可以包括当前技术已知的具有快照功能的存储设备,如独立磁盘冗余阵列(Redundant Arrays of Independent Disks, RAID)、磁盘族(Just a Bunch Of Disks,JBOD)、直接存取存储器(Direct Access Storage Device,DASD)的一个或多个互连的磁盘驱动器,诸如磁带库、一个或多个存储单元的磁带存储设备。连接设备可以包括当前技术已知的存储设备和主机之间的任何接口,如光纤交换机,或者其他现有的交换机。请参见图2,图2为本发明实施例提供的一种数据处理方法的流程图,如图2所示,本实施例提供了一种数据处理方法,该数据处理方法从存储设备的角度进行描述,可以用于对写数据操作中待写入的数据进行备份,以便将来将数据恢复到任意时间点。该方法可以包括如下步骤:步骤202,在日志表中记录写操作日志,写操作日志包括接收的至少一条写数据操作的时间点、待写入数据以及逻辑块地址(Logical Block Address, LBA);在本发明实施例中,存储设备接收主机下发的写数据操作,要求将数据写入存储设备中,该写数据操作包括待写入数据,以及LBA。LBA为待写入数据将要写入的存储设备的逻辑地址。在主机下发写数据操作给存储设备之前,通常该LBA存储有数据,在接收到写数据操作后,用写数据操作中携带的待写入数据覆盖LBA中原来存储的数据,如果不对LBA中原来存储的数据做其他处理,该数据就会丢失,不能恢复。存储设备中可以包括写操作日志模块,当主机下发写数据操作给存储设备用于写入数据时,该写操作日志模块可以通过截获该写数据操作获得待写入数据以及LBA,形成一条写操作日志记录在日志表中,日志表可以存储在该存储设备中。另外,写操作日志中还包括接收写数据操作的时间点。具体而言,日志表中的每一条写操作日志记录可以包含三个字段,其中一个字段是接收写数据操作的时间点,另一个字段是待写入数据,还有一个字段是LBA。在接收到下一个写数据操作时,重复执行步骤202的动作。步骤203,当预设的快照时间点到达时,对所述写操作日志中的LBA对应的数据块做快照处理得到快照数据,并在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点。在本发明实施例中,存储设备具有快照功能,所谓快照是指一种在操作系统以及存储技术上实现的一种记录某一时间系统状态的技术。快照时间点可以根据用户的需要预先设置,例如将快照的时间点设置为9:00、9:10、9:20等等,或者将快照的时间间隔设置为IOs或者20s或者30s等等,当预设的快照时间点或者预设的时间间隔到达时,则需要在步骤202的日志表中增加一条快照日志,该快照日志可以包含一个字段,即预设的快照时间点,也可以包含两个字段,其中一个字段是预设的快照时间点,另一个字段是快照处理的标识,该快照处理的标识是用于在日志表标识快照日志,将快照日志和写操作日志区分开来。在实际应用中,是对该LBA所对应的逻辑存储单元(Logical Unit Number, LUN)做快照处理,即整个LUN的数据都需要拷贝到其他数据存储区域,其中也包含了该LBA所对应的数据块。本发明实施例仅以对该LBA所对应的数据块进行快照处理为例。需要说明的是,LUN是一段逻辑存储区域,对于大多数存储设备而言,并不直接对操作系统呈现存储设备所包含的物理磁盘本身,而是将各物理磁盘提供的存储空间映射为一段逻辑区域(即LUN)供用户使用。因此,操作系统对磁盘进行的读写操作实际上都是在LUN层面进行的操作。写数据操作中携带的LBA,是指待写入数据将要写入的LUN的地址。由于LUN是由物理磁盘映射而来的,而物理磁盘的最小存储单位是数据块,所以LBA也有其对应的物理磁盘上的数据块。具体的,可以预先在存储设备上划分一段LUN作为快照区,用以保存各个预设快照时间点的快照数据。当预设的快照时间点到达时,可以将该LBA所对应的数据块中的数据保存至快照区。做快照的目的是若将来某个时候需要恢复该数据块中原有的数据时,可以利用快照区中保存的快照数据进行恢复。需要说明的是,进行快照处理和在日志表中增加快照日志没有先后顺序,可以同时执行。在另一个实施例中,可以先进行快照处理,再在日志表中记录快照日志以保证日志表中记录的写操作日志已经完全包含了快照创建前的所有时间点的写操作日志。步骤204,根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复。需要说明的是,步骤202、步骤203、步骤204会反复执行多次,在每次预设的快照时间点到达时形成一份日志表保存,该日志表包括前后两次预设的快照时间点的快照日志,以及快照时间点之间所有的写操作日志。因此,当需要恢复指定时间点的数据时,首先要确定指定时间点之前的最后一次快照时间点,得到最后一次快照时间点对应的快照数据,并且获取最后一次快照时间点之后的写操作日志,再根据最后一次快照时间点对应的快照数据和最后一次快照时间点之后的写操作日志恢复指定时间点的数据。当最后一次快照时间点为步骤203中的预设的快照时间点时,得到最后一次快照时间点对应的快照数据也就是获得步骤203中的预设的快照时间点对应的快照数据。在本发明实施例中,由于对每个写数据操作进行截获,将每个写数据操作中携带的待写入数据形成日志记录在日志表中,因此除了可以直接通过快照日志恢复快照时间点的数据以外,还可以通过日志表恢复任意时间点数据。
在上述实施例的步骤203中,对该LBA所对应的数据块做快照处理得到快照数据,可以具体包括如下步骤:步骤2031:给所述LBA对应的数据块做快照处理的标记,以表示所述LBA对应的数据块需要做快照处理;具体的,在本发明实施例中,当预设的快照时间点到达时,可以给LBA所对应的数据块做快照标记,可以是给该数据块打上一个快照标签,可以是当前技术已知的任何做标记的方式。在实际应用中,快照标记是给整个LUN做的,但在本发明实施例中仅需要用到LBA对应的数据块,所以可以理解为给所述LBA对应的数据块做快照处理的标记。需要说明的是,这里的快照处理的标记和步骤203中快照日志包括快照处理的标识有所不同,这里的快照处理的标记主要是为了在数据没有同步写入的情况下,先打上一个快照标记,表示该数据块在接收到下一个写数据操作时需要进行快照处理,而步骤203中的快照处理的标识是快照日志中的一个字段,用以区别日志表中的写操作日志。步骤2032:根据所述快照处理的标记,将所述写操作日志中每条写操作日志的LBA对应的数据块中的数据保存至快照区;当接收到下一个写数据操作,该写数据操作中包括待写入数据和LBA,如果系统识别到该LBA对应的数据块包含有快照标记,则先将该LBA对应的数据块的数据备份到快照区,再将该写数据操作中携带的待写入数据写入该LBA中。这主要是为了保证当预设的快照时间点和接收到写操作请求的时间点不一致时,仍然能够进行快照处理。在本发明的另一个实施例中,还可以包括:步骤205,将日志表保存至存储设备中,以进行数据恢复;在实际应用中,日志表通常是存在于存储设备的缓存中的,将日志表中的记录保存至存储设备中具体可以是,将日志表保存至存储设备中的非易失性存储介质中,并清空该日志表在缓存中的记录,以节省缓存资源。在本发明实施例中,以每个预设的快照时间点为间隔,分别将每个日志表保存至存储设备中,那么每一份日志表中的数据变化记录都只包含两个预设的快照时间点之间的数据变化记录,因此日志表就比较小,不会占用太多的存储空间。需要说明的是,该步骤和进行快照处理的步骤没有先后顺序,可以先将日志表保存到存储设备再进行快照处理,也可以先进行快照处理再将日志表保存到存储设备中,也可以同时执行。在本发明一个更优的实施例中,可以先将日志表保存到存储设备再进行快照处理,防止系统掉电以后日志表丢失。在本实施例中,由于对每个写数据操作进行截获,将每个写数据操作中携带的待写入数据形成日志记录在日志表中,因此除了可以直接通过快照日志恢复快照时间点的数据以外,还可以通过日志记录恢复任意时间点数据。并且,由于在本发明实施例中,以预先设置的快照时间点为间隔,将日志记录保存至存储设备中,并将原来保存在缓存中的日志记录清空,因此避免了掉电时日志表丢失,也节省了缓存资源。在本发明的再一个实施例中,还可以包括:步骤206,在预设的快照时间点到达时,悬挂此时接收到的写数据操作指令,并且将所述待写入数据写入存储设备的非易失性存储介质中;
通常情况下,在主机下发写数据操作给存储设备以后,系统会将该写数据操作的相关信息暂存在缓存里面,然后根据该写数据操作中携带的LBA将待写入数据从缓存写入到存储设备的非易失性存储介质,例如硬盘中,再清空缓存中的待写入数据。因此需保证缓存中的数据与硬盘中的数据一致。在本发明实施例中,在预设的快照时间点到达时,可以悬挂此时接收到的写数据操作,先将此时缓存中的数据写入存储设备的非易失性存储介质中。本领域技术人员可以理解的是,这里的悬挂该写数据操作是指暂不执行此时接收到的写数据操作,使得系统在将缓存中的数据写入硬盘中时,或者在记录快照日志时,或者在进行快照操作时,不会有新的数据写入从而导致缓存中存储的数据和硬盘的数据不一致。当快照处理完成,并且快照日志已经添加到日志表中以后,可以停止悬挂。本发明实施例,当预设的快照时间点到达时,悬挂此时接收到的写数据操作指令,并且将缓存中的数据写入存储设备的非易失性存储介质中,可以保证在将数据从缓存写入硬盘时,数据是一致的。在上述实施例中,写操作日志模块是包含在存储设备中的,由存储设备去截获主机下发的写数据操作,以获得写数据操作中携带的待写入数据以及LBA,形成一条写操作日志记录在日志表中;在本发明另一个实施例中,写操作日志模块可以包含在主机端,当主机下发写数据操作给存储设备时,可以由主机去截获该写数据操作,以获得写数据操作中携带的待写入数据以及LBA,形成一条写操作日志记录在日志表中。在本发明再一个实施例中,写操作日志模块可以包含在连接设备,例如交换机中,当主机经交换机下发写数据操作给存储设备时,交换机可以通过写操作日志模块截获该写数据操作,以获得待写入数据以及LBA,形成一条写操作日志记录在日志表中。需要说明的是,当写操作日志模块包含在存储设备中时,日志表可以存储在该存储设备中;在本发明的另一个实施例中,当写操作日志模块包含在主机端时,日志表可以存储在主机中,以及其他与该主机连接的存储设备中;在本发明的再一个实施例中,当写操作日志模块包含在交换机中时,日志表可以存储在与交换机连接的硬盘和其他存储设备中。对于步骤205而言,将日志表保存至存储设备中,可以将日志表保存至存储设备的非易失性存储介质中,并清空该日志表在缓存中的记录,以节省缓存资源。在本发明的另一个实施例中,将日志表保存至存储设备中,可以是将日志表保存至存储设备中,并清空该日志表在主机中的记录,以节省主机资源。在本发明的再一个实施例中,可以将日志表保存至存储设备的非易失性存储介质中,并清空该日志表在缓存中的记录,以节省缓存资源。需要说明的是,这里的存储设备可以是本发明实施例的存储设备,也可以是与该交换机连接的其他存储设备。在上述实施例中,步骤204可以具体包括以下步骤,如图3所示:步骤2041,根据指定时间点确定所述指定时间点之前的最后一次快照时间点,当所述最后一次快照时间点为所述预设的快照时间点时,得到所述预设的快照时间点对应的快照数据;
这里的指定时间点可以任意的时间点,S卩,根据上述实施例所示的日志表可以恢复用户指定的任意时间点的数据。具体地,可以根据指定时间点确定指定时间点之前的最后一次快照时间点,并得到最后一次快照时间点对应的快照数据;由上述实施例可知,存储设备可以预先设置快照时间点,例如将快照的时间点设置为9:00、9:10、9:20等等或者将快照的时间间隔设置为IOs或者20s或者30s等等,当预设的快照时间点或者预设的时间间隔到达时,系统会自动对某一个LUN中的数据进行快照处理。因此,可以根据指定时间点获得在该指定时间点之前最后一次预设的快照时间点。根据快照处理的方式可知,快照数据是保存在存储设备的快照区的,因此可以根据指定时间点之前最后一次预设的快照时间点,在快照区获得与该时间点的快照数据。步骤2042:获取所述最后一次快照时间点之后的写操作日志;由上述实施例可知,日志表是以预设的快照点为间隔分段保存的,对于写操作日志而言,其可以包含三个字段,其中一个字段是接收写数据操作的时间点,另一个字段是待写入数据,再一个字段是LBA。因此,可以通过指定时间点确定与其对应的日志表。该日志表中包含了以上次预设的快照时间点为基准,一段时间内对该LBA对应的数据块进行的写操作日志。步骤2043:根据所述预设的快照时间点之后的写操作日志,以及所述预设的快照时间点对应的快照数据恢复所述指定时间点的数据。具体地,可以根据步骤2041中获得的指定时间点之前最后一次预设时间点的快照数据,以及根据步骤2042中获得的最后一次预设时间点的写操作日志恢复指定时间点的数据。更加具体地,在本发明一个实施例中,可以以最后一次预设时间点的快照数据为基准,按照日志表中写操作日志的时间顺序,依次将指定时间点前的数据变化记录覆盖到作为基准的快照数据中,直到写操作日志的时间已经到达指定的时间点。在本发明另一个实施例中,可以以最后一次预设时间点的快照数据为基准,按照日志表中的写操作日志,统计在最后一次预设时间点与指定时间点之间总共进行了多少次写数据操作,然后将最后一次写数据操作的数据变化记录覆盖到作为基准的快照数据中。在本发明实施例中,可以根据日志表中的写操作日志以及指定时间点之前最后一次预设的快照时间点的快照数据恢复任意指定时间点数据。在本发明另一个实施例中,步骤2041之前还可以包括:步骤2044:判断指定时间点是否是预设的快照时间点,如果是,则通过预设的快照时间点对应的快照数据恢复所述指定时间点的数据;如果否,则执行步骤2041。可以理解是,如果指定时间点正好是预设的快照时间点,则可以直接通过快照数据进行恢复,不需要再执行后面的步骤,节省了恢复数据的时间。下面以一个具体的例子来说明数据恢复的过程:例如,存储设备做快照的时间点为9:0 O、9:10、9:2 O,而需要恢复的时间点是9:05,由于快照区保存的只有9:00、9:10、9:20的快照数据,没有9:05的快照数据,所以不能直接从快照区恢复。 离9:05最后一次做快照的时间点是9:00,因此,将9:00的快照数据读取到缓存中。
可以理解的是,日志表是根据快照日志分段保存的。例如,第一个日志表可能保存的是从8:50到9:00之间所有写数据操作的写数据操作日志,以及8:50时刻的快照日志和9:00时刻的快照日志,第二个日志表可能保存的是从9:00到9:10之间所有写数据操作的写数据操作日志,以及9:00时刻的快照日志和9:10时刻的快照日志,第三个日志表可能保存的是从9:10到9:20之间所有写数据操作的写数据操作日志,以及9:10时刻的快照日志和9:20时刻的快照日志。要恢复9:05时刻的数据,除了要知道9:00时刻的快照数据之外,还需要知道从9:00到9:05这段时间中,该LBA所对应的数据块上的数据变化,在本发明实施例中,可以通过9:00到9:05这段时间内的写数据日志记录来获得9:00到9:05之间数据块上的数据变化。例如,9:00到9:05这段时间内共进行了 3次写数据操作,分别对应的系统时间戳是9:01、9:02、9:03,那么恢复9:05时刻的数据的步骤是:首先,将9:00时刻的快照数据作为基准数据;然后,将日志记录中记录的9:01时刻的待写入数据写入LBA中;然后将日志记录中记录的9:02时刻的待写入数据写入LBA中;然后将日志记录中记录的9:03时刻的待写入数据写入LBA中,由于9:03是最后一次写数据操作,因此本次恢复结束,此时的数据即要恢复的指定的时间点的数据。或者,也可以按照以下步骤恢复9:05时刻的数据:首先,将9:00时刻的快照数据作为基准数据;然后统计9:00到9:05之间共进行了 3次写数据操作;再根据日志表的记录将最后一次写数据操作,即9:03时刻的待写入数据写入LBA。此时的数据即要恢复的指定的时间点的数据。本发明实施例还提供一种存储设备,如图4所示,存储设备40包括:写操作日志模块402,用于在日志表中记录写操作日志,所述写操作日志包括接收的至少一条写数据操作的时间点、待写入数据以及逻辑块地址(Logical Block Address,LBA);在本发明实施例中,存储设备40接收主机下发的写数据操作,要求将数据写入存储设备中,该写数据操作包括待写入数据,以及LBA。LBA为待写入数据将要写入的存储设备的逻辑地址。在主机下发写数据操作给存储设备之前,通常该LBA存储有数据,在接收到写数据操作后,用写数据操作中携带的数据覆盖会掉LBA中原来存储的数据,如果不对LBA中原来存储的数据做其他处理,该数据就会丢失,不能恢复。在本发明实施例中,当主机下发写数据操作给存储设备40用于写入数据时,该写操作日志模块402可以通过截获该写数据操作获得待写入数据以及LBA,形成一条写操作日志记录在日志表中,日志表可以存储在该存储设备上。另外,写操作日志中还包括接收写数据操作的时间点。具体而言,日志表中的每一条写操作日志记录可以包含三个字段,其中一个字段是接收写数据操作的时间点,另一个字段是待写入数据,再一个字段是LBA。在接收到下一个写数据操作时,重复执行写操作日志模块402执行的动作。快照处理模块403,用于当预设的快照时间点到达时,对所述写操作日志中的LBA对应的数据块做快照处理得到快照数据,并在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点;
在本发明实施例中,存储设备40具有快照功能,所谓快照是指一种在操作系统以及存储技术上实现的一种记录某一时间系统状态的技术。快照时间点可以根据用户的需要预先设置,例如将快照的时间点设置为9:00、9:10、9:20等等或者将快照的时间间隔设置为IOs或者20s或者30s等等,当预设的快照时间点或者预设的时间间隔到达时,则需要在日志表中增加一条快照日志,该快照日志可以包含一个字段,即预设的快照时间点,也可以包含两个字段,其中一个字段是预设的快照时间点,另一个字段是快照处理的标识,该快照处理的标识是用于在日志表标识快照日志,将快照日志和写操作日志区分开来。在实际应用中,是对该LBA所对应的逻辑存储单元(Logical Unit Number, LUN)做快照处理,即整个LUN的数据都需要拷贝到其他数据存储区域,其中也包含了该LBA所对应的数据块。本发明实施例仅以对该LBA所对应的数据块进行快照处理为例。具体的,可以预先在存储设备上划分一段LUN作为快照区,用以保存各个预设快照时间点的快照数据。当预设的快照时间点到达时,可以将该LBA所对应的数据块中的数据保存至快照区。做快照的目的是若将来某个时候需要恢复该数据块中原有的数据时,可以利用快照区中保存的快照数据进行恢复。恢复模块404,用于根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复。需要说明的是,快照处理模块403在执行快照处理的时候和在日志表中记录快照日志的时候没有先后顺序,可以同时执行。在另一个实施例中,可以先对LBA对应的数据块做快照处理,再在日志表中记录快照日志以保证日志中记录的写操作日志已经完全包含了快照创建前的所有时间点的写操作日志。在本发明实施例中,由于对每个写数据操作进行截获,将每个写数据操作中携带的待写入数据形成日志记录在日志表中,因此除了可以直接通过快照日志恢复快照时间点的数据以外,还可以通过日志表恢复任意时间点数据。在上述实施例的快照处理模块403中,可以包括标记单元4031、保存单元4032和记录单元4033,其中,标记单元4031,用于给所述LBA对应的数据块做快照处理的标记,以表示所述LBA对应的数据块需要做快照处理;具体的,在本发明实施例中,当预设的快照时间点到达时,可以给LBA所对应的数据块做快照标记,可以是给数据块打上一个快照标签,可以是当前技术已知的任何做标记的方式。在实际应用中,快照标记是给整个LUN做的,但在本发明实施例中仅需要用到LBA对应的数据块,所以可以理解为给所述LBA对应的数据块做快照处理的标记。保存单元4032,用于根据所述快照处理的标记,将所述写操作日志中每条写操作日志的LBA对应的数据块中的数据保存至快照区;当接收到下一个写数据操作,该写数据操作中包括待写入数据和LBA,如果系统识别到该LBA对应的数据块包含有快照标记,则先将该LBA对应的数据备份到快照区,再将该写数据操作中携带的待写入数据写入该LBA中。这主要是为了保证当预设的快照时间点和接收到写操作请求的时间点不一致时,仍然能够进行快照处理。
记录单元4033,用于在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点。此外,该快照日志中还可以包括快照处理的标记,用以在日志表中将快照日志和写操作日志区别开来。在本发明的另一个实施例中,还可以包括:日志保存模块405,用于将日志表保存至存储设备中,以进行数据恢复。在实际应用中,日志表通常是存在于存储设备的缓存中的,将日志表保存至存储设备中具体可以是,将日志表保存至存储设备中的非易失性存储介质中,并清空该日志表在缓存中的记录,以节省缓存资源。在本发明实施例中,以每个预设的快照时间点为间隔,分别将每个日志表保存至存储设备中,那么每一份日志表中的数据变化记录都只包含两个预设的快照时间点之间的数据变化记录,因此日志表就比较小,不会占用太多的存储空间。在本实施例中,由于对每个写数据操作进行截获,将每个写数据操作中携带的待写入数据形成日志记录在日志表中,因此除了可以直接通过快照日志恢复快照时间点的数据以外,还可以通过日志记录恢复任意时间点数据。并且,由于在本发明实施例中,以预先设置的快照时间点为间隔,将日志记录保存至存储设备中,并将原来保存在缓存中的日志记录清空,因此避免了掉电时日志表丢失,也节省了缓存资源。在本发明的再一个实施例中,还可以包括:悬挂模块406,用于当预设的快照时间点到达时,悬挂写数据操作,并将所述待写入数据写入存储设备的非易失性存储介质中。通常情况下,在主机下发写数据操作给存储设备以后,系统会将该写数据操作的相关信息暂存在缓存里面,然后根据该写数据操作中携带LBA将待写入数据从缓存写入到存储设备的非易失性存储介质,例如硬盘中,再清空缓存中的待写入数据。因此需保证缓存中的数据与硬盘中的数据一致。在本发明实施例中,在预设的快照时间点到达时,可以悬挂此时接收到的写数据操作,先将此时缓存中的数据写入存储设备的非易失性存储介质中。本领域技术人员可以理解的是,这里的悬挂该写数据操作是指暂不执行此时接收到的写数据操作,使得系统在将缓存中的数据写入硬盘中时,或者在记录快照日志时,或者在进行快照操作时,不会有新的数据写入从而导致缓存中存储的数据和硬盘的数据不一致。当快照处理完成,并且快照日志已经添加到日志表中以后,可以停止悬挂。本发明实施例,当预设的快照时间点到达时,悬挂此时接收到的写数据操作指令,并且将缓存中的数据写入存储设备的非易失性存储介质中,可以保证在将数据从缓存写入硬盘时,数据是一致的。在上述实施例中,写操作日志模块402是包含在存储设备中的,由存储设备去截获主机下发的写数据操作,以获得写数据操作中携带的待写入数据以及LBA,形成一条写操作日志记录在日志表中;在本发明另一个实施例中,写操作日志模块402可以包含在主机端,当主机下发写数据操作给存储设备时,可以由主机去截获该写数据操作,以获得写数据操作中携带的待写入数据以及LBA,形成一条写操作日志记录在日志表中;在本发明再一个实施例中,写操作日志模块402可以包含在连接设备,例如交换机中,当主机经交换机下发写数据操作给存储设备时,交换机可以通过写操作日志模块截获该写数据操作,以获得待写入数据以及LBA,形成一条写操作日志记录在日志表中。需要说明的是,当写操作日志模块402包含在存储设备中时,日志表可以存储在该存储设备中;在本发明的另一个实施例中,当写操作日志模块402包含在主机端时,日志表可以存储在主机中,以及其他与该主机连接的存储设备中;在本发明的再一个实施例中,当写操作日志模块402包含在交换机中时,日志表可以存储在与交换机连接的硬盘和其他存储设备中。对于日志保存模块405而言,将日志表中的记录保存至存储设备中,可以将日志表中的记录保存至存储设备的非易失性存储介质中,并清空该日志表在缓存中的记录,以节省缓存资源。在本发明的另一个实施例中,将日志表中的记录保存至存储设备中,可以是将日志表中的记录保存至存储设备中,并清空该日志表在主机中的记录,以节省主机资源。在本发明的再一个实施例中,可以将日志表中的记录保存至存储设备的非易失性存储介质中,并清空该日志表在缓存中的记录,以节省缓存资源。需要说明的是,这里的存储设备可以是本发明实施例的存储设备,也可以是与该交换机连接的其他存储设备。在上述实施例中,恢复模块404,可以包括快照数据获取单元4041、写操作日志获取单元4042和数据恢复单元4043。快照数据获取单元4041,用于根据指定时间点确定所述指定时间点之前的最后一次快照时间点,当所述最后一次快照时间点为所述预设的快照时间点时,得到所述预设的快照时间点对应的快照数据;这里的指定时间点可以任意的时间点,S卩,根据上述实施例所示的日志表可以恢复用户指定的任意时间点的数据。由上述实施例可知,存储设备可以预先设置快照时间点,例如将快照的时间点设置为9:00、9:10、9:20等等或者将快照的时间间隔设置为IOs或者20s或者30s等等,当预设的快照时间点或者预设的时间间隔到达时,系统会自动对某一个LUN中的数据进行快照处理。因此,可以根据指定时间点获得在该指定时间点之前最后一次预设的快照时间点。根据快照处理的方式可知,快照数据是保存在存储设备的快照区的,因此可以根据指定时间点之前最后一次预设的快照时间点,在快照区获得与该时间点的快照数据。写操作日志获取单元4042,用于获取所述预设的快照时间点之后的写操作日志;由上述实施例可知,日志表是以预设的快照点为间隔分段保存的,对于写操作日志而言,其可以包含三个字段,其中一个字段是接收写数据操作的时间点,另一个字段是待写入数据,再一个字段是LBA。因此,可以通过指定时间点与其对应的日志表。该日志表中包含了以上次预设的快照时间点为基准,一段时间内对该LBA对应的数据块进行的写操作日志。数据恢复单元4043,用于根据所述预设的快照时间点之后的写操作日志,以及所述预设的快照时间点对应的快照数据恢复所述指定时间点的数据。具体地,可以根据快照数据获取单元4041获得的指定时间点之前最后一次预设时间点的快照数据, 以及根据写操作日志获取单元4042获得的与指定时间点对应的日志表中的写操作日志恢复指定时间点的数据。更加具体地,在本发明一个实施例中,可以以最后一次预设时间点的快照数据为基准,按照日志表中写操作日志的时间顺序,依次将指定时间点前的数据变化记录覆盖到作为基准的快照数据中,直到写操作日志的时间已经到达指定的时间点。在本发明另一个实施例中,可以以最后一次预设时间点的快照数据为基准,按照日志表中的写操作日志,统计在最后一次预设时间点与指定时间点之间总共进行了多少次写数据操作,然后将最后一次写数据操作的数据变化记录覆盖到作为基准的快照数据中。在本发明实施例中,可以根据指定时间点之前最后一次预设的快照时间点的快照数据以及最后一次预设的快照时间点之后的写操作日志恢复任意指定时间点数据。在本发明另一个实施例中,恢复模块404还可以包括:判断单元4044,用于判断指定时间点是否是预设的快照时间点,如果是,则通过预设的快照时间点对应的快照数据恢复指定时间点的数据;如果否,则执行快照数据获取单元4041的动作。可以理解是,如果指定时间点正好是预设的快照时间点,则可以直接通过快照数据进行恢复,不需要再执行后面的步骤,节省了恢复数据的时间。上述实施例中描述的功能单元或者模块可以用来实施上述图2-图3的方法。此外,该存储设备还包括如上面实施例所述的其他功能,具体实现可以参见图4所示实施例中的相应模块,在此不赘述。请参考图5A,本发明实施例提供了一种存储设备500的示意图。存储设备500可能是包含存储能力的服务器,或者是个人计算机PC,或者是其他存储设备等等,本发明具体实施例并不对存储设备的具体实现做限定。存储设备500包括:处理器(processor)510,通信接口(Communications Interface) 520,存储器(memory) 530,总线 540。处理器510,通信接口 520,存储器530通过总线540完成相互间的通信。通信接口 520,用于与网元通信,比如虚拟机管理中心280、共享存储240等。处理器510,用于执行程序532。具体地,程序532可以包括程序代码,所述程序代码包括计算机操作指令。处理器510可能是一个中央处理器CPU,或者是特定集成电路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。存储器530,用于存放程序532。存储器530可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。程序532具体可以包括:写操作日志模块5322,用于在日志表中记录写操作日志,所述写操作日志包括接收的至少一条写数据操作的时间点、待写入数据以及LBA ;快照处理模块5323,用于当预设的快照时间点到达时,对所述写操作日志中的LBA对应的数据块做快照处理得到快照数据,并在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点。恢复模块5324,用于根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复。程序532中各模块的具体实现可以参见图4所示实施例中的相应模块,在此不赘述。此外,本发明实施例还提供一种存储系统,该存储系统包括存储设备和主机;存储设备各模块的具体实现可以参见图4所示实施例中的相应模块,在此不赘述。所述主机,用于向所述存储设备发送写数据操作。在存储系统的另一个实施例中,还可以包括连接设备,所述连接设备用于连接所述主机和所述存储设备。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个设备中,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部,模块来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求
1.一种数据处理方法,其特征在于,包括: 在日志表中记录写操作日志,所述写操作日志包括接收的至少一条写数据操作的时间点、待写入数据以及逻辑块地址LBA ; 当预设的快照时间点到达时,对所述写操作日志中的LBA对应的数据块做快照处理得到快照数据,并在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间占.根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复。
2.根据权利要求1所述的方法,其特征在于,所述对所述写操作日志中LBA对应的数据块做快照处理得到快照数据包括: 给所述LBA对应的数据块做快照处理的标记,以表示所述LBA对应的数据块需要做快照处理; 根据所述快照处理的标记,将所述写操作日志中每条写操作日志的LBA对应的数据块中的数据保存至快照区。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述日志表保存至存储设备中,以进行数据恢复。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:当预设的快照时间点到达时,悬挂写数据操作,并将所述待写入数据写入存储设备的非易失性存储介质中。
5.根据权利要求1所述的方法,其特征在于,所述根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复包括: 根据指定时间点确定所述指定时间点之前的最后一次快照时间点,当所述最后一次快照时间点为所述预设的快照时间点时,得到所述预设的快照时间点对应的快照数据; 获取所述预设的快照时间点之后的写操作日志; 根据所述预设的快照时间点之后的写操作日志,以及所述预设的快照时间点对应的快照数据恢复所述指定时间点的数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括: 判断所述指定时间点是否是预设的快照时间点,如果是,则通过预设的快照时间点对应的快照数据恢复所述指定时间点的数据;如果否,则执行所述根据所述指定时间点确定所述指定时间点之前的最后一次快照时间点的步骤。
7.一种存储设备,其特征在于,包括: 写操作日志模块,用于在日志表中记录写操作日志,所述写操作日志包括接收的至少一条写数据操作的时间点、待写入数据以及逻辑块地址LBA ; 快照处理模块,用于当预设的快照时间点到达时,对所述写操作日志中的LBA对应的数据块做快照处理得到快照数据,并在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点; 恢复模块,用于根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复。
8.根据权利要求7所述的存储设备,其特征在于,所述快照处理模块包括: 标记单元, 用于给所述LBA对应的数据块做快照处理的标记,以表示所述LBA对应的数据块需要做快照处理; 保存单元,用于根据所述快照处理的标记,将所述写操作日志中每条写操作日志的LBA对应的数据块中的数据保存至快照区; 记录单元,用于在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点。
9.根据权利要求7所述的存储设备,其特征在于,所述装置还包括: 日志保存模块,用于将所述日志表保存至存储设备中,以进行数据恢复。
10.根据权利要求7所述的存储设备,其特征在于,所述装置还包括: 悬挂模块,用于当预设的快照时间点到达时,悬挂写数据操作,并将所述待写入数据写入存储设备的非易失性存储介质中。
11.根据权利要求7所述的存储设备,其特征在于,所述恢复模块包括: 快照数据获取单元,用于根据指定时间点确定所述指定时间点之前的最后一次快照时间点,当所述最后一次快照时间点为所述预设的快照时间点时,得到所述预设的快照时间点对应的快照数据; 写操作日志获取单元,用于获取所述预设的快照时间点之后的写操作日志; 数据恢复单元,用于根据所述预设的快照时间点之后的写操作日志,以及所述预设的快照时间点对应的快照数据恢复所述指定时间点的数据。
12.根据权利要求11所述的存储设备,其特征在于,所述恢复模块还包括: 判断单元,用于判断所述指定时间点是否是预设的快照时间点,如果是,则通过预设的快照时间点对应的快照数据恢复所述指定时间点的数据;如果否,则执行所述快照数据获取单元执行的动作。
13.一种存储设备,其特征在于,包括:处理器、通信接口和通信总线; 其中,所述处理器和所述通信接口通过所述通信总线进行通信; 所述处理器,用于在日志表中记录写操作日志,所述写操作日志包括接收的至少一条写数据操作的时间点、待写入数据以及逻辑块地址LBA ;当预设的快照时间点到达时,对所述写操作日志中的LBA对应的数据块做快照处理得到快照数据,并在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点;根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复。
14.根据权利要求13所述的存储设备,其特征在于,所述处理器用于对所述写操作日志中LBA对应的数据块做快照处理得到快照数据包括:所述处理器用于给所述LBA对应的数据块做快照处理的标记,以表示所述LBA对应的数据块需要做快照处理;根据所述快照处理的标记,将所述写操作日志中每条写操作日志的LBA对应的数据块中的数据保存至快照区。
15.根据权利要求13所述的存储设备,其特征在于,所述处理器还用于,将所述日志表保存至存储设备中,以进行数据恢复。
16.根据权利要求13所述的存储设备,其特征在于,所述处理器还用于,当预设的快照时间点到达时,悬挂写数据操作,并将所述待写入数据写入存储设备的非易失性存储介质中。
17.根据权利要求13所述的存储设备,其特征在于,所述处理器用于根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复包括:所述处理器用于根据指定时间点确定所述指定时间点之前的最后一次快照时间点,当所述最后一次快照时间点为所述预设的快照时间点时,得到所述预设的快照时间点对应的快照数据;获取所述预设的快照时间点之后的写操作日志;根据所述预设的快照时间点之后的写操作日志,以及所述预设的快照时间点对应的快照数据恢复所述指定时间点的数据。
18.根据权利要求17所述的存储设备,其特征在于, 所述处理器还用于,判断所述指定时间点是否是预设的快照时间点,如果是,则通过预设的快照时间点对应的快照数据恢复所述指定时间点的数据;如果否,则执行所述根据所述指定时间点确定所述指定时间点之前的最后一次快照时间点的步骤。
19.一种存储系统,其特征在于,包括如权利要求7-12任意权利要求所述的存储设备和主机; 所述主机,用于向所述存储设备发送写数据操作。
20.根据权利要求19所述的存储系统,其特征在于,还包括连接设备; 所述连接设备用于连接所述主 机和所述存储设备; 所述主机,用于向所述存储设备发送写数据操作包括:所述主机,用于通过所述连接设备向所述存储设备发送写数据操作。
全文摘要
本发明实施例提供了一种数据处理方法和存储设备,其中方法包括在日志表中记录写操作日志,所述写操作日志包括接收的至少一条写数据操作的时间点、待写入数据以及逻辑块地址LBA;当预设的快照时间点到达时,对所述写操作日志中的LBA对应的数据块做快照处理得到快照数据,并在所述日志表中记录快照日志,所述快照日志包括所述预设的快照时间点;根据所述快照时间点获取所述快照数据及所述快照时间点之后的写操作日志,以进行数据恢复。
文档编号G06F11/14GK103221925SQ201280002937
公开日2013年7月24日 申请日期2012年11月23日 优先权日2012年11月23日
发明者母子安, 李毅 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1