(57)【特許請求の範囲】
【請求項１】
外部装置のデータ記憶領域として使用される複数の単位論理記憶領域を提供する記憶媒体を備えた記憶装置と、前記記憶装置と通信可能に接続されており、前記外部装置から前記各単位論理記憶領域に対するデータＩＯ処理を実行する複数の演算装置とを備えたストレージシステムであって、
前記各単位論理記憶領域と、当該単位論理記憶領域の前記データＩＯ処理を実行する前記演算装置とを対応付けて保持している担当演算装置保持部と、
前記各単位論理記憶領域と、当該単位論理記憶領域について設定されている、前記各単位論理記憶領域から他の前記単位論理記憶領域に当該各単位論理記憶領域に格納されているデータをコピーする機能であるコピー機能の種別を示す情報であるストレージ機能情報とを対応付けて保持しているストレージ機能保持部と、
前記各単位論理記憶領域について、前記ストレージ機能保持部から取得した当該各単位論理記憶領域に設定されている前記ストレージ機能情報に基づいて、当該各単位論理記憶領域と対応付けられている前記演算装置を前記担当演算装置保持部から取得して当該担当演算装置を変更する必要があるか判定し、変更する必要があると判定した場合に、当該各単位論理記憶領域と対応付けられている前記演算装置を他の前記演算装置に変更する演算装置変更部と、
前記コピー機能が設定されている前記各単位論理記憶領域について、コピー元である前記単位論理記憶領域又はコピー先である前記各単位論理記憶領域の少なくともいずれかに対して担当する前記演算装置に許容される負荷の閾値を保持している負荷閾値保持部と、
前記各演算装置と、当該各演算装置が有する前記データＩＯ処理を行うプロセッサの使用率を取得して前記各演算装置と対応付けて保持しているプロセッサ使用率保持部と、を備え、
前記演算装置変更部は、前記各単位論理記憶領域に、前記コピー機能を設定する場合に、当該各単位論理記憶領域を担当する前記演算装置と、前記他の単位論理記憶領域を担当する前記演算装置とが異なるか判定し、異なると判定した場合に、同一の前記演算装置が前記各単位論理記憶領域を担当するように、前記担当演算装置保持部を更新し、
前記演算装置変更部は、前記各単位論理記憶領域に、前記コピー機能が設定されており、当該各単位論理記憶領域の格納データを同期させる処理を実行する場合に、当該各単位論理記憶領域を担当する前記演算装置と、前記他の単位論理記憶領域を担当する前記演算装置とが異なると判定し、同一の前記演算装置が前記各単位論理記憶領域を担当するように前記演算装置を変更した場合に、変更後の前記演算装置の前記プロセッサ使用率を前記プロセッサ使用率保持部から取得し、当該プロセッサ使用率が前記負荷閾値を超えないと判定した場合に、前記担当演算装置保持部を更新し、
前記負荷閾値保持部には、前記コピー機能が設定されている前記各単位論理記憶領域について、一括して前記担当演算装置を変更することが許容される前記単位論理記憶領域の数の最大値である変更許容領域数と、前記コピー機能が設定されている前記各単位論理記憶領域の担当演算装置が異なる場合に当該演算装置間で実行される通信負荷の重みを表す指数である通信負荷重みとが保持されており、
前記演算装置変更部は、前記各単位論理記憶領域に、前記コピー機能が複数設定されており、当該各単位論理記憶領域を担当する前記演算装置と、前記他の単位論理記憶領域を担当する前記演算装置とが異なると判定した場合に、前記変更許容領域数以下で最も前記通信負荷重みが小である組み合わせを構成する前記単位論理記憶領域を、同一の前記演算装置が前記各単位論理記憶領域を担当するように前記演算装置を変更するように前記担当演算装置保持部を更新する、ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記記憶装置は、複数のディスク装置から構成したＲＡＩＤグループから生成された前記単位論理記憶領域としての論理ボリュームを前記外部装置に提供しており、
担当演算装置指定部は、前記各論理ボリュームを識別するための識別符号であるボリューム番号と、当該論理ボリュームの前記データＩＯ処理を実行する前記演算装置を識別するための識別符号である担当演算装置番号とを対応付けて保持している担当演算装置テーブルであり、
前記ストレージ機能保持部は、前記各論理ボリューム番号と、当該論理ボリュームについて設定されている前記ストレージ機能を示す情報である機能情報とを対応付けて保持している論理ボリュームテーブルであり、
前記演算装置変更部は、前記各単位論理記憶領域に対応付けられている前記演算装置を変更するために、前記担当演算装置テーブルを更新する演算装置切り替え部である、ストレージシステム。
【請求項３】
請求項１に記載のストレージシステムであって、
前記演算装置変更部は、前記各単位論理記憶領域に、前記コピー機能が設定されており、当該各単位論理記憶領域の格納データを同期させる処理を実行する場合に、当該各単位論理記憶領域を担当する前記演算装置と、前記他の単位論理記憶領域を担当する前記演算装置とが異なるか判定し、異なると判定した場合に、同一の前記演算装置が前記各単位論理記憶領域を担当するように、前記担当演算装置保持部を更新する、ストレージシステム。
【請求項４】
請求項３に記載のストレージシステムであって、
前記演算装置変更部は、前記各単位論理記憶領域に、前記コピー機能を設定する場合、及び前記各単位論理記憶領域に前記コピー機能が設定されており、当該各単位論理記憶領域の格納データを同期させる処理を実行する場合に、当該各単位論理記憶領域を担当する前記演算装置を強制的に外部から変更するための操作である手動変更操作を受け付けないように設定される、ストレージシステム。
【請求項５】
請求項１に記載のストレージシステムであって、
前記演算装置変更部は、前記各単位論理記憶領域が、前記外部装置に対して複数の前記単位論理記憶領域によって作成された一つの論理記憶領域である拡張記憶領域を提供する拡張記憶領域機能が設定されており、当該各単位論理記憶領域が前記拡張記憶領域を構成する単位論理記憶領域であると判定し、当該拡張論理記憶領域を構成する前記単位論理記憶領域を同一の前記演算装置が担当していないと判定した場合に、当該各論理記憶領域と対応付けられている前記演算装置を他の前記演算装置に変更する、ストレージシステム。
【請求項６】
請求項１に記載のストレージシステムであって、
前記演算装置変更部は、前記各単位論理記憶領域に、常時前記外部装置のデータＩＯを処理する正記憶領域と、前記正記憶領域のある時点における格納データがコピーされる副記憶領域と、前記正記憶領域から前記副記憶領域へコピーされるデータを一時格納する一時記憶領域とで構成されるリモートコピー機能が設定されており、当該各単位論理記憶領域が、前記副記憶領域及び前記一時記憶領域によって構成されるリモートコピーグループに属し、前記副記憶領域、前記一時記憶領域、及び前記リモートコピーグループを同一の前記演算装置が担当していないと判定した場合に、当該各論理記憶領域と対応付けられている前記演算装置を他の前記演算装置に変更する、ストレージシステム。
【請求項７】
外部装置のデータ記憶領域として使用される複数の単位論理記憶領域を提供する記憶媒体を備えた記憶装置と、前記記憶装置と通信可能に接続されており、前記外部装置から前記各単位論理記憶領域に対するデータＩＯ処理を実行する複数の演算装置とを備えたストレージシステムの処理効率向上方法であって、
前記各単位論理記憶領域と、当該単位論理記憶領域の前記データＩＯ処理を実行する前記演算装置とを対応付けて担当演算装置保持部に保持し、
前記各単位論理記憶領域と、当該単位論理記憶領域について設定されている、前記各単位論理記憶領域から他の前記単位論理記憶領域に当該各単位論理記憶領域に格納されているデータをコピーする機能であるコピー機能の種別を示す情報であるストレージ機能情報とを対応付けてストレージ機能保持部に保持し、
前記各単位論理記憶領域について、前記ストレージ機能保持部から取得した当該各単位論理記憶領域に設定されている前記ストレージ機能に基づいて、当該各論理記憶領域と対応付けられている前記演算装置を前記担当演算装置保持部から取得して、当該担当演算装置を変更する必要があるか判定し、
変更する必要があると判定した場合に、当該各論理記憶領域と対応付けられている前記演算装置を他の前記演算装置に変更し、
前記各単位論理記憶領域に、前記コピー機能を設定する場合に、当該各単位論理記憶領域を担当する前記演算装置と、前記他の単位論理記憶領域を担当する前記演算装置とが異なるか判定し、異なると判定した場合に、同一の前記演算装置が前記各単位論理記憶領域を担当するように、前記担当演算装置保持部を更新し、
前記各単位論理記憶領域に、前記コピー機能が設定されており、当該各単位論理記憶領域の格納データを同期させる処理を実行する場合に、当該各単位論理記憶領域を担当する前記演算装置と、前記他の単位論理記憶領域を担当する前記演算装置とが異なるか判定し、異なると判定した場合に、同一の前記演算装置が前記各単位論理記憶領域を担当するように、前記担当演算装置保持部を更新し、
前記コピー機能が設定されている前記各単位論理記憶領域について、コピー元である前記単位論理記憶領域又はコピー先である前記各単位論理記憶領域の少なくともいずれかに対して担当する前記演算装置に許容される負荷の閾値を負荷閾値保持部に保持し、
前記各演算装置と、当該各演算装置が有する前記データＩＯ処理を行うプロセッサの使用率を取得して前記各演算装置と対応付けてプロセッサ使用率保持部に保持し、
前記演算装置変更部は、前記各単位論理記憶領域に、前記コピー機能が設定されており、当該各単位論理記憶領域の格納データを同期させる処理を実行する場合に、当該各単位論理記憶領域を担当する前記演算装置と、前記他の単位論理記憶領域を担当する前記演算装置とが異なると判定し、同一の前記演算装置が前記各単位論理記憶領域を担当するように前記演算装置を変更した場合に、変更後の前記演算装置の前記プロセッサ使用率を前記プロセッサ使用率保持部から取得し、当該プロセッサ使用率が前記負荷閾値を超えないと判定した場合に、前記担当演算装置保持部を更新し、
前記負荷閾値保持部には、前記コピー機能が設定されている前記各単位論理記憶領域について、一括して前記担当演算装置を変更することが許容される前記単位論理記憶領域の数の最大値である変更許容領域数と、前記コピー機能が設定されている前記各単位論理記憶領域の担当演算装置が異なる場合に当該演算装置間で実行される通信負荷の重みを表す指数である通信負荷重みとが保持されており、
前記演算装置変更部は、前記各単位論理記憶領域に、前記コピー機能が複数設定されており、当該各単位論理記憶領域を担当する前記演算装置と、前記他の単位論理記憶領域を担当する前記演算装置とが異なると判定した場合に、前記変更許容領域数以下で最も前記通信負荷重みが小である組み合わせを構成する前記単位論理記憶領域を、同一の前記演算装置が前記各単位論理記憶領域を担当するように前記演算装置を変更するように前記担当演算装置保持部を更新する、ストレージシステムの処理効率向上方法。
【請求項８】
請求項７に記載のストレージシステムの処理効率向上方法であって、
前記各単位論理記憶領域が、前記外部装置に対して複数の前記単位論理記憶領域によって作成された一つの論理記憶領域である拡張記憶領域を提供する拡張記憶領域機能が設定されており、当該各単位論理記憶領域が前記拡張記憶領域を構成する単位論理記憶領域であると判定し、当該拡張論理記憶領域を構成する前記単位論理記憶領域を同一の前記演算装置が担当していないと判定した場合に、当該各論理記憶領域と対応付けられている前記演算装置を他の前記演算装置に変更する、ストレージシステムの処理効率向上方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム及びストレージシステムの処理効率向上方法に係わり、特にストレージシステムが備える複数の論理記憶領域について入出力処理を行うプロセッサの通信オーバヘッド増大を防止し、もってストレージシステムの処理効率向上を可能とするストレージシステム及びストレージシステムの処理効率向上方法に関する。
【背景技術】
【０００２】
政府、企業、大学等の各種機関では、多種多量のデータを取り扱うために、比較的大規模なストレージシステムを用いてデータを管理する。このストレージシステムは、多数の記憶デバイス(例えばハードディスクドライブ（Hard Disk Drive, 以下「ＨＤＤ」）など)をアレイ状に配設して構成されるもので、例えば、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）に基づく記憶領域を提供する。記憶デバイス群が提供する物理的な記憶領域上には少なくとも１つの論理ボリューム(以下、「ボリューム」)が形成され、このボリュームがホストコンピュータ(以下、「ホスト」)に提供される。ホストは、所定のコマンドをストレージシステムに送信することにより、ボリュームに対してデータの書込み、読み出しを行うことができる。
【０００３】
なお、上記の論理ボリュームは、前記記憶デバイス群によって提供される論理記憶領域の一単位であり、一つあるいは複数の論理ボリュームが作成する論理記憶領域をホストから識別可能に設定することによって、ホストが単位論理記憶領域として認識する論理ユニット（Logical Unit、ＬＵ）が生成される。
【０００４】
従来からストレージシステムには、高性能化が求められている。特許文献１には、ストレージシステムの高性能化に関する技術が開示されている。具体的には、特許文献１は、各ボリュームでデータ処理(データの書込み、読み出しなど)を実行する制御部において、前記各ボリュームを担当するマイクロプロセッサパッケージ(MicroProcessor PacKage、以下、「ＭＰＰＫ」)を予め決めておき、処理に必要となる制御情報をＭＰＰＫ内のローカルメモリに格納しておく技術を開示している。また、あるボリュームの処理を担当するＭＰＰＫを別のＭＰＰＫに切り替える技術も開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２６９４２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ストレージシステムは、複数のボリュームを利用する種々のストレージ機能を有する。例えば、一のボリュームに格納されているデータを他のボリュームにコピーするボリュームコピー機能がある。ボリュームコピー機能は、コピー元とコピー先の二つのボリュームを関連付け、コピー元のボリュームからコピー先のボリュームへデータをコピーする処理であり、例えばリモートコピー処理が含まれる。
【０００７】
一方、このようなストレージ機能を実現するために、各ボリュームに対する処理を実行する複数のＭＰＰＫの間での通信が必要となる場合がある。例えば、ストレージシステムのディスク制御部に第１のＭＰＰＫと第２のＭＰＰＫが設けられており、それぞれ、そのストレージシステムによって提供される第１のボリュームと第２のボリュームとの入出力処理を担当しているものとする。この場合、第１のＭＰＰＫが入出力処理を担当する第１のボリュームから、第２のＭＰＰＫが入出力処理を担当する第２のボリュームに対する、２つのボリューム間のコピー機能を実現するためには、ホストが第１のボリュームに対して入力要求をすると、その入力データを第２のボリュームにコピーする必要があるために、第１のＭＰＰＫから第２のＭＰＰＫに対して入力データのコピー要求が実行される。このコピー要求処理は、第１のボリュームと第２のボリュームとを同一のＭＰＰＫが担当していれば不要であるため、通信に関するオーバヘッドが増大して処理効率の低下要因となる。
【０００８】
従来のストレージシステムにあっては、上記のようなストレージ機能を実現するために発生するＭＰＰＫ間通信処理を考慮して、ボリュームの入出力処理を担当するＭＰＰＫを決定していなかった。
【０００９】
本発明は、上記課題に鑑みなされたものであり、その一つの目的は、ストレージシステムが備える複数の論理記憶領域について入出力処理を行うプロセッサの通信オーバヘッド増大を防止し、もってストレージシステムの処理効率向上を可能とするストレージシステム及びストレージシステムの処理効率向上方法を提供することにある。
【課題を解決するための手段】
【００１０】
上記の、及び他の目的を達成するための、本発明の一態様は、
外部装置のデータ記憶領域として使用される複数の単位論理記憶領域を提供する記憶媒体を備えた記憶装置と、前記記憶装置と通信可能に接続されており、前記外部装置から前記各単位論理記憶領域に対するデータＩＯ処理を実行する複数の演算装置とを備えたストレージシステムであって、
前記各単位論理記憶領域と、当該単位論理記憶領域の前記データＩＯ処理を実行する前記演算装置とを対応付けて保持している担当演算装置保持部と、
前記各単位論理記憶領域と、当該単位論理記憶領域について設定されている、前記単位論理記憶領域の使用態様を示す情報であるストレージ機能情報とを対応付けて保持しているストレージ機能保持部と、
前記各単位論理記憶領域について、前記ストレージ機能保持部から取得した当該各単位論理記憶領域に設定されている前記ストレージ機能に基づいて、当該各論理記憶領域と対応付けられている前記演算装置を前記担当演算装置保持部から取得して当該担当演算装置を変更する必要があるか判定し、変更する必要があると判定した場合に、当該各論理記憶領域と対応付けられている前記演算装置を他の前記演算装置に変更する演算装置変更部と、
を備えているストレージシステム
である。
【発明の効果】
【００１１】
本発明によれば、ストレージシステムが備える複数の論理記憶領域について入出力処理を行うプロセッサの通信オーバヘッド増大を防止し、もってストレージシステムの処理効率向上を可能とするストレージシステム及びストレージシステムの処理効率向上方法を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、情報処理システム１及びストレージシステム２００の構成例を示す図である。
【図２】図２は、ホスト１００として使用することができるコンピュータ１０の構成例を示す図である。
【図３】図３は、ストレージシステム２００のメモリパッケージ２２０に格納される制御情報部、プログラム部、及びキャッシュ部の一例を示す図である。
【図４】図４は、ボリュームテーブル２２１１の一例を示す図である。
【図５】図５は、メモリ２６２に格納される制御情報の一例を示す図である。
【図６】図６は、メモリ２６２に格納される担当ＭＰＰＫテーブル２６３の一例を示す図である。
【図７】図７は、制御情報部２２１に格納される担当ＭＰＰＫテーブル２２１２の一例を示す図である。
【図８】図８は、ローカルコピーテーブル２２１３の一例を示す図である。
【図９】図９は、ローカルコピー機能におけるＩＯプログラムの処理フローの一例を示す図である。
【図１０】図１０は、実施例１のローカルコピー機能におけるコピープログラムの処理フローの一例を示す図である。
【図１１】図１１は、実施例１のローカルコピー機能におけるペア操作プログラムの処理フローの一例を示す図である。
【図１２】図１２は、実施例１のローカルコピー機能における担当切り替えプログラムの処理フローの一例を示す図である。
【図１３】図１３は、実施例１の変形例におけるＩＯプログラムの処理フローの一例を示す図である。
【図１４】図１４は、実施例２における担当ＭＰＰＫテーブル２２１２の一例を示す図である。
【図１５】図１５は、実施例２におけるペア操作プログラム３２２１による処理フローの一例を示す図である。
【図１６】図１６は、実施例２における担当ＭＰＰＫ手動切り替えプログラム２２６２による処理フローの一例を示す図である。
【図１７】図１７は、実施例３におけるメモリパッケージ２２０の構成例を示している。
【図１８】図１８は、ＭＰＰＫ２１０の使用率を管理するＭＰＰＫ使用率テーブル２２１７の一例を示す図である。
【図１９】図１９は、実施例３における担当切り替え閾値テーブル２２５１の一例を示す図である。
【図２０】図２０は、実施例３におけるペア操作プログラム３２２１による処理フローの一例を示す図である。
【図２１】図２１は、実施例３における負荷判定付担当切り替えプログラム２２６１の処理フローの一例を示す図である。
【図２２】図２２は、実施例４における担当切り替え閾値テーブル２２５１の一例を示す図である。
【図２３】図２３は、実施例４における負荷判定付担当切り替えプログラム２２６１の処理フローの一例を示す図である。
【図２４】図２４は、実施例５におけるローカルコピーテーブル２２１３の一例を示す図である。
【図２５】図２５は、実施例５における負荷判定付担当切り替えプログラム２２６１による処理フローの一例を示す図である。
【図２６】図２６は、ストレージシステム２００のメモリパッケージ２２０の構成例を示す図である。
【図２７】図２７は、拡張ボリュームテーブル２２１４の一例を示す図である。
【図２８】図２８は、拡張ボリューム機能におけるＩＯプログラム２２２２の処理フローの一例を示す図である。
【図２９】図２９は、拡張ボリューム操作プログラム３２２２の処理フローの一例を示す図である。
【図３０】図３０は、ストレージシステム２００のメモリパッケージ２２０の構成例を示す図である。
【図３１】図３１は、リモートコピー機能を実現する構成の一例を示す図である。
【図３２】図３２は、リモートコピーテーブル２２１５の一例を示す図である。
【図３３】図３３は、リモートコピー機能におけるジャーナル作成処理フローの一例を示す図である。
【図３４】図３４は、リモートコピー機能においてＰＶＯＬ側から転送されてきたジャーナルをＪＶＯＬからＳＶＯＬへ書き込む処理フローの一例を示す図である。
【図３５】図３６は、リモートコピー用担当ＭＰＰＫテーブル２２１６の一例を示す図である。
【図３６】図３６は、実施例７によるリモートコピー機能のペア操作プログラム３２２３の処理フローの一例を示す図である。
【図３７】図３７は、実施例８の負荷判定付担当切り替えプログラム２２６１の処理フローの一例を示す図である。
【図３８】図３８は、実施例９の負荷判定付担当切り替えプログラム２２６１の処理フローの一例を示す図である。
【図３９】図３９は、実施例１０の担当切り替え閾値テーブル２２５１の一例を示す図である。
【図４０】図４０は、実施例１０の負荷判定付担当切り替えプログラム２２６１の処理フローの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の好適な実施形態について、実施例に即して添付図面を参照しながら説明する。
【００１４】
［実施例１］
図１から図１３を用いて、本発明の実施例１による情報処理システム１を説明する。図１は、本実施例による情報処理システム１の全体構成の一例を示している。
【００１５】
情報処理システム１のシステム構成
情報処理システム１は、ホスト１００とストレージシステム２００とを備えている。ストレージシステム２００は、後述するように、ホスト１００が処理するデータを格納するための記憶領域を提供する記憶媒体を備える装置である。ホスト１００とストレージシステム２００とは、ネットワーク１１０によって接続される。ネットワーク１１０としては、例えばＬＡＮ（Local Area Network）を適用することができ、また他の適宜のプロトコルによるネットワークを採用することができる。
【００１６】
ホスト１００
ホスト１００は、ＵＮＩＸ（登録商標）等の適宜のＯＳ（Operation System）が稼働しているコンピュータであり、そのＯＳ上で、例えばデータベース管理システムなどのアプリケーションソフトウェアを実行することで、所定の業務処理を行う装置である。ホスト１００で実行される業務処理に用いられるデータの一部、又は全ては、ストレージシステム２００によって提供される記憶領域に格納される。ホスト１００はストレージシステム２００に格納するデータの書き込み及び読み出しを行うため、ストレージシステム２００に対してネットワーク１１０を用いてリード要求、ライト要求を発行する。
【００１７】
図２に、ホスト１００として使用することができるコンピュータ１０の構成例を示している。このコンピュータ１０は、中央処理装置１１（例えばＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）、以下簡単のため「ＣＰＵ」と称する）、主記憶装置１２（例えばＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory））、補助記憶装置１３（例えばＨＤＤ）、ユーザの操作入力を受け付ける入力装置１４（例えばキーボードやマウス）、出力装置１５（例えば液晶モニタ）、他の装置との間の通信を実現する通信インタフェース１６（例えばＮＩＣ（Network Interface Card）やＨＢＡ（Host Bus Adapter）)を備えている。
【００１８】
ホスト１００では、補助記憶装置１３に格納されたアプリケーションプログラムが、中央処理装置１１によって主記憶装置１２に読み出されて実行され、種々の業務データ処理が行われる。
【００１９】
保守端末２７０
次に、保守端末２７０について説明する。保守端末２７０は、後述するストレージシステム２００の動作状態をモニタし、あるいは例えば保守上必要な操作命令を与えるための端末であり、例えばＳＶＰ（SerVice Processor）である。
【００２０】
図１に示すように、保守端末２７０は、保守ポート２７５、ＣＰＵ２７１、メモリ２７２、及び入出力部２７４を備え、これらの間は内部ネットワークによって互いに通信可能に接続されている。保守ポート２７５は、後述するストレージシステム２００のＭＰＰＫ２１０にある保守ポート２１３と接続されており、ＭＰＰＫ２１０から稼動情報を取得し、あるいはＭＰＰＫ２１０に保守操作命令を送信するために使用するポートである。
【００２１】
メモリ２７２には、前記ＭＰＰＫ２１０に関する処理を実行するための保守用プログラム２７３が格納されており、ＣＰＵ２７１がメモリ２７２からこの保守用プログラム２７３を読み出し実行することで、前記したＭＰＰＫ２１０に関する保守を実現する。なお、メモリ２７２は、ＭＰＰＫ２１０から得た情報を格納するためにも使用される。
【００２２】
入出力部２７４は、ユーザからの操作入力を受け付けるためのキーボード、マウス等の入力装置、及びユーザにＭＰＰＫ２１０から取得したストレージシステム２００の稼動情報を表示するためのディスプレイ装置等の出力装置を含む。なお、保守端末２７０は、ストレージシステム２００の内部ネットワーク２８０によってＭＰＰＫ２１０の保守ポート２１３に接続されている。
【００２３】
ストレージシステム２００
次に、本実施例のストレージシステム２００の構成を、図１を参照して説明する。本実施例のストレージシステム２００は、大きく分けて、フロントエンドパッケージ２６０（Front End Package、以下「ＦＥパッケージ」）、マイクロプロセッサパッケージ２１０（ＭＰＰＫ）、メモリパッケージ２２０、バックエンドパッケージ２３０（Back End Package、以下「ＢＥパッケージ」）、及びディスク装置２４０を備え、これらは、内部ネットワーク２８０を介して相互に通信可能に接続されている。
【００２４】
なお、ストレージシステム２００は、それぞれ複数のＦＥパッケージ２６０、メモリパッケージ２２０、ＢＥパッケージ２３０、ディスク装置２４０、及び３以上のＭＰＰＫ２１０を有するように構成してもよい。
【００２５】
ＦＥパッケージ２６０は、通信ポート２６１とメモリ２６２とを有する。通信ポート２６１は、ホスト１００がストレージシステム２００にＩＯ要求を発行するために用いるポート（図８の例では、通信インタフェース１６である。）と接続されており、ホスト１００からライト要求及びリード要求を受け付けることができる。なお、ホスト１００のポートとポート２６１は、ネットワーク１１０によって直接接続してもよいし、１以上のスイッチなどを介して間接的に接続してもよい。
【００２６】
メモリ２６２は例えばＲＡＭで構成されており、ホスト１００から受領したリード要求及びライト要求を、当該要求を処理するＭＰＰＫ２１０（要求先のボリュームに関するデータ処理を担当しているＭＰＰＫ）の情報や、ホスト１００から転送されたデータ、ホスト１００へ転送するデータを一時的に格納する。なお、ＦＥパッケージ２６０は複数のポート２６１とメモリ２６２とを有してもよい。
【００２７】
ＭＰＰＫ２１０は、プロセッサ２１１、ローカルメモリ２１２、及び保守ポート２１３を有し、これらは、ネットワーク２１４によって相互に通信可能に接続されている。一つのＭＰＰＫ２１０が、複数のプロセッサ２１１、ローカルメモリ２１２、又は保守ポート２１３を有するとしてもよい。ＭＰＰＫ２１０としては、例えば種々のデュアルコアプロセッサ（Dual Core Processor）、カッドコアプロセッサ（Quad Core Processor）を採用することができ、この場合、それぞれのプロセッサパッケージ内に実装されているコアがプロセッサ２１１に相当する。
【００２８】
プロセッサ２１１は、後述するメモリパッケージ２２０のプログラム部２２２に格納されているプログラムを読み出して実行することで、ホスト１００からのライト要求及びリード要求の処理などを実行する装置である。
【００２９】
ローカルメモリ２１２は、例えばＲＡＭで構成され、プロセッサ２１１が実行するプログラムの一時データを格納しておく、及びＨＤＤ２４０やメモリ２２０に格納されているデータ（後述する制御情報、業務データ、プログラムなど）を格納するためのキャッシュメモリとして使用されるローカルメモリ２１２は、プロセッサ２１１からの距離が後述するメモリパッケージ２２０及びディスク装置２４０に比べ近いため、プロセッサ２１１がより高速にアクセスすることがが可能となる。
【００３０】
保守ポート２１３は、ネットワーク２８０を介して、保守端末２７０にある保守ポート２７５に接続されている。保守ポート２１３は、保守端末２７０にＭＰＰＫ２１０の稼動情報を送信し、あるいは保守端末２７０からの保守操作命令を受け付けるために使用される通信ポートである。
【００３１】
メモリパッケージ２２０は、制御情報部２２１、プログラム部２２２、及びキャッシュ部２２３を有する。プログラム部２２２には、ストレージシステム２００による処理を実現するためのプログラムが記録されている。制御情報部２２１には、これらプログラム部の２２２のプログラムが利用する制御情報が、例えばテーブルの形式で記録されている。メモリパッケージ２２０に格納されたプログラム及びプログラムが利用する制御情報は、ＭＰＰＫ２１０のプロセッサ２１１がメモリパッケージ２２０から読み出し処理する。プログラム部２２２に記録されるプログラム、及び制御情報部２２１記録される制御情報の詳細は後述する。
【００３２】
キャッシュ部２２３には、ＨＤＤ２４０に格納されるデータ及びディスク装置２４０から読み出したデータを一時的に格納する。メモリパッケージ２２０は、ディスク装置２４０に比べて高速な記憶媒体であるＲＡＭ等で構成されるため、ディスク装置２４０に格納される使用頻度の高いデータなどを、キャッシュ部２２３に格納することにより、常に全てのデータＩＯについてディスク装置２４０にアクセスする場合に比べて、ホスト１００からのリード要求、ライト要求などの処理の高速化を図ることができる。なお、メモリパッケージ２２０は、障害発生時におけるデータ消失などを避けるために多重化してもよい。
【００３３】
ＢＥパッケージ２３０は、ポート２３１とメモリ２３２とを有する。ポート２３１は、ネットワーク２８３を介してディスク装置２４０に接続されており、ホスト１００からのライトデータをディスク装置２４０に書き込んだり、ホスト１００からのリード要求に応じてディスク装置２４０からデータを読み出したりするために使用される通信ポートである。メモリ２３２には、ディスク装置２４０へ転送するデータ、及びディスク装置２４０から読み出したデータを一時的に格納する。なお、ＢＥパッケージ２３０は２以上のポート２３１及びメモリ２３２を有しても良い。
【００３４】
ディスク装置２４０は、本実施例では例えばハードディスクドライブ（Hard Disk Drive、「ＨＤＤ」）によって構成されており、ホスト１００によって実行されるアプリケーションソフトウェア等がデータを格納するための論理記憶領域を提供する物理記憶装置である。
【００３５】
１つ以上のディスク装置２４０を、パリティグループという単位でまとめてＲＡＩＤ（Redundant Arrays of independent (or Inexpensive) Disks）で運用し、高信頼化を図ることができる。前記のように、ディスク装置２４０からなるパリティグループを一つ以上の論理記憶領域に分割して、それぞれを単位論理記憶領域である論理ボリューム２５０としている。
【００３６】
なお、本実施例では、物理的な記憶媒体としてＨＤＤ２４０を使用したが、フラッシュメモリ、半導体ドライブ（Solid State Drive、「ＳＳＤ））、あるいはＤＶＤなどの光ディスクを記録媒体として採用してもよい。
【００３７】
メモリパッケージ２２０の構成
図３にはメモリパッケージ２２０の詳細構成例を示している。メモリパッケージ２２０の制御情報部２２１には、ストレージシステム２００がホスト１００からのデータＩＯ処理、及び本発明に関する処理を実行するために用いる制御情報が、テーブルの形式で格納されている。本実施例では、制御情報部２２１には、ボリュームテーブル２２１１、担当ＭＰＰＫテーブル２２１２、及びローカルコピーテーブル２２１３が格納されている。
【００３８】
プログラム部２２２には、ＭＰＰＫ２１０によって実行されるプログラムが格納されている。本実施例では、プログラム部２２２は、ＩＯプログラム２２２２、担当切り換えプログラム２２２４、負荷判定付担当切り換えプログラム２２６１、担当ＭＰＰＫ手動切り換えプログラム２２６２、及びローカルコピーペア操作プログラム３２２１が格納されている。各テーブル、プログラムの詳細は、関連図面を参照して後述する。なお、キャッシュ部２２３は、上記したように、ホスト１００とディスク装置２４０との間で授受されるデータの一時記憶領域として使用されるもので、詳細な説明は省略する。
【００３９】
制御情報部２２１
次に、メモリパッケージ２２０の制御情報部２２１に格納されるテーブルについて説明する。図４には、制御情報部２２１内に格納されるボリュームテーブル２２１１の一例を示す。
【００４０】
ボリュームテーブル２２１１
ボリュームテーブル２２１１は、ディスク装置２４０によって提供される単位論理記憶領域であるボリューム２５０に関する属性情報を格納する。ボリュームテーブル２２１１は、ボリューム番号欄２２１１１、及び機能ビット及びペア番号を情報として有するボリューム属性欄２２１１２を備える。なお、以下簡単のため、ボリュームテーブル２２１１等のテーブルに設定された各欄に記録される情報自体についても、例えば「ボリューム番号２２１１１」等のように、その情報が記録される欄に付した符号と同一の符号を付けて表すものとする。
【００４１】
ボリューム番号欄２２１１１には、ストレージシステム２００内部で各ボリューム２５０を一意に識別するための識別符号であるボリューム番号が記録される。ボリューム番号は、ディスク装置２４０によって提供される複数のボリューム２５０に対して、ＭＰＰＫ２１０がシリアルにユニークな番号を付与する。
【００４２】
ボリューム属性欄２２１１２で、機能ビットは、ボリューム番号２２１１１によって識別されるボリューム２５０に適用されているストレージ機能（後述）の情報であり、ペア番号はそのストレージ機能において、当該ボリューム２５０とペアを構成しているボリューム２５０を特定するためにＭＰＰＫ２１０によって付与される番号である。図３の例では、ボリューム番号２で特定されるボリューム２５０は、ストレージ機能としてローカルコピー機能のＳＶＯＬ（Secondary VOLume、副ボリューム）が適用されており、そのペアを構成しているボリューム２５０のボリューム番号は１であることを示している。
【００４３】
次に、特定のボリューム２５０と、そのボリューム２５０の処理を担当するＭＰＰＫ２１０との関係について説明する。本実施例のストレージシステム２００では、各ボリューム２５０に関するデータ処理（ホスト１００からボリューム２５０へのＩＯ処理など）を担当するＭＰＰＫ２１０が予め決定されている。このように、各ボリューム２５０のデータ処理を担当するＭＰＰＫ２１０を予め決めておくことで、ボリューム２５０の特定のデータ処理に必要となる制御情報へアクセスするＭＰＰＫ２１０を一つに限定することができる。
【００４４】
特定ボリューム２５０に関するデータ処理を行うＭＰＰＫ２１０が予め決定されていれば、他のＭＰＰＫ２１０と通信を行う必要がなく、処理に必要となる制御情報を１のＭＰＰＫ２１０のローカルメモリ２１２に格納することができ、ボリューム２５０の処理を高速化することができる。例えば、ボリューム２５０のデータのうちダーティデータ（キャッシュ部２２３には書き込まれているがまだディスク装置２４０にデステージされていないデータ）がどのアドレスに存在するかを示す情報、あるいは後述するローカルコピー機能における差分データを示すコピー済みビットマップをローカルメモリ２１２に置くことで、ＭＰＰＫ２１０がそれらにアクセスする処理を高速化することができる。
【００４５】
特定のボリューム２５０を担当する担当ＭＰＰＫ２１０を決める場合、ＦＥパッケージ２６０は、ホスト１００からＩＯを受領すると、ＩＯ発行先ボリューム２５０の情報に基づき、ＩＯ要求を担当ＭＰＰＫ２１０へ割り振る必要がある。ＦＥパッケージ２６０は、この割り振りを実現するための情報として担当ＭＰＰＫテーブル２６３を保持している。
【００４６】
図５には、メモリ２６２の構成例を示している。メモリ２６２には、ＦＥパッケージ２６０の処理において使用される担当ＭＰＰＫテーブル２６３が格納されている。図６に担当ＭＰＰＫテーブル２６３の一例を示している。
【００４７】
担当ＭＰＰＫテーブル２６３は、ボリューム番号欄２６３１、及び担当ＭＰＰＫ番号欄２６３２を有する。ボリューム番号欄２６３１には、ボリュームテーブル２２１１のボリューム番号欄２２１１１と同じボリューム２５０の識別符号であるボリューム番号が記録される。
【００４８】
担当ＭＰＰＫ番号欄２６３２は、ボリューム番号２６３１によって識別されるボリューム２５０の処理（当該ボリューム２５０へのＩＯ処理など）を担当しているＭＰＰＫ２１０の識別番号である。ＭＰＰＫ番号は、ストレージシステム２００の運用開始前に、あらかじめシステム管理者が各ＭＰＰＫ２１０に対して一意に付与しておく識別番号である。ＦＥパッケージ２６０は、ホスト１００からＩＯを受領した場合、そのＩＯ対象のボリューム２５０が有するボリューム番号２６３１により、担当ＭＰＰＫテーブル２６３を検索し、ＩＯ対象ボリューム２５０を担当しているＭＰＰＫ２１０のＭＰＰＫ番号２６３２を取得して、当該ＭＰＰＫ２１０にＩＯを送信する。
【００４９】
担当ＭＰＰＫテーブル２２１２は、メモリパッケージ２２０内の制御情報部２２１にも保持されている。図７に制御情報部２２１内にある担当ＭＰＰＫテーブル２２１２の一例を示している。
【００５０】
制御情報部２２１内の担当ＭＰＰＫテーブル２２１２は、ＦＥパッケージ２６０内に保持されている担当ＭＰＰＫテーブル２６３と同じ構成を有しており、ボリューム番号欄２２１２１、及び担当ＭＰＰＫ番号欄２２１２２を備えている。図６の例では、ボリューム番号１で識別されるボリューム２５０の担当ＭＰＰＫ２１０の担当ＭＰＰＫ番号２２１２２が１であることを示している。
【００５１】
ストレージ機能の説明
ローカルコピー機能
次に、ストレージシステム２００を備える図１の情報処理システム１におけるストレージ機能に対する本発明の適用について順次説明する。
【００５２】
ストレージ機能の一つにローカルコピー機能がある。ローカルコピー機能は、ストレージシステム２００内で、１のボリューム２５０に格納されているデータのコピーを他のボリューム２５０に作成する機能である。ローカルコピー機能では、コピー元となるボリューム２５０（Primary VOLume、以下「ＰＶＯＬ））と、コピー先となるボリューム２５０（Secondary VOLume、以下「ＳＶＯＬ））の二つのボリューム２５０が関連付けられている。この関連づけられているＰＶＯＬとＳＶＯＬのペアを、以下ローカルコピーペア、又は単にペアと呼ぶ。
【００５３】
以下では、ストレージシステム２００が、ローカルコピー機能のペアとして設定されているボリュームについて行う処理について述べる。まず、ローカルコピー機能の通常動作を簡単に説明する。
【００５４】
ローカルコピー機能においては、まずホスト１００あるいは保守端末２７０からローカルコピー開始指示を受領する。この指示は、ＰＶＯＬ及びＳＶＯＬにそれぞれ付与されたボリューム番号２２１１１を含む。指示を受領すると、ローカルコピー機能は、後述するように、ローカルコピーテーブル２２１３に、ペア番号、ＰＶＯＬ番号、ＳＶＯＬ番号、ペア状態を記録する。
【００５５】
ローカルコピー機能は、ある時刻におけるＰＶＯＬに格納されているデータをＳＶＯＬにコピーする機能、及び常にＰＶＯＬ及びＳＶＯＬに格納されているデータを同一に保持する機能を提供する。さらに、そのＰＶＯＬとＳＶＯＬとのペアを分割して、ＰＶＯＬ、ＳＶＯＬそれぞれに対するホスト１００からの読み書きを許可する、ペアが分割されていた間にＰＶＯＬに書かれたデータをＳＶＯＬに反映することでＰＶＯＬとＳＶＯＬのデータを再び同一にする、正方向のペア再同期機能、及び逆にペアが分割されていた間にＳＶＯＬに書かれたデータをＰＶＯＬに反映することでＰＶＯＬとＳＶＯＬのデータを再び同一にする、逆方向のペア再同期機能を提供する。
【００５６】
図８は、本実施例におけるローカルコピーテーブル２２１３の一例を示す。ローカルコピーテーブル２２１３は、ローカルコピー機能が提供されるペアとして設定されているＰＶＯＬとＳＶＯＬの関係を管理するためのテーブルである。
【００５７】
ローカルコピーテーブル２２１３は、ペア番号欄２２１３１、ＰＶＯＬ番号欄２２１３２、ＳＶＯＬ番号欄２２１３３、及びペア状態欄２２１３４を備える。ペア番号欄２２１３１には、ローカルコピー機能が設定されているＰＶＯＬとＳＶＯＬのペアに対して割当てられている番号であるペア番号が記録される。ペア番号２２１３１を用いて、ストレージシステム２００内部でペアを一意に識別することができる。
【００５８】
ＰＶＯＬ番号２２１３２は、ローカルコピーのコピー元であるＰＶＯＬのボリューム番号である。ＳＶＯＬ番号２２１３３は、ローカルコピーのコピー先であるＳＶＯＬのボリューム番号である。
【００５９】
ペア状態２２１３４は、当該ペアのＰＶＯＬ又はＳＶＯＬに対してホスト１００からのデータ入出力があったとき、それをどのように処理したらよいかを切り替えるために使用される変数である。ペア状態が「同期」と記録されている場合は、ストレージシステム２００は、ＰＶＯＬに対する書き込みデータをＳＶＯＬにコピーする。ペア状態が「分割」と記録されている場合は、ストレージシステム２００は、ＰＶＯＬに対する書き込みデータをＳＶＯＬにコピーせず、ＰＶＯＬデータ書き込みによって生じた差分データを保持するコピー済みビットマップ（図示しない）にデータが書き込まれたことだけを記録する。
【００６０】
従来のローカルコピー機能による処理例
図９を用いて、ストレージシステム２００のＩＯ処理の例として、ＰＶＯＬ、ＳＶＯＬからなるボリューム２５０のペアにローカルコピー機能が適用されていて、ペア状態が前記の「同期」である場合のＰＶＯＬへのＩＯ処理を説明する。この処理は、ＰＶＯＬ側、ＳＶＯＬ側のボリューム２５０について、それぞれメモリパッケージ２２０にあるＩＯプログラム２２２２が実行されることにより行われる。
【００６１】
図９のＩＯプログラム２２２２によりプロセッサ２１１は、ホスト１００からのＩＯ処理要求（コマンド及びデータ）を受信し（Ｓ１０１）、ＩＯ対象ボリューム２５０（ＰＶＯＬ）の特定と、その入出力処理に必要なキャッシュメモリ２２３やデータ転送エンジン（図示しない）などの資源を確保する（Ｓ１０２ａ）。
【００６２】
さらにプロセッサ２１１は、ポート２６１からキャッシュメモリ２２３へのデータ転送を行い（Ｓ１０３ａ）、ホスト１００へレスポンス、すなわちＩＯ処理の完了報告を行う（Ｓ１０４ａ）。
【００６３】
その後、プロセッサ２１１は、ローカルコピーテーブル２２１３及び担当ＭＰＰＫテーブル２２１２から、副ボリューム２５０（ＳＶＯＬ）の担当ＭＰＰＫ２１０のＭＰＰＫ番号２２１２２を取得し（Ｓ１２５）、ＩＯ対象ボリューム担当ＭＰＰＫ２１０（つまり、処理を行っているプロセッサ２１１が属するＭＰＰＫ２１０）と同一であるか判定する（Ｓ１２６）。同一であれば（Ｓ１２６、Ｙｅｓ）、副ボリューム２５０へのデータ転送処理も同じプロセッサ２１１が実行することができる。
【００６４】
すなわち、担当ＭＰＰＫ２１０に属するプロセッサ２１１は、副ボリューム２５０（ＳＶＯＬ）への転送に必要な資源（データ転送エンジンや副ボリューム２５０に割り当てるキャッシュメモリ２２３など）を確保し（Ｓ１２７ａ）、ＩＯ対象ボリューム２５０に割り当てたキャッシュメモリ２２３から副ボリューム２５０に割り当てたキャッシュメモリ２２３へのデータ転送を行い（Ｓ１２８ａ）、Ｓ１２７ａで確保した資源を解放する（Ｓ１２９ａ）。その後プロセッサ２１１はＳ１０２ａで確保した資源を解放し（Ｓ１０５ａ）、処理を完了する（Ｓ１２０ａ）。
【００６５】
Ｓ１２６で副ボリューム２５０（ＳＶＯＬ）の担当ＭＰＰＫ２１０とＩＯ対象ボリューム２５０（ＰＶＯＬ）担当ＭＰＰＫ２１０が異なると判定された場合（Ｓ１２６、Ｎｏ）、副ボリューム２５０へのデータ転送処理は、副ボリューム２５０（ＳＶＯＬ）の担当ＭＰＰＫ２１０に属するプロセッサ２１１が行う必要がある。そのためＰＶＯＬ担当のプロセッサ２１１は、コピー要求（Ｓ１０３ａでコピーしたキャッシュメモリ２２３のアドレスとコピーしたデータ長を含む）を送信（Ｓ１３０）して、副ボリューム２５０（ＳＶＯＬ）の担当ＭＰＰＫ２１０のプロセッサ２１１にコピー処理を依頼する。
【００６６】
副ボリューム２５０（ＳＶＯＬ）の担当ＭＰＰＫ２１０のプロセッサ２１１は、Ｓ１３０で生成されたコピー要求を受信し（Ｓ１３１）、副ボリューム２５０へのデータ転送に必要な資源を確保し（Ｓ１２７ｂ）、ＩＯ対象ボリューム２５０（ＰＶＯＬ）に割り当てたキャッシュメモリ２２３から副ボリューム２５０に割り当てたキャッシュメモリ２２３へのデータ転送を行い（Ｓ１２８ｂ）、ＩＯ対象ボリューム担当ＭＰＰＫ２１０のプロセッサ２１１にコピー完了報告を送信し（Ｓ１３２）、Ｓ１２７ｂで確保した資源を解放して（Ｓ１２９ｂ）、処理を完了する（Ｓ１２０ｂ）。
【００６７】
ＩＯ対象ボリューム担当ＭＰＰＫ２１０のプロセッサ２１１は、コピー完了報告を受信し（Ｓ１３３）、前記Ｓ１０５ａを実行して処理を完了する（Ｓ１２０ａ）。
【００６８】
このように、ＰＶＯＬであるＩＯ対象ボリューム２５０を担当するＭＰＰＫ２１０と、ＳＶＯＬである副ボリューム２５０を担当するＭＰＰＫ２１０とが異なる場合、ＭＰＰＫ２１０のプロセッサ２１１間で通信処理（Ｓ１３０、Ｓ１３１、Ｓ１３２、Ｓ１３３）を実行する必要が生じるため、各プロセッサ２１１の処理オーバヘッドが増大する問題がある。
【００６９】
本実施例のローカルコピー機能による処理例
図１０は、本発明の実施例１における、ローカルコピー処理の一例を示すフローチャートである。図示のローカルコピー処理は、メモリパッケージ２２０のプログラム部２２２に格納されているローカルコピープログラム３２２２（以下「コピープログラム」）がＭＰＰＫ２１０のプロセッサ２１１で実行されることにより実現される。コピープログラム３２２２は、上述したコピー済みビットマップをチェックし、コピー処理を起動するプログラムなどからコールされる。
【００７０】
なお、図１０のローカルコピー処理はＰＶＯＬ２５０の担当ＭＰＰＫ２１０で起動されることを前提とした例であるが、必ずしもＰＶＯＬ２５０の担当ＭＰＰＫ２１０で起動する必要がある訳ではない。
【００７１】
まず、コピープログラム３２２２によって、プロセッサ２１１は、コピー済みビットマップからＰＶＯＬ２５０とＳＶＯＬ２５０の格納データの差分がどこにあるか特定する（Ｓ５００）。次に、プロセッサ２１１は、担当ＭＰＰＫテーブル２２１２を参照することで、ＰＶＯＬ２５０の担当ＭＰＰＫ２１０が自ＭＰＰＫ２１０であるか否かをチェックする（Ｓ５０１）。ＰＶＯＬ２５０の担当ＭＰＰＫ２１０でないと判定した場合（Ｓ５０１、Ｎｏ）、処理を終了し（Ｓ５０７）、ＰＶＯＬ２５０の担当ＭＰＰＫ２１０で再起動する。本実施例では、２つのＭＰＰＫ２１０のうち、一方が、ＰＶＯＬ２５０担当ＭＰＰＫ２１０が自ＭＰＰＫ２１０でないと判定した場合、他方のＭＰＰＫ２１０が本処理を再起動する。３以上のＭＰＰＫ２１０が設けられている場合には、予め規定した順序で各ＭＰＰＫ２１０が担当ＭＰＰＫ２１０の判定を行う。
【００７２】
起動したＭＰＰＫ２１０がＰＶＯＬ２５０の担当ＭＰＰＫ２１０であると判定された場合（Ｓ５１０、Ｙｅｓ）、プロセッサ２１１は、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０が自ＭＰＰＫ２１０であるか否かをチェックする（Ｓ５０２）。自ＭＰＰＫ２１０がＳＶＯＬ２５０の担当ＭＰＰＫ２１０であると判定した場合（Ｓ５０２、Ｙｅｓ）、自ＭＰＰＫ２１０がＰＶＯＬ２５０とＳＶＯＬ２５０の両方のボリューム２５０の担当ＭＰＰＫ２１０であるため、ＰＶＯＬ２５０からＳＶＯＬ２５０へデータをコピーし（Ｓ５０４）、処理を終了する（Ｓ５０７）。
【００７３】
次に、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０がＰＶＯＬ２５０の担当ＭＰＰＫ２１０と異なる場合の処理について説明する。Ｓ５０２において、自ＭＰＰＫ２１０がＳＶＯＬ２５０の担当ＭＰＰＫ２１０でないと判定された場合（Ｓ５０２、Ｎｏ）、コピープログラム３２２２は、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０へＳＶＯＬ側の処理を依頼し、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０からの応答を待つ（Ｓ５０８）。なお、ここでのコピージョブの内容は、コピーするデータのアドレスをＳＶＯＬ２５０の担当ＭＰＰＫ２１０へ通知することである。
【００７４】
ＳＶＯＬ２５０の担当ＭＰＰＫ２１０のプロセッサ２１１は、ＰＶＯＬ２５０の担当ＭＰＰＫ２１０のプロセッサ２１１から、ＳＶＯＬ側の処理依頼を受領する。次に、ＳＶＯＬ側のプロセッサ２１１は、ＰＶＯＬ２５０からＳＶＯＬ２５０へデータをコピーする（Ｓ５１１）。最後に、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０のプロセッサ２１１は、ＰＶＯＬ２５０の担当ＭＰＰＫ２１０のプロセッサ２１１に完了を報告する（Ｓ５１３）。
【００７５】
ＰＶＯＬ２５０の担当ＭＰＰＫ２１０のプロセッサ２１１が、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０のプロセッサ２１１からの完了報告を受領すると（Ｓ５０９）、処理を終了する（Ｓ５０７）。
【００７６】
コピープログラム３２２２は、ローカルコピー機能が設定されたボリューム２５０のペアを作成した後、ＰＶＯＬ２５０とＳＶＯＬ２５０のデータが一致するまで、あるいは、ペアを分割したのち再同期して再びＰＶＯＬ２５０とＳＶＯＬ２５０のデータが一致するまでのプロセッサ２１１の処理を実行している。
【００７７】
担当ＭＰＰＫ切り替え処理
次に、図１１及び図１２を用いて、ＰＶＯＬ２５０を担当するＭＰＰＫ２１０とＳＶＯＬ２５０を担当するＭＰＰＫ２１０とを同一とするための処理である、担当ＭＰＰＫ２１０の切り替え処理を説明する。
【００７８】
図１１のペア操作プログラム３２２１は、プロセッサ２１１がローカルコピー機能のペア生成、ペア分割、再同期、あるいは解消の要求を受け取り、必要に応じてボリューム２５０の担当ＭＰＰＫ２１０を切り替え、ペア状態を変更するために実行されるプログラムである。
【００７９】
ペア操作プログラム３２２１によって、プロセッサ２１１は、ストレージシステム２００が保守端末２７０を介して管理者から受け取った操作要求を判別する（Ｓ２０１）。
【００８０】
操作要求がペア作成だった場合は、必要な操作可否チェック処理（例えば管理者が指定したボリューム２５０が既に他のボリューム２５０のペアとして定義済みでないことなど）を行い（Ｓ２０２ａ）、管理者が指定したＰＶＯＬ２５０及びＳＶＯＬ２５０の担当ＭＰＰＫ番号２２１２２を担当ＭＰＰＫテーブル２２１２から取得し（Ｓ２０３ａ）、担当ＭＰＰＫ２１０が自ＭＰＰＫ２１０であるか判定する（Ｓ２０４ａ）。
【００８１】
ＰＶＯＬ２５０及びＳＶＯＬ２５０の担当ＭＰＰＫ２１０が同一でないと判定された場合（Ｓ２０４ａ、Ｎｏ）、ペア操作プログラム３２２１により、ＳＶＯＬ２５０を切り替え対象のボリューム２５０として、ＰＶＯＬ２５０の担当ＭＰＰＫ２１０を切り替え先のＭＰＰＫ２１０として指定して、後述する担当切り替えプログラム２２２４を呼び出し、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０をＰＶＯＬ２５０の担当ＭＰＰＫ２１０に切り替え（Ｓ２０５ａ）、処理を後述のＳ２１１ａに進める。
【００８２】
ＰＶＯＬ２５０及びＳＶＯＬ２５０の担当ＭＰＰＫ２１０が同一であると判定された場合（Ｓ２０４ａ、Ｙｅｓ）、担当切り替えプログラム２２２４は呼び出されない。次いでプロセッサ２１１は、ローカルコピーテーブル２２１３に新規ペアのレコードを割り当て、ペア状態２２１３４、ＰＶＯＬ番号２２１３２、及びＳＶＯＬ番号２２１３３を書き込み、ボリュームテーブル２２１１の機能ビット、ペア番号を含むボリューム属性２２１１２の書き換えを行い（Ｓ２１１ａ）、処理を完了する（Ｓ２２０）。
【００８３】
操作要求が「ペア分割」、「ペア解消」、「正方向のペア再同期」、又は「逆方向のペア再同期」であると判定された場合は、必要な操作可否チェック（例えば管理者が操作要求において指定したボリューム２５０がペアとして定義済みであることなど）を行う（Ｓ２０２ｂ〜S２０２ｅ）。次いで、、操作要求が「ペア分割」、「正方向のペア再同期」、又は「逆方向のペア再同期」である場合、ローカルコピーテーブル２２１３のペア状態２２１３４、ＰＶＯＬ番号２２１３２、及びＳＶＯＬ番号２２１３３を書き換える（Ｓ２１１ｂ〜Ｓ２１１ｄ）。操作要求が「ペア解消」である場合、ローカルコピーテーブル２２１３の該当レコードをクリアし、ボリュームテーブル２２１１の機能ビット、ペア番号を含むボリューム属性２２１１２の書き換えを行い（Ｓ２１１ｅ）、処理を完了する（Ｓ２２０）。
【００８４】
次に、担当ＭＰＰＫ２１０を切り換えるための担当ＭＰＰＫ切り換え処理について説明する。図１２に示している担当切り替えプログラム２２２４は、担当ＭＰＰＫテーブル２２１２に記録されている担当ＭＰＰＫ番号２２１２２を更新することなどで、担当ＭＰＰＫ２１０を実際に切り替えるプログラムである。プロセッサ２１１が担当切り替えプログラム２２２４の処理を実行することにより、切り替え先ＭＰＰＫ２１０で、切り替え対象ボリューム２５０の処理を開始することができる。
【００８５】
担当切り替えプログラム２２２４は、切り替え元ＭＰＰＫ２１０のローカルメモリ２１２から対象ボリューム２５０の制御情報（例えば対象ボリューム２５０のダーティデータが格納されているキャッシュ部２２３のアドレスを示す情報）を、メモリパッケージ２２０の制御情報部２２１に書き出す（Ｓ４００）。
【００８６】
次に、担当切り替えプログラム２２２４は、担当ＭＰＰＫテーブル２２１２の担当ＭＰＰＫ番号２２１２２を更新する。担当ＭＰＰＫ２１０を、ＭＰＰＫ１からＭＰＰＫ２へ切り替える場合、担当ＭＰＰＫ番号２２１２２を１から２へ切り替える（Ｓ４０１）。そして、担当切り替えプログラム２２２４は、対象ボリューム２５０に他のストレージ機能が設定されているか否かを判断する（Ｓ４０２）。他のストレージ機能が設定されていると判定した場合（Ｓ４０２、Ｙｅｓ）、担当切り替えプログラム２２２４は、その機能に関する制御情報（例えばコピー済みビットマップ）を、ローカルメモリ２１２からメモリパッケージ２２０の制御情報部２２１に書き出し（Ｓ４０３）、処理を終了する（Ｓ４０４）。他のストレージ機能が設定されていないと判定された場合（Ｓ４０２、Ｎｏ）、Ｓ４０３をスキップし処理を終了する（Ｓ４０４）。
【００８７】
次に、図１３を用いて、本実施例の変形例を説明する。図１３は、本実施例の変形例におけるＩＯプログラム２２２２の処理の一例を示すフローチャートである。図９のＩＯプログラム２２２２によりＰＶＯＬ２５０からＳＶＯＬ２５０へデータをコピーすることでＰＶＯＬ２５０とＳＶＯＬ２５０のデータを一致させるためには、ホスト１００からＰＶＯＬ２５０へのＩＯ要求を停止し、あらかじめ図１０に示したコピープログラム３２２２でＰＶＯＬ２５０からＳＶＯＬ２５０へ全データをコピーしておく必要がある（正方向の同期処理）。
【００８８】
これを回避して、ホスト１００からのＩＯ要求を受け付けながらデータをコピーするために、図９と異なり図１３ではＳＶＯＬ２５０へのデータコピー（Ｓ１２６〜Ｓ１２９ａ及びＳ１３０〜Ｓ１３３）を実行する代わりに、ＰＶＯＬ２５０に対するライト要求によって生じた差分に相当するビットをＯＮとし、コピー済みビットマップをＯＦＦにする処理を行う（Ｓ１３４）。プロセッサ２１１はバックグラウンドで図１０に示すコピープログラム３２２２の処理を実行することで、ＰＶＯＬ２５０に格納されているデータのうち、コピー済みビットマップがＯＦＦになっている領域にあるデータをコピーすることができる。そのため、ＰＶＯＬ２５０、及びＳＶＯＬ２５０の格納データを一致させるることができる。これによって、ホスト１００からのライト要求を受け付けつつ、ある時刻のＰＶＯＬ２５０のコピー（スナップショット）を作成することができる。
【００８９】
本実施例では、図１１のＳ２０４ａ、及びＳ２０５ａに示した処理によって、ＰＶＯＬ２５０及びＳＶＯＬ２５０の担当ＭＰＰＫ２１０が同一になるように制御しているから、図９に示したＭＰＰＫ２１０間での通信処理（Ｓ１３０、Ｓ１３１、Ｓ１３２、Ｓ１３３）及び図１０に示したＭＰＰＫ２１０間での通信処理（Ｓ５０８、Ｓ５０９、Ｓ５１３）が不要になるため、プロセッサ２１１の処理オーバヘッドを削減することができる。
【００９０】
［実施例２］
次に、図１４〜図１６を用いて、本発明の実施例２を説明する。図１４は、本発明の実施例２における、担当ＭＰＰＫテーブル２２１２の一例を表している。図１４は図７と異なり、担当ＭＰＰＫテーブル２２１２に手動切り替え可否フラグ欄２２１２３を備える。本発明の実施例２においては、手動切り替え可否フラグ２２１２３がＯＫの時は、該当するボリュームを担当するＭＰＰＫを手動での切り替えが可能であり、ＮＧである場合は手動切換ができない状態であることを示している。
【００９１】
図１５は、本発明の実施例２における、ペア操作プログラム３２２１による処理の一例を示すフローチャートである。図１５は、実施例１の図１１と異なり、状態変更ステップＳ２１１ａ、Ｓ２１１ｃ、及びＳ２１１ｄの前にそれぞれ、切り替えＮＧステップＳ２１０ａ、Ｓ２１０ｃ、及びＳ２１０ｄが設けられ、状態変更ステップＳ２１１ｂ及びＳ２１１ｅの後ろにそれぞれ、切り替えＯＫステップＳ２１２ｂ及びＳ２１２ｅが設けられ、可否チェックステップＳ２０２ｃの後ろに担当取得ステップＳ２０３ｃ、同一チェックステップＳ２０４ｃ、及び担当切り替えステップＳ２０５ｃが設けられている。
【００９２】
切り替えＮＧステップＳ２１０ａ、Ｓ２１０ｃ、及びＳ２１０ｄにおいて、プロセッサ２１１は、ＰＶＯＬ２５０及びＳＶＯＬ２５０に該当する担当ＭＰＰＫテーブル２２１２の手動切り替え可否フラグ２２１２３をＮＧに設定する。一方、切り替えＯＫステップＳ２１２ｂ及びＳ２１２ｅにおいて、プロセッサ２１１は、ＰＶＯＬ２５０及びＳＶＯＬ２５０に該当する担当ＭＰＰＫテーブル２２１２の手動切り替え可否フラグ２２１２３をＯＫに指定する。
【００９３】
図１６は、本発明の実施例２における、担当ＭＰＰＫ手動切り替えプログラム２２６２による処理の一例を示すフローチャートである。担当ＭＰＰＫ手動切り替えプログラム２２６２は、例えば図１５の担当切り替えステップＳ２０５ａ、Ｓ２０５ｃ、及びＳ２０５ｃに適用される。
【００９４】
担当ＭＰＰＫ手動切り替えプログラム２２６２に従って、プロセッサ２２１は、ストレージシステム２００が保守端末２７０を介して管理者から受け取った操作要求を受け付け（Ｓ１６０１）、操作要求にある切り替え対象ボリューム２５０に対応する担当ＭＰＰＫテーブル２２１２の手動切り替え可否フラグ２２１２３を参照する（Ｓ１６０２）。
【００９５】
手動切り替え可否フラグ２２１２３がＯＫの場合（Ｓ１６０２、Ｙｅｓ）、担当切り替えプログラム２２２４を呼び出して切り替え対象ボリューム２５０の担当ＭＰＰＫ２１０を切り替え（Ｓ１６０３）、処理を完了する（Ｓ１６０４）。担当ＭＰＰＫテーブル２２１２の手動切り替え可否フラグ２２１２３がＯＫでない場合（Ｓ１６０２、Ｎｏ）、担当切り替えプログラム２２２４を呼び出さずに処理を完了する（Ｓ１６０４）。
【００９６】
以上のように、ローカルコピーのペアが分割又は解消の指示を受けたときは、担当ＭＰＰＫ２１０の手動切り替えが可能になる。ペアが分割している間は、ＰＶＯＬ２５０に入った書き込みデータはＳＶＯＬ２５０に反映する必要がなく、それぞれの担当ＭＰＰＫ２１０は別でもプロセッサ２１０の処理オーバヘッドが増加することはないので、手動で担当ＭＰＰＫ２１０を切り替えても問題がない。むしろ、一の担当ＭＰＰＫ２１０が高負荷である場合、一方の処理を別のＭＰＰＫ２１０に手動で移してやることで負荷分散が可能になる。
【００９７】
一方、分割したペアを再同期する際には、ＰＶＯＬ２５０、ＳＶＯＬ２５０それぞれの担当ＭＰＰＫ２１０が別々だと、図１０に示した通信処理（Ｓ５０８、Ｓ５０９、Ｓ５１３）が発生し、プロセッサ２１１の処理効率が低下する。プロセッサ２１１がＳ２０３ｃ、Ｓ２０４ｃ、及びＳ２０５ｃを実行すると、ペアを再同期する際にＰＶＯＬ２５０、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０を同一にすることができ、Ｓ２１０ａ、Ｓ２１０ｃ、Ｓ２１０ｄをプロセッサ２１１が処理することで、同一となったＰＶＯＬ２５０、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０を手動で切り替えてしまうことを防ぐことができる。
【００９８】
以上に示したとおり、本発明の実施例２では、ペア分割時の手動による負荷分散と再同期時の処理効率向上を図ることができる。
【００９９】
［実施例３］
次に、図１７〜図２１を用いて、本発明の実施例３を説明する。図１７は、本発明の実施例３における、メモリパッケージ２２０の構成例を示している。図１７のメモリパッケージ２２０は図３の実施例１で使用した構成と異なり、制御情報部２２１にＭＰＰＫ使用率テーブル２２１７（後述）と担当切り替え閾値テーブル２２５１（後述）とを含む。
【０１００】
図１８は、ＭＰＰＫ２１０が処理を実施している割合である使用率を管理するＭＰＰＫ使用率テーブル２２１７の一例である。ＭＰＰＫ使用率テーブル２２１７は、ＭＰＰＫ番号欄２２１７１と使用率欄２２１７２とからなる。ＭＰＰＫ番号２２１７１は既出のＭＰＰＫ２１０の識別番号である。使用率２２１７２は、当該ＭＰＰＫ２１０の使用率の一定時間内のピーク値を百分率で表している。例えば、各ＭＰＰＫ２１０について、１秒間あたりの使用率のうち、１週間ごとの最大値を格納する。
【０１０１】
図１９は、本発明の実施例３における、担当切り替え閾値テーブル２２５１の一例を示している。担当切り替え閾値テーブル２２５１は、ストレージ機能の機能種別欄２２５１１と、対応する機能種別においてＰＶＯＬ２５０を担当しているＭＰＰＫ２１０について規定されている負荷閾値２２５１２を保持する。ＰＶＯＬ負荷閾値２５１２は、ＳＶＯＬ２５０のオーナ権をＰＶＯＬ２５０のオーナ権を持つＭＰＰＫ２１０に移動すべきか否かの判断基準として、ＰＶＯＬ２５０のオーナ権をもつＭＰＰＫ２１０の使用率と比較される。
【０１０２】
図２０は、本発明の実施例３における、ペア操作プログラム３２２１による処理の一例を示すフローチャートである。図２０は図１５と異なり、担当切り替えステップＳ２０５ａ、Ｓ２０５ｃの代わりにそれぞれ負荷判定付担当切り替えステップＳ２０６ａ、Ｓ２０６ｃを含む。負荷判定付担当切り替えステップＳ２０６ａ、Ｓ２０６ｃは、担当切り替えステップ２０５ａ、Ｓ２０５ｃと異なり、プロセッサ２１１は担当切り替えプログラム２２２４の代わりにＰＶＯＬ番号２２１３２、ＳＶＯＬ番号２２１３３を指定して負荷判定付担当切り替えプログラム２２６１（後述）を呼び出す。
【０１０３】
図２１は、負荷判定付担当切り替えプログラム２２６１の処理の一例を示すフローチャートである。まず、負荷判定付担当切り替えプログラム２２６１によってプロセッサ２１１は、ＰＶＯＬ２５０の処理を担当しているＭＰＰＫ２１０の使用率２２１７２を、ＭＰＰＫ使用率テーブル２２１７を参照することで取得する（Ｓ３０１）。
【０１０４】
次にプロセッサ２１１は、担当切り替え閾値テーブル２２５１に記録したＰＶＯＬ負荷閾値２２５１２とＳ３０１で取得した当該ＭＰＰＫ２１０の使用率２２１７２とを比較し（Ｓ３０２）、使用率２２１７２がＰＶＯＬ負荷閾値２２５１２より小さい場合（Ｓ３０２、Ｎｏ）、ＳＶＯＬ２５０を切り替え対象のボリューム２５０として、ＰＶＯＬ２５０の担当ＭＰＰＫ２１０を切り替え先のＭＰＰＫ２１０として指定して担当切り替えプログラム２２２４を呼び出し、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０をＰＶＯＬ２５０の担当ＭＰＰＫ２１０に切り替え（Ｓ３２０）、処理を完了する（Ｓ３３０）。
【０１０５】
使用率２２１７２がＰＶＯＬ負荷閾値２２１５２以上の場合（Ｓ３０２、Ｙｅｓ）は、プロセッサ２１１は担当切り替えプログラム２２２４を呼び出さずに処理を完了する（Ｓ３３０）。そのためこの場合は、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０は変わらない。
【０１０６】
以上に述べたとおり、実施例３においては、担当切り替え閾値テーブル２２５１に記録するＰＶＯＬ負荷閾値２２５１２より、移行先となるＭＰＰＫ２１０の使用率２２１７２が小さい時に限りプロセッサ２１１はＳＶＯＬ２５０を担当しているＭＰＰＫ２１０の担当切り替えを行うため、ＰＶＯＬ負荷閾値２２１５２を調整することで、使用率２２１７２が高くなっているＰＶＯＬ側のＭＰＰＫ２１０に担当が切り替わることを防ぐことができる。
【０１０７】
［実施例４］
次に、図２２及び図２３を用いて、本発明の実施例４を説明する。図２２は、本発明の実施例４における、担当切り替え閾値テーブル２２５１の一例を示している。図２２は図１９と異なり、ストレージ機能の機能種別２２５１１ごとに、ＳＶＯＬ負荷閾値２２５１３をも保持している。ＳＶＯＬ負荷閾値２２５１３は、ＰＶＯＬ２５０の担当ＭＰＰＫ２１０を、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０に切り替えることができるか否かの判断基準として、ＳＶＯＬ２５０を担当しているＭＰＰＫ２１０の使用率２２１７２と比較する値である。
【０１０８】
図２３は、本発明の実施例４における、負荷判定付担当切り替えプログラム２２６１の一例を示すフローチャートである。図２３は図２１と異なり、Ｓ３０２とＳ３３０の間に、Ｓ３０３、Ｓ３０４、及びＳ３２１を含む。
【０１０９】
ＰＶＯＬ側のＭＰＰＫ使用率２２１７２が閾値以上であった場合（Ｓ３０２、Ｙｅｓ）、Ｓ３０３においてプロセッサ２１１は、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０の使用率２２１７２を、当該ＭＰＰＫ番号２２１７１によりＭＰＰＫ使用率テーブル２２１７を参照することで取得する（Ｓ３０３）。次にプロセッサ２１１は、担当切り替え閾値テーブル２２５１に記録したＳＶＯＬ負荷閾値２２５１３とＳ３０３で取得した使用率２２１７２とを比較し、使用率２２１７２がＳＶＯＬ負荷閾値２２５１３より小さい場合（Ｓ３０４、Ｎｏ）、ＰＶＯＬ２５０を切り替え対象のボリューム２５０として、ＳＶＯＬ２５０の担当ＭＰＰＫ２１０を切り替え先のＭＰＰＫ２１０として指定して担当切り替えプログラム２２２４を呼び出し、ＰＶＯＬ２５０の担当ＭＰＰＫ２１０をＳＶＯＬ２５０の担当ＭＰＰＫ２１０に切り替え（Ｓ３２１）、処理を完了する（Ｓ３３０）。
【０１１０】
使用率２２１７２がＳＶＯＬ負荷閾値２２５１３以上の場合（Ｓ３０４、Ｙｅｓ）は、プロセッサ２１１は担当切り替えプログラム２２２４を呼び出さずに処理を完了する（Ｓ３３０）。そのためこの場合は、ＰＶＯＬ２５０の担当ＭＰＰＫ２１０は変わらない。
【０１１１】
以上に述べたとおり、実施例４においては、担当切り替え閾値テーブル２２５１に記録するＳＶＯＬ負荷閾値２２５１３より、移行先となるＭＰＰＫ２１０の使用率２２１７２が低い時にはプロセッサ２１１が担当切り替えを行うため、ＳＶＯＬ負荷閾値２２５１３を調整することで、ＰＶＯＬ２５０の担当ＭＰＰＫ２１０をＳＶＯＬ２５０の担当ＭＰＰＫ２１０へ切り替えることもでき、また使用率２２１７２が高くなっているＭＰＰＫ２１０に担当が切り替わることを防ぐことができる。
【０１１２】
［実施例５］
次に、図２４及び図２５を用いて、本発明の実施例５を説明する。図２４は、本発明の実施例５における、ローカルコピーテーブル２２１３の一例である。図２４は図８と異なり、ＰＶＯＬ移動可否フラグ２２１３５（後述）を含む。
【０１１３】
図２５は、本発明の実施例５における、負荷判定付担当切り替えプログラム２２６１による処理の一例を示すフローチャートである。図２５は図２３と異なり、Ｓ３０４とＳ３２１の間に、Ｓ３０５を含む。
【０１１４】
Ｓ３０５においてプロセッサ２１１は、ローカルコピーテーブル２２１３のＰＶＯＬ移動可否フラグ２２１３５を参照し（Ｓ３０５）、ＰＶＯＬ移動可否フラグ２２１３５が可の場合（Ｓ３０５、Ｙｅｓ）、引き続いてＳ３２１を実行することでＰＶＯＬ２５０の担当ＭＰＰＫ２１０をＳＶＯＬ２５０の担当ＭＰＰＫ２１０に切り替える。ＰＶＯＬ移動可否フラグ２２１３５が否の場合（Ｓ３０５、Ｎｏ）、そのまま処理を完了する（Ｓ３３０）。この場合は、ＰＶＯＬ２５０の担当ＭＰＰＫ２１０は変わらない。
【０１１５】
以上に述べたとおり、実施例５においては、ローカルコピーテーブル２２１３に記録するＰＶＯＬ移動可否フラグ２２１３５が否である場合、プロセッサ２１１は担当切り替えを行わない。このため、オンライン業務に使用している場合など、担当切り替えによる性能影響を避けたいペアに対しては、ＰＶＯＬ移動可否フラグ２２１３５を否に設定しておくことでＰＶＯＬ側ＭＰＰＫ２１０の担当切り替えを防止し、それ以外のペアについては負荷に応じて担当切り替えをプロセッサ２１１に実行させることができる。
【０１１６】
［実施例６］
拡張ボリューム機能への適用
次に、図２６〜図２９を用いて、本発明の実施例６を説明する。図２６は、本発明の実施例６における、メモリパッケージ２２０の構成例を示している。図２６は図１７と異なり、制御情報部２２１に拡張ボリュームテーブル２２１４（後述）を、プログラム部２２２に拡張ボリューム操作プログラム３２２２（後述）を含む。
【０１１７】
次に、ストレージ機能の一つである拡張ボリューム機能について述べる。ローカルコピー機能の場合と同様に、拡張ボリューム機能の概要を述べ、担当ＭＰＰＫ２１０を予め決めるアーキテクチャでの問題点、担当ＭＰＰＫ２１０の切り替え方法について述べる。
【０１１８】
拡張ボリューム機能は、複数個のボリューム２５０をまとめて一つの大容量のボリューム２５０としてホスト１００に提供する機能であり、コンカチネーション（concatination）機能とも呼ばれる。複数個のボリューム２５０から構成されるボリューム２５０を拡張ボリューム、その拡張ボリュームを構成するボリューム２５０を構成ボリュームと呼ぶ。複数個のボリューム２５０を使用することにより、通常ボリューム２５０より多くのディスク装置２４０を使用することができ、高性能、大容量のボリューム２５０を提供できる。ホスト１００は、拡張ボリュームを複数のボリューム２５０の集合として認識するのではなく、一つの高性能、大容量のボリューム２５０として認識する。
【０１１９】
図２７は、拡張ボリュームを管理するための拡張ボリュームテーブル２２１４の一例である。拡張ボリュームテーブル２２１４は、拡張ボリューム番号欄２２１４１と構成ボリューム番号欄２２１４２とからなる。拡張ボリューム番号２２１４１は、各拡張ボリュームを互いに識別するための識別番号である。
【０１２０】
本実施例では、各拡張ボリュームを構成する構成ボリューム２５０のうちのいずれかのボリューム２５０に付されているボリューム番号を拡張ボリューム番号２２１４１とする。このため、ホスト１００からのＩＯ要求は、まずＦＥパッケージ２６０によって、拡張ボリューム番号２２１４１と同じ構成ボリューム番号２２１４２を有するボリューム２５０の担当ＭＰＰＫ２１０へ振り分けられることになる。構成ボリューム番号２２１４２は、拡張ボリュームを構成する構成ボリューム２５０の識別番号である。
【０１２１】
図２７の例では、構成ボリューム番号１，２，３の三つのボリューム２５０から拡張ボリュームが構成されており、その拡張ボリュームの拡張ボリューム番号２２１４１は１である。ホスト１００からのＩＯ要求は、構成ボリューム番号が１である構成ボリューム２５０の担当ＭＰＰＫ２１０へ振り分けられる。ホスト１００からのＩＯ要求の対象領域が、構成ボリューム番号が２である構成ボリューム２５０に含まれていたとしても、ＩＯ要求は構成ボリューム番号が１である構成ボリューム２５０の担当ＭＰＰＫ２１０へ割り振られる。このとき、構成ボリューム番号が２である構成ボリューム２５０の担当ＭＰＰＫ２１０と構成ボリューム番号が１である構成ボリューム２５０の担当ＭＰＰＫ２１０が異なれば、構成ボリューム番号が１である構成ボリューム２５０のＭＰＰＫ２１０は構成ボリューム番号が２である構成ボリューム２５０の処理を実行することはできない。
【０１２２】
次に、図２８を用いて拡張ボリュームへ発行されたＩＯの処理方式について説明する。図２８は拡張ボリュームへ発行されたときに実行されるＩＯプログラム２２２２の処理の一例である。
【０１２３】
ＩＯプログラム２２２２は、ＩＯ対象領域の開始アドレスを含む構成ボリューム２５０を特定する（Ｓ７００）。次に、ＩＯプログラム２２２２は、Ｓ７００で特定した構成ボリューム２５０の担当ＭＰＰＫ２１０が、自ＭＰＰＫ２１０か否かを判定する（Ｓ７０１）。
【０１２４】
構成ボリューム２５０の担当ＭＰＰＫ２１０が自ＭＰＰＫ２１０の場合（Ｓ７０１、Ｙｅｓ）、次に、ＩＯプログラム２２２２は当該構成ボリューム２５０に対して実行可能な範囲のＩＯを実行する。具体的には、ＩＯプログラム２２２２はＩＯの終了アドレスが、構成ボリューム２５０に含まれるか否かを判断する（Ｓ７０３）。含まれる場合（Ｓ７０３、Ｙｅｓ）、ＩＯプログラム２２２２はホスト１００が指定したＩＯ範囲の末尾までのＩＯを構成ボリューム２５０に対して実行し（Ｓ７０７）、処理を終了する（Ｓ７０９）。
【０１２５】
一方で、Ｓ７０３において、ＩＯの終了アドレスが、構成ボリューム２５０に含まれない場合（Ｓ７０３、Ｎｏ）、ホスト１００からのＩＯ範囲が次の構成ボリューム２５０を含むことを意味している。この場合、ＩＯプログラム２２２２は、現在処理対象としている構成ボリューム２５０に格納されている末尾のアドレスまでのＩＯを実行し（Ｓ７０４）、現在処理対象としている構成ボリューム２５０の次の構成ボリューム２５０を処理対象としてＳ７０１へ戻る（Ｓ７０６）。Ｓ７０１からＳ７０６を繰り返し実行することで、ＩＯを最後まで実行することができる。
【０１２６】
Ｓ７０１で構成ボリューム２５０の担当ＭＰＰＫ２１０が他のＭＰＰＫ２１０と判定された場合（Ｓ７０１、Ｎｏ）、ＩＯプログラム２２２２は、構成ボリューム２５０の担当ＭＰＰＫ２１０へＩＯ処理の実行を依頼する（Ｓ７１０）。この依頼を受領した担当ＭＰＰＫ２１０は、ＩＯプログラム２２２２のＳ７００からＳ７１０を実行することでＩＯを処理する。
【０１２７】
図２８の説明からも分るように、同一拡張ボリューム内の構成ボリューム２５０の担当ＭＰＰＫ２１０が異なっている場合、ＩＯに同期してＭＰＰＫ２１０が通信を行う必要がある。
【０１２８】
図２９に、拡張ボリューム操作プログラム３２２２の処理の一例を示す。拡張ボリューム操作プログラム３２２２は、プロセッサ２１１が拡張ボリューム機能のボリューム追加やボリューム削除の要求を受け取り、必要に応じてボリューム２５０の担当ＭＰＰＫ２１０を切り替え、構成を変更するために使用されるプログラムである。
【０１２９】
拡張ボリューム操作プログラム３２２２によってプロセッサ２１１は、ストレージシステム２００が保守端末２７０を介して管理者から受け取った操作要求を判別する（Ｓ１４０１）。操作要求がボリューム追加だった場合は、必要な操作可否チェック（例えば管理者が指定したボリューム２５０が既に他の拡張ボリュームの構成ボリューム２５０として定義済みでないことなど）を行い（Ｓ１４０２ａ）、管理者が指定した拡張ボリューム番号２２１４１の先頭ボリューム２５０及び追加するボリューム２５０の担当ＭＰＰＫ番号２２１２１を担当ＭＰＰＫテーブル２２１２から取得する（Ｓ１４０３ａ）。
【０１３０】
次いで、先頭ボリューム２５０及び追加ボリューム２５０の担当ＭＰＰＫ２１０が同一であるか判定し（Ｓ１４０４ａ）、同一でない場合（Ｓ１４０４ａ、Ｎｏ）、先頭ボリューム２５０をＰＶＯＬとしてと指定し、追加ボリューム２５０をＳＶＯＬとして指定して、負荷判定付担当切り替えプログラム２２６１を呼び出す（Ｓ１４０５ａ）。先頭ボリューム２５０及び追加ボリューム２５０の担当ＭＰＰＫ２１０が同一である場合（Ｓ１４０５ａ、Ｙｅｓ）、負荷判定付担当切り替えプログラム２２６１を呼び出すことなく、拡張ボリュームテーブル２２１４の該当する拡張ボリューム番号欄２２１４１について構成ボリューム番号２２１４２を追加する構成変更を行う（Ｓ１４１１ａ）。追加する構成ボリューム番号２２１４２は、すでに既存の拡張ボリュームに割り当てられている構成ボリューム番号２２１４２と重複しないように順次発番すればよい。
【０１３１】
ある拡張ボリュームから構成ボリューム２５０を削除する場合には、必要な可否チェック（例えば削除対象として指定された拡張ボリュームが存在することなど）を行い（Ｓ１４０２ｄ）、削除可能であると判定した場合に、拡張ボリュームテーブル２２１４の該当する拡張ボリューム番号欄２２１４１について構成ボリューム番号２２１４２を削除する構成変更を行う（Ｓ１４１１ｄ）。
【０１３２】
本発明の実施例６においては、負荷判定付担当切り替えプログラム２２６１により、本発明の実施例５におけるローカルコピー機能と同様に、拡張ボリューム機能においても、先頭ボリューム２５０と追加ボリューム２５０とを同一のＭＰＰＫ２１０に割り当てること、また、先頭ボリューム２５０の担当ＭＰＰＫ２１０の負荷が高い時に切り替えを行わないように構成することができる。
【０１３３】
［実施例７］
リモートコピー機能への適用
次に、図３０から図３６を用いて、本発明の実施例７を説明する。図３０は、本発明の実施例７における、メモリパッケージ２２０の構成例を示している。図３０は図２６と異なり、制御情報部２２１にリモートコピーグループテーブル２２１５（後述）及び、担当ＭＰＰＫテーブル（リモートコピーグループ）２２１６（後述）を、プログラム部２２２にリモートコピー機能に用いるペア操作プログラム３２２３（後述）を含む。なお、簡単のために図示を省略するが、リモートコピー処理における従来の基本的な機能を提供するリモートコピープログラムもプログラム部２２２に格納されている。以下、このリモートコピープログラムの構成も、必要に応じてコピープログラムと略称して説明に使用する。
【０１３４】
次に、ストレージ機能の一つであるリモートコピー機能について述べる。ローカルコピー機能と同様に、リモートコピー機能の概要を述べ、担当ＭＰＰＫ２１０を予め決めるアーキテクチャでの問題点、担当ＭＰＰＫ２１０の切り替え方法について述べる。
【０１３５】
リモートコピー機能は、あるストレージシステム２００にあるボリューム２５０に格納されているデータのコピーを、別筐体であるストレージシステム２００に作成する機能である。ローカルコピー機能と同様に、コピー元ボリューム２５０をＰＶＯＬ、コピー先ボリューム２５０をＳＶＯＬと呼ぶ。リモートコピー機能を用いて、ＰＶＯＬのデータを別のストレージシステム２００にあるＳＶＯＬにコピーしておくことで、災害、又は、システム障害などによりＰＶＯＬ側のストレージシステム２００が被害を受けた場合にも、ＳＶＯＬに格納されているデータを用いて業務を継続することが可能となる。
【０１３６】
図３１には、リモートコピー機能を実現する構成の一例を示している。正ストレージシステム３００は、ＰＶＯＬを有するストレージシステム２００であり、副ストレージシステム４００は、ＳＶＯＬを有するストレージシステム２００である。
【０１３７】
まず、正ストレージシステム３００の構成について説明する。ＰＶＯＬ３０１及びＰＶＯＬ３０２は、リモートコピーのコピー元ボリューム２５０である。ジャーナルボリューム３０３（以下「ＪＶＯＬ」）は副ストレージシステム４００へ転送するためのデータを一時的に格納しておくためのボリューム２５０である。
【０１３８】
次に、副ストレージシステム４００の構成について説明する。副ストレージシステム４００は、正ストレージシステム３００と同様の構成を有する。ＳＶＯＬ４０１、ＳＶＯＬ４０２はリモートコピーのコピー先ボリューム２５０である。ＪＶＯＬ４０３は正ストレージシステム３００から副ストレージシステム４００へ転送されたデータを一時的に格納しておくためのボリューム２５０である。
【０１３９】
矢印３０７は、リモートコピーのペア関係を示している。図３１の例では、ＰＶＯＬ３０１とＳＶＯＬ４０１がペアである。すなわちＰＶＯＬ３０１のコピーはＳＶＯＬ４０１である。そして、ＰＶＯＬ３０２とＳＶＯＬ４０２がペアである。
【０１４０】
次に、リモートコピーのコピー動作の概要を説明する。コピープログラムは、リモートコピーのＰＶＯＬにホスト１００からライト要求を受けると、ライトデータとライトデータに対する制御情報から成るジャーナルと呼ばれる転送データを作成し、ＪＶＯＬ３０３へ格納する。ホスト１００のライト要求受け付けを完了した後、ジャーナル３０８をＪＶＯＬ３０３から副ストレージシステム４００のＪＶＯＬ４０３へコピーする。最後に、副ストレージシステム４００において、ＪＶＯＬ４０３からジャーナル４０５を読み出し、ジャーナル４０５内のライトデータをＳＶＯＬに書き込む。以上のようにして、コピープログラムは、ＰＶＯＬのデータをＳＶＯＬへコピーする。
【０１４１】
矢印３０４は、ＰＶＯＬ３０２に対するライト要求を意味している。ジャーナル３０５は、ＪＶＯＬ３０３に格納前のジャーナルの様子を示している。そして、ジャーナル３０８は、正ストレージシステム３００から副ストレージシステム４００へ転送中のジャーナルの様子を示している。ジャーナル４０５は、副ストレージシステム４００のＪＶＯＬ４０３からＳＶＯＬ４０２へコピー前のジャーナルの様子を示している。
【０１４２】
最後に、リモートコピーグループ３０６について説明する。リモートコピーグループ４０６は、リモートコピーグループ３０６と同様である。
【０１４３】
リモートコピーグループ３０６は、複数のＰＶＯＬ３０１，３０２、及び複数のＪＶＯＬ３０３を有する。リモートコピーグループ３０６の特徴は、ホスト１００から同一リモートコピーグループ３０６内のＰＶＯＬ３０１，３０２に発行されたライト順序どおりに、ライトデータをＳＶＯＬに書き込むことである。図３１の例で具体的に説明する。
【０１４４】
ホスト１００からライト要求１がＰＶＯＬ３０１に発行され、その後、ライト要求２がＰＶＯＬ３０２へ発行されたとする。このとき、副ストレージシステム４００では、ライト要求１をＳＶＯＬ４０１へ書き込んだ後、ライト要求２をＳＶＯＬ４０２へ書き込むように制御される。
【０１４５】
以上のように正副リモートコピーグループにおいてライト順序を保証する理由は、ライト順序が入れ替わると、あるＰＶＯＬで先に書き込まれたデータが、コピー先であるＳＶＯＬに未反映であるなど、ＳＶＯＬを用いた業務復旧ができない可能性があるためである。
【０１４６】
リモートコピー機能は、ライト順序を保証するためにジャーナルに後述するライト順序番号を格納し、副ストレージシステム４００へ転送する。そして、副ストレージシステム４００は、ジャーナルに格納されているライト順序番号順にライトデータをＳＶＯＬに書き込む。
【０１４７】
図３２は、リモートコピーグループ３０６、４０６の管理情報を格納するリモートコピーテーブル２２１５の一例を示している。リモートコピーテーブル２２１５は、リモートコピーグループ番号欄２２１５１、属性欄２２１５２、ＪＶＯＬ番号欄２２１５３、ＰＶＯＬ番号欄２２１５４、ＳＶＯＬ番号欄２２１５５、及びライト順序番号欄２２１５６からなる。
【０１４８】
リモートコピーグループ番号欄２２１５１には、各リモートコピーグループ３０６，４０６を識別するための番号であるリモートコピーグループ番号が記録される。属性欄２２１５２には、リモートコピーグループ番号で特定される各リモートコピーグループ３０６，４０６が、コピー元のリモートコピーグループであるか、コピー先のリモートコピーグループであるかを示す情報である属性が記録される。ＪＶＯＬ番号欄２２１５３には、各リモートコピーグループ３０６，４０６に設けられているＪＶＯＬを識別するためのボリューム番号であるＪＶＯＬ番号が記録される。ＰＶＯＬ番号欄２２１５４には、各リモートコピーグループ３０６が有するＰＶＯＬのボリューム番号が記録される。ＳＶＯＬ番号欄２２１５５には、各リモートコピーグループ４０６が有するＳＶＯＬのボリューム番号が記録される。ライト順序番号欄２２１５６には、ＰＶＯＬにデータが書き込まれた順に生成されるジャーナルに付与する番号であるライト順序番号が記録される。ライト順序番号２２１５６は、リモートコピーグループ単位に、ＰＶＯＬにデータが書き込まれる都度自動発番される。
【０１４９】
図３２の例では、リモートコピーグループ番号が１であるリモートコピーグループ３０６は、ＰＶＯＬを含むコピー元のリモートコピーグループである。そして、このリモートコピーグループ３０６は、ＪＶＯＬ１１，１２、及び、ＰＶＯＬ１，２，３を有している。ＰＶＯＬ１，２，３のデータのコピー先となるＳＶＯＬが、それぞれＳＶＯＬ２０，１２，１３である。最後に、ライト順序番号の現在値が１００である。すなわち、次に作成されるジャーナルに対して、ライト順序番号１００が割り当てられる。その割り当て後、ライト順序番号２２１５６は１０１へ更新される。
【０１５０】
ボリューム２５０の処理に必要となる制御情報と同様に、リモートコピーテーブル２２１５も、ＭＰＰＫ２１０内のローカルメモリ２１２に格納すれば、ＰＶＯＬへのライト要求の性能を向上することができる。
【０１５１】
しかし、リモートコピーテーブル２２１５のライト順序番号２２１５６は、ライト要求が発生するたびに参照され、更新される。このため、リモートコピーテーブル２２１５をローカルメモリ２１２に格納するためには、リモートコピーテーブル２２１５のライト順序番号２２１５６へアクセスするＭＰＰＫ２１０を一つのＭＰＰＫ２１０に限定し、当該ＭＰＰＫ２１０のローカルメモリ２１２のみに格納する必要がある。
【０１５２】
これを実現するために、リモートコピー機能では、リモートコピーグループ毎にリモートコピーの処理を担当するＭＰＰＫ２１０を予め決め、当該ＭＰＰＫ２１０がリモートコピーテーブル２２１５を自身のローカルメモリ２１２に格納する。
【０１５３】
ここで、一つのジャーナルを処理する毎にリモートコピーテーブル２２１５を参照及び更新する処理の例として、ジャーナル作成処理及びジャーナルリストア処理を以下に説明する。
【０１５４】
まず、図３３を参照して、ジャーナル作成処理フローの一例を説明する。ジャーナル作成処理は、ストレージシステム２００のプロセッサ２１１が、メモリパッケージ２２０のプログラム部２２２に格納されているライトデータ受領プログラム及びジャーナル作成プログラム（図示省略）を実行することで行われる。
【０１５５】
ストレージシステム２００のライトデータ受領プログラムがホスト１００からライト要求を受領すると（Ｓ３３００）、ライト対象のボリューム２５０に対してライトデータを書き込む（Ｓ３３０１）。続けて、ライトデータ受領プログラムは、ジャーナル作成プログラムを起動する（Ｓ３３０２）。
【０１５６】
ジャーナル作成プログラムは、リモートコピーテーブル２２１５からライト順序番号２２１５６を取得する（Ｓ３３０３）。後続のジャーナル作成に使用するライト順序番号を用意しておくため、ジャーナル作成プログラムは、取得したライト順序番号に１を加えてライト順序番号を更新する（Ｓ３３０４）。
【０１５７】
次いで、ジャーナル作成プログラムは、取得したライト順序番号２２１５６、ＰＶＯＬ番号２２１５４、ＳＶＯＬ番号２２１５５、リモートコピーグループ番号２２１５１などのジャーナルに関する制御情報と、ライトデータからジャーナルを作成しＪＶＯＬに格納する（Ｓ３３０５）。
【０１５８】
ジャーナルの格納によりＪＶＯＬの使用率が変わるため、ジャーナル作成プログラムはＪＶＯＬの使用率を更新する（Ｓ３３０６）。最後に、ジャーナル作成プログラムは、呼び出し元のライトデータ受領プログラムへ完了報告する（Ｓ３３０７）。完了報告を受領したライトデータ受領プログラム２３１は処理を終了する（Ｓ３３０８）。
【０１５９】
次に、図３４を参照して、ＰＶＯＬ側から転送されてきたジャーナルをＪＶＯＬからＳＶＯＬへ書き込む処理の一例を説明する。ジャーナルをＪＶＯＬからＳＶＯＬへ書き込む処理をリストア処理と呼ぶ。このリストア処理は、ストレージシステム２００のプロセッサ２１１が、メモリパッケージ２２０のプログラム部２２２に格納されているリストアプログラム（図示省略）を実行することで行われる。
【０１６０】
まず、リストアプログラムは、リストア対象のジャーナルを決定する（Ｓ３４００）。但し、リストア対象のジャーナルは、ＪＶＯＬに格納されているジャーナルのうち、最も古いジャーナルからライト順序番号が連続するように決定する。例えば、ライト順序番号１から１０００までのジャーナルがある場合、ライト順序番号１から１００までのジャーナルをリストア対象とすることは可能である。しかし、ライト順序番号５０から１００までをリストア対象とすることはできない。また、ライト順序番号１から３０までと、ライト順序番号５０から７０までのジャーナルをリストア対象とすることもできない。これは、ホスト１００からＰＶＯＬに書き込まれたデータを、ライト順序番号２２１５６どおりにＳＶＯＬに書き込むことで、ＳＶＯＬの状態を常に、ＰＶＯＬで過去に起こり得た状態に保つためである。これにより、ＰＶＯＬに障害が発生した場合、ＳＶＯＬを利用した業務処理の再開が可能となる。
【０１６１】
次に、リストアプログラムは、リストア対象に決定したジャーナルのライト順序番号２２１５６のうちの最小値を変数ｉに代入する（Ｓ３４０１）。なお、変数ｉは、ＭＰＰＫ２１０のローカルメモリ２１２に一時的に格納するものとする。リストアプログラムは、ライト順序番号順にジャーナルを参照し、当該ジャーナルがリストア対象か否かをチェックする（Ｓ３４０２）。リストア対象でないと判定した場合（Ｓ３４０２、Ｎｏ）、リストア処理を終了する（Ｓ３４１０）。
【０１６２】
Ｓ３４０２でリストア対象であると判定した場合（Ｓ３４０２、Ｙｅｓ）、リストアプログラムは、リストア対象と判定したジャーナルをリストアする処理（Ｓ３４０３〜Ｓ３４０６）を実行する。
【０１６３】
まず、リストアプログラムは、参照したジャーナルの適用先ＳＶＯＬを決定する（Ｓ３４０３）。あるＰＶＯＬへのライトに対して作成されたジャーナルは、当該ＰＶＯＬとリモートコピー機能のペア関係にあるＳＶＯＬにリストアする必要がある。リストアプログラムは、ジャーナル作成時にジャーナルに格納したＳＶＯＬ番号２２１５５を用いてジャーナルの適用先ＳＶＯＬを決定する。
【０１６４】
ジャーナルの適用先ＳＶＯＬを決定すると、リストアプログラムは、ジャーナルをＳＶＯＬに書き込み（Ｓ３４０４）、リストア済みライト順序番号２２１５６を、適用したジャーナルのライト順序番号２２１５６で置き換える（Ｓ３４０５）。最後に、リストアプログラムは、変数ｉに１を加えて（Ｓ３４０６）、次のジャーナルを処理するためＳ３４０２へ返る。
【０１６５】
以上の構成により、リモートコピー機能が設定されているＰＶＯＬへのライトデータが、ＰＶＯＬに書き込まれた順序を保持したままＳＶＯＬにコピーされる。なお、このように構成されたリモートコピーグループは、一般にコンシステンシーグループ（consistency group）と呼ばれる。
【０１６６】
図３５にリモートコピーグループの処理担当ＭＰＰＫ２１０を管理するリモートコピーグループ用担当ＭＰＰＫテーブル２２１６（以下簡単のため「担当ＭＰＰＫテーブル２２１６」と称する。）の一例を示している。担当ＭＰＰＫテーブル２２１６は、リモートコピーグループ番号欄２２１６１、及び担当ＭＰＰＫ番号欄２２１６２からなる。
【０１６７】
リモートコピーグループ番号欄２２１６１には、各リモートコピーグループ３０６，４０６を識別するための識別番号であるリモートコピーグループ番号２２１６１が記録される。担当ＭＰＰＫ番号欄２２１６２には、図７に示した担当ＭＰＰＫテーブル２２１２の場合と同じ担当ＭＰＰＫ番号２２１６２が記録される。
【０１６８】
次に、ローカルコピー機能、拡張ボリューム機能と同様に、リモートコピー機能のＰＶＯＬ、ＪＶＯＬ、ＳＶＯＬ、及びリモートコピーグループの担当ＭＰＰＫをどのように設定すれば最適であるかについて説明する。
【０１６９】
まず、正ストレージシステム３００におけるリモートコピーの処理について説明する。リモートコピー機能は、ホスト１００からＰＶＯＬへのライト要求を受領すると、そのライト要求に係るデータをＰＶＯＬに書き込むと共に、ジャーナルを作成し、ＪＶＯＬに格納する。ＰＶＯＬの担当ＭＰＰＫ２１０とリモートコピーグループの担当ＭＰＰＫ２１０が異なる場合、ＰＶＯＬの担当ＭＰＰＫ２１０はリモートコピーグループの担当ＭＰＰＫ２１０へジャーナル作成処理を依頼する必要がある。このとき、ＰＶＯＬの担当ＭＰＰＫ２１０とリモートコピーグループの担当ＭＰＰＫ２１０との間での通信が必要となる。
【０１７０】
次に、リモートコピーグループの担当ＭＰＰＫ２１０が作成したジャーナルをＪＶＯＬに格納する。リモートコピーグループの担当ＭＰＰＫ２１０とＪＶＯＬの担当ＭＰＰＫ２１０が異なる場合、リモートコピーグループの担当ＭＰＰＫ２１０はＪＶＯＬの担当ＭＰＰＫ２１０へジャーナル格納処理を依頼する必要がある。このとき、リモートコピーグループの担当ＭＰＰＫ２１０とＪＶＯＬの担当ＭＰＰＫ２１０との間での通信が必要となる。
【０１７１】
最後に、ＪＶＯＬに格納されたジャーナルを副ストレージシステム４００へ転送する。具体的には、リモートコピー機能を実現するコピープログラムによってリモートコピーグループの担当ＭＰＰＫ２１０が、転送すべきジャーナルの決定や、決定したジャーナルが格納されているＪＶＯＬの格納アドレスなどを取得し、ジャーナルを転送する。このため、リモートコピーグループの担当ＭＰＰＫ２１０とＪＶＯＬの担当ＭＰＰＫ２１０が異なる場合、リモートコピーグループの担当ＭＰＰＫ２１０は、転送ジャーナルの特定や、格納アドレスを決定した後、ＪＶＯＬの担当ＭＰＰＫ２１０へ副ストレージシステム４００への転送を依頼する必要がある。このとき、リモートコピーグループの担当ＭＰＰＫ２１０とＪＶＯＬの担当ＭＰＰＫ２１０との間での通信が必要となる。
【０１７２】
以上のようにして、正ストレージシステム３００では、ジャーナルを作成するために、最大２往復のＭＰＰＫ２１０間の通信、作成したジャーナルを転送するために１往復のＭＰＰＫ２１０間の通信が必要となる。
【０１７３】
次に、副ストレージシステム４００におけるリモートコピーの処理について説明する。副ストレージシステム４００では、正ストレージシステム３００から転送され、ＪＶＯＬに格納されているジャーナル内のライトデータをＳＶＯＬに書き込む。
【０１７４】
まず、副ストレージシステム４００のコピープログラムにより、ＪＶＯＬに格納されているジャーナルのうち、最も小さいライト順序番号２２１５６を有するジャーナルが検索される。そして、当該ジャーナルのライト順序番号２２１５６が、前回ＳＶＯＬに書き込んだジャーナルのライト順序番号２２１５６の次の番号であるか否かを判定する。検索して取得されたジャーナルのライト順序番号２２１５６が前回ＳＶＯＬに書き込んだジャーナルのライト順序番号２２１５６の次の番号であれば、リモートコピープログラムは、ローカルコピープログラムを起動し、ＪＶＯＬからＳＶＯＬへのコピーを指示する。
【０１７５】
この際、リモートコピーグループの担当ＭＰＰＫ２１０とＪＶＯＬの担当ＭＰＰＫ２１０が異なる場合、コピープログラムをＪＶＯＬの担当ＭＰＰＫ２１０で起動する必要がある。このとき、リモートコピーグループの担当ＭＰＰＫ２１０とＪＶＯＬの担当ＭＰＰＫ２１０との間での通信が必要となる。
【０１７６】
また、ＪＶＯＬの担当ＭＰＰＫ２１０とＳＶＯＬの担当ＭＰＰＫ２１０が異なる場合、ローカルコピー処理のＳＶＯＬ側処理をＳＶＯＬの担当ＭＰＰＫ２１０へ依頼する必要がある。このとき、ＪＶＯＬの担当ＭＰＰＫ２１０とＳＶＯＬの担当ＭＰＰＫ２１０との間での通信が必要となる。
【０１７７】
以上のようにして、副ストレージシステム４００でジャーナルをＳＶＯＬに書き込むために、最大２往復のＭＰＰＫ２１０間通信が必要となる。
【０１７８】
次に、以上に述べたＭＰＰＫ２１０間での通信を回避する方法について述べる。  
図３６は本発明の実施例７による、リモートコピー機能のペア操作プログラム３２２３の処理の一例を示すフローチャートである。ペア操作プログラム３２２３は、プロセッサ２１１が保守端末２７０等を通じて管理者からリモートコピーのペア生成、ペア分割、再同期、又は解消の要求を受け取り、必要に応じてボリューム２５０の担当ＭＰＰＫ２１０を切り替え、ペア状態を変更するためのプログラムである。
【０１７９】
ペア操作プログラム３２２３によってプロセッサ２１１は、ストレージシステム２００が保守端末２７０を介して管理者から受け取った、又は他方のストレージシステム２００から受け取った操作要求を判別する（Ｓ１５０１）。
【０１８０】
Ｓ１５０１で操作要求がペア作成又はＪＶＯＬ追加であると判定した場合、ペア操作プログラム３２２３は、必要な操作可否チェック（例えば管理者が指定したボリューム２５０が既に他のペアとして定義済みでないことなど）を行い（Ｓ１５０２ａ）、管理者が指定したＰＶＯＬ２５０とリモートコピーグループ３０６、又はＳＶＯＬ２５０とリモートコピーグループ４０６、又はＪＶＯＬとリモートコピーグループ３０６，４０６の担当ＭＰＰＫ番号２２１２２、２２１６２を担当ＭＰＰＫテーブル２２１２及び２２１６から取得する（Ｓ１５０３ａ）。
【０１８１】
次にペア操作プログラム３２２３は、取得した担当ＭＰＰＫ番号２２１２２、２２１６２によって、リモートコピーグループ３０６の担当ＭＰＰＫ２１０と、ＰＶＯＬ２５０、ＪＶＯＬの各担当ＭＰＰＫ２１０とが同一であるか、及び、リモートコピーグループ４０６の担当ＭＰＰＫ２１０と、ＳＶＯＬ２５０、ＪＶＯＬの各担当ＭＰＰＫ２１０とが同一であるかを判定する（Ｓ１５０４ａ）。担当ＭＰＰＫ２１０が同一でないと判定した場合（Ｓ１５０４ａ、Ｎｏ）、リモートコピーグループ３０６をＳＶＯＬとして、又はリモートコピーグループ４０６をＰＶＯＬとして負荷判定付担当切り替えプログラム２２６１を呼び出し（Ｓ１５０６ａ）、ＭＰＰＫ２１０の使用率に応じて担当ＭＰＰＫを切り替える。
【０１８２】
さらにプロセッサ２１１は、担当ＭＰＰＫテーブル２２１２の手動切り替え可否フラグをＮＧに設定し（Ｓ１５１０ａ）、リモートコピーテーブル２２１５の変更やボリュームテーブル２２１１の機能ビット、ペア番号を含むボリューム属性２２１１２の書き換えを行い（Ｓ１５１１ａ）、処理を完了する（Ｓ１５２０）。
【０１８３】
Ｓ１５０１で操作要求が正方向のペア再同期、逆方向のペア再同期であると判定された場合、可否チェック処理Ｓ１５０２ｃ及びＳ１５０２ｄ、状態変更処理Ｓ１５１１ｃ及びＳ１５１１ｄの内容が、それぞれペア作成、ＪＶＯＬ追加の場合の可否チェック処理Ｓ１５０２ａ及び状態変更処理Ｓ１５１１ａの内容と異なるのみで、他の処理、例えば負荷判定付担当切り替え処理Ｓ１５０６ａとＳ１５０６ｃ、Ｓ１５０６ｄ、及びＳ１５１０ａとＳ１５１０ｃ、Ｓ１５１０ｄの処理内容は同一である。
【０１８４】
次に、Ｓ１５０１で操作要求がペア分割、ペア解消又はＪＶＯＬ削除であると判定された場合、必要な操作可否チェック（例えば、管理者が指定したボリューム２５０がペアとして定義済みであることなど）を行い（Ｓ１５０２ｂ，Ｓ１５０２ｅ）、リモートコピーテーブル２２１５の変更、ボリュームテーブル２２１１のボリューム属性欄２２１１２に記録されている機能ビット及びペア番号の書き換えを行い（Ｓ１５１１ｂ，Ｓ１５１１ｅ）、担当ＭＰＰＫテーブル２２１２の手動切り替え可否フラグをＯＫに設定し（Ｓ１５１２ｂ，Ｓ１５１２ｅ）、処理を完了する（Ｓ１５２０）。
【０１８５】
以上説明した本発明の実施例７の構成によれば、負荷判定付担当切り替えプログラム２２６１により、実施例５におけるローカルコピー機能、実施例６における拡張ボリューム機能の場合と同様に、リモートコピー機能においても、リモートコピーグループ３０６とＪＶＯＬ３０３、リモートコピーグループ４０６とＪＶＯＬ４０３、リモートコピーグループ４０６とＳＶＯＬ４０１，４０２、リモートコピーグループ３０６とＰＶＯＬ３０１，３０２とを同一のＭＰＰＫに割り当てること、及びそれぞれの切り替え先のＭＰＰＫ２１０の負荷が高い場合には切り替えを行わないようにすることができる。
【０１８６】
［実施例８］
次に、図３７を用いて、本発明の実施例８を説明する。図３７は、本発明の実施例８における、負荷判定付担当切り替えプログラム２２６１の処理フローの一例を示す。
【０１８７】
図３７は図２５と異なり、ＰＶＯＬ側の負荷が閾値未満であると判定した場合（Ｓ３０２、Ｎｏ）、及びＰＶＯＬ側の担当ＭＰＰＫ２１０を切り替えてもよいと判定した場合（Ｓ３０５、Ｙｅｓ）に実行されるカスケード先取得ステップＳ３１０ａ、Ｓ３１０ｂを備える。このカスケード先取得ステップＳ３１０ａ、Ｓ３１０ｂにおいて、ＭＰＰＫ２１０のプロセッサ２１１は、担当ＭＰＰＫ２１０の切り替え対象であるＰＶＯＬ又はＳＶＯＬがカスケード設定を有するか確認する。ここで、カスケード設定とは、あるペアのＰＶＯＬ又はＳＶＯＬとして機能しているボリューム２５０が、さらに他ペアを構成するボリューム２５０でもあることを意味する。
【０１８８】
カスケード先取得ステップＳ３１０ａ、又はＳ３１０ｂにおいて、プロセッサ２１１は、ボリュームテーブル２２１１のボリューム属性欄２２１１２を参照して、切り替え対象であるＰＶＯＬ又はＳＶＯＬにカスケード設定がされているか、すなわち他のペアのボリューム２５０として使用されているかを判定する。カスケード設定がされていると判定した場合、プロセッサ２１１は、カスケード先の全てのボリューム２５０を指定して担当ＭＰＰＫ２１０の切り替えを行う（Ｓ３２０、Ｓ３２１）。
【０１８９】
以上説明した実施例８においては、担当ＭＰＰＫ２１０切り替え対象のボリューム２５０に別の機能のペアが設定されていた場合でも、そのペアに含まれる相手ボリューム５０の担当ＭＰＰＫ２１０も一括して切り替えるので、ペアを構成するボリューム２５０の担当ＭＰＰＫ２１０が異なることとなる場合に生じるＭＰＰＫ２１０間の通信を回避することができる。
【０１９０】
［実施例９］
次に、図３８を参照して、本発明の実施例９を説明する。図３８は、本発明の実施例９における、負荷判定付担当切り替えプログラム２２６１の処理フローの一例を示す。図３８は、図３７と異なり、カスケード先取得ステップＳ３１０ａ、Ｓ３１０ｂの次に、それぞれ判定ステップＳ３１１ａ、Ｓ３１１ｂを有する。負荷判定付担当切り替えプログラム２２６１は、判定ステップＳ３１１ａ，Ｓ３１１ｂにおいて、担当ＭＰＰＫ２１０の切り替え対象のＳＶＯＬがカスケード設定されていると判定した場合（Ｓ３１１ａ又はＳ３１１ｂ、Ｙｅｓ）、そのまま処理を完了する。
【０１９１】
以上説明した実施例９の構成によれば、担当ＭＰＰＫ２１０の切り替え対象のボリューム２５０に別の機能が設定されていると判定した場合、そのペアを構成するボリューム２５０の担当ＭＰＰＫ２１０を切り替えることによる影響を回避することができる。
【０１９２】
［実施例１０］
次に、図３９及び図４０を参照して、本発明の実施例１０を説明する。図３９は、本実施例における担当切り替え閾値テーブル２２５１の一例を示している。
【０１９３】
図３９に示す本実施例における担当切り替え閾値テーブル２２５１は、図２２の場合と異なり、ストレージ機能の機能種別２２５１１ごとに、移動ＶＯＬ数最大値２２５１４と重み２２５１５とが記録されている。移動ＶＯＬ数最大値２２５１４は、一のボリューム２５０に複数のストレージ機能が重複して設定されている、前記のカスケード設定である場合、ボリューム２５０の担当ＭＰＰＫ２１０を切り替える際に、そのボリューム２５０に設定されているストレージ機能種別ごとに最大いくつのボリューム２５０を切り替えることができるかを示す値である。
【０１９４】
また、重み２２５１５は、ペアを構成するボリューム２５０の担当ＭＰＰＫ２１０を選択する際の基準となる数値で、各機能のペアにおいて担当ＭＰＰＫ２１０が異なる場合に、どれくらいの通信オーバヘッドが生じることとなるかを示す。図３９の例では、ローカルコピー機能のペアの場合に比べ、リモートコピー機能のペアにおいては、２．５倍の通信オーバヘッドが生じることを示している。
【０１９５】
図４０は、本発明の実施例１０における、負荷判定付担当切り替えプログラム２２６１の処理フローの一例を示す。図４０の処理フローは図３８の場合と異なり、Ｓ３１１ａ又はＳ３１１ｂにおいてカスケード先があると判定された場合、それぞれＳ３１２ａ又はＳ３１２ｂ、Ｓ３１３ａ又はＳ３１３ｂ、及びＳ３１４ａ又はＳ３１４ｂによる処理を含む。
【０１９６】
Ｓ３１１ａ又はＳ３１１ｂにおいて、負荷判定付担当切り替えプログラム２２６１は、担当ＭＰＰＫ２１０の切り替え対象のＳＶＯＬがカスケード設定されているか判定し、カスケード設定されていると判定した場合（Ｓ３１１ａ又はＳ３１１ｂ、Ｙｅｓ）、そのペアで担当ＭＰＰＫ２１０を切り替えることになるボリューム２５０の機能種別パターンを列挙し（Ｓ３１２ａ又はＳ３１２ｂ）、担当切り替え閾値テーブル２２５１の移動ＶＯＬ最大値２２５１４と比較して、切り替えるボリューム２５０の数が移動ＶＯＬ最大値２２５１４を超えない機能種別パターンがあるか判定する（Ｓ３１３ａ又はＳ３１３ｂ）。該当する機能種別パターンがないと判定した場合（Ｓ３１３ａ又はＳ３１３ｂ、Ｎｏ）、そのまま処理を完了する。
【０１９７】
該当する機能種別パターンがあると判定した場合（Ｓ３１３ａ又はＳ３１３ｂ、Ｙｅｓ）、負荷判定付担当切り替えプログラム２２６１は、切り替え対象のＳＶＯＬにカスケードされているすべてのペアの重み２２５１５を担当切り替え閾値テーブル２２５１から取得し、重み２２５１５の合計が最小になるペアを選択する（Ｓ３１４ａ又はＳ３１４ｂ）。
【０１９８】
以上説明した実施例１０の構成によれば、担当ＭＰＰＫ２１０の切り替え対象のボリューム２５０が別の機能のペアでもある場合、そのペアのボリューム２５０が別のＭＰＰＫ２１０によって担当されるために生じる通信オーバヘッドを抑え、さらに担当ＭＰＰＫ２１０を切り替えることによる影響を所定の範囲内に抑えることができる。
【０１９９】
以上要するに、本発明の実施形態によれば、ボリュームの担当ＭＰＰＫの切り替えを、当該ボリュームについてのストレージ機能の設定状況を考慮して行う。また、ストレージ機能の処理負荷を考慮して担当ＭＰＰＫを切り替える資源と、切り替え先ＭＰＰＫを決定する。このため、ストレージ機能が適用されているボリュームの担当ＭＰＰＫ切り替えによる性能低下を回避することができる。また、ストレージ機能を考慮しない場合に比べ、ＭＰＰＫ間での負荷分散をより均等にすることができる。これにより、ＭＰＰＫの利用率を向上させることができる。
【０２００】
以上、本願発明を、その実施例に即して添付図面を参照しながら説明したが、本願発明は、これらの実施例に限定されるものではない。また、本願発明の趣旨を逸脱しないいかなる変形例、均等物も本願発明の範囲内のものである。
【図１】
0005422657.tif 000002
【図２】
0005422657.tif 000003
【図３】
0005422657.tif 000004
【図４】
0005422657.tif 000005
【図５】
0005422657.tif 000006
【図６】
0005422657.tif 000007
【図７】
0005422657.tif 000008
【図８】
0005422657.tif 000009
【図９】
0005422657.tif 000010
【図１０】
0005422657.tif 000011
【図１１】
0005422657.tif 000012
【図１２】
0005422657.tif 000013
【図１３】
0005422657.tif 000014
【図１４】
0005422657.tif 000015
【図１５】
0005422657.tif 000016
【図１６】
0005422657.tif 000017
【図１７】
0005422657.tif 000018
【図１８】
0005422657.tif 000019
【図１９】
0005422657.tif 000020
【図２０】
0005422657.tif 000021
【図２１】
0005422657.tif 000022
【図２２】
0005422657.tif 000023
【図２３】
0005422657.tif 000024
【図２４】
0005422657.tif 000025
【図２５】
0005422657.tif 000026
【図２６】
0005422657.tif 000027
【図２７】
0005422657.tif 000028
【図２８】
0005422657.tif 000029
【図２９】
0005422657.tif 000030
【図３０】
0005422657.tif 000031
【図３１】
0005422657.tif 000032
【図３２】
0005422657.tif 000033
【図３３】
0005422657.tif 000034
【図３４】
0005422657.tif 000035
【図３５】
0005422657.tif 000036
【図３６】
0005422657.tif 000037
【図３７】
0005422657.tif 000038
【図３８】
0005422657.tif 000039
【図３９】
0005422657.tif 000040
【図４０】
0005422657.tif 000041