JP3621666B2 - Disk control system and control method thereof - Google Patents
Disk control system and control method thereof Download PDFInfo
- 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
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
[0005]
[Problems to be solved by the invention]
However, in a
[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
[0010]
The
[0011]
The
[0012]
The
[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
[0014]
The data arrangement of each of the plurality of stripe groups S1, S2, S3, S4,... Is determined and managed by the
[0015]
Therefore, in the
[0016]
As shown in the figure, the
[0017]
Further, the
[0018]
The data
1) An arithmetic expression for calculating the physical storage position (physical
2) a mapping table indicating the correspondence between logical addresses and physical storage locations (physical
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)))
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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[0041]
First, the
[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
[0043]
Next, the
[0044]
Then, the
[0045]
Thereafter, the
[0046]
Note that the data arrangement of the present embodiment is applicable not only to a
[0047]
(Second Embodiment)
FIG. 6 shows an example of data arrangement when a
[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
[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
[0050]
By adopting such a data arrangement, as in the case of
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
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.
前記ホストからのアクセス要求によって隣接する複数のストライプグループにまたがる範囲のデータの読み出しが要求された場合、前記読み出し要求で指定された範囲をストライプグループ毎に分割し、各ストライプグループ毎にアクセス対象となる各ディスク装置に対して発行すべきリード要求を生成する手段と、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:
前記ディスクアレイを構成する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.
前記複数のディスク装置に対して互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、前記複数のストライプグループそれぞれのデータ配置を決定するステップと、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.
互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納され、且つ前記冗長データが格納されるディスク装置が前記ストライプグループを単位として他のディスク装置に移動されるように、前記複数のストライプグループそれぞれのデータ配置を決定することを特徴とする請求項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.
前記ホストからのアクセス要求によって隣接する複数のストライプグループにまたがる範囲のデータの読み出しが要求された場合、前記読み出し要求で指定された範囲をストライプグループ毎に分割し、各ストライプグループ毎にアクセス対象となる各ディスク装置に対して発行すべきリード要求を生成するステップと、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台のディスク装置にそれぞれ格納するための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.
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) |
-
2001
- 2001-09-13 JP JP2001278281A patent/JP3621666B2/en not_active Expired - Fee Related
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 |