(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-28
(45)【発行日】2024-01-12
(54)【発明の名称】ストレージ・デバイスのミラーリング方法、デバイス、プログラム
(51)【国際特許分類】
G06F 11/20 20060101AFI20240104BHJP
【FI】
G06F11/20 664
(21)【出願番号】P 2021574750
(86)(22)【出願日】2020-06-25
(86)【国際出願番号】 IB2020056004
(87)【国際公開番号】W WO2021005444
(87)【国際公開日】2021-01-14
【審査請求日】2022-11-21
(32)【優先日】2019-07-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ユーデンフレンド、ハリー
(72)【発明者】
【氏名】サットン、ピーター、グリム
(72)【発明者】
【氏名】コンプトン、スコット
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2007-004690(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/20
(57)【特許請求の範囲】
【請求項1】
コンピュータの情報処理により、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングする方法であって、
ホストから書き込みオペレーションを実行する第1の要求を受け取ることと、
前記書き込みオペレーションを実行することと、
前記第1の要求に対応するメタデータを前記二次データ・ストレージ・デバイスに送ることと、
前記二次データ・ストレージ・デバイスから前記書き込みオペレーションを実行する第2の要求に対応するメタデータを受け取ることであって、前記第2の要求は、前記二次データ・ストレージ・デバイスにおいて前記ホストから受け取ったものである、受け取ることと、
前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリングされたかどうか判断するために、前記第1及び第2の要求に対応する前記メタデータを用いることと、
前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリングされたとの判断に応答して、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたことを示す応答を、前記二次データ・ストレージ・デバイスに送ることと
を含む、方法。
【請求項2】
前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリングされたと
の判断
に応答して、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたことを示す応答を、前記二次データ・ストレージ・デバイスから受け取ることを含み、
前記二次データ・ストレージ・デバイスは、前記書き込みオペレーションを実行する前記第2の要求を受け取ったことに応答して、前記書き込みオペレーションを実行し、
前記二次データ・ストレージ・デバイスは、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたかどうか判断するために、前記第1及び第2の要求に対応する前記メタデータを使用する、
請求項1に記載の方法。
【請求項3】
読み出しオペレーションの要求を受け取ることと、
前記読み出しオペレーションの要求において指定されたデータが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたかどうか判断することと、
前記読み出しオペレーションの要求において指定された前記データが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されていないとの判断に応答して、前記読み出しオペレーションの実行を遅延させることと、
前記読み出しオペレーションの要求において指定された前記データが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたとの判断に応答して、前記読み出しオペレーションを実行することと
を含む、請求項1に記載の方法。
【請求項4】
前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたかどうか判断する前に、前記書き込みオペレーションが実行されたことを示す応答を前記ホストに送ることを含む、請求項1に記載の方法。
【請求項5】
前記第1の要求に対応する前記メタデータは、タイムスタンプ、ハッシュ値、及びストレージ位置識別情報からなる群から選択される情報を含み、前記第2の要求に対応する前記メタデータは、タイムスタンプ、ハッシュ値、及びストレージ位置識別情報からなる群から選択される情報を含む、請求項1に記載の方法。
【請求項6】
前記第1の要求に対応する前記メタデータをメモリに格納することを含み、
前記第1の要求に対応する前記メタデータは、前記第1の要求と同じレコードに対して書き込みオペレーションを実行する後の要求に対応するメタデータによって上書きされる、
請求項1に記載の方法。
【請求項7】
前記ホストから受け取った全ての書き込みオペレーション要求に対して実行される、請求項1に記載の方法。
【請求項8】
請求項1から請求項7までのいずれかに記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
【請求項9】
請求項8に記載のコンピュータ・プログラムを格納した、コンピュータ可読ストレージ媒体。
【請求項10】
一次データ・ストレージ・デバイスであって、
プロセッサと、
前記プロセッサと統合され、前記プロセッサによって実行可能であり、又は前記プロセッサと統合されかつ前記プロセッサによって実行可能な論理とを含み、前記論理は、
前記プロセッサによって、ホストから書き込みオペレーションを実行する第1の要求を受け取ることと、
前記プロセッサによって、前記書き込みオペレーションを実行することと、
前記プロセッサによって、前記第1の要求に対応するメタデータを二次データ・ストレージ・デバイスに送ることと、
前記プロセッサによって、前記二次データ・ストレージ・デバイスから前記書き込みオペレーションを実行する第2の要求に対応するメタデータを受け取ることであって、前記第2の要求は、前記二次データ・ストレージ・デバイスにおいて前記ホストから受け取ったものである、受け取ることと、
前記プロセッサによって、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリングされたかどうか判断するために、前記第1及び第2の要求に対応する前記メタデータを用いることと、
前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリングされたとの判断に応答して、前記プロセッサによって、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたことを示す応答を、前記二次データ・ストレージ・デバイスに送ることと
を含む処理を行うように構成された、一次データ・ストレージ・デバイス。
【請求項11】
前記論理は、
前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリングされたとの判断に応答して、前記プロセッサによって、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたことを示す応答を、前記二次データ・ストレージ・デバイスから受け取ることを行うように構成され、
前記二次データ・ストレージ・デバイスは、前記書き込みオペレーションを実行する前記第2の要求を受け取ったことに応答して、前記書き込みオペレーションを実行し、
前記二次データ・ストレージ・デバイスは、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたかどうか判断するために、前記第1及び第2の要求に対応する前記メタデータを用いる、
請求項10に記載の一次データ・ストレージ・デバイス。
【請求項12】
前記論理は、
前記プロセッサによって、読み出しオペレーションの要求を受け取ることと、
前記プロセッサによって、前記読み出しオペレーションの要求において指定されたデータが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたかどうか判断することと、
前記読み出しオペレーションの要求において指定された前記データが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されていないとの判断に応答して、前記プロセッサによって、前記読み出しオペレーションの実行を遅延させることと、
前記読み出し
オペレーションの要求において指定された前記データが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたとの判断に応答して、前記プロセッサによって、前記読み出しオペレーションを実行することと、
を行うように構成される、請求項10に記載の一次データ・ストレージ・デバイス。
【請求項13】
前記論理は、
前記プロセッサによって、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリンングされたかどうか判断する前に、前記書き込みオペレーションが実行されたことを示す応答を前記ホストに送ることを行うように構成される、請求項10に記載の一次データ・ストレージ・デバイス。
【請求項14】
前記第1の要求に対応する前記メタデータは、タイムスタンプ、ハッシュ値、及びストレージ位置識別情報からなる群から選択される情報を含み、前記第2の要求に対応する前記メタデータは、タイムスタンプ、ハッシュ値、及びストレージ位置識別情報からなる群から選択される情報を含む、請求項10に記載の一次データ・ストレージ・デバイス。
【請求項15】
前記論理は、
前記プロセッサによって、前記第1の要求に対応する前記メタデータをメモリに格納するように構成され、
前記第1の要求に対応する前記メタデータは、前記第1の要求と同じレコードに対して書き込みオペレーションを実行する後の要求に対応するメタデータによって上書きされる、
請求項10に記載の一次データ・ストレージ・デバイス。
【請求項16】
前記処理は、前記ホストから受け取った全ての書き込みオペレーション要求に対して実行される、請求項10に記載の一次データ・ストレージ・デバイス。
【請求項17】
コンピュータの情報処理により、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングする方法であって、
ホストから書き込みオペレーションを実行する第1の要求を受け取ることと、
前記書き込みオペレーションを実行することと、
前記第1の要求に対応するメタデータを前記一次データ・ストレージ・デバイスに送ることと、
前記一次データ・ストレージ・デバイスから前記書き込みオペレーションを実行する第2の要求に対応するメタデータを受け取ることであって、前記第2の要求は、前記一次データ・ストレージ・デバイスにおいて前記ホストから受け取ったものである、受け取ることと、
前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリングされたかどうか判断するために、前記第1及び第2の要求に対応する前記メタデータを用いることと、
前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリングされたとの判断に応答して、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたことを示す応答を、前記一次データ・ストレージ・デバイスに送ることと
を含む、方法。
【請求項18】
前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリングされたとの判断に応答して、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたことを示す応答を、前記一次データ・ストレージ・デバイスから受け取ることを含み、
前記一次データ・ストレージ・デバイスは、前記書き込みオペレーションを実行する前記第2の要求を受け取ったことに応答して、前記書き込みオペレーションを実行し、
前記一次データ・ストレージ・デバイスは、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリングされたかどうか判断するために、前記第1及び第2の要求に対応する前記メタデータを用いる、
請求項17に記載の方法。
【請求項19】
読み出しオペレーションの要求を受け取ることと、
前記読み出しオペレーションの要求において指定されたデータが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたかどうか判断することと、
前記読み出しオペレーションの要求において指定された前記データが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されていないとの判断に応答して、前記読み出しオペレーションの要求において指定された前記データが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されるまで、前記読み出しオペレーションの実行を遅延させることと、
前記読み出しオペレーションの要求において指定された前記データが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたり調整されたとの判断に応答して、前記読み出しオペレーションを実行することと
を含む、請求項17に記載の方法。
【請求項20】
コンピュータの情報処理により、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングする方法であって、
書き込みオペレーションを実行する第1の要求を一次データ・ストレージ・デバイスに送ることと、
書き込みオペレーションを実行する第2の要求を二次データ・ストレージ・デバイスに送ることと、
前記書き込みオペレーションが実行されたことを示す第1の応答を前記一次データ・ストレージ・デバイスから受け取ることと、
前記書き込みオペレーションが実行されたことを示す第2の応答を前記二次データ・ストレージ・デバイスから受け取ることと
を含み、
前記第1の要求に対応するメタデータが、前記一次データ・ストレージ・デバイスから前記二次データ・ストレージ・デバイスに送られ、
前記第2の要求に対応するメタデータが、前記二次データ・ストレージ・デバイスから前記一次データ・ストレージ・デバイスに送られ、
前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイス夫々が、前記書き込みオペレーションが前記一次データ・ストレージ・デバイス及び前記二次データ・ストレージ・デバイスにわたりミラーリングされたかどうかを判断するために、前記第1及び前記第2の要求に対応する前記メタデー
タを用いる
方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ・ストレージ・システムに関し、より具体的には、本発明は、1より多いデータ・ストレージ・デバイスにわたる書き込みオペレーションのミラーリングに関する。
【背景技術】
【0002】
従来のデータ複製システムにおいて、ユーザは、一次ストレージ位置などの単一のストレージ位置に入力/出力(I/O)要求を発行し、一次ストレージ位置は、受け取ったI/O要求に従ってデータを最終的に変更する。データ保持を増加させようとして、従来のデータ複製システムは、一次ストレージ位置に格納されたデータの二次(例えば、バックアップ)コピーを維持するために用いられる二次ストレージ位置を実装することもある。復元用ストレージ位置におけるこのデータの冗長コピーは、一次ストレージ位置が利用できなくなった場合もしくはデータ損失が発生した場合又はその両方の場合に特に有用である。幾つかの状況では、一次ストレージ位置が使用可能でないとの判断に応答して、復元用ストレージ位置は、動作の責任を担うことさえできる。
【0003】
このような従来のシステムでは、一次ストレージ位置は、ユーザから受け取ったI/O要求を、二次ストレージ位置に転送して実施する。このことはデータ保持を改善するが、このデータ・ストレージ・スキームでは、付加的な要求を満たす結果として処理のオーバーヘッドが著しく増大する。例えば、I/O要求がストレージ位置の各々の間で転送され、実装される場所の数の増加に伴ってパフォーマンスの遅延をもたらす。さらに、ストレージ位置のいずれかもしくはその間に延びる接続部又はその両方で発生する故障イベント(failure event)は、その間のI/O要求の転送を途絶えさせ、その結果、1より多いデータのコピーの同期がとれなくなる(out-of-synch)。次に、システムが動作可能になる前に、これに対処しなければならず、それにより、さらなるパフォーマンスの遅延が生じる。
【発明の概要】
【0004】
本発明の1つの態様によるコンピュータ実施方法は、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングするためのものである。コンピュータ実施方法は、ホストから書き込みオペレーションを実行する第1の要求を受け取ることと、書き込みオペレーションを実行することとを含む。第1の要求に対応するメタデータが二次データ・ストレージ・デバイスに送られ、二次データ・ストレージ・デバイスから書き込みオペレーションを実行する第2の要求に対応するメタデータを受け取る。従って、第2の要求は、二次データ・ストレージ・デバイスにおいてホストから受け取ったものになる。書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたかどうか判断するために、第1及び第2の要求に対応するメタデータが用いられる。書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたとの判断に応答して、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり調整されたことを示す応答が、二次データ・ストレージ・デバイスに送られる。
【0005】
結果として、ホストが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスと並列に通信するのを可能にすることによって、パフォーマンス時間が短縮される。例えば、本明細書で説明される手法の様々なものは、オーバーヘッドの削減を達成することができる。同様に、一次及び二次データ・ストレージ・デバイスは、ホストからの入力に依存することなく、並列に動作することができ、並びに、その間の同期手順を実行することができる。これにより、データ・ストレージ・デバイスは、意図されたデータ・ストレージ・スキームに従ってデータが伝播されることを保証する責任を担うことが可能になる。これにより、データが複数のデータ・ストレージ・デバイスにわたりミラーリングされることをアクティブに保証する結果として、ネットワーク・トラフィックが削減され、また、データ保持も改善される。従って、これらの手法に含まれる様々なプロセスは、ホストから受け取った全ての書き込みオペレーション(例えば、全てのアプリケーションの書き込み)に適用されることが好ましい。
【0006】
幾つかの実施形態において、コンピュータ実施方法はさらに、読み出し要求を受け取ることと、読み出し要求において指定されたデータが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり調整されたかどうか判断することとを含む。読み出し要求において指定されたデータが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり調整されていないとの判断に応答して、読み出し要求の実行は遅延される。しかしながら、読み出し要求において指定されたデータが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり調整されたとの判断に応答して、読み出しオペレーションが実行される。
【0007】
結果として、読み出しオペレーションが試みられた場合、結局、読み出すことが意図されたデータが、まだメモリに格納されていないこと、変更書き込みオペレーションに従ってまだ更新されていないこと等の状況を本質的に排除することによって、包括的なシステムの動作効率がさらに改善される。さらに、これらのオペレーションは、パフォーマンスにいかなる支障もきたすことなく実施することができる。これは、上述の手法によって達成された遅延の削減及びデータ保持を本手法によって達成された読み出しパフォーマンスの改善と組み合わせることができるため、特に望ましい。
【0008】
本発明の別の態様によるコンピュータ・プログラム製品は、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングするためのものである。このコンピュータ・プログラム製品は、そこに具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含む。さらに、プログラム命令は、プロセッサにより読み出し可能もしくは実行可能又はその両方であり、プロセッサに上述の方法を実行させる。
【0009】
さらに別の態様による一次データ・ストレージ・デバイスは、プロセッサと、プロセッサと統合され、プロセッサにより実行可能であり、又はプロセッサと統合されかつプロセッサによって実行可能な論理とを含む。論理は、上述の方法を実行するように構成される。
【0010】
別の態様によるコンピュータ実施方法は、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングするためのものである。コンピュータ実施方法は、ホストから書き込みオペレーションを実行する第1の要求を受け取ることと、書き込みオペレーションを実行することとを含む。第1の要求に対応するメタデータが一次データ・ストレージ・デバイスに送られる。また、一次データ・ストレージ・デバイスから、書き込みオペレーションを実行する第2の要求に対応するメタデータを受け取り、第2の要求は一次データ・ストレージ・デバイスにおいてホストから受け取ったものである。書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたかどうか判断するために、第1及び第2の要求に対応するメタデータが用いられる。さらに、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたとの判断に応答して、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり調整されたことを示す応答が、一次データ・ストレージ・デバイスに送られる。
【0011】
さらに別の態様によるコンピュータ実施方法は、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングするためのものである。ここで、コンピュータ実施方法は、書き込みオペレーションを実行する第1の要求を一次データ・ストレージ・デバイスに送ることと、書き込みオペレーションを実行する第2の要求を二次データ・ストレージ・デバイスに送ることとを含む。一次データ・ストレージ・デバイスから、書き込みオペレーションが実行されたことを示す第1の応答を受け取る。さらに、二次データ・ストレージ・デバイスから、書き込みオペレーションが実行されたことを示す第2の応答を受け取る。
【0012】
上述のように、ホストが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスと並列に通信することを可能にすることによって、パフォーマンス時間が短縮される。例えば、本明細書で説明した手法の様々なものは、オーバーヘッドの削減を達成することができる。同様に、一次及び二次データ・ストレージ・デバイスは、ホストからの入力に依存することなく、並列に動作することができ、並びに、その間の同期手順を実行することができる。これにより、データ・ストレージ・デバイスは、意図されたデータ・ストレージ・スキームに従ってデータが伝播されることを保証する責任を担うことができる。これにより、データが複数のデータ・ストレージ・デバイスにわたりミラーリングされることをアクティブに保証する結果として、ネットワーク・トラフィックが削減され、データ保持も改善される。従って、これらの手法に含まれる様々なプロセスは、ホストから受け取った全ての書き込みオペレーション(例えば、全てのアプリケーションの書き込み)に適用されることが好ましい。
【0013】
本発明の他の態様及び手法は、本発明の原理を例として示す図面と共に読むことで、以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0014】
【
図1】1つの手法によるネットワーク・アーキテクチャである。
【
図2】1つの手法による、
図1のサーバもしくはクライアント又はその両方に関連付けることができる代表的なハードウェア環境である。
【
図3】1つの手法による階層型(tiered)データ・ストレージ・システムである。
【
図4】1つの手法による分散型データ・ストレージ・システムの部分的な表現図である。
【
図5A】1つの手法による方法のフローチャートである。
【
図5B】1つの手法による方法のフローチャートである。
【発明を実施するための形態】
【0015】
以下の説明は、本発明の一般的な原理を説明するためになされたものであり、本明細書で特許請求される発明概念を限定することを意味するものではない。さらに、本明細書に記載される特定の特徴は、種々の可能な組み合わせ及び置換の各々の他の記載される特徴と共に用いることができる。
【0016】
本明細書で特に定義されていない限り、全ての用語は、本明細書から暗示される意味、並びに当業者により理解される意味、もしくは辞書、論文等に定められる意味又はそれらの組み合わせを含む、その最も広い可能な解釈が与えられるべきである。
【0017】
また、本明細書及び添付の特許請求の範囲において用いられる場合、単数形「a」、「an」及び「the」は、他に断りのない限り、複数の指示物を含むことにも留意すべきである。さらに、「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、オペレーション、要素、及び/又はコンポーネントの存在を指示するが、1つ又は複数の他の特徴、整数、ステップ、オペレーション、要素、コンポーネント、及び/又はそれらの群の存在又は追加を排除するものではないことも理解されるであろう。
【0018】
以下の説明は、1つより多いデータ・ストレージ・デバイスにわたる書き込みオペレーションをミラーリングするためのシステム、方法、及びコンピュータ・プログラム製品の幾つかの好ましい手法を開示する。ストレージ・デバイスにわたる書き込みオペレーションを「ミラーリング」することは、例えば、本説明を読んで当業者により理解されるように、2つの異なるストレージ位置における同じデータのコピーの差異を調整するプロセスを指すことに留意されたい。従って、本明細書に含まれる手法の種々のものは、望ましくは、ホストが複数のデータ・ストレージ・デバイスと並列に通信することを可能にすることによって、パフォーマンス時間を短縮することができる。同様に、データ・ストレージ・デバイスは、ホストからの入力に依存することなく、並列に動作することができ、並びに、その間のデータ同期手順を実行することができる。これにより、データ・ストレージ・デバイスの各々の制御ユニットは、意図されたデータ・ストレージ・スキームに従ってデータが伝搬されることを保証する責任を担うことが可能になり、これにより、例えば、以下でさらに詳細に説明するように、従来の手順と比較して著しい改善を達成することができる。
【0019】
1つの一般的な手法では、コンピュータ実施方法が、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングするために、用いられる。コンピュータ実施方法は、ホストから書き込みオペレーションを実行する第1の要求を受け取ることと、書き込みオペレーションを実行することとを含む。第1の要求に対応するメタデータが二次データ・ストレージ・デバイスに送られ、書き込みオペレーションを実行する第2の要求に対応するメタデータも二次データ・ストレージ・デバイスから受け取られる。従って、第2の要求は、二次データ・ストレージ・デバイスにおいてホストから受け取られたことになる。第1及び第2の要求に対応するメタデータは、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたかどうか判断するために用いられる。書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたとの判断に応答して、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり調整されたことを示す応答が、二次データ・ストレージ・デバイスに送られる。
【0020】
別の一般的な手法では、コンピュータ・プログラム製品が、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングするために用いられる。コンピュータ・プログラム製品は、そこに具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含む。さらに、プログラム命令は、プロセッサによって読み出し可能もしくは実行可能又はその両方であり、プロセッサに上述の方法を実行させる。
【0021】
さらに別の一般的な手法では、一次データ・ストレージ・デバイスは、プロセッサと、プロセッサと統合された、プロセッサによって実行可能な、又はプロセッサと統合されかつプロセッサによって実行可能な論理とを含む。論理は、上述の方法を実行するように構成される。
【0022】
別の一般的な手法では、コンピュータ実施方法が、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングするために用いられる。コンピュータ実施方法は、ホストから書き込みオペレーションを実行する第1の要求を受け取ることと、書き込みオペレーションを実行することとを含む。第1の要求に対応するメタデータが、一次データ・ストレージ・デバイスに送られる。一次データ・ストレージ・デバイスから、書き込みオペレーションを実行する第2の要求に対応するメタデータも受け取られ、第2の要求は、ホストから一次データ・ストレージ・デバイスで受け取られたものである。第1及び第2の要求に対応するメタデータは、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたかどうか判断するために用いられる。さらに、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたとの判断に応答して、書き込みオペレーションが一次データ・ストレージ・デバイスと二次データ・ストレージ・デバイスにわたり調整されたことを示す応答が、一次データ・ストレージ・デバイスに送られる。
【0023】
さらに別の一般的な手法では、コンピュータ実施方法が、一次データ・ストレージ・デバイ及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングするために用いられる。ここで、コンピュータ実施方法は、書き込みオペレーションを実行する第1の要求を一次データ・ストレージ・デバイスに送ることと、書き込みオペレーションを実行する第2の要求を二次データ・ストレージ・デバイスに送ることとを含む。書き込みオペレーションが実行されたことを示す第1の応答が、一次データ・ストレージ・デバイスから受け取られる。さらに、書き込みオペレーションが実行されたことを示す第2の応答が、二次データ・ストレージ・デバイスから受け取られる。
【0024】
図1は、1つの手法によるアーキテクチャ100を示す。
図1に示すように、第1の遠隔ネットワーク104と第2の遠隔ネットワーク106とを含む、複数の遠隔ネットワーク102が提供される。遠隔ネットワーク102とローカルネットワーク108との間にゲートウェイ101を結合することができる。このアーキテクチャ100の文脈において、ネットワーク104、106はそれぞれ、これらに限定されるものではないが、ローカル・エリア・ネットワーク(LAN)、インターネットなどの広域ネットワーク(WAN)、公衆交換電話網(PSTN)、内部電話網等を含む任意の形をとることができる。
【0025】
使用時には、ゲートウェイ101は、遠隔ネットワーク102から近接ネットワーク108への入口点として機能する。このように、ゲートウェイ101は、ゲートウェイ101に到着するデータの所与のパケットを方向付けることができるルータとして、及び、所与のパケットに対してゲートウェイ101に出入りする実際の経路を提供するスイッチとして機能することができる。
【0026】
近接ネットワーク108に結合された少なくとも1つのデータサーバ114がさらに含まれ、これは、ゲートウェイ101を介して遠隔ネットワーク102からアクセス可能である。データサーバ114は、任意のタイプのコンピューティング・デバイス/グループウェアを含むことができることに留意されたい。各データサーバ114には、複数のユーザ・デバイス116が結合される。ユーザ・デバイス116は、ネットワーク104、106、108のうちの1つを通じて直接接続されてもよい。手法に依って、このようなユーザ・デバイス116は、メインフレーム(例えば、本明細書に記載されるような)、デスクトップ・コンピュータ、ラップトップ・コンピュータ、手持ち式コンピュータ、プリンタ、又は他の任意のタイプの論理を含むことができる。また、1つの手法において、ユーザ・デバイス111もまた、ネットワークのいずれかに直接結合されてもよいことに留意されたい。
【0027】
周辺機器120又は一連の周辺機器120、例えば、ファクシミリ装置、プリンタ、ネットワーク化もしくはローカル又はその両方のストレージ・ユニット又はシステムなどを、ネットワーク104、106、108のうちの1つ又は複数に結合することができる。データベースもしくは付加的なコンポーネント又はその両方を、ネットワーク104、106、108に結合されたいずれかのタイプのネットワーク要素と共に利用することも、又はそれらに統合することもできることに留意されたい。この説明の文脈において、ネットワーク要素は、ネットワークのあらゆるコンポーネントを指すものとすることができる。
【0028】
幾つかの手法によれば、本明細書に記載される方法及びシステムは、仮想システムによって、及び/又は仮想システム上で、及び/又はIBM z/OS環境をエミュレートするUNIXシステム、MICROSOFT WINDOWS環境を仮想的にホストするUNIXシステム、IBM z/OS環境をエミュレートするMICROSOFT WINDOWSシステムなどの1つ又は複数のシステムをエミュレートするシステム上で実装されてもよい。この仮想化もしくはエミュレーション又はその両方を、幾つかの手法において、VMWAREソフトウェアの使用によって強化することができる。
【0029】
さらなる手法において、1つ又は複数のネットワーク104、106、108は、一般的に「クラウド」と呼ばれるシステムのクラスタを表すことができる。クラウド・コンピューティングでは、処理能力、周辺機器、ソフトウェア、データ、サーバなどの共有リソースが、オンデマンド関係でクラウド内の任意のシステムに提供され、それにより、多くのコンピューティングシステムにわたるサービスへのアクセス及び分配が可能になる。クラウド・コンピューティングは、典型的には、クラウド内で動作するシステム間のインターネット接続を伴うが、システムを接続する他の技術を用いることもできる。
【0030】
図2は、1つの手法による、
図1のユーザ・デバイス116もしくはサーバ114又はその両方に関連付けられた代表的なハードウェア環境を示す。この図は、マイクロプロセッサなどの中央処理ユニット210と、システム・バス212を介して相互接続された多数の他のユニットとを有するワークステーションの典型的なハードウェア構成を示す。
【0031】
図2に示すワークステーションは、ランダム・アクセス・メモリ(RAM)214と、読み出し専用メモリ(ROM)216と、ディスク・ストレージ・デバイス220などの周辺デバイスをバス212に接続するためのI/Oアダプタ218と、キーボード224、マウス226、スピーカ228、マイクロフォン232、もしくはタッチスクリーン及びデジタルカメラ(図示せず)といった他のユーザ・インタフェース・デバイス、又はそれらの組み合わせをバス212に接続するためのユーザ・インターフェース・アダプタ222と、ワークステーションを通信ネットワーク235(例えば、データ処理ネットワーク)に接続するための通信アダプタ234と、バス212を表示デバイス238に接続するためのディスプレイ・アダプタ236とを含む。本発明を限定することを意図しない例示的な手法によれば、ディスク・ストレージ・ユニット220は、1 New Orchard Rd.,Armonk,New York 10504に営業所を有するIBMによって提供されるDS8000ディスク・ストレージに組み込まれてもよい。
【0032】
ワークステーションには、Microsoft Windows(登録商標)オペレーティング・システム(OS)、MAC OS、UNIX OSなどのオペレーティング・システムを常駐させてもよい。好ましい手法は、言及されたもの以外のプラットフォーム及びオペレーティング・システム上で実装されたものであってもよいことが理解されるであろう。好ましい手法は、アセンブリ言語、C及び/又はC++言語、又はそれらの組み合わせ、又は他のプログラミング言語を、オブジェクト指向プログラミング方法論と共に用いて記述することができる。複雑なアプリケーションを開発するために使用されることが増えてきたオブジェクト指向プログラミング(OOP)を使用することもできる。
【0033】
ここで
図3を参照すると、1つの手法によるストレージ・システム300が示される。
図3に示される要素の一部は、様々な手法によりハードウェアもしくはソフトウェア又はその両方として実装できることに留意されたい。ストレージ・システム300は、少なくとも1つの上位のストレージ層(tier)302と、少なくとも1つの下位のストレージ層306上の複数の媒体もしくはドライブ又はその両方と通信するためのストレージ・システム・マネージャ312を含むことができる。上位のストレージ層302は、好ましくは、ハードディスク・ドライブ(HDD)内のハードディスク、不揮発性メモリ(NVM)、ソリッド・ステート・ドライブ(SSD)内のソリッド・ステート・メモリ、フラッシュ・メモリ、SSDアレイ、フラッシュ・メモリ・アレイなどの1つ又は複数のランダム・アクセス媒体もしくは直接アクセス媒体又はその両方304、及び/又は本明細書に記載される又は当技術分野で知られている他のものを含むことができる。下位のストレージ層306は、好ましくは、テープ・ドライブ内の磁気テープ及び/又は光学媒体などの順次アクセス媒体、より低速アクセスのHDD、より低速アクセスのSSDなど、及び/又は本明細書に記載されている又は当技術分野で知られている他のものを含む、1つ又は複数の低パフォーマンスのストレージ媒体308を含むことができる。1つ又は複数の付加的なストレージ層316が、システム300の設計者の希望に従ってストレージ・メモリ媒体の任意の組み合わせを含んでもよい。また、上位のストレージ層302もしくは下位のストレージ層306又はその両方のいずれも、ストレージ・デバイスもしくはストレージ媒体又はその両方の何らかの組み合わせを含むことができる。
【0034】
ストレージ・システム・マネージャ312は、
図3に示されるような、ストレージ・エリア・ネットワーク(SAN)などのネットワーク310、又は他の任意の好適なネットワーク・タイプを介して、上位ストレージ層302及び下位のストレージ層306上のドライブもしくはストレージ媒体304、308又はその両方と通信することができる。また、ストレージ・システム・マネージャ312は、ストレージ・システム・マネージャ312の一部であることも又はそうでないこともあるホスト・インターフェース314を介して、1つ又は複数のホスト・システム(図示せず)と通信することができる。ストレージ・システム・マネージャ312もしくはストレージ・システム300の他のいずれかのコンポーネント又はその両方は、ハードウェアもしくはソフトウェア又はその両方で実装することができ、中央処理ユニット(CPU)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)など、当技術分野で知られているタイプの、コマンドを実行するためのプロセッサ(図示せず)を利用することができる。当然ながら、この説明を読めば当業者には明らかなように、ストレージ・システムの任意の構成を使用することができる。
【0035】
さらなる手法において、ストレージ・システム300は、任意の数のデータ・ストレージ層を含むことができ、各ストレージ層内で同じ又は異なるストレージ・メモリ媒体を含むことができる。例えば、各データ・ストレージ層は、HDD、SSD、順次アクセス媒体(テープ・ドライブ内のテープ、光ディスク・ドライブ内の光ディスクなど)、ダイレクト・アクセス媒体(CD-ROM、DVD-ROMなど)、又は媒体ストレージ・タイプの任意の組み合わせなど、同じタイプのストレージ・メモリ媒体を含むことができる。1つのそのような構成では、上位のストレージ層302が、より高いパフォーマンスのストレージ環境においてデータを格納するために、SSDストレージ媒体の大部分を含むことができ、下位のストレージ層306及び付加的なストレージ層316を含む残りのストレージ層は、より低いパフォーマンスのストレージ環境においてデータを格納するために、SSD、HDD、テープ・ドライブなどの任意の組み合わせを含むことができる。このようにして、アクセス頻度のより高いデータ、優先度のより高いデータ、より高速にアクセスされる必要があるデータなどを、上位のストレージ層302に格納することができ、一方、これらの属性の1つをもたないデータは、下位のストレージ層306を含む、付加的なストレージ層316に格納することができる。当然ながら、当業者であれば、この説明を読めば、本明細書に示す手法に実装するために、ストレージ媒体のタイプの多くの他の組み合わせを考案することができる。
【0036】
幾つかの手法によると、ストレージ・システム(300など)は、データセットを開く要求を受け取るように構成された論理と、要求されたデータセットが複数の関連部分において階層型データ・ストレージ・システム300の下位のストレージ層306に格納されているかどうか判断するように構成された論理と、要求されたデータセットの各関連部分を階層型データ・ストレージ・システム300の上位のストレージ層302に移動させるように構成された論理と、関連部分から階層型データ・ストレージ・システム300の上位のストレージ層302上に要求されたデータセットを組み立てるように構成された論理とを含むことができる。
【0037】
当然ながら、この論理は、種々の手法に従って、いずれかのデバイスもしくはシステム上又はその両方の方法として、又はコンピュータ・プログラム製品として実装することができる。
【0038】
前述したように、複数のストレージ・デバイスが、データの1つ又は複数の冗長コピーを維持し、データ保持を増やそうとして実装される。データのこれらの冗長コピーは、一次ストレージ位置が利用できなくなった状況、もしくはデータ損失が生じた状況、又はその両方の状況において特に有用である。幾つかの状況では、一次ストレージ位置が使用可能でないとの判断に応答して、復元用ストレージ位置が動作の責任を担うことができる。
【0039】
しかしながら、従来のデータ複製システムは、ユーザのI/O要求を複数のストレージ・デバイスにわたり実施することに関して、幾らかのパフォーマンスの妨げに見舞われる。このような従来のシステムでは、一次ストレージ位置は、ユーザから受け取ったI/O要求を、二次ストレージ位置に転送して実施する。このデータ・ストレージ・スキームは、データ保持を改善する傾向があるが、付加的な要求を満たす結果として、処理のオーバーヘッドが著しく増大する。例えば、I/O要求がストレージ位置の各々の間で転送され、パフォーマンスの遅延が生じ、これは実装されるストレージ位置の数が増えるにつれて増加する。
【0040】
さらに、ストレージ位置のいずれかもしくはその間に延びる接続部又はそれら両方で発生する故障イベントは、その間のI/O要求の伝送を途絶えさせ、1より多いデータコピーの同期がとれなくなる。その結果、システムが動作可能に戻る前に、これに対処しなければならず、従って、さらなるパフォーマンス遅延が生じる。しかしながら、データの同期がとれなくなる様式及びそれが広がる領域は、故障イベントが生じた時と場所によって異なる。これが、復元プロセスの複雑さを増大させる。例えば、ひとたび故障に対処されると、全てのストレージ位置において、故障イベントの発生時にイン・フライト(inflight)である全てのI/O要求が繰り返される。
【0041】
従来のデータ複製システムに生じる前述の欠点とは際立って対照的に、本明細書に含まれる手法の種々のものは、1より多い複数のデータ・ストレージ位置にわたって1より多いデータのコピーを効率的に維持することができる。従って、ユーザ(例えば、ホスト)から受け取ったI/O要求は、従来のシステムを悩ませていたパフォーマンスの遅延が生じることなく、また、例えば以下でさらに詳しく説明するように、データ保持を損なうことなく、データ・ストレージ位置にわたり実施される。
【0042】
図4を見ると、1つの手法による分散型データ・ストレージ・システム400が示される。オプションとして、本分散型データ・ストレージ・システム400は、他の図を参照して説明されたものなど、本明細書に列挙される他の任意の手法からの特徴と併せて実装することができる。しかしながら、本明細書に提示されたこのような分散型データ・ストレージ・システム400などは、様々な用途で、もしくは本明細書に列挙される例示的な手法で具体的に記載されることも又は記載されていないこともある置換で、又はその両方で用いることができる。さらに、本明細書に提示される分散型データ・ストレージ・システム400は、任意の所望の環境で用いることができる。従って、
図4(及び他の図)は、あらゆる可能な置換を含むと考えることができる。
【0043】
図示のように、分散型データ・ストレージ・システム400は、どちらもネットワーク406に接続される、一次データ・ストレージ・デバイス402と二次データ・ストレージ・デバイス404とを含む。ホスト408のストレージ位置もネットワーク406に接続されており、このネットワークは、例えば、所望の手法に応じて、任意のタイプのネットワークとすることができる。例えば、幾つかの手法では、ネットワーク406は、例えば、インターネットなどのWANである。しかしながら、ネットワーク406が実装できる他のネットワーク・タイプの例示的なリストには、これらに限定されるものではないが、LAN、PSTN、SAN、内部電話網などが含まれる。従って、一次データ・ストレージ・デバイス402、二次データ・ストレージ・デバイス404、及びホスト408は、それらの間に存在する離隔距離の量に関係なく、例えば、異なる地理的位置に配置されているにもかかわらず、互いに通信することができる。
【0044】
幾つかの手法においては、データ・ストレージ・デバイス402、404及びホスト408の各々は、同じ単一のネットワーク406上で互いに通信できるが、データ・ストレージ・デバイス402、404及びホスト408のうちのいずれか2つ又はそれより多くの間に、1より多いネットワークを実装できることに留意されたい。例えば、ホスト408は、ネットワーク406上でデータ・ストレージ・デバイス402、404の各々と通信することができ、一方、一次及び二次データ・ストレージ・デバイス402、404は、別個のネットワークもしくはその間に延びることができる物理的な電気接続上で又はその両方で互いに通信することができる。従って、
図4に示されるようなネットワーク406は、決して限定することを意図したものではなく、実際には、例えば、
図1に示されるような多数の異なるネットワークを含むことができる。
【0045】
一次及び二次データ・ストレージ・デバイス402、404の各々は、メモリ・アレイ412に結合されたコントローラ410(例えば、プロセッサ)を含む。手法に依って、一次及び二次データ・ストレージ・デバイス402、404の各々に含まれるメモリ・アレイ412は、異なるタイプのストレージ・コンポーネント414で構成することができる。例えば、幾つかの手法において、一次データ・ストレージ・デバイス402内に含まれるメモリ・アレイ412は、二次データ・ストレージ・デバイス404内に含まれるものよりも高いパフォーマンスのストレージ・コンポーネントを含む。本説明の観点から、「より高いパフォーマンス」は、達成可能なスループット、パフォーマンス遅延、信頼度因子などに関して測定できることに留意されたい。言い換えれば、一次データ・ストレージ・デバイス402は、二次データ・ストレージ・デバイス404内に含まれるストレージ・コンポーネントのものと比較して、より高い達成可能なスループット、より低いパフォーマンス遅延、より高い信頼度因子などを有するストレージ・コンポーネントを含む。
【0046】
幾つかの手法において、ホスト408のストレージ位置は、ユーザと分散型データ・ストレージ・システム400との間のインターフェースとして機能する。従って、ホスト408は、1又は複数のユーザによって生じるI/O要求を受け取り、処理する。従って、ホスト408は、受け取ったデータを処理するのに十分に高い達成可能なスループットを有するコントローラ416(例えば、プロセッサ)を含むことになる。コントローラ416は、少なくとも一時的に情報(例えば、データ、I/O要求、メタデータなど)を待ち行列に格納するために用いることができるメモリ418にさらに結合される。しかしながら、幾つかの手法において、ホスト408は、実際には、1 New Orchard Rd.,Armonk,New York 10504に営業所を有するIBMにより提供されるz14メインフレームとすることができる。
【0047】
繰り返しになるが、本明細書に含まれる手法の様々なものは、1つより多いデータ・ストレージ位置にわたって1より多いデータのコピーを効率的に維持することができる。従って、分散型データ・ストレージ・システム400及びそれに含まれるコンポーネントは、望ましくは、一次及び二次データ・ストレージ・デバイスにわたりI/Oオペレーションを効率的かつ効果的な方法でミラーリングすることができる。一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスの各々は、同じデータのコピーを維持し、例えば、以下でさらに詳細に説明するように、実行されている更新(例えば、書き込みオペレーション)中に故障イベントが生じた状況においても、コピーの同期状態に保持する責任を担う。
【0048】
例えばここで
図5Aを見ると、1つの手法による、1つより多いデータ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングするためのコンピュータ実施方法500のフローチャートが示される。方法500は、種々の手法において、本発明に従って、特に
図1乃至
図4に示される環境のいずれかにおいて実行することができる。当然ながら、本説明を読めば当業者に理解されるように、
図5Aに具体的に記載されるものよりも多い又は少ないオペレーションを、方法500内に含ませることができる。
【0049】
方法500のステップの各々は、動作環境のいずれかの好適なコンポーネントによって実行することができる。例えば、方法500のフローチャートに示されるノード501、502、503の各々は、多層データ・ストレージ・システム内の異なる位置に配置された1つ又は複数のプロセッサに対応することができる。さらに、1つ又は複数のプロセッサの各々は、好ましくは、互いに通信するように構成される。
【0050】
様々な手法において、方法500は、コントローラ、プロセッサなど、又は内部に1つ又は複数のプロセッサを有する他の任意のデバイスによって、部分的又は完全に実行することができる。方法500の1つ又は複数のステップを実行するために、例えば、ハードウェアもしくはソフトウェア又はその両方に実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する、処理回路、チップ、もしくはモジュール又はそれらの組み合わせなどのプロセッサを、任意のデバイスにおいて使用することができる。例示的なプロセッサには、これらに限定されるものではないが、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)等、それらの組み合わせ、又は当技術分野で知られる他のいずれかの好適なコンピューティング・デバイスが含まれる。
【0051】
上述したように、
図5Aは、各々が多層データ・ストレージ・システムにおける異なる位置に配置された1つ又は複数のプロセッサ、コントローラ、コンピュータなどを表す、異なるノード501、502、503を含む。例えば、ノード501は、分散型データ・ストレージ・システムのホスト位置(例えば、上の
図4のホスト408を参照)に電気的に結合される1つ又は複数のプロセッサを含むことができる。ノード502は、分散型データ記憶システムの一次データ・ストレージ・デバイスに電気的に結合される1つ又は複数のプロセッサを含むことができる(例えば、上述の
図4の402を参照)。さらに、ノード503は、分散型データ・ストレージ・システムの二次データ・ストレージ・デバイスに電気的に結合された1つ又は複数のプロセッサを含むことができる(例えば、上述の
図4の404を参照)。従って、手法に応じて、コマンド、データ、要求などをノード501、502、503の各々の間で送ることができる。さらに、方法500に含まれる様々なプロセスは、例えば、本明細書を読むことで当業者が理解できるように、決して限定することを意図したものではないことに留意されたい。例えば、幾つかの手法において、ノード502からノード503に送られるデータには、ノード503からノード502に送られる要求を先行させることができる。
【0052】
示されるように、方法500のオペレーション504は、ノード501における1つ又は複数のプロセッサによって実行され、書き込みオペレーションを実行する第1の要求をノード502に送ることを含む。同様に、同じ書き込みオペレーションを実行する第2の要求が、オペレーション506においてノード503に送られる。オペレーション504及び506で送られる要求は、同じ書き込みオペレーションに対応することに留意されたい。言い換えれば、同じ書き込みオペレーションが、ノード502並びにノード503に送られる。幾つかの手法において、書き込みオペレーションを実行する第1及び第2の要求は並列に送られ、一方、他の手法においては、書き込みオペレーションを実行する第1及び第2の要求は、所望の手法に応じて、連続的に、別個になど送られる。
【0053】
また、書き込みオペレーションを実行する要求の各々には、要求自体と共に受け取られるメタデータが含まれる。例えば、それぞれオペレーション504及び506で送られた第1及び第2の要求は、同じ書き込みオペレーションに対応し、従って、互いに関連している。第1の要求と第2の要求との間のこの関係は、要求と併せて受け取られるメタデータに反映され、2つの要求が互いにどのように対応するかを識別するために用いることができる。
【0054】
さらに、第1及び第2の要求は、好ましくは、一次及び二次データ・ストレージ・デバイスで実行される同じ書き込みオペレーションをもたらし、これは、ミラーリングの一形態、例えば、ソフトウェア・ミラーリングと考えることができる。従って、本明細書で用いられる「ミラーリング」という用語は、1より多い異なるデータ・ストレージ・デバイスにおいて同じ書き込みオペレーションを選択的に実行するプロセスを指すことを意図することになる。書き込みオペレーションが送られたデータ・ストレージ・デバイスに問い合わせを行うことによって、書き込みオペレーションが「調整された」かどうかに関する判断をさらに行うことができる(例えば、制御ユニットによって)。書き込みオペレーションを成功裡にミラーリングしたことに応答して、データ・ストレージ・デバイスは、例えば、以下でさらに詳細に説明するように、書き込みオペレーションが実際に「調整された」ことを示すことによって応答することができる。
【0055】
ノード502を見ると、ノード501でホストから書き込みオペレーションを実行する第1の要求を受け取ったことに応答して、オペレーション508は、書き込みオペレーションを実際に実行することを含む。書き込みオペレーションは、本説明を読むことで当業者には明らかになるであろう任意のデータ記録プロセスを用いて実行することができる。さらに、オペレーション510は、書き込みオペレーションが一次データ・ストレージ・デバイスで成功裡に行われたことを示す応答を、ノード501のホストに送ることを含む。
【0056】
ここでノード503を見ると、ノード501から書き込みオペレーションを実行する第2の要求を受け取ったことに応答して、オペレーション512は、二次データ・ストレージ・デバイスで書き込みオペレーションを実際に実行することを含む。ここでも、書き込みオペレーションは、本説明を読むことで当業者には明らかになるであろう任意のデータ記録プロセスを用いて実行することができる。さらに、オペレーション514は、二次データ・ストレージ・デバイスで書き込みオペレーションが成功裡に行われたことを示す別の応答を、ノード501のホストに送ることを含む。
【0057】
ノード501におけるホストの観点から、書き込みオペレーションは、成功裡の完了応答(例えば、通知)を受け取ることに応答して、効果的にミラーリングされたと判断される(例えば、ソフトウェア・ミラーリングの文脈において)。従って、ノード501におけるホストの観点からは、オペレーション510、514において応答を受け取ることに応答して、書き込みオペレーションが成功裡に完了したという判断がなされる。しかしながら、それぞれノード502、503における一次及び二次ストレージ・デバイスに目を向けると、以下でさらに詳細に説明するように、各デバイスが、書き込みオペレーションが成功裡に完了したという表示を他のデバイスから受け取るまで、書き込みオペレーションが完了したとはみなされない(例えば、オペレーション532、534を参照)。
【0058】
オペレーション510及び514においてホストに送られる応答は、互いに同じであることも、類似していることも、又は異なることもある。言い換えれば、オペレーション510及び514で送られる応答のタイプ、応答の各々に含まれる情報の量、応答の各々に含まれる情報のタイプなどは、互いに同じであることも、類似していることも、又は異なることもある。決して本発明を限定することを意図していない例示的な手法によれば、オペレーション510及び514でホストに送られる応答は、チャネルエンド/デバイスエンドの完了ステータスである。
【0059】
オペレーション516に進むと、書き込みオペレーションを行う第2の要求に対応するメタデータのコピーが、ノード503からノード502に送られる。これにより、ノード503から受け取ったメタデータは、ノード502におけるメモリに格納される。オペレーション518を参照されたい。同様に、書き込みオペレーションを行う第1の要求に対応するメタデータのコピーが、ノード502からノード503に送られる。オペレーション520を参照されたい。さらにオペレーション522を見ると、ノード503で受け取ったメタデータは、さらにメモリに格納される。従って、ノード502、503の各々は、ノード501でホストにより発行された両方の要求に対応するメタデータを含むことになる。一次データ・ストレージ・デバイスと二次データ・ストレージ・デバイスとの間で送られるメタデータの少なくとも一部は、好ましくは同じタイプのものであり、それにより、有意の比較を行うことが可能になる。さらに、書き込みオペレーションを行う第1もしくは第2又はその両方の要求に対応するメタデータは、所望の手法に応じて、タイムスタンプ(例えば、「日時」情報)、要求のコンテンツを一意に識別するハッシュ値又はテーブル、ストレージ位置識別情報(例えば、ccccCCChr形式の)などを含むことができる。
【0060】
また、メタデータを一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスの各々でメモリに格納するプロセスは、手法によって異なる場合もある。例えば、ある手法では、メタデータは、時間の経過と共にメモリ内に集約される。他の手法では、データ・ストレージ容量の消費がより優先され、それによって、特定量のメタデータのみがメモリに格納される。さらに他の手法では、書き込みオペレーションを行った結果、上書き、削除、変更されたデータに対応するメタデータは、実行された書き込みオペレーションに対応するメタデータによって上書きされる。言い換えれば、以前の書き込みオペレーション要求に対応するメタデータは、以前の要求と同じレコード(例えば、ファイル)と相関する後の書き込みオペレーション要求に対応するメタデータによって上書きされる。これにより、上書きされた以降のメタデータに対応する、受け取ったあらゆるI/O要求を、確信をもって無視できることになる。
【0061】
引き続き
図5Aを参照すると、書き込みオペレーションを実行する第1及び第2の要求に対応するメタデータの組み合わせは、そのため、それぞれのノード502、503の各々によって評価し、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり成功裡にミラーリングされたかどうか判断することができる。例えば、決定524は、ノード502によって実行され、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたかどうか判断することを含む。言い換えれば、決定524は、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにおけるデータのコピー間のあらゆる差異が調整されたかどうか判断することを含む。この判断は、好ましい手法において、書き込みオペレーションを実行する1及び第2の要求に対応するメタデータを用いて行われる。例えば、第1及び第2の要求に対応するハッシュ値は、幾つかの手法では、どのデータがメモリに書き込まれたかを識別するために用いられる。さらに、幾つかの手法では、書き込みオペレーションにおけるデータが実際にメモリに格納されている場所を識別するメタデータが、一次データ・ストレージ・デバイスと二次データ・ストレージ・デバイスとの間で比較される。
【0062】
同様に、決定526は、ノード503によって実行され、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり成功裡にミラーリングされたかどうか判断することを含む。上述したように、この判断は、好ましくは、書き込みオペレーションを実行する第1及び第2の要求に対応するメタデータを用いて、例えば、本明細書に記載された手法のいずれかを用いて行われる。
【0063】
従って、決定524及び決定526は、上でホストから最初に受け取った要求に対応する書き込みオペレーションを実行した結果として、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスの両方のデータが合致するかどうかという点で、同じ又は類似の判断をすることを含むことになる。言い換えれば、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスは、互いに同期(例えば、相互検証)し、データが両方の位置で調整されたかどうか判断し、それにより、データが両方の位置で同じであることを保証する。
【0064】
また、
図5Aに示されたプロセスのうちの選択されたものは、特定の順序又はシーケンスで実行されるように見えるが、これは決して限定することを意図したものではないことにも留意されたい。例えば、オペレーション504及び506を見ると、同じ書き込みオペレーションを実行する第1及び第2の要求は、一緒に(例えば、並列に)、非同期に、連続的になどの方法で送ることができる。同様に、書き込みオペレーションは、例えば、書き込みオペレーションを実行するそれぞれの要求をいつ受け取ったかに応じて、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスの各々において非同期に実行することができる。
【0065】
上述のように、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたかどうか判断することは、デバイスの各々に送られた要求に対応するメタデータを利用することを要する。従って、幾つかの手法では、決定524もしくは526又はその両方を実行することは、メタデータが、それぞれのデータ・ストレージ・デバイスにより実際に受け取られたかどうかに依存する。しかしながら、他の手法では、決定524もしくは526又はその両方は、書き込みオペレーションを実行するそれぞれの要求が受け取られた後で所定の時間待機したこと、ホストからのコマンドを受け取ったことなどに応答して実行することができる。
【0066】
書き込みオペレーションがまだ一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされていないとの判断に応答して、方法500は、決定524からオペレーション528に進む。そこで、オペレーション528は、データの差異が調整されたかどうか判断するために決定524に戻る前に、所定の時間待機することを含む。同様に、方法500は、書き込みオペレーションがまだ一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされていないとの判断に応答して、決定526からオペレーション530に進む。そこで、オペレーション530は、データの差異が調整されたかどうか判断するために決定526に戻る前に、所定の時間待機することも含む。
【0067】
一次データ・ストレージ・デバイスと二次データ・ストレージ・デバイスにおけるデータコピーを適切に調整できなかったことは、多数の異なる環境に起因し得る。例えば、ホストとデータ・ストレージ・デバイスの1つ又は複数との間の接続が損なわれ、それにより、書き込みオペレーションを実行する要求が、データ・ストレージ・デバイスの1つ又は複数において常に受け取ることができないことがある。こうした状況では、方法500は、単にコ損なわれた接続の修復を待機し続けることができる。他の例では、一次データ・ストレージ・デバイスと二次データ・ストレージ・デバイスとの間の接続自体が損なわれ、それにより、メタデータがその間で転送されるのが妨げられることがある。これらの状況では、方法500は、データ・ストレージ・デバイス自体の間に延びる接続の修復を待ち続けることができる。さらに他の手法では、ホスト、一次データ・ストレージ・デバイスもしくは二次データ・ストレージ・デバイス又はそれらの組み合わせは、例えば、故障イベントの発生に応答して、オフラインになることがある。従って、方法500は、物理的コンポーネント自体の1つ又は複数の再起動もしくは修復又はその両方を待ち続けることができる。正常なオペレーションに戻ることに応答して、故障したデバイスがオフラインであった間に機能しているデバイス上で実施された書き込みオペレーションを、具体的に特定し(例えば、デルタ更新ドキュメントにおいて)、差分再同期(incremental resync)型手順で実施することができる。
【0068】
オペレーション528もしくは530又はその両方が所定の回数繰り返される状況では、方法500は、付加的なアクションを取ることができる。例えば、所定回数の再試行後に、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスの各々におけるデータが同期されないままであるとの判断に応答して、データ復元プロトコルを入力することができるように、一次データ・ストレージ・デバイスと二次データ・ストレージ・デバイスとの間のミラーリング関係を、例えば少なくとも一時的に終了させることができる。実装されるデータ復元プロトコルは、書き込みオペレーションがデータ・ストレージ・デバイスにわたり成功裡にミラーリングされなかった理由に依存する。例えば、データ復元プロトコルは、ホストとデータ・ストレージ・デバイスとの間の接続を検査し、修復することを含むことができる。他の手法では、一次データ・ストレージ・デバイスと二次データ・ストレージ・デバイスとの間で、書き込みオペレーション要求に対応するメタデータの伝送の再試行を行うことができる。さらに、他の手法では、ホストは書き込みオペレーション要求を完全に再発行するよう促されることがある。
【0069】
さらに他の手法では、復元プロトコルは、書き込みオペレーションに対応するデータが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり成功裡にミラーリングされることを保証し、それにより、方法500を終了することができる。しかしながら、方法500は、所与のオペレーションの実行時に事実上終了することができるが、方法500に含まれるプロセスのうちのいずれかの1つ又は複数を、データ・ストレージ・デバイスにわたる付加的な書き込みオペレーションをミラーリングするために繰り返すことができることに留意されたい。言い換えれば、方法500に含まれるプロセスのうちのいずれかの1つ又は複数を、後で受け取った書き込みオペレーションに対して繰り返すことができる。
【0070】
決定526に戻ると、方法は、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたとの判断に応答して、オペレーション532に進む。そこで、オペレーション532は、二次データ・ストレージ・デバイスが、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり成功裡に調整されたと判断したことを示す応答を、ノード502において一次データ・ストレージ・デバイスに送ることを含む。言い換えれば、二次データ・ストレージ・デバイスから一次データ・ストレージ・デバイスへと、二次データ・ストレージ・デバイスに従って、データがデータ・ストレージ・デバイスにわたり調整されたことを示す書き込み完了確認通知が送られる。従って、一次データ・ストレージ・デバイスには、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスの各々に格納されるデータが、書き込みオペレーションに従って更新されたことが通知される。同様に、方法500は、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりミラーリングされたとの判断に応答して、決定524からオペレーション534に進む。そこで、オペレーション534は、一次データ・ストレージ・デバイスが、書き込みオペレーションが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり成功裡に調整されたとの判断を示す別の応答を、ノード503において二次データ・ストレージ・デバイスに送ることを含む。
【0071】
一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスが互いから、書き込みオペレーションがそれらにわたり調整されたことを示す応答を受け取ることに応答して、データ・ストレージ・デバイスの各々におけるデータは、成功裡に調整されたと結論づけることができる。従って、この情報に基づく付加的なステップ、例えば、後の書き込みコマンドを送ること、I/Oバッファを進めること、論理・物理テーブル(logical-to-physical table)を更新することなどを、要望に依って実行することができる。
【0072】
従って、方法500に関して上述した様々な手法は、望ましくは、ホストが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスと並列に通信することを可能にすることによって、パフォーマンス時間を短縮することができることになる。例えば、本明細書で説明した手法の様々なものは、従来のデータ複製システムと比較してオーバーヘッドの削減を達成することができる。同様に、一次及び二次データ・ストレージ・デバイスは、ホストからの入力に依存することなく、並列に動作することができ、並びに、その間の同期手順を実行することができる。これにより、データ・ストレージ・デバイスは、意図したデータ・ストレージ・スキームに従ってデータが伝播されることを保証する責任を担うことが可能になる。これにより、データが複数のデータ・ストレージ・デバイスにわたりミラーリングされることをアクティブに保証する結果として、ネットワーク・トラフィックが削減され、また、データ保持も向上する。従って、これらの手法に含まれる様々なプロセスは、ホストから受け取った全ての書き込みオペレーション(例えば、全てのアプリケーション書き込み)に適用されることが好ましい。
【0073】
上述のように、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり書き込みオペレーションをミラーリングするプロセス中に故障が発生することがあり、その場合、包括的な分散型ストレージ・システム、中央ネットワーク、故障した物理的コンポーネント及び/又はそこに実装されたソフトウェアにおける位置間の通信チャネルを修復しようとして、様々なデータ復元プロトコルを実装することができる。さらに、現在の書き込みオペレーションが成功裡に実施される以前に、書き込みオペレーションを実行する後の要求を受け取ることがある。これらの書き込みオペレーション要求は、それに対応するメタデータがメモリ内に格納され、実施のためにスケジューリングされるように処理され、段階的に行われることが好ましい。さらに、例えばまもなく明らかになるように、書き込みオペレーションが実行されている間に受け取られた読み出しオペレーション要求も、延期され、後の時点で実行されることが好ましい。
【0074】
例えば、
図5Bは、1つの手法による、受け取った読み出し要求を評価するための方法550を示す。方法550は、方法500において上で参照された分散型データ・ストレージ・システムの文脈で以下に提示され、従って、
図4に示される様々なコンポーネントを組み入れる。しかしながら、種々の手法において、方法550に含まれるプロセスのいずれも、とりわけ、特に
図1乃至
図5Aに示される環境のいずれにおいても、本発明に従って実行することができる。当然ながら、本説明を読めば当業者には理解されるように、
図5Bに具体的に記載されたものよりも多い又は少ないオペレーションを方法550に含ませることができる。
【0075】
方法550のステップの各々は、動作環境の任意の好適なコンポーネントによって実行することができる。例えば、様々な手法において、方法550は、コントローラ、プロセッサ等、又は内部に1つ又は複数のプロセッサを有する他の任意のデバイスによって、部分的又は完全に実行することができる。プロセッサ、例えば、ハードウェアもしくはソフトウェア又はその両方も実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有する処理回路、チップ、及び/又はモジュールを、方法550の1つ又は複数のステップを実行するためにいずれかのデバイスで使用することができる。例示的なプロセッサは、これらに限定されるものではないが、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、それらの組み合わせ、又は当技術分野で知られている他のいずれかの好適なコンピューティング・デバイスを含む。
【0076】
図5Bに示すように、方法550のオペレーション552は、読み出し要求を実際に受け取ることを含む。読み出し要求は、所与の手法に応じて、一次データ・ストレージ・デバイスもしくは二次データ・ストレージ・デバイス又はその両方で受け取ることができる。例えば、一次データ・ストレージ・デバイスは、システムの動作中に受け取った読み出し要求などのデータ問い合わせを満たすことを担うアクティブなデータ・ストレージ・デバイスとして機能することができる。さらに、読み出し要求は、任意の時点でホストから受け取ることができる。特定のデータのグループ(例えば、ファイル又はレコード)を読み出す要求は、そのデータが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり調整される前に受け取ることさえできる。
【0077】
従って、決定554は、読み出し要求において指定されたデータが、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり照合調整されたかどうか判断することを含む。言い換えれば、決定554は、読み出し要求で指定されたデータが、一次及び二次データ・ストレージ・デバイスの両方にすでに書き込まれているかどうか、従って、読み出し要求を満たすことを可能にする前に、ストレージ・デバイスの観点からデータが調整されているかどうか判断することを含む。この判断は、幾つかの手法では、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたりどのデータがすでに調整されたかを追跡するために用いられる論理・物理テーブルを検査することによって行われる。また、他の手法では、この判断は、ストレージ・デバイスで受け取った書き込みオペレーション要求を格納するI/Oログを検査すること、実際にメモリを検査する(例えば、プローブ読み出しオペレーションを実行する)ことなどによって行うこともできる。また、一次データ・ストレージ・デバイスと二次データ・ストレージ・デバイスとの間のミラーリング関係は依然として有効であり、それにより、データ・ストレージ・デバイスの各々におけるデータが成功裡に調整されたままであることが保証されることにも留意されたい。
【0078】
読み出し要求で指定されたデータが、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり調整されていないとの判断に応答して、方法550は、決定554からオペレーション556に進む。そこで、オペレーション556は、読み出し要求を遅延させることを含む。読み出し要求は、読み出し要求で指定されたデータが一次データ・ストレージ・デバイスと二次データ・ストレージ・デバイスとの間で調整されるまで遅延されることが好ましい。従って、読み出し要求は、所定の時間バッファに一時的に保持することができる。
【0079】
オペレーション556から、方法550は、読み出し要求に対応するデータについて判断を繰り返すことができるように、決定554に戻る。従って、プロセス554及び556は、読み出し要求で指定されたデータが、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり調整されたと判断されるまで、任意の回数繰り返すことができることになる。しかしながら、幾つかの手法では、決定554を所定の回数実行したことに応答して、予め指定した時間が経過した後、要求されたデータにアクセスできない(例えば、メモリ障害もしくはデータ損失又はその両方が識別される)など、読み出し要求の失敗を示す応答をホストに返すことができる。
【0080】
しかしながら、方法550は、読み出し要求で指定されたデータが一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスにわたり調整されたとの判断に応答して、決定554からオペレーション558に進む。そこでは、オペレーション558は、メモリから要求されたデータにアクセスし、要求されたデータをホストに提供する(例えば、返す)ことによって、読み出しオペレーションを実際に実行することを含む。上述したように、一次データ・ストレージ・デバイス及び二次データ・ストレージ・デバイスの一方は、受け取った読み出し要求を実行するために用いられる「アクティブ」なデバイスとして機能し、一方、データ・ストレージ・デバイスの他方は「冗長」なデバイスとして機能する。従って、方法550のプロセスは、データ・ストレージ・デバイスのうちアクティブなものによって実行することができる。しかしながら、例えば、故障イベントが発生したことに応答して、データ・ストレージ・デバイスのうちのアクティブなものがオフラインになると、冗長デバイスが動作の責任を担い、当分の間、少なくとも一時的にアクティブなデバイスとなることができる。同様に、アクティブなデバイスで発生したあらゆる永久的エラーは、実装のために冗長デバイスにリダイレクトされることが好ましい。
【0081】
従って、方法550のプロセスは、読み出しオペレーションが試みられた場合、読み出すことが意図されたデータが、まだメモリに格納されていないこと、変更書き込みオペレーションに従ってまだ更新されていないこと等の状況を本質的に排除することによって、包括的なシステムの動作効率が良くなる。さらに、方法550は、パフォーマンスにいかなる支障もきたすことなく、方法500におけるものと共に実施することができる。これは、方法500に関して上述した手法によって達成される遅延の低減及びデータ保持が、方法550に関して述べられた手法によって達成された読み出しパフォーマンスの向上と組み合わされるため、特に望ましい。
【0082】
この場合も同様に、本明細書に含まれる手法の種々のものが、ホストが複数のデータ・ストレージ・デバイスと並列に通信することを可能にすることによって、パフォーマンス時間を短縮できることが望ましい。同様に、データ・ストレージ・デバイスは、ホストからの入力に依存することなく、並列に動作することができ、並びに、その間のデータ同期手順を実行することができる。これにより、データ・ストレージ・デバイスの各々における制御ユニットは、意図したデータ・ストレージ・スキームに従ってデータが伝搬されることを保証する責任を担うことができる。さらに、制御ユニットは、I/O要求が実施されるときに非同期的通信することが可能である。これにより、データが複数のデータ・ストレージ・デバイスにわたりミラーリングされることをアクティブに保証する結果として、ネットワーク・トラフィックが削減され、データ保持も改善される。従って、これらの手法に含まれる様々なプロセスは、ホストから受け取った全ての書き込みオペレーション(例えば、全てのアプリケーション書き込み)に適用されることが好ましい。
【0083】
また、本明細書に含まれる様々な手法は、決して本発明を限定することを意図したものではないことに留意されたい。例えば、手法の多くは、ホストと2つのデータ・ストレージ・デバイスとを有する分散型データ・ストレージ・システムの文脈で上述されているが、任意の数のデータ・ストレージ・デバイスを実装することができる。例えば、特定のデータ(例えば、特に「重要」とみなされるデータ)の第3のコピーを、他のストレージ・デバイスと同じネットワークに接続された第3のデータ・ストレージ・デバイス内に維持することができる。同様に、上述した様々なプロセスは、受け取った各I/O要求に対して実行されるが、任意の数のI/O要求を集約し、一緒に処理することができる。
【0084】
本発明は、システム、方法、もしくはコンピュータ・プログラム製品又はそれらの組み合わせを任意の可能な技術的詳細レベルで統合したものとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有する1つ又は複数のコンピュータ可読ストレージ媒体を含むことができる。
【0085】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル・バータイル・ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードもしくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【0086】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク又はその組み合わせなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジサーバ又はその組み合わせを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納するためにコンピュータ可読プログラム命令を転送する。
【0087】
本発明のオペレーションを実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語、又は類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部がリモートコンピュータ上で実行される場合もあり、又は完全にリモートコンピュータもしくはサーバ上で実行される場合もある。最後のシナリオにおいて、リモートコンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能ロジックアレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて、電子回路を個別化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
【0088】
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施できることが理解されるであろう。
【0089】
これらのコンピュータ可読プログラム命令を、コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令はまた、コンピュータ、プログラム可能データ処理装置、もしくは他のデバイス又はそれらの組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、その中に格納された命令を有するコンピュー可読媒体が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
【0090】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連のオペレーション・ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作を実施するようにすることもできる。
【0091】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及びオペレーションを示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定されたロジック機能を実施するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に依って、実際には1つのステップとして同時に、実質的に同時に、部分的に又は完全に時間的に重なる様式で達成されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又はその両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方内のブロックの組み合わせは、指定された機能又はオペレーションを実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実施できることにも留意されたい。
【0092】
さらに、様々な実施形態によるシステムは、プロセッサと、プロセッサと統合されたもしくはプロセッサによって実行可能又はその両方である論理を含むことができ、論理は、本明細書に記載される1つ又は複数のプロセスステップを実行するように構成される。プロセッサは、ディスクリートプロセッサ、又は処理ハードウェア、メモリ、I/Oインターフェースなどの多くのコンポーネントを含む処理回路など、本明細書に記載されるいずれかの構成とすることができる。「統合される」とは、プロセッサが、特定用途向け集積回路(ASIC)、FPGAなどのハードウェア論理として組み込まれた論理を有することを意味する。また、「プロセッサにより実行可能」とは、その論理が、ハードウェア論理、ファームウェア、オペレーティング・システムの一部、アプリケーションプログラムの一部などのソフトウェア論理、又は、プロセッサによってアクセス可能であり、プロセッサによる実行時にプロセッサに任意の機能を実行させるように構成されたハードウェア論理とソフトウェア論理の何らかの組み合わせであることを意味する。ソフトウェア論理は、当技術分野で知られているように、任意のメモリタイプのローカルもしくはリモート又は両方のメモリに格納することができる。ソフトウェア・プロセッサ・モジュール、もしくは、ASIC、FPGA、中央処理装置(CPU)、集積回路(IC)、グラフィック処理装置(GPU)などのハードウェア・プロセッサなど又はそれらの組み合わせの、当技術分野で知られている任意のプロセッサを用いることができる。
【0093】
前述のシステムもしくは方法又はその両方の様々な特徴は、任意の方法で組み合わせることができ、上に提示された説明から複数の組み合わせを作り出すことができることは明らかであろう。
【0094】
本発明の実施形態は、オンデマンドでサービスを提供するために、顧客の代わりにデプロイされるサービスの形で提供できることが、さらに理解されるであろう。
【0095】
本開示の種々の実施形態の説明は、例証目的のために提示されたが、これらは、網羅的であること、又は開示されたた実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。