JP2009533723A - 記憶システムからコンテンツを転送するための方法および装置 - Google Patents

記憶システムからコンテンツを転送するための方法および装置 Download PDF

Info

Publication number
JP2009533723A
JP2009533723A JP2009502933A JP2009502933A JP2009533723A JP 2009533723 A JP2009533723 A JP 2009533723A JP 2009502933 A JP2009502933 A JP 2009502933A JP 2009502933 A JP2009502933 A JP 2009502933A JP 2009533723 A JP2009533723 A JP 2009533723A
Authority
JP
Japan
Prior art keywords
storage system
content
request
content units
host computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009502933A
Other languages
English (en)
Inventor
ケースレー、ケイリブ
ケイケルジック、ゾラン
キリアン、マイケル
ジェイ. トッド、ステファン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/392,981 external-priority patent/US20070233972A1/en
Priority claimed from US11/392,969 external-priority patent/US20070233971A1/en
Application filed by EMC Corp filed Critical EMC Corp
Publication of JP2009533723A publication Critical patent/JP2009533723A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/71Indexing; Data structures therefor; Storage structures

Abstract

本発明の1実施形態は、要求中で指定された少なくとも1つの選択基準を満たすコンテンツ・ユニットを求める、ホスト・コンピュータから受信された要求を処理する記憶システムに関する。記憶システムは要求に応答して、記憶システムに記憶されている、1つまたは複数の選択基準を満たすコンテンツ・ユニットを識別し、これらのコンテンツ・ユニットをホスト・コンピュータに返すことができる。別の実施形態では、記憶システムが要求に応答してコンテンツ・ユニットを識別して返している最中に、第2のホスト・コンピュータが、1つまたは複数の検索基準を満たすコンテンツ・ユニットの一部を受信することを要求する命令を記憶システムに送信することができる。これに応答して、記憶システムは、1つまたは複数の選択基準を満たすコンテンツ・ユニットであって、要求を送信したホスト・コンピュータにまだ提供されていないコンテンツ・ユニットの一部を、第2のホスト・コンピュータに提供し始めることができる。

Description

