JP6437007B2 - ブロックベースのストレージにおけるページキャッシュ書き込みロギング - Google Patents

ブロックベースのストレージにおけるページキャッシュ書き込みロギング Download PDF

Info

Publication number
JP6437007B2
JP6437007B2 JP2016556704A JP2016556704A JP6437007B2 JP 6437007 B2 JP6437007 B2 JP 6437007B2 JP 2016556704 A JP2016556704 A JP 2016556704A JP 2016556704 A JP2016556704 A JP 2016556704A JP 6437007 B2 JP6437007 B2 JP 6437007B2
Authority
JP
Japan
Prior art keywords
page cache
storage
log
write
block
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
JP2016556704A
Other languages
English (en)
Other versions
JP2017515193A (ja
Inventor
ウェイ,ダニー
ガスリー,ザ・セカンド,ジョン・ルーサー
トンプソン,ジェームズ・マイケル
ホークス,ベンジャミン・アーサー
カスターズ,ノーバート・ピイ
Original Assignee
アマゾン・テクノロジーズ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アマゾン・テクノロジーズ・インコーポレーテッド filed Critical アマゾン・テクノロジーズ・インコーポレーテッド
Publication of JP2017515193A publication Critical patent/JP2017515193A/ja
Application granted granted Critical
Publication of JP6437007B2 publication Critical patent/JP6437007B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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
    • 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/461Sector or disk block

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

ネットワークにわたるハードウェア資源、ソフトウェア及び情報ストレージの仮想化を動的に共有するための技術に関する近年の大変革は、コンピューティングの信頼性、拡張性及び費用効果を増大した。より具体的には、仮想化の出現を通じた仮想コンピューティング資源及びストレージを要求に応じて提供する能力によって、資源及びストレージを処理する消費者は、知覚したコンピューティング及びストレージニーズに即座に応答してコンピューティング及びストレージ費用を柔軟に構築できるようになった。仮想化によって、顧客は、ハードウェアの製造及び配備の遅延時間及び費用によって必然的に決められるサイクルのプロビジョニングにおいて、固定されたハードウェアを購買またはリースするのではなく、必要な時にプロセッササイクル及びストレージを購入することができる。コンピューティング及びストレージの使用可能性を決定する将来の要求の予測の精度に応じるよりも、ユーザは、必要に応じて比較的瞬時にコンピューティング及びストレージ資源の使用権を購入することができる。
仮想化されたコンピューティング環境は、頻繁に、ブロックベースのストレージによってサポートされる。そのようなブロックベースのストレージは、一連の標準化されたストレージの呼び出しを通じて、ブロックベースのストレージの機能的な曖昧さを、それ自体がサポートするボリュームの構造的及び機能的な細部に与えるさまざまなコンピューティング仮想化と相互作用することができるストレージシステム、及びそれ自体がストレージアベイラビリティを提供する、仮想化において実行するオペレーティングシステムを提供する。しかしながら、仮想化された資源におけるより大きな処理能力と共に、ネットワーク伝播性の増大に伴い、ブロックベースのストレージにおけるI/O要求が増大され得る。I/O要求が、サービスリクエストに対してブロックベースのストレージの容量を超える場合には、仮想化されたコンピューティング資源のためのブロックベースのストレージ性能の待ち時間及び/または永続性は、損害を受ける。
いくつかの実施形態に従う、ブロックベースのストレージにおけるページキャッシュ書き込みロギングを図示する一連のブロック図である。 いくつかの実施形態に従う、ストレージノードにおいてページキャッシュ書き込みロギングを実施するブロックベースのストレージサービスを含む複数のネットワークベースのサービスを実装するプロバイダネットワークを図示するブロック図である。 いくつかの実施形態に従う、ストレージノードに実装されるページキャッシュについての更新のためのページキャッシュ書き込みログを実装するストレージノードを図示するブロック図である。 いくつかの実施形態に従う、ストレージノードにおけるページキャッシュのためのページキャッシュ書き込みログ内のログエントリをトリムするように構成されたストレージノードを図示するブロック図である。 いくつかの実施形態に従う、ブロックベースのストレージに保持されたデータボリュームについての動的に選択できるページキャッシュ書き込みロギングを図示するブロック図である。 いくつかの実施形態に従う、ブロックベースのストレージにおけるページキャッシュ書き込みロギングのためのさまざまな方法及び技術を図示する高レベルフローチャートである。 いくつかの実施形態に従う、ページキャッシュ書き込みログからのページキャッシュリカバリのためのさまざまな方法及び技術を図示する高レベルフローチャートである。 いくつかの実施形態に従う、ページキャッシュ書き込みログをトリミングするためのさまざまな方法及び技術を図示する高レベルフローチャートである。 いくつかの実施形態に従う、ページキャッシュ書き込みロギング技術を配備するためのさまざまな方法及び技術を図示する高レベルフローチャートである。 いくつかの実施形態に従う、ストレージノードに保持されたデータボリュームにおける永続性特性を動的に変更するためのさまざまな方法及び技術を図示する高レベルフローチャートである。 いくつかの実施形態に従う、データボリュームについてのページキャッシュ書き込みロギングを有効にするか無効にするかを決定するためのさまざまな方法及び技術を図示する高レベルフローチャートである。 いくつかの実施形態に従う、特定のデータボリュームの永続性特性に従う、特定のデータボリュームにおいて、ストレージノードにおける書き込みリクエストを処理するさまざまな方法及び技術を図示する高レベルフローチャートである。 いくつかの実施形態に従う、書き込みロギングが有効化及び無効化されたデータボリュームリカバリのためのさまざまな方法及び技術を図示する高レベルフローチャートである。 いくつかの実施形態に従う、例示的なコンピューティングシステムを図示するブロック図である。
いくつかの実施形態及び実例となる図面に関する実施例として実施形態を本明細書に記述するが、当業者は、記述した実施形態または図面に実施形態が限定されないことを認識する。図面及びそれに関する詳細な説明が、開示した特定の形態に実施形態を限定することは意図せず、それどころか、その意図が、添付の特許請求の範囲によって定義される趣旨及び範囲内に収まるすべての変更物、均等物及び代替物を包含できることを理解すべきである。本明細書に使用される見出しは、組織的な目的のみのために使用され、記述または特許請求の範囲を限定するのに使用されることは意味しない。本出願全体を通して使用されるとき、「may」という語は、許容的な意味(すなわち、可能性を有する意味)において使用され、義務的な意味(すなわち、必須の意味)ではない。同様に、「include」、「including」及び「includes」という語は、含むが、それに限定されないことを意味する。
本明細書に記述するシステム及び方法は、ブロックベースのストレージにおいてページキャッシュ書き込みロギングを実施することができる。ブロックベースのストレージシステムは、通常、ページキャッシュ内に保持されたデータボリュームについての更新を(システムメモリにおいて)迅速に保存するページキャッシュを実装する。最終的に、ページキャッシュは、永続ストレージを更新するために、ブロックベースのストレージデバイスをフラッシュすることができる。しかしながら、システムメモリはシステム故障の発生時には永続しないので、ページキャッシュ内のみに保存された書き込みは、永続的ではなく、喪失することがある。ページキャッシュ内のデータの喪失を招く故障の発生時のページキャッシュの状態を保存するために、ストレージノードにおいてページキャッシュ書き込みロギングを実施することができる。いくつかの実施形態では、ページキャッシュ書き込みロギングは、同一のストレージシステムに保持された種々のデータボリュームにおいて選択的に実施することができる。対応するデータボリュームにおけるページキャッシュ書き込みロギングが有効であるか無効であるかを表現する、それぞれのデータボリュームについての永続性特性は、ページキャッシュ書き込みログにおいてログすべき入ってくる書き込みリクエストの速度などの、ストレージシステムにおけるさまざまな状況に従い動的に変更することができる。
図1は、いくつかの実施形態に従う、ブロックベースのストレージにおけるページキャッシュ書き込みロギングを図示する一連のブロック図である。102に示すように、(図14に関して後述するシステム2000などの、汎用コンピューティングシステムであっても良い)ブロックストレージサーバ100が、ブロックストレージサーバに付随する一つ以上のブロックベースのストレージデバイスにデータボリューム120を保存することができる。データボリューム120に関する書き込みリクエスト142が受信されると、I/Oマネージャ102は、それぞれのページまたはエントリ146についての更新をページキャッシュ140に送信し、それと並行またはほぼ並行して、書き込まれたログレコード144を、(ブロックベースのストレージデバイスの保存するボリューム120と分離しても良い)永続ストレージデバイスに実装できるページキャッシュ書き込みログ130に送信することができる。さまざまな実施形態において、ログレコードは、ページキャッシュ140の特定のページまたはエントリについての更新を記述することができる。いくつかの実施形態では、ログレコードは、ページキャッシュ書き込みログ130に連続的に保存することができる。ログレコード144の保存及びページキャッシュ146の更新に応答して、書き込みリクエストを承認することができる。その後、ページキャッシュ内のページをフラッシュして148、ブロックベースのストレージデバイス内のボリューム120を更新することができる。いくつかの実施形態では、ボリューム(複数可)120内に存在し続けるページについての更新を記述するログレコードを再利用かつ使用可能にして、追加のログレコードを保存するように、ページキャッシュ書き込みログ130に保存されたログレコードを、ページキャッシュからのフラッシュ動作148に基づいて除去またはトリムすることができる。
シーン104に図示するように、システム故障152は、ページキャッシュデータの喪失を招く。したがって、ページキャッシュデータ内の書き込みリクエストは、永続ストレージ内のボリューム(複数可)120にフラッシュできないので、喪失される。いくつかの実施形態では、I/Oマネージャ132は、ページキャッシュ書き込みログ130からログレコード132を取得し、ページキャッシュについての更新134を再生してシステム故障の前のページキャッシュの状態を復元することによって、ページキャッシュデータをリカバリすることができる。
いくつかの実施形態では、ページキャッシュ書き込みロギングは、ボリューム基準において実施することができる。例えば、いくつかの実施形態では、ページキャッシュ書き込みロギングが有効であるかどうかを示す、データボリュームについての永続性特性を、ストレージノードにおける変化する状況に順応するように動的に変更することができる。例えば、いくつかの実施形態では、I/Oマネージャ102は、ページキャッシュ書き込みログ130にログすべき入ってくる書き込みリクエストの速度を観測し、そしてそれぞれの一つ以上のデータボリューム120についての一つ以上の永続性特性を動的に変更することができる。例として、特定のデータボリューム120についてのページキャッシュ書き込みロギングが無効である場合には、更新を記述するログレコードをページキャッシュ書き込みログ内に保存せずに、データボリュームに向けられた書き込みリクエスト142を完了する(例えば、ページキャッシュ140を更新する)ことができる。同様に、ページキャッシュ書き込みロギングが有効である場合には、ページキャッシュ書き込みロギングの有効化の後で受信された書き込みリクエストは、シーン102に図示するように、書き込みを完了したとして承認する前に、実行されるページキャッシュ140についての更新と、ページキャッシュ書き込みログ130内に保存されたログレコードとの両方を有することができる。いくつかの実施形態では、種々の永続性特性を有するデータボリュームについてのリカバリ動作は、新規の書き込みリクエストをより迅速に受信するのに使用可能なようにページキャッシュ書き込みロギングが有効にされたそれらのデータボリューム、またはページキャッシュ書き込みロギングが無効にされたそれらのデータボリュームよりも少なく後に続くリカバリ動作に応じて変化し得る。
前の記述が限定することを意図せず、単にブロックベースのストレージにおけるページキャッシュ書き込みロギングの実施例として提供されることに留意されたい。さまざまな他のコンポーネントが、ロギング、リカバリまたは書き込みリクエストの処理を推進し、またはそれに関与することができる。他の異なる、例えば、ストレージノードの数、データボリュームまたは永続性スキーム(例えば、複数のノードへのデータボリュームの複製)などは、図1に図示するものと異なっても良い。
本明細書は、ページキャッシュ書き込みロギングを実施し、データボリュームについての永続性特性を動的に変更できる、ブロックベースのストレージサービスプロバイダの概要から始まる。次に、種々のコンポーネント/モジュール、またはブロックベースのストレージプロバイダの一部として用いることができるコンポーネント/モジュールの配置を含む、ブロックベースのストレージサービスプロバイダのさまざまな実施例が論じられる。次いでページキャッシュ書き込みロギングを実施し、データボリュームについての永続性特性を動的に変更するための多くの異なる方法及び技術が論じられ、そのいくつかが添付のフローチャートに図示される。最後に、さまざまなコンポーネント、モジュール、システム、デバイス及び/またはノードを実装できる例示的なコンピューティングシステムの記述が提供される。本明細書全体を通してさまざまな実施例が提供される。
図2は、いくつかの実施形態に従う、スナップショット動作中に最適化された書き込み動作を実施するブロックベースのストレージサービスを含む複数のネットワークベースのサービスを実装するプロバイダネットワークを図示するブロック図である。プロバイダネットワーク200は、インターネット及び/または他のネットワークを介してクライアント210にアクセス可能な一つ以上のサービス(例えば、さまざまなタイプのクラウドベースのコンピューティングまたはストレージ)を提供するために、会社または公共部門組織などの事業体によって設定することができる。プロバイダネットワーク200は、プロバイダネットワーク200によって提供されるインフラストラクチャならびにサービスを実装及び分配するのに必要な、物理的な及び/または仮想化されたコンピュータサーバ、ストレージデバイス、ネットワーキング機器などの集合(例えば、図14に関して後述するコンピューティングシステム2000)などのさまざまな資源プールをホストする多数のデータセンタを含むことができる。いくつかの実施形態では、プロバイダネットワーク200は、仮想コンピュートサービス230などのコンピューティング資源、ブロックベースのストレージサービス220及び(オブジェクト/キー値ベースのデータストアなどのさまざまなストレージタイプ、またはさまざまなタイプのデータベースシステムを含み得る)他のストレージサービス240などのストレージサービス、ならびに/または任意の他のタイプのネットワークベースのサービス250を提供することができる。クライアント210は、プロバイダネットワーク200によって提供されたこれらのさまざまなサービスに、ネットワーク260を介してアクセスすることができる。同じ様に、ネットワークベースのサービスは、それ自体が互いと通信しかつ/または互いを使用することによって、種々のサービスを提供することができる。例えば、仮想または物理的なコンピュートインスタンスまたはストレージインスタンスなどの「インスタンス」と呼ばれるユニットにおいてクライアント210に提供されるコンピューティング資源は、特定のデータボリューム226を使用して、仮想ブロックストレージをコンピュートインスタンスに提供することができる。
上で述べたように、仮想コンピュートサービス230は、さまざまなコンピュートインスタンスをクライアント210に提供することができる。仮想コンピュートインスタンスは、例えば、(CPUのタイプ及び数、メインメモリサイズなどを示すことによって規定され得る)規定の計算能力、及び規定のソフトウェアスタック(例えば、順にハイパーバイザのトップで動作できる、オペレーティングシステムの特定のバージョン)を有する一つ以上のサーバを備えることができる。種々の実施形態において、多くの異なるタイプのコンピューティングデバイスを、仮想コンピュートサービス230のコンピュートインスタンスを実装するために、個々にまたは組み合わせて使用することができ、これは汎用または専用コンピュータサーバ、ストレージデバイス、ネットワークデバイスなどを含む。いくつかの実施形態では、インスタンスクライアント210または他の任意の他のユーザは、ネットワークトラフィックをコンピュートインスタンスに導くように設定する(かつ/または権限を付与する)ことができる。さまざまな実施形態において、コンピュートインスタンスは、さまざまな動作を実行するための永続性のブロックベースのストレージを取得するために、ブロックベースのストレージサービス220によって提供された一つ以上のデータボリューム226に付随またはマッピングすることができる。
コンピュートインスタンスは、例えば、クライアント210がインスタンスにアクセスする必要がない、クライアントアプリケーションの実行に適した、アプリケーションサーバインスタンス、Java(商標)仮想マシン(JVMs)、汎用または専用オペレーティングシステム、例えば、Ruby、Perl、Python、C、C++などの、さまざまな解釈またはコンパイルされたプログラミング言語をサポートするプラットフォーム、または高性能コンピューティングプラットフォーム)などの様々な異なるプラットフォームを動作または実装することができる。いくつかの実施形態では、コンピュートインスタンスは、予期される稼働時間の比率に基づいた種々のタイプまたは構成を有する。特定のコンピュートインスタンスの稼働時間の比率は、インスタンスがリザーブされている全時間に対する、インスタンスが作動する時間の比として定義することができる。いくつかの実施態様において、稼働時間の比率は、ユーティライゼーションとも称され得る。クライアントが、インスタンスがリザーブされている時間のうちの比較的小さい割合(例えば、年間のリザーベーションの30%〜35%)コンピュートインスタンスを使用することを予期する場合には、クライアントは、Low Uptime Ratioインスタンスとしてインスタンスをリザーブし、関連する価格ポリシに従う割引された1時間当たりの使用料金を支払うことを決定できる。クライアントが、時間の大半においてインスタンスを必要とする定常状態負荷を有することを予期する場合には、クライアントは、High Uptime Ratioインスタンスをリザーブし、均一なより低い1時間当たりの使用料金を支払う可能性があり得る。ただし、いくつかの実施形態では、価格ポリシに従い、1時間当たりの料金は、実際の使用時間にかかわらず、リザーベーションの全期間に対して請求され得る。同様に、いくつかの実施形態では、前金で払う費用及び時間当たりの費用が、対応する価格ポリシに従う、対応するHigh Uptime Ratioの費用とLow Uptime Ratioの費用との間に収まるところのMedium Uptime Ratioインスタンスについてのオプションをサポートすることができる。
コンピュートインスタンス構成は、コンピュートインテンシブアプリケーション(例えば、高トラフィックウェブアプリケーション、広告サービング、バッチ処理、ビデオのコード化、分散分析論、高エネルギー物理学、ゲノム分析及び計算流体力学)のための計算作業負荷、グラフィックインテンシブの作業負荷(例えば、ゲームストリーミング、3Dアプリケーションストリーミング、サーバーサイドのグラフィックス作業負荷、レンダリング、財務モデリング及び工学的設計)、メモリインテンシブの作業負荷(例えば、高性能データベース、分散メモリキャッシュ、メモリ内分析、ゲノムアセンブリ及び分析)、及びストレージを最適化した作業負荷(例えば、データウェアハウジング及びクラスタファイルシステム)などの汎用または特定の目的のコンピュートインスタンスも含むことができる。コンピュートインスタンスのサイズ、例えば、特定の数の仮想CPUコア、メモリ、キャッシュ、ストレージ、ならびに任意の他の性能特性。コンピュートインスタンスの配置は、特定のデータセンタ内でのそれらの位置、使用可能ゾーン、ジオグラフィック、位置など、及び(リザーブされたコンピュートインスタンスの場合には)リザーベーション期間の長さも含むことができる。
さまざまな実施形態において、プロバイダネットワーク200は、ストレージ動作を実行するためのブロックベースのストレージサービス220も実装することができる。ブロックベースのストレージサービス220は、複数の独立したストレージノード224a、224b、224c〜224nのプールから構成するストレージシステム(例えば、サーバブロックデータストレージシステム)であり、データボリュームの一つ以上のセットまたはデータボリューム(複数可)226a、226b、226c〜226nに保存するためのブロックレベルストレージを提供する。データボリューム226は、特定のクライアントにマッピングし、論理ブロックの隣接するセットとして仮想ブロックベースのストレージ(例えば、ハードディスクストレージまたは他の永続ストレージ)を提供することができる。いくつかの実施形態では、データボリューム226は、スナップショット動作または複製動作などの他のブロックストレージの動作を実行するための(一つ以上のデータブロックを含む)複数のデータチャンクに分割することができる。
データボリューム226のボリュームスナップショットは、データボリューム226の状態についての固定されたポイントインタイム表示であっても良い。いくつかの実施形態では、ボリュームスナップショット242を、別のストレージサービス240などの、データボリュームを保持するストレージノード224から遠隔に保存することができる。スナップショット動作は、所与のデータボリュームのスナップショットを、他のストレージサービス240内のリモートスナップショットデータストアなどの別のストレージ位置に送信、複写及び/または別の方法で保存するように実行できる。
ブロックベースのストレージサービス220は、ブロックベースのストレージサービス220の動作を援助するためのブロックベースのストレージサービスコントロールプレーン222を実装することができる。さまざまな実施形態において、ブロックベースのストレージサービスコントロールプレーン222は、仮想コンピュートサービス230及び/若しくはプロバイダネットワーク200内部に位置付けられた他のネットワークベースのサービス、及び/若しくは一つ以上の他のデータセンタ内部に位置付けられた任意選択のコンピューティングシステム(図示せず)、またはネットワーク260を通じて使用可能なプロバイダネットワーク200外部の他のコンピューティングシステムによって提供されたコンピュートインスタンスを実行するプログラムなどのブロックデータストレージの利用の管理においてクライアントを援助する。データボリューム226へのアクセスは、ブロックデータトランザクション命令に応答して、プロバイダネットワーク200内部の内部ネットワークを介して、またはネットワーク260を介して外部からもたらすことができる。
ブロックベースのストレージサービスコントロールプレーン222は、ユーザアカウントの管理(例えば、作製、削除、請求書作成、支払いの収集など)を含む、ブロックレベルストレージ機能性の提供に関連する様々なサービスを提供することができる。ブロックベースのストレージサービスコントロールプレーン222は、さらに、構成リクエストに応答して、データボリューム226の作製、使用及び削除に関連するサービスを提供することができる。ブロックベースのストレージサービスコントロールプレーン222は、他のストレージサービス240におけるボリュームスナップショット242の作製、使用及び削除に関連するサービスも提供することができる。ブロックベースのストレージサービスコントロールプレーン222は、性能の収集及び処理、ならびにデータボリューム226及びそれらのボリュームのスナップショット242の使用に関連するデータの検査に関連するサービスも提供することができる。
上で述べたように、プロバイダネットワーク200は、別のストレージサービス240も実装することができる。他のストレージサービス240は、ブロックベースのストレージサービス220によって提供されるものとして、同じまたは異なるタイプのストレージとして提供することができる。例えば、いくつかの実施形態では、他のストレージサービス240は、データをデータオブジェクトとして保存及び管理することができるオブジェクトベースのストレージサービスを提供できる。例えば、さまざまなデータボリューム226のボリュームスナップショット242を、特定のデータボリューム226についてのスナップショットオブジェクトとして保存することができる。プロバイダネットワーク200は、他のストレージサービス240に加えて、さまざまな異なるタイプの分析に関するもの、計算に関するもの、ストレージ、またはクライアント210に割り当てられる他のネットワークベースのシステムを含むことができる他のネットワークベースのサービス250、ならびにさまざまなタスクを実行またはリクエストするためのプロバイダネットワーク200の他のサービス(例えば、ブロックベースのストレージサービス220、仮想コンピュートサービス230及び/または他のストレージサービス240)も実装することができる。
クライアント210は、ネットワークプロバイダ200にリクエストを提示するように構成可能な任意のタイプのクライアントを包含し得る。例えば、所与のクライアント210は、適切なバージョンのウェブブラウザを含むことができ、またはウェブブラウザによって提供された実行環境の拡張部としてまたはその内部において実行するように構成された、プラグインモジュール若しくは他のタイプのコードモジュールを含むことができる。代替的に、クライアント210は、データベースアプリケーション(または、そのユーザインターフェース)、メディアアプリケーション、オフィスアプリケーション、またはコンピュートインスタンス、データボリューム226若しくはさまざまな動作を実行するために、プロバイダネットワーク200内の他のネットワークベースのサービスを使用できる任意の他のアプリケーションなどのアプリケーションを包含することができる。いくつかの実施形態では、そのようなアプリケーションは、すべてのタイプのネットワークベースのデータに対するフルブラウザサポートを必ずしも実施しなくても、ネットワークベースのサービスリクエストを生成及び処理するための(例えば、ハイパーテキスト転送プロトコル(HTTP)の適切なバージョンのための)十分なプロトコルサポートを含むことができる。いくつかの実施形態では、クライアント210は、Representational State Transfer(REST)スタイルのネットワークベースのサービスアーキテクチャ、ドキュメント若しくはメッセージベースかつネットワークベースのサービスアーキテクチャ、または別の適切なネットワークベースのサービスアーキテクチャに従い、ネットワークベースのサービスリクエストを生成するように構成できる。いくつかの実施形態では、クライアント210(例えば、計算クライアント)は、コンピュートインスタンスによって提供された計算資源、またはデータボリューム226によって提供されたブロックストレージを利用してクライアント210において実装されるアプリケーションに明白なように、コンピュートインスタンスまたはデータボリューム226へのアクセスを提供するように構成できる。
クライアント210は、外部ネットワーク260を通じて、ネットワークベースのサービスリクエストをプロバイダネットワーク200に伝達することができる。さまざまな実施形態において、外部ネットワーク260は、クライアント210とプロバイダネットワーク200との間のネットワークベースの通信を確立するのに必須の、ネットワーキングハードウェアとプロトコルとの任意の適切な組み合わせを包含することができる。例えば、ネットワーク260は、通常、インターネットを共同で実施するさまざまな電気通信ネットワーク及びサービスプロバイダを包含することができる。ネットワーク260は、ローカルエリアネットワーク(LAN)などのプライベートネットワークまたは広域ネットワーク(WAN)、ならびにパブリックまたはプライベート無線ネットワークも含むことができる。例えば、所与のクライアント210及びプロバイダネットワーク200の両方は、それぞれ、独自の内部ネットワークを有する企業内部にプロビジョンすることができる。そのような実施形態では、ネットワーク260は、所与のクライアント210とインターネットとの間、ならびにインターネットとプロバイダネットワーク200との間のネットワークリングの確立に必須のハードウェア(例えば、モデム、ルータ、スイッチ、負荷分散装置、プロキシサーバなど)、及びソフトウェア(例えば、プロトコルスタック、財務会計ソフトウェア、ファイアウォール/セキュリティソフトウェアなど)を含むことができる。いくつかの実施形態では、クライアント210が、公衆インターネットではなく、プライベートネットワークを使用してプロバイダネットワーク200と通信できることに留意されたい。
図3は、いくつかの実施形態に従う、ストレージノードに実装されるページキャッシュについての更新のためのページキャッシュ書き込みログを実装し、データボリュームについての永続性特性を動的に変更するストレージノードを図示するブロック図である。ストレージノード310a、310b、310c〜310nなどの複数のストレージノードを、ブロックベースのストレージサービスを提供するために実装できる。ストレージノード310は、ストレージサーバまたは他のコンピューティングシステム(例えば、図14に関して後述するコンピューティングシステム2000)などの一つ以上のコンピューティングシステムまたはデバイスであっても良い。各ストレージノード310は、データボリュームのそれぞれのレプリカを保持することができる。例として、ストレージノード310aは、データボリューム312a、312b、312c、312d〜312nを保持し、ストレージノード310bは、データボリューム314a、314b、314c、314d〜314nを保持し、ストレージノード310cは、データボリューム316a、316b、316c、316d〜316nを保持し、そしてデータボリューム318a、318b、318c、318d〜318nを保持するストレージノード310nまで存在する。ストレージノード310は、等しい数のデータボリュームを有するものとして描写したが、ストレージノードに保持されるデータボリュームの数は、あるストレージノード310と他のストレージノード310とで異なっても良い。いくつかの実施形態では、いくつかのデータボリュームは、他のデータボリュームとサイズが異なっても良い。ストレージノード310は、マルチテナントストレージも提供することができる。例えば、いくつかの実施形態では、ストレージノード310cに保持されたデータボリューム316aを、ブロックベースのストレージサービス220のあるアカウントにおいて保持し、その一方で、これもストレージノード310cに保持されたデータボリューム316bを、異なるアカウントにおいて保持することができる。ストレージノード310は、それぞれのストレージノードを実装するコンピューティングシステムまたはデバイスに直接に付随できる一つ以上のブロックベースのストレージデバイス(例えば、ハードディスクドライブ、ソリッドステートドライブなど)内に、それぞれのデータボリュームを存続させることができる。
ブロックベースのストレージサービス220は、様々な異なる様式においてデータボリュームを管理及び保持することができる。データボリュームの同じレプリカを保持する二つ以上のストレージノードの間で、いくつかのデータボリュームについて異なる永続性スキームを実装することができる。例えば、データボリュームについての単一障害点を除去することによってデータボリュームの永続性を増大させるために、例えば、異なるタイプのミラーリング及び/または複製技術(例えば、RAID 1)を実施することができる。データボリュームへのアクセスを提供するために、ストレージノードは、データボリュームのレプリカを保持する二つ以上のストレージノードの間で、書き込みリクエストなどのI/Oリクエストを調整することができる。例えば、所与のデータボリューム312aに関して、ストレージノード310aは、マスタストレージノードとしての機能を果たすことができる。さまざまな実施形態において、マスタストレージノードは、データボリュームのクライアントからのリクエスト(例えば、I/Oリクエスト)を受信及び処理することができる。したがって、ストレージノード310aは、書き込みリクエストなどのI/Oリクエストの複製、またはスレーブストレージノードとしての機能を果たす一つ以上の他のストレージノードにおけるデータボリューム312aについての任意の他の変化または変更を調整することができる。例として、ストレージノード310cは、データボリューム312aのレプリカであるデータボリューム316dを保持することができる。したがって、ストレージノード310aにおいてデータボリューム312aについての書き込みリクエストが受信されたときに、ストレージノード310aは、書き込みリクエストをストレージノード310cに転送し、ストレージノード310において書き込みリクエストを完了する前に、ストレージノード310cが書き込みリクエストを完了したとして承認するまで待機することができる。マスタストレージノードは、スナップショット動作または他のI/O動作(例えば、読み出しリクエストの供給)のようなデータボリュームについての他の動作を指図することができる。
いくつかの実施形態では、マスタ及びスレーブストレージノードの役割を、データボリュームごとに割り当てることができることに留意されたい。例えば、ストレージノード310aに保持されたデータボリューム312aに関して、ストレージノード310aは、マスタストレージノードとしての機能を果たすことができる。一方で、ストレージノード310aに保持された、データボリューム312bなどの別のデータボリュームに関して、ストレージノード310aは、スレーブストレージノードとしての機能を果たすことができる。
さまざまな実施形態において、ストレージノード310は、各々が、それぞれのページキャッシュを実装することができる。ページキャッシュは、それぞれのストレージノードに保持されたデータボリューム312のうちの一つからのページまたはデータの他のグループ化を保存するシステムメモリまたは他のメモリデバイスの一部であっても良い。データボリュームのリクエストされたデータの一部を保持するブロックベースのストレージデバイスに直接に書き込むまたはそれから読み出す代わりに、ページキャッシュを更新しても良い。例えば、データボリュームの一部についての読み出しリクエストが受信された場合に、まず、データがページキャッシュ内に存在しているか否かを決定することができる。データが存在する場合には、ページキャッシュからデータを読み出すことができる。データが存在しない場合には、データボリュームのリクエストされたデータの一部を保持するそれぞれのブロックベースのストレージデバイスからデータを検索し、将来の使用のためにページキャッシュに書き込むことができる。同様に、永続ブロックストレージに保持されたデータボリュームの方に導かれた書き込みリクエストを、ページキャッシュにおいて最初に完了することができる。受信された書き込みリクエストに関する、書き込むべきデータに対応するページキャッシュエントリ(例えば、ページキャッシュ内に既に保持されているデータボリュームの一部)を、書き込みリクエストに従い更新することができる。同様に、書き込みリクエストによって変更すべきデータがページキャッシュ内に存在しない場合には、最初に、データが存続しているブロックベースのストレージデバイスからデータを取得し、ページキャッシュ内の新規のページキャッシュエントリに書き込み、次に、書き込みリクエストに従い更新することができる。ページキャッシュ技術は、当業者に周知であり、したがって、前述の実施例は、他のページキャッシュ技術に関して限定することは意図しない。
さまざまな実施形態において、ストレージノード310は、ページキャッシュ書き込みログ320a、320b、320c〜320nなどのそれぞれのページキャッシュ書き込みログを実装することができる。ページキャッシュ書き込みログは、ページキャッシュ330内に保持されたデータを変更する書き込みリクエストなどの、それぞれのページキャッシュについての更新を記述するログレコードを保存することができる。したがって、ページキャッシュ330内のデータの喪失を招くシステムまたは他の故障の発生時に、ページキャッシュ書き込みログ320内のログレコードを使用して、ページキャッシュを故障前の状態に復元することができる。いくつかの実施形態では、ログレコードは、ページキャッシュ330において更新を行う順序、例えば、書き込みリクエスト1Aを受信した順序、実行した順序、及び対応するログレコード1Aを保存した順序に従い、連続的に保存することができる。次に、書き込みリクエスト1Bを受信して実行し、対応するログレコード1Bを保存することなどを行う。ログレコードを連続的に保存することによって、ログレコードを、特定の時点におけるページキャッシュの状態を生成するために保存した順序で、再生または再利用することができる。
さらに、ログレコードのシーケンシャル保存によって、ログレコードを保存するための書き込み待ち時間を短縮することができる。ページキャッシュ書き込みログ320は、永続ストレージデバイス(例えば、ハードディスクドライブ、ソリッドステートドライブ(SSD)または他のブロックベースのストレージデバイス)として実装することができる。いくつかの実施形態では、ページキャッシュ書き込みログ320は、不揮発性ランダムアクセスメモリ(NV RAM)、バッテリまたは容量バックのメモリまたは他のタイプのメモリスタベースの抵抗性ランダムアクセスメモリ(ReRAM)、三次元NAND技術、強誘電体RAM、磁気抵抗RAM(MRAM)、または任意のさまざまなタイプの相変化メモリ(PCM)などの永続メモリデバイスにおいて実施することができる。そのようなタイプの永続ストレージデバイスへのシーケンシャル書き込みは、多くの場合、ランダムアクセスの書き込みよりも速い。さまざまな実施形態において、ページキャッシュ書き込みログ320は、ストレージノードのための専用ブロックストレージデバイスに実装することができる。いくつかの実施形態では、ページキャッシュ書き込みログが存続する永続ストレージデバイスを、ストレージノードにおけるデータボリュームが存続するブロックベースのストレージデバイスから分離することができる。
ストレージノード310は、I/Oマネージャ340a、340b、340c〜340nなどのそれぞれのI/Oマネージャを実装することができる。I/Oマネージャ340は、特定のストレージノードに保持されたデータボリュームの方に導かれたI/Oリクエストに対処することができる。したがって、例えば、I/Oマネージャ340bは、ストレージノード310bにおいてボリューム314bについての書き込みリクエストを処理及びそれに対処することができる。I/Oマネージャ340は、ブロックベースのストレージサービスアプリケーションプログラミングインターフェース(API)及び/またはインターネットスモールコンピュータシステムインタフェース(iSCSI)などの他の通信プロトコルに従いI/Oリクエストを処理するように構成できる。いくつかの実施形態では、I/Oマネージャ340は、ログ管理342a、342b、342c〜342nなどのそれぞれのログ管理コンポーネントを実装することができる。ログ管理コンポーネントは、図4、図7及び図8に関してさらなる詳細を後述するような、ログレコードに少なくともある程度基づいたログレコードのトリミング及び/またはページキャッシュリカバリの実行などのさまざまなログ管理機能を実行することができる。
図4は、いくつかの実施形態に従う、ストレージノードにおけるページキャッシュのためのページキャッシュ書き込みログ内のログエントリをトリムするように構成されたストレージノードを図示するブロック図である。I/Oマネージャ420に実装されるログ管理モジュール422が、ストレージノード402におけるページキャッシュ書き込みログ400についてのログ動作を制御することができる。ログ管理モジュール422は、(例えば、図8に関して後述するなどのトリムイベントを検出して)トリミング動作を実行する時を決定することができる。ログ管理モジュールは、最初に、トリミング動作を開始したときのログ400における点などの、ログにおけるトリム点をマーク412することができる。隠れているログレコード410は、トリム点の前に保存されたそれらのログレコードであり、したがって、(ページキャッシュが完全にフラッシュされた場合には、維持する必要がないので)トリムするのに適格である。ログ管理モジュール414は、キャッシュフラッシュ414を開始するようにページキャッシュ430に命令することができる。一つ以上のフラッシュ動作は、ボリューム440a、440b〜440nを保持するそれぞれのブロックベースのストレージデバイスへ、432に示すようなページキャッシュエントリのフラッシュを実行できる。ページキャッシュエントリがフラッシュされた時点で、データボリューム440を保持するブロックベースのストレージデバイスは、ページキャッシュ430に以前に保存した完了した書き込み動作を永続的に保存することができる。いくつかの実施形態では、ログ管理モジュール422は、一度にフラッシュされるページキャッシュの一部を増大または減少するようにフラッシュ動作のサイズを決定することができる。ログ管理モジュールは、キャッシュフラッシュが完了したことの表示416を受信した時点で、追加のログレコードのためのスペースを使用可能にして、ログトリム点418の前のログレコードを再利用する(例えば、削除及び使用可能なものとしてマークする)ことができる。
図5は、いくつかの実施形態に従う、ブロックベースのストレージに保持されたデータボリュームについての選択できるページキャッシュ書き込みロギングを図示するブロック図である。上で述べたように、いくつかの実施形態では、ページキャッシュ書き込みロギングは、データボリューム基準において有効または無効にすることができる。I/Oマネージャ420において受信された書き込み(複数可)502は、ログ管理モジュール422を通って導くことができる。ログ管理モジュール422は、(ページキャッシュ書き込みロギングが有効であるか無効であるかを示す、)特定のデータボリュームについての永続性特性を決定するように構成できる。図示するように、実施例では、ボリュームコントロール520b及び520cは、書き込みリクエスト504についてのページキャッシュロギングがページキャッシュ書き込みログ400に進むことを阻止する。一方で、ページキャッシュ書き込みロギングを可能にする有効な永続性特性をもつデータボリュームの方に導かれた他の書き込み504は、506を通過して、ログレコード508としてページキャッシュ書き込みログ400に書き込まれる。
いくつかの実施形態では、図10及び図11に関して後述するように、ボリュームログ管理422は、データボリュームについての永続性特性の動的変更を実行することができる。例えば、I/Oマネージャ420及び/またはログ管理モジュール422は、ログすべき入ってくる書き込みリクエストの速度を観測し、入ってくる速度に基づいて一つ以上のデータボリュームの永続性特性を動的に変更することができる。ログ管理422において受信されたコントロールプレーンデータ510などの他のデータ、例えば、ストレージノードに保持されたデータボリュームの同じレプリカの一つ以上を保持する他のストレージノードについての永続性特性を示すデータも、データボリュームについての永続性特性の動的変更を行うために使用できる。
図2〜図5に関して前述したデータボリュームを保持するブロックベースのストレージについてのページキャッシュ書き込みロギングの実施例は、ブロックベースのストレージサービスに関して与えられた。さまざまな他のタイプまたは構成のブロックベースのストレージも、これらの技術を実施することができる。例えば、ブロックベースのストレージのクライアント(アプリケーション、オペレーティングシステム、またはデータボリュームについての書き込みリクエストを送信する他のコンポーネント)を、スナップショット動作を実行するストレージノードとして同じコンピューティングシステムに実装することができる。種々の構成のストレージノードも、さまざまな数のレプリカ、ミラーリングまたはデータボリュームについてのさまざまに構成されたストレージノードによって実行されるページキャッシュ書き込みロギングを実施できる他の永続性技術を実施できる。図6は、いくつかの実施形態に従う、ブロックベースのストレージにおけるページキャッシュ書き込みロギングのためのさまざまな方法及び技術を図示する高レベルフローチャートである。これらの技術は、図2〜図5に関して前述したような一つ以上のストレージノード(または、データボリュームをブロックベースのストレージに保持する他のシステムコンポーネント)を使用して実施することができる。
610に示すように、さまざまな実施形態において、ストレージノードに保持されたブロックベースのストレージデバイス内のデータボリュームについての書き込みリクエストを受信することができる。書き込みリクエストは、データボリュームを書き込む、削除する、変化させる、または別の方法で変更することができる。620に示すように、変更データについての対応するエントリを、書き込みリクエストに関する、ストレージノードにおけるシステムメモリ内のページキャッシュにおいて更新することができる。同じ様に、並行またはほぼ並行して、ページキャッシュ書き込みログ内の対応するエントリについての更新を記述するログレコードを保存することができる。例えば、ログレコードは、変更の厳密値若しくは新規のデータ、または更新を導き出すことができる値(例えば、以前の値+1)を含むことができる。640に示すように、ページキャッシュ内の対応するエントリの更新、及びページキャッシュ書き込みログ内への対応するエントリについての更新を記述するログレコードの保存に応答して、書き込みリクエストを完了したとして承認することができる。いくつかの実施形態では、ページキャッシュは、フラッシュ動作の一部としてデータボリュームの更新した部分を保持する永続ストレージデバイスにエントリが書き込まれる時まで、更新したエントリを保持することができる。
上で述べたように、ページキャッシュ書き込みログ内へのログレコードの保存によって、ページキャッシュに復元すべきページキャッシュ内のデータ喪失を招くシステム故障の前のページキャッシュの状態を得ることができる。図7は、いくつかの実施形態に従う、ページキャッシュ書き込みログからのページキャッシュリカバリのためのさまざまな方法及び技術を図示する高レベルフローチャートである。710に示すように、システム故障からのリカバリは、ストレージノードにおいて起こすことができる。システム故障は、一般に、システムメモリにおけるページキャッシュ内のデータの喪失を招く任意の故障、例えば、電力またはソフトウェア故障であり得る。720に示すように、リカバリ時、ページキャッシュの状態を記述する、ページキャッシュ書き込みログを保存する永続ストレージデバイスに保存されたログレコードを取得することができる。例えば、ログレコードは、データボリュームを保持するストレージノードについての一つ以上の種々のリカバリ動作、ルーチンまたはプロセスの一部として、ページキャッシュログから連続的に読み出すことができる。
730に示すように、ページキャッシュ書き込みログから取得したログレコードを利用して、システム故障の前のページキャッシュの状態をページキャッシュに書き込むことができる。例えば、いくつかの実施形態では、ログレコードがページキャッシュログについての更新を記述するときに、ログレコードを順々に再生してページキャッシュの状態を復元するために、ページキャッシュについての更新を再生成することができる。いくつかの実施形態では、ログレコードは、ページキャッシュ書き込みログにおける以前のログレコードに依存しても良く、また独立しても良い。いくつかの実施形態では、復元した時点で、I/Oリクエストの処理のためにストレージノードを使用可能にすることができる。
さまざまな実施形態において、時間が経過すれば、書き込みリクエストが非常に頻繁に起こり得るので、大きなページキャッシュ書き込みログでさえもフルになることがある。図8は、いくつかの実施形態に従う、ページキャッシュ書き込みログをトリミングするためのさまざまな方法及び技術を図示する高レベルフローチャートである。810に示すように、ストレージノードにおいて、ページキャッシュについての更新を記述するログレコードを保持するページキャッシュログについてのトリムイベントを検出することができる。トリムイベントは、ページキャッシュ書き込みログ内の使用可能なストレージスペースがいくつかの閾値を超えたことの表示または決定であっても良い。追加的にまたは代替的に、他の表示または決定を使用することができる。例えば、前のトリムイベントから経過した時間を示すタイマまたは他の表示が、トリムイベントをトリガすることができる。いくつかの実施形態では、ページキャッシュ書き込みログ内のログレコードの隣接部分がもはや存続する必要がないように、ダーティページのページキャッシュフラッシュが起こったときにトリムイベントが検出されても良い。
ページキャッシュログについてのトリムイベントの検出に応答して、ページキャッシュログにおけるトリム位置を特定することができる。トリム位置は、トリムイベント時のログにおける現在位置であっても良い。トリムイベント位置は、トリミングを実行している間、他の場所に保存または記録することができる。830に示すように、さまざまな実施形態において、フラッシュ動作は、システムメモリからのページキャッシュエントリを、データボリュームを保存するブロックベースのストレージデバイスに書き込むように実行できる。フラッシュ動作は、ページキャッシュの一部のコンテンツを、ブロックベースのストレージデバイスにおける対応する位置に書き込むことができる。いくつかの実施形態では、変更されたページキャッシュの部分(すなわち、ダーティ)のみをフラッシュすることができる。
少なくともいくつかの実施形態では、ページキャッシュフラッシュ動作のサイズ決定を行うことができる。例えば、フラッシュ動作の実行中、ページキャッシュのフラッシュした部分についての書き込みリクエストは、ブロックされる。フラッシュされる領域の部分のサイズは、ブロックされる特定の書き込みリクエストに追加される待ち時間と対比した、ログをトリミングすべき速さに応じて調節できる。例として、書き込みリクエストが、フラッシュ動作のフラッシュされた領域内にあるページキャッシュの部分に書き込むものである場合には、フラッシュされる領域の部分のサイズは、特定の書き込みリクエストをブロックできる可能性を増大または減少することにより書き込みリクエストをペンディングするための待ち時間を増大または減少することができる。840に示すように、フラッシュ動作の完了時、ページキャッシュログを保持する永続ストレージデバイスの部分を再利用して、ページキャッシュについての更新を記述する追加のログレコードを刺激することができる。
いくつかの実施形態では、コントロールプレーンまたは他のシステムコンポーネントは、ブロックベースのストレージにデータボリュームを保持するストレージノードについてのページキャッシュ書き込みロギングの配備、実施及び/または有効化を指図することができる。図9は、いくつかの実施形態に従う、ページキャッシュ書き込みロギング技術を配備するためのさまざまな方法及び技術を図示する高レベルフローチャートである。910に示すように、ページキャッシュ書き込みログを保持しない、ブロックベースのストレージシステム内のストレージノードを特定することができる。例えば、ページキャッシュ書き込みロギングを実施するかにかかわらず、ストレージノードのバージョン、構成またはステータスを示すシステムレベルメタデータを保持することができる。920に示すように、特定されたストレージノードを評価して、各ストレージノードについての永続性スコアを決定することができる。例えば、特定のストレージノードを、電力故障を起こし易いデータセンタまたは他の物理的な若しくは地理的な位置に実装する場合には、そのような情報によって、ストレージノードについての永続性スコアを低くすることができる。同様に、同じデータセンタまたは地理的な位置におけるピアの大多数がページキャッシュ書き込みロギングを実施した場合には、永続性スコアを上げることができる。例えば、ストレージノードに保持されたデータボリュームの大多数が、ページキャッシュ書き込みロギングが有効である他のストレージノードにおけるレプリカを有するか否かなどの多くの他のファクタが、ストレージノードについての永続性スコアに影響を及ぼし得る。これらのさまざまなファクタによって決まる種々の重み付け、組み合わせまたは他の演算を使用して、特定のストレージノードについての永続性スコアを決定することができる。したがって、前述の実施例は、永続性スコアに影響を及ぼし得るさまざまな他のファクタに関して限定することは意図しない。
930に示すように、さまざまな実施形態において、ストレージノードについての永続性スコアに基づいて、ページキャッシュ書き込みロギングを実施するための一つ以上のストレージノードを選択することができる。そのような選択は、種々の通信機構に従い、さまざまな異なるブロックベースのストレージサービス監督または管理インターフェースに提供することができる。いくつかの実施形態では、図9に図示する技術は、ブロックベースのストレージサービスを実装するストレージノードの所与のサブセット(例えば、特定の部屋、データセンタ若しくは他の地理的な位置またはグループ化されたもの)、またはブロックベースのストレージサービスを実装するストレージノードの全体集団において周期的に実行しても良く、それにおいて周期的なものでも良い。いくつかの実施形態では、図9の方法の各々の繰り返しに所定の数の配備が割り当てられ得、したがって、使用可能な数の配備が割り当てられるまで、ストレージノードを永続性スコアに基づいて選択することができる。
さまざまな実施形態において、ページキャッシュ書き込みロギングによって、ストレージノードに保持されたデータボリュームの永続性を増大することができる。ログレコードをページキャッシュ書き込みログに保存することによって、システム故障の発生時のページキャッシュの状態を復元することができる。しかしながら、いくつかの実施形態では、ページキャッシュ書き込みロギングの実行による負担の増加が、ページキャッシュ書き込みログを保持する永続ストレージデバイスの能力を超え、書き込みリクエストの動作を妨げることがある。よりきめの細かいページキャッシュ書き込みロギングを可能にすることによって、ストレージノードは、永続性を最大化し、待ち時間を最小化するように、その動作を効果的に調整することができる。図10は、いくつかの実施形態に従う、ストレージノードに保持されたデータボリュームにおける永続性特性を動的に変更するためのさまざまな方法及び技術を図示する高レベルフローチャートである。
1010に示すように、さまざまな実施形態において、複数のデータボリュームを保持するストレージノードに受信された書き込みリクエストに関する、ページキャッシュについての更新を記述するログレコードを保存するページキャッシュ書き込みログを保持することができる。前述したように、ページキャッシュ書き込みログは、永続ストレージデバイスに保持することができる。永続ストレージデバイスは、ハードディスクドライブまたはソリッドステートドライブなどのブロックベースのストレージデバイスであっても良い。いくつかの実施形態では、永続ストレージデバイスは、不揮発性ランダムアクセスメモリデバイス(NV−RAM)であっても良い。ログレコードは、書き込み待ち時間を短縮するために、永続ストレージデバイスに連続的に書き込む及び/または保存することができる。種々のデータボリュームにおけるログレコードは、ページキャッシュを更新するための書き込みリクエストが実行されたときに基づいて保存することができ、いくつかの実施形態では、同じデータボリュームにおけるログレコードは、グループ化または保存しなくても良い。
1020に示すように、さまざまな実施形態において、ページキャッシュ書き込みログにログすべき、ストレージノードにおいて入ってくる書き込みリクエストの速度を観測することができる。図11に関して後述するように、いくつかの実施形態では、この速度は、ログすべき一定の期間内に受信された書き込みリクエストの数の単純な測定値であっても良い。速度は、書き込みリクエストを実行するために実行すべき仕事量を示す測定単位(例えば、1秒あたりの入出力回数(IOPS))に変換することもできる。さまざまな実施形態において、書き込みリクエストの観測は、継続的に、周期的にまたは非周期的に実行することができる。
1030に示すように、ログすべき、ストレージノードにおいて入ってくる書き込みリクエストの速度に少なくともある程度基づいて、データボリュームの一つ(または、二つ以上)についての永続性特性を動的に変更することができる。さまざまな実施形態において、永続性特性は、データボリュームについてのページキャッシュ書き込みロギングが有効であるか無効であるかを示すことができる。したがって、永続性特性を変更することによって、特定のデータボリュームの方に導かれた書き込みリクエストは、書き込みリクエストが受信された時の、データボリュームについての現在の永続性特性の状態に応じて、ログしても良いく、またはしなくても良い。いくつかの実施形態では、動的変更は、ストレージノードに保持されたデータボリュームのすべてを含むことができる。いくつかの実施形態では、例えば、ページキャッシュ書き込みロギングは、すべてのデータボリュームについて無効(または、有効)にすることができる。
ストレージノードにおいて入ってくる書き込みリクエストの速度の観測によって、ストレージノードは、受信された書き込みリクエストの数の劇的な増大または減少などの変化する状況に適応することができる。図11は、いくつかの実施形態に従う、データボリュームについてのページキャッシュ書き込みロギングを有効にするか無効にするかを決定するためのさまざまな方法及び技術を図示する高レベルフローチャートである。入ってくる書き込みリクエストの速度を使用して、改良されたアクションをとる、またはストレージノードに保持されたデータボリュームについての性能及び/若しくは永続性を最大化することができる。
1110に示すように、ページキャッシュ書き込みログにログすべき、ストレージノード110に入ってくる書き込みリクエストの速度を決定することができる。いくつかの実施形態では、この速度は、一定の期間内に受信された書き込みリクエストの数の単純な測定値であっても良い。速度は、書き込みリクエストを実行するために実行すべき仕事量を示す測定単位(例えば、1秒あたりの入出力回数(IOPS))に変換することもできる。速度を決定すれば、1120に示すように、入ってくる書き込みリクエストの速度を、ロギング速度許容限度と比較することができる。いくつかの実施形態では、ロギング速度許容限度は、ページキャッシュ書き込みログを実装する永続ストレージデバイスのスループット能力にある程度対応して決定または構成することができる。例えば、ハードディスクドライブが最大8000IOPSで実行できる場合には、ロギング速度許容限度は、ハードディスクドライブの最大スループット以下のいくらかの数(例えば、7000IOPS)に決定することができる。いくつかの実施形態では、ロギング速度許容限度は、(ページキャッシュ書き込みログが追い付くことができるまで書き込みリクエストがブロックされ得るので、ログレコード喪失または書き込みリクエストのブロックを招き得る)デバイスのスループット容量の超過を生じずに現在の速度を遅くするような永続性特性の時間の動的変更を可能にするように、永続ストレージデバイスの最大スループット未満に設定しても良い。
入ってくる書き込みリクエストの決定された速度がロギング速度許容限度を超える場合には、1120からの肯定的な出口に示すように、一つ以上のデータボリュームを選択して、選択されたデータボリュームについてのページキャッシュ書き込みロギングを無効にすることによって、ログすべき入ってくる書き込みリクエストの速度を、ロギング速度許容限度未満に遅くすることができる。データボリュームの選択は、有効なページキャッシュ書き込みロギングを現在有する、ストレージノードにおけるデータボリュームから行うことができる。例として、10個の中の8個のデータボリュームが有効なページキャッシュ書き込みロギングを有する場合には、選択は、10個の中の8個のデータボリュームから行うことができる。
選択は、いくつかの異なるファクタに基づいて行うことができる。例えば、選択は、各データボリュームのサイズに基づいて行うことができる。例えば、最も大きいデータボリュームは、不相応に大きな量の書き込みリクエストを受信することがある。選択は、特定のデータボリュームの方に導かれた書き込みリクエストの数に基づいても行うことができる。例として、データボリュームが、小さいにもかかわらず、しばしば書き込みリクエストを受信する場合には、その小さなデータボリュームは、速度許容限度を超えて入ってくるログすべき書き込みリクエストの速度を速めることができる。これらの及びさまざまな他のファクタに基づいて、一つ以上のデータボリュームを選択することができる。例えば、データボリュームは、各データボリュームに関連する見積もられた速度の書き込みリクエストを有することができる。選択されたデータボリュームについての書き込みリクエストの見積もられた速度が、入ってくる書き込みリクエストの速度を許容量に遅くするまで、データボリュームの選択を継続することができる。いくつかの実施形態では、他のものに優先していくつかのデータボリュームを選択するために、データボリュームの順序付けまたは優先度スキームを施行することができる。例えば、いくつかの実施形態では、他のストレージノードに保持されたデータボリュームのレプリカについての永続性特性を知ることができる。したがって、特定のデータボリュームが、別のデータボリュームよりも大きい数の書き込みリクエストを有するが、それがまた、(レプリカが保持された他のストレージノードではなく)このストレージノードにのみページキャッシュ書き込みロギングを有する場合には、その特定のデータボリュームを、選択のための順序付けまたは優先度スキームにおいて除外または低減することができる。1140に示すように、選択すれば、選択されたデータボリュームについてのページキャッシュ書き込みロギングを無効にすることができる。
1150に示すように、いくつかの実施形態では、ページキャッシュ書き込みログにおいてログすべき入ってくる書き込みリクエストの速度は、ロギング速度下限と比較することもできる。追加的に、ロギング速度許容限度に関する前述の分析と同じ様に、ロギング速度下限は、ストレージノードがページキャッシュ書き込みロギングを有効にできる、入ってくる書き込みリクエストの速度を示すことができる。例えば、可能性が高くまたは履歴的に平均なデータボリュームが、1120においてロギング速度許容限度を超えることなく、有効な書き込みロギングを有することができることを、ロギング速度下限未満の速度が示すように、ボリュームごとの書き込みリクエストの平均数に基づいてロギング速度下限を決定または設定することができる。
データボリューム(または、複数のデータボリューム)の選択は、無効なページキャッシュ書き込みロギングを有するそれらのデータボリュームから行うことができる。前述したように、選択は、各データボリュームのサイズに基づいて行うことができる。例えば、最も小さいデータボリュームは、不相応に少ない量の書き込みリクエストしか受信しないことがある。選択は、特定のデータボリュームの方に導かれた書き込みリクエストの数に基づいても行うことができる。例として、データボリュームが、大きいにもかかわらず、低頻度の数の書き込みリクエストしか履歴的に受信しない場合には、その大きなデータボリュームは、ロギング速度許容限度を超えて入ってくるログすべき書き込みリクエストの速度を速めない。1160に示すように、これらの及びさまざまな他のファクタに基づいて、一つ以上のデータボリュームを選択することができる。例えば、データボリュームは、各データボリュームに関連する見積もられた速度の書き込みリクエストを有することができる。選択されたデータボリュームについての書き込みリクエストの見積もられた速度が、入ってくる書き込みリクエストの速度をロギング速度下限超に上げるまで、データボリュームの選択を継続することができる。いくつかの実施形態では、他のものに優先していくつかのデータボリュームを選択するために、データボリュームの順序付けまたは優先度スキームを施行することができる。例えば、いくつかの実施形態では、他のストレージノードに保持されたデータボリュームのレプリカについての永続性特性を知ることができる。したがって、特定のデータボリュームが、別のデータボリュームよりも大きい数の書き込みリクエストを有するが、それがまた、(データボリュームのレプリカが保持された)任意のストレージノードに有効なページキャッシュ書き込みロギングを有しない場合には、その特定のデータボリュームを、選択のための順序付けまたは優先度スキームにおいて有利に計らうことができる。1170に示すように、選択すれば、選択されたデータボリュームについてのページキャッシュ書き込みロギングを有効にすることができる。
さまざまな実施形態において、1150から1110に戻る否定的な出口は、入ってくる書き込みリクエストの速度を観測する間に、この評価を繰り返し実行できることを示す。このように、データボリュームの永続性特性の調節は、長期にわたり行うことができる。
ストレージノードに保持されたデータボリュームについての永続性特性を、長期にわたり動的に変化させることができるので、同じデータボリュームについての書き込みリクエストは、ある時にはページキャッシュ書き込みロギングを用いて、別の時にはページキャッシュ書き込みロギングがなくても処理することができる。図12は、いくつかの実施形態に従う、特定のデータボリュームの永続性特性に従う、特定のデータボリュームにおいて、ストレージノードにおける書き込みリクエストを処理するさまざまな方法及び技術を図示する高レベルフローチャートである。
1210に示すように、データボリュームについての書き込みリクエストを受信することができる。データボリュームの永続性特性を示すメタデータまたは他の情報を、ストレージノードに保持することができる。1220に示すように、データボリュームについてのページキャッシュ書き込みロギングが有効であるか否かを決定するために、メタデータを評価することができる。有効である場合には、1250に示すように、書き込みについてのページキャッシュを更新し、1260に示すように、ページキャッシュについての更新を記述するログレコードを、ストレージノードにおけるページキャッシュ書き込みログに保存することができる。図6に関して上で述べたように、いくつかの実施形態では、書き込みのためのページキャッシュについての更新1250と、ログレコードのページキャッシュ書き込みログ内への保存1260とを、並行またはほぼ並行(例えば、同時に開始するが、一つの動作が他の動作よりも先に終了する)して実行することができる。ページキャッシュを更新し、ログレコードを保存した時点で、1270に示すように、書き込みリクエストを完了したとして承認することができる。データボリュームについてのページキャッシュ書き込みロギングが有効でない場合には、1220からの否定的な出口に示すように、1230に示すように、書き込みリクエストに関するページキャッシュを更新し、1240に示すように、ページキャッシュ書き込みログ内のログレコードを保存せずに、書き込みリクエストを完了したとして承認することができる。
図7に関して前述したように、ページキャッシュ書き込みログ内のログレコードを再生して、システム故障前のページキャッシュの状態をページキャッシュに復元することができる。このように、データボリュームを保持するブロックベースのストレージデバイスにページキャッシュがページキャッシュエントリを未だフラッシュしていないとしても、完了したとして承認された書き込みリクエストを喪失することがない。故に、ブロックベースのストレージデバイスに保存され、ページキャッシュ書き込みログに記述されたものとして、データボリュームの現在のバージョンを、データボリュームに基づいて維持することができる。ストレージノードにおける特定のデータボリュームについてのページキャッシュ書き込みロギングを有効及び無効にできるので、ストレージノードにおけるいくつかのデータボリュームが進行中であり、他のものはそうさせないことができる。図13は、いくつかの実施形態に従う、書き込みロギングが有効化及び無効化されたデータボリュームリカバリのためのさまざまな方法及び技術を図示する高レベルフローチャートである。
1310に示すように、ストレージノードは、システム故障からリカバリすることができる。ストレージノードは、複数のデータボリュームを保持することができる。追加のリカバリ動作を実行するために、データボリュームを評価して、ページキャッシュ書き込みロギングが有効であるそれらのデータボリュームを特定することができる。1320に示すように、特定のデータボリュームを選択することができる。1330に示すように、データボリュームについての永続性特性を使用して、データボリュームについてのページキャッシュ書き込みロギングが有効であったか否かを決定することができる。有効であった場合には、肯定的な出口に示すように、1350に示すように、データボリュームを進行中であるとして特定し、1360に示すように、I/Oリクエストのために使用可能にできる。例えば、特定のデータボリュームが進行中であると特定された場合には、ブロックストレージサービスコントロールプレーン、またはストレージノードそれ自体が、例えば、データボリュームについてのマスタストレージノードとしてストレージノードを特定することによって、永続性スキームにおけるデータボリュームについての新規の役割を特定することができる。特定されたマスタストレージノードは、データボリュームの新規のレプリカを保持するための一つ以上のスレーブストレージノードを確保し、データボリュームをスレーブストレージノードに複製することができる。代替的に、いくつかの実施形態では、ストレージノードは、任意のピアまたはスレーブストレージノードを取得することなく、進行中のデータボリュームについてのI/Oリクエストの処理を開始することができる。I/Oリクエストのためのデータボリュームを用意するために、進行中のデータボリュームについての任意の他のリカバリ動作も実行することができる。しかしながら、データボリュームについてのページキャッシュ書き込みロギングが有効でない場合には、1330からの否定的な出口に示すように、1340に示すように、進行中でないとしてデータボリュームを特定することができる。進行中でないデータボリュームは、データボリュームの現在のバージョンを保持するか否かを特定するために、データボリュームのレプリカを保持する別のストレージノードを待機するなどの、必要以上のリカバリ動作を受けることがある。いくつかの実施形態では、進行中であるとして特定されないデータボリュームは、ストレージノードにおけるブロックベースのストレージデバイスから削除または除去することができる。
本明細書に記述する方法は、さまざまな実施形態において、ハードウェアとソフトウェアとの任意の組み合わせによって実施することができる。例えば、一実施形態において、方法は、プロセッサに連結されたコンピュータ可読記憶媒体に保存されたプログラム命令を実行する一つ以上のプロセッサを含むコンピュータシステム(例えば、図14のコンピュータシステムなど)によって実施することができる。プログラム命令は、本明細書に記述する機能性(例えば、本明細書に記述するブロックベースのストレージサービスを実装するなどの、さまざまなサーバ、ストレージノード、コントロールプレーン、マネージャ及び/または他のコンポーネントの機能性)を実装するように構成できる。図面に図示する及び本明細書に記述するさまざまな方法は、方法の例示的な実施形態を示す。任意の方法の順序は、変更することができ、さまざまな要素を追加、並べ替え、結合、省略、変更等することができる。
本明細書に記述するような、ブロックベースのストレージについてのページキャッシュ書き込みロギングの実施形態は、さまざまな他のデバイスと相互作用できる一つ以上のコンピュータシステムにおいて実行することができる。図14は、さまざまな実施形態に従う、例示的なコンピュータシステムを図示するブロック図である。例えば、種々の実施形態において、コンピュータシステム2000は、コンピュートクラスタのストレージ及び/若しくはコンピュートノード、データストアならびに/またはクライアントを実装するように構成できる。コンピュータシステム2000は、これらに限定されないが、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノートブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、消費者デバイス、アプリケーションサーバ、ストレージデバイス、電話、携帯電話、または一般的な任意のタイプのコンピューティングデバイスを含む任意のさまざまなタイプのデバイスであっても良い。
コンピュータシステム2000は、入出力(I/O)インターフェース2030を通じてシステムメモリ2020に連結された(そのいずれかが、シングルスレッドでもマルチスレッドでも良い複数のコアを含み得る)一つ以上のプロセッサ2010を含む。コンピュータシステム2000は、さらに、I/Oインターフェース2030に連結されたネットワークインターフェース2040を含む。さまざまな実施形態において、コンピュータシステム2000は、一つのプロセッサ2010を含むユニプロセッサシステムであっても良いし、いくつか(例えば、二つ、四つ、八つまたは別の適切な数)のプロセッサ2010を含むマルチプロセッサシステムであっても良い。プロセッサ2010は、命令を実行する能力がある任意の適切なプロセッサであっても良い。例えば、さまざまな実施形態において、プロセッサ2010は、x86、PowerPC、SPARC若しくはMIPS ISAまたは任意の他の適切なISAなどの様々なインストラクションセットアーキテクチャ(ISA)のいずれかを実装する汎用または組み込みプロセッサであっても良い。マルチプロセッサシステムにおいて、プロセッサ2010の各々は、必須ではないが、通常、同じISAを実装することができる。コンピュータシステム2000は、通信ネットワーク(例えば、インターネット、LANなど)を通じて、他のシステム及び/またはコンポーネントと通信するための一つ以上のネットワーク通信デバイス(例えば、ネットワークインターフェース2040)も含む。
図示する実施形態では、コンピュータシステム2000は、一つ以上の永続ストレージデバイス2060及び/または一つ以上のI/Oデバイス2080も含む。さまざまな実施形態において、永続ストレージデバイス2060は、ディスクドライブ、テープドライブ、ソリッドステートメモリ、他のマスストレージデバイス、ブロックベースのストレージデバイス、または任意の他の永続ストレージデバイスに対応することができる。コンピュータシステム2000(または、そこで動作する分散アプリケーション若しくはオペレーティングシステム)は、所望に応じて、命令及び/またはデータを永続ストレージデバイス2060に保存し、必要に応じて、保存した命令及び/またはデータを検索することができる。例えば、いくつかの実施形態では、コンピュータシステム2000は、ストレージシステムサーバノードをホストし、永続ストレージ2060は、サーバノードに付随するSSDを含むことができる。
コンピュータシステム2000は、プロセッサ(複数可)2010によってアクセス可能な命令及びデータを保存するように構成された一つ以上のシステムメモリ2020を含む。さまざまな実施形態において、システムメモリ2020は、任意の適切なメモリ技術(例えば、キャッシュメモリ、スタティックランダムアクセスメモリ(SRAM)、DRAM、RDRAM、EDO RAM、DDR 10 RAM、同期ダイナミックRAM(SDRAM)、Rambus RAM、EEPROM、不揮発性/フラッシュタイプのメモリ、または任意の他のタイプのメモリの一つ以上)を使用して実施できる。システムメモリ2020は、本明細書に記述する方法及び技術を実施するための、プロセッサ(複数可)2010によって実行可能なプログラム命令2025を含有することができる。さまざまな実施形態において、プログラム命令2025は、プラットフォームネイティブバイナリ、Java(商標)バイトコードなどの任意のインタープリタ型言語、若しくは、例えば、C/C++、Java(商標)などの任意の他の言語、またはその任意の組み合わせにおいてエンコードすることができる。種々の実施形態において、例えば、図示する実施形態では、プログラム命令2025は、ストレージノードの機能性を実施するための実行可能なプログラム命令を含む。いくつかの実施形態では、プログラム命令2025は、複数の個々のクライアント、ノード及び/または他のコンポーネントを実装することができる。
いくつかの実施形態では、プログラム命令2025は、例えば、UNIX(登録商標)、LINUX、Solaris(商標)、MacOS(商標)、Windows(商標)などのさまざまなオペレーティングシステムのいずれかであっても良いオペレーティングシステム(図示せず)を実施するのに実行可能な命令を含むことができる。プログラム命令2025のいずれかまたはすべては、コンピュータプログラム製品またはソフトウェアとして提供されることができ、そこに命令を保存する非一時的コンピュータ可読記憶媒体を含むことができ、そしてさまざまな実施形態に従うプロセスを実行するためのコンピュータシステム(または、他の電子デバイス)をプログラムするために使用できる。非一時的コンピュータ可読記憶媒体は、マシン(例えば、コンピュータ)に可読な形態(例えば、ソフトウェア、処理アプリケーション)の情報を保存するための任意の機構を含むことができる。一般的に言えば、非一時的コンピュータアクセス可能媒体は、磁気または光媒体などのコンピュータ可読記憶媒体またはメモリ媒体、例えば、I/Oインターフェース2030を介してコンピュータシステム2000に連結されたディスクまたはDVD/CD−ROMを含むことができる。非一時的コンピュータ可読記憶媒体は、システムメモリ2020または別のタイプのメモリとしてコンピュータシステム2000のいくつかの実施形態に含まれることができる、例えば、RAM(例えば、SDRAM、DDR SDRAM、RDRAM、SRAMなど)、ROMなどの任意の揮発性または不揮発性媒体も含むことができる。他の実施形態では、プログラム命令は、例えば、ネットワークインターフェース2040を介して実装できる、ネットワーク及び/または無線リンクなどの通信媒体を介して伝達される光、音響または他の形態の伝播する信号(例えば、搬送波、赤外線信号、デジタル信号など)を使用して通信できる。
いくつかの実施形態では、システムメモリ2020は、本明細書に記述するように構成できるデータストア2045を含むことができる。一般に、システムメモリ2020(例えば、システムメモリ2020内部のデータストア2045)、永続ストレージ2060及び/またはリモートストレージ2070は、データブロック、データブロックのレプリカ、データブロック及び/若しくはそれらの状態に関連するメタデータ、構成情報、ならびに/または本明細書に記述する方法及び技術を実施するのに使用できる任意の他の情報を保存することができる。
一実施形態において、I/Oインターフェース2030は、プロセッサ2010と、システムメモリ2020と、ネットワークインターフェース2040または他の周辺インターフェースを通じたものを含む、システムにおける任意の周辺デバイスとの間のI/Oトラフィックを調整するように構成できる。いくつかの実施形態では、I/Oインターフェース2030は、任意の必須のプロトコル、タイミングまたはあるコンポーネント(例えば、システムメモリ2020)からのデータ信号を別のコンポーネント(例えば、プロセッサ2010)で使用するのに適切なフォーマットに変換する他のデータ変換を実行することができる。いくつかの実施形態では、例えば、I/Oインターフェース2030は、周辺コンポーネント相互接続(PCI)バス標準またはユニバーサルシリアルバス(USB)標準の変形などのさまざまなタイプの周辺バスを通じて取り付けられたデバイスのためのサポートを含むことができる。いくつかの実施形態では、例えば、I/Oインターフェース2030の機能は、ノースブリッジ及びサウスブリッジなどの二つ以上の別個のコンポーネントに分けることができる。また、いくつかの実施形態では、システムメモリ2020に対するインターフェースなどのI/Oインターフェース2030の機能性のいくつかまたはすべては、プロセッサ2010に直接組み込んでも良い。
例えば、ネットワークインターフェース2040は、コンピュータシステム2000と、他のコンピュータシステム2090などの、ネットワークに取り付けられた他のデバイスとの間でデータを交換できるように構成できる。さらに、ネットワークインターフェース2040は、コンピュータシステム2000と、さまざまなI/Oデバイス2050及び/またはリモートストレージ2070との間の通信を可能にするように構成できる。いくつかの実施形態では、入出力デバイス2050は、一つ以上の表示端末、キーボード、キーパッド、タッチパッド、スキャニングデバイス、音声若しくは光学的認識デバイス、または一つ以上のコンピュータシステム2000によってデータを入力若しくは検索するのに適切な任意の他のデバイスを含むことができる。複数の入出力デバイス2050は、コンピュータシステム2000内に存在しても良く、コンピュータシステム2000を含む分散システムのさまざまなノードに分配されても良い。いくつかの実施形態では、同様の入出力デバイスは、コンピュータシステム2000から分離しても良く、有線または無線接続を通じて、例えば、ネットワークインターフェース2040を介して、コンピュータシステム2000を含む分散システムの一つ以上のノードと相互作用しても良い。ネットワークインターフェース2040は、通常、一つ以上の無線ネットワーキングプロトコル(例えば、Wi−Fi/IEEE802.11または別の無線ネットワーク標準)をサポートすることができる。しかしながら、さまざまな実施形態において、例えば、ネットワークインターフェース2040は、任意の適切な有線または無線一般データネットワーク、例えば、他のタイプのイーサネット(登録商標)ネットワークを介して通信をサポートすることができる。さらに、ネットワークインターフェース2040は、アナログ音声ネットワーク若しくはデジタルファイバ通信ネットワークなどの電気通信/テレフォニーネットワーク、ファイバーチャネルSANなどのストレージエリアネットワーク、または任意の他の適切なタイプのネットワーク及び/若しくはプロトコルを介して、通信をサポートすることができる。さまざまな実施形態において、コンピュータシステム2000は、より多くの、より少ない、または図14の2000に図示するような種々のコンポーネント(例えば、ディスプレイ、ビデオカード、オーディオカード、周辺デバイス、例えば、ATMインターフェース、イーサネットインターフェース、フレームリレーインターフェースなどの他のネットワークインターフェース)を含むことができる。
本明細書に記述する実施形態の分散システムのいずれか、またはそれらのコンポーネントのいずれかを、一つ以上のネットワークベースのサービスとして実装できることに留意されたい。例えば、コンピューティングサービス内のコンピュートクラスタは、コンピューティング及び/若しくはストレージサービス、ならびに/または本明細書に記述する分散コンピューティングシステムを用いる他のタイプのサービスを、ネットワークベースのサービスとしてクライアントに存在させることができる。いくつかの実施形態では、ネットワークベースのサービスは、ネットワークを介して相互運用可能なマシン間相互作用をサポートするように設計されたソフトウェア及び/またはハードウェアシステムによって実施することができる。ネットワークベースのサービスは、ウェブサービス記述言語(WSDL)などのマシン処理可能なフォーマットにおいて記述されたインターフェースを有することができる。他のシステムは、ネットワークベースのサービスのインターフェースの記述によって規定された様式でネットワークベースのサービスと相互作用できる。例えば、ネットワークベースのサービスは、他のシステムが呼び出すことができるさまざまな動作を定義することができるが、他のシステムはさまざまな動作をリクエストするときに適合すると予期され得る特定のアプリケーションプログラミングインターフェース(API)を定義することができる。
さまざまな実施形態において、ネットワークベースのサービスは、ネットワークベースのサービスリクエストに関連するパラメータ及び/またはデータを含むメッセージの使用を通じてリクエストするまたは呼び出すことができる。そのようなメッセージは、拡張マークアップ言語(XML)などの特定のマークアップ言語に従いフォーマットする、及び/またはシンプル・オブジェクト・アクセス・プロトコル(SOAP)などのプロトコルを使用してカプセル化することができる。ネットワークベースのサービスリクエストを実行するために、ネットワークベースのサービスクライアントは、リクエストを含むメッセージをアセンブルし、ハイパーテキスト転送プロトコル(HTTP)などのインターネットベースのアプリケーション層転送プロトコルを使用して、メッセージをアドレス可能エンドポイント(例えば、ネットワークベースのサービスに対応するユニフォームリソースロケータ(URL))に伝達することができる。
いくつかの実施形態では、ネットワークベースのサービスは、メッセージベースの技術ではなくRepresentational State Transfer(「RESTful」)技術を使用して実施しても良い。例えば、RESTful技術に従い実施されるネットワークベースのサービスは、SOAPメッセージ内のカプセル化ではなく、PUT、GETまたはDELETEなどのHTTP方法内に含まれるパラメータを通じて呼び出すことができる。
前述の実施形態はかなり詳細に記述したが、上記の開示を完全に認識した当業者に明らかとなるように多数の変形及び変更を為すことができる。以下の特許請求の範囲が、すべてのそのような変更及び変化を包含するように解釈され、したがって上の記述が、限定的意味ではなく実例とみなされることが意図される。
本開示の実施形態は、以下の条項を考慮して記述することができる。
条項
1.一つ以上のデータボリュームを保持する一つ以上のブロックベースのストレージデバイスと、
ページキャッシュを備えるシステムメモリであって、前記ページキャッシュが、前記一つ以上のデータボリュームを永続的に更新するために、前記一つ以上のブロックベースのストレージデバイスを周期的にまたは非周期的にフラッシュする、前記システムメモリと、
ページキャッシュ書き込みログを保持する永続ストレージデバイスであって、前記ページキャッシュ書き込みログが、前記ページキャッシュについての更新を記述する複数個のログレコードを保持し、前記複数個のログレコードが、前記ページキャッシュ内のデータの喪失を招くシステム故障の発生時の前記ページキャッシュについての以前の状態を復元するように利用可能である、前記永続ストレージデバイスと、を備えており、
前記一つ以上のデータボリュームのうちの特定のデータボリュームについての書き込みリクエストを受信し、
前記書き込みリクエストに関する、前記ページキャッシュ内の複数個のエントリのうちの少なくとも一つの対応するエントリを更新し、
前記ページキャッシュ書き込みログ内の前記少なくとも一つの対応するページキャッシュエントリについての前記更新を記述するログレコードを保存し、かつ
前記ページキャッシュエントリの更新及び前記ログレコードの前記ページキャッシュ書き込みログ内への保存に応答して、前記書き込みリクエストを完了したとして承認するように構成されたストレージノードを実装するシステム。
2.前記ストレージノードが、さらに、システム故障からのリカバリ時に、
前記ページキャッシュ書き込みログを保持する前記永続ストレージデバイスから、前記ログレコード及び前記複数個のログレコードを取得し、かつ
前記ページキャッシュ書き込みログ内に保持された前記ログレコード及び前記複数個のログレコードを利用して、前記システム故障の前の前記ページキャッシュの状態を前記ページキャッシュに書き込むように構成された、条項1に記載のシステム。
3.ストレージノードが、さらに、
前記ページキャッシュ書き込みログについてのトリムイベントを検出し、
前記トリムイベントの検出に応答して、
前記ページキャッシュ書き込みログにおけるトリム位置を特定し、
前記システムメモリからの前記複数個のページキャッシュエントリの少なくともいくつかを前記複数個のブロックベースのストレージデバイスに書き込む一つ以上のフラッシュ動作を実行し、かつ
前記一つ以上のフラッシュ動作の完了時に、前記ページキャッシュ書き込みログを保持する前記永続ストレージデバイスの一つ以上の部分を再利用して、前記ページキャッシュについての更新を記述する追加のログレコードを保存するように構成された、条項1に記載のシステム。
4.前記ストレージノードが、ネットワークベースかつブロックベースのストレージサービスの一部として実装され、前記ブロックベースのストレージサービスの一部として実装された少なくとも一つの他のストレージノードが、前記特定のデータボリュームのレプリカを保持し、前記少なくとも一つの他のストレージノードが、前記受信、前記保存、前記更新及び前記承認を実行するように構成された、条項1に記載のシステム。
5.ストレージノードにおいて、前記ストレージノードに保持された少なくとも一つのブロックベースのストレージデバイスに存続するデータボリュームについての書き込みリクエストを受信することと、
前記書き込みリクエストに関する、前記ストレージノードにおけるシステムメモリに保持されたページキャッシュ内の複数個のエントリのうちの少なくとも一つの対応するエントリを更新することであって、前記ページキャッシュ内の前記複数個のエントリが、前記データボリュームを永続的に更新するために、前記少なくとも一つのブロックベースのストレージデバイスを周期的にまたは非周期的にフラッシュする、前記更新することと、
永続ストレージデバイスに保持された複数個の他のログレコードと共に、前記永続ストレージデバイスに保持されたページキャッシュ書き込みログ内の前記少なくとも一つの対応するページキャッシュエントリについての前記更新を記述するログレコードを保存することであって、前記ログレコード及び前記複数個の他のログレコードが、前記ページキャッシュ内のデータの喪失を招くシステム故障の発生時の前記ページキャッシュを復元するための、前記更新したページキャッシュエントリを含む前記ページキャッシュの状態を記述する、前記保存することと、
前記ページキャッシュエントリの更新及び前記ログレコードの前記ページキャッシュ書き込みログ内への保存に応答して、前記書き込みリクエストを完了したとして承認することと、を一つ以上のコンピューティングデバイスによって実行することを含む、方法。
6.システム故障からのリカバリ時に、
前記ページキャッシュ書き込みログを保持する前記永続ストレージデバイスから、前記ログレコード及び前記複数個の他のログレコードを取得することと、
前記ページキャッシュ書き込みログ内に保持された前記ログレコード及び前記複数個の他のログレコードを利用して、前記システム故障の前の前記ページキャッシュの状態を前記ページキャッシュに書き込むことと、をさらに含む、条項5に記載の方法。
7.前記ストレージノードが、前記データボリュームのレプリカを保持する、二つ以上のストレージノードのうちの一つであり、前記二つ以上のストレージノードのうちの、前記ストレージノードと異なる少なくとも一つが、前記データボリュームに関する、書き込みリクエストについてのそれぞれのページキャッシュ書き込みログを保持しない、条項5に記載の方法。
8.前記二つ以上のストレージノードのシステム故障からのリカバリ時に、前記データボリュームについての入出力リクエスト後の処理に使用可能な前記データボリュームの進行中のレプリカを作製するために、前記システム故障の前の前記データボリュームの前記進行中のレプリカを保持するものとして前記それぞれのページキャッシュ書き込みログを保持する、前記二つ以上のストレージノードのうちの一つを特定することをさらに含む、条項7に記載の方法。
9.前記ページキャッシュ書き込みログについてのトリムイベントを検出することと、
前記トリムイベントの検出に応答して、
前記ページキャッシュ書き込みログにおけるトリム位置を特定することと、
前記システムメモリからの前記複数個のページキャッシュエントリの少なくともいくつかを前記少なくとも一つのブロックベースのストレージデバイスに書き込む一つ以上のフラッシュ動作を実行することと、
前記一つ以上のフラッシュ動作の完了時に、前記ページキャッシュ書き込みログを保持する前記永続ストレージデバイスの一つ以上の部分を再利用して、前記ページキャッシュについての更新を記述する追加のログレコードを保存することと、をさらに含む、条項5に記載の方法。
10.前記トリムイベントの検出に応答して、前記一つ以上のフラッシュ動作についてのフラッシュ動作サイズを決定することをさらに含む、条項9に記載の方法。
11.前記少なくとも一つのブロックベースのストレージデバイスが、前記ストレージノードに保持された複数個のブロックベースのストレージデバイスのうちの少なくとも一つであり、前記方法が、さらに、
前記ストレージノードに保持された前記複数個のブロックベースのストレージデバイスのうちの少なくとも一つの他のブロックベースのストレージデバイスに存続する別のデータボリュームについての別の書き込みリクエストを受信することと、
前記他の書き込みリクエストについての前記更新、前記保存及び前記承認を実行することと、を含む、条項5に記載の方法。
12.前記一つ以上のコンピューティングデバイスが、ブロックベースのストレージサービスを共に実装する、複数個のストレージノードのうちのストレージノードを実装し、前記ストレージノードが、ページキャッシュ書き込みロギングを実施する、前記ブロックベースのストレージサービスにおける一つ以上のストレージノードのうちの一つであり、前記複数のストレージノードのうちの他の一つが、ページキャッシュ書き込みロギングを実施せず、当該方法が、さらに、
前記複数個のストレージノードのうちの前記他の一つを評価して、ページキャッシュ書き込みロギングを実施しない各々の他のストレージノードについての永続性スコアを決定することと、
前記永続性スコアに少なくともある程度基づいて、ページキャッシュ書き込みロギングを実施するための、前記他のストレージノードのうちの一つ以上のストレージノードを選択することと、をブロックベースのストレージサービスコントロールプレーンを実装する一つ以上のコンピューティングデバイスによって実行することを含む、条項5に記載の方法。
13.前記ストレージノードが、ネットワークベースかつブロックベースのストレージサービスを実装する複数個のストレージノードのうちの一つであり、前記書き込みリクエストが、ネットワークベースの仮想コンピュートサービスによって実装される仮想コンピュートインスタンスから受信され、前記ネットワークベースかつブロックベースのストレージサービス及び前記ネットワークベースの仮想コンピュートサービスが、同じネットワークベースのサービスプロバイダネットワークの一部として共に実装される、条項5に記載の方法。
14.ストレージノードにおいて、前記ストレージノードに保持された少なくとも一つのブロックベースのストレージデバイスに存続するデータボリュームについての書き込みリクエストを受信することと、
前記書き込みリクエストに関する、前記ストレージノードにおけるシステムメモリに保持されたページキャッシュ内の複数個のエントリのうちの少なくとも一つの対応するエントリを更新することであって、前記ページキャッシュ内の前記複数個のエントリが、前記データボリュームを永続的に更新するために、前記少なくとも一つのブロックベースのストレージデバイスを周期的にまたは非周期的にフラッシュする、前記更新することと、
前記少なくとも一つのブロックベースのストレージデバイスとは異なる永続ストレージデバイスに保持された複数個の他のログレコードと共に、前記少なくとも一つの対応するページキャッシュエントリについての前記更新を記述するログレコードを、前記永続ストレージデバイスに保持されたページキャッシュ書き込みログに保存することであって、前記ログレコード及び前記複数個の他のログレコードが、前記ページキャッシュ内のデータの喪失を招くシステム故障の発生時の前記ページキャッシュを復元するための、前記更新したページキャッシュエントリを含む前記ページキャッシュの状態を記述する、前記保存することと、
前記ページキャッシュエントリの更新及び前記ログレコードの前記ページキャッシュ書き込みログ内への保存に応答して、前記書き込みリクエストを完了したとして承認することと、を、一つ以上のコンピューティングデバイスによって実行されるときに、前記一つ以上のコンピューティングデバイスに実施させるプログラム命令を保存する、非一時的コンピュータ可読記憶媒体。
15.前記プログラム命令が、さらに、
システム故障からのリカバリ時に、
前記ページキャッシュ書き込みログを保持する前記永続ストレージデバイスから、前記ログレコード及び前記複数個の他のログレコードを取得することと、
前記ページキャッシュ書き込みログ内に保持された前記ログレコード及び前記複数個の他のログレコードを利用して、前記システム故障の前の前記ページキャッシュの状態を前記ページキャッシュに書き込むことと、を前記一つ以上のコンピューティングデバイスに実施させる、条項14に記載の非一時的コンピュータ可読記憶媒体。
16.前記一つ以上のコンピューティングデバイスが、マスタストレージノード及び一つ以上のスレーブストレージノードを実装し、前記マスタストレージノード及び前記一つ以上のスレーブストレージノードの各々が、前記データボリュームのそれぞれのレプリカを保持し、前記マスタストレージノード及び前記一つ以上のスレーブストレージノードの各々が、前記受信、前記保存、前記更新及び前記承認を実行する、条項15に記載の非一時的コンピュータ可読記憶媒体。
17.前記プログラム命令が、さらに、
前記ページキャッシュ書き込みログについてのトリムイベントを検出することと、
前記トリムイベントの検出に応答して、
前記ページキャッシュ書き込みログにおけるトリム位置を特定することと、
前記システムメモリからの前記複数個のページキャッシュエントリの少なくともいくつかを前記少なくとも一つのブロックベースのストレージデバイスに書き込む一つ以上のフラッシュ動作を実行することと、
前記一つ以上のフラッシュ動作の完了時に、前記ページキャッシュ書き込みログを保持する前記永続ストレージデバイスの一つ以上の部分を再利用して、前記ページキャッシュについての更新を記述する追加のログレコードを保存することと、を前記一つ以上のコンピューティングデバイスに実施させる、条項14に記載の非一時的コンピュータ可読記憶媒体。
18.前記プログラム命令が、さらに、
前記トリムイベントの検出に応答して、前記一つ以上のフラッシュ動作についてのフラッシュ動作サイズを決定することを前記一つ以上のコンピューティングデバイスに実施させる、条項17に記載の非一時的コンピュータ可読記憶媒体。
19.前記少なくとも一つのブロックベースのストレージデバイスが、前記ストレージノードに保持された複数個のブロックベースのストレージデバイスのうちの少なくとも一つであり、前記プログラム命令が、さらに、
前記ストレージノードに保持された前記複数個のブロックベースのストレージデバイスのうちの少なくとも一つの他のブロックベースのストレージデバイスに存続する別のデータボリュームについての別の書き込みリクエストを受信することと、
前記他の書き込みリクエストについての前記更新、前記保存及び前記承認を実行することと、を前記一つ以上のコンピューティングデバイスに実施させる、条項14に記載の非一時的コンピュータ可読記憶媒体。
20.前記ストレージノードが、ネットワークベースかつブロックベースのストレージサービスを実装する複数個のストレージノードのうちの一つであり、前記複数個のストレージノードの各々が、複数個の異なるクライアントについての複数個の異なるデータボリュームを保持する、条項14の非一時的コンピュータ可読記憶媒体。

