分布式存储系统的制作方法

文档序号:6457175阅读:155来源:国知局
专利名称:分布式存储系统的制作方法
技术领域
本发明涉及分布式存储系统。
背景技术
作为用于管理网络上的数据的存储系统,集中式管理类型的网络文件系 统己广为人知。图10是一种常用的集中式管理类型的网络文件系统的示意 图。在这种集中式管理类型的网络文件系统中,在多个用户终端(客户端)
202之外还单独提供有用于存储数据的文件服务器201,用户终端202中的 每一个都使用文件服务器201中的文件。文件服务器201具有管理功能和管 理信息。文件服务器201与用户终端202通过通信网络203来彼此连接。
这种配置存在一个问题,如果文件服务器201中发生错误,那么在恢复 之前所有的资源都不能够被访问,因此,这种配置极易受到错误的影响,作 为系统来讲其可靠性很低。
分布式存储系统是一种已知的能够避免这种问题的系统。专利文件1中 公开了分布式存储系统的一个示例。图11示出了其配置的示例。分布式管 理类型的网络文件系统包括网络302和多个与其进行连接的用户终端(客户 端)301。
在每个用户终端301各自的存储器中都具有文件共享区域301a,并且其 中包括由用户终端301自己管理的主文件、作为由另一个用户终端301管理 的主文件的副本的缓存(cache)文件、以及包含对通过通信网络302进行传 播的文件的信息进行跟踪所需的管理信息的管理信息表。每个用户终端301 都与其它用户终端301中的至少一者建立引用(reference)关系,并且基于 该引用关系来交换并更正管理信息。网络上的所有用户终端301以相同的方式来执行这些操作,并且该信息相继进行传播,在一段时间之内会聚起来, 从而使得所有用户终端301能够具有相同的管理信息。当用户实际访问文件
时,用户的用户终端301从其中所具有的管理信息表中获取管理信息,并随 后选择具有将被访问的文件的用户终端301 (缓存客户端)。接下来,所述用 户的用户终端301从作为主客户端的用户终端301和所述缓存客户端获得文 件信息,并对其进行比较。如果相匹配,则从所选择的用户终端获取所述文 件。如果不匹配,则从主客户端获取所述文件。此外,在不匹配的情况下, 还要将不匹配通知给所述缓存客户端。接收到该通知的缓存客户端删除所述 文件,并从主客户端获取该文件,并执行处理来改变管理文件表。 专利文件l: JP 2002-324004 A

发明内容
然而,在常规的分布式存储系统中,为了提高可靠性,管理变得复杂了, 从而可能带来各种问题。
例如,在专利文件l中所示的配置中,为了提高可靠性,需要对一个文 件的多个副本进行存储,并从而当构建大容量存储器时会需要大量的用户终 端301。从而,随着用户终端301的数目越来越多,管理信息的会聚所需要 的时间也越来越长。另外,由于用户终端301之间的管理信息和实际文件的 交换,会消耗用户终端301的大量硬件资源并增加网络负荷。
为了解决上述问题而做出本发明,因此,本发明的目标是提供一种能够 在提高可靠性和连续操作能力的同时最小化管理工作负荷的增长的分布式 存储系统。
为了解决上述问题,根据本发明,所提供的分布式存储系统包括多个 用于存储数据的存储装置;以及多个用于控制所述存储装置的接口处理器, 其中所述接口处理器和所述存储装置能够根据IP协议通过通信网络来互
6相通信;所述接口处理器中的每一个接口处理器都存储节点列表,该节点列 表包含所述存储装置中的至少一者在所述网络中的IP地址;所述存储装置 中的每一个存储装置向不同的接口处理器请求节点列表;请求所针对的接口 处理器将所述节点列表发送给发出所述请求的存储装置;以及所述请求所针 对的接口处理器将发出所述请求的存储装置的IP地址添加到所述节点列表 中。
所述分布式存储系统还可以包括连接到所述通信网络的DNS服务器, 其中所述DNS服务器存储预定的主机名和与该预定的主机名相关联的多 个接口处理器的IP地址;所述DNS服务器响应于对所述预定的主机名的询 问而对所述多个接口处理器的IP地址之一进行循环通知;所述存储装置向 所述DNS服务器询问所述预定的主机名;以及所述存储装置基于所通知的 接口处理器的IP地址来请求所述节点列表。
所述接口处理器中的每一个接口处理器可以存储包含在所述节点列表 中的存储装置的IP地址中的至少一者,其中该IP地址与指示时间点的信息 相关联;以及所述接口处理器中的每一个接口处理器可以根据预定条件将与 指示最早的时间点的信息相关联的存储装置的IP地址从所述节点列表中删 除。
所述存储装置中的每一个存储装置可以存储包含其它存储装置的至少 一者的IP地址的节点列表;以及所述接口处理器中的每一个接口处理器和 存储装置中的每一个存储装置可以向包含在它们的节点列表中的存储装置 中的至少一者发送关于对所述存储装置中的至少一者进行控制的信息。
关于所述存储装置中的一个存储装置以及包括在所述一个存储装置的 节点列表中的另一个存储装置所述一个存储装置可以从其节点列表中删除 另一个存储装置;所述另一个存储装置可以向其节点列表中添加所述一个存 储装置;以及所述一个存储装置和所述另一个存储装置可以对包含在它们的节点列表中的所有存储装置(除了所述一个存储装置和所述另一个存储装 置)进行交换。
所述存储装置中的每一个存储装置可以基于发自所述接口处理器的节 点列表来更新它们各自的节点列表。
如果所述接口处理器中每一个接口处理器接收到从外界写入数据的请 求,则所述接口处理器中每一个接口处理器可以传输/接收关于去往/来自另 一个接口处理器的数据的写入许可的信息;以及根据对关于所述写入许可的
信息进行传输/接收的结果,每个已经接收到进行写入的请求的接口处理器可 以向所述存储装置给出存储数据的指令,或不给出指令。
根据本发明所涉及的分布式存储系统,每个存储装置的IP地址包含在 多个接口处理器的节点列表中。因此,即使在一些接口处理器不运行的状态 下,也可以通过使用剩余的接口处理器来对文件进行读写。从而,能够在提 高可靠性和连续操作能力的同时最小化管理工作负荷的增长。