本発明は、記憶システムからのコンテンツの転送に関する。
ほぼすべてのコンピュータ・アプリケーション・プログラムは、コンピュータ・コードとコンピュータ・コードによって操作されるデータとを記憶するのに使用される記憶域に依拠する。典型的なコンピュータ・システムは、このようなアプリケーション・プログラムを実行する1つまたは複数のホスト・コンピュータと、記憶域を提供する1つまたは複数の記憶システムとを含む。
ホスト・コンピュータは、1つまたは複数の記憶システムにアクセス要求を送信することによって、データにアクセスすることができる。いくつかの記憶システムでは、アクセス要求が、論理ボリュームおよびブロック・アドレスを使用して、アクセスされるデータ・ユニットを識別することが必要である。このような記憶システムは、「ブロック入出力」記憶システムとして知られる。記憶システムによってホストに対して提示される論理ボリュームは、物理記憶デバイスと1対1でマッピングしない場合もあるが、これらは物理記憶デバイスに対応するものとしてホストによって把握され、論理ボリュームおよびブロック・アドレスの指定は、参照されるデータが記憶システム内のどこに物理的に記憶されているかを示す。
ブロック入出力記憶システムとは対照的に、いくつかの記憶システムは、データ・ユニットが記憶システムのどこに物理的または論理的に記憶されているかを指定するアドレスを使用するのではなく、オブジェクト識別子を使用してデータまたは他のコンテンツ・ユニットを識別するアクセス要求を受信して処理する。このような記憶システムは、オブジェクト・アドレス指定可能記憶(OAS)システムと呼ばれる。オブジェクト・アドレス指定可能記憶では、コンテンツ・ユニットを、そのオブジェクト識別子を使用して識別することができ(例えばコンテンツ・ユニットへのアクセスを要求するホスト・コンピュータによって)、オブジェクト識別子は、(そうであることが必須ではないが)コンテンツ・ユニットが記憶されている物理的または論理的位置から独立することができる。しかし、OASシステム上のコンテンツ・ユニットにアクセスするホスト・コンピュータ(またはユーザ)から見ると、オブジェクト識別子は、どこにコンテンツ・ユニットが記憶されているかを制御しない。したがって、OASシステムでは、コンテンツ・ユニットが記憶されている物理的または論理的位置が変化した場合でも、ホスト・コンピュータがコンテンツ・ユニットにアクセスするための識別子は同じのままである。対照的に、ブロック入出力記憶システムでは、コンテンツ・ユニットが記憶されている物理的または論理的位置が変化した場合、コンテンツ・ユニットにアクセスするホスト・コンピュータは通常、位置変化に気付かなければならず、次いで、将来のアクセスにはコンテンツ・ユニットの新しい物理的または論理的位置を使用しなければならない。
OASシステムの1例は、コンテンツ・アドレス指定可能記憶(CAS)システムである。CASシステムでは、コンテンツ・ユニットを識別するオブジェクト識別子は、コンテンツ・アドレスである。コンテンツ・アドレスは、それに対応するコンテンツ・ユニット(データおよび/またはメタデータとすることができる)のコンテンツの少なくとも1部から少なくとも部分的に計算される識別子である。例えば、コンテンツ・ユニットのコンテンツ・アドレスは、コンテンツ・ユニットをハッシュすることによって計算することができ、得られたハッシュ値をコンテンツ・アドレスとして使用する。コンテンツをコンテンツ・アドレスによって識別する記憶システムは、コンテンツ・アドレス指定可能記憶(CAS)システムと呼ばれる。
1実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムからなるコンピュータ・システム中で使用される方法を対象とする。この方法は、(A)少なくとも1つの選択基準を提供する要求を、少なくとも1つの記憶システムにおいて受信する動作と、(B)要求の受信に応答して、少なくとも1つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを、少なくとも1つの記憶システムから提供する動作とを備える。別の実施形態は、コンピュータ・システム上で実行されたときに前述の方法を実施する命令でエンコードされた、少なくとも1つのコンピュータ可読媒体を対象とする。
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムを対象とする。少なくとも1つの記憶システムは、入力と、入力に結合された少なくとも1つのコントローラとを備え、少なくとも1つのコントローラは、少なくとも1つの選択基準を提供する要求を、入力を介して受信し、要求の受信に応答して、少なくとも1つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを提供する。
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムからなるコンピュータ・システム中で使用される方法を対象とする。この方法は、(A)要求中で提供された少なくとも1つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを提供するよう少なくとも1つの記憶システムに要求する要求を、少なくとも1つの記憶システムに発行することを備える。別の実施形態は、コンピュータ・システム上で実行されたときに前述の方法を実施する命令でエンコードされた、少なくとも1つのコンピュータ可読媒体を対象とする。
別の実施形態は、出力と、出力に結合された少なくとも1つのコントローラとを備えるホスト・コンピュータを対象とし、少なくとも1つのコントローラは、要求中で提供された少なくとも1つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを提供するよう、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムに要求する要求を、出力を介して少なくとも1つの記憶システムに発行する。
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムを備えるコンピュータ・システム中で使用される方法を対象とする。この方法は、(A)第1グループのコンテンツ・ユニットを含む、少なくとも1つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを、少なくとも1つの記憶システムから、少なくとも1つの第2の宛先とは異なる少なくとも1つの第1の宛先に提供するよう求める、少なくとも1つの記憶システムにおいて受信された要求を処理する間に、第1グループのコンテンツ・ユニットのうちで少なくとも1つの第1の宛先にまだ提供されていないコンテンツ・ユニットを少なくとも1つの第2の宛先に提供し始めるよう命じる少なくとも1つの命令を受信する動作と、(B)少なくとも1つの命令の受信に応答して、第1グループのコンテンツ・ユニットのうちで少なくとも1つの第1の宛先にまだ提供されていないコンテンツ・ユニットを少なくとも1つの第2の宛先に提供する動作とを含む。別の実施形態は、コンピュータ・システム上で実行されたときに前記の方法を実施する命令でエンコードされた、少なくとも1つのコンピュータ可読媒体を対象とする。
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムを対象とする。少なくとも1つの記憶システムは、入力と、入力に結合された少なくとも1つのコントローラとを備え、少なくとも1つのコントローラは、第1グループのコンテンツ・ユニットを含む、少なくとも1つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを、少なくとも1つの記憶システムから、少なくとも1つの第2の宛先とは異なる少なくとも1つの第1の宛先に提供するよう求める、入力を介して受信された要求を処理する間に、第1グループのコンテンツ・ユニットのうちで少なくとも1つの第1の宛先にまだ提供されていないコンテンツ・ユニットを少なくとも1つの第2の宛先に提供し始めるよう命じる少なくとも1つの命令を入力を介して受信し、少なくとも1つの命令の受信に応答して、第1グループのコンテンツ・ユニットのうちで少なくとも1つの第1の宛先にまだ提供されていないコンテンツ・ユニットを少なくとも1つの第2の宛先に提供する。
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムと、コンテンツ・ユニットを処理するようにプログラムすることのできる複数のサーバとを備えるコンピュータ・システム中で、コンテンツ・ユニットを処理する方法を対象とする。この方法は、(A)第1グループのコンテンツ・ユニットからなる、少なくとも1つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを、少なくとも1つの記憶システムから複数のサーバのうちの第1グループのサーバにプッシュするよう求める要求を、少なくとも1つの記憶システムに発行する動作と、(B)第1グループのサーバにおいて受信された第1グループのコンテンツ・ユニットの第1のサブセットを第1グループのサーバ中で処理する動作と、(C)少なくとも1つの記憶システムが第1グループのコンテンツ・ユニットのいくつかを第1グループのサーバにプッシュし始めた後で、第1グループのコンテンツ・ユニットのうちで第1グループのサーバにまだプッシュされていないコンテンツ・ユニットを、複数のサーバのうちの第1グループのサーバとは異なる第2グループのサーバにプッシュし始めるよう求める要求を、少なくとも1つの記憶システムに発行する動作と、(D)複数のサーバうちの第2グループにおいて受信された第1グループのコンテンツ・ユニットの第2のサブセットを、第2グループのサーバ中で処理する動作とを備える。別の実施形態は、コンピュータ・システム上で実行されたときに前述の方法を実施する命令でエンコードされた、少なくとも1つのコンピュータ可読媒体を対象とする。
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムと、コンテンツ・ユニットを処理するようにプログラムすることのできる複数のサーバと、複数のサーバのそれぞれを少なくとも1つの記憶システムに結合する通信ネットワークと、少なくとも1つのコントローラとを備えるコンピュータ・システムを対象とし、少なくとも1つのコントローラは、第1グループのコンテンツ・ユニットを含む、少なくとも1つの選択基準を満たす複数のコンテンツ・ユニットのそれぞれを、少なくとも1つの記憶システムから複数のサーバのうちの第1グループのサーバにプッシュするよう求める要求を、少なくとも1つの記憶システムに発行し、第1グループのサーバにおいて受信された第1グループのコンテンツ・ユニットの第1のサブセットを第1グループのサーバ中で処理し、少なくとも1つの記憶システムが第1グループのコンテンツ・ユニットのいくつかを第1グループのサーバにプッシュし始めた後で、第1グループのコンテンツ・ユニットのうちで第1グループのサーバにまだプッシュされていないコンテンツ・ユニットを、複数のサーバのうちの第1グループのサーバとは異なる第2グループのサーバにプッシュし始めるよう求める要求を、少なくとも1つの記憶システムに発行し、複数のサーバのうちの第2グループにおいて受信された第1グループのコンテンツ・ユニットの第2のサブセットを、第2グループのサーバ中で処理する。
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムを備えるコンピュータ・システム中で使用される方法を対象とし、少なくとも1つの記憶システムは、オブジェクト識別子を介して複数のコンテンツ・ユニットのそれぞれにアクセスできるようにするインタフェースを提供する。この方法は、(A)複数のコンテンツ・ユニットの少なくとも1つにアクセスすることを求める、少なくとも1つのコンテンツ・ユニットのオブジェクト識別子は含まないが少なくとも1つの選択基準を含む要求を、少なくとも1つの記憶システムにおいて受信する動作と、(B)要求の受信に応答して、少なくとも1つの選択基準を使用して、複数のコンテンツ・ユニットの少なくとも1つを識別し、複数のコンテンツ・ユニットの少なくとも1つを少なくとも1つの記憶システムから提供する動作とからなる。別の実施形態は、コンピュータ・システム上で実行されたときに前述の方法を実施する命令でエンコードされた、少なくとも1つのコンピュータ可読媒体を対象とする。
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムを対象とし、少なくとも1つの記憶システムは、オブジェクト識別子を介して複数のコンテンツ・ユニットのそれぞれにアクセスできるようにするインタフェースと、インタフェースに結合された少なくとも1つのコントローラとを備え、少なくとも1つのコントローラは、複数のコンテンツ・ユニットの少なくとも1つにアクセスすることを求める、少なくとも1つのコンテンツ・ユニットのオブジェクト識別子は含まないが少なくとも1つの選択基準を含む要求を受信し、要求の受信に応答して、少なくとも1つの選択基準を使用して、複数のコンテンツ・ユニットの少なくとも1つを識別し、複数のコンテンツ・ユニットの少なくとも1つを少なくとも1つの記憶システムから提供する。
別の実施形態は、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システム上に記憶された少なくとも1つのコンテンツ・ユニットにアクセスする方法を対象とし、少なくとも1つの記憶システムは、オブジェクト識別子を介して複数のコンテンツ・ユニットのそれぞれにアクセスできるようにするインタフェースを提供する。この方法は、(A)少なくとも1つのコンテンツ・ユニットにアクセスすることを求める要求を少なくとも1つの記憶システムに提供する動作を備え、この要求は、少なくとも1つのコンテンツ・ユニットのオブジェクト識別子は含まないが、少なくとも1つの記憶システムが少なくとも1つのコンテンツ・ユニットを識別できるようにする少なくとも1つの選択基準を含む。別の実施形態は、コンピュータ・システム上で実行されたときに前述の方法を実施する命令でエンコードされた、少なくとも1つのコンピュータ可読媒体を対象とする。
別の実施形態は、ホスト・コンピュータを対象とし、このホスト・コンピュータは、複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムであってオブジェクト識別子を介して複数のコンテンツ・ユニットのそれぞれにアクセスできるようにするインタフェースを提供する少なくとも1つの記憶システムに、ホスト・コンピュータがそれを介して結合される出力と、複数のコンテンツ・ユニットのうちの少なくとも1つのコンテンツ・ユニットにアクセスすることを求める要求を、出力を介して少なくとも1つの記憶システムに提供する少なくとも1つのコントローラとを備え、この要求は、少なくとも1つのコンテンツ・ユニットのオブジェクト識別子は含まないが、少なくとも1つの記憶システムが少なくとも1つのコンテンツ・ユニットを識別できるようにする少なくとも1つの選択基準を含む。
選択基準を満たすすべてのコンテンツ・ユニットを識別することができるように、いくつかの選択基準に基づいて、1つまたは複数のコンテンツ・ユニットを、それらが記憶されている記憶システムから別のシステムに提供することが望ましいことがある。従来技術のOASシステムを使用すると、選択基準を満たすコンテンツ・ユニットにアクセスすることは、複数ステップの工程を伴う。最初に、アプリケーション・プログラム(例えばホスト・コンピュータ上で実行されているもの)が、特定の選択基準を満たすコンテンツ・ユニットを要求するクエリをOASシステムに発行する。OASは、クエリに応答して、選択基準を満たすコンテンツ・ユニットがあるかどうかその記憶済みコンテンツ・ユニットを走査し、選択基準を満たすコンテンツ・ユニットのオブジェクト識別子のリストをアプリケーションに返す。次いで、アプリケーション・プログラムは、オブジェクト識別子を使用し、各コンテンツ・ユニットをそのオブジェクト識別子で識別して、これらのコンテンツ・ユニットのそれぞれについて個別のアクセス要求を記憶システムに送信する。選択基準を満たすコンテンツ・ユニットが多数ある場合は、多くのアクセス要求を送信して、これらのコンテンツ・ユニットをそれぞれ取り出さなければならない。
いくつかの記憶システムは複製機能を提供し、それにより、例えばフォールト・トレランスまたはバックアップの目的で、記憶システム(すなわち複製ソース)上に記憶されている大量のデータを別のシステム(すなわち複製ターゲット)に提供することができる。しかし、このようなシステムは個々のコンテンツ・ユニットの細分性で動作しないので、このようなシステムでは、複製のために記憶システム上の記憶域のボリュームを指定することができ、指定されたボリューム中のすべてのデータ(または最後の複製以降に変化したその一部)が複製される。
コンテンツ・ユニットを記憶システムに要求するとき、コンテンツ・ユニットの処理を共有することのできるいくつかのホスト・コンピュータ間でコンテンツ・ユニットを分割することが望ましい場合があることを、出願人らは認識した。例えば、1人または複数の個人を捜すために顔認識アルゴリズムを使用して、OASシステム上のコンテンツ・ユニットに記憶された空港セキュリティ・カメラからのビデオ・データを処理することが望ましい場合がある。処理すべきデータのボリュームのため、複数のホスト・コンピュータを使用して、それぞれがビデオ・データの一部を並列で処理することが望まれる場合がある。従来技術のOASシステムを使用してこれを達成するには、コンテンツ・ユニットを記憶システムに要求する前に検索空間を区分化しなければならない。例えば、データの処理に利用可能な3つのホスト・コンピュータと、処理すべき9時間のビデオとがある場合、各ホスト・コンピュータが3時間のビデオ・データを処理するものと決定することができる。次いで、第1のプロセッサが、第1の3時間期間中のコンテンツ・ユニットをOASに照会し、第1の3時間に対応するコンテンツ・ユニットを識別するオブジェクト識別子の第1のリストを受け取ることができ、第2および第3のプロセッサが、第2および第3の3時間期間についてそれぞれ同様にすることができる。したがって、従来技術のOASシステムでは、どのようにリソースを処理ジョブに割り振るかについて前もって決めておかなければならず、処理ジョブにおいて使用されるプロセッサの数の変更を動的に行うことはできない。
加えて、いくつかの従来技術OASシステムは、所望の検索基準に基づいてコンテンツ・ユニットをフィルタにかけることができない場合がある。例えば、複数の空港セキュリティ・カメラからのビデオ・データを含むコンテンツ・ユニットを記憶する記憶システムは、どのカメラが特定のコンテンツ・ユニット中のビデオ・データを生成したかを示すメタデータを記憶することがある。このメタデータは、ビデオ・データと同じコンテンツ・ユニットに記憶されてもよく、あるいはビデオ・データを記憶したコンテンツ・ユニットを参照する別個のコンテンツ・ユニットに記憶されてもよい。空港セキュリティ・カメラのうちの1つのみによって生成されたビデオ・データを処理することが望まれる場合がある。従来のOASシステムは、コンテンツ・ユニットを、これらのコンテンツに関連するメタデータに基づいて検索することができない場合がある。したがって、処理すべきコンテンツ・ユニットを識別するには、記憶システム上に記憶された(または少なくとも、ある時間範囲内に記憶システム上に記憶された)、メタデータを含む各コンテンツ・ユニットを記憶システムから個別に取り出し、そのメタデータを検索して、コンテンツ・ユニット中の(またはこのコンテンツ・ユニットによって参照されるコンテンツ・ユニット中の)コンテンツが所望のセキュリティ・カメラからのビデオ・データを含むかどうか判定しなければならない。いくつかの従来のコンピュータ・システムは検索アプライアンスを備え、この検索アプライアンスは、OASシステムの外部に配置され、OASシステム上に記憶されているコンテンツ・ユニットをそれらのメタデータまたは他の検索基準に基づいて索引付けする。それにより、いくつかの検索基準を満たすコンテンツ・ユニットのオブジェクト識別子のリストが決定される度に各コンテンツ・ユニットを検索する必要はない。
上で説明した従来技術の記憶システムの制限は、1つまたは複数の指定された選択基準を満たす多数のコンテンツ・ユニットを記憶システムから別のシステムに(例えば処理のために)提供する際の課題を提示する。本発明のいくつかの実施形態は、これらの制限に対処する。しかし、本発明のあらゆる実施形態が前述の制限すべてに対処するわけではなく、いくつかの実施形態はこれらの特定の制限のいずれかに対処することを特に対象としないことを理解されたい。
本明細書において、用語「コンテンツ・ユニット」は、コンテンツがどこで、どのように、またはどんなエンティティによって生成されるかにかかわらず、任意のタイプのコンテンツを含むことができ、元の(または独立した)データと、メタデータ(すなわち他のデータに関するデータ)との両方を含むことができる。いくつかの実施形態で処理または転送することのできる、ある特定タイプのコンテンツ・ユニットを、本明細書ではクオリファイド・コンテンツ・ユニットと呼ぶ。本明細書において、クオリファイド・コンテンツ・ユニットは、このコンテンツ・ユニットを記憶している記憶システム上にインストールされたファイル・システムによって作成された、ファイル・システム属性以外の少なくとも1つのタイプのコンテンツまたはデータを含むコンテンツ・ユニットとして定義される。ファイル・システム属性は、ファイル・システムに記憶された1つまたは複数のファイルに関連する、ファイル・システムによって作成されるメタデータである。ファイル・システム属性中の情報は、例えば、最後にファイルがアクセスされた時刻、最後にファイルが修正された時刻、ファイルに対するアクセス許可、および/または、ファイルに関する他の任意の適した情報を含むことができる。
いくつかの実施形態では、コンテンツ・ユニットを記憶システム上のファイル・システム中のファイルとして記憶することができ、コンテンツ・ユニットは、記憶システム上のファイル・システムによってファイル・システム属性に記憶される情報と同様の情報を記憶することができることを理解されたい。例えば、第1のコンテンツ・ユニットが、第2のコンテンツ・ユニットに記憶されたコンテンツに関するメタデータを記憶することができる。このメタデータは、例えば、第2のコンテンツ・ユニットが作成された時刻、第2のコンテンツ・ユニットのサイズ、および/または他の任意の適した情報を含むことができる。第1のコンテンツ・ユニットに記憶されたメタデータが、記憶システム上のファイル・システム以外のエンティティによって作成されたものであるときは、第1のコンテンツ・ユニットは、ファイル・システム中のファイルとして記憶されているにもかかわらず、クオリファイド・コンテンツ・ユニットと見なされない。というのは、このメタデータは、第1のコンテンツ・ユニットが記憶されている記憶システム上のファイル・システムによって作成されたのではないからである。
クオリファイド・コンテンツ・ユニットは、コンテンツ・ユニットが記憶されている記憶システム上のファイル・システムによって記憶されるファイル・システム属性に限定されないことの他にも、どんな点でも限定されない。1実施形態では、ユーザ・コンテンツのみを記憶した少なくともいくつかのクオリファイド・コンテンツ・ユニットが転送される。ユーザ・コンテンツは、記憶システム以外のコンピュータ上で実行されるアプリケーション・プログラムによって生成されるコンテンツであり、データおよび/またはメタデータを含むことができる。本明細書において、アプリケーション・プログラムは、ワード・プロセッシング、記録(例えば金融記録や医療記録)の記憶および/または閲覧、在庫管理、電子メールの送受信などのユーザ指向タスク、ならびに/あるいは他の任意のユーザ指向タスクを容易にするコンピュータ・プログラムである。ユーザ・コンテンツが記憶システムの外部のアプリケーション・プログラムによって生じたが、記憶前に(記憶システム中または他のどこかで)暗号化、圧縮、さもなければ再フォーマットされたときは、記憶されたコンテンツはやはりユーザ・コンテンツと見なされることを理解されたい。
別の実施形態では、元データのみを記憶した(すなわちどんなメタデータも記憶していない)クオリファイド・コンテンツ・ユニットを転送することができる。後でより詳細に論じるように、元データのみを記憶するコンテンツ・ユニットの1例は、ブロブ(blob)であり、メタデータを記憶する(かつ元データも記憶する場合がある)コンテンツ・ユニットの1例は、コンテンツ記述子ファイル(CDF)である。
別の実施形態では、記憶システムの外部のエンティティ(例えばホスト・コンピュータおよび/またはアプリケーション・プログラム)によって生成されたデータのみを記憶したクオリファイド・コンテンツ・ユニットを転送することができる。このようなクオリファイド・コンテンツ・ユニットは、記憶システムの内部で生成されたビット(例えば記憶システム上で実行されるファイル・システムによって生成されたファイル・システム属性)を有さない。このようなコンテンツ・ユニットが記憶システムの外部のエンティティによって生成されたが、次いで記憶前に記憶システム内で暗号化、圧縮、さもなければ再フォーマットされたときは、記憶されたコンテンツはやはり記憶システムの外部で生成されたと見なされることを理解されたい。
別の実施形態では、どんな可変メタデータも記憶していないクオリファイド・コンテンツ・ユニットを転送することができる。いくつかのクオリファイド・コンテンツ・ユニットに記憶されたメタデータは不変(すなわち変更不可能)とすることができることを理解されたい。対照的に、いくつかのコンテンツ・ユニットは、最後のアクセスまたは修正の時刻や、アクセス許可など、変更可能なメタデータ(例えばコンテンツ・ユニットを記憶している記憶システム上のファイル・システムによって書かれたファイル・システム属性)を含むことができる。
別の実施形態では、オブジェクト・アドレス指定可能なクオリファイド・コンテンツ・ユニットを転送することができる。オブジェクト・アドレス指定可能なコンテンツ・ユニットは、オブジェクト識別子に関連付けられると共にオブジェクト識別子を介してアクセスできるコンテンツ・ユニットであり、オブジェクト識別子は、コンテンツ・ユニットにアクセスするエンティティから見ると、どこにコンテンツ・ユニットが記憶されているかを制御しない。
クオリファイド・コンテンツ・ユニットは、コンテンツ・ユニットのサブセットであることを理解されたい(すなわち、あらゆるクオリファイド・コンテンツ・ユニットはコンテンツ・ユニットである)。本発明の種々の実施形態では、考察する態様を用いて、クオリファイド・コンテンツ・ユニットのみ、またはクオリファイド・コンテンツ・ユニットでないコンテンツ・ユニットのみ、あるいはこれらの何らかの組合せを転送することができる。
1実施形態では、少なくとも1つの選択基準を満たすコンテンツ・ユニットを求める要求を受信することのできる記憶システムが提供される。記憶システムは、1つまたは複数の選択基準を満たすコンテンツ・ユニットがあればそれらを突き止めることができ、要求に応答してこれらのコンテンツ・ユニットを返すことができる。別の実施形態では、要求中で指定された1つまたは複数の選択基準を満たす、記憶システム上に記憶されたコンテンツ・ユニット(単にオブジェクト識別子のみとは対照的に)を提供するよう求める要求を、ホスト・コンピュータが記憶システムに発行することができる。
別の実施形態では、記憶システムは、OASインタフェースを提供するOASシステムとすることができ、OASインタフェースを介して、コンテンツ・ユニットを識別するオブジェクト識別子を使用してコンテンツ・ユニットにアクセスすることができる。OASシステムはまた、特定のコンテンツ・ユニットのどんなオブジェクト識別子も提供しないが少なくとも1つの選択基準を指定する要求を、受信する機能を有することができる。要求の受信に応答して、記憶システムは、要求中で指定された1つまたは複数の選択基準を満たす、記憶システム上に記憶されたコンテンツ・ユニットを識別し、これらのコンテンツ・ユニットを返す。関連の1実施形態では、このような要求を発行するホスト・コンピュータが提供される。
さらに別の実施形態では、少なくとも1つの選択基準を満たすコンテンツ・ユニットを記憶システムが提供するための進行中の要求に、またはこの要求から、プロセッサを動的に追加または削除する機能を提供することができる。
図1は、本発明の実施形態をその上で実施することのできるコンピュータ・システム100のブロック図である。コンピュータ・システム100は、記憶システム101およびホスト・コンピュータ103を含む。図2は、1実施形態による、記憶システム101上に記憶されたコンテンツ・ユニットをホスト・コンピュータ103に提供するための例示的な工程を示すフロー・チャートである。
図2に示すように、工程は動作201で開始し、ホスト・コンピュータ103は、要求105を記憶システム101に送信して、記憶システム上に記憶されている、1つまたは複数の選択基準を満たすコンテンツ・ユニットを提供するよう記憶システムに要求する。次いで工程は動作203に進み、記憶システム101は要求を受信する。次いで工程は動作205に進み、記憶システムは、要求中で指定された選択基準を満たすコンテンツ・ユニットを識別して突き止める。次いで工程は動作207に進み、記憶システムは、要求105中で指定された1つまたは複数の選択基準を満たすコンテンツ・ユニット(例えば図1のコンテンツ・ユニット107a、107b、...、107n)をホスト・コンピュータ103に提供する。次に工程は動作209に進み、ホスト・コンピュータは記憶システムからコンテンツ・ユニットを受信し、工程は動作211に進み、ホスト・コンピュータは受信したコンテンツ・ユニットを処理する。ホスト・コンピュータはコンテンツ・ユニットを所望の方式で処理することができ、本発明はこれに関して限定されない。
要求105は、任意の適した1つまたは複数の選択基準を指定することができ、本発明はこれに関して限定されない。例えば、1つまたは複数の選択基準は、コンテンツ・ユニットが記憶システム101上に記憶された時刻範囲、キーワード(例えばコンテンツ・ユニットのメタデータに含まれるもの)、コンテンツ・ユニットのサイズ制限またはサイズ範囲、コンテンツのタイプ(例えばデータ、メタデータ、または両方)、および/あるいは他の任意の適した基準を含むことができる。要求は2つ以上の検索基準を指定することができ、複数の検索基準が指定される場合は、これらの検索基準を任意の適した方式でブール論理によって組み合わせることができ、本発明はこれに関して限定されないことを理解されたい。
図1の例では、記憶システム101は、ホスト・コンピュータ103から要求105を受信するのに応答して、ホスト・コンピュータ103にコンテンツ・ユニットを提供する。しかし、本発明はこれに関して限定されない。後でより詳細に論じるように、記憶システム101は、ホスト・コンピュータ103に代えてまたは追加で、他の宛先または他のタイプのシステムにコンテンツ・ユニットを提供することもできる。
ホスト・コンピュータ103は任意のタイプのシステムとすることができ、本発明はこれに関して限定されない。例えば、ホスト・コンピュータ103は、アプリケーション・サーバなどのサーバ、パーソナル・コンピュータ、アプライアンス、または他の任意の適したタイプのシステムとすることができる。
いくつかの実施形態では、第2の記憶システムが、1つまたは複数の選択基準を指定する要求105を記憶システム101に発行し(例えばホスト・コンピュータ103に代わってまたは追加で)、要求に応答して、1つまたは複数の選択基準を満たすコンテンツ・ユニットを記憶システム101から受信することができる。
1実施形態では、記憶システム101は、オブジェクト・アドレス指定可能記憶(OAS)システムとすることができる。すなわち、記憶システム101上に記憶されている各コンテンツ・ユニットは、そのコンテンツ・ユニットを一意に(または一意に極めて近く)識別するオブジェクト識別子と関連付けることができる。したがって例えば、特定のコンテンツ・ユニットを記憶システム101に要求するには、ホスト・コンピュータ103は、そのコンテンツ・ユニットのオブジェクト識別子を含む要求を記憶システム101に送信すればよい。要求エンティティ(例えばホスト・コンピュータ103)から見ると、オブジェクト識別子は、記憶システム103上のコンテンツ・ユニットの物理的または論理的位置とは関係ない。したがって、記憶システム101がコンテンツ・ユニットを異なる物理的または論理的位置に移動させたとしても、ホスト・コンピュータ103は依然として、同じオブジェクト識別子を使用してこのコンテンツ・ユニットにアクセスすることができる。
いくつかの実施形態で使用することのできるオブジェクト識別子のタイプの1例は、コンテンツ・アドレスである。コンテンツ・アドレスは、コンテンツ・ユニットのコンテンツの少なくとも一部から少なくとも部分的に計算される識別子である。すなわち、例えば、コンテンツ・ユニットのコンテンツの全部または一部をハッシュし(例えばMD5または他の任意の適したハッシング・アルゴリズムを使用して)、ハッシュ値をコンテンツ・アドレスとしてまたはコンテンツ・アドレスの一部として使用することができる。コンテンツ・アドレスをオブジェクト識別子として使用するOASシステムを、本明細書ではコンテンツ・アドレス指定可能記憶(CAS)システムと呼ぶ。したがって、1実施形態では、記憶システム101はCASシステムとすることができる。
記憶システム101がOASシステムである本発明の1実施形態では、要求105は、特定のコンテンツ・ユニットを識別するどんなオブジェクト識別子も含まなくてよい。そうではなく、要求105は、取り出すべきコンテンツ・ユニットを、1つまたは複数の選択基準を指定するだけで識別することができる。しかし、本発明はこれに関して限定されず、要求105は、1つまたは複数の選択基準を提供するのに加えて、特定のコンテンツ・ユニットを識別する1つまたは複数のオブジェクト識別子、および/あるいは、1つまたは複数のコンテンツ・ユニットを識別する他の任意の適した情報を含んでもよい。
前記のように、要求105中で指定することのできる選択基準の例は、選択基準を満たすコンテンツ・ユニット、および/またはこのようなコンテンツ・ユニットに関するメタデータを、記憶システムが返すものである。これは、任意の適した方式で達成することができ、本発明はこれに関して限定されない。本発明のいくつかの実施形態では、コンテンツ・ユニットに記憶されるコンテンツは、データ(例えばアプリケーション・データ)と、データに関するメタデータ(例えば、データが記憶された時刻、データを記憶したアプリケーションの識別など)とを含むことができる。本発明のいくつかの実施形態では、データとそれに対応するメタデータとは同じコンテンツ・ユニットに記憶されてよい。しかし、本発明はこれに関して限定されず、他の実施形態では、データとそれに対応するメタデータとは別々のコンテンツ・ユニットに記憶されてもよい。
データとメタデータとを別々のコンテンツ・ユニットに記憶することは、任意の適した方式で達成することができ、本発明はこれに関して限定されない。1実施形態では、メタデータを記憶するコンテンツ・ユニットを本明細書ではコンテンツ記述子ファイル(CDF)と呼ぶが、CDFは、メタデータの属するデータを記憶する1つまたは複数の別々のコンテンツ・ユニットへの参照を含む。データを記憶するコンテンツ・ユニットは、本明細書ではブロブと呼ぶ。CDFは、任意の適した数のブロブに関するメタデータを参照および記憶することができ、本発明はこれに関して限定されない。例えば、図3に示すように、CDF301は、3つのブロブ(すなわちブロブ303、305、および307)に関するメタデータを参照すると共に含む。OASシステムにおけるCDFおよびブロブを伴うシステムの例に関しては、表1に列挙する出願(それぞれを本願明細書に援用する)に、より詳細に提供されている。
CDF301は、任意の適した方式でブロブを参照することができ、本発明の実施形態はこれに関して限定されない。例えば、CDF301は、それが参照する各ブロブのオブジェクト識別子を、ブロブへの参照として記憶することができる。したがって例えば、ブロブ303が空港セキュリティ・カメラ1からのビデオ・データを記憶し、ブロブ305および307がそれぞれ空港セキュリティ・カメラ2からのビデオ・データを記憶している場合、CDF301中のブロブ303に関するメタデータは、ブロブ303のコンテンツが空港セキュリティ・カメラ1からのビデオ・データであることを示すことができ、ブロブ305および307に関するメタデータは、これらのブロブのコンテンツがセキュリティ・カメラ2からのビデオ・データであることを示す。したがって、空港セキュリティ・カメラ1を求めるメタデータ検索の結果として、CDF301を識別することができる。CDF301のメタデータを調べて、ブロブ303が空港セキュリティ・カメラ1からのビデオ・データを記憶していると決定することができる。CDF301からブロブ303のオブジェクト識別子を得ることができ、次いで、このオブジェクト識別子を使用してブロブ303にアクセスすることができ、それにより、このブロブを任意の望まれる方式で(例えば顔認識ソフトウェアを使用して)処理することができる。
メタデータがCDFに記憶され、それに対応するデータがブロブに記憶されているとき、ホスト・コンピュータ103は、メタデータのみを受信しデータは受信しないことを望む場合に、選択基準の1つとして、CDFのみを提供しブロブは提供しないよう記憶システム101に要求することができる。同様に、ホスト・コンピュータ103は、データのみを受信しメタデータは受信しないことを望む場合に、選択基準の1つとして、ブロブのみを提供しCDFは提供しないよう記憶システム101に要求することができ、あるいは、メタデータとデータの両方を提供するよう要求することができる。
1実施形態では、記憶システム101はデフォルトで、要求105に応答してブロブのみを提供するように構成される。したがって、選択基準の1つとして「ブロブのみ」と指定する必要はない。例えば、記憶システム101は、選択基準を含む要求を受信することができる。記憶システムは、選択基準を満たすCDFを識別することができるが、これらのCDFを返すのではなく、選択基準を満たすCDFによって参照されるブロブを突き止めて返すことができる。
記憶システム101は、要求105に応答して、任意の適した方式で、かつ任意の適したフォーマットで、コンテンツ・ユニットをホスト103に提供することができ、本発明はこれに関して限定されない。1実施形態では、記憶システムは、ホストによる処理を容易にする方式であってホストによって指定することのできる方式で、コンテンツ・ユニットをホストに提供する。1実施形態では、記憶システム101は、ホスト・コンピュータ103上のファイル・システムにコンテンツ・ユニットを記憶することができる。要求105に応答して提供されたコンテンツ・ユニットを、ホスト・コンピュータ103上のファイル・システムを使用して記憶するとき、ファイル・システムは、任意の適した方式で編成されてよい。例えば、ファイル・システムは、時刻ベースのディレクトリ構造、オブジェクト識別子に基づいて編成されたディレクトリ構造、メタデータ・キーワードに基づいて編成されたディレクトリ構造、または他の任意の適したディレクトリ構造を使用することができる。
図4は、オブジェクト識別子に基づいて編成されたディレクトリ構造を有する例示的なファイル・システムである。図4のディレクトリ構造は、いくつかの階層型ディレクトリを含む。階層の最上部のディレクトリは、ルート・ディレクトリ402と呼ばれる。階層の第2レベルには、いくつかのサブディレクトリ404がある。これらのサブディレクトリはそれぞれ、コンテンツ・ユニットのオブジェクト識別子の最初の文字を表す。すなわち、文字「A」で始まるオブジェクト識別子を有するコンテンツ・ユニットが、ディレクトリ「A」のサブディレクトリの1つに記憶される。このコンテンツ・ユニットが記憶されるサブディレクトリ406は、オブジェクト識別子の第2の文字に依存する。記憶システム101から取り出されファイル・システムに記憶されたコンテンツ・ユニットにホスト・コンピュータ103がアクセスするとき、ホスト・コンピュータは、特定のコンテンツ・ユニットをそれらのオブジェクト識別子に基づいて突き止めることができる。例えば、ホスト・コンピュータ上のアプリケーション・プログラムが、ファイル・システム階層を横断して、特定のコンテンツ・ユニットのオブジェクト識別子の最初の2文字に一致する名前を有するサブディレクトリを突き止めることによって、このコンテンツ・ユニットを突き止めることができる。図4のディレクトリ構造では、リーフ・ディレクトリ406は、コンテンツ・ユニットのオブジェクト識別子の最初の2文字を表す。しかし、本発明はこれに関して限定されず、本発明の実施形態は、階層中に追加レベルを有する階層型ディレクトリ構造を使用することもできる。任意の適した数の追加レベルを使用することができ、本発明はこれに関して限定されない。例えば、サブディレクトリ「AA」は、ディレクトリ構造のリーフ・サブディレクトリである、サブディレクトリAAA〜AAZ(すなわち26個のサブディレクトリ)を有することができる。したがって、コンテンツ・ユニットが記憶されるサブディレクトリは、そのオブジェクト識別子の最初の3文字に依存する。
別の実施形態では、ホスト・コンピュータ103上のファイル・システム・ディレクトリ構造は時刻に基づいて編成することができ、ディレクトリ構造中のコンテンツ・ユニットの位置は、コンテンツ・ユニットが元々記憶システム101上に記憶された時刻に基づいて選択することができる。例えば、2004年7月31日の午前11時に記憶されたコンテンツ・ユニットは、6つのレベル(階層順にL1〜L6)を有するディレクトリ構造中で、ディレクトリ/2004/07/31/11/00/00に記憶することができ、このディレクトリ構造では、ディレクトリL1は、コンテンツ・ユニットが記憶された年を示す値2004を記憶し、サブディレクトリL2は月を示す値07を記憶し、サブディレクトリL3は日を示す値31を記憶し、サブディレクトリL4は時を示す値11を記憶し、サブディレクトリL5は分を示す値00を記憶し、L6は秒を示す値00サブディレクトリを記憶する。したがって例えば、第2のコンテンツ・ユニットが2004年7月31日の午前11時30分に記憶システムに記憶された場合、この第2のコンテンツ・ユニットは、ホスト・コンピュータ上のファイル・システム中で、ディレクトリ/2004/07/31/11/30/00に記憶することができる。
時刻ベースのディレクトリ構造は、コンテンツ・ユニットが元々記憶システム101上に記憶された時刻に基づいてホスト・コンピュータ上のアプリケーション・プログラムがコンテンツ・ユニットを突き止められるようにするのを助ける。コンテンツ・ユニットを記憶するためのディレクトリ構造を指定する際に時刻を利用する本発明の実施形態は、上述した特定の例に限定されず、本発明のこの実施形態は、サブディレクトリ・レベルの境界およびサブディレクトリの数を確立するものとして異なる時間単位を使用することによる方法を含めて、多くの方法のいずれでも実施できることを理解されたい。
上で説明したように、その他多くの適したディレクトリ構造(例えば、メタデータ・キーワードまたは他の選択基準に基づいて編成されたディレクトリ構造)を使用することができ、本発明はこれに関して限定されない。
任意の適した方式で、ディレクトリ構造を生み出してコンテンツ・ユニットを適切なディレクトリ中に配置することができ、本発明はこれに関して限定されない。1実施形態では、ホスト・コンピュータ103上のファイル・システムは、ネットワーク化されたファイル・システムとすることができる。記憶システム101は、ディレクトリ構造を生み出して、コンテンツ・ユニットをディレクトリ構造中の適切なディレクトリ中に配置することができる。
別の実施形態では、ホスト・コンピュータ103上のファイル・システムは、記憶システム101にアクセス可能なネットワーク化されたファイル・システムである(可能ではあるが)必要はない。アプリケーション・プログラミング・インタフェース(API)など、ホスト・コンピュータ103上のソフトウェアが、記憶システム101と、記憶システム101上のコンテンツにアクセスしたいアプリケーション・プログラムとの間のインタフェースとしての働きをすることができる。APIは、ディレクトリ構造の作成および管理を担うことができる。例えば、図5に示すように、ホスト・コンピュータ103は、アプリケーション・プログラム501およびAPI503を実行することができる。アプリケーション・プログラム501は、記憶システム101に対してコンテンツ・ユニットの読取りおよび/または書込みを行う任意のタイプのアプリケーション・プログラムとすることができる。API503は、アプリケーション・プログラム501が記憶システム101と通信するために呼び出すことのできるサブルーチンのセットを提供することができる。
したがって例えば、アプリケーション・プログラム501は、API503のサブルーチンを呼び出すことができ、このサブルーチンは、指定された選択基準を満たすコンテンツ・ユニットを求める要求をAPI503から記憶システム101に送信させる。アプリケーション・プログラムは、サブルーチン呼出しの中で、または他の任意の適した方式で、選択基準を指定することができる。アプリケーション・プログラムはまた、結果が返される方式(例えば、時刻ベースのディレクトリ構造、または他のタイプのディレクトリ構造中で)を、サブルーチン呼出しの中で、または他の任意の適した方式で指定することができる。記憶システム101は、要求を受信し、要求されたコンテンツ・ユニットを識別し、これらのコンテンツ・ユニットをAPI503に返すことができる。API503は、返されたコンテンツ・ユニットを受信し、各コンテンツ・ユニットをファイル・システム・ディレクトリ構造中の適切なディレクトリに配置することができる。適切なディレクトリがまだ存在しない場合は、API503は、適切な1つまたは複数のディレクトリをファイル・システム・ディレクトリ構造に追加することができる。
上の例では、API503は、アプリケーション・プログラム501が記憶システム101と通信するためのインタフェースとして動作し、かつ、記憶システム101から受信したコンテンツ・ユニットを特定のディレクトリ構造中に編成するエンティティとしての動作をした。しかし、本発明はこれに関して限定されず、いくつかの実施形態では、この2つの操作は別々のエンティティ(例えば別々のソフトウェア・プログラム)によって実施されてもよい。
上の例では、コンテンツ・ユニットはファイル・システムに記憶される(しかし本発明はこれに関して限定されない)。いくつかの実施形態では、各コンテンツ・ユニットを、ファイル・システム中の別々のファイルとして記憶することができる。しかし、本発明はこれに関して限定されず、複数のコンテンツ・ユニットを単一のファイルに「コンテナ化」(すなわち記憶)してもよい。コンテンツ・ユニットのコンテナ化については、以下の表1に列挙する本願の譲受人に譲渡された出願のいくつかに、より詳細に説明されている。
上の例では、ディレクトリを含むディレクトリ構造を有するものとして、ファイル・システムに言及している。本明細書において、ディレクトリは、ファイルおよび/または他のディレクトリを論理的に記憶する、ファイル・システム中の論理エンティティを指す。ファイル・システムには、用語「ディレクトリ」の代わりに用語「フォルダ」を使用するものもある。本明細書において、用語「ディレクトリ」は、ファイルおよび/または他の論理記憶エンティティを論理的に記憶する、ファイル・システム中の「フォルダ」または他の任意の論理記憶エンティティを包含することを理解されたい。
さらに、上の例における例示的なファイル・システム・ディレクトリ構造は、階層型ディレクトリ構造を利用しており、それによりディレクトリは階層型に構成される。コンテンツ・ユニットがホスト・コンピュータ上のファイル・システムに記憶される本発明の実施形態では、ファイル・システムのディレクトリ構造は階層型である必要はなく、フラット・ディレクトリ構造または他の任意の適したディレクトリ構造を使用してもよいことを理解されたい。加えて、ファイル・システムは、ファイル・システムに記憶されることになるコンテンツ・ユニットの何らかの特性に基づいて編成される必要はなく、本発明はこれに関して限定されない。ファイル・システムは、任意の適した方式で編成されてよく、全く編成されなくてもよい。
上で説明したように、記憶システム101上に記憶されている、要求中で指定された1つまたは複数の選択基準を満たすコンテンツ・ユニットを提供するよう求める要求を記憶システム101が受信したとき、記憶システム101は、記憶システム101上に記憶されている、要求を満たすコンテンツ・ユニットを識別して突き止めることができる。これは任意の適した方式で行うことができ、本発明はこれに関して限定されない。例えば、1実施形態では、記憶システム101は、1つまたは複数の選択基準を満たす各コンテンツ・ユニットを識別し、これらのコンテンツ・ユニットに対応するオブジェクト識別子のリストを作成することができる。リストが完成した後、次いで記憶システムは、リストを横断して、リスト中の各オブジェクト識別子に対応するコンテンツ・ユニットにアクセスし、これをホスト・コンピュータに提供することができる。
別の実施形態では、記憶システム101は、1つまたは複数の選択基準を満たすコンテンツ・ユニットを識別するのを開始することができ、各コンテンツ・ユニットが識別されるのに伴って、このコンテンツ・ユニットにアクセスしてこれをホスト・コンピュータに提供することができる。
コンテンツ・ユニットを識別することと、コンテンツ・ユニットにアクセスすることは、2つの別々の手順とすることができることを理解されたい(しかし各手順は同じコンピュータ工程またはスレッドによって実施することができ、本明細書に述べる本発明の実施形態はこれに関して限定されない)。例えば、記憶システム101によって受信された要求は、あるキーワードを含むメタデータを有するコンテンツ・ユニットを求めるものである場合がある。
記憶システムは、任意の適した方式でコンテンツ・ユニットを識別することができ、本発明はこれに関して限定されない。1実施形態では、記憶システムは、キーワードを含むメタデータを有するコンテンツ・ユニットに対応する1つまたは複数のオブジェクト識別子にメタデータ・キーワードをマッピングする、メタデータ・インデックスを有することができる。コンテンツ・ユニットを識別することは、メタデータ・インデックスを検索して、指定されたキーワードを含むコンテンツを有するコンテンツ・ユニットに対応するオブジェクト識別子を決定することを伴うことができる。
コンテンツ・ユニットにアクセスすることは、オブジェクト識別子を、コンテンツ・ユニットのコンテンツが記憶されている物理的な記憶位置(例えばディスク位置)に変換すること、およびこの記憶位置からコンテンツを取り出すことを伴うことができる。
いくつかの状況では、コンテンツ・ユニットを識別することは、コンテンツ・ユニットにアクセスすることを伴うことができる。例えば、いくつかの実施形態では、記憶システム101は、メタデータ・キーワードをオブジェクト識別子にマッピングする既存のメタデータ・インデックスを有さない場合がある。したがって、あるキーワードを含むメタデータをどのコンテンツ・ユニットが有するかを決定するために、記憶システム101は、コンテンツ・ユニットにアクセスして、メタデータ中でキーワードを検索することができる。
メタデータ・キーワードを、これらのキーワードをメタデータ中に含むコンテンツ・ユニットのオブジェクト識別子にマッピングする既存のメタデータ・インデックスを利用する実施形態では、このようなインデックスを記憶システム101上に記憶する必要はなく、記憶システム101はこれらのメタデータ・キーワードの索引付けを実施する必要はなく、本発明はこれに関して限定されないことを理解されたい。例えば、いくつかの実施形態では、メタデータ・キーワードの索引付けは、記憶システムとは別個に(例えば記憶システムの外部に配置されたアプライアンスまたは他のコンピュータによって)実施することができる。別個のインデクサはコンテンツ・ユニットを記憶しなくてよいが、記憶システム101上に記憶されたコンテンツ・ユニットを(同期してまたは非同期で)受信し、これらを処理してメタデータ・インデックスを作成することができる。
上で説明したように、ホスト・コンピュータ103によって発行された要求の中で指定された1つまたは複数の選択基準を満たすコンテンツ・ユニットを、記憶システム101から、ホスト・コンピュータ103以外のシステムに、またはホスト・コンピュータ103に加えて他のシステムにも返すことができる。例えば、ホスト・コンピュータ103上で実行されているアプリケーション・プログラムが、2005年1月12日から2005年1月18日までの間に記憶システム101上に記憶された空港セキュリティ・カメラからのビデオ・データを含むコンテンツ・ユニットを求める要求を発行する場合がある。アプリケーション・プログラムは、ビデオ・データに対して顔認識(および/または他の処理)技法を実施するように構成されたものであってよい。同じアプリケーション・プログラムの別個のインスタンスを実行するために、他のホスト・コンピュータが利用可能であるものとすることができる。このため、アプリケーション・プログラムの各インスタンスがコンテンツ・ユニットの一部を並列で処理することができるように、選択基準を満たすコンテンツ・ユニットのいくつかを各ホスト・コンピュータに送信することが望まれる場合がある。したがって、アプリケーション・プログラムの単一のインスタンスがすべてのコンテンツ・ユニットを処理する場合よりも高速に結果を得ることができる。
上の例では、顔認識アプリケーション・プログラムを使用して、空港セキュリティ・システムからのビデオ・データを記憶したコンテンツ・ユニットを処理する。しかし、本発明はこれに関して限定されず、任意の適したタイプのアプリケーション・プログラムを使用することができ、任意の適したタイプのコンテンツを記憶したコンテンツ・ユニットを記憶システムから提供して処理することができる。
指定された1つまたは複数の選択基準を満たすコンテンツ・ユニットを、記憶システム101から、コンテンツ・ユニットの要求を発行したホスト・コンピュータに代えてまたは追加で1つまたは複数のホスト・コンピュータに転送することは、任意の適した方式で実施することができ、本発明はこれに関して限定されない。さらに、後で詳細に説明するように、要求を発行したホスト・コンピュータ(すなわちホスト・コンピュータ103)以外のホスト・コンピュータへのコンテンツ・ユニットの転送は、1つまたは複数の選択基準を満たすコンテンツ・ユニットを記憶システム101がホスト・コンピュータ103にすでに提供し始めた後で開始することができる。1つまたは複数の選択基準を満たすコンテンツ・ユニットが、ホスト・コンピュータ103に代えてまたは追加で他のホスト・コンピュータに提供されることの指示は、要求の前にまたは要求と同時に記憶システムに提供する必要はない。むしろ、このような命令は、記憶システムが要求を受信した後のいつでも記憶システムに提供することができる。加えて、要求に応答して記憶システム101からコンテンツ・ユニットを受信し始めたホスト・コンピュータは、コンテンツ・ユニットをそれ自体に送信するのを停止するよう求める指示を記憶システム101に送信することができる。したがって、コンテンツ・ユニットを送信できる送信先コンピュータの数を動的に変更して、プロセッサの数を増減することまたはプロセッサを代用することができる。
いくつかの実施形態では、記憶システム101への最初の要求は、結果が提供されることになる1つまたは複数のホスト・コンピュータ(要求を発行したホスト・コンピュータに追加でまたはそれに代えて)を指定することができる。
本明細書において、用語「反復」は、アクセス要求中で指定された1つまたは複数の基準を満たすコンテンツ・ユニットを記憶システム101上で検索することを指す。したがって、指定された1つまたは複数の基準を満たすコンテンツ・ユニットを1つまたは複数の宛先に提供するよう求める要求を記憶システム101が受信したとき、これらのコンテンツ・ユニットの検索を表す反復が記憶システム101上で生み出される(すなわち、記憶システム101はこれらのコンテンツ・ユニットの検索を開始する)。その後、検索において識別されたコンテンツ・ユニットを追加の宛先(例えばホスト・コンピュータ)に提供し始めるよう求める要求を記憶システム101が受信したとき、この追加の宛先は、本明細書では「反復に加わる」として言及する。反復の一部としてコンテンツ・ユニットを受信している宛先にコンテンツ・ユニットを提供するのを停止するよう求める要求を記憶システム101が受信したとき、この宛先は、本明細書では「反復を出る」として言及する。
したがって、記憶システムから提供されるコンテンツ・ユニットを処理するためのリソースは、これらのコンテンツ・ユニットを提供するよう求める要求を記憶システムに送信する前に割り振る必要はない。そうではなく、記憶システムは、反復の中で識別されたコンテンツ・ユニットを処理するためにリソースが利用可能になるのに伴って、これらのコンテンツ・ユニットをリソースに提供することができ、利用不可能になったリソース(例えば他の処理タスクに必要とされるリソース)へのコンテンツ・ユニットの提供は停止することができる。
図6に、記憶システム101と、複数のホスト・コンピュータ601a、601b、601c、および601dとを備えるコンピュータ・システムを示す。各ホスト・コンピュータは、アプリケーション・プログラム603a〜d(例えばコンテンツ・ユニットからのコンテンツを処理するプログラム)を実行することができ、インタフェース605a〜dを備えることができる。インタフェース605a〜dを介して、アプリケーション・プログラム(例えばアプリケーション・プログラム601)は、記憶システム101と通信して、反復を生み出し、かつ/または反復に加わる。インタフェース605は、アプリケーション・プログラムが他のタイプのアクセス要求(例えば読取り要求、書込み要求、およびクエリ要求)のために記憶システム101と通信する際に介するインタフェースとは別個のインタフェースであってもよく、あるいはそのインタフェースの一部を形成してもよく、本発明はこれに関して限定されない。例えば、インタフェース605は、図5のインタフェース503とは別個のインタフェースであってもよく、あるいはインタフェース503の一部を形成してもよい。
インタフェース605がAPI503とは別個である実施形態では、各インタフェース605は、上の例でAPI503によって実施されるものとして記載した操作のいくつかを実施することができる。インタフェース605はこれらの操作を、API503に追加でまたはその代わりに実施することができる。例えば、記憶システムから受信したコンテンツ・ユニットがホスト・コンピュータ上のファイル・システムに記憶される実施形態では、インタフェース605は、コンテンツ・ユニットをファイル・システム中の適切なディレクトリに記憶することができ、かつ/または、ファイル・システムのディレクトリ構造を作成および管理することができる。
図7に、記憶システム101上で反復を生み出すことができ、追加のホスト・コンピュータが反復に加わることができるための、例示的な工程を示す。工程は動作701で開始し、ホスト・コンピュータ(例えばホスト・コンピュータ601a)が最初に、指定された1つまたは複数の選択基準を満たすコンテンツ・ユニットを求める要求を記憶システム101に送信する。次いで工程は動作703に進み、記憶システムは、要求を受信し、要求に対応する反復を生み出す(すなわちコンテンツ・ユニットの検索を開始する)。
いくつかの実施形態では、記憶システム101は分散記憶システムとすることができる。分散記憶システムの例800を図8に示す。分散記憶環境800は、複数のアクセス・ノード801a〜801c、および複数の記憶ノード803a〜803eを含む。アクセス・ノード801は、ホスト・コンピュータからのアクセス要求を受信してこれらに応答することができ、記憶ノード803は、ホスト・コンピュータによって記憶環境800に送信されたコンテンツを記憶することができる。アクセス・ノード801および記憶ノード803は、各ノードがネットワーク(図示せず)上におけるその存在を他のノードに知られることができるように、ネットワークによって結合させることができ、ネットワークを介して通信することができる。このようにして、ノードは協働して、ホスト・コンピュータに対してアクセス要求を処理しデータを記憶することができる。
各ノードは、処理リソース(例えばプロセッサおよびメモリ)ならびに記憶デバイスを備えることができる。ノードは、相互と通信して、コンテンツを記憶し、アクセス要求に応答し、他の環境機能を実施する。記憶環境のユーザ(例えば、ホスト・コンピュータ、またはホスト・コンピュータ上で実行されているアプリケーション・プログラム)にとっては、記憶環境は単一のエンティティに見えるものとすることができる。すなわち、ユーザは、記憶環境が複数の別々のノードを含むこと、または、あるデータ・ユニットがどの記憶ノード上で記憶またはミラーリングされているかを意識する必要はない。
記憶システム101が分散記憶システムである実施形態では、1つまたは複数の選択基準を満たすコンテンツ・ユニットが記憶されている可能性のある、記憶システム中の各記憶ノード上で、反復を生み出すことができる。すなわち、分散記憶システム中のアクセス・ノードは、選択基準を満たすコンテンツ・ユニットを求める要求を受信することができ、これらのコンテンツ・ユニットのいずれかを記憶している可能性のある各記憶ノードに、選択基準を満たす記憶されているコンテンツ・ユニットの検索を開始するよう指示する。選択基準を満たすコンテンツ・ユニットを記憶ノードが識別したとき、記憶ノードは、これらのコンテンツ・ユニットを、反復の中の1つまたは複数のホスト・コンピュータに逆に提供されるように、指示したアクセス・ノードに返すことができ、あるいは、これらのコンテンツ・ユニットを、反復に加えられたホスト・コンピュータの1つに直接提供することができる。
分散記憶システムでは、コンテンツ・ユニットを2つ以上の記憶ノード上でミラーリングすることができる。すなわち、同じコンテンツ・ユニットの2つ以上のコピーを、分散記憶システム中の異なる記憶ノード上に記憶することができる。これは例えば、コンテンツ・ユニットのコピーの1つが破損した場合、またはコンテンツ・ユニットが記憶されている記憶ノードが利用不可能になった場合(例えばハードウェア障害のせいで)に、コンテンツ・ユニットが利用可能であるようにするために行うことができる。要求に応答して反復が各記憶ノード上で生み出される実施形態では、2つ以上の記憶ノードが同じコンテンツ・ユニットを識別することができ、これらの記憶ノードはそれぞれ、それに記憶されている、コンテンツ・ユニットのミラーリングされたコピーを識別することができる。
したがって、いくつかの実施形態では、反復に加えられた1つまたは複数のアプリケーション・プログラムに、同じコンテンツ・ユニットのミラーリングされたコピーの一方のみが提供されるように、コンテンツ・ユニットのコピーをフィルタにかけることができる。ミラーリングされたコピーは、任意の適した方式でフィルタにかけることができ、本発明はこれに関して限定されない。例えば、1実施形態では、コンテンツ・ユニットに関連するまたは含まれるメタデータは、コンテンツ・ユニットがプライマリ・コピーであるかミラーリングされたコピーであるかを示すことができる。記憶ノードは、メタデータを読み取って、コンテンツ・ユニットのプライマリ・コピーのみを返すことができる。記憶ノードが、選択基準を満たすコンテンツ・ユニットを、指示したアクセス・ノード(すなわち要求を受信したアクセス・ノード)に提供し、アクセス・ノードが、反復に加えられたホスト・コンピュータにこれらのコンテンツ・ユニットを返す別の実施形態では、アクセス・ノードは、どのコンテンツ・ユニットが送信されたかを追跡し(例えばそれらのオブジェクト識別子を使用して)、複製があればそれらをフィルタにかけて除去することができる。
いくつかの実施形態では、複製コンテンツ・ユニット(例えばミラー・コピー)をフィルタにかけて除去しなくてもよく、本発明は複製をフィルタにかけて除去することに限定されない。したがって例えば、同じコンテンツ・ユニットの2つのコピーを反復の中の1つまたは複数のアプリケーション・プログラムに提供することができ、各コピーをアプリケーション・プログラムの1つによって処理することができる。
反復が生み出された後、工程は動作705に進み、記憶システムは、反復を識別するセッション識別子を作成して、要求を発行したホスト・コンピュータ(この例ではホスト・コンピュータ601a)にセッション識別子を返す。記憶システム101は、インタフェース605aを介してアプリケーション・プログラム603aにセッション識別子を返すことができ、あるいは他の任意の適した方式で返すことができる。セッション識別子の使用により、記憶システムは、複数の反復を同時に処理することができる。実際、同じホスト・コンピュータ上の異なるアプリケーション・プログラムが、同時に異なる反復に参与する場合があり、あるいは、同じアプリケーションが、同時に2つの異なる反復に参与する場合がある。
次に工程は動作707に進み、アプリケーション・プログラムは、他のホスト・コンピュータ上で実行されている他のアプリケーション・プログラムに、セッション識別子を配信することができる。
次に工程は動作709に進み、他のホスト・コンピュータ上で実行されている他のアプリケーション・プログラムは、セッション識別子を使用して反復に加わる。これは任意の適した方式で行ってよく、本発明はこれに関して限定されない。例えば、ホスト・コンピュータ601b上で実行されているアプリケーション・プログラム603bは、アプリケーション・プログラム603aからセッション識別子を受信した後、受信したセッション識別子に対応する記憶システム101上の反復に加わりたいことをインタフェース605bに示すことができる。アプリケーション・プログラム603bは、インタフェース605bにコールバックを登録することができる。すなわち、アプリケーション・プログラム603bは、反復から生成されたコンテンツ・ユニットをインタフェース605bが記憶システム101から受信したときにインタフェース605bが呼び出すことになるサブルーチンの名前を提供することができる。サブルーチンは、受信したコンテンツ・ユニットをアプリケーション・プログラムに提供するサブルーチンとするか、あるいは、コンテンツ・ユニットが受信されてホスト・コンピュータ上に(例えばファイル・システムに)記憶されたことをアプリケーション・プログラムに通知するサブルーチンとすることができる。
上の例では、インタフェース605bが、登録されたサブルーチンを呼び出すことによってコンテンツ・ユニットをアプリケーション・プログラム603bに「プッシュ」する。しかし、本発明はコールバック・サブルーチンの使用に限定されず、アプリケーション・プログラムは、任意の適した方式でコンテンツ・ユニットをインタフェースから受信することができる。例えば、アプリケーション・プログラムが、インタフェースのサブルーチンを呼び出すことによってコンテンツ・ユニットをインタフェースから「プル」することもできる。
セッション識別子によって識別される反復に加わることを要求するアプリケーション・プログラムからの指示をインタフェース605bが受信したとき、インタフェースは、ホスト・コンピュータ601bがこの反復に加わりたいことを示す命令を記憶システム101に送信することができる。記憶システム101は、各反復につき、反復に加えられたホスト・コンピュータの情報を(例えば記録中で)維持することができる。指定されたセッション識別子に対応する反復にホスト・コンピュータが加わりたいことを示す命令を記憶システム101が(例えばインタフェースから)受信したとき、記憶システムは、反復に加えられたホスト・コンピュータを識別する情報にこのホスト・コンピュータを追加することができる。
1実施形態によれば、ホスト・コンピュータを反復に追加する命令は、コンテンツ・ユニットを求める最初の要求が記憶システムによって受信された後から反復が完了する前までのいつでも、記憶システム101に送信することができ、本発明はこれに関して限定されない。したがって、指定された1つまたは複数の検索基準を満たすいくつかの(さらにはほとんどの)コンテンツ・ユニットが識別されて、前に反復に加えられた1つまたは複数のホスト・コンピュータに提供された後でさえ、ホスト・コンピュータは反復に加わることができる。
次に工程は動作711に進み、記憶システムは、反復に加わったホスト・コンピュータにコンテンツ・ユニットを提供する。上で説明したように、記憶システム101は、反復に加えられたすべてのホスト・コンピュータの記録を維持することができる。指定された選択基準を満たすとしてコンテンツ・ユニットが識別され、記憶システムがコンテンツ・ユニットにアクセスし、反復に加えられたホスト・コンピュータの1つにコンテンツ・ユニットを返す用意ができたとき、記憶システムは、コンテンツ・ユニットを受信することになるこれらのホスト・コンピュータの1つを選択することができる。これは任意の適した方式で行うことができ、本発明はこれに関して限定されない。例えば、1実施形態では、記憶システムは、コンテンツ・ユニットを受信することになるホスト・コンピュータの1つを、自由にまたは擬似乱数を使用して選択することができる。別の実施形態では、ロード・バランシング方式を使用して、ホスト・コンピュータの1つを選択することができる。任意の適したロード・バランシング方式を使用することができ、本発明はこれに関して限定されない。例えば、ラウンドロビン方式、各ホスト・コンピュータ上の利用可能な処理リソースおよび/または機能に関する情報を用いる方式、あるいは他の任意の適したロード・バランシング方式を使用することができる。
本発明は複数のホスト・コンピュータにコンテンツ・ユニットを提供することに限定されず、いくつかの実施形態では、反復の中で識別されたコンテンツ・ユニットが、単一のホスト・コンピュータ、例えば要求を発行したホスト・コンピュータなどのみに提供されることを理解されたい。さらに、いくつかの実施形態では、反復の中で識別されたコンテンツ・ユニットを複数のホスト・コンピュータに提供する能力が実装されない場合があり、あるいは、実装されたときであっても、ホスト・コンピュータを動的に反復に追加するかまたは反復から削除する能力は実装されない場合があり、本発明はこれに関して限定されない。加えて、いくつかの実施形態では、ホスト・コンピュータを動的に反復に追加する能力は実装されるが、ホスト・コンピュータを動的に削除する能力は実装されない場合があり、あるいは、ホスト・コンピュータを動的に反復から削除する能力は実装されるが、ホスト・コンピュータを動的に追加する能力は実装されない場合があり、本発明はこれに関して限定されない。
1実施形態によれば、反復に加えられたホスト・コンピュータは、反復が完了する前のいつでも反復から出ることができ、記憶システムは、このホスト・コンピュータにコンテンツ・ユニットを提供するのを停止することができる。これは任意の適した方式で行うことができ、本発明はこれに関して限定されない。例えば、記憶システム101上の反復に加えられたアプリケーション・プログラム603bは、インタフェース605bに指示を送信して、セッション識別子を指定し、対応する反復を出ることを要求することができる。インタフェース605bは、セッション識別子によって識別される反復をホスト・コンピュータが出たいと思っていることを示す要求を、記憶システム101に送信することができる。これに応答して、記憶システム101は、反復に加えられたホスト・コンピュータを識別する記録から、このホスト・コンピュータを削除することができる。したがって、記憶システム101は、もはやこの反復からのコンテンツ・ユニットをこのホスト・コンピュータに提供し続けることはない。
本明細書において、記憶システムから受信された種々のコンテンツ・ユニットを記憶するために別々の記憶空間を割り振られた、かつ/または種々のコンテンツ・ユニットを別々に処理する、並列コンピュータの各ノード、プロセッサ、またはプロセッサ・コアは、別々のホスト・コンピュータ、システム、またはサーバと考えることができるが、同じコンテンツ・ユニットを共に処理するノード、プロセッサ、またはプロセッサ・コア(すなわち共同で単一のコンテンツ・ユニットを処理する複数のノード、プロセッサ、またはプロセッサ・コア)は、単一のホスト・コンピュータ、システム、またはサーバとして集合的に考えることができる。
1実施形態では、記憶システム101は、反復にサービスすると同時に、反復に関係のない他のアクセス要求を受信することもできる。例えば、反復にサービスする間、記憶システム101は、反復に参与していないホスト・コンピュータまたは反復に参与しているホスト・コンピュータから、読取りおよび/または書込み要求(例えば反復に関係のないもの)を受信することができる。したがって、1実施形態では、記憶システムは、反復に対して相対的なこのようなアクセス要求の優先度を決定し、このようなアクセス要求の優先度が高いと判定された場合は、反復を減速して、これらのアクセス要求を処理するためのリソースを解放することができる。
記憶システムは、任意の適した方式でアクセス要求の優先度を決定することができ、本発明はこれに関して限定されない。例えば、1実施形態では、記憶システムは、アクセス要求を発行したホスト・コンピュータまたはアプリケーション・プログラムに基づいて、優先度を決定することができる。別の実施形態では、アクセス要求は優先度レーティングを含むことができ、記憶システムは、この優先度レーティングを使用して、要求にサービスするために処理リソースを解放すべきかどうか、およびどの程度解放すべきかを決定することができる。
記憶システムは、任意の適した方式で、反復にサービスするのに使用されている処理リソースを解放することができる。例えば、記憶システムは、1つまたは複数のマルチタスキング・プロセッサを備えることができ、これらのプロセッサの1つまたは複数で実行される1つまたは複数の工程は、反復にサービスする工程であり、他の1つまたは複数の工程は、アクセス要求にサービスする工程である。記憶システムは、1つまたは複数のプロセッサが、その時間のうち一定の量または割合を、反復にサービスする工程を実行するのに費やすよう指定することができる。優先度の高いアクセス要求が受信されたときは、記憶システムは、反復にサービスする1つまたは複数の工程に1つまたは複数のプロセッサが費やす時間量を低減させることができる。
1実施形態では、記憶システム101は、記憶システムの連合体とすることができる。すなわち、記憶システム101は、2つ以上の別々の記憶システムを含むことができ、各記憶システムは、別々の処理リソースを備えるが、いずれかの記憶システム上のコンテンツにアクセスするエンティティには単一の記憶システムに見える。記憶システムの連合体の例は、以下で表1に列挙する出願のいくつかに詳細に記載されている。
ホスト・コンピュータが、指定された1つまたは複数の選択基準を満たすコンテンツ・ユニットを求める要求を連合体に送信すると、1実施形態では、この要求は、連合体中の記憶システムの1つのみによって受信されるものとすることができる。しかし、これらのコンテンツ・ユニットが、要求を受信した記憶システム上に記憶されているか、連合体中の他の記憶システム上に記憶されているかにかかわらず、1つまたは複数の選択基準を満たす、連合体に記憶された任意のコンテンツ・ユニットが返されることが予想される。
記憶システム101が記憶システムの連合体である本発明の1実施形態によれば、連合体中の記憶システムの1つが、指定された1つまたは複数の選択基準を満たすコンテンツ・ユニットを求める要求を受信すると、この記憶システムは、この記憶システム上で反復を生み出し、反復のセッション識別子を生成することができる。加えて、この記憶システムは、要求を満たすコンテンツ・ユニットを記憶している可能性のある連合体中の他の記憶システムにも、反復を生み出してこれらの反復に同じセッション識別子を割り当てるよう指示することができる。記憶システムはまた、要求を発行したホスト・コンピュータを指定することができ、それにより、連合体中の他の記憶システムは、1つまたは複数の選択基準を満たすコンテンツ・ユニットをこのホスト・コンピュータに返すことができる。連合体中の記憶システムのいずれか1つが、ホスト・コンピュータを反復に追加する命令を後で受信した場合、命令を受信した記憶システムは、命令を連合体中の他のホスト・コンピュータに転送することができ、各記憶システムは、このホスト・コンピュータを反復に追加することができる。
本発明の前述の実施形態は、任意の適したコンピュータまたは記憶システム上で実施することができる。適したコンピュータおよび/または記憶システムの例は、以下で表1に列挙する特許出願(「OAS出願」と総称する)に記載されており、これらの各出願を本願明細書に援用する。これらの出願に記載されているコンピュータおよび記憶システムは、本発明の実施形態をその上で実施することのできるコンピュータおよび記憶システムの例に過ぎず、本発明は、これらのオブジェクト・アドレス指定可能な記憶システムのいずれでの実施にも限定されず、またオブジェクト・アドレス指定可能な記憶システムにも全く限定されないことを理解されたい。
Figure 2009533723
Figure 2009533723
本発明の前述の実施形態は、多くの方式のいずれでも実施することができる。例えば、これらの実施形態は、ハードウェア、ソフトウェア、またはこれらの組合せを使用して実施することができる。ソフトウェア中で実施されるときは、単一のコンピュータに備わっているか複数のコンピュータ間に分散しているかにかかわらず任意の適したプロセッサまたはプロセッサの集まりにおいて、ソフトウェア・コードを実行することができる。前述の機能を実施する任意のコンポーネントまたはコンポーネントの集まりは、上で説明した機能を制御する1つまたは複数のコントローラとして一般に考えることができることを理解されたい。1つまたは複数のコントローラは、専用ハードウェアによって実現したり、あるいは上に挙げた機能を実施するようにマイクロコードまたはソフトウェアを使用してプログラムされた汎用ハードウェア(例えば1つまたは複数のプロセッサ)によって実現したりするなど、多くの方式で実現することができる。
これに関して、本発明の実施形態の1実装形態は、プロセッサ上で実行されたときに上に論じた本発明の実施形態の機能を実施するコンピュータ・プログラム(すなわち複数の命令)によってエンコードされた、少なくとも1つのコンピュータ可読媒体(例えばコンピュータ・メモリ、フロッピー・ディスク、コンパクト・ディスク、テープなど)を含むことを理解されたい。
コンピュータ可読媒体は可搬型とすることができ、それにより、コンピュータ可読媒体に記憶されたプログラムを任意のコンピュータ環境リソースにロードして、本明細書で説明した本発明の態様を実施することができる。加えて、実行されたときに上で説明した機能を実施するコンピュータ・プログラムへの言及は、ホスト・コンピュータ上で稼動するアプリケーション・プログラムに限定されないことを理解されたい。本明細書ではむしろ、コンピュータ・プログラムという用語は、上で説明した本発明の態様を実施するようにプロセッサをプログラムするのに利用することのできる任意のタイプのコンピュータ・コード(例えばソフトウェアまたはマイクロコード)を指すために、一般的な意味で使用される。
コンピュータ可読媒体中に工程が実装される本発明のいくつかの実施形態によれば、コンピュータによって実施されるこれらの工程は、実行される間に手動で(例えばユーザから)入力を受け取ることができることを理解されたい。
本明細書で使用される言葉遣いおよび用語は、説明のためのものであり、限定と見なすべきではない。「含む」、「備える」、「有する」、「伴う」、およびこれらの活用形の使用は、その後に挙げる項目および追加の項目を包含するものとする。
本発明のいくつかの実施形態を詳細に記載したが、当業者なら様々な修正および改良をすぐに思いつくであろう。そのような修正および改良も、本発明の趣旨および範囲の内にあるものとする。したがって、前述の記述は例示に過ぎず、限定とはしない。本発明は、添付の特許請求の範囲およびその均等物によって定義されるようにのみ限定される。
本発明の1実施形態による、要求に応答して複数のコンテンツ・ユニットが記憶システムから転送されるコンピュータ・システムのブロック図。 1実施形態による、コンテンツ・ユニットを記憶システムから転送するための例示的な工程を示すフロー・チャート。 いくつかの実施形態による、複数のブロブを参照するコンテンツ記述子ファイル(CDF)の図であって、CDFは、参照されるブロブに関連するメタデータを含む図。 いくつかの実施形態による、記憶システムからコンテンツを転送できる転送先ホスト・コンピュータ上で利用することのできる、オブジェクト識別子に基づいて編成されたディレクトリ構造のブロック図。 いくつかの実施形態による、ホスト・コンピュータ上で実行されているアプリケーション・プログラムがアプリケーション・プログラミング・インタフェース(API)を介して記憶システムと通信するコンピュータ・システムのブロック図。 1実施形態による、複数のホスト・コンピュータが記憶システム上で生み出された反復に加わって記憶システムからのコンテンツ・ユニットを転送することができるコンピュータ・システムのブロック図。 1実施形態による、ホスト・コンピュータが記憶システム上の進行中の反復に加わることができるための例示的な工程を示すフロー・チャート。 本発明の実施形態をその上で実施することのできる分散記憶システムのブロック図。

