检测在信息设备之间的数据传输的数据丢失的方法

文档序号:6497577阅读:429来源:国知局
检测在信息设备之间的数据传输的数据丢失的方法
【专利摘要】提供了应用实时地检测在通过外部网络彼此连接的信息设备之间的数据传输的丢失的方法。在第一信息设备中:使用应用以便对于时间的传输方向来分割被存储用于写入的传输数据;对于分割的数据生成哈希值;并且将哈希值存储至第一信息设备的专用缓冲器中作为写入哈希值。分割的数据和写入哈希值然后从第一信息设备被发送至第二信息设备,其中该写入哈希值与第一信息设备中的分割的数据相关联。在第二信息设备中,分割的数据和写入哈希值被接收,然后被存储至第二信息设备的专用缓冲器中,其中该写入哈希值与分割的数据相关联。在第二信息设备中,对于所接收的分割的数据生成哈希值,然后将该哈希值存储至第二信息设备的专用缓冲器中作为读取哈希值。将该写入哈希值和该读取哈希值相互比较,并且如果这些值彼此不匹配,则确定在分割的数据的传输期间发生了传输数据丢失。
【专利说明】检测在信息设备之间的数据传输的数据丢失的方法
【技术领域】
[0001]本发明涉及在通过外部网络彼此连接的信息设备之间的数据传输期间对数据丢失的检测。更具体地,本发明涉及检测在通过外部网络彼此连接的服务器和外部存储系统之间的数据传输期间的数据丢失的方法。
【背景技术】
[0002]图1图示其中多个服务器通过外部网络连接到多个外部存储器的状态。服务器将数据传输至存储设备(存储系统、存储器)并且在存储设备中存储数据。在服务器上运行的存储应用经由OS的文件系统将数据传递至HBA(主机总线适配器)设备驱动。HBA将数据发送至被称作光纤信道的数据传输路径。数据经由存在于光纤信道的中间处的SAN(存储区域网络)到达外部存储器,并且存储在该外部存储器中。
[0003]外部网络包括各种组件,这些组件被包括在外部网络的数据传输路径中。当通过外部网络传输数据时,服务器可能未能如所期待的那样使得全部数据到达存储器并且部分数据可能丢失。数据丢失是数据完整性中的关键问题。
[0004]从技术方面来说,在连接诸如服务器的信息设备的数据传输部分中进行校验和(check sum)或CRC(循环冗余校验)。然而,在处理在诸如服务器的信息设备之间的数据传输中的数据传递的功能失败的情况下,这样的校验功能并不有效。校验功能并不是目的为在OS级别获得数据连续性(检测数据丢失)的技术。
[0005]在PTLl中,在已经传输了在文件系统中所存储的数据之后,使用哈希值(hashvalue)来校验数据,并且如果检测到错误,则将重新发送全部数据。
[0006]在PTL2中,为了在服务器之间确定地传输数据,数据在被分割为片段(piece)的同时被传输,并且为每一片段生成哈希值,而通过使用连续的数字来校验数据丢失。
[0007]专利文献
[0008]PTLl:日本未审查的专利申请公开N0.2002-268542
[0009]PTL2:日本未审查的专利申请公开N0.2004-185188

【发明内容】

