用于时间敏感复制的装置、系统和方法

文档序号:6650977阅读:176来源:国知局
专利名称:用于时间敏感复制的装置、系统和方法
技术领域
本发明涉及数据复制技术,尤其涉及便利并行条带复制。
背景技术
通常将写高速缓冲存储器合并到计算机系统中,以增强可感觉的计算机系统的性能。通过实现写高速缓冲存储器,计算机系统可以例如在存储器(memory)中存储某些数据,随后将数据从存储器写到盘或另一永久存储设备。不幸的是,如果写数据被写到永久存储体(storage)之前发生电源故障,可能丢失在诸如随机访问存储器(RAM)的易失存储器中的写高速缓冲存储器中的写数据。
传统的高速缓存技术已经导致各种提议的解决方案,以避免响应于掉电而丢失写数据。特别是,一种传统技术提供二级的后备电源给存储器装置(memory device)。这些存储器装置通常称为电池后备的存储器(BBM)装置。电池可以长时间支持存储器装置。例如,某些BBM装置能够在写高速缓冲存储器中保存写数据大约72小时。然而,在购买和安装这些设备方面,BBM装置会非常昂贵。另外,BBM装置会占用可能以其它方式用于另外的计算机设备的相对大量的物理空间。
其它的传统技术提供后备电源给写高速缓冲存储器、存储器、处理器和存储设备足够长久以便存储写数据的拷贝到永久存储体。这些传统技术可以分类为两种类型的复制操作串行复制和并行有序复制。
通过产生写数据的第一拷贝接着产生写数据的第二拷贝,使得在相同数据的两个或更多拷贝在永久存储体中创建的串行复制容易。这些拷贝可以写到相同或不同的如两个分开的盘的永久存储设备。尽管冗余的拷贝通常比仅仅单一拷贝更安全,但是复制操作的串行性质要求二级电源备份支持系统更长的时间周期,以便在第一拷贝完成之后进行第二拷贝。
相比之下,并行复制利用处理器或多个处理器内近似并行的处理。并行复制也导致冗余复制,但是可能比串行复制更快地创建。并行复制在近似相同的时间写第一拷贝到第一盘和写第二拷贝到第二盘。然而,如果后备电源在并行复制操作完成之前发生故障,即使写数据的开始部分的并行拷贝被保留,用户也会在写高速缓冲存储器端丢失数据。换句话说,只有部分数据的两个拷贝可以存储在永久存储体中,但是可能丢失两个拷贝的剩余部分。
根据前面的讨论,应该明白,存在用于复制数据的减小作为在复制操作期间二级电源失败的结果的数据丢失的机会的装置、系统和方法的需求。此外,存在用于复制数据的减小系统或系统组件需要二级电源从写高速缓冲存储器复制写数据到永久存储体的时间长度的装置、系统和方法的需求。优点在于,这样的装置、系统和方法将克服当前与传统复制技术相关联的挑战。

