JP2004220129A - Method for controlling disk array system - Google Patents

Method for controlling disk array system Download PDF

Info

Publication number
JP2004220129A
JP2004220129A JP2003003852A JP2003003852A JP2004220129A JP 2004220129 A JP2004220129 A JP 2004220129A JP 2003003852 A JP2003003852 A JP 2003003852A JP 2003003852 A JP2003003852 A JP 2003003852A JP 2004220129 A JP2004220129 A JP 2004220129A
Authority
JP
Japan
Prior art keywords
disk
stripe
read
data
command
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.)
Pending
Application number
JP2003003852A
Other languages
Japanese (ja)
Inventor
Junji Ogawa
純司 小川
Ikuya Yagisawa
育哉 八木沢
Naoto Matsunami
直人 松並
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2003003852A priority Critical patent/JP2004220129A/en
Publication of JP2004220129A publication Critical patent/JP2004220129A/en
Pending legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To solve the problem that transfer efficiency is deteriorated only by redundant data at the time of reading the range of a read request by every redundant data in a batch in a disk array system adopting an RAID(Redundant Arrays of Inexpensive Disks) level 5. <P>SOLUTION: This disk array system is provided with a disk IO setting means to a disk device with only data as a read request range. Also, this disk IO setting means is able to set the IO of stripes being the management units of the disk array system to the disk device in a batch. <P>COPYRIGHT: (C)2004,JPO&NCIPI

Description

