(57)【要約】【課題】ストレージシステムにおいて冗長性を保ちつつ物理記憶装置の負荷を分散する。【解決手段】負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域を選択し、その物理記憶装置よりも負荷の低い物理記憶装置を選択し、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると論理ボリュームに対応したＲＡＩＤレベルに従う冗長性が低下するか否かを判断する。その判断結果が、冗長性が低下しないとの判断結果であるならば、上記選択された記憶領域に記憶されているデータ要素を、上記選択された負荷の低い物理記憶装置が有するバッファ用領域に移動し、選択された記憶領域に対応する、論理ボリュームの論理アドレス空間を、そのバッファ用領域に対応付ける。【選択図】図１２
2008310685.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理記憶装置と、
前記複数の物理記憶装置の記憶空間を構成する記憶領域群を基に形成された複数の論理ボリュームと、
アクセス先の論理ボリュームを構成する二以上の物理記憶装置の各々が有する各記憶領域に対してその論理ボリュームに対応したＲＡＩＤレベルに基づくアクセスを行うアクセス部と、
各記憶領域についてのアクセスに伴う負荷を基に各物理記憶装置についての負荷を算出する負荷算出部と、
前記複数の物理記憶装置の負荷を分散する処理である負荷分散処理を実行し、判断部とデータ再配置部とを有する負荷分散処理部と
を備え、
前記負荷分散処理では、
前記判断部により、負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域が選択され、その物理記憶装置よりも負荷の低い物理記憶装置が選択され、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると前記ＲＡＩＤレベルに従う冗長性が低下するか否かが判断され、
冗長性が低下しないとの判断結果であれば、前記データ再配置部により、前記選択された記憶領域に記憶されているデータ要素が、前記選択された負荷の低い物理記憶装置が有し論理ボリュームの論理アドレス空間に対応していないバッファ用とされた記憶領域であるバッファ用領域に移動され、前記選択された記憶領域に対応する、論理ボリュームの論理アドレス空間が、前記バッファ用領域に対応付けられる、
ストレージシステム。
【請求項２】
前記論理ボリュームを構成する各ボリューム要素領域に書かれた複数のデータ要素がそれぞれどの物理記憶装置のどの記憶領域に書き込まれたかを表すボリューム管理情報を更に備え、
前記冗長性が低下するか否かの判断は、前記ボリューム管理情報を参照して行われる判断であって、同一のボリューム要素領域について、前記選択された記憶領域がある物理記憶装置が、前記選択された負荷の低い物理記憶装置であるか否かの判断である、
請求項１記載のストレージシステム。
【請求項３】
前記データ再配置部により、前記選択された記憶領域からデータ要素が移動された後、その記憶領域がバッファ用領域とされる、
請求項１記載のストレージシステム。
【請求項４】
前記判断部は、冗長性が低下するとの判断結果になった場合、前記負荷の高い物理記憶装置よりも負荷が低いが前回の前記判断の際に選択された物理記憶装置よりも負荷が高い物理記憶装置を選択する、
請求項１記載のストレージシステム。
【請求項５】
前記負荷の高い物理記憶装置が、前記複数の物理記憶装置のうち負荷がＫ番目（Ｋは整数）に高い物理記憶装置である場合、初回に選択された前記負荷の低い物理記憶装置は、前記複数の物理記憶装置のうち負荷がＫ番目に低い物理記憶装置である、
請求項１記載のストレージシステム。
【請求項６】
前記判断部が、更に、選択された記憶領域についての負荷を基に、データ要素の移動が行なわれた場合に前記選択された負荷の低い物理記憶装置の負荷が所定値を超えるか否かを判断し、超えるならば、前記負荷の高い物理記憶装置が有する二以上の記憶領域から、前回に選択された記憶領域よりも負荷の低い記憶領域を選択する、
請求項１記載のストレージシステム。
【請求項７】
前記データ再配置部により、更に、前記負荷の低い物理記憶装置が有する二以上の記憶領域から選択された記憶領域に記憶されているデータ要素が、前記負荷の高い物理記憶装置が有するバッファ用領域に移動される、
請求項１記載のストレージシステム。
【請求項８】
前記判断部が、更に、前記負荷の高い物理記憶装置から選択された第一の記憶領域の負荷よりも、前記負荷の低い物理記憶装置から選択された第二の記憶領域の負荷が高いか否かを判断し、高いならば、前記負荷の高い物理記憶装置よりも負荷が低く前記負荷の低い物理記憶装置とは別の物理記憶装置を選択する、
請求項１記載のストレージシステム。
【請求項９】
前記複数の物理記憶装置のうちの或る物理記憶装置について記憶装置最適化処理を実行する記憶装置最適化部、を更に備え、
前記記憶装置最適化処理では、前記或る物理記憶装置について、高速アクセスとなり負荷の低い第一の記憶領域に記憶されているデータ要素が、その或る物理記憶装置におけるバッファ用領域にコピーされ、前記第一の記憶領域よりも低速アクセスとなり負荷の高い第二の記憶領域に記憶されているデータ要素が、前記第一の記憶領域にコピーされ、前記第二の記憶領域に対応付けられていた論理アドレス空間が前記第一の記憶領域に対応付けられる、
請求項１記載のストレージシステム。
【請求項１０】
前記記憶装置最適化処理は、前記負荷分散処理の後に実行される、
請求項９記載のストレージシステム。
【請求項１１】
前記記憶装置最適化処理では、更に、前記第二の記憶領域に記憶されているデータ要素が前記第一の記憶領域にコピーされた後、その第二の記憶領域がバッファ用領域とされる、
請求項９記載のストレージシステム。
【請求項１２】
前記或る物理記憶装置は、ディスク媒体のドライブであり、
前記第一の記憶領域は、前記第二の記憶領域よりも前記ディスク媒体の外周側に存在する記憶領域である、
請求項９記載のストレージシステム。
【請求項１３】
前記複数の物理記憶装置の負荷のばらつきの度合いが所定の度合い以下か否かを判断するばらつき度合い判断部を更に備え、
所定の度合い以下との判断になれば、前記負荷分散処理が行われることなく前記記憶装置最適化処理が行われる、
請求項９記載のストレージシステム。
【請求項１４】
前記或る物理記憶装置には、二以上のバッファ用領域があり、
前記記憶装置最適化部が、前記或る物理記憶装置のうちの二以上の第一の記憶装置について、前記二以上のバッファ用領域をそれぞれ使用して並行して記憶装置最適化処理を行う、
請求項９記載のストレージシステム。
【請求項１５】
前記或る物理記憶装置について、二以上の記憶領域のそれぞれの記憶領域識別子が連番となっており、
各記憶領域に記憶されているデータ要素のコピー先は、各記憶領域の負荷順位を記憶領域識別子とした場合のその記憶領域識別子から識別される記憶領域である、
請求項９記載のストレージシステム。
【請求項１６】
複数の物理記憶装置を備えたストレージシステムの性能を最適化する方法であって、
負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域を選択し、その物理記憶装置よりも負荷の低い物理記憶装置を選択し、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると論理ボリュームに対応したＲＡＩＤレベルに従う冗長性が低下するか否かを判断し、
冗長性が低下しないとの判断結果であれば、前記選択された記憶領域に記憶されているデータ要素を、前記選択された負荷の低い物理記憶装置が有し論理ボリュームの論理アドレス空間に対応していないバッファ用とされた記憶領域であるバッファ用領域に移動し、前記選択された記憶領域に対応する、論理ボリュームの論理アドレス空間を、前記バッファ用領域に対応付ける、
方法。
【請求項１７】
複数の物理記憶装置を備えたストレージシステムの性能を最適化するためのコンピュータプログラムであって、
負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域を選択し、その物理記憶装置よりも負荷の低い物理記憶装置を選択し、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると論理ボリュームに対応したＲＡＩＤレベルに従う冗長性が低下するか否かを判断し、
冗長性が低下しないとの判断結果であれば、前記選択された記憶領域に記憶されているデータ要素を、前記選択された負荷の低い物理記憶装置が有し論理ボリュームの論理アドレス空間に対応していないバッファ用とされた記憶領域であるバッファ用領域に移動し、前記選択された記憶領域に対応する、論理ボリュームの論理アドレス空間を、前記バッファ用領域に対応付ける、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムの性能の最適化に関する。
【背景技術】
【０００２】
記憶装置の負荷を分散する技術として、例えば、特許文献１及び２に開示の技術が知られている。特許文献１には、ストライピングディスクを構成する複数のディスク装置の負荷分散技術が開示されている。特許文献２には、論理記憶装置（論理ボリューム）の負荷分散技術が開示されている。
【０００３】
【特許文献１】特開平７−５６６９１号公報
【特許文献２】特開２００６−５３６０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
通常、ストレージシステムでは、ＲＡＩＤ（Redundant Array of Independent （or Inexpensive） Disks）技術を利用した記憶制御が行われる。具体的には、例えば、ストレージシステムには、二以上の物理記憶装置で構成されたＲＡＩＤグループ（パリティグループ或いはアレイグループと呼ばれることもある）が備えられ、ＲＡＩＤグループのＲＡＩＤレベルに応じた記憶制御が行われる。
【０００５】
採用されるＲＡＩＤレベルとしては、一般に、ＲＡＩＤグループを構成する二以上の物理記憶装置のうちの一つに障害が発生しても障害の生じた物理記憶装置に記憶されているデータ要素を復元することが可能なタイプのＲＡＩＤレベル（以下、復元可能ＲＡＩＤレベル）、具体的には、ＲＡＩＤ０以外のＲＡＩＤレベル（例えば、ＲＡＩＤ１、ＲＡＩＤ５或いはＲＡＩＤ６）が挙げられる。
【０００６】
物理記憶装置は、複数の物理記憶領域を有する。同一のＲＡＩＤグループを構成する二以上の物理記憶装置の負荷が、アクセスパターンによってばらつきが生じることがある。このため、物理記憶装置の負荷を分散すること、具体的には、物理記憶領域単位でデータ要素を再配置することが望ましいと考えられる。
【０００７】
そして、このような負荷分散を行うにあたり、復元可能ＲＡＩＤレベルが採用されている場合には、冗長性を保つ必要がある。しかし、特許文献１に開示の技術によれば、ストライピングディスクを構成する複数のディスク装置の負荷分散、言い換えれば、ＲＡＩＤレベルがＲＡＩＤ０の場合の負荷分散であるため、冗長性を考慮した負荷分散は行われない。また、特許文献２に開示の技術によれば、物理記憶装置ではなく論理記憶装置（論理ボリューム）の負荷が分散される。
【０００８】
従って、本発明の目的は、ストレージシステムにおいて冗長性を保ちつつ物理記憶装置の負荷を分散することにある。
【０００９】
本発明の他の目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【００１０】
負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域を選択し、その物理記憶装置よりも負荷の低い物理記憶装置を選択し、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると論理ボリュームに対応したＲＡＩＤレベルに従う冗長性が低下するか否かを判断する。その判断結果が、冗長性が低下しないとの判断結果であるならば、上記選択された記憶領域に記憶されているデータ要素を、上記選択された負荷の低い物理記憶装置が有するバッファ用領域に移動し、選択された記憶領域に対応する、論理ボリュームの論理アドレス空間を、そのバッファ用領域に対応付ける。
【発明を実施するための最良の形態】
【００１１】
第一の実施形態では、ストレージシステムでは、アクセス部により、アクセス先の論理ボリュームを構成する二以上の物理記憶装置の各々が有する各記憶領域に対してその論理ボリュームに対応したＲＡＩＤレベルに基づくアクセスが実行されるが、このストレージシステムに、各記憶領域についてのアクセスに伴う負荷を基に各物理記憶装置についての負荷を算出する負荷算出部と、複数の物理記憶装置の負荷を分散する処理である負荷分散処理を実行する負荷分散処理部が備えられる。負荷分散処理部は、判断部と、データ再配置部とを有する。負荷分散処理では、判断部により、負荷の高い物理記憶装置が有する二以上の記憶領域から一の記憶領域が選択され、その物理記憶装置よりも負荷の低い物理記憶装置が選択され、選択された記憶領域に記憶されているデータ要素を選択された負荷の低い物理記憶装置に移動すると、上記ＲＡＩＤレベル（そのデータ要素が記憶された論理ボリュームに対応するＲＡＩＤレベル）に従う冗長性が低下するか否かが判断される。冗長性が低下しないとの判断結果であれば、負荷分散処理において、データ再配置部により、上記選択された記憶領域に記憶されているデータ要素が、上記選択された負荷の低い物理記憶装置が有するバッファ用領域（論理ボリュームの論理アドレス空間に対応していないバッファ用とされた記憶領域）に移動され、上記選択された記憶領域に対応する、論理ボリュームの論理アドレス空間が、そのバッファ用領域に対応付けられる。
【００１２】
第二の実施形態では、第一の実施形態において、論理ボリュームを構成する各ボリューム要素領域に書かれた複数のデータ要素がそれぞれどの物理記憶装置のどの記憶領域に書き込まれたかを表すボリューム管理情報が更に備えられる。その情報は、例えば、ストレージシステム内の記憶領域に記憶される。冗長性が低下するか否かの判断は、そのボリューム管理情報を参照して行われる判断であって、同一のボリューム要素領域について、上記選択された記憶領域がある物理記憶装置が、上記選択された負荷の低い物理記憶装置であるか否かの判断である。
【００１３】
第三の実施形態では、第一乃至第二の実施形態の少なくとも一つにおいて、データ再配置部により、上記選択された記憶領域からデータ要素が移動された後、その記憶領域がバッファ用領域とされる。具体的には、例えば、その記憶領域に対応付ける論理アドレス空間として無効を表すアドレス空間が対応付けられるか、或いは、その記憶領域に、バッファ用領域を表す値がその記憶領域の属性を表す情報として対応付けられる。
【００１４】
第四の実施形態では、第一乃至第三の実施形態の少なくとも一つにおいて、判断部は、冗長性が低下するとの判断結果になった場合、負荷の高い物理記憶装置よりも負荷が低いが前回の前記判断の際に選択された物理記憶装置よりも負荷が高い物理記憶装置を選択する。その選択された物理記憶装置について、再度、冗長性が低下するか否かの判断を行うことができる。
【００１５】
第五の実施形態では、第一乃至第四の実施形態の少なくとも一つにおいて、負荷の高い物理記憶装置が、複数の物理記憶装置のうち負荷がＫ番目（Ｋは整数）に高い物理記憶装置である場合、初回に選択された負荷の低い物理記憶装置は、複数の物理記憶装置のうち負荷がＫ番目に低い物理記憶装置である。
【００１６】
第六の実施形態では、第一乃至第五の実施形態の少なくとも一つにおいて、判断部が、更に、選択された記憶領域についての負荷を基に、データ要素の移動が行なわれた場合に上記選択された負荷の低い物理記憶装置の負荷が所定値を超えるか否かを判断し、超えるならば、負荷の高い物理記憶装置が有する二以上の記憶領域から、前回に選択された記憶領域よりも負荷の低い記憶領域を選択する。
【００１７】
第七の実施形態では、第一乃至第六の実施形態の少なくとも一つにおいて、データ再配置部により、更に、負荷の低い物理記憶装置が有する二以上の記憶領域から選択された記憶領域に記憶されているデータ要素が、負荷の高い物理記憶装置が有するバッファ用領域に移動される。つまり、負荷の高い物理記憶装置から選択された第一の記憶領域に記憶されているデータ要素が、負荷の低い物理記憶装置にあるバッファ用領域にコピーされ、負荷の低い物理記憶装置から選択された第二の記憶領域に記憶されているデータ要素が、負荷の高い物理記憶装置にあるバッファ用領域にコピーされる。
【００１８】
第八の実施形態では、第七の実施形態において、判断部が、更に、上記の第一の記憶領域の負荷よりも上記の第二の記憶領域の負荷が高いか否かを判断し、高いならば、上記負荷の高い物理記憶装置よりも負荷が低く上記負荷の低い物理記憶装置とは別の物理記憶装置を選択する。
【００１９】
第九の実施形態では、第一乃至第八の実施形態の少なくとも一つにおいて、ストレージシステムに、複数の物理記憶装置のうちの或る物理記憶装置について記憶装置最適化処理を実行する記憶装置最適化部が更に備えられる。記憶装置最適化処理では、或る物理記憶装置について、高速アクセスとなり負荷の低い第一の記憶領域に記憶されているデータ要素が、その或る物理記憶装置におけるバッファ用領域にコピーされ、第一の記憶領域よりも低速アクセスとなり負荷の高い第二の記憶領域に記憶されているデータ要素が、第一の記憶領域にコピーされ、第二の記憶領域に対応付けられていた論理アドレス空間が第一の記憶領域に対応付けられ、第一の記憶領域に対応付けられていた論理アドレス空間がバッファ用領域に対応付けられる。
【００２０】
第十の実施形態では、九の実施形態において、記憶装置最適化処理は、負荷分散処理の後に実行される。
【００２１】
第十一の実施形態では、第九乃至第十の実施形態の少なくとも一つにおいて、記憶装置最適化処理では、更に、第二の記憶領域に記憶されているデータ要素が第一の記憶領域にコピーされた後、その第二の記憶領域がバッファ用領域とされる。
【００２２】
第十二の実施形態では、第九乃至第十一の実施形態の少なくとも一つにおいて、上記或る物理記憶装置は、ディスク媒体のドライブである。第一の記憶領域は、第二の記憶領域よりもそのディスク媒体の外周側に存在する記憶領域である。
【００２３】
第十三の実施形態では、第九乃至第十二の実施形態の少なくとも一つにおいて、ストレージシステムに、複数の物理記憶装置の負荷のばらつきの度合いが所定の度合い以下か否かを判断するばらつき度合い判断部が更に備えられる。所定の度合い以下との判断になれば、前記負荷分散処理が行われることなく記憶装置最適化処理が行われる。
【００２４】
第十四の実施形態では、第九乃至第十三の実施形態の少なくとも一つにおいて、上記或る物理記憶装置には、二以上のバッファ用領域がある。記憶装置最適化部が、或る物理記憶装置のうちの二以上の第一の記憶装置について、二以上のバッファ用領域をそれぞれ使用して並行して記憶装置最適化処理を行うことができる。
【００２５】
第十五の実施形態では、第九乃至第十四の実施形態の少なくとも一つにおいて、或る物理記憶装置について、二以上の記憶領域のそれぞれの記憶領域識別子が連番となっている。各記憶領域に記憶されているデータ要素のコピー先は、各記憶領域の負荷順位を記憶領域識別子とした場合のその記憶領域識別子から識別される記憶領域である。
【００２６】
上述した複数の実施形態のうちの二以上の実施形態を組み合わせることができる。また、上述した各部（例えば、判断部、データ再配置部、記憶装置性能最適化部）は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【００２７】
以下、図面を参照して本発明の一実施形態を詳細に説明する。
【００２８】
図１は、本発明の一実施形態における計算機システムの全体構成例を示す。
【００２９】
図１において、ストレージシステム１０が、ストレージシステム１０全体の制御を行なう制御部１００と、データが記憶されるディスク部２００とから構成される。
【００３０】
ストレージシステム１０には、制御部１００のホストアダプタ１１０を介して、ホスト計算機（ストレージシステム１０を利用する上位装置（例えばアプリケーションサーバ））３００が接続されている。なお、ストレージシステム１０とホスト計算機３００を接続するためのインタフェースには、例えば、SAN（Storage Area Network）１８０が用いられる。SAN１８０の構築には、例えば、ファイバチャネル、SCSI（Small Computer System Interface）、iSCSI（internet Small Computer System Interface）、USB（Universal Serial Bus）、IEEE１３９４バス等を用いることが可能である。また、ストレージシステム１０に接続されるホスト計算機３００は、複数台でもよい。また、SAN１８０に代えて、他種のインタフェースが採用されても良い。
【００３１】
ホスト計算機３００には、ストレージシステム１０の動作を制御する制御ソフトウェアがインストールされており、ホスト計算機３００で実行される制御ソフトウェアにより、ストレージシステム１０に対してコマンドなどを発行し、ストレージシステム１０の動作を制御することができる。ただし、ストレージシステム１０とホスト計算機３００で実行される制御ソフトウェアとは、例えばLAN（Local Area Network）１９０を経由して通信される。ストレージシステム１０の管理、制御或いは保守を行う計算機は、ホスト計算機３００とは別の計算機が使用されても良い。また、LAN１９０に代えて他種の通信ネットワークが利用されても良い。
【００３２】
制御部１００は、ホスト計算機３００が接続されホスト計算機３００との通信を行うホストアダプタ１１０と、ストレージシステム１０全体の制御を行なうCPU（Central Processing Unit）１２０と、CPU１２０がストレージシステム１０を制御するために必要なコンピュータプログラムやデータが記憶されるメモリ１３０とを備える。また、制御部１００は、ホスト計算機３００とディスク部２００との間で通信されるデータが一時的に記憶されるキャッシュメモリ１４０と、パリティデータの計算等を行なうASICs（application specific integrated circuits）１５０と、ディスク部２００を構成する各物理ディスク２１００に接続され各物理ディスク２１００と通信するディスクアダプタ１６０とを備える。
【００３３】
ディスク部２００は、複数のディスクボックス２１０を備えており、各ディスクボックス２１０の中に、複数の物理ディスク２１００を備えている。それら複数の物理ディスク２１００のうちの二以上の物理ディスク２１００で、ＲＡＩＤグループが構成される。物理ディスク２１００は、例えばハードディスクドライブ（HDD）であるが、他種の物理ディスクドライブ、例えば、DVD（Digital Versatile Disk）ドライブなどであっても良い。また、物理ディスクドライブに代えて、半導体メモリドライブ（例えばフラッシュメモリドライブ）などの、他種の物理記憶装置が採用されても良い。
【００３４】
図２は、物理ディスク２１００が提供する記憶空間の構成例を示す。図１６は、ＲＡＩＤグループが提供する記憶空間の構成例を示す。
【００３５】
図１６に示すように、ＲＡＩＤグループ２５００が提供する記憶空間を基に、一以上の論理的な記憶デバイス（以下、LU（Logical
Unit）と言う）が形成される。一つのLUは、ＲＡＩＤグループを構成する各物理ディスク２１００の記憶空間の一部で構成される。LUは、複数の所定サイズの記憶領域で構成されている。以下、その所定サイズの記憶領域を、便宜上、「ストライプ」と言う。
【００３６】
図２に示すように、物理ディスク２１００が提供する記憶空間は、ｎ個の所定サイズの記憶領域で構成されている。以下、その所定サイズの記憶領域を、「ゾーン」（図では英語で“Zone”と示している）と言う。ここで言う「ゾーン」とは、ストライプの構成要素である。ストライプには、複数のデータ要素や、それら複数のデータ要素を基に計算された冗長データ要素が書かれるが、一つのゾーンには、一つのデータ要素或いは冗長データ要素が書かれる。ゾーンのサイズは、全ての物理ディスク２１００で均一であり、そのサイズは、ホスト計算機３００で実行される制御ソフトウェアにより変更可能である。
【００３７】
Ｎ個のゾーンのうちの、ｎ−１個のゾーンで、データ用領域２２００が構成され、１個のゾーンで、スワップ用領域２３００が構成される。データ用領域２２００は、ユーザデータ要素や冗長データ要素の書込み先として使用され、スワップ用領域２３００は、データ要素を再配置する際の一時的なバッファ用領域として使用される。
【００３８】
図３は、メモリ１３０に記憶されるコンピュータプログラムやデータを示す。
【００３９】
メモリ１３０には、CPU１２０によって実行されるプログラム群１３００と、LU２４００における論理アドレス空間と物理ディスク２１００における物理アドレス空間との対応付けに関する情報が記録されるLU管理テーブル１３１０と、ゾーンに関する情報が記録されるゾーン管理テーブル１３２０と、各ゾーンの負荷状況に関する情報が記録されるゾーン負荷管理テーブル１３３０と、各物理ディスク２１００の負荷状況に関する情報が記録されるディスク負荷管理テーブル１３４０とが記憶される。
【００４０】
ここで、LU管理テーブル１３１０はLU２４００毎、ゾーン管理テーブル１３２０およびゾーン負荷管理テーブル１３３０は、物理ディスク２１００毎にそれぞれ作成される。
【００４１】
また、プログラム群１３００には、例えば、ホスト計算機３００から受信したＩ／Ｏコマンドを処理し各種負荷管理テーブル１３３０及び１３４０を更新するＩ／Ｏ制御プログラム１３０１、物理ディスク間の負荷を分散する負荷分散プログラム１３０２、及び、物理ディスク２１００の性能を最適化するディスク性能最適化プログラム１３０３が含まれる。負荷分散プログラム１３０２は、データ要素のスワップの可否を判定するスワップ可否判定プログラム１３０２１と、スワップ対象を検索するスワップ対象検索プログラム１３０２２と、データ要素のスワップを行うスワッププログラム１３０２３と、負荷分散処理の実行を制御する負荷分散制御プログラム１３０２４とを有する。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するＣＰＵ１２０によって処理が行われるものとする。
【００４２】
図４は、LU管理テーブル１３１０の構成例を示す。
【００４３】
LU管理テーブル１３１０には、ストライプ番号が書かれるカラム１３１１と、ＲＡＩＤレベルが書かれるカラム１３１２と、論理アドレス空間に関する情報が書かれるカラム１３１３と、物理アドレス空間に関する情報が書かれるカラム１３１４とがある。カラム１３１２には、論理アドレス空間の先頭LBA（Logical Brock Address）が書かれるカラム１３１３１と末尾LBAが書かれるカラム１３１３２がある。カラム１３１４には、ユーザデータ要素が存在する物理的な記憶領域の位置を表す情報が書かれるカラム１３１５と、冗長データ要素１が存在する物理的な記憶領域の位置を表す情報が書かれるカラム１３１６、及び、冗長データ要素２が存在する物理的な記憶領域の位置を表す情報が書かれるカラム１３１７がある。カラム１３１５、１３１６及び１３１７には、それぞれ、HDD番号が書かれるカラム１３１５１、１３１６１及び１３１７１と、ゾーン番号が書かれるカラム１３１５２、１３１６２及び１３１７２とがある。LU管理テーブル１３１０には、一つのLUの一つのストライプにつき、一つのレコードが記録される。一つのレコードは、そのストライプの番号、そのLUを有するＲＡＩＤグループのＲＡＩＤレベル、そのストライプに対応する論理アドレス空間に関する情報（先頭LBA及び末尾LBA）、ユーザデータ要素が存在するHDD番号及びゾーン番号、冗長データ１が存在するHDD番号及びゾーン番号、及び、冗長データ２が存在するHDD番号及びゾーン番号で構成される。このレコードから、どのストライプには、どの論理アドレス空間とどの物理アドレス空間とが対応し、対応している物理アドレス空間はどの物理ディスク２１００のどのゾーンで構成されているかがわかる。
【００４４】
なお、「冗長データ要素１」とは、例えば、冗長度が１の場合に作成される冗長データ要素のことである。具体的には、例えば、冗長データ要素１とは、ＲＡＩＤレベルがＲＡＩＤ１の場合に作成されるオリジナルのユーザデータ要素の複製（ミラーリングされたユーザデータ要素）、ＲＡＩＤレベルがＲＡＩＤ５の場合に作成されるパリティデータ要素、或いは、ＲＡＩＤレベルがＲＡＩＤ６の場合に作成される二つの冗長データ要素のうちの一方である。「冗長データ要素２」とは、例えば、冗長度が２の場合に作成される冗長データ要素のことである。具体的には、例えば、冗長データ要素２とは、ＲＡＩＤレベルがＲＡＩＤ６の場合に作成される二つの冗長データ要素のうちの他方である。このため、このテーブル１３１０に対応したLU２４００が存在するＲＡＩＤグループのＲＡＩＤレベルによっては、冗長データ要素１や２に対応するHDD番号及びゾーン番号として、無効値（例えば“N/A”）が記録される。
【００４５】
また、このテーブル１３１０に記録されるHDD番号は、２種類の番号の組合せで表されるが、２種類の番号のうちの一方は、ディスクボックス２１０の番号であり、２種類の番号のうちの他方は、そのディスクボックス２１０内での物理ディスク（HDD）２１００の番号である。
【００４６】
図５は、ゾーン管理テーブル１３２０の構成例を示す。
【００４７】
ゾーン管理テーブル１３２０には、ゾーン番号が書かれるカラム１３２１と、ゾーンの属性が書かれるカラム１３２２と、LU番号が書かれるカラム１３２３と、論理アドレス空間に関する情報が書かれるカラム１３２４と、物理アドレス空間に関する情報が書かれるカラム１３２５と、最適位置情報が書かれるカラム１３２６とがある。カラム１３２４には、論理アドレス空間の開始LBAが書かれるカラム１３２４１と終了LBAが書かれるカラム１３２４２とがある。カラム１３２５には、物理アドレス空間の開始LBAが書かれるカラム１３２５１と終了LBAが書かれるカラム１３２５２とがある。一つのゾーンにつき、一つのレコードが記録される。一つのレコードは、ゾーン番号、ゾーン属性、LU番号、論理アドレス空間の開始LBA及び終了LBA、物理アドレス空間の開始LBA及び終了LBA、及び最適位置情報で構成される。一つのレコードから、どのゾーンがどの論理アドレス空間とどの物理アドレス空間とに対応しているかがわかる。
【００４８】
本実施形態では、図１７に例示するように、物理ディスク２１００におけるディスク媒体の外周側に存在する記憶領域に対応したゾーンには、小さいゾーン番号が割当てられ、そのディスク媒体の内周側に存在する記憶領域に対応したゾーンには、大きいゾーン番号が割当てられる。
【００４９】
また、ゾーン属性としては、ゾーンの状態を示すものであり、例えば、「Data」、「スワップ」、及び「N/A」の３つのパラメータで表すことが可能である。ここで、「Data」（図５では“D”と示されている）とは、ゾーンにユーザデータ要素もしくは冗長データ要素が格納されている状態であることを表し、「スワップ」（図５では“Swap”と示されている）とは、ゾーンがデータ要素の再配置の際に一時的なバッファ用領域として使われる状態であることを表し、「N/A」とは、ゾーンがデータ要素格納用の領域であるが未使用の空間である状態であることを表す。
【００５０】
最適位置情報は、ゾーンに記憶されているデータ要素をどのゾーンに移動させるべきかを表す情報であり、具体的には、例えば、データ要素の移行先のゾーンのゾーン番号である。
【００５１】
図６は、ゾーン負荷管理テーブル１３３０の構成例を示す。
【００５２】
ゾーン負荷管理テーブル１３３０には、ゾーン番号が書かれるカラム１３３１と、コマンド数が書かれるカラム１３３２と、負荷順位が書かれるカラム１３３３とがある。一つのゾーンにつき、ゾーン番号、コマンド数及び負荷順位が書かれる。
【００５３】
ここで、コマンド数とは、対応するゾーンに対するアクセス回数であり、そのゾーンへのアクセスが発生する度にインクリメントされる。
【００５４】
また、負荷順位は、ゾーン毎の負荷の大きさの順位を示すものであり、負荷の大きなゾーンほど、若い番号が割り振られる。具体的には、例えば、負荷の最も大きいゾーンには、“０”という番号が割り振られる。
【００５５】
図７は、ディスク負荷管理テーブル１３４０の構成例を示す。
【００５６】
ディスク負荷管理テーブル１３４０には、HDD番号が書かれるカラム１３４１と、負荷率が書かれるカラム１３４２とがある。一つの物理ディスク２１００につき、HDD番号及び負荷率が記録される。負荷率は、例えば、物理ディスク２１００のIOPS（アクセス回数／秒）と、その物理ディスク２１００に対応したゾーン負荷管理テーブル１３３０に記録されている、各ゾーンのコマンド数とに基づいて算出される。
【００５７】
上述したLU管理テーブル１３１０、ゾーン管理テーブル１３２０、ゾーン負荷管理テーブル１３３０及びディスク負荷管理テーブル１３４０の内容は、ホスト計算機３００で実行される制御ソフトウェアを利用して、ホスト計算機３００のユーザが確認可能である。すなわち、ユーザは、どのLUにおけるどの論理アドレス空間がどのゾーンに対応付けられているかや、物理ディスク単位やゾーン単位での負荷状況等を把握することが可能である。
【００５８】
以下、本実施形態で行われる処理を説明する。
【００５９】
図８は、Ｉ／Ｏコマンド処理の流れの一例を示す。図では、ステップを「Ｓ」と略記している。
【００６０】
Ｉ／Ｏ制御プログラム１３０１は、ホスト計算機３００から受信したＩ／Ｏコマンド（リードコマンド或いはライトコマンド）に応答して、Ｉ／Ｏ処理を実行する（ステップ１００）。具体的には、例えば、Ｉ／Ｏ制御プログラム１３０１は、Ｉ／Ｏコマンドで指定されているＬＵ番号及びＬＢＡを基に、そのＬＵ番号及びＬＢＡから特定される論理アドレス空間に対応した物理アドレス空間を特定し、特定した物理アドレス空間に対応するゾーンにアクセスする。
【００６１】
その後、ステップ１００でのＩ／Ｏ処理に伴い、Ｉ／Ｏ制御プログラム１３０１は、アクセスしたゾーンに対応する、ゾーン負荷管理テーブル１３３０のコマンド数および負荷順位を更新する（ステップ１０１）。
【００６２】
さらに、Ｉ／Ｏ制御プログラム１３０１は、ゾーン負荷管理テーブル１３３０における更新後のコマンド数を基に、アクセスしたゾーンを保持する物理ディスク２１００の負荷率を算出し、算出後の負荷率を、その物理ディスク２１００に対応した既存の負荷率（ディスク負荷管理テーブル１３４０に記録されている負荷率）に上書きする（ステップ１０２）。
【００６３】
以上のＩ／Ｏコマンド処理により、Ｉ／Ｏコマンドに応答してＩ／Ｏ処理が行なわれる都度に、ゾーン負荷管理テーブル１３３０およびディスク負荷管理テーブル１３４０が更新される。
【００６４】
図９は、システム性能最大化処理の流れの一例を示す。
【００６５】
負荷分散制御プログラム１３０２４は、負荷分散処理が必要であるか否かを判定する（ステップ２００）。負荷分散制御プログラム１３０２４は、例えば、ディスク負荷管理テーブル１３４０を参照し、負荷率の差が所定値以上である物理ディスク２１００の組が有れば、負荷分散処理が必要であると判断し、そのような物理ディスク２１００の組が無ければ、負荷分散処理が不必要であると判断する。
【００６６】
負荷分散処理が必要であると判断した場合は（ステップ２００：Ｙｅｓ）、負荷分散制御プログラム１３０２４は、負荷分散処理を実行し（ステップ２０１）、その後、ディスク性能最適化プログラム１３０３にステップ２０２を実行させる。一方、負荷分散処理が不必要であると判断した場合は（ステップ２００：Ｎｏ）、負荷分散制御プログラム１３０２４は、ステップ２０１をスキップし、ディスク性能最適化プログラム１３０３にステップ２０２を実行させる。
【００６７】
ディスク性能最適化プログラム１３０３は、ディスク性能最適化が必要か否かを判断する（ステップ２０２）。具体的には、例えば、ディスク性能最適化プログラム１３０３は、物理ディスク２１００毎に、ゾーン負荷管理テーブル１３３０に記録されている各負荷順位を参照し、内周側にあるゾーンが外周側にあるゾーンよりも高負荷か否かを判断する。内周側にあるゾーンがより高負荷であると判断された場合が、ディスク性能最適化が必要ということであり、そうではない場合が、ディスク性能最適化が不必要ということである。
【００６８】
ディスク性能最適化が必要であると判断した場合は（ステップＳ２０２：Ｙｅｓ）、ディスク性能最適化プログラム１３０３は、ディスクの性能最適化を実行して（ステップ２０３）、システム性能最適化処理を終了する。一方、ディスク性能最適化が不必要であると判断した場合は、ディスク性能最適化プログラム１３０３は、そのままシステム性能最適化処理を終了する。
【００６９】
ここで、システム性能最大化処理は、例えば、定期的に、負荷分散プログラム１３０２における負荷分散制御プログラム１３０２４が起動することで、開始される。定期的なタイミングの例としては、タイマによる一定時間毎の実行や、ホスト計算機３００から受信したコマンド数が特定の数の倍数に到達する毎の実行等、任意の条件を採用することが可能である。また、例えば、不定期的なタイミングの例としては、ストレージシステム１０の管理者がホスト計算機３００にインストールされている制御ソフトウェアを使用し本処理の実行を指示した場合や、ストレージシステム１０が特定のコマンドを受領した場合、もしくは、CPU１２０が特定のコマンドを実行した場合等がある。
【００７０】
図１０は、図９のステップ２０１で行われる負荷分散処理の流れの一例を示す。
【００７１】
負荷分散制御プログラム１３０２４が、ディスク負荷管理テーブル１３４０を参照し、全ての物理ディスク２１００が処理限界に到達しているか否かを判断する（ステップ３００）。少なくとも一つの物理ディスク２１００が処理限界に到達していない場合は（ステップ３００：Ｎｏ）、負荷分散制御プログラム１３０２４は、処理限界に到達している物理ディスク２１００のうちのひとつを、処理対象ディスクとして選択する（ステップ３０１）。一方、全ての物理ディスク２１００が処理限界に到達している場合は（ステップ３００：Ｙｅｓ）、負荷分散制御プログラム１３０２４は、この負荷分散処理を終了する。なぜなら、物理ディスク間でデータ要素を再配置しても、処理限界状態を回避することは困難であるためである。
【００７２】
ステップ３０１の後、負荷分散制御プログラム１３０２４は、スワップ可否判定プログラム１３０２１を呼び出す。スワップ可否判定プログラム１３０２１が、物理ディスク２１００間のデータ要素の再配置により処理対象ディスクの負荷分散が可能であるか否か（スワップ可能か否か）を判断する（ステップ３０２）。
【００７３】
負荷分散制御プログラム１３０２４は、スワップ不可能との判断結果をリターンされた場合は（ステップ３０２：Ｎｏ）、ステップ３０４に進む。一方、負荷分散制御プログラム１３０２４は、スワップ可能との判断結果をリターンされた場合は（ステップ３０２：Ｙｅｓ）、スワッププログラム１３０２３を呼び出す。スワッププログラム１３０２３が、スワップ先ディスクと処理対象ディスク間でデータ要素の入替え（つまりスワップ）を実行する（ステップ３０３）。その後、負荷分散制御プログラム１３０２４は、当該処理対象ディスクの他に処理限界となっている物理ディスクがあるか否かを、ディスク負荷管理テーブル１３４０を基に判断する（ステップ３０４）。他に処理限界となっている物理ディスク２１００が存在する場合は、負荷分散制御プログラム１３０２４は、ステップ３０１に戻り、他に処理限界となっている物理ディスク２１００が存在しない場合は、負荷分散処理を終了する。
【００７４】
図１１は、図１０のステップ３０２で行われるスワップ可否判定処理の流れの一例を示す。
【００７５】
スワップ可否判定プログラム１３０２１が、ステップ３０１で選択された処理対象ディスクを、スワップ元ディスクとして選択し（ステップ４００）、スワップ元ディスクに対応するゾーン負荷管理テーブル１３３０を基に、スワップ元ディスクの中で最大負荷率のゾーンをスワップ元ゾーンとして選択する（ステップ４０１）。
【００７６】
次に、スワップ可否判定プログラム１３０２１が、スワップ対象検索プログラム１３０２２を呼び出す。スワップ対象検索プログラム１３０２２が、スワップ対象となる物理ディスクおよびゾーンを検索する（ステップ４０２）。ステップ４０２にて、スワップ対象ありと判定された場合には、スワップ可否判定プログラム１３０２１が、ステップ４０２のスワップ対象検索プログラム１３０２２からの返却値を、スワップ先ディスク、および、スワップ先ゾーンとしてそれぞれ選択し（ステップ４０３）、その後、スワップ可能であることを示す「Yes」を負荷分散制御プログラム１３０２４に返却し、ステップ３０２を終了する。一方、ステップ４０２にてスワップ対象なしと判定された場合には、スワップ可否判定プログラム１３０２１が、スワップ不可能であることを示す「No」を負荷分散制御プログラム１３０２４に返却し、ステップS３０２を終了する。
【００７７】
図１２は、図１１のステップ４０２で行われるスワップ対象検索処理の流れの一例を示す。
【００７８】
スワップ対象検索プログラム１３０２２は、ディスク負荷管理テーブル１３４０を参照し、負荷率が最も低い物理ディスクを、スワップ先ディスクとして選択する（ステップ５００）。スワップ対象検索プログラム１３０２２は、スワップを実行することでスワップ元ゾーン（ステップ４０１で選択されたゾーン）およびスワップ先ゾーンに格納されているデータの冗長性が低下しないかをチェックする（ステップ５０１）。具体的には、例えば、スワップ対象検索プログラム１３０２２は、LU管理テーブル１３１０を参照し、スワップ先ディスクに、スワップ元ゾーンに記憶されているデータ要素が存在するストライプと同じストライプに存在するデータ要素（ユーザデータ要素及び冗長データ要素）が記憶されていないか否かと、スワップ元ディスクに、スワップ先ゾーンに記憶されているデータ要素が存在するストライプと同じストライプに存在するデータ要素（ユーザデータ要素及び冗長データ要素）が記憶されていないか否かとを判断する。より具体的には、例えば、スワップによりＬＵ管理テーブル１３１０が更新された場合に、ＬＵ管理テーブル１３１０の一つのレコードに、同一のＨＤＤ番号が存在することにならないか否かが判断される。同一のＨＤＤ番号が存在することになれば、冗長性が低下するということになる。
【００７９】
ここで、冗長性が低下する場合とは、例えば、ＲＡＩＤ５で構成されたLUの、同一ストライプのユーザデータ要素もしくは冗長データ要素（パリティデータ要素）が、同一の物理ディスクに２つ以上存在する場合や、ＲＡＩＤ１で構成されたLUの、同一ストライプのマスターデータ要素（オリジナルのユーザデータ要素）およびミラーリングされたデータ要素（冗長データ要素）が、同一の物理ディスクに存在する場合等である。なぜなら、その同一の物理ディスクに障害が発生すると、その同一のストライプに存在する他のデータ要素を復元することができなくなるためである。
【００８０】
冗長性が低下すると判断された場合は（ステップ５０１：Ｙｅｓ）、スワップ対象検索プログラム１３０２２は、スワップ先ディスクとして現在選択されている物理ディスク２１００の次に負荷率の高い物理ディスク２１００が存在するかを判断する（ステップ５０２）。そのような物理ディスク２１００が存在する場合は（ステップ５０２：Ｙｅｓ）、スワップ対象検索プログラム１３０２２は、その物理ディスクが処理限界となっているかを、ディスク負荷管理テーブル１３４０を基に判断する（ステップ５０３）。これは、新たに選択したスワップ先ディスクが処理限界に到達している場合は、スワップ（つまりデータ要素の入替え）を実行しても、負荷分散が行なえないためである。
【００８１】
現在選択中の物理ディスクが処理限界となっていない場合は（ステップ５０３：Ｎｏ）、スワップ対象検索プログラム１３０２２は、選択中の物理ディスクを新たなスワップ先ディスクとして選択し（ステップ５０４）、ステップ５０１に戻る。
【００８２】
一方、ステップ５０２にて該当する物理ディスクがない場合や（ステップ５０２：Ｎｏ）、ステップ５０３にて選択中の物理ディスクが処理限界の状態であると判断された場合は（ステップ５０３：Ｙｅｓ）、スワップ対象検索プログラム１３０２２は、スワップ対象が無しであることを示す「No」をスワップ可否判定プログラム１３０２１にリターンし、ステップ４０２を終了する（ステップ５０５）。
【００８３】
ステップ５０１にて冗長性が低下しないと判断された場合は（ステップ５０１：Ｎｏ）、スワップ対象検索プログラム１３０２２は、選択中のスワップ先ディスクに対応するゾーン負荷管理テーブル１３３０を参照し、負荷率が最小であるゾーンをスワップ先ゾーンとして選択する（ステップ５０６）。
【００８４】
次に、スワップ対象検索プログラム１３０２２は、スワップによりスワップ先ディスクが処理限界となるか否かを判定する（ステップ５０７）。処理限界に到達するかの判断は、スワップ後のコマンド数（スワップ先ゾーンのコマンド数を、スワップ元ゾーンのコマンド数に変更し、変更後のコマンド数と、スワップ先ディスクにおける他のゾーンのコマンド数との合計）が、スワップ先ディスクの処理可能なコマンド数を超えるか否かで行なう。
【００８５】
ステップ５０７にてスワップ先ディスクが処理限界に到達すると判断した場合には（ステップＳ５０７：Ｙｅｓ）、スワップ対象検索プログラム１３０２２は、選択中のスワップ元ゾーンの次に負荷率の高いゾーンを新たなスワップ元ゾーンとして選択する（ステップ５０８）。
【００８６】
次に、スワップ対象検索プログラム１３０２２は、スワップ元ゾーンの負荷率がスワップ先ゾーンの負荷率よりも大きいか否かを判断する（ステップ５０９）。
【００８７】
ステップ５０９にて、スワップ元ゾーンの負荷率がスワップ先ゾーンの負荷率よりも大きい場合は（ステップ５０９：Ｙｅｓ）、スワップ対象検索プログラム１３０２２は、ステップ５０７に戻るが、スワップ元ゾーンの負荷率がスワップ先ゾーンの負荷率よりも小さい場合は（ステップ５０９：Ｎｏ）、ステップ５０２に戻る（すなわち、他にスワップ先ディスクとして相応しい物理ディスクがないかどうかを再度検索する）。なぜなら、スワップ実行によりスワップ元ディスクの負荷が更に高くなってしまうため、スワップ実行は好ましくないためである。
【００８８】
ステップ５０７にて、スワップによりスワップ先ディスクが処理限界とならないと判断された場合には（ステップ５０７：Ｎｏ）、スワップ対象検索プログラム１３０２２は、スワップ対象がありであることを示す「Yes」に加え、現在選択中のスワップ先ディスク（例えばそれのＨＤＤ番号）およびスワップ先ゾーン（例えばそれのゾーン番号）を併せてスワップ可否判定プログラム１３０２１にリターンし、ステップ４０２を終了する（ステップ５１０）。
【００８９】
図１３は、図１０のステップ３０３で行われるスワップ処理の流れの一例を示す。
【００９０】
スワッププログラム１３０２３は、スワップ元ゾーンに記憶されているデータ要素を、スワップ先ディスクにあるスワップ用ゾーン（スワップ用領域２３００を構成するゾーン）へとコピーする処理を開始する（ステップ６００）。
【００９１】
次に、スワッププログラム１３０２３は、スワップ先ゾーンに記憶されているデータ要素を、スワップ元ディスクにあるスワップ用ゾーンにコピーする（ステップ６０１）。
【００９２】
その後、スワッププログラム１３０２３は、ＬＵ管理テーブル１３１０及びゾーン管理テーブル１３２０を更新する。具体的には、例えば、ＬＵ管理テーブル１３１０について言えば、スワッププログラム１３０２３は、スワップ元ゾーンに対応したＨＤＤ番号及びゾーン番号を、スワップ先ディスクにあるスワップ用ゾーン（つまりコピー先のゾーン）に対応したＨＤＤ番号及びゾーン番号に変更し、同様に、スワップ先ゾーンに対応したＨＤＤ番号及びゾーン番号を、スワップ元ディスクにあるスワップ用ゾーン（つまりコピー先のゾーン）に対応したＨＤＤ番号及びゾーン番号に変更する。また、例えば、ゾーン管理テーブル１３２０について言えば、スワッププログラム１３０２３は、スワップ元ゾーン及びスワップ先ゾーンにそれぞれ対応したゾーン属性を「Data」から「Swap」に変更し、且つ、それらにそれぞれ対応したLU番号及び論理アドレス空間を、「N/A」に変更する。また、スワッププログラム１３０２３は、スワップ先ディスクにあるスワップ用ゾーンに対応したゾーン属性を「Swap」から「Data」に変更し、それに対応したLU番号及び論理アドレス空間を、「N/A」から、スワップ元ゾーンに対応していたLU番号及び論理アドレス空間に変更する。さらに、スワッププログラム１３０２３は、スワップ元ディスクにあるスワップ用ゾーンに対応したゾーン属性を「Swap」から「Data」に変更し、それに対応したLU番号及び論理アドレス空間を、「N/A」から、スワップ先ゾーンに対応していたLU番号及び論理アドレス空間に変更する。
【００９３】
スワッププログラム１３０２３は、ゾーン負荷管理テーブル１３３０に記録されているコマンド数及び負荷順位と、ディスク負荷管理テーブル１３４０に記録されている負荷率とをリセットする（例えば全て０に戻す）（ステップ６０５）。
【００９４】
図１４は、図９のステップ２０３で行われるディスク性能最適化処理の流れの一例を示す。なお、その説明では、適宜、図１５を参照する。なお、図１５に記載のＳ７００からＳ７０５は、図１４に記載のＳ７００からＳ７０５に対応している。
【００９５】
ディスク性能最適化プログラム１３０３が、ゾーン並べ替えが必要である物理ディスク（内周側にあるゾーンが外周側にあるゾーンよりも高負荷となっている物理ディスク、以下、最適化対象ディスク）について、データ要素の最適位置を決定する（ステップ７００）。具体的には、ディスク性能最適化プログラム１３０３が、最適化対象ディスクに対応するゾーン負荷管理テーブル１３３０を参照し、そのテーブル１３３０のカラム１３３３に記録されている負荷順位を、最適化対象ディスクに対応するゾーン管理テーブル１３２０のカラム１３２６にコピーする。ゾーン管理テーブル１３２０でもゾーン負荷管理テーブル１３３０でも、テーブルを構成する複数のレコード（一つのゾーンに対応した１件分のデータ）が、ゾーン番号を基にした順番で並んでいる（例えば昇順となっている）。そして、ゾーン番号も負荷順位も、最小値を０とした整数である。このため、ゾーン管理テーブル１３２０において、コピーされた負荷順位は、最適位置情報となり、移動先のゾーンの番号を表すことになる。
【００９６】
以下のステップ７０１からステップ７０６は、最適化対象ディスクにおけるゾーン毎に実行される。
【００９７】
ディスク性能最適化プログラム１３０３は、ゾーン番号と最適位置情報とが一致しているかを判定する（ステップ７０１）。
【００９８】
ステップ７０１において一致が検出された場合は（ステップ７０１：Ｙｅｓ）、そのゾーン番号に対応するゾーンは最適な記憶位置ということなので、ディスク性能最適化プログラム１３０３は、ステップ７０２からステップ７０５を行わず、ステップ７０６を実行する。
【００９９】
一方、ステップ７０１において不一致が検出された場合は（ステップ７０１：Ｎｏ）、ディスク性能最適化プログラム１３０３は、現在の処理対象ゾーン（ゾーン番号が“ｘ”であるゾーン（ｘは整数）、以下、「ゾーン（A）」と呼ぶ）に記憶されているデータ要素“０”を、最適化対象ディスク内のスワップ用ゾーンにコピーする（ステップ７０２）。
【０１００】
次に、ディスク性能最適化プログラム１３０３は、ゾーン（A）に記憶されるべきデータ要素を記憶しているゾーン（以下、「ゾーン（B）」と呼ぶ）、言い換えれば、ゾーン（A）のゾーン番号と同じ値が最適位置情報となっているゾーンを探索する（ステップ７０３）。図１５の例で言えば、ゾーン（A）のゾーン番号が“０”の場合、ゾーン（B）のゾーン番号は“１”である。つまり、ゾーン０（ゾーン番号“０”のゾーン）がゾーン（A）であり、ゾーン１がゾーン（B）であり、ゾーン３がスワップ用ゾーンである。
【０１０１】
ステップ７０２のコピー終了後、ディスク性能最適化プログラム１３０３は、ゾーン（B）に記憶されているデータ要素“１”を、ゾーン（A）にコピーする（ステップ７０４）。これにより、ゾーン（A）に記憶されているデータ要素“０”に、データ要素“１”が上書きされる。
【０１０２】
ステップ７０４のコピー終了後、ディスク性能最適化プログラム１３０３は、LU管理テーブル１３１０とゾーン管理テーブル１３２０を更新する（ステップ７０５）。具体的には、例えば、ディスク性能最適化プログラム１３０３は、ゾーン０に対応したLU番号及び論理アドレス空間を、ゾーン３に対応付け、ゾーン１に対応したLU番号及び論理アドレス空間を、ゾーン０に対応付け、ゾーン３に対応したLU番号及び論理アドレス空間（ここでは、ゾーン３はスワップ用ゾーンであったのでLU番号及び論理アドレス空間はそれぞれ「N/A」）を、ゾーン１に対応付ける。
【０１０３】
その後、ディスク性能最適化プログラム１３０３は、現在の処理対象ゾーンが最終のゾーン（例えばゾーン番号“N”であるゾーン）であるか否かを判断する（ステップ７０６）。最終ゾーンでない場合は、ディスク性能最適化プログラム１３０３は、次のゾーン（例えば、ゾーン番号が“ｘ＋１”のゾーン）を処理対象ゾーンとし、ステップ７０１からステップ７０５の処理を実行する。一方、現在の処理対象ゾーンが最終ゾーンである場合には、ディスク性能最適化プログラム１３０３は、最適化対象ディスクに対応する負荷率、コマンド数及び負荷順位をリセットし（ステップ７０７）、ステップ２０３を終了する。なお、その後、最適化対象ディスクが未だ残っていれば、別の最適化対象ディスクについて、ステップ２０３が実行される。
【０１０４】
以上、上述した実施形態によれば、ＲＡＩＤの冗長性を保ちつつ、物理ディスク２１００間の負荷を均一化するためのスワップと、単一の物理ディスクの性能が最大となるようなスワップとを行うことで、ストレージシステム１０の性能を最大限に引き出すことが期待できる。
【０１０５】
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【０１０６】
例えば、図１８に例示するように、一つの物理ディスク２１００において、スワップ用領域２３００を構成するゾーンの数は、２以上であっても良い。この場合、ディスク性能最適化処理において、２以上のスワップ用ゾーンが並行して使用されても良い。言い換えれば、一つの処理対象ゾーンについてステップ２０３を行うことに代えて、２以上の処理対象ゾーンを選択しそれら２以上の処理対象ゾーンについてステップ２０３が行われてもよい。これにより、一つの物理ディスク２１００にかかるディスク最適化処理の時間長を短縮することができる。
【０１０７】
また、例えば、コマンド数、負荷率などの情報は、ホスト計算機３００からのＩ／Ｏコマンドに従う処理のときのみならず、他の理由によって物理ディスク２１００にアクセスが生じる場合にも更新されても良い。例えば、ＬＵ間のデータのリプレケーション或いはマイグレーションのためのアクセスが行われた場合に更新されても良い。
【図面の簡単な説明】
【０１０８】
【図１】図１は、本発明の一実施形態における計算機システムの全体構成例を示す。
【図２】図２は、物理ディスクが提供する記憶空間の構成例を示す。
【図３】図３は、メモリに記憶されるコンピュータプログラムやデータを示す。
【図４】図４は、LU管理テーブルの構成例を示す。
【図５】図５は、ゾーン管理テーブルの構成例を示す。
【図６】図６は、ゾーン負荷管理テーブルの構成例を示す。
【図７】図７は、ディスク負荷管理テーブルの構成例を示す。
【図８】図８は、Ｉ／Ｏコマンド処理の流れの一例を示す。
【図９】図９は、システム性能最大化処理の流れの一例を示す。
【図１０】図１０は、図９のステップ２０１で行われる負荷分散処理の流れの一例を示す。
【図１１】図１１は、図１０のステップ３０２で行われるスワップ可否判定処理の流れの一例を示す。
【図１２】図１２は、図１１のステップ４０２で行われるスワップ対象検索処理の流れの一例を示す。
【図１３】図１３は、図１０のステップ３０３で行われるスワップ処理の流れの一例を示す。
【図１４】図１４は、図９のステップ２０３で行われるディスク性能最適化処理の流れの一例を示す。
【図１５】図１５は、ディスク性能最適化処理の概要の説明図である。
【図１６】図１６は、ＲＡＩＤグループが提供する記憶空間の構成例を示す。
【図１７】図１７は、物理ディスクが有するディスク媒体における各領域とゾーン番号との対応関係を示す。
【図１８】図１８は、物理ディスクが提供する記憶空間の構成の一変形例を示す。
【符号の説明】
【０１０９】
１０…ストレージシステム  １００…制御部  ２００…ディスク部  ３００…ホスト計算機  ２１００…物理ディスク
【図１】
2008310685.tif 000003
【図２】
2008310685.tif 000004
【図３】
2008310685.tif 000005
【図４】
2008310685.tif 000006
【図５】
2008310685.tif 000007
【図６】
2008310685.tif 000008
【図７】
2008310685.tif 000009
【図８】
2008310685.tif 000010
【図９】
2008310685.tif 000011
【図１０】
2008310685.tif 000012
【図１１】
2008310685.tif 000013
【図１２】
2008310685.tif 000014
【図１３】
2008310685.tif 000015
【図１４】
2008310685.tif 000016
【図１５】
2008310685.tif 000017
【図１６】
2008310685.tif 000018
【図１７】
2008310685.tif 000019
【図１８】
2008310685.tif 000020