(57)【要約】【課題】並列転送できるデータ数を増大する。【解決手段】ディスクアレイのディスク制御装置２に接続されたドライブユニット３において、複数のドライブ４からなる論理グループ５を構成する。この論理グループ５内において各データは同一のドライブに保持された複数のデータのコピーデータは、そのドライブ以外の、互いに異なる他のドライブに分散して保持されるように、二重化して格納される。　同一のドライブに保持されたデータを複数読み出す場合、それらのデータの２重化データあるいは元データを異なるドライブから並列に読み出す。【選択図】　図１
2004046864.tif 000002
【特許請求の範囲】
【請求項１】
複数のディスク装置からなる第一のディスク装置群と、
前記第一のディスク装置群とは異なる複数のディスク装置からなる第二のディスク装置群と、
上位装置、前記第一のディスク装置群及び前記第二のディスク装置群とに接続されるディスク制御装置とを有し、
前記ディスク制御装置は、前記上位装置から書き込みを要求されたデータを所定の単位に分割して前記第一のディスク装置群及び前記第二のディスク装置群に二重化して書き込み、かつ前記データが前記上位装置で実行されるアプリケーションにおいて連続的なデータであると認識される場合には、前記第二のディスク装置群に前記データを書き込む際に、分割された個々のデータを該第二のディスク装置群が有する複数のディスク装置に分散して格納することを特徴とするディスクアレイ。
【請求項２】
前記アプリケーションとは、ファイルシステムであることを特徴とする請求項１記載のディスクアレイ。
【請求項３】
前記第一のディスク装置群が有する記憶領域は前記第二のディスク装置群に含まれるディスク装置の個々と関連付けられており、
前記ディスク制御装置は、前記関連付けに基づいて、前記記憶領域に格納されたデータを二重化して前記第二のディスク装置群に格納し、更に前記ディスク制御装置は、前記シーケンシャルなデータと認識されるデータを前記第一のディスク装置群に格納する際に、前記関連付けを参照して、前記記憶領域に対応する前記第二のディスク装置群の個々のディスク装置が重複しないように前記記憶領域を選択して前記データを格納することを特徴とする請求項２記載のディスクアレイ。
【請求項４】
前記第一のディスク装置群内のいずれかのディスク装置に障害が発生したときに、
前記ディスク制御装置は、前記障害の発生したディスク装置に格納されているデータと同じデータを前記第二のディスク装置群から読み出すことを特徴とする請求項３記載のディスクアレイ。
【請求項５】
前記ディスク制御装置は、前記第二のディスク装置群から読み出されたデータを前記障害の発生したディスク装置の代わりに使用される交替用のディスク装置に書き込むことを特徴とする請求項４記載のディスクアレイ。
【請求項６】
前記ディスク装置は、前記障害の発生したディスク装置に格納されているデータを前記第二のディスク装置群から並列に読み出すことを特徴とする請求項４記載のディスクアレイ。
【請求項７】
記憶装置システムにおいて複数のディスク装置にデータを格納する方法であって、
複数のディスク装置を第一のディスク装置群と第二のディスク装置群に分割し、
記憶装置システムに接続される上位装置から要求されたデータの書き込みについて、前記第一のディスク装置群及び前記第二のディスク装置群へ二重化してデータを書き込む際に、前記上位装置で実行されるアプリケーションにおいて連続的なデータであると認識されるデータについては、前記第二のディスク装置群へ前記データを書き込む際に、該データを分散して書き込むことを特徴とするデータ格納方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は複数のデータを２重化して保持するディスクアレイ装置に関する。
【０００２】
【従来の技術】
現在、コンピュータ等の情報処理装置においては、中央処理装置（ＣＰＵ）等の上位側装置が必要とするデータは２次記憶装置に格納され、ＣＰＵからの要求に応じてデータの読出し／書込みが行なわれる。このような２次記憶装置には、一般に不揮発な記憶媒体が使用されていおり、その代表的なものとして、磁気ディスク装置、光ディスク装置などがある。
【０００３】
近年、高度情報化に伴い、２次記憶装置に対する処理速度等の性能の向上、あるいは信頼性の向上が要求されてきている。このような要求に答えるため、以下に述べるような比較的容量の小さな複数のディスク装置（以下、ドライブとする）とくに磁気ドライブを用いて構成されるディスクアレイ装置が考えられている。
【０００４】
ディスクアレイ装置は、そのデータ格納方法によりいくつかの種類に分類される。
【０００５】
まず、図１６（ａ）にミラーディスクを用いたディスクアレイ装置におけるデータの格納方式を示す。
【０００６】
ミラーディスクを用いたディスクアレイ装置では、２台のドライブに全く同じデータを同じように格納する。図１６（ａ）ではドライブ＃１とドライブ＃２がペアとなりドライブ＃３とドライブ＃４がペアとなっており、２つのミラーディスクペアにより１つの論理グループが構成されている。このようなアレイディスク装置では、それぞれのドライブのペアにはそれぞれ同一のデータが格納されているため、例えば、ドライブ＃１に障害が発生し、その内部に格納されているデータが読み出せなくなったなった場合、ドライブ＃２からデータを読み出すことによりドライブ＃１に格納したデータへのアクセスが可能となる。なお、ドライブ＃２に障害が発生した場合は同様にドライブ＃１からデータを読みだすことによりドライブ＃２のデータへのアクセスが可能となる。このように、ドライブ＃１，＃２のペアでは一方のデータがバックアップデータとなり、ドライブ障害に対し信頼性を向上させることができる。ドライブ＃３，＃４のペアについても同様のことがいえる。また、ミラーディスクを利用し、２台のドライブにおいて、並列に処理する方法について、特願平３−２５３９３３に開示されている。
【０００７】
図１６（ｂ）には、ＣＰＵから転送されてきた一つのデータ３を分割し、分割したデータのそれぞれを複数のドライブ＃１−＃３にパラレルに記録するタイプ（ＲＡＩＤ３）のディスクアレイ装置を示す。このディスクアレイ装置では、記録したデータを読み出す場合、データ格納時とは逆に、各ドライブに記録されている分割されたデータを同時に読み出し、この読み出したデータをつなぎあわせて元のデータを再生しＣＰＵへ転送する。このように、複数のドライブからデータをパラレルに読み出し、または書き込むことを以下ではパラレル処理という。このような、複数のドライブのパラレル処理では、パラレル処理を行なうドライブのグループを単位として、記録媒体であるディスクの回転を同期させ、グループ内の各ドライブに対しては、同一のアドレスに対しデータの読み出し／書込みを行なう。これにより、複数のドライブが同じ動作を行う。このようにデータを分割してパラレル処理を行なうディスクアレイ装置においては、信頼性を向上させるため、分割したデータからＥＣＣ（エラーコレクションコード）を作成し、このＥＣＣを格納する専用のドライブ＃４を用意する。ＥＣＣが奇数パリティの場合、各ドライブに格納されているデータについて、横方向の各ビットに対し、１となるビットの数が奇数となるようにパリティが設定される。例えば、図１８に示すように、ｒｏｗ＃７について、ドライブ＃１，３のデータビットが１であり、ドライブ＃２のデータビットが０となっているとする。この場合、パリティは１となる。ここで、もし、ドライブ＃１（ドライブ＃２，３についても同様）に障害が発生し、ここからデータが読み出せなくなった場合は、ドライブ＃２，３のデータとドライブ＃４のパリティからドライブ＃１内のデータを復元することが可能となる。
【０００８】
アレイディスク装置の種類の３番目として図１７（ａ）および（ｂ）にデータを分割せずに個々のデータをドライブに格納し、それぞれのデータを独立に扱うタイプ（ＲＡＩＤ５）のディスクアレイ装置を示す。このようなディスクアレイ装置においても信頼性を向上させるため、ＥＣＣを作成する。このようなディスクアレイ装置においては、図１７（ａ）および（ｂ）に示すようにｒｏｗ方向の各データのグループに対しＥＣＣが作成される。このディスクアレイ装置では、ＥＣＣを格納する専用のドライブを用意せず、ＥＣＣをデータと同様に各ドライブに振り分けて格納する。もし、ドライブ＃１（ドライブ２，３，４についても同様）に障害が発生した場合はドライブ＃２，３，４に格納されているデータおよびパリティからドライブ＃１内のデータを復元することが可能となる。
【０００９】
このようなディスクアレイ装置に関する代表的な論文として、Ｄ．Ｐａｔｔｅｒｓｏｎ，
Ｇ．Ｇｉｂｓｏｎ，ａｎｄ　Ｒ．Ｈ．Ｋａｒｔｚ　による“　Ａ　Ｃａｓｅ　ｆｏｒ　Ｒｅｄｕｎｄａｎｔ　Ａｒｒａｙｓ　ｏｆ　Ｉｎｅｘｐｅｎｓｉｖｅ　Ｄｉｓｋｓ（ＲＡＩＤ）”，　ＡＣＭ　ＳＩＧＭＯＤ　Ｃｏｎｆｅｒｅｎｃｅ，Ｃｈｉｃａｇｏ，ＩＬ，（Ｊｕｎｅ，１９８８）　ＰＰ１０９−１１６がある。この論文には、上記の各ディスクアレイ装置について、その性能および信頼性の検討結果が報告されている。１番目に述べた従来ミラー方式はこの論文ではＦｉｒｓｔ　Ｌｅｖｅｌ　ＲＡＩＤとして述べられており、２番目のデータを分割してパラレル処理を行なう方式はＴｈｉｒｄ　Ｌｅｖｅｌ　ＲＡＩＤ（以下ＲＡＩＤ３とする）として述べられ、３番目に述べたのデータを分散し、パリティも分散して格納する方式はＦｉｆｔｈ　Ｌｅｖｅｌ　ＲＡＩＤ（以下ＲＡＩＤ５とする）として述べられている。現在この論文に書かれている方式のディスクアレイ装置が、最も一般的なディスクアレイ装置であると考えられている。
【００１０】
【発明が解決しようとする課題】
従来のミラー方式のディスクアレイ装置（図１６（ａ））では、データ＃１から１２までといって大量のデータをＤＫＣ内のキャッシュメモリへ転送する場合、通常はドライブ＃１または２からデータ＃１、２、３、４………、１２を順に読みだしキャッシュメモリへ転送する。ここでデータ処理時間Ｔｍは、キャッシュメモリへ転送するデータ量をＤ（ＫＢ），転送速度をＳ（ＭＢ／ｓ）、処理のオーバヘッドをＴｏｈとすると
【００１１】
【数１】
Ｔｍ＝Ｄ／（Ｓ×１０００）＋Ｔｏｈ　（ｓ）　　　　　　　（１）
となり、Ｔｍは１台のドライブで通常のデータ処理を行なう時間に等しくなる。このため、高速転送は期待できない。ＣＰＵ，ドライブ間においてランダムに少量のデータの読み出し／書込みを行なう通常のアクセスの場合、アクセス性能（単位時間当りの最大読み出し／書込み処理件数）は、読み出しでは４台のドライブで同時に４個の要求を受け付けられ、書込みでは２台のドライブの２ペアーで２個の要求を受け付けることが可能となる。このため、大量のデータを高速に転送する性能は低いが、ＣＰＵ、ドライブ間における通常の読み出し／書込み処理性能は高い。
【００１２】
一方、従来のＲＡＩＤ３タイプのディスクアレイ装置（図１６（ｂ））においては、一つのデータを分割してドライブ＃１から３に格納しており、データの読み出し／書込みは、常に４台（パリティ用のドライブ１台を含む）のドライブに対し同時に行なわれる。このため、個々の各ドライブ内のデータのみでは意味が無く、ドライブ＃１から３までのデータが全て揃わないと一つのデータにはならない。この場合、転送速度は３×Ｓ（ＭＢ／ｓ）となり、データ処理時間Ｔ３は、キャッシュメモリへ転送するデータ量をＤ（ＫＢ），オーバヘッドをＴｏｈとすると
【００１３】
【数２】
Ｔ３＝Ｄ／（Ｓ×１０００×３）＋Ｔｏｈ≒Ｔｍ／３　（ｓ）　　（２）
となる。ＲＡＩＤ３ではパラレル処理が行なわれ、このように大量のデータ転送を行なう場合には、図１９（ａ）に示すようにＴｏｈは無視でき、従来のミラー方式（図１６（ｃ））のように１台のドライブでデータ処理する場合と比較し、データの転送時間は約１／３となり、キャッシュメモリへシーケンシャルに大量のデータを高速に転送する場合は効果的である。
【００１４】
しかし、ＣＰＵがドライブに対して通常の読み出し／書込みを行なう場合は、データの格納先はランダムで小容量のデータであり、しかも要求は頻繁に出されてくる。ＲＡＩＤ３では１つのデータに対しドライブ＃１から４までを同時にアクセスするため、ドライブが４台あっても一度に受け付けられる読み出し／書込み要求は１つだけである。パラレル処理により転送速度が速くなっても図１９（ｂ）に示すように小さなデータ量ではデータ処理時間の中でオーバヘッドが占める割合が大きいのであまり効果が無い。このため、ＣＰＵ、ドライブ間における通常の読み出し／書込み処理の性能の向上はあまり期待できない。
【００１５】
ＲＡＩＤ５のディスクアレイ装置においては、図１７（ａ）のように、ドライブ単位でデータの塊（例えば、ドライブ＃１ではデータ＃１、２、３、４、５、６、７、８、９）を格納してある場合、従来のミラー方式と同様に、例えば、＃１のデータから順にキャッシュメモリへ転送するには、ドライブ＃１から一連のデータを読みだしキャッシュメモリへ転送する。このため、データ処理に要する時間は、従来のミラー方式と同様に１台のドライブでデータ処理する時間となる。しかし、論理グループ全体のデータを読み出し／書込みを行なう場合はドライブ＃１，２，３，４をパラレルに同時に処理することにより高速転送を可能とする。
【００１６】
一方、図１７（ｂ）のように、ドライブ間に渡ってデータの塊（データ＃１、２、３、４、５、６、７、８、９）を格納してある場合、シーケンシャルに一度に処理する時は、ＲＡＩＤ３と同様にドライブ＃１、２、３、４からのデータをパラレルに処理しキャッシュメモリへ転送することができる。従って、この場合にはＲＡＩＤ３と同様、大量のデータであれば従来のミラー方式のように１台のドライブでデータ処理する場合と比較し、約１／３の時間の処理時間ですむ。ＲＡＩＤ５におけるこのようなデータの格納方法は、キャッシュメモリへシーケンシャルに大量のデータを高速に転送する場合は効果的である。
【００１７】
ＲＡＩＤ５において、ＣＰＵ，ドライブ間のランダムで小容量のデータの読み出し／書込み処理を行なう場合、図１７の（ａ）および（ｂ）のいずれのようにデータを格納しても、従来のミラー方式と同様に４台のドライブで読み出し要求は同時に４個、書込み要求はは同時に２個の要求を受け付けることが可能となる。しかし、ＲＡＩＤ５ではデータを書き込む場合、パリティの変更に大きなオーバヘッドを必要とする。例えば、図１７（ａ）において、ドライブ＃２のデータ＃１０を書き替える場合（図１７（ｂ）ではデータ＃２を書きかえる場合）、まず、データ＃１０とドライブ＃４のパリティを読み出す。この読みだしに、平均して１／２回転の回転待ちが必要となる。次にこの読み出したデータ＃１０とパリティと新しく書き込むデータ＃１０から新しいパリティを作成し、この新しく書込むデータ＃１０と新しく作成したパリティをそれぞれ、ドライブ＃２，４に書き込む。この際、さらに１回転の回転待ちが必要となり、書込み処理には合計最低１．５回転の回転待ちが必要となる。従来のミラー方式、ＲＡＩＤ３では読みだし／書き込み処理の回転待ちは平均して１／２回転ですむ。このディスクの回転は機械的なオーバヘッドであり、他の電気的なオーバヘッドと比較し非常に大きい。このため、書込み処理におけるディスクの回転待ちは非常に大きなオーバヘッドとなり、ランダムな小容量のデータを処理する場合、処理性能は大きく低下する。従って、ＲＡＩＤ５において、図１７（ｂ）のようにデータを格納しても、大量のデータを高速に転送する性能は高いが、ＣＰＵ、ドライブ間における通常の読み出し／書込み処理で、書き込み要求が多くなると処理性能は低下してしまう。
【００１８】
以上のように従来のミラー方式、ＲＡＩＤ３，およびＲＡＩＤ５では、半導体記憶装置−ドライブ間における大量なデータ転送の高速化という要求と、ＣＰＵ−ドライブ間における通常の読み出し／書込み性能の向上という要求を両立することはできない。
【００１９】
本発明の目的は、従来技術の上記問題を解決したディスクアレイ装置を提供することである。
【００２０】
【課題を解決するための手段】
このために、本発明によるディスク装置は、各ディスク装置に格納される複数の元のデータのコピーデータを、そのディスク装置以外の互いに異なる他のディスク装置に分散して格納する制御回路を有する。
【００２１】
【作用】
このようにデータを二重化すると共に、あるディスク装置に格納されたデータの二重化データを他のディスク装置に分散させて格納することにより、あるディスク装置内に格納される複数のデータを読み出す際、他のディスク装置からそれぞれのデータに対応するデータを同時に読み出すことによりパラレル処理を可能とし、高速なデータ転送を実現できる。
【００２２】
【実施例】
以下、図面を用い本発明について詳細に説明する。
【００２３】
（実施例１）
図１は、本発明による二重化ディスクアレイ装置の一実施例の構成図である。
【００２４】
ＣＰＵ１にはディスク制御装置（以下ＤＫＣとする）２が接続され、ＤＫＣ２には複数のドライブ４により構成されるドライブユニット（以下ＤＵとする）３が接続されている。ＤＫＣ２は、ＣＰＵ１および拡張記憶装置（ＥＳ）１９との間のインターフェース（Ｉ／Ｆ）制御を行うチャネルＩ／Ｆコントロールユニット（以下ＣＩＣＵとする）６、ＤＵ３内のドライブ４に対するデータの読みだし／書き込みを制御するデータコントロールユニット（ＤＣＵ）７、および、ドライブ４−ＤＫＣ２間のインターフェース制御を行なうドライブＩ／Ｆコントロールユニット（以下ＤＩＣＵとする）１０により構成される。ＤＵ３は２台以上のドライブ４により構成される１または複数の論理グループ５により構成される。論理グループ５内には、二重化されたデータの両方が格納されており、元のデータとそのコピーとはそれぞれ別のドライブ４に格納されている。
【００２５】
各ドライブ４の内部構造を図２に示す。データが記録される複数のディスク１１が一本の軸１２を中心に回転するように設けられており、ディスク１１上のデータはヘッド１３により読出され、あるいは書き込まれる。このヘッド１３は一枚のディスク１１の一面に対し最低１個必要で、全てのヘッド１３はアクチュエータ１４によりディスク１１に対し同時に位置決めされる。ドライブ４ではディスク面上には同心円のトラックにデータが記憶されており、一回のヘッド位置決めにより読み出し／書込み可能なトラックの集合をシリンダと呼ぶ。ディスク面上では外周から内周に向い、各トラックに対しシリンダアドレスが付けられている。データの読み出しまたは書き込みを行う場合は、当該データが格納されている、または、格納すべきアドレスをＣＰＵ１より指定してアクセスする。具体的には、ＣＰＵ１からは、ヘッド１３を選択するヘッド番号とシリンダアドレスの組からなるドライブ内アドレスを指定して読みだし、あるいは書き込み命令を発行し、指定されたアドレス内のヘッドアドレスに対応したヘッド番号をヘッドセレクタ１５により選択し、シリンダアドレスに対応したトラックまでアクチュエータ１４によりヘッド１３を移動させるシークを行う。データの格納されている、または、格納すべきアドレスへのアクセスが完了した後、パスセレクタ１６により上位とのパスを選択し、ディスク１１からＲ／Ｗ回路１７によりディスク１１上のデータを読み書きする。論理グループ５内においては各ドライブ４は各々異なった任意のドライブ内アドレスへアクセスすることが可能である。
【００２６】
次にＤＫＣ２内のＣＩＣＵ６とＤＣＵ７について図１により説明する。
【００２７】
ＣＩＣＵ６はインターフェースアダプタ（以下ＩＦ　Ａｄｐ）２１とチャネルパススイッチ２２により構成される。ＣＩＣＵ６はＣＰＵ１とＤＫＣ２間の外部パス２０を切り替え、当該ＣＰＵ１とＤＫＣ２間の接続を行なう。具体的には読み出し時はチャネルパススイッチ２２により当該ＣＰＵ１との間の外部パス２０を選択した後、キャッシュメモリ１８からのデータをＩＦ　Ａｄｐ２１により外部パス２０を介して当該ＣＰＵ１に転送する。また、書き込み時は逆に、チャネルパススイッチ２２により当該ＣＰＵ１との間の外部パス２０を選択した後、当該ＣＰＵ１から外部パス２０を介してデータをＩＦ　Ａｄｐ２１に転送しキャッシュメモリ１８に格納する。
【００２８】
ＤＣＵ７はデータ制御部８とデータ管理テーブル３１により構成される。データ制御部８はＤＫＣ２内のデータ処理の制御を行なうマイクロプロセッサ（ＭＰ）２９とチャネルインターフェース回路（ＣＨ　ＩＦ）２４とデータ制御（ＤＣＣ）２５とチャネル側キャッシュアダプタ（Ｃ　Ａｄｐ）２６とドライブ側キャッシュアダプタ（Ｃ　Ａｄｐ）２７とドライブインターフェース回路（Ｄｒｉｖｅ　ＩＦ）２８により構成される。ＣＨ　ＩＦ２１はＣＰＵ１におけるチャネルインターフェースのプロトコルとＤＫＣ２内の処理の変換と、チャネルインターフェースとＤＫＣ２内の処理速度の調整を行なう。具体的にはＣＰＵ１，ＤＫＣ２間のチャネルインターフェースを光のインターフェースにした場合、光のインターフェースのプロトコルとＤＫＣ２内での電気処理でのプロトコルの変換を行なう。ＭＰ２９の指示の元で、ＤＣＣ２５はＤＫＣ２内のデータ転送制御を行なう。Ｃ　Ａｄｐ２６はキャッシュメモリ７に対するデータの読みだし、書き込みをＭＰ２９の指示で行う回路で、キャッシュメモリ７の状態の監視、各読みだし、書き込み要求に対し排他制御を行う回路である。キャッシュメモリ１８からＣＡｄｐ２３により読み出されたデータはＤＣＣ２５の制御によりＣＨ　ＩＦ２４に転送され、逆にＣＨ　ＩＦ２４から転送されてきたデータはＤＣＣ２５の制御によりＣ　Ａｄｐ２６に転送され、Ｃ　Ａｄｐ２６によりキャッシュメモリ１８に格納される。ドライブ側のＣ　Ａｄｐ２７はチャネル側のＣ　Ａｄｐ２６と同様にキャッシュメモリ７に対するデータの読みだし、書き込みをＭＰ２９の指示で行う回路で、キャッシュメモリ７の状態の監視、各読みだし、書き込み要求に対しＣ　Ａｄｐ２６と共同で排他制御を行う回路である。Ｄｒｉｖｅ　ＩＦ２８はＭＰ２９の指示により、当該ドライブ４へ読み出しまたは書き込みに関するコマンドを発行する。
【００２９】
以上説明したデータ制御部８は、ＤＵ３内の複数のドライブ４を同時に処理するのに十分な処理性能を持つ。
【００３０】
次に、ＤＫＣ２内のＤＣＵ７について詳細に説明する。
【００３１】
以下ではドライブ数ｍを４として説明するが一般にはｍは３以上であればよい。
【００３２】
ＤＣＵ７はデータ制御部８とデータ管理テーブル９により構成される。データ制御部８のマイクロプロセッサ（ＭＰ）２９は、アドレスが格納されているデータ管理テーブル９を参照することにより、ＤＵ３内におけるデータのドライブ内アドレスを認識し、ＤＵ３内の該当ドライブ４に対するデータの読み出し／書込みの制御を行なう。本実施例では二重化制御はＣＰＵ１が元のデータのみしか認識せず、ＤＫＣ２が以下に示す規則に従い、元のデータが格納されるアドレスに対するアドレスに、独自に二重化データを格納する。なお、ＣＰＵ１内にＤＣＵ７の持つデータ管理テーブル９と同様なテーブルを持たせ、ＯＳからこのテーブルを参照して該当ドライブ４に対するデータの読みだし／書き込み制御を行なうことによりＣＰＵ１が二重化制御を行うことも可能である。データ管理テーブル９は、元のデータ及び二重化されたデータが格納されているアドレスのテーブルとして構成され、要求データに対応したドライブ番号、シリンダアドレス、ヘッドアドレス等が格納される。
【００３３】
本実施例では、以下の説明においてデータ名を領域名ともする。
【００３４】
本実施例では図３，４に示すように論理グループ５において、１２個のデータが格納できる領域を１グループとする。なお、これは４台のドライブ４で１つの論理グループ５を構成したためで、論理グループを構成するドライブ数を変えたときには１グループ内のデータ数を次のように変えればよい。論理グループ５を構成するドライブ数をｍ台とした場合には、（ｍ−１）×ｍ個のデータと、その二重化データが格納可能な領域により１つのグループを構成する。データの単位についての特に制約は無いが、以下の説明ではデータの単位を１トラック分の容量に固定して説明する。なお、１トラックが複数の独立したデータで構成され、元データおよび二重化データがトラック単位にまとめられて、格納規則に従って領域が分り当てられているとしてもよい。このように、トラック単位で管理することにより、データ単位での管理としない管理の簡略化が図れることは明らかである。
【００３５】
ＤＵ３へのデータの格納は以下のように行なわれる。
【００３６】
グループ内の各ドライブ４において論理グループ５を構成するドライブ４の台数から１をひいた数のデータが格納できる領域をサブグループとする。そこで、グループに、データ＃１から＃１２の１２個のデータを格納する場合、３個のデータが、４個のサブグループに格納される。例えば、ドライブ＃１のサブグループには、データ＃１、＃２、＃３が格納され、ドライブ＃２のサブグループにはデータ＃４、５、６が格納され、ドライブ＃３のサブグループにはデータ＃７、＃８、＃９が格納され、ドライブ＃４のサブグループにはデータ＃１０、＃１１、＃１２が格納され、データ＃１から１２の各データは、図４のように配置される。
【００３７】
このようにグループ内のサブグループに配置されたデータに対するアドレス管理方法を以下に示す。本実施例では、論理グループ５を構成する各ドライブ４において、シリンダアドレスが等しいシリンダによりグループを構成する。
【００３８】
図４は、論理グループ５を構成する各ドライブ４において、シリンダ＃１に配置されているデータを示す。
【００３９】
本実施例では、各シリンダは、トラック＃１から１２（ヘッドアドレス＃１から１２）までの１２個のトラックにより構成されるとする。
【００４０】
グループ１はドライブ＃１，２，３，４において、各ドライブ４のシリンダ＃１のトラック＃１，２，３，４，５，６（ヘッドアドレス＃１，２，３，４，５，６）により構成される。
【００４１】
グループ２はドライブ＃１，２，３，４において、各ドライブ４のシリンダ＃１のトラック＃７，８，９．１０，１１，１２（ヘッドアドレス＃７，８，９，１０，１１，１２）により構成される。
【００４２】
サブグループはグループ１ではドライブ＃１，２，３，４のシリンダ＃１のトラック＃１，２，３（ヘッドアドレス＃１，２，３）で構成され、グループ２ではドライブ＃１，２，３，４のシリンダ＃１のトラック＃７，８，９（ヘッドアドレス＃７，８，９）で構成される。
【００４３】
本実施例において、各データはデータ管理テーブル９をもとに図３に示すように異なる２つのドライブ内のシリンダアドレスｉとヘッドアドレスｊで定まるアドレス（ｉ，ｊ）の位置に２重化され、各ドライブには、図４に示すように格納されているとする。データ＃１は、ドライブを＃１のシリンダアドレス＃１、ヘッドアドレス＃１（以下、（シリンダアドレス、ヘッドアドレス）として示す）のアドレスに格納され、この２重化データは、ドライブ＃２の（１、４）のアドレスに格納され、データ＃２は、ドライブ＃１の（１、２）のアドレスに格納され、その二重化データはドライブ＃３の（１、４）のアドレスに格納されている。以下、データ＃３、４、５、・・・についても図３，４に示す規則で同様に格納される。
【００４４】
このように、二重化データは、原則として論理グループ５を構成するドライブ４の集合の中で、元のデータが格納されているドライブ４以外のドライブ４に平均的に分散させて格納する。つまり、ドライブ＃１に格納されるデータ＃１、＃２、＃３の二重化データは、ドライブ＃１以外のドライブ＃２、＃３、＃４の何れかにそれぞれ格納される。本実施例ではデータ＃１はドライブ＃２に、データ＃２はドライブ＃３に、データ＃３はドライブ＃４に格納している。同様にデータ＃４、＃５、＃６はそれぞれドライブ＃１，＃３，＃４に、データ＃７、＃８、＃９はそれぞれドライブ＃１，＃２，＃４に、データ＃１０、＃１１、＃１２はそれぞれドライブ＃１，＃２，＃３に格納する。すなわち、論理グループ５を４台のドライブ４で構成した場合ドライブ＃１の元データに対する二重化データは、論理グループ５を構成するドライブ＃１以外のドライブ４（ドライブ＃２，３，４）に割り当てられる。また、ドライブ＃２の元データに対する二重化データは、論理グループ５に構成するドライブ＃２以外のドライブ４（ドライブ＃１，３，４）に割り当てられる。ドライブ＃３の元データに対する二重化データは、論理グループ５を構成するドライブ＃３以外のドライブ４（ドライブ＃１，２，４）に割り当てられる。ドライブ＃４の元データに対する二重化データは、論理グループ５を構成するドライブ＃４以外のドライブ４（ドライブ＃１，２，３）に割り当てられる。このように元データと二重化データの格納されドライブの割り当てた後、各ドライブ内のアドレス（シリンダアドレス、ヘッドアドレス）の割当は以下のようにする。本実施例では同一のサブグループに属する元のデータに対する二重化データは元のデータと同一のシリンダアドレスとした。これは、本実施例では論理グループを構成する各ドライブ４において、グループを同一シリンダで構成しているためである。もし、元データおよび二重化データがランダムなシリンダアドレスに割り当てられているとし、これらによりグループを構成すると、後に説明する高速転送のように複数ドライブによるパラレル処理を行なう際にヘッドの移動（シーク）が必要となり、性能が低下する。一方、ヘッドアドレスは原則としては同一のヘッドアドレスとする。もし、格納されるシリンダにおいて、同一のヘッドアドレスに割り当てるさいに、そのアドレスの前の領域が空いている場合は詰めて割り当てる。具体的には、図４においてドライブ＃２の元データであるデータ＃４の二重化データは、ドライブ＃１のシリンダ＃１において、トラック＃４が空いているためトラック＃４に詰めて割り当てられる。本実施例では元のデータの格納されるトラックの集合（グループ１ではトラック＃１，２，３）と二重化データが格納されるトラックの集合（グループ１ではトラック＃４，５，６）を分けて同一のヘッドアドレスとしているが、これらを混在させることも可能である。しかし、混在させた場合、後で示す高速転送の際にヘッドの切り替えが頻繁に必要となり、この時の制御やアドレスの管理が複雑となる。このため、混在させる場合、元データの格納されるトラックの集合と二重化データの格納されるトラックの集合単位での混在が望ましい。
【００４５】
各ドライブの領域を元データ用と２重化データ用に割り当てるにあたっては、各ドライブの２（ｍ−１）個の領域ドライブ数ｍ＝２ｍ（ｍ−１）個の領域を群とし、これらをｍ（ｍ−１）個の元データ用領域と、それと同数の現データを保持する領域に分ける。
【００４６】
本実施例ではドライブ数ｍのときに、同一ドライブ内のｍ−１個の元データに対する２重化データが分散されている数ｎはｍ−１に等しく、（ｍ−１）個の他のドライブに分散して記憶される。従って、最大ｎ＋１＝ｍ個のドライブから、ｍ個のデータを並列に読めるようになる。
【００４７】
以上述べた規則に従うことにより、グループ１のデータ＃１から＃１２は、図４に示すように各ドライブ４に格納される。グループ２に以降についても同様にグループ分けされ、その各グループにおいて図４に示すような規則で格納されている。データ管理テーブル９は、このような規則に従ってデータを格納するため、図３に示すような対応表を持つ。データ管理テーブル９は図２０に示すように格納されるデータ名に対し、元データが格納されているアドレスと、この元データが格納されているアドレスに割り当てられた二重化データが格納されているアドレスで構成されている。初期設定の段階ではアドレス管理テーブル９は元データアドレスと二重化データアドレスのみしか登録されておらず空き領域となっており、順次データが格納される毎にデータ名がアドレス管理テーブル９に登録されていく。また、格納されたデータを削除した場合は、アドレス管理テーブル９において登録されているデータ名を削除し、元データアドレスと二重化データアドレスはそのままである。このように、データを格納する場合、アドレス管理テーブル９においてデータ名の登録されていない空き領域を探し、この空き領域にデータ名を登録し、元データを格納するアドレスと、二重化データを格納するアドレスを自動的に決定する。ＤＣＵ７ではデータ制御部８のＭＰ（２９）がＣＰＵ１が指定してきた元のデータのアドレスに基づいてこのデータ管理テーブル９を参照し、元のデータ及び二重化データが格納されているドライブ４に対し読み出し／書込み処理を行なう。
【００４８】
次に、このように格納されているデータに対し、読み出し／書込みを行なう方法について説明する。
【００４９】
まず、ドライブ４からのデータの読み出しについて説明する。
【００５０】
ＤＫＣ２ではＣＰＵ１から指定してきたデータに対しＤＣＵ７において、ＭＰ２９がデータ管理テーブル９を用いてそのデータが格納されているドライブ及びそのドライブ内のシリンダアドレス、ヘッドアドレスを決定する。ＤＣＵ７のＭＰ２９によるドライブからのデータ読み出し方法としては、大きく以下の３通りの方法がある。
【００５１】
第１は、図５にフローチャートとして示すように、読み出しは、ＣＰＵ１から指定されてきたデータは元のデータ（図３において各データが格納されるアドレスの内、上段のアドレスに格納されているデータ）のみとし、ＤＣＵ７のＭＰ２９は、元のデータが格納されているドライブへ読み出し要求を出す。もし、元のデータが格納されているドライブが使用中で読み出し処理ができない場合は、そのドライブが使用可能になるまで待って読み出し処理を行なう。
【００５２】
第２は、図６にフローチャートとして示すように、ＣＰＵ１からの要求に対し、ＤＣＵ７のＭＰ２９はまず、元のデータが格納されているドライブに対し読み出し要求を出し、当該ドライブが使用中で処理ができない場合は二重化データの格納されているドライブに対し、読み出し要求を出す。もし、元のデータ及び二重化データの格納されているドライブが両方とも使用中で処理できない場合は、どちらか早く処理可能となったドライブを用いて読み出し処理を行なう。
【００５３】
第３は、元のデータと二重化データの区別をせず、ＣＰＵ１からの要求にたいし、ＤＣＵ７のＭＰ２９が初めから元のデータと二重化データの両方に対し読み出し要求を出し、早く処理できる方から処理を行なう。
【００５４】
上記３通りのいずれかの方法によりドライブ４からデータを読み出した後は、ＤＩＣＵ１０によるドライブ，ＤＫＣ２間のインターフェース制御を受け、読み出されたデータはＤＣＵ７へ転送される。ＤＣＵ７ではデータを受け取り次第ＣＩＣＵ６を介してＣＰＵ１へ当該データを転送する。
【００５５】
一方、書込みの場合は図５、６にフローチャートとして示すように、ＤＣＵ７のＭＰ（２９）は元のデータと二重化データを格納するアドレスの決定後、格納先の両ドライブ４に対し書込みが可能な場合は即座にデータおよび二重化データを書き込む。しかし、一方のドライブ４が使用中で書込みが行なえない場合は、先に書き込める方のドライブ４に書込んでおき、他方には書き込み可能になり次第書き込む。なお、ＣＰＵ１側では二重化データを書き込むことは認識しておらず、ＤＫＣ２が独自に行なう。このようにＣＰＵ１からＤＫＣ２へ読み出し／書込み要求が来た場合はＤＣＵ７のＭＰ（２９）はデータ管理テーブル９を用いてＤＵ３内のアドレス（当該ドライブアドレス、ドライブ内アドレス（シリンダアドレス、ヘッドアドレス））を決定した後、そのアドレスへ読み出し／書込みを行なう。
【００５６】
上記の書き込み方法は、データ＃１から１２の各データは各々独立したデータとした。もし、連続した大容量の一つのデータの場合は、一つのグループ内に格納する。
【００５７】
具体的には、図４のデータ＃１，２，３，４，５，６を連続した一つのデータを６個に分割した部分データ＃１，２，３，４，５，６とする。この場合は、図４に示すように部分データ＃１，２，３をドライブ＃１のグループ１の連続した領域であるサブグループ１に格納し、それぞれの二重化データを先に示した各々が独立したデータの場合と同様にドライブ＃２，３，４に格納する。
【００５８】
同様に部分データ＃４，５，６をドライブ＃２のグループ１の連続した領域であるサブグループに格納し、それぞれの二重化データを先に示した各々が独立したデータの場合と同様にドライブ＃１，３，４に格納する。
【００５９】
連続した一つのデータに関し、データの大きさに制限は無い。もし、グループ１に格納しきれない大きさの場合は、別のグループ２に同様に格納していく。
【００６０】
このように各々独立したデータを大きな一つのデータを分割した、部分データと変えることにより、本発明を大容量データにも適用することが可能であることは明らかである。
【００６１】
次に、ＤＫＣ２内のキャッシュメモリ１８やＥＳ１９等の半導体を用いた記憶装置とＤＵ３間で、ある特定のドライブ４内のデータを連続して高速に転送する方法について述べる。
【００６２】
論理グループ５内の各ドライブ４内にデータが図４に示すように格納されている場合において、例えば、ドライブ＃１内のデータ＃１、＃２、＃３をＣＰＵ１においてソートしたり、データベースのデータをスワップするため高速に読み出したい場合は、ＤＣＵ７のＭＰ（２９）はドライブ＃２からデータ＃１、ドライブ＃３からデータ＃２、ドライブ＃４からデータ＃３をそれぞれパラレルに読み出す。このように分散して格納されている二重化データをパラレルに読み出すことにより、１台のドライブ４に格納されている元のデータを読み出すのと比較し、データ転送速度は約３倍となり高速転送が実現できる。他のドライブに格納されているデータを読みだす場合も同様に、ＤＣＵ７のＭＰ（２９）の制御により分散して格納されている二重化データをパラレルに同時に読み出すことで高速転送を行なうことができる。
【００６３】
この処理を拡大し、任意のデータ単位で高速転送を行なう方法を以下に示す。
【００６４】
例えば、データ＃２、＃３、＃４、＃５の４データを高速に読み出す場合、ＤＣＵ７のＭＰ２９は、それぞれのデータをドライブ＃３、＃４、＃１、＃２からパラレルに読み出す。データ＃２、＃３、＃４、＃５、＃６の５データの場合はドライブ＃３からデータ＃２、ドライブ＃４からデータ＃３、ドライブ＃１からデータ＃４、ドライブ＃２からデータ＃５、ドライブ＃４からデータ＃６をパラレルに読み出す。但し、ドライブ＃４からのデータ＃３と＃６の読み出しはシリアルになる。このようにＤＣＵ７のＭＰ２９において４台のドライブ４に分散して格納されている元のデータおよび二重化データにより、パラレル転送ができるように要求するデータを論理グループ５内の各ドライブ４から選択することにより、任意のデータ単位で高速転送することが可能となる。このとき、データ＃２，３，４，５を一つの大きなデータの部分データ＃，２，３，４，５と考えれば大容量のデータ転送に適用することにする。
【００６５】
次に、この高速転送による読み出しを用いて、論理グループ５内のデータのバックアップをとる方法について説明する。
【００６６】
論理グループ５内には元のデータと二重化データのペアーが全く同じデータとして格納されている。このため、論理グループ５を構成するドライブ４内に、格納されているデータのバックアップをとる場合は、図４の６トラックにより構成されるグループ１に対し、斜線で示された元のデータのみのバックアップを取れば良い。そこで、ＤＣＵ７のＭＰ２９はまず、ドライブ＃１からデータ＃１を、ドライブ＃２からデータ＃４を、ドライブ＃３からデータ＃７を、ドライブ＃４からデータ＃１０をパラレルに読み出す。これらのデータを読み出した後は同様に、ドライブ＃１から＃４までのそれぞれのデータ＃２、＃５、＃８、＃１１を、さらにデータ＃３、＃６、＃９、＃１２をパラレルに同時に読み出す。このようなデータの読み出しは、例えば、ドライブ＃１では、データ＃１、＃２、＃３が同一シリンダアドレスのヘッドアドレス＃０（ヘッド＃０にて読み出し／書込みができるトラック）、＃１、＃２に、ドライブ＃２では、データ＃４、＃５、＃６が同一シリンダアドレスのヘッドアドレス＃０、＃１、＃２に、ドライブ＃３ではデータ＃７、＃８、＃９が同一シリンダアドレスのヘッドアドレス＃０、＃１、＃２に、そして、ドライブ＃４ではデータ＃１０、＃１１、＃１２が同一シリンダアドレスのヘッドアドレス＃０、＃１、＃２に格納されているとすれば、各ドライブにおいてヘッドセレクタ１５によりヘッド＃０から＃２を順次選択して行なうことができる。このように論理グループ５を構成する各ドライブからデータをパラレルに同時に読み出すことにより、トラック＃１から６のグループ１をみると、データ＃１から１２までを１台のドライブから読み出すのと比較し１／４の時間で読み出すことが可能となる。
【００６７】
グループ１のデータ＃１から＃１２のバックアップをとった後は、同様にしてグループ２以降のデータについてバックアップをとっていけばよい。なお、すべてのデータについてバックアップとらず、任意のデータ数で部分的にバックアップをとることも可能である。また、元のデータのみではなく、二重化データも含めて論理グループ５全体のバックアップを取る場合はｒｏｗ＃１から３までのバックアップ完了後、引き続き同様にｒｏｗ＃４から６までパラレルに同時にデータを読み出し、以下のグループについても同様に順に読み出していく。パラレルに同時に読み出したデータは、一旦ＤＫＣ２のキャッシュメモリ１８に格納し、キャッシュメモリ１８から他の磁気ディスク装置または磁気テープ装置または光ディスク装置等のバックアップ媒体に格納する。
【００６８】
この高速転送はパラレルに読み出すのをパラレルに書き込みとすれば書込みの場合も同様に行なえることは明らかである。この高速転送による書込み時において、二重化データのドライブへの並列書き込みが完了した時点でＣＰＵ１へ終了報告を行っても良い。このようにした場合、二重化データへの書込みは完了するが元のデータへの書込みは完了しておらず、二重化してデータを書き込んではいない。しかし、高速転送による書込みは次のような場合に有効となる。半導体を用いた記憶装置は揮発性であるため、停電事故等による記憶装置内のデータの喪失を防ぐために少しでも早く磁気ディスク等の不揮発な媒体に書き込んでおきたいという要求がある。このため、高速転送による書込みにより、とりあえずデータを不揮発化しておき、ＤＣＵ７のＭＰ２９の判断で適当な時期に元のデータへの書込みも行ないデータの二重化を行なう。この高速転送による書込みにおいて、データの二重化が完了されているかどうかはＤＣＵ７のＭＰ２９において管理する。
【００６９】
以上述べたような高速転送による読み出し／書込み処理は論理グループ５内の各ドライブ４間のみで行なうだけではなく、複数の論理グループ５が協調し、論理グループ５間で高速転送による読み出し／書込み処理を行なうことも可能である。
【００７０】
また、高速転送による読み出し／書込み処理を行なう際、各ドライブの回転を同期させると、論理グループ５内の各ドライブ４における回転待ち時間が、一台のドライブの時と等しく平均で１／２回転となるため、前処理時間が短くなりより効果的である。
【００７１】
次に図１においてＤＵ３内の論理グループ５でどれか一台のドライブ４に障害が発生した時に、その障害ドライブ４のデータを回復する方法を示す。図４において論理グループ５内の４台のドライブ４のうちドライブ＃１に障害が発生したとする。この場合ＤＣＵ７のＭＰ２９が以下のような手順によりデータの回復を行なう。
【００７２】
まず、障害が発生したドライブ＃１を正常なドライブと交換する。この場合、ドライブ＃１内のデータは図４に示すようにドライブ＃２，＃３，＃４に二重化データとして格納されている。そこで、ドライブ＃１に障害が発生した場合は、ドライブ＃２，＃３，＃４からドライブ＃１の二重化データを読み出し、そのデータを交換した正常なドライブに書込み、データの回復を行なう。この時ドライブ＃１に格納される元のデータはドライブ＃２，＃３，＃４のそれぞれからパラレルに同時に読み出される。これらのデータは一端ＤＫＣ２内のキャッシュメモリ１８に格納する。キャッシュメモリ１８への格納が完了したら、キャッシュメモリ１８から正常なドライブに交換したドライブ＃１へ格納する。ドライブ＃１へのデータ格納終了後再び、ドライブ＃２、３、４からドライブ＃１の二重化データを一端ＤＫＣ２内のキャッシュメモリ１８に格納し、キャッシュメモリ１８への格納が完了したら、キャッシュメモリ１８から正常になったドライブ＃１へ格納する。このように、二重化データを一端キャッシュメモリ１８に格納し、キャッシュメモリ１８から正常になったドライブ＃１へ格納することを繰り返す。このように分割して処理するのは、キャッシュメモリ１８の容量がドライブ＃１の容量と比較し小さいので、一度に処理出来ないためである。もし、キャッシュメモリ１８の容量がドライブ＃１の容量と比較し大きい場合は一回で処理することも可能である。
【００７３】
図７（ａ），（ｂ）に従来ミラー方式におけるデータ回復処理と本実施例におけるデータ回復処理との処理タイミングチャートを示す。図７（ａ）に示すように、従来ミラー方式ではミラードライブと、交換して正常になったドライブは一台ずつであるため、ミラードライブからの二重化データの読み出し時間と、交換して正常になったドライブへの二重化データの書込み時間は等しく、一台のドライブでの処理時間となる。一方、本実施例では、図７ｂに示すように論理グループ５内の正常なドライブ４から二重化データをパラレルに同時に読みだすことにより、二重化データの読み出し時間が短縮されるため、データの回復時間は短くなる。また、二重化データのキャッシュメモリ１８への格納完了後キャッシュメモリ１８から正常になったドライブ＃１へ格納する際、二重化データが格納されているドライブ＃２、３、４において通常のオンライン処理（ＣＰＵ１からのアクセス要求）を受け付けるようにすると、図８ａ，８ｂに示すように回復処理時間を従来ミラー方式と同じにした場合、従来ミラー方式と比べて、本実施例の方がオンラインを受け付ている時間が長くなるため、回復処理によりオンライン要求が受け付けられない時間が少なくなり、回復処理中のオンライン処理の性能低下を抑えることが可能となる。
【００７４】
データの回復処理中のオンライン処理性能の低下を抑える別の方法として、ドライブ＃１に障害が発生し、二重化データをキャッシュメモリ１８に読み出す際に、先に示したようにドライブ＃２，＃３，＃４からパラレルに同時に読みだすのではなく、それぞれのドライブから順に格納されている二重化データを順番に読み出す方法がある。この方法を図９（ａ），（ｂ）を用いて説明する。ドライブ＃１の二重化データとして、図９（ａ）に示すようにドライブ＃２にはデータ＃４、＃１、＃１６、＃１３が、ドライブ＃３にはデータ＃７、＃２、＃１９、＃１４が、ドライブ＃４にはデータ＃１０、＃３、＃２２、＃１５がそれぞれ格納されている。ドライブ＃１に障害が発生するとドライブ＃１を正常なドライブに交換した後、図９（ｂ）に示すように、まずドライブ＃２からデータ＃４、＃１、＃１６、＃１３をキャッシュメモリ１８に格納し、キャッシュメモリ１８から正常なドライブに交換したドライブ＃１へデータを格納するデータ回復処理を行なう。ドライブ＃２からのデータ回復処理中はドライブ＃３，＃４においては通常のオンライン処理を行なう。ドライブ＃２における回復処理終了後は同様にドライブ＃３からデータ＃７、＃２、＃１９、＃１４を読みだして回復処理を行ない、この間はドライブ＃２，＃４においては通常のオンライン処理を行なう。同様にドライブ＃３の回復処理終了後はドライブ＃４にて回復処理を行なう。このようにデータ回復を行なうドライブ４を順番に切り換えるていくことにより、データの回復処理により占有されるドライブ４を分散させ、データ回復処理により読み出し／書込みができないデータが長時間存在することを防げる。このため、データ回復処理により読み出し／書込みができないという被害を受けるデータが平均化されるため、特定ユーザに被害が集中するのではなく、ユーザ間において被害が平均化される。なお、本実施例では障害が発生したドライブ４を交換した後に正常なドライブに入れ替え、そのドライブにデータを回復したが、予め障害が発生したドライブの予備としてＤＵ３内にドライブ４を用意しておき、障害が発生したら直ちに予備のドライブ４と切換えてデータ回復を行なうことも考えられる。
【００７５】
次に、書込み処理中における読み出し処理性能について従来のミラー方式と比較して説明する。
【００７６】
図１０（ａ），（ｂ）は本実施例と従来のミラー方式の装置とにおける書込み処理中に読み出し可能なデータの種類を示す。例えば、データ＃１の書込みを行なう場合、図１０（ａ）に示すように、本実施例ではドライブ＃１とドライブ＃２に書込み要求を出し、書込みを行なう。一方、従来ミラー方式でもドライブ＃１，＃２に対し書込み要求を出し、書込みを行なう。何れの方法でもデータ＃１の書込みを行なっている際にはドライブ＃３，＃４に対する読み出しは処理することができる。しかし、図１０（ａ）をみると、本実施例では、ドライブ＃３，４には２０種類のデータが格納されているのに対し、従来のミラー方式では図１０（ｂ）に示すようにドライブ＃３，＃４には１２種類のデータしか格納されていない。このように書込み処理中に読み出し処理を行なえるドライブ数は本実施例と従来のミラー方式では２台と同じであるが、その２台のドライブ４に格納されているデータの種類は本実施例の方が１．７倍になっている。このため、本実施例では書き込み処理中にＣＰＵ１が読みだし要求を出した場合、要求する読み出したいデータが、論理グループ５内における書込み処理中に読み出し可能な２台のドライブ４中に存在する確率が高くなる。従って、書込み要求を処理している際の読み出し処理を効率良く行なえる。
【００７７】
次に本実施例において、ある特定ドライブに対し読み出し／書込み要求が集中した場合に効率良く処理できる効果について説明する。
【００７８】
コンピュータシステムにおいては２次記憶装置内の特定の領域に対し読み出し／書込み要求が集中する場合がある。特に読み出し要求が特定のドライブ４に対し集中して出される場合がある。本実施例による二重化方式と従来のミラー方式においてドライブ＃１に集中して読み出し要求が出された場合の処理方法を図１１（ａ），（ｂ）を用いて説明する。本実施例では図１１（ａ）に示すように、ドライブ＃１内のデータと同じものがドライブ＃２，＃３，＃４に分散して二重化データとして格納されている。このため、図１１ａからわかるように、各論理グループを４台のドライブで構成した場合、同時に４個の読み出し要求を処理することができる。ある特定のドライブ４に読み出し要求が集中しているかどうかの判断は、ＤＫＣ２内のＤＣＵ７のＭＰ２９において、ある一定サイクルでどのドライブに読み出し要求が出されたかを記憶しておき、その値が予め設定しておいた値を超えた場合、ＤＣＵ７のＭＰ２９では、データ制御部８がデータ管理テーブル９を参照し二重化データの方から読み出しを行なうように制御する。また、このようにある特定のドライブに読み出し要求が集中した場合のみにＤＫＣ２が二重化データの読み出しを行なうのではなく、ＤＣＵ７のＭＰ２９は各論理グループを一つの大きなデータ空間と考えて、常に、読み出し要求が出されたデータに対し二重化データも注目し、元のデータが格納されているドライブが使用中の場合は、二重化データが格納されているドライブの状況をチェックし、使用中でなければＣＰＵ１からの読み出し要求を受け付ける。また、一つのデータに対し、２個のアドレスを対応させるように、元のデータと二重化データの区別をせず平等に扱うことも可能である。これによりある特定のドライブに読み出し要求が集中しても論理グループ５内の各ドライブ４で平均化して使用されるため、効率良く処理することが可能となる。一方、従来のミラー方式ではドライブ＃１の二重化データはドライブ＃２にしか無いため、同時には２個の読み出し要求を処理できるだけである。このように、ある特定のドライブ４に対し読み出し要求が集中して出された場合、本発明では論理グループ５内の各ドライブ４に分散して格納してある二重化データで処理することにより、従来のミラー方式の２倍の要求を処理することが可能となる。また、書き込み時でも、ある１台のドライブに読み出し／書き込み要求が集中している場合、以下のように処理することにより、読み出し／書き込み要求が集中しているドライブでの待ち時間を減少することが可能となる。書き込むデータに対し、読み出し／書き込み要求が集中しているドライブ以外のドライブへ元データまたは、二重化データを書き込み、この時点でＣＰＵへは書き込み処理の終了を報告する。この時キャッシュメモリ内に書き込みデータは保持しておく。ＤＣＵ７のＭＰ（２９）は、後に読み出し／書き込み要求が集中しているドライブにおいて、この集中が解除された時にキャッシュメモリから読み出し／書き込み要求が集中していたドライブに元データまたは二重化データを書き込み、二重化を完成する。
【００７９】
なお、二重化が完成しているかどうかの判断は、アドレス管理テーブルの元データアドレス、二重化データアドレスの書き込みフラグで行う。書き込みフラグがオン（１）の場合はドライブへの書き込みが行われておりオフ（０）の場合は、ドライブへの書き込みが行われている。
【００８０】
また、二重化が完成される前のデータに、読み出し要求がＣＰＵ１より発行された場合は、キャッシュメモリから当該データをＣＰＵ１へ転送する。
【００８１】
一方、二重化が完成される前のデータに、書き込み要求がＣＰＵ１より発行された場合は、その書き込みと同時に、集中しているドライブ以外のドライブへ元データまたは二重化データを書き込みＣＰＵ１へ書き込みの終了を報告し、後にＤＣＵ７のＭＰ（２９）は二重化を完成させる。
【００８２】
本実施例ではドライブ＃１を例として説明したが、論理グループ５を構成するどのドライブ４についても同様のことがいえるのは明らかである。
【００８３】
（実施例２）
本実施例は、図１に示すシステムにおいて、データの格納方法を図１２に示すようにしたものである。
【００８４】
本実施例においてデータは、図１２に示すように３個のトラックからなるグループを単位として格納される。なお、１グループ内の列の数は、論理グループ５を構成するドライブ４の数によって変わり、その数は論理グループ５をｍ台のドライブ４で構成した場合、ｍ−１個となる。グループ内は、６個の元のデータおよびその二重化データにより構成され、元のデータと二重化データとは、それぞれ異なるドライブ４に格納される。二重化データの格納方法は、原則として二重化データが論理グループ５内で各ドライブ４に平均的に分散されていれば、元のデータが格納されているドライブ４以外のドライブ４ならどのドライブ４に格納しても構わない。この元のデータと二重化データは３個のトラックによるグループ内で閉じている。
【００８５】
次に、本実施例におけるＤＣＵ７の機能について詳しく述べる。
【００８６】
ＤＣＵ７のデータ管理テーブル９には実施例１と同様に図１３のような格納規則に従い、要求データに対応した元データと二重化データに割り当てられた領域のアドレスである、ドライブ番号、シリンダアドレス、ヘッドアドレスが格納されている。本実施例においても実施例１と同様に初期設定の段階で、アドレス管理テーブル９において格納規則に従った元データアドレスと二重化データアドレスが登録されている。データの書き込み、削除の際は、アドレス管理テーブル９のデータ名の登録，削除が行われる。先に述べたように、本実施例は６個の元のデータとその二重化データで１グループを構成している。例えば、グループ１はデータ＃１から＃６により構成される。
【００８７】
本実施例では、以下の説明において、このデータ名は領域名とする。
【００８８】
各グループでは、図１２に示す例では、そのグループに属するデータのデータ番号の小さい順で格納規則は一定である。例えばグループ１においては図１２及び図１３（ｍ＝１，ｎ＝１とした場合）に示すように、データ＃１はドライブ＃１の（１、１）とドライブ＃４の（１、１）に、データ＃２はドライブ＃１の（１、２）とドライブ＃２の（１、１）に、データ＃３はドライブ＃１の（１、３）とドライブ＃３の（１、１）に、データ＃４はドライブ＃２の（１、２）とドライブ＃４の（１、３）に、データ＃５はドライブ＃２の（１、３）とドライブ＃３の（１、２）に、データ＃６はドライブ＃３の（１、３）とドライブ＃４の（１、２）にそれぞれ格納される。グループ２、３、４、・・・についもグループ１と同様にアドレス管理テーブル９に示す規則に従い格納される。
【００８９】
本実施例では、元のデータと二重化データを例えば図１２に示すように設定する。図１２において、斜線で示すデータが元のデータ、他のデータが二重化データである。図１２からも分かるように、データの格納規則は各グループにおいて同じだが、元のデータと二重化データの設定の仕方が、奇数番号のグループと偶数番号のグループにおいて異なっている。これは、後に述べるデータのバックアップの際の便宜を図るためである。図１２ではグループ１，２，３，４についてのみ示しているが、以下同様に各グループにおいて、奇数番号のグループと偶数番号のグループにおいて元のデータと、二重化データの設定を変える。
【００９０】
本実施例においては、ｍ個のドライブがあるとき、各ドライブ内のデータは他のｍ−１個のドライブに分散して２重化される点は実施例１と同じであるが、実施例１として異なるのは、図１２に示したように、各ドライブの（ｍ−１）の領域がドライブ数ｍの領域群に関して元データと現データとを保持する領域が異なるドライブに分散されるようにすることである。
【００９１】
本実施例においてもデータの単位についての制約は無いが、以下の説明ではデータの単位を１トラックの容量として説明する。
【００９２】
ＤＣＵ７ではデータ制御部８のＭＰ（２９）がこのデータ管理テーブル９からＣＰＵ１が指定してきた元のデータのアドレスをもとにして二重化データの格納されているアドレスを見つけだし、元のデータ及び二重化データが格納されているドライブ４に対し読み出し／書込み処理を行なう。なお、格納されているデータに対する読み出し／書込みの方法は実施例１と同じである。
【００９３】
次に、本実施例により図１に示すＤＫＣ２内のキャッシュメモリ１８やＥＳ１９等の半導体による記憶装置とＤＵ３間で、ある特定のドライブ４内に格納されるデータを高速に転送する方法について述べる。
【００９４】
例えばグループ１において、ドライブ＃１内のデータ＃１、＃２、＃３を高速に読み出す場合、データ制御部８のＭＰ２９は、ドライブ＃４からデータ＃１、ドライブ＃２からデータ＃２、ドライブ＃３からデータ＃３をパラレルに同時に読み出す。同様にドライブ＃２のデータ＃２、＃４、＃５については、それぞれドライブ＃１，＃３，＃４からパラレルに同時に読み出す。このように、あるドライブ４に格納されているデータを読みだす場合、他の３台のドライブ４に格納されるデータをパラレルに同時に読み出すことによりデータ転送速度は１台のドライブ４から読み出すのと比較し、約３倍となり高速転送が実現できる。ドライブ＃３、＃４に格納されるデータ、さらには、他のグループのデータについても同様に高速転送を行なうことが可能である。
【００９５】
次に任意のデータ単位で高速転送を行なう方法を以下に示す。例えばデータ＃２、＃３、＃４、＃５の４データを高速に読み出す場合、データ制御部８のＭＰ２９は、ドライブ＃１からデータ＃２、ドライブ＃３からデータ＃３、ドライブ＃４からデータ＃４、ドライブ＃２からデータ＃５をパラレルに読み出す。データ＃２、＃３、＃４、＃５、＃６の５データの場合はデータ制御部８のＭＰ２９は、ドライブ＃１からデータ＃２、ドライブ＃３からデータ＃３、ドライブ＃４からデータ＃４、ドライブ＃２からデータ＃５、ドライブ＃３からデータ＃６をパラレルに読み出す。
【００９６】
このようにデータ制御部８のＭＰ２９において、４台のドライブ４に分散して格納されている元のデータおよび二重化データにより、パラレル転送ができるように要求するデータを論理グループ５内の各ドライブ４から選択することにより、任意のデータ単位で高速転送することが可能となる。
【００９７】
次に、この高速転送による読み出しを用いて、論理グループ５内のデータのバックアップをとる方法について説明する。
【００９８】
論理グループ５内には元のデータと二重化データのペアーが全く同じデータとして格納されている。従って、バックアップをとるデータは、図１２において斜線で示された元のデータのみでよい。そこで、バックアップを行なう場合、データ制御部８のＭＰ２９は２つのグループを一つの単位として、まず、グループ１のデータ＃１、＃２、＃３、＃６をドライブ＃１、＃２、＃３、＃４からパラレルに同時に読み出す。これらのデータを読み出した後はヘッドセレクタ１５によりヘッドを切換え続けて、グループ１のデータ＃４、＃５をドライブ＃２、＃３から、また、グループ２のデータ＃８、＃７をパラレルに同時に読み出す。さらに、これらのデータを読み出した後はヘッドセレクタ１５により再度ヘッドを切換え連続して、グループ２のデータ＃９、＃１０、＃１１、＃１２をパラレルに同時に読み出す。以下同様に２つのグループを単位として順次バックアップをとる。
【００９９】
なお、論理グループ５内の全てのデータのバックアップとるのではなく、任意のデータ数で部分的にバックアップをとることも可能である。また、元のデータのみではなく、二重化データも含めて論理グループ５全体のバックアップを取る場合、データ制御部８のＭＰ２９は、ドライブ＃１から４においてｒｏｗ＃１から順にパラレルに同時に読みだしていく。パラレルに同時に読み出したデータはＤＫＣ２のキャッシュメモリ１８に一端格納し、キャッシュメモリ１８から他の磁気ディスク装置または磁気テープ装置または光ディスク装置等のバックアップ媒体に転送し格納する。
【０１００】
この高速転送は書込みの場合も同様に行なえることは明らかである。ただし、書込みの場合の高速転送では１回の書き込み処理では、実施例１と同様に元のデータと二重化データ双方の書込みが完了しておらず、二重化してデータを書き込んではいない。この高速転送による書込みにおいて、データの二重化が完了されているかどうかはＤＣＵ７においてＭＰ２９がデータ管理テーブル９により管理する。
【０１０１】
以上述べたような高速転送による読み出し／書込み処理は論理グループ５内の各ドライブ４間のみで行なうだけではなく、複数の論理グループ５が協調し、論理グループ５間で高速転送による読み出し／書込み処理を行なうことも可能である。また、高速転送による読み出し／書込み処理を行なう際、各ドライブの回転を同期させると、論理グループ５内の各ドライブ４における回転待ち時間が、一台のドライブの時と等しく平均で１／２回転となるため、前処理時間が短くなりより効果的である。
【０１０２】
次に、図１においてＤＵ３内の論理グループ５を構成するいずれか一台のドライブ４に障害が発生した時に、その障害ドライブ４のデータを回復する方法を図１４を参照して説明する。ここでは、４台のドライブ４のうちドライブ＃１に障害が発生した場合を例に説明する。この場合、ＤＣＵ７のＭＰ２９は以下のような手順によりデータの回復を行なう。まず、障害が発生したドライブ＃１を正常なドライブと交換する。図１４に示すように、ドライブ＃１内のデータと同じデータがドライブ＃２，＃３，＃４に格納されている。そこで、これらのドライブ＃２，＃３，＃４からドライブ＃１のデータを読み出し、そのデータを交換した正常なドライブに書込み、データの回復を行なう。この時ドライブ＃１に格納されるデータ＃１、＃２、＃３はドライブ＃２，＃３，＃４のそれぞれからパラレルに同時に読み出す。これらのデータは一旦ＤＫＣ２内のキャッシュメモリ１８に格納し、キャッシュメモリ１８から正常なドライブに交換したドライブ＃１へ格納する。ドライブ＃１へのデータ格納終了後再び、ドライブ＃２、＃３、＃４からドライブ＃１のデータを読み出し、同様にキャッシュメモリ１８を介して正常になったドライブ＃１へ格納する。以下、この回復処理を繰り返しドライブ＃１内の全データの回復を行なう。もし、キャッシュメモリ１８の容量がドライブ＃１の容量と比較し大きい場合は、ドライブ＃１に格納される全データをキャッシュメモリ１８に格納し、その後、ドライブ＃１に格納することで、処理を一回で済ませることも可能である。
【０１０３】
本実施例におけるデータ回復処理のタイミングチャートは実施例１に関して図７（ａ）に示したものと同じであり、実施例１と同様に、本実施例によれば従来のミラー方式と比較しデータの読み出し時間が短縮されるため、データの回復時間は短くなる。また、図８（ｂ）を用いて実施例１に関して説明したことと同じように回復処理中のオンライン処理の性能低下を本実施例でも抑えることが可能となる。
【０１０４】
本実施例において示したデータ格納方法においても実施例１で示した全ての機能、効果を同じように適応できることは明らかである。また、本実施例では４台のドライブにより論理グループ５を構成したが、このドライブ台数は２台以上であれば特に制限されるものではない。
【０１０５】
（実施例３）
図１５（ａ）にさらに他のデータ格納方法を示す。
【０１０６】
本実施例においても、実施例１，２と同様に初期設定の段階でアドレス管理テーブル９には元データアドレスに対する二重化データアドレスの割りあてが事前に行われており、データの書き込み、削除の際は、アドレス管理テーブルのデータ名への登録，削除が行われる。
【０１０７】
図１５（ａ）では、共に二重化データを２台のドライブに分散させて格納している。二重化データに関する分散方法についての制約はない。具体的には、図１５においてドライブ＃１に格納されている元データに対し二重化データをドライブ＃３、４に格納する場合は、ドライブ＃１に格納されている元データの内の半分をドライブ＃３、残りの半分をドライブ＃４に格納する。この時、ドライブ＃１に格納されている元データの中で、どれをドライブ＃３に格納し、どれをドライブ＃４に格納するかの選択は自由である。つまり、二重化データを、元のデータが格納されているドライブ以外の２台以上のドライブに分けて格納されていればよい。結局、本実施例では、ドライブ数ｍは２ｋ（ｋ≧２）であり、この内、ｋ個のドライブの各々に元データを保持する領位を設け、それぞれのドライブの元データに対する２重化データを残りのｋ個のドライブに分散して格納する。本実施例ではとくに１つのドライブの元データ群をｋ個の群に分割し、結局ドライブ数ｍのときに各ドライブ内の元データに対する２重化データを分散して保持するドライブ数ｎはｍ／２となっている。より一時的には、ｎ≧２，ｍ≧４であればよい。（ａ）ではドライブ＃１のデータの二重化データはドライブ＃３，４に交互に格納し、ドライブ＃２のデータも同様にドライブ＃３，４に交互に格納する。
【０１０８】
（実施例４）
図１５ｂに示すように、ドライブ＃１のデータの二重化データはドライブ＃３，４に格納し、ドライブ＃２のデータも同様にドライブ＃３，４に格納するが、図１５（ａ）と異なるのは、（ｂ）の場合はいくつかのデータを一つの塊としてドライブ＃３，４に交互に格納している点である。
【０１０９】
この実施例３，４のように二重化データを分散して格納しても実施例１および２の機能、効果を同じように適応できることは明らかである。例えば、図１５Ａに示すようにドライブ＃１の元データがドライブ＃３、４に分散して格納されている場合、バックアップ等の要求により、データ＃１、２、３を一度に高速に読みだしたい時は、ドライブ＃１のデータ＃１、ドライブ＃４のデータ２、ドライブ３のデータ３をパラレルに一度に読みだすことにより、３台のドライブによる並列処理が可能となる。これは、ドライブ＃１に読み出し／書き込み要求が集中した場合に、ドライブ＃１への読み出し／書き込み要求をドライブ＃１、３、４に分散させるのにも使用可能で有る。
【０１１０】
一時的には、本実施例によれば、ドライブ数ｍに対して、２重化データを分散して保持するドライブの数ｎがｍ／２であるため、本実施例によればｎ＋１＝ｍ／２＋１のデータを異なるドライブから並列によめることになる。
【０１１１】
本実施例では同一ドライ内のデータの２重化データが分散されているドライブの数ｎはｍ−１より小さく、実施例１、２の場合より少なく、したがって並列によめるデータの数もｍ−１より少ないが、元データ用の領域と２重化データ用の領域の位置関係が簡単であるため、これらの領域の決定が実施例１，２より簡単に行えるという利点を有する。
【０１１２】
（実施例５）
本実施例では連続領域を確保することが難しいＵＮＩＸにおいて、連続領域を確保する方法を説明する。ＵＮＩＸの書き込みでは、書き込み先のドライブ内で使用されていない空き領域に対し自動的に書き込まれてしまう。ＣＰＵ１がドライブ＃１にシーケンスシャルデータであるデータ＃１、８、１２を書き込もうとする。この時、データ＃１、８、１２を格納するのに十分な空き領域が連続して（ドライブ内のアドレスが連続）確保できればそこに格納するが、以下のように連続して確保できない場合は以下のように処理する。ドライブ＃１において（シリンダアドレス、ヘッドアドレス）＝（シリンダ＃１、トラック＃１）と（シリンダ＃３、トラック＃２）と（シリンダ＃４、トラック＃３）が空き領域の場合、図２１に示すようにそれぞれの空き領域にデータ＃１、８、１２を書き込む。このドライブ＃１に書き込まれたデータ＃１、８、１２は元データである。これらの元データに対し実施例１の格納規則にしたがい、それぞれ二重化データはデータ＃１はドライブ＃２の（シリンダ＃１、トラック＃４）、データ＃８はドライブ＃３の（シリンダ＃３、トラック＃４）、データ＃１２はドライブ＃４の（シリンダ＃４、トラック＃４）に格納される。これらのデータ＃１、８、１２はシーケンシャルなデータなため、データ＃１、８、１２の順にシーケンシャルに読み出す場合はドライブ＃２、３、４から二重化データであるデータ＃１、８、１２をパラレルに読み出す。図２１のタイムチャートに示すように、ドライブ＃１からシーケンシャルに元データであるデータ＃１、８、１２を読み出す場合、各々のデータに対しヘッドの移動（シーク）と回転待ちとデータの転送が必要となるが、上記のように複数ドライブから二重化データをパラレルに読み出すことにより、各々のドライブにおいて一回のヘッドの移動（シーク）と回転待ちとデータの転送でする。上記説明はデータの単位をトラック単位としたが、トラックの容量以下のデータの場合でも同様である。例えば、１トラックが１０個の小さなデータで構成される場合、（シリンダ＃１、トラック＃１）と（シリンダ＃３、トラック＃２）と（シリンダ＃４、トラック＃３）のトラックにそれぞれデータ＃１、８、１２の元データが格納されているとする。これらの二重化データはそれぞれドライブ＃２の（シリンダ＃１、トラック＃４）、ドライブ＃３の（シリンダ＃３、トラック＃４）、ドライブ＃４の（シリンダ＃４、トラック＃４）に格納されるとすればよい。
【０１１３】
以上の実施例では、ドライブ４として磁気ディスク装置を用いたものを例に説明したが、光ディスク装置、フロッピィディスク装置等を用いても同様に実現できることは明らかである。また、論理グループ５を構成するドライブ数を４台としたが、論理グループ５を構成するドライブ４の数は２台以上であれば制約が無いことはいうまでもない。
【０１１４】
また、上記実施例ではＤＫＣ２内にＤＣＵ７を置き、ＤＵ３内の各ドライブ４を全て管理しているが、ＤＣＵ７を各論理グループ５単位に持たせることも可能である。このように各論理グループ５単位にＤＣＵ７を持たせると、ＣＰＵ１は該当するデータが格納されている論理グループ５を一つの大きなデータ空間と認識し、これに対し読み出し／書込み要求を出すことができる。論理グループ５内においては、ＤＣＵ７がＣＰＵ１から指定されたデータが格納されている物理的なアドレスを見つけて、該当するドライブ４に対し実際に読み書きを行なう。また、ＣＰＵ１のＯＳがＤＣＵ７の機能をサポートしても構わない。
【０１１５】
さらに、本発明による二重化ディスクアレイ装置は、従来のミラー方式、ＲＡＩＤ３，ＲＡＩＤ５と混在して構成されていても構わない。このように、一つのシステム内において複数の格納方式による論理グループ５が存在することにより、データの信頼性に対する要求や、高速転送に対する要求等のデータの特性により格納方式を選択することができる。
【０１１６】
【発明の効果】
以上述べたように本発明によれば、データはディスクアレイを構成するドライブに分散して格納されるため、各ドライブを効率良く使用でき、単位時間当りの処理件数を低下させることなくデータの読み出し／書込みを高速に行なうことができる。また、ドライブに障害が発生した場合のデータ回復処理についても、二重化データをパラレルに同時に読み出して行なうことにより、短時間で回復させることが可能であり、回復処理とオンライン処理とを並行して行なう場合でもオンライン処理を止める時間を少なくできるため、その間にユーザに与える被害を少なくできる等の顕著な効果を達成することができる。
【図面の簡単な説明】
【図１】本発明によるディスクアレイ装置の構成図である。
【図２】図１の装置に使用するドライブの内部構造図である。
【図３】図１の装置に適用される第１の各データの格納方法を説明する図である。
【図４】図１の装置における二重化データの格納を示す図である。
【図５】図１の装置に適用される読み出し／書込み処理フローチャートである。
【図６】図１の装置に適用されうる他の読み出し／書込み処理フローチャートである。
【図７】（ａ）は従来のミラー方式のディスクアレイ装置におけるデータ回復処理のタイミングチャートである。
（ｂ）は図１の装置におけるデータ回復処理のタイミングチャートである。
【図８】（ａ）は従来のミラー方式のディスクアレイ装置において、オンライン処理を実行しながら行うデータ回復処理タイムチャートである。
（ｂ）は、図１の装置において、従来のミラー方式のディスクアレイ装置において、オンライン処理を実行しながら行うデータ回復処理タイムチャートである。
【図９】（ａ）は、図１の装置において、オンライン処理を実行しながら行う他のデータ回復処理の説明図である。
（ｂ）は、図９（ａ）の処理のタイムチャートである。
【図１０】（ａ）は、図１の装置における書込み処理中の読み出し処理の説明図である。（ｂ）は、従来のミラー方式によるディスクアレイ装置における書込み処理中の読み出し処理の説明図である。
【図１１】（ａ）は、図１の装置におけるデータ分散効果の説明図である。
（ｂ）は、従来のミラー方式によるディスク装置におけるデータ分散効果の説明図である。
【図１２】図１の装置に適用される第２のデータ格納方法によるデータ格納状態を示す図である。
【図１３】図１２に使用した各データに対するアドレスを説明する図である。
【図１４】図１の装置に図１３にて示したデータ格納方法を採用したときのドライブ障害時のデータ回復処理の説明図である。
【図１５】（ａ）は、図１の装置に適用可能な第３のデータ格納方法によるデータ格納状態を説明する図。
（ｂ）は、図１の装置に適用可能な第４のデータ格納方法によるデータ格納状態を説明する図。
【図１６】
（ａ）は、従来のディスクアレイ装置におけるデータ格納を説明する図である。
（ｂ）は、従来の他のディスクアレイ装置におけるデータ格納を説明する図である。
【図１７】
（ａ）は、従来のさらに他のディスクアレイ装置におけるデータ格納を説明する図である。
（ｂ）は、従来のさらに他のディスクアレイ装置におけるデータ格納を説明する図である。
【図１８】
従来のディスクアレイ装置におけるパリティ生成方法の説明図である。
【図１９】
（ａ）は、いくつかの従来技術における大量データ転送時におけるデータ処理時間の比較図である。
（ｂ）は、いくつかの従来技術における小量データ転送時におけるデータ処理時間の比較図である。
【図２０】
図１の装置で用いるアドレス変換テーブルの例を示す図。
【図２１】
図１の装置に適用する、第４のデータ格納方法によるデータ格納状態を説明する図である。
【図１】
2004046864.tif 000003
【図２】
2004046864.tif 000004
【図３】
2004046864.tif 000005
【図４】
2004046864.tif 000006
【図５】
2004046864.tif 000007
【図６】
2004046864.tif 000008
【図７】
2004046864.tif 000009
【図８】
2004046864.tif 000010
【図９】
2004046864.tif 000011
【図１０】
2004046864.tif 000012
【図１１】
2004046864.tif 000013
【図１２】
2004046864.tif 000014
【図１３】
2004046864.tif 000015
【図１４】
2004046864.tif 000016
【図１５】
2004046864.tif 000017
【図１６】
2004046864.tif 000018
【図１７】
2004046864.tif 000019
【図１８】
2004046864.tif 000020
【図１９】
2004046864.tif 000021
【図２０】
2004046864.tif 000022
【図２１】
2004046864.tif 000023