(57)【要約】【課題】アクセス時間が最短となるディスクをアクセス先として選択することが可能であるとともに、最大応答時間を短縮したストレージ装置、データ格納方法、データ読出方法、データ格納位置決定プログラム、データ読出位置決定プログラムを提供する。【解決手段】複数のディスク２１１から構成され、全体として冗長性を持つストレージ２であって、アクセス位置決定部２０は、複数の領域に分割された各ディスク２１１の分割後の各領域のデータについて、ディスク２１１を外部から参照するためのアドレスは変更せずに、分割した領域のデータのディスク２１１上の実際に格納位置をディスク２１１ごとに異ならせることにより、各ディスク２１１の互いに冗長関係にあるデータのディスク２１１上の格納位置がディスク２１１ごとに異なるように配置する。【選択図】図１
2009169475.tif 000002
【特許請求の範囲】
【請求項１】
複数のディスクから構成され、全体として冗長性を持つストレージ装置であって、
複数の領域に分割された前記各ディスクの分割後の各領域のデータについて、前記ディスクを外部から参照するためのアドレスは変更せずに、分割した領域のデータの前記ディスク上の実際に格納位置を前記ディスクごとに異ならせることにより、前記各ディスクの互いに冗長関係にあるデータの前記ディスク上の格納位置がディスクごとに異なるように配置したことを特徴とするストレージ装置。
【請求項２】
任意の領域のデータが前記複数のディスクのいずれにおいても特定の格納位置に偏ることなく配置されたことを特徴とする請求項１記載のストレージ装置。
【請求項３】
互いに冗長なデータを格納する関係にある前記各ディスクにおける領域の集合を冗長セット領域と、任意の前記冗長セット領域に関して前記各ディスク上での配置位置が一致するディスクの数を第１のディスク数と定義した場合に、全ての前記冗長セット領域に関して前記第１のディスク数の値が偏らず、該第１のディスク数の最大値が最小になるような条件で、各ディスクの各領域ごとのデータの配置を探索することを特徴とする請求項１又は２記載のストレージ装置。
【請求項４】
任意の前記冗長セット領域に関して、前記各ディスク上での配置位置が、前記ディスクの最外周と最内周との中間点から等距離であるディスクの数を第２のディスク数と定義した場合に、全ての前記冗長セット領域に関して前記第２のディスク数の値が偏らず、該第２のディスク数の最大値が最小になるような条件を加えて前記探索を行うことを特徴とする請求項３記載のストレージ装置。
【請求項５】
任意の二つの冗長セット領域間の各ディスク上での距離について所定値を上回る距離を挟んで二つの冗長セット領域が配置されているディスク数を第３のディスク数と定義した場合に、全ての前記冗長セット領域に関して前記第３のディスク数の値が偏らず、該第３のディスク数の最大値が最小になるような条件を加えて前記探索を行うことを特徴とする請求項３又は４記載のストレージ装置。
【請求項６】
前記各ディスクの領域全体を物理位置ごとに分割し、分割した領域を単位として内部のデータの配置先をアドレスとは必ずしも関係しない順番に並び替えて保存することを特徴とする請求項１から６のいずれか１項記載のストレージ装置。
【請求項７】
前記ディスクを外部から参照するためのアドレスと、前記ディスク上のデータの実際の格納位置とを対応付けたテーブルを有することを特徴とする請求項６記載のストレージ装置。
【請求項８】
データ配置先の変更結果と、各ディスクから取得した現在のディスクの状態の情報、又は最後にアクセスしたアドレスから推定した現在のディスクの状態の情報とに基づいて、各ディスクに対するＲｅａｄアクセスの応答時間を推定することを特徴とする請求項１から７のいずれか１項記載のストレージ装置。
【請求項９】
データ配置先の変更結果とディスクのＲｅａｄ応答時間の推定結果とを用いて、直接データをＲｅａｄする場合と、冗長データをＲｅａｄしてパリティから目的のデータを復元する場合とのアクセス先ディスクの組み合わせから、最短の時間でアクセス対象のデータが得られるようにアクセス先のディスクを選択することを特徴とする請求項８記載のストレージ装置。
【請求項１０】
複数のディスクから構成され、全体として冗長性を持つストレージ装置へのデータ格納方法であって、
複数の領域に分割された前記各ディスクの分割後の各領域のデータについて、前記ディスクを外部から参照するためのアドレスは変更せずに、分割した領域のデータの前記ディスク上の実際に格納位置を前記ディスクごとに異ならせることにより、前記各ディスクの互いに冗長関係にあるデータの前記ディスク上の格納位置がディスクごとに異なるように配置することを特徴とするデータ格納方法。
【請求項１１】
任意の領域のデータを、前記複数のディスクのいずれにおいても特定の格納位置に偏ることなく配置することを特徴とする請求項１０記載のデータ格納方法。
【請求項１２】
請求項１０又は１１記載のデータ格納方法によってストレージ装置に格納されたデータを読み出すデータ読出方法であって、
データ配置先の変更結果と、各ディスクから取得した現在のディスクの状態の情報、又は最後にアクセスしたアドレスから推定した現在のディスクの状態の情報とに基づいて、各ディスクに対するＲｅａｄアクセスの応答時間を推定し、
前記データ配置先の変更結果とディスクのＲｅａｄ応答時間の推定結果とを用いて、直接データをＲｅａｄする場合と、冗長データをＲｅａｄしてパリティから目的のデータを復元する場合とのアクセス先ディスクの組み合わせから、最短の時間でアクセス対象のデータが得られるようにアクセス先のディスクを選択することを特徴とするデータ読出方法。
【請求項１３】
複数のディスクから構成され、全体として冗長性を持つストレージ装置を制御するコンピュータにデータの格納位置を決定させるためのプログラムであって、
前記コンピュータに、複数の領域に分割された前記各ディスクの分割後の各領域のデータについて、前記ディスクを外部から参照するためのアドレスは変更せずに、分割した領域のデータの前記ディスク上の実際に格納位置を前記ディスクごとに異ならせることにより、前記各ディスクの互いに冗長関係にあるデータの前記ディスク上の格納位置がディスクごとに異なるようにデータの格納位置を決定させることを特徴とするデータ格納位置決定プログラム。
【請求項１４】
前記コンピュータに、任意の領域のデータが、前記複数のディスクのいずれにおいても特定の格納位置に偏ることのないようにデータの格納位置を決定させることを特徴とする請求項１３記載のデータ格納位置決定プログラム。
【請求項１５】
請求項１３又は１４記載のデータ格納位置決定プログラムによって決定されたストレージ装置内の格納位置に格納されたデータを読み出すデータ読出方法であって、
前記コンピュータに、データ配置先の変更結果と、各ディスクから取得した現在のディスクの状態の情報、又は最後にアクセスしたアドレスから推定した現在のディスクの状態の情報とに基づいて、各ディスクに対するＲｅａｄアクセスの応答時間を推定させ、
前記データ配置先の変更結果とディスクのＲｅａｄ応答時間の推定結果とを用いて、直接データをＲｅａｄする場合と、冗長データをＲｅａｄしてパリティから目的のデータを復元する場合とのアクセス先ディスクの組み合わせから、最短の時間でアクセス対象のデータが得られるようにアクセス先のディスクを選択させることを特徴とするデータ読出位置決定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数の記憶媒体を有し、各記憶媒体の間で記憶されたデータに冗長性を有し、アクセス要求が完了するまでの時間を短縮したストレージ装置、データ格納方法、データ読出方法、データ格納位置決定プログラム、データ読出位置決定プログラムに関する。
【背景技術】
【０００２】
昨今の情報通信技術の進化とその適用分野の拡大に伴い、情報処理システムが扱うデータ量、及びその重要性が日々増加している。そのためこれらのデータを格納するためのストレージに対してデータを失わないための信頼性が求められている。
【０００３】
これらの要求に対して、記憶媒体としてディスクを持つストレージの信頼性、性能を同時に向上させる方法として非特許文献１に開示されるＲＡＩＤ（Redundant Array of Independent Disks）が用いられている。ＲＡＩＤはストレージが持つ複数のディスク間で冗長性を持たせることによって信頼性とアクセス性とを向上させる技術である。
【０００４】
ＲＡＩＤには、ディスク間の冗長性の取り方によって複数の種類が存在する。
【０００５】
まず、複数のディスクにデータをミラーリングする方法としてＲＡＩＤ１があげられる。ＲＡＩＤ１では同一データが複数のディスクに存在するため、データを記憶した全てのディスクが故障しない限りデータは失われない。よって、ディスクの故障に対する信頼性が向上する。また、複数の媒体にデータが記憶されているため、複数のＲｅａｄアクセスを別々のディスクに対して行うことで並列処理が可能である。よって、ＲＡＩＤ１を用いた場合、単一のディスクと比較してＲｅａｄアクセスに関して並列アクセス性能が向上する。結果として、先行アクセスの処理時間によって、アクセスに対する処理が待たされる時間が短縮されることで、アクセス時の平均応答時間が短縮される。
【０００６】
次に、複数のディスク間でデータとともにそのパリティを持つ方法としてＲＡＩＤ５があげられる。ＲＡＩＤ５では複数のディスクのうちの１台が、他の全てのディスク上のデータのパリティを格納する。そのためＲＡＩＤ５では任意の１台のディスクが故障した場合にパリティを使用してデータを復元することが可能である。よって、ディスクの故障に対する信頼性が向上する。
【０００７】
また、ＲＡＩＤ５では同時に複数のＲｅａｄアクセスが発生した場合に、データが格納されたディスクが互いに異なっていれば並列にアクセス処理できる。よって、ＲＡＩＤ５を用いた場合、単一のディスクと比較してＲｅａｄアクセスに関して並列アクセス性能が向上する。結果として、先行アクセスの処理時間によって、アクセスに対する処理が待たされる時間が短縮されるため、アクセス時の平均応答時間が短縮される。さらに、並列にＲｅａｄアクセスを連続したデータに対して行うことで、Ｒｅａｄアクセスに関して連続アクセス時のスループット性能が向上する。
【０００８】
また、ＲＡＩＤ５では、各ディスクを一定サイズの領域に区切り、領域を単位としてパリティを計算、格納する。さらに、領域ごとにパリティを格納する役割を果たすディスクが異なる。
【０００９】
ＲＡＩＤ５と同様に複数のディスク間のパリティを持つ方法としてＲＡＩＤ６が挙げられる。ＲＡＩＤ６はＲＡＩＤ５と比較すると、２種類の異なる方式で計算したパリティをそれぞれ別のディスクに格納する点が異なる。よって、ディスクが２台故障した場合までデータの復元が可能である。なお、データの格納先のディスクが異なる場合Ｒｅａｄアクセスを並列に行える点はＲＡＩＤ５と同様である。
【００１０】
加えて、今日ではストレージだけではなく、ディスク自身のアクセスの高速化も行われている。ディスクが磁気ディスクである場合、アクセスを行うディスクヘッドがデータを格納している位置まで移動するシークに要する時間が応答時間の多くを占める。そこで、ディスク上に分散して格納される複数のデータに対して効率的にアクセスを行うために、ディスクヘッドの動きを最適化している。
【００１１】
非特許文献２にあげた、一般的にエレベータアルゴリズム又はＳＣＡＮと呼ばれるアルゴリズムでは、複数のアクセス要求を処理する際に、ヘッドが１往復で処理できるように、ディスクアクセスの順序を最適化するアルゴリズムである。これによって、複数のアクセスの合計応答時間を短縮可能である。
【００１２】
また、磁気ディスクからなるディスクでは、ディスク上の近い位置に格納されたデータにアクセスする場合と、遠い位置に格納されたデータにアクセスする場合とでは、前者が後者よりも応答時間が短いという性質を持つ。このためディスク上の物理的に近い位置に連続して使用するデータを格納することで、アクセス時の応答時間の短縮が可能である。
【００１３】
従来はＲＡＩＤによって複数ディスク間での冗長性を利用することでストレージの信頼性向上とともにアクセスの高速化を実現してきた。これらのうちＲＡＩＤによって実現される高速化は上記の各ＲＡＩＤの説明の通り、スループットの向上及び並列アクセス性能の向上に伴う先行アクセスによる待ち時間減少による応答時間の削減である。
【００１４】
しかし、アクセス性能の種類として、上記の２種類とは別に、単体のアクセスに対する処理の応答時間があげられる。アクセス処理の過程で複数のアクセス処理が同一のディスクに格納された情報を読み出す場合、ＲＡＩＤを適用した場合でも複数のコマンドを並列して処理することはディスクにとって不可能である。
【００１５】
上記の状況では、ディスクでのコマンド処理における応答時間が直接的にストレージ全体のアクセス処理に対する応答時間に影響する。ディスクが磁気ディスクである場合、アクセス先のデータ及び磁気ディスク自身の状態によって、アクセスに対する応答時間が異なる。しかし、ＲＡＩＤでは構成する各ディスク応答時間に応じた処理を行わない。よってＲＡＩＤ構成を使用する場合のアクセスに対する最大応答時間は、ディスク単体の最大応答時間よりも長くなる。
【００１６】
そのためＲＡＩＤを使用した場合、ディスク単体を使用した場合と比較してスループット性能や並列アクセス性能が向上するにもかかわらず、アクセスに対する応答時間の最大値が削減されないことが課題となる。例えば、ＲＡＩＤ１を適用したストレージにおいてＲｅａｄアクセスを要求された場合、目的とするデータを取得可能なアクセス先のディスクは複数存在する。各ディスクのアクセス時間が異なる場合、応答時間を短縮するにはアクセス時間が短くなるディスクをアクセス先として選択することが必要である。加えて、最大応答時間を短縮するためには、最大応答時間を発生させるディスクの最大距離のシーク、つまり最外周及び最内周の一方から他方へのシークが発生しないことを保証する必要がある。
【００１７】
しかし、ＲＡＩＤではアクセス時間が短縮されるようなアクセス先のディスク選択は行われていない。また、ＲＡＩＤを用いた場合でも、最大応答時間を発生させることとなるディスクの最大距離のシークは発生する。つまり、ＲＡＩＤによってディスク単体と比べてアクセスに対する最大応答時間を短縮することはできない。
【００１８】
記憶装置においてアクセス性能を向上させることに関する技術として、特許文献１に開示される「記憶制御装置」がある。特許文献１に開示される発明は、同心円状にディスク上に設けられた複数のトラックのうち、外周側のトラックは内周側のトラックよりもセクタ数が多く、データを読み書きする際にアクセス対象の領域をなぞるのに要する時間（すなわちディスクが回転してデータを格納した領域がヘッドの箇所を通過するのに要する時間：回転待ち時間）が短いことを利用して、通常はディスク上の高速な領域（外周側）を使用してアクセス性能を高めると共に、ミラーリングに関してはディスク上の性能の低い領域（内周側）を使用して行うことによって、アクセスに要する時間を短縮するとともに信頼性を向上させようとするものである。
【特許文献１】特開平９−１３４２５８号公報
【非特許文献１】Patterson et al., "A case for Redundant Arrays of Inexpensive Disks (RAID)", Proceedings of the 1988 ACM SIGMOD international conference on Management of data, pp. 109-116
【非特許文献２】Silberschatz et al., "Operating System Concepts Fifth Edition", Addison-Wesley, pp. 435-437
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかし、特許文献１では、ディスク上のデータにアクセスするためのヘッド及びアームをディスクの半径方向に移動させるのに要する時間を低減することに関して何の開示もなされていない。すなわち、最外周及び最内周の一方から他方へのシークが発生しないことを保証する必要があるという上記の課題を解決するものではない。
【００２０】
また、特許文献１では、通常のＲＡＩＤと同様に、冗長データをデータの回復用にしか用いていない。すなわち、ディスク障害の発生時にのみ冗長データを使用し、障害が発生していない状態では直接アクセス対象のデータが格納されたディスクをアクセスする。そのため、冗長データからデータを復元すればより早くアクセス処理が完了できるとしても冗長データを使用しない。
【００２１】
このように、アクセス時間が最短となるディスクをアクセス先として選択することが可能であるとともに、最大応答時間を短縮したストレージ装置は提供されていなかった。
【００２２】
本発明は係る問題に鑑みてなされたものであり、アクセス時間が最短となるディスクをアクセス先として選択することが可能であるとともに、最大応答時間を短縮したストレージ装置、データ格納方法、データ読出方法、データ格納位置決定プログラム、データ読出位置決定プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２３】
上記目的を達成するため、本発明は、第１の態様として、複数のディスクから構成され、全体として冗長性を持つストレージ装置であって、複数の領域に分割された各ディスクの分割後の各領域のデータについて、ディスクを外部から参照するためのアドレスは変更せずに、分割した領域のデータのディスク上の実際に格納位置をディスクごとに異ならせることにより、各ディスクの互いに冗長関係にあるデータのディスク上の格納位置がディスクごとに異なるように配置したことを特徴とするストレージ装置を提供するものである。
【００２４】
また、上記目的を達成するため、本発明は、第２の態様として、複数のディスクから構成され、全体として冗長性を持つストレージ装置へのデータ格納方法であって、複数の領域に分割された各ディスクの分割後の各領域のデータについて、ディスクを外部から参照するためのアドレスは変更せずに、分割した領域のデータのディスク上の実際に格納位置をディスクごとに異ならせることにより、各ディスクの互いに冗長関係にあるデータのディスク上の格納位置がディスクごとに異なるように配置することを特徴とするデータ格納方法を提供するものである。
【００２５】
また、上記目的を達成するため、本発明は、第３の態様として、上記本発明の第２の態様に係るデータ格納方法によってストレージ装置に格納されたデータを読み出すデータ読出方法であって、データ配置先の変更結果と、各ディスクから取得した現在のディスクの状態の情報、又は最後にアクセスしたアドレスから推定した現在のディスクの状態の情報とに基づいて、各ディスクに対するＲｅａｄアクセスの応答時間を推定し、データ配置先の変更結果とディスクのＲｅａｄ応答時間の推定結果とを用いて、直接データをＲｅａｄする場合と、冗長データをＲｅａｄしてパリティから目的のデータを復元する場合とのアクセス先ディスクの組み合わせから、最短の時間でアクセス対象のデータが得られるようにアクセス先のディスクを選択することを特徴とするデータ読出方法を提供するものである。
【００２６】
また、上記目的を達成するため、本発明は、第４の態様として、複数のディスクから構成され、全体として冗長性を持つストレージ装置を制御するコンピュータにデータの格納位置を決定させるためのプログラムであって、コンピュータに、複数の領域に分割された各ディスクの分割後の各領域のデータについて、ディスクを外部から参照するためのアドレスは変更せずに、分割した領域のデータのディスク上の実際に格納位置をディスクごとに異ならせることにより、各ディスクの互いに冗長関係にあるデータのディスク上の格納位置がディスクごとに異なるようにデータの格納位置を決定させることを特徴とするデータ格納位置決定プログラムを提供するものである。
【００２７】
また、上記目的を達成するため、本発明は、第５の態様として、上記本発明の第４の態様に係るデータ格納位置決定プログラムによって決定されたストレージ装置内の格納位置に格納されたデータを読み出すデータ読出方法であって、コンピュータに、データ配置先の変更結果と、各ディスクから取得した現在のディスクの状態の情報、又は最後にアクセスしたアドレスから推定した現在のディスクの状態の情報とに基づいて、各ディスクに対するＲｅａｄアクセスの応答時間を推定させ、データ配置先の変更結果とディスクのＲｅａｄ応答時間の推定結果とを用いて、直接データをＲｅａｄする場合と、冗長データをＲｅａｄしてパリティから目的のデータを復元する場合とのアクセス先ディスクの組み合わせから、最短の時間でアクセス対象のデータが得られるようにアクセス先のディスクを選択させることを特徴とするデータ読出位置決定プログラムを提供するものである。
【発明の効果】
【００２８】
本発明によれば、アクセス時間が最短となるディスクをアクセス先として選択することが可能であるとともに、最大応答時間を短縮したストレージ装置、データ格納方法、データ読出方法、データ格納位置決定プログラム、データ読出位置決定プログラムを提供できる。
【発明を実施するための最良の形態】
【００２９】
図１に、本発明に係るストレージの構成を示す。ストレージ２は、複数のディスク２１１を有する装置であり、アクセスに対する最大応答時間が短縮されないという課題を解決するために、アクセス位置決定部２０は、
・ディスク内の領域をディスク上の物理的位置ごとに分割し、ストレージを構成する各ディスクの外から見たアドレスと、ディスク内部のデータ配置との対応関係を入れ替える機能
・ストレージ内のディスク構成に対して、ストレージへのアクセスに対する最大応答時間が短縮されるように、各ディスク内のデータ配置と外から見たアドレスとの対応関係とを算出する機能
を備える。ストレージ２は、これらの機能を用いてＲｅａｄアクセス時の最大応答時間の短縮を実現する。
【００３０】
具体的には、ディスク内の領域をディスク上の物理的位置ごとに分割し、ストレージを構成する各ディスクの外から見たアドレスと、ディスク内部のデータ配置との対応関係を入れ替える機能（以下、アドレスデータ配置対応関係変更機能）は、ディスク内のデータを外部から参照するためのアドレス空間とディスク内部の各ブロックの位置を表すアドレス空間とが互いに独立している場合、外部からのアクセス先をディスク内部のアドレス（外部からアクセス要求されたデータの格納先領域を指し示すディスク内部におけるアドレス）に変換する。
【００３１】
ストレージ内のディスクに対して、ストレージへのアクセスに対する最大応答時間が短縮されるように、各ディスク内部のデータ配置と外から見たアドレス空間との対応関係を算出する機能（以下、データ配置算出機能）は、ストレージを構成する各ディスクのヘッドがいかなる位置に存在する場合でも、データの読み出しが最大シーク時間よりも短い時間で、データの実体又はデータの実体を復元するのに十分な冗長データの読み出しが可能であることを保証されるように、各ディスク内部のデータ配置を決定する。データ配置はストレージを構成する各ディスクの領域を分割し、各ディスク内で分割した領域を単位として行う。
なお、「シーク時間」とは、ディスク上のデータにアクセスするためのヘッド及びアームがアクセス対象のデータにアクセス可能となるように位置を移動するために要する時間を示す。
【００３２】
上記の方法は、これを適用しない場合に比べてストレージがアクセス要求を処理するためのディスクアクセスの最大応答時間を短縮できる。
【００３３】
具体的には、複数のディスクにまたがってデータの冗長性を持たせたストレージでは、ディスク障害の発生時に冗長データを使用し、障害が発生していない状態では直接アクセス対象のデータが格納されたディスクをアクセスする。そのため、例えばアクセス処理を早く完了したい場合に、冗長データからデータを復元すればより早くアクセス処理が完了できるとしても冗長データを使用しない。また、ストレージが複数のディスクにまたがって冗長性を持つ場合であっても、冗長データがディスクアクセスの応答時間を削減するように配置されていない。そのため、ストレージにおけるディスクアクセスの最大応答時間はディスク単体の最大応答時間と同一である。
【００３４】
一方、本発明においては、ストレージへのアクセス処理時に直接データを格納したディスクと、冗長データを格納したディスクとを選択的に使用するため、例えばアクセス処理を早く完了したい場合には、直接データを格納したディスクにアクセスするか又は冗長データからアクセス対象のデータを復元するかを選択して、最もアクセス処理が早く完了するディスクの組み合わせを選択してアクセス処理を行える。加えて、複数のディスクにまたがった冗長データを、各ディスクのヘッドがいかなる位置に存在する場合でもアクセスがディスク単体の最大シーク時間よりも短い時間でデータの実体又はデータの実体を復元するのに十分な冗長データの読み出しが可能であることが保証されるように配置する。これにより、アクセス処理が最大シーク時間となるアクセスを常時回避でき、ストレージにおけるディスクアクセスの最大応答時間を短縮できる。
【００３５】
本発明の好適な実施の形態に係るストレージシステムについて説明する。
図２に、本実施形態に係るストレージシステムの構成を示す。このシステムは、データにアクセスする１台以上のホスト１と、複数のディスクから構成されるストレージ２とがネットワーク３を介して接続された構成である。
【００３６】
ネットワーク３は、ストレージ２に対して複数のホスト１が接続可能な形態のみならず、ホスト１とストレージ２とが直接接続される形態であっても良い。
【００３７】
図３に、ストレージ２の構成を示す。ストレージ２は、データ記憶部２１、コマンド処理部２２、ストレージ構成情報格納部２３、ディスクアクセス履歴格納部２４、ディスクアドレス変換テーブル２５、アクセス先ディスク選択部２６、ディスクアクセス時間算出部２７、及びデータ配置算出部２８を有する。なお、本実施形態においてはデータ記憶部２１を除く各部が図１におけるアクセス位置決定部２０を構成し、「アドレスデータ配置対応関係変更機能」と「データ配置算出機能」とを実現する。
【００３８】
データ記憶部２１は、ストレージ２に格納されるデータ全てを保持し、後述するコマンド処理部２２からの指示に従ってデータのＲｅａｄや更新（Ｗｒｉｔｅ）を行う。データ記憶部２１は、複数のディスク２１１から構成される。データ記憶部２１を構成するディスク２１１は、互いにミラーまたはパリティとなっており、冗長関係にある。以降、データ記憶部２１を構成するディスク２１１のうち、不足していた場合でもデータの読み出しが可能であるディスクの最大数をデータ記憶部２１の冗長数と定義する。例えば、データ記憶部２１が３台のディスク２１１から構成されており、互いにミラー関係にある場合は、２台のディスクが失われてもデータの読み出しが可能であるため冗長数は２となる。
【００３９】
コマンド処理部２２は、ホスト１から取得したアクセス要求を解釈し、データ記憶部２１に含まれるディスク２１１に対してコマンドを発行し、ストレージ２全体の実際のアクセス処理を行う。また、ディスク２１１に対してコマンドを発行する前に、コマンド発行対象のディスクを決定するために後述するアクセス先ディスク選択部２６に対して、処理中のアクセス要求のデータ記憶部２１におけるアクセス先アドレスと長さとを与え、アクセス先ディスクの決定を要求する。その結果、アクセス先ディスク選択部２６によって選択、指示されたディスク２１１の指定領域にアクセスすることでデータのＲｅａｄ、Ｗｒｉｔｅアクセス処理を行う。
【００４０】
アクセスがＲｅａｄであった場合、アクセス先ディスクが格納しているアクセス対象のデータが冗長データを含むのであれば、コマンド処理部２２は冗長データからアクセス対象のデータを復元する処理を行う。コマンド処理部２２は、アクセス対象のデータを得た後は、アクセス要求元のホスト１に対して結果を返す。
【００４１】
ストレージ構成情報格納部２３は、ストレージ２全体の記憶領域と、記憶領域の実体であるデータ記憶部２１１を構成する複数のディスク２１１との対応関係を格納する。また、各ディスク２１１のアクセス時間の算出に影響する物理的・論理的な構成情報など、アクセス位置に対するアクセスへの応答時間特性に関する情報を格納する。
ストレージ構成情報格納部２３にディスク２１１のアクセス応答時間特性情報として格納されるアクセス応答時間特性の情報は、ディスク２１１がハードディスクである場合、ディスクプラッタ上のブロックの分布状況、ディスクプラッタ数、ディスクヘッドのシーク距離とシーク時間との対応関係などである。
なお、「シーク距離」とは、ディスク上のデータにアクセスするためのヘッド及びアームがアクセス対象のデータにアクセスが可能となるように位置を移動する際の移動距離を示す。
【００４２】
ディスクアクセス履歴格納部２４は、データ記憶部２１に含まれる各ディスク２１１に対するアクセスのアドレス、長さ等のアクセス時のパラメータ履歴を格納する。ディスクアクセス履歴格納部２４は、各ディスク２１１に対してアクセスが行われるごとに履歴を更新する。
【００４３】
ディスクアドレス変換テーブル２５は、後述するアクセス先ディスク選択部２６によって参照され、各ディスク２１１についてディスク外部からディスク上のデータを参照する場合のアドレス空間と、外部のアドレス空間に対するデータの実体のディスク内部での配置状況とを記憶する。換言すると、ディスク上のデータをディスク外部から参照するためのアドレスと、データのディスク上での格納位置である内部のアドレスとの対応関係を記憶する。
【００４４】
ディスクアドレス変換テーブル２５は、ホスト１からアクセス要求されている各ディスク上のデータの実体又は冗長データを参照するためのアドレスに対する、ディスク上での実際の格納位置を表すディスク内部のアドレスを調べるために、アクセス先ディスク選択部２６によって参照される。ディスクアドレス変換テーブル２５に記憶されたディスク内外のアドレス空間の対応関係は、後述するデータ配置算出部２８によって算出されてディスクアドレス変換テーブル２５に記憶される。なお、ディスクアドレス変換テーブル２５に記憶されたディスク内外のアドレス空間の対応関係は、ホスト１からのアクセス要求よりも前にストレージ２の外部から直接ディスクアドレス変換テーブル２５に記憶されても良い。また、ディスクアドレス変換テーブル２５は、データ記憶部２１を構成するディスク２１１のアドレス空間に関する情報を格納するため、ストレージ構成情報格納部２３に含まれる構成であっても良い。
【００４５】
アクセス先ディスク選択部２６は、コマンド処理部２２からの「アクセスの種類、アクセス対象アドレス、長さ」の受理を契機として、アクセス先となるディスク２１１を選択する処理を開始する。アクセス先ディスク選択部２６は、コマンド処理部２２に対してアクセスすべきディスク２１１とその該当領域を結果として返す。
アクセス先ディスク選択部２６は、アクセス対象のデータ及びその冗長データが格納されているディスク２１１及び記憶領域を、ストレージ構成情報格納部２３から読み出したデータ記憶部２１の構成情報を基に特定する。上記の構成情報から特定した記憶領域のアドレスは、アクセス先ディスク選択部２６がさらに上記ディスクアドレス変換テーブル２５を参照して、ディスク２１１上のアクセス対象のデータ又はその冗長データが実際に格納されている領域のアドレスに変換する。以降、ディスク２１１に対するアクセスには上記変換後のアドレスを使用する。
【００４６】
アクセス先ディスク選択部２６は、ストレージ２に対するアクセスがＷｒｉｔｅである場合は、Ｗｒｉｔｅ先に相当するディスク２１１と、その冗長データを格納するディスク２１１の該当領域とをアクセス先としてコマンド処理部２２へ返す。
【００４７】
一方、ストレージ２に対するアクセスがＲｅａｄである場合は、アクセス先ディスク選択部２６は、後述するディスクアクセス時間算出部２７から得られる各ディスク２１１に格納されたアクセス先データ又はそれに対応する冗長データへのアクセス時間を基にアクセス先のディスク２１１を決定し、そのディスク及びアクセス対象のデータが格納された領域の位置をコマンド処理部２２へ返す。
【００４８】
また、アクセス先ディスク選択部２６は、コマンド処理部２２へ返した結果を各ディスク２１１に対するアクセス履歴として、ディスクアクセス履歴格納部２４に格納されている履歴を更新する。
【００４９】
ディスクアクセス時間算出部２７は、アクセス先ディスク選択部２６からアクセス対象のディスク２１１と領域とを指定されると、そのディスクのその領域へのアクセスまでに要する時間を結果として返す。アクセス対象のディスク２１１が、アクセスに対する応答時間を返す機能を備えている場合には、ディスクアクセス時間算出部２７は指定されたアクセス対象領域へのアクセス応答時間を該当するディスク２１１に直接問い合わせ、その結果をアクセス先ディスク選択部２６に返す。アクセス対象のディスク２１１がアクセスに対する応答時間を返す機能を備えていない場合、ディスクアクセス時間算出部２７は、ディスクアクセス履歴格納部２４からアクセス対象のディスク２１１に対して直前に行われたアクセス先の位置情報を読み出し、これと次のアクセス対象領域の位置情報とを用いて、ストレージ構成情報格納部２３から読み出したアクセス対象のディスク２１１のアクセス位置に対するアクセスへの応答時間特性に関する情報からアクセスに要する時間を算出し、その結果をアクセス先ディスク選択部２６へ返す。
【００５０】
データ配置算出部２８は、ストレージ２がホスト１からのアクセス要求を受け付ける前に、各ディスク２１１についてストレージ２のアドレス空間とディスク２１１内部のデータ配置とを決定する。データ配置はストレージ２を構成するディスク２１１の領域を分割し、各ディスク２１１内で分割した領域を単位として行う。配置決定の際は、ヘッドがいかなる位置に存在する場合でもデータの読み出しが各ディスク２１１を単体で使用した場合の最大シーク時間よりも短い時間で、データの実体又はデータの実体を復元するのに十分な冗長データの読み出しが可能であることを保証されるようにする。
【００５１】
データ配置算出部２８は、ディスク２１１のデータ配置を決定するためにストレージ２のアドレス空間に対するディスク２１１の構成を調べる必要がある。そのためデータ配置算出部２８は、ディスク２１１の構成情報をストレージ構成情報格納部２３から取得する。データ配置算出部２８は、ディスク２１１についてのデータ配置を決定すると、その結果をディスクアドレス変換テーブル２５に記憶する。
【００５２】
次に、本実施形態に係るストレージシステムの動作について説明する。
【００５３】
まず、ストレージ２がホスト１からのアクセス要求を受け付ける前に、システムは以下の動作を実行する。
【００５４】
データ配置演算部２８は、まずディスク上の領域を例えば図４（ａ）に示すようにディスクプラッタ３１上の記憶領域を外周から内周にわたって同心円状に複数に分割する。ディスク上のデータ配置は分割した領域単位で行う。図４（ａ）の例では、ディスクプラッタ３１を外周から順番にＡ、Ｂ、Ｃの３領域に均等に分割している。図４（ｂ）は、領域Ａにアクセスする場合のディスクヘッド３２のシーク距離を表している。同様に、図４（ｃ）は、領域Ｂにアクセスする場合のディスクヘッド３２のシーク距離を表している。また、データ記憶部２１に含まれる各ディスク２１１について同様に領域を分割すると、データ記憶部２１に含まれるディスク２１１は互いに冗長構成であることから、図４（ａ）の例で説明すると、各ディスク領域Ａ、Ｂ、Ｃに相当する領域について、それぞれ互いに冗長データを持つ関係にある。以降この関係にある各ディスクの領域を冗長セット領域と呼ぶ。また、各冗長セット領域はディスクの最外周から最内周までの距離を基準にそれぞれ等しい間隔を持つ。
【００５５】
図４（ｂ）、（ｃ）のケースでのシーク距離を比較すると、ディスクプラッタ３１上の外周から内周までの距離をｄとした場合に、領域Ａがディスクヘッド３２の初期位置の場合の最大シーク距離はｄ、一方で領域Ｂが初期位置の場合の最大シーク距離がｄ／２で、領域Ａがディスクヘッド３２の初期位置の場合に最大シーク距離が長くなっていることが分かる。
【００５６】
上記の例の通り、ディスクプラッタ３１を分割した領域のうち、最外周又は最内周に近い領域がディスクヘッド３２の初期位置であるほど、次回のアクセスにおけるシーク距離の最大値が増大する。つまり、分割された領域のうち、ディスク２１１の最外周や最内周のようにシーク距離の最大値が大きくなる領域へのアクセスを回避することで、ストレージ２におけるディスクアクセス時のシーク距離、シーク時間を短縮できる。
【００５７】
また、本実施形態においては、ホスト１からのアクセス要求を処理するためのアクセス先ディスクを、アクセスに要する時間に基づいて選択する。この機能を用いてＲｅａｄアクセス処理の際にシーク距離、シーク時間が長くなるディスク２１１へのアクセスを回避し、冗長データを持つ別のディスク２１１にアクセスすることでシーク距離、シーク時間の増大を抑えることが可能である。
この機能を用いてストレージ２のディスクアクセスにおける最大シーク距離、シーク時間を短縮するためには、全ディスク２１１の同一冗長セット領域について、最大シーク距離がディスク２１１単体の最大シーク距離と等しくなるように配置されているディスク２１１の数が、データ記憶部２１の持つ冗長数以下となることが必要である。この条件を満たす場合、最大シーク距離がディスク２１１単体の最大シーク距離と等しくなるディスク２１１の数が、必ずデータ記憶部２１の持つ冗長数以下である。そのため、Ｒｅａｄアクセス処理の場合は、アクセス先のディスク２１１を選択することで、最大シーク距離がディスク２１１単体の最大シーク距離と等しくなるようなディスク２１１へのアクセスを回避できる。
【００５８】
しかし、ストレージ２において、ＲＡＩＤ構成などによってデータ記憶部２１のディスク２１１が冗長構成をとる場合、通常のストレージでは同一冗長セット領域に含まれる各ディスクの領域は、ディスクプラッタ３１上の同一位置に存在する。よって、最大シーク距離がディスク２１１単体の最大シーク距離と等しくなる最外周や最内周に存在する冗長セット領域は、全てのディスク２１１で同じく最外周又は最内周に存在する。このため、最大シーク距離がディスク２１１単体の最大シーク距離と等しくなる冗長セット領域に対するＲｅａｄアクセスを行う際に、アクセスの際にシーク距離が長くなるディスク２１１がデータ記憶部２１の持つ冗長数以上に多くなる可能性が発生する。
つまり、このような場合はストレージ２がデータの冗長性を持つにも関わらず、最大シーク距離がディスク２１１単体の最大シーク距離と等しくなる。
【００５９】
そこでデータ配置算出部２８は、データの冗長性を持つストレージ２について、全ての冗長セット領域についてディスク２１１の最大シーク距離がディスク単体の最大シーク距離となるディスク２１１の数が、データ記憶部２１の冗長数以下となるように各ディスク２１１において別々に領域のディスク２１１上の格納位置を変更する処理を行う。つまり、最外周や最内周に近い場所に配置された冗長セット領域に対するアクセスを、アクセス先ディスク２１１の選択によって常に回避できることが保証されるように、各ディスクの分割領域の配置を変更する。
【００６０】
ストレージ２のディスク２１１へのＲｅａｄアクセス時の最大シーク距離が最小となるような各ディスクの分割領域の配置方法は、分割領域の配置パターンを全探索することで求められる。しかし、全探索を行う場合には、探索するパターン数は、各ディスク２１１の分割領域数をｎ、データ記憶部２１に含まれるディスク２１１の数をＮとした場合、（ｎ！）の（Ｎ−１）乗である。そのため、ディスク数や分割領域数が多くなった場合に全探索を行うことは困難である。そこで、全探索は行わず、データ記憶部２１に含まれるディスク２１１全体の最大シーク距離を短縮するために必要となる下記の３条件に合致する領域配置の中から一つの配置を取りだし、その配置を近似解として用いる。
【００６１】
一つ目の条件は、冗長セット領域の各ディスク２１１上での配置位置が、各ディスク２１１で可能な限り一致しないようにすることである。これは同じ冗長セット領域が最外周又は最内周に偏って配置されないようにするための条件である。この条件を満たす場合と満たさない場合との具体的な領域配置例を図５に示す。図５において、Ａ、Ｂ、Ｃはそれぞれ独立した冗長セット領域を表す。ディスクプラッタ４１１、４１２、４１３を含む各ディスク及びディスクプラッタ４２１、４２２、４２３を含む各ディスク２１１は、ＲＡＩＤ５で構成されており、３台のうち１台のディスクがパリティディスク（冗長数は１）である。
【００６２】
図５（ａ）に示すディスクプラッタ４１１、４１２、４１３への領域配置は、上記一つ目の条件を満たさない例である。冗長セット領域Ａに着目すると、ディスクプラッタ４１１、４１２において冗長セット領域Ａはディスクプラッタの最外周に配置されている。つまり、三つのディスクのうち二つのディスクで冗長セット領域Ａはディスクプラッタの最外周に配置されており、ディスク上の配置位置が偏っている。同様に、冗長セット領域Ｃについてもディスクプラッタ上の最内周に偏って配置されている。
【００６３】
配置において、例えばディスクプラッタ４１１の領域Ａの最外周側のデータを読み出す場合、ディスクヘッドが最内周にある場合のシーク距離は、ディスク単体の最大シーク距離に等しくなる。ディスクプラッタ４１１におけるシーク距離がディスクの最大シーク距離となる場合、そのアクセスを回避するためにはディスクプラッタ４１２、４１３からデータを読み出す必要がある。ディスクプラッタ４１１の最外周側のデータに対して冗長関係にあるデータは、ディスクプラッタ４１２上の最外周に存在する。よって、ディスクプラッタ４１２のディスクヘッドも最内周に存在する場合、シーク距離はディスク単体の最大シーク距離と等しくなる。よって、ディスクプラッタ４１１、４１２、４１３全体における最大シーク距離は、ディスク単体の最大シーク距離に等しい。結果として、アクセス先ディスクを選択しても最大シーク距離はディスク単体の最大シーク距離から短縮されない。
【００６４】
図５（ｂ）に示すディスクプラッタ４２１、４２２、４２３への領域配置は、上記一つ目の条件を満たす例である。冗長セット領域Ａ、Ｂ、Ｃのいずれについても必ずいずれかのディスクにおいて最外周、中央、最内周に１箇所ずつ配置されている。例えば、ディスクプラッタ４２１上の冗長セット領域Ａの最外周側のデータを読み出す場合、ディスクヘッドが最内周に存在すると、シーク距離はディスク単体の最大シーク距離と等しくなる。ディスクプラッタ４２２では、冗長セット領域Ａ上の最外周側のデータに対してアクセスを行う場合、シーク距離はディスクヘッドが最外周に位置するときに最大となる。この時のシーク距離は、ディスク単体のシーク距離から冗長セット領域Ａの幅を引いた距離に等しくなる。つまり、ディスクプラッタ４２２上では最大シーク距離はディスク単体の最大シーク距離よりも小さくなる。また、ディスクプラッタ４２３では、冗長セット領域Ａは、プラッタの中心部に存在するため、最大シーク距離はディスクプラッタ４２２よりも小さくなる。
よって、冗長セット領域Ａ上のデータにアクセスする場合のデータ記憶部２１全体の最大シーク距離は、ディスク単体の最大シーク距離よりも小さくなる。
冗長セット領域Ｂ、Ｃについても同様に、冗長セット領域上のデータにアクセスする場合のデータ記憶部２１全体の最大シーク距離は、冗長セット領域Ａの場合と等しく、ディスク単体の最大シーク距離よりも小さくなる。
【００６５】
以上により、ディスクプラッタへの領域配置を図５（ｂ）のように行った場合のデータ記憶部２１全体の最大シーク距離は、ディスク２１１単体の最大シーク距離よりも短くなる。
【００６６】
上記の例に示したように、一つ目の条件を満たすことで、各冗長セット領域のＲｅａｄ時の最大シーク距離がディスク単体の最大シーク距離よりも短くなる。
【００６７】
ここで、ディスクプラッタ上の領域分割数について着目する。データ記憶部２１全体の最大シーク距離がディスク２１１単体の最大シーク距離よりも短くなる場合、同じ冗長セット領域が最外周や最内周に偏って配置されないようにすることが必要かつ十分な条件である。データ記憶部２１がミラー又はパリティのディスク２１１を持つ条件下では、ミラー又はパリティのディスク数（冗長数）分のディスク２１１へのアクセスをせずに、データを読み出すことが可能である。つまり、同じ冗長セット領域が最外周又は最内周に配置されているディスク２１１の数がそれぞれ冗長数以下であるという条件を満たす場合にデータ記憶部２１全体の最大シーク距離が、ディスク２１１単体の最大シーク距離よりも短くなる。
【００６８】
以上により、データ記憶部２１に含まれるディスク２１１の数がＮ、冗長数がｐである場合、各ディスク２１１の分割数、つまり冗長セット領域の数がＮ−ｐ＋１以上であれば、冗長数以上のディスクの最外周又は最内周に同一冗長セット領域が配置されず、データ記憶部２１全体の最大シーク距離がディスク２１１単体の最大シーク距離よりも短くなる。
【００６９】
特に、各ディスク２１１の分割数がＮ以上であれば、データ記憶部２１の冗長数、つまり冗長構成によらずデータ記憶部２１全体の最大シーク距離を短縮できる。しかし、分割数が大きくなると、冗長セット領域の配置の探索が困難となるため、各ディスク２１１の分割数はディスク数Ｎと同数を最大値とすることが好ましい。
【００７０】
データ記憶部２１に含まれるディスク２１１全体の最大シーク距離を短縮するための二つ目の条件は、冗長セット領域の各ディスク２１１上での配置位置について、同一冗長セット領域の配置位置のディスクプラッタの最外周と最内周との中央点からの距離がディスク２１１間で可能な限り一致しないようにすることである。これは同じ冗長セット領域が最外周や最内周のように中央点から離れた位置に偏って配置されないようにするための条件である。この条件を満たす場合と満たさない場合の領域配置例を図６に示す。
図６において、Ａ、Ｂ、Ｃ、Ｄはそれぞれ独立した冗長セット領域を表す。ディスクプラッタ５１１、５１２を含む各ディスク及びディスクプラッタ５２１、５２２を含む各ディスク２１１は、ＲＡＩＤ１で構成されており、ミラー構成（冗長数は１）であるとする。
【００７１】
図６（ａ）は、上記二つ目の条件を満たさない例である。ディスクプラッタ５１１、５１２において冗長セット領域Ｄは、それぞれディスクプラッタの最内周及び最外周で、全てのディスクでプラッタ中央点から遠い位置に配置されている。一方、冗長セット領域Ａ、Ｂは、片方のディスクプラッタ上では最外周又は最内周に配置されているが、他方のディスクプラッタでは中央点から近い位置に配置されている。さらに、冗長セット領域Ｃは、ディスクプラッタ５１１、５１２の両方で中央点から近い位置に配置されている。つまり、冗長セット領域Ｄは、ディスクプラッタ上の中央点から遠い位置に偏って配置されている。
【００７２】
この配置において、例えば領域Ｄの中央に格納されているデータを読み出す場合、ディスクプラッタ５１１側からデータを読み出す際の最大シーク距離は、ディスクヘッドが最外周にある場合であり、ディスク２１１単体の最大シーク距離から冗長セット領域Ｄの幅の半分を引いた距離に等しくなる。一方、同一データをディスクプラッタ５１２から読み出す場合の最大シーク距離は、ディスクヘッドが最内周にある場合であり、ディスク２１１単体の最大シーク距離から冗長セット領域Ｄの幅の半分を引いた距離に等しくなる。冗長セット領域Ｄ上のその他の場所のデータを参照する場合、ディスクプラッタ５１１、５１２のいずれか一方における最大シーク距離は、ディスク２１１単体の最大シーク距離から冗長セット領域Ｄの幅の半分を引いた距離よりも必ず小さい。
【００７３】
さらに、冗長セット領域Ａ、Ｂ、Ｃのデータにアクセスする場合の、データ記憶部２１を構成するディスク２１１全体の最大シーク距離を同様に求めると、領域Ａについては最内周側のデータにアクセスする場合にシーク距離が最大になり、その値はディスク２１１単体の最大シーク距離から冗長セット領域一つ分の幅を引いた距離に等しい。同様に、領域Ｂについての最大シーク距離も、ディスク２１１単体の最大シーク距離から冗長セット領域一つ分の幅を引いた距離に等しい。領域Ｃにアクセスする場合の最大シーク距離は、冗長セット領域Ｃの最外周側又は最内周側に格納されたデータにアクセスする場合であり、最大シーク距離はディスク２１１単体の最大シーク距離の半分に等しく、他の冗長セット領域の最大シーク距離よりも短い。
よって、ディスクプラッタ５１１、５１２の状態で分割、配置された場合の最大シーク距離は、ディスク２１１単体の最大シーク距離から冗長セット領域０．５個分の幅を引いた距離である。
【００７４】
図６（ｂ）は、上記二つ目の条件を満たす例である。冗長セット領域Ａ、Ｂ、Ｃ、Ｄのいずれについても必ずいずれかのディスクにおいて中央点から遠い位置と近い位置とに１箇所ずつ配置されている。各冗長セット領域にアクセスする際の最大シーク距離を求めると、いずれの場合も最大シーク距離はディスク２１１単体の最大シーク距離から冗長セット領域１個分の幅を引いた距離である。よって、データ記憶部２１に含まれるディスク２１１全体の最大シーク距離の短縮に用いる二つ目の条件を満たした場合、満たさなかった場合と比較してさらに最大シーク距離が短縮される。
【００７５】
データ記憶部２１に含まれるディスク２１１全体の最大シーク距離を短縮するのに用いる三つ目の条件は、各ディスク２１１において任意の冗長セット領域間の距離について、冗長セット領域の組み合わせによる距離の偏りを防ぐことである。この条件を満たす場合と満たさない場合との具体例を図７に示す。
図７において、Ａ、Ｂ、Ｃはそれぞれ独立した冗長セット領域を表す。ディスクプラッタ６１１、６１２を含む各ディスク、及びディスクプラッタ６２１、６２２を含む各ディスクは、ミラー構成であるとする。
【００７６】
図７（ａ）に示すディスクプラッタ６１１、６１２への領域配置は、上記三つ目の条件を満たさない例である。冗長セット領域Ａ、Ｂ、Ｃ間で連続Ｒｅａｄアクセスが発生した際のシーク距離を計算する。冗長セット領域ＡＢ間、及びＢＣ間についてのディスクプラッタ６１１、６１２上でのシーク距離は、図７（ａ）に示すように常にｄである。一方、冗長セット領域ＡＣ間についてのディスクプラッタ６１１、６１２上でのシーク距離は共にｄ＋ｄ＝２ｄである。よって、冗長セット領域Ａ、Ｂ、Ｃの任意の２領域間で連続Ｒｅａｄアクセスが発生した場合のディスクプラッタ６１１、６１２における最大シーク距離は２ｄである。
【００７７】
一方、図７（ｂ）に示すディスクプラッタ６２１、６２２への領域配置は、上記三つ目の条件を満たす例である。冗長セット領域ＢＣ間で連続Ｒｅａｄアクセスが発生した場合のシーク距離は、ディスクプラッタ６２１、６２２ともにｄである。また冗長セット領域ＡＢ間、ＡＣ間で連続Ｒｅａｄアクセスが発生した場合のシーク距離は、ディスクプラッタ６２１、６２２のうち一方ではｄで他方では２ｄである。ディスクプラッタ６２１、６２２は同一のデータを格納しているため、冗長セット領域Ａ、Ｂ、Ｃの任意の２領域間で連続Ｒｅａｄアクセスが発生した場合のディスクプラッタ６２１、６２２における最大シーク距離はｄである。よって、データ記憶部２１に含まれるディスク２１１全体の最大シーク距離の短縮に用いる三つ目の条件を満たした場合、満たさなかった場合と比較して最大シーク距離を更に短縮できる。
【００７８】
なお、上記のように三つ目の条件を満たすことによって最大シーク距離を短縮できるが、２領域間の距離が短かければ、この条件を満たす場合と満たさない場合とで最大シーク距離の差分が小さいため、シーク時間の差も小さい。よって、特定の二つの冗長セット領域同士の距離は、２領域間の距離が一定値を上回らない範囲であれば、その組み合わせ以外の二つの冗長セット領域の距離よりも大きくなるように偏っても差し支えない。すなわち、距離が一定値を上回る２領域の組み合わせが、特定の二つの冗長セット領域の領域に偏らなければよい。なお、ここでの一定値は設計や仕様に応じて定まる所定の値である。
【００７９】
上記三つの条件に従って各ディスクの分割領域の配置を変更する際に、ストレージ２に格納されたデータの外部からの参照アドレスが配置の変更によって変化しないように、ディスク２１１外における参照アドレスは変更せずに、ディスク２１１にアクセスする際に実際にデータの格納された位置を示すアドレスに変換する方法を用いる。
変換前と変換後とアドレスの対応関係の情報を格納するのがディスクアドレス変換テーブル２５である。また、領域の分割数、配置を決定するために必要となるデータ記憶部２１の構成情報は、ストレージ構成情報格納部２３から取得する。
【００８０】
データ配置算出部２８は、上記の三つの条件を用いてデータ記憶部２１に含まれる各ディスク２１１に対して、ストレージ２のアドレス空間とディスク２１１内部のデータ配置とを以下の手順で算出する。
【００８１】
データ配置算出部２８は、データ記憶部２１に含まれるディスク２１１をディスクの外周から内周にかけて同心円状に等しい数の領域に分割する。それぞれの分割した領域について、データ記憶部２１の外からアクセスした場合のアクセス先アドレスを変更せずに、ディスク２１１上の各領域のデータ格納位置のみを変更する。
【００８２】
まず、全てのディスク２１１のうち一つについては、各領域のデータの配置順序を変更せずに固定する。残りのディスクから一つずつ、分割された領域について順番に同じディスク２１１内の任意の領域のデータを配置する。配置順序は例えば、一つのディスクについてデータが配置されていない領域に対して、ディスク２１１の外周に近い領域から未配置のデータを一つずつ割り当て、そのディスクについて全ての領域にデータの配置が完了した段階で次のディスクの領域に対してデータの配置を行う方法が挙げられる。空き領域に配置するデータは、既にデータを配置済みの領域に対して変更が加えられない限り、一度も該空き領域に配置したことのないデータのみを配置する。配置可能なデータの候補が一つも存在しない場合は、その直前に配置が確定した領域についてデータの配置をキャンセルして、キャンセルした領域のデータを再配置、つまりキャンセルした領域に対して一度も配置したことのないデータの配置を試みる（ステップＳ０１）。
データ配置算出部２８は、前段のステップでデータを配置した結果、データ記憶部２１に含まれるディスク２１１全体の最大シーク距離の短縮に用いる条件を満たしているか確認する。条件は一つ目の条件のみを用いる方法と、一つ目の条件に加えて二つ目及び三つ目の条件の少なくとも一方を用いる方法がある。前段のステップにおけるデータ配置が条件を満たしているかを確認した結果、条件を満たしていない場合（ステップＳ０２／Ｎｏ）、ステップＳ０１において新たに配置した箇所についてキャンセルする。キャンセルした後、ステップＳ０１の処理に戻る（ステップＳ０３）。
【００８３】
ステップＳ０１におけるデータ配置が条件を満たしているか確認した結果、条件を満足している場合（ステップＳ０２／Ｙｅｓ）、データ記憶部２１に含まれる全ディスク２１１の全領域に対してデータの配置が完了しているか確認する。つまり全てのディスク２１１について、データが配置されていない空き領域が残されていないか確認する。確認の結果、データの配置が未完了の場合（ステップＳ０４／Ｎｏ）、ステップＳ０１に戻って残りの配置が未完了の空き領域に対してデータの配置処理を行う。
【００８４】
データの配置が全て完了している場合（ステップＳ０４／Ｙｅｓ）、全てのディスク２１１の全ての分割領域に対してデータの配置が確定したため、その結果をディスクアドレス変換テーブル２５に格納してデータ配置算出処理を完了する（ステップＳ０５）。
【００８５】
上記の処理手順では、全ての分割領域に対してデータの配置が確定した時点で、その配置を結果としている。ここで配置結果を記録し、配置が失敗したものと仮定、つまり直前のステップＳ０２の判定で条件が満たされていないと判断されていたものと仮定して処理を続行し、さらに別のデータ配置結果を探索することも可能である。また、データ配置算出部２８における処理は、必ずしもストレージ２内部で処理する必要はなく、図８に示すアルゴリズムで予め外部で配置結果を計算し、その結果を直接ディスクアドレス変換テーブル２５に格納しても良い。
【００８６】
データ配置算出部２８によるディスク２１１に対するデータ配置処理が完了すると、ホスト１からストレージ２へのアクセス要求が行われて、コマンド処理部２２がアクセス要求を受け取るごとに、システム全体が図９のフローチャートで示された以下の動作を実行する。
【００８７】
コマンド処理部２２は、アクセス先ディスク選択部２６に対してアクセス要求のＲｅａｄ又はＷｒｉｔｅの種別、及びアクセス先のアドレス情報を伝え、データ記憶部２１に含まれるアクセスすべきディスク２１１とアクセス先のアドレス情報とを問い合わせる（ステップＳ１）。
【００８８】
コマンド処理部２２は、アクセス先ディスク選択部２６から返されたアクセスすべきディスク及びそのディスクに対するアクセス先のアドレスを用いて、データ記憶部２１に含まれるディスク２１１に対してアクセスを行う（ステップＳ２）。
【００８９】
コマンド処理部２２は、ホスト１からストレージ２へのアクセス要求がＲｅａｄであるかを判定する（ステップＳ３）。Ｗｒｉｔｅの場合は（ステップＳ３／Ｎｏ）、何もせずそのまま終了する。アクセス要求がＲｅａｄであった場合（ステップＳ３／Ｙｅｓ）、コマンド処理部２２は、ステップＳ２においてアクセス先ディスク選択部２６から返されたアクセス方法がアクセス対象のデータの冗長データをＲｅａｄしているか判定する（ステップＳ４）。冗長データをＲｅａｄせず、直接アクセス対象のデータのみをＲｅａｄしている場合は（ステップＳ４／Ｎｏ）、ステップＳ６へ進む。
【００９０】
ステップＳ２においてアクセス先ディスク選択部２６から返されたアクセス方法がアクセス対象のデータの冗長データをＲｅａｄする方法であった場合（ステップＳ４／Ｙｅｓ）、コマンド処理部２２はデータ記憶部２１に含まれるディスクからＲｅａｄしたデータから、データの冗長性を利用してアクセス対象のデータを復元する（ステップＳ５）。
【００９１】
コマンド処理部２２は、得られたアクセス対象のデータを結果としてホスト１へ返す（ステップＳ６）。
【００９２】
上記のステップＳ１〜Ｓ６の処理を行い、システム全体のアクセス処理が完了する。
【００９３】
上記のステップＳ１において問い合わせが行われるアクセス先ディスク選択部２６における詳細な処理手順について説明する。図１０に、アクセス先ディスク選択部２６の動作の流れを示す。
【００９４】
まず、コマンド処理部２２からアクセス要求のＲｅａｄ又はＷｒｉｔｅの種別及びアクセス先の位置情報を入力されると、ストレージ構成情報格納部２３からストレージ２全体の記憶領域と各ディスクの記憶領域との対応関係情報を読み込む（ステップＳ１１）。
【００９５】
アクセス先ディスク選択部２６は、ステップＳ１１で読み込んだ情報と、コマンド処理部２２から入力されたアクセス要求のＲｅａｄ又はＷｒｉｔｅの種別及びアクセス先のアドレスからアクセス対象のデータが実際に格納されているディスクとディスクの領域内でのアドレスとを求める。また、同時に、アクセス対象データの冗長データが格納されたディスクとディスクの領域内でのアドレスとを求める（ステップＳ１２）。
【００９６】
前段のステップにおいて得られたディスク２１１及び各ディスク２１１に対してアクセスすべきアドレスは、ストレージ２の外部からアクセスした際のアドレスを基に算出している。しかしアドレスについては、ディスク２１１外部から格納されたデータへの参照用アドレスを変更せずに、データの実体の格納先を変更している。そのため、前段のステップで得られたアドレスから、そのアドレスが指し示すデータの実体の格納先アドレスを算出する必要がある。そこでコマンド処理部２２は、前段のステップで得られた各ディスク２１１に対するアクセス先のアドレスについて、ディスクアドレス変換テーブル２５を用いてアクセスすべきデータが実際に格納されているディスク２１１上のアドレスに変換する（ステップＳ１３）。
【００９７】
現在処理中のアクセス要求がＷｒｉｔｅである場合（ステップＳ１４／Ｎｏ）、アクセス先ディスク選択部２６は、ステップＳ１２で求めたアクセス対象データを格納したディスク及びアクセス対象データのディスク内でのアドレスと、Ｗｒｉｔｅによって内容が変化するアクセス対象データの冗長データを格納したディスク及び冗長データのディスク内でのアドレスとをコマンド処理部２２に返して、ステップＳ１９へ進む（ステップＳ１６）。
【００９８】
現在処理中のアクセス要求がＲｅａｄである場合（ステップＳ１４／Ｙｅｓ）、アクセス先ディスク選択部２６は、アクセス対象データ、及びその冗長データを格納するディスクへのアクセス時間をディスクアクセス時間算出部２７に問い合わせる。アクセス時間の問い合わせにより、直接データをＲｅａｄするか冗長データをＲｅａｄしてそのデータから復元するかを選択して、アクセス処理を行う（ステップＳ１６）。
【００９９】
アクセス先ディスク選択部２６は、アクセス時間算出部２７から得られたアクセス対象データ及びその冗長データを格納する各ディスクへのアクセス時間の結果から、各ディスクの最大アクセス時間が最小かつアクセス対象データの復元が可能なディスクの組み合わせを算出する。アクセス先ディスク選択部２６は、この算出結果に基づいて、アクセス完了が早くなるようにアクセス先のディスクを選択する（ステップＳ１７）。
【０１００】
アクセス先ディスク選択部２６は、ステップＳ１７で求めた組み合わせを、アクセス対象データを格納したディスク及びアクセス対象データのアドレス情報としてコマンド処理部２２に返す（ステップＳ１８）。
【０１０１】
アクセス先ディスク選択部２６は、コマンド処理部２２に結果として返したアクセス対象データを格納したディスク及びアクセス対象データのアドレス情報から、ディスクアクセス履歴格納部２４に格納された各ディスクへのアクセス履歴情報を更新する（ステップＳ１９）。
【０１０２】
続いて、上記ステップＳ１６においてアクセス先ディスク選択部２６が問い合わせを行うディスクアクセス時間算出部２７におけるさらに詳細な処理手順について説明する。図１１に、ディスクアクセス時間算出部２７の動作の流れを示す。
【０１０３】
ディスクアクセス時間算出部２７は、アクセス先ディスク選択部２６からデータ記憶部２１に含まれるディスク及びアクセス対象データの格納されたアドレスを入力されると処理を開始する。まず、ストレージ構成情報格納部２３からアクセス時間の問い合わせのあったディスクについて、直接アクセス時間の問い合わせが可能であるか否かの情報を読み込む（ステップＳ１６１）。
【０１０４】
アクセス時間の問い合わせがあったディスクに対して、直接アクセス時間の問い合わせが可能である場合（ステップＳ１６２／Ｙｅｓ）、ディスクアクセス時間算出部２７はアクセス対象のディスクに対して直接アクセス対象データのアドレスを入力してアクセス時間を問い合わせる。問い合わせ完了後、ステップＳ１６７に進む（ステップＳ１６３）。
【０１０５】
アクセス時間の問い合わせがあったディスクに対して、直接アクセス時間を問い合わせできない場合（ステップＳ１６２／Ｎｏ）、ディスクアクセス時間算出部２７は、ディスクアクセス履歴格納部２４からアクセス時間の問い合わせ対象のディスクに関する直前のアクセス先位置の履歴情報を読み出す（ステップＳ１６４）。
【０１０６】
ディスクアクセス時間算出部２７は、ストレージ構成情報格納部２３からのアクセス時間の問い合わせ対象のディスクに関して物理的又は論理的状態に基づく、アクセス位置に対するアクセスへの応答時間特性に関する情報を読み出す（ステップＳ１６５）。
【０１０７】
その後、ディスクアクセス時間算出部２７は、ステップＳ１６４で読み出した直前のアクセス先位置の情報と、現在のアクセス先位置の情報からステップＳ１６５で読み出された特性とを基に、ディスクへのアクセス時間を算出する（ステップＳ１６６）。ステップＳ１６４、Ｓ１６５における処理と合わせて、現在のアクセス先ディスクの物理的又は論理的状態の推測及び各ディスクのＲｅａｄアクセスに対する応答時間を推定する。
【０１０８】
ディスクアクセス時間算出部２７は、得られたアクセス時間をアクセス先ディスク選択部２６に結果として返す（ステップＳ１６７）。
【０１０９】
上記のステップＳ１６５、Ｓ１６６は、図６に示した順序で処理される必要はなく、これらの処理の中で任意に実行順序を変更しても良い。
【実施例１】
【０１１０】
上記ステップＳ０１〜Ｓ０５、及びＳ１〜Ｓ６までの第１の動作例として、ストレージ２のデータ記憶部２１がハードディスク２台から構成され、これらのディスクがＲＡＩＤ１構成を取る場合のホスト１からストレージ２に対してＲｅａｄアクセスが行われた場合の動作を示す。
【０１１１】
データ記憶部２１を構成するディスク２１１の実体であるハードディスクは、図１２に示したブロック配置と以下の特徴を持つディスクを例として用いる。
・アクセス先アドレスに対する応答時間の問い合わせに対応する機能を持たない。
・ハードディスクのプラッタ、ヘッドの数はともに１である。
・アクセスへの応答時間はハードディスクのシーク時間に等しく、ハードディスクのシーク距離とシーク時間とは比例する。
・ハードディスクの最外周から最内周までのシーク時間は１０ｍｓである。
・ブロックを円周上に並べたトラック当たりのブロック数は全てのトラックで１０００である。
・トラックのプラッタ上の配置間隔は等間隔であり、プラッタ上の総トラック数は１００００である。
・プラッタ上のトラックに対して最外周から順に０番を起点に番号を割り当てる。
・ハードディスク上のブロックに対して最外周のトラックから順番にアドレス番号が割り当てられる。例えば、最外周のトラックにはアドレス０から９９９までのブロックが含まれ、最外周から２番目のトラックにはアドレス１０００から１９９９までのブロックが含まれる。
【０１１２】
データ記憶部２１を構成する２台のハードディスクをそれぞれディスクＡ、ディスクＢと称する。ストレージ２全体のアドレス空間と２台のハードディスクのアドレス空間との対応関係は図８に示した通りである。２台のハードディスクはＲＡＩＤ１構成であることから共通のデータを保持し、ストレージ２全体のアドレス空間と２台の各ハードディスクの記憶領域とは一致する。つまり、図１３に示すように、ストレージ２全体のアドレス空間のあるアドレス上のブロックのデータは、各ディスクの同一アドレスに存在するブロックのデータと一致する。
【０１１３】
ホスト１がストレージ２に対してアクセスするよりも先に、ストレージ２のデータ配置算出部２８は、データ記憶部２１のディスクに対するデータの分割、配置を行う。データ配置算出部２８は、ストレージ構成情報格納部２３からデータ記憶部２１がＲＡＩＤ１構成の２台のハードディスクから構成されていることを認識する。
データ配置算出部２８は、図８に示した手順でハードディスクＡ、Ｂについてデータの分割、配置を算出する。各ディスク領域の分割数は、ディスク数と等しい２として配置を決定した結果は図１４に示す通りである。ハードディスクＡは、ディスク外部からの参照アドレスとそれによって指し示されるブロックのディスク上のアドレスとが一致している一方で、ハードディスクＢではアドレス空間が中央を境に２分割され、外部からの参照アドレスがアドレス０から４９９９９９９までのブロックはハードディスクＢのブロックアドレス５００００００以降に格納されており、外部からの参照アドレスがアドレス５００００００以降のブロックは、ハードディスクＢのブロックアドレス０から４９９９９９９までに格納される。さらに、データ配置算出部２８は、算出結果をディスクアドレス変換デーブル２５に格納する。格納される情報は図１５に示されるように、ディスク２１１外部からの参照アドレスに対する各ディスク２１１上のアクセス先データの実体が格納されたブロックアドレスの情報である。
【０１１４】
データ記憶部２１を構成する２台のハードディスクＡ、Ｂについて各ディスクのヘッドの初期位置、つまり直前のアクセス位置は、ディスクＡが最内周、ディスクＢが最外周のトラック上であるとする。この状態でホスト１がストレージ２のアドレス１０００００のブロックのデータに対してＲｅａｄ要求を出す。Ｒｅａｄ要求のコマンドはストレージ２のコマンドキューに格納される。コマンド処理部２２は、ホスト１からストレージ２のアドレス１０００００のブロックに対するＲｅａｄ要求を受け取り、処理を開始する。コマンド処理部２２は、アクセスすべきディスクとディスク上のアドレスとを特定するためにアクセス先ディスク選択部２６に問い合わせを行う。
【０１１５】
アクセス先ディスク選択部２６は、ストレージ構成情報格納部２３からデータ記憶部２１の構成情報を取得する。その結果、構成が図１３に示した通りＲＡＩＤ１であることから、アクセス先ディスク選択部２６は、データ記憶部２１に含まれる各ディスクの内容は一致し、ストレージ２のアドレス空間とデータ記憶部２１を構成する各ハードディスクのアドレス空間とは一致することを認識する。ここで、ストレージ２のアドレス１０００００のブロックのデータを取得するためには、ハードディスクＡ又はＢのアドレス１０００００の指し示すブロックにアクセスすれば良い。よって、アクセス先ディスク選択部２６はディスクアドレス変換テーブル２５を参照して、ハードディスクＡ、Ｂのアクセス先であるアドレス１０００００のブロックのデータの実体の格納先を調べる。その結果、アクセス先ディスク選択部２６は、ハードディスクＡについてはアドレス１０００００のブロック、ハードディスクＢについてはアドレス５１０００００のブロックにデータの実体が格納されていることを認識する。その後、アクセス先ディスク選択部２６は、データ記憶部２１を構成する各ハードディスクのブロックにアクセスするために要する時間をディスクアクセス時間算出部２７に問い合わせる。
【０１１６】
ディスクアクセス時間算出部２７は、ストレージ構成情報格納部２３に格納されている情報を基に、データ記憶部２１を構成するハードディスクについてアクセス時間の問い合わせが可能であることを把握する。そのためアクセス時間を得るために、データ記憶部２１を構成するハードディスクＡ又はＢについて最後にアクセスしたブロックアドレスに関する情報をディスクアクセス履歴格納部２４から取得する。また、ディスクアクセス時間算出部２７は、ストレージ構成情報格納部２３から図１２に示したアクセス先に対するアクセス時間の特性を示すハードディスクの物理的・論理的構成情報を取得する。
【０１１７】
ハードディスクの物理的・論理的構成情報によると、ディスクＡにおけるアクセス先であるアドレス１０００００のブロックは最外周から１０１番目、つまり１００番のトラック上に存在する。一方、ディスクＢにおけるアクセス先であるアドレス５１０００００のブロックは５１０００００／１０００＝５１００番のトラック上に存在する。このときディスクＡ、Ｂのヘッド位置は最終アクセス時のヘッド位置からディスクＡでは最外周、ディスクＢでは最内周のトラック上に存在する。ディスクヘッドがアクセス先のブロックが存在するトラック上にシークするためには、ディスクＡで９９９９−１００＝９８９９個分のトラック、ディスクＢで５１００−０＝５１００個分のトラックについてシークが必要である。２台のディスクはどちらもヘッドのシーク時間とシーク距離とが比例するため、アクセス対象のデータへのシーク時間、すなわちアクセスするために要する時間はディスクＡで１０ｍｓ×９８９９／（１００００−１）≒９．９ｍｓ、ディスクＢで１０ｍｓ×５１００／（１００００−１）≒５．１ｍｓである。よって、ディスクＢからアクセス対象のブロックをＲｅａｄする方がシーク時間、すなわちアクセスへの応答時間が短くなる。
【０１１８】
ディスクアクセス時間算出部２７は、アクセス先ディスク選択部２６に対して上記の計算結果を返す。この結果により、アクセス先ディスク選択部２６はコマンド処理部２２に対して、ディスクＢのアドレス５１０００００のブロックへのアクセスを指示する。コマンド処理部２２は、アクセス先ディスク選択部２６によって指示されたディスク及びブロックに対するアクセスを行い、その結果をホスト１に返して処理を終了する。
【０１１９】
上記処理手順の説明では、ホスト１からストレージ２に対するＲｅａｄアクセスについて説明したが、Ｗｒｉｔｅアクセスについては各ディスク２１１に対するアクセス先アドレスの算出後にディスクアドレス変換テーブルを用いてアクセス対象のデータの実体が格納されているブロックアドレスへとアドレス変換する処理以外は、従来のディスクアレイにおけるＷｒｉｔｅ処理の扱いと同様である。
【０１２０】
ここで、ストレージ２全体の最大シーク時間を算出する。例えば、ハードディスクＡにおいてアクセス先ブロックとディスクヘッドとがディスク上の最外周及び最内周とのそれぞれ正反対の位置に存在する場合、ハードディスクＢではそれらのアクセス先は必ずディスク上の最外周と最内周との中央点に存在するため、ハードディスクＡがシーク時間１０ｍｓ要する場合に、ハードディスクＢのシーク時間は５ｍｓである。よって、最大シーク時間は１０ｍｓよりも小さくなる。また、最大シーク時間は、図１２に示したハードディスクのブロック及びトラックの配置、並びに図１４のデータ配置を基に、２５００番、７５００番のトラック上のブロックにアクセスを行う場合に発生することが分かる。このときのシーク時間は１０ｍｓ×７５００／（１００００−１）≒７．５ｍｓである。
【０１２１】
一方で、図１４に示したデータ配置を行わなかった場合、つまりディスクＡ、Ｂの外部からの参照アドレスとアクセス対象のブロックの実体が存在するアドレスとが一致する場合、最大シーク時間はヘッドとアクセス先がディスク上の最外周、最内周とそれぞれ正反対に存在する場合に発生する。よって、最大シーク時間はハードディスク単体の最大シーク時間と等しい１０ｍｓである。以上により、本実施例において最大シーク時間が削減されていることが確認された。
【実施例２】
【０１２２】
上記ステップＳ０１からＳ０４及びステップＳ１からＳ６までの第２の動作例として、ストレージ２のデータ記憶部２１がハードディスク４台から構成され、これらのディスクがＲＡＩＤ５構成をとる場合に、ホスト１からストレージ２に対してＲｅａｄアクセスが行われた場合の動作について説明する。
【０１２３】
データ記憶部２１を構成するハードディスクの特徴は第１の実施例と同様である。また、データ記憶部２１を構成する４台のハードディスクをそれぞれディスクＡ、Ｂ、Ｃ、Ｄとする。ストレージ２全体のアドレス空間と４台のハードディスクのアドレス空間との対応関係は図９に示した通りである。
【０１２４】
図１６に示すように、各ディスクには連続して１００ブロックにデータが記録される。４台のディスクをそれぞれアドレスの先頭から１００ブロック単位の領域に区切った場合、各ディスクの同一アドレスに存在する領域が互いに冗長関係を持つ組として表される。４台のディスクはＲＡＩＤ５構成であるため、組のうち３台分の領域にはデータの実体が格納される。残りの１台分の領域には３台分の領域のデータのパリティ情報が記録される。例えば、ストレージ２全体のアドレス空間についてアドレス０から９９のブロックがディスクＡのアドレス０から９９に記録され、アドレス１００から１９９のブロックがディスクＢのアドレス０から９９に記録され、アドレス２００から２９９のブロックがディスクＣのアドレス０から９９に記録され、アドレス０から２９９までのブロックのパリティがディスクＤのアドレス０から９９に記録される。また、ＲＡＩＤ５ではパリティを格納するディスクは一定ではないため、例えばアドレス３００から５９９のブロックのパリティはディスクＣのアドレス１００から１９９のブロックに、アドレス６００から８９９のブロックのパリティはディスクＢのアドレス２００から２９９のブロックに、アドレス９００から１１９９のブロックのパリティはディスクＡのアドレス３００から３９９のブロックに格納される。
【０１２５】
ホスト１がストレージ２に対してアクセスを行うより先に、ストレージ２のデータ配置算出部２８はデータ記憶部２１のディスクに対するデータの分割、配置を行う。データ配置算出部２８はストレージ構成情報格納部２３からデータ記憶部２１がＲＡＩＤ５構成で４台のハードディスクから構成されていることを認識する。データ配置算出部２８は図８に示した手順でハードディスクＡ、Ｂ、Ｃ、Ｄについてデータの分割、配置を算出する。
【０１２６】
各ディスク領域の分割数はディスク数と等しい４として配置を決定した結果を図１７に示す。ハードディスクＡは、ディスク外部からの参照アドレスとそれによって指し示されるブロックのディスク上のアドレスとが一致している。ハードディスクＢではアドレス空間が４等分され、外部からの参照アドレスがアドレス０から２４９９９９９間でのブロックはハードディスクＢのブロックアドレス２５０００００から４９９９９９９に、外部からの参照アドレスがアドレス２５０００００から４９９９９９９までのブロックはハードディスクＢのブロックアドレス０から２４９９９９９に、外部からの参照アドレスがアドレス５００００００から７４９９９９９までのブロックはハードディスクＢのブロックアドレス７５０００００以降のブロックに、外部からの参照アドレスが７５０００００以降のブロックはハードディスクＢのブロックアドレス５００００００から７４９９９９９までのブロックに格納される。ハードディスクＣ、Ｄについても図１７に示した通りに外部からの参照アドレスの示すブロックが、各ディスク内のブロックに対応付けされる。さらに、データ配置算出部２８は、算出結果をディスクアドレス変換テーブル２５に格納する。格納される情報は図１８に示すように、ディスク２１１外部からの参照アドレスに対する各ディスク２１１上のアクセス先データの実体が格納されたブロックアドレスの情報である。
【０１２７】
データ記憶部２１を構成する４台のハードディスクについて、各ディスクのヘッドの初期位置、つまり直前のアクセス位置は、外周を０として順にトラック番号を振った場合、ディスクＡが最内周の９９９９番のトラック上、ディスクＢが最外周の０番のトラック上、ディスクＣが９０００番のトラック上、ディスクＤが５０００番のトラック上であるとする。この状態でホスト１がストレージ２のアドレス６５０のブロックのデータに対してＲｅａｄ要求を出す。コマンド処理部２２はホスト１からアドレス６５０のブロックに対するＲｅａｄ要求を受け取り、処理を開始する。コマンド処理部２２はアクセスすべきディスクとディスク上のアドレスとを特定するためにアクセス先ディスク選択部２６に問い合わせを行う。
【０１２８】
アクセス先ディスク選択部２６は、ストレージ構成情報格納部２３からデータ記憶部２１の構成情報を取得し、その結果、図９に示したようにＲＡＩＤ５構成であることから、ストレージ２のアドレス６５０のブロックのデータの実体は、データ記憶部２１を構成するディスクＡのアドレス２５０のブロックに格納されていることを認識する。また、ディスクＡのアドレス２５０の指し示すブロックに対してディスクＢ、ディスクＣ、ディスクＤのアドレス２５０の指し示すブロックに格納されたデータが互いに冗長関係を持つことを認識する。
ここでハードディスクＡ、Ｂ、Ｃ、Ｄのアクセス対象データ又はそのパリティデータを指し示すアドレス２５０のブロックのデータの実体の格納先を、ディスクアドレス変換テーブル２５を参照して調べる。その結果ハードディスクＡについてはアドレス２５０のブロック、ハードディスクＢについてはアドレス２５００２５０のブロック、ハードディスクＣについてはアドレス７５００２５０のブロック、ハードディスクＤについてはアドレス５０００２５０のブロックにデータの実体が格納されていることを認識する。その後、アクセス先ディスク選択部２６は、各ディスクＡ、Ｂ、Ｃ、Ｄのブロックにアクセスするために要する時間をディスクアクセス時間算出部２７に問い合わせる。
【０１２９】
ディスクアクセス時間算出部２７は、データ記憶部２１を構成する各ハードディスクについて、アクセス時間の問い合わせが不可能であることをストレージ構成情報格納部２３から取得する。そのため、アクセス時間を得るためにディスクアクセス履歴格納２４からデータ記憶部２１を構成する各ディスクＡ、Ｂ、Ｃ、Ｄに対して最後にアクセスしたブロックアドレスを取得する。また、ストレージ構成情報格納部２３から図７に示したアクセス先に対するアクセス時間の特性を示す、ハードディスクの物理的・論理的構成情報を取得する。
【０１３０】
ハードディスクの物理的・論理的構成情報によると、ディスクＡにおけるアクセス先であるアドレス２５０のブロックは最外周の０番のトラック上に存在する。ディスクＢにおけるアクセス先である２５００２５０のブロックは２５００番のトラック上に存在する。ディスクＣにおけるアクセス先であるアドレス７５００２５０のブロックは７５００番のトラック上に存在する。ディスクＤにおけるアクセス先であるアドレス５０００２５０のブロックは５０００番のトラック上に存在する。
このとき各ディスクのヘッド位置は最終アクセス時のヘッド位置からそれぞれディスクＡは最内周の９９９９番のトラック上に、ディスクＢは最外周の０番のトラック上に、ディスクＣは９０００番のトラック上に、ディスクＤは５０００番のトラック上に存在する。
アクセス対象のデータの実体が格納されているディスクＡでは、アクセス先であるアドレス２５０のブロック、すなわち０番のトラックへのシーク距離はトラック９９９９個分であるので、アクセスするために要する時間は１０ｍｓ×９９９９／（１００００−１）＝１０ｍｓである。一方で、アクセス対象のデータのパリティが格納されているディスクＢ、Ｃ、Ｄについては、ディスクＢのシーク距離がトラック２５００−０＝２５００個分、ディスクＣがトラック９０００−７５００＝１５００個分、ディスクＤがトラック５０００−５０００＝０個分である。よって、ディスクＢ、Ｃ、Ｄ全てにアクセスを行った場合、全体のシーク時間、すなわちアクセスに要する全体の時間は最大シーク距離を持つディスクＢに依存するので、１０ｍｓ×２５００（１００００−１）≒２．５ｍｓである。
以上により、データの実体を格納するディスクＡに対してＲｅａｄを行った場合と比べて、データのパリティを格納するディスクＢ、Ｃ、Ｄに対してＲｅａｄを行った場合はシーク時間、すなわちアクセスへの応答時間が約７．５ｍｓ短くなる。
【０１３１】
ディスクアクセス時間算出部２７は、アクセス先ディスク選択部２６に対して計算結果を返す。この結果により、アクセス先ディスク選択部２６はコマンド処理部２２に対して、ディスクＢのアドレス２５００２５０のブロック、ディスクＣのアドレス７５００２５０のブロック、ディスクＤのアドレス５０００２５０のブロックに対するＲｅａｄを指示する。コマンド処理部２２は、アクセス先ディスク選択部２６によって指示されたディスク及びブロックに対してＲｅａｄを行う。コマンド処理部２２は、ディスクＢ、Ｃ、ＤのＲｅａｄ結果から、ディスクＡに格納されているアクセス対象データを復元する。復元に要する時間がディスクアクセスに要する時間の短縮幅である７．５ｍｓよりも短ければ、ストレージ２に対するＲｅａｄアクセスに要する時間が短縮される。最後に復元されたアクセス対象データをホスト１に返して処理を終了する。
【０１３２】
上記の処理手順では、ホスト１からストレージ２に対するＲｅａｄアクセスについて説明したが、Ｗｒｉｔｅアクセスについては各ディスク２１１に対するアクセス先アドレスの算出後にディスクアドレス変換テーブルを用いてアクセス対象のデータの実体が格納されているブロックアドレスへとアドレスを変換する処理以外は、従来のディスクアレイにおけるＷｒｉｔｅ処理と同様である。
【０１３３】
ここで、ストレージ２全体の最大シーク時間を算出する。例えば、ハードディスクＡにおいてアクセス先ブロックとディスクヘッドとがディスクの最外周と最内周とのそれぞれ正反対の位置に存在する場合、ハードディスクＡにアクセスした場合のシーク時間は最大１０ｍｓとなる。このときハードディスクＢ、Ｃ、ＤにおいてハードディスクＡの最外周又は最内周のデータをアクセスする場合、図１７に示すように最大でもトラック７５００個分の距離シークで抑えられる。つまり、シーク時間は１０×７５００／（１００００−１）≒７．５ｍｓであるため、ハードディスクＢ、Ｃ、Ｄにアクセスすることで、最大シーク時間は１０ｍｓよりも短くなる。また最大シーク時間は図１２に示したハードディスクのブロック及びトラックの配置並びに図１７に示したデータ配置を基に、任意のハードディスクの１２５０番、８７５０番のトラック上のブロックにアクセス対象のデータの実体が存在する場合に発生する。このときのシーク時間は１０ｍｓ×８７５０／（１００００−１）≒８．７５ｍｓである。
【０１３４】
一方で、図１７に示したデータ配置を行わなかった場合、つまりディスクＡ、Ｂ、Ｃ、Ｄの外部からの参照アドレスとアクセス対象のブロックの実体が存在するアドレスとが一致する場合、最大シーク時間はヘッドとアクセス先とがディスク上の最外周及び最内周とのそれぞれ正反対の位置に存在する場合に発生する。よって、最大シーク時間はハードディスク単体の最大シーク時間と等しい１０ｍｓである。以上により、本実施例において最大シーク時間が削減されていることが確認された。
【０１３５】
なお、上記実施形態は本発明の好適な実施の一例であり、本発明はこれに限定されることはない。
例えば、上記実施形態においてはストレージが複数の磁気ディスク装置によって構成される場合を例として説明したが、ストレージは光ディスク集合装置やテープ集合装置であっても良い。
このように、本発明は様々な変形が可能である。
【図面の簡単な説明】
【０１３６】
【図１】本発明に係るストレージの構成を示す図である。
【図２】本発明の一実施形態における全体のシステム構成を示す図である。
【図３】本発明の一実施形態におけるストレージの構成を示す図である。
【図４】ディスクを外周から内周にかけて同心円状の領域に分割した場合のディスクヘッドの初期位置とアクセス先別のシーク距離との関係を表した図である。
【図５】本発明の一実施形態におけるディスク全体の最大シーク距離の短縮に用いる１番目の条件の満足の有無による違いを表した図である。
【図６】本発明の一実施形態におけるディスク全体の最大シーク距離の短縮に用いる２番目の条件の満足の有無による違いを表した図である。
【図７】本発明の一実施形態におけるディスク全体の最大シーク距離の短縮に用いる３番目の条件の満足の有無による違いを表した図である。
【図８】本発明の一実施形態におけるデータ配置算出部がデータ記憶部に含まれる各ディスクについて各ディスク内部のデータ分割及びストレージ全体のアドレス空間との対応付けを行うデータ配置処理を完了するまでの処理手順を示したフローチャートである。
【図９】本発明の一実施形態におけるホストからストレージがコマンドを受け付けて処理を完了するまでの処理手順を示したフローチャートである。
【図１０】本発明の一実施形態におけるアクセス先のディスクとディスクにおけるアクセス先の位置を決定する処理手順を示したフローチャートである。
【図１１】本発明の一実施形態における各ディスクに対するアクセス時間を算出するための処理手順を示したフローチャートである。
【図１２】本発明の実施例におけるハードディスクのプラッタ上におけるトラック、ブロックの配置を示す図である。
【図１３】本発明の第１の実施例におけるＲＡＩＤ１構成の各ハードディスクのブロックアドレスとストレージのアドレス空間との対応関係を示す図である。
【図１４】本発明の第１の実施例におけるＲＡＩＤ１構成の各ハードディスクに対するデータの実体を格納するブロックアドレスと、ハードディスク外部からの参照アドレスとの対応関係を示す図である。
【図１５】本発明の第１の実施例におけるディスクアドレス変換テーブルを示す図である。
【図１６】本発明の第２の実施例におけるＲＡＩＤ５構成の各ハードディスクのブロックアドレスとストレージのアドレス空間との対応関係を示す図である。
【図１７】本発明の第２の実施例におけるＲＡＩＤ５構成の各ハードディスクに対するデータの実体を格納するブロックアドレスと、ハードディスク外部からの参照アドレスとの対応関係を示す図である。
【図１８】本発明の第２の実施例におけるディスクアドレス変換テーブルを示す図である。
【符号の説明】
【０１３７】
１    ホスト
２    ストレージ
３    ネットワーク
２０    アクセス位置決定部
２１    データ記憶部
２２    コマンド処理部
２３    ストレージ構成情報格納部
２４    ディスクアクセス履歴格納部
２５    ディスクアドレス変換テーブル
２６    アクセス先ディスク選択部
２７    ディスクアクセス時間算出部
２８    データ配置算出部
３１、４１１、４１２、４１３、４２１、４２２、４２３、５１１、５１２、５２１、５２２、６１１、６１２、６２１、６２２    ディスクプラッタ
３２    ディスクヘッド
２１１    ディスク
１１０１    ハードディスク内のプラッタ
１１０２    プラッタ上の最外周トラック
１１０３    プラッタ上の最内周トラック
１１０４    プラッタ上のトラック
１１０５    トラック上のブロック
【図１】
2009169475.tif 000003
【図２】
2009169475.tif 000004
【図３】
2009169475.tif 000005
【図４】
2009169475.tif 000006
【図５】
2009169475.tif 000007
【図６】
2009169475.tif 000008
【図７】
2009169475.tif 000009
【図８】
2009169475.tif 000010
【図９】
2009169475.tif 000011
【図１０】
2009169475.tif 000012
【図１１】
2009169475.tif 000013
【図１２】
2009169475.tif 000014
【図１３】
2009169475.tif 000015
【図１４】
2009169475.tif 000016
【図１５】
2009169475.tif 000017
【図１６】
2009169475.tif 000018
【図１７】
2009169475.tif 000019
【図１８】
2009169475.tif 000020