Claims (10)

  1. 複数のクオリファイド・コンテンツ・ユニットを記憶する少なくとも1つの記憶システムを含むコンピュータ・システムにおいて使用される方法であって、
    (A)少なくとも1つの選択基準を提供する要求を、該少なくとも1つの記憶システムにおいて受信する動作と、
    (B)該要求を受信する動作に応答して、該少なくとも1つの選択基準を満たす該複数のクオリファイド・コンテンツ・ユニットのそれぞれを、該少なくとも1つの記憶システムから提供する動作と
    を備える方法。
  2. 前記少なくとも1つの選択基準は、提供される各クオリファイド・コンテンツ・ユニットが前記少なくとも1つの記憶システム上に記憶された時刻とは異なる少なくとも1つの基準を含む、請求項1に記載の方法。
  3. 前記要求はホスト・コンピュータから受信され、前記動作(B)は、前記少なくとも1つの選択基準を満たす前記複数のクオリファイド・コンテンツ・ユニットのそれぞれを該ホスト・コンピュータに提供する動作を含む、請求項1に記載の方法。
  4. 前記要求は、少なくとも1つのホスト・コンピュータ上で実行されている少なくとも1つのアプリケーション・プログラムから受信され、前記動作(B)は、前記少なくとも1つの選択基準を満たす前記複数のクオリファイド・コンテンツ・ユニットのそれぞれを該少なくとも1つのアプリケーション・プログラムに提供する動作を含む、請求項3に記載の方法。
  5. 前記クオリファイド・コンテンツ・ユニットのそれぞれは、別個の識別子を介して識別される論理オブジェクトであり、前記動作(B)は、前記少なくとも1つの選択基準を満たす前記複数のクオリファイド・コンテンツ・ユニットのそれぞれを、前記クオリファイド・コンテンツ・ユニットを別個の論理オブジェクトとして識別する識別情報によって提供する動作を含む、請求項1に記載の方法。
  6. 複数のコンテンツ・ユニットを記憶する少なくとも1つの記憶システムであって、
    入力と、
    該入力に結合された少なくとも1つのコントローラであって、

    該入力を介して受信された要求を処理して、第1グループのコンテンツ・ユニットを含む、少なくとも1つの選択基準を満たす該複数のコンテンツ・ユニットのそれぞれを、該少なくとも1つの記憶システムから少なくとも1つの第1の宛先に提供する間に、該第1グループのコンテンツ・ユニットのうちで該少なくとも1つの第1の宛先にまだ提供されていないコンテンツ・ユニットを、該少なくとも第1の宛先とは異なる該少なくとも1つの第2の宛先に提供し始めるよう命じる少なくとも1つの命令を、該入力を介して受信し、
    該少なくとも1つの命令の受信に応答して、該第1グループのコンテンツ・ユニットのうちで該少なくとも1つの第1の宛先にまだ提供されていないコンテンツ・ユニットを、該少なくとも1つの第2の宛先に提供する
    少なくとも1つのコントローラと
    を備える、少なくとも1つの記憶システム。
  7. 前記第1グループのコンテンツ・ユニットのいくつかがすでに識別されて前記少なくとも1つの第1の宛先に提供された後で、前記少なくとも1つのコントローラが前記命令を受信する、請求項6に記載の少なくとも1つの記憶システム。
  8. 前記少なくとも1つの第2の宛先は、前記少なくとも1つの第1の宛先および少なくとも1つの追加の宛先を含む、請求項6に記載の少なくとも1つの記憶システム。
  9. 前記少なくとも1つの第1の宛先は、前記少なくとも1つの第2の宛先および少なくとも1つの追加の宛先を含む、請求項6に記載の少なくとも1つの記憶システム。
  10. 前記少なくとも1つの第1の宛先および前記少なくとも1つの第2の宛先はそれぞれ、少なくとも1つのサーバを含む、請求項6に記載の少なくとも1つの記憶システム。
