(57)【特許請求の範囲】
【請求項１】
複数の論理ボリュームの基になる複数のストレージデバイス（１７０）と、
前記複数の論理ボリュームのうちのいずれかを指定したＩ／Ｏ（Input/Output）要求を外部デバイス（１８０）から受け付けるコントローラ（９５）と
を備え、
前記コントローラは、前記外部デバイスから前記Ｉ／Ｏ要求を受け付けるための外部インターフェイス（１０１）と、前記Ｉ／Ｏ要求に含まれるライトデータまたは前記Ｉ／Ｏ要求により指定されたリードデータを一時的に格納するキャッシュメモリ（１３１）と、複数のマイクロプロセッサ（１２１）を有しており、
前記複数のマイクロプロセッサには、１以上の第１プロセッサと、１以上の第２プロセッサとが含まれており、
前記第１プロセッサは、第１処理を担当し第２処理を担当しないマイクロプロセッサであり、
前記第２プロセッサは、前記第２処理を担当し前記第１処理を担当しないマイクロプロセッサであり、
前記第１処理とは、前記外部インターフェイスにより前記Ｉ／Ｏ要求が受け付けられると、前記Ｉ／Ｏ要求を解析し、前記Ｉ／Ｏ要求に応じた処理を実行し、前記Ｉ／Ｏ要求に対するレスポンスを前記外部デバイスに返す処理であって、前記Ｉ／Ｏ要求に応じた処理として少なくとも前記Ｉ／Ｏ要求により指定されたリードデータを前記キャッシュメモリからリードし前記外部デバイスに送る処理、前記Ｉ／Ｏ要求により指定されたリードデータを何れかのストレージデバイスからリードし前記キャッシュメモリにライトする処理、または、前記Ｉ／Ｏ要求に含まれるライトデータを前記キャッシュメモリにライトする処理を含み、
前記第２処理とは、前記第１処理以外の処理のうちの特定の処理であって、少なくとも前記キャッシュメモリからライトデータをリードし何れかのストレージデバイスにライトする処理、非同期ローカルコピー処理、または、非同期リモートコピー処理を含む、
ストレージシステム。
【請求項２】
前記コントローラは、ローカルメモリ（１２２）を有し、
前記ローカルメモリは、第１プロセッサであるか第２プロセッサであるかを表すプロセッサ種類値をマイクロプロセッサ毎に有するプロセッサ種類情報（２１０）を記憶し、
外部インターフェイス、ストレージデバイス及びマイクロプロセッサのうちの少なくとも一つの数が変更された場合に、前記複数のマイクロプロセッサのうちのいずれかのマイクロプロセッサが、下記（Ａ）乃至（Ｃ）の処理を行い、
（Ａ）第１プロセッサの理想的な数である第１理想数と、第２プロセッサの理想的な数である第２理想数とを算出する；
（Ｂ）前記第１理想数と、前記プロセッサ種類情報から把握される現在の第１プロセッサ数とを比較し、前記現在の第１プロセッサ数が前記第１理想数よりも少なければ、いずれかの第２プロセッサに対応するプロセッサ種類値を、第２プロセッサを表す値から第１プロセッサを表す値に更新する；
（Ｃ）前記第２理想数と、前記プロセッサ種類情報から把握される現在の第２プロセッサ数とを比較し、現在の第２プロセッサ数が前記第２理想数よりも少なければ、いずれかの第１プロセッサに対応するプロセッサ種類値を、第１プロセッサを表す値から第２プロセッサを表す値に更新する；
各マイクロプロセッサは、定期的に又は不定期的に、切換え処理を実行し、前記切換え処理において、そのマイクロプロセッサに対応したプロセッサ種類値が、そのマイクロプロセッサの現在のプロセッサ種類と異なるプロセッサ種類を表していて、且つ、そのマイクロプロセッサが担当する第１処理又は第２処理が未完了であれば、未完了の第１処理又は第２処理を実行し、
前記第１理想数は、ｎ［（ｌ／Ｌ）／｛（ｌ／Ｌ）＋（ｋ／Ｍ）｝］で算出された値に基づく整数値であり、
前記第２理想数は、ｎ［（ｋ／Ｍ）／｛（ｌ／Ｌ）＋（ｋ／Ｍ）｝］で算出された値に基づく整数値であり、
ｎは、マイクロプロセッサの数であり、
ｌは、外部インターフェイスの数であり、
Ｌは、外部インターフェイスの最大数であり、
ｋは、ｍを含んだ計算式であり、ｍの値が増加すれば増加し、
ｍは、ストレージデバイスの数であり、
Ｍは、ストレージデバイスの最大数である、
請求項１記載のストレージシステム。
【請求項３】
各論理ボリュームは、二以上のストレージデバイスで構成されたＲＡＩＤグループが基になっており、
ｋは、ｍの他に、各種ＲＡＩＤレベルに対応したｓが含まれており、いずれかの種類のＲＡＩＤレベルに対応したｓの値が増加すれば増加し、
ｓは、ＲＡＩＤグループ数又はストレージデバイス数であり、
ｓに係数が用意されており、
ストレージデバイスへのアクセス数が多いＲＡＩＤレベルのＲＡＩＤグループ数についての係数の方が、ストレージデバイスへのアクセス数が少ないＲＡＩＤレベルのＲＡＩＤグループ数についての係数よりも大きい、
請求項２記載のストレージシステム。
【請求項４】
ｋは、ｍの他に、ｐを含み、ｐの値が増加すれば増加し、
ｐは、ボリュームペアの数、ボリュームペアの要素となっている論理ボリュームの数、又は、ボリュームペアの基になっているストレージデバイスの数であり、
いずれかのマイクロプロセッサが、ボリュームペアを構成する論理ボリューム間でデータのコピーを行う、
請求項２又は３記載のストレージシステム。
【請求項５】
ｋは、ｍの他に、ｑを含み、ｑの値が増加すれば減少し、
ｑは、キャッシュ常駐機能に対応した論理ボリュームの数、又は、その論理ボリュームの基になっているストレージデバイスの数であり、
キャッシュ常駐機能に対応した論理ボリューム内のデータは、前記キャッシュメモリに常駐しており、
いずれのマイクロプロセッサも、前記論理ボリュームを指定したＩ／Ｏ要求に従うデータのリード及びライトを、前記キャッシュメモリに対して行い、
キャッシュ常駐機能に対応した論理ボリュームの基になっているストレージデバイスに対するアクセス数は、キャッシュ常駐機能に対応していない論理ボリュームの基になっているストレージデバイスに対するアクセス数よりも少ない、
請求項２乃至４のいずれかに記載のストレージシステム。
【請求項６】
前記コントローラは、ローカルメモリ（１２２）を有し、
前記ローカルメモリは、第１プロセッサであるか第２プロセッサであるかを表すプロセッサ種類値をマイクロプロセッサ毎に有するプロセッサ種類情報（２１０）と、マイクロプロセッサ毎の稼働率を有するプロセッサ稼働率情報（２５０）とを記憶し、
前記複数のマイクロプロセッサのうちの少なくとも一つが、代表プロセッサであり、
代表プロセッサは、定期的又は不定期的に、第一の切換え判定処理を行い、前記第一の切換え判定処理において、下記（Ｄ）乃至（Ｊ）の処理を行い、
（Ｄ）前記プロセッサ種類情報及び前記プロセッサ稼働率情報を参照することにより、第１プロセッサの稼働率である第１稼働率と、第２プロセッサの稼働率である第２稼働率とを特定する；
（Ｅ）特定された一以上の第１稼働率に基づく第１の値と、特定された一以上の第２稼働率に基づく第２の値とを算出する；
（Ｆ）算出された第１の値と第１の閾値とを比較し、前記第１の値が前記第１の閾値を超えていれば、いずれかの第２プロセッサに対応するプロセッサ種類値を、第２プロセッサを表す値から第１プロセッサを表す値に更新する；
（Ｇ）算出された第２の値と第２の閾値とを比較し、前記第２の値が前記第２の閾値を超えていれば、いずれかの第１プロセッサに対応するプロセッサ種類値を、第１プロセッサを表す値から第２プロセッサを表す値に更新する；
前記複数のマイクロプロセッサのうちの前記代表プロセッサ以外のマイクロプロセッサは、定期的又は不定期的に、第二の切換え判定処理を行い、前記第二の切換え判定処理において、下記（Ｈ）乃至（Ｇ）の処理を行い、
（Ｈ）そのマイクロプロセッサの稼働率と第３の閾値とを比較する；
（Ｉ）そのマイクロプロセッサの稼働率が前記第３の閾値を超えていて、そのマイクロプロセッサに対応するプロセッサ種類値が第２プロセッサを表していれば、いずれかの第１マイクロプロセッサに対応するプロセッサ種類値を、第１プロセッサを表す値から第２プロセッサを表す値に更新する；
（Ｊ）そのマイクロプロセッサの稼働率が前記第３の閾値を超えていて、そのマイクロプロセッサに対応するプロセッサ種類値が第１プロセッサを表していれば、いずれかの第２マイクロプロセッサに対応するプロセッサ種類値を、第２プロセッサを表す値から第１プロセッサを表す値に更新する；
各マイクロプロセッサは、定期的に又は不定期的に、切換え処理を実行し、前記切換え処理において、そのマイクロプロセッサに対応したプロセッサ種類値が、そのマイクロプロセッサの現在のプロセッサ種類と異なるプロセッサ種類を表していて、且つ、そのマイクロプロセッサが担当する第１処理又は第２処理が未完了であれば、未完了の第１処理又は第２処理を実行する、
請求項１乃至５のうちのいずれかに記載のストレージシステム。
【請求項７】
前記複数のマイクロプロセッサのうちのいずれかが、外部インターフェイス、ストレージデバイス及びマイクロプロセッサのうちの少なくとも一つに関する状況に応じて、いずれかのプロセッサの種類を第１プロセッサから第２プロセッサ又は第２プロセッサから第１プロセッサに変更する、
請求項１記載のストレージシステム。
【請求項８】
外部インターフェイス、ストレージデバイス及びマイクロプロセッサのうちの少なくとも一つに関する状況には、外部インターフェイスの数とストレージデバイスの数が含まれ、
外部インターフェイスの数が増えれば、前記複数のマイクロプロセッサに対する第１プロセッサの比率が増えることになり、
ストレージデバイスの数が増えれば、前記複数のマイクロプロセッサに対する第２プロセッサの比率が増えることになる、
請求項７記載のストレージシステム。
【請求項９】
各論理ボリュームは、二以上のストレージデバイスで構成されたＲＡＩＤグループが基になっており、
外部インターフェイス、ストレージデバイス及びマイクロプロセッサのうちの少なくとも一つに関する状況には、どのＲＡＩＤレベルのＲＡＩＤグループ又はストレージデバイスが幾つ存在するかが含まれており、
どのＲＡＩＤレベルのＲＡＩＤグループ又はストレージデバイスの数が増えても、第２プロセッサの比率が増えることになる、
請求項７又は８記載のストレージシステム。
【請求項１０】
ＲＡＩＤレベルに対応したＲＡＩＤグループ又はストレージデバイスの数について係数が用意されており、
ストレージデバイスへのアクセス数が多いＲＡＩＤレベルのＲＡＩＤグループ数又はストレージデバイス数についての係数の方が、ストレージデバイスへのアクセス数が少ないＲＡＩＤレベルのＲＡＩＤグループ数又はストレージデバイス数についての係数よりも大きい、
請求項９記載のストレージシステム。
【請求項１１】
外部インターフェイス、ストレージデバイス及びマイクロプロセッサのうちの少なくとも一つに関する状況には、どんな機能に対応した論理ボリューム又はストレージデバイスが幾つあるかが含まれており、
Ｉ／Ｏ要求に従って論理ボリュームにアクセスすることよりもアクセスする回数が多くなる機能に対応した論理ボリューム又はストレージデバイスの数が増加すれば、第２プロセッサの比率が増加し、
Ｉ／Ｏ要求に従って論理ボリュームにアクセスすることよりもアクセスする回数が少なくなる機能に対応した論理ボリューム又はストレージデバイスの数が増加すれば、第１プロセッサの比率が増加する、
請求項７乃至１０のうちのいずれかに記載のストレージシステム。
【請求項１２】
外部インターフェイス、ストレージデバイス及びマイクロプロセッサのうちの少なくとも一つに関する状況には、少なくとも一つのマイクロプロセッサの負荷が含まれている、
請求項７乃至１１のうちのいずれかに記載のストレージシステム。
【請求項１３】
前記複数のマイクロプロセッサのうちのいずれかが、一以上の第１プロセッサの負荷である一以上の第１負荷に基づく第１の値と、一以上の第２プロセッサの負荷である一以上の第２負荷に基づく第２の値とを算出し、前記第１の値と前記第２の値に応じて、いずれかのマイクロプロセッサの種類を第１プロセッサから第２プロセッサ又は第２プロセッサから第１プロセッサに変更し、
外部インターフェイス、ストレージデバイス及びマイクロプロセッサのうちの少なくとも一つに関する状況には、前記第１の値及び前記第２の値が含まれており、
各マイクロプロセッサは、そのマイクロプロセッサ自身の負荷に応じて、いずれかのマイクロプロセッサの種類を第１プロセッサから第２プロセッサ又は第２プロセッサから第１プロセッサに変更する、
請求項１２記載のストレージシステム。
【請求項１４】
複数の論理ボリュームの基になる複数のストレージデバイス（１７０）と、前記複数の論理ボリュームのうちのいずれかを指定したＩ／Ｏ（Input/Output）要求を外部デバイス（１８０）から受け付けるための１以上の外部インターフェイス（１０１）と、前記Ｉ／Ｏ要求に含まれるライトデータまたは前記Ｉ／Ｏ要求により指定されたリードデータを一時的に格納するキャッシュメモリ（１３１）と、複数のマイクロプロセッサ（１２１）を有するストレージシステムの処理分担方法であって、
前記複数のマイクロプロセッサのうちの１以上のマイクロプロセッサを第１プロセッサとして設定し、他の１以上のマイクロプロセッサを第２プロセッサとして設定し、
前記第１プロセッサは、前記外部インターフェイスにより前記Ｉ／Ｏ要求が受け付けられると、前記Ｉ／Ｏ要求を解析し、前記Ｉ／Ｏ要求に応じた処理を実行し、前記Ｉ／Ｏ要求に対するレスポンスを前記外部デバイスに返す処理であって、前記Ｉ／Ｏ要求に応じた処理として少なくとも前記Ｉ／Ｏ要求により指定されたリードデータを前記キャッシュメモリからリードし前記外部デバイスに送る処理、前記Ｉ／Ｏ要求により指定されたリードデータを何れかのストレージデバイスからリードし前記キャッシュメモリにライトする処理、または、前記Ｉ／Ｏ要求に含まれるライトデータを前記キャッシュメモリにライトする処理を含む第１処理を実行し、
前記第２プロセッサは、前記第１処理以外の処理のうちの特定の処理であって、少なくとも前記キャッシュメモリからライトデータをリードし何れかのストレージデバイスにライトする処理、非同期ローカルコピー処理、または、非同期リモートコピー処理を含む第２処理を実行し、
外部インターフェイス、ストレージデバイス及びマイクロプロセッサのうちの少なくとも一つに関する状況を特定し、
特定された状況に応じて、複数のマイクロプロセッサのいずれかのプロセッサの種類を第１プロセッサから第２プロセッサ又は第２プロセッサから第１プロセッサに変更する、
ストレージシステムにおける処理分担方法。
【請求項１５】
複数の論理ボリュームの基になる複数のストレージデバイス（１７０）と、
前記複数の論理ボリュームのうちのいずれかを指定したＩ／Ｏ要求を外部デバイス（１８０）から受け付けるコントローラ（９５）と
を備え、
前記コントローラは、前記外部デバイスから前記Ｉ／Ｏ要求を受け付けるための外部インターフェイス（１０１）と、前記Ｉ／Ｏ要求に含まれるライトデータまたは前記Ｉ／Ｏ要求により指定されたリードデータを一時的に格納するキャッシュメモリ（１３１）と、複数のマイクロプロセッサ（１２１）を有しており、
前記複数のマイクロプロセッサには、１以上の第１プロセッサと、１以上の第２プロセッサとが含まれており、
前記第１プロセッサは、第１処理を担当し第２処理を担当しないマイクロプロセッサであり、
前記第２プロセッサは、前記第２処理を担当し前記第１処理を担当しないマイクロプロセッサであり、
前記第１処理とは、前記外部インターフェイスにより前記Ｉ／Ｏ要求が受け付けられると、前記Ｉ／Ｏ要求を解析し、前記Ｉ／Ｏ要求に応じた処理を実行し、前記Ｉ／Ｏ要求に対するレスポンスを前記外部デバイスに返す処理であって、前記Ｉ／Ｏ要求に応じた処理として少なくとも前記Ｉ／Ｏ要求により指定されたリードデータを前記キャッシュメモリからリードし前記外部デバイスに送る処理、前記Ｉ／Ｏ要求により指定されたリードデータを何れかのストレージデバイスからリードし前記キャッシュメモリにライトする処理、または、前記Ｉ／Ｏ要求に含まれるライトデータを前記キャッシュメモリにライトする処理を含み、
前記第２処理とは、前記第１処理以外の処理のうちの特定の処理であって、少なくとも前記キャッシュメモリからライトデータをリードし何れかのストレージデバイスにライトする処理、非同期ローカルコピー処理、または、非同期リモートコピー処理を含み
前記コントローラは、ローカルメモリ（１２２）を有し、
前記ローカルメモリは、第１プロセッサであるか第２プロセッサであるかを表すプロセッサ種類値をマイクロプロセッサ毎に有するプロセッサ種類情報（２１０）を記憶し、
前記複数のマイクロプロセッサのうちのいずれかが、外部インターフェイス、ストレージデバイス及びマイクロプロセッサのうちの少なくとも一つに関する状況を特定し、特定された状況に応じて、複数のマイクロプロセッサのいずれかに対応したプロセッサ種類値を、第１プロセッサを表す値から第２プロセッサを表す値、又は、第２プロセッサを表す値から第１プロセッサを表す値に変更し、
各マイクロプロセッサは、定期的に又は不定期的に、切換え処理を実行し、前記切換え処理において、そのマイクロプロセッサに対応したプロセッサ種類値が、そのマイクロプロセッサの現在のプロセッサ種類と異なるプロセッサ種類を表していて、且つ、そのマイクロプロセッサが担当する第１処理又は第２処理が未完了であれば、未完了の第１処理又は第２処理を実行する、
ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のマイクロプロセッサを有するストレージシステムに関する。
【背景技術】
【０００２】
ストレージシステムは、一般に、複数のストレージデバイスと、外部デバイス（例えばホストコンピュータ）からＩ／Ｏ（Input/Output）要求を受け付けるコントローラとを備える。コントローラの構成としては、例えば特許文献１に開示の構成がある。
【０００３】
【特許文献１】特開２００５−０４４０１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
コントローラは、例えば、外部デバイスから受けたＩ／Ｏ要求がリード要求であれば、ストレージデバイスからキャッシュメモリ（ＣＭ）にデータを転送する処理（ストレージデバイスリード処理）と、外部デバイスへ転送するデータをＣＭから転送する処理（ＣＭリード処理）とを実行する。
【０００５】
また、コントローラは、例えば、外部デバイスから受けたＩ／Ｏ要求がライト要求であれば、外部デバイスから受けたデータをＣＭへ転送する処理（ＣＭライト処理）と、ＣＭからストレージデバイスへデータを転送する処理（ストレージデバイスライト処理）とを実行する。
【０００６】
複数のマイクロプロセッサを有するコントローラが知られているが、通常、各マイクロプロセッサは、同期処理と非同期処理のいずれも行う。ここで、「同期処理」とは、外部デバイスからのＩ／Ｏ要求が受け付けられてからそのＩ／Ｏ要求に対するレスポンスをその外部デバイスへ返すまでの間に実行しなければならない処理であり、例えば、前述したストレージデバイスリード処理、ＣＭリード処理、ＣＭライト処理を実行させる処理などである。一方、「非同期処理」とは、同期処理以外の処理（外部デバイスからのＩ／Ｏ要求が受け付けられてからそのＩ／Ｏ要求に対するレスポンスを外部デバイスへ返すまでに実行しなくて良い処理）のうちの特定の処理、例えば、前述したストレージデバイスライト処理を実行させる処理である。
【０００７】
短期的に処理を完了することが重要でない非同期処理を或るマイクロプロセッサが長時間かけて行ってしまうと、そのマイクロプロセッサが行わなければならない同期処理の開始が遅れ、故に、外部デバイスへのレスポンスが遅くなってしまう。しかしながら、同期処理を優先して非同期処理が長期間の遅延することは好ましくない。なぜなら、例えば、ストレージデバイスライト処理をまとめて行おうとすると、ＣＭにデータが一杯になって、ライト要求に従うデータをＣＭに書込めず、故に、却って、Ｉ／Ｏ要求に対するレスポンス（以下、Ｉ／Ｏレスポンス）を返すのが遅くなってしまうおそれがあるからである。
【０００８】
従って、本発明の目的は、複数のマイクロプロセッサを備えるストレージシステムにおいて、非同期処理のスループットを確保しつつ、同期処理の非同期処理待ちによるＩ／Ｏレスポンスの遅れを防ぐことにある。
【課題を解決するための手段】
【０００９】
コントローラが有する複数のマイクロプロセッサに、同期プロセッサと、非同期プロセッサが混在する。同期プロセッサは、同期処理を担当し非同期処理を担当しないマイクロプロセッサである。非同期プロセッサは、非同期処理を担当し同期処理を担当しないマイクロプロセッサである。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の第１実施形態に係る計算機システムの構成図である。
【図２】図２は、本発明の第１実施形態に係るＭＰＰＫの構成図である。
【図３】図３は、本発明の第１実施形態に係る管理コンソールの構成図である。
【図４】図４は、本発明の第１実施形態に係るＭＰ設定情報テーブルの構成を表す図である。
【図５】図５は、本発明の第１実施形態に係るストレージ構成情報テーブルの構成を表す図である。
【図６】図６は、本発明の第１実施形態に係るＲＡＩＤ管理テーブルの構成を表す図である。
【図７】図７は、本発明の第１実施形態に係るアプリケーション設定数テーブルの構成を表す図である。
【図８】図８は、本発明の第１実施形態に係るＩ／Ｏ処理のフローチャートである。
【図９】図９は、本発明の第１実施形態に係る切換え処理のフローチャートである。
【図１０】図１０は、本発明の第１実施形態に係る同期処理のフローチャートである。
【図１１】図１１は、本発明の第１実施形態に係る非同期処理のフローチャートである。
【図１２】図１２は、本発明の第１実施形態に係る切換え判定のフローチャートである。
【図１３】図１３は、本発明の第１実施形態に係るＭＰＰＫ増設時処理のフローチャートである。
【図１４】図１４は、一つのＭＰが同期処理と非同期処理のどちらも実行することになっている場合に生じ得る問題の一例を模式的に示した図である。
【図１５】図１５は、本発明の第一実施形態で期待できる効果の一例を模式的に示した図である。
【図１６】図１６は、本発明の第２実施形態に係るＭＰＰＫの構成図である。
【図１７】図１７は、本発明の第２実施形態に係るＭＰ稼働率テーブルの構成を表す図である。
【図１８】図１８は、本発明の第２実施形態に係る切換え判定をある１つのＭＰのみが実行する場合のフローチャートである。
【図１９】図１９は、本発明の第２実施形態に係る切換え判定を各ＭＰが実行する場合のフローチャートである。
【図２０】図２０は、本発明の第２実施形態に係る管理コンソールの表示部に表示される画面の第一の例を表す図である。
【図２１】図２１は、本発明の第２実施形態に係る管理コンソールの表示部に表示される画面の第二の例を表す図である。
【図２２】図２２は、本発明の第２実施形態に係る管理コンソールの表示部に表示される画面の第三の例を表す図である。
【図２３】図２３は、本発明の第２実施形態に係る管理コンソールの表示部に表示される画面の第四の例を表す図である。
【図２４】図２４は、本発明の第３実施形態に係る計算機システムの構成図である。
【図２５】図２５は、本発明の第３実施形態に係るアプリケーション設定数テーブルの構成を表す図である。
【図２６】図２６は、本発明の第３実施形態に係る非同期処理のフローチャートである。
【符号の説明】
【００１１】
１０…ストレージシステム
【発明を実施するための最良の形態】
【００１２】
以下、本発明の幾つかの実施形態を、図面を参照して説明する。なお、以下に説明する実施形態は、特許請求の範囲に係る発明を限定するものではなく、また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。また、各実施形態での計算機システムにおける各構成要素は、説明の簡便化のため一つのみ記述されているものでも、多重化（例えば二重化）することで高信頼化を図ることができる。
【実施例１】
【００１３】
図１は、本発明の第１実施形態に係る計算機システムの概要を表す。なお、以下の説明では、インターフェイスを「Ｉ／Ｆ」と略記することがある。
【００１４】
計算機システムは、一以上のホスト計算機１８０と、ストレージシステム１０と、管理コンソール２０とを有する。ホスト計算機１８０及びストレージシステム１０間の通信は、例えば、通信ネットワーク１９０を介して行われる。通信ネットワーク１９０としては、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、専用回線、公衆回線等、データ通信を行うことのできるネットワークであればよい。また、ホスト計算機１８０とストレージシステム１０との間の通信のプロトコルとしては、ファイバチャネルプロトコルや、ＴＣＰ／ＩＰプロトコルなど、データのやりとりが可能な種々のプロトコルのうちの任意のプロトコルを採用可能である。
【００１５】
管理コンソール２０は、ストレージシステム１０を管理するためのコンソールである。
【００１６】
ホスト計算機１８０は、Ｉ／Ｏ要求を送信する。Ｉ／Ｏ要求は、例えば、リード要求又はライト要求である。リード要求には、例えば、リード対象のデータの読出し元に対応したＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）及びＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）が含まれる。また、ライト要求には、例えば、ライト対象のデータの書込み先に対応したＬＵＮ及びＬＢＡと、ライト対象のデータとが含まれる。ＬＵＮは、ストレージシステム１０内の論理ボリュームに割り当てられている。ＬＢＡは、論理ボリューム内の記憶領域（ブロック）のアドレスである。
【００１７】
ストレージシステム１０は、複数のＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１７０と、ホスト計算機１８０からＩ／Ｏ要求を受け付けいずれかのストレージデバイス１７０にアクセスするコントローラ９５とを備える。
【００１８】
ＨＤＤ１７０は、ストレージデバイスの一例であり、ＨＤＤ１７０に代えて又は加えて、他種のストレージデバイス、例えば、フラッシュメモリデバイスが採用されても良い。複数のＨＤＤ１７０を基に複数の論理ボリュームが形成されている。具体的には、二以上のＨＤＤ１７０で構成されたＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループが一又は複数個備えられており、各ＲＡＩＤグループを基に、論理ボリュームが形成される。論理ボリュームには、ＬＵＮが割り当てられ、Ｉ／Ｏ要求で指定されているＬＵＮに対応した論理ボリュームの基になっているＨＤＤ１７０にコントローラ９５からアクセスされることになる。Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ技術等では、論理ボリュームがプールボリュームであることもあり、その場合には、ＲＡＩＤグループが基になっている論理ボリュームにはＬＵＮは割り当てられず、仮想的な論理ボリュームにＬＵＮが割り当てられる。この場合、仮想的な論理ボリュームのＬＵＮを指定したＩ／Ｏ要求が受け付けられた場合には、いずれかのプールボリュームに対するアクセスが行われる。
【００１９】
コントローラ９５は、例えば、一以上のホストＩ／Ｆ部としての一以上のＦＥＰＫ（ＦｒｏｎｔＥｎｄ  ＰａｃＫａｇｅ）１００と、一以上の制御部としての一以上のＭＰＰＫ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｏｒ  ＰａｃＫａｇｅ）１２０と、一以上の共有メモリ部としての一以上のＣＭＰＫ（Ｃａｃｈｅ  Ｍｅｍｏｒｙ  ＰａｃＫａｇｅ）１３０と、一以上のディスクＩ／Ｆ部としての一以上のＢＥＰＫ（ＢａｃｋＥｎｄ  ＰａｃＫａｇｅ）１４０とを有する。各ＦＥＰＫ１００、各ＭＰＰＫ１２０、各ＣＭＰＫ１３０及び各ＢＥＰＫ１４０は、内部ネットワーク１５０に接続されている。内部ネットワーク１５０は、例えば、ＬＡＮ等の通信ネットワークであっても良いし、クロスバスイッチ等のスイッチデバイスであっても良い。内部ネットワーク１５０によると、ＭＰＰＫ１２０の各ＭＰ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｏｒ）１２１は、ＦＥＰＫ１００、ＣＭＰＫ１３０、ＢＥＰＫ１４０のいずれに対しても通信可能となっている。
【００２０】
ＦＥＰＫ１００は、ホスト計算機１８０と通信するためのインターフェイス装置であり、複数のホストＩ／Ｆ１０１と、転送制御回路１０２とを有する。各ホストＩ／Ｆ１０１は、例えば、ポートである。転送制御回路１０２は、ホストＩ／Ｆ１０１で受け付けたＩ／Ｏ要求やデータ等の転送を制御する回路である。
【００２１】
ＢＥＰＫ１４０は、ＨＤＤ１７０と通信するためのインターフェイス装置であり、複数のディスクＩ／Ｆ１４１と、転送制御回路１４２とを有する。ディスクＩ／Ｆ１４１は、例えば、ポートであり、ケーブルを介してＨＤＤ１７０と接続されるとともに、内部ネットワーク１５０と接続されており、内部ネットワーク１５０側とＨＤＤ１７０との間におけるリード又はライト対象のデータの受け渡し処理を仲介する。転送制御回路１４２は、データ転送を制御する回路である。
【００２２】
ＣＭＰＫ１３０は、キャッシュメモリ（以下、「ＣＭ」と略す）１３１と制御メモリ１３２を有する。ＣＭ１３１と制御メモリ１３２は、揮発メモリ、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であってもよい。
【００２３】
ＣＭ１３１には、ＨＤＤ１７０にライトするデータ（すなわち、ホスト計算機１８０からのライト要求に従うライト対象のデータ）を一時的に格納され、また、ＨＤＤ１７０からリードしたデータ（すなわち、ホスト計算機１８０からのリード要求に従うリード対象のデータ）が一時的に格納される。
【００２４】
制御メモリ１３２は、同期処理及び非同期処理等の処理に必要な制御情報、例えば、ＨＤＤ構成情報（どのＲＡＩＤグループがどのＨＤＤ１７０で構成されているかを表す情報）やボリューム管理情報（どの論理ボリュームがどんな機能に対応しているか等を表す情報）等を記憶する。
【００２５】
ＭＰＰＫ１２０は、ストレージシステム１０の動作を制御する。ＭＰＰＫ１２０は、複数のＭＰ１２１と、ローカルメモリ（ＬＭ）１２２と、これらを接続するバス１２３とを有する。なお、本実施形態では、ストレージシステム１０に複数のＭＰ１２１が存在すれば良いので、ＭＰＰＫ１２０が複数個あれば、一つのＭＰＰＫ１２０が有するＭＰ１２１は１つであっても良い。
【００２６】
ＬＭ１２２は、制御メモリ１３２に格納されている制御情報の一部（又は全部）を格納している。制御情報の一部とは、制御情報のうち、その一部を記憶するＬＭ１２２を有したＭＰＰＫ１２０にとって必要な部分である。
【００２７】
図２は、ＭＰＰＫ１２０のＬＭ１２２におけるテーブル及びキューを示す。
【００２８】
ＬＭ１２２には、ＭＰ設定情報テーブル２１０と、ストレージ構成情報テーブル２２０と、ＲＡＩＤ管理テーブル２３０と、アプリケーション設定数テーブル２４０と、同期初期処理キュー３１０と、同期再処理キュー３２０と、非同期初期処理キュー３３０と、非同期再処理キュー３４０とが、格納される。一つのＭＰ１２０につき、それぞれ１本の同期再処理キュー３２０と非同期再処理キュー３４０がＬＭ１２２に格納される。各テーブル２１０〜２４０については後に詳細に説明する。また、格別図示しないが、ＬＭ１２２には、各ＭＰ１２１で実行される一以上のコンピュータプログラムが格納されても良い。一以上のコンピュータプログラムが実行されることによって、図８乃至図１３の処理が行われる。一以上のコンピュータプログラムには、例えば、図８に示すＩ／Ｏ処理を行うためのコンピュータプログラムと、図９に示す切換え処理を行うためのコンピュータプログラムと、図１０に示す同期処理を行うためのコンピュータプログラムと、図１１に示す非同期処理を行うためのコンピュータプログラムと、図１２に示す切換え判定処理を行うためのコンピュータプログラムと、図１３に示すＭＰＰＫ増設時処理を行うためのコンピュータプログラムとが含まれている。
【００２９】
同期初期処理キュー３１０には、ホストＩ／Ｆ１０１がホスト計算機１８０から受けたＩ／Ｏ要求である同期初期処理要求が格納される。同期初期処理要求は、例えば、ホストＩ／Ｆ１０１を通じてＩ／Ｏ要求を受けた転送制御回路１０２によって、同期初期処理キュー３１０に格納される。転送制御回路１０２は、Ｉ／Ｏ要求を解析し、その解析結果に応じて、同期初期処理要求（Ｉ／Ｏ要求）を、どのＭＰＰＫ１２０のＬＭ１２２における同期初期処理キュー３１０に格納するかを決定し、決定した同期初期処理キュー３１０に、同期初期処理要求を格納する（振り分ける）。
【００３０】
同期再処理キュー３２０には、同期初期処理の後に行われる処理（同記再処理）に関わる情報、例えば、同期処理に関わるハードウェア処理（例えば、ＣＭリード処理、ＣＭライト処理）の完了を意味する完了メッセージが格納される。同期処理に関わるハードウェア処理は、例えば、ＭＰ（同期ＭＰ）１２１が、同期初期処理要求を解析し、その解析の結果に基づくデータ転送パラメータが特定の回路（例えば、転送制御回路１０２又は１４２や、キャッシュメモリ１３１へのアクセスを制御するアダプタ回路（ＣＭＰＫ１３０上に設けられている回路））に設定した場合に（同期初期処理が行われた場合に）、開始される。完了メッセージは、例えば、そのハードウェア処理が完了したときに、特定の回路（例えば転送制御回路１０２又は１４２）によって、データ転送パラメータを設定したＭＰ１２１に対応する同期再処理キュー３２０に格納される。そのＭＰ１２１は、そのＭＰ１２１に対応する同期再処理キュー３２０に完了メッセージがあることを検出したときに、同期再処理を実行する。
【００３１】
非同期初期処理キュー３３０には、ストレージシステム１０の状態に基づいて必要になった非同期初期処理要求が格納される。非同期初期処理要求は、例えば、或るＭＰ（非同期ＭＰ）１２１が、ＨＤＤ１７０に格納されていないデータの総量のＣＭ１３１の記憶容量に対する比率が所定の比率を超えていることを検出した場合に、その或るＭＰ１２１によって格納される。
【００３２】
非同期再処理キュー３４０には、非同期初期処理の後に行われる処理（非同期再処理）に関する情報、例えば、非同期処理に関わるハードウェア処理（例えば、ストレージデバイスライト処理）の完了を意味する完了メッセージが格納される。非同期処理に関わるハードウェア処理は、例えば、ＭＰ（非同期ＭＰ）１２１が、非同期初期処理要求を解析し、その解析の結果に基づくデータ転送パラメータが特定の回路（例えば、転送制御回路１４２や、キャッシュメモリ１３１へのアクセスを制御するアダプタ回路）に設定した場合に（非同期初期処理が行われた場合に）、開始される。完了メッセージは、例えば、そのハードウェア処理が完了したときに、特定の回路（例えば転送制御回路１４２）によって、データ転送パラメータを設定したＭＰ１２１に対応する非同期再処理キュー３４０に格納される。そのＭＰ１２１は、そのＭＰ１２１に対応する非同期再処理キュー３４０に完了メッセージがあることを検出したときに、非同期再処理を実行する。
【００３３】
ＭＰ１２１が、これらのキュー３１０〜３４０から要求或いは情報を取り出し、処理を実行する。
【００３４】
図３は、管理コンソール２０の構成図である。
【００３５】
管理コンソール２０では、通信Ｉ／Ｆ２１と、入力Ｉ／Ｆ２２と、メモリ２４と、ＨＤＤ２５と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２６とが、バス２７を介して接続されている。
【００３６】
メモリ２４は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を有し、ブートプログラムや、各種処理を実行するプログラムを記憶する。また、メモリ２４は、プログラムやデータを記憶する領域として、或いは、ＣＰＵ２６による処理に使用されるデータを格納する作業領域として利用される。
【００３７】
ＨＤＤ２５は、電源が入っていない場合でも記憶しておく必要があるプログラムや、各種情報を記憶する。
【００３８】
入力Ｉ／Ｆ２２には、例えば、管理コンソール２０のユーザ（管理者）による操作を受け付ける入力部（例えばマウスやキーボード等）２８が接続されている。入力Ｉ／Ｆ２２は、入力部２８からの信号をデータとして、ＣＰＵ２６に出力する。
【００３９】
表示Ｉ／Ｆ２３は、例えば、表示部（例えば液晶ディスプレイ或いはＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ））２９が接続されている。表示Ｉ／Ｆ２３は、例えば、ＶＲＡＭ（Ｖｉｄｅｏ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を有し、ＣＰＵ２６の制御により、表示させる画像に応じた画像データを生成し、表示部２９に各種画面を表示出力させる。
【００４０】
通信Ｉ／Ｆ２１は、ストレージシステム１０の内部ネットワーク１５０に接続されており、ＣＰＵ２６と、内部ネットワーク１５０に接続されたストレージシステム１０の各部（例えば、ＭＰＰＫ１２０のＭＰ１２１）とのデータ交換の仲介を行う。
【００４１】
ＣＰＵ２６は、各部２１〜２５の動作を制御する。また、ＣＰＵ２６は、メモリ２４又は／及びＨＤＤ２５に格納されているプログラムをメモリ２４のＲＡＭに読み出して実行する。
【００４２】
ＣＰＵ２６は、各種画像を表示Ｉ／Ｆ２３を介して表示部２９に表示させる。
【００４３】
図４は、ＭＰ設定情報テーブル２１０の構成を表す。
【００４４】
ＭＰ設定情報テーブル２１０は、各ＭＰが同期ＭＰであるか非同期ＭＰであるかを表すテーブルである。具体的には、例えば、ＭＰ設定情報テーブル２１０は、ＭＰ１２１毎に、ＭＰ番号フィールド２１１と、同期ＭＰフラグフィールド２１２とを含むエントリを有する。
【００４５】
ＭＰ番号フィールド２１１には、ＭＰ１２１の識別番号であるＭＰ番号が格納される。
【００４６】
同期ＭＰフラグフィールド２１２には、同期ＭＰフラグが格納される。同期ＭＰフラグは、そのフラグに対応するＭＰが、同期ＭＰであるか非同期ＭＰであるかを表す。同期ＭＰフラグの値"１"は、同期ＭＰであることを意味し、"０"は、非同期ＭＰであることを意味する。「同期ＭＰ」とは、同期処理を担当し非同期処理を担当しないＭＰである。「非同期ＭＰ」とは、非同期処理を担当し同期処理を担当しないＭＰである。
【００４７】
図５は、ストレージ構成情報テーブル２２０の構成を表す。
【００４８】
ストレージ構成情報テーブル２２０は、ストレージシステム１０が有する特定の構成要素の数に関する情報を表す。具体的には、例えば、ストレージ構成情報テーブル２２０は、構成要素毎に、構成名フィールド２２１と、搭載数フィールド２２２と、最大搭載数フィールド２２３とを含むエントリを有する。
【００４９】
構成名フィールド２２１には、ストレージシステム１０の各構成要素の名称が格納される。
【００５０】
搭載数フィールド２２２には、各構成要素の搭載数が格納される。
【００５１】
最大搭載数フィールド２２３には、ストレージシステム１０における、各構成要素の最大搭載数が格納される。
【００５２】
図６は、ＲＡＩＤ管理テーブル２３０の構成を表す。
【００５３】
ＲＡＩＤ管理テーブル２３０は、どのＲＡＩＤレベルのＲＡＩＤグループが幾つ存在するかを表す。具体的には、例えば、ＲＡＩＤ管理テーブル２３０は、ＲＡＩＤレベル毎に、ＲＡＩＤレベルフィールド２３１と、設定数フィールド２３２と、を含むエントリを有する。
【００５４】
ＲＡＩＤレベルフィールド２３１には、ＲＡＩＤレベルを表す情報が格納される。
【００５５】
設定数フィールド２３２には、各ＲＡＩＤレベルに対応したＲＡＩＤグループ（又はＨＤＤ１７０）の数が格納される。
【００５６】
図７は、アプリケーション設定数テーブル２４０の構成を表す。
【００５７】
アプリケーション設定数テーブル２４０は、どのアプリケーション（機能）に対応したＨＤＤ（又は、論理ボリューム群及び／又は論理ボリューム）が幾つ存在するかを表す。具体的には、例えば、アプリケーション設定数テーブル２４０は、ストレージシステム１０の有するアプリケーション毎に、アプリケーション名フィールド２４１と、設定数フィールド２４２と、を含むエントリを有する。ここで言う「アプリケーション」とは、ストレージシステム１０内で管理されるＨＤＤ１７０に適用されＭＰ１２１で実現される機能である。例えば、非同期ローカルコピーや、キャッシュ常駐機能等がある。「非同期ローカルコピー」とは、Ｉ／Ｏ要求を受け付けたタイミングとは非同期に、ボリュームペアを構成する一方の論理ボリューム（プライマリ論理ボリューム）から他方の論理ボリューム（セカンダリ論理ボリューム）にデータをコピーする機能である。「キャッシュ常駐機能」とは、その機能に対応した論理ボリューム内のデータ（全てのデータであっても良いし一部のデータであっても良い）が常にＣＭ１３１に存在させておき、その機能に対応した論理ボリュームへのアクセスを、ＣＭ１３１へのアクセスで完了させる機能である（但し、ＣＭ１３１上の、ＨＤＤ１７０に書込まれていないデータは、適時に（例えば、ストレージシステム１０の電断時に）、その機能に対応した論理ボリュームの基になっているＨＤＤ１７０に格納される）。
【００５８】
アプリケーション名フィールド２４１には、各アプリケーションの名称が格納される。
【００５９】
設定数フィールド２４２には、各アプリケーションに対応したＨＤＤ（又は、論理ボリューム群（ボリュームペア）及び／又は論理ボリューム）の数が格納される。
【００６０】
図４〜図７に示したテーブルのうち、図４に示したＭＰ設定情報テーブル２１０における同期ＭＰフラグは、いずれかのＭＰ１２１によって更新され、図５〜図７に示したテーブルにおける種々の値は、管理コンソール２０によって更新される。
【００６１】
図８から図１３は、ＭＰ１２１が実行する処理のフローチャートである。具体的には、図８はＩ／Ｏ処理のフローチャートで、図９はＩ／Ｏ処理から呼ばれる切換え処理のフローチャートで、図１０はＩ／Ｏ処理および切換え処理から呼ばれる同期処理のフローチャートで、図１１はＩ／Ｏ処理および切換え処理から呼ばれる非同期処理のフローチャートで、これらの処理は、各ＭＰ１２１が実行する。また、図１２は、同期ＭＰ数と非同期ＭＰ数の数を変えるかどうか判定する処理（切換え判定処理）のフローチャートで、図１３は、ＭＰＰＫ増設時の処理のフローチャートで、これらの処理は、構成の変更を受け付けたＭＰ１２１が実行する。
【００６２】
図８は、Ｉ／Ｏ処理のフローチャートである。なお、図８の説明では、或る一つのＭＰを例に採り、そのＭＰを「対象ＭＰ」と言う。
【００６３】
対象ＭＰ１２１は、例えばＬＭ１２２に記録されている前回切換え処理時刻（直前回の切換え処理が開始された時刻）と現在時刻とを比較し、前回切換え処理（ステップＳ１０７）を実行した後に一定時間経過したかどうか（すなわち、前回切換え処理時刻と現在時刻との差が一定時間を超えているか否か）を判定する（ステップＳ１０２）。
【００６４】
この結果、一定時間経過していない場合（ステップＳ１０２のＮＯ）、対象ＭＰ１２１が同期ＭＰであれば、対象ＭＰ１２１は、初期処理キュー３１０又は同期再処理キュー３２０をチェックし、一方、対象ＭＰ１２１が非同期ＭＰであれば、対象ＭＰ１２１は、非同期初期処理キュー３３０又は非同期再処理キュー３４０をチェックする（ステップＳ１０３）。そして、対象ＭＰ１２１は、同期処理要求または非同期処理要求がいずれかのキューにあるかどうか判定する（ステップＳ１０４）。
【００６５】
この結果、同期処理要求または非同期処理要求が検出された場合（ステップＳ１０４のＹＥＳ）には、対象ＭＰ１２１は、同期処理または非同期処理を実行し（ステップＳ１０５）、ステップＳ１０２に戻る。
【００６６】
一方、同期処理要求または非同期処理要求が検出されなかった場合（ステップＳ１０４のＮＯ）には、対象ＭＰ１２１は何も実行せず、ステップＳ１０２が再度実行される。
【００６７】
ステップＳ１０２の判定の結果、一定時間経過していた場合（ステップＳ１０２のＹＥＳ）には、対象ＭＰ１２１は、現在時刻を例えばＬＭ１２２に登録する（ステップＳ１０６）。その後、対象ＭＰ１２１は、図９に示す切換え処理を実行する（ステップＳ１０７）。
【００６８】
図９は、切換え処理（ステップＳ１０７）のフローチャートである。なお、図９の説明では、或る一つのＭＰを例に採り、そのＭＰを「対象ＭＰ」と言う。
【００６９】
対象ＭＰ１２１は、対象ＭＰ１２１のＭＰ番号に対応した同期ＭＰフラグをＭＰ設定情報テーブル２１０から特定し（ステップＳ２０２）、特定された同期ＭＰフラグの値が変わっているか否かを判定する（ステップＳ２０３）。
【００７０】
ステップＳ２０３の判定の結果、同期ＭＰフラグの値に変化がない場合（ステップＳ２０３のＮＯ）には、切換え処理が終了する。
【００７１】
一方、ステップＳ２０３の判定の結果、同期ＭＰフラグの値に変化があった場合（ステップＳ２０３のＹＥＳ）には、対象ＭＰ１２１は、処理を開始したが完了していない同期処理または非同期処理（未完了処理）があるか否かを判定する（ステップＳ２０４）。具体的には、例えば、ＭＰ１２１は、後述する同期初期処理（及び非同期初期処理）を開始したときにフラグ（以下、完了チェックフラグ）を立て、同期初期処理後に行う後述の同期再処理を完了した場合に、その完了チェックフラグを倒す。このため、対象ＭＰ１２１は、立っている完了チェックフラグがあるか否かで、未完了処理があるか否かを判定することができる。
【００７２】
ステップＳ２０４の判定の結果、未完了処理がない場合（ステップＳ２０４のＮＯ）には、切換え処理が終了する。
【００７３】
一方、ステップＳ２０４の判定の結果、未完了処理がある場合（ステップＳ２０４のＹＥＳ）には、対象ＭＰ１２１は、同期ＭＰフラグの値が、同期ＭＰを表す値から非同期ＭＰを表す値に変わっているときには、同期再処理キュー３２０をチェックし、同期ＭＰフラグの値が、非同期ＭＰを表す値から同期ＭＰを表す値に変わっているときには、非同期再処理キュー３４０をチェックし（ステップＳ２０５）、完了メッセージがキュー３２０又は３４０にあるかどうか判定する（ステップＳ２０６）。
【００７４】
ステップＳ２０６の判定の結果、完了メッセージが検出された場合（ステップＳ２０６のＹＥＳ）には、対象ＭＰ１２１が同期処理（例えば同記再処理）または非同期処理（例えば非同期再処理）を実行し（ステップＳ２０７）、処理がステップＳ２０４に戻る。
【００７５】
一方、ステップＳ２０６の判定の結果、完了メッセージが検出されなかった場合（ステップＳ２０６のＮＯ）には、対象ＭＰ１２１は何も実行せず、処理がステップＳ２０４に戻る。
【００７６】
つまり、切換え処理では、対象ＭＰ１２１は、対象ＭＰ１２１によって開始されたが未完了である処理のみをやり終え、新たに同期処理或いは非同期処理を開始しない。
【００７７】
図１０は、同期処理のフローチャートである。なお、図１０の説明では、或る一つの同期ＭＰを例に採り、そのＭＰを「対象同期ＭＰ」と言う。
【００７８】
対象同期ＭＰ１２１は、処理要求を解析し（ステップＳ３０２）、どんな同期処理を行うか判定する（ステップＳ３０３）。
【００７９】
その結果、対象同期ＭＰ１２１は、
リード対象のデータをＣＭ１３１からリードしホストに送るＣＭリード処理を実行させる（ステップＳ３０４）；
ホストからのライト対象のデータをＣＭ１３１にライトするＣＭライト処理を実行させる（ステップＳ３０５）；
リード対象データをＨＤＤ１７０からリードしＣＭ１３１にライトするＣＭライト処理を実行させる（ステップＳ３０６）；
のいずれかを行う。本実施形態では、ステップＳ３０４〜Ｓ３０６のいずれも同期処理であるし、図１０のフロー全体も同期処理である。
【００８０】
図１１は、非同期処理のフローチャートである。図１１の説明では、或る一つの非同期ＭＰを例に採り、そのＭＰを「対象非同期ＭＰ」と言う。
【００８１】
対象非同期ＭＰ１２１は、処理要求を解析し（ステップＳ４０２）、どんな非同期処理を行うか判定する（ステップＳ４０３）。
【００８２】
その結果、対象非同期ＭＰ１２１は、
ＣＭ１３１からライト対象のデータをリードしＨＤＤ１７０にライトするＨＤＤライト処理を実行させる（ステップＳ４０４）；
非同期ローカルコピーに対応したボリュームペアにおける非同期ローカルコピー処理を実行する（ステップＳ４０５）；
のいずれを行う。本実施形態では、ステップＳ４０４及び４０５のいずれも非同期処理であるし、図１１のフロー全体も非同期処理である。
【００８３】
図１２は、切換え判定処理のフローチャートである。この処理は、管理コンソール２０から構成変更の要求を受け付けたＭＰ（以下、図１２の説明において「対象ＭＰ」と言う）１２１が行う。構成変更の要求は、例えば、図５〜図７に示したいずれかのテーブルの内容を変更する要求（例えば、ポートの搭載数ｌの値を増やす、ＲＡＩＤレベル５に対応したｂの値を減らす等）である。
【００８４】
対象ＭＰ１２１は、同期ＭＰ数決定関数Ｎｓｍｐと非同期ＭＰ数決定関数Ｎａｓｍｐを計算する（ステップＳ５０３）。Ｎｓｍｐは式（１）の通りであり、Ｎａｓｍｐは示す式（２）の通りである。
【数１】
0005167410.tif 000002
【数２】
0005167410.tif 000003
ここで、式（１）及び式（２）の両方について、各種変数に入る値は、下記の通りである。
ｌ：ホストＩ／Ｆ（ポート）の搭載数、具体的には、図５に示す通り、構成名フィールド２２１が"ポート"であるエントリの搭載数フィールド２２２に記載の値；
Ｌ：ホストＩ／Ｆ（ポート）の搭載可能な最大数、具体的には、図５に示す通り、構成名フィールド２２１が"ポート"であるエントリの最大搭載数フィールド２２３に記載の値；
ｍ：ＨＤＤ１７０の搭載数、具体的には、図５に示す通り、構成名フィールド２２１が"ＨＤＤ"であるエントリの搭載数フィールド２２２に記載の値；
Ｍ：ＨＤＤ１７０の搭載可能な最大数、具体的には、図５に示す通り、構成名フィールド２２１がＨＤＤであるエントリの最大搭載数フィールド２２３の値；
ｎ：ＭＰ１２１の搭載数、具体的には、図５に示す通り、構成名フィールド２２１が"ＭＰ"であるエントリの搭載数フィールド２２２に記載の値；
ａ：ＲＡＩＤレベル１に対応したＲＡＩＤグループ（又はＨＤＤ１７０）の数、具体的には、図６に示す通り、ＲＡＩＤレベルフィールド２３１が"１"であるエントリの設定数フィールド２３２に記載の値；
ｂ：ＲＡＩＤレベル５に対応したＲＡＩＤグループ（又はＨＤＤ１７０）の数、具体的には、図６に示す通り、ＲＡＩＤレベルフィールド２３１が"５"であるエントリの設定数フィールド２３２に記載の値；
ｃ：ＲＡＩＤレベル６に対応したＲＡＩＤグループ（又はＨＤＤ１７０）の数、具体的には、図６に示す通り、ＲＡＩＤレベルフィールド２３１が"６"であるエントリの設定数フィールド２３２に記載の値；
ｐ：非同期ローカルコピーに対応したＨＤＤ１７０（又は、ボリュームペア及び／又は論理ボリューム）の数、具体的には、図７に示す通り、アプリケーション名フィールド２４１が"非同期ローカルコピー"であるエントリの設定数フィールド２４２に記載の値；
ｑ：キャッシュ常駐機能に対応したＨＤＤ１７０（又は、ボリュームペア及び／又は論理ボリューム）の数、具体的には、図７に示す通り、アプリケーション名フィールド２４１が"キャッシュ常駐機能"であるエントリの設定数フィールド２４２に記載の値；
ｆｌｏｏｒ（ｘ）：ｘ以下最大の整数を表す関数；
ｃｅｉｌ（ｘ）：ｘ以上最小の整数を表す関数。
【００８５】
ここで、Ｎｓｍｐ及びＮａｓｍｐの一方の値がゼロになった場合、一方に１を加算し、他方から１を減じることができる。
【００８６】
上記式（１）及び式（２）は、ホストＩ／Ｆ１０１の数が増えれば同期処理がより必要になり、一方、ＨＤＤ１７０の数が増えれば非同期処理がより必要になるという考えがベースになっている。具体的には、上記式（１）及び式（２）は、下記式（３）及び式（４）がそれぞれベースとなっている。
【数３】
0005167410.tif 000004
【数４】
0005167410.tif 000005
ここで、ｋは、ｍを含んだ計算式であり、ｍの値が増加すれば増加する。式（１）〜式（４）によれば、ｋに、ａ、ｂ、ｃ、ｐ及びｑが要素として含まれている。本実施形態では、ｍが、必須の要素であり、それ以外の要素は、必ずしもｋに含まれなくて良い。ｋには、ａ、ｂ及びｃの少なくとも一つが含まれて、ｐ及びｑが含まれなくても良いし、ｐ及びｑの少なくとも一方が含まれて、ａ、ｂ及びｃのいずれも含まれなくても良い。
【００８７】
上記式（１）〜式（４）は、ＨＤＤ１７０にアクセスする回数が増えれば非同期処理がより必要になるという考えがベースになっている。
【００８８】
具体的には、ａ、ｂ及びｃの係数が、１，２，３となっているのは（係数はそれぞれ一例である）、ＲＡＩＤ１、ＲＡＩＤ５及びＲＡＩＤ６のうち、ＲＡＩＤ１が、ＨＤＤ１７０にアクセスする回数が最も少なくて済み、ＲＡＩＤ５が、１ストライプにつき１個のパリティを生成する観点からＲＡＩＤ１の次にアクセス回数が少なくて済み、ＲＡＩＤ６が、１ストライプにつき２個のパリティを生成する観点から最もアクセス回数が多くなると考えられるからである。
【００８９】
また、ｐが増加すればｋが増加するようになっているのは（例えば、ｐが加算されるようになっているのは）、非同期ローカルコピーが行われると、Ｉ／Ｏ要求に従うアクセスとは関係無しにＨＤＤ１７０にアクセスされるからである。
【００９０】
また、ｑが増加すればｋが減少するようになっているのは（例えば、ｑが減算されるようになっているのは）、キャッシュ常駐機能に対応した論理ボリュームのＬＵＮを含んだＩ／Ｏ要求が受け付けられても、ＣＭ１３１へのアクセスで足り、その論理ボリュームの基になっているＨＤＤ１７０にアクセスされないからである。
【００９１】
対象ＭＰ１２１は、算出されたＮｓｍｐと現在の同期ＭＰ数とを比較し、且つ、算出されたＮａｓｍｐと現在の非同期ＭＰ数とを比較し（ステップＳ５０４）、同期ＭＰ数および非同期ＭＰ数を変更する必要があるか否かを判定する（ステップＳ５０５）。現在の同期ＭＰ数は、同期ＭＰフラグの値が"１"であるエントリの合計数であり、現在の非同期ＭＰ数は、同期ＭＰフラグの値が"０"であるエントリの合計数である。
【００９２】
ステップＳ５０４の結果、現在の同期ＭＰ数がＮｓｍｐと等しく、且つ、現在の非同期ＭＰ数がＮａｓｍｐと等しい場合（ステップＳ５０５のＮＯ）には、処理が終了する。
【００９３】
ステップＳ５０４の結果、現在の非同期ＭＰ数がＮａｓｍｐより少なければ（ステップＳ５０５のＹＥＳ−１）、対象ＭＰ１２１は、任意の同期ＭＰを一つ選択し、その同期ＭＰに対応した同期ＭＰフラグの値を"１"から"０"に変更する（ステップＳ５０６）。
【００９４】
ステップＳ５０４の結果、現在の同期ＭＰ数がＮｓｍｐより少なければ（ステップＳ５０５のＹＥＳ−２）、対象ＭＰ１２１は、任意の非同期ＭＰを一つ選択し、その非同期ＭＰに対応した同期ＭＰフラグの値を"０"から"１"に変更する（ステップＳ５０７）。
【００９５】
ステップＳ５０６及び／又はＳ５０７において、同期ＭＰまたは非同期ＭＰは、ランダムに選択されてもよい。また、選択される同期ＭＰまたは非同期ＭＰは、一定時間以内の処理実行時間である稼働率が低いＭＰ（例えば稼働率が同期ＭＰ群或いは非同期ＭＰ群のなかで最も低いＭＰ）であっても良いし、現在の同期再処理キュー３２０または非同期再処理キュー３４０の長さが短い（つまり蓄積されている要求の数が少ない）ＭＰであっても良い。
【００９６】
図１３は、ＭＰＰＫ増設時の処理のフローチャートである。この処理は、管理コンソール２０からＭＰＰＫ増設要求を受け付けたＭＰ（以下、図１３の説明において「対象ＭＰ」と言う）１２１が行う。
【００９７】
対象ＭＰ１２１は、ＭＰ設定情報テーブル２１０に、増設されたＭＰの数と同数のエントリを追加し、そのエントリにおける同期ＭＰフラグの値を"１"に設定し、且つ、搭載数フィールド２２２に記載のｎの値に、増設されたＭＰの数を加算する（ステップＳ６０３）。
【００９８】
その後、対象ＭＰ１２１は、切換え判定処理を実行する（ステップＳ６０４）。なぜなら、ＭＰＰＫ増設要求は、前述した構成変更の要求の一種であるからである。具体的には、ＭＰＰＫの増設が行われると、ＭＰの数に変更が生じ、故に、前述したように、搭載数フィールド２２２に記載のｎの値に変更が生じるからである。
【００９９】
以上が、本発明の第１の実施形態の説明である。
【０１００】
本発明の第１の実施形態によれば、同期ＭＰと非同期ＭＰが存在し、同期処理は、必ず、同期ＭＰによって行われ、非同期処理は、必ず、非同期ＭＰによって行われる。このため、一例として以下に図１５を参照して説明するような効果が期待できる。その効果を分かり易くするために、まず、第１の実施形態のような工夫がなされていない場合に生じ得る問題を、図１４を参照して説明し、その後で、第１の実施形態で期待できる効果の一例を、図１５を参照して説明する。その際、一つのＩ／Ｏ要求に関して、同期初期処理が１ｍｓ（ミリ秒）間行われ、ハードウェア処理が１ｍｓかかり（つまり１ｍｓ間ハード待ちが行われ）、ハード待ちの完了後に同期再処理が１ｍｓ間行われるとする。一方、非同期処理は５ｍｓ間行われるとする。また、ホスト０及びホスト１の２つのホスト計算機１８０があるとする。同期初期処理も同期再処理も、同期処理の一例である。また、図１４及び図１５において、ｔは時間軸である。
【０１０１】
＜第１の実施形態のような工夫がなされていない場合に生じ得る問題＞。
【０１０２】
図１４に示すように、例えば、ホスト０からＩ／Ｏ要求５１０が受け付けられて同期初期処理キュー３１０に格納されたとする。この場合、そのＩ／Ｏ要求５１０が或るＭＰ５５０で処理されることになったとする。具体的には、例えば、ＭＰ５５０が、同期初期処理（SP-1）５１１を１ｍｓ（ミリ秒）間実行し、その後、Ｉ／Ｏ要求５１０に関してハードウェア処理が１ｍｓかかり（ハード待ち（ＨＷ）５１２）、ハード待ちの間に、ＭＰ５５０が、非同期処理５３０を５ｍｓ実行したとする。この場合、ＭＰ５５０は、同期再処理（SP-2）５１３を４ｍｓ待たせた後に１ｍｓ実行し、ホスト０にレスポンス５１４を返す。これらの結果、ホスト０のＩ／Ｏ要求５１０が受け付けられてからレスポンス５１４が返されるまでに、７ｍｓかかることになる。具体的には、ハード待ち５１２後に完了メッセージを検出して直ぐに行えるはずの同記再処理５１３の開始を４ｍｓ待つ必要がある。
【０１０３】
一方、ホスト１からのＩ／Ｏ要求５２０がＭＰ５５０とは別のＭＰ５６０で処理されることになったとする。ＭＰ５６０が非同期処理５４０を５ｍｓ実行していたとする。この場合、ＭＰ５６０は、同期初期処理（SP-1）５２１を５ｍｓ待たせた後に１ｍｓ実行する。その後、ホスト１のＩ／Ｏ要求５２０に関しては、ハードウェア処理に１ｍｓかかった（ハード待ち（ＨＷ）５２２）後、ＭＰ５６０が同期再処理（SP-2）５２３を１ｍｓ実行し、ホスト１にレスポンス５２４を返す。これらの結果、ホスト１からのＩ／Ｏ要求５２０が受け付けられてからレスポンス５１４が返されるまでに、８ｍｓかかることになる。具体的には、Ｉ／Ｏ要求５２０に対応した同期初期処理５２１の開始を５ｍｓ待つ必要がある。
【０１０４】
＜本発明の第１の実施形態で期待できる効果の一例＞。
【０１０５】
図１５に示すように、ＭＰ１２１−１が同期ＭＰであって、ＭＰ１２１−２が非同期ＭＰであるとする。
【０１０６】
ホスト０からのＩ／Ｏ要求５１０と、ホスト１からのＩ／Ｏ要求５２０は、同期ＭＰ１２１−１で処理されることになる。例えば、Ｉ／Ｏ要求５１０がＩ／Ｏ要求５２０よりも先に受け付けられた場合、同期ＭＰ１２１−１が、まず、Ｉ／Ｏ要求５１０に対応した同期初期処理（SP-1）５１１を１ｍｓ実行する。その後、Ｉ／Ｏ要求５１０に関しては、ハードウェア処理に１ｍｓかかる（ハード待ち（ＨＷ）５１２）。
【０１０７】
その間、同期ＭＰ１２１−１が、ホスト１からのＩ／Ｏ要求５２０に対応した同期初期処理（SP-1）５２１を１ｍｓ実行する。その後、ホスト１からのＩ／Ｏ５２０に関しては、ハードウェア処理に１ｍｓかかる（ハード待ち（ＨＷ）５２２）。
【０１０８】
その間、同期ＭＰ１２１−１が、ホスト０からのＩ／Ｏ要求５１０に対応した同期再処理（SP-2）５１３を実行し、ホスト０にレスポンス５１４を返す。
【０１０９】
その後、同期ＭＰ１２１−１が、ホスト１からのＩ／Ｏ要求５２０に対応した同期再処理（SP-2）５２３を実行し、ホスト１にレスポンス５２４を返す。
【０１１０】
これらの結果、ホスト０からのＩ／Ｏ要求５１０については、Ｉ／Ｏ要求が受け付けられてからレスポンスが返されるまでの時間（レスポンス時間）は、３ｍｓであり、ホスト１からのＩ／Ｏ要求５２０については、レスポンス時間は、４ｍｓである。それぞれのレスポンス時間は、図１４を参照して説明したそれぞれのレスポンス時間よりも短い。
【０１１１】
一方、非同期ＭＰ１２１−２が、非同期処理（AP-1）５３０を実行し、続いて、非同期処理（AP-2）５４０を実行する。つまり、同期処理５１１、５２１、５１３、５２３に並行して、非同期処理５３０、５４０も実行されている。要するに、非同期処理のスループットが確保されている。
【０１１２】
以上、第１実施形態によれば、非同期処理のスループットを確保しつつ、同期処理の非同期処理待ちによるＩ／Ｏレスポンスの遅れを防ぐことができる。
【実施例２】
【０１１３】
以下、本発明の第２の実施形態を説明する。その際、第１の実施形態との相違点を主に説明し、第１の実施形態との共通点については説明を省略或いは簡略する（これは、後述の第３の実施形態も同様である）。
【０１１４】
第２の実施形態では、図１６に示すように、ＬＭ１２２には、第１の実施形態で説明したテーブル２１０〜２４０に加えて、ＭＰ稼働率テーブル２５０と、設定ＭＰ稼働率テーブル２６０が格納されている。設定ＭＰ稼動率テーブル２６０は、稼働率閾値を有するテーブルである。稼働率閾値は、製品出荷時に設定された値であっても良いし、ユーザが管理コンソール２０を用いて設定した値であっても良い。稼働率閾値は、固定値であっても良いし、可変値であっても良い。稼働率閾値が可変値の場合、稼働率閾値は、例えば、後述する代表ＭＰ（又は代表ＭＰ以外のＭＰ）によって、ストレージシステムの稼動状況に応じて適時に変更されても良いし、ユーザが管理コンソール２０を用いて任意の時点に変更しても良い。また、設定ＭＰ稼動率テーブル２６０には、複数の稼働率閾値が含まれていても良い。例えば、それら複数の稼働率閾値のうちの一つは、非同期処理に対応しても良いし、それらのうちの他の一つは、同期処理に対応しても良い。
【０１１５】
図１７は、ＭＰ稼働率テーブル２５０の構成を表す。
【０１１６】
ＭＰ稼働率テーブル２５０は、各ＭＰ１２１の現在の稼働率を表す。具体的には、例えば、ＭＰ稼働率テーブル２５０は、ＭＰ１２１毎に、ＭＰ番号フィールド２５１と、稼働率フィールド２５２と、を含むエントリを有する。
【０１１７】
ＭＰ番号フィールド２５１には、ＭＰ１２１の識別番号であるＭＰ番号が格納される。
【０１１８】
稼働率フィールド２５２には、現在のＭＰの稼働率（例えば単位は％）を表す情報が格納される。稼働率フィールド２５２に記載の稼働率は、例えば定期的又は不定期的に、各ＭＰ１２１によって、そのＭＰ１２１の現在の稼働率に更新される。
【０１１９】
第２の実施形態では、図８〜図１３を参照して説明した処理に加えて（又は代えて）、図１８に示す代表切換え判定処理及び図１９に示す個別切換え判定処理が行われる。これらの処理を行うためのコンピュータプログラムが、例えばＬＭ１２２に格納されていて、それらのコンピュータプログラムがＭＰ１２１で実行される。
【０１２０】
図１８は、代表切換え判定処理のフローチャートである。
【０１２１】
この処理は、代表ＭＰが行う。代表ＭＰとは、複数のＭＰ１２１のうちの一つ（又は二以上）のＭＰである。そのＭＰは、管理コンソール２０から指定されたＭＰであっても良いし、予めストレージシステムで定められているＭＰであっても良い。
【０１２２】
代表ＭＰ１２１は、前回切換え処理時刻（直前回の代表切換え判定処理を行った時刻）と現在時刻を比較し、前回切換え処理時刻から一定時間経過したかどうかを判定する（ステップＳ７０２）。
【０１２３】
この結果、一定時間経過していない場合（ステップＳ７０２のＮＯ）には、処理が終了する。
【０１２４】
一方、一定時間経過している場合（ステップ７０２のＹＥＳ）には、代表ＭＰ１２１が、現在時刻を、例えばＬＭ１２２に登録する（ステップＳ７０３）。
【０１２５】
その後、代表ＭＰ１２１は、ＭＰ設定情報テーブル２１０を参照して同期ＭＰ及び非同期ＭＰを特定し、ＭＰ稼働率テーブル２５０を参照して、同期ＭＰの稼働率の平均値（以下、同期ＭＰの平均稼働率）および非同期ＭＰの稼働率の平均値（以下、非同期ＭＰの平均稼働率）を計算し、算出された同期ＭＰの平均稼働率及び非同期ＭＰの平均稼働率を、それぞれ、設定ＭＰ稼働率テーブル２６０が表す稼働率閾値と比較する（ステップＳ７０４）。
【０１２６】
この結果、同期ＭＰの平均稼働率と非同期ＭＰの平均稼働率が共に稼働率閾値を超過している又は超過していない場合（ステップＳ７０４のＮＯ）には、処理が終了する。
【０１２７】
ステップＳ７０４の結果、非同期ＭＰの平均稼働率のみが稼働率閾値を超過している場合（ステップＳ７０４のＹＥＳ−１）には、代表ＭＰ１２１は、任意の同期ＭＰを一つ選択し、その同期ＭＰに対応した同期ＭＰフラグの値を"１"から"０"に変更する（ステップＳ７０５）。これにより、非同期ＭＰが増えることになるので、非同期ＭＰの平均稼働率が下がることが期待できる。
【０１２８】
ステップＳ７０４の結果、同期ＭＰの平均稼働率のみが稼働率閾値を超過している場合（ステップＳ７０４のＹＥＳ−２）には、代表ＭＰ１２１は、任意の非同期ＭＰを一つ選択し、その非同期ＭＰに対応した同期ＭＰフラグの値を"０"から"１"に変更する（ステップＳ７０６）。これにより、同期ＭＰが増えることになるので、同期ＭＰの平均稼働率が下がることが期待できる。
【０１２９】
図１９は、個別切換え判定処理のフローチャートである。
【０１３０】
この処理は、各ＭＰが行う。このため、この処理は、代表ＭＰが行うこともできる。以下、図１９の説明では、或る一つのＭＰを例に採り、そのＭＰを「対象ＭＰ」と言う。
【０１３１】
対象ＭＰ１２１は、前回切換え処理時刻（直前回の個別切換え判定処理を行った時刻）と現在時刻を比較し、前回切換え処理時刻から一定時間経過したかどうかを判定する（ステップＳ８０２）。
【０１３２】
この結果、一定時間経過していない場合（ステップＳ８０２のＮＯ）には、処理が終了する。
【０１３３】
一方、一定時間経過している場合（ステップ８０２のＹＥＳ）には、対象ＭＰ１２１が、現在時刻を、例えばＬＭ１２２に登録する（ステップＳ８０３）。
【０１３４】
その後、対象ＭＰ１２１は、対象ＭＰ１２１に対応する現在の稼働率（稼働率フィールド２５２に記録されている値）を、稼働率閾値（テーブル２６０に記録されている値）と比較し、その現在の稼働率が稼働率閾値を超過しているか否かを判定する（ステップＳ８０４）。
【０１３５】
この結果、現在の稼働率が稼働率閾値より低い場合（ステップＳ８０４のＮＯ）には、処理が終了する。
【０１３６】
一方、現在の稼働率が稼働率閾値より高い場合（ステップＳ８０４のＹＥＳ）には、対象ＭＰ１２１は、対象ＭＰ１２１に対応した同期ＭＰフラグの値が"１"であるか否かを判定する（ステップＳ８０５）。
【０１３７】
ステップＳ８０５の結果、同期ＭＰフラグの値が"０"の場合（ステップＳ８０５のＮＯ）には、対象ＭＰ１２１は、同期ＭＰを一つ選択し、その同期ＭＰに対応した同期ＭＰフラグの値を"１"から"０"に変更する（ステップＳ８０６）。これにより、非同期ＭＰが増えることになるので、対象ＭＰ１２１の負荷が緩和する（対象ＭＰ１２１の稼働率が下がる）ことが期待できる。
【０１３８】
ステップＳ８０５の結果、同期ＭＰフラグの値が"１"の場合（ステップＳ８０５のＹＥＳ）には、対象ＭＰ１２１は、非同期ＭＰを一つ選択し、その非同期ＭＰに対応した同期ＭＰフラグの値を"０"から"１"に変更する（ステップＳ８０７）。これにより、同期ＭＰが増えることになるので、対象ＭＰ１２１の負荷が緩和する（対象ＭＰ１２１の稼働率が下がる）ことが期待できる。
【０１３９】
図１８のステップＳ７０５及び／又はＳ７０６において、及び／又は、図１９のステップＳ８０６及び／又はＳ８０７において、同期ＭＰまたは非同期ＭＰは、ランダムに選択されてもよい。また、選択される同期ＭＰまたは非同期ＭＰは、一定時間以内の処理実行時間である稼働率が低いＭＰ（例えば稼働率が同期ＭＰ群或いは非同期ＭＰ群のなかで最も低いＭＰ）であっても良いし、現在の同期再処理キュー３２０または非同期再処理キュー３４０の長さが短い（つまり蓄積されている要求の数が少ない）ＭＰであっても良い。
【０１４０】
図２０〜図２３は、それぞれ、管理コンソール２０の表示部２８に表示される画面（以下、管理画面）の一例を示す。
【０１４１】
管理画面には、例えば、図２０に示すように、各ＭＰの現在の稼働率と稼働率閾値との関係を示すグラフが表示される。図２０によれば、例えば２つの同期ＭＰ０及び１の現在の稼働率が稼働率閾値を超過していることがわかる。
【０１４２】
二つの同期ＭＰ０及び１の現在の稼働率が稼働率閾値を超過している場合、図２１に示すように、非同期ＭＰであったＭＰ２が同期ＭＰに切り換えられると、同期ＭＰ０及び１の稼働率が、稼働率閾値より低くなるという状態が期待できる。切り換え後の各ＭＰの現在の稼働率と稼働率閾値の関係は、例えば図２１に示すように、管理画面に表示される。
【０１４３】
その後、例えば、図２２に示すように、非同期ＭＰ３の稼働率が稼働率閾値より高くなった場合、図２３のように、同期ＭＰ２であったＭＰ２が非同期ＭＰに切り換えられると、非同期ＭＰ３の稼働率が、稼働率閾値より低くなるという状態が期待できる。切り換え後の各ＭＰの現在の稼働率と稼働率閾値の関係は、例えば図２３に示すように、管理画面に表示される。
【０１４４】
以上が、本発明の第２の実施形態の説明である。
【０１４５】
本発明の第２実施形態によれば、同期ＭＰの負荷と非同期ＭＰの負荷に応じて、同期ＭＰ数と非同期ＭＰ数を変更でき、特定のＭＰに大きく負荷が集中してしまうことを防ぐことができる。
【実施例３】
【０１４６】
図２４は、本発明の第３実施形態に係る計算機システムの概要を表す。
【０１４７】
通信ネットワーク（例えばＳＡＮまたはＬＡＮ）１９０が、広域回線１９１で、別の通信ネットワーク（例えばＳＡＮまたはＬＡＮ）１９０ｂと接続される。別の通信ネットワーク１９０ｂと、ストレージシステム１０ｂが接続される。ストレージシステム１０ｂには管理コンソール２０が接続される。要するに、第３の実施形態では、ストレージシステム１０内のプライマリ論理ボリュームから別のストレージシステム１０内のセカンダリ論理ボリュームへの非同期リモートコピーが行われる。非同期リモートコピーを行うための構成は、図２４の例に限らず、他の構成が採用されても良い。
【０１４８】
図２５は、第３実施形態に係るアプリケーション設定数テーブル２４０の構成を表す。
【０１４９】
アプリケーション設定数テーブル２４０には、非同期リモートコピーのエントリが追加されている。そのエントリには、アプリケーション名"非同期リモートコピー"と設定数"ｒ"とが含まれている。
【０１５０】
図２６は、第３実施形態に係る非同期処理のフローチャートである。
【０１５１】
第１実施形態の非同期処理実行のフローチャートに加え、ステップＳ４０３の結果から、非同期リモートコピー処理（ステップＳ４０７）への分岐が追加されている。
【０１５２】
非同期リモートコピーが実行され得る第３実施形態では、ステップＳ５０３における、同期ＭＰ数決定関数Ｎｓｍｐと非同期ＭＰ数決定関数Ｎａｓｍｐは、式（５）や式（６）のようになる。
【数５】
0005167410.tif 000006
【数６】
0005167410.tif 000007
式（５）及び式（６）によれば、前述の式（３）及び式（４）におけるｋに、新たな変数ｒが含まれている。ｒは、非同期ローカルコピーに対応したＨＤＤ１７０（又は、ボリュームペア及び／又は論理ボリューム）の数、具体的には、図２５に示す通り、アプリケーション名フィールド２４１が"非同期リモートコピー"であるエントリの設定数フィールド２４２に記載の値である。
【０１５３】
ｒが増加すればｋが増加するようになっているのは（例えば、ｒが加算されるようになっているのは）、非同期リモートコピーが行われると、Ｉ／Ｏ要求に従うアクセスとは関係無しにＨＤＤ１７０にアクセスされるからである。
【０１５４】
以上、第３実施形態によれば、非同期リモートコピーが実行される場合にも、非同期処理のスループットを確保しつつ、同期処理の非同期処理待ちによるＩ／Ｏレスポンスの遅れを防ぐことができる。
【０１５５】
以上、本発明の好適な実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１５６】
例えば、第１〜第３の実施形態において、「同期処理」とは、ホスト計算機１８０からのＩ／Ｏ要求に同期してレスポンスを返すまでに実行しなければならない処理であり、その具体例は、図１０を参照して説明した処理である。「非同期処理」とは、同期処理以外の処理（外部デバイスからのＩ／Ｏ要求に同期してレスポンスを返すまでに実行しなくて良い処理）のうちの特定の処理であり、その具体例は、図１１及び図２６を参照して説明した処理である。それら以外の処理は、同期処理及び非同期処理のいずれにも属しない「第３の処理」とすることができる。同期処理以外の処理のうちどれを非同期処理としどれを第３の処理とするかは、例えば予め定義されている。非同期処理の一例は、ＨＤＤ１７０へのアクセスに関わる処理（例えば、ＨＤＤライト処理、非同期ローカルコピー及び非同期リモートコピーのいずれも、ＨＤＤ１７０へのアクセスが発生する処理）である。第３の処理は、同期ＭＰ及び非同期ＭＰのどちらも実行し得る処理である。第３の処理の具体例は、図８のＩ／Ｏ処理、図９の切換え処理、図１２の切換え判定処理、図１３のＭＰＰＫ増設時処理、図１８の代表切換え判定処理、図１９の個別切換え判定処理、図２０〜図２３のような管理画面の情報を管理コンソール２０に送信する処理、及び、ＭＰ稼働率設定テーブル２５０を適時に更新する処理などがある。これらの第３の処理のうちの少なくとも一つ、例えば、図１２の切換え判定処理、図１３のＭＰＰＫ増設時処理、及び、図１８の代表切換え判定処理の少なくとも一つは、非同期処理であっても良い。具体的には、例えば、構成変更要求及び増設要求のいずれかは、同期ＭＰではなく非同期ＭＰが受け付けるようになっていても良い。
【０１５７】
また、例えば、ストレージシステム１０に存在する全てのＭＰ１２１の各々が、必ずしも、同期ＭＰと非同期ＭＰのどちらかでなくても良い。言い換えれば、ストレージシステム１０が有する複数のＭＰ１２１には、同期ＭＰと非同期ＭＰのどちらでも無いＭＰ（以下、第３のＭＰ）が少なくとも一つ含まれていても良い。第３のＭＰは、例えば、代表ＭＰであっても良い。第３のＭＰは、同期処理及び非同期処理以外の処理、つまり第３の処理のみを実行するＭＰであっても良い。
【０１５８】
また、例えば、増設ＭＰが必ずしも増設時に同期ＭＰとされなくても良い。例えば、増設時に非同期ＭＰに関する稼働率（例えば非同期ＭＰの平均稼働率）が稼働率閾値を大幅に超えていれば、増設ＭＰは非同期ＭＰとされても良い。
【０１５９】
また、稼働率閾値は、同期ＭＰ用と非同期ＭＰ用の２種類、或いはそれ以上の種類があっても良い。
【図１】
0005167410.tif 000008
【図２】
0005167410.tif 000009
【図３】
0005167410.tif 000010
【図４】
0005167410.tif 000011
【図５】
0005167410.tif 000012
【図６】
0005167410.tif 000013
【図７】
0005167410.tif 000014
【図８】
0005167410.tif 000015
【図９】
0005167410.tif 000016
【図１０】
0005167410.tif 000017
【図１１】
0005167410.tif 000018
【図１２】
0005167410.tif 000019
【図１３】
0005167410.tif 000020
【図１４】
0005167410.tif 000021
【図１５】
0005167410.tif 000022
【図１６】
0005167410.tif 000023
【図１７】
0005167410.tif 000024
【図１８】
0005167410.tif 000025
【図１９】
0005167410.tif 000026
【図２０】
0005167410.tif 000027
【図２１】
0005167410.tif 000028
【図２２】
0005167410.tif 000029
【図２３】
0005167410.tif 000030
【図２４】
0005167410.tif 000031
【図２５】
0005167410.tif 000032
【図２６】
0005167410.tif 000033