Claims (15)

  1. ブロックベースのストレージサービスを共に実装する複数のストレージノードにおけるストレージノードを実装するシステムであって、
    前記ストレージノードは、ページキャッシュ書き込みロギングを実施する、前記ブロックベースのストレージサービスにおける一つ以上のストレージノードのうちのストレージノードであり、前記複数のストレージノードのうちの他のストレージノードは、ページキャッシュ書き込みロギングを実施しないストレージノードであり、
    前記システムは、
    一つ以上のデータボリュームを保持する一つ以上のブロックベースのストレージデバイスと、
    ページキャッシュを備えるシステムメモリであって、前記ページキャッシュが、前記一つ以上のデータボリュームを永続的に更新するために、前記一つ以上のブロックベースのストレージデバイスを周期的にまたは非周期的にフラッシュする、前記システムメモリと、
    ページキャッシュ書き込みログを保持する永続ストレージデバイスであって、前記ページキャッシュ書き込みログが、前記ページキャッシュについての更新を記述する複数個のログレコードを保持し、前記複数個のログレコードが、前記ページキャッシュ内のデータの喪失を招くシステム故障の発生時の前記ページキャッシュについての以前の状態を復元するように利用可能である、前記永続ストレージデバイスと、を備えており、
    前記ストレージノードは、
    前記一つ以上のデータボリュームのうちの特定のデータボリュームについての書き込みリクエストを受信し、
    前記書き込みリクエストに関する、前記ページキャッシュ内の複数個のエントリのうちの少なくとも一つの対応するエントリを更新し、
    前記ページキャッシュ書き込みログ内の前記少なくとも一つの対応するページキャッシュエントリについての前記更新を記述するログレコードを保存し、かつ
    前記ページキャッシュエントリの更新及び前記ログレコードの前記ページキャッシュ書き込みログ内への保存に応答して、前記書き込みリクエストを完了したとして承認する
    ように構成されたシステム。
  2. 前記ストレージノードが、さらに、システム故障からのリカバリ時に、
    前記ページキャッシュ書き込みログを保持する前記永続ストレージデバイスから、前記ログレコード及び前記複数個のログレコードを取得し、かつ
    前記ページキャッシュ書き込みログ内に保持された前記ログレコード及び前記複数個のログレコードを利用して、前記システム故障の前の前記ページキャッシュの状態を前記ページキャッシュに書き込むように構成された、請求項1に記載のシステム。
  3. ストレージノードが、さらに、
    前記ページキャッシュ書き込みログについてのトリムイベントを検出し、
    前記トリムイベントの検出に応答して、
    前記ページキャッシュ書き込みログにおけるトリム位置を特定し、
    前記システムメモリからの前記複数個のページキャッシュエントリの少なくともいくつかを前記複数個のブロックベースのストレージデバイスに書き込む一つ以上のフラッシュ動作を実行し、かつ
    前記一つ以上のフラッシュ動作の完了時に、前記ページキャッシュ書き込みログを保持する前記永続ストレージデバイスの一つ以上の部分を再利用して、前記ページキャッシュについての更新を記述する追加のログレコードを保存するように構成された、請求項1に記載のシステム。
  4. 前記ストレージノードが、ネットワークベースかつブロックベースのストレージサービスの一部として実装され、前記ブロックベースのストレージサービスの一部として実装された少なくとも一つの他のストレージノードが、前記特定のデータボリュームのレプリカを保持し、前記少なくとも一つの他のストレージノードが、前記受信、前記保存、前記更新及び前記承認を実行するように構成された、請求項1に記載のシステム。
  5. 一つ以上のコンピューティングデバイスによって実行することを含む方法であって、
    前記一つ以上のコンピューティングデバイスは、ブロックベースのストレージサービスを共に実装する複数のストレージノードにおけるストレージノードを実装し、
    前記ストレージノードは、ページキャッシュ書き込みロギングを実施する、前記ブロックベースのストレージサービスにおける一つ以上のストレージノードのうちのストレージノードであり、前記複数のストレージノードのうちの他のストレージノードは、ページキャッシュ書き込みロギングを実施しないストレージノードであり、
    前記ストレージノードにおいて、前記ストレージノードに保持された少なくとも一つのブロックベースのストレージデバイスに存続するデータボリュームについての書き込みリクエストを受信することと、
    前記書き込みリクエストに関する、前記ストレージノードにおけるシステムメモリに保持されたページキャッシュ内の複数個のエントリのうちの少なくとも一つの対応するエントリを更新することであって、前記ページキャッシュ内の前記複数個のエントリが、前記データボリュームを永続的に更新するために、前記少なくとも一つのブロックベースのストレージデバイスを周期的にまたは非周期的にフラッシュする、前記更新することと、
    永続ストレージデバイスに保持された複数個の他のログレコードと共に、前記永続ストレージデバイスに保持されたページキャッシュ書き込みログ内の前記少なくとも一つの対応するページキャッシュエントリについての前記更新を記述するログレコードを保存することとであって、前記ログレコード及び前記複数個の他のログレコードが、前記ページキャッシュ内のデータの喪失を招くシステム故障の発生時の前記ページキャッシュを復元するための、前記更新したページキャッシュエントリを含む前記ページキャッシュの状態を記述する、前記保存することと、
    前記ページキャッシュエントリの更新及び前記ログレコードの前記ページキャッシュ書き込みログ内への保存に応答して、前記書き込みリクエストを完了したとして承認することと、
    含む、方法。
  6. システム故障からのリカバリ時に、
    前記ページキャッシュ書き込みログを保持する前記永続ストレージデバイスから、前記ログレコード及び前記複数個の他のログレコードを取得することと、
    前記ページキャッシュ書き込みログ内に保持された前記ログレコード及び前記複数個の他のログレコードを利用して、前記システム故障の前の前記ページキャッシュの状態を前記ページキャッシュに書き込むことと、をさらに含む、請求項5に記載の方法。
  7. 前記ストレージノードが、前記データボリュームのレプリカを保持する、二つ以上のストレージノードのうちの一つであり、前記二つ以上のストレージノードのうちの、前記ストレージノードと異なる少なくとも一つが、前記データボリュームに関する、書き込みリクエストについてのそれぞれのページキャッシュ書き込みログを保持しない、請求項5に記載の方法。
  8. 前記二つ以上のストレージノードのシステム故障からのリカバリ時に、前記データボリュームについての入出力リクエスト後の処理に使用可能な前記データボリュームの進行中のレプリカを作製するために、前記システム故障の前の前記データボリュームの前記進行中のレプリカを保持するものとして前記それぞれのページキャッシュ書き込みログを保持する、前記二つ以上のストレージノードのうちの一つを特定することをさらに含む、請求項7に記載の方法。
  9. 前記ページキャッシュ書き込みログについてのトリムイベントを検出することと、
    前記トリムイベントの検出に応答して、
    前記ページキャッシュ書き込みログにおけるトリム位置を特定することと、
    前記システムメモリからの前記複数個のページキャッシュエントリの少なくともいくつかを前記少なくとも一つのブロックベースのストレージデバイスに書き込む一つ以上のフラッシュ動作を実行することと、
    前記一つ以上のフラッシュ動作の完了時に、前記ページキャッシュ書き込みログを保持する前記永続ストレージデバイスの一つ以上の部分を再利用して、前記ページキャッシュについての更新を記述する追加のログレコードを保存することと、をさらに含む、請求項5に記載の方法。
  10. 前記トリムイベントの検出に応答して、前記一つ以上のフラッシュ動作についてのフラッシュ動作サイズを決定することをさらに含む、請求項9に記載の方法。
  11. 前記少なくとも一つのブロックベースのストレージデバイスが、前記ストレージノードに保持された複数個のブロックベースのストレージデバイスのうちの少なくとも一つであり、前記方法が、さらに、
    前記ストレージノードに保持された前記複数個のブロックベースのストレージデバイスのうちの少なくとも一つの他のブロックベースのストレージデバイスに存続する別のデータボリュームについての別の書き込みリクエストを受信することと、
    前記他の書き込みリクエストについての前記更新、前記保存及び前記承認を実行することと、を含む、請求項5に記載の方法。
  12. 記方法が、さらに、
    前記複数個のストレージノードのうちの前記他のストレージノードを評価して、ページキャッシュ書き込みロギングを実施しない各々の他のストレージノードについての永続性スコアを決定することと、
    前記永続性スコアに少なくともある程度基づいて、ページキャッシュ書き込みロギングを実施するための、前記他のストレージノードのうちの一つ以上のストレージノードを選択することと、をブロックベースのストレージサービスコントロールプレーンを実装する一つ以上のコンピューティングデバイスによって実行すること含む、請求項5に記載の方法。
  13. 前記ストレージノードが、ネットワークベースかつブロックベースのストレージサービスを実装する複数個のストレージノードのうちの一つであり、前記書き込みリクエストが、ネットワークベースの仮想コンピュートサービスによって実装される仮想コンピュートインスタンスから受信され、前記ネットワークベースかつブロックベースのストレージサービス及び前記ネットワークベースの仮想コンピュートサービスが、同じネットワークベースのサービスプロバイダネットワークの一部として共に実装される、請求項5に記載の方法。
  14. マスタストレージノードを実装するシステムであって、
    前記マスタストレージノードに保持された少なくとも一つのブロックベースのストレージデバイスに存続するデータボリュームについての書き込みリクエストを受信し、
    前記書き込みリクエストに関する、前記マスタストレージノードにおけるシステムメモリに保持されたページキャッシュ内の複数個のエントリのうちの少なくとも一つの対応するエントリを更新し、前記ページキャッシュ内の前記複数個のエントリが、前記データボリュームを永続的に更新するために、前記少なくとも一つのブロックベースのストレージデバイスを周期的にまたは非周期的にフラッシュし、
    前記少なくとも一つのブロックベースのストレージデバイスとは異なる永続ストレージデバイスに保持された複数個の他のログレコードと共に、前記永続ストレージデバイスに保持されたページキャッシュ書き込みログ内の前記少なくとも一つの対応するページキャッシュエントリについての前記更新を記述するログレコードを保存し、前記ログレコード及び前記複数個の他のログレコードが、前記ページキャッシュ内のデータの喪失を招くシステム故障の発生時の前記ページキャッシュを復元するための、前記更新したページキャッシュエントリを含む前記ページキャッシュの状態を記述し、
    前記ページキャッシュエントリの更新及び前記ログレコードの前記ページキャッシュ書き込みログ内への保存に応答して、前記書き込みリクエストを完了したとして承認する
    ように構成された前記マスタストレージノードを備え、
    前記マスタストレージノードは、前記データボリュームのレプリカを維持する、複数のストレージノードのうちのストレージノードであり、前記複数のストレージノードのうちの他のストレージノードは、前記データボリュームについての書き込みリクエストのための対応するページキャッシュ書き込みログを維持しない
    システム。
  15. 一つ以上のスレーブストレージノードをさらに備えており、前記マスタストレージノード及び前記一つ以上のスレーブストレージノードの各々が、前記データボリュームのそれぞれのレプリカを保持し、前記マスタストレージノード及び前記一つ以上のスレーブストレージノードの各々が、前記受信、前記保存、前記更新及び前記承認を実行する、請求項14に記載のシステム。
