(57)【要約】【課題】ＲＡＩＤコントローラのような特別の装置を使用することなく、複数のディスクドライブを組み合わせて、システム全体が簡単な構造からなるＲＡＩＤシステムを容易に構築できるディスク記憶装置を提供することにある。【解決手段】単独でディスクドライブとして機能し、かつ他のディスクドライブと協調してＲＡＩＤを構築するＲＡＩＤ構築機能を内蔵するディスク記憶装置である。本装置は、他のディスクドライブとＲＡＩＤ機能に関する情報を交換するための通信手段を有し、ホストシステムからのコマンドに応じて他のディスクドライブと協調してＲＡＩＤシステムを構築する構成である。【選択図】      図１
2005316762.tif 000002
【特許請求の範囲】
【請求項１】
単独のディスクドライブとして機能するドライブ機構と、
他のディスクドライブとＲＡＩＤ機能に関する情報を交換するための通信手段と、
ホストシステムからＲＡＩＤ構築コマンドを受信すると、前記通信手段を使用して前記他のディスクドライブと情報を交換し、前記ドライブ機構及び前記他のディスクドライブのドライブ機構を制御してＲＡＩＤ機能を実現するＲＡＩＤ構築手段と
を具備したことを特徴とするディスク記憶装置。
【請求項２】
前記ＲＡＩＤ構築手段は、単独のディスクドライブとして機能する場合に、前記ホストシステムから受信するコマンドを処理するディスクコントローラに含まれていることを特徴とする請求項１に記載のディスク記憶装置。
【請求項３】
前記ＲＡＩＤ構築手段は、前記ホストシステムから受信するコマンドに基づいて、ＲＡＩＤタイプ、ＲＡＩＤシステムを構成するグループ、ＲＡＩＤ機能を有効にするフラグ情報のそれぞれをセットするためのＲＡＩＤ処理用テーブルを含むことを特徴とする請求項１に記載のディスク記憶装置。
【請求項４】
前記ホストシステムと通信を実行し、単独のディスクドライブとして機能する場合及びＲＡＩＤ構築の場合のそれぞれに共通して使用するインターフェース手段を有することを特徴とする請求項１から請求項４のいずれか１項に記載のディスク記憶装置。
【請求項５】
前記ＲＡＩＤ構築手段は、ＲＡＩＤ構成におけるデータ又はパリティ情報のアドレス割り当てに関するブロック構成を判断するためのＲＡＩＤ構成テーブルを含むことを特徴とする請求項１から請求項４のいずれか１項に記載のディスク記憶装置。
【請求項６】
前記ＲＡＩＤ構築手段は、ホストシステムからの指示に応じて、ＲＡＩＤ構築に関するホストシステムへのコマンド応答及び他のディスクドライブに対する送信元として機能するように構成されているを特徴とする請求項１から請求項５のいずれか１項に記載のディスク記憶装置。
【請求項７】
前記通信手段は、シリアルインターフェースまたは無線通信手段であることを特徴とする請求項１から請求項６のいずれか１項に記載のディスク記憶装置。
【請求項８】
単独のディスクドライブとして機能するドライブ機構と、他のディスクドライブとＲＡＩＤ機能に関する情報を交換するための通信手段とを有するディスク記憶装置に適用するＲＡＩＤ構築方法であって、
ホストシステムからＲＡＩＤ構築コマンドを受信し、
当該ＲＡＩＤ構築コマンドに応じて、前記通信手段を使用して前記他のディスクドライブと情報を交換し、
前記ドライブ機構及び前記他のディスクドライブのドライブ機構を制御してＲＡＩＤ機能を実現することを特徴とするＲＡＩＤ構築方法。
【請求項９】
前記ディスク記憶装置はＲＡＩＤ機能に関するＲＡＩＤ処理用テーブルを有し、
前記ホストシステムから受信するコマンドに基づいて、ＲＡＩＤタイプ、ＲＡＩＤシステムを構成するグループ、ＲＡＩＤ機能を有効にするフラグ情報のそれぞれを、前記ＲＡＩＤ処理用テーブルにセットすることを特徴とする請求項８に記載のＲＡＩＤ構築方法。
【請求項１０】
前記ＲＡＩＤ処理用テーブルは、ＲＡＩＤ構成におけるデータ又はパリティ情報のアドレス割り当てに関するブロック構成を判断するためのＲＡＩＤ構成テーブルを含むことを特徴とする請求項８に記載のＲＡＩＤ構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には単独でディスクドライブとして動作するディスク記憶装置に関し、特に、複数のディスクドライブからなるＲＡＩＤシステムを構築する技術に関する。
【背景技術】
【０００２】
従来、ディスクアレイ装置またはＲＡＩＤ（Redundant array of inexpensive disks）システムと呼ぶディスクシステム（以下単にＲＡＩＤと表記する場合がある）が周知である。このシステムは、単独のディスクドライブと比較して、大容量でかつ高い信頼性を確保することができる。
【０００３】
しかしながら、ＲＡＩＤは、ＲＡＩＤコントローラ又はディスクアレイコントローラ（以下ＲＡＩＤコントローラと表記する）のような特別の制御装置が必要であり、通常の複数のディスクドライブを使用する場合と比較して、大規模かつ複雑な構成となる。
【０００４】
従来においても、特別のＲＡＩＤコントローラを使用せずに、ＲＡＩＤシステムを構築する方法が提案されている（例えば、特許文献１を参照）。この方法は、クラスタシステムを構成する複数のコンピュータのそれぞれに接続されたディスクドライブを利用して、いわば仮想的なＲＡＩＤ装置を実現する構成である。
【特許文献１】特開２００３−９９２１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
先行技術の方法は、複数のコンピュータを利用してＲＡＩＤコントローラ機能を実現することにより、ＲＡＩＤシステムを構築するため、全体のシステムは大規模かつ複雑である。
【０００６】
本発明の目的は、ＲＡＩＤコントローラのような特別の装置を使用することなく、複数のディスクドライブを組み合わせて、システム全体が簡単な構造からなるＲＡＩＤシステムを容易に構築できるディスク記憶装置を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の観点に従ったディスク記憶装置は、他のディスクドライブと協調してＲＡＩＤシステムを構築する構成を有し、いわばＲＡＩＤコントローラの機能を各ディスクドライブに分散できる構成である。
【０００８】
具体的には、本ディスク記憶装置は、単独でディスクドライブとして機能するドライブ機構と、他のディスクドライブとＲＡＩＤ機能に関する情報を交換するための通信手段と、外部からＲＡＩＤ構築コマンドを受信すると、前記通信手段を使用して前記他のディスクドライブと情報を交換し、前記ドライブ機構及び前記他のディスクドライブのドライブ機構を制御してＲＡＩＤ機能を実現するＲＡＩＤ構築手段とを備えた構成である。
【発明の効果】
【０００９】
本発明によれば、ＲＡＩＤコントローラのような特別の装置を要することなく、複数のディスクドライブが相互に協調してＲＡＩＤシステムを容易に構築することができる。
【発明を実施するための最良の形態】
【００１０】
以下図面を参照して、本発明の実施形態を説明する。
【００１１】
（第１の実施形態）
図１は本実施形態に関するＲＡＩＤシステムのシステム構成を示すブロック図である。図２は、各ディスクドライブの要部を示すブロック図である。
【００１２】
（システム構成）
本実施形態では、複数のディスクドライブ１０３〜１０６は、それぞれ単独でディスク記憶装置として機能するためのディスク１０〜１３及びディスクコントローラ２０〜２３を含むドライブ機構を有する。各ディスクコントローラ２０〜２３は、後述するように、ＲＡＩＤ構築機能を有する。なお、便宜的に、各ディスクドライブ１０３〜１０５は、それぞれディスクドライブ＃１〜＃３と表記する場合がある。
【００１３】
各ディスクドライブ１０３〜１０６は、ホストシステム１００との間で、ホストＢＵＳインターフェース１０１を介して接続される。ホストインターフェースは、例えばＡＴＡやＳＣＳＩなどのインターフェース仕様と同様に、ホストシステム１００から個別のドライブ１０３〜１０６を制御して、データの書き込み／読み出しを行うための信号レベルやピン配置といった物理的仕様と、ドライブを制御するコマンド体系を備えている。
【００１４】
さらに、ホストＢＵＳインターフェース１０１は、複数台のドライブ１０３〜１０６を、相互に協調させてＲＡＩＤ構成に再構築させるためのコマンド体系を併せて有する。ここで、ホストＢＵＳインターフェースのドライブ側のコネクタは、従来のインターフェース同様にドライブ毎に１つずつ設けられていても良い。
【００１５】
本実施形態では、各ディスクドライブ１０３〜１０６は、ドライブ相互間で接続するためのコネクタ１０７と、ホストシステム１００に接続するためのコネクタ１０８とを別々に備えている。また、ドライブ相互間で接続するコネクタ１０７で、複数台のドライブ１０３〜１０６が接続されている場合には、ホストシステム１００との接続は、この中の１台のドライブ（ここでは１０４）のコネクタ１０８を通して行うことができる。
【００１６】
相互通信用バス１０２は、各ディスクドライブ１０３〜１０６が相互に協調して、ＲＡＩＤを構成するための各ドライブ間の通信を行うためのインターフェースである。但し、当該インターフェースは、図１に示すようにコネクタ１０７により相互に接続される形態以外に、物理的な導線を伝送媒体とするのではなく、省電力の無線通信により通信を行なう形態でもよい。
【００１７】
（ディスクドライブの構成）
図２は、各ディスクドライブ１０３〜１０６の構成において、特にディスクコントローラの要部を示すブロック図である。便宜的に、ディスクドライブ（＃１）１０３の構成を代表して説明する。
【００１８】
ディスクコントローラ２０は、分散ＲＡＩＤモード命令処理ブロック２００と、分散ＲＡＩＤ処理用テーブル２１０と、単独モード命令処理ブロック２２０と、ディスク間通信制御ブロック２３０と、データ復元ブロック２４０と、パリティ情報生成ブロック２５０とを有する。なお、本実施形態では、ディスクコントローラ２０の構成要素として、ディスクドライブ１０３が単独のディスク記憶装置として動作する場合のブロックは省略している。
【００１９】
分散ＲＡＩＤモード命令処理ブロック２００は、ホストインターフェースバス１０１を介してホストシステム１００からの命令を受信すると、ＲＡＩＤ構築処理を実行する。単独モード命令処理ブロック２２０は、通常の単独でのディスクドライブとして動作するためのホスト命令を処理する。
【００２０】
分散ＲＡＩＤモード命令処理ブロック２００は、図３に示すような情報を有する分散ＲＡＩＤ処理用テーブル２１０を使用して、ＲＡＩＤ構築処理を実行する。分散ＲＡＩＤ処理用テーブル２１０は、ＲＡＩＤモードフラグ２１１と、ＲＡＩＤグループ番号２１２と、ＲＡＩＤ構成テーブル２１３とを有する。
【００２１】
ＲＡＩＤモードフラグ２１１は、ホストシステム１００からの命令の中で、ＲＡＩＤ構築命令を受信されたときにセットされる。ディスクコントローラ２０は、分散ＲＡＩＤ処理用テーブル２１０のＲＡＩＤモードフラグ２１１がセットされていない場合には、単独ドライブとして動作するように、単独モード命令処理ブロック２２０に制御を移す。
【００２２】
一方、分散ＲＡＩＤモード命令処理ブロック２００は、ＲＡＩＤモードフラグ２１１がセットされている場合には、ＲＡＩＤ構成テーブル２１３の情報に基づいて、ディスク間通信制御ブロック２３０を介して、他のディスクドライブとの間で制御情報やデータを交換する。
【００２３】
分散ＲＡＩＤモード命令処理ブロック２００は、ＲＡＩＤ構成テーブル２１３の情報からパリティドライブとして動作する場合には、他のディスクドライブに記録されるデータに基づいてパリティ情報生成ブロック２５０でパリティ情報を生成して、ディスク１０上に記録する。また、この場合、他のディスクドライブが故障して、パリティ情報でデータを復元する必要がある場合には、データ復元ブロック２４０は、他のディスクドライブのデータとパリティ情報とに基づいて、故障により消失した記録データを復元する。
【００２４】
ＲＡＩＤ構成テーブル２１３は、図４に示すように、例えばディスクドライブ１０３（＃１）〜１０５（＃３）を組み合わせてＲＡＩＤを構築する場合に、それぞれのディスク上でのブロック構成を定義した情報がセットされている。この情報の中で、Ｐはパリティ情報を記録するブロックを意味する。
【００２５】
（ＲＡＩＤ構築動作）
以下、図５から図７のフローチャート及び図８，９を参照して、例えばＲＡＩＤタイプ４または５のＲＡＩＤシステムの構築を行なう場合の動作を説明する。
【００２６】
ここでは、３台のディスクドライブ（＃１）〜（＃３）が、ホストＢＵＳインターフェース１０１に接続されて、かつ、相互通信用ＢＵＳ１０２に接続されている構成を想定する。各ディスクドライブ（＃１）〜（＃３）は、相互通信用ＢＵＳ１０２を介して相互に情報の交換を行なうことができる。
【００２７】
ホストシステム１００は、図５に示すように、先ず１台のディスクドライブ＃１に対して、ＲＡＩＤ構築コマンド（Assign Group 0 RaidType 5）を発行する（ステップＳ１）。次に、２台目のディスクドライブ＃２及び＃３に対して、ＲＡＩＤ構築コマンド（Add Group 0 RaidType 5）を発行する（ステップＳ２，Ｓ３）。
【００２８】
ホストシステム１００は、何れか、あるいは全てのドライブ＃１〜＃３に対してグループ番号０のメンバ・リストの問い合わせを実行し、正しく認識されているか否かを確認する（ステップＳ４，Ｓ５）。正確に確認されている場合には、ホストシステム１００は、例えばコマンド（Config  RAID Group  ０  StripeSize 3）を発行し、各ドライブ＃１〜＃３が３ブロックを１ストライプとするＲＡＩＤタイプ５のＲＡＩＤシステムを構築するような動作モードに移行することを指示する（ステップＳ５のＹＥＳ，Ｓ６）。
【００２９】
ここで、ディスクドライブ＃１のコントローラ２０は、図６に示すように、ホストシステム１００からコマンドを受信したＲＡＩＤタイプ５で、グループ番号が０のＲＡＩＤシステムの最初のドライブに指定されたことを認識する（ステップＳ１１）。
【００３０】
具体的には、図３に示すように、分散ＲＡＩＤモード命令処理ブロック２００は、分散ＲＡＩＤ処理用テーブル２１０内のＲＡＩＤグループ番号２１２として、番号０をセットする（ステップＳ１２）。
【００３１】
ドライブ＃１のディスクコントローラ２０は、この後ＲＡＩＤグループ番号０に追加される他のドライブからの問い合わせが、相互通信用ＢＵＳ１０２から送られてくるのを待つ（ステップＳ１３）。ＲＡＩＤグループ番号０に追加される他のドライブからの問い合わせを受信した場合は、メッセージを送出したドライブを、分散ＲＡＩＤ処理用テーブル２１０のＲＡＩＤ構成テーブル２１３に追加して当該テーブルを更新する（ステップＳ１３のＹＥＳ，Ｓ１４，Ｓ１５）。
【００３２】
ドライブ＃１のディスクコントローラ２０は、ホストシステム１００からコマンド（Config  RAID Group  ０  StripeSize 3）を受信すると、分散ＲＡＩＤ処理テーブル２１０のＲＡＩＤ構成テーブル２１３を、図４に示すような内容に確定し、ＲＡＩＤモードフラグ２１１にＲＡＩＤタイプ番号をセットする（ステップＳ１７，Ｓ１８）。
【００３３】
ここで、ＲＡＩＤタイプ番号は、ドライブが単独ドライブの場合には、例えば“−１”にセットされている。
【００３４】
一方、ディスクドライブ＃２，＃３はそれぞれ、ホストシステム１００からのコマンドを受信すると、ＲＡＩＤタイプ５のＲＡＩＤ構成、グループ番号０のＲＡＩＤシステムを構成するディスクドライブとして追加されたことを認識する（ステップＳ２１）。
【００３５】
具体的には、図３に示すように、各ドライブ＃２，＃３の分散ＲＡＩＤモード命令処理ブロック２００は、分散ＲＡＩＤ処理用テーブル２１０内のＲＡＩＤグループ番号２１２として、番号０をセットする（ステップＳ２２）。
【００３６】
そして、各ドライブ＃２，＃３はそれぞれ、相互通信用ＢＵＳ１０２を介して、グループ番号０に属するドライブが、ドライブ番号を送出するように、ブロードキャスト・メッセージを流す（ステップＳ２３）。各ドライブ＃２，＃３は、ドライブ＃１から、当該ブロードキャスト・メッセージに応答してグループ０に属することが通知されると、当該ドライブ＃１をメンバとして認識し、分散ＲＡＩＤ処理テーブル２１０のＲＡＩＤ構成テーブル２１３に追加してテーブルを更新する（ステップＳ２５，Ｓ２６）。
【００３７】
各ドライブ＃２，＃３は、この後ＲＡＩＤグループ番号０に追加される他のドライブからの問い合わせが、相互通信用ＢＵＳ１０２から送られてくるのを待つ（ステップＳ２７）。ＲＡＩＤグループ番号０に追加される他のドライブからの問い合わせを受信した場合は、メッセージを送出したドライブを、分散ＲＡＩＤ処理用テーブル２１０のＲＡＩＤ構成テーブル２１３に追加して当該テーブルを更新する（ステップＳ２７のＹＥＳ，Ｓ２８，Ｓ２９）。
【００３８】
ドライブ＃２，＃３のディスクコントローラ２０は、ホストシステム１００からコマンド（Config  RAID Group  ０  StripeSize 3）を受信すると、分散ＲＡＩＤ処理テーブル２１０のＲＡＩＤ構成テーブル２１３を、図４に示すような内容に確定し、ＲＡＩＤモードフラグ２１１にＲＡＩＤタイプ番号をセットする（ステップＳ３１，Ｓ３２）。
【００３９】
以上のようなホストシステム１００、及び各ディスクドライブ＃１〜＃３の相互通信により、各ディスクドライブはそれぞれ、ＲＡＩＤグループ０のメンバであることを認識し、ＲＡＩＤ構成テーブル２１３及びＲＡＩＤモードフラグ２１１をセットして、分散型ＲＡＩＤシステムを構成するドライブとして動作する。
【００４０】
この場合、ここで、各ディスクドライブ＃１〜＃３は、図８に示すように、例えばそれぞれの総ブロック数が１２の場合を想定する。各ディスクドライブ＃１〜＃３は、ＲＡＩＤ構成テーブル２１３から、グループ内の総ドライブ数と各ドライブのドライブ番号の順番に基づいて、ＲＡＩＤシステムとしての論理アドレスとパリティ・ブロックの割り振りを図９に示すような構成であることを認識することができる。
【００４１】
ＲＡＩＤ構築がなされると、ホストシステム１００は、例えばディスクドライブ＃１の容量が増加した状態でのアクセスを実行することになる。即ち、ディスクドライブ＃１には、ブロックが１から２４まで存在するとして、単独のディスクドライブとして同一のアクセスを実行する。
【００４２】
各ディスクドライブ＃１〜＃３は、ドライブ＃１へのアクセスの論理アドレスから、自身に対するアクセス、グループ内の他のドライブに対するアクセス、あるいは、他のドライブのデータであるが、パリティ情報が割り振られているかを、ＲＡＩＤ構成テーブル２１３に基づいて判断する。
【００４３】
（ＲＡＩＤタイプ１の具体例）
図１０は、本実施形態のＲＡＩＤ構築方法を、ＲＡＩＤタイプ１のＲＡＩＤシステムの構築に適用した場合の具体例を示す図である。
【００４４】
ここでは、ホストＢＵＳインターフェース１０１には、ドライブ＃１，＃２の２台のディスクドライブが接続されている場合を想定する。これら２台のドライブ＃１，＃２は、相互通信用ＢＵＳ１０２に接続され、相互に情報のやり取りを行うことができる。
【００４５】
ホストシステム１００は、まず１台のディスクドライブ、例えばドライブ＃１に対して、ＲＡＩＤ構築コマンド（Assign Group 0 RaidType １）を発行する。これを受けたドライブ＃１は、ＲＡＩＤタイプ１のＲＡＩＤで、グループ番号０のＲＡＩＤシステムの最初のドライブに指定されたことを認識する。ドライブ＃１は、グループ０に追加される他のドライブからの問い合わせが、相互通信用ＢＵＳ１０２から送られてくるのを待つ。
【００４６】
次に、ホストシステム１００は、ディスクドライブ＃２に対して、例えばコマンド（Add Group ０ RaidType １）を発行する。これを受けたドライブ＃２は、ＲＡＩＤタイプ１のＲＡＩＤで、グループ番号０のＲＡＩＤシステムを構成するディスクドライブとして追加されたことを認識する。
【００４７】
そして、ディスクドライブ＃２は、相互通信用ＢＵＳ１０２に対して、グループ番号０に属するドライブが、ドライブ番号を送出するようにブロードキャスト・メッセージを流す。ドライブ＃１が当該ブロードキャスト・メッセージを傍受して、グループ０に属することをドライブ＃２に通知すると、この時点で、各ドライブ＃１，＃２は、ＲＡＩＤタイプ１のグループ０のメンバがそれぞれドライブ＃１，＃２であることを認識する。
【００４８】
ホストシステム１００は、何れか、あるいは両ドライブ＃１，＃２に対して、グループ０のメンバ・リストの問い合わせを実行し、正しく認識されているのを確認して、例えば、コマンド（Config RAID Group ０）を発行する。そして、ホストシステム１００は、各ドライブ＃１，＃２がＲＡＩＤタイプ１のＲＡＩＤを構成するような動作モードに移行するように指示する。
【００４９】
この以降、ホストシステム１００は、単独のディスクドライブ＃１をアクセスする場合と同一のアクセスを実行する。この場合、ディスクドライブ＃２は、ドライブ＃１へのアクセスの論理アドレスが、ドライブ＃２の同じプロック・アドレスへのアクセスであることを認識する。
【００５０】
（データ読出し制御の具体例１）
次に、図１１から図１４のフローチャートを参照して、本実施形態でのＲＡＩＤタイプ４または５のＲＡＩＤシステムを構築した場合に、データを読出す場合の制御について説明する。
【００５１】
ＲＡＩＤシステムとして、図９に示すようなＲＡＩＤ構成がなされている場合に、ホストシステム１００は、例えば論理アドレス７からの読出し命令を発行する（ステップＳ４１）。この命令をホストＢＵＳインターフェース１０１上で傍受した例えばドライブ＃１は、論理アドレス７が自身のドライブのブロック４へのアクセスであることがわかるので、データの準備が出来た時点でホストシステムに対してreadyを返す（ステップＳ４２のＹＥＳ，Ｓ５２）。
【００５２】
ディスクドライブ＃１は、論理アドレス７が自身のドライブのブロック４へのアクセスであることがわかった時点で、相互通信用ＢＵＳ１０２に、ホストシステムにレスポンスを返すことを、当該データのパリティ情報を有するドライブ＃２に通知する（ステップＳ５１）。
【００５３】
ディスクドライブ＃１は、ホストシステムからの要求に応じて、正常に読出したデータを転送し、最後にステータス情報を返す（ステップＳ５３のＹＥＳ，Ｓ５４，Ｓ５６）。このとき、ディスクドライブ＃１は、正常終了を他のディスクドライブ＃２に通知する（ステップＳ５５）。これにより、ホストシステム１００は、ディスクドライブ＃１から読出しデータを受信して、ステータス情報が返信された時点で終了となる（ステップＳ４３，Ｓ４４のＹＥＳ）。
【００５４】
なお、ディスクドライブ＃１は、論理アドレス７に相当するアドレス４のデータが破壊されて、正常にデータを読出すことができない場合には、パリティ情報を有するディスクドライブ＃２に対して、復元データとステータス情報をホストシステム１００に転送するように通知する（ステップＳ５３のＮＯ，Ｓ５７）。
【００５５】
一方、ドライブ＃１が故障していた場合は、図１３に示すように、パリティ情報をもつドライブ＃２は、相互通信用ＢＵＳ１０２から通知が来ないため、自身のパリティ情報を使用して元データを復元するために、ディスクドライブ＃３に対して論理アドレス７とパリティを共有する論理アドレス１０のデータを読出すように通知する（ステップＳ６１のＮＯ，Ｓ６２）。
【００５６】
ドライブ＃３は、図１４に示すように、論理アドレス１０に相当する自身のドライブのブロック４のデータを読出し、相互通信用ＢＵＳ１０２を使用してドライブ＃２にデータを転送する（ステップＳ７１のＹＥＳ，Ｓ７３）。
【００５７】
図１３に示すように、ドライブ＃２は、パリティ情報とドライブ＃３から転送されたデータから失われた論理アドレス７のデータを復元する（ステップＳ６３，Ｓ６４）。ドライブ＃２は、ホストシステム１００に対してreadyを返し、ホストからの要求に応じてデータを転送し、最後にステータス情報を返す（ステップＳ６５〜Ｓ６８）。
【００５８】
（データ読出し制御の具体例２）
次に、図１５から図１８のフローチャートを参照して、本実施形態でのＲＡＩＤタイプ４または５のＲＡＩＤシステムで、データを読出すときに、アクセスされるデータが複数のドライブにまたがっているた場合の制御について説明する。
【００５９】
ホストシステム１００は、図１５に示すように、読出し要求がＲＡＩＤの論理アドレス８〜論理アドレス１１の場合とする（ステップＳ８１）。この場合、ホストシステムからのコマンドに対するレスポンスとコマンド実行後のステータスのレスポンスは、例えばドライブ＃１により実行される（ステップＳ８２〜Ｓ８４）。
【００６０】
ディスクドライブ＃１は、図１６に示すように、相互通信用ＢＵＳ１０２を介して、ホストシステム１００からのコマンドに対して、レスポンスを返すことを、ディスクドライブ＃３と、当該データのパリティ情報を有するディスクドライブ＃２に通知する（ステップＳ９１）。
【００６１】
ドライブ＃１は、自身が保持するデータの準備ができた時点で、ホストシステム１００に対してReadyを返す（ステップＳ９２）。次に、ドライブ＃１は、ホストシステム１００の要求に応じて論理アドレス８〜９のデータを転送する（ステップＳ９４）。さらに、相互通信用ＢＵＳ１０２を通して、ドライブ＃３に対してデータの転送を開始するように通知する（ステップＳ９５）。
【００６２】
ディスクドライブ＃３は、図１８に示すように、データの転送が終了したら、ステータスとと共に、相互通信用ＢＵＳ１０２を通してドライブ＃１に通知する（ステップＳ１３５，Ｓ１３６）。
【００６３】
ディスクドライブ＃１は、ドライブ＃３から転送終了通知を受け取ると、他のドライブ＃２に通知すると共に、ホストシステム１００に対してコマンドの実行結果ステータスを返す（ステップＳ９７のＹＥＳ，Ｓ９８，Ｓ９９）。
【００６４】
ここで、パリティ情報を有するディスクドライブ＃２は、図１７に示すように、相互通信用ＢＵＳ１０２から通知が来ない場合、ドライブ＃１が故障していると判定し、パリティ情報を使用して元データを復元する処理を実行する（ステップＳ１１１のＮＯ）。先ず、ドライブ＃２は、ドライブ＃３に対して、論理アドレス８〜９とパリティを共有する論理アドレス１０〜１１のデータを読出すように通知する（ステップＳ１１２）。
【００６５】
ディスクドライブ＃３は、図１８に示すように、ドライブ＃２から要求されたデータを読出し、相互通信用ＢＵＳ１０２を使用してドライブ＃２にデータを転送する（ステップＳ１３３のＹＥＳ，Ｓ１３８）。
【００６６】
ドライブ＃２は、図１７に示すように、パリティ情報とドライブ＃３から送られてきたデータから失われたデータを復元する（ステップＳ１１３，Ｓ１１４）。この場合、ドライブ＃３には、転送すべきデータがバッファ上にあることがわかっているので、ドライブ＃２はホストシステム１００に対してreadyを返す（ステップＳ１１５のＮＯ，１１６）。
【００６７】
さらに、ドライブ＃２は、ホストシステム１００からの要求に応じて復元したデータを転送する（ステップＳ１１７）。また、ドライブ＃２は、ドライブ＃に対してデータの転送を開始するように、相互通信用ＢＵＳ１０２を通して通知する（ステップＳ１１８）。
【００６８】
ドライブ＃３は、図１８に示すように、データの転送が終了したら、ステータスとともにドライブ２に相互通信用ＢＵＳ１０２を通して通知する（ステップＳ１３４のＹＥＳ，Ｓ１３５，Ｓ１３６）。
【００６９】
ドライブ＃２は、ドライブ＃３から転送終了通知を受け取ると、ホストシステム１００に対してコマンドの実行結果ステータスを返す（ステップＳ１１９のＹＥＳ，Ｓ１２１）。
【００７０】
一方、ディスクドライブ＃１は、図１６に示すように、論理アドレス１０〜１１のデータがドライブ＃３で準備できたのを確認できないため、ドライブ＃３が故障していると判定する（ステップＳ９６のＮＯ）。
【００７１】
ドライブ＃１は、パリティ情報を有するドライブ＃２に対して、データを復元し、かつドライブ＃３に代わってホストシステム１００に転送するように通知する（ステップＳ１０１）。
【００７２】
ドライブ＃２は、図１７に示すように、論理アドレス１０〜１１のデータを復元するために、ドライブ＃１に対して、論理アドレス８〜９のデータを転送するように相互通信用ＢＵＳ１０２を使用して要求する（ステップＳ１２３のＹＥＳ，Ｓ１２４）。
【００７３】
従って、ドライブ＃１は、論理アドレス８〜９のデータを、通信用ＢＵＳ１０２を通してドライブ２にも転送する（ステップＳ１０２）。あるいは、別の実施方法として、ドライブ＃２は、必要なデータをドライブ１がホストBUSインターフェース１０１上に流すことがわかっているのでデータの転送要求は出さずに、ドライブ＃１がホストシステム１００に対して転送しているデータをモニタしても構わない。
【００７４】
ドライブ＃２は、復元したデータをホストシステム１００に転送した後、ステータスと共にドライブ＃１に通知する（ステップＳ１２６，Ｓ１２７）。ドライブ＃１は、これを受けてホストシステム１００にステータスを返す（ステップＳ１０３のＹＥＳ，Ｓ９９）。
【００７５】
（データ読出し制御の具体例３）
以下図１９及び図２０のフローチャートを参照して、本実施形態でのＲＡＩＤタイプ１のＲＡＩＤシステムで、データを読出す場合の制御について説明する。
【００７６】
図１０に示すようなＲＡＩＤ構成において、ホストシステム１００は、図１９に示すように、例えば論理アドレス７からの読出し命令を発行する（ステップＳ１４１）。ホストシステム１００は、ドライブ＃１または＃２から要求したデータ及びステータスを受け取ると動作を終了する（ステップＳ１４３，Ｓ１４４のＹＥＳ）。
【００７７】
この命令に応じて、ディスクドライブ＃１及び＃２はそれぞれ、図２０に示すように、ブロックアドレス７のデータにアクセスする（ステップＳ１４５）。先に、アクセスに成功したドライブ＃１又は＃２は、相互通信用ＢＵＳ１０２を通して、ｒｅａｄｙ通知を他方のドライブに送出し、かつホストシステム１００にもreadyを返す（ステップＳ１４６〜Ｓ１４８）。
【００７８】
いま仮に、ドライブ＃１がready通知を送出したとすると、以後の読出し動作の主導権は、全てドライブ＃１が握る。即ち、ドライブ＃１は、ホストシステム１００が要求する全てのデータを自身のディスクから読出して転送する（ステップＳ１４９）。または、シーク動作によりデータの読出しが途絶えるアドレスを予測して、そこからのデータは、ドライブ＃２に先読みさせて、ホストに転送するように通知しても良い。転送が終了した時点デ、ドライブ＃１はホストシステム１００にステータスを返す（ステップＳ１５０）。
【００７９】
ここで、ＲＡＩＤタイプ１の場合、片方のドライブが故障した場合は、ｒｅａｄｙ通知を出せないし、データ転送の肩代わり要求に対するレスポンスも返せないので、他方のディスクドライブが、単独のドライブとして動作するだけである。
【００８０】
（データ書き込み制御の具体例１）
次に、図２１から図２４を参照して、本実施形態でのＲＡＩＤタイプ４または５のＲＡＩＤシステムにおいて、データを書き込む場合の制御について説明する。
【００８１】
図９に示すようなＲＡＩＤ構成において、ホストシステム１００は、図２１に示すように、例えば論理アドレス７に対する書き込み命令を発行する（ステップＳ１５１）。ホストシステム１００は、例えばドライブ＃１に書き込みデータを転送し、ステータスを受け取ると動作を終了する（ステップＳ１５３，Ｓ１５４のＹＥＳ）。
【００８２】
ディスクドライブ＃１は、ホストＢＵＳインターフェース１０１上で当該命令を傍受すると、論理アドレス７が自身のディスクのブロック４へのアクセスであることがわかる。この時点で、ドライブ＃１は、図２２に示すように、相互通信用ＢＵＳ１０２を介して、ホストシステム１００からのコマンドに対して、ドライブ＃１がレスポンスを返すことを、当該データのパリティ情報を有するディスクドライブ＃２に通知する（ステップＳ１６１）。
【００８３】
ドライブ＃２は、論理アドレス７に対するパリティ情報が自身のドライブ＃２のブロック４にあることがわかる。また、ドライブ＃２は、このパリティ生成に関わる論理アドレス１０（＝ドライブ＃３のブロック４）のデータが書き換わらないこともわかるので、新たに書き込まれるデータに対応したパリティ情報に更新するためブロック４のデータをバッファに読み込む。
【００８４】
さらに、図２３に示すように、ドライブ＃２は、ドライブ＃１に対して、書き換え対象である論理アドレス７の書き換え前のデータを、相互通信用ＢＵＳ１０２を介して転送するように要求する（ステップＳ１７１のＹＥＳ，Ｓ１７２）。ドライブ＃２は、ブロック４のデータと論理アドレス７の書き換え前のデータの排他的論理和を生成してパリティ更新に備える（ステップＳ１７４，Ｓ１７５）。
【００８５】
一方、ドライブ＃１は、図２２に示すように、論理アドレス７の書き換え前のデータをドライブ２に転送した後、ドライブ＃２のreadyを相互通信用ＢＵＳ１０２を介して確認する（ステップＳ１６４のＹＥＳ，Ｓ１６５）。確認が取れれば、即、ホストシステム１００に対してreadyを返す（ステップＳ１６６）。
【００８６】
但し、ドライブ＃２が故障で応答が無い場合でも、ドライブ＃１に書き込む準備ができていれば、readyを返し、コマンドの実行を継続する。ドライブ＃１は、ホストシステム１００からデータの転送を受けて、ディスクに書き込む（ステップＳ１６７）。
【００８７】
ディスクドライブ＃２は、図２３に示すように、ホストシステム１００からドライブ＃１に転送されているデータを同時に受信し、パリティ更新用のバッファ上のデータと排他的論理和をとって、ブロック４に更新されたパリティとして書き込む（ステップＳ１７６）。
【００８８】
ドライブ＃１は、自身のブロック４への書き込みステータスと、ドライブ＃２のパリティの書き込みステータスを相互通信用ＢＵＳ１０２を介して確認し、どちらか一方が成功していれば、完了のステータス情報を返す（ステップＳ１６９）。両方失敗した場合にはエラーのステータスを返す。
【００８９】
パリティ情報を有するドライブ＃２は、図２３に示すように、相互通信用ＢＵＳ１０２から通知が来ない場合、ドライブ１が故障していると判定する（ステップＳ１７１のＮＯ）。この場合は、ホストシステム１００に対するレスポンスを担当すべきことを認識するとともに、ドライブ＃１から書き換え前のデータを受け取ることが出来ないため、パリティ生成に必要な、論理アドレス１０のデータを読出すことを、ディスクドライブ＃３に相互通信用ＢＵＳ１０２を介して要求する（ステップＳ１７７）。
【００９０】
ディスクドライブ＃３は、図２４に示すように、ドライブ＃２から要求されたデータを転送し、処理終了通知を受けると終了する（ステップＳ１８３〜Ｓ１８５）。
【００９１】
ドライブ＃２は、ドライブ＃３からデータを受け取ったら、ホストシステム１００に対してreadyを返す（ステップＳ１７８，Ｓ１７９）。ドライブ＃２は、ホストシステム１０に要求したデータの転送を受ける。ドライブ＃２は、ホストシステム１００から転送されたデータと、バッファ上のドライブ＃３から転送された論理アドレス１０のデータとの排他的論理和をとって、ブロック４に更新されたパリティ情報として書き込む（ステップＳ１８０）。最後に、ドライブ＃２は、処理終了をほかのドライブに通知すると共に、ホストシステム１００に対してステータスを返す（ステップＳ１８１，Ｓ１８２）。
【００９２】
（データ書き込み制御の具体例２）
以下図２５から図２８のフローチャートを参照して、本実施形態でのＲＡＩＤタイプ４または５のＲＡＩＤシステムにおいて、データを書き込むときに、アクセスされるデータが複数のドライブにまたがった場合の制御について説明する。
【００９３】
図９に示すようなＲＡＩＤ構成において、ホストシステム１００は、図２５に示すように、例えば論理アドレス７〜論理アドレス１２に対する書き込み命令を発行する（ステップＳ１９１）。ホストシステム１００は、例えばドライブ＃１に書き込みデータを転送し、ステータスを受け取ると動作を終了する（ステップＳ１９３，Ｓ１９４のＹＥＳ）。
【００９４】
この場合、ホストシステムからのコマンドに対するレスポンスとコマンド実行後のステータスのレスポンスは、例えばディスクドライブ＃１により実行される。
【００９５】
ドライブ＃１は、図２６に示すように、相互通信用ＢＵＳ１０２を介して、ホストシステム１００からのコマンドに対してレスポンスを返すことを、ドライブ＃３と、当該データのパリティ情報を有するドライブ＃２に通知する（ステップＳ１９５）。
【００９６】
ディスクドライブ＃２は、論理アドレス８〜１１に対するパリティ情報が自身のドライブのブロック４〜６にあることがわかる。また、このパリティ生成にかかわるデータの全てが書き換わらることもわかるので、パリティ情報更新のために古いパリティ情報を読む必要が無いこともわかる。
【００９７】
ドライブ＃１は、ドライブ＃２とドライブ＃３のreadyを相互通信用ＢＵＳ１０２を介して確認する。確認が取れれば、即、ホストシステム１００に対してreadyを返す（ステップＳ１９６）。但し、ドライブ＃２またはドライブ＃３の何れかが故障で応答が無い場合でも、ドライブ＃１に書き込む準備が出来ていれば、readyを返し、コマンドの実行を継続し、ホストに要求してのデータの転送を受ける。
【００９８】
ドライブ＃２とドライブ＃３の両方が故障していた場合は、論理アドレス１０〜１２への書き込みが出来ないのでエラーを返す。
【００９９】
ドライブ＃２は、図２７に示すように、ホストシステム１００からドライブ＃１に転送されているデータを同時に受信し、パリティ更新データを作成するためにバッファに蓄積するが、まだ書き込みは行わない（ステップＳ２１２）。
【０１００】
ドライブ＃１は、ホストシステム１００に要求してデータの転送を受けたらブロック４〜６に書き込み、ドライブ＃３に対してデータの転送を開始するように相互通信用ＢＵＳ１０２を介して通知する（ステップＳ１９７，Ｓ１９８）。ドライブ＃１は、ドライブ＃３から転送終了通知を受け取ると、ホストシステム１００に対してコマンドの実行結果ステータスを返す（ステップＳ２００のＹＥＳ，Ｓ２０２）。
【０１０１】
ドライブ＃３は、図２８に示すように、データの転送が終了したら、ステータスとともにドライブ＃１に相互通信用ＢＵＳ１０２を通して通知する（ステップＳ２２５〜Ｓ２２７）。
【０１０２】
ドライブ＃２は、図２７に示すように、ホストシステム１００からドライブ＃３に転送されているデータを同時に受信し、パリティ更新データを作成するためにバッファに蓄積してあったデータと排他的論理和をとって新たなパリティ・データを作成しブロック４〜６に書き込みをする（ステップＳ２１４，Ｓ２１６）。
【０１０３】
ここで、パリティ情報を有するドライブ＃２は、相互通信用ＢＵＳ１０２から通知が来ないため、ドライブ＃１が故障していると判定する（ステップＳ２１１のＮＯ）。この場合、ドライブ＃３のreadyを相互通信用ＢＵＳ１０２を介して確認し、ホストシステム１００に対してreadyを返す（ステップＳ２１７のＹＥＳ，Ｓ２１８）。
【０１０４】
さらに、ドライブ＃２は、ホストに要求してデータの転送を受けて、ドライブ＃３に対してデータの転送を開始するように相互通信用ＢＵＳ１０２を介して通知する（ステップＳ２１９，Ｓ２２０）。
【０１０５】
ディスクドライブ＃３は、データの転送が終了したら、ステータスとともにドライブ２に相互通信用ＢＵＳ１０２を通して通知する。最後に、ドライブ＃２は、ホストシステム１００に対してコマンドの実行結果ステータスを返す（ステップＳ２２３）。
【０１０６】
ここで、ドライブ＃２が故障していた場合、パリティ情報が書き込まれないが、処理は正常時と同じように進行する。また、ドライブ＃３が故障していた場合、ドライブ＃１へのデータ転送の間は正常時と同様に、ホストシステム１００からドライブ＃１に転送されているデータを同時に受信し、パリティ更新データを作成するためにバッファに蓄積するが、まだ書き込みは行わない。
【０１０７】
ドライブ＃１は、ホストシステムに要求してのデータの転送を受けたら、ドライブ＃２に対してデータの転送を開始するように相互通信用ＢＵＳ１０２を通して通知する（ステップＳ２０３）。
【０１０８】
ドライブ＃２は、ホストシステム１００に要求してデータの転送を受け、パリティ更新データを作成するためにバッファに蓄積してあったデータと排他的論理和をとって新たなパリティ・データを作成しブロック４〜６に書き込みをする（ステップＳ２１６）。ドライブ＃２は、データの転送が終了したら、ステータスとともにドライブ＃１に相互通信用ＢＵＳ１０２を通して通知する。最後にドライブ＃１は、ホストに対してコマンドの実行結果ステータスを返す（ステップＳ２０２）。
【０１０９】
（データ書き込み制御の具体例３）
さらに、図２９及び図３０のフローチャートを参照して、本実施形態でのＲＡＩＤタイプ１のＲＡＩＤシステムでのデータの書き込み制御について説明する。
【０１１０】
図１０に示すようなＲＡＩＤ構成において、ホストシステム１００は、図２９に示すように、例えば論理アドレス７への書き込み命令を発行する（ステップＳ２３１）。ホストシステム１００は、ドライブ＃１または＃２にデータを転送し、ステータスを受け取ると動作を終了する（ステップＳ２３３，Ｓ２３４のＹＥＳ）。
【０１１１】
この命令に応じて、ディスクドライブ＃１及び＃２はそれぞれ、図３０に示すように、ブロックアドレス７にアクセスする（ステップＳ２３５）。即ち、ドライブ＃１とドライブ＃２はそれぞれ、ブロックアドレス７のデータ位置にシークする。先にシークに成功したドライブは、相互通信用ＢＵＳ１０２を通してready通知を他方のドライブに送出し、ホストにreadyを返す（ステップＳ２３６〜Ｓ２３８）。
【０１１２】
いま仮に、ドライブ＃１がreadyを送出したとすると、以後の書き込み動作の主導権は全てドライブ＃１が握る。即ち、ドライブ＃１は、ホストシステム１００に要求を出して、転送が終了した時点のホストへのステータス返送も実行する（ステップＳ２３９，Ｓ２４０）。但し、ドライブ＃２は、ドライブ＃１に転送されるデータをモニタして、自身のドライブ＃２と同じブロックにデータを書き込む。
【０１１３】
ここで、ＲＡＩＤタイプ１の場合、片方のドライブが故障した場合は、ｒｅａｄｙ通知を出せないので、他方のディスクドライブが、単独のドライブとして動作するだけである。
【０１１４】
データ書き込み動作の場合、要求されたブロック位置にシークする前からでもバッファにデータを蓄積することで処理を進めることが可能なので、この場合は、常にドライブ＃１がready通知を出すようにする。ドライブ＃２は、ドライブ＃１が故障などで、ready通知を出さない場合には、単独のドライブとして動作する。
【０１１５】
相互通信用ＢＵＳ１０２は、複数台のドライブで共有されるバスで、例えば、SCSIインターフェースのように、８〜３２本のデータＢＵＳラインと、RST、ATN、ACK、REQ、MSG、I/O、C/D、SEL、BSYといった制御信号線から構成される。このＢＵＳは、例えば、arbitration機能と、ブロードキャストメセージ・プロトコルを備えていて、ドライブのシリアル番号などをもとに、BUSに接続されたドライブが相互にドライブ番号の割り当てを行えるものとする。
【０１１６】
ホストＢＵＳインターフェース１０１が、例えば、ＡＴＡであった場合、ＢＵＳ上で認識されるドライブ数は２台までであるため、３台以上のドライブを接続する場合には、1台だけをprimaryドライブに設定し、他のドライブはsecondaryに設定する。
【０１１７】
ホストシステム１００からのＲＡＩＤを構築するためのコマンドは、primaryドライブに対して発行される。コマンドパラメータとして、実際にＲＡＩＤ構築用命令が実行されるべきドライブ番号を指定する。ドライブ構築命令を受けたprimaryドライブは、パラメータから他のドライブが実行すべき命令であることを認識した場合、このコマンドを相互通信用ＢＵＳ１０２を通して、指定されたドライブに転送する。
【０１１８】
相互通信用ＢＵＳ１０２からＲＡＩＤ構築命令を受けたドライブは、ステータスを相互通信用ＢＵｓ１０２を通して、primaryドライブに返し、これを受けたprimaryドライブは、ホストＢＵＳインターフェース１０１からホストに転送する。
【０１１９】
（第２の実施形態）
図３１は、第２の実施形態に関するＲＡＩＤシステムの構成を示すブロック図である。
【０１２０】
本実施形態は、ホストシステム１００に接続されているディスクドライブ（＃１）１０３は1台のみで、ホストシステム１００に接続していない方のコネクタを他のディスクドライブに接続することによっＲＡＩＤシステムを構成する。
【０１２１】
ホストシステム１００とディスクドライブ１０３間、および各ディスクドライブ相互間の通信は、送信用のＴＸ＋、ＴＸ−、受信用のＲＸ＋、ＲＸ−などの信号線から構成されるシリアルインターフェース１０１，１０２であるとする。
【０１２２】
シリアルインターフェースは、信号線の種類やレベルを規定した物理層、情報フレームの送受信を行うリンク層、送信のためにフレームを構築し、受信したフレームを分解するトランスポート層、といった階層構造を用いてコマンドとステータス、データの授受を行う。
【０１２３】
ホストシステム１００との通信は、ディスクドライブ（＃１）１０３のディスクコントローラ２０が実行する。ディスクコントローラ２０は、ホストシステム１００から発行された命令を受けて、その後の処理内容を決定する。
【０１２４】
ディスクドライブ＃１のコントローラ２０と、ディスクドライブ＃２のコントローラ２１とは、ホストシステム１００とディスクドライブ＃１のコントローラ２０とを接続しているケーブルと同様のケーブルで接続されており、物理層とリンク層までは同じ通信方式で接続されている。
【０１２５】
このような接続構成により、複数台の各ディスクドライブを直列に接続していくことができる。理論的には、図３１に示すように、ｎ台のディスクドライブを接続して、ＲＡＩＤシステムを構成することができる。
【０１２６】
（第３の実施形態）
図３２は、第３の実施形態に関するＲＡＩＤシステムの構成を示すブロック図である。
【０１２７】
本実施形態では、ホストＢＵＳインターフェース１０１は、図1に示すような第１の実施形態と同様なＢＵＳ構造を有する。一方、各ディスクドライブ相互間の通信は、送信用のＴＸ＋，ＴＸ−、受信用のＲＸ＋，ＲＸ−などの信号線から構成されるシリアルインターフェースである。即ち、本実施形態のシステムは、各ディスクドライブ相互間の通信をシリアルインターフェースを使用して、フレームの授受で実現する方式である。
【０１２８】
図３３は、本実施形態での各ディスクドライブ相互での通信で用いるパケット３３０のフォーマットを示す。
【０１２９】
パケット３３０の先頭部３３１は、単独のディスクドライブとしてホストシステムから制御されるためのコマンドであるのか、あるいは、ＲＡＩＤシステムで制御されるためのコマンドであるのかを識別するコマンド識別部である。さらに、フォーマットとしては、コマンド／メッセージ部３３２と、アクセスするディスクコントローラ番号を指定するためのコード部３３３と、データ開始部３３４と、データ部３３５と、パケットの終わりを示す部３３６とを有する。
【０１３０】
図３４は、本実施形態に関するＲＡＩＤ構築の処理手順を示すフローチャートである。
【０１３１】
具体的には、ホストシステム１００に接続されたディスクドライブから順に、ＩＤ（識別）番号が割り当てられる（ステップＳ２５１）。ＩＤ番号１のドライブ（＃１）のディスクコントローラ（２０）は、ＲＡＩＤ構成のディスクドライブの台数や容量の管理情報を登録する（ステップＳ２５２）。
【０１３２】
ＩＤ番号１のディスクコントローラは、ホストシステム１００からのコマンドにより指示されたＲＡＩＤレベル（例えばタイプ４または５）のＲＡＩＤを構築する（ステップＳ２５３）。ＩＤ番号１のディスクコントローラは、登録した管理情報を他のディスクドライブの各コントローラにコピーする（ステップＳ２５４）。
【０１３３】
これらの手順が正常に終了すれば、ＲＡＩＤの構築処理は終了となる（ステップＳ２５５，Ｓ２５６）。また、正常に終了しない場合には、ＩＤ番号１のディスクコントローラは、ホストシステム１００にエラー報告を通知して終了となる（ステップＳ２５７）。
【０１３４】
図３５は、本実施形態に関する各ディスクドライブ間の通信手順を示すフローチャートである。
【０１３５】
送信元のドライブ＃１のディスクコントローラ２０は、送信先のドライブのディスクコントローラ番号を指定してパケット（フレーム）を送信する（ステップＳ２６１）。パケットを受信したディスクコントローラは、パケット内の送信先ディスクコントローラ番号と自分の番号とを照合し、一致していない場合は、隣のディスクドライブにパケットを転送する（ステップＳ２６３のＮＯ，Ｓ２６６）。
【０１３６】
一方、当該各コントローラ番号が一致している場合には、送信先のコントローラは受信したコマンドを解析して、当該コマンドに応じた処理を実行する。即ち、ディスクアクセス処理を実行する（ステップＳ２６３のＹＥＳ，Ｓ２６４）。送信先のコントローラは、送信元のコントローラ２０に受信完了を通知する（ステップＳ２６５）。
【０１３７】
以上のように第１から第３の実施形態によれば、単独でディスク記憶装置として動作する各ディスクドライブがそれぞれ、通信により相互に協調してＲＡＩＤを構築する機能を内蔵することにより、ホストシステム１００からのＲＡＩＤ構築コマンドに応じてＲＡＩＤシステムを簡単かつ低コストで構築することができる。即ち、ＲＡＩＤコントローラのような特別の装置を必要とすることなく、いわば各ディスクドライブにコントローラ機能を分散することにより、ＲＡＩＤシステムを構築することができる。
【０１３８】
特に、小型の複数台のディスクドライブを相互に通信可能なように接続するだけで、信頼性が高く、かつ大容量のＲＡＩＤシステムを、大規模な構造を要することなく実現できる。
【０１３９】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１４０】
【図１】本発明の実施形態に関するＲＡＩＤシステムのシステム構成を示すブロック図。
【図２】本実施形態に関するディスクドライブの要部を示すブロック図。
【図３】本実施形態に関する分散ＲＡＩＤ処理用テーブルの構成を示す図。
【図４】本実施形態に関するＲＡＩＤ構成テーブルの一例を示す図。
【図５】本実施形態に関するＲＡＩＤシステムの構築動作を説明するためのフローチャート。
【図６】本実施形態に関するＲＡＩＤシステムの構築動作を説明するためのフローチャート。
【図７】本実施形態に関するＲＡＩＤシステムの構築動作を説明するためのフローチャート。
【図８】本実施形態に関する各ディスクドライブのブロック構成を説明するための図。
【図９】本実施形態に関する各ディスクドライブのブロック構成を説明するための図。
【図１０】本実施形態に関するＲＡＩＤシステムの構築動作をＲＡＩＤタイプ１に適用する場合の具体例を説明するための図。
【図１１】本実施形態に関するデータ読出し動作の具体例１を説明するためのフローチャート。
【図１２】本実施形態に関するデータ読出し動作の具体例１を説明するためのフローチャート。
【図１３】本実施形態に関するデータ読出し動作の具体例１を説明するためのフローチャート。
【図１４】本実施形態に関するデータ読出し動作の具体例１を説明するためのフローチャート。
【図１５】本実施形態に関するデータ読出し動作の具体例２を説明するためのフローチャート。
【図１６】本実施形態に関するデータ読出し動作の具体例２を説明するためのフローチャート。
【図１７】本実施形態に関するデータ読出し動作の具体例２を説明するためのフローチャート。
【図１８】本実施形態に関するデータ読出し動作の具体例２を説明するためのフローチャート。
【図１９】本実施形態に関するデータ読出し動作の具体例３を説明するためのフローチャート。
【図２０】本実施形態に関するデータ読出し動作の具体例３を説明するためのフローチャート。
【図２１】本実施形態に関するデータ書き込み動作の具体例１を説明するためのフローチャート。
【図２２】本実施形態に関するデータ書き込み動作の具体例１を説明するためのフローチャート。
【図２３】本実施形態に関するデータ書き込み動作の具体例１を説明するためのフローチャート。
【図２４】本実施形態に関するデータ書き込み動作の具体例１を説明するためのフローチャート。
【図２５】本実施形態に関するデータ書き込み動作の具体例２を説明するためのフローチャート。
【図２６】本実施形態に関するデータ書き込み動作の具体例２を説明するためのフローチャート。
【図２７】本実施形態に関するデータ書き込み動作の具体例２を説明するためのフローチャート。
【図２８】本実施形態に関するデータ書き込み動作の具体例２を説明するためのフローチャート。
【図２９】本実施形態に関するデータ書き込み動作の具体例３を説明するためのフローチャート。
【図３０】本実施形態に関するデータ書き込み動作の具体例３を説明するためのフローチャート。
【図３１】第２の実施形態に関するＲＡＩＤシステムのシステム構成を示すブロック図。
【図３２】第３の実施形態に関するＲＡＩＤシステムのシステム構成を示すブロック図。
【図３３】第３の実施形態に関する通信用パケットのフォーマットを示す図。
【図３４】第３の実施形態に関するＲＡＩＤ構築の処理手順を示すフローチャート。
【図３５】第３の実施形態に関する各ドライブ間の通信手順を示すフローチャート。
【符号の説明】
【０１４１】
１０，１１，１３…ディスク、２０，２１，２２…ディスクコントローラ、
１００…ホストシステム、１０１…ホストＢＵＳインターフェース、
１０２…相互通信用バス、１０３〜１０６…ディスクドライブ、
１０７，１０８…コネクタ、２００…分散ＲＡＩＤモード命令処理ブロック、
２１０…分散ＲＡＩＤ処理用テーブル、２２０…単独モード命令処理ブロック、
２３０…ディスク間通信制御ブロック、２４０…データ復元ブロック、
２５０…パリティ情報生成ブロック。
【図１】
2005316762.tif 000003
【図２】
2005316762.tif 000004
【図３】
2005316762.tif 000005
【図４】
2005316762.tif 000006
【図５】
2005316762.tif 000007
【図６】
2005316762.tif 000008
【図７】
2005316762.tif 000009
【図８】
2005316762.tif 000010
【図９】
2005316762.tif 000011
【図１０】
2005316762.tif 000012
【図１１】
2005316762.tif 000013
【図１２】
2005316762.tif 000014
【図１３】
2005316762.tif 000015
【図１４】
2005316762.tif 000016
【図１５】
2005316762.tif 000017
【図１６】
2005316762.tif 000018
【図１７】
2005316762.tif 000019
【図１８】
2005316762.tif 000020
【図１９】
2005316762.tif 000021
【図２０】
2005316762.tif 000022
【図２１】
2005316762.tif 000023
【図２２】
2005316762.tif 000024
【図２３】
2005316762.tif 000025
【図２４】
2005316762.tif 000026
【図２５】
2005316762.tif 000027
【図２６】
2005316762.tif 000028
【図２７】
2005316762.tif 000029
【図２８】
2005316762.tif 000030
【図２９】
2005316762.tif 000031
【図３０】
2005316762.tif 000032
【図３１】
2005316762.tif 000033
【図３２】
2005316762.tif 000034
【図３３】
2005316762.tif 000035
【図３４】
2005316762.tif 000036
【図３５】
2005316762.tif 000037