JP2009502933A 2006-03-28 2007-03-27 記憶システムからコンテンツを転送するための方法および装置 Pending JP2009533723A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/392,981 US20070233972A1 (en) 2006-03-28 2006-03-28 Methods and apparatus for transferring content to multiple destinations
US11/392,969 US20070233971A1 (en) 2006-03-28 2006-03-28 Methods and apparatus for transferring content from a storage system
PCT/US2007/007533 WO2007126791A2 (en) 2006-03-28 2007-03-27 Methods and apparatus for transferring content from a storage system

Publications (1)

Publication Number Publication Date
JP2009533723A true JP2009533723A (ja) 2009-09-17

Family

ID=38474347

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009502933A Pending JP2009533723A (ja) 2006-03-28 2007-03-27 記憶システムからコンテンツを転送するための方法および装置

Country Status (3)

Country Link
EP (2) EP2104045A3 (ja)
JP (1) JP2009533723A (ja)
WO (1) WO2007126791A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010157204A (ja) * 2008-09-11 2010-07-15 Nec Lab America Inc 検索可能なブロックを用いた連想記憶システムおよびその方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2391946B1 (en) * 2009-01-29 2018-03-07 EMC Corporation Method and apparatus for processing distributed data

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001290820A (ja) * 2000-01-31 2001-10-19 Mitsubishi Electric Corp 映像収集装置、映像検索装置および映像収集検索システム
US20020016971A1 (en) * 2000-03-31 2002-02-07 Berezowski David M. Personal video recording system with home surveillance feed
US7035468B2 (en) * 2001-04-20 2006-04-25 Front Porch Digital Inc. Methods and apparatus for archiving, indexing and accessing audio and video data
KR20040071203A (ko) * 2001-12-13 2004-08-11 톰슨 라이센싱 에스.에이. 프록시를 이용하여 데이터를 다운로딩하기 위한 시스템 및방법
CN1292346C (zh) * 2003-09-12 2006-12-27 国际商业机器公司 用于在分布式计算体系结构中执行作业的系统和方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010157204A (ja) * 2008-09-11 2010-07-15 Nec Lab America Inc 検索可能なブロックを用いた連想記憶システムおよびその方法

