JP2016515731A - レプリケーションターゲットサービス - Google Patents

レプリケーションターゲットサービス Download PDF

Info

Publication number
JP2016515731A
JP2016515731A JP2016504361A JP2016504361A JP2016515731A JP 2016515731 A JP2016515731 A JP 2016515731A JP 2016504361 A JP2016504361 A JP 2016504361A JP 2016504361 A JP2016504361 A JP 2016504361A JP 2016515731 A JP2016515731 A JP 2016515731A
Authority
JP
Japan
Prior art keywords
data
command
block
scsi
service
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.)
Granted
Application number
JP2016504361A
Other languages
English (en)
Other versions
JP6534989B2 (ja
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2016515731A publication Critical patent/JP2016515731A/ja
Application granted granted Critical
Publication of JP6534989B2 publication Critical patent/JP6534989B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

データ記憶サービスは、スモールコンピュータシステムインターフェースプロトコル等の通信プロトコルに従って構成されたコマンドを受信する。コマンドは、ストレージエリアネットワーク等のブロックレベルデータ記憶システムへ送信されたコマンドのレプリケーションであってもよい。コマンドの実行によって書き込まれるデータは、オブジェクトベースのデータ記憶システムを使用して、永続される。読み取りコマンドが受信されると、データブロックが記憶されているデータオブジェクトから、データブロックを抽出することができる。

Description

(関連出願の相互参照)
本出願は、2013年3月20日提出の米国仮特許出願第61/803,764号の利権を主張する、2013年4月3日提出の米国特許出願第13/856,279号の優先権を主張し、これらの内容は、参照により、それらの全体を本明細書に組み入れる。
データ記憶システムは、それらを使用する組織の需要に対応するために、革新してきたとともに、革新し続けている。多数の組織は、例えば、特に、コンピューティング環境の性能、冗長性、柔軟性、及び簡潔性の目的のために、ストレージエリアネットワーク(SAN)を利用する。それらの多くの利点にも関わらず、最新のデータ記憶システムは、組織に多数の課題を提示し得る。例えば、データ記憶システムはしばしば、高性能を目的として構成された構成要素を含み、そのような性能はしばしば、代償を伴う。このため、データ記憶システムはしばしば、相当な資本投資を必要とする。加えて、多数のデータ記憶システムは、独自のプロトコルに従って動作する特殊な機器を利用する。あるデータ記憶システムから別のデータ記憶システムへデータを移動することは、重大な課題を提起する可能性があり、しばしば、そのような独自のプロトコルを使用して通信することが可能な高価な機器の使用を必要とする。この結果、多様なデータ記憶システムを使用する組織は、さらに追加の資本投資が必要とされる状況に陥る恐れがある。
本開示に従う様々な実施形態が、以下の図面を参照して説明される。
多様な実施形態を実践することができる環境の説明例を示す。 多様な実施形態を実践することができる環境の説明例を示す。 少なくとも1つの実施形態に従うSCSIサービスの説明例を示す。 少なくとも1つの実施形態に従う、SCSIサービスを提供するための工程の説明例を示す。 少なくとも1つの実施形態に従う、SCSIサービスへデータをレプリケートするための工程の説明例を示す。 少なくとも1つの実施形態に従う、データ操作を実施するコマンドを処理するための工程の説明例を示す。 少なくとも1つの実施形態に従う、書き込みコマンドを処理するためにバッファを使用するための工程の説明例を示す。 少なくとも1つの実施形態に従う、データオブジェクトの構成を示す説明図を示す。 少なくとも1つの実施形態に従う、SCSIサービスを使用して記憶されたデータからデータ容量を生成するための工程の説明例を示す。 本開示の多様な実施形態を実装することができる環境を示す。
以下の説明において、多様な実施形態を説明する。説明を目的として、実施形態の完全な理解を提供するために、特定の構成及び詳細が記載される。しかしながら、当業者には、特定の詳細を用いることなく実施形態を実践できることも明らかであろう。さらに、周知の特徴は、説明される実施形態を曖昧にしないよう、省略または簡素化される場合がある。
データレプリケーションのリモート(ターゲット)を提供するためのサービスを提供することに関する技法が説明され、示唆される。実施形態において、エンティティ(例えば、組織)は、読み取り及び書き込み操作をサポートする仮想デバイスのプロビジョニングをリクエストするために、サービスへの適切に構成されたアプリケーションプログラミングインターフェース(API)呼出しを通じて等、サービスに接触することが可能である。実施形態において、エンティティは、サービスを運用するコンピューティングリソースプロバイダの顧客である。リクエストの受信後、サービスは、リクエストされたデバイスをプロビジョニングし、デバイスの識別子を提供することができる。デバイスは、例えば、SCSI−3等、スモールコンピュータシステムインターフェース(SCSI)プロトコルに従って動作するように構成された仮想データ記憶装置であってもよい。デバイスの識別子は、エンティティのためのデバイスを固有に識別する論理ユニット番号(LUN)であってもよい。以下に検討するように、エンティティは、データを適切に持続させるために、プロビジョニングされた仮想デバイスへコマンド(例えば、SCSIコマンド)をレプリケートすることができる。
実施形態において、エンティティは、ストレージエリアネットワーク(SAN)等、データ記憶システムを使用する。データ記憶システムを利用するエンティティのホスト(例えば、サーバまたは他のコンピューティングデバイス)は、データ記憶システムにそれぞれの操作を実施させるために、データ記憶システムにコマンドを発行することが可能である。書き込み操作等の所定の操作において、対応するコマンドは、データ記憶システム、及びプロビジョニングされたデバイスに対応する遠隔エンドポイントの両方へ伝送される。例えば、書き込みコマンドがデータ記憶システムへ発行された場合、書き込みコマンドが、データ記憶システムで、及び仮想デバイスのために遠隔的に、の両方で実行されるように、同コマンドは、デバイスをプロビジョニングしたサービスへ伝送される。
いくつかの実施例において、ホストは、SCSI−3等、非独自のプロトコルに従ってデータ記憶システムと通信する。非独自プロトコルのコマンドは、多様な媒体を介するコマンドの運搬を可能にするために埋め込まれてもよい。例えば、ホストは、インターネットプロトコルスモールコンピュータシステムインターフェース(iSCSI)プロトコル、またはファイバチャネルプロトコル(FCP)を介してSCSIを使用してデータ記憶システムと通信してもよい。所定の種類のコマンドにおいて、非独自プロトコルが使用されて、上記のようにインターネット等のネットワークを介して遠隔エンドポイントへコマンドを送信することによって、コマンドをレプリケートする。非独自プロトコルのコマンドは、ネットワークを介したそれらの転送を可能にするために、別のプロトコルを使用してカプセル化されてもよい。
上記のように、遠隔エンドポイントは、非独自プロトコルのレプリケートされたコマンドを受信するサービスのインターフェースに対応し、適切にデータを持続する。例えば、サービスは、SANに発行された同じSCSIコマンドを受信することができる。サービスは、コマンドに従ってデータを持続することができ、それによって、SANに書き込まれたデータのレプリカを作成する。いくつかの実施例において、サービスは、プロビジョニングされたデバイスのためにデータを持続的かつ耐久的に持続するために、データ記憶サービスと相互作用する。他の例において、サービスは、その独自のデータストア(例えば、データがデータのキーを使用してアクセス可能であるキーバリューストア)を維持する。
多様な実施形態において、コマンドが送信される(かつサービスにレプリケートされる)データ記憶システムは、ブロックレベルで動作するブロックデータ記憶システムであり、512バイト等、既定サイズの均一のデータブロックを利用する。データ記憶システムに発行されたコマンドは、コマンドが適用する1つ以上のブロックを指定することによって等、ブロックレベルで構成されてもよい。レプリケートされたコマンドと関係するデータを持続するために使用されるデータ記憶サービスは、異なる様式で動作することができる。例えば、データ記憶サービスは、オブジェクトベースであってもよく、必ずしも均一サイズではないデータオブジェクトの記憶を可能にする。オブジェクトベースのデータ記憶システムは、基底のブロックデータ記憶デバイスの抽象化として、データオブジェクトを記憶することができる。いくつかの例において、データ記憶サービスは、各データオブジェクトがデータ記憶システム内のデータオブジェクトを検索するために使用される対応キーを有する、キーバリューストアとして動作する。レプリケートされたコマンドに対応するデータは、データ記憶サービスを使用してオブジェクトレベルで記憶されてもよい。ブロックレベルでデータ記憶システムに発行された書き込みコマンドは、オブジェクトレベルでデータ記憶サービスに発行されたコマンドに変換されてもよい。例えば、SCSIコマンドは、データ記憶サービスへのAPI呼出しを適切に構成するように使用されてもよい。いくつかの実施形態において、コマンドの変換は非同期である。例えば、書き込みコマンドは、バッファに書き込まれてもよい(すなわち、書き込みコマンドの実行の結果として記憶されるデータは、バッファに記憶されてもよい)。バッファのデータは、例えば、バッファの有効期限が失効、またはバッファのデータ量が、既定であってもよい閾値に到達すると、単一のデータオブジェクトに集められてもよい。
この様式において、SAN等のデータ記憶システムのデータは、相当な追加の資本投資の必要性なく、耐久的かつ持続的にレプリケートすることができる。加えて、本明細書に説明かつ示唆される技法は、追加の技術的利点を促進する。例えば、いくつかの実施形態において、コマンドがレプリケートされるサービスは、必ずしも、単一の場所でホストされていない、複数のデバイスからのSCSIコマンドを処理することが可能であるからである。一実施例において、サービスは、1つのデバイスがサービスによって提供された仮想デバイスへ書き込むことができ、かつ複数のデバイスが仮想デバイスからデータを読み取ることができるモデルをサポートするために使用される。別の実施例として、サービスによって持続されたデータは、他のコンピュータシステムによる使用のための追加のデータ記憶容量をプロビジョニングするために使用することができる。いくつかの実施例において、コンピューティングリソースプロバイダは、仮想コンピュータシステムサービスの仮想コンピュータシステムへ論理的にマウントすることができる仮想ブロック記憶デバイスをプロビジョニングすることができる。追加の使用もまた、本明細書に説明される多様な技法によって可能になる。
図1は、多様な実施形態を実践することができる環境100の説明例を示す。環境100において、コンピューティングリソースプロバイダ102は、多様なコンピューティングリソースサービスを、コンピューティングリソースプロバイダの顧客へ提供する。
コンピューティングリソースプロバイダ102は、1つ以上の顧客に代わって多様なコンピューティングリソースをホストする組織であってもよい。例えば、コンピューティングリソースプロバイダは、ハードウェアサーバ、データ記憶装置、ネットワークデバイス、本明細書に検討される他のデバイス、及びサーバラック、ネットワーク接続ケーブル等の他の機器等、多様なコンピューティングハードウェアリソースをホストするために使用される1つ以上の設備を運用することができる。コンピューティングリソースハードウェアは、1つ以上のサービスを運用するために、そのコンピューティングハードウェアリソースを利用することができる。そのようなサービスは、コンピューティングリソースプロバイダの顧客が物理的な機器に投資する必要性を削減または排除しながらも、顧客が、顧客の事業をサポートするためにコンピューティングリソースを遠隔的に管理することを可能にするサービスを含み得る。例示的なサービスは、多様なデータ記憶サービス(オブジェクトベースのデータ記憶サービス、アーカイブデータ記憶サービス、データベースサービス等)、プログラム実行サービス、及び他のサービスを含むが、これらに限定されない。サービスは、ウェブサイトの運用、組織をサポートするエンタープライズシステムの運用、分散コンピュータの使用及び/または他の活動等、広範な多様な活動をサポートするために顧客によって使用されてもよい。
したがって、図1に示されるように、環境100は顧客104を含む。コンピューティングリソースプロバイダ102の顧客104は、コンピューティングリソースプロバイダ102によって提供された多様なサービスを利用することができる。したがって、顧客104は、コンピューティングリソースプロバイダによってホストされた多様なコンピューティングリソースを有することができる。図1に示されるように、顧客104は、コンピューティングリソースプロバイダ102によってホストされたプロバイダによってホストされた顧客リソース106を有する。プロバイダによってホストされた顧客リソース106は、必ずしもではないが、1つ以上の仮想コンピュータシステム、1つ以上のデータ記憶装置、1つ以上のネットワーク機器、及び/または他のコンピューティングリソースを含むことができる。実施形態において、コンピューティングリソースプロバイダ102は、SCSIサービス108を提供する。
SCSIサービス108は、コンピューティングリソースプロバイダの顧客による使用のためのSCSIエンドポイントを提供するように集合的に構成された1つ以上のコンピューティングリソースを含むことができ、SCSIエンドポイントは、SCSIコマンドが伝送され、それに応じて処理されてもよい論理デバイスである。このため、例えば、顧客104は、コンピューティングリソースプロバイダ102によってホストされたSCSIエンドポイントに関する多様な操作を実施するためにSCSIサービス108を利用することができる。顧客は、いくつかの実施例において、SCSIプロトコルを利用する際にSCSIサービス108へコマンドを発行することができ、コマンドは、読み取りコマンド、書き込みコマンド、及び/または他のコマンド等のコマンドを含むことができる。
顧客104からコンピューティングリソースプロバイダ102へ発行されたコマンドは、顧客104がコンピューティングリソースプロバイダ102と通信するプロトコルを利用してカプセル化することができる。例えば、SCSIコマンドは、iSCSIプロトコルを利用して、顧客104から、コンピューティングリソースプロバイダ102のSCSIサービス108へ発行されてもよい。本開示の多様な実施形態に従い、顧客104は、1つ以上のデバイスを通じて、コンピューティングリソースプロバイダ102が、論理ユニット番号(LUN)によって識別された論理ユニットをプロバイダによってホストされた顧客リソース106へ追加することをリクエストするために、SCSIサービス108と相互作用することが可能である。論理ユニットは、デバイス(例えば、仮想デバイス)、すなわち、SCSIプロトコルまたはSCSIプロトコルをカプセル化する別のプロトコルによってアドレスが指定されるデバイスであってもよい。「論理ユニット」及び「LUN」という用語は同じ意味で使用され、それらの意味は文脈から明確であることに注意されたい。
顧客104は、リクエストをSCSIサービス108へ伝送することができ、SCSIサービス108は、LUN110をプロバイダによってホストされた顧客リソース106へ追加させるように構成されてもよい。リクエストは、ウェブサービス呼出し等、適切に構成されたAPI呼出しの形式で提出されてもよい。コンピューティングリソースプロバイダ102は、LUNに関する情報(すなわち、LUNによって識別された論理ユニットに関する情報)を用いて、顧客104からのLUNに対するリクエストに応答することができる。論理ユニットに関する情報は、例えば、顧客がLUNに関連して遂行されるSCSIコマンドを発行することを可能にするLUNを含むことができる。顧客からのSCSIコマンドは、例えば、顧客のためにプロビジョニングされた多数のLUNのうちの1つから選択すること等によって、SCSIサービス108がコマンドを適切に実行することを可能にするLUNを指定することができる。
図2は、本開示の多様な実施形態を実践することができる環境200の説明例を示す。図2に示された環境200は、図1を参照して上述したような構成要素を含むことができる。例えば、図2の環境200は、コンピューティングリソースプロバイダ202と、顧客204とを含む。コンピューティングリソースプロバイダ202及び顧客204は、図1を参照して上述したように構成されてもよい。図2に示されるように、顧客204は、インターネット206等の1つ以上の通信ネットワークを通じて、コンピューティングリソースプロバイダ202と通信することができる。顧客204からコンピューティングリソースプロバイダ202への一部の通信は、コンピューティングリソースプロバイダ202が、本明細書に説明される多様な技法またはそれらの変形に従って運用させることができる。
上記のように、コンピューティングリソースプロバイダ202は、その顧客に多様なコンピューティングリソースサービスを提供することができる。例えば、特定の図示例において、コンピューティングリソースプロバイダ202は、少なくとも4つのサービスを提供する。コンピューティングリソースプロバイダによって提供されるサービスは、この例において、オブジェクトベースのデータ記憶サービス208と、ブロックデータ記憶サービス210と、SCSIサービス212と、仮想コンピュータシステムサービス214とを含むが、本開示の全ての実施形態が、全てのそのようなサービスを含むことはなく、いくつかの実施形態において、追加のサービスが、本明細書に明示的に記載されるサービスに加えて、またはその代替として提供されてもよい。
オブジェクトベースのデータ記憶サービス208は、実施形態において、顧客のためにデータを記憶するように集合的に動作するコンピューティングリソースの集合を含む。オブジェクトベースのデータ記憶サービス208によって記憶されるデータは、データオブジェクトに体系化されてもよい。データオブジェクトは、おそらく、サイズに関する所定の制約を除き、任意のサイズを有することができる。このため、データ記憶サービスは、異なるサイズの無数のデータオブジェクトを記憶することができる。オブジェクトベースのデータ記憶サービスは、データオブジェクトをデータオブジェクトの識別子と関連付けるキーバリューストアであってもよく、データオブジェクトの識別子は、顧客204によって、オブジェクトベースのデータ記憶サービス208によって記憶されたデータオブジェクトを読み出す、またはデータオブジェクトに関する他の操作を実施するために使用されてもよい。データ記憶サービスへのアクセスは、適切に構成されたAPI呼出しを通じてであってもよい。さらに、いくつかの実施形態において、データ記憶サービスによって記憶されたデータオブジェクトは、データオブジェクト及び/またはオブジェクトの論理データコンテナのキーを符号化することができる一意のURLを使用してアドレス指定可能である。
実施形態において、ブロックデータ記憶サービス210は、仮想コンピュータシステムサービス214によって提供される仮想コンピュータシステムとともに使用するためのブロックレベル記憶容量(たとえば、仮想ブロック記憶デバイス)を提供する。ブロックデータ記憶サービス210は、例えば、仮想コンピュータシステムのためにデータを持続的に記憶するために仮想ブロックデバイスをプロビジョニングするために使用されてもよい。仮想ブロックデバイスは、仮想コンピュータシステムが、仮想ブロックデバイスがあたかも(例えば、シリアルATA(SATA)インターフェースを通じて)物理的に接続されているように、仮想ブロックデバイスと相互作用することを可能にするために、仮想コンピュータシステムに論理的にマウントすることができる。ブロックデータ記憶サービス210は、多様な理由のために、オブジェクトベースのデータ記憶サービスと相互作用することができる。例えば、ブロックデータ記憶サービス210によって提供される、対応時点でのブロックデバイスを表す情報であり得る、ブロックデバイスのスナップショットは、オブジェクトベースのデータ記憶サービス内のデータオブジェクトとして記憶されてもよい。この様式において、仮想ブロックデバイス内に記憶されたデータは、対応する持続的かつ永久的に記憶されたバックアップを有することができる。
SCSIサービス212は、実施形態において、論理ユニットをプロビジョニングし、かつプロビジョニングされた論理ユニットと関係するSCSIコマンドを処理するように集合的に構成されたコンピューティングリソースの集合を含むサービスである。実施形態において、SCSIサービス212は、顧客204が、顧客204のためにプロビジョニングされたLUNのSCSIコマンドを提出することを可能にする、顧客204へ露出されたインターフェースと共に構成される。SCSIコマンドは、顧客204とSCSIサービス208との間の通信が行われる様式に従って、別のプロトコルでカプセル化することができる。図2の特定の図示例において、顧客204からのSCSIコマンドは、インターネット206を介して、顧客204によってSCSIサービス212に提供されてもよい。したがって、SCSIコマンドは、iSCSIプロトコルを使用してカプセル化されてもよい。SCSIサービスはまた、受信されたSCSIコマンドを処理し、かつ受信されたコマンドに従って永久的にデータを記憶させるように構成されてもよい。例えば、SCSIコマンドが書き込みコマンドである場合、SCSIサービスは、コマンドによって書き込まれるように命令されたデータを(それ自体、または別のデータ記憶サービスを使用するかのいずれかによって)持続するように構成される。
仮想コンピュータシステムサービス214は、実施形態において、コンピューティングリソースプロバイダ202の顧客のために、仮想コンピュータシステムをホストするように集合的に構成されたコンピューティングリソースの集合である。コンピューティングリソースプロバイダ202の顧客は、コンピューティングリソースプロバイダ202によって運用される物理的コンピューティングデバイス上でホストされる仮想コンピュータシステムをプロビジョニングかつ運用するために、仮想コンピュータシステムのサービスと相互作用することができる。仮想コンピュータシステムは、ウェブサイトをサポートしているサーバとして運用するため等、多様な目的のために使用することができる。以下にさらに詳細を検討するように、顧客204のLUNに対応するデータは、仮想コンピュータシステムサービス214によって提供された仮想コンピュータシステムへ論理的にマウントすることができるブロックデータ記憶サービス210を使用して、記憶容量をプロビジョニングするために使用されてもよい。この様式において、仮想コンピュータシステムサービス214を使用してプロビジョニングされた仮想コンピュータシステムは、ブロックデバイスがあたかも仮想コンピュータシステム自体の構成要素であるかのように、プロビジョニングされたブロックデバイスを利用することが可能である。
顧客204は、実施形態において、その制御下に多様なコンピューティングリソースを有することができ、顧客204のコンピューティングリソースのいくつかまたは全ては、顧客によって、及び/または顧客204の代わりの第三者によってホストされてもよい。図2に示された例において、顧客204は、ストレージエリアネットワーク(SAN)216を含む。SAN216は、ホストの立場からは、1つ以上のブロック記憶デバイスが、あたかもホストにローカルに接続されているように動作するように、ホストにアクセス可能であってもよい、集約されたブロックレベルデータ記憶へのアクセスを提供するように集合的に構成されたコンピューティングリソースの集合を含むことができる。SAN216は、例えば、複数の論理ユニットを実装することができる。ホストは、例えば、(例えば、論理ユニットのLUNによって)特定の論理ユニットを指定するSCSIコマンドを発行することができ、SANは、コマンドを遂行するために適切であるSANの物理的データ記憶デバイスへコマンドを送る。SANは、多様なデータ記憶技法を利用する多様な構成要素を含むことができる。例えば、SANは、データ耐久性の目的のためにハードウェア独立ディスク冗長アレイ(RAID)のコントローラを含むことができる。
実施形態において、SAN216は、ディスクアレイ218及びスイッチ220等の多様な構成要素を含む。ディスクアレイ218は、ホストが、ディスクアレイ218のディスクによって集合的に記憶されたデータに関する多様な操作を実施することを可能にするように、スイッチ220によって一緒にネットワーク接続されているハードディスクまたはソリッドステート記憶デバイス等のデータ記憶デバイスの集合を含むことができる。「ディスクアレイ」218の用語は、説明の目的のために使用されるが、本開示の多様な実施形態は、回転磁気媒体を利用する記憶デバイスの集合に限定されないことに注意されたい。例えば、ソリッドステートドライブ(SSD)及び/または磁気テープもまた、多様な実施形態において使用されてもよい。実施形態において、スイッチ220は、ファイバチャネルプロトコル(FCP)を介してSCSIコマンドを送るように構成されたマルチレイヤディレクタスイッチ(MDSまたはファイバチャネルスイッチ)である。
図204の例において、注記のように、顧客は、複数のホスト222を含み、SANルータ224(または、一般にIP等の1つのプロトコルと、SCSI等の記憶のために使用される通信プロトコルとの間の通信を変換する任意のストレージルータ)を通じてSANと通信する。ホストは、SAN216のデータ記憶を利用するように構成される、物理的または仮想であり得る、サーバコンピュータシステム等のコンピュータシステムであってもよい。ホスト222は、例えば、SANによって実装された容量から起動することができる。ホスト222は、1つ以上のデータ操作(作成、読み取り、更新、及び/または消去操作等)を実施する目的のために、SAN216に対してSCSIコマンドを発行することができる。ホスト222はまた、確認応答及びエラーメッセージ等、スイッチ220及びSANルータ224を通じて、SANからSCSI通信を受信することもできる。
SANルータ224は、複数のSAN、または図2に示されるように、1つのSAN及び1つの遠隔エンドポイントを含む等の複数のエンドポイントへの通信を送るように、ハードウェア及び/またはソフトウェアによって構成されたコンピューティングデバイスであってもよい。例えば、SAN216にアドレス指定されたSCSIコマンドを含む通信は、SANルータ224を通じてSAN216へ提供されてもよい。SANルータ224は、SCSIコマンドをスイッチ220へ転送することができ、スイッチ220は、コマンドをディスクアレイ218の適切なディスクへ提供する。以下にさらに詳細を検討するように、SANルータ224はまた、SCSIサービス212の顧客204による利用を可能にするために、通信をSCSIサービス212に提供することもできる。例えば、以下にさらに詳細を検討するように、SANルータ224に発行された書き込みコマンドは、SANルータ224によって、ディスクアレイ218の適切な記憶デバイスへ転送するためにスイッチ220へ、及びSCSIサービス212への両方に提供されてもよい。SANルータは、コマンドが、SAN216を介して、及びインターネット206等の別のネットワークを介しての両方で、SCSIサービス212に提供することができるように、適切なプロトコルにSCSIコマンドをカプセル化する等、追加の操作を実施するように構成されてもよいことに注意されたい。さらに、SANルータ224は、広域ネットワーク(WAN)加速化に関与する操作を実施すること等によって、多様な最適化動作に参加するように構成されてもよい。
本明細書に説明される全ての環境と同様に、変形は、本開示の範囲内であると考えられる。例えば、図2は、1つ以上のホストが、SCSIコマンドを適切に実行するSANへ、SCSIコマンドを発行する環境を示す。しかしながら、本明細書に説明される技法は、多様な状況において適用可能であることに注意されたい。例えば、多様な実施形態において、SCSIサービスは、iSCSIコマンドが受信される環境についてわからない。概して、SCSIサービスは、コマンドを発行するように構成された任意のデバイスから、iSCSIコマンドを受信することができる。例えば、iSCSIコマンドは、サーバコンピュータシステム、デスクトップコンピュータシステム、ノートブック(ラップトップ)コンピュータシステム、タブレットコンピュータシステム、移動通信デバイス(例えば、スマートフォン)及び/またはネットワークを介してSCSIサービスに通信する能力を備える他のデバイス等、多種のデバイスによって発行されてもよい。以下に記載するように、デバイスは、iSCSIを使用してコマンドをカプセル化すること等によって、ローカル記憶デバイス(例えば、ハードドライブ)に送信されたコマンドを傍受し、コマンドをSCSIサービスにレプリケートするプログラミングモジュールを実行することができる。さらに、SCSIサービスに送信されたコマンドは必ずしもレプリケートされない。SCSIサービスはLUNをプロビジョニングするので、SCSIサービスは、いくつかの実施形態において、遠隔データ記憶デバイスとして使用することができる。デバイスは、例えば、ローカル記憶デバイスへコマンドを発行することなく、iSCSIコマンドをSCSIサービスへ伝送することができる。また、SCSI及び関係するプロトコル(例えば、iSCSI)は、説明の目的のために本開示全体で広範囲に使用されるが、本開示の範囲は必ずしも、本明細書に明示的に記載されるプロトコルに限定されないことにも注意されたい。
上記のように、本開示に従うSCSIサービスは、レプリケートされたSCSIコマンドを遠隔的に実施する能力を提供する。したがって、SCSIサービスは、SCSIコマンドの受信及び受信されたSCSIコマンドの実行を可能にするために適切なコンピューティングリソースを含むことができる。図3は、実施形態に従うSCSIサービス300等を表す説明図例を示す。SCSIサービス300は、例えば、図1または2を参照して上述したSCSIサービスであってもよい。上記のように、SCSIサービスは、本明細書に説明したような多様な方式で動作するように集合的に構成されたコンピュータリソースの集合を含むことができる。例えば、実施形態において、SCSIサービス300は、SCSIサービスの操作を可能にする複数のサブシステムを含む。例えば、SCSIサービス300は、顧客インターフェース302を含む。顧客インターフェース302は、SCSIサービス300のサブシステムによって実装することができる。顧客インターフェース302は、顧客が、SCSIサービス300を利用するために、SCSIサービスと通信することができる機構を提供することができる。実施形態において、顧客インターフェース302は、遠隔的に生成されたAPI呼出しが、SCSIサービス300に提出されることを可能にする。そのようなAPI呼出しは、例えば、ウェブサービス呼出しであってもよい。したがって、SCSIサービス300は、顧客インターフェース302を実装するために使用される1つ以上のウェブサーバを含むことができる。API呼出しは、例えば、SCSIサービス300をホストしているコンピューティングリソースプロバイダに、LUNをプロビジョニングする(すなわち、論理ユニットをプロビジョニングする)というリクエスト、ならびに/あるいはLUNのプロビジョニングの解除、LUNからの記憶容量のプロビジョニング、及び/または他の操作等の他の操作を実施するというリクエストを提出することのために使用することができる。顧客インターフェース302はまた、iSCSI等の適切なプロトコルまたは別の適切なプロトコルにおいてカプセル化されたSCSIコマンドを受信するように構成することができる。SCSIコマンドをカプセル化する通信は、SCSIサービス300が、顧客の識別を識別すること、コマンドが認証済みであることを確実にすること、ならびにどのコマンドが実施されるか及び/またはその他SCSIコマンド及び他の通信が正しく実行/遂行されなければならず、遂行されることを確実にするかに関係して顧客の適切なLUNを識別することを可能にする情報を含むことができる。
実施形態において、SCSIサービス300は、リクエストプロセッサ304を含む。リクエストプロセッサ304は、顧客インターフェース302を通じて顧客によって提出されたリクエストを処理するように集合的に構成された1つ以上のコンピューティングデバイスを備えることができる、コンピュータシステムであってもよい。リクエストプロセッサ304は、例えば、他のサブシステム(適切に構成されたAPI呼出し等)への適切な通信を生成し、かつ他のシステムからの応答を処理するように構成されてもよい。いくつかの例において、リクエストプロセッサ304は、リクエストされた操作を正しく実施するために、データオブジェクト場所データストアを利用するように構成される。説明例のように、顧客インターフェース302が、SCSIコマンドを受信して、リクエストで識別された特定のデータブロックに対して書き込み操作を実施する場合、リクエストプロセッサ304は、この書き込みによって影響を受けるオブジェクトベースのデータ記憶サービスのデータオブジェクトを識別する、すなわち、特定のデータブロックのデータを含むデータオブジェクトを識別するために、データオブジェクト場所データストア306にアクセスすることができる。
リクエストプロセッサは、例えば、特定のブロックを含むデータオブジェクトを識別するために、顧客識別、LUN、及び特定のブロックの識別子を使用することができる。データオブジェクト場所データストア306は、(例えば、関係データベース表を使用することによって)顧客識別を顧客にプロビジョニングされた任意のLUNと関連付け、かつ顧客にプロビジョニングされた任意のLUNのブロックを、ブロックのデータを記憶するデータオブジェクトと関連付けるように構成することができる。例えば、リクエストプロセッサ304は、データオブジェクト場所データストア306が、クエリによって指定されたブロックのデータを含むデータオブジェクトのデータオブジェクト場所を識別することを可能にするために十分な情報を指定するデータオブジェクト場所データストア306へクエリを発行することができる。リクエストプロセッサ304は、該当する場合、複数のデータブロックに影響を与えるSCSIコマンド等に対して、複数のデータオブジェクトを識別するためにデータオブジェクト場所データストア306を利用するように構成することができることに注意されたい。さらに、データオブジェクト場所データストア306は、リクエストプロセッサ304が、適切なデータオブジェクトを取得することを可能にする情報を提供するように構成することができる。例えば、データオブジェクトがキーバリューストアに記憶される事例において、データオブジェクト場所データストア306は、データオブジェクトのキーを提供するように構成することができる。いくつかの実施形態において、キーは、オブジェクトベースのデータ記憶サービスウェブサービスインターフェースを使用して、データオブジェクトを読み出すウェブサービスリクエストにおいて使用することができるユニフォームリソースロケータ(URL)に指定されてもよい。
図3に示されるように、SCSIサービス300は、データ記憶サービスインターフェース308を含む。上記のように、多様な実施形態において、データブロックのデータは、それ自体がオブジェクトベースのデータ記憶サービスによって記憶されてもよいデータオブジェクトに記憶され、オブジェクトベースのデータ記憶サービスは、キーバリューストアとして動作することができる。したがって、データ記憶サービスインターフェース308は、リクエストプロセッサ304から、顧客インターフェース302を通じて受信されたSCSIコマンドによって影響を受けたデータブロックのデータを含むデータオブジェクトに関する操作を実施するコマンドを受信するように構成されてもよい。例えば、データ記憶サービスインターフェース308は、オブジェクトベースのデータ記憶サービスから1つ以上のデータオブジェクトを読み出すコマンドを受信するように構成されてもよい。1つ以上のデータオブジェクトの読み出しは、1つ以上のコマンドを生成することと、1つ以上のコマンドをオブジェクトベースのデータ記憶サービスへ伝送することを含むことができる。
したがって、データ記憶サービスインターフェースは、データオブジェクトをデータ記憶サービスに追加する、データ記憶サービスからデータオブジェクトを取得する、データ記憶サービスのデータオブジェクトを更新する、データ記憶サービスからデータオブジェクトを消去する、及び/または他の操作を実施する等、多様な操作を実施する目的のために、適切に構成されたAPI呼出しをデータ記憶サービスへ伝送するように構成された1つ以上のサーバを含むことができる。そのようなAPI呼出しは、オブジェクトベースのデータ記憶サービスが遠隔にホストされている場合、インターネット等の1つ以上のネットワークを介して、またはオブジェクトベースのデータ記憶サービスがローカルにホストされている場合はローカルエリアネットワークを介して、伝送することができる。加えて、本開示の多様な実施形態は、オブジェクトベースのデータ記憶サービスとは別に動作するSCSIサービスに関して検討されるが、SCSIサービスは、別のサービスを使用してデータオブジェクトを記憶することに加えて、またはその代わりにそれ自体データオブジェクトを記憶することができることに注意されたい。例えば、いくつかの実施形態において、SCSIサービス300は、SCSIサービス300をサポートする目的のために、SCSIサービス300によって動作されるキーバリューストアを含むことができる。しかしながら、SCSIサービスとは別に個別のデータ記憶サービスを使用すると、SCSIサービスをサポートするために別のデータ記憶サービスを構築する必要性なく、既存のデータ記憶システムを利用する能力等、無数の技術的利点を提供する。
図4は、実施形態に従うSCSIサービスを提供するための工程400の説明例を示す。図4に示される工程400及びその変形は、上記のSCSIサービスを提供するシステム等、任意の適切なシステムによって実施することができる。実施形態において、工程400は、論理ユニットをプロビジョニングするという顧客のリクエストを受信402することを含む。論理ユニットをプロビジョニングするというリクエストは、任意の適切な様式で受信されてもよい。例えば、上記のように、SCSIサービスを運用するコンピューティングリソースプロバイダは、ウェブサービスリクエストがウェブサービスインターフェースに提出されることを可能にするウェブサービスインターフェースを提供することができる。したがって、論理ユニットをプロビジョニングするというリクエストは、適切に構成されたウェブサービスリクエストまたは他のAPI呼出しとして受信されてもよい。加えて、リクエストは、多様な目的のために工程400を実施しているシステムによって要求され、かつ/または使用可能な任意の情報を含むことができる。例示的な情報は、リクエストが認証されているか(例えば、そのような認証を行うためにシステム内で権限を有するエンティティによって認証されている)を決定するためにシステムが使用することができる認証情報、コンピューティングリソースプロバイダの顧客のための顧客識別子であり得る、リクエストを提出したエンティティを識別する情報、論理ユニットのサイズを指定する情報、及び/または他の情報を含む。いくつかの実施形態において、リクエストは、プロビジョニングされた論理ユニットのために使用されるLUNを指定することができるが、工程400を実施しているシステムは、顧客からの指定なく、それ自体1つを割り当てることができる。
論理ユニットをプロビジョニングするという顧客リクエストの受信402後、工程400は、顧客のために論理ユニットをプロビジョニング404することを含むことができる。顧客のために論理ユニットをプロビジョニングすることは、顧客が、プロビジョニングされた論理ユニットに関してSCSIプロトコルを使用するSCSIサービスにリクエストを提出することを可能にするために、工程400を実施しているシステムによってホストされた1つ以上のコンピューティングリソースを構成することを含むことができる。論理ユニットをプロビジョニングすることは、例えば、1つ以上のサブシステムの1つ以上のレコードを更新することを含むことができるので、認証されたSCSIコマンドがLUNに対して受信されると、コマンドは、LUNに対して実行することができる。例として、受信されたコマンドを認証するためにデジタル署名を使用する実施形態において、LUNをプロビジョニングすることは、コマンドの認証を検証するために使用された署名キーによって任意の認証サブシステムを更新することを含むことができる。加えて、データベース内の1つ以上のアカウントは、LUNのために作成することができるので、例えば、データブロックのデータを符号化するデータオブジェクトを検索するのに使用可能な情報が検索可能である。一般に、論理ユニットをプロビジョニングすることは、認証されたSCSIコマンドが提出され、提出後に実行されることを可能にする任意の操作(プロビジョニングワークフローの実行によって調整されてもよい)を含むことができる。
LUNは、シンプロビジョニングされてもよいことに注意されたい。例えば、論理ユニットをプロビジョニングするというリクエストは、いくつかの実施形態において、1テラバイト等、論理ユニットのサイズを指定することができる。論理ユニットにおけるプロビジョニングは必ずしも、指定量の記憶空間、またはそれに関して論理ユニットの任意の記憶空間をプロビジョニングすることを含まない。LUN識別子(LUN ID)は、受信された顧客リクエスト402に応答して、顧客に提供406されてもよい。LUN IDは、例えば、論理ユニットがプロビジョニングされたという確認応答で提供406されてもよい。いくつかの実施形態において、LUN IDは、LUNである。そのような実施形態において、顧客がリクエストにLUNを指定した場合等、LUN IDは必ずしも顧客に提供されないことに注意されたい。他の実施形態において、LUN IDは、LUNとは異なり、エンティティであって、そのエンティティに代わって、対応する論理ユニットがプロビジョニングされている、そのエンティティのLUNの間で、及び/またはコンピューティングリソースプロバイダの全ての顧客にプロビジョニングされた全ての論理ユニット等のより大きい集合体の論理ユニットの間で、LUNを固有に識別する別の識別子であってもよい。
いくつかの実施形態において、例えば、LUN IDは、論理ユニットをプロビジョニングするという顧客リクエストに応答して、同期的に提供406される。しかしながら、LUN IDは、非同期的に提供されてもよく、必ずしも受信された顧客リクエストに応答しなくてもよい。LUN IDが顧客に提供406された後、工程400は、提供されたLUN IDを有する論理ユニット上で操作を実施するという顧客リクエストを処理することを含むことができる。操作を実施するリクエストは、SCSIプロトコルを使用して提供されてもよい。
本明細書に説明される全ての工程と同様に、工程400の変形は、本開示の範囲内であると考えられる。例えば、上記のように、いくつかの実施形態は、エンティティ(例えば、コンピューティングリソースプロバイダの顧客)が、WAN加速化の一部として多様な操作を実施するストレージルータを利用する環境を含む。そのようなストレージルータはしばしば、送信先の別のストレージルータが、WAN加速化に追加で参加する場合に、最適に要求または実施し、ストレージルータの製造元に特定であり得る多様な独自のプロトコルを利用する場合がある。したがって、多様な実施形態において、エンティティは、選択のために利用可能である1組の製造元及び/またはモデル番号から、製造元及び/またはモデル番号を選択すること等によって、使用されるストレージルータを(例えば、論理ユニットをプロビジョニングするというリクエストの一部として)指定することが可能である。工程400を実施しているシステムは、LUNをプロビジョニングする一部として、指定されたストレージルータをプロビジョニングすることができる。ストレージルータは、多様な方式でプロビジョニングされてもよい。例えば、指定された製造元の物理的経路決定デバイスは、リクエストしているエンティティから通信を受信するように構成されたネットワークに動作可能に接続されてもよい。別の例として、仮想コンピュータシステムまたは他のデバイスは、指定されたストレージルータのプロトコルを使用するようにプロビジョニングされてもよい。独自のプロトコルである場合、そのプロトコルは、ライセンスまたは他の許可の下で使用することができる。
論理ユニットがプロビジョニングされると、本開示の多様な実施形態は、SCSIコマンドを遠隔のエンドポイントへレプリケートすることが可能である。図5は、したがって、実施形態に従うSCSIコマンドを送るための工程の説明例を示す。工程500は、図2に関して上記に説明したSANルータ224、または、一般的には、ホストからのSCSIコマンドの通信経路にある任意のデバイスによって等、任意の適切なデバイスによって実施することができる。実施形態において、工程500は、上記及び/または以下に説明するようなコンピューティングデバイスであってもよい、ホストからのSCSI通信を受信502することを含む。SCSI通信は、適切なプロトコルを利用してカプセル化されてもよい、SCSIコマンドを含むことができる。例えば、コマンドがファイバチャネルを介して受信されると、SCSI通信は、ファイバチャネルプロトコル(FCP)を使用してカプセル化されたSCSIコマンドを含むことができる。別の例として、IPネットワークを介して、SCSI通信は、SCSIコマンドをカプセル化するiSCSIパケットとして受信されてもよい。
ホストからのSCSI通信の受信後、工程500は、SCSI通信が、SCSI通信で指定された特定のデータブロックに所定のデータを書き込むためのコマンドのような書き込みコマンドに対応するか決定504することを含むことができる。SCSI通信が書き込みコマンドに対応するか決定することは、SCSI通信からSCSIコマンドを抽出することと、通信が複数の利用可能な種類のSCSI書き込みコマンドのいずれかに対応するコマンドを含むかを確認することとを含むことができる。SCSI通信が書き込みコマンドを含まないと決定504された場合、工程500は、SCSI通信で指定された送信先への通信を送る506に進むことができる。例えば、SCSI通信がiSCSI通信である場合、iSCSI通信は、iSCSI通信に指定されたIPアドレスへ送られてもよい。
SCSI通信が確かに書き込みコマンドを含むと決定504された場合、通信はまた、上記のように、送信先へ送る506ことができる。加えて、書き込みコマンドは、iSCSIパケットにカプセル化508されてもよい。書き込みをiSCSIパケットにカプセル化することは、iSCSIパケットの受信者が書き込みコマンドを処理することを可能にするために適切な情報を有するiSCSIパケットを生成することを含むことができる。例えば、図2を参照すると、iSCSIパケットは、書き込みが適用されるLUNのLUN IDと、コマンドが認証され、遂行されなければいけないことを決定するために、iSCSIパケットのコンピューティングリソースプロバイダまたは他の受信者によって使用され得るアクセスキー及び秘密アクセスキー等の認証情報とを含むことができる。概して、iSCSIパケットは、iSCSIパケットが送られるSCSIサービスによってiSCSIが適切に処理されるような任意の方式で構成することができる。したがって、書き込みがiSCSIパケットにカプセル化されると、工程500は、図2に関して上記に説明したように、iSCSIパケットをSCSIサービスへ送る510ことを含むことができる。
本明細書に説明される全ての工程と同様に、変形は、本開示の範囲内であると考えられることに注意されたい。例えば、図5は、SANと関係して動作するストレージルータによって実施されてもよい工程を示すが、本開示の多様な実施形態は必ずしもストレージルータ及び/またはSANを利用しない。SCSI通信を発行したホスト(例えば、上記のようなデバイス)上のプログラミングモジュール(例えば、ソフトウェアエージェント)は、例えば、ホストで(すなわち内部的に)SCSI通信を傍受するように構成することができる。SCSI通信を傍受し、SCSI通信が書き込みコマンドを含むと決定すると、プログラミングモジュールは、iSCSIパケットの書き込みコマンドをSCSIサービスへ伝送することができる。ホストはまた、SCSI通信をSAN、ネットワークまたはローカル記憶デバイスへ伝送することができ、すなわち、ホストは、書き込みコマンドを検出すると、書き込みコマンドを2つの通信、つまり、1つを一次記憶デバイスへ、もう1つをSCSIサービスへ伝送することができる。さらに、上記のように、デバイスは必ずしもコマンドを2つ(または以上)の送信先へ送信する必要はない。例えば、いくつかの実施形態において、デバイスは、コマンドをローカル記憶装置、ネットワークストレージデバイス、またはSANへ送信することなく、一次記憶装置のためにSCSIサービスを使用することが可能である。
多様な実施形態において、ホストがSCSI通信を最初に、2つの通信を送信するストレージルータへ送信するかどうか、またはホストがそれ自体2つの通信を送信するかに関わらず、2つの異なる通信は、異なるプロトコルに従って送信することができる。一例において、例えば、ホストは、ファイバチャネルプロトコルにカプセル化されたSCSIコマンドを含むSCSI通信をSANへ送信することができ、iSCSIパケットをSCSIサービスへ送信することができる。しかしながら、ホストまたはストレージルータのいずれかから伝送された2つの通信は、同じプロトコルであってもよいことに注意されたい。例えば、SAN及びSCSIサービス両方がiSCSIプロトコルに従う通信を受信した場合、2つの通信は同じプロトコルを利用することができる。
加えて、多様な追加の操作は、図5に示された工程500に関して実施されてもよい。上記のように、例えば、いくつかのストレージルータは、WAN加速化に参加するための多様な操作を実施することができる。したがって、工程500は、多様な実施形態において、そのような操作を実施することを含むことができる。いくつかの例において、SCSIサービスのストレージルータは、工程500を実施しているデバイスからの圧縮されたネットワークトラフィックの圧縮を解除すること等によって、WAN加速化に追加で参加することができる。
SCSIコマンドを含む通信がSCSIサービスへ転送されると、通信は、該当する場合、SCSIコマンドが適切に実行されるように処理することができる。図6は、したがって、上記のようなSCSIサービスを提供するために使用することができる工程600の説明例を示す。工程600は、図3を参照して上記に説明されるSCSIサービスによる等、任意の適切なシステムによって実施することができる。実施形態において、工程600は、LUNに関する操作を実施するコマンドを受信すること602を含む。コマンドは、例えば、SCSIコマンドをカプセル化するiSCSIパケットの形式において受信することができる。SCSIコマンドは、LUN IDによって、操作が実施される対象となる論理ユニットを識別することができる。コマンドが受信された後、工程600は、受信されたコマンドの実施によって影響を受ける1つ以上のデータブロックを決定すること604を含むことができる。例えば、コマンドが、所定のデータをブロックに書き込むコマンドである場合、論理ブロックアドレス(LBA)等のブロックの識別子を決定することができる。影響されるデータブロックを決定することは、受信されたコマンドから、決定されたデータブロックの識別子(例えば、ブロックのLBA)にアクセスすることによって実施することができる。
コマンドが複数のデータブロックに影響を与え得る場合、例えば、LBA及びLBAによって指定されたブロックから開始する隣接するデータブロックの数を決定するためにSCSIコマンドの転送長を使用することによって、複数のデータブロックが決定されてもよい。1つ以上の影響を受けるデータブロックが決定604された場合、工程600は、1つ以上の影響を受けるデータブロックを含む1つ以上のデータオブジェクトを決定すること606を含むことができる。1つ以上のデータオブジェクトを決定すること606は、任意の適切な様式で実施されてもよく、それが実施される様式は、多様な実施形態に従って変わることができる。例えば、上記のように、SCSIサービスは、LUNのデータブロックをデータオブジェクトと関連付けるデータベースを維持することができる。データベースは、例えば、データブロックのLBAを、データブロックのデータを記憶するデータオブジェクトにアクセスするためにキーバリューストアにおいて使用可能なキーと関連付けることによって、データブロックを、データブロックのデータが記憶されているデータオブジェクトと関連付けることができる。したがって、1つ以上の適用可能なキーを指定するクエリは、適切なデータオブジェクト(単数または複数)にアクセスするためにデータベースに対して実行することができる。
適切な1つ以上のデータオブジェクトが決定606されると、工程600は、決定された1つ以上のデータオブジェクトにアクセスすること608を含むことができる。1つ以上の決定されたデータオブジェクトにアクセスすること608は、任意の適切な様式で実施することができる。例えば、実施形態において、データオブジェクトは、キーの値がデータオブジェクトと関連付けられるキーバリューストアに記憶される。データオブジェクトを決定することは、データオブジェクトのキーを決定することを含むことができ、キーは、キーバリューストアからデータオブジェクトを読み出すために使用することができる。加えて、キーバリューストアは、工程600を実施するサービスに依存しない別のサービスとして動作することができる。したがって、1つ以上の決定されたデータオブジェクトにアクセスすることは、他のサービスからデータオブジェクトを読み出すために、すなわち、データ記憶サービスから1つ以上のデータオブジェクトを読み出すというリクエストを伝送し、データオブジェクトの応答を受信するために、API呼出しを構成することと、適切に構成されたAPI呼出しを他のサービスへ伝送することとを含むことができる。
決定された1つ以上のデータオブジェクトがアクセス608されたら、リクエストされた操作を実施610することができる。リクエストされた動作を実施することは、多様な実施形態に従い異なる場合がある多様な方式で実施され得ることに注意されたい。例えば、リクエストされた操作が書き込み操作である場合、リクエストされた操作を実施することは、書き込み操作によって影響を受けるデータオブジェクトの一部、すなわち、影響を受けるブロックに対応するデータオブジェクトの一部を更新することを含むことができる。リクエストされた操作を実施することはまた、例えば、適切に構成されたAPI呼出しを介して、更新されたデータオブジェクトを、データオブジェクトを記憶するデータ記憶サービスへ伝送することによって、更新されたデータオブジェクトを記憶することも含むことができる。
書き込み操作は必ずしも、記憶装置からのデータオブジェクトの読み出しを要求しないことに注意されたい。例えば、特定のデータブロックのデータが、SCSIコマンドの実行時に再書き込みされる場合、古いデータが別のデータオブジェクトに残ったまま、新しいデータが新しいデータオブジェクトに書き込まれてもよい。他の操作(例えば、書き込み操作)は新しいデータオブジェクトを使用して実施することが可能であるため、所定の操作(例えば、読み取り操作)のみが、データオブジェクトの読み出しを要求してもよい。したがって、リクエストされた操作を実施することはまた、データブロックとデータオブジェクトとの間の関連付けをそれに応じて追跡するために使用されるメタデータを管理することも含むことができる。例えば、受信されたコマンドが特定のデータブロックの書き込みコマンドである場合、データベースはそれに応じて更新することができる。例えば、データブロックのエントリが既にデータベースにある場合、データベースは、データブロックのデータが書き込まれている、または書き込まれる予定であるデータオブジェクトとの関連付けを反映するように更新されてもよい。この様式において、データブロックのデータは、データベースに提供される情報を使用してアクセスすることができる。
上記のように、SCSIサービスの操作は、性能を最適化するために操作することができる。例えば、いくつかの実施形態において、キーバリューストアは、書き込まれたデータが存在する各データブロックに対するデータオブジェクトが存在するように利用される。すなわち、容量が1,000データブロックに書き込まれるデータを有する場合、SCSIサービスは、各データブロックに1つ、すなわち1,000のデータオブジェクトを記憶させることができる。追加のデータブロックが書き込まれるにつれて、追加のデータオブジェクトを作成することができる。しかしながら、いくつかの実施形態において、性能は、書き込みをバッファすることによって、かつ概して、それらの間で変動数のデータブロックに対してデータを有することができるデータオブジェクトを作成することによって、改善することができる。
データオブジェクトは、多様な実施形態に従い、多様な方式で構成することができる。いくつかの例において、例えば、データオブジェクトは、単純に、データブロックの対応するデータから形成されたビットのシークエンスからなる。データオブジェクトはまた、データオブジェクト内のデータブロックのデータの場所を可能にする追加の情報で構成することもできる。図8はそれに従って、多様な実施形態に従うデータオブジェクト800の説明例を示す。この特定の例において、データオブジェクト800は、ヘッダー802と、本体804とを含む。実施形態において、ヘッダー802は、本体804の1つ以上のブロックに対するデータの場所を可能にする情報であり得るブロック情報を含む。このように、例えば、SCSIサービスを使用して読み取り操作を実施するために、ヘッダー802内のブロック情報は、どのデータが本体804から読み取られるかを決定するために使用される必要がある。ヘッダーは、多様な実施形態に従い多様な方式でこの情報を符号化することができる。例えば、ヘッダーは、論理ブロックアドレスを、本体804のどのビットが対応するデータを含むかを識別する情報と関連付ける表を含むことができる。情報は、ビットを直接指定してもよく、またはデータオブジェクト内の特定のビットからのオフセットを指定することによる等、ビットを間接的に指定してもよい。表(または他の機構)内のLBAの位置もまた、対応するデータが本体804のどこで見出され得るかを示すことができる。例えば、データブロックは、多様な実施形態において、均一のサイズであるため、LBAのシークエンス内の3番目の位置のLBAは、対応するデータの場所が、2つのデータブロックに対応するビット数の後に発生する位置で見出されることを示すことができる。
データを書き込みバッファに追加704した後、工程700は、書き込みバッファがいっぱいであるかを決定706することを含むことができる。書き込みバッファがいっぱいであるかを決定706することは、バッファ内のデータ量をバッファの閾値と比較することによって、実施することができる。例えば、書き込みバッファが何らかの既定の値の80%を超える場合、書き込みバッファはいっぱいであると考えられてもよいが、書き込みバッファがいっぱいであるかを決定するために、閾値及び/または他の条件を使用することができる。書き込みバッファがいっぱいであると決定706された場合、工程700は、バッファ内のデータからデータオブジェクトを生成708することを含むことができる。バッファ内のデータからデータオブジェクトを生成することは、論理ブロックアドレス等、適切な情報を使用して、データブロック内部のデータの場所を可能にする様式でデータオブジェクトを生成することを含むことができる。データオブジェクトを構成する例示的方式を以下に検討する。
上記のように、本開示の多様な実施形態は、SCSIサービスの多様な使用を可能にする。図9は、例えば、容量内のデータを使用するために別のコンピュータシステムに論理的に接続され得る容量をプロビジョニングするために、SCSIサービスを通じて取得されるデータを利用するための工程900の説明例を示す。工程900は、上記のSCSIサービスによって等任意の適切なシステムによって、または概して、工程900の操作を実施するように構成される、コンピューティングリソースプロバイダの任意のサブシステムによって、実施されてもよい。実施形態において、工程900は、LUNから(すなわち、LUNによって識別された論理ユニットから)のデータ容量をプロビジョニングするというリクエストを受信すること902を含む。LUNを識別し、リクエストを認証するために使用される追加の情報を含むリクエストは、ウェブサービスまたはAPI呼出しの形式のように、任意の適切な様式で受信902することができる。LUNからのデータ容量をプロビジョニングするというリクエストを受信902した結果として、LUNのデータの容量プロビジョニング工程を開始904することができる。
データオブジェクト場所データストアが更新712された後、工程700は、書き込みバッファを空にする714ことを含むことができる。書き込みを書き込みバッファに追加704した後、書き込みバッファがいっぱいではないと決定706された場合、書き込みバッファの有効期限が切れているかの決定を行うことができる。書き込みバッファは、例えば、書き込みバッファがいっぱいであるかどうかに関わらず、書き込みバッファがデータを含む場合、データは上記のようにデータオブジェクトに記憶されるように有効期限を有することができる。書き込みバッファは、書き込みバッファを維持するシステムの誤動作がデータ破壊を発生させるリスクを低減するように選択された有効期限時間を有することができる。例えば、書き込みバッファは、データが空の状態から書き込みバッファに書き込まれた時から5秒の有効期限時間を有することができる。
書き込みバッファが空ではないか、そして有効期限が切れていないかを決定716することは、書き込みバッファの有効期限が切れていないことを決定716するまで、繰り返して実施することができる。書き込みバッファの有効期限が切れていると決定716した場合、工程700は、書き込みバッファからのデータを含むデータオブジェクトを生成708かつ記憶710することと、適切なデータオブジェクト場所データストアを更新し、かつ上記のように書き込みバッファを空にする714こととを含むことができる。書き込みコマンドが受信されると、工程700またはその変形はそれに応じて繰り返されてもよい。この様式において、データオブジェクトは必ずしも各書き込みに作成されないが、書き込みのデータが収集され、バッチでデータオブジェクトを生成するために使用される。さらに、データオブジェクトは、書き込みバッファがいっぱいであるかまたは有効期限切れのいずれかに起因して作成されてもよいため、データブロックのデータを記憶しているデータオブジェクトはサイズが異なり得る。
図8は、したがって、多様な実施形態に従うデータオブジェクト800の説明例を示す。この特定の例において、データオブジェクト800は、ヘッダー802と、本体804とを含む。実施形態において、ヘッダー802は、本体804の1つ以上のブロックに対するデータの場所の特定を可能にする情報であり得るブロック情報を含む。このように、例えば、SCSIサービスを使用して読み取り操作を実施するために、ヘッダー802内のブロック情報は、どのデータが本体804から読み取られるかを決定するために使用される必要がある。
図9は、容量をプロビジョニングするために、SCSIサービスを通じて取得されたデータを利用するための工程900の説明例を示す。工程900は、上記のSCSIサービスによって等任意の適切なシステムによって、または概して、工程900の操作を実施するように構成される、コンピューティングリソースプロバイダの任意のサブシステムによって、実施されてもよい。実施形態において、工程900は、LUNからのデータ容量をプロビジョニングするというリクエストを受信902することを含む。LUNを識別し、リクエストを認証するために使用される追加の情報を含むリクエストは、ウェブサービスまたはAPI呼出しの形式のように、任意の適切な様式で受信902することができる。LUNからのデータ容量をプロビジョニングするというリクエストを受信902した結果として、LUNのデータの容量プロビジョニング工程を開始904することができる。LUNデータの容量プロビジョニング工程を開始することは、任意の適切な様式で実施されてもよい。例えば、図2の例において、コンピューティングリソースプロバイダが、オブジェクトベースのデータ記憶サービス及びブロックデータ記憶サービスを含む場合、オブジェクトベースのデータ記憶サービスからのデータは、ブロックデータ記憶サービスから提供される容量をプロビジョニングするためにアクセスされ、かつ使用されてもよい。オブジェクトベースのデータ記憶サービスからのデータは、したがって、オブジェクトベースのデータ記憶サービスから、ブロックデータ記憶サービスへ転送されてもよい。初期化された容量の容量識別子は、図2の例において取得906されてもよく、例えば、SCSIサービスは、工程900を実施している場合、ブロックデータ記憶サービスからの識別子を含むことができる。容量識別子を取得906すると、工程900は、容量識別子を、工程900を実施しているコンピューティングリソースプロバイダの顧客等、受信された902リクエストを提出したエンティティに提供すること908を含むことができる。容量は、容量識別子が提供908され、容量が使用される前に、完全に初期化される必要がないことに注意されたい。例えば、オブジェクトベースのデータ記憶サービスから、容量をホストするブロックデータサービスへデータを転送することによって、容量がプロビジョニングされる例において、データの転送は、以下に検討するように、段階的な工程であってもよい。
LUNデータの容量プロビジョニング工程を開始することは、任意の適切な様式で実施されてもよい。例えば、図2の例において、コンピューティングリソースプロバイダが、オブジェクトベースのデータ記憶サービス及びブロックデータ記憶サービスを含む場合、オブジェクトベースのデータ記憶サービスからのデータがアクセスされ、かつ使用されて、ブロックデータ記憶サービスからデータをロードすることができる。データは、仮想または物理的ブロックデバイスにロードされてもよい。オブジェクトベースのデータ記憶サービスからのデータは、したがって、オブジェクトベースのデータ記憶サービスから、ブロックデータ記憶サービスへ転送されてもよい。初期化された容量の容量識別子が取得906されてもよい。図2の例において、例えば、SCSIサービスは、工程900を実施している場合、容量をプロビジョニングするブロックデータ記憶サービスから識別子を取得することができる。容量識別子を取得906すると、工程900は、容量識別子を提供908することを含むことができる。容量識別子は、例えば、工程900を実施しているコンピュータリソースプロバイダの顧客等、受信902されたリクエストを提出したエンティティへ提供されてもよい。これに加えて、または代替として、容量識別子は、仮想コンピュータシステムサービスによって提供された仮想コンピュータシステムへ容量を論理的にマウントする(例えば、仮想コンピュータシステムがあたかもローカルで接続されているかのように容量と相互作用することができるように、ネットワークを介して動作可能に接続する)ために、ブロックデータ記憶サービスと集合的に動作する仮想コンピュータシステムサービスへ提供されてもよい。
容量は、容量識別子が提供908され、容量が使用される前に、完全に初期化される必要がないことに注意されたい。例えば、オブジェクトベースのデータ記憶サービスから、容量をホストするブロックデータサービスへデータを転送することによって、容量がプロビジョニングされる例において、データの転送は、段階的な工程であってもよい。容量が、オブジェクトベースのデータ記憶サービスからのデータを使用してブロックデータ記憶サービスによってプロビジョニングされる状況において、容量内のデータに対する操作が実施される場合、データが既に容量内に存在するか、またはまだオブジェクトベースのデータ記憶サービスに存在するかのチェックが行われてもよい。データがオブジェクトベースのデータ記憶サービスに存在する場合、データは、操作を実施することができるように、オブジェクトベースのデータ記憶サービスから直ちにロードされてもよい。他の変形もまた、本開示の範囲内であると考えられる。
本開示の実施形態は、以下の付記の観点で説明することができる。
付記1.データを記憶するためのコンピュータ実装方法であって、
実行可能命令で構成された1つ以上のコンピュータシステムの制御下で、
ブロックレベル通信プロトコルを使用してアドレス決定可能な仮想記憶デバイスをプロビジョニングすることと、
ブロックレベル通信プロトコルに従って構成可能であり、かつプロビジョニングされた仮想記憶デバイスをアドレス指定する書き込みコマンドを受信することと、
受信された書き込みコマンドの少なくともサブセットの各書き込みコマンドに対して、少なくとも、
キーバリューデータストアのデータオブジェクトであって、データオブジェクトのキーを参照することによってキーバリューデータストアから読み出し可能である、データオブジェクトの一部として、書き込みコマンドのデータを持続させることと、
コマンドによって指定された1つ以上のデータブロックアドレスをキーと関連付けるようにデータストアを更新することと、によって書き込みコマンドを実行することと、を含む、コンピュータ実装方法。
付記2.ブロックレベル通信プロトコルが、スモールコンピュータシステムインターフェースプロトコルをさらに含む、付記1に記載のコンピュータ実装方法。
付記3.書き込みコマンドのデータが、データオブジェクトの一部として持続されるようにすることは、複数の書き込みコマンドのデータをデータオブジェクト内に集積することをさらに含む、付記1または2に記載のコンピュータ実装方法。
付記4.1つ以上のコンピュータシステムがさらに、コンピューティングリソースプロバイダによってホストされ、
コマンドがさらに、コンピューティングリソースプロバイダの顧客によって、コンピューティングリソースプロバイダから遠隔に生成される、付記1〜3のいずれか1項に記載のコンピュータ実装方法。
付記5.受信された書き込みコマンドがさらに、受信時に、別の通信プロトコルを使用してカプセル化される、付記1〜4のいずれか1項に記載のコンピュータ実装方法。
付記6.ブロックレベル通信プロトコルに従って構成された読み取りコマンドであって、データブロックアドレスを指定する、読み取りコマンドを受信し、かつプロビジョニングされたデータ記憶デバイスをアドレス指定することと、
読み取りコマンドに応答するデータが位置するデータオブジェクトのキーを、指定されたデータブロックアドレスに少なくとも部分的に基づいて決定するために、データストアを使用することと、
キーに対応するデータオブジェクトを読み出すために、決定されたキーを使用することと、
読み出されたデータオブジェクトから、読み取りコマンドに応答するデータを抽出することと、
読み取りコマンドに応答して、読み取りコマンドに応答する抽出されたデータを提供することと、をさらに含む、付記1〜5のいずれか1項に記載のコンピュータ実装方法。
付記7.データを記憶するためのコンピュータ実装方法であって、
実行可能命令で構成された1つ以上のコンピュータシステムの制御下で、
第1の通信プロトコルに従って構成された書き込みコマンドであって、データブロックの識別子を指定する、書き込みコマンドを受信することと、
キーバリューストアのデータオブジェクトであって、データオブジェクトと関連付けられたキーを使用してキーバリューストアから読み出し可能である、データオブジェクトの一部として書き込みコマンドのデータを持続させることと、
データストアにおいて、キーをデータブロックの識別子と関連付けることと、を含む、コンピュータ実装方法。
付記8.コマンドがさらに、スモールコンピュータシステムインターフェースコマンドを含み、第1の通信プロトコルが、スモールコンピュータシステムインターフェースプロトコルである、付記7に記載のコンピュータ実装方法。
付記9.1つ以上のコンピュータシステムがさらに、コンピューティングリソースプロバイダによってホストされ、
コマンドが、コンピューティングリソースプロバイダであって、コンピューティングリソースプロバイダからコマンドが受信された、コンピューティングリソースプロバイダの顧客によって遠隔的に生成される、付記7または8に記載のコンピュータ実装方法。
付記10.書き込みコマンドが、ストレージエリアネットワークへ伝送されたコマンドのレプリケーションをさらに含む、付記7〜9のいずれか1項に記載のコンピュータ実装方法。
付記11.データブロックの識別子を指定する読み取りコマンドを受信することと、
キーを決定するために識別子を使用することと、
データオブジェクトを読み出すためにキーを使用することと、
読み出されたデータオブジェクトから書き込みコマンドのデータを抽出することと、
読み取りコマンドに応答して、抽出されたデータを提供することと、をさらに含む、付記7〜10のいずれか1項に記載のコンピュータ実装方法。
付記12.データオブジェクトが、他のデータブロックのデータをさらに含む、付記7〜11のいずれか1項に記載のコンピュータ実装方法。
付記13.システムであって、
1つ以上のプロセッサと、
1つ以上のプロセッサによって実行されると、少なくとも、
ブロックレベルデータ記憶インターフェースを提供することと、
ブロックレベルデータ記憶インターフェースに対して、ブロックレベルコマンドを受信することと、
受信されたブロックレベルコマンドに従って、データオブジェクト内にデータブロックを持続的に記憶するためにオブジェクトベースのデータ記憶システムを利用することと、によって、システムにブロックレベル記憶デバイスを模倣させる命令を含むメモリと、を備える、システム。
付記14.オブジェクトベースのデータ記憶システムが、データオブジェクトをそれぞれのキーと関連付けるキーバリューストアをさらに備え
命令がさらに、システムに、データブロックアドレスをキーバリューストアのキーと関連付けるマップを維持させる、付記13に記載のシステム。
付記15.ブロックレベルコマンドが、スモールコンピュータシステムインターフェースコマンドをさらに含む、付記13または14に記載のシステム。
付記16.オブジェクトデータ記憶システムを利用することが、オブジェクトベースのデータ記憶システムへのアプリケーションプログラミングインターフェース呼出しを構成することをさらに含む、付記13〜15のいずれか1項に記載のシステム。
付記17.データオブジェクトにデータブロックを持続的に記憶することが、データオブジェクトの少なくともサブセットの各データオブジェクトに対して、データオブジェクト内に複数のデータブロックを記憶することをさらに含む、付記13〜16のいずれか1項に記載のシステム。
付記18.命令がさらに、システムに、複数のエンティティのためのブロックレベル記憶デバイスを模倣させる、付記13〜17のいずれか1項に記載のシステム。
付記19.1つ以上のコンピュータ可読記憶媒体であって、システムの1つ以上のプロセッサによって実行されると、システムに、
データブロック及びデータブロックのデータを指定する書き込みコマンドを受信することと、
データブロックのデータが、データオブジェクトであって、1つ以上のデータブロックの論理コンテナである、データオブジェクトを記憶する記憶システム内に持続的に記憶されるようにさせることと、
データブロックの識別子からデータオブジェクトを検索するのに使用可能な情報を維持することと、を行わせる命令をその中に記憶している、1つ以上のコンピュータ可読記憶媒体。
付記20.書き込みコマンドがさらに、スモールコンピュータシステムインターフェースプロトコルに従って構成される、付記19に記載の1つ以上のコンピュータ可読記憶媒体。
付記21.データ記憶システムが、キーバリューストアをさらに備え、
情報がさらに、データブロックのブロック識別子を、データ記憶システムからデータオブジェクトを読み出すのに使用可能なキーと関連付ける、付記19または20に記載の1つ以上のコンピュータ可読記憶媒体。
付記22.データオブジェクトが、データブロックに加えて少なくとも1つのデータブロックをさらに含む、付記19〜21のいずれか1項に記載の1つ以上のコンピュータ可読記憶媒体。
付記23.命令が、1つ以上のプロセッサによって実行されると、システムに、
データブロックを指定する読み取りコマンドを受信することと、
読み取りコマンドに応答して、データオブジェクトからデータブロックを取得することによってデータブロックを提供することと、をさらに行わせる、付記19〜22のいずれか1項に記載の1つ以上のコンピュータ可読記憶媒体。
付記24.データブロックが、スモールコンピュータシステムインターフェースプロトコルによってアドレス指定可能である論理ユニットをさらに含み、
コマンドがさらに、システムが複数の論理ユニットの中から論理ユニットを区別することを可能にする情報とともに受信される、付記19〜23のいずれか1項に記載の1つ以上のコンピュータ可読記憶媒体。
付記25.データを記憶するためのコンピュータ実装方法であって、
実行可能命令で構成された1つ以上のコンピュータシステムの制御下で、
第1の通信プロトコルに従って構成された書き込みコマンドであって、データブロックの識別子を指定する、書き込みコマンドを受信することと、
キーバリューストアのデータオブジェクトであって、データオブジェクトと関連付けられたキーを使用してキーバリューストアから読み出し可能である、データオブジェクトの一部として書き込みコマンドのデータを持続させることと、
データストアにおいて、キーをデータブロックの識別子と関連付けることと、を含む、コンピュータ実装方法。
付記26.コマンドがさらに、スモールコンピュータシステムインターフェースコマンドを含み、第1の通信プロトコルが、スモールコンピュータシステムインターフェースプロトコルである、付記25に記載のコンピュータ実装方法。
付記27.1つ以上のコンピュータシステムがさらに、コンピューティングリソースプロバイダによってホストされ、
コマンドが、コンピューティングリソースプロバイダであって、コンピューティングリソースプロバイダからコマンドが受信された、コンピューティングリソースプロバイダの顧客によって遠隔的に生成される、付記25または26に記載のコンピュータ実装方法。
付記28.書き込みコマンドが、ストレージエリアネットワークへ伝送されたコマンドのレプリケーションをさらに含む、付記25〜27のいずれか1項に記載のコンピュータ実装方法。
付記29.データブロックの識別子を指定する読み取りコマンドを受信することと、
キーを決定するために識別子を使用することと、
データオブジェクトを読み出すためにキーを使用することと、
読み出されたデータオブジェクトから書き込みコマンドのデータを抽出することと、
読み取りコマンドに応答して、抽出されたデータを提供することと、をさらに含む、付記25〜28のいずれか1項に記載のコンピュータ実装方法。
付記30.データオブジェクトが、他のデータブロックのデータをさらに含む、付記25〜29のいずれか1項に記載のコンピュータ実装方法。
付記31.システムであって、
1つ以上のプロセッサと、
1つ以上のプロセッサによって実行されると、少なくとも、
ブロックレベルデータ記憶インターフェースを提供することと、
ブロックレベルデータ記憶インターフェースに対して、ブロックレベルコマンドを受信することと、
受信されたブロックレベルコマンドに従って、データオブジェクト内にデータブロックを持続的に記憶するためにオブジェクトベースのデータ記憶システムを利用することと、によって、システムにブロックレベル記憶デバイスを模倣させる命令を含むメモリと、を備える、システム。
付記32.オブジェクトベースのデータ記憶システムが、データオブジェクトをそれぞれのキーと関連付けるキーバリューストアをさらに備え
命令がさらに、システムに、データブロックアドレスをキーバリューストアのキーと関連付けるマップを維持させる、付記31に記載のシステム。
付記33.ブロックレベルコマンドが、スモールコンピュータシステムインターフェースコマンドをさらに含む、付記31または32に記載のシステム。
付記34.オブジェクトデータ記憶システムを利用することが、オブジェクトベースのデータ記憶システムへのアプリケーションプログラミングインターフェース呼出しを構成することをさらに含む、付記31〜33のいずれか1項に記載のシステム。
付記35.データオブジェクトにデータブロックを持続的に記憶することが、データオブジェクトの少なくともサブセットの各データオブジェクトに対して、データオブジェクト内に複数のデータブロックを記憶することをさらに含む、付記31〜34のいずれか1項に記載のシステム。
付記36.命令がさらに、システムに、複数のエンティティのためのブロックレベル記憶デバイスを模倣させる、付記31〜35のいずれか1項に記載のシステム。
付記37.命令がさらに、システムに、データブロックを検索するためにデータオブジェクトを指定するウェブサービスアプリケーションプログラミングインターフェース呼出しを提出するのに使用可能な情報を維持させる、付記31〜36のいずれか1項に記載のシステム。
付記38.命令がさらに、システムに、
データブロックを指定する読み取りコマンドを受信することと、
読み取りコマンドに応答して、オブジェクトベースのデータ記憶システムに持続的に記憶されたデータオブジェクトからデータブロックを取得することによって、データブロックを提供することと、を行わせる、付記31〜37のいずれか1項に記載のシステム。
付記39.命令がさらに、システムに、
データブロックが、スモールコンピュータシステムインターフェースプロトコルによってアドレス指定可能である論理ユニットであり、
コマンドが、システムが複数の論理ユニットの中から論理ユニットを区別することを可能にする情報とともに受信されることを行わせる、付記38に記載のシステム。
図10は、多様な実施形態に従う態様を実装するための例示的環境1000の態様を示す。理解されるように、説明の目的でウェブベースの環境が使用されるが、多様な実施形態を実装するために、必要に応じて異なる環境が使用されてもよい。その環境は、適切なネットワーク1004を介してリクエスト、メッセージ、または情報を送信かつ受信し、デバイスのユーザに情報を伝達するように動作可能な任意の適切なデバイスを含み得る、1つの電子クライアントデバイス1002を含む。そのようなクライアントデバイスの例として、パーソナルコンピュータ、携帯電話、手持ち式メッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、パーソナルデータアシスタント、埋め込み式コンピュータシステム、電子ブックリーダー等が挙げられる。ネットワークとして、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、または任意の他のそのようなネットワーク、もしくはそれらの組み合わせを含む、任意の適切なネットワークを挙げることができる。そのようなシステムに使用される構成要素は、選択されるネットワークの種類及び/または環境に少なくともある程度依存し得る。そのようなネットワークを介して通信するためのプロトコル及び構成要素は周知であり、本明細書において詳細に議論されない。ネットワーク上での通信は、有線または無線接続及びこれらの組み合わせによって有効にされ得る。この例において、環境がリクエストを受信し、かつそれに応答してコンテンツをサービスするためのウェブサーバ1006を含むように、ネットワークはインターネットを含むが、他のネットワークについては、当業者には明らかなように、同様の目的をサービスする代替のデバイスを使用することができる。
例示的な環境は、少なくとも1つのアプリケーションサーバ1008と、データストア1010とを含む。連鎖されるか、またはさもなければ構成されてもよい、適切なデータストアからデータを入手する等のタスクを実行するために相互作用し得る、いくつかのアプリケーションサーバ、層、もしくは他の要素、プロセス、または構成要素が存在し得ることを理解されたい。サーバは、本明細書に使用されるように、ハードウェアデバイスまたは仮想コンピュータシステム等、多様な方式で実装されてもよい。いくつかの状況において、サーバは、コンピュータシステム上で実行されているプログラミングモジュールを参照することができる。本明細書で使用される「データストア」という用語は、データの記憶、アクセス、及び読み出し能力のある任意のデバイスまたはデバイスの組み合わせを指し、任意の標準、分散型、またはクラスタ化環境において、任意の組み合わせ及び任意の数のデータサーバ、データベース、データ記憶デバイス、及びデータ記憶媒体を含んでもよい。アプリケーションサーバは、クライアントデバイスの1つ以上のアプリケーションの態様を実行するために、必要に応じて、アプリケーションのデータアクセス及びビジネスロジックのうちのいくつか(多数の場合もある)を処理する、データストアと統合するための任意の適切なハードウェア及びソフトウェアを含むことが可能である。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供することができ、ユーザに転送される文字、図、音声、及び/またはビデオ等のコンテンツを生成することができ、そのコンテンツを、本例において、ハイパーテキストマークアップ言語(「HTML」)、拡張可能マークアップ言語(「XML」)、または別の適切な構造化された言語の形態で、ウェブサーバによってユーザにサービスすることができる。全てのリクエスト及び応答の処理、ならびにクライアントデバイス1002とアプリケーションサーバ1008との間のコンテンツの送達は、ウェブサーバによって処理することができる。本明細書の他の箇所で議論されるように、本明細書で検討される構造化されたコードは、任意の適切なデバイスまたはホストマシン上で実行することができるため、ウェブ及びアプリケーションサーバは必要とされず、単に例示の構成要素に過ぎないことを理解されたい。さらに、本明細書において単一のデバイスによって実施されると記載される操作は、その他状況から明確である場合を除き、分散システムを形成することができる複数のデバイスによって集合的に実施されてもよい。
データストア1010は、本開示の特定の態様に関するデータを記憶するための、いくつかの別々のデータテーブル、データベース、または他のデータ記憶機構及び媒体を含むことができる。例えば、示されたデータストアは、本番データ1012及びユーザ情報1016を記憶するための機構を含むことができ、これらは、本番環境でコンテンツを提供するために使用することができる。データストアはまた、報告書作成、分析または他のこのような目的のために使用することができる、ログデータ1014を記憶するための機構も含むことが示される。ページイメージ情報等のデータストアに記憶されること、及び権限情報にアクセスすることが必要になる可能性があり、必要に応じて上記の列挙された機構のうちのいずれか、またはデータストア1010の追加の機構に記憶することができる、多くの他の態様が存在する可能性があることを理解されたい。データストア1010は、それと関連するロジックを通じて、アプリケーションサーバ1008から命令を受信し、かつそれに応答してデータを取得、更新、またはさもなければ処理するように動作可能である。一例において、ユーザは、ユーザによって操作されるデバイスを通じて、所定の種類の項目についての検索リクエストを提出する場合がある。この場合、データストアは、ユーザの身元を検証するためにユーザ情報にアクセスする場合があり、その種類の項目についての情報を取得するためにカタログ詳細情報にアクセスすることができる。情報は、次いで、ユーザがユーザデバイス1002上のブラウザを介して表示することが可能であるウェブページ上の結果リスト等において、ユーザに返すことができる。関心の特定の項目の情報は、ブラウザの専用ページまたはウィンドウに表示することができる。しかしながら、本開示の実施形態は必ずしもウェブページの状況に限定されず、リクエストが必ずしもコンテンツに対するリクエストではない、一般的なリクエストを処理することにより一般的に適用可能であってもよいことに注意されたい。
それぞれのサーバは、典型的には、そのサーバの一般管理及び動作についての実行可能なプログラム命令を提供するオペレーティングシステムを含み、かつ典型的には、サーバのプロセッサによって実行されると、サーバがその目的とする機能を実行することを可能にする命令を記憶するコンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読み取り専用メモリ等)を含む。サーバのオペレーティングシステム及び一般的な機能性の好適な実装例は、既知であるか、または市販されており、当業者によって、特に本明細書における本開示を考慮して容易に実装される。
一実施形態の環境は、1つ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続されるいくつかのコンピュータシステム及び構成要素を利用する分散型コンピューティング環境である。しかしながら、当業者は、そのようなシステムが、図10に図示されるよりも少ないまたは多い数の構成要素を有するシステムにおいて同等に良好に動作することができることを理解するであろう。したがって、図10のシステム1000の描写は、本質的に例示的であり、かつ本開示の範囲を限定しないと見なされるべきである。
多様な実施形態は、いくつかの場合には、任意のいくつかのアプリケーションを操作するために使用することができる、1つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含むことができる、多種多様な動作環境で実装することができる。ユーザまたはクライアントデバイスは、標準のオペレーティングシステムを稼動しているデスクトップ、ラップトップまたはタブレットコンピュータ等のいくつかの汎用パーソナルコンピュータ、ならびにモバイルソフトウェアを稼動し、いくつかのネットワーク及びメッセージングプロトコルをサポートすることが可能であるセルラー、ワイヤレス、及びハンドヘルドデバイスのうちのいずれかを含むことができる。そのようなシステムはまた、多種多様な市販のオペレーティングシステム、ならびに開発及びデータベース管理等の目的の他の周知のアプリケーションのうちのいずれかを稼動するいくつかのワークステーションを含むことができる。これらのデバイスはまた、ネットワークを介して通信することが可能なダミー端末、シンクライアント、ゲームシステム、及び他のデバイス等、他の電子デバイスを含むことができる。
本開示の多様な実施形態は、伝送制御プロトコル/インターネットプロトコル(「TCP/IP」)多様な層のオープンシステム相互接続(「OSI」)モデルにおいて動作するプロトコル、ファイル転送プロトコル(「FTP」)、ユニバーサルプラグアンドプレイ(「UpnP」)、ネットワークファイルシステム(「NFS」)、共通インターネットファイルシステム(「CIFS」)及びAppleTalk等、多種多様な市販のプロトコルのうちのいずれかを使用する通信をサポートするために、当業者には周知であろう少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公共回線電話網、赤外線ネットワーク、無線ネットワーク、及びこれらの任意の組み合わせであり得る。
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキスト転送プロトコル(「HTTP」)サーバ、FTPサーバ、共通ゲートウェイインターフェース(「CGI」)サーバ、データサーバ、Javaサーバ、及びビジネスアプリケーションサーバを含む、多様なサーバまたは中間層アプリケーションのうちのいずれかを稼動することができる。サーバ(単数または複数)はまた、Java(登録商標)、C、C#またはC++等の任意のプログラム言語、あるいはPerl、Python、またはTCL等の任意のスクリプト言語、ならびにこれらの組み合わせで作成された1つ以上のスクリプトまたはプログラムとして実装されてもよい、1つ以上のウェブアプリケーションを実行することによって等、ユーザデバイスからのリクエストに応答して、プログラムまたはスクリプトを実行することが可能であってもよい。サーバ(単数または複数)はまた、これらに限定されないが、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、及びIBM(登録商標)から市販されているデータベースサーバを含んでもよい。
環境は、上記のように、多様なデータストアならびに他のメモリ及び記憶媒体を含むことができる。これらは、コンピュータのうちの1つ以上にローカル(及び/または内部に存在)、あるいはネットワーク全体のコンピュータのうちのいずれかまたは全てからリモートの記憶媒体等、多様な場所に存在することができる。特定の組の実施形態において、情報は、当業者は熟知のストレージエリアネットワーク(以下「SAN」)の中に存在してもよい。同様に、コンピュータ、サーバ、または他のネットワークデバイスに帰属する機能を実施するために必要な任意のファイルは、必要に応じて、ローカル及び/またはリモートに記憶されてもよい。システムがコンピュータデバイスを含む場合、そのようなデバイス各々は、バスを介して電気的に連結されてもよいハードウェア要素を含むことができ、要素として、例えば、少なくとも1つの中央処理装置(「CPU」または「プロセッサ」)、少なくとも1つの入力デバイス(例えば、マウス、キーパッド、コントローラ、タッチ画面、またはキーパッド)、及び少なくとも1つの出力デバイス(例えば、表示デバイス、プリンタ、またはスピーカ)が挙げられる。そのようなシステムはまた、ランダムアクセスメモリ(以下「RAM」)、または読み取り専用メモリ(以下「ROM」)、ならびに取り外し可能媒体デバイス、メモリカード、フラッシュカード等のディスクドライブ、光学式記憶装置、及びソリッドステート記憶装置等の1以上の記憶装置を含んでもよい。
そのようなデバイスはまた、コンピュータ可読記憶媒体リーダー、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、及び上記のような実働メモリも含むことができる。コンピュータ可読記憶媒体リーダーは、コンピュータ可読情報を一時的及び/またはより永久的に含み、記憶、伝送、及び読み出すための、リモート、ローカル、固定、及び/または取り外し可能記憶装置、ならびに記憶媒体を代表する、コンピュータ可読記憶媒体と接続、またはこれを受容するように構成することができる。システム及び多様なデバイスはまた典型的に、クライアントアプリケーションまたはウェブブラウザ等、オペレーティングシステム及びアプリケーションプログラムを含む、いくつかのソフトウェアアプリケーション、モジュール、サーバ、または少なくとも1つの実働メモリデバイス内部に位置する他の要素を含む。代替の実施形態は、上記とは異なる多数の変形を有してもよいことを理解されたい。例えば、カスタマイズされたハードウェアが使用される場合もあり、及び/または特定の要素が、ハードウェア、ソフトウェア(アプレット等の移植可能ソフトウェアを含む)、または両方に実装される場合がある。さらに、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスへの接続が採用されてもよい。
コード、またはコードの一部を含むための記憶媒体及びコンピュータ可読媒体は、RAM、ROM、電子的に消去可能なプログラム可能読み取り専用メモリ(「EEPROM」)、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読み取り専用メモリ(「CD−ROM」)、デジタル多用途ディスク(DVD)または他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を記憶するために使用することができ、かつシステムデバイスによってアクセスすることができる任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶及び/または伝送のための任意の方法または技術において実装された揮発性及び不揮発性の取り外し可能及び非取り外し可能な媒体等の記憶媒体及び通信媒体を含むが、しかしこれらに限定されない、当技術分野において周知または使用される任意の適当な媒体を含むことができる。本明細書に提供された開示及び教示に基づいて、当業者は、多様な実施形態を実装するための他の方式及び/または方法を理解するであろう。
仕様及び図面は、したがって、制限の意味ではなく、説明として解釈されるべきである。しかしながら、請求項に記載の本発明の広義の趣旨及び範囲から逸脱することなく、そこに多様な変形及び変更が行われてもよいことは自明である。
他の変形は、本開示の趣旨内である。このように、開示される技法は、多様な変形及び代替の構築の影響を受けやすいが、その所定の例示実施形態は、図面に示され、詳細を上述した。しかしながら、本発明を開示される特定の形式(単数または複数)に限定する意図は全く存在せず、対照的に、本発明は、添付の請求項によって定義される本発明の趣旨及び範囲内に該当する全ての変更、代替構築、及び同等物を網羅することを理解されたい。
「1つ」(「a」及び「an」)及び「その」(「the」)の用語の使用は、開示される実施形態の文脈における(特に以下の請求項の文脈における)類似の参照は、本明細書にその他明記または文脈によって明確に否定される場合を除き、単数及び複数の両方を網羅すると解釈される。「備える」、「有する」、「含む」、及び「含有する」という用語は、その他特に明記されない限り、無制限の用語(すなわち、「含むが、限定されない」を意味する)として解釈されることとする。「接続される」という用語は、物理的接続を、変更を加えずにこれを参照している場合、何らかの介在が存在する場合であっても、部分的または全体的に内部に含まれる、それに添付、または結合すると解釈される。本明細書における値の範囲の記載は、本明細書にその他記載のない限り、その範囲内に該当する各個別の値を個別に参照する簡潔な方法として機能することを目的とするに過ぎず、各個別の値は、本明細書に個別に記載されているかのようにその仕様に組み入れられる。「組」(例えば、「1組の項目」)または「サブセット」という用語の使用は、その他記載のない限り、または文脈によりこれに反しない限り、1つ以上の部材を備える、空ではない集合体として解釈される。さらに、その他記載のない限り、または文脈によりこれに反しない限り、対応する組の「サブセット」という用語は必ずしも対応する組の適切なサブセットを示さず、サブセット及び対応する組は等しくてもよい。
「A、B、及びCのうちの少なくとも1つ」または「A、B及びCのうちの少なくとも1つ」という形式の語句等の接続語は、その他具体的に記載のない限り、または文脈により明確に否定されない限り、項目、用語等がA、B、またはCのいずれか、あるいは任意のその空ではないサブセットであり得ることを表すために一般に使用される文脈によってその他理解される。例えば、説明例において、上記の例示的接続語において使用された3つのメンバーを有する組は、「少なくとも1つまたはA、B、及びC」ならびに「A、B及びCのうちの少なくとも1つ」は、{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}の組のうちのいずれかを参照する。このため、このような接続語は概して、所定の実施形態が、Aのうちの少なくとも1つ、Bのうちの少なくとも1つ、及びCのうちの少なくとも1つがそれぞれ存在することを要求することを暗示することを意図しない。
本明細書に説明される工程の操作は、本明細書にその他記載のない限り、または文脈によって明確に否定されない限り、任意の適切な順序で実行することができる。本明細書に説明される工程(あるいはその変形及び/または組み合わせ)は、実行可能命令で構成された1つ以上のコンピュータシステムの制御下で実施されてもよく、1つ以上のプロセッサ上、ハードウェアによって、またはこれらの組み合わせによって、集合的に実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装されてもよい。コードは、例えば、1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式において、コンピュータ可読記憶媒体上に記憶されてもよい。コンピュータ可読記憶媒体は非一時的であってもよい。
本明細書に提供される任意及び全ての例、または例示的言語(例えば「等」)の使用は、本発明の実施形態をより明確にすることを意図するに過ぎず、その他請求されない限り、本発明の範囲に限定を課すものではない。本明細書のいずれの文言も、請求項に記載されていない何らかの要素が本発明の実施に不可欠であることを示すと解釈されてはならない。
本開示の好ましい実施形態は、本発明を実行するために本発明人に周知の最良の様式を含めて、本明細書に記載される。これらの好ましい実施形態の変形は、前述の説明を一読すると当業者には明らかになり得る。本発明人は、当業者が、そのような変形を適切に採用することを期待し、本発明人は、本開示の実施形態が本明細書に具体的に記載される以外に実践されることを意図する。したがって、本開示の範囲は、該当法によって許可されるように、本明細書に添付の請求項に記載される対象項目の変更及び同等物を全て含む。さらに、その全ての可能な変形における上述の要素の任意の組み合わせは、その他本明細書に明記またはその他文脈によって明確に否定されない限り、本開示の範囲によって網羅される。
本明細書に引用される、文献、特許明細書、及び特許を含む全ての参考文献は、各参考文献が個別かつ具体的に参照により組み入れられ、その全体が本明細書に記載されているのと同じ範囲まで、参照により組み入れる。

