(58)【調査した分野】(Int.Cl.,DB名)
前記レプリケーション制御手段は、前記コンセントレータの使用容量が、前記閾値以上である場合、最も低い前記優先度が設定された前記グループに関する前記複製データから、前記優先度の低い順に、所定の第1の前記優先度が設置された前記グループに関する前記複製データまで、前記複製データを順次前記コンセントレータから削除する、
請求項2に記載のストレージ装置。
前記レプリケーション制御手段は、前記コンセントレータの使用容量が、前記閾値以上である場合、所定の第2の前記優先度以上の優先度が設定された前記グループ以外の前記グループに関する前記複製データを、前記優先度の低い順に、前記コンセントレータから順次削除する、
請求項2又は請求項3に記載のストレージ装置。
前記レプリケーション制御手段は、前記コンセントレータの使用容量が、前記閾値以上である場合、最も優先度が高いグループ以外のグループに関する前記複製データを、前記優先度の低い順に順次前記コンセントレータから削除する、
請求項3に記載のストレージ装置。
前記コンセントレータに配置された前記複製データに関する複製元のデータが書き込まれた前記ボリュームを特定可能な情報と、当該ボリュームが含まれるグループを特定可能な情報と、当該複製データのサイズを表す情報と、当該複製データの配置位置を表す情報と、を少なくとも含むエントリにより構成されたコンセントレータ管理テーブルを更に有し、
前記レプリケーション制御手段は、前記コンセントレータの使用容量が、前記閾値以上である場合、前記コンセントレータ管理テーブルを参照し、前記優先度が低い順に、前記コンセントレータに配置された前記複製データを特定し、当該特定した前記複製データを前記コンセントレータから削除し、
削除された前記複製データ以外の前記複製データに関する前記配置位置を再計算して、前記コンセントレータに再配置する
請求項1乃至請求項5のいずれかに記載のストレージ装置。
【発明を実施するための形態】
【0016】
本開示の実施形態に関する説明に先立って、本開示に関する技術的な検討事項及び本開示に係る技術の概要等について
図1に示す具体例を用いて説明する。
【0017】
図1に示す具体例において、ストレージ装置Aは、1以上のボリューム(データを記憶可能な記憶領域)をまとめてグループを形成する。ストレージ装置は、例えば、書き込み順序を保証する複数のボリュームをまとめて、グループを形成してもよい。
【0018】
プライマリサイトのストレージ装置Aは、ホスト計算機Aからの書き込み要求を受け付ける。係る書き込み要求に関するデータは、ストレージ装置Aのキャッシュに記録される(
図1のS1)。ストレージ装置Aは、キャッシュに記録されたデータを、書き込み要求を受け付けた順に(
図1の具体例では”a1”、”b1”、”c1”の順に)書き込み順序保証用のバッファ(コンセントレータ)へコピーする(
図1のS2)。ストレージ装置Aは、ホスト計算機Aへレスポンスを返し(S3)、リモートサイトのストレージ装置Bに対して書き込み順序を維持したままコピー(レプリケーション)を実行する(
図1のS4)。この場合、ストレージ装置Aのコンセントレータに記録されデータは、ストレージ装置Bのディストリビュータに、書き込み順序を維持して複製される。リモートサイトのストレージ装置Bは、ストレージ装置Aから書き込みのあった順に、各データを取り出して、キャッシュにコピーする(
図1のS5)。
【0019】
例えば、ストレージ装置Aにおけるコンセントレータは、メモリ等を利用して実現可能であるが、バッファ容量には限りがある。例えば、レプリケーション処理の対象である全てのグループのデータが同じコンセントレータのバッファを共用する場合、コンセントレータのバッファが溢れる可能性がある。コンセントレータのバッファが溢れた場合、書き込み順序が保証できなくなる可能性がある。このような状況においては、既にコピー済みのデータに対する複製先ボリュームの一貫性を保証するため、例えば、書き込み順序保証の対象となる全てのグループを対象に、一律にレプリケーションを停止する処理が実行されることがある。これにより、例えば、重要度が高い処理(優先して実行すべき処理)に関するデータのレプリケーション処理も、重要度が低い処理に関するデータのレプリケーション処理も、一律に停止してしまう、という状況が発生し得る。
【0020】
本開示に係る技術は、このような問題を解決可能な技術として、例えば、以下のような動作を実現可能な構成を備えたストレージ装置等を提供可能である。
【0021】
即ち、以下の実施形態を用いて説明する本開示に係るストレージ装置においては、例えば、ストレージ装置の管理者あるいはユーザ等(以下「ユーザ」と総称する)は、書き込み順序を保証する複数のボリュームをグループ化して登録することができる。また、ストレージ装置のユーザは、各グループに関する優先度(例えば、「高」、「中」、「低」等)を設定することができる。また、ストレージ装置のユーザは、例えば、書き込み順序保証用バッファ(コンセントレータ)の使用容量に関する基準(基準値、基準量等)を設定することができる。
【0022】
本開示に係るストレージ装置は、コンセントレータの使用容量が基準を超えた場合(例えば、使用容量が閾値を超過した場合)、優先度の低いグループから順に、レプリケーション処理を停止できるよう構成される。より具体的には、本開示に係るストレージ装置は、例えば、コンセントレータに配置されたコピーが完了していないデータを削除する処理を実行し、削除したデータに関するレプリケーション処理を停止することができる。
【0023】
上記のような処理を実現可能な構成を備えた本開示に係るストレージ装置によれば、コンセントレータの使用容量を基準として、優先度が低いグループから順にコンセントレータ内のデータが削除され、当該グループに関する非同期レプリケーションが停止される。これにより、本開示に係るストレージ装置は、コンセントレータの空き容量を増大させることが可能であり、コンセントレータのバッファが溢れることを防止することが可能である。更に、本開示に係るストレージ装置は、優先度が高いグループのデータが削除されないよう処理することで、優先度が高いグループに関する非同期レプリケーション処理を継続可能である。
【0024】
以下、上記のような処理を実現可能な構成を有するストレージ装置について、より具体的に説明する。なお、以下の各実施形態に記載されているストレージ装置の構成は例示であり、本開示の技術範囲はそれらには限定されない。以下の各実施形態におけるストレージ装置を構成する構成要素の区分け(例えば、機能的な単位による分割)は、ストレージ装置を実現可能な一例である。当該ストレージ装置の実装に際しては、以下の例示に限定されず、様々な構成が想定される。即ち、以下の各実施形態におけるストレージ装置を構成する構成要素は、更に分割されてもよい。また、以下の各実施形態におけるストレージ装置を構成する1以上の構成要素が、統合されてもよい。
【0025】
以下において説明するストレージ装置は、単体の装置(物理的あるいは仮想的な装置)を用いて構成されてもよく、複数の離間した装置(物理的あるいは仮想的な装置)を用いて実現されてもよい。ストレージ装置が複数の装置により構成される場合、各装置の間は有線、無線、又はそれらを適切に組合せた通信ネットワーク(通信回線)により通信可能に接続されてもよい。係る通信ネットワークは、物理的な通信ネットワークであってもよく、仮想的な通信ネットワークであってもよい。以下において説明するストレージ装置、あるいは、その構成要素を実現可能なハードウェア構成については、後述する。
【0026】
<実施形態>
以下、本開示に係る技術の実施形態について、
図2Aを参照して説明する。
図2Aに例示するように、本実施形態におけるストレージ装置200は、主に、データを記憶可能な記憶領域を有する1以上のボリューム201と、入出力制御部202と、コンセントレータ203と、レプリケーション制御部204と、を有する。ストレージ装置200は、
図2Bに例示するように、更に送信部205及びキャッシュ206を有してもよい。ストレージ装置200を構成するこれらの構成要素は、適切な通信方法を用いて、相互に通信可能に接続されていてもよい。
【0027】
ストレージ装置200は、適切な通信方法(例えば、SAN(Storage Area Network))によりホスト計算機210と通信可能に接続されており、ホスト計算機210からの書き込み要求(Write I/O)を受信可能である。ホスト計算機210は、特に限定されず、例えば、物理的な又は仮想的な各種情報処理装置であってよい。
【0028】
また、ストレージ装置200は、例えば、管理コンソール220と通信可能に接続されていてもよい。ストレージ装置200のユーザ等は、管理コンソール220を用いてストレージ装置200に関する各種管理作業を実施してよい。管理コンソール220は、特に限定されず、例えば、物理的な又は仮想的な各種情報処理装置であってよい。
【0029】
ストレージ装置200においては、書き込み順序が保障される1以上のボリューム201(後述)を含むグループが1以上形成される。それぞれのグループには、優先度が設定される。具体的には、例えば、ストレージ装置200のユーザが、書き込み順序保証を行う複数のボリューム201をグループ化することで、「グループ1」、「グループ2」、「グループ3」を形成するよう、管理コンソール220を介してストレージ装置200を設定してもよい。グループの数は、特に限定されず、ユーザにより適宜設定されてよい。
【0030】
ユーザは、上記グループに対して、それぞれ優先度(例えば、「高」「中」「低」等)を設定してもよい。以下の説明においては、一つの具体例として、各グループに関する優先度に、「高」「中」「低」のいずれかが設定されることを想定する。なお、各グループに関する優先度はこれには限定されず、例えば、複数のレベルの優先度を表現可能な数値や記号等が適宜設定されてよい。ストレージ装置200は、各グループに関する情報(例えば、当該グループに含まれるボリュームに関する情報及び当該グループに対する優先度を表す情報等)を適切な方法(例えばテーブル構造等)を用いて保持してよい。
【0031】
また、ストレージ装置200においては、後述するコンセントレータ203に対して、レプリケーション処理の中断に関する判断に用いられる基準(基準値、基準量等)が設定されてよい。
【0032】
係る基準として、例えば、コンセントレータ203の全容量に対する使用容量の割合(例えばパーセンテージ)を表す値(閾値)が設定されてもよい。コンセントレータ203の使用容量は、例えば、コンセントレータに配置された、リモートサイトへのコピーが完了していないデータのサイズを表してもよい。また、係る基準として、例えば、コンセントレータ203に配置されたデータの総容量を表す値(基準量)が設定されてもよい。例えば、ストレージ装置200のユーザが、管理コンソール220を介して、コンセントレータ203に関する基準を設定してもよい。ストレージ装置200は、係る基準を表す情報(例えば、閾値を表す数値等)を適切な方法(例えばテーブル構造等)を用いて保持してよい。以下、ストレージ装置200の各構成要素について説明する。
【0033】
ボリューム201は、データを記憶可能な記憶領域を提供する。ボリューム201は、例えば、論理的な記憶領域により構成されてもよく、物理的な記憶領域により構成されてもよい。
【0034】
入出力制御部202(入出力制御手段)は、ホスト計算機210からの書き込み要求を受け付ける。入出力制御部202は、ホスト計算機210からの書き込み要求により指定されたデータ(以下、「Writeデータ」と記載することがある)を、適切なボリューム201に書き込んでもよい。また、入出力制御部202は、例えば、Writeデータから複製した複製データを、コンセントレータ203に配置してもよい。また、入出力制御部202は、ホスト計算機210から受け付けたWriteデータをレプリケーション制御部204に提供し、レプリケーション制御部204が、係るWriteデータをコンセントレータ203に複製してもよい。
【0035】
コンセントレータ203は、書き込み順序が保証されるボリュームに対するWriteデータから複製された複製データを、当該書き込み要求の到着順に配置する格納領域(バッファ)を有する。コンセントレータ203には、Writeデータの複製データが詰めて配置されてもよい。また、コンセントレータ203から複製データが削除された場合、コンセントレータ203は、削除された複製データが記録されていた領域に、他の複製データを順次詰めて配置してもよい。
【0036】
レプリケーション制御部204(レプリケーション制御手段)は、コンセントレータ203に記録されたデータを、他の装置に複製するレプリケーション処理を制御可能である。レプリケーション制御部204は、例えば、コンセントレータ203の使用容量に応じて、コンセントレータ203に配置された複製データに関する複製元のデータが書き込まれたボリューム201に関する優先度が低い順に、複製データを削除する。
【0037】
より具体的には、レプリケーション制御部204は、例えば、以下のような処理を実行可能であってよい。レプリケーション制御部204は、例えば、あるタイミングにおけるコンセントレータ203の使用容量(コンセントレータ203に配置された複製データの総サイズ)を確認する。コンセントレータ203の使用容量が、設定された閾値を超過していた場合、レプリケーション制御部204は、例えば、コンセントレータ203に配置された各複製データに対する複製元のデータの書き込み先であるボリューム201に関する優先度を特定する。係るボリューム201に関する優先度は、当該ボリューム201が含まれるグループに設定された優先度であってよい。
【0038】
レプリケーション制御部204は、上記優先度が低い順に、コンセントレータ203に配置された複製データを削除してよい。以下、各グループに対して、優先度として「低」、「中」及び「高」のいずれかが設定されていることを想定する。また、以下においては、優先度が「低」のグループに含まれるボリュームに対するWriteデータから複製された複製データを、「優先度が「低」の複製データ」と記載する場合がある。同様に、優先度が「中」のグループに含まれるボリュームに対するWriteデータから複製された複製データを、「優先度が「中」の複製データ」と記載する場合がある。同様に、優先度が「高」のグループに含まれるボリュームに対するWriteデータから複製された複製データを、「優先度が「高」の複製データ」と記載する場合がある。
【0039】
レプリケーション制御部204は、例えば、優先度が最も低い複製データ(優先度が「低」の複製データ)を、コンセントレータ203から削除してよい。レプリケーション制御部204は、優先度が「低」の複製データを削除した後のコンセントレータ203の使用容量を確認し、係る使用容量が閾値を超過している場合、更に、優先度が「中」の複製データを、コンセントレータ203から削除してよい。レプリケーション制御部204は、優先度が「高」の複製データについては、コンセントレータ203から削除しないよう制御してもよい。優先度が「高」のデータは、例えば、重要な業務に関するデータである可能性があり、比較的優先度が低い業務に関する複製データを削除することで、優先度が高い業務に関するレプリケーション処理を継続できるからである。
【0040】
上記に限定されず、レプリケーション制御部204は、例えば、最も高い優先度から所定のレベルの優先度までのデータを、コンセントレータ203から削除しないよう、制御してもよい。具体例を用いて説明すると、係る所定のレベルの優先度が「中」であった場合、レプリケーション制御部204は、最も高い優先度である優先度「高」のデータに加え、優先度「中」のデータをコンセントレータ203から削除しないよう、制御してもよい。
【0041】
ストレージ装置200が送信部250を有する場合、レプリケーション制御部204は、送信部205に対して、コンセントレータ203に記録されたデータの送信処理の実行又は停止を指示可能であってもよい。
【0042】
送信部205(送信手段)は、コンセントレータ203に配置された複製データを、ホスト計算機210からの書き込みが行われた順序(即ち、書き込み要求を受け付けた順序)を維持して他の装置に転送する。これにより、送信部205は、書き込み順序を保証したコピーを実行することができる。
図2Bに例示する具体例の場合、送信部205は、コンセントレータ203に配置されたデータ”a1”、”b1”、”c1”の順序を維持したまま、他の装置に対してこれらのデータを送信することで、書き込み順序を保証したコピーを実行する。送信部205は、正常にコピーが完了した場合、コンセントレータ203から、コピー済みの複製データを削除してよい。
【0043】
キャッシュ206は、ホスト計算機210から入出力制御部202が受け付けた書き込み要求に関するWriteデータを一時的に保持するキャッシュメモリである。ストレージ装置200がキャッシュ206を有する場合、入出力制御部202は、ホスト計算機210から受け付けた書き込み要求に関するWriteデータを、キャッシュ206に書き込んでもよい。レプリケーション制御部204は、キャッシュ206に書き込まれたWriteデータが、書き込み順序が保障されるボリュームへの書き込み要求に関するWriteデータである場合、当該Writeデータから複製した複製データをコンセントレータ203に配置してもよい。
【0044】
上記のように構成されたストレージ装置200の動作について
図3に例示するフローチャートを参照して説明する。
図3に例示するフローチャートにおける各ステップについては、動作に影響しない範囲で、実行順序が入れ替えられてもよく、1以上のステップが並行に実行されてもよい。
【0045】
ストレージ装置200(入出力制御部202)は、ホスト計算機210から、書き込み(Write I/O)要求を受け付ける(ステップS301)。
【0046】
ストレージ装置200(レプリケーション制御部204)は、受け付けた書き込み要求が、書き込み順序が保障されるボリュームへの書き込み要求であるか否かを確認する(ステップS302)。
【0047】
受け付けた書き込み要求が、書き込み順序が保障されるボリュームへの書き込み要求である場合(ステップS302においてYES)、ストレージ装置200は、コンセントレータ203に、Writeデータから複製した複製データを配置する。この際、ストレージ装置200は、書き込み要求を受け付けた順に、コンセントレータ203に複製データを配置してよい。なお、ステップS302においてNOの場合、ストレージ装置200は、ホスト計算機からの更なる書き込みを待ってもよく、処理を終了してもよい。
【0048】
ストレージ装置200(入出力制御部202)は、ホスト計算機210に、入出力レスポンスを返す(ステップS304)。
【0049】
ストレージ装置200(レプリケーション制御部204)は、コンセントレータ203の使用容量に応じて、必要な場合には、優先度の低い順に、コンセントレータ203に配置された複製データを削除する(ステップS305)。ストレージ装置200は、例えば、コンセントレータ203の使用容量が、設定された閾値を超過した場合に、優先度の低い順に、コンセントレータ203に配置された複製データを削除してもよい。具体的には、ストレージ装置200は、例えば、優先度が「低」の複製データを、コンセントレータ203から削除する。ストレージ装置200は、例えば、優先度が「低」の複製データを削除した後のコンセントレータ203の使用容量が閾値を超過している場合、優先度が「中」の複製データを、コンセントレータ203から削除してよい。ストレージ装置200は、優先度が「高」の複製データについては、コンセントレータ203から削除せずともよい。なお、ストレージ装置200は、例えば、コンセントレータ203の使用容量が、設定された閾値を超過していない場合には、コンセントレータ203に配置された複製データを削除せずともよい。
【0050】
ストレージ装置200(送信部205)は、コンセントレータ203に配置された複製データを、他の装置(複製先の装置)に送信してよい(ステップS306)。なお、ステップS305と、ステップS306とは、全体の動作に影響しない範囲で並行に実行されてもよく、実行順序が入れ替えられてもよい。
【0051】
上記のように構成されたストレージ装置200によれば、コンセントレータ203の使用容量に応じて(例えば、使用容量が閾値を超過したか否かに応じて)、コンセントレータ203に配置された複製データを、優先度が低いグループから順に削除することができる。ストレージ装置200は、例えば、優先度が「低」又は「中」のグループから順に、書き込み順序を保証した非同期レプリケーションを停止することができる。換言すると、ストレージ装置200は、例えば、優先度が「高」のグループを、常に重要度が高いグループとして扱うことも可能であり、優先度が「高」のグループに関するデータが削除されないように保護することが可能である。
【0052】
これにより、ストレージ装置200は、優先度が「高」のグループに対して書き込み順序を保証した非同期レプリケーションを継続することができる。また、ストレージ装置200は、優先度が「低」又は「中」のグループに関する複製データにより、コンセントレータ203の使用容量が溢れる状況を回避可能である。即ち、ストレージ装置200によれば、優先度が「低」又は「中」のグループに関する複製データが、優先度が「高」のグループに関する複製データに影響を与えることなく、コンセントレータ203の容量を効率的に使用できる。
【0053】
以上より、ストレージ装置200によれば、優先度が高いレプリケーション処理を継続可能な、複数ボリューム間のデータ書き込み順序を保証したレプリケーション技術が実現される。
【0054】
[具体例]
次に、上記説明した実施形態を実現可能な具体例について図面を参照して詳細に説明する。
【0055】
図4を参照すると、本実施例におけるストレージ装置401(ストレージ装置A)は、プライマリサイト400に配置される。ストレージ装置401は、プライマリサイト400に配置された1以上のホスト計算機402と適切な通信方法(例えば、SAN)を用いて通信可能に接続されてよい。ストレージ装置401は、プライマリサイト400における管理コンソール403と、適切な通信方法(例えば、LAN(Local Area Network))を用いて通信可能に接続されてよい。以下、ストレージ装置401を、第1のストレージ装置を記載する場合がある。
【0056】
リモートサイト410には、ストレージ装置407(ストレージ装置B)と、1以上のホスト計算機408とが配置される。ホスト計算機408と、ストレージ装置407との間は適切な通信方法(例えばSAN等)により通信可能に接続されている。ストレージ装置407は、ストレージ装置401に記録されたデータがリモートレプリケーションにより複製される宛先である。ストレージ装置407は、ストレージ装置401と同様の構成を有してもよく、ストレージ装置401とは異なる構成を有してもよい。以下、ストレージ装置407を、第2のストレージ装置を記載する場合がある。
【0057】
プライマリサイト400と、リモートサイト410との間は、通信ネットワーク405を介して接続される。通信ネットワーク405は、インターネット等の広域ネットワークであってもよく、構内LAN等の局所的ネットワークであってもよい。
【0058】
プライマリサイト400に配置されたストレージ装置401と、通信ネットワーク405との間は、レプリケーションリンクにより接続されている。同様に、リモートサイト410に配置されたストレージ装置407と、通信ネットワーク405との間は、レプリケーションリンクにより接続されている。
【0059】
以下、本実施形態におけるストレージ装置401の具体的な構成について、
図5を参照して説明する。
【0060】
ストレージ装置401は、1以上のボリューム501と、ホストIO(Input Output)制御部502と、コンセントレータ503と、レプリケーション管理部504aと、バッファ監視部504bと、送信部505と、キャッシュ506と、を含む。ストレージ装置401は、上記説明したストレージ装置200を実現可能な装置である。ボリューム501は、上記説明したボリューム201と同様に構成されてよい。ホストIO制御部502は、上記説明した入出力制御部202を実現可能な構成要素である。コンセントレータ503は、上記説明したコンセントレータ203を実現可能な構成要素である。レプリケーション管理部504aと、バッファ監視部504bとは、上記説明したレプリケーション制御部204を実現可能な構成要素である。送信部505は、上記説明した送信部205を実現可能な構成要素である。キャッシュ506は、上記説明したキャッシュ206と同様に構成されてよい。
【0061】
また、ストレージ装置401は、各種設定情報を保持するデータとして、ペア管理テーブル507と、グループ管理テーブル508と、コンセントレータ管理テーブル509と、閾値管理テーブル510と、を含んでもよい。これらのテーブルは、例えば、ファイルやデータベース等によりデータを保持可能な管理情報保持部に保持されてもよい。なお、ペア管理テーブル507、グループ管理テーブル508、コンセントレータ管理テーブル509、閾値管理テーブル510は、テーブル構造を用いて実現されてもよく、その他の適切なデータ構造を用いて実現されてもよい。
【0062】
また、ストレージ装置401は、更に、グループ登録部511を有してもよい。
【0063】
ストレージ装置401においては、1以上のボリュームを含むグループが形成される。
図5に示す具体例においては、係るグループとして、「グループ1」、「グループ2」、「グループ3」が例示されている。グループの数は特に限定されず、例えば、ストレージ装置401のユーザにより適宜設定されてよい。
図5に示す具体例において、「グループ1」は3つのボリューム「MV1」、「MV2」、「MV3」を含む。「グループ2」は、2つのボリューム「MV4」、「MV5」を含む。「グループ3」は、3つのボリューム「MV6」、「MV7」、「MV8」を含む。一つのグループに含まれるボリューム501の数は、
図5に示した例に限定されず、例えば、ストレージ装置401のユーザ等によって適宜選択されてよい。以下、ストレージ装置401において形成されたグループを「複製元グループ」と記載する場合がある。ストレージ装置401に含まれるボリューム501を、「複製元ボリューム」と記載する場合がある。
【0064】
リモートサイト410におけるストレージ装置407は、例えば、データを記憶可能な記憶領域であるボリューム512と、ホストIO制御部513と、ディストリビュータ514と、レプリケーション管理部515と、受信部516と、キャッシュ517と、を有する。
【0065】
ストレージ装置407は、ペア管理テーブル518と、グループ管理テーブル519と、を有してもよい。これらのテーブルは、例えば、ファイルやデータベース等によりデータを保持可能な管理情報保持部に保持されてもよい。なお、ペア管理テーブル518、グループ管理テーブル519はテーブル構造を用いて実現されてもよく、その他の適切なデータ構造を用いて実現されてもよい。
【0066】
ストレージ装置407は、更に、グループ登録部520を有してもよい。
【0067】
ストレージ装置407においては、1以上のボリューム512を含むグループが形成される。
図5に示す具体例においては、係るグループとして、「グループ1’」、「グループ2’」、「グループ3’」が例示されている。「グループ1’」、「グループ2’」、「グループ3’」は、ストレージ装置401における「グループ1」、「グループ2」、「グループ3」にそれぞれ対応するグループである。ストレージ装置407におけるグループの数は特に限定されない。ストレージ装置407には、例えば、ストレージ装置401に含まれるグループの数と同じ数のグループが形成されてもよい。
【0068】
図5に示す具体例において、「グループ1’」は3つのボリューム「RV1」、「RV2」、「RV3」を含む。「グループ2’」は、2つのボリューム「RV4」、「RV5」を含む。「グループ3’」は、3つのボリューム「RV6」、「RV7」、「RV8」を含む。以下、ストレージ装置407において形成されたグループを「複製先グループ」と記載する場合がある。ストレージ装置407に含まれるボリュームを、「複製先ボリューム」と記載する場合がある。
【0069】
ストレージ装置401とストレージ装置407とにおいて対応するグループ(例えば「グループ1」と「グループ1’」)に含まれる複製元ボリュームと、複製先ボリュームとは、ペアとして設定される。例えば、レプリケーション管理部504a(後述)は、複製元ボリュームである「MV1」と複製先ボリュームである「RV1」とをペアとして設定する。同様に、「MV2」と「RV2」、「MV3」と「RV3」が、それぞれペア設定される。また、グループ登録部511(後述)は、複製元グループである「グループ1」に、複製元ボリューム「MV1」、「MV2」、「MV3」が含まれること(即ち「グループ1」が、ボリューム「MV1」、「MV2」、「MV3」により形成されること)を登録することができる。グループ登録部511は、複製元「グループ1」と、複製先「グループ1’」との対応関係を登録することができる。「グループ2」と「グループ2’」、及び、「グループ3」と「グループ3’」の関係についても同様に登録される。
【0070】
以下、ストレージ装置401の構成要素について説明する。
【0071】
ボリューム501は、上記説明したボリューム201と同様、データを記憶可能な記憶領域である。ボリューム501は、論理的な記憶領域により構成されてもよく、物理的な記憶領域により構成されてもよい。以下、ボリューム501を、「第1のボリューム」と記載する場合がある。
【0072】
ストレージ装置401におけるホストIO制御部502は、ホスト計算機402から発行された、読み込み(Read)や書き込み(Write)に関する入出力(I/O(Input/Output)要求を受け付ける。ホストIO制御部502は、ホスト計算機402から受け付けた入出力要求に関するデータ(例えば、書き込み要求に関するWriteデータ等)を、キャッシュ506に記録(格納)する機能を有してよい。また、ホストIO制御部502は、入出力処理の結果をホスト計算機402に返却する機能を有してよい。
【0073】
コンセントレータ503は、ホスト計算機402から受け付けたWriteのI/O要求が、書き込み順序が保証されるボリューム501に対する書き込み要求であった場合に、キャッシュ506に記録された当該I/O要求に関するデータがコピーされる格納領域(バッファ)を有する。即ち、コンセントレータ503には、書き込み順序が保証されるボリューム501に対するWriteデータから複製された複製データが配置される。コンセントレータ503には、ストレージ装置401にWrite I/O要求が通知された順に、当該書き込み要求に関するWriteデータが詰めて(例えば、バッファの前方に詰めて)でコピーされる。なお、送信部505(後述)により、他の装置(例えば、ストレージ装置407)へのデータ送信が完了した場合(即ち、他の装置にデータが複製された場合)、送信が完了したデータは、送信部505により削除される。したがって、コンセントレータ503には、例えば、書き込み順序保証の対象であり、かつ、他の装置に送信されていないデータが、Write I/O要求を受け付けた順に、時系列で前方から配置されている。
【0074】
レプリケーション管理部504aは、ストレージ装置401におけるレプリケーション処理に関する処理を実行可能である。以下、レプリケーション管理部504aを、「第1のレプリケーション管理部」と記載する場合がある。
【0075】
レプリケーション管理部504aは、例えば、管理コンソール403(後述)から、複製元ボリュームと複製先ボリュームに対するペア設定に関する要求を受け付け、これらに関するペア設定処理を実行してよい。レプリケーション管理部504aは、例えば、管理コンソール403からレプリケーション処理要求を受け付け、レプリケーション処理を実行してよい。なお、レプリケーション処理とは、「レプリケート」「セパレート」「リストア」などの、ボリューム間におけるデータのコピー処理やコピーの切離し(例えばコピーの停止)処理等を意味する。
【0076】
レプリケーション管理部504aは、管理コンソール403から受け付けた要求に関する処理結果を、ペア管理テーブル507及びグループ管理テーブル508に反映してよい。また、レプリケーション管理部504aは、管理コンソール403から受け付けた要求に関する処理結果を管理コンソール403に送信してよい。
【0077】
レプリケーション管理部504aは、キャッシュ506(後述)に記録されたデータが、書き込み順序が保証されるグループに含まれるボリューム501に対するWrite I/O要求に関するWriteデータであるか否かをチェックする。チェックしたデータが、書き込み順序が保証されるボリューム501に対するWriteデータである場合、レプリケーション管理部504aは、キャッシュ506に記録されたWriteデータをコンセントレータ503にコピーする。
【0078】
レプリケーション管理部504aは、キャッシュ506に記録されたデータをコンセントレータ503にコピーした際、コンセントレータ503への書き込み(具体的には、コンセントレータ503が有するバッファへの書き込み)が発生したことを、バッファ監視部504bに通知してよい。
【0079】
バッファ監視部504bは、コンセントレータ503を監視し、コンセントレータ503の使用容量を適切に管理する処理を実行可能である。以下、コンセントレータ503が有するバッファの使用容量を、「コンセントレータ503の使用容量」と記載する場合がある。バッファ監視部504bは、例えば、ある特定のタイミングにおけるコンセントレータ503の使用容量を確認することができる。バッファ監視部504bは、例えば、コンセントレータ503を定期的にポーリングすることで、コンセントレータ503の使用容量を確認してもよい。バッファ監視部504bは、例えば、レプリケーション管理部504aからコンセントレータ503に対する書き込み通知を受信した際、コンセントレータ503の使用容量を確認してもよい。
【0080】
バッファ監視部504bは、コンセントレータ503の使用容量が、設定された基準(例えば、基準値)を超えているか否かをチェックする処理を実行してよい。具体的には、バッファ監視部504bは、例えば、閾値管理テーブル510(後述)に設定された閾値を取得し、係る閾値と、コンセントレータ503の使用容量とから、コンセントレータ503の使用容量が閾値を超過しているか否か(あるいは、閾値以上であるか否か)を確認してよい。
【0081】
バッファ監視部504bは、コンセントレータ503の使用容量が閾値を超過している場合に、コンセントレータ503に配置された複製データの少なくとも一部を削除する処理を実行可能である。バッファ監視部504bは、例えば、コンセントレータ503に配置された複製データの複製元であるWriteデータの書き込み先ボリュームに関する優先度(当該ボリュームが含まれるグループの優先度)に応じて、複製データを削除可能である。
【0082】
具体的には、バッファ監視部504bは、コンセントレータ503の使用容量が閾値を超えている場合、グループ管理テーブル508(後述)から、非同期レプリケーション処理を停止可能なグループを検索してよい。バッファ監視部504bは、係る検索の結果、非同期レプリケーション処理を停止可能なグループが存在する場合、コンセントレータ503から当該グループのデータを削除する。また、バッファ監視部504bは、コンセントレータ管理テーブル509(後述)から当該グループに該当するエントリを削除する。以下、バッファ監視部504bが実行する上記処理を、「バッファ削除処理」と記載する場合がある。バッファ削除処理の具体的な内容については後述する。バッファ監視部504bは、バッファ削除処理の実行をレプリケーション管理部504aに通知してもよい。
【0083】
送信部505は、コンセントレータ503に書き込みが行われた順序を維持したまま、コンセントレータ503から複製データを読み出し、他の装置(例えば、ストレージ装置407)に送信する処理を実行可能である。具体的なデータの送受信方法にとしては、例えば、上記特許文献1に開示された方法を採用してもよく、その他の適切な方法を採用してもよい。
【0084】
キャッシュ506は、ストレージ装置401に用意されたキャッシュメモリである。キャッシュ506は、ホスト計算機402から受け付けたRead やWriteのI/O要求のデータを、一時的に格納可能である。
【0085】
ペア管理テーブル507は、ストレージ装置401に含まれる各ボリューム501のペア設定(複製元ボリュームと、複製先ボリュームとペアとして関連付ける設定)に関する情報を保持する。ペア管理テーブル507の具体的な構成については後述する。
【0086】
グループ管理テーブル508は、ストレージ装置401において形成されたグループの設定に関する情報を保持する。グループ管理テーブル508の具体的な構成については後述する。
【0087】
コンセントレータ管理テーブル509は、コンセントレータ503に配置された複製データに関する情報と、当該複製データの配置場所に関する情報と、を保持する。コンセントレータ管理テーブル509の具体的な構成については後述する。
【0088】
閾値管理テーブル510は、コンセントレータ503の使用容量に関する閾値(基準値)を保持する。閾値管理テーブル510の具体的な構成については後述する。
【0089】
グループ登録部511は、ストレージ装置401において、書き込み順序の保証が必要な複数のボリューム501をまとめたグループを設定する処理を実行可能である。また、グループ登録部511は、コンセントレータ503の使用容量に関する基準(閾値)を設定する処理を実行可能である。
【0090】
具体的には、グループ登録部511は、管理コンソール403から、書き込み順序の保証が必要な複数のボリューム501に対するグループ登録要求を受け付け、当該要求を処理した結果をペア管理テーブル507及びグループ管理テーブル508に反映することができる。また、グループ登録部511は、管理コンソール403から、コンセントレータ503に対する閾値の設定要求を受け付けて、当該要求の処理結果を閾値管理テーブル510に反映することができる。グループ登録部511は、管理コンソール403から受け付けた要求を処理した結果を、管理コンソール403に送信してもよい。
【0091】
以下、ストレージ装置407の構成について説明する。なお、以下において説明するストレージ装置407の構成は一例であり、ストレージ装置407は、ストレージ装置401と同様の構成を有してもよい。また、ストレージ装置401は、以下に例示するストレージ装置407とは異なる構成のストレージ装置にデータを送信することで、レプリケーション処理を実行してもよい。
【0092】
ストレージ装置407におけるボリューム512は、上記説明したボリューム501と同様、データを記憶可能な記録領域を提供する。以下、ボリューム512を「第2のボリューム」と記載する場合がある。
【0093】
ストレージ装置407におけるホストIO制御部513は、ホスト計算機408からの入出力要求を処理する処理を実行可能である。ホストIO制御部513は、上記説明したホストIO制御部502と同様の処理を実行するよう構成されてもよい。
【0094】
ストレージ装置407におけるディストリビュータ514は、受信部516(後述)がストレージ装置401から受信したデータが配置されるバッファを有する。ディストリビュータ514のバッファには、受信部516がデータを受信した順番に、当該データが詰めて(例えばバッファの前方に詰めて)配置されてもよい。
【0095】
ストレージ装置407におけるレプリケーション管理部515は、上記説明したレプリケーション管理部504aと同様、複製元ボリュームと複製先ボリュームとに対するペア設定及びレプリケーション処理要求を受け付け、係る要求の処理結果をペア管理テーブル518及びグループ管理テーブル519に反映する処理を実行してもよい。レプリケーション管理部515は、係る要求を管理コンソール403から受け付けてもよく、他の適切な装置(例えば、ホスト計算機408、ストレージ装置401等)から受け付けてもよい。以下、レプリケーション管理部515を、「第2のレプリケーション管理部」と記載する場合がある。
【0096】
受信部516は、送信部505から受信したデータを、ディストリビュータ514に配置(コピー)する処理を実行可能である。また、受信部516は、ディストリビュータ514に配置されたデータを、キャッシュ517(後述)にコピーする処理を実行してもよい。
【0097】
キャッシュ517は、上記説明したキャッシュ506と同様、ストレージ装置407に用意されたキャッシュメモリである。キャッシュ517には、ホスト計算機408から受け付けた入出力要求に関するデータが一時的に格納(記録)される。また、キャッシュ517には、ディストリビュータ514からコピーされたデータが一時的に格納(記録)される。
【0098】
ストレージ装置407におけるペア管理テーブル518は、ストレージ装置407に含まれる各ボリューム512のペア設定(複製元ボリュームと、複製先ボリュームとのペアを関連付ける設定)に関する情報を保持する。本具体例におけるペア管理テーブル518は、ペア管理テーブル507と同様に構成されることを想定する。
【0099】
ストレージ装置407におけるグループ管理テーブル519は、ストレージ装置407において形成されたグループの設定に関する情報を保持する。本具体例におけるグループ管理テーブル519は、グループ管理テーブル508と同様に構成されることを想定する。
【0100】
ストレージ装置407におけるグループ登録部520は、ストレージ装置407において、書き込み順序の保証が必要な複数のボリューム512をまとめたグループを設定する処理を実行可能である。なお、グループ登録部520は、上記説明したグループ登録部511と同様の処理を実行するよう構成されてもよい。
【0101】
以下、ペア管理テーブル507、グループ管理テーブル508、コンセントレータ管理テーブル509、及び、閾値管理テーブル510の具体的な構成について、図面を参照して説明する。
【0102】
図6は、ペア管理テーブル507の一例を示す説明図である。ペア管理テーブル507は、ID(識別子:Identifier)601、複製元ボリューム名602、複製元ストレージ名603、複製先ボリューム名604、複製先ストレージ名605、ペア状態606、ペア種別607、書き込み順序保証フラグ608、複製元グループ名609、複製先グループ名610を表す各カラムを有する。
【0103】
ID601はテーブルの主キーである。複製元ボリューム名602は、複製元のボリューム(本具体例の場合はボリューム501)を一意に特定する識別子である。複製元ストレージ名603は、複製元ボリュームが属するストレージ装置(本具体例ではストレージ装置401)を一意に特定する識別子である。複製先ボリューム名604は、複製先のボリューム(本具体例では、例えば、ボリューム512)を一意に特定する識別子である。複製先ストレージ名605は、ボリューム512が属するストレージ(本具体例の場合はストレージ装置407)を一意に特定する識別子である。
【0104】
ペア状態606は、複製元ボリュームと複製先ボリュームとのレプリケーションペア(複製が実行されるペア)の状態を表す。ペア状態606には、「レプリケート」、「セパレート」、「リストア」を表す情報(例えば、数値や記号等)が設定されてよい。「レプリケート」は、複製元ボリュームから複製先ボリュームに対するコピーが実行される状態を意味する。「セパレート」は、複製元ボリュームと複製先ボリュームと間のコピー動作を切り離された(レプリケーションが実行されない)状態を意味する。「リストア」は、複製先ボリュームから複製元ボリュームに対するコピーが実行される状態を意味する。
【0105】
ペア種別607は、レプリケーションペアが、あるストレージ装置の内部に配置されているか、又は、複数のストレージ装置に分散して配置されているか、を表す。以下、レプリケーションペアが、一つのストレージ装置(例えばストレージ装置401)の内部に配置されている場合、係るレプリケーションペアを「筐体内ペア」と記載する場合がある。また、レプリケーションペアが、複数のストレージ装置(例えば、ストレージ装置401及びストレージ装置407)に分散して配置されている場合、係るレプリケーションペアを、「筐体間ペア」と記載する。レプリケーションペア(複製元ボリューム名602により識別されるボリュームと、複製先ボリューム名604により識別されるボリュームとのペア)が筐体内ペアである場合、ペア種別607には「ローカル」を表す情報が設定される。また、レプリケーションペアが筐体間ペアである場合、ペア種別607には、「リモート」を表す情報が設定される。
【0106】
書き込み順序保証フラグ608は、複数ボリューム間における書き込み順序の保証が必要かどうかを表す情報(フラグ)である。書き込み順序の保証が必要な場合には「YES」を表す情報が設定され、不要な場合は「NO」を表す情報が設定される。
【0107】
複製元グループ名609は、複数ボリューム間における書き込み順序の保証が必要な場合に、複製元ストレージ(この場合はストレージ装置401)において、複数ボリュームをまとめたグループを一意に特定可能な識別子である。複数ボリューム間における書き込み順序の保証が不要な場合は、「−」(該当するグループ無し)を表す情報が設定される。複製先グループ名610は、複数ボリューム間における書き込み順序の保証が必要な場合に、複製先ストレージ(この場合はストレージ装置407)において、複数のボリュームをまとめたグループを一意に特定可能な識別子である。複数ボリューム間における書き込み順序の保証が不要な場合は、「−」(該当するグループ無し)を表す情報が設定される。
【0108】
図6に示す具体例の場合、例えば、1行目乃至3行目に登録された内容は、以下の情報を表す。即ち、係る内容は、複製元ボリューム「MV1」、「MV2」、「MV3」が、ストレージ装置401(ストレージ装置A)に配置されていることを表す。また、複製元ボリューム「MV1」、「MV2」、「MV3」が、ストレージ装置407(ストレージ装置B)に配置された複製先ボリューム「RV1」、「RV2」、「RV3」とそれぞれペア設定されていることを表す。また、係る内容は、各ペアがいずれもレプリケート状態であること、「MV1」、「MV2」、「MV3」(及び「RV1」、「RV2」、「RV3」)の3つのボリュームに対して書き込み順序保証が必要であること、複製元ボリュームは「グループ1」に属し、複製先ボリュームは「グループ1’」に属していること、を表す。
【0109】
図7は、グループ管理テーブル508の具体例を示す説明図である。グループ管理テーブル508は、ID701、複製元グループ名702、優先度703、ペア数704、複製先ストレージ名705、複製先グループ名706、レプリケーション状態707を表す各カラムを持つ。
【0110】
ID701は、グループ管理テーブル508の主キーである。複製元グループ名702は、複数のボリュームをまとめたグループを、複製元ストレージ(本具体例においてはストレージ装置401)において一意に特定する識別子である。複製元グループ名702には、ペア管理テーブル507における複製元グループ名609に登録される識別子と同様の識別子が登録されてもよい。
【0111】
優先度703は、各グループに関する非同期レプリケーション処理を継続する優先度を表す。本具体例においては、優先度703には、「高」「中」「低」のいずれかを表す情報が設定されてよい。なお、優先度703には、上記に限定されず、優先度の高低を表現可能な情報(例えば、数値や記号等)が適宜設定されてよい。
【0112】
ペア数704は、グループに含まれるレプリケーションペアの数を表す。複製先ストレージ名705は、複製先ストレージ(本具体例の場合はストレージ装置407)を一意に特定する識別子である。複製先ストレージ名705には、ペア管理テーブル507における複製先ストレージ名605に設定される識別子と同様の識別子が設定されてもよい。
【0113】
複製先グループ名706は、複数ボリュームをまとめたグループを、複製先ストレージ(本具体例の場合はストレージ装置407)において一意に特定する識別子である。複製先グループ名706には、ペア管理テーブル507における複製先グループ名610に設定される識別子と同様の識別子が設定されてもよい。
【0114】
レプリケーション状態707は、複製元グループと複製先グループと間のレプリケーション状態を表す。レプリケーション状態707には、「レプリケート」「セパレート」「リストア」を表す情報が設定されてよい。「レプリケート」は、あるグループに含まれる全ペアに対して、複製元ボリュームから、複製先ボリュームへコピーが実行される状態を意味する。「セパレート」は、あるグループに含まれる全ペアに対して、複製元ボリュームと複製先ボリュームとの間のコピー動作が切り離された(レプリケーションが実行されない)状態を意味する。「リストア」は、あるグループ内の全ペアに対して、複製先ボリュームから複製元ボリュームへのコピーが実行される状態を意味する。なお、レプリケーション状態707には、上記外の情報が適宜設定されてもよい。
【0115】
図7に示す具体例の場合、例えば、1行目に登録された内容は、複製元グループである「グループ1」の優先度が「高」であることを表す。また係る内容は、「グループ1」には3つペアが存在することを表す。また、また係る内容は、「グループ1」の複製先がストレージ装置Bに配置された「グループ1’」であることを表す。また、また係る内容は、「グループ1」がレプリケート状態であることを表す。
【0116】
図8は、コンセントレータ管理テーブル509の具体例を示す説明図である。コンセントレータ管理テーブル509は、ID801、複製元グループ名802、複製元ボリューム名803、サイズ804、オフセットアドレス805、複製先ストレージ名806、複製先グループ名807、複製先ボリューム名808を表す各カラムを有する。
【0117】
ID801は、コンセントレータ管理テーブル509の主キーである。複製元グループ名802は、複数ボリュームをまとめたグループを、複製元ストレージ(本具体例の場合はストレージ装置401)において一意に特定する識別子である。複製元グループ名802には、複製元グループ名609及び複製元グループ名702に設定される識別子と同様の識別子が設定されてもよい。
【0118】
複製元ボリューム名803は、複製元のボリューム(本具体例の場合は、ボリューム501)を一意に特定する識別子である。複製元ボリューム名803には、複製元ボリューム名602に設定される識別子と同様の識別子が設定されてもよい。
【0119】
サイズ804は、Write I/O要求において指定されたWriteデータのサイズを表す。係るサイズは、具体的には、Writeデータから複製され、コンセントレータ503に配置された複製データのサイズを表してもよい。
【0120】
オフセットアドレス805は、コンセントレータ503の先頭アドレス(コンセントレータ503が有するバッファの先頭アドレス)から、コンセントレータ503に配置された複製データの先頭アドレス(即ち、コンセントレータ503における複製データの配置位置)へのオフセットを表す。
【0121】
複製先ストレージ名806は、複製先ストレージ(本具体例の場合はストレージ装置407)を一意に特定する識別子である。複製先ストレージ名806には、複製先ストレージ名605及び複製先ストレージ名705に設定される識別子と同様の識別子が設定されてもよい。
【0122】
複製先グループ名807は、複数ボリュームをまとめたグループを、複製先ストレージ(本具体例の場合はストレージ装置407)において一意に特定する識別子である。複製先グループ名807には、複製先グループ名610及び複製先グループ名706に設定される識別子と同様の識別子が設定されてもよい。
【0123】
複製先ボリューム名808は、複製先のボリューム(本具体例の場合はボリューム512)を一意に特定する識別子である。複製先ボリューム名808には、複製先ボリューム名604に設定される識別子と同様の識別子が設定されてもよい。
【0124】
図8に示す具体例の場合、例えば1行目に登録された内容は、コンセントレータ503には、複製元グループである「グループ1」のボリューム「MV1」に関して、64KBの複製データが配置されていることを表す。また、
図8の1行目に登録された内容は、係る複製データが、コンセントレータ503のオフセットアドレス「0x00000000」(つまり先頭アドレス)から「64KB」分の領域に配置されていることを表す。また、
図8の1行目に登録された内容は、係る複製データが、ストレージ装置B(ストレージ装置407)に配置された、「グループ1’」に属する複製先ボリューム「RV1」へコピー(レプリケーション)されるデータであることを表す。
【0125】
図9は、閾値管理テーブル510の具体例を示す説明図である。閾値管理テーブル510は、閾値901を表すカラムを有する。閾値901には、コンセントレータ503の使用容量(コンセントレータ503の全容量のうち、使用されている容量の割合)に関する閾値が設定される。係る閾値は、例えば、コンセントレータ503の全容量に対する使用済容量のパーセンテージ(
図9の場合は”90%”)により表されてもよい。
【0126】
コンセントレータ503の使用容量が係る閾値を超えた場合、書き込み順序を保証した非同期レプリケーション処理が停止されるグループを決定する処理が実行される。コンセントレータ503に配置された、ストレージ装置407への複製が完了していない複製データのうち、非同期レプリケーション処理が停止されるグループに関連する複製データは、削除される。
図9に示す具体例の場合、コンセントレータ503の使用容量が”90%”を超えた際、上記処理が実行されることを示している。
【0127】
以下、プライマリサイト400、リモートサイト410に配置されるその他の装置等について説明する。
【0128】
ホスト計算機402は、例えば、コンピュータ等の情報処理装置であってよい。ホスト計算機402は、SAN等のネットワークを介してストレージ装置401を利用する。具体的には、ホスト計算機402は、ストレージ装置401のボリューム501に対して、I/O要求を発行し、ストレージ装置401からI/O処理結果を受け取る。
【0129】
ホスト計算機408は、例えば、コンピュータ等の情報処理装置であってよい。ホスト計算機408は、SAN等のネットワークを介してストレージ装置407を利用する。具体的には、ホスト計算機408は、ストレージ装置407のボリュームに対してI/O要求を発行し、ストレージ装置407からI/O処理結果を受け取る。
【0130】
管理コンソール403は、例えば、コンピュータ等の情報処理装置であってよい。管理コンソール403には、例えば、リモートレプリケーション制御プログラム404が導入(インストール)されていてもよい。リモートレプリケーション制御プログラム404は、ストレージ装置401に対して、リモートレプリケーションの制御要求を発行し、要求結果を受信する機能を有する。リモートレプリケーション制御プログラム404は、管理コンソール403において実行可能なコンピュータ・プログラムとして実現されてもよい。
【0131】
ストレージ装置401のユーザは、管理コンソール403に導入されたリモートレプリケーション制御プログラム404を用いて、ストレージ装置401に対して各種要求を発行可能である。具体的には、リモートレプリケーション制御プログラム404は、複製元のストレージ装置401に対して、書き込み順序の保証が必要な複数のボリュームをまとめてグループとして登録する要求を発行可能である。また、リモートレプリケーション制御プログラム404は、複製元のストレージ装置401に対して、コンセントレータの閾値を設定する要求を発行可能である。なお、リモートレプリケーション制御プログラム404は、レプリケーション処理に関する上記以外の要求を発行するよう構成されてもよい。更に、リモートレプリケーション制御プログラム404は、複製先のストレージ装置407に対して、上記各要求を発行するよう構成されてもよい。
【0132】
レプリケーションリンク406は、ストレージ装置401と、ストレージ装置407とを通信ネットワーク405を介して通信可能に接続する。レプリケーションリンク406は、筐体間のレプリケーション処理を実行する際に、コピーされるデータの転送経路を提供する機能を有する。具体的には、レプリケーションリンク406は、例えば、ストレージ装置間のレプリケーション処理によるデータ転送を行う際に、ストレージ装置とネットワーク(ネットワーク機器)との間を接続するリンクケーブルであってもよい。なお、レプリケーションリンク406は、有線のリンクケーブルに限定されず、無線リンクであってもよく、有線と無線との組合せにより構成されてもよい。
【0133】
以下本具体例に係るストレージ装置407の動作について、
図10乃至
図14を参照して説明する。
【0134】
以下、
図10を参照して、ホスト計算機402から、書き込み(Write I/O)要求が通知された場合の処理について説明する。
【0135】
ホスト計算機402がストレージ装置401に対して書き込み(Write I/O)要求を発行した際、ストレージ装置401(ホストIO制御部502)は、係る要求を受信する(ステップS1001)。
【0136】
ホストIO制御部502は、Write I/O要求を受け取ると、キャッシュ506へデータ(Writeデータ)を格納し、レプリケーション管理部504aへ通知する(ステップS1002)。
【0137】
レプリケーション管理部504aは、キャッシュ506に格納されたデータが、書き込み順序が保証されるボリュームに対するWrite I/O要求であるか否かを確認する(ステップS1003)。
【0138】
ステップS1003においてYESの場合、レプリケーション管理部504aは、キャッシュ506に格納された当該データを、コンセントレータ503にコピーする(ステップS1004)。具体的には、レプリケーション管理部504aは、例えば、キャッシュ506に格納されたWriteデータから複製された複製データを、コンセントレータ503に配置してよい。
【0139】
レプリケーション管理部504aは、バッファ監視部504bに対してコンセントレータ503に対するデータの書き込みを通知する(ステップS1005)。この際、レプリケーション管理部504aは、ホストIO制御部502へ処理完了を通知してよい。
【0140】
ホストIO制御部502は、ホスト計算機402へ書き込み(Write I/O)要求の処理結果(レスポンス)を返却する(ステップS1006)。
【0141】
なお、ステップS1003においてNOの場合、ホストIO制御部502は、処理を終了してもよく、ホスト計算機402からの次のWrite I/O要求を待ってもよい。
【0142】
以下、
図11を参照して、コンセントレータ503に対する監視処理について説明する。
【0143】
バッファ監視部504bは、例えば、定期的なポーリング又はレプリケーション管理部504aからのデータ書き込み通知(
図10におけるステップS1005)を契機として、以下の処理を開始する。
【0144】
バッファ監視部504bは、閾値管理テーブル510を参照してコンセントレータ503に関して設定された閾値を取得する(ステップS1101)。
図9から、本具体例においては、係る閾値に”90%”が設定されていることを想定する。
【0145】
バッファ監視部504bは、コンセントレータ503の使用容量が、閾値を超えているか否かを確認する(ステップS1102)。
【0146】
例えば、ストレージ装置401におけるコンセントレータ503の全体容量が”1[GB]”(GB:Giga Byte)であることを想定する。コンセントレータ503の全体容量の値は、例えば、ストレージ装置401の諸元情報の1つとして、グローバル変数や共有メモリ等を介して、各部から参照可能としてよい。この場合、閾値に相当する使用容量は、”1GBx90%=0.9[GB]”と算出される。バッファ監視部504bは、例えば、コンセントレータ管理テーブル509の最終エントリのオフセットアドレスに当該最終エントリのサイズを加算した値と、先頭から”0.9[GB]”の位置に相当するオフセットアドレスと、を比較する。係る比較の結果に基づいて、バッファ監視部504bは、コンセントレータの使用容量が、閾値を超えたか否かを判定することができる。
【0147】
コンセントレータ503の使用容量が、閾値を超えていない場合(ステップS1102においてNO)は、処理を終了する。閾値を超えている場合(ステップS1102がYES)、バッファ監視部504bは、グループ管理テーブル508を参照し、優先度703に「低」が設定され、レプリケーション状態707に「レプリケート」が設定されたグループが存在するか否か確認する(ステップS1103)。
【0148】
図7に示す具体例においては、「グループ3」及び「グループ4」に関する優先度703に「低」が設定され、レプリケーション状態707に「レプリケート」が設定されている。上記条件を満たすグループが存在しない場合(ステップS1103においてNO)、バッファ監視部504bは、ステップS1105から処理を継続する。上記条件を満たすグループが存在する場合(ステップS1103においてYES)、バッファ削除処理を行う(ステップS1104)。なお、以下の説明では、ステップS1102においてグループ3を検出した場合について説明する。
【0149】
以下、
図12を参照して、バッファ削除処理(ステップS1104)について説明する。
【0150】
バッファ監視部504bは、例えば、内部変数として持つバッファ削除通知フラグを「OFF」に設定する(ステップS1201)。
【0151】
バッファ監視部504bは、コンセントレータ管理テーブル509を参照して、複製元グループ名802に「グループ3」が設定されているエントリが存在するか確認する(ステップS1202)。
図8に示す具体例においては、ID801が「3」、「5」及び「7」の各行(エントリ)について、複製元グループ名に「グループ3」が設定されている。以下、ID801が「3」のエントリが検出された場合(ステップS1202においてYES)について説明する。
【0152】
係るエントリが存在する場合(ステップS1202においてYES)、バッファ監視部504bは、コンセントレータ503から係るエントリに関するデータを削除する(ステップS1203)。この場合、バッファ監視部504bは、例えば、ID「3」のエントリ(「グループ3」)に関するデータを1つ削除する。具体的には、バッファ監視部504bは、コンセントレータ管理テーブル509のID801に「3」が設定されているエントリ情報から、オフセットアドレス805に設定された値「0x00000140」とサイズ804に設定された値「16KB」と、を取得する。そして、バッファ監視部504bは、この領域のデータを削除する。なお、バッファ監視部504bは、削除した領域を、後続するデータで前詰めしてよい。
【0153】
バッファ監視部504bは、コンセントレータ管理テーブル509において、ID801に「3」が設定されているエントリを削除する。そして、バッファ監視部504bは、オフセットアドレスを再計算して、ID804が「4」以降のエントリのオフセットアドレスを更新する(ステップS1204)。
【0154】
バッファ監視部504bは、バッファ削除通知フラグを「ON」に設定する(ステップS1205)。
【0155】
バッファ監視部504bは、ステップS1202から処理を続行し、コンセントレータ管理テーブル509において、複製元グループ名に「グループ3」が設定されたエントリがなくなるまで上記の処理を繰り返す。
【0156】
図14は、バッファ監視部504bが本処理を実行することで、複製元グループ名802に「グループ3」が設定されたエントリが削除された場合の、コンセントレータ管理テーブル509の例である。
【0157】
複製元グループ名802に「グループ3」が設定されたエントリを、コンセントレータ管理テーブル509から全て削除すると(ステップS1202においてNO)、バッファ監視部504bは、バッファ削除通知フラグが「ON」に設定されているか否かを確認する(ステップS1206)。
【0158】
バッファ削除通知フラグがONの場合(ステップS1206においてYES)、バッファ監視部504bは、レプリケーション管理部504aに、コンセントレータ503のバッファ削除を通知する(ステップS1207)。この際、バッファ監視部504bは、複製元グループ名802に設定された「グループ3」を表す情報を、共に通知してよい。
【0159】
以下、
図13を参照して、レプリケーション管理部504aが、コンセントレータ503のバッファ削除通知を受信した際の動作について説明する。レプリケーション管理部504aは、バッファ削除通知を受信した際削除されたデータに関するグループに含まれる全ペア(全てのボリュームのペア)に関するセパレート処理を実行する。
【0160】
レプリケーション管理部504aは、例えば、バッファ監視部504bから、コンセントレータ503のバッファ削除通知を受信した際に、以下の処理を開始する。この際、レプリケーション管理部504aは、複製元グループ名802に設定されていた「グループ3」を表す情報(削除されたデータに関するグループを表す情報)を、バッファ監視部504bから受け付けてよい。
【0161】
レプリケーション管理部504aは、ペア管理テーブル507を参照して、複製元グループ名609に「グループ3」が設定されたエントリ(ボリュームペアの情報)を取得する(ステップS1301)。
図6に示す具体例においては、ID601に「6」、「7」、「8」が設定された3つのエントリが、当該条件に該当する。
【0162】
削除されたデータに関するグループのエントリが存在しない場合(ステップS1302においてNO)、レプリケーション管理部504aは、ステップS1305から処理を続行する。また、削除されたデータに関するグループのエントリが存在するが、係るエントリの「ペア状態」606に「レプリケート」が設定されていない場合、レプリケーション管理部504aは、ステップS1305から処理を続行してよい。
【0163】
削除されたデータに関するグループのエントリが存在し、係るエントリの「ペア状態」606に「レプリケート」が設定されている場合(ステップS1302においてYES)、レプリケーション管理部504aは、当該エントリに設定されたペアに関するセパレート処理を行う(ステップS1303)。例えば、
図6において、ID601に「6」が設定されたエントリについて、レプリケーション管理部504aは、ボリューム「MV6」と「RV6」とのペアに対してセパレート処理を実施する。係るセパレート処理は、例えば、レプリケーションを行うボリュームの間のデータのコピーを停止する処理であってよい。例えば、「MV6」と、「RV6」とのペアにおいてレプリケーション処理が実行されている際にセパレート処理が実行された場合、「MV6」から「RV6」へデータをコピーする処理が停止される。
【0164】
レプリケーション管理部504aは、ペア管理テーブル507における、ペア状態606を変更する(ステップS1304)。具体的には、レプリケーション管理部504aは、ID601が「6」のエントリに関するペア状態606を、「レプリケート」から「セパレート」に変更する。
【0165】
レプリケーション管理部504aは、ステップS1301から処理を続行する。レプリケーション管理部504aは、複製元グループ名609が「グループ3」であり、ペア状態606に「レプリケート」が設定されているエントリがペア管理テーブル507からなくなるまで、上記の処理を繰り返してもよい。
【0166】
複製元グループ名609が「グループ3」であり、ペア状態606が「レプリケート」であるエントリがペア管理テーブル507からなくなった場合(ステップS1302においてNO)、レプリケーション管理部504aは、グループ管理テーブル508を参照する。レプリケーション管理部504aは、複製元グループ名702が「グループ3」であるエントリについて、レプリケーション状態707を「レプリケート」から「セパレート」に変更する(ステップS1305)。以上により、全ペアに関するセパレート処理は終了する。以上が、
図11に例維持するバッファ削除処理(ステップS1104)に関する説明である。
【0167】
バッファ監視部504bは、ステップS1104における処理を実行した後、ステップS1102から処理を続行する。即ち、バッファ監視部504bは、コンセントレータ503の使用容量が閾値を超えているか否かを確認する。コンセントレータ503の使用容量が閾値を超えている場合(ステップS1102においてYES)、バッファ監視部504bは、上記の説明したステップS1103乃至S1104の処理を繰り返す。
【0168】
優先度703が「低」であり、かつレプリケーション状態707が「レプリケート」であるグループに関するエントリが、グループ管理テーブル508からなくなった場合(ステップS1103においてNO)は、バッファ監視部504bは、ステップS1105から処理を続行する。即ち、バッファ監視部504bは、優先度703が「中」であり、かつレプリケーション状態が「レプリケート」であるグループに関するエントリが、グループ管理テーブル508に存在するか否かを確認する(ステップS1105)。
【0169】
上記を満たすエントリが存在しない場合(ステップS1105においてNO)、バッファ監視部504bは、処理を終了する。
【0170】
上記を満たすエントリが存在する場合(ステップS1105においてYES)、バッファ監視部504bは、バッファ削除処理を行う(ステップS1106)。ステップS1106におけるバッファ削除処理は、ステップS1104におけるバッファ削除処理と同様としてよい。
【0171】
バッファ監視部504bは、コンセントレータ503の使用容量が閾値を超えているか否かを確認する(ステップS1107)。
【0172】
コンセントレータ503の使用量が閾値を超えている場合(ステップS1107においてYES)、バッファ監視部504bは、ステップS1105から処理を続行する。コンセントレータ503の使用量が閾値を下回った場合(ステップS1107においてNO)は、バッファ監視部504bは、処理を終了する。
【0173】
上記のように、バッファ監視部504bは、例えば、定期的なポーリング、又はコンセントレータ503へのデータ書き込み通知等を契機として、コンセントレータ503の使用容量が閾値を超えているか否かを確認する。そして、バッファ監視部504bは、コンセントレータ503の使用容量が閾値を超えている場合、優先度が低い順(本具体例の場合、優先度が「低」及び「中」のグループの順)に、コンセントレータ503に配置されたデータを削除することで、非同期リモートレプリケーション処理を停止することができる。
【0174】
以上より、ストレージ装置401は、優先度が比較的高い(本具体例の場合、優先度が「高」である)グループの業務(例えば非同期レプリケーション処理)に対する、優先度が比較的低い(本具体例の場合、優先度が「低」及び「中」である)のグループの影響を排除することが可能である。即ち、ストレージ装置401は、コンセントレータ503の容量を効率的に使用して、優先度が比較的高い(本具体例の場合、優先度が「高」である)グループに関する、書き込み順序を保証した非同期リモートレプリケーション処理を継続できる。その理由は、以下の通りである。ストレージ装置401においては、グループ毎の優先度と、コンセントレータ503の閾値とを設定することが可能である。ストレージ装置401は、コンセントレータ503の使用容量が閾値を上回った場合、優先度が比較的低い(上記具体例では優先度が「低」又は「中」)グループから順に、コピー未完了のデータをコンセントレータ503から削除する。これにより、ストレージ装置401は、優先度が比較的低い(上記具体例においては「低」又は「中」)グループの業務に関するWrite I/O要求の量が増大することで、コンセントレータ503の容量が溢れてしまうことを防げる。
【0175】
また、ストレージ装置401は、優先度の高いグループに関する業務ほど、コンセントレータ503の容量を効率的に利用できる。その理由は、以下の通りである。ストレージ装置401は、優先度が比較的高い(上記具体例の場合、優先度が「高」である)グループの業務に関するデータは、コンセントレータ503の使用容量が閾値を超えた場合であっても、コンセントレータ503から削除しない。これに対して、ストレージ装置401は、コンセントレータ503の使用容量が閾値を超えた場合、優先度が比較的低い(上記具体例の場合、優先度が「低」又は「中」である)グループの業務に関するデータを削除する。即ち、これにより、コンセントレータ503の使用容量が減少すると共に、優先度が高い(上記躯体例の場合、優先度が「高」である)グループに関する業務のデータがコンセントレータ503において占める比率が増加するからである。
【0176】
以上より、ストレージ装置401によれば、優先度が高いレプリケーション処理を継続可能な、複数ボリューム間のデータ書き込み順序を保証したレプリケーション技術が実現可能である。
【0177】
なお、上記説明した実施形態及びその具体例においては、本開示に関する技術をストレージ装置(200、401)に適用した例として説明した。上記説明した実施形態及びその具体例においては、例えば、ストレージ装置(200、401)を動作させることによって、ストレージ制御方法を実施することができる。ストレージ制御方法を実施する方法は上記に限定されず、ストレージ装置(200、401)と同様の動作あるいは処理を実行可能な他の装置(例えば、コンピュータ等の情報処理装置)によって実施することも可能である。
【0178】
[具体例に関する変形例]
上記説明した具体例に関連して、以下のような変形例も本実施形態に含まれる。以下説明する変形例の構成は、
図4及び
図5に例示した上位機具体例の構成と同様としてよく、上記具体例とは処理が一部異なる。
【0179】
本変形例におけるストレージ装置401は、例えば、コンセントレータ503に配置された複製データが削除される優先度(第1の優先度)と、削除されない優先度(第2の優先度)との少なくとも一方を設定可能であってよい。
【0180】
本変形例におけるストレージ装置401は、例えば、第1の優先度が設定された場合、第1の優先度が設定されたグループに関連する複製データを、コンセントレータ503から削除する。この場合、ストレージ装置401は、第1の優先度以外の優先度が設定されたグループに関連する複製データを、コンセントレータ503から削除しない。
【0181】
また、本変形例におけるストレージ装置401は、第2の優先度が設定されたデータをコンセントレータ503から削除しない。本変形例におけるストレージ装置401は、第2の優先度以外の優先度が設定された複製データを、コンセントレータ503から削除する。
【0182】
具体例を用いて説明する。本変形例におけるストレージ装置401は、例えば、第1の優先度として、
図7に示す具体例における「低」及び「中」の少なくとも一方を設定してよい。第1の優先度として「低」及び「中」の両方が設定された場合、上記説明した具体例と同様の処理が実行される。第1の優先度として「低」のみが設定された場合、本変形例におけるストレージ装置401は、優先度が「低」の複製データのみを、コンセントレータ503から削除する。
【0183】
また、本変形例におけるストレージ装置401は、例えば、第2の優先度として、
図7に示す具体例における「高」を設定してもよい。第2の優先度として「高」が設定された場合、上記説明した具体例と同様の処理が実行される。また、また、本変形例におけるストレージ装置401は、例えば、第2の優先度として、
図7に示す具体例における「高」及び「中」を設定してもよい。この場合、本変形例におけるストレージ装置401は、優先度が「低」の複製データのみを、コンセントレータ503から削除する。
【0184】
本変形例においては、例えば、グループ登録部511が、ストレージ装置401のユーザ等から、上記第1及び第2の優先度に関する設定を受け付け、係る設定をバッファ監視部504b等に提供してもよい。
【0185】
上記のように構成された本変形例におけるストレージ装置401によれば、コンセントレータ503から削除される複製データに関する優先度を、適宜設定可能である。
【0186】
<ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
以下、上記説明した各実施形態を実現可能なハードウェア構成について説明する。
【0187】
以下の説明においては、上記各実施形態において説明したストレージ装置(200,401)をまとめて、単に「ストレージ装置」と記載する。また、これらストレージ装置の各構成要素を、単に「ストレージ装置の構成要素」と記載する場合がある。
【0188】
上記各実施形態において説明したストレージ装置は、1つ又は複数の専用のハードウェア装置により構成されてもよい。その場合、上記各図(
図2A、
図2B、
図4、
図5)に示した各構成要素は、その一部又は全部を統合したハードウェア(処理ロジックを実装した集積回路あるいは記憶デバイス等)を用いて実現されてもよい。
【0189】
ストレージ装置が専用のハードウェアにより実現される場合、係るストレージ装置の構成要素は、例えば、それぞれの機能を提供可能な回路構成(circuitry)により実現されてもよい。係る回路構成は、例えば、SoC(System on a Chip)等の集積回路や、当該集積回路を用いて実現されたチップセット等を含む。この場合、ストレージ装置の構成要素が保持するデータは、例えば、SoCとして統合されたRAM(Random Access Memory)領域やフラッシュメモリ領域、あるいは、当該SoCに接続された記憶デバイス(半導体記憶装置等)に記憶されてもよい。また、この場合、ストレージ装置の各構成要素を接続する通信回線としては、周知の通信バス等を採用してもよい。また、各構成要素を接続する通信回線は、それぞれの構成要素間をピアツーピアで接続してもよい。
【0190】
また、上述したストレージ装置は、
図15に例示するような汎用のハードウェア装置1500と、係るハードウェア装置1500によって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、ストレージ装置は、適切な数の汎用のハードウェア装置1500と、ソフトウェア・プログラムとの組合せにより構成されてもよい。
【0191】
図15における演算装置1501は、CPU(中央処理装置:Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置1501は、例えば後述する不揮発性記憶装置1503に記憶された各種ソフトウェア・プログラムをメモリ1502に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。例えば、上記各実施形態におけるストレージ装置の構成要素の機能は、演算装置1501により実行されるソフトウェア・プログラムを用いて実現されてもよい。
【0192】
演算装置1501は、例えば、複数のCPUコアを備えたマルチコアCPUであってもよい。また演算装置1501は、1つのCPUコアが複数のスレッドを実行可能な、マルチスレッドCPUであってもよい。ハードウェア装置1500は、複数の演算装置1501を備えてもよい。
【0193】
メモリ1502は、演算装置1501から参照可能な、RAM等のメモリデバイスであり、ソフトウェア・プログラムや各種データ等を記憶する。なお、メモリ1502は、揮発性のメモリであってもよい。
【0194】
例えば、上記説明した実施形態及びその具体例におけるキャッシュ(206、506)は、メモリ1502を用いて実現されてもよい。
【0195】
不揮発性記憶装置1503は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置等の、不揮発性の記憶装置(ストレージデバイス)である。不揮発性記憶装置1503は、各種ソフトウェア・プログラムやデータ等を記憶可能である。例えば、ストレージ装置の各構成要素を実現可能なプログラムは、不揮発性記憶装置1503に記憶されてもよい。
【0196】
例えば、上記説明した実施形態及びその具体例におけるボリューム(201、501)は、不揮発性記憶装置1503を用いて実現されてもよい。
【0197】
ドライブ装置1504は、例えば、後述する記録媒体1505に対するデータの読み込みや書き込みを処理する装置である。
【0198】
記録媒体1505は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。例えば、ストレージ装置の各構成要素を実現可能なプログラムは、記録媒体1505に記録されていてもよい。
【0199】
ネットワークインタフェース1506は、通信ネットワークとの間の通信データの送受信を制御する装置である。ネットワークインタフェース1506は、例えば、1以上の通信ポートを備え、係る通信ポートを介して、通信ネットワークとの間で通信データを送受信してもよい。ネットワークインタフェース1506は、複数の通信ポートを備えてもよい。ネットワークインタフェース1506は複数設けられてもよく、異なる種類の通信ネットワークに接続可能であってもよい。
【0200】
例えば、上記説明したストレージ装置は、ホスト計算機(210、402)と、ネットワークインタフェース1506を介して接続されてもよい。また、上記説明したストレージ装置は、管理コンソール403と、ネットワークインタフェース1506を介して接続されてもよい。なお、異なるストレージ装置(例えば、ストレージ装置401と、ストレージ装置407)が、ネットワークインタフェース1506を介して接続されてもよい。
【0201】
図15に例示するハードウェア装置1500の各構成要素は、例えば、適切な通信方法(通信バス等)を用いて、相互に通信可能に接続されていてもよい。
【0202】
上述した各実施形態を例に説明した本開示におけるストレージ装置、あるいはその構成要素は、例えば、
図15に例示するハードウェア装置1500に対して、上記各実施形態において説明した機能を実現可能なソフトウェア・プログラムを供給することにより、実現されてもよい。
【0203】
より具体的には、例えば、係るハードウェア装置1500に対して供給したソフトウェア・プログラムを、演算装置1501が実行することによって、本開示に関する技術が実現されてもよい。この場合、係るハードウェア装置1500で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト、仮想環境基盤等のミドルウェアなどが各処理の一部を実行してもよい。
【0204】
上述した各実施形態において、上記各図に示した各部は、上述したハードウェアにより実行されるソフトウェア・プログラムの機能(処理)単位である、ソフトウェアモジュールとして実現することができる。ただし、これらの図面に示した各ソフトウェアモジュールの区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。
【0205】
図2A、
図2B、
図4及び
図5の各図に例示したストレージ装置の各構成要素をソフトウェアモジュールとして実現する場合、例えば、これらのソフトウェアモジュールが不揮発性記憶装置1503に記憶されてもよい。そして、演算装置1501がそれぞれの処理を実行する際に、これらのソフトウェアモジュールをメモリ1502に読み出してもよい。
【0206】
また、これらのソフトウェアモジュールは、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成されてもよい。このような構成により、これらのソフトウェアモジュールは、相互に通信可能に接続される。
【0207】
更に、上記ソフトウェア・プログラムは記録媒体1505に記録されてもよい。この場合、上記ソフトウェア・プログラムは、ストレージ装置の出荷段階、あるいは運用段階等において、適宜ドライブ装置1504を通じて不揮発性記憶装置1503に格納されるよう構成されてもよい。
【0208】
なお、上記の場合において、上記ハードウェア装置1500への各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具(ツール)を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。
【0209】
そして、このような場合において、本開示に関する技術は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記録媒体によって構成されると捉えることができる。この場合、係る記録媒体は、ハードウェア装置1500と独立した媒体に限らず、LANやインターネットなどにより伝送されたソフトウェア・プログラムをダウンロードして記憶又は一時記憶した記録媒体を含む。
【0210】
また、上述したストレージ装置の構成要素は、
図15に例示するハードウェア装置1500を仮想化した仮想化環境と、当該仮想化環境において実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、
図15に例示するハードウェア装置1500の構成要素は、当該仮想化環境における仮想デバイスとして提供される。なお、この場合も、
図15に例示するハードウェア装置1500を物理的な装置として構成した場合と同様の構成にて、本開示に関する技術を実現可能である。
【0211】
以上、本開示に関する技術を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本開示の技術的範囲は、上述した実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本開示の技術的範囲に含まれ得る。上述した実施形態及び具体例を組合せた実施形態も本開示の技術的範囲に含まれる。更に、上述した実施形態と、上述した実施形態に変更又は改良を加えた新たな実施形態とを組合せた実施形態も、本開示の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。