发明内容
本发明提出了一种通过离散数据块的序列冻结和复制来实现所选择的数据目标从一个本地存储设备到一个远程存储设备的镜像和复制系统的实施方法。在镜像的过程中,所选择的数据目标可以不间断地使用,因为对操作系统来说该镜像是透明的。连续的离散数据块的复制是异步和以后台方式执行的。
本发明的一个目的是提供依照适用于所选择的数据目标从至少一个本地存储设备(SDL)到至少一个远程存储设备(SDRx)的镜像操作的方法和系统。至少有一个本地存储设备是与一个第一处理装置(HL)相耦合的,以及至少有一个远程存储设备是与一个第二处理装置相耦合(HR)。至少有一个本地存储设备、至少一个远程存储设备、第一和第二处理装置是与一个由多个用户、多个处理装置和多个存储设备所组成的网络连通性相耦合。该方法和系统包括:
在第一和第二处理装置中所运行镜像功能;该镜像功能包括:
用于冻结所选择的数据目标的冻结过程,
用于将所冻结的选择数据目标复制到至少一个远程存储设备中的复制过程,
允许使用和更新与运行镜像功能相并行的选择数据目标,以及,
通过缺省的控制,重复运行用于对选择数据目标的更新复制的镜像功能,除非接受到镜像中断的命令,否则可以复制驻留在至少一个本地存储设备中所选择的数据目标以及依次更新到至少一个远程存储设备中。
本发明的另一目的是提供一种方法和系统,可以适用于:
应用冻结作为数据源块(SV)的选择数据目标的冻结过程,
创建至少一个本地辅助数据块(卷)(AVL),使得指向所选择的数据目标的更新重新指向与该本地辅助数据块,所选择的数据目标的各个信号数据目标对应于至少一个辅助数据块的一个数据块,
在至少一个远程存储设备的各个远程存储设备中创建至少一个远程数据块,该数据块对应于所创建的各个本地辅助数据块,
形成至少一个所产生的源数据块的至少一个本地存储设备,该设备包括所冻结的选择数据目标和至少一个本地辅助数据块,以及,
应用将所冻结的选择数据目标从至少一个所产生的数据块复制到至少一个远程存储设备的复制过程。
镜像功能可以同时应用于多个数据目标,和应用于从至少一个本地存储设备镜像到至少一个远程设备,以及反之亦然。
本发明的另一目的是提供一种方法和系统,可以适用于:
应用同时冻结多个数据目标的冻结过程,
应用同时复制多个所冻结的选择数据目标的复制过程,
将驻留在一个本地存储设备中的一个信号数据目标同时镜像到多个远程存储设备中,
将分别驻留在相同的多个本地存储设备中的多个信号数据目标同时镜像到一个远程存储设备中,
将驻留在一个本地存储设备中的多个信号数据目标分别同时镜像到相同的多个远程存储设备中,以及,
将驻留在多个本地存储设备的各个本地存储设备中的一个信号数据目标同时镜像到一个远程存储设备中。
本发明还有一个目的是提供一种方法和系统,可以适用于:
在所选择的时间点上:
开始一个镜像周期,
冻结所选择的数据目标,
在至少一个本地存储设备(SDL)中创建至少一个辅助数据块(AVL)和在至少一个远程存储设备(SDRx)中创建至少一个远程数据块(RV),
形成至少一个包含所冻结的选择数据目标和本地辅助数据块(AVL)的所产生源数据块,以及,
在选择的时间点之后:
将所冻结的选择数据目标从所产生的源数据块复制到至少一个远程数据块中,直至复制完成为止,
将更新的本地辅助数据块重新指向所选择的数据目标,
通过与所产生的源数据块的结合操作,允许在镜像的过程中使用所选择的数据目标,以及,
利用缺省命令,重复在完成了复制到至少一个远程存储设备之后的下一个镜像周期,除非接受到中断镜像的命令。
本发明还有一个目的是提供一种方法和系统,可以适用于:
在完成了复制到至少一个远程存储设备(SDR)之后,在下一个时间点上开始下一个镜像周期,
冻结所产生的源数据块,
在本地存储设备中创建一个最终的本地辅助数据块和在至少一个远程存储设备中创建一个最终的远程数据块,
形成一个包含倒数第二个所产生的源数据块和一个最终本地辅助数据块的最终所产生的源数据块(AVL),以及,
在下一个时间点之后:
将倒数第二个本地辅助数据块复制到最终的远程数据块中,
将更新的本地辅助数据块重新指向所选择的数据目标,
通过与最终所产生的源数据块的结合操作,允许在镜像的过程中使用所选择的数据目标,以及,
在完成了复制到最终远程数据块之后:
将倒数最终本地辅助数据块与所冻结的选择数据目标相合并,
利用第二处理装置(HR)的命令,将至少一个最终的远程数据块与倒数第二远程数据块相合并,以及,
利用缺省命令,重复在完成了复制到至少一个第二存储设备之后的下一个镜像周期,除非接受到中断镜像的命令。
本发明还有一个目的是提供一种方法和系统,可以适用于:
在完成了复制倒数第二本地辅助数据块之后,选择另一个时间点,
冻结所产生的源数据块,
在本地存储设备中创建一个最终的本地辅助数据块和在至少一个远程存储设备中创建一个最终的远程数据块,
形成一个包含倒数第二所产生的源数据块和最终本地辅助数据块的最终所产生的源数据块,以及,
将倒数第二本地辅助数据块复制到至少一个最终远程数据块中,
将更新的最终本地辅助数据块重新指向所选择的数据目标,
在与最终所产生的源数据块的结合操作中,允许在镜像过程中使用所选择的数据目标,
将倒数第二个本地辅助数据块与所选择的数据目标相合并,
将至少一个最终远程数据块与倒数第二远程数据块相合并,以及,
利用缺省命令,重复在完成了复制到至少一个第二存储设备之后的下一个镜像周期,除非接受到中断镜像的命令。
本发明还有一个目的是提供一种方法和系统,可以适用于:
在至少一个远程存储设备中,存储所完成的选择数据目标的镜像复制,该数据目标包括在完成将倒数第二个本地辅助数据块复制到最终远程数据块时所输入的更新内容。
本发明另外一个目的是提供一种方法和系统,可以适用于:
只要是在最终本地辅助数据块复制到最终远程数据块的过程中,就以最后所定义的时间的离散重复时间间隔来重复镜像功能的操作,
将更新与所选择的数据目标相合并,以重写所选择的数据目标,以及,
将最后的远程数据块与倒数第二个所产生的第一远程数据块相合并,以重写倒数第二个所产生的第一远程数据块。
具体实施方式
本发明通过离散数据块的序列冻结和复制从而获得一个选择的数据目标能够从一个本地存储设备镜像或复制到一个远程存储设备中。在镜像的过程中,所选择的数据目标可以不间断地使用,因为对于操作系统来说,镜像是透明的。连续的离散数据块的复制是异步执行的并且可以在后台进行的。
镜像包括在连续的镜像周期中连续重复冻结和复制过程的连续性。只有最终所更新的镜像内容保留在远程存储设备。各个信息的更新内容写在以前内容的上面。当镜像是以第一镜像周期s=1开始时所存在的更新内容,就可以在大于两个镜像周期,s=3之后安全地加以存储。
在本讨论中所使用的术语较易与支持虚拟化的存储区域网络(SAN)有关。这类虚拟化SAN的虚拟数据块可以包括一组数据目标,多个本地存储设备,和多个远程存储设备。然而,为了便于理解该方法,可以认为一个系统只具有一个数据目标,一个本地存储设备,和一个远程存储设备。
当进行镜像功能的操作时,可采用冻结过程来冻结一个所选择的数据目标,例如,作为一个源数据块。同时,在该本地存储设备中创建一个第一本地辅助数据块,以及在远程存储设备中创建一个与所冻结的源数据块具有相同大小的第一远程数据块。因为源数据块是冻结着的且必须被冻结,所以它不能发生变化,但是它可以通过复制到远程存储设备的复制过程来复制。
在镜像过程中可以使用所选择的数据目标。在冻结的时候,操作系统OS创建一个包含所冻结的选择数据目标和第一本地辅助数据块所产生的源数据块。I/O READ和I/O Write操作可以访问所产生的源数据块。很显然,只允许对所冻结的源数据块进行读操作,同时对所选择数据目标的写更新可重新指向第一本地辅助数据块。
一旦所冻结的源数据块镜像到远程存储设备,则重复该冻结和复制过程。在所产生的源数据块中的第一本地辅助数据块是被新冻结的,并且同时,创建了一个第二本地辅助数据块和一个第二远程数据块。该第二本地辅助数据块可与原先所创建产生的源数据块相叠加,以形成一个适用于操作系统所使用的新产生的源数据块。接着,将所冻结的第一本地辅助数据块复制到第二远程数据块。同样,使用数据目标与最后所冻结的本地辅助数据块相叠加的原先产生源数据块,以形成最后所产生的源数据块。从原理上说,镜像功能执行连续的冻结和复制过程将一个或多个本地存储设备中的一个或一组数据目标复制到一个或多个其它或远程存储设备中。一种特殊的情况涉及到将包括驻留在一个本地存储设备中唯一的一个单个数据目标的一个选择数据目标镜像到另外一个远程存储设备中。
镜像功能能够同时执行多个镜像操作。例如,两个不同的数据目标,各个数据目标驻留在所说的在一个不同的本地存储设备中的一个不同的数据块中。很显然,同时镜像并不限制于两个所选择的数据目标。
镜像功能也能够进行交叉镜像,这种交叉镜像是与最后实例相并行的,可产生镜像的两个不同数据目标,一个驻留在本地存储设备中,而另一个则驻留在远程存储设备中,对于镜像而言,相当于到远程存储设备和到本地存储设备中。交叉镜像并不限制于同时镜像两个选择的数据目标。
一般来说,镜像功能可获得数组数据目标从数个本地存储设备镜像到数个远程存储设备,以及两个定向的交叉镜像。镜像的观察表显示出了包括I至VI的镜像选择,它适用于将直接镜像与交叉镜像相叠加,以适用于所有的I至VI的选择。
|
镜像 |
来自 |
到 |
|
数据目标的# |
本地存储设备 |
远程存储设备 |
I |
1 |
1 |
1 |
II |
1 |
1 |
>1 |
III |
>1 |
1 |
1 |
IV |
>1 |
>1 |
1 |
V |
>1 |
1 |
>1 |
VI |
>1 |
>1 |
>1 |
镜像观察表
实施本发明的模式
参照由相同申请人所申请的共同待批专利申请PCT/IL00/00309,题为“在存储网络中的存储虚拟化”的图1,其内容引用于此作全面参考,以下称之为’309专利。也参照本发明的图1,该图说明了一个网络的连通性NET。与网络连通性NET相耦合的有多个用户U、诸如主机或服务器H或处理器的计算装置,和诸如硬盘HD的存储设备SD。在第一和本地处理装置的控制下,可以发生从一个本地存储设备到另一个由第二或远程处理装置所控制的远程存储设备的镜像。例如,主机H4可以进行从一个存储设备SDA到另一个由其它处理装置H3所控制的存储设备的镜像。同样,主机H1可以控制从第一硬盘HD1到与处理器H2相耦合的第二硬盘HD2的镜像。采用同样的方式,主机H2可以进行从第一硬盘HD2到第二硬盘HD3或另一个硬盘HD4的镜像。所选择的驻留在多个存储设备中的数据目标的镜像会影响一个或多个存储设备。在网络连通性上至少需要两个处理装置和至少两个存储设备:一个是用于从其进行复制的本地存储设备和另一个是用于写入其中的远程存储设备。
正如所阐述的,一个数据目标从一个存储设备到另一个存储设备的镜像需要应用连续的冻结和复制过程。然而,在镜像的同时不能妨碍网络连通性的操作。因此,以下的讨论首先说明冻结过程,随后说明在冻结过程中所执行的系统操作,最后说明复制过程。
冻结过程
冻结过程的图形说明正如图2从2a至2d分段描述。水平轴指时间,且以t=0开始。
假定镜像功能是对至少两个处理装置进行操作的,例如,一个第一处理装置和第二处理装置,可分别表示为HL和HR,它们与网络连通性NET相耦合。一个第一存储设备SDL和至少一个第二处理装置SDRx(其中,x表示特殊的存储设备)可分别称之为本地存储设备和至少一个远程存储设备,并且与网络连通性NET相耦合。因此,至少一个远程存储设备SDRx可以包括一个第一远程存储设备SDR1,一个第二远程存储设备SDR2以及其它等等。
所指定的本地和远程都可以用于起源和目的,这并不意味着对存储设备的物理位置存在着任何限制。于是,也就是说,本地和远程存储设备都可以驻留在与SAN相耦合或者与主机H相耦合的相同或不同的存储设备中,其中不同的存储设备可以相互邻近或各自在相对的另一边。可以从本地存储设备复制到一个或多个远程存储设备。任何存储设备都可以指定其中一个名称,但是当从其中镜像时只存在唯一的一个本地存储设备。
从开始起,包含了冻结过程和复制过程的镜像功能接受需要冻结所选择的数据目标的指示。正如图2中的阶段2a所说明的,在一个给定的时间间隙,在时间t=1,冻结过程接受将一个所选择的数据目标冻结成一个源数据块SV的请求。因此,所“冻结”的源数据块SV就因此限制为“只读”,这就不能再改变源数据块的内容了。现在,所冻结的源数据块SV就可以进行复制,正如以下所讨论的那样。
在保持镜像功能对OS透明的同时,允许数据目标的使用。在时间t=1源数据块SV冻结的同时,冻结过程也创建一个第一辅助的,也可能是虚拟的,局部数据块,并以本地辅助数据块1或AVL1来表示。所冻结的源数据块SV和本地辅助数据块一起形成了一个产生的源数据块。从操作系统OS的观点来看,所产生的源数据块可以视为原始的选择数据目标且可以透明地使用。
依次,从冻结源数据块SV的瞬间开始,由本地处理装置所指向冻结源数据块的WRITE操作由镜像功能重新指向驻留在所产生的源数据块中的本地辅助数据块1 AVL1。于是,只要读操作是与冻结源数据块SV内容的原始不变的部分有关,就允许进行READ操作。对冻结源数据块SV的写操作重新指向本地辅助数据块1,因为不然的话,就会影响冻结源数据块SV内容的变化。镜像功能,和冻结过程,都驻留在本地和远程处理装置中,并且允许中断指向冻结数据目标的I/O命令,正如以下有关系统操作的讨论。改变指向本地辅助数据块1 AVL1的WRITE操作可以定义成更新。值得注意的是,一个本地辅助数据块从创建开始直至发生下一次冻结时始终保持可操作性。换句话说,直至创建下一个本地辅助数据块。此外,有关处理装置的性能,也仅仅受到只处理路由指令的冻结功能的少许影响,例如,I/O READ和I/O WRITE指令的重新指向的影响。
参照图2的阶段2b,在时间t=2,在冻结源数据块SV复制之后,就进行下一个冻结,并且应用于本地辅助数据块1 AVL1。同时,还采用与所讨论的本地辅助数据块1 AVL1相同的方法来创建了一个新的本地辅助数据块。与此并行的是,现在使得一个新产生的源数据块包含了原先所产生的源数据块和另一本地辅助数据块2 AVL2。现在,就能复制在冻结本地辅助数据块1 AVL1中所包含的更新内容,正如以下所讨论的。另外,OS可以将最后所产生的源数据块视为原始源数据块,因为冻结过程是透明的。
在图2所示的阶段2c中,在冻结的本地辅助数据块1 AVL1复制之后,在时间t=3冻结本地辅助数据块2 AVL2,并且创建一个本地辅助数据块3 AVL3。现在可以复制原先已写入冻结本地辅助数据块2 AVL2的更新内容。如同以前一样,最后所创建的或者最终的本地辅助数据块3 AVL3与原先所产生的源数据块一起成为新的或最终所产生的源数据块的一部分。
于是,第三次所产生的源数据块包括在时间t=1所冻结的第一源数据块SV,冻结的本地辅助数据块1和2,分别表示为AVL1和AVL2,以及最终的本地辅助数据块3 AVL3。利用在时间t=3第一冻结源数据块SV和冻结本地辅助数据块1 AVL1已经通过镜像进行复制了的事实,现在这最后两个数据块就可以同步。图2的阶段2d反映了这最后的步骤,在时间t=3,于是,在本地辅助数据块1 AVL1中所包含的更新内容与第一冻结源数据块SV相同步。删除本地辅助数据块1 AVL1,从而可节省存储空间,同时可保持最终所产生的源数据块的内容不变。现在,可允许进行冻结过程操作的镜像功能继续进行操作,也可以中断操作。
当命令镜像继续进行时,则在时间t=4,尽管图2中并没有显示,但是在完成了本地辅助数据块2 AVL2的复制之后,就可以使一个新的本地辅助数据块变成为最终的本地辅助数据块。同时,开始倒数第二个本地复制数据块AVL的复制,在这种情况下是本地辅助数据块3 AVL3的复制。与此同时,驻留在之前倒数第二个本地辅助数据块AVL中的更新内容,即,本地辅助数据块2 AVL2中的更新内容可与第一冻结源数据块SV相同步。现在就可以删除本地辅助数据块2 AVL2。很显然,通过结合了包括最后所产生的源数据块和最终的本地辅助数据块的最终所产生的源数据块,就可允许连续使用数据目标。
冻结的数据结构
当将源数据块的冻结安排在时间t=1时,则新的冻结源数据块就可以随意分成依次编号的1MB的字段或小块,例如,在冻结表1中所列的这些小块都是在本地辅助数据块1 AVL1中的冻结时间所创建的。在冻结表1中项目总数等于所冻结源数据块SV的容量,且以MB来表示。如果所进行的划分不能产生整数,则在冻结表中所列的小块的数目可以循环到下一个整数。冻结表1驻留在本地辅助数据块1中并且是将OS指向的I/O指令重新指向数据目标的工具。
冻结命令在t=1开始后,指向数据目标的所有I/O WRITE指令的更新内容都又循环到本地辅助数据块1。I/O READ命令可以分成为两类。第一类READ命令是与从t=1冻结开始以来不能改写的数据有关,并且不能变更地驻留在源数据块SV中。第二类READ指由WRITE命令所更新过的数据,这是在冻结之后所发生的更新,因此发送到本地辅助数据块1。
为了在冻结的源数据块SV和本地复制数据块1之间形成联系,就需要一个映射表。例如,当OS命令对冻结之后的所更新的数据进行I/O READ指令时,就需要在本地辅助数据块中的数据的地址。
数据小块序号 |
地址 |
0 |
-1 |
1 |
-1 |
2 |
13 |
3 |
-1 |
... |
... |
n-x |
17 |
... |
... |
最后 |
-1 |
冻结表1
参照冻结表1,首先是左边一列显示了源数据块SV的数据小块的序号,其次是右边一列显示了指向各个数据小块所映射的地址的索引。在冻结表1的左列第一行中的数据小块序号0的索引为在同一行中右列的-1。根据约定,索引-1表示原始的条件或从最后的冻结以来没有变化的条件。于是,正被讨论的数据小块,这里是数据小块0,从冻结时间t=1开始就不能更新了,并因此可在源数据块SV中发现有关的数据。任何不是-1和大于或等于0的索引则表示了在冻结时间t=1之后所指定的特殊数据小块需要更新的地址和事实。不是-1的表示则是I/O指令重新指向在最终本地辅助数据块中将发现的特定地址。
值得注意的是,适用于I/O指令循环至冻结源数据块SV和循环至本地辅助数据块的机制能够无妨碍地连续使用数据目标。
冻结过程
冻结过程可根据三种不同的条件使得I/O指令能指向数据目标。为了能简化讨论,只以第一冻结过程作为参考,于是,就只产生一个冻结的源数据块Sv和一个第一本地辅助数据块。
1.READ指令或者是指向源数据块SV(只要冻结之后没有变化)或者是指向本地辅助数据块。
2.适用于在t=1冻结开始之后一个数据小块更新的WRITE指令指向本地辅助数据块。
3.适用于驻留在源数据块SV中未变化的数据小块的WRITE指令需要复制到本地辅助数据块中的数据小块,并且可以随后将其写入到本地辅助数据块中。
I/O指令的分解
以下将讨论适用于根据三种以上所提及的条件来分解I/O指令的时序。
参照图3,在步骤D1,OS等待I/O指令,并且当接受到这类指令时,在步骤D2的测试区分,READ和WRITE指令之间的差异。对于READ指令来说,则以是(YES)来表示,控制转入步骤D3,进一步的控制如图4所示步骤A1所示,以下将作进一步讨论。对于WRITE指令的否(NO)表示的情况来说,控制就通过处理写I/O指令的步骤D4,转入步骤D5,以确认是否存在着原有的更新或者这是否是冻结之后的第一次WRITE。如果存在着原有的更新,则控制就转入到步骤D6,以进行图5所示步骤B1的处理,以下将作进一步的解释。在没有原有更新的情况下,则控制流程就转入到步骤D7,这就使I/O WRITE指令能在没有原有更新的条件下转入到以下步骤C1。
读指令
图4说明了适用于在冻结开始之后将I/O READ指令发送至数据目标的过程。由“等待I/O”第一步骤A1所接受到的指令经过步骤A2,在步骤A2,指令在寻找READ指令中经过滤。在否(N)的情况下,就将WRITE指令转发至步骤A3,以进入到图5所示的步骤B1。在是(Y)的情况下,则将READ命令发送至步骤A4。
如果冻结的源数据块SV可分成1MB的数据小块的话,则在步骤A4计算数据小块的序号并且寻找在冻结表中的索引。数据小块的序号可通过地址数值与1MB的整数除法来计算,并且进一步除以512就能获得扇区数。即,1MB/512=(1024比特×1024比特)/512。该结果发送至下一步骤A5。同时,当数据跨越了一个数据小块的边界时,便提供了多个数据小块,正如在地址中发现的信息所指出的那样。该信息一直表示着I/O指令的起始位置和长度。随后,OS就提供所计算的数据小块的序号来寻找在冻结表中的地址。
步骤A5区分指定冻结之后未改变的数据的索引-1和其它索引之间的差异。零和正的整数数值表示数据驻留在本地辅助数据块中。
如果转入到步骤A5的数据小块的序号是-1,则将READ命令发送至步骤A6,以“从源数据块中读取”。否则,READ命令就指向在本地辅助数据块中的地址,正如在冻结表1中所看到的,依此作为步骤A7。在完成之后,步骤A6和A7都将控制返回到图3所示的第一步骤D1。
写指令
图5显示了I/O WRITE指令对本地辅助数据块的数据小块的处理步骤,它包含了在冻结命令之后的数据更新。
在第一步骤B1中,过程等待接受一个I/O命令,随后转入下一步骤B2。在B2,滤波器确认该I/O命令是READ命令还是WRITE命令。是I/O READ命令则转入到步骤B3,采用与图4所示步骤A1的I/O READ命令相似的方式进行处理,然而,是I/O WRITE命令就指向步骤B4,在步骤B4,正如以上所解释的,采用除法来计算数据小块的序号以访问冻结表1。WRITE命令应该是跨越多个单个的数据小块和跨过数据小块的边界,因此就能够获得两个和多个数据小块。
一个和多个数据小块会经过步骤B5,在步骤B5中,查询冻结表1以找到对应于正在处理的数据小块的索引。如果所发现的数值是-1,则控制就转入到步骤B6,以类似于驻留于源数据块SV中没有改变的数据的方式来处理。在从冻结表1发现零或正的索引数值的情况下,则由步骤B7,使指令指向本地辅助数据块,用于写入特定的地址。从步骤B6和B7开始,控制就返回到图3所示的I/O等待步骤D1。
图6解释了一个I/O WRITE指令的步骤,该指令适用于在时间t=1冻结之后没有改变的数据。第一步骤C1是“等待I/O”指令,一旦接受到该指令,则进入到步骤C2,进行“写I/O”滤波器的操作。如果所接受到的I/O指令不是“写I/O”指令,则控制就转入到步骤C3,以类似于图4所示步骤A1的“读I/O”方式来处理。否则,对于写指令来说,就在步骤C4计算数据小块的序号。也要处理跨越一个数据小块边界的I/O命令,使之产生至少两个数据小块的序号。
依次,步骤C5使用所计算得到的数据小块的序号来寻找冻结表并且区分没有改变数据和更新数据之间的差异。在后一种情况中,控制就转入到步骤C6,指向I/O使之采用类似于图5所示步骤B1原先所更新的写I/O命令的方式来处理。
对于没有改变的数据来说,控制就转入到步骤C7。然而,在将数据写入辅助数据块之前,要将数据写入到冻结之后第一次需要更新的数据小块中,因此就必须找到空的存储器位置。因此,在步骤C7,首先是寻找在本地辅助数据块中的第一个空的数据小块。找到之后,就改变对应于在步骤C4中所计算的数据小块序号的索引,不再表示为-1,而是在本地辅助数据块中的地址。实践中,必须是首先从源数据块SV向本地辅助数据块复制一个和多个数据小块,并且随后只是采用WRITE指令来重新写入,以用于更新。
控制从步骤C7转入到步骤C8,在步骤C8,确认是否已经在本地辅助数据块中找到了多个存储空间。对于支持虚拟化的SAN中的多个存储空间来说,就请求转入到虚拟应用。根据’309专利的披露,该请求可转入虚拟应用,以寻求在本地辅助数据块中扩大存储空间,作为步骤C9的工作。对于其它环境来说,则由本地主机HL的OS所运行的存储位置程序来处理另外的存储空间。
根据这一情况,不需要另外存储空间的控制从步骤C8转入到步骤C10,而从步骤C9转出的控制在扩展了存储空间之后转入到步骤C10,在步骤C10,将所完成的数据小块从源数据块SV复制到本地辅助数据块中。一旦完成了该项工作之后,控制就转入到步骤C11。
在最终的步骤C11中,更新冻结表1以及对应于在步骤C4中所计算的数据小块的序号,不再是数值-1,而是输入了在本地辅助数据块中的地址。从步骤C11开始,控制返回到图5所示的步骤B1,或者是步骤C6。值得注意的是,本地辅助数据块几乎都具有与源数据块SV相同数量的数据小块。当源数据块SV的所有数据小块、数据片段都予以写入时,就会发生这情况。I/C WRITE指令更新源数据块的相同数据小块并重新写入随后丢失的原先WRITE命令。
复制过程
参照图2所示阶段2a有关源数据块SV冻结的讨论,它阐述了在发生冻结之后复制源数据块。于是,镜像功能可以命令将所冻结的源数据块SV从所定义的一个本地存储设备且驻留源数据块的起源的存储设备复制到称之为远程存储设备的任何其它存储设备中。该远程存储设备也可能是在同一位置上或者是在远程位置上的其它存储设备,或者是由在多个位置上的许多远程存储设备所组合。甚至于可以选择远程存储设备作为保存源数据块SV的相同存储设备。
镜像功能可以是连续重复,也可以在任何冻结和复制周期之后停止。
从所冻结的源数据块SV到远程存储设备的复制并不会加重处理装置资源的负载和减慢通信速度,或者对处理装置的操作产生其它干扰,因为它只需要提供冻结和复制的过程。
图7以基本概念的方式说明了镜像功能的机制,同时还参照图8提供了更加详细的讨论。
在图7中,左列与本地存储设备SDL有关,它表示数据目标驻留在源数据块SV中,而删除的部分显示了时间轴t。右列表示了与这些本地存储设备所并行发生的事件,并且描述了在远程存储设备SDRx中的处理,其中x[1,2,...,n]可以从至少一个x有效的存储设备中选出。在以下至少一个存储设备的情况下采用了“远程存储设备SDRx”的命名。
图7所示的阶段7A显示了在镜像之前的情景。在左列中,时间t=0所创建的源数据块SV包含着数据目标,同时镜像周期计数器设置为零。在右列中没有任何事件。
在阶段7B,在左列中,镜像计数器增1为s=1并且在时间t=1命令源数据块SV冻结。同时,在本地存储设备SDL中创建第一本地辅助数据块1 AVL1,从而指向对数据目标的更新。更新是来自计算装置HL且重新指向本地辅助数据块的那些I/O WRITE指令。
与t=1冻结的同时,在远程存储设备SDRx中创建了第一远程数据块RVx/s,这里是RVx/1,正如图7的右列所示,该数据块的大小与源数据块SV相同。随后,以后台方式复制所冻结的源数据块SV,并且写入远程数据块RVx/1。
正如以上所阐述的,冻结过程将所冻结的数据目标分成为诸如1MB的数据小块。一旦创建了一个本地辅助数据块和所产生的源数据块之后,也因此而创建了一个冻结表,该冻结表与源数据块和更新之间的关系有关。只要需要,该冻结表就可将数据目标的I/O指令重新指向本地辅助数据块。
同时,OS与源数据块SV和第一本地辅助数据块AVL1两者保持操作上的结合,一起形成结果的源数据块。要注意,镜像是在后台来执行的,不需要等待来自远程存储设备的I/O指令。因此,本地处理器HL或网络设备的工作速度均未受削弱。
在图7所示的阶段7C,镜像计数器增1为s=2,并且在t=2时,在源数据块SV复制到第一远程数据块RVx/1的操作过程中或之后,接受第二个冻结命令。同时,冻结第一本地辅助数据块AVL1以及在远程存储设备SDRx中创建第二远程数据块RVx/2,如右列所示,它的大小与第一本地辅助数据块AVL1相同。在本地存储设备SDL中创建了第二本地辅助数据块2 AVL2,从而使得更新指向数据目标。
由冻结过程自动产生一个冻结表,它驻留在各个本地辅助数据块中,以便于OS的使用。因此,第一本地辅助数据块AVL1包括了有利于第二计算装置HR所使用的冻结表,可以复制和写入第二远程数据块RVx/2。
同时,与新的冻结表一起创建了新产生的源数据块。该新的源数据块包含着原先产生的源数据块并附加了第二本地辅助数据块AVL2。于是,OS可以与新产生的源数据块相通信,以在镜像的并行过程中使用该数据目标。
在时间t=2,在阶段7C的左列中,本地存储设备SDL包含着源数据块SV,第一本地辅助数据块AVL1和第二本地辅助数据块AVL2。同时,在该右列中,远程存储设备SDRx包含着第一和第二远程数据块。
镜像计数器仍在s=2,但是是在阶段7D,,称之为源数据块SV的所冻结的数据块是与第一本地辅助数据块相同步的,从而原先写入到第一本地辅助数据块AVL1中的更新就输入到了源数据块SV。驻留在第一本地辅助数据块AVL1中的冻结表可以用于正确的同步更新。第一本地辅助数据块AVL1几乎包含了许多与源数据块SV类似的数据小块和片段,它可以复制以重新写入源数据块SV的内容并保持原有的大小。现在就可删除第一本地辅助数据块AVL1。
对应于驻留在第二本地辅助数据块AVL2中的冻结表中数据小块序号的索引可将索引数值设置为-1,以反映同步数据块的状态。并行处理的是,第二远程数据块RVx/2是与第一数据块RVx/1相同步的,它同样保持着与源数据块SV同样的大小。在远程存储设备上所进行同步是由第二处理装置HR使用冻结表与最后复制的本地辅助数据块一起复制来完成的。于是,现在可以删除第二远程数据块RVx/2。
通过删除了现在已经变成为不需要的本地辅助数据块和远程数据块,使得同步限制了在本地存储设备SDL和远程存储设备SDRx中所需要的存储空间。
阶段7E是另一冻结阶段,它等效于阶段7B和7C。在第一计算装置HL上的镜像周期计数器增1为s=3,并且在时间t=3时执行第二本地辅助数据块AVL2的冻结。此外,由本地存储设备SDL创建第三本地辅助数据块AVL3。同时,在远程存储设备SDRx中创建第三远程数据块RVx/3,正如右列所示,它的大小与第二辅助数据块AVL2相同。现在,最终所产生的源数据块包含着原先产生的源数据块和最终的本地辅助数据块AVL3。
类似于之前,最后所冻结的辅助数据块,这里是AVL2,被复制到最后所产生的远程数据块RVx/3中。在确认对第一计算装置HL的复制完成之后,给出的命令使得最后所冻结的本地辅助数据块AVL2与源数据块SV相同步。
在远程存储设备SDRx中,在第二计算装置HR的控制下,第二远程数据块RVx/2是与第一远程数据块RVx/1相同步的。值得注意的是,在第三镜像周期s=3时,远程存储设备SDRx现在包含着在第一镜像周期s=1中所存在的产生的源数据块的复制。在s=T的镜像周期中,在远程存储设备SDRx中所保存的复制始终时在时间s=T-2所产生的源数据块的复制。在所有的时间上大都会记载着在远程存储设备中最后所保持的复制和在本地存储设备SDL中最终所产生的源数据块之间的两个镜像周期的变化。
接着,继续以上述讨论的同样方式来处理。
值得注意的是,命名远程存储设备x为SDRx,该名称用于区别于本地存储设备在同一位置或在远程位置上的存储设备。于是,使用相同的镜像过程,从驻留在本地位置上的本地SANL中的源数据块不仅有可能镜像到在本地位置上的存储设备中,还有可能镜像到装备在远程位置上的存储设备中。同样,交叉镜像以及同时交叉镜像都是有可能的。
控制的镜像流程
图8说明了可应用于任何网络连通性的镜像功能的连续步骤。对于存储区域网络或者SAN来说,参照’309专利的SAN虚拟化装置,该SAN至少包括:一个本地主机HL,一个远程主机HR和两个独立的存储设备,本地和远程,这些都可参照与图8但是图8并没有显示。一个本地主机HL和一个远程主机HR的相同最小化,以及两个存储设备都是其它网络连通性所必需的。正如以上所阐述的,为了能区分在两个存储设备之间的差异,这两个存储设备分别被指定为本地存储设备SDL和远程存储设备SDRx。对存储设备所给出的名称与它们的位置无关。
在图8的步骤202中,给出的命令是镜像所选择的源数据块SV,该数据块驻留在与本地主机HL相耦合的本地存储设备SDL中。可以由用户输入该命令,或者由系统管理员来输入该命令,或者由操作系统OS来输入该命令,或者由软件命令来输入该命令,在图8中并没有显示。该镜像指向一个和多个被称为远程存储设备x,SDRx的存储设备,其中x是一个整数,它可以从1到n。控制首先转入到步骤204,在步骤204,镜像周期计数器s可以设置为s=1,并且继续至步骤206。
步骤206应用冻结过程在镜像周期s=1中在本地存储设备SDL中创建一个包含着所冻结源数据块SV和新创建的第一本地辅助(虚拟)数据块AVL/s的所产生的源数据块。相并行的是,控制转入到步骤208,它命令在远程存储设备x中的SDRx中创建第一远程虚拟数据块RVx/s,这里称之为RVx/1,它的大小与源数据块SV相同。在SAN的情况下,虚拟数据块的创建和管理,可简称为数据块的创建和管理对于OS来说都是透明的,并且在物理存储设备中的数据存储采用在共同待审查的’309专利中所解释的方式来操作。对于其它非虚拟的环境来说,就需要使用由本地主机HL运行存储定位程序来完成。
现在控制就可转入到步骤210,在步骤210确认步骤208以来的完成情况,以确保第一远程数据块RVx/s的有效性。如果确认是否定的,则开始到步骤210的新的检查环路。否则,在步骤212,获得对步骤210的肯定答复,命令就开始将源数据块SV复制到第一远程(虚拟)数据块RVx/s,并且控制就转入到步骤214。
到步骤214之后,作为对步骤212的补充,将源数据块SV写入到第一远程数据块RVx/1,并且在结束时,对计算装置HL确认其完成情况,由计算装置HL在步骤216以类似于步骤210的方式来进行完成的确认。正如以前那样,否定的结果会在步骤216引起再次通过完成确认的环路,而肯定的结果将使命令转入到步骤218,在步骤218镜像周期计数器增1,即,s=s+1,这里为s=2。
现在控制将转入步骤220,以继续镜像。在第一次创建的本地存储设备SDL中,对s=2来说,指定为AVL/s的最终本地辅助数据块是第二本地辅助数据块AVL2,并且随后冻结倒数第二个本地辅助数据块AVL/s-1,这里是AVL1。也采用以上所讨论的方式来创建一个最终所产生的源数据块。
现在对远程存储设备SDRx的控制将转入到步骤222,在步骤222中,创建第二远程数据块,称之为RVx/s,这里是RVx/2,它的大小与倒数第二个本地辅助数据块AVL1相同,这里可将其称之为AVL/s-1。完成的确认发送至步骤224。
当由步骤224完成确认接受到第二远程虚拟数据块RVx/s的创建确认时,控制就转入到步骤226,否则控制就重复完成的确认。
在步骤226,给出命令,将所冻结的倒数第二,这里是第一,本地辅助数据块AVL/s-1复制到最终,这里是第二,远程数据块RVx/s中。步骤228执行从第一本地辅助数据块AVL/s-1到第二远程数据块RVx/s的写操作,一旦完成了写操作,就在步骤230中得到确认。
值得注意的是,在这一阶段中,所确认的源数据块SV和第一本地辅助数据块AVL1实际上都是镜像到在RVx/1和RVx/2中的SDRx。同时,第二冻结是在本地主机HL上进行操作的,并且新的更新重新指向本地辅助虚拟数据块AVL2。
实践中,没有其它理由将第一本地辅助数据块AVL1或第二远程数据块RVx/2单独操作,因此,这些(虚拟)数据块可以分别与源数据块SV和第一本地数据块RVx/1相同步。在步骤232和234中分别进行这类同步和统一,从而只有源数据块SV和第一远程虚拟数据块RVx/1保持着有效性,而第一本地辅助数据块AVL1和第二远程数据块RVx/2都被删除。如果希望的话,就可在步骤236终止镜像环路并且在步骤238结束,否则的话,则将控制转移到步骤218继续镜像。
如果镜像环路没有中止,则控制就返回到步骤218,在步骤218镜像计数器再次增1,使之为S=3。则过程就重复步骤218到236所包括的环路,这就继续镜像,否则的话,就根据命令来结束镜像。
以上所讨论的方法有可能实现将单个的或多个数据目标从一个或多个存储设备中镜像到一个或多个远程存储设备中。以下表2呈现了不同可能性以及对本地辅助数据块和远程数据块的一些认识。
|
镜像 |
来自 |
|
去 |
|
|
数据目标 |
本地存储设备 |
每个镜像周期所创建的本地辅助数据块 |
远程存储设备 |
每个镜像周期所创建的远程数据块的最大值# |
I |
1 |
1 |
1 |
1 |
1 |
II |
1 |
1 |
1 |
>1 |
远程存储设备的# |
III |
>1 |
1 |
数据目标 |
1 |
数据目标的# |
IV |
>1 |
>1 |
目标的数据或者本地存储设备的# |
1 |
目标的#数据或者本地存储设备的# |
V |
>1 |
1 |
数据目标 |
>1 |
数据目标的#或者远程存储设备的# |
VI |
>1 |
>1 |
目标的数据或者本地存储设备的# |
>1 |
数据目标的#或者本地存储设备的# |
表2
以上所讨论的镜像功能以表2中的行I来描述。这是适用于实现将一个数据目标从一个本地存储设备镜像到一个远程存储设备的最简单和最基本的镜像方式。对于各个镜像周期来说,都会创建一个本地辅助数据块AVL和一个远程数据块RVx。
例如,在行II中,一个数据目标存储与一个本地存储设备SDL中,用于镜像多个远程存储设备SDRx,其中x接受特定存储设备的身份标识,这就需要在各个镜像周期中创建等于多个远程存储设备数量的远程数据块的序号。于是,如果需要对四个远程存储设备SDR1至SDR4进行镜像,则镜像功能就应用于冻结过程,如同行I所示,接着与四次(各个远程存储设备各一次)冻结过程的同时进行复制过程的操作。于是,经过两个连续镜像周期之间的时间间隔,在完成了复制和写入所有四个存储设备之后,就开始下一个镜像周期。各个镜像周期都需要一个本地辅助数据块和四个远程数据块RVx,其中例如x的范围是从1至4。本地辅助数据块的最小数量和由镜像功能在各个镜像周期中所创建的远程数据块的最小数量如表2的第三行和最后一行所显示。很显然,远程存储设备的数量可以与整数相乘。因此,可以获得8,12,16等等远程存储设备的镜像。
表2的行III需要将以单个数据目标驻留在本地存储设备SDL中的所选择的数据目标以一组数据目标的方式镜像到一个远程存储设备SDRx。于是,可以通过同时冻结所有的单个数据目标来应用行I所描述的镜像功能。例如,如果所选择的数据目标是一组三个单个的数据目标,则同时冻结这三个目标,并且随后将各个复制到远程存储设备SDRx。可以在写入到存储设备SDRx完成之后再开始下一个镜像周期。
行IV呈现了将一个包含了例如驻留在三个不同本地数据块SDLi中的三个数据目标的所选择数据目标镜像到一个远程存储设备SDRx的情况,其中,i=1,2,和3。同样,冻结过程可同时应用于三个单个的数据目标,并且行I的方法也可以应用于三个单个数据目标中的每一个。在对目的远程存储设备SDRx的最后写入操作完成之后将开始下一个镜像周期。
将行V应用于如同行III方法的冻结过程以及应用于如同行II方法复制到许多远程存储设备的复制过程。
在行VI中显示了一个实例,该实例适用于包含着驻留在一组存储设备中的一组单个数据目标的所选择数据目标的镜像,其中单个数据目标的数量等于目的远程存储设备的数量。对多个数据目标的同时冻结类似于在行III中所应用的冻结过程,并且复制过程也类似于在行II中所应用的复制过程。
很重要的是。应该注意到,冻结过程是同时对所有多个要冻结的数据目标的,无论它是属于相同选择的数据目标还是存储于多个本地存储设备中。当要进行多个复制时,例如,对许多远程存储设备进行复制时,就由完成最后复制的复制过程所需要的时间来规定下一个镜像周期的周期时间。
还值得注意的是,采用行I和行II所包括的方法,同时进行从本地到远程存储设备和相反的交叉镜像也是可行的。作为行I方法的一个简单实例,本地主机HL和远程主机HR都可以进行镜像功能的操作,各个主机都可以作为本地主机,而另一个主机可作为远程主机。
本领域的熟练技术人员应该理解的是,本发明并不限制于以上已经特别显示和描述的内容。例如,可以考虑由更多的选择数据目标,本地和远程存储设备的组合。然而,本发明的范围将由所附加的权利要求所定义,并且包括了以上所讨论的各种不同性能的组合和子组合以及本领域的熟练技术人员根据上文所讨论的内容所进行各种变化和改进。