存储系统中数据备份的方法及装置与流程

文档序号:11595827阅读:391来源:国知局

本发明涉及信息技术领域,特别涉及一种存储系统中数据备份的方法及装置



背景技术:

为了保证用户数据的可靠性,存储系统一般都提供数据复制功能,将用户数据从存储系统的源设备复制到备份端设备。当源设备故障时,通过将备份端设备的数据恢复到源设备,进而达到容灾的目的。

现有技术中,通常使用增量复制技术,将源设备发生变化的数据压缩后备份到备份端设备。但现有技术将有变化的数据块复制到备份端仍然消耗大量带宽。



技术实现要素:

第一方面,本发明实施例提供了一种存储系统中数据备份方案。其中,存储系统中包含源设备和备份端设备,源设备和备份端设备均存储有第n次快照sn的数据;源设备确定第n次快照sn后写入源设备的第一数据块,根据第一数据块的逻辑地址确定相同逻辑地址中源设备存储的第n次快照sn记录的第二数据块,第一数据块是第二数据块的修改块;其中,n表示某一次快照操作;源设备将第一数据和第二数据块进行逻辑操作得到第三数据块,压缩第三数据块得到第四数据块;源设备向备份端设备发送携带第四数据块、第一数据块的逻辑地址和第n次快照sn的版本号的数据报文;逻辑操作包括同或操作或异或操作,因为第三数据块为通过逻辑操作得到的,而第一数据块与第二数据块中大部分数据相同,因此,第三数据块包含大量的0(如使用异或操作)或1(如使用同或操作),第三数据块的压缩率高于第一数据块的压缩率,与将第一数据块直接压缩发送到备份端设备相比,减少了向备份端发送的数据量,节省了传输带宽。

备份端设备接收并解析源设备发送的数据报文获得第四数据块、所述第一数据块的逻辑地址和所述第n次快照sn的版本号;备份端设备根据所述第一数据块的逻辑地址和所述第n次快照sn的版本号,确定备份端设备存储的快照sn记录的所述第二数据块;解压缩第四数据块得到所述第三数据块;将第三数据块与第二数据块进行所述逻辑操作得到所述第一数据块;将所述第一数据块写入所述第一数据块的逻辑地址。

可选地,源设备确定第n次快照sn后写入源设备的第一数据块,包括:源设备根据第n次快照sn后数据变更日志记录的写数据请求携带的逻辑地址确定所述第一数据块。这一实现方式不需要对源设备再次进行快照操作,即可确定第一数据块。

可选地,源设备确定第n次快照sn后写入源设备的第一数据块,包括:源设备进行第x次快照sx操作,比较所述快照sn与快照sx,确定所述第一数据块;其中,n和x为整数,并且n<x。

本发明第一方面实施例提供的方案也可应用于数据恢复,源设备存储第n次快照sn的数据,备份端设备存储源设备的第n次快照sn的数据和第x次快照sx的数据;其中,n和x为整数,并且n<x,所述源设备向备份端设备发送数据恢复请求;所述数据恢复请求携带所述快照sn的版本号;备份端设备接收并解析源设备发送的数据恢复请求获得所述快照sn的版本号,根据快照sn的版本号与快照sx的版本号确定第一数据块,根据第一数据块的逻辑地址和快照sn的版本号确定快照sn记录的第二数据块,将第一数据块与第二数据块进行逻辑操作得到第三数据块,压缩第三数据块得到第四数据块,向源设备发送携带第四数据块和第一数块的逻辑地址的数据报文;其中,所述第一数据块为备份端设备备份的所述快照sx记录的所述源设备在第n次快照sn后写入的数据块;所述第一数据块为所述第二数据块的修改块;其中,所述逻辑操作为异或操作或同或操作;在数据过程中,通过逻辑操作和压缩操作,同样提高了压缩率,节省了传输带宽。

所述源设备接收并解析备份端设备发送的数据报文获得第四数据块和第一数块的逻辑地址;根据第一数据块的逻辑地址确定快照sn记录的第二数据块;解压缩所述第四数据块得到第三数据块;将第三数据块与第二数据块进行所述逻辑操作得到第一数据块;将第一数据块写入所述第一数据块的逻辑地址,从而源设备恢复到与备份端设备相同的状态。

与第一方面及第一方面应用的数据场景相对应,本发明实施例还提供了存储设备,分别用于作为第一方面实施例中存储系统中的源设备和备份端设备,以实现本发明实施例第一方面提供的方案。存储设备包括实现第一方面及第一方面应用的数据场景的发明实施例方案的结构单元,或者,存储设备包括接口和处理器以实现第一方面及第一方面应用的数据场景的实施例方案。

相应地,本发明实施例还提供了非易失性计算机可读存储介质和计算机程序产品,当本发明实施例提供的存储设备的内存加载非易失性计算机可读存储介质和计算机程序产品中包含的计算机指令,存储设备的中央处理单元(centerprocessingunit,cpu)执行该计算机指令时,使存储设备作为第一方面实施例中存储系统中的源设备和备份端设备,以实现本发明实施例第一方面提供的方案。

第二方面,本发明实施例还提供了另一种存储系统中数据备份方案。其中,存储系统包括源设备和备份端设备,源设备和备份端设备均存储有第n次快照sn的数据;源设备确定第n次快照sn后写入源设备的第一数据块,根据第一数据块的逻辑地址确定第n次快照sn记录的第二数据块;其中,第一数据块是第二数据块的修改块;源设备确定第一数据块需要循环移位的移位数,并根据移位数对第一数据块循环移位得到第三数据块;通过循环移位得到第三数据块,可使第三数据块与第二数据块同一位置有更多的相同的数据;源设备将第三数据块和第二数据块进行逻辑操作得到第四数据块;逻辑操作为异或操作或同或操作,通过逻辑操作,第四数据块中包含大量的0(如使用异或操作)或1(如使用同或操作),压缩所述第四数据块得到第五数据块;第四数据块的压缩率高于第一数据块的压缩率,与将第一数据块直接压缩发送到备份端设备相比,减少了向备份端发送的数据量,节省了传输带宽。源设备向所述备份端设备发送携带第五数据块、第一数据块的逻辑地址、移位信息和第n次快照sn的版本号的数据报文;其中,移位信息包括循环移位方向和所述移位数。

所述备份端设备接收并解析所述数据报文获得第五数据块、第一数据块的逻辑地址、移位信息和第n次快照sn的版本号,根据第一数据块的逻辑地址和第n次快照sn的版本号,确定快照sn记录的所述第二数据块,解压缩第五数据块得到第四数据块;将第四数据块与第二数据块进行所述逻辑操作得到第三数据块,根据所述移位信息将第三数据块反向循环移位得到第一数据块,将第一数据块写入第一数据块的逻辑地址。

可选地,源设备配置有如下计算规则:设定n个窗口,对数据块在每一个窗口中的至少部分数据进行hash计算,其中,每一个窗口的大小相同,第一个窗口的起始位置为所述数据块的起始位置;最后一个窗口的结束位置等于所述数据块的结束位置;第i+1个窗口的起始位置与第i个窗口的起始位置相差固定长度;n为整数且不小于2,i为整数,第i个窗口表示第1个至第n个窗口中任一个窗口;

源设备根据所述计算规则对所述第一数据块在每一个窗口中的至少部分数据进行hash计算,以及对所述第二数据块在每一个窗口中的至少部分数据进行hash计算;

源设备按照hash值设定的顺序,从所述第一数据块的hash值中选择前m个hash值,从所述第二数据块的hash值中选择前m个hash值;m为正整数并且不大于n;

