(57)【特許請求の範囲】
【請求項１】
論理アドレスが連続する複数のブロックデータとそれらブロックデータの障害回復のための冗長データとを含むストライプグループを単位として、ディスクアレイを構成する複数のディスク装置にデータを分散して格納するディスク制御システムにおいて、
前記複数のディスク装置に対して互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、前記複数のストライプグループそれぞれのデータ配置を決定する手段と、
ホストからのディスクアクセス要求と、前記決定されたデータ配置とに基づいて、前記複数のディスク装置に対するアクセスを制御する制御手段であって、前記ホストからのアクセス要求によって隣接する２つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを１度のディスクアクセスで読み出すためのリード要求を発行する制御手段とを具備することを特徴とするディスク制御システム。
【請求項２】
前記データ配置を決定する手段は、
互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納され、且つ前記冗長データが格納されるディスク装置が前記ストライプグループを単位として他のディスク装置に移動されるように、前記複数のストライプグループそれぞれのデータ配置を決定することを特徴とする請求項１記載のディスク制御システム。
【請求項３】
前記各ブロックデータは論理アドレスが連続する複数のサブブロックデータから構成されており、前記各ブロックデータを構成する複数のサブブロックデータは、同一のディスク装置内に物理的に連続して格納されることを特徴とする請求項１記載のディスク制御システム。
【請求項４】
前記制御手段は、
前記ホストからのアクセス要求によって隣接する複数のストライプグループにまたがる範囲のデータの読み出しが要求された場合、前記読み出し要求で指定された範囲をストライプグループ毎に分割し、各ストライプグループ毎にアクセス対象となる各ディスク装置に対して発行すべきリード要求を生成する手段と、
論理アドレスが連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータを検出した時、一度のディスクアクセスで当該ディスク装置から前記データを読み出すように、前記生成されたリード要求の内、アクセス対象のデータそれぞれが論理的に連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータに関するリード要求同士を単一のリード要求に統合する手段とを含むことを特徴とする請求項１記載のディスク制御システム。
【請求項５】
ホストからのアクセス要求に応じて、ディスクアレイを制御するディスク制御システムにおいて、
前記ディスクアレイを構成するＮ＋１台（Ｎ≧２）のディスク装置と、
論理アドレスが連続するデータをブロック単位で異なるＮ台のディスク装置にそれぞれ格納するためのＮ個のデータストライプとそれらＮ個のデータストライプの内容に対応する冗長データを１台のディスク装置に格納するための冗長ストライプとからそれぞれ構成される複数のストライプグループを、前記Ｎ＋１台のディスク装置に割り当てるとともに、互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータを格納するためのデータストライプと、後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータを格納するためのデータストライプとが同一のディスク装置に物理的に連続して割り当てられ、且つ前記冗長ストライプが割り当てられるディスク装置が前記ストライプグループを単位として前記Ｎ＋１台のディスク装置間で巡回されるように、前記Ｎ＋１台のディスク装置に割り当てられる前記複数のストライプグループそれぞれのデータ配置を決定する手段と、
前記ホストからのディスクアクセス要求と前記決定されたデータ配置とに基づいて、前記ディスクアレイをアクセス制御する制御手段であって、前記ホストからのアクセス要求によって隣接する２つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを１度のディスクアクセスで読み出すためのリード要求を発行する制御手段とを具備することを特徴とするディスク制御システム。
【請求項６】
論理アドレスが連続する複数のブロックデータとそれらブロックデータの障害回復のための冗長データとを含むストライプグループを単位として、ディスクアレイを構成する複数のディスク装置にデータを分散して格納するための制御方法であって、
前記複数のディスク装置に対して互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、前記複数のストライプグループそれぞれのデータ配置を決定するステップと、
ホストからのディスクアクセス要求と、前記決定されたデータ配置とに基づいて、前記複数のディスク装置に対するアクセスを制御するステップであって、前記ホストからのアクセス要求によって隣接する２つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを１度のディスクアクセスで読み出すためのリード要求を発行するステップとを具備することを特徴とする制御方法。
【請求項７】
前記データ配置を決定するステップは、
互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納され、且つ前記冗長データが格納されるディスク装置が前記ストライプグループを単位として他のディスク装置に移動されるように、前記複数のストライプグループそれぞれのデータ配置を決定することを特徴とする請求項６記載の制御方法。
【請求項８】
前記各ブロックデータは論理アドレスが連続する複数のサブブロックデータから構成されており、前記各ブロックデータを構成する複数のサブブロックデータは、同一のディスク装置内に物理的に連続して格納されることを特徴とする請求項６記載の制御方法。
【請求項９】
前記アクセスを制御するステップは、
前記ホストからのアクセス要求によって隣接する複数のストライプグループにまたがる範囲のデータの読み出しが要求された場合、前記読み出し要求で指定された範囲をストライプグループ毎に分割し、各ストライプグループ毎にアクセス対象となる各ディスク装置に対して発行すべきリード要求を生成するステップと、
論理アドレスが連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータを検出した時、一度のディスクアクセスで当該ディスク装置から前記データを読み出すように、前記生成されたリード要求の内、アクセス対象のデータそれぞれが論理的に連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータに関するリード要求同士を単一のリード要求に統合するステップを含むことを特徴とする請求項６記載の制御方法。
【請求項１０】
ホストからのアクセス要求に応じて、Ｎ＋１台（Ｎ≧２）のディスク装置から構成されるディスクアレイを制御する制御方法であって、
論理アドレスが連続するデータをブロック単位で異なるＮ台のディスク装置にそれぞれ格納するためのＮ個のデータストライプとそれらＮ個のデータストライプの内容に対応する冗長データを１台のディスク装置に格納するための冗長ストライプとからそれぞれ構成される複数のストライプグループを、前記Ｎ＋１台のディスク装置に割り当てるとともに、互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータを格納するためのデータストライプと、後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータを格納するためのデータストライプとが同一のディスク装置に物理的に連続して割り当てられ、且つ前記冗長ストライプが割り当てられるディスク装置が前記ストライプグループを単位として前記Ｎ＋１台のディスク装置間で巡回されるように、前記Ｎ＋１台のディスク装置に割り当てられる前記複数のストライプグループそれぞれのデータ配置を決定するステップと、
前記ホストからのディスクアクセス要求と前記決定されたデータ配置とに基づいて、前記ディスクアレイをアクセス制御するステップであって、前記ホストからのアクセス要求によって隣接する２つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを１度のディスクアクセスで読み出すためのリード要求を発行するステップとを具備することを特徴とする制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は複数のディスク装置を制御するためのディスク制御システムおよび同システムを制御するための制御方法に関する。
【０００２】
【従来の技術】
近年、サーバコンピュータにおいては、ディスク装置の性能および信頼性の向上の観点から、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）技術が広く使用され始めている。
【０００３】
ＲＡＩＤは、複数のディスク装置をグループ化して単一の論理ディスクを実現する技術である。ＲＡＩＤを用いたディスク制御システムにおいては、データとその障害回復のための冗長データとを複数のディスク装置に分散させることにより、性能および信頼性の向上を図ることが出来る。
【０００４】
ＲＡＩＤのレベルには０，１，４，５，１０などの種類があるが、その中でも価格対容量比の良さと優れた耐障害性から、ＲＡＩＤ５が広く利用されている。ＲＡＩＤ５は、複数のデータストライプとパリティストライプとを含むストライプグループを複数台のディスク装置に対して横断配置したディスクアレイから構成されている。ＲＡＩＤ５のディスクアレイは、データ記憶用の複数のディスク装置にパリティ記憶用のディスク装置を１台付加したＮ＋１（Ｎは２以上）台のディスク装置を含んでおり、且つパリティをストライプグループ単位でＮ＋１（Ｎは２以上）台のディスク装置に分散させることによってパリティディスクへのアクセスの集中を防止できるようにしている。
【０００５】
【発明が解決しようとする課題】
しかし、通常のＲＡＩＤ５ディスクアレイにおいては、論理アドレスが連続する複数のブロックデータをストライプグループ単位で複数のディスク装置に順番に配置しているため、個々のディスク装置で見た場合には、ストライプグループ間におけるブロックデータの論理アドレスは不連続となる。このため、ストライプグループの境界にまたがるようなデータのリードがホストから要求された場合には、その要求されたデーサイズによらず、必ず２以上のリード要求がディスクアレイに発行されることになる。これは、ＲＡＩＤ５ディスクアレイのデータ読み出し性能を低下させる要因となる。よって、十分な読み出し性能を実現するためには、複数のディスク装置に対する並列アクセス性のみならず、個々のディスク装置で見た場合における論理アドレスの連続性についても考慮する必要性がある。
【０００６】
本発明はこのような事情を考慮してなされたもので、ストライプグループ間のデータ配置の関係を最適化することにより、ディスク装置に対するアクセス回数を十分に低減することが可能なディスク制御システムおよびその制御方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、論理アドレスが連続する複数のブロックデータとそれらブロックデータの障害回復のための冗長データとを含むストライプグループを単位として、ディスクアレイを構成する複数のディスク装置にデータを分散して格納するディスク制御システムにおいて、前記複数のディスク装置に対して互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、前記複数のストライプグループそれぞれのデータ配置を決定する手段と、ホストからのディスクアクセス要求と、前記決定されたデータ配置とに基づいて、前記複数のディスク装置に対するアクセスを制御する制御手段であって、前記ホストからのアクセス要求によって隣接する２つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを１度のディスクアクセスで読み出すためのリード要求を発行する制御手段とを具備することを特徴とする。
【０００８】
このディスク制御システムにおいては、隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、複数のストライプグループそれぞれのデータ配置が決定されるので、隣接するストライプグループの境界を挟む論理的に連続する２つのブロックデータは同一のディスク装置内に物理的に連続して格納されることになる。したがって、並列アクセス性能を維持しつつ、個々のディスク装置で見た場合におけるストライプグループ間における論理アドレスの連続性を保証することできるので、ホストからのアクセス要求によって隣接する２つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを１度のディスクアクセスで読み出すためのリード要求を発行することにより、データリードのためのディスク装置に対するアクセス回数を十分に低減することが可能となり、読み出し性能の向上を図ることができる。
【０００９】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図１には、本発明の一実施形態に係るディスク制御システムの構成が示されている。このディスク制御システムは例えばサーバコンピュータなどのコンピュータシステムに搭載されて使用されるものであり、図示のように、ＲＡＩＤコントローラ１２とディスクアレイ１３とから構成されている。ＲＡＩＤコントローラ１２はホスト１１からのディスクアクセス要求に応じて、ディスクアレイ１３を構成する複数のディスク装置（ＤＩＳＫ＃１〜ＤＩＳＫ＃３）を制御する。ホスト１１は、コンピュータシステムのＣＰＵ、およびこのＣＰＵによって実行されるオペレーティングシステム、アプリケーションなどのプログラム、等から構成されている。
【００１０】
ＲＡＩＤコントローラ１２は複数のディスク装置（ＤＩＳＫ＃１〜ＤＩＳＫ＃３）をグループ化して、それら複数のディスク装置（ＤＩＳＫ＃１〜ＤＩＳＫ＃３）によって単一の論理ディスクを実現する。すなわち、ＲＡＩＤコントローラ１２の機能により、ホスト１１からは複数のディスク装置（ＤＩＳＫ＃１〜ＤＩＳＫ＃３）は大容量の単一の論理ディスクとして見える。ここでは、複数のディスク装置（ＤＩＳＫ＃１〜ＤＩＳＫ＃３）のグルーピングを、ＲＡＩＤ５レベルに基づいて行う場合を想定することにする。
【００１１】
ＲＡＩＤ５のディスクアレイ１３は、データ記憶用のＮ（Ｎは２以上）台のディスク装置に障害回復のための冗長データ（パリティ）を記憶するための１台の冗長ディスク装置を付加したＮ＋１台のディスク装置で構成される。図においてはＮ＝２の場合、つまり３台のディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３によってＲＡＩＤ５のディスクアレイ１３が構成されている場合が例示されている。ディスク装置（ＤＩＳＫ＃１〜ＤＩＳＫ＃３）の各々は、ＩＤＥまたはＳＣＳＩ等のインタフェースを持つ磁気ディスクドライブ装置（ハードディスクドライブＨＤＤ）から構成されている。
【００１２】
ＲＡＩＤコントローラ１２は、パリティ付きのストライピングによってディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３をグループ化し、ディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３にデータおよびパリティを分散して記憶する。ストライピングは、パリティ付きの複数のストライプグループＳ１，Ｓ２，Ｓ３，Ｓ４，…を図示のようにディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３に横断配置することによって実現される。
【００１３】
ストライプグループＳ１，Ｓ２，Ｓ３，Ｓ４，…の各々は、論理アドレスが連続する２つのブロックデータを互いに異なる２台のディスク装置に格納するための２つのデータストライプとそれらデータストライプの障害回復のための冗長データ（パリティ）を残りの１台のディスク装置に格納するための冗長ストライプとから構成される。ディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３の各々に割り当てられるデータまたはパリティの単位がストライプであり、データ格納用の２つのデータストライプとそれに対応するパリティ格納用の１つの冗長ストライプ（パリティストライプ）とからなるストライプの集合がストライプグループである。
【００１４】
複数のストライプグループＳ１，Ｓ２，Ｓ３，Ｓ４，…それぞれのデータ配置はＲＡＩＤコントローラ１２によって決定・管理される。これにより、論理アドレスが連続するデータを、ストライプグループＳ１，Ｓ２，Ｓ３，Ｓ４，…の単位で３台のディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３に分散して格納することが出来ると共に、パリティストライプが割り当てられるディスク装置を、ストライプグループ単位で３台のディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３間で順に移動させることができる。
【００１５】
このことから、ＲＡＩＤ５のディスクアレイ１３においては、パリティストライプが割り当てられるディスク装置が変更される単位を、ストライプグループと定義することが出来る。
【００１６】
ＲＡＩＤコントローラ１２には、図示のように、制御部１２１、データ配置管理部１２２、およびデータバッファ１２３が設けられている。制御部１２１は、データ配置管理部１２２によって決定されたストライプグループＳ１，Ｓ２，Ｓ３，Ｓ４，…それぞれのデータ配置に従って、ディスクアレイ１３に対するホスト１１からのアクセス要求を処理する。ホスト１１からは、ディスクアレイ１３は一つの論理ディスクドライブとして見える。制御部１２１は、ホスト１１からのアクセス要求で指定された論理アドレスが、ディスクアレイ１３内のどのディスク装置のどの物理アドレスに対応するかを決定し、該当するディスク装置それぞれに物理的なアクセス要求（データリード要求／データライト要求）を発行する。ホスト１１からのアクセス要求がライトの場合には、新たなパリティを再計算するために、既に書き込まれているデータおよびパリティの読み出しも行われる。データバッファ１２３はホスト１１からの書き込みデータを一時的に保持したり、個々のディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３から読み出されたデータを一時的に保持するため等に使用される。
【００１７】
さらに、制御部１２１には、１）あるディスク装置が故障した場合、パリティを用いて故障したディスク装置上のデータを復元する機能、２）故障したディスク装置が新たなディスク装置に交換された場合に、残りの他のディスク装置それそれのデータ、パリティを用いて、新たなディスク装置に記憶すべき内容を復元する機能、なども設けられている。
【００１８】
データ配置管理部１２２は、複数のストライプグループＳ１，Ｓ２，Ｓ３，Ｓ４，…それぞれのデータ配置を決定および管理する。これにより、３台のディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３にどのようにブロックデータおよびパリティが配置されるかが管理される。具体的には、このデータ配置管理部１２２は、
１）論理アドレスの値から該当するブロックデータの物理的な格納位置（物理ディスク番号＃１〜＃３、および当該物理ディスク番号で指定されるディスク装置上の物理アドレス）を算出するための演算式、または
２）論理アドレスと物理的な格納位置（物理ディスク番号＃１〜＃３、および当該物理ディスク番号で指定されるディスク装置上の物理アドレス）との対応関係を示すマッピングテーブル、
等によって実現される。
【００１９】
本実施形態で用いられる、１）の演算式（ＲＡＩＤブロック計算式）の一例について説明する。簡単のために、ブロックデータの単位をセクタとすると、セクタ番号（ＳｅｃｔｏｒＮｕｍ）とＨＤＤ構成台数（ＨＤＤＮｕｍ）から、次のようにして、アクセス対象のセクタ番号（ＳｅｃｔｏｒＮｕｍ）に対応する行番号（ＲｏｗＮｕｍ）と列番号（ＣｏｌｕｍｎＮｕｍ）を計算する。ここで、行番号（ＲｏｗＮｕｍ）は上から何番目のストライプグループであるかを示し、列番号（ＣｏｌｕｍｎＮｕｍ）は左から何台目のディスク装置であるかを示す。また、各ストライプグループ（行）毎に、そのストライプグループ内でセクタ番号が最小のブロックデータを割り当てられるディスク装置（列番号）を、スタート列番号（ＳｔａｒｔＣｏｌｕｍｎＮｕｍ）と定義する。
【００２０】
（１）ディスクが奇数台で構成される場合
・ＲｏｗＮｕｍ  ＝  （  ＳｅｃｔｏｒＮｕｍ  −  １）／（  ＨＤＤＮｕｍ  −  １）  ＋  １
・ＳｔａｒｔＣｏｌｕｍｎＮｕｍ＝  （  ＨＤＤＮｕｍ  −  （  ＲｏｗＮｕｍ  ％  （ＨＤＤＮｕｍ  −  １）））  ％  ＨＤＤＮｕｍ  ＋  １
・ＣｏｌｕｍｎＮｕｍ＝  （  ＳｔａｒｔＣｏｌｕｍｎＮｕｍ  ＋  ＳｅｃｔｏｒＮｕｍ  ＋  １  ）  ％  （  ＨＤＤＮｕｍ  ＋  １  ）
ここで、％  は剰余（ｍｏｄ）を示す。各行におけるパリティの列番号は、当該行の中で最大セクタ番号に対応する列番号の次の列番号である（最大セクタ番号に対応する列番号がＨＤＤ構成台数と等しい場合には、パリティの列番号は１となる）。
【００２１】
（２）ディスクが偶数台で構成される場合
・ＲｏｗＮｕｍ  ＝  （  ＳｅｃｔｏｒＮｕｍ  −  １）／（  ＨＤＤＮｕｍ  −  １）  ＋  １
・ＳｔａｒｔＣｏｌｕｍｎＮｕｍ＝  （  ＨＤＤＮｕｍ  −  （  ＲｏｗＮｕｍ  ％  （ＨＤＤＮｕｍ  −  １）））  ％  （ＨＤＤＮｕｍ  −  ２）  ＋  １
・ＣｏｌｕｍｎＮｕｍ＝（ＳｔａｒｔＣｏｌｕｍｎＮｕｍ  ＋  ＳｅｃｔｏｒＮｕｍ  ＋  １  ＋  （ＲｏｗＮｕｍ  ／  Ｃｏｎｓｔａｎｔ））  ％  （ＨＤＤＮｕｍ  ＋１）
Ｃｏｎｓｔａｎｔ  ：適当な定数を利用する。
【００２２】
偶数台の場合、上記計算式では、偶数番号のカラムにのみ、パリティが置かれてしまう。したがって、ＲｏｗＮｕｍ等の適切な数値を使って、パリティが置かれるカラムを偶数番号としないようにするために、ＣｏｌｕｍｎＮｕｍに数値を足し込む。
【００２３】
すなわち、本実施形態においては、基本的には、各ストライプグループ内の２つのデータストライプそれぞれに連続する論理アドレスが割り当てられるように、ストライプグループＳ１，Ｓ２，Ｓ３，Ｓ４，…それぞれに順番に論理アドレスを割り当てる。この場合、隣接するストライプグループ同士の間、つまりストライプグループＳ１とＳ２の間、Ｓ２とＳ３の間、Ｓ３とＳ４の間、…、で、論理アドレスが連続するブロックデータ（データストライプ）が同一のディスク装置内に物理的に連続して格納されるようなデータ配置が利用される。このデータ配置の一例を図１に示す。
【００２４】
図１において、Ｄ１〜Ｄ８はそれぞれブロックデータを示しており、またそれらＤ１〜Ｄ８の添え字１〜８の順番は論理アドレスの順番（上記式のセクタ番号）に対応している。またＰ１〜Ｐ４はそれぞれ対応するストライプグループＳ１〜Ｓ４内のブロックデータから生成されたパリティである。
【００２５】
すなわち、先頭のストライプグループＳ１においては、論理アドレスが連続するブロックデータＤ１，Ｄ２に対応するデータストライプがそれぞれディスク装置ＤＩＳＫ＃１，＃２に割り当てられ、またブロックデータＤ１，Ｄ２から生成されるパリティＰ１を格納するためのパリティストライプがディスク装置ＤＩＳＫ＃３に割り当てられている。２番目のストライプグループＳ２においては、ストライプグループＳ１のブロックデータＤ１，Ｄ２に後続する２つのブロックデータＤ３，Ｄ４が格納されることになるが、この場合、先行するストライプグループＳ１内で最も論理アドレスの大きいブロックデータＤ２に後続する次のブロックデータＤ３は、ブロックデータＤ２が格納されるディスク装置（ここではディスク装置ＤＩＳＫ＃２）と同一のディスク装置に物理的に連続して格納される。つまり、２番目のストライプグループＳ２においては、ブロックデータＤ３，Ｄ４に対応するデータストライプがそれぞれディスク装置ＤＩＳＫ＃２，＃３に割り当てられ、またブロックデータＤ３，Ｄ４から生成されるパリティＰ２を格納するためのパリティストライプがディスク装置ＤＩＳＫ＃１に割り当てられている。ここで、ブロックデータＤ４に対応するデータストライプをディスク装置ＤＩＳＫ＃３に割り当てているのは、ストライプグループＳ１とＳ２の間でパリティストライプが格納されるディスク装置を異ならせるためである。
【００２６】
３番目のストライプグループＳ３においては、ストライプグループＳ２のブロックデータＤ３，Ｄ４に後続する２つのブロックデータＤ５，Ｄ６が格納されることになる。この場合も、先行するストライプグループＳ２内で最も論理アドレスの大きいブロックデータＤ４に後続する次のブロックデータＤ５は、ブロックデータＤ４が格納されるディスク装置（ここではディスク装置ＤＩＳＫ＃３）と同一のディスク装置に物理的に連続して格納される。つまり、３番目のストライプグループＳ３においては、ブロックデータＤ５，Ｄ６に対応するデータストライプがそれぞれディスク装置ＤＩＳＫ＃３，＃１に割り当てられ、またブロックデータＤ５，Ｄ６から生成されるパリティＰ３を格納するためのパリティストライプがディスク装置ＤＩＳＫ＃２に割り当てられている。これにより、ストライプグループＳ２とＳ３との間においても、上述のＳ１とＳ２との間の関係と同様に、先行するストライプグループ内で最も論理アドレスが大きいブロックデータと後続するストライプグループ内で最も論理アドレスが小さいブロックデータとが同一のディスク装置に格納され、且つパリティストライプを格納するディスク装置が互いに異なる関係となる。
【００２７】
さらに、４番目のストライプグループＳ４においても、先行するストライプグループＳ３内で最も論理アドレスの大きいブロックデータＤ６に後続する次のブロックデータＤ７のデータストライプが、ブロックデータＤ６が格納されるディスク装置（ここではディスク装置ＤＩＳＫ＃１）と同一のディスク装置に物理的に連続して配置されると共に、ブロックデータＤ８に対応するデータストライプがディスク装置ＤＩＳＫ＃２に配置され、またブロックデータＤ７，Ｄ８から生成されるパリティＰ４を格納するためのパリティストライプがディスク装置ＤＩＳＫ＃３に配置される。
【００２８】
このようなデータ配置を採用することにより、隣接するストライプグループをまたがる部分、例えば、ブロックデータＤ２とＤ３、ブロックデータＤ４とＤ５、ブロックデータＤ６とＤ７については、どれも同一のディスク装置に格納されることになり、論理的に連続するデータが物理的にも一つの物理ディスクに連続して格納される。よって、隣接するストライプグループの境界にまたがる範囲のデータがホスト１１からリード要求された場合でも、そのリード要求されたデータは同一のディスク装置に格納されているので、そのディスク装置に対する一回のリード要求の発行のみで当該データを読み出すことが可能となる。この様子を図２に示す。
【００２９】
図２は、ホスト１１からのリード要求でブロックデータＤ１〜Ｄ５の読み出しが要求された場合に対応するディスクアクセス処理の様子を示している。ブロックデータＤ１〜Ｄ５の内、ストライプグループＳ１とＳ２の境界にまたがる論理的に連続したブロックデータＤ２，Ｄ３はディスク装置ＤＩＳＫ＃２に物理的に連続して格納されており、またストライプグループＳ２とＳ３の境界にまたがる論理的に連続したブロックデータＤ４，Ｄ５はディスク装置ＤＩＳＫ＃３に物理的に連続して格納されているので、ブロックデータＤ２，Ｄ３についてはディスク装置ＤＩＳＫ＃２に対する一回のリード要求の発行のみで読み出すことが出来、同様に、ブロックデータＤ４，Ｄ５についてもディスク装置ＤＩＳＫ＃３に対する一回のリード要求の発行のみで読み出すことが出来る。
【００３０】
すなわち、本実施形態では、ホスト１１からブロックデータＤ１〜Ｄ５の読み出しが要求された場合には、以下の３つのリード要求が生成され、それらリード要求それぞれに対応するディスクアクセスが実行されることになる。
【００３１】
・リード要求＃１：  ディスク装置ＤＩＳＫ＃１からその先頭のデータストライプに格納されているブロックデータＤ１を読み出すためのリード要求（物理ディスク番号＝＃１、先頭アドレス＝先頭データストライプ、データサイズ＝１ブロック）
・リード要求＃２：  ディスク装置ＤＩＳＫ＃２からその先頭および２番目のデータストライプにそれぞれ格納されているブロックデータＤ２，Ｄ３を読み出すためのリード要求（物理ディスク番号＝＃２、先頭アドレス＝先頭データストライプ、データサイズ＝２ブロック）
・リード要求＃３：  ディスク装置ＤＩＳＫ＃３からその２番目および３番目のデータストライプにそれぞれ格納されているブロックデータＤ４，Ｄ５を読み出すためのリード要求（物理ディスク番号＝＃３、先頭アドレス＝２番目のデータストライプ、データサイズ＝２ブロック）
これらリード要求＃１〜＃３はディスク装置ＤＩＳＫ＃１〜＃３に並行して発行されるので、ディスク装置ＤＩＳＫ＃１からブロックデータＤ１を読み出すためのディスクアクセスと、ディスク装置ＤＩＳＫ＃２からブロックデータＤ２，Ｄ３を読み出すためのディスクアクセスと、ディスク装置ＤＩＳＫ＃３からブロックデータＤ４，Ｄ５を読み出すためのディスクアクセスとが、並列的に実行される。この場合、ディスク装置ＤＩＳＫ＃２から読み出されるデータの並びは論理アドレス順（Ｄ２，Ｄ３）であり、またディスク装置ＤＩＳＫ＃３から読み出されるデータの並びも論理アドレス順（Ｄ４，Ｄ５）であるので、ディスク装置ＤＩＳＫ＃１〜＃３から読み出されたデータをリード要求＃１〜＃３の順でデータバッファ１２３上に蓄積するだけで、ホスト１１にリードデータとしてまとめて返送すべきデータ列、つまりブロックデータＤ１〜Ｄ５を得ることができる。
【００３２】
図３には、本実施形態で用いられるストライプグループＳ１，Ｓ２，Ｓ３，Ｓ４，…それぞれのデータ配置のさらに具体的な例が示されている。
【００３３】
図示のように、ストライプグループＳ１，Ｓ２，Ｓ３，Ｓ４，…において、各データブロックは複数のサブブロックデータから構成されている。ここでは、簡単のために、１つのブロックデータが４つのサブブロックデータから構成されている例が示されている。１サブブロックデータのサイズは、例えば、セクタサイズやクラスタサイズ等に対応する。ホスト１１は、サブブロックデータ単位でその論理アドレスを指定することが出来る。
【００３４】
図３において、ｄ１〜ｄ３２はそれぞれサブブロックデータを示しており、またそれらｄ１〜ｄ３２の添え字１〜３２の順番は論理アドレスの順番に対応している。例えば、ブロックデータＤ１はサブブロックデータｄ１〜ｄ４から構成されており、それらサブブロックデータｄ１〜ｄ４はディスク装置ＤＩＳＫ＃１の先頭データストライプに物理的に連続して格納されている。ブロックデータＤ２はサブブロックデータｄ５〜ｄ８から構成されており、それらサブブロックデータｄ５〜ｄ８はディスク装置ＤＩＳＫ＃２の先頭データストライプに物理的に連続して格納されている。この場合、ディスク装置ＤＩＳＫ＃３の先頭のパリティストライプには、サブブロックデータｄ１，ｄ５から生成されたパリティｐ１と、サブブロックデータｄ２，ｄ６から生成されたパリティｐ２と、サブブロックデータｄ３，ｄ７から生成されたパリティｐ３と、サブブロックデータｄ４，ｄ８から生成されたパリティｐ４が、図示のように格納される。
【００３５】
ストライプグループＳ２内のブロックデータＤ３はサブブロックデータｄ９〜ｄ１２から構成されており、それらサブブロックデータｄ９〜ｄ１２は、ディスク装置ＤＩＳＫ＃２の２番目のデータストライプに物理的に連続して格納されている。これにより、論理アドレスが連続するサブブロックデータｄ５〜ｄ１２が同一のディスク装置ＤＩＳＫ＃２に物理的に連続して格納されることになる。
【００３６】
同様にして、ストライプグループＳ２内のブロックデータＤ４を構成するサブブロックデータｄ１３〜ｄ１６と、ストライプグループＳ３内のブロックデータＤ５を構成するサブブロックデータｄ１７〜ｄ２０は同一のディスク装置ＤＩＳＫ＃３に物理的に連続して格納され、またストライプグループＳ３内のブロックデータＤ６を構成するサブブロックデータｄ２１〜ｄ２４と、ストライプグループＳ４内のブロックデータＤ７を構成するサブブロックデータｄ２５〜ｄ２８は同一のディスク装置ＤＩＳＫ＃１に物理的に連続して格納される。
【００３７】
よって、隣接するストライプグループの境界にまたがる範囲のデータ、例えばサブブロックデータｄ５〜ｄ１２の範囲内のデータ、サブブロックデータｄ１３〜ｄ２０の範囲内のデータ、およびサブブロックデータｄ２１〜ｄ２８の範囲内のデータについては、どれも該当するディスク装置に対する一回のリード要求の発行のみで当該データを読み出すことが可能となる。この様子を図４に示す。
【００３８】
図４は、ホスト１１からのリード要求でサブブロックデータｄ２〜ｄ１８の読み出しが要求された場合のリードアクセス処理の様子を示している。
【００３９】
サブブロックデータｄ２〜ｄ１８の内、ストライプグループＳ１とＳ２の境界にまたがるデータ列であるサブブロックデータｄ５〜ｄ１２はディスク装置ＤＩＳＫ＃２に物理的に連続して格納されており、またストライプグループＳ２とＳ３の境界にまたがるデータ列であるサブブロックデータｄ１３〜ｄ１８はディスク装置ＤＩＳＫ＃３に物理的に連続して格納されているので、サブブロックデータｄ５〜ｄ１２についてはディスク装置＃２に対する一回のリード要求の発行のみで読み出すことが出来、同様に、サブブロックデータｄ１３〜ｄ１８についてもディスク装置ＤＩＳＫ＃３に対する一回のリード要求の発行のみで読み出すことが出来る。すなわち、本実施形態では、ホスト１１からｄ２〜ｄ１８の読み出しが要求された場合には、以下の３つのリード要求が生成され、それらリード要求それぞれに対応するディスクアクセスが実行されることになる。
【００４０】
・リード要求＃１：  ディスク装置ＤＩＳＫ＃１からその先頭のデータストライプ内の２番目乃至４番目に格納されているサブブロックデータｄ２〜ｄ４を読み出すためのリード要求（物理ディスク番号＝＃１、先頭アドレス＝先頭データストライプ内の２番目のサブブロック、データサイズ＝３サブブロック）
・リード要求＃２：  ディスク装置ＤＩＳＫ＃２からその先頭および２番目のデータストライプにそれぞれ格納されているサブデータブロックｄ５〜ｄ８，ｄ９〜ｄ１２を読み出すためのリード要求（物理ディスク番号＝＃２、先頭アドレス＝先頭データストライプ内の先頭サブブロック、データサイズ＝８サブブロック）
・リード要求＃３：  ディスク装置ＤＩＳＫ＃３からその２番目および３番目のデータストライプにそれぞれ格納されているサブデータブロックｄ１３〜ｄ１６，ｄ１７〜ｄ１８を読み出すためのリード要求（物理ディスク番号＝＃３、先頭アドレス＝２番目のデータストライプ、データサイズ＝６サブブロック）
次に、図５のフローチャートを参照して、ＲＡＩＤコントローラ１２の制御部１２１によって実行されるディスクアクセス処理の手順について説明する。
【００４１】
制御部１２１は、まず、ディスクアレイ１３に対するホスト１１からのリード要求を受信する（ステップＳ１０１）。このリード要求には先頭論理アドレスとデータサイズが含まれており、これによって読み出し対象の範囲が指定される。制御部１２１は、データ配置管理部１２２によって管理されているストライプグループＳ１，Ｓ２，Ｓ３，Ｓ４，…それぞれのデータ配置に基づき、ホスト１１からのリード要求で指定された読み出し対象範囲をストライプグループ毎に分割し、そして各ストライプ毎に、該当する物理ディスク（ディスク装置）に対するリード要求を生成する（ステップＳ１０２）。このリード要求の生成処理では、各ストライプグループ毎に、読み出し対象範囲のデータが格納されている物理ディスク（ディスク装置）とその物理的な格納場所が検出される。
【００４２】
例えば、前述の図２の例を想定すると、読み出し対象範囲Ｄ１〜Ｄ５の内、ストライプグループＳ１に属するブロックデータＤ１，Ｄ２についてはディスク装置ＤＩＳＫ＃１，＃２の先頭データストライプにそれぞれ格納されていることが検出され、ディスク装置ＤＩＳＫ＃１の先頭データストライプからブロックデータＤ１を読み出すためのリード要求（Ａ）と、ディスク装置ＤＩＳＫ＃２の先頭データストライプからブロックデータＤ２を読み出すためのリード要求（Ｂ）とが生成される。また、ストライプグループＳ２に属するブロックデータＤ３，Ｄ４についてはディスク装置ＤＩＳＫ＃２，＃３の２番目のデータストライプにそれぞれ格納されていることが検出され、ディスク装置ＤＩＳＫ＃２の２番目のデータストライプからブロックデータＤ３を読み出すためのリード要求（Ｃ）と、ディスク装置ＤＩＳＫ＃３の２番目のデータストライプからブロックデータＤ４を読み出すためのリード要求（Ｄ）とが生成される。さらに、ストライプグループＳ３に属するブロックデータＤ５についてはディスク装置ＤＩＳＫ＃３の３番目のデータストライプに格納されていることが検出され、ディスク装置ＤＩＳＫ＃３の３番目のデータストライプからブロックデータＤ５を読み出すためのリード要求（Ｅ）が生成される。
【００４３】
次いで、制御部１２１は、これら生成されたリード要求の中から、リード対象のデータそれぞれが論理的に連続しており、且つ同一の物理ディスク（ディスク装置）内に物理的に連続して格納されているデータをリード対象とするリード要求の組み合わせが存在するか否かを調べる（ステップＳ１０３）。そのようなリード要求の組み合わせが存在する場合には、制御部１２１は、それらリード要求同士を一つにまとめるための統合処理を行って、それらリード要求それぞれのアクセス対象のデータを一回のディスクアクセスで読み出すための新たなリード要求を生成する（ステップＳ１０４）。例えば、上述のリード要求（Ａ〜Ｅ）を考えると、ディスク装置ＤＩＳＫ＃２からブロックデータＤ２を読み出すためのリード要求（Ｂ）とディスク装置ＤＩＳＫ＃２からブロックデータＤ３を読み出すためのリード要求（Ｃ）とが一つのリード要求にまとめられ、ディスク装置ＤＩＳＫ＃２の先頭データストライプから２ブロック分のデータ列（Ｄ２，Ｄ３）を読み出すための新たなリード要求（Ｘ）が生成される。また、ディスク装置ＤＩＳＫ＃３からブロックデータＤ４を読み出すためのリード要求（Ｄ）とディスク装置ＤＩＳＫ＃３からブロックデータＤ５を読み出すためのリード要求（Ｅ）もが一つのリード要求にまとめられ、ディスク装置ＤＩＳＫ＃３の２番目のデータストライプから２ブロック分のデータ列（Ｄ４，Ｄ５）を読み出すための新たなリード要求（Ｙ）が生成される。
【００４４】
そして、制御部１２１は、ステップＳ１０３，Ｓ１０４の処理を経て得られた最終的なリード要求それぞれを該当するディスク装置に発行して、リードアクセスを開始する（ステップＳ１０５）。上述の例では、発行されるリード要求は、リード要求（Ａ），リード要求（Ｘ），リード要求（Ｙ）の３つとなる。これらリード要求は、図２で説明したリード要求＃１，リード要求＃２，リード要求＃３にそれぞれ相当する。
【００４５】
この後、制御部１２１は、リードアクセスしたディスク装置それぞれからの応答を待ち、全てのリードアクセスが完了した後に、それらリードアクセスによって読み出されたリードデータそれぞれをまとめてデータバッファ１２３からホスト１１に返送する（ステップＳ１０６）。データバッファ１２３には上述したようにリード要求順にリードデータが並んで保持されるので、並べ替えなどの処理を行うことなく、要求されたデータ列をホスト１１に返送することが出来る。
【００４６】
なお、本実施形態のデータ配置は、ストライプグループ単位でパリティを格納するディスク装置を移動させるというＲＡＩＤ５レベルのみならず、パリティを特定のディスク装置に固定的に配置するＲＡＩＤ４レベルのディスクアレイにも適用することが出来る。以下、ＲＡＩＤ４レベルのディスクアレイへの適用例を本発明の第２実施形態として説明する。
【００４７】
（第２実施形態）
図６には、３台のディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３でＲＡＩＤ４レベルのディスクアレイを構成した場合におけるデータ配置例が示されている。ディスク装置ＤＩＳＫ＃１，＃２がデータ格納用のディスクであり、ディスク装置ＤＩＳＫ＃３がパリティ格納用のディスクである。
【００４８】
すなわち、先頭のストライプグループＳ１においては、論理アドレスが連続するブロックデータＤ１，Ｄ２に対応するデータストライプがそれぞれディスク装置ＤＩＳＫ＃１，＃２に割り当てられ、またブロックデータＤ１，Ｄ２から生成されるパリティＰ１を格納するためのパリティストライプがディスク装置ＤＩＳＫ＃３に割り当てられている。２番目のストライプグループＳ２においては、ストライプグループＳ１のブロックデータＤ１，Ｄ２に後続する２つのブロックデータＤ３，Ｄ４が格納されることになるが、この場合、先行するストライプグループＳ１内で最も論理アドレスの大きいブロックデータＤ２に後続する次のブロックデータＤ３は、ブロックデータＤ２が格納されるディスク装置（ここではディスク装置ＤＩＳＫ＃２）と同一のディスク装置に物理的に連続して格納される。つまり、２番目のストライプグループＳ２においては、ブロックデータＤ３，Ｄ４に対応するデータストライプがそれぞれディスク装置ＤＩＳＫ＃２，＃１に割り当てられ、またブロックデータＤ３，Ｄ４から生成されるパリティＰ２を格納するためのパリティストライプが割り当てられるディスク装置は、ストライプグループＳ１と同じく、ディスク装置ＤＩＳＫ＃３となる。
【００４９】
３番目のストライプグループＳ３においては、ストライプグループＳ２のブロックデータＤ３，Ｄ４に後続する２つのブロックデータＤ５，Ｄ６が格納されることになる。この場合も、先行するストライプグループＳ２内で最も論理アドレスの大きいブロックデータＤ４に後続する次のブロックデータＤ５は、ブロックデータＤ４が格納されるディスク装置（ここではディスク装置ＤＩＳＫ＃１）と同一のディスク装置に物理的に連続して格納される。つまり、３番目のストライプグループＳ３においては、ブロックデータＤ５，Ｄ６に対応するデータストライプがそれぞれディスク装置ＤＩＳＫ＃１，＃２に割り当てられ、またブロックデータＤ５，Ｄ６から生成されるパリティＰ３を格納するためのパリティストライプはディスク装置ＤＩＳＫ＃３に割り当てられる。さらに、４番目のストライプグループＳ４においても、先行するストライプグループＳ３内で最も論理アドレスの大きいブロックデータＤ６に後続する次のブロックデータＤ７のデータストライプが、ブロックデータＤ６が格納されるディスク装置（ここではディスク装置ＤＩＳＫ＃２）と同一のディスク装置に物理的に連続して配置されると共に、ブロックデータＤ８に対応するデータストライプがディスク装置ＤＩＳＫ＃１に配置され、また、ブロックデータＤ７，Ｄ８から生成されるパリティＰ４を格納するためのパリティストライプがディスク装置ＤＩＳＫ＃３に配置される。
【００５０】
このようなデータ配置を採用することにより、図２で説明したＲＡＩＤ５の場合と同様に、隣接するストライプグループをまたがる部分、例えば、ブロックデータＤ２とＤ３、ブロックデータＤ４とＤ５、ブロックデータＤ６とＤ７については、どれも同一のディスク装置に格納されることになり、論理的に連続するデータが物理的にも一つの物理ディスクに連続して格納される。
【００５１】
図７は、ホスト１１からのリード要求でブロックデータＤ１〜Ｄ５の読み出しが要求された場合に対応するディスクアクセス処理の様子を示している。ブロックデータＤ１〜Ｄ５の内、ストライプグループＳ１とＳ２の境界にまたがる論理的に連続したブロックデータＤ２，Ｄ３はディスク装置ＤＩＳＫ＃２に物理的に連続して格納されており、またストライプグループＳ２とＳ３の境界にまたがる論理的に連続したブロックデータＤ４，Ｄ５はディスク装置ＤＩＳＫ＃１に物理的に連続して格納されているので、ブロックデータＤ２，Ｄ３についてはディスク装置ＤＩＳＫ＃２に対する一回のリード要求の発行のみで読み出すことが出来、同様に、ブロックデータＤ４，Ｄ５についてもディスク装置ＤＩＳＫ＃１に対する一回のリード要求の発行のみで読み出すことが出来る。すなわち、本第２実施形態では、ホスト１１からブロックデータＤ１〜Ｄ５の読み出しが要求された場合には、以下の３つのリード要求が生成され、それらリード要求それぞれに対応するディスクアクセスが実行されることになる。
【００５２】
・リード要求＃１：  ディスク装置ＤＩＳＫ＃１からその先頭のデータストライプに格納されているブロックデータＤ１を読み出すためのリード要求（物理ディスク番号＝＃１、先頭アドレス＝先頭データストライプ、データサイズ＝１ブロック）
・リード要求＃２：  ディスク装置ＤＩＳＫ＃２からその先頭および２番目のデータストライプにそれぞれ格納されているブロックデータＤ２，Ｄ３を読み出すためのリード要求（物理ディスク番号＝＃２、先頭アドレス＝先頭データストライプ、データサイズ＝２ブロック）
・リード要求＃３：  ディスク装置ＤＩＳＫ＃１からその２番目および３番目のデータストライプにそれぞれ格納されているブロックデータＤ４，Ｄ５を読み出すためのリード要求（物理ディスク番号＝＃１、先頭アドレス＝２番目のデータストライプ、データサイズ＝２ブロック）
リード要求＃１，＃２はディスク装置ＤＩＳＫ＃１，＃３に対して並行して発行されるが、リード要求＃３の発行はリード要求＃１に対応するリードアクセスの完了を待って行われる。
【００５３】
図８には、図６に対応するストライプグループＳ１，Ｓ２，Ｓ３，Ｓ４，…それぞれのデータ配置のさらに具体的な例が示されている。
【００５４】
図８において、ｄ１〜ｄ３２はそれぞれサブブロックデータを示しており、またそれらｄ１〜ｄ３２の添え字１〜３２の順番は論理アドレスの順番に対応している。例えば、ブロックデータＤ１はサブブロックデータｄ１〜ｄ４から構成されており、それらサブブロックデータｄ１〜ｄ４はディスク装置ＤＩＳＫ＃１の先頭データストライプに物理的に連続して格納されている。ブロックデータＤ２はサブブロックデータｄ５〜ｄ８から構成されており、それらサブブロックデータｄ５〜ｄ８はディスク装置ＤＩＳＫ＃２の先頭データストライプに物理的に連続して格納されている。この場合、ディスク装置ＤＩＳＫ＃３の先頭のパリティストライプには、サブブロックデータｄ１，ｄ５から生成されたパリティｐ１と、サブブロックデータｄ２，ｄ６から生成されたパリティｐ２と、サブブロックデータｄ３，ｄ７から生成されたパリティｐ３と、サブブロックデータｄ４，ｄ８から生成されたパリティｐ４が、図示のように格納される。
【００５５】
ストライプグループＳ２内のブロックデータＤ３はサブブロックデータｄ９〜ｄ１２から構成されており、それらサブブロックデータｄ９〜ｄ１２は、ディスク装置ＤＩＳＫ＃２の２番目のデータストライプに物理的に連続して格納されている。これにより、論理アドレスが連続するサブブロックデータｄ５〜ｄ１２が同一のディスク装置ＤＩＳＫ＃２に物理的に連続して格納されることになる。
【００５６】
同様にして、ストライプグループＳ２内のブロックデータＤ４を構成するサブブロックデータｄ１３〜ｄ１６と、ストライプグループＳ３内のブロックデータＤ５を構成するサブブロックデータｄ１７〜ｄ２０は同一のディスク装置ＤＩＳＫ＃１に物理的に連続して格納され、またストライプグループＳ３内のブロックデータＤ６を構成するサブブロックデータｄ２１〜ｄ２４と、ストライプグループＳ４内のブロックデータＤ７を構成するサブブロックデータｄ２５〜ｄ２８は同一のディスク装置ＤＩＳＫ＃２に物理的に連続して格納される。
【００５７】
図９は、ホスト１１からのリード要求でサブブロックデータｄ２〜ｄ１８の読み出しが要求された場合のリードアクセス処理の様子を示している。サブブロックデータｄ２〜ｄ１８の内、ストライプグループＳ１とＳ２の境界にまたがるデータ列であるサブブロックデータｄ５〜ｄ１２はディスク装置ＤＩＳＫ＃２に物理的に連続して格納されており、またストライプグループＳ２とＳ３の境界にまたがるデータ列であるサブブロックデータｄ１３〜ｄ１８はディスク装置ＤＩＳＫ＃１に物理的に連続して格納されているので、サブブロックデータｄ５〜ｄ１２についてはディスク装置ＤＩＳＫ＃２に対する一回のリード要求の発行のみで読み出すことが出来、同様に、サブブロックデータｄ１３〜ｄ１８についてもディスク装置ＤＩＳＫ＃１に対する一回のリード要求の発行のみで読み出すことが出来る。すなわち、本第２実施形態では、ホスト１１からｄ２〜ｄ１８の読み出しが要求された場合には、以下の３つのリード要求が生成され、それらリード要求それぞれに対応するディスクアクセスが実行されることになる。
【００５８】
・リード要求＃１：  ディスク装置ＤＩＳＫ＃１からその先頭のデータストライプ内の２番目乃至４番目に格納されているサブブロックデータｄ２〜ｄ４を読み出すためのリード要求（物理ディスク番号＝＃１、先頭アドレス＝先頭データストライプ内の２番目のサブブロック、データサイズ＝３サブブロック）
・リード要求＃２：  ディスク装置ＤＩＳＫ＃２からその先頭および２番目のデータストライプにそれぞれ格納されているサブデータブロックｄ５〜ｄ８，ｄ９〜ｄ１２を読み出すためのリード要求（物理ディスク番号＝＃２、先頭アドレス＝先頭データストライプ内の先頭サブブロック、データサイズ＝８サブブロック）
・リード要求＃３：  ディスク装置ＤＩＳＫ＃１からその２番目および３番目のデータストライプにそれぞれ格納されているサブデータブロックｄ１３〜ｄ１６，ｄ１７〜ｄ１８を読み出すためのリード要求（物理ディスク番号＝＃１、先頭アドレス＝２番目のデータストライプ、データサイズ＝６サブブロック）
ＲＡＩＤコントローラ１２の制御部１２１によって実行されるディスクアクセス処理の手順は、図５で説明した場合と同様である。
【００５９】
なお、以上の各実施形態では、ＲＡＩＤコントローラ１２によって複数のディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３をグルーピングするという、いわゆるハードウェアＲＡＩＤを前提に説明したが、各実施形態で説明したデータ配置およびリード要求をまとめる処理は、オペレーティングシステムなどによってソフトウェア的に複数のディスク装置ＤＩＳＫ＃１〜ＤＩＳＫ＃３をグルーピングするソフトウェアＲＡＩＤに対しても、ＲＡＩＤコントローラ１２の制御部１２１およびデータ配置管理部１２２の機能をオペレーティングシステムなどに実装することにより適用可能である。
【００６０】
また、各実施形態で説明したデータ配置はディスクアレイ１３に対するＩ／Ｏ回数を低減できるという点で、データ読み出し時のみならず、データ書き込み時にも有効である。
【００６１】
また、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００６２】
【発明の効果】
以上説明したように、本発明によれば、ストライプグループ間のデータ配置の関係を最適化することにより、ディスク装置に対するアクセス回数を十分に低減することが可能となる。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係るディスク制御システムを用いたコンピュータシステムの構成を示すブロック図。
【図２】同実施形態におけるディスクアレイに対するデータ配置とディスクアクセス処理の様子を示す図。
【図３】同実施形態におけるディスクアレイに対するデータ配置の具体例を示す図。
【図４】図３のデータ配置を用いた場合におけるディスクアクセス処理の様子を示す図。
【図５】同実施形態におけるディスクアクセス処理の手順を示すフローチャート。
【図６】本発明の第２実施形態おけるディスクアレイに対するデータ配置を示す図。
【図７】図７のデータ配置に対応するディスクアクセス処理の様子を示す図。
【図８】同第２実施形態おけるディスクアレイに対するデータ配置の具体例を示す図。
【図９】図８のデータ配置に対応するディスクアクセス処理の様子を示す図。
【符号の説明】
１１…ホスト
１２…ＲＡＩＤコントローラ
１３…ディスクアレイ
１２１…制御部
１２２…データ配置管理部
１２３…データバッファ
ＤＩＳＫ＃１〜＃３…ディスク装置
【図１】
0003621666.tif 000002
【図２】
0003621666.tif 000003
【図３】
0003621666.tif 000004
【図４】
0003621666.tif 000005
【図５】
0003621666.tif 000006
【図６】
0003621666.tif 000007
【図７】
0003621666.tif 000008
【図８】
0003621666.tif 000009
【図９】
0003621666.tif 000010