(57)【要約】  データ記憶システムの記憶要素から、記憶装置の負荷および使用に関する定量的データが収集される。記憶要素は、収集された定量的データに従ってランク付けされる。ユーザによって要求されたファイルを記憶する、記憶要素にわたるパーティションが決定される。パーティションのメンバーは、記憶要素のうちの１つ以上であると特定される。メンバーは、ランク付けから選択される。ランク付けが古くなったこと、またはシステムが修復またはアップグレードされたことに応えて、ランク付けは更新される。その他の実施形態も説明され特許請求される。
2009529190.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶システムであって、前記データ記憶システムは、
複数のメタデータサーバマシンであって、それぞれは、前記システム内に記憶されている複数のファイルについてのメタデータを記憶する複数のメタデータサーバマシンと、
前記ファイルのスライスを、前記メタデータによって示された位置において記憶する複数の記憶要素と、
前記メタデータサーバマシンおよび記憶要素が通信可能に結合されたシステム相互接続と、
前記メタデータサーバマシン内で実行されるデータファブリックであって、前記データファブリックは、前記システムの複雑さを複数のクライアントユーザから隠すデータファブリックと、
前記メタデータサーバマシンのうちの１つの中で実行されるように構成されたソフトウェアであって、クライアントによって要求されたデータを記憶する前記記憶要素にわたるパーティションを決定するためのソフトウェアとを含み、
前記ソフトウェアは、前記記憶要素のうちのいくつかを前記パーティションのメンバーとして識別するように構成され、前記ソフトウェアは、前記記憶要素から記憶装置の負荷および使用状況の統計を継続的に収集するように、かつ、負荷および使用状況の基準に従ってソートされた前記記憶要素のグローバルリストを繰り返し更新するように構成され、前記ソフトウェアは、前記グローバルリストに基づいて、前記パーティションの前記メンバーを選択するように構成され、
前記記憶要素は複数のグループとして配備され、各グループは、共通の設置パラメータを有するそれぞれの２つ以上の前記記憶要素を有し、前記ソフトウェアは、このグループ分けの知識を使用して前記記憶要素をソートし、
前記ソフトウェアは、前記パーティションの前記メンバーを、前記メンバーのそれぞれが前記グループのうちの異なる１つから選択することを特徴とするデータ記憶システム。
【請求項２】
前記共通の設置パラメータは、電源と、モデルタイプと、前記システム相互接続への接続性とからなる群のうちの１つを含むことを特徴とする請求項１に記載の記憶システム。
【請求項３】
前記グローバルリストは、前記メタデータサーバマシンのそれぞれの中にキャッシュされ、それと一緒に、新しいパーティションに対するクライアント要求に対して、前記キャッシュされたグローバルリストから前記新しいパーティションのメンバーを選択することによって応答するソフトウェアもキャッシュされることを特徴とする請求項１に記載の記憶システム。
【請求項４】
前記ソフトウェアは、前記グローバルリストが所定の寿命に到達した場合に、前記グローバルリストを更新することを特徴とする請求項３に記載の記憶システム。
【請求項５】
前記ソフトウェアは、前記記憶要素内または前記システム相互接続内に変化があった場合に、前記グローバルリストを更新することを特徴とする請求項３に記載の記憶システム。
【請求項６】
収集される前記記憶装置の負荷および使用状況の統計は、
記憶要素が前記データファブリックに参加した度合いと、
記憶要素がパーティション内で参照された回数と、
記憶要素がデータファブリックの修復に関わっている度合いと、
記憶要素内のデータキャッシュの満杯度と、
記憶要素内の空き領域の量と、
前記記憶システムのクライアントのために記憶要素によって実行された読み出しおよび書き込みの量と、
記憶要素によってログ記録されたデータエラーの数とを含むことを特徴とする請求項２に記載の記憶システム。
【請求項７】
前記ソフトウェアは、
ａ）作業用セットを、前記記憶要素のうちのすべてを含むように初期化し、次に、
ｂ）前記作業用セットを、第１の記憶装置の負荷または使用状況の基準に従ってソートし、次に、
ｃ）前記作業用セットを、前記記憶要素のうちの１つ以上を除去することによって減少させ、次に、
ｄ）前記作業用セットを、第２の記憶装置の負荷または使用状況の基準に従ってソートし、次に、
前記作業用セットから前記グローバルリストの第１のメンバーを選択することによって、前記グローバルリストを更新することを特徴とする請求項２に記載の記憶システム。
【請求項８】
前記ソフトウェアは、
前記作業用セットから前記グローバルリストの前記第１のメンバーを選択した後で、前記作業用セットを、前記選択された第１のメンバーと同じグループに属する記憶要素を除く、すべての前記記憶要素を含むように初期化し、次に、
ｂ）〜ｄ）を繰り返し、次に、
前記作業用セットから前記グローバルリストの第２のメンバーを選択することによって、前記グローバルリストを更新することを特徴とする請求項７に記載の記憶システム。
【請求項９】
データ記憶システムを動作させるための方法であって、
ａ）前記システムの複数の記憶要素から、記憶装置の負荷および使用に関する定量的データを収集するステップと、
ｂ）前記収集された定量的データに従って、前記記憶要素をランク付けするステップと、
ｃ）前記システムのユーザによって要求されたファイルを記憶する、前記記憶要素にわたるパーティションを、前記記憶要素のうちのいくつかを前記パーティションのメンバーとして識別することによって決定することであって、前記メンバーは前記ランク付けから選択され、前記記憶要素は複数のグループとして配備され、各グループは、共通の設置パラメータを有する、それぞれの２つ以上の前記記憶要素を有し、ソフトウェアは、このグループ分けの知識を使用して前記記憶要素をソートし、前記パーティションの前記メンバーは、前記メンバーのそれぞれが、前記グループのうちの異なる１つからのものであるように選択されるステップと、
ｄ）複数のユーザ要求に対してｃ）を実行するステップと、
ｅ）１）前記ランク付けが古くなったこと、２）前記システムが修復されたこと、および３）前記システムがアップグレードされたことからなる群のうちの１つに応えて、前記ランク付けを更新するためにｂ）を実行するステップとを含むことを特徴とする方法。
【請求項１０】
負荷の基準は、記憶要素内のデータキャッシュの満杯度と、前記記憶要素内の空き領域の量と、前記記憶要素が前記システムの修復に関わっている度合いと、前記記憶要素によってログ記録されたデータエラーの数とからなる群のうちの１つを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
使用状況の基準は、記憶要素がパーティション内で参照された回数と、前記システムのクライアントのために前記記憶要素によって実行された読み出しおよび書き込みの量とからなる群のうちの１つを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
オーディオビデオ処理システムであって、
前記システムの複雑さを複数のクライアントから隠すためのデータファブリックを有する分散記憶システムであって、前記データファブリックは、クライアントによって要求されたデータを記憶する前記システムの複数の記憶要素にわたるパーティションを決定し、前記データファブリックは、前記記憶要素から記憶装置の負荷および使用状況の統計を収集し、パーティション内での使用のためにより好適なものからパーティション内での使用のためにより好適でないものへとソートされた前記記憶要素のリストを維持するために前記収集された統計を使用し、前記データファブリックは、前記リストから前記パーティションのメンバーを選択し、前記記憶要素は複数のグループとして配備され、各グループは、共通の設置パラメータを有するそれぞれの２つ以上の前記記憶要素を有し、ソフトウェアは、このグループ分けの知識を使用して前記記憶要素をソートし、前記パーティションの前記メンバーは、前記メンバーのそれぞれが前記グループのうちの異なる１つから選択される分散記憶システムと、
オーディオおよびビデオの取り込みソースからデータを取得するための、および、前記データの記憶の要求において前記データファブリックのクライアントとして働くメディアサーバとを含むことを特徴とするオーディオビデオ処理システム。
【請求項１３】
前記データファブリックは、前記リストが更新されるまで、前記リストを、複数のクライアント要求のためのパーティションを決定するために使用し、
前記データファブリックは、１）前記リストが古くなったこと、２）前記システムが修復されたこと、および３）前記システムがアップグレードされたことからなる群のうちの１つに応えて、前記リストを更新することを特徴とする請求項１２に記載のオーディオビデオ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般に、高い容量、性能、およびデータ可用性を有する電子データ記憶システムに関し、特に、記憶容量およびクライアントを追加することに関してスケーラブルな電子データ記憶システムに関する。その他の実施形態も説明され特許請求される。
【背景技術】
【０００２】
今日の情報集約的環境においては、膨大な量のデジタルデータを記憶する必要のある、多くの企業およびその他の団体が存在する。それらには、ネットワークで結ばれた何千人もの従業員によって共有される企業内情報を記憶する大企業などの事業体、何百万もの製品に関する情報を記憶するオンライン販売業者、ならびに、大規模な文献の収集物を有する図書館および教育機関が含まれる。大規模データ記憶システムの使用に対する最近のニーズは、放送テレビジョンの番組編成市場にある。そのような業務は、テレビ番組の作成、編集、および放送のための古いアナログ技術から、全デジタルの手法へと推移しつつある。（コマーシャルなどの）コンテンツ自体がデジタルビデオファイルの形式で記憶されるのみでなく、放送のための準備における番組およびコマーシャルの編集およびシーケンシング（ｓｅｑｕｅｎｃｉｎｇ）も、強力なコンピュータシステムを使用してデジタル処理される。データ記憶システム内に記憶されてもよいその他のタイプのデジタルコンテンツとしては、地震予知のための地震探査データ、および地図作成のための衛星画像データが挙げられる。
【０００３】
メディアサーバと呼ばれる強力なデータ記憶システムが、カリフォルニア州サニーヴェール（Ｓｕｎｎｙｖａｌｅ，Ｃａｌｉｆｏｒｎｉａ）のオムネオン・ビデオネットワークス（Ｏｍｎｅｏｎ  Ｖｉｄｅｏ  Ｎｅｔｗｏｒｋｓ）（本特許出願の譲受人）によって提供されている。メディアサーバは、サーバマシンのネットワーク上で実行されている複数のソフトウェア構成要素から構成される。サーバマシンは、データを記憶する回転磁気ディスクドライブなどの大容量記憶装置を有する。サーバは、ファイルの作成、書き込み、または読み出しの要求を受け入れ、そして、１つ以上のディスクドライブ内にデータを転送するプロセス、または要求された読み出しデータをそれらのディスクドライブから送り出すプロセスを管理する。サーバは、どのファイルがどのドライブに記憶されているかを追跡記録する。ファイルへのアクセス要求、すなわち、作成、書き込み、または読み出しの要求は、通常、サーバネットワークに接続されたクライアントマシン上で実行されていてもよい、クライアントアプリケーションプログラムと呼ばれるものから受信される。例えば、アプリケーションプログラムは、（システム内にデジタルビデオファイルとして記憶された）特定のビデオクリップを必要とする、テレビジョンスタジオのワークステーション上で実行されているビデオ編集アプリケーションであってもよい。
【０００４】
ビデオデータは、例えばＭｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）フォーマットの形式の圧縮を使用したとしても、大容量である。したがって、そのような環境のためのデータ記憶システムは、数百テラバイト、またはそれよりも大きな記憶容量を提供するように設計される。さらに、高速データ通信リンクが、ネットワークのサーバマシンを接続するために使用され、そして場合によっては、システムへのアクセス用に１００Ｇｂ／秒以上の共有総帯域幅を提供する特定のクライアントマシンと接続するためにも使用される。記憶システムは、さらに、複数のクライアントによるアクセスサービスを同時に提供することが可能である。
【０００５】
記憶システムの全体的コストの低減を支援するために、分散アーキテクチャが使用される。何百もの小さな、比較的低コストの、大量生産ディスクドライブ（現在では、各ユニットが１００Ｇバイト以上の容量を有する）が、はるかに大きな総記憶容量に到達するように、一緒にネットワーク接続されてもよい。しかし、記憶容量のこの分散は、システム内で正常なアクセスを妨げる障害が発生する可能性も増加させる。そのような障害は、システムハードウェア内（例えば、ケーブル、コネクタ、ファン、電源、またはディスクドライブユニット）だけでなくソフトウェア内（特定のクライアントアプリケーションプログラムにおけるバグなど）も含むさまざまな異なる場所で発生する可能性がある。他の場合ならばそのアクセスを阻止していたであろうディスク障害にもかかわらず所与のアクセスサービスを提供するために（例えば、要求されたデータを利用可能にするために）、記憶システムは、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｅｘｐｅｎｓｉｖｅ  ｄｉｓｋｓ（ＲＡＩＤ）の形式で、冗長性を実装している。システムは、さらに、代替えドライブ内へ、故障したディスクドライブのコンテンツを再構築することも可能にする。
【０００６】
記憶システムは、さらに、複雑なハードウェアおよびソフトウェアの交換を行う必要なしに、より大きなデータ記憶の要求、および増加するクライアント負荷に対処するために、容易に拡張するように、スケーラブルでなければならない。
【０００７】
本発明の実施形態は、限定のためではなく、例として、同様の参照符は同様の要素を示す添付の図面の図中に示されている。本開示における、本発明の「一（ａｎ）」実施形態への言及は、必ずしも同じ実施形態への言及とは限らず、そしてそれらは、少なくとも１つを意味していることに留意すべきである。
【発明を実施するための最良の形態】
【０００８】
本発明の一実施形態は、容量、性能、およびデータ可用性の厳しい要求を、よりスケーラブルなアーキテクチャを使用して、より良く達成することが可能なデータ記憶システムである。図１は、ビデオおよびオーディオ情報処理環境の一部としての、そのような記憶システムを示す。しかし、以下に記載するデータ記憶システムならびにその構成要素または特徴は、代わりに、その他のタイプの適用例（例えば、図書館、地震探査データ処理センター、販売業者の製品カタログ、中央企業情報記憶など）において使用されてもよいということに留意すべきである。オムネオンコンテンツライブラリ（Ｏｍｎｉｏｎ  ｃｏｎｔｅｎｔ  ｌｉｂｒａｒｙ）（ＯＣＬ）システムとも呼ばれる、記憶システム１０２は、データ保護、ならびに、ハードウェアおよびソフトウェアの耐障害性と復旧とを提供する。
【０００９】
システム１０２は、さまざまな異なる形態を取ってもよい、クライアントマシンまたはクライアントネットワークを使用してアクセスされてもよい。例えば、メディアサーバ１０４によって、コンテンツファイル（この例では、ＭＰＥＧおよび高品位（ｈｉｇｈ  ｄｅｆｉｎｉｔｉｏｎ）（ＨＤ）を含むさまざまなタイプのデジタルメディアファイル）が記憶されるように要求されてもよい。図１に示すように、メディアサーバ１０４は、そのようなファイルを作成するために、メディア処理の「インジェスト」段階では、標準的なデジタルビデオカメラ、テープレコーダ、および衛星フィードをインタフェースとしてもよい。代替として、クライアントマシンがインターネットなどの遠隔ネットワーク上にあってもよい。「プロダクション」段階においては、記憶されたファイルが、閲覧、編集、およびアーカイブのために、システムからクライアントマシンにストリーミングされてもよい。変更されたファイルは、次に、「プレイアウト」段階では、配信のために、システム１０２からメディアサーバ１０４へ、または、遠隔ネットワークを介して直接、送信されてもよい。
【００１０】
ＯＣＬシステムは、同時クライアントアクセスの数が増加するにつれて、または総記憶容量の要求が増加するにつれて拡張することが特に容易であると判明しうるアーキテクチャを有する、高性能、高可用性の記憶サブシステムを提供する。（図１におけるような）メディアサーバ１０４と（以下で説明する）コンテンツゲートウェイとの追加は、さまざまな送信元からのデータが１つの高性能／高可用性システムに集約され、それにより、企業が管理しなければならない記憶ユニットの総数を減らすることを可能にする。（さまざまなサイズのファイル、およびさまざまなクライアント負荷を含む）さまざまなタイプの作業負荷の処理が可能であることに加えて、システム１０２の実施形態は、自動負荷バランシング、高速ネットワークスイッチング相互接続、データキャッシング、およびデータ複製を含む特徴を有してもよい。本発明の一実施形態によれば、ＯＣＬシステムは、性能において、比較的小規模な、すなわち６６テラバイト未満のシステム上での２０Ｇｂ／秒から、より大規模な、すなわち１ペタバイトを超えるシステムの場合の６００Ｇｂ／秒を超える性能まで、必要に応じて拡張する。そのような数は、当然ながら、ＯＣＬシステムの現在の能力の例にすぎず、請求される本発明の範囲全体を限定することを意図するものではない。
【００１１】
本発明の一実施形態は、停止することなく動作するために設計されたＯＣＬシステムであって、記憶装置と、クライアントと、その構成要素間のネットワーキング帯域幅との拡張を、進行中のアクセスをシャットダウン、あるいは、それらのアクセスに影響を及ぼすことなく行うことが可能になるシステムである。ＯＣＬシステムは、障害となるただ１つの点（ｓｉｎｇｌｅ  ｐｏｉｎｔ  ｏｆ  ｆａｉｌｕｒｅ）が存在しないように、十分な冗長性を有することが好ましい。ＯＣＬシステム内に記憶されたデータは複数の複製を有し、したがって、大容量記憶ユニット（例えば、ディスクドライブユニット）、さらにはサーバ全体が損なわれても、データを失うことはない。一般的なＲＡＩＤシステムとは異なり、ＯＣＬシステムの交換されたドライブユニットは、先の（故障した）ドライブと同じデータを含む必要はない。その理由は、ドライブの交換が実際に発生するまでには、関連するデータ（故障したドライブに記憶されていたファイルスライス）は、ファイルの作成時に始まったファイル複製のプロセスによって、すでに他の場所に保存されているからである。ファイルは、ハードウェア障害から保護するために、さまざまなドライブにわたって、システム内に複製される。これは、一時点における任意の１つのドライブの障害が、記憶されたファイルがシステムによって再構成されることが不可能になることはないことを意味し、その理由は、ファイルのいかなる失われたスライスも、他のドライブ内で依然として見つけることが可能だからである。複製は、さらに、ファイルをより多くのサーバからアクセス可能にすることによって、読み出し性能の向上を支援する。
【００１２】
どのファイルがどこに記憶されているか（または、ファイルのスライスがどこに記憶されているか）を追跡記録するために、ＯＣＬシステムは、新たに作成された、または以前に記憶されたファイルのファイル名と、そのスライスと、スライスを実際に含むシステムの記憶要素の識別情報との間のマッピングを含むメタデータ（ファイルに関する情報）の知識を有するメタデータサーバプログラムを有する。
【００１３】
大容量記憶ユニットの障害に加えて、ＯＣＬシステムは、任意のより大きな構成部分、または、さらには、構成要素全体（例えば、メタデータサーバ、コンテンツサーバ、およびネットワーキングスイッチ）の障害からの保護を提供できるかもしれない。以下で説明するように、それぞれのエンクロージャまたはラック内に配置された、サーバの３つ以上のグループを有するシステムなどのより大規模なシステムでは、エンクロージャまたはラック全体の障害の場合でもＯＣＬシステムが動作を継続するような、十分な冗長性が存在する。
【００１４】
次に、図２を参照すると、本発明の一実施形態による、複数のクライアントに接続されたデータ記憶システムのシステムアーキテクチャが示されている。システムは、システム内に記憶されている複数のファイルについてのメタデータをそれぞれが記憶する複数のメタデータサーバマシンを有する。そのようなマシン内で実行されているソフトウェアは、メタデータサーバまたはメタデータサーバ２０４と呼ばれる。メタデータサーバは、ＯＣＬシステムの動作の管理を担当してもよく、そして、クライアントにとっての最初の接点である。スマートクライアント２０８およびレガシークライアント２１０という、２つのタイプのクライアントが図示されていることに留意されたい。スマートクライアントは、システムの現在のインタフェースの知識を有し、システムのネットワーキングスイッチ相互接続２１４（ここでは、Ｇｂイーサネット（登録商標）スイッチ）に直接接続することが可能である。スイッチ相互接続は、図示されているように、複数のコンテンツサーバ２１６およびメタデータサーバ２０４の間の選択的ブリッジとして働く。もう一方のタイプのクライアントは、現在のファイルシステムドライバ（ＦＳＤ）がインストールされていないか、または、ＯＣＬシステムのために現在提供されているソフトウェア開発キット（ＳＤＫ）を使用しないレガシークライアントである。レガシークライアントは、ＯＣＬシステム専用ではない一般的なファイルシステムインタフェースを使用して、図示されているようにプロキシまたはコンテンツゲートウェイ２１９を介して、システム相互接続２１４と間接的に通信を行う。
【００１５】
ファイルシステムドライバすなわちＦＳＤは、ＯＣＬシステムにアクセスするための標準的なファイルシステムインタフェースを提示する、クライアントマシン上にインストールされるソフトウェアである。他方、ソフトウェア開発キットすなわちＳＤＫは、ソフトウェア開発者がＯＣＬに、アプリケーションプログラムから直接アクセスすることを可能にする。この選択肢は、さらに、以下で説明する複製因子（ｒｅｐｌｉｃａｔｉｏｎ  ｆａｃｔｏｒ）の設定などのＯＣＬ固有の機能を、クライアントマシンのユーザが利用することを可能にする。
【００１６】
ＯＣＬシステムでは、ファイルは、通常、複数のコンテンツサーバ（コンテンツサーバとも呼ばれる）にわたって記憶される際に、スライスに分割される。各コンテンツサーバは、１つ以上のローカルディスクドライバの独自の組を備えた異なるマシン上で実行される。これがシステムの記憶要素の好ましい実施形態である。したがって、ファイルの部分は、さまざまな記憶要素内のさまざまなディスクドライブにわたって散在させられる。現在の一実施形態では、スライスは、固定サイズが好ましく、従来のディスクブロックよりもはるかに大きく、それにより、大規模データファイル（例えば、現在では、大規模なビデオおよびオーディオメディアファイルに好適な、８Ｍバイト）に対してより良い性能を持たせることを可能にする。さらに、ファイルは、ハードウェア障害から保護するために、さまざまなドライブにわたって、システム内で複製される。これは、一時点における任意の１つのドライブの障害が、記憶されたファイルがシステムによって再構成されることが不可能になることはないことを意味し、その理由は、ファイルの、いかなる紛失したスライスも、他のドライブ内で依然として見つけることが可能だからである。複製は、さらに、ファイルをより多くのサーバからアクセス可能にすることによって、読み出し性能の向上を支援する。システム内の各メタデータサーバは、どのファイルがどこに記憶されているか（または、ファイルのスライスがどこに記憶されているか）を追跡記録する。
【００１７】
メタデータサーバは、コンテンツサーバのうちのどれが、実際のコンテンツまたはデータを記憶のために受信するのに利用可能であるかを決定する。メタデータサーバは、さらに、負荷バランスを取るように機能し、これはすなわち、帯域幅の制限により、または特定のコンテンツサーバがいっぱいになっていることにより、コンテンツサーバのうちのどれが新しいデータの部分を記憶するために使用されるべきで、どれが使用されるべきでないかの決定を行うことである。データ可用性およびデータ保護を支援するために、ファイルシステムメタデータは、複数回複製されてもよい。例えば、少なくとも２つのコピーが、各メタデータサーバマシン上に（そして、例えば、各ハードディスクドライブユニット上に１つ）記憶されてもよい。メタデータの複数のチェックポイントが、定期的に取られる。チェックポイントは、システム内で実行中のファイルシステムまたはデータファブリックのポイントインタイムスナップショット（ｐｏｉｎｔ  ｉｎ  ｔｉｍｅ  ｓｎａｐｓｈｏｔ）であり、システム復旧の場合に使用される。ＯＣＬシステムのほとんどの実施形態において、全体的なシステムの動作への影響が最小であるように、チェックポイントが発生するためには数分の時間しか必要とされないことが期待される。
【００１８】
通常の動作では、すべてのファイルアクセスは、メタデータサーバを介して開始または終了する。メタデータサーバは、例えば、ファイルオープン要求に対して、読み出しまたは書き込み動作のために利用可能なコンテンツサーバのリストを返すことによって応答する。それ以降は、そのファイルについてのクライアント通信（例えば、読み出し、書き込み）は、メタデータサーバではなく、コンテンツサーバに向けられる。ＯＣＬ  ＳＤＫおよびＦＳＤは、当然、それらの動作の詳細からクライアントから見えないように隠す。上述のように、メタデータサーバは、ファイルおよびスライスの配置を制御して、コンテンツサーバのバランスのとれた利用を提供する。
【００１９】
図２には示していないが、ＯＣＬシステムのコンフィギュレーションおよび監視を担当する、例えば、独立したラックマウント式サーバマシン上で動作するシステムマネージャがさらに提供されてもよい。
【００２０】
ＯＣＬシステムのさまざまな構成要素間の、すなわち、コンテンツサーバおよびメタデータサーバ間の接続は、システム相互接続の障害の場合に必要な冗長性を提供しなければならない。比較的小規模なＯＣＬシステムのシステム相互接続についての、論理的および物理的なネットワークトポロジをさらに示す図３を参照されたい。接続は、「イーサネット」規格によって享受される広範な業界から支持され、かつ、技術的にも成熟しているという利点を活用するように、ＯＣＬシステム全体にわたってＧｂ「イーサネット」であることが好ましい。その利点は、より低いハードウェアコスト、より広範な技術要員によって熟知され、およびアプリケーション層においてより迅速に導入できるという利点をもたらすことが期待される。ＯＣＬシステムのさまざまなサーバ間の通信は、現在のインターネットプロトコル（ＩＰ）ネットワーキング技術を使用することが好ましい。しかし、その他の相互接続ハードウェアおよびソフトウェアが、サーバ間でのパケットの転送に必要とされる速度をそれらが提供する限り、代わりに使用されてもよい。
【００２１】
ネットワークスイッチが、システム相互接続の部分として使用されることが好ましい。そのような装置は、自動的にネットワークを複数のセグメントに分割し、セグメント間を高速に選択するブリッジとして働き、ネットワーク帯域幅に関して他のコンピュータのペアと競合しないように複数のコンピュータのペアの同時接続をサポートする。そのような装置は、これを各宛先アドレスとそのポートとのテーブルを維持することによって達成する。スイッチは、パケットを受信したら、パケット内のヘッダ情報から宛先アドレスを読み出し、送信元ポートと宛先ポートとの間で一時的な接続を確立し、パケットをその接続上で送信し、そして、次に、接続を終了してもよい。
【００２２】
スイッチは、コンピュータのペア間で複数の一時的なクロスオーバケーブル接続を確立していると考えることができる。スイッチ内の高速電子回路は、送信側コンピュータからの１つのケーブルの端（送信元ポート）を、受信側コンピュータに至る別のケーブルの端（宛先ポート）に、例えばパケットごとに、自動的に接続する。複数のこのような接続が、同時に発生してもよい。
【００２３】
図３のトポロジの例では、システムのさまざまな構成要素間の必要な接続を提供するために、マルチＧｂ「イーサネット」スイッチ３０２、３０４、３０６が使用されている。現在の例では、１Ｇｂ「イーサネット」および１０Ｇｂ「イーサネット」スイッチを使用し、クライアントは４０Ｇｂ／秒の帯域幅を利用可能である。しかし、将来はさらに高速なスイッチが使用されてもよいため、これらは本発明の範囲を限定することを意図するものではない。図３のトポロジ例は、サブネットＡおよびサブネットＢという２つのサブネットを有し、サブネットＡおよびサブネットＢ内にはコンテンツサーバが配置されている。各コンテンツサーバは２つのネットワークインタフェースを有し、１つはサブネットＡへの、そしてもう１つはサブネットＢへのネットワークインタフェースであり、それにより、各コンテンツサーバは、いずれのサブネットからでもアクセス可能になっている。サブネットケーブルにより、コンテンツサーバは２つのスイッチに接続され、各スイッチは、それぞれのサブネットに接続するポートを有する。これらの１Ｇｂ「イーサネット」スイッチのそれぞれは、１０Ｇｂ「イーサネット」スイッチへの２回線１０Ｇｂ「イーサネット」接続を有し、１０Ｇｂ「イーサネット」スイッチは、さらに、クライアントマシンのネットワークに接続されている。
【００２４】
この例では、３つのメタデータサーバが存在し、それぞれのメタデータサーバは、１Ｇｂ「イーサネット」スイッチに別個のインタフェースで接続されている。言い換えると、各１Ｇｂ「イーサネット」スイッチは、３つのメタデータサーバのそれぞれへ少なくとも１つ接続している。さらに、ネットワーキング配置は、プライベートリング１およびプライベートリング２と呼ばれる２つのプライベートネットワークが存在し、各プライベートネットワークは３つのメタデータサーバをそのノードとして備えている。メタデータサーバは互いに、リングネットワークのトポロジを用いて接続され、２つのリングネットワークは冗長性を提供する。メタデータサーバおよびコンテンツサーバは、メッシュネットワークのトポロジで接続されることが好ましい（本出願の一部であるかのように、参照により本明細書に援用される、Ａｄｒｉａｎ  Ｓｆａｒｔｉらによる「Ｎｅｔｗｏｒｋ  Ｔｏｐｏｌｏｇｙ  ｆｏｒ  ａ  Ｓｃａｌａｂｌｅ  Ｄａｔａ  Ｓｔｏｒａｇｅ  Ｓｙｓｔｅｍ」と題された米国特許出願−Ｐ０２０を参照されたい）。図３の実施形態の物理的実装の例は、各コンテンツサーバを別個のサーバブレードとして実装し、すべてのサーバブレードを同じエンクロージャまたはラックの内部に実装するものである。「イーサネット」スイッチ、および３つのメタデータサーバも、同じラック内に配置されてもよい。本発明は、当然、１ラックの実施形態には限定されない。コンテンツサーバ、メタデータサーバ、およびスイッチで満たされた追加のラックが、ＯＣＬシステムを拡張するために追加されてもよい。より一般的には、システムのコンテンツサーバマシンはグループにまとめられてもよく、各グループ内のメンバーは、電源、モデルタイプ、および特定のスイッチングトポロジへの接続性などの、何らかの共通の設置パラメータ（ｉｎｓｔａｌｌａｔｉｏｎ  ｐａｒａｍｅｔｅｒｓ）を共有する。例えば、一つのグループ分けにおいては、各グループは、同じラック内にあり、かつ同じ電源を共有するすべてのサーバブレードを含む。
【００２５】
次に、図４を参照すると、ＯＣＬシステムのソフトウェアアーキテクチャの例が示されている。ＯＣＬシステムは、システムの複雑さを複数のクライアントマシンのユーザから遮蔽するための、メタデータサーバマシン、コンテンツサーバマシン、およびクライアントマシンの一部またはすべてにおいて実行される、分散ファイルシステムプログラムまたはデータファブリックを有している。言い換えると、ユーザは、この場合はオーディオおよび／またはビデオ情報の記憶および取り出しを、クライアントプログラムを介して要求してもよく、ファイルシステムまたはデータファブリックは、ＯＣＬシステムを、ユーザから１つの単純な記憶リポジトリとして見えるようにする。ファイルの作成、書き込み、または読み出しの要求は、ネットワーク接続されたクライアントから、メタデータサーバによって受信される。ファイルシステムまたはデータファブリックのソフトウェア、あるいは、この場合は、そのソフトウェアのメタデータサーバ部分は、受信した完全なファイル名を対応するスライスハンドルに変換し、スライスハンドルは、特定のファイルの構成要素のスライスが記憶されているまたは作成されるべきコンテンツサーバ内の位置を指す。記憶される実際のコンテンツまたはデータは、クライアントによって直接コンテンツサーバに示される。同様に、読み出し動作は、クライアントによってコンテンツサーバに直接要求される。
【００２６】
各コンテンツサーバマシンまたは記憶要素は、例えば回転磁気ディスクドライブユニットなどの、ローカル大容量記憶ユニットを１つ以上有してもよく、そして、その関連するコンテンツサーバプログラムが、その１つ以上のドライブ上への特定のスライスのマッピングを管理する。ファイルシステムまたはデータファブリックは、複製によって、ファイルの冗長性を実装する。好ましい実施形態では、複製動作はスライスレベルで制御される。コンテンツサーバは、クライアントを関与させずにスライスの複製を達成し、スライスの書き込みの検証をお互いに取得するために相互に通信を行う。
【００２７】
その上、ファイルシステムまたはデータファブリックは、複数のマシン間に分散させられているため、ファイルシステムは、それが存在している各マシン（それがコンテンツサーバであれ、クライアントであれ、メタデータサーバマシンであれ）の処理能力を使用する。図４の実施形態に関連して以下で説明するように、記憶容量を増加させるためにコンテンツサーバを追加すると、システム内のネットワークインタフェースの総数は自動的に増加し、これは、システム内のデータにアクセスするために利用可能な帯域幅も自動的に増加することを意味している。さらに、各コンテンツサーバマシン内の中央処理ユニットおよび関連するメインメモリの存在により、全体としてのシステムの処理能力も増加する。より多くのクライアントをシステムに追加することも、システム全体の処理能力を上昇させる。そのような拡張要素（スケーリング・ファクター、scaling  factor）は、より多くのストレージ（記憶装置）およびより多くのクライアントが追加されるにつれて、システムの処理能力および帯域幅は比例的に増加し、システムがより大きくなるにつれて動きが取れなくなることはないということが保証されることを意味している。
【００２８】
図４をさらに参照すると、メタデータサーバは、非アクティブなバックアップユニットであるのとは対照的に、システムのアクティブなメンバーであると考えられる。言い換えると、ＯＣＬシステムのメタデータサーバは、同時にアクティブになり、そしてそれらは、意思決定において協働する。クライアントの負荷がメタデータサーバ間に分散させられるため、これによりシステムがより多くのクライアントに対処できるように拡張することを可能にする。クライアント負荷がさらに増加するにつれて、追加のメタデータサーバが追加されてもよい。
【００２９】
複数のメタデータサーバによる協働処理の例は、コンテンツサーバ上に記憶されたスライス情報の整合性の検証である。メタデータサーバは、スライス記憶の、そのメタデータサーバのビューとコンテンツサーバのビューとの間のあらゆる違いを調整する。それらのビューは、より数の少ないディスクを持つサーバがシステムに再び加えられる場合や、あるいは、より早い使用時から、異なっている可能性がある。何十万ものスライスが１つのコンテンツサーバ上に記憶されてもよいため、それらのビューの違いを調整するためのオーバヘッドは、かなり大きい可能性がある。それらのビューのあらゆる違いが調整されるまで、コンテンツサーバの準備は確立されないため、スライスビューのあらゆる違いも調整するための時間を最小にすることにより即座にメリットが得られる。複数のメタデータサーバが、そのようなコンテンツサーバによってサポートされるデータファブリックの部分を分割し、さまざまなパーティションを並行して同時に調整する。この並行処理の間にメタデータサーバが故障した場合、残りのメタデータサーバは、すべての未処理の調整が完了するように分割を再調整する。メタデータサーバのスライスビューのいかなる変化も、すべてのアクティブなメタデータサーバ間で動的に共有される。
【００３０】
別の例は、１つまたは複数のコンテンツサーバがデータファブリックをもはやサポートできなくなった場合に、大規模な再複製を共同で処理することである。大規模な再複製は、追加のネットワークのオーバヘッドと処理のオーバヘッドとを意味する。これらの場合、メタデータサーバは、このオーバヘッドが、利用可能なメタデータサーバおよび対応するネットワーク接続間に散在させられるように再複製領域を動的に分割（パーティショニング）して、データファブリックおよび対応するデータファイル内の対応する「壊れた部分」をインテリジェントに修復する。
【００３１】
別の例は、１つまたは複数のコンテンツサーバがデータファブリックをもはやサポートできないということを共同で確認することである。場合によっては、コンテンツサーバは、完全にアクセス不可能ではないが部分的にアクセス不可能になることがある。例えば、組み込まれたネットワーク冗長性のため、スイッチの構成要素が故障する場合がある。これは、すべてではないが一部のメタデータサーバが、１つまたは複数のコンテンツサーバとの監視の連絡が行えないという結果になる可能性がある。コンテンツサーバが、少なくとも１つのメタデータサーバにアクセスできる場合には、関連するデータパーティションサブセットは再複製される必要はない。大規模な再複製は、かなりの処理のオーバヘッドを生じさせる可能性があるため、メタデータサーバにとって、不必要な再複製を回避することは重要である。これを達成するために、メタデータサーバは、ネットワーク内のアクティブなコンテンツサーバのそれらのビューを交換する。１つのメタデータサーバが、特定のコンテンツサーバをもはや監視することができない場合、そのメタデータサーバは、いかなる大規模な再複製の開始を決定する前にも、他のメタデータサーバと協議する。
【００３２】
本発明の一実施形態によれば、複製の量（「複製因子」とも呼ばれる）は、各ファイルと個別に関連付けられる。ファイル内のすべてのスライスは、同じ複製因子を共有することが好ましい。この複製因子は、ユーザによって動的に変更されてもよい。例えば、ファイルを開くための、ＯＣＬシステムのアプリケーションプログラミングインタフェース（ＡＰＩ）関数は、複製因子を指定する引数を含んでもよい。冗長性および性能対記憶コストのこのきめの細かい制御は、ユーザが、各ファイルについて別個に決定を行うことと、ファイル内に記憶されているデータの変化する価値を反映するようにそれらの決定を時間とともに変更することと、を可能にする。例えば、ＯＣＬシステムが、放送されるべき一連のコマーシャルと生番組部分とを作成するために使用される場合、スポーツの試合の中間の休みに続く一番初めのコマーシャルは、特に高価なコマーシャルである可能性がある。したがって、ユーザは、そのようなコマーシャルファイルについての複製因子を、コマーシャルのプレイアウトの後までは一時的に増加させ、そして次に、コマーシャルが放送されたら、複製因子を適切なレベルに戻るように減少させることを望むかもしれない。
【００３３】
メタデータサーバによる協働の別の例は、複製因子の減少が指定された場合に発生する。それらの場合、負荷のバランスを取ることデータ可用性とネットワーク経路とに従ってどの位置を解除するかを決定するために、データファブリックのグローバルビューが使用される。
【００３４】
本発明の別の実施形態によれば、ＯＣＬシステム内のコンテンツサーバは、グループにまとめられる。グループは、スライスの複製の位置について決定を行うために使用される。例えば、物理的に同じ装置ラックまたはエンクロージャ内にあるコンテンツサーバのすべてが、１つのグループ内に配置されてもよい。ユーザは、したがって、エンクロージャ内のサーバマシンの配線によって、コンテンツサーバ間の物理的な関係をシステムに示してもよい。スライスの複製は、次に、２つの複製がコンテンツサーバの同じグループ内にあることがないように散在させる。これは、ＯＣＬシステムが、ラック全体を巻き込み得るハードウェア障害に対する耐性を有することを可能にする。
【００３５】
［複製］
スライスの複製は、コンテンツサーバの間で内部的に処理されることが好ましい。クライアントは、したがって、それらのファイルの複数のコピーを書き込む追加の帯域幅を費やすことは要求されない。本発明の一実施形態によれば、ＯＣＬシステムは、書き込まれているファイルについての実際の複製因子よりも少ない数の複製の書き込みの確認応答（ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）を、クライアントが要求することができる確認応答の方式を提供する。例えば、複製因子は数百であってもよく、その結果、何百もの複製についての確認応答を待つことにより、クライアントの処理に大幅な遅延がもたらされる。これは、クライアントが、書き込みの速さとファイルデータの保護レベルの確実性とをトレードオフすることになるかもしれない。速度に敏感なクライアントは、ほんの少しの複製のみが作成された後の確認応答を要求してもよい。対照的に、書き込みに敏感なクライアントまたは価値の高いデータを書き込むクライアントは、指定された数の複製がすべて作成された後にのみ、コンテンツサーバによって確認応答が提供されることを要求してもよい。
【００３６】
［インテリジェントスライス］
本発明の一実施形態によれば、ファイルは、ＯＣＬシステム内に記憶される際に、スライスに分割される。好ましい場合、スライスは、一般的なＲＡＩＤまたはストレージエリアネットワーク（ＳＡＮ）システム内で使用される従来のディスクブロックまたはストライプとは対照的な、インテリジェントなオブジェクトであると考えることができる。インテリジェンスは、少なくとも２つの特徴に由来する。第１に、各スライスは、ファイル（そのファイルのデータをそのスライスが保持する）に関する情報を含んでいてもよい。これによりスライスは自己の位置が（ｓｅｌｆ−ｌｏｃａｔｉｎｇ）決められる。第２に、各スライスは、チェックサム情報を保持してもよく、これによりスライスは自己検証（ｓｅｌｆ−ｖａｌｉｄａｔｉｎｇ）する。従来のファイルシステムで、（ハードウェアまたはその他の障害により）ファイルデータの位置を示すメタデータが失われた場合、ファイルデータは、ファイルの断片を継ぎ合わせるための骨の折れる手作業によってのみ、回復することが可能である。本発明の一実施形態によれば、ＯＣＬシステムは、スライス自体の中に記憶されたファイル情報を使用して、自動的にファイルを継ぎ合わせることが可能である。これは、ＯＣＬシステムにおける複製機構に加えて、追加の保護を提供する。従来のブロックまたはストライプとは異なり、スライスは、集中型データ構造における破損によって失われることはありえない。
【００３７】
ファイルコンテンツ情報に加えて、スライスは、スライス作成の瞬間に作成することができるチェックサム情報も保持する。このチェックサム情報は、スライスとともに存在するように命じられ、そして、スライスが複製される際に、スライスとともにシステム全体にわたって運ばれる。チェックサム情報は、すべての複雑な電子システム内に一般に存在するランダムなハードウェアエラーによってスライス内のデータが破損してはいないことの検証を提供する。コンテンツサーバは、それらの中に記憶されているすべてのスライスについて、読み出しとチェックサム計算の実行とを継続的に行うことが好ましい。これは、データの破損のアクティブ検査とも呼ばれる。これは、スライスデータがクライアントによって要求される前に事前の警告を提供するタイプのバックグラウンド検査活動であり、したがって、ファイル読み出しの間にエラーが発生する可能性は減少し、そして、他の場合ならばスライスの複製が破損したままになっている可能性がある時間の量を減少させる。
【００３８】
［冗長データファブリックの動的分割］
次に、図５を参照すると、本発明の一実施形態による、冗長データファブリックの動的分割のための方法を説明するブロック図が示されている。データファブリックはデータ記憶システムの一部であり、システム内に記憶されているファイルのメタデータをそれぞれに記憶するための多数のメタデータサーバマシンと、メタデータによって示された位置にファイルのスライスを記憶するための多数の記憶要素とを備えている。この図は、システムを構成する記憶要素５７２＿１、５７２＿２、．．．５７２＿Ｋを示しているが、その他の構成要素は示していない。例えば、メタデータサーバマシンと、記憶要素と、サーバマシンおよび記憶要素が通信可能に結合されたシステム相互接続とを備えたデータ記憶システムの例を示す図３を参照されたい。データファブリックは、それらのハードウェア構成要素の一部またはすべてにおいて実行され、システムの複雑さをクライアントユーザから見えないようにして隠すように設計される。
【００３９】
データファブリックは、さらに、クライアントによって要求されたデータを記憶する複数の記憶要素５７２＿１、５７２＿２、．．．５７２＿Ｋにわたるパーティションを決定するために、好ましくはメタデータサーバマシンのうちの１つにおいて実行されるソフトウェアを備えている。データは、クライアント要求に対して、新しいファイルを作成し、そして、それに関連する書き込みデータを記憶装置内に書き込むためのものであってもよい。パーティション５８０は、複数の記憶要素５７２に分散させられたデータ記憶空間となるように決定される。ソフトウェアは、記憶要素５７２のうちのいずれがパーティション５８０のメンバーとなるかを特定する。例として、数百の記憶要素５７２が存在してもよく、そして、与えられたシステム内で許容されるスライスのサイズとクライアントによってオープンが要求されたファイルのタイプ、または、記憶することが要求されるデータの量とを考慮すると、Ｋ個の記憶要素５７２のサブセットが要求されたパーティションサイズを満たすためには十分であるかもしれない。システムは、したがって、特定のクライアント要求について、Ｋ個の記憶要素５７２のうちのいずれがパーティション５８０のメンバーとなるかを決定または特定する必要がある。
【００４０】
図５をさらに参照すると、動的分割プロセスは、システム全体について、特に、記憶要素５７２の負荷、および、使用状況の統計をソフトウェアが継続的に収集する動作５８３を行う。図３を再び参照すると、本発明の一実施形態は、各記憶要素またはコンテンツサーバから、集中型メタデータサーバへのメッセージベースの制御経路を含む。制御経路は、（例えば、図３における、スイッチのネットワークインタフェースポートとサーバとを接続するマルチＧｂ「イーサネット」リンクとは別個の）独立したバス上にあってもよい。この制御経路は、メタデータサーバマシン内のソフトウェアによって、システムの記憶要素に対して、記憶可用性を含むストレージ（記憶装置）の負荷、および使用状況の統計を、システムの実行時に継続的に収集するために使用される。メタデータサーバソフトウェアは、次に、データファブリックのグローバルな可用性を計算する。これは、記憶要素のグローバルリスト５９０の更新が図５の動作５８５で行われるかもしれない。グローバルリスト５９０は、１つ以上の負荷および使用状況の基準（使用基準）に従ってソートされたシステム内のすべての記憶要素またはコンテンツサーバのリストである。これは、グローバルリスト５９０から「グローバルに最適」であると考えられるパーティションを、記憶システムのクライアントプログラムが要求することを可能にする。例えば、グローバルリスト５９０で特定される上位５０の記憶要素が、要求されるパーティション５８０のメンバーとなるように選択されてもよい。これは、グローバルリスト５９０の中にあるＫ個のソートされたエントリのサブセットを選択５９２したことが図５に示されている。このようにしてパーティション５８０が決定されたら、クライアントによって要求されたデータは、次に、定義されたパーティション５８０に１つまたは複数のコピーが書きこまれる。
【００４１】
集中型の冗長メタデータサーバ上で、データファブリックの最適な可用性をグローバルに計算することによって、本方法では、記憶要素のアクセス可能性における変化をより迅速に認識して対応を行う。メタデータサーバは、さらに、記憶要素に関するスケジュールされたサービスと、近い将来のデータファブリックの修復のための記憶要素の割り当てを事前に知る（知識を得る）ことができるため、グローバルリストをグローバルに形成することは、複数の記憶要素にわたって分散させるよりもよりも包括的な方法である。
【００４２】
データファブリックの可用性は、継続的に変化するシステム内のストレージの負荷および記憶要素の使用状況の統計を組み合わせた動的な複合物である。メタデータサーバマシン内で実行されるソフトウェアは、データファブリック全体にわたってデータのコピーを再複製することによりデータファブリックの修復も担当する。特定のコンテンツサーバのキューに入れられて待機している修復作業の量について知ること（知識）により、例えば、最適な可用性のあるパーティションの形成の過程において、記憶要素の可用性を予測するためにも用いられてもよい。
【００４３】
統計が収集された記憶装置の負荷および使用基準には、以下のものを含んでもよい。
【００４４】
記憶要素がデータファブリックに参加した度合い（ｄｅｇｒｅｅ）、
記憶要素がパーティション内で参照された回数、
記憶要素がデータファブリックの修復に関わっている度合い、
記憶要素内のデータキャッシュの満杯度（ｆｕｌｌｎｅｓｓ）、
記憶要素内の空き領域の量、
システムのクライアントのために記憶要素によって実行された読み出しおよび書き込みの量、
記憶要素内の要求キューの長さ、
メタデータサーバのためにデータファブリックを修復するために、記憶要素について保留中になっている書き込みの数、
記憶要素によって最近ログ記録されたデータエラーの数、
各メタデータサーバによって追跡記録された接続性エラーの数、および、
メタデータサーバとコンテンツサーバとの間で制御コマンドを完了するために要した時間。
【００４５】
収集されたストレージの負荷および使用状況の統計のさらなる例は、以下のとおりである。
【００４６】
記憶要素を含む、未処理のデータファブリック修復の数、
例えば、記憶要素の周囲温度、残りのバックアップ電源の数、動作中のファンの数などの環境条件が、動作限界に近付いているかどうか、および、
内部整合性サービスのために割り当てられている（例えば、メタデータサーバテーブルのチェックポイントイメージのバックアップの宛先として対象にされている）記憶要素の近さ。
【００４７】
次に、図６を参照すると、システムの記憶要素５７２は、図示されているように静的にグループ分けすることができる。ソフトウェアは、パーティション５８０のメンバーを、メンバーのそれぞれが異なるグループから選択するのが好ましい。図６に見ることができるように、これは、パーティション５８０の最初のＬ個のメンバー（ここで、Ｌは、システム内の記憶要素のグループの総数）が、それぞれ異なるグループ内にあることを意味する。記憶要素のグループ分けは、例えば、電源、モデルタイプ、および特定のスイッチングトポロジへの接続性などの共通の設置パラメータ（ｉｎｓｔａｌｌａｔｉｏｎ  ｐａｒａｍｅｔｅｒｓ）に従ってもよい。各グループは、それぞれ共通の設置パラメータを持っている２つ以上の記憶要素５７２を有する。例えば、図６において、グループ１は、同じラックまたはエンクロージャ内にあり、同じ電源を共有している（この場合は、記憶要素５７２＿８を含む）記憶要素のセットであってもよい。グループ２内の記憶要素は、異なるラック内にあり、異なる電源を共有しているものかもしれない。別のグループ分け方法は、特定のモデルタイプのディスクドライブを備えたすべての記憶要素を、同じグループ内に配置したものであってもよい。別の方法では、システムの第１の外部パケットスイッチに接続された記憶要素が、第２の外部パケットスイッチに接続された記憶要素とは別個にグループ分けされる。以下で説明するように、このタイプの静的なグループ分けは、システムの記憶要素のセット（そこから、所与のパーティションのメンバーが選択される）全体の中での「ストライド」を決定する。
【００４８】
次に、図７を参照すると、グローバルな可用性パーティションまたはグローバルリスト５９０（図５参照）を決定するためのプロセスのフロー図が示されている。グローバルリスト５９０は、システムのメタデータサーバマシンのそれぞれの中にキャッシュされ、それと一緒に新しいパーティションに対するクライアントの要求に対してキャッシュされたグローバルリストから新しいパーティションのメンバーを選択して応答するソフトウェアもキャッシュされるのが好ましい。クライアントが可用性パーティションを要求すると、メタデータサーバに関連付けられたソフトウェアは、最適な可用性パーティションのセグメントを、要求しているクライアントに割り当てることによって応答する。メタデータサーバによるそのような応答は、グローバルに保持された最適な可用性パーティションまたはグローバルリストが古くなるまで、または、データファブリックが大幅に変更されるまで継続される。グローバルリスト５９０は、例えば、記憶要素内またはシステム相互接続内に変化があった場合（例えば、所与の記憶要素のディスクドライブが故障して交換された場合）、あるいは、記憶容量または帯域幅の増加に関してシステムのアップグレードが行われた場合に更新される。
【００４９】
データファブリック内のそのような変化は、メタデータサーバによる記憶要素の定期的な監視と、記憶要素からメタデータサーバへのイベント駆動型の通知との組み合わせによって認識される。記憶要素は、データファブリックに動的に接続、切断、または再接続して、それにより、最適な可用性パーティションの選択を変更することが可能である。ディスクドライブのホットスワッピングなどによる記憶のコンフィギュレーションにおける変化も、最適な可用性パーティションの選択を変更する。
【００５０】
ここで、図７を参照すると、「最適」な可用性パーティションまたはグローバルリスト５９０を決定するためのプロセスは、システムのすべてのグループ分けされた記憶要素に対する作業用セットを、初期化することから始まる（７０４）。変数Ｎは、パーティション要求カウントを意味し、グローバルリストまたはグローバルパーティションのために選択される記憶要素のメンバーの総数を示すために用いられる（０に初期化される）。パーティション要求カウントは、例えば、要求されるファイルのタイプまたはファイルの最大サイズなどに基づいた最大の期待されるクライアント要求に基づいて定義される。
【００５１】
グローバルパーティションに選択された記憶要素のメンバーの数が、要求カウントよりも小さい間は（７０８）、プロセスは、それまでにパーティションに選択された記憶要素のメンバーの数が、システム内のグループの数よりも少ないか否かについて判定する（７１２）。上述のように、システムの記憶要素は、各グループのメンバーが１つ以上の共通の設置パラメータを有することに基づいてグループにまとめられてもよい。パーティションに選択されたメンバーの数がグループの数よりも少ない場合は、作業用セットは、上記パーティションにすでに加えられたグループに属するあらゆる記憶要素またはサーバを除くように調整される。最初のパスでは、作業用セットへの調整は行われず、次に、可用性のソート基準の初期化に進む（７１６）。ソート基準は、上述のストレージの負荷および使用基準のうちのいくつかを含む。ソート基準のうちの特定の１つについて（７２０）、作業用セットはソートされる（７２４）。例えば、このパスにおけるソート基準は、記憶要素がデータファブリックにつながる度合い（アクティブなネットワーク接続の数、接続速度、および接続性エラーを意味する）であると仮定する。作業用セットは、次に、特定のしきい値未満の要素、すなわち、「最適」より下の（例えば、平均未満の）要素を除くように調整される。プロセスは、次に、動作７２０にループバックし、そこで次のソート基準が取得されて、作業用セットは再びソートされ（７２４）、そして再び、「最適」より下の要素を除くように調整される（７２６）。このループは、ソート基準がすべて使い果たされるまで継続して繰り返され（７２８）、すべて使い果たされた時点で、パーティションの次のメンバーが選択される（７３０）。この例では、選択されるメンバーは、残っている作業用セットのうちの第１のまたは最高位のメンバーである（７３０）。変数Ｎ（最適可用性パーティションのために選択された記憶要素メンバーの数）はインクリメントされ（７３０）、そして、いま選択されたメンバーを提供しているグループが、グループリストに追加される（７３２）。
【００５２】
動作７０８から始まる上述のプロセスが、次に、パーティションの次のメンバーを選択するために繰り返される。動作７１６において、作業用セットは、パーティション内ですでに加えられたグループに属するあらゆるサーバまたは記憶要素を除去することによって、毎回再初期化されることに留意されたい。
【００５３】
パーティション内のメンバーの数が静的なグループの数に達したら（動作７１２）、次のメンバーは、グループ順序が繰り返されるように選択される。したがって、動作７３４において、グループリスト内の次のグループが取得され、これがグループリストの最後ではない場合（７３６）、作業用セットは、このパーティションのためにすでに選択されていないグループのメンバーに再初期化される（７３８）。したがって、すべてのグループがパーティションに最初に加えられた後は、公平となるようにストライドを維持するために、パーティションの次のメンバーは、最初に選択された記憶要素を提供しているグループから選択される。
【００５４】
各グループがその記憶要素のうちの２つによってパーティションに加えられるように、グループリストが使い果たされたら（動作７３６）、パーティション要求カウントが満たされるまで、パーティションの次のメンバーが既存のパーティションの順に繰り返すことにより選択されてもよい（７４０）。冗長データファブリックを動的に分割するその他の方法であってもよい。
【００５５】
本発明の一実施形態は、上述の動作のうちの一部を実行するように１つ以上のプロセッサをプログラムする命令が記憶された、機械読み取り可能な媒体であってもよい。他の実施形態では、それらの動作のうちの一部は、ハードウェアロジックを含む特定のハードウェア構成要素によって実行されてもよい。それらの動作は、代わりに、プログラムされたコンピュータ構成要素と、カスタムハードウェア構成要素との、任意の組み合わせによって実行されてもよい。
【００５６】
機械読み取り可能な媒体は、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ）、およびインターネット上の伝送に限定されない、マシン（例えば、コンピュータ）による読み出しが可能な形態で情報を記憶または伝送するための任意の機構を含んでもよい。
【００５７】
本発明は、上述の特定の実施形態に限定されない。例えば、ＯＣＬシステムは、大容量記憶ユニットとして回転磁気ディスクドライブのみを使用する、現在のバージョンを使用して説明したが、磁気ディスクドライブの代替が、システムに必要な速度、記憶容量、およびコストの要求をそれらが満たす限り、可能である。したがって、その他の実施形態が特許請求の範囲に含まれる。
【図面の簡単な説明】
【００５８】
【図１】ビデオ処理環境の一部として使用されている、本発明の一実施形態による、データ記憶システムを示す。
【図２】本発明の一実施形態による、データ記憶システムのシステムアーキテクチャを示す。
【図３】データ記憶システムの一実施形態のネットワークトポロジを示す。
【図４】本発明の一実施形態による、データ記憶システムのソフトウェアアーキテクチャを示す。
【図５】本発明の一実施形態による、冗長データファブリックの動的分割のための方法を説明するブロック図を示す。
【図６】本発明の一実施形態による、記憶要素のグループ分けの例を示す。
【図７】グローバルリストを更新するためのプロセスのフロー図を示す。
【図１】
2009529190.tif 000003
【図２】
2009529190.tif 000004
【図３】
2009529190.tif 000005
【図４】
2009529190.tif 000006
【図５】
2009529190.tif 000007
【図６】
2009529190.tif 000008
【図７】
2009529190.tif 000009
【国際調査報告】
2009529190.tif 000010
2009529190.tif 000011
2009529190.tif 000012