源设备查找所述第一数据块的前m个hash值与所述第二数据块前m个hash值中相同的hash值,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数。

可选地,第i+1个窗口的起始位置与第i个窗口的起始位置相差的固定长度为1位,或多位。

可选地,源设备按照hash值设定的顺序,具体可以按照从小到大的顺序或者从大到小的顺序。

可选地,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数的同时,还可以确定循环移位方向,具体地,当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为正数时,则向左循环移位;当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为负数时,则向右循环移位。

可选地,源设备确定第n次快照sn后写入源设备的第一数据块,包括:源设备根据第n次快照sn后数据变更日志记录的写数据请求携带的逻辑地址确定所述第一数据块。这一实现方式不需要对源设备再次进行快照操作,即可确定第一数据块。

可选地,源设备确定第n次快照sn后写入源设备的第一数据块,包括:源设备进行第x次快照sx操作,比较所述快照sn与快照sx,确定所述第一数据块;其中,n和x为整数,并且n<x。

本发明第二方面实施例提供的方案也可应用于数据恢复,存储系统包括源设备和备份端设备,源设备存储第n次快照sn的数据,备份端设备存储源设备的第n次快照sn的数据和第x次快照sx的数据;其中,n和x为整数,并且n<x,源设备向所述备份端设备发送数据恢复请求;数据恢复请求携带所述快照sn的版本号;备份端设备接收并解析数据恢复请求获得快照sn的版本号,根据快照sn的版本号与快照sx的版本号确定第一数据块,根据第一数据块的逻辑地址和快照sn的版本号确定快照sn记录的第二数据块,确定第一数据块需要循环移位的移位数,并根据移位数对第一数据块循环移位得到第三数据块;将第三数据块与第二数据块进行逻辑操作得到第四数据块;逻辑操作为异或操作或同或操作,通过逻辑操作,第四数据块中包含大量的0(如使用异或操作)或1(如使用同或操作),压缩第四数据块得到第五数据块;第四数据块的压缩率高于第一数据块的压缩率,与将第一数据块直接压缩发送到源设备相比,减少了向源设备发送的数据量,节省了传输带宽。备份端设备向源设备发送携带第五数据块、移位信息和第一数块的逻辑地址的数据报文;其中,第一数据块为备份端设备备份的快照sx记录的源设备在第n次快照sn后写入的数据块;第一数据块为第二数据块的修改块;逻辑操作为异或操作或同或操作;移位信息包括循环移位方向和所述移位数。

源设备接收并解析数据报文获得第五数据块、移位信息和第一数块的逻辑地址,根据第一数据块的逻辑地址确定快照sn记录的第二数据块,解压缩所述第五数据块得到所述第四数据块,将第四数据块与第二数据块进行逻辑操作得到第三数据块,根据移位信息对第三数据块反向循环移位得到第一数据块,将第一数据块写入第一数据块的逻辑地址,从而源设备恢复到与备份端设备相同的状态。

可选地,备份端设备配置有如下计算规则:设定n个窗口,对数据块在每一个窗口中的至少部分数据进行hash计算,其中,每一个窗口的大小相同,第一个窗口的起始位置为所述数据块的起始位置;最后一个窗口的结束位置等于所述数据块的结束位置;第i+1个窗口的起始位置与第i个窗口的起始位置相差固定长度;n为整数且不小于2,i为整数,第i个窗口表示第1个至第n个窗口中任一个窗口;

备份端设备根据计算规则对所述第一数据块在每一个窗口中的至少部分数据进行hash计算,以及对所述第二数据块在每一个窗口中的至少部分数据进行hash计算;

备份端设备按照hash值设定的顺序,从所述第一数据块的hash值中选择前m个hash值,从所述第二数据块的hash值中选择前m个hash值;m为正整数并且不大于n;

备份端设备查找所述第一数据块的前m个hash值与所述第二数据块前m个hash值中相同的hash值,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数。

可选地,第i+1个窗口的起始位置与第i个窗口的起始位置相差的固定长度为1位,或多位。

可选地,备份端设备按照hash值设定的顺序,具体可以按照从小到大的顺序或者从大到小的顺序。

可选地,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数的同时,还可以确定循环移位方向,具体地,当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为正数时,则向左循环移位;当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为负数时,则向右循环移位。

与第二方面及第二方面应用的数据场景相对应,本发明实施例还提供了存储设备,分别用于作为第二方面实施例中存储系统中的源设备和备份端设备,以实现本发明实施例第二方面提供的方案。存储设备包括实现第二方面及第二方面应用的数据场景的发明实施例方案的结构单元,或者,存储设备包括接口和处理器以实现第二方面及第二方面应用的数据场景的实施例方案。

相应地,本发明实施例还提供了非易失性计算机可读存储介质和计算机程序产品,当本发明实施例提供的存储设备的内存加载非易失性计算机可读存储介质和计算机程序产品中包含的计算机指令,存储设备的中央处理单元(centerprocessingunit,cpu)执行该计算机指令时,使存储设备作为第二方面实施例中存储系统中的源设备和备份端设备,以实现本发明实施例第二方面提供的方案。

附图说明

图1为本发明实施例存储系统示意图;

图2a为本发明实施例确定移位数的方法示意图;

图2b为本发明实施例确定移位数的方法示意图;

图3为本发明实施例循环移位示意图;

图4为本发明实施例异或操作示意图;

图5为本发明实施例压缩操作示意图;

图6为本发明实施例数据报文示意图;

图7为本发明实施例异或移位操作示意图;

图8为要发明实施例反向循环示意图;

图9为本发明实施例数据备份后存储系统示意图;

图10为本发明实施例应用场景示意图;

图11为本发明实施例应用场景示意图;

图12为本发明实施例存储设备结构示意图;

图13为本发明实施例存储设备结构示意图;

图14为本发明实施例存储设备结构示意图;

图15为本发明实施例存储设备结构示意图;

图16为本发明实施例存储设备结构示意图。

具体实施例

如图1所示,存储系统包括源设备101和备份端设备102,源设备101在第n次快照sn时,存储数据块1、数据块2、数据块3和数据块4。备份端设备102存储源设备101第n次快照sn的备份,即存储有数据块1、数据块2、数据块3和数据块4。在第n次快照sn后,源设备101的数据块2被修改为数据块2’。根据快照实现机制,数据块2在快照sn中保存,同时记录数据块2’,数据块2’为对数据块2修改后的数据块(也就是说,数据块2’为数据块2的修改块)。因为备份端设备102已经备份源设备101在快照sn的数据,备份端设备102进行了快照sn操作,即在备份端设备102也通过快照sn操作记录了快照sn时刻的状态。因此再将源设备101中的数据备份到备份端时,只需要备份数据块2’。通常,为保证将数据块2’备份到备份端设备102的过程中不被修改,通常需要进行对源设备101进行快照操作,该快照操作可以是sx,其中,n和x为整数,并且n<x。如图1所示,快照sx记录源设备101存储数据块1、数据块2’、数据块3和数据块4。数据块2在快照sn中记录的逻辑地址与数据块2’在快照sx记录的逻辑地址相同,即数据块2和数据块2’表示同一逻辑地址在不同时刻的状态。本发明实施例中,快照记录的数据、存储的快照的数据或快照的数据,均表示快照时刻记录的设备存储的数据。其中,快照(snapshot)是关于指定数据集合的一个完全可用拷贝,该拷贝包括数据在某个时间点(拷贝开始的时间点)的映像,具体含义可参见存储网络行业协会(storagenetworkingindustryassociation,snia)的定义。通常快照有两种实现方式,即写时复制(copyonwrite,cow)和写重定向(redirectonwrite,row),在此不再赘述。可选地,可以通过将快照sx与快照sn进行比对,以确定修改后的数据块2’。可选地,还可以通过数据变更日志(datachangelog,dcl)来确定修改后数据块。通过dcl方式,源设备101记录第n次快照sn后,源设备101接收到的写数据请求,解析写数据请求获得写数据请求携带的逻辑地址,当收到的写数据请求携带的地址为第n次快照sn记录的数据块的逻辑地址时,则数据块被修改。以图1为例,当源设备101通过dcl记录第n次快照sn后,源设备101接收到的写数据请求携带数据块2的逻辑地址,则确定数据块2被修改。

