(57)【要約】【課題】ＲＡＩＤ５を採用したディスクアレイシステムでは、リード要求の範囲を冗長データごと一括して読み込んだ場合に、冗長データの分だけ転送効率が低下するという課題がある。また、リード要求を発行、処理する際に、ディスク制御のためのオーバヘッドが生じるという課題がある。【解決手段】ディスクアレイシステムにおいて、データのみをリード要求範囲とするようなディスク装置へのディスクＩＯ設定手段を設ける。また、ディスクＩＯ設定手段はディスクアレイシステムの管理単位であるストライプを複数まとめてディスク装置へのＩＯを設定可能とする。【選択図】  図４
2004220129.tif 000002
【特許請求の範囲】
【請求項１】
アレイ状に配置した複数のディスク装置を備えるディスクアレイシステムであって、データを任意のサイズに分割し前記複数ディスク装置に格納可能なアレイ制御部を有し、ディスク装置へ発行するコマンド作成時に、二つ以上のデータストライプのみをまとめて読み込むコマンドを作成するディスクＩＯ設定手段を有する事を特徴とするディスクアレイシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はディスクアレイシステムの制御方式にかかわり、特にディスク装置へのコマンド発行方式に関するものである。
【０００２】
【従来の技術】
ディスクアレイシステムは、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）とも呼ばれ、複数のディスク装置をアレイ状に配置した構成をとり、ホスト装置からのリード要求（データの読み出し要求）およびライト要求（データの書き込み要求）をディスクの並列操作によって高速に処理するとともに、データに冗長データを付加することによって信頼性を向上させた記憶装置である。
【０００３】
ディスクアレイシステムは、非特許文献１に記載されているように、冗長データの種類と構成により５つのレベルに分類されている。
【０００４】
分類法のレベル５（以下、ＲＡＩＤ５と呼ぶことにする）においては、冗長データが各ディスクに分散されて記憶されており、冗長データ更新時に１台の冗長データディスクに処理が集中することを防ぎ、ライト処理時の性能低下を抑えることができる。ＲＡＩＤ５ではデータをストライプと呼ばれる管理単位に分割し処理を行う。
【０００５】
【非特許文献１】
デビット・エー・パターソン（Ｄａｖｉｄ  Ａ．Ｐａｔｔｅｒｓｏｎ）外２名著、「レイド装置の一考察（Ａ  Ｃａｓｅ  ｆｏｒ  Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ  （ＲＡＩＤ））」、１９９８年ＡＣＭ  ＳＩＧＭＯＤ国際会議予稿集（Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １９８８  ＡＣＭ  ＳＩＧＭＯＤ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｍａｎａｇｅｍｅｎｔ  ｏｆ  Ｄａｔａ）、ＡＣＭプレス（ＡＣＭ  Ｐｒｅｓｓ）、１９８８年、ｐ．１０９−ｐ．１１６
【０００６】
【発明が解決しようとする課題】
従来技術では長大サイズのリード要求の際に、冗長データもディスクからのリード対象としており、ＲＡＩＤ５グループ内のディスク数に応じた性能低下が生じるという課題がある。ＲＡＩＤ５のディスク構成を表すｎＤ＋１Ｐにおいては、ｎのデータに対して、冗長データを１読み出す必要があり、ｎ／（ｎ＋１）の性能低下が生じる。
【０００７】
そこで、係る課題を解決するための技術を提供する。
【０００８】
また、ディスクからのデータ転送時に生じるオーバヘッドを削減することにより、さらなる性能向上を図る。
【０００９】
【課題を解決するための手段】
本発明は、冗長データを読み込むことなくデータを読み込み、また、データ読み込みの際に生じるディスク制御のためのオーバヘッドを低減するようなリードコマンドを作成するディスクＩＯ設定手段を備える。
【００１０】
【発明の実施の形態】
以下に、本発明の実施形態を説明する。尚これにより本発明が限定されるものではない。
【００１１】
本実施形態は、ディスクアレイシステムにおいて、ホスト装置から長大サイズのリード要求があった場合に、ディスク装置からデータのみを読み出し、また、同一ディスク装置内の複数ストライプを一つの読み出し処理で読み出すことで、高性能化を図るためのものである。
【００１２】
本実施形態で用いられるディスクアレイシステムの構成例を図１を用いて説明する。図１において、１００はホスト装置、２００はアレイ制御部、３００はディスク装置群である。
【００１３】
アレイ制御部２００はアレイ制御部２００の制御を行うメイン制御部２０１と、冗長データの生成を行う冗長データ生成手段２０３と、アレイ制御部２００内のデータ転送を行うデータ転送手段２０４と、プログラム保持部２０５と、データを格納するデータ保持部２０６と、ホスト入出力手段２０７と、ディスク入出力手段２１１〜２１５で構成し、それぞれをアレイ内部バス２０８で接続する。
【００１４】
ホスト入出力手段２０７は、ホストインターフェース４００を介し、ホスト装置１００のホスト入出力手段１０１と接続する。
【００１５】
プログラム保持部２０５は、メイン制御部２０１により実行されるプログラムを格納するプログラム保持手段２２１を有する。
【００１６】
ディスク装置群３００は、本実施例においては５台のディスク装置３０１〜３０５により構成している。
【００１７】
各ディスク装置３０１〜３０５は、アレイ制御部２００にある５つのディスク入出力手段２１１〜２１５とそれぞれディスクインターフェース５０１〜５０５により接続する。
【００１８】
次にプログラム保持手段２２１の一例を図２を用いて説明する。プログラム保持手段２２１はメイン制御部２０１で使用されるプログラムを保持する。
【００１９】
図２において、プログラム保持手段２２１は、ディスクアレイ装置を制御するＲＡＩＤ制御手段６０１と、ディスク装置へ発行するコマンドを作成するディスクＩＯ設定手段６０２と、データアクセスの際に用いる論理アドレスとディスク装置上のアドレスとを相互変換する論理−物理アドレス変換手段６０３と、一時的に作成中のコマンドを保持しておくコマンド保持手段６０４により構成している。
【００２０】
ＲＡＩＤ制御手段６０１は、ディスクアレイ制御を実施するが、公知の技術により容易に実現可能であるため説明を省略する。
【００２１】
次に本実施形態の論理アドレスと物理アドレスの対応例を図３を用いて説明する。論理アドレスとは、ホスト装置１００から抽出されるアドレスであり、物理アドレスとはディスクアレイシステム内で扱うアドレスである。
【００２２】
図３において、ディスク装置３０１〜３０５は図１に示したものと同一であり、データ管理単位であるストライプ７０１を複数有する。図３において、各位置に存在するストライプ７０１を区別するため、以下ではデータが格納されているストライプ０〜４７、パリティが格納されているストライプＰ０〜Ｐ１１と表す。
【００２３】
各ストライプは、水平方向に並んでいるものがＲＡＩＤ５のパリティグループを構成しているものとする。例えば、ストライプ０〜３、ストライプＰ０は同一のパリティグループである。
【００２４】
図７はプログラム保持部２０６に格納され、ディスクＩＯ設定手段６０２に管理される、ディスク装置ＩＯ設定処理管理テーブルである。
【００２５】
ディスクＩＯ設定手段６０２の処理で参照されるテーブルであるディスク装置ＩＯ設定処理管理テーブル２０００は、ディスク装置エントリ２００１と、各ディスク装置がディスクＩＯ設定手段中で処理されたかどうかを示すディスク装置処理済フラグ２００２と、ディスクＩＯ設定手段中各ディスク装置内リード範囲の先頭アドレスを示すディスクリード範囲先頭ＬＢＡ２００３と、ディスクＩＯ設定手段中各ディスク装置内リード範囲の末尾アドレスを示すディスクリード範囲末尾ＬＢＡ２００４を有する。
【００２６】
図４は、ディスクＩＯ設定手段６０２の処理動作の一例を示した制御フローである。
【００２７】
図４において、ホストからのＩＯ要求によって、ディスク装置のあるリード範囲に対するリード要求が発生すると、まず全ディスク装置の処理済フラグ２００２をＯＦＦとする（ステップ１０００）。
【００２８】
次に、全ディスクの処理済フラグが、ＯＮとなっているかを判断する（ステップ１００１）。ステップ１００１において、全ディスクの処理済フラグがＯＮとなっている場合は、全てのディスクＩＯ設定が終了となる。
【００２９】
ステップ１００１において、全ディスクの処理済フラグのうち、ＯＦＦとなっているものがある場合は、処理済フラグがＯＦＦになっているディスクを選択し（ステップ１００２）、選択したディスクが有するデータと、リード範囲を比較し、重なっている部分をディスクリード範囲として、ディスクリード範囲の先頭ＬＢＡをディスクリード範囲先頭ＬＢＡ２００３に、ディスクリード範囲の末尾ＬＢＡをディスクリード範囲末尾ＬＢＡ２００４に設定し（ステップ１００３）、ディスクリード範囲は０かどうかの判断を行う（ステップ１００４）。
【００３０】
ここでディスクリード範囲が０とは、ディスクリード範囲がないことを示す。
【００３１】
以下、リードコマンドの作成及び設定はコマンド保持手段６０４にコマンドを保持することで動作を行う。以下、コマンドの作成過程では、ディスク装置ＩＯ設定処理管理テーブルにディスクリード範囲の先頭ＬＢＡ及び末尾ＬＢＡを設定することで、ディスクリード範囲の設定動作を行う。
【００３２】
ステップ１００４において、ディスクリード範囲が０でない場合は、ディスク装置に対して発行するためのリードコマンドを、コマンド保持手段６０４に新規作成し、リードコマンドの先頭アドレスに、ディスクリード範囲の先頭アドレスを設定し（ステップ１００５）、物理ディスクにおいて、ディスクリード範囲はパリティによって分断されているかどうかを判断する（ステップ１００６）。
【００３３】
ステップ１００６において、ディスクリード範囲がパリティによって分断されている場合は、リードコマンドのＩＯサイズをディスクリード範囲の先頭からパリティによる分断位置までのサイズに設定し（ステップ１００９）、ディスクリード範囲から前記作成したリードコマンドにより読み込み対象となる範囲を削除した範囲を、新たなディスクリード範囲として再設定する（ステップ１０１０）。
【００３４】
続いてリードコマンドをコマンド保持手段６０４に新規作成し、リードコマンドの先頭アドレスに、前記再設定を行ったディスクリード範囲の先頭アドレスを設定する（ステップ１００５）。
【００３５】
ステップ１００６において、ディスクリード範囲がパリティによって分断されていない場合は、リードコマンドのＩＯサイズを、ディスクリード範囲のサイズに設定し（ステップ１００７）、選択したディスクの処理済フラグをＯＮし（ステップ１００８）、全ディスクの処理済フラグがＯＮとなっているかどうかの判断を行う（ステップ１００１）。
【００３６】
ステップ１００４において、ディスクリード範囲が０の場合は、選択したディスクでのリード要求がないため、選択したディスクの処理済フラグをＯＮとし（ステップ１００８）、全ディスクの処理済フラグがＯＮとなっているかどうかの判断を行う（ステップ１００１）。
【００３７】
以降、前述のステップ１００１の処理を行う。以上が、本実施形態のドライブＩＯ設定処理動作の一例である。
【００３８】
以下では、ドライブＩＯ設定処理動作の一例として、リード範囲がストライプ１０〜３０であった場合の処理動作を示す。
【００３９】
まず、ディスク装置３０１〜３０５の処理済フラグがＯＦＦとなり（ステップ１０００）、処理済フラグがＯＦＦのディスクが存在するため（ステップ１００１）、処理済フラグがＯＦＦのディスクから処理対象ディスクを選択する事となる（ステップ１００２）。
【００４０】
ここではディスク装置３０１を選択したとし、ディスク装置３０１とリード範囲の重なっている部分、ストライプ５、ストライプ１０、ストライプ１５、ストライプ２０、ストライプ２５、ストライプ３０が、ディスクリード範囲として設定される（ステップ１００３）。
【００４１】
ディスクリード範囲は０でないため（ステップ１００４）、ディスク装置に対して発行されるリードコマンドを新規作成し、リードコマンドの先頭アドレスとして、ディスクリード範囲の先頭である、ストライプ１０の先頭アドレスが設定される（ステップ１００５）。
【００４２】
ディスクリード範囲は、パリティである、ストライプＰ４によって分断されているため（ステップ１００６）、リードコマンドのＩＯサイズとしては、ディスクリード範囲の先頭からパリティによる分断位置まで、すなわち、ストライプ１０の先頭から、ストライプ１５の末尾までが、設定される（ステップ１００９）。
【００４３】
ディスクリード範囲から、前記作成したリードコマンドの読み込み対象範囲を削除した範囲をディスクリード範囲として再設定すると、ディスクリード範囲は、ストライプ２０、ストライプ２５、ストライプ３０となる（ステップ１０１０）。
【００４４】
ディスク装置に対して発行されるリードコマンドを新規作成し、リードコマンドの先頭アドレスとして、ディスクリード範囲の先頭である、ストライプ２０の先頭アドレスが設定される（ステップ１００５）。
【００４５】
ディスクリード範囲は、パリティによって分断されていないため（ステップ１００６）、リードコマンドのＩＯサイズとしては、ディスクリード範囲サイズ、すなわち、ストライプ２０の先頭から、ストライプ３０の末尾までが、設定される（ステップ１００７）。
【００４６】
選択したディスク装置３０１のディスクリード範囲は全てリードコマンドの読み込み対象領域として設定されたため、ディスク装置３０１の処理済フラグをＯＮとする（ステップ１００８）。
【００４７】
引き続き、処理済フラグがＯＦＦのディスクが存在するため（ステップ１００１）、処理済フラグがＯＦＦのディスクから処理対象ディスクを選択することとなる（ステップ１００２）。
【００４８】
ここではディスク装置３０２を選択したとし、ディスク装置３０２とリード範囲の重なっている部分、ストライプ１１、ストライプ１６、ストライプ２１、ストライプ２６が、ディスクリード範囲として設定される（ステップ１００３）。
【００４９】
以下、ディスク装置３０１の場合と同様に、ディスクリード範囲がパリティによって分断されたケースであり、ストライプ１１の先頭からストライプ１１の末尾までをリード範囲とするリードコマンドと、ストライプ１６の先頭からストライプ２６の末尾までをリード範囲とするリードコマンドを作成し、ディスク装置３０２の処理済フラグをＯＮとする（ステップ１００８）。
【００５０】
引き続き、処理済フラグがＯＦＦのディスクが存在するため（ステップ１００１）、処理済フラグがＯＦＦのディスクから処理対象ディスクを選択することとなる（ステップ１００２）。
【００５１】
ここではディスク装置３０３を選択したとし、ディスク装置３０３とリード範囲の重なっている部分、ストライプ１２、ストライプ１７、ストライプ２２、ストライプ２７が、ディスクリード範囲として設定される（ステップ１００３）。
【００５２】
ディスクリード範囲は０でないため（ステップ１００４）、ディスク装置に対して発行されるリードコマンドを新規作成し、リードコマンドの先頭アドレスとして、ディスクリード範囲の先頭である、ストライプ１２の先頭アドレスが設定される（ステップ１００５）。
【００５３】
ディスクリード範囲は、パリティによって分断されていないため（ステップ１００６）、リードコマンドのＩＯサイズとしては、ディスクリード範囲サイズ、すなわち、ストライプ１２の先頭から、ストライプ２７の末尾までが、設定される（ステップ１００７）。
【００５４】
選択したディスク装置３０３のディスクリード範囲は全てリードコマンドの読み込み対象領域として設定されたため、ディスク装置３０３の処理済フラグをＯＮとする（ステップ１００８）。
【００５５】
引き続き、処理済フラグがＯＦＦのディスクが存在するため（ステップ１００１）、処理済フラグがＯＦＦのディスクから処理対象ディスクを選択する事となる（ステップ１００２）。
【００５６】
ここではディスク装置３０４を選択したとし、ディスク装置３０４とリード範囲の重なっている部分、ストライプ１３、ストライプ１８、ストライプ２３、ストライプ２８が、ディスクリード範囲として設定される（ステップ１００３）。
【００５７】
以下、ディスク装置３０１、ディスク装置３０２の場合と同様に、ディスクリード範囲がパリティによって分断されたケースであり、ストライプ１３の先頭からストライプ２３の末尾までをリード範囲とするリードコマンドと、ストライプ２８の先頭からストライプ２８の末尾までをリード範囲とするリードコマンドを作成し、ディスク装置３０４の処理済フラグをＯＮとする（ステップ１００８）。
【００５８】
引き続き、処理済フラグがＯＦＦのディスクが存在するため（ステップ１００１）、処理済フラグがＯＦＦのディスクから処理対象ディスクを選択する事となる（ステップ１００２）。
【００５９】
処理済フラグがＯＦＦのディスクは、ディスク装置３０５しかないため、ディスク装置３０５を選択し、ディスク装置３０５とリード範囲の重なっている部分、ストライプ１４、ストライプ１９、ストライプ２４、ストライプ２９が、ディスクリード範囲として設定される（ステップ１００３）。
【００６０】
以下、ディスク装置３０１、ディスク装置３０２、ディスク装置３０４の場合と同様に、ディスクリード範囲がパリティによって分断されたケースであり、ストライプ１４の先頭からストライプ１９の末尾までをリード範囲とするリードコマンドと、ストライプ２４の先頭からストライプ２９の末尾までをリード範囲とするリードコマンドを作成し、ディスク装置３０５の処理済フラグをＯＮとする（ステップ１００８）。
【００６１】
全ディスクの処理済フラグがＯＮとなったため（ステップ１００１）、ドライブＩＯ設定処理は終了となる。
【００６２】
前記例では、結果として、（ストライプ１０、ストライプ１５）（ストライプ２０、ストライプ２５、ストライプ３０）、（ストライプ１１）、（ストライプ１６、ストライプ２１、ストライプ２６）、（ストライプ１２、ストライプ１７、ストライプ２２、ストライプ２７）、（ストライプ１３、ストライプ１８、ストライプ２３）、（ストライプ２８）、（ストライプ１４、ストライプ１９）、（ストライプ２４、ストライプ２９）の９つのリードコマンドを作成した事になる。
【００６３】
データをリードする際にパリティを同時に読み込むことによる性能低下の解決について、図５を用いて説明する。
【００６４】
図５は、９Ｄ＋１Ｐ構成のＲＡＩＤ５システムにおける、ディスク装置１台におけるストライプ列の一部である。図５において、ストライプ列は管理単位であるストライプ８００を複数有し、各ストライプに関して、データを格納しているストライプ８０１〜８０９と、パリティを格納しているストライプＰ８００からなる。
【００６５】
従来技術ではリード時にストライプ８０１〜８０９、ストライプＰ８００を読み込み、実データとしてストライプ８０１〜８０９を得ていた。
【００６６】
本実施形態ではストライプ８０１〜８０９を読み込み、実データとしてストライプ８０１〜８０９を得るため、従来技術に比べ、１０％効率が向上する。
【００６７】
図５においては、ｎＤ＋１Ｐ構成のｎを９としたが、ｎが９より小さい場合は、パリティを格納しているストライプの比率が増加する。このため本実施形態の従来技術に対する向上率は、ｎが小さくなるにつれて、より増加する。
【００６８】
次に、データをリードする際に生じるオーバヘッドの削減について説明する。
【００６９】
ディスク側のインターフェースとしては、ファイバチャネルやＳＣＳＩ等が挙げられる。インターフェース経由でデータを転送する上で、コマンド発行、ステータス通知等のプロトコルオーバヘッドが発生する。さらに、ファイバチャネルにおいては、バスの使用権限を得るためのオープン、クローズ等のオーバヘッドも発生する。また、ＳＣＳＩにおいては、フェーズを遷移させるためのアービトレーションフェース、セレクションフェーズ等も発生する。
【００７０】
説明の簡略化のため、本実施形態ではＳＣＳＩを想定し、コマンド、ステータスのオーバヘッドのみを記載した、図６を用いて説明する。
【００７１】
図６において、合計時間９００は、ストライプ１〜３を別々のコマンドでリードした場合の、全ストライプのコマンドとデータとステータスの転送にかかる時間である。
【００７２】
合計時間９００は、ストライプ１のコマンドフェーズ時間９０１と、ストライプ１のデータフェーズ時間９０２と、ストライプ１のステータスフェース時間９０３と、ストライプ２のコマンドフェーズ時間９０４と、ストライプ２のデータフェーズ時間９０５と、ストライプ２のステータスフェース時間９０６と、ストライプ３のコマンドフェーズ時間９０７と、ストライプ３のデータフェーズ時間９０８と、ストライプ３のステータスフェース時間９０９からなる。
【００７３】
合計時間９５０は、ストライプ１〜３を一つのコマンドでリードした場合の、全ストライプのコマンドとデータとステータスの転送にかかる時間であり、本発明において合計時間９５０は、ストライプ１〜３のコマンドフェーズ時間９５１と、ストライプ１のデータフェーズ時間９５２と、ストライプ２のデータフェース時間９５３と、ストライプ３のデータフェーズ時間９５４と、ストライプ１〜３のステータスフェーズ時間９５５からなる。
【００７４】
合計時間９５０は、合計時間９００に対して、データフェース時間以外のオーバヘッドが１／３に削減される。
【００７５】
図３のような実施形態は、４Ｄ＋１Ｐ構成であるため、無限長サイズのデータリードを行った場合には、プロトコルオーバヘッドは１／４に削減される。
また、ストライプサイズを変更すること無く、データをリードする際に生じるオーバヘッドの削減できるので、ストライプサイズ拡張に伴い生じる、小サイズランダムアクセス時のディスク負荷集中による性能低下を避けることが出来る。
【００７６】
【発明の効果】
本発明によって、ディスクアレイシステム内のディスクへのリードコマンド発行時に、実データのみをリード対象とする事が可能となる。また、データ転送オーバヘッドを低減するコマンドの発行が可能となる。
【図面の簡単な説明】
【図１】システム構成の一例を示す図である。
【図２】プログラム保持手段の一例を示す図である。
【図３】論理アドレスと物理位置の関係のを示す図である。
【図４】ディスクＩＯ設定処理の一例を示すフロー図である。
【図５】データ／パリティセグメントの説明図である。
【図６】プロトコルオーバヘッドの説明図である。
【図７】ディスク装置ＩＯ設定処理管理テーブルの一例を示す図である。
【符号の説明】
１００…ホスト装置
２００…アレイ制御部
３００…ディスク装置群
６０２…ディスクＩＯ設定手段
【図１】
2004220129.tif 000003
【図２】
2004220129.tif 000004
【図３】
2004220129.tif 000005
【図４】
2004220129.tif 000006
【図５】
2004220129.tif 000007
【図６】
2004220129.tif 000008
【図７】
2004220129.tif 000009