(57)【特許請求の範囲】
【請求項１】
複数の論理ボリュームを提供可能な複数のストレージデバイスと、
前記複数の論理ボリュームのうちいずれかを指定した入出力要求を外部デバイスから受け付けて処理するコントローラと、
を備え、
前記コントローラは、
前記外部デバイスと通信するための第１インタフェースと、
前記各ストレージデバイスと通信するための第２インタフェースと、
前記第１インタフェース及び前記第２インタフェースにそれぞれ接続されるメモリと、
前記各第１インタフェースと前記各第２インタフェース及び前記メモリにそれぞれ接続される、複数のマイクロプロセッサとを含んでおり、
前記各マイクロプロセッサは、前記外部デバイスからの前記入出力要求が実行契機となる同期処理と、前記同期処理以外の非同期処理とを実行することができ、
前記各マイクロプロセッサは、予め設定される上限値まで前記同期処理を実行することができ、かつ、前記同期処理を実行していない場合に前記非同期処理を実行することができ、
前記各マイクロプロセッサにより使用されるメモリ領域には、所定の複数のモード毎に第１上限値と第２上限値とを対応付けて管理する上限値管理情報が記憶されており、
前記第１上限値は、前記同期処理のうち前記第１インタフェースに関する同期処理を実行できる回数の上限値を示し、
前記第２上限値は、前記同期処置及び前記非同期処理のうち前記第２インタフェースに関する同期処理及び非同期処理を実行できる回数の上限値を示し、
前記複数モードに含まれる第１モードでは、前記第１上限値の方が前記第２上限値よりも大きくなるように設定されており、
前記複数モードに含まれる第２モードでは、前記第２上限値の方が前記第１上限値よりも大きくなるように設定されており、
前記複数モードに含まれる第３モードでは、前記第１上限値と前記第２上限値とが同一に設定されており、
前記各マイクロプロセッサ毎にそれぞれ前記第１モードまたは前記第２モードまたは前記第３モードのいずれか一つのモードが設定されており、
前記各マイクロプロセッサの使用率と、前記メモリにのみ記憶されており前記ストレージデバイスに書き込まれていない未書込みデータの量とに基づいて、前記第１モードまたは前記第２モードまたは前記第３モードのうちのいずれのモードを前記各マイクロプロセッサに設定するか否かが、所定の周期で決定されるようになっており、
前記使用率が所定の使用率未満の場合は、前記第１モードが設定され、
前記使用率が前記所定の使用率以上であって、かつ、前記未書込みデータの量が所定のデータ量以上の場合は、前記第２モードが設定され、
前記使用率が前記所定の使用率以上であって、かつ、前記未書込みデータの量が前記所定のデータ量未満の場合は、前記第３モードが設定される、
ストレージシステム。
【請求項２】
複数の論理ボリュームを提供可能な複数のストレージデバイスと、
前記複数の論理ボリュームのうちいずれかを指定した入出力要求を外部デバイスから受け付けて処理するコントローラと、
を備え、
前記コントローラは、
前記外部デバイスと通信するための第１インタフェースと、
前記各ストレージデバイスと通信するための第２インタフェースと、
前記第１インタフェース及び前記第２インタフェースにそれぞれ接続されるメモリと、
前記各第１インタフェースと前記各第２インタフェース及び前記メモリにそれぞれ接続される、複数のマイクロプロセッサとを含んでおり、
前記各マイクロプロセッサは、前記外部デバイスからの前記入出力要求が実行契機となる同期処理と、前記同期処理以外の非同期処理とを実行することができ、
前記各マイクロプロセッサは、予め設定される上限値まで前記同期処理を実行することができ、かつ、前記同期処理を実行していない場合に前記非同期処理を実行することができ、
前記上限値は、複数モードの中から選択される一つのモードに従って、設定されるストレージシステム。
【請求項３】
前記各マイクロプロセッサには、所定の周期で、複数モードの中からいずれか一つのモードが設定されるようになっており、
前記複数モードには、前記同期処理を実行可能な回数が前記非同期処理を実行可能な回数よりも大きく設定されている同期処理優先モードと、前記同期処理を実行可能な回数が前記非同期処理を実行可能な回数よりも小さく設定されている非同期処理優先モードと、が含まれており、
前記各マイクロプロセッサは、前記複数モードの中から設定されるいずれか一つのモードに従って、前記同期処理と前記非同期処理とを実行する、
請求項２に記載のストレージシステム。
【請求項４】
前記各マイクロプロセッサには、前記各マイクロプロセッサの使用率と、前記メモリにのみ記憶されており前記ストレージデバイスに書き込まれていない未書込みデータの量とに基づいて、前記複数モードの中からいずれか一つのモードが前記所定の周期で設定される、
請求項３に記載のストレージシステム。
【請求項５】
前記各マイクロプロセッサの中には、前記同期処理だけを実行する同期処理担当モードに設定されるマイクロプロセッサと、前記非同期処理だけを実行する非同期処理担当モードに設定されるマイクロプロセッサとが、さらに含まれている、
請求項３に記載のストレージシステム。
【請求項６】
複数の論理ボリュームを提供可能な複数のストレージデバイスと、
前記複数の論理ボリュームのうちいずれかを指定した入出力要求を外部デバイスから受け付けて処理するコントローラと、
を備え、
前記コントローラは、
前記外部デバイスと通信するための第１インタフェースと、
前記各ストレージデバイスと通信するための第２インタフェースと、
前記第１インタフェース及び前記第２インタフェースにそれぞれ接続されるメモリと、
前記各第１インタフェースと前記各第２インタフェース及び前記メモリにそれぞれ接続される、複数のマイクロプロセッサとを含んでおり、
前記各マイクロプロセッサは、前記外部デバイスからの前記入出力要求が実行契機となる同期処理と、前記同期処理以外の非同期処理とを実行することができ、
前記各マイクロプロセッサは、予め設定される上限値まで前記同期処理を実行することができ、かつ、前記同期処理を実行していない場合に前記非同期処理を実行することができ、
前記各マイクロプロセッサにより使用されるメモリ領域には、所定の複数のモード毎に第１上限値と第２上限値とを対応付けて管理する上限値管理情報が記憶されており、
前記第１上限値は、前記同期処理のうち前記第１インタフェースに関する同期処理を実行できる回数の上限値を示し、
前記第２上限値は、前記同期処置及び前記非同期処理のうち前記第２インタフェースに関する同期処理及び非同期処理を実行できる回数の上限値を示し、
前記複数モードに含まれる第１モードでは、前記第１上限値の方が前記第２上限値よりも大きくなるように設定されており、
前記複数モードに含まれる第２モードでは、前記第２上限値の方が前記第１上限値よりも大きくなるように設定されており、
前記複数モードに含まれる第３モードでは、前記第１上限値と前記第２上限値とが同一に設定されており、
前記各マイクロプロセッサ毎にそれぞれ前記第１モードまたは前記第２モードまたは前記第３モードのいずれか一つのモードが設定されている、
ストレージシステム。
【請求項７】
前記複数モードには、前記第１インタフェースに関する前記同期処理だけを実行する第４モードと、前記第２インタフェースに関する前記同期処理及び前記非同期処理だけを実行する第５モードとがさらに含まれており、
前記各マイクロプロセッサ毎にそれぞれ前記第１モードまたは前記第２モードまたは前記第３モードまたは前記第４モードまたは前記第５モードのいずれか一つのモードが所定周期で設定される、
請求項６に記載のストレージシステム。
【請求項８】
前記第５モードでは、前記第２インタフェースに関する前記同期処理または前記非同期処理を、前記各マイクロプロセッサのうちの複数のマイクロプロセッサで分担して実行する、
請求項７に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のマイクロプロセッサを有するストレージシステム、及び、そのストレージシステムにおける処理分担方法に関する。
【背景技術】
【０００２】
ストレージシステムは、一般に、複数のストレージデバイスと、外部デバイス（例えばホストコンピュータ）からＩ／Ｏ（Input/Output）要求を受け付けるコントローラと、を備える。コントローラの構成としては、例えば特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−０４４０１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
コントローラは、例えば、外部デバイスから受信したＩ／Ｏ要求がリード要求であれば、ストレージデバイスからキャッシュメモリ（ＣＭ）にデータを転送する処理（ストレージデバイスリード処理）と、ＣＭ上のデータを読み出して外部デバイスへ転送させる処理（ＣＭリード処理）、またはCMリード処理のみを実行する。
【０００５】
また、コントローラは、例えば、外部デバイスから受けたＩ／Ｏ要求がライト要求であれば、外部デバイスから受信したデータをＣＭへ転送する処理（ＣＭライト処理）と、ＣＭからストレージデバイスへデータを転送させる処理（ストレージデバイスライト処理）とを実行する。
【０００６】
コントローラの有する複数のマイクロプロセッサは、同期処理及び非同期処理を実行することができる。「同期処理」とは、外部デバイスからのＩ／Ｏ要求の受付時からそのＩ／Ｏ要求へのレスポンスを外部デバイスへ返すまでの間に実行しなければならない処理である。同期処理としては、例えば、前述したストレージデバイスリード処理、ＣＭリード処理、ＣＭライト処理を実行させる処理などである。一方、「非同期処理」とは、同期処理以外の処理を意味し、例えば、前述したストレージデバイスライト処理を実行させる処理である。
【０００７】
もしもマイクロプロセッサが長時間を費やして非同期処理を実行すると、その分だけ同期処理の実行が遅れてしまうため、外部デバイスへのレスポンスが遅くなる。これに対し、同期処理を優先すれば、外部デバイスへのレスポンスを早めることができる。しかし、その場合、非同期処理の実行が遅れるため、ストレージデバイスに書き込まれていないデータがＣＭ上に多量に蓄積されて、ＣＭの空き容量が少なくなる。ＣＭの空き容量が少なくなると、外部デバイスからのＩ／Ｏ要求を処理するためのキャッシュ領域を十分に確保することができなくなり、ストレージデバイスライト処理によりＣＭの空き容量が増えることを待つ必要が生じるため、却って同期処理のレスポンスが悪化する。
【０００８】
そこで、本発明の目的は、各マイクロプロセッサにおいて同期処理と非同期処理とをそれぞれ適切に実行させることにより、各マイクロプロセッサを有効に活用することができる、複数のマイクロプロセッサを有するストレージシステム、及び、そのストレージシステムにおける処理分担方法を提供することにある。本発明の他の目的は、後述する実施例の記載から明らかになるであろう。
【課題を解決するための手段】
【０００９】
上記課題を解決すべく、本発明のストレージシステムでは、コントローラが有するマイクロプロセッサは、予め設定される上限値まで同期処理を実行することができ、かつ、同期処理を実行していない場合に非同期処理を実行することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、ストレージシステムを含むコンピュータシステムの図。
【図２】図２は、各マイクロプロセッサが使用する各種情報の構成図。
【図３】図３は、管理コンソールの構成図。
【図４】図４は、マイクロプロセッサ稼働率を管理するテーブル。
【図５】図５は、キャッシュダーティ率を管理するテーブル。
【図６】図６は、実行回数の上限値を各モード毎に調整するためのテーブル。
【図７】図７は、同期処理と非同期処理の、実行回数を管理するテーブル。
【図８】図８は、周期的に実行される処理を管理するテーブル。
【図９】図９は、同期処理と非同期処理の、実行回数の上限値を設定し直すための閾値を管理するテーブル。
【図１０】図１０は、同期処理を管理するテーブル。
【図１１】図１１は、非同期処理を管理するテーブル。
【図１２】図１２は、全体処理を示すフローチャート。
【図１３】図１３は、ホストインタフェース処理を示すフローチャート。
【図１４】図１４は、ディスクインタフェース処理を示すフローチャート。
【図１５】図１５は、実行回数の上限値を見直す処理を示すフローチャート。
【図１６】図１６は、読出しを要求されたホストデータを、キャッシュメモリから読み出す処理のフローチャート。
【図１７】図１７は、図１６に続く処理のフローチャート。
【図１８】図１８は、図１７に続く処理のフローチャート。
【図１９】図１９は、書込みを要求されたホストデータを、キャッシュメモリに書き込む処理を示すフローチャート。
【図２０】図２０は、図１９に続く処理のフローチャート。
【図２１】図２１は、図２０に続く処理のフローチャート。
【図２２】図２２は、ストレージデバイスからデータを読み出す処理を示すフローチャート。
【図２３】図２３は、図２２に続く処理のフローチャート。
【図２４】図２４は、ホストデータをストレージデバイスに書き込む処理を示すフローチャート。
【図２５】図２５は、図２４に続く処理のフローチャート。
【図２６】図２６は、管理コンソールから実行回数の上限または閾値を設定する処理を示すフローチャート。
【図２７】図２７は、管理コンソールにより提供される管理画面の例。
【図２８】図２８は、第２実施例に係るストレージシステムで使用されるテーブルの構成例。
【図２９】図２９は、第３実施例に係るストレージシステムの各マイクロプロセッサが使用する各種情報の構成図。
【図３０】図３０は、マイクロプロセッサに設定される情報を管理するテーブル。
【図３１】図３１は、Ｉ／Ｏ処理のフローチャート。
【図３２】図３２は、ホストインタフェースを担当するマイクロプロセッサによる処理を示すフローチャート。
【図３３】図３３は、ディスクインタフェースを担当するマイクロプロセッサによる処理を示すフローチャート。
【図３４】図３４は、マイクロプロセッサの属性を切り換えるための処理を示すフローチャート。
【図３５】図３５は、マイクロプロセッサの稼働状況を模式的に示す図。
【図３６】図３６は、第４実施例に係るストレージシステムで使用される、マイクロプロセッサに設定される情報を管理するためのテーブル。
【図３７】図３７は、Ｉ／Ｏ処理のフローチャート。
【図３８】図３８は、同期処理のフローチャート。
【図３９】図３９は、非同期処理のフローチャート。
【図４０】図４０は、マイクロプロセッサの属性を切り換える処理を示すフローチャート。
【図４１】図４１は、第５実施例に係るストレージシステムを含むコンピュータシステムの全体図。
【図４２】図４２は、第６実施例に係るストレージシステムで実行される、ホストデータをストレージデバイスから読み出す処理を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて、本発明の実施の形態を説明する。本発明は、後述のように、複数の論理ボリュームを提供可能な複数のストレージデバイスと、複数の論理ボリュームのうちいずれかを指定した入出力要求を外部デバイスから受け付けて処理するコントローラと、を備えたストレージシステムに関する。コントローラは、外部デバイスと通信するための少なくとも一つの第１インタフェースと、各ストレージデバイスと通信するための少なくとも一つの第２インタフェースと、各第１インタフェース及び各第２インタフェースにそれぞれ接続されるメモリと、各第１インタフェースと各第２インタフェース及びメモリにそれぞれ接続される、複数のマイクロプロセッサとを含んでいる。各マイクロプロセッサは、外部デバイスからの入出力要求が実行契機となる同期処理と、同期処理以外の非同期処理とを実行することができる。各マイクロプロセッサは、予め設定される上限値まで同期処理を実行することができ、かつ、同期処理を実行していない場合に非同期処理を実行することができる。
【００１２】
なお、以下に述べる実施例の記載は、本発明の範囲を限定するものではない。実施例で説明されている特徴の組合せの全てが発明の解決手段に必須であるとは限らない。
【実施例１】
【００１３】
図１は、本発明の第１実施例に係るストレージシステムを含むコンピュータシステムを示す。以下の説明では、インタフェースを「Ｉ／Ｆ」と略記することがある。
【００１４】
コンピュータシステムは、一つ以上のホストコンピュータ１８０と、ストレージシステム１０と、管理コンソール２０とを有する。ホストコンピュータ１８０とストレージシステム１０との間の通信は、例えば、通信ネットワーク１９０を介して行われる。
【００１５】
通信ネットワーク１９０としては、例えば、ＳＡＮ（Storage Area Network）、ＬＡＮ（Local Area Network）、インターネット、専用回線、公衆回線等のように、データ通信を行うことのできるネットワークであればよい。ホストコンピュータ１８０とストレージシステム１０との間の通信のプロトコルとしては、例えば、ファイバチャネルプロトコルまたはＴＣＰ／ＩＰプロトコル等の、データの送受信が可能な種々のプロトコルのうちの任意のプロトコルを採用可能である。
【００１６】
ホストコンピュータ１８０がいわゆるメインフレームの場合、例えば、ＦＩＣＯＮ（Fibre Connection：登録商標）、ＥＳＣＯＮ（Enterprise System Connection：登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture：登録商標）、ＦＩＢＡＲＣ（Fibre Connection Architecture：登録商標）等の通信プロトコルを使用できる。
【００１７】
管理コンソール２０は、ストレージシステム１０を管理するためのコンピュータであり、ユーザにより操作される。
【００１８】
ホストコンピュータ１８０は、ストレージシステム１０にＩ／Ｏ要求を送信する。Ｉ／Ｏ要求とは、例えば、リード要求またはライト要求である。リード要求には、例えば、リード対象データの読出し元に対応したＬＵＮ（Logical Unit Number）及びＬＢＡ（Logical Block Address）が含まれる。ライト要求には、例えば、ライト対象データの書込み先に対応したＬＵＮ及びＬＢＡと、ライト対象データとが含まれる。ＬＵＮは、ストレージシステム１０内の論理ボリューム１７１に割り当てられている。ＬＢＡは、論理ボリューム１７１内の記憶領域（ブロック）のアドレスである。
【００１９】
以下の説明では、リード対象データをリードデータと、ライト対象データをライトデータと呼ぶ場合がある。さらに、リード対象データとライト対象データとを、ホストデータと呼ぶ場合がある。
【００２０】
ストレージシステム１０は、複数のＨＤＤ（Hard Disk Drive）１７０と、コントローラ１００とを備える。コントローラ１００は、ホストコンピュータ１８０からＩ／Ｏ要求を受け付けて、いずれかのストレージデバイス１７０にアクセスし、Ｉ／Ｏ要求の処理結果をホストコンピュータ１８０に返す。
【００２１】
ＨＤＤ１７０は、ストレージデバイスの一例である。ストレージデバイスは、ハードディスクドライブに限定されない。例えば、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス、磁気テープデバイス、フレキシブルディスクデバイス等のデータを読み書き可能な種々のデバイスを、ストレージデバイスとして利用可能である。
【００２２】
複数のＨＤＤ１７０の有する物理的記憶領域に基づいて、複数の論理ボリューム１７１を形成することができる。具体的には、二以上のＨＤＤ１７０により、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive)  Disks）グループが生成される。各ＲＡＩＤグループの有する物理的記憶領域を用いて、一つまたは複数の論理ボリューム１７１が設定される。図１では、一つの論理ボリューム１７１を示すが、ストレージシステム１０は、通常の場合、多数のＲＡＩＤグループ及び多数の論理ボリューム１７１を備えている。
【００２３】
論理ボリューム１７１には、ＬＵＮが割り当てられ、ホストコンピュータ１８０に提供される。コントローラ１００は、Ｉ／Ｏ要求により指定されたＬＵＮに対応した論理ボリュームを特定し、その論理ボリュームの基になっているＨＤＤ１７０にアクセスしてデータを読み書きする。
【００２４】
Thin Provisioning技術等では、論理ボリュームがプールボリュームであり、ＬＵＮは割り当てられていない。その場合、ＬＵＮは、仮想的に設けられる論理ボリュームに割り当てられる。コントローラ１００は、仮想的な論理ボリュームへのＩ／Ｏ要求を受け付けると、仮想的な論理ボリューム内のアクセス先に対応するプールボリュームにアクセスして、データを読み書きする。
【００２５】
コントローラ１００は、例えば、一つ以上のホストＩ／Ｆ部としての一つ以上のＦＥＰＫ（FrontEnd PacKage）１１０と、一つ以上の制御部としての一つ以上のＭＰＰＫ（Micro Processor PacKage）１２０と、一つ以上の共有メモリ部としての一つ以上のＣＭＰＫ（Cache Memory PacKage）１３０と、一つ以上のディスクＩ／Ｆ部としての一つ以上のＢＥＰＫ（BackEnd PacKage）１４０とを有する。
【００２６】
各ＦＥＰＫ１１０、各ＭＰＰＫ１２０、各ＣＭＰＫ１３０及び各ＢＥＰＫ１４０は、内部ネットワーク１５０に接続されている。内部ネットワーク１５０は、例えば、ＬＡＮ等の通信ネットワークであっても良いし、または、クロスバスイッチ等のスイッチデバイスであっても良い。各ＭＰＰＫ１２０の各ＭＰ（Micro Processor）１２１は、内部ネットワーク１５０を介して、各ＦＥＰＫ１１０、各ＣＭＰＫ１３０、各ＢＥＰＫ１４０と通信可能に接続されている。
【００２７】
ＦＥＰＫ１１０は、ホストコンピュータ１８０と通信するためのインタフェース装置であり、ホストＩ／Ｆ１１１と、転送制御回路１１２とを有する。各ホストＩ／Ｆ１１１は、例えば、通信ポートである。転送制御回路１１２は、ホストＩ／Ｆ１１１で受け付けたＩ／Ｏ要求またはデータ等の転送を制御する回路である。
【００２８】
ＢＥＰＫ１４０は、ＨＤＤ１７０と通信するためのインタフェース装置であり、ディスクＩ／Ｆ１４１と、転送制御回路１４２とを有する。ディスクＩ／Ｆ１４１は、例えば、通信ポートである。ＢＥＰＫ１４０は、各ＨＤＤ１７０に接続されていると共に、内部ネットワーク１５０とも接続されている。ＢＥＰＫ１４０は、内部ネットワーク１５０側とＨＤＤ１７０との間における、リード対象データまたはライト対象データの受け渡し処理を仲介する。転送制御回路１４２は、データ転送を制御する回路である。
【００２９】
ＣＭＰＫ１３０は、キャッシュメモリ（以下、「ＣＭ」と略す）１３１と制御メモリ１３２を有する。ＣＭ１３１と制御メモリ１３２は、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発メモリから構成されてもよい。
【００３０】
ＣＭ１３１には、ＨＤＤ１７０に書き込むデータ（ライト対象データ）が一時的に格納される。また、ＣＭ１３１には、ＨＤＤ１７０から読み出されたデータ（リード対象データ）が一時的に格納される。
【００３１】
制御メモリ１３２は、同期処理及び非同期処理等の処理に必要な各種の制御情報を記憶する。制御情報として、例えば、ＨＤＤ構成情報、ボリューム管理情報を挙げることができる。ＨＤＤ構成情報は、どのＲＡＩＤグループがどのＨＤＤ１７０で構成されているか等を管理する情報である。ボリューム管理情報とは、どの論理ボリュームがどのような機能に対応しているか等を管理する情報である。
【００３２】
ＭＰＰＫ１２０は、ストレージシステム１０の動作を制御する。ＭＰＰＫ１２０は、複数のＭＰ１２１と、ローカルメモリ（ＬＭ）１２２と、各ＭＰ１２１とＬＭ１２２とを接続するためのバス１２３とを有する。
【００３３】
なお、本実施例では、複数のＭＰＰＫ１２０が複数のＭＰ１２１を有する場合を示すが、これに限らず、複数のＭＰＰＫ１２０がそれぞれ一つずつのＭＰ１２１を有する構成でもよい。
【００３４】
ＬＭ１２２には、制御メモリ１３２に記憶されている制御情報の一部または全部が、コピーされている。制御情報の一部とは、制御情報のうち、その一部を記憶するＬＭ１２２を有するＭＰＰＫ１２０にとって必要な部分である。
【００３５】
図２は、ＭＰＰＫ１２０のＬＭ１２２に格納されている各種情報（テーブル、キュー）を示す。ＬＭ１２２には、例えば、ＭＰ稼働率テーブル２１０と、キャッシュダーティ率テーブル２２０と、実行回数上限チューニングテーブル２３０と、実行回数上限テーブル２４０と、周期管理テーブル２５０と、実行数上限設定閾値テーブル２６０と、同期処理テーブル２７０と、非同期処理テーブル２８０と、ホストＩ／Ｆ同期処理キュー４１０と、ディスクＩ／Ｆ同期処理キュー４２０と、ディスクＩ／Ｆ非同期処理キュー４３０とが格納される。ＭＰ稼働率テーブル２１０は、ＭＰＰＫ内の各ＭＰ毎、またはＭＰＰＫ内に一つのみ存在する。
【００３６】
各テーブル２１０−２７０については後述する。ホストＩ／Ｆ同期処理キュー４１０は、ホストＩ／Ｆ１１１に関連する同期処理要求を管理するためのキューである。同期処理としては、ホストコンピュータ１８０の要求するリード対象データをＣＭ１３１から読み出して、ホストコンピュータ１８０に転送させる処理（ホストデータＣＭリード処理）と、ホストコンピュータ１８０から受信したライト対象データをＣＭ１３１に記憶させる処理（ホストデータＣＭライト処理）とを、挙げることができる。
【００３７】
ディスクＩ／Ｆ同期処理キュー４２０は、ディスクＩ／Ｆ１４１に関連する同期処理要求を管理するためのキューである。ディスクＩ／Ｆ１４１に関連する同期処理としては、例えば、ホストコンピュータ１８０から読出しを要求されたリード対象データを、読み出し元の論理ボリューム１７１に対応するストレージデバイス１７０から読み出す処理（ホストデータＨＤＤリード処理）を挙げることができる。
【００３８】
ディスクＩ／Ｆ非同期処理キュー４３０は、ディスクＩ／Ｆ１４１に関連する非同期処理要求を管理するためのキューである。ディスクＩ／Ｆ１４１に関連する非同期処理としては、例えば、ホストコンピュータ１８０から受信したライト対象データを、書込先の論理ボリューム１７１に対応するストレージデバイス１７０に書き込む処理（ホストデータＨＤＤライト処理）を挙げることができる。
【００３９】
なお、図示を省略するが、ＬＭ１２２には、各ＭＰ１２１で実行される一つ以上のコンピュータプログラムを格納可能である。各ＭＰ１２１は、コンピュータプログラムを読み込んで実行することにより、後述のフローチャートに示される機能を実現する。例えば、図１２−図２６の各フローチャートに対応するコンピュータプログラム及びオペレーティングシステム等を、ＬＭ１２２に記憶させることができる。
【００４０】
なお、図２に示すテーブル及びキュー以外の、他のテーブル及び他のキューをＬＭ１２２に記憶させることもできる。例えば、リモートコピーを管理するためのテーブル、障害発生時の処理要求を管理するためのキュー等をＬＭ１２２に記憶させてもよい。
【００４１】
図３は、管理コンソール２０の構成を示す。ユーザは、管理コンソール２０を介して、ストレージシステム１０の稼働状況等を確認することができる。さらに、ユーザは、管理コンソール２０を介して、各種テーブルの設定値を変更することができる。管理コンソール２０は、例えば、通信Ｉ／Ｆ２１と、入力Ｉ／Ｆ２２と、表示Ｉ／Ｆ２３と、メモリ２４と、ＨＤＤ２５と、ＣＰＵ（Central Processing Unit）２６とが、バス２７を介して接続されている。
【００４２】
メモリ２４は、例えば、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）を有し、ブートプログラムと各種処理を実行するプログラムとを記憶する。メモリ２４には、ＣＰＵ２６により使用される作業領域を設けることもできる。
【００４３】
ＨＤＤ２５は、管理コンソール２０に電源が入っていない場合でも保持しておく必要があるプログラム及び各種情報を記憶する。
【００４４】
入力Ｉ／Ｆ２２には、管理コンソール２０のユーザ（管理者）による操作を受け付けるための入力部２８が接続されている。入力部２８としては、例えば、マウスのようなポインティングデバイス、タッチパネル、キーボードスイッチ、音声入力装置等を挙げることができる。入力Ｉ／Ｆ２２は、入力部２８からの信号をデータに変換し、ＣＰＵ２６に出力する。
【００４５】
表示Ｉ／Ｆ２３には、表示部２９が接続されている。表示部２９としては、例えば、液晶ディスプレイ、プラズマディスプレイ、ＣＲＴ（Cathode Ray Tube）、プリンタ、音声出力装置等を挙げることができる。表示Ｉ／Ｆ２３は、例えば、ＶＲＡＭ（Video Random Access Memory）を有する。ＣＰＵ２６は、表示させる画像に応じた画像データを生成し、表示部２９に画面を表示出力させる。
【００４６】
通信Ｉ／Ｆ２１は、ストレージシステム１０の内部ネットワーク１５０に接続されており、ＣＰＵ２６と、内部ネットワーク１５０に接続されたストレージシステム１０の各部（例えば、各ＭＰＰＫ１２０の各ＭＰ１２１）とのデータ交換を仲介する。
【００４７】
ＣＰＵ２６は、各部２１〜２５の動作を制御する。また、ＣＰＵ２６は、メモリ２４、または／及び、ＨＤＤ２５に格納されているプログラムをメモリ２４の有するＲＡＭに読み出して実行する。
【００４８】
図４は、各ＭＰ１２１の稼働率を管理するためのテーブル２１０を示す。ＭＰ稼働率テーブル２１０は、種別フィールド２１１と、稼働率フィールド２１２とを有する。種別フィールド２１１には、稼働率の種別を示す値が設定される。稼働率の種別としては、全ＭＰの稼働率の平均値Ｕｍｐａを示す「全体」と、ホストＩ／Ｆ１１１に関する処理を担当しているＭＰの稼働率の平均値Ｕｍｐｈを示す「ホストＩ／Ｆ」と、ディスクＩ／Ｆ１４１に関する処理を担当しているＭＰの稼働率の平均値Ｕｍｐｄを示す「ディスクＩ／Ｆ」とがある。稼働率フィールド２１２は、各種別毎の稼働率の当該ＭＰＰＫ１２０に属する各ＭＰ毎の稼働率を記憶する。稼働率フィールド２１２は各ＭＰ毎の稼働率ではなく、当該ＭＰＰＫ１２０に属する各ＭＰ毎の稼働率の平均値でも良い。
【００４９】
図５は、キャッシュダーティ率を管理するためのテーブル２２０を示す。キャッシュダーティ率テーブル２２０は、キャッシュダーティ率Ｃｄを記憶するためのフィールド２２１を有する。
【００５０】
キャッシュダーティ率とは、ＣＭ１３１に記憶されているダーティデータの割合であり、キャッシュダーティ率が大きいほどダーティデータが溜まっていることを示す。ダーティデータとは、ＣＭ１３１にのみ格納されており、ＨＤＤ１７０に書き込まれていない状態のデータである。ダーティデータがＨＤＤ１７０に書き込まれると、そのデータは、ダーティ状態からクリーン状態に変化する。クリーン状態のデータは、ＣＭ１２１とＨＤＤ１７０の両方に書き込まれている。従って、クリーン状態のデータが記憶されているＣＭ１２１の領域を解放して、その領域を未使用状態に戻し、その未使用状態の領域に新たなデータを記憶させることができる。
【００５１】
図６は、実行回数の上限をチューニングするためのテーブル２３０を示す。実行回数上限チューニングテーブル２３０は、例えば、設定種別フィールド２３１と、ホストＩ／Ｆ処理実行回数フィールド２３２と、ディスクＩ／Ｆ処理実行回数フィールド２３３とを備える。
【００５２】
設定種別フィールド２３１は、実行回数の設定種別を記憶する。設定種別としては、ホストＩ／Ｆ１１１に関する処理を優先して実行する「ホストＩ／Ｆ優先」と、ディスクＩ／Ｆ１４１に関する処理を優先して実行する「ディスクＩ／Ｆ優先」と、ホストＩ／Ｆ１１１に関する処理とディスクＩ／Ｆ１４１に関する処理とを同等に実行する「同等」とがある。以下、ホストＩ／Ｆ優先モード、ディスクＩ／Ｆ優先モード、同等モード（または両Ｉ／Ｆ同等モード）と呼ぶ場合がある。
【００５３】
ホストＩ／Ｆ処理実行回数フィールド２３２は、ホストＩ／Ｆ１１１に関する処理の実行回数の上限値ＵＬＮｅｈを、各設定種別毎に記憶する。ディスクＩ／Ｆ処理実行回数フィールド２３３は、ディスクＩ／Ｆ１４１に関する処理の実行回数の上限値ＵＬＮｅｄを、各設定種別毎に記憶する。
【００５４】
「ホストＩ／Ｆ優先」の場合、ホストＩ／Ｆ処理の実行回数の上限値ＵＬＮｅｈ１は、ディスクＩ／Ｆ処理の実行回数の上限値ＵＬＮｅｄ１よりも大きく設定されている（ＵＬＮｅｈ１＞ＵＬＮｅｄ１）。
【００５５】
「同等」の場合、ホストＩ／Ｆ処理の実行回数の上限値ＵＬＮｅｈ２は、ディスクＩ／Ｆ処理の実行回数の上限値ＵＬＮｅｄ２と等しいなるように設定されている（ＵＬＮｅｈ２＝ＵＬＮｅｄ２）。
【００５６】
「ディスクＩ／Ｆ優先」の場合、ホストＩ／Ｆ処理の実行回数の上限値ＵＬＮｅｈ３は、ディスクＩ／Ｆ処理の実行回数の上限値ＵＬＮｅｄ３よりも小さくなるように設定されている（ＵＬＮｅｈ３＜ＵＬＮｅｄ３）。
【００５７】
上限値ＵＬＮｅｈ，ＵＬＮｅｄの値は、ユーザが管理コンソール２０から手動で設定できるように構成してもよい。さらに、例えば、ＦＥＰＫ１１０が増設されてホストＩ／Ｆ１１１の数が多くなった場合は、ホストＩ／Ｆ処理の実行回数の上限値ＵＬＮｅｈを自動的に大きくする構成でもよい。同様に、例えば、ＢＥＰＫ１４０が増設されてディスクＩ／Ｆ１４１の数が多くなった場合は、ディスクＩ／Ｆ処理の実行回数の上限値ＵＬＮｅｄを自動的に大きく設定してもよい。逆に、ＦＥＰＫ１１０がストレージシステム１０から取り外された場合（減設時）、上限値ＵＬＮｅｈを自動的に小さくしてもよい。同様に、ＢＥＰＫ１４０がストレージシステム１０から取り外された場合、上限値ＵＬＮｅｄを自動的に小さくしてもよい。
【００５８】
図７は、実行回数を管理するテーブル２４０を示す。実行回数テーブル２４０は、処理種別フィールド２４１と、実行回数フィールド２４２と、実行回数上限フィールド２４３とを備える。
【００５９】
処理種別フィールド２４１は、ＭＰ１２１により実行された処理の種別を記憶する。処理種別には、「ホストＩ／Ｆ処理」と「ディスクＩ／Ｆ処理」とがある。実行回数フィールド２４２は、各処理種別毎の実行回数が記憶される。ホストＩ／Ｆ処理が実行された回数をＮｅｈ、ディスクＩ／Ｆ処理が実行された回数をＮｅｄとする。
【００６０】
実行回数上限フィールド２４３は、各処理種別毎の実行回数の上限値を記憶する。ホストＩ／Ｆ処理の実行回数の上限値はＵＬＮｅｈ、ディスクＩ／Ｆ処理の実行回数の上限値はＵＬＮｅｄである。それら上限値ＵＬＮｅｈ，ＵＬＮｅｄは、図６で述べたテーブル２３０により決定される。
【００６１】
図８は、周期的に実行されるべき処理を管理するためのテーブル２５０を示す。周期処理テーブル２５０は、処理種別フィールド２５１と、次回実行時刻フィールド２５２と、周期フィールド２５３とを備える。
【００６２】
処理種別フィールド２５１は、周期的に実行されるべき処理の種別を記憶する。周期的に実行されるべき処理（周期処理）としては、例えば、「実行回数の上限値を見直す処理」と、「ホストデータＨＤＤライト処理を生成する処理」とを挙げることができる。
【００６３】
「実行回数の上限値を見直す処理」とは、図７に示すテーブル２４０の実行回数上限フィールド２４３に記憶される上限値ＵＬＮｅｈ，ＵＬＮｅｄが適切であるか否かを見直す処理である。ストレージシステム１０の稼働状況に応じて適切な値となるように、実行回数の上限値ＵＬＮｅｈ，ＵＬＮｅｄを定期的に変更する。
【００６４】
「ホストデータＨＤＤライト処理を生成する処理」とは、ホストデータをＨＤＤ１７０に書き込むためのライト処理要求を生成させる処理である。ＣＭ１３１の空き領域を確保するために、ＣＭ１３１に蓄積されたダーティデータを周期的にＨＤＤ１７０に書き込ませる。
【００６５】
次回実行時刻フィールド２５２は、処理種別毎に、次回の実行時刻Ｔを記憶する。次回実行時刻は、例えば、ストレージシステム１０内のシステムタイマの値で設定される。周期フィールド２５３は、処理種別毎に、実行の周期Ｃｙｃを記憶する。
【００６６】
次回実行時刻及び周期は、ユーザが管理コンソール２０を介して手動で設定できる構成でもよい。または、ストレージシステム１０の構成変更等に応じて、次回実行時刻及び周期を自動的に変更する構成でもよい。例えば、ホストＩ／Ｆ１１１の数が増加した場合、ホストデータＨＤＤライト処理を生成する処理の実行周期Ｃｙｃ２を短く設定することにより、ＣＭ１３１がダーティデータで満杯になるのを防止できる。
【００６７】
図９は、実行回数の上限値を設定するための閾値を管理するテーブル２６０である。テーブル２６０は、実行回数の上限値を見直す処理の実行契機となる閾値を管理する。テーブル２６０は、基準情報フィールド２６１と、閾値フィールド２６２とを備える。
【００６８】
基準情報フィールド２６１には、実行契機を判断するための基準となる情報の名称が記憶されている。基準情報としては、例えば、「ＭＰ稼働率」と「キャッシュダーティ率」とを挙げることができる。
【００６９】
閾値フィールド２６２には、各基準情報毎の閾値が記憶される。ＭＰ稼働率の閾値はＴｈＵｍｐであり、キャッシュダーティ率の閾値はＴｈＣｄである。それら閾値を、ユーザが管理コンソール２０を介して手動で設定できる構成としてもよい。さらには、他の基準情報を用いて、実行回数の上限値を見直す処理（図１５）の実行契機を判定する構成としてもよい。例えば、ホストＩ／Ｆ同期処理キューに蓄積された処理要求の数、非同期リモートコピーの未転送データ量、ストレージシステム１０の構成変更等に基づいて、図１５に示す処理の実行契機を判断する構成としてもよい。
【００７０】
図１０は、同期処理を管理するテーブル２７０を示す。同期処理テーブル２７０は、同期処理の種類を管理する。同期処理テーブル２７０には、同期処理の名称が複数登録されている。同期処理としては、例えば、ホストデータＣＭリード処理２７１、ホストデータＣＭライト処理２７２、ホストデータＨＤＤリード処理２７３等が挙げられる。なお、同期処理は、図１０に示す処理に限らない。例えば、同期リモートコピー処理におけるコピー処理等も同期処理の一種である。
【００７１】
図１１は、非同期処理を管理するテーブル２８０を示す。非同期処理テーブル２８０は、非同期処理の種類を管理する。非同期処理テーブル２８０には、非同期処理の名称が登録される。非同期処理としては、例えば、ホストデータＨＤＤライト処理２８１を挙げることができる。非同期処理とは、同期処理以外の各処理のうち特定の処理である。非同期処理は、ホストコンピュータ１８０からのＩ／Ｏ要求をトリガーとして実行される処理ではなく、ストレージシステム１０内の状況が所定の状況になった場合、または、管理コンソール２０から指示が入力された場合をトリガーとして実行される。
【００７２】
非同期処理としては、図１１に示す以外に、例えば、非同期ローカルコピー処理、非同期リモートコピー処理、コピー機能の初期コピー処理、オーナ権移動処理、障害回復処理、論理ボリュームの設定処理、ストレージシステムの構成を変更する処理、フォーマット処理等を挙げることができる。
【００７３】
非同期ローカルコピー処理とは、一つのストレージシステム１０内において、コピー元の論理ボリュームからコピー先の論理ボリュームに、コピー元の論理ボリュームへの書込みタイミングとは異なるタイミングでデータを転送する処理である。
【００７４】
非同期リモートコピー処理とは、一方のストレージシステムに設けられているコピー元の論理ボリュームから他方のストレージシステムに設けられているコピー先の論理ボリュームに、コピー元の論理ボリュームへの書込みタイミングとは異なるタイミングで、データを転送する処理である。
【００７５】
コピー機能の初期コピー処理とは、同期ローカルコピー、非同期ローカルコピー、同期リモートコピー、非同期リモートコピーのペア作成時にコピー元の論理ボリュームの全データをコピー先の論理ボリュームに転送する処理である。
【００７６】
オーナ権移動処理とは、ＭＰ間でオーナ権を移動させる処理である。オーナ権とは、論理ボリュームへのアクセス権限を意味する。論理ボリュームのオーナ権を有するＭＰのみが、その論理ボリュームにアクセスしてデータを読み書きできる。
【００７７】
障害回復処理とは、障害から回復するための処理であり、例えば、コレクションコピー処理、スペアドライブへのコピー処理等がある。コレクションコピー処理とは、障害の発生したＨＤＤ１７０内のデータを、そのＨＤＤと同一のＲＡＩＤグループに属する他の各ＨＤＤ１７０から読み出されるデータ及びパリティに基づいて復元する処理である。論理演算により復元されたデータは、例えば、予備のＨＤＤ１７０に記憶される。
【００７８】
論理ボリュームの設定処理とは、新たに論理ボリュームを作成、または削除する処理である。各ＭＰは、その設定変更を認識する必要がある。
【００７９】
ストレージシステムの構成を変更する処理とは、ストレージシステム１０に新たなパッケージが取り付けられた場合、または、ストレージシステム１０から既設パッケージが取り外された場合等に実行される処理である。ストレージシステム１０の構成が変更された場合、各ＭＰは、その構成変更を認識する必要がある。
【００８０】
フォーマット処理とは、論理ボリューム１７１をフォーマットする処理である。以上の非同期処理は例示であって、本発明はそれらの非同期処理に限定されない。
【００８１】
図１２−図２６を参照してストレージシステム１０の動作及び管理コンソール２０の動作を説明する。以下に示す各フローチャートは、各処理の概要を示しており、実際のコンピュータプログラムとは相違する場合がある。いわゆる当業者であれば、図示されたステップの一部を変更したり、新たなステップを追加または削除したりできるであろう。以下、ステップをＳと略記する。
【００８２】
図１２は、各ＭＰ１２１により実行される全体スケジュール処理を示す。ＭＰ１２１は、システムタイマから現在時刻を取得する（Ｓ１０１）。ＭＰ１２１は、図８に示す周期処理テーブル２５０の次回実行時刻フィールド２５２に記憶されている次回実行時刻に到達した周期処理があるか否かを判定する（Ｓ１０２）。
【００８３】
実行時期の到来した周期処理が無い場合（Ｓ１０２：ＮＯ）、ＭＰ１２１は、ホストＩ／Ｆ処理スケジュール（Ｓ１０３）と、ディスクＩ／Ｆスケジュール（Ｓ１０４）とを実行して、Ｓ１０１に戻る。
【００８４】
実行時期の到来した周期処理が有る場合（Ｓ１０２：ＹＥＳ）、ＭＰ１２１は、周期フィールド２５３に登録されている周期と現在時刻とから次回の実行時刻を算出し、次回実行時刻フィールド２５２に記憶させる（Ｓ１０４）。ＭＰ１２１は、実行時期の到来した周期処理を実行し（Ｓ１０６）、Ｓ１０１に戻る。
【００８５】
なお、図１２において、ホストＩ／ＦスケジュールとディスクＩ／Ｆスケジュールの実行順序を入れ替えてもよい。つまり、ディスクＩ／ＦスケジュールをホストＩ／Ｆスケジュールよりも先に実行することもできる。
【００８６】
図１３は、ホストＩ／Ｆスケジュール処理を示す。図１３の処理は、図１２中にＳ１０３で示す処理の詳細である。ＭＰ１２１は、ホストＩ／Ｆ処理を実行した回数を示すＮｅｈの値をリセットし（Ｓ１１１）、ホストＩ／Ｆ同期処理キュー４１０をチェックする（Ｓ１１２）。
【００８７】
ＭＰ１２１は、ホストＩ／Ｆ同期処理キュー４１０に同期処理要求が有るか否かを判定する（Ｓ１１３）。同期処理要求がホストＩ／Ｆ同期処理キュー４１０に無い場合（Ｓ１１３：ＮＯ）、本処理は終了する。
【００８８】
ホストＩ／Ｆ同期処理キュー４１０に同期処理要求が有る場合（Ｓ１１３：ＹＥＳ）、ＭＰ１２１は、キュー４１０から同期処理要求を一つ取り出して、その同期処理を実行する（Ｓ１１４）。
【００８９】
ＭＰ１２１は、同期処理を一つ実行した後、ホストＩ／Ｆ処理の実行回数Ｎｅｈを１つインクリメントする（Ｓ１１５）。ＭＰ１２１は、実行回数Ｎｅｈが上限値ＵＬＮｅｈを超えたか否かを判定する（Ｓ１１６）。実行回数Ｎｅｈが上限値ＵＬＮｅｈを超えた場合（Ｓ１１６：ＹＥＳ）、本処理は終了する。実行回数Ｎｅｈが上限値ＵＬＮｅｈを超えていない場合（Ｓ１１６：ＮＯ）、Ｓ１１２に戻り、ホストＩ／Ｆ同期処理キュー４１０を再びチェックする。なお、Ｓ１１６では、実行回数Ｎｅｈが上限値ＵＬＮｅｈを超えたか否かを判定しているが（Ｎｅｈ＞ＵＬＮｅｈ）、それに代えて、実行回数Ｎｅｈが上限値ＵＬＮｅｈ以上であるか否かを判定する構成でもよい（Ｎｅｈ≧ＵＬＮｅｈ）。
【００９０】
図１４は、ディスクＩ／Ｆ処理スケジュールを示す。図１４の処理は、図１２中にＳ１０４で示す処理の詳細である。ＭＰ１２１は、ディスクＩ／Ｆ処理を実行した回数を示すＮｅｄの値をリセットし（Ｓ１２１）、ディスクＩ／Ｆ同期処理キュー４２０及びディスクＩ／Ｆ非同期処理キュー４３０をそれぞれチェックする（Ｓ１２２）。
【００９１】
ＭＰ１２１は、ディスクＩ／Ｆ同期処理キュー４２０またはディスクＩ／Ｆ非同期処理キュー４３０のいずれかに、処理要求が有るか否かを判定する（Ｓ１２３）。各キュー４２０，４３０のいずれにも処理要求が存在しない場合（Ｓ１２３：ＮＯ）、本処理は終了する。
【００９２】
ディスクＩ／Ｆ同期処理キュー４２０またはディスクＩ／Ｆ非同期処理キュー４３０のいずれかに処理要求がある場合（Ｓ１２３：ＹＥＳ）、ＭＰ１２１は、ディスクＩ／Ｆ同期処理またはディスクＩ／Ｆ非同期処理のいずれか一つを実行する。ディスクＩ／Ｆ同期処理キュー４２０に処理要求が有る場合、ＭＰ１２１は、その同期処理を実行する。ディスクＩ／Ｆ非同期処理キュー４３０に処理要求が有る場合、ＭＰ１２１は、その非同期処理を実行する。
【００９３】
ＭＰ１２１は、ディスクＩ／Ｆ処理の実行回数Ｎｅｄの値を１つインクリメントする（Ｓ１２５）。ＭＰ１２１は、実行回数Ｎｅｄが上限値ＵＬＮｅｄを超えたか否かを判定する（Ｓ１２６）。
【００９４】
なお、Ｓ１２６では、実行回数Ｎｅｄが上限値ＵＬＮｅｄを超えたか否かを判定しているが（Ｎｅｄ＞ＵＬＮｅｄ）、それに代えて、実行回数Ｎｅｄが上限値ＵＬＮｅｄ以上であるか否かを判定する構成でもよい（Ｎｅｄ≧ＵＬＮｅｄ）。
【００９５】
ＭＰ１２１は、ディスクＩ／Ｆ同期処理キュー４２０に蓄積された処理要求と、ディスクＩ／Ｆ非同期処理キュー４３０に蓄積された処理要求とを交替で実行する構成でもよいし、または、状況に応じて同期処理と非同期処理のいずれかを優先して実行する構成でもよい。例えば、キャッシュダーティ率が所定値以上の場合は、ディスクＩ／Ｆ非同期処理としてのホストデータＨＤＤライト処理を、ディスクＩ／Ｆ同期処理よりも先に実行する構成としてもよい。
【００９６】
図１５は、実行回数の上限値を見直す処理を示す。本処理は、周期的に実行される処理の一つであり、ストレージシステム１０の状況に応じて、実行回数の上限値ＵＬＮｅｈ，ＵＬＮｅｄを所定周期で更新する。これにより、ＭＰ１２１がホストＩ／Ｆ処理とディスクＩ／Ｆ処理とを適切な回数だけ実行することができる。
【００９７】
最初に、ＭＰ１２１は、図４に示すＭＰ稼働率テーブル２１０に基づいてＭＰ稼働率Ｕｍｐを参照する（Ｓ２０１）。ＭＰ１２１は、ＭＰ稼働率Ｕｍｐと図９に示す閾値テーブル２６０に記憶されているＭＰ稼働率の閾値ＴｈＵｍｐとを比較し、ＭＰ稼働率Ｕｍｐが閾値ＴｈＵｍｐ以上であるか否かを判定する（Ｓ２０２）。
【００９８】
ここで、ＭＰ１２１は、図４のテーブル２１０に記憶されている３つのＭＰ稼働率Ｕｍｐａ，Ｕｍｐｈ，Ｕｍｐｄと一つの閾値ＴｈＵｍｐとをそれぞれ比較し、いずれか一つのＭＰ稼働率が閾値ＴｈＵｍｐ以上であるか否かを判定する構成でもよい。または、図９に示すテーブルに、各ＭＰ稼働率Ｕｍｐａ，Ｕｍｐｈ，Ｕｍｐｄにそれぞれ対応する閾値ＴｈＵｍｐａ，ＴｈＵｍｐｈ，ＴｈＵｍｐｄを記憶し、ＵｍｐａとＴｈＵｍｐａ、ＵｍｐｈとＴｈＵｍｐｈ、ＵｍｐｄとＴｈＵｍｐｄをそれぞれ比較する構成でもよい。あるいは、全稼働率ＵｍｐａがＴｈＵｍｐ以上であるか否かのみを判定する構成でもよい。
【００９９】
ＭＰ稼働率が閾値ＴｈＵｍｐ以上の場合（Ｓ２０２：ＹＥＳ）、ＭＰ１２１は、図５に示すテーブル２２０でキャッシュダーティ率Ｃｄを参照する（Ｓ２０３）。ＭＰ１２１は、図９に示すテーブル２６０に記憶されている閾値ＴｈＣｄとテーブル２２０から取得されるキャッシュダーティ率Ｃｄとを比較し、キャッシュダーティ率Ｃｄが閾値ＴｈＣｄ以上であるか否かを判定する（Ｓ２０４）。
【０１００】
キャッシュダーティ率Ｃｄが閾値ＴｈＣｄ以上である場合（Ｓ２０４：ＹＥＳ）、ＭＰ１２１は、実行回数の上限値ＵＬを「ディスクＩ／Ｆ優先」の値ＵＬＮｅｈ３，ＵＬＮｅｄ３に設定する（Ｓ２０５）。
【０１０１】
つまり、ＭＰ稼働率Ｕｍｐが閾値ＴｈＵｍｐ以上であり（Ｓ２０２：ＹＥＳ）、かつ、キャッシュダーティ率Ｃｄが閾値ＴｈＣｄ以上の場合（Ｓ２０４：ＹＥＳ）、ディスクＩ／Ｆ処理を実行可能な上限値をＵＬＮｅｄ３に設定する。
【０１０２】
上述の通り、ディスクＩ／Ｆ優先時におけるディスクＩ／Ｆ処理の実行回数の上限値ＵＬＮｅｈ３は、ホストＩ／Ｆ処理の実行回数の上限値ＵＬＮｅｈ３よりも大きく設定されている。従って、ディスクＩ／Ｆ処理が優先的に処理される。その結果、ＣＭ１３１に溜まっているダーティ状態のデータは、ＨＤＤ１７０に書き込まれ、ＣＭ１３１の空き領域が増加する。
【０１０３】
キャッシュダーティ率Ｃｄが閾値ＴｈＣｄ未満の場合（Ｓ２０４：ＮＯ）、ＭＰ１２１は、実行回数の上限値ＵＬを、「同等」の値ＵＬＮｅｈ２，ＵＬＮｅｄ２に設定する（Ｓ２０６）。つまり、ＭＰ稼働率Ｕｍｐが閾値ＴｈＵｍｐ以上であり（Ｓ２０２：ＹＥＳ）、かつ、キャッシュダーティ率Ｃｄが閾値ＴｈＣｄ未満の場合（Ｓ２０４：ＮＯ）、ディスクＩ／Ｆ処理を実行可能な回数ＵＬＮｅｄ２とホストＩ／Ｆ処理を実行可能な回数ＵＬＮｅｈ２とを等しくする（ＵＬＮｅｄ２＝ＵＬＮｅｈ２）。これにより、ＣＭ１３１の空き領域を確保しながら、ホストコンピュータ１８０からのＩ／Ｏ要求を受け付けることができる。
【０１０４】
ＭＰ稼働率Ｕｍｐが閾値ＴｈＵｍｐ未満の場合（Ｓ２０２：ＮＯ）、ＭＰ１２１は、実行回数の上限値ＵＬを「ホストＩ／Ｆ優先」の値ＵＬＮｅｈ１，ＵＬＮｅｄ１に設定する（Ｓ２０７）。ＭＰ稼働率Ｕｍｐが閾値ＴｈＵｍｐ未満の場合は、ホストＩ／Ｆ処理を優先して実行し、ストレージシステム１０の応答性を高める。
【０１０５】
図１６−図１８を参照して、ホストデータＣＭリード処理を説明する。ホストデータＣＭリード処理とは、ホストコンピュータ１８０からのリード要求に従ってＣＭ１３１からデータを読出し、そのデータをホストＩ／Ｆ１１１からホストコンピュータ１８０に転送させる処理である。
【０１０６】
ＭＰ１３１は、ＦＥＰＫ１１０により受信されたコマンドを解析し（Ｓ３０１）、リード要求アドレスを参照する（Ｓ３０２）。リード要求アドレスとは、ホストコンピュータ１８０が読出しを要求しているデータの論理アドレス（ＬＢＡ）である。
【０１０７】
ＭＰ１２１は、リード要求アドレスに対応するキャッシュ領域が確保されているか否かを判定する（Ｓ３０３）。リード要求アドレスに対応するキャッシュ領域が確保されているか否かは、「キャッシュヒットしたか否か」と言い換えることができる。
【０１０８】
リード要求アドレスに対応するキャッシュ領域がＣＭ１３１上に確保されている場合（Ｓ３０３：ＹＥＳ）、即ち、キャッシュヒットの場合（Ｓ３０３：ＹＥＳ）、そのキャッシュ領域にはリード対象データ（図中、リードデータと略記）が記憶されている。
【０１０９】
そこで、ＭＰ１２１は、リード要求アドレスに対応するキャッシュ領域に記憶されているデータを、ＦＥＰＫ１１０のホストＩ／Ｆ１１１に転送する（Ｓ３０４）。ＭＰ１２１は、ホストＩ／Ｆ１１１からホストコンピュータ１８０へのデータ転送を要求すると共に、そのデータ転送が完了した旨の通知をホストＩ／Ｆ１１１からＭＰ１２１に送信するよう要求する（Ｓ３０４）。その後、ＭＰ１２１は、ホストＩ／Ｆ１１１からホストコンピュータ１８０へデータが転送されることと、そのデータ転送が完了した旨の通知をホストＩ／Ｆ１１１から受領することとを待つ（Ｓ３０５）。
【０１１０】
一方、リード要求アドレスに対応するキャッシュ領域が確保されていない場合（Ｓ３０３：ＮＯ）、ホストコンピュータ１８０の要求するデータがＣＭ１３１上に記憶されていない。そこで、ＭＰ１２１は、ディスクＩ／Ｆ同期処理キュー４２０に処理要求を一つ格納し（Ｓ３０６）、ディスクＩ／Ｆ１４１によりリード対象データがＨＤＤ１７０から読み出されてＣＭ１３１に記憶されるのを待つ（Ｓ３０７）。
【０１１１】
後述のように、ディスクＩ／Ｆ１４１が、ＨＤＤ１７０から読み出したリード対象データをＣＭ１３１に転送して記憶させると、ホストデータHDDリード処理を行っているＭＰ１２１が、リード対象データが記憶された位置を通知する。ホストデータＣＭリード処理を行っていたＭＰ１２１は、その通知の受領を待つ（Ｓ３０７）。
【０１１２】
図１７は、図１６に続く処理を示す。ディスクＩ／Ｆ１４１が、リード対象データをＨＤＤ１７０から読み出してＣＭ１３１に転送すると、ホストデータHDDリード処理を行っているＭＰ１２１が、リード対象データを記憶させた位置を通知する。ホストデータＣＭリード処理を行っていたＭＰ１２１が、その通知を受領すると、図１７に示す処理が開始される。
【０１１３】
ＭＰ１２１は、リード対象データの記憶されている位置を知らせる通知を解析する（Ｓ３１１）。続いて、ＭＰ１２１は、ホストＩ／Ｆ１１１にＣＭ１３１上のリード対象データを転送し、かつ、ホストコンピュータ１８０へのデータ転送が完了した旨の通知を送るようにホストＩ／Ｆ１１１に要求する（Ｓ３１２）。ＭＰ１３１は、ホストコンピュータ１８０へのデータ送信が完了した旨の通知がホストＩ／Ｆ１１１から送られてくるまで待機する（Ｓ３１３）。
【０１１４】
図１８は、図１７（または図１６）に続く処理を示す。ＭＰ１２１は、ホストＩ／Ｆ１１１からの完了通知を受信すると、その通知の内容を解析し、ホストデータＣＭリード処理を終了する（Ｓ３２１）。
【０１１５】
図１９−図２１を参照してホストデータＣＭライト処理を説明する。ホストデータＣＭライト処理とは、ホストコンピュータ１８０からのライト要求に従って、ホストコンピュータ１８０から受領したライト対象データをＣＭ１３１に記憶させる処理である。
【０１１６】
ＭＰ１２１は、ホストＩ／Ｆ１１１の受信したコマンドを解析し（Ｓ４０１）、そのコマンドに含まれているライト要求アドレスを参照する（Ｓ４０２）。ＭＰ１２１は、ライト要求アドレスに対応するキャッシュ領域がＣＭ１３１上に確保されているか否かを判定する（Ｓ４０３）。
【０１１７】
ライト要求アドレスに対応するキャッシュ領域がＣＭ１３１上に確保されていない場合（Ｓ４０３：ＮＯ）、ＭＰ１２１は、ライト要求アドレスに対応するキャッシュ領域をＣＭ１３１上に確保する（Ｓ４０４）。
【０１１８】
ＭＰ１２１は、ライト要求アドレスに対応するキャッシュ領域をＣＭ１３１上に確保すると、ホストＩ／Ｆ１１１にホストコンピュータ１８０からのデータを受信するよう要求する（Ｓ４０５）。ＭＰ１２１は、ホストコンピュータ１８０からのデータの受信が完了した旨の通知が、ホストＩ／Ｆ１１１が送られてくるのを待つ（Ｓ４０６）。
【０１１９】
図２０は、図１９に続く処理を示すフローチャートである。ホストＩ／Ｆ１１１は、ホストコンピュータ１８０からのデータ受信が完了すると、データ受信が完了した旨の通知をＭＰ１２１に送信する。ＭＰ１２１は、ホストＩ／Ｆ１１１からの通知結果を解析する（Ｓ４１１）。
【０１２０】
ＭＰ１２１は、ＨＤＤ１７０に未だ書き込まれていないデータ（ダーティ状態にあるデータである。ダーティデータとも呼ぶ。）のＣＭ１３１上における記憶位置を設定し、かつ、ダーティデータの量を加算する（Ｓ４１２）。即ち、ＭＰ１２１は、ダーティデータの書込先アクセスを記憶し、かつ、ダーティデータの総量を更新する（Ｓ４１２）。
【０１２１】
ＭＰ１２１は、ホストコンピュータ１８０にライト完了通知を送信するよう、ホストＩ／Ｆ１１１に要求する（Ｓ４１３）。ＭＰ１２１は、ライト完了通知がホストコンピュータ１８０に送信されたことを示す通知がホストＩ／Ｆ１１１から送られてくるのを待つ（Ｓ４１４）。
【０１２２】
図２１は、図２０に続く処理を示す。ＭＰ１２１は、ライト完了通知を送信した旨の通知をホストＩ／Ｆ１１１から受信すると、その結果を解析して、ホストデータＣＭライト処理を終了する（Ｓ４２１）。
【０１２３】
図２２，図２３を参照してホストデータＨＤＤリード処理を説明する。ホストデータＨＤＤリード処理とは、ホストコンピュータ１８０から要求されたデータをＨＤＤ１７０から読み出してＣＭ１３１に記憶させる処理であり、ステージング処理とも呼ばれる。
【０１２４】
ＭＰ１２１は、リード要求アドレスを参照し（Ｓ５０１）、リード要求アドレスに対応するキャッシュ領域がＣＭ１３１上に確保されているか否かを判定する（Ｓ５０２）。キャッシュ領域が確保されていない場合（Ｓ５０２：ＮＯ）、ＭＰ１２１は、キャッシュ領域を確保する（Ｓ５０３）。
【０１２５】
ＭＰ１２１は、ディスクＩ／Ｆ１４１にデータの受信を要求する（Ｓ５０４）。即ち、ＭＰ１２１は、ディスクＩ／Ｆ１４１に対して、ＨＤＤ１７０からデータを読み出すように要求する。そして、ＭＰ１２１は、ディスクＩ／Ｆ１４１によるＨＤＤ１７０からのデータ読出しの完了を待つ（Ｓ５０５）。
【０１２６】
図２３は、図２２に続く処理を示す。ＭＰ１２１は、ディスクＩ／Ｆ１４１からデータ受信が完了した旨の通知を受領すると、その受信結果を解析する（Ｓ５１１）。ＭＰ１２１は、ホストデータＣＭリード処理（図１７のＳ３１１）に、ＨＤＤ１７０から読み出されてＣＭ１３１に記憶されたデータの位置を通知する（Ｓ５１２）。
【０１２７】
図２４，図２５を参照してホストデータＨＤＤライト処理を説明する。ホストデータＨＤＤライト処理とは、ＣＭ１３１に記憶されているダーティデータをＨＤＤ１７０に書き込ませる処理であり、デステージ処理とも呼ばれる。
【０１２８】
ＭＰ１２１は、ライト要求アドレスを参照し（Ｓ６０１）、ディスクＩ／Ｆ１４１にデータの送信を要求する（Ｓ６０２）。ＭＰ１２１は、ディスクＩ／Ｆ１４１によるデータ送信が完了した旨の通知を待つ（Ｓ６０３）。
【０１２９】
ディスクＩ／Ｆ１４１によるデータ送信とは、ディスクＩ／Ｆ１４１が、ＣＭ１３１に記憶されているデータ（ライト対象データであり、ダーティ状態のデータでもある。）を、ＨＤＤ１７０に転送して書き込ませることを意味する。
【０１３０】
図２５は、図２４に続く処理を示す。ＭＰ１２１は、ディスクＩ／Ｆ１４１から受領した通知を解析する（Ｓ５１１）。ＭＰ１２１は、その解析結果に基づいて、図２０のＳ４１２で設定されたダーティデータの位置を解除し、さらに、ダーティデータの総量を減少させる（Ｓ５１２）。
【０１３１】
つまり、ＭＰ１２１は、ＣＭ１３１に記憶されているダーティデータのうち、ディスクＩ／Ｆ１４１によりＨＤＤ１７０に転送されたデータの属性を「ダーティ状態」から「クリーン状態」に変更し、かつ、ＨＤＤに転送されたデータのサイズだけダーティデータの総量を減少させる（Ｓ５１２）。
【０１３２】
図２６は、ユーザが管理コンソール２０を用いて各種設定を行うための処理を示す。管理コンソール２０は、図２７に示すメニュー画面Ｇ１０を表示し（Ｓ７０１）、ユーザによる入力操作が開始されるのを待つ（Ｓ７０２）。
【０１３３】
ユーザは、メニュー画面Ｇ１０を介して、実行回数の上限値または閾値等を入力する（Ｓ７０２）。管理コンソール２０は、ユーザによる入力操作が終了するまで待機する（Ｓ７０３）。ユーザは、メニュー画面Ｇ１０に入力した値を確定させる場合、保存ボタンＢ１０を操作する。逆に、入力した値を取り消したい場合、ユーザは、キャンセルボタンＢ１１を操作する。
【０１３４】
ユーザの入力が終了して保存ボタンＢ１０が操作されると、管理コンソール２０は、ユーザにより入力された設定値を保存する（Ｓ７０４）。さらに、管理コンソール２０は、ユーザの入力した設定値をストレージシステム１０のコントローラ１００に送信して、設定させる（Ｓ７０５）。
【０１３５】
図２７は、メニュー画面Ｇ１０の一例を示す。メニュー画面Ｇ１０は、複数の設定部Ｇ１１，Ｇ１２を備える。第１の設定部Ｇ１１は、実行回数の上限値を設定するためのものである。第２の設定部Ｇ１２は、実行回数の上限値を見直す処理を起動させるための閾値を設定するものである。なお、管理コンソール２０からストレージシステム１０に設定可能な情報は、上記の上限値及び閾値に限定されない。
【０１３６】
このように構成される本実施例によれば、各マイクロプロセッサ１２１が同期処理と非同期処理とを実行できる。従って、ＭＰ１２１を効率よく使用することができる。
【０１３７】
本実施例では、ＭＰ１２１が同期処理または非同期処理のいずれか一方だけを長時間にわたって実行することを抑制できる。さらに、本実施例では、Ｓ２０１、Ｓ２０７、Ｓ２０４、Ｓ２０６、Ｓ２０５に示す通り、ホストＩ／Ｆ処理（同期処理）を実行可能な回数の上限値と、ディスクＩ／Ｆ処理（非同期処理と同期処理）を実行可能な回数の上限値とを、ストレージシステム１０の状況に応じて変更する。従って、ホストコンピュータ１８０からのＩ／Ｏ要求に対するレスポンスを改善と、ＭＰ１２１の有効利用とを両立させることができる。
【０１３８】
本実施例では、Ｓ１１６、Ｓ１２６に示す通り、ホストＩ／Ｆ処理とディスクＩ／Ｆ処理とに分けて、それぞれを実行可能な回数の上限値を周期的に設定する。従って、稼働状況が種々変化した場合でも、Ｉ／Ｏ要求のレスポンスを改善でき、かつ、ＭＰ１２１を無駄なく利用できる。
【０１３９】
図３５の上から第１段目−第３段目は、本実施例によるＭＰ１２１の稼働状況を模式的に示す。第１段目には「ホストＩ／Ｆ優先」モードが適用されるＭＰ＃１が示されており、第２段目には「ディスクＩ／Ｆ優先」モードが適用されるＭＰ＃２が示されており、第３段目には「同等」モードが適用されるＭＰ＃３が示されている。
【０１４０】
ホストＩ／Ｆ優先モードのＭＰ＃１は、ホストＩ／Ｆ処理（ホストデータＣＭリード処理及びホストデータＣＭライト処理）を優先して、より多く実行し、ディスクＩ／Ｆ処理（ホストデータＨＤＤリード処理及びホストデータＨＤＤライト処理）をより少なく実行する。逆に、ディスクＩ／Ｆ優先モードのＭＰ＃２は、ディスクＩ／Ｆ処理を優先してより多く実行し、ホストＩ／Ｆ処理をより少なく実行する。同等モードのＭＰ＃３は、ホストＩ／Ｆ処理とディスクＩ／Ｆ処理とを平等に実行する。各モードのＭＰ＃１−＃３は、隙間無く同期処理または非同期処理を実行する。
【実施例２】
【０１４１】
図２８を参照して第２実施例を説明する。本実施例を含む以下の各実施例は、第１実施例の変形例に該当する。そこで、本実施例を含む以下の各実施例では、第１実施例との相違を中心に説明する。
【０１４２】
図２８は、実行回数上限チューニングテーブル２３０Ａ及び実行回数テーブル２４０Ａを示す。本実施例では、第１実施例のホストＩ／Ｆ優先モード、ディスクＩ／Ｆ優先モード、両Ｉ／Ｆ同等モードに代えて、同期処理優先モード、非同期処理優先モード、同等モードを採用している。
【０１４３】
第１実施例との関係で言えば、同期処理には、例えば、ホストデータＣＭリード処理、ホストデータＣＭライト処理、ホストデータＨＤＤリード処理等がある。非同期処理には、例えば、ホストデータＨＤＤライト処理等があある。
【０１４４】
同期処理優先モードは、同期処理を優先して実行するモードである。同期処理優先モードでは、同期処理を実行可能な上限値ＵＬＮｅｓ１が非同期処理を実行可能な上限値ＵＬＮｅａｓ１よりも大きく設定される（ＵＬＮｅｓ１＞ＵＬＮｅａｓ１）。
【０１４５】
非同期処理優先モードは、非同期処理を優先して実行するモードである。非同期処理優先モードでは、同期処理を実行可能な上限値ＵＬＮｅｓ２が非同期処理を実行可能な上限値ＵＬＮｅａｓ２よりも小さく設定される（ＵＬＮｅｓ２＜ＵＬＮｅａｓ２）。
【０１４６】
同等モードは、同期処理と非同期処理を平等に実行するモードである。同等モードでは、同期処理を実行可能な上限値ＵＬＮｅｓ３と非同期処理を実行可能な上限値ＵＬＮｅａｓ３とが等しい値に設定される（ＵＬＮｅｓ３＝ＵＬＮｅａｓ３）。
【０１４７】
このように、ホストＩ／Ｆ処理とディスクＩ／Ｆ処理という観点に代えて、同期処理と非同期処理という観点から、ＭＰ１２１を効率的に使用することもできる。本実施例では、各ＭＰ１２１が同期処理と非同期処理とをそれぞれの上限値まで実行可能であり、各ＭＰ１２１を無駄なく利用できる。
【実施例３】
【０１４８】
図２９−図３５を参照して第３実施例を説明する。本実施例では、ホストＩ／Ｆ優先モード、ディスクＩ／Ｆ優先モード、両Ｉ／Ｆ同等モードに加えて、ホストＩ／Ｆ処理を専門に担当するモードと、ディスクＩ／Ｆ処理を専門に担当するモードとを追加する。
【０１４９】
図２９は、ＬＭ１２２の記憶内容を示す。本実施例では、図２に示す構成に比較して、新たにＭＰ設定情報テーブル２９０が追加されている。
【０１５０】
図３０は、ＭＰ設定情報テーブル２９０の構成を示す。このテーブル２９０は、各ＭＰ１２１に設定されている情報を管理する。ＭＰ設定情報テーブル２９０は、ＭＰ番号フィールド２９１と、属性フラグフィールド２９２とを備える。
【０１５１】
ＭＰ番号フィールド２９１は、各ＭＰ１２１を識別する番号を記憶する。属性フラグフィールド２９２は、各ＭＰ１２１に設定されている属性（モード）を記憶する。モードには、ホストＩ／Ｆ優先モード、ディスクＩ／Ｆ優先モード、両Ｉ／Ｆ同等モード、ホストＩ／Ｆ担当モード、ディスクＩ／Ｆ担当モードがある。
【０１５２】
ホストＩ／Ｆ担当モードとは、ホストＩ／Ｆ処理を専門に担当するモードである。ディスクＩ／Ｆ担当モードとは、ディスクＩ／Ｆ処理を専門に担当するモードである。
【０１５３】
図３１は、Ｉ／Ｏ処理を示す。ＭＰ１２１は、前回から一定時間が経過したか否かを判定する（Ｓ８０１）。一定時間が経過している場合（Ｓ８０１：ＹＥＳ）、ＭＰ１２１は、現在時刻を登録し（Ｓ８０２）、続いて、テーブル２９０に記憶されている属性フラグを参照する（Ｓ８０３）。
【０１５４】
ＭＰ１２１は、種々の情報に基づいてモードを切り換えるべきか否かを判定し、必要と判断した場合はモードを切り換える（Ｓ８０４）。モードを切り換える処理の一例は、図３４で説明する。モードを切り換える場合、未処理の要求の有無をチェックし、未処理要求がある場合は、それを実行して完了させる。
【０１５５】
一定時間が経過していない場合（Ｓ８０１：ＮＯ）、ＭＰ１２１は、各キュー４１０−４３０をチェックし（Ｓ８０５）、処理要求を発見した場合は（Ｓ８０６：ＹＥＳ）、その処理要求を実行する（Ｓ８０７）。
【０１５６】
なお、ＭＰ１２１は、自分に設定されているモードに応じて各キュー４１０−４３０の全部または一部をチェックする。第１実施例との関連では、ホストＩ／Ｆ担当モードに設定されているＭＰは、ホストＩ／Ｆ同期処理キュー４１０のみをチェックすればよく、ディスクＩ／Ｆ同期処理キュー４２０及びディスクＩ／Ｆ非同期処理キュー４３０をチェックする必要はない。同様に、ディスクＩ／Ｆ担当モードに設定されているＭＰは、ディスクＩ／Ｆ同期処理キュー４２０及びディスクＩ／Ｆ非同期処理キュー４３０のみをチェックすればよく、ホストＩ／Ｆ同期処理キュー４１０をチェックする必要はない。
【０１５７】
図３２は、ホストＩ／Ｆ担当モードに設定されたＭＰの処理を示す。ホストＩ／Ｆに関する処理を専門に担当するＭＰ１２１は、キューから取り出した処理要求を解析し（Ｓ８１１）、解析結果に応じてそれぞれの処理に分岐する（Ｓ８１２）。ＭＰ１２１は、ホストデータＣＭリード処理（Ｓ８１３）またはホストデータＣＭライト処理（Ｓ８１４）を実行する。
【０１５８】
図３３は、ディスクＩ／Ｆ担当モードに設定されたＭＰの処理を示す。ディスクＩ／Ｆに関する処理を専門に担当するＭＰ１２１は、キューから取り出した処理要求を解析し（Ｓ８２１）、解析結果に応じてそれぞれの処理に分岐する（Ｓ８２２）。ＭＰ１２１は、ホストデータＨＤＤリード処理（Ｓ８２３）またはホストデータＨＤＤライト処理（Ｓ８２４）を実行する。
【０１５９】
図３４は、ＭＰ属性（モード）を切り換えるための処理を示す。ＭＰ１２１は、例えば、ＭＰ稼働率、キャッシュダーティ率、キューに溜まった同期処理要求の数、キューに溜まった非同期処理要求の数、ホストＩ／Ｆの数、ディスクＩ／Ｆの数、ＭＰ１２１の数、ホストＩ／Ｆ優先モードまたはホストＩ／Ｆ担当モードに設定されているＭＰの数、ディスクＩ／Ｆ優先モードまたはディスクＩ／Ｆ担当モードに設定されているＭＰの数等に基づいて、属性変更のための指標値を算出する（Ｓ９０１）。
【０１６０】
ＭＰ１２１は、算出された指標値と予め設定されている切換用基準値とを比較し、ホストＩ／Ｆ担当モードに切り換えるか、それともディスクＩ／Ｆ担当モードに切り換えるかを判定する（Ｓ９０３）。
【０１６１】
ＭＰ１２１は、ホストＩ／Ｆ担当モードに切り換えるべきと判定した場合、ホストＩ／Ｆ担当モードに切り換える（Ｓ９０４）。これとは逆に、ＭＰ１２１は、ディスクＩ／Ｆ担当モードに切り換えるべきと判定した場合、ディスクＩ／Ｆ担当モードに切り換える（Ｓ９０５）。
【０１６２】
図３５は、各モードが適用されるＭＰの稼働状況を模式的に示す。ＭＰ＃１−＃３については第１実施例で述べたので説明を省略する。第４段目のＭＰ＃４は、ホストＩ／Ｆ担当モードに設定されている。第５段目のＭＰ＃５は、ディスクＩ／Ｆ担当モードに設定されている。
【０１６３】
ホストＩ／Ｆ担当モードのＭＰ＃４は、ホストＩ／Ｆ１１１に関する処理のみを実行し、ディスクＩ／Ｆ担当モードのＭＰ＃５は、ディスクＩ／Ｆ１４１に関する処理のみを実行する。従って、ホストＩ／Ｆ同期処理キュー４１０に処理要求が無い場合、ＭＰ＃４はアイドル状態となる。同様に、ディスクＩ／Ｆ同期処理キュー４２０及びディスクＩ／Ｆ非同期処理キュー４３０のいずれにも処理要求が無い場合、ＭＰ＃５は、アイドル状態となる。
【０１６４】
従って、本実施例では、ホストＩ／Ｆ担当モードまたはディスクＩ／Ｆ担当モードに設定されたＭＰの使用効率が第１実施例よりも低下する。しかし、ホストＩ／Ｆに関する処理、または、ディスクＩ／Ｆに関する処理を専門に担当するＭＰを設けるため、急にホストコンピュータからのＩ／Ｏ要求が増大した場合でも、レスポンスを悪化させることなく、処理することができる。
【実施例４】
【０１６５】
図３６−図４０を参照して第４実施例を説明する。本実施例では、同期処理を専門に担当するＭＰと、非同期処理を専門に担当するＭＰとを設ける。以下、同期処理専門のＭＰと非同期処理専門のＭＰとを設ける点を中心に説明する。
【０１６６】
図３６は、ＭＰ設定情報テーブル２９０Ａを示す。ＭＰ設定情報テーブル２９０Ａは、ＭＰ番号フィールド２９１と、同期ＭＰフラグフィールド２９２Ａとを備える。同期ＭＰフラグとは、同期処理担当のＭＰであるのか否かを示す情報である。同期ＭＰフラグに１がセットされている場合（同期ＭＰフラグ＝１）、そのＭＰは同期処理を担当するＭＰである。同期ＭＰフラグに０がセットされている場合（同期ＭＰフラグ＝０）、そのＭＰは非同期処理を担当するＭＰである。
【０１６７】
図３７は、Ｉ／Ｏ処理を示す。ＭＰ１２１は、前回から一定時間が経過したか否かを判定する（Ｓ１００１）。一定時間が経過している場合（Ｓ１００１：ＹＥＳ）、ＭＰ１２１は、現在時刻を登録し（Ｓ１００２）、テーブル２９０Ａに記憶されているフラグを参照する（Ｓ１００３）。
【０１６８】
ＭＰ１２１は、種々の情報に基づいてＭＰ属性を切り換えるべきか否かを判定し、必要と判断した場合はＭＰ属性を切り換える（Ｓ１００４）。ＭＰ属性を切り換える処理の一例は、図４０で説明する。ＭＰ属性を切り換える場合、未処理の要求の有無をチェックし、未処理要求がある場合は、それを実行して完了させる。
【０１６９】
一定時間が経過していない場合（Ｓ１００１：ＮＯ）、ＭＰ１２１は、各キュー４１０−４３０をチェックし（Ｓ１００５）、処理要求を発見した場合は（Ｓ１００６：ＹＥＳ）、その処理要求を実行する（Ｓ１００７）。
【０１７０】
なお、第１実施例との関連では、同期処理担当のＭＰは、ホストＩ／Ｆ同期処理キュー４１０及びディスクＩ／Ｆ同期処理キュー４２０のみをチェックすればよい。非同期処理担当のＭＰは、ディスクＩ／Ｆ非同期処理キュー４３０のみをチェックすればよい。
【０１７１】
図３８は、同期処理担当に設定されたＭＰの処理を示す。同期処理を専門に担当するＭＰ１２１は、キューから取り出した処理要求を解析し（Ｓ１０１１）、解析結果に応じてそれぞれの処理に分岐する（Ｓ１０１２）。ＭＰ１２１は、ホストデータＣＭリード処理（Ｓ１０１３）、または、ホストデータＣＭライト処理（Ｓ１０１４）、または、ホストデータＨＤＤリード処理（Ｓ１０１５）のいずれかを実行する。なお、その他の同期処理を実行可能な構成としてもよい。
【０１７２】
図３９は、非同期処理担当に設定されたＭＰの処理を示す。非同期処理を専門に担当するＭＰ１２１は、キューから取り出した処理要求を解析し（Ｓ１０２１）、解析結果に応じてそれぞれの処理に分岐する（Ｓ１０２２）。ＭＰ１２１は、ホストデータＨＤＤライト処理（Ｓ１０２３）、または、その他の非同期処理（Ｓ１０２４）を実行する。
【０１７３】
その他の非同期処理としては、例えば、非同期ローカルコピー処理、非同期リモートコピー処理、コピー機能の初期コピー処理、オーナ権移動処理、障害回復処理、構成変更処理、論理ボリュームの設定処理、ストレージシステムの構成を変更する処理、フォーマット処理等を挙げることができる。
【０１７４】
図４０は、ＭＰ属性を切り換えるための処理を示す。ＭＰ１２１は、例えば、ＭＰ稼働率、キャッシュダーティ率、キューに溜まった同期処理要求の数、キューに溜まった非同期処理要求の数、ホストＩ／Ｆの数、ディスクＩ／Ｆの数、ＭＰ１２１の数、ホストＩ／Ｆ優先モードまたはホストＩ／Ｆ担当モードに設定されているＭＰの数、ディスクＩ／Ｆ優先モードまたはディスクＩ／Ｆ担当モードに設定されているＭＰの数等の情報に基づいて、関数を計算する（Ｓ１１０１）。
【０１７５】
例えば、ＭＰ１２１は、同期処理を担当するＭＰの数を決定するための関数Ｎｓｍｐと、非同期処理を担当するＭＰの数を決定するための関数Ｎａｓｍｐとを計算する（Ｓ１１０１）。Ｎｓｍｐは式（１）で算出される。Ｎａｓｍｐは式（２）で算出される。以下、同期処理を担当するＭＰを同期ＭＰと、非同期処理を担当するＭＰを非同期ＭＰと呼ぶ場合がある。
【０１７６】
【数１】
0005393893.tif 000002
【０１７７】
【数２】
0005393893.tif 000003
【０１７８】
式（１）及び式（２）の両方について、各種変数に入る値は、下記の通りである。
ｌ：ホストＩ／Ｆ（ポート）の搭載数、
Ｌ：ホストＩ／Ｆ（ポート）の搭載可能な最大数、
ｍ：ＨＤＤ１７０の搭載数、Ｍ：ＨＤＤ１７０の搭載可能な最大数、
ｎ：ＭＰ１２１の搭載数、
ａ：ＲＡＩＤレベル１に対応したＲＡＩＤグループ（又はＨＤＤ１７０）の数、
ｂ：ＲＡＩＤレベル５に対応したＲＡＩＤグループ（又はＨＤＤ１７０）の数、
ｃ：ＲＡＩＤレベル６に対応したＲＡＩＤグループ（又はＨＤＤ１７０）の数、
ｐ：非同期ローカルコピーに対応したＨＤＤ１７０（又は、ボリュームペア及び／又は論理ボリューム）の数、
ｑ：キャッシュ常駐機能に対応したＨＤＤ１７０（又は、ボリュームペア及び／又は論理ボリューム）の数、
ｆｌｏｏｒ（ｘ）：ｘ以下最大の整数を表す関数；
ｃｅｉｌ（ｘ）：ｘ以上最小の整数を表す関数。
【０１７９】
Ｎｓｍｐ及びＮａｓｍｐの一方の値がゼロになった場合、一方に１を加算し、他方から１を減じることができる。なお、キャッシュ常駐機能とは、論理ボリューム内のデータの少なくとも一部をＣＭ１３１に常時保持させておき、Ｉ／Ｏ要求のレスポンスを改善させる機能である。
【０１８０】
上記式（１）及び式（２）は、ホストＩ／Ｆ１１１の数が増えれば同期処理がより必要になり、一方、ＨＤＤ１７０の数が増えれば非同期処理がより必要になるという考えがベースになっている。具体的には、上記式（１）及び式（２）は、下記式（３）及び式（４）がそれぞれベースとなっている。
【０１８１】
【数３】
0005393893.tif 000004
【０１８２】
【数４】
0005393893.tif 000005
【０１８３】
ここで、ｋは、ｍを含んだ計算式であり、ｍの値が増加すれば増加する。式（１）〜式（４）によれば、ｋに、ａ、ｂ、ｃ、ｐ及びｑが要素として含まれている。本実施形態では、ｍが、必須の要素であり、それ以外の要素は、必ずしもｋに含まれなくて良い。ｋには、ａ、ｂ及びｃの少なくとも一つが含まれて、ｐ及びｑが含まれなくても良いし、ｐ及びｑの少なくとも一方が含まれて、ａ、ｂ及びｃのいずれも含まれなくても良い。
【０１８４】
上記式（１）〜式（４）は、ＨＤＤ１７０にアクセスする回数が増えれば非同期処理がより必要になるという考えがベースになっている。
【０１８５】
具体的には、ａ、ｂ及びｃの係数が、１，２，３となっているのは（係数はそれぞれ一例である）、ＲＡＩＤ１、ＲＡＩＤ５及びＲＡＩＤ６のうち、ＲＡＩＤ１が、ＨＤＤ１７０にアクセスする回数が最も少なくて済み、ＲＡＩＤ５が、１ストライプにつき１個のパリティを生成する観点からＲＡＩＤ１の次にアクセス回数が少なくて済み、ＲＡＩＤ６が、１ストライプにつき２個のパリティを生成する観点から最もアクセス回数が多くなると考えられるからである。
【０１８６】
また、ｐが増加すればｋが増加するようになっているのは（例えば、ｐが加算されるようになっているのは）、非同期ローカルコピーが行われると、Ｉ／Ｏ要求に従うアクセスとは関係無しにＨＤＤ１７０にアクセスされるからである。
【０１８７】
また、ｑが増加すればｋが減少するようになっているのは（例えば、ｑが減算されるようになっているのは）、キャッシュ常駐機能に対応した論理ボリュームのＬＵＮを含んだＩ／Ｏ要求が受け付けられても、ＣＭ１３１へのアクセスで足り、その論理ボリュームの基になっているＨＤＤ１７０にアクセスされないからである。
【０１８８】
ＭＰ１２１は、算出されたＮｓｍｐと現在の同期ＭＰ数とを比較し、且つ、算出されたＮａｓｍｐと現在の非同期ＭＰ数とを比較し（Ｓ１１０２）、同期ＭＰ数および非同期ＭＰ数を変更する必要があるか否かを判定する（Ｓ１１０３）。現在の同期ＭＰ数は、同期ＭＰフラグの値が"１"であるエントリの合計数であり、現在の非同期ＭＰ数は、同期ＭＰフラグの値が"０"であるエントリの合計数である。
【０１８９】
Ｓ１１０２の結果、現在の同期ＭＰ数がＮｓｍｐと等しく、且つ、現在の非同期ＭＰ数がＮａｓｍｐと等しい場合（Ｓ１１０３：ＮＯ）、本処理は終了する。
【０１９０】
Ｓ１１０２の結果、現在の非同期ＭＰ数がＮａｓｍｐより少なければ（Ｓ１１０３：ＹＥＳ１）、ＭＰ１２１は、任意の同期ＭＰを一つ選択し、その同期ＭＰに対応した同期ＭＰフラグの値を"１"から"０"に変更する（Ｓ１１０４）。
【０１９１】
Ｓ１１０２の結果、現在の同期ＭＰ数がＮｓｍｐより少なければ（Ｓ１１０３：ＹＥＳ２）、ＭＰ１２１は、任意の非同期ＭＰを一つ選択し、その非同期ＭＰに対応した同期ＭＰフラグの値を"０"から"１"に変更する（Ｓ１１０５）。
【０１９２】
Ｓ１１０４及び／またはＳ１１０５において、同期ＭＰまたは非同期ＭＰは、ランダムに選択されてもよい。また、選択される同期ＭＰまたは非同期ＭＰは、一定時間以内の処理実行時間である稼働率が低いＭＰ（例えば、稼働率が同期ＭＰ群あるいは非同期ＭＰ群のなかで最も低いＭＰ）であっても良い。
【０１９３】
このように構成される本実施例では、同期処理を担当するＭＰと、非同期処理を担当するＭＰとを第１実施例の構成に追加するため、例えば、同期処理が集中した場合、または、非同期処理を多量に実行しなくてはならない場合にも対応することができる。
【実施例５】
【０１９４】
図４１を参照して第５実施例を説明する。本実施例では、リモートコピー処理を実行するための構成例を説明する。
【０１９５】
図４１はコンピュータシステムの全体図である。コンピュータシステムは、ローカルサイトとリモートサイトを備える。ローカルサイトは、ホストコンピュータ１８０と、通信ネットワーク１９０と、ストレージシステム１０を備える。リモートサイトは、他の通信ネットワーク１９０ｂと、他のストレージシステム１０ｂを備える。
【０１９６】
ローカルサイトのストレージシステム１０は、コピー元の論理ボリューム（以下、コピー元ボリューム）１７１Ｐを有する。リモートサイトの他のストレージシステム１０ｂは、コピー先の論理ボリューム（以下、コピー先ボリューム）１７１Ｓを有する。コピー元ボリューム１７１Ｐとコピー先ボリューム１７１Ｓとは、リモートコピーペアを形成している。
【０１９７】
図４１に示す構成において、同期リモートコピーの場合は、ホストコンピュータ１８０によるコピー元ボリューム１７１Ｐへのデータ書込みに同期して、コピー先ボリューム１７１Ｓにデータが転送される。
【０１９８】
非同期リモートコピーの場合、ホストコンピュータ１８０がコピー元ボリューム１７１Ｐにデータを書き込んだ後、別のタイミングで、そのデータがコピー先ボリューム１７１Ｓに転送される。
【実施例６】
【０１９９】
図４２を参照して第６実施例を説明する。本実施例では、一連の処理を複数のＭＰ１２１が分担して実行する場合を説明する。
【０２００】
図４２は、ホストコンピュータ１８０から要求されたデータをＨＤＤ１７０から読み出してＣＭ１３１に転送させる処理を示す。図４２の処理は、図２２の処理を複数のＭＰ１２１で分担する場合を示す。
【０２０１】
第１のＭＰ１２１は、リード要求を参照し（Ｓ１２０１）、リード要求に対応するキャッシュ領域がＣＭ１３１上に確保されているか否かを判定する（Ｓ１２０２）。キャッシュ領域が確保されていない場合（Ｓ１２０２：ＮＯ）、第１のＭＰ１２１は、キャッシュ領域をＣＭ１３１上に確保する（Ｓ１２０３）。第１のＭＰ１２１は、リード要求の処理を続行すべき旨の通知を、ＬＭ１２２に記憶させる（Ｓ１２０４）。
【０２０２】
第２のＭＰ１２１は、ＬＭ１２２をチェックしてその通知を検出すると（Ｓ１２０５）、ＨＤＤ１７０からのデータ受信をディスクＩ／Ｆ１４１に要求する（Ｓ１２０６）。第２のＭＰ１２１は、ディスクＩ／Ｆ同期処理キュー４２０に処理要求を格納させる。第２のＭＰ１２１は、ディスクＩ／Ｆ１４１がＨＤＤ１７０からデータを読み出してＣＭ１３１上に確保されたキャッシュ領域に転送するのを待つ（Ｓ１２０７）。
【０２０３】
図２４に示すホストデータＨＤＤライト処理も、複数のＭＰ１２１で分担して実行する構成にできる。図２４のＳ６０１を第１のＭＰ１２１で実行し、Ｓ６０１の実行が完了した旨の通知をＬＭ１２２に格納し、第２のＭＰ１２１がその通知を検出して、Ｓ６０２及びＳ６０３を実行する構成としてもよい。
【０２０４】
なお、本発明は、上述した実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【符号の説明】
【０２０５】
１０：ストレージシステム、２０：管理コンソール、１００：コントローラ、１１０：フロントエンドパッケージ（ＦＥＰＫ）、１１１：ホストインタフェース、１２０：マイクロプロセッサパッケージ（ＭＰＰＫ）、１２１：マイクロプロセッサ（ＭＰ）、１２２：ローカルメモリ、１３０：キャッシュメモリパッケージ（ＣＭＰＫ）、１３１：キャッシュメモリ（ＣＭ）、１４０：バックエンドパッケージ（ＢＥＰＫ）、１４１：ディスクインタフェース、１７０：ストレージデバイス（ＨＤＤ）、１７１：論理ボリューム、１８０：ホストコンピュータ。
【図１】
0005393893.tif 000006
【図２】
0005393893.tif 000007
【図３】
0005393893.tif 000008
【図４】
0005393893.tif 000009
【図５】
0005393893.tif 000010
【図６】
0005393893.tif 000011
【図７】
0005393893.tif 000012
【図８】
0005393893.tif 000013
【図９】
0005393893.tif 000014
【図１０】
0005393893.tif 000015
【図１１】
0005393893.tif 000016
【図１２】
0005393893.tif 000017
【図１３】
0005393893.tif 000018
【図１４】
0005393893.tif 000019
【図１５】
0005393893.tif 000020
【図１６】
0005393893.tif 000021
【図１７】
0005393893.tif 000022
【図１８】
0005393893.tif 000023
【図１９】
0005393893.tif 000024
【図２０】
0005393893.tif 000025
【図２１】
0005393893.tif 000026
【図２２】
0005393893.tif 000027
【図２３】
0005393893.tif 000028
【図２４】
0005393893.tif 000029
【図２５】
0005393893.tif 000030
【図２６】
0005393893.tif 000031
【図２７】
0005393893.tif 000032
【図２８】
0005393893.tif 000033
【図２９】
0005393893.tif 000034
【図３０】
0005393893.tif 000035
【図３１】
0005393893.tif 000036
【図３２】
0005393893.tif 000037
【図３３】
0005393893.tif 000038
【図３４】
0005393893.tif 000039
【図３５】
0005393893.tif 000040
【図３６】
0005393893.tif 000041
【図３７】
0005393893.tif 000042
【図３８】
0005393893.tif 000043
【図３９】
0005393893.tif 000044
【図４０】
0005393893.tif 000045
【図４１】
0005393893.tif 000046
【図４２】
0005393893.tif 000047