步骤1:源设备101确定数据块2’为数据块2在第n次快照sn后的修改块。

本发明实施例以数据块2’为001111100000101000100011为例(为方便阅读,将数据块2’的内容以4位为单位进行展示)。

步骤2:源设备根据数据块2’的逻辑地址确定第n次快照sn记录的数据块2。

本发明实施例中数据块2为111000011010001000110100。

步骤3:确定数据块2’循环移位的移位数,并根据移位数对数据块2’循环移位。

可选地,如图2a所示,源设备101设备有如下计算规则:设定n个窗口,对数据块在每一个窗口中的至少部分数据进行hash计算,其中,每一个窗口的大小相同,第一个窗口的起始位置为数据块的起始位置;最后一个窗口的结束位置等于数据块的结束位置;第i+1个窗口的起始位置与第i个窗口的起始位置相差固定长度;n为整数且不小于2,i为整数,第i个窗口表示第1个至第n个窗口中任一个窗口。

根据上述计算规则:例如,设置21个窗口(例如窗口大小为4位),相邻窗口的起始位置相差1位(即第i+1个窗口的起始位置与第i个窗口的起始位置相差1位),源设备101对数据块2在每一个窗口中的至少部分数据进行hash计算,以及对数据块2’在每一个窗口中的至少部分数据进行hash计算;按照hash值从大到小的顺序,从数据块2的21个窗口中选择前4个hash值,分别为a、b、c和d,这4个hash值对应的窗口分别为窗口1、窗口3、窗口9和窗口11,窗口1、窗口3、窗口9和窗口11对应的偏移分别为0、2、8和10。其中,窗口对应的偏移是指窗口的起始位置相对数据块的起始位置相差的位数,如在数据块2中,窗口1的起始位置相对数据块2的起始位置相差的0位,窗口3的起始位置相对数据块2的起始位置相差的2位;同样,按照hash值从大到小的顺序,从数据块2’的21个窗口中选择前4个hash值,分别为a、e、c和d,这4个hash值对应的窗口分别为窗口5’、窗口17’、窗口13’和窗口15’,窗口5’、窗口17’、窗口13’和窗口15’对应的偏移分别为0、2、8和10分别为4、16、12和14。源设备101查找这两组中相同的hash值,即hash值a、c和d。源设备101确定相同hash值对应的窗口的偏移之差作为移位数。如hash值为a的窗口1和窗口5’的偏移之差为4,如hash值为c的窗口9和窗口13’的偏移之差为4,说明两个数据块间很可能内容相同但是有错位现象,通过向左循环移4位能保证两个数据块的相同内容对齐。如果上述方法中得到的偏移之差为-4,则向右循环移4位。当这两组中的hash值均相同,并且相同hash值对应的偏移也相同,则表示不需要移位,即循环移0位。本发明实施例中,按照hash值从大到小的顺序,选择4个hash值仅是示例性的;可选地,第i+1个窗口的起始位置与第i个窗口的起始位置相差固定长度也可以为多位。可选地,也可以按照hash值从小到大的顺序。如图3所示,本发明实施例中,确定数据块2’和数据块2相差4位,则将数据块2’向左循环移位4位,得到移位后的数据块(称为移位的数据块)为111000001010001000110011。其中,所谓循环移位,是计算机术语,是指在向一端移位时不丢失移位前原范围的位,而是将它们作为另一端的补入位。例如,向左循环移4位,将0011作为右端的补入位。

可选地,如图2b所示,首先,将数据块2’与数据块2进行异或操作,得到异或的数据块a1,获得异或的数据块a1中包含0的数量为10;然后将数据块2’向左循环移1位,将向左循环移1位得到的数据块与数据块2进行异或操作,得到异或的数据块a2,获得异或的数据块a2中包含0的数量为10;按照上述规则,直到将数据块2’向左循环移23位,将向左循环移23位得到的数据块与数据块2进行异或操作,得到异或的数据块a23,确定异或的数据块a23中包含0的数量。从异或的数据块a1到a23中确定包含0的数量最多的异或的块,本发明实施例中为异或的数据块a5,则确定将数据块2’向左循环移4位。如果异或的数据块a1为全0数据,则不需要进行循环移位。从上面的描述可知,异或操作得到的数据中0的位数越多,两个数据块相同的数据越多,。

通过循环移位,使得数据块2’移位后得到的移位的数据块与数据块2有更多相同的数据,从而使得接下来的异或操作得到的数据块有更多的位为0。当不需要循环移位,即数据块2’与数据块2中每一位相同,则循环移0位。

步骤4:将移位的数据块与数据块2进行异或操作,得到数据块(也就是异或的数据块)为000000010000000000000111,具体如图4所示。

步骤5:源设备101对得到的异或的数据块进行压缩操作。

源设备101对异或的数据块进行压缩操作具体可以使用lz4压缩算法、zlib压缩算法以及游程编码(run-lengthencoding,rle)压缩算法等。本发明实施例对此不作限定。