【0001】
【発明の属する技術分野】
本発明はディスクアレイシステムの制御方式にかかわり、特にディスク装置へのコマンド発行方式に関するものである。
【0002】
【従来の技術】
ディスクアレイシステムは、RAID(Redundant Arrays of Inexpensive Disks)とも呼ばれ、複数のディスク装置をアレイ状に配置した構成をとり、ホスト装置からのリード要求(データの読み出し要求)およびライト要求(データの書き込み要求)をディスクの並列操作によって高速に処理するとともに、データに冗長データを付加することによって信頼性を向上させた記憶装置である。
【0003】
ディスクアレイシステムは、非特許文献1に記載されているように、冗長データの種類と構成により5つのレベルに分類されている。
【0004】
分類法のレベル5(以下、RAID5と呼ぶことにする)においては、冗長データが各ディスクに分散されて記憶されており、冗長データ更新時に1台の冗長データディスクに処理が集中することを防ぎ、ライト処理時の性能低下を抑えることができる。RAID5ではデータをストライプと呼ばれる管理単位に分割し処理を行う。
【0005】
【非特許文献1】
デビット・エー・パターソン(David A.Patterson)外2名著、「レイド装置の一考察(A Case for Redundant Arrays of Inexpensive Disks (RAID))」、1998年ACM SIGMOD国際会議予稿集(Proceedings of the 1988 ACM SIGMOD International Conference on Management of Data)、ACMプレス(ACM Press)、1988年、p.109−p.116
【0006】
【発明が解決しようとする課題】
従来技術では長大サイズのリード要求の際に、冗長データもディスクからのリード対象としており、RAID5グループ内のディスク数に応じた性能低下が生じるという課題がある。RAID5のディスク構成を表すnD+1Pにおいては、nのデータに対して、冗長データを1読み出す必要があり、n/(n+1)の性能低下が生じる。
【0007】
そこで、係る課題を解決するための技術を提供する。
【0008】
また、ディスクからのデータ転送時に生じるオーバヘッドを削減することにより、さらなる性能向上を図る。
【0009】
【課題を解決するための手段】
本発明は、冗長データを読み込むことなくデータを読み込み、また、データ読み込みの際に生じるディスク制御のためのオーバヘッドを低減するようなリードコマンドを作成するディスクIO設定手段を備える。
【0010】
【発明の実施の形態】
以下に、本発明の実施形態を説明する。尚これにより本発明が限定されるものではない。
【0011】
本実施形態は、ディスクアレイシステムにおいて、ホスト装置から長大サイズのリード要求があった場合に、ディスク装置からデータのみを読み出し、また、同一ディスク装置内の複数ストライプを一つの読み出し処理で読み出すことで、高性能化を図るためのものである。
【0012】
本実施形態で用いられるディスクアレイシステムの構成例を図1を用いて説明する。図1において、100はホスト装置、200はアレイ制御部、300はディスク装置群である。
【0013】
アレイ制御部200はアレイ制御部200の制御を行うメイン制御部201と、冗長データの生成を行う冗長データ生成手段203と、アレイ制御部200内のデータ転送を行うデータ転送手段204と、プログラム保持部205と、データを格納するデータ保持部206と、ホスト入出力手段207と、ディスク入出力手段211〜215で構成し、それぞれをアレイ内部バス208で接続する。
【0014】
ホスト入出力手段207は、ホストインターフェース400を介し、ホスト装置100のホスト入出力手段101と接続する。
【0015】
プログラム保持部205は、メイン制御部201により実行されるプログラムを格納するプログラム保持手段221を有する。
【0016】
ディスク装置群300は、本実施例においては5台のディスク装置301〜305により構成している。
【0017】
各ディスク装置301〜305は、アレイ制御部200にある5つのディスク入出力手段211〜215とそれぞれディスクインターフェース501〜505により接続する。
【0018】
次にプログラム保持手段221の一例を図2を用いて説明する。プログラム保持手段221はメイン制御部201で使用されるプログラムを保持する。
【0019】
図2において、プログラム保持手段221は、ディスクアレイ装置を制御するRAID制御手段601と、ディスク装置へ発行するコマンドを作成するディスクIO設定手段602と、データアクセスの際に用いる論理アドレスとディスク装置上のアドレスとを相互変換する論理−物理アドレス変換手段603と、一時的に作成中のコマンドを保持しておくコマンド保持手段604により構成している。
【0020】
RAID制御手段601は、ディスクアレイ制御を実施するが、公知の技術により容易に実現可能であるため説明を省略する。
【0021】
次に本実施形態の論理アドレスと物理アドレスの対応例を図3を用いて説明する。論理アドレスとは、ホスト装置100から抽出されるアドレスであり、物理アドレスとはディスクアレイシステム内で扱うアドレスである。
【0022】
図3において、ディスク装置301〜305は図1に示したものと同一であり、データ管理単位であるストライプ701を複数有する。図3において、各位置に存在するストライプ701を区別するため、以下ではデータが格納されているストライプ0〜47、パリティが格納されているストライプP0〜P11と表す。
【0023】
各ストライプは、水平方向に並んでいるものがRAID5のパリティグループを構成しているものとする。例えば、ストライプ0〜3、ストライプP0は同一のパリティグループである。
【0024】
図7はプログラム保持部206に格納され、ディスクIO設定手段602に管理される、ディスク装置IO設定処理管理テーブルである。
【0025】
ディスクIO設定手段602の処理で参照されるテーブルであるディスク装置IO設定処理管理テーブル2000は、ディスク装置エントリ2001と、各ディスク装置がディスクIO設定手段中で処理されたかどうかを示すディスク装置処理済フラグ2002と、ディスクIO設定手段中各ディスク装置内リード範囲の先頭アドレスを示すディスクリード範囲先頭LBA2003と、ディスクIO設定手段中各ディスク装置内リード範囲の末尾アドレスを示すディスクリード範囲末尾LBA2004を有する。
【0026】
図4は、ディスクIO設定手段602の処理動作の一例を示した制御フローである。
【0027】
図4において、ホストからのIO要求によって、ディスク装置のあるリード範囲に対するリード要求が発生すると、まず全ディスク装置の処理済フラグ2002をOFFとする(ステップ1000)。
【0028】
次に、全ディスクの処理済フラグが、ONとなっているかを判断する(ステップ1001)。ステップ1001において、全ディスクの処理済フラグがONとなっている場合は、全てのディスクIO設定が終了となる。
【0029】
ステップ1001において、全ディスクの処理済フラグのうち、OFFとなっているものがある場合は、処理済フラグがOFFになっているディスクを選択し(ステップ1002)、選択したディスクが有するデータと、リード範囲を比較し、重なっている部分をディスクリード範囲として、ディスクリード範囲の先頭LBAをディスクリード範囲先頭LBA2003に、ディスクリード範囲の末尾LBAをディスクリード範囲末尾LBA2004に設定し(ステップ1003)、ディスクリード範囲は0かどうかの判断を行う(ステップ1004)。
【0030】
ここでディスクリード範囲が0とは、ディスクリード範囲がないことを示す。
【0031】
以下、リードコマンドの作成及び設定はコマンド保持手段604にコマンドを保持することで動作を行う。以下、コマンドの作成過程では、ディスク装置IO設定処理管理テーブルにディスクリード範囲の先頭LBA及び末尾LBAを設定することで、ディスクリード範囲の設定動作を行う。
【0032】
ステップ1004において、ディスクリード範囲が0でない場合は、ディスク装置に対して発行するためのリードコマンドを、コマンド保持手段604に新規作成し、リードコマンドの先頭アドレスに、ディスクリード範囲の先頭アドレスを設定し(ステップ1005)、物理ディスクにおいて、ディスクリード範囲はパリティによって分断されているかどうかを判断する(ステップ1006)。
【0033】
ステップ1006において、ディスクリード範囲がパリティによって分断されている場合は、リードコマンドのIOサイズをディスクリード範囲の先頭からパリティによる分断位置までのサイズに設定し(ステップ1009)、ディスクリード範囲から前記作成したリードコマンドにより読み込み対象となる範囲を削除した範囲を、新たなディスクリード範囲として再設定する(ステップ1010)。
【0034】
続いてリードコマンドをコマンド保持手段604に新規作成し、リードコマンドの先頭アドレスに、前記再設定を行ったディスクリード範囲の先頭アドレスを設定する(ステップ1005)。
【0035】
ステップ1006において、ディスクリード範囲がパリティによって分断されていない場合は、リードコマンドのIOサイズを、ディスクリード範囲のサイズに設定し(ステップ1007)、選択したディスクの処理済フラグをONし(ステップ1008)、全ディスクの処理済フラグがONとなっているかどうかの判断を行う(ステップ1001)。
【0036】
ステップ1004において、ディスクリード範囲が0の場合は、選択したディスクでのリード要求がないため、選択したディスクの処理済フラグをONとし(ステップ1008)、全ディスクの処理済フラグがONとなっているかどうかの判断を行う(ステップ1001)。
【0037】
以降、前述のステップ1001の処理を行う。以上が、本実施形態のドライブIO設定処理動作の一例である。
【0038】
以下では、ドライブIO設定処理動作の一例として、リード範囲がストライプ10〜30であった場合の処理動作を示す。
【0039】
まず、ディスク装置301〜305の処理済フラグがOFFとなり(ステップ1000)、処理済フラグがOFFのディスクが存在するため(ステップ1001)、処理済フラグがOFFのディスクから処理対象ディスクを選択する事となる(ステップ1002)。
【0040】
ここではディスク装置301を選択したとし、ディスク装置301とリード範囲の重なっている部分、ストライプ5、ストライプ10、ストライプ15、ストライプ20、ストライプ25、ストライプ30が、ディスクリード範囲として設定される(ステップ1003)。
【0041】
ディスクリード範囲は0でないため(ステップ1004)、ディスク装置に対して発行されるリードコマンドを新規作成し、リードコマンドの先頭アドレスとして、ディスクリード範囲の先頭である、ストライプ10の先頭アドレスが設定される(ステップ1005)。
【0042】
ディスクリード範囲は、パリティである、ストライプP4によって分断されているため(ステップ1006)、リードコマンドのIOサイズとしては、ディスクリード範囲の先頭からパリティによる分断位置まで、すなわち、ストライプ10の先頭から、ストライプ15の末尾までが、設定される(ステップ1009)。
【0043】
ディスクリード範囲から、前記作成したリードコマンドの読み込み対象範囲を削除した範囲をディスクリード範囲として再設定すると、ディスクリード範囲は、ストライプ20、ストライプ25、ストライプ30となる(ステップ1010)。
【0044】
ディスク装置に対して発行されるリードコマンドを新規作成し、リードコマンドの先頭アドレスとして、ディスクリード範囲の先頭である、ストライプ20の先頭アドレスが設定される(ステップ1005)。
【0045】
ディスクリード範囲は、パリティによって分断されていないため(ステップ1006)、リードコマンドのIOサイズとしては、ディスクリード範囲サイズ、すなわち、ストライプ20の先頭から、ストライプ30の末尾までが、設定される(ステップ1007)。
【0046】
選択したディスク装置301のディスクリード範囲は全てリードコマンドの読み込み対象領域として設定されたため、ディスク装置301の処理済フラグをONとする(ステップ1008)。
【0047】
引き続き、処理済フラグがOFFのディスクが存在するため(ステップ1001)、処理済フラグがOFFのディスクから処理対象ディスクを選択することとなる(ステップ1002)。
【0048】
ここではディスク装置302を選択したとし、ディスク装置302とリード範囲の重なっている部分、ストライプ11、ストライプ16、ストライプ21、ストライプ26が、ディスクリード範囲として設定される(ステップ1003)。
【0049】
以下、ディスク装置301の場合と同様に、ディスクリード範囲がパリティによって分断されたケースであり、ストライプ11の先頭からストライプ11の末尾までをリード範囲とするリードコマンドと、ストライプ16の先頭からストライプ26の末尾までをリード範囲とするリードコマンドを作成し、ディスク装置302の処理済フラグをONとする(ステップ1008)。
【0050】
引き続き、処理済フラグがOFFのディスクが存在するため(ステップ1001)、処理済フラグがOFFのディスクから処理対象ディスクを選択することとなる(ステップ1002)。
【0051】
ここではディスク装置303を選択したとし、ディスク装置303とリード範囲の重なっている部分、ストライプ12、ストライプ17、ストライプ22、ストライプ27が、ディスクリード範囲として設定される(ステップ1003)。
【0052】
ディスクリード範囲は0でないため(ステップ1004)、ディスク装置に対して発行されるリードコマンドを新規作成し、リードコマンドの先頭アドレスとして、ディスクリード範囲の先頭である、ストライプ12の先頭アドレスが設定される(ステップ1005)。
【0053】
ディスクリード範囲は、パリティによって分断されていないため(ステップ1006)、リードコマンドのIOサイズとしては、ディスクリード範囲サイズ、すなわち、ストライプ12の先頭から、ストライプ27の末尾までが、設定される(ステップ1007)。
【0054】
選択したディスク装置303のディスクリード範囲は全てリードコマンドの読み込み対象領域として設定されたため、ディスク装置303の処理済フラグをONとする(ステップ1008)。
【0055】
引き続き、処理済フラグがOFFのディスクが存在するため(ステップ1001)、処理済フラグがOFFのディスクから処理対象ディスクを選択する事となる(ステップ1002)。
【0056】
ここではディスク装置304を選択したとし、ディスク装置304とリード範囲の重なっている部分、ストライプ13、ストライプ18、ストライプ23、ストライプ28が、ディスクリード範囲として設定される(ステップ1003)。
【0057】
以下、ディスク装置301、ディスク装置302の場合と同様に、ディスクリード範囲がパリティによって分断されたケースであり、ストライプ13の先頭からストライプ23の末尾までをリード範囲とするリードコマンドと、ストライプ28の先頭からストライプ28の末尾までをリード範囲とするリードコマンドを作成し、ディスク装置304の処理済フラグをONとする(ステップ1008)。
【0058】
引き続き、処理済フラグがOFFのディスクが存在するため(ステップ1001)、処理済フラグがOFFのディスクから処理対象ディスクを選択する事となる(ステップ1002)。
【0059】
処理済フラグがOFFのディスクは、ディスク装置305しかないため、ディスク装置305を選択し、ディスク装置305とリード範囲の重なっている部分、ストライプ14、ストライプ19、ストライプ24、ストライプ29が、ディスクリード範囲として設定される(ステップ1003)。
【0060】
以下、ディスク装置301、ディスク装置302、ディスク装置304の場合と同様に、ディスクリード範囲がパリティによって分断されたケースであり、ストライプ14の先頭からストライプ19の末尾までをリード範囲とするリードコマンドと、ストライプ24の先頭からストライプ29の末尾までをリード範囲とするリードコマンドを作成し、ディスク装置305の処理済フラグをONとする(ステップ1008)。
【0061】
全ディスクの処理済フラグがONとなったため(ステップ1001)、ドライブIO設定処理は終了となる。
【0062】
前記例では、結果として、(ストライプ10、ストライプ15)(ストライプ20、ストライプ25、ストライプ30)、(ストライプ11)、(ストライプ16、ストライプ21、ストライプ26)、(ストライプ12、ストライプ17、ストライプ22、ストライプ27)、(ストライプ13、ストライプ18、ストライプ23)、(ストライプ28)、(ストライプ14、ストライプ19)、(ストライプ24、ストライプ29)の9つのリードコマンドを作成した事になる。
【0063】
データをリードする際にパリティを同時に読み込むことによる性能低下の解決について、図5を用いて説明する。
【0064】
図5は、9D+1P構成のRAID5システムにおける、ディスク装置1台におけるストライプ列の一部である。図5において、ストライプ列は管理単位であるストライプ800を複数有し、各ストライプに関して、データを格納しているストライプ801〜809と、パリティを格納しているストライプP800からなる。
【0065】
従来技術ではリード時にストライプ801〜809、ストライプP800を読み込み、実データとしてストライプ801〜809を得ていた。
【0066】
本実施形態ではストライプ801〜809を読み込み、実データとしてストライプ801〜809を得るため、従来技術に比べ、10%効率が向上する。
【0067】
図5においては、nD+1P構成のnを9としたが、nが9より小さい場合は、パリティを格納しているストライプの比率が増加する。このため本実施形態の従来技術に対する向上率は、nが小さくなるにつれて、より増加する。
【0068】
次に、データをリードする際に生じるオーバヘッドの削減について説明する。
【0069】
ディスク側のインターフェースとしては、ファイバチャネルやSCSI等が挙げられる。インターフェース経由でデータを転送する上で、コマンド発行、ステータス通知等のプロトコルオーバヘッドが発生する。さらに、ファイバチャネルにおいては、バスの使用権限を得るためのオープン、クローズ等のオーバヘッドも発生する。また、SCSIにおいては、フェーズを遷移させるためのアービトレーションフェース、セレクションフェーズ等も発生する。
【0070】
説明の簡略化のため、本実施形態ではSCSIを想定し、コマンド、ステータスのオーバヘッドのみを記載した、図6を用いて説明する。
【0071】
図6において、合計時間900は、ストライプ1〜3を別々のコマンドでリードした場合の、全ストライプのコマンドとデータとステータスの転送にかかる時間である。
【0072】
合計時間900は、ストライプ1のコマンドフェーズ時間901と、ストライプ1のデータフェーズ時間902と、ストライプ1のステータスフェース時間903と、ストライプ2のコマンドフェーズ時間904と、ストライプ2のデータフェーズ時間905と、ストライプ2のステータスフェース時間906と、ストライプ3のコマンドフェーズ時間907と、ストライプ3のデータフェーズ時間908と、ストライプ3のステータスフェース時間909からなる。
【0073】
合計時間950は、ストライプ1〜3を一つのコマンドでリードした場合の、全ストライプのコマンドとデータとステータスの転送にかかる時間であり、本発明において合計時間950は、ストライプ1〜3のコマンドフェーズ時間951と、ストライプ1のデータフェーズ時間952と、ストライプ2のデータフェース時間953と、ストライプ3のデータフェーズ時間954と、ストライプ1〜3のステータスフェーズ時間955からなる。
【0074】
合計時間950は、合計時間900に対して、データフェース時間以外のオーバヘッドが1/3に削減される。
【0075】
図3のような実施形態は、4D+1P構成であるため、無限長サイズのデータリードを行った場合には、プロトコルオーバヘッドは1/4に削減される。
また、ストライプサイズを変更すること無く、データをリードする際に生じるオーバヘッドの削減できるので、ストライプサイズ拡張に伴い生じる、小サイズランダムアクセス時のディスク負荷集中による性能低下を避けることが出来る。
【0076】
【発明の効果】
本発明によって、ディスクアレイシステム内のディスクへのリードコマンド発行時に、実データのみをリード対象とする事が可能となる。また、データ転送オーバヘッドを低減するコマンドの発行が可能となる。
【図面の簡単な説明】
【図1】システム構成の一例を示す図である。
【図2】プログラム保持手段の一例を示す図である。
【図3】論理アドレスと物理位置の関係のを示す図である。
【図4】ディスクIO設定処理の一例を示すフロー図である。
【図5】データ/パリティセグメントの説明図である。
【図6】プロトコルオーバヘッドの説明図である。
【図7】ディスク装置IO設定処理管理テーブルの一例を示す図である。
【符号の説明】
100…ホスト装置
200…アレイ制御部
300…ディスク装置群
602…ディスクIO設定手段
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a control method of a disk array system, and particularly to a method of issuing a command to a disk device.
[0002]
[Prior art]
The disk array system is also called a RAID (Redundant Arrays of Inexpensive Disks), and has a configuration in which a plurality of disk devices are arranged in an array, and a read request (data read request) and a write request (data write) from a host device are provided. Request) is processed at high speed by parallel operation of disks, and the reliability is improved by adding redundant data to the data.
[0003]
As described in Non-Patent Document 1, disk array systems are classified into five levels according to the type and configuration of redundant data.
[0004]
At the level 5 of the classification method (hereinafter referred to as RAID5), redundant data is distributed and stored in each disk, and processing is prevented from being concentrated on one redundant data disk when updating redundant data. In addition, it is possible to suppress a decrease in performance during write processing. In RAID 5, data is divided into management units called stripes for processing.
[0005]
[Non-patent document 1]
David A. Patterson and two other authors, "A Case for Redundant Arrays of Inexpensive Disks (RAID)," Proceedings of the 1998 ACM SIGMOD International Conference (Professed Meetings). SIGMOD International Conference on Management of Data, ACM Press, 1988, p. 109-p. 116
[0006]
[Problems to be solved by the invention]
In the related art, when a long-sized read request is made, redundant data is also read from the disk, and there is a problem that performance is reduced according to the number of disks in the RAID 5 group. In nD + 1P representing the disk configuration of RAID5, it is necessary to read out 1 redundant data for n data, and the performance is reduced by n / (n + 1).
[0007]
Therefore, a technique for solving such a problem is provided.
[0008]
Further, performance is further improved by reducing overhead generated when data is transferred from the disk.
[0009]
[Means for Solving the Problems]
The present invention includes a disk IO setting unit that reads data without reading redundant data and creates a read command that reduces the overhead for disk control that occurs when reading data.
[0010]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, embodiments of the present invention will be described. Note that the present invention is not limited by this.
[0011]
In the present embodiment, in a disk array system, when a long read request is issued from the host device, only data is read from the disk device, and a plurality of stripes in the same disk device are read by one read process. , For higher performance.
[0012]
A configuration example of a disk array system used in the present embodiment will be described with reference to FIG. In FIG. 1, reference numeral 100 denotes a host device, 200 denotes an array control unit, and 300 denotes a disk device group.
[0013]
The array control unit 200 includes a main control unit 201 that controls the array control unit 200, a redundant data generation unit 203 that generates redundant data, a data transfer unit 204 that performs data transfer in the array control unit 200, and a program holding unit. A data storage unit 206 for storing data, a host input / output unit 207, and disk input / output units 211 to 215 are connected to each other via an array internal bus 208.
[0014]
The host input / output unit 207 connects to the host input / output unit 101 of the host device 100 via the host interface 400.
[0015]
The program holding unit 205 includes a program holding unit 221 that stores a program executed by the main control unit 201.
[0016]
In this embodiment, the disk device group 300 includes five disk devices 301 to 305.
[0017]
Each of the disk devices 301 to 305 is connected to five disk input / output units 211 to 215 in the array control unit 200 by disk interfaces 501 to 505, respectively.
[0018]
Next, an example of the program holding means 221 will be described with reference to FIG. The program holding unit 221 holds a program used in the main control unit 201.
[0019]
In FIG. 2, a program holding unit 221 includes a RAID control unit 601 for controlling the disk array device, a disk IO setting unit 602 for creating a command issued to the disk device, a logical address used for data access, and a A logical-to-physical address conversion means 603 for translating between the addresses and a command holding means 604 for temporarily holding a command being created.
[0020]
The RAID control unit 601 controls the disk array, but the description is omitted because it can be easily realized by a known technique.
[0021]
Next, an example of correspondence between a logical address and a physical address according to the present embodiment will be described with reference to FIG. The logical address is an address extracted from the host device 100, and the physical address is an address handled in the disk array system.
[0022]
3, the disk devices 301 to 305 are the same as those shown in FIG. 1, and have a plurality of stripes 701 as a data management unit. In FIG. 3, in order to distinguish the stripes 701 existing at each position, the stripes 701 to 47 where data is stored and the stripes P0 to P11 where parity are stored are hereinafter described.
[0023]
The stripes arranged in the horizontal direction constitute a RAID5 parity group. For example, stripes 0 to 3 and stripe P0 are the same parity group.
[0024]
FIG. 7 is a disk device IO setting process management table stored in the program holding unit 206 and managed by the disk IO setting unit 602.
[0025]
The disk device IO setting process management table 2000, which is a table referred to in the process of the disk IO setting unit 602, includes a disk device entry 2001 and a disk device processed status indicating whether each disk device has been processed in the disk IO setting unit. It has a flag 2002, a disk read range start LBA 2003 indicating the start address of the read range in each disk device in the disk IO setting means, and a disk read range end LBA 2004 indicating the end address of the read range in each disk device in the disk IO setting means. .
[0026]
FIG. 4 is a control flow showing an example of the processing operation of the disk IO setting unit 602.
[0027]
In FIG. 4, when a read request for a certain read range of a disk device is generated by an IO request from the host, first, the processing completion flags 2002 of all disk devices are turned off (step 1000).
[0028]
Next, it is determined whether or not the processed flags of all the disks are ON (step 1001). In step 1001, if the processed flags of all the disks are ON, the setting of all the disk IOs ends.
[0029]
In step 1001, if any of the processed flags of all the disks is OFF, the disk whose processed flag is OFF is selected (step 1002), and the data of the selected disk is The read ranges are compared, and the overlapping part is set as the disk read range, the first LBA of the disk read range is set as the first LBA 2003 of the disk read range, and the last LBA of the disk read range is set as the last LBA 2004 of the disk read range (step 1003). It is determined whether the disk read range is 0 (step 1004).
[0030]
Here, a disk read range of 0 indicates that there is no disk read range.
[0031]
Hereinafter, the creation and setting of the read command are performed by holding the command in the command holding unit 604. Hereinafter, in the command creation process, the disk read range setting operation is performed by setting the start LBA and the end LBA of the disk read range in the disk device IO setting process management table.
[0032]
In step 1004, if the disk read range is not 0, a read command to be issued to the disk device is newly created in the command holding means 604, and the start address of the read command is set to the start address of the read command. Then, in the physical disk, it is determined whether the disk read range is divided by the parity (step 1006).
[0033]
In step 1006, if the disk read range is divided by the parity, the IO size of the read command is set to the size from the beginning of the disk read range to the division position by the parity (step 1009), and the creation is performed from the disk read range. The range from which the range to be read has been deleted by the read command is reset as a new disk read range (step 1010).
[0034]
Subsequently, a new read command is created in the command holding unit 604, and the start address of the reset disk read range is set as the start address of the read command (step 1005).
[0035]
If the disk read range is not divided by the parity in step 1006, the IO size of the read command is set to the size of the disk read range (step 1007), and the processed flag of the selected disk is turned on (step 1008). Then, it is determined whether or not the processed flags of all the disks are ON (step 1001).
[0036]
In step 1004, if the disk read range is 0, there is no read request on the selected disk, so the processed flags of all the selected disks are turned on (step 1008), and the processed flags of all disks are turned on. It is determined whether or not there is (step 1001).
[0037]
Thereafter, the process of step 1001 is performed. The above is an example of the drive IO setting processing operation of the present embodiment.
[0038]
Hereinafter, as an example of the drive IO setting processing operation, a processing operation when the read range is stripes 10 to 30 will be described.
[0039]
First, the processed flags of the disk devices 301 to 305 are turned off (step 1000), and there are disks whose processed flags are turned off (step 1001). (Step 1002).
[0040]
Here, it is assumed that the disk device 301 is selected, and a portion where the read range overlaps with the disk device 301, stripe 5, stripe 10, stripe 15, stripe 20, stripe 25, and stripe 30 are set as the disk read range (step S10). 1003).
[0041]
Since the disk read range is not 0 (step 1004), a read command issued to the disk device is newly created, and the start address of the stripe 10, which is the start of the disk read range, is set as the start address of the read command. (Step 1005).
[0042]
Since the disk read range is divided by the stripe P4 which is parity (step 1006), the IO size of the read command is from the beginning of the disk read range to the division position by parity, that is, from the beginning of the stripe 10. The settings up to the end of the stripe 15 are set (step 1009).
[0043]
When the range in which the read target range of the created read command is deleted from the disk read range is reset as the disk read range, the disk read range becomes stripe 20, stripe 25, and stripe 30 (step 1010).
[0044]
A read command issued to the disk device is newly created, and the start address of the stripe 20, which is the start of the disk read range, is set as the start address of the read command (step 1005).
[0045]
Since the disk read range is not divided by parity (step 1006), the IO size of the read command is set to the disk read range size, that is, from the beginning of the stripe 20 to the end of the stripe 30 (step 1006). 1007).
[0046]
Since the entire disk read range of the selected disk device 301 has been set as the read target area of the read command, the processed flag of the disk device 301 is turned ON (step 1008).
[0047]
Subsequently, since there is a disk whose processed flag is OFF (step 1001), a disk to be processed is selected from disks whose processed flag is OFF (step 1002).
[0048]
Here, it is assumed that the disk device 302 has been selected, and a portion where the read range overlaps with the disk device 302, stripe 11, stripe 16, stripe 21, and stripe 26 are set as the disk read range (step 1003).
[0049]
Hereinafter, similar to the case of the disk device 301, the disk read range is divided by parity, and a read command in which the read range extends from the beginning of the stripe 11 to the end of the stripe 11; Then, a read command having a read range up to the end of is written, and the processed flag of the disk device 302 is turned ON (step 1008).
[0050]
Subsequently, since there is a disk whose processed flag is OFF (step 1001), a disk to be processed is selected from disks whose processed flag is OFF (step 1002).
[0051]
Here, it is assumed that the disk device 303 has been selected, and the portion where the read range overlaps with the disk device 303, stripe 12, stripe 17, stripe 22, and stripe 27 are set as the disk read range (step 1003).
[0052]
Since the disk read range is not 0 (step 1004), a new read command issued to the disk device is created, and the head address of the stripe 12, which is the head of the disk read range, is set as the head address of the read command. (Step 1005).
[0053]
Since the disk read range is not divided by the parity (step 1006), the IO size of the read command is set to the disk read range size, that is, from the beginning of the stripe 12 to the end of the stripe 27 (step 1006). 1007).
[0054]
Since the entire disk read range of the selected disk device 303 has been set as the read target area of the read command, the processed flag of the disk device 303 is turned ON (step 1008).
[0055]
Subsequently, since there is a disk whose processed flag is OFF (step 1001), a disk to be processed is selected from disks whose processed flag is OFF (step 1002).
[0056]
Here, it is assumed that the disk device 304 has been selected, and a portion where the read range overlaps with the disk device 304, the stripe 13, the stripe 18, the stripe 23, and the stripe 28 are set as the disk read range (step 1003).
[0057]
Hereinafter, as in the case of the disk device 301 and the disk device 302, the disk read range is divided by parity, and a read command in which the read range extends from the beginning of the stripe 13 to the end of the stripe 23, and a read command of the stripe 28 A read command having a read range from the beginning to the end of the stripe 28 is created, and the processed flag of the disk device 304 is turned ON (step 1008).
[0058]
Subsequently, since there is a disk whose processed flag is OFF (step 1001), a disk to be processed is selected from disks whose processed flag is OFF (step 1002).
[0059]
Since there is only the disk device 305 for the disk whose processing completion flag is OFF, the disk device 305 is selected, and a portion where the read range overlaps with the disk device 305, stripes 14, 19, 24, and 29 are read. It is set as a range (step 1003).
[0060]
Hereinafter, as in the case of the disk device 301, the disk device 302, and the disk device 304, the disk read range is divided by parity, and a read command in which the read range extends from the beginning of the stripe 14 to the end of the stripe 19 is referred to. Then, a read command having a read range from the beginning of the stripe 24 to the end of the stripe 29 is created, and the processed flag of the disk device 305 is turned on (step 1008).
[0061]
Since the processed flags of all the disks have been turned on (step 1001), the drive IO setting process ends.
[0062]
In the above example, as a result, (stripe 10, stripe 15) (stripe 20, stripe 25, stripe 30), (stripe 11), (stripe 16, stripe 21, stripe 26), (stripe 12, stripe 17, stripe 22) , Stripe 27, stripe 13, stripe 18, stripe 23, stripe 28, stripe 14, stripe 19, and stripe 24, stripe 29.
[0063]
With reference to FIG. 5, a description will be given of a solution to the performance degradation caused by reading the parity simultaneously when reading data.
[0064]
FIG. 5 shows a part of a stripe row in one disk device in a RAID5 system having a 9D + 1P configuration. In FIG. 5, the stripe row has a plurality of stripes 800 as management units, and each stripe is composed of stripes 801 to 809 storing data and a stripe P800 storing parity.
[0065]
In the prior art, stripes 801 to 809 and stripe P800 are read at the time of reading, and stripes 801 to 809 are obtained as actual data.
[0066]
In the present embodiment, stripes 801 to 809 are read, and stripes 801 to 809 are obtained as actual data. Therefore, the efficiency is improved by 10% as compared with the related art.
[0067]
In FIG. 5, n of the nD + 1P configuration is set to 9, but when n is smaller than 9, the ratio of stripes storing parity increases. Therefore, the rate of improvement of the present embodiment over the prior art increases as n decreases.
[0068]
Next, a description will be given of a reduction in overhead caused when reading data.
[0069]
Examples of the interface on the disk side include fiber channel and SCSI. In transferring data via the interface, protocol overhead such as command issuance and status notification occurs. Further, in the fiber channel, overhead such as opening and closing for obtaining the authority to use the bus also occurs. Further, in the SCSI, an arbitration face for transitioning a phase, a selection phase, and the like also occur.
[0070]
For the sake of simplicity, the present embodiment will be described with reference to FIG. 6 in which only SCSI commands and statuses are described, assuming SCSI.
[0071]
In FIG. 6, a total time 900 is a time required for transferring commands, data, and status of all stripes when stripes 1 to 3 are read by different commands.
[0072]
The total time 900 includes a command phase time 901 of stripe 1, a data phase time 902 of stripe 1, a status face time 903 of stripe 1, a command phase time 904 of stripe 2, a data phase time 905 of stripe 2, The status face time 906 of the stripe 2, the command phase time 907 of the stripe 3, the data phase time 908 of the stripe 3, and the status face time 909 of the stripe 3.
[0073]
The total time 950 is the time required to transfer the commands, data, and status of all the stripes when the stripes 1 to 3 are read by one command. In the present invention, the total time 950 is the command phase of the stripes 1 to 3. It comprises a time 951, a data phase time 952 of stripe 1, a data face time 953 of stripe 2, a data phase time 954 of stripe 3, and a status phase time 955 of stripes 1-3.
[0074]
In the total time 950, the overhead other than the data face time is reduced to 1/3 of the total time 900.
[0075]
Since the embodiment as shown in FIG. 3 has a 4D + 1P configuration, when data of infinite length is read, the protocol overhead is reduced to 4.
In addition, since the overhead generated when reading data can be reduced without changing the stripe size, it is possible to avoid performance degradation caused by concentration of disk load at the time of small-size random access caused by expansion of the stripe size.
[0076]
【The invention's effect】
According to the present invention, when a read command is issued to a disk in a disk array system, only actual data can be read. Further, it becomes possible to issue a command for reducing the data transfer overhead.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating an example of a system configuration.
FIG. 2 is a diagram illustrating an example of a program holding unit.
FIG. 3 is a diagram showing a relationship between a logical address and a physical position.
FIG. 4 is a flowchart illustrating an example of a disk IO setting process.
FIG. 5 is an explanatory diagram of a data / parity segment.
FIG. 6 is an explanatory diagram of a protocol overhead.
FIG. 7 illustrates an example of a disk device IO setting process management table.
[Explanation of symbols]
100 host device 200 array controller 300 disk device group 602 disk IO setting means