Claims (15)

  1. データを記憶するためのコンピュータ実装方法であって、
    実行可能命令で構成された1つ以上のコンピュータシステムの制御下で、
    第1の通信プロトコルに従って構成された書き込みコマンドであって、データブロックの識別子を指定する、書き込みコマンドを受信することと、
    キーバリューストア内のデータオブジェクトであって、前記データオブジェクトと関連付けられたキーを使用して前記キーバリューストアから読み出し可能である、データオブジェクトの一部として前記書き込みコマンドのデータを持続させることと、
    データストアにおいて、前記キーを前記データブロックの前記識別子と関連付けることと、を含む、前記コンピュータ実装方法。
  2. 前記コマンドが、スモールコンピュータシステムインターフェースコマンドであり、前記第1の通信プロトコルが、スモールコンピュータシステムインターフェースプロトコルである、請求項1に記載の前記コンピュータ実装方法。
  3. 前記1つ以上のコンピュータシステムが、コンピューティングリソースプロバイダによってホストされ、
    前記コマンドが、前記コンピューティングリソースプロバイダであって、前記コンピューティングリソースプロバイダから前記コマンドが受信された、前記コンピューティングリソースプロバイダの顧客によって遠隔的に生成される、請求項1または2に記載の前記コンピュータ実装方法。
  4. 前記書き込みコマンドが、ストレージエリアネットワークへ伝送されたコマンドのレプリケーションである、請求項1〜3のいずれか1項に記載の前記コンピュータ実装方法。
  5. 前記データブロックの前記識別子を指定する読み取りコマンドを受信することと、
    前記キーを決定するために前記識別子を使用することと、
    前記データオブジェクトを読み出すために前記キーを使用することと、
    前記読み出されたデータオブジェクトから前記書き込みコマンドの前記データを抽出することと、
    前記読み取りコマンドに応答して、前記抽出されたデータを提供することと、をさらに含む、請求項1〜4のいずれか1項に記載の前記コンピュータ実装方法。
  6. 前記データオブジェクトが、他のデータブロックのデータを含む、請求項1〜5のいずれか1項に記載の前記コンピュータ実装方法。
  7. システムであって、
    1つ以上のプロセッサと、
    前記1つ以上のプロセッサによって実行されると、少なくとも、
    ブロックレベルデータ記憶インターフェースを提供することと、
    前記ブロックレベルデータ記憶インターフェースに対して、ブロックレベルコマンドを受信することと、
    前記受信されたブロックレベルコマンドに従って、データオブジェクト内にデータブロックを持続的に記憶するためにオブジェクトベースのデータ記憶システムを利用することと、によって、前記システムにブロックレベル記憶デバイスを模倣させる命令を含むメモリと、を備える、前記システム。
  8. 前記オブジェクトベースのデータ記憶システムが、データオブジェクトをそれぞれのキーと関連付けるキーバリューストアであり、
    前記命令がさらに、前記システムに、データブロックアドレスを前記キーバリューストアのキーと関連付けるマップを維持させる、請求項7に記載の前記システム。
  9. 前記ブロックレベルコマンドが、スモールコンピュータシステムインターフェースコマンドである、請求項7または8に記載の前記システム。
  10. 前記オブジェクトデータ記憶システムを利用することが、前記オブジェクトベースのデータ記憶システムへのアプリケーションプログラミングインターフェース呼出しを構成することを含む、請求項7〜9のいずれか1項に記載の前記システム。
  11. データオブジェクト内にデータブロックを持続的に記憶することが、前記データオブジェクトの少なくともサブセットの各データオブジェクトに対して、前記データオブジェクト内に複数のデータブロックを記憶することを含む、請求項7〜10のいずれか1項に記載のシステム。
  12. 前記命令がさらに、前記システムに、複数のエンティティのためのブロックレベル記憶デバイスを模倣させる、請求項7〜11のいずれか1項に記載の前記システム。
  13. 前記命令がさらに、前記システムに、データブロックを検索するためにデータオブジェクトを指定するウェブサービスアプリケーションプログラミングインターフェース呼出しを提出するのに使用可能な情報を維持させる、請求項7〜12のいずれか1項に記載の前記システム。
  14. 前記命令がさらに、前記システムに、
    データブロックを指定する読み取りコマンドを受信させ、かつ
    前記読み取りコマンドに応答して、前記オブジェクトベースのデータ記憶システム内に持続的に記憶されたデータオブジェクトから前記データブロックを取得することによって、前記データブロックを提供させる、請求項7〜13のいずれか1項に記載の前記システム。
  15. 前記命令がさらに、前記システムに、
    前記データブロックが、スモールコンピュータシステムインターフェースプロトコルによってアドレス指定可能である論理ユニットであり、
    前記コマンドが、前記システムが複数の論理ユニットの中から前記論理ユニットを区別することを可能にする情報とともに受信されることを行わせる、請求項14に記載の前記システム。