图1是示出了包括根据本发明的分布式存储系统的构造的图; 图2是描述图1的接口处理器和存储装置的逻辑连接状态的图; 图3示出了表示图2中的图的节点列表的示例;
图4是示出了所述接口处理器对数据执行擦除修正编码的步骤的图; 图5是示出了在存储装置和接口处理器更新各自的节点列表时执行的进 程流的流程图6是示出了在图5的步骤S103a和S103b中执行的更新进程的图; 图7是示出了包括在图1的分布式存储系统从用户终端接收文件并在其 中存储该文件时执行的操作的进程流的流程图8是示出了包括在图1的分布式存储系统从用户终端接收文件读取请求并传送文件时执行的操作的进程流的流程图9是示出了在图1的分布式存储系统从用户终端接收所述文件并在其
中存储该文件时执行的排它控制进程流的流程图IO是集中式管理类型的常规网络文件系统的示意图;以及 图11是分布式管理类型的常规网络文件系统的示意图。
具体实施例方式
下面通过参考附图对本发明的具体实施方式
进行描述。 第一实施方式
图1是示出了包括根据本发明的分布式存储系统100的构造的图。分布 式存储系统100经由因特网51与用户终端10进行通信连接,其中所述用户 终端10是由分布式存储系统100的用户使用的计算机,所述因特网51是公 共通信网络。
分布式存储系统100包括用于存储数据的存储装置组30和用于根据来 自用户终端10的请求来控制存储装置组30的接口处理器组20。所述接口处 理器组20和所述存储装置组30经由局域网(LAN) 52通信连接,其中所 述LAN 52是通信网络。
所述接口处理器组20包括多个接口处理器。在该实施方式中,示出了 五个接口处理器21-25,但数目也可有所不同。
存储装置组30包括多个存储装置。存储装置的数目可以是例如1000个, 但为了简化,该实施方式中只使用了九个存储装置31 39。
用户终端10、接口处理器21 25、和存储装置31 39中的每一个都具有 与公知计算机相同的结构,并包括用于接收外部输入的输入设备、用于执行 外部输出的输出设备、用于执行操作的操作设备、以及用于存储信息的存储 设备。所述输入设备包括键盘和鼠标;所述输出设备包括显示器和打印机;所述操作装置包括中央处理器(CPU);所述存储装置包括存储器和硬盘驱 动器(HDD)。此外,所述计算机执行存储在各自存储设备中的程序,由此 实现此处所描述的功能。
用户终端IO包括作为针对因特网51的输入设备和输出设备的网卡。存 储装置31 39中的每一个都包括作为针对LAN 52的输入设备和输出设备的 网卡。接口处理器21 25中的每一个都包括两个网卡。其中一个网卡是针对 因特网51的输入设备和输出设备,另一个网卡是针对LAN 52的输入设备 和输出设备。
所述用户终端10、接口处理器21 25和存储装置31 39中的每一个都
被分配与其中的网卡相关联的IP地址。
为了给出示例,对于LAN52,接口处理器21 25和存储装置31 39的
IP地址被指定如下
接口处理器21-——192.168.10.21
接口处理器22-——192.168.10.22
接口处理器23-——192,168.10.23
接口处理器24-——192.168,10.24
接口处理器25-——192.168.10.25
存储装置31——-192.168.10.31;
存储装置32——-192.168.10.32;
存储装置33——-192.168.10.33;
存储装置34———192.168.10.34;
存储装置35———192.168.10.35;
存储装置36———192.168.10.36;
存储装置37———192.168.10.37;
存储装置38———192.168.10.38;存储装置39——192.168.10.39。
类似地,对于因特网51,用户终端10和接口处理器21 25的IP地址也 被指定。这里省略了具体示例,但其中仅需要要求各个IP地址各不相同。
DNS服务器41与因特网51通信连接,其中DNS服务器41是具有公知 结构的DNS服务器。DNS服务器41存储单个主机名和与该单个主机名相关 联的针对因特网51的接口处理器21 25中的每一个的IP地址,并根据所谓 的轮循(round-robin) DNS方法来进行操作。具体地,响应于所述用户终端 10关于单个主机名所作的询问,DNS服务器41按顺序循环将所述5个IP 地址通知给用户终端10,这些IP地址分别对应于接口处理器21 25。
类似地,DNS服务器42与LAN 52通信连接,其中DNS服务器42是 具有公知结构的DNS服务器。DNS服务器42存储单个主机名和与该单个主 机名相关联的针对LAN 52的接口处理器21 25中的每一个的IP地址。响应 于所述存储装置31 39关于单个主机名所作的询问,DNS服务器42根据所 述轮循DNS方法按顺序将接口处理器21~25的IP地址通知给存储装置 31 39。
图2是描述图1的接口处理器21 25和存储装置31 39的逻辑连接状态 的图。所述逻辑连接状态被显示为由节点和连接所述节点的各自具有方向的 线组成的有向图,其中所述节点表示接口处理器21 25和存储装置31 39。 应该注意到,为了简化,图2只示出了接口处理器21,但实际上,其它接口 处理器22 25也包括在图中。
该图中包括方向为从接口处理器21 (同样适用于接口处理器22 25)到 存储装置31~39中的至少一者(例如到存储装置31、 36、 37和38)的线。 另一方面,图中不包括方向为从存储装置31~39到接口处理器21 (同样适用 于接口处理器22 25)的线。此外,在存储装置之间可能没有线,也可存在 单向线或双向线。
ii应该注意到该图并不是固定不变的,它可根据分布式存储系统100的操 作来进行改变。随后会给出其描述。
在分布式存储系统100中,所述逻辑连接状态被示为一组节点列表。节
点列表是为每个节点创建的。
图3示出了表示图2中的图的节点列表的示例。如果图中存在方向为从 一个节点到另一个节点的线,作为该线的起点的节点的节点列表包含表示作 为该线的终点的节点的信息,例如LAN 52的IP地址。
图3 (a)示出了为图2中所示的接口处理器21 (具有IP地址 192.168.10.21)所创建的节点列表。该节点列表被存储在接口处理器21的存 储设备中。所述节点列表包含表示存储装置31、 36、 37和38的IP地址。
类似地,图3 (b)示出了为图2中所示的存储装置31 (具有IP地址 192.168.10.31)所创建的节点列表。该节点列表被存储在存储装置31的存储 设备中。所述节点列表包含表示存储装置32、 34和35的IP地址。
接口处理器21 25中的每一个都具有通过公知方法来对数据执行擦除 修正编码的功能。
图4示出了所述接口处理器21 (同样适用于接口处理器22 25)对数据 执行擦除修正编码的步骤。图4(a)表示原始数据,并示出了信息作为一整 块而被提供的状态。接口处理器21将原始数据进行划分,以创建多个信息 包。图4 (b)示出了创建例如100个信息包的状态。此外,接口处理器21 向信息包提供冗余,从而创建编码数据文件,这些编码数据文件比信息包的 数量要多。图4 (c)示出了创建例如150个编码数据文件的状态。
这150个编码数据文件被构造以使得可通过从这150个编码数据文件中 选出例如105个编码数据文件进行组合来重建原始数据。上述编码和解码方 法是基于公知技术的,例如擦除修正码或错误修正码。编码数据文件的数目 或重建原始数据所需的编码数据文件的最小数目可以适当地改变。接口处理器21在其存储设备中存储用于执行上述编码和解码的程序, 并通过执行这些程序来起到编码设备和解码设备的作用。
所述分布式存储系统100具有动态更新图2所示的逻辑连接状态的功能。
图5和图6是示出了在存储装置31 39和接口处理器21~25更新各自的 节点列表时执行的进程流的图。
所述存储装置中的每一个(此后,以存储装置31为例)在给定的时间 (例如每两分钟)开始执行图5的流程图所示的进程。开始了所述执行的存 储装置也已经开始了更新进程。
首先,存储装置31将其自己的节点列表中包含的节点中的一个选择为 所述更新进程的目标(步骤S101a)。这里,选择到目前为止还未被选择过的 节点或者选择最长时间没有被选择的节点。在存在多个节点满足这一条件的 情况下,从这些节点中随机选择一个节点。尽管图中没有示出,但是所选择 的节点的IP地址与指示时间点的时间戳相关联地被存储,其中该时间点被 视为该进程下一次执行的选择参考。应该注意到,作为替换,IP地址和时间 戳不必彼此相关联。在这种情况下,如果节点将在步骤S101a中被选择,则 从包含在节点列表中的节点之间随机选择一个节点。
此后,作为示例,假定选择存储装置32。
接下来,存储装置31向所选择的节点传送指示所述节点已被选为更新 进程的目标的节点交换消息(步骤S102a)。存储装置32接收节点交换消息 (步骤S102b),并认识到存储装置32已被选为将由存储装置31所执行的 更新进程的目标。
接下来,存储装置31和32对相互连接信息执行修剪,由此更新它们的 节点列表(步骤S103a和S103b)。
图6是示出了在步骤S103a和S103b中执行的更新进程的图。图6 (x)示出了在那些步骤开始之前存储装置31和32的节点列表。这对应于图2的 连接状态。存储装置31的节点列表包含存储装置32、 34和35,其中存储装 置32的节点列表只包含存储装置33。
在步骤S103a和S103b中,存储装置31和32首先将方向为从存储装置 31到存储装置32的线的方向反转,其中存储装置31已经开始了更新进程, 存储装置32已被选为所述更新进程的目标。具体地,存储装置32被从存储 装置31的节点列表中删除,存储装置31被添加到存储装置32的节点列表 中(如果存储装置31已包含在其中,则无需改变)。此时,节点列表指示图 6 (y)所示的内容。
此外,存储装置31和32交换它们的节点列表中的其它节点。存储装置 34和35被从存储装置31的节点列表中删除,并随后被添加到存储装置32 的节点列表中。此外,存储装置33被从存储装置32的节点列表中删除,并 随后被添加到存储装置31的节点列表中。在此时,节点列表指示图6 (z) 所示的内容。
这里,在对步骤S103a和S103b中执行的相互连接信息进行修剪的过程 中,所有存储装置的节点列表中包含的节点总数(即图2的图中所示出的存 储装置之间的线的总数)可以不改变或可以减少,但不会增加。这是因为方 向为从开始更新进程的存储装置到被选为更新进程的目标的存储装置的线 总是被删除,但与它的方向相反的线则可能被添加也可能不被添加(即线已 经存在的情况)。
以这种方式,存储装置31和32在步骤S103a和S103b中执行对相互连 接信息的修剪。在此之后,所选择的存储装置32结束所述进程。
接下来,存储装置31确定包含在存储装置31的节点列表中的节点数目 是否等于或小于给定的数目,例如,四个(图5中的步骤S104a)。如果节点 数目大于给定数目,则所述存储装置31结束所述进程。如果节点数目等于或小于给定数目,则所述存储装置31请求接口处理
器21 25中的一个传送节点信息(即节点列表),并且在获取节点列表之后, 将包含在该节点列表中的节点添加到其自身的节点列表中(步骤S105a)。被 选为请求的目标的接口处理器响应于所述请求,将其自身的节点列表传送到 存储装置31 (步骤105c)。如图3 (a)所示,节点列表包含存储装置31 39 的IP地址的至少一者。
这里,存储装置31向使用预定主机名的DNS服务器42进行询问,并 从具有所获取的IP地址的接口处理器获取节点信息。DNS服务器42根据上 述的轮循方法来执行通知,并且因此存储装置31在每次执行步骤S105a时 从不同的接口处理器获取节点信息。此后,假定例如DNS服务器42将接口 处理器21的IP地址通知给存储装置31。
接下来,存储装置31和接口处理器21根据步骤S105a和S105c (步骤 S106a和S106b)的结果分别对各自的节点列表进行更新。
此外,接口处理器21将作为请求源节点的存储装置31添加到其自身的 节点列表。这里,接口处理器21存储所添加的节点,所添加的节点与指示 节点被添加的时间点的信息(例如时间戳)相关联。随后,如果满足预定条 件,例如如果节点列表中的节点数目变成等于或大于给定数目,则接口处理 器从节点列表中删除与最早时间戳相关联的节点。应该注意到,作为替换, 接口处理器21还可以不将节点与时间戳相关联。在这种情况下,在从节点 列表中选择将被删除的节点的过程中,从包含在节点列表中的节点中随机选 择一个节点。此外,接口处理器21可以将节点列表存储为具有特定顺序的 列表。具体地,可以按照如下方式来构造节点列表节点被添加到节点列表 的顺序可被确定。在这种情况下,在从节点列表中选择将被删除的节点时, 也可按照向节点列表中添加节点的顺序从最早的节点开始执行,也就是使用 先入先出(FIFO)方法。以这种方式,所述分布式存储系统ioo对节点之间的逻辑连接状态进行
动态更新。
此外,如果未被包括在图1中的存储装置被新添加到分布式存储系统
100中,新的存储装置首先从接口处理器中的一者获取节点列表,并将该节
点列表保持为初始节点列表。也就是在这种情况下,所添加的存储装置具有
空的节点列表,并因此不执行步骤S101a、 S102a、 S102b、 S103a和S103b。 此外,在步骤S104a中,节点信息不包含任何项,很明显满足等于或小于预 定数目的条件,并且因此执行图5中的步骤S105a和S105c以及步骤S106a 和S106c。
以这种方式,通过反复地在预定的时间分别在每个存储装置处对图5和 图6所描述的节点列表执行更新,起初不具有任何线的新添加的存储装置开 始具有单向线或双向线,由此具有各种图案的图被构建。
图7是示出了包括在分布式存储系统100从用户终端10接收文件并在 其中存储该文件时执行的操作的进程流的流程图。
首先,根据用户给出的指令,用户终端10向分布式存储系统IOO传送 将要被存储在分布式存储系统100中的写入文件(步骤S201a)。
这里,用户终端10向使用预定主机名的DNS服务器41进行询问,并 随后将写入文件发送到具有所获取的IP地址的接口处理器。DNS服务器41 根据上述轮循方法来执行所述通知,并且因此用户终端10每次向不同的接 口处理器传送写入文件。此后,举例来讲,假定所述写入文件被传送到接口 处理器21。
这里,在将执行文件的写入进程的接口处理器已被确定且其IP地址被 存储在用户终端10中的情况下,用户终端10不向DNS服务器41进行询问, 并通过直接使用IP地址来执行传输。例如,下列状态对应于这种情况作 为排它控制进程(随后结合图9来描述)的结果,特定的接口处理器具有允许对文件进行写入的令牌。
一旦接收到所述写入文件(步骤S201b),接口处理器21对所述写入文 件进行分割,并在其上执行擦除修正编码,由此创建多个子文件(步骤
S202b)。这是通过使用参考图4所描述的方法来执行的。
接下来,接口处理器21向存储装置31 39传送请求以进行写入(写入 请求)(步骤S203b),并且存储装置31~39接收所述写入请求(步骤S203c)。 根据图2中示出的图,所述写入请求被从接口处理器21传送到其节点列表 中所指定的存储装置,并进一步被传送到这些存储装置的每一个的节点列表 中指定的节点列表。对其进行重复以在存储装置之间传输所述写入请求。
所述写入请求包含下列数据
-已经传送了写入请求的接口处理器的IP地址;
-用于单独识别所述写入请求的消息ID;
-表示所述写入请求已被传输的次数的跳跃计数(hop count);以及 -表示每个存储装置必须对所述写入请求进行响应的概率的响应概率。 这里,所述跳跃计数的初始值是(例如)1。此外,接口处理器21基于 存储装置的总数和子文件的数目来确定响应概率,从而将要响应的存储装置 的数目等于或大于子文件的数目的概率相当高。例如,假定存储装置的数目 (预先指定,并存储在接口处理器21的存储设备中)是1000且子文件的数 目是150,响应概率可以被设定为150/1000=0.15,以使得获得的响应存储装 置的数目的期望值等于子文件的数目。然而,如果响应存储装置的数目等于 或大于子文件的数目的概率将被设定为足够高,则所述响应概率可被设定为 (例如)0.15X1.2=0.18,给出20%的余量。
应该注意到,作为替换,所述写入请求也可不包含任何跳跃计数。 作为特定示例,下列算法被用于所述写入请求的传输/接收。 (1)传送节点(例如接口处理器21)向包含在其自身节点列表中
17的所有节点传送写入请求。
(2) 接收节点(例如存储装置31)参考所接收到的写入请求的消 息ID,并确定所述写入请求是否是己知的,也就是说,所述 写入请求是否已被接收。
(3) 如果所述写入请求是己知的,则所述接收节点结束该进程。
(4) 如果所述写入请求不是己知的,则所述接收节点以与(1)中 的情况相类似的方式作为传送节点来传送所述写入请求。一 旦如此,写入请求的跳跃计数加一。
以这种方式,由所述图连接的所有存储装置31~39接收所述写入请求。
接下来,存储装置31~39中的每一个确定是否对所接收的写入请求进行 响应(步骤S204c)。所述确定是根据响应概率而随机作出的。例如,如果响 应概率是0.18,则存储装置31 39中的每一个确定以0.18的概率进行响应, 并确定以1-0.18=0.82的概率不进行响应。
如果确定不进行响应,则存储装置结束所述进程。
如果确定进行响应,则存储装置向包含在所述写入请求中的接口处理器 的IP地址(这里为192.168.10.21)传送响应(步骤S205c)。所述响应包含 所述存储装置的IP地址。
所述接口处理器21 (也就是所述写入请求的传输源)接收响应(步骤 S205b),并随后向包含在所述响应中的IP地址(也就是向所述响应存储装 置)传输子文件(步骤S206b)。这里,向一个存储装置传送一个子文件。
如果响应存储装置的数目大于子文件的数目,则接口处理器21根据预 定标准来选择存储装置。例如,标准被设定以使得数据尽可能的按照地理来 分布,也就是使得包括在一个位置的存储装置的最大数目减少。
己经对所述写入请求作出响应的存储装置接收子文件(步骤S206c)。尽 管未在图7中示出,但已经作出响应但还未接收到子文件的存储装置结束所述进程。
已经接收到子文件的存储装置在其自身的存储设备中存储子文件(步骤
S207c)。这意味着所述子文件已经被写入分布式存储系统100。
在那之后,每个存储装置向接口处理器21传送子文件写入结束通知(步骤S208c)。接口处理器21从所述子文件已经传送到的所有存储装置接收该通知(步骤S208b)。这意味着全部原始数据都已被写入所述分布式存储系统100。
在那之后,接口处理器21向用户终端10传送文件写入结束通知(步骤S209b),并且用户终端10接收该通知(步骤S209a)以结束所述文件写入进程(步骤S210a)。
图8是示出了包括在分布式存储系统100从用户终端10接收文件读取请求并传送文件时执行的操作的进程流的流程图。
首先,用户终端10接收指令以从用户读取特定文件,并且根据该指令,向分布式存储系统100传送文件读取请求(步骤S301a)。
这里,类似于图7的步骤S201a,通过使用轮循方法来进行DNS询问。也就是,用户终端10每次向不同的接口处理器传送文件读取请求。此后,举例来讲,假定文件读取请求被传送到接口处理器21。
接口处理器21接收所述文件读取请求(步骤S301b),并随后向存储装置31 39传送文件存在检查请求(步骤S302b)。存储装置31 39接收该请求(步骤S302c)。所述文件存在检查请求是使用类似于图7的步骤S203b中的写入请求的方法来进行传送/接收的。也就是,根据图2中所示的图,文件存在检查请求被从接口处理器21传送到其节点列表中所指定的存储装置,并进一步被传送到这些存储装置各自的节点列表中所指定的节点列表。对其进行重复以在存储装置之间传输文件存在检査请求。
所述文件存在检査请求包含下列数据-用于对文件进行识别的信息(例如文件名),该文件是文件读取请求的目标;
-已经传送了文件存在检查请求的接口处理器的IP地址;-用于单独识别所述文件存在检查请求的消息ID;以及-表示所述文件存在检査请求已被传输的次数的跳跃计数。这里,所述跳跃计数的初始值是(例如)1。可替换地,文件存在检査请求还可以不包含任何跳跃计数。
接下来,存储装置31~39中的每一个都确定所述文件的子文件是否被存储在其中(步骤S303c)。
如果子文件未被存储,则所述存储装置结束所述进程。
如果子文件己被存储,则所述存储装置向包含在所述文件存在检査请求中的接口处理器的IP地址(这里为192.168.10.21)传送指示文件存在的存在响应(步骤S304c)。所述响应包含所述存储装置的IP地址。
所述接口处理器21 (也就是所述文件存在检查请求的传输源)接收所述存在响应(步骤S304b),并向包含在所述存在响应中的IP地址(也就是向所述响应存储装置)传输子文件读取请求(步骤S305b)。
已经传送了所述存在响应的存储装置接收所述子文件读取请求(步骤S305c),并随后从其自身的存储设备读取子文件(步骤S306c),以及将所述子文件传送到接口处理器21 (步骤S307c)。
接口处理器21从已经传送了子文件的存储装置的至少一部分接收子文件(步骤S307b)。此外,基于所接收到的子文件,接口处理器21在其上执行擦除修正解码,由此对由所述用户终端10所请求的文件进行重建(步骤S308b)。所述解码过程是使用与参考图4描述的编码方法相对应的己知方法来执行的。注意到由于子文件是冗余的,因此所述原始文件可以在没有获得所有子文件的情况下被重建。在那之后,接口处理器21向用户终端10传送所述解码文件(步骤
S309b),并且用户终端10接收该文件(步骤S309a)以结束所述文件读取进程(步骤S310a)。
图9是示出了在分布式存储系统100从用户终端10接收文件并在其中存储该文件时执行的排它控制进程流的流程图。所述排它控制进程被执行,从而阻止从多个接口处理器同时对相同文件进行写入。
在该控制中使用令牌。每个令牌与一个文件相关联并指示对所述文件进行写入是被允许还是被禁止。对于每个文件,不多于一个接口处理器可以在存储设备中存储所述令牌,并因此只有存储了所述令牌的接口处理器可以对所述文件进行写入(这包括保存新文件和更新现有的文件)。
首先,响应于来自用户的指令,用户终端10向分布式存储系统IOO传送用于对文件进行写入的写入请求(步骤S401a)。
这里,与图7的步骤S203a类似,使用轮循方法来进行DNS询问。此后,举例来讲,假定文件写入请求被传送到接口处理器21。
接口处理器21接收所述写入请求(步骤S401b),并随后向其它接口处理器22~25传送用于排它控制的令牌获取请求(步骤S402b)。所述令牌获取请求包含下列数据
-己经传送了令牌获取请求的接口处理器的IP地址;
-用于对文件进行识别的信息(例如文件名),该文件是令牌获取请求的目标;以及
-指示令牌获取请求被创建的时间点的时间戳。
其它接口处理器22 25中的每一个都接收令牌获取请求(步骤S402c),并随后确定所述接口处理器是否持有该文件的令牌(步骤S403c)。
关于其它的接口处理器22~25,如果它们确定都不持有该文件的令牌,则它们结束该进程。
21如果其中一个接口处理器确定持有该文件的令牌,则该接口处理器向已经传送了所述令牌获取请求的接口处理器21传送指示令牌已被获取的令牌
获取拒绝响应(步骤S404c)。
接口处理器21等待令牌获取拒绝响应,并在任何响应被传送时接收该响应(步骤S404b)。这里,接口处理器21在执行了步骤S402b之后等待一段给定的时间(例如100ms),在这段时间期间可以接受所述令牌获取拒绝响应。
接下来,接口处理器21确定所述令牌获取拒绝响应是否已在步骤S404b中被接收(步骤S405b)。如果确定已经接收到令牌获取拒绝响应,则接口处理器21向用户终端10传送不可写入的通知(步骤S411b),并且用户终端IO接收该不可写入的通知(步骤S411a)。在这种情况中,用户终端10对该文件执行写入,并通过已知方法来执行用户的不可写入的通知。换言之,用户终端10不执行图7的步骤S201a。
如果在步骤S405b确定还未接收到令牌获取拒绝响应,则接口处理器21确定在从步骤S401b的执行的开始到步骤S405b的执行的完成这段时间期间是否已从其它接口处理器22 25接收到令牌获取请求(步骤S406b)。
如果未从其它接口处理器22 25接收到令牌获取请求,则接口处理器21获取与该文件相应的令牌(步骤S408b)。具体地,接口处理器21创建令牌,并随后将令牌存储在存储设备中。
在从任何其它接口处理器22 25中接收到令牌获取请求的情况下,接口处理器21对其己传送的令牌获取请求和已经从其它接口处理器接收的其它令牌获取请求进行时间点比较(步骤S407b)。该比较通过比较包含在各个令牌获取请求中的时间戳来执行。
在步骤S407b中,如果其自身的令牌获取请求是最早的,即如果时间戳是最早的,则接口处理器21进入到步骤S408b并按如上所述来获取所述令牌。否则,接口处理器21进入到步骤S411b并按如上所述来传送所述不可写入的通知。
当在步骤S408b中获取所述令牌后,接口处理器21向用户终端10传送可写入的通知(步骤S409b),并且用户终端IO接收该可写入的通知(步骤S409a)。在那之后,用户终端10执行写入操作(步骤S410a)。具体地,用户终端10执行图7的步骤S201a,并在此之后执行图7的流程图。
应该注意到在步骤S408b中获取的令牌(例如)在图7的步骤S208b完成之时被释放,并且接口处理器21从其存储设备中删除所述令牌。
在下文,描述了如上所述的由分布式存储系统100执行的进程流的示例。
在分布式存储系统100被构造并开始运行之后,在接口处理器21 25和存储装置31 39之间形成图2中所示的逻辑连接状态。不管是否存在来自用户终端10的指令,都会通过图5中所示的进程在合适的时间对所述连接状态进行自动和动态地更新。因此,即使在所述节点中的任何一个或节点之间的通信路径中发生错误,都会产生绕开所述错误的路径,从而所得到的系统具有很高的容错性。
在随时间的流逝对图5的进程进行重复的同时,也就是对在步骤S103a和S103b中的相互连接信息的修剪进行重复的同时,包含在每个存储装置的节点列表中的节点数目逐渐减少。换言之,图2的图由于线的数目的逐渐减少而变得稀疏。这里,在图5的步骤S105a中,当包含在每个存储装置的节点列表中的节点信息的片段(piece)的数目变得等于或小于阈值(例如4)时,所述节点信息被另外地获取,由此节点信息的片段的数目增加。通过设定该阈值,使得调整图2的图的平均最短路径长度(即在从接口处理器21 25向存储装置31 39传送消息的过程中的平均跳跃计数)成为可能。所述平均最短路径长度被表示为+l/2其中n表示节点数目,y表示欧拉常数(约为0.5772), <1^>表示包含在节点 列表中的节点信息的片段数目的平均值,ln表示自然对数。
应该注意到,在平均最短路径长度可以通过测量获得的情况下,存储装 置的数目可以通过对上述表达式中的N进行求解来而反推出来。在图7的步 骤S203b中,接口处理器21事先对存储装置的数目进行存储,由此确定将 被包含在写入请求中的响应概率。然而,作为替换,可以通过这样的反推过 程来获得存储装置的数目。在这种情况下, 一旦传输了图7的步骤S203b中 的写入请求且一旦传输了图8的步骤S302b中的文件存在检查请求,每个存 储装置将所述跳跃计数通知给接口处理器21,并且接口处理器21对所有存 储装置的跳跃计数取平均值,从而获得所述平均最短路径长度的测量值。
此外,当存储装置31 39如上所述对节点列表进行请求时,已经接收到 所述请求的接口处理器传送所述节点列表,并且还将已经作出所述传输请求 的存储装置的IP地址添加到其自身的节点列表中(步骤S106c)。这里,响 应于关于接口处理器的IP地址的询问(其中该询问由存储装置31~39来做 出),DNS服务器42每次将不同的接口处理器的IP地址通知给存储装置 31 39,并因此存储装置31~39每次向不同的接口处理器请求节点列表。通 过这种构造,所有存储装置31-39的IP地址被包含在多个不同接口处理器 的节点列表中。
这里,举例来讲,假定分布式存储系统100的用户通过用户终端10来 指示所述分布式存储系统100对具有文件名"ABCD"的文件进行存储。响 应于此,所述分布式存储系统100执行图9中示出的排它控制进程,并且接 口处理器21 (例如)获取文件ABCD的令牌。这里使用了这样一种机制 接口处理器21~25中的每一个独立地执行令牌获取操作并且不提供任何单独 的用于管理令牌的系统,并且因此分布式存储系统100可以不需要任何集中 管理机制而被构建。在接口处理器21获取所述令牌之后,用户终端IO和分布式存储系统100 执行图7中所示的写入进程。这里,接口处理器21将文件ABCD分成100 个信息包,并进一步对这些信息包提供冗余,从而形成150个子文件(步骤 S202b)。此外,接口处理器21向所有存储装置传送写入请求,其中在该写 入请求中响应概率被指定为0.18 (步骤S203b)。所述写入请求是通过使用 根据图2中所示的图的组桶式(bucketbrigade)方法来传输的。每个存储装 置使用指定的概率0.18来传送响应(步骤S205c)。此时,接口处理器21的 IP地址被包含在写入请求中,并且因此存储装置不再需要事先知道接口处理 器21的IP地址(和其它接口处理器22 25的IP地址)。
接口处理器21基于所接收的响应来执行子文件的传输,并且各个存储 装置在存储设备中存储子文件(步骤S207c)。
这里,不需要接口处理器21~25来管理哪个存储装置存储文件ABCD 的子文件,并且因此分布式存储系统IOO可以不需要任何集中管理机制而被 构建。
此外,即使一些存储装置由于一些因素(诸如单个存储装置的故障、断 电或维修)或由于网络线路中断而未能正常运行,也能够通过使用所述擦除 修正编码技术从剩余的运行存储装置中获取所需数量的子文件。这样,原始 文件可通过解码来被精确地生成,因此能够获得高可靠性和连续操作能力。
此外,分布式存储系统100的用户通过用户终端10指示分布式存储系 统IOO在期望的时间点对存储在分布式存储系统100中的文件ABCD进行读 取。响应于此,接口处理器21 (例如)按图8中所示来传送文件存在检査请 求(步骤S302b),并从响应存储装置接收子文件(步骤S307b)。这里,与 所述写入迸程的情况相似,接口处理器21的IP地址被包含在文件存在检查 请求中,并且因此存储装置不需要事先知道IP地址。此外,接口处理器21 不需要管理哪个存储装置存储文件ABCD的子文件,并且因此分布式存储系
25统100可以不需要任何集中管理机制而被构建。
接口处理器21基于所接收的子文件来重建文件ABCD (步骤S308b), 并且随后将该文件传送到用户终端10。
如上所述,根据本发明所涉及的分布式存储系统100,接口处理器21~25 和存储装置31 39中的每一个存储包含存储装置31~39的IP地址中的至少 一者的节点列表。接口处理器21 25基于节点列表来控制存储装置31 39。
这里,存储装置31-39每次向不同的接口处理器作出节点列表请求,并 且因此所有存储装置31 39的IP地址将被包含在多个接口处理器的节点列 表中。因此,即使在接口处理器21 25中的一些没有运行的状态中,也可以 通过使用剩余接口处理器来执行文件的写入和读取,这在最小化管理工作负 荷的增加的同时提高了可靠性和连续工作能力。
此外,DNS轮循方法使得负荷能够被分布到多个接口处理器21 25,并 且因此能够避免某一个接口处理器或其周围的网络上的负荷急剧增加的情 况。
此外,接口处理器21 25使用擦除修正编码技术来创建多个子文件,并 且多个存储装置中的每个都存储一个子文件。因此,即使存储装置31 39中 的一些未在运行,也可通过使用剩余存储装置来执行文件的读取,这将进一 步提高可靠性和连续工作能力。
另外,存储装置31 39和新添加的存储装置对接口处理器21 25的节点 列表作出请求,并基于这些节点列表来自动地更新或创建它们自己的节点列 表。因此,对设定进行改变的操作(由于新的存储装置的添加,将被另外需 求)是不需要的,由此减少了针对改变所述配置的工作负荷。特别地,将被 添加的新的存储装置只需要对在接口处理器21~25之间共享的DNS服务器 42的IP地址和单个主机名进行存储,并且不需要存储各个接口处理器21 25 的不同IP地址。
26此外,根据本发明所涉及的分布式存储系统ioo,与常规分布式存储系 统相比,可获得下列效果。
子文件被存储在与用户终端互相独立的分布式存储系统ioo中,因此任 何来自用户的恶意或错误操作的影响都可以被抑制。此外,如果需要更大的 存储容量来存储文件,则只需要添加存储装置即可,并且不需要准备更多数 量的用户终端。此外,不需要等待信息(诸如存储装置之间的管理信息)传
递的会聚(convergence)。此外,接口处理器21 25可以通过文件存在检査 请求来获知哪个存储装置存储相应的子文件(图8的步骤S302b),并因此 不需要管理文件(和子文件)与存储装置之间的对应关系。
此外,用户终端10和因特网51位于分布式存储系统100之外,从而不 受由分布式存储系统100内部执行的信息传输/接收引起的网络负荷增加的 影响。此外,用户终端10是由不同于存储装置31 39的硬件来构造的,因 此文件或子文件的传输/接收不会消耗用户终端10的硬件资源。
此外,接口处理器21 25通过使用令牌来执行排它控制进程,因此即使 两个或多个用户同时针对相同文件作出写入进程的请求,将被写入的文件的 完整性也将得以保持。
根据上述第一实施方式,DNS服务器42连接到LAN 52,存储装置31 39 向DNS服务器42作出请求以获取接口处理器21 25的IP地址。作为替换, 每个存储装置31 39可以存储所有接口处理器21 25的IP地址,从而不用 提供DNS服务器42。此外,每个存储装置31~39可以存储接口处理器21~25 的IP地址的范围,例如表示"192.168.10.21"到"192.168.10.25"的信息。 在这种情况下,当每个存储装置31~39在图5的步骤S105a中向接口处理器 作出请求时,可以循环地在接口处理器21 25之间作出选择。即使使用这种 构造,所有存储装置31~39的IP地址都被包含在多个接口处理器的节点列 表中,因此,与第一实施方式类似,能够提高可靠性和连续操作能力。
权利要求
1.一种分布式存储系统,该分布式存储系统包括多个用于存储数据的存储装置;以及多个用于控制所述存储装置的接口处理器,其中所述接口处理器和所述存储装置能够根据IP协议经由通信网络来互相通信;所述接口处理器中的每一个接口处理器都存储节点列表,该节点列表包含所述存储装置中的至少一者在所述网络中的IP地址;所述存储装置中的每一个存储装置向不同的接口处理器请求所述节点列表;所述请求所针对的接口处理器将所述节点列表传送到作出所述请求的存储装置;以及所述请求所针对的接口处理器将作出所述请求的存储装置的IP地址添加到所述节点列表。
2. 根据权利要求1所述的分布式存储系统,该分布式存储系统还包括 连接到所述通信网络的DNS服务器,其中所述DNS服务器存储预定的主机名和与该预定的主机名相关联的多个 接口处理器的IP地址;所述DNS服务器响应于对所述预定的主机名的询问而对所述多个接口 处理器的IP地址之一进行循环通知;所述存储装置向所述DNS服务器询问所述预定的主机名;以及所述存储装置基于所通知的接口处理器的IP地址来请求所述节点列表。
3. 根据权利要求1或2所述的分布式存储系统,其中-所述接口处理器中的每一个接口处理器存储包含在所述节点列表中的存储装置的IP地址中的至少一者,其中该IP地址与指示时间点的信息相关 联;以及所述接口处理器中的每一个接口处理器根据预定条件将与指示最早的 时间点的信息相关联的存储装置的IP地址从所述节点列表中删除。
4. 根据权利要求l-3中的任一权利要求所述的分布式存储系统,其中 所述存储装置中的每一个存储装置存储包含其它存储装置的至少一者的IP地址的节点列表;以及所述接口处理器中的每一个接口处理器和所述存储装置中的每一个存 储装置向包含在其节点列表中的存储装置中的至少一者发送关于对所述存 储装置中的至少一者进行控制的信息。
5. 根据权利要求4所述的分布式存储系统,其中,关于所述存储装置 中的一个存储装置以及包括在所述一个存储装置的节点列表中的另一个存 储装置所述一个存储装置从其节点列表中删除所述另一个存储装置; 所述另一个存储装置向其节点列表中添加所述一个存储装置;以及 所述一个存储装置和所述另一个存储装置对包含在其节点列表中的除 去所述一个存储装置和所述另 一个存储装置之外的所有存储装置进行交换。
6. 根据权利要求1-5中的任一权利要求所述的分布式存储系统,其中 所述存储装置中的每一个存储装置基于传送自所述接口处理器的节点列表 来更新它们各自的节点列表。
7. 根据权利要求l-6中的任一权利要求所述的分布式存储系统,其中如果所述接口处理器中的每一个接口处理器接收到从外界写入数据的 请求,则所述接口处理器中的每一个接口处理器对关于去往/来自另一个接口处理器的数据的写入许可的信息进行传输/接收;以及根据对关于所述写入许可的信息进行传输/接收的结果,每个已经接收 到写入请求的接口处理器向所述存储装置给出存储数据的指令,或不给出指
全文摘要
提供了一种能够在最小化管理工作负荷增长的同时提高可靠性和连续工作能力的分布式存储系统。分布式存储系统(100)包括用于存储数据的存储装置(31~39)和用于根据来自用户终端(10)的请求来控制所述存储装置(31~39)的接口处理器(21~25)。存储装置(31~39)和接口处理器(21~25)中的每一个存储包括至少一个存储装置(31~39)的IP地址的节点列表。接口处理器(21~25)基于所述节点列表来控制存储装置(31~39)。所述存储装置(31~39)中的每一个存储装置每次向不同的接口处理器请求节点列表。接收到所述请求的接口处理器将任何已经作出请求的存储装置的IP地址添加到其自身的节点列表。
文档编号G06F12/00GK101663651SQ20078005237
公开日2010年3月3日 申请日期2007年6月21日 优先权日2007年3月30日
发明者石川康雄, 福田筑 申请人:完美天空Jsat株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1