JP2016556704A 2014-03-11 2015-03-10 ブロックベースのストレージにおけるページキャッシュ書き込みロギング Active JP6437007B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/205,067 US10055352B2 (en) 2014-03-11 2014-03-11 Page cache write logging at block-based storage
US14/205,067 2014-03-11
PCT/US2015/019574 WO2015138375A2 (en) 2014-03-11 2015-03-10 Page cache write logging at block-based storage

Publications (2)

Publication Number Publication Date
JP2017515193A JP2017515193A (ja) 2017-06-08
JP6437007B2 true JP6437007B2 (ja) 2018-12-12

Family

ID=54069038

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016556704A Active JP6437007B2 (ja) 2014-03-11 2015-03-10 ブロックベースのストレージにおけるページキャッシュ書き込みロギング

Country Status (9)

Country Link
US (3) US10055352B2 (ja)
EP (1) EP3117325B1 (ja)
JP (1) JP6437007B2 (ja)
KR (1) KR101914847B1 (ja)
CN (2) CN110609797B (ja)
AU (1) AU2015229684B2 (ja)
CA (1) CA2940246C (ja)
SG (1) SG11201606896XA (ja)
WO (1) WO2015138375A2 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501418B2 (en) * 2014-06-26 2016-11-22 HGST Netherlands B.V. Invalidation data area for cache
US10891264B2 (en) * 2015-04-30 2021-01-12 Vmware, Inc. Distributed, scalable key-value store
US9639287B1 (en) * 2015-06-29 2017-05-02 Western Digital Technologies, Inc. Write command reporting
US10489248B1 (en) 2015-06-30 2019-11-26 EMC IP Holding Company LLC Disaster recovery in a distributed file system
US10649681B2 (en) * 2016-01-25 2020-05-12 Samsung Electronics Co., Ltd. Dynamic garbage collection P/E policies for redundant storage blocks and distributed software stacks
JP6734536B2 (ja) * 2016-07-29 2020-08-05 富士通株式会社 情報処理装置及びメモリコントローラ
US10445236B2 (en) * 2016-11-14 2019-10-15 Futurewei Technologies, Inc. Method to consistently store large amounts of data at very high speed in persistent memory systems
US10514847B2 (en) * 2016-12-28 2019-12-24 Amazon Technologies, Inc. Data storage system with multiple durability levels
US10484015B2 (en) 2016-12-28 2019-11-19 Amazon Technologies, Inc. Data storage system with enforced fencing
US11301144B2 (en) 2016-12-28 2022-04-12 Amazon Technologies, Inc. Data storage system
US10467143B1 (en) * 2017-02-27 2019-11-05 Amazon Technologies, Inc. Event-driven cache
US11068299B1 (en) * 2017-08-04 2021-07-20 EMC IP Holding Company LLC Managing file system metadata using persistent cache
US11403176B2 (en) * 2017-09-12 2022-08-02 Western Digital Technologies, Inc. Database read cache optimization
US10452296B1 (en) 2018-03-23 2019-10-22 Amazon Technologies, Inc. Accelerated volumes
US10908825B2 (en) * 2018-03-29 2021-02-02 Intel Corporation SSD with persistent DRAM region for metadata
US10459655B1 (en) 2018-04-30 2019-10-29 Amazon Technologies, Inc. Rapid volume backup generation from distributed replica
US11023157B2 (en) 2018-04-30 2021-06-01 Amazon Technologies, Inc. Intermediary duplication to facilitate copy requests in distributed storage systems
US11343314B1 (en) 2018-04-30 2022-05-24 Amazon Technologies, Inc. Stream-based logging for distributed storage systems
CN108959526B (zh) * 2018-06-28 2021-10-15 郑州云海信息技术有限公司 日志管理方法以及日志管理装置
US10976966B2 (en) * 2018-06-29 2021-04-13 Weka.IO Ltd. Implementing coherency and page cache support in a distributed way for files
CN110896406A (zh) 2018-09-13 2020-03-20 华为技术有限公司 数据存储方法、装置及服务器
US11803468B2 (en) * 2018-09-19 2023-10-31 Seagate Technology Llc Data storage system with write back cache
US10877868B2 (en) 2018-09-21 2020-12-29 Microsoft Technology Licensing, Llc Applying a log to storage segments
CN110955653A (zh) * 2018-09-26 2020-04-03 阿里巴巴集团控股有限公司 一种数据页面的处理方法、装置、设备及计算机系统
KR102137109B1 (ko) * 2018-11-30 2020-07-23 카페24 주식회사 로그 메시지의 패턴을 분류하는 방법 및 장치
KR102649169B1 (ko) * 2018-12-12 2024-03-20 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US10740187B1 (en) * 2019-01-31 2020-08-11 EMC IP Holding Company LLC Systems and methods of managing and creating snapshots in a cache-based storage system
CN111694703B (zh) * 2019-03-13 2023-05-02 阿里云计算有限公司 缓存区管理方法、装置和计算机设备
US11068192B1 (en) 2019-03-26 2021-07-20 Amazon Technologies, Inc. Utilizing mutiple snapshot sources for creating new copy of volume in a networked environment wherein additional snapshot sources are reserved with lower performance levels than a primary snapshot source
US10983719B1 (en) 2019-03-28 2021-04-20 Amazon Technologies, Inc. Replica pools to support volume replication in distributed storage systems
US11237730B2 (en) 2019-05-12 2022-02-01 International Business Machines Corporation Favored cache status for selected volumes within a storage system
US11169919B2 (en) 2019-05-12 2021-11-09 International Business Machines Corporation Cache preference for selected volumes within a storage system
US11151035B2 (en) 2019-05-12 2021-10-19 International Business Machines Corporation Cache hit ratios for selected volumes within a storage system
US11163698B2 (en) 2019-05-12 2021-11-02 International Business Machines Corporation Cache hit ratios for selected volumes using synchronous I/O
US11176052B2 (en) 2019-05-12 2021-11-16 International Business Machines Corporation Variable cache status for selected volumes within a storage system
US11169723B2 (en) 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
US10860221B1 (en) * 2019-07-05 2020-12-08 EMC IP Holding Company LLC Page write to non-volatile data storage with failure recovery
CN110727608B (zh) * 2019-09-03 2022-07-12 深圳市道通智能航空技术股份有限公司 一种日志数据的存储方法、电子设备及存储介质
US11663144B2 (en) 2020-01-20 2023-05-30 International Business Machines Corporation LRU list reorganization for favored and unfavored volumes
US11182096B1 (en) 2020-05-18 2021-11-23 Amazon Technologies, Inc. Data storage system with configurable durability
US11681443B1 (en) 2020-08-28 2023-06-20 Amazon Technologies, Inc. Durable data storage with snapshot storage space optimization
JP2022046887A (ja) 2020-09-11 2022-03-24 キオクシア株式会社 半導体記憶装置
US11262918B1 (en) 2020-09-30 2022-03-01 Amazon Technologies, Inc. Data storage system with uneven drive wear reduction
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)
CN114443364B (zh) * 2021-12-27 2024-07-05 天翼云科技有限公司 一种分布式块存储数据处理方法、装置、设备及存储介质
CN117873405B (zh) * 2024-03-11 2024-07-09 腾讯科技(深圳)有限公司 数据存储方法、装置、计算机设备和存储介质

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0926916A (ja) 1995-07-12 1997-01-28 Oki Electric Ind Co Ltd 非破壊ディスク装置
JP2000066843A (ja) * 1998-08-17 2000-03-03 Nec Corp ディスクアレイ装置
JP4291077B2 (ja) 2003-07-29 2009-07-08 株式会社日立製作所 分散ストレージ装置のファイル管理方法及び分散ストレージシステム
US7165129B1 (en) * 2004-01-26 2007-01-16 Cisco Technology, Inc. Method and apparatus for self-tuning transaction batching
US20050203974A1 (en) 2004-03-09 2005-09-15 Smith Gary S. Checkpoint methods and systems utilizing non-disk persistent memory
JP2006012142A (ja) 2004-06-09 2006-01-12 Hewlett-Packard Development Co Lp 非ディスク永続メモリを利用したチェックポイント方法およびシステム
JP4815825B2 (ja) 2005-03-10 2011-11-16 日本電気株式会社 ディスクアレイ装置及びその再構築方法
US7487386B2 (en) 2005-03-30 2009-02-03 International Business Machines Corporation Method for increasing file system availability via block replication
US7778972B1 (en) 2005-12-29 2010-08-17 Amazon Technologies, Inc. Dynamic object replication within a distributed storage system
US8307359B1 (en) 2006-06-23 2012-11-06 Emc Corporation Embedded virtual storage area network using a virtual block network fabric
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8046548B1 (en) * 2007-01-30 2011-10-25 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems using bitmap write-intent logging
US7908448B1 (en) * 2007-01-30 2011-03-15 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems with write-back cache
US7979652B1 (en) 2007-12-20 2011-07-12 Amazon Technologies, Inc. System and method for M-synchronous replication
US7992037B2 (en) 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
US8578083B2 (en) 2009-03-03 2013-11-05 Vmware, Inc. Block map based I/O optimization for storage virtual appliances
US8560639B2 (en) 2009-04-24 2013-10-15 Microsoft Corporation Dynamic placement of replica data
JP4743313B2 (ja) 2009-07-31 2011-08-10 ウシオ電機株式会社 超高圧水銀ランプおよび超高圧水銀ランプ点灯装置
US8341115B1 (en) 2009-12-26 2012-12-25 Emc Corporation Dynamically switching between synchronous and asynchronous replication
CN101764712A (zh) * 2010-01-21 2010-06-30 瑞斯康达科技发展股份有限公司 一种日志信息的传输系统及方法
US8677055B2 (en) * 2010-04-12 2014-03-18 Sandisk Enterprises IP LLC Flexible way of specifying storage attributes in a flash memory-based object store
US20110276963A1 (en) 2010-05-04 2011-11-10 Riverbed Technology, Inc. Virtual Data Storage Devices and Applications Over Wide Area Networks
US20120079229A1 (en) 2010-09-28 2012-03-29 Craig Jensen Data storage optimization for a virtual platform
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
WO2012116369A2 (en) * 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
US8725782B2 (en) 2011-04-25 2014-05-13 Microsoft Corporation Virtual disk storage techniques
US9294564B2 (en) 2011-06-30 2016-03-22 Amazon Technologies, Inc. Shadowing storage gateway
US8909996B2 (en) 2011-08-12 2014-12-09 Oracle International Corporation Utilizing multiple storage devices to reduce write latency for database logging
US9323659B2 (en) * 2011-08-12 2016-04-26 Sandisk Enterprise Ip Llc Cache management including solid state device virtualization
WO2013024485A2 (en) 2011-08-17 2013-02-21 Scaleio Inc. Methods and systems of managing a distributed replica based storage
US9158568B2 (en) 2012-01-30 2015-10-13 Hewlett-Packard Development Company, L.P. Input/output operations at a virtual block device of a storage server
US9069806B2 (en) 2012-03-27 2015-06-30 Google Inc. Virtual block devices
CN103064765B (zh) * 2012-12-28 2015-12-02 华为技术有限公司 数据恢复方法、装置及集群存储系统