JP2016504361A 2013-03-20 2014-03-20 レプリケーションターゲットサービス Active JP6534989B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361803764P 2013-03-20 2013-03-20
US61/803,764 2013-03-20
US13/856,279 US10592106B2 (en) 2013-03-20 2013-04-03 Replication target service
US13/856,279 2013-04-03
PCT/US2014/031325 WO2014153458A2 (en) 2013-03-20 2014-03-20 Replication target service

Publications (2)

Publication Number Publication Date
JP2016515731A true JP2016515731A (ja) 2016-05-30
JP6534989B2 JP6534989B2 (ja) 2019-06-26

Family

ID=51570012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016504361A Active JP6534989B2 (ja) 2013-03-20 2014-03-20 レプリケーションターゲットサービス

Country Status (6)

Country Link
US (1) US10592106B2 (ja)
EP (1) EP2976705A4 (ja)
JP (1) JP6534989B2 (ja)
CN (1) CN105051675B (ja)
CA (1) CA2907424C (ja)
WO (1) WO2014153458A2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140310536A1 (en) * 2013-04-16 2014-10-16 Qualcomm Incorporated Storage device assisted inline encryption and decryption
US9971526B1 (en) * 2015-06-29 2018-05-15 Amazon Technologies, Inc. Volume-based key-value store
JP6808328B2 (ja) * 2016-02-24 2021-01-06 キヤノン株式会社 情報処理装置、バックアップ方法、情報処理装置の制御方法、及びプログラム
KR102538258B1 (ko) * 2016-07-25 2023-05-31 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 처리 시스템
CN106469198B (zh) 2016-08-31 2019-10-15 华为技术有限公司 键值存储方法、装置及系统
US10628196B2 (en) * 2016-11-12 2020-04-21 Vmware, Inc. Distributed iSCSI target for distributed hyper-converged storage
US10761750B2 (en) * 2017-03-09 2020-09-01 Netapp Inc. Selectively storing data into allocation areas using streams
US20180329634A1 (en) * 2017-05-10 2018-11-15 Strato Scale Ltd. Object overlay for storage-area network (san) appliances
CN108134723A (zh) * 2018-01-30 2018-06-08 杭州微兔科技有限公司 智能家居系统及其应用方法
US11256815B2 (en) * 2018-06-12 2022-02-22 Western Digital Technologies, Inc. Object storage system with secure object replication
EP3857859B1 (en) 2018-11-16 2023-07-19 VMWare, Inc. Active-active architecture for distributed iscsi target in hyper-converged storage
CN111556086B (zh) * 2020-01-02 2022-04-29 阿里巴巴集团控股有限公司 对象存储管理方法、装置、电子设备及计算机存储介质
US11500667B2 (en) 2020-01-22 2022-11-15 Vmware, Inc. Object-based approaches to support internet small computer system interface (ISCSI) services in distributed storage system
US11507409B2 (en) 2020-01-22 2022-11-22 Vmware, Inc. Object-based load balancing approaches in distributed storage system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008287675A (ja) * 2007-05-21 2008-11-27 Nippon Telegr & Teleph Corp <Ntt> ストレージインタフェース変換装置、情報処理システムおよびコンピュータプログラム
JP2009116809A (ja) * 2007-11-09 2009-05-28 Hitachi Ltd 記憶制御装置、ストレージシステム及び仮想ボリュームの制御方法
JP2009522659A (ja) * 2005-12-29 2009-06-11 アマゾン・テクノロジーズ・インコーポレーテッド ウェブサービスクライアントインターフェースを有する分散型ストレージシステム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4622087B2 (ja) 2000-11-09 2011-02-02 ソニー株式会社 情報処理装置、および情報処理方法、並びにプログラム記憶媒体
JP4355188B2 (ja) 2003-10-03 2009-10-28 株式会社日立製作所 パケット転送装置
US7469241B2 (en) 2004-11-30 2008-12-23 Oracle International Corporation Efficient data aggregation operations using hash tables
US8073899B2 (en) * 2005-04-29 2011-12-06 Netapp, Inc. System and method for proxying data access commands in a storage system cluster
US8533256B2 (en) 2007-10-09 2013-09-10 Cleversafe, Inc. Object interface to a dispersed data storage network
US7865460B2 (en) * 2008-05-08 2011-01-04 International Business Machines Corporation Method and system for data dispatch
US8266099B2 (en) * 2008-05-29 2012-09-11 Vmware, Inc. Offloading storage operations to storage hardware using a third party server
WO2010097961A1 (en) * 2009-02-25 2010-09-02 Hitachi, Ltd. Storage apparatus and its control method
US8417871B1 (en) * 2009-04-17 2013-04-09 Violin Memory Inc. System for increasing storage media performance
US8352941B1 (en) * 2009-06-29 2013-01-08 Emc Corporation Scalable and secure high-level storage access for cloud computing platforms
WO2011072178A1 (en) 2009-12-09 2011-06-16 Bizanga Ltd. Probabilistic offload engine for distributed hierarchical object storage devices
US9141410B2 (en) 2011-03-08 2015-09-22 Rackspace Us, Inc. Pluggable allocation in a cloud computing system
US9798831B2 (en) 2011-04-01 2017-10-24 Google Inc. Processing data in a MapReduce framework
US8880828B2 (en) * 2012-04-11 2014-11-04 International Business Machines Corporation Preferential block recycling in a redirect-on-write filesystem
US9075710B2 (en) * 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US9141685B2 (en) * 2012-06-22 2015-09-22 Microsoft Technology Licensing, Llc Front end and backend replicated storage
US9449039B2 (en) * 2012-11-26 2016-09-20 Amazon Technologies, Inc. Automatic repair of corrupted blocks in a database

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009522659A (ja) * 2005-12-29 2009-06-11 アマゾン・テクノロジーズ・インコーポレーテッド ウェブサービスクライアントインターフェースを有する分散型ストレージシステム
JP2008287675A (ja) * 2007-05-21 2008-11-27 Nippon Telegr & Teleph Corp <Ntt> ストレージインタフェース変換装置、情報処理システムおよびコンピュータプログラム
JP2009116809A (ja) * 2007-11-09 2009-05-28 Hitachi Ltd 記憶制御装置、ストレージシステム及び仮想ボリュームの制御方法

