JP5015351B2 - 実行プログラムによる非ローカルブロックデータストレージへの信頼性の高いアクセスの実現 - Google Patents

実行プログラムによる非ローカルブロックデータストレージへの信頼性の高いアクセスの実現 Download PDF

Info

Publication number
JP5015351B2
JP5015351B2 JP2011522284A JP2011522284A JP5015351B2 JP 5015351 B2 JP5015351 B2 JP 5015351B2 JP 2011522284 A JP2011522284 A JP 2011522284A JP 2011522284 A JP2011522284 A JP 2011522284A JP 5015351 B2 JP5015351 B2 JP 5015351B2
Authority
JP
Japan
Prior art keywords
data storage
block data
program
volume
copy
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.)
Active
Application number
JP2011522284A
Other languages
English (en)
Other versions
JP2011530748A5 (ja
JP2011530748A (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
Priority claimed from US12/188,943 external-priority patent/US8015343B2/en
Priority claimed from US12/188,949 external-priority patent/US8019732B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2011530748A publication Critical patent/JP2011530748A/ja
Publication of JP2011530748A5 publication Critical patent/JP2011530748A5/ja
Application granted granted Critical
Publication of JP5015351B2 publication Critical patent/JP5015351B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2033Failover techniques switching over of hardware resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space

Description

本発明は、実行プログラムによる非ローカルブロックデータストレージへの信頼性の高いアクセスの実現に関する。
数多くの会社および他の組織が、自社および自組織の業務を支援するために多数のコンピューティングシステムを相互接続したコンピュータネットワークを運用しており、例えば、それらのコンピューティングシステムは、(例えば、ローカルネットワークの一部として)同じ場所に配置されるか、またはそうではなく、複数の異なる地理的位置の場所に配置される(例えば、1つまたは複数の専用回線もしくは公衆回線の中間ネットワークを介して接続される)。例えば、単一の組織によって、また単一の組織に代わって運用されるプライベートデータセンター、および事業体によって営利事業として運用されるパブリックデータセンターなどの、同じ場所に配置され相互接続された相当数のコンピューティングシステムを収容するデータセンターが一般的なものになっている。さまざまな顧客が所有するハードウェア向けにネットワークアクセス、電力、および安全なインストール機能を提供するパブリックデータセンター事業者もあれば、自社顧客による使用のために用意されたハードウェアリソースも含む「フルサービス」機能を提供するパブリックデータセンター事業者もある。しかし、典型的なデータセンターおよびコンピュータネットワークの規模と活動範囲が拡大するにつれ、関連付けられている物理的コンピューティングリソースのプロビジョニング、システム管理、および運用管理の仕事が次第に複雑なものになってきた。
コモディティハードウェア用の仮想化技術の出現は、多様なニーズを抱える多くの顧客向けに大規模なコンピューティングリソースを管理する業務に対し一定の恩恵をもたらし、これにより複数の顧客間でさまざまなコンピューティングリソースを効率よく、安全に共有することが可能になった。例えば、XEN(登録商標)、VMWare、またはUser−Mode Linuxによって実現されている仮想化技術などの仮想化技術は、各ユーザに単一の物理的コンピューティングシステムによってホストされる1つまたは複数の仮想マシンを提供することによって、単一の物理的コンピューティングシステムを、複数のユーザ間で共有することを可能とする。各そのような仮想マシンは、ユーザに、自分が与えられたハードウェアコンピューティングリソースの単独のオペレータおよびアドミニストレータであると錯覚させる、明確に区別できる論理的コンピューティングシステムとして動作する一方で、さまざまな仮想マシン間のアプリケーションの分離とセキュリティとを実現するソフトウェアシミュレーションであるものとすることができる。さらに、いくつかの仮想化技術では、実際には複数の明確に区別できる物理的コンピューティングシステムにまたがって存在する複数の仮想プロセッサを備える単一の仮想マシンなど、1つまたは複数の物理的リソースにまたがって存在する仮想リソースを提供する。
米国特許出願第11/395,463号明細書 米国特許出願第11/851,345号明細書 米国特許出願第11/395,463号明細書 米国出願第12/145,411号明細書 米国特許出願公開第2007/0156842号明細書 米国特許出願第60/754,726号明細書 米国特許出願第11/963,331号明細書
非ローカルブロックデータストレージへの実行プログラムのアクセスを管理するための技術について説明する。少なくともいくつかの実施形態において、これらの技術は、他の物理的コンピューティングシステム上で実行するプログラムによって1つまたは複数のネットワークを介してアクセスされ使用されうるブロックデータを確実に格納するために、複数のサーバストレージシステムを使用するブロックデータストレージサービスを提供することを含む。ブロックデータストレージサービスのユーザは、それぞれ、指定された量のブロックデータストレージ領域をそれぞれ有する1つまたは複数のブロックデータストレージボリュームを作成して、1つまたは複数の実行プログラムによってそのようなブロックデータストレージボリューム(本明細書では「ボリューム」とも称する)の使用を開始することができる。少なくともいくつかのそのようなボリュームは、実行プログラムに対するボリュームの信頼性と可用性を高めるために、複数のサーバストレージシステムのうちの2つまたはそれ以上のシステムによって格納されたコピーを有する。一例として、ブロックデータを格納する複数のサーバブロックデータストレージシステムは、いくつかの実施形態では、1つまたは複数の地理的に分散されているデータセンターのうちの各データセンターの中など、地理的位置の同じ場所に配置されている複数の物理的サーバストレージシステムをそれぞれが有する1つもしくは複数のプールまたは他のグループに編成され、データセンター内のサーバブロックデータストレージシステム上に格納されているボリュームを使用するプログラム(複数可)が、そのデータセンター内の1つまたは複数の他の物理的コンピューティングシステム上で実行されうる。ブロックデータストレージサービスの実施形態に関係する追加の詳細が、以下の説明に含まれており、ブロックデータストレージサービスを提供するための説明されている複数の技術のうちの少なくとも一部は、ブロックデータストレージ(「BDS」)システムマネージャモジュールの実施形態によって自動的に実行されうる。
それに加えて、少なくともいくつかの実施形態において、1つまたは複数のネットワーク上で1つまたは複数のそのような非ローカルブロックデータストレージボリュームにアクセスし、使用する実行プログラムは、そのプログラムによる非ローカルボリュームへのアクセスを管理する関連付けられているノードマネージャ、例えば、ブロックデータストレージサービスによって提供され、および/または1つまたは複数のBDSシステムマネージャモジュールと連携して動作するノードマネージャモジュールなどをそれぞれ有することができる。例えば、ブロックデータストレージサービスの顧客である第1のユーザは、第1のブロックデータストレージボリュームを作成し、(例えば、逐次的に、同時に、または他のオーバーラップする方式などで)その第1のボリュームにアクセスし、使用するよう指示された1つまたは複数のコンピューティングノード上で、1つまたは複数のプログラムのコピーを実行する。コンピューティングノード上で実行されるプログラムが非ローカルボリュームの使用を開始した場合、このプログラムは、コンピューティングノードのローカルにある、非ローカルボリュームを表す論理ブロックデータストレージデバイスをマウントするか、または他の何らかの方法で備え、これにより、実行プログラムは、(例えば、読み取りおよび書き込みデータアクセス要求の実行、ボリュームへのファイルシステムまたはデータベースまたは他のより高水準のデータ構造の実装などのために)コンピューティングノードに取り付けられている他のローカルのハードドライブまたは他の物理ブロックデータストレージデバイスと同じ方法で、ローカルの論理ブロックデータストレージデバイスとやり取りできるようになる。例えば、少なくともいくつかの実施形態において、GNBD(「グローバルネットワークブロックデバイス」)技術を使用することで、実行プログラムから代表的な論理ローカルブロックデータストレージデバイスを利用できるようにすることが可能である。それに加えて、以下でさらに詳しく説明するように、実行プログラムが代表的なローカルの論理ブロックデータストレージデバイスとやり取りするときに、関連付けられているノードマネージャが、(例えば、実行プログラムおよび/またはコンピューティングノードに対して透過的な方法で)1つまたは複数のネットワーク上で関連付けられている非ローカルボリュームのコピーを格納するいくつかのサーバブロックデータストレージシステムのうちの少なくとも1つのサーバブロックデータストレージシステムと通信することによって、それらの相互のやり取りを管理することができる。これにより、実行プログラムに代わって、その格納されているボリュームのコピー上でやり取りを実行することができる。さらに、少なくともいくつかの実施形態において、非ローカルブロックデータストレージボリュームへの実行プログラムのアクセスを管理するための説明されている複数の技術のうちの少なくともいくつかの技術は、ノードマネージャモジュールの実施形態によって自動的に実行される。
それに加えて、少なくともいくつかの実施形態において、少なくともいくつかのブロックデータストレージボリューム(またはこれらのボリュームの一部)は、ボリュームのコピーを格納するために使用されるサーバブロックデータストレージシステムと明確に区別される、1つまたは複数のリモートアーカイブストレージシステム上にさらに格納されうる。さまざまな実施形態において、1つまたは複数のリモートアーカイブストレージシステムは、(例えば、データセンターから離れているリモートの場所、または同じ場所に配置されているサーバブロックデータストレージシステムのプールを有する他の地理的位置の場所で)ブロックデータストレージサービスによって実現されるか、またはそうする代わりに、リモートの長期的なストレージサービスによって実現され、ブロックデータストレージによって使用され得る。少なくともいくつかの実施形態において、アーカイブストレージシステムが、ブロックデータと異なるフォーマットでデータを格納することができる(例えば、1つのボリュームの1つまたは複数のチャンクもしくは部分を明確に区別されるオブジェクトとして格納することができる)。このようなアーカイブストレージシステムは、以下でさらに詳しく説明するように、さまざまな実施形態においてさまざまな方法で使用することができ、さまざまな恩恵をもたらしうる。リモートの長期的なストレージサービスがアーカイブストレージシステムを提供するいくつかの実施形態において、リモートの長期的なストレージサービスのユーザ(例えば、リモートの長期的なストレージサービスを使用する料金を支払うリモートの長期的なストレージサービスの顧客)でもあるブロックデータストレージサービスのユーザ(例えば、ブロックデータストレージサービスを使用する料金を支払うブロックデータストレージサービスの顧客)は、彼らの顧客からの指示に応答してなど、アーカイブストレージシステムによって格納されているユーザのブロックデータストレージボリュームの少なくとも一部を有することができる。他の実施形態では、単一の組織が、(例えば、単一のサービスの一部など、統合された方法で)ブロックデータストレージサービス機能とリモートの長期的なストレージサービス機能の両方のうちの少なくとも一部を提供することができるが、さらに他の実施形態では、ブロックデータストレージサービスが、アーカイブデータストレージシステムの使用を伴わない環境において提供されうる。さらに、少なくともいくつかの実施形態において、アーカイブストレージシステムの使用は、ブロックデータストレージサービスによって提供されるか、またはブロックデータストレージサービスのモジュールと連携して動作するように他の何らかの方法で提供される(例えば、ブロックデータストレージサービスとやり取りするためにリモートの長期的なストレージサービスによって提供される)アーカイブマネージャモジュールなどの、1つまたは複数のアーカイブマネージャモジュールの制御の下で自動的に実行される。
いくつかの実施形態において、説明されている複数の技術のうちの少なくともいくつかは、プログラム実行サービスの複数のユーザに代わって複数のプログラムの実行を管理するプログラム実行サービスに代わって実行される。いくつかの実施形態では、プログラム実行サービスは、1つまたは複数の地理的に分散されたデータセンターなどの1つまたは複数の地理的位置の場所に複数の同じ場所に配置されている物理的ホストコンピューティングシステムのグループを有することができ、以下でさらに詳しく説明するように、例えばプログラム実行サービス(「PES」)システムマネージャの制御の下で、それらの物理的ホストコンピューティングシステム上でユーザのプログラムを実行することができる。このような実施形態では、ブロックデータストレージサービスのユーザでもあるプログラム実行サービスのユーザ(例えば、プログラム実行サービスを使用する料金を支払うプログラム実行サービスの顧客)は、ブロックデータストレージサービスを介して提供される非ローカルブロックデータストレージボリュームにアクセスし、使用するプログラムを実行することができる。他の実施形態では、単一の組織が、(例えば、単一のサービスの一部など、統合された方法で)プログラム実行サービス機能とブロックデータストレージサービス機能の両方のうちの少なくとも一部を提供することができるが、さらに他の実施形態では、ブロックデータストレージサービスが、プログラム実行サービスを伴わない環境において提供されうる(例えば、内部的に、組織の業務を支援するために企業または他の組織に対して)。
それに加えて、プログラムが実行されるホストコンピューティングシステムは、さまざまな実施形態においてさまざまな形態をとりうる。複数のこのようなホストコンピューティングシステムは、例えば、1つの物理的な位置における同じ場所(例えば、データセンター)内に配置され、いくつかのホストコンピューティングシステムのうち1つまたは複数のホストコンピューティングシステムの部分集合にそれぞれ関連付けられている複数のノードマネージャモジュールによって管理されうる。ホストコンピューティングシステムの少なくともいくつかは、それぞれ、複数のプログラムを同時に実行するのに十分なコンピューティングリソース(例えば、揮発性メモリ、CPUサイクルまたは他のCPU使用率の尺度、ネットワーク帯域幅、スワップ領域など)を備えることができ、少なくともいくつかの実施形態では、コンピューティングシステムの一部または全部は、それぞれ、実行すべきプログラムのローカルコピーおよび/またはそのようなプログラムによって使用されるデータを格納するために使用することができる、1つまたは複数の物理的に取り付けられたローカルブロックデータストレージデバイス(例えば、ハードディスク、テープドライブなど)を有することができる。さらに、いくつかのこのような実施形態における複数のホストコンピューティングシステムのうちの少なくともいくつかは、それぞれ、明確に区別される1人のユーザに代わって1つまたは複数のプログラムをそれぞれ実行することができる複数の仮想マシンコンピューティングノードをホストすることができる。各そのようなホストコンピューティングシステムは、そのホストコンピューティングシステム用の仮想マシンを管理する実行ハイパーバイザーまたは他の仮想マシンモニターを有する。複数の仮想マシンを実行するホストコンピューティングシステムについて、いくつかの実施形態では、そのホストコンピューティングシステムに対する関連付けられているノードマネージャモジュールは、(例えば、そのホストコンピューティングシステムに対する仮想マシンモニターの一部として、または連携して)複数のホストされている仮想マシンのうちの少なくとも1つの仮想マシン上で実行されうるが、他の状況では、ノードマネージャが管理されている1つまたは複数の他のホストコンピューティングシステムから明確に区別される物理的コンピューティングシステム上で実行されうる。
ボリュームが格納されるサーバブロックデータストレージシステムも、さまざまな実施形態においてさまざまな形態をとりうる。すでに述べたように、複数のこのようなサーバブロックデータストレージシステムは、例えば、1つの物理的な位置における同じ場所(例えば、データセンター)内に配置され、1つまたは複数のBDSシステムマネージャモジュールによって管理されうる。少なくともいくつかの実施形態において、複数のサーバブロックデータストレージシステムのうちの一部または全部が、プログラムを実行するホストコンピューティングシステムと似た物理的コンピューティングシステムであってもよく、いくつかのそのような実施形態では、それぞれ、それらのサーバストレージシステム上のボリュームのプロビジョニングおよびメンテナンスを支援するためにサーバストレージシステムソフトウェアを実行することができる。例えば、少なくともいくつかの実施形態において、そのような複数のサーバブロックデータストレージコンピューティングシステムのうちの1つまたは複数が、1つまたは複数のBDSシステムマネージャモジュールが複数の相互にやり取りするサーバブロックデータストレージコンピューティングシステムによってピアツーピア型分散方式で構成される場合などにおいて、BDSシステムマネージャの少なくとも一部を実行することができる。他の実施形態では、複数のサーバブロックデータストレージシステムのうちの少なくともいくつかは、それらのサーバストレージシステム上のボリュームのプロビジョニングおよびメンテナンスの少なくとも一部がリモートにある他の物理的コンピューティングシステムによって(例えば、1つまたは複数の他のコンピューティングシステム上で実行されているBDSシステムマネージャモジュールによって)実行される場合などにおいて、物理的コンピューティングシステムのいくつかのI/Oコンポーネントおよび/または他のコンポーネントを欠いている可能性のあるネットワークストレージデバイスであってもよい。それに加えて、いくつかの実施形態では、少なくともいくつかのサーバブロックデータストレージシステムは、それぞれ、複数のローカルハードディスクを保持し、それらの複数のローカルハードディスクのうちの一部または全部のそれぞれの一部分にわたって、少なくともいくつかのボリュームのストライピングを行う。さらに、ボリュームを作成し、使用するためのさまざまな種類の技術が、いくつかの実施形態においてLVM(「論理ボリュームマネージャ」)技術を使用することも含めて、利用されうる。
すでに述べたように、少なくともいくつかの実施形態において、いくつかの、またはすべてのブロックデータストレージボリュームは、それぞれ、ボリュームの信頼性および可用性を高めるなどのために、2つまたはそれ以上の明確に区別されるサーバブロックデータストレージシステム上に格納されているコピーを有する。そうすることによって、単一のサーバブロックデータストレージシステムが故障したとしても、それらの実行プログラムによるそのボリュームの使用をそのボリュームのコピーを有する別の利用可能なサーバブロックデータストレージシステムに切り替えることができるため、ボリュームへの実行プログラムのアクセスが失われる事態は発生しえない。そのような実施形態において、複数のサーバブロックデータストレージシステム上のボリュームの複数のコピー間の整合性を、さまざまな方法で保つことができる。例えば、いくつかの実施形態において、複数のサーバブロックデータストレージシステムのうちの1つのサーバブロックデータストレージシステムが、ボリュームのプライマリコピーを格納するものとして指定され、他の1つまたは複数のサーバブロックデータストレージシステムは、ボリュームのミラーコピーを格納するものとして指定されている−このような実施形態では、プライマリボリュームのコピーを有するサーバブロックデータストレージシステム(そのボリュームの「プライマリサーバブロックデータストレージシステム」と称される)は、そのボリュームに対するデータアクセス要求を受け取り、処理することができる。いくつかのそのような実施形態では、他のミラーボリュームのコピーの整合性を保持するためのアクションを、さらに実行することができる(例えば、更新メッセージを、コンピューティングシステムにおいてマスター−スレーブ関係を確立する方法などにより、プライマリボリュームのコピー内のデータが修正されたときにミラーボリュームのコピーを提供する他のサーバブロックデータストレージシステムに送信することによって)。ボリュームの整合性をとるためにさまざまな種類の技術を使用することができ、以下ではその詳細について述べる。
少なくともいくつかの実施形態では、説明されている技術は、ボリュームのプライマリコピーおよびミラーコピーの使用を管理することによって、ブロックデータストレージボリュームへのコンピューティングノード上の実行プログラムのアクセスの信頼性および可用性を高めることを含む。例えば、実行プログラムに対するノードマネージャは、いくつかの実施形態では、プライマリボリュームのコピーがミラーボリュームのコピーを保持する責任を負っている場合、または他のレプリケーションメカニズムが使用される場合などにおいて、プライマリサーバブロックデータストレージシステムを介してプライマリボリュームのコピーと単独でやり取りすることができる。そのような実施形態において、プライマリサーバブロックデータストレージシステムが、ノードマネージャによって送信された要求(例えば、実行プログラムによって開始されたデータアクセス要求、プライマリサーバブロックデータストレージシステムが利用可能であるかどうかを定期的にチェックするためにノードマネージャによって開始されるpingメッセージまたは他の要求など)に対して所定の時間内に応答できない場合、さもなければ(例えば、BDSシステムマネージャからのメッセージによって)ノードマネージャがプライマリボリュームのコピーが利用不可能であるという警告を受け取った場合、ノードマネージャは、そのやり取りをミラーサーバブロックデータストレージシステム上のミラーボリュームのコピーのうちの1つに自動的に切り替えることができる(例えば、実行プログラムによって行われたデータアクセス要求がタイムアウトになり、ミラーボリュームのコピーへの切り替えを開始した場合に、そのデータアクセス要求に対する応答を取得するために少し長く待つ以外、実行プログラムは切り替えに気づかないままである)。ミラーボリュームのコピーは、BDSシステムマネージャとやり取りすることによって、プライマリボリュームのコピーとしての機能を果たすように格上げされるミラーボリュームのコピーの指示を要求して、ただ1つが選択される場合、複数のミラーボリュームのコピーにアクセスする順序が事前に指示される場合など、さまざま方法で選択することができる。他の実施形態では、少なくともいくつかのボリュームは、1つのボリュームが複数の実行プログラムによる同時読み取りアクセスに利用可能であり、その結果生じるデータアクセスの負荷がボリュームの複数のプライマリコピー間に分散される場合などにおいて、複数のプライマリコピーを有することができる−そのような実施形態では、ノードマネージャが、(例えば、ランダムな方法、BDSシステムマネージャモジュールからの命令に基づく方法などにより)さまざまな方法でやり取りする複数のプライマリボリュームのコピーのうちの1つを選択することができる。
それに加えて、BDSシステムマネージャは、ブロックデータストレージボリュームへのコンピューティングノード上の実行プログラムのアクセスの信頼性および可用性を維持するために、さまざまな実施形態においてさまざまなアクションを実行することができる。特に、BDSシステムマネージャが、特定のサーバブロックデータストレージシステム(または特定サーバブロックデータストレージシステム上の特定のボリューム)が利用不可能になったと認識した場合に、BDSシステムマネージャは、そのサーバブロックデータストレージシステムによって格納されているいくつかの、またはすべてのボリュームについて(または特定の利用不可能なボリュームについて)可用性を維持するためのさまざまなアクションを実行することができる。例えば、利用不可能なサーバブロックデータストレージシステム上の各格納されているプライマリボリュームのコピーについて、BDSシステムマネージャは、既存の複数のミラーボリュームのコピーのうちの1つのミラーボリュームのコピーを新規のプライマリボリュームのコピーに格上げし、適宜、その変更を1つまたは複数のノードマネージャ(例えば、現在そのボリュームを使用している実行プログラムに対するノードマネージャ)に通知することができる。さらに、各格納されているボリュームのコピーについて、BDSシステムマネージャは、既存のコピーを有する他の利用可能なサーバブロックデータストレージシステム上のボリュームの既存のコピーのレプリケーションを実行することなどによって(例えば、プライマリボリュームのコピーのレプリケーションを実行することによって)、異なるサーバブロックデータストレージシステム上でボリュームの少なくとも1つの他の新規のミラーコピーの作成を開始することができる。それに加えて、少なくともいくつかの実施形態では、以下でさらに詳しく説明するように、リモートアーカイブストレージシステム上に格納されているボリュームの少なくとも一部分を使用して、ボリュームの新規のミラーコピーのレプリケーションを支援することによって、少なくともいくつかの状況において他の恩恵(例えば、データの信頼性の向上、ミラーボリュームのコピーに使用されるストレージの量および/またはボリュームの完全なミラーコピーを維持するために使用される実行中の処理能力を最小限度に抑えることなど)も受けうる。
BDSシステムマネージャは、サーバブロックデータストレージシステムとコンタクトをとれないノードマネージャからのメッセージに基づく方法、サーバブロックデータストレージシステムからのメッセージ(例えば、エラー条件が生じたこと、シャットダウンまたは故障モード動作を開始したことなどを示すメッセージ)に基づく方法、サーバブロックデータストレージシステムとコンタクトをとれないことに基づく(例えば、サーバブロックデータストレージシステムのいくつか、またはすべての定期的もしくは常時監視に基づく)方法など、さまざまな方法によりサーバブロックデータストレージシステムの利用不可能であることを認識する可能性がある。さらに、サーバブロックデータストレージシステムが利用不可能になる事態は、サーバブロックデータストレージシステムが1つまたは複数のボリュームの少なくとも一部を格納する1つまたは複数のハードディスクまたは他の記憶媒体の故障、サーバブロックデータストレージシステムの1つまたは複数の他のコンポーネント(例えば、CPU、メモリ、ファンなど)の故障、サーバブロックデータストレージシステムに対する停電(例えば、単一のサーバブロックデータストレージシステム、複数のサーバブロックデータストレージシステムからなるラック、データセンター全体などに対する停電)、サーバブロックデータストレージシステムとノードマネージャおよび/またはBDSシステムマネージャとの通信を妨げるネットワークもしくは他の通信障害などの、さまざまな実施形態におけるさまざまな出来事が原因である場合がある。いくつかの実施形態において、サーバブロックデータストレージシステムのコンポーネントに生じる故障または問題は、サーバブロックデータストレージシステム全体に対する利用不可能性条件であるとみなせるが(例えば、サーバブロックデータストレージシステムが複数のローカルハードディスクを保持している実施形態では、ローカルハードディスクに生じる故障または問題は、サーバブロックデータストレージシステム全体に対する利用不可能性条件であるとみなしてもよい)、他の実施形態では、サーバブロックデータストレージシステムは、データアクセス要求に応答することができる限りは、利用不可能であるとはみなせない。
さらに、既存のサーバブロックデータストレージシステムが利用不可能になったときにその既存のサーバブロックデータストレージシステムから1つまたは複数のボリュームを移動することに加えて、BDSシステムマネージャは、いくつかの実施形態では、既存のサーバブロックデータストレージシステムから異なるサーバブロックデータストレージシステムに1つまたは複数のボリュームを移動することを決定し、および/またはさまざまな別の時点において、さまざまな他の理由から、1つまたは複数のボリュームの新規コピーを作成することを決定することができる。1つのボリュームの新規コピーの移動もしくは作成は、別のところでさらに詳しく説明されている方法と似た方法で(例えば、ボリュームのプライマリコピーのレプリケーションを行って新規コピーを作成することにより、またボリュームのコピーが移動されているときなど、少なくともいくつかの状況においてボリュームの以前のコピーを適宜削除することにより)実行されうる。ボリュームの移動またはボリュームのコピーの新規作成のきっかけとなりうる状況としては、例えば、すべてというわけではないが、例えば特定のサーバブロックデータストレージシステムからの1つまたは複数のボリュームの移動をトリガーしようとして、その特定のサーバブロックデータストレージシステムが(例えば、CPUの使用率、ネットワーク帯域幅、I/Oアクセス、ストレージ容量などに基づいて)使用されすぎていると思われる状況、例えば特定のサーバブロックデータストレージシステムからの1つまたは複数のボリュームの移動をトリガーしようとして、その特定のサーバブロックデータストレージシステムが既存のボリュームの所望の修正に対し十分なリソースが不足していると思われる(例えば、既存のボリュームのサイズの拡大が要求された場合に利用可能な十分なストレージ領域が不足していると思われる)状況、例えば特定のサーバブロックデータストレージシステムからの1つまたは複数のボリュームの一時的もしくは恒久的移動をトリガーしようとして、その特定のサーバブロックデータストレージシステムが一定期間システムを利用不可能にするメンテナンスまたはアップグレードを必要とする状況、追加の機能を備える他のサーバブロックデータストレージシステムなどの、他のサーバブロックデータストレージシステム上での方が特定のボリュームの使用パターンまたはボリュームの他の特性にうまく対応できるという認識に基づく状況(例えば、データ修正が頻繁に行われるボリュームについては、平均を超えるディスク書き込み機能を有するプライマリサーバブロックデータストレージシステムを使用し、および/またはサイズの非常に大きなボリュームについては、平均を超えるストレージ容量を有するプライマリサーバブロックデータストレージシステムを使用する)、ボリュームを作成した、または他の何らかの方法でボリュームに関連付けられているユーザからの要求に応答する状況(例えば、機能を増強したサーバブロックデータストレージシステムへのプレミアムアクセスをユーザが購入したことへの応答)、例えば他の地理的位置の場所にある実行プログラムによる1つのボリュームの使用が要求されたときに第1の地理的位置の場所にあるサーバブロックデータストレージシステムからのボリュームの移動および/またはコピーをトリガーしようとして、1つのボリュームの少なくとも1つの新規コピーをプログラムが実行される異なる地理的位置の場所(例えば、他のデータセンター)に供給する状況などが挙げられる。
それに加えて、ボリュームが移動されたか、または新規コピーが作成された後、BDSシステムマネージャは、いくつかの実施形態および状況において、1つまたは複数のノードマネージャ(例えば、そのボリュームを現在使用している実行プログラム用のノードマネージャのみ、すべてのノードマネージャなど)を適宜更新することができる。他の実施形態では、ボリュームに関するさまざまな情報が、ノードマネージャおよび/またはBDSシステムマネージャからネットワーク経由でアクセス可能なボリューム情報データベースの1つまたは複数のコピーを有することなどの、他の方法により保持されうる。保持することができるボリュームに関する情報の種類としては、すべてというわけではないが、ボリュームのコピーを格納するサーバブロックデータストレージシステムに対して一意的な、またはブロックデータストレージサービスに対して大域的に一意的な識別子などの、ボリュームの識別子、ボリュームに対する、パスワードもしくは暗号鍵、またはそのボリュームの認定ユーザのリストもしくは他の指示などの、制限されたアクセス情報、ネットワークアドレスおよび/または他のアクセス情報などの、ボリュームに対するプライマリサーバブロックデータストレージシステムに関する情報、既存のプライマリサーバストレージシステムが利用不可能になった場合にどのミラーサーバブロックデータストレージシステムをプライマリシステムに格上げするかを示す順序付けに関する情報、ネットワークアドレスおよび/または他のアクセス情報などの、ボリュームに対する1つまたは複数のミラーサーバブロックデータストレージシステムに関する情報、以下でさらに詳しく説明するような、ボリュームに対し作成されたスナップショットボリュームのコピーに関する情報、ボリュームがボリュームの作成者以外のユーザから利用可能であるかどうか、もし利用可能であれば、どのような状況の下で利用可能か(例えば、読み取りアクセスのみについて、このボリュームのコピーである自ボリュームを作成する他のユーザに対して、ボリュームへのさまざまな種類のアクセスを受ける他のユーザに対する価格設定情報)に関する情報などが挙げられる。
サーバブロックデータストレージシステムが利用不可能になったときにボリュームのコピーの移動または他の何らかの方法によるレプリケーションを行うことによるブロックデータストレージボリュームへの実行プログラムのアクセスの信頼性および可用性を維持することに加えて、ブロックデータストレージサービスは、他の状況では他のアクションを実行することでブロックデータストレージボリュームへの実行プログラムのアクセスを維持することができる。例えば、第1の実行プログラムが突然利用不可能になった場合、いくつかの実施形態では、ブロックデータストレージサービスおよび/またはプログラム実行サービスは、異なる第2の実行プログラム(例えば、異なるホストコンピューティングシステム上で実行中の同じプログラムの第2のコピー)を利用不可能な第1のプログラムによって使用中であったいくつかの、またはすべてのブロックデータストレージボリュームにアタッチさせるアクションを実行し、第2のプログラムが利用不可能な第1のプログラムの少なくともいくつかのオペレーションを素早く引き継ぐようにすることができる。第2のプログラムは、いくつかの状況では、既存の第1のプログラムが利用不可能であることによって実行が開始される新規プログラムであってもよいが、他の状況では、第2のプログラムが、(例えば、複数のプログラムコピーのうちの1つが第2のプログラムとして選択される、ロードバランサーによって媒介されるような異なる受信クライアント要求を受信する複数のウェブサーバプログラムなどの、複数のプログラムコピーが作業負荷全体を分散させるように同時実行される場合、第2のプログラムが、既存の第1のプログラムが利用不可能になる状況が発生するまでアクティブに使用されているスタンバイプログラムコピーがない場合などにおいて、利用不可能になった場合に既存の第1のプログラムから「ホットスワップ」することが可能なように実行されているプログラムのスタンバイコピーである場合など)すでに実行中であってもよい。それに加えて、いくつかの実施形態では、既存のボリュームのアタッチおよび進行中の使用の切り替え先である第2のプログラムが、第1のプログラムと同じ地理的位置の場所(例えば、同じデータセンター)内の別のホスト物理的コンピューティングシステム上に置かれている可能性があるが、他の実施形態では、第2のプログラムが、異なる地理的位置の場所(例えば、それとは別のデータセンターにすでに移動されているか、同時に移動されており、第2のプログラムによって使用されることになるボリュームのコピーと連携などをする、異なるデータセンター)上に置かれている可能性がある。さらに、いくつかの実施形態において、利用不可能な第1のプログラムを対象とするいくつかの通信を第2のプログラムにリダイレクトすることなどによって、第2のプログラムへの切り替えをさらに容易にする他の関係するアクションを実行することができる。
それに加えて、少なくともいくつかの実施形態では、他の技術を使用することで、ブロックデータストレージボリュームへのアクセスの信頼性および可用性を高めるだけでなく、指示されたボリュームのコピーを(例えば、ボリュームのアクティブなプライマリコピーおよびミラーコピーをサーバブロックデータストレージシステムが格納する第1の地理的位置の場所から離れている、および/またはそのボリュームを使用するプログラムを実行するホスト物理的コンピューティングシステムから離れている第2の地理的位置の場所にある)1つまたは複数のリモートのアーカイブストレージシステムに、長期的なバックアップおよび/または他の目的などのために保存することができるといった他の恩恵も受けることができる。例えば、いくつかの実施形態において、アーカイブストレージシステムは、リモートのネットワーク経由でアクセス可能なストレージサービス側で構成することができる。それに加えて、アーカイブストレージシステムに保存されるボリュームのコピーは、少なくともいくつかの状況では、特定の時点におけるボリュームのスナップショットコピーであってもよいが、これらのコピーは、ボリュームの継続的な使用により、その格納されているブロックデータの内容が変化するときに自動的に更新されることはなく、および/またはボリュームと同じ方法で実行プログラムによるアタッチおよび使用のために利用することはできない。そこで、一例として、ボリュームの長期的なスナップショットコピーは、例えば、ボリュームのバックアップコピーとして使用することができ、さらにいくつかの実施形態では、スナップショットコピーから作成される1つまたは複数の新規ボリュームのベースとして(例えば、新規ボリュームがスナップショットコピーと同じブロックデータストレージの内容から開始するように)機能することができる。
それに加えて、アーカイブストレージシステムにおけるボリュームのスナップショットコピーは、さまざまな方法で格納することができ、(例えば、アーカイブストレージシステムがデータの大きな線形順序ブロック(linear sequential block)ではなくより小さなオブジェクトとしてデータを格納する場合など)例えばボリュームをより小さな複数のチャンクに分けて表すなどの方法で格納することができる。例えば、ボリュームは、一連の複数のより小さなチャンク(1つのボリュームは例えば1ギガバイトもしくは1テラバイトのサイズを有し、チャンクは例えば数メガバイトのサイズを有する)として表すことができ、いくつかのまたはすべてのチャンク(例えば、修正されている各チャンク)に関する情報は、各チャンクを明確に区別される格納されているオブジェクトとして取り扱うことなどによって、アーカイブストレージシステム上に別々に格納することができる。さらに、少なくともいくつかの実施形態において、特定のボリュームの2番目およびそれ以降のスナップショットコピーは、前のスナップショットコピー以降に作成されるか、または修正された新規ストレージチャンクの格納されているコピーを含めるが、それらのチャンクが変化していない場合はいくつかの以前から存在しているチャンクの格納されているコピーを前のスナップショットコピーと共有することなどによって、ボリュームの前のスナップショットコピーからの増分変化のみを格納するような方法で作成されうる。そのような実施形態では、前のスナップショットコピーが後で削除される場合、後のスナップショットコピーによって共有されるその前のスナップショットコピーによって格納されている以前から存在しているチャンクは、それらの後のスナップショットコピーによる使用のために保持されうるが、その前のスナップショットコピーによって格納されている共有されていない以前から存在しているチャンクは削除されうる。
それに加えて、少なくともいくつかの実施形態では、ある時点においてボリュームのスナップショットコピーを作成するときに、実行プログラムによるプライマリボリュームのコピーへのアクセスは、プライマリボリュームのコピーに格納されているデータへの修正を許可することを含めて、継続させることができる。ただし、スナップショットコピーが、スナップショットコピー作成が開始した時点では更新されず、スナップショットコピー作成が完了してやっと更新されるアーカイブストレージシステム上に格納されているボリュームのチャンクに基づく場合などにおいて、そのような進行中のデータ修正はスナップショットコピー内に反映されない。例えば、少なくともいくつかの実施形態において、ボリュームのスナップショットコピーの作成が開始され、そのボリュームのチャンクがその後修正される場合に、コピーオンライト技術が使用される。これにより、プライマリボリュームのコピーを格納するプライマリサーバブロックデータストレージシステム上に(さらには適宜、そのボリュームの複数のミラーコピーのうちの1つまたは複数のミラーコピーを格納するミラーサーバブロックデータストレージシステム上にも)、未修正のチャンクと修正済みのチャンクの両方が格納されているコピーを最初に保持される。アーカイブストレージシステムが(未修正のチャンクのコピーを含む)ボリュームのスナップショットコピーを正常に格納したことを示す確認を受け取ると、プライマリサーバブロックデータストレージシステム上の(および適宜、ミラーサーバブロックデータストレージシステム上の)未修正のチャンクコピーは、削除されうる。
さらに、アーカイブストレージシステム上に格納されるそのようなボリュームのチャンクまたは他のボリュームデータは、少なくともいくつかの実施形態では、アーカイブストレージシステムをいくつかのまたはすべてのボリュームのプライマリコピーおよび/またはミラーコピーの外部記憶域として使用するなど、他の方法で使用することができる。例えば、アーカイブストレージシステム上に格納されているボリュームデータは、少なくともいくつかの状況において、複数のサーバブロックデータストレージシステム上のボリュームの複数のコピー間の整合性を維持するのを支援するために使用されうる。一例として、ボリュームの1つまたは複数のミラーコピーは、ボリュームのチャンクの少なくともいくつかを取得するためにプライマリボリュームのコピーにアクセスする必要性を極力減らすか、またはまったくなくすなどのために、アーカイブストレージシステム上に格納されているボリュームのチャンクに少なくとも一部は基づいて、作成もしくは更新することができる。例えば、プライマリボリュームのコピーは、アーカイブストレージシステム上の修正されたチャンクより速く、またはより確実に更新される場合、(例えば、最近のスナップショットボリュームのコピーから)正確であることが知られているアーカイブストレージシステム上に格納されている少なくともいくつかのボリュームのチャンクを使用し、さらに、スナップショットボリュームのコピーの作成の後に修正されている可能性のあるチャンクに対応するボリュームの一部分を取得するためにのみプライマリボリュームのコピーにアクセスすることによって、新規のミラーボリュームのコピーが作成されうる。同様に、アーカイブストレージシステム上の修正されたチャンクが、プライマリボリュームのコピーの現在の状態を確実に反映している場合に、プライマリボリュームのコピーによるやり取り、またはプライマリボリュームのコピーとのやり取りを介してではなく、それらの修正されたチャンクを使用しミラーボリュームのコピーを更新することができる。
それに加えて、いくつかの実施形態では、アーカイブストレージシステム上のボリューム情報がそのような最小のミラーボリュームのコピーに他の何らかの方法で格納される少なくとも一部のデータの代わりに使用される場合などでは、ミラーボリュームのコピー内に格納されるデータの量(およびその結果のミラーボリュームのコピーのサイズ)は、ボリュームのプライマリコピーに比べてかなり少ないと思われる。一例として、ボリュームのスナップショットコピーが、1つまたは複数のアーカイブストレージシステム上に作成された後、ボリュームの最小のミラーコピーが、そのような実施形態において、スナップショットボリュームのコピー内に存在するボリュームデータのどれかを格納する必要はない。スナップショットコピー作成の後に、プライマリボリュームのコピーに対して修正が行われると、それらのデータ修正のいくつかまたはすべてが、最小のミラーボリュームのコピーに対しても行われる(例えば、データ修正のすべて、アーカイブストレージシステム上に格納されている修正されたボリュームのチャンク内に反映されないデータ修正のみなど)−次いで、最小のミラーボリュームのコピーがプライマリボリュームのコピーに格上げされる場合など、最小のミラーボリュームのコピーへのアクセスが後で必要になった場合、アーカイブストレージシステムから(例えば、前のスナップショットボリュームのコピーから)取り出すことによって最小のミラーボリュームのコピーから欠落している他のデータ(例えば、ボリュームの修正されていない部分)を復元することができる。この方法により、ボリュームの信頼性を高めることが可能であり、その一方で、ミラーボリュームのコピーに対するサーバブロックデータストレージシステム上で使用されるストレージ領域の量も最小限度に抑えられる。
さらに他の実施形態において、ボリュームの最も確実なコピー、つまりマスターコピーは、アーカイブストレージシステム上に保持され、そのボリュームのプライマリコピーおよびミラーコピーは、ボリュームのキャッシュまたは他の部分集合(例えば、最近アクセスされた、および/またはまもなくアクセスされることが予想される部分集合)を反映することができ−そのような実施形態では、ブロックデータストレージサービスのローカルでないブロックデータストレージボリュームは、リモートのアーカイブストレージシステムに比べて実行プログラムによるアクセスのためのボリュームデータのより近いソースを構成するために使用されうる。それに加えて、少なくともいくつかのそのような実施形態において、ボリュームは、アーカイブストレージシステム上に保持されるマスターコピーに対応する特定のサイズのものであるが、プライマリコピーおよびミラーコピーはより小さなサイズであると、ユーザに対して説明することができる。さらに、少なくともいくつかのそのような実施形態において、ボリュームの一部に対する書き込みオペレーションまたは他のデータ修正が第2のデータストアにおいて更新されてから第2のデータストアからのボリュームのその部分のその後の読み取りオペレーションまたは他のアクセスを実行することを確実にすることによって(例えば、ライトバックキャッシュ更新技術を使用することによって)第2のデータストアにおける厳密なデータ整合性を維持するなどの方法により、遅延更新技術を使用することで、第1のデータストア内のデータについてはそのコピー(例えば、サーバブロックデータストレージシステム上のプライマリボリュームのコピー)を即座に更新し、明確に区別される第2のデータストア(例えば、アーカイブストレージシステム)内のその同じデータについてはそのコピーを後で更新することができる。このような遅延更新技術は、例えば、アーカイブストレージシステム上のボリュームの修正されたチャンクを更新するとき、またはアーカイブストレージシステム上に格納されているボリュームの修正されたチャンクからミラーボリュームのコピーを更新するときに使用することができる。他の実施形態では、アーカイブストレージシステム上のボリュームの修正されたチャンクを更新するときに他の技術を使用することができ、例えば第1のデータストア内のデータのコピーが修正されたときにライトスルーキャッシュ技術を使用して(例えば、アーカイブストレージシステム上の)第2のデータストア内のデータのコピーを即座に更新することなどが行える。
アーカイブストレージシステム上に格納されるこのようなスナップショットボリュームのコピーも、さまざまな他の恩恵をもたらす。例えば、ボリュームのすべてのプライマリコピーおよびミラーコピーが単一の地理的位置の場所(例えば、データセンター)にある複数のサーバブロックデータストレージシステム上に格納され、その地理的位置の場所にあるコンピューティングシステムおよびストレージシステムが利用不可能になった場合(例えば、データセンター全体に停電が生じた場合)、リモートの異なるストレージ配備場所にボリュームの最近のスナップショットコピーが存在していれば、その地理的位置の場所にあるコンピューティングシステムおよびストレージシステムが後で再び利用可能になったときに(例えば電力供給が復旧したときに)、その地理的位置の場所の1つまたは複数のサーバストレージシステムからのデータが喪失した場合などでも、ボリュームの最新バージョンが利用可能であることが保証されうる。さらに、このような状況では、リモートのアーカイブストレージシステムからのボリュームの最近の長期的なスナップショットコピーに基づいて、ボリュームの1つまたは複数の新規コピーを1つまたは複数の新規の地理的位置の場所に作成することで、利用不可能な地理的位置の外の場所にある1つまたは複数の実行プログラムコピーがそれらの新規ボリュームのコピーにアクセスし、使用することなどが可能になる。アーカイブストレージシステムとその使用法に関係する追加の詳細を以下で述べる。
すでに述べたように、少なくともいくつかの実施形態において、いくつかの、またはすべてのブロックデータストレージボリュームは、それぞれ、実行プログラムがボリュームにアクセスする同じデータセンター内などの、単一の地理的位置の場所にある2つまたはそれ以上の明確に区別されるサーバブロックデータストレージシステム上に格納されているコピーを有する−ボリュームのコピーおよび実行プログラムのすべてを同じデータセンターもしくは他の地理的位置の場所に配置することによって、レイテンシおよびスループットなどの、さまざまな所望のデータアクセス特性を(例えば、そのデータセンターもしくは他の地理的位置の場所の1つまたは複数の内部ネットワークに基づいて)維持することができる。例えば、少なくともいくつかの実施形態では、説明されている技術により、ローカルの物理ブロックデータストレージデバイスのアクセス特性と同様の、またはそれ以上のアクセス特性を有する非ローカルブロックデータストレージへのアクセスが可能になり、しかもRAID(「Redundant Array of Independent/Inexpensive Disks」)システムおよび/または専用のSAN(「ストレージエリアネットワーク」)の信頼性特性と同様の、またはそれを超えるかなり高い信頼性が実現され、さらにはコストもかなり低減される。他の実施形態では、代わりに、少なくともいくつかのボリュームに対するプライマリコピーおよびミラーコピーを、他の方法で、異なる地理的位置の場所(例えば、異なるデータセンター)などに格納し、1つのデータセンター全体が利用不可能になったとしてもボリュームの可用性をさらに維持することなどが可能である。ボリュームのコピーが異なる地理的位置の場所に格納されうる実施形態では、ユーザは、いくつかの状況において、実行プログラムとプライマリボリュームのコピーとの間の通信に対してネットワーク帯域幅を比較的高くし、レイテンシを低くするなどのために、特定のプログラムが特定のボリュームの近くで(例えば、プライマリボリュームのコピーが配置されている同じデータセンターで)実行されること、または特定のボリュームが特定の実行プログラムの近くに配置されることを要求することができる。
さらに、説明されている技術のうちの一部または全部へのアクセスは、いくつかの実施形態では、少なくとも一部のユーザに対して、課金ベースまたは他の有料形態の方式で提供されうる。例えば、ユーザは、ブロックデータストレージサービスを使用してボリュームを格納し、アクセスする場合、プログラム実行サービスを使用してプログラムを実行する場合、および/またはアーカイブストレージシステム(例えば、リモートの長期的なストレージサービスによって提供される)を使用してボリュームの長期的なバックアップまたは他のスナップショットコピーを格納する場合の料金支払いに、料金一時払い、定期的料金支払い(例えば、月払い)、および/または1つまたは複数の種類の利用毎の料金支払いを利用することができる。料金は、1つまたは複数の要因および活動に基づくものとしてよく、例えば、すべてというわけではないが、ボリュームを作成する(例えば、料金一時払い)、進行中にボリュームを格納および/または使用する(例えば、料金月払い)などのために、ボリュームのサイズに基づく、ミラーコピーの数、プライマリボリュームのコピーおよび/またはミラーボリュームのコピーが格納されるサーバブロックデータストレージシステムの特性(例えば、データアクセス速度、ストレージサイズなど)、および/またはボリュームの作成形態(例えば、空の新規ボリューム、既存のボリュームのコピーである新規ボリューム、スナップショットボリュームのコピーのコピーである新規ボリュームなど)などの、ボリュームの、サイズ以外の特性に基づく、スナップショットボリュームのコピーを作成する(例えば、料金一時払い)、および/または進行中にボリュームを格納する(例えば、料金月払い)などのために、スナップショットボリュームのコピーのサイズに基づく、単一のボリュームのスナップショットの数、スナップショットコピーが1つまたは複数の前のスナップショットコピーに関して増分であるかどうかなどの、1つまたは複数のスナップショットボリュームのコピーの、サイズ以外の特性に基づく、ボリュームに転送され、および/またはボリュームから転送されるデータの量(例えば、使用されるネットワーク帯域幅の量を反映する)、ボリュームに送られるデータアクセス要求の数、ボリュームにアタッチし、ボリュームを使用する実行プログラムの数(逐次的または同時実行)などのボリュームの使用率に基づく、ボリュームに対するのと似た方法などで、スナップショットに転送され、および/またはスナップショットから転送されるデータの量に基づくものとすることができる。それに加えて、提供されるアクセスは、さまざまな実施形態において、購入料金一時払い、継続レンタル料金支払い、および/または他の継続サブスクリプションベースの料金支払いなどのさまざまな支払い形態をとりうる。さらに、少なくともいくつかの実施形態および状況において、1人または複数のユーザからなる第1のグループはデータを課金ベースで他のユーザに提供することができ、これにより、(例えば、ボリュームおよび/またはスナップショットボリュームのコピーのコピーである新規ボリュームを作成できるようにする、1つまたは複数の作成されたボリュームを使用できるようにすることなどによって)第1のグループの1人または複数のユーザによって作成された現在のボリュームおよび/またはこれまでのスナップショットボリュームのコピーへのアクセスを受けることに関して、購入料金一時払いの形態であろうと、継続レンタル料金支払いの形態であろうと、他の継続サブスクリプションベースの料金支払いの形態であろうと、他のユーザに課金することなどを行うことができる。
いくつかの実施形態において、ブロックデータストレージサービス、プログラム実行サービス、および/またはリモートの長期的なストレージサービスが1つまたは複数のAPI(「アプリケーションプログラミングインターフェイス」)を備え、これにより、別のプログラムから(例えば、別のプログラムのユーザによって指示されたとおりに)実行されるべきさまざまな種類のオペレーションを開始できるようにプログラムを組むことなどができる。このようなオペレーションでは、すでに説明されている種類の機能の一部または全部を呼び出すことができ、限定はしないが、ボリュームの作成、削除、アタッチ、デタッチ、または説明、スナップショットの作成、削除、コピー、または説明、ボリュームおよび/またはスナップショットに対するアクセス権もしくは他のメタデータの指定、プログラムの実行の管理、他の種類の機能を取得するための対価の支払いの実行、複数のサービスのうちの1つまたは複数のサービスの機能の使用、および/またはそのような使用に関して支払われた、または支払われるべき料金に関するレポートおよび他の情報の取得など種類のオペレーションが挙げられる。APIによって実現されるオペレーションは、例えば、プログラム実行サービスのホストコンピューティングシステム上の実行プログラムによって、および/またはブロックデータストレージサービスおよび/またはプログラム実行サービスによって使用される1つまたは複数の地理的位置の場所の外部にいる顧客もしくは他のユーザのコンピューティングシステムによって呼び出すことができる。
例示することを目的として、特定の種類のブロックデータストレージが特定の種類のコンピューティングシステム上で実行される特定の種類のプログラムに特定の方法で提供されるいくつかの実施形態について、以下で説明する。これらの例は、例示することを目的として提示され、わかりやすくするために簡略化されており、本発明の技術はさまざまな他の状況において使用することができ、そのうちのいくつかの状況について以下で説明されているが、これらの技術は、仮想マシン、データセンター、または他の特定の種類のデータストレージシステム、コンピューティングシステム、もしくはコンピューティングシステム配置構成との使用に限定されない。それに加えて、いくつかの実施形態は、信頼できる非ローカルブロックデータストレージを構成し、使用するものとして説明されているが、他の実施形態では、ブロックデータストレージ以外の種類のデータストレージも同様に構成することができる。
複数のコンピューティングシステムがプログラムを実行し、信頼できる非ローカルブロックデータストレージにアクセスする例示的な一実施形態を示すネットワーク図である。 信頼できる非ローカルブロックデータストレージ機能をクライアントに提供する例を示す図である。 信頼できる非ローカルブロックデータストレージ機能をクライアントに提供する例を示す図である。 信頼できる非ローカルブロックデータストレージ機能をクライアントに提供する例を示す図である。 信頼できる非ローカルブロックデータストレージ機能をクライアントに提供する例を示す図である。 信頼できる非ローカルブロックデータストレージ機能をクライアントに提供する例を示す図である。 信頼できる非ローカルブロックデータストレージ機能をクライアントに提供する例を示す図である。 信頼できる非ローカルブロックデータストレージ機能へのプロビジョニングおよびクライアント側でのその使用の運用管理に適した例示的なコンピューティングシステムを示すブロック図である。 ブロックデータストレージシステムマネージャルーチンの例示的な一実施形態の流れ図である。 ノードマネージャルーチンの例示的な一実施形態の流れ図である。 ブロックデータストレージサーバルーチンの例示的な一実施形態の流れ図である。 プログラム実行サービスシステムマネージャルーチンの例示的な一実施形態の流れ図である。 プログラム実行サービスシステムマネージャルーチンの例示的な一実施形態の流れ図である。 ブロックデータストレージアーカイブマネージャルーチンの例示的な一実施形態の流れ図である。
図1は、ブロックデータストレージサービスおよび/またはプログラム実行サービスの制御下などにおいて、複数のコンピューティングシステムがプログラムを実行し、信頼できる非ローカルブロックデータストレージにアクセスする例示的な一実施形態を示すネットワーク図である。特に、この例では、プログラム実行サービスが、データセンター100内に配置されているさまざまなホストコンピューティングシステム上のプログラムの実行を管理し、ブロックデータストレージサービスが、データセンターの複数の他のサービスブロックデータストレージシステムを使用して、それらの実行プログラムに信頼できる非ローカルブロックデータストレージを提供する。データセンターの外部にある複数のリモートのアーカイブストレージシステムは、少なくともいくつかのブロックデータストレージボリュームの少なくともいくつかの部分の追加のコピーを格納するために使用することもできる。
この例では、データセンター100は、多数のラック105を備え、各ラックは、多数のホストコンピューティングシステム、さらにはこの例示的な実施形態におけるオプションのラックサポートコンピューティングシステム122を備える。例示されているラック105上のホストコンピューティングシステム110a〜cは、この例では1つまたは複数の仮想マシン120をそれぞれホストし、さらには、そのホストコンピューティングシステム上の仮想マシンに関連付けられている明確に区別されるノードマネージャモジュール115をホストし、それらの仮想マシンを管理する。1つまたは複数の他のホストコンピューティングシステム135は、この例では1つまたは複数の仮想マシン120をそれぞれホストする。各仮想マシン120は、プログラム実行サービスの顧客などの、ユーザ(図示せず)のために1つまたは複数のプログラムコピー(図示せず)を実行する独立したコンピューティングノードとして動作することができる。それに加えて、この例示的なデータセンター100は、明確に区別される仮想マシンを備えていない追加のホストコンピューティングシステム130a〜bをさらに備えるが、それでもなお、ユーザのために実行されている1つまたは複数のプログラム(図示せず)に対してコンピューティングノードとしてそれぞれ動作しうる。この例では、ホストコンピューティングシステム130a〜bおよび135から明確に区別されるコンピューティングシステム(図示せず)上で実行するノードマネージャモジュール125は、それらのホストコンピューティングシステムに関連付けられ、これにより、ホストコンピューティングシステム110のノードマネージャモジュール115と似た方法などで、それらのホストコンピューティングシステムが備えるコンピューティングノードを管理する。ラックサポートコンピューティングシステム122は、さまざまなユーティリティーサービス(例えば、プログラムの長期的な格納、計測、およびプログラム実行および/またはラックのローカルにある他のコンピューティングシステムによって実行される非ローカルブロックデータストレージアクセスの他の監視など)をそのラック105のローカルにある他のコンピューティングシステムに、さらに場合によっては、データセンター内に配置されている他のコンピューティングシステムに提供することができる。各コンピューティングシステム110、130、および135も、実行プログラムによって作成されるか、または他の何らかの形で使用されるプログラムおよび/またはデータのローカルコピー、さらにはさまざまな他のコンポーネントを格納するなどのために、1つまたは複数のローカルのアタッチされたストレージデバイス(図示せず)を有することができる。
この例では、データセンター内に配置されているホストコンピューティングシステムが備えるコンピューティングノード上の(または適宜、1つまたは複数の他のデータセンター160内に配置されているコンピューティングシステム、またはデータセンターの外部にある他のリモートのコンピューティングシステム180上の)プログラムの実行を管理するのを支援するプログラム実行サービスのために、PESシステムマネージャモジュールを実行するオプションのコンピューティングシステム140も例示されている。別のところでさらに詳しく説明されているように、PESシステムマネージャモジュールは、プログラムの実行を管理することに加えてさまざまなサービスを提供することができ、例えば、ユーザアカウントの管理(例えば、作成、削除、課金など)、実行すべきプログラムの登録、格納、および配布、プログラムの実行に関係する性能および監査データの収集ならびに処理、プログラムの実行に関する顧客または他のユーザからの対価の徴収などが挙げられる。いくつかの実施形態では、PESシステムマネージャモジュールは、ノードマネージャモジュール115および125との間で、ノードマネージャモジュールに関連付けられているコンピューティングノード上のプログラム実行を管理するための調整を行うことができるが、他の実施形態では、ノードマネージャモジュール115および125は、プログラムのそのような実行の管理を支援できない。
この例示的なデータセンター100は、データセンター内に配置されているホストコンピューティングシステムが備えるコンピューティングノード上で(または適宜、1つまたは複数の他のデータセンター160内に配置されているコンピューティングシステムまたはデータセンターの外部にある他のリモートのコンピューティングシステム180上で)実行するプログラムに対する非ローカルブロックデータストレージの可用性を管理するのを支援するブロックデータストレージサービスのために、ブロックデータストレージ(「BDS」)システムマネージャモジュールを実行するコンピューティングシステム175も備える。特に、この例では、データセンター100は、複数のサーバブロックデータストレージシステム165のプールを備え、それぞれが、1つまたは複数のボリュームのコピー155を格納する際に使用するためのローカルブロックストレージを有する。コンピューティングノード120および130上で実行されるプログラムからのボリュームのコピー155へのアクセスは、内部ネットワーク(複数可)185を介して行われる。別のところでさらに詳しく説明されているように、BDSシステムマネージャモジュールは、非ローカルブロックデータストレージ機能を提供することに関係するさまざまなサービスを提供することができ、例えば、ユーザアカウントの管理(例えば、作成、削除、課金など)、ブロックデータストレージボリュームおよびそれらのボリュームのスナップショットコピーの作成、使用、および削除、ブロックデータストレージボリュームおよびそれらのボリュームのスナップショットコピーの使用に関係する性能および監査データの収集および処理、ブロックデータストレージボリュームおよびそれらのボリュームのスナップショットコピーの使用に関する顧客または他のユーザからの対価の徴収などが挙げられる。いくつかの実施形態では、BDSシステムマネージャモジュールは、ノードマネージャモジュール115および125との間で、関連付けられているコンピューティングノード上で実行されているプログラムによるボリュームの使用を管理するための調整を行うことができるが、他の実施形態では、ノードマネージャモジュール115および125は、そのようなボリューム使用を管理するために使用できない。それに加えて、他の実施形態では、1つまたは複数のBDSシステムマネージャモジュールは、(例えば、データセンター内に配置されているホストコンピューティングシステムが備えるコンピューティングノード上で実行するプログラムによる非ローカルブロックデータストレージの管理を共有するために)単一のデータセンター内で実行するBDSシステムマネージャの複数のインスタンスを有するなど、および/または(例えば、コンピューティングシステム175上に別の集中型BDSシステムマネージャモジュールを備えずに、ピアツーピア方式により)複数のサーバブロックデータストレージシステム165のうちの一部、またはすべてにおいて実行するソフトウェアによって分散方式で実現されている、BDSシステムマネージャモジュールの機能のうちの少なくとも一部を有するなど、他の方法で構造化されうる。
この例では、さまざまなホストコンピューティングシステム110、130、および135、サーバブロックデータストレージシステム165、ならびにコンピューティングシステム125、140、および175は、図示されていないさまざまなネットワーキングデバイス(例えば、ルーター、スイッチ、ゲートウェイなど)を備えることができる、データセンターの1つまたは複数の内部ネットワーク185を介して相互接続される。それに加えて、内部ネットワーク185は、この例では外部ネットワーク170(例えば、インターネットもしくは他の公衆回線ネットワーク)に接続され、データセンター100は、データセンター100と外部ネットワーク170との間の相互接続部のところに1つまたは複数のオプションデバイス(図示せず)(例えば、ネットワークプロキシ、ロードバランサー、ネットワークアドレス変換デバイスなど)をさらに備えることができる。この例では、データセンター100は、外部ネットワーク170を介して、データセンター100に関して例示されている複数のコンピューティングシステムおよびストレージシステムのうちのいくつか、またはすべて、さらにはデータセンターの外部にある他のリモートのコンピューティングシステム180をそれぞれが備えることができる1つまたは複数の他のデータセンター160に接続される。他のコンピューティングシステム180は、さまざまな目的を持つさまざまな関係者、例えばデータセンター100のオペレータまたは第三者(例えば、プログラム実行サービスおよび/またはブロックデータストレージサービスの顧客)などによって運用されうる。それに加えて、他のコンピューティングシステム180の1つまたは複数は、別のところでさらに詳しく説明されているように、1つまたは複数の他のコンピューティングシステム180上で、または代わりに、データセンター100の1つまたは複数のコンピューティングシステム上で実行する1つまたは複数のアーカイブマネージャモジュール(図示せず)の制御下などにおいて、ブロックデータストレージサービスがやり取りすることができるアーカイブストレージシステム(例えば、リモートのネットワーク経由でアクセス可能なストレージデバイスの一部としての)とすることができる。さらに、本明細書には例示されていないが、少なくともいくつかの実施形態において、複数のサーバブロックデータストレージシステム165のうちの少なくともいくつかのサーバブロックデータストレージシステムは、サーバストレージシステム165がボリュームデータを(例えば、ボリュームのコピーのレプリケーションを行い、および/またはボリュームのプライマリコピーとミラーコピーとの間の整合性を維持することを目的として)共有できる高帯域幅接続などにより、1つまたは複数の他のネットワークもしくは他の接続媒体とさらに相互接続することができるが、そのような高帯域幅接続は少なくともいくつかの実施形態におけるさまざまなホストコンピューティングシステム110、130、および135には利用可能でない。
図1の例が説明のために簡略化されていること、およびホストコンピューティングシステム、サーバブロックデータストレージシステム、および他のデバイスの数および編成が図1に示されているものと比べてかなり大きなものとなる可能性のあることは理解されるであろう。例えば、例示されている一実施形態において、データセンター毎に約4000台のコンピューティングシステムがあるものとしてよく、これらのコンピューティングシステムのうちの少なくともいくつかは15台の仮想マシンをそれぞれホストすることができるホストコンピューティングシステムであり、および/またはこれらのコンピューティングシステムのうちのいくつかは複数のボリュームのコピーをそれぞれ格納することができるサーバブロックデータストレージシステムである。各ホストされている仮想マシンが1つのプログラムの実行する場合、そのようなデータセンターは、一度に60000個ほどのプログラムコピーを実行することができる。さらに、サーバストレージシステムの数、ボリュームのサイズ、およびボリューム毎のミラーコピーの数に応じて、数百または数千個の(またはそれ以上の)ボリュームをサーバブロックデータストレージシステム上に格納することができる。他の実施形態では、他の数のコンピューティングシステム、プログラム、およびボリュームが使用されうることは理解されるであろう。
図2A〜2Fは、信頼できる非ローカルブロックデータストレージ機能をクライアントに提供する例を示している。特に、図2Aおよび2Bは、ブロックデータストレージサービスなどに代わって信頼できる非ローカルブロックデータストレージ機能をクライアント(例えば、実行プログラム)に提供するために使用されうるサーバブロックデータストレージコンピューティングシステムの例を示しており、図2C〜2Fは、いくつかのブロックデータストレージボリュームの少なくともいくつかの部分を格納するためにアーカイブストレージシステムを使用する例を示している。この例では、図2Aは、各ボリュームが1つのプライマリコピーおよび少なくとも1つのミラーコピーを有するような、1つまたは複数のボリュームのコピー155をそれぞれ格納する複数のサーバブロックデータストレージシステム165を示している。他の実施形態では、別のところでさらに詳しく説明されているように、複数のプライマリボリュームのコピーを有すること(例えば、プライマリボリュームのコピーのすべてが1つまたは複数のプログラムによる同時読み取りアクセスに利用可能である場合)、および/または複数のミラーボリュームのコピーを有することなどによって、他の配置構成も使用することができる。例示的なサーバブロックデータストレージシステム165およびボリュームのコピー155は、例えば、図1のサーバブロックデータストレージシステム165およびボリュームのコピー155の部分集合に対応するものとすることができる。
この例では、サーバストレージシステム165aは、ボリュームAに対するプライマリコピー155A−a、ボリュームBに対するミラーコピー155B−a、およびボリュームCに対するミラーコピー155C−aを含む、少なくとも3つのボリュームのコピーを格納する。この例に示されていない1つまたは複数の他のボリュームのコピーは、サーバストレージシステム165aだけでなく、他のサーバストレージシステム165にもさらに格納されうる。他の例示的なサーバブロックデータストレージシステム165bは、この例のボリュームBに対するプライマリコピー155E−bだけでなくボリュームDに対するミラーコピー155D−bをも格納する。それに加えて、例示的なサーバブロックデータストレージシステム165nは、ボリュームAのミラーコピー155A−nおよびボリュームDのプライマリコピー155D−nを含む。したがって、実行プログラム(図示せず)がボリュームAにアタッチされ、ボリュームAを使用している場合、その実行プログラムに対するノードマネージャは、ボリュームAに対するプライマリコピー155A−aにアクセスするために、サーバブロックデータストレージシステム165a上で実行されるサーバストレージシステムソフトウェア(図示せず)を介するなどして、サーバブロックデータストレージシステム165aとやり取りすることになる。同様に、ボリュームBおよびDにアタッチされ、ボリュームBおよびDを使用している1つまたは複数の実行プログラム(図示せず)について、実行プログラム(複数可)に対するノードマネージャ(複数可)は、それぞれボリュームBについてはプライマリコピー155B−bにアクセスし、ボリュームDについては155D−nにアクセスするために、サーバブロックデータストレージシステム165bおよび165nとやり取りする。それに加えて、他のサーバブロックデータストレージシステムがさらに存在する場合もあり(例えば、サーバブロックデータストレージシステム165c〜165mおよび/または165oとそれ以降)、ボリュームCに対するプライマリボリュームのコピー、および/または他のプライマリボリュームのコピーとミラーボリュームのコピーを格納することができるが、この例には示されていない。したがって、この例では、各サーバブロックデータストレージシステムは、複数のボリュームのコピーを格納することができ、またプライマリボリュームのコピーとミラーボリュームのコピーとの組み合わせを格納することができるが、ただし、他の実施形態では他の方法でボリュームを格納することができる。
図2Bは、図2Aのものに似ているが、図2Aのサーバストレージシステム165bが故障するか、または他の何らかの形で利用不可能になった後のより最近の時点の、サーバブロックデータストレージシステム165を例示している。サーバストレージシステム165b、およびそれに格納されているボリュームBのプライマリコピーとボリュームDのミラーコピーが利用不可能になった場合の応答として、図2Bのサーバストレージシステム165の格納されているボリュームのコピーが、ボリュームBおよびDが利用可能である状態を維持するように修正されている。特に、ボリュームBのプライマリコピー155B−bが利用不可能になったため、サーバストレージシステム165a上のボリュームBの前のミラーコピー155B−aは、ボリュームBに対する新規プライマリコピーに格上げされた。したがって、1つまたは複数のプログラムがボリュームBの前のプライマリコピー155B−bにすでにアタッチされているか、または他の何らかの方法でやり取りしていたときにそのプライマリコピーが利用不可能になった場合、それらのプログラムは(例えば、それらのプログラムに関連付けられているノードマネージャによって)自動的に遷移され、サーバブロックデータストレージシステム165aとの進行中のやり取りを続行し、ボリュームBに対する新規プライマリコピー155B−aにアクセスしている可能性がある。それに加えて、ボリュームBに対する新規ミラーコピー155B−cが、サーバストレージシステム165c上に作成されている。
図2Aのサーバストレージシステム165nのボリュームAのミラーコピー155A−nは、わかりやすくするために、図2Bに示されていないが、これは引き続きボリュームDのプライマリコピー155D−nとともにサーバストレージシステム165n上で利用可能である。したがって、サーバストレージシステム165bが利用不可能になったときにボリュームDのプライマリコピー155D−nにすでにアタッチされていたか、または他の何らかの方法でやり取りしていたプログラムは、修正することなくサーバストレージシステム165n上のサーバストレージシステム上のその同じプライマリボリュームDのコピー155D−nとやり取りし続ける。しかし、利用不可能なサーバストレージシステム165b上のボリュームDのミラーコピー155D−bが利用不可能になったため、サーバストレージシステム165oのボリュームDのミラーコピー155D−oなどの、ボリュームDの少なくとも1つの追加のミラーコピーが、図2Bにおいて作成されている。それに加えて、図2Bは、サーバストレージシステム165c上の以前から存在していた(が図2Aには示されていない)ボリュームDのミラーコピー155D−cも含むボリュームDなどの、少なくともいくつかのボリュームが複数のミラーコピーを持つことができることを例示している。
図2C〜2Fは、アーカイブストレージシステムを使用していくつかのブロックデータストレージボリュームの少なくともいくつかの部分を格納する例を示している。この例では、図2Cは、例えばサーバブロックデータストレージシステム165bが利用不可能になる前のある時点において図2Aに示されている例示的なサーバブロックデータストレージシステム165に対応するように、1つまたは複数のボリュームのコピー155をそれぞれ格納する複数のサーバブロックデータストレージシステム165を例示している。図2Cは、例えば図1のコンピューティングシステム180の部分集合に対応しうる、複数のアーカイブストレージシステム180をさらに示している。特に、この例では、図2Cは、図2Aのサーバブロックデータストレージシステム165aおよび165bを示しているが、この例では、ボリュームBのプライマリコピーおよびミラーコピーのみが、これらのサーバブロックデータストレージシステムに関して示されている。図2Aに関して説明されているように、サーバストレージシステム165bは、ボリュームBのプライマリコピー155B−bを格納し、サーバストレージシステム165aは、ボリュームBのミラーコピー155B−aを格納する。
図2Cの例では、ボリュームBに関連付けられているユーザが、ボリュームBの新規初期スナップショットコピーを、長期的なバックアップなどのために、リモートのアーカイブストレージシステム上に格納するように要求した。したがって、ボリュームBは、例えばアーカイブストレージシステムの典型的な、もしくは最大のストレージサイズに対応するように、またはブロックデータストレージサービスによって決定されるような別の方法で、アーカイブストレージシステムによってそれぞれ別々に格納される複数のチャンク部分に分けられている。この例では、ボリュームBのプライマリコピー155B−bは、チャンク155B−b1から155B−bNまでのN個のチャンクに分けられており、ボリュームBのミラーコピー155B−aは、同様に、チャンク155B−a1から155B−aNまでN個のチャンクを使用して同じデータを格納する。ボリュームBのN個のチャンクのそれぞれは、2つの例示的なアーカイブストレージシステム180aおよび180bのうちの一方に別のデータオブジェクトとして格納される。したがって、これらの複数の対応する格納されている集合状態のデータオブジェクトは、ボリュームBに対する初期スナップショットボリュームのコピーを形成する。特に、プライマリボリュームBのコピーのチャンク1 155B−b1は、アーカイブストレージシステム180a上にデータオブジェクト180B1として格納され、チャンク2 155B−b2は、アーカイブストレージシステム180b上にデータオブジェクト180B2として格納され、チャンク3 155B−b3は、アーカイブストレージシステム180a上にデータオブジェクト180B3として格納され、チャンクN 155B−bNは、アーカイブストレージシステム180a上にデータオブジェクト180BNとして格納される。この例では、複数のチャンクへのボリュームBの分割は、ブロックデータストレージサービスによって実行され、ボリュームBの個別のチャンクは、アーカイブストレージシステムに個別転送されうるが、他の実施形態では、ボリュームB全体が、アーカイブストレージシステムに送られ、そこで、そのボリュームが複数のチャンクに分けられるか、または必要ならば他の何らかの方法でボリュームデータが処理されうる。
それに加えて、この例では、アーカイブストレージシステム180bは、アーカイブストレージシステムのオペレーションを管理するために、例えばデータオブジェクトの格納および取り出しを管理する、格納されているどのデータオブジェクトがどのボリュームに対応しているかを追跡する、転送されたボリュームデータを複数のデータオブジェクトに分ける、アーカイブストレージシステムの使用を計測し、他の何らかの方法で追跡するなどの作業を行うために、アーカイブマネージャモジュール190を実行するアーカイブストレージコンピューティングシステムである。アーカイブマネージャモジュール190は、例えば、図2Fに関してさらに詳しく説明されているように、例えばボリュームのスナップショットコピー毎に、特定のボリュームに対応するさまざまなデータオブジェクトに関するさまざまな情報を保持することができるが、他の実施形態では、代わりに、そのようなスナップショットボリュームのコピーの情報は、他の方法で(例えば、サーバブロックデータストレージシステムまたはブロックデータストレージサービスの他のモジュールによって)保持されうる。他の実施形態では、単一のアーカイブストレージシステムのみが使用されうるか、または、ボリュームBのチャンクに対応するデータオブジェクトが、さらに多くのアーカイブストレージシステム(図示せず)にまたがって格納されうる。それに加えて、他の実施形態では、各アーカイブストレージシステムは、アーカイブマネージャモジュールの少なくとも一部を実行して、例えば各アーカイブストレージシステムが明確に区別されるアーカイブマネージャモジュールを有することができ、または、アーカイブストレージシステムのすべてがピアツーピア型分散方式でアーカイブマネージャモジュールの機能を提供することができる。他の実施形態では、1つまたは複数のアーカイブマネージャモジュールは、他のブロックデータストレージサービスモジュールのローカルにある1つまたは複数のコンピューティングシステム上で(例えば、同じコンピューティングシステムまたはBDSシステムマネージャモジュールを実行するものに近いコンピューティングシステム上で)実行されうるか、または、アーカイブストレージシステムのオペレーションは、アーカイブマネージャモジュールを使用せずにブロックデータストレージサービスの1つまたは複数の他のモジュールによって(例えば、BDSシステムマネージャモジュールによって)直接管理されうる。
さらに、少なくともいくつかの実施形態では、アーカイブストレージシステムは、複数のアーカイブストレージシステム上への一部のまたは全部のデータオブジェクトのレプリケーションを行うなどの格納されているデータオブジェクトの信頼性を高めるためのさまざまなオペレーションを実行することができる。したがって、例えば、アーカイブストレージシステム180bの他のデータオブジェクト182bは、アーカイブストレージシステム180aのデータオブジェクト180B1、180B3、および180BNのうちの1つまたは複数のデータオブジェクトのミラーコピーを含むことができ、アーカイブストレージシステム180aの他のデータオブジェクト182aは、アーカイブストレージシステム180bのデータオブジェクト180B2のミラーコピーを同様に格納することができる。さらに、別のところでさらに詳しく説明されているように、いくつかの実施形態では、ボリュームBの少なくともいくつかのチャンクは、ボリュームBのチャンクを表すアーカイブストレージシステム上に格納されているデータオブジェクトがボリュームBの外部記憶域または他のリモートの長期的なバックアップとして使用される場合などにおいて、ボリュームBの初期スナップショットコピーを作成する要求を受け取る前にアーカイブストレージシステム上にすでに格納されている可能性がある。もしそうであれば、アーカイブストレージシステム上のスナップショットコピーは、アーカイブストレージシステム上のデータオブジェクトがボリュームBのチャンクの現在の状態を表す場合などは、むしろ、その時点で追加のボリュームデータを転送することなく作成されうるが、他の実施形態では、追加のステップを実行して、すでに格納されているデータオブジェクトがボリュームBのチャンクに関して必ず最新状態になるようにすることができる。
図2Dは、図2Cの例の続きであり、図2Cに関して初期スナップショットコピーが格納された後に実行されるボリュームBへの修正を反映している。特に、この例では、初期スナップショットボリュームのコピーが作成された後に、ボリュームにアタッチされている1つまたは複数のプログラム(図示せず)などによって、ボリュームBが修正される。この例では、プライマリボリュームBのチャンク3 155B−b3およびチャンクN 155B−bNに対応するボリュームBのコピーの少なくとも2つの部分内のデータが修正され、この修正されたチャンクデータはデータ3aおよびNaとしてそれぞれ例示されている。この例では、プライマリボリュームBのコピー155B−bが修正された後、サーバストレージシステム165bは、サーバストレージシステム165a上のミラーボリュームBのコピー155B−aの対応する更新を開始し、ミラーコピーのチャンク3 155B−a3は、修正された3aデータを含むように修正され、ミラーコピーのチャンクN 155B−aNは、修正されたNaデータを含むように修正される。したがって、ミラーボリュームBのコピーは、この例におけるプライマリボリュームBのコピーの状態と同じ状態に保持される。
それに加えて、いくつかの実施形態において、アーカイブストレージシステム上のデータは、ボリュームBへの変更を反映するようにさらに修正されうるが、これは、これらの新規のボリュームBのデータ修正が、現在、ボリュームBに対するスナップショットボリュームのコピーの一部でないとしても反映されうる。特に、チャンク3およびチャンクNのデータの前のバージョンが、アーカイブストレージシステム上に格納されている初期スナップショットボリュームのコピーの一部であるため、対応するデータオブジェクト180B3および180BNは、初期スナップショットボリュームのコピーの作成の後に生じるボリュームBのデータへの変更を反映するようには修正されない。修正されたボリュームBのデータのコピーが適宜作成される場合、これらのコピーは、この例では、チャンク3 155B−b3の修正された3aデータに対応するオプションのデータオブジェクト180B3aなど、およびチャンクN 155B−bNの修正されたNaデータに対応するオプションのデータオブジェクト180BNaなどの、追加のデータオブジェクトとして格納される。この方法により、初期スナップショットボリュームのコピーに対するデータは、ボリュームBのプライマリコピーおよびミラーコピーに変更が加えられたときでも保持される。オプションのデータオブジェクト180B3aおよび180BNaが作成される場合、この作成は、ミラーボリュームBのコピー155B−aに対し開始された更新と類似の方法でサーバブロックデータストレージシステム165bなどによる、さまざまな方法で開始されうる。
図2Eは、図2Dに関してすでに説明されている実施形態に関する代替的実施形態を示している。特に、図2Eの例では、ボリュームBは、ここでもまた、図2Dに関して説明されているのと似た方法でボリュームの初期スナップショットコピーがアーカイブストレージシステム上に格納された後に修正され、したがって、サーバストレージシステム165b上のボリュームBのプライマリコピー155B−bは、チャンク3 155B−b3およびチャンクN 155B−bNが更新されそれぞれ修正されたデータ3aおよびNaを含むように更新される。しかし、この例では、サーバストレージシステム165a上のボリュームBのミラーコピー155B−aは、ボリュームBの完全コピーとして保持されない。その代わりに、アーカイブストレージシステム上のボリュームBのスナップショットボリュームのコピーをミラーコピー155B−aと併せて使用して、ボリュームBのコピーを保持する。したがって、この例では、初期スナップショットボリュームのコピーの作成後にボリュームBのプライマリコピー155B−bに修正が加えられると、サーバストレージシステム165a上のミラーコピー155B−aにもそれらの修正が加えられ、それにより、そのミラーコピーは、チャンク3 155B−a3に対する修正された3aデータおよびチャンクN 155B−aNに対する修正されたNaデータを格納する。しかし、ボリュームBのミラーコピーは、アーカイブストレージシステム上のボリュームBのスナップショットボリュームのコピーがそのデータのコピーを含むので、初期スナップショットボリュームのコピーが作成された以降に修正されていないボリュームBの他のチャンクのコピーを最初に格納することはしない。したがって、図2Bに関してすでに説明されているように、サーバストレージシステム165bが後で利用不可能になった場合、サーバストレージシステム165a上のボリュームBのミラーコピー155B−aは、ボリュームBの新規プライマリコピーとして格上げされうる。この例示的な実施形態においてこの格上げを遂行するために、ボリュームBのミラーコピー155B−aの残り部分は、アーカイブストレージシステム上のボリュームBの初期スナップショットボリュームのコピーを使用して復元され、これにより、格納されているデータオブジェクト180B1を使用してチャンク155B−a1を復元すること、格納されているデータオブジェクト180B2を使用してチャンク155B−a2を復元することなどを行う。さらに、この例では、データオブジェクト180B3aおよび180BNaは、同様に、修正された3aおよびNaデータを表すようにアーカイブストレージシステム上に適宜格納される。もしそうであれば、いくつかの実施形態では、修正された3aおよびNaデータは、ミラーコピー155B−aについてサーバブロックデータストレージシステム165a上に最初に格納されることはなく、その代わりに、ミラーコピーのチャンク155B−a3および155B−aNは、他のミラーコピーのチャンクについてすでに説明されている方法と似た方法でアーカイブストレージシステムのデータオブジェクト180B3aおよび180BNaから同様にして復元することができる。
ボリュームBのスナップショットボリュームのコピーは、前の例では、ミラーコピーが新規プライマリボリュームのコピーに格上げされるときにボリュームBのミラーコピーを復元するために使用されるが、アーカイブストレージシステム上のスナップショットボリュームのコピーは、他の実施形態では他の方法で使用される。例えば、初期スナップショットボリュームのコピーと一致するボリュームBの新規コピーは、ミラーボリュームのコピーの復元についてすでに説明されている方法と類似の方法で、アーカイブストレージシステム上のスナップショットボリュームのコピーを使用して作成され、これにより、スナップショットボリュームのコピーの現時点においてボリュームBの新規ミラーコピーを作成すること、ボリュームBのスナップショットボリュームのコピーに基づく完全に新規のボリュームを作成すること、一方のサーバブロックストレージシステムから他方のサーバブロックストレージシステムへボリュームBも移動するのを支援することなどを行うことができる。それに加えて、ブロックデータサービスのサーバブロックデータストレージシステムが、複数の明確に区別されるデータセンターまたは他の地理的位置の場所において利用可能である場合、リモートのアーカイブストレージシステムは、それらすべてのサーバブロックデータストレージシステムから利用可能であるものとしてよく、したがって、それらの地理的位置の場所において、リモートのアーカイブストレージシステムを使用して、スナップショットボリュームのコピーに基づいて新規ボリュームのコピーを作成することができる。
図2Fは、図2Cおよび2Dの例の続きであり、ボリュームBに対して追加の修正を加えた後のより最近の時点に続く。特に、図2Cまたは2Dに関して説明されているようにチャンク3およびチャンクNに修正が加えられた後、ボリュームBの第2のスナップショットボリュームのコピーがアーカイブストレージシステム上に作成される。その後、チャンク2および3内に格納されているボリュームBのデータに対して追加の修正が加えられる。したがって、図2Fに例示されているようなボリュームBのプライマリコピー155B−bは、チャンク1 155B−b1内のオリジナルのデータ1、第2のスナップショットボリュームのコピーの作成後に修正されるチャンク2 155B−b2内のデータ2a、第2のスナップショットボリュームのコピーの作成後にこれもまた修正されるチャンク3 155B−b3内のデータ3b、および第2のスナップショットボリュームのコピーの作成後ではなくて、初期の第1のスナップショットボリュームのコピーの作成後に修正されたチャンクN 155B−bN内のデータNaを含む。したがって、ボリュームBの第3のスナップショットボリュームのコピーが作成されることを指示された後、チャンク155B−b2に対応し、修正されたデータ2aを含むデータオブジェクト180B2aと、チャンク155B−b3に対応し、修正されたデータ3bを含むチャンク180B3bとを有する、第2のスナップショットボリュームのコピーの作成以降に修正された2つのチャンクに対応するように、追加のデータオブジェクトがアーカイブストレージシステム内に作成される。
それに加えて、この例では、サーバブロックデータストレージシステム165aは図示されていないが、(例えば、アーカイブストレージシステム180b上に、または別のところに格納される)アーカイブマネージャモジュール190によって保持される情報250のコピーは、アーカイブストレージシステム上に格納されるスナップショットボリュームのコピーに関する情報を提供するように示されている。特に、この例では、情報250は、それぞれが明確に区別されるスナップショットボリュームのコピーに対応する複数の行250a〜250dを含む。この例における情報の行のそれぞれは、ボリュームのコピーに対する一意的な識別子、スナップショットボリュームのコピーが対応するボリュームの指示、およびスナップショットボリュームのコピーを含むアーカイブストレージシステム上に格納されているデータオブジェクトの順序付きリストの指示を含む。したがって、例えば、行250aは、図2Cに関して説明されているボリュームBの初期スナップショットボリュームのコピーに対応し、初期スナップショットボリュームのコピーが格納されているデータオブジェクト180B1、180B2、180B3など180BNまでを含むことを示す。行250bは、この例には示されていないさまざまな格納済みのデータオブジェクトを含む異なるボリュームAに対する例示的なスナップショットボリュームのコピーに対応する。行250cは、ボリュームBの第2のスナップショットボリュームのコピーに対応し、行250dは、ボリュームBの第3のスナップショットボリュームのコピーに対応する。この例では、ボリュームBに対する第2のボリュームのコピーおよび第3のボリュームのコピーは、完全コピーではなく増分コピーであり、そのため、前のスナップショットボリュームのコピー以降に変更されていないボリュームBのチャンクは、引き続き、同じ格納されているデータオブジェクトを使用して表される。したがって、例えば、行250c内のボリュームBの第2のスナップショットコピーは、第2のスナップショットボリュームのコピーがデータオブジェクト180B1および180B2をボリュームBの初期スナップショットボリュームのコピーのデータオブジェクト(および場合によっては、チャンク4からチャンクN−1までのデータオブジェクトの一部または全部、ただし図示されていない)と共有することを示す。同様に、行250dに示されているボリュームBの第3のスナップショットコピーも、引き続き、初期の、および第2のスナップショットボリュームのコピーと同じデータオブジェクト180B1を使用する。
複数のスナップショットボリュームのコピー間で共通のデータオブジェクトを共有することにより、チャンク1などの変更のないボリュームのチャンクの新規コピーは、各スナップショットボリュームのコピーに対するアーカイブストレージシステム上に個別のコピーを有しないため、アーカイブストレージシステム上に格納する量が最小限度に抑えられる。しかし、他の実施形態では、いくつかの、またはすべてのスナップショットボリュームのコピーが増分でなく、その代わりにそれぞれがチャンク内のデータが変更されたかどうかに関係なく各ボリュームのチャンクの個別のコピーを含むことができる。それに加えて、1つまたは複数の重複するデータオブジェクトを1つまたは複数の他のスナップショットボリュームのコピーと共有しうる、増分スナップショットボリュームのコピーが使用される場合、その重複するデータオブジェクトは、スナップショットボリュームのコピーに関して追加の種類のオペレーションが実行されるときに管理される。例えば、行250aで示されているボリュームBに対する初期スナップショットボリュームのコピーを削除する要求を受け取り、したがって、もはや必要なくなったアーカイブストレージシステム上のストレージ領域を解放する場合、その初期スナップショットボリュームのコピーに対して示されているデータオブジェクトの一部のみがアーカイブストレージシステム上から削除されうる。例えば、チャンク3およびチャンクNは、初期スナップショットボリュームのコピーが作成された後に修正され、したがって、初期スナップショットボリュームのコピーの対応する格納されているデータオブジェクト180B3および180BNは、その初期スナップショットボリュームのコピーでしか使用されない。したがって、これら2つのデータオブジェクトは、ボリュームBの初期スナップショットボリュームのコピーが削除された場合に、アーカイブストレージシステム180aから永久的に削除されうる。しかし、データオブジェクト180B1および180B2は、ボリュームBのその初期スナップショットボリュームのコピーが削除される場合であっても保持される。これは、ボリュームBの少なくとも第2のスナップショットボリュームのコピーの一部であり続けるからである。
この例には示されていないが、情報250は、どのアーカイブストレージシステムがデータオブジェクトのそれぞれを格納するかに関する情報、誰がどのような状況の下でスナップショットボリュームのコピーの情報にアクセスすることを許可されているかに関する情報などを含む、スナップショットボリュームのコピーに関するさまざまな他の種類の情報を含むことができる。一例として、いくつかの実施形態では、何人かのユーザがスナップショットボリュームのコピーを作成し、それらのスナップショットボリュームのコピーに対する少なくとも何人かの他のユーザのアクセスを、少なくともいくつかの状況において利用可能とすることができる。例えば、他のユーザが、1つまたは複数の特定のスナップショットボリュームのコピーのうちのコピーを作成することを、課金ベースなどにより許可することができる。このような場合、そのようなアクセスに関係する情報は、情報250の中に、または別のところに格納することができ、アーカイブマネージャモジュール190は、そのような情報を使用して、特定のスナップショットボリュームのコピーに対応する情報についてなされた要求に応じるかどうかを決定することができる。あるいは、他の実施形態では、スナップショットボリュームのコピーへのアクセスの管理を、要求が許可されていない限りそれらの要求がアーカイブストレージシステムに送られないようにするなど、ブロックデータストレージサービスの他のモジュール(例えば、BBSシステムマネージャモジュール)によって行うことができる。
図2A〜2Fの例が説明のために簡略化されていること、およびサーバブロックデータストレージシステム、アーカイブストレージシステム、および他のデバイスの数および編成が図示されているものと比べてかなり大きなものとなる可能性のあることは理解されるであろう。同様に、他の実施形態では、プライマリボリュームのコピー、ミラーボリュームのコピー、および/またはスナップショットボリュームのコピーは、他の方法で格納され、管理されうる。
図3は、クライアントに対する信頼できる非ローカルブロックデータストレージ機能のプロビジョニングおよび使用の運用管理に適した例示的なコンピューティングシステムを示すブロック図である。この例では、サーバコンピューティングシステム300は、BDSシステムマネージャモジュール340の一実施形態を実行して、ホストコンピューティングシステム370および/または少なくともいくつかの他のコンピューティングシステム390上で実行されるプログラムへの、例えばサーバブロックデータストレージシステム360によって提供されるブロックデータストレージボリューム(図示せず)などへの非ローカルブロックデータストレージ機能のプロビジョニングを管理する。この例におけるホストコンピューティングシステム370のそれぞれは、さらに、ノードマネージャモジュール380の一実施形態を実行し、例えばネットワーク385(例えば、コンピューティングシステム300、360、370、および適宜、他のコンピューティングシステム390のうちの少なくともいくつかを備える、図示されていない、データセンターの内部ネットワーク)上でBDSシステムマネージャモジュール340と協調して、複数の非ローカルブロックデータストレージボリュームのうちの少なくともいくつかへのホストコンピューティングシステム上で実行されるプログラム375のアクセスを管理する。他の実施形態では、ノードマネージャモジュール380のいくつか、またはすべてが、1つまたは複数の他のコンピューティングシステム(例えば、他のコンピューティングシステム390)を管理することができる。
それに加えて、それぞれ実行プログラム375によって使用される複数の非ローカルブロックデータストレージボリューム(図示せず)のうちの少なくともいくつかを格納する複数のサーバブロックデータストレージシステム360が例示されており、これらのボリュームに対するアクセスは、この例では、ネットワーク385を介して行われる。サーバブロックデータストレージシステム360の1つまたは複数は、複数のサーバブロックデータストレージシステム360のうちの1つまたは複数のオペレーション、さらにはサーバブロックデータストレージシステム360によって格納されるデータに関するさまざまな情報(図示せず)を管理するサーバソフトウェアコンポーネント(図示せず)もそれぞれ格納することができる。したがって、少なくともいくつかの実施形態では、図3のサーバコンピューティングシステム300は、図1のコンピューティングシステム175に対応するものとしてよく、図1のノードマネージャモジュール115および125のうちの1つまたは複数は、図3のノードマネージャモジュール380に対応するものとしてよく、および/または図3のサーバブロックデータストレージコンピューティングシステム360のうちの1つまたは複数は、図1のサーバブロックデータストレージシステム165に対応するものとしてよい。それに加えて、この例示的な実施形態では、サーバブロックデータストレージシステム360上に格納されている少なくともいくつかのブロックデータストレージボリュームの少なくともいくつかの部分のスナップショットコピーおよび/または他のコピーを格納することができる、複数のアーカイブストレージシステム350が示されている。アーカイブストレージシステム350は、コンピューティングシステム300、360、および370のうちのいくつかまたはすべてとやり取りをすることもでき、いくつかの実施形態では、1つまたは複数の他の外部ネットワーク(図示せず)上でコンピューティングシステム300、360、および370とやり取りする(例えば、図示されていない、リモートのストレージサービスの)リモートのアーカイブストレージシステムとすることができる。
他のコンピューティングシステム390は、少なくともいくつかの実施形態においてさまざまな種類の他の近くにある、またはリモートのコンピューティングシステムをさらに備えることができ、これは、ブロックデータストレージサービスの顧客または他のユーザがコンピューティングシステム300および/または370とやり取りするために使用するコンピューティングシステムも含む。さらに、他の複数のコンピューティングシステム390のうちの1つまたは複数のコンピューティングシステムは、PESシステムマネージャモジュールをさらに実行して、ホストコンピューティングシステム370および/または他のホストコンピューティングシステム390上のプログラムの実行を調整することができるか、またはコンピューティングシステム300もしくは例示されている他の複数のコンピューティングシステムのうちの1つのコンピューティングシステムが、そのようなPESシステムマネージャモジュールを実行することができるが、ただし、PESシステムマネージャモジュールはこの例では示されていない。
この例示的な実施形態では、コンピューティングシステム300は、CPU(「中央演算処理装置」)305、ローカルストレージ320、メモリ330、およびさまざまなI/O(「入出力」)コンポーネント310を備えるが、この例で示されているI/Oコンポーネントはディスプレイ311、ネットワーク接続部312、コンピュータ可読媒体ドライブ313、および他のI/Oデバイス315(例えば、キーボード、マウス、スピーカー、マイクロホンなど)を含む。例示されている実施形態において、BDSシステムマネージャモジュール340は、メモリ330において実行されており、1つまたは複数の他のプログラム(図示せず)も適宜メモリ330において実行されうる。
各コンピューティングシステム370も、同様に、CPU 371、ローカルストレージ377、メモリ374、およびさまざまなI/Oコンポーネント372(例えば、サーバコンピューティングシステム300のI/Oコンポーネント310と類似のI/Oコンポーネント)を備える。例示されている実施形態では、ノードマネージャモジュール380は、例えばプログラム実行サービスおよび/またはブロックデータストレージサービスの顧客に代わって、コンピューティングシステム上のメモリ374において実行されている1つまたは複数の他のプログラム375を管理するためにメモリ374において実行されている。いくつかの実施形態では、コンピューティングシステム370のいくつかまたはすべてが、複数の仮想マシンをホストすることができ、もしそうであれば、実行プログラム375のそれぞれは、明確に区別されるホストされている仮想マシンコンピューティングノード上で実行される仮想マシンのイメージ全体(例えば、オペレーティングシステムと1つまたは複数のアプリケーションプログラムを含む)であるものとしてよい。ノードマネージャモジュール380は、同様に、他のホストされている仮想マシンを管理する特権モードで動作する仮想マシンモニターなどの、他のホストされている仮想マシン上で実行されていてもよい。他の実施形態では、実行プログラムコピー375およびノードマネージャモジュール380は、コンピューティングシステム370上で実行される単一のオペレーティングシステム(図示せず)上で明確に区別されるプロセスとして実行されうる。
この例における各アーカイブストレージシステム350は、CPU 351、ローカルストレージ357、メモリ354、およびさまざまなI/Oコンポーネント352(例えば、サーバコンピューティングシステム300のI/Oコンポーネント310と類似のI/Oコンポーネント)を備えるコンピューティングシステムである。例示されている実施形態では、アーカイブマネージャモジュール355は、例えばブロックデータストレージサービスおよび/またはアーカイブストレージシステムを実現する明確に区別されるストレージサービスの顧客に代わって、複数のアーカイブストレージシステム350のうちの1つまたは複数のアーカイブストレージシステムのオペレーションを管理するためにメモリ354において実行されている。他の実施形態では、アーカイブマネージャモジュール355は、他の複数のコンピューティングシステム390のうちの1つなどの他のコンピューティングシステム、またはBDSシステムマネージャモジュール340と連動するコンピューティングシステム300上で実行されている可能性がある。それに加えて、ここに例示されていないが、いくつかの実施形態では、アーカイブストレージシステム350によって格納されるデータに関するさまざまな情報を、図2Fに関してすでに説明されているような、ストレージ357または別の場所に保持することができる。さらに、ここに例示されていないが、サーバブロックデータストレージシステム360および/または他のコンピューティングシステム390のそれぞれは、CPU、ローカルストレージ、メモリ、およびさまざまなI/Oコンポーネントなどの、アーカイブストレージシステム350に関して例示されている種類のコンポーネントのいくつかまたはすべてを同様に備えることができる。
BDSシステムマネージャモジュール340およびノードマネージャモジュール380は、別のところでさらに詳しく説明されているように、クライアント(例えば、実行プログラム)への信頼できる非ローカルブロックデータストレージ機能の提供および使用を管理するさまざまなアクションを実行することができる。この例では、BDSシステムマネージャモジュール340は、サーバブロックデータストレージシステム360および/またはアーカイブストレージシステム350上に格納されるボリュームに関する情報を含むデータベース325をストレージ320内に保持することができ(例えば、ボリュームを管理する際に使用するために)、またはユーザまたブロックデータストレージサービスの他の態様に関するさまざまな他の情報(図示せず)をさらに格納することができる。他の実施形態では、ボリュームに関する情報は、それらのコンピューティングシステム上のノードマネージャモジュール380によって、および/または他のコンピューティングシステムによって分散方式などの他の方法で格納することができる。それに加えて、この例では、ホストコンピューティングシステム370上の各ノードマネージャモジュール380は、ボリュームのプライマリコピーを提供するサーバブロックデータストレージシステム360とのやり取りを調整すること、およびプライマリボリュームのコピーが利用不可能になった場合にボリュームのミラーコピーに切り替える仕方を決定することなどのために、ホストコンピューティングシステムにアタッチされ、ホストコンピューティングシステム上の実行プログラム375によって使用される現在のボリュームに関する情報378をローカルストレージ377に格納することができる。ここには例示されていないが、各ホストコンピューティングシステムは、実行プログラムにはローカルストレージ377を提供する1つまたは複数の他のローカルの物理的にアタッチされたストレージデバイスと区別できないように見える、ホストコンピューティングシステムにアタッチされ、コンピューティングシステム上で実行されるプログラムによって使用される各ボリュームに対する明確に区別される論理ローカルブロックデータストレージデバイスインターフェイスをさらに備えることができる。
コンピューティングシステム300、350、360、370、および390は、単に例示的なものであるにすぎず、本発明の範囲を制限することを意図していないことは理解されるであろう。例えば、コンピューティングシステム300、350、360、370、および/または390は、例えばネットワーク385および/またはインターネットまたはワールドワイドウェブ(「Web」)などの1つまたは複数の他のネットワークを介して、例示されていない他のデバイスに接続されうる。より一般的には、コンピューティングノードまたは他のコンピューティングシステムまたはデータストレージシステムは、限定はしないが、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワークストレージデバイスおよび他のネットワークデバイス、PDA、携帯電話、無線電話、ポケベル、電子手帳、インターネットアプライアンス、テレビベースのシステム(例えば、セットトップボックスおよび/またはパーソナル/デジタルビデオレコーダーを使用するもの)、および適切な通信機能を備えるさまざまな他の消費者製品を含む、説明されている種類の機能を対話操作し、実行することができるハードウェアまたはソフトウェアの任意の組み合わせを備えることができる。それに加えて、例示されているモジュールによって提供される機能は、いくつかの実施形態では、モジュールを減らして組み合わせるか、またはモジュールを追加して分散させることができる。同様に、いくつかの実施形態では、例示されているモジュールのうちのいくつかの機能を提供せず、および/または他の追加機能を利用可能にすることができる。
さまざまなアイテムが使用中にメモリ内に、またはストレージ上に格納されているように示されているが、これらのアイテムまたはそれらの部分は、メモリ管理およびデータ保全性のためにメモリと他のストレージデバイスとの間で転送されうることも理解されるであろう。あるいは、他の実施形態では、ソフトウェアモジュールおよび/またはシステムのうちのいくつかまたはすべてが、他のデバイス上のメモリにおいて実行され、コンピュータ間通信を介して例示されているコンピューティングシステムと通信することができる。さらに、いくつかの実施形態では、これらのシステムおよび/またはモジュールのうちのいくつかまたはすべてを、限定はしないが、1つまたは複数の特定用途向け集積回路(ASIC)、標準的な集積回路、コントローラ(例えば、適切な命令を実行すること、およびマイクロコントローラおよび/または組み込みコントローラを備えることにより)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)などを含む、少なくとも部分的にはファームウェアおよび/またはハードウェアなどの他の手段で実装するか、または構成することができる。これらのモジュール、システム、およびデータ構造のいくつかまたはすべては、適切なドライブによって、または適切な接続を介して読み取られるハードディスク、メモリ、ネットワーク、または持ち運び可能な媒体品などの、コンピュータ可読媒体上に(例えば、ソフトウェア命令または構造化データとして)格納することもできる。これらのシステム、モジュール、およびデータ構造は、無線方式の、および有線/ケーブル方式の媒体を含む、さまざまなコンピュータ可読伝送媒体上に生成されるデータ信号として(例えば、搬送波または他のアナログもしくはデジタル伝搬信号の一部として)送信することもでき、さまざまな形態をとりうる(例えば、単一の、または多重化されたアナログ信号の一部として、または複数の離散デジタルパケットまたはフレームとして)。このようなコンピュータプログラム製品は、他の実施形態では他の形態をとることもありうる。したがって、本発明は、他のコンピュータシステム構成を用いて実施することもできる。
図4は、ブロックデータストレージシステムマネージャルーチン400の例示的な一実施形態の流れ図である。ルーチンは、例えば、図1のブロックデータストレージシステムマネージャモジュール175および/または図3のBDSシステムマネージャモジュール340の実行によって実現され、これにより実行プログラムによって使用されるブロックデータストレージサービスなどを提供することができる。例示されている実施形態では、このルーチンは、単一のデータセンターまたは他の地理的位置の場所にある複数のサーバブロックデータストレージシステムとやり取りすることができるが(例えば、このような各データセンターまたは他の地理的位置の場所にその地理的位置の場所において実行されるルーチンの明確に区別される一実施形態が置かれている場合)、他の実施形態では、単一のルーチン400で、複数の明確に区別されるデータセンターもしくは他の地理的位置の場所に対応することができる。
ルーチンの例示されている実施形態は、ブロック405から開始し、そこで、要求または他の情報を受け取る。ルーチンは、ブロック410に進み、受け取った要求が、ブロックデータストレージサービスのユーザおよび/または新規ボリュームにアクセスすることを望んでいる実行プログラムなどからの、新規ブロックデータストレージボリュームを作成する要求であったかどうかを判定し、新規ブロックデータストレージボリュームを作成する要求である場合、ブロック415に進み、ボリューム作成を実行する。例示されている実施形態では、ブロック415内のルーチンは、(例えば、選択されたサーバストレージシステムの場所および/または機能に少なくとも一部は基づき)ボリュームのコピーが格納されることになる1つまたは複数のサーバブロックデータストレージシステムを選択し、それらの選択されたサーバストレージシステム上のボリュームのコピーを初期化し、ボリュームに関する格納されている情報を更新して新規ボリュームを反映する。例えば、いくつかの実施形態では、新規ボリュームの作成は、例えば、ブランクにする、他の指示されたボリューム(例えば、同じデータセンターまたは他の地理的位置の場所にある他のボリューム、または、リモートの場所に格納されているボリューム)のコピーを入れる、指示されたスナップショットボリュームのコピー(例えば、アーカイブストレージシステムとやり取りしてスナップショットボリュームのコピーを取得することなどにより、1つまたは複数のアーカイブストレージシステムによって格納されているスナップショットボリュームのコピー)のコピーを入れる、など、選択されたサーバの各リニアストレージの指定されたサイズを、指定された方法で初期化することを含みうる。他の実施形態では、1つのボリュームに対する指定されたサイズのリニアストレージの論理ブロックを、単一の論理ブロックとして与えられる複数の不連続ストレージ領域を使用すること、および/または複数のローカルの物理ハードディスクにまたがってリニアストレージの1つの論理ブロックをストライピングすることなどによって、1つまたは複数のサーバブロックデータストレージシステム上に作成することができる。他のデータセンターまたは他の地理的位置の場所にすでに存在しているボリュームのコピーを作成するために、ルーチンは、例えば、その位置におけるブロックデータストレージサービスオペレーションをサポートするルーチン400の他のインスタンスと調整することができる。さらに、いくつかの実施形態では、少なくともいくつかのボリュームは、それぞれ、複数の明確に区別されるサーバストレージシステム上で少なくとも1つのプライマリボリュームのコピー、および1つまたは複数のミラーコピーを含む複数のコピーを有し、この場合、複数のサーバストレージシステムを選択して、初期化することができる。
ブロック410において、受け取った要求がボリュームを作成する要求でないと判定される場合、ルーチンは、ブロック420に進み、受け取った要求が、実行プログラムコピーから、または実行プログラムコピーおよび/または指示されたボリュームに関連付けられているユーザに代わって操作される他のコンピューティングシステムから受け取った要求などの、既存のボリュームを実行プログラムコピーにアタッチする要求であるかどうかを判定する。アタッチする要求である場合、ルーチンは、ブロック425に進んで、ボリュームのコピーを格納するサーバブロックデータストレージシステムのうちの少なくとも1つを識別し、識別されたサーバストレージシステムのうちの少なくとも1つを実行プログラムに関連付ける(例えば、プライマリボリュームのコピーを表すコンピューティングノードに論理ローカルブロックストレージデバイスをマウントさせることなどによって、そのボリュームに対するプライマリサーバストレージシステムをプログラムが実行されるコンピューティングノードに関連付ける)。アタッチされるボリュームは、そのボリュームに対する一意的な識別子および/またはそのボリュームを作成したユーザ、またはそのボリュームに他の何らかの方法で関連付けられているユーザに対する識別子を使用するなど、さまざまな方法で識別されうる。ボリュームを実行プログラムコピーにアタッチした後、ルーチンは、一度に1つのプログラムだけがボリュームにアタッチされることを許される場合、または一度に1つのプログラムだけがそのボリュームへの書き込みアクセス権または他の変更アクセス権を有することを許される場合などにおいて、そのボリュームに関する格納されている情報をさらに更新して、実行プログラムがアタッチしたことを示すことができる。それに加えて、指示されている実施形態において、実行プログラムへのボリュームの実際のアタッチを行いやすくするなどのために、識別されている複数のサーバストレージシステムのうちの少なくとも1つのサーバストレージシステムに関する情報を、実行プログラムに関連付けられているノードマネージャに提供することができる。他の実施形態では、ノードマネージャは、そのような情報に対して他のアクセス権を有している場合がある。
ブロック420において、受け取った要求が実行プログラムにボリュームをアタッチする要求でないと判定された場合、ルーチンは、ブロック430に進み、受け取った要求が、そのボリュームに、または、他のコンピューティングシステム(例えば、そのボリュームに関連付けられているユーザおよび/または他のユーザのボリュームのスナップショットコピーを作成するアクセス権を購入したユーザによって操作されるコンピューティングシステム)にアタッチされている実行プログラムから受け取った要求などの、指示されたボリュームに対するスナップショットコピーを作成する要求であるかどうかを判定する。いくつかの実施形態において、1つのボリュームのスナップショットボリュームのコピーは、そのボリュームが実行プログラムにアタッチされているか、または実行プログラムにより使用中であるかどうかに関係なく、および/またはそのボリュームが、ルーチン400が実行される同じデータセンターもしくは他の地理的位置の場所に格納されるかどうかに関係なく作成されうる。スナップショットコピーを作成する要求であると判定された場合、ルーチンは、ブロック435に進み、1つまたは複数のネットワーク上でアクセス可能なリモートの長期的なストレージサービスなどと連動して、1つまたは複数のアーカイブストレージシステム(例えば、リモートの格納場所のアーカイブストレージシステム)のオペレーションを調整する1つまたは複数のアーカイブマネージャモジュールとやり取りすることなどにより、指示されたボリュームのスナップショットボリュームのコピーの作成を開始する。いくつかの実施形態では、スナップショットボリュームのコピーの作成は、リモートのストレージサービスがボリュームの少なくともいくつかのチャンクをすでに格納している場合などに、ルーチン400からの命令に応答して第三者のリモートのストレージサービスによって実行されうる。さらに、少なくともいくつかの実施形態では、スナップショットボリュームのコピーが1つまたは複数の他のスナップショットボリュームのコピーに関して増分であるかどうかなどの、さまざまな他のパラメータをさらに指定することができる。
ブロック430において、受け取った要求がスナップショットボリュームのコピーを作成する要求でないと判定された場合、ルーチンは、ブロック440に進み、ブロック405で受け取った情報が1つまたは複数のサーバブロックデータストレージシステム(または他の実施形態では、1つまたは複数のボリューム)に障害が発生しているか、または他の形の利用不可能な状態にあるのかを示しているかどうかを判定する。例えば、ブロック485に関して以下で説明されているように、いくつかの実施形態では、ルーチンは、pingメッセージまたは他のメッセージをサーバブロックデータストレージシステムに定期的に、または常時、送信して応答が受信されたかどうかを判定すること、またはサーバストレージシステムのステータスに関する情報を他の何らかの方法で取得することなどによって、複数のサーバブロックデータストレージシステムのうちのいくつかまたはすべてのサーバブロックデータストレージシステムのステータスを監視し、その監視結果に基づき利用不可能であるかどうかの判定を下す。ブロック440において、受け取った情報が1つまたは複数のサーバストレージシステムに障害が発生している可能性を示していると判定された場合、ルーチンは、ブロック445に進み、示された1つまたは複数のサーバストレージシステム上に格納されている1つまたは複数のボリュームが利用可能である状態を維持するアクションを実行する。特に、ブロック445のルーチンは、指示された1つまたは複数のサーバストレージシステム上に格納されるそのようなボリュームが、プライマリボリュームのコピーであるかどうかを判定し、各そのようなプライマリボリュームのコピーについて、他のサーバストレージシステム上のそのボリュームに対する複数のミラーコピーのうちの1つをそのボリュームに対する新規プライマリコピーになるように格上げする。次いで、ブロック450におけるルーチンは、利用不可能であることが示されているボリュームの1つとは別のサーバストレージシステム上で利用可能なボリュームの既存のコピーを使用することなどによって、1つまたは複数の他のサーバストレージシステム上に各ボリュームの少なくとも1つの新規コピーのレプリケーションを作成する。他の実施形態では、プライマリコピーへのミラーコピーへの格上げおよび/または新規ミラーコピーの作成は、(例えば、ボリュームのミラーコピー間で選択プロトコルを使用する)サーバブロックデータストレージシステムによる分散方式などの、他の方法で実行することができる。それに加えて、いくつかの実施形態では、ミラーボリュームのコピーは、ボリュームのプライマリコピーの部分のみ(例えば、そのボリュームのスナップショットコピーが前に作成された以降に修正された部分のみ)を含む最小のコピーとすることができ、プライマリコピーへのミラーコピーの格上げは、(例えば、最新のスナップショットコピーから)完全になるように新規プライマリコピーの情報を収集することをさらに含むことができる。
次いで、ブロック455では、ルーチンは、適宜、1つまたは複数の利用不可能なサーバストレージシステム上のプライマリボリュームのコピーにすでにアタッチされているプログラムを実行するなどのために、1つまたは複数の実行プログラムをミラーコピーから格上げされた新規プライマリボリュームのコピーにアタッチすることを開始する。他の実施形態では、新規プライマリボリュームのコピーへのそのような再アタッチは、他の方法で(例えば、再アタッチが行われる実行プログラムに関連付けられているノードマネージャによって)実行される。次いで、ブロック458において、ルーチンは、ブロック450において作成された新規ボリュームのコピーおよびブロック445において格上げされた新規プライマリボリュームを示すなどのために、利用不可能なサーバストレージシステム上のボリュームに関する情報を更新する。他の実施形態では、新規プライマリボリュームのコピーは、他の方法で、例えば、既存のミラーボリュームのコピーを格上げするのではなく新規ボリュームのコピーをプライマリボリュームのコピーとして作成することによって作成することができるが、この作業は既存のミラーボリュームのコピーを格上げする場合に比べて時間がかかることがある。それに加えて、ブロック450において新規ボリュームのコピーのレプリケーション元となるボリュームのコピーが利用可能でない場合、例えば、1つのボリュームに対するプライマリおよびミラーコピーを格納する複数のサーバストレージシステムがすべて実質的に同時に失敗した場合、いくつかの実施形態において、ルーチンは、アーカイブストレージシステム上で利用可能なボリュームに対する1つまたは複数の最近のスナップショットボリュームのコピー、他のデータセンターもしくは他の地理的位置の場所のボリュームのコピーなどから、他の方法でそのようなレプリケーションに使用するためのボリュームの情報を取得しようと試みることができる。
ブロック440において、受け取った情報が1つまたは複数のサーバブロックデータストレージシステムに障害が発生しているか、または他の形の利用不可能な状態にあるのかを示す情報でないと判定された場合、ルーチンは、ブロック460に進み、ブロック405で受け取った情報が1つまたは複数のボリュームを1つまたは複数の新規のサーバブロックデータストレージシステムに移動することを示しているかどうかを判定する。このようなボリューム移動は、同じ地理的位置の場所にある他のサーバブロックデータストレージシステムへの移動(例えば、既存のボリュームをこれらのボリュームをサポートするのにより適した装備を持つストレージシステムに移動する)、および/または1つまたは複数の他のデータセンターもしくは他の地理的位置の場所にある1つまたは複数のサーバデータストレージシステムへの移動を含む、別のところでさらに詳しく説明されているようなさまざまな理由から実行されうる。それに加えて、ボリュームの移動は、ボリュームに関連付けられているブロックデータストレージシステムのユーザからの要求、使用されている現在のサーバストレージシステムより優れているボリュームに対するサーバストレージシステムの自動検出に基づく、ブロックデータストレージサービスの人のオペレータからの要求(例えば、現在のサーバストレージシステムの利用過剰および/または新規サーバストレージシステムの利用不足)など、さまざまなきっかけで開始されうる。ブロック460において、受け取った情報が1つまたは複数のそのようなボリュームのコピーを移動するための情報であると判定された場合、ルーチンはブロック465に進み、ブロック415に関してすでに説明されている方法と似た方法などにより(例えば、サーバブロックデータストレージシステム上の既存のボリュームのコピーを使用すること、1つまたは複数のアーカイブストレージシステム上のそのボリュームのスナップショットまたは他のコピーを使用することなどによって)、1つまたは複数の新規サーバブロックデータストレージシステム上に各指示されたボリュームのコピーを1つ作成し、ブロック465においてそのボリュームに対する格納されている情報をさらに更新する。それに加えて、いくつかの実施形態では、ルーチンは、新規ボリュームのコピーが作成された後サーバブロックデータストレージシステムから前のボリュームのコピーを削除するなどの、移動をサポートする追加のアクションを実行することができる。さらに、移動される前のボリュームのコピーに1つまたは複数の実行プログラムがアタッチされた状況では、ルーチンは、実行プログラムに対する移動される前のボリュームのコピーのデタッチを開始することができ、および/または作成される新規ボリュームのコピーへのそのような実行プログラムの再アタッチを、関連付けられている命令をその実行プログラムに対するノードマネージャに送ることなどによって、開始することができる。他の実施形態では、ノードマネージャが、そのようなアクションを実行することができる。
ブロック460において、受け取った情報が1つまたは複数のボリュームを移動する命令でないと判定された場合、ルーチンは、ブロック485に進み、1つまたは複数の他の指示されたオペレーションを適宜実行する。他のオペレーションは、さまざまな実施形態においてさまざまな形態をとることができ、例えば、すべてというわけではないが、いくつかのまたはすべてのサーバブロックデータストレージシステムの監視を実行するオペレーション(例えば、pingメッセージまたは他のステータスメッセージをサーバブロックデータストレージシステムに送信して、応答が返るのを待つことによって)、実行される監視、ボリュームのプライマリコピーを格納するが、そのボリュームの1つまたは複数のミラーコピーを更新することはできないプライマリサーバブロックデータストレージシステムから受け取ったメッセージ、ノードマネージャモジュールから受け取ったメッセージなどに基づく、ボリュームのプライマリコピーまたはミラーコピーが利用不可能であるとの判定に応答して代替プライマリボリュームのコピーおよび/またはミラーボリュームのコピーの作成を開始するオペレーション、1つまたは複数のボリュームのデタッチ、削除、および/または説明を行うオペレーション、1つまたは複数のスナップショットボリュームのコピーの削除、説明、および/またはコピーを行うオペレーション、ユーザによるボリュームおよび/またはスナップショットボリュームのコピーの使用を、例えば対価の支払いを目的としてそのような使用の量を測定するために、追跡するオペレーションなどが挙げられる。ブロック415、425、435、458、465、または485の後、ルーチンは、ステップ495に進み、明示的な終了命令を受け取るまで続けるかどうかを決定する。処理を続ける場合、ルーチンはブロック405に戻り、そうでなければ、ルーチンはブロック499に進んで終了する。
それに加えて、少なくともいくつかの種類の要求については、ルーチンは、いくつかの実施形態において、要求側に対して指定されているアクセス権および/または要求の関連付けられているターゲット(例えば、指示されているボリューム)などに基づき、要求側がその要求を行う権限を与えられていることをさらに確認することができる。いくつかのそのような実施形態では、対価の支払いが行われない場合にその要求を実行しないなどのために、権限付与の確認は、要求された機能に対する対価を要求側から徴収すること(またはそのような対価の支払いがすでに行われていることを確認すること)をさらに含むことができる。例えば、少なくともいくつかの実施形態および状況において関連する支払いを伴いうる種類の要求としては、ボリュームを作成する要求、ボリュームをアタッチする要求、スナップショットコピーを作成する要求、指示されたボリュームを(例えば、プレミアムサーバストレージシースへ)移動する要求、および他の種類の指示されたオペレーションが挙げられる。さらに、ユーザに代わって実行されるいくつかの種類またはすべての種類のアクションを監視して計測し、例えば、後から、それらのアクションのうちの少なくともいくつかについて対応する利用毎の料金を決定する際に利用することができる。
図5は、ノードマネージャルーチン500の例示的な一実施形態の流れ図である。ルーチンは、例えば、図1のノードマネージャモジュール115および/または125の実行、および/または図3のノードマネージャモジュール380の実行によって実現され、これにより1つまたは複数の実行プログラムによる非ローカルブロックデータストレージの使用を管理することなどを行える。例示されている実施形態では、ブロックデータストレージサービスは、1つまたは複数のBDSシステムマネージャモジュールと複数のノードマネージャモジュール、および適宜、1つまたは複数のアーカイブマネージャモジュールの組み合わせを通じて機能を提供するが、他の実施形態では、他の構成(例えば、ノードマネージャモジュールおよび/またはアーカイブマネージャモジュールを伴わない単一のBDSシステムマネージャモジュール、BDSシステムマネージャモジュールを伴わずに調整されたマネージャ内で一緒に実行される複数のノードマネージャモジュールなど)を使用することができる。
ルーチンの例示されている実施形態は、ブロック505から始まり、そこで、関連付けられているコンピューティングノード上のプログラム実行に関係する要求を受け取る。ルーチンはブロック510に進み、その要求が指示された関連付けられているコンピューティングノード上の1つまたは複数の指示されたプログラムを実行することに関係する要求、例えばプログラム実行サービスおよび/またはそれらのプログラムに関連付けられているユーザからの要求などかどうかを判定する。もしそうであれば、ルーチンはブロック515に進み、指示されたプログラム(複数可)のコピーを取得し、関連付けられているコンピューティングノード上のプログラム(複数可)の実行を開始する。いくつかの実施形態では、1つまたは複数の指示されたプログラムは、ブロック505において受け取った要求の一部としてルーチン500に送られる指示されたプログラムに基づいて、ブロック515において取得されうる。他の実施形態では、指示されたプログラムは、ローカルの、または非ローカルのストレージ(例えば、リモートのストレージサービス)から取り出すことができる。他の実施形態では、ルーチン500は、プログラム実行サービスをサポートする他のルーチンが、関連付けられているコンピューティングノードに代わってそれらのオペレーションを実行する場合などでは、実行プログラムに関係するオペレーションを実行しなくてもよい。
ブロック510において、受け取った要求が1つまたは複数の指示されたプログラムを実行する要求でないと判定される場合、ルーチンは、ブロック520に進み、実行プログラム、図4のルーチン400、および/または指示されたボリュームおよび/または指示された実行プログラムに関連付けられているユーザなどから、指示されたボリュームを指示された実行プログラムにアタッチする要求を受け取ったかどうかを判定する。アタッチする要求を受け取った場合、ルーチンはブロック525に進み、そのボリュームのプライマリコピーの指示を取得し、そのプライマリボリュームのコピーをコンピューティングノードに対する代表的な論理ローカルブロックデータストレージデバイスに関連付ける。いくつかの実施形態では、ルーチン500によって、代表的なローカルの論理ブロックデータストレージデバイスを実行プログラムおよび/またはコンピューティングノードに指示することができるが、他の実施形態では、実行プログラムが、ローカルの論理ブロックデータストレージデバイスの作成を開始することができる。例えば、いくつかの実施形態では、ルーチン500は、GNBD(「グローバルネットワークブロックデバイス」)技術を使用し、ブロックデバイスを特定の仮想マシンにインポートし、その論理ローカルブロックデータストレージデバイスをマウントすることによって仮想マシンのコンピューティングノード上でその論理ローカルブロックデータストレージデバイスを利用可能にすることができる。いくつかの実施形態では、ルーチンは、ブロック525において、そのボリュームに対する1つまたは複数のミラーボリュームのコピーの指示を取得し格納するアクション、そのプライマリボリュームのコピーが後で利用不可能になった場合にルーチンがミラーボリュームのコピーに動的にアタッチすることを可能にするアクションなどの、他のアクションをさらに実行することができる。
ブロック520において、ブロック505の受け取った要求が、指示されたボリュームをアタッチする要求でないと判定された場合、ルーチンはブロック530に進み、受け取った要求が、読み取り要求または書き込み要求などの、アタッチされたボリュームに対する実行プログラムによるデータアクセス要求であるかどうかを判定する。アタッチされたボリュームに対するデータアクセス要求である場合、ルーチンはブロック535に進み、そこで、ルーチンは、データアクセス要求に対応する関連付けられているプライマリボリュームのコピーを(例えば、そのデータアクセス要求について実行プログラムによって使用される代表的なローカルの論理ブロックデータストレージデバイスに基づいて)識別し、プライマリボリュームのコピーへの要求されたデータアクセスを開始する。別のところでさらに詳しく説明されているように、いくつかの実施形態では、実際のプライマリボリュームのコピーおよび/またはミラーボリュームのコピーを即座に修正して、書き込みデータアクセス要求を反映するが(例えば、ミラーボリュームのコピーを常に更新するように、ミラーボリュームのコピーを、そのミラーボリュームのコピーがプライマリボリュームのコピーに格上げされる場合のみ更新するように、など)、1つまたは複数のアーカイブストレージシステム上に格納されている対応するチャンクは、書き込みデータアクセス要求を反映するように即座には修正しない(例えば、十分な修正がなされたときに、および/または対応する情報に対する読み取りアクセスが要求されたときにアーカイブストレージシステム上に格納されているコピーを最終的に更新するなど)など、遅延書き込み方式を使用することができる。例示されている実施形態では、ミラーボリュームのコピーの保守は、ルーチン500以外のルーチンによって(例えば、プライマリボリュームのコピーを格納するプライマリサーバブロックデータストレージシステムによって)実行されるが、他の実施形態では、ルーチン500は、ブロック535において、それらのミラーボリュームのコピーへの類似の、もしくは同一のデータアクセス要求を送ることによって複数のミラーボリュームのコピーのうちの1つまたは複数のミラーボリュームのコピーを保守することをさらに支援することができる。さらに、いくつかの実施形態では、対応するユーザによって(例えば、そのボリュームのスナップショットコピーを作成する要求の一部として)明示的に要求されるまで、ボリュームをアーカイブストレージシステム上に格納しないが、他の実施形態では、(例えば、アーカイブストレージシステムのコピーがプライマリボリュームのコピーおよび/またはミラーボリュームのコピーに対する外部記憶域として使用される場合)少なくともいくつかのボリュームの少なくともいくつかの部分のコピーを、アーカイブストレージシステム上に保持しうる。
ブロック535の後に、ルーチンはブロック540に進み、所定の制限時間内にブロック535で送られた要求についてプライマリサーバブロックデータストレージシステムから、オペレーションの成功を示すなどの、応答を受け取ったかどうかを判定する。応答を受け取っていない場合、ルーチンは、プライマリサーバブロックデータストレージシステムは利用不可能であると判定し、ブロック545に進み、複数のミラーボリュームのコピーのうちの1つを新規プライマリボリュームのコピーとしてアタッチし、そのミラーボリュームのコピーに対するサーバブロックデータストレージシステムを、そのボリュームに対する新規プライマリサーバブロックデータストレージシステムとして関連付ける変更を開始する。さらに、ルーチンは、ブロック535に関して上で示されているのと似た方法で新規プライマリボリュームのコピーにデータアクセス要求を同様に送り、さらにいくつかの実施形態では、適切な応答を受け取ったかどうかを監視し、受け取っていなければ再びブロック545に進むことができる(例えば、他のミラーボリュームのコピーを格上げし、このプロセスを繰り返す)。いくつかの実施形態において、新規プライマリボリュームのコピーとしてのミラーボリュームのコピーへの変更の開始は、ルーチン400とコンタクトをとってどのミラーボリュームのコピーが新規プライマリボリュームのコピーになるべきかを決定すること、ルーチン500によってミラーボリュームのコピーがプライマリボリュームのコピーになるように格上げされたときに(例えば、プライマリボリュームのコピーが利用不可能であるという指示がブロック545のルーチン500によって送られたことがきっかけで)ルーチン400から命令を受け取ることなどによって、ルーチン400と連携して実行されうる。
ブロック530において、受け取った要求が1つのアタッチされているボリュームに対するデータアクセス要求でないと判定された場合、ルーチンは、ブロック585に進み、1つまたは複数の他の指示されたオペレーションを適宜実行する。他のオペレーションは、さまざまな実施形態において、1つまたは複数のボリューム(例えば、管理されている1つまたは複数の実行プログラムのアタッチ先となるボリュームに対する新規の格上げされたプライマリボリュームのコピー)に対する新規ボリュームの情報の、ルーチン400からの命令、ルーチン500に関連付けられているコンピューティングノード上の実行プログラムからボリュームをデタッチする命令などの、さまざまな形態をとりうる。それに加えて、少なくともいくつかの実施形態では、ルーチン500は、ルーチン500が1つまたは複数の関連付けられている仮想マシンコンピューティングノードを管理する仮想マシンモニターの一部として、またはそのような仮想マシンモニターと連携して動作する場合などに、仮想マシンモニターの1つまたは複数の他のアクションをさらに実行することができる。
ブロック515、525、545、もしくは585の後、または、ブロック540において、所定の制限時間内に応答を受け取ったと判定された場合、ルーチンは、ブロック595に進み、明示的な終了命令を受け取るまで続けるかどうかを決定する。処理を続ける場合、ルーチンはブロック505に戻り、そうでなければ、ブロック599に進んで終了する。
それに加えて、少なくともいくつかの種類の要求については、ルーチンは、いくつかの実施形態において、要求側に対して指定されているアクセス権および/または要求の関連付けられているターゲット(例えば、指示されているボリューム)などに基づき、要求側がその要求を行う権限を与えられていることをさらに確認することができる。いくつかのそのような実施形態では、対価の支払いが行われない場合にその要求を実行しないなどのために、権限付与の確認は、要求された機能に対する対価を要求側から徴収すること(またはそのような対価の支払いがすでに行われていることを確認すること)をさらに含むことができる。例えば、少なくともいくつかの実施形態および状況において関連する支払いを伴いうる種類の要求としては、指示されたプログラムを実行する要求、ボリュームをアタッチする要求、いくつかの種類またはすべての種類のデータアクセス要求を実行する要求、および他の種類の指示されたオペレーションが挙げられる。さらに、ユーザに代わって実行されるいくつかの種類またはすべての種類のアクションを監視して計測し、例えば、後から、それらのアクションのうちの少なくともいくつかについて対応する利用毎の料金を決定する際に利用することができる。
図6は、サーバブロックデータストレージシステムのルーチン600の例示的な一実施形態の流れ図である。このルーチンは、例えば、サーバブロックデータストレージシステム上のソフトウェアコンポーネントの実行により、そのサーバストレージシステムにおける1つまたは複数のブロックデータストレージボリューム上のブロックデータの格納を管理するなどのために(例えば、図1および/または図2のサーバブロックデータストレージシステム165に対し)実行されうる。他の実施形態では、1つまたは複数のサーバブロックデータストレージシステムを管理するために1つまたは複数の他のコンピューティングシステム上でソフトウェアを実行することなどにより、他の方法でルーチンの機能の一部または全部が提供されうる。
ルーチンの例示されている実施形態は、ブロック605から開始し、そこで、要求を受け取る。ルーチンは610に進み、受け取った要求が、サーバストレージシステムに対する利用可能なストレージ領域(例えば、1つまたは複数のローカルのハードディスク上のストレージ領域)の1ブロックを新規の指示されたボリュームに関連付けることなどによって、新規ボリュームを作成することに関係しているかどうかを判定する。この要求は、例えば、ルーチン400から、および/または作成される新規ボリュームに関連付けられているユーザからの要求としてよい。もしそうであれば、ルーチンはブロック615に進み、新規ボリュームに関する情報を格納し、ブロック620において、その新規ボリュームに対するストレージ領域(例えば、指示されたサイズのストレージ領域の論理線形ブロック)を初期化する。別のところでさらに詳しく説明されているように、いくつかの実施形態では、新規ボリュームは、他の既存のボリュームもしくはスナップショットボリュームのコピーに基づいて作成される場合があり、その場合、ルーチンは、ブロック620において、適切なデータをストレージ領域にコピーすることによって新規ボリュームに対するストレージ領域を初期化することができるが、他の実施形態では、(例えば、ストレージ領域をデフォルト値に初期化する、すべてゼロで埋めるなど)他の方法で新規ボリュームのストレージ領域を初期化することができる。
ブロック610において、受け取った要求が新規ボリュームを作成する要求でないと判定された場合、ルーチンは、ブロック625に進み、データアクセス要求を開始した実行プログラムに関連付けられているノードマネージャなどから、サーバストレージシステム上に格納されている既存のボリュームに対するデータアクセス要求を受け取ったかどうかを判定する。受け取った要求がボリュームに対するデータアクセス要求である場合、ルーチンはブロック630に進み、指示されたボリューム上でデータアクセス要求を実行する。次いで、ルーチンはブロック635に進み、例示されている実施形態では、現在のサーバストレージシステム上の指示されたボリュームがそのボリュームに対するプライマリボリュームのコピーであるなどの場合に、そのボリュームの1つまたは複数のミラーコピーの対応する更新を適宜開始する。他の実施形態では、プライマリボリュームのコピーとミラーボリュームのコピーとの間の整合性は、他の方法で維持されうる。別のところでさらに詳しく説明されているように、いくつかの実施形態では、少なくともいくつかのボリュームの格納されているデータ内容に対する少なくともいくつかの修正も、これらのボリュームのバックアップコピーまたは他のコピーを保持するなどのために、1つまたは複数のアーカイブストレージシステム(例えば、リモートのストレージサービスで)に対して実行される場合があり、その場合、ルーチンは、アーカイブストレージシステムに対する更新をさらに開始してアーカイブストレージシステム上のボリュームの1つまたは複数のコピーに対する対応する更新を開始することができる。さらに、ルーチンが、ブロック635または別のところで、(例えば、ミラーボリュームのコピーおよびそのミラーサーバブロックデータストレージシステムが利用可能であるか定期的にチェックするためにブロック635で送られたデータアクセス要求に、またはルーチン600によって開始されたpingメッセージもしくは他のステータスメッセージに所定の制限時間内に応答できないこと、エラー条件が発生しているか、シャットダウンまたは故障モードオペレーションを開始したという、ミラーサーバブロックデータストレージシステムからのメッセージなどに基づいて)ボリュームのミラーコピーが利用可能でないと判定した場合、ルーチンは、対応するメッセージを図4のルーチン400に送るか、またはミラーボリュームのコピーの作成を直接開始することなどによって、ボリュームの新規ミラーコピーを作成するアクションを開始することができる。
ブロック625において、受け取った要求が1つのボリュームに対するデータアクセス要求でないと判定された場合、ルーチンはブロック685に進み、1つまたは複数の他の指示されたオペレーションを適宜実行する。そのような他のオペレーションは、さまざまな実施形態においてさまざまな形態をとることができ、例えば、すべてというわけではないが、ボリュームを(例えば、関連付けられているストレージ領域を他の用途に利用できるようにするなどのために)削除するオペレーション、ボリュームを指示されたコピー先に(例えば、他のサーバブロックデータストレージシステム上の他の新規ボリュームに、スナップショットボリュームのコピーとして使用するために1つまたは複数のアーカイブストレージシステムに、など)コピーするオペレーション、ボリュームの使用率に関する情報を(例えば、顧客による課金ベースのボリュームの使用率などのボリュームの使用率の計測のために)提供するオペレーション、サーバブロックデータストレージシステムに対する進行中の保守または診断(例えば、ローカルのハードディスクのデフラグ)を実行するオペレーションなどが挙げられる。ブロック620、635、または685の後、ルーチンは、ステップ695に進み、明示的な終了命令を受け取るまで続けるかどうかを決定する。もしそうであれば、ルーチンはブロック605に戻り、そうでなければ、ブロック699に進んで終了する。
それに加えて、少なくともいくつかの種類の要求については、ルーチンは、いくつかの実施形態において、要求側に対して指定されているアクセス権および/または要求の関連付けられているターゲット(例えば、指示されているボリューム)などに基づき、要求側がその要求を行う権限を与えられていることをさらに確認することができるが、他の実施形態では、このルーチンは、要求を受け取ったルーチン(例えば、ノードマネージャルーチンおよび/またはBDSシステムマネージャルーチン)によって要求がすでに許可されていると仮定することができる。さらに、ユーザに代わって実行されるいくつかの種類またはすべての種類のアクションを監視して計測し、例えば、後から、それらのアクションのうちの少なくともいくつかについて対応する利用毎の料金を決定する際に利用することができる。
図7Aおよび7Bは、PESシステムマネージャルーチン700の例示的な一実施形態の流れ図である。ルーチンは、例えば、図1のPESシステムマネージャモジュール140の実行によって実現されうる。他の実施形態では、ブロックデータストレージサービスの一部としてのルーチン400などによる、他の方法でルーチン700の機能の一部または全部が提供されうる。
例示されている実施形態において、ルーチンはブロック705から開始し、そこで、プログラムの実行に関係するステータスメッセージまたは他の要求を受け取る。ルーチンはブロック710に進み、受け取ったメッセージまたは要求の種類を判定する。ブロック710において、要求の種類が、ユーザもしくは実行プログラムなどから、プログラムを実行する要求であると判定された場合、ルーチンはブロック720に進み、プログラム実行に利用可能な候補ホストコンピューティングシステムのグループなどから、指示されたプログラムを実行する1つまたは複数のホストコンピューティングシステムを選択する。いくつかの実施形態では、ユーザの指令または注目する他の指示された基準に従って、1つまたは複数のホストコンピューティングシステムが選択されうる。次いで、ルーチンはブロック725に進み、選択されたホストコンピューティングシステムに関連付けられているノードマネージャとやり取りすることなどによって、選択されたホストコンピューティングシステムのそれぞれによるプログラムの実行を開始する。次いで、ブロック730において、ルーチンは1つまたは複数のハウスキーピングタスク(例えば、計測および/または他の課金目的などのために、ユーザによるプログラム実行を監視すること)を適宜実行する。
ブロック710において、受け取った要求が、後から実行するために利用可能であるものとして新規プログラムを登録する要求であると判定された場合、ルーチンは、ブロック740に進み、その使用のためのプログラムおよび関連する管理情報(例えば、プログラムを使用する権限を付与されているユーザに関係するアクセス制御情報および/または許可されている使用の種類)の指示を格納し、いくつかの状況では、プログラムの少なくとも1つの集中型コピーをさらに格納することができる。次いで、ルーチンはブロック745に進み、後で使用する指示されたプログラムのいくつかのコピーを1つまたは複数のホストコンピューティングシステムに分散配置するオペレーションを適宜開始し、例えばそれらのホストコンピューティングシステムのローカルのストレージから格納されているコピーを取り出すことによってそれらのホストコンピューティングシステムによるプログラムの起動を高速化することなどを行う。他の実施形態では、指示されたプログラムの1つまたは複数のコピーを、1つまたは複数のリモートのアーカイブストレージシステム上に置くなど他の方法で格納することができる。
ブロック710において、1つまたは複数のホストコンピューティングシステムに関するステータスメッセージをブロック705で受け取ったと判定された場合、ルーチンは、ブロック750に進み、実行プログラムの使用率および/またはホストコンピューティングシステムに関する他のステータス情報(例えば、非ローカルブロックデータストレージボリュームの使用率)を追跡するなどのために、それらのホストコンピューティングシステムに関する情報を更新する。いくつかの実施形態では、ステータスメッセージが、ノードマネージャモジュールによって定期的に送信されるが、他の実施形態では、ステータスメッセージは、別のときに(例えば、関連する変更が生じた場合に必ず)送信されうる。さらに他の実施形態では、ルーチン700は、必要に応じてノードマネージャモジュールおよび/またはホストコンピューティングシステムに情報を要求することができる。ステータスメッセージは、特定のコンピューティングシステム上で現在実行されているプログラムの数およびID、特定のコンピューティングシステム上のローカルのプログラムリポジトリに現在格納されているプログラムのコピーの数およびID、非ローカルブロックデータストレージボリュームのアタッチおよび/または他の使用状況、コンピューティングシステムに対する性能関係およびリソース関係の情報(例えば、CPU、ネットワーク、ディスク、メモリなどの利用度)、コンピューティングシステムに対する構成情報、ならびに特定のコンピューティングシステム上のハードウェアまたはソフトウェアに関係するエラーもしくは障害状態のレポートなどの、さまざまな種類の情報を含みうる。
ブロック705におけるルーチンが、他の種類の要求またはメッセージを受け取ったと判定した場合、このルーチンは、ブロック785に進み、1つまたは複数の他の指示されたオペレーションを適宜実行する。このような他のオペレーションとしては、例えば、現在実行中のプログラムの実行のサスペンドまたは終了、およびプログラム実行サービスのシステム管理の側面を他の何らかの形で管理するオペレーション(新規ユーザの登録、プログラム実行サービスの使用に対する対価の決定および徴収など)が挙げられる。ブロック745、750、または785の後に、ルーチンはブロック730に進み、1つまたは複数のハウスキーピングタスクを適宜実行する。次いで、ルーチンはステップ795に進み、明示的な終了命令を受け取るまで続けるかどうかを決定する。処理を続ける場合、ルーチンはブロック705に戻り、そうでなければ、ブロック799に進んで終了する。
本明細書では例示していないが、少なくともいくつかの実施形態では、ブロックデータストレージサービスと連携するなどして、プログラム実行サービスによってさまざまな種類のプログラムを実行する機能が付加的に提供されうる。少なくともいくつかの実施形態において、1つまたは複数のコンピューティングシステム上の1つのプログラムの1つまたは複数のコピーもしくはインスタンスの実行は、これらのプログラムインスタンスの即時実行に対する現在の実行要求に応答して開始されうる、あるいは、この開始は、今現在のこれらのプログラムインスタンスの、その時点では未来の実行をスケジュールしたか、または他の何らかの方法で予約したすでに受け取っているプログラム実行要求に基づくものとしてよい。プログラム実行要求は、(例えば、プログラム実行サービスによって提供される対話型コンソールまたは他のGUIを介して)ユーザから直接的に、または他のプログラムもしくはそれ自身の1つまたは複数のインスタンスの実行を自動的に開始するユーザの実行プログラムから(例えば、ウェブサービスを使用するAPIなどの、プログラム実行サービスによって提供されるAPIを介して)など、さまざまな形で受け取ることができる。プログラム実行要求は、未来の実行のためにすでに登録されているか、または(例えば、単一の所望の数のインスタンス、最小および最大数の所望のインスタンスなどとして表される)他の何らかの方法で供給されたプログラムの指示などのプログラムの1つまたは複数のインスタンス、および同時に実行すべきプログラムの多数のインスタンスの実行の開始において使用されるさまざまな情報を含むことができる。それに加えて、いくつかの実施形態では、プログラム実行要求は、さまざまな他の種類の情報を含むことができ、これらの情報としては、例えば、すでに登録されているユーザのユーザアカウントの指示または他の指示(例えば、すでに格納されているプログラムを識別し、および/または要求されたプログラムインスタンスの実行が許可されているかどうかを判定する際に使用する)、プログラムインスタンスの実行のためにプログラム実行サービスに対して支払いを行う際に使用する支払い財源の指示、プログラムインスタンスの実行に対する前払いまたは他の許可の指示(例えば、一定時間、一定数のプログラム実行インスタンス、一定のリソース利用度などに対して有効なすでに購入されているサブスクリプション)、および/または即座に実行され、および/または後で実行するために格納されるプログラムの実行可能コピーもしくは他のコピーが挙げられる。それに加えて、いくつかの実施形態では、プログラム実行要求は、1つまたは複数のプログラムインスタンスの実行に対するさまざまな他の種類の選好および/または要求条件をさらに含みうる。このような選好および/または要求条件は、プログラムインスタンスのいくつかまたはすべてが、使用のために利用可能な複数のコンピューティングシステムを収容している複数のデータセンターのうちの1つのデータセンター内、互いに近い位置にある複数のコンピューティングシステム上、および/または他の指示された特性(例えば、指示されたブロックデータストレージボリュームのコピーを提供する)を有するコンピューティングシステムに近い位置にある1つまたは複数のコンピューティングシステム上など、指示された地理的位置および/または論理的位置の場所で実行されるという指示を含むことができる。
図8は、アーカイブマネージャルーチン800の例示的な一実施形態の流れ図である。ルーチンは、例えば、図3のアーカイブマネージャモジュール355、図2C〜2Fのアーカイブマネージャモジュール190、および/または図1のコンピューティングシステム180上の1つまたは複数のアーカイブマネージャモジュール(図示せず)のうちの1つのモジュールの実行によって実現されうる。他の実施形態では、ブロックデータストレージサービスの一部としてのルーチン400などによる、他の方法でルーチン800の機能の一部または全部が提供されうる。例示されている実施形態では、アーカイブストレージシステムは、ブロックデータストレージボリュームの一部にそれぞれ対応する複数のチャンクに分けてデータを格納するが、他の実施形態では、他の方法でデータを格納することができる。
ルーチン800の例示されている実施形態は、ブロック805から開始し、そこで、情報または要求を受け取る。次いで、ルーチンはブロック810に進み、要求側が課金ベースのアクセスの対価を支払い済みであるか、または指示され要求を実行させるアクセス権を他の何らかの形で有している場合などに、その要求または情報が許可されているかどうかを判定する。ブロック815において、要求または情報が許可されていると判定された場合、ルーチンは820に進み、そうでなければブロック805に戻る。ブロック820において、ルーチンは、受け取った要求が指示されたボリュームに対する新規スナップショットコピーを格納する要求であるかどうかを判定する。新規スナップショットコピーを格納する要求である場合、ルーチンはブロック825に進み、そのボリュームに対する複数のボリュームのチャンクを取得し、各チャンクをアーカイブストレージシステムのデータオブジェクトとして格納し、次いで、そのスナップショットボリュームのコピーに関連付けられているチャンクに対するデータオブジェクトに関する情報を格納する。別のところでさらに詳しく説明されているように、そのボリュームのチャンクは、ブロック805において複数の明確に区別されるブロックとして受け取ること、ブロック805においてブロック825で複数のチャンクに分けられたブロックデータの単一の大きなグループとして受け取ること、ブロック825において個別のチャンク、または複数のチャンクに分けられるブロックデータの単一の大きなグループとして取り出すこと、アーカイブストレージシステム上にすでに格納されていることなどによる、さまざまな方法で取得することができる。
ブロック820において、受け取った要求が、新規スナップショットボリュームのコピーを格納する要求でないと判定された場合、ルーチンは、ブロック830に進み、受け取った要求が、前のスナップショットボリュームのコピーからの変更を反映するボリュームの増分のスナップショットコピーを格納する要求であるかどうかを判定する。増分のスナップショットコピーを格納する要求である場合、ルーチンはブロック835に進み、ボリュームの前のスナップショットコピー以降に変更されたスナップショットのチャンクを識別し、ブロック825に関してすでに説明されているのと同様の方法で変更されたスナップショットのチャンクのコピーを取得する。次いで、ルーチンはブロック840に進み、変更されたチャンクのコピーを格納し、新規の変更されたチャンクおよび対応するデータオブジェクトが新規のスナップショットボリュームのコピーに関連付けられている前の他の未変更のチャンクに関する情報を格納する。前のスナップショットボリュームのコピー以降に変更されたチャンクは、ボリュームのプライマリコピーおよび/またはミラーコピーを格納するサーバブロックデータストレージシステムなどによる、さまざまな方法で(例えば、そのボリュームに対する書き込みデータアクセス要求または他の修正要求を追跡することによって)識別されうる。
ブロック830において、受け取った要求が、増分スナップショットボリュームのコピーを格納する要求でないと判定された場合、ルーチンは、ブロック845に進み、その要求が、対応する格納されているデータオブジェクトなどから、スナップショットボリュームのコピーの1つまたは複数のチャンクを提供する要求であるかどうかを判定する。もしそうであれば、ルーチンはブロック850に進み、指示されたスナップショットボリュームのコピーのチャンク(複数可)に対するデータを取り出して、その取り出されたデータを要求側に送る。そのような要求は、例えば、スナップショットボリュームのコピーに対するチャンクのすべてを取り出すことによって既存のスナップショットボリュームのコピーに基づき新規ボリュームを作成するオペレーションの一部、最小のミラーボリュームのコピーを復元するためにスナップショットボリュームのコピーのチャンクの部分集合を取り出すオペレーションの一部などとすることができる。
ブロック845において、受け取った要求が、1つまたは複数のスナップショットボリュームのコピーのチャンクを提供する要求でないと判定された場合、ルーチンはブロック855に進み、受け取った要求が、(例えば、それらの格納されているデータオブジェクトがそれらのボリュームのチャンクのための外部記憶域として使用される場合に)特定のボリュームのチャンクを表す1つまたは複数のデータオブジェクトに対する読み取りデータアクセス要求および/または書き込みデータアクセス要求を実行するなどのために、スナップショットボリュームのコピーの一部ではない1つまたは複数のボリュームのチャンクに対する1つまたは複数のデータアクセス要求を実行する要求であるかどうかを判定する。ボリュームのチャンクに対するデータアクセス要求を実行する要求である場合、ルーチンはブロック860に進み、指示されたボリュームのチャンク(複数可)に対応する格納されているデータオブジェクト(複数可)に対する要求されたデータアクセス要求(複数可)を実行する。別のところでさらに詳しく説明されているように、少なくともいくつかの実施形態では、格納されているデータオブジェクトを修正するときに、書き込みデータアクセス要求が即座に実行されないように、遅延更新技術が使用される場合がある。その場合、同じデータオブジェクトに対する後の読み取りデータアクセス要求が完了する前に、厳密なデータ整合性を確実にするために1つまたは複数の先行する書き込みデータアクセス要求が実行されうる。
ブロック855において、受け取った要求が、1つまたは複数のボリュームのチャンクに対するデータアクセス要求を実行すべきでないと判定された場合、ルーチンは、ブロック885に進み、1つまたは複数の他の指示されたオペレーションを適宜実行する。このような他のオペレーションとしては、例えば、(例えば、外部記憶域として、または他の目的のために)そのボリュームを表す対応する格納されているデータオブジェクトを更新するためにボリュームに対して実行される修正に対応する情報を繰り返し受け取り、適切な対応するアクションを起こすオペレーション、格納されているスナップショットボリュームのコピーを削除するか、もしくは他の何らかの形で修正する要求に応答するオペレーション、アーカイブストレージシステムを提供するストレージサービスによるアカウントを管理するユーザの要求に応答するオペレーションなどが挙げられる。ブロック825、840、850、860、または885の後、ルーチンは、ステップ895に進み、明示的な終了命令を受け取るまで続けるかどうかを決定する。処理を続ける場合、ルーチンはブロック805に戻り、そうでなければ、ブロック899に進んで終了する。
上で述べたように、少なくともいくつかの種類の要求については、ルーチンは、いくつかの実施形態において、要求側に対して指定されているアクセス権および/または要求の関連付けられているターゲット(例えば、指示されているボリュームまたはスナップショットボリュームのコピー)などに基づき、要求側がその要求を行う権限を与えられていることを確認することができるが、他の実施形態では、このルーチンは、要求を受け取ったルーチン(例えば、ノードマネージャルーチンおよび/またはBDSシステムマネージャルーチン)によって要求がすでに許可されていると仮定することができる。さらに、少なくともいくつかの実施形態では、ユーザに代わって実行されるいくつかの種類またはすべての種類のアクションを監視して計測し、例えば、後から、それらのアクションのうちの少なくともいくつかについて対応する利用毎の料金を決定する際に利用することができる。
説明されている技術が使用されうるプログラム実行サービスの例示的な実施形態のオペレーションに関係する追加の詳細は、そのそれぞれが全体として参照により本明細書に組み込まれている、2006年3月31日出願の特許文献1、名称「Managing Execution Of Programs By Multiple Computing Systems」、特許文献3の一部継続出願である2007年9月6日出願の特許文献2、名称「Executing Programs Based on User−Specified Constraints」、および2008年6月24日出願の特許文献4、名称「Managing Communications Between Computing Nodes」に記載されている。それに加えて、スナップショットボリュームのコピーを格納するために、またはリモートのアーカイブストレージシステムを他の何らかの方法で実現するために使用されうるリモートのストレージサービスの一例のオペレーションに関係する追加の詳細は、参照により本明細書に組み込まれている、2005年12月29日出願の特許文献6の優先権を主張する2007年7月5日公開の特許文献5、名称「Distributed Storage System With Web Services Client Interface」に記載されている。さらに、ユーザがそのユーザのプログラムまたは他のユーザのための他のデータへの有料アクセスを提供する一例に関係する追加の詳細は、全体として参照により本明細書に組み込まれており、別のところでさらに詳しく説明されているように、ボリュームおよび/またはスナップショットコピーへのさまざまな種類の有料アクセスに対してユーザが他のユーザに課金することについて本明細書において同様に使用されうる、2007年12月21日出願の特許文献7、名称「Providing Configurable Pricing for Execution of Software Images」に記載されている。
それに加えて、すでに述べているように、いくつかの実施形態では、仮想マシンを使用している場合があり、もしそうであれば、プログラム実行サービスによって実行されるプログラムは、仮想マシンのイメージ全体を含みうる。そのような実施形態では、実行されるプログラムは、オペレーティングシステム全体、ファイルシステムおよび/または他のデータ、ならびに場合によっては、1つまたは複数のユーザレベルのプロセスを含むことができる。他の実施形態では、実行されるプログラムは、一部の機能を提供するように相互運用性を有する1つまたは複数の他の種類の実行可能ファイルを含むことができる。さらに他の実施形態では、実行されるプログラムは、提供されるコンピューティングシステム上でネイティブコードで実行されうる、またはインタプリタ、または他のソフトウェアによって実装されるハードウェア抽象化を用いて間接的に実行されうる命令およびデータの物理的または論理的な集合体を含むことができる。より一般的には、いくつかの実施形態において、実行されるプログラムは、1つまたは複数のアプリケーションプログラム、アプリケーションフレームワーク、ライブラリ、アーカイブ、クラスファイル、スクリプト、コンフィギュレーションファイル、データファイルなどを含みうる。
それに加えて、すでに述べているように、少なくともいくつかの実施形態および状況において、ボリュームは、一方のサーバストレージシステムから他方のサーバストレージシステムへと移行されるか、または他の何らかの方法で移動されうる。さまざまな技術が、ボリュームの移動に使用され、そのような移動は、さまざまな方法で開始されうる。いくつかの状況では、この移動は、ボリュームが格納されるサーバストレージシステムに関係する問題(例えば、サーバストレージシステムの故障および/またはサーバストレージシステムへのネットワークアクセスの障害)を反映することがある。他の状況では、この移動は、優先度の高いボリュームなどについて、既存のサーバストレージシステム上に格納される他のボリュームのコピーを受け入れるために、またはボリュームのコピーを格納する元のサーバストレージシステムを、保守、エネルギー節約などの理由からシャットダウンできるようにするなどのために、限られた数のサーバストレージシステム上のボリュームのコピーのストレージを合併するために実行されうる。特定の一例において、サーバストレージシステム上に格納された1つまたは複数のボリュームのコピーが、そのサーバストレージシステムから利用可能である以上のリソースを必要とする場合、それらのボリュームのコピーのうちの1つまたは複数を追加のリソースを持つ1つまたは複数の他のサーバストレージシステムに移行することができる。1つまたは複数のサーバストレージシステムが予想される以上に少ないリソースを有しているとき、これらのサーバストレージシステムのうちの1つまたは複数が予想(許容)される以上に多いリソースを使用するとき、または1つまたは複数のサーバストレージシステムの利用可能なリソースが、1つまたは複数の予約されているかまたは格納されているボリュームのコピーの可能なリソース必要量に関して故意に過剰コミットされる実施形態などの、さまざまな理由から、利用可能なリソースの過度の使用が発生することがある。例えば、ボリュームのコピーの予想されるリソースの必要量が利用可能なリソースの範囲内にある場合、リソースの最大必要量は、利用可能なリソースの量を超えることがある。利用可能なリソースの過剰使用も、ボリュームの格納または使用に必要な実際のリソースが利用可能なリソースの量を超えた場合に発生しうる。
いくつかの実施形態では、上述のルーチンによって提供される機能が、さらに多くのルーチンに分割されるか、または少数のルーチンにまとめられるなど、代替的な方法で実現されうることは理解されるであろう。同様に、いくつかの実施形態では、例示されているルーチンは、他の例示されているルーチンが、それぞれ、そのような機能を欠いているか、または含んでいるとき、または提供される機能の量が変更されたときなどに、説明されている以上に多い、または少ない機能を備えることもある。それに加えて、さまざまなオペレーションが、特定の方法で(例えば、逐次的実行または並列実行で)、および/または特定の順序で実行されるように示されていることがあるが、他の実施形態では、これらのオペレーションは、他の順序および他の方法で実行されうる。同様に、上述のデータ構造は、他の実施形態では異なる方法で、例えば、単一のデータ構造を複数のデータ構造に分割すること、または複数のデータ構造を単一のデータ構造にまとめることなどによって構造化され、(例えば、他の例示されているデータ構造が、それぞれ、そのような情報を欠いているか、もしくは含んでいるとき、または格納されている情報の量または種類が変更されたときに)説明されている以上に多いまたは少ない情報を格納することができる。
上記の説明から、本明細書では例示を目的として特定の実施形態が説明されているが、本発明の精神および範囲を逸脱することなくさまざまな修正を加えられることは理解されるであろう。したがって、本発明は、付属の請求項および請求項に記載の要素により定められる場合を除き制限されない。それに加えて、本発明の特定の態様は、特定の請求項の形式で以下に提示されているが、発明者は、利用可能な任意の請求項の形式で本発明のさまざまな態様を考えている。例えば、本発明のいくつかの態様のみが、コンピュータ可読媒体で具現化されるものとして現時点では記載されていることがあるが、他の態様も、同様に、そのように具現化されうる。
条項1。ブロックデータストレージサービスのコンピューティングシステムが実行プログラムに対してリモートのブロックデータストレージ機能を提供するための方法であって、
ブロックデータストレージサービスによって提供される非ローカルブロックデータストレージへの第1の実行プログラムのアクセスを開始する要求を受け取るステップであって、第1のプログラムは地理的位置の同じ場所に配置される、1つまたは複数の内部ネットワークを共有する複数のコンピューティングシステムのうちの第1のコンピューティングシステム上で実行され、ブロックデータストレージサービスは複数のコンピューティングシステムのうちの複数の他のコンピューティングシステムの第1のグループを、複数の実行プログラムに対してブロックデータストレージを提供するブロックデータストレージシステムとして使用し、第1のコンピューティングシステムは第1のグループの一部ではない、ステップと、
内部ネットワークへの第1のコンピューティングシステムのアクセスを管理するブロックデータストレージサービスの第1のノードマネージャモジュールの制御下で、
ブロックデータストレージサービスによって提供される非ローカルブロックデータストレージを表す第1のコンピューティングシステムの論議ローカルストレージデバイスに対する第1の実行プログラムによって開始される1つまたは複数のデータアクセス要求を受け取るステップと、
第1の実行プログラムに代わって第2のコンピューティングシステムと内部ネットワーク上でやり取りすることによって受け取ったデータアクセス要求に自動的に応答し、第2のコンピューティングシステム上に格納されているプライマリコピーを有し、第3のコンピューティングシステム上に格納されているミラーコピーを有する第1のブロックデータストレージボリューム上で受け取ったデータアクセス要求を実行するステップであって、第2のコンピューティングシステムおよび第3のコンピューティングシステムはそれぞれブロックデータストレージシステムの第1のグループの一部であり、内部ネットワーク上でやり取りするオペレーションは第1の実行プログラムに対して透過的である方法により実行される、ステップと、
第1のブロックデータストレージボリューム上で受け取ったデータアクセス要求を実行した後に、第2のコンピューティングシステム上の第1のブロックデータストレージボリュームのプライマリコピーが利用不可能であると自動的に判定するステップと、
第1のコンピューティングシステムの論理ローカルブロックストレージデバイスに対して第1の実行プログラムによって開始される1つまたは複数の他のデータアクセス要求を受け取った後に、第1の実行プログラムに代わって第3のコンピューティングシステムと内部ネットワーク上でやり取りすることによって受け取った他のデータアクセス要求に自動的に応答し、第3のコンピューティングシステム上の第1のブロックデータストレージボリュームのミラーコピー上で他のデータアクセス要求を実行するステップとを含む方法。
条項2。ブロックデータストレージサービスに対するシステムマネージャモジュールの制御の下で、ブロックデータストレージサービスがブロックデータストレージを複数の実行プログラムに提供するステップを管理するステップをさらに含み、この管理するステップは、
複数の実行プログラムのうちの1つまたは複数によってそれぞれ使用される複数のブロックデータストレージボリュームを作成するステップであって、ブロックデータストレージボリュームのそれぞれを作成するステップは複数のブロックデータストレージシステムのうちの一方のブロックデータストレージシステム上にブロックデータストレージボリュームのプライマリコピーを格納するステップを含み、複数のブロックデータストレージシステムのうちの他方のブロックデータストレージシステム上にブロックデータストレージボリュームのミラーコピーを格納するステップを含み、これら複数のプログラムは複数の関連付けられているノードマネージャモジュールを有する複数のコンピューティングシステム上で実行される、ステップと、
ブロックデータストレージボリュームのミラーコピーを、作成されたブロックデータストレージボリュームのうちの1つのブロックデータストレージボリュームのプライマリコピーを格納するブロックデータストレージシステムが実行プログラムから受け取った書き込みデータアクセス要求に基づいてそのプライマリコピーに格納されているブロックデータに対する修正を実行するときに、その1つのブロックデータストレージボリュームのミラーコピーに格納されているブロックデータに対しその修正を実行することによって保持するステップと、
ブロックデータストレージボリュームに対するアクセスを、作成されたブロックデータストレージボリュームのうちの1つのブロックデータストレージボリュームのプライマリコピーが利用不可能になったときに、その1つのブロックデータストレージボリュームのミラーコピーをその1つのブロックデータストレージボリュームの新規プライマリコピーとなるように格上げすることによって保持するステップとを含む条項1の方法。
条項3。複数のプログラムが、複数のコンピューティングシステムのうちのいくつかのコンピューティングシステムの第2のグループ上のプログラム実行サービスによって実行され、第2のグループのコンピューティングシステムは、第1のグループのコンピューティングシステムから明確に区別され、第1のコンピューティングシステムは、少なくとも1つのプログラムをそれぞれ実行することができる複数の仮想マシンをホストし、第1の実行プログラムは、複数のプログラムのうちの1つであり、さらに第1のコンピューティングシステムによってホストされる複数の仮想マシンのうちの少なくとも1つによって実行される仮想マシンのイメージであり、第1のノードマネージャモジュールは、第1のコンピューティングシステム用の仮想マシンモニターの一部として実行される条項2の方法。
条項4。実行プログラムに対してブロックデータストレージ機能を提供するためのコンピュータによって実装される方法であって、
第1のプログラムが実行される第1のコンピューティングシステムのローカルにあるブロックストレージデバイスに対して第1の実行プログラムによって開始される1つまたは複数のデータアクセス要求の第1のグループの1つまたは複数の指示を受け取るステップであって、ローカルのブロックストレージデバイスは1つまたは複数のネットワーク上で明確に区別される第2のデータストレージシステムによって提供される非ローカルブロックデータストレージボリュームを表す論理デバイスである、ステップと、
第1の実行プログラムに代わって第2のデータストレージシステムと1つまたは複数のネットワーク上でやり取りすることによってデータアクセス要求の第1のグループの受け取った指示に自動的に応答し、第2のデータストレージシステムによって提供されるブロックデータストレージボリュームによって格納されているブロックデータ上で第1のグループのデータアクセス要求を実行させるステップと、
第2のデータストレージシステムによって提供されるブロックデータストレージボリュームが利用不可能になったと判定し、第2のデータストレージシステムによって提供されるブロックデータストレージボリュームのミラーコピーを収容する第3のデータストレージシステムを自動的に識別するステップであって、第3のデータストレージシステムは第1のコンピューティングシステムおよび第2のデータストレージシステムから明確に区別される、ステップと、
第1のコンピューティングシステム上のローカルのブロックストレージデバイスに対して第1の実行プログラムによって開始される1つまたは複数の他のデータアクセス要求の第2のグループの1つまたは複数の指示を受け取るステップと、
第1の実行プログラムに代わって第3のデータストレージシステムと1つまたは複数のネットワーク上でやり取りすることによってデータアクセス要求の第2のグループの受け取った指示に自動的に応答し、識別された第3のデータストレージシステム上のブロックデータストレージボリュームのミラーコピー上で第2のグループのデータアクセス要求を実行させるステップとを含むコンピュータによって実装される方法。
条項5。1つまたは複数のデータアクセス要求の第1のグループの指示を受け取る前に、第1の実行プログラムで使用できるようにブロックデータストレージボリュームを第1のコンピューティングシステムにアタッチするステップをさらに含み、第1のコンピューティングシステムにブロックデータストレージボリュームをアタッチするステップは第1のコンピューティングシステムに対する論理ローカルブロックストレージデバイスを第2のデータストレージシステムによって提供されるブロックデータストレージボリュームに関連付けるステップを含む条項4の方法。
条項6。第1のコンピューティングシステムにブロックデータストレージボリュームをアタッチする前に、第2のデータストレージシステム上に作成されたブロックデータストレージボリュームのプライマリコピーを格納し、第3のデータストレージシステム上にブロックデータストレージボリュームのミラーコピーを格納して、第2のデータストレージシステムによって提供されるブロックデータストレージボリューム上の第1のグループのデータアクセス要求の実行が、ブロックデータストレージボリュームの格納されているプライマリコピー上で行われるようにすることによってブロックデータストレージボリュームを作成するステップをさらに含む条項5の方法。
条項7。ブロックデータストレージボリュームは、ブロックデータストレージサービスによって提供され、ブロックデータストレージボリュームの作成は、第1の実行プログラムに関連付けられているユーザからの要求に応答してブロックデータストレージサービスのシステムマネージャモジュールによって実行され、ブロックデータストレージボリュームを第1のコンピューティングシステムにアタッチするステップは、1つまたは複数のネットワークへの第1のコンピューティングシステムのアクセスを管理するブロックデータストレージサービスのノードマネージャモジュールによって実行される条項6の方法。
条項8。第2のデータストレージシステムによって提供されるブロックデータストレージボリュームが利用不可能になったと判定した後、第1のコンピューティングシステムから明確に区別され、また第2のデータストレージシステムおよび第3のデータストレージシステムからも明確に区別される第4のデータストレージシステム上へのブロックデータストレージボリュームの他のコピーの作成を自動的に開始するステップをさらに含む条項4の方法。
条項9。第2のデータストレージシステムによって提供されるブロックデータストレージボリュームが、第2のデータストレージシステムの障害、第2のデータストレージシステムの接続性の障害、および第2のデータストレージシステムが格納されているブロックデータストレージボリュームに確実にアクセスできない状況のうちの少なくとも1つの状況に基づいて利用不可能になっている条項8の方法。
条項10。第1のグループの複数のデータアクセス要求のうちの少なくとも1つのデータアクセス要求の実行は、第2のデータストレージシステム上のブロックデータストレージボリュームに格納されているブロックデータを修正するステップを含み、第3のデータストレージシステム上のブロックデータストレージボリュームのミラーコピーに格納されているブロックデータを修正することによって第3のデータストレージシステム上のブロックデータストレージボリュームのミラーコピーを保持するステップをさらに含む条項4の方法。
条項11。第1のコンピューティングシステムおよび第2のデータストレージシステムは、単一の地理的位置の同じ場所に配置されている複数のコンピューティングシステムの部分集合であり、複数のコンピューティングシステムは、ブロックデータストレージサービスによって提供される複数のブロックデータストレージシステムを含み、第2のデータストレージシステムおよび第3のデータストレージシステムは、それぞれ、複数のブロックデータストレージシステムのうちの明確に区別される1つのブロックデータストレージシステムである条項4の方法。
条項12。複数のコンピューティングシステムが一緒に配置される単一の地理的位置の同じ場所は、1つのデータセンターであり、方法は、データセンターの外部に配置されているリモートのストレージサービスの1つまたは複数アーカイブデータストレージシステム上のブロックデータストレージボリュームの少なくとも1つのコピーを作成するステップをさらに含む条項11の方法。
条項13。第1のプログラムが、複数のコンピューティングシステムのうちのいくつかのコンピューティングシステム上の複数のユーザに対し複数のプログラムを実行するプログラム実行サービスによって実行され、第1のコンピューティングシステムは、少なくとも1つのプログラムをそれぞれ実行することができる複数の仮想マシンをホストし、第1の実行プログラムは、複数のプログラムのうちの1つであり、さらに第1のコンピューティングシステムによってホストされる複数の仮想マシンのうちの少なくとも1つによって実行される仮想マシンのイメージであり、データアクセス要求の第1のグループの指示を受け取るステップと他のデータアクセス要求の第2のグループの指示を受け取るステップとデータアクセス要求の第1のグループおよび第2のグループの受け取った指示に対して自動的に応答するステップは、第1のコンピューティングシステム用の仮想マシンモニターの実行の一部として実行され、第1のコンピューティングシステムは、第1の実行プログラムによる使用のために利用可能である1つまたは複数の他の実際のローカルのストレージデバイスを備える条項11の方法。
条項14。コンピュータ可読媒体であって、このコンピュータ可読媒体の内容により1つまたは複数のコンピューティングシステムはブロックデータストレージ機能を実行プログラムに提供することができるが、これは、
ブロックデータストレージボリュームに対する第1のコンピューティングシステム上で実行される第1のプログラムによって開始される1つまたは複数のデータアクセス要求の1つまたは複数の指示を受け取るステップであって、ブロックデータストレージボリュームは1つまたは複数のネットワークによって第1のコンピューティングシステムから隔てられている第2のブロックデータストレージシステムによって提供される、ステップと、
第2のブロックデータストレージシステム上のブロックデータストレージボリュームに対しデータアクセス要求の実行を開始することによってデータアクセス要求の受け取った指示に自動的に応答するステップと、
第1のコンピューティングシステムおよび第2のブロックデータストレージシステムから明確に区別される1つまたは複数の第3のブロックデータストレージシステムのうちの各ブロックデータストレージシステム上にブロックデータストレージボリュームのミラーコピーを自動的に作成するステップと、
第2のデータストレージシステムによって提供されるブロックデータストレージボリュームが、利用不可能になった後に、第3のブロックデータストレージシステムのうちの少なくとも1つの第3のブロックデータストレージシステム上に作成されたブロックデータストレージボリュームのミラーコピー上で他のデータアクセス要求を実行することによってブロックデータストレージボリュームに対し第1のプログラムによって開始される1つまたは複数の他のデータアクセス要求の1つまたは複数の受け取った指示に自動的に応答するステップとを含む方法によって行われるコンピュータ可読媒体。
条項15。第1のグループのデータアクセス要求の実行とブロックデータストレージボリュームのミラーコピーの自動作成と第2のグループの他のデータアクセス要求の実行は、ブロックデータストレージサービスのシステムマネージャモジュールによって自動的に実行され、第1のプログラムは、第1のコンピューティングシステムのローカルにあり、第2のブロックデータストレージシステムによって提供されるブロックデータストレージボリュームを表す論理ブロックデータストレージデバイスとやり取りすることによってブロックデータストレージボリュームに対するデータアクセス要求を開始し、第1のプログラムによって開始されたデータアクセス要求を受け取るステップは、論理ローカルブロックデータストレージデバイスとの第1のプログラムによるやり取りの後に第1のコンピューティングシステムに関連付けられているブロックデータストレージサービスのノードマネージャモジュールによって実行され、データアクセス要求の受け取った指示に自動的に応答するステップは、1つまたは複数のネットワーク上で受け取ったデータアクセス要求の送信を開始することによって一部はノードマネージャモジュールの制御下で実行される条項14のコンピュータ可読媒体。
条項16。第2のブロックデータストレージシステムは、データアクセス要求の受け取った指示に自動的に応答したときにブロックデータストレージボリュームのプライマリコピーを格納し、この方法は、他のデータアクセス要求の受け取った指示に自動的に応答する前に、ブロックデータストレージボリュームのプライマリコピーが利用不可能になったことを自動的に判定するステップと、複数の第3のブロックデータストレージシステムのうちの1つの第3のブロックデータストレージシステム上のブロックデータストレージボリュームのミラーコピーを選択するステップと、第3のブロックデータストレージシステム上のブロックデータストレージボリュームの選択されたミラーコピーをブロックデータストレージボリュームの現在のプライマリコピーになるよう格上げするステップとをさらに含む条項14のコンピュータ可読媒体。
条項17。1つまたは複数の第3のブロックデータストレージシステムのうちの各第3のブロックデータストレージシステム上のブロックデータストレージボリュームのミラーコピーを自動作成するステップは、データアクセス要求の受け取った指示に自動的に応答する前に複数の第3のブロックデータストレージシステムのうちの1つの第3のブロックデータストレージシステム上にブロックデータストレージボリュームの第1のミラーコピーを作成するステップを含み、データアクセス要求の受け取った指示に自動的に応答するステップは、ブロックデータストレージボリュームの第1のミラーコピー上でデータアクセス要求を実行するステップをさらに含み、ブロックデータストレージボリュームの第1のミラーコピーは、選択されたミラーコピーであり、1つまたは複数の第3のブロックデータストレージシステムのうちの各第3のブロックデータストレージシステム上のブロックデータストレージボリュームのミラーコピーを自動作成するステップは、ブロックデータストレージボリュームのプライマリコピーが利用不可能になったと判定した後に、複数の第3のブロックデータストレージシステムのうちの他方の第3のブロックデータストレージシステム上のブロックデータストレージボリュームの第2のミラーコピーを作成するステップをさらに含む条項16のコンピュータ可読媒体。
条項18。第2のブロックデータストレージシステムは、データアクセス要求の受け取った指示に自動的に応答したときにブロックデータストレージボリュームのプライマリコピーを格納し、第1のプログラムによって開始された指示されている1つまたは複数のデータアクセス要求は、第1のプログラムによって開始されたデータアクセス要求の第2のグループであり、この方法は、第2のグループのデータアクセス要求の指示を受け取る前に、
第1のコンピューティングシステムおよび第2のブロックデータストレージシステムおよび1つまたは複数の第3のブロックデータストレージシステムから明確に区別される第4のブロックデータストレージシステム上にブロックデータストレージボリュームの初期プライマリコピーを作成するステップと、
第4のブロックデータストレージシステム上に作成されたプライマリコピー上で第1のグループのデータアクセス要求を実行することによってブロックデータストレージボリュームに対して第1のプログラムによって開始される1つまたは複数のデータアクセス要求の第1のグループの1つまたは複数の受け取った指示に自動的に応答するステップであって、データアクセス要求の第1のグループはデータアクセス要求の第2のグループの前に第1のプログラムによって開始される、ステップと、
データアクセス要求の第1のグループの指示に応答した後に、ブロックデータストレージボリュームのプライマリコピーを第4のブロックデータストレージシステムから第2のブロックデータストレージシステムに移動することを決定し、ブロックデータストレージボリュームのプライマリコピーを第2のブロックデータストレージシステムに移動した後にブロックデータストレージボリュームに対し第1のプログラムによって開始されるデータアクセス要求が第2のブロックデータストレージシステム上のブロックデータストレージボリュームの移動されたプライマリコピー上で実行されるようにするステップとをさらに含む条項14のコンピュータ可読媒体。
条項19。ブロックデータストレージボリュームのプライマリコピーを第4のブロックデータストレージシステムから第2のブロックデータストレージシステムに移動することを決定するステップは、第2のブロックデータストレージシステムが、ブロックデータストレージボリュームのプライマリコピーを提供する能力に関して第4のブロックデータストレージシステムに比べて高いとする自動判定とブロックデータストレージボリュームに関連付けられているブロックデータストレージサービスのユーザから受け取った要求のうちの少なくとも1つに基づいて実行される条項18のコンピュータ可読媒体。
条項20。第1のプログラムは、ユーザによって支払われる料金と引き換えにプログラム実行サービスのユーザに代わって複数のホストコンピューティングシステム上のプログラム実行サービスによって実行される複数のプログラムのうちの1つであり、第1のコンピューティングシステムは、複数のホストコンピューティングシステムのうちの1つであり、第1のプログラムによるブロックデータストレージボリュームの使用は、第1のプログラムが代わって実行されるプログラム実行サービスのユーザが払う料金と引き換えに実行される条項14のコンピュータ可読媒体。
条項21。コンピュータ可読媒体は、内容を格納するコンピューティングシステムのメモリおよびそれらの内容を含む生成された格納されているデータ信号を含むデータ伝送媒体のうちの少なくとも1つである条項14のコンピュータ可読媒体。
条項22。内容は、実行されると1つまたは複数のコンピューティングシステムに方法を実行させる命令である条項14のコンピュータ可読媒体。
条項23。実行プログラムに対してブロックデータストレージ機能を提供するように構成されているシステムであって、
1つまたは複数のメモリと、
複数のブロックデータストレージシステムを使用して、ブロックデータストレージサービスのユーザによって作成され、それらのユーザに関連付けられている1つまたは複数の実行プログラムに代わって1つまたは複数のネットワーク上でアクセスされるブロックデータストレージボリュームを格納するブロックデータストレージサービスを提供するように構成されているブロックデータストレージシステムマネージャモジュールであって、ブロックデータストレージサービスを提供するステップは、
1つまたは複数の実行プログラムで使用するための1つまたは複数のブロックデータストレージボリュームを作成するステップであって、ブロックデータストレージボリュームのそれぞれを作成するステップは複数のブロックデータストレージシステムのうちの1つのブロックデータストレージシステム上に格納されるブロックデータストレージボリュームのプライマリコピーを作成するステップを含む、ステップと、
データアクセス要求のそれぞれについて、そのデータアクセス要求に対する1つのブロックデータストレージボリュームのプライマリコピーが利用可能である場合に、その利用可能なプライマリコピー上でデータアクセス要求の実行を開始することによって作成された複数のブロックデータストレージボリュームのうちの1つのブロックデータストレージボリュームに対し複数の実行プログラムのうちの1つの実行プログラムによってそれぞれ開始されたデータアクセス要求に応答するステップと、
受け取った指示に応答して、複数のブロックデータストレージボリュームのうちの第1のブロックデータストレージボリュームの新規コピーを作成するステップであって、第1のブロックデータストレージシステムのプライマリボリュームがブロックデータストレージシステムの最初のものに格納されており、作成された新規コピーは第1のブロックデータストレージシステムから明確に区別される1つまたは複数の他のデータストレージシステム上に格納される、ステップとを含む、ブロックデータストレージシステムマネージャモジュールとを備えるシステム。
条項24。第1のブロックデータストレージボリュームを作成するステップは、第1のブロックデータストレージシステムおよび1つまたは複数の他のデータストレージシステムから明確に区別される複数のブロックデータストレージシステムのうちの第2のブロックデータストレージシステム上に格納される第1のブロックデータストレージボリュームのミラーコピーを作成するステップをさらに含み、データアクセス要求に応答するステップは、第1のブロックデータストレージボリュームに対する複数の実行プログラムのうちの1つの実行プログラムによって開始される各データアクセス要求について、第1のブロックデータストレージボリュームのプライマリコピーが利用可能でない場合に、第2のブロックデータストレージシステム上に格納されている第1のブロックデータストレージボリュームのミラーコピー上でデータアクセス要求の実行を開始するステップをさらに含む条項23のシステム。
条項25。データアクセス要求に応答するステップは、第1のブロックデータストレージボリュームに対する複数の実行プログラムのうちの1つの実行プログラムによって開始される各データアクセス要求について、第1のブロックデータストレージボリュームのプライマリコピーが利用可能である場合に、第2のブロックデータストレージシステム上に格納されている第1のブロックデータストレージボリュームのミラーコピー上でデータアクセス要求の実行を開始するステップをさらに含む条項24のシステム。
条項26。データアクセス要求に応答するステップは、第1のブロックデータストレージシステム上の第1のブロックデータストレージボリュームのプライマリコピーが利用可能でない第1のブロックデータストレージボリュームに対して複数の実行プログラムのうちの1つの実行プログラムによって開始される初期データアクセス要求について、第2のブロックデータストレージシステム上に格納されている第1のブロックデータストレージボリュームのミラーコピーを、第1のブロックデータストレージシステム上の第1のブロックデータストレージボリュームのプライマリコピーの代わりに、第1のブロックデータストレージボリュームの新規プライマリコピーとなるように格上げし、それにより、第2のブロックデータストレージシステム上に格納されている第1のブロックデータストレージボリュームのミラーコピー上でその初期データアクセス要求の実行を開始するステップが第2のブロックデータストレージシステム上の第1のブロックデータストレージボリュームの格上げされた新規プライマリコピー上で実行され、その初期データアクセス要求の後に第1のブロックデータストレージボリュームに対して複数の実行プログラムのうちの1つの実行プログラムによって開始されるデータアクセス要求が、第2のブロックデータストレージシステム上の第1のブロックデータストレージボリュームの格上げされた新規プライマリコピー上で実行されるようにするステップをさらに含む条項24のシステム。
条項27。第2のブロックデータストレージシステム上に格納されている第1のブロックデータストレージボリュームのミラーコピーを第1のブロックデータストレージボリュームの新規プライマリコピーとなるように格上げするステップは、第1のブロックデータストレージシステムおよび第2のブロックデータストレージシステムから明確に区別される複数のブロックデータストレージシステムのうちの第3のブロックデータストレージシステム上に格納されている第1のブロックデータストレージボリュームの第2のミラーコピーを作成するステップをさらに含み、第1のブロックデータストレージボリュームに対する複数の実行プログラムのうちの1つの実行プログラムによって開始される初期データアクセス要求の後の複数のデータアクセス要求のうちの各データアクセス要求に応答するステップは、第3のブロックデータストレージシステム上に格納されている第1のブロックデータストレージボリュームの第2のミラーコピー上でデータアクセス要求の実行を開始するステップをさらに含む条項26のシステム。
条項28。第1のブロックデータストレージボリュームの新規コピーは受け取った指示に応答して作成され、この受け取った指示は、第1のブロックデータストレージボリュームのプライマリコピーを第1のブロックデータストレージシステムから明確に区別される第2のブロックデータストレージシステムに移動する決定に基づいており、1つまたは複数の他のデータストレージシステムは、第2のブロックデータストレージシステムであり、第2のブロックデータストレージシステム上に第1のブロックデータストレージボリュームの新規コピーを作成するステップは、第2のブロックデータストレージシステム上に作成された新規コピーを第1のブロックデータストレージボリュームの新規プライマリコピーとして指定するステップを含み、ブロックデータストレージシステムマネージャモジュールがブロックデータストレージサービスを提供するステップは、第1のブロックデータストレージボリュームの新規コピーを作成した後に、第2のブロックデータストレージシステム上に格納されている第1のブロックデータストレージボリュームの新規プライマリコピー上で追加のデータアクセス要求の実行を開始することによって第1のブロックデータストレージボリュームに対する複数の実行プログラムのうちの1つの実行プログラムによってそれぞれ開始される1つまたは複数の追加のデータアクセス要求に応答するステップをさらに含む条項23のシステム。
条項29。第1のブロックデータストレージボリュームのプライマリコピーを第1のブロックデータストレージシステムから第2のブロックデータストレージシステムに移動することを決定するステップは、第2のブロックデータストレージシステムが、第1のブロックデータストレージボリュームのプライマリコピーへの1つまたは複数の実行プログラムのアクセスを提供する能力に関して第1のブロックデータストレージシステムに比べて高いとする自動判定と第1のブロックデータストレージボリュームに関連付けられているブロックデータストレージデバイスのユーザから受け取った要求のうちの少なくとも1つに基づいて実行される条項28のシステム。
条項30。第1のブロックデータストレージボリュームの新規コピーは受け取った指示に応答して作成され、この受け取った指示は、第1のブロックデータストレージボリュームからリモートにあるストレージサービスを使用して第1のブロックデータストレージボリュームのスナップショットコピーを作成する要求であり、1つまたは複数の他のデータストレージシステムは、リモートのストレージサービスの一部であるアーカイブデータストレージシステムであり、第1のブロックデータストレージボリュームの新規コピーを作成するステップは、リモートのストレージサービスとやり取りして新規の第1のブロックデータストレージボリュームのコピーを第1のブロックデータストレージボリュームのスナップショットコピーとして作成するステップを含む条項23のシステム。
条項31。単一の地理的位置の同じ場所に配置されている複数のブロックデータストレージシステムをさらに備え、単一の地理的位置とは別の場所にある、ブロックデータ以外のフォーマットでデータを格納する複数の他のデータストレージシステムを使用するリモートのストレージサービスをさらに備えるシステムであって、ブロックデータストレージシステムマネージャモジュールがブロックデータストレージサービスを提供するステップは、作成された複数のブロックデータストレージボリュームのうちの1つまたは複数のブロックデータストレージボリュームのそれぞれについて、ブロックデータストレージボリュームの複数の部分をリモートのストレージサービスの複数の他のデータストレージシステムのうちの1つまたは複数のデータストレージシステム上に格納し、格納される複数の部分はそれぞれ1つまたは複数のデータアクセス要求によって修正されたブロックデータストレージボリュームの一部を表すステップをさらに含む条項23のシステム。
条項32。複数の実行プログラムのうちの1つまたは複数の実行プログラムにそれぞれ関連付けられている複数のノードマネージャモジュールをさらに備え、ノードマネージャモジュールのそれぞれが1つまたは複数のネットワーク上でブロックデータストレージサービスにそれらのデータアクセス要求を転送することによって1つまたは複数の作成されたブロックデータストレージボリュームに対して1つまたは複数の関連付けられている実行プログラムによって開始されるデータアクセス要求を管理する条項23のシステム。
条項33。複数のホストコンピューティングシステムを使用してプログラム実行サービスのユーザのために複数のプログラムを実行するプログラム実行サービスを提供するように構成されているプログラム実行サービスシステムマネージャモジュールをさらに備え、プログラム実行サービスによって実行される複数のプログラムは作成された1つまたは複数ブロックデータストレージボリュームを使用する1つまたは複数の実行プログラムを含む条項23のシステム。
条項34。システムは、1つまたは複数のメモリのうちの少なくとも1つのメモリを備える第1のコンピューティングシステムを備え、ブロックデータストレージシステムマネージャモジュールは、少なくとも1つのメモリを使用して第1のコンピューティングシステムによって実行されるソフトウェア命令を備える条項23のシステム。
条項35。ブロックデータストレージシステムマネージャモジュールは、複数のブロックデータストレージシステムを使用して、ブロックデータストレージサービスのユーザによって作成され、それらのユーザに関連付けられている1つまたは複数の実行プログラムに代わって1つまたは複数のネットワーク上でアクセスされるブロックデータストレージボリュームを格納するブロックデータストレージサービスを提供するための1つまたは複数の手段からなり、ブロックデータストレージサービスを提供するステップは、
1つまたは複数の実行プログラムで使用するための1つまたは複数のブロックデータストレージボリュームを作成するステップであって、ブロックデータストレージボリュームのそれぞれを作成するステップは複数のブロックデータストレージシステムのうちの1つのブロックデータストレージシステム上に格納されるブロックデータストレージボリュームのプライマリコピーを作成するステップを含む、ステップと、
データアクセス要求のそれぞれについて、そのデータアクセス要求に対する1つのブロックデータストレージボリュームのプライマリコピーが利用可能である場合に、その利用可能なプライマリコピー上でデータアクセス要求の実行を開始することによって作成された複数のブロックデータストレージボリュームのうちの1つのブロックデータストレージボリュームに対し複数の実行プログラムのうちの1つの実行プログラムによってそれぞれ開始されたデータアクセス要求に応答するステップと、
受け取った指示に応答して、複数のブロックデータストレージボリュームのうちの第1のブロックデータストレージボリュームの新規コピーを作成するステップであって、第1のブロックデータストレージシステムのプライマリボリュームがブロックデータストレージシステムの最初のものに格納されており、作成された新規コピーは第1のブロックデータストレージシステムから明確に区別される1つまたは複数の他のデータストレージシステム上に格納される、ステップとを含む、ブロックデータストレージシステムマネージャモジュールとを備える条項23のシステム。
条項36。ブロックデータストレージサービスのコンピューティングシステムがリモートの格納されているブロックデータへの実行プログラムのアクセスを管理するための方法であって、
ブロックデータストレージサービスによって提供される非ローカルブロックデータストレージへの指示されたプログラムの第1のコピーのアクセスを開始する要求を受け取るステップであって、第1のプログラムのコピーは第1の地理的位置の同じ場所に配置される、1つまたは複数の内部ネットワークを共有する複数のコンピューティングシステムのうちの第1のコンピューティングシステム上で実行され、ブロックデータストレージサービスは複数のコンピューティングシステムのうちの複数の他のコンピューティングシステムの第1のグループを、複数の実行プログラムに対してブロックデータストレージを提供するブロックデータストレージシステムとして使用し、第1のコンピューティングシステムは第1のグループの一部ではない、ステップと、
受け取った要求に応答して、第1のブロックデータストレージボリュームを、実行する第1のプログラムのコピーで使用できるように第1のコンピューティングシステムにアタッチするステップであって、第1のブロックデータストレージボリュームは第2のコンピューティングシステム上に格納されているプライマリコピーを有し、さらに第3のコンピューティングシステム上に格納されているミラーコピーを有し、第2のコンピューティングシステムおよび第3のコンピューティングシステムはそれぞれブロックデータストレージシステムの第1のグループの一部であり、第1のブロックデータストレージボリュームをアタッチするステップは第1のコンピューティングシステムの第1の論理ローカルブロックストレージデバイスを第1のブロックデータストレージボリュームに関連付けるステップを含む、ステップと、
ブロックデータストレージサービスのシステムマネージャモジュールの制御下で、複数の実行プログラムへのブロックデータストレージの提供を、
第1の論理ローカルブロックストレージデバイスに対して実行する第1のプログラムのコピーによって開始された1つまたは複数のデータアクセス要求の指示を受け取った後に、第1のブロックデータストレージボリュームのプライマリコピーおよびミラーコピー上でデータアクセス要求を実行するステップであって、データアクセス要求を実行することにより第1のブロックデータストレージボリュームのプライマリコピーおよびミラーコピーのそれぞれに同じ格納済みブロックデータが保持されるような仕方で第1のブロックデータストレージボリューム上に格納されているブロックデータに対して1つまたは複数の修正が加えられる、ステップにより自動的に応答するステップと、
データアクセス要求を実行した後に、第1のプログラムのコピーの実行が終了したと自動的に判定し、この判定に応答して、第1のブロックデータストレージボリュームへの指示されたプログラムのアクセスを自動的に保持し、アクセスを保持するステップは明確に区別される第4のコンピューティングシステム上で指示されたプログラムの第2のコピーの実行を開始するステップと第1のブロックデータストレージボリュームを、実行する第2のプログラムのコピーで使用できるように第4のコンピューティングシステムにアタッチするステップとを含み、アタッチするステップは第4のコンピューティングシステムの第2の論理ローカルブロックストレージデバイスを第1のブロックデータストレージボリュームに関連付けるステップを含む、ステップと、
第2の論理ローカルブロックストレージデバイスに対して実行する第2のプログラムのコピーによって開始された1つまたは複数の他のデータアクセス要求の指示を受け取った後に、第1のブロックデータストレージボリュームのプライマリコピーおよびミラーコピー上で他のデータアクセス要求を実行するステップであって、データアクセス要求を実行することにより第1のブロックデータストレージボリュームのプライマリコピーおよびミラーコピーがそれぞれ同じブロックデータを格納するような仕方で第1のブロックデータストレージボリューム上に格納されているブロックデータに対して1つまたは複数のさらなる修正が加えられる、ステップにより自動的に応答するステップとによって管理するステップとを含む方法。
条項37。第1のブロックデータストレージボリュームを第1のコンピューティングシステムにアタッチするステップは、内部ネットワークへの第1のコンピューティングシステムのアクセスを管理するブロックデータストレージサービスのノードマネージャモジュールによって実行され、この方法は、ノードマネージャモジュールの制御下で、
第1論理ローカルブロックストレージデバイスに対して実行する第1のプログラムのコピーによって開始されるデータアクセス要求を受け取るステップと、
内部ネットワーク上でシステムマネージャモジュールとやり取りしてデータアクセス要求の指示を送ることによりデータアクセス要求の実行を円滑にするステップであって、内部ネットワーク上でやり取りするステップは実行する第1のプログラムのコピーに対して透過的な方法で実行される、ステップとをさらに含む条項36の方法。
条項38。複数のプログラムが、複数のコンピューティングシステムのうちのいくつかのコンピューティングシステムの第2のグループ上のプログラム実行サービスによって実行され、第2のグループのコンピューティングシステムは、第1のグループのコンピューティングシステムから明確に区別され、第1のコンピューティングシステムは、少なくとも1つのプログラムをそれぞれ実行することができる複数の仮想マシンをホストし、指示されたプログラムは、複数のプログラムのうちの1つであり、さらに第1のコンピューティングシステムによってホストされる複数の仮想マシンのうちの少なくとも1つによって実行される仮想マシンのイメージであり、ノードマネージャモジュールは、第1のコンピューティングシステム用の仮想マシンモニターの一部として実行される条項37の方法。
条項39。実行プログラムによるブロックデータストレージ機能へのアクセスを管理するためのコンピュータによって実装される方法であって、
非ローカルブロックデータストレージボリューム上に格納されているブロックデータにアクセスするために第1のコンピューティングシステム上で実行される第1のプログラムの第1のコピーによって開始された1つまたは複数のデータアクセス要求の第1のグループの1つまたは複数の指示を受け取るステップであって、ブロックデータストレージボリュームは1つまたは複数のネットワーク上で明確に区別される第2のデータストレージシステムによって提供され、第1の実行するプログラムのコピーがブロックデータストレージボリュームを表す第1のコンピューティングシステムのローカルにある第1の論理ブロックストレージデバイスとのやり取りを介してブロックデータストレージボリュームに対するデータアクセス要求を開始するように第1のコンピューティングシステムにアタッチされる、ステップと、
第1の実行プログラムのコピーに代わって第2のデータストレージシステムとやり取りすることによってデータアクセス要求の第1のグループの受け取った指示に自動的に応答し、第2のデータストレージシステムによって提供されるブロックデータストレージボリューム上の第1のグループのデータアクセス要求の実行を開始するステップと、
第1のプログラムのコピーが利用不可能になったと判定した後に、第1のプログラムの第2のコピーが実行されている、第1のコンピューティングシステムおよび第2のデータストレージシステムから明確に区別される第3のコンピューティングシステムを識別し、第2のプログラムのコピーがブロックデータストレージボリュームを表す第3のコンピューティングシステムのローカルにある第2の論理ブロックストレージデバイスにアクセスできるようにブロックデータストレージボリュームを第3のコンピューティングシステムにアタッチするステップと、
第3のコンピューティングシステム上の第2の論理ローカルブロックストレージデバイスとのやり取りを介してブロックデータストレージボリュームに対して第2の実行プログラムのコピーによって開始される1つまたは複数の他のデータアクセス要求の第2のグループの1つまたは複数の指示を受け取るステップと、
第2の実行プログラムのコピーに代わって第2のデータストレージシステムとやり取りすることによってデータアクセス要求の第2のグループの受け取った指示に自動的に応答し、第2のデータストレージシステム上のブロックデータストレージボリューム上の第2のグループのデータアクセス要求の実行を開始するステップとを含む方法。
条項40。第1のプログラムのコピーが利用不可能になったと自動的に判定するステップをさらに含み、第1のプログラムのコピーが利用不可能である状況は第1のコンピューティングシステムの障害、第1のコンピューティングシステムの接続性の障害、および第1のコンピューティングシステムが第1のプログラムのコピーの実行を継続できない状況のうちの少なくとも1つの状況に基づく条項39の方法。
条項41。第1のプログラムの第2のコピーが実行されている第3のコンピューティングシステムを識別するステップおよびブロックデータストレージボリュームを第3のコンピューティングシステムにアタッチするステップは、ブロックデータストレージボリュームへの第1のプログラムのアクセスを保持するために自動的に実行され、アクセスを自動的に維持するステップは第1のプログラムのコピーが利用不可能になったと自動的に判定したことに応答して実行される条項40の方法。
条項42。第1のプログラムのコピーが利用不可能になったと判定するステップ、第1のプログラムの第2のコピーが実行されている第3のコンピューティングシステムを識別するステップ、およびブロックデータストレージボリュームを第3のコンピューティングシステムにアタッチするステップのうちの少なくとも1つのステップは、第1のプログラムおよびブロックデータストレージボリュームに関連付けられているユーザから受け取った1つまたは複数の指示に応答して実行される条項39の方法。
条項43。第1のプログラムの第2のコピーが実行されている第3のコンピューティングシステムを識別するステップは、第1のプログラムのコピーが利用不可能になったと判定した後に、第3のコンピューティングシステム上で第2のプログラムのコピーの実行を開始するステップを含む条項39の方法。
条項44。第1のプログラムの第1のコピーは、複数の明確に区別されるコンピューティングシステム上で実行される第1のプログラムの複数のコピーのうちの1つのコピーであり、これら複数のコピーのうちの少なくとも1つのコピーは、それらの複数のコピーのうちの1つまたは複数の他のコピーに対する代替的コピーであり、第1のプログラムの第2のコピーが実行されている第3のコンピューティングシステムを識別するステップは、少なくとも1つの代替的コピーのうちの1つのコピーである第2のコピーに基づいて第1のプログラムの第2のコピーを選択するステップを含む条項39の方法。
条項45。第1のコンピューティングシステムにブロックデータストレージボリュームをアタッチする前に、第2のデータストレージシステム上にブロックデータストレージボリュームを作成し、明確に区別される第4のブロックデータストレージシステム上にブロックデータストレージボリュームのミラーコピーを作成するステップをさらに含み、第1のグループおよび第2のグループのデータアクセス要求に応答するステップは、第1のグループおよび第2のグループのデータアクセス要求の、作成されたミラーコピー上での実行を開始するステップをさらに含む条項39の方法。
条項46。1つまたは複数のデータアクセス要求の指示を受け取る前に、第1の実行プログラムのコピーで使用できるようにブロックデータストレージボリュームを第1のコンピューティングシステムにアタッチするステップをさらに含み、ブロックデータストレージボリュームをアタッチするステップは第1の論理ブロックストレージデバイスを第2のデータストレージシステムによって提供されるブロックデータストレージボリュームに関連付けるステップを含み、1つまたは複数のネットワークへの第1のコンピューティングシステムのアクセスを管理するノードマネージャモジュールによって実行され、ノードマネージャモジュールは第1の実行プログラムに関連付けられているユーザからの要求に応答してブロックデータストレージボリュームをすでに作成しているブロックデータストレージサービスの一部である条項39の方法。
条項47。第1のコンピューティングシステム、第3のコンピューティングシステム、および第2のデータストレージシステムは、第1の地理的位置の同じ場所に配置されている複数のコンピューティングシステムの部分集合であり、複数のコンピューティングシステムは、ブロックデータストレージサービスによって提供される複数のブロックデータストレージシステムを含み、第2のデータストレージシステムおよび第3のデータストレージシステムは、それぞれ、複数のブロックデータストレージシステムのうちの明確に区別される1つのブロックデータストレージシステムである条項39の方法。
条項48。第1の地理的位置の場所は、データセンターであり、第1のプログラムが、データセンターにある複数のコンピューティングシステムのうちのいくつかのコンピューティングシステム上の複数のユーザに対し複数のプログラムを実行するプログラム実行サービスによって実行され、第1のコンピューティングシステムは、少なくとも1つのプログラムをそれぞれ実行することができる複数の仮想マシンをホストし、第1の実行プログラムは、複数のプログラムのうちの1つであり、さらに第1のコンピューティングシステムによってホストされる複数の仮想マシンのうちの少なくとも1つによって実行される仮想マシンのイメージであり、データアクセス要求の第1のグループの指示を受け取るステップと他のデータアクセス要求の第2のグループの指示を受け取るステップとデータアクセス要求の第1のグループおよび第2のグループの受け取った指示に対して自動的に応答するステップは、第1のコンピューティングシステム用の仮想マシンモニターの実行の一部として実行され、第1のコンピューティングシステムは、第1の実行プログラムによる使用のために利用可能である1つまたは複数の他の実際のローカルのストレージデバイスを備える条項47の方法。
条項49。コンピュータ可読媒体であって、このコンピュータ可読媒体の内容により1つまたは複数のコンピューティングは実行プログラムによるブロックデータストレージ機能へのアクセスを管理することができ、そのために実行する方法は、
第1のコンピューティングシステム上で実行される第1のプログラムによる非ローカルブロックデータストレージボリュームへのアクセスを可能にするステップであって、このアクセスによって第1のプログラムはブロックデータストレージボリュームに対するデータアクセス要求を開始することができ、ブロックデータストレージボリュームは1つまたは複数のネットワークにより第1のコンピューティングシステムから隔てられている第2のブロックデータストレージシステムによって提供される、ステップと、
ブロックデータストレージボリュームに対する第1のプログラムによって開始された1つまたは複数のデータアクセス要求の1つまたは複数の受け取った指示に自動的に応答するステップであって、応答するステップは第2のブロックデータストレージシステム上のブロックデータストレージボリュームに対するデータアクセス要求の実行を開始するステップを含む、ステップと、
第1のコンピューティングシステム上で実行されている第1のプログラムが利用不可能になった後に、第1のプログラムに許可していたアクセスに代えて、第3のコンピューティングシステム上で実行されている第2のプログラムにブロックデータストレージボリュームへのアクセスを許可するステップと、
ブロックデータストレージボリュームに対する第2のプログラムによって開始された1つまたは複数の他のデータアクセス要求の1つまたは複数の受け取った指示に自動的に応答するステップであって、応答するステップは第2のブロックデータストレージシステム上のブロックデータストレージボリュームに対する他のデータアクセス要求の実行を開始するステップを含む、ステップとを含むコンピュータ可読媒体。
条項50。第1のプログラムおよび第2のプログラムは、単一のプログラムの実行コピーであり、アクセスを第1のプログラムに許可するステップは、第1の実行プログラムがブロックデータストレージボリュームを表す第1のコンピューティングシステムのローカルにある第1の論理ブロックストレージデバイスとのやり取りを介してブロックデータストレージボリュームに対するデータアクセス要求を開始するようにブロックデータストレージボリュームを第1のコンピューティングシステムにアタッチするステップを含み、アクセスを第2のプログラムに許可するステップは、第2のプログラムが実行される第3のコンピューティングシステムを識別するステップと第2の実行プログラムがブロックデータストレージボリュームを表す第3のコンピューティングシステムのローカルにある第2の論理ブロックストレージデバイスにアクセスできるようにブロックデータストレージボリュームを第3のコンピューティングシステムにアタッチするステップとを含み、第1のプログラムおよび第2のプログラムによるブロックデータストレージボリュームに対するデータアクセス要求は、ブロックデータストレージボリューム上に格納されているブロックデータにアクセスする要求である条項49のコンピュータ可読媒体。
条項51。第1のコンピューティングシステム、第3のコンピューティングシステム、および第2のブロックデータストレージシステムは、単一の地理的位置の場所に配置され、第1のコンピューティングシステムおよび第2のブロックデータストレージシステムは、1つまたは複数のネットワークによって隔てられており、第2のブロックデータストレージシステム上のブロックデータストレージボリュームに対するデータアクセス要求および他のデータアクセス要求の実行は、ブロックデータストレージサービスのシステムマネージャモジュールによって自動的に実行され、ブロックデータストレージボリュームへのアクセスを第1の実行プログラムに許可するステップは、第1のコンピューティングシステムに関連付けられ、1つまたは複数のネットワークへの第1の実行プログラムのアクセスを管理するブロックデータストレージサービスのノードマネージャモジュールによって実行され、データアクセス要求の受け取った指示に自動的に応答するステップは、1つまたは複数のネットワーク上で受け取ったデータアクセス要求を第2のブロックデータストレージシステムに送信するステップを開始することによって一部はノードマネージャモジュールの制御下で実行される条項50のコンピュータ可読媒体。
条項52。ブロックデータストレージボリュームへのアクセスを第2の実行プログラムに許可するステップは、1つまたは複数のネットワークへの第2の実行プログラムのアクセスをさらに管理するノードマネージャモジュールによって実行され、第3のコンピューティングシステムおよび第1のコンピューティングシステムは、単一の物理的コンピューティングシステムの一部であり、他のデータアクセス要求の受け取った指示に自動的に応答するステップは、1つまたは複数のネットワーク上で受け取った他のデータアクセス要求を第2のブロックデータストレージシステムに送信するステップを開始することによって一部はノードマネージャモジュールの制御下で実行される条項51のコンピュータ可読媒体。
条項53。コンピュータ可読媒体は、内容を格納するコンピューティングシステムのメモリおよびそれらの内容を含む生成された格納されているデータ信号を含むデータ伝送媒体のうちの少なくとも1つである条項49のコンピュータ可読媒体。
条項54。内容は、実行されると1つまたは複数のコンピューティングシステムに方法を実行させる命令である条項49のコンピュータ可読媒体。
条項55。実行プログラムによるブロックデータストレージ機能へのアクセスを管理するように構成されているシステムであって、
1つまたは複数のメモリと、
複数のブロックデータストレージシステムを使用して、ブロックデータストレージサービスのユーザによって作成され、それらのユーザに関連付けられている1つまたは複数の実行プログラムに代わって1つまたは複数のネットワーク上でアクセスされるブロックデータストレージボリュームを格納するブロックデータストレージサービスを提供するように構成されているブロックデータストレージシステムマネージャモジュールであって、ブロックデータストレージサービスを提供するステップは、
1つまたは複数の実行プログラムで使用するための1つまたは複数のブロックデータストレージボリュームを作成するステップであって、ブロックデータストレージボリュームのそれぞれは複数のブロックデータストレージシステムのうちの1つのブロックデータストレージシステム上に格納される、ステップと、
作成された複数のブロックデータストレージボリュームのうちの第1のブロックデータストレージボリュームへのアクセスを1つまたは複数の実行プログラムのうちの第1の実行プログラムに許可した後に、第1の作成されたブロックデータストレージボリューム上で1つまたは複数のデータアクセス要求の実行を開始することによって第1の作成されたブロックデータストレージボリュームに対し第1のプログラムによって開始された1つまたは複数のデータアクセス要求に応答するステップと、
第1のプログラムが利用不可能になり、第1の作成されたブロックデータストレージボリュームへのアクセスを明確に区別される第2の実行プログラムに許可し、利用不可能になった第1のプログラムに許可されていたアクセスを置き換えた後に、第1の作成されたブロックデータストレージボリューム上で1つまたは複数の他のデータアクセス要求の実行を開始することによって第1の作成されたブロックデータストレージボリュームに対し第2のプログラムによって開始された1つまたは複数の他のデータアクセス要求に応答するステップとを含む、ブロックデータストレージシステムマネージャモジュールを備えるシステム。
条項56。第1のプログラムおよび第2のプログラムは、単一のプログラムの実行コピーであり、アクセスを第1のプログラムに許可するステップは、第1の実行プログラムが第1のブロックデータストレージボリュームを表す第1のコンピューティングシステムのローカルにある第1の論理ブロックストレージデバイスとのやり取りを介して第1のブロックデータストレージボリュームに対するデータアクセス要求を開始するように第1のブロックデータストレージボリュームを第1のプログラムを実行している第1のコンピューティングシステムにアタッチするステップを含み、アクセスを第2のプログラムに許可するステップは、第2のプログラムが実行される第3のコンピューティングシステムを識別するステップと第2のプログラムが第1のブロックデータストレージボリュームを表す第3のコンピューティングシステムのローカルにある第2の論理ブロックストレージデバイスにアクセスできるように第1のブロックデータストレージボリュームを第3のコンピューティングシステムにアタッチするステップとを含み、第1のプログラムおよび第2のプログラムによる第1のブロックデータストレージボリュームに対するデータアクセス要求は、ブロックデータストレージボリューム上に格納されているブロックデータにアクセスする要求である条項55のシステム。
条項57。第1のブロックデータストレージボリュームは、複数のブロックデータストレージシステムのうちの第1のブロックデータストレージシステム上に格納され、第1のコンピューティングシステム、第3のコンピューティングシステム、および第1のブロックデータストレージシステムは、単一の地理的位置の場所に配置され、1つまたは複数のネットワークによって隔てられており、システムは、1つまたは複数のネットワークへの第1のプログラムおよび第2のプログラムのアクセスを管理するために第1のプログラムおよび第2のプログラムに関連付けられているブロックデータストレージサービスの1つまたは複数のノードマネージャモジュールをさらに備え、これにより、データアクセス要求および他のデータアクセス要求への応答は、1つまたは複数のネットワーク上でデータアクセス要求および他のデータアクセス要求を第1のブロックデータストレージシステムに送信するステップを開始することによって一部は1つまたは複数のノードマネージャモジュールの制御下で実行される条項56のシステム。
条項58。第1のブロックデータストレージボリュームの第1のコピーは、複数のブロックデータストレージシステムのうちの第1のブロックデータストレージシステム上に格納され、第1のプログラムによって開始されたデータアクセス要求の実行は、第1のブロックデータストレージボリュームの第1のコピー上で実行され、第1のプログラムは、第1の地理的位置の場所にある第1のブロックデータストレージシステムと同じ場所配置されている第1のコンピューティングシステム上で実行され、第2のプログラムは、明確に区別される第2の地理的位置の場所にある第2のコンピューティングシステム上で実行され、第1の作成されたブロックデータストレージボリュームへのアクセスを第2の実行プログラムに許可するステップは、第2のコンピューティングシステムを第1のブロックデータストレージボリュームの第2のコピーを格納する第2の地理的位置の場所にある第2のブロックデータストレージシステムにアタッチするステップを開始するステップを含む条項55のシステム。
条項59。システムは、1つまたは複数のメモリのうちの少なくとも1つのメモリを備える第1のコンピューティングシステムを備え、ブロックデータストレージシステムマネージャモジュールは、少なくとも1つのメモリを使用して第1のコンピューティングシステムによって実行されるソフトウェア命令を備える条項55のシステム。
条項60。ブロックデータストレージシステムマネージャモジュールは、複数のブロックデータストレージシステムを使用して、ブロックデータストレージサービスのユーザによって作成され、それらのユーザに関連付けられている1つまたは複数の実行プログラムに代わって1つまたは複数のネットワーク上でアクセスされるブロックデータストレージボリュームを格納するブロックデータストレージサービスを提供するための1つまたは複数の手段からなり、ブロックデータストレージサービスを提供するステップは、
1つまたは複数の実行プログラムで使用するための1つまたは複数のブロックデータストレージボリュームを作成するステップであって、ブロックデータストレージボリュームのそれぞれは複数のブロックデータストレージシステムのうちの1つのブロックデータストレージシステム上に格納される、ステップと、
作成された複数のブロックデータストレージボリュームのうちの第1のブロックデータストレージボリュームへのアクセスを1つまたは複数の実行プログラムのうちの第1の実行プログラムに許可した後に、第1の作成されたブロックデータストレージボリューム上で1つまたは複数のデータアクセス要求の実行を開始することによって第1の作成されたブロックデータストレージボリュームに対し第1のプログラムによって開始された1つまたは複数のデータアクセス要求に応答するステップと、
第1のプログラムが利用不可能になり、第1の作成されたブロックデータストレージボリュームへのアクセスを明確に区別される第2の実行プログラムに許可し、利用不可能になった第1のプログラムに許可されていたアクセスを置き換えた後に、第1の作成されたブロックデータストレージボリューム上で1つまたは複数の他のデータアクセス要求の実行を開始することによって第1の作成されたブロックデータストレージボリュームに対し第2のプログラムによって開始された1つまたは複数の他のデータアクセス要求に応答するステップとを含む条項55のシステム。

Claims (20)

  1. ブロックデータストレージサービスがリモートの格納されているブロックデータへの実行プログラムのアクセスを管理するためのコンピュータによって実行される方法であって、
    ブロックデータストレージサービスによって提供される非ローカルブロックデータストレージへの指示されたプログラムの第1のコピーのアクセスを開始する要求を受け取るステップであって、前記指示されたプログラムは前記ブロックデータストレージサービスの一部ではないアプリケーションプログラムであり、前記第1のプログラムのコピーは第1の地理的位置の同じ場所に配置される、1つまたは複数の内部ネットワークを共有する複数のコンピューティングシステムのうちの第1のコンピューティングシステム上で実行され、前記ブロックデータストレージサービスは前記複数のコンピューティングシステムのうちの複数の他のコンピューティングシステムの第1のグループを、前記指示されたプログラムを含む複数の実行プログラムに対してブロックデータストレージを提供するブロックデータストレージシステムとして使用し、前記第1のコンピューティングシステムは前記第1のグループの一部ではなく、前記要求を受け取る前記ステップは前記ブロックデータストレージサービスの実行システムマネージャモジュールによって実行される、ステップと、
    前記受け取った要求に応答して、第1のブロックデータストレージボリュームを、前記実行する第1のプログラムのコピーで使用できるように前記第1のコンピューティングシステムにアタッチするステップであって、前記第1のブロックデータストレージボリュームは第2のコンピューティングシステム上に格納されているプライマリコピーを有し、および第3のコンピューティングシステム上に格納されているミラーコピーを有し、前記第2のコンピューティングシステムおよび前記第3のコンピューティングシステムはそれぞれブロックデータストレージシステムの前記第1のグループの一部であり、前記第1のブロックデータストレージボリュームをアタッチする前記ステップは前記第1のコンピューティングシステムの第1の論理ローカルブロックストレージデバイスを前記第1のブロックデータストレージボリュームに関連付けるステップを含む、ステップと、
    前記ブロックデータストレージサービスの前記システムマネージャモジュールの制御の下で、前記複数の実行プログラムへの前記ブロックデータストレージの前記提供を、
    前記第1の論理ローカルブロックストレージデバイスに対して前記実行する第1のプログラムのコピーによって開始された1つまたは複数のデータアクセス要求の指示を受け取った後に、前記第1のブロックデータストレージボリュームの前記プライマリコピーおよび前記ミラーコピー上で前記データアクセス要求を実行するステップであって、前記データアクセス要求を実行することにより前記第1のブロックデータストレージボリュームの前記プライマリコピーおよび前記ミラーコピーのそれぞれに前記同じ格納済みブロックデータが保持されるような仕方で前記第1のブロックデータストレージボリューム上に格納されているブロックデータに対して1つまたは複数の修正が加えられる、ステップにより応答するステップと、
    前記データアクセス要求を実行した後に、前記第1のプログラムのコピーの前記実行が中断されたと判定し、前記判定に応答して、前記第1のブロックデータストレージボリュームへの前記指示されたプログラムのアクセスを保持し、前記アクセスを保持する前記ステップは明確に区別される第4のコンピューティングシステム上で前記指示されたプログラムの第2のコピーの実行を開始するステップと前記第1のブロックデータストレージボリュームを、前記実行する第2のプログラムのコピーで使用できるように前記第4のコンピューティングシステムにアタッチするステップとを含み、アタッチする前記ステップは前記第4のコンピューティングシステムの第2の論理ローカルブロックストレージデバイスを前記第1のブロックデータストレージボリュームに関連付けるステップを含む、ステップと、
    前記第2の論理ローカルブロックストレージデバイスに対して前記実行する第2のプログラムのコピーによって開始された1つまたは複数の他のデータアクセス要求の指示を受け取った後に、前記第1のブロックデータストレージボリュームの前記プライマリコピーおよび前記ミラーコピー上で前記他のデータアクセス要求を実行するステップであって、前記データアクセス要求を実行することにより前記第1のブロックデータストレージボリュームの前記プライマリコピーおよび前記ミラーコピーがそれぞれ前記同じブロックデータを格納するような仕方で前記第1のブロックデータストレージボリューム上に格納されている前記ブロックデータに対して1つまたは複数のさらなる修正が加えられる、ステップにより応答するステップと
    によって管理するステップとを含む方法。
  2. 前記第1のブロックデータストレージボリュームを前記第1のコンピューティングシステムにアタッチする前記ステップは、前記内部ネットワークへの前記第1のコンピューティングシステムのアクセスを管理する前記ブロックデータストレージサービスのノードマネージャモジュールによって実行され、前記方法は、前記ノードマネージャモジュールの制御の下で、
    前記第1の論理ローカルブロックストレージデバイスに対して前記実行する第1のプログラムのコピーによって開始される前記データアクセス要求を受け取るステップと、
    前記内部ネットワーク上で前記システムマネージャモジュールとやり取りして前記データアクセス要求の前記指示を送ることにより前記データアクセス要求の前記実行を円滑にするステップであって、前記内部ネットワーク上でやり取りする前記ステップは前記実行する第1のプログラムのコピーに対して透過的な方法で実行される、ステップと
    をさらに含む請求項1に記載の方法。
  3. 前記複数のプログラムが、前記複数のコンピューティングシステムのうちのいくつかのコンピューティングシステムの第2のグループ上のプログラム実行サービスによって実行され、前記第2のグループの前記コンピューティングシステムは、前記第1のグループの前記コンピューティングシステムから明確に区別され、前記第1のコンピューティングシステムは、少なくとも1つのプログラムを実行するようにそれぞれ構成された複数の仮想マシンをホストし、前記指示されたプログラムは、前記複数のプログラムのうちの1つであり、および前記第1のコンピューティングシステムによってホストされる前記複数の仮想マシンのうちの少なくとも1つによって実行される仮想マシンのイメージであり、前記ノードマネージャモジュールは、前記第1のコンピューティングシステム用の仮想マシンモニターの一部として実行される請求項2に記載の方法。
  4. 実行プログラムによるブロックデータストレージ機能へのアクセスを管理するためのコンピュータによって実行される方法であって、
    非ローカルブロックデータストレージボリューム上に格納されているブロックデータにアクセスするために第1のコンピューティングシステム上で実行される第1のプログラムの第1のコピーによって開始された1つまたは複数のデータアクセス要求の第1のグループの1つまたは複数の指示を受け取るステップであって、前記ブロックデータストレージボリュームは1つまたは複数のネットワーク上でブロックデータストレージサービスの明確に区別される第2のデータストレージシステムによって提供され、前記第1の実行プログラムのコピーが前記ブロックデータストレージボリュームを表す前記第1のコンピューティングシステムのローカルにある第1の論理ブロックストレージデバイスとのやり取りを介して前記ブロックデータストレージボリュームに対する前記データアクセス要求を開始するように前記第1のコンピューティングシステムにアタッチされ、前記第1のプログラムは前記ブロックデータストレージサービスの一部ではないアプリケーションプログラムである、ステップと、
    前記第1の実行プログラムのコピーに代わって前記第2のデータストレージシステムとやり取りすることによってデータアクセス要求の前記第1のグループの前記受け取った指示に応答し、前記第2のデータストレージシステムによって提供される前記ブロックデータストレージボリューム上の前記第1のグループの前記データアクセス要求の実行を開始するステップと、
    前記第1のプログラムのコピーが利用不可能になったと判定した後に、前記第1のプログラムの第2のコピーが実行されている、前記第1のコンピューティングシステムおよび前記第2のデータストレージシステムから明確に区別される第3のコンピューティングシステムを識別し、前記第2のプログラムのコピーが前記ブロックデータストレージボリュームを表す前記第3のコンピューティングシステムのローカルにある第2の論理ブロックストレージデバイスにアクセスするような仕方で前記ブロックデータストレージボリュームを前記第3のコンピューティングシステムにアタッチするステップと、
    前記第3のコンピューティングシステム上の前記第2の論理ローカルブロックストレージデバイスとのやり取りを介して前記ブロックデータストレージボリュームに対して前記第2の実行プログラムのコピーによって開始される1つまたは複数の他のデータアクセス要求の第2のグループの1つまたは複数の指示を受け取るステップと、
    前記第2の実行プログラムのコピーに代わって前記第2のデータストレージシステムとやり取りすることによってデータアクセス要求の前記第2のグループの前記受け取った指示に応答し、前記第2のデータストレージシステム上の前記ブロックデータストレージボリューム上の前記第2のグループの前記データアクセス要求の実行を開始するステップと
    を含むことを特徴とするコンピュータによって実行される方法。
  5. 前記第1のプログラムのコピーが利用不可能になったと判定するステップをさらに含み、
    前記第1のプログラムのコピーが前記利用不可能である状況は、前記第1のコンピューティングシステムの障害、前記第1のコンピューティングシステムの接続性の障害、および前記第1のコンピューティングシステムが前記第1のプログラムのコピーの実行を継続できない状況のうちの少なくとも1つの状況に基づくことを特徴とする請求項4に記載の方法。
  6. 前記第1のプログラムの前記第2のコピーが実行されている前記第3のコンピューティングシステムを識別する前記ステップおよび前記ブロックデータストレージボリュームを前記第3のコンピューティングシステムにアタッチする前記ステップは、前記ブロックデータストレージボリュームへの前記第1のプログラムのアクセスを保持するために実行され、前記アクセスを維持する前記ステップは前記第1のプログラムのコピーが利用不可能になったと前記判定したことに応答して実行されることを特徴とする請求項5に記載の方法。
  7. 前記第1のプログラムのコピーが利用不可能になったと判定する前記ステップ、前記第1のプログラムの前記第2のコピーが実行されている前記第3のコンピューティングシステムを識別する前記ステップ、および前記ブロックデータストレージボリュームを前記第3のコンピューティングシステムにアタッチする前記ステップのうちの少なくとも1つのステップは、前記第1のプログラムおよび前記ブロックデータストレージボリュームに関連付けられているユーザから受け取った1つまたは複数の指示に応答して実行されることを特徴とする請求項4に記載の方法。
  8. 前記第1のプログラムの前記第2のコピーが実行されている前記第3のコンピューティングシステムを識別する前記ステップは、前記第1のプログラムのコピーが利用不可能になったと判定した後に、前記第3のコンピューティングシステム上で前記第2のプログラムのコピーの実行を開始するステップを含むことを特徴とする請求項4に記載の方法。
  9. 前記第1のプログラムの前記第1のコピーは、複数の明確に区別されるコンピューティングシステム上で実行される前記第1のプログラムの複数のコピーのうちの1つのコピーであり、前記複数のコピーのうちの少なくとも1つのコピーは、前記複数のコピーのうちの1つまたは複数の他のコピーに対する代替的コピーであり、前記第1のプログラムの前記第2のコピーが実行されている前記第3のコンピューティングシステムを識別する前記ステップは、前記少なくとも1つの代替的コピーのうちの1つのコピーである前記第2のコピーに基づいて前記第1のプログラムの前記第2のコピーを選択するステップを含むことを特徴とする請求項4に記載の方法。
  10. 前記第1のコンピューティングシステムに前記ブロックデータストレージボリュームをアタッチする前に、前記第2のデータストレージシステム上に前記ブロックデータストレージボリュームを作成するステップ、および明確に区別される第4のブロックデータストレージシステム上に前記ブロックデータストレージボリュームのミラーコピーを作成するステップをさらに含み、
    前記第1のグループおよび前記第2のグループの前記データアクセス要求に応答する前記ステップは、前記第1のグループおよび前記第2のグループの前記データアクセス要求の、前記作成されたミラーコピー上での実行を開始するステップをさらに含むことを特徴とする請求項4に記載の方法。
  11. 前記1つまたは複数のデータアクセス要求の前記指示を受け取る前に、前記第1の実行プログラムのコピーで使用できるように前記ブロックデータストレージボリュームを前記第1のコンピューティングシステムにアタッチするステップをさらに含み、
    前記ブロックデータストレージボリュームをアタッチする前記ステップは、前記第1の論理ブロックストレージデバイスを前記第2のデータストレージシステムによって提供される前記ブロックデータストレージボリュームに関連付けるステップを含み、前記1つまたは複数のネットワークへの前記第1のコンピューティングシステムのアクセスを管理するノードマネージャモジュールによって実行され、
    前記ノードマネージャモジュールは、前記第1の実行プログラムに関連付けられているユーザからの要求に応答して前記ブロックデータストレージボリュームをすでに作成しているブロックデータストレージサービスの一部であることを特徴とする請求項4に記載の方法。
  12. 前記第1のコンピューティングシステム、前記第3のコンピューティングシステム、および前記第2のデータストレージシステムは、第1の地理的位置の同じ場所に配置されている複数のコンピューティングシステムの部分集合であり、前記複数のコンピューティングシステムは、前記ブロックデータストレージサービスによって提供される複数のブロックデータストレージシステムを含み、前記第2のデータストレージシステムは、前記複数のブロックデータストレージシステムのうちの1つのブロックデータストレージシステムであることを特徴とする請求項4に記載の方法。
  13. 前記第1の地理的位置の場所は、データセンターであり、前記第1のプログラムが、前記データセンターにある前記複数のコンピューティングシステムのうちのいくつかのコンピューティングシステム上の複数のユーザに対し複数のプログラムを実行するプログラム実行サービスによって実行され、前記第1のコンピューティングシステムは、少なくとも1つのプログラムを実行するようにそれぞれ構成された複数の仮想マシンをホストし、前記第1の実行プログラムは、前記複数のプログラムのうちの1つであり、および前記第1のコンピューティングシステムによってホストされる前記複数の仮想マシンのうちの少なくとも1つによって実行される仮想マシンのイメージであり、前記データアクセス要求の前記第1のグループの前記指示を受け取る前記ステップと前記他のデータアクセス要求の前記第2のグループの前記指示を受け取る前記ステップとデータアクセス要求の前記第1のグループおよび前記第2のグループの前記受け取った指示に対して応答する前記ステップは、前記第1のコンピューティングシステム用の仮想マシンモニターの実行の一部として実行され、前記第1のコンピューティングシステムは、前記第1の実行プログラムによる使用のために利用可能である1つまたは複数の他の実際のローカルのストレージデバイスを備えることを特徴とする請求項12に記載の方法。
  14. 実行プログラムによるブロックデータストレージ機能へのアクセスを管理するためのコンピュータによって実行される方法であって、
    第1のコンピューティングシステム上で実行される第1のアプリケーションプログラムによる非ローカルブロックデータストレージボリュームへのアクセスを可能にするステップであって、前記アクセスによって前記第1のアプリケーションプログラムは前記ブロックデータストレージボリュームに対するデータアクセス要求を開始することができ、前記ブロックデータストレージボリュームは1つまたは複数のネットワークにより前記第1のコンピューティングシステムから隔てられている第2のブロックデータストレージシステムによって提供され、前記アクセスを前記第1のアプリケーションプログラムに許可する前記ステップは、前記第1の実行アプリケーションプログラムが前記ブロックデータストレージボリュームを表す前記第1のコンピューティングシステムのローカルにある第1の論理ブロックストレージデバイスとのやり取りを介して前記ブロックデータストレージボリュームに対する前記データアクセス要求を開始するような仕方で前記ブロックデータストレージボリュームを前記第1のコンピューティングシステムにアタッチするステップを含む、ステップと、
    前記ブロックデータストレージボリュームに対する前記第1のアプリケーションプログラムによって開始された1つまたは複数のデータアクセス要求の1つまたは複数の受け取った指示に応答するステップであって、前記第1のアプリケーションプログラムによって開始された前記ブロックデータストレージボリュームに対する前記データアクセス要求は、前記ブロックデータストレージボリューム上に格納されているブロックデータにアクセスする要求であり、応答する前記ステップは前記第2のブロックデータストレージシステム上の前記ブロックデータストレージボリュームに対する前記データアクセス要求の実行を開始するステップを含む、ステップと、
    前記第1のコンピューティングシステム上で実行されている前記第1のアプリケーションプログラムが利用不可能になった後に、前記第1のアプリケーションプログラムに許可していた前記アクセスに代えて、第3のコンピューティングシステム上で実行されている第2のアプリケーションプログラムに前記ブロックデータストレージボリュームへのアクセスを許可し、前記第1のアプリケーションプログラムおよび前記第2のアプリケーションプログラムは、単一のアプリケーションプログラムの実行コピーであり、前記アクセスを前記第2のアプリケーションプログラムに許可する前記ステップは、前記第2のアプリケーションプログラムが実行される前記第3のコンピューティングシステムを識別するステップと前記第2のアプリケーションプログラムが前記ブロックデータストレージボリュームを表す前記第3のコンピューティングシステムのローカルにある第2の論理ブロックストレージデバイスにアクセスするような仕方で前記ブロックデータストレージボリュームを前記第3のコンピューティングシステムにアタッチするステップとを含む、ステップと、
    前記ブロックデータストレージボリュームに対する前記第2のアプリケーションプログラムによって開始された1つまたは複数の他のデータアクセス要求の1つまたは複数の受け取った指示に応答するステップであって、前記第2のアプリケーションプログラムによって開始された前記ブロックデータストレージボリュームに対する前記他のデータアクセス要求は、前記ブロックデータストレージボリューム上に格納されているブロックデータにアクセスする要求であり、応答する前記ステップは前記第2のブロックデータストレージシステム上の前記ブロックデータストレージボリュームに対する前記他のデータアクセス要求の実行を開始するステップを含む、ステップと
    を含む方法
  15. 前記第1のコンピューティングシステム、前記第3のコンピューティングシステム、および前記第2のブロックデータストレージシステムは、単一の地理的位置の場所に配置され、前記第1のコンピューティングシステムおよび前記第2のブロックデータストレージシステムは、1つまたは複数のネットワークによって隔てられており、前記第2のブロックデータストレージシステム上の前記ブロックデータストレージボリュームに対する前記データアクセス要求および前記他のデータアクセス要求の前記実行は、ブロックデータストレージサービスのシステムマネージャモジュールによって実行され、前記ブロックデータストレージボリュームへの前記アクセスを前記第1の実行アプリケーションプログラムに許可する前記ステップは、前記第1のコンピューティングシステムに関連付けられ、前記1つまたは複数のネットワークへの前記第1の実行アプリケーションプログラムのアクセスを管理する前記ブロックデータストレージサービスのノードマネージャモジュールによって実行され、前記データアクセス要求の前記受け取った指示に応答する前記ステップは、前記1つまたは複数のネットワーク上で前記受け取ったデータアクセス要求を前記第2のブロックデータストレージシステムに送信するステップを開始することによって一部は前記ノードマネージャモジュールの制御の下で実行されることを特徴とする請求項14に記載の方法
  16. 前記ブロックデータストレージボリュームへの前記アクセスを前記第2の実行アプリケーションプログラムに許可する前記ステップは、前記1つまたは複数のネットワークへの前記第2の実行アプリケーションプログラムのアクセスをさらに管理する前記ノードマネージャモジュールによって実行され、前記第3のコンピューティングシステムおよび前記第1のコンピューティングシステムは、単一の物理的コンピューティングシステムの一部であり、前記他のデータアクセス要求の前記受け取った指示に応答する前記ステップは、前記1つまたは複数のネットワーク上で前記受け取った他のデータアクセス要求を前記第2のブロックデータストレージシステムに送信するステップを開始することによって一部は前記ノードマネージャモジュールの制御の下で実行されることを特徴とする請求項15に記載の方法
  17. 実行プログラムによるブロックデータストレージ機能へのアクセスを管理するように構成されているシステムであって、
    1つまたは複数のメモリと、
    複数のブロックデータストレージシステムを使用して、前記ブロックデータストレージサービスのユーザによって作成され、前記ユーザに関連付けられている1つまたは複数の実行プログラムに代わって1つまたは複数のネットワーク上でアクセスされるブロックデータストレージボリュームを格納するブロックデータストレージサービスを提供するように構成されているブロックデータストレージシステムマネージャモジュールと
    を備え、前記ブロックデータストレージサービスを提供する前記ステップは、
    1つまたは複数の実行プログラムで使用するための1つまたは複数のブロックデータストレージボリュームを作成するステップであって、前記ブロックデータストレージボリュームのそれぞれは前記複数のブロックデータストレージシステムのうちの1つのブロックデータストレージシステム上に格納される、ステップと、
    前記作成されたブロックデータストレージボリュームのうちの第1のブロックデータストレージボリュームへのアクセスを前記1つまたは複数の実行プログラムのうちの第1の実行プログラムに許可した後に、前記第1の作成されたブロックデータストレージボリューム上で前記1つまたは複数のデータアクセス要求の実行を開始することによって前記第1の作成されたブロックデータストレージボリュームに対し前記第1のプログラムによって開始された1つまたは複数のデータアクセス要求に応答するステップであって、前記第1のプログラムによって開始された前記第1のブロックデータストレージボリュームに対する前記1つまたは複数のデータアクセス要求は、前記第1のブロックデータストレージボリューム上に格納されているブロックデータにアクセスする要求であり、前記アクセスを前記第1の実行プログラムに許可する前記ステップは、前記第1の実行プログラムが前記第1のブロックデータストレージボリュームを表す前記第1のコンピューティングシステムのローカルにある第1の論理ブロックストレージデバイスとのやり取りを介して前記第1のブロックデータストレージボリュームに対する前記データアクセス要求を開始するような仕方で前記第1のブロックデータストレージボリュームを前記第1のプログラムを実行している第1のコンピューティングシステムにアタッチするステップを含む、ステップと、
    前記第1のプログラムが利用不可能になり、前記第1の作成されたブロックデータストレージボリュームへのアクセスが明確に区別される第2の実行プログラムに許可され、前記利用不可能になった前記第1のプログラムに許可されていた前記アクセスを置き換えた後に、前記第1の作成されたブロックデータストレージボリューム上で前記1つまたは複数の他のデータアクセス要求の実行を開始することによって前記第1の作成されたブロックデータストレージボリュームに対し前記第2のプログラムによって開始された1つまたは複数の他のデータアクセス要求に応答するステップであって、前記第1のプログラムおよび前記第2のプログラムは、単一のプログラムの実行コピーであり、前記第2のプログラムによって開始された前記第1のブロックデータストレージボリュームに対する前記1つまたは複数の他のデータアクセス要求は、前記第1のブロックデータストレージボリューム上に格納されているブロックデータにアクセスする要求であり、前記アクセスを前記第2のプログラムに許可する前記ステップは、前記第2のプログラムが実行される第3のコンピューティングシステムを識別するステップと前記第2のプログラムが前記第1のブロックデータストレージボリュームを表す前記第3のコンピューティングシステムのローカルにある第2の論理ブロックストレージデバイスにアクセスするような仕方で前記第1のブロックデータストレージボリュームを前記第3のコンピューティングシステムにアタッチするステップとを含む、ステップと
    を含むことを特徴とするシステム。
  18. 前記第1のブロックデータストレージボリュームは、前記ブロックデータストレージシステムのうちの第1のブロックデータストレージシステム上に格納され、前記第1のコンピューティングシステム、前記第3のコンピューティングシステム、および前記第1のブロックデータストレージシステムは、単一の地理的位置の場所に配置され、1つまたは複数のネットワークによって隔てられており、前記システムは、前記1つまたは複数のネットワークへの前記第1のプログラムおよび前記第2のプログラムのアクセスを管理するために前記第1のプログラムおよび前記第2のプログラムに関連付けられている前記ブロックデータストレージサービスの1つまたは複数のノードマネージャモジュールをさらに備え、これにより、前記データアクセス要求および前記他のデータアクセス要求への前記応答は、前記1つまたは複数のネットワーク上で前記データアクセス要求および前記他のデータアクセス要求を前記第1のブロックデータストレージシステムに送信するステップを開始することによって一部は前記1つまたは複数のノードマネージャモジュールの制御の下で実行されることを特徴とする請求項17に記載のシステム。
  19. 前記第1のブロックデータストレージボリュームの第1のコピーは、前記ブロックデータストレージシステムのうちの第1のブロックデータストレージシステム上に格納され、前記第1のプログラムによって開始された前記データアクセス要求の前記実行は、前記第1のブロックデータストレージボリュームの前記第1のコピー上で実行され、前記第1のプログラムは、第1の地理的位置の場所にある前記第1のブロックデータストレージシステムと同じ場所に配置されている第1のコンピューティングシステム上で実行され、前記第2のプログラムは、明確に区別される第2の地理的位置の場所にある第2のコンピューティングシステム上で実行され、前記第1の作成されたブロックデータストレージボリュームへの前記アクセスを前記第2の実行プログラムに許可する前記ステップは、前記第2のコンピューティングシステムを前記第1のブロックデータストレージボリュームの第2のコピーを格納する前記第2の地理的位置の場所にある第2のブロックデータストレージシステムにアタッチするステップを開始するステップを含むことを特徴とする請求項17に記載のシステム。
  20. 前記システムは、前記1つまたは複数のメモリのうちの少なくとも1つのメモリを備える第1のコンピューティングシステムを備え、前記ブロックデータストレージシステムマネージャモジュールは、前記少なくとも1つのメモリを使用して前記第1のコンピューティングシステムによって実行されるソフトウェア命令を備えることを特徴とする請求項17に記載のシステム。
JP2011522284A 2008-08-08 2009-08-07 実行プログラムによる非ローカルブロックデータストレージへの信頼性の高いアクセスの実現 Active JP5015351B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12/188,943 US8015343B2 (en) 2008-08-08 2008-08-08 Providing executing programs with reliable access to non-local block data storage
US12/188,943 2008-08-08
US12/188,949 2008-08-08
US12/188,949 US8019732B2 (en) 2008-08-08 2008-08-08 Managing access of multiple executing programs to non-local block data storage
PCT/US2009/053176 WO2010017492A1 (en) 2008-08-08 2009-08-07 Providing executing programs with reliable access to non-local block data storage

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011199845A Division JP5118243B2 (ja) 2008-08-08 2011-09-13 実行プログラムによる非ローカルブロックデータストレージへの信頼性の高いアクセスの実現

Publications (3)

Publication Number Publication Date
JP2011530748A JP2011530748A (ja) 2011-12-22
JP2011530748A5 JP2011530748A5 (ja) 2012-02-09
JP5015351B2 true JP5015351B2 (ja) 2012-08-29

Family

ID=41663996

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011522284A Active JP5015351B2 (ja) 2008-08-08 2009-08-07 実行プログラムによる非ローカルブロックデータストレージへの信頼性の高いアクセスの実現
JP2011199845A Active JP5118243B2 (ja) 2008-08-08 2011-09-13 実行プログラムによる非ローカルブロックデータストレージへの信頼性の高いアクセスの実現

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2011199845A Active JP5118243B2 (ja) 2008-08-08 2011-09-13 実行プログラムによる非ローカルブロックデータストレージへの信頼性の高いアクセスの実現

Country Status (5)

Country Link
EP (4) EP2324429B1 (ja)
JP (2) JP5015351B2 (ja)
CN (3) CN103645953B (ja)
ES (1) ES2575155T3 (ja)
WO (1) WO2010017492A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10255587B2 (en) * 2012-01-18 2019-04-09 Microsoft Technology Licensing, Llc System and method for blended presentation of locally and remotely stored electronic messages
CN102710763B (zh) * 2012-05-29 2015-11-25 新华网股份有限公司 一种分布式缓存池化、分片及故障转移的方法及系统
CA2868247C (en) 2013-07-26 2017-04-04 Ji Ouyang Data sending method, data receiving method, and storage device
CN103546724A (zh) * 2013-10-22 2014-01-29 杭州爱浦多数码技术有限公司 一种网络摄像机集散式冗余存储系统及其存储方法
US10866768B2 (en) * 2014-12-12 2020-12-15 Advanced Micro Devices, Inc. Storage location assignment at a cluster compute server
US20160277498A1 (en) * 2015-03-20 2016-09-22 Intel Corporation Location and boundary controls for storage volumes
US9900386B2 (en) 2015-04-09 2018-02-20 International Business Machines Corporation Provisioning data to distributed computing systems
US10747624B2 (en) 2015-10-14 2020-08-18 Hitachi, Ltd. Storage system and control method of storage system using asynchronous remote copying to backup volume at specific time points
CN107025151A (zh) * 2016-01-30 2017-08-08 鸿富锦精密工业(深圳)有限公司 电子装置连接系统
JP6720357B2 (ja) * 2016-06-29 2020-07-08 アマゾン テクノロジーズ インコーポレイテッド ネットワークアクセス可能なデータボリューム変更
US10509738B2 (en) * 2016-07-01 2019-12-17 Intel Corporation Remote memory operations
CN106844140B (zh) * 2016-12-21 2020-05-26 南京富士通南大软件技术有限公司 一种基于scom的监控方法
TWI659306B (zh) * 2018-01-10 2019-05-11 英屬開曼群島商捷鼎創新股份有限公司 卷搬移中執行資料讀寫的方法及電子裝置
KR102547126B1 (ko) * 2018-04-30 2023-06-23 아마존 테크놀로지스, 인크. 블록 스토리지 시스템들을 위한 분산된 복제본
CN113849137B (zh) * 2021-10-13 2023-08-01 上海威固信息技术股份有限公司 一种面向申威容器平台的可视化块存储方法和系统

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324654B1 (en) * 1998-03-30 2001-11-27 Legato Systems, Inc. Computer network remote data mirroring system
JP2002123406A (ja) * 2000-10-17 2002-04-26 Pfu Ltd 高信頼性システム
US6938122B2 (en) * 2001-01-23 2005-08-30 Emc Corporation Remote mirroring in a switched environment
WO2003021484A2 (en) * 2001-08-30 2003-03-13 Bea Systems, Inc Cluster caching with concurrency checking
US20070094465A1 (en) * 2001-12-26 2007-04-26 Cisco Technology, Inc., A Corporation Of California Mirroring mechanisms for storage area networks and network based virtualization
US20070094466A1 (en) * 2001-12-26 2007-04-26 Cisco Technology, Inc., A Corporation Of California Techniques for improving mirroring operations implemented in storage area networks and network based virtualization
US7139885B2 (en) * 2001-12-27 2006-11-21 Hitachi, Ltd. Method and apparatus for managing storage based replication
KR100464350B1 (ko) * 2001-12-31 2005-01-03 삼성전자주식회사 통신 시스템에서 로드 공유 그룹을 이용한 분산된 호 처리및 업그레이드 시스템 및 방법
US7043665B2 (en) * 2003-06-18 2006-05-09 International Business Machines Corporation Method, system, and program for handling a failover to a remote storage location
JP4307202B2 (ja) * 2003-09-29 2009-08-05 株式会社日立製作所 記憶システム及び記憶制御装置
US20050240806A1 (en) * 2004-03-30 2005-10-27 Hewlett-Packard Development Company, L.P. Diagnostic memory dump method in a redundant processor
US7131027B2 (en) * 2004-07-09 2006-10-31 Hitachi, Ltd. Method and apparatus for disk array based I/O routing and multi-layered external storage linkage
US7058731B2 (en) * 2004-08-03 2006-06-06 Hitachi, Ltd. Failover and data migration using data replication
JP4786248B2 (ja) * 2005-08-09 2011-10-05 株式会社日立製作所 ストレージシステムの構成管理装置及び構成管理方法
JP4710518B2 (ja) * 2005-09-28 2011-06-29 株式会社日立製作所 計算機システムとそのブート制御方法
JP4736783B2 (ja) * 2005-12-19 2011-07-27 株式会社日立製作所 ストレージ装置を有するネットワークにおける、ボリューム及び障害管理方法
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US8046545B2 (en) * 2006-01-03 2011-10-25 Emc Corporation Continuous backup
JP2007226400A (ja) * 2006-02-22 2007-09-06 Hitachi Ltd 計算機管理方法、計算機管理プログラム、実行サーバの構成を管理する待機サーバ及び計算機システム
JP4611922B2 (ja) * 2006-03-28 2011-01-12 富士通株式会社 制御プログラム、制御方法および制御装置
US7792944B2 (en) * 2006-03-31 2010-09-07 Amazon Technologies, Inc. Executing programs based on user-specified constraints
US7627729B2 (en) * 2006-09-07 2009-12-01 International Business Machines Corporation Apparatus, system, and method for an improved synchronous mirror swap
US7594072B2 (en) * 2006-09-15 2009-09-22 Hitachi, Ltd. Method and apparatus incorporating virtualization for data storage and protection
JP4902403B2 (ja) * 2006-10-30 2012-03-21 株式会社日立製作所 情報システム及びデータ転送方法
JP5244332B2 (ja) * 2006-10-30 2013-07-24 株式会社日立製作所 情報システム、データ転送方法及びデータ保護方法
US8554981B2 (en) * 2007-02-02 2013-10-08 Vmware, Inc. High availability virtual machine cluster
US8296398B2 (en) * 2008-04-29 2012-10-23 Overland Storage, Inc. Peer-to-peer redundant file server system and methods

Also Published As

Publication number Publication date
EP3037970A1 (en) 2016-06-29
CN103645953B (zh) 2017-01-18
CN105138435A (zh) 2015-12-09
EP2324429A4 (en) 2012-06-06
JP5118243B2 (ja) 2013-01-16
CN102177508B (zh) 2015-08-05
EP2426605A1 (en) 2012-03-07
JP2012053878A (ja) 2012-03-15
JP2011530748A (ja) 2011-12-22
EP2324429A1 (en) 2011-05-25
EP3699765A1 (en) 2020-08-26
CN103645953A (zh) 2014-03-19
CN105138435B (zh) 2019-06-04
EP2324429B1 (en) 2020-10-14
ES2575155T3 (es) 2016-06-24
WO2010017492A1 (en) 2010-02-11
EP2426605B1 (en) 2016-03-02
CN102177508A (zh) 2011-09-07

Similar Documents

Publication Publication Date Title
US11768609B2 (en) Managing access of multiple executing programs to nonlocal block data storage
US11526407B2 (en) Providing executing programs with access to stored block data of others
JP5015351B2 (ja) 実行プログラムによる非ローカルブロックデータストレージへの信頼性の高いアクセスの実現
US9262273B2 (en) Providing executing programs with reliable access to non-local block data storage
US7831682B2 (en) Providing a reliable backing store for block data storage
US9747179B2 (en) Data management agent for selective storage re-caching
US8984243B1 (en) Managing operational parameters for electronic resources
JP5789640B2 (ja) 複数のコンピュータシステムによるプログラムの実行を管理するシステム
US9462056B1 (en) Policy-based meta-data driven co-location of computation and datasets in the cloud
US20040153481A1 (en) Method and system for effective utilization of data storage capacity
Hussain et al. Overview of Oracle RAC: by Kai Yu

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110913

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20110913

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20111003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111125

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20111125

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20111222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120406

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120515

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120606

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150615

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5015351

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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

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