Also Published As

Publication number Publication date
EP2104045A3 (en) 2015-02-11
EP2104045A2 (en) 2009-09-23
WO2007126791A2 (en) 2007-11-08
EP2016512A2 (en) 2009-01-21
WO2007126791A3 (en) 2008-02-14

Similar Documents

Publication Publication Date Title
US7765189B2 (en) Data migration apparatus, method, and program for data stored in a distributed manner
US7765191B2 (en) Methods and apparatus for managing the replication of content
US7636704B2 (en) Methods and apparatus for scheduling an action on a computer
US6449607B1 (en) Disk storage with modifiable data management function
US7565494B1 (en) Configuring a bounded cache prefetch policy in a computer system employing object addressable storage
US7392235B2 (en) Methods and apparatus for retrieval of content units in a time-based directory structure
US20080065718A1 (en) Configuring a cache prefetch policy that is controllable based on individual requests
US7451225B1 (en) Configuring a cache prefetch policy in a computer system employing object addressable storage
US7376681B1 (en) Methods and apparatus for accessing information in a hierarchical file system
US7565493B1 (en) Configuring a cache replacement policy in a computer system employing object addressable storage
US7350041B1 (en) Methods and apparatus for managing the storage of content
US20070143353A1 (en) Apparatus and Method for On-Demand In-Memory Database Management Platform
US20070061539A1 (en) Filesystem building method
US9165006B2 (en) Method and system for managing data storage and access on a client device
US9384201B2 (en) Method of managing data of file system using database management system
US7366836B1 (en) Software system for providing storage system functionality
US10503693B1 (en) Method and system for parallel file operation in distributed data storage system with mixed types of storage media
KR20080033264A (ko) 공간을 비워두기 위해 저장 볼륨 상의 파일로부터 대안의장소로의 데이터 이동
US20070174360A1 (en) Storage system embedding database
US20070233972A1 (en) Methods and apparatus for transferring content to multiple destinations
US8909875B1 (en) Methods and apparatus for storing a new version of an object on a content addressable storage system
EP3436973A1 (en) File system support for file-level ghosting
WO2002084482A1 (en) System and method for using memory mapping to scan a master file table
US7526553B1 (en) Configuring a cache in a computer system employing object addressable storage
US20100228787A1 (en) Online data volume deletion