(57)【特許請求の範囲】
【請求項１】
ストレージノードを実装するシステムであって、
それぞれが論理データブロックのセットを有する複数のデータボリュームを保持する複数のブロックベースの記憶装置と、
ページキャッシュを備えるシステムメモリであって、前記ページキャッシュは、前記複数のデータボリュームを持続的に更新するために、定期的にまたは不定期に前記複数のブロックベースの記憶装置にフラッシュされる前記システムメモリと、
前記ページキャッシュへの更新を記載する複数のログレコードを保持するページキャッシュの書き込みログを保持する持続的な記憶装置であって、前記ページキャッシュ内でデータ損失となるシステム故障に続いて、前記複数のログレコードが再生されて前記システム故障前のページキャッシュのデータ状態に戻すよう前記ページキャッシュのデータを再格納する前記持続的な記憶装置と、
ログ管理モジュールと
を備えたシステムであって、前記ログ管理モジュールが、
前記ページキャッシュの書き込みログにログされるべき前記ストレージノードへの新規の書き込み要求の量を監視し、少なくとも部分的に新規の書き込み要求の量に基づいて、前記複数のデータボリュームの少なくとも１つのデータボリュームのために耐久性特徴を動的に修正して前記少なくとも１つのデータボリュームのためのページキャッシュ書き込みログを有効または無効にするよう構成され、
前記動的に修正することが、
前記少なくとも１つのデータボリュームのためのページキャッシュ書き込みログを有効にするよう耐久性特徴を修正すること、または前記少なくとも１つのデータボリュームのためのページキャッシュ書き込みログを無効にするよう耐久性特徴を修正すること
を含み、さらに、
前記耐久性特徴を動的に修正することが、前記新規の書き込み要求の量に少なくとも部分的に基づいて、前記複数のデータボリューム中にページキャッシュ書き込みログの選択的実装を提供する、ことを特徴とするシステム。
【請求項２】
前記少なくとも１つのデータボリュームに対する前記耐久性特徴を動的に修正するために、前記ログ管理モジュールはさらに、
前記複数のデータボリュームのそれぞれに対するそれぞれのサイズまたは、
前記複数のデータボリュームのそれぞれに向けられた書き込み要求のそれぞれの量
に少なくとも部分的に基づいて修正するよう前記少なくとも１つのデータボリュームを選択する、請求項１に記載のシステム。
【請求項３】
前記ログ管理モジュールはさらに、
特定のデータボリュームに対する書き込み要求を受信し、
ページキャッシュの書き込みログが前記特定のデータボリュームに対し無効であることを判定し、
前記書き込み要求により前記ページキャッシュを更新するのに対応し、前記ページキャッシュの書き込みログの前記書き込み要求に対するログレコードを格納せずに、完了したものとして前記書き込み要求を認識するよう構成される、請求項１に記載のシステム。
【請求項４】
前記ストレージノードがネットワークベースのブロックベースのストレージサービスを実装する複数のストレージノードの１つとして実装され、前記ネットワークベースのブロックベースのストレージサービスは複数の異なるクライアントのためにデータボリュームを保持する、請求項１に記載のシステム。
【請求項５】
１つ以上の計算装置によって実行される方法であって、
ストレージノードで保持される複数のデータボリュームであって各々が論理データブロックのセットを含むデータボリュームに対する書き込み要求により、前記ストレージノードでページキャッシュへの更新をそれぞれ記載する複数のログレコードを格納する持続的記憶装置内のページキャッシュの書き込みログを前記ストレージノードで保持し、
ページキャッシュの書き込みログにログされるべきストレージノードへの新規の書き込み要求の量を監視し、
少なくとも部分的に新規の書き込み要求の量に基づいて、複数のデータボリュームの少なくとも１つのデータボリュームのために耐久性特徴を動的に修正して前記少なくとも１つのデータボリュームのためのページキャッシュ書き込みログを有効または無効にすることであって、前記動的に修正することが、
前記少なくとも１つのデータボリュームのためにページキャッシュの書き込みログを有効にすること、
前記少なくとも１つのデータボリュームのためにページキャッシュの書き込みログを無効にすること
を含み、前記耐久性特徴を動的に修正することが、前記新規の書き込み要求の量に少なくとも部分的に基づいて、前記複数のデータボリューム中にページキャッシュ書き込みログの選択的実装を提供する、方法。
【請求項６】
少なくとも１つのデータボリュームに対する前記耐久性特徴を前記動的に修正することは、
前記複数のデータボリュームのそれぞれに対するそれぞれのサイズまたは、
前記複数のデータボリュームのそれぞれに向けられた書き込み要求のそれぞれの量
に少なくとも部分的に基づいて修正するよう前記少なくとも１つのデータボリュームを選択する
ことをさらに含む、請求項５に記載の方法。
【請求項７】
前記ストレージノードがブロックベースのストレージシステムを実装する複数のストレージノードの１つであり、前記複数のストレージノードのうち異なる１つが前記ストレージノードで保持される前記複数のデータボリュームのそれぞれの複製を保持し、前記少なくとも１つのデータボリュームを前記選択し、前記異なるストレージノードで保持される前記複数のデータボリュームの前記それぞれの複製に対して、少なくとも部分的にそれぞれの耐久性にさらに基づいて修正する、請求項６に記載の方法。
【請求項８】
前記ストレージノードにおける前記複数のデータボリュームの全てに対する前記耐久性特徴が同一であるように修正される、請求項５に記載の方法。
【請求項９】
前記複数のデータボリュームの特定のデータボリュームに対する書き込み要求を受信し、
ページキャッシュの書き込みログが前記特定のデータボリュームに対し無効であることを判定し、
前記書き込み要求により前記ページキャッシュを更新するのに対応し、前記ページキャッシュの書き込みログの前記書き込み要求に対するログレコードを格納せずに、完了したものとして前記書き込み要求を認識することをさらに含む、請求項５に記載の方法。
【請求項１０】
前記複数のデータボリュームの別のデータボリュームに対する別の書き込み要求を受信し、
ページキャッシュの書き込みログが前記別のデータボリュームに対して有効であることを判定し、
ページキャッシュの書き込みログが前記別のデータボリュームに対して有効であることの判定に対し、
前記別の書き込み要求により前記ページキャッシュを更新し、
前記ページキャッシュの書き込みログ中の前記別の書き込み要求に対する前記ページキャッシュへの前記更新を記載するログレコードを格納し、
前記別の書き込み要求により前記ページキャッシュの更新に対応し、
前記ページキャッシュの書き込みログ中の前記別の書き込み要求に対する前記ページキャッシュへの前記更新を記載する前記ログレコードを格納し、
前記別の書き込み要求を完了したと認識することをさらに含む、請求項９に記載の方法。
【請求項１１】
新規の書き込み要求の量がログ量の下限未満であるとの判定に対応して、前記少なくとも１つのデータボリュームのために前記ページキャッシュの書き込みログを有効にすることが実行され、
新規の書き込み要求の前記量がログ量の上限を超えるとの判定に対応して、前記少なくとも１つのデータボリュームのために前記ページキャッシュの書き込みログを無効にすることが実行される、請求項５に記載の方法。
【請求項１２】
システム故障からの復旧で、
前記複数のデータボリュームの内の有効なページキャッシュの書き込みログを有するデータボリュームを識別し、
前記有効なページキャッシュの書き込みログを有するデータボリュームを入力／出力（Ｉ／Ｏ）要求を処理するために利用可能にし、
前記複数のデータボリュームの内の無効なページキャッシュの書き込みログを有するデータボリュームを識別し、
無効なページキャッシュの書き込みログを有する１つ以上のデータボリュームの複製を保持する別のストレージノードのために、前記無効なページキャッシュの書き込みログを有する１つ以上のデータボリュームを入力／出力要求のために有効にするか否かを決定するために待機することをさらに含む、請求項５に記載の方法。
【請求項１３】
前記ストレージノードがネットワークベースのブロックベースのストレージサービスを実装する複数のストレージノードの１つであり、書き込み要求はネットワークベースの仮想計算サービスによって実装される仮想コンピュートインスタンスから受信され、前記ネットワークベースのブロックストレージサービス及び前記ネットワークベースの仮想計算サービスは、同じネットワークベースのサービスプロバイダネットワークの一部として一緒に実装される、請求項５に記載の方法。
【請求項１４】
ストレージノードを実装するシステムであって、
前記ストレージノードは、前記ストレージノードに保持される複数のデータボリュームであって各々が論理データブロックのセットを含むデータボリュームに対する書き込み要求により、前記ストレージノードでページキャッシュへの更新をそれぞれ記載する複数のログレコードを格納する持続的記憶装置内のページキャッシュの書き込みログを保持するよう構成され、
ログ管理モジュールは、
前記ページキャッシュの書き込みログにログされるべき前記ストレージノードへの新規の書き込み要求の量を監視し、
少なくとも部分的に新規の書き込み要求の量に基づいて、複数のデータボリュームの少なくとも１つのデータボリュームに対し耐久性特徴を動的に修正して前記少なくとも１つのデータボリュームのためのページキャッシュ書き込みログを有効または無効にすることであって、前記動的に修正することが、
前記少なくとも１つのデータボリュームのためにページキャッシュの書き込みログを有効にすること、
前記少なくとも１つのデータボリュームのためにページキャッシュの書き込みログを無効にすること
を含み、前記耐久性特徴を動的に修正することが、前記新規の書き込み要求の量に少なくとも部分的に基づいて、前記複数のデータボリューム中にページキャッシュ書き込みログの選択的実装を提供するよう構成される、前記システム。
【請求項１５】
前記ストレージノードがネットワークベースのブロックベースのストレージサービスを実装する複数のその他のストレージノードの１つであり、前記ネットワークベースのブロックベースのストレージサービスは複数の異なるクライアントのためにデータボリュームを保持する、請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
ハードウェアのリソースの仮想化を動的に共有するための技術における最近の革新、ソフトウェア及びネットワークにわたる情報記憶は、信頼性、スケーラビリティ及びコンピューティングの費用効率を高めた。より具体的には、仮想化の到来によるオンデマンドの仮想化コンピューティングリソース及びストレージを提供する能力は、コンシューマが、リソース及びストレージの処理を行って、コンピューティング及びストレージの必要性に迅速に対応して、コンピューティング及びストレージ費用を柔軟に構築するのを可能にした。ハードウェアを製造及び配置する遅延と費用により影響されるサイクルを供給する際に、固定化されたハードウェアを購入またはリースするよりもむしろ、仮想化は、顧客が要求する時にプロセッササイクル及びストレージを購入することを可能にする。コンピューティング及びストレージの有用性を決定する将来の要求の予測の正確性に依存するよりも、ユーザは必要に応じて比較的瞬時にコンピューティング及びストレージリソースの使用を購入可能である。
【０００２】
仮想化されたコンピューティング環境は、ブロックベースのストレージによって頻繁に支援される。このようなブロックベースのストレージは、支援するボリュームの構造的及び機能的な詳細にブロックベースのストレージを機能上依存しないで提供する、一連の標準化されたストレージ要請を通して、様々なコンピューティング仮想と相互作用できるストレージシステム及びストレージの有用性を提供する仮想化において実行されるオペレーティングシステムを提供する。しかしながら、ネットワークの伝送能力が上昇するにつれ、仮想化されたリソースのためにより大きな処理能力に加え、ブロックベースのストレージへのＩ／Ｏ要求が大きくなり得る。Ｉ／Ｏ要求が、サービスのリクエストへのブロックベースのストレージの容量を超える場合には、次に、待ち時間及び／または仮想化されたコンピューティングリソースに対するブロックベースのストレージ効率の耐久性に影響する。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、ブロックベースのストレージのページキャッシュの書き込みログを示す一連のブロック図である。
【図２】いくつかの実施形態による、ストレージノードでページキャッシュの書き込みログを実装するブロックベースのストレージサービスを含む、多数のネットワークベースのサービスを実装するプロバイダネットワークを示すブロック図である。
【図３】いくつかの実施形態による、ストレージノードで実装されるページキャッシュを更新するために、ページキャッシュの書き込みログを実装するストレージノードを示すブロック図である。
【図４】いくつかの実施形態による、ストレージノードでページキャッシュのために、ページキャッシュの書き込みログにおけるログ入力を削除するよう構成されたストレージノードを示すブロック図である。
【図５】いくつかの実施形態による、ブロックベースのストレージに保持されるデータボリューム用に、動的に選択するページキャッシュの書き込みログを示すブロック図である。
【図６】いくつかの実施形態による、ブロックベースのストレージでのページキャッシュの書き込みログのための様々な方法及び技術を示す高レベルのフローチャートである。
【図７】いくつかの実施形態による、ページキャッシュの書き込みログからのページキャッシュ回復をするための様々な方法及び技術を示す、高レベルのフローチャートである。
【図８】いくつかの実施形態による、ページキャッシュの書き込みログを削除するための様々な方法及び技術を示す、高レベルのフローチャートである。
【図９】いくつかの実施形態による、ページキャッシュの書き込みログ技術を配備するための、様々な方法及び技術を示す高レベルのフローチャートである。
【図１０】いくつかの実施形態による、ストレージノードで保持されるデータボリュームのために耐久性特徴を動的に修正するための様々な方法及び技術を示す、高レベルのフローチャートである。
【図１１】いくつかの実施形態による、データボリュームにページキャッシュの書き込みログを行うことが有効か無効かを判定する、様々な方法及び技術を示す、高レベルのフローチャートである。
【図１２】いくつかの実施形態による、特定のデータボリュームの耐久性特徴により、特定のデータボリュームのためにストレージノードで書き込み要求を処理する、様々な方法及び技術を示す、高レベルのフローチャートである。
【図１３】いくつかの実施形態による、有効及び無効な書き込みログでデータボリュームを復旧するための、様々な方法及び技術を示す、高レベルのフローチャートである。
【図１４】いくつかの実施形態による、例示的な計算システムを示すブロック図である。
【発明を実施するための形態】
【０００４】
実施形態は、いくつかの実施形態及び説明図用に一例として本明細書で記載されているものの、当業者は、実施形態は記載される実施形態または図面に限定されないことを理解するであろう。図面及び詳細な説明は、開示された特定の形式の実施形態に限定することを意図せず、反対に添付の特許請求の範囲により規定されるように趣旨及び範囲内にある全ての修正、等価物及び代替物を網羅しようとするものであると理解すべきである。本明細書で使用された見出しは、組織の目的のためのみであり、記述の範囲または特許請求の範囲を限定するために使用されることを意図したものではない。本願の全体を通じて使用されるとき、「ｍａｙ」という語は、義務の意味（即ち必須を意味する）ではなく、許可の意味で使用されている（即ち、あることを行う可能性を有することを意味する）。同様に、「ｉｎｃｌｕｄｅ」、「ｉｎｃｌｕｄｉｎｇ」は、含んでいることを意味するが、これらに限定されない。
【０００５】
本明細書で記載されるシステム及び方法は、ブロックベースのストレージのためのページキャッシュの書き込みログを実装し得る。ブロックベースのストレージシステムは、典型的には、ページキャッシュを実装してページキャッシュにおいて保持されるデータボリュームに迅速に（システムメモリ中に）更新を格納する。最終的にはページキャッシュは、持続的ストレージに更新するためにブロックベースの記憶装置をフラッシュされ得る。しかしながら、システムメモリは、システム故障の場合には持続せず、ページキャッシュに格納されるのみの書き込みは耐久性がなく、失われる可能性がある。ページキャッシュの書き込みログは、ストレージノードに実装され、ページキャッシュにおけるデータの損失故障を起こした場合にページキャッシュの状態を保存し得る。いくつかの実施形態では、ページキャッシュの書き込みログは、同じストレージシステムで保持される異なるデータボリューム用に選択的に実装され得る。ページキャッシュの書き込みログが対応するデータボリュームに書き込みが有効か無効かを表す、それぞれのデータボリュームのための耐久性特徴は、ページキャッシュの書き込みログにログされる、新しい書き込み要求の量などの、ストレージシステムの様々な条件によって動的に修正され得る。
【０００６】
図１は、いくつかの実施形態による、ブロックベースのストレージのページキャッシュの書き込みログを示す一連のブロック図である。１０２に示されているように、ブロックストレージサーバ１００（図１４について下記に記載したシステム２０００のような汎用計算システムであり得る）は、ブロックストレージサーバに接続された１つ以上のブロックベースの記憶装置のデータボリューム１２０に格納し得る。データボリューム１２０への書き込み要求１４２は受信されると、Ｉ／Ｏマネージャ１０２は、並列で、またはほぼ並列で更新をページキャッシュ１４０中のそれぞれのページまたは入力１４６に、及びログレコードが書き込まれた１４４をページキャッシュの書き込みログ１３０に送信し、持続的記憶装置で実装され得る（ブロックベースの記憶装置を格納するボリューム１２０とは分離され得る）。様々な実施形態では、ログレコードは、特定のページまたはページキャッシュ１４０の入力に更新を記載し得る。いくつかの実施形態では、ログレコードは、連続してページキャッシュの書き込みログ１３０に格納され得る。ログレコード１４４の格納及びページキャッシュ１４６の更新に対応して、書き込み要求は認識され得る。その後、ページキャッシュ内のページは、ブロックベースの記憶装置のボリューム１２０を更新するためにフラッシュ１４８され得る。いくつかの実施形態では、ボリューム（単数または複数）１２０で持続されるページに更新を記載するログレコードは、再利用し追加のログレコードを格納するために利用可能であり得るように、ページキャッシュからのフラッシュオペレーション１４８に基づいて、ページキャッシュの書き込みログ１３０に格納されるログレコードは、削除または取り除かれ得る。
【０００７】
シーン１０４に示されているように、システム故障１５２はページキャッシュデータの損失という結果となる。したがって、持続的ストレージ中のボリューム（単数または複数）１２０にフラッシュされていない可能性があるページキャッシュデータにおける書き込み要求は失われる。いくつかの実施形態では、Ｉ／Ｏマネージャ１３２はページキャッシュの書き込みログ１３０からログレコード１３２を取得し、ページキャッシュに更新１３４をしてシステム故障の前にページキャッシュの状態を再格納し、結果としてページキャッシュデータのリカバリをする。
【０００８】
いくつかの実施形態では、ページキャッシュの書き込みログはボリュームベースごとに実装され得る。例えば、いくつかの実施形態では、ページキャッシュの書き込みログが有効か否かを示すデータボリュームのための耐久性特徴は、ストレージノードでの変更条件に合わせるために動的に修正され得る。いくつかの実施形態においては、例えば、Ｉ／Ｏマネージャ１０２は、ページキャッシュの書き込みログ１３０にログされる新規の書き込み要求の量を監視してよく、それぞれの１つ以上のデータボリューム１２０の１つ以上の耐久性特徴を動的に修正してよい。例えば、ページキャッシュの書き込みログが特定のデータボリューム１２０には無効である場合には、次に、データボリュームへの書き込み要求１４２は、ページキャッシュの書き込みログにおける更新を記載するログレコードを格納することなく、完了され得る（例えば、ページキャッシュ１４０が更新される）。同様に、ページキャッシュの書き込みログが有効である場合には、次に、ページキャッシュの書き込みログの有効に続いて受信された書き込み要求は、シーン１０２に示されているように、書き込みの完了を確認する前に、更新されてページキャッシュ１４０が実行され、ページキャッシュの書き込みログ１３０にログレコードが格納される。異なる耐久性特徴を有するデータボリュームのリカバリオペレーションは、いくつかの実施形態では、有効なページキャッシュの書き込みログを有するこれらのデータボリュームによって変化し、無効なページキャッシュの書き込みログを有するこれらのデータボリュームよりも、リカバリオペレーションをより迅速にまたはより後に受信して利用可能となり得る。
【０００９】
以上の説明は限定を意図するものではなく、単にブロックベースのストレージのページキャッシュの書き込みログの一例として提供されていることに留意されたい。種々なその他の構成要素が、ログ、リカバリまたは書き込み要求処理を開始または参加し得る。例えば、ストレージノードの数、データボリュームまたは耐久性の方法（例えば、多数のノードにおいてデータボリュームを複製する）のようなその他の相違点もまた、図１に図示されているものとは異なり得る。
【００１０】
本明細書は、ブロックベースのストレージサービスプロバイダの一般的な記載から始まり、ページキャッシュの書き込みログ及びデータボリュームのために耐久性特徴を動的に修正することを実装し得る。次に、異なる構成要素／モジュール、またはブロックベースのストレージプロバイダの一部として採用され得る構成要素／モジュールの配置を含む、ブロックベースのストレージサービスプロバイダの様々な実施例が記載されている。ページキャッシュの書き込みログ及びデータボリュームの耐久性特徴を動的に修正することを実装するいくつかの異なる方法及び技術が、次に記載され、そのいくつかは添付のフローチャートにて図示されている。最後に、様々な構成要素、モジュール、システム、デバイス及び／またはノードが実装され得る例示的な計算システムの記載が提供される。様々な実施例が明細書を通して提供される。
【００１１】
図２は、いくつかの実施形態による、スナップショットオペレーション中の最適化された書き込み性能を実装するブロックベースのストレージサービスを含む、多数のネットワークベースのサービスを実装するプロバイダネットワークを示すブロック図である。プロバイダネットワーク２００は、インターネット及び／またはその他のネットワークを介してクライアント２１０にアクセス可能な（様々な種類のクラウドベースのコンピューティングまたはストレージ）１つ以上のサービスを提供する会社または公的部門の組織のようなエンティティによって設定され得る。プロバイダネットワーク２００は、物理的及び／または仮想化コンピュータサーバ、記憶装置、ネットワーク機器等（例えば、図１４に関して以下に記載された計算システム２０００）のような、様々なリソースプールを提供する多数のデータセンタを含んでよく、プロバイダネットワーク２００によって提供されるインフラとサービスを実装し配布する必要がある。いくつかの実施形態では、プロバイダネットワーク２００は、仮想計算サービス２３０、ブロックベースのストレージサービス２２０及び（オブジェクト／キー値に基づいたデータストアまたは様々な種類のデータベースシステムのような様々なストレージの種類を含み得る）その他のストレージサービス２４０のようなストレージサービス並びに／または任意のその他の種類のネットワークベースのサービス２５０のようなコンピューティングリソースを提供し得る。クライアント２１０は、ネットワーク２６０を介するプロバイダネットワーク２００によって提供されるこれらの様々なサービスにアクセスし得る。同様に、ネットワークベースのサービスは、異なるサービスを提供するために、それら自体が互いに通信及び／または利用し得る。例えば、仮想若しくは物理的コンピュートインスタンスまたはストレージインスタンスのような、「インスタンス」と呼ばれる装置内のクライアント２１０に提供されるコンピューティングリソースは、特定のデータボリューム２２６を利用し、コンピュートインスタンスに仮想ブロックストレージを提供し得る。
【００１２】
前述したように、仮想計算サービス２３０はクライアント２１０に様々なコンピュートインスタンスを提供し得る。例えば、仮想コンピュートインスタンスは、特定の計算能力（種類及びＣＰＵ数、メインメモリのサイズ等を示すことによって特定化され得る）及び特定化されたソフトウェアスタック（例えば、ハイパーバイザの上部で順次稼働し得るオペレーティングシステムの特定のバージョン）を有する１つ以上のサーバを備え得る。異なる種類の計算装置の数は、汎用または専用コンピュータサーバ、記憶装置、ネットワークデバイス等を含む異なる実施形態では、単独で、または組み合わせて仮想計算サービス２３０のコンピュートインスタンスを実装するために使用され得る。いくつかの実施形態では、インスタンスクライアント２１０またはその他の任意のその他のユーザは、ネットワークトラフィックをコンピュートインスタンスに向けるよう構成（及び／または許可）され得る。様々な実施形態では、コンピュートインスタンスは、各種操作を実行するため持続的なブロックベースのストレージを取得するためにブロックベースのストレージサービス２２０により提供される１つ以上のデータボリューム２２６に接続またはマッピングし得る。
【００１３】
コンピュートインスタンスは、例えば、インスタンスにアクセスするためにクライアント２１０を要求せずに、クライアントのアプリケーションを実行するのに好適な、アプリケーションサーバインスタンス、Ｊａｖａ（商標）仮想マシン（ＪＶＭ）、汎用または専用オペレーティングシステム、Ｒｕｂｙ、Ｐｅｒｌ、Ｐｙｔｈｏｎ、Ｃ、Ｃ＋＋等のような変換またはコンパイルされたプログラミング言語を支援するプラットフォームまたはハイパフォーマンスのコンピューティングプラットフォームのような、様々に異なるプラットフォームを操作または実装し得る。いくつかの実施形態では、コンピュートインスタンスは予測された稼働率に基づいて異なる種類または構成を有する。特定のコンピュートインスタンスの稼働率は、インスタンスが確保される全時間に対する、インスタンスが作動される時間の割合として定義され得る。稼働率はまた、いくつかの実施態様においては、使用率とも称され得る。クライアントが、インスタンスが予約された（例えば、３０％〜３５％の年間予約）比較的わずかな時間にコンピュートインスタンスを使用したい場合にはクライアントは低稼働率のインスタンスとしてインスタンスを予約することを決め、関連する価格ポリシーにしたがって、割り引かれた時間当たりの利用料金を支払い得る。クライアントが、インスタンスが大半の時間、起動する必要がある定常状態の作業負荷を有すると予測する場合には、いくつかの実施形態では、価格ポリシーにしたがって、実際の利用時間数にかかわらず、時間当たりの料金は予約の全持続時間に対して課金され得るが、クライアントは高稼働率インスタンスを予約し、場合によってはさらに低い時間当たりの利用料金を支払う。価格ポリシーによって、中間稼働率インスタンスはいくつかの実施形態でもサポートされてよく、前払金額及び時間当たりの金額は、対応する高稼働率と低稼働率の費用との間になる。
【００１４】
コンピュートインスタンスの構成はまた、コンピュートインテンシブアプリケーション用の計算ワークロード（例えば、通信量の多いウェブアプリケーション、広告提供、バッチ処理、ビデオエンコーディング、分散分析、高エネルギー物理学、ゲノム解析、及び計算流体力学）、グラフィックインテンシブワークロード（例えば、ゲームストリーミング、３Ｄアプリケーションストリーミング、サーバサイドグラフィックワークロード、レンダリング、ファイナンシャルモデリング及びエンジニアリングデザイン）、メモリインテンシブワークロード（例えば、高性能データベース、分散メモリキャッシュ、メモリ内解析、ゲノムアセンブリ及び解析）、及びストレージ最適化ワークロード（例えば、データウェアハウジング及びクラスタファイルシステム）のような、汎用または専用のコンピュートインスタンスを含み得る。任意のその他の性能特徴と同様に、仮想ＣＰＵコア、メモリ、キャッシュ、ストレージの特定の数のようなコンピュートインスタンスのサイズ。コンピュートインスタンスの構成はまた、それらの位置も含み得る。特に、データセンタ、利用可能ゾーン、地理、位置等・・・及び（予約されたコンピュートインスタンスの場合には）予約期間の長さである。
【００１５】
様々な実施形態では、プロバイダネットワーク２００はまた、ストレージオペレーションを実行するためにブロックベースのストレージサービス２２０を実装し得る。ブロックベースのストレージサービス２２０は、ストレージシステムであり、多数の独立したストレージノード２２４ａ、２２４ｂ、２２４ｃ〜２２４ｎ（例えばサーバブロックデータストレージシステム）のプールで構成されており、１つ以上のデータボリュームのセットのデータボリューム（単数または複数）２２６ａ、２２６ｂ、２２６ｃ〜２２６ｎを格納するためのブロックレベルストレージを提供する。データボリューム２２６は、論理ブロックの連続的セットとして、特定のクライアントにマッピングされ、仮想ブロックベースのストレージ（例えば、ハードディスクストレージまたはその他の持続的ストレージ）を提供する。いくつかの実施形態では、データボリューム２２６は、スナップショットオペレーションまたは複製オペレーションのようなその他のブロックストレージオペレーションを実行するために、多数のデータチャンク（１つ以上のデータブロックを含む）に分かれ得る。
【００１６】
データボリューム２２６のボリュームスナップショットは、データボリューム２２６の状態の固定されたある時点での表示であり得る。いくつかの実施形態では、ボリュームスナップショット２４２は、データボリュームを保持するストレージノード２２４から遠隔で別のストレージサービス２４０のようなものに格納され得る。スナップショットオペレーションは、送信、コピー及び／または別の方法で、その他のストレージサービス２４０中の遠隔したスナップショットデータストアのような別のストレージ位置に所与のデータボリュームのスナップショットを保存するために実行され得る。
【００１７】
ブロックベースのストレージサービス２２０は、ブロックベースのストレージサービスコントロールプレーン２２２を実装してブロックベースのストレージサービス２２０のオペレーションを支援し得る。様々な実施形態では、ブロックベースのストレージサービスコントロールプレーン２２２は、仮想計算サービス２３０により提供されたコンピュートインスタンスで実行するプログラム、及び／またはプロバイダネットワーク２００内に配置されたその他のネットワークベースのサービス、及び／または必要に応じて１つ以上のその他のデータセンタ内に配置された計算システム（図示せず）、またはネットワーク２６０上で利用可能なプロバイダネットワーク２００外部のその他の計算システムのような、クライアントへのブロックデータストレージの可用性の管理を支援する。データボリューム２２６へのアクセスは、ブロックデータトランザクションインストラクションに対応して、プロバイダネットワーク２００内の内部ネットワークまたは外部のネットワーク２６０を介して提供され得る。
【００１８】
ブロックベースのストレージサービスコントロールプレーン２２２は、ユーザアカウントの管理（例えば、作成、削除、請求、集金等）を含むブロックレベルのストレージ機能の提供に関し、様々なサービスを提供し得る。ブロックベースのストレージサービスコントロールプレーン２２２は、さらに、構成要求に対応してデータボリューム２２６の作成、使用及び削除に関するサービスを提供し得る。ブロックベースのストレージサービスコントロールプレーン２２２もまたその他のストレージサービス２４０上でボリュームスナップショット２４２の作成、使用及び削除に関するサービスを提供し得る。ブロックベースのストレージサービスコントロールプレーン２２２もまた、性能の収集及び処理並びに、データボリューム２２６及びそれらのボリュームのスナップショット２４２の使用に関する監視しているデータに関するサービスを提供し得る。
【００１９】
プロバイダネットワーク２００もまた、上述のように別のストレージサービス２４０を実装し得る。その他のストレージサービス２４０は、ブロックベースのストレージサービス２２０によって提供されるように、類似または異なる種類のストレージを提供し得る。例えば、いくつかの実施形態では、その他のストレージサービス２４０はオブジェクトベースのストレージサービスを提供し、データオブジェクトのようなデータを格納または管理し得る。例えば、様々なデータボリューム２２６のボリュームスナップショット２４２は、特定のデータボリューム２２６のためのスナップショットオブジェクトとして格納され得る。その他のストレージサービス２４０に加えて、プロバイダネットワーク２００は、その他のネットワークベースのサービス２５０を実装してよく、これは、プロバイダネットワーク２００のその他のサービス（例えば、ブロックベースのストレージサービス２２０、仮想計算サービス２３０及び／またはその他のストレージサービス２４０）と同様に、様々に異なる種類の分析、計算、ストレージまたはその他のネットワークベースのシステムを含んでよく、クライアント２１０が様々なタスクを実行または要求することができる。
【００２０】
クライアント２１０は、ネットワークプロバイダ２００に要求を送信するよう構成可能な任意の種類のクライアントにまたがる。例えば、所与のクライアント２１０は、適切なバージョンのウェブブラウザを含んでもよく、またはプラグインモジュール若しくはウェブブラウザによって提供される、実行環境内へ若しくは実行環境内で延長として実行されるよう構成される他の種類のコードモジュールを含み得る。あるいは、クライアント２１０は、データベースアプリケーション（またはそのユーザインタフェース）、メディアアプリケーション、オフィスアプリケーション、コンピュートインスタンスを使用し得る任意のその他のアプリケーション、データボリューム２２６または様々なオペレーションを実行するためのプロバイダネットワーク２００におけるその他のネットワークベースのサービスのようなアプリケーションを包含し得る。いくつかの実施形態では、このようなアプリケーションは、ネットワークベースのサービスの要求を生成し処理するために、すべての種類のネットワークベースのデータに対するフルブラウザサポートを必ずしも実装せずに、十分なプロトコルのサポート（例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）の好適なバージョンに）を含み得る。いくつかの実施形態では、クライアント２１０は、Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ（ＲＥＳＴ）形式のネットワークベースのサービスアーキテクチャ、ドキュメント若しくはメッセージベースのネットワークベースのサービスアーキテクチャまたは別の好適なネットワークベースのサービスアーキテクチャによる、ネットワークベースのサービスの要求を生成するよう構成され得る。いくつかの実施形態では、クライアント２１０（例えば、計算クライアント）は、コンピュートインスタンスにより提供された計算リソースを利用して、またはデータボリューム２２６により提供されたブロックストレージを利用して、クライアント２１０に実装しているアプリケーションに透明である方法で、コンピュートインスタンスまたはデータボリューム２２６にアクセスを提供するよう構成され得る。
【００２１】
クライアント２１０は、外部のネットワーク２６０を介してプロバイダネットワーク２００にネットワークベースのサービスの要求を伝達し得る。様々な実施形態では、外部のネットワーク２６０は、クライアント２１０とプロバイダネットワーク２００との間のネットワークベースの通信を確立するのに必要なネットワークハードウェア及びプロトコルの任意の好適な組み合わせを包含し得る。例えば、ネットワーク２６０は、全体としてインターネットを包括的に実装する様々な電気通信ネットワークとサービスプロバイダを包含し得る。ネットワーク２６０はまた、公衆無線ネットワークシステムまたは私設無線ネットワークシステムと同様に、ローカルエリアネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）のようなプライベートネットワークを含み得る。例えば、所与のクライアント２１０及びプロバイダネットワーク２００の両方は、自身の内部ネットワークを有するエンタープライズ内でそれぞれプロビジョニングされ得る。このような実施形態では、ネットワーク２６０は、インターネットとプロバイダネットワーク２００と同様に、所与のクライアント２１０とインターネットとの間のネットワークリンクを確立するのに必要な、ハードウェア（例えば、モデム、ルータ、スイッチ、ロードバランサ、プロキシサーバ等）及びソフトウェア（例えば、プロトコルスタック、ソフトウェアの課金、ファイアウォール／セキュリティソフトウェア等）を含み得る。いくつかの実施形態では、クライアント２１０は、公衆インターネットよりもむしろプライベートネットワークを使用して、プロバイダネットワーク２００と通信し得ることに注意する。
【００２２】
図３は、いくつかの実施形態による、ストレージノードで実装されるページキャッシュに更新するために、ページキャッシュの書き込みログを実装するストレージノード及びデータボリューム用に耐久性特徴を動的に修正することを示すブロック図である。ストレージノード３１０ａ、３１０ｂ、３１０ｃから３１０ｎのような多数のストレージノードは、ブロックベースのストレージサービスを提供するために実装され得る。ストレージノード３１０は、ストレージサーバまたはその他の計算システム（例えば、図１４に関して以下に記載される計算システム２０００）のような、１つ以上の計算システムまたは計算装置であり得る。各ストレージノード３１０は、それぞれデータボリュームの複製を保持し得る。例えば、ストレージノード３１０ａは、データボリューム３１２ａ、３１２ｂ、３１２ｃ、３１２ｄから３１２ｎを保持し、ストレージノード３１０ｂは、データボリューム３１４ａ、３１４ｂ、３１４ｃ、３１４ｄから３１４ｎを保持し、ストレージノード３１０ｃはデータボリューム３１６ａ、３１６ｂ、３１６ｃ、３１６ｄから３１６ｎを保持し、ストレージノード３１０ｎは、データボリューム３１８ａ、３１８ｂ、３１８ｃ、３１８ｄから３１８ｎを保持する。ストレージノード３１０はデータボリュームの等しい数を有するものとして示されているが、ストレージノードに保持されるデータボリュームの数は、ストレージノード３１０からその他のストレージノード３１０の間で変化し得る。いくつかの実施形態では、いくつかのデータボリュームは、その他のデータボリュームとはサイズが異なり得る。ストレージノード３１０はまた、マルチテナントストレージを提供し得る。例えば、いくつかの実施形態では、ストレージノード３１０ｃにも保持されるデータボリューム３１６ｂは、異なるアカウントに保持され得るが、ストレージノード３１０ｃに保持されるデータボリューム３１６ａは、ブロックベースのストレージサービス２２０の１つのアカウントに保持され得る。ストレージノード３１０は、それぞれのストレージノードを実装する計算システムまたはデバイスに直接接続され得る、１つ以上のブロックベースの記憶装置におけるそれぞれのデータボリュームを持続し得る（例えば、ハードディスクドライブ、ソリッドステートドライブ等）。
【００２３】
ブロックベースのストレージサービス２２０は、様々に異なる方法でデータボリュームを管理し保持し得る。異なる耐久性の方法は、データボリュームの同じ複製を保持する２つ以上のストレージノードのうち、いくつかのデータボリュームのために実装され得る。例えば、異なる種類のミラーリング及び／または複製の技術は、データボリュームのために単一の破損箇所を削除することなどにより、データボリュームの耐久性を増強するよう実装され得る（例えば、ＲＡＩＤ  １）。データボリュームにアクセスを提供するために、ストレージノードは次に、データボリュームの複製を保持する２つ以上のストレージノードのうち書き込み要求のようなＩ／Ｏ要求を調整し得る。例えば、所与のデータボリューム３１２ａには、ストレージノード３１０ａはマスターストレージノードとして機能し得る。様々な実施形態では、マスターストレージノードは、データボリュームのクライアントから要求（例えば、Ｉ／Ｏ要求）を受信し処理する。したがって、ストレージノード３１０ａは次に、スレーブストレージノードとして機能する１つ以上のその他のストレージノードへの書き込み要求またはデータボリューム３１２ａへの任意のその他の変更または修正のようなＩ／Ｏ要求の複製を調整し得る。例えば、ストレージノード３１０ｃは、データボリューム３１２ａの複製であるデータボリューム３１６ｄを保持し得る。したがって、書き込み要求がストレージノード３１０ａでデータボリューム３１２ａのために受信されるとき、ストレージノード３１０ａは、ストレージノード３１０ｃに書き込み要求を送信し、ストレージノード３１０ｃが書き込み要求がストレージノード３１０で書き込み要求を完了する前に完了したと認識するまで待機し得る。マスターストレージノードは、スナップショット操作またはその他のＩ／Ｏ操作（例えば、読み取り要求を保存する）その他の操作を方向付け得る。
【００２４】
いくつかの実施形態では、マスターストレージノード及びスレーブストージノードの役割はデータボリューム毎に割り当てられ得る。例えば、ストレージノード３１０ａに保持されるデータボリューム３１２ａには、ストレージノード３１０ａはマスターストレージノードとして機能し得る。データボリューム３１２ｂのような別のデータボリュームは、ストレージノード３１０ａで維持され、ストレージノード３１０ａはスレーブストレージノードとして機能し得る。
【００２５】
様々な実施形態では、ストレージノード３１０はそれぞれのページキャッシュを実装し得る。ページキャッシュは、それぞれのストレージノードを保持されるデータボリューム３１２のうち１つからデータのページまたはその他のグルーピングを格納するシステムメモリの一部、またはその他の記憶装置であり得る。データボリュームの要求されたデータの一部を保持するブロックベースの記憶装置に直接書き込みまたは読み取りする代わりに、ページキャッシュは更新され得る。例えば、読み取り要求がデータボリュームの一部のために受信されると、データがページキャッシュにあるか否かを最初に判定され得る。はいの場合には、データはページキャッシュから読み取りされ得る。いいえの場合には、データはデータボリュームの要求されたデータの一部及び将来使用ページキャッシュに書き込みするために保持し、それぞれのブロックベースの記憶装置から検索され得る。同様に、書き込み要求は、永続的なブロックストレージに保持されるデータボリュームに向けられ、ページキャッシュで最初に完了され得る。受信された書き込み要求には、書き込まれるデータに対応するページキャッシュのエントリは、（例えば、データボリュームの一部はすでにページキャッシュに保持される）は、書き込み要求により更新され得る。同様に、書き込み要求により修正されるデータがページキャッシュにない場合には、データは、データを持続するブロックベースの記憶装置から最初に取得され、ページキャッシュに新しいページキャッシュエントリを書き込まれ、次に書き込み要求により更新される。ページキャッシュの技術は当業者によく知られ、そのため前述の実施例はその他のページキャッシュの技術に限定されることを意図していない。
【００２６】
様々な実施形態では、ストレージノード３１０は、ページキャッシュの書き込みログ３２０ａ、３２０ｂ、３２０ｃから３２０ｎのようなそれぞれのページキャッシュの書き込みログを実装し得る。ページキャッシュの書き込みログは、ページキャッシュ３３０に保持されるデータを修正する書き込み要求のような、それぞれのページキャッシュに更新を記載するログレコードを格納し得る。したがって、ページキャッシュ３３０でデータの損失を起こすシステムまたはその他の故障の場合、ページキャッシュの書き込みログ３２０中のログレコードは、ページキャッシュを損失の前の状態に戻すために使用され得る。いくつかの実施形態では、ログレコードは、ページキャッシュ３３０に行われた更新の順によって連続して格納され得る。例えば、書き込み要求１Ａが受信され、実行されると、対応するログレコード１Ａが格納される。次に、書き込み要求１Ｂが受信され、実行されると、対応するログレコード１Ｂが格納等される。ログレコードが連続して格納されることにより、ログレコードは、特定の時点でのページキャッシュの状態を生成するために格納され得る順で再生または再適用され得る。
【００２７】
さらに、ログレコードを連続して格納することで、ログレコードを格納するためのライトレイテンシを減少し得る。ページキャッシュの書き込みログ３２０は、持続的記憶装置（例えば、ハードディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、またはその他のブロックベースの記憶装置）として実装し得る。いくつかの実施形態では、ページキャッシュの書き込みログ３２０は、不揮発性ランダムアクセスメモリ（ＮＶ  ＲＡＭ）、バッテリ若しくは容量をバックアップされたメモリ、またはその他の種類のメモリスタベースの抵抗ランダムアクセスメモリ（ＲｅＲＡＭ）、三次元ＮＡＮＤ技術、強誘電体ＲＡＭ、磁気抵抗性ＲＡＭ（ＭＲＡＭ）、または様々な種類の相変化メモリ（ＰＣＭ）のいずれかのような、持続的なメモリデバイス上で実装され得る。連続的にこのような種類の持続的記憶装置への書き込みは、多くの場合ランダムアクセス書き込みよりも速い。様々な実施形態では、ページキャッシュの書き込みログ３２０はストレージノード用の専用のブロック記憶装置上に実装され得る。ページキャッシュの書き込みログを保持する持続的記憶装置は、いくつかの実施形態では、ストレージノードでデータボリュームを保持するブロックベースの記憶装置から分離され得る。
【００２８】
ストレージノード３１０は、Ｉ／Ｏマネージャ３４０ａ、３４０ｂ、３４０ｃ〜３４０ｎのようなそれぞれのＩ／Ｏマネージャを実装し得る。Ｉ／Ｏマネージャ３４０は、特定のストレージノードで保持されるデータボリュームに向けたＩ／Ｏ要求を対処し得る。したがって、Ｉ／Ｏマネージャ３４０ｂは、例えば、ストレージノード３１０ｂでボリューム３１４ｂに書き込み要求を処理し対処し得る。インターネットスモールコンピュータシステムインタフェース（ｉＳＣＳＩ）のようなブロックベースのストレージサービスアプリケーションプログラミングインタフェース（ＡＰＩ）及び／またはその他の通信プロトコルによって、Ｉ／Ｏマネージャ３４０は、Ｉ／Ｏ要求を処理するよう構成され得る。いくつかの実施形態では、Ｉ／Ｏマネージャ３４０はログ管理３４２ａ、３４２ｂ、３４２ｃから３４２ｎのようなログ管理コンポーネントをそれぞれ実装し得る。ログ管理コンポーネントは、少なくとも部分的にログレコードに基づいてログレコードを削除及び／またはページキャッシュのリカバリを実行するような、様々なログ管理機能を実行してよく、以下で図４、図７及び図８に関してさらに詳細に記載されている。
【００２９】
図４は、いくつかの実施形態による、ストレージノードでページキャッシュのために、ページキャッシュの書き込みログにおけるログ入力を削除するよう構成されたストレージノードを示すブロック図である。Ｉ／Ｏマネージャ４２０で実装されるログコントロールモジュール４２２は、ストレージノード４０２でページキャッシュの書き込みログ４００のためにログ操作を制御し得る。ログ管理モジュール４２２は、いつ削除操作（例えば、図８に関して以下に記載されるような削除イベントを検出すること）を実行するか判断し得る。ログ管理モジュールは、削除操作が始まる際にログ４００におけるポイントのようなログ４１２において削除ポイントを最初にマークし得る。網掛けされたログレコード４１０は、削除ポイント前に格納されたログレコードであり、したがって、削除されるべき対象である（ページキャッシュが全体的にフラッシュされる場合にはそのままである必要はないため）。ログ管理モジュール４１４は、ページキャッシュ４３０に指示してキャッシュフラッシュ４１４を開始する。１つ以上のフラッシュ操作は、ボリューム４４０ａ、４４０ｂから４４０ｎを保持するそれぞれのブロックベースの記憶装置に、ページキャッシュ入力４３２をフラッシュするために実行され得る。一旦ページキャッシュの入力がフラッシュされると、データボリューム４４０を保持するブロックベースの記憶装置は、ページキャッシュ４３０内に以前に格納された完了した書き込み操作を持続的に格納し得る。いくつかの実施形態では、ログ管理モジュール４２２は、フラッシュ操作のサイズを判定し、一度にページキャッシュの一部を増加または減少し得る。一旦キャッシュフラッシュが完了したという指示４１６が受信されると、ログ管理モジュールは、次に、ログの削除ポイント４１８の前のログレコードを取り戻し（例えば、削除し利用可能としてマークする）、追加のログレコード用にスペースを空ける。
【００３０】
図５は、いくつかの実施形態による、ブロックベースのストレージに保持されるデータボリュームのために、選択的ページキャッシュの書き込みログを示すブロック図である。いくつかの実施形態では、上述したようにページキャッシュの書き込みログはデータボリューム基準当たり有効または無効になり得る。Ｉ／Ｏマネージャ４２０で受信された書き込み５０２（単数または複数）は、ログ管理モジュール４２２を介して向けられ得る。ログ管理モジュール４２２は、（ページキャッシュの書き込みログが有効か無効かを示す）特定のデータボリューム用に耐久性特徴か否かを判定するよう構成され得る。例えば示されているように、ボリュームコントロール５２０ｂ及び５２０ｃは、ページキャッシュの書き込みログ４００に向かう書き込み要求５０４のためにページキャッシュログを防止する。耐久性特徴を有するデータボリュームに向けられるその他の書き込み５０４がページキャッシュの書き込みログを有効にする一方、５０６を通過し、ページキャッシュの書き込みログ４００にログレコード５０８として書き込まれる。
【００３１】
いくつかの実施形態では、ボリュームのログ管理４２２は、図１０及び図１１に関して以下に記載されるように、データボリュームのために耐久性特徴の動的修正を実行し得る。例えば、Ｉ／Ｏマネージャ４２０及び／またはログ管理モジュール４２２は、ログされる新規の書き込み要求の量を監視してよく、１つ以上のデータボリュームの耐久性特徴を新規の書き込み要求の量に基づいて動的に修正してよい。ログ管理４２２で受信されたコントロールプレーンデータ５１０のようなその他のデータは、また、ストレージノードで保持されるデータボリュームの１つ以上の同じ複製を保持する、その他のストレージノードのために耐久性特徴を示すデータのような、データボリュームのために耐久性特徴に動的修正を行うために使用され得る。
【００３２】
図２から図５に関して上述されたデータボリュームを保持するブロックベースのストレージへのページキャッシュの書き込みログの実施例は、ブロックベースのストレージサービスに関して行われている。ブロックベースのストレージの様々なその他の種類または構成はこれらの技術を実装し得る。例えば、ブロックベースのストレージのクライアント（アプリケーション、オペレーティングシステムまたはデータボリュームに書き込み要求を送信するその他のコンポーネント）は、スナップショットオペレーションを実行するストレージノードとして同じ計算システムで実装され得る。ストレージノードの異なる構成はまた、データボリュームのために様々に構成されたストレージノードによって実行される、ページキャッシュの書き込みログを実装し得る、様々な数の複製、ミラーリングまたはその他の耐久性技術を実装し得る。図６は、いくつかの実施形態による、ブロックベースのストレージでのページキャッシュの書き込みログのための様々な方法及び技術を示す高レベルのフローチャートである。これらの技術は、図２から図５に関して上述したように、１つ以上のストレージノード（またはブロックベースのストレージでデータボリュームを保持するその他のシステムコンポーネント）を使用して実装され得る。
【００３３】
６１０で示されているように、様々な実施形態では、ストレージノードで保持されるブロックベースの記憶装置中のデータボリュームへの書き込み要求は受信され得る。書き込み要求は、書き込み、削除、変更または他の方法でデータボリュームを修正し得る。６２０で示されているように、修正されたデータに対応する入力は、書き込み要求のためにストレージノードでシステムメモリにおけるページキャッシュで更新され得る。同様に、並行して、またはほぼ並行で、ページキャッシュの書き込みログにおける対応する入力への更新を記載するログレコードは格納され得る。例えば、ログレコードは修正または新規データの正確な値を含むか、または更新が誘導されることが可能な値を含み得る（例えば、値＋１の前）。ページキャッシュ中の対応する入力の更新及びページキャッシュの書き込みログの対応する入力への更新を記載しているログレコードの格納に対応して、書き込み要求は６４０で示されているように完了したものとして認識され得る。いくつかの実施形態においては、ページキャッシュは、入力がフラッシュ操作の一部としてデータボリュームの更新された部分を保持する持続的記憶装置に書き込まれた時点まで更新された入力を保持し得る。
【００３４】
上述したように、ページキャッシュの書き込みログの持続的なログレコードは、ページキャッシュの状態が、システム故障がページキャッシ中のデータ損失を起こす前にページキャッシュに再格納させるようにする。図７は、いくつかの実施形態による、ページキャッシュの書き込みログからのページキャッシュ回復をするための様々な方法及び技術を示す、高レベルのフローチャートである。７１０で示されているように、システム故障からの復旧はストレージノードで起こり得る。システム故障は一般に、停電またはソフトウェア故障などのシステムメモリ中のページキャッシュ内のデータ損失を起こす任意の故障であり得る。復旧の際には、ページキャッシュの状態を記載しているページキャッシュの書き込みログを格納する持続的記憶装置に格納されたログレコードは、７２０で示されているように取得され得る。例えば、ログレコードは、１つ以上の異なる復旧操作、手順または処理の一部として、データボリュームを保持するストレージノードのためにページキャッシュログから連続して読み取られ得る。
【００３５】
７３０で示されているように、ページキャッシュの書き込みログから得られるログレコードは、システム故障の前にページキャッシュの状態をページキャッシュに書き込むように適用され得る。例えば、ログレコードがページキャッシュログへの更新を記載するように、いくつかの実施形態では、ログレコードは連続して再生され、ページキャッシュの状態を再格納するためにページキャッシュへの更新を再作成し得る。いくつかの実施形態では、ログレコードはページキャッシュの書き込みログ中の、前のログレコードに独立または依存し得る。一旦再格納されると、ストレージノードはいくつかの実施形態では、Ｉ／Ｏ要求を処理するために利用され得る。
【００３６】
様々な実施形態においては、時間の経過とともに、書き込み要求が非常に頻繁に起こり得るため、大きなページキャッシュの書き込みログでも一杯になる可能性がある。図８は、いくつかの実施形態による、ページキャッシュの書き込みログを削除するための様々な方法及び技術を示す、高レベルのフローチャートである。８１０で示されているように、削除イベントは、ストレージノード用のページキャッシュに更新を記載するログレコードを保持するページキャッシュログのために検出され得る。削除イベントは、ページキャッシュの書き込みログ中の利用可能なストレージ空間がある閾値を超えたとの識別または判断であり得る。その他の識別または判断は追加的に、または代替的に使用され得る。例えば、以前の削除イベントから一定の時間が経過したとのタイマーまたは指示は、削除イベントを誘発し得る。いくつかの実施形態では、削除イベントは、連続的なページキャッシュの書き込みログ中のログレコードの連続部分が持続する必要がもはやなくてよいように、ダーティページのページキャッシュのフラッシュが発生したことを検出され得る。
【００３７】
ページキャッシュログのための削除イベントを検出するのに対応して、ページキャッシュログの削除位置が識別され得る。削除位置は、削除イベントの時間のログの現在の位置であり得る。削除イベントの位置は、削除が実行されている間にどこかに保存または記録され得る。８３０で示されているように、様々な実施形態では、フラッシュ操作は、システムメモリからデータボリュームを格納するブロックベースの記憶装置へページキャッシュの入力を書き込むように実行され得る。フラッシュ操作はページキャッシュのコンテンツの一部をブロックベースの記憶装置中の対応する位置に書き込み得る。いくつかの実施形態では、修正された（すなわち、ダーティ）ページキャッシュの一部のみがフラッシュされ得る。
【００３８】
少なくともいくつかの実施形態においては、ページキャッシュのフラッシュ操作のサイズに関する決定が行われ得る。例えば、フラッシュ操作のパフォーマンスの間、フラッシュされたページキャッシュの一部への書き込み要求がブロックされる。フラッシュされるボリュームの一部のサイズは、速度により調節されてよく、ブロックされる特定の書き込み要求に加えられるレイテンシと対照的に、ログは削除される必要がある。例えば、書き込み要求が、フラッシュ操作のフラッシュされた領域内のページキャッシュの一部に書き込まれる場合には、次にフラッシュされる領域の一部のサイズは、特定の書き込み要求がブロックされ得る可能性を上げるか下げるかによって、待機中の書き込み要求へのレイテンシを増加または減少し得る。フラッシュ操作を完成すると、ページキャッシュログを保持する持続的記憶装置の一部は、８４０で示されているように、ページキャッシュへの更新を記載している追加のログレコードのために取り戻され得る。
【００３９】
いくつかの実施形態では、コントロールプレーンまたはその他のシステムコンポーネントは、配置、実装及び／またはブロックベースのストレージ内のデータボリュームを保持するストレージノードのためのページキャッシュの書き込みログを有効にするよう命令し得る。図９は、いくつかの実施形態による、ページキャッシュの書き込みログ技術を配備するための、様々な方法及び技術を示す高レベルのフローチャートである。９１０で示されているように、ブロックベースのストレージシステムにおけるストレージノードは、ページキャッシュの書き込みログを保持しないと識別され得る。例えば、システムレベルメタデータは、ページキャッシュの書き込みログが実装されるか否かを含む、バージョン、構成またはストレージノードの状態を示して保持され得る。９２０にて示されているように、識別されたストレージノードは、各ストレージノード用に耐久性スコアを判定するために評価され得る。例えば、特定のストレージノードがデータセンタまたはその他の停電し易い物理的あるいは地理的な位置において実装されると、このような情報はストレージノードへの耐久性スコアを下げ得る。同様に、同じデータセンタまたは地理的な位置におけるピアの大部分がページキャッシュの書き込みログを実装すると、耐久性スコアは次に上昇され得る。ストレージノードに保持されるデータボリュームの大部分が有効なページキャッシュの書き込みログを備えるその他のストレージノード上の複製を有するかどうかなど、多くのその他の要因が、ストレージノードに対する耐久性スコアに影響し得る。これらの各種要因の異なる重み付け、組み合わせまたはその他の計算は、特定のストレージノードへの耐久性スコアを判定するために使用され得る。したがって、以前の実施例は、耐久性スコアに影響し得る様々なその他の要因を限定することを意図しない。
【００４０】
様々な実施形態では、９３０にて示されているように、ストレージノードの耐久性スコアに基づいて、１つ以上のストレージノードはページキャッシュの書き込みログを実装するために選択され得る。このような選択は、様々に異なるブロックベースのストレージサービスの管理または異なる通信機構による管理インタフェースに提供され得る。いくつかの実施形態では、図９に示されている技術は、定期的に実行されるか、定期的にブロックベースのストレージサービスを実装するストレージノードの所与のサブセット（例えば、特定の余地、データセンタまたはその他の地理的位置またはグルーピング）またはブロックベースのストレージサービスを実装するストレージノードの全体のフィートに定期的に実装され得る。図９における方法の各反復は、いくつかの実施形態では、配置の事前定義された数を割り当てられてよく、したがって、ストレージノードは利用可能な配置の数が割り当てられるまで耐久性スコアに基づいて選択され得る。
【００４１】
様々な実施形態では、ページキャッシュの書き込みログは、ストレージノードで保持されるデータボリュームの耐久性を増し得る。ページキャッシュの書き込みログにおけるログレコードを格納することにより、ページキャッシュの状態はシステム故障の場合再格納されることが可能であり得る。しかしながら、いくつかの実施形態では、ページキャッシュの書き込みログを実行する増加された負荷は、ページキャッシュの書き込みログを保持し、書き込み要求の効率を妨げる持続的記憶装置の能力を超え得る。より細粒度のあるページキャッシュの書き込みログにすることで、ストレージノードの耐久性を最大化させ、レイテンシを最小化させるようパフォーマンスを効果的に調整することができる。図１０は、いくつかの実施形態による、ストレージノードで保持されるデータボリュームのために耐久性特徴を動的に修正するための様々な方法及び技術を示す、高レベルのフローチャートである。
【００４２】
様々な実施形態では、１０１０に示されているように、ページキャッシュに更新を記載するログレコードを格納するページキャッシュの書き込みログは、多数のデータボリュームを保持するストレージノードで受信される書き込み要求のために保持され得る。ページキャッシュの書き込みログは、上述のように持続的記憶装置に保持され得る。持続的記憶装置はハードディスクドライブまたはソリッドステートドライブのようなブロックベースの記憶装置であり得る。いくつかの実施形態では、持続的記憶装置は、不揮発性のランダムアクセスメモリデバイス（ＮＶ−ＲＡＭ）であり得る。ログレコードはライトレイテンシを減少するために、連続して持続的記憶装置に書き込まれ及び／または格納され得る。異なるデータボリューム用のログレコードは、いつ書き込み要求を実行してページキャッシュを更新したかに基づいて格納され、いくつかの実施形態では、同じデータボリュームにログレコードでグルーピングされるか格納されない場合がある。
【００４３】
様々な実施形態では、１０２０に示されているように、ページキャッシュの書き込みログにログされるべきストレージノードへの新規の書き込み要求の量は、監視され得る。図１１に関して以下に記載されるように、いくつかの実施形態では、この書き込み要求の量は、ログされるべき時間内に受信された書き込み要求の数の単純な測定である。この書き込み要求の量はまた、書き込み要求を実行するために実行される作業の量を示す測定に変換され得る（例えば、毎秒の入力／出力操作（ＩＯＰＳ））。様々な実施形態では、書き込み要求の監視は、連続的に、定期的にまたは不定期に実行され得る。
【００４４】
１０３０に示されているように、少なくとも部分的にログされるべきストレージノードへの新規の書き込み要求の量に基づいて、１つ（またはそれ以上）のデータボリュームの耐久性特徴は動的に修正され得る。様々な実施形態では、耐久性特徴は、ページキャッシュの書き込みログがデータボリュームで有効か無効かを示し得る。したがって、耐久性特徴を修正することにより、特定のデータボリュームに対する書き込み要求は、書き込み要求が受信される時間でデータボリュームの耐久性特徴の現在の状態に応じて、ログされるか、またはログされなくてよい。いくつかの実施形態では、動的修正はストレージノードで保持されるデータボリュームのすべてを含み得る。例えば、いくつかの実施形態では、ページキャッシュの書き込みログは、データボリュームには無効（または有効）であり得る。
【００４５】
ストレージノードへの新規の書き込み要求の量を監視することで、受信された書き込み要求の数の激増または激減のような条件の変化にストレージノードが適合することができる。図１１は、いくつかの実施形態による、データボリュームにページキャッシュの書き込みログを行うことが有効か無効かを判定する、様々な方法及び技術を示す、高レベルのフローチャートである。新規の書き込み要求の量は、ストレージノードで保持されるデータボリュームのために、改善策を行ったり、性能及び／または耐久性を最大化するために使用され得る。
【００４６】
１１１０に示されているように、ページキャッシュの書き込みログにログされるべきストレージノード１１０への新規の書き込み要求の量は、决定され得る。いくつかの実施形態では、この書き込み要求の量は、時間内に受信された書き込み要求の数の単純な測定でもよい。この書き込み要求の量はまた、書き込み要求を実行するために実行される作業の量を示す測定に変換され得る（例えば、毎秒の入力／出力操作（ＩＯＰＳ））。一旦决定されると、１１２０に示されているように、新規の書き込み要求の量はログの書き込み要求の量の上限と比較され得る。いくつかの実施形態では、ログの書き込み要求の量の上限は、ページキャッシュの書き込みログを実装する持続的記憶装置の、あるスループット能力に対応して决定されるか構成され得る。例えば、ハードディスクドライブが最大８０００ＩＯＰＳで実行できる場合には、次にログの書き込み要求の量の上限は、ハードディスクドライブのある数で、または最大スループット未満で決定され得る（例えば、７０００ＩＯＰＳ）。いくつかの実施形態では、ログの書き込み要求の量の上限は、耐久性特徴の動的修正の時間を現在の書き込み要求の量に下げることを可能にするために、デバイスのスループット能力を超えることなく、持続的記憶装置の最大スループットよりも低く設定され得る（書き込み要求がページキャッシュの書き込みログが追いつくまでブロックされ得るため、ログレコードの損失またはブロックされた書き込み要求を起こし得る）。
【００４７】
新規の書き込み要求の决定される量がログの書き込み要求の量の上限を超える場合には、１１２０から正の出口によって示されるように、１つ以上のデータボリュームの選択は、ログの書き込み要求の量の上限未満でログされる新規の書き込み要求の量を下げるために、選択されるデータボリューム用のページキャッシュの書き込みログを無効にするために行われ得る。データボリュームの選択は、現在ページキャッシュの書き込みログを有効にされたストレージノードでデータボリュームから作られ得る。例えば、１０のうち８のデータボリュームは有効なページキャッシュの書き込みログを有し、選択は１０のうち８のデータボリュームから行われ得る。
【００４８】
この選択はいくつかの異なる要因に基づいて行われ得る。例えば、この選択は各データボリュームのサイズに基づいて行われ得る。例えば、最大のデータボリュームは、書き込み要求の不均衡な量を受信し得る。この選択はまた、特定のデータボリュームに向かう書き込み要求の数に基づいて行われ得る。例えば、データボリュームが小さいが頻繁に書き込み要求を受信すると、小さなデータボリュームは書き込み要求の量の上限を超えてログされる新規の書き込み要求の量をプッシュし得る。これらの及び様々なその他の要因に基づいて、１つ以上のデータボリュームは選択され得る。例えば、データボリュームは、各データボリュームに関連する書き込み要求の推定された量を有し得る。データボリュームは、選択されたデータボリュームのための推定された書き込み要求の量が新規の書き込み要求の量を受け入れ可能な量に下げるまで選択され続け得る。いくつかの実施形態では、データボリュームの順序または優先スキームは、あるデータボリュームを選択するためにその他に実行され得る。例えば、いくつかの実施形態では、その他のストレージノードで保持されるデータボリュームの複製の耐久性特徴が知られ得る。したがって、特定のデータボリュームが別のデータボリュームよりも多い数の書き込み要求を有するが、特定のデータボリュームはまた本ストレージノード（そして複製が保持されるその他のストレージノードではない）でのページキャッシュの書き込みログのみ有する場合には、特定のデータボリュームは次に、選択するための順序または優先スキームにおいて除外または下げられ得る。一旦選択されると、１１４０で示されているように、選択されたデータボリュームに対するページキャッシュの書き込みログが無効になり得る。
【００４９】
いくつかの実施形態では、ページキャッシュの書き込みログにログされるべき新規の書き込み要求の量は、また、１１５０にて示されているように、ログの書き込み要求の量の下限と比較され得る。前述の分析と同様に、ログの書き込み要求の量の上限に関して、ログの書き込み要求の量の下限は、ストレージノードが追加するために、ページキャッシュの書き込みログを有効にすることが可能であり得る、新規の書き込み要求の量を示し得る。例えば、ログの書き込み要求の量の下限は、可能性が高くまたは履歴的に平均データボリュームがログの書き込み要求の量の上限１１２０を超えずに有効な書き込みログを有し得ることをログの書き込み要求の量の下限未満の量が示すように、ボリューム当たりの書き込み要求の平均数に基づいて决定または設定され得る。
【００５０】
データボリューム（または複数のデータボリューム）の選択は、無効なページキャッシュの書き込みログを有するデータボリュームから行われ得る。上述のように、この選択は各データボリュームのサイズに基づいて行われ得る。例えば、最小のデータボリュームは、不均衡な小量の書き込み要求を受信し得る。この選択はまた、特定のデータボリュームに向かう書き込み要求の数に基づいて行われ得る。例えば、データボリュームが大きいが頻繁に書き込み要求を受信すると、大きなデータボリュームはログの書き込み要求の量の上限を超えてログされる新規の書き込み要求の量をプッシュされなくてよい。１１６０にて示されているように、これらの及び様々なその他の要因に基づいて、１つ以上のデータボリュームは選択され得る。例えば、データボリュームは、各データボリュームに関連する書き込み要求の推定された量を有し得る。データボリュームは、選択されたデータボリュームのための推定された書き込み要求の量が新規の書き込み要求の量をログの書き込み要求の量の下限より上に上げるまで選択され続け得る。いくつかの実施形態では、データボリュームの順序または優先スキームは、あるデータボリュームを選択するためにその他に実行され得る。例えば、いくつかの実施形態では、その他のストレージノードで保持されるデータボリュームの複製の耐久性特徴は知られ得る。したがって、特定のデータボリュームが別のデータボリュームよりも多い数の書き込み要求を有するが、特定のデータボリュームがまた任意のストレージノードで有効なページキャッシュの書き込みログを有しない（データボリュームの複製が保持される）場合には、次に特定のデータボリュームは選択するための順位または優先スキームを優先し得る。一旦選択されると、１１７０で示されているように、選択されたデータボリュームに対するページキャッシュの書き込みログが有効になり得る。
【００５１】
様々な実施形態では、新規の書き込み要求の量が監視されつつ、１１５０から１１１０への負の出口は、この評価は繰り返し実行され得ることを示す。このように、データボリュームの耐久性特徴の調整は時間の経過とともに行われ得る。
【００５２】
ストレージノードで保持されるデータボリュームの耐久性特徴は、時間の経過とともに動的に変化され、同じデータボリュームへの書き込み要求は一度にページキャッシュの書き込みログで処理され、別の時点でページキャッシュの書き込みログなしで処理され得る。図１２は、いくつかの実施形態によると、特定のデータボリュームの耐久性特徴により、特定のデータボリュームのためのストレージノードで書き込み要求を処理する、様々な方法及び技術を示す、高レベルのフローチャートである。
【００５３】
１２１０にて示されているように、書き込み要求はデータボリュームのために受信され得る。メタデータまたはその他の情報は、データボリュームの耐久性特徴を示すストレージノードで保持され得る。１２２０にて示されているように、メタデータは、ページキャッシュの書き込みログがデータボリュームに対して有効であるか否かを決定するために評価され得る。はいの場合には、次に１２５０にて示されているように、ページキャッシュは書き込むために更新され、ページキャッシュへの更新を記載しているログレコードは、１２６０にて示されているように、ストレージノードでページキャッシュの書き込みログに格納され得る。図６に関して前述されるように、いくつかの実施形態では、書き込み１２５０に対するページキャッシュへの更新及びページキャッシュの書き込みログ１２６０のログレコードの格納は、並行またはほぼ並行して実行され得る（例えば、同時に開始されるが、１つの操作はその他の操作の前に終了する）。一旦ページキャッシュが更新されログレコードが格納されると、１２７０にて示されているように、書き込み要求は完了したと認識され得る。ページキャッシュの書き込みログがデータボリュームに有効ではない場合には、１２２０から負の出口によって示されるように、ページキャッシュは次に、１２３０に示されるように書き込み要求に対し更新され、書き込み要求は１２４０にて示されているようにページキャッシュの書き込みログ内のログレコードを格納することなく完了したと認識され得る。
【００５４】
図７に関して上述されるように、ページキャッシュの書き込みログ中のログレコードは、システム故障の前にページキャッシュの状態をページキャッシュに再格納するために再生され得る。このように、ページキャッシュはデータボリュームを保持するブロックベースの記憶装置にページキャッシュ入力をまだフラッシュされなくてよいが、完了したと認識された書き込み要求は損失されなくてよい。したがって、データボリュームの現在のバージョンはブロックベースの記憶装置に格納されたように、及びページキャッシュの書き込みログに記載されるように、データボリュームに基づいて維持され得る。ページキャッシュの書き込みログは有効でありストレージノードの特定のデータボリュームには無効であり得るため、ストレージノードのいくつかのデータボリュームは最新であり、一方、その他のものは最新ではない。図１３は、いくつかの実施形態によると、書き込みログを行うことを有効及び無効にする、様々な方法及び技術を示す、高レベルのフローチャートである。
【００５５】
１３１０で示されているように、ストレージノードはシステム故障から復旧し得る。ストレージノードは多数のデータボリュームを保持し得る。追加の復旧操作を実行するために、データボリュームは、有効なページキャッシュの書き込みログを有するデータボリュームを識別するために評価され得る。１３２０にて示されているように、特定のデータボリュームが選択され得る。１３３０にて示されているように、データボリュームのための耐久性特徴は、ページキャッシュの書き込みログがデータボリュームに対し有効か否かを判断するために使用され得る。はいの場合には、正の出口によって示されるように、１３５０にて示されているように、データ領域は最新のものとして識別され、１３６０にて示されているように、Ｉ／Ｏ要求に利用可能にし得る。例えば、特定のデータボリュームが最新のものと識別された場合には、次にブロックストレージサービスのコントロールプレーンまたはストレージサービス自体は、データボリュームのマスターストレージノードとして、ストレージノードを識別するように、耐久性スキームでのデータボリュームの新しい役割を識別し得る。識別されたマスターストレージノードは、次に１つ以上のスレーブストレージノードを取得してデータボリュームの新しい複製を保持し、データボリュームを複製してスレーブストレージノードにする。あるいは、いくつかの実施形態では、ストレージノードは、任意のピアまたはスレーブストレージノードの取得をせずに、最新のデータボリュームのためのＩ／Ｏ要求を処理し始めてよい。現在のデータボリュームのための任意のその他の復旧操作は、また、Ｉ／Ｏ要求に対するデータボリュームを準備するために実行され得る。しかしながら、１３３０からの負の出口によって示されているように、ページキャッシュの書き込みログはデータボリュームには有効ではない場合には、次にデータボリュームは１３４０で示されているように、最新のものではないと識別され得る。現在のものではないデータボリュームは、データボリュームの現在のバージョンを保持するか否かを識別するために、データボリュームの複製を保持する別のストレージノードを待機するなどの余剰の復旧操作を受け得る。いくつかの実施形態では、最新のものとして識別されていないデータボリュームは、ストレージノードのブロックベースの記憶装置から削除または除去され得る。
【００５６】
本明細書に記載の方法は、様々な実施形態では、ハードウェアとソフトウェアとの任意の組み合わせによって実装され得る。例えば、一実施形態では、本方法は、プロセッサに連結されるコンピュータ可読記憶媒体に格納されるプログラムインストラクションを実行する１つ以上のプロセスを含むコンピュータシステム（例えば、図１４でのコンピュータシステム）によって実装され得る。プログラムインストラクションは、本明細書で記載される機能を実装するよう構成され得る（例えば、本明細書に記載されるブロックベースのストレージサービスを実装するもののような様々なサーバの機能、ストレージノード、コントロールプレーン、マネージャ及び／またはその他のコンポーネント）。図面に示され、本明細書で記載された、様々な方法は、例示的な実施形態の方法を表す。任意の方法の順序は変更されてよく、様々な要素が追加され、順序が変更され、組み合わされ、省略され、修正等され得る。
【００５７】
本明細書で記載されるブロックベースのストレージ用のページキャッシュの書き込みログの実施形態は、１つ以上のコンピュータシステム上で実行されてよく、様々なその他のデバイスと相互作用し得る。図１４は、様々な実施形態による、例示的なコンピュータシステムを示すブロック図である。例えば、コンピュータシステム２０００は、異なる実施形態において、ストレージ及び／またはコンピュータクラスタのコンピュータノード、データストア並びに／またはクライアントを実装するよう構成され得る。コンピュータシステム２０００は、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノート型コンピュータ、メインフレームコンピュータシステム、手持ち型コンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、アプリケーションサーバ、記憶装置、電話、携帯電話、または一般に任意の種類の計算装置を含む、任意の様々な種類のデバイスであり得るがこれらに限定されない。
【００５８】
コンピュータシステム２０００は、入力／出力（Ｉ／Ｏ）インタフェース２０３０を介してシステムメモリ２０２０に連結される１つ以上のプロセッサ２０１０（単一またはマルチスレッドであり得る、マルチコアを含むもののいずれか）を含む。コンピュータシステム２０００は、さらに、Ｉ／Ｏインタフェース２０３０に連結されたネットワークインタフェース２０４０を含む。様々な実施形態では、コンピュータシステム２０００は、１つのプロセッサ２０１０を含む、単一プロセッサシステムまたは、いくつかのプロセッサ２０１０を含む、マルチプロセッサシステムであり得る（例えば、２、４、８または別の好適な数）。プロセッサ２０１０は、インストラクションを実行可能な任意の好適なプロセッサであり得る。例えば、様々な実施形態では、プロセッサ２０１０は、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣまたはＭＩＰＳ  ＩＳＡ、または任意のその他の好適なＩＳＡのような、任意の様々なインストラクションセットアーキテクチャ（ＩＳＡ）を実装する汎用または組込型プロセッサであり得る。マルチプロセッサシステムにおいては、プロセッサ２０１０のそれぞれは、一般に同じＩＳＡを実装し得るが必要ではない。コンピュータシステム２０００はまた、通信ネットワーク（例えば、インターネット、ＬＡＮ等）を介してその他のシステム及び／またはコンポーネントと通信するために１つ以上のネットワーク通信装置（例えば、ネットワークインタフェース２０４０）を含む。
【００５９】
図示された実施形態においては、コンピュータシステム２０００はまた、１つ以上の持続的記憶装置２０６０及び／または１つ以上のＩ／Ｏデバイス２０８０を含む。様々な実施形態では、持続的記憶装置２０６０は、ディスクドライブ、テープドライブ、ソリッドステートメモリ、その他の大容量記憶装置、ブロックベースの記憶装置、または任意のその他の持続的記憶装置に対応し得る。コンピュータシステム２０００（または分散アプリケーション若しくはその上で操作するオペレーティングシステム）は、所望により持続的記憶装置２０６０内のインストラクション及び／またはデータを格納し、必要に応じて格納されたインストラクション及び／またはデータを検索し得る。例えば、いくつかの実施形態では、コンピュータシステム２０００は、ストレージシステムサーバノードをホストし、持続的ストレージ２０６０はそのサーバノードに取り付けられたＳＳＤを含み得る。
【００６０】
コンピュータシステム２０００は、インストラクションを格納するよう構成された１つ以上のシステムメモリ２０２０及びプロセッサ２０１０（単数または複数）によってアクセス可能なデータを含む。様々な実施形態では、システムメモリ２０２０は、任意の好適なメモリ技術（例えば、１つ以上のキャッシュ、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ＤＲＡＭ、ＲＤＲＡＭ、ＥＤＯ  ＲＡＭ、ＤＤＲ  １０  ＲＡＭ、シンクロナスダイミックＲＡＭ（ＳＤＲＡＭ）、ラムバスＲＡＭ、ＥＥＰＲＯＭ、非揮発性／フラッシュタイプメモリ、または任意のその他の種類のメモリ）を使用して実装され得る。システムメモリ２０２０は、本明細書に記載される方法及び技術を実装するためにプロセッサ２０１０（単数または複数）によって実行可能なプログラムインストラクション２０２５を含み得る。様々な実施形態では、プログラムインストラクション２０２５は、プラットホームネイティブバイナリ、Ｊａｖａ（商標）バイトコードのような任意のインタプリタ言語、またはＣ／Ｃ＋＋、Ｊａｖａ（商標）等のような任意のその他の言語またはこれらの任意の組み合わせにおいてエンコードされ得る。例えば、図示された実施形態において、プログラムインストラクション２０２５は、異なる実施形態において、ストレージノードの機能を実装するために実行可能なプログラムインストラクションを含む。いくつかの実施形態では、プログラムインストラクション２０２５は、多数の分離したクライアント、ノード及び／またはその他のコンポーネントを実装し得る。
【００６１】
いくつかの実施形態では、プログラムインストラクション２０２５は、オペレーティングシステム（図示せず）を実装するために実行可能なインストラクションを含んでもよく、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ、Ｓｏｌａｒｉｓ（商標）、ＭａｃＯＳ（商標）、Ｗｉｎｄｏｗｓ（商標）等のような様々なオペレーティングシステムのいずれかであり得る。様々な実施形態によると、プログラムインストラクション２０２５のいずれかまたはその全ては、コンピュータプログラム製品、またはソフトウェアとして提供され、これはその上に格納されたインストラクションを有する非一時的コンピュータ可読記憶媒体を含んでもよく、プロセスを実行するためのコンピュータシステム（またはその他の電子装置）をプログラミングするために使用され得る。非一時的コンピュータ可読記憶媒体は、機械（例えば、コンピュータ）によって読み込み可能な形式（例えば、ソフトウェア、処理アプリケーション）で情報を格納するための任意の機構を含み得る。一般に、非一時的コンピュータがアクセス可能な媒体は、Ｉ／Ｏインタフェース２０３０を介してコンピュータシステム２０００に連結された、コンピュータ可読記憶媒体または磁気媒体若しくは光媒体等、例えばディスクまたはＤＶＤ／ＣＤ−ＲＯＭのようなメモリ媒体を含み得る。非一時的コンピュータ可読記憶媒体は、また、システムメモリ２０２０または別の種類のメモリのように、いくつかの実施形態におけるコンピュータシステム２０００中に含まれてよい、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等のような、任意の揮発性または不揮発性媒体を含み得る。その他の実施形態では、プログラムインストラクションは、ネットワークインタフェース２０４０を介して実装され得るようなネットワーク及び／または無線リンクのような通信媒体を介して伝達される、光、音声またはその他の形式の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）を使用して通信され得る。
【００６２】
いくつかの実施形態では、システムメモリ２０２０は、データストア２０４５を含み、これは本明細書で記載されているように構成され得る。一般的に、システムメモリ２０２０（例えば、システムメモリ２０２０内のデータストア２０４５）、持続的ストレージ２０６０及び／またはリモートストレージ２０７０は、データブロック、データブロックの複製、データブロックに関連するメタデータ及び／またはそれらの状態、設定情報並びに／または本明細書に記載された方法及び技術を実装する上で使用可能な任意のその他の情報を格納し得る。
【００６３】
一実施形態では、Ｉ／Ｏインタフェース２０３０は、ネットワークインタフェース２０４０またはその他の周辺インタフェースを介することを含む、プロセッサ２０１０と、システムメモリ２０２０と、システム内の任意の周辺装置との間のＩ／Ｏトラフィックを調節するよう構成され得る。いくつかの実施形態では、Ｉ／Ｏインタフェース２０３０は、１つのコンポーネント（例えば、システムメモリ２０２０）からデータ信号を変換するために、任意の必要なプロトコル、タイミングまたはその他のデータ変換を別のコンポーネント（例えば、プロセッサ２０１０）によって使用するのに適したフォーマットに実行し得る。いくつかの実施形態では、Ｉ／Ｏインタフェース２０３０は、例えば、周辺構成要素相互接続装置（ＰＣＩ）バス規格の変形またはユニバーサルシリアルバス（ＵＳＢ）規格のような、様々な種類の周辺のバスを通して取り付けられる装置への支援を含み得る。いくつかの実施形態では、Ｉ／Ｏインタフェース２０３０の機能は、例えば、ノースブリッジ及びサウスブリッジのように、２つまたはそれ以上の分離したコンポーネントに分かれ得る。また、いくつかの実施形態では、システムメモリ２０２０へのインタフェースのような、いくつかの、またはすべてのＩ／Ｏインタフェース２０３０の機能は、プロセッサ２０１０に直接組み込まれ得る。
【００６４】
ネットワークインタフェース２０４０は、コンピュータシステム２０００と、例えばその他のコンピュータシステム２０９０のようなネットワークに取り付けられたその他の装置との間でデータが交換されることができるように構成され得る。加えて、ネットワークインタフェース２０４０は、コンピュータシステム２０００と様々なＩ／Ｏデバイス２０５０及び／またはリモートストレージ２０７０との間で通信を可能にするよう構成され得る。いくつかの実施形態においては、入力／出力装置２０５０は、１つ以上のディスプレイターミナル、キーボード、タッチパッド、走査装置、音声または光学認識装置、または１つ以上のコンピュータシステム２０００によってデータを入力または検索するのに好適な任意のその他の装置を含み得る。多数の入力／出力装置２０５０は、コンピュータシステム２０００中に存在してよく、またはコンピュータシステム２０００を含む分散システムの様々なノードに分散され得る。いくつかの実施形態では、類似の入力／出力装置は、コンピュータシステム２０００から分離され、ネットワークインタフェース２０４０にわたるように、有線または無線接続を通してコンピュータシステム２０００を含む分散システムの１つ以上のノードと相互作用し得る。ネットワークインタフェース２０４０は、一般に１つ以上の無線ネットワークプロトコル（例えば、Ｗｉ−Ｆｉ／ＩＥＥＥ８０２．１１または別の無線ネットワーキング規格）を支援し得る。しかしながら、様々な実施形態では、ネットワークインタフェース２０４０は、例えばイーサネット（登録商標）ネットワークのその他の種類のような、任意の好適な有線または無線の一般的なデータネットワークを介して、通信を支援し得る。さらに、ネットワークインタフェース２０４０は、ファイバチャネルＳＡＮのようなストレージエリアネットワークを介して、または任意のその他の好適な種類のネットワーク及び／またはプロトコルを介して、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークのような、電気通信／電話網を介した通信を支援し得る。様々な実施形態では、コンピュータシステム２０００は、図１４の２０００に示されているもの（例えば、ディスプレイ、ビデオカード、オーディオカード、周辺装置、ＡＴＭインタフェース、イーサネットインタフェース、フレームリレーインタフェース等のようなその他のネットワークインタフェース）よりもより少ないまたは異なるコンポーネントを含み得る。
【００６５】
本明細書で記載される実施形態の分散システムのいずれか、またはコンポーネントのいずれかは、１つ以上のネットワークベースのサービスとして実装され得ることに注意する。例えば、コンピューティングサービス内の計算クラスタは、計算及び／またはストレージサービス並びに／または本明細書で記載された、ネットワークベースのサービスとしてクライアントに分散計算システムを用いたその他の種類のサービスを呈し得る。いくつかの実施形態では、ネットワークベースのサービスは、ネットワークにわたって相互使用可能な機械と機械との相互作用を支援するよう設計されたソフトウェア及び／またはハードウェアシステムによって実装され得る。ネットワークベースのサービスは、Ｗｅｂサービス記述言語（ＷＳＤＬ）のような、機械処理可能な形式で記載されたインタフェースを有し得る。その他のシステムは、ネットワークベースのサービスのインタフェースの記載によって規定される方法で、ネットワークベースのサービスと相互作用し得る。例えば、ネットワークベースのサービスは、その他のシステムが、特定のアプリケーションプログラミングインタフェース（ＡＰＩ）を呼び出し、定義し得る、様々な操作を定義し得るが、その他のシステムは様々な操作を要求する際に適合することが期待され得る。
【００６６】
様々な実施形態では、ネットワークベースのサービスは、パラメータ及び／またはネットワークベースのサービスの要求と関連するデータを含むメッセージの使用を通して要求または呼び出され得る。このようなメッセージは、拡張可能マークアップ言語（ＸＭＬ）のような特定のマークアップ言語によって初期化され、及び／または簡易オブジェクトアクセスプロトコル（ＳＯＡＰ）のようなプロトコルを使用してカプセル化され得る。ネットワークベースのサービスの要求を実行するために、ネットワークベースのサービスのクライアントは、要求を含むメッセージを組み立て、メッセージを、ハイパーテキスト転送プロトコル（ＨＴＴＰ）のような、インターネットベースのアプリケーション層転送プロトコルを使用して、ネットワークベースのサービスに対応するアドレス可能な終点（例えば、ユニフォームリソースロケータ（ＵＲＬ））に伝達し得る。
【００６７】
いくつかの実施形態では、ネットワークベースのサービスは、メッセージベースの技術よりもむしろ、Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ（“ＲＥＳＴｆｕｌ”）技術を使用して実装され得る。例えば、ＲＥＳＴｆｕｌの技術によって実装されたネットワークベースのサービスは、ＳＯＡＰメッセージ内にカプセル化されるよりもむしろ、ＰＵＴ、ＧＥＴまたはＤＥＬＥＴＥのようなＨＴＴＰの方法内に含まれるパラメータを通して呼び出され得る。
【００６８】
上述の実施形態はかなり詳細に記載してきたが、上述の開示が十分に理解されると、当業者に明白になり得るため、多数の変形及び変更が行われ得る。以下の特許請求の範囲は、すべてのこのような修正及び変更を含むと解釈されることを意図しており、したがって、上記の記載は制限を意味するよりもむしろ、例証としてみなされるべきである。
【００６９】
本開示の実施形態は、以下の条項を考慮して記載され得る。
１．ストレージノードを実装するシステムであって、
複数のデータボリュームを保持する複数のブロックベースの記憶装置と、
ページキャッシュを備えるシステムメモリであって、前記ページキャッシュは、前記複数のデータボリュームを持続的に更新するために、定期的にまたは不定期に前記複数のブロックベースの記憶装置にフラッシュされる前記システムメモリと、
前記ページキャッシュへの更新を記載する複数のログレコードを保持するページキャッシュの書き込みログを保持する持続的な記憶装置であって、前記複数のログレコードは、前記ページキャッシュのデータ損失をもたらすシステム故障の場合に、前記ページキャッシュに再格納される前記ページキャッシ状態を記載する前記記憶装置と、
前記ページキャッシュの書き込みログにログされるべき前記ストレージノードへの新規の書き込み要求の量を監視し、
少なくとも部分的に新規の書き込み要求の量に基づいて、前記複数のデータボリュームの少なくとも１つのデータボリュームのために耐久性特徴を動的に修正するよう構成されるログ管理モジュールと、を備え、
前記データボリュームは、
前記少なくとも１つのデータボリュームに有効なページキャッシュの書き込みログ、
または前記少なくとも１つのデータボリュームに無効なページキャッシュの書き込みログと、を備える前記システム。
２．前記少なくとも１つのデータボリュームに前記耐久性特徴を動的に修正するために、前記ログ管理モジュールはさらに、
前記少なくとも１つのデータボリュームを選択して少なくとも部分的に、
前記複数のデータボリュームのそれぞれに対するそれぞれのサイズまたは、
前記複数のデータボリュームのそれぞれに向けて書き込み要求のそれぞれの量に基づいて修正するよう構成される、条項１に記載のシステム。
３．前記ログ管理モジュールは、
特定のデータボリュームに対する書き込み要求を受信し、
ページキャッシュの書き込みログが前記特定のデータボリュームに対し無効であることを判定し、
前記書き込み要求により前記ページキャッシュを更新するのに対応し、前記ページキャッシュの書き込みログの前記書き込み要求に対するログレコードを格納せずに、完了したものとして前記書き込み要求を認識するようさらに構成される、条項１に記載のシステム。
４．前記ストレージノードがネットワークベースのブロックベースのストレージサービスを実装する複数のストレージノードの１つとして実装され、前記ネットワークベースのブロックベースのストレージサービスは複数の異なるクライアントのためにデータボリュームを保持する、条項１に記載のシステム。
５．前記ストレージノードで保持される複数のデータボリュームに対する書き込み要求により、前記ストレージノードでページキャッシュへの更新をそれぞれ記載する複数のログレコードを格納する持続的記憶装置内のページキャッシュの書き込みログを保持し、
ページキャッシュの書き込みログにログされるべきストレージノードへの新規の書き込み要求の量を監視し、  少なくとも部分的に新規の書き込み要求の量に基づいて、複数のデータボリュームのうち少なくとも１つのデータボリュームのために耐久性特徴を動的に修正し、前記データボリュームは、
前記少なくとも１つのデータボリュームのためにページキャッシュの書き込みログを有効にし、
前記少なくとも１つのデータボリュームのためにページキャッシュの書き込みログを無効にすることを１つ以上の計算装置によって実行することを含む、方法。
６．少なくとも１つのデータボリュームに対し、前記耐久性特徴を前記動的に修正し、さらに、
前記少なくとも１つのデータボリュームを選択して
前記複数のデータボリュームのそれぞれに対するそれぞれのサイズ、または
前記複数のデータボリュームのそれぞれに向けて書き込み要求のそれぞれの量に基づいて少なくとも部分的に修正することを含む、条項５に記載の方法。
７．前記ストレージノードがブロックベースのストレージシステムを実装する複数のストレージノードの１つであり、前記複数のストレージノードのうち異なる１つが前記ストレージノードで保持される前記複数のデータボリュームのそれぞれの複製を保持し、前記少なくとも１つのデータボリュームを前記選択し、前記異なるストレージノードで保持される前記複数のデータボリュームの前記それぞれの複製のために少なくとも部分的にそれぞれの耐久性にさらに基づいて修正する、条項６に記載の方法。
８．前記ストレージノードにおける前記複数のデータボリュームの全てに対する前記耐久性特徴が同じであるように修正される、条項５に記載の方法。
９．前記複数のデータボリュームの特定のデータボリュームに対する書き込み要求を受信し、
ページキャッシュの書き込みログが前記特定のデータボリュームに対し無効であることを判定し、
前記書き込み要求により前記ページキャッシュを更新するのに対応し、前記ページキャッシュの書き込みログの前記書き込み要求に対するログレコードを格納せずに、完了したものとして前記書き込み要求を認識することをさらに含む、条項５に記載の方法。
１０．前記複数のデータボリュームの別のデータボリュームに対する別の書き込み要求を受信し、
ページキャッシュの書き込みログが前記その他のデータボリュームに対して有効であることを判定し、
ページキャッシュの書き込みログが前記その他のデータボリュームに対して有効であることの判定に対し、
前記その他の書き込み要求により前記ページキャッシュを更新し、
前記ページキャッシュの書き込みログ中の前記その他の書き込み要求に対する前記ページキャッシュへの前記更新を記載するログレコードを格納し、
前記その他の書き込み要求により前記ページキャッシュの更新及び前記ページキャッシュの書き込みログ中の前記その他の書き込み要求に対する前記ページキャッシュへの前記更新を記載する前記ログレコードの格納に対応し、前記その他の書き込み要求を完了したと認識することをさらに含む、条項９に記載の方法。
１１．新規の書き込み要求がログの書き込み要求の量の下限未満であるとの判定に対応して、前記少なくとも１つのデータボリュームのために前記ページキャッシュの書き込みログを有効にすることが実行され、
新規の書き込み要求のログの書き込み要求の量が上限を超えるとの判定に対応して、前記少なくとも１つのデータボリュームのために前記ページキャッシュの書き込みログを有効にすることが実行される、条項５に記載の方法。
１２．システム故障からの復旧で、
有効なページキャッシュの書き込みログを有する前記複数のデータボリュームのデータボリュームを最新であると識別し、
前記識別されたデータボリュームを入力／出力（Ｉ／Ｏ）要求を処理するために利用可能にすることをさらに含む、条項５に記載の方法。
１３．前記ストレージノードがネットワークベースのブロックベースのストレージサービスを実装する複数のストレージノードの１つであり、書き込み要求はネットワークベースの仮想計算サービスによって実装される仮想コンピュートインスタンスから受信され、前記ネットワークベースのブロックストレージサービス及び前記ネットワークベースの仮想計算サービスは、同じネットワークベースのサービスプロバイダネットワークの一部として一緒に実装される、条項５に記載の方法。
１４．１つ以上の計算装置によって実行されるときにプログラムインストラクションを格納する非一時的、コンピュータ可読記憶媒体は１つ以上の計算装置に、
前記ストレージノードで保持される複数のデータボリュームに対する書き込み要求により、前記ストレージノードでページキャッシュへの更新をそれぞれ記載する複数のログレコードを格納する持続的記憶装置内のページキャッシュの書き込みログを保持し、
ページキャッシュの書き込みログにログされるべきストレージノードへの新規の書き込み要求の量を監視し、
少なくとも部分的に新規の書き込み要求の量に基づいて、複数のデータボリュームの少なくとも１つのデータボリュームのために耐久性特徴を動的に修正することを実行させ、
前記少なくとも１つのデータボリュームのためにページキャッシュの書き込みログを有効にする、または
前記少なくとも１つのデータボリュームのためにページキャッシュの書き込みログを無効にすることを含む、計算装置。
１５．少なくとも１つのデータボリュームに対する前記耐久性特徴を前記動的に変更するうえで、前記プログラムインストラクションが前記１つ以上の計算装置に、
前記少なくとも１つのデータボリュームを選択して少なくとも部分的に、
前記複数のデータボリュームのそれぞれに対するそれぞれのサイズまたは、
前記複数のデータボリュームのそれぞれに向けて書き込み要求のそれぞれの量に基づいて修正させることを実行する、条項１４に記載の非一時的、コンピュータ可読の記憶媒体。
１６．前記ストレージノードがブロックベースのストレージシステムを実装する複数のストレージノードの１つであり、前記複数のストレージノードのうち異なる１つが前記ストレージノードで保持される前記複数のデータボリュームのそれぞれの複製を保持し、前記少なくとも１つのデータボリュームを前記選択し、前記異なるストレージノードで保持される前記複数のデータボリュームの前記それぞれの複製のために少なくとも部分的にそれぞれの耐久性にさらに基づいて修正する、条項１５に記載の非一時的、コンピュータ可読の記憶媒体。
１７．新規の書き込み要求の量がログの書き込み要求の量の下限未満であるとの判定に対応して、前記少なくとも１つのデータボリュームのために前記ページキャッシュの書き込みログを有効にすることが実行され、
新規の書き込み要求がログの書き込み要求の量の上限を超えるとの判定に対応して、前記少なくとも１つのデータボリュームのために前記ページキャッシュの書き込みログを有効にすることが実行される、請求項１４に記載の非一時的、コンピュータ可読記憶媒体。
１８．前記プログラムインストラクションはさらに、前記１つ以上の計算装置に、
前記複数のデータボリュームの特定のデータボリュームに対する書き込み要求を受信し、
ページキャッシュの書き込みログが前記特定のデータボリュームに対し無効であることを判定し、
前記書き込み要求により前記ページキャッシュを更新するのに対応し、前記ページキャッシュの書き込みログの前記書き込み要求に対するログレコードを格納せずに、完了したものとして前記書き込み要求を認識することを実行させる、条項１４に記載の非一時的、コンピュータ可読記憶媒体。
１９．前記プログラムインストラクションはさらに、前記１つ以上の計算装置に、
前記複数のデータボリュームの別のデータボリュームに対する別の書き込み要求を受信し、
ページキャッシュの書き込みログが前記その他のデータボリュームに対して有効であることを判定し、
ページキャッシュの書き込みログが前記その他のデータボリュームに対して有効であることの判定に対し、  前記その他の書き込み要求により前記ページキャッシュを更新し、
前記ページキャッシュの書き込みログ中の前記その他の書き込み要求に対する前記ページキャッシュへの前記更新を記載するログレコードを格納し、
前記その他の書き込み要求により前記ページキャッシュの更新に対応し、かつ、前記ページキャッシュの書き込みログ中の前記その他の書き込み要求に対する前記ページキャッシュへの前記更新を記載する前記ログレコードを格納し、前記その他の書き込み要求を完了したと認識することを実行させる、条項１８に記載の非一時的、コンピュータ可読記憶媒体。
２０．前記ストレージノードがネットワークベースのブロックベースのストレージサービスを実装する複数のストレージノードの１つとして実装され、前記ネットワークベースのブロックベースのストレージサービスは複数の異なるクライアントのためにデータボリュームを保持する、条項１４に記載の非一時的、コンピュータ可読記憶媒体。
【図１】
0006389268.tif 000002
【図２】
0006389268.tif 000003
【図３】
0006389268.tif 000004
【図４】
0006389268.tif 000005
【図５】
0006389268.tif 000006
【図６】
0006389268.tif 000007
【図７】
0006389268.tif 000008
【図８】
0006389268.tif 000009
【図９】
0006389268.tif 000010
【図１０】
0006389268.tif 000011
【図１１】
0006389268.tif 000012
【図１２】
0006389268.tif 000013
【図１３】
0006389268.tif 000014
【図１４】
0006389268.tif 000015