(57)【特許請求の範囲】
【請求項１】
ストライプごとにパリティを生成するＲＡＩＤグループを構成する複数の記憶媒体を搭載し、リード要求受付部に格納されているリード要求を処理することで取得したデータを上位装置に送信するディスクアレイ装置であって、
前記リード要求受付部に同一の記憶媒体からデータを取得するリード要求が連続して格納されている場合に、リード要求に指定されている目的のデータの属するストライプに記憶されているパリティと該ストライプに記憶されている前記目的のデータ以外のデータを取得する複数のリード命令と、リード要求に指定されているデータを取得するリード命令とを、リード要求毎に交互に生成するリード命令生成手段と、
前記リード命令生成手段によって、前記目的のデータ以外のデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行して取得した複数のデータの排他的論理和演算を行って前記目的のデータを取得し、前記リード命令生成手段によって、リード要求に指定されているデータを取得するリード命令が生成された場合に、該リード命令を実行してデータを取得し、取得したデータを前記上位装置へ送信するリード制御手段と
を備えたことを特徴とするディスクアレイ装置。
【請求項２】
前記リード命令生成手段は、前記リード要求受付部に、特定の範囲のストライプに記憶されているデータを全て取得する複数のリード要求が連続して格納されている場合に、所定のリード要求数を処理するたびに、データを取得しない記憶媒体を示す対象外記憶媒体を変更しながら、前記特定の範囲のストライプに記憶されており、かつ、前記対象外記憶装置以外の記憶装置に記憶されているデータを取得する複数のリード命令を生成し、
前記リード制御手段は、前記リード命令生成手段によって、前記特定の範囲のストライプに記憶されているデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行してデータを取得し、取得したデータがパリティの場合は、該複数のリード命令を実行して取得した該パリティの属するストライプのデータと、該パリティとの排他的論理和演算を行ってデータを取得することを特徴とする請求項１に記載のディスクアレイ装置。
【請求項３】
ストライプごとにパリティを生成するＲＡＩＤグループを構成する複数の記憶媒体を搭載し、リード要求受付部に格納されているリード要求を処理することで取得したデータを上位装置に送信するディスクアレイ装置を制御するディスクアレイ装置制御方法であって、
前記リード要求受付部に同一の記憶媒体からデータを取得するリード要求が連続して格納されている場合に、リード要求に指定されている目的のデータの属するストライプに記憶されているパリティと該ストライプに記憶されている前記目的のデータ以外のデータを取得する複数のリード命令と、リード要求に指定されているデータを取得するリード命令とを、リード要求毎に交互に生成するリード命令生成ステップと、
前記リード命令生成ステップによって、前記目的のデータ以外のデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行して取得した複数のデータの排他的論理和演算を行って前記目的のデータを取得し、前記リード命令生成ステップによって、リード要求に指定されているデータを取得するリード命令が生成された場合に、該リード命令を実行してデータを取得し、取得したデータを上位装置へ送信するリード制御ステップと
を含んだことを特徴とするディスクアレイ装置制御方法。
【請求項４】
前記リード命令生成ステップは、前記リード要求受付部に、特定の範囲のストライプに記憶されているデータを全て取得する複数のリード要求が連続して格納されている場合に、所定のリード要求数を処理するたびに、データを取得しない記憶媒体を示す対象外記憶媒体を変更しながら、前記特定の範囲のストライプに記憶されており、かつ、前記対象外記憶装置以外の記憶装置に記憶されているデータを取得する複数のリード命令を生成し、
前記リード制御ステップは、前記リード命令生成ステップによって、前記特定の範囲のストライプに記憶されているデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行してデータを取得し、取得したデータがパリティの場合は、該複数のリード命令を実行して取得した該パリティの属するストライプのデータと、該パリティとの排他的論理和演算を行ってデータを取得することを特徴とする請求項３に記載のディスクアレイ装置制御方法。
【請求項５】
ストライプごとにパリティを生成するＲＡＩＤグループを構成する複数の記憶媒体を搭載し、リード要求受付部に格納されているリード要求を処理することで取得したデータを上位装置に送信するディスクアレイ装置を制御するディスクアレイ装置制御プログラムであって、
前記リード要求受付部に同一の記憶媒体からデータを取得するリード要求が連続して格納されている場合に、リード要求に指定されている目的のデータの属するストライプに記憶されているパリティと該ストライプに記憶されている前記目的のデータ以外のデータを取得する複数のリード命令と、リード要求に指定されているデータを取得するリード命令とを、リード要求毎に交互に生成するリード命令生成手順と、
前記リード命令生成手順によって、前記目的のデータ以外のデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行して取得した複数のデータの排他的論理和演算を行って前記目的のデータを取得し、前記リード命令生成手順によって、リード要求に指定されているデータを取得するリード命令が生成された場合に、該リード命令を実行してデータを取得し、取得したデータを上位装置へ送信するリード制御手順と
をコンピュータに実行させることを特徴とするディスクアレイ装置制御プログラム。
【請求項６】
前記リード命令生成手順は、前記リード要求受付部に、特定の範囲のストライプに記憶されているデータを全て取得する複数のリード要求が連続して格納されている場合に、所定のリード要求数を処理するたびに、データを取得しない記憶媒体を示す対象外記憶媒体を変更しながら、前記特定の範囲のストライプに記憶されており、かつ、前記対象外記憶装置以外の記憶装置に記憶されているデータを取得する複数のリード命令を生成し、
前記リード制御手順は、前記リード命令生成手順によって、前記特定の範囲のストライプに記憶されているデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行してデータを取得し、取得したデータがパリティの場合は、該複数のリード命令を実行して取得した該パリティの属するストライプのデータと、該パリティとの排他的論理和演算を行ってデータを取得することを特徴とする請求項５に記載のディスクアレイ装置制御プログラム。
【請求項７】
ストライプごとにパリティを生成するＲＡＩＤグループを構成する複数の記憶媒体を搭載し、リード要求受付部に格納されているリード要求を処理することで取得したデータを上位装置に送信するディスクアレイ装置を制御するディスクアレイ制御装置であって、
前記リード要求受付部に同一の記憶媒体からデータを取得するリード要求が連続して格納されている場合に、リード要求に指定されている目的のデータの属するストライプに記憶されているパリティと該ストライプに記憶されている前記目的のデータ以外のデータを取得する複数のリード命令と、リード要求に指定されているデータを取得するリード命令とを、リード要求毎に交互に生成するリード命令生成手段と、
前記リード命令生成手段によって、前記目的のデータ以外のデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行して取得した複数のデータの排他的論理和演算を行って前記目的のデータを取得し、前記リード命令生成手段によって、リード要求に指定されているデータを取得するリード命令が生成された場合に、該リード命令を実行してデータを取得し、取得したデータを前記上位装置へ送信するリード制御手段と
を備えたことを特徴とするディスクアレイ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストライプごとにパリティを生成するＲＡＩＤグループを構成する複数のハードディスク装置を搭載し、上位装置からハードディスク装置に対して行われるアクセス要求を制御するディスクアレイ装置、ディスクアレイ装置制御方法、ディスクアレイ装置制御プログラムおよびディスクアレイ制御装置に関し、特に、ディスク容量を圧迫することなく、かつ、簡易な処理によってハードディスク装置に対するリード処理の性能を向上させることができるディスクアレイ装置、ディスクアレイ装置制御方法、ディスクアレイ装置制御プログラムおよびディスクアレイ制御装置に関するものである。
【背景技術】
【０００２】
従来、大規模なコンピュータシステムでは、ホストコンピュータと別体に構成された専用のデータ入出力装置を用いてデータを管理している。このデータ入出力装置の中でも、ディスクアレイ装置は、複数のハードディスク装置（記憶媒体）によってＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）グループを構成して、取り扱うデータの信頼性やハードディスク装置に対するアクセス性能を向上させている。
【０００３】
ＲＡＩＤは、高速性や耐障害性のレベルによって、レベル分けがなされており、現在一般的に採用されているレベルとしてＲＡＩＤ５がある。ＲＡＩＤ５は、パリティと呼ばれる誤り訂正符号の記録に割り当てるハードディスク装置と、データの記憶に割り当てるハードディスク装置とを、ストライプ毎に順次変更するものである。ＲＡＩＤ５を実装するディスクアレイ装置では、耐障害性の向上、大容量化、リード処理の高速化が実現できる。
【０００４】
ところで、近年、コンピュータシステムが取り扱うデータ量は増大しており、ディスクアレイ装置が保持するデータ量も増大している。それに伴って、ディスクアレイ装置にアクセスが集中することも多い。ＲＡＩＤ５によってリード処理が高速化されるといっても、アクセスが集中するとリード処理の性能は当然に劣化する。情報技術は日々進歩しており、ディスクアレイ装置を含むコンピュータシステムは常に高性能化されることが求められている中で、ディスクアレイ装置は、アクセスが集中する場合であっても十分な性能を出すことが求められている。
【０００５】
そこで、特許文献１には、ディスクアレイ装置の性能向上に関する技術が開示されている。具体的には、特許文献１には、各ＲＡＩＤグループにスワップ領域を設けて、アクセス頻度の高いデータブロックをスワップ領域に退避させることで、リード処理の性能を向上させる技術が開示されている。
【０００６】
【特許文献１】特開２００３−１５０３２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献１に開示されている技術は、ディスク容量を圧迫するという問題や、複雑な処理が必要になるという問題があった。すなわち、ＲＡＩＤグループ毎にスワップ領域を設けるため、ユーザデータを記憶できるディスク容量が減少してしまうという問題や、データブロック毎にアクセス数をカウントしておき、定期的にアクセス頻度を監視しなければならないため、余計な処理が増えてしまい全体的に処理性能が低下するおそれがあるという問題があった。
【０００８】
このようなことから、現在一般的に採用されているＲＡＩＤ５を実装するディスクアレイ装置では、いかにしてディスク容量を圧迫することなく、かつ、簡易な処理によってリード処理の性能を向上させるかが重要な課題となっている。
【０００９】
本発明は、上述した従来技術による課題を解消するためになされたものであり、ディスク容量を圧迫することなく、かつ、簡易な処理によってＲＡＩＤ５を構成するハードディスク装置に対するリード処理の性能を向上させることができるディスクアレイ装置、ディスクアレイ装置制御方法、ディスクアレイ装置制御プログラムおよびディスクアレイ制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
この装置は、ストライプごとにパリティを生成するＲＡＩＤグループを構成する複数の記憶媒体を搭載し、リード要求受付部に格納されているリード要求を処理することで取得したデータを上位装置に送信するディスクアレイ装置であって、前記リード要求受付部に同一の記憶媒体からデータを取得するリード要求が連続して格納されている場合に、リード要求に指定されている目的のデータの属するストライプに記憶されているパリティと該ストライプに記憶されている前記目的のデータ以外のデータを取得する複数のリード命令と、リード要求に指定されているデータを取得するリード命令とを、リード要求毎に交互に生成するリード命令生成手段と、前記リード命令生成手段によって、前記目的のデータ以外のデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行して取得した複数のデータの排他的論理和演算を行って前記目的のデータを取得し、前記リード命令生成手段によって、リード要求に指定されているデータを取得するリード命令が生成された場合に、該リード命令を実行してデータを取得し、取得したデータを前記上位装置へ送信するリード制御手段とを備えたことを要件とする。
【００１１】
なお、この装置の構成要素、表現または構成要素の任意の組合せを、方法、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１２】
開示した装置は、ＲＡＩＤグループを構成するハードディスク装置に対するリード処理の性能を向上させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に、本発明に係るディスクアレイ装置、ディスクアレイ装置制御方法、ディスクアレイ装置制御プログラムおよびディスクアレイ制御装置の実施例を図面に基づいて詳細に説明する。なお、以下では、従来のディスクアレイ装置によるリード処理と、本発明に係るディスクアレイ装置によるリード処理について、それぞれ２つの例を用いて説明し、次に、本発明に係るディスクアレイ装置の構成、本発明に係るディスクアレイ装置による処理手順について順に説明する。
【実施例】
【００１４】
まず、本実施例に係るディスクアレイ装置の特徴を明らかにするために、同一のハードディスク装置からデータを取得する複数のリード要求が入力された場合における従来のディスクアレイ装置によるリード処理について説明する。図１は、従来のディスクアレイ装置によるリード処理の一例を説明するための図である。
【００１５】
図１には、従来のディスクアレイ装置が搭載するハードディスク装置１１〜１４を示す。このハードディスク装置１１〜１４は、ＲＡＩＤ５を構成している。ＲＡＩＤ５を構成するハードディスク装置１１〜１４の記憶領域は、ホストによるデータの読み出しまたは書き込みの単位となる複数の論理ブロックに分割される。同図に示した例では、データＤ１１やデータＤ１２やパリティＰ１０が１つの論理ブロックであるとする。なお、データＤ１１やＤ１２のように「Ｄ」から始まる論理ブロックにデータを記憶し、パリティＰ１０やパリティＰ２０のように「Ｐ」から始まる論理ブロックにパリティを記憶することを示す。
【００１６】
また、ハードディスク装置１１〜１４は、同図に示した順番でデータおよびパリティを物理的に連続して記憶する。例えば、ハードディスク装置１１は、データＤ１１〜３１、パリティＰ４０、データＤ５１〜７１、パリティＰ８０、データＤ９１を物理的に連続して記憶する。
【００１７】
同図に示すように、ＲＡＩＤ５では、ストライプ毎に、パリティの記憶に割り当てるハードディスク装置と、データの記憶に割り当てるハードディスク装置を分散する。例えば、１番目のストライプ（以下、Ｎ番目のストライプを「ストライプＮ」という）では、ハードディスク装置１１〜１３がデータの記憶に割り当てられおり、ハードディスク装置１４がパリティの記憶に割り当てられている。また、ストライプ２では、ハードディスク装置１１、１２および１４がデータの記憶に割り当てられおり、ハードディスク装置１３がパリティの記憶に割り当てられている。
【００１８】
パリティは、同一ストライプ内の他のハードディスク装置に記憶されているデータの排他的論理和演算（ＸＯＲ）を行うことにより生成される。例えば、パリティＰ１０は、データＤ１１、Ｄ１２およびＤ１３の排他的論理和演算を行うことにより生成される。このようにパリティを記憶しておくことで、ＲＡＩＤ５を構成するハードディスク装置が１台故障した場合であっても、同一ストライプ内の他のデータとパリティとの排他的論理和演算を行うことにより、故障したハードディスク装置に記憶されているデータを復元することができる。
【００１９】
このような構成の下、従来のディスクアレイ装置は、上位装置であるホストからデータのリード要求やライト要求のアクセス要求が入力されると、かかるアクセス要求を実行する。例えば、ホストからリード要求が入力されると、ディスクアレイ装置は、リード要求に従ってハードディスク装置１１〜１４に記憶されているデータを取得して、取得したデータをホストに送信する。
【００２０】
このとき、ホストから入力されたリード要求の内容によって、ディスクアレイ装置は、同一のハードディスク装置からのみデータを取得しなければならないことがある。例えば、図１に示した例において、データＤ１１を取得するリード要求と、データＤ３１を取得するリード要求と、データＤ６１を取得するリード要求と、データＤ９１を取得するリード要求とが、連続してホストから入力された場合などである。なお、同図では、ディスクアレイ装置がデータを取得する論理ブロックを、斜線を付して示す。
【００２１】
ＲＡＩＤ５を構成する場合、本来、ディスクアレイ装置は、ハードディスク装置１１〜１４から並列的にデータを取得するため、リード処理の高速化が実現できる。しかしながら、図１に示すように、ハードディスク装置１１からデータを取得するリード要求が連続して入力されると、ディスクアレイ装置は、並列的にデータの読み出しを行うことができず、その結果、リード処理の性能が劣化するという問題があった。
【００２２】
そこで、本実施例に係るディスクアレイ装置では、同一のハードディスク装置からデータを取得するリード要求が連続して入力された場合、データを取得するハードディスク装置を分散させ、リード処理を並列的に行うように制御する。
【００２３】
図２を用いて具体的に説明する。図２は、本実施例に係るディスクアレイ装置によるリード処理の一例を説明するための図である。同図に示した例では、ホストから入力された複数のリード要求が、図１に示した例と同様に、ハードディスク装置１１に記憶されているデータＤ１１、Ｄ３１、Ｄ６１およびＤ９１を取得する命令であるとする。
【００２４】
このとき、本実施例に係るディスクアレイ装置は、図２に示すように、最初のリード要求（データＤ１１を取得するリード要求）を実行する場合、ハードディスク装置１２〜１４のストライプ１からデータＤ１２、Ｄ１３およびパリティＰ１０を取得する。上述したように、ハードディスク装置１１〜１４は、ＲＡＩＤ５を構成しており、データＤ１２、Ｄ１３およびパリティＰ１０の排他的論理和演算を行うことにより、データＤ１１を取得することができる。
【００２５】
そして、本実施例に係るディスクアレイ装置は、次のリード要求（データＤ３１を取得するリード要求）を実行する場合、ハードディスク装置１１のストライプ３からデータＤ３１を取得する。さらに次のリード要求（データＤ６１を取得するリード要求）を実行する場合、ハードディスク装置１２〜１４のストライプ６からデータＤ６２、パリティＰ６０およびデータＤ６３を取得し、データＤ６２、パリティＰ６０およびデータＤ６３の排他的論理和演算を行うことによりデータＤ６１を取得する。さらに次のリード要求（データＤ９１を取得するリード要求）を実行する場合、ハードディスク装置１１のストライプ９からデータＤ９１を取得する。
【００２６】
このように、同一のハードディスク装置からデータを取得するリード要求が連続して入力された場合、本実施例に係るディスクアレイ装置は、リード要求を実行するたびに、排他的論理和演算によりデータを取得するリード処理と、リード要求の指定通りにデータを取得するリード処理とを交互に行う。これにより、図２に示すように、ハードディスク装置１１〜１４にアクセスする回数が均等になり、ハードディスク装置に対するアクセス負荷が分散され、さらに、ハードディスク装置１１〜１４から並列的にデータを取得できるので、ディスクアレイ装置によるリード処理の性能を向上させることができる。
【００２７】
なお、上記の例では、リード要求を「１回」実行するたびに、排他的論理和演算によりデータを取得するリード処理と、リード要求の指定通りにデータを取得するリード処理とを交互に行う場合を示したが、リード要求を「複数回」実行するたびに、排他的論理和演算によりデータを取得するリード処理と、リード要求の指定通りにデータを取得するリード処理とを変更して行うように構成してもよい。
【００２８】
また、上記の例では、データＤ１１を取得するリード要求、データＤ３１を取得するリード要求、データＤ６１を取得するリード要求、データＤ９１を取得するリード要求の順にリード要求が入力された場合に、本実施例に係るディスクアレイ装置によるリード処理を適用する場合を示したが、同一のハードディスク装置からデータを取得するリード要求が連続して入力されれば、いかなる順番で入力されても本実施例に係るディスクアレイ装置によるリード処理を適用できる。
【００２９】
次に、複数のハードディスク装置からデータを取得するリード要求が入力された場合における従来のディスクアレイ装置によるリード処理について説明する。図３は、従来のディスクアレイ装置によるリード処理の一例を説明するための図である。図３では、図１に示した例と同様に、従来のディスクアレイ装置は、ハードディスク装置１１〜１４を搭載しており、ハードディスク装置１１〜１４によりＲＡＩＤ５を構成している。
【００３０】
同図では、ハードディスク装置１１〜１４のストライプ１〜９に記憶されている全てのデータを取得する複数のリード要求が入力された例を示す。具体的には、データＤ１１を取得するリード要求と、データＤ１２を取得するリード要求と、データＤ１３を取得するリード要求と、・・・、データＤ９３を取得するリード要求とが、連続して入力される。このような特定の範囲のストライプに記憶されているデータを全て取得するリード要求が連続して入力されることは、論理ブロックのデータサイズよりも容量の大きいデータがハードディスク装置１１〜１４に記憶されている場合に多い。
【００３１】
このようにリード要求が入力された場合、同図に示すように、ディスクアレイ装置によるハードディスク装置１１〜１４に対するアクセス回数は均等であるので、アクセス負荷は分散されている。しかしながら、ディスクアレイ装置は、ハードディスク装置に対して、物理的に連続して記憶されているデータを３つのストライプ分しかアクセスしない。
【００３２】
図３に示した例では、ディスクアレイ装置は、ハードディスク装置１１については、ストライプ１〜３に記憶されているデータＤ１１、Ｄ２１およびＤ３１を取得するが、ストライプ４に記憶されているパリティＰ４０は取得しない。その後、ストライプ５〜７に記憶されているデータＤ５１、Ｄ６１およびＤ７１を取得する。すなわち、ディスクアレイ装置は、ハードディスク装置１１〜１４に対して、最高で３つのストライプ分しか連続してアクセスしない。ディスクアレイ装置が物理的に連続して記憶されていないデータをアクセスすると、ハードディスク装置１１〜１４は、シーク処理の再計算を行わなければならない場合があり、その結果、リード処理の性能が劣化するという問題を招いていた。
【００３３】
そこで、本実施例に係るディスクアレイ装置は、特定の範囲のストライプに記憶されているデータを全て取得するリード要求が連続して入力された場合に、ハードディスク装置１１〜１４に対するアクセス回数が均等、かつ、連続してアクセスする回数が大きくなるように制御する。
【００３４】
図４を用いて具体的に説明する。図４は、本実施例に係るディスクアレイ装置によるリード処理の一例を説明するための図である。同図に示した例では、図３に示した例と同様に、ハードディスク装置１１〜１４のストライプ１〜９に記憶されている全てのデータを取得するリード要求が連続して入力されたものとする。
【００３５】
このとき、本実施例に係るディスクアレイ装置は、図４に示すように、ストライプ１〜３については、ハードディスク装置１２〜１４からデータを取得し、ストライプ４〜６については、ハードディスク装置１１、１３および１４からデータを取得し、ストライプ７〜９については、ハードディスク装置１１、１２および１４からデータを取得するように制御する。
【００３６】
そして、ディスクアレイ装置は、ストライプ１については、ハードディスク装置１２〜１４から取得したデータＤ１２、Ｄ１３およびパリティＰ１０の排他的論理和演算を行うことにより、データＤ１１を取得して、データＤ１１、Ｄ１２およびＤ１３をホストへ送信する。同様に、ディスクアレイ装置は、ストライプ２〜９についても、排他的論理和演算を行うことにより、リード要求に指定されているデータを取得してホストへ送信する。
【００３７】
これにより、本実施例に係るディスクアレイ装置は、１台のハードディスク装置に対して連続してアクセスするストライプ数が増える。図４に示した例では、ハードディスク装置１４に連続して９つのストライプ分をアクセスする。従来例の図３と比較して、１台のハードディスク装置に連続してアクセスする回数が「３倍」になる。図４には示していないが、ディスクアレイ装置は、ストライプ９以降についても同様の手法でデータのアクセスを行うことで、ハードディスク装置１１〜１３についても、９つのストライプ分を連続してアクセスする。ハードディスク装置１１〜１４に連続してアクセスする回数が大きくなることにより、ディスクアレイ装置によるリード処理の高速化を実現できる。
【００３８】
なお、図１または図３に示す従来のリード処理と比較して、本実施例に係るディスクアレイ装置によるリード処理は、排他的論理和演算が必要となるため、ディスクアレイ装置内のＣＰＵ（Central  Processing  Unit）の処理負荷が増大するとも考えられる。しかし、排他的論理和演算によるＣＰＵの処理負荷は小さいものであり、アクセス負荷を分散し、ハードディスク装置に対するアクセスの連続性を大きくした方がリード処理の性能は向上する。
【００３９】
以上のように、本実施例に係るディスクアレイ装置は、同一のハードディスク装置からデータを取得するリード要求が連続して入力された場合に、データを取得するハードディスク装置を分散させるように制御し、特定の範囲のストライプに記憶されているデータを全て取得するリード要求が連続して入力された場合に、ハードディスク装置に対するアクセス回数を均等にしつつ、１台のハードディスク装置に連続してアクセスする回数が大きくなるように制御してリード処理を行うので、ＲＡＩＤ５を構成するハードディスク装置に対するリード処理の性能を向上させることができる。また、本実施例に係るディスクアレイ装置によるリード処理は、スワップ領域などの退避領域を新たに設けることがないので、ディスク容量を圧迫することがない。また、本実施例に係るディスクアレイ装置によるリード処理は、データを取得する論理ブロックを制御するだけなので、簡易な処理によってリード処理の性能を向上させることができる。
【００４０】
次に、本実施例に係るディスクアレイ装置について説明する。図５は、本実施例に係るディスクアレイ装置の構成を示す機能ブロック図である。同図に示すように、ディスクアレイ装置３００は、ホスト４００に接続されており、ＤＥ（Device  Enclosure：デバイス  エンクロージャ）１０と、ＣＭ（Controller  Module：コントローラ  モジュール）３１０とを有する。なお、同図では、ディスクアレイ装置３００がＣＭ３１０を１つのみ有する例を示すが、冗長化構成にして、２つ以上のＣＭを有するように構成してもよい。また、図５では、ディスクアレイ装置３００が１つのＤＥを有する例を示したが、ＤＥの数は同図に示した数に限られない。
【００４１】
ホスト４００は、ＣＨ（Channel：チャネル）４１０ａおよび４１０ｂを介してディスクアレイ装置３００と接続され、ディスクアレイ装置３００に対して、データのリード要求やライト要求を送信する。
【００４２】
ＤＥ１０は、複数のハードディスク装置を搭載する装置であり、ハードディスク装置１１〜１４を搭載する。なお、図５では、ＤＥ１０が４台のハードディスク装置を搭載する例を示したが、ＤＥが搭載するハードディスク装置の台数は、同図に示した数に限られない。
【００４３】
ハードディスク装置１１〜１４は、磁気ディスク装置等の記憶デバイスである。図５に示した例では、ハードディスク装置１１〜１４はＲＡＩＤ５を構成しているものとする。なお、ハードディスク装置は、磁気ディスク装置に限られず、熱磁気ディスク装置や光磁気ディスク装置のような他の記憶装置であってもよい。
【００４４】
ハードディスク装置１１〜１４によってＲＡＩＤ５が構成される場合、ホスト４００は、ハードディスク装置１１〜１４を個別のハードディスク装置として認識せず、ハードディスク装置１１〜１４を１つの論理ディスクとして認識してデータのアクセス要求を行う。例えば、ホスト４００は、ディスクアレイ装置３００に対してリード要求を送信する場合、取得対象のデータが記憶されている論理ブロックの番号である論理ブロック番号（「論理ブロックアドレス」や「論理アドレス」とも呼ばれる）を指定する。
【００４５】
ＣＭ３１０は、ＣＡ（Channel  Adapter：チャネル  アダプタ）３１１ａおよび３１１ｂと、ＤＡ（Device  Adapter：デバイス  アダプタ）３１２ａおよび３１２ｂと、リード要求受付部３１３と、記憶部３１４と、制御部３１５とを有する。
【００４６】
ＣＡ３１１ａおよび３１１ｂは、上位装置であるホスト４００との間の通信を制御するアダプタであり、ホスト４００のＣＨ４１０ａおよび４１０ｂと接続される。ＤＡ３１２ａおよび３１２ｂは、ＤＥ１０との間の通信を制御するアダプタである。
【００４７】
リード要求受付部３１３は、ホスト４００から入力されるリード要求を順次格納する記憶装置であり、例えば、キューである。後述する制御部３１５は、リード要求受付部３１３に格納されているリード要求を取り出して処理を行う。
【００４８】
記憶部３１４は、ハードディスクや不揮発性メモリ等の記憶デバイスであり、本実施例に関連するものとして、アドレス変換テーブル３１４ａを有する。アドレス変換テーブル３１４ａは、ハードディスク装置１１〜１４の論理ブロック番号に対応付けて、ハードディスク装置１１〜１４上におけるデータの物理的な記憶位置を示す物理ブロック番号を記憶する。
【００４９】
制御部３１５は、ＣＭ３１０を全体制御する制御部であり、本実施例に関連するものとして、リード命令生成部３１５ａと、リード制御部３１５ｂとを有する。
【００５０】
リード命令生成部３１５ａは、リード要求受付部３１３に格納されているリード要求を解析して、リード要求からリード命令を生成する処理部である。具体的には、リード命令生成部３１５ａは、リード要求受付部３１３に格納されているリード要求を読み出す。そして、リード命令生成部３１５ａは、アドレス変換テーブル３１４ａから、各リード要求に含まれる論理ブロック番号に対応する物理ブロック番号を取得する。
【００５１】
そして、リード命令生成部３１５ａは、取得した物理ブロック番号に基づいて、同一のハードディスク装置からデータを取得するリード要求が２個以上連続しているか否かを解析する。同一のハードディスク装置からデータを取得するリード要求が２個以上連続している場合、リード命令生成部３１５ａは、排他的論理和演算によりデータを取得するリード命令と、リード要求の指定通りにデータを取得するリード命令とをリード要求毎に交互に生成する。
【００５２】
図２に示した例を用いて説明すると、リード命令生成部３１５ａは、データＤ１１、Ｄ３１、Ｄ６１およびＤ９１を取得する４個のリード要求が連続していることを解析した場合、まず、データＤ１２、Ｄ１３およびパリティＰ１０を取得する３個のリード命令を生成する。そして、リード命令生成部３１５ａは、生成した３個のリード命令をリード制御部３１５ｂへ出力し、３個のリード命令を実行することで取得できるデータＤ１２、Ｄ１３およびパリティＰ１０の排他的論理和演算を行ってデータＤ１１を取得するように指示する。
【００５３】
そして、リード命令生成部３１５ａは、データＤ３１を取得するリード命令を生成して、生成したリード命令をリード制御部３１５ｂへ出力し、データＤ３１を取得するように指示する。さらに、データＤ６２、パリティ６０およびデータＤ６３を取得する３個のリード命令を生成して、生成した３個のリード命令をリード制御部３１５ｂへ出力し、データＤ６１を取得するように指示する。さらに、リード命令生成部３１５ａは、データＤ９１を取得するリード命令を生成して、生成したリード命令をリード制御部３１５ｂへ出力し、データＤ９１を取得するように指示する。
【００５４】
一方、同一のハードディスク装置からデータを取得するリード要求が２個以上連続していない場合、リード命令生成部３１５ａは、特定の範囲のストライプに記憶されているデータを全て取得する複数のリード要求が連続しているか否かを解析する。
【００５５】
なお、「特定の範囲のストライプ」とは、例えば、図４に示したストライプ１〜９のように、連続するストライプの範囲を示す。すなわち、特定の範囲のストライプに記憶されているデータを全て取得する複数のリード要求とは、ハードディスク装置１１〜１４に物理的に連続して記憶されているデータを取得する複数のリード要求であることを示す。
【００５６】
特定の範囲のストライプに記憶されているデータを全て取得するリード要求が連続している場合、リード命令生成部３１５ａは、ハードディスク装置１１〜１４に対するアクセス回数が均等、かつ、連続してアクセスする回数が大きくなるようにリード命令を生成する。
【００５７】
具体的には、リード命令生成部３１５ａは、まず、特定の範囲のストライプに記憶されているデータを全て取得する複数のリード要求を処理する単位数（以下、「リード要求処理単位数」という）を求める。
【００５８】
リード要求処理単位数は、「ＲＡＩＤグループを構成するハードディスク装置の台数」から「１つのストライプにパリティを記憶するハードディスク装置の台数」を減算した値（以下、「データ記憶台数」という）に、「ＲＡＩＤグループを構成するハードディスク装置の台数」から「１」を減算した値を乗算して求められる。
【００５９】
すなわち、
Ｘ＝「ＲＡＩＤグループを構成するハードディスク装置の台数」
Ｙ＝「１つのストライプにパリティを記憶するハードディスク装置の台数」
とすると、リード要求処理単位数は、
（Ｘ−Ｙ）×（Ｘ−１）
の式で求められる。
【００６０】
例えば、図４に示すように、４台のハードディスク装置によりＲＡＩＤ５を構成している場合は、Ｘ＝「４」、Ｙ＝「１」となるので、リード要求処理単位数は、（４−１）×（４−１）の演算結果である「９」として求められる。
【００６１】
リード命令生成部３１５ａは、求めたリード要求処理単位数分のリード要求を処理する間は、同一のデータ記憶台数分のハードディスク装置からデータを取得するようにリード命令を生成する。すなわち、「１つのストライプにパリティを記憶するハードディスク装置の台数（ＲＡＩＤ５では１台）」分のハードディスク装置をデータの読み取り対象外とする。
【００６２】
そして、次のリード要求処理単位数のリード要求を処理する間も、同一のデータ記憶台数分のハードディスク装置からデータを取得するようにリード命令を生成するが、データの読み取り対象外とするハードディスク装置を、前にリード要求処理単位数分のリード要求を処理した際にデータの読み取り対象外としたハードディスク装置から１台分ずらす。
【００６３】
図４に示す例では、リード要求処理単位数が「９」であるので、リード命令生成部３１５ａは、最初に処理する９個のリード要求については、ハードディスク装置１２〜１４からデータを取得するようにリード命令を生成して、ハードディスク装置１１をデータの読み取り対象外とする。そして、次に処理する９個のリード要求については、前にデータ取得の対象外としたハードディスク装置１１から１台分ずらして、ハードディスク装置１２をデータ取得の対象外として、ハードディスク装置１１、１３および１４からデータを取得するようにリード命令を生成する。
【００６４】
このように、リード命令生成部３１５ａは、リード要求処理単位数分のリード要求を処理するたびに、データの読み取り対象外とするハードディスク装置を１台ずらしてリード命令を生成する。そして、リード命令生成部３１５ａは、リード命令の生成をストライプ毎に行い、生成したリード命令をリード制御部３１５ｂへ出力する。例えば、図４に示したストライプ１の場合、リード命令生成部３１５ａは、データＤ１２、Ｄ１３およびパリティＰ１０を取得する３個のリード命令を生成して、生成した３個のリード命令をリード制御部３１５ｂへ出力し、データＤ１１、Ｄ１２およびＤ１３を取得するように指示する。
【００６５】
特定の範囲のストライプに記憶されているデータを取得するリード要求が連続している場合におけるリード命令生成部３１５ａの処理について、図４に示した例を用いて説明する。リード命令生成部３１５ａは、データＤ１１〜Ｄ１３、Ｄ２１〜Ｄ２３、・・・、Ｄ９１〜Ｄ９３を取得する２７個のリード要求が連続していることを解析した場合、まず、リード要求処理単位数として「９」を求める。
【００６６】
そして、リード命令生成部３１５ａは、最初の処理する９個のリード要求（データＤ１１〜Ｄ１３、Ｄ２１〜Ｄ２３およびＤ３１〜Ｄ３３を取得する９個のリード要求）については、ハードディスク装置１２〜１４からデータを取得するようにリード命令を生成する。
【００６７】
このとき、リード命令生成部３１５ａは、ストライプ毎にリード命令を生成するので、まず、ストライプ１に記憶されているデータＤ１１〜Ｄ１３を取得するために、データＤ１２、Ｄ１３およびパリティＰ１０を取得する３個のリード命令を生成する。そして、リード命令生成部３１５ａは、生成した３個のリード命令をリード制御部３１５ｂへ出力し、データＤ１１〜Ｄ１３を取得するように指示する。
【００６８】
同様に、ストライプ２に記憶されているデータＤ２１〜Ｄ２３を取得するために、データＤ２２、パリティＰ２０およびデータＤ２３を取得する３個のリード命令を生成して、リード制御部３１５ｂへ出力し、データＤ２１〜Ｄ２３を取得するように指示する。ストライプ３についても同様にリード命令を生成して、リード制御部３１５ｂにデータＤ３１〜Ｄ３３を取得するように指示する。
【００６９】
そして、リード命令生成部３１５ａは、次に処理する９個のリード要求（データＤ４１〜Ｄ４３、Ｄ５１〜Ｄ５３およびＤ６１〜Ｄ６３を取得する９個のリード要求）については、前に９個のリード要求を処理する際にデータ取得の対象外としたハードディスク装置１１から１台分ずらして、ハードディスク装置１２をデータ取得の対象外とする。すなわち、ハードディスク装置１１、１３および１４からデータを取得するようにリード命令を生成する。
【００７０】
最初の９個のリード要求の処理と同様に、リード命令生成部３１５ａは、ストライプ毎に、ストライプ４〜６に記憶されているデータを取得するためにリード命令を生成する。次に処理する９個リード要求については、ハードディスク装置１３をデータ取得の対象外として、ハードディスク装置１１、１２および１４からデータを取得するようにリード命令を生成する。
【００７１】
特定の範囲のストライプに記憶されているデータを全て取得するリード要求が連続している場合、リード命令生成部３１５ａは、このようにしてリード命令を生成する。
【００７２】
一方、同一のハードディスク装置からデータを取得するリード要求が２個以上連続しておらず、かつ、特定の範囲のストライプに記憶されているデータを全て取得するリード要求が連続していない場合、リード命令生成部３１５ａは、リード要求に指定されている論理ブロックに対応する物理アドレスを含むリード命令を生成する。
【００７３】
このようにして、リード命令を生成したリード命令生成部３１５ａは、生成したリード命令をリード制御部３１５ｂへ出力する。リード制御部３１５ｂは、入力されたリード命令を実行して、ハードディスク装置１１〜１４からデータを取得する。そして、リード制御部３１５ｂは、取得したデータを、ＣＡ３１１ａおよび３１１ｂを介してホスト４００へ送信する。
【００７４】
また、リード制御部３１５ｂは、リード命令生成部３１５ａから排他的論理和演算を行うように指示された場合には、かかる指示内容に従って排他的論理和演算を行ってデータを取得する。
【００７５】
例えば、図２に示した例において、データＤ１２、Ｄ１３およびパリティＰ１０を取得する３個のリード命令とともに、データＤ１１を取得するように指示された場合、リード制御部３１５ｂは、入力された３個のリード命令を実行して、データＤ１２、Ｄ１３およびパリティＰ１０を取得する。そして、取得したデータＤ１２、Ｄ１３およびパリティＰ１０の排他的論理和演算を行ってデータＤ１１を取得し、データＤ１１をホスト４００へ送信する。
【００７６】
また、例えば、図４に示した例において、データＤ１２、Ｄ１３およびパリティＰ１０を取得する３個のリード命令とともに、データＤ１１〜Ｄ１３を取得するように指示された場合、リード制御部３１５ｂは、入力された３個のリード命令を実行して、データＤ１２、Ｄ１３およびパリティＰ１０を取得する。そして、取得したデータＤ１２、Ｄ１３およびパリティＰ１０の排他的論理和演算を行ってデータＤ１１を取得する。そして、リード制御部３１５ｂは、データＤ１１〜Ｄ１３をホスト４００へ送信する。
【００７７】
次に、本実施例に係るディスクアレイ装置３００によるリード処理について説明する。図６は、本実施例に係るディスクアレイ装置３００によるリード処理手順を示すフローチャートである。
【００７８】
同図に示すように、ディスクアレイ装置３００のリード命令生成部３１５ａは、リード要求受付部３１３に格納されているリード要求を読み出す（ステップＳ１０１）。そして、リード命令生成部３１５ａは、アドレス変換テーブル３１４ａから、読み出したリード要求に含まれる論理ブロック番号に対応する物理ブロック番号を取得する（ステップＳ１０２）。
【００７９】
そして、リード命令生成部３１５ａは、取得した物理ブロック番号に基づいて、各リード要求を解析し、同一のハードディスク装置からデータを取得するリード要求が２個以上連続している場合（ステップＳ１０３肯定）、ディスクアクセスが分散するように、排他的論理和演算によりデータを取得するリード命令と、リード要求の指定通りにデータを取得するリード命令とをリード要求毎に交互に生成する（ステップＳ１０４）。
【００８０】
一方、同一のハードディスク装置からデータを取得するリード要求が２個以上連続しておらず（ステップＳ１０３否定）、特定の範囲のストライプに記憶されているデータを全て取得するリード要求が連続している場合（ステップＳ１０５肯定）、リード命令生成部３１５ａは、ハードディスク装置１１〜１４に対するアクセス回数が均等、かつ、連続してアクセスする回数が大きくなるようにリード命令を生成する（ステップＳ１０６）。
【００８１】
一方、同一のハードディスク装置からデータを取得するリード要求が２個以上連続しておらず（ステップＳ１０３否定）、かつ、特定の範囲のストライプに記憶されているデータを全て取得するリード要求が連続していない場合（ステップＳ１０５否定）、リード命令生成部３１５ａは、リード要求の指定通りにデータを取得するリード命令を生成する（ステップＳ１０７）。
【００８２】
そして、リード制御部３１５ｂは、リード命令生成部３１５ａから入力されたリード命令を実行してハードディスク装置１１〜１４からデータを取得し（ステップＳ１０８）、取得したデータを、ＣＡ３１１ａおよび３１１ｂを介してホスト４００へ送信する（ステップＳ１０９）。
【００８３】
上述してきたように、本実施例に係るディスクアレイ装置３００は、リード命令生成部３１５ａがリード要求を解析して、同一のハードディスク装置からデータを取得するリード要求が２個以上連続している場合に、排他的論理和演算によりデータを取得するリード命令と、リード要求の指定通りにデータを取得するリード命令とを交互に生成し、特定の範囲のストライプに記憶されているデータを全て取得するリード要求が連続している場合に、ハードディスク装置１１〜１４に対するアクセス回数が均等、かつ、連続してアクセスする回数が大きくなるようにリード命令を生成するように構成したので、ＲＡＩＤ５を構成するハードディスク装置に対するリード処理の性能を向上させることができる。
【００８４】
なお、上記実施例では、１台のハードディスク装置からデータを取得するリード要求が連続している場合に、データを取得するハードディスク装置を分散する例を示したが、２台のハードディスク装置からデータを取得するリード要求が複数個以上連続している場合についても、データを取得するハードディスク装置を分散するように構成してもよい。
【００８５】
また、上記実施例では、ハードディスク装置１１〜１４がＲＡＩＤ５を構成する例を示したが、ストライプ毎に水平パリティ（Ｐ）と重み付けパリティ（Ｑ）を記憶するＲＡＩＤ６を構成する場合であってもよい。
【００８６】
図７〜図１０を用いて具体的に説明する。図７は、ＲＡＩＤ６の場合における従来のディスクアレイ装置によるリード処理の一例を説明するための図である。同図に示した例では、ハードディスク装置１１〜１４は、ＲＡＩＤ６を構成しており、ストライプ毎に、水平パリティＰと重み付けパリティＱを記憶する。ここで、ホスト４００からデータＤ１１、Ｄ５１、Ｄ６１およびＤ９１を取得するリード要求が連続して入力されると、従来のディスクアレイ装置は、並列的にデータの読み出しを行えず、リード処理の性能が劣化する。
【００８７】
図８は、ＲＡＩＤ６の場合における本実施例に係るディスクアレイ装置によるリード処理の一例を説明するための図である。ここでは、図７に示した例と同様に、ホスト４００からデータＤ１１、Ｄ５１、Ｄ６１およびＤ９１を取得するリード要求が連続して入力されたとする。同図に示すように、ディスクアレイ装置は、ＲＡＩＤ５の場合と同様（図２参照）に、ハードディスク装置１１〜１４にアクセスする回数が均等になるように制御する。これにより、ハードディスク装置１１〜１４に対するアクセス負荷を分散することができる。
【００８８】
図９は、ＲＡＩＤ６の場合における従来のディスクアレイ装置によるリード処理の一例を説明するための図である。同図に示した例では、ストライプ１〜９に記憶されているデータを全て取得するリード要求が連続して入力されたとする。かかる場合、ディスクアレイ装置は、ハードディスク装置１１〜１４に対して、最高で２つのストライプ分を連続してアクセスする。
【００８９】
図１０は、ＲＡＩＤ６の場合における本実施例に係るディスクアレイ装置によるリード処理の一例を説明するための図である。ここでは、図９に示した例と同様に、ストライプ１〜９に記憶されているデータを全て取得するリード要求が連続して入力されたとする。同図に示すように、ディスクアレイ装置は、ＲＡＩＤ５の場合と同様（図４参照）に、ハードディスク装置１１〜１４に対するアクセス回数が均等、かつ、アクセスの連続性が大きくなるように制御する。同図に示した例では、ハードディスク装置１１〜１４に対して、最高で６つのストライプ分を連続してアクセスすることになり、図９に示した従来例と比較して、１台のハードディスク装置に連続してアクセスする回数は３倍になる。
【００９０】
また、上記実施例では、ハードディスク装置１１〜１４がＲＡＩＤ５を構成する例を示したが、ハードディスク装置１１〜１４が、ストライプ毎にパリティを記憶するハードディスク装置を変更しないＲＡＩＤ３またはＲＡＩＤ４や、パリティの代わりにハミング符号を記憶するＲＡＩＤ２を構成する場合であってもよい。
【００９１】
また、上記実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１１を用いて、上記実施例と同様の機能を有するディスクアレイ装置制御プログラムを実行するコンピュータの一例を説明する。図１１は、ディスクアレイ装置制御プログラムを実行するコンピュータを示す図である。
【００９２】
図１１に示すように、コンピュータ１０００は、各種演算処理を実行する演算手段であるＣＰＵ１０１０と、不揮発性メモリであるＲＯＭ（Read  Only  Memory）１０２０と、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）１０３０とをバス１０４０で接続して構成される。
【００９３】
ＲＯＭ１０２０には、図５に示した制御部３１５と同様の機能を有するディスクアレイ装置制御プログラム１０２１と、図５に示したアドレス変換テーブル３１４ａに対応するアドレス変換データ１０２２とが記憶される。
【００９４】
そして、ＣＰＵ１０１０がディスクアレイ装置制御プログラム１０２１をＲＯＭ１０２０から読み出してＲＡＭ１０３０に展開することにより、ディスクアレイ装置制御プログラム１０２１は、ディスクアレイ装置制御プロセス１０３１として機能するようになる。そして、ディスクアレイ装置制御プロセス１０３１は、アドレス変換データ１０２２から読み出した情報等を適宜ＲＡＭ１０３０上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
【００９５】
ところで、ディスクアレイ装置制御プログラム１０２１は、必ずしもＲＯＭ１０２０に記憶させておく必要はなく、例えば、コンピュータ１０００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、または、コンピュータ１０００の内外に備えられるハードディスクドライブ（ＨＤＤ）などの「固定用の物理媒体」、さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１０００に接続される「他のコンピュータ（またはサーバ）」に記憶させておき、コンピュータ１０００がこれらからプログラムを読み出して実行するようにしてもよい。
【００９６】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）ストライプごとにパリティを生成するＲＡＩＤグループを構成する複数の記憶媒体を搭載し、リード要求受付部に格納されているリード要求を処理することで取得したデータを上位装置に送信するディスクアレイ装置であって、
前記リード要求受付部に同一の記憶媒体からデータを取得するリード要求が連続して格納されている場合に、リード要求に指定されている目的のデータの属するストライプに記憶されているパリティと該ストライプに記憶されている前記目的のデータ以外のデータを取得する複数のリード命令と、リード要求に指定されているデータを取得するリード命令とを、リード要求毎に交互に生成するリード命令生成手段と、
前記リード命令生成手段によって、前記目的のデータ以外のデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行して取得した複数のデータの排他的論理和演算を行って前記目的のデータを取得し、前記リード命令生成手段によって、リード要求に指定されているデータを取得するリード命令が生成された場合に、該リード命令を実行してデータを取得し、取得したデータを前記上位装置へ送信するリード制御手段と
を備えたことを特徴とするディスクアレイ装置。
【００９７】
（付記２）前記リード命令生成手段は、前記リード要求受付部に、特定の範囲のストライプに記憶されているデータを全て取得する複数のリード要求が連続して格納されている場合に、所定のリード要求数を処理するたびに、データを取得しない記憶媒体を示す対象外記憶媒体を変更しながら、前記特定の範囲のストライプに記憶されており、かつ、前記対象外記憶装置以外の記憶装置に記憶されているデータを取得する複数のリード命令を生成し、
前記リード制御手段は、前記リード命令生成手段によって、前記特定の範囲のストライプに記憶されているデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行してデータを取得し、取得したデータがパリティの場合は、該複数のリード命令を実行して取得した該パリティの属するストライプのデータと、該パリティとの排他的論理和演算を行ってデータを取得することを特徴とする付記１に記載のディスクアレイ装置。
【００９８】
（付記３）前記リード命令生成手段は、前記所定のリード要求数を、前記複数の記憶媒体の台数から前記ストライプ内にパリティを記憶する記憶媒体の台数を減算したデータ記憶台数に、前記複数の記憶媒体の台数から一を減算した値を乗算して求めることを特徴とする付記２に記載のディスクアレイ装置。
【００９９】
（付記４）前記リード命令生成手段は、前記対象外記憶媒体の台数を、前記ストライプ内にパリティを記憶する記憶媒体の台数とすることを特徴とする付記２または３に記載のディスクアレイ装置。
【０１００】
（付記５）前記リード命令生成手段は、前記目的のデータ以外のデータを取得する複数のリード命令と、前記リード要求に指定されているデータを取得するリード命令とを、所定のリード要求の数を処理する毎に交互に生成することを特徴とする付記１に記載のディスクアレイ装置。
【０１０１】
（付記６）ストライプごとにパリティを生成するＲＡＩＤグループを構成する複数の記憶媒体を搭載し、リード要求受付部に格納されているリード要求を処理することで取得したデータを上位装置に送信するディスクアレイ装置を制御するディスクアレイ装置制御方法であって、
前記リード要求受付部に同一の記憶媒体からデータを取得するリード要求が連続して格納されている場合に、リード要求に指定されている目的のデータの属するストライプに記憶されているパリティと該ストライプに記憶されている前記目的のデータ以外のデータを取得する複数のリード命令と、リード要求に指定されているデータを取得するリード命令とを、リード要求毎に交互に生成するリード命令生成ステップと、
前記リード命令生成ステップによって、前記目的のデータ以外のデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行して取得した複数のデータの排他的論理和演算を行って前記目的のデータを取得し、前記リード命令生成ステップによって、リード要求に指定されているデータを取得するリード命令が生成された場合に、該リード命令を実行してデータを取得し、取得したデータを上位装置へ送信するリード制御ステップと
を含んだことを特徴とするディスクアレイ装置制御方法。
【０１０２】
（付記７）前記リード命令生成ステップは、前記リード要求受付部に、特定の範囲のストライプに記憶されているデータを全て取得する複数のリード要求が連続して格納されている場合に、所定のリード要求数を処理するたびに、データを取得しない記憶媒体を示す対象外記憶媒体を変更しながら、前記特定の範囲のストライプに記憶されており、かつ、前記対象外記憶装置以外の記憶装置に記憶されているデータを取得する複数のリード命令を生成し、
前記リード制御ステップは、前記リード命令生成ステップによって、前記特定の範囲のストライプに記憶されているデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行してデータを取得し、取得したデータがパリティの場合は、該複数のリード命令を実行して取得した該パリティの属するストライプのデータと、該パリティとの排他的論理和演算を行ってデータを取得することを特徴とする付記６に記載のディスクアレイ装置制御方法。
【０１０３】
（付記８）前記リード命令生成ステップは、前記所定のリード要求数を、前記複数の記憶媒体の台数から前記ストライプ内にパリティを記憶する記憶媒体の台数を減算したデータ記憶台数に、前記複数の記憶媒体の台数から一を減算した値を乗算して求めることを特徴とする付記７に記載のディスクアレイ装置制御方法。
【０１０４】
（付記９）前記リード命令生成ステップは、前記対象外記憶媒体の台数を、前記ストライプ内にパリティを記憶する記憶媒体の台数とすることを特徴とする付記７または８に記載のディスクアレイ装置制御方法。
【０１０５】
（付記１０）前記リード命令生成ステップは、前記目的のデータ以外のデータを取得する複数のリード命令と、前記リード要求に指定されているデータを取得するリード命令とを、所定のリード要求の数を処理する毎に交互に生成することを特徴とする付記６に記載のディスクアレイ装置制御方法。
【０１０６】
（付記１１）ストライプごとにパリティを生成するＲＡＩＤグループを構成する複数の記憶媒体を搭載し、リード要求受付部に格納されているリード要求を処理することで取得したデータを上位装置に送信するディスクアレイ装置を制御するディスクアレイ装置制御プログラムであって、
前記リード要求受付部に同一の記憶媒体からデータを取得するリード要求が連続して格納されている場合に、リード要求に指定されている目的のデータの属するストライプに記憶されているパリティと該ストライプに記憶されている前記目的のデータ以外のデータを取得する複数のリード命令と、リード要求に指定されているデータを取得するリード命令とを、リード要求毎に交互に生成するリード命令生成手順と、
前記リード命令生成手順によって、前記目的のデータ以外のデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行して取得した複数のデータの排他的論理和演算を行って前記目的のデータを取得し、前記リード命令生成手順によって、リード要求に指定されているデータを取得するリード命令が生成された場合に、該リード命令を実行してデータを取得し、取得したデータを上位装置へ送信するリード制御手順と
をコンピュータに実行させることを特徴とするディスクアレイ装置制御プログラム。
【０１０７】
（付記１２）前記リード命令生成手順は、前記リード要求受付部に、特定の範囲のストライプに記憶されているデータを全て取得する複数のリード要求が連続して格納されている場合に、所定のリード要求数を処理するたびに、データを取得しない記憶媒体を示す対象外記憶媒体を変更しながら、前記特定の範囲のストライプに記憶されており、かつ、前記対象外記憶装置以外の記憶装置に記憶されているデータを取得する複数のリード命令を生成し、
前記リード制御手順は、前記リード命令生成手順によって、前記特定の範囲のストライプに記憶されているデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行してデータを取得し、取得したデータがパリティの場合は、該複数のリード命令を実行して取得した該パリティの属するストライプのデータと、該パリティとの排他的論理和演算を行ってデータを取得することを特徴とする付記１１に記載のディスクアレイ装置制御プログラム。
【０１０８】
（付記１３）前記リード命令生成手順は、前記所定のリード要求数を、前記複数の記憶媒体の台数から前記ストライプ内にパリティを記憶する記憶媒体の台数を減算したデータ記憶台数に、前記複数の記憶媒体の台数から一を減算した値を乗算して求めることを特徴とする付記１２に記載のディスクアレイ装置制御プログラム。
【０１０９】
（付記１４）前記リード命令生成手順は、前記対象外記憶媒体の台数を、前記ストライプ内にパリティを記憶する記憶媒体の台数とすることを特徴とする付記１２または１３に記載のディスクアレイ装置制御プログラム。
【０１１０】
（付記１５）前記リード命令生成手順は、前記目的のデータ以外のデータを取得する複数のリード命令と、前記リード要求に指定されているデータを取得するリード命令とを、所定のリード要求の数を処理する毎に交互に生成することを特徴とする付記１１に記載のディスクアレイ装置制御プログラム。
【０１１１】
（付記１６）ストライプごとにパリティを生成するＲＡＩＤグループを構成する複数の記憶媒体を搭載し、リード要求受付部に格納されているリード要求を処理することで取得したデータを上位装置に送信するディスクアレイ装置を制御するディスクアレイ制御装置であって、
前記リード要求受付部に同一の記憶媒体からデータを取得するリード要求が連続して格納されている場合に、リード要求に指定されている目的のデータの属するストライプに記憶されているパリティと該ストライプに記憶されている前記目的のデータ以外のデータを取得する複数のリード命令と、リード要求に指定されているデータを取得するリード命令とを、リード要求毎に交互に生成するリード命令生成手段と、
前記リード命令生成手段によって、前記目的のデータ以外のデータを取得する複数のリード命令が生成された場合に、該複数のリード命令を実行して取得した複数のデータの排他的論理和演算を行って前記目的のデータを取得し、前記リード命令生成手段によって、リード要求に指定されているデータを取得するリード命令が生成された場合に、該リード命令を実行してデータを取得し、取得したデータを前記上位装置へ送信するリード制御手段と
を備えたことを特徴とするディスクアレイ制御装置。
【図面の簡単な説明】
【０１１２】
【図１】従来のディスクアレイ装置によるリード処理の一例を説明するための図である。
【図２】本実施例に係るディスクアレイ装置によるリード処理の一例を説明するための図である。
【図３】従来のディスクアレイ装置によるリード処理の一例を説明するための図である。
【図４】本実施例に係るディスクアレイ装置によるリード処理の一例を説明するための図である。
【図５】本実施例に係るディスクアレイ装置の構成を示す機能ブロック図である。
【図６】本実施例に係るディスクアレイ装置によるリード処理手順を示すフローチャートである。
【図７】ＲＡＩＤ６の場合における従来のディスクアレイ装置によるリード処理の一例を説明するための図である。
【図８】ＲＡＩＤ６の場合における本実施例に係るディスクアレイ装置によるリード処理の一例を説明するための図である。
【図９】ＲＡＩＤ６の場合における従来のディスクアレイ装置によるリード処理の一例を説明するための図である。
【図１０】ＲＡＩＤ６の場合における本実施例に係るディスクアレイ装置によるリード処理の一例を説明するための図である。
【図１１】ディスクアレイ装置制御プログラムを実行するコンピュータを示す図である。
【符号の説明】
【０１１３】
１０  ＤＥ
１１〜１４  ハードディスク装置
３００  ディスクアレイ装置
３１０  ＣＭ
３１１ａ、３１１ｂ  ＣＡ
３１２ａ、３１２ｂ  ＤＡ
３１３  リード要求受付部
３１４  記憶部
３１４ａ  アドレス変換テーブル
３１５  制御部
３１５ａ  リード命令生成部
３１５ｂ  リード制御部
４００  ホスト
４１０ａ、４１０ｂ  ＣＨ
１０００  コンピュータ
１０１０  ＣＰＵ
１０２０  ＲＯＭ
１０２１  ディスクアレイ装置制御プログラム
１０２２  アドレス変換データ
１０３０  ＲＡＭ
１０３１  ディスクアレイ装置制御プロセス
１０４０  バス
【図１】
0004402711.tif 000002
【図２】
0004402711.tif 000003
【図３】
0004402711.tif 000004
【図４】
0004402711.tif 000005
【図５】
0004402711.tif 000006
【図６】
0004402711.tif 000007
【図７】
0004402711.tif 000008
【図８】
0004402711.tif 000009
【図９】
0004402711.tif 000010
【図１０】
0004402711.tif 000011
【図１１】
0004402711.tif 000012