(57)【要約】管理ノード（２０５）を含む複数のストレージ・プロセッサ・ノード（１０３）、バックボーンスイッチ（１０１）、ディスクドライブアレイ（１１１）、および管理ノード上で実行される仮想ファイルマネージャ（３０１）を含む仮想ファイルシステム（２０９）。バックボーンスイッチはストレージ・プロセッサ・ノードの間の通信を可能にする。ディスクドライブアレイはストレージ・プロセッサ・ノードに結合されており、これらにまたがって分散されており、複数のタイトルを保存する。各タイトルはデータサブチャンク（１１３ａ）〜（１１３ｅ）に分割されており、該サブチャンクはディスクドライブアレイにわたって分散されている。各サブチャンクはディスクドライブアレイの一つのディスクドライブ上に保存される。仮想ファイルマネージャは各サブチャンクの保存およびアクセスを管理し、各タイトルについてのディレクトリ項目（２１１）を含む複数のディレクトリ項目を管理する。各ディレクトリ項目はサブチャンク位置項目のリストであり、各サブチャンク位置項目はストレージ・プロセッサ・ノード識別子、ディスクドライブ識別子および各タイトルの各サブチャンクの位置特定およびアクセスを行うための論理アドレスを含む。
2007513429.tif 000002
【特許請求の範囲】
【請求項１】
仮想ファイルシステムであって：
少なくとも一つの管理ノードを含む複数のストレージ・プロセッサ・ノードと、
前記複数のストレージ・プロセッサ・ノードのそれぞれの間の通信を可能にする、前記複数のストレージ・プロセッサ・ノードに結合されたバックボーンスイッチと、
前記複数のストレージ・プロセッサ・ノードに結合され、かつこれらにまたがって分散される、複数のタイトルを保存するディスクドライブアレイであって、各タイトルが複数のサブチャンクに分割され、該サブチャンクが前記ディスクドライブアレイにわたって分散され、各サブチャンクが前記ディスクドライブアレイの一つのディスクドライブ上に保存されるようなディスクドライブアレイとを有するシステムであって、
前記少なくとも一つの管理ノードが仮想ファイルマネージャを実行し、該仮想ファイルマネージャが前記複数のタイトルの各サブチャンクの保存およびアクセスを管理し、各タイトルについてのディレクトリ項目を含む複数のディレクトリ項目を維持し、前記ディレクトリ項目のそれぞれがサブチャンク位置項目のリストを有しており、該リスト中の各サブチャンク位置項目はストレージ・プロセッサ識別子、ディスクドライブ識別子および前記ディスクドライブアレイに保存されている各タイトルの各サブチャンクの位置を決定してアクセスするための論理アドレスを有している、ことを特徴とするシステム。
【請求項２】
前記論理アドレスを同定されたストレージ・プロセッサ・ノードの同定されたディスクドライブに提供することによって、前記複数のサブチャンクのそれぞれが単一のシーク動作において取得されることを特徴とする、請求項１記載の仮想ファイルシステム。
【請求項３】
前記ディスクドライブアレイの各ディスクドライブの全容量が前記複数のタイトルの前記複数のサブチャンクの保存のために利用可能であることを特徴とする、請求項１記載の仮想ファイルシステム。
【請求項４】
請求項１記載の仮想ファイルシステムであって、さらに：
ストレージ・プロセッサ・ノード上で実行され、選択されたタイトルについてのタイトル要求を前記仮想ファイルマネージャに提出し、前記選択されたタイトルについての対応するディレクトリ項目を受け取り、前記対応するディレクトリ項目中の各サブチャンク位置項目についてのサブチャンク読み取り要求を提出するユーザープロセスを有しており、
各サブチャンク読み取り要求が、前記対応するディレクトリ項目中の対応するサブチャンク位置項目中のストレージ・プロセッサ・ノード識別子によって同定されるストレージ・プロセッサ・ノードに送られ、各サブチャンク読み取り要求が宛先ノード識別子、前記ディスクドライブ識別子および前記論理アドレスを含んでおり、
前記仮想ファイルマネージャが前記選択されたタイトルのために前記対応するディレクトリ項目を取得し、前記タイトル要求に対応する前記ユーザープロセスに前記対応するディレクトリ項目を転送する、
ことを特徴とするシステム。
【請求項５】
請求項４記載の仮想ファイルシステムであって、さらに、サブチャンク読み取り要求を受け取り、前記ディスクドライブ識別子によって同定されるローカルディスクドライブに対して前記要求されたサブチャンクを位置特定するための前記論理アドレスを使ってサブチャンクを要求する、ストレージ・プロセッサ・ノード上で実行される転送プロセスを有することを特徴とするシステム。
【請求項６】
請求項４記載の仮想ファイルシステムであって、各タイトルが複数のデータチャンクに細分され、前記データチャンクのそれぞれが複数のサブチャンクを有しており、該サブチャンクが集団として各データチャンクについての冗長データを有しており、前記ユーザープロセスが任意のデータチャンクを、該任意のデータチャンクを有する前記複数のサブチャンクのすべてよりも一つ少ないものから構築するよう動作できることを特徴とする方法。
【請求項７】
請求項６記載の仮想ファイルシステムであって、前記ディスクドライブアレイが複数の冗長アレイグループに分割されており、各冗長アレイグループが複数のストレージ・プロセッサ・ノードにまたがって分散している複数のディスクドライブを有しており、各データチャンクの前記複数のサブチャンクが対応する冗長アレイグループのディスクドライブにまたがって分散していることを特徴とするシステム。
【請求項８】
請求項７記載の仮想ファイルシステムであって、前記ユーザープロセスが：任意の一つのディスクドライブの障害；前記複数の冗長アレイグループのそれぞれのうちの任意の一つのディスクドライブの障害；および前記複数のストレージ・プロセッサ・ノードのうちの任意の一つの障害、のうちの任意の場合において、任意の保存されているタイトルを再構築するよう動作できることを特徴とするシステム。
【請求項９】
請求項８記載の仮想ファイルシステムであって、前記ユーザープロセスが、データチャンクの欠落サブチャンクを前記データチャンクの残っているサブチャンクから再構築するよう動作し、前記再構築された欠落サブチャンクを本来ならその欠落サブチャンクのソースとなっていたはずのストレージ・プロセッサ・ノードに返すよう動作することを特徴とするシステム。
【請求項１０】
請求項９記載の仮想ファイルシステムであって、障害のあった前記本来なら前記欠落サブチャンクのソースとなっていたはずのストレージ・プロセッサ・ノードが交換ストレージ・プロセッサ・ノードに置き換えられた場合に、前記交換ストレージ・プロセッサ・ノードが、返された、および再構築されたサブチャンクを含む受け取ったサブチャンクを保存することによって、欠落および新規のタイトルデータを改めて保存することを特徴とするシステム。
【請求項１１】
請求項９記載の仮想ファイルシステムであって、さらに、前記本来なら前記欠落サブチャンクのソースとなっていたはずのストレージ・プロセッサ・ノードに結合されている、障害のあったディスクドライブの交換ディスクドライブに転送するために、返された、および再構築されたサブチャンクを含む受け取ったサブチャンクを一時的に保存するキャッシュメモリを有することを特徴とするシステム。
【請求項１２】
各サブチャンクが前記論理アドレスによって同定されるディスクドライブのあるブロック中に保存され、前記論理アドレスが論理ブロックアドレスであることを特徴とする、請求項１記載の仮想ファイルシステム。
【請求項１３】
請求項１記載の仮想ファイルシステムであって、前記仮想ファイルマネージャがタイトル記憶を管理し、各タイトルが複数のデータチャンクに細分され、各データチャンクが各データチャンクについて冗長なデータを組み込んでいる複数のサブチャンクを有していることを特徴とするシステム。
【請求項１４】
請求項１３記載の仮想ファイルシステムであって、前記ディスクドライブアレイが複数の冗長アレイグループに分割されており、各冗長アレイグループが複数のストレージ・プロセッサ・ノードにまたがって分散している複数のディスクドライブを有しており、各データチャンクの前記複数のサブチャンクが対応する冗長アレイグループのディスクドライブにまたがって分散していることを特徴とするシステム。
【請求項１５】
請求項１４記載の仮想ファイルシステムであって、さらに：
第一のストレージ・プロセッサ・ノードに結合された、複数の欠落サブチャンクをもつ交換ディスクドライブと、
前記仮想ファイルマネージャであって、各欠落サブチャンクをその対応するパリティサブチャンクとともにリストするデータチャンクをなすディスク修復ディレクトリ項目を準備し、前記ディスク修復ディレクトリ項目を前記第一のストレージ・プロセッサ・ノードに転送する仮想ファイルシステムと、
各欠落サブチャンクに対応する前記ディスク修復ディレクトリ項目中にリストされた各パリティサブチャンクに対するサブチャンク読み取り要求を提出し、受け取った対応するパリティサブチャンクを使って各欠落サブチャンクを再構築し、再構築されたサブチャンクを前記交換ディスクドライブ上に保存する、前記第一のストレージ・プロセッサ・ノード上で実行される、修復プロセス、
とを有することを特徴とするシステム。
【請求項１６】
請求項１５記載の仮想ファイルシステムであって、さらに：
スペアのストレージ・プロセッサ・ノードと、
前記スペアのストレージ・プロセッサ・ノードに結合され、前記交換ディスクドライブによって置き換えられる、部分的に障害のあったディスクドライブと、
前記仮想ファイルマネージャであって、前記ディスク修復ディレクトリ項目を、前記第一のストレージ・プロセッサ・ノードに送るのに先立ってまず前記スペアのストレージ・プロセッサ・ノードに転送する仮想ファイルマネージャと、
チェックサムおよび位置指定子を用いて前記部分的に障害のあったディスクドライブ上に保存されている前記欠落サブチャンクの有効性を試験し、前記部分的に障害のあったディスクドライブから読み込まれた有効なサブチャンクを前記第一のストレージ・プロセッサ・ノードに前記交換ディスクドライブ上に保存するために転送する、前記スペアのストレージ・プロセッサ・ノード上で実行されるサルベージプロセス、
とを有することを特徴とするシステム。
【請求項１７】
請求項１６記載の仮想ファイルシステムであって、前記修復プロセスが、対応する欠落サブチャンクがすでに再構築されて前記交換ディスクドライブ上に保存されていた場合に、前記部分的に障害のあったディスクドライブから読み込まれた受け取られた有効なサブチャンクを破棄することを特徴とするシステム。
【請求項１８】
請求項１４記載の仮想ファイルシステムであって、前記ディスクドライブアレイが所定の数のディスクドライブを有し、前記仮想ファイルマネージャが前記複数の冗長アレイグループにまたがって均等な仕方で前記複数のデータチャンクを分配するよう動作することを特徴とするシステム。
【請求項１９】
請求項１８記載の仮想ファイルシステムであって、前記仮想ファイルマネージャが、前記所定のディスクドライブ数の変化に反応して均等なデータの分配を維持するために再ストライピング処理を実行して前記複数のデータチャンクを再分配することを特徴とするシステム。
【請求項２０】
請求項１９記載の仮想ファイルシステムであって、前記再ストライピング処理がバックグラウンドタスクとして実行されることを特徴とするシステム。
【請求項２１】
請求項１９記載の仮想ファイルシステムであって、前記仮想ファイルマネージャが、前記ディスクドライブアレイの前記所定のディスクドライブ数の増加を検出したときに、データの均等な分配を維持するために、前記複数のデータチャンクを前記ディスクドライブアレイ中の新しいディスクドライブの間で再分配するよう前記再ストライピング処理を実行することを特徴とするシステム。
【請求項２２】
請求項１９記載の仮想ファイルシステムであって、前記仮想ファイルマネージャが、前記ディスクドライブアレイの指定されたディスクドライブを除去する要求を検出し、残るディスクドライブのデータの均等な分配を維持するために前記複数のデータチャンクを再分配するよう前記再ストライピング処理を実行し、前記指定されたディスクドライブの割り当て解除を行うことを特徴とするシステム。
【請求項２３】
請求項１記載の仮想ファイルシステムであって、前記少なくとも一つの管理ノードが、前記仮想ファイルマネージャの動作をミラーするミラー仮想ファイルマネージャを実行するミラー管理ノードであることを特徴とするシステム。
【請求項２４】
請求項１記載の仮想ファイルシステムであって、前記仮想ファイルマネージャが事前割り当てされたディレクトリ項目のプールを維持しており、各ディレクトリ項目が利用可能なサブチャンク位置項目のリストを有していることを特徴とするシステム。
【請求項２５】
請求項２４記載の仮想ファイルシステムであって、事前割り当てされたディレクトリ項目の前記プールがパフォーマンスおよびサイトの利用プロファイルに基づくものであることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対話的なブロードバンドサーバーシステムに、より詳細には記憶装置のアレイにまたがって分散されているデータの情報を管理し、維持するための仮想ファイルシステムに関する。
【背景技術】
【０００２】
ストリーミングメディアコンテンツの記憶および配送のためのソリューションを提供することが望まれている。スケーラビリティーについての初期の目標は、ストリームあたり4メガビット毎秒（Mbps）での100ないし100万の同時の（simultaneous）個別的なアイソクロナス（isochronous）・コンテンツストリームである。ただし、異なるデータレートも考えられている。利用可能な全通信帯域幅は利用可能な最大のバックプレーンスイッチによって制約される。現在最大のスイッチはテラビット毎秒の範囲、すなわち20万同時出力ストリーム程度である。出力ストリームの数は一般にストリームあたりのビットレートに反比例する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
コンテンツ記憶装置の最も単純なモデルは、単一のネットワークコネクタを有する単一のプロセッサに接続された単一のディスクドライブである。データはディスクから読み出され、メモリに入れられ、パケットとしてネットワークを通じて各ユーザーに配布される。ウェブページなどのような伝統的なデータは非同期的に配送できる。つまり、ランダムな時間的遅延をもったランダムな量のデータがある。低ボリューム、低解像度のビデオはウェブサーバーから配送できる。ビデオおよびオーディオのようなリアルタイムのメディアコンテンツはアイソクロナス伝送、すなわち配送時間を保証された伝送を必要とする。このシナリオでは、通信帯域幅の制約はディスクドライブに存在する。ディスクはアームの動きや回転による遅延と競合しなければならない。システムが任意の所与の時点においてドライブからプロセッサへの連続的なコンテンツの同時ストリームを6つしかサポートできないとすると、7番目のユーザーの要求は先の6人のユーザーの一人がコンテンツストリームを放棄するのを待たねばならない。この設計の長所は単純さである。短所は、当該設計中で唯一の機械的装置であるディスクがその速さでしかデータのアクセス・転送ができないということである。
【０００４】
一つまたは複数の別のドライブを追加したり、ドライブアクセスをインターリーブしたりすることによって改良することもできる。また、重複コンテンツを各ドライブに保存して冗長性およびパフォーマンスを稼ぐこともできる。これは前進ではあるが、それでもいくつかの問題がある。ローカルな単数または複数のドライブ上には一定量のコンテンツしか置くことができない。ディスクドライブ、CPUおよびメモリはそれぞれ破綻につながりかねない単一障害点である。このシステムは、ディスクコントローラが扱うことのできるドライブ数までしか拡大できない。ユニット数がたくさんあったとしても、タイトルの配布に問題がある。実世界では、誰もが最新の映画を見たいと思う。大まかにいって、コンテンツ要求の80%はほんの20%のタイトルについてのものである。機械の通信帯域幅のすべてを一つのタイトルにつぎ込むわけにはいかない。それではその機械にしか保存されていない人気の劣るタイトルへのアクセスが遮断されてしまう。結果として、「高需要」タイトルはほとんど、あるいはすべての機械に登録されなければならなくなる。端的にいえば、ユーザーが古い映画を見たいとしたら、そのユーザーは不運なことになりうる――たとえシステムに登録されていたとしても。大きなライブラリでは、先の比はこの例で用いた80/20の割合よりずっと大きくなりうる。
【０００５】
システムがデータ処理で使われる標準的な構内ネットワーク（LAN:  Local  Area  Network）に基づいているとしたら、他の不十分な点もあるだろう。現代のイーサネット（登録商標）ベースのTCP/IPシステムは配送が保証される驚くべきものであるが、パケットの衝突や部分的に紛失したパケットの再送信によって引き起こされる時間的な代価ならびにいっさいを機能させるために必要とされる管理を伴っている。コンテンツストリームのセットが適時に利用可能である保証はない。また、各ユーザーが一つのスイッチポートを消費し、各コンテンツサーバーが一つのスイッチポートを消費するので、スイッチポート数はサーバー数の2倍でなければならず、全体的なオンライン通信帯域幅を制限することになる。
【０００６】
本発明の恩恵、特徴および利点は以下の記述および付属の図面に関してよりよく理解されるであろう。
【発明を実施するための最良の形態】
【０００７】
以下の記述は、特定の用途と要件のコンテキストにおいて与えられる本発明を通常の当業者が作成し、利用できるようにするために提示される。ただし、好ましい実施形態に対するさまざまな修正が当業者には明白であろうし、ここに定義される一般的な原理は他の実施形態にも適用されうる。したがって、本発明はここに示され、説明される特定の実施形態に限定されることを意図したのではなく、ここに開示される原理および新規の特徴と一致する最も広範な範囲を与えられることを意図したものである。
【０００８】
ここに記載されるアーキテクチャはさまざまな性能の個々の構成要素を受け入れられるので、導入が最初のシステム購入時点に限定されるのを避けることができる。利便性（commodity）構成要素の使用によって、近年の十分に実証済みの技術、単一ソースの回避およびストリームあたりのコスト最小化を保証する。個別の構成要素の障害は耐えられる。多くの場合には、ユーザーの観点から目につく動作の変化はない。その他の場合には、短い「自己修復」サイクルがある。多くの場合には多重障害にも耐えうる。また、すべてではないまでもほとんどの場合には、システムはすぐに対処してやらなくても復旧できるので、「無人」（lights-out）運転にとっては理想的となる。
【０００９】
コンテンツ記憶割り当ておよび内部通信帯域幅は、最長未使用時間（LRU:  Least  Recently  Used）アルゴリズムによって自動的にやりくりされる。このアルゴリズムは、RAMキャッシュおよびハードディスクアレイキャッシュにある内容が現在の需要に対して適切であり、バックプレーンスイッチ通信帯域幅が最も効率的な仕方で使用されることを保証する。システム内の通信帯域幅が申し込み過多になることは、よしあるとしてもまれなので、パケットの伝送を破棄または遅延することは必要でない。本アーキテクチャは、各構成要素の複合的な通信帯域幅を最大限に利用する機能を提供し、よって保証が満たされることができ、当該ネットワークはプライベートでありかつ完全なコントロール下にあり、予期しないピーク需要の状況であってもどのデータ経路も過負荷にならない。どんなビットレートのストリームでも受け入れることができるが、典型的なストリームは1ないし20Mbpsの範囲に留まると期待される。非同期コンテンツは利用可能な通信帯域幅に基づいて受け入れられる。アプリケーションが要求すればその目的のために通信帯域幅をリザーブしてもよい。ファイルはいかなるサイズでもよく、記憶の不効率が最小限となる。
【００１０】
図１は、本発明の例示的な実施形態に基づいて実装された対話的コンテンツエンジン（ICE:  Interactive  Content  Engine）１００の一部分の単純化されたブロック図である。本発明の十分にして完全な理解のために適用できない部分は明快のため示されていない。ICE１００は、適切な多重ポート（またはマルチポート）ギガビットイーサネット（登録商標）（GbE）スイッチ１０１を、いくつかのストレージ・プロセッサ・ノード（SPN:  Storage  Processor  Node）１０３に結合された複数のイーサネット（登録商標）ポートを有するバックプレーンファブリックとして含んでいる。各SPN１０３は簡略化したサーバーであり、２つのギガビットイーサネット（登録商標）ポート、一つまたは複数のプロセッサ１０７、メモリ１０９（たとえばランダムアクセスメモリ（RAM））および適切な数（たとえば４ないし８）のディスクドライブ１１１を含んでいる。各SPN１０３上の第一のGbポート１０５は全二重動作（各SPN／ポート接続における同時の送信および受信）のためにスイッチ１０１の対応するポートに接続されており、ICE１００内でデータを移動させるのに使う。もう一方のGbポート（図示せず）はコンテンツ出力を下流のユーザー（図示せず）に配送する。
【００１１】
各SPN１０３はそのローカルディスクドライブへの、および５つのSPNからなる各グループ内の他の４つのSPNの他のディスクドライブへの高速アクセスを有する。スイッチ１０１は単なるSPN１０３間の通信デバイスではなく、ICE１００のためのバックプレーンである。図解のためにSPN１０３は５つしか示されていないが、ICE１００は典型的にはより多くのサーバーを含んでいることは理解されている。各SPN１０３はコンテンツの記憶装置、処理器および送信機の役をする。図示した構成では、各SPN１０３は、市販の構成要素を使って構成され、通常の意味におけるコンピュータではない。標準的なオペレーティングシステムが考えられているが、そのような割り込み駆動型のオペレーティングシステムは無用なボトルネックを生じることもある。
【００１２】
各タイトル（たとえばビデオ、映画または他のメディアコンテンツ）はどの単一のディスクドライブ１１１にも全体としては保存されていない。そうではなく、インターリーブ・アクセスによるスピード上の恩恵を実現するため、各タイトルのデータは分割されてICE１００内のいくつかのディスクドライブにまたがって保存されている。単一のタイトルの内容は複数のSPN１０３の複数のディスクドライブにまたがっている。タイトルコンテンツの短い「時間フレーム」がラウンドロビン式に各SPN１０３内の各ドライブから収集される。この仕方では、物理的な負荷は拡散されてSCSIおよびIDEのドライブ数限界を免れ、ある形のフェイルセーフ動作が得られ、タイトルの大きな集合が組織・管理される。
【００１３】
図示した特定の構成では、各コンテンツタイトルは固定サイズのばらばらなチャンク（かたまり）（典型的にはチャンク１つあたり２メガバイト（MB）程度）に分割される。各チャンクはラウンドロビン式に異なるSPN１０３のセットに保存される。各チャンクは４つのサブチャンクに分割され、パリティを表す５番目のサブチャンクが生成される。各サブチャンクは異なるSPN１０３のディスクドライブ上に保存される。図示して説明される構成では、約512キロバイト（KB）（ここで「K」は1024である）のサブチャンクのサイズはディスクドライブ１１１のそれぞれのデータの名目的な単位に一致する。SPN１０３は５つずつグループ化され、各グループすなわちSPNセットがタイトルのデータの一つのチャンクを保存する。図示したように、前記５つのSPN１０３は１〜４、そして「パリティ」とラベル付けされ、これらが集団的にチャンク１１３を、それぞれＳＰＮ１、２、３、４および「パリティ」に保存される５つの別個のサブチャンク１１３ａ、１１３ｂ、１１３ｃ，１１３ｄ、１１３ｅとして保存する。サブチャンク１１３ａ〜１１３ｅは各異なるSPNのための異なるドライブ上に（たとえばSPN1/ドライブ1、SPN2/ドライブ2、SPN3/ドライブ3など）分散式に保存されて示されているが、他のいかなる可能な組み合わせで保存されてもよい（たとえばSPN1/ドライブ1、SPN2/ドライブ1、SPN3/ドライブ3など）。サブチャンク１〜４はデータを含み、サブチャンク「パリティ」はデータサブチャンクのためのパリティ情報を含む。各SPNセットのサイズは典型的には５であるが任意であり、たとえば２つのSPNから10のSPNまでといったその他いかなる好適な数であっても全く同じようにできる。２つのSPNはその記憶の50%を冗長性のために使用することになり、10個ならそれは10%である。５は記憶の効率と障害の確率との間の妥協点である。
【００１４】
このようにしてコンテンツを分散させることによって、少なくとも二つの目標が達成される。まず、単一のタイトルを視聴できるユーザーの数が単一のSPNセットによってサービスを受けられる数に限定されず、その限界はSPNセットすべてを合わせた通信帯域幅によって決まるようになる。したがって、各コンテンツタイトルのコピーは一つしか必要とされない。その代償は、毎秒立ち上げることのできる所与のタイトルのための新規視聴者の数の制限であるが、これは冗長記憶による無駄なスペースおよび管理上のオーバーヘッドに比べればはるかに取るに足りない制約である。第二の目標とは、ICE１００の全体的な信頼性の向上である。単一ドライブの障害はパリティドライブを使ってのその内容のリアルタイムの再生成によって隠蔽される。独立したディスクの冗長なアレイ（RAID:  redundant  array  of  independent  disks）と同様である。SPN１０３の障害は、それが、それぞれは動作し続けるいくつかのRAIDセットのうちのそれぞれから一つのドライブを含んでいるという事実によって隠蔽される。障害のあったSPNに接続していたユーザーは非常にすばやく他のSPNで走っている影のプロセスによって引き継がれる。ディスクドライブの、あるいはあるSPN全体の障害の場合には、障害のあった装備を修理または交換するよう運用者に通知される。紛失したサブチャンクがユーザープロセスによって再構築されると、それはそれを提供したはずだったSPNに送り返され、そこでRAM内にキャッシュされる（あたかもそのローカルディスクから読まれた場合のように）。これにより、人気のあるタイトルについて同じ再構築をすることにおいて他のユーザープロセスの時間を無駄にすることが回避される。その人気がサブチャンクがキャッシュされ続けるのに十分なほどでありさえすれば、その後の要求はRAMから充填されるからである。
【００１５】
各「ユーザー」SPN１０３で走っているユーザープロセス（UP:  user  process）の目標は、自分のディスクからのサブチャンクと他のユーザーSPNからの対応する４つのサブチャンクとを収集して、配送のためにビデオコンテンツのチャンクを組み立てることである。ユーザーSPNは一つまたは複数の管理用の（management）MGMT  SPNからは区別される。後者は同じように構成されるが、後述するように異なる機能を実行する。信頼性およびパフォーマンスを向上させるために、冗長なMGMT  SPNのペアが考えられる。各UPによって実行される収集および組み立て機能は、各ユーザーSPN１０３上の多くのユーザーのために何度もなされる。結果として、ユーザーSPN１０３どうしの間にはかなりの量のデータトラフィックが行き交うことになる。そうでなければパケット衝突検出および再試行をもつ典型的なイーサネット（登録商標）プロトコルは圧倒されるだろう。典型的なプロトコルはランダムな送信のために設計されており、それらのイベントの間の不活発な時間をあてにしている。よって、このアプローチは使用されない。ICE１００では、衝突は全二重の、フルスイッチ式（fully  switched）アーキテクチャを使うことによって、そして通信帯域幅を注意深く管理することによって回避される。ほとんどの通信は同期的になされる。のちにさらに説明するように、スイッチ１０１そのものは同期的な仕方で管理され、伝送の調整がされる。どのSPN１０３がいつ送信できるかが決定されているので、ポートが所与の期間の間にさばける以上のデータで圧倒されることはない。実際、データはまずユーザーSPN１０３のメモリ１０９において収集され、次いでその転送が同期的に管理される。調和の一環として、ユーザーSPN１０３どうしの間に状態信号がある。エンドユーザーに向かう実際のコンテンツとは異なり、ユーザーSPNユニットどうしの間の信号のためのデータサイズはきわめて小さい。
【００１６】
各サブチャンクの長さ（約512Kバイト；ここで「K」は1024）は、もしそうではなくサブチャンクの送信がランダムまたは非同期的に行われることが許されるとしたら、GbEスイッチ１０１において利用可能ないかなるバッファリングをも圧倒してしまうだろう。これだけの情報を送信するための期間は約4ミリ秒（ms）であり、複数のポートが単一のポートに同時に送信しようとしないことを保証することが望まれる。したがって、のちにさらに説明するように、スイッチ１０１は、すべてのポートが最大負荷条件のもとでフルに利用されて同期的に動作するように管理される。
【００１７】
ファイルシステム（あるいは仮想ファイルシステム（virtual  file  system）すなわちVFS）を管理する冗長ディレクトリプロセスは、ユーザーによる要求があったときに所与のコンテンツタイトルがどこに保存されているかを報告することを受け持っている。それはまた、新たなタイトルをロードすべき時に必要になる記憶スペースを割り当てることも受け持っている。すべての割り当ては一体の諸チャンクにおいてなされ、その各チャンクは５つのサブチャンクからなる。各ディスクドライブ上のスペースは当該ドライブ内では論理ブロックアドレス（LBA:  Logical  Block  Address）によって管理される。一つのサブチャンクはあるディスクドライブ上で連続的なセクタまたはLBAアドレスに保存される。ICE１００における各ディスクドライブの容量は、その最大LBAアドレスをサブチャンクあたりのセクタ数で割ったもので表される。
【００１８】
各タイトルマップまたは「ディレクトリ項目」は、そのタイトルの諸チャンクがどこに保存されているか、そしてより特定的には各チャンクの各サブチャンクがどこに位置しているかを示すリストを含んでいる。図示した実施例では、リスト中で一つのサブチャンクを表す各項目には、特定のユーザーSPN１０３を同定するSPNID、同定されたユーザーSPN１０３の特定のディスクドライブ１１１を同定するディスクドライブ番号（DD#）およびサブチャンクポインタ（または論理ブロックアドレスすなわちLBA）が64ビット値としてパックされて含まれている。各ディレクトリ項目は、公称4Mbpsでの約30分のコンテンツのためのサブチャンクリストを含む。これは450チャンク、すなわち2250サブチャンクに等しい。各ディレクトリ項目は補助データを含めて約20KBである。SPN上で実行されているUPがディレクトリ項目を要求すると、その項目全体が送られ、対応するユーザーのためにローカルに保存される。たとえSPNが1000ユーザーをサポートしていたとしても、ローカルなリストまたはディレクトリ項目のために消費されるメモリは20MBでしかない。
【００１９】
ICE１００はあるユーザーに利用可能な全タイトルのデータベースを維持している。このリストはローカルな光ディスクライブラリ、リアルタイムネットワークプログラミングおよび使用許諾および転送の手配がなされているところではリモート位置にあるタイトルを含む。このデータベースは各タイトルについての全メタデータを含む。それには管理情報（使用許諾期間、ビットレート、解像度など）とともにユーザーにとって関心のある情報（プロデューサー、監督、キャスト、スタッフ、原作者など）も含まれる。ユーザーが選択をすると、仮想ファイルシステム（VFS）２０９（図２）のディレクトリに問い合わせがされて、そのタイトルがすでにディスクアレイにロードされているかどうかが判別される。まだであれば、ロードプロセス（図示せず）がそのコンテンツ作品について開始され、必要ならいつ視聴のために利用可能になるかについてUPに通知される。たいていの場合、遅延は光ディスク取得ロボット（図示せず）の機械的遅延、すなわち約30秒を超えない。
【００２０】
光ディスク（図示せず）に保存されている情報は全メタデータ（ディスクが最初にライブラリにロードされたときにデータベースに読み込まれる）とともに、当該タイトルを表す圧縮されたデジタルビデオおよびオーディオならびにそれらのデータストリームについて事前に知得できる全情報を含む。たとえば、クロック値およびタイムスタンプのようなデータストリーム中のあらゆる有意な情報へのポインタを含んでいる。それはすでにサブチャンクに分割されており、パリティサブチャンクも事前計算されてディスク上に保存されている。一般に、ロード時間と処理オーバーヘッドを節約するために事前になしうることは何でも光ディスク上に含められる。
【００２１】
リソース管理システムに含まれるものに、ディスパッチャー（図示せず）がある。UPはこのディスパッチャーを参照してそのストリームについての開始時刻を受け取る（通例要求から数ミリ秒以内に）。ディスパッチャーはシステムへの負荷が均一のままであり、遅延が最小化され、いかなる時点でもICE１００内で要求される通信帯域幅が利用可能な値を超えることのないことを保証する。ユーザーが停止、一時停止、早送り、巻き戻しあるいはその他ストリームの流れを中断する動作を要求したときには常に、その通信帯域幅は割り当てを解除され、新たに要求される何らかのサービス（たとえば早送りストリーム）のために新たな割り当てが行われる。
【００２２】
図２は、本発明のある実施形態に基づいて実装された同期データ転送システム２００を図解する、ICE１００の一部分の論理ブロック図である。スイッチ１０１は、いくつかの例示的なSPN１０３に結合して示されている。SPN１０３には第一のユーザーSPN２０１、第二のユーザーSPN２０３および管理（MGMT）SPN２０５が含まれる。先に注記したように、多くのSPN１０３がスイッチ１０１に結合されており、本発明を解説するために二つのユーザーSPN２０１、２０３のみが示されており、先に述べたようにどのSPN１０３として物理的に実装されてもよい。MGMT  SPN２０５は物理的実装は他のどのSPN１０３とも同様であるが、一般に特定のユーザー機能よりむしろ管理機能を実行する。SPN２０１は各ユーザーSPN１０３のある種の機能を図解し、SPN２０３は他の機能を図解する。しかし、各ユーザーSPN１０３が同様の機能を実行するよう構成され、SPN２０１について述べた機能（およびプロセス）はSPN２０３で与えることもでき、その逆も言えることは理解されるものである。
【００２３】
先に述べたように、スイッチ１０１はポートあたり1Gbpsで動作し、よって各サブチャンク（約512KB）があるSPNから別のSPNに渡されるのに約4msかかる。各ユーザーSPN１０３は一つまたは複数のユーザープロセス（UP）を実行するが、そのそれぞれが下流のユーザーをサポートするためのものである。あるタイトルの新しいチャンクがユーザー出力バッファ（図示せず）を再充填するために必要とされるとき、リストからの次の５つのサブチャンクが、それらのサブチャンクを保存している他のユーザーSPNに対して要求される。多くのUPが複数サブチャンクを実質同時に要求する可能性があるため、サブチャンク伝送期間はほうっておいたら単一ポートのためのGbEスイッチでさえほとんどどんなものでもバッファリング容量を圧倒してしまうだろう。ましてや全体スイッチの場合はそうである。これは図示したスイッチ１０１について成り立つ。もしサブチャンク伝送が管理されていなければ、それは可能性として各UPのための５つのサブチャンクすべてが同時に返されて出力ポートの通信帯域幅を圧倒する結果につながりうる。ICE１００のSPNの伝送のタイミングを緊密にし、最も枢要なデータが最初に無傷で伝送されるようにすることが望まれる。
【００２４】
SPN２０１は、対応する下流のユーザーにサービスを提供するためにUP２０７を実行しているものとして示されている。ユーザーがタイトル（たとえば映画）を要求し、その要求はUP２０７に転送される。UP２０７はタイトル要求（TR:  title  request）をMGMT  SPN２０５に位置しているVFS２０９（のちにさらに説明する）に送信する。VFS２０９はディレクトリ項目（DE:  directory  entry）をUP２０７に返し、該UP２０７は２１１で示されるDEをローカルに保存する。DE２１１は当該タイトルの各サブチャンク（SC1、SC2など）の位置を示すリストを含んでおり、各項目には、特定のユーザーSPN１０３を同定するSPNID、同定されたSPN１０３の特定のディスクドライブ１１１を同定するディスクドライブ番号（DD#）および同定されたディスクドライブ上のサブチャンクの特定の位置を与えるアドレスすなわちLBAが含まれている。SPN２０１は、DE２１１内の各サブチャンクについて同時に一つずつタイムスタンプ付き読み出し要求（TSRR:  time  stamped  read  request）を開始する。ICE１００では、要求はすぐに直接なされる。換言すれば、SPN２０１はサブチャンクの要求を行うことを、そのデータを保存している特定のユーザーSPN１０３に対してすぐに直接に開始する。図示した構成では、たとえローカルに保存されていても同じようにして要求がなされる。つまり、要求されたサブチャンクがSPN２０１のローカルディスクドライブ上にあったとしても、リモートにあるかのようにスイッチ２０１を通じて要求を送出するのである。ネットワークは、あるSPNからその同じSPNに要求が送られようとしていることを認識するよう構成されていてもよい位置である。すべての場合を同じように扱うほうが簡単である。特に、要求が実際にローカルであることが比較的ありそうもないような大きな施設ではそうである。
【００２５】
要求はすぐに直接に送出されるが、サブチャンクはそれぞれ完全に管理された仕方で返される。各TSRRは当該SPNIDを使っている特定のユーザーSPNに対するものであり、対象となるユーザーSPNがそのデータを取得して返すためのDD#およびLBAを含んでいる。TSRRはさらに、要求されたサブチャンクが適正に適切な要求者に返されることを保証し、要求者がそのサブチャンクを識別することを可能にするのに十分な他のいかなる識別情報をも含みうる（たとえば宛先SPN上で実行されている複数UPの間の区別をするUP識別子、各データチャンクについてのサブチャンクの間の区別をするサブチャンク識別子など）。各TSRRはもともとの要求がなされた特定の時点を同定するタイムスタンプ（TS:  timestamp）をも含む。TSは同期伝送のために要求の優先度を同定する。ここで、優先度は時間に基づいており、早い要求ほど高い優先度を得る。要求されたタイトルの返されたサブチャンクは、受け取られると、さらなる処理およびそのタイトルを要求したユーザーへの配送のためにローカルなタイトルメモリ２１３に保存される。
【００２６】
ユーザーSPN２０３は、TSRRを受け取るため、そして要求されたサブチャンクを返すために各ユーザーSPN（たとえば２０１、２０３）上で実行されている、転送プロセス（TP:  transfer  process）２１５および支援機能の動作を図解している。TP２１５はストレージ・プロセス（図示せず）を含むか、あるいは他の仕方でストレージ・プロセスとのインターフェースをもつ。ストレージ・プロセスは、保存されているサブチャンクの要求およびアクセスのためのSPN２０３上のローカルなディスクドライブ１１１のインターフェースとなるものである。ストレージ・プロセスは状態機械などのような、いかなる所望の仕方で実装されてもよく、TP２１５とローカルディスクドライブ１１１との間でインターフェースされる別個のプロセスであってもよい。これは当業者には既知のとおりである。図示したように、TP２１５は他のユーザーSPN１０３上で実行されている一つまたは複数のTSRRを一つまたは複数のUPから受け取り、各要求をローカルメモリ１０９内の読み取り要求待ち行列（RRQ:  read  request  queue）２１７に保存する。RRQ２１７はサブチャンクSCA、SCBなどのための要求のリストを保存する。要求されたサブチャンクを保存しているディスクドライブは、対応する要求をRRQ２１７から除去し、物理的な順番にソートし、それからそれぞれの読み出しをソートされた順番で実行する。各ディスク上のサブチャンクへのアクセスはグループで管理される。各グループは「エレベーター・シーク」動作に従って物理的順序にソートされている（低位から高位へ一回の掃引、次に高位から低位への掃引などといった具合にディスクヘッドがシーケンス上次のサブチャンクを読むために一時停止しながらディスク表面を行き来する）。うまくいった読み込みの要求は成功読み込み待ち行列（SRQ:  successful  read  queue）２１８にTS順にソートされて保存される。失敗した読み込みの要求（もしあれば）は失敗読み込み待ち行列（FRQ:  failed  read  queue）２２０に保存され、失敗した情報がネットワーク管理システム（図示せず）に転送され、該ネットワーク管理システムがエラーおよび適切な是正動作を決定する。図示した構成では待ち行列２１７、２１８および２２０が実際のサブチャンクではなく要求情報を保存していることを注意しておく。
【００２７】
読み込みに成功した各サブチャンクは最近要求されたサブチャンクのLRUキャッシュのためにリザーブされているメモリに入れられる。取得された各サブチャンクについて、TP２１５は対応するメッセージ（MSG:  message）を生成するが、これはそのサブチャンクのTS、そのサブチャンクのソース（SRC:  source）（たとえばそのサブチャンクが送信されてくるもとのSPNIDおよびその物理メモリ位置ならびにその他任意の識別情報）ならびにそのサブチャンクを送信すべき先の宛先（DST:  destination）SPN（たとえばSPN２０１）を含む。図示したように、SRQ２１８はサブチャンクSCA、SCBなどに対してそれぞれメッセージMSGA、MSGBなどを含んでいる。要求されたサブチャンクが読み出されてキャッシュされたのち、TP２１５は対応するMSGを、MGMT  SPN２０５で実行されている同期スイッチマネージャ（SSM:  synchronized  switch  manager）２１９に送る。
【００２８】
SSM２１９は諸ユーザーSPNのTPから複数MSGを受け取って優先順位付けし、最終的には、SRQ２１８内のMSGのうちの一つをメッセージ識別子（MSGID:  message  identifier）などを利用して同定する送信要求（TXR:  transmit  request）をTP２１５に送る。SSM２１９がSRQ２１８内のサブチャンクを同定するMSGIDをもつTXRをTP２１５に送ると、その要求リスト項目はSRQ２１８からネットワーク転送プロセス（NTP:  network  transfer  process）２２１に移され、そこで当該サブチャンクを宛先のユーザーSPNに転送するのに使われるパケットが構築される（ここで、「移す」とはその要求をSRQ２１８からは除去することを表している）。サブチャンク要求リスト項目がSRQ２１８から除去される順序は、リストがタイムスタンプ順になっているにもかかわらず、必ずしもその順ではない。適正な順序を決定するのはSSM２１９だけだからである。SSM２１９は、送るべきサブチャンクを少なくとも一つもつ他のすべてのSPN１０３に対して一つのTXRを送る。ただし、サブチャンクを送るべき先がすでに同等以上の優先度のサブチャンクを受け取るようスケジュールされているSPN１０３上のUPである場合は別であり、これについてはのちにさらに説明する。SSM２１９は次いで全ユーザーSPN１０３に対して単一の送信コマンド（TX  CMD:  transmit  command）をブロードキャストする。SSM２１９によってブロードキャストされたTX  CMDコマンドに反応して、TP２１５はNTP２２１に、そのサブチャンクをユーザーSPN１０３の要求UPに送信するよう命令する。このようにして、SSM２１９からTXRを受け取った各SPN１０３は同時に別の要求元ユーザーSPN１０３に送信を行う。
【００２９】
MGMT  SPN２０５上のVFS２０９はタイトルのリストおよびICE１００内でのその位置を管理する。典型的なコンピュータシステムでは、ディレクトリ（データの情報）は通例当該データが存在するのと同じディスク上にある。ところがICE１００では、VFS２０９は中央に位置していて分散データを管理する。各タイトルのデータがディスクアレイ中の複数のディスクにまたがって分散しており、前記複数のディスク自身も複数のユーザーSPN１０３にまたがって分散しているからである。先に述べたように、ユーザーSPN１０３上のディスクドライブ１１１は主としてタイトルのサブチャンクを保存する。VFS２０９は、先に述べたようにSPNID、DD#およびLBAを通じて各サブチャンクの位置を決めるための識別子を含んでいる。VFS２０９はまた、光記憶装置のようなICE１００の外部にある他の部分のための識別子をも含んでいる。ユーザーがあるタイトルを要求すると、そのユーザー要求を受け付けたユーザーSPN１０３上で実行されているUPにはディレクトリ情報（ID／アドレス）の完全なセットが利用可能となる。そこからは、すべきことはサブチャンクをディスクドライブからメモリ（バッファ）へと転送し、該サブチャンクをスイッチ１０１を通じて要求元ユーザーSPN１０３に移すことである。要求元ユーザーSPN１０３はバッファ中で完全なチャンクを組み立て、それをユーザーに配送し、終了するまで繰り返す。
【００３０】
SSM２１９は、「準備完了」メッセージ（RDY  MSG:  ready  message）リスト２２３中にタイムスタンプ順の準備完了メッセージのリストを作成する。ユーザーSPN１０３上でTPからメッセージが受け取られる順番は必ずしもタイムスタンプ順ではないが、RDY  MSGリスト２２３中ではTS順に整理されている。次の一組の転送の直前に、SSM２１９は最も早いタイムスタンプから始まってRDY  MSGリスト２２３をスキャンする。SSM２１９はまずRDY  MSGリスト２２３内で最も早いTSを同定し、対応するTXRメッセージを生成して、対応するサブチャンクを保存しているユーザーSPN１０３のTP２１５に送り、それによりそのサブチャンクのペンディングの転送を開始させる。SSM２１９は後続の各サブチャンクについてTS順にリスト２２３のスキャンを続け、すでにペンディングのサブチャンク転送に関わっているのでないソースと宛先をもつ各サブチャンクについてTXRメッセージを生成する。全ユーザーSPN１０３にブロードキャストされる一つ一つのTX  CMDに対しては、各ユーザーSPN１０３が送信するサブチャンクは同時に一つのみであり、受信するサブチャンクは同時に一つのみである。ただし、この両者は同時にできる。たとえば、SPN#2へのペンディングのサブチャンク転送をスケジュールするためにTXRメッセージがSPN#10のTPに送られた場合、SPN#10は同時に別のサブチャンクを送ることはできない。しかし、SPN#10は同時に別のSPNからサブチャンクを受信することはできる。さらに、SPN#2はSPN#10から前記サブチャンクを受信しながら同時に別のサブチャンクを受信することはできないが、SPN#2は同時に別のSPNに送信をすることはできる。これはスイッチ１０１の各ポートの全二重性のためである。
【００３１】
SSM２１９はユーザーSPN１０３が全部ふさがってしまうまで、あるいはRDY  MSGリスト２２３の終わりに達するかするまでRDY  MSGリスト２２３のスキャンを続ける。RDY  MSGリスト２２３中のTXRメッセージに対応する各項目は最終的にはRDY  MSGリスト２２３から除去される（TXRメッセージが送られたとき、あるいは転送が完了したあとに）。前の周期の最後の転送が終わったとき、SSM２１９は全ユーザーSPN１０３に次のラウンドの送信を開始するよう合図するTX  CMDパケットをブロードキャストする。各転送は、図示した特定の構成については約4ないし5msの周期内で同期的に起こる。各転送ラウンドの間、追加的なMSGがSSM２１９に送られ、次の送信ラウンドをスケジュールするために新しいTXRメッセージが諸ユーザーSPN１０３に送出され、そのプロセスは繰り返される。TX  CMDから次のTX  CMDまでの間の周期は近似的には、一つのサブチャンクのバイトすべてを送信するために必要な、パケットオーバーヘッドおよびパケット間遅延を含めた期間に、そのサブチャンクの送信中にスイッチ内に発生したかもしれないすべてのキャッシュをクリアするための期間（典型的には60マイクロ秒（μs））と、個々のSPNによるTX  CMDの認識における遅延によって引き起こされるあらゆるジッターのための期間（典型的には100μs未満）とを加えたものに等しい。
【００３２】
ある実施形態では、重複した、すなわちミラーされたMGMT  SPN（図示せず）が主MGMT  SPN２０５をミラーしており、SSM２１９、VFS２０９およびディスパッチャーがそれぞれ一対の冗長な専用MGMT  SPNの上で重複される。ある実施形態では、同期TX  CMDブロードキャストがMGMT  SPN２０５の健全性を示す鼓動としてはたらく。鼓動とは、副次的なMGMT  SPNに対する万事良好という信号である。鼓動がないと、たとえば5msなど所定の時間期間内のいっさいの管理機能を副次的MGMT  SPNが引き継ぐのである。
【００３３】
図３は、本発明のある実施形態に基づく、VFS２０９および補助機能のさらなる詳細を図解する、ICE１００の一部分のブロック図である。図示したように、VFS２０９は仮想ファイルマネージャ（VFM:  virtual  file  manager）３０１およびVFSインターフェースマネージャ（VFSIM:  VFS  interface  manager）３０２を含んでいる。VFSIM３０２はVFM３０１とICE１００の残りとの間の通信コンジットであり、システムモニタ（SM:  system  monitor）３０３、ライブラリローダ（LL:  library  loader）３０５およびユーザーマスターモニタ（UMM:  user  master  monitor）３０７を含んでいる。VFSIM３０２は要求および指令をSM３０３から受け取り、サービスをLL３０５およびUMM３０７に提供する。VFM３０１のために意図された要求および指令は待ち行列に入れられ、取得されるまで保持される。VFM３０１からの応答はバッファリングされ、要求者に返される。VFSIM３０２はそれ自身およびVFM３０１によって開始されたバックグラウンドタスクを管理する。これらのタスクには、自動コンテンツ再ストライピング、記憶装置検証／修復ならびに容量の拡大および縮小が含まれる。VFSIM３０２はハードウェア追加／除去通知をモニタリングし、必要なときに自動的に検証／修復を開始できるようデバイスのシリアル番号を覚えている。ここでの議論はVFS２０９を扱っているが、特に断りのない限りVSM３０１およびVFSIM３０２の一方または両方にも関わりうる。
【００３４】
VFS２０９は、タイトルコンテンツ記憶（複数の記憶装置またはディスクドライブにまたがって分散している）を管理して、全体としてのシステムパフォーマンスを最大化し、ハードウェア障害からの回復を容易にすることを受け持っている。VFS２０９は、幅広い範囲のハードウェア構成をサポートするようできるだけ柔軟なものとして設計される。ICE１００の各サイト展開が特定の利用プロファイルを満たすよう、ハードウェア投資を微調整できるようにするのである。サイトは、全体としてのシステムが動作状態のままで新しいSPN１０３を追加することによって容量を増すことができる。同様に、VFS２０９はまた、動作状態のままSPNやシリアルATA（SATA:  serial  ATA）ドライブのような個々の記憶装置をスワッピングしてサービスに含めたり外したりする機能をも提供する。ICE１００内のSPN１０３の数を制限するのは、スイッチ１０１を実装する最大の同時（contemporary）バックプレーンスイッチの通信帯域幅のみである（たとえば現在のところSPN数は約500）。各SPN１０３は記憶装置をいくつ持っていてもよく（SPNあたりの記憶装置の数は通例所与のサイトについては一定である）、各記憶装置は異なる記憶容量であってもよい（そのサイトについて指定される最低値以上とする）。現在のところ、典型的なサイトでは、SPN１０３一つあたり1ないし8のハードディスクドライブを持つが、設計は十分柔軟になっており、新たに利用可能になったタイプのデバイスを受け入れることもできる。さらに、ある個別の物理的なSPN１０３がそのサイトについての最低容量の２倍または３倍の容量をもつ場合には、それを２つまたは３つの論理SPNとしてVFS２０９に追加することもできる（このことは、最低容量のいかなるきりのいい倍数についてもいえる）。VFS２０９は各サイトに、それぞれの追加の時点における利用可能な最高のハードウェアを使って、必要に応じてハードウェアを年月を通じて徐々にアップグレードする機能を許容するよう設計されている。
【００３５】
VFS２０９はコンテンツをインテリジェントに管理する。ピーク負荷をなめらかにさばく備えを有し、時間が決定的ではないタスクを先送りでき、増大したサイト容量をフルに活用するため自動的にコンテンツを再分配し（再ストライピング処理）、需要の先を見越して必要とされる前にコンテンツを再構築するために障害回復を優先させ、以前に使用された記憶装置からコンテンツをサルベージするための堅牢な機能を有する。図示した実施形態では、VFM３０１はVFSIM３０２とのみ排他的に通信し、該VFSIM３０２は今度はSM３０３によって管理され、LL３０５およびUMM３０７にサービスを提供する。電源投入時には、VFS２０９はシステムハードウェア構成について何も知らない。各ユーザーSPN１０３がブートして自らを宣言するにつれて、SM３０３はそのSPNについて関連する詳細（グループ帰属、ディスク数、各ディスクの記憶容量など）を集め、それをVFSIM３０２に登録し、VFSIM３０２がVFM３０１に通知する。どのSPNもコンテンツを保存できるものの、全部が保存する必要があるわけではない。VFS２０９は、予備として保持しておく空のディスクを持った「ホット・スペア」をいくつでも許容する。それらは障害回復、予定されたメンテナンスその他の目的において役割を引き受けられるよう待機する。
【００３６】
サイト立ち上げに際して、RAIDグループ内のSPN数について決定がなされる。コンテンツはSPNの各グループに均等に拡散されるので、サイトにはSPNはRAIDグループのきざみで追加しなければならない。唯一の例外は、何個でも個々に追加してよいスペアに指定されるSPNについてと、冗長管理SPNについてのものである。ほとんどのSPN１０３はシステム初期化の間に追加されるが、システムの寿命の間のどの時点でも、新しいSPNのグループを追加することができる。新しいSPNのグループを追加することによってサイトがその容量を増すと、追加されたハードウェアを最大限に活用するため、既存のコンテンツはバックグラウンドで自動的に再ストライピングされる（再ストライピング処理についてはのちにより詳細に説明する）。ICE１００の縮小はまず再ストライピングし（バックグラウンドでの再ストライピング処理）、それから割り当て解除されたデバイスを除去することによって達成される。
【００３７】
VFS２０９では、各SPN１０３に割り当てる論理IDは完全に任意でよいが、便宜上、通例はSPNの物理的位置に対応するようにする。ひとたび追加されると、所与のSPNはVFS２０９内において論理的な実体として削除されるまで存在する。空いているいかなるスペアSPNでも別のSPNのための代替とすることができ、それが行われるときには同じ論理アドレスが割り当てられる。こうして、物理的なSPNは随意にスワッピングでき（のちにより詳細に説明する）、サービスを中断することなく定期的なメンテナンスを実行する機能が提供される。SPNの一つの完全なグループがVFS２０９に登録されるとすぐ、コンテンツはそのグループ上に保存されはじめることができる。しかし、システム全体にコンテンツの一様な分配を許容するため、コンテンツ記憶のために意図されたすべてのSPNグループが登録されてから最初のタイトルのロードを行うのがよい。
【００３８】
前述したように、タイトルコンテンツの各チャンクは異なるグループに保存され、コンテンツはラウンドロビン式に全グループにまたがって拡散される。より特定的には、各チャンクはサブチャンクに分割され（サブチャンクの数はそのサイトのグループサイズに等しく、サブチャンクの一つはデータサブチャンクから導出されるパリティである）、各サブチャンクは所与のグループの異なるSPNに保存される。たとえば、ディスクドライブ５個のRAIDサイズを想定すると、SPNグループサイズは５である（そしてコンテンツの１チャンクあたり５つのサブチャンクがある）。各SPNが４つのドライブを含むとすると、全部で４つのRAIDグループがある。第一のグループは各SPNのドライブ１からなり、第二のグループは各SPNのドライブ２からなる、といった具合である。
【００３９】
ICE１００の例示的な構成として、図４に示した表１で例解されているように、第一のタイトル「タイトル１」について３つのグループGP1〜GP3だけからなる場合を考える。ここで、各グループはGPと書かれ、各チャンクはCと書かれ、各チャンクの各サブチャンクはSCと書かれている。図４の表１はGP1からGP3と番号付けされた３つのグループ、C1〜C12と番号付けされた１２のチャンク、SC  1、SC  2、SC  3、SC  4、SC  Pと番号付けされた各チャンクの５つのサブチャンクを示している。ここで、最後の「P」サブチャンクがパリティサブチャンクを表している。タイトル１の第一のチャンクC1は５つのサブチャンクSC  1〜4、SC  P（５番目のサブチャンクはパリティである）として記録されている。第一のグループGP1のSPN1から5のドライブ１にそれぞれ一つである。タイトル１の次のチャンクC2は５つのサブチャンクとして記録されている（やはりSC  1〜4、SC  P）。第二のグループGP2のSPN1から5のドライブ１にそれぞれ一つである。同様に、第三のチャンクC3は第三のグループGP3の各SPN1〜5のドライブ1に記録される。第四のチャンクC4は第一のグループGP1の各SPN1〜5のドライブ2に記録される。表１は、第一のタイトル「タイトル１」がどのように保存されるかを示している。あるSPN全体（表１の１行）を失えば、４つのRAIDグループのそれぞれにおいて一つのドライブを失う結果となる。すべてのRAIDグループが内容の生成を続け、パリティ再構築を通じてコンテンツは失われずにすむ。追加的なタイトルは、直前のタイトルが始まった次のグループおよびドライブで始まる。よって、第二のタイトル「タイトル２」（図示せず）はGP2のドライブ２で始まる（第二のチャンクはGP3のドライブ２の上にあり、第三のチャンクはグループ１のドライブ３の上にある、等々）。タイトルはこのように開始時刻の遅延を最小化するように分配される。各タイトルは、グループ３の各SPN上のドライブ４からグループ１の各SPNのドライブ１に戻って再循環する渦巻き状にICE１００を巡る。
【００４０】
図５の表２は表１の構成を使ってどのように４つのタイトルが保存されるかを示している。説明のため、第一のタイトルT1は24のチャンクT1C1〜T1C24からなり、第二のタイトルT2は10のチャンクT2C1〜T2C10を持ち、第三のタイトルT3は9つのチャンクT3C1〜T3C9を持ち、第四のタイトルT4は12のチャンクT4C1〜T4C12を持つ。簡単のため、３つのSPNグループのそれぞれ（SPNグループ１、SPNグループ２、SPNグループ３）は１行にまとめ、各タイトルの最初のチャンクに下線を付けてボールド表示している。典型的なタイトルは4Mbpsで1350チャンクからなり、450チャンクずつのVFSディレクトリ項目をなす。これは約30分のコンテンツである。100ギガバイト（GB）のディスクドライブを使って、各RAIDグループは20万チャンク以上を保持する（グループ内の各ドライブが20万サブチャンク以上を保持するということである）。あるRAIDグループの各ドライブ上でのサブチャンク割り当ては、典型的には各ドライブ上の同一点においてである。
【００４１】
図示した構成では、VFS２０９の各ディレクトリ項目（DE）は当該タイトルについてのさまざまなメタデータおよびチャンク位置指定子の配列からなる。チャンク位置指定子データ構造は８バイトからなる：グループ同定のために２バイト、ディスク同定のために２バイト、そしてディスク割り当てブロックの同定のために４バイトである。ここで、各ブロックは１つのサブチャンクを保持する。図６は、表２に掲げた４つのタイトルT1〜T4（タイトル１〜タイトル４として示されている）についての最初の12個の位置指定子の内容を示している。タイトル１については示されていないより上位の12個の位置指定子があるが、これらは各ディスク上でブロック２を占有する。各ディスクの論理アドレスを該ディスクが接続されているSPNのMAC（media  access  control［メディアアクセス制御］）IDにマッピングする探索表が、VFSIM３０２上および各SPN１０３上で複製されている。あるサブチャンクに対応するLBAは単にブロック番号にサブチャンクあたりのセクタ数を乗算することで得られる。図７は、ICE１００についてサブチャンクが異なるRAIDグループ、SPN（番号1〜5）およびディスクドライブ（番号1〜4）上に保存される仕方のさらなる詳細を図解する表４を示している。たとえば、タイトルT1のチャンクC01のサブチャンクSaはRAIDグループ1のSPN1のディスク1のブロック0に保存され、タイトル1のチャンクC01の次のサブチャンクSbはRAIDグループ1のSPN2のディスク1のブロック0に保存される、といった具合である。
【００４２】
コンテンツ長の変動は各SPN１０３上に保存されるコンテンツの量の予測不能な小さな変動を生じる。これらの例示的なタイトルについては、変動は誇張されているが、それぞれ1000以上のチャンクからなる何百ものタイトルについては、SPNどうしの間の相違は1%未満に留まると期待される。個々の記憶装置はサイト最低値以上のいかなる容量をも取りうるが、サイト最低値を超過した分をアイソクロナス・コンテンツの保存に使わないほうがいいことがある。したがって、サイト最低値はできるだけ大きく保つべきであり、典型的にはそのサイトの最小容量の記憶装置の容量に等しく設定されるのがよい。サイト最低値はいつでも増減させることができる。たとえば、最小容量の記憶装置がより大きな記憶装置で置き換えられるときにはいつでもより大きな値に増加させられるのがよい。
【００４３】
ICE１００の所与の構成がどこに導入され、どのように使用されるかに依存して、VFS２０９は、時折新しいタイトルのための記憶割り当ての要求を受けるだけのこともあるし、あるいは30分ごとにほとんど同時の何百という要求を受けることもある。記憶に対する予期される需要を迅速かつ効率的に満たすため、VFS２０９は事前に割り当てられたディレクトリ項目のプールを維持している。プールのサイズはそのサイトの利用プロファイルに基づいて事前に設定され、該プールのサイズはパフォーマンス調整のため、あるいはサイトプロファイルの変化に反応するためにいつでも変更できる。VFS２０９が記憶割り当て要求を受け取ると、まず事前割り当てのディレクトリ項目のプールから要求を満たそうと試みる。利用可能であれば、事前割り当てのディレクトリ項目がすぐ要求者に返される。プールが枯渇していれば、新たなディレクトリ項目が以下に述べるようにオンデマンドで作成される。ある割り当て要求が同じタイトルについての複数のディレクトリ項目を要求している場合、最初の項目だけがすぐ返される。そのタイトルの残りの項目の割り当ては後刻行われることができ、VFS２０９によって維持されるバックグラウンドプロセスのリストにタスクが追加される。事前割り当て項目のプールへの補給もバックグラウンドタスクである。
【００４４】
事前割り当てまたはオンデマンドでディレクトリ項目を作成するためには、VFS２０９はまず要求されている容量が利用可能である（現在使用されていないなど）かどうかを判定する。大丈夫であれば、要求は容易に満たされる。そうでなければ、VFS２０９は要求を満たすために、最長未使用の（LRU:  least  recently  used）タイトルを一つまたは複数必要に応じて割り当て解除する。このようにしてあるタイトルが割り当て解除されると、VFS２０９はSM３０３および諸SPN１０３にそのできごとを通知する。割り当て要求は最初はVFS２０９が要求者（または呼び出し者）に最初のディレクトリ項目を返したときに満たされる。タイトルが複数の項目をもつ場合、その後の項目は、必要とされるときに提供される。呼び出し者はどの項目を所望しているかを指定できる。同様に、既存のタイトルが拡大される場合、最初の拡大された項目はすぐ返され、その他の項目は必要とされるときに明示的に要求されることができる。各項目は30分相当までのコンテンツを保存できるサブチャンク位置指定子の表を含んでいる。こうして、95分の映画は4つの項目を必要とし、４番目の項目の大半は未使用となる。より正確には、４番目の項目表の大半は未使用であるが、消費されるディスクスペースは5分のコンテンツのために実際に必要とされる分だけなので実際のディスクドライブ上のスペースが無駄にされることはない。内部的には、VFS２０９は各記憶装置上の利用可能なサブチャンク位置をメモリ効率のよいデータ構造を使って追跡している。
【００４５】
未使用の記憶スペースの再生は、最終有効チャンク（LVC:  Last  Valid  Chunk）ポインタを各項目に組み込むことによって可能となる。上記の例では、４番目の項目は要求者に与えられるとき、最初は30分相当の記憶をリザーブされて有している。実際にコンテンツを保存しているコンポーネントがそのタスクを完了したとき、それはLVCポインタを更新してVFS２０９に通知する。VFS２０９は次いであらゆる未使用のブロックを解放し、ほかでの使用のために利用可能にする。長さは一定しないので、各タイトルはそれが終わるところで終わる。何らかの任意の境界に記憶を揃えるといった何らかの理由のためにディスクスペースを無駄にする必要はない。よって、VFS２０９はディスクにめいっぱいに詰め込み、当該デバイス上で次の空いているブロックが何であろうと利用する。最初は簡単のため小さなファイル（たとえば単一ブロック内に完全に収まるようなシステムファイルなど）は他のあらゆるコンテンツと同じ仕方で管理される。ゆくゆくは一つのチャンクが多数の小さなファイルを保存するためのディスクドライブででもあるかのように扱うマイクロVFS機能を追加することもできる。
【００４６】
SM３０３はまた、VFS２０９にいつでもタイトルを割り当て解除するよう指令してよい。たとえばタイトルの使用許諾期間が切れたとき、あるいは他のいかなる理由によってでもよい。命令された割り当て解除は、そのタイトルが現在使用中であるかもしれないという事実によって複雑になる。そのような場合、ある実施形態では、割り当て解除はそのタイトルにアクセスしているすべてのユーザーがそのタイトルのすべての使用を終了したことを合図するまで完了されない。VFS２０９は各UMM３０７によって現在使用されているすべての項目を追跡し、またバックグラウンドプロセスによって使用されている項目も追跡する。遅延期間の間、割り当て解除のフラグが立てられたタイトルへは新規ユーザーのアクセスは認められない。
【００４７】
新しいSPNグループの追加または削除があると、既存のコンテンツはリソース利用をできるだけ一様にするために再分配される、すなわち再ストライピング処理の間に「再ストライピング」される。VFS２０９は必要なときは常に自動的に再ストライピングを行う。話を簡単にするため、新しい項目と古い項目はいかなる重なりもなく、新旧両方（下記参照）に共通の記憶ブロックはないものとする。ひとたび新しい再ストライピングされたコピーが完了すると（進行速度が利用可能な通信帯域幅によって制限されるため完了時間は予測できない）、新規ユーザーがそれにアクセスを開始でき、古いコピーは単に標準的な手続きを使って割り当て解除される。再ストライピング処理の間、ほとんどのサブチャンクはもとのSPNから別のSPNにコピーされるが、一部は同じSPN内の別の位置にコピーされる。同じSPN上に残るサブチャンクの割合は、以前のSPN数を「m」、新しいSPN数を「n」としてm/(m*n)で表される。SPN数が100から110にアップグレードするサイトについては、11000のうち100のサブチャンクが同一SPN内でコピーされる。
【００４８】
リアルタイム動作は、コンテンツが純粋に一時的なものである場合とコンテンツが保存されようとしている場合を含む。一時的なリアルタイムバッファが必要とされることがもしあった場合、ある実施形態では、ICE１００は30分のディレクトリ項目を一つ、巡回バッファとして使用し、必要とされなくなったらその項目は他のすべての項目と同じ標準的な手続きを使って割り当て解除される。リアルタイムコンテンツが保存される場合、必要とされる追加的な30分項目がいくつか要求され、VFS２０９は必要に応じてLRUタイトルを割り当て解除する。他のすべてのタイトルと同様、生コンテンツは、LVCポインタによって指示される点まで再生のためにすぐ利用可能であり、LVCポインタは保存が起こり続ける間、定期的に更新される。場合によっては、「生コンテンツ」は、その最初の放映時より後にそれを要求したい加入者に利用可能にされるのに先立ち、単数または複数の個別タイトル（specific  title(s)）に分割されてもよい。準備ができたら、その編集されたコンテンツが他のどのタイトルとも同じようにVFS２０９に追加され、生コンテンツは削除できる。
【００４９】
時には何らかの目的のために動作状態のSPN１０３またはディスクドライブをオフラインで携行することが望まれることがある。悪影響なしにこれを実現するためには、ICE１００は、ホット・スペアの一つをコンテンツ受信者として使って当該デバイスをコピーする、あるいはより正確には「クローン」するよう構成される。コピープロセスが完了すると（ここでもまた、利用可能な通信帯域幅によって制限されているので時間は予測できない）、そのクローンは前者のデバイスの素性を帯び、VFSIM３０２および諸SPN１０３が通知を受けて動作はなめらかに継続される。前記デバイスが物理的に切断されてICE１００に再接続ない限り（すなわち、プラグを外されて移動されない限り）、VFM３０１の参加は必要とされない。クローニングプロセスと素性入れ替わりはVFM３０１には不可視だからである（MAC  IDの代わりにインターネットプロトコル（IP）アドレスが使用されているので、SPNはVFM３０１に対して論理的な実体であって物理的な実体ではない）。ディスクまたはSPNがICE１００に接続されると、それはデータ完全性を保証するために自動的に検証／修復プロセス（後述）を経る。
【００５０】
いかなる所与のコンテンツストリームの観点からも、記憶装置の損失またはSPN全体の損失は同じに見える。具体的には、nチャンクごとに一つのサブチャンクが欠落する（ここで、nはシステム中のSPN１０３の数によって決まる）。ICE１００はこの種の損失をパリティ再構築によって補償するよう設計され、それによりハードウェア交換のために十分な時間が許される。修復、検証およびクローンは個別のディスクに関するプロセスである。SPNの修復、検証またはクローンを行うためには、当該SPN内の各ディスクについてのプロセスを開始するだけのことである。UPがあるチャンクのサブチャンクに対する要求を送って、いずれかのサブチャンクが所定の時間期間内に返されないとき、UPは取得されたサブチャンクを使って欠落したサブチャンクを再構築する。ある実施形態では、障害の理由に関わりなく（すなわち、SPNもしくは該SPN上のドライブの障害のためだろうが、あるいは単にネットワークの遅延のためだろうが）、再構築されたサブチャンクはそのサブチャンクのソースであったはずのユーザーSPNに送られる。欠落サブチャンクのソースであったはずのユーザーSPNが前記再構築されたサブチャンクを受信するよう利用可能でない場合には、そのサブチャンクは単に送信の間に失われる。前記SPNが前記再構築されたサブチャンクを受信するよう利用可能であれば（たとえばSPNがオンラインに戻った、あるいは障害がそのSPNのあるディスクドライブに限定されていたなど）、そのSPNはそのサブチャンクを、あたかもローカルなディスクドライブから読み込まれたかのようにメモリ中にキャッシュする。
【００５１】
ホットスワッピングおよびパリティ再構築は、各SPN１０３が各デバイス上の各ブロックが有効であるかどうかについての認識を有することを必要とする。最初、SPNがオンラインになったときには有効なブロックは持たない。SPNは、サブチャンクを受け取って保存する（あるいはすでにそこにあるものを検証した）時に、そのブロックを有効としてマークする。SPNは無効とマークされたブロック中に保存されているサブチャンクへの要求を受け取った時、そのサブチャンクを受け取ろうとする要求をもって返答する。欠落したサブチャンクがパリティ再構築を通じてICE１００中のほかのところで再生されていれば、それは（利用可能な通信帯域幅を使って）SPNに送り返されて保存され、そのブロックは有効とマークされる。そのサブチャンクに対する要求がないということは、そのSPNはいまだ機能していなく、再構築されたサブチャンクを送ってもらう必要がないことを示している。このプロトコルを使って、最小限の追加的なオーバーヘッドをもって交換デバイスに内容が加えられる。その間、高需要のためにまだ対処されていないチャンクを捕らえるため、簡単なバックグラウンドでの検証／修復プロセスが、すでに有効とマークされたブロックは飛ばして最初から最後までの再構築を行う。
【００５２】
ある種の状況のもとでは、VFSIM３０２が以前に有効なコンテンツをもつとわかっていたディスクの再接続を認識したときには、SNP１０３は、無効とマークされたサブチャンクの送信禁止をオーバーライドするよう指令される。保留中のサブチャンクがそのチェックサム試験に合格した場合、そのサブチャンクは使うことができ、（そしてソースSPNはそれを有効とマークでき、）それによりパリティ再構築の無用なオーバーヘッドを避けることができる。あるSPNが要求されたサブチャンクを供給しなかったことは、前記サブチャンクの要求がなかったことと併せて、SPN障害を示す。そのような障害をモニタリングすることによって、ICE１００は自動的にシステム運用者に通知を行い、無人運転の間の回復手続きを開始する。
【００５３】
VFSIM３０２は、コンテンツを含む既存のディスクが異なる物理的なディスクによって置き換えられると、ディスク検証／修復を自動的に開始および管理する。ディスク検証／修復のため、VFM３０１はディスク修復項目（DRE:  Disk  Repair  Entry）を用意する。これはすでに使用されているディレクトリ項目と同様だが、若干の小さな相違がある。前記450個のサブチャンクはすべて不良ドライブからで、チャンクは複数のタイトルから含められている。全サブチャンク（欠落したものも含め）についてのチェックサムも含められる。DREは、最も最近使われたタイトルから始まって、次に最近使われたタイトルが続く、といった具合に埋められていく。タイトルが完全にぴったりでなくても、次のDREが直前のDREが終わったところから引き継ぐので問題ではない。DREの総数は事前にはわからないので、DREは単にそれが最後であるかどうかを告げるフラグを持つ。この手続きによって、修復が秩序だった、優先順位の付けられた仕方で、可能な最大限のデータ完全性をもってなされることが許容される。
【００５４】
動作不良のディスクが新しいディスクで置き換えられるときなど、データ損失があったときには、常に修復が望まれる。ICE１００のどこかで動作不良のディスクが利用できないとき、修復は完全に新しいディスクをホストするSPN１０３上で行われる。同時に一つずつのDREを使って、ホストSPNは欠落サブチャンクのグループ仲間を要求し、該グループ仲間をパリティ再構築のために使う。再構築されたサブチャンクは保存され、そのブロックは有効とマークされる。他方、動作不良ディスクがスペアSPNに接続されている場合には、VFSIM３０２はそれを認識し、必要となるパリティ再構築の量を減らそうと努力しながらいかなる利用可能なサブチャンクをも回復しようと試みる。VFSIM３０２は前記DREをまず前記スペアSPNに送り、そこでチェックサムと位置指定子を使って諸候補サブチャンクの有効性を試験する。一つのサブチャンクが合格したら、スペアSPNはそのサブチャンクを有効とマークし、必要としているSPNに送り、そこでそのサブチャンクは有効として保存される。スペアSPNが回復し、送れるだけのサブチャンクをすべて送ったとき、VFSIM３０２にDREの用が終わったと通知する。この時点ですべてのサブチャンクが回復されていない場合には、VFSIM３０２はDREを前記新しいディスクをホストしているSPNに送り、必要に応じてパリティ再構築が執り行われる。
【００５５】
再構築されたディスクがあるSPNから別のSPNに移されるときなど、ディスクまたはSPNがシステムに接続されたときには常にコンテンツ検証が望まれる。検証プロセスは本質的には修復プロセスと同じであるが、ただより速い。同じDREが用いられ、各候補サブチャンクが同時に一つずつ吟味される。ディスク上に存在しているサブチャンクについてチェックサムが計算される。計算されたチェックサムがDRE中のチェックサムに一致すれば、そのサブチャンクは有効と考えられる。チェックサムが一致しなければ、そのサブチャンクに対応する他の４つのサブチャンクが当該RAIDグループ内の他の諸SPNから要求され、欠落サブチャンクが再構築されて保存される。検証プロセスが再構築プロセスよりも速いというのは、単に、全部ではないまでもほとんどのサブチャンクが最初のチェックサム試験に合格するからである。検証プロセスを再構築プロセスと同じにしておくことで、再構築プロセスが部分的にしか完了してない場合でも、あるドライブをその正しいスロットに動かす柔軟性が運用者に与えられる。運用者が部分的に再構築されたディスクのプラグを抜くとき、その再構築プロセスはアボートされ、そのディスクが新しいスロットにプラグ接続されると新しい検証／再構築プロセスが開始されるのである。
【００５６】
クローニングは再構築／検証プロセスよりも簡単である。これはホストデバイスからデータを単純にコピーできるという利点のためである。クローンのホストは保存されているコンテンツを受信者にプッシュし、加えて、前記クローンのホストは変化もそれが起こるたびにプッシュする。これは、コンテンツのボディ全体が受信者に転送されたのち、クローニングプロセスが無期限に続くことが許容され、二つのデバイスが完全に同期が保たれるということを意味している。クローニングが完了すると、クローンデバイスはホストデバイスの論理的な素性を帯び、それ以上の検証は要求されない（そのデバイスが動かされない限りは）。検証における潜在的な役割を別とすれば、VFS２０９はクローニングには関わっていない。ホストがプッシュと同期を受け持っているため、受信者にとってはVFS２０９内に重複データ構造を作成する（そして破壊する）必要はない。
【００５７】
SM３０３からの要求に際して、VFS２０９はICE１００の管理のために、統計を含む最も最近使われた（MRU:  Most  Recently  Used）タイトルリスト（図示せず）およびデバイス利用率報告（図示せず）を含む有用な情報を報告することができる。MRUリストは現在保存されている各タイトルについて一つのレコードを、そのタイトルについての最後に要求された日時、これまでに要求された総回数、総サイズ、そして削除できるかどうかといった個別的な情報とともに含んでいる。デバイス利用率報告は各SPNについて一つのレコードを含んでおり、IPアドレス、グループ帰属ならびに、デバイスID、その全ブロック数および現在割り当てがされているブロック数といった各記憶装置の情報をもつ配列を与える。
【００５８】
今や、本発明に基づく仮想ファイルシステムが、各タイトルのアクセススピードおよび効率的な記憶を最大にする、タイトルデータの整理された分配を提供することが理解される。各タイトルは複数のサブチャンクに細分され、そのサブチャンクが管理ノードを含む複数のストレージ・プロセッサ・ノードに結合されたディスクドライブアレイの諸ディスクドライブの間に分配される。管理ノード上で実行される仮想ファイルマネージャは前記アレイ中に保存される各タイトルの各サブチャンクの保存およびアクセスを管理する。仮想ファイルマネージャは各タイトルについてのディレクトリ項目を維持するが、ここで各ディレクトリ項目はそのタイトルについてのサブチャンク位置項目のリストである。各サブチャンク位置項目は、ディスクドライブアレイ上に保存されている各タイトルの各サブチャンクの位置を決めてアクセスするためのストレージ・プロセッサ・ノード識別子、ディスクドライブ識別子および論理アドレスを含む。
【００５９】
以上のファイル管理の中央集中は、従来技術のディスクおよび記憶システムに比べて数多くの恩恵および利点を与える。ファイルまたは「タイトル」は全ドライブを併せた全記憶容量までのいかなるサイズでもよく、単一のドライブまたは冗長記憶グループに制限されない。ディレクトリ情報が中央に保存されるため、各ドライブの全容量がコンテンツの保存のために利用可能である。あるタイトルに対する各要求は一つのディスクドライブあるいはいくつかのディスクドライブに制限されず、負荷はアレイ中の全ディスクドライブまでの多数の間に拡散される。同期スイッチマネージャは各ノードが逐次的な送信周期においてデータのサブチャンクを同時に一つずつ受け取ることを保証することによって効率を最大化する。中央集中されたファイルマネージャは、どのディスクドライブ上にも何らかの種類のローカルディレクトリを必要とするのではなく、各ディスクドライブの出力通信帯域幅に合わせた全円盤の実現を許容する。ある実施形態では、各ディスクドライブ上の工場設定された論理‐物理再マッピングが用いられる。これは各ドライブから単一のシーク動作で情報を取得できるようにするものである。当業者には理解されるように、標準的なディレクトリシークペナルティは極端であり、ドライブ通信帯域幅をその使用の半分よりずっと少なく減らすことがある。それに代わって、各サブチャンク位置項目はあるタイトルについての対応するサブチャンクを位置決定してアクセスするのに十分であり、それによりデータのサブチャンクを取得して転送するための各ストレージ・プロセッサ・ノードに対するオーバーヘッドを最小化する。込み入ったオペレーティングシステムとのインターフェースをとったり、あるいは中間的なディレクトリシークを実行したりなどといった必要はない。同定されたプロセッサノードの転送プロセスがサブチャンクにアクセスするには、論理アドレス（たとえば論理ブロックアドレス）を同定されたディスクドライブに与える。該同定されたディスクドライブはすぐにその論理アドレスに保存されているサブチャンクを返してくる。
【００６０】
本仮想ファイルシステムはさらにデータ損失への対策としてデータおよび／または冗長性保護を用い、再構築の間中断されないサービスを可能にする。冗長記憶グループは個々のストレージ・プロセッサ・ノードにまたがり、任意のドライブの、各冗長ディスクグループ（たとえばRAIDアレイ）の任意のドライブ、あるいは全ドライブを除いた任意の単一のノードの障害をも許容する。各ドライブは一意的に同定され、立ち上げ時の自動システム構成設定およびディスクの部分的障害もしくは予期された障害からのずっと迅速な回復を可能にする。ドライブエラーが発生したとき、部分的再構築が実行され、再構築されたデータはそのデータの起源となるはずだったノードに送られ、そこにキャッシュされることができる。そのような構造および処理は、そのドライブおよび／またはノードが交換されるまで人気のあるタイトルの冗長な再構築を回避する。これにより複数のノードにまたがって分散しているユーザープロセスのための主要な時間節約が提供される。さらに、冗長な仮想ファイルマネージャを実行する冗長な管理ノードは、全体としてのシステムにおける何らかの単一障害点の場合に中断されない動作を可能にする。
【００６１】
そのほかの多くの利点および恩恵が達成される。対話的コンテンツエンジン１００は、記憶割り当てのための何百もの同時要求によって過負荷になることがない。何十万ものビデオストリームがディレクトリ・トランザクション（10万ストリームの場合、通信帯域幅の1%未満）でシステムに過負荷をかけることなく同時に記録され、再生されることが許容される。記憶の事前割り当て、コンテンツの再ストライピング、タイトルの削除ならびにドライブおよびSPNのクローニングといった管理機能がアイソクロナスなコンテンツ再生および摂取に干渉することなくバックグラウンドで生起することが許容される。
【００６２】
本発明はある種の好ましいバージョンを参照しつつかなりの詳細において記載されてきたが、他のバージョンおよび変形も可能であり、考えられている。当業者は開示された概念および具体的な実施例を、請求項によって定義される本発明の精神および範囲から外れることなく、本発明と同じ目的に資するための他の構造を考案したり修正したりする基礎として容易に使うことができる。
【図面の簡単な説明】
【００６３】
【図１】本発明のある例示的な実施形態に基づいて実装された対話的コンテンツエンジン（ICE:  Interactive  Content  Engine）の一部分の簡略化したブロック図である。
【図２】同期データ転送システムを図解する、図１のICEの一部分の論理ブロック図である。
【図３】本発明のある実施形態に基づく、図２のVFSおよび補助機能のさらなる詳細を図解する、図１のICEの一部分のブロック図である。
【図４】ディスクアレイグループ３つだけからなる、図１のICEの例示的な構成を図解する表１を示す図である。
【図５】表１の構成を使って４つのタイトルが保存される仕方を図解する表２を示す図である。
【図６】表２で描かれた４つのタイトルについての最初の１２個の位置指定子の内容を図解する表３を示す図である。
【図７】図１のICEについてサブチャンクが異なるグループ、SPNおよびディスクドライブ上に保存される仕方のさらなる詳細を図解する表４を示す図である。
【図１】
2007513429.tif 000003
【図２】
2007513429.tif 000004
【図３】
2007513429.tif 000005
【図４】
2007513429.tif 000006
【図５】
2007513429.tif 000007
【図６】
2007513429.tif 000008
【図７】
2007513429.tif 000009
【国際調査報告】
2007513429.tif 000010
2007513429.tif 000011