增强数据完整性的检验装置 【技术领域】
本发明主要涉及计算机应用程序中的数据完整性,尤其涉及数据完整性检验装置(mechanism,机制)。
背景技术
社会已经变得非常依赖计算机。在当今的世界,计算机已经得到广泛应用,包括从金融计划到公司薪金系统,再到飞行器导航系统的各个方面。由于计算机系统的广泛应用,数据损坏是几乎影响任何人的问题,也是困扰计算机软硬件业的问题之一。
举例而言,软件应用程序(比如数据库应用程序)非常依赖维持它们的数据完整性。如果与数据库应用程序相关的数据被损坏,那么用户可能得到不正确的结果,并且很可能使系统崩溃。
数据损坏可能是因为多种原因,由多种不同的原因造成。例如,数据库应用程序中的软件“缺陷(bug)”可能其自身产生无效数据,比如应存储在表或数据结构中的负的社会安全号或无效指针地址。另外,在同一计算机系统上执行的其他程序,包括操作系统本身,可能无意中改写了某些变量、表、数据结构、或其它相似类型的信息,从而损坏了与具体软件应用程序相关的数据。还有,当应用程序将数据块写入存储介质中时,在被实际存储到存储介质之前,数据通常通过了软件和硬件的多个中间层。因此,在写入存储介质之前或写入存储介质时由可能损坏数据块。
例如,当把数据块写入磁盘时,在被储存到磁盘之前,数据可以从软件应用程序到卷管理器,从卷管理器到设备驱动器,从设备驱动器到存储装置控制器,从存储装置控制器到磁盘阵列。当随后从磁盘读数据块时,在可以被软件应用程序使用之前,数据必须再一次通过相同的一组软件和硬件层。因此,任一层出现的bug都可能潜在地损坏数据。另外,如果磁盘是不稳定的,在数据被写入磁盘后,导致错误被引入数据中,即使其它层没有错误地改变数据,也有可能危及数据的完整性。
通常,数据锁存方案提供了一种维护与具体应用程序相关的数据完整性的方法。通过锁存数据来拒绝其他应用程序存取,操作系统通常可以保证与一个应用程序相关的数据不被其他应用程序改写或损坏。
但是,传统的锁存方案不能保护如磁盘驱动器或其他低级固件中的介质故障或bug这样的问题。而且,操作系统本身包含的bug会无意中导致数据被改写和/或损坏。所以,传统地锁存方案不能始终保证一直维护数据的完整性或被损坏的数据一定不会被储存到存储介质中。
一种用于识别储存到磁盘的损坏数据的方法是通过使用逻辑检查和物理校验和。逻辑检查是一种机制,通过比较数据和与数据值相关的某些预定特征来确定数据的完整性。例如,如果表A的一列包括指向表B的特定行的一组指针,如果任何指针有与表B的行不相关的地址值,那么该指针可以被识别为具有损坏的地址值。类似地,如果表中的特定列被指定用于储存员工的电话号码,如果该列任一行中的值被确定为负,那么该值可以被认为是损坏的。
图1示出了一种确定通过应用程序从磁盘恢复的数据的完整性的方法。在这个例子中,用户与应用程序104交互,产生和/或更新与应用程序104关联的数据块。例如,数据块可以包括数据库的确定表的更新信息。为了把数据块存储到磁盘上,首先对数据进行逻辑检查120,验证其完整性。接着,进行物理校验和计算122,计算并把校验和值存储到数据块中。物理校验和计算122提供了一种机制,当从磁盘读取数据时,可以识别数据块比特方式的随后改变(subsequent change)。例如,校验和值可以被计算和存储到数据块中,以便当逻辑操作(如异或(XOR)操作)应用到数据块中的比特时,计算出校验和常量(如0)。其后,把数据块发送到存储装置控制器106中,然后可能通过网络108,从存储装置控制器106到磁盘阵列110,存储到一个或多个磁盘114-118。
然后,如果应用程序104再次请求包含在数据块中更新的信息,在其被应用程序104使用之前,数据块必须再一次通过多个层(例如,从一个或多个磁盘114-118到磁盘阵列110,通过网络108从磁盘阵列110到存储装置控制器106)。为了确定数据块的完整性,执行物理校验和检验过程,来检验数据块仍然有正确的校验和常量值。如果确定数据块仍然有正确的校验和常量值,那么对数据进行逻辑检查126,来验证在进行逻辑检查120的时间与进行物理校验和计算122的时间之间,数据块没有被损坏。
但是,检验数据块完整性的上述方法的缺点是,对数据块中的信息进行逻辑检查需要大量的时间和系统资源(系统开销)。许多应用程序需要连续写入和从磁盘读出大量的数据块,例如数据库应用程序,额外的系统开销特别影响应用程序的效率和响应时间。
另外,以上所描述方法的另一个缺点是,允许损坏的数据被写入磁盘。例如,如果进行逻辑检查120后数据被损坏,在进行物理校验和计算122后数据仍然被写入磁盘。但是,对于许多应用程序,特别是基于非事务(non-transaction)的应用程序,把损坏的数据写入磁盘会产生灾难性的影响,因为写入到磁盘的无效改变不能容易地被恢复(backed-out)。
根据以上所述,需要一种减少特别是与储存和从磁盘恢复数据关联的系统开销的机制。
还需要一种降低把损坏的数据写入磁盘的可能性的机制。
另外,还需要一种增加把数据写入磁盘中正确位置的可能性的机制。
【发明内容】
根据本发明的一方面,提供了维护数据完整性的技术。根据一种技术,对数据块进行物理校验和计算。在完成物理校验和计算以后,对包含在数据块的数据进行逻辑检查。如果数据块通过逻辑检查,那么数据块可以被写入非易失性存储器中。
根据本发明的一个特征,当数据块被写入或从非易失性存储器读取时,对数据块执行物理校验和检验程序,来确定对包含在数据块中的数据进行逻辑检查后,数据块是否被损坏。根据具体应用程序的需要,在存储装置或另一位置处进行物理校验和检验。
根据本发明的另一方面,提出了一种评估数据块的方法。该方法包括对数据块进行物理校验和检验。该方法还包括验证包含在数据块中的地址数据是否指定了数据块存储在非易失性存储器中的位置。
根据本发明的另一方面,给出了把数据块存储到非易失性存储器中的方法。该方法包括对数据块进行物理校验和检验,且在完成物理校验和检验以后,对包含在数据块中的数据进行逻辑检查。如果物理校验和检验和逻辑检查都成功了,那么允许把数据块存储到非易失性存储器中。
根据本发明的另一方面,提出了把数据块存储到非易失性存储器中的方法。该方法包括确定把数据块存储到非易失性存储器中的操作是否将把数据块存储到与数据块关联的理想的存储位置中。该方法还包括:如果将要把数据块储存到非易失性存储器中的操作将要把数据块储存到与数据块相关的理想的存储位置中,那么仅把数据块存储到非易失性存储器中。
本发明还包括计算机可读介质、嵌入载波中的计算机数据信号,以及设定执行前述步骤的装置。下面的说明书和权利要求将使其它特征和方面变得非常明显。
【附图说明】
本发明通过举例的方法进行说明,但并不限于这种方法,在附图中,相似的标号表示相似的元件,其中:
图1是一个方框图,示出了一种使用应用程序来确定从磁盘恢复的数据的完整性的传统方法;
图2示出了本发明可用于其中的一种数据完整性验证装置的方框图;
图3A示出了本发明可用于其中的一种多级数据验证系统的方框图;
图3B示出了本发明可用于其中的另一种数据验证系统的方框图;
图4A是一个流程图,示出了一个验证被写入非易失性存储器中的数据完整性的多级验证顺序的例子;
图4B是一个流程图,示出了一个验证从非易失性存储器读出的数据完整性的多级验证顺序的例子;
图5示出了一种检验数据块被写入非易失性存储器中位置的机制;
图6A示出了本发明可用于其中的一种备份系统的方框图;
图6B示出了本发明可用于其中的另一种备份系统的方框图;
图6C示出了本发明可用于其中的再一种备份系统的方框图;以及
图7是一种计算机系统的方框图,使用该系统可以执行本发明的实施例。
【具体实施方式】
数据检验装置用于确认与应用程序关联的数据完整性。在下面的说明中,为了解释的目的,给出了大量的具体描述以提供对本发明的透彻理解。但是,对于本领域技术人员来说,显而易见的是,没有这些特定细节也可以实施本发明。在其它情形中,用方框图的方式示出了众所周知的结构和装置,避免了不必要地使本发明不清楚。
操作内容
数据验证机制用于确认与应用程序关联的数据的完整性。在一个实施例中,把数据块写入磁盘之前,在数据块上执行物理校验和计算进程。物理校验和计算进程提供了一种机制:通过执行相应的物理校验和计算过程,来确定数据块是否随后被改变。例如,物理校验和计算过程可以包括:对包含在数据块中的数据进行逻辑操作,来确定校验和值,并且把校验和值插入数据块中,从而把恒定校验和值与数据块联系起来。另一方面,物理校验和计算过程包括随后在数据块上进行逻辑检查,并比较该结果和先前计算的校验和,来检验数据块仍然有正确的恒定校验和值。
完成物理校验和计算过程以后,在把数据块存储到磁盘以前,对包含在数据块中的数据进行逻辑检查,来验证某些预定数据特征与数据值关联。如果,也仅当逻辑检查显示某些预定数据特征与数据关联,那么允许把数据块写入磁盘中。其后,因为在逻辑检查以前就执行了物理校验和计算过程,当应用过程再次需要数据块时,只需要物理校验和计算过程来检验数据块的完整性。虽然在此结合磁盘阵列和磁盘描述了本发明的多个实施例,但本发明并不限于上下文所述的磁盘阵列和磁盘。本发明的实施例可以用于任何类型的存储介质,比如磁带、光学介质、或任何其他类型的存储介质。
图2示出了本发明可用于其中的数据检验装置200的方框图。通常,数据检验装置200包括,主机202、网络108、和数据存储单元112。
网络108是一种提供了用于在主机202和数据存储单元112之间通信的通信介质的网络系统。网络108可以代表多种不同形式的通信介质,包括但不限于:串联或并联介质连接、局域网(LAN)、广域网(WAN)、全球分组交换网络(如互联网)、无线传输介质、或任何用于在共享者之间互换信息的其他介质。网络108代表直接缆线连接到磁盘阵列100,其利用通信协议,如SCSI或光纤信道、或不同网络介质的结合,例如局域网和允许存储装置控制器106与磁盘阵列110通信的无线通信网络的结合。
数据存储单元112代表一个或多个非易失性存储器组件,该存储器组件用于应用程序204存储数据。数据存储单元112并不限于任何具体形式的存储介质。尤其是,如在此使用的,术语非易失性存储器被广泛定义为可以用于稳定存储信息的任何类型的稳定存储器或稳定存储介质。在该例子中,数据存储单元112代表独立磁盘或驱动器的冗余阵列(RAID),包括磁盘阵列单元210和一个或多个磁盘114-118。
主机202是计算机,或一组硬件或软件组件或在一个或多个计算机系统中协同或执行的过程。在该例子中,主机202包括应用程序204、物理校验和计算程序220、逻辑检查程序222、物理校验和验证程序224、和存储装置控制器206。
应用程序204可以代表多种不同的软件应用程序,被设定为操作数据和存储数据以及从数据存储单元112中恢复数据。例如,应用程序204可以代表多种应用程序,其包括但不限于数据库应用程序、字处理应用程序、CAD设计应用程序或金融计划应用程序。物理校验和计算程序220、逻辑检查程序222、和物理校验和检验程序224可以代表嵌入应用程序204中的编码或可以与应用程序204静态或动态链接的独立过程、任务或程序。
在一个实施例中,把数据块写入数据存储单元112之前,应用过程204初始化物理校验和计算过程220,来产生插入数据块的校验和值。在一个实施例中,为了产生校验和值,对包含在数据块中的数据进行逻辑操作,比如异或(XOR)或求和(ADD)操作。根据完成逻辑操作后的矢量和理想校验和常量,来选择校验和值并且插入数据块。注意不需要使用实际的校验和值。而且,可以使用来自校验和值的任何值。其后,可以通过在数据块上进行相同的逻辑操作及比较该结果和存储在数据块中的校验和值,来确定数据块的完整性。
根据本发明的一个实施例,公知的方式或数字被用于校验和值。可随机选择公知的方式或数字,并且所用的具体选择方法可随时间改变。公知方式或数量也可以与逻辑操作相结合,来确定校验和值。虽然此处本发明的实施例是结合用于存储在数据块中的数据库的校验和值说明的,但本发明并不限于此。校验值可与数据块分开维持,并可为在数据块上执行数据校验的程序体所用。例如,校验和值在常规调用中可以通过,或在查找表或数据库中被维持,然后根据需要被恢复。
执行物理校验和计算过程220后,对包含在数据快中的数据进行逻辑检查222,来验证某些预定特征是否与数据值关联。如果逻辑检查显示,某些预定特征与数据不关联,那么执行恢复序列来纠正和/或删除不正确的数据或数据块中被损坏的数据。
可选择地,如果逻辑检查显示某些预定特征与数据关联,然后数据块被转发存储到存储装置控制器206中。然后存储装置控制器206通过网络108与磁盘阵列210通信,把数据块存储到一个或多个磁盘114-118中。
其后,当应用程序204再次需要数据块时,从数据存储单元112恢复数据块,并转发存储到存储装置控制器206中。然后由于执行物理校验和计算过程220,在数据块上执行物理校验和检验过程224,来检验数据还未被损坏。在一个实施例中,为了执行物理校验和检验过程224,在数据块上执行物理校验和计算过程220所使用的逻辑操作。然后从物理校验和计算过程220被执行,比较逻辑操作的结果与存储在数据块中的校验和,来确定是否维护了数据块的完整性。有优势地,因为在逻辑检查222之前完成了物理校验和计算过程220,就不需要附加的逻辑检查来检验数据块的完整性。因此,显著地减少了在传统系统中通常需要的数据恢复的额外系统开销。
上述涉及的方法可以分别被用于块,或任何数量的块组。例如,校验和计算与检验过程可以在数据文件级或在一些其他逻辑块集上完成。使用的具体方法可以根据具体应用程序的要求进行改变。
多级数据校验
在某些实施例中,数据被储存到磁盘之前,可以在多个水平上检验数据块的完整性。图3A示出了多级数据验证系统的例子,把数据储存到磁盘之前,可以在多个水平上检验数据块的完整性。图3A与图2相似,因此相似的组件用相似的标号标明。
在该例子中,操作系统306包括卷管理器302和设备驱动器304。卷管理器302被设定为与应用程序接口,比如应用程序204,以及管理把数据存储到非易失性存储器(磁盘114-118)和从非易失性存储器(磁盘114-118)恢复数据。设备驱动器304提供了在操作系统306与存储装置控制器206之间通信的接口。在一个实施例中,从执行物理校验和计算过程220(例如,物理校验和检验程序224),卷管理器302和/或设备驱动器304被设定,用于执行物理校验和检验过程,来检验数据块还未被损坏。通过在应用过程308和磁盘114-118之间的不同处理级上执行物理校验和检验过程,在数据被实际写入磁盘之前,数据的完整性可以被进一步验证。另外,所描述的多级检验方案可以帮助识别数据在哪里被损坏,因为多级检验测试帮助隔离被损坏的数据。而且,在某些实施例中,在被写入磁盘和给应用程序或其他过程之前,多级检验方案被设定用于探测损坏的数据,在写入磁盘之前能够纠正损坏的数据。例如,如果已被识别为损坏的数据允许被写入磁盘,下一次应用程序从磁盘读取该损坏的数据,可能是数天、数月甚至数年之后,应用程序可能没有信息和/或能力纠正损坏的数据了。但是,通过不允许已被识别为损坏的数据写入磁盘,提供检验方案,其减少应用程序从磁盘读出被损坏数据的几率。
在某些实施例中,多级数据验证系统可以包括,在沿着应用程序204和磁盘114-118之间的路径上的其他组件上,进行数据完整性检验。例如,在一个实施例中,存储装置控制器206和磁盘阵列210可以被设定,用于执行与应用程序204关联的数据完整性检验。例如,在某些实施例中,从执行物理校验和计算过程220,存储装置控制器206被设定用于执行物理校验和检验过程,来检验数据块还未被损坏。通过在存储装置控制器206中执行物理校验和检验过程,验证系统可以验证非应用程序204的组件,例如操作系统306没有损坏数据的完整性。另外,通过设定磁盘阵列210来执行物理校验和检验过程,验证系统可以检验数据被其他组件损坏,包括网络108。而且,通过设定磁盘阵列210来执行物理校验和检验过程,验证系统可以显著减少损坏的数据被存储到磁盘114-118上的几率。
例如,图3B示出了多级数据验证系统350的例子,在把数据存储到磁盘之前,通过执行物理校验和检验程序来检验数据块的完整性。图3B与图3A相似,因此相似的组件用相似的标号标明。在该例子中,应用程序204完成物理校验和计算220以后,数据块被转发到存储装置控制器206中,不对包含在数据块中的数据进行逻辑检查。然后存储装置控制器206通过网络108把数据块转发到数据存储单元112中用于存储的磁盘阵列210中。在该例子中,在接收数据块时,从应用程序204执行物理校验和计算220,磁盘阵列210执行物理校验和检验过程352,来检验数据还未被损坏。如果确定数据块未被损坏,那么把数据块写入磁盘中。可选择地,如果确定数据块已被损坏,然后做错误标记且不把数据块写入磁盘中。通过在磁盘阵列210执行物理校验和检验过程,验证系统350可以在数据块存储到磁盘之前立即检验数据的完整性。特别地,验证系统350可以验证非应用程序204的组件,例如在数据块被存储到磁盘之前,操作系统306或存储装置控制器206不损坏数据。
另外,如之前图3A所描述的,可以沿着在应用程序204和磁盘114-118之间路径上的其他组件进行附加数据完整性检验。例如,卷管理器302、装置驱动器304和存储装置控制器206也可以被设定,以对应存储到磁盘的数据块进行数据完整性检验。而且,当从磁盘随后恢复数据块时,应用程序204可选地执行物理校验和检验224。
把数据写入非易失性存储器的检验序列
图4A是一个流程图,示出了根据本发明的某些实施例,用于验证应写入非易失性存储器中的数据完整性的多级检验序列。为了解释的目的,将参考图3A描述图4A。
在方框402,识别应被写入非易失性存储器的数据块。例如,已通过应用程序204更新的数据块可能需要被写入一个或多个磁盘114-118中。
在方框404,在数据块上执行物理校验和计算过程。例如,物理校验和计算过程220可以被初始化,来确定插入数据块的校验和值。
在方框406,可以有选择地对包含在数据块中的数据进行逻辑检查。例如,可以对数据进行逻辑检查来验证某些预定特征与数据值关联。
在方框408,假设逻辑检查已执行,作出数据块中的数据是否通过逻辑检查的决定。如果数据通过了逻辑检查,那么过程继续到方框410。可选择地,如果数据未通过逻辑检查,那么过程继续到方框418。
在方框410,把数据转发到非易失性存储器中。例如,数据块可以被转发到操作系统306,以存储在一个或多个磁盘114-116上。根据本发明的一个实施例,将数据存储到非易失性存储器中的请求包括,识别数据和数据应存储在非易失性存储器中的位置。规定数据应存储在非易失性存储器中位置的数据可用来验证存储的数据的位置,以下将进一步详细地描述。
在方框412,一个或多个组件可以有选择地执行物理校验和检验程序,来检验数据块中数据的完整性。例如,组件可以是例如卷管理器302、设备驱动器304、存储装置控制器206和磁盘阵列210,可以被设定用于执行物理校验和检验程序,以根据校验和值验证数据完整性。
如果通过一个或多个组件执行任意的物理校验和检验程序,那么对于执行的每个校验和校验程序,在方框414,作出数据块中的数据是否通过了物理校验和检验测试的决定。如果数据通过了任意的物理校验和检验测试,那么在方框416,数据块被写入到非易失性存储器中。可选择地,如果数据没有通过一个或多个可选的物理校验和检验测试,那么在方框418,数据块被标识为含有损坏的数据并因此不写入到磁盘。
用于从非易失性存储器恢复数据的检验序列
图4B是一个流程图,示出了根据本发明的某些实施例,用于验证从非易失性存储器中读出的数据的完整性的多级检验序列的例子。为了解释的目的,图4B也参考图3A描述。
在方框452,识别被存储到非易失性存储器的数据块。例如,需要从一个或多个磁盘114-118读出先前用应用程序204更新的数据块。
在方框454,数据块被储存在非易失性存储器,并从中恢复。
在方框456,一个或多个组件可以有选择地执行物理校验和检验程序,来验证恢复的数据块的完整性。例如,组件如磁盘阵列210、存储设备控制器206、设备驱动器304、和卷管理器302可以被设定用于执行物理校验和检验程序,根据公知的校验和常量值来验证恢复数据的完整性。
如果一个或多个组件执行可选择的物理校验和检验程序,来验证恢复的数据的完整性,那么在方框458,对于执行的每个物理校验和检验程序,作出数据块中的数据是否通过了物理校验和检验测试的决定。如果数据未通过一个或多个可选择的物理校验和检验测试,那么过程继续到468。
可选择地,如果数据通过了可选择的物理校验和检验测试,那么在方框460,数据块被转发到请求应用程序。
在方框462,请求应用程序执行物理校验和检验程序,来验证恢复的数据块的完整性。例如,应用程序204被设定用于执行物理校验和检验程序224,以根据公知校验和常量来验证恢复的数据的完整性。
在某些实施例中,如果发现恢复的数据从非易失性存储器中读出开始,已通过一个或多个可选择的物理校验和检验测试,请求应用程序可以有选择地跳过方框462中的物理校验和检验程序。
在方框464,作出数据块是否通过应用程序执行的物理校验和检验程序224的决定。如果数据未通过物理校验和检验测试,那么在方框468,数据块被标识包含损坏的数据。
可选择地,如果数据通过物理校验和检验程序224,那么在方框466,数据块中的数据可以被请求应用程序使用。
块位置检验
在某些实施例中,提供了一种用于验证把特殊数据块存储到非易失性存储器(“理想的块地址”)中的块位置的装置。例如,理想的块地址(或其中的一部分)可以被储存到每个数据块中,来识别数据块应存储到非易失性存储器中的物理或逻辑地址(或其中的一部分)。图5示出了一种装置,其中块位置标志符504被放在块500中。在一个实施例中,块位置标志符504代表数据块500应存储在非易失性存储器中的物理地址。通过把块地址标志符504存储在块500中,组件如磁盘阵列210可以检验数据块被存储在非易失性存储器中的正确位置。注意不需要把整个地址都用于验证。例如可以使用地址的一部分,比如使用地址的N个低位比特(low order bits)。
在某些实施例中,应用程序204、或与应用程序204关联的组件,维护规定一个或多个磁盘114-118拓扑结构的映射数据。使用映射数据,块应存储的物理地址可以被识别并且被存储到块中。接收数据块时,磁盘阵列210验证与块位置标志符504关联的物理地址是否与块存储在非易失性存储器中块的位置正确对应。在一些情况下,块标志符504不能显示数据块500应存储在数据存储单元112中的实际物理地址。如果应用程序204在不同级的数据块上而不是在数据存储单元112上进行操作,就会发生该现象。例如,基于特殊的操作系统平台,应用程序204在文件级上操作。在这种情况下,因为在数据块500中的块位置标志符504,应用程序204或相应的操作系统可以使用数据块500的逻辑位置。可选择地,应用程序203可以在不同大小的块上而不是在数据存储单元112上操作。在任一种情况下,执行位置检验的实体都不能执行简单比较块位置标志符504指定的位置和数据块500应存储在数据存储单元112上的位置。替换地,执行位置检验的实体,例如数据存储单元112,使用数据映射数据,以从包含在块位置标志符504中的逻辑地址确定物理地址,从而可以执行验证。使用的映射数据的类型可以根据具体应用程序的需要而改变,本发明不限于任何具体的映射数据。例如,在一些情况下,多层映射可以被用于多个“逻辑层”。
作为产生和维护定义逻辑和物理地址之间关系的映射数据的一种替换,可以使用算法来从逻辑地址确定物理地址。该替换消除了维护映射数据的需要,但是作出“不工作(on the fly)”的决定,需要附加的计算资源和时间。可以使用算法与映射数据相结合来确定与逻辑地址关联的物理地址。例如,可以使用算法来确定物理地址的一部分,并使用映射数据确定物理地址的另一部分。
块位置检验可以根据具体应用程序的需要以多种方式初始化,本发明不限于任何初始化块位置检验的具体方法。例如,操作系统306所使用的应用程序接口(API)可以包括常规请求的校验特征,其用于要求在数据存储单元112中存储或恢复数据。校验特征可以规定块位置检验的任何特征,例如,是否执行块位置检验,如果执行,在什么情况下执行。校验特征也可以规定具体的块以对其应用块位置检验。例如,应用程序204调用常规请求把块500存储到数据存储单元112。启用(请求)包括检验数据,在这种情况下,指示出块位置检验将被执行。磁盘阵列210检查与请求关联的检验数据,来确定是否执行块位置检验。确定检验数据显示块位置检验将被执行以后,然后磁盘阵列210执行请求的块位置检验。
可选择地,除了包括包含在常规请求中的检验特征,特征数据可以包含在块500中,然后通过实体检查和评估,例如执行校验的数据存储单元112。特征数据规定数据块位置检验的任何理想特征,例如,是否执行块位置检验,如果执行,在什么条件下执行。例如,应用程序204把检验数据插入块500中,以指示将在块500上执行块位置检验。应用程序204调用程序(routine)来把块500存储到数据存储单元112中。磁盘阵列210检查块500的内容,来确定块500是否包含指示已执行块位置检验的任何检验数据。在本例中,磁盘阵列210确定块500包含指示应执行块位置检验并且执行块数据校验的检验数据。
在某些实施例中,如果块位置标志符504与块存储的位置不对应,就标识错误,从而使块不能被存储到非易失性存储器中。例如,如果块位置标志符504与块应存储的位置不对应,就通知操作系统306和/或应用程序204。在一个实施例中,块位置标志符504用于验证块是从非易失性存储器中的正确位置读出的。例如,通过比较块位置标志符504与数据从中恢复的存储器中的物理位置,磁盘阵列210可以检验数据块是从非易失性存储其中正确的位置恢复的。
在某些实施例中,多个块位置标志符可以被存储在一个块中,该块标识块存储的多个位置。例如,为了提供反映数据库系统,多个块位置标志符可以被存储在每个数据块中,来识别数据块应存储在非易失性存储器中的多个位置。可替换地,单个块位置标志符504可包含在每个块中,且磁盘阵列210被设定用于验证地址和确定一个或多个用于反映非易失性存储器中的数据块的其他地址。
执行备份的检验序列
在某些实施例中,提供了一种数据检验装置,用于备份与一个或多个应用程序相关联的数据。图6A示出了备份系统600,其中在主机202中驻留的备份过程602,在把数据块存储到备份单元604之前,执行物理校验和检验程序。在该例子中,备份单元604不限于任何特定类型的备份装置或介质,从而可以包括多种不同类型的备份组件,其可以包括但不限于磁带驱动单元、ZIP驱动单元、DVD或CD ROM单元、和软盘单元。
在一个实施例中,在备份一个或多个数据块时,备份过程602从数据存储单元112恢复数据块,并且在每个块上执行物理校验和检验程序,来检验数据的完整性。如上所示,因为在逻辑检查222之前执行了物理校验和计算220,所以不需要附加逻辑检查来检验数据块的完整性。从而,可以显著减少在传统备份系统中通常需要的系统开销。另外,通过在备份过程602中执行物理校验和检验过程,提供了一种备份系统,该系统可以显著减少把损坏的数据存储在备份单元604中的几率。
在某些实施例中,在确定数据已被损坏的情况下,备份过程602使损坏的数据不被写入备份单元604中。备份过程602可以与应用程序204或其他过程通信,在被允许写入备份单元604之前纠正损坏的数据。通过不允许损坏的数据被写入备份单元604,提供了一种减少损坏数据被存入备份单元中的几率的验证方案。另外,虽然图6A示出了逻辑检查222,但本发明不需要执行该检验,在某些实施例系统600中可不包括逻辑检查222的执行。例如,在一个实施例中,系统600不包括逻辑检查222,但是依赖一个或多个物理校验和检验过程,以对被写入和从数据存储器单元112中恢复的数据进行数据完整性检验。
还有,在某些实施例中,不用从存储装置控制器206或其他操作系统组件直接接收数据块,备份过程602可以被设定为与应用程序204通信来接收数据块。在接收数据块时,备份过程602还被设定用于执行物理校验和程序224,来确定在被写入备份单元604之前,数据不被损坏。
本发明不限于在主机202上执行的物理校验和检验程序。例如,如图6B所示,在备份单元604执行物理校验和检验606。除了或代替物理校验和检验224,还可以在备份单元604执行物理校验和检验,本发明不限于任何具体的方法。
在一些应用程序中,数据存储单元本身而非主机可以执行数据备份。图6C示出了数据存储单元112执行数据备份的方案(arrangement)。尤其是,数据存储单元112把数据拷贝到备份单元604中。数据存储单元112执行数据备份对主机202来说可能是完全透明的。因此,不使用图6A和图6B所示的备份过程602。而是,根据本发明的一个实施例,数据存储单元112调用备份过程把数据备份到备份单元112中。根据具体应用程序的需要,数据存储单元112调用的备份过程可驻留在数据存储单元112内或驻留在数据存储单元112外部。
硬件实例
图7是一个方框图,示出了一种计算机系统700,在其上可以实现本发明的一个实施例。计算机系统700包括总线702或用于传输信息的其他通信装置,以及与总线连接、用于处理信息的处理器704。计算机系统700还包括主存储器706,比如随机存储器(RAM)或其他动态存储装置,与总线702连接、用于储存信息和处理器702将要执行的指令。主存储器706也可以用于在处理器704执行指令的执行过程中存储临时变量或其它中间信息。计算机系统700进一步包括只读存储器(ROM)708或与总线702连接、用于存储静态信息和处理器704使用的指令的其他静态存储装置。存储装置710如与总线702连接、用于存储信息和指令的磁盘或光盘。
计算机系统700可以通过总线702与显示器712(比如阴极射线管(CRT))连接,为计算机用户显示信息。输入装置714,包括字母数字键和其它键,与总线702连接,用于传输信息和命令选择至处理器704。另外一种用户输入装置是光标控制器716,比如鼠标,控制球、或光标方向键,光标方向键用于传递方向信息和命令选择至处理器704,以及控制显示器712上的光标移动。该输入装置通常有在两个轴上的两个自由度,这两个轴为第一轴(例如,x)和第二轴(例如,y),其允许装置规定在平面中的位置。
本发明涉及执行数据完整性检验装置的计算机系统700的使用。根据本发明的一个实施例,计算机系统700提供了一种数据完整性检验装置,来响应处理器704,该处理器704执行包含在主存储器706中的一个或多个指令的一个或多个序列。这样的指令可以从另外一个计算机可读介质读入主存储器706中,比如存储装置710。包含在主存储器706中的指令序列的执行,使处理器704执行在此描述的过程步骤。也可以使用在多重处理方案中的一个或多个处理器,来执行包含在主存储器706中的指令序列。在可选择的实施例中,可以使用硬件实现电路替换或结合软件指令来实现本发明。因此,本发明的实施例不限于硬件电路和软件的任何具体结合。
在此使用的术语“计算机可读介质”指参与把指令提供给用于执行的处理器704的任何介质。这样的介质可以有多种形式,包括但并不限于,非易失性介质、易失性介质、和传输介质。非易失性介质包括,例如,光盘或磁盘,比如存储装置710。易失性介质包括动态存储器,比如主存储器706。传输介质包括同轴电缆、铜线和光纤,包括组成总线702的电线。传输介质也可以表现为声波或光波的形式,比如那些在无线电波和红外线数据通信中产生的波。
计算机可读介质的普通形式包括,例如,软盘、柔性盘、硬盘、磁带、或任何其他磁性介质,CD-ROM、任何其他光介质,穿孔卡、纸带、任何具有其他孔形式的物理介质,RAM(随机存储器)、PROM(可编程序只读存储器)、EPROM(可擦除电可编程序只读存储器)、FLASH-EPROM(快速可擦除电可编程序只读存储器)、任何其他存储器芯片或卡盘,下面所描述的载波、或任何计算机可从中读取的其他介质。
多种形式的计算机可读介质可以用于携带处理器704执行的一个或多个指令的一个或多个序列。例如,指令开始可以携带于远程计算机的磁盘上。远程计算机可以把指令下载到其动态存储器中,并通过电话线,使用调制解调器发送指令。计算机系统700本地的调制解调器可以接收电话线上的数据,并使用红外发射机把数据转换为红外信号。与总线702连接的红外探测器可以接收红外信号中携带的数据,并把数据放在总线702上。总线702把数据传送到主存储器706,处理器704从主存储器706恢复并执行指令。在处理器704执行前或执行后,主存储器706接收的指令可以有选择地被存储到存储装置710上。
计算机系统700也包括与总线702连接的通信接口718。通信接口718提供双向数据通信,与和局域网722连接的网络链路720连接。例如,通信接口718可以是综合业务数字网络(ISDN)卡或调制解调器,来提供与相应类型的电话线连接的数据通信连接。如另一个例子,通信接口718可以是局域网(LAN)卡,来提供与兼容的LAN连接的数据通信。也可以使用无线链路。在任何这样的应用中,通信接口718发送和接收携带数字数据流的电、电磁或光信号,该数字数据流代表多种类型的信息。
网络链路720通常通过一个或多个网络提供数据通信至其它数据设备。例如,网络链路720可提供通过局域网722至主机724或由互联网服务提供商(ISP)726运行的数据设备的连接。ISP 726进而通过全球分组数据通信网络提供数据通信服务,全球分组数据通信网络现通常称为“互联网”728。局域网722和互联网728都是携带数字数据流的电子,电磁,或光信号。通过不同网络的信号和网络链路720上并通过通信接口718的信号都是示例性的载波传输信息的形式,网络,网络链路720和通信接口718携带数字数据并形成计算机系统700。
计算机系统700通过网络、网络链路720和通信接口718,可以发送消息和接收数据,包括程序代码。在互联网的例子中,服务器730通过互联网728、ISP726、局域网722和通信接口718,可以发送用于应用程序的请求代码。根据本发明,这样的下载应用程序提供如以上所描述的数据完整性检验。
在被接收和/或储存到存储装置710、或用于随后处理的其它非易失性存储装置时,可以用处理器704处理接收代码。这样,计算机系统700可获得载波形式的应用程序代码。
可选及扩展方案
为了解释的目的,使用多个附图来说明本发明所描述的某些实施例。但是,本发明不限于附图所示的任何具体内容,并且本发明的精神和范围包含其他内容和应用程序,其中在此所描述的装置和过程可以使用其他装置、方法、程序、和过程。因此,说明书和附图都是说明性的而不是限制性的。
另外,在本说明书中,具体过程步骤是按特定顺序说明的,字母和字母数字标号用于标识具体步骤。除非在说明书中特殊说明,否则本发明不限于实现这样步骤的任何特定顺序。尤其是,标号仅用于方便步骤的识别,并不用于暗示、规定或要求实现这样步骤的特定顺序。