发明内容
为响应本领域的当前状态,尤其响应在本领域中由当前可用的复制技术还未完全解决的问题和需求,已经发展了本发明的几个实施例。因此,已经开发本发明以提供用于复制数据的克服本领域中上述讨论的许多或全部缺点的装置、系统和方法。
用于复制数据的装置配备包含多个模块的逻辑单元,所述模块被配置来在功能上执行写数据拷贝到永久存储体所必要的操作。所描述的各实施例中的这些模块包括分割模块、条带模块和写模块。在另一个实施例中,这些模块也包括映射模块、进度模块、触发模块、恢复模块、基本模块和补充模块。在进一步的实施例中,这些模块还包括前向模块和后向模块。
在一个实施例中,所述装置包括分割模块、条带模块和写模块。分割模块将写高速缓冲存储器的数据映像分割为多个数据块。条带模块从多个数据块建立多个数据条带。写模块并行地写多个数据条带中的每个到相应的多个唯一永久数据存储设备,以响应写高速缓冲存储器的线路电源的丢失。
在一个实施例中,分割模块将写高速缓冲存储器中的写数据的数据映像分割为多个数据块。或者,分割模块可以将冗余写高速缓冲存储器中的冗余写数据的数据映像分割为多个数据块。分割模块分割数据映像所得的数据块的大小可以在数据映像的长度上是均匀的或可变的。所述数据块可以具有已知的起始位置和块大小或结束位置。
在一个实施例中,条带模块从多个数据块建立多个数据条带。数据条带可以具有均匀或者可变的大小。在一个实施例中,将数据块分组为数据块组,也称为数据条带。在一个实施例中,数据条带的数目由永久存储设备的数目确定。或者,永久存储设备的数目可以小于数据条带的数目,因此允许将多个条带写到单个的永久存储设备。
在一个实施例中,写模块并行地写多个数据条带中的每个到相应的多个唯一(unique)永久数据存储设备,以响应写高速缓冲存储器的线路电源的丢失。换句话说,在主电源发生故障之后和二级电源发生故障之前,写模块将每个数据条带写到唯一永久存储设备。
在进一步的实施例中,写模块可以继续将数据条带写到永久存储设备,直到所有的数据条带已经写到每个永久存储设备,假设写数据的完全拷贝数目与永久数据存储设备的数目相等。然而,如果二级(备份)电源在完全拷贝写到永久存储设备之前发生故障,则至少部分拷贝(与被完全或部分写的条带一样多)应该被存储在各种永久存储设备上。在某些实施例中,写模块可以采用前向模块或后向模块写写数据或冗余写数据。
在一个实施例中,映射模块映射数据映像到每个永久数据存储设备。数据映像可以被映射到永久存储设备上的邻近块的空间或者多个不邻近块。如果永久数据存储设备相同,则提供单个映射用于相同的永久存储设备就可能足够了。
在一个实施例中,进度模块管理进度代码以跟踪并行数据条带写操作的进度。在某些实施例中,进度代码可以包括描述在给定时间的写操作的状态和数据映像的几个属性字段。在一个实施例中,进度模块在复制操作中始终周期性地更新进度代码。另外,进度模块可以在永久存储设备中存储进度代码,使得它们在发生主要和二级电源丢失时可用。
在一个实施例中,触发模块识别启动上述并行条带复制操作的触发事件。触发事件的一个例子是写高速缓冲存储器的线路电源的丢失。或者,触发事件可以是可能影响易失性和/或用于写写数据到永久存储体的可用时间的另一种类型的电源或数据信号。
在一个实施例中,恢复模块从多个数据存储设备读取数据条带,并且恢复写数据到写高速缓冲存储器。或者,恢复模块从多个数据存储设备读取数据条带,并且恢复冗余写数据到冗余写高速缓冲存储器。在另一个实施例中,恢复模块恢复尽可能多的数据映像,即使对特定数据条带或数据块只有部分数据可用。
在一个实施例中,基本模块指定数据条带之一作为与相应的数据拷贝相关联的基本条带。类似地,补充模块指定除了基本条带的所有数据条带作为用于对应于基本条带的数据拷贝的补充条带。在一个实施例中,写模块被配置来向永久存储设备首先写基本条带,以及在基本条带之后的补充条带。
还提出了复制数据的装置的另一个实施例。该装置包括条带模块和写模块。条带模块从写高速缓冲存储器的数据映像建立第一数据条带和第二数据条带。写模块写第一数据条带到第一数据存储设备和写第二数据条带到第二数据存储设备。随后,写模块写第二数据条带到第一数据存储设备和写第一数据条带到第二数据存储设备。在进一步的实施例中,可以在向前的方向写第一数据拷贝,而在向后的方向可写第二数据拷贝。
还提出了本发明的复制数据的系统。在一个实施例中,该系统可以在存储区域网络(SAN)系统中实施,该存储区域网络系统包含多个数据存储设备、存储控制器、写高速缓冲存储器和复制装置。在一个实施例中,所述复制装置耦合到存储控制器,并且将写数据的多个拷贝并行地写到多个数据存储设备,以响应存储控制器的电源丢失。另外,复制装置以相对于其它拷贝唯一的条带划分的顺序写每个拷贝。
还提出了存储程序的信号承载介质,该程序在执行时进行一个或多个复制数据的操作。在一个实施例中,所述操作包括分割写高速缓冲存储器的数据映像为多个数据块;从多个数据块建立多个数据条带;以及并行地写多个数据条带中的每个到相应的多个唯一的永久数据存储设备,以响应写高速缓冲存储器的线路电源丢失。
在另一个实施例中,所述操作也可以包括写所有数据条带到每个数据存储设备,以产生等于数据条带数目的多个数据拷贝;指定数据条带之一作为与相应的数据拷贝相关联的基本条带;指定除了基本条带的所有数据条带作为用于相应于基本条带的数据拷贝的补充条带,和/或写基本条带以及随后的补充条带到唯一的数据存储设备之一。
在另一个实施例中,所述操作也可以包括映射数据映像到多个数据存储设备中的每个;管理进度代码以跟踪并行数据条带写的进度;在向前的方向写多个数据条带之一到多个数据存储设备之一;和/或在向后的方向写多个数据条带之一到多个数据存储设备之一。在另一个实施例中,所述操作也可以包括识别写高速缓冲存储器的线路电源的丢失。在另一个实施例中,所述操作也可以包括从多个数据存储设备读取数据条带并恢复写数据到写高速缓冲存储器。
还提出了一种用于配置计算架构的方法。该计算架构包括集成到计算系统中的计算机可读代码。在一个实施例中,计算机可读代码与计算系统结合能够复制数据。特别地,在所公开的实施例中的方法基本包括配置代码,该代码能够使必要的操作执行上面提出的关于所描述的系统和装置的操作的功能。另外,所述代码的一些或全部的操作可以基本类似于执行信号承载介质上的程序时所进行的操作。
贯穿本说明书的对特征、优点的引用或相似语言并不意味着可以用本发明实现的所有特征和优点在或者应该在本发明的任何单个的实施例中。相反,所提到特征和优点的语言被理解为意味着结合实施例所描述的特定特征、优点或特性包括在本发明的至少一个实施例中。因此,贯穿本说明书的特征和优点的说明以及类似的语言可以,但不一定,指相同的实施例。
而且,所描述的本发明的特征、优点和特性可以以任何适当的方式在一个或多个实施例中组合。相关领域的技术人员将认识到,可以实现本发明而没有特定实施例的一个或多个特定特征或优点。在其它例子中,在某些实施例中可以认识到另外的特征和优点,它们可能没在本发明的所有实施例中出现。
从下面的描述和权利要求,本发明的这些特征和优点将更变得彻底明白,或者可以通过下文所提出的本发明的实践获知。