Also Published As

Publication number Publication date
EP2976705A2 (en) 2016-01-27
EP2976705A4 (en) 2016-10-26
CA2907424C (en) 2022-11-22
JP6534989B2 (ja) 2019-06-26
WO2014153458A3 (en) 2014-11-13
CN105051675A (zh) 2015-11-11
CA2907424A1 (en) 2014-09-25
WO2014153458A2 (en) 2014-09-25
US20140289463A1 (en) 2014-09-25
US10592106B2 (en) 2020-03-17
CN105051675B (zh) 2018-03-02

Similar Documents

Publication Publication Date Title
JP6534989B2 (ja) レプリケーションターゲットサービス
US10157199B2 (en) Data storage integrity validation
JP6483746B2 (ja) データ記憶アプリケーションプログラミングインターフェース
JP6463796B2 (ja) アーカイブデータ記憶システム
JP6429136B2 (ja) 順次転送最適化記憶デバイス用のボリュームレベル冗長コード化技法
US9250811B1 (en) Data write caching for sequentially written media
US10013166B2 (en) Virtual tape library system
US9092441B1 (en) Archival data organization and management
JP6224102B2 (ja) アーカイブデータ識別
US9767098B2 (en) Archival data storage system
US9563681B1 (en) Archival data flow management
US10120579B1 (en) Data storage management for sequentially written media
US10558581B1 (en) Systems and techniques for data recovery in a keymapless data storage system
US9652487B1 (en) Programmable checksum calculations on data storage devices
US9779035B1 (en) Log-based data storage on sequentially written media
US9483213B1 (en) Virtual media changers
CA2893594C (en) Virtual tape library system
US8892613B1 (en) Method and system for efficiently reading a partitioned directory incident to a serialized process
US10241689B1 (en) Surface-based logical storage units in multi-platter disks

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161018

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170317

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180104

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20180110

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20180330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190530

R150 Certificate of patent or registration of utility model

Ref document number: 6534989

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250