Claims (1)

アレイ状に配置した複数のディスク装置を備えるディスクアレイシステムであって、データを任意のサイズに分割し前記複数ディスク装置に格納可能なアレイ制御部を有し、ディスク装置へ発行するコマンド作成時に、二つ以上のデータストライプのみをまとめて読み込むコマンドを作成するディスクIO設定手段を有する事を特徴とするディスクアレイシステム。A disk array system including a plurality of disk devices arranged in an array, having an array control unit capable of dividing data into arbitrary sizes and storing the data in the plurality of disk devices, when creating a command to be issued to the disk devices, A disk array system comprising a disk IO setting means for generating a command for reading only two or more data stripes at a time.
JP2003003852A 2003-01-10 2003-01-10 Method for controlling disk array system Pending JP2004220129A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003003852A JP2004220129A (en) 2003-01-10 2003-01-10 Method for controlling disk array system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003003852A JP2004220129A (en) 2003-01-10 2003-01-10 Method for controlling disk array system

Publications (1)

Publication Number Publication Date
JP2004220129A true JP2004220129A (en) 2004-08-05

Family

ID=32894998

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003003852A Pending JP2004220129A (en) 2003-01-10 2003-01-10 Method for controlling disk array system

Country Status (1)

Country Link
JP (1) JP2004220129A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016192037A (en) * 2015-03-31 2016-11-10 富士通株式会社 Storage controller, storage control program and storage control method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016192037A (en) * 2015-03-31 2016-11-10 富士通株式会社 Storage controller, storage control program and storage control method

