JP3793544B2 - ディスクアレイ装置及びその制御方法 - Google Patents

ディスクアレイ装置及びその制御方法 Download PDF

Info

Publication number
JP3793544B2
JP3793544B2 JP2005208208A JP2005208208A JP3793544B2 JP 3793544 B2 JP3793544 B2 JP 3793544B2 JP 2005208208 A JP2005208208 A JP 2005208208A JP 2005208208 A JP2005208208 A JP 2005208208A JP 3793544 B2 JP3793544 B2 JP 3793544B2
Authority
JP
Japan
Prior art keywords
data
drive
parity
scsi
storage
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 - Lifetime
Application number
JP2005208208A
Other languages
English (en)
Other versions
JP2005322271A (ja
Inventor
仁 角田
良史 高本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2005208208A priority Critical patent/JP3793544B2/ja
Publication of JP2005322271A publication Critical patent/JP2005322271A/ja
Application granted granted Critical
Publication of JP3793544B2 publication Critical patent/JP3793544B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

本発明はコンピュ−タシステムに係り、特に高性能な入出力動作を可能とするディスクアレイシステムに関する。
現在のコンピュータシステムにおいては、CPU等の上位側が必要とするデ−タは2次記憶装置に格納され、CPUが必要とする時に応じ2次記憶装置に対してデ−タの書き込み、読み出しを行っている。この2次記憶装置としては一般に不揮発な記憶媒体が使用され、代表的なものとして磁気ディスク装置(以下ドライブとする)、光ディスクなどがあげられる。
近年高度情報化に伴い、コンピュータシステムにおいて、2次記憶装置の高性能化が要求されてきた。その一つの解として、多数の比較的容量の小さなドライブにより構成されるディスクアレイが考えられている。
「D.Patterson,G.Gibson,and R.H.Kartz;A Case for Redundant Arrays of Inexpensive Disks(RAID),in ACM SIGMOD Conference,Chicago,IL,(June1988)」において、データを分割して並列に処理を行うディスクアレイ(レベル3)とデータを分散して、独立に扱うディスクアレイ(レベル5)について、その性能および信頼性の検討結果が報告されている。現在この論文に書かれている方式が最も一般的なディスクアレイと考えられている。
以下に、データを分散して、独立に扱うディスクアレイ(レベル5)について説明する。レベル5のディスクアレイでは、個々のデータを分割せずに独立に扱い、多数の比較的容量の小さなドライブに分散して格納するものである。現在、一般に使用されている汎用大型コンピュータシステムの2次記憶装置では、1ドライブ当りの容量が大きいため、他の読み出し/書き込み要求に当該ドライブが使用されて、そのドライブを使用できずに待たされることが多く発生した。このタイプのディスクアレイでは、汎用大型コンピュータシステムの2次記憶装置で使用されている大容量のドライブを、多数の比較的容量の小さなドライブで構成し、データを分散して格納してあるため、読み出し/書き込み要求が増加してもディスクアレイの複数のドライブで分散して処理するため、読み出し/書き込み要求がまたされることが減少する。しかし、ディスクアレイは、このように多数のドライブにより構成されるため、部品点数が増加し障害が発生する確率が高くなる。そこで、信頼性の向上を図る目的で、パリティを用意する必要がある。
このパリティにより、データを格納したドライブに障害が発生した場合、その障害ドライブ内のデータを復元することが可能となる。ディスクアレイでは、データからパリティを作成しデータと同様にドライブに格納しておく。この時、パリティは、パリティの作成に関与したデータとは別のドライブに格納される。
これらのディスクアレイでは、現在一般に使用されている汎用大型コンピュータシステムと同様、2次記憶装置内では、個々のデータの格納場所(アドレス)が予め指定したアドレスに固定され、CPUから当該データの読み出し、または書き込みをする場合、この固定されたアドレスへアクセスすることになっている。この分散して格納するディスクアレイ(レベル5)では、ストレ−ジテクノロジコーポレーション(以下STKとする)から製品発表がされている。PCT国際公開WO 91/20076号公報では、レベル5の基本アーキテクチャにおいて、動的に変更可能なアドレスのテーブルを用意することにより、データ圧縮を行いデータの書き込み処理において、トラック単位で書き込み先のアドレスを動的に変換する方法について開示されている。
また、特開平4−230512号公報にはレベル5において、書き込み時に書き込むデータと、この書き込みにより更新したパリティを、それぞれ別の場所に書き込む方法について開示されている。さらに、IBM社のディスクアレイ(9337)では、レベル5においてWAD(ライト アシスト デバイス)を設けることが発表されている。
特開平4−230512号公報 PCT国際公開WO 91/20076号公報 「D.Patterson,G.Gibson,and R.H.Kartz;A Case for Redundant Arrays of Inexpensive Disks(RAID),in ACM SIGMOD Conference,Chicago,IL,(June1988)」
現在の汎用大型計算機システム等では、ドライブにより構成される2次記憶装置内で、CPUから転送されてくるデータは、個々のデータの格納場所(アドレス)が予め指定したアドレスに固定され、CPUから当該データを読み出し、または書き込む場合は、この固定されたアドレスへアクセスすることになる。これは、ディスクアレイにおいても同じである。データを分割して並列に処理を行うディスクアレイ(レベル3)では、このようにアドレスを固定しても影響は無いが、データを分散して、独立に扱うディスクアレイ(レベル5)では、アドレスを固定した場合、書き込み時に大きな処理オーバヘッドが必要になる。以下それについて説明する。
図11は、前記公知例でD.Pattersonらが提案したRAIDに述べられている、データを分散して独立に扱うディスクアレイ(レベル5)内部のデータアドレスを示している。この各アドレスにあるデータは、1回の読み出し/書き込み処理される単位で、個々のデータは独立している。また、RAIDで述べられているアーキテクチャでは、データに対するアドレスは固定されている。前述したように、このようなシステムでは、信頼性を向上するためパリティを設定することが不可欠である。本システムでは、各ドライブ内の同一アドレスのデータによりパリティが作成される。すなわち、ドライブ#1から4までのアドレス(1,1)のデータによりパリティが作成され、パリティを格納するドライブの(1,1)に格納される。本システムでは、読み出し/書き込み処理は、現在の汎用大型計算機システムと同様に、各ドライブに対し当該データをアクセスする。
このようなディスクアレイにおいて、例えば、ドライブ#3のアドレス(2,2)のデータを更新する場合、まず、更新される前のドライブ#3の(2,2)のデータと、パリティを格納してあるドライブの(2,2)のパリティとを読み出し(1)、これらと更新する新しいデータとで排他的論理和をとり、新たなパリティを作成する(2)。パリティの作成完了後、更新する新しいデータをドライブ#3の(2,2)に、新パリティをパリティ格納ドライブの(2,2)に格納する(3)。
図12に示すように、このようなレベル5のディスクアレイでは、データの格納されているドライブとパリティの格納されているドライブから古いデータとパリティを読み出すため、ディスクを平均1/2回転待ち、それから読み出してパリティを作成する。この新しく作成したパリティを書き込むため更に一回転必要となり、データを書き替える場合最低で1.5回転待たなければならない。ドライブにおいては1.5回転ディスクの回転を待つということは非常に大きなオーバヘッドとなる。このような書き込み時のオーバヘッドを削減するため、書き込み先のアドレスを動的に変換する方法が考えられ、WO 91/20076に開示されている。
また、前記特開平4−230512においても、書き込み時において書き込みデータをそのまま、書き込みデータが書き込まれるアドレスではなく、別のアドレスに書き込むことにより、書き込みオーバヘッドを削減する方法について開示されている。CPU側から書き込むデータが送られてくると、直ぐにパリティの更新を行ない、更新後のパリティを書き込む。このように、レベル5のディスクアレイでは、読み出しと比較して、書き込み時ではパリティ生成とこの生成したパリティを書き込む処理のオーバヘッドが非常に大きいため、CPUからの読み出し、書き込み要求が多いときには、この処理オーバヘッドが性能低下の大きな原因となる。
本発明の目的は、レベル5のディスクアレイ装置において、書き込み時における処理のオーバヘッドを減少させて、ディスクアレイ装置の性能向上を図ることにある。
本発明の他の目的は、障害ドライブ内のデータ復元用スペアドライブを装置の性能向上に利用することによってドライブ資源の有効活用を図ることにある。
本発明では、パリティグループを構成するドライブと二重化領域(スペース領域)のドライブにより論理グループを構成し、このスペース領域を有効に活用することにより、高信頼性を保ちながら、しかも、書き込み時のパリティ更新の開始時間を遅らせ、後のCPUからの読み出しまたは書き込み要求が少ないときにパリティ生成を行う。
具体的には、書き込み時に、論理グループ10を構成するSCSIドライブ12の中で、書き込むデータ(新データ)をとりあえずスペース領域に二重化して格納する。CPU1に対してはこの時点で書き込み処理を完了したと報告する。
また、パリティの作成および当該SCSIドライブ12へのパリティの書き込みは、新データのSCSIドライブへの書き込みとは独立のタイミングで処理する。具体的には、ADC2のMP1 20が当該論理グループ10に対するCPU1からの読み出し/書き込み要求をカウントし、予めユーザまたはシステム管理者が設定した数より少ない場合で、しかも当該SCSIドライブ12に対し読み出し、または書き込み要求が発行されていないときにパリティの作成を行い、パリティの作成完了後、当該SCSIドライブ12に対しパリティを書き込む。
パリティ書き込みの他の方法として、一定時間毎の割込み処理で行ってもよい。一日の中でCPUからの読み出し、または書き込み要求数の少ない時間帯、あるいは一月の中で少ない日を予測し、スケジュール化しておけばよい。
パリティの作成およびそのパリティの当該SCSIドライブ12へのパリティの書き込みが完了する前に、当該論理グループ10において任意の1台のSCSIドライブに対し障害が発生し、その内部のデータが読み出せなくなった場合は、二重化データ以外のデータが格納されているSCSIドライブ12に対しては、前のパリティと、残っているデータから障害が発生したSCSIドライブ12内のデータを回復することが可能で、二重化されている新しいデータにおいては、障害が発生していない方のSCSIドライブ12内の新データにより回復することが可能である。
本発明では、上記のように、データの書き込みとパリティの作成およびSCSIドライブ12への書き込みとを独立させることにより、ユーザ(CPU)からは書き込み時のパリティ作成によるオーバヘッドはなくなる。これは、CPUからの読み出しまたは書き込み要求数には時間的変動があるため、読み出しまたは書き込み要求数が多いときには、書き込み処理におけるパリティの更新をその都度行わず、データの書き込みが完了した時点でCPUには終了を報告し、比較的読み出しまたは書き込み要求の数が少ないときまでパリティの更新を遅らせる。このパリティの更新は、CPU側の関知はなく、ディスクアレイコントローラ2が独自に行う。
このため、CPU側から見たとき、従来のディスクアレイ(RAID方式)では、図12に示すように、書き込み時に平均1.5回転の回転待ち時間を必要としたのが、本発明によれば、平均0.5回転の回転待ち時間で済む。また、信頼性の面から見ても、従来のディスクアレイ(RAID方式)と比較し、同等に向上させることが可能となる。
本発明によれば、データの書き込み時におけるパリティの更新処理を、CPUからの読み出しまたは書き込み要求が少ない時まで遅らせることが可能となる。これにより、CPUにとっては、読み出しまたは書き込み処理要求が多い時は書き込み処理を高速に行え、これにより単位時間当りのI/O処理件数を増加させることが可能となる。さらに、通常は使用しないスペアのSCSIドライブを回転待ち時間の短縮という性能向上のために使用でき、SCSIドライブ資源の有効活用が図れる。
〈実施例1〉
以下、本発明の一実施例を図1〜図5及び図13により説明する。
図1において、本実施例は、CPU1、ディスクアレイコントローラ(以下ADC)2、ディスクアレイユニット(以下ADU)3により構成される。ADU3は、複数の論理グループ10により構成され、個々の論理グループ10は、m台のSCSIドライブ12と、各々のSCSIドライブ12とADC2を接続するドライブパス9−1から9−4により構成される。なお、このSCSIドライブ12の数は、本発明の効果を得るには特に制限は無い。この論理グループ10は障害回復単位で、この論理グループ10内の各SCSIドライブ12内の各データによりパリティを作成する。本実施例では、m−1台の個々のSCSIドライブ12内のデータから各々のパリティが作成される。
次に、ADC2の内部構造について図1を用いて説明する。
ADC2は、チャネルパスディレクタ5と、2個のクラスタ13と、バッテリバックアップ等により不揮発化された半導体メモリであるキャッシュメモリ7により構成される。このキャッシュメモリ7には、データとアドレス変換用テーブルが格納されている。このキャッシュメモリ7およびその中のアドレス変換用テーブルは、ADC2内の全てのクラスタにおいて共有で使用される。
クラスタ13は、ADC2内において独立に動作可能なパスの集合で、各クラスタ13間においては、電源、回路は全く独立となっている。クラスタ13は、チャネル、キャッシュメモリ7間のパスであるチャネルパス6と、キャッシュメモリ7とSCSIドライブ12間のパスであるドライブパス8−1から8−4が、それぞれ、2個ずつで構成されている。それぞれのチャネルパス6−1から6−4とドライブパス8は、キャッシュメモリ7を介して接続されている。CPU1より発行されたコマンドは、外部インターフェースパス4を通って、ADC2のチャネルパスディレクタ5に発行される。
ADC2は、2個のクラスタ13により構成され、それぞれのクラスタは2個のパスで構成されるため、ADC2は合計4個のパスにより構成される。このことから、ADC2では、CPU1からのコマンドを同時に4個まで受け付けることが可能である。そこで、CPU1からコマンドが発行された場合、ADC2内のチャネルパスディレクタ5により、コマンドの受付が可能かどうか判断する。
図2は、図1のチャネルパスディレクタ5と、1クラスタ13−1内の内部構造を示した図である。
図2に示すように、CPU1からADC2に送られてきたコマンドは、インターフェースアダプタ(以下IF Adp)15により取り込まれ、マイクロプロセッサであるMP1 20は、クラスタ内の外部インターフェースパス4の中で使用可能なパスがあるかを調べ、使用可能な外部インターフェースパス4がある場合は、MP1 20は、チャネルパススイッチ16を切り換えてコマンドの受付け処理を行ない、受け付けられない場合は、受付不可の応答をCPU1へ送る。
本実施例では、ADU3を構成するSCSIドライブ12は、SCSIインターフェースのドライブを使用する。CPU1をIBMシステム9000シリーズのような大型汎用計算機とした場合、CPU1からは、IBMオペレーティングシステム(OS)で動作可能なチャネルインターフェースのコマンド体系にのっとってコマンドが発行される。そこで、SCSIドライブ12をSCSIインターフェースのドライブを使用した場合、CPU1からのコマンドを、SCSIインターフェースのコマンド体系にのっとったコマンドに変換する必要が生じる。この変換は、コマンドのプロトコル変換とアドレス変換に大きく分けられる。以下にアドレス変換について説明する。
CPU1から指定されるアドレスは、図12に示すように、当該データが格納されているトラックが所属するシリンダの位置と、そのシリンダ内において当該データが格納されているトラックを決定するヘッドアドレスと、そのトラック内のレコードの位置を特定する。具体的には、要求データが格納されている当該ドライブの番号(CPU指定ドライブ番号)と、当該ドライブ内のシリンダ番号であるシリンダアドレス(CC)と、シリンダにおいてトラックを選択するヘッドの番号であるヘッドアドレス(HH)と、レコードアドレス(R)からなるCCHHRである。
従来のCKDフォーマット対応の磁気ディスクサブシステム(IBM3990−3390)では、このアドレスに従ってドライブへアクセスすれば良い。しかし、本実施例では、複数のSCSIドライブ12により、従来のCKDフォーマット対応の磁気ディスクサブシステムを論理的にエミュレートする。つまり、ADC2は、複数のSCSIドライブ12が従来のCKDフォーマット対応の磁気ディスクサブシステムで使用されているドライブ1台に相当するように、CPU1にみせかける。このため、 MP1 20は、CPU1から指定してきたアドレス(CCHHR)をSCSIドライブのアドレスに変換する。このアドレス変換には、以下に示すようなアドレス変換用のテーブル40(以下アドレステーブルとする)が使用される。
ADC2内のキャッシュメモリ7には、その内部の適当な領域に、図3に示すようなアドレステーブル40が格納されている。本実施例では、CPU1が指定してくるドライブは、CKDフォーマット対応の単体ドライブである。しかし、本発明では、CPU1が単体と認識しているドライブが、実際は複数のSCSIドライブ12により構成されるため、論理的なドライブとして定義される。このため、ADC2のMP1 20は、CPU1より指定してきたアドレス(CPU指定ドライブ番号41とCCHHR46)を、SCSIドライブ12に対するSCSIドライブアドレス42(SCSIドライブ番号43とそのSCSIドライブ内のアドレス(以下SCSI内Addrとする)44)に変換する。
アドレステーブル40は、CPU1が指定するCPU指定ドライブ番号41と、SCSIドライブアドレス42により構成される。SCSIドライブアドレス42は、SCSIドライブ12のアドレスであるSCSIドライブ番号43と、そのSCSIドライブ内の実際にデータが格納されているアドレスであるSCSI内Addr44と、論理グループ10内において、そのSCSI内Addr44により決定されるパリティグループにおけるパリティが格納されているSCSIドライブ番号(パリティドライブ番号50)と、二重化領域(スペース領域)が格納されているSCSIドライブ番号(スペースドライブ番号51)により構成されている。
このアドレステーブル40では、論理アドレス45により、SCSIドライブ番号43とSCSI内Addr44を決定する。アドレステーブル40のSCSIドライブアドレス42に登録されているSCSIドライブ番号43のSCSIドライブ12により論理グループ10は構成される。
この論理グループ10内の同一SCSI内Addr44において、パリティが格納されているSCSIドライブ番号43をパリティドライブ番号50に登録し、スペース領域が確保されているSCSIドライブ番号43をスペースドライブ番号51に登録する。
スペースドライブ番号51は、スペース領域が確保されているSCSIドライブ番号の他に、SDフラグ53により構成される。SDフラグ53は、スペース領域に格納されているデータが有効で、書き込み処理においてスペース領域として使用できない場合はオン(1)となり、無効で、スペース領域として使用可能な場合はオフ(0)となる。この論理グループ10は、データとこのデータと関連するパリティにより構成されるパリティグループと、スペース領域により構成される。
論理アドレス45には、CPU1から指定されるアドレスであるCPU指定ドライブ番号41と、CCHHRの中でCCHHR46が登録されており、それ以外に、この論理アドレス45のデータがキャッシュメモリ7内に存在する場合に、そのデータのキャッシュメモリ7内のアドレスを格納するキャッシュアドレス47と、キャッシュメモリ7内にその論理アドレス45のデータを保持している場合にオン(1)が登録されるキャッシュフラグ48と、その論理アドレス45にはスペース領域が確保されている場合にオン(1)となる無効フラグ49と、キャッシュメモリ7内の書き込みデータがドライブに書き込まれている場合にオン(1)となるドライブフラグ52により構成される。
以上のように、アドレステーブル40によりCPU指定ドライブ番号41とCCHHR46を論理アドレス45に変換し、そのデータが実際に格納されているSCSIドライブ番号43とSCSI内Addr44を決定する。
例えば、図3において、CPU1から、CPU指定ドライブ番号41としてDrive#1、CCHHR46がADR8のデータに対して要求を発行してきた場合、アドレステーブル40において、CPU指定ドライブ番号41がDrive#1の領域で各論理アドレス45内のCCHHR46を調べ、CCHHR46がADR8の論理アドレス45を探す。図3においては、論理アドレス45として、Data#23(D#23)でCCHHR46がADR8となっており、Data#23(D#23)が当該論理アドレス45である。
このData#23(D#23)は、アドレステーブル40から、SD#2のSCSIインターフェースのSCSIドライブ12内のSCSI内Addr44として、DADR8に該当することが分かり、物理的なアドレスへ変換される。また、このData#23(D#23)に対応するパリティは、パリティドライブ番号50から、Data#23(D#23)と同一のSCSI内Addr44のDADR8のSD#4のSCSIドライブ12に格納されており、スペアドライブ番号51から、SDフラグ53がオン(1)のためSD#4、5のSCSI内Addr44がDADR8に二重化して格納されているデータは有効で、この領域は二重化領域(スペア領域)として使用することは禁止されている。
このように、CPU1から指定されたアドレスを論理アドレス45に変換し、実際に読み出し/書き込みを行うSCSIドライブ12の物理的なアドレスに変換した後、SD#2のSCSIドライブ12のData#23(D#23)に対し、読み出しまたは書き込み要求が発行される。この時、アドレステーブル40において、Data#23(D#23)の論理アドレス45ではキャッシュフラグ48がオン(1)のため、このデータはキャッシュメモリ7内のCADR2、1に存在する。もし、キャッシュフラグ48がオフ(0)であれば、CADR2、4のキャッシュメモリ7内には、当該データは存在しない。また、このデータは無効フラグ49がオフ(0)のため、このデータは有効となる。更に、ドライブフラグ52がオン(1)のため、このデータはキャッシュメモリ7からドライブに既に書き込まれている。
この、アドレステーブル40は、システムの電源をオンした時に、MP1 20により、論理グループ10内のある特定のSCSIドライブ12からキャッシュメモリ7に、CPU1は関知せずに自動的に読み込まれる。一方、電源をオフする時は、MP1 20により、キャッシュメモリ7内のアドレステーブル40を、読み込んできたSCSIドライブ12内の所定の場所に、CPU1は関知せずに自動的に格納する。
次に、ADC2内での具体的なI/O処理について、図1、図2を用いて説明する。CPU1より発行されたコマンドは、IF Adp15を介してADC2に取り込まれ、MP1 20により、読み出し要求か書き込み要求か解読される。まず、読み出し要求の場合の処理方法を以下に示す。
MP1 20が読み出し要求のコマンドを認識すると、MP1 20は、CPU1から送られてきたCPU指定ドライブ番号41とCCHHR46(以下両方を併せてCPU指定アドレスとする)についてアドレステーブル40を参照し、当該データの論理アドレス45への変換を行ない、論理アドレス45に登録されているキャッシュメモリ7内に存在するかどうかキャッシュフラグ48を調べ、判定する。
キャッシュフラグ48がオンでキャッシュメモリ7内に格納されている場合(キャッシュヒット)は、MP1 20が、キャッシュメモリ7から当該データを読み出す制御を開始し、キャッシュメモリ7内に無い場合(キャッシュミス)は、当該ドライブ12からその内部の当該データを読み出す制御を開始する。
キャッシュヒット時、MP1 20は、アドレステーブル40により、CPU1が指定してきたCPU指定アドレスから論理アドレス45に変換し、論理アドレス45内のキャッシュアドレス47によりキャッシュメモリ7のアドレスに変換し、キャッシュメモリ7へ当該データを読み出しに行く。具体的には、MP1 20の指示の元で、キャッシュアダプタ回路(C Adp)24によりキャッシュメモリ7から当該データは読み出される。
C Adp24は、キャッシュメモリ7に対するデータの読み出し、書き込みをMP1 20の指示で行う回路であり、キャッシュメモリ7の状態の監視、各読み出し、書き込み要求に対して排他制御を行う回路である。C Adp24により読み出されたデータは、データ制御回路(DCC)22の制御により、チャネルインターフェース回路(CH IF)21に転送される。
CH IF21では、CPU1におけるチャネルインターフェースのプロトコルに変換し、チャネルインターフェースに対応する速度に速度調整する。具体的には、CPU1、ADC2間のチャネルインターフェースを光のインターフェースにした場合、光のインターフェースのプロトコルをADC2内では電気処理でのプロトコルに変換する。CH IF21におけるプロトコル変換および速度調整後は、チャネルパスディレクタ5において、チャネルパススイッチ16が外部インターフェースパス4を選択し、IF Adp15によりCPU1へデータ転送を行う。
一方、キャッシュミス時は、キャッシュヒット時と同様に、アドレステーブル40によりCPU指定アドレスを論理アドレス45に変換し、論理アドレス45から、当該SCSIドライブ番号とそのSCSIドライブ内の実際にデータが格納されているSCSI内Addr44を認識し、そのアドレスに対し、MP1 20は、Drive IF28に対し、当該ドライブ12への読み出し要求を発行するように指示する。
Drive IF28では、SCSIの読み出し処理手順に従って、読み出しコマンドをドライブユニットパス9−1または9−2を介して発行する。Drive IF28から読み出しコマンドを発行された当該SCSIドライブ12においては、指示されたSCSI内Addr44へシーク、回転待ちのアクセス処理を行う。当該SCSIドライブ12におけるアクセス処理が完了した後、当該SCSIドライブ12は、当該データを読み出しドライブユニットパス9を介してDrive IF28へ転送する。
Drive IF28では、転送されてきた当該データをSCSIドライブ側のキャッシュアダプタ回路(C Adp)14に転送し、(C Adp)14では、キャッシュメモリ7にデータを格納する。この時、C Adp14は、キャッシュメモリ7にデータを格納することをMP1 20に報告する。
MP1 20は、この報告を元に、アドレステーブル40のCPUが読み出し要求を発行したCPU指定アドレスに対応した論理アドレス45のキャッシュフラグ48をオン(1)にし、キャッシュアドレス47に、キャッシュメモリ7内のデータを格納したアドレスを登録する。キャッシュメモリ7にデータを格納し、アドレステーブル40のキャッシュフラグ48をオン(1)にし、キャッシュメモリ7内のアドレスを更新した後は、キャッシュヒット時と同様な手順で、CPU1へ当該データを転送する。
一方、書き込み時は、以下のように処理される。
書き込み処理は、ユーザが書き込み先のアドレス(CPU指定アドレス)を指定し、その位置にユーザはデータを書き込んでいると認識する。つまり、ユーザは、固定の位置にアドレスを指定していると認識している。
CPU1から、指定アドレス、すなわち、図3に示すアドレステーブル40においてCPU指定ドライブ番号41がドライブ#1で、CCHHR46がADR8に対して、書き込み命令が発行されたとする。まず、ADC2のMP1 20は、CPU1から、ドライブ#1のCCHHR46がADR8に対する書き込み要求のコマンドを受け取った後、コマンドを受け取ったMP1 20が所属するクラスタ13内の各チャネルパス6において処理可能かどうかを調べ、可能な場合は処理可能だという応答をCPU1へ返す。CPU1では、処理可能だという応答を受け取った後に、ADC2へデータを転送する。
この時、ADC2では、MP1 20の指示により、チャネルパスディレクタ5において、チャネルパススイッチ16が、当該外部インターフェースパス4とIF Adp15を当該チャネルパス6と接続し、CPU1とADC2間の接続を確立する。
CPU1とADC2間の接続を確立後、CPU1からのデータ転送を受け付ける。CPU1から転送されてきた書き込みデータ(以下新データとする)は、MP1 20の指示により、CH IF21によりプロトコル変換を行ない、外部インターフェースパス4での転送速度からADC2内での処理速度に速度調整する。CH IF21におけるプロトコル変換および速度制御の完了後、データは、DCC22によるデータ転送制御を受け、C Adp24に転送され、C Adp24によりキャッシュメモリ7内に格納される。
この時、CPU1から送られてきた情報がCPU指定アドレスの場合は、データが転送されてくる前に必ずCPU指定アドレスがCPU1より転送されているため、読み出しと同様に、アドレステーブル40によりアドレス変換を行い、論理アドレス45に変換する。また、CPU1から送られてきた情報がデータの場合は、キャッシュメモリ7に格納したアドレスを上記アドレス変換により変換した論理アドレス45のキャッシュアドレス47に登録する。この時、書き込みデータをキャッシュメモリ7内に保持するときは、論理アドレス45のキャッシュフラグ48をオン(1)とし、保持しない場合は、キャッシュフラグ48をオフ(0)とする。
尚、キャッシュメモリ7内に保持されている新データに対し、さらに書き込み要求がCPU1から発行された場合は、キャッシュメモリ7内に保持されている新データを書き替える。
キャッシュメモリ7に格納された新データは、この新データにより新しくパリティを更新し(以下、更新されたパリティを新パリティとする)、以下のように、論理グループ10内のSCSIドライブ12へ新データと新パリティを格納する。
図3に示すように、スペース領域及びパリティはデータと同じ様に扱われ、論理グループ10内の各SCSIドライブ12に分散して格納されている。論理グループ10を構成する各SCSIドライブ12内のデータについては、行方向(同一SCSI内Addr44)にパリティグループが構成され、このパリティグループ内のデータにおいてパリティが作成される。つまり、パリティグループは、データとパリティにより構成され、論理グループ10は、パリティグループとスペース領域で構成される。
図3において具体的な例を示す。
SCSI内Addr44がDADR1については、SD#1のSCSIドライブ12に格納されているData#1(D#1)と、SD#2のSCSIドライブ12に格納されているData#2(D#2)と、SD#3のSCSIドライブ12に格納されているData#3(D#3)によりパリティが作成される。このパリティが、SD#6のSCSIドライブ12に格納され、これらがパリティグループを構成する。
また、論理グループ10は、SD#4のSCSIドライブ12に確保されているスペース領域(S)と、SD#5のSCSIドライブ12に確保されているスペース領域(S)と、上記パリティグループにより構成される。
MP1 20は、アドレステーブル40を参照し、データ、スペース領域、パリティが格納されているSCSIドライブ12を認識する。具体的には、アドレステーブル40においてCPU指定アドレスが指定したCPU指定ドライブ番号41に対応する領域において、CPU指定アドレスで指定したCCHHR46と一致しているSCSIドライブアドレス42に登録されている論理アドレス45をMP1 20は探す。MP1 20は、CPU指定アドレスから論理アドレス45への変換後、論理アドレス45から、その論理アドレス45が格納されているSCSIドライブ番号43と、そのSCSIドライブ12内の物理的なアドレスであるSCSI内Addr44に変換する。
パリティは、論理グループ10を構成する各SCSIドライブ12において、各SCSI内Addr44が同一のデータに対し作成され、そのパリティもデータと同一のSCSI内Addr44に格納される。このため、アドレステーブル40のパリティドライブ番号50とスペースドライブ番号51において、パリティおよびスペース領域は、それぞれが格納されているSCSIドライブ番号43のみが登録されている。
そこで、MP1 20では、アドレステーブル40により、パリティドライブ番号50とスペースドライブ番号51を決定することが可能となる。つまり、パリティドライブ番号50とスペースドライブ番号51を決定することにより、パリティおよびスペース領域は、データと同一のSCSI内Addr44に格納されていることから、それらのアドレスを決定することになる。このように、データ、スペース領域、パリティが格納されているSCSIドライブ12を認識した後は、Drive IF28に対し、各々の当該SCSIドライブ12に対し書き込み処理を行うように指示する。
本発明における書き込み処理とは、論理グループ10において、新データをキャッシュメモリ7から実際にSCSIドライブ12に書き込む処理と、新データの書き込みによりパリティを新たに作り直さなければならないため、この新パリティを作成するための書き込み前のデータ(以下旧データ)と書き込み前のパリティ(以下旧パリティとする)を読み出し、新パリティを作成する処理と、書き込み後の新パリティを実際にSCSIドライブ12に書き込む一連の処理をいう。この新データをキャッシュメモリ7に格納した後の一連の書き込み処理のフローチャートを図5に示す。
図4に示すように、CPU1からSD#1のSCSIドライブ12のData#1(D#1)の論理アドレスに対し、ND#1のデータの書き込み要求が発行された場合、先に示したように、CPU1からキャッシュメモリ7に新データは一旦格納される。新データのキャッシュメモリ7への格納後、書き込み処理は次の手順で行っていく。キャッシュメモリ7に新データ(ND#1)が格納された後、MP1 20は書き込み処理に入り、アドレステーブル40により、SD#1のSCSIドライブ12が所属する論理グループ10で、Data#1(D#1)のSCSI内Addr44であるDADR1に対し、スペース領域が確保されているSD#4,5のSCSIドライブ12に対し、使用権の獲得を行う。
SD#4、5のSCSIドライブ12の使用権を獲得した後は、図5のフローチャートに示すように書き込み処理500を行っていく。
先ず、MP1 20は、アドレステーブル40のスペースドライブ番号51のSDフラグ53をチェックし、SDフラグ53がオフ(0)の場合、スペース領域として使用でき、オン(1)の場合は使用できないと判断する(502)。MP1 20は、このSDフラグ53により、SD#4、5のSCSIドライブ12にスペース領域が確保されているかを判断する。そして、SDフラグ53がオフ(0)の場合、キャッシュメモリ7に格納されているND#1をこのSD#4,5に二重化して書き込み(504)、MP1 20はCPU1へ書き込み完了の報告を行う(508)。
一方、ステップ502のチェックにより、SDフラグ53がオン(1)の場合は、図13に示すように、書き込む新データ(ND#1)をキャッシュメモリ7に書き込んだ後、MP1 20は優先的に前の書き込み処理におけるパリティの作成を指示し、このパリティを当該SCSIドライブ12に書き込む(1310)。前の書き込み処理におけるパリティの作成が完了し、当該SCSIドライブへの書き込みが完了すると、MP1 20は、アドレステーブル40においてスペースドライブ番号51にSDフラグ53をオフ(0)とし(1308)、キャッシュメモリ7に格納されているND#1を二重化して書き込み(1316)、MP1 20は、CPU1へ書き込み完了の報告を行う(1320)。
そこで、次に、SCSIドライブ12への新データ(ND#1)の書き込み方法を示す。
MP1 20は、アドレステーブル40のSDフラグ53がオフ(0)になっているのを確認後、Drive IF28に書き込むデータである新データ(ND#1)をスペース領域が確保されているSD#4とSD#5のSCSIドライブ12に書き込むよう指示する。Drive IF28では、SCSIの書き込み手順に従って、ドライブユニットパス9−1から9−4の中の2本を介して、SD#4とSD#5のSCSIドライブ12に書き込みコマンドを発行する。
Drive IF28から書き込みコマンドを発行された当該SCSIドライブ12では、Drive IF28から送られてきたCPU1が書き込み先のアドレスとして指定したCPU指定アドレスを論理アドレス45に変換し、論理アドレス45であるData#1に対応するSCSI内Addr44のDADR1へシーク、回転待ちのアクセス処理を行う。SD#4、5のSCSIドライブ12においてアクセス処理が完了し、書き込みが可能になり次第、C Adp14は、キャッシュメモリ7から書き込む新データ(ND#1)を読み出してDrive IF28へ転送する。
Drive IF28では、転送されてきた新データ(ND#1)をドライブユニットパス9−1から9−4の中の2本を介してSD#4、5のSCSIドライブ12へ転送する。新データ(ND#1)のSD#4、5のSCSIドライブ12への書き込みが完了すると、SD#4、5のSCSIドライブ12は、Drive IF28に完了報告を行ない、Drive IF28が、この完了報告を受け取ったことをMP1 20に報告する。
この時、アドレステーブル40において、書き込み前の旧データの論理アドレス45(Data#1、D#1)の無効フラグをオン(1)とし、書き込み前の論理アドレス45(Data#1、D#1)内のCCHHR46のアドレスを、新データ(ND#1)を二重化して書き込んだスペース領域の2つの論理アドレス45のCCHHR46に登録し、無効フラグをオフ(0)とし、ドライブフラグ52をオン(1)とする。また、キャッシュメモリ7内に書き込む新データ(ND#1)を保持する場合は、書き込み後の2つの論理アドレス45内のキャッシュアドレス47に、キャッシュメモリ7内の新データ(ND#1)が格納されているアドレスを登録し、キャッシュフラグ48をオン(1)とする。
この新データ(ND#1)をキャッシュメモリ7上に残さない場合、MP1 20は、この報告を元にアドレステーブル40のキャッシュフラグ48をオフ(0)にする。さらに、書き込みを行った論理グループ10内のSCSI内Addr44に対し、スペースドライブ番号51のSDフラグをオン(1)とする。
上記のようにアドレステーブル40の更新が完了すると、MP1 20は、SD#4とSD#5の両方のSCSIドライブ12からの完了報告を受け取った後、CPU1に対し擬似的に書き込み処理の終了報告を行う。SD#4、5のSCSIドライブ12に対する新データ(ND#1)の格納が完了しても、キャッシュメモリ7内には新データ(ND#1)が存在しており、パリティの更新はキャッシュメモリ7内に格納されている新データ(ND#1)で行う。
以上のように、MP1 20がCPU1に対し擬似的に終了報告を行った後は、CPU1は書き込み処理を終了したと認識しているが、MP1 20は、新しいパリティを作成して当該SCSIドライブ12書き込んでいないため、まだ書き込み処理は終了していない。そこで、MP1 20がCPU1に対し終了報告を行った後に、MP1 20が独自に新しいパリティを作成し、当該SCSIドライブ12に書き込む。この方法について以下に説明する。
MP1 20は、CPU1に対し書き込み処理の終了報告を行った後、図5に示すように、CPU1からの読み出し、書き込み要求の状況(IO状況)を監視する(510)。具体的には、MP1 20が、当該論理グループ10に対するCPU1からの読み出し、書き込み要求の単位時間当りの回数を数える。当該論理グループ10に対するこの回数が、予めユーザまたはシステム管理者により設定された数より少なく、パリティの作成およびこの作成したパリティを書き込むSCSIドライブ12が所属する論理グループ10に対する読み出し、書き込み要求がCPU1より発行されていない場合、パリティの作成およびパリティの当該SCSIドライブ12への書き込み処理を開始する。
新しくパリティを作成する場合、CPU1から書き込み先に指定されたアドレスに書き込まれているデータ(旧データ)と、更新するパリティ(旧パリティ)を読み出し、新しく作成したパリティ(新パリティ)をSCSIドライブ12に書き込む。この時、旧データと旧パリティを読み出すSCSIドライブ12と、新パリティを書き込む当該SCSIドライブ12に対し、MP1 20は、CPU1からの読み出し、書き込み要求と同様の擬似的な読み出し、書き込み要求を発行する。この、擬似的な読み出し、書き込み要求が発行されているSCSIドライブ12に対し、CPU1から読み出しまたは書き込み要求が発行された場合は、MP1 20は、CPU1からの読み出し、書き込み要求を受付、処理の待ち行列とする。
次に、新パリティの作成および当該SCSIドライブ12への作成したパリティの書き込み方法を具体的に示す。
MP1 20は、SD#1のSCSIドライブ12に対して旧データの読み出し要求、SD#6のSCSIドライブ#12に対して旧パリティの読み出し要求を発行するように、Drive IF28に指示する(514)。
Drive IF28から読み出しコマンドを発行された当該SCSIドライブ12では、Drive IF28から送られてきたSCSI内Addr44へシーク、回転待ちのアクセス処理を行う。キャッシュメモリ7内には新データ(ND#1)が存在しており、パリティの更新はキャッシュメモリ7内に格納されている新データ(ND#1)で行う。
もし、キャッシュメモリ7に新データ(ND#1)が存在していない場合は、スペース領域に二重化して書き込まれているデータをキャッシュメモリ7に読み出す。
SD#1、6のSCSIドライブ12において、シーク、回転待ちのアクセス処理が完了し、旧データ(D#1)および旧パリティ(P#1)の読み出しが可能になり次第、旧データ(D#1)および旧パリティ(P#1)を読み出し、キャッシュメモリ7に格納する。SD#1のSCSIドライブ12から旧データ(D#1)を、SD#6のSCSIドライブ12から旧パリティ(P#1)を読み出し、それぞれをキャッシュメモリ7に格納した後、MP1 20は、キャッシュメモリ7内に格納されている新たな書き込みデータ(ND#1)で、排他的論理和により、更新後の新パリティ(NP#1)を作成するようにPG36に指示を出し、PG36において新パリティ(NP#1)を作成し、キャッシュメモリ7に格納する(516)。
新パリティ(NP#1)をキャッシュメモリ7に格納した後、MP1 20では、新パリティ(NP#1)を格納する論理アドレス45のキャッシュアドレス47に、キャッシュメモリ7内の新パリティ(NP#1)を格納したアドレスを登録し、キャッシュフラグ48をオン(1)とし、無効フラグ49とドライブフラグ52をオフ(0)とする(518)。新パリティ(NP#1)の作成が完了したことを認識し、SD#6のSCSIドライブ12にIO要求が発行されていない時に、更新後の新パリティ(NP#1)を書き込むように、Drive IF28に対し指示する。
SD#6のSCSIドライブ12への更新後の新パリティ(NP#1)の書き込み方法(520)は、先に述べた新たな書き込みデータ(ND#1)をSD#4、5のSCSIドライブ12に書き込んだ方法と同じである。新パリティ(NP#1)の作成が完了したら、MP1 20は、Drive IF28に、SD#6のSCSIドライブ12に対し書き込みコマンドを発行するように指示し、当該SCSIドライブ12では、指示SCSI内Addr44へシーク、回転待ちのアクセス処理を行う。
新パリティ(NP#1)は、既に作成されキャッシュメモリ7に格納されており、SD#6のSCSIドライブ12におけるアクセス処理が完了した場合、C Adp14は、キャッシュメモリ7から新パリティ(NP#1)を読み出してDrive IF28へ転送する。Drive IF28では、転送されてきた新パリティ(NP#1)をドライブユニットパス9−1から9−4の中の1本を介してSD#6のSCSIドライブ12へ転送する(522)。
新パリティ(NP#1)のSD#6のSCSIドライブ12への書き込みが完了すると、SD#6のSCSIドライブ12は、Drive IF28に完了報告を行ない、Drive IF28がこの完了報告を受け取ったことをMP1 20に報告する。この時、MP1 20は、この新データ(ND#1)をキャッシュメモリ7上に残さない場合は、この報告を元にアドレステーブル40のキャッシュフラグ48をオフ(0)にし、キャッシュメモリ7上に残す場合はオン(1)とする。さらに、アドレステーブル40において、書き込み後の新パリティ(NP#1)の論理アドレス45の無効フラグをオフ(0)とし、ドライブフラグ52をオン(1)とする(524)。
このような、新しく作成した新パリティ(NP#1)を当該SCSIドライブ12に書き込んだ後は、旧データ(D#1)が格納されていたSD#1のSCSIドライブ12の旧データ(D#1)と二重化されている新データ(ND#1)が格納されているSD#4、5のSCSIドライブ12の中で、SCSIドライブ番号の小さいSD#4のSCSIドライブ12に格納されている新データ(ND#1)をスペース領域として解放し、次の書き込み処理用にスペース領域として登録する。この登録の方法は、MP1 20が、アドレステーブル40においてSD#1とSD#4のSCSI内Addr44がD ADR1の旧データ(D#1)と、二重化されていた新データ(ND#1)の一方が格納されている論理アドレス45において、無効フラグをオン(1)とし、更に、スペースドライブ番号51にSD#1とSD#4を登録し、SDフラグをオフ(0)にする(526)。
以上のように、書き込み処理時に書き込む新データ(ND#1)を一旦二重化して論理グループ10内に格納しておき、後でCPU1からの読み出し、書き込み要求が比較的少ないときに、新パリティ(NP#1)を作成し、SCSIドライブ12に格納することで、書き込み処理時の応答時間が短縮され、従来のように新パリティ(NP#1)の作成により他の読み出し、書き込み処理が待たされることが減少する。
もし、新パリティ(NP#1)を当該SCSIドライブ12への書き込み前に論理グループ10内のSCSIドライブ12に障害が発生した場合は、図14に示すように回復処理を行う。
図4(a)に示すように、SD#6のSCSIドライブ12に対し新パリティ(NP#1)を書き込む前に(1402)、SD#1,2、3の内のどれか1台のSCSIドライブ12に障害が発生した場合(1406)、障害が発生していないSCSIドライブ12からのデータと旧パリティから、障害が発生したSCSIドライブ12内のデータを回復することが可能となる(1410)。例えば、SD#1のSCSIドライブ12に障害が発生した場合、SD#2、3のD#2、D#3と、SD#6のSCSIドライブ1からの旧パリティ(P#1)から、SD#1のSCSIドライブ12内のデータであるD#1を回復することが可能となる。また、新データ(ND#1)が二重化して格納されているSD#4、5のどちらか一方に障害が発生した場合は、二重化データの一方のデータにより回復することが可能となる(1412)。
図4(b)に示すように、SD#6のSCSIドライブ12に対し新パリティ(NP#1)を書き込んだ後は、SD#2、3、5のSCSIドライブ12内のデータ(D#2、3、ND#1)に対し新パリティ(NP#1)が作成されてSD#6のSCSIドライブ12に格納されており、SD#2、3、5のSCSIドライブ12の中の1台のSCSIドライブ12に障害が発生した場合、残りの正常なSCSIドライブ12内のデータとSD#6のSCSIドライブ12内のパリティにより、障害が発生したSCSIドライブ12内のデータは回復される。
例えば、SD#2のSCSIドライブ12に障害が発生した場合、SD#2のSCSIドライブ12内のデータ(D#2)は、SD#3のSCSIドライブ12内のデータ(D#3)と、SD#4のSCSIドライブ12内のデータ(ND#1)と、SD#6のSCSIドライブ12内のパリティ(NP#1)から、障害が発生したSD#2のSCSIドライブ12内のデータ(D#2)は回復される。
本発明のように、書き込み処理において、スペース領域に書き込みデータ(新データ)をとりあえず二重化して格納し、この段階でCPU1に対し書き込み処理の終了報告を行うことにより、CPU1にとっては、この二重化してSCSIドライブ12に書き込む時間が書き込み処理時間になる。
従来のアレイディスクでは、図12に示すように、書き込み時に平均1.5回転の回転待ち時間が必要としたのが、もし、論理グループ10を構成するSCSIドライブ12の回転を同期させた場合は、回転待ちは平均0.5回転となる。また、新パリティをSCSIドライブ12に書き込む前に論理グループ10を構成するSCSIドライブ12に障害が発生しても、先に述べたように、旧パリティと二重化された新データにより従来のアレイディスクと同様に、障害回復を行うことが可能となる。
本実施例では、パリティおよびパリティの作成に関与したデータとスペース領域は、論理グループ10を構成する各SCSIドライブ12において、各SCSI内Addr44を同一とした。しかし、アドレステーブル40の各論理アドレス45とパリティドライブ番号50、スペースドライブ番号51において、論理グループ10のアドレスを付加することにより、論理グループ10を構成する各SCSIドライブ12において、SCSI内Addr44を任意とすることが可能となる。
本実施例では、書き込み時の回転待ち時間を減少させる目的で、書き込みデータを一旦二重化してSCSIドライブ12に書き込み、後の適当なタイミングでパリティを更新し、パリティの更新後は二重化した書き込みデータの一方を開放する方法について説明した。本発明は、上記のような性能向上の観点とは別に、以下に示すような応用例も考えられる。
パリティによる信頼性と二重化による信頼性では、二重化による信頼性の方が、信頼性向上のために必要とする容量は大きいが、信頼性は高くなる。この特徴を活かし、本発明の応用として、最新に書き込まれたデータ、または、頻繁に書き込み要求が発行されるデータについては、二重化されているため、高信頼とし、あまり書き込み要求が発行されないデータについては、二重化ほど高信頼ではないが、信頼性向上のために必要とする容量が二重化と比較して少なくて済む、パリティにより信頼性を確保する。
つまり、あまり書き込み要求が発行されないデータに対しては、信頼性は二重化ほど高くないがパリティを付けるだけで済む、パリティで信頼性を確保し、最新に書き込まれたデータ、または頻繁に書き込み要求が発行されるデータについては、パリティと比較して容量を多く必要とするが信頼の高い二重化で高信頼とする、二段階の信頼性のレベルを設定することも可能である。
〈実施例2〉
本発明の他の実施例を図6を中心にして説明する。本実施例では、実施例1で示したシステムにおいて、SCSIドライブ12に障害が発生した時に、その障害が発生したSCSIドライブ12内のデータを回復し、それを格納するための領域にスペース領域を使用する例を示す。
本発明では、図3に示すように、論理グループ10内の各SCSIドライブ12では、その内部の各々対応する同一SCSI内Addr44のデータにより、パリティグループを構成する。具体的には、SD#1、2、3のSCSIドライブ12内のData#1、2、3(D#1、2、3)で、PG36によりパリティ#1(P#1)が作られ、SD#6のSCSIドライブ12内に格納される。本実施例では、パリティは奇数パリティとし、Data#1、2、3(D#1、2、3)の各データにおける各々対応するビットについて1の数を数え、奇数であれば0、偶数であれば1とする(排他的論理和)。もし、SD#1のSCSIドライブ12に障害が発生したとする。この時、Data#1(D#1)は読み出せなくなる。
本実施例では、パリティグループ当りにパリティを1個しか持っていないため、1台のSCSIドライブ12の障害はデータを復元できるが、データの復元が完了する前に更にもう一台のSCSIドライブ12に障害が発生した場合、復元出来ない。そこで、この様な場合、2台目のSCSIドライブ12障害が発生する前に、残りのData#2、3(D#2、3)とパリティ#1(P#1)をキャッシュメモリ7に転送し、MP1 20がPG36に対し、Data#1(D#1)を復元する回復処理を早急に行うように指示する。この回復処理を行ないData#1(D#1)を復元した後は、MP1 20は、このData#1(D#1)をSD#4または6のどちらかのスペース領域に格納する。
これにより、スペース領域を実施例1で示したような、書き込み処理時の回転待ち時間を短縮させるためだけではなく、SCSIドライブ12に障害が発生したときに、復元したデータを格納するためのスペア領域としても活用する。この様に、MP1 20が、スペース領域に回復したData#1(D#1)を格納した後は、キャッシュメモリ7にある図3に示すアドレステーブル40において、スペースドライブ番号51の中で、回復データを格納した方のスペースドライブ番号51を削除し、この削除したドライブ番号に対する論理アドレス45に、回復したData#1(D#1)の論理アドレス45の内容を複写する。
図6に示すように、SD#1のSCSIドライブ12には、Data#1(D#1)の他にスペース領域、パリティ、Data#13、16、19、22(D#13、16、19、22)が格納されている。スペース領域については、回復処理を行ない復元する必要は無い。
パリティ#3(P#3)は、SD#3、4、5のSCSIドライブ12から、Data#7、8、9(D#7、8、9)を読み出して新たに作成し、SD#2か6のSCSIドライブ12のスペース領域に格納する。Data#13(D#13)は、SD#3、5、6のSCSIドライブ12からパリティ#5(P#5)、Data#14、15(D#14、15)を読み出して、回復処理を行ない復元し、SD#2または4のSCSIドライブ12のスペース領域に格納する。
Data#16(D#16)は、SD#2、4、6のSCSIドライブ12からData#17(D#17)、パリティ#6(P#6)、Data#18(D#18)を読み出して、回復処理を行ない復元し、SD#3または5のSCSIドライブ12のスペース領域に格納する。以下、同様に、Data#19、22(D#19、22)と回復処理を行ない、論理グループ10内のスペース領域に格納していく。
この様に、SD#2、3、4、5、6のSCSIドライブ12内のスペース領域に、SD#1のSCSIドライブ12の回復データを全て格納した後は、スペース領域が論理グループ10において一つしかないため、実施例1で述べたような書き込み時の回転待ちを短くすることは出来ないため、従来のアレイディスクであるRAIDのレベル5の処理となる。また、SD#1のSCSIドライブ12の回復データを全て格納した後は、SD#2、3、4、5、6のSCSIドライブ12の中で更にもう一台SCSIドライブ12に障害が発生した場合、同様にその障害が発生したSCSIドライブ12内のデータについて回復処理を行ない、残りのスペース領域に格納し、処理を行える。
この様にして、論理グループ10内のスペース領域を全て使い切ってしまった場合は、障害SCSIドライブ12を正常のSCSIドライブ12に交換し、この交換した正常なSCSIドライブ12は全てスペース領域として論理グループを再構成する。
障害SCSIドライブ12を正常のSCSIドライブ12に交換した直後は、スペース領域が特定SCSIドライブ12に集中した形になっているため、このSCSIドライブ12が使用できずに待たされることが多くなり、ネックとなるため、実施例1で示した回転待ち時間を短縮する効果が効率的に発揮できない。しかし、時間が立つにつれて、スペース領域が分散されてSCSIドライブ12障害前の状態に戻っていき、次第に解消されていく。もし、この時間が問題となる場合は、SCSIドライブ12に障害が発生したことを感知した場合、正常なSCSIドライブ12に交換して、この交換した正常なSCSIドライブ12に障害が発生したSCSIドライブ12内のデータとパリティをユーザが復元することも可能とする。なお、この時スペース領域に関しては復元せずにスペース領域として空けておく。
本実施例では、この回復処理とスペース領域へ復元したデータを書き込む処理をMP1 20が独自に行う。この様に独自に行うことにより、SCSIドライブ12に障害が発生した場合、障害が発生したSCSIドライブ12を正常なSCSIドライブ12に交換し、回復したデータを書き込むのと比較して、本発明では、システムを使用するユーザがSCSIドライブ12に障害が発生すると直ぐに正常なSCSIドライブ12と交換する必要が無いため、ユーザの負担が軽くなる。
〈実施例3〉
本発明の第三の実施例を図7〜図11により説明する。
本実施例では、図7、8に示すように、論理グループ10単位にサブDKC11を設け、その内部に図9に示すように実施例1、2において示したキャッシュメモリ7内のアドレステーブル40と、RPC27、PG36、サブキャッシュ32と、それらを制御するマイクロプロセッサMP3 29を持たせたものを示す。本実施例におけるデータの処理手順は、実施例1および2で示したものと同様である。
以下、実施例1、2で示した処理手順と異なる部分のみを図10および図11を用いて示す。
本実施例では、図9に示すように、実施例1、2で示したキャッシュメモリ7内のアドレステーブル40をサブDKC11内のデータアドレステーブル(DAT)30に格納する。DAT30は、格納されているテーブルの形式や機能は実施例1、2と同様であるが、異なるのは、データを格納するSCSIドライブアドレス42が論理グループ10に限られている点と、メモリがアドレステーブル40を格納するデータを格納するのとは別の専用メモリである。ADC2内のGAT23は、CPU1から指示されたCPU指定アドレスから、そのCPU指定アドレスが指示する場所がADU3内のどの論理グループ10かを判定するのみである。キャッシュメモリ7内には、その特別な領域に、図10に示すような論理グループテーブル(LGT)60が格納されている。
LGT60は、図10に示すように、CPU1から指定されるCPU指定ドライブ番号41とCCHHR46に対応して、論理グループアドレス61が決定できるテーブルとなっている。また、LGT60には、CPU指定アドレスに対応するデータがキャッシュメモリ7内に存在する場合、そのデータのキャッシュメモリ7内のアドレスをキャッシュアドレス47に登録でき、また、キャッシュメモリ7内にデータが存在する場合はオン(1)とし、キャッシュメモリ7内に存在しない場合はオフ(0)とするキャッシュフラグ48が用意されている。
ユーザは、初期設定する際に自分の使用可能な容量に対する領域を確保するが、その際に、ADC2のMP1 20が、LGT60により論理グループ10を割当てる。この時、MP1 20は、LGT60にユーザが確保するために指定したCPU指定アドレスに対応する領域を登録する。
そこで、実際の読み出し、書き込み処理においては、GAT23は、LGT60により、CPU1から指定してきたCPU指定アドレスに対応した論理グループ10を認識することが可能となる。読み出し時は、GAT23が、LGCにより論理グループ10を確定し、その確定した結果をMP1 20に報告し、MP1 20が、この当該論理グループ10に対し読み出し要求を発行するようにDrive IF28に指示する。MP1 20から指示を受けたDrive IF28は、当該論理グループ10のサブDKC11に対し、読み出し要求とCPU1が指定するCPU指定アドレスを発行する。
サブDKC11では、マイクロプロセッサであるMP3 29が、この読み出し要求のコマンドとCPU指定アドレスを受け付け、実施例1と同様に、DAT30を参照して、Drive IF28から送られてきたCPU指定アドレスを当該データが格納されている論理グループ10内の論理アドレス45に変換し、この論理アドレス45から当該SCSIドライブアドレス42(SCSIドライブ番号43とその中のSCSI内Addr44)を確定する。
このアドレスの確定後、MP3 29は、当該SCSIドライブ12に対して読み出し要求を発行する。MP3 29から読み出し要求を発行されたSCSIドライブ12では、SCSI内Addr44へシーク、回転待ちを行ない、当該データの読み出しが可能になり次第、当該データをドライブアダプタ回路(Drive Adp)34に転送し、Drive Adp34は、サブキャッシュメモリ32に格納する。
サブキャッシュメモリ32に当該データの格納が完了した後、Drive Adp34は、MP3 29に格納報告を行ない、MP3 29は、DAT30の当該データの当該論理アドレス45内の当該キャッシュフラグ48をオン(1)とする。後に、当該キャッシュフラグ48がオン(1)のデータに対して読み出しまたは書き込み要求が発行された場合、サブキャッシュ32内で処理を行う。実施例1と同様に、MP3 29によるDAT30の更新が終了すると、MP3 29は、ADC2内のDrive IF28に対しデータ転送可能という応答を行ない、Drive IF28は、この応答を受け取るとMP1 20に対し報告する。
MP1 20は、この報告を受け取ると、キャッシュメモリ7への格納が可能なら、Drive IF28に対しサブDKC11からデータを転送するように指示する。Drive IF28では、MP1 20からの指示を受けると、サブDKC11のMP3 29に対し読み出し要求を発行する。この読み出し要求を受けたMP3 29は、サブキャッシュアダプタ回路(SCA)31に対しサブキャッシュ32から当該データを読みだすように指示し、SCA31は、実際にデータを読み出してDrive IF28にデータを転送する。Drive IF 28がデータを受け取った後は、実施例1、2で示した処理を行う。
一方、書き込み時は、読み出し時と同様に、当該論理グループ10を確定し、MP1 20は、Drive IF28に対し、当該論理グループ10のMP3 29に対し書き込み要求を発行するように指示する。当該論理グループ10内のMP3 29は、書き込み要求を受け付け、書き込みデータをサブキャッシュ32に格納した後は、図5のフローチャートに従って、実施例1、2と同様に処理を行う。本実施例では、実施例1、2の効果を実現することが可能である。
以上、磁気ディスク装置を用いたシステムを実施例として説明したが、本発明は、光ディスク装置を用いたシステムにおいても、同様な効果を発揮することが可能である。
第1の実施例の全体構成図。 第1の実施例のクラスタ内構成図。 アドレス変換テーブルの説明図。 書き込み処理時のデータ移動説明図。 書き込み処理フローチャート(1)。 データ回復処理説明図、パリティグループを構成する各データのディスク上での位置説明図。 第3の実施例の全体構成図。 第3の実施例のクラスタ内構成図。 第3の実施例のサブDKC内構成図。 論理グループテーブル説明図。 RAID Level5における更新処理説明図。 RAID5における書き込み処理タイミングチャート。 書き込み処理フローチャート(2)。 パリティ作成処理フローチャート。
符号の説明
1:CPU、2:レイディスクコントローラ(ADC)、3:アレイディスクユニット(ADU)、4:外部インターフェースパス、5:チャネルパスディレクタ、6:チャネルパス、7:キャッシュメモリ、8:ドライブパス、9:アレイディスクユニットパス、10:論理グループ、12:SCSIドライブ、13:クラスタ、14:ドライブ側キャッシュアダプタ(C Adp)、15:インターフェースアダプタ、16:チャネルパススイッチ、17:制御信号線、18:データ線、19:パス、20:マイクロプロセッサ1(MP1)、21:チャネルインターフェース(CH IF)回路、22:データ制御回路(DCC)、23:グループアドレス変換回路(GAT)、24:チャネル側キャッシュアダプタ(C Adp)、28:ドライブインターフェース回路(Drive IF)、29:マイクロプロセッサ3(MP3)、30:データアドレステーブル40、31:サブキャッシュアダプタ、34:ドライブアダプタ(Drive Adp)、35:ドライブパス、36:パリティ生成回路、40:アドレス変換用テーブル(アドレステーブル)、41:CPU指定ドライブ番号、42:SCSIドライブアドレス、43:SCSIドライブ番号、44:SCSI内Addr、45:論理アドレス、46:CCHHR、47:キャッシュアドレス、48:キャッシュフラグ、49:無効フラグ、50:パリティドライブ番号、51:スペースドライブ番号、52:ドライブフラグ、53:SDフラグ、60:論理グループテーブル、61:論理グループアドレス。

Claims (7)

  1. 外部装置から入力されたデータをキャッシュメモリに一時的に記憶した後、上記データを記憶装置に記憶しておき上記記憶装置に記憶されているデータを上記外部装置に選択的に出力可能にした記憶装置におけるデータ格納方法であって、
    上記外部装置から入力された上記キャッシュメモリの記憶データを記記憶装置の第1の領域に第1の冗長レベル形式で格納し、
    上記外部装置との間でのデータ入力またはデータ出力の頻度に応じて、上記第1の領域の格納データと、上記記憶装内で上記第1の領域と対応付けられた第2の領域の記憶データとを利用して、冗長データ配置形式が異なる第2の冗長レベル形式への変換処理を実行し、
    上記第1の記憶領域で不要となった上記第1の冗長レベル形式のデータを無効にすることを特徴とするデータ格納方法。
  2. 請求項1に記載のデータ格納方法であって、
    前記第1の冗長レベル形式はデータの二重化を利用するものであり、前記第2の冗長レベル形式がパリティを利用するものであることを特徴とするデータ格納方法。
  3. 請求項1に記載のデータ格納方法であって、
    前記記憶装置は、論理的にグルーピングされた複数のディスクを有することを特徴とするデータ格納方法。
  4. データを記憶する記憶装置と、上記記憶装置を制御するコントローラとを有するデータ記憶システムであって、
    上記コントローラが、当該データ記憶システムに接続される外部処理装置からの入力データを一時的に記憶するキャッシュメモリを有し、
    上記コントローラが、上記外部処理装置から入力された上記キャッシュメモリの記憶データを記記憶装置の第1の領域に第1の冗長レベル形式で格納し、上記外部処理装置との間でのデータ入力またはデータ出力の頻度に応じて、上記第1の領域の格納データを読み出し、冗長データ配置形式が異なる第2の冗長レベル形式への変換処理を実行し、変換結果を上記記憶装内で上記第1の領域と対応付けられた第2の領域に反映した後、上記第1の記憶領域で不要となった上記第1の冗長レベル形式のデータを無効にすることを特徴とするデータ記憶システム。
  5. 請求項4に記載のデータ記憶システムであって、
    前記第1の冗長レベル形式は、データの二重化を利用するものであり、前記第2の冗長レベル形式がパリティを利用するものであり、前記第1の領域から読み出されたデータに応じて、前記第2の領域に記憶されたパリティが書き換えられることを特徴とするデータ記憶システム。
  6. 請求項4に記載のデータ記憶システムであって、
    前記記憶装置は、論理的にグルーピングされた複数のディスクを有することを特徴とするデータ記憶システム。
  7. データ記憶システムであって、
    複数のディスクで構成される互いに対応付けられた複数の記憶領域を有する記憶装置と、上記記憶装置を制御するコントローラとからなり、
    上記コントローラが、外部処理装置からの入力されるデータを一時的に記憶するキャッシュメモリを備え、
    上記コントローラが、上記外部処理装置からの入力データを上記キャッシュメモリに記憶した後、該データを上記複数の記憶領域のうちの第1の記憶領域に二重化して格納しておき、上記外部処理装置との間でのデータ入力またはデータ出力の頻度に応じて、上記二重化されたデータの一方を読み出し、該読み出しデータに応じて上記複数の記憶領域のうちの第2の記憶領域に格納されたパリティを修正することによって、上記データを上記第2の記憶領域に所属する冗長レベルの異なるデータ格納形式に変更し、上記二重化された他方のデータの記憶領域と上記第2の記憶領域で不要となった旧データの記憶領域を空き領域として利用することを特徴とするデータ記憶システム。
JP2005208208A 2005-07-19 2005-07-19 ディスクアレイ装置及びその制御方法 Expired - Lifetime JP3793544B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005208208A JP3793544B2 (ja) 2005-07-19 2005-07-19 ディスクアレイ装置及びその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005208208A JP3793544B2 (ja) 2005-07-19 2005-07-19 ディスクアレイ装置及びその制御方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2003115268A Division JP3718506B2 (ja) 2003-04-21 2003-04-21 ディスクアレイ装置及びその制御方法

Publications (2)

Publication Number Publication Date
JP2005322271A JP2005322271A (ja) 2005-11-17
JP3793544B2 true JP3793544B2 (ja) 2006-07-05

Family

ID=35469453

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005208208A Expired - Lifetime JP3793544B2 (ja) 2005-07-19 2005-07-19 ディスクアレイ装置及びその制御方法

Country Status (1)

Country Link
JP (1) JP3793544B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101259644B1 (ko) 2006-08-09 2013-04-30 엘지전자 주식회사 다중 배터리드라이버 제어방법 및 장치
JP5279785B2 (ja) * 2010-09-17 2013-09-04 株式会社東芝 コントローラ、記憶装置、およびプログラム

Also Published As

Publication number Publication date
JP2005322271A (ja) 2005-11-17

Similar Documents

Publication Publication Date Title
US6049890A (en) Disk array system and its control method
JP3176157B2 (ja) ディスクアレイ装置及びそのデータ更新方法
US7600152B2 (en) Configuring cache memory from a storage controller
US6006342A (en) Failover and failback system for a direct access storage device
US6061750A (en) Failover system for a DASD storage controller reconfiguring a first processor, a bridge, a second host adaptor, and a second device adaptor upon a second processor failure
JP3742494B2 (ja) 大容量記憶装置
US7975168B2 (en) Storage system executing parallel correction write
US6330642B1 (en) Three interconnected raid disk controller data processing system architecture
JP3129732B2 (ja) コピーバックキャッシュを有する記憶装置アレイ
JP6009095B2 (ja) ストレージシステム及び記憶制御方法
US6604171B1 (en) Managing a cache memory
US6591335B1 (en) Fault tolerant dual cache system
US6886075B2 (en) Memory device system and method for copying data in memory device system
US20070088975A1 (en) Method and apparatus for mirroring customer data and metadata in paired controllers
JP2005301419A (ja) ディスクアレイ装置およびそのデータ処理方法
US7130973B1 (en) Method and apparatus to restore data redundancy and utilize spare storage spaces
JP3793544B2 (ja) ディスクアレイ装置及びその制御方法
JP2004213470A (ja) ディスクアレイ装置及びディスクアレイ装置におけるデータ書き込み方法
JPH06230903A (ja) ディスクアレイ装置の障害回復方法、およびディスクアレイ装置
JP3256329B2 (ja) ディスクアレイ装置及びその制御方法
JP3718506B2 (ja) ディスクアレイ装置及びその制御方法
JP3542577B2 (ja) ディスクアレイ装置及びその制御方法
JP3234211B2 (ja) ディスクアレイシステム
JP3250859B2 (ja) ディスクアレイ装置、コンピュータシステム及びデータ記憶装置
JPH1031563A (ja) 記憶装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050818

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060209

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: 20060322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060407

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090414

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100414

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110414

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120414

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120414

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130414

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20140414

Year of fee payment: 8

EXPY Cancellation because of completion of term