[0010]技术问题
[0011]然而,在所引用的文献中,仅支持文件系统中的数据。此外,通过相关领域的技术,不能在OS级别实时地获得数据连续性。也就是说,需要确保数据连续性,其中数据块的流不被中断。特别地,在检测大量数据的部分的丢失的情况下,在已经传输了全部数据之后进行这样的检测,这带来时间浪费。
[0012]相应地,本发明的一个目标是检测在数据传输的两端的信息设备中的数据的丢失(数据的缺失)并且确保数据连续性。
[0013]本发明的另一目标是在应用级别在数据连续性方面确保数据完整性。
[0014]对问题的解决方案[0015]为此目的,本发明提供了检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的方法,所述第一信息设备具有经由第一缓冲器来传输数据的应用,所述第二信息设备通过外部网络连接至第一信息设备以便能够与第一信息设备通信,并且该第二信息设备在第二缓冲器中存储所述传输数据,所述传输数据是由第一信息设备的应用所传输的数据。在此,该方法包括:
[0016](a)在第一信息设备中,将由该应用在第一缓冲器中所积累的用于写入的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于所述分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤;
[0017](b)在第一信息设备中,通过将该写入哈希值与在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从该第一信息设备发送至该第二信息设备的步骤;
[0018](c)在第二信息设备中,接收由该应用所发送的传输数据、将所接收的传输数据存储在该第二缓冲器中、接收所述写入哈希值、并且通过将该写入哈希值与在该传输数据中所包括的分割的数据片段相关联来将该写入哈希值存储在该第二信息设备中的专用缓冲器中的步骤;
[0019](d)在第二信息设备中,读取在该第二缓冲器中所存储的分割的数据片段、对该分割的数据片段生成哈希值、并且将所生成的哈希值存储于该第二信息设备中的专用缓冲器中作为读取哈希值的步骤;
[0020](e)比较在专用缓冲器中存储的写入哈希值与读取哈希值的步骤;和
[0021](f)在两个哈希值在比较中不匹配的情况下,确定在传输分割的数据片段时已经从该传输数据丢失了数据的步骤。
[0022]此外,为此目的,本发明提供了检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的方法,所述第一信息设备具有经由第一缓冲器传输数据的应用,所述第二信息设备通过外部网络连接至第一信息设备以便能够与第一信息设备通信,并且该第二信息设备将传输数据存储在第二缓冲器中,所述传输数据是由第一信息设备的应用所传输的数据,所述方法由第一信息设备执行。在此,该方法包括:
[0023](a)将由该应用在第一缓冲器中所积累的用于写入的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤;和
[0024](b)通过将该写入哈希值与由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从第一信息设备发送至第二信息设备的步骤。
[0025]此外,为此目的,本发明提供了检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的方法,所述第一信息设备具有经由第一缓冲器传输数据的应用,所述第二信息设备通过外部网络连接至第一信息设备以便能够与第一信息设备通信,并且该第二信息设备将传输数据存储在第二缓冲器中,所述传输数据是由第一信息设备的应用所传输的数据,该方法在第一信息设备执行如下步骤的情况下由第二信息设备执行:(a)将由该应用在第一缓冲器中所积累的用于写入的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤,和
(b)通过将该写入哈希值与由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从第一信息设备发送至第二信息设备的步骤。在此,该方法包括:
[0026](c)在第二信息设备中,接收由该应用所发送的传输数据、将所接收的传输数据存储在第二缓冲器中、接收所述写入哈希值、并且通过将该写入哈希值与在传输数据中所包括的分割的数据片段相关联来将写入哈希值存储在第二信息设备中的专用缓冲器中的步骤;
[0027](d)在第二信息设备中,读取在第二缓冲器中所存储的分割的数据片段、对于分割的数据片段生成哈希值、并且将所生成的哈希值存储于第二信息设备中的专用缓冲器中作为读取哈希值的步骤。
[0028]该方法还包括
[0029](e)比较在该专用缓冲器中存储的写入哈希值与读取哈希值的步骤;和
[0030](f)在两个哈希值在比较中不匹配的情况下,确定在传输分割的数据片段时已经从该传输数据丢失了数据的步骤。
[0031]此外,步骤(e)是比较在第二信息设备中的专用缓冲器中存储的写入哈希值和读取哈希值的步骤。
[0032]此外,分割的数据片段是传输数据中的固定量的数据,并且对该固定量的传输数据来计算哈希值。
[0033]此外,分割的数据片段是由该应用在固定时间段期间存储在第一缓冲器中的可变量的数据,并且对该可变量的分割的数据片段来计算哈希值。
[0034]此外,步骤(f)是在已经检测到从传输数据的数据丢失的情况下进一步进行恢复(restoration)处理(再次将分割的数据片段写入到第二信息设备中)的步骤。
[0035]此外,本发明提供了检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的程序,所述第一信息设备具有经由第一缓冲器来传输数据的应用,所述第二信息设备通过外部网络连接至第一信息设备以便能够与第一信息设备通信,并且该第二信息设备在第二缓冲器中存储所述传输数据,所述传输数据是由第一信息设备的应用所传输的数据,所述程序由第一信息设备执行。在此,所述程序致使第一信息设备执行:
[0036](a)将由该应用在第一缓冲器中所积累的用于写入的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤;和
[0037](b)通过将该写入哈希值与由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从第一信息设备发送至第二信息设备的步骤。
[0038]此外,本发明提供了检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的程序,所述第一信息设备具有经由第一缓冲器传输数据的应用,所述第二信息设备通过外部网络连接至第一信息设备以便能够与第一信息设备通信,并且该第二信息设备将传输数据存储在第二缓冲器中,所述传输数据是由第一信息设备的应用所传输的数据,该程序在第一信息设备执行如下步骤的情况下由第二信息设备来执行:(a)将由该应用在第一缓冲器中所积累的用于写入的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤,和(b)通过将该写入哈希值与由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从第一信息设备发送至第二信息设备的步骤。在此,该程序致使第二信息设备执行:
[0039](C)接收由该应用所发送的传输数据、将所接收的传输数据存储在第二缓冲器中、接收所述写入哈希值、并且通过将该写入哈希值与在传输数据中所包括的分割的数据片段相关联来将该写入哈希值存储在第二信息设备中的专用缓冲器中的步骤;
[0040](d)读取在第二缓冲器中所存储的分割的数据片段、对分割的数据片段生成哈希值、并且将所生成的哈希值存储于第二信息设备中的专用缓冲器中作为读取哈希值的步骤。
[0041]此外,本发明提供了检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的第一信息设备,所述第一信息设备具有经由第一缓冲器传输数据的应用,所述第二信息设备通过外部网络连接至第一信息设备以便能够与第一信息设备通信,并且该第二信息设备将传输数据存储在第二缓冲器中,所述传输数据是由第一信息设备的应用所传输的数据。在此,第一信息设备执行:
[0042](a)将由该应用在第一缓冲器中所积累的用于写入的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤;和
[0043](b)通过将该写入哈希值与由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从第一信息设备发送至第二信息设备的步骤。
[0044]此外,本发明提供了检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的第二信息设备,所述第一信息设备具有经由第一缓冲器传输数据的应用,所述第二信息设备通过外部网络连接至第一信息设备以便能够与第一信息设备通信,并且该第二信息设备将传输数据存储在第二缓冲器中,所述传输数据是由第一信息设备的应用所传输的数据,该第二信息设备在第一信息设备执行如下步骤的情况下检测传输数据中的数据丢失:(a)将由该应用在第一缓冲器中所积累的用于写入的传输数据分割为在时间的传输方向上的片段、读取分割的数据片段中的每一个(每个分割的数据片段)、生成对于分割的数据片段的哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤,和(b)通过将该写入哈希值与由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从第一信息设备发送至第二信息设备的步骤。在此,第二信息设备执行:
[0045](C)接收由该应用所发送的传输数据、将所接收的传输数据存储在第二缓冲器中、接收所述写入哈希值、并且通过将该写入哈希值与在传输数据中所包括的分割的数据片段相关联来将该写入哈希值存储在第二信息设备中的专用缓冲器中的步骤;和
[0046](d)读取在第二缓冲器中所存储的分割的数据片段、对分割的数据片段生成哈希值、并且将所生成的哈希值存储于第二信息设备中的专用缓冲器中作为读取哈希值的步骤。
[0047]本发明的有利效果
[0048]通过利用上述手段,可以在连接至外部网络的信息设备之间的数据传输期间实时地检测数据丢失。
【专利附图】