Similar Documents

Publication Publication Date Title
US9921912B1 (en) Using spare disk drives to overprovision raid groups
JP4894922B2 (en) RAID group conversion apparatus, RAID group conversion method, and RAID group conversion program
US8103825B2 (en) System and method for providing performance-enhanced rebuild of a solid-state drive (SSD) in a solid-state drive hard disk drive (SSD HDD) redundant array of inexpensive disks 1 (RAID 1) pair
US7127557B2 (en) RAID apparatus and logical device expansion method thereof
US8707090B2 (en) Storage system
KR101086857B1 (en) Control Method of Solid State Storage System for Data Merging
US6341342B1 (en) Method and apparatus for zeroing a transfer buffer memory as a background task
US5883909A (en) Method and apparatus for reducing data transfers across a memory bus of a disk array controller
US5802345A (en) Computer system with a reduced number of command end interrupts from auxiliary memory unit and method of reducing the number of command end interrupts
JP4634157B2 (en) Storage system
CN102122235B (en) RAID4 (redundant array of independent disks) system and data reading and writing method thereof
JP2008097237A (en) Storage device and control method therefor
JP2010211420A (en) Storage management device, storage management method, and storage system
JP2009163647A (en) Disk array device
US7949895B2 (en) Data reading method
JP2004220129A (en) Method for controlling disk array system
JP4430092B2 (en) RAID device, RAID device controller, and RAID device write-back control method
EP0687971A1 (en) Disk data storage device
JP2012174037A (en) Disk array device and control method thereof
JP4714720B2 (en) Storage device, control method therefor, and disk device
JP2001100939A (en) Disk array device and control method of disk array
JP6662530B1 (en) Control device, disk array system and data input / output method
JP2004126850A (en) Disk array system
JPH09265359A (en) Disk array system and its control method
JPH09305330A (en) Disk array system