| 【発明の名称】 |
ディスク制御システムおよびその制御方法 |
| 【発明者】 |
【氏名】友田 正憲 【住所又は居所】東京都青梅市末広町2丁目9番地 株式会社東芝青梅工場内
|
| 【要約】 |
【課題】ディスクアレイに対するI/O回数の低減を図り、アクセス性能の向上を図る。
【解決手段】ディスクアレイ13を構成するディスク装置DISK#1〜#3には、データを分散して格納するために複数のストライプグループS1〜S4が割り当てられる。この場合、ストライプグループS1〜S4それぞれのデータ配置は、隣接するストライプグループをまたがる部分、例えば、ストライプグループS1のブロックデータD2とストライプグループS2のブロックデータD3、ストライプグループS2のブロックデータD4とストライプグループS3のブロックデータD5、ストライプグループS3のブロックデータD6とストライプグループS4のブロックデータD7については、どれも同一のディスク装置に格納されるように決定される。 |
【特許請求の範囲】
【請求項1】 論理アドレスが連続する複数のブロックデータとそれらブロックデータの障害回復のための冗長データとを含むストライプグループを単位として、ディスクアレイを構成する複数のディスク装置にデータを分散して格納するディスク制御システムにおいて、前記複数のディスク装置に対して互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、前記複数のストライプグループそれぞれのデータ配置を決定する手段と、ホストからのディスクアクセス要求と、前記決定されたデータ配置とに基づいて、前記複数のディスク装置に対するアクセスを制御する制御手段とを具備することを特徴とするディスク制御システム。 【請求項2】 前記データ配置を決定する手段は、互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納され、且つ前記冗長データが格納されるディスク装置が前記ストライプグループを単位として他のディスク装置に移動されるように、前記複数のストライプグループそれぞれのデータ配置を決定することを特徴とする請求項1記載のディスク制御システム。 【請求項3】 前記各ブロックデータは論理アドレスが連続する複数のサブブロックデータから構成されており、前記各ブロックデータを構成する複数のサブブロックデータは、同一のディスク装置内に物理的に連続して格納されることを特徴とする請求項1記載のディスク制御システム。 【請求項4】 前記制御手段は、前記ホストからのアクセス要求によって隣接する2つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置を検出し、当該検出されたディスク装置に対して、前記読み出しが要求されたデータを1度のディスクアクセスで読み出すためのリード要求を発行する手段を含むことを特徴とする請求項1記載のディスク制御システム。 【請求項5】 前記制御手段は、前記ホストからのアクセス要求によって隣接する複数のストライプグループにまたがる範囲のデータの読み出しが要求された場合、前記読み出し要求で指定された範囲をストライプグループ毎に分割し、各ストライプグループ毎にアクセス対象となる各ディスク装置に対して発行すべきリード要求を生成する手段と、論理アドレスが連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータを検出した時、一度のディスクアクセスで当該ディスク装置から前記データを読み出すように、前記生成されたリード要求の内、アクセス対象のデータそれぞれが論理的に連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータに関するリード要求同士を単一のリード要求に統合する手段とを含むことを特徴とする請求項1記載のディスク制御システム。 【請求項6】 ホストからのアクセス要求に応じて、ディスクアレイを制御するディスク制御システムにおいて、前記ディスクアレイを構成するN+1台(N≧2)のディスク装置と、論理アドレスが連続するデータをブロック単位で異なるN台のディスク装置にそれぞれ格納するためのN個のデータストライプとそれらN個のデータストライプの内容に対応する冗長データを1台のディスク装置に格納するための冗長ストライプとからそれぞれ構成される複数のストライプグループを、前記N+1台のディスク装置に割り当てるとともに、互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータを格納するためのデータストライプと、後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータを格納するためのデータストライプとが同一のディスク装置に物理的に連続して割り当てられ、且つ前記冗長ストライプが割り当てられるディスク装置が前記ストライプグループを単位として前記N+1台のディスク装置間で巡回されるように、前記N+1台のディスク装置に割り当てられる前記複数のストライプグループそれぞれのデータ配置を決定する手段と、前記ホストからのディスクアクセス要求と前記決定されたデータ配置とに基づいて、前記ディスクアレイをアクセス制御する制御手段とを具備することを特徴とするディスク制御システム。 【請求項7】 論理アドレスが連続する複数のブロックデータとそれらブロックデータの障害回復のための冗長データとを含むストライプグループを単位として、ディスクアレイを構成する複数のディスク装置にデータを分散して格納するための制御方法であって、前記複数のディスク装置に対して互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、前記複数のストライプグループそれぞれのデータ配置を決定するステップと、ホストからのディスクアクセス要求と、前記決定されたデータ配置とに基づいて、前記複数のディスク装置に対するアクセスを制御するステップとを具備することを特徴とする制御方法。 【請求項8】 前記データ配置を決定するステップは、互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納され、且つ前記冗長データが格納されるディスク装置が前記ストライプグループを単位として他のディスク装置に移動されるように、前記複数のストライプグループそれぞれのデータ配置を決定することを特徴とする請求項7記載の制御方法。 【請求項9】 前記各ブロックデータは論理アドレスが連続する複数のサブブロックデータから構成されており、前記各ブロックデータを構成する複数のサブブロックデータは、同一のディスク装置内に物理的に連続して格納されることを特徴とする請求項7記載の制御方法。 【請求項10】 前記アクセスを制御するステップは、前記ホストからのアクセス要求によって隣接する2つのストライプグループの境界にまたがる範囲のデータの読み出しが要求された場合、その読み出しが要求されたデータが物理的に連続して格納されているディスク装置を検出し、当該検出されたディスク装置に対して、前記読み出しが要求されたデータを1度のディスクアクセスで読み出すためのリード要求を発行するステップを含むことを特徴とする請求項7記載の制御方法。 【請求項11】 前記アクセスを制御するステップは、前記ホストからのアクセス要求によって隣接する複数のストライプグループにまたがる範囲のデータの読み出しが要求された場合、前記読み出し要求で指定された範囲をストライプグループ毎に分割し、各ストライプグループ毎にアクセス対象となる各ディスク装置に対して発行すべきリード要求を生成するステップと、論理アドレスが連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータを検出した時、一度のディスクアクセスで当該ディスク装置から前記データを読み出すように、前記生成されたリード要求の内、アクセス対象のデータそれぞれが論理的に連続しており且つ同一のディスク装置内に物理的に連続して格納されているデータに関するリード要求同士を単一のリード要求に統合するステップを含むことを特徴とする請求項7記載の制御方法。 【請求項12】 ホストからのアクセス要求に応じて、N+1台(N≧2)のディスク装置から構成されるディスクアレイを制御する制御方法であって、論理アドレスが連続するデータをブロック単位で異なるN台のディスク装置にそれぞれ格納するためのN個のデータストライプとそれらN個のデータストライプの内容に対応する冗長データを1台のディスク装置に格納するための冗長ストライプとからそれぞれ構成される複数のストライプグループを、前記N+1台のディスク装置に割り当てるとともに、互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータを格納するためのデータストライプと、後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータを格納するためのデータストライプとが同一のディスク装置に物理的に連続して割り当てられ、且つ前記冗長ストライプが割り当てられるディスク装置が前記ストライプグループを単位として前記N+1台のディスク装置間で巡回されるように、前記N+1台のディスク装置に割り当てられる前記複数のストライプグループそれぞれのデータ配置を決定するステップと、前記ホストからのディスクアクセス要求と前記決定されたデータ配置とに基づいて、前記ディスクアレイをアクセス制御するステップとを具備することを特徴とするディスク制御システム。
|
【発明の詳細な説明】【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】 【課題を解決するための手段】上述の課題を解決するため、本発明は、論理アドレスが連続する複数のブロックデータとそれらブロックデータの障害回復のための冗長データとを含むストライプグループを単位として、ディスクアレイを構成する複数のディスク装置にデータを分散して格納するディスク制御システムにおいて、前記複数のディスク装置に対して互いに隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、前記複数のストライプグループそれぞれのデータ配置を決定する手段と、ホストからのディスクアクセス要求と、前記決定されたデータ配置とに基づいて、前記複数のディスク装置に対するアクセスを制御する制御手段とを具備することを特徴とする。 【0008】このディスク制御システムにおいては、隣接して割り当てられるストライプグループ同士のうち、先行するストライプグループに属するブロックデータの中で最も論理アドレスの大きいブロックデータと後続するストライプグループに属するブロックデータの中で最も論理アドレスの小さいブロックデータとが同一のディスク装置に物理的に連続して格納されるように、複数のストライプグループそれぞれのデータ配置が決定されるので、隣接するストライプグループの境界を挟む論理的に連続する2つのブロックデータは同一のディスク装置内に物理的に連続して格納されることになる。したがって、並列アクセス性能を維持しつつ、個々のディスク装置で見た場合におけるストライプグループ間における論理アドレスの連続性を保証することできるので、データリードのためのディスク装置に対するアクセス回数を十分に低減することが可能となり、読み出し性能の向上を図ることができる。 【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】 【発明の効果】以上説明したように、本発明によれば、ストライプグループ間のデータ配置の関係を最適化することにより、ディスク装置に対するアクセス回数を十分に低減することが可能となる。
|
| 【出願人】 |
【識別番号】000003078 【氏名又は名称】株式会社東芝 【住所又は居所】東京都港区芝浦一丁目1番1号
|
| 【出願日】 |
平成13年9月13日(2001.9.13) |
| 【代理人】 |
【識別番号】100058479 【弁理士】 【氏名又は名称】鈴江 武彦 (外6名)
|
| 【公開番号】 |
特開2003−85895(P2003−85895A) |
| 【公開日】 |
平成15年3月20日(2003.3.20) |
| 【出願番号】 |
特願2001−278281(P2001−278281) |
|