(57)【特許請求の範囲】
【請求項１】
複数のドライブと、該ドライブ群を管理する制御装置とを備え、論理グループを形成する複数の書き込みデータを上記ドライブ群中の異なるドライブに分散して格納し、論理グループ毎に少なくとも１つの予備領域を割り当てておき、生成された誤り訂正符号を該誤り訂正符号の生成に関与したデータ格納用のドライブとは別のドライブに格納する記憶装置の制御方法において、上記制御装置が、
上記ドライブ群のうちの何れかのドライブに予備領域へのデータの書き込みを指示し、上記ドライブによるデータ書き込み処理が完了した時、上位装置にデータの書き込み完了を通知しておき、その後の所定のタイミングで、上記予備領域への書き込みデータを有効データとし、従前のデータの格納領域を予備領域に切替え、該書き込みデータが属する論理グループにおける誤り訂正符号の更新処理を実行し、
前記何れかのドライブに障害が発生した時、障害ドライブ内のデータまたは誤り訂正符号を回復処理により復元し、復元されたデータまたは誤り訂正符号を予め各論理部ループに割り当てられた予備領域に書き込んだ後、該障害ドライブを正常なドライブに交換可能にし
障害ドライブが正常ドライブに交換された後は、上記正常ドライブが全て予備領域により構成されているものとして論理グループを再構成することを特徴とする記憶装置の制御方法。
【請求項２】
複数の書き込みデータと、これらのデータから生成される誤り訂正符号とによって形成される複数の論理グループを有し、各論理グループに含まれるデータと誤り訂正符号とを異なる複数のドライブに分散して格納し、論理グループ毎に、上記複数のドライブとは別のドライブに少なくとも１つの予備領域を割り当てておき、論理グループ内の１つデータについて新たなデータへの書き換え要求があった時、制御装置が、上記新たなデータを上記論理グループの予備領域に格納した後、従前のデータの格納領域を予備領域に切替えるようにした記憶装置におけるデータの格納方法において、上記制御装置が、
上記何れかのドライブに予備領域へのデータの書き込みを指示し、上記予備領域へのデータ書き込み処理が完了した時、上位装置にデータの書き込み完了を通知しておき、その後の所定のタイミングで、上記予備領域への書き込みデータを有効データとして、該書き込みデータが属する論理グループにおける誤り訂正符号の更新処理を実行し、
前記何れかのドライブに障害が発生したことを感知した時、障害ドライブを正常ドライブに交換可能にし、
障害ドライブが正常ドライブに交換された後、障害ドライブ内のデータまたは誤り訂正符号を各論理グループの他のドライブに格納されたデータまたは誤り訂正符号に基づく回復処理によって復元し、復元されたデータまたは誤り訂正符号を上記正常ドライブに書き込むことを特徴とする記憶装置の制御方法。
【請求項３】
前記論理グループ毎に、データと誤り訂正符号を格納した前記複数のドライブとは別の少なくとも２つのドライブに予備領域となるスペース領域を割り当てておき、
前記新たなデータの書き込み処理において、新たなデータを上記各予備領域に二重化して書き込み、
前記誤り訂正符号の更新処理において、上記二重化された書き込みデータの一方と、該書き込みデータに対応する従前データを無効にすることによって、新たな予備領域となるスペース領域を生成し、
最新データについては二重化によって信頼性を確保し、その他のデータについては誤り訂正符号によって信頼性を確保するようにしたことを特徴とする請求項１または２に記載の記憶装置の制御方法。
【請求項４】
制御装置によって制御される複数のドライブを備え、それぞれ複数の書き込みデータと誤り訂正符号とからなる複数の論理グループを形成しておき、論理グループ毎に、各データと誤り訂正符号を異なる複数のドライブに分散して格納し、データ格納用または誤り訂正符号格納用となるドライブとは別に少なくとも１つのドライブに予備領域となるスペース領域を割り当てておき、上位装置から、論理グループ内の１つデータについて新たなデータへの書き換え要求があった時、上記制御装置が、上記新たなデータを上記論理グループの予備領域に格納した後、従前のデータの格納領域を予備領域に切替え、各論理グループの予備領域を複数のドライブに分散させるようにしたディスクアレイ装置において、上記制御装置が、
上記何れかのドライブに予備領域へのデータの書き込みを指示し、上記書き込み処理が完了した時、上位装置にデータの書き込み完了を通知するデータ書き込み処理手段と、
上記完了通知の後、所定のタイミングで、上記予備領域の書き込みデータを有効データとして、該書き込みデータが属する論理グループにおける誤り訂正符号の更新処理を実行する誤り訂正符号処理手段と、
何れかの論理グループにおける１つのドライブに障害が発生した時、残りの正常ドライブに格納されているデータと誤り訂正符号から、障害ドライブに蓄積されていたデータまたは誤り訂正符号を復元し、復元されたデータまたは誤り訂正符号を上記論理グループの予備領域に書き込むための手段とを備えたことを特徴とするディスクアレイ装置。
【請求項５】
制御装置によって制御される複数のドライブを備え、それぞれ複数の書き込みデータと誤り訂正符号とからなる複数の論理グループを形成しておき、論理グループ毎に、各データと誤り訂正符号を異なる複数のドライブに分散して格納し、データ格納用または誤り訂正符号格納用となるドライブとは別の少なくとも２つのドライブに予備領域となるスペース領域を割り当てておき、上位装置から、論理グループ内の１つデータについて新たなデータへの書き換え要求があった時、上記制御装置が、上記新たなデータを上記論理グループの複数の予備領域に多重化して格納した後、従前のデータが格納されていた領域を予備領域に切替えることによって、各論理グループの予備領域を複数のドライブに分散させるようにしたディスクアレイ装置において、上記制御装置が、
上記何れかのドライブに予備領域へのデータの書き込みを指示し、上記書き込み処理が完了した時、上位装置にデータの書き込み完了を通知するデータ書き込み処理手段と、
上記完了通知の後、所定のタイミングで、上記書き込みデータが属する論理グループにおける誤り訂正符号の更新処理を実行する誤り訂正符号処理手段と、
誤り訂正符号の更新処理を実行前に何れかのドライブに障害が発生した時、障害ドライブで失われたデータおよび誤り訂正符号を正常ドライブに格納されている同一論理グループの他のデータおよび誤り訂正符号から復元し、上記障害ドライブ内の予備領域で失われた多重化データについては、正常ドライブの予備領域に格納されている他方の多重化データから復元するための手段とを備え、
上記誤り訂正符号処理手段が、上記復元されたデータ、誤り訂正符号および多重化データに基づいて誤り訂正符号の更新処理を実行することを特徴とするディスクアレイ装置。
【請求項６】
前記制御装置が、前記ドライブ障害発生時に復元されたデータまたは誤り訂正符号を正常ドライブにある各論理グループの予備領域に書き込むための手段を備えたことを特徴とする請求項５に記載のディスクアレイ装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はコンピュ−タシステムに係り、特に高性能な入出力動作を可能とするディスクアレイシステムに関する。
【０００２】
【従来の技術】
現在のコンピュータシステムにおいては、ＣＰＵ等の上位側が必要とするデ−タは２次記憶装置に格納され、ＣＰＵが必要とする時に応じ２次記憶装置に対してデ−タの書込み、読み出しを行っている。この２次記憶装置としては一般に不揮発な記憶媒体が使用され、代表的なものとして磁気ディスク装置（以下ドライブとする）、光ディスクなどがあげられる。
【０００３】
近年高度情報化に伴い、コンピュータシステムにおいて、２次記憶装置の高性能化が要求されてきた。その一つの解として、多数の比較的容量の小さなドライブにより構成されるディスクアレイが考えられている。
【０００４】
「D.Patterson,G.Gibson,and R.H.Kartz;A Case for Redundant Arrays of Inexpensive Disks(RAID),in ACM SIGMOD Conference,Chicago,IL,(June1988)」において、データを分割して並列に処理を行うディスクアレイ（レベル３）とデータを分散して、独立に扱うディスクアレイ（レベル５）について、その性能および信頼性の検討結果が報告されている。現在この論文に書かれている方式が最も一般的なディスクアレイと考えられている。
【０００５】
以下に、データを分散して、独立に扱うディスクアレイ（レベル５）について説明する。レベル５のディスクアレイでは、個々のデータを分割せずに独立に扱い、多数の比較的容量の小さなドライブに分散して格納するものである。現在、一般に使用されている汎用大型コンピュータシステムの２次記憶装置では、１ドライブ当りの容量が大きいため、他の読み出し／書込み要求に当該ドライブが使用されて、そのドライブを使用できずに待たされることが多く発生した。このタイプのディスクアレイでは、汎用大型コンピュータシステムの２次記憶装置で使用されている大容量のドライブを、多数の比較的容量の小さなドライブで構成し、データを分散して格納してあるため、読み出し／書込み要求が増加してもディスクアレイの複数のドライブで分散して処理するため、読み出し／書込み要求がまたされることが減少する。しかし、ディスクアレイは、このように多数のドライブにより構成されるため、部品点数が増加し障害が発生する確率が高くなる。そこで、信頼性の向上を図る目的で、パリティを用意する必要がある。
【０００６】
このパリティにより、データを格納したドライブに障害が発生した場合、その障害ドライブ内のデータを復元することが可能となる。ディスクアレイでは、データからパリティを作成しデータと同様にドライブに格納しておく。この時、パリティは、パリティの作成に関与したデータとは別のドライブに格納される。
【０００７】
これらのディスクアレイでは、現在一般に使用されている汎用大型コンピュータシステムと同様、２次記憶装置内では、個々のデータの格納場所（アドレス）が予め指定したアドレスに固定され、ＣＰＵから当該データの読み出し、または書込みをする場合、この固定されたアドレスへアクセスすることになっている。この分散して格納するディスクアレイ（レベル５）では、ストレ−ジテクノロジコーポレーション（以下ＳＴＫとする）から製品発表がされている。ＰＣＴ国際公開ＷＯ ９１／２００７６号公報では、レベル５の基本アーキテクチャにおいて、動的に変更可能なアドレスのテーブルを用意することにより、データ圧縮を行いデータの書込み処理において、トラック単位で書込み先のアドレスを動的に変換する方法について開示されている。
【０００８】
また、特開平４−２３０５１２号公報にはレベル５において、書き込み時に書き込むデータと、この書き込みにより更新したパリティを、それぞれ別の場所に書き込む方法について開示されている。さらに、ＩＢＭ社のディスクアレイ（９３３７）では、レベル５においてＷＡＤ（ライト  アシスト  デバイス）を設けることが発表されている。
【０００９】
【特許文献１】
特開平４−２３０５１２号公報
【特許文献２】
ＰＣＴ国際公開ＷＯ ９１／２００７６号公報
【非特許文献１】
「D.Patterson,G.Gibson,and R.H.Kartz;A Case for Redundant Arrays of Inexpensive Disks(RAID),in ACM SIGMOD Conference,Chicago,IL,(June1988)」
【００１０】
【発明が解決しようとする課題】
現在の汎用大型計算機システム等では、ドライブにより構成される２次記憶装置内で、ＣＰＵから転送されてくるデータは、個々のデータの格納場所（アドレス）が予め指定したアドレスに固定され、ＣＰＵから当該データを読み出し、または書込む場合は、この固定されたアドレスへアクセスすることになる。これは、ディスクアレイにおいても同じである。データを分割して並列に処理を行うディスクアレイ（レベル３）では、このようにアドレスを固定しても影響は無いが、データを分散して、独立に扱うディスクアレイ（レベル５）では、アドレスを固定した場合、書込み時に大きな処理オーバヘッドが必要になる。以下それについて説明する。
【００１１】
図１１は前記公知例でD.Pattersonらが提案したＲＡＩＤに述べられている、データを分散して、独立に扱うディスクアレイ（レベル５）内部のデータアドレスを示している。この各アドレスにあるデータは、１回の読み出し／書込み処理される単位で、個々のデータは独立している。また、ＲＡＩＤで述べられているアーキテクチャでは、データに対するアドレスは固定されている。前述したように、このようなシステムでは、信頼性を向上するためパリティを設定することが不可欠である。本システムでは、各ドライブ内の同一アドレスのデータによりパリティが作成される。すなわち、ドライブ＃１から４までのアドレス（１，１）のデータによりパリティが作成され、パリティを格納するドライブの（１，１）に格納される。本システムでは、読み出し／書込み処理は、現在の汎用大型計算機システムと同様に、各ドライブに対し当該データをアクセスする。
【００１２】
このようなディスクアレイにおいて、例えば、ドライブ＃３のアドレス（２，２）のデータを更新する場合、まず、更新される前のドライブ＃３の（２，２）のデータと、パリティを格納してあるドライブの（２，２）のパリティとを読み出し（１）、これらと更新する新しいデータとで排他的論理和をとり、新たなパリティを作成する（２）。パリティの作成完了後、更新する新しいデータをドライブ＃３の（２，２）に、新パリティをパリティを格納するドライブの（２，２）に格納する（３）。
【００１３】
図１２に示すように、このようなレベル５のディスクアレイでは、データの格納されているドライブとパリティの格納されているドライブから古いデータとパリティを読み出すため、ディスクを平均１／２回転待ち、それから読み出してパリティを作成する。この新しく作成したパリティを書き込むため更に一回転必要となり、データを書き替える場合最低で１．５回転待たなければならない。ドライブにおいては１．５回転ディスクの回転を待つということは非常に大きなオーバヘッドとなる。このような書込み時のオーバヘッドを削減するため、書込み先のアドレスを動的に変換する方法が考えられ、ＷＯ  ９１／２００７６に開示されている。
【００１４】
また、前記特開平４−２３０５１２においても、書き込み時において書き込みデータをそのまま、書き込みデータが書き込まれるアドレスではなく、別のアドレスに書き込むことにより、書き込みオーバヘッドを削減する方法について開示されている。ＣＰＵ側から書き込むデータが送られてくると、直ぐにパリティの更新を行ない、更新後のパリティを書き込む。このように、レベル５のディスクアレイでは、読み出しと比較して、書き込み時ではパリティ生成とこの生成したパリティを書き込む処理のオーバヘッドが非常に大きいため、ＣＰＵからの読み出し、書き込み要求が多いときには、この処理オーバヘッドが性能低下の大きな原因となる。
【００１５】
本発明の目的は、レベル５のディスクアレイ装置において、書き込み時における処理のオーバヘッドを減少させて、ディスクアレイ装置の性能向上を図ることにある。
【００１６】
本発明の他の目的は、障害ドライブ内のデータ復元用スペアドライブを装置の性能向上に利用することによってドライブ資源の有効活用を図ることにある。
【００１７】
【課題を解決するための手段】
本発明では、パリティグループを構成するドライブと二重化領域（スペース領域）のドライブにより論理グループを構成し、このスペース領域を有効に活用することにより、高信頼性を保ちながら、しかも、書き込み時のパリティ更新の開始時間を遅らせ、後のＣＰＵからの読み出しまたは書き込み要求が少ないときにパリティ生成を行う。
【００１８】
具体的には、書き込み時に、論理グループ１０を構成するＳＣＳＩドライブ１２の中で、書き込むデータ（新データ）をとりあえずスペース領域に二重化して格納する。ＣＰＵ１に対してはこの時点で書き込み処理を完了したと報告する。
【００１９】
また、パリティの作成および当該ＳＣＳＩドライブ１２へのパリティの書き込みは、新データのＳＣＳＩドライブへの書き込みとは独立のタイミングで処理する。具体的には、ＡＤＣ２のＭＰ１  ２０が当該論理グループ１０に対するＣＰＵ１からの読み出し／書き込み要求をカウントし、予めユーザまたはシステム管理者が設定した数より少ない場合で、しかも当該ＳＣＳＩドライブ１２に対し読み出し、または書き込み要求が発行されていないときにパリティの作成を行い、パリティの作成完了後、当該ＳＣＳＩドライブ１２に対しパリティを書き込む。
【００２０】
パリティの書き込みの他の方法として、一定時間毎の割込み処理で行なってもよい。一日の中でＣＰＵからの読み出し、または書き込み要求数の少ない時間帯、あるいは一月の中で少ない日を予測し、スケジュール化しておけばよい。
【００２１】
パリティの作成およびそのパリティの当該ＳＣＳＩドライブ１２へのパリティの書き込みが完了する前に、当該論理グループ１０において任意の１台のＳＣＳＩドライブに対し障害が発生し、その内部のデータが読み出せなくなった場合は、二重化データ以外のデータが格納されているＳＣＳＩドライブ１２に対しては、前のパリティと、残っているデータから障害が発生したＳＣＳＩドライブ１２内のデータを回復することが可能で、二重化されている新しいデータにおいては、障害が発生していない方のＳＣＳＩドライブ１２内の新データにより回復することが可能である。
【００２２】
【作用】
本発明では、上記のように、データの書き込みとパリティの作成およびＳＣＳＩドライブ１２への書き込みとを独立させることにより、ユーザ（ＣＰＵ）からは書き込み時のパリティ作成によるオーバヘッドはなくなる。これは、ＣＰＵからの読み出しまたは書き込み要求数には時間的変動があるため、読み出しまたは書き込み要求数が多いときには、書き込み処理におけるパリティの更新をその都度行わず、データの書き込みが完了した時点でＣＰＵには終了を報告し、比較的読み出しまたは書き込み要求の数が少ないときまでパリティの更新を遅らせる。このパリティの更新は、ＣＰＵ側の関知はなく、ディスクアレイコントローラ２が独自に行う。
【００２３】
このため、ＣＰＵ側から見たとき、従来のディスクアレイ（ＲＡＩＤ方式）では、図１２に示すように、書き込み時に平均１．５回転の回転待ち時間を必要としたのが、本発明によれば、平均０．５回転の回転待ち時間で済む。また、信頼性の面から見ても、従来のディスクアレイ（ＲＡＩＤ方式）と比較し、同等に向上させることが可能となる。
【００２４】
【実施例】
〈実施例１〉
以下、本発明の一実施例を図１〜図５及び図１３により説明する。
【００２５】
図１において、本実施例は、ＣＰＵ１、ディスクアレイコントローラ（以下ＡＤＣ）２、ディスクアレイユニット（以下ＡＤＵ）３により構成される。ＡＤＵ３は、複数の論理グループ１０により構成され、個々の論理グループ１０は、ｍ台のＳＣＳＩドライブ１２と、各々のＳＣＳＩドライブ１２とＡＤＣ２を接続するドライブパス９−１から９−４により構成される。なお、このＳＣＳＩドライブ１２の数は、本発明の効果を得るには特に制限は無い。この論理グループ１０は障害回復単位で、この論理グループ１０内の各ＳＣＳＩドライブ１２内の各データによりパリティを作成する。本実施例では、ｍ−１台の個々のＳＣＳＩドライブ１２内のデータから各々のパリティが作成される。
【００２６】
次に、ＡＤＣ２の内部構造について図１を用いて説明する。ＡＤＣ２は、チャネルパスディレクタ５と、２個のクラスタ１３と、バッテリバックアップ等により不揮発化された半導体メモリであるキャッシュメモリ７により構成される。このキャッシュメモリ７には、データとアドレス変換用テーブルが格納されている。このキャッシュメモリ７およびその中のアドレス変換用テーブルは、ＡＤＣ２内の全てのクラスタにおいて共有で使用される。クラスタ１３は、ＡＤＣ２内において独立に動作可能なパスの集合で、各クラスタ１３間においては、電源、回路は全く独立となっている。クラスタ１３は、チャネル、キャッシュメモリ７間のパスであるチャネルパス６と、キャッシュメモリ７とＳＣＳＩドライブ１２間のパスであるドライブパス８−１から８−４が、それぞれ、２個ずつで構成されている。それぞれのチャネルパス６−１から６−４とドライブパス８は、キャッシュメモリ７を介して接続されている。ＣＰＵ１より発行されたコマンドは、外部インターフェースパス４を通って、ＡＤＣ２のチャネルパスディレクタ５に発行される。ＡＤＣ２は、２個のクラスタ１３により構成され、それぞれのクラスタは２個のパスで構成されるため、ＡＤＣ２は合計４個のパスにより構成される。このことから、ＡＤＣ２では、ＣＰＵ１からのコマンドを同時に４個まで受け付けることが可能である。そこで、ＣＰＵ１からコマンドが発行された場合、ＡＤＣ２内のチャネルパスディレクタ５により、コマンドの受付が可能かどうか判断する。
【００２７】
図２は、図１のチャネルパスディレクタ５と、１クラスタ１３−１内の内部構造を示した図である。図２に示すように、ＣＰＵ１からＡＤＣ２に送られてきたコマンドは、インターフェースアダプタ（以下ＩＦ  Ａｄｐ）１５により取り込まれ、マイクロプロセッサであるＭＰ１  ２０は、クラスタ内の外部インターフェースパス４の中で使用可能なパスがあるかを調べ、使用可能な外部インターフェースパス４がある場合は、ＭＰ１  ２０は、チャネルパススイッチ１６を切り換えてコマンドの受付け処理を行ない、受け付けられない場合は、受付不可の応答をＣＰＵ１へ送る。
【００２８】
本実施例では、ＡＤＵ３を構成するＳＣＳＩドライブ１２は、ＳＣＳＩインターフェースのドライブを使用する。ＣＰＵ１をＩＢＭシステム９０００シリーズのような大型汎用計算機とした場合、ＣＰＵ１からは、ＩＢＭオペレーティングシステム（ＯＳ）で動作可能なチャネルインターフェースのコマンド体系にのっとってコマンドが発行される。そこで、ＳＣＳＩドライブ１２をＳＣＳＩインターフェースのドライブを使用した場合、ＣＰＵ１からのコマンドを、ＳＣＳＩインターフェースのコマンド体系にのっとったコマンドに変換する必要が生じる。この変換は、コマンドのプロトコル変換とアドレス変換に大きく分けられる。以下にアドレス変換について説明する。
【００２９】
ＣＰＵ１から指定されるアドレスは、図１２に示すように、当該データが格納されているトラックが所属するシリンダの位置と、そのシリンダ内において当該データが格納されているトラックを決定するヘッドアドレスと、そのトラック内のレコードの位置を特定する。具体的には、要求データが格納されている当該ドライブの番号（ＣＰＵ指定ドライブ番号）と、当該ドライブ内のシリンダ番号であるシリンダアドレス（ＣＣ）と、シリンダにおいてトラックを選択するヘッドの番号であるヘッドアドレス（ＨＨ）と、レコードアドレス（Ｒ）からなるＣＣＨＨＲである。
【００３０】
従来のＣＫＤフォーマット対応の磁気ディスクサブシステム（ＩＢＭ３９９０−３３９０）では、このアドレスに従ってドライブへアクセスすれば良い。しかし、本実施例では、複数のＳＣＳＩドライブ１２により、従来のＣＫＤフォーマット対応の磁気ディスクサブシステムを論理的にエミュレートする。つまり、ＡＤＣ２は、複数のＳＣＳＩドライブ１２が従来のＣＫＤフォーマット対応の磁気ディスクサブシステムで使用されているドライブ１台に相当するように、ＣＰＵ１にみせかける。このため、 ＭＰ１  ２０は、ＣＰＵ１から指定してきたアドレス（ＣＣＨＨＲ）をＳＣＳＩドライブのアドレスに変換する。このアドレス変換には、以下に示すようなアドレス変換用のテーブル４０（以下アドレステーブルとする）が使用される。
【００３１】
ＡＤＣ２内のキャッシュメモリ７には、その内部の適当な領域に、図３に示すようなアドレステーブル４０が格納されている。本実施例では、ＣＰＵ１が指定してくるドライブは、ＣＫＤフォーマット対応の単体ドライブである。しかし、本発明では、ＣＰＵ１が単体と認識しているドライブが、実際は複数のＳＣＳＩドライブ１２により構成されるため、論理的なドライブとして定義される。このため、ＡＤＣ２のＭＰ１  ２０は、ＣＰＵ１より指定してきたアドレス（ＣＰＵ指定ドライブ番号４１とＣＣＨＨＲ４６）を、ＳＣＳＩドライブ１２に対するＳＣＳＩドライブアドレス４２（ＳＣＳＩドライブ番号４３とそのＳＣＳＩドライブ内のアドレス（以下ＳＣＳＩ内Ａｄｄｒとする）４４）に変換する。
【００３２】
アドレステーブル４０は、ＣＰＵ１が指定するＣＰＵ指定ドライブ番号４１と、ＳＣＳＩドライブアドレス４２により構成される。ＳＣＳＩドライブアドレス４２は、ＳＣＳＩドライブ１２のアドレスであるＳＣＳＩドライブ番号４３と、そのＳＣＳＩドライブ内の実際にデータが格納されているアドレスであるＳＣＳＩ内Ａｄｄｒ４４と、論理グループ１０内において、そのＳＣＳＩ内Ａｄｄｒ４４により決定されるパリティグループにおけるパリティが格納されているＳＣＳＩドライブ番号（パリティドライブ番号５０）と、二重化領域（スペース領域）が格納されているＳＣＳＩドライブ番号（スペースドライブ番号５１）により構成されている。このアドレステーブル４０では、論理アドレス４５により、ＳＣＳＩドライブ番号４３とＳＣＳＩ内Ａｄｄｒ４４を決定する。アドレステーブル４０のＳＣＳＩドライブアドレス４２に登録されているＳＣＳＩドライブ番号４３のＳＣＳＩドライブ１２により論理グループ１０は構成される。
【００３３】
この論理グループ１０内の同一ＳＣＳＩ内Ａｄｄｒ４４において、パリティが格納されているＳＣＳＩドライブ番号４３をパリティドライブ番号５０に登録し、スペース領域が確保されているＳＣＳＩドライブ番号４３をスペースドライブ番号５１に登録する。スペースドライブ番号５１は、スペース領域が確保されているＳＣＳＩドライブ番号の他に、ＳＤフラグ５３により構成される。ＳＤフラグ５３は、スペース領域に格納されているデータが有効で、書き込み処理においてスペース領域として使用できない場合はオン（１）となり、無効で、スペース領域として使用可能な場合はオフ（０）となる。この論理グループ１０は、データとこのデータと関連するパリティにより構成されるパリティグループと、スペース領域により構成される。
【００３４】
論理アドレス４５には、ＣＰＵ１から指定されるアドレスであるＣＰＵ指定ドライブ番号４１と、ＣＣＨＨＲの中でＣＣＨＨＲ４６が登録されており、それ以外に、この論理アドレス４５のデータがキャッシュメモリ７内に存在する場合の、そのデータのキャッシュメモリ７内のアドレスを格納するキャッシュアドレス４７と、キャッシュメモリ７内にその論理アドレス４５のデータを保持している場合にオン（１）が登録されるキャッシュフラグ４８と、その論理アドレス４５にはスペース領域が確保されている場合にオン（１）となる無効フラグ４９と、キャッシュメモリ７内の書き込みデータがドライブに書き込まれている場合にオン（１）となるドライブフラグ５２により構成される。
【００３５】
以上のように、アドレステーブル４０によりＣＰＵ指定ドライブ番号４１とＣＣＨＨＲ４６を論理アドレス４５に変換し、そのデータが実際に格納されているＳＣＳＩドライブ番号４３とＳＣＳＩ内Ａｄｄｒ４４を決定する。
【００３６】
例えば、図３において、ＣＰＵ１から、ＣＰＵ指定ドライブ番号４１としてＤｒｉｖｅ＃１、ＣＣＨＨＲ４６がＡＤＲ８のデータに対して要求を発行してきた場合、アドレステーブル４０において、ＣＰＵ指定ドライブ番号４１がＤｒｉｖｅ＃１の領域の各論理アドレス４５内のＣＣＨＨＲ４６を調べ、ＣＣＨＨＲ４６がＡＤＲ８の論理アドレス４５を探す。図３においては、論理アドレス４５として、Ｄａｔａ＃２３（Ｄ＃２３）でＣＣＨＨＲ４６がＡＤＲ８となっており、Ｄａｔａ＃２３（Ｄ＃２３）が当該論理アドレス４５である。
【００３７】
このＤａｔａ＃２３（Ｄ＃２３）は、アドレステーブル４０から、ＳＤ＃２のＳＣＳＩインターフェースのＳＣＳＩドライブ１２内のＳＣＳＩ内Ａｄｄｒ４４として、ＤＡＤＲ８に該当することが分かり、物理的なアドレスへ変換される。また、このＤａｔａ＃２３（Ｄ＃２３）に対応するパリティは、パリティドライブ番号５０から、Ｄａｔａ＃２３（Ｄ＃２３）と同一のＳＣＳＩ内Ａｄｄｒ４４のＤＡＤＲ８のＳＤ＃４のＳＣＳＩドライブ１２に格納されており、スペアドライブ番号５１から、ＳＤフラグ５３がオン（１）のためＳＤ＃４、５のＳＣＳＩ内Ａｄｄｒ４４がＤＡＤＲ８に二重化して格納されているデータは有効で、この領域は二重化領域（スペア領域）として使用することは禁止されている。
【００３８】
このように、ＣＰＵ１から指定されたアドレスを論理アドレス４５に変換し、実際に読み出し／書き込みを行うＳＣＳＩドライブ１２の物理的なアドレスに変換した後、ＳＤ＃２のＳＣＳＩドライブ１２のＤａｔａ＃２３（Ｄ＃２３）に対し、読み出しまたは書込み要求が発行される。この時、アドレステーブル４０において、Ｄａｔａ＃２３（Ｄ＃２３）の論理アドレス４５ではキャッシュフラグ４８がオン（１）のため、このデータはキャッシュメモリ７内のＣＡＤＲ２、１に存在する。もし、キャッシュフラグ４８がオフ（０）であれば、ＣＡＤＲ２、４のキャッシュメモリ７内には、当該データは存在しない。また、このデータは無効フラグ４９がオフ（０）のため、このデータは有効となる。さらに、ドライブフラグ５２がオン（１）のため、このデータはキャッシュメモリ７からドライブに既に書き込まれている。
【００３９】
この、アドレステーブル４０は、システムの電源をオンした時に、ＭＰ１  ２０により、論理グループ１０内のある特定のＳＣＳＩドライブ１２からキャッシュメモリ７に、ＣＰＵ１は関知せずに自動的に読み込まれる。一方、電源をオフする時は、ＭＰ１  ２０により、キャッシュメモリ７内のアドレステーブル４０を、読み込んできたＳＣＳＩドライブ１２内の所定の場所に、ＣＰＵ１は関知せずに自動的に格納する。
【００４０】
次に、ＡＤＣ２内での具体的なＩ／Ｏ処理について、図１、図２を用いて説明する。ＣＰＵ１より発行されたコマンドは、ＩＦ  Ａｄｐ１５を介してＡＤＣ２に取り込まれ、ＭＰ１  ２０により、読み出し要求か書込み要求か解読される。まず、読み出し要求の場合の処理方法を以下に示す。
【００４１】
ＭＰ１  ２０が読み出し要求のコマンドを認識すると、ＭＰ１  ２０は、ＣＰＵ１から送られてきたＣＰＵ指定ドライブ番号４１とＣＣＨＨＲ４６（以下両方を併せてＣＰＵ指定アドレスとする）についてアドレステーブル４０を参照し、当該データの論理アドレス４５への変換を行ない、論理アドレス４５に登録されているキャッシュメモリ７内に存在するかどうかキャッシュフラグ４８を調べ、判定する。
【００４２】
キャッシュフラグ４８がオンでキャッシュメモリ７内に格納されている場合（キャッシュヒット）は、ＭＰ１  ２０が、キャッシュメモリ７から当該データを読み出す制御を開始し、キャッシュメモリ７内に無い場合（キャッシュミス）は、当該ドライブ１２からその内部の当該データを読み出す制御を開始する。
【００４３】
キャッシュヒット時、ＭＰ１  ２０は、アドレステーブル４０により、ＣＰＵ１が指定してきたＣＰＵ指定アドレスから論理アドレス４５に変換し、論理アドレス４５内のキャッシュアドレス４７によりキャッシュメモリ７のアドレスに変換し、キャッシュメモリ７へ当該データを読み出しに行く。具体的には、ＭＰ１２０の指示の元で、キャッシュアダプタ回路（Ｃ  Ａｄｐ）２４によりキャッシュメモリ７から当該データは読み出される。
【００４４】
Ｃ  Ａｄｐ２４は、キャッシュメモリ７に対するデータの読み出し、書き込みをＭＰ１  ２０の指示で行う回路であり、キャッシュメモリ７の状態の監視、各読み出し、書き込み要求に対して排他制御を行う回路である。Ｃ  Ａｄｐ２４により読み出されたデータは、データ制御回路（ＤＣＣ）２２の制御により、チャネルインターフェース回路（ＣＨ  ＩＦ）２１に転送される。ＣＨ  ＩＦ２１では、ＣＰＵ１におけるチャネルインターフェースのプロトコルに変換し、チャネルインターフェースに対応する速度に速度調整する。具体的には、ＣＰＵ１、ＡＤＣ２間のチャネルインターフェースを光のインターフェースにした場合、光のインターフェースのプロトコルをＡＤＣ２内では電気処理でのプロトコルに変換する。ＣＨ  ＩＦ２１におけるプロトコル変換および速度調整後は、チャネルパスディレクタ５において、チャネルパススイッチ１６が外部インターフェースパス４を選択し、ＩＦ  Ａｄｐ１５によりＣＰＵ１へデータ転送を行なう。
【００４５】
一方、キャッシュミス時は、キャッシュヒット時と同様に、アドレステーブル４０によりＣＰＵ指定アドレスを論理アドレス４５に変換し、論理アドレス４５から、当該ＳＣＳＩドライブ番号とそのＳＣＳＩドライブ内の実際にデータが格納されているＳＣＳＩ内Ａｄｄｒ４４を認識し、そのアドレスに対し、ＭＰ１  ２０は、Ｄｒｉｖｅ  ＩＦ２８に対し、当該ドライブ１２への読み出し要求を発行するように指示する。Ｄｒｉｖｅ  ＩＦ２８では、ＳＣＳＩの読み出し処理手順に従って、読み出しコマンドをドライブユニットパス９−１または９−２を介して発行する。Ｄｒｉｖｅ  ＩＦ２８から読み出しコマンドを発行された当該ＳＣＳＩドライブ１２においては、指示されたＳＣＳＩ内Ａｄｄｒ４４へシーク、回転待ちのアクセス処理を行なう。当該ＳＣＳＩドライブ１２におけるアクセス処理が完了した後、当該ＳＣＳＩドライブ１２は、当該データを読み出しドライブユニットパス９を介してＤｒｉｖｅ  ＩＦ２８へ転送する。
【００４６】
Ｄｒｉｖｅ  ＩＦ２８では、転送されてきた当該データをＳＣＳＩドライブ側のキャッシュアダプタ回路（Ｃ  Ａｄｐ）１４に転送し、（Ｃ  Ａｄｐ）１４では、キャッシュメモリ７にデータを格納する。この時、Ｃ  Ａｄｐ１４は、キャッシュメモリ７にデータを格納することをＭＰ１  ２０に報告し、ＭＰ１  ２０は、この報告を元に、アドレステーブル４０のＣＰＵが読み出し要求を発行したＣＰＵ指定アドレスに対応した論理アドレス４５のキャッシュフラグ４８をオン（１）にし、キャッシュアドレス４７に、キャッシュメモリ７内のデータを格納したアドレスを登録する。キャッシュメモリ７にデータを格納し、アドレステーブル４０のキャッシュフラグ４８をオン（１）にし、キャッシュメモリ７内のアドレスを更新した後は、キャッシュヒット時と同様な手順で、ＣＰＵ１へ当該データを転送する。
【００４７】
一方、書き込み時は、以下のように処理される。
【００４８】
書き込み処理は、ユーザが書き込み先のアドレス（ＣＰＵ指定アドレス）を指定し、その位置にユーザはデータを書き込んでいると認識する。つまり、ユーザは、固定の位置にアドレスを指定していると認識している。
【００４９】
ＣＰＵ１から、指定アドレス、すなわち、図３に示すアドレステーブル４０においてＣＰＵ指定ドライブ番号４１がドライブ＃１で、ＣＣＨＨＲ４６がＡＤＲ８に対して、書き込み命令が発行されたとする。まず、ＡＤＣ２のＭＰ１  ２０は、ＣＰＵ１から、ドライブ＃１のＣＣＨＨＲ４６がＡＤＲ８に対する書込み要求のコマンドを受け取った後、コマンドを受け取ったＭＰ１  ２０が所属するクラスタ１３内の各チャネルパス６において処理可能かどうかを調べ、可能な場合は処理可能だという応答をＣＰＵ１へ返す。ＣＰＵ１では、処理可能だという応答を受け取った後に、ＡＤＣ２へデータを転送する。この時、ＡＤＣ２では、ＭＰ１  ２０の指示により、チャネルパスディレクタ５において、チャネルパススイッチ１６が、当該外部インターフェースパス４とＩＦ  Ａｄｐ１５を当該チャネルパス６と接続し、ＣＰＵ１とＡＤＣ２間の接続を確立する。
ＣＰＵ１とＡＤＣ２間の接続を確立後、ＣＰＵ１からのデータ転送を受け付ける。ＣＰＵ１から転送されてきた書き込みデータ（以下新データとする）は、ＭＰ１  ２０の指示により、ＣＨ  ＩＦ２１によりプロトコル変換を行ない、外部インターフェースパス４での転送速度からＡＤＣ２内での処理速度に速度調整する。ＣＨ  ＩＦ２１におけるプロトコル変換および速度制御の完了後、データは、ＤＣＣ２２によるデータ転送制御を受け、Ｃ  Ａｄｐ２４に転送され、Ｃ  Ａｄｐ２４によりキャッシュメモリ７内に格納される。
【００５０】
この時、ＣＰＵ１から送られてきた情報がＣＰＵ指定アドレスの場合は、データが転送されてくる前に必ずＣＰＵ指定アドレスがＣＰＵ１より転送されているため、読み出しと同様に、アドレステーブル４０によりアドレス変換を行い、論理アドレス４５に変換する。また、ＣＰＵ１から送られてきた情報がデータの場合は、キャッシュメモリ７に格納したアドレスを上記アドレス変換により変換した論理アドレス４５のキャッシュアドレス４７に登録する。この時、書き込みデータをキャッシュメモリ７内に保持するときは、論理アドレス４５のキャッシュフラグ４８をオン（１）とし、保持しない場合は、キャッシュフラグ４８をオフ（０）とする。
【００５１】
なお、キャッシュメモリ７内に保持されている新データに対し、さらに書き込み要求がＣＰＵ１から発行された場合は、キャッシュメモリ７内に保持されている新データを書き替える。
【００５２】
キャッシュメモリ７に格納された新データは、この新データにより新しくパリティを更新し（以下、更新されたパリティを新パリティとする）、以下のように、論理グループ１０内のＳＣＳＩドライブ１２へ新データと新パリティを格納する。
【００５３】
図３に示すように、スペース領域及びパリティはデータと同じ様に扱われ、論理グループ１０内の各ＳＣＳＩドライブ１２に分散して格納されている。論理グループ１０を構成する各ＳＣＳＩドライブ１２内のデータについては、行方向（同一ＳＣＳＩ内Ａｄｄｒ４４）にパリティグループが構成され、このパリティグループ内のデータにおいてパリティが作成される。つまり、パリティグループは、データとパリティにより構成され、論理グループ１０は、パリティグループとスペース領域で構成される。
【００５４】
図３において具体的な例を示す。ＳＣＳＩ内Ａｄｄｒ４４がＤＡＤＲ１については、ＳＤ＃１のＳＣＳＩドライブ１２に格納されているＤａｔａ＃１（Ｄ＃１）と、ＳＤ＃２のＳＣＳＩドライブ１２に格納されているＤａｔａ＃２（Ｄ＃２）と、ＳＤ＃３のＳＣＳＩドライブ１２に格納されているＤａｔａ＃３（Ｄ＃３）によりパリティが作成される。このパリティが、ＳＤ＃６のＳＣＳＩドライブ１２に格納され、これらがパリティグループを構成する。また、論理グループ１０は、ＳＤ＃４のＳＣＳＩドライブ１２に確保されているスペース領域（Ｓ）と、ＳＤ＃５のＳＣＳＩドライブ１２に確保されているスペース領域（Ｓ）と、上記パリティグループにより構成される。
【００５５】
ＭＰ１  ２０は、アドレステーブル４０を参照し、データ、スペース領域、パリティが格納されているＳＣＳＩドライブ１２を認識する。具体的には、アドレステーブル４０においてＣＰＵ指定アドレスが指定したＣＰＵ指定ドライブ番号４１に対応する領域において、ＣＰＵ指定アドレスで指定したＣＣＨＨＲ４６と一致しているＳＣＳＩドライブアドレス４２に登録されている論理アドレス４５をＭＰ１  ２０は探す。ＭＰ１  ２０は、ＣＰＵ指定アドレスから論理アドレス４５への変換後、論理アドレス４５から、その論理アドレス４５が格納されているＳＣＳＩドライブ番号４３と、そのＳＣＳＩドライブ１２内の物理的なアドレスであるＳＣＳＩ内Ａｄｄｒ４４に変換する。
【００５６】
パリティは、論理グループ１０を構成する各ＳＣＳＩドライブ１２において、各ＳＣＳＩ内Ａｄｄｒ４４が同一のデータに対し作成され、そのパリティもデータと同一のＳＣＳＩ内Ａｄｄｒ４４に格納される。このため、アドレステーブル４０のパリティドライブ番号５０とスペースドライブ番号５１において、パリティおよびスペース領域は、それぞれが格納されているＳＣＳＩドライブ番号４３のみが登録されている。そこで、ＭＰ１  ２０では、アドレステーブル４０により、パリティドライブ番号５０とスペースドライブ番号５１を決定することが可能となる。つまり、パリティドライブ番号５０とスペースドライブ番号５１を決定することにより、パリティおよびスペース領域は、データと同一のＳＣＳＩ内Ａｄｄｒ４４に格納されていることから、それらのアドレスを決定することになる。このように、データ、スペース領域、パリティが格納されているＳＣＳＩドライブ１２を認識した後は、Ｄｒｉｖｅ  ＩＦ２８に対し、各々の当該ＳＣＳＩドライブ１２に対し書き込み処理を行うように指示する。
【００５７】
本発明における書き込み処理とは、論理グループ１０において、新データをキャッシュメモリ７から実際にＳＣＳＩドライブ１２に書き込む処理と、新データの書き込みによりパリティを新たに作り直さなければならないため、この新パリティを作成するための書き込み前のデータ（以下旧データ）と書き込み前のパリティ（以下旧パリティとする）を読み出し、新パリティを作成する処理と、書き込み後の新パリティを実際にＳＣＳＩドライブ１２に書き込む一連の処理をいう。この新データをキャッシュメモリ７に格納した後の一連の書き込み処理のフローチャートを図５に示す。
【００５８】
図４に示すように、ＣＰＵ１からＳＤ＃１のＳＣＳＩドライブ１２のＤａｔａ＃１（Ｄ＃１）の論理アドレスに対し、ＮＤ＃１のデータの書き込み要求が発行された場合、先に示したように、ＣＰＵ１からキャッシュメモリ７に新データは一旦格納される。新データのキャッシュメモリ７への格納後、書き込み処理は次の手順で行っていく。キャッシュメモリ７に新データ（ＮＤ＃１）が格納された後、ＭＰ１  ２０は書き込み処理に入り、アドレステーブル４０により、ＳＤ＃１のＳＣＳＩドライブ１２が所属する論理グループ１０で、Ｄａｔａ＃１（Ｄ＃１）のＳＣＳＩ内Ａｄｄｒ４４であるＤＡＤＲ１に対し、スペース領域が確保されているＳＤ＃４，５のＳＣＳＩドライブ１２に対し、使用権の獲得を行なう。
【００５９】
ＳＤ＃４、５のＳＣＳＩドライブ１２の使用権を獲得した後は、図５のフローチャートに示すように書き込み処理５００を行なっていく。まず、ＭＰ１  ２０は、アドレステーブル４０のスペースドライブ番号５１のＳＤフラグ５３をチェックし、ＳＤフラグ５３がオフ（０）の場合、スペース領域として使用でき、オン（１）の場合は使用できないと判断する（５０２）。ＭＰ１  ２０は、このＳＤフラグ５３により、ＳＤ＃４、５のＳＣＳＩドライブ１２にスペース領域が確保されているかを判断する。そして、ＳＤフラグ５３がオフ（０）の場合、キャッシュメモリ７に格納されているＮＤ＃１をこのＳＤ＃４，５に二重化して書き込み（５０４）、ＭＰ１  ２０はＣＰＵ１へ書き込み完了の報告を行う（５０８）。
【００６０】
一方、ステップ５０２のチェックにより、ＳＤフラグ５３がオン（１）の場合は、図１３に示すように、書き込む新データ（ＮＤ＃１）をキャッシュメモリ７に書き込んだ後、ＭＰ１  ２０は優先的に前の書き込み処理におけるパリティの作成を指示し、このパリティを当該ＳＣＳＩドライブ１２に書き込む（１３１０）。前の書き込み処理におけるパリティの作成が完了し、当該ＳＣＳＩドライブへの書き込みが完了すると、ＭＰ１  ２０は、アドレステーブル４０においてスペースドライブ番号５１にＳＤフラグ５３をオフ（０）とし（１３０８）、キャッシュメモリ７に格納されているＮＤ＃１を二重化して書き込み（１３１６）、ＭＰ１  ２０は、ＣＰＵ１へ書き込み完了の報告を行う（１３２０）。
【００６１】
そこで、次に、ＳＣＳＩドライブ１２への新データ（ＮＤ＃１）の書き込み方法を示す。
【００６２】
ＭＰ１  ２０は、アドレステーブル４０のＳＤフラグ５３がオフ（０）になっているのを確認後、Ｄｒｉｖｅ  ＩＦ２８に書き込むデータである新データ（ＮＤ＃１）をスペース領域が確保されているＳＤ＃４とＳＤ＃５のＳＣＳＩドライブ１２に書き込むよう指示する。Ｄｒｉｖｅ  ＩＦ２８では、ＳＣＳＩの書込み手順に従って、ドライブユニットパス９−１から９−４の中の２本を介して、ＳＤ＃４とＳＤ＃５のＳＣＳＩドライブ１２に書込みコマンドを発行する。
【００６３】
Ｄｒｉｖｅ  ＩＦ２８から書込みコマンドを発行された当該ＳＣＳＩドライブ１２では、Ｄｒｉｖｅ  ＩＦ２８から送られてきたＣＰＵ１が書き込み先のアドレスとして指定したＣＰＵ指定アドレスを論理アドレス４５に変換し、論理アドレス４５であるＤａｔａ＃１に対応するＳＣＳＩ内Ａｄｄｒ４４のＤＡＤＲ１へシーク、回転待ちのアクセス処理を行なう。ＳＤ＃４、５のＳＣＳＩドライブ１２においてアクセス処理が完了し、書込みが可能になり次第、Ｃ  Ａｄｐ１４は、キャッシュメモリ７から書き込む新データ（ＮＤ＃１）を読み出してＤｒｉｖｅ  ＩＦ２８へ転送し、Ｄｒｉｖｅ  ＩＦ２８では、転送されてきた新データ（ＮＤ＃１）をドライブユニットパス９−１から９−４の中の２本を介してＳＤ＃４、５のＳＣＳＩドライブ１２へ転送する。新データ（ＮＤ＃１）のＳＤ＃４、５のＳＣＳＩドライブ１２への書込みが完了すると、ＳＤ＃４、５のＳＣＳＩドライブ１２は、Ｄｒｉｖｅ  ＩＦ２８に完了報告を行ない、Ｄｒｉｖｅ  ＩＦ２８が、この完了報告を受け取ったことをＭＰ１  ２０に報告する。
【００６４】
この時、アドレステーブル４０において、書き込み前の旧データの論理アドレス４５（Ｄａｔａ＃１、Ｄ＃１）の無効フラグをオン（１）とし、書き込み前の論理アドレス４５（Ｄａｔａ＃１、Ｄ＃１）内のＣＣＨＨＲ４６のアドレスを、新データ（ＮＤ＃１）を二重化して書き込んだスペース領域の２つの論理アドレス４５のＣＣＨＨＲ４６に登録し、無効フラグをオフ（０）とし、ドライブフラグ５２をオン（１）とする。また、キャッシュメモリ７内に書き込む新データ（ＮＤ＃１）を保持する場合は、書き込み後の２つの論理アドレス４５内のキャッシュアドレス４７に、キャッシュメモリ７内の新データ（ＮＤ＃１）が格納されているアドレスを登録し、キャッシュフラグ４８をオン（１）とする。この新データ（ＮＤ＃１）をキャッシュメモリ７上に残さない場合、ＭＰ１  ２０は、この報告を元にアドレステーブル４０のキャッシュフラグ４８をオフ（０）にする。さらに、書き込みを行った論理グループ１０内のＳＣＳＩ内Ａｄｄｒ４４に対し、スペースドライブ番号５１のＳＤフラグをオン（１）とする。
【００６５】
上記のようにアドレステーブル４０の更新が完了すると、ＭＰ１  ２０は、ＳＤ＃４とＳＤ＃５の両方のＳＣＳＩドライブ１２からの完了報告を受け取った後、ＣＰＵ１に対し擬似的に書き込み処理の終了報告を行う。ＳＤ＃４、５のＳＣＳＩドライブ１２に対する新データ（ＮＤ＃１）の格納が完了しても、キャッシュメモリ７内には新データ（ＮＤ＃１）が存在しており、パリティの更新はキャッシュメモリ７内に格納されている新データ（ＮＤ＃１）で行なう。
【００６６】
以上のように、ＭＰ１  ２０がＣＰＵ１に対し擬似的に終了報告を行った後は、ＣＰＵ１は書き込み処理を終了したと認識しているが、ＭＰ１  ２０は、新しいパリティを作成して当該ＳＣＳＩドライブ１２書き込んでいないため、まだ書き込み処理は終了していない。そこで、ＭＰ１  ２０がＣＰＵ１に対し終了報告を行った後に、ＭＰ１  ２０が独自に新しいパリティを作成し、当該ＳＣＳＩドライブ１２に書き込む。この方法について以下に説明する。
【００６７】
ＭＰ１  ２０は、ＣＰＵ１に対し書き込み処理の終了報告を行った後、図５に示すように、ＣＰＵ１からの読み出し、書き込み要求の状況（ＩＯ状況）を監視する（５１０）。具体的には、ＭＰ１  ２０が、当該論理グループ１０に対するＣＰＵ１からの読み出し、書き込み要求の単位時間当りの回数を数える。当該論理グループ１０に対するこの回数が、予めユーザまたはシステム管理者により設定された数より少なく、パリティの作成およびこの作成したパリティを書き込むＳＣＳＩドライブ１２が所属する論理グループ１０に対する読み出し、書き込み要求がＣＰＵ１より発行されていない場合、パリティの作成およびパリティの当該ＳＣＳＩドライブ１２への書き込み処理を開始する。
【００６８】
新しくパリティを作成する場合、ＣＰＵ１から書き込み先に指定されたアドレスに書き込まれているデータ（旧データ）と、更新するパリティ（旧パリティ）を読み出し、新しく作成したパリティ（新パリティ）をＳＣＳＩドライブ１２に書き込む。この時、旧データと旧パリティを読み出すＳＣＳＩドライブ１２と、新パリティを書き込む当該ＳＣＳＩドライブ１２に対し、ＭＰ１  ２０は、ＣＰＵ１からの読み出し、書き込み要求と同様の擬似的な読み出し、書き込み要求を発行する。この、擬似的な読み出し、書き込み要求が発行されているＳＣＳＩドライブ１２に対し、ＣＰＵ１から読み出しまたは書き込み要求が発行された場合は、ＭＰ１  ２０は、ＣＰＵ１からの読み出し、書き込み要求を受付、処理の待ち行列とする。
【００６９】
次に、新パリティの作成および当該ＳＣＳＩドライブ１２への作成したパリティの書き込み方法を具体的に示す。
【００７０】
ＭＰ１  ２０は、ＳＤ＃１のＳＣＳＩドライブ１２に対して旧データの読み出し要求、ＳＤ＃６のＳＣＳＩドライブ＃１２に対して旧パリティの読み出し要求を発行するように、Ｄｒｉｖｅ  ＩＦ２８に指示する（５１４）。
【００７１】
Ｄｒｉｖｅ  ＩＦ２８から読み出しコマンドを発行された当該ＳＣＳＩドライブ１２では、Ｄｒｉｖｅ  ＩＦ２８から送られてきたＳＣＳＩ内Ａｄｄｒ４４へシーク、回転待ちのアクセス処理を行なう。キャッシュメモリ７内には新データ（ＮＤ＃１）が存在しており、パリティの更新はキャッシュメモリ７内に格納されている新データ（ＮＤ＃１）で行なう。
【００７２】
もし、キャッシュメモリ７に新データ（ＮＤ＃１）が存在していない場合は、スペース領域に二重化して書き込まれているデータをキャッシュメモリ７に読み出す。
【００７３】
ＳＤ＃１、６のＳＣＳＩドライブ１２において、シーク、回転待ちのアクセス処理が完了し、旧データ（Ｄ＃１）および旧パリティ（Ｐ＃１）の読み出しが可能になり次第、旧データ（Ｄ＃１）および旧パリティ（Ｐ＃１）を読み出し、キャッシュメモリ７に格納する。ＳＤ＃１のＳＣＳＩドライブ１２から旧データ（Ｄ＃１）を、ＳＤ＃６のＳＣＳＩドライブ１２から旧パリティ（Ｐ＃１）を読み出し、それぞれをキャッシュメモリ７に格納した後、ＭＰ１  ２０は、キャッシュメモリ７内に格納されている書き込む新データ（ＮＤ＃１）で、排他的論理和により、更新後の新パリティ（ＮＰ＃１）を作成するようにＰＧ３６に指示を出し、ＰＧ３６において新パリティ（ＮＰ＃１）を作成し、キャッシュメモリ７に格納する（５１６）。
【００７４】
新パリティ（ＮＰ＃１）をキャッシュメモリ７に格納した後、ＭＰ１  ２０では、新パリティ（ＮＰ＃１）を格納する論理アドレス４５のキャッシュアドレス４７に、キャッシュメモリ７内の新パリティ（ＮＰ＃１）を格納したアドレスを登録し、キャッシュフラグ４８をオン（１）とし、無効フラグ４９とドライブフラグ５２をオフ（０）とする（５１８）。新パリティ（ＮＰ＃１）の作成が完了したことを認識し、ＳＤ＃６のＳＣＳＩドライブ１２にＩＯ要求が発行されていない時に、更新後の新パリティ（ＮＰ＃１）を書き込むように、Ｄｒｉｖｅ  ＩＦ２８に対し指示する。
【００７５】
ＳＤ＃６のＳＣＳＩドライブ１２への更新後の新パリティ（ＮＰ＃１）の書込み方法（５２０）は、先に述べた書き込む新データ（ＮＤ＃１）をＳＤ＃４、５のＳＣＳＩドライブ１２に書き込んだ方法と同じである。新パリティ（ＮＰ＃１）の作成が完了したら、ＭＰ１  ２０は、Ｄｒｉｖｅ  ＩＦ２８に、ＳＤ＃６のＳＣＳＩドライブ１２に対し書込みコマンドを発行するように指示し、当該ＳＣＳＩドライブ１２では、指示ＳＣＳＩ内Ａｄｄｒ４４へシーク、回転待ちのアクセス処理を行う。新パリティ（ＮＰ＃１）は既に作成されキャッシュメモリ７に格納されており、ＳＤ＃６のＳＣＳＩドライブ１２におけるアクセス処理が完了した場合、Ｃ  Ａｄｐ１４は、キャッシュメモリ７から新パリティ（ＮＰ＃１）を読み出してＤｒｉｖｅ  ＩＦ２８へ転送する。Ｄｒｉｖｅ  ＩＦ２８では、転送されてきた新パリティ（ＮＰ＃１）をドライブユニットパス９−１から９−４の中の１本を介してＳＤ＃６のＳＣＳＩドライブ１２へ転送する（５２２）。
【００７６】
新パリティ（ＮＰ＃１）のＳＤ＃６のＳＣＳＩドライブ１２への書込みが完了すると、ＳＤ＃６のＳＣＳＩドライブ１２は、Ｄｒｉｖｅ  ＩＦ２８に完了報告を行ない、Ｄｒｉｖｅ  ＩＦ２８がこの完了報告を受け取ったことをＭＰ１  ２０に報告する。この時、ＭＰ１  ２０は、この新データ（ＮＤ＃１）をキャッシュメモリ７上に残さない場合は、この報告を元にアドレステーブル４０のキャッシュフラグ４８をオフ（０）にし、キャッシュメモリ７上に残す場合はオン（１）とする。さらに、アドレステーブル４０において、書き込み後の新パリティ（ＮＰ＃１）の論理アドレス４５の無効フラグをオフ（０）とし、ドライブフラグ５２をオン（１）とする（５２４）。
【００７７】
このような、新しく作成した新パリティ（ＮＰ＃１）を当該ＳＣＳＩドライブ１２に書き込んだ後は、旧データ（Ｄ＃１）が格納されていたＳＤ＃１のＳＣＳＩドライブ１２の旧データ（Ｄ＃１）と二重化されている新データ（ＮＤ＃１）が格納されているＳＤ＃４、５のＳＣＳＩドライブ１２の中で、ＳＣＳＩドライブ番号の小さいＳＤ＃４のＳＣＳＩドライブ１２に格納されている新データ（ＮＤ＃１）をスペース領域として解放し、次の書き込み処理用にスペース領域として登録する。この登録の方法は、ＭＰ１  ２０が、アドレステーブル４０においてＳＤ＃１とＳＤ＃４のＳＣＳＩ内Ａｄｄｒ４４がＤ  ＡＤＲ１の旧データ（Ｄ＃１）と、二重化されていた新データ（ＮＤ＃１）の一方が格納されている論理アドレス４５において、無効フラグをオン（１）とし、さらにスペースドライブ番号５１にＳＤ＃１とＳＤ＃４を登録し、ＳＤフラグをオフ（０）にする（５２６）。
【００７８】
以上のように、書き込み処理時に書き込む新データ（ＮＤ＃１）を一旦二重化して論理グループ１０内に格納しておき、後でＣＰＵ１からの読み出し、書き込み要求が比較的少ないときに、新パリティ（ＮＰ＃１）を作成し、ＳＣＳＩドライブ１２に格納することで、書き込み処理時の応答時間が短縮され、従来のように新パリティ（ＮＰ＃１）の作成により他の読み出し、書き込み処理が待たされることが減少する。
【００７９】
もし、新パリティ（ＮＰ＃１）を当該ＳＣＳＩドライブ１２への書き込み前に論理グループ１０内のＳＣＳＩドライブ１２に障害が発生した場合は、図１４に示すように回復処理を行う。図４（ａ）に示すように、ＳＤ＃６のＳＣＳＩドライブ１２に対し新パリティ（ＮＰ＃１）を書き込む前に（１４０２）、ＳＤ＃１，２、３の内のどれか１台のＳＣＳＩドライブ１２に障害が発生した場合（１４０６）、障害が発生していないＳＣＳＩドライブ１２からのデータと旧パリティから、障害が発生したＳＣＳＩドライブ１２内のデータを回復することが可能となる（１４１０）。例えば、ＳＤ＃１のＳＣＳＩドライブ１２に障害が発生した場合、ＳＤ＃２、３のＤ＃２、Ｄ＃３と、ＳＤ＃６のＳＣＳＩドライブ１からの旧パリティ（Ｐ＃１）から、ＳＤ＃１のＳＣＳＩドライブ１２内のデータであるＤ＃１を回復することが可能となる。また、新データ（ＮＤ＃１）が二重化して格納されているＳＤ＃４、５のどちらか一方に障害が発生した場合は、二重化データの一方のデータにより回復することが可能となる（１４１２）。
【００８０】
図４（ｂ）に示すように、ＳＤ＃６のＳＣＳＩドライブ１２に対し新パリティ（ＮＰ＃１）を書き込んだ後は、ＳＤ＃２、３、５のＳＣＳＩドライブ１２内のデータ（Ｄ＃２、３、ＮＤ＃１）に対し新パリティ（ＮＰ＃１）が作成されてＳＤ＃６のＳＣＳＩドライブ１２に格納されており、ＳＤ＃２、３、５のＳＣＳＩドライブ１２の中の１台のＳＣＳＩドライブ１２に障害が発生した場合、残りの正常なＳＣＳＩドライブ１２内のデータとＳＤ＃６のＳＣＳＩドライブ１２内のパリティにより、障害が発生したＳＣＳＩドライブ１２内のデータは回復される。
【００８１】
例えば、ＳＤ＃２のＳＣＳＩドライブ１２に障害が発生した場合、ＳＤ＃２のＳＣＳＩドライブ１２内のデータ（Ｄ＃２）は、ＳＤ＃３のＳＣＳＩドライブ１２内のデータ（Ｄ＃３）と、ＳＤ＃４のＳＣＳＩドライブ１２内のデータ（ＮＤ＃１）と、ＳＤ＃６のＳＣＳＩドライブ１２内のパリティ（ＮＰ＃１）から、障害が発生したＳＤ＃２のＳＣＳＩドライブ１２内のデータ（Ｄ＃２）は回復される。
【００８２】
本発明のように、書き込み処理において、スペース領域に書き込みデータ（新データ）をとりあえず二重化して格納し、この段階でＣＰＵ１に対し書き込み処理の終了報告を行うことにより、ＣＰＵ１にとっては、この二重化してＳＣＳＩドライブ１２に書き込む時間が書き込み処理時間になる。従来のアレイディスクでは、図１２に示すように、書き込み時に平均１．５回転の回転待ち時間が必要としたのが、もし、論理グループ１０を構成するＳＣＳＩドライブ１２の回転を同期させた場合は、回転待ちは平均０．５回転となる。また、新パリティをＳＣＳＩドライブ１２に書き込む前に論理グループ１０を構成するＳＣＳＩドライブ１２に障害が発生しても、先に述べたように、旧パリティと二重化された新データにより従来のアレイディスクと同様に、障害回復を行うことが可能となる。
【００８３】
本実施例では、パリティおよびパリティの作成に関与したデータとスペース領域は、論理グループ１０を構成する各ＳＣＳＩドライブ１２において、各ＳＣＳＩ内Ａｄｄｒ４４を同一とした。しかし、アドレステーブル４０の各論理アドレス４５とパリティドライブ番号５０、スペースドライブ番号５１において、論理グループ１０のアドレスを付加することにより、論理グループ１０を構成する各ＳＣＳＩドライブ１２において、ＳＣＳＩ内Ａｄｄｒ４４を任意とすることが可能となる。
【００８４】
本実施例では、書き込み時の回転待ち時間を減少させる目的で、書き込みデータを一旦二重化してＳＣＳＩドライブ１２に書き込み、後の適当なタイミングでパリティを更新し、パリティの更新後は二重化した書き込みデータの一方を開放する方法について説明した。本発明は、上記のような性能向上の観点とは別に、以下に示すような応用例も考えられる。
【００８５】
パリティによる信頼性と二重化による信頼性では、二重化による信頼性の方が、信頼性向上のために必要とする容量は大きいが、信頼性は高くなる。この特徴を活かし、本発明の応用として、最新に書き込まれたデータ、または、頻繁に書き込み要求が発行されるデータについては、二重化されているため、高信頼とし、あまり書き込み要求が発行されないデータについては、二重化ほど高信頼ではないが、信頼性向上のために必要とする容量が二重化と比較して少なくて済む、パリティにより信頼性を確保する。つまり、あまり書き込み要求が発行されないデータに対しては、信頼性は二重化ほど高くないが、パリティを付けるだけで済む、パリティで信頼性を確保し、最新に書き込まれたデータまたは、頻繁に書き込み要求が発行されるデータについては、パリティと比較し信頼性向上のために容量を多く必要とするが、高信頼である二重化で高信頼とする、二段階の信頼性のレベルを設定することも可能である。
【００８６】
〈実施例２〉
本発明の他の実施例を図６を中心にして説明する。本実施例では、実施例１で示したシステムにおいて、ＳＣＳＩドライブ１２に障害が発生した時に、その障害が発生したＳＣＳＩドライブ１２内のデータを回復し、それを格納するための領域にスペース領域を使用する例を示す。
【００８７】
本発明では図３に示すように、論理グループ１０内の各ＳＣＳＩドライブ１２では、その内部の各々対応する同一ＳＣＳＩ内Ａｄｄｒ４４のデータにより、パリティグループを構成する。具体的には、ＳＤ＃１、２、３のＳＣＳＩドライブ１２内のＤａｔａ＃１、２、３（Ｄ＃１、２、３）で、ＰＧ３６によりパリティ＃１（Ｐ＃１）が作られ、ＳＤ＃６のＳＣＳＩドライブ１２内に格納される。本実施例では、パリティは奇数パリティとし、Ｄａｔａ＃１、２、３（Ｄ＃１、２、３）の各データにおける各々対応するビットについて１の数を数え、奇数であれば０、偶数であれば１とする（排他的論理和）。もし、ＳＤ＃１のＳＣＳＩドライブ１２に障害が発生したとする。この時、Ｄａｔａ＃１（Ｄ＃１）は読み出せなくなる。
【００８８】
本実施例では、パリティグループ当りにパリティを１個しか持っていないため、１台のＳＣＳＩドライブ１２の障害はデータを復元できるが、データの復元が完了する前に更にもう一台のＳＣＳＩドライブ１２に障害が発生した場合、復元出来ない。そこで、この様な場合、２台目のＳＣＳＩドライブ１２障害が発生する前に、残りのＤａｔａ＃２、３（Ｄ＃２、３）とパリティ＃１（Ｐ＃１）をキャッシュメモリ７に転送し、ＭＰ１  ２０がＰＧ３６に対し、Ｄａｔａ＃１（Ｄ＃１）を復元する回復処理を早急に行なうように指示する。この回復処理を行ないＤａｔａ＃１（Ｄ＃１）を復元した後は、ＭＰ１  ２０は、このＤａｔａ＃１（Ｄ＃１）をＳＤ＃４または６のどちらかのスペース領域に格納する。
【００８９】
これにより、スペース領域を実施例１で示したような、書き込み処理時の回転待ち時間を短縮させるためだけではなく、ＳＣＳＩドライブ１２に障害が発生したときに、復元したデータを格納するためのスペアー領域としても活用する。この様に、ＭＰ１  ２０が、スペース領域に回復したＤａｔａ＃１（Ｄ＃１）を格納した後は、キャッシュメモリ７にある図３に示すアドレステーブル４０において、スペースドライブ番号５１の中で、回復データを格納した方のスペースドライブ番号５１を削除し、この削除したドライブ番号に対する論理アドレス４５に、回復したＤａｔａ＃１（Ｄ＃１）の論理アドレス４５の内容を複写する。
【００９０】
図６に示すように、ＳＤ＃１のＳＣＳＩドライブ１２には、Ｄａｔａ＃１（Ｄ＃１）の他にスペース領域、パリティ、Ｄａｔａ＃１３、１６、１９、２２（Ｄ＃１３、１６、１９、２２）が格納されている。スペース領域については、回復処理を行ない復元する必要は無い。パリティ＃３（Ｐ＃３）は、ＳＤ＃３、４、５のＳＣＳＩドライブ１２から、Ｄａｔａ＃７、８、９（Ｄ＃７、８、９）を読み出して新たに作成し、ＳＤ＃２か６のＳＣＳＩドライブ１２のスペース領域に格納する。Ｄａｔａ＃１３（Ｄ＃１３）は、ＳＤ＃３、５、６のＳＣＳＩドライブ１２からパリティ＃５（Ｐ＃５）、Ｄａｔａ＃１４、１５（Ｄ＃１４、１５）を読み出して、回復処理を行ない復元し、ＳＤ＃２または４のＳＣＳＩドライブ１２のスペース領域に格納する。Ｄａｔａ＃１６（Ｄ＃１６）は、ＳＤ＃２、４、６のＳＣＳＩドライブ１２からＤａｔａ＃１７（Ｄ＃１７）、パリティ＃６（Ｐ＃６）、Ｄａｔａ＃１８（Ｄ＃１８）を読み出して、回復処理を行ない復元し、ＳＤ＃３または５のＳＣＳＩドライブ１２のスペース領域に格納する。以下、同様に、Ｄａｔａ＃１９、２２（Ｄ＃１９、２２）と回復処理を行ない、論理グループ１０内のスペース領域に格納していく。
【００９１】
この様に、ＳＤ＃２、３、４、５、６のＳＣＳＩドライブ１２内のスペース領域に、ＳＤ＃１のＳＣＳＩドライブ１２の回復データを全て格納した後は、スペース領域が論理グループ１０において一つしかないため、実施例１で述べたような書き込み時の回転待ちを短くすることは出来ないため、従来のアレイディスクであるＲＡＩＤのレベル５の処理となる。また、ＳＤ＃１のＳＣＳＩドライブ１２の回復データを全て格納した後は、ＳＤ＃２、３、４、５、６のＳＣＳＩドライブ１２の中で更にもう一台ＳＣＳＩドライブ１２に障害が発生した場合、同様にその障害が発生したＳＣＳＩドライブ１２内のデータについて回復処理を行ない、残りのスペース領域に格納し、処理を行なえる。
【００９２】
この様にして、論理グループ１０内のスペース領域を全て使い切ってしまった場合は、障害ＳＣＳＩドライブ１２を正常のＳＣＳＩドライブ１２に交換し、この交換した正常なＳＣＳＩドライブ１２は全てスペース領域として論理グループを再構成する。
【００９３】
障害ＳＣＳＩドライブ１２を正常のＳＣＳＩドライブ１２に交換した直後は、スペース領域が特定ＳＣＳＩドライブ１２に集中した形になっているため、このＳＣＳＩドライブ１２が使用できずに待たされることが多くなり、ネックとなるため、実施例１で示した回転待ち時間を短縮する効果が効率的に発揮出来ない。しかし、時間が立つにつれて、スペース領域が分散されてＳＣＳＩドライブ１２障害前の状態に戻っていき、次第に解消されていく。もし、この時間が問題となる場合は、ＳＣＳＩドライブ１２に障害が発生したことを感知した場合、正常なＳＣＳＩドライブ１２に交換して、この交換した正常なＳＣＳＩドライブ１２に障害が発生したＳＣＳＩドライブ１２内のデータとパリティをユーザが復元することも可能とする。なお、この時スペース領域に関しては復元せずにスペース領域として空けておく。
【００９４】
本実施例では、この回復処理とスペース領域へ復元したデータを書き込む処理をＭＰ１  ２０が独自に行なう。この様に独自に行なうことにより、ＳＣＳＩドライブ１２に障害が発生した場合、障害が発生したＳＣＳＩドライブ１２を正常なＳＣＳＩドライブ１２に交換し、回復したデータを書き込むのと比較して、本発明では、システムを使用するユーザがＳＣＳＩドライブ１２に障害が発生すると直ぐに正常なＳＣＳＩドライブ１２と交換する必要が無いため、ユーザの負担が軽くなる。
【００９５】
〈実施例３〉
本発明の第三の実施例を図７〜図１１により説明する。
【００９６】
本実施例では、図７、８に示すように、論理グループ１０単位にサブＤＫＣ１１を設け、その内部に図９に示すように実施例１、２において示したキャッシュメモリ７内のアドレステーブル４０と、ＲＰＣ２７、ＰＧ３６、サブキャッシュ３２と、それらを制御するマイクロプロセッサＭＰ３  ２９を持たせたものを示す。本実施例におけるデータの処理手順は、実施例１および２で示したものと同様である。
【００９７】
以下、実施例１、２で示した処理手順と異なる部分のみを図１０および図１１を用いて示す。本実施例では、図９に示すように、実施例１、２で示したキャッシュメモリ７内のアドレステーブル４０をサブＤＫＣ１１内のデータアドレステーブル（ＤＡＴ）３０に格納する。ＤＡＴ３０は、格納されているテーブルの形式や機能は実施例１、２と同様であるが、異なるのは、データを格納するＳＣＳＩドライブアドレス４２が論理グループ１０に限られている点と、メモリがアドレステーブル４０を格納するデータを格納するのとは別の専用メモリである。ＡＤＣ２内のＧＡＴ２３は、ＣＰＵ１から指示されたＣＰＵ指定アドレスから、そのＣＰＵ指定アドレスが指示する場所がＡＤＵ３内のどの論理グループ１０かを判定するのみである。キャッシュメモリ７内には、その特別な領域に、図１０に示すような論理グループテーブル（ＬＧＴ）６０が格納されている。
【００９８】
ＬＧＴ６０は、図１０に示すように、ＣＰＵ１から指定されるＣＰＵ指定ドライブ番号４１とＣＣＨＨＲ４６に対応して、論理グループアドレス６１が決定できるテーブルとなっている。また、ＬＧＴ６０には、ＣＰＵ指定アドレスに対応するデータがキャッシュメモリ７内に存在する場合、そのデータのキャッシュメモリ７内のアドレスをキャッシュアドレス４７に登録でき、また、キャッシュメモリ７内にデータが存在する場合はオン（１）とし、キャッシュメモリ７内に存在しない場合はオフ（０）とするキャッシュフラグ４８が用意されている。ユーザは、初期設定する際に自分の使用可能な容量に対する領域を確保するが、その際に、ＡＤＣ２のＭＰ１  ２０が、ＬＧＴ６０により論理グループ１０を割当てる。この時、ＭＰ１  ２０は、ＬＧＴ６０にユーザが確保するために指定したＣＰＵ指定アドレスに対応する領域を登録する。
【００９９】
そこで、実際の読み出し、書き込み処理においては、ＧＡＴ２３は、ＬＧＴ６０により、ＣＰＵ１から指定してきたＣＰＵ指定アドレスに対応した論理グループ１０を認識することが可能となる。読み出し時は、ＧＡＴ２３が、ＬＧＣにより論理グループ１０を確定し、その確定した結果をＭＰ１  ２０に報告し、ＭＰ１  ２０が、この当該論理グループ１０に対し読み出し要求を発行するようにＤｒｉｖｅ  ＩＦ２８に指示する。ＭＰ１  ２０から指示を受けたＤｒｉｖｅ  ＩＦ２８は、当該論理グループ１０のサブＤＫＣ１１に対し、読み出し要求とＣＰＵ１が指定するＣＰＵ指定アドレスを発行する。サブＤＫＣ１１では、マイクロプロセッサであるＭＰ３  ２９が、この読み出し要求のコマンドとＣＰＵ指定アドレスを受け付け、実施例１と同様に、Ｄｒｉｖｅ  ＩＦ２８から送られてきたＣＰＵ指定アドレスをＤＡＴ３０を参照し、当該データが格納されている論理グループ１０内の論理アドレス４５に変換し、この論理アドレス４５から当該ＳＣＳＩドライブアドレス４２（ＳＣＳＩドライブ番号４３とその中のＳＣＳＩ内Ａｄｄｒ４４）を確定する。
【０１００】
このアドレスの確定後、ＭＰ３  ２９は、当該ＳＣＳＩドライブ１２に対して読み出し要求を発行する。ＭＰ３  ２９から読み出し要求を発行されたＳＣＳＩドライブ１２では、ＳＣＳＩ内Ａｄｄｒ４４へシーク、回転待ちを行ない、当該データの読み出しが可能になり次第、当該データをドライブアダプタ回路（Ｄｒｉｖｅ  Ａｄｐ）３４に転送し、Ｄｒｉｖｅ  Ａｄｐ３４は、サブキャッシュメモリ３２に格納する。サブキャッシュメモリ３２に当該データの格納が完了した後、Ｄｒｉｖｅ  Ａｄｐ３４は、ＭＰ３  ２９に格納報告を行ない、ＭＰ３  ２９は、ＤＡＴ３０の当該データの当該論理アドレス４５内の当該キャッシュフラグ４８をオン（１）とする。後に、当該キャッシュフラグ４８がオン（１）のデータに対して読み出しまたは書込み要求が発行された場合、サブキャッシュ３２内で処理を行なう。実施例１と同様に、ＭＰ３  ２９によるＤＡＴ３０の更新が終了すると、ＭＰ３  ２９は、ＡＤＣ２内のＤｒｉｖｅ  ＩＦ２８に対しデータ転送可能という応答を行ない、Ｄｒｉｖｅ  ＩＦ２８は、この応答を受け取るとＭＰ１  ２０に対し報告する。
【０１０１】
ＭＰ１  ２０は、この報告を受け取ると、キャッシュメモリ７への格納が可能なら、Ｄｒｉｖｅ  ＩＦ２８に対しサブＤＫＣ１１からデータを転送するように指示する。Ｄｒｉｖｅ  ＩＦ２８では、ＭＰ１  ２０からの指示を受けると、サブＤＫＣ１１のＭＰ３  ２９に対し読み出し要求を発行する。この読み出し要求を受けたＭＰ３  ２９は、サブキャッシュアダプタ回路（ＳＣＡ）３１に対しサブキャッシュ３２から当該データを読みだすように指示し、ＳＣＡ３１は、実際にデータを読み出してＤｒｉｖｅ  ＩＦ２８にデータを転送する。Ｄｒｉｖｅ  ＩＦ  ２８がデータを受け取った後は、実施例１、２で示した処理を行なう。
【０１０２】
一方、書込み時は、読み出し時と同様に、当該論理グループ１０を確定し、ＭＰ１  ２０は、Ｄｒｉｖｅ  ＩＦ２８に対し、当該論理グループ１０のＭＰ３  ２９に対し書込み要求を発行するように指示する。当該論理グループ１０内のＭＰ３  ２９は、書込み要求を受け付け、書込みデータをサブキャッシュ３２に格納した後は、図５のフローチャートに従って、実施例１、２と同様に処理を行う。本実施例では、実施例１、２の効果を実現することが可能である。
【０１０３】
以上、磁気ディスク装置を用いたシステムを実施例として説明したが、本発明は、光ディスク装置を用いたシステムにおいても、同様な効果を発揮することが可能である。
【０１０４】
【発明の効果】
本発明によれば、データの書き込み時におけるパリティの更新処理を、ＣＰＵからの読み出しまたは書き込み要求が少ない時まで遅らせることが可能となる。これにより、ＣＰＵにとっては、読み出しまたは書き込み処理要求が多い時は書き込み処理を高速に行え、これにより単位時間当りのＩ／Ｏ処理件数を増加させることが可能となる。さらに、通常は使用しないスペアのＳＣＳＩドライブを回転待ち時間の短縮という性能向上のために使用でき、ＳＣＳＩドライブ資源の有効活用が図れる。
【図面の簡単な説明】
【図１】第１の実施例の全体構成図。
【図２】第１の実施例のクラスタ内構成図。
【図３】アドレス変換テーブルの説明図。
【図４】書き込み処理時のデータ移動説明図。
【図５】書き込み処理フローチャート（１）。
【図６】データ回復処理説明図、パリティグループを構成する各データのディスク上での位置説明図。
【図７】第３の実施例の全体構成図。
【図８】第３の実施例のクラスタ内構成図。
【図９】第３の実施例のサブＤＫＣ内構成図。
【図１０】論理グループテーブル説明図。
【図１１】ＲＡＩＤ  Ｌｅｖｅｌ５における更新処理説明図。
【図１２】ＲＡＩＤ５における書き込み処理タイミングチャート。
【図１３】書き込み処理フローチャート（２）。
【図１４】パリティ作成処理フローチャート。
【符号の説明】
１…ＣＰＵ、２…レイディスクコントローラ（ＡＤＣ）、３…アレイディスクユニット（ＡＤＵ）、４…外部インターフェースパス、５…チャネルパスディレクタ、６…チャネルパス、７…キャッシュメモリ、８…ドライブパス、９…アレイディスクユニットパス、１０…論理グループ、１２…ＳＣＳＩドライブ、１３…クラスタ、１４…ドライブ側キャッシュアダプタ（Ｃ  Ａｄｐ）、１５…インターフェースアダプタ、１６…チャネルパススイッチ、１７…制御信号線、１８…データ線、１９…パス、２０…マイクロプロセッサ１（ＭＰ１）、２１…チャネルインターフェース（ＣＨ  ＩＦ）回路、２２…データ制御回路（ＤＣＣ）、２３…グループアドレス変換回路（ＧＡＴ）、２４…チャネル側キャッシュアダプタ（Ｃ  Ａｄｐ）、２８…ドライブインターフェース回路（Ｄｒｉｖｅ  ＩＦ）、２９…マイクロプロセッサ３（ＭＰ３）、３０…データアドレステーブル４０、３１…サブキャッシュアダプタ、３４…ドライブアダプタ（Ｄｒｉｖｅ  Ａｄｐ）、３５…ドライブパス、３６…パリティ生成回路、４０…アドレス変換用テーブル（アドレステーブル）、４１…ＣＰＵ指定ドライブ番号、４２…ＳＣＳＩドライブアドレス、４３…ＳＣＳＩドライブ番号、４４…ＳＣＳＩ内Ａｄｄｒ、４５…論理アドレス、４６…ＣＣＨＨＲ、４７…キャッシュアドレス、４８…キャッシュフラグ、４９…無効フラグ、５０…パリティドライブ番号、５１…スペースドライブ番号、５２…ドライブフラグ、５３…ＳＤフラグ、６０…論理グループテーブル、６１…論理グループアドレス
【図１】
0003718506.tif 000002
【図２】
0003718506.tif 000003
【図３】
0003718506.tif 000004
【図４】
0003718506.tif 000005
【図５】
0003718506.tif 000006
【図６】
0003718506.tif 000007
【図７】
0003718506.tif 000008
【図８】
0003718506.tif 000009
【図９】
0003718506.tif 000010
【図１０】
0003718506.tif 000011
【図１１】
0003718506.tif 000012
【図１２】
0003718506.tif 000013
【図１３】
0003718506.tif 000014
【図１４】
0003718506.tif 000015