为了容易理解本发明的优点,通过参照附图中说明的特定实施例,为上面简要说明的本发明提供更具体的描述。要懂得,这些附图只描述了发明的典型实施例,因此不认为是对其范围的限制,本发明通过使用附图将用另外的特征和细节描述和解释,附图中图1是描述存储区域网络(SAN)系统的一个实施例的示意性框图;图2是说明SAN系统的存储子系统内的存储控制器的一个实施例的示意性框图;图3是说明耦合到存储控制器的电子存储器装置的一个实施例的示意性框图;
图4是说明复制装置的一个实施例的示意性框图;图5a是说明数据映像、数据块和数据条带的一个实施例的示意性框图;图5b是说明用于数据条带的读顺序的一个实施例的示意性框图;图6a-c是说明用于数据条带的数据复制顺序的几个实施例的示意性框图;图7是说明复制方法的一个实施例的示意性流程图;图8是说明预复制(pre-copy)方法的一个实施例的示意性流程图;图9是说明并行写方法的一个实施例的示意性流程图;图10是说明条带写方法的一个实施例的示意性流程图;以及图11是说明恢复方法的一个实施例的示意性流程图。
具体实施例方式
在本说明书中所描述的许多功能单元已经被标为模块,以便更特别地强调它们实现的独立性。例如,模块可以作为硬件电路实现,该硬件电路包含定制的VLSI电路或门阵列、现成半导体,如逻辑芯片、晶体管或其它分立元件。模块也可以在可编程硬件设备,如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等中实现。
模块也可以在用于由各种类型处理器执行的软件中实现。标识出的可执行代码的模块例如可以包含一个或更多计算机指令的逻辑的或物理的块,该计算机指令例如可以被作为对象、过程或函数组织。然而,识别的模块的可执行代码不必物理上安置在一起,而是可以包含存储在不同位置的根本不同的指令,这些位置逻辑上连接在一起时包含所述模块并实现用于所述模块的所陈述的目的。
实际上,可执行代码的模块可以是单一指令或许多指令,并且甚至可以分布在几个不同的代码段上、不同程序之间并且跨越几个存储器装置。类似地,操作数据在此可以在各模块内识别和说明,并且可以以任何适当的形式实施且在任何适当类型的数据结构内组织。操作数据可以集中为单一数据集合,或者可以分布在包括不同存储设备上的不同位置上,并且可以至少部分地只作为系统或网络上的电子信号存在。
图1描述了存储区域网络(SAN)系统100的一个实施例。所图示的SAN系统100包括连接到SAN 104的主机102。SAN系统100也包括存储子系统A 106和存储子系统B 108。在一个实施例中,主机102可以与存储子系统A106和/或存储子系统B 108通过SAN 104通信。类似地,存储子系统A 106可以与存储子系统B 108通过SAN 104通信。或者,存储子系统A 106可以直接与存储子系统B 108通过直接通信通道(未显示)通信。
在进一步的实施例中,SAN系统100可以包括不只一个主机102和/或不只两个存储子系统106、108。在不只一个主机102连接到SAN 104的地方,每个主机102可以对应一个或更多存储子系统106、108。例如,在一个实施例中,可以配置主机102只与存储子系统A 106通信,而不与存储子系统B 108通信。
在一个实施例中,存储子系统A 106包括存储控制器A 110和多个卷(volume)112-118。参照图2更详细地描述存储控制器A 110的例子。卷112-118可以表示物理存储设备,如存储子系统A 106内的硬盘驱动器(HDD)。或者,卷112-118可以表示映射到存储子系统A 106内某些物理存储设备的逻辑卷。存储子系统B 108类似于存储子系统A 106,在于它包括存储控制器B 120和多个卷122-128。存储子系统B 108的存储控制器B 120和卷122-128可以基本上类似于存储子系统A 106的存储控制器A 110和卷112-118。
图2描述了存储控制器200的一个实施例,该存储控制器基本上类似于图1的存储控制器A110和存储控制器B 120。所图示的存储控制器200包括中央处理单元(CPU)202、电子存储设备204、电子存储器装置206、一个或更多网络接口设备208、210以及复制装置212。在一个实施例中,存储控制器200包括局域网(LAN)接口208和存储局域网(SAN)接口210。
在一个实施例中,配置CPU 202以处理数据请求、操作和命令,以便管理存储控制器200。在一个实施例中,配置电子存储设备204电子地存储与存储控制器200的管理和操作有关的数据。在一个实施例中,电子存储设备204可以是永久存储器或另一种类型的永久数据存储体。类似地,在一个实施例中,配置电子存储器装置206电子地存储数据,该数据可以被用于存储控制器200的管理和操作和/或可能在存储控制器200上执行的应用程序。参照图3更详细地描述电子存储器装置206的一个例子。
在一个实施例中,LAN接口设备208允许通信在存储控制器200和一个和更多设备,如连接到LAN(未显示)的主机102之间发生。类似地,SAN接口210允许通信在存储控制器200和其它连接到SAN 104的设备之间发生。或者,SAN接口设备210可以允许在例如存储控制器A110和存储控制器B120之间通信。
图3描述可基本上类似于图2中显示的电子存储器装置206的电子存储器装置300的一个实施例。存储器300通常存储可以被用于管理存储控制器200的操作的数据和/或元数据。在一个实施例中,存储器300是易失存储器。或者,存储器300可以是非易失存储器,如非易失随机访问存储器(NVRAM)或类似的存储器装置。
配置所图示的存储器300在几个分区存储各种类型的数据。例如,存储器300可以存储控制数据302和代码加载数据304。存储器300也可以包含保留的空间用于读高速缓冲存储器306和写高速缓冲存储器308。在进一步的实施例中,存储器300也可以保留空间用于冗余写高速缓冲存储器310,该冗余写高速缓冲存储器310可以基本上类似于写高速缓冲存储器308。
在一个实施例中,读高速缓冲存储器306存储从给定存储子系统106内的卷112-118中的任何一个读取的读数据320。读数据320可以被存储在读高速缓冲存储器306中,并且随后被发送到例如主机102或SAN系统100内的另一个设备。类似地,写高速缓冲存储器308和冗余写高速缓冲存储器310分别存储写数据330和冗余写数据340,该数据要写到SAN系统100内的卷112-118中的一个或多个卷。
当存储器300是易失的,并且通常存储器300,特别是写高速缓冲存储器308,以及CPU 202存在线路电源丢失时,执行时间敏感复制操作以便快速地复制写数据330到一个或更多永久存储设备如在给定存储子系统106内的卷112-118是有用的。复制装置212可使这样的复制操作容易复制写数据330和/或冗余写数据340到一个或多个永久存储设备。
图4描述复制装置400的一个实施例,该复制装置400可基本类似于图2的复制装置212。在一个实施例中,配置复制装置400以管理与存储控制器200所处的存储子系统相关联的复制操作。更具体地讲,复制装置400可以使复制操作易于从易失存储器300快速复制写数据330和/或冗余写数据340,以响应写高速缓冲存储器308和/或冗余写高速缓冲存储器310线路电源的丢失。
所图示的复制装置400包括分割模块(section module)402、条带模块404和写模块406。所图示的复制装置400还包括映射模块408、进度模块(progress module)410、触发模块412、恢复模块414、基本模块(base module)416和补充模块(supplemental module)418。在一个实施例中,写模块406还可以包含前向模块(forward module)422和后向模块(backward module)424。虽然下面立即提供这些模块402-424的某些描述,也可以参照在此描述的其它图和流程图的说明理解这些模块402-424的功能性的进一步细节。
在一个实施例中,分割模块402将写高速缓冲存储器308中的写数据330的数据映像分成多个数据块。或者,分割模块402可以将冗余写高速缓冲存储器310中的冗余写数据340的数据映像分成多个数据块。分割模块402分割数据映像所得的数据块的大小在数据映像的长度上可以是均匀的或可变的。例如,在一个实施例中,具有总大小为一千兆字节(GB)的数据映像可以均匀地细分为每个32兆字节(MB)的数据块。数据块可以具有已知的起始位置和块大小或结束位置。参照图5a更详细地说明数据映像和数据块的一个例子。
在一个实施例中,条带模块404从多个数据块建立多个数据条带。数据条带可以具有均匀或可变的大小。在一个实施例中,数据块被分组为数据块组,也称为数据条带。条带的数目与要写入数据映像的永久存储设备的数目有关。在一个实施例中,数据条带的数目由永久存储设备的数目确定。例如,假设一对一的比率,数据条带和永久存储设备的数目可以相等。或者,永久存储设备的数目可以小于数据条带的数目,因此允许多个条带写到单个永久存储设备。
在一个实施例中,写模块406并行地写多个数据条带的每个到相应的多个唯一的永久数据存储设备,以响应写高速缓冲存储器线路电源的丢失。换句话说,主电源发生故障之后和二级电源发生故障之前,写模块406写每个数据条带到唯一的永久存储设备。
在进一步的实施例中,写模块406可以继续写数据条带到永久存储设备,直到所有数据条带已经写到每个永久存储设备,假设写数据330的完全拷贝的数目等于永久存储设备的数目。但是,如果二级(备份)电源在完全拷贝被写到永久存储设备之前发生故障,则至少部分拷贝(与被完全或部分写的条带一样多)应该存储在各种永久存储设备上。在某些实施例中,写模块406可以使用前向模块422或后向模块424写写数据330或冗余写数据340。参照图5b更详细地说明前向和后向写的例子。
在一个实施例中,映射模块408将数据映像映射到每个永久数据存储设备。数据映像可以被映射到永久存储设备上的一个邻近块的空间或者可替代地映射到多个不邻近块。如果各永久数据存储设备相同,则提供单个映射用于相同的永久存储设备可能就足够了。然而,数据映像的每个数据块在永久存储设备上占据的位置可以预先知道。
在一个实施例中,进度模块410管理进度代码以跟踪并行数据条带写操作的进度。虽然未在图中显示,进度代码可以包括描述在给定时间的写操作的状态和数据映像的几个属性字段。例如一些属性字段可以包括总的映像大小、数据块大小、数据块的总数、跟踪被写数据块的编号、指示要写的下一个数据块的标识符、目标存储设备标识符、数据映像内每个块的位置、指示用于给定数据块的复制状态和盘位置的复制状态指示符、复制完成布尔值等。
在另一个实施例中,可以实现多个进度代码,并且每个进度代码可以包含一些或全部所列举的属性字段。在进一步的实施例中,一个或多个进度代码可以包括有助于跟踪复制操作的状态的其它属性字段。在一个实施例中,进度模块410在复制操作中始终周期性地更新进度代码。另外,进度模块410可以在永久存储设备中存储进度代码,使得它们在发生主要和二级电源丢失时可用。
在一个实施例中,触发模块412识别启动上述并行条带复制操作的触发事件。触发事件的一个例子是写高速缓冲存储器308的线路电源的丢失。或者,触发事件可以是可能影响易失性和/或用于写写数据330到永久存储体的可用时间的另一种类型的电源或数据信号。
在一个实施例中,恢复模块414从多个数据存储设备读取数据条带,并且恢复写数据330到写高速缓冲存储器308。或者,恢复模块414从多个数据存储设备读取数据条带,并且恢复冗余写数据340到冗余写高速缓冲存储器310。在另一个实施例中,恢复模块414恢复尽可能多的数据映像,即使对特定数据条带或数据块只有部分数据可用。恢复模块414可以查询进度代码以确定哪些数据可以或不可以被恢复。参照图11更详细地说明从永久存储设备恢复数据的一个例子。
在一个实施例中,基本模块416指定数据条带之一作为与相应的数据拷贝相关联的基本条带。类似地,在一个实施例中,补充模块418指定除了基本条带的所有数据条带作为用于对应于基本条带的数据拷贝的补充条带。在一个实施例中,写模块406被配置来首先写基本条带到永久存储设备,而基本条带之后写补充条带。参照图6a-c更详细地描述基本和补充条带的例子。
图5a描述数据映像502的一个实施例,该数据映像502表示存储控制器200的存储器300内的写高速缓冲存储器308中的写数据330。或者,数据映像502表示存储器300的冗余写高速缓冲存储器310中的冗余写数据340。如在此所使用的,引用写高速缓冲存储器308旨在包括对冗余写高速缓冲存储器310的额外的或可供选择的引用,除非另有所指。
所图示的数据映像502可以是基本上等于写高速缓冲存储器308的大小的任何大小。例如,如果写高速缓冲存储器308大约是1GB,则数据映像502的大小也可大约是1GB。如上面所说明的那样,分割模块402可以将数据映像502分割为大小大致相同的多个数据块504。在所说明的例子中,数据映像502被细分为十二个数据块504。然而,分割模块402可以将数据映像502分割为更少或更多的数据块504。
然后,条带模块506可以将数据块504分组为两个或更多也可以被称为数据条带506的块组506。在一个实施例中,每个数据条带506包含多个数据块504的唯一子集。然而,在可供选择的实施例中,数据条带506可以包括部分或全部交迭的数据块504。在所说明的例子中,十二个数据块504被分组为两个数据条带506。虽然数据条带506的大小可以由数据映像502内的数据块504的数目确定,但是在可供选择的实施例中,数据条带506的大小可以由数据映像502的总的大小和数据块504的增量大小确定。
图5b描述了用于特定数据条带520的读顺序的一个实施例。所说明的数据条带520包括多个数据块522a-f,虽然数据条带520的可供选择的实施例可以包括更少或更多的数据块522。为了从存储器300复制数据条带520到永久存储设备,写模块406可以单独地读和写数据块522。虽然可能后向读取数据,但传统的数据读操作通常在向前的方向读数据。因此,参照各数据块522的前向读取来描述所图示的用于数据条带520的读顺序的实施例。每个数据块522a-f的前向读取由每个数据块522a-f下面的相应的箭头524a-f图示。然而,在可供选择的实施例中,在向后的方向读取各个数据块522是可能的。
关于复合数据条带520,在向前的方向或向后的方向读取数据条带520会是可能的。如上所述,写模块406可以利用前向模块422在向前的方向读和写数据条带520。类似地,写模块406可以利用后向模块424在向后的方向读和写数据条带520。
为在向前的方向读数据条带520,写模块406可以以下面的顺序522a->522b->522c->522d->522e->522f读取各个数据块522,其从在数据条带520开始的第一数据块522a开始,并且继续到数据条带520末尾的最后一个数据块522f。
为在向后的方向读数据条带520,写模块406可以以下面的顺序522f->522e->522d->522c->522b->522a读取各个数据块522,其从在数据条带520末尾的最后一个数据块522f开始,并且继续到数据条带520开始的第一数据块522a。
图6a描述了用于特定数据映像600的数据复制顺序的一个例子。所图示的数据映像600被细分为两个数据条带-第一数据条带602和第二数据条带604。在写模块406写数据条带602、604到相应的两个永久存储设备之前,对数据映像600的每个拷贝,基本模块416可以指定基本条带,并且补充模块418可以指定补充条带。对数据映像600的每个拷贝,基本模块416可以指定一个基本条带,并且补充模块418可以指定剩余的数据条带为补充条带。
在用于单个数据拷贝的到单个永久存储设备的写操作期间,首先写基本条带,然后写补充条带。在一个实施例中,并行地写用于所有数据拷贝的基本条带到相应的永久存储设备。随后,并行地写补充条带到相应的永久存储设备。表6.1提供了对应图6a的数据映像600的条带表示(designation)。
表6.1用于每个数据映像的拷贝的基本和补充条带