Also Published As

Publication number Publication date
WO2015138375A2 (en) 2015-09-17
AU2015229684B2 (en) 2017-06-29
WO2015138375A3 (en) 2015-11-05
CN106104511B (zh) 2019-10-22
KR20160142311A (ko) 2016-12-12
KR101914847B1 (ko) 2018-11-02
AU2015229684A1 (en) 2016-09-08
CN110609797B (zh) 2024-01-23
JP2017515193A (ja) 2017-06-08
US11188469B2 (en) 2021-11-30
US20150261674A1 (en) 2015-09-17
SG11201606896XA (en) 2016-09-29
CN106104511A (zh) 2016-11-09
CA2940246A1 (en) 2015-09-17
US20180357173A1 (en) 2018-12-13
CA2940246C (en) 2022-08-16
CN110609797A (zh) 2019-12-24
US20200110707A1 (en) 2020-04-09
EP3117325A2 (en) 2017-01-18
EP3117325B1 (en) 2021-11-03
EP3117325A4 (en) 2017-11-22
US10503650B2 (en) 2019-12-10
US10055352B2 (en) 2018-08-21

Similar Documents

Publication Publication Date Title
JP6437007B2 (ja) ブロックベースのストレージにおけるページキャッシュ書き込みロギング
JP6389268B2 (ja) 個々のデータボリュームに対し動的に修正する耐久性特徴
US9983825B2 (en) Efficient data volume replication for block-based storage
JP6381801B2 (ja) 格納クライアントファイルシステム用格納ボリュームの動的スケーリング
US10489422B2 (en) Reducing data volume durability state for block-based storage
JP2020024733A (ja) データボリュームの動的な構成

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180424

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180906

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: 20181016

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181113

R150 Certificate of patent or registration of utility model

Ref document number: 6437007

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250