【附图说明】
[0049][图1]图示其中多个服务器通过外部网络连接至多个外部存储器的状态。
[0050][图2]图示构成网络存储器的设备、这些设备的H/W和S/W配置和由本发明所覆盖的其中可能发生数据丢失的范围。
[0051][图3]是图示根据本发明的使用哈希值的方法的示意图。
[0052][图4]是图示根据本发明的对于分割的数据片段段的数据丢失检的流程。
[0053][图5]图示其中进行交换和比较用于哈希校验的三种情况。
[0054][图6]是图示根据本发明的使用多种类型的哈希值的方法的示意图。
【具体实施方式】
[0055]下文中将描述涉及数据从服务器传输至外部存储器并且被写入至该外部存储器中的情况的实施例(示例性实施例)。请注意,本发明一般地适用于在通过外部网络彼此连接的信息设备之间端到端地验证数据完整性的情况。
[0056]图2图示构成网络存储器的设备、这些设备的H/W和S/W配置、和由本发明所覆盖的其中可能发生数据丢失的范围。在以诸如应用级别或OS级别的较高级别的数据传输中,对于固定大小的传输数据或者对于在固定时间段所传输的数据,在服务器侧和存储侧计算哈希值。比较这两个哈希值,实时地检测以较低级别的数据传输中的故障,并且验证数据完整性。在此,如在图2中所图示的,执行指令以将数据写到外部网络/从外部网络读取数据的端到端设备20、22和24中的0S25、应用21和存储控制软件30被称作较高级别。较低级别是低于这些较高级别的级别,并且包括参与数据传输的H/W27和29以及S/W资源28。
[0057]在较低级别的数据传输中,由于在较低级别的数据处理逻辑中的缺陷,合适的完成通知不是一定被递送至较高级别。例如,在要传输具有大的大小的数据的情况下,数据被分割成较小的片段并且传输。即使响应于在分割和传输期间一些故障的发生而进行错误处理,在较低级别进行的错误处理对于较高级别而言可能并不合适。即使较高级别确定传输已经成功地完成,也可能出现在数据流中间的数据实际上还没有被传输的情况。在这种情况下,在较高级别的数据连续性方面,可以通过重试命令来避免由于数据流中间的数据还未被传输而发生数据丢失。
[0058]通过合并验证较高级别处的数据连续性的部件23和25,可以检测在较低级别的范围内利用H/W(硬件)和S/W(软件)配置不可检测的数据丢失。服务器20使用AIX作为0S25并且运行存储应用21。服务器22使用LINUX作为0S25并且运行存储应用21。服务器20和22每个经由网卡29(例如HBA:主机总线适配器29)、其驱动其28和通信线27连接至光纤信道开关26。存储系统24通过使用存储控制软件30来从记录介质读取数据/将数据写入到记录介质。存储系统24通过使用例如HBA29和其驱动器28经由通信线27连接至光纤信道开关26。光纤信道开关26构成外部网络,也就是SAN(存储区域网路)。
[0059]服务器20和22 (传输侧)的部件23和存储系统24 (接收侧)的部件35被插入在较高级别和较低级别之间,并且实现本发明的功能。将在图4的处理流程中图示本发明的功能的细节。本发明的部件23与由应用21进行的用于写入的数据传输处理协力进行数据缓冲、哈希值、比较哈希值等。需要执行实现本发明的功能的复制命令和比较命令。这样的命令功能可以被并入至0S25的库功能中,或者可以被并入至存储应用21的库中。
[0060]将描述在较低级别处端对端地发生的数据丢失的原因的示例。
[0061]作为第一示例,将要描述其中光缆(fiber cable)断开连接并且发生部分数据的丢失但是数据被写入到存储器中的情况。FC线缆的一个路径在数据传输期间断开连接,并且发生在数据流中间的数据的丢失。当读取存储器中的与写入地址相对应的部分时,先前写入的数据被读取。即使FC线缆的一个路径断开连接,只要其他路径是有效的,数据就应当被传输。数据的丢失是由于在驱动器中的FC协议中的问题引起的。在下一示例中,甚至在存储器之间进行数据传输的情况下,也发生数据的丢失。在连接至外部网络的存储器之间进行复制的情况下,在写入目的地存储器中发生数据的丢失。管理网络访问的在存储器侧的固件具有小缺陷(bug)。由于当数据从传输源传输至传输目的地时所使用的由该小缺陷引起的错误的传输目的地地址,发生数据的丢失。数据传输到错误地址被认为是在数据传输期间发生的数据丢失。
[0062]图3图示其中对于分割的数据片段30计算哈希值、将该哈希值与分割的数据片段30相关联作为写入哈希值32并且存储在专用缓冲器38中的图像。假设在服务器70中运行的应用21被记录在记录介质中,并且执行指令以将大量的数据写入存储器73中。应用21暂时地将传输数据存储在存储器区域(缓冲器)41。本发明的部件23经由应用库或0S25将传输数据暂时地存储在专用缓冲器38中。
[0063]专用缓冲器38用于本发明的部件23。应用21不需要管理和使用专用缓冲器38,并且因此专用缓冲器38与缓冲器41区分开。用于应用21的缓冲器41和用于本发明软件的专用缓冲器38可以通过将DRAM分区来使用物理上连续的DRAM。对于存储器73,与在服务器70的上述情况相类似地应用缓冲器管理。专用缓冲器38用于本发明的部件25。存储器73的存储控制软件30不需要管理和使用专用缓冲器39,并且因此专用缓冲器39与缓冲器42区分开。
[0064]本发明的部件23对于通过分割数据所获得的每个数据片段(分割的数据片段30)管理暂时存储在缓冲器41中并且要被传输的该数据进行管理,数据片段是对其计算哈希值的单位。请注意,分割的数据片段30不是用于传输的数据单位。基于通信协议来确定传输的单位。本发明不意图改变传输的单位。本发明的部件23从在应用21的缓冲器41中所存储的数据中指定分割的数据片段30,与数据传输处理分离地对其计算哈希值。本发明的部件23从分割的数据片段30中生成写入哈希值32,并且将所生成的值暂时地存储在专用缓冲器38中。
[0065]只要写入哈希值32和分割的数据片段30彼此相关联,它们就可以彼此分离并且被存储。写入哈希值32与分割的数据片段30相关联,并且与分割的数据片段30分离地被发送。需要将每个哈希值与相应的分割的数据片段相关联。为其生成哈希值的分割的数据片段是在应用21的缓冲器41中存储的传输数据的部分。对于每个哈希值,除了哈希值自身的值之外,还给出用于关联的属性信息。例如,属性信息包括链接的列表,用于将存储在缓冲器41中的传输数据中的每个分割的数据片段与哈希值相链接用于编索引(indexing)。用于编索引的索引(index)包括来自缓冲器41的头地址的开始地址(偏移)位置、固定数目的字节等。通过向写入哈希值给出包括了在其中包含这些索引的链接的列表的属性信息,将写入哈希值32存储在缓冲器38中。
[0066]请注意,在图3中,在正在传输的数据36中,分割的数据片段30和写入哈希值32被结合在一起。在实际传输序列中,应用21并没有识别出哈希值的存在。因此,通过本发明的部件23所处理的哈希值32和由应用21所发送的传输数据彼此相分离并且被发送。
[0067]存储器73接收已被传输的分割的数据片段30,并且将其存储在缓冲器42中。所传输的写入哈希值32通过与示意性图示的相应的分割的数据片段30相配对而类似地被存储在缓冲器39中。写入哈希值32和分割的数据片段30可以彼此分离地被存储,只要它们彼此相关联。存储器73从在缓冲器42中存储的分割的数据片段30中计算读取哈希值34,并且将所计算的值存储在缓冲器39中。在存储器73的缓冲器39中,存在写入哈希值32和读取哈希值34。在下文中描述的图4中的流程的步骤5中,本发明的部件25将写入哈希值32与读取哈希值34相比较。
[0068]图4图示根据本发明的基于分割的数据片段的数据完整性验证的流程。将结合附图来描述本发明的生成(计算)、交换和比较写入哈希值和读取哈希值的流程。
[0069]步骤I (40):在数据传输侧和数据接收侧分别确保(secure)用于哈希值的存储区域(专用缓冲器)38和39。
[0070]例如,在图3中,数据传输侧是服务器70,而数据接收侧是存储器73。作为所计算的哈希值的保存区域,在用于传输数据的存储区域(存储器区域、缓冲器)41和42中的未使用的区域可以被用作暂时工作区。
[0071]步骤2(44或46):在数据传输侧,对于每固定量的数据或者对于在固定时间段期间的每数据量计算并存储写入哈希值。在数据传输侧,对于每固定量的数据计算写入哈希值(44)。可替换地,对于在已经预先设置的时间段期间已传输的每数据量计算写入哈希值
(46)。如果数据传输速率不是恒定的,则在对每固定量的数据进行计算的情况下,花费时间来校验在速率降低的时段期间正在传输的分割的数据片段,并且不能实时地验证数据连续性。
[0072]步骤3(47):通过将写入哈希值与相应的分割的数据片段相关联而将写入哈希值从数据传输侧发送至数据接收侧。
[0073]步骤4 (48或49):对于每固定量的数据或者对于在固定时间段期间传输的每数据量计算读取哈希值并且将其存储在数据接收侧。在数据接收侧,对于每固定量的数据计算读取哈希值(48)。替换地,以已经预先设置的间隔计算读取哈希值(49)。
[0074]在接收侧,通过使用对于相同的分割的数据片段在传输侧已经使用过的哈希计算来生成读取哈希值。如果数据传输速率不是恒定的,则在对于每固定量的数据进行计算的情况下(48),花费时间来校验在速率降低的时段期间正在传输的分割的数据片段,并且不能实时地验证数据连续性。
[0075]步骤5(50):交换并比较写入哈希值和读取哈希值。
[0076]可以通过使用例如对未使用的逻辑块地址(LBA)的读取/写入命令来进行在传输侧和接收侧之间的哈希值的交换。也能够通过扩展SCSI命令来交换哈希值。接收到的哈希值分别被存储在传输侧和接收侧的缓冲器中。比较写入哈希值和读取哈希值。为了比较哈希值,存在如图5中所示的三种方法,并且在服务器中、在存储器中、或者在它们二者中进行比较。如果作为比较的结果,哈希值相匹配(在25中的“是”),则处理继续。如果全部数据的传输已经完成(在60中的“是”),则验证数据连续性,并且确定不存在数据的丢失。如果作为比较的结果,哈希值不相匹配(在52中的“否”),则重试传输。重试相同的分割的数据片段的传输(步骤I至5) (53)。错误被登记(log)(记录)。在进行哈希值的比较的情况下,以如图5中所示的三种方式来进行错误的登记,即,在服务器中,在存储器中,或者在它们二者中。对于相同的分割的数据片段,进行重试达预先已设定的重试数目(最大值)来(51)。如果重试成功(在52中的“是”),则过程继续至下一数据传输(54)。如果在重试数目达到最大值时重试失败(在51中的“是”),则将错误通知发送至服务器,并且取消随后的传输(61)。
[0077]图5图示用于哈希校验的交换和比较的三种情况。能够以下述方式在步骤5中实现哈希值的比较,也就是,(I)在接收侧(存储器73)、(2)在传输侧(服务器70)、或(3)在这两侧进行比较。这些情况在可靠性方面是不同的,并且可靠性级别在(3)中最高,其次是
(2),然后是(I)。另一方面,性能级别在(I)中最高,其次是(2),然后是(3)。在两侧进行哈希值的比较和校验的情况⑶是最可靠的,但是在性能方面其具有缺点。
[0078](I)在存储器73中进行比较的情况:
[0079]在该情况下,写入哈希值从服务器70传输至存储器73,并且在存储器73中进行比较。写入哈希值被写入到在步骤I中由服务器70所确定的存储区域(专用缓冲器)38中。在写入命令完成的时刻,存储器73从缓冲器38读取该写入哈希值。将已读取的写入哈希值与已存储在存储器73中的读取哈希值进行比较。在这种情况下,SCSI命令导致异常终止,并且在服务器70中进行重试。
[0080](2)在服务器70中进行比较的情况:
[0081 ] 在该情况下,读取哈希值从存储器73传输至服务器70,并且在服务器70中进行比较。存储器73将读取哈希值写入到在步骤I中所确定的存储区域(专用缓冲器)39中。在写入命令完成的时刻,服务器70从专用缓冲器39读取该读取哈希值。将因此已接收的读取哈希值和已存储在服务器70中的缓冲器38中的写入哈希值进行比较。在这种情况下,仅在服务器70中检测到错误,并且SCSI命令得到成功的完成。
[0082](3)在两侧进行比较的情况:
[0083]在该情况下,分别由服务器70和存储器73生成的哈希值被传输至彼此,并且在两侧进行比较。在此,通过比较哈希值所获得的结果被互相传送。预先确定两个区域,也就是,在服务器70中的存储写入哈希值的存储区域(专用缓冲器)38和在存储器73中的存储读取哈希值的存储区域(专用缓冲器)39。在写入命令完成的时刻,每个设备(信息设备)比较哈希值。
[0084]图6是图示根据本发明的使用多种类型的哈希值的方法的示意图。本发明包括对于单个分割的数据片段使用多个哈希函数。需要避免其中即使丢失了分割的数据片段、由于写入哈希值等于读取哈希值而不能检测到连续性的失败的情形(冲突)。通过比较对于相同数据的多种类型的哈希值,可以将数据丢失的检测的遗漏最小化。[0085]示例性实施例涉及其中对其计算哈希值的单位(分割的数据片段)在大量数据的情况下是固定量的数据并且对该单位来计算哈希值的情况。通过考虑传输速率,用于验证的固定长度的大小是可配置的。在4Gbps的情况下,如果哈希值的计算被设置为对每200MB的分割的数据片段来进行,则将每0.5秒进行校验。在数据量大小方面哈希值小,因此立即完成传输和比较。另一方面,在从定位回传输字节的数目的点读取数据并且进行比较用于写入的确认的情况下,需要用于读取和比较的开销时间。如果光纤信道的传输速率是4Gbps,这意味着400MB/S。例如,4GB数据的传输花费10秒钟。因为读取花费10秒钟,如果假设比较时间是5秒,则传输的确认将花费10+10+5秒,也就是25秒。在本发明的哈希校验的情况下,如果假设哈希数据具有IKB的大小,则传输时间大约是2.5X10_6。如果传输4GB数据并且用于哈希计算的固定长度是400MB,则哈希值将被传输四次。在这种情况下,总传输时间大约是10'写入和传输时间和哈希值的传输时间的总时间被认为基本上等于写入和传输时间。可以以在从定位回的点读取数据之后进行比较的情况下所需时间的一半或者更少时间来验证数据连续性。例如,为了验证数据连续性,通常需要执行复制命令和比较命令。如果将本发明应用于OS的库函数,则可以仅通过执行复制命令基本没有开销时间地同时验证连续性。在Windows中移动文件或文件夹的情况下,不能进行对移动源文件和移动目的地文件的比较。如果应用本发明,则仅通过移动操作也确保在移动之后的数据连续性。
[0086]在图6的(I)中图示其中在哈希值的计算中对于单个分割的数据片段使用多个哈希函数的情况。在使用哈希值的情况下,可能发生哈希冲突。因此,使用不同的哈希值,并且对来自不同哈希值的计算结果进行比较。如果在所有结果中确认匹配,则确定验证了正常性。以这种方式,避免了哈希值的冲突。如果希望更高的可靠性,则同时计算多个算法,并且进行比较。例如,能够组合以下的SHAl和SHA512。如果多个哈希函数(哈希算法)一起使用,则可以降低由于哈希值冲突引起的错(false)识别的可能性。
【权利要求】
1.一种检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的方法,所述第一信息设备具有经由第一缓冲器来传输数据的应用,所述第二信息设备通过外部网络连接至所述第一信息设备以便能够与第一信息设备通信,并且该第二信息设备在第二缓冲器中存储所述传输数据,所述传输数据是由所述第一信息设备的应用所传输的数据,该方法包括: (a)在第一信息设备中,将用于该应用的在第一缓冲器中所积累的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于所述分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤; (b)在第一信息设备中,通过将该写入哈希值与在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从该第一信息设备发送至该第二信息设备的步骤; (c)在第二信息设备中,接收由该应用所发送的传输数据、将所接收的传输数据存储在该第二缓冲器中、接收所述写入哈希值、并且通过将该写入哈希值与在该传输数据中所包括的分割的数据片段相关联来将该写入哈希值存储在该第二信息设备中的专用缓冲器中的步骤; (d)在第二信息设备中,读取在该第二缓冲器中所存储的分割的数据片段、对该分割的数据片段生成哈希值、并且将所生成的哈希值存储于该第二信息设备中的专用缓冲器中作为读取哈希值的步骤; (e)比较在专用缓冲器中存储的写入哈希值与读取哈希值的步骤;和 (f)在两个哈希值在比较中不匹配的情况下,确定在传输分割的数据片段时已经从该传输数据丢失了数据的步骤。
2.一种检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的方法,所述第一信息设备具有经由第一缓冲器传输数据的应用, 所述第二信息设备通过外部网络连接至所述第一信息设备以便能够与所述第一信息设备通信,并且该第二信息设备将传输数据存储在第二缓冲器中,所述传输数据是由所述第一信息设备的应用所传输的数据,所述方法由该第一信息设备执行,该方法包括: (a)将用于该应用的在第一缓冲器中所积累的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤;和 (b)通过将该写入哈希值与由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从第一信息设备发送至第二信息设备的步骤。
3.—种检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的方法,所述第一信息设备具有经由第一缓冲器传输数据的应用, 所述第二信息设备通过外部网络连接至该第一信息设备以便能够与该第一信息设备通信,并且该第二信息设备将传输数据存储在第二缓冲器中,所述传输数据是由该第一信息设备的应用所传输的数据,该方法在第一信息设备执行如下步骤的情况下由第二信息设备执行:(a)将由该应用在第一缓冲器中所积累的用于写入的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤,以及(b)通过将该写入哈希值与在由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从第一信息设备发送至第二信息设备的步骤,该方法包括: (C)接收由该应用所发送的传输数据、将所接收的传输数据存储在第二缓冲器中、接收所述写入哈希值、并且通过将该写入哈希值与在该传输数据中所包括的分割的数据片段相关联来将该写入哈希值存储在该第二信息设备中的专用缓冲器中的步骤;和 (d)读取在该第二缓冲器中存储的分割的数据片段、对该分割的数据片段生成哈希值、并且将所生成的哈希值存储于该第二信息设备中的专用缓冲器中作为读取哈希值的步骤。
4.根据权利要求3所述的方法,还包括: (e)比较在该专用缓冲器中存储的写入哈希值与读取哈希值的步骤;和 (f)在两个哈希值在比较中不匹配的情况下,确定在传输分割的数据片段时已经从该传输数据丢失了数据的步骤。
5.根据权利要求4所述的方法,其中,步骤(e)是比较在第二信息设备中的专用缓冲器中存储的写入哈希值和读取哈希值的步骤。
6.根据权利要求1至3中任一项所述的方法,其中,分割的数据片段是该传输数据中的固定量的数据,并且对 该固定量的分割的数据片段计算哈希值。
7.根据权利要求1至3中任一项所述的方法,其中,分割的数据片段是在固定时间段期间由该应用在第一缓冲器中积累的可变量的数据,并且对该可变量的分割的数据片段计算哈希值。
8.根据权利要求4或5所述的方法,其中,检测分割的数据片段的丢失的步骤(f)是在已经从传输数据中检测到数据丢失的情况下进一步进行恢复处理的步骤。
9.一种检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的程序,所述第一信息设备具有经由第一缓冲器来传输数据的应用,所述第二信息设备通过外部网络连接至第一信息设备以便能够与第一信息设备通信,并且该第二信息设备在第二缓冲器中存储所述传输数据,所述传输数据是由第一信息设备的应用所传输的数据,所述程序由第一信息设备执行,所述程序致使第一信息设备执行: (a)在第一信息设备中,将用于该应用的在第一缓冲器中所积累的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于所述分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤;和 (b)在第一信息设备中,通过将该写入哈希值与由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从该第一信息设备发送至该第二信息设备的步骤。
10.一种检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的程序,所述第一信息设备具有经由第一缓冲器传输记录的数据的应用,所述第二信息设备通过外部网络连接至第一信息设备以便能够与第一信息设备通信,并且该第二信息设备将传输数据存储在第二缓冲器中,所述传输数据是由第一信息设备的应用所传输的数据,所述程序在第一信息设备执行如下步骤的情况下由第二信息设备执行:(a)将由该应用在第一缓冲器中所积累的用于写入的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤,以及(b)通过将该写入哈希值与由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从第一信息设备发送至第二信息设备的步骤,该程序致使第二信息设备执行: (c)接收由该应用所发送的传输数据、将所接收的传输数据存储在第二缓冲器中、接收所述写入哈希值、并且通过将该写入哈希值与在该传输数据中所包括的分割的数据片段相关联来将该写入哈希值存储在第二信息设备中的专用缓冲器中的步骤; (d)读取第二缓冲器中所存储的分割的数据片段、生成对于分割的数据片段的哈希值、并且将所生成的哈希值存储于第二信息设备中的专用缓冲器中作为读取哈希值的步骤。
11.一种检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的第一信息设备,所述第一信息设备具有经由第一缓冲器传输数据的应用,所述第二信息设备通过外部网络连接至第一信息设备以便能够与第一信息设备通信,并且该第二信息设备将传输数据存储在第二缓冲器中,所述传输数据是由第一信息设备的应用所传输的数据,其中,所述第一信息设备执行: (a)将用于该应用的在第一缓冲器中所积累的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤;和 (b)通过将该写入哈希值与由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从第一信息设备发送至第二信息设备的步骤。
12.—种检测在第一信息设备和第二信息设备之间的传输数据中的数据丢失的第二信息设备,所述第一信息设备具有经由第一缓冲器传输数据的应用,所述第二信息设备通过外部网络连接至第一信息设备以便能够与第一信息设备通信,并且该第二信息设备将传输数据存储在第二缓冲器中,所述传输数据是由第一信息设备的应用所传输的数据,第二信息设备在第一信息设备执行如下步骤的情况下检测所述传输数据中的数据丢失:(a)将用于该应用的在第一缓冲器中所积累的传输数据在时间的传输方向上分割为片段、读取分割的数据片段中的每一个(每个分割的数据片段)、对于分割的数据片段生成哈希值、并将生成的哈希值存储于该第一信息设备中的专用缓冲器中作为写入哈希值的步骤,和(b)通过将该写入哈希值与由该应用在该第一缓冲器中存储的传输数据中所包括的分割的数据片段相关联而将该写入哈希值从第一信息设备发送至第二信息设备的步骤,其中,所述第二信息设备执行: (c)接收由该应用所发送的传输数据、将所接收的传输数据存储在第二缓冲器中、接收所述写入哈希值、并且通过将该写入哈希值与在该传输数据中所包括的分割的数据片段相关联来将该写入哈希值存储在第二信息设备中的专用缓冲器中的步骤; (d)读取第二缓冲器中所存储的用于该第二信息设备的分割的数据片段、生成对于分割的数据片段的哈希值、并且将所生成的哈希值存储于第二信息设备中的专用缓冲器中作为 读取哈希值的步骤。
【文档编号】G06F3/06GK103988189SQ201280060287
【公开日】2014年8月13日 申请日期:2012年10月3日 优先权日:2011年12月8日
【发明者】村上佳邦 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1