(57)【特許請求の範囲】
【請求項１】
複数のディスクアレイと、
前記複数のディスクアレイを制御するディスクアレイコントローラとを具備し、
前記ディスクアレイコントローラは、
前記複数のディスクアレイから選択された複数の物理ブロックを割り当てて複数の論理ディスクを定義する論理ブロック管理部と、
マスタ論理ディスクとバックアップ論理ディスクを同期状態にするために前記マスタ論理ディスクから前記バックアップ論理ディスクにデータをコピーするデータコピー部と、
前記マスタ論理ディスクに割り当てられた第１の物理ブロックから前記バックアップ論理ディスクに、前記データコピー部によってデータがコピーされる前に、前記第１の物理ブロックまたは前記第１の物理ブロックに対応付けられている前記バックアップ論理ディスクに割り当てられた第２の物理ブロックに代えて、第３の物理ブロックに割り当てを入れ替えるかを判定する物理ブロック入れ替え判定部と、
前記第２の物理ブロックに代えて第３の物理ブロックに割り当てを入れ替えると判定された場合、前記第１の物理ブロックから前記バックアップ論理ディスクにデータがコピーされる前に、前記バックアップ論理ディスクに対する前記第２の物理ブロックの割り当てを前記第３の物理ブロックに入れ替え、前記第１の物理ブロックを入れ替えると判定された場合、前記第１の物理ブロックから前記バックアップ論理ディスクにデータがコピーされる前に、前記バックアップ論理ディスクに対する前記第２の物理ブロックの割り当てを前記第３の物理ブロックに入れ替え、且つ前記第１の物理ブロックから前記第３の物理ブロックにデータがコピーされた後に前記マスタ論理ディスクに対する前記第１の物理ブロックの割り当てを前記第３の物理ブロックに入れ替える物理ブロック入れ替え部とを具備する
ディスクアレイ装置。
【請求項２】
前記ディスクアレイコントローラは、前記物理ブロック毎に、当該物理ブロックへのデータのライトに応じてライト範囲を示す差分情報により差分領域を保持する差分管理部を更に具備し、
前記データコピー部は、前記差分情報に基づいて前記マスタ論理ディスクから前記バックアップ論理ディスクにデータをコピーし、
前記物理ブロック入れ替え部は、前記マスタ論理ディスクに対する前記第１の物理ブロックの割り当ての入れ替えが判定された場合、前記第１の物理ブロックから前記バックアップ論理ディスクにデータがコピーされる前に、前記第１の物理ブロックに対応する前記差分情報が前記第１の物理ブロックの領域全体を差分領域として示すように前記差分情報を更新する
請求項１記載のディスクアレイ装置。
【請求項３】
前記ディスクアレイコントローラは、
前記論理ディスクにアクセスするアクセスコントローラと、
リードされるべきデータを持つ前記マスタ論理ディスクに割り当てられた第４の物理ブロックに対応付けられ、前記第４の物理ブロックよりもアクセス性能が高い第５の物理ブロックが存在し、且つ前記第４の物理ブロックに対応する前記差分情報及び前記第５の物理ブロックに対応する前記差分情報によって前記第４の物理ブロック及び前記第５の物理ブロックの間に差分が無いことが示されている場合、前記第５の物理ブロックをリード対象物理ブロックとして選択する物理ブロック選択部と
を具備し、
前記アクセスコントローラは、前記第５の物理ブロックが選択された場合、前記第４の物理ブロックからデータをリードする代わりに前記第５の物理ブロックからデータをリードする
請求項２記載のディスクアレイ装置。
【請求項４】
前記ディスクアレイコントローラは、
前記論理ディスクにアクセスするアクセスコントローラと、
リードされるべきデータを持つ前記マスタ論理ディスクに割り当てられた第４の物理ブロックに対応付けられ、前記第４の物理ブロックよりもアクセス性能が高い第５の物理ブロックが存在し、且つ前記第４の物理ブロックに対応する前記差分情報及び前記第５の物理ブロックに対応する前記差分情報によって前記第４の物理ブロック及び前記第５の物理ブロックの間に差分が無いことが示されている場合、前記第４の物理ブロック及び前記第５の物理ブロックに対する負荷が前記物理ブロックの性能毎に定義された重みから決定される比率で配分されるように、前記第４の物理ブロックまたは前記第５の物理ブロックをリード対象物理ブロックとして選択するブロック選択部と
を具備し、
前記アクセスコントローラは、前記選択されたリード対象物理ブロックからデータをリードする
請求項２記載のディスクアレイ装置。
【請求項５】
複数のディスクアレイを制御するディスクアレイコントローラにおいて、
前記複数のディスクアレイから選択された複数の物理ブロックを割り当てて複数の論理ディスクを定義する論理ブロック管理部と、
マスタ論理ディスクとバックアップ論理ディスクを同期状態にするために前記マスタ論理ディスクから前記バックアップ論理ディスクにデータをコピーするデータコピー部と、
前記マスタ論理ディスクに割り当てられた第１の物理ブロックから前記バックアップ論理ディスクに、前記データコピー部によってデータがコピーされる前に、前記第１の物理ブロックまたは前記第１の物理ブロックに対応付けられている前記バックアップ論理ディスクに割り当てられた第２の物理ブロックに代えて、第３の物理ブロックに割り当てを入れ替えるかを判定する物理ブロック入れ替え判定部と、
前記第２の物理ブロックに代えて、第３の物理ブロックに割り当てを入れ替えると判定された場合、前記第１の物理ブロックから前記バックアップ論理ディスクにデータがコピーされる前に、前記バックアップ論理ディスクに対する前記第２の物理ブロックの割り当てを前記第３の物理ブロックに入れ替え、前記第１の物理ブロックを入れ替えると判定された場合、前記第１の物理ブロックから前記バックアップ論理ディスクにデータがコピーされる前に、前記バックアップ論理ディスクに対する前記第２の物理ブロックの割り当てを前記第３の物理ブロックに入れ替え、且つ前記第１の物理ブロックから前記第３の物理ブロックにデータがコピーされた後に前記マスタ論理ディスクに対する前記第１の物理ブロックの割り当てを前記第３の物理ブロックに入れ替える物理ブロック入れ替え部と
を具備するディスクアレイコントローラ。
【請求項６】
複数のディスクアレイから選択された複数の物理ブロックを割り当てて複数の論理ディスクを定義する論理ブロック管理部を備え、前記複数のディスクアレイを制御するディスクアレイコントローラにおいて、前記物理ブロック間でデータをコピーする方法であって、
マスタ論理ディスクとバックアップ論理ディスクを同期状態にするために前記マスタ論理ディスクから前記バックアップ論理ディスクにデータをコピーし、
前記マスタ論理ディスクに割り当てられた第１の物理ブロックから前記バックアップ論理ディスクに、前記同期状態にするためにデータがコピーされる前に、前記第１の物理ブロックまたは前記第１の物理ブロックに対応付けられている前記バックアップ論理ディスクに割り当てられた第２の物理ブロックに代えて、第３の物理ブロックに割り当てを入れ替えるかを判定し、
前記第２の物理ブロックに代えて第３の物理ブロックに割り当てを入れ替えると判定された場合、前記第１の物理ブロックから前記バックアップ論理ディスクにデータがコピーされる前に、前記バックアップ論理ディスクに対する前記第２の物理ブロックの割り当てを前記第３の物理ブロックに入れ替え、
前記第１の物理ブロックを入れ替えると判定された場合、前記第１の物理ブロックから前記バックアップ論理ディスクにデータがコピーされる前に、前記バックアップ論理ディスクに対する前記第２の物理ブロックの割り当てを前記第３の物理ブロックに入れ替え、且つ前記第１の物理ブロックから前記第３の物理ブロックにデータがコピーされた後に前記マスタ論理ディスクに対する前記第１の物理ブロックの割り当てを前記第３の物理ブロックに入れ替える
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、物理ブロック間でデータをコピーするディスクアレイ装置、ディスクアレイコントローラ及び方法に関する。
【背景技術】
【０００２】
一般にディスクアレイ装置は、ハードディスクドライブ（ＨＤＤ）、或いはソリッドステートドライブ（ＳＳＤ）のような複数の物理ディスクを備えている。ディスクアレイ装置は、前記複数の物理ディスクの記憶領域が連続した１つの領域として定義される１つ以上のディスクアレイを含む。ディスクアレイ装置のコントローラ（つまりディスクアレイコントローラ）は、前記１つ以上のディスクアレイの記憶領域を用いて１つ以上の論理ディスク（例えば複数の論理ディスク）を定義（構築）する。【０００３】
また近年は、信頼性の向上のために、任意の論理ディスクのペアをマスタ論理ディスク及びバックアップ論理ディスクとして用いるディスクアレイ装置も知られている。このようなディスクアレイ装置では、レプリケーションとデータ移動（以下、マイグレーションと称する）とが行われる。【０００４】
レプリケーションとは、マスタ論理ディスクからバックアップ論理ディスクにデータをコピーする動作を指す。コピー完了後、マスタ論理ディスク及びバックアップ論理ディスクは同期状態に移行する。同期状態では、マスタ論理ディスクにライトされたデータは、バックアップ論理ディスクにもライトされる。【０００５】
マスタ論理ディスクとバックアップ論理ディスクとが論理的に切り離されると、両ディスクはスプリット状態に移行する。スプリット状態においてマスタ論理ディスクまたはバックアップ論理ディスクでデータ更新（つまり単一のデータライト）が行われた場合、ディスクアレイコントローラは、そのデータ更新範囲（ライト範囲）を差分として管理する。具体的にはディスクアレイコントローラは、データ更新範囲を、差分情報により差分領域として管理する。マスタ論理ディスク及びバックアップ論理ディスクを再度同期状態に移行させる際には、ディスクアレイコントローラは差分情報に基づき、当該両ディスク間でデータが不一致となっている領域（つまり差分領域）のみを対象に、マスタ論理ディスクからバックアップ論理ディスクにデータをコピーする。このコピーはレプリケーションコピーまたは差分コピーと呼ばれる。【０００６】
マイグレーションとは、論理ディスク内の論理ブロックに割り当てられている第１の物理ブロックを当該第１の物理ブロックとは異なる第２の物理ブロックに入れ替える動作を指す。マイグレーションでは、第１の物理ブロック（つまり入れ替え元の物理ブロック）から第２の物理ブロック（つまり入れ替え先の物理ブロック）にデータがコピーされる。このコピーはマイグレーションコピーと呼ばれる。【０００７】
ディスクアレイコントローラは、マイグレーションコピー中に前記論理ブロックにライトされるべきデータを、前記第１及び第２の物理ブロック双方にライトする。マイグレーションコピーの完了後、ディスクアレイコントローラは、前記論理ブロックに割り当てられている第１の物理ブロックを第２の物理ブロックに入れ替える。つまりディスクアレイコントローラは、論理ブロックと物理ブロックとの対応を表すマッピング情報を入れ替える。【０００８】
マイグレーションの対象となる物理ブロックの決定には、従来から様々な方法が提案されている。最も単純な方法は、低速な物理ブロックの負荷が高い場合に、当該低速な物理ブロックを高速な物理ブロックに入れ替えることである。これとは逆に、高速な物理ブロックの負荷が低い場合に、当該高速な物理ブロックを低速な物理ブロックに入れ替える方法も適用可能である。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１０−１２２７６１号公報
【特許文献２】特開２００８−０４６７６３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来技術では、前記２種類のコピー動作は各々独立して実行される。しかし、ディスクアレイコントローラによるコピー動作は、ホスト装置から当該ディスクアレイコントローラに対して発行されるアクセス要求（データアクセス要求）に対する応答の性能に影響を与える。【００１１】
本発明が解決しようとする課題は、コピー動作を低減することができる、物理ブロック間でデータをコピーするディスクアレイ装置、ディスクアレイコントローラ及び方法を提供することにある。
【課題を解決するための手段】
【００１２】
実施形態によれば、ディスクアレイ装置は、複数のディスクアレイと、前記複数のディスクアレイを制御するディスクアレイコントローラとを具備する。前記ディスクアレイコントローラは、論理ブロック管理部と、データコピー部と、物理ブロック入れ替え判定部と、物理ブロック入れ替え部とを具備する。前記論理ブロック管理部は、前記複数のディスクアレイから選択された複数の物理ブロックを割り当てて複数の論理ディスクを定義する。前記データコピー部は、マスタ論理ディスクとバックアップ論理ディスクを同期状態にするために前記マスタ論理ディスクから前記バックアップ論理ディスクにデータをコピーする。前記物理ブロック入れ替え判定部は、前記マスタ論理ディスクに割り当てられた第１の物理ブロックから前記バックアップ論理ディスクに、前記データコピー部によってデータがコピーされる前に、前記第１の物理ブロックまたは前記第１の物理ブロックに対応付けられている前記バックアップ論理ディスクに割り当てられた第２の物理ブロックに代えて、第３の物理ブロックに割り当てを入れ替えるかを判定する。前記物理ブロック入れ替え部は、前記第２の物理ブロックに代えて第３の物理ブロックに割り当てを入れ替えると判定された場合、前記第１の物理ブロックから前記バックアップ論理ディスクにデータがコピーされる前に、前記バックアップ論理ディスクに対する前記第２の物理ブロックの割り当てを前記第３の物理ブロックに入れ替え、前記第１の物理ブロックを入れ替えると判定された場合、前記第１の物理ブロックから前記バックアップ論理ディスクにデータがコピーされる前に、前記バックアップ論理ディスクに対する前記第２の物理ブロックの割り当てを前記第３の物理ブロックに入れ替え、且つ前記第１の物理ブロックから前記第３の物理ブロックにデータがコピーされた後に前記マスタ論理ディスクに対する前記第１の物理ブロックの割り当てを前記第３の物理ブロックに入れ替える。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施形態に係るストレージシステムの典型的なハードウェア構成を示すブロック図である。
【図２】図２は、図１に示されるディスクアレイコントローラの機能構成を主として示すブロック図である。
【図３】図３は、ＲＡＩＤグループにおける物理ブロックを説明するための図である。
【図４】図４は、ストレージプールにおけるＲＡＩＤグループを説明するための図である。
【図５】図５は、論理ディスクの定義を説明するための図である。
【図６】図６は、物理ブロック管理データのデータ構造例を示す図である。
【図７】図７は、論理ブロック管理データのデータ構造例を示す図である。
【図８】図８は、ストレージプール管理データのデータ構造例を示す図である。
【図９】図９は、論理−物理マッピングテーブルのデータ構造例を示す図である。
【図１０】図１０は、マスタ論理ディスクからバックアップ論理ディスクへのデータのコピーを説明するための図である。
【図１１】図１１は、レプリケーションの状態遷移を説明するための図である。
【図１２】図１２は、ＲＡＩＤグループの物理領域の階層化の例を示す図である。
【図１３】図１３は、論理ディスク内の論理ブロックへの異なる階層の物理ブロックの割り当ての例を示す図である。
【図１４】図１４は、論理ディスク内の論理ブロックに割り当てられる物理ブロックを入れ替える処理の概要を説明するための図である。
【図１５】図１５は、同実施形態で適用されるリード処理の典型的な手順を示すフローチャートである。
【図１６】図１６は、同実施形態で適用されるレプリケーションコピー処理の典型的な手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、実施の形態につき図面を参照して説明する。  
図１は、実施形態に係るストレージシステムの典型的なハードウェア構成を示すブロック図である。ストレージシステムは、ディスクアレイ装置１０、ホストコンピュータ（以下、ホストと称する）２０、及びネットワーク３０から構成される。ディスクアレイ装置１０は、ネットワーク３０を介してホスト２０と接続されている。ホスト２０は、ディスクアレイ装置１０を外部記憶装置として利用する。ネットワーク３０は、例えば、ストレージエリアネットワーク（ＳＡＮ）、インターネット或いはイントラネットである。インターネット或いはイントラネットは、例えばイーサネット（登録商標）により構成される。
【００１５】
ディスクアレイ装置１０は、例えば、物理ディスク１１−０乃至１１−３を含む物理ディスク群と、ディスクアレイコントローラ１２と、ディスクインタフェースバス１３とを備えている。物理ディスク群は、ソリッドステートドライブ（ＳＳＤ）群、或いはハードディスクドライブ（ＨＤＤ）群、或いはＳＳＤ群及びＨＤＤ群である。本実施形態では、物理ディスク群は、ＳＳＤ群及びＨＤＤ群であるものとする。ＳＳＤ群の各々は、書き換え可能な不揮発性メモリ（例えばフラッシュメモリ）の集合から構成される。
【００１６】
ディスクアレイコントローラ１２は、ディスクインタフェースバス１３を介して物理ディスク１１−０乃至１１−３を含む物理ディスク群と接続されている。ディスクインタフェースバス１３のインタフェース種別は、例えば、スモールコンピュータシステムインタフェース（ＳＣＳＩ）、ファイバチャネル（ＦＣ）、シリアルアタッチドＳＣＳＩ（ＳＡＳ）、或いはシリアルＡＴアタッチメント（ＳＡＴＡ）である。
【００１７】
ディスクアレイコントローラ１２は、物理ディスク群を制御する。ディスクアレイコントローラ１２は、複数の物理ディスクを用いてディスクアレイを構成し且つ管理する。図１の例では、３つのディスクアレイ１１０−０乃至１１０−２が示されている。ディスクアレイ１１０−０乃至１１０−２は、例えばＲＡＩＤ（Redundant Arrays of Independent DisksまたはRedundant Arrays of Inexpensive Disks）技術を使用して構築されるＲＡＩＤ構成のアレイ（つまりＲＡＩＤディスクアレイ）である。ディスクアレイ１１０−０乃至１１０−２の各々は、ディスクアレイコントローラ１２（ディスクアレイ制御プログラム）によって単一の物理ディスクとして管理される。以下の説明では、ディスクアレイ１１０−０乃至１１０−２を特に区別する必要がない場合には、ディスクアレイ１１０−０乃至１１０−２の各々をディスクアレイ１１０−＊と表記する。同様に、物理ディスク１１−０乃至１１−３を特に区別する必要がない場合には、物理ディスク１１−０乃至１１−３の各々を物理ディスク１１−＊と表記する
ディスクアレイコントローラ１２は、ホストインタフェース（ホストＩ／Ｆ）１２１と、ディスクインタフェース（ディスクＩ／Ｆ）１２２と、キャッシュメモリ１２３と、キャッシュコントローラ１２４と、フラッシュＲＯＭ（ＦＲＯＭ）１２５と、ローカルメモリ１２６と、ＣＰＵ１２７と、チップセット１２８と、内部バス１２９とを備えている。ディスクアレイコントローラ１２は、ホストＩ／Ｆ１２１によりネットワーク３０を介してホスト２０と接続される。ホストＩ／Ｆ１２１のインタフェース種別は、例えば、ＦＣ、或いはインターネットＳＣＳＩ（ｉＳＣＳＩ）である。
【００１８】
ホストＩ／Ｆ１２１は、ホスト２０との間のデータ転送（データ転送プロトコル）を制御する。ホストＩ／Ｆ１２１は、ホスト２０によって発行される論理ディスク（論理ボリューム）に対するデータアクセス要求（リード要求またはライト要求）を受信し、当該データアクセス要求に対する応答を返信する。論理ディスクは、１つ以上のディスクアレイ１１０−＊内の少なくとも一部の記憶領域を実体として論理的に実現される。ホストＩ／Ｆ１２１は、ホスト２０からデータアクセス要求を受信すると、当該要求を内部バス１２９、チップセット１２８を経由して、ＣＰＵ１２７に伝達する。データアクセス要求を受け取ったＣＰＵ１２７は、ディスクアレイ制御プログラムに従い、当該データアクセス要求を処理する。
【００１９】
もし、データアクセス要求がライト要求であれば、ＣＰＵ１２７は、当該ライト要求で指定されるアクセス領域（論理ディスク内の論理領域）に割り当てられているディスクアレイ１１０−＊内の物理領域を特定して、データライトを制御する。具体的には、ＣＰＵ１２７は、第１のデータライト、または第２のデータライトを制御する。第１のデータライトは、ライトデータを一旦キャッシュメモリ１２３に格納した後に、当該データをディスクアレイ１１０−＊内の前記特定された物理領域にライトする動作である。第２のデータライトは、ライトデータを即時に前記特定された物理領域に直接ライトする動作である。本実施形態では、第１のデータライトが実施されるものとする。
【００２０】
一方、データアクセス要求がリード要求であれば、ＣＰＵ１２７は、当該リード要求で指定されるアクセス領域（論理ディスク内の論理領域）に割り当てられているディスクアレイ１１０−＊内の物理領域を特定して、データリードを制御する。具体的には、ＣＰＵ１２７は、第１のデータリード、または第２のデータリードを制御する。前記第１のデータリードは、前記特定された物理領域のデータがキャッシュメモリ１２３内に格納されている場合に実施される。つまり前記第１のデータリードは、前記特定された物理領域のデータをキャッシュメモリ１２３からリードして、当該リードされたデータをホストＩ／Ｆ１２１に返信することにより、当該リードされたデータをホスト２０に返信させる動作である。前記第２のデータリードは、前記特定された物理領域のデータがキャッシュメモリ１２３内に格納されていない場合に実施される。つまり前記第２のデータリードは、ディスクアレイ１１０−＊内の前記特定された物理領域からデータをリードして、当該リードされたデータをホストＩ／Ｆ１２１に返信することにより、当該リードされたデータをホスト２０に返信させる動作である。前記特定された物理領域からリードされたデータはキャッシュメモリ１２３に格納される。
【００２１】
ディスクＩ／Ｆ１２２は、ＣＰＵ１２７（ディスクアレイ制御プログラム）が受信したホスト２０からのデータアクセス要求（論理ディスクに対するライト要求またはリード要求）に従い、ディスクアレイ１１０−＊の物理ディスク１１−＊に対してライト要求またはリード要求を送信し、その応答を受信する。キャッシュメモリ１２３は、ホスト２０からのデータアクセス要求がホストＩ／Ｆ１２１で受信された場合に、当該データアクセス要求（ライト要求またはリード要求）に対する完了応答の高速化のためのバッファとして用いられる。
【００２２】
データアクセス要求がライト要求の場合、ＣＰＵ１２７はライト処理に時間が掛かるディスクアレイ１１０−＊へのアクセスを避ける。そのためＣＰＵ１２７は、キャッシュコントローラ１２４を用いて、一旦ライトデータをキャッシュメモリ１２３に格納することでライト処理を完了させて、ホスト２０に応答を返信する。その後ＣＰＵ１２７は、任意のタイミングで、前記ライトデータをディスクアレイ１１０−＊の物理ディスク１１−＊にライトする。そしてＣＰＵ１２７は、前記ライトデータが格納されているキャッシュメモリ１２３の記憶領域を、キャッシュコントローラ１２４を用いて開放する。
【００２３】
一方、データアクセス要求がリード要求の場合、要求されたデータ（つまりリードされるべきデータ）がキャッシュメモリ１２３に格納されているならば、ＣＰＵ１２７はリード処理に時間が掛かるディスクアレイ１１０−＊へのアクセスを避ける。そのためＣＰＵ１２７は、要求されたデータを、キャッシュコントローラ１２４を用いてキャッシュメモリ１２３から取得して、ホスト２０に応答を返信する（第１のデータリード）。
【００２４】
キャッシュコントローラ１２４は、ＣＰＵ１２７（ディスクアレイ制御プログラム）からの命令に従い、キャッシュメモリ１２３からのデータのリードを実施する。キャッシュコントローラ１２４はまた、ＣＰＵ１２７からの命令に従い、キャッシュメモリ１２３へのデータのライトも実施する。ここで、キャッシュコントローラ１２４が、前記リード要求に対して極力キャッシュメモリ１２３に格納されているデータで応答できるようにするために、物理ディスク１１−＊から事前にデータをリードしても良い。つまりキャッシュコントローラ１２４が、今後発生する可能性があるリード要求を予め予測して、物理ディスク１１−＊から対応するデータを事前にリードし、当該リードされたデータをキャッシュメモリ１２３に格納しても良い。
【００２５】
ＦＲＯＭ１２５は、書き換えが可能な不揮発性メモリである。ＦＲＯＭ１２５は、ＣＰＵ１２７により実行されるディスクアレイ制御プログラムを格納するのに用いられる。ＣＰＵ１２７は、ディスクアレイコントローラ１２が起動されたときの最初の処理で、ＦＲＯＭ１２５に格納されているディスクアレイ制御プログラムをローカルメモリ１２６にコピーする。なお、ＦＲＯＭ１２５に代えて読み出し専用の不揮発性メモリ、例えばＲＯＭを用いても良い。
【００２６】
ローカルメモリ１２６は、ＤＲＡＭのような書き換えが可能な揮発性メモリである。ローカルメモリ１２６の一部の記憶領域は、ＦＲＯＭ１２５からコピーされたディスクアレイ制御プログラムを格納するのに用いられる。ローカルメモリ１２６の他の一部の記憶領域は、ＣＰＵ１２７のためのワーク領域として用いられる。ＣＰＵ１２７は、ローカルメモリ１２６に格納されたディスクアレイ制御プログラムのプログラムコードに従い、ディスクアレイ装置１０全体（特にディスクアレイコントローラ１２内の各部）を制御する。つまりＣＰＵ１２７は、ローカルメモリ１２６に格納されているディスクアレイ制御プログラムを、チップセット１２８を介してリードして実行することで、ディスクアレイ装置１０全体を制御する。
【００２７】
チップセット１２８は、ＣＰＵ１２７及びその周辺回路を内部バス１２９に結合するブリッジ回路である。内部バス１２９は汎用バスであり、例えばＰＣＩ（Peripheral Component Interconnect）ｅｘｐｒｅｓｓバスである。ホストＩ／Ｆ１２１、ディスクＩ／Ｆ１２２及びチップセット１２９は、内部バス２１０により相互接続されている。また、キャッシュコントローラ１２４、ＦＲＯＭ１２５、ローカルメモリ１２６及びＣＰＵ１２７は、チップセット１２８を介して内部バス１２９に接続されている。
【００２８】
図２は、図１に示されるディスクアレイコントローラ１２の機能構成を主として示すブロック図である。ディスクアレイコントローラ１２は、ディスクアレイ管理部２０１と、論理ディスク管理部２０２と、レプリケーション管理部２０３と、差分管理部２０４と、物理ブロック入れ替え判定部２０５と、物理ブロック入れ替え部２０６と、物理ブロック選択部２０７と、アクセスコントローラ２０８とを備えている。これらの機能要素２０１乃至２０８の機能については後述する。ディスクアレイ管理部２０１、論理ディスク管理部２０２及びレプリケーション管理部２０３は、それぞれ、物理ブロック管理部２０１ａ、論理ブロック管理部２０２ａ及びデータコピー部２０３ａを含む。ディスクアレイコントローラ１２は更に、種々の管理データ（管理データリスト）を格納するための管理データ記憶部２０９を備えている。管理データについては後述する。管理データ記憶部２０９は、例えば図１に示されるローカルメモリ１２６の一部の記憶領域を用いて実現される。
【００２９】
本実施形態において、上述の機能要素２０１乃至２０８は、図１に示されるディスクアレイコントローラ１２のＣＰＵ１２７が前記ディスクアレイ制御プログラムを実行することにより実現されるソフトウェアモジュールである。しかし、機能要素２０１乃至２０８の一部または全部がハードウェアモジュールによって実現されても構わない。
【００３０】
次に、本実施形態で適用されるディスクアレイと論理ディスクとの関係について説明する。  
初期のディスクアレイ装置では、単一のディスクアレイの記憶領域が論理ディスクに割り当てられるのが一般的である。つまり、単一のディスクアレイを用いて論理ディスクが定義される。
【００３１】
これに対し、近年のディスクアレイ装置では、複数または単一のディスクアレイが一旦ストレージプールＳＰを単位にグループ化される。つまり、ストレージプールＳＰを単位に、複数または単一のディスクアレイが管理される。ストレージプールＳＰ内のディスクアレイ（ＲＡＩＤディスクアレイ）は、ＲＡＩＤグループと呼ばれる。論理ディスクは、ストレージプールＳＰ内の１つ以上のディスクアレイ（ＲＡＩＤグループ）から選択される必要容量を満たす物理リソース（物理ブロック）の集合を用いて定義（構築）され、ホスト２０に提供される。本実施形態においても、この方法により論理ディスクが定義される。なお本実施形態では、複数のディスクアレイがストレージプールＳＰにグループ化されるものとする。
【００３２】
ディスクアレイコントローラ１２のディスクアレイ管理部２０１は、複数の物理ディスクを用いてディスクアレイ（ＲＡＩＤグループ）を定義する。ディスクアレイ管理部２０１はまた、各ディスクアレイ（ＲＡＩＤグループ）の記憶領域を、一定容量（サイズ）の物理ブロックを単位に区分する。これによりディスクアレイ管理部２０１は、ディスクアレイを物理ブロックの集合体として管理する。ディスクアレイ管理部２０１の物理ブロック管理部２０１ａは、ディスクアレイの各物理ブロックを後述する物理ブロック管理データＰＢＭＤにより管理する。なお、物理ブロックは、物理セグメントまたは物理エクステントと呼ばれることもある。
【００３３】
ディスクアレイコントローラ１２の論理ディスク管理部２０２は、目的の論理ディスクの容量を満たすために必要な数の物理ブロックを算出する。論理ディスク管理部２０２は、ストレージプールＳＰ内のディスクアレイ（ＲＡＩＤグループ）から例えば均等に必要な数の物理ブロックを選択して、当該選択された物理ブロックを論理ディスク（より詳細には、論理ディスクの論理ブロック）に関連付ける。これにより論理ディスク管理部２０２は、論理ディスクを定義し且つ管理する。つまり論理ディスク管理部２０２は、複数の物理ブロックの論理的な集合体として論理ディスクを定義し且つ管理する。
【００３４】
論理ディスク管理部２０２の論理ブロック管理部２０２ａは、論理ディスクの各論理ブロックを論理ブロック管理データＬＢＭＤにより管理する。論理ブロック管理データＬＢＭＤは、後述するように、当該管理データＬＢＭＤによって示される論理ブロックに関連付けられている（割り当てられている）物理ブロックを示す物理ブロックポインタ（つまりマッピング情報）を含む。
【００３５】
論理ディスク管理部２０２によって定義された論理ディスクへのアクセスが要求された場合、アクセスコントローラ２０８は、要求されたアクセス範囲の論理領域が、どのディスクアレイのどこの物理ブロックに該当するかを判別する。アクセスコントローラ２０８は、特定された物理ブロックにアクセスする。
【００３６】
本実施形態で適用される論理ディスク定義方法によれば、各ディスクアレイの容量に依存せずに、任意容量の論理ディスクを定義できる。また、前記論理ディスク定義方法によれば、１つの論理ディスクへのアクセスを、複数のディスクアレイの物理ブロックに分散させることができる。これにより、一部のディスクアレイにアクセスが集中するのを防止して、ホスト２０からのデータアクセス要求に対するレスポンスを高速化できる。
【００３７】
また、前記論理ディスク定義方法によれば、複数のディスクアレイをそれぞれアクセス性能が異なる物理ディスク（ドライブ）で構築することにより、異なるアクセス速度の物理ブロックを用いて論理ディスクを定義することができる。この場合、論理ブロックの負荷の高低に応じて、当該論理ブロックに最適な性能の物理ブロックを割り当てることで、性能最適化が可能となる。論理ブロックへの物理ブロックの割り当ては動的に変更可能である。例えば、論理ブロックに割り当てられていた第１の物理ブロックを第２の物理ブロックに変更する（入れ替える）ためには、前記第１の物理ブロックに格納されていたデータを前記第２の物理ブロックに移動（コピー）する必要がある。そこで、論理ブロックに割り当てられる物理ブロックを変更する動作は、マイグレーションと呼ばれる。また、前記論理ディスク定義方法において、ホスト装置からのライト要求受信時に物理ブロックを割り当てることにより、実際の物理容量よりサイズの大きい論理ディスクを構成することができる。これは、シンプロビジョニングと呼ばれる。
【００３８】
図３は、ＲＡＩＤグループ（ディスクアレイ）ＲＧにおける物理ブロックを説明するための図である。ＲＡＩＤグループＲＧは、ディスクアレイ管理部２０１によって、複数の物理ディスクを用いて定義（構築）される。ＲＡＩＤグループＲＧが定義される際に、当該ＲＡＩＤグループＲＧの記憶領域（物理領域）は、ディスクアレイ管理部２０１の物理ブロック管理部２０１ａによって、例えば当該記憶領域の先頭から一定容量（サイズ）の物理ブロックを単位に区分される。
【００３９】
よってＲＡＩＤグループＲＧは実質的に、複数の物理ブロック０，１，２，３…から構成される記憶領域を備えている。物理ブロックｉ（ｉ＝０，１，２，３…）は、物理ブロック番号がｉの物理ブロックである。つまり、ＲＡＩＤグループＲＧの全ての物理ブロックには、先頭の物理ブロックから順に連続する物理ブロック番号が割り当てられる。物理ブロックの容量は、固定であっても、或いはユーザによりパラメータを用いて指定されても構わない。
【００４０】
図４は、ストレージプールＳＰにおけるＲＡＩＤグループを説明するための図である。図４の例では、３つのディスクアレイ（ＲＡＩＤディスクアレイ）が、ディスクアレイ管理部２０１によって、ストレージプールＳＰの要素であるＲＡＩＤグループ０（ＲＧ０）乃至２（ＲＧ２）としてグループ化（定義）されている。換言するならば、ストレージプールＳＰは、ＲＡＩＤグループ０（ＲＧ０）乃至２（ＲＧ２）の集合として定義される。
【００４１】
図４は、ＲＡＩＤグループ０（ＲＧ０）が４つのＳＳＤ（ソリッドステートドライブ）から構成されるディスクアレイであることを示している。ＳＳＤは、例えば、ＳＡＳインタフェースを適用するＳＡＳ−ＳＳＤである。図４は更に、ＲＡＩＤグループ１（ＲＧ１）が３つのＨＤＤ（ハードディスクドライブ）から構成されるディスクアレイであり、ＲＡＩＤグループ２（ＲＧ２）が６つのＨＤＤから構成されるディスクアレイであることをも示している。ＨＤＤは、例えば、ＳＡＳインタフェースを適用するＳＡＳ−ＨＤＤである。
【００４２】
図５は、論理ディスクの定義を説明するための図である。図５に示されるように、論理ディスクＬＤの記憶領域（論理領域）は、論理ディスク管理部２０２の論理ブロック管理部２０２ａによって、例えば当該記憶領域の先頭から一定容量（サイズ）の論理ブロックを単位に区分される。この論理ブロックの容量は、前記物理ブロックの容量に等しい。論理ディスクＬＤは実質的に、複数の論理ブロック０，１，２，３…から構成される記憶領域を備えている。論理ブロックｉ（ｉ＝０，１，２，３…）は、論理ブロック番号がｉの論理ブロックである。つまり、論理ディスクＬＤの全ての論理ブロックには、先頭の論理ブロックから順に連続する論理ブロック番号が割り当てられる。
【００４３】
論理ディスクＬＤの論理ブロック０，１，２，３…には、論理ディスク管理部２０２によって例えば図４に示されるストレージプールＳＰ内のＲＡＩＤグループＲＧ０（０）乃至ＲＧ２（２）から選択された物理ブロックが割り当てられている。つまり論理ディスクＬＤは、ＲＡＩＤグループ０乃至２から選択された物理ブロックの集合として論理ディスク管理部２０２によって定義される。図５の例では、論理ディスクＬＤの論理ブロック０及び１には、それぞれ、ＲＡＩＤグループ０の物理ブロック０及びＲＡＩＤグループ１の物理ブロック２が割り当てられている。また、論理ディスクＬＤの論理ブロック２及び３には、それぞれ、ＲＡＩＤグループ２の物理ブロック０及びＲＡＩＤグループ０の物理ブロック１が割り当てられている。
【００４４】
次に、本実施形態で適用される各種の管理データについて説明する。  
物理ブロック管理部２０１ａは、ディスクアレイ管理部２０１によってＲＡＩＤグループ（ディスクアレイ）ＲＧが定義される場合に、当該ＲＡＩＤグループＲＧの物理ブロック毎に物理ブロック管理データＰＢＭＤを生成する。物理ブロック管理データＰＢＭＤは、物理ブロックを管理するのに用いられ、管理データ記憶部２０９に格納される。
【００４５】
図６は、物理ブロック管理データＰＢＭＤのデータ構造例を示す。図６に示されるように、物理ブロック管理データＰＢＭＤは、ＲＡＩＤグループ番号、物理ブロック番号、ライトカウント、リードカウント、性能属性及び差分ビットマップから構成される。
【００４６】
ＲＡＩＤグループ番号は、物理ブロック管理データＰＢＭＤによって管理される物理ブロック（以下、対応物理ブロックと称する）を有するＲＡＩＤグループＲＧに割り当てられた番号である。物理ブロック番号は、前記対応物理ブロックを一意に決定する番号である。ライトカウントは前記対応物理ブロックへのデータライトの回数（ライトアクセス頻度）を示す統計値であり、リードカウントは前記対応物理ブロックからのデータリードの回数（リードアクセス頻度）を示す統計値である。
【００４７】
性能属性は、前記対応物理ブロックを有する物理ディスクの例えば種別から決定されるアクセス性能を示す。本実施形態において、性能属性は、属性値が小さいほど高性能であることを示す。本実施形態における性能属性の属性値は、詳細を後述するように、０、１または２であるものとする。差分ビットマップは、前記対応物理ブロックがマスタ論理ディスクまたはバックアップ論理ディスクの論理ブロックに割り当てられている場合に、前記対応物理ブロックのデータとコピー先またはコピー元の物理ブロックのデータとの間の差分を記録するのに用いられる。一般に各物理ブロックは、最小アクセス単位であるセクタの集合から構成される。そこで前記差分ビットマップは、前記対応物理ブロック内のセクタ毎に差分の有無を示すビットの集合から構成される。本実施形態では、差分ビットマップ中の各ビットは“１”の場合に、対応するセクタ間で差分が有ることを示す。
【００４８】
論理ブロック管理部２０２ａは、論理ディスク管理部２０２によって論理ディスクＬＤが定義される場合に、当該論理ディスクＬＤの論理ブロック毎に論理ブロック管理データＬＢＭＤを生成する。論理ブロック管理データＬＢＭＤは、論理ブロックを管理するのに用いられ、管理データ記憶部２０９に格納される。
【００４９】
図７は、論理ブロック管理データＬＢＭＤのデータ構造例を示す。図７に示されるように、論理ブロック管理データＬＢＭＤは、論理ディスク番号、論理ブロック番号、スワップフラグ及び物理ブロックポインタから構成される。
【００５０】
論理ディスク番号は、論理ブロック管理データＬＢＭＤによって管理される論理ブロック（以下、対応論理ブロックと称する）を有する論理ディスクＬＤに割り当てられた番号である。論理ブロック番号は、前記対応論理ブロックを一意に決定する番号である。スワップフラグは、前記対応論理ブロックを有する論理ディスクがマスタ論理ディスクまたはバックアップ論理ディスクの一方である場合に、前記対応論理ブロックに割り当てられている物理ブロックを、マスタ論理ディスクまたはバックアップ論理ディスクの他方の論理ブロックに割り当てられている物理ブロックと入れ替えるべきかを示す。物理ブロックポインタは、前記対応論理ブロックに割り当てられている物理ブロックを管理するための物理ブロック管理データＰＢＭＤを指し示すマッピング情報である。
【００５１】
ディスクアレイ管理部２０１は、複数のディスクアレイ（ＲＡＩＤグループ）の集合としてストレージプールを定義した場合、当該ストレージプールを管理するためのストレージプール管理データＳＰＭＤを生成する。ストレージプール管理データＳＰＭＤは、管理データ記憶部２０９に格納される。
【００５２】
図８は、ストレージプール管理データＳＰＭＤのデータ構造例を示す。図８に示されるように、ストレージプール管理データＳＰＭＤは、プール番号、フリー物理ブロックリスト＊及びフリー数＊（但し、＊＝０，１，２）から構成される。
【００５３】
プール番号は、ストレージプール管理データＳＰＭＤによって管理されるストレージプール（以下、対応ストレージプールと称する）に割り当てられた番号である。フリー物理ブロックリスト＊及びフリー数＊は、前述の性能属性毎に用意される。本実施形態においてストレージプール管理データＳＰＭＤは、フリー物理ブロックリスト０，１及び２とフリー数０，１及び２を含む。フリー物理ブロックリスト０，１及び２は、それぞれ、前記対応ストレージプール内のＲＡＩＤグループに含まれていて、且つ性能属性の属性値０，１及び２に対応するフリー物理ブロックの物理ブロック管理データＰＢＭＤのリストである。以下の説明では、属性値が０，１及び２の性能属性を、それぞれ性能属性（属性）０，１及び２と称する。フリー物理ブロックとは、論理ディスクＬＤに割り当てられていない物理ブロックを指す。フリー数０，１及び２は、それぞれフリー物理ブロックリスト０，１及び２で示されるフリー物理ブロックの数を示す。
【００５４】
論理ディスク管理部２０２は、論理ディスクＬＤの論理ブロックとＲＡＩＤグループＲＧの物理ブロックとの対応を、論理ブロック管理データＬＢＭＤ及び物理ブロック管理データＰＢＭＤが登録された論理−物理マッピングテーブルＬＰＭＴにより管理する。論理ブロック管理データＬＢＭＤは、例えばハッシュテーブル形式で管理されると良い。しかし、論理ブロック管理データＬＢＭＤが必ずしもハッシュテーブル形式で管理される必要はない。
【００５５】
図９は、論理−物理マッピングテーブルＬＰＭＴのデータ構造例を示す。図９の例では、論理−物理マッピングテーブルＬＰＭＴに登録されている論理ブロック管理データは、論理ブロック管理データＬＢＭＤ０−０，ＬＢＭＤ０−１及びＬＢＭＤ０−２を含む。論理ブロック管理データＬＢＭＤｘ−ｙ（ｘ＝０，ｙ＝０，１，２…）は、論理ディスク番号がｘの論理ディスク内の論理ブロック番号がｙの論理ブロック（つまり論理ブロックｙ）を管理するための論理ブロック管理データであることを示す。
【００５６】
また、図９の例では、論理−物理マッピングテーブルＬＰＭＴに登録されている物理ブロック管理データは、物理ブロック管理データＰＢＭＤ０−０，ＰＢＭＤ１−２及びＰＢＭＤ２−０を含む。物理ブロック管理データＰＢＭＤｐ−ｑ（ｐ＝０，１，２，ｑ＝０，１，２…）は、ＲＡＩＤグループ番号がｐのＲＡＩＤグループ（つまりＲＡＩＤグループｐ）内の物理ブロック番号がｑの物理ブロック（物理ブロックｑ）を管理するための物理ブロック管理データであることを示す。図９の例では、論理ブロック管理データＬＢＭＤ０−０，ＬＢＭＤ０−１及びＬＢＭＤ０−２の物理ブロックポインタにより、物理ブロック管理データＰＢＭＤ０−０，ＰＢＭＤ１−２及びＰＢＭＤ２−０が指し示されている。
【００５７】
ディスクアレイコントローラ１２のレプリケーション管理部２０３は、レプリケーションの状態をレプリケーション管理テーブル（図示せず）により管理する。レプリケーションは、論理ディスクの複製を生成する機能である。本実施形態は、同期スプリットタイプのレプリケーションを適用する。
【００５８】
以下、同期スプリットタイプのレプリケーションの概要について、図１０及び図１１を参照して説明する。図１０はマスタ論理ディスクＭＬＤからバックアップ論理ディスクＢＬＤへのデータのコピーを説明するための図、図１１はレプリケーションの状態遷移を説明するための図である。
【００５９】
まずレプリケーション管理部２０３は、複製元となるマスタ論理ディスクＭＬＤと複製先となるバックアップ論理ディスクＢＬＤとを、レプリケーション管理テーブルを用いて定義する。レプリケーション管理テーブルのエントリは、マスタ論理ディスクＭＬＤ及びバックアップ論理ディスクＢＬＤそれぞれの論理ディスク番号と、レプリケーションの状態を示すステータス情報とを格納する。マスタ論理ディスクＭＬＤ及びバックアップ論理ディスクＢＬＤの定義の後、レプリケーション管理部２０３のデータコピー部２０３ａは、次のようなデータのコピーを行う。即ちデータコピー部２０３ａは、マスタ論理ディスクＭＬＤ及びバックアップ論理ディスクＢＬＤのレプリケーションの状態を同期状態ＳＴ２に移行させるために、図１０において矢印１００で示されるように、マスタ論理ディスクＭＬＤからバックアップ論理ディスクＢＬＤへのデータのコピーを行う。ここで、マスタ論理ディスクＭＬＤ及びバックアップ論理ディスクＢＬＤの関係を、一般にレプリケーションを構成していると称する。同様に、マスタ論理ディスクＭＬＤ及びバックアップ論理ディスクＢＬＤ内の相互に対応する物理ブロックの関係も、レプリケーションを構成していると称する。
【００６０】
マスタ論理ディスクＭＬＤ及びバックアップ論理ディスクＢＬＤがコピー状態ＳＴ１または同期状態ＳＴ２にある場合、レプリケーション管理部２０３は、バックアップ論理ディスクＢＬＤがホスト２０からアクセスできないように、アクセスコントローラ２０８を制御する。また、コピー状態ＳＴ１または同期状態ＳＴ２においてマスタ論理ディスクＭＬＤへのデータのライトが要求された場合、レプリケーション管理部２０３はアクセスコントローラ２０８を制御して、マスタ論理ディスクＭＬＤ及びバックアップ論理ディスクＢＬＤの双方に、データをライトする。
【００６１】
コピー完了後、レプリケーション管理部２０３は、前記レプリケーションの状態をコピー状態ＳＴ１から同期状態ＳＴ２に移行させる。同期状態ＳＴ２におけるマスタ論理ディスクＭＬＤとバックアップ論理ディスクＢＬＤの内容は一致している。
【００６２】
バックアップ論理ディスクＢＬＤに対してホスト２０からアクセス可能とするには、レプリケーション管理部２０３が、前記レプリケーションの状態をコピー状態ＳＴ１または同期状態ＳＴ２からスプリット状態ＳＴ３に遷移させる必要がある。スプリット状態ＳＴ３では、マスタ論理ディスクＭＬＤとバックアップ論理ディスクＢＬＤとは論理的に分離されて、各々独立した論理ディスクとして動作する。
【００６３】
ディスクアレイコントローラ１２の差分管理部２０４は、スプリット状態ＳＴ３における論理ディスクＭＬＤに対するデータのライトの範囲を、対応する物理ブロック管理データＰＢＭＤ中の差分ビットマップにより差分（より詳細には、差分有り）として管理する。これによりデータコピー部２０３ａは、次にマスタ論理ディスクＭＬＤからバックアップ論理ディスクＢＬＤにデータをコピーする必要がある場合、両ディスクの対応する物理ブロック間で差分が有る領域のみコピーすれば良い。このような差分コピーにより、不要なコピー動作を低減することができる。
次に、本実施形態において物理ブロックを入れ替えるかの判定に用いられるリードカウント及びライトカウントの更新（インクリメント）について説明する。
ディスクアレイコントローラ１２のアクセスコントローラ２０８は、ホスト２０からのリード要求またはライト要求を受信した場合、リードまたはライトされるべき論理ブロックを管理するための論理ブロック管理データＬＢＭＤを次のように特定する。ここで、ホスト２０からのリード要求またはライト要求は、アクセスされるべき論理ディスクを指定する論理ディスク番号と、当該論理ディスク内のアクセス範囲を指定する情報と、当該アクセス範囲の先頭の論理アドレスＬＢＡとを含む。ここでは説明の簡略化のために、アクセス範囲が、単一の論理ブロックに含まれるものとする。
【００６４】
まずアクセスコントローラ２０８は、上述のリード要求またはライト要求の示す論理ディスク番号及び論理アドレスＬＢＡに基づき、要求されたアクセス範囲（論理領域）を含む論理ディスク内の論理ブロックを特定する。次にアクセスコントローラ２０８は、特定された論理ブロックを管理するための論理ブロック管理データＬＢＭＤを参照する。次にアクセスコントローラ２０８は、参照された論理ブロック管理データＬＢＭＤ内の物理ブロックポインタの指し示す物理ブロック管理データＰＢＭＤを参照する。
【００６５】
アクセスコントローラ２０８は、参照された物理ブロック管理データＰＢＭＤに基づき、ホスト２０によって要求されたアクセス範囲の論理領域が、どのディスクアレイのどこの物理ブロックに該当するかを判別する。アクセスコントローラ２０８は、この判別結果に基づき要求されたデータのリードまたはライトを実行する。このときアクセスコントローラ２０８は、参照された物理ブロック管理データＰＢＭＤ内のリードカウントまたはライトカウントを１インクリメントする。リードカウント及びライトカウントは、それぞれ対応する物理ブロックへのリードアクセス及びライトアクセスの回数（頻度）を表す統計値である。
【００６６】
物理ブロック入れ替え判定部２０５は、詳細を後述するように、目的の物理ブロック（例えば、高負荷または低負荷の物理ブロック）のリードカウントまたはライトカウントに基づいて当該物理ブロックを入れ替えるべきかを判定する。物理ブロック入れ替え部２０６は、この判定の結果に基づいて、目的の物理ブロックを他の物理ブロック（例えば、より高速または低速な物理ブロック）に入れ替える。これによりディスクアレイ装置１０における最適な負荷分散、つまりディスクアレイ装置１０の性能の最適化を図ることが可能となる。
【００６７】
次に、ストレージプールＳＰ内のＲＡＩＤグループの階層化について説明する。  
本実施形態においてディスクアレイ管理部２０１は、ストレージプールＳＰ内の各ＲＡＩＤグループ（より詳細には、ＲＡＩＤグループの物理領域）を、性能とコストの最適化のために階層化する。そこで、ディスクアレイ装置１０のディスクインタフェースバス１３には、少なくとも１階層の高速・高コストな物理ディスク群と、少なくとも１階層の低速・低コストな物理ディスク群が接続される。ディスクアレイ管理部２０１は、同一階層の複数の物理ディスクを用いてＲＡＩＤグループ（ディスクアレイ）を定義する。物理ブロック入れ替え部２０６は、論理ブロックに割り当てられるべき物理ブロックの階層を、物理ブロック入れ替え判定部２０５と協働することにより、性能要件またはアクセス頻度に応じて決定する。
【００６８】
図１２はＲＡＩＤグループの物理領域の階層化について、２階層の場合を例に示す。図１２では、図４に示すストレージプールＳＰ内のＲＡＩＤグループＲＧ０及びＲＧ１が、それぞれ階層０及び階層１に属していることが示されている。つまり、ＲＡＩＤグループＲＧ０内の各物理ブロック（図１２において黒で塗りつぶされた矩形で示される物理ブロック）は階層０に属し、ＲＡＩＤグループＲＧ１内の各物理ブロック（図１２において白抜きの矩形で示される物理ブロック）は階層１に属す。本実施形態において、階層０の物理ブロックは性能属性０の物理ブロックであり、階層１の物理ブロックは性能属性１の物理ブロックである。
【００６９】
ＲＡＩＤグループＲＧ０は、ＳＡＳ−ＳＳＤを用いて定義されるＳＡＳ−ＳＳＤ  ＲＡＩＤグループであり、ＲＡＩＤグループＲＧ１は、ＳＡＳ−ＨＤＤを用いて定義されるＳＡＳ−ＨＤＤ  ＲＡＩＤグループである。図１２では、図４に示すＲＡＩＤグループＲＧ２は省略されているが、当該ＲＡＩＤグループＲＧ２は階層２に属しているものとする。但し、以降の説明では、説明の簡略化のために、ストレージプールＳＰ内のＲＡＩＤグループが、ＲＡＩＤグループＲＧ０及びＲＧ１の２つであり、ＲＡＩＤグループの物理領域が２つの階層に階層化されているものとする。勿論、ＲＡＩＤグループの物理領域が、３つ以上の階層に階層化されていても構わない。またディスクアレイ管理部２０１が、この階層化に、ＲＡＩＤグループ（ディスクアレイ）が適用するＲＡＩＤレベルやＲＡＩＤグループを構成する物理ディスク台数の相違による性能の違いを考慮しても良い。
【００７０】
図１３は、論理ディスクＬＤ内の論理ブロックへの異なる階層の物理ブロックの割り当ての例を示す。図１３において、論理ディスクＬＤ内の黒で塗りつぶされた矩形は、階層０の物理ブロックが割り当てられた論理ブロックを示す。この黒で塗りつぶされた矩形で示される論理ブロックは、多数のアクセスが発生して、例えば高負荷である。そこで、この高負荷の論理ブロックには、上述のように階層０の物理ブロック（つまり高速・高コストの物理ブロック）が割り当てられる。また図１３において、論理ディスクＬＤ内の白抜きの矩形は、階層１の物理ブロックが割り当てられた論理ブロックを示す。この白抜きの矩形で示される論理ブロックは、例えば低負荷である。そこで、この低負荷の論理ブロックには、上述のように階層１の物理ブロック（つまり低速・低コストの物理ブロック）が割り当てられる。
【００７１】
次に、論理ディスク内の論理ブロックに割り当てられる物理ブロックを、階層を利用して入れ替える処理の概要について、図１４を参照して説明する。図１４は、物理ブロック入れ替え処理（マイグレーション処理）を説明するための図である。同図（ａ）は、物理ブロック入れ替え処理の手順の例を示し、同図（ｂ）は、物理ブロック入れ替え前後の論理ブロック管理データと物理ブロック管理データとの関連付けの例を示す。
【００７２】
図１４（ａ）において、論理ディスクＬＤ内の黒で塗りつぶされた矩形は、階層０の物理ブロックが割り当てられた論理ブロックを示す。図１４（ａ）において、論理ディスクＬＤ内の白抜きの矩形は、階層１の物理ブロックが割り当てられた論理ブロックを示す。
【００７３】
今、論理ディスクＬＤ内の論理ブロックＬＢ３に、ＲＡＩＤグループＲＧ１内の物理ブロックＰＢ２が割り当てられているものとする。この状態の論理ブロックＬＢ３が、図１４（ａ）においてＬＢ３（ＰＢ２）で表されている。ここで、論理ディスクＬＤの論理ディスク番号は０であり、論理ブロックＬＢ３の論理ブロック番号は３である。またＲＡＩＤグループＲＧ１のＲＡＩＤグループ番号は１であり、物理ブロックＰＢ２の物理ブロック番号は２である。
【００７４】
このとき、論理ブロックＬＢ３を管理するための論理ブロック管理データＬＢＭＤ０−３内の物理ブロックポインタは、図１４（ｂ）において矢印１４５で示すように、物理ブロックＰＢ２を管理するための物理ブロック管理データＰＢＭＤ１−２を指している。これにより、論理ブロックＬＢ３と物理ブロックＰＢ２との関連付け（つまりマッピング）が示される。物理ブロック管理データＰＢＭＤ１−２から明らかなように、物理ブロックＰＢ２の性能属性は１であり、したがって物理ブロックＰＢ２の階層は上述のように１である。
【００７５】
やがて、論理ブロックＬＢ３が高負荷となったものとする。この場合、論理ブロックＬＢ３に割り当てられている物理ブロックＰＢ２の性能属性（階層）が１であることから、物理ブロック入れ替え判定部２０５は、当該物理ブロックＰＢ２を性能属性（階層）０の物理ブロックに入れ替える必要があると判定する。なお、この判定は、詳細を後述するようにレプリケーションコピー処理の中で行われる。
【００７６】
物理ブロックの入れ替えが必要な場合、物理ブロック選択部２０７は、ストレージプールＳＰを管理するためのストレージプール管理データＳＰＭＤ内の性能属性（階層）０に対応するフリー物理ブロックリスト０を参照する。この参照されたフリー物理ブロックリスト０内の先頭の物理ブロック管理データＰＢＭＤが、ＲＡＩＤグループ番号が０のＲＡＩＤグループＲＧ０（０）内の物理ブロック番号が５の物理ブロックＰＢ５（５）を管理するための物理ブロック管理データＰＢＭＤ０−５であるものとする。
【００７７】
この場合、物理ブロック選択部２０７は、物理ブロックＰＢ５を選択する。すると論理ディスクＬＤは、図１４（ａ）において矢印１４１で示されるように、物理ブロック入れ替えのためのコピーモード（マイグレーションコピーモード）に遷移する。このコピーモードにおいてデータコピー部２０３ａは、現在論理ブロックＬＢ３に割り当てられている物理ブロックＰＢ２のデータを、図１４（ａ）において矢印１４２で示されるように物理ブロックＰＢ５にコピーする。
【００７８】
すると論理ディスクＬＤは、図１４（ａ）において矢印１４３で示されるように、物理ブロック入れ替えモードに遷移する。この物理ブロック入れ替えモードにおいて、物理ブロック入れ替え部２０６は、論理ブロックＬＢ３に割り当てられる物理ブロックを、図１４（ａ）において矢印１４４で示されるように、物理ブロックＰＢ２（つまりＲＡＩＤグループＲＧ１内の物理ブロックＰＢ２）から物理ブロックＰＢ５（つまりＲＡＩＤグループＲＧ０内の物理ブロックＰＢ５）に入れ替える。この入れ替えは、物理ブロック入れ替え部２０６が、論理ブロック管理データＬＢＭＤ０−３の物理ブロックポインタ（マッピング情報）を、図１４（ｂ）において矢印１４６で示されるように、物理ブロック管理データＰＢＭＤ０−５を指し示すように更新することにより実現される。物理ブロック入れ替え部２０６はまた、物理ブロックＰＢ２をフリーブロックとして、ストレージプール管理データＳＰＭＤ内のフリー物理ブロックリスト１（つまり、当該物理ブロックＰＢ２の性能属性１に対応するフリー物理ブロックリスト１）の最後に登録する。なお、物理ブロックＰＢ２を物理ブロックＰＢ５に入れ替える動作が、物理ブロックＰＢ２のデータを物理ブロックＰＢ５にコピーする動作よりも先に実行されても良い。
次に本実施形態で適用されるリード処理について図１５を参照して説明する。図１５は、リード処理の典型的な手順を示すフローチャートである。
今、アクセスコントローラ２０８が、ホストＩ／Ｆ１２１を介してホスト２０からのリード要求を受信したものとする。するとアクセスコントローラ２０８は、図１５に示すフローチャートに従ってリード処理を次のように実行する。まずアクセスコントローラ２０８は、前記リード要求の示す論理ディスク番号と論理アドレスＬＢＡとに基づき、前述したように、要求されたアクセス範囲（リード範囲）の論理領域を含む論理ディスク内の論理ブロックを特定する（ステップＳ１）。
【００７９】
次にアクセスコントローラ２０８は、特定された論理ブロックを管理するための論理ブロック管理データＬＢＭＤを参照する。特定された論理ブロックに割り当てられている物理ブロックを管理するための物理ブロック管理データＰＢＭＤは、参照された論理ブロック管理データＬＢＭＤ内の物理ブロックポインタによって指し示されている。そこでアクセスコントローラ２０８は、参照された論理ブロック管理データＬＢＭＤ内の物理ブロックポインタの指し示す物理ブロック管理データＰＢＭＤに基づいて、特定された論理ブロックに割り当てられている物理ブロックを特定する（ステップＳ２）。特定された物理ブロックを物理ブロックＡと表記し、物理ブロックＡの特定に用いられた物理ブロック管理データＰＢＭＤ（つまり物理ブロックＡを管理するための物理ブロック管理データＰＢＭＤ）を物理ブロック管理データＰＢＭＤ＿Ａと表記する。
【００８０】
次にアクセスコントローラ２０８は、物理ブロック管理データＰＢＭＤ＿Ａ内のリードカウント（つまり物理ブロックＡのリードカウント）を、例えば１インクリメントする（ステップＳ３）。物理ブロック選択部２０７は、物理ブロック管理データＰＢＭＤ＿Ａ内の性能属性の属性値を参照することにより、物理ブロックＡの性能属性（階層）が１であるかを判定する（ステップＳ４）。
【００８１】
もし、物理ブロックＡの性能属性（階層）が１であるならば（ステップＳ４のＹｅｓ）、物理ブロック選択部２０７は、当該物理ブロックＡが低速（より詳細には、低速・低コスト）の物理ブロックであると判定する。この場合、物理ブロック選択部２０７は、物理ブロックＡ（より詳細には、物理ブロックＡが割り当てられている論理ブロックを含む論理ディスク）が他の物理ブロックとの間でレプリケーションを構成しているかを判定する（ステップＳ５）。具体的には、物理ブロック選択部２０７はレプリケーション管理テーブルを参照することにより、物理ブロックＡが割り当てられている論理ブロックを含む論理ディスク（つまり、リード要求の示す論理ディスク番号の論理ディスク）がマスタ論理ディスクまたはバックアップ論理ディスクとして定義されているかを判定する。
【００８２】
もし、物理ブロックＡがレプリケーションを構成しているならば（ステップＳ５のＹｅｓ）、物理ブロック選択部２０７は、物理ブロックＡのレプリケーション先またはレプリケーション元となる物理ブロックを特定する（ステップＳ６）。物理ブロックＡのレプリケーション先またはレプリケーション元となる物理ブロックを物理ブロックＢと表記すると、当該物理ブロックＢはステップＳ６において次のように特定される。
【００８３】
まず、物理ブロック選択部２０７は、レプリケーション管理テーブルを参照することにより、リード要求の示す論理ディスク番号の論理ディスクのレプリケーション先またはレプリケーション元となる論理ディスクの論理ディスク番号を特定する。次に物理ブロック選択部２０７は、特定された論理ディスク番号とリード要求の示す論理ブロック番号とを含む論理ブロック管理データＬＢＭＤを参照する。この論理ブロック管理データＬＢＭＤＢ内の物理ブロックポインタの指し示す物理ブロック管理データＰＢＭＤを、物理ブロック管理データＰＢＭＤ＿Ｂと表記する。この物理ブロック管理データＰＢＭＤ＿Ｂは、物理ブロックＡのレプリケーション先またはレプリケーション元となる物理ブロックＢを示す。
【００８４】
物理ブロック選択部２０７は、物理ブロック管理データＰＢＭＤ＿Ａ及びＰＢＭＤ＿Ｂ内の差分ビットマップを参照することにより、物理ブロックＡ及びＢの間に差分が有るかを判定する（ステップＳ７）。もし、物理ブロックＡ及びＢの間に差分が無いならば（ステップＳ７のＮｏ）、物理ブロック選択部２０７は物理ブロック管理データＰＢＭＤ＿Ｂ内の性能属性の属性値を参照することにより、物理ブロックＢの性能属性（階層）が０であるかを判定する（ステップＳ８）。
【００８５】
もし、物理ブロックＢの性能属性（階層）が０であるならば（ステップＳ８のＹｅｓ）、物理ブロック選択部２０７は、当該物理ブロックＢが物理ブロックＡよりも高速（より詳細には、高速・高コスト）の物理ブロックであると判定する。この場合、物理ブロック選択部２０７は、物理ブロックＡ及びＢの間に差分が無いことから（ステップＳ７のＮｏ）、リードアクセスの対象として、物理ブロックＡを選択せずに、当該物理ブロックＡよりも高速な物理ブロックＢを選択する（ステップＳ９）。つまり物理ブロック選択部２０７は、リード要求に基づいてステップＳ２で特定された物理ブロックＡを選択せずに、当該物理ブロックＡよりも高速で、且つ当該物理ブロックＡと同一のデータを格納している物理ブロックＢを選択する。この場合、物理ブロックＡが選択される場合と比較して、リード動作の高速化が期待される。
【００８６】
一方、物理ブロックＡの性能属性（階層）が１でないならば（ステップＳ４のＮｏ）、つまり当該物理ブロックＡの性能属性（階層）が０であるならば、物理ブロック選択部２０７は、当該物理ブロックＡが高速（より詳細には、高速・高コスト）の物理ブロックであると判定する。この場合、物理ブロック選択部２０７は、物理ブロックＡ（つまり、リード要求に基づいてステップＳ２で特定された物理ブロックＡ）をリードアクセスの対象として選択する（ステップＳ１０）。
【００８７】
同様に、物理ブロックＡがレプリケーションを構成していない場合にも（ステップＳ５のＮｏ）、物理ブロック選択部２０７は、物理ブロックＡをリードアクセスの対象として選択する（ステップＳ１０）。同様に、物理ブロックＡ及びＢの間に差分が有る場合にも（ステップＳ７のＹｅｓ）、物理ブロック選択部２０７は、物理ブロックＡをリードアクセスの対象として選択する（ステップＳ１０）。同様に、物理ブロックＢの性能属性（階層）が０でない場合にも（ステップＳ８のＹｅｓ）、つまり物理ブロックＢの性能が物理ブロックＡと同等か低い場合にも、物理ブロック選択部２０７は、物理ブロックＡをリードアクセスの対象として選択する（ステップＳ１０）。
【００８８】
物理ブロック選択部２０７が物理ブロックＡまたはＢを選択すると（ステップＳ９またはＳ１０）、アクセスコントローラ２０８は、選択された物理ブロックのリード要求の指定するアクセス範囲からデータをリードするためのリード動作を実行する（ステップＳ１１）。このリード動作によってリードされたデータは、ホスト２０からのリード要求に対する応答として、ホストＩ／Ｆ１２１によってホスト２０に返される。なお、以上のリード処理は前述の第２のデータリードに相当し、リード要求で指定されたアクセス範囲のデータがキャッシュメモリ１２３に格納されていない場合に実行される。
【００８９】
本実施形態によれば、物理ブロックＡからのデータのリードが要求され、且つ当該物理ブロックＡとの間でレプリケーションを構成する物理ブロックＢが存在する場合、物理ブロック選択部２０７は、両ブロックの間の差分の有無及び両ブロックの性能属性に基づいて、実際にデータがリードされるべき物理ブロックを選択する。より具体的に述べるならば、物理ブロックＡ及びＢの間に差分が無いならば、つまり物理ブロックＡ及びＢの内容が一致するならば、物理ブロック選択部２０７は、物理ブロックＡまたはＢのうち、高速にアクセス可能な物理ブロックをリードされるべき物理ブロックとして選択する。このように本実施形態によれば、ディスクアレイ装置１０の性能を最適化して、リード処理が高速なディスクアレイ装置１０を実現することができる。
【００９０】
さて本実施形態は、ステップＳ８の判定条件に、物理ブロックＢの性能属性が０であることを適用することにより、ディスクアレイ装置１０の性能を最適化している。しかし、ディスクアレイ装置１０における性能最適化の手法は本実施形態に限らない。つまり、ステップＳ８に他の判定条件を適用することも可能である。例えば、ディスクアレイ管理部２０１が物理ブロックの性能属性毎に重みを定義するものとする。この場合、物理ブロックＡ及びＢのリードカウント（またはリードカウント及びライトカウントの和）、つまり物理ブロックＡ及びＢを対象とする入出力回数が、当該物理ブロックＡ及びＢの重み（性能の相違度）から決定される比率で配分（負荷分散）されることを判定条件に、物理ブロック選択部２０７が物理ブロックＡまたはＢを選択してよい。このような負荷分散によっても、ディスクアレイ装置１０の性能を最適化して、リード処理が高速なディスクアレイ装置１０を実現することができる。
【００９１】
次に、本実施形態で適用されるライト処理について簡単に説明する。  
ライト処理は、主として以下の３つの点でリード処理と相違する。第１の点は、ライト要求で指定される物理ブロックに割り当てられた物理ブロックＡが特定された場合、図１５のステップＳ３に相当する処理で、物理ブロック管理データＰＢＭＤ＿Ａ内のライトカウントがインクリメントされることである。また、第２の点は、物理ブロックＡがレプリケーションを構成している場合、当該レプリケーションがスプリット状態であったならばライト要求で指定されたアクセス範囲（ライト範囲）が、物理ブロック管理データＰＢＭＤ＿Ａ内の差分ビットマップに記録されることである。第３の点は、図１５のステップＳ１１に相当する処理でライト動作が行われる点である。これらの３つの点を除けば、ライト処理もリード処理と同様に実施される。よって、ライト処理の手順を示すフローチャートは省略する。
【００９２】
次に本実施形態で適用されるレプリケーションコピー処理について図１６を参照して説明する。図１６は、レプリケーションコピー処理の典型的な手順を示すフローチャートである。ここでは、図１０に示されるマスタ論理ディスクＭＬＤ及びバックアップ論理ディスクＢＬＤの間でコピー動作が実行されるものとする。また、マスタ論理ディスクＭＬＤ内の論理ブロック及びバックアップ論理ディスクＢＬＤ内の論理ブロックが、いずれもストレージプールＳＰに属するＲＡＩＤグループＲＧ０及びＲＧ１内の物理ブロックを用いて定義されているものとする。
【００９３】
レプリケーション管理部２０３は、マスタ論理ディスクＭＬＤ及びバックアップ論理ディスクＢＬＤ各々の論理ブロックを示す論理ブロック番号を０に設定する（ステップＳ２１）。ここで、現在設定されている論理ブロック番号（ここでは０）の示すマスタ論理ディスクＭＬＤ内の論理ブロックをターゲットマスタ論理ブロックと称する。同様に、現在設定されている論理ブロック番号の示すバックアップ論理ディスクＢＬＤ内の論理ブロックをターゲットバックアップ論理ブロックと称する。また、ターゲットマスタ論理ブロックに割り当てられている物理ブロックをマスタ物理ブロックＡと称し、ターゲットバックアップ論理ブロックに割り当てられている物理ブロックをバックアップ物理ブロックＢと称する。また、ターゲットマスタ論理ブロックを管理するための論理ブロック管理データＬＢＭＤを論理ブロック管理データＬＢＭＤ＿Ｍと表記し、ターゲットバックアップ論理ブロックを管理するための論理ブロック管理データＬＢＭＤを論理ブロック管理データＬＢＭＤ＿Ｂと表記する。
【００９４】
次にレプリケーション管理部２０３は、ターゲットマスタ論理ブロックに割り当てられているマスタ物理ブロックＡを、前記リード処理におけるステップＳ２と同様の方法で特定する（ステップＳ２２）。つまりレプリケーション管理部２０３は、論理ブロック管理データＬＢＭＤ＿Ｍを参照する。そしてレプリケーション管理部２０３は、論理ブロック管理データＬＢＭＤ＿Ｍ内の物理ブロックポインタの指し示す物理ブロック管理データＰＢＭＤに基づいて、マスタ物理ブロックＡを特定する。マスタ物理ブロックＡの特定に用いられた物理ブロック管理データＰＢＭＤを物理ブロック管理データＰＢＭＤ＿Ａと表記する。
【００９５】
また、レプリケーション管理部２０３は、ターゲットバックアップ論理ブロックに割り当てられているバックアップ物理ブロックＢを次のように特定する（ステップＳ２３）。つまりレプリケーション管理部２０３は、論理ブロック管理データＬＢＭＤ＿Ｂを参照する。そしてレプリケーション管理部２０３は、論理ブロック管理データＬＢＭＤ＿Ｂ内の物理ブロックポインタの指し示す物理ブロック管理データＰＢＭＤに基づいて、バックアップ物理ブロックＢを特定する。バックアップ物理ブロックＢの特定に用いられた物理ブロック管理データＰＢＭＤを物理ブロック管理データＰＢＭＤ＿Ｂと表記する。
【００９６】
次にレプリケーション管理部２０３は、物理ブロック管理データＰＢＭＤ＿Ａ内の差分ビットマップ及びＰＢＭＤ＿Ｂ内の差分ビットマップを参照することにより、マスタ物理ブロックＡ及びバックアップ物理ブロックＢの間に差分が有るかを判定する（ステップＳ２４）。もし、両差分ビットマップの全ビットの少なくとも１ビットが“１”であるならば、レプリケーション管理部２０３は、マスタ物理ブロックＡ及びバックアップ物理ブロックＢの間に差分が有ると判定する。これに対し、前記両差分ビットマップの全ビットが“０”であるならば、レプリケーション管理部２０３は、マスタ物理ブロックＡ及びバックアップ物理ブロックＢの間に差分が無いと判定する。
【００９７】
マスタ物理ブロックＡ及びバックアップ物理ブロックＢの間に差分が無い場合（ステップＳ２４のＮｏ）、レプリケーション管理部２０３はステップＳ２５に進む。ステップＳ２５においてレプリケーション管理部２０３は、図１６のフローチャートに従うレプリケーションコピー処理におけるコピーの累積量が規定値以下であるかを判定する。
【００９８】
もし、コピー累積量が規定値を超えているならば（ステップＳ２５のＮｏ）、レプリケーション管理部２０３は、レプリケーションコピー処理の負荷が高いと判定する。この場合、レプリケーション管理部２０３は、次の論理ブロック（ターゲットマスタ論理ブロック及びターゲットバックアップ論理ブロック）の処理のためにステップＳ３４に進む。コピー累積量を示すパラメータは、管理データ記憶部２０９の所定領域に格納されており、レプリケーションコピー処理の開始時に０に初期設定される。
【００９９】
これに対し、コピー累積量が規定値以下であるならば（ステップＳ２５のＹｅｓ）、レプリケーション管理部２０３は、レプリケーションコピー処理の負荷が低いと判定する。この場合、レプリケーション管理部２０３は物理ブロック入れ替え判定部２０５に制御を渡す。マスタ物理ブロックＡ及びバックアップ物理ブロックＢの間に差分が有る場合にも（ステップＳ２４のＹｅｓ）、レプリケーション管理部２０３は物理ブロック入れ替え判定部２０５に制御を渡す。
【０１００】
すると物理ブロック入れ替え判定部２０５は、マスタ物理ブロックＡが所定の入れ替え条件を満たすかを、マスタ物理ブロックＡの性能属性及びリード／ライトカウントに基づいて判定する（ステップＳ２６）。つまり物理ブロック入れ替え判定部２０５は、マスタ物理ブロックＡのマイグレーションが必要かを判定する。リード／ライトカウントは、リードカウント、またはライトカウント、またはリードカウント及びライトカウントの和のいずれか１つを示す。
【０１０１】
なお、ステップＳ２５は必ずしも必要でなく、マスタ物理ブロックＡ及びバックアップ物理ブロックＢの間に差分が無い場合（ステップＳ２４のＮｏ）、レプリケーション管理部２０３がステップＳ３４に進んでも良い。また、マスタ物理ブロックＡ及びバックアップ物理ブロックＢの間に差分が有るだけでなく、その差分の量が規定値を超える場合に限り、ステップＳ２６の判定が実行されても良い。ここでは、差分の量が規定値以下の場合、直ちに後述するステップＳ３１（コピー動作）が実行されても良い。
【０１０２】
本実施形態において入れ替え条件は、マスタ物理ブロックＡ及びバックアップ物理ブロックＢに共通であり、第１及び第２の入れ替え条件から構成される。ここでは説明の都合で、前記入れ替え条件がマスタ物理ブロックＡの入れ替え条件であるとする。前記第１の入れ替え条件は、マスタ物理ブロックＡのリード／ライトカウントが予め定められた閾値を超えていて、且つ当該マスタ物理ブロックＡの性能属性が１であることである。つまり前記第１の入れ替え条件は、マスタ物理ブロックＡの負荷が高く、且つ当該マスタ物理ブロックＡが低速であることである。前記第２の入れ替え条件は、マスタ物理ブロックＡのリード／ライトカウントが前記閾値以下で、且つ当該マスタ物理ブロックＡの性能属性が０であることである。つまり前記第２の入れ替え条件は、マスタ物理ブロックＡの負荷が低く、且つ当該マスタ物理ブロックＡが高速であることである。
【０１０３】
物理ブロック入れ替え判定部２０５は、マスタ物理ブロックＡが前記第１の入れ替え条件を満たしている場合（ステップＳ２６のＹｅｓ）、当該マスタ物理ブロックＡを性能属性が０の高速な物理ブロックＣに入れ替える必要があると判定する。物理ブロック入れ替え判定部２０５はまた、マスタ物理ブロックＡが前記第２の入れ替え条件を満たしている場合（ステップＳ２６のＹｅｓ）、当該マスタ物理ブロックＡを性能属性が１の低速な物理ブロックＣに入れ替える必要があると判定する。いずれの場合にも、物理ブロックＣは、マスタ物理ブロックＡとは異なる性能属性の物理ブロックである。この物理ブロックＣを管理するための物理ブロック管理データＰＢＭＤを物理ブロック管理データＰＢＭＤ＿Ｃと表記する。
【０１０４】
マスタ物理ブロックＡが前記入れ替え条件（つまり前記第１または第２の入れ替え条件）を満たしている場合（ステップＳ２６のＹｅｓ）、物理ブロック入れ替え判定部２０５は物理ブロック入れ替え部２０６に制御を渡す。すると物理ブロック入れ替え部２０６は、物理ブロック管理データＰＢＭＤ＿Ａ内のスワップフラグをセットして（ステップＳ２７）、ステップＳ２９に進む。
【０１０５】
一方、マスタ物理ブロックＡが前記入れ替え条件を満たしていない場合（ステップＳ２６のＮｏ）、物理ブロック入れ替え判定部２０５は、バックアップ物理ブロックＢが前記入れ替え条件（つまり前記第１または第２の入れ替え条件）を満たしているかを判定する（ステップＳ２８）。つまり物理ブロック入れ替え判定部２０５は、バックアップ物理ブロックＢのマイグレーションが必要かを、ステップＳ２６と同様に判定する。必要ならば、ステップＳ２６におけるマスタ物理ブロックＡが前記入れ替え条件を満たすかの説明において、当該マスタ物理ブロックＡをバックアップ物理ブロックＢに読み替えられたい。
【０１０６】
物理ブロック入れ替え判定部２０５は、バックアップ物理ブロックＢのリード／ライトカウントが前記閾値を超えていて、且つ当該バックアップ物理ブロックＢの性能属性が１である場合（ステップＳ２８のＹｅｓ）、当該バックアップ物理ブロックＢを性能属性が０の高速な物理ブロックＣに入れ替える必要があると判定する。物理ブロック入れ替え判定部２０５はまた、バックアップ物理ブロックＢのリード／ライトカウントが前記閾値未満で、且つ当該バックアップ物理ブロックＢの性能属性が０である場合（ステップＳ２８のＹｅｓ）、当該バックアップ物理ブロックＢを性能属性が１の低速な物理ブロックＣに入れ替える必要があると判定する。
【０１０７】
バックアップ物理ブロックＢが前記入れ替え条件（つまり前記第１または第２の入れ替え条件）を満たしている場合（ステップＳ２８のＹｅｓ）、物理ブロック入れ替え判定部２０５は物理ブロック入れ替え部２０６に制御を渡す。すると物理ブロック入れ替え部２０６は、ステップＳ２９に進む。これに対し、バックアップ物理ブロックＢが入れ替え条件を満たしていない場合（ステップＳ２８のＮｏ）、つまりマスタ物理ブロックＡ及びバックアップ物理ブロックＢの双方が入れ替え条件を満たしていない場合、物理ブロック入れ替え判定部２０５はデータコピー部２０３ａに制御を渡す。するとデータコピー部２０３ａは、ステップＳ３１に進む。
【０１０８】
さて、ステップＳ２９において物理ブロック入れ替え部２０６は、ステップＳ２６またはＳ２８の何れの判定がＹｅｓであるかに無関係に、バックアップ物理ブロックＢを物理ブロックＣに入れ替える。物理ブロックＣは、ステップＳ２６において物理ブロック入れ替え判定部２０５によって判定された性能属性が＊（＊は０または１）の物理ブロックである。物理ブロック選択部２０７は、物理ブロックＣを、ストレージプール管理データＳＰＭＤ内の性能属性が＊のフリー物理ブロックリスト＊の先頭から選択する。
【０１０９】
ステップＳ２９における物理ブロックの入れ替えは、図１４（ｂ）を参照して説明したように、物理ブロックポインタを更新することにより行われる。つまり、物理ブロックＢ（物理ブロック管理データＰＢＭＤ＿Ｂ）を指している論理ブロック管理データＬＢＭＤ＿Ｂ内の物理ブロックポインタが、物理ブロックＣ（物理ブロック管理データＰＢＭＤ＿Ｃ）を指すように更新される。これにより、マスタ物理ブロックＡに対応するバックアップ物理ブロック（つまり、マスタ物理ブロックＡとの間でレプリケーションを構成するバックアップ物理ブロック）が、物理ブロックＢから物理ブロックＣに切り替えられる。このとき、物理ブロックＢ（つまり、物理ブロック切り替え時点までバックアップ物理ブロックとして用いられていた物理ブロックＢ）は、前述の物理ブロックＰＢ２と同様にフリーブロックとして、ストレージプール管理データＳＰＭＤ内のフリー物理ブロックリストに登録される。
【０１１０】
上述したように本実施形態では、ステップＳ２６の判定がＹｅｓの場合にも、バックアップ物理ブロックＢの入れ替えが行われる。その理由は、次の通りである。まず本実施形態では、ステップＳ２６の判定がＹｅｓの場合、物理ブロック管理データＰＢＭＤ＿Ａ内のスワップフラグがセットされる（ステップＳ２７）。この場合、後述するステップＳ３３において、マスタ物理ブロック（＝Ａ）を指し示す論理ブロック管理データＬＢＭＤ＿Ｍ内の物理ブロックポインタとバックアップ物理ブロックを指し示す論理ブロック管理データＬＢＭＤ＿Ｂ内の物理ブロックポインタとが入れ替えられる。つまり、物理ブロック情報（マッピング情報）が入れ替えられる。このとき、論理ブロック管理データＬＢＭＤ＿Ｂ内の物理ブロックポインタは、ステップＳ２９の実行により、物理ブロックＣ（物理ブロック管理データＰＢＭＤ＿Ｃ）を指すように更新されている。したがって、ステップＳ３３における物理ブロックポインタ（物理ブロック情報）の入れ替えにより、マスタ物理ブロックは実質的に物理ブロックＡから物理ブロックＣに入れ替えられることになる。つまり物理ブロックＣがマスタ物理ブロックに、物理ブロックＡがバックアップ物理ブロックに、それぞれ入れ替えられる。なお、ステップＳ２８の判定がＹｅｓの場合には、単にバックアップ物理ブロックが物理ブロックＢから物理ブロックＣに入れ替えられるだけである。
【０１１１】
物理ブロック入れ替え部２０６は、ステップＳ２９を実行すると、入れ替えの発生したバックアップ物理ブロック（つまり、現在のバックアップ物理ブロックＣ）に、レプリケーションコピー動作を利用して現在のマスタ論理ブロックＡの領域全体（全セクタ）のデータをコピーするために、差分フラッシュを行う（ステップＳ３０）。差分フラッシュとは、物理ブロックＡの領域全体（全セクタ）を差分有りの状態にすることである。つまり差分フラッシュとは、物理ブロックＡの差分ビットマップ（より詳細には、物理ブロック管理データＰＢＭＤ＿Ａ内の差分ビットマップ）の全ビットを“１”に設定することである。物理ブロック入れ替え部２０６はステップＳ３０を実行すると、データコピー部２０３ａに制御を渡す。するとデータコピー部２０３ａは、ステップＳ３１に進む。
【０１１２】
ステップＳ３１においてデータコピー部２０３ａは、物理ブロック管理データＰＢＭＤ＿Ａ及びＰＢＭＤ＿Ｂ内の両差分ビットマップに基づき、マスタ物理ブロックＡからバックアップ物理ブロックへ差分領域のデータを次のようにコピーする（ステップＳ３１）。まずデータコピー部２０３ａは、コピー開始時に前記両差分ビットマップをマージする。具体的には、データコピー部２０３ａは前記両差分ビットマップのそれぞれ対応するビットをＯＲすることにより、前記両差分ビットマップをマージする。このマージされた差分ビットマップ内の“１”のビットに対応するマスタ物理ブロックＡ（コピー元物理ブロック）及びバックアップ物理ブロック（コピー先物理ブロック）内の領域は、両ブロックの間でデータが一致していない差分領域を示す。データコピー部２０３ａは、マージされた差分ビットマップ内の“１”のビットの示す差分に基づき、マスタ物理ブロックＡからバックアップ物理ブロックへ差分領域のデータをコピーする。このときデータコピー部２０３ａは、ステップＳ３１で実行したデータコピーの量を、現時点におけるコピー累積量に加算する。
【０１１３】
ステップＳ３１がステップＳ３０に続いて実行される場合、バックアップ物理ブロックは物理ブロックＣである。また、マスタ物理ブロックＡの差分ビットマップ（つまり物理ブロック管理データＰＢＭＤＡ内の差分ビットマップ）の全ビットは、ステップＳ３０で全て“１”に設定されている。この場合、マスタ物理ブロックＡ及びバックアップ物理ブロックＣの領域全体が差分領域と見なされる。よってステップＳ３１がステップＳ３０に続いて実行される場合、マスタ物理ブロックＡの領域全体のデータがバックアップ物理ブロックＣへコピーされる。
【０１１４】
これに対し、ステップＳ３１がステップＳ２８に続いて実行される場合、バックアップ物理ブロックは物理ブロックＢである。この場合、マスタ物理ブロックＡ及び物理ブロックＢの間で差分のある領域のデータがマスタ物理ブロックＡから物理ブロックＢへコピーされる。
【０１１５】
物理ブロック入れ替え部２０６は、データコピー部２０３ａによるデータコピー（ステップＳ３１）の後、物理ブロック管理データＰＢＭＤ＿Ａ内のスワップフラグがセットされているかを判定する（ステップＳ３２）。もし、スワップフラグがセットされているならば（ステップＳ３２のＹｅｓ）、物理ブロック入れ替え部２０６はステップＳ３３に進む。
【０１１６】
ステップＳ３３において物理ブロック入れ替え部２０６は、前述したように、マスタ物理ブロックＡを指し示す論理ブロック管理データＬＢＭＤ＿Ｍ内の物理ブロックポインタとバックアップ物理ブロック（ここでは物理ブロックＣ）を指し示す論理ブロック管理データＬＢＭＤ＿Ｂ内の物理ブロックポインタとを入れ替える。この物理ブロックポインタ（つまり、マッピング情報）の入れ替えにより、現在のマスタ物理ブロックＡとバックアップ物理ブロックＣとが入れ替えられる。つまり物理ブロックＣがマスタ物理ブロックに、物理ブロックＡがバックアップ物理ブロックに、それぞれ入れ替えられる。
【０１１７】
物理ブロック入れ替え部２０６はステップＳ３３を実行すると、レプリケーション管理部２０３に制御を渡す。するとレプリケーション管理部２０３は、ステップＳ３４に進む。一方、スワップフラグがセットされていないならば（ステップＳ３２のＮｏ）、物理ブロック入れ替え部２０６は、ステップＳ３３をスキップして、レプリケーション管理部２０３に制御を渡す。するとレプリケーション管理部２０３は、ステップＳ３４に進む。
【０１１８】
ステップＳ３４においてレプリケーション管理部２０３は、論理ブロック番号を１インクリメントする。そしてレプリケーション管理部２０３は、この１インクリメント後の論理ブロック番号に基づき、マスタ論理ディスクＭＬＤ及びバックアップ論理ディスクＢＬＤの最終論理ブロックまでレプリケーションコピーが実行されたかを判定する（ステップ３５）。もし、最終論理ブロックまでレプリケーションコピーが実行されていないならば（ステップＳ３５のＮｏ）、レプリケーション管理部２０３はステップＳ２２に戻る。
【０１１９】
このようにして、マスタ論理ディスクＭＬＤ及びバックアップ論理ディスクＢＬＤの先頭論理ブロックから最終論理ブロックまで、ステップＳ２２から始まる処理が繰り返される。やがて、最終論理ブロックまでレプリケーションコピーが実行されたならば（ステップＳ３５のＹｅｓ）、レプリケーション管理部２０３はレプリケーションコピー処理を終了する。
【０１２０】
従来の技術では、レプリケーションに伴う物理ブロック間のコピー（レプリケーションコピー）と、物理ブロックのマイグレーションに伴う物理ブロック間のコピー（マイグレーションコピー）とは独立して実行されていた。ところが、ディスクアレイ装置１０における物理ブロック間のコピーは、一般にホスト装置２０からのアクセス要求に対する応答性能に影響を与える。
【０１２１】
これに対して本実施形態では、レプリケーションコピー処理において、論理ブロック単位でマイグレーションが必要か物理ブロック入れ替え判定部２０５によって判定される。
【０１２２】
物理ブロック入れ替え部２０は、この判定結果に基づいて、バックアップ物理ブロックを物理ブロックＣに入れ替える。物理ブロック入れ替え部２０は、この入れ替えに伴うマスタ物理ブロックからバックアップ物理ブロック（つまり物理ブロックＣ）へのコピー（つまりマイグレーションコピー）に、データコピー部２０３ａによるマスタ物理ブロックからバックアップ物理ブロックへのレプリケーションコピーを利用できるように、このコピーの前に前記入れ替え（バックアップ物理ブロックを物理ブロックＣに入れ替える動作）を実行する。つまり本実施形態によれば、前記判定結果に基づいてレプリケーションコピーとマイグレーションコピーとが同時に実行される。これによりディスクアレイ装置１０におけるコピー処理を削減できる。よって本実施形態によれば、コピー処理による性能低下を軽減して、高速なディスクアレイ装置１０を実現することができる。
【０１２３】
以上説明した少なくとも１つの実施形態によれば、コピー動作を低減することができる、物理ブロック間でデータをコピーするディスクアレイ装置、ディスクアレイコントローラ及び方法を提供できる。
【０１２４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【要約】
実施形態によれば、ディスクアレイコントローラは、データコピー部と、物理ブロック入れ替え部とを具備する。データコピー部は、マスタ論理ディスクとバックアップ論理ディスクを同期状態にするために前記マスタ論理ディスクから前記バックアップ論理ディスクにデータをコピーする。物理ブロック入れ替え部は、前記マスタ論理ディスクに割り当てられた第１の物理ブロックに対応付けられている前記バックアップ論理ディスクに割り当てられた第２の物理ブロックに代えて第３の物理ブロックに割り当てを入れ替える場合、前記第１の物理ブロックから前記バックアップ論理ディスクにデータがコピーされる前に、前記第３の物理ブロックを前記バックアップ論理ディスクに割り当てる。【図１】
0005583227.tif 000002
【図２】
0005583227.tif 000003
【図３】
0005583227.tif 000004
【図４】
0005583227.tif 000005
【図５】
0005583227.tif 000006
【図６】
0005583227.tif 000007
【図７】
0005583227.tif 000008
【図８】
0005583227.tif 000009
【図９】
0005583227.tif 000010
【図１０】
0005583227.tif 000011
【図１１】
0005583227.tif 000012
【図１２】
0005583227.tif 000013
【図１３】
0005583227.tif 000014
【図１４】
0005583227.tif 000015
【図１５】
0005583227.tif 000016
【図１６】
0005583227.tif 000017