JP3621666B2 - Disk control system and control method thereof - Google Patents

Disk control system and control method thereof Download PDF

Info

Publication number
JP3621666B2
JP3621666B2 JP2001278281A JP2001278281A JP3621666B2 JP 3621666 B2 JP3621666 B2 JP 3621666B2 JP 2001278281 A JP2001278281 A JP 2001278281A JP 2001278281 A JP2001278281 A JP 2001278281A JP 3621666 B2 JP3621666 B2 JP 3621666B2
Authority
JP
Japan
Prior art keywords
data
disk
stripe
block data
disk device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001278281A
Other languages
Japanese (ja)
Other versions
JP2003085895A (en
Inventor
正憲 友田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2001278281A priority Critical patent/JP3621666B2/en
Publication of JP2003085895A publication Critical patent/JP2003085895A/en
Application granted granted Critical
Publication of JP3621666B2 publication Critical patent/JP3621666B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は複数のディスク装置を制御するためのディスク制御システムおよび同システムを制御するための制御方法に関する。
【0002】
【従来の技術】
近年、サーバコンピュータにおいては、ディスク装置の性能および信頼性の向上の観点から、RAID(Redundant Array of Independent Disks)技術が広く使用され始めている。
【0003】
RAIDは、複数のディスク装置をグループ化して単一の論理ディスクを実現する技術である。RAIDを用いたディスク制御システムにおいては、データとその障害回復のための冗長データとを複数のディスク装置に分散させることにより、性能および信頼性の向上を図ることが出来る。
【0004】
RAIDのレベルには0,1,4,5,10などの種類があるが、その中でも価格対容量比の良さと優れた耐障害性から、RAID5が広く利用されている。RAID5は、複数のデータストライプとパリティストライプとを含むストライプグループを複数台のディスク装置に対して横断配置したディスクアレイから構成されている。RAID5のディスクアレイは、データ記憶用の複数のディスク装置にパリティ記憶用のディスク装置を1台付加したN+1(Nは2以上)台のディスク装置を含んでおり、且つパリティをストライプグループ単位でN+1(Nは2以上)台のディスク装置に分散させることによってパリティディスクへのアクセスの集中を防止できるようにしている。
【0005】
【発明が解決しようとする課題】
しかし、通常のRAID5ディスクアレイにおいては、論理アドレスが連続する複数のブロックデータをストライプグループ単位で複数のディスク装置に順番に配置しているため、個々のディスク装置で見た場合には、ストライプグループ間におけるブロックデータの論理アドレスは不連続となる。このため、ストライプグループの境界にまたがるようなデータのリードがホストから要求された場合には、その要求されたデーサイズによらず、必ず2以上のリード要求がディスクアレイに発行されることになる。これは、RAID5ディスクアレイのデータ読み出し性能を低下させる要因となる。よって、十分な読み出し性能を実現するためには、複数のディスク装置に対する並列アクセス性のみならず、個々のディスク装置で見た場合における論理アドレスの連続性についても考慮する必要性がある。
【0006】
本発明はこのような事情を考慮してなされたもので、ストライプグループ間のデータ配置の関係を最適化することにより、ディスク装置に対するアクセス回数を十分に低減することが可能なディスク制御システムおよびその制御方法を提供することを目的とする。
【0007】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、論理アドレスが連続する複数のブロックデータとそれらブロックデータの障害回復のための冗長データとを含むストライプグループを単位として、ディスクアレイを構成する複数のディスク装置にデータを分散して格納するディスク制御システムにおいて、前記複数のディスク装置に対して互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、前記複数のストライプグループそれぞれのデータ配置を決定する手段と、ホストからのディスクアクセス要求と、前記決定されたデータ配置とに基づいて、前記複数のディスク装置に対するアクセスを制御する制御手段であって、前記ホストからのアクセス要求によって隣接する2つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを1度のディスクアクセスで読み出すためのリード要求を発行する制御手段とを具備することを特徴とする。
【0008】
このディスク制御システムにおいては、隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、複数のストライプグループそれぞれのデータ配置が決定されるので、隣接するストライプグループの境界を挟む論理的に連続する2つのブロックデータは同一のディスク装置内に物理的に連続して格納されることになる。したがって、並列アクセス性能を維持しつつ、個々のディスク装置で見た場合におけるストライプグループ間における論理アドレスの連続性を保証することできるので、ホストからのアクセス要求によって隣接する2つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを1度のディスクアクセスで読み出すためのリード要求を発行することにより、データリードのためのディスク装置に対するアクセス回数を十分に低減することが可能となり、読み出し性能の向上を図ることができる。
【0009】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図1には、本発明の一実施形態に係るディスク制御システムの構成が示されている。このディスク制御システムは例えばサーバコンピュータなどのコンピュータシステムに搭載されて使用されるものであり、図示のように、RAIDコントローラ12とディスクアレイ13とから構成されている。RAIDコントローラ12はホスト11からのディスクアクセス要求に応じて、ディスクアレイ13を構成する複数のディスク装置(DISK#1〜DISK#3)を制御する。ホスト11は、コンピュータシステムのCPU、およびこのCPUによって実行されるオペレーティングシステム、アプリケーションなどのプログラム、等から構成されている。
【0010】
RAIDコントローラ12は複数のディスク装置(DISK#1〜DISK#3)をグループ化して、それら複数のディスク装置(DISK#1〜DISK#3)によって単一の論理ディスクを実現する。すなわち、RAIDコントローラ12の機能により、ホスト11からは複数のディスク装置(DISK#1〜DISK#3)は大容量の単一の論理ディスクとして見える。ここでは、複数のディスク装置(DISK#1〜DISK#3)のグルーピングを、RAID5レベルに基づいて行う場合を想定することにする。
【0011】
RAID5のディスクアレイ13は、データ記憶用のN(Nは2以上)台のディスク装置に障害回復のための冗長データ(パリティ)を記憶するための1台の冗長ディスク装置を付加したN+1台のディスク装置で構成される。図においてはN=2の場合、つまり3台のディスク装置DISK#1〜DISK#3によってRAID5のディスクアレイ13が構成されている場合が例示されている。ディスク装置(DISK#1〜DISK#3)の各々は、IDEまたはSCSI等のインタフェースを持つ磁気ディスクドライブ装置(ハードディスクドライブHDD)から構成されている。
【0012】
RAIDコントローラ12は、パリティ付きのストライピングによってディスク装置DISK#1〜DISK#3をグループ化し、ディスク装置DISK#1〜DISK#3にデータおよびパリティを分散して記憶する。ストライピングは、パリティ付きの複数のストライプグループS1,S2,S3,S4,…を図示のようにディスク装置DISK#1〜DISK#3に横断配置することによって実現される。
【0013】
ストライプグループS1,S2,S3,S4,…の各々は、論理アドレスが連続する2つのブロックデータを互いに異なる2台のディスク装置に格納するための2つのデータストライプとそれらデータストライプの障害回復のための冗長データ(パリティ)を残りの1台のディスク装置に格納するための冗長ストライプとから構成される。ディスク装置DISK#1〜DISK#3の各々に割り当てられるデータまたはパリティの単位がストライプであり、データ格納用の2つのデータストライプとそれに対応するパリティ格納用の1つの冗長ストライプ(パリティストライプ)とからなるストライプの集合がストライプグループである。
【0014】
複数のストライプグループS1,S2,S3,S4,…それぞれのデータ配置はRAIDコントローラ12によって決定・管理される。これにより、論理アドレスが連続するデータを、ストライプグループS1,S2,S3,S4,…の単位で3台のディスク装置DISK#1〜DISK#3に分散して格納することが出来ると共に、パリティストライプが割り当てられるディスク装置を、ストライプグループ単位で3台のディスク装置DISK#1〜DISK#3間で順に移動させることができる。
【0015】
このことから、RAID5のディスクアレイ13においては、パリティストライプが割り当てられるディスク装置が変更される単位を、ストライプグループと定義することが出来る。
【0016】
RAIDコントローラ12には、図示のように、制御部121、データ配置管理部122、およびデータバッファ123が設けられている。制御部121は、データ配置管理部122によって決定されたストライプグループS1,S2,S3,S4,…それぞれのデータ配置に従って、ディスクアレイ13に対するホスト11からのアクセス要求を処理する。ホスト11からは、ディスクアレイ13は一つの論理ディスクドライブとして見える。制御部121は、ホスト11からのアクセス要求で指定された論理アドレスが、ディスクアレイ13内のどのディスク装置のどの物理アドレスに対応するかを決定し、該当するディスク装置それぞれに物理的なアクセス要求(データリード要求/データライト要求)を発行する。ホスト11からのアクセス要求がライトの場合には、新たなパリティを再計算するために、既に書き込まれているデータおよびパリティの読み出しも行われる。データバッファ123はホスト11からの書き込みデータを一時的に保持したり、個々のディスク装置DISK#1〜DISK#3から読み出されたデータを一時的に保持するため等に使用される。
【0017】
さらに、制御部121には、1)あるディスク装置が故障した場合、パリティを用いて故障したディスク装置上のデータを復元する機能、2)故障したディスク装置が新たなディスク装置に交換された場合に、残りの他のディスク装置それそれのデータ、パリティを用いて、新たなディスク装置に記憶すべき内容を復元する機能、なども設けられている。
【0018】
データ配置管理部122は、複数のストライプグループS1,S2,S3,S4,…それぞれのデータ配置を決定および管理する。これにより、3台のディスク装置DISK#1〜DISK#3にどのようにブロックデータおよびパリティが配置されるかが管理される。具体的には、このデータ配置管理部122は、
1)論理アドレスの値から該当するブロックデータの物理的な格納位置(物理ディスク番号#1〜#3、および当該物理ディスク番号で指定されるディスク装置上の物理アドレス)を算出するための演算式、または
2)論理アドレスと物理的な格納位置(物理ディスク番号#1〜#3、および当該物理ディスク番号で指定されるディスク装置上の物理アドレス)との対応関係を示すマッピングテーブル、
等によって実現される。
【0019】
本実施形態で用いられる、1)の演算式(RAIDブロック計算式)の一例について説明する。簡単のために、ブロックデータの単位をセクタとすると、セクタ番号(SectorNum)とHDD構成台数(HDDNum)から、次のようにして、アクセス対象のセクタ番号(SectorNum)に対応する行番号(RowNum)と列番号(ColumnNum)を計算する。ここで、行番号(RowNum)は上から何番目のストライプグループであるかを示し、列番号(ColumnNum)は左から何台目のディスク装置であるかを示す。また、各ストライプグループ(行)毎に、そのストライプグループ内でセクタ番号が最小のブロックデータを割り当てられるディスク装置(列番号)を、スタート列番号(StartColumnNum)と定義する。
【0020】
(1)ディスクが奇数台で構成される場合
・RowNum = ( SectorNum − 1)/( HDDNum − 1) + 1
・StartColumnNum= ( HDDNum − ( RowNum % (HDDNum − 1))) % HDDNum + 1
・ColumnNum= ( StartColumnNum + SectorNum + 1 ) % ( HDDNum + 1 )
ここで、% は剰余(mod)を示す。各行におけるパリティの列番号は、当該行の中で最大セクタ番号に対応する列番号の次の列番号である(最大セクタ番号に対応する列番号がHDD構成台数と等しい場合には、パリティの列番号は1となる)。
【0021】
(2)ディスクが偶数台で構成される場合
・RowNum = ( SectorNum − 1)/( HDDNum − 1) + 1
・StartColumnNum= ( HDDNum − ( RowNum % (HDDNum − 1))) % (HDDNum − 2) + 1
・ColumnNum=(StartColumnNum + SectorNum + 1 + (RowNum / Constant)) % (HDDNum +1)
Constant :適当な定数を利用する。
【0022】
偶数台の場合、上記計算式では、偶数番号のカラムにのみ、パリティが置かれてしまう。したがって、RowNum等の適切な数値を使って、パリティが置かれるカラムを偶数番号としないようにするために、ColumnNumに数値を足し込む。
【0023】
すなわち、本実施形態においては、基本的には、各ストライプグループ内の2つのデータストライプそれぞれに連続する論理アドレスが割り当てられるように、ストライプグループS1,S2,S3,S4,…それぞれに順番に論理アドレスを割り当てる。この場合、隣接するストライプグループ同士の間、つまりストライプグループS1とS2の間、S2とS3の間、S3とS4の間、…、で、論理アドレスが連続するブロックデータ(データストライプ)が同一のディスク装置内に物理的に連続して格納されるようなデータ配置が利用される。このデータ配置の一例を図1に示す。
【0024】
図1において、D1〜D8はそれぞれブロックデータを示しており、またそれらD1〜D8の添え字1〜8の順番は論理アドレスの順番(上記式のセクタ番号)に対応している。またP1〜P4はそれぞれ対応するストライプグループS1〜S4内のブロックデータから生成されたパリティである。
【0025】
すなわち、先頭のストライプグループS1においては、論理アドレスが連続するブロックデータD1,D2に対応するデータストライプがそれぞれディスク装置DISK#1,#2に割り当てられ、またブロックデータD1,D2から生成されるパリティP1を格納するためのパリティストライプがディスク装置DISK#3に割り当てられている。2番目のストライプグループS2においては、ストライプグループS1のブロックデータD1,D2に後続する2つのブロックデータD3,D4が格納されることになるが、この場合、先行するストライプグループS1内で最も論理アドレスの大きいブロックデータD2に後続する次のブロックデータD3は、ブロックデータD2が格納されるディスク装置(ここではディスク装置DISK#2)と同一のディスク装置に物理的に連続して格納される。つまり、2番目のストライプグループS2においては、ブロックデータD3,D4に対応するデータストライプがそれぞれディスク装置DISK#2,#3に割り当てられ、またブロックデータD3,D4から生成されるパリティP2を格納するためのパリティストライプがディスク装置DISK#1に割り当てられている。ここで、ブロックデータD4に対応するデータストライプをディスク装置DISK#3に割り当てているのは、ストライプグループS1とS2の間でパリティストライプが格納されるディスク装置を異ならせるためである。
【0026】
3番目のストライプグループS3においては、ストライプグループS2のブロックデータD3,D4に後続する2つのブロックデータD5,D6が格納されることになる。この場合も、先行するストライプグループS2内で最も論理アドレスの大きいブロックデータD4に後続する次のブロックデータD5は、ブロックデータD4が格納されるディスク装置(ここではディスク装置DISK#3)と同一のディスク装置に物理的に連続して格納される。つまり、3番目のストライプグループS3においては、ブロックデータD5,D6に対応するデータストライプがそれぞれディスク装置DISK#3,#1に割り当てられ、またブロックデータD5,D6から生成されるパリティP3を格納するためのパリティストライプがディスク装置DISK#2に割り当てられている。これにより、ストライプグループS2とS3との間においても、上述のS1とS2との間の関係と同様に、先行するストライプグループ内で最も論理アドレスが大きいブロックデータと後続するストライプグループ内で最も論理アドレスが小さいブロックデータとが同一のディスク装置に格納され、且つパリティストライプを格納するディスク装置が互いに異なる関係となる。
【0027】
さらに、4番目のストライプグループS4においても、先行するストライプグループS3内で最も論理アドレスの大きいブロックデータD6に後続する次のブロックデータD7のデータストライプが、ブロックデータD6が格納されるディスク装置(ここではディスク装置DISK#1)と同一のディスク装置に物理的に連続して配置されると共に、ブロックデータD8に対応するデータストライプがディスク装置DISK#2に配置され、またブロックデータD7,D8から生成されるパリティP4を格納するためのパリティストライプがディスク装置DISK#3に配置される。
【0028】
このようなデータ配置を採用することにより、隣接するストライプグループをまたがる部分、例えば、ブロックデータD2とD3、ブロックデータD4とD5、ブロックデータD6とD7については、どれも同一のディスク装置に格納されることになり、論理的に連続するデータが物理的にも一つの物理ディスクに連続して格納される。よって、隣接するストライプグループの境界にまたがる範囲のデータがホスト11からリード要求された場合でも、そのリード要求されたデータは同一のディスク装置に格納されているので、そのディスク装置に対する一回のリード要求の発行のみで当該データを読み出すことが可能となる。この様子を図2に示す。
【0029】
図2は、ホスト11からのリード要求でブロックデータD1〜D5の読み出しが要求された場合に対応するディスクアクセス処理の様子を示している。ブロックデータD1〜D5の内、ストライプグループS1とS2の境界にまたがる論理的に連続したブロックデータD2,D3はディスク装置DISK#2に物理的に連続して格納されており、またストライプグループS2とS3の境界にまたがる論理的に連続したブロックデータD4,D5はディスク装置DISK#3に物理的に連続して格納されているので、ブロックデータD2,D3についてはディスク装置DISK#2に対する一回のリード要求の発行のみで読み出すことが出来、同様に、ブロックデータD4,D5についてもディスク装置DISK#3に対する一回のリード要求の発行のみで読み出すことが出来る。
【0030】
すなわち、本実施形態では、ホスト11からブロックデータD1〜D5の読み出しが要求された場合には、以下の3つのリード要求が生成され、それらリード要求それぞれに対応するディスクアクセスが実行されることになる。
【0031】
・リード要求#1: ディスク装置DISK#1からその先頭のデータストライプに格納されているブロックデータD1を読み出すためのリード要求(物理ディスク番号=#1、先頭アドレス=先頭データストライプ、データサイズ=1ブロック)
・リード要求#2: ディスク装置DISK#2からその先頭および2番目のデータストライプにそれぞれ格納されているブロックデータD2,D3を読み出すためのリード要求(物理ディスク番号=#2、先頭アドレス=先頭データストライプ、データサイズ=2ブロック)
・リード要求#3: ディスク装置DISK#3からその2番目および3番目のデータストライプにそれぞれ格納されているブロックデータD4,D5を読み出すためのリード要求(物理ディスク番号=#3、先頭アドレス=2番目のデータストライプ、データサイズ=2ブロック)
これらリード要求#1〜#3はディスク装置DISK#1〜#3に並行して発行されるので、ディスク装置DISK#1からブロックデータD1を読み出すためのディスクアクセスと、ディスク装置DISK#2からブロックデータD2,D3を読み出すためのディスクアクセスと、ディスク装置DISK#3からブロックデータD4,D5を読み出すためのディスクアクセスとが、並列的に実行される。この場合、ディスク装置DISK#2から読み出されるデータの並びは論理アドレス順(D2,D3)であり、またディスク装置DISK#3から読み出されるデータの並びも論理アドレス順(D4,D5)であるので、ディスク装置DISK#1〜#3から読み出されたデータをリード要求#1〜#3の順でデータバッファ123上に蓄積するだけで、ホスト11にリードデータとしてまとめて返送すべきデータ列、つまりブロックデータD1〜D5を得ることができる。
【0032】
図3には、本実施形態で用いられるストライプグループS1,S2,S3,S4,…それぞれのデータ配置のさらに具体的な例が示されている。
【0033】
図示のように、ストライプグループS1,S2,S3,S4,…において、各データブロックは複数のサブブロックデータから構成されている。ここでは、簡単のために、1つのブロックデータが4つのサブブロックデータから構成されている例が示されている。1サブブロックデータのサイズは、例えば、セクタサイズやクラスタサイズ等に対応する。ホスト11は、サブブロックデータ単位でその論理アドレスを指定することが出来る。
【0034】
図3において、d1〜d32はそれぞれサブブロックデータを示しており、またそれらd1〜d32の添え字1〜32の順番は論理アドレスの順番に対応している。例えば、ブロックデータD1はサブブロックデータd1〜d4から構成されており、それらサブブロックデータd1〜d4はディスク装置DISK#1の先頭データストライプに物理的に連続して格納されている。ブロックデータD2はサブブロックデータd5〜d8から構成されており、それらサブブロックデータd5〜d8はディスク装置DISK#2の先頭データストライプに物理的に連続して格納されている。この場合、ディスク装置DISK#3の先頭のパリティストライプには、サブブロックデータd1,d5から生成されたパリティp1と、サブブロックデータd2,d6から生成されたパリティp2と、サブブロックデータd3,d7から生成されたパリティp3と、サブブロックデータd4,d8から生成されたパリティp4が、図示のように格納される。
【0035】
ストライプグループS2内のブロックデータD3はサブブロックデータd9〜d12から構成されており、それらサブブロックデータd9〜d12は、ディスク装置DISK#2の2番目のデータストライプに物理的に連続して格納されている。これにより、論理アドレスが連続するサブブロックデータd5〜d12が同一のディスク装置DISK#2に物理的に連続して格納されることになる。
【0036】
同様にして、ストライプグループS2内のブロックデータD4を構成するサブブロックデータd13〜d16と、ストライプグループS3内のブロックデータD5を構成するサブブロックデータd17〜d20は同一のディスク装置DISK#3に物理的に連続して格納され、またストライプグループS3内のブロックデータD6を構成するサブブロックデータd21〜d24と、ストライプグループS4内のブロックデータD7を構成するサブブロックデータd25〜d28は同一のディスク装置DISK#1に物理的に連続して格納される。
【0037】
よって、隣接するストライプグループの境界にまたがる範囲のデータ、例えばサブブロックデータd5〜d12の範囲内のデータ、サブブロックデータd13〜d20の範囲内のデータ、およびサブブロックデータd21〜d28の範囲内のデータについては、どれも該当するディスク装置に対する一回のリード要求の発行のみで当該データを読み出すことが可能となる。この様子を図4に示す。
【0038】
図4は、ホスト11からのリード要求でサブブロックデータd2〜d18の読み出しが要求された場合のリードアクセス処理の様子を示している。
【0039】
サブブロックデータd2〜d18の内、ストライプグループS1とS2の境界にまたがるデータ列であるサブブロックデータd5〜d12はディスク装置DISK#2に物理的に連続して格納されており、またストライプグループS2とS3の境界にまたがるデータ列であるサブブロックデータd13〜d18はディスク装置DISK#3に物理的に連続して格納されているので、サブブロックデータd5〜d12についてはディスク装置#2に対する一回のリード要求の発行のみで読み出すことが出来、同様に、サブブロックデータd13〜d18についてもディスク装置DISK#3に対する一回のリード要求の発行のみで読み出すことが出来る。すなわち、本実施形態では、ホスト11からd2〜d18の読み出しが要求された場合には、以下の3つのリード要求が生成され、それらリード要求それぞれに対応するディスクアクセスが実行されることになる。
【0040】
・リード要求#1: ディスク装置DISK#1からその先頭のデータストライプ内の2番目乃至4番目に格納されているサブブロックデータd2〜d4を読み出すためのリード要求(物理ディスク番号=#1、先頭アドレス=先頭データストライプ内の2番目のサブブロック、データサイズ=3サブブロック)
・リード要求#2: ディスク装置DISK#2からその先頭および2番目のデータストライプにそれぞれ格納されているサブデータブロックd5〜d8,d9〜d12を読み出すためのリード要求(物理ディスク番号=#2、先頭アドレス=先頭データストライプ内の先頭サブブロック、データサイズ=8サブブロック)
・リード要求#3: ディスク装置DISK#3からその2番目および3番目のデータストライプにそれぞれ格納されているサブデータブロックd13〜d16,d17〜d18を読み出すためのリード要求(物理ディスク番号=#3、先頭アドレス=2番目のデータストライプ、データサイズ=6サブブロック)
次に、図5のフローチャートを参照して、RAIDコントローラ12の制御部121によって実行されるディスクアクセス処理の手順について説明する。
【0041】
制御部121は、まず、ディスクアレイ13に対するホスト11からのリード要求を受信する(ステップS101)。このリード要求には先頭論理アドレスとデータサイズが含まれており、これによって読み出し対象の範囲が指定される。制御部121は、データ配置管理部122によって管理されているストライプグループS1,S2,S3,S4,…それぞれのデータ配置に基づき、ホスト11からのリード要求で指定された読み出し対象範囲をストライプグループ毎に分割し、そして各ストライプ毎に、該当する物理ディスク(ディスク装置)に対するリード要求を生成する(ステップS102)。このリード要求の生成処理では、各ストライプグループ毎に、読み出し対象範囲のデータが格納されている物理ディスク(ディスク装置)とその物理的な格納場所が検出される。
【0042】
例えば、前述の図2の例を想定すると、読み出し対象範囲D1〜D5の内、ストライプグループS1に属するブロックデータD1,D2についてはディスク装置DISK#1,#2の先頭データストライプにそれぞれ格納されていることが検出され、ディスク装置DISK#1の先頭データストライプからブロックデータD1を読み出すためのリード要求(A)と、ディスク装置DISK#2の先頭データストライプからブロックデータD2を読み出すためのリード要求(B)とが生成される。また、ストライプグループS2に属するブロックデータD3,D4についてはディスク装置DISK#2,#3の2番目のデータストライプにそれぞれ格納されていることが検出され、ディスク装置DISK#2の2番目のデータストライプからブロックデータD3を読み出すためのリード要求(C)と、ディスク装置DISK#3の2番目のデータストライプからブロックデータD4を読み出すためのリード要求(D)とが生成される。さらに、ストライプグループS3に属するブロックデータD5についてはディスク装置DISK#3の3番目のデータストライプに格納されていることが検出され、ディスク装置DISK#3の3番目のデータストライプからブロックデータD5を読み出すためのリード要求(E)が生成される。
【0043】
次いで、制御部121は、これら生成されたリード要求の中から、リード対象のデータそれぞれが論理的に連続しており、且つ同一の物理ディスク(ディスク装置)内に物理的に連続して格納されているデータをリード対象とするリード要求の組み合わせが存在するか否かを調べる(ステップS103)。そのようなリード要求の組み合わせが存在する場合には、制御部121は、それらリード要求同士を一つにまとめるための統合処理を行って、それらリード要求それぞれのアクセス対象のデータを一回のディスクアクセスで読み出すための新たなリード要求を生成する(ステップS104)。例えば、上述のリード要求(A〜E)を考えると、ディスク装置DISK#2からブロックデータD2を読み出すためのリード要求(B)とディスク装置DISK#2からブロックデータD3を読み出すためのリード要求(C)とが一つのリード要求にまとめられ、ディスク装置DISK#2の先頭データストライプから2ブロック分のデータ列(D2,D3)を読み出すための新たなリード要求(X)が生成される。また、ディスク装置DISK#3からブロックデータD4を読み出すためのリード要求(D)とディスク装置DISK#3からブロックデータD5を読み出すためのリード要求(E)もが一つのリード要求にまとめられ、ディスク装置DISK#3の2番目のデータストライプから2ブロック分のデータ列(D4,D5)を読み出すための新たなリード要求(Y)が生成される。
【0044】
そして、制御部121は、ステップS103,S104の処理を経て得られた最終的なリード要求それぞれを該当するディスク装置に発行して、リードアクセスを開始する(ステップS105)。上述の例では、発行されるリード要求は、リード要求(A),リード要求(X),リード要求(Y)の3つとなる。これらリード要求は、図2で説明したリード要求#1,リード要求#2,リード要求#3にそれぞれ相当する。
【0045】
この後、制御部121は、リードアクセスしたディスク装置それぞれからの応答を待ち、全てのリードアクセスが完了した後に、それらリードアクセスによって読み出されたリードデータそれぞれをまとめてデータバッファ123からホスト11に返送する(ステップS106)。データバッファ123には上述したようにリード要求順にリードデータが並んで保持されるので、並べ替えなどの処理を行うことなく、要求されたデータ列をホスト11に返送することが出来る。
【0046】
なお、本実施形態のデータ配置は、ストライプグループ単位でパリティを格納するディスク装置を移動させるというRAID5レベルのみならず、パリティを特定のディスク装置に固定的に配置するRAID4レベルのディスクアレイにも適用することが出来る。以下、RAID4レベルのディスクアレイへの適用例を本発明の第2実施形態として説明する。
【0047】
(第2実施形態)
図6には、3台のディスク装置DISK#1〜DISK#3でRAID4レベルのディスクアレイを構成した場合におけるデータ配置例が示されている。ディスク装置DISK#1,#2がデータ格納用のディスクであり、ディスク装置DISK#3がパリティ格納用のディスクである。
【0048】
すなわち、先頭のストライプグループS1においては、論理アドレスが連続するブロックデータD1,D2に対応するデータストライプがそれぞれディスク装置DISK#1,#2に割り当てられ、またブロックデータD1,D2から生成されるパリティP1を格納するためのパリティストライプがディスク装置DISK#3に割り当てられている。2番目のストライプグループS2においては、ストライプグループS1のブロックデータD1,D2に後続する2つのブロックデータD3,D4が格納されることになるが、この場合、先行するストライプグループS1内で最も論理アドレスの大きいブロックデータD2に後続する次のブロックデータD3は、ブロックデータD2が格納されるディスク装置(ここではディスク装置DISK#2)と同一のディスク装置に物理的に連続して格納される。つまり、2番目のストライプグループS2においては、ブロックデータD3,D4に対応するデータストライプがそれぞれディスク装置DISK#2,#1に割り当てられ、またブロックデータD3,D4から生成されるパリティP2を格納するためのパリティストライプが割り当てられるディスク装置は、ストライプグループS1と同じく、ディスク装置DISK#3となる。
【0049】
3番目のストライプグループS3においては、ストライプグループS2のブロックデータD3,D4に後続する2つのブロックデータD5,D6が格納されることになる。この場合も、先行するストライプグループS2内で最も論理アドレスの大きいブロックデータD4に後続する次のブロックデータD5は、ブロックデータD4が格納されるディスク装置(ここではディスク装置DISK#1)と同一のディスク装置に物理的に連続して格納される。つまり、3番目のストライプグループS3においては、ブロックデータD5,D6に対応するデータストライプがそれぞれディスク装置DISK#1,#2に割り当てられ、またブロックデータD5,D6から生成されるパリティP3を格納するためのパリティストライプはディスク装置DISK#3に割り当てられる。さらに、4番目のストライプグループS4においても、先行するストライプグループS3内で最も論理アドレスの大きいブロックデータD6に後続する次のブロックデータD7のデータストライプが、ブロックデータD6が格納されるディスク装置(ここではディスク装置DISK#2)と同一のディスク装置に物理的に連続して配置されると共に、ブロックデータD8に対応するデータストライプがディスク装置DISK#1に配置され、また、ブロックデータD7,D8から生成されるパリティP4を格納するためのパリティストライプがディスク装置DISK#3に配置される。
【0050】
このようなデータ配置を採用することにより、図2で説明したRAID5の場合と同様に、隣接するストライプグループをまたがる部分、例えば、ブロックデータD2とD3、ブロックデータD4とD5、ブロックデータD6とD7については、どれも同一のディスク装置に格納されることになり、論理的に連続するデータが物理的にも一つの物理ディスクに連続して格納される。
【0051】
図7は、ホスト11からのリード要求でブロックデータD1〜D5の読み出しが要求された場合に対応するディスクアクセス処理の様子を示している。ブロックデータD1〜D5の内、ストライプグループS1とS2の境界にまたがる論理的に連続したブロックデータD2,D3はディスク装置DISK#2に物理的に連続して格納されており、またストライプグループS2とS3の境界にまたがる論理的に連続したブロックデータD4,D5はディスク装置DISK#1に物理的に連続して格納されているので、ブロックデータD2,D3についてはディスク装置DISK#2に対する一回のリード要求の発行のみで読み出すことが出来、同様に、ブロックデータD4,D5についてもディスク装置DISK#1に対する一回のリード要求の発行のみで読み出すことが出来る。すなわち、本第2実施形態では、ホスト11からブロックデータD1〜D5の読み出しが要求された場合には、以下の3つのリード要求が生成され、それらリード要求それぞれに対応するディスクアクセスが実行されることになる。
【0052】
・リード要求#1: ディスク装置DISK#1からその先頭のデータストライプに格納されているブロックデータD1を読み出すためのリード要求(物理ディスク番号=#1、先頭アドレス=先頭データストライプ、データサイズ=1ブロック)
・リード要求#2: ディスク装置DISK#2からその先頭および2番目のデータストライプにそれぞれ格納されているブロックデータD2,D3を読み出すためのリード要求(物理ディスク番号=#2、先頭アドレス=先頭データストライプ、データサイズ=2ブロック)
・リード要求#3: ディスク装置DISK#1からその2番目および3番目のデータストライプにそれぞれ格納されているブロックデータD4,D5を読み出すためのリード要求(物理ディスク番号=#1、先頭アドレス=2番目のデータストライプ、データサイズ=2ブロック)
リード要求#1,#2はディスク装置DISK#1,#3に対して並行して発行されるが、リード要求#3の発行はリード要求#1に対応するリードアクセスの完了を待って行われる。
【0053】
図8には、図6に対応するストライプグループS1,S2,S3,S4,…それぞれのデータ配置のさらに具体的な例が示されている。
【0054】
図8において、d1〜d32はそれぞれサブブロックデータを示しており、またそれらd1〜d32の添え字1〜32の順番は論理アドレスの順番に対応している。例えば、ブロックデータD1はサブブロックデータd1〜d4から構成されており、それらサブブロックデータd1〜d4はディスク装置DISK#1の先頭データストライプに物理的に連続して格納されている。ブロックデータD2はサブブロックデータd5〜d8から構成されており、それらサブブロックデータd5〜d8はディスク装置DISK#2の先頭データストライプに物理的に連続して格納されている。この場合、ディスク装置DISK#3の先頭のパリティストライプには、サブブロックデータd1,d5から生成されたパリティp1と、サブブロックデータd2,d6から生成されたパリティp2と、サブブロックデータd3,d7から生成されたパリティp3と、サブブロックデータd4,d8から生成されたパリティp4が、図示のように格納される。
【0055】
ストライプグループS2内のブロックデータD3はサブブロックデータd9〜d12から構成されており、それらサブブロックデータd9〜d12は、ディスク装置DISK#2の2番目のデータストライプに物理的に連続して格納されている。これにより、論理アドレスが連続するサブブロックデータd5〜d12が同一のディスク装置DISK#2に物理的に連続して格納されることになる。
【0056】
同様にして、ストライプグループS2内のブロックデータD4を構成するサブブロックデータd13〜d16と、ストライプグループS3内のブロックデータD5を構成するサブブロックデータd17〜d20は同一のディスク装置DISK#1に物理的に連続して格納され、またストライプグループS3内のブロックデータD6を構成するサブブロックデータd21〜d24と、ストライプグループS4内のブロックデータD7を構成するサブブロックデータd25〜d28は同一のディスク装置DISK#2に物理的に連続して格納される。
【0057】
図9は、ホスト11からのリード要求でサブブロックデータd2〜d18の読み出しが要求された場合のリードアクセス処理の様子を示している。サブブロックデータd2〜d18の内、ストライプグループS1とS2の境界にまたがるデータ列であるサブブロックデータd5〜d12はディスク装置DISK#2に物理的に連続して格納されており、またストライプグループS2とS3の境界にまたがるデータ列であるサブブロックデータd13〜d18はディスク装置DISK#1に物理的に連続して格納されているので、サブブロックデータd5〜d12についてはディスク装置DISK#2に対する一回のリード要求の発行のみで読み出すことが出来、同様に、サブブロックデータd13〜d18についてもディスク装置DISK#1に対する一回のリード要求の発行のみで読み出すことが出来る。すなわち、本第2実施形態では、ホスト11からd2〜d18の読み出しが要求された場合には、以下の3つのリード要求が生成され、それらリード要求それぞれに対応するディスクアクセスが実行されることになる。
【0058】
・リード要求#1: ディスク装置DISK#1からその先頭のデータストライプ内の2番目乃至4番目に格納されているサブブロックデータd2〜d4を読み出すためのリード要求(物理ディスク番号=#1、先頭アドレス=先頭データストライプ内の2番目のサブブロック、データサイズ=3サブブロック)
・リード要求#2: ディスク装置DISK#2からその先頭および2番目のデータストライプにそれぞれ格納されているサブデータブロックd5〜d8,d9〜d12を読み出すためのリード要求(物理ディスク番号=#2、先頭アドレス=先頭データストライプ内の先頭サブブロック、データサイズ=8サブブロック)
・リード要求#3: ディスク装置DISK#1からその2番目および3番目のデータストライプにそれぞれ格納されているサブデータブロックd13〜d16,d17〜d18を読み出すためのリード要求(物理ディスク番号=#1、先頭アドレス=2番目のデータストライプ、データサイズ=6サブブロック)
RAIDコントローラ12の制御部121によって実行されるディスクアクセス処理の手順は、図5で説明した場合と同様である。
【0059】
なお、以上の各実施形態では、RAIDコントローラ12によって複数のディスク装置DISK#1〜DISK#3をグルーピングするという、いわゆるハードウェアRAIDを前提に説明したが、各実施形態で説明したデータ配置およびリード要求をまとめる処理は、オペレーティングシステムなどによってソフトウェア的に複数のディスク装置DISK#1〜DISK#3をグルーピングするソフトウェアRAIDに対しても、RAIDコントローラ12の制御部121およびデータ配置管理部122の機能をオペレーティングシステムなどに実装することにより適用可能である。
【0060】
また、各実施形態で説明したデータ配置はディスクアレイ13に対するI/O回数を低減できるという点で、データ読み出し時のみならず、データ書き込み時にも有効である。
【0061】
また、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0062】
【発明の効果】
以上説明したように、本発明によれば、ストライプグループ間のデータ配置の関係を最適化することにより、ディスク装置に対するアクセス回数を十分に低減することが可能となる。
【図面の簡単な説明】
【図1】本発明の第1実施形態に係るディスク制御システムを用いたコンピュータシステムの構成を示すブロック図。
【図2】同実施形態におけるディスクアレイに対するデータ配置とディスクアクセス処理の様子を示す図。
【図3】同実施形態におけるディスクアレイに対するデータ配置の具体例を示す図。
【図4】図3のデータ配置を用いた場合におけるディスクアクセス処理の様子を示す図。
【図5】同実施形態におけるディスクアクセス処理の手順を示すフローチャート。
【図6】本発明の第2実施形態おけるディスクアレイに対するデータ配置を示す図。
【図7】図7のデータ配置に対応するディスクアクセス処理の様子を示す図。
【図8】同第2実施形態おけるディスクアレイに対するデータ配置の具体例を示す図。
【図9】図8のデータ配置に対応するディスクアクセス処理の様子を示す図。
【符号の説明】
11…ホスト
12…RAIDコントローラ
13…ディスクアレイ
121…制御部
122…データ配置管理部
123…データバッファ
DISK#1〜#3…ディスク装置
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a disk control system for controlling a plurality of disk devices and a control method for controlling the system.
[0002]
[Prior art]
In recent years, RAID (Redundant Array of Independent Disks) technology has begun to be widely used in server computers from the viewpoint of improving the performance and reliability of disk devices.
[0003]
RAID is a technique for grouping a plurality of disk devices to realize a single logical disk. In a disk control system using RAID, performance and reliability can be improved by distributing data and redundant data for failure recovery to a plurality of disk devices.
[0004]
There are various RAID levels such as 0, 1, 4, 5, and 10, among which RAID 5 is widely used because of its good price-to-capacity ratio and excellent fault tolerance. RAID 5 is composed of a disk array in which a stripe group including a plurality of data stripes and a parity stripe is arranged across a plurality of disk devices. The RAID 5 disk array includes N + 1 (N is 2 or more) disk devices in which one disk device for parity storage is added to a plurality of disk devices for data storage, and the parity is N + 1 in units of stripe groups. (N is 2 or more) By distributing the data to the disk devices, concentration of access to the parity disk can be prevented.
[0005]
[Problems to be solved by the invention]
However, in a normal RAID 5 disk array, a plurality of block data having consecutive logical addresses are sequentially arranged in a plurality of disk devices in units of stripe groups. The logical addresses of the block data between them are discontinuous. For this reason, when a host requests to read data across the stripe group boundary, two or more read requests are always issued to the disk array regardless of the requested data size. . This is a factor that degrades the data read performance of the RAID5 disk array. Therefore, in order to realize sufficient read performance, it is necessary to consider not only parallel accessibility to a plurality of disk devices but also continuity of logical addresses when viewed by individual disk devices.
[0006]
The present invention has been made in consideration of such circumstances, and a disk control system capable of sufficiently reducing the number of accesses to a disk device by optimizing the data arrangement relationship between stripe groups and its An object is to provide a control method.
[0007]
[Means for Solving the Problems]
In order to solve the above-described problems, the present invention provides a plurality of disks constituting a disk array in units of stripe groups each including a plurality of block data having consecutive logical addresses and redundant data for recovering a failure of the block data. In a disk control system for distributing and storing data in a device, the largest logical address among the block data belonging to the preceding stripe group among the stripe groups allocated adjacent to the plurality of disk devices. The data arrangement of each of the plurality of stripe groups is arranged so that the block data and the block data having the smallest logical address among the block data belonging to the following stripe group are physically stored in the same disk device. The means to decide A disk access request from the bets, based on the data arrangement the determined, Control means for controlling access to the plurality of disk devices, and when an access request from the host requests a read of data in a range across two adjacent stripe groups, the read is requested Control means for issuing a read request for reading the data requested to be read in one disk access to a disk device in which data is physically stored continuously It is characterized by comprising.
[0008]
In this disk control system, among the adjacently assigned stripe groups, the block data having the highest logical address among the block data belonging to the preceding stripe group and the block data belonging to the succeeding stripe group are the most logical. Since the data arrangement of each of the plurality of stripe groups is determined so that block data with a small address is physically continuously stored in the same disk device, it is logically continuous across the boundary of adjacent stripe groups. The two block data are stored physically continuously in the same disk device. Therefore, while maintaining parallel access performance, it is possible to guarantee the continuity of logical addresses between stripe groups when viewed with individual disk devices. When reading of data in a range that extends across the boundary between two adjacent stripe groups is requested by an access request from the host, the disk device in which the data requested to be read is physically stored continuously By issuing a read request for reading the data requested to be read in one disk access, The number of accesses to the disk device for data reading can be sufficiently reduced, and the reading performance can be improved.
[0009]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described with reference to the drawings.
FIG. 1 shows the configuration of a disk control system according to an embodiment of the present invention. This disk control system is used by being mounted on a computer system such as a server computer, for example, and comprises a RAID controller 12 and a disk array 13 as shown. The RAID controller 12 controls a plurality of disk devices (DISK # 1 to DISK # 3) constituting the disk array 13 in response to a disk access request from the host 11. The host 11 includes a CPU of a computer system, an operating system executed by the CPU, a program such as an application, and the like.
[0010]
The RAID controller 12 groups a plurality of disk devices (DISK # 1 to DISK # 3) and realizes a single logical disk by the plurality of disk devices (DISK # 1 to DISK # 3). In other words, due to the function of the RAID controller 12, a plurality of disk devices (DISK # 1 to DISK # 3) appear to the host 11 as a single large capacity logical disk. Here, it is assumed that grouping of a plurality of disk devices (DISK # 1 to DISK # 3) is performed based on the RAID5 level.
[0011]
The RAID 5 disk array 13 includes N + 1 disk units in which one (1) redundant disk device for storing redundant data (parity) for failure recovery is added to N (N is 2 or more) disk devices for data storage. Consists of disk devices. In the figure, a case where N = 2, that is, a case where a RAID 5 disk array 13 is configured by three disk devices DISK # 1 to DISK # 3 is illustrated. Each of the disk devices (DISK # 1 to DISK # 3) includes a magnetic disk drive device (hard disk drive HDD) having an interface such as IDE or SCSI.
[0012]
The RAID controller 12 groups the disk devices DISK # 1 to DISK # 3 by striping with parity, and distributes and stores data and parity in the disk devices DISK # 1 to DISK # 3. Striping is realized by transversely arranging a plurality of stripe groups S1, S2, S3, S4,... With parity in the disk devices DISK # 1 to DISK # 3 as shown.
[0013]
Each of the stripe groups S1, S2, S3, S4,... For storing two block data having consecutive logical addresses in two different disk devices and for recovering the failure of these data stripes Redundant data (parity) for storing data in the remaining one disk device. The unit of data or parity assigned to each of the disk devices DISK # 1 to DISK # 3 is a stripe, and consists of two data stripes for data storage and one redundant stripe (parity stripe) for parity storage corresponding thereto. A set of stripes is a stripe group.
[0014]
The data arrangement of each of the plurality of stripe groups S1, S2, S3, S4,... Is determined and managed by the RAID controller 12. As a result, data having consecutive logical addresses can be distributed and stored in three disk devices DISK # 1 to DISK # 3 in units of stripe groups S1, S2, S3, S4,. Can be sequentially moved between the three disk devices DISK # 1 to DISK # 3 in units of stripe groups.
[0015]
Therefore, in the RAID 5 disk array 13, the unit in which the disk device to which the parity stripe is allocated is changed can be defined as a stripe group.
[0016]
As shown in the figure, the RAID controller 12 is provided with a control unit 121, a data arrangement management unit 122, and a data buffer 123. The control unit 121 processes an access request from the host 11 to the disk array 13 according to the data arrangement of each of the stripe groups S1, S2, S3, S4,... Determined by the data arrangement management unit 122. From the host 11, the disk array 13 appears as one logical disk drive. The control unit 121 determines which physical address of which disk device in the disk array 13 the logical address specified in the access request from the host 11 corresponds to, and makes a physical access request to each corresponding disk device. (Data read request / data write request) is issued. When the access request from the host 11 is a write, the already written data and parity are also read in order to recalculate a new parity. The data buffer 123 is used to temporarily hold write data from the host 11, temporarily hold data read from the individual disk devices DISK # 1 to DISK # 3, and the like.
[0017]
Further, the control unit 121 includes 1) a function of restoring data on a failed disk device using parity when a certain disk device fails, and 2) a case where the failed disk device is replaced with a new disk device. In addition, a function for restoring the contents to be stored in the new disk device using the data and parity of the remaining other disk devices is also provided.
[0018]
The data arrangement management unit 122 determines and manages the data arrangement of each of the plurality of stripe groups S1, S2, S3, S4,. This manages how block data and parity are arranged in the three disk devices DISK # 1 to DISK # 3. Specifically, the data arrangement management unit 122
1) An arithmetic expression for calculating the physical storage position (physical disk numbers # 1 to # 3 and the physical address on the disk device specified by the physical disk number) of the corresponding block data from the value of the logical address Or
2) a mapping table indicating the correspondence between logical addresses and physical storage locations (physical disk numbers # 1 to # 3 and physical addresses on the disk device specified by the physical disk numbers);
Etc.
[0019]
An example of the calculation formula (RAID block calculation formula) 1) used in this embodiment will be described. For simplicity, when the unit of block data is a sector, the row number (RowNum) corresponding to the sector number (SectorNum) to be accessed is determined from the sector number (SectorNum) and the number of HDDs (HDDNum) as follows. And column number (ColumnNum). Here, the row number (RowNum) indicates the number of the stripe group from the top, and the column number (ColumnNum) indicates the number of the disk device from the left. In addition, for each stripe group (row), a disk device (column number) to which block data having the smallest sector number in the stripe group is assigned is defined as a start column number (StartColumnNum).
[0020]
(1) When the disk is composed of an odd number
RowNum = (SectorNum-1) / (HDDNum-1) +1
StartColumnNum = (HDDNum− (RowNum% (HDDNum−1)))% HDDNum + 1
ColumnNum = (StartColumnNum + SectorNum + 1)% (HDDNum + 1)
Here,% indicates a remainder (mod). The column number of parity in each row is the column number next to the column number corresponding to the maximum sector number in the row (if the column number corresponding to the maximum sector number is equal to the number of HDD components, the parity column number is The number is 1).
[0021]
(2) When the disk is composed of an even number
RowNum = (SectorNum-1) / (HDDNum-1) +1
StartColumnNum = (HDDNum− (RowNum% (HDDNum−1)))% (HDDNum−2) +1
ColumnNum = (StartColumnNum + SectorNum + 1 + (RowNum / Constant))% (HDDNum + 1)
Constant: An appropriate constant is used.
[0022]
In the case of an even number, in the above formula, the parity is placed only in the even-numbered column. Therefore, by using an appropriate numerical value such as RowNum, a numerical value is added to ColumnNum so that the column in which parity is placed is not an even number.
[0023]
That is, in the present embodiment, basically, logical data is sequentially assigned to each of the stripe groups S1, S2, S3, S4,... So that a continuous logical address is assigned to each of the two data stripes in each stripe group. Assign an address. In this case, block data (data stripes) having consecutive logical addresses are the same between adjacent stripe groups, that is, between stripe groups S1 and S2, between S2 and S3, between S3 and S4, and so on. A data arrangement that is physically continuously stored in the disk device is used. An example of this data arrangement is shown in FIG.
[0024]
In FIG. 1, D1 to D8 indicate block data, respectively, and the order of subscripts 1 to 8 of D1 to D8 corresponds to the order of logical addresses (sector number in the above formula). P1 to P4 are parities generated from block data in the corresponding stripe groups S1 to S4.
[0025]
That is, in the first stripe group S1, data stripes corresponding to block data D1 and D2 having consecutive logical addresses are assigned to the disk devices DISK # 1 and # 2, respectively, and parity generated from the block data D1 and D2 is used. A parity stripe for storing P1 is assigned to the disk device DISK # 3. In the second stripe group S2, two block data D3 and D4 subsequent to the block data D1 and D2 of the stripe group S1 are stored. In this case, the most logical address in the preceding stripe group S1 is stored. The next block data D3 following the large block data D2 is physically and continuously stored in the same disk device as the disk device in which the block data D2 is stored (here, the disk device DISK # 2). That is, in the second stripe group S2, data stripes corresponding to the block data D3 and D4 are respectively assigned to the disk devices DISK # 2 and # 3, and the parity P2 generated from the block data D3 and D4 is stored. Therefore, a parity stripe is assigned to the disk device DISK # 1. Here, the reason why the data stripe corresponding to the block data D4 is allocated to the disk device DISK # 3 is to make the disk device storing the parity stripe different between the stripe groups S1 and S2.
[0026]
In the third stripe group S3, two block data D5 and D6 subsequent to the block data D3 and D4 of the stripe group S2 are stored. Also in this case, the next block data D5 following the block data D4 having the largest logical address in the preceding stripe group S2 is the same as the disk device (here, the disk device DISK # 3) in which the block data D4 is stored. It is physically stored in the disk device. That is, in the third stripe group S3, data stripes corresponding to the block data D5 and D6 are respectively assigned to the disk devices DISK # 3 and # 1, and the parity P3 generated from the block data D5 and D6 is stored. Therefore, a parity stripe is assigned to the disk device DISK # 2. As a result, between the stripe groups S2 and S3, similarly to the relationship between S1 and S2 described above, the block data having the largest logical address in the preceding stripe group and the most logical in the following stripe group. The block data having a small address is stored in the same disk device, and the disk devices storing the parity stripes have different relationships.
[0027]
Further, also in the fourth stripe group S4, the disk device (here, the data stripe of the next block data D7 following the block data D6 having the largest logical address in the preceding stripe group S3 is stored). The disk device DISK # 1) is physically and continuously arranged on the same disk device, and the data stripe corresponding to the block data D8 is arranged on the disk device DISK # 2 and is generated from the block data D7 and D8. Parity stripes for storing the parity P4 to be stored are arranged in the disk device DISK # 3.
[0028]
By adopting such a data arrangement, the portions across adjacent stripe groups, for example, block data D2 and D3, block data D4 and D5, and block data D6 and D7 are all stored in the same disk device. Therefore, logically continuous data is physically stored continuously on one physical disk. Therefore, even when data in a range that spans the boundary between adjacent stripe groups is requested by the host 11, the read requested data is stored in the same disk device. The data can be read only by issuing a request. This is shown in FIG.
[0029]
FIG. 2 shows a state of disk access processing corresponding to a case where reading of block data D1 to D5 is requested by a read request from the host 11. Among the block data D1 to D5, logically continuous block data D2 and D3 extending across the boundary between the stripe groups S1 and S2 are physically continuously stored in the disk device DISK # 2, and Since the logically continuous block data D4 and D5 straddling the boundary of S3 are physically continuously stored in the disk device DISK # 3, the block data D2 and D3 are stored in the disk device DISK # 2 once. It can be read out only by issuing a read request. Similarly, the block data D4 and D5 can be read out only by issuing a single read request to the disk device DISK # 3.
[0030]
That is, in this embodiment, when the host 11 requests reading of the block data D1 to D5, the following three read requests are generated, and disk access corresponding to each of the read requests is executed. Become.
[0031]
Read request # 1: Read request for reading block data D1 stored in the head data stripe from the disk device DISK # 1 (physical disk number = # 1, head address = head data stripe, data size = 1) block)
Read request # 2: Read request for reading the block data D2 and D3 respectively stored in the head and second data stripes from the disk device DISK # 2 (physical disk number = # 2, head address = head data) Stripe, data size = 2 blocks)
Read request # 3: Read request for reading block data D4 and D5 stored in the second and third data stripes from the disk device DISK # 3 (physical disk number = # 3, head address = 2) Data stripe, data size = 2 blocks)
Since these read requests # 1 to # 3 are issued in parallel to the disk devices DISK # 1 to # 3, a disk access for reading the block data D1 from the disk device DISK # 1 and a block from the disk device DISK # 2 are performed. Disk access for reading data D2 and D3 and disk access for reading block data D4 and D5 from disk device DISK # 3 are executed in parallel. In this case, the data read from the disk device DISK # 2 is in the logical address order (D2, D3), and the data read from the disk device DISK # 3 is also in the logical address order (D4, D5). A data string to be returned to the host 11 as read data by simply storing the data read from the disk devices DISK # 1 to # 3 in the data buffer 123 in the order of read requests # 1 to # 3. That is, block data D1 to D5 can be obtained.
[0032]
FIG. 3 shows a more specific example of the data arrangement of each of the stripe groups S1, S2, S3, S4,... Used in the present embodiment.
[0033]
As shown in the figure, in the stripe groups S1, S2, S3, S4,..., Each data block is composed of a plurality of sub-block data. Here, for simplicity, an example is shown in which one block data is composed of four sub-block data. The size of one sub-block data corresponds to, for example, a sector size or a cluster size. The host 11 can specify the logical address in units of sub-block data.
[0034]
In FIG. 3, d1 to d32 indicate subblock data, respectively, and the order of subscripts 1 to 32 of d1 to d32 corresponds to the order of logical addresses. For example, the block data D1 is composed of sub-block data d1 to d4, and these sub-block data d1 to d4 are physically stored in the head data stripe of the disk device DISK # 1. The block data D2 is composed of sub-block data d5 to d8, and these sub-block data d5 to d8 are physically continuously stored in the head data stripe of the disk device DISK # 2. In this case, the first parity stripe of the disk device DISK # 3 includes the parity p1 generated from the subblock data d1 and d5, the parity p2 generated from the subblock data d2 and d6, and the subblock data d3 and d7. And the parity p4 generated from the sub-block data d4 and d8 are stored as shown in the figure.
[0035]
The block data D3 in the stripe group S2 is composed of sub-block data d9 to d12, and these sub-block data d9 to d12 are physically continuously stored in the second data stripe of the disk device DISK # 2. ing. As a result, the sub-block data d5 to d12 having consecutive logical addresses are physically and continuously stored in the same disk device DISK # 2.
[0036]
Similarly, the sub-block data d13 to d16 constituting the block data D4 in the stripe group S2 and the sub-block data d17 to d20 constituting the block data D5 in the stripe group S3 are physically stored in the same disk device DISK # 3. The sub-block data d21 to d24 constituting the block data D6 in the stripe group S3 and the sub-block data d25 to d28 constituting the block data D7 in the stripe group S4 are stored in the same disk device. It is stored physically continuously in DISK # 1.
[0037]
Therefore, data in a range extending over the boundary between adjacent stripe groups, for example, data in the range of sub-block data d5 to d12, data in the range of sub-block data d13 to d20, and data in the range of sub-block data d21 to d28 All data can be read out only by issuing a single read request to the corresponding disk device. This is shown in FIG.
[0038]
FIG. 4 shows a state of read access processing when reading of the sub-block data d2 to d18 is requested by a read request from the host 11.
[0039]
Of the sub-block data d2 to d18, the sub-block data d5 to d12, which are data strings straddling the boundary between the stripe groups S1 and S2, are physically stored continuously in the disk device DISK # 2, and the stripe group S2 Since the sub-block data d13 to d18, which is a data string extending over the boundary between S3 and S3, are physically continuously stored in the disk device DISK # 3, the sub-block data d5 to d12 is once for the disk device # 2. Similarly, the sub-block data d13 to d18 can be read out only by issuing a single read request to the disk device DISK # 3. That is, in this embodiment, when the host 11 requests reading of d2 to d18, the following three read requests are generated, and disk access corresponding to each of the read requests is executed.
[0040]
Read request # 1: Read request for reading the second to fourth stored sub-block data d2 to d4 in the head data stripe from the disk device DISK # 1 (physical disk number = # 1, head Address = second subblock in the first data stripe, data size = 3 subblocks)
Read request # 2: Read request for reading the sub data blocks d5 to d8 and d9 to d12 respectively stored in the first and second data stripes from the disk device DISK # 2 (physical disk number = # 2, (Start address = start subblock in start data stripe, data size = 8 subblocks)
Read request # 3: Read request for reading the sub data blocks d13 to d16 and d17 to d18 respectively stored in the second and third data stripes from the disk device DISK # 3 (physical disk number = # 3 , Start address = second data stripe, data size = 6 sub-blocks)
Next, the procedure of disk access processing executed by the controller 121 of the RAID controller 12 will be described with reference to the flowchart of FIG.
[0041]
First, the control unit 121 receives a read request from the host 11 for the disk array 13 (step S101). This read request includes the head logical address and the data size, and this specifies the range to be read. The control unit 121 sets the read target range specified by the read request from the host 11 for each stripe group based on the data arrangement of the stripe groups S1, S2, S3, S4,. Then, a read request for the corresponding physical disk (disk device) is generated for each stripe (step S102). In this read request generation process, for each stripe group, the physical disk (disk device) storing the data in the read target range and its physical storage location are detected.
[0042]
For example, assuming the example shown in FIG. 2, the block data D1 and D2 belonging to the stripe group S1 in the read target ranges D1 to D5 are stored in the first data stripes of the disk devices DISK # 1 and # 2, respectively. Read request (A) for reading the block data D1 from the first data stripe of the disk device DISK # 1, and a read request for reading the block data D2 from the first data stripe of the disk device DISK # 2 ( B) is generated. Further, it is detected that the block data D3 and D4 belonging to the stripe group S2 are stored in the second data stripes of the disk devices DISK # 2 and # 3, respectively, and the second data stripe of the disk device DISK # 2 is detected. A read request (C) for reading the block data D3 from the disk data and a read request (D) for reading the block data D4 from the second data stripe of the disk device DISK # 3 are generated. Further, it is detected that the block data D5 belonging to the stripe group S3 is stored in the third data stripe of the disk device DISK # 3, and the block data D5 is read from the third data stripe of the disk device DISK # 3. A read request (E) is generated.
[0043]
Next, the control unit 121 logically continues each of the read target data from these generated read requests, and is physically continuously stored in the same physical disk (disk device). It is checked whether there is a combination of read requests for which the read data is to be read (step S103). When such a combination of read requests exists, the control unit 121 performs an integration process for combining the read requests into one, and stores the data to be accessed for each of the read requests in a single disk. A new read request for reading by access is generated (step S104). For example, considering the read requests (A to E) described above, a read request (B) for reading the block data D2 from the disk device DISK # 2 and a read request (for reading the block data D3 from the disk device DISK # 2) ( C) are combined into one read request, and a new read request (X) is generated for reading the data string (D2, D3) for two blocks from the head data stripe of the disk device DISK # 2. Also, the read request (D) for reading the block data D4 from the disk device DISK # 3 and the read request (E) for reading the block data D5 from the disk device DISK # 3 are combined into one read request. A new read request (Y) for reading a data string (D4, D5) for two blocks from the second data stripe of the device DISK # 3 is generated.
[0044]
Then, the control unit 121 issues each final read request obtained through the processing of steps S103 and S104 to the corresponding disk device, and starts read access (step S105). In the above example, there are three read requests issued: a read request (A), a read request (X), and a read request (Y). These read requests correspond to the read request # 1, the read request # 2, and the read request # 3 described in FIG.
[0045]
Thereafter, the control unit 121 waits for a response from each of the read-accessed disk devices, and after all the read accesses have been completed, the read data read by the read access is collected from the data buffer 123 to the host 11. Return (step S106). Since the read data is held in the data buffer 123 in the order of read request as described above, the requested data string can be returned to the host 11 without performing processing such as rearrangement.
[0046]
Note that the data arrangement of the present embodiment is applicable not only to a RAID 5 level in which a disk device storing parity is moved in units of stripe groups, but also to a RAID 4 level disk array in which the parity is fixedly arranged in a specific disk device. I can do it. An example of application to a RAID 4 level disk array will be described below as a second embodiment of the present invention.
[0047]
(Second Embodiment)
FIG. 6 shows an example of data arrangement when a RAID 4 level disk array is configured by three disk devices DISK # 1 to DISK # 3. The disk devices DISK # 1 and # 2 are data storage disks, and the disk device DISK # 3 is a parity storage disk.
[0048]
That is, in the leading stripe group S1, data stripes corresponding to block data D1, D2 having consecutive logical addresses are assigned to the disk devices DISK # 1, # 2, respectively, and parity generated from the block data D1, D2 is used. A parity stripe for storing P1 is assigned to the disk device DISK # 3. In the second stripe group S2, two block data D3 and D4 subsequent to the block data D1 and D2 of the stripe group S1 are stored. In this case, the most logical address in the preceding stripe group S1 is stored. The next block data D3 following the large block data D2 is physically continuously stored in the same disk device as the disk device in which the block data D2 is stored (here, the disk device DISK # 2). That is, in the second stripe group S2, data stripes corresponding to the block data D3 and D4 are respectively assigned to the disk devices DISK # 2 and # 1, and the parity P2 generated from the block data D3 and D4 is stored. The disk device to which the parity stripe is assigned is the disk device DISK # 3, as is the stripe group S1.
[0049]
In the third stripe group S3, two block data D5 and D6 subsequent to the block data D3 and D4 of the stripe group S2 are stored. Also in this case, the next block data D5 following the block data D4 having the largest logical address in the preceding stripe group S2 is the same as the disk device (here, the disk device DISK # 1) in which the block data D4 is stored. It is physically stored in the disk device. That is, in the third stripe group S3, the data stripes corresponding to the block data D5 and D6 are allocated to the disk devices DISK # 1 and # 2, respectively, and the parity P3 generated from the block data D5 and D6 is stored. The parity stripe for this is assigned to the disk device DISK # 3. Further, also in the fourth stripe group S4, the disk device (here, the data stripe of the next block data D7 following the block data D6 having the largest logical address in the preceding stripe group S3 is stored) The disk device DISK # 2) is physically and continuously arranged on the same disk device, and the data stripe corresponding to the block data D8 is arranged on the disk device DISK # 1, and from the block data D7 and D8, A parity stripe for storing the generated parity P4 is arranged in the disk device DISK # 3.
[0050]
By adopting such a data arrangement, as in the case of RAID 5 described with reference to FIG. 2, portions across adjacent stripe groups, for example, block data D2 and D3, block data D4 and D5, block data D6 and D7 Are stored in the same disk device, and logically continuous data is physically stored continuously on one physical disk.
[0051]
FIG. 7 shows a state of disk access processing corresponding to a case where reading of block data D1 to D5 is requested by a read request from the host 11. Among the block data D1 to D5, logically continuous block data D2 and D3 extending across the boundary between the stripe groups S1 and S2 are physically continuously stored in the disk device DISK # 2, and Since the logically continuous block data D4 and D5 straddling the boundary of S3 are physically continuously stored in the disk device DISK # 1, the block data D2 and D3 are stored once in the disk device DISK # 2. It can be read out only by issuing a read request. Similarly, the block data D4 and D5 can be read out only by issuing a single read request to the disk device DISK # 1. That is, in the second embodiment, when reading of the block data D1 to D5 is requested from the host 11, the following three read requests are generated, and disk access corresponding to each of the read requests is executed. It will be.
[0052]
Read request # 1: Read request for reading block data D1 stored in the head data stripe from the disk device DISK # 1 (physical disk number = # 1, head address = head data stripe, data size = 1) block)
Read request # 2: Read request for reading the block data D2 and D3 respectively stored in the head and second data stripes from the disk device DISK # 2 (physical disk number = # 2, head address = head data) Stripe, data size = 2 blocks)
Read request # 3: Read request for reading the block data D4 and D5 respectively stored in the second and third data stripes from the disk device DISK # 1 (physical disk number = # 1, head address = 2) Data stripe, data size = 2 blocks)
The read requests # 1 and # 2 are issued in parallel to the disk devices DISK # 1 and # 3, but the read request # 3 is issued after completion of the read access corresponding to the read request # 1. .
[0053]
FIG. 8 shows a more specific example of the data arrangement of each of the stripe groups S1, S2, S3, S4,... Corresponding to FIG.
[0054]
In FIG. 8, d1 to d32 indicate sub-block data, respectively, and the order of subscripts 1 to 32 of d1 to d32 corresponds to the order of logical addresses. For example, the block data D1 is composed of sub-block data d1 to d4, and these sub-block data d1 to d4 are physically stored in the head data stripe of the disk device DISK # 1. The block data D2 is composed of sub-block data d5 to d8, and these sub-block data d5 to d8 are physically continuously stored in the head data stripe of the disk device DISK # 2. In this case, the first parity stripe of the disk device DISK # 3 includes the parity p1 generated from the subblock data d1 and d5, the parity p2 generated from the subblock data d2 and d6, and the subblock data d3 and d7. And the parity p4 generated from the sub-block data d4 and d8 are stored as shown in the figure.
[0055]
The block data D3 in the stripe group S2 is composed of sub-block data d9 to d12, and these sub-block data d9 to d12 are physically continuously stored in the second data stripe of the disk device DISK # 2. ing. As a result, the sub-block data d5 to d12 having consecutive logical addresses are physically and continuously stored in the same disk device DISK # 2.
[0056]
Similarly, the sub-block data d13 to d16 constituting the block data D4 in the stripe group S2 and the sub-block data d17 to d20 constituting the block data D5 in the stripe group S3 are physically stored in the same disk device DISK # 1. The sub-block data d21 to d24 constituting the block data D6 in the stripe group S3 and the sub-block data d25 to d28 constituting the block data D7 in the stripe group S4 are stored in the same disk device. It is stored physically continuously in DISK # 2.
[0057]
FIG. 9 shows the state of read access processing when reading of the sub-block data d2 to d18 is requested by the read request from the host 11. Of the sub-block data d2 to d18, the sub-block data d5 to d12, which are data strings straddling the boundary between the stripe groups S1 and S2, are physically stored continuously in the disk device DISK # 2, and the stripe group S2 Since the sub-block data d13 to d18, which is a data string extending over the boundary between S3 and S3, are physically continuously stored in the disk device DISK # 1, the sub-block data d5 to d12 is stored in the disk device DISK # 2. Similarly, the sub-block data d13 to d18 can be read out only by issuing a single read request to the disk device DISK # 1. That is, in the second embodiment, when reading of d2 to d18 is requested from the host 11, the following three read requests are generated, and disk access corresponding to each of the read requests is executed. Become.
[0058]
Read request # 1: Read request for reading the second to fourth stored sub-block data d2 to d4 in the head data stripe from the disk device DISK # 1 (physical disk number = # 1, head Address = second subblock in the first data stripe, data size = 3 subblocks)
Read request # 2: Read request for reading the sub data blocks d5 to d8 and d9 to d12 respectively stored in the first and second data stripes from the disk device DISK # 2 (physical disk number = # 2, (Start address = start subblock in start data stripe, data size = 8 subblocks)
Read request # 3: Read request for reading the sub data blocks d13 to d16 and d17 to d18 respectively stored in the second and third data stripes from the disk device DISK # 1 (physical disk number = # 1) , Start address = second data stripe, data size = 6 sub-blocks)
The procedure of disk access processing executed by the controller 121 of the RAID controller 12 is the same as that described with reference to FIG.
[0059]
In each of the above embodiments, the description has been made on the premise of so-called hardware RAID in which a plurality of disk devices DISK # 1 to DISK # 3 are grouped by the RAID controller 12, but the data arrangement and read described in each embodiment. The processing for grouping the requests includes the functions of the control unit 121 and the data arrangement management unit 122 of the RAID controller 12 even for software RAID that groups a plurality of disk devices DISK # 1 to DISK # 3 in software by an operating system or the like. It can be applied by mounting on an operating system or the like.
[0060]
Further, the data arrangement described in each embodiment is effective not only at the time of data reading but also at the time of data writing in that the number of I / Os to the disk array 13 can be reduced.
[0061]
In addition, the present invention is not limited to the above-described embodiments, and various modifications can be made without departing from the scope of the invention in the implementation stage. Further, the above embodiments include inventions at various stages, and various inventions can be extracted by appropriately combining a plurality of disclosed constituent elements. For example, even if some constituent requirements are deleted from all the constituent requirements shown in the embodiment, the problem described in the column of the problem to be solved by the invention can be solved, and the effect described in the column of the effect of the invention Can be obtained as an invention.
[0062]
【The invention's effect】
As described above, according to the present invention, it is possible to sufficiently reduce the number of accesses to the disk device by optimizing the data arrangement relationship between stripe groups.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a computer system using a disk control system according to a first embodiment of the present invention.
FIG. 2 is a view showing a state of data arrangement and disk access processing for a disk array in the same embodiment;
FIG. 3 is a view showing a specific example of data arrangement with respect to the disk array in the same embodiment;
4 is a diagram showing a state of disk access processing when the data arrangement of FIG. 3 is used.
FIG. 5 is an exemplary flowchart showing the procedure of disk access processing in the embodiment;
FIG. 6 is a diagram showing data arrangement for a disk array in a second embodiment of the present invention.
7 is a view showing a state of disk access processing corresponding to the data arrangement in FIG. 7;
FIG. 8 is a view showing a specific example of data arrangement with respect to the disk array in the second embodiment.
FIG. 9 is a view showing a state of disk access processing corresponding to the data arrangement of FIG. 8;
[Explanation of symbols]
11 ... Host
12 ... RAID controller
13 ... Disk array
121 ... Control unit
122... Data arrangement management unit
123: Data buffer
DISK # 1 to # 3 ... Disk device

Claims (10)

論理アドレスが連続する複数のブロックデータとそれらブロックデータの障害回復のための冗長データとを含むストライプグループを単位として、ディスクアレイを構成する複数のディスク装置にデータを分散して格納するディスク制御システムにおいて、
前記複数のディスク装置に対して互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、前記複数のストライプグループそれぞれのデータ配置を決定する手段と、
ホストからのディスクアクセス要求と、前記決定されたデータ配置とに基づいて、前記複数のディスク装置に対するアクセスを制御する制御手段であって、前記ホストからのアクセス要求によって隣接する2つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを1度のディスクアクセスで読み出すためのリード要求を発行する制御手段とを具備することを特徴とするディスク制御システム。
A disk control system in which data is distributed and stored in a plurality of disk devices constituting a disk array in units of stripe groups each including a plurality of block data having consecutive logical addresses and redundant data for recovering the failure of the block data. In
Among the stripe groups allocated adjacent to each other for the plurality of disk devices, the block data having the highest logical address among the block data belonging to the preceding stripe group and the block data belonging to the subsequent stripe group Means for determining the data arrangement of each of the plurality of stripe groups so that block data having the smallest logical address is physically continuously stored in the same disk device;
Control means for controlling access to the plurality of disk devices based on a disk access request from the host and the determined data arrangement, and a boundary between two stripe groups adjacent to each other by the access request from the host When data reading within a range is requested, the data requested to be read is accessed once for the disk device in which the data requested to be read is physically continuously stored. And a control means for issuing a read request for reading with the disk control system.
前記データ配置を決定する手段は、
互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納され、且つ前記冗長データが格納されるディスク装置が前記ストライプグループを単位として他のディスク装置に移動されるように、前記複数のストライプグループそれぞれのデータ配置を決定することを特徴とする請求項1記載のディスク制御システム。
The means for determining the data arrangement is:
Among the stripe groups allocated adjacent to each other, the block data having the largest logical address among the block data belonging to the preceding stripe group and the block data having the smallest logical address among the block data belonging to the following stripe group Are stored in the same disk device in a continuous manner and the disk device in which the redundant data is stored is moved to another disk device in units of the stripe group. 2. The disk control system according to claim 1, wherein the data arrangement is determined.
前記各ブロックデータは論理アドレスが連続する複数のサブブロックデータから構成されており、前記各ブロックデータを構成する複数のサブブロックデータは、同一のディスク装置内に物理的に連続して格納されることを特徴とする請求項1記載のディスク制御システム。Each block data is composed of a plurality of sub-block data having consecutive logical addresses, and the plurality of sub-block data constituting each block data is physically continuously stored in the same disk device. 2. The disk control system according to claim 1, wherein: 前記制御手段は、The control means includes
前記ホストからのアクセス要求によって隣接する複数のストライプグループにまたがる範囲のデータの読み出しが要求された場合、前記読み出し要求で指定された範囲をストライプグループ毎に分割し、各ストライプグループ毎にアクセス対象となる各ディスク装置に対して発行すべきリード要求を生成する手段と、When reading of a range of data across a plurality of adjacent stripe groups is requested by an access request from the host, the range specified by the read request is divided into stripe groups, and the access target is set for each stripe group. Means for generating a read request to be issued to each disk device;
論理アドレスが連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータを検出した時、一度のディスクアクセスで当該ディスク装置から前記データを読み出すように、前記生成されたリード要求の内、アクセス対象のデータそれぞれが論理的に連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータに関するリード要求同士を単一のリード要求に統合する手段とを含むことを特徴とする請求項1記載のディスク制御システム。When the logical address is continuous and the data stored physically continuously in the same disk device is detected, the generated data is read out from the disk device with one disk access. Means for integrating read requests relating to data in which each of the access target data is logically continuous among the read requests and physically stored in the same disk device into a single read request The disk control system according to claim 1, further comprising:
ホストからのアクセス要求に応じて、ディスクアレイを制御するディスク制御システムにおいて、In a disk control system that controls a disk array in response to an access request from a host,
前記ディスクアレイを構成するN+1台(N≧2)のディスク装置と、N + 1 (N ≧ 2) disk devices constituting the disk array;
論理アドレスが連続するデータをブロック単位で異なるN台のディスク装置にそれぞれ格納するためのN個のデータストライプとそれらN個のデータストライプの内容に対応する冗長データを1台のディスク装置に格納するための冗長ストライプとからそれぞれ構成される複数のストライプグループを、前記N+1台のディスク装置に割り当てるとともに、互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータを格納するためのデータストライプと、後続するストライプグループに属するブロックデータの中N data stripes for storing data having consecutive logical addresses in N disk devices different in block units and redundant data corresponding to the contents of the N data stripes are stored in one disk device. A plurality of stripe groups each composed of redundant stripes for the above are allocated to the N + 1 disk units, and among the stripe groups allocated adjacent to each other, the block data belonging to the preceding stripe group is the most. Among data stripes for storing block data with a large logical address and block data belonging to the following stripe group で最も論理アドレスの小さいブロックデータを格納するためのデータストライプとが同一のディスク装置に物理的に連続して割り当てられ、且つ前記冗長ストライプが割り当てられるディスク装置が前記ストライプグループを単位として前記N+1台のディスク装置間で巡回されるように、前記N+1台のディスク装置に割り当てられる前記複数のストライプグループそれぞれのデータ配置を決定する手段と、The data stripes for storing the block data with the smallest logical address are physically allocated continuously to the same disk unit, and the disk units to which the redundant stripes are allocated are the N + 1 units in units of the stripe group. Means for determining a data arrangement of each of the plurality of stripe groups allocated to the N + 1 disk devices so as to be circulated between the disk devices;
前記ホストからのディスクアクセス要求と前記決定されたデータ配置とに基づいて、前記ディスクアレイをアクセス制御する制御手段であって、前記ホストからのアクセス要求によって隣接する2つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを1度のディスクアクセスで読み出すためのリード要求を発行する制御手段とを具備することを特徴とするディスク制御システム。Control means for controlling access to the disk array on the basis of a disk access request from the host and the determined data arrangement, and a range spanning the boundary between two adjacent stripe groups by the access request from the host To read the data requested to be read in one disk access to the disk device in which the data requested to be read is physically continuously stored. And a control means for issuing a read request for the disk control system.
論理アドレスが連続する複数のブロックデータとそれらブロックデータの障害回復のための冗長データとを含むストライプグループを単位として、ディスクアレイを構成する複数のディスク装置にデータを分散して格納するための制御方法であって、Control for distributing and storing data in a plurality of disk units constituting a disk array in units of stripe groups each including a plurality of block data having consecutive logical addresses and redundant data for recovering the failure of those block data A method,
前記複数のディスク装置に対して互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、前記複数のストライプグループそれぞれのデータ配置を決定するステップと、Among the stripe groups allocated adjacent to each other for the plurality of disk devices, the block data having the highest logical address among the block data belonging to the preceding stripe group and the block data belonging to the subsequent stripe group Determining the data arrangement of each of the plurality of stripe groups so that the block data with the smallest logical address is physically continuously stored in the same disk device;
ホストからのディスクアクセス要求と、前記決定されたデータ配置とに基づいて、前記複数のディスク装置に対するアクセスを制御するステップであって、前記ホストからのアクセス要求によって隣接する2つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを1度のディスクアクセスで読み出すためのリード要求を発行するステップとを具備することを特徴とする制御方法。A step of controlling access to the plurality of disk devices based on a disk access request from a host and the determined data arrangement, wherein the access request from the host causes a boundary between two stripe groups to be adjacent to each other; When reading of data in a spanning range is requested, the data requested to be read is transferred to the disk device in which the requested data is physically continuously stored by one disk access. And a step of issuing a read request for reading.
前記データ配置を決定するステップは、Determining the data placement comprises:
互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納され、且つ前記冗長データが格納されるディスク装置が前記ストライプグループを単位として他のディスク装置に移動されるように、前記複数のストライプグループそれぞれのデータ配置を決定することを特徴とする請求項6記載の制御方法。Among the stripe groups allocated adjacent to each other, the block data having the largest logical address among the block data belonging to the preceding stripe group and the block data having the smallest logical address among the block data belonging to the following stripe group Are stored in the same disk device in a continuous manner and the disk device in which the redundant data is stored is moved to another disk device in units of the stripe group. The control method according to claim 6, wherein the data arrangement is determined.
前記各ブロックデータは論理アドレスが連続する複数のサブブロックデータから構成されており、前記各ブロックデータを構成する複数のサブブロックデータは、同一のディスク装置内に物理的に連続して格納されることを特徴とする請求項6記載の制御方法。Each block data is composed of a plurality of sub-block data having consecutive logical addresses, and the plurality of sub-block data constituting each block data is physically continuously stored in the same disk device. The control method according to claim 6. 前記アクセスを制御するステップは、Controlling the access comprises:
前記ホストからのアクセス要求によって隣接する複数のストライプグループにまたがる範囲のデータの読み出しが要求された場合、前記読み出し要求で指定された範囲をストライプグループ毎に分割し、各ストライプグループ毎にアクセス対象となる各ディスク装置に対して発行すべきリード要求を生成するステップと、When reading of a range of data across a plurality of adjacent stripe groups is requested by an access request from the host, the range specified by the read request is divided for each stripe group, and the access target is set for each stripe group. Generating a read request to be issued to each disk device;
論理アドレスが連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータを検出した時、一度のディスクアクセスで当該ディスク装置から前記データを読み出すように、前記生成されたリード要求の内、アクセス対象のデータそれぞれが論理的に連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータにWhen the logical address is continuous and the data stored physically continuously in the same disk device is detected, the generated data is read out from the disk device with one disk access. In the read request, each data to be accessed is logically continuous and is physically stored in the same disk device. 関するリード要求同士を単一のリード要求に統合するステップを含むことを特徴とする請求項6記載の制御方法。7. The control method according to claim 6, further comprising the step of integrating related read requests into a single read request.
ホストからのアクセス要求に応じて、N+1台(N≧2)のディスク装置から構成されるディスクアレイを制御する制御方法であって、A control method for controlling a disk array including N + 1 (N ≧ 2) disk devices in response to an access request from a host,
論理アドレスが連続するデータをブロック単位で異なるN台のディスク装置にそれぞれ格納するためのN個のデータストライプとそれらN個のデータストライプの内容に対応する冗長データを1台のディスク装置に格納するための冗長ストライプとからそれぞれ構成される複数のストライプグループを、前記N+1台のディスク装置に割り当てるとともに、互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータを格納するためのデータストライプと、後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータを格納するためのデータストライプとが同一のディスク装置に物理的に連続して割り当てられ、且つ前記冗長ストライプが割り当てられるディスク装置が前記ストライプグループを単位として前記N+1台のディスク装置間で巡回されるように、前記N+1台のディスク装置に割り当てられる前記複数のストライプグループそれぞれのデータ配置を決定するステップと、N data stripes for storing data having consecutive logical addresses in N disk devices different in block units and redundant data corresponding to the contents of the N data stripes are stored in one disk device. A plurality of stripe groups each composed of redundant stripes for the above are allocated to the N + 1 disk units, and among the stripe groups allocated adjacent to each other, the block data belonging to the preceding stripe group is the most. A data stripe for storing block data having a large logical address and a data stripe for storing block data having the smallest logical address among the block data belonging to the following stripe group are physically stored in the same disk device. Continuous Each of the plurality of stripe groups assigned to the N + 1 disk devices is circulated between the N + 1 disk devices in units of the stripe group. Determining data placement;
前記ホストからのディスクアクセス要求と前記決定されたデータ配置とに基づいて、前記ディスクアレイをアクセス制御するステップであって、前記ホストからのアクセス要求によって隣接する2つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置に対して、前記読み出しが要求されたデータを1度のディスクアクセスで読み出すためのリード要求を発行するステップとを具備することを特徴とする制御方法。A step of controlling access to the disk array based on a disk access request from the host and the determined data arrangement, wherein a range across a boundary between two adjacent stripe groups by the access request from the host; When a data read is requested, the data requested to be read is read in one disk access to the disk device in which the data requested to be read is physically continuously stored. And a step of issuing a read request.
JP2001278281A 2001-09-13 2001-09-13 Disk control system and control method thereof Expired - Fee Related JP3621666B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001278281A JP3621666B2 (en) 2001-09-13 2001-09-13 Disk control system and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001278281A JP3621666B2 (en) 2001-09-13 2001-09-13 Disk control system and control method thereof

Publications (2)

Publication Number Publication Date
JP2003085895A JP2003085895A (en) 2003-03-20
JP3621666B2 true JP3621666B2 (en) 2005-02-16

Family

ID=19102673

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001278281A Expired - Fee Related JP3621666B2 (en) 2001-09-13 2001-09-13 Disk control system and control method thereof

Country Status (1)

Country Link
JP (1) JP3621666B2 (en)

Also Published As

Publication number Publication date
JP2003085895A (en) 2003-03-20

Similar Documents

Publication Publication Date Title
US7506187B2 (en) Methods, apparatus and controllers for a raid storage system
US8839028B1 (en) Managing data availability in storage systems
US6052759A (en) Method for organizing storage devices of unequal storage capacity and distributing data using different raid formats depending on size of rectangles containing sets of the storage devices
US7281089B2 (en) System and method for reorganizing data in a raid storage system
US7386758B2 (en) Method and apparatus for reconstructing data in object-based storage arrays
JP5971354B2 (en) Storage system
US5166939A (en) Data storage apparatus and method
JP4234233B2 (en) Information storage device and recording medium storing program
JP5256149B2 (en) Fast data recovery from HDD failure
US6647460B2 (en) Storage device with I/O counter for partial data reallocation
JPH07141121A (en) Array type storage device system
US10564865B2 (en) Lockless parity management in a distributed data storage system
JPH04230512A (en) Method and apparatus for updating record for dasd array
JPH05143471A (en) Online reconstituting method for failed memory device in redundant array of memory device
CN102164165B (en) Management method and device for network storage system
WO2017175285A1 (en) Computing machine system, control method for physical storage device, and recording medium
US11327668B1 (en) Predictable member assignment for expanding flexible raid system
JP2005309818A (en) Storage device, data reading method, and data reading program
JPH0863298A (en) Disk array device
JPH09288547A (en) Array-type storage device
US20080104445A1 (en) Raid array
JP3621666B2 (en) Disk control system and control method thereof
JP2003271425A (en) Storage control device
JPH0744331A (en) Disk array device and its control method
JPH07200190A (en) Disk array device

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040810

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041012

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20041116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041118

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071126

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081126

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081126

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091126

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101126

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101126

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111126

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111126

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121126

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees