(57)【特許請求の範囲】
【請求項１】
データを記憶するためのコンピュータ実装方法であって、
オブジェクトベースデータ記憶サービスおよびブロックデータ記憶サービスの両方を実行するコンピューティングリソースプロバイダによってホストされ、実行可能命令を実行する１つ以上のコンピュータシステムの制御下で、
第１の通信プロトコルに従って構成された書き込みコマンドを受信することであって、前記書き込みコマンドは、データブロックの識別子を指定し、かつ前記コンピューティングリソースプロバイダの顧客によって遠隔的に生成され、前記書き込みコマンドは、コンピューティングリソースプロバイダの顧客のデータ記憶システムへ伝送されるコマンドのレプリケーションである、ことと、
ウェブサービスアプリケーションプログラミングインターフェース呼出しをウェブサービスに送信して、前記ウェブサービスを介してアクセス可能なキーバリューストア内のデータオブジェクトの一部として前記書き込みコマンドによって書き込まれるデータを記憶させることであって、前記データオブジェクトは、前記データオブジェクトと関連付けられたキーを使用して前記キーバリューストアから読み出し可能であり、前記データオブジェクトの一部として前記書き込みコマンドによって書き込まれるデータを記憶させることは、前記データオブジェクト、前記キー、および前記データブロックの前記識別子を関連付けて一緒に格納することを含む、ことと
を備えるコンピュータ実装方法。
【請求項２】
前記コマンドが、スモールコンピュータシステムインターフェースコマンドであり、前記第１の通信プロトコルが、スモールコンピュータシステムインターフェースプロトコルである、請求項１に記載のコンピュータ実装方法。
【請求項３】
ストレージエリアネットワークは、前記データ記憶システムの一種である、請求項１または２に記載のコンピュータ実装方法。
【請求項４】
前記データブロックの前記識別子を指定する読み取りコマンドを受信することと、
前記キーを決定するために前記識別子を使用することと、
前記データオブジェクトを読み出すために前記キーを使用することと、
前記読み出されたデータオブジェクトから前記書き込みコマンドによって書き込まれた前記データを抽出することと、
前記読み取りコマンドに応答して、前記抽出されたデータを提供することと、をさらに含む、請求項１〜３のいずれか１項に記載のコンピュータ実装方法。
【請求項５】
前記データオブジェクトが、他のデータブロックのデータを含む、請求項１〜４のいずれか１項に記載の前記コンピュータ実装方法。
【請求項６】
オブジェクトベースデータ記憶サービスおよびブロックデータ記憶サービスの両方を実行するコンピューティングリソースプロバイダによってホストされるシステムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行されると、少なくとも、
前記ブロックデータ記憶サービスに関連付けられるブロックレベルデータ記憶インターフェースを提供することと、
前記ブロックレベルデータ記憶インターフェースに対して、ブロックレベルコマンドを受信することであって、前記ブロックレベルコマンドは、データブロックアドレスを指定し、かつ前記コンピューティングリソースプロバイダの顧客によって遠隔的に生成され、前記ブロックレベルコマンドは、コンピューティングリソースプロバイダの顧客のデータ記憶システムへ伝送されるコマンドのレプリケーションである、ことと、
前記受信されたブロックレベルコマンドに従って、ウェブサービスアプリケーションプログラミングインターフェース呼出しをウェブサービスに送信して、前記ウェブサービスを介してアクセス可能なキーバリューストア内のデータオブジェクト内にデータブロックを持続的に記憶するために、オブジェクトベースのデータ記憶システムを利用することであって、前記キーバリューストアから検索可能なそれぞれのデータは、前記データオブジェクトに関連付けられるキーを使用し、前記データオブジェクト内にデータブロックを持続的に記憶することは、前記データブロック、前記キー、およびデータブロックアドレスを関連付けて一緒に格納することを含み、前記オブジェクトベースデータ記憶サービスは、前記オブジェクトベースのデータ記憶システムに基づく、ことと、
によって、前記システムにブロックレベル記憶デバイスを模倣させる命令を含むメモリと、を備えたシステム。
【請求項７】
前記オブジェクトベースのデータ記憶システムが、データオブジェクトをそれぞれのキーと関連付けるキーバリューストアである、請求項６に記載のシステム。
【請求項８】
前記ブロックレベルコマンドが、スモールコンピュータシステムインターフェースコマンドである、請求項６または７に記載のシステム。
【請求項９】
データオブジェクト内にデータブロックを持続的に記憶することが、前記データオブジェクトの少なくともサブセットの各データオブジェクトに対して、前記データオブジェクト内に複数のデータブロックを記憶することを含む、請求項６〜８のいずれか１項に記載のシステム。
【請求項１０】
前記命令がさらに、前記システムに、複数の顧客のためのブロックレベル記憶デバイスを模倣させる、請求項６〜９のいずれか１項に記載のシステム。
【請求項１１】
前記命令がさらに、前記システムに、データブロックを検索するためにデータオブジェクトを指定するウェブサービスアプリケーションプログラミングインターフェース呼出しを提出するのに使用可能な情報を維持させる、請求項６〜１０のいずれか１項に記載のシステム。
【請求項１２】
前記命令がさらに、前記システムに、
データブロックを指定する読み取りコマンドを受信させ、かつ
前記読み取りコマンドに応答して、前記オブジェクトベースのデータ記憶システム内に持続的に記憶されたデータオブジェクトから前記データブロックを取得することによって、前記データブロックを提供させる、請求項６〜１１のいずれか１項に記載のシステム。
【請求項１３】
前記命令がさらに、前記システムに、
前記データブロックが、スモールコンピュータシステムインターフェースプロトコルによってアドレス指定可能である論理ユニットであり、
前記コマンドが、前記システムが複数の論理ユニットの中から前記論理ユニットを区別することを可能にする情報とともに受信されることを行わせる、請求項１２に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連出願の相互参照）
本出願は、２０１３年３月２０日提出の米国仮特許出願第６１／８０３，７６４号の利権を主張する、２０１３年４月３日提出の米国特許出願第１３／８５６，２７９号の優先権を主張し、これらの内容は、参照により、それらの全体を本明細書に組み入れる。
【０００２】
データ記憶システムは、それらを使用する組織の需要に対応するために、革新してきたとともに、革新し続けている。多数の組織は、例えば、特に、コンピューティング環境の性能、冗長性、柔軟性、及び簡潔性の目的のために、ストレージエリアネットワーク（ＳＡＮ）を利用する。それらの多くの利点にも関わらず、最新のデータ記憶システムは、組織に多数の課題を提示し得る。例えば、データ記憶システムはしばしば、高性能を目的として構成された構成要素を含み、そのような性能はしばしば、代償を伴う。このため、データ記憶システムはしばしば、相当な資本投資を必要とする。加えて、多数のデータ記憶システムは、独自のプロトコルに従って動作する特殊な機器を利用する。あるデータ記憶システムから別のデータ記憶システムへデータを移動することは、重大な課題を提起する可能性があり、しばしば、そのような独自のプロトコルを使用して通信することが可能な高価な機器の使用を必要とする。この結果、多様なデータ記憶システムを使用する組織は、さらに追加の資本投資が必要とされる状況に陥る恐れがある。
【図面の簡単な説明】
【０００３】
本開示に従う様々な実施形態が、以下の図面を参照して説明される。
【０００４】
【図１】多様な実施形態を実践することができる環境の説明例を示す。
【図２】多様な実施形態を実践することができる環境の説明例を示す。
【図３】少なくとも１つの実施形態に従うＳＣＳＩサービスの説明例を示す。
【図４】少なくとも１つの実施形態に従う、ＳＣＳＩサービスを提供するための工程の説明例を示す。
【図５】少なくとも１つの実施形態に従う、ＳＣＳＩサービスへデータをレプリケートするための工程の説明例を示す。
【図６】少なくとも１つの実施形態に従う、データ操作を実施するコマンドを処理するための工程の説明例を示す。
【図７】少なくとも１つの実施形態に従う、書き込みコマンドを処理するためにバッファを使用するための工程の説明例を示す。
【図８】少なくとも１つの実施形態に従う、データオブジェクトの構成を示す説明図を示す。
【図９】少なくとも１つの実施形態に従う、ＳＣＳＩサービスを使用して記憶されたデータからデータ容量を生成するための工程の説明例を示す。
【図１０】本開示の多様な実施形態を実装することができる環境を示す。
【発明を実施するための形態】
【０００５】
以下の説明において、多様な実施形態を説明する。説明を目的として、実施形態の完全な理解を提供するために、特定の構成及び詳細が記載される。しかしながら、当業者には、特定の詳細を用いることなく実施形態を実践できることも明らかであろう。さらに、周知の特徴は、説明される実施形態を曖昧にしないよう、省略または簡素化される場合がある。
【０００６】
データレプリケーションのリモート（ターゲット）を提供するためのサービスを提供することに関する技法が説明され、示唆される。実施形態において、エンティティ（例えば、組織）は、読み取り及び書き込み操作をサポートする仮想デバイスのプロビジョニングをリクエストするために、サービスへの適切に構成されたアプリケーションプログラミングインターフェース（ＡＰＩ）呼出しを通じて等、サービスに接触することが可能である。実施形態において、エンティティは、サービスを運用するコンピューティングリソースプロバイダの顧客である。リクエストの受信後、サービスは、リクエストされたデバイスをプロビジョニングし、デバイスの識別子を提供することができる。デバイスは、例えば、ＳＣＳＩ−３等、スモールコンピュータシステムインターフェース（ＳＣＳＩ）プロトコルに従って動作するように構成された仮想データ記憶装置であってもよい。デバイスの識別子は、エンティティのためのデバイスを固有に識別する論理ユニット番号（ＬＵＮ）であってもよい。以下に検討するように、エンティティは、データを適切に持続させるために、プロビジョニングされた仮想デバイスへコマンド（例えば、ＳＣＳＩコマンド）をレプリケートすることができる。
【０００７】
実施形態において、エンティティは、ストレージエリアネットワーク（ＳＡＮ）等、データ記憶システムを使用する。データ記憶システムを利用するエンティティのホスト（例えば、サーバまたは他のコンピューティングデバイス）は、データ記憶システムにそれぞれの操作を実施させるために、データ記憶システムにコマンドを発行することが可能である。書き込み操作等の所定の操作において、対応するコマンドは、データ記憶システム、及びプロビジョニングされたデバイスに対応する遠隔エンドポイントの両方へ伝送される。例えば、書き込みコマンドがデータ記憶システムへ発行された場合、書き込みコマンドが、データ記憶システムで、及び仮想デバイスのために遠隔的に、の両方で実行されるように、同コマンドは、デバイスをプロビジョニングしたサービスへ伝送される。
【０００８】
いくつかの実施例において、ホストは、ＳＣＳＩ−３等、非独自のプロトコルに従ってデータ記憶システムと通信する。非独自プロトコルのコマンドは、多様な媒体を介するコマンドの運搬を可能にするために埋め込まれてもよい。例えば、ホストは、インターネットプロトコルスモールコンピュータシステムインターフェース（ｉＳＣＳＩ）プロトコル、またはファイバチャネルプロトコル（ＦＣＰ）を介してＳＣＳＩを使用してデータ記憶システムと通信してもよい。所定の種類のコマンドにおいて、非独自プロトコルが使用されて、上記のようにインターネット等のネットワークを介して遠隔エンドポイントへコマンドを送信することによって、コマンドをレプリケートする。非独自プロトコルのコマンドは、ネットワークを介したそれらの転送を可能にするために、別のプロトコルを使用してカプセル化されてもよい。
【０００９】
上記のように、遠隔エンドポイントは、非独自プロトコルのレプリケートされたコマンドを受信するサービスのインターフェースに対応し、適切にデータを持続する。例えば、サービスは、ＳＡＮに発行された同じＳＣＳＩコマンドを受信することができる。サービスは、コマンドに従ってデータを持続することができ、それによって、ＳＡＮに書き込まれたデータのレプリカを作成する。いくつかの実施例において、サービスは、プロビジョニングされたデバイスのためにデータを持続的かつ耐久的に持続するために、データ記憶サービスと相互作用する。他の例において、サービスは、その独自のデータストア（例えば、データがデータのキーを使用してアクセス可能であるキーバリューストア）を維持する。
【００１０】
多様な実施形態において、コマンドが送信される（かつサービスにレプリケートされる）データ記憶システムは、ブロックレベルで動作するブロックデータ記憶システムであり、５１２バイト等、既定サイズの均一のデータブロックを利用する。データ記憶システムに発行されたコマンドは、コマンドが適用する１つ以上のブロックを指定することによって等、ブロックレベルで構成されてもよい。レプリケートされたコマンドと関係するデータを持続するために使用されるデータ記憶サービスは、異なる様式で動作することができる。例えば、データ記憶サービスは、オブジェクトベースであってもよく、必ずしも均一サイズではないデータオブジェクトの記憶を可能にする。オブジェクトベースのデータ記憶システムは、基底のブロックデータ記憶デバイスの抽象化として、データオブジェクトを記憶することができる。いくつかの例において、データ記憶サービスは、各データオブジェクトがデータ記憶システム内のデータオブジェクトを検索するために使用される対応キーを有する、キーバリューストアとして動作する。レプリケートされたコマンドに対応するデータは、データ記憶サービスを使用してオブジェクトレベルで記憶されてもよい。ブロックレベルでデータ記憶システムに発行された書き込みコマンドは、オブジェクトレベルでデータ記憶サービスに発行されたコマンドに変換されてもよい。例えば、ＳＣＳＩコマンドは、データ記憶サービスへのＡＰＩ呼出しを適切に構成するように使用されてもよい。いくつかの実施形態において、コマンドの変換は非同期である。例えば、書き込みコマンドは、バッファに書き込まれてもよい（すなわち、書き込みコマンドの実行の結果として記憶されるデータは、バッファに記憶されてもよい）。バッファのデータは、例えば、バッファの有効期限が失効、またはバッファのデータ量が、既定であってもよい閾値に到達すると、単一のデータオブジェクトに集められてもよい。
【００１１】
この様式において、ＳＡＮ等のデータ記憶システムのデータは、相当な追加の資本投資の必要性なく、耐久的かつ持続的にレプリケートすることができる。加えて、本明細書に説明かつ示唆される技法は、追加の技術的利点を促進する。例えば、いくつかの実施形態において、コマンドがレプリケートされるサービスは、必ずしも、単一の場所でホストされていない、複数のデバイスからのＳＣＳＩコマンドを処理することが可能であるからである。一実施例において、サービスは、１つのデバイスがサービスによって提供された仮想デバイスへ書き込むことができ、かつ複数のデバイスが仮想デバイスからデータを読み取ることができるモデルをサポートするために使用される。別の実施例として、サービスによって持続されたデータは、他のコンピュータシステムによる使用のための追加のデータ記憶容量をプロビジョニングするために使用することができる。いくつかの実施例において、コンピューティングリソースプロバイダは、仮想コンピュータシステムサービスの仮想コンピュータシステムへ論理的にマウントすることができる仮想ブロック記憶デバイスをプロビジョニングすることができる。追加の使用もまた、本明細書に説明される多様な技法によって可能になる。
【００１２】
図１は、多様な実施形態を実践することができる環境１００の説明例を示す。環境１００において、コンピューティングリソースプロバイダ１０２は、多様なコンピューティングリソースサービスを、コンピューティングリソースプロバイダの顧客へ提供する。
コンピューティングリソースプロバイダ１０２は、１つ以上の顧客に代わって多様なコンピューティングリソースをホストする組織であってもよい。例えば、コンピューティングリソースプロバイダは、ハードウェアサーバ、データ記憶装置、ネットワークデバイス、本明細書に検討される他のデバイス、及びサーバラック、ネットワーク接続ケーブル等の他の機器等、多様なコンピューティングハードウェアリソースをホストするために使用される１つ以上の設備を運用することができる。コンピューティングリソースハードウェアは、１つ以上のサービスを運用するために、そのコンピューティングハードウェアリソースを利用することができる。そのようなサービスは、コンピューティングリソースプロバイダの顧客が物理的な機器に投資する必要性を削減または排除しながらも、顧客が、顧客の事業をサポートするためにコンピューティングリソースを遠隔的に管理することを可能にするサービスを含み得る。例示的なサービスは、多様なデータ記憶サービス（オブジェクトベースのデータ記憶サービス、アーカイブデータ記憶サービス、データベースサービス等）、プログラム実行サービス、及び他のサービスを含むが、これらに限定されない。サービスは、ウェブサイトの運用、組織をサポートするエンタープライズシステムの運用、分散コンピュータの使用及び／または他の活動等、広範な多様な活動をサポートするために顧客によって使用されてもよい。
【００１３】
したがって、図１に示されるように、環境１００は顧客１０４を含む。コンピューティングリソースプロバイダ１０２の顧客１０４は、コンピューティングリソースプロバイダ１０２によって提供された多様なサービスを利用することができる。したがって、顧客１０４は、コンピューティングリソースプロバイダによってホストされた多様なコンピューティングリソースを有することができる。図１に示されるように、顧客１０４は、コンピューティングリソースプロバイダ１０２によってホストされたプロバイダによってホストされた顧客リソース１０６を有する。プロバイダによってホストされた顧客リソース１０６は、必ずしもではないが、１つ以上の仮想コンピュータシステム、１つ以上のデータ記憶装置、１つ以上のネットワーク機器、及び／または他のコンピューティングリソースを含むことができる。実施形態において、コンピューティングリソースプロバイダ１０２は、ＳＣＳＩサービス１０８を提供する。
【００１４】
ＳＣＳＩサービス１０８は、コンピューティングリソースプロバイダの顧客による使用のためのＳＣＳＩエンドポイントを提供するように集合的に構成された１つ以上のコンピューティングリソースを含むことができ、ＳＣＳＩエンドポイントは、ＳＣＳＩコマンドが伝送され、それに応じて処理されてもよい論理デバイスである。このため、例えば、顧客１０４は、コンピューティングリソースプロバイダ１０２によってホストされたＳＣＳＩエンドポイントに関する多様な操作を実施するためにＳＣＳＩサービス１０８を利用することができる。顧客は、いくつかの実施例において、ＳＣＳＩプロトコルを利用する際にＳＣＳＩサービス１０８へコマンドを発行することができ、コマンドは、読み取りコマンド、書き込みコマンド、及び／または他のコマンド等のコマンドを含むことができる。
【００１５】
顧客１０４からコンピューティングリソースプロバイダ１０２へ発行されたコマンドは、顧客１０４がコンピューティングリソースプロバイダ１０２と通信するプロトコルを利用してカプセル化することができる。例えば、ＳＣＳＩコマンドは、ｉＳＣＳＩプロトコルを利用して、顧客１０４から、コンピューティングリソースプロバイダ１０２のＳＣＳＩサービス１０８へ発行されてもよい。本開示の多様な実施形態に従い、顧客１０４は、１つ以上のデバイスを通じて、コンピューティングリソースプロバイダ１０２が、論理ユニット番号（ＬＵＮ）によって識別された論理ユニットをプロバイダによってホストされた顧客リソース１０６へ追加することをリクエストするために、ＳＣＳＩサービス１０８と相互作用することが可能である。論理ユニットは、デバイス（例えば、仮想デバイス）、すなわち、ＳＣＳＩプロトコルまたはＳＣＳＩプロトコルをカプセル化する別のプロトコルによってアドレスが指定されるデバイスであってもよい。「論理ユニット」及び「ＬＵＮ」という用語は同じ意味で使用され、それらの意味は文脈から明確であることに注意されたい。
【００１６】
顧客１０４は、リクエストをＳＣＳＩサービス１０８へ伝送することができ、ＳＣＳＩサービス１０８は、ＬＵＮ１１０をプロバイダによってホストされた顧客リソース１０６へ追加させるように構成されてもよい。リクエストは、ウェブサービス呼出し等、適切に構成されたＡＰＩ呼出しの形式で提出されてもよい。コンピューティングリソースプロバイダ１０２は、ＬＵＮに関する情報（すなわち、ＬＵＮによって識別された論理ユニットに関する情報）を用いて、顧客１０４からのＬＵＮに対するリクエストに応答することができる。論理ユニットに関する情報は、例えば、顧客がＬＵＮに関連して遂行されるＳＣＳＩコマンドを発行することを可能にするＬＵＮを含むことができる。顧客からのＳＣＳＩコマンドは、例えば、顧客のためにプロビジョニングされた多数のＬＵＮのうちの１つから選択すること等によって、ＳＣＳＩサービス１０８がコマンドを適切に実行することを可能にするＬＵＮを指定することができる。
【００１７】
図２は、本開示の多様な実施形態を実践することができる環境２００の説明例を示す。図２に示された環境２００は、図１を参照して上述したような構成要素を含むことができる。例えば、図２の環境２００は、コンピューティングリソースプロバイダ２０２と、顧客２０４とを含む。コンピューティングリソースプロバイダ２０２及び顧客２０４は、図１を参照して上述したように構成されてもよい。図２に示されるように、顧客２０４は、インターネット２０６等の１つ以上の通信ネットワークを通じて、コンピューティングリソースプロバイダ２０２と通信することができる。顧客２０４からコンピューティングリソースプロバイダ２０２への一部の通信は、コンピューティングリソースプロバイダ２０２が、本明細書に説明される多様な技法またはそれらの変形に従って運用させることができる。
【００１８】
上記のように、コンピューティングリソースプロバイダ２０２は、その顧客に多様なコンピューティングリソースサービスを提供することができる。例えば、特定の図示例において、コンピューティングリソースプロバイダ２０２は、少なくとも４つのサービスを提供する。コンピューティングリソースプロバイダによって提供されるサービスは、この例において、オブジェクトベースのデータ記憶サービス２０８と、ブロックデータ記憶サービス２１０と、ＳＣＳＩサービス２１２と、仮想コンピュータシステムサービス２１４とを含むが、本開示の全ての実施形態が、全てのそのようなサービスを含むことはなく、いくつかの実施形態において、追加のサービスが、本明細書に明示的に記載されるサービスに加えて、またはその代替として提供されてもよい。
【００１９】
オブジェクトベースのデータ記憶サービス２０８は、実施形態において、顧客のためにデータを記憶するように集合的に動作するコンピューティングリソースの集合を含む。オブジェクトベースのデータ記憶サービス２０８によって記憶されるデータは、データオブジェクトに体系化されてもよい。データオブジェクトは、おそらく、サイズに関する所定の制約を除き、任意のサイズを有することができる。このため、データ記憶サービスは、異なるサイズの無数のデータオブジェクトを記憶することができる。オブジェクトベースのデータ記憶サービスは、データオブジェクトをデータオブジェクトの識別子と関連付けるキーバリューストアであってもよく、データオブジェクトの識別子は、顧客２０４によって、オブジェクトベースのデータ記憶サービス２０８によって記憶されたデータオブジェクトを読み出す、またはデータオブジェクトに関する他の操作を実施するために使用されてもよい。データ記憶サービスへのアクセスは、適切に構成されたＡＰＩ呼出しを通じてであってもよい。さらに、いくつかの実施形態において、データ記憶サービスによって記憶されたデータオブジェクトは、データオブジェクト及び／またはオブジェクトの論理データコンテナのキーを符号化することができる一意のＵＲＬを使用してアドレス指定可能である。
【００２０】
実施形態において、ブロックデータ記憶サービス２１０は、仮想コンピュータシステムサービス２１４によって提供される仮想コンピュータシステムとともに使用するためのブロックレベル記憶容量（たとえば、仮想ブロック記憶デバイス）を提供する。ブロックデータ記憶サービス２１０は、例えば、仮想コンピュータシステムのためにデータを持続的に記憶するために仮想ブロックデバイスをプロビジョニングするために使用されてもよい。仮想ブロックデバイスは、仮想コンピュータシステムが、仮想ブロックデバイスがあたかも（例えば、シリアルＡＴＡ（ＳＡＴＡ）インターフェースを通じて）物理的に接続されているように、仮想ブロックデバイスと相互作用することを可能にするために、仮想コンピュータシステムに論理的にマウントすることができる。ブロックデータ記憶サービス２１０は、多様な理由のために、オブジェクトベースのデータ記憶サービスと相互作用することができる。例えば、ブロックデータ記憶サービス２１０によって提供される、対応時点でのブロックデバイスを表す情報であり得る、ブロックデバイスのスナップショットは、オブジェクトベースのデータ記憶サービス内のデータオブジェクトとして記憶されてもよい。この様式において、仮想ブロックデバイス内に記憶されたデータは、対応する持続的かつ永久的に記憶されたバックアップを有することができる。
【００２１】
ＳＣＳＩサービス２１２は、実施形態において、論理ユニットをプロビジョニングし、かつプロビジョニングされた論理ユニットと関係するＳＣＳＩコマンドを処理するように集合的に構成されたコンピューティングリソースの集合を含むサービスである。実施形態において、ＳＣＳＩサービス２１２は、顧客２０４が、顧客２０４のためにプロビジョニングされたＬＵＮのＳＣＳＩコマンドを提出することを可能にする、顧客２０４へ露出されたインターフェースと共に構成される。ＳＣＳＩコマンドは、顧客２０４とＳＣＳＩサービス２０８との間の通信が行われる様式に従って、別のプロトコルでカプセル化することができる。図２の特定の図示例において、顧客２０４からのＳＣＳＩコマンドは、インターネット２０６を介して、顧客２０４によってＳＣＳＩサービス２１２に提供されてもよい。したがって、ＳＣＳＩコマンドは、ｉＳＣＳＩプロトコルを使用してカプセル化されてもよい。ＳＣＳＩサービスはまた、受信されたＳＣＳＩコマンドを処理し、かつ受信されたコマンドに従って永久的にデータを記憶させるように構成されてもよい。例えば、ＳＣＳＩコマンドが書き込みコマンドである場合、ＳＣＳＩサービスは、コマンドによって書き込まれるように命令されたデータを（それ自体、または別のデータ記憶サービスを使用するかのいずれかによって）持続するように構成される。
【００２２】
仮想コンピュータシステムサービス２１４は、実施形態において、コンピューティングリソースプロバイダ２０２の顧客のために、仮想コンピュータシステムをホストするように集合的に構成されたコンピューティングリソースの集合である。コンピューティングリソースプロバイダ２０２の顧客は、コンピューティングリソースプロバイダ２０２によって運用される物理的コンピューティングデバイス上でホストされる仮想コンピュータシステムをプロビジョニングかつ運用するために、仮想コンピュータシステムのサービスと相互作用することができる。仮想コンピュータシステムは、ウェブサイトをサポートしているサーバとして運用するため等、多様な目的のために使用することができる。以下にさらに詳細を検討するように、顧客２０４のＬＵＮに対応するデータは、仮想コンピュータシステムサービス２１４によって提供された仮想コンピュータシステムへ論理的にマウントすることができるブロックデータ記憶サービス２１０を使用して、記憶容量をプロビジョニングするために使用されてもよい。この様式において、仮想コンピュータシステムサービス２１４を使用してプロビジョニングされた仮想コンピュータシステムは、ブロックデバイスがあたかも仮想コンピュータシステム自体の構成要素であるかのように、プロビジョニングされたブロックデバイスを利用することが可能である。
【００２３】
顧客２０４は、実施形態において、その制御下に多様なコンピューティングリソースを有することができ、顧客２０４のコンピューティングリソースのいくつかまたは全ては、顧客によって、及び／または顧客２０４の代わりの第三者によってホストされてもよい。図２に示された例において、顧客２０４は、ストレージエリアネットワーク（ＳＡＮ）２１６を含む。ＳＡＮ２１６は、ホストの立場からは、１つ以上のブロック記憶デバイスが、あたかもホストにローカルに接続されているように動作するように、ホストにアクセス可能であってもよい、集約されたブロックレベルデータ記憶へのアクセスを提供するように集合的に構成されたコンピューティングリソースの集合を含むことができる。ＳＡＮ２１６は、例えば、複数の論理ユニットを実装することができる。ホストは、例えば、（例えば、論理ユニットのＬＵＮによって）特定の論理ユニットを指定するＳＣＳＩコマンドを発行することができ、ＳＡＮは、コマンドを遂行するために適切であるＳＡＮの物理的データ記憶デバイスへコマンドを送る。ＳＡＮは、多様なデータ記憶技法を利用する多様な構成要素を含むことができる。例えば、ＳＡＮは、データ耐久性の目的のためにハードウェア独立ディスク冗長アレイ（ＲＡＩＤ）のコントローラを含むことができる。
【００２４】
実施形態において、ＳＡＮ２１６は、ディスクアレイ２１８及びスイッチ２２０等の多様な構成要素を含む。ディスクアレイ２１８は、ホストが、ディスクアレイ２１８のディスクによって集合的に記憶されたデータに関する多様な操作を実施することを可能にするように、スイッチ２２０によって一緒にネットワーク接続されているハードディスクまたはソリッドステート記憶デバイス等のデータ記憶デバイスの集合を含むことができる。「ディスクアレイ」２１８の用語は、説明の目的のために使用されるが、本開示の多様な実施形態は、回転磁気媒体を利用する記憶デバイスの集合に限定されないことに注意されたい。例えば、ソリッドステートドライブ（ＳＳＤ）及び／または磁気テープもまた、多様な実施形態において使用されてもよい。実施形態において、スイッチ２２０は、ファイバチャネルプロトコル（ＦＣＰ）を介してＳＣＳＩコマンドを送るように構成されたマルチレイヤディレクタスイッチ（ＭＤＳまたはファイバチャネルスイッチ）である。
【００２５】
図２の例において、注記のように、顧客は、複数のホスト２２２を含み、ＳＡＮルータ２２４（または、一般にＩＰ等の１つのプロトコルと、ＳＣＳＩ等の記憶のために使用される通信プロトコルとの間の通信を変換する任意のストレージルータ）を通じてＳＡＮと通信する。ホストは、ＳＡＮ２１６のデータ記憶を利用するように構成される、物理的または仮想であり得る、サーバコンピュータシステム等のコンピュータシステムであってもよい。ホスト２２２は、例えば、ＳＡＮによって実装された容量から起動することができる。ホスト２２２は、１つ以上のデータ操作（作成、読み取り、更新、及び／または消去操作等）を実施する目的のために、ＳＡＮ２１６に対してＳＣＳＩコマンドを発行することができる。ホスト２２２はまた、確認応答及びエラーメッセージ等、スイッチ２２０及びＳＡＮルータ２２４を通じて、ＳＡＮからＳＣＳＩ通信を受信することもできる。
【００２６】
ＳＡＮルータ２２４は、複数のＳＡＮ、または図２に示されるように、１つのＳＡＮ及び１つの遠隔エンドポイントを含む等の複数のエンドポイントへの通信を送るように、ハードウェア及び／またはソフトウェアによって構成されたコンピューティングデバイスであってもよい。例えば、ＳＡＮ２１６にアドレス指定されたＳＣＳＩコマンドを含む通信は、ＳＡＮルータ２２４を通じてＳＡＮ２１６へ提供されてもよい。ＳＡＮルータ２２４は、ＳＣＳＩコマンドをスイッチ２２０へ転送することができ、スイッチ２２０は、コマンドをディスクアレイ２１８の適切なディスクへ提供する。以下にさらに詳細を検討するように、ＳＡＮルータ２２４はまた、ＳＣＳＩサービス２１２の顧客２０４による利用を可能にするために、通信をＳＣＳＩサービス２１２に提供することもできる。例えば、以下にさらに詳細を検討するように、ＳＡＮルータ２２４に発行された書き込みコマンドは、ＳＡＮルータ２２４によって、ディスクアレイ２１８の適切な記憶デバイスへ転送するためにスイッチ２２０へ、及びＳＣＳＩサービス２１２への両方に提供されてもよい。ＳＡＮルータは、コマンドが、ＳＡＮ２１６を介して、及びインターネット２０６等の別のネットワークを介しての両方で、ＳＣＳＩサービス２１２に提供することができるように、適切なプロトコルにＳＣＳＩコマンドをカプセル化する等、追加の操作を実施するように構成されてもよいことに注意されたい。さらに、ＳＡＮルータ２２４は、広域ネットワーク（ＷＡＮ）加速化に関与する操作を実施すること等によって、多様な最適化動作に参加するように構成されてもよい。
【００２７】
本明細書に説明される全ての環境と同様に、変形は、本開示の範囲内であると考えられる。例えば、図２は、１つ以上のホストが、ＳＣＳＩコマンドを適切に実行するＳＡＮへ、ＳＣＳＩコマンドを発行する環境を示す。しかしながら、本明細書に説明される技法は、多様な状況において適用可能であることに注意されたい。例えば、多様な実施形態において、ＳＣＳＩサービスは、ｉＳＣＳＩコマンドが受信される環境についてわからない。概して、ＳＣＳＩサービスは、コマンドを発行するように構成された任意のデバイスから、ｉＳＣＳＩコマンドを受信することができる。例えば、ｉＳＣＳＩコマンドは、サーバコンピュータシステム、デスクトップコンピュータシステム、ノートブック（ラップトップ）コンピュータシステム、タブレットコンピュータシステム、移動通信デバイス（例えば、スマートフォン）及び／またはネットワークを介してＳＣＳＩサービスに通信する能力を備える他のデバイス等、多種のデバイスによって発行されてもよい。以下に記載するように、デバイスは、ｉＳＣＳＩを使用してコマンドをカプセル化すること等によって、ローカル記憶デバイス（例えば、ハードドライブ）に送信されたコマンドを傍受し、コマンドをＳＣＳＩサービスにレプリケートするプログラミングモジュールを実行することができる。さらに、ＳＣＳＩサービスに送信されたコマンドは必ずしもレプリケートされない。ＳＣＳＩサービスはＬＵＮをプロビジョニングするので、ＳＣＳＩサービスは、いくつかの実施形態において、遠隔データ記憶デバイスとして使用することができる。デバイスは、例えば、ローカル記憶デバイスへコマンドを発行することなく、ｉＳＣＳＩコマンドをＳＣＳＩサービスへ伝送することができる。また、ＳＣＳＩ及び関係するプロトコル（例えば、ｉＳＣＳＩ）は、説明の目的のために本開示全体で広範囲に使用されるが、本開示の範囲は必ずしも、本明細書に明示的に記載されるプロトコルに限定されないことにも注意されたい。
【００２８】
上記のように、本開示に従うＳＣＳＩサービスは、レプリケートされたＳＣＳＩコマンドを遠隔的に実施する能力を提供する。したがって、ＳＣＳＩサービスは、ＳＣＳＩコマンドの受信及び受信されたＳＣＳＩコマンドの実行を可能にするために適切なコンピューティングリソースを含むことができる。図３は、実施形態に従うＳＣＳＩサービス３００等を表す説明図例を示す。ＳＣＳＩサービス３００は、例えば、図１または２を参照して上述したＳＣＳＩサービスであってもよい。上記のように、ＳＣＳＩサービスは、本明細書に説明したような多様な方式で動作するように集合的に構成されたコンピュータリソースの集合を含むことができる。例えば、実施形態において、ＳＣＳＩサービス３００は、ＳＣＳＩサービスの操作を可能にする複数のサブシステムを含む。例えば、ＳＣＳＩサービス３００は、顧客インターフェース３０２を含む。顧客インターフェース３０２は、ＳＣＳＩサービス３００のサブシステムによって実装することができる。顧客インターフェース３０２は、顧客が、ＳＣＳＩサービス３００を利用するために、ＳＣＳＩサービスと通信することができる機構を提供することができる。実施形態において、顧客インターフェース３０２は、遠隔的に生成されたＡＰＩ呼出しが、ＳＣＳＩサービス３００に提出されることを可能にする。そのようなＡＰＩ呼出しは、例えば、ウェブサービス呼出しであってもよい。したがって、ＳＣＳＩサービス３００は、顧客インターフェース３０２を実装するために使用される１つ以上のウェブサーバを含むことができる。ＡＰＩ呼出しは、例えば、ＳＣＳＩサービス３００をホストしているコンピューティングリソースプロバイダに、ＬＵＮをプロビジョニングする（すなわち、論理ユニットをプロビジョニングする）というリクエスト、ならびに／あるいはＬＵＮのプロビジョニングの解除、ＬＵＮからの記憶容量のプロビジョニング、及び／または他の操作等の他の操作を実施するというリクエストを提出することのために使用することができる。顧客インターフェース３０２はまた、ｉＳＣＳＩ等の適切なプロトコルまたは別の適切なプロトコルにおいてカプセル化されたＳＣＳＩコマンドを受信するように構成することができる。ＳＣＳＩコマンドをカプセル化する通信は、ＳＣＳＩサービス３００が、顧客の識別を識別すること、コマンドが認証済みであることを確実にすること、ならびにどのコマンドが実施されるか及び／またはその他ＳＣＳＩコマンド及び他の通信が正しく実行／遂行されなければならず、遂行されることを確実にするかに関係して顧客の適切なＬＵＮを識別することを可能にする情報を含むことができる。
【００２９】
実施形態において、ＳＣＳＩサービス３００は、リクエストプロセッサ３０４を含む。リクエストプロセッサ３０４は、顧客インターフェース３０２を通じて顧客によって提出されたリクエストを処理するように集合的に構成された１つ以上のコンピューティングデバイスを備えることができる、コンピュータシステムであってもよい。リクエストプロセッサ３０４は、例えば、他のサブシステム（適切に構成されたＡＰＩ呼出し等）への適切な通信を生成し、かつ他のシステムからの応答を処理するように構成されてもよい。いくつかの例において、リクエストプロセッサ３０４は、リクエストされた操作を正しく実施するために、データオブジェクト場所データストアを利用するように構成される。説明例のように、顧客インターフェース３０２が、ＳＣＳＩコマンドを受信して、リクエストで識別された特定のデータブロックに対して書き込み操作を実施する場合、リクエストプロセッサ３０４は、この書き込みによって影響を受けるオブジェクトベースのデータ記憶サービスのデータオブジェクトを識別する、すなわち、特定のデータブロックのデータを含むデータオブジェクトを識別するために、データオブジェクト場所データストア３０６にアクセスすることができる。
【００３０】
リクエストプロセッサは、例えば、特定のブロックを含むデータオブジェクトを識別するために、顧客識別、ＬＵＮ、及び特定のブロックの識別子を使用することができる。データオブジェクト場所データストア３０６は、（例えば、関係データベース表を使用することによって）顧客識別を顧客にプロビジョニングされた任意のＬＵＮと関連付け、かつ顧客にプロビジョニングされた任意のＬＵＮのブロックを、ブロックのデータを記憶するデータオブジェクトと関連付けるように構成することができる。例えば、リクエストプロセッサ３０４は、データオブジェクト場所データストア３０６が、クエリによって指定されたブロックのデータを含むデータオブジェクトのデータオブジェクト場所を識別することを可能にするために十分な情報を指定するデータオブジェクト場所データストア３０６へクエリを発行することができる。リクエストプロセッサ３０４は、該当する場合、複数のデータブロックに影響を与えるＳＣＳＩコマンド等に対して、複数のデータオブジェクトを識別するためにデータオブジェクト場所データストア３０６を利用するように構成することができることに注意されたい。さらに、データオブジェクト場所データストア３０６は、リクエストプロセッサ３０４が、適切なデータオブジェクトを取得することを可能にする情報を提供するように構成することができる。例えば、データオブジェクトがキーバリューストアに記憶される事例において、データオブジェクト場所データストア３０６は、データオブジェクトのキーを提供するように構成することができる。いくつかの実施形態において、キーは、オブジェクトベースのデータ記憶サービスウェブサービスインターフェースを使用して、データオブジェクトを読み出すウェブサービスリクエストにおいて使用することができるユニフォームリソースロケータ（ＵＲＬ）に指定されてもよい。
【００３１】
図３に示されるように、ＳＣＳＩサービス３００は、データ記憶サービスインターフェース３０８を含む。上記のように、多様な実施形態において、データブロックのデータは、それ自体がオブジェクトベースのデータ記憶サービスによって記憶されてもよいデータオブジェクトに記憶され、オブジェクトベースのデータ記憶サービスは、キーバリューストアとして動作することができる。したがって、データ記憶サービスインターフェース３０８は、リクエストプロセッサ３０４から、顧客インターフェース３０２を通じて受信されたＳＣＳＩコマンドによって影響を受けたデータブロックのデータを含むデータオブジェクトに関する操作を実施するコマンドを受信するように構成されてもよい。例えば、データ記憶サービスインターフェース３０８は、オブジェクトベースのデータ記憶サービスから１つ以上のデータオブジェクトを読み出すコマンドを受信するように構成されてもよい。１つ以上のデータオブジェクトの読み出しは、１つ以上のコマンドを生成することと、１つ以上のコマンドをオブジェクトベースのデータ記憶サービスへ伝送することを含むことができる。
【００３２】
したがって、データ記憶サービスインターフェースは、データオブジェクトをデータ記憶サービスに追加する、データ記憶サービスからデータオブジェクトを取得する、データ記憶サービスのデータオブジェクトを更新する、データ記憶サービスからデータオブジェクトを消去する、及び／または他の操作を実施する等、多様な操作を実施する目的のために、適切に構成されたＡＰＩ呼出しをデータ記憶サービスへ伝送するように構成された１つ以上のサーバを含むことができる。そのようなＡＰＩ呼出しは、オブジェクトベースのデータ記憶サービスが遠隔にホストされている場合、インターネット等の１つ以上のネットワークを介して、またはオブジェクトベースのデータ記憶サービスがローカルにホストされている場合はローカルエリアネットワークを介して、伝送することができる。加えて、本開示の多様な実施形態は、オブジェクトベースのデータ記憶サービスとは別に動作するＳＣＳＩサービスに関して検討されるが、ＳＣＳＩサービスは、別のサービスを使用してデータオブジェクトを記憶することに加えて、またはその代わりにそれ自体データオブジェクトを記憶することができることに注意されたい。例えば、いくつかの実施形態において、ＳＣＳＩサービス３００は、ＳＣＳＩサービス３００をサポートする目的のために、ＳＣＳＩサービス３００によって動作されるキーバリューストアを含むことができる。しかしながら、ＳＣＳＩサービスとは別に個別のデータ記憶サービスを使用すると、ＳＣＳＩサービスをサポートするために別のデータ記憶サービスを構築する必要性なく、既存のデータ記憶システムを利用する能力等、無数の技術的利点を提供する。
【００３３】
図４は、実施形態に従うＳＣＳＩサービスを提供するための工程４００の説明例を示す。図４に示される工程４００及びその変形は、上記のＳＣＳＩサービスを提供するシステム等、任意の適切なシステムによって実施することができる。実施形態において、工程４００は、論理ユニットをプロビジョニングするという顧客のリクエストを受信４０２することを含む。論理ユニットをプロビジョニングするというリクエストは、任意の適切な様式で受信されてもよい。例えば、上記のように、ＳＣＳＩサービスを運用するコンピューティングリソースプロバイダは、ウェブサービスリクエストがウェブサービスインターフェースに提出されることを可能にするウェブサービスインターフェースを提供することができる。したがって、論理ユニットをプロビジョニングするというリクエストは、適切に構成されたウェブサービスリクエストまたは他のＡＰＩ呼出しとして受信されてもよい。加えて、リクエストは、多様な目的のために工程４００を実施しているシステムによって要求され、かつ／または使用可能な任意の情報を含むことができる。例示的な情報は、リクエストが認証されているか（例えば、そのような認証を行うためにシステム内で権限を有するエンティティによって認証されている）を決定するためにシステムが使用することができる認証情報、コンピューティングリソースプロバイダの顧客のための顧客識別子であり得る、リクエストを提出したエンティティを識別する情報、論理ユニットのサイズを指定する情報、及び／または他の情報を含む。いくつかの実施形態において、リクエストは、プロビジョニングされた論理ユニットのために使用されるＬＵＮを指定することができるが、工程４００を実施しているシステムは、顧客からの指定なく、それ自体１つを割り当てることができる。
【００３４】
論理ユニットをプロビジョニングするという顧客リクエストの受信４０２後、工程４００は、顧客のために論理ユニットをプロビジョニング４０４することを含むことができる。顧客のために論理ユニットをプロビジョニングすることは、顧客が、プロビジョニングされた論理ユニットに関してＳＣＳＩプロトコルを使用するＳＣＳＩサービスにリクエストを提出することを可能にするために、工程４００を実施しているシステムによってホストされた１つ以上のコンピューティングリソースを構成することを含むことができる。論理ユニットをプロビジョニングすることは、例えば、１つ以上のサブシステムの１つ以上のレコードを更新することを含むことができるので、認証されたＳＣＳＩコマンドがＬＵＮに対して受信されると、コマンドは、ＬＵＮに対して実行することができる。例として、受信されたコマンドを認証するためにデジタル署名を使用する実施形態において、ＬＵＮをプロビジョニングすることは、コマンドの認証を検証するために使用された署名キーによって任意の認証サブシステムを更新することを含むことができる。加えて、データベース内の１つ以上のアカウントは、ＬＵＮのために作成することができるので、例えば、データブロックのデータを符号化するデータオブジェクトを検索するのに使用可能な情報が検索可能である。一般に、論理ユニットをプロビジョニングすることは、認証されたＳＣＳＩコマンドが提出され、提出後に実行されることを可能にする任意の操作（プロビジョニングワークフローの実行によって調整されてもよい）を含むことができる。
【００３５】
ＬＵＮは、シンプロビジョニングされてもよいことに注意されたい。例えば、論理ユニットをプロビジョニングするというリクエストは、いくつかの実施形態において、１テラバイト等、論理ユニットのサイズを指定することができる。論理ユニットにおけるプロビジョニングは必ずしも、指定量の記憶空間、またはそれに関して論理ユニットの任意の記憶空間をプロビジョニングすることを含まない。ＬＵＮ識別子（ＬＵＮ  ＩＤ）は、受信された顧客リクエスト４０２に応答して、顧客に提供４０６されてもよい。ＬＵＮ  ＩＤは、例えば、論理ユニットがプロビジョニングされたという確認応答で提供４０６されてもよい。いくつかの実施形態において、ＬＵＮ  ＩＤは、ＬＵＮである。そのような実施形態において、顧客がリクエストにＬＵＮを指定した場合等、ＬＵＮ  ＩＤは必ずしも顧客に提供されないことに注意されたい。他の実施形態において、ＬＵＮ  ＩＤは、ＬＵＮとは異なり、エンティティであって、そのエンティティに代わって、対応する論理ユニットがプロビジョニングされている、そのエンティティのＬＵＮの間で、及び／またはコンピューティングリソースプロバイダの全ての顧客にプロビジョニングされた全ての論理ユニット等のより大きい集合体の論理ユニットの間で、ＬＵＮを固有に識別する別の識別子であってもよい。
【００３６】
いくつかの実施形態において、例えば、ＬＵＮ  ＩＤは、論理ユニットをプロビジョニングするという顧客リクエストに応答して、同期的に提供４０６される。しかしながら、ＬＵＮ  ＩＤは、非同期的に提供されてもよく、必ずしも受信された顧客リクエストに応答しなくてもよい。ＬＵＮ  ＩＤが顧客に提供４０６された後、工程４００は、提供されたＬＵＮ  ＩＤを有する論理ユニット上で操作を実施するという顧客リクエストを処理することを含むことができる。操作を実施するリクエストは、ＳＣＳＩプロトコルを使用して提供されてもよい。
【００３７】
本明細書に説明される全ての工程と同様に、工程４００の変形は、本開示の範囲内であると考えられる。例えば、上記のように、いくつかの実施形態は、エンティティ（例えば、コンピューティングリソースプロバイダの顧客）が、ＷＡＮ加速化の一部として多様な操作を実施するストレージルータを利用する環境を含む。そのようなストレージルータはしばしば、送信先の別のストレージルータが、ＷＡＮ加速化に追加で参加する場合に、最適に要求または実施し、ストレージルータの製造元に特定であり得る多様な独自のプロトコルを利用する場合がある。したがって、多様な実施形態において、エンティティは、選択のために利用可能である１組の製造元及び／またはモデル番号から、製造元及び／またはモデル番号を選択すること等によって、使用されるストレージルータを（例えば、論理ユニットをプロビジョニングするというリクエストの一部として）指定することが可能である。工程４００を実施しているシステムは、ＬＵＮをプロビジョニングする一部として、指定されたストレージルータをプロビジョニングすることができる。ストレージルータは、多様な方式でプロビジョニングされてもよい。例えば、指定された製造元の物理的経路決定デバイスは、リクエストしているエンティティから通信を受信するように構成されたネットワークに動作可能に接続されてもよい。別の例として、仮想コンピュータシステムまたは他のデバイスは、指定されたストレージルータのプロトコルを使用するようにプロビジョニングされてもよい。独自のプロトコルである場合、そのプロトコルは、ライセンスまたは他の許可の下で使用することができる。
【００３８】
論理ユニットがプロビジョニングされると、本開示の多様な実施形態は、ＳＣＳＩコマンドを遠隔のエンドポイントへレプリケートすることが可能である。図５は、したがって、実施形態に従うＳＣＳＩコマンドを送るための工程の説明例を示す。工程５００は、図２に関して上記に説明したＳＡＮルータ２２４、または、一般的には、ホストからのＳＣＳＩコマンドの通信経路にある任意のデバイスによって等、任意の適切なデバイスによって実施することができる。実施形態において、工程５００は、上記及び／または以下に説明するようなコンピューティングデバイスであってもよい、ホストからのＳＣＳＩ通信を受信５０２することを含む。ＳＣＳＩ通信は、適切なプロトコルを利用してカプセル化されてもよい、ＳＣＳＩコマンドを含むことができる。例えば、コマンドがファイバチャネルを介して受信されると、ＳＣＳＩ通信は、ファイバチャネルプロトコル（ＦＣＰ）を使用してカプセル化されたＳＣＳＩコマンドを含むことができる。別の例として、ＩＰネットワークを介して、ＳＣＳＩ通信は、ＳＣＳＩコマンドをカプセル化するｉＳＣＳＩパケットとして受信されてもよい。
【００３９】
ホストからのＳＣＳＩ通信の受信後、工程５００は、ＳＣＳＩ通信が、ＳＣＳＩ通信で指定された特定のデータブロックに所定のデータを書き込むためのコマンドのような書き込みコマンドに対応するか決定５０４することを含むことができる。ＳＣＳＩ通信が書き込みコマンドに対応するか決定することは、ＳＣＳＩ通信からＳＣＳＩコマンドを抽出することと、通信が複数の利用可能な種類のＳＣＳＩ書き込みコマンドのいずれかに対応するコマンドを含むかを確認することとを含むことができる。ＳＣＳＩ通信が書き込みコマンドを含まないと決定５０４された場合、工程５００は、ＳＣＳＩ通信で指定された送信先への通信を送る５０６に進むことができる。例えば、ＳＣＳＩ通信がｉＳＣＳＩ通信である場合、ｉＳＣＳＩ通信は、ｉＳＣＳＩ通信に指定されたＩＰアドレスへ送られてもよい。
【００４０】
ＳＣＳＩ通信が確かに書き込みコマンドを含むと決定５０４された場合、通信はまた、上記のように、送信先へ送る５０６ことができる。加えて、書き込みコマンドは、ｉＳＣＳＩパケットにカプセル化５０８されてもよい。書き込みをｉＳＣＳＩパケットにカプセル化することは、ｉＳＣＳＩパケットの受信者が書き込みコマンドを処理することを可能にするために適切な情報を有するｉＳＣＳＩパケットを生成することを含むことができる。例えば、図２を参照すると、ｉＳＣＳＩパケットは、書き込みが適用されるＬＵＮのＬＵＮ  ＩＤと、コマンドが認証され、遂行されなければいけないことを決定するために、ｉＳＣＳＩパケットのコンピューティングリソースプロバイダまたは他の受信者によって使用され得るアクセスキー及び秘密アクセスキー等の認証情報とを含むことができる。概して、ｉＳＣＳＩパケットは、ｉＳＣＳＩパケットが送られるＳＣＳＩサービスによってｉＳＣＳＩが適切に処理されるような任意の方式で構成することができる。したがって、書き込みがｉＳＣＳＩパケットにカプセル化されると、工程５００は、図２に関して上記に説明したように、ｉＳＣＳＩパケットをＳＣＳＩサービスへ送る５１０ことを含むことができる。
【００４１】
本明細書に説明される全ての工程と同様に、変形は、本開示の範囲内であると考えられることに注意されたい。例えば、図５は、ＳＡＮと関係して動作するストレージルータによって実施されてもよい工程を示すが、本開示の多様な実施形態は必ずしもストレージルータ及び／またはＳＡＮを利用しない。ＳＣＳＩ通信を発行したホスト（例えば、上記のようなデバイス）上のプログラミングモジュール（例えば、ソフトウェアエージェント）は、例えば、ホストで（すなわち内部的に）ＳＣＳＩ通信を傍受するように構成することができる。ＳＣＳＩ通信を傍受し、ＳＣＳＩ通信が書き込みコマンドを含むと決定すると、プログラミングモジュールは、ｉＳＣＳＩパケットの書き込みコマンドをＳＣＳＩサービスへ伝送することができる。ホストはまた、ＳＣＳＩ通信をＳＡＮ、ネットワークまたはローカル記憶デバイスへ伝送することができ、すなわち、ホストは、書き込みコマンドを検出すると、書き込みコマンドを２つの通信、つまり、１つを一次記憶デバイスへ、もう１つをＳＣＳＩサービスへ伝送することができる。さらに、上記のように、デバイスは必ずしもコマンドを２つ（または以上）の送信先へ送信する必要はない。例えば、いくつかの実施形態において、デバイスは、コマンドをローカル記憶装置、ネットワークストレージデバイス、またはＳＡＮへ送信することなく、一次記憶装置のためにＳＣＳＩサービスを使用することが可能である。
【００４２】
多様な実施形態において、ホストがＳＣＳＩ通信を最初に、２つの通信を送信するストレージルータへ送信するかどうか、またはホストがそれ自体２つの通信を送信するかに関わらず、２つの異なる通信は、異なるプロトコルに従って送信することができる。一例において、例えば、ホストは、ファイバチャネルプロトコルにカプセル化されたＳＣＳＩコマンドを含むＳＣＳＩ通信をＳＡＮへ送信することができ、ｉＳＣＳＩパケットをＳＣＳＩサービスへ送信することができる。しかしながら、ホストまたはストレージルータのいずれかから伝送された２つの通信は、同じプロトコルであってもよいことに注意されたい。例えば、ＳＡＮ及びＳＣＳＩサービス両方がｉＳＣＳＩプロトコルに従う通信を受信した場合、２つの通信は同じプロトコルを利用することができる。
【００４３】
加えて、多様な追加の操作は、図５に示された工程５００に関して実施されてもよい。上記のように、例えば、いくつかのストレージルータは、ＷＡＮ加速化に参加するための多様な操作を実施することができる。したがって、工程５００は、多様な実施形態において、そのような操作を実施することを含むことができる。いくつかの例において、ＳＣＳＩサービスのストレージルータは、工程５００を実施しているデバイスからの圧縮されたネットワークトラフィックの圧縮を解除すること等によって、ＷＡＮ加速化に追加で参加することができる。
【００４４】
ＳＣＳＩコマンドを含む通信がＳＣＳＩサービスへ転送されると、通信は、該当する場合、ＳＣＳＩコマンドが適切に実行されるように処理することができる。図６は、したがって、上記のようなＳＣＳＩサービスを提供するために使用することができる工程６００の説明例を示す。工程６００は、図３を参照して上記に説明されるＳＣＳＩサービスによる等、任意の適切なシステムによって実施することができる。実施形態において、工程６００は、ＬＵＮに関する操作を実施するコマンドを受信すること６０２を含む。コマンドは、例えば、ＳＣＳＩコマンドをカプセル化するｉＳＣＳＩパケットの形式において受信することができる。ＳＣＳＩコマンドは、ＬＵＮ  ＩＤによって、操作が実施される対象となる論理ユニットを識別することができる。コマンドが受信された後、工程６００は、受信されたコマンドの実施によって影響を受ける１つ以上のデータブロックを決定すること６０４を含むことができる。例えば、コマンドが、所定のデータをブロックに書き込むコマンドである場合、論理ブロックアドレス（ＬＢＡ）等のブロックの識別子を決定することができる。影響されるデータブロックを決定することは、受信されたコマンドから、決定されたデータブロックの識別子（例えば、ブロックのＬＢＡ）にアクセスすることによって実施することができる。
【００４５】
コマンドが複数のデータブロックに影響を与え得る場合、例えば、ＬＢＡ及びＬＢＡによって指定されたブロックから開始する隣接するデータブロックの数を決定するためにＳＣＳＩコマンドの転送長を使用することによって、複数のデータブロックが決定されてもよい。１つ以上の影響を受けるデータブロックが決定６０４された場合、工程６００は、１つ以上の影響を受けるデータブロックを含む１つ以上のデータオブジェクトを決定すること６０６を含むことができる。１つ以上のデータオブジェクトを決定すること６０６は、任意の適切な様式で実施されてもよく、それが実施される様式は、多様な実施形態に従って変わることができる。例えば、上記のように、ＳＣＳＩサービスは、ＬＵＮのデータブロックをデータオブジェクトと関連付けるデータベースを維持することができる。データベースは、例えば、データブロックのＬＢＡを、データブロックのデータを記憶するデータオブジェクトにアクセスするためにキーバリューストアにおいて使用可能なキーと関連付けることによって、データブロックを、データブロックのデータが記憶されているデータオブジェクトと関連付けることができる。したがって、１つ以上の適用可能なキーを指定するクエリは、適切なデータオブジェクト（単数または複数）にアクセスするためにデータベースに対して実行することができる。
【００４６】
適切な１つ以上のデータオブジェクトが決定６０６されると、工程６００は、決定された１つ以上のデータオブジェクトにアクセスすること６０８を含むことができる。１つ以上の決定されたデータオブジェクトにアクセスすること６０８は、任意の適切な様式で実施することができる。例えば、実施形態において、データオブジェクトは、キーの値がデータオブジェクトと関連付けられるキーバリューストアに記憶される。データオブジェクトを決定することは、データオブジェクトのキーを決定することを含むことができ、キーは、キーバリューストアからデータオブジェクトを読み出すために使用することができる。加えて、キーバリューストアは、工程６００を実施するサービスに依存しない別のサービスとして動作することができる。したがって、１つ以上の決定されたデータオブジェクトにアクセスすることは、他のサービスからデータオブジェクトを読み出すために、すなわち、データ記憶サービスから１つ以上のデータオブジェクトを読み出すというリクエストを伝送し、データオブジェクトの応答を受信するために、ＡＰＩ呼出しを構成することと、適切に構成されたＡＰＩ呼出しを他のサービスへ伝送することとを含むことができる。
【００４７】
決定された１つ以上のデータオブジェクトがアクセス６０８されたら、リクエストされた操作を実施６１０することができる。リクエストされた動作を実施することは、多様な実施形態に従い異なる場合がある多様な方式で実施され得ることに注意されたい。例えば、リクエストされた操作が書き込み操作である場合、リクエストされた操作を実施することは、書き込み操作によって影響を受けるデータオブジェクトの一部、すなわち、影響を受けるブロックに対応するデータオブジェクトの一部を更新することを含むことができる。リクエストされた操作を実施することはまた、例えば、適切に構成されたＡＰＩ呼出しを介して、更新されたデータオブジェクトを、データオブジェクトを記憶するデータ記憶サービスへ伝送することによって、更新されたデータオブジェクトを記憶することも含むことができる。
【００４８】
書き込み操作は必ずしも、記憶装置からのデータオブジェクトの読み出しを要求しないことに注意されたい。例えば、特定のデータブロックのデータが、ＳＣＳＩコマンドの実行時に再書き込みされる場合、古いデータが別のデータオブジェクトに残ったまま、新しいデータが新しいデータオブジェクトに書き込まれてもよい。他の操作（例えば、書き込み操作）は新しいデータオブジェクトを使用して実施することが可能であるため、所定の操作（例えば、読み取り操作）のみが、データオブジェクトの読み出しを要求してもよい。したがって、リクエストされた操作を実施することはまた、データブロックとデータオブジェクトとの間の関連付けをそれに応じて追跡するために使用されるメタデータを管理することも含むことができる。例えば、受信されたコマンドが特定のデータブロックの書き込みコマンドである場合、データベースはそれに応じて更新することができる。例えば、データブロックのエントリが既にデータベースにある場合、データベースは、データブロックのデータが書き込まれている、または書き込まれる予定であるデータオブジェクトとの関連付けを反映するように更新されてもよい。この様式において、データブロックのデータは、データベースに提供される情報を使用してアクセスすることができる。
【００４９】
上記のように、ＳＣＳＩサービスの操作は、性能を最適化するために操作することができる。例えば、いくつかの実施形態において、キーバリューストアは、書き込まれたデータが存在する各データブロックに対するデータオブジェクトが存在するように利用される。すなわち、容量が１，０００データブロックに書き込まれるデータを有する場合、ＳＣＳＩサービスは、各データブロックに１つ、すなわち１，０００のデータオブジェクトを記憶させることができる。追加のデータブロックが書き込まれるにつれて、追加のデータオブジェクトを作成することができる。しかしながら、いくつかの実施形態において、性能は、書き込みをバッファすることによって、かつ概して、それらの間で変動数のデータブロックに対してデータを有することができるデータオブジェクトを作成することによって、改善することができる。
【００５０】
データオブジェクトは、多様な実施形態に従い、多様な方式で構成することができる。いくつかの例において、例えば、データオブジェクトは、単純に、データブロックの対応するデータから形成されたビットのシークエンスからなる。データオブジェクトはまた、データオブジェクト内のデータブロックのデータの場所を可能にする追加の情報で構成することもできる。図８はそれに従って、多様な実施形態に従うデータオブジェクト８００の説明例を示す。この特定の例において、データオブジェクト８００は、ヘッダー８０２と、本体８０４とを含む。実施形態において、ヘッダー８０２は、本体８０４の１つ以上のブロックに対するデータの場所の特定を可能にする情報であり得るブロック情報を含む。このように、例えば、ＳＣＳＩサービスを使用して読み取り操作を実施するために、ヘッダー８０２内のブロック情報は、どのデータが本体８０４から読み取られるかを決定するために使用される必要がある。ヘッダーは、多様な実施形態に従い多様な方式でこの情報を符号化することができる。例えば、ヘッダーは、論理ブロックアドレスを、本体８０４のどのビットが対応するデータを含むかを識別する情報と関連付ける表を含むことができる。情報は、ビットを直接指定してもよく、またはデータオブジェクト内の特定のビットからのオフセットを指定することによる等、ビットを間接的に指定してもよい。表（または他の機構）内のＬＢＡの位置もまた、対応するデータが本体８０４のどこで見出され得るかを示すことができる。例えば、データブロックは、多様な実施形態において、均一のサイズであるため、ＬＢＡのシークエンス内の３番目の位置のＬＢＡは、対応するデータの場所が、２つのデータブロックに対応するビット数の後に発生する位置で見出されることを示すことができる。
【００５１】
図７を参照すると、データを書き込みバッファに追加７０４した後、工程７００は、書き込みバッファがいっぱいであるかを決定７０６することを含むことができる。書き込みバッファがいっぱいであるかを決定７０６することは、バッファ内のデータ量をバッファの閾値と比較することによって、実施することができる。例えば、書き込みバッファが何らかの既定の値の８０％を超える場合、書き込みバッファはいっぱいであると考えられてもよいが、書き込みバッファがいっぱいであるかを決定するために、閾値及び／または他の条件を使用することができる。書き込みバッファがいっぱいであると決定７０６された場合、工程７００は、バッファ内のデータからデータオブジェクトを生成７０８することを含むことができる。バッファ内のデータからデータオブジェクトを生成することは、論理ブロックアドレス等、適切な情報を使用して、データブロック内部のデータの場所を可能にする様式でデータオブジェクトを生成することを含むことができる。データオブジェクトを構成する例示的方式を以下に検討する。
【００５２】
上記のように、本開示の多様な実施形態は、ＳＣＳＩサービスの多様な使用を可能にする。図９は、例えば、容量内のデータを使用するために別のコンピュータシステムに論理的に接続され得る容量をプロビジョニングするために、ＳＣＳＩサービスを通じて取得されるデータを利用するための工程９００の説明例を示す。工程９００は、上記のＳＣＳＩサービスによって等任意の適切なシステムによって、または概して、工程９００の操作を実施するように構成される、コンピューティングリソースプロバイダの任意のサブシステムによって、実施されてもよい。実施形態において、工程９００は、ＬＵＮから（すなわち、ＬＵＮによって識別された論理ユニットから）のデータ容量をプロビジョニングするというリクエストを受信すること９０２を含む。ＬＵＮを識別し、リクエストを認証するために使用される追加の情報を含むリクエストは、ウェブサービスまたはＡＰＩ呼出しの形式のように、任意の適切な様式で受信９０２することができる。ＬＵＮからのデータ容量をプロビジョニングするというリクエストを受信９０２した結果として、ＬＵＮのデータの容量プロビジョニング工程を開始９０４することができる。
【００５３】
データオブジェクト場所データストアが更新７１２された後、工程７００は、書き込みバッファを空にする７１４ことを含むことができる。書き込みを書き込みバッファに追加７０４した後、書き込みバッファがいっぱいではないと決定７０６された場合、書き込みバッファの有効期限が切れているかの決定を行うことができる。書き込みバッファは、例えば、書き込みバッファがいっぱいであるかどうかに関わらず、書き込みバッファがデータを含む場合、データは上記のようにデータオブジェクトに記憶されるように有効期限を有することができる。書き込みバッファは、書き込みバッファを維持するシステムの誤動作がデータ破壊を発生させるリスクを低減するように選択された有効期限時間を有することができる。例えば、書き込みバッファは、データが空の状態から書き込みバッファに書き込まれた時から５秒の有効期限時間を有することができる。
【００５４】
書き込みバッファが空ではないか、そして有効期限が切れていないかを決定７１６することは、書き込みバッファの有効期限が切れていないことを決定７１６するまで、繰り返して実施することができる。書き込みバッファの有効期限が切れていると決定７１６した場合、工程７００は、書き込みバッファからのデータを含むデータオブジェクトを生成７０８かつ記憶７１０することと、適切なデータオブジェクト場所データストアを更新し、かつ上記のように書き込みバッファを空にする７１４こととを含むことができる。書き込みコマンドが受信されると、工程７００またはその変形はそれに応じて繰り返されてもよい。この様式において、データオブジェクトは必ずしも各書き込みに作成されないが、書き込みのデータが収集され、バッチでデータオブジェクトを生成するために使用される。さらに、データオブジェクトは、書き込みバッファがいっぱいであるかまたは有効期限切れのいずれかに起因して作成されてもよいため、データブロックのデータを記憶しているデータオブジェクトはサイズが異なり得る。
【００５６】
図９は、容量をプロビジョニングするために、ＳＣＳＩサービスを通じて取得されたデータを利用するための工程９００の説明例を示す。ＬＵＮデータの容量プロビジョニング工程を開始すること９０４は、任意の適切な様式で実施されてもよい。例えば、図２の例において、コンピューティングリソースプロバイダが、オブジェクトベースのデータ記憶サービス及びブロックデータ記憶サービスを含む場合、オブジェクトベースのデータ記憶サービスからのデータは、ブロックデータ記憶サービスから提供される容量をプロビジョニングするためにアクセスされ、かつ使用されてもよい。オブジェクトベースのデータ記憶サービスからのデータは、したがって、オブジェクトベースのデータ記憶サービスから、ブロックデータ記憶サービスへ転送されてもよい。初期化された容量の容量識別子は、図２の例において取得９０６されてもよく、例えば、ＳＣＳＩサービスは、工程９００を実施している場合、ブロックデータ記憶サービスからの識別子を含むことができる。容量識別子を取得９０６すると、工程９００は、容量識別子を、工程９００を実施しているコンピューティングリソースプロバイダの顧客等、受信された９０２リクエストを提出したエンティティに提供すること９０８を含むことができる。容量は、容量識別子が提供９０８され、容量が使用される前に、完全に初期化される必要がないことに注意されたい。例えば、オブジェクトベースのデータ記憶サービスから、容量をホストするブロックデータサービスへデータを転送することによって、容量がプロビジョニングされる例において、データの転送は、以下に検討するように、段階的な工程であってもよい。
【００５７】
ＬＵＮデータの容量プロビジョニング工程を開始することは、任意の適切な様式で実施されてもよい。例えば、図２の例において、コンピューティングリソースプロバイダが、オブジェクトベースのデータ記憶サービス及びブロックデータ記憶サービスを含む場合、オブジェクトベースのデータ記憶サービスからのデータがアクセスされ、かつ使用されて、ブロックデータ記憶サービスからデータをロードすることができる。データは、仮想または物理的ブロックデバイスにロードされてもよい。オブジェクトベースのデータ記憶サービスからのデータは、したがって、オブジェクトベースのデータ記憶サービスから、ブロックデータ記憶サービスへ転送されてもよい。初期化された容量の容量識別子が取得９０６されてもよい。図２の例において、例えば、ＳＣＳＩサービスは、工程９００を実施している場合、容量をプロビジョニングするブロックデータ記憶サービスから識別子を取得することができる。容量識別子を取得９０６すると、工程９００は、容量識別子を提供９０８することを含むことができる。容量識別子は、例えば、工程９００を実施しているコンピュータリソースプロバイダの顧客等、受信９０２されたリクエストを提出したエンティティへ提供されてもよい。これに加えて、または代替として、容量識別子は、仮想コンピュータシステムサービスによって提供された仮想コンピュータシステムへ容量を論理的にマウントする（例えば、仮想コンピュータシステムがあたかもローカルで接続されているかのように容量と相互作用することができるように、ネットワークを介して動作可能に接続する）ために、ブロックデータ記憶サービスと集合的に動作する仮想コンピュータシステムサービスへ提供されてもよい。
【００５８】
容量は、容量識別子が提供９０８され、容量が使用される前に、完全に初期化される必要がないことに注意されたい。例えば、オブジェクトベースのデータ記憶サービスから、容量をホストするブロックデータサービスへデータを転送することによって、容量がプロビジョニングされる例において、データの転送は、段階的な工程であってもよい。容量が、オブジェクトベースのデータ記憶サービスからのデータを使用してブロックデータ記憶サービスによってプロビジョニングされる状況において、容量内のデータに対する操作が実施される場合、データが既に容量内に存在するか、またはまだオブジェクトベースのデータ記憶サービスに存在するかのチェックが行われてもよい。データがオブジェクトベースのデータ記憶サービスに存在する場合、データは、操作を実施することができるように、オブジェクトベースのデータ記憶サービスから直ちにロードされてもよい。他の変形もまた、本開示の範囲内であると考えられる。
【００５９】
本開示の実施形態は、以下の付記の観点で説明することができる。
付記１．データを記憶するためのコンピュータ実装方法であって、
実行可能命令で構成された１つ以上のコンピュータシステムの制御下で、
ブロックレベル通信プロトコルを使用してアドレス決定可能な仮想記憶デバイスをプロビジョニングすることと、
ブロックレベル通信プロトコルに従って構成可能であり、かつプロビジョニングされた仮想記憶デバイスをアドレス指定する書き込みコマンドを受信することと、
受信された書き込みコマンドの少なくともサブセットの各書き込みコマンドに対して、少なくとも、
キーバリューデータストアのデータオブジェクトであって、データオブジェクトのキーを参照することによってキーバリューデータストアから読み出し可能である、データオブジェクトの一部として、書き込みコマンドのデータを持続させることと、
コマンドによって指定された１つ以上のデータブロックアドレスをキーと関連付けるようにデータストアを更新することと、によって書き込みコマンドを実行することと、を含む、コンピュータ実装方法。
付記２．ブロックレベル通信プロトコルが、スモールコンピュータシステムインターフェースプロトコルをさらに含む、付記１に記載のコンピュータ実装方法。
付記３．書き込みコマンドのデータが、データオブジェクトの一部として持続されるようにすることは、複数の書き込みコマンドのデータをデータオブジェクト内に集積することをさらに含む、付記１または２に記載のコンピュータ実装方法。
付記４．１つ以上のコンピュータシステムがさらに、コンピューティングリソースプロバイダによってホストされ、
コマンドがさらに、コンピューティングリソースプロバイダの顧客によって、コンピューティングリソースプロバイダから遠隔に生成される、付記１〜３のいずれか１項に記載のコンピュータ実装方法。
付記５．受信された書き込みコマンドがさらに、受信時に、別の通信プロトコルを使用してカプセル化される、付記１〜４のいずれか１項に記載のコンピュータ実装方法。
付記６．ブロックレベル通信プロトコルに従って構成された読み取りコマンドであって、データブロックアドレスを指定する、読み取りコマンドを受信し、かつプロビジョニングされたデータ記憶デバイスをアドレス指定することと、
読み取りコマンドに応答するデータが位置するデータオブジェクトのキーを、指定されたデータブロックアドレスに少なくとも部分的に基づいて決定するために、データストアを使用することと、
キーに対応するデータオブジェクトを読み出すために、決定されたキーを使用することと、
読み出されたデータオブジェクトから、読み取りコマンドに応答するデータを抽出することと、
読み取りコマンドに応答して、読み取りコマンドに応答する抽出されたデータを提供することと、をさらに含む、付記１〜５のいずれか１項に記載のコンピュータ実装方法。
付記７．データを記憶するためのコンピュータ実装方法であって、
実行可能命令で構成された１つ以上のコンピュータシステムの制御下で、
第１の通信プロトコルに従って構成された書き込みコマンドであって、データブロックの識別子を指定する、書き込みコマンドを受信することと、
キーバリューストアのデータオブジェクトであって、データオブジェクトと関連付けられたキーを使用してキーバリューストアから読み出し可能である、データオブジェクトの一部として書き込みコマンドのデータを持続させることと、
データストアにおいて、キーをデータブロックの識別子と関連付けることと、を含む、コンピュータ実装方法。
付記８．コマンドがさらに、スモールコンピュータシステムインターフェースコマンドを含み、第１の通信プロトコルが、スモールコンピュータシステムインターフェースプロトコルである、付記７に記載のコンピュータ実装方法。
付記９．１つ以上のコンピュータシステムがさらに、コンピューティングリソースプロバイダによってホストされ、
コマンドが、コンピューティングリソースプロバイダであって、コンピューティングリソースプロバイダからコマンドが受信された、コンピューティングリソースプロバイダの顧客によって遠隔的に生成される、付記７または８に記載のコンピュータ実装方法。
付記１０．書き込みコマンドが、ストレージエリアネットワークへ伝送されたコマンドのレプリケーションをさらに含む、付記７〜９のいずれか１項に記載のコンピュータ実装方法。
付記１１．データブロックの識別子を指定する読み取りコマンドを受信することと、
キーを決定するために識別子を使用することと、
データオブジェクトを読み出すためにキーを使用することと、
読み出されたデータオブジェクトから書き込みコマンドのデータを抽出することと、
読み取りコマンドに応答して、抽出されたデータを提供することと、をさらに含む、付記７〜１０のいずれか１項に記載のコンピュータ実装方法。
付記１２．データオブジェクトが、他のデータブロックのデータをさらに含む、付記７〜１１のいずれか１項に記載のコンピュータ実装方法。
付記１３．システムであって、
１つ以上のプロセッサと、
１つ以上のプロセッサによって実行されると、少なくとも、
ブロックレベルデータ記憶インターフェースを提供することと、
ブロックレベルデータ記憶インターフェースに対して、ブロックレベルコマンドを受信することと、
受信されたブロックレベルコマンドに従って、データオブジェクト内にデータブロックを持続的に記憶するためにオブジェクトベースのデータ記憶システムを利用することと、によって、システムにブロックレベル記憶デバイスを模倣させる命令を含むメモリと、を備える、システム。
付記１４．オブジェクトベースのデータ記憶システムが、データオブジェクトをそれぞれのキーと関連付けるキーバリューストアをさらに備え
命令がさらに、システムに、データブロックアドレスをキーバリューストアのキーと関連付けるマップを維持させる、付記１３に記載のシステム。
付記１５．ブロックレベルコマンドが、スモールコンピュータシステムインターフェースコマンドをさらに含む、付記１３または１４に記載のシステム。
付記１６．オブジェクトデータ記憶システムを利用することが、オブジェクトベースのデータ記憶システムへのアプリケーションプログラミングインターフェース呼出しを構成することをさらに含む、付記１３〜１５のいずれか１項に記載のシステム。
付記１７．データオブジェクトにデータブロックを持続的に記憶することが、データオブジェクトの少なくともサブセットの各データオブジェクトに対して、データオブジェクト内に複数のデータブロックを記憶することをさらに含む、付記１３〜１６のいずれか１項に記載のシステム。
付記１８．命令がさらに、システムに、複数のエンティティのためのブロックレベル記憶デバイスを模倣させる、付記１３〜１７のいずれか１項に記載のシステム。
付記１９．１つ以上のコンピュータ可読記憶媒体であって、システムの１つ以上のプロセッサによって実行されると、システムに、
データブロック及びデータブロックのデータを指定する書き込みコマンドを受信することと、
データブロックのデータが、データオブジェクトであって、１つ以上のデータブロックの論理コンテナである、データオブジェクトを記憶する記憶システム内に持続的に記憶されるようにさせることと、
データブロックの識別子からデータオブジェクトを検索するのに使用可能な情報を維持することと、を行わせる命令をその中に記憶している、１つ以上のコンピュータ可読記憶媒体。
付記２０．書き込みコマンドがさらに、スモールコンピュータシステムインターフェースプロトコルに従って構成される、付記１９に記載の１つ以上のコンピュータ可読記憶媒体。
付記２１．データ記憶システムが、キーバリューストアをさらに備え、
情報がさらに、データブロックのブロック識別子を、データ記憶システムからデータオブジェクトを読み出すのに使用可能なキーと関連付ける、付記１９または２０に記載の１つ以上のコンピュータ可読記憶媒体。
付記２２．データオブジェクトが、データブロックに加えて少なくとも１つのデータブロックをさらに含む、付記１９〜２１のいずれか１項に記載の１つ以上のコンピュータ可読記憶媒体。
付記２３．命令が、１つ以上のプロセッサによって実行されると、システムに、
データブロックを指定する読み取りコマンドを受信することと、
読み取りコマンドに応答して、データオブジェクトからデータブロックを取得することによってデータブロックを提供することと、をさらに行わせる、付記１９〜２２のいずれか１項に記載の１つ以上のコンピュータ可読記憶媒体。
付記２４．データブロックが、スモールコンピュータシステムインターフェースプロトコルによってアドレス指定可能である論理ユニットをさらに含み、
コマンドがさらに、システムが複数の論理ユニットの中から論理ユニットを区別することを可能にする情報とともに受信される、付記１９〜２３のいずれか１項に記載の１つ以上のコンピュータ可読記憶媒体。
付記２５．データを記憶するためのコンピュータ実装方法であって、
実行可能命令で構成された１つ以上のコンピュータシステムの制御下で、
第１の通信プロトコルに従って構成された書き込みコマンドであって、データブロックの識別子を指定する、書き込みコマンドを受信することと、
キーバリューストアのデータオブジェクトであって、データオブジェクトと関連付けられたキーを使用してキーバリューストアから読み出し可能である、データオブジェクトの一部として書き込みコマンドのデータを持続させることと、
データストアにおいて、キーをデータブロックの識別子と関連付けることと、を含む、コンピュータ実装方法。
付記２６．コマンドがさらに、スモールコンピュータシステムインターフェースコマンドを含み、第１の通信プロトコルが、スモールコンピュータシステムインターフェースプロトコルである、付記２５に記載のコンピュータ実装方法。
付記２７．１つ以上のコンピュータシステムがさらに、コンピューティングリソースプロバイダによってホストされ、
コマンドが、コンピューティングリソースプロバイダであって、コンピューティングリソースプロバイダからコマンドが受信された、コンピューティングリソースプロバイダの顧客によって遠隔的に生成される、付記２５または２６に記載のコンピュータ実装方法。
付記２８．書き込みコマンドが、ストレージエリアネットワークへ伝送されたコマンドのレプリケーションをさらに含む、付記２５〜２７のいずれか１項に記載のコンピュータ実装方法。
付記２９．データブロックの識別子を指定する読み取りコマンドを受信することと、
キーを決定するために識別子を使用することと、
データオブジェクトを読み出すためにキーを使用することと、
読み出されたデータオブジェクトから書き込みコマンドのデータを抽出することと、
読み取りコマンドに応答して、抽出されたデータを提供することと、をさらに含む、付記２５〜２８のいずれか１項に記載のコンピュータ実装方法。
付記３０．データオブジェクトが、他のデータブロックのデータをさらに含む、付記２５〜２９のいずれか１項に記載のコンピュータ実装方法。
付記３１．システムであって、
１つ以上のプロセッサと、
１つ以上のプロセッサによって実行されると、少なくとも、
ブロックレベルデータ記憶インターフェースを提供することと、
ブロックレベルデータ記憶インターフェースに対して、ブロックレベルコマンドを受信することと、
受信されたブロックレベルコマンドに従って、データオブジェクト内にデータブロックを持続的に記憶するためにオブジェクトベースのデータ記憶システムを利用することと、によって、システムにブロックレベル記憶デバイスを模倣させる命令を含むメモリと、を備える、システム。
付記３２．オブジェクトベースのデータ記憶システムが、データオブジェクトをそれぞれのキーと関連付けるキーバリューストアをさらに備え
命令がさらに、システムに、データブロックアドレスをキーバリューストアのキーと関連付けるマップを維持させる、付記３１に記載のシステム。
付記３３．ブロックレベルコマンドが、スモールコンピュータシステムインターフェースコマンドをさらに含む、付記３１または３２に記載のシステム。
付記３４．オブジェクトデータ記憶システムを利用することが、オブジェクトベースのデータ記憶システムへのアプリケーションプログラミングインターフェース呼出しを構成することをさらに含む、付記３１〜３３のいずれか１項に記載のシステム。
付記３５．データオブジェクトにデータブロックを持続的に記憶することが、データオブジェクトの少なくともサブセットの各データオブジェクトに対して、データオブジェクト内に複数のデータブロックを記憶することをさらに含む、付記３１〜３４のいずれか１項に記載のシステム。
付記３６．命令がさらに、システムに、複数のエンティティのためのブロックレベル記憶デバイスを模倣させる、付記３１〜３５のいずれか１項に記載のシステム。
付記３７．命令がさらに、システムに、データブロックを検索するためにデータオブジェクトを指定するウェブサービスアプリケーションプログラミングインターフェース呼出しを提出するのに使用可能な情報を維持させる、付記３１〜３６のいずれか１項に記載のシステム。
付記３８．命令がさらに、システムに、
データブロックを指定する読み取りコマンドを受信することと、
読み取りコマンドに応答して、オブジェクトベースのデータ記憶システムに持続的に記憶されたデータオブジェクトからデータブロックを取得することによって、データブロックを提供することと、を行わせる、付記３１〜３７のいずれか１項に記載のシステム。
付記３９．命令がさらに、システムに、
データブロックが、スモールコンピュータシステムインターフェースプロトコルによってアドレス指定可能である論理ユニットであり、
コマンドが、システムが複数の論理ユニットの中から論理ユニットを区別することを可能にする情報とともに受信されることを行わせる、付記３８に記載のシステム。
【００６０】
図１０は、多様な実施形態に従う態様を実装するための例示的環境１０００の態様を示す。理解されるように、説明の目的でウェブベースの環境が使用されるが、多様な実施形態を実装するために、必要に応じて異なる環境が使用されてもよい。その環境は、適切なネットワーク１００４を介してリクエスト、メッセージ、または情報を送信かつ受信し、デバイスのユーザに情報を伝達するように動作可能な任意の適切なデバイスを含み得る、１つの電子クライアントデバイス１００２を含む。そのようなクライアントデバイスの例として、パーソナルコンピュータ、携帯電話、手持ち式メッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、パーソナルデータアシスタント、埋め込み式コンピュータシステム、電子ブックリーダー等が挙げられる。ネットワークとして、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、または任意の他のそのようなネットワーク、もしくはそれらの組み合わせを含む、任意の適切なネットワークを挙げることができる。そのようなシステムに使用される構成要素は、選択されるネットワークの種類及び／または環境に少なくともある程度依存し得る。そのようなネットワークを介して通信するためのプロトコル及び構成要素は周知であり、本明細書において詳細に議論されない。ネットワーク上での通信は、有線または無線接続及びこれらの組み合わせによって有効にされ得る。この例において、環境がリクエストを受信し、かつそれに応答してコンテンツをサービスするためのウェブサーバ１００６を含むように、ネットワークはインターネットを含むが、他のネットワークについては、当業者には明らかなように、同様の目的をサービスする代替のデバイスを使用することができる。
【００６１】
例示的な環境は、少なくとも１つのアプリケーションサーバ１００８と、データストア１０１０とを含む。連鎖されるか、またはさもなければ構成されてもよい、適切なデータストアからデータを入手する等のタスクを実行するために相互作用し得る、いくつかのアプリケーションサーバ、層、もしくは他の要素、プロセス、または構成要素が存在し得ることを理解されたい。サーバは、本明細書に使用されるように、ハードウェアデバイスまたは仮想コンピュータシステム等、多様な方式で実装されてもよい。いくつかの状況において、サーバは、コンピュータシステム上で実行されているプログラミングモジュールを参照することができる。本明細書で使用される「データストア」という用語は、データの記憶、アクセス、及び読み出し能力のある任意のデバイスまたはデバイスの組み合わせを指し、任意の標準、分散型、またはクラスタ化環境において、任意の組み合わせ及び任意の数のデータサーバ、データベース、データ記憶デバイス、及びデータ記憶媒体を含んでもよい。アプリケーションサーバは、クライアントデバイスの１つ以上のアプリケーションの態様を実行するために、必要に応じて、アプリケーションのデータアクセス及びビジネスロジックのうちのいくつか（多数の場合もある）を処理する、データストアと統合するための任意の適切なハードウェア及びソフトウェアを含むことが可能である。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供することができ、ユーザに転送される文字、図、音声、及び／またはビデオ等のコンテンツを生成することができ、そのコンテンツを、本例において、ハイパーテキストマークアップ言語（「ＨＴＭＬ」）、拡張可能マークアップ言語（「ＸＭＬ」）、または別の適切な構造化された言語の形態で、ウェブサーバによってユーザにサービスすることができる。全てのリクエスト及び応答の処理、ならびにクライアントデバイス１００２とアプリケーションサーバ１００８との間のコンテンツの送達は、ウェブサーバによって処理することができる。本明細書の他の箇所で議論されるように、本明細書で検討される構造化されたコードは、任意の適切なデバイスまたはホストマシン上で実行することができるため、ウェブ及びアプリケーションサーバは必要とされず、単に例示の構成要素に過ぎないことを理解されたい。さらに、本明細書において単一のデバイスによって実施されると記載される操作は、その他状況から明確である場合を除き、分散システムを形成することができる複数のデバイスによって集合的に実施されてもよい。
【００６２】
データストア１０１０は、本開示の特定の態様に関するデータを記憶するための、いくつかの別々のデータテーブル、データベース、または他のデータ記憶機構及び媒体を含むことができる。例えば、示されたデータストアは、本番データ１０１２及びユーザ情報１０１６を記憶するための機構を含むことができ、これらは、本番環境でコンテンツを提供するために使用することができる。データストアはまた、報告書作成、分析または他のこのような目的のために使用することができる、ログデータ１０１４を記憶するための機構も含むことが示される。ページイメージ情報等のデータストアに記憶されること、及び権限情報にアクセスすることが必要になる可能性があり、必要に応じて上記の列挙された機構のうちのいずれか、またはデータストア１０１０の追加の機構に記憶することができる、多くの他の態様が存在する可能性があることを理解されたい。データストア１０１０は、それと関連するロジックを通じて、アプリケーションサーバ１００８から命令を受信し、かつそれに応答してデータを取得、更新、またはさもなければ処理するように動作可能である。一例において、ユーザは、ユーザによって操作されるデバイスを通じて、所定の種類の項目についての検索リクエストを提出する場合がある。この場合、データストアは、ユーザの身元を検証するためにユーザ情報にアクセスする場合があり、その種類の項目についての情報を取得するためにカタログ詳細情報にアクセスすることができる。情報は、次いで、ユーザがユーザデバイス１００２上のブラウザを介して表示することが可能であるウェブページ上の結果リスト等において、ユーザに返すことができる。関心の特定の項目の情報は、ブラウザの専用ページまたはウィンドウに表示することができる。しかしながら、本開示の実施形態は必ずしもウェブページの状況に限定されず、リクエストが必ずしもコンテンツに対するリクエストではない、一般的なリクエストを処理することにより一般的に適用可能であってもよいことに注意されたい。
【００６３】
それぞれのサーバは、典型的には、そのサーバの一般管理及び動作についての実行可能なプログラム命令を提供するオペレーティングシステムを含み、かつ典型的には、サーバのプロセッサによって実行されると、サーバがその目的とする機能を実行することを可能にする命令を記憶するコンピュータ可読記憶媒体（例えば、ハードディスク、ランダムアクセスメモリ、読み取り専用メモリ等）を含む。サーバのオペレーティングシステム及び一般的な機能性の好適な実装例は、既知であるか、または市販されており、当業者によって、特に本明細書における本開示を考慮して容易に実装される。
【００６４】
一実施形態の環境は、１つ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続されるいくつかのコンピュータシステム及び構成要素を利用する分散型コンピューティング環境である。しかしながら、当業者は、そのようなシステムが、図１０に図示されるよりも少ないまたは多い数の構成要素を有するシステムにおいて同等に良好に動作することができることを理解するであろう。したがって、図１０のシステム１０００の描写は、本質的に例示的であり、かつ本開示の範囲を限定しないと見なされるべきである。
【００６５】
多様な実施形態は、いくつかの場合には、任意のいくつかのアプリケーションを操作するために使用することができる、１つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含むことができる、多種多様な動作環境で実装することができる。ユーザまたはクライアントデバイスは、標準のオペレーティングシステムを稼動しているデスクトップ、ラップトップまたはタブレットコンピュータ等のいくつかの汎用パーソナルコンピュータ、ならびにモバイルソフトウェアを稼動し、いくつかのネットワーク及びメッセージングプロトコルをサポートすることが可能であるセルラー、ワイヤレス、及びハンドヘルドデバイスのうちのいずれかを含むことができる。そのようなシステムはまた、多種多様な市販のオペレーティングシステム、ならびに開発及びデータベース管理等の目的の他の周知のアプリケーションのうちのいずれかを稼動するいくつかのワークステーションを含むことができる。これらのデバイスはまた、ネットワークを介して通信することが可能なダミー端末、シンクライアント、ゲームシステム、及び他のデバイス等、他の電子デバイスを含むことができる。
【００６６】
本開示の多様な実施形態は、伝送制御プロトコル／インターネットプロトコル（「ＴＣＰ／ＩＰ」）多様な層のオープンシステム相互接続（「ＯＳＩ」）モデルにおいて動作するプロトコル、ファイル転送プロトコル（「ＦＴＰ」）、ユニバーサルプラグアンドプレイ（「ＵｐｎＰ」）、ネットワークファイルシステム（「ＮＦＳ」）、共通インターネットファイルシステム（「ＣＩＦＳ」）及びＡｐｐｌｅＴａｌｋ等、多種多様な市販のプロトコルのうちのいずれかを使用する通信をサポートするために、当業者には周知であろう少なくとも１つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公共回線電話網、赤外線ネットワーク、無線ネットワーク、及びこれらの任意の組み合わせであり得る。
【００６７】
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）サーバ、ＦＴＰサーバ、共通ゲートウェイインターフェース（「ＣＧＩ」）サーバ、データサーバ、Ｊａｖａサーバ、及びビジネスアプリケーションサーバを含む、多様なサーバまたは中間層アプリケーションのうちのいずれかを稼動することができる。サーバ（単数または複数）はまた、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃またはＣ＋＋等の任意のプログラム言語、あるいはＰｅｒｌ、Ｐｙｔｈｏｎ、またはＴＣＬ等の任意のスクリプト言語、ならびにこれらの組み合わせで作成された１つ以上のスクリプトまたはプログラムとして実装されてもよい、１つ以上のウェブアプリケーションを実行することによって等、ユーザデバイスからのリクエストに応答して、プログラムまたはスクリプトを実行することが可能であってもよい。サーバ（単数または複数）はまた、これらに限定されないが、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、及びＩＢＭ（登録商標）から市販されているデータベースサーバを含んでもよい。
【００６８】
環境は、上記のように、多様なデータストアならびに他のメモリ及び記憶媒体を含むことができる。これらは、コンピュータのうちの１つ以上にローカル（及び／または内部に存在）、あるいはネットワーク全体のコンピュータのうちのいずれかまたは全てからリモートの記憶媒体等、多様な場所に存在することができる。特定の組の実施形態において、情報は、当業者は熟知のストレージエリアネットワーク（以下「ＳＡＮ」）の中に存在してもよい。同様に、コンピュータ、サーバ、または他のネットワークデバイスに帰属する機能を実施するために必要な任意のファイルは、必要に応じて、ローカル及び／またはリモートに記憶されてもよい。システムがコンピュータデバイスを含む場合、そのようなデバイス各々は、バスを介して電気的に連結されてもよいハードウェア要素を含むことができ、要素として、例えば、少なくとも１つの中央処理装置（「ＣＰＵ」または「プロセッサ」）、少なくとも１つの入力デバイス（例えば、マウス、キーパッド、コントローラ、タッチ画面、またはキーパッド）、及び少なくとも１つの出力デバイス（例えば、表示デバイス、プリンタ、またはスピーカ）が挙げられる。そのようなシステムはまた、ランダムアクセスメモリ（以下「ＲＡＭ」）、または読み取り専用メモリ（以下「ＲＯＭ」）、ならびに取り外し可能媒体デバイス、メモリカード、フラッシュカード等のディスクドライブ、光学式記憶装置、及びソリッドステート記憶装置等の１以上の記憶装置を含んでもよい。
【００６９】
そのようなデバイスはまた、コンピュータ可読記憶媒体リーダー、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイス等）、及び上記のような実働メモリも含むことができる。コンピュータ可読記憶媒体リーダーは、コンピュータ可読情報を一時的及び／またはより永久的に含み、記憶、伝送、及び読み出すための、リモート、ローカル、固定、及び／または取り外し可能記憶装置、ならびに記憶媒体を代表する、コンピュータ可読記憶媒体と接続、またはこれを受容するように構成することができる。システム及び多様なデバイスはまた典型的に、クライアントアプリケーションまたはウェブブラウザ等、オペレーティングシステム及びアプリケーションプログラムを含む、いくつかのソフトウェアアプリケーション、モジュール、サーバ、または少なくとも１つの実働メモリデバイス内部に位置する他の要素を含む。代替の実施形態は、上記とは異なる多数の変形を有してもよいことを理解されたい。例えば、カスタマイズされたハードウェアが使用される場合もあり、及び／または特定の要素が、ハードウェア、ソフトウェア（アプレット等の移植可能ソフトウェアを含む）、または両方に実装される場合がある。さらに、ネットワーク入力／出力デバイス等の他のコンピューティングデバイスへの接続が採用されてもよい。
【００７０】
コード、またはコードの一部を含むための記憶媒体及びコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、電子的に消去可能なプログラム可能読み取り専用メモリ（「ＥＥＰＲＯＭ」）、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読み取り専用メモリ（「ＣＤ−ＲＯＭ」）、デジタル多用途ディスク（ＤＶＤ）または他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を記憶するために使用することができ、かつシステムデバイスによってアクセスすることができる任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶及び／または伝送のための任意の方法または技術において実装された揮発性及び不揮発性の取り外し可能及び非取り外し可能な媒体等の記憶媒体及び通信媒体を含むが、しかしこれらに限定されない、当技術分野において周知または使用される任意の適当な媒体を含むことができる。本明細書に提供された開示及び教示に基づいて、当業者は、多様な実施形態を実装するための他の方式及び／または方法を理解するであろう。
【００７１】
仕様及び図面は、したがって、制限の意味ではなく、説明として解釈されるべきである。しかしながら、請求項に記載の本発明の広義の趣旨及び範囲から逸脱することなく、そこに多様な変形及び変更が行われてもよいことは自明である。
【００７２】
他の変形は、本開示の趣旨内である。このように、開示される技法は、多様な変形及び代替の構築の影響を受けやすいが、その所定の例示実施形態は、図面に示され、詳細を上述した。しかしながら、本発明を開示される特定の形式（単数または複数）に限定する意図は全く存在せず、対照的に、本発明は、添付の請求項によって定義される本発明の趣旨及び範囲内に該当する全ての変更、代替構築、及び同等物を網羅することを理解されたい。
【００７３】
「１つ」（「ａ」及び「ａｎ」）及び「その」（「ｔｈｅ」）の用語の使用は、開示される実施形態の文脈における（特に以下の請求項の文脈における）類似の参照は、本明細書にその他明記または文脈によって明確に否定される場合を除き、単数及び複数の両方を網羅すると解釈される。「備える」、「有する」、「含む」、及び「含有する」という用語は、その他特に明記されない限り、無制限の用語（すなわち、「含むが、限定されない」を意味する）として解釈されることとする。「接続される」という用語は、物理的接続を、変更を加えずにこれを参照している場合、何らかの介在が存在する場合であっても、部分的または全体的に内部に含まれる、それに添付、または結合すると解釈される。本明細書における値の範囲の記載は、本明細書にその他記載のない限り、その範囲内に該当する各個別の値を個別に参照する簡潔な方法として機能することを目的とするに過ぎず、各個別の値は、本明細書に個別に記載されているかのようにその仕様に組み入れられる。「組」（例えば、「１組の項目」）または「サブセット」という用語の使用は、その他記載のない限り、または文脈によりこれに反しない限り、１つ以上の部材を備える、空ではない集合体として解釈される。さらに、その他記載のない限り、または文脈によりこれに反しない限り、対応する組の「サブセット」という用語は必ずしも対応する組の適切なサブセットを示さず、サブセット及び対応する組は等しくてもよい。
【００７４】
「Ａ、Ｂ、及びＣのうちの少なくとも１つ」または「Ａ、Ｂ及びＣのうちの少なくとも１つ」という形式の語句等の接続語は、その他具体的に記載のない限り、または文脈により明確に否定されない限り、項目、用語等がＡ、Ｂ、またはＣのいずれか、あるいは任意のその空ではないサブセットであり得ることを表すために一般に使用される文脈によってその他理解される。例えば、説明例において、上記の例示的接続語において使用された３つのメンバーを有する組は、「少なくとも１つまたはＡ、Ｂ、及びＣ」ならびに「Ａ、Ｂ及びＣのうちの少なくとも１つ」は、｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ，Ｂ｝、｛Ａ，Ｃ｝、｛Ｂ，Ｃ｝、｛Ａ，Ｂ，Ｃ｝の組のうちのいずれかを参照する。このため、このような接続語は概して、所定の実施形態が、Ａのうちの少なくとも１つ、Ｂのうちの少なくとも１つ、及びＣのうちの少なくとも１つがそれぞれ存在することを要求することを暗示することを意図しない。
【００７５】
本明細書に説明される工程の操作は、本明細書にその他記載のない限り、または文脈によって明確に否定されない限り、任意の適切な順序で実行することができる。本明細書に説明される工程（あるいはその変形及び／または組み合わせ）は、実行可能命令で構成された１つ以上のコンピュータシステムの制御下で実施されてもよく、１つ以上のプロセッサ上、ハードウェアによって、またはこれらの組み合わせによって、集合的に実行するコード（例えば、実行可能命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実装されてもよい。コードは、例えば、１つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式において、コンピュータ可読記憶媒体上に記憶されてもよい。コンピュータ可読記憶媒体は非一時的であってもよい。
【００７６】
本明細書に提供される任意及び全ての例、または例示的言語（例えば「等」）の使用は、本発明の実施形態をより明確にすることを意図するに過ぎず、その他請求されない限り、本発明の範囲に限定を課すものではない。本明細書のいずれの文言も、請求項に記載されていない何らかの要素が本発明の実施に不可欠であることを示すと解釈されてはならない。
【００７７】
本開示の好ましい実施形態は、本発明を実行するために本発明人に周知の最良の様式を含めて、本明細書に記載される。これらの好ましい実施形態の変形は、前述の説明を一読すると当業者には明らかになり得る。本発明人は、当業者が、そのような変形を適切に採用することを期待し、本発明人は、本開示の実施形態が本明細書に具体的に記載される以外に実践されることを意図する。したがって、本開示の範囲は、該当法によって許可されるように、本明細書に添付の請求項に記載される対象項目の変更及び同等物を全て含む。さらに、その全ての可能な変形における上述の要素の任意の組み合わせは、その他本明細書に明記またはその他文脈によって明確に否定されない限り、本開示の範囲によって網羅される。
【００７８】
本明細書に引用される、文献、特許明細書、及び特許を含む全ての参考文献は、各参考文献が個別かつ具体的に参照により組み入れられ、その全体が本明細書に記載されているのと同じ範囲まで、参照により組み入れる。
【図１】
0006534989.tif 000002
【図２】
0006534989.tif 000003
【図３】
0006534989.tif 000004
【図４】
0006534989.tif 000005
【図５】
0006534989.tif 000006
【図６】
0006534989.tif 000007
【図７】
0006534989.tif 000008
【図８】
0006534989.tif 000009
【図９】
0006534989.tif 000010
【図１０】
0006534989.tif 000011