(57)【特許請求の範囲】
【請求項１】
複数のストレージ装置を含む分散ストレージへのアクセスを管理するためのサーバであって、前記サーバは、少なくとも１つの他の割当マネージャと通信するように構成された割当マネージャを含み、他の割当マネージャは各々他のサーバによって与えられ、これら割当マネージャのうちどれが、データを保存する際に用いられることになる分散ストレージの部分を選択するマスター割当マネージャであるかを判断するよう構成されている、サーバ。
【請求項２】
前記分散ストレージにデータを保存する要求をクライアントから受取るための第１の制御部と、
前記データを保存する際に用いる前記分散ストレージの前記部分を選択するための第２の制御部とを含み、前記第２の制御部は、少なくとも１つの他の第２の制御部と通信し、これら第２の制御部のうちどれが、用いられることになる分散ストレージの前記部分を選択するかを判断するよう構成されている、請求項１に記載のサーバ。
【請求項３】
用いられることになる分散ストレージの前記部分を別のサーバが選択することになるという判断に応答して、前記他のサーバから前記分散ストレージの前記部分の識別情報を受取るよう構成されている、請求項１または請求項２に記載のサーバ。
【請求項４】
用いられることになる分散ストレージの前記部分を自身が選択することになるという判断に応答して、分散ストレージの前記部分を選択するよう構成されている、請求項１または請求項２に記載のサーバ。
【請求項５】
前記分散ストレージの前記部分の中における前記ストレージ装置のうちの１つを選択するよう構成されている、先行する請求項のいずれかに記載のサーバ。
【請求項６】
前記第２の制御部からの命令に応答して、分散ストレージの前記部分の中の前記ストレージ装置のうちの１つを選択するための第３の制御部をさらに含む、請求項２に従属する場合の請求項５に記載のサーバ。
【請求項７】
前記ファイルが１つの前記ストレージ装置に保存された後、前記分散ストレージの前記部分の中の他のストレージ装置において前記データを複製させるよう構成されている、請求項５または請求項６に記載のサーバ。
【請求項８】
前記データが保存された後、前記データに関する情報をメタデータサーバに送信するよう構成されている、先行する請求項のいずれかに記載のサーバ。
【請求項９】
前記データに対応する仮想ファイル識別子を前記メタデータサーバから受取るよう構成されている、請求項８に記載のサーバ。
【請求項１０】
前記仮想ファイル識別子をクライアントに対して送信するよう構成されている、請求項９に記載のサーバ。
【請求項１１】
あるファイルを読込または更新する要求に応答して、前記ファイルに関する情報を求める要求を少なくとも１つのメタデータサーバのいずれか１つに送信するよう構成されている、先行する請求項のいずれかに記載のサーバ。
【請求項１２】
前記ストレージ装置の少なくとも１つは、遠隔のストレージシステムによって与えられる、先行する請求項のいずれかに記載のサーバ。
【請求項１３】
前記遠隔のストレージシステムは、ストレージアクセスネットワークを含む、請求項１
２に記載のサーバ。
【請求項１４】
先行する請求項のいずれかに記載の複数のアクセス管理サーバと、
前記分散ストレージに保存されるファイルについての情報を保存するためのメタデータサーバとを含む、分散ストレージ管理システム。
【請求項１５】
前記メタデータサーバは前記アクセス管理サーバから分離される、請求項１４に記載の分散ストレージ管理システム。
【請求項１６】
少なくとも１つの追加のメタデータサーバをさらに含み、前記アクセス管理サーバは各々、ファイルに関する情報を前記メタデータサーバに送るが、前記少なくとも１つの追加のメタデータサーバには送らないように構成されている、請求項１４または請求項１５に記載の分散ストレージ管理システム。
【請求項１７】
前記アクセス管理サーバは各々、ファイルに関する情報を求める要求を前記少なくとも１つの追加のメタデータサーバのいずれかに送るよう構成されている、請求項１６に記載の分散ストレージ管理システム。
【請求項１８】
請求項１４から請求項１７のいずれか１つの記載の分散ファイル管理システムと、
複数のストレージ装置を含む分散ストレージとを含む、分散ストレージシステム。
【請求項１９】
前記ストレージ装置は複数のタイプのストレージ装置を含む、請求項１８に記載の分散ストレージ管理システム。
【請求項２０】
複数のストレージ装置を含む分散ストレージへのアクセスを管理するためのサーバを運用する方法であって、前記サーバは割当マネージャを含み、前記方法は、
各々が他のサーバによって与えられた少なくとも１つの他の割当マネージャと通信し、これら割当マネージャのうちどれが、データを保存する際に用いられることになる分散ストレージの部分を選択するマスター割当マネージャであるかを判断することを含む、方法。
【請求項２１】
第１の制御部が、前記分散ストレージにデータを保存する要求を受取ることと、第２の制御部が、少なくとも１つの他の第２の制御部と通信し、これら第２の制御部のうちどれが、用いられることになる分散ストレージの前記部分を選択するかを判断することとを含む、請求項２０に記載の方法。
【請求項２２】
用いられることになる分散ストレージの前記部分を別のサーバが選択することになると判断することと、用いられることになる前記分散ストレージの前記部分の識別情報を前記他のサーバから受取ることとを含む、請求項２０または請求項２１に記載の方法。
【請求項２３】
前記サーバが、用いられることになる分散ストレージの部分を選択することになると判断することと、用いられることになる前記分散ストレージの部分を選択することとを含む、請求項２０から請求項２２のいずれか１つに記載の方法。
【請求項２４】
用いられることになる前記分散ストレージの前記部分の中における前記ストレージ装置のうちの１つを選択することをさらに含む、請求項２０から請求項２３のいずれか１つに記載の方法。
【請求項２５】
前記ファイルが１つの前記ストレージ装置に保存された後、前記分散ストレージの前記部分の中の他のストレージ装置において前記ファイルを複製させることをさらに含む、請求項２４に記載の方法。
【請求項２６】
前記ファイルが保存された後、前記ファイルに関する情報をメタデータサーバに送信することを含む、請求項２０から請求項２５のいずれか１つに記載の方法。
【請求項２７】
前記ファイルに対応する仮想ファイル識別子を前記メタデータサーバから受取ることを含む、請求項２６に記載の方法。
【請求項２８】
前記仮想ファイル識別子をクライアントに対して送信することを含む、請求項２７に記載の方法。
【請求項２９】
あるファイルを読込または更新する要求を受取ることと、前記ファイルに関する情報を求める要求を少なくとも１つのメタデータサーバのいずれか１つに送信することとを含む、請求項２０から請求項２８のいずれか１つに記載の方法。
【請求項３０】
前記分散ストレージの選択された部分に前記データを保存することを含む、請求項２０から請求項２８のいずれか１つに記載の方法。
【請求項３１】
コンピュータによって実行される際に、前記コンピュータに請求項２０から請求項３０のいずれか１つに記載の方法を実行させる命令を含む、コンピュータプログラム。
【請求項３２】
請求項３１に記載のコンピュータプログラムを格納した、コンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は分散ストレージシステム、分散ストレージ管理システム、および分散ストレージへのアクセスを管理するためのサーバに関する。
【背景技術】
【０００２】
背景技術
個人および商業利用のためのデータストレージに対する要求が絶えず増加している。
【０００３】
たとえば、デジタルカメラおよび音楽再生機のようなデジタル記録および再生装置が多く出回るにつれて、（たとえば１０ギガバイトよりも多い）多量のデータを保存することを必要とする個人ユーザの数が増加する。さらに、これらの装置が用いられるにつれて、生成またはダウンロードされるコンテンツの量が蓄積されるので、保存されるべきデータの量も増加する。
【０００４】
データストレージに対する要求も変化している。
従来は、デジタル写真のようなデータファイルは、たとえば家のコンピュータ上のような単一の場所にある磁気ハードディスクのようなストレージ装置に保存されてきた。しかしながらユーザは、彼らのデータに対して遠距離から、さらには移動中において、アクセスすることができることを次第に望むようになってきた。さらにユーザは、彼らのデータを他のユーザと共有することを望む場合がある。
【０００５】
１つより多いストレージ装置を含むとともに、仮想ファイル（virtual file）システムを用いて管理される分散ストレージが、これらの問題に対する解決策を提供し得る。
【０００６】
ストレージ装置は付加的な容量を提供するよう加えられ得る。さらにデータは、時間とともに変化さえし得る多くのストレージ装置にわたって物理的に異なるように保存され得るが、ユーザにとっては、彼らのデータが単一のアクセス可能な「場所」に保存されるように思われる。さらに、ユーザは、友人または仕事の同僚のような他のユーザに、彼または彼女のファイルを読込んだり、さらには更新させたりさえし得るアクセス権限を与え得る。
【０００７】
仮想ファイルシステムを用いる従来の分散ストレージシステムが公知である。
ＵＳ−Ａ−５８７３０８５は、複数のサーバを有するシステムを記載し、各サーバはそれぞれのファイルシステムを管理するとともに、少なくとも１つのサーバは仮想ファイル管理システムを運用する。当該仮想ファイル管理システムは、仮想ファイル識別子、サーバ名、および各仮想ファイルについての実際のファイル名を保存する管理テーブルを含む。あるサーバがクライアントから、指定されたファイルを読込むまたは修正する要求を受取り、かつ当該サーバがそのファイルを保持しないならば、サーバは他のどのサーバが当該ファイルを保存しているかを特定し、当該他のサーバがクライアントに直接応答するよう命令するように要求を修正し、この修正された要求を他のサーバに転送する。
【０００８】
このシステムには、サーバもデータを保存するという欠点がある。これにより、任意の１つのサーバに加えられ得るストレージ量を制限し得る。さらに他のサーバを加えることで、付加的なストレージを提供し得るが、これは単に付加的なストレージ装置を加えるよりも高額の費用がかかる。
【０００９】
ＵＳ−Ａ−２００５０２４６３９３は、仮想ファイルシステムと、複数のインテリジェントストレージノード、および指定されたオブジェクトファイルを保存するインテリジェントストレージノードを特定およびそこにアクセスするための複数の制御ノード（「分散オブジェクトストレージマネージャ」とも言う）を有するストレージクラスタとを有するネットワークストレージシステムを記載する。各分散オブジェクトストレージマネージャは、インテリジェントストレージノードに保存されるオブジェクトファイルの位置を特定するルックアップテーブルと、インテリジェントストレージノードの全体の容量および健全性に関する情報を保存する状態テーブルとを維持する。状態テーブルは、新しいオブジェクトファイルを保存するようインテリジェントストレージノードを選択するのに用いられる。ネットワークストレージシステムが新しいオブジェクトファイルにデータを保存する要求を受取ると、ロードバランシングファブリックが可用性に基づき分散オブジェクトストレージマネージャのうちの１つを選択し、当該要求を選択された分散オブジェクトストレージマネージャに転送する。立ち代わって、分散オブジェクトストレージマネージャは、インテリジェントストレージノードを選択する。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
異なる分散オブジェクトストレージマネージャは、新しいオブジェクトファイルを保存することを担う。したがって、各分散オブジェクトストレージマネージャは、少なくとも初期では、自身が担うファイルについての情報のみを保存する。したがって、分散オブジェクトストレージマネージャは、自身が担わない所与のファイルへのアクセス要求を受取ると、当該ファイルを求める要求をインテリジェントストレージノードにブロードキャスト送信する。したがって、インテリジェントストレージノードには、このような要求を扱う十分な処理能力が与えられなければならない。これにより、ストレージノードを加えることがさらに難しくなる。
【００１１】
この発明は、分散ストレージに対するアクセスを管理するための改善されたサーバ、したがって改善された分散ストレージシステムを提供することに努める。
【課題を解決するための手段】
【００１２】
発明の概要
この発明の第１の局面に従えば、複数のストレージ装置を含む分散ストレージへのアクセスを管理するためのサーバが与えられ、このサーバは、少なくとも１つの他のサーバと通信し、これらサーバのうちどれが、データを保存する際に用いられることになる分散ストレージの部分を選択するかを判断するよう構成される。
【００１３】
したがって、単一のサーバがデータの保存を制御し、これにより、ストレージの同時割当ての問題を避けるのを支援するとともに、当該データについての情報が単一のメタデータサーバに秩序立って保存されることを可能にするのを支援する。
【００１４】
このサーバは、分散ストレージにデータを保存する要求をクライアントから受取るための第１の制御部と、当該データを保存する際に用いる分散ストレージの部分を選択するための第２の制御部とを含んでもよく、第２の制御部は、少なくとも１つの他の第２の制御部と通信し、これら第２の制御部のどれが、用いられることになる分散ストレージの部分を選択するかを判断するよう構成されている。
【００１５】
このサーバは、用いられることになる分散ストレージの部分を別のサーバが選択することになるという判断に応答して、当該他のサーバから分散ストレージの部分の識別情報を受取り、かつ用いられることになる分散ストレージの部分を自身が選択することになるという判断に応答して、分散ストレージの部分を選択するよう構成されてもよい。
【００１６】
このサーバは、分散ストレージの部分の中におけるストレージ装置のうちの１つを選択するよう構成されてもよい。
【００１７】
このサーバは、第２の制御部からの命令に応答して、分散ストレージの部分の中のストレージ装置のうちの１つを選択するための第３の制御部をさらに含んでもよい。
【００１８】
このサーバは、ファイルが１つのストレージ装置に保存された後、分散ストレージの部分の中の他のストレージ装置においてファイルを複製させるよう構成されてもよい。このサーバは、ファイルが保存された後、ファイルに関する情報をメタデータサーバに送信するよう構成されてもよい。このサーバは、ファイルに対応する仮想ファイル識別子をメタデータサーバから受取り、仮想ファイル識別子をクライアントに対して送信するよう構成されてもよい。
【００１９】
このサーバは、あるファイルを読込または更新する要求に応答して、当該ファイルに関する情報を求める要求を少なくとも１つのメタデータサーバのいずれか１つに送信するよう構成されてもよい。
【００２０】
ストレージ装置の少なくとも１つは、ストレージアクセスネットワークのような遠隔のストレージシステムによって与えられてもよい。
【００２１】
この発明の第２の局面に従うと、複数のアクセス管理サーバと、分散ストレージに保存されるファイルについての情報を保存するためのメタデータサーバとを含む分散ストレージ管理システムが与えられる。
【００２２】
メタデータサーバはアクセス管理サーバから分離されてもよい。
分散ストレージ管理システムは少なくとも１つの追加のメタデータサーバをさらに含んでもよく、アクセス管理サーバは各々、ファイルに関する情報をメタデータサーバに送るが、当該少なくとも１つの追加のメタデータサーバには送らないように構成されている。アクセス管理サーバは各々、ファイルに関する情報を求める要求を当該少なくとも１つの追加のメタデータサーバのいずれかに送るよう構成されてもよい。
この発明の第３の局面に従えば、分散ファイル管理システムと、複数のストレージ装置を含む分散ストレージとを含む分散ストレージシステムが与えられる。
【００２３】
当該ストレージ装置は複数のタイプのストレージ装置を含む。
この発明の第４の局面に従えば、複数のストレージ装置を含む分散ストレージへのアクセスを管理するためのサーバを運用する方法が与えられ、当該方法は、少なくとも１つの他のサーバと通信し、これらサーバのうちどれが、データを保存する際に用いられることになる分散ストレージの部分を選択するかを判断することを含む。この方法は、分散ストレージにデータを保存する要求をクライアントから受取ることを含んでもよい。
【００２４】
この方法は、第１の制御部が、分散ストレージにデータを保存する要求を受取ることと、第２の制御部が、少なくとも１つの他の第２の制御部と通信し、これら第２の制御部のどれが、用いられることになる分散ストレージの部分を選択するかを判断することとを含んでもよい。
【００２５】
この方法は、用いられることになる分散ストレージの部分を別のサーバが選択することになると判断することと、用いられることになる分散ストレージの部分の識別情報を他のサーバから受取ることとを含んでもよい。この方法は、サーバが、用いられることになる分散ストレージの部分を選択することになると判断することと、用いられることになる分
散ストレージの部分を選択することとを含んでもよい。この方法は、用いられることになる分散ストレージの部分の中におけるストレージ装置のうちの１つを選択することを含んでもよい。この方法は、分散ストレージの選択された部分に当該データを保存することを含んでもよい。
【００２６】
この方法は、ファイルが１つのストレージ装置に保存された後、分散ストレージの部分の中の他のストレージ装置においてファイルを複製させることをさらに含んでもよい。この方法は、ファイルが保存された後、ファイルに関する情報をメタデータサーバに送信することを含んでもよい。この方法は、ファイルに対応する仮想ファイル識別子をメタデータサーバから受取ることを含んでもよく、仮想ファイル識別子をクライアントに対して送信することを含んでもよい。
【００２７】
この方法は、あるファイルを読込または更新する要求を受取ることと、当該ファイルに関する情報を求める要求を少なくとも１つのメタデータサーバのいずれか１つに送信することとを含んでもよい。
【００２８】
この発明の第５の局面に従えば、コンピュータによって実行される際に、コンピュータに上記の方法を実行させる命令を含むコンピュータプログラムが与えられる。
【００２９】
この発明の第６の局面に従えば、上記のコンピュータプログラムを保存するコンピュータ読取可能媒体が与えられる。
【００３０】
添付の図面を参照して、この発明の実施例を例示目的で記載する。
【発明を実施するための最良の形態】
【００３１】
発明の実施例の詳細な説明
図１を参照すると、この発明に従った分散ストレージシステム１が示される。クライアント２，３、この例ではデスクトップパーソナルコンピュータ２および携帯電話ハンドセット３、がインターネットのような通信ネットワーク４を介して分散ストレージシステム１にアクセスし得る。明確さのために、２つのクライアント２，３しか示さないが、１つのクライアントか、または２つよりも多いクライアントがシステム１にアクセスし得るということは理解されるであろう。ネットワーク４は、公衆地上モバイルネットワーク（図示せず）または無線ローカルエリアネットワーク（図示せず）を含む複数の無線および有線ネットワークを含んでもよい。
【００３２】
分散ストレージシステム１は、分散ストレージへのアクセスを管理するための第１、第２、および第３のサーバ５1，５2，５3を含む（サーバ５1，５2，５3を以下では「ファイルサービスプロバイダ」と呼ぶ）。システム１は、たとえば１つもしくは２つといった、上記よりも少ないか、または上記よりも多い数のファイルサービスプロバイダを有してもよい。ファイルサービスプロバイダ５1，５2，５3は、第３のファイルサービスプロバイダ５3によって与えられるハードディスクドライブの形態である第１のストレージ装置６1のようなストレージ装置６とローカルに通信するか、または通信ネットワーク４もしくはイントラネットのような別の通信ネットワーク７を介してリモートに通信する。たとえば、ストレージエリアネットワーク（storage area network；ＳＡＮ）８が第２のストレージ装置６2を提供してもよく、ネットワーク接続ストレージ（network attached storage；ＮＡＳ）９が第３のストレージ装置６3を提供してもよく、ファイルサーバ６3が第４のストレージ装置６4を提供してもよい。ストレージ装置６の数は異なってもよい。たとえば、ＳＡＮ８またはＮＡＳ９は、１つより多いストレージ装置を提供し得、および／または１つより多いＳＡＮもしくはＮＡＳが与えられてもよく、その各々は少なくとも１つのストレージ装置６を提供する。ストレージ装置６を提供するシステムの他の形態、たとえ
ば共用インターネットファイルシステム（common internet file systems；ＣＩＦＳ）（図示せず）が用いられ得、光学ディスク（たとえばＤＶＤ）ドライブおよびＵＳＢドライブが用いられてもよい。ストレージ装置６の数は時とともに変わり得る。たとえば、ストレージ装置６は加えられてもよく、または取除かれてもよい。ストレージ装置６の配置も変化し得る。
【００３３】
後でさらに詳細に説明するように、ストレージ装置６は集合的に単一のストレージボリューム２６（図４）を提供し、クラスタ２７（図４）の中に配される。
【００３４】
ファイルサービスプロバイダ５は、仮想ファイル参照と実際のファイルとの間のマッピングのために、通信ネットワーク７を介して第１のメタデータサーバ１１1および随意の第２のメタデータサーバ１１2と通信する。ファイルサービスプロバイダ５は、第１のメタデータサーバ１１1からメタデータを読込み、そこへメタデータを書込むことができる。しかしながら、ファイルサービスプロバイダ５1，５2，５3は、第２のメタデータサーバ１１2からはメタデータを読込むことしかできない。第１および第２のメタデータサーバ１１1，１１2は、以下ではそれぞれ「アクティブ」および「パッシブ」メタデータサーバ１１1，１１2と呼ぶ。アクティブメタデータサーバ１１1は、たとえば周期的に、要求に応じて、または所定のトリガに応答して、メタデータをパッシブメタデータサーバ１１2にコピーしてもよい。１つより多いパッシブメタデータサーバ１１2が設けられてもよい。さらに、各メタデータサーバ１１1，１１2は、２つ以上のサーバの間に分散されてもよい。
【００３５】
図２をさらに参照すると、ファイルサービスプロバイダ５およびメタデータサーバ１１は、それぞれのコンピュータシステム１２上にてソフトウェアで実現される。各コンピュータシステム１２は、バス１６によって動作可能なように接続されるプロセッサ１３、メモリ１４、および入力／出力（Ｉ／Ｏ）インターフェイス１５を含む。コンピュータシステム１２は１つより多いプロセッサを含んでもよい。Ｉ／Ｏインターフェイス１５は、ネットワークインターフェイス１７、ハードディスクドライブの形態であるストレージ１８、および、随意であるが、取外し可能なストレージ１９に動作可能に接続される。キーボード（図示せず）およびディスプレイ（図示せず）のような周辺機器を含む他の要素が一時的または恒久的に設けられてもよい。
【００３６】
コンピュータシステム１２によって実行されると、コンピュータシステム１２がファイルサービスプロバイダまたはメタデータサーバの処理を与えるようにさせるコンピュータプログラムコード２０1，２０2がハードドライブ１８上に保存され、プロセッサ１３による処理のためにメモリ１４にロードされる。コンピュータプログラムコード２０1，２０2は、取外し可能なストレージ１９上に保存され、そこから転送されてもよく、またはリモートソース（図示せず）からネットワークインターフェイス１７を通じて転送されてもよい。
【００３７】
図１および図３を参照すると、各ファイルサービスプロバイダ５は、クライアント２，３とインターフェイス接続するための第１のサービスまたは制御部２１と、ストレージクラスタ２７（図４）を選択するための第２のサービスまたは制御部２２と、クラスタ２７（図４）の中のストレージ装置６を選択するための第３のサービスまたは制御部２３と、クラスタ２７（図４）の中およびそれら同士の間でのデータの複製を制御するための第４のサービスまたは制御部２４と、メタデータサーバ１１1，１１2とインターフェイス接続するための第５のサービスまたは制御部２５とを含む。
【００３８】
第１のサービス２１は、ファイルを書込および読込するといったようにファイルにアクセスする、クライアント２，３から受取られた要求を管理し、かつ図３に示される他のコ
ンポーネントも管理する。第１のサービス２１は、ここでは「ファイルサービスマネージャ」と呼ばれる。
【００３９】
第２のサービス２２は、データを書込む際にクラスタ２７（図４）を選択し、ここでは「割当マネージャ」と呼ばれる。後でさらに詳細に説明するように、割当マネージャ２２は他の割当マネージャ２２と通信する。１つの割当マネージャ２２M（図４）は、「マスタ割当マネージャ」と呼ばれ、クラスタ２７（図４）を選択するのを担うよう選ばれ、その他の割当マネージャ２２は、マスタ割当マネージャ２２M（図４）のためのプロキシとして動作する。選ばれた割当マネージャ２２Mは変更し得る。
【００４０】
書込または読込処理において、第３のサービス２３はあるストレージ装置６を選択し、その可用性を確認する。ここでは、第３のサービス２２は「クラスタマネージャ」と呼ばれる。クラスタマネージャ２３は、１つのストレージ装置６におけるファイルストリームを他のストレージ装置６に複製することをトリガする。クラスタマネージャ２３はさらに、処理量を増加させるよう、ストレージ装置６同士の間で読込処理を分散させる。クラスタマネージャ２３はさらに、クライアントからストレージ装置への処理量に関するデータを集める。処理量データは、クライアント２，３に対して、より速い応答を有するストレージ装置６を選択するよう、書込または読込処理中に用いられ得る。
【００４１】
第４のサービス２４はここでは「複製サービス」と呼ばれる。先に説明したように、複製サービス２４はクラスタ２７(図４）の中、およびクラスタ２７同士の間でデータの複製を制御する。クラスタマネージャ２３は、ストレージ装置６のいずれかが利用可能でない場合、複製トランザクションのログを取る。
【００４２】
第５のサービス２５は、ここでは「メタデータサーバインターフェイス」と呼ばれる。メタデータサーバインターフェイス２５は、たとえばファイルについての情報のようなメタデータをアクティブメタデータサーバ１１1に送り、アクティブまたはパッシブメタデータサーバ１１1，１１2からメタデータを抽出する。
【００４３】
図４を参照すると、ストレージ装置６は単一のストレージボリュームまたはストレージスペース２６を提供する。ストレージ装置６はクラスタ２７の中に配され、クラスタ２７では、各ストレージ装置６が同じクラスタ２７にある別のストレージ装置６と同じデータを保存する。すなわち、１つのクラスタ２７におけるストレージ装置６同士は互いのミラーである。明確さのため、２つのクラスタ２７のみを示す。一方のクラスタ２７において、ストレージ装置６は、たとえばネットワークアドレスのような異なるアクセス構成を有する。各ファイルサービスプロバイダ５は、各クラスタ２７における少なくとも１つのストレージ装置６にアクセスし得る。
【００４４】
メタデータサーバ１１1，１１2は、第１、第２、第３、第４、および第５のメタデータテーブル２８，２９，３０，３１，３２を保存する。メタデータは、仮想ファイル参照を物理ファイル参照にマッピングするための情報と、（ファイル圧縮およびウイルスチェックのような）フィルタが適用される前のファイルの属性とを含む。メタデータはさらに、フォルダツリー、フォルダの中身のデータ、さらには各ファイルおよびフォルダについてのアクセス制御リストのような他の情報を含む。
【００４５】
第１のテーブル２８（以下、「仮想ファイルシステムエンティティテーブル」と呼ぶ）は、仮想エンティティ識別子３３と、クラスタ識別子３４と、ファイルまたはディレクトリのような各エンティティについてのエンティティタイプ３５と、物理ストレージ識別子３６におけるパスとを保存する。
【００４６】
第２のテーブル２９（以下「仮想ファイルシステムアクセス制御リスト」と呼ぶ）は、仮想エンティティ識別子３７と、各エンティティについてのアクセスリスト３８とを保存し、ユーザ、すなわちクライアントユーザのセキュリティ権限を規定する。仮想ファイルシステムアクセス制御リスト２９は、エンティティに関するアクセス権限のセットとともに、読込、書込、作成、削除、および変更権限といったようなエンティティに対するアクセス権限を有するユーザをリストアップする。
【００４７】
クライアント２，３が送った、エンティティへのアクセスの各要求は、ユーザの識別情報を特定する。したがって、ファイルサービスプロバイダ５は、所与のエンティティへのアクセスの要求を受取るたびごとに、たとえば当該エンティティおよびユーザに関するリスト２９の部分を抽出することによって、仮想ファイルシステムアクセス制御リスト２９に問合せを行ない、これによりユーザのアクセス権限を照合する。
【００４８】
第３のテーブル３０（以下、「仮想ファイルシステムエンティティ共有リスト」と呼ぶ）は、各エンティティについて、仮想エンティティ識別子３９と、アクセスリスト４０とを保存し、ファイルの閲覧を共有するよう登録ユーザによって招待される登録されていないユーザ（「共有閲覧者」と呼ぶ）のためのアクセス権限を規定する。仮想ファイルシステムアクセス制御リスト３０は、アクセス権限が通常、たとえば読込のみに制限されるという点を除いて、仮想ファイルシステムアクセス制御リスト２９に類似する。
【００４９】
共有閲覧者は、登録ユーザとは異なった形で識別および認証される。識別および認証は、分散ストレージシステム１と確立された信頼関係を有する外部のシステム（図示せず）によって行なわれ得る。
【００５０】
仮想ファイルシステムアクセス制御リスト３０は、たとえば、共有閲覧者が分散ストレージシステム１にアクセスすることを許可されない場合、省略されてもよい。
【００５１】
第４のテーブル３１（以下、「論理クラスタメタデータテーブル」と呼ぶ）は、各クラスタ２７について、（論理）クラスタ識別子４１と（物理）ストレージ装置識別子４２とを保存する。論理クラスタメタデータテーブル３１は、クラスタマネージャ２３がクラスタ２７におけるストレージ装置６を識別することを可能にする。
【００５２】
第５のテーブル３２（以下、「論理クラスタリレーションテーブル」と呼ぶ）は、各クラスタ２７について、第１のクラスタ識別子４３、第２のクラスタ識別子４４、および関係タイプ４５を保存し、かつクラスタ２７同士の間の関係を記載する。たとえば、論理クラスタリレーションテーブル３２は、第１のクラスタ２７Aが第２のクラスタ２７Bの複製物（すなわちミラー）であると特定してもよい。代替的には、論理クラスタリレーションテーブル３２は、第１のクラスタ２７Aが、事前に規定された基準に従って保存された、第２のクラスタ２７Bに保存されたファイルについてのアーカイブであると特定してもよい。アーカイブは、ほとんどアクセスされないファイルか、または特定の日時より前に作成されたファイルを含み得る。したがって、第１のクラスタ２７Aは、第２のクラスタ２７Bにアーカイブされるファイルを保存する必要はない。アーカイブされたファイルは、たとえばテープストレージシステムに保存されてもよい。
【００５３】
以下にさらに詳細に記載されるように、システム１は、ファイルサービスをクライアント２，３に提供するよう用いられ得る。要求および応答はセッションなしで交換されるため、異なるファイルサービスプロバイダ５は、同じクライアント２，３からの異なる要求を扱い得る。したがって、ファイルサービスプロバイダ５は、クライアント２，３の状態についてのいかなる情報も保存する必要はない。その代わり、クライアント２，３は、自身の状態についての情報を保存し得、かつファイルサービスプロバイダ５に要求を送る際
にこの情報を供給し得る。たとえば、要求は、ユーザが仮想ファイルシステムアクセス制御リスト２９に保存されるアクセス権限に対して照合されるのに必要とされる認証情報を含んでもよい。
【００５４】
書込（ファイルの作成）
図４、図５ａ、および図５ｂを参照して、ここでファイル書込処理を記載する。
【００５５】
クライアント、この例ではパーソナルコンピュータ２、がファイル書込要求４６をファイルサービスプロバイダ５のファイルサービスマネージャ２１に送る（ステップＷ１）。ファイルサービスプロバイダ５は、ルーティングメカニズムに従ってか、またはネットワーク４（図１）におけるロードバランサ（図示せず）によって選択される。ファイル書込要求４６は、ファイルデータ４８と、ファイルタイプおよびファイルサイズのようなファイル属性４９とを含む、書込まれることになるファイル４７を含む。
【００５６】
ファイルサービスマネージャ２１は、クラスタ割当要求５０を割当マネージャ２２に転送する（ステップＷ２）。要求５０は、クラスタ２７を選択するのに用いられてもよいファイル属性４９を含んでもよい。
【００５７】
マスタ割当マネージャ２２Mは、たとえばファイル属性４９、および／もしくはクラスタ属性、および利用可能なスペースおよび利用率といった状態（図示せず）に基づくか、または総当りといったような他の何らかの基準で、クラスタ２７を選択する（ステップＷ３）。
【００５８】
クラスタ２７が選択される前に、割当マネージャ２２は、自身がマスタ割当マネージャ２２Mであるかどうか判断する。割当マネージャ２２は、マスタ割当マネージャ２２Mであるならば、クラスタ２７を選択する。そうでなければ、割当マネージャ２２は要求をマスタ割当マネージャ２２Mに転送し、マスタ割当マネージャ２２Mがクラスタ２７を割当て、クラスタ識別子を返す。
【００５９】
割当マネージャ２２は、選択されたクラスタ２７の中のストレージ装置６を選択するよう、命令５１でクラスタマネージャ２３を呼出す(ステップＷ４）。クラスタマネージャ２３はあるストレージ装置６を選択する（ステップＷ５）。クラスタマネージャ２３は、ファイルサービスマネージャ２１とストレージ装置６との間の最も高いネットワーク可用性に基づき当該選択を行なう。ネットワーク可用性は、割当マネージャ２２とクラスタマネージャ２３とによって所定の時間、たとえば周期的、に集められるネットワーク状態情報を用いて判断され得る。
【００６０】
クラスタマネージャ２３は、ストレージ装置６における所与のパスを有するファイルストリーム５３を作成するよう、命令５２をストレージ装置６に送る（ステップＷ６）。ストレージ装置６はファイルストリーム５３を作成する（ステップＷ７）。ユニークファイルハンドラーが当該ファイルストリーム５３と関連付けられ、それはストレージ装置６におけるファイルストリーム５３の中の第１の書込可能ブロックを（ポインタＰで）指し示す。（ファイルストリーム５３を識別する）ファイルハンドラーの識別情報５４がクラスタマネージャ２３に返される（ステップＷ８）。
【００６１】
クラスタマネージャ２３は、ファイルハンドラー識別情報５４と、パス５５と、クラスタ識別情報５６とを割当マネージャ２２に返す（ステップＷ９）。立ち代わって、割当マネージャ２２はこの情報をファイルサービスマネージャ２１に返す（ステップＷ１０）。
【００６２】
ファイルサービスマネージャ２１は、ファイルデータ４８に対して、圧縮および／また
はウイルスチェックのような書込フィルタを適用し、フィルタされたファイルデータ５７を開かれたファイルストリーム５３に書込む（ステップＷ１２）。ファイルストリーム５３は、フィルタされたファイルデータ５７で充填される。ブロックが充填されると、ストレージ装置は、次の利用可能なフリーブロックを指し示すようポインタＰを前進させる。
【００６３】
フィルタされたファイルデータ５７がひとたび書込まれると、ファイルサービスマネージャ２１は、ファイルストリーム５３を閉じるよう、命令５９をクラスタマネージャ２３に送る（ステップＷ１３）。クラスタマネージャ２３は、ファイルストリーム５３を閉じるよう命令６０をストレージ装置６に送る（ステップＷ１４）。ストレージ装置６はエンドオブファイル（end of file；ＥＯＦ）マーカ６１をファイルストリーム５２に書込み（ステップＷ１５）、ポインタを解放し、ストレージ装置６が提供するファイル割当テーブルのようなストレージシステム割当テーブル（図示せず）を更新する。
【００６４】
クラスタマネージャ２３は次いで、複製サービス２４（図２）に命令（図示せず）を送ることにより、保存されたファイルストリーム５３を同じクラスタ２７における他のストレージ装置６に複製することをトリガする（ステップＷ１６）。
【００６５】
ファイルサービスマネージャ２１は、メタデータサーバインターフェイス２５を介して、メタデータを仮想ファイルシステムエンティティテーブル２８と、仮想ファイルシステムアクセス制御リスト２９と、仮想ファイルシステムエンティティ共有リストテーブル３０と、論理クラスタメータテーブル３１と、論理クラスタリレーションテーブル３２とに必要に応じて書込むよう、命令６２をメタデータサーバ１１1に送る。メタデータサーバ１１1は、ファイル情報を書込み（ステップＷ１８）、仮想ファイル識別子６３をファイルサービスマネージャ２１に返す（ステップＷ１９）。ファイルサービスマネージャ２１は、ファイルが仮想ファイル識別子６３を含むよう書込まれたという確認情報６４をクライアント２に送る（ステップＷ２０）。
【００６６】
先に述べたように、割当マネージャ２２は、自身がマスタ割当マネージャ２２Mであるかどうか判断する。ここで、これを達成する処理をさらに詳細に記載する。
【００６７】
マスタ割当マネージャの選択
図４および図６を参照すると、割当マネージャ２２は、クラスタ２７を割当てる要求４８（図５ａ）を受取る（ステップＳ１）。割当マネージャ２２は、マスタ割当マネージャ２２Mが既知であるかどうかチェックする（ステップＳ２）。
【００６８】
割当マネージャ２２がマスタ割当マネージャ２２Mの識別情報を知っている場合、当該割当マネージャ２２は自身がマスタ割当マネージャ２２Mであるかどうか判断する（ステップＳ３）。そうであるならば、割当マネージャ２２はこの要求を処理し、上述したようにクラスタ２７を選択する（ステップＳ４）。そうでない場合、割当マネージャ２２はこの要求をマスタ割当マネージャ２２Mに転送する（ステップＳ５）。割当マネージャ２２は、マスタ割当マネージャ２２Mからクラスタ識別子を受取る。
【００６９】
割当マネージャ２２がマスタ割当マネージャ２２Mの識別情報を知らない場合、割当マネージャ２２は、マスタの識別情報を求めるクエリ６５を他の割当マネージャ２２に送る。割当マネージャ２２は返事を待ち（ステップＳ７）、当該クエリが「タイムアウト」するかどうか、すなわち所定の期間が過ぎる前に応答が受取られるかどうかチェックする（ステップＳ８）。
【００７０】
割当マネージャ２２は、クエリがタイムアウトする前に返事６６を受取る場合、マスタ割当マネージャ２２Mの識別情報を保存し（ステップＳ９）、要求をマスタ割当マネージ
ャ２２Mに転送する（ステップＳ５）。
【００７１】
割当マネージャ２２は、クエリがタイムアウトする前に返事を受取らなかった場合、自身がマスタであると表明するメッセージ６７を送る（ステップＳ１１）。割当マネージャ２２は異議を待ち（ステップＳ１１）、メッセージ６７がタイムアウトするかどうかをチェックする（ステップＳ１２）。
【００７２】
要求がタイムアウトする前に何も異議を受取らなければ、割当マネージャ２２は自身をマスタ割当マネージャ２２Mとして記録し（ステップＳ１３）、要求を処理し、クラスタを選択する（ステップＳ４）。
【００７３】
しかしながら、異議６８を受取った場合、割当マネージャ２２は識別クエリ６５を他の割当マネージャ２２に再送する（ステップＳ６）。
【００７４】
割当マネージャ２２は、クエリ６５およびメッセージ６７を連続的に検出しようとする。
【００７５】
クエリ６５またはメッセージ６７を受取り、かつ自身がマスタ割当マネージャ２２Mである場合、それは応答６６または異議６８をそれぞれ送る。マスタ割当マネージャ２２Mは、別の割当マネージャ２２からメッセージ６７を受取った場合か、またはファイルサービスプロバイダ５が不活性化される、たとえばシャットダウンされる場合に、降格され得る。
【００７６】
書込（ファイルの更新）
図４、図７ａ、および図７ｂを参照して、ここで、ファイル更新処理を記載する。
【００７７】
ファイル更新処理は、上述したファイル書込処理に類似する。短く言えば、割当マネージャ２２は、あるファイルの古いバージョンに割当てられたスペースを解放し、まるで新たに作成されたファイルであるかのように、当該ファイルのより新しいバージョンにスペースを割当て、当該ファイルの新しいバージョンを書込む。
【００７８】
クライアント２は、ファイルサービスプロバイダ５のファイルサービスマネージャ２１にファイル更新要求６９を送る（ステップＵ１）。ファイル書込要求６９は、新しいファイルデータ７１と新しいファイル属性７２とを含む更新されたファイル７０、および古いファイル、たとえば以前に保存されたファイル４７、についての仮想ファイル識別子７３を含む。
【００７９】
ファイルサービスマネージャ２１は、どのクラスタ２７に古いファイルが保存されているかを見つけるよう、クエリ７４をアクティブメタデータサーバ１１1に送る（ステップＵ２）。代替的には、ファイルサーバマネージャ２１はこのクエリ７４をパッシブメタデータサーバ１１2に送ってもよい。アクティブメタデータサーバ１１1は、古いクラスタ識別子７５と、ストレージ装置６におけるパス７６と、古いファイル属性７７とを返す（ステップＵ３）。
【００８０】
更新処理（ステップＵ４からＵ２２）は、前述の書込処理のステップＷ２からＷ２０と類似した態様で進む。
【００８１】
ファイルサービスマネージャ２１はクラスタ割当要求７８を割当マネージャ２２に転送し（ステップＵ４）、マスタ割当マネージャ２２Mはクラスタ２７を選択する（ステップＵ５）。
【００８２】
割当マネージャ２２は、選択されたクラスタ２７の中のストレージ装置６を選択するよう、命令７９を送る（ステップＵ６）。クラスタマネージャ２３は、ストレージ装置６を選択する（ステップＵ７）。クラスタマネージャ２３は、当該ストレージ装置６において所与のパスを有する新しいファイルストリーム８１を作り出すよう、命令８０をストレージ装置６に送る（ステップＵ８）。ストレージ装置６は、ファイルストリーム８１を作成し（ステップＵ９）、新しいファイルハンドラー識別子８２をクラスタマネージャ２３に渡す（ステップＵ１０）。クラスタマネージャ２３は、新しいファイルストリーム８１、対応するパス８３、およびクラスタ識別子８４を割当マネージャ２２に返す（ステップＵ１１）。割当マネージャ２２は、この情報をファイルサービスマネージャ２１に転送する（ステップＵ１２）。
【００８３】
ファイルサービスマネージャ２１は、新しいファイルデータ７１に対して書込フィルタを適用し（ステップＵ１３）、新しいフィルタされたファイルデータ８５を開かれたファイルストリーム８１に書込む（ステップＵ１４）。
【００８４】
新しいフィルタされたストリーム８５がひとたび書込まれると、ファイルサービスマネージャ２１は、当該ファイルストリーム８１を閉じるよう命令８７をクラスタマネージャ２３に送る（ステップＵ１５）。
【００８５】
クラスタマネージャ２３は、ファイルストリーム８１を閉じるよう命令８８をストレージ装置６に送る（ステップＵ１６）。ストレージ装置６は、ファイルストリーム８１にエンドオブファイル（ＥＯＦ）マーカ８９を書込み、ポインタを解放し、ストレージ装置ファイルシステム割当テーブル（図示せず）を更新する。
【００８６】
クラスタマネージャ２３は、複製サービス２４（図２）に命令（図示せず）を送ることにより、同じクラスタ２７における他のストレージ装置６にファイルストリーム８１を複製することをトリガする（ステップＵ１８）。
【００８７】
ファイルサービスマネージャ２１は、メタデータサーバインターフェイス２５を介して、必要に応じて、更新されたメタデータを書込むよう、命令９０をメタデータサーバ１１1に送る（ステップＵ１９）。メタデータサーバ１１1は、更新されたファイル情報を書込み（ステップＵ２０）、新しい仮想ファイル識別子９１をファイルサービスマネージャ２１に返す（ステップＵ２１）。ファイルサービスマネージャ２１は、クライアント２に、ファイルが書込まれたという確認情報９２を送る（ステップＵ２２）。
【００８８】
ファイルサービスマネージャ２１は、古いファイルを削除するよう、命令９３をクラスタマネージャ２３に送る（ステップＵ２３）。クラスタマネージャ２２は、古いファイルストリームを保存するストレージ装置６を見つけ（ステップＵ２４）、古いファイルストリームを削除するよう命令９４をストレージ装置６に送る（ステップＵ２５）。クラスタマネージャ２３は、ストレージ装置６の複製をトリガする（ステップＵ２６）。
【００８９】
読込
図４および図８を参照して、ここでファイル読込処理を記載する。
【００９０】
クライアント２は、ファイルサービスプロバイダ５のファイルサービスマネージャ２１にファイル読込要求９５を送る（ステップＲ１）。ファイル読込要求９５は、たとえば以前に保存されたファイル４２または更新されたファイル６８のような、ファイルについての仮想ファイル識別子９６を含む。
【００９１】
ファイルサービスマネージャ２１は、どのクラスタ２７に当該ファイルが保存されているかを見つけ出すよう、クエリ９７をパッシブメタデータサーバ１１2に送る（ステップＲ２）。ファイルサーバマネージャ２１は、クエリ９７をアクティブメタデータサーバ１１1に送ってもよい。
【００９２】
パッシブメタデータサーバ１１2は、クラスタ識別子９８と、ストレージ装置６におけるパス９９と、ファイル属性１００とを返す（ステップＲ３）。
【００９３】
ファイルサービスマネージャ２１は、あるストレージ装置６を選択するよう、要求１０１をクラスタマネージャ２３に送る（ステップＲ４）。クラスタマネージャ２３は、最も高いネットワーク可用性に従って、クラスタ識別子９８によって識別されるクラスタ２７においてあるストレージ装置６を選択し（ステップＲ５）、ファイルストリーム１０３を開くよう、命令１０２をストレージ装置６に送る（ステップＲ６）。クラスタマネージャ２３は、ストレージ装置６へのアクセスが失敗すると、クラスタ２７がミラーリングまたはアーカイブされているかどうか判断するよう論理クラスタ関係テーブル３２を参照する。されていれば、クラスタマネージャ２３は新しい命令（図示せず）を別のストレージ装置６に送る。ストレージ装置６はファイルストリーム９９からファイルデータ１０４を抽出し、それをクラスタマネージャ２３に転送する（ステップＲ７）。クラスタマネージャ２３はファイルデータ１０４をファイルサービスマネージャ２１に渡す（ステップＲ８）。ファイルサービスマネージャ２１は、ファイルデータ１０４に対して読込フィルタを適用し（ステップＲ９）、フィルタされたファイルストリーム１０５をクライアント２に転送する（ステップＲ１０）。
【００９４】
上で説明したように、ユーザは「共有閲覧者」と呼ばれる他のユーザに対してアクセス権限を与え得る。当該ユーザは、ある共有閲覧者にアクセス権限を与え得、たとえばファイルサービスプロバイダ５および仮想ファイルを識別するユニフォームリソースロケータ（uniform resource locator；ＵＲＬ）の形態である、ファイルまたはフォルダにアクセスするためのリンクを含むメッセージを共有閲覧者にＥメールまたはテキスト送信することによって、当該ファイルまたはフォルダの場所を共有閲覧者に知らせ得る。共有閲覧者はこのリンクを選択し、これにより、ファイルまたはフォルダを抽出するよう要求をファイルサービスプロバイダ５に送る。
【００９５】
上述したシステム１は、ストレージインフラストラクチャに関わらず、ファイルサービスを提供するよう用いられ得る。それは、冗長サイト（redundant site）にわたって取扱うプラグ可能ストリームを、統合されたストレージスペースにわたる分散ファイル入力および出力に与え得る。
【００９６】
ファイルサービスは、携帯電話ネットワークプロバイダによって、技術インテグレータによって、および会社によって、携帯電話ハンドセットを有するユーザに与えられ得る。
【００９７】
システム１は、ファイルデータからファイルメタデータを切離し、実際のファイルシステム同士、すなわちストレージ装置同士を一体化するので、それらは単一のストレージユニットのように思われる。これにより、ストレージ容量およびストレージ装置処理量などといったストレージ装置の制限を最小限にするまたは免れるのを助け得る。
【００９８】
システム１は、ファイルストリームを取扱い得、取扱のためにファイルストリームをブロックに分ける必要はない。
【００９９】
上述した実施例に対して多くの修正例がなされ得ることは理解されるであろう。
【図面の簡単な説明】
【０１００】
【図１】この発明に従った分散ストレージシステムの概略図である。
【図２】図１に示されるサーバのためのコンピュータシステムを示す図である。
【図３】分散ストレージに対するアクセスを管理するためのサーバのブロック図である。
【図４】図１に示されるシステムのブロック図である。
【図５ａ】図４に示されるシステムにおいて行なわれるファイル書込処理を示す図である。
【図５ｂ】図４に示されるシステムにおいて行なわれるファイル書込処理を示す図である。
【図６】割当マネージャを運用する方法の処理フロー図である。
【図７ａ】図４に示されるシステムにおいて行なわれるファイル更新処理を示す図である。
【図７ｂ】図４に示されるシステムにおいて行なわれるファイル更新処理を示す図である。
【図８】図４に示されるシステムにおいて行なわれるファイル読込処理を示す図である。
【図１】
0005584910.tif 000002
【図２】
0005584910.tif 000003
【図３】
0005584910.tif 000004
【図４】
0005584910.tif 000005
【図５ａ】
0005584910.tif 000006
【図５ｂ】
0005584910.tif 000007
【図６】
0005584910.tif 000008
【図７ａ】
0005584910.tif 000009
【図７ｂ】
0005584910.tif 000010
【図８】
0005584910.tif 000011