以源设备101使用rle压缩算法对异或的数据块进行压缩为例,如图5所示的实例方式,rle算法从左到右遍历异或的数据块,将连续重复的数据用出现的次数代替,则将异或的数据块压缩后表示如下:0(7)1(1)0(13)1(3),其中0(7)表示0连续出现7次,1(1)表示1连续出现1次,0(13)表示0连续出现13次,1(3)表示1连续出现3次。上述表示方式是为方便理解与区分,实际实现可参考rle压缩算法描述(请参见https://en.wikipedia.org/wiki/run-length_encoding)。

源设备101通过上述步骤,与直接压缩修改后的数据块相比,减少了向备份端设备102发送的数据量,从而节省了传输带宽。

步骤6:源设备101将压缩后的数据块封装到数据报文,发送数据报文到备份端设备102,数据报文中携带数据块2’的逻辑地址、数据块2’的移位信息、压缩后的数据块以及快照sn的版本号。其中,移位信息包括循环移位方向和移位数。

本发明实施例中对发送备份数据的数据报文的协议不作限定。一种实现方式,如图6所示,在原有数据报文新增601、602、603和604四个字段。其中,601用于表示数据块2’的逻辑地址,同时也是数据块2的逻辑地址;602表示第n次快照sn的版本号,603用于表示数据块2’的移位信息(本发明实施列中移位数为向左循环移位4位),604用于携带压缩后的数据块。具体实现中,上述字段顺序并没有限制。603字段中可以用首位表示循环移位的方式,例如0表示向左循环移位,1表示向右循环移位,除首位外的位表示循环移位的移位数,或者默认向一个方向循环移位。快照的版本号为快照的标识,一种实现为随着快照的增加而线性递增。

步骤7:备份端设备102接收并解析数据报文,得到数据报文中携带数据块2’的逻辑地址、数据块2’的移位信息、压缩后的数据块以及快照sn的版本号。

具体地,当以图6所示的数据报文为例,备份端设备102解析数据报文得到字段601、602、603和604中的信息。目标端设备102将字段604中携带的压缩的数据块解压缩。因为字段604中携带的压缩的数据块是通过rle压缩算法得到的,因此,将0(7)10(13)1(3)解压缩为000000010000000000000111,即源设备101端的异或的数据块。根据字段601携带的修改的数据块2’的逻辑块地址以及字段602中携带的第n次快照sn的版本号,在备份端设备102确定备份端设备102第n次快照sn记录的数据块2,获得数据块2为111000011010001000110100。如图7所示,备份端设备102将数据块2与异或的数据块进行异或操作,得到源设备101移位的数据块111000001010001000110011,也就是数据块2’移位后的数据块。备份端设备102根据字段603携带的移位信息,进行反向循环移位,如图8所示,本发明实施例中,反向循环移位为向右循环移位4位,得到源设备101数据块2’。

步骤8:备份端设备102将数据块2’写入所述从源设备101接收到的数据报文中所携带的数据块2’的逻辑块地址。

具体实现中,备份端设备102与源设备101具有相同的逻辑地址,因此备份端设备102存储数据块2’的逻辑地址与源设备101存储数据块2’的逻辑地址。在上述方案中,备份端设备102根据数据块2’的逻辑地址,对备份端设备102存储的数据块中的数据块2进行修改得到数据块2’,使得备份端设备102存储有存储数据块1、数据块2’、数据块3和数据块4。

因为备份端设备102对数据块1、数据块2、数据块3和数据块4已经进行了快照操作,得到备份端设备102的快照sn。因此,当备份端设备102对存储的数据块2进行修改得到数据块2’时,同时维持了数据块2。

当步骤8之后,数据备份端设备102对备份端进行第x次快照操作,得到快照sx。具体如图9所示,以快照sx时刻备份端设备102存储的数据有数据块1、数据块2’、数据块3和数据块4为例。数据块2在快照sn中记录的逻辑地址与数据块2’在快照sx记录的逻辑地址相同,即数据块2和数据块2’表示同一逻辑地址在不同时刻的状态。

当源设备101发生故障造成数据丢失时,可以利用备份端设备102的快照数据进行恢复。本发明实施例中,可以通过备份端设备102将源设备101恢复到第x次快照sx时的状态。例如,源设备101由于故障丢失了快照sx记录的数据块2’(也就是对数据块2修改后的数据块),只有快照sn时的数据(或称为快照sn时的状态),则源设备101向备份端设备102发送数据恢复请求,数据恢复请求中携带源设备101当前的快照sn版本号。则备份端设备102根据数据恢复请求中携带源设备101当前的快照sn版本号确定源设备101只有快照sn时刻的数据。第一种实现方式,备份端设备102根据源设备101当前的快照sn版本号,确定需要恢复的数据为数据块2’,将则数据块2’的逻辑块地址以及数据块2’发送到源设备101,源设备101接收数据块2’的逻辑块地址以及数据块2’,将数据块2’写入源设备101上数据块2’的逻辑块地址,从而使源设备101恢复到第x次快照sx时的状态。具体可参考现有基于快照实现源设备数据恢复的方案,在此不再赘述。

另一种实现方式,备份端设备102根据源设备101发送的数据恢复请求确定需要恢复的数据为数据块2’,备份端设备102根据数据块2’的逻辑地址确定快照sn记录的数据块2。备份端设备102确定数据块2’的循环移位的移位数,根据移位数对数据块2’循环移位,得到移位的数据块,将移位的数据块与数据块进行异或操作,得到压缩的数据块将压缩的数据块、数据块2’的逻辑块地址、第n次快照sn的版本号和数据块2’的移位信息封装到数据报文中发送到源设备101。具体实现可参考步骤2-7,具体数据报文格式可参考图6。相对于第一种实现方式,减少了数据恢复过程中备份端设备102向源设备101发送的数据量,节省了传输带宽。源设备101接收并解析备份端设备102发送的数据报文,根据接收到的报文执行执行异或操作、反向循环移位操作和数据写入操作,得到数据块2’。具体实现可以参考上述步骤7和步骤8,将数据块2’写入数据块2’的逻辑地址,从而源设备101恢复到快照sx时的状态。

本发明另一实施例提供了源设备101将数据块2’备份到备份端设备102的另一种实现方式,步骤1’和步骤2’分别如前面步骤1和2,在此不再赘述。

步骤3’:将数据块2’与数据块2进行异或操作,得到异或的数据块为110111111010100000010111。具体异或操作可参考图4。

步骤4’:将异或的数据块110111111010100000010111进行压缩。具体实现可参考步骤5的描述,在此不再赘述。

步骤5’:源设备101将压缩后的数据块封装到数据报文,发送数据报文到备份端设备102。数据报文中携带数据块2’的逻辑地址、压缩后的数据块以及快照sn的版本号。

具体实现可参考图6,数据报文包含字段601、602和604(因为不需要循环移位操作,因此不需要字段603)。其中,601用于表示数据块2’的逻辑地址,同时也是数据块2的逻辑地址;602表示第n次快照sn的版本号,604用于携带压缩后的数据块。具体实现中,上述字段顺序并没有限制。

步骤6’:目标端设备102接收并解析数据报文,得到字段601、602和604中的信息。目标端设备102将字段604中携带的压缩的数据块解压缩。根据字段601携带的修改的数据块2’的逻辑块地址以及字段602中携带的第n次快照sn的版本号,在备份端设备102确定备份端设备102第n次快照sn记录的数据块2,备份端设备102将数据块2与异或的数据块110111111010100000010111进行异或操作,得到数据块2’。

步骤7’如前面步骤8,在此不再赘述。

在备份端设备102对源设备103进行数据恢复的另一种实现方式中,备份端设备102根据源设备101发送的数据恢复请求确定需要恢复的数据为数据块2’,备份端设备102根据数据块2’的逻辑地址找到快照sn记录的数据块2。备份端设备102分别使用前面源设备101执行步骤3’和4’的方式,得到压缩的数据块。备份端设备102将压缩的数据块、数据块2’的逻辑块地址和第n次快照sn的版本号封装到数据报文中发送到源设备101。具体数据报文格式可参考步骤5’。因此,减少了数据恢复过程中备份端设备102向源设备101发送的数据量,节省了传输带宽。源设备101接收并解析备份端设备102发送的数据报文,使用备份端设备102执行的步骤6’和步骤7’的方式,得到数据块2’,将数据块2’写入数据块2’的逻辑地址,从而源设备101恢复到快照sx时的状态。

本发明各实施例中的异或操作也可以替换为同或操作,可达到相同的效果。具体的,在确定移位数的实现方式中,如果使用同或操作,则将数据块2’与数据块2进行同或操作,得到同或的数据块a1,获得同或的数据块a1中包含1的数量;然后将数据块2’向左循环移1位,将向左循环移1位得到的数据块与数据块2进行同或操作,得到同或的数据块a2,获得同或的数据块a2中包含1的数量;按照上述规则,直到将数据块2’向左循环移23位,将向左循环移23位得到的数据块与数据块2进行同或,得到同或的数据块a23,确定同或的数据块t中包含1的数量。从同或的数据块a1到a23中确定包含1的数量最多的同或的块,本发明实施例中为同或的数据块a5,则确定将数据块2’向左循环移4位。如果同或的数据块a1为全1数据,则不需要进行循环移位。

本发明各实施描述的数据备份方法与本发明实施例中的数据恢复方法可以相互结合使用,也可以独立使用。

本发明实施例中的源设备101和备份端设备102可以为存储阵列。即源设备101为源存储阵列,备份端设备102为备份端存储阵列。存储阵列结构如图10所示,包括存储控制器和多块硬盘。其中,存储控制器包括中央处理单元(centerprocessingunit,cpu)和内存,cpu和内存通过总线进行通信,存储控制器还包含与主机和硬盘通信的接口。存储控制器将硬盘进行逻辑组合,根据需要划分成不同的raid组。存储控制器将raid组的可用容量划分成较小的单元,称为逻辑单元(logicunit)。每个逻辑单元会被分配一个唯一的标识,称为逻辑单元编号(logicalunitnumber,lun)。存储控制器将一个逻辑单元分配给分配给主机使用,即将该逻辑单元的lun暴露给该主机,具体实现可参考存储技术领域中逻辑单元分配技术。本发明实施例对源存储阵列进行备份,可以是对存储阵列中某一个逻辑单元中的数据块进行备份,也可以对多个逻辑单元进行备份。在存储阵列场景下,通过dcl技术确定修改的数据块,具体为存储控制器通过解析写数据请求携带的数据块的地址记录修改的数据块的逻辑地址,即记录携带的数据块的的逻辑块地址(logicblockaddress,lba)和长度。在图6所示的字段601携带的则为修改的数据块2’的lba和长度。

本发明实施例中的源设备101和备份端设备102可以为网络连接存储(networkattachedstorage,nas),如图11所示,包括nas头和存储阵列(参见图9)。nas头包括cpu和内存,nas头还包括存储业界标准的存储协议和端口,用于连接和管理物理磁盘资源。nas头cpu执行文件共享协议,实现文件访问。具体地,文件共享协议包括网络文件系统(networkfilesystem,nfs)、通用互联网文件系统(commoninternetfilesystem,cifs)等。本发明实施例对源nas进行备份,可以是对nas中的文件系统进行备份。在nas场景下,通过dcl技术确定修改的数据块,具体为nas头通过解析写数据请求携带的数据块的地址记录确定修改的数据块的地址,即记录携带的文件标识、偏移量(offset)和长度。在图6所示的字段601携带的则为文件标识、偏移量(offset)和长度。

如图12所示,本发明实施例提供了一种存储设备,所述存储设备用于作为存储系统中的源设备101,所述存储系统还包括源设备101的备份端设备102,可参考图1所示的存储系统,存储设备101和备份端设备102均存储有第n次快照sn的数据;n为整数,所述存储设备101包括接口1201和处理器1202,接口1201与处理器1202通过总线通信,处理器1202,用于确定第n次快照sn后写入存储设备101的第一数据块;根据所述第一数据块的逻辑地址确定第n次快照sn记录的第二数据块;其中,所述第一数据块是所述第二数据块的修改块;对所述第一数据和所述第二数据块进行逻辑操作得到第三数据块;其中,所述逻辑操作为异或操作或同或操作;压缩所述第三数据块得到第四数据块;接口1201用于向所述备份端设备102发送携带所述第四数据块、所述第一数据块的逻辑地址和所述第n次快照sn的版本号的数据报文。可选地,处理器1202具体用于根据第n次快照sn后数据变更日志记录的写数据请求携带的逻辑地址确定所述第一数据块。可选地,处理器1202具体用于进行第x次快照sx操作,比较所述快照sn与快照sx,确定所述第一数据块;其中,n和x为整数,并且n<x。

如图12所示,本发明实施例提供了一种存储设备,所述存储设备用于作为存储系统中的备份端设备102,所述存储系统还包括备份端设备102的源设备101,可参考图1所示的存储系统,所述存储设备102和所述源设备101均存储有第n次快照sn的数据;n为整数,所述存储设备102包括接口1201和处理器1202,接口1201与处理器1202通过总线通信,接口1201用于接收并解析所述源设备101发送的数据报文获得第四数据块、第一数据块的逻辑地址和所述第n次快照sn的版本号;处理器1202,用于根据所述第一数据块的逻辑地址和所述第n次快照sn的版本号,确定所述快照sn记录的第二数据块;其中,所述第一数据块为所述源设备在第n次快照sn后写入的数据块;所述第一数据块为所述第二数据块的修改块;解压缩所述第四数据块得到第三数据块;将所述第三数据块和所述第二数据块进行逻辑操作得到所述第一数据块;其中,所述逻辑操作为异或操作或同或操作;将所述第一数据块写入所述第一数据块的逻辑地址。

如图12所示,本发明实施例提供了一种存储设备,所述存储设备用于作为存储系统中的备份端设备102,所述存储系统还包括备份端设备102的源设备101,可参考图9所示的存储系统,所述存储设备102和所述源设备101均存储有第n次快照sn的数据;n为整数,所述存储设备102包括接口1201和处理器1202,接口1201,用于接收并解析所述源设备101发送的数据恢复请求获得所述快照sn的版本号;处理器1202用于根据所述快照sn的版本号与所述快照sx的版本号确定所述快照sx记录的第一数据块;根据所述第一数据块的逻辑地址和所述快照sn的版本号确定所述快照sn记录的存储于所述逻辑地址中的第二数据块;其中,所述第一数据块为所述存储设备102备份的所述快照sx记录的所述源设备101在第n次快照sn后写入的数据块;所述第一数据块为所述第二数据块的修改块;将所述第一数据块与所述第二数据块进行逻辑操作得到第三数据块;其中,所述逻辑操作为异或操作或同或操作;压缩所述第三数据块得到第四数据块;接口1202还用于向所述源设备101发送携带所述第四数据块和所述第一数块的逻辑地址的数据报文。

如图12所示,本发明实施例提供了一种存储设备,所述存储设备用于作为存储系统中的源设备101,所述存储系统还包括源设备101的备份端设备102,可参考图9所示的存储系统,所述存储设备101和所述备份端设备102均存储有第n次快照sn的数据;n为整数,所述存储设备101包括接口1201和处理器1202,接口1201与处理器1202通过总线通信,接口1201用于向所述备份端设备102发送数据恢复请求;所述数据恢复请求携带所述快照sn的版本号;接收并解析所述备份端设备根据所述数据恢复请求发送的数据报文获得第四数据块和第一数块的逻辑地址;所述第一数据块为所述备份端设备102备份的所述快照sx记录的所述逻辑地址中所述存储设备101在第n次快照sn后写入的数据块;处理器1202,用于根据所述第一数据块的逻辑地址确定源设备存储的所述快照sn记录的第二数据块;所述第一数据块为所述第二数据块的修改块;解压缩所述第四数据块得到第三数据块;将所述第三数据块与所述第二数据块进行逻辑操作得到所述第一数据块;其中,所述逻辑操作为异或操作或同或操作;将所述第一数据块写入所述第一数据块的逻辑地址。

如图12所示,本发明实施例提供了一种存储设备,所述存储设备作为存储系统中的源设备101,所述存储系统还包括源设备101的备份端设备102,可参考图1所示的存储系统,所述源设备101和所述备份端设备102均存储有第n次快照sn的数据;n为整数,所述存储设备101包括接口1201和处理器1202,接口1201和处理器1202通过总线通信;处理器1202,用于确定第n次快照sn后写入所述源设备的第一数据块;根据所述第一数据块的逻辑地址确定第n次快照sn记录的第二数据块;其中,所述第一数据块是所述第二数据块的修改块;确定所述第一数据块需要循环移位的移位数;根据所述移位数对所述第一数据块循环移位得到第三数据块;将所述第三数据块和所述第二数据块进行逻辑操作得到第四数据块;其中,所述逻辑操作为异或操作或同或操作;压缩所述第四数据块得到第五数据块;接口1201,用于向所述备份端设备102发送携带所述第五数据块、所述第一数据块的逻辑地址、移位信息和所述第n次快照sn的版本号的数据报文;其中,所述移位信息包括循环移位方向和所述移位数。可选地,所述存储设备101配置有如下计算规则:设定n个窗口,对数据块在每一个窗口中的至少部分数据进行hash计算,其中,每一个窗口的大小相同,第一个窗口的起始位置为所述数据块的起始位置;最后一个窗口的结束位置等于所述数据块的结束位置;第i+1个窗口的起始位置与第i个窗口的起始位置相差固定长度;n为整数且不小于2,i为整数,第i个窗口表示第1个至第n个窗口中任一个窗口;处理器1202具体用于:根据所述计算规则对所述第一数据块在每一个窗口中的至少部分数据进行hash计算,以及对所述第二数据块在每一个窗口中的至少部分数据进行hash计算;按照hash值设定的顺序,从所述第一数据块的hash值中选择前m个hash值,从所述第二数据块的hash值中选择前m个hash值;m为正整数并且不大于n;查找所述第一数据块的前m个hash值与所述第二数据块前m个hash值中相同的hash值,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数。可选地,第i+1个窗口的起始位置与第i个窗口的起始位置相差的固定长度为1位,或多位。可选地,备份端设备按照hash值设定的顺序,具体可以按照从小到大的顺序或者从大到小的顺序。可选地,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数的同时,还可以确定循环移位方向,具体地,当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为正数时,则向左循环移位;当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为负数时,则向右循环移位。可选地,处理器1202具体用于根据所述第n次快照sn后数据变更日志记录的写数据请求携带的逻辑地址确定所述第一数据块。可选地,处理器1202具体用于对所述源设备101进行第x次快照sx操作,比较所述快照sn与快照sx,确定所述第一数据块;其中,n和x为整数,并且n<x。

如图12所示,本发明实施例提供了一种存储设备,所述存储设备用于作为存储系统中的备份端设备102,所述存储系统还包括备份端设备102的源设备101,可参考图1所示的存储系统,所述源设备101和所述备份端设备102均存储有第n次快照sn的数据;n为整数,所述存储设备102包括接口1201和处理器1202,接口1201和处理器1202通过总线通信;接口1201,用于接收并解析所述源设备101发送的数据报文获得第五数据块、第一数据块的逻辑地址、移位信息和所述第n次快照sn的版本号;处理器1202,用于根据所述第一数据块的逻辑地址和所述第n次快照sn的版本号,确定所述快照sn记录的第二数据块;其中,所述第一数据块为所述源设备在第n次快照sn后写入的数据块;所述第一数据块为所述第二数据块的修改块;解压缩所述第五数据块得到第四数据块;将所述第四数据块和所述第二数据块进行逻辑操作得到第三数据块;其中,所述逻辑操作为异或操作或同或操作;根据所述移位信息对所述第三数据块进行反向循环移位得到所述第一数据块;其中,所述移位信息包含所述源设备101对所述第一数据块循环移位得到所述第三数据块所需要的移位数以及循环移位方向;将所述第一数据块写入所述第一数据块的逻辑地址。

如图12所示,本发明实施例提供了一种存储设备,所述存储设备用于作为存储系统中的备份端设备102,所述存储系统还包括备份端设备102的源设备101,可参考图9所示的存储系统,所述源设备101存储第n次快照sn的数据,所述备份端设备102存储所述源设备的第n次快照sn的数据和第x次快照sx的数据;其中,n和x为整数,并且n<x,所述存储设备102包括接口1201和处理器1202,接口1201和处理器1202通过总线通信;接口1201,用于接收所述源设备101发送的数据恢复请求,所述数据恢复请求中携带有所述快照sn的版本号;处理器1202,用于根据所述快照sn的版本号与所述快照sx的版本号确定所述快照sx记录的第一数据块,其中,所述第一数据块为所述备份端设备102备份的所述快照sx记录的所述源设备101在第n次快照sn后写入的数据块;根据所述第一数据块的逻辑地址和所述快照sn的版本号确定所述快照sn记录的存储于所述逻辑地址中的第二数据块;确定所述第一数据块需要循环移位的移位数;根据所述移位数对所述第一数据块循环移位得到第三数据块;将所述第三数据块和所述第二数据块进行逻辑操作得到第四数据块;压缩所述第四数据块得到第五数据块;其中,所述逻辑操作为异或操作或同或操作;所述接口,用于向所述源设备101发送携带所述第五数据块、所述第一数块的逻辑地址和移位信息的数据报文;其中,所述移位信息包括循环移位方向和所述移位数。可选地,所述存储设备101配置有如下计算规则:设定n个窗口,对数据块在每一个窗口中的至少部分数据进行hash计算,其中,每一个窗口的大小相同,第一个窗口的起始位置为所述数据块的起始位置;最后一个窗口的结束位置等于所述数据块的结束位置;第i+1个窗口的起始位置与第i个窗口的起始位置相差固定长度;n为整数且不小于2,i为整数,第i个窗口表示第1个至第n个窗口中任一个窗口;处理器1202具体用于:根据所述计算规则对所述第一数据块在每一个窗口中的至少部分数据进行hash计算,以及对所述第二数据块在每一个窗口中的至少部分数据进行hash计算;按照hash值设定的顺序,从所述第一数据块的hash值中选择前m个hash值,从所述第二数据块的hash值中选择前m个hash值;m为正整数并且不大于n;查找所述第一数据块的前m个hash值与所述第二数据块前m个hash值中相同的hash值,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数。可选地,第i+1个窗口的起始位置与第i个窗口的起始位置相差的固定长度为1位,或多位。可选地,备份端设备按照hash值设定的顺序,具体可以按照从小到大的顺序或者从大到小的顺序。可选地,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数的同时,还可以确定循环移位方向,具体地,当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为正数时,则向左循环移位;当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为负数时,则向右循环移位。

如图12所示,本发明实施例提供了一种存储设备,所述存储设备用于存储系统中的源设备101,所述存储系统还包括源设备101的备份端设备102,可参考图9所示的存储系统,所述存储设备101存储第n次快照sn的数据,所述备份端设备102存储所述存储设备101的第n次快照sn的数据和第x次快照sx的数据;其中,n和x为整数,并且n<x,其特征在于,所述源设备101包括接口1201和处理器1202,接口1201和处理器1202通信总线通信;接口1202,用于向所述备份端设备102发送数据恢复请求;所述数据恢复请求携带所述快照sn的版本号;接收并解析所述备份端设备102根据所述数据恢复请求发送的数据报文获得第五数据块、第一数块的逻辑地址和移位信息,其中,所述第一数据块为所述备份端设备102备份的所述快照sx记录的所述逻辑地址中所述存储设备101在第n次快照sn后写入的数据块;处理器1202,用于根据所述第一数据块的逻辑地址确定所述存储设备101存储的快照sn记录的第二数据块,所述第一数据块为所述第二数据块的修改块;解压缩所述第五数据块得到第四数据块;将所述第四数据块与所述第二数据块进行逻辑操作得到所述第三数据块;其中,所述逻辑操作为异或操作或同或操作;根据所述移位信息对所述第三数据块反向循环移位得到所述第一数据块;其中,所述移位信息包含所述备份端设备102对所述第一数据块循环移位得到所述第三数据块所需要的移位数以及循环移位方向;将所述第一数据块写入所述第一数据块的逻辑地址。

本发明上述实施例中的存储设备中的接口1201和处理器1202,可以为物理结构,也可为逻辑上的划分,具体实现中,接口1201的部分功能也可由处理器1202实现,或集成到处理器中(即接口为处理器中一部分)。关于存储设备的具体功能,可参考前面实施例中源设备101和备份端设备102的功能,在此不再赘述。

如图13所示,本发明实施例提供了一种存储设备,用于作为存储系统中的源设备101,存储系统还包括源设备101的备份端设备102,可参考图1所示的存储系统,所述存储设备101和所述备份端设备102均存储有第n次快照sn的数据,n为整数;所述存储设备101包括确定单元1301,逻辑操作单元1302、压缩单元1303和发送单元1304。其中,确定单元1301,用于确定第n次快照sn后写入所述存储设备101的第一数据块;根据所述第一数据块的逻辑地址确定第n次快照sn记录的第二数据块;其中,所述第一数据块是所述第二数据块的修改块;逻辑操作单元1302,用于对所述第一数据和所述第二数据块进行逻辑操作得到第三数据块;其中,所述逻辑操作为异或操作或同或操作;压缩单元1303,用于压缩所述第三数据块得到第四数据块;发送单元1304,用于向所述备份端设备102发送携带所述第四数据块、所述第一数据块的逻辑地址和所述第n次快照sn的版本号的数据报文。可选地,确定单元1301具体用于根据所述第n次快照sn后数据变更日志记录的写数据请求携带的逻辑地址确定所述第一数据块。可选地,确定单元1301具体用于进行第x次快照sx操作,比较所述快照sn与快照sx,确定所述第一数据块;其中,n和x为整数,并且n<x。

如图14所示,本发明实施例提供了一种存储设备,所述存储设备用于作为存储系统中的备份端设备102,所述存储系统还包括备份端设备102的源设备101,可参考图1所示的存储系统,所述存储设备102和所述源设备101均存储有第n次快照sn的数据,n为整数;所述存储设备102包括:接收解析单元1401、确定单元1402、解压缩单元1403、逻辑操作单元1404和写入单元1405。其中,接收解析单元1401,用于接收并解析所述源设备101发送的数据报文获得第四数据块、第一数据块的逻辑地址和所述第n次快照sn的版本号;确定单元1402,用于根据所述第一数据块的逻辑地址和所述第n次快照sn的版本号,确定所述快照sn记录的第二数据块;其中,所述第一数据块为所述源设备101在第n次快照sn后写入的数据块;所述第一数据块为所述第二数据块的修改块;解压缩单元1403,用于解压缩所述第四数据块得到第三数据块;逻辑操作单元1404,用于将所述第三数据块和所述第二数据块进行逻辑操作得到所述第一数据块;其中,所述逻辑操作为异或操作或同或操作;写入单元1405,用于将所述第一数据块写入所述第一数据块的逻辑地址。

如图15所示,本发明实施例提供了一种存储设备,所述存储设备用于作为存储系统中的备份端设备102,所述存储系统还包括备份端设备102的源设备101,可参考图9所示的存储系统,所述存储设备102和所述源设备101均存储有第n次快照sn的数据,n为整数;所述存储设备102包括接收解析单元1501、确定单元1502、逻辑操作单元1503、压缩单元1504和发送单元1505。其中,接收解析单元1501,用于接收并解析所述源设备101发送的数据恢复请求获得所述快照sn的版本号;确定单元1502,根据所述快照sn的版本号与所述快照sx的版本号确定所述快照sx记录的第一数据块;根据所述第一数据块的逻辑地址和所述快照sn的版本号确定所述快照sn记录的存储于所述逻辑地址中的第二数据块;其中,所述第一数据块为所述存储设备102备份的所述快照sx记录的所述源设备101在第n次快照sn后写入的数据块;所述第一数据块为所述第二数据块的修改块;逻辑操作单元1503,用于将所述第一数据块与所述第二数据块进行逻辑操作得到第三数据块;其中,所述逻辑操作为异或操作或同或操作;压缩单1504元,用于压缩所述第三数据块得到第四数据块;发送单元1505,用于向所述源设备101发送携带所述第四数据块和所述第一数块的逻辑地址的数据报文。

如图16所示,本发明实施例提供了一种存储设备,所述存储设备用于作为存储系统中的源设备101,所述存储系统还包括源设备101的备份端设备102,可参考图9所示的存储系统,所述存储设备101和所述备份端设备102均存储有第n次快照sn的数据,n为整数;所述存储设备包括发送单元1601、接收解析单元1602、确定单元1603、解压缩单元1604、逻辑操作单元1605和写入单元1606;其中,发送单元1601,用于向所述备份端设备102发送数据恢复请求;所述数据恢复请求携带所述快照sn的版本号;接收解析单元1602,用于接收并解析所述备份端设备102根据所述数据恢复请求发送的数据报文获得第四数据块和第一数块的逻辑地址;所述第一数据块为所述备份端设备102备份的所述快照sx记录的所述逻辑地址中所述存储设备101在第n次快照sn后写入的数据块;确定单元1603,用于根据所述第一数据块的逻辑地址确定存储设备101存储的所述快照sn记录的第二数据块;所述第一数据块为所述第二数据块的修改块;解压缩单元1604,用于解压缩所述第四数据块得到第三数据块;逻辑操作单元1605,用于将所述第三数据块与所述第二数据块进行逻辑操作得到所述第一数据块;其中,所述逻辑操作为异或操作或同或操作;写入单元1606,用于将所述第一数据块写入所述第一数据块的逻辑地址。

如图13所示,本发明另一实施例提供了一种存储设备,用于作为存储系统中的源设备101,存储系统还包括源设备101的备份端设备102,可参考图1所示的存储系统,所述存储设备101和所述备份端设备102均存储有第n次快照sn的数据,n为整数;所述存储设备101还包括移位单元1305;其中,确定单元1301,用于确定第n次快照sn后写入所述存储设备101的第一数据块;根据所述第一数据块的逻辑地址确定第n次快照sn记录的第二数据块;其中,所述第一数据块是所述第二数据块的修改块;确定所述第一数据块需要循环移位的移位数;移位单元1305,用于根据所述移位数对所述第一数据块循环移位得到第三数据块;逻辑操作单元1302,用于将所述第三数据块和所述第二数据块进行逻辑操作得到第四数据块;其中,所述逻辑操作为异或操作或同或操作;压缩单元1303,用于压缩所述第四数据块得到第五数据块;发送单元1304,用于向所述备份端设备102发送携带所述第五数据块、所述第一数据块的逻辑地址、移位信息和所述第n次快照sn的版本号的数据报文;其中,所述移位信息包括循环移位方向和所述移位数。可选地,所述存储设备101配置有如下计算规则:设定n个窗口,对数据块在每一个窗口中的至少部分数据进行hash计算,其中,每一个窗口的大小相同,第一个窗口的起始位置为所述数据块的起始位置;最后一个窗口的结束位置等于所述数据块的结束位置;第i+1个窗口的起始位置与第i个窗口的起始位置相差固定长度;n为整数且不小于2,i为整数,第i个窗口表示第1个至第n个窗口中任一个窗口;所述确定单元1301具体用于:根据所述计算规则对所述第一数据块在每一个窗口中的至少部分数据进行hash计算,以及对所述第二数据块在每一个窗口中的至少部分数据进行hash计算;按照hash值设定的顺序,从所述第一数据块的hash值中选择前m个hash值,从所述第二数据块的hash值中选择前m个hash值;m为正整数并且不大于n;查找所述第一数据块的前m个hash值与所述第二数据块前m个hash值中相同的hash值,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数。可选地,第i+1个窗口的起始位置与第i个窗口的起始位置相差的固定长度为1位,或多位。可选地,备份端设备按照hash值设定的顺序,具体可以按照从小到大的顺序或者从大到小的顺序。可选地,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数的同时,还可以确定循环移位方向,具体地,当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为正数时,则向左循环移位;当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为负数时,则向右循环移位。

如图14所示,本发明另一实施例提供了一种存储设备,所述存储设备用于作为存储系统中的备份端设备102,所述存储系统还包括备份端设备102的源设备101,可参考图1所示的存储系统,所述存储设备102和所述源设备101均存储有第n次快照sn的数据,n为整数;所述存储设备102还包括移位单元1406;其中,接收解析单元1401,用于接收并解析所述源设备101发送的数据报文获得第五数据块、第一数据块的逻辑地址、移位信息和所述第n次快照sn的版本号;确定单元1402,用于根据所述第一数据块的逻辑地址和所述第n次快照sn的版本号,确定所述快照sn记录的第二数据块;其中,所述第一数据块为所述源设备101在第n次快照sn后写入的数据块;所述第一数据块为所述第二数据块的修改块;解压缩单元1403,用于解压缩所述第五数据块得到第四数据块;逻辑操作单元1404,用于将所述第四数据块和所述第二数据块进行逻辑操作得到第三数据块;其中,所述逻辑操作为异或操作或同或操作;移位单元1406,用于根据所述移位信息对所述第三数据块进行反向循环移位得到所述第一数据块;其中,所述移位信息包含所述源设备101对所述第一数据块循环移位得到所述第三数据块所需要的移位数以及循环移位方向;写入单元1406,用于将所述第一数据块写入所述第一数据块的逻辑地址。

如图15所示,本发明另一实施例提供了一种存储设备,所述存储设备用于作为存储系统中的备份端设备102,所述存储系统还包括备份端设备102的源设备101,可参考图9所示的存储系统,所述存储设备102和所述源设备101均存储有第n次快照sn的数据,n为整数;所述存储设备102还包括移位单元1506;其中,接收单元1501,用于接收所述源设备101发送的数据恢复请求,所述数据恢复请求中携带有所述快照sn的版本号;确定单元1502,用于根据所述快照sn的版本号与所述快照sx的版本号确定所述快照sx记录的第一数据块,其中,所述第一数据块为所述存储设备102备份的所述快照sx记录的所述源设备101在第n次快照sn后写入的数据块;根据所述第一数据块的逻辑地址和所述快照sn的版本号确定所述快照sn记录的存储于所述逻辑地址中的第二数据块;确定所述第一数据块需要循环移位的移位数;移位单元1506,用于根据所述移位数对所述第一数据块循环移位得到第三数据块;逻辑操作单元1503,用于将所述第三数据块和所述第二数据块进行逻辑操作得到第四数据块;压缩单元1504,用于压缩所述第四数据块得到第五数据块;其中,所述逻辑操作为异或操作或同或操作;发送单元1505,用于向所述源设备101发送携带所述第五数据块、所述第一数块的逻辑地址和移位信息的数据报文;其中,所述移位信息包括循环移位方向和所述移位数。可选地,所述存储设备102配置有如下计算规则:设定n个窗口,对数据块在每一个窗口中的至少部分数据进行hash计算,其中,每一个窗口的大小相同,第一个窗口的起始位置为所述数据块的起始位置;最后一个窗口的结束位置等于所述数据块的结束位置;第i+1个窗口的起始位置与第i个窗口的起始位置相差固定长度;n为整数且不小于2,i为整数,第i个窗口表示第1个至第n个窗口中任一个窗口;所述确定单元1502具体用于:根据所述计算规则对所述第一数据块在每一个窗口中的至少部分数据进行hash计算,以及对所述第二数据块在每一个窗口中的至少部分数据进行hash计算;按照hash值设定的顺序,从所述第一数据块的hash值中选择前m个hash值,从所述第二数据块的hash值中选择前m个hash值;m为正整数并且不大于n;查找所述第一数据块的前m个hash值与所述第二数据块前m个hash值中相同的hash值,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数。可选地,第i+1个窗口的起始位置与第i个窗口的起始位置相差的固定长度为1位,或多位。可选地,备份端设备按照hash值设定的顺序,具体可以按照从小到大的顺序或者从大到小的顺序。可选地,确定所述相同的hash值对应的两个窗口的偏移之差为所述移位数的同时,还可以确定循环移位方向,具体地,当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为正数时,则向左循环移位;当第一数据块中相同hash值对应的窗口的偏移减去第二数据块中相同hash值对应的窗口偏移为负数时,则向右循环移位。

如图16所示,本发明另实施例提供了一种存储设备,所述存储设备用于作为存储系统中的源设备101,所述存储系统还包括源设备101的备份端设备102,可参考图9所示的存储系统,所述存储设备101和所述备份端设备102均存储有第n次快照sn的数据,n为整数;所述存储设备101还包括移位单元1607;其中,发送单元1601,用于向所述备份端设备发送数据恢复请求;所述数据恢复请求携带所述快照sn的版本号;接收解析单元1602,用于接收并解析所述备份端设备102根据所述数据恢复请求发送的数据报文获得第五数据块、第一数块的逻辑地址和移位信息,其中,所述第一数据块为所述备份端设备102备份的所述快照sx记录的所述逻辑地址中所述存储设备101在第n次快照sn后写入的数据块;确定单元1603,用于根据所述第一数据块的逻辑地址确定所述存储设备101存储的快照sn记录的第二数据块,所述第一数据块为所述第二数据块的修改块;解压缩单元1604,用于解压缩所述第五数据块得到第四数据块;逻辑操作单元1605,用于将所述第四数据块与所述第二数据块进行逻辑操作得到所述第三数据块;其中,所述逻辑操作为异或操作或同或操作;移位单元1607,用于根据所述移位信息对所述第三数据块反向循环移位得到所述第一数据块;其中,所述移位信息包含所述备份端设备102对所述第一数据块循环移位得到所述第三数据块所需要的移位数以及循环移位方向;写入单元1606,用于将所述第一数据块写入所述第一数据块的逻辑地址。

本发明实施例图13-16所示的存储设备,以图13为例,存储设备包括确定单元1301,逻辑操作单元1302、压缩单元1303和发送单元1304,一种实现方式为存储设备安装上有述单元,上述单元可被加载到存储设备的内存中,由存储设备的中央处理单元执行同存中的指令,实现本发明对应的实施例中的功能;另一种实现,存储设备中包含的单元可以由硬件来实现,或者由软件与硬件组合实现。上述单元也称为结构单元。

本发明实施例中存储设备作为存储系统中的源设备或备份端设备,是指该存储设备可以执行存储系统中源设备或备份端设备的功能,可以与源设备或备份设备具有同样的结构。也就是可以将存储系统中的源设备或备份端设备称为一种存储设备。

本发明实施例,还提供了非易失性计算机可读存储介质和计算机程序产品,当图1、图9、图10、图11和图12所示的设备的内存加载非易失性计算机可读存储介质和计算机程序产品中包含的计算机指令,,cpu执行内存中中加载的该计算机指令,以实现本发明各实施中对应的功能。

在本发明所提供的几个实施例中,应该理解到,所公开的装置、方法,可以通过其它的方式实现。例如,以上所描述的装置实施例所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

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