(57)【特許請求の範囲】
【請求項１】
複数のエッジスイッチと、
前記エッジスイッチ毎の、該エッジスイッチに接続された１つ以上のストレージノードと１つ以上のホストサーバと、
前記複数のエッジスイッチを複数のネットワーク経路で接続するネットワークと、
前記ネットワークを介して前記複数のエッジスイッチと接続されたメタサーバとを備え、
前記ホストサーバは、自身と同一の前記エッジスイッチに接続された各前記ストレージノードにアクセス可能であると共に、前記複数のエッジスイッチを介して他の各前記ストレージノードにアクセス可能であり、
前記メタサーバは、
ファイルの格納指示がなされたときに、該ファイルを複数のチャンクに分割し、夫々のチャンクについて、そのレプリカを複数複製すると共に、同一のチャンクのレプリカが同一のエッジスイッチに接続されたストレージノードに格納されないように、複数の前記レプリカを複数のエッジスイッチに分散して格納する、
データ分散格納システム。
【請求項２】
前記メタサーバは、
前記エッジスイッチと前記ストレージノードとの接続関係を示すエッジスイッチ構成情報を記憶するエッジスイッチ構成情報記憶手段と、
前記エッジスイッチ構成情報を参照して、夫々の前記レプリカの格納先となるストレージノードを決定するレプリカ配置決定手段と、
各前記レプリカを前記レプリカ配置決定手段で決定された前記ストレージノードに格納するレプリカ配置処理手段と、
前記ファイルを構成する各前記チャンクの前記ストレージノードへの配置状況を記憶するレプリカ配置記憶手段と、
を有することを特徴とする請求項１に記載のデータ分散格納システム。
【請求項３】
前記メタサーバは、前記ホストサーバからのファイル取得要求に応答して、要求されたファイルを構成する各チャンクに夫々対応する前記レプリカが格納されている前記ストレージノードと要求元のホストサーバから当該ストレージノードへアクセスするネットワーク経路とを指定した取得情報を、要求元のホストサーバへ通知するレプリカ検索手段をさらに備え、
前記ホストサーバは、前記メタサーバに対して前記ファイル取得要求を送信し、その応答として通知される前記取得情報に基づいて前記ストレージノードをアクセスして各当該レプリカを取得することを特徴とする請求項１または２に記載のデータ分散格納システム。
【請求項４】
前記メタサーバは、前記ホストサーバからの前記ファイル取得要求で要求されたファイルを構成する各チャンクのレプリカの取得先が分散されるように、夫々のチャンクについて、該チャンクの複数のレプリカを夫々格納する複数の前記ストレージノードの中から１つのストレージノードを選択するレプリカ取得先選択手段をさらに備えることを特徴とする請求項３に記載のデータ分散格納システム。
【請求項５】
前記メタサーバは、前記レプリカ取得先選択手段で選択されたストレージノードとファイル取得要求元のホストサーバとの間の複数のネットワーク経路を計算し、前記ホストサーバが各チャンクのレプリカを取得するための経路が分散されるように、前記複数のネットワーク経路の中から１つのネットワーク経路を選択するレプリカ取得ネットワーク経路決定手段をさらに備えることを特徴とする請求項４に記載のデータ分散格納システム。
【請求項６】
前記レプリカ配置決定手段は、ファイルを構成する連続する複数のチャンクのレプリカが異なるネットワーク経路でアクセス可能な異なるストレージノードに配置されるような配置を決定し、
前記レプリカ検索手段は、前記ホストサーバにおける連続する複数のチャンクのレプリカの読み出しが異なるストレージノードおよび異なるネットワーク経路を用いて並列に行えるように、ホストサーバがレプリカを取得するストレージノードおよびそのネットワーク経路を決定することを特徴とする請求項３に記載のデータ分散格納システム。
【請求項７】
複数のエッジスイッチと、前記エッジスイッチ毎に、該エッジスイッチに接続された１つ以上のストレージノードと１つ以上のホストサーバと、前記複数のエッジスイッチを複数のネットワーク経路で接続するネットワークと、前記ネットワークを介して前記複数のエッジスイッチと接続されたメタサーバとを備え、前記ホストサーバが、自身と同一の前記エッジスイッチに接続された各前記ストレージノードにアクセス可能であると共に、前記複数のエッジスイッチを介して他の各前記ストレージノードにアクセス可能であるデータ分散格納システムにおけるデータ分散格納方法であって、
前記メタサーバが、ファイルの格納指示がなされたときに、該ファイルを複数のチャンクに分割し、夫々のチャンクについて、そのレプリカを複数複製すると共に、同一のチャンクのレプリカが同一のエッジスイッチに接続されたストレージノードに格納されないように、複数の前記レプリカを複数のエッジスイッチに分散して格納するファイル格納ステップを実行することを特徴とするデータ分散格納方法。
【請求項８】
前記メタサーバが、前記ホストサーバからのファイル取得要求に応答して、要求されたファイルを構成する各チャンクに夫々対応する前記レプリカが格納されている前記ストレージノードと要求元のホストサーバから当該ストレージノードへアクセスするネットワーク経路とを指定した取得情報を、要求元のホストサーバへ通知するステップをさらに実行することを特徴とする請求項７に記載のデータ分散格納方法。
【請求項９】
複数のエッジスイッチと、前記エッジスイッチ毎に、該エッジスイッチに接続された１つ以上のストレージノードと１つ以上のホストサーバと、前記複数のエッジスイッチを複数のネットワーク経路で接続するネットワークと、前記ネットワークを介して前記複数のエッジスイッチと接続されたメタサーバとを備え、前記ホストサーバが、自身と同一の前記エッジスイッチに接続された各前記ストレージノードにアクセス可能であると共に、前記複数のエッジスイッチを介して他の各前記ストレージノードにアクセス可能であるデータ分散格納システムにおける前記メタサーバを構成するコンピュータに、
ファイルの格納指示がなされたときに、該ファイルを複数のチャンクに分割し、夫々のチャンクについて、そのレプリカを複数複製すると共に、同一のチャンクのレプリカが同一のエッジスイッチに接続されたストレージノードに格納されないように、複数の前記レプリカを複数のエッジスイッチに分散して格納する処理を実行せしめることを特徴とするプログラム。
【請求項１０】
前記メタサーバを構成するコンピュータに、
前記ホストサーバからのファイル取得要求に応答して、要求されたファイルを構成する各チャンクに夫々対応する前記レプリカが格納されている前記ストレージノードと要求元のホストサーバから当該ストレージノードへアクセスするネットワーク経路とを指定した取得情報を、要求元のホストサーバへ通知する処理をさらに実行せしめることを特徴とする請求項９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ分散格納方法およびシステムに関し、特にネットワークに接続された複数のストレージノードにデータとそのレプリカ（複製）を分散して格納するようにしたデータ分散格納方法およびシステムに関する。
【背景技術】
【０００２】
ストリーミング配信サーバのバックエンドのストレージシステムやウェブサーチエンジンのインデックス情報を格納しているストレージシステムなどでは、ディスク装置などの記憶装置を１つ以上備えるストレージノードを、ネットワークで複数接続し、大規模なストレージシステムを構築することが行われている。このようにして構築されたデータ分散格納システムを、以降、ストレージクラスタと呼ぶ。【０００３】
ストレージクラスタにおいてストレージノードの障害によるデータ損失を避けることを目的に、複数のストレージノードにデータを冗長構成にして記憶しておく例が、例えば特許文献１に記載されており、またRAIN（Redundant Array of Independent Nodes）として知られている。図２０は特許文献１に記載されたデータ分散格納システムの概要を示すブロック図であり、２つのストレージノードＳＮ１、ＳＮ２が、ネットワークを構成するスイッチＳＷを通じてホストサーバＨに接続されており、ストレージノードＳＮ１に格納したデータのレプリカをストレージノードＳＮ２に格納することで、何れかのストレージノードに障害が発生してもデータが失われないようにしている。【０００４】
しかし、図２０の構成では、スイッチＳＷおよびホストサーバＨに障害が発生すると、ストレージノードに記憶されたデータを利用したホストサーバによる処理、例えばストリーミング配信サービスや検索サービスなどの処理が停止する。そこで、ストレージノードだけでなく、ホストＨおよびスイッチＳＷも冗長化することで耐障害性を高めたデータ分散格納システムが、特許文献２の図１１に記載されている。図２１は特許文献２に記載されたデータ分散格納システムの概要を示すブロック図であり、２つのストレージノードＳＮ１、ＳＮ２が、ネットワークを構成する２つのスイッチＳＷ１、ＳＷ２を通じて２つのホストサーバＨ１、Ｈ２に接続されており、ストレージノードＳＮ１に格納したデータのレプリカをストレージノードＳＮ２に格納することで、何れかのストレージノードに障害が発生してもデータが失われないようにし、またホストサーバとスイッチを多重化することで、何れかのスイッチおよびホストサーバに障害が発生してもサービスが停止しないようにしている。【０００５】
図２１の構成では、ストレージノードＳＮ１、ＳＮ２は、２つのスイッチＳＷ１、ＳＷ２と接続されるため、それぞれ２つのネットワークインタフェースを備えている。同様に、ストサーバＨ１、Ｈ２は、２つのスイッチＳＷ１、ＳＷ２と接続されるため、それぞれ２つのネットワークインタフェースを備えている。【０００６】
ホストサーバとストレージノードを専用のネットワークで接続するストレージエリアネットワーク（SAN）において、入出力要求およびデータの送受信を行うネットワーク経路の障害性向上を目的に、ネットワークインターフェース、ネットワークスイッチ、経路に冗長性を持たせるマルチパス技術は、例えば非特許文献１に記載されるように公知の技術である。【０００７】
【特許文献１】特許第２８５３６２４号
【特許文献２】特開２００５−３５３０３５号公報
【非特許文献１】SNIA"Multipath Management API" Version 1.0 TWG final(10/1/2004),［online］,［平成１９年１０月２９日検索］、インターネット＜ＵＲＬ：http://www.t11.org/ftp/t11/admin/snia/04-649v0.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００８】
図２１に示した冗長構成によれば、信頼性の高いデータ分散格納システムを構築することができるものの、ストレージノードおよびホストサーバ共に、ネットワークインタフェースを多重に実装する必要があるため、コストが嵩むという課題と、ネットワークインタフェースを増設するための実装スペースを確保しなければならないという課題がある。【０００９】
本発明はこのような従来の課題を解決したものであり、その目的は、ネットワークインタフェースを増設することなしに、データ分散格納システムの耐障害性を高めることにある。
【課題を解決するための手段】
【００１０】
本発明の第１のデータ分散格納システムは、複数のストレージノードと、複数のホストサーバと、それぞれ異なる前記ストレージノードおよび前記ホストサーバに接続される複数のエッジスイッチと、前記複数のエッジスイッチ間を複数のネットワーク経路で接続するネットワークと、多重化されたデータを同じデータが同じエッジスイッチに接続されたストレージノードに格納されないように複数のストレージノードに分散して格納するメタサーバとを備える。【００１１】
本発明の第１のデータ分散格納方法は、複数のストレージノードと、複数のホストサーバと、それぞれ異なる前記ストレージノードおよび前記ホストサーバに接続される複数のエッジスイッチと、前記複数のエッジスイッチ間を複数のネットワーク経路で接続するネットワークとを備えたデータ分散格納システムにおけるデータ分散格納方法であって、メタサーバが、多重化されたデータを同じデータが同じエッジスイッチに接続されたストレージノードに格納されないように複数のストレージノードに分散して格納するファイル格納ステップを含む。【００１２】
本発明の第１のプログラムは、複数のストレージノードと、複数のホストサーバと、それぞれ異なる前記ストレージノードおよび前記ホストサーバに接続される複数のエッジスイッチと、前記複数のエッジスイッチ間を複数のネットワーク経路で接続するネットワークと、多重化されたデータを同じデータが同じエッジスイッチに接続されたストレージノードに格納されないように複数のストレージノードに分散して格納するメタサーバとを備えるデータ分散格納システムにおける前記メタサーバを構成するコンピュータを、前記エッジスイッチと前記ストレージノードとの接続関係を示すエッジスイッチ構成情報を記憶するエッジスイッチ構成情報記憶手段を参照して、格納対象となるファイルを複数に分割し、個々の部分データを多重化し、多重化した部分データが同じエッジスイッチに接続されたストレージノードに格納されないような配置を決定するレプリカ配置決定手段と、該レプリカ配置決定手段で決定された配置に従って、多重化された部分データを前記ストレージノードに格納し、前記ファイルを構成する部分データの前記ストレージノードへの配置状況をレプリカ配置記憶手段に記憶するレプリカ配置処理手段として機能させる。【００１３】
本発明の第２のプログラムは、複数のストレージノードと、複数のホストサーバと、それぞれ異なる前記ストレージノードおよび前記ホストサーバに接続される複数のエッジスイッチと、前記複数のエッジスイッチ間を複数のネットワーク経路で接続するネットワークと、多重化されたデータを同じデータが同じエッジスイッチに接続されたストレージノードに格納されないように複数のストレージノードに分散して格納するメタサーバとを備え、前記メタサーバは、前記ホストサーバからのファイル取得要求に応答して、要求されたファイルを構成する部分データが格納されている前記ストレージノードと要求元のホストサーバから当該ストレージノードへアクセスするネットワーク経路とを指定した取得情報を、要求元のホストサーバへ通知するレプリカ検索手段を備えたデータ分散格納システムにおける前記ホストサーバを構成するコンピュータを、前記メタサーバに対してファイル取得要求を送信し、その応答として通知される前記取得情報に基づいて前記ストレージノードをアクセスして部分データを取得するファイル取得手段として機能させる。【００１４】
本発明の第３のプログラムは、複数のストレージノードと、複数のホストサーバと、それぞれ異なる前記ストレージノードおよび前記ホストサーバに接続される複数のエッジスイッチと、前記複数のエッジスイッチ間を複数のネットワーク経路で接続するネットワークと、多重化されたデータを同じデータが同じエッジスイッチに接続されたストレージノードに格納されないように複数のストレージノードに分散して格納するメタサーバとを備え、前記メタサーバは、前記ホストサーバからのファイル取得要求に応答して、要求されたファイルを構成する部分データが格納されている前記ストレージノードのリストを要求元のホストサーバへ通知するレプリカ検索手段を備えたデータ分散格納システムにおける前記ホストサーバを構成するコンピュータを、前記メタサーバに対してファイル取得要求を送信し、その応答として通知される前記リストに記載されたストレージノードをアクセスして部分データを取得するファイル取得手段として機能させる。
【発明の効果】
【００１５】
本発明によれば、ネットワークインタフェースを増設することなしに、データ分散格納システムの耐障害性を高めることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施の形態の構成例を示すブロック図である。
【図２】本発明の第２の実施の形態の構成例を示すブロック図である。
【図３】ストレージノードの構成例を示すブロック図である。
【図４】ホストサーバの構成例を示すブロック図である。
【図５】メタサーバの構成例を示すブロック図である。
【図６】ネットワークの構成例を示すブロック図である。
【図７】ファイルを構成するチャンクの分散配置例を示す図である。
【図８】本発明の第２の実施の形態の実施例１におけるメタサーバの構成例を示すブロック図である。
【図９】エッジスイッチ構成情報データベースの内容例を示す図である。
【図１０】レプリカ配置データベースの内容例を示す図である。
【図１１】本発明の第２の実施の形態の実施例１におけるホストサーバの構成例を示すブロック図である。
【図１２】本発明の第２の実施の形態の実施例１におけるエッジスイッチ構成情報取得時の処理の流れを示すフローチャートである。
【図１３】本発明の第２の実施の形態の実施例１におけるファイルのデータ格納時の処理の流れを示すフローチャートである。
【図１４】本発明の第２の実施の形態の実施例１におけるファイルのデータ読み出し時のホストサーバ側の処理の流れを示すフローチャートである。
【図１５Ａ】本発明の第２の実施の形態の実施例１におけるファイルのデータ読み出し時のメタサーバ側の処理の流れを示すフローチャートである（その１）。
【図１５Ｂ】本発明の第２の実施の形態の実施例１におけるファイルのデータ読み出し時のメタサーバ側の処理の流れを示すフローチャートである（その２）。
【図１６】本発明の第２の実施の形態の実施例２におけるメタサーバの構成例を示すブロック図である。
【図１７】本発明の第２の実施の形態の実施例２におけるホストサーバの構成例を示すブロック図である。
【図１８Ａ】本発明の第２の実施の形態の実施例２におけるファイルのデータ読み出し時のホストサーバ側の処理の流れを示すフローチャートである（その１）。
【図１８Ｂ】本発明の第２の実施の形態の実施例２におけるファイルのデータ読み出し時のホストサーバ側の処理の流れを示すフローチャートである（その２）。
【図１９】本発明の第２の実施の形態の実施例２におけるファイルのデータ読み出し時のメタサーバ側の処理の流れを示すフローチャートである。
【図２０】本発明に関連する技術のブロック図である。
【図２１】本発明に関連する技術のブロック図である。
【符号の説明】
【００１７】
１００〜１１５…ストレージノード
１２０〜１２３…ホストノード
１２４…メタサーバ
１３０〜１３３…エッジスイッチ（ネットワークスイッチ）
１４０…ネットワーク
【発明を実施するための最良の形態】
【００１８】
次に本発明の実施の形態について図面を参照して詳細に説明する。【００１９】
『第１の実施の形態』
図１を参照すると、本発明の第１の実施の形態に係るデータ分散格納システムは、ストレージノードＳＮ１とホストサーバＨ１とがスイッチＳＷ１に接続され、ストレージノードＳＮ２とホストサーバＨ２とがスイッチＳＷ２に接続され、スイッチＳＷ１とスイッチＳＷ２との間が複数のネットワーク経路Ｌ１、Ｌ２により接続されている。また、ストレージノードＳＮ１に格納されるデータのレプリカが、ストレージノードＳＮ２に格納されている。なお、同じスイッチに接続されるホストサーバとストレージノードとは物理的に別々の計算機で構成されていても良いし、同じ計算機で構成されていても良い。【００２０】
本実施の形態のデータ分散格納システムは、このような構成を備えているため、ストレージノード、スイッチ、ネットワーク経路、ホストサーバの何れか１つに障害が発生しても、残りの要素を使用して処理を継続することができる。【００２１】
例えば、ストレージノードＳＮ１、ＳＮ２の何れか一方、例えばストレージノードＳＮ１に障害が発生しても、ストレージノードＳＮ１に格納されているデータのレプリカが他方のストレージノードＳＮ２に格納されているので、ホストサーバＨ１またはＨ２はストレージノードＳＮ２を利用することで処理を継続することができる。【００２２】
また、スイッチＳＷ１、ＳＷ２の何れか一方、例えばスイッチＳＷ１に障害が発生した場合、ホストサーバＨ１はストレージノードＳＮ１、ＳＮ２をアクセスできなくなるために、ホストサーバＨ１の処理は停止するが、多重化された他方のホストサーバＨ２はスイッチＳＷ２を通じて、多重化された他方のストレージノードＳＮ２をアクセスできるため、システム全体としては処理を継続することができる。【００２３】
また、ネットワーク経路Ｌ１、Ｌ２の何れか一方、例えばネットワーク経路Ｌ１に障害が発生しても、ホストサーバＨ１は、スイッチＳＷ１を通じてストレージノードＳＮ１をアクセスできると共に残りのネットワーク経路Ｌ２およびスイッチＳＷ２を通じてストレージノードＳＮ２をアクセスでき、また、ホストサーバＨ２は、スイッチＳＷ２を通じてストレージノードＳＮ２をアクセスできると共に残りのネットワーク経路Ｌ２およびスイッチＳＷ１を通じてストレージノードＳＮ１をアクセスできるため、処理を継続することができる。【００２４】
また、ホストサーバＨ１、Ｈ２の何れか一方、例えばホストサーバＨ１に障害が発生しても、多重化された他方のホストサーバＨ２により処理を継続することができる。【００２５】
このように本実施の形態に係るデータ分散格納システムは、ストレージノード、スイッチ、ネットワーク経路、ホストサーバの何れもＳＰＯＦ（Single Point of Failure）にならないために、耐障害性を高めることができ、かつ、図２１と比較すると明らかなように、ストレージノードおよびホストサーバ共に、ネットワークインタフェースを多重に実装する必要がない。【００２６】
『第２の実施の形態』
図２を参照すると、本発明の第２の実施の形態に係るデータ分散格納システムは、１６台のストレージノード１００〜１１５と、４台のホストサーバ１２０〜１２３と、ストレージノード１００〜１１５およびホストサーバ１２０〜１２３を４つの組に分けた場合の各組毎に設けられ、その組に含まれるストレージノードとホストサーバとが接続される４台のエッジスイッチ１３０〜１３３と、エッジスイッチ１３０〜１３３間を複数のネットワーク経路で接続するネットワーク１４０と、多重化されたデータを、同じデータが同じエッジスイッチに接続されたストレージノードに格納されないように、複数のストレージノードに分散して格納するメタサーバ１２４とを備えている。【００２７】
本実施の形態では、ストレージノードが１６台、ホストサーバが４台であるが、これらの台数は複数であれば任意で良い。また、同じエッジスイッチに接続されるホストサーバとストレージノードとは物理的に別々の計算機で構成されていても良いし、同じ計算機で構成されていても良い。【００２８】
図３を参照すると、ストレージノード１００は、１以上の記憶部２００と、通信部２０１と、これらに接続されたストレージ制御部２０２とを含んで構成される。記憶部２００は、例えばハードディスク装置で構成され、ホストサーバ上で稼動するユーザアプリケーションプログラムがＩ／Ｏを行うデータ保存の単位であるファイルを記憶する。通信部２０１は、ホストサーバおよびメタサーバとの間の通信を制御する。ストレージ制御部２０２は、ホストサーバおよびメタサーバから与えられるコマンドに従って記憶部２００を制御し、記憶部２００上にファイルを作成したり、作成されたファイルを参照、更新する。他のストレージノード１０１〜１１５も、ストレージノード１００と同様の構成を有する。【００２９】
図４を参照すると、ホストサーバ１２０は、記憶部２１０と、通信部２１１、２１２と、これらに接続されたホスト制御部２１３とを含んで構成される。記憶部２１０は、ホストサーバ１２０で実行するユーザアプリケーションプログラムやその他のプログラム、ストレージノードから読み書きするファイルなどを記憶する。通信部２１１は、メタサーバおよびスレージノードとの間の通信を制御する。通信部２１２は、図２には図示しないインターネット等のネットワークを通じて行われるサービス要求元のユーザ端末との間の通信を制御する。ホスト制御部２１３は、ユーザアプリケーションプログラムを実行することにより、ストリーミング配信サービスやウェブ検索サービスなどの所定のサービスをユーザ端末に対して提供する。【００３０】
図５を参照すると、メタサーバ１２４は、記憶部２２０と、通信部２２１と、入出力部２２２と、これらに接続されたメタ制御部２２３とを含んで構成される。記憶部２２０は、メタサーバ１２４で実行するプログラム、ストレージノードに分散配置されているファイルに関する管理情報などを記憶する。通信部２２１は、ホストサーバおよびストレージノードとの間の通信を制御する。入出力部２２２は、オペレータからの指示や分散配置するファイルなどを入力する。メタ制御部２２３は、プログラムを実行することにより、データ分散格納システム全体の制御を司る。【００３１】
エッジスイッチ１３０〜１３３は、複数の入出力ポートを有し、複数の入出力ポートのペアで同時に並行して通信することができるネットワークスイッチである。このようなエッジスイッチは、例えばファイバー・チャネル・スイッチで実現される。本明細書では、ストレージノードが直接接続されているネットワークスイッチを、それ以外のネットワークスイッチと区別するために、エッジスイッチと呼ぶ。【００３２】
エッジスイッチ１３０〜１３３間を接続する複数経路を持つネットワーク１４０の一例を図６に示す。この例のネットワーク１４０は、ネットワークスイッチ１３４〜１３７とEthernet（登録商標）のVLAN機能とによって実現されている。通常、Ethernetではネットワーク中にループが存在した場合にはネットワークスイッチの持つMACテーブルが不正な状態になり通信障害が発生するため、ループフリーなネットワークトポロジーを維持するための機構（たとえば、Spanning Tree Protocol(STP)）がネットワークスイッチに実装されており、複数経路を持つネットワークトポロジーは構築できないようになっている。図６の構成では、VLANによってネットワークセグメントを分離することによって、物理的には複数経路を持つネットワークトポロジーを取りつつも、論理ネットワークとしてはループフリーなネットワークの実現を利用する。【００３３】
図６の構成例では４つのタグベースVLANを利用しており、各エッジスイッチ１３０〜１３３は、他のエッジスイッチ１３０〜１３３と４通りのネットワーク経路によって相互に接続されている。なお、ここでは、４通りのネットワーク経路によって相互に接続したが、２以上であれば任意の数で良い。【００３４】
各ストレージノード１００〜１１５とエッジスイッチ１３０〜１３３間の接続は、物理的に４つのネットワークインターフェースとケーブルを用いて接続しても良いし、１つのネットワークインターフェースとケーブル上に仮想インターフェースを４つ構築して接続しても良い。後者の方式で接続される場合、ネットワーク１４０は、VLANごとに異なるネットワークアドレスを持っており、またストレージノード１００〜１１５の各仮想インターフェースはそれぞれのネットワークアドレスに対応したIPアドレスを割り当てられており、通信の際にあて先アドレスを使い分けることによって、通信に使用する経路を選択する。【００３５】
図６に示したネットワークトポロジーはVBFT(VLAN Based Fat Tree)であるが、特定のネットワークスイッチや経路がSPOF（Single Point of Failure）になっていなければ、メッシュやハイパーキューブなど他のネットワークトポロジーでもかまわない。また、ネットワークそのものに関しても、EthernetのVLAN機能に限らず、EthernetのLayer3ルーティング、Myricom社のMyrinetなどの複数経路の存在を許すようなネットワークを用いてもよい。【００３６】
なお、ネットワーク１４０は、メタサーバ１２４とストレージサーバ１００〜１１５およびホストサーバ１２０〜１２３とを接続するためにも使用される。図６にはそのためのネットワーク経路が省略されているが、例えば、メタサーバ１２４とエッジスイッチ１３０〜１３３を接続するネットワーク経路をネットワーク１４０に設けても良いし、ネットワーク１４０とは別のネットワークによってメタサーバ１２４と全てのストレージサーバ１００〜１１５を接続するようにしても良い。【００３７】
次に、本実施の形態の動作を説明する。【００３８】
［データ格納時］
まず、１つのファイルを複数の部分データに分割し、個々の部分データを多重化して複数のストレージノードに分散して格納する動作について説明する。以降、部分データのことをチャンクと呼ぶ。ファイルが１つのチャンクからなるときには、ファイル＝チャンクとなる。また、チャンクの複製をレプリカと呼ぶ。本明細書では、複製元と複製先を特に区別することなく、双方ともレプリカと呼ぶ。【００３９】
メタサーバ１２４は、外部オペレータからファイルの格納要求を受けると、ファイルをチャンクに分割し、各チャンクのレプリカを複数生成し、同一のチャンクのレプリカが同一のエッジスイッチ１３０〜１３３に接続されたストレージノードに配置されないように、言い換えると異なる２以上のエッジスイッチに接続された複数のストレージノードに分散するように配置する。【００４０】
ファイルの格納例を図７に示す。この例は、本実施の形態をストリーム配信サーバのバックエンドストレージとして利用した場合のものである。ストリーム配信の対象となるコンテンツファイル（例えばビデオファイル）をチャンク０〜チャンク７の８つのチャンクに分割し、各々のチャンク０〜７のレプリカを２つ生成し、チャンク０〜３の２つのレプリカのうち一方のレプリカをエッジスイッチ１３０に接続されたストレージノード１００〜１０３に、他方のレプリカをエッジスイッチ１３１に接続されたストレージノード１０４〜１０７に格納している。また、チャンク４〜７の２つのレプリカのうち一方のレプリカをエッジスイッチ１３２に接続されたストレージノード１０８〜１１１に、他方のレプリカをエッジスイッチ１３３に接続されたストレージノード１１２〜１１５に格納している。【００４１】
［ファイル読み出し時］
次に、ホストサーバ１２０〜１２３が、複数のストレージノードに分散して格納されたファイルを読み出すときの動作を説明する。【００４２】
ホストサーバ１２０〜１２３は、ファイルの読み出しを行う場合、メタサーバ１２４に対して問い合わせを行うことにより、ファイルを構成する各チャンクのレプリカがどのストレージノードに存在しているかを認識し、ファイルを構成するチャンクを格納するストレージノードからチャンクを取得し、取得した複数のチャンクをつなげることによってファイルを再構成する。そして、ストリーム配信サーバの場合には、再構築したファイルの配信を行う。ここで、ホストサーバ１２０〜１２３は、ファイルを構成する複数のチャンクを同時に異なるストレージノード、重ならないネットワーク経路を用いて取得することにより、スループットを向上させることができる。また、同一チャンクに関しても、より近いレプリカを利用することでスループットを向上させることができる。さらに、チャンクのレプリカがエッジスイッチをまたがって格納されているために、ネットワーク上のいかなる箇所で障害が発生しても、障害箇所がレプリカ数を下回っている限りにおいては、読み出し可能である。【００４３】
・実施例１
次に本発明の第２の実施の形態の実施例１について詳細に説明する。【００４４】
図８を参照すると、実施例１におけるメタサーバ１２４は、エッジスイッチ構成情報データベース３０１およびレプリカ配置データベース３０２を記憶部２２０に備え、エッジスイッチ構成取得部３１１、レプリカ配置決定部３１２、レプリカ配置処理部３１３、レプリカ検索部３１４、レプリカ取得先選択部３１５およびレプリカ取得ネットワーク経路決定部３１６をメタ制御部２２３に備えている。【００４５】
エッジスイッチ構成情報データベース３０１は、図９に示すように、エッジスイッチ１３０〜１３３毎のエッジスイッチ構成情報３２１を保持する。エッジスイッチ構成情報３２１は、エッジスイッチ識別子３２２と、このエッジスイッチ識別子３２２で一意に識別されるエッジスイッチに接続されているストレージノードの識別子のリスト３２３とから構成される。【００４６】
レプリカ配置データベース３０２は、図１０に示すように、ファイル毎のファイル情報３３１と、チャンク毎のチャンク情報３３２とを保持する。ファイル情報３３１は、ファイル識別子３３３と、このファイル識別子３３３で一意に識別されるファイルを構成するチャンクの識別子のリスト３３４とから構成される。チャンク情報３３２は、チャンク識別子３３５と、このチャンク識別子３３５で一意に識別されるチャンクの配置先ストレージノードの識別子のリスト３３６とから構成される。【００４７】
エッジスイッチ構成取得部３１１は、エッジスイッチ構成情報を取得して、エッジスイッチ構成情報データベース３０１に格納する処理を行う。【００４８】
レプリカ配置決定部３１２は、入出力部２２４から入力された格納対象ファイルの各チャンクを、どのストレージノードに配置（格納）するかを決定する処理を行う。【００４９】
レプリカ配置処理部３１３は、レプリカ配置決定部３１２で決定された配置先に従って、格納対象ファイルの各チャンクをストレージノードに格納する処理を行う。【００５０】
レプリカ検索部３１４は、ホストサーバからファイル取得要求を受信し、ファイル取得要求で指定された取得対象ファイルを構成する各チャンクを取得するためのレプリカ取得情報をホストサーバに対して通知する。レプリカ取得情報には、チャンクを取得するストレージノードの識別子および取得するネットワーク経路が含まれる。【００５１】
レプリカ取得先選択部３１５は、複数のストレージノードに分散して配置されているチャンクの複数のレプリカの中から取得対象とするレプリカを選択する処理を行う。選択の方法としては、例えば、ホストサーバからのレプリカ取得が特定のストレージノードに集中せず負荷分散されるように、例えば履歴情報を元にラウンドロビンさせることでレプリカ取得先を選択する。勿論、選択の方法はこのような方法に限定されず、任意の方法を使用することができる。【００５２】
レプリカ取得ネットワーク経路決定部３１６は、ホストサーバからストレージノードに至る複数のネットワーク経路の計算と、この計算で得られた複数のネットワーク経路の中から実際に使用するネットワーク経路を選択する処理とを行う。選択の方法としては、複数のホストサーバからのレプリカ取得が特定のネットワーク経路に集中せずに負荷分散され、好ましくはそれぞれ異なるネットワーク経路が同時に使用されるように選択する。勿論、選択の方法はこのような方法に限定されず、任意の方法を使用することができる。【００５３】
図１１を参照すると、実施例１におけるホストサーバ１２０〜１２３は、再構成ファイル３４１を記憶部２１０に備え、ファイル取得部３５１およびサービス提供部３５２をホスト制御部２１３に備えている。【００５４】
ファイル取得部３５１は、ストリーミング配信の対象となるコンテンツファイルなどのファイルを構成するチャンクを取得するためのチャンク取得情報をメタサーバに問い合わせ、取得したチャンク取得情報に従ってストレージノードをアクセスし、取得したチャンクをつなげて記憶部２１０上に再構成ファイル３４１を作成する処理を行う。【００５５】
サービス提供部３５２は、再構成ファイル３４１を記憶部２１０から読み込み、通信部２１２を通じてユーザ端末へ配信すると言ったサービスを実行する。【００５６】
次に本実施例１の動作を説明する。【００５７】
［エッジスイッチ構成情報の取得］
図１２を参照すると、メタサーバ１２４のエッジスイッチ構成取得部３１１は、システム構成変更時（システムの初回稼働開始時を含む）もしくは定期的に、システムに存在するストレージノード１００〜１１５とそれが接続されているエッジスイッチ１３０〜１３３の組み合わせの情報をエッジスイッチ構成情報として収集し（ステップＳ１０１）、エッジスイッチ構成情報データベース３０１に格納する（ステップＳ１０２）。【００５８】
具体的なエッジスイッチ構成情報の取得方法としては、（１）静的に設定ファイルなどに記述しておく、（２）エッジスイッチがＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）に対応していて、各ネットワークポートに接続されている機器のＩＰアドレスもしくはＭＡＣアドレスなどが取得可能ならば、その情報を利用する、（３）各ストレージノードにプローブを入れておき、各ノード間の通信に要する時間（レイテンシ）を元に同一エッジスイッチに接続されているストレージノードを推定する、などの方法がある。【００５９】
［データ格納時］
図１３を参照すると、メタサーバ１２４のレプリカ配置決定部３１２は、入出力部２２４を通じて外部オペレータからファイル格納要求を受け取ると、格納対象となるファイル（ターゲットファイル）をチャンクに分割する（ステップＳ２０１）。次に、エッジスイッチ構成情報データベース３０１を参照して、ストレージノードとその接続されたエッジスイッチとの関係を確認し、同一チャンクの複数のレプリカが同一エッジスイッチに接続されるストレージノードに重ならないようにレプリカの格納先を決定する（ステップＳ２０２）。【００６０】
本実施の形態のように、各エッジスイッチ１３０〜１３３に接続されているストレージノードの数が一定の場合、例えば以下のようなルールに従ってレプリカの格納先を決定することができる。【００６１】
（ａ）レプリカ配置決定方法１
エッジスイッチごとのストレージノード数を一定値p、レプリカ数をrとしたとき、
1.リーダーノードがプライマリノード（m0）を決定する。
2.mi+1＝（mi+p）％n（nは全ストレージノード数）をセカンダリレプリカノードに決定する。
3.指定した数rのレプリカが選ばれていれば終了し、未だ選ばれていなければ段階2へ戻る。【００６２】
他方、各エッジスイッチに接続されるストレージノード数が一定でない場合には、例えば以下のようなルールに従ってレプリカの格納先を決定することができる。【００６３】
（ｂ）レプリカ配置決定方法２
エッジスイッチiに接続されるストレージノード数をp(i)、レプリカ数をrとしたとき、
1.リーダーノードがプライマリノード（m0）を決定する。
2.mi+1＝（mi+p(j)）％n（jはΣp(j)＞miとなる最小のj）をセカンダリレプリカノードに決定する。
3.指定した数rのレプリカが選ばれていれば終了し、未だ選ばれていなければ段階2へ戻る。【００６４】
勿論、レプリカ配置決定方法は上述した例に限らないことは言うまでもない。【００６５】
レプリカ配置決定部３１２によってレプリカの配置が決定すると、レプリカ配置処理部３１３は、レプリカ配置決定部３１２の決定に従って、各レプリカをストレージノードに格納する（ステップＳ２０３）。レプリカ配置決定部３１２は、レプリカ配置処理部３１３のレプリカ配置処理の完了を待って、レプリカ配置データベース３０２を更新する（ステップＳ２０４）。具体的には、図１０に示したように、今回のファイルの識別子３３３とそのチャンクの識別子のリスト３３４とから構成されるファイル情報３３１と、チャンク識別子３３５とその配置先ストレージノードの識別子のリスト３３６とから構成されるチャンク毎のチャンク情報３３２とをレプリカ配置データベース３０２に登録する。【００６６】
［データ読み出し時］
図１４を参照すると、各ホストサーバ１２０〜１２３のファイル取得部３５１は、取得対象とするファイルの識別子を指定したファイル取得要求をメタサーバ１２４へ送信し（ステップＳ３０１）、メタサーバ１２４からの応答を待つ。【００６７】
図１５Ａと図１５Ｂは、本実施例におけるファイルのデータ読み出し時のメタサーバ側の処理の流れを示すフローチャートである。図示のように、メタサーバ１２４のレプリカ検索部３１４は、ホストサーバから送信されたファイル取得要求を受信すると（ステップＳ４０１）、ファイル識別子をキーにレプリカ配置データベース３０２を検索して、ホストサーバが取得を要求したファイルの識別子３３３を含むファイル情報３３１からそのファイルを構成するチャンクの識別子のリスト３３４を取得する（ステップＳ４０２）。レプリカ検索部３１４は、若し、このリスト３３４が取得できない場合には（ステップＳ４０３でＮＯ）、要求されたファイルが本データ分散格納システムに格納されていないことを意味するので、ファイル発見不能をホストサーバに通知し（ステップＳ４１９）、ファイル取得要求受信時の処理を終える。【００６８】
チャンク識別子のリスト３３４を取得した場合、次にレプリカ検索部３１４は、取得したリストに記述された先頭のチャンクに注目し（ステップＳ４０４）、注目したチャンクの識別子をキーにレプリカ配置データベース３０２を検索して、そのチャンク識別子を含むチャンク情報３３２からそのチャンクの配置先ストレージノードの識別子のリスト３３６であるレプリカリストを取得する（ステップＳ４０５）。次にレプリカ検索部３１４は、この取得したリストが空でなければ（ステップＳ４０６でＮＯ）、そのリストをレプリカ取得先選択部３１５に伝達し、レプリカ取得先選択部３１５は、ストレージノードの負荷が分散されるように、リストの中から１つの配置先ストレージノードの識別子を選択し、結果をレプリカ検索部３１４に通知する（ステップＳ４０７）。また、レプリカ検索部３１４は、リストが空であれば（ステップＳ４０６でＹＥＳ）、ファイル発見不能をホストサーバに通知し（ステップＳ４１９）、ファイル取得要求受信時の処理を終える。【００６９】
次にレプリカ検索部３１４は、レプリカ取得先選択部３１５から通知された配置先ストレージノードと要求元のホストサーバの識別子をレプリカ取得ネットワーク経路決定部３１６に伝達し、レプリカ取得ネットワーク経路決定部３１６は、要求元のホストサーバから配置先ストレージノードに至る複数のネットワーク経路を計算し、ネットワーク経路集合に記憶する（ステップＳ４０８）。続いてレプリカ取得ネットワーク経路決定部３１６は、ネットワーク経路の負荷が分散されるように、ネットワーク経路集合から１つのネットワーク経路を選択し、レプリカ検索部３１４へ通知する（ステップＳ４１０）。【００７０】
レプリカ検索部３１４は、レプリカ取得先選択部３１５から通知された配置先ストレージノードとレプリカ取得ネットワーク経路決定部３１６から通知されたネットワーク経路と取得対象とするチャンクの識別子とを含むレプリカ取得情報を、要求元のホストサーバへ通知する（ステップＳ４１１）。そして、ホストサーバからの応答を待つ。【００７１】
ホストサーバのファイル取得部３５１は、ファイル取得要求に対する応答としてメタサーバ１２４からレプリカ取得情報を受信すると（図１４のステップＳ３０２でＹＥＳ）、このレプリカ取得情報で指定されたネットワーク経路を通じて、同じくレプリカ取得情報で指定された配置先ストレージノードをアクセスしてチャンクを取得する（ステップＳ３０３）。そして、取得に成功すれば（ステップＳ３０４でＹＥＳ）、取得したチャンクで再構成ファイル３４１の一部を再構成し（ステップＳ３０５）、取得成功をメタサーバ１２４へ通知する（ステップＳ３０６）。他方、ネットワークエラーや配置先ストレージノードの障害などによってチャンクの取得に失敗した場合（ステップＳ３０４でＮＯ）、失敗した原因を付加して取得失敗をメタサーバ１２４へ通知する（ステップＳ３０７）。【００７２】
また、ファイル取得部３５１は、ファイル取得要求に対する応答としてメタサーバ１２４からファイル発見不能の通知を受信すると（ステップＳ３０９でＹＥＳ）、要求したファイルの読み出しに失敗したことを意味し、ファイル取得の異常終了を行う。【００７３】
メタサーバ１２４のレプリカ検索部３１４は、レプリカ取得情報に対する応答としてホストサーバから取得成功が通知されると（ステップＳ４１２でＹＥＳ）、要求されたファイルの最後のチャンクまで読み出しを終えたかどうかを判定し、終えていなければ（ステップＳ４１３でＮＯ）、ステップＳ４０２で取得したチャンク識別子のリスト中の次のチャンクに注目を移して（ステップＳ４１４）、ステップＳ４０５に戻り、上述した処理と同様の処理を繰り返す。最後のチャンクまで読み出しを終えていれば（ステップＳ４１３でＹＥＳ）、ファイル読み出し完了をホストサーバに通知し（ステップＳ４１５）、ファイル取得要求受信時の処理を終える。このファイル読み出し完了の通知を受信したホストサーバのファイル取得部３５１は、ファイル取得の正常終了となる（ステップＳ３０８でＹＥＳ）。【００７４】
また、レプリカ検索部３１４は、レプリカ取得情報に対する応答としてホストサーバから取得失敗が通知されると（ステップＳ４１２でＮＯ）、失敗の原因がネットワークエラーかどうかを判別し、ネットワークエラーであれば（ステップＳ４１６でＹＥＳ）、レプリカ取得ネットワーク経路決定部３１６に次のネットワーク経路の選択を指示する。レプリカ取得ネットワーク経路決定部３１６は、前回選択したネットワーク経路をネットワーク経路集合から削除し（ステップＳ４１７）、残りのネットワーク経路から１つのネットワーク経路を選択してレプリカ検索部３１４へ通知する。また、残りのネットワーク経路が１つも無ければ、その旨をレプリカ検索部３１４へ通知する。レプリカ検索部３１４は、ネットワーク経路が通知されると、この通知されたネットワーク経路とステップＳ４０７においてレプリカ取得先選択部３１５で選択されていた取得先ストレージノードとを含むレプリカ取得情報をホストサーバへ通知し（ステップＳ４１１）、その応答を再び待つ。【００７５】
他方、レプリカ検索部３１４は、残りのネットワーク経路が無い旨の通知をレプリカ取得ネットワーク経路決定部３１６から受けると、注目中チャンクのレプリカリストから今回の取得先ストレージノードを削除し（ステップＳ４１８）、リストが空でなければ、リストをレプリカ取得先選択部３１５に伝達し、レプリカ取得先選択部３１５はそのリスト中から１つの取得先ストレージノードを選択してレプリカ検索部３１４へ通知する（ステップＳ４０７）。以降、上述した処理と同様の処理が行われ、ホストサーバに対してレプリカ取得情報が通知される。また、リストが空であれば、要求されたファイルは本データ分散格納システムに格納されている可能性はあるがアクセス不能であることを意味するので、ファイル発見不能をホストサーバに通知し（ステップＳ４１９）、ファイル取得要求受信時の処理を終える。【００７６】
次に本実施例１の効果を説明する。【００７７】
本実施例１によれば、ストレージノード、エッジスイッチ、ネットワーク経路、ホストサーバの何れか１つに障害が発生しても、残りの要素を使用して処理を継続することができる。【００７８】
例えば、ストレージノード１００〜１１５の何れか１つ、例えばストレージノード１００に障害が発生しても、ストレージノード１００に格納されているデータのレプリカが別のストレージノード１０４（図７の例の場合）に格納されているので、ホストサーバ１２０〜１２３はストレージノード１０４を利用することで処理を継続することができる。【００７９】
また、エッジスイッチ１３０〜１３３の何れかのエッジスイッチ、例えばエッジスイッチ１３０に障害が発生した場合、ホストサーバ１２０はストレージノード１００〜１５５をアクセスできなくなるために処理が停止し、またストレージノード１００〜１０３を他のホストサーバ１２１〜１２３からアクセスできなくなるが、他のホストサーバ１２１〜１２３はエッジスイッチ１３１〜１３３を通じて、多重化された他のストレージノード１０４〜１１５をアクセスできるため、システム全体としては処理を継続することができる。【００８０】
また、ネットワーク１４０中の何れかのネットワーク経路に障害が発生しても、各ホストサーバ１２０〜１２３はネットワークの残りのネットワーク経路を通じて、自ホストサーバが接続されたエッジスイッチ以外のエッジスイッチに接続されたストレージノードをアクセスできるため、処理を継続することができる。【００８１】
また、ホストサーバ１２０〜１２３の何れかのホストサーバに障害が発生しても、多重化された他方のホストサーバにより処理を継続することができる。【００８２】
このように本実施例に係るデータ分散格納システムは、ストレージノード、スイッチ、ネットワーク経路、ホストサーバの何れもＳＰＯＦ（Single Point of Failure）にならないために、耐障害性を高めることができ、かつ、図２に示す接続構成から明らかなように、ストレージノード１００〜１１５およびホストサーバ１２０〜１２３は、ネットワークインタフェースを多重に実装する必要がない。【００８３】
・実施例２
図１６を参照すると、実施例２におけるメタサーバ１２４は、図８に示した実施例１におけるメタサーバと比較して、レプリカ取得先選択部３１５およびレプリカ取得ネットワーク経路決定部３１６が取り除かれている点と、レプリカ検索部３１４がレプリカ検索部３１７に置き換えられている点で相違する。【００８４】
レプリカ検索部３１７は、ホストサーバからファイル取得要求を受信し、ファイル取得要求で指定された取得対象ファイルを構成する各チャンクの配置先ストレージノードの識別子のリストであるレプリカリストをホストサーバに対して通知する。【００８５】
図１７を参照すると、実施例２におけるホストサーバ１２０〜１２３は、図１１に示した実施例１におけるホストサーバと比較して、ファイル取得部３５１がファイル取得部３５３に置き換えられている点と、レプリカ取得先選択部３５４およびレプリカ取得ネットワーク経路決定部３５５が新たに追加されている点で相違する。【００８６】
レプリカ取得先選択部３５４は、複数のストレージノードに分散して配置されているチャンクの複数のレプリカの中から取得対象とするレプリカを選択する処理を行う。選択の方法としては、例えば、ホストサーバからのレプリカ取得が特定のストレージノードに集中せず負荷分散されるように、例えば履歴情報を元にラウンドロビンさせることでレプリカ取得先を選択する。勿論、選択の方法はこのような方法に限定されず、任意の方法を使用することができる。【００８７】
レプリカ取得ネットワーク経路決定部３５５は、ホストサーバからストレージノードに至る複数のネットワーク経路の計算と、この計算で得られた複数のネットワーク経路の中から実際に使用するネットワーク経路を選択する処理とを行う。選択の方法としては、ホストサーバからのレプリカ取得が特定のネットワーク経路に集中せずに負荷分散されるように選択する。勿論、選択の方法はこのような方法に限定されず、任意の方法を使用することができる。【００８８】
ファイル取得部３５３は、ストリーミング配信の対象となるコンテンツファイルなどのファイルを構成する各チャンクの配置先ストレージノードの識別子のリストであるレプリカリストをメタサーバに問い合わせ、取得したレプリカリストに記載されたストレージノードをアクセスし、取得したチャンクをつなげて記憶部２１０上に再構成ファイル３４１を作成する処理を行う。【００８９】
次に本実施例２の動作を説明する。本実施例２の動作のうち、データ読み出し時以外の動作は実施例１と同じなので、以下ではデータ読み出し時の動作を説明する。【００９０】
［データ読み出し時］
図１８Ａと図１８Ｂは、本実施例におけるファイルのデータ読み出し時のホストサーバ側の処理の流れを示すフローチャートである。図示のように、各ホストサーバ１２０〜１２３のファイル取得部３５３は、取得対象とするファイルの識別子を指定したファイル取得要求をメタサーバ１２４へ送信し（ステップＳ５０１）、メタサーバ１２４からの応答を待つ。【００９１】
図１９を参照すると、メタサーバ１２４のレプリカ検索部３１７は、ホストサーバから送信されたファイル取得要求を受信すると（ステップＳ６０１）、ファイル識別子をキーにレプリカ配置データベース３０２を検索して、ホストサーバが取得を要求したファイルの識別子３３３を含むファイル情報３３１からそのファイルを構成するチャンクの識別子のリスト３３４を取得する（ステップＳ６０２）。レプリカ検索部３１７は、若し、このリスト３３４が取得できない場合には（ステップＳ６０３でＮＯ）、要求されたファイルが本データ分散格納システムに格納されていないことを意味するので、ファイル発見不能をホストサーバに通知し（ステップＳ６１１）、ファイル取得要求受信時の処理を終える。【００９２】
チャンク識別子のリスト３３４を取得した場合、次にレプリカ検索部３１７は、取得したリストに記述された先頭のチャンクに注目し（ステップＳ６０４）、注目したチャンクの識別子をキーにレプリカ配置データベース３０２を検索して、そのチャンク識別子を含むチャンク情報３３２からそのチャンクの配置先ストレージノードの識別子のリスト（レプリカリスト）３３６を取得する（ステップＳ６０５）。次にレプリカ検索部３１７は、この取得したレプリカリスト３３６を要求元のホストサーバへ通知する（ステップＳ６０６）。そして、ホストサーバからの応答を待つ。【００９３】
ホストサーバのファイル取得部３５３は、ファイル取得要求に対する応答としてメタサーバ１２４からファイル発見不能通知を受信すると（図１８ＡのステップＳ５１６でＹＥＳ）、ファイル取得要求受信時の処理を異常終了とする。他方、ファイル取得要求に対する応答としてメタサーバ１２４からレプリカリストを受信すると（図１８ＡのステップＳ５０２でＹＥＳ）、この取得したリストが空でなければ（ステップＳ５０３でＮＯ）、そのリストをレプリカ取得先選択部３５４に伝達する。レプリカ取得先選択部３５４は、ストレージノードの負荷が分散されるようにリストの中から１つの配置先ストレージノードの識別子を選択し、結果をファイル取得部３５３に通知する（ステップＳ５０４）。また、ファイル取得部３５３は、リストが空であれば（ステップＳ５０３でＹＥＳ）、取得失敗をメタサーバに通知し（ステップＳ５１７）、ファイル取得要求の受信時の処理を異常終了とする。【００９４】
次にファイル取得部３５３は、レプリカ取得先選択部３５４から通知された配置先ストレージノードをレプリカ取得ネットワーク経路決定部３５５に伝達する。レプリカ取得ネットワーク経路決定部３５５は、自ホストサーバから配置先ストレージノードに至る複数のネットワーク経路を計算し、ネットワーク経路集合に記憶する（ステップＳ５０５）。続いてレプリカ取得ネットワーク経路決定部３５５は、ネットワーク経路の負荷が分散されるように、ネットワーク経路集合から１つのネットワーク経路を選択し、ファイル取得部３５３へ通知する（ステップＳ５０７）。【００９５】
ファイル取得部３５３は、レプリカ取得先選択部３５４から通知された配置先ストレージノードとレプリカ取得ネットワーク経路決定部３５５から通知されたネットワーク経路と取得対象とするチャンクの識別子とを含むレプリカ取得情報に基づいて、配置先ストレージノードをアクセスしてチャンクを取得する（ステップＳ５０８）。そして、取得に成功すれば（ステップＳ５０９でＹＥＳ）、取得したチャンクで再構成ファイル３４１の一部を再構成し（ステップＳ５１０）、取得成功をメタサーバ１２４へ通知する（ステップＳ５１１）。他方、ネットワークエラーや配置先ストレージノードの障害などによってチャンクの取得に失敗した場合（ステップＳ５０９でＮＯ）、失敗の原因がネットワークエラーかどうかを判別し（ステップＳ５１２）、ネットワークエラーであれば、レプリカ取得ネットワーク経路決定部３５５に次のネットワーク経路の選択を指示する。レプリカ取得ネットワーク経路決定部３５５は、前回選択したネットワーク経路をネットワーク経路集合から削除し（ステップＳ５１３）、残りのネットワーク経路から１つのネットワーク経路を選択してファイル取得部３５３へ通知する。また、残りのネットワーク経路が１つも無ければ、その旨をファイル取得部３５３へ通知する。ファイル取得部３５３は、ネットワーク経路が通知されると、この通知されたネットワーク経路とステップＳ５０４においてレプリカ取得先選択部３５４で選択されていた取得先ストレージノードとを含むレプリカ取得情報に基づいて、配置先ストレージノードをアクセスしてチャンクを取得する（ステップＳ５０８）。以降、チャンクの取得に成功するか、ネットワーク経路集合が空になるまで同様の動作が繰り返される。そして、最後のネットワーク経路によっても取得に成功しなかった場合（ステップＳ５０６でＹＥＳ）、ファイル取得部３５３は、注目中チャンクのレプリカリストから今回の取得先ストレージノードを削除し（ステップＳ５１４）、リストが空でなければ、リストをレプリカ取得先選択部３５４に伝達し、レプリカ取得先選択部３５４はそのリスト中から１つの取得先ストレージノードを選択してファイル取得部３５３へ通知する（ステップＳ５０４）。以降、チャンクの取得に成功するか、レプリカリストが空になるまで同様の動作が繰り返される。そして、最後のストレージノードからもチャンクの取得に成功しなかった場合（ステップＳ５０３でＹＥＳ）、当該チャンクは本データ分散格納システムに格納されている可能性はあるがアクセス不能であることを意味するので、取得失敗をメタサーバに通知し（ステップＳ５１７）、ファイル取得要求の処理を異常終了とする。【００９６】
メタサーバ１２４のレプリカ検索部３１７は、レプリカ取得情報に対する応答としてホストサーバから取得成功が通知されると（ステップＳ６０７でＹＥＳ）、要求されたファイルの最後のチャンクまで読み出しを終えたかどうかを判定し（ステップＳ６０８）、終えていなければ、ステップＳ６０２で取得したチャンク識別子のリスト中の次のチャンクに注目を移して（ステップＳ６０９）、ステップＳ６０５に戻り、上述した処理と同様の処理を繰り返す。最後のチャンクまで読み出しを終えていれば（ステップＳ６０８でＹＥＳ）、ファイル読み出し完了をホストサーバに通知し（ステップＳ６１０）、ファイル取得要求受信時の処理を正常終了とする。このファイル読み出し完了の通知を受信したホストサーバのファイル取得部３５３は、ファイル取得要求の処理が正常終了となる（ステップＳ５１５でＹＥＳ）。【００９７】
また、レプリカ検索部３１７は、レプリカリストに対する応答としてホストサーバから取得失敗が通知されると（ステップＳ６０３でＮＯ）、ファイル発見不能をホストサーバに通知する（ステップＳ６１１）。ホストサーバのファイル取得部３５３は、ファイル発見不能の通知をメタサーバから受信すると（ステップＳ５１６でＹＥＳ）、ファイル取得要求の処理を異常終了とする。【００９８】
次に本実施例２の効果を説明する。【００９９】
本実施例２によれば、実施例１と同様の効果を得ることができると同時に、実施例１においてメタサーバに設けていたレプリカ取得先選択部およびレプリカ取得ネットワーク経路決定部をホストサーバに設けるようにしたことにより、メタサーバのレプリカ取得先を選択するコスト、レプリカ取得ネットワーク経路を計算するコストを軽減でき、メタサーバのスケーラビリティが向上する。また、ホストサーバは、メタサーバからレプリカリストを受信しているため、レプリカリスト中の何れかのストレージノードからチャンクのレプリカを取得することができなかった場合でも、実施例１のようにメタサーバに再度問い合わせを行う必要がなく、問い合わせに要するオーバヘッドを軽減することができる。【０１００】
『その他の実施例』
実施例１および実施例２では、ホストサーバは、ファイルを構成するチャンクをその先頭のチャンクから最後のチャンクまで順番に、１チャンクずつ、直前のチャンクの取得完了後に次のチャンクの読み出しを開始したが、連続する複数のチャンクの読み出しを並行して行うようにしても良い。例えば、図７に示したようにファイルのチャンクが配置されている場合、ホストサーバ１２０は、ストレージノード１００からチャンク０の読み出しを開始し、そのチャンク０の読み出しの完了を待たずに、ストレージノード１０５からチャンク１の読み出しを開始することで、連続する複数のチャンクの読み出しを異なるストレージノード、異なるネットワーク経路を用いて並列に行うようにしても良い。このような処理によって、特にストリーミングデータの送出時に顕著なチャンクの連続読み出しを行った際に、スループットの向上が達成でき、ネットワークボトルネックを生じさせないストレージクラスタを構築できる。【０１０１】
上述したような処理を可能にするために、メタサーバ１２４のレプリカ配置決定部３１２は、連続するチャンクが異なるネットワーク経路でアクセス可能な異なるストレージノードに配置するように、レプリカの配置を決定する。また、実施例１ではメタサーバのレプリカ検索部３１４、レプリカ取得先選択部３１５およびレプリカ取得ネットワーク経路決定部３１６が、また実施例２ではホストサーバのファイル取得部３５３、レプリカ取得先選択部３５４およびレプリカ取得ネットワーク経路決定部３５５が、連続する複数のチャンクの読み出しを異なるストレージノードおよび異なるネットワーク経路を用いて並列に行えるように、チャンクを取得するストレージノードおよびそのネットワーク経路を決定する。【０１０２】
以上、実施形態（及び実施例）を参照して本願発明を説明したが、本願発明は上記実施形態（及び実施例）に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１０３】
この出願は、２００７年１２月２８日に出願された日本出願特願２００７−３３９５７５を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
【産業上の利用可能性】
【０１０４】
本発明によれば、高信頼、高スループット、低コストを要求する状況におけるストレージ、例えば、ストリーミング配信サーバのバックエンドとしてのストレージ、メールデータのリポジトリ、などといった用途に適用できる。
【図１】
0005445138.tif 000002
【図２】
0005445138.tif 000003
【図３】
0005445138.tif 000004
【図４】
0005445138.tif 000005
【図５】
0005445138.tif 000006
【図６】
0005445138.tif 000007
【図７】
0005445138.tif 000008
【図８】
0005445138.tif 000009
【図９】
0005445138.tif 000010
【図１０】
0005445138.tif 000011
【図１１】
0005445138.tif 000012
【図１２】
0005445138.tif 000013
【図１３】
0005445138.tif 000014
【図１４】
0005445138.tif 000015
【図１５Ａ】
0005445138.tif 000016
【図１５Ｂ】
0005445138.tif 000017
【図１６】
0005445138.tif 000018
【図１７】
0005445138.tif 000019
【図１８Ａ】
0005445138.tif 000020
【図１８Ｂ】
0005445138.tif 000021
【図１９】
0005445138.tif 000022
【図２０】
0005445138.tif 000023
【図２１】
0005445138.tif 000024