在所图示的包含两个数据条带602、604的实施例中,可以写两个数据拷贝-第一数据拷贝和第二数据拷贝。换句话说,将产生数据映像600的至少两个拷贝,其中每个拷贝写到唯一的永久存储设备。第一数据拷贝用实箭头606a、606b指示,而第二数据拷贝用虚箭头608a、608b指示。此外,用于并行数据拷贝的读和写顺序用沿右边缘的时间t1和t2指示。
在时间t1,写模块406写第一数据条带602(它是用于拷贝1的基本条带)到第一永久存储设备。并行地,写模块406写第二数据条带604(它是用于拷贝2的基本条带)到第二永久存储设备。随后,在时间t2,写模块406写第二数据条带604(它是用于拷贝1的补充条带)到第一永久存储设备。并行地,写模块406写第一数据条带602(它是用于拷贝2的补充条带)到第二永久存储设备。在所图示的复制顺序之后,第一数据拷贝位于第一永久存储设备上,而第二数据拷贝位于第二永久存储设备上。表6.2显示了用于所描述的图6a的复制顺序的时间线(timeline)。
表6.2用于第一和第二数据拷贝的复制顺序

条带读和写的顺序也在图6a中被描述。正如所示,如由实箭头606a、606b指示的那样在向前的方向读和写用于第一数据拷贝的两个数据条带602、604。相比之下,如由虚箭头608a、608b指示的那样,在向后的方向读和写用于第二数据拷贝的两个数据条带602、604。换句话说,参照读和写数据条带602、604的数据块的顺序,第一拷贝是前向拷贝,而第二拷贝是后向拷贝。表6.3列出了对所描述的图6a的复制顺序,读和写数据条带602、604的每个的方向。
表6.3用于数据条带的复制方向

图6b描述了用于基本上类似于图6a的数据映像600的数据映像620的可供选择的数据复制顺序。如表6.4中所说明和显示的那样,第一和第二数据拷贝两个都在向前的方向读和写。在可供选择的实施例中,可以采用用于各种数目的数据条带的复制方向的其它组合。
表6.4用于数据条带的复制方向

图6c描述了用于特定数据映像640的数据复制顺序的一个例子,该数据映像640被细分为三个数据条带642、644、646。在一个实施例中,可以分别根据表6.5、6.6和6.7显示的条带表示、复制顺序和复制方向,为数据映像640写三个数据拷贝(由实、虚和点箭头指示)。
表6.5用于数据映像的每个拷贝的基本和补充条带

表6.6用于第一和第二数据拷贝的复制顺序

表6.7用于数据条带的复制方向

图7描述了复制方法700的一个实施例,该复制方法可以由图4的复制装置400推动。所图示的复制方法700可以响应于诸如存储控制器200的线路电源的丢失的触发事件开始。或者,复制方法700可以响应于另一类型的触发事件开始。
复制方法700开始之后,分割模块402将写高速缓冲存储器308的数据映像502分割702为多个数据块504。然后,条带模块404从多个数据块504建立704多个数据条带506。随后,写模块406并行地写706数据条带506到相应的多个唯一的永久数据存储设备。在可供选择的实施例中,所述分割702和条带划分704可以在触发事件之前发生,并且写706可以响应于该触发事件发生。
图8描述了通过更详细的操作的例子给出的预复制方法800的一个实施例,该操作可以结合图7的复制方法700发生。如上所述,所图示的预复制方法800开始,并且分割模块402将数据映像502分割802为数据块504。然后,条带模块404创建包括各种数据块504的数据条带506。预复制方法800的分割操作802和条带划分操作804可以基本上类似于复制方法700的分割操作702和条带划分操作704。
建立804数据条带506之后,然后条带模块404为每个数据条带506建立806起始数据块504。在一个实施例中,条带模块404可以利用前向模块422或后向模块424为给定数据条带506建立806所述起始块504。随后,进度模块410为各种数据拷贝和相应的数据条带506初始化808一个或多个进度代码。然后,映射模块408将数据条带506映射810到相应的永久存储设备。然后预复制方法800结束。
图9描述了通过更详细的操作的例子给出的并行写方法900的一个实施例,该操作可以结合图7的复制方法700发生。特别地,并行写方法900描述了并行地写各种数据条带506到相应的永久存储设备的一个例子。在一个实施例中,并行写方法900响应于图8的预复制方法800的完成而开始。
并行写方法900开始之后,基本模块416为每个数据拷贝识别902基本条带。例如,如果数据映像502被细分为三个数据条带506,则基本模块416可以将三个数据条带506中的每个识别为对应于三个数据拷贝中的每个。然后,写模块406并行地写904基本条带506到相应的永久存储设备。在一个实施例中,写操作904可以经由多个处理器通过处理器线程的管理,或者依靠任何其它基本上执行并行的操作的方式(means),在单个处理器上发生。
将用于每个数据拷贝的基本条带写904到相应的永久存储设备之后,然后补充模块418识别906第一补充条带。然后写模块406写908补充条带到相应的永久存储设备。然后,补充模块418确定910是否存在另外的补充条带,并且如果存在,则返回到识别906另外的补充条带。识别操作906、写操作908和确定操作910以这种方式继续,直到所有补充条带被写908到永久数据存储设备。然后,并行写方法900结束。或者,存储控制器200的二级电源发生故障时,并行写方法900结束。
图10描述了通过更详细的操作的例子给出的条带写方法1000的一个实施例,该操作可以结合图7的复制方法700发生。特别地,条带写方法1000显示这样的操作,该操作可方便对给定数据条带506的前向写或后向写。在一个实施例中,条带写方法1000响应于图9的并行写方法900的条带写操作904、908的启动而开始。
所图示的条带写方法900开始,并且写模块406识别1002在数据条带506内的数据块504。更具体地讲,前向模块422在前向写操作中识别1002数据条带506的第一数据块504。相比之下,后向模块424在后向写操作中识别1002数据条带506的最后一个数据块504。然后,写模块406将所识别1002的块写1004到永久存储体。结合写操作1004,进度模块410可以更新相关联的进度代码。
然后,写模块406确定1008是否要写所给定的数据条带506内另外的数据块504。如果是,则写模块继续识别1002下一个数据块504。或者,如果对于给定数据条带506,已经写了所有数据块504,则所描述的条带写方法1000结束。
图11描述了恢复方法1100的一个实施例,该恢复方法1100可以便利从永久存储设备恢复数据映像500到写高速缓冲存储器308。在一个实施例中,恢复方法1100可以处于触发事件的响应识别1102中,触发事件如存储控制器200在存储控制器200的先前线路电源丢失之后重新获得电源。然而,其它事件也可以用作用于恢复方法1100的触发事件。
在所图示的恢复方法1100开始之后,进度模块410可以访问1104进度代码以确定1106是否数据映像500的完全数据拷贝存在于单个永久存储设备上。如果是,则恢复模块414恢复1108数据映像500到写高速缓冲存储器308。或者,恢复模块414可以恢复1108数据映像500到读高速缓冲存储器306。在进一步的实施例中,恢复模块414可以从多个永久存储设备上的多个数据条带506恢复1108数据映像500。
如果进度模块410确定1106在单个永久存储设备上不存在数据映像500的完全拷贝,则进度模块410随后确定1110在多个永久存储设备上是否存在经过条带划分的拷贝。如果存在这样的经过条带划分的拷贝,则即使在任何单个永久存储设备上不存在完全拷贝,恢复模块414也从多个永久存储设备恢复1108经过条带划分的拷贝。在一个实施例中,恢复模块414以与从写高速缓冲存储器308写数据条带到多个数据存储设备基本相同的顺序恢复1108经过条带划分的拷贝。
然而,如果没有数据映像500的完全拷贝或经过条带划分的拷贝,恢复模块414尝试恢复1112尽可能多的数据映像500。在一个实施例中,恢复模块414可以利用传统的数据恢复技术尝试恢复1112部分数据到写高速缓冲存储器308。在恢复模块414恢复完全拷贝、经过条带划分的拷贝或尽可能多的部分数据之后,然后所描述的恢复方法1100结束。
因此,可能有利的是,提供一种复制装置400,其便于并行条带写操作以从写高速缓冲存储器308转储尽可能多的写数据330到永久存储体。在一个特定的应用中,该相对快的数据复制操作便于从易失存储器300复制同样多的数据到永久存储设备,以响应电源控制器200的线路电源丢失。优点在于,定时的复制操作的速度降低了对长时间电池的依赖,该电池在延长的时间段备份支持整个存储子系统106。另外,如果必要,恢复模块414在几乎同样快的时间段中便于恢复数据映像500到写高速缓冲存储器308。
在此包括的示意性流程图通常作为逻辑流程图提出。同样,所描述的顺序和标明的操作表示所提出的方法的一个实施例。可以设想其它操作和方法,它们在功能、逻辑或效果上等价于所说明的方法的一个或多个操作或其部分。另外,提供所使用的格式和符号以解释方法的逻辑操作,而不被理解为限制所述方法的范围。虽然在流程图中可以使用各种箭头类型和线条类型,但是它们不被理解为限制相应的方法的范围。事实上,一些箭头或其它连接符可以用于只指示方法的逻辑流。例如,箭头可以指示列举的所描述方法的各操作之间未指定持续时间的等待或监视周期。另外,特定方法发生的顺序可以或可以不严格地遵循所显示的相应操作的顺序。
在整个说明书中所涉及的“一个(one)实施例”、“一个(a)实施例”或类似语言意味着,结合所述实施例说明的特定的特征、结构或特性被包括在本发明的至少一个实施例中。因此,贯串本说明书的短语“在一个实施例中(in oneembodiment)”、“在一个实施例中(in an embodiment)”或类似语言的出现可以,但不一定,全部指相同的实施例。
对信号承载介质的引用可以采取能够产生信号、使信号被产生或导致数字处理装置上机器可读指令的程序的执行的任何形式。信号承载介质可以由传输线、致密盘、数字视频盘、磁带、伯努利(Bernoulli)驱动器、磁盘、打孔卡、快闪存储器、集成电路或其它数字处理装置存储器装置实施。
另外,本发明所描述的特征、结构或特性可以在一个或多个实施例中以任何适当的方式组合。在下面的描述中,提供了很多特定的细节,如编程、软件模块、用户选择、网络事务处理、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等的例子,以便提供对本发明的实施例的透彻理解。但是,相关领域的技术人员将认识到,可以不用一个或多个所述特定的细节,或者用其它方法、组件、材料等来实践本发明。在其它例子中,对公知的结构、材料或操作未详细显示或描述,以避免使本发明的各方面不明显。
本发明可以在不背离其精神或基本特性的情况下以其它特定形式实施。所描述的实施例在所有方面要被认为只作为说明而非限制。因此,本发明的范围由权利要求而不是由前面的描述来指明。在权利要求的等价的含义和范围内产生的所有改变要包含在它们的范围内。
权利要求
1.一种复制数据的装置,该装置包含分割模块,其被配置来将写高速缓冲存储器的数据映像分割为多个数据块;耦合到分割模块的条带模块,该条带模块被配置来从该多个数据块建立多个数据条带;以及耦合到条带模块的写模块,该写模块被配置来并行地写该多个数据条带的每个到相应的多个唯一的永久存储设备,以响应写高速缓冲存储器的线路电源的丢失。
2.根据权利要求1所述的装置,其中所述写模块被进一步配置来写所有的数据条带到每个数据存储设备,以便产生等于数据条带数目的多个数据拷贝。
3.根据权利要求2所述的装置,还包含耦合到写模块的基本模块,该基本模块被配置来指定数据条带之一为与相应的数据拷贝相关联的基本条带。
4.根据权利要求3所述的装置,还包含耦合到写模块的补充模块,该补充模块被配置来指定除了基本条带的所有数据条带为用于对应于基本条带的数据拷贝的补充条带。
5.根据权利要求4所述的装置,其中所述写模块被进一步配置来写基本条带、随后写补充条带到唯一的数据存储设备中的一个。
6.根据权利要求1所述的装置,还包含耦合到写模块的映射模块,该映射模块被配置来映射数据映像到该多个数据存储设备的每个。
7.根据权利要求1所述的装置,还包含耦合到写模块的进度模块,该进度模块被配置来管理进度代码,以便跟踪并行数据条带写的进度。
8.根据权利要求1所述的装置,还包含耦合到写模块的前向模块,该前向模块被配置来在向前的方向写该多个数据条带之一到该多个数据存储设备之一。
9.根据权利要求1所述的装置,还包含耦合到写模块的后向模块,该后向模块被配置来在向后的方向写该多个数据条带之一到该多个数据存储设备之一。
10.根据权利要求1所述的装置,还包含耦合到写模块的触发模块,该触发模块被配置来识别写高速缓冲存储器的线路电源的丢失。
11.根据权利要求1所述的装置,还包含耦合到写模块的恢复模块,该恢复模块被配置来从该多个数据存储设备读取数据条带,并且恢复写数据到写高速缓冲存储器。
12.根据权利要求1所述的装置,其中每个数据条带包含该多个数据块的唯一的子集。
13.一种复制数据的装置,该装置包含条带模块,其被配置来从写高速缓冲存储器的数据映像建立第一数据条带和第二数据条带;以及耦合到条带模块的写模块,该写模块被配置来写第一数据条带到第一数据存储设备以及写第二数据条带到第二数据存储设备,随后写第二数据条带到第一数据存储设备以及写第一数据条带到第二数据存储设备。
14.根据权利要求13所述的装置,其中所述写模块被进一步配置来并行地写第一和第二数据条带到各第一和第二数据存储设备。
15.根据权利要求13所述的装置,其中所述写模块被进一步配置来并行地写第二和第一数据条带到各第一和第二数据存储设备。
16.根据权利要求13所述的装置,还包含耦合到写模块的前向模块,该前向模块被配置来在向前的方向写第一和第二数据条带到第一数据存储设备。
17.根据权利要求13所述的装置,还包含耦合到写模块的后向模块,该后向模块被配置来在向后的方向写第二和第一数据条带到第二数据存储设备。
18.一种复制数据的系统,该系统包含多个数据存储设备;耦合到该多个数据存储设备的存储控制器;耦合到存储控制器的写高速缓冲存储器,该写高速缓冲存储器被配置来存储写数据;以及耦合到存储控制器的复制装置,该复制装置被配置来并行地写写数据的多个拷贝到该多个数据存储设备,以响应存储控制器的电源丢失,按相对于其它拷贝的唯一的条带划分的顺序写每个拷贝。
19.根据权利要求18所述的系统,还包含耦合到复制装置的进度模块,该进度模块被配置来管理进度代码,以便跟踪并行复制写的进度。
20.根据权利要求19所述的系统,其中所述进度模块被进一步配置来在耦合到存储控制器的永久存储设备中存储进度代码。
21.根据权利要求20所述的装置,还包含耦合到复制装置的恢复模块,该恢复模块被配置来从该多个数据存储设备至少读取拷贝之一,并且恢复写数据到写高速缓冲存储器。
22.根据权利要求21所述的系统,其中所述恢复模块被进一步配置来以与写多个拷贝到多个数据存储设备基本相同的顺序,恢复写数据到写高速缓冲存储器。
23.一种有形地实施机器可读指令的程序的信号承载介质,该指令可以由数字处理装置执行以进行复制数据的操作,该操作包含分割写高速缓冲存储器的数据映像为多个数据块;从该多个数据块建立多个数据条带;以及并行地写该多个数据条带的每个到相应的多个唯一的永久数据存储设备,以响应写高速缓冲存储器的线路电源的丢失。
24.根据权利要求23所述的信号承载介质,其中所述指令还包含写所有数据条带到每个数据存储设备,以便产生等于数据条带数目的多个数据拷贝的操作。
25.根据权利要求24所述的信号承载介质,其中所述指令还包含指定数据条带之一作为与相应的数据拷贝相关联的基本条带的操作。
26.根据权利要求25所述的信号承载介质,其中所述指令还包含指定除了基本条带的所有数据条带作为用于对应于基本条带的数据拷贝的补充条带的操作。
27.根据权利要求26所述的信号承载介质,其中所述指令还包含写基本条带以及随后写补充条带到唯一的数据存储设备之一的操作。
28.根据权利要求23所述的信号承载介质,其中所述指令还包含映射数据映像到该多个数据存储设备的每个的操作。
29.根据权利要求23所述的信号承载介质,其中所述指令还包含管理进度代码,以便跟踪并行数据条带写的进度的操作。
30.根据权利要求23所述的信号承载介质,其中所述指令还包含在向前的方向写该多个数据条带之一到该多个数据存储设备之一的操作。
31.根据权利要求23所述的信号承载介质,其中所述指令还包含在向后的方向写该多个数据条带之一到该多个数据存储设备之一的操作。
32.根据权利要求23所述的信号承载介质,其中所述指令还包含识别写高速缓冲存储器的线路电源的丢失的操作。
33.根据权利要求23所述的信号承载介质,其中所述指令还包含从该多个数据存储设备读取数据条带,并且恢复写数据到写高速缓冲存储器的操作。
34.一种用于配置计算机架构的方法,包含集成计算机可读代码到计算机系统中,其中所述代码与计算系统结合能够通过执行下面的步骤复制数据分割写高速缓冲存储器的数据映像为多个数据块;从该多个数据块建立多个数据条带;以及并行地写该多个数据条带的每个到相应的多个唯一的永久数据存储设备,以响应写高速缓冲存储器的线路电源的丢失。
35.根据权利要求34所述的方法,其中所述代码与计算系统结合进而能够映射数据映像到该多个数据存储设备的每个。
36.根据权利要求34所述的方法,其中所述代码与计算系统结合进而能够管理进度代码以跟踪并行数据条带写的进度。
37.根据权利要求34所述的方法,其中所述代码与计算系统结合进而能够从该多个数据存储设备读取数据条带,并且恢复写数据到写高速缓冲存储器。
38.一种复制数据的装置,该装置包含用于分割写高速缓冲存储器的数据映像为多个数据块的装置;用于从该多个数据块建立多个数据条带的装置;以及用于并行地写该多个数据条带的每个到相应的多个唯一的永久数据存储设备,以响应写高速缓冲存储器的线路电源的丢失的装置。
39.根据权利要求38所述的装置,还包含用于在向前的方向写该多个数据条带的第一个到该多个数据存储设备的第一个,并且在向后的方向写该多个数据条带的第二个到该多个数据存储设备的第二个的装置。
40.根据权利要求38所述的装置,还包含用于恢复写数据到写高速缓冲存储器,以响应写高速缓冲存储器重新获得线路电源的装置。
全文摘要
公开一种装置、系统和方法,用于从易失存储器装置复制数据到多个永久存储设备,以响应主电源的丢失。该装置包括分割模块、条带模块和写模块。分割模块分割写高速缓冲存储器的数据映像为多个数据块。条带模块从该多个数据块建立多个数据条带。写模块并行地写该多个数据条带的每个到相应的多个唯一的永久数据存储设备,以响应写高速缓冲存储器线路电源的丢失。优点在于,在相对短的时间周期中,所述装置从写高速缓冲存储器快速复制写数据到永久存储设备,降低了对备份支持易失存储器装置主要电池的依赖。
文档编号G06F12/16GK1801119SQ200510125450
公开日2006年7月12日 申请日期2005年11月17日 优先权日2004年11月18日
发明者赫维·G·P·安德烈, 迈克尔·T·本哈斯, 许育诚, 戴维·F·曼南巴赫 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1