(57)【特許請求の範囲】
【請求項１】
第１の記憶チャネルと、
第２の記憶チャネルと、
前記第１の記憶チャネルと前記第２の記憶チャネルとに結合された第１のコントローラと、
前記第１の記憶チャネルに結合された第１のポートと第２の記憶チャンネルに結合されたと第２のポートを有する第１の記憶装置と、
第３の記憶チャネルと、
第４の記憶チャネルと、
前記第３の記憶チャネルと前記第４の記憶チャンネルに結合された第２の記憶装置と、
前記第３の記憶チャネルに結合された第１のポートと前記第４の記憶チャンネルに結合された第２ポートを有する第２のコントローラと、
前記第１の記憶チャネルと前記第３の記憶チャネルとに結合され、第１の状態で前記第１の記憶チャネルを前記第３の記憶チャネルから分離し、第２の状態で前記第１の記憶チャネルと前記第３の記憶チャネルとを接続する第１のスイッチと、
前記第２の記憶チャネルと前記第４の記憶チャネルとに結合され、第１の状態で前記第２の記憶チャネルを前記第４の記憶チャネルから分離し、第２の状態で前記第２の記憶チャネルと前記第４の記憶チャネルとを接続する第２のスイッチと、
スイッチ・コントローラ手段と、
から構成され；
上記スイッチ・コントローラ手段は、
前記第２のコントローラが動作していることを検知すると、前記第１のスイッチを第１の状態にし、
前記第２のコントローラが動作しており且つ前記第１のコントローラと前記第２のコントローラの間でキャッシュ・ミラーリングが可能になっていることを検出すると、前記第２のスイッチを第２の状態にし、これによって前記第１のコントローラ内でキャッシュされたデータを前記第２のコントローラにミラーリングし、
前記第２コントローラが動作しており、且つ前記第１のコントローラと前記第２のコントローラの間でキャッシュ・ミラーリングが可能であることが明確でないときは前記第２のスイッチを第１の状態にし、
前記第２のコントローラが動作不能であることを検出すると前記第１のスイッチを第２の状態に且つ前記第２のスイッチを第２の状態にすることにより、
前記第１のコントローラは、前記第２のコントローラが故障の場合に、前記第１の記憶装置と前記第２の記憶装置を制御するように構成したことを特徴とするデータ記憶システム。
【請求項２】
前記第１の記憶装置がディスク・ドライブを含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項３】
前記第１の記憶装置がランダム・アクセス・メモリ（ＲＡＭ）ディスクを含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項４】
前記第１の記憶装置がテープ・ドライブを含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項５】
前記第１の記憶装置がメモリ・チップを含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項６】
前記第１の記憶チャネルがファイバ・チャネル・バスを含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項７】
前記第１の記憶チャネルがスモール・コンピュータ・システム（ＳＣＳＩ）バスを含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項８】
前記第１の記憶チャネルがストレージ・システム・アーキテクチャ（ＳＳＡ）バスを含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項９】
前記第１の記憶チャネルがＡＴアタッチメント（ＡＴＡ）バスを含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項１０】
前記第１の記憶チャネルがメモリ・バスを含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項１１】
前記第１の記憶チャネルに結合された複数の記憶装置を含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項１２】
前記複数の記憶装置がディスク・ドライブを含むことを特徴とする請求項１１に記載のデータ記憶システム。
【請求項１３】
前記第１のコントローラがＲＡＩＤコントローラを含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項１４】
前記第１のコントローラがメモリ・コントローラを含むことを特徴とする請求項１に記載のデータ記憶システム。
【請求項１５】
前記第１のコントローラがディスク・コントローラを含むことを特徴とする請求項１に記載のデータ記憶システム。
【発明の詳細な説明】
【０００１】
発明の背景
発明の分野
本発明はデータ記憶システムに関し、詳細には新規な記憶チャネル・アーキテクチャに関する。
【０００２】
関連技術
記憶アレイはディスク・ドライブ、ＲＡＭディスク、テープ・ドライブ、メモリ・チップなどの多数の装置を含むことが多く、それらは、バスやケーブルなどの記憶チャネルによってコントローラに接続されている。コントローラは、外部アクセス・インタフェースを備え、外部アクセス・インタフェースと記憶装置との間のデータの転送を管理する。
【０００３】
ディスク・ドライブおよびＲＡＭディスクの場合、記憶アレイは一般にディスク・アレイと呼ばれ、ディスク・コントローラがホスト・コンピュータを複数のディスク・ドライブに接続する。ディスク・コントローラは、ＪＢＯＤ（Ｊｕｓｔ  ａ  ｂｕｎｃｈ  ｏｆ  ｄｒｉｖｅｓ）構成の実際のドライブへアクセスすることができ、独立した複数のディスクから成る冗長アレイ（ＲＡＩＤ）のドライブにわたってデータのストライプを行うこともできる。記憶チャネルはＡＴアタッチメント（ＡＴ  Ａｔｔａｃｈｍｅｎｔ：ＡＴＡ）、スモール・コンピュータ・システム・インタフェース（ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ：ＳＣＳＩ）、ファイバ・チャネル、またはストレージ・システム・アーキテクチャ（ｓｔｏｒａｇｅ  ｓｙｓｔｅｍ  ａｒｃｈｉｔｅｃｔｕｒｅ：ＳＳＡ）を含むことが多い。外部アクセス・インタフェースは、業界標準アーキテクチャ（ｉｎｄｕｓｔｒｙ  ｓｔａｎｄａｒｄ  ａｒｃｈｔｅｃｔｕｒｅ：ＩＳＡ）、バスまたはペリフェラル・コンポーネント相互接続（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ：ＰＣＩ）バス（ホスト・アダプタ用）、ＳＣＳＩ、ファイバ・チャネル、またはＳＳＡを含むことが多い。
【０００４】
テープ・ドライブの場合、記憶アレイは、一般に、個別のテープまたはテープ・サイロを含む。コントローラは、テープ間のデータ・ストライプ機能を備えることができる。記憶チャネルと外部アクセス・インタフェースは、通常ディスク・ドライブの場合と同じである。
【０００５】
メモリ・チップ記憶装置の場合、記憶アレイは、一般にメイン・プロセッサ・メモリ、キャッシュ、メモリ、またはその他のメモリ・サブシステムである。コントローラは、一般に、誤り検出および訂正（パリティおよびＥＣＣ）を行い、データ・ストライプ（通常はインターリーブと呼ばれる）機能を備える。記憶チャネルはメモリ・バスである。外部アクセス・インタフェースは一般にＰＣＩバスまたはプロセッサ・バスである。
【０００６】
単一コントローラの障害が発生した場合に（高可用性をもたせるように）記憶装置へのアクセスを維持するために、「二重コントローラ」構成で同じ記憶装置に２つのコントローラを接続することができる。一方のコントローラは、一方の記憶装置セットへのアクセスを可能にし、他方のコントローラは他方の記憶装置セットへのアクセスを可能にする。このような構成は、一方のコントローラが障害を起こした場合、存続している方のコントローラから記憶装置へアクセスできる。
【０００７】
図１（従来の技術）に、各コントローラが１つの外部アクセス・インタフェース１２を有する２つのコントローラ１０を備えた記憶アレイを示す。両方のコントローラ１０は、３本の共用記憶チャネル、たとえばチャネル１４を介して６個の（単一ポートＳＣＳＩドライブ）記憶装置、たとえば記憶装置１６に接続されている。図２（従来の技術）に、各コントローラが１つの外部アクセス・インタフェース１２を有する２つのコントローラ１０を備えた記憶アレイを示す。両方のコントローラ１０は、２本の共用記憶チャネル、たとえば記憶チャネル１４を介して６個の（二重ポートＦＣ−ＡＬドライブ）記憶装置、たとえば記憶装置１６に接続されている。両方のアーキテクチャにおいて、すべての記憶チャネルが両方のコントローラに接続され、任意のコントローラが任意の記憶チャネルを介して任意の記憶装置にアクセスすることができるようになっている。二重ポート記憶装置の場合、この構成により、単一の記憶チャネルが障害を起こしても、いずれかのコントローラからドライブへのアクセスを維持することができる。
【０００８】
特定の１つのコントローラが最大数の記憶チャネルをサポートする。これによって、記憶装置とコントローラとの間のデータ転送のための最大帯域幅「Ｂ」が決まる。二重コントローラ構成では、潜在的には２つのコントローラによってこの帯域幅の２倍（Ｂ×２）をサポートすることが可能である。しかし、高可用性のために記憶チャネルが両方のコントローラに接続されているため、これらの共用記憶チャネルは統合帯域幅「Ｂ」しかサポートしない。
【０００９】
各コントローラはそれ自体の記憶装置にのみアクセスするため、通常時には、各コントローラは最大帯域幅の約半分（Ｂ／２）を使用する。コントローラ障害の場合にのみ、存続コントローラが、すべての記憶チャネル上のそのすべての潜在帯域幅「Ｂ」を使用する。したがって、障害時以外の通常の場合には、コントローラ上の記憶チャネル帯域幅の半分と、それに付随するハードウェア機能は使用されず、それによってコントローラのコストが増大している。
【００１０】
さらに、記憶アレイに追加の記憶装置を追加しても最大帯域幅は変化せず、したがって、いずれかの時点で記憶装置を追加しても単に合計記憶データ容量が増えるに過ぎず、記憶アレイのパフォーマンスは向上しない。
【００１１】
新しい記憶装置は、新しい一対のコントローラに接続することができる。しかし、これによって、元の記憶アレイとは独立した第２の記憶アレイができる。複数の記憶アレイがあると、管理と維持の両方の点で記憶サブシステム全体の複雑さとコストが増す。さらに、一方の記憶アレイ内のコントローラが他方の記憶アレイ内の記憶装置にアクセスすることはできない。したがって、２つの独立した記憶アレイがある場合、外部アクセス・インタフェースが記憶装置のうちのいずれの記憶装置との間でもデータを転送することができるようにするために、外部アクセス・インタフェースに外部スイッチング機構（たとえばファイバ・チャネル・スイッチ）が必要になることがある。
【００１２】
概要
本発明の一実施態様によると、データ記憶システムは、第１の記憶チャネルと、第１の記憶チャネルに結合された第１のコントローラと、第１の記憶チャネルに結合された第１の記憶装置と、第２の記憶チャネルと、第２の記憶チャネルに結合された第２の記憶装置と、第１の記憶チャネルと第２の記憶チャネルとに結合されたスイッチとを有する。スイッチは、第１の状態では第１の記憶チャネルを第２の記憶チャネルから分離し、第２の状態では第１の記憶チャネルと第２の記憶チャネルとを接続する。
【００１３】
本発明の他の実施態様によると、データ記憶システムは、第１の記憶チャネルと、第１の記憶チャネルに結合された第１のコントローラと、第１の記憶チャネルに結合された第１の記憶装置と、第２の記憶チャネルと、第２の記憶チャネルに結合された第２のコントローラと、第２の記憶チャネルに結合された第２の記憶装置と、第１のコントローラと第１の記憶装置とに結合された第３の記憶チャネルと、第２のコントローラと第２の記憶装置とに結合された第４の記憶チャネルと、第１の記憶チャネルと第２の記憶チャネルとに結合されたスイッチとを含む。スイッチは、第１の状態では第１の記憶チャネルを第２の記憶チャネルから分離し、第２の状態では第１の記憶チャネルと第２の記憶チャネルを接続する。
【００１４】
本発明の他の実施態様によると、データ記憶システムは、第１の記憶チャネルと、第１の記憶チャネルに結合された第１の記憶装置と、第１の記憶チャネルに結合されたスイッチとを含む。スイッチは、第２の記憶装置に結合された第２の記憶チャネルに結合するインタフェースに結合されている。スイッチは、第１の状態では第１の記憶チャネルを第２の記憶チャネルから分離し、第２の状態では第１の記憶チャネルと第２の記憶チャネルとを接続する。
【００１５】
本発明の他の実施態様によると、データ記憶システムは、ファイバ・チャネル・ループと、ファイバ・チャネル・ループに結合された第１の複数の記憶装置と、ファイバ・チャネル・ループに結合されたループ回復回路とを含む。ループ回復回路は、第２の複数の記憶装置に結合された第２の記憶チャネルに結合するインタフェースを有し、第１の状態ではファイバ・チャネル・ループを第２の記憶チャネルから分離し、第２の状態ではファイバ・チャネル・ループと第２の記憶チャネルとを接続する。
【００１６】
本発明の他の実施態様は、第１の記憶チャネルと、第１の記憶チャネルに結合された第１の記憶装置と、第１の記憶チャネルに結合された動作可能コントローラと、第２の記憶チャネルと、第２の記憶チャネルに結合された第２の記憶装置と、第１の記憶チャネルと第２の記憶チャネルとに結合されたスイッチとを有するデータ記憶システムを制御する方法に関する。この方法は、動作可能コントローラが第２の記憶チャネルに結合されているか否かを検出するステップと、動作可能コントローラが第２の記憶チャネルに結合されている場合にスイッチを開くステップとを含む。
【００１７】
本発明の他の実施態様によると、データ記憶システムは、第１の記憶チャネルと、第１の記憶チャネルに結合された第１のコントローラと、第１の記憶チャネルに結合された第１の記憶装置と、第２の記憶チャネルと、第２の記憶チャネルに結合された第２の記憶装置と、第１の記憶チャネルと第２の記憶チャネルとに結合されたスイッチと、動作可能コントローラが第２の記憶チャネルに結合されているか否かに従ってスイッチを制御するロジックとを含む。
【００１８】
詳細な説明
本発明は、プログラマブル・ハードウェア・スイッチを使用して、単一の記憶チャネルを複数の独立した区分に分割することができるようにする。記憶装置のセットとコントローラとから成る記憶アレイを各区分に接続することができる。スイッチが閉じられると、スイッチは２つの隣接する区分を結合して１つの区分にし、スイッチを介してデータ転送を行うことができるようにする。スイッチは開かれると、区分を２つに分割し、それによって合計記憶チャネル帯域幅を二倍にする。
【００１９】
図３に、２本の記憶チャネルと二重ポート記憶装置とを有するアーキテクチャにおいて接続された２つの記憶アレイを示す。記憶アレイ２０ａは、１つの外部アクセス・インタフェース１２ａを備えたコントローラ１０ａを有する。コントローラ１０ａは、２本の記憶チャネル１４ａ１および１４ａ２を介して二重ポート記憶装置、たとえば１６ａに接続されている。同様に、記憶アレイ２０ｂは、１つの外部アクセス・インタフェース１２ｂを備えたコントローラ１０ｂを有する。コントローラ１０ｂは、２本の記憶チャネル１４ｂ１および１４ｂ２を介して二重ポート記憶装置、たとえば１６ｂに接続されている。記憶チャネル１４ａ１は、ハードウェア・スイッチ１８ａ１を介して記憶チャネル１４ｂ１に接続されている。同様に、記憶チャネル１４ａ２は、ハードウェア・スイッチ１８ａ２を介して記憶チャネル１４ｂ２に接続されている。この２つのスイッチ１８ａ１および１８ａ２は、２つの記憶アレイ２０ａおよび２０ｂに接続する。他の記憶アレイに接続されていない４本の記憶チャネル１４ａ１、１４ａ２、１４ｂ１、および１４ｂ２の他端には、ハードウェア・スイッチ１８がある。
【００２０】
この構成によって、各コントローラは、コントローラがドライブの一部のみを処理しているときにも、すべてのドライブを処理しているときにも、その潜在帯域幅を使用することができる。したがって、この構成は、従来技術の不使用ハードウェア能力の犠牲をなくす。記憶アレイの合計帯域幅は、コントローラの数に比例して増大する。本発明の実施形態によると、既存のアレイに記憶装置を追加することができるだけでなく、既存のアレイにコントローラも追加することができ、それによって、既存の記憶装置と新規の記憶装置の両方からパフォーマンスが向上する。本発明の一実施態様により既存の記憶アレイに新規のコントローラまたは記憶装置を追加しても、その結果として単一の記憶アレイになる。
【００２１】
本発明の一実施形態の利点は、物理的移動や再配線を行わず、データ・アクセスへの割込みも行わずに（システム停止時間なしに）、コントローラと記憶装置の追加を行うことができることである。本発明の一実施態様によると、記憶アレイは３個以上のコントローラを有する。コントローラの数に比例して合計帯域幅が増大するため、記憶アレイの総パフォーマンスを拡大縮小することができる。さらに、本発明の他の実施態様によると、すべてのコントローラがすべての記憶装置にアクセスすることができ、それによって外部スイッチング機構が不要になる。
【００２２】
図４に、各コントローラがそれ自体の記憶装置にアクセスする通常の構成で接続された２つの記憶アレイを示す。２つの記憶アレイの間のスイッチ１８ａ１および１８ａ２が開いているため、各記憶チャネルが全帯域幅で動作することができる、合計４本の独立記憶チャネル１４ａ１、１４ａ２、１４ｂ１、および１４ｂ２がある。
【００２３】
図５に、１つのコントローラ１０ｂが障害を起こした場合の２つの記憶アレイを示す。記憶アレイの間のスイッチ１８ａ１および１８ａ２は閉じており、その結果、２本の記憶チャネル１４ｂ１および１４ｂ２しかない。存続コントローラ１０ａは、記憶チャネル１４ａｂ１と１４ａｂ２の両方を使用してすべての記憶装置にアクセスすることができる。
【００２４】
記憶チャネル上のスイッチは、異なる構成（開状態または閉状態）にすることができる。図６に、スイッチ１８ａ１が閉じて１本の記憶チャネル１４ａｂ１を形成し、スイッチ１８ａ２が開いて２本の独立した記憶チャネル１４ａ２および１４ｂ２を形成する２つの記憶アレイを示す。これによって、コントローラ１０ａは、それ自体の記憶装置にアクセスするためのそれ自体の独立した記憶チャネル１４ａ２が与えられる。また、コントローラ１０ｂにも、それ自体の記憶装置にアクセスするためのそれ自体の独立した記憶チャネル１４ｂ２が与えられる。両方のコントローラ１０ａおよび１０ｂは、共用記憶チャネル１４ａｂ１を使用してそれぞれ他方の記憶装置にもアクセスすることができる。コントローラ１０ａおよび１０ｂはこの共用記憶チャネル１４ａｂ１を使用して互いに通信したり、互いの間でデータを転送したりすることができる。コントローラ間のデータ転送が有用な一例は、冗長独立ディスク・アレイ（ＲＡＩＤ）コントローラにおけるキャッシュ・ミラーリングである。パフォーマンス上の理由から、ＲＡＩＤコントローラは、一般に、データをドライブに書き込む前にコントローラ内でキャッシュに入れる。コントローラ障害から保護するために、このデータは他のコントローラでミラーリング（またはコピー）される。共用記憶チャネルは、コントローラ間のキャッシュ・ミラーリング専用にすることもできる。
【００２５】
本発明の一実施形態では、一部の記憶アレイがコントローラを備えない。図７に、４つの記憶アレイのうちの２つの記憶アレイがコントローラを有し、２つの記憶アレイが記憶装置のみを有する、４つの記憶アレイを示す。記憶アレイ２０ａは、コントローラ１０ａを有し、記憶アレイ２０ｄはコントローラ１０ｄを有する。記憶アレイ２０ｂおよび２０ｃはコントローラを持たない。スイッチ１８ａ１、１８ｂ１、１８ｃ１、１８ａ２、および１８ｃ２は閉じており、スイッチ１８ｂ２は開いている。記憶チャネル１４ａｄ１は２つのコントローラ１０ａおよび１０ｄの間で（たとえばキャッシュ・ミラーリングのために）共用される。コントローラ１０ａは、記憶アレイ２０ａおよび２０ｂ内の記憶装置にアクセスする記憶チャネル１４ａｂ２も有する。コントローラ１０ｄは、記憶アレイ２０ｃおよび２０ｄ内の記憶装置にアクセスする記憶チャネル１４ｃｄ２も有する。
【００２６】
このような記憶システムのパフォーマンスを向上させるために、コントローラを持たない記憶アレイにコントローラを付加することができる。コントローラを付加し、スイッチをそれに応じて更新して、各コントローラに必要帯域幅をもたせることができる。図８に、さらに２つのコントローラ１０ｂおよび１０ｃが追加されたシステムの例を示す。３つのスイッチ１８ｂ１、１８ａ２、および１８ｃ２が、コントローラの各対が共通の記憶チャネルを共用し、各コントローラがそれ自体の記憶装置への記憶チャネルも有するように構成されている。コントローラ１０ａと１０ｂは記憶チャネル１４ａｂ１を共用する。コントローラ１０ｃと１０ｄは記憶チャネル１４ｃｄ１を共用する。各コントローラ１０ａ、１０ｂ、１０ｃ、および１０ｄは、それ自体のドライブにアクセスするための（それぞれ）記憶チャネル１４ａ２、１４ｂ２、１４ｃ２、および１４ｄ２も有する。
【００２７】
１つの記憶チャネル区分しか接続されていない開いたスイッチに接続することによって、既存の記憶アレイのセットに追加の記憶アレイを追加することもできる。たとえば図７で、記憶アレイのセットの右「端部」にもう一つの記憶アレイを接続し、スイッチ１８ｄ１および１８ｄ２を適切に更新することができる。
【００２８】
スイッチの再構成（開閉）は、ユーザの介入による手動でも自動的にも行うことができる。たとえば、コントローラが動作可能か障害があるかということや、コントローラ間のキャッシュ・ミラーリングが使用可能になっているか否かに基づいて、スイッチ構成を自動的に設定するソフトウェア・コードのフローチャートを、図９に示す。コントローラが動作可能か否かの判断は、コントローラ間のハートビート・メッセージなどの様々な機構に基づいて行うことができる。キャッシュ・ミラーリングが使用可能になっているか否かは、静的構成パラメータとすることができる。
【００２９】
まず、他方のコントローラが動作可能か否かを検査する１００。動作可能でない場合、スイッチ１８ａ１と１８ａ２は両方とも閉じられ１０８、それによってコントローラは図５に示すようにすべての記憶装置にアクセスすることができる。その後、周期的なポーリングによって、他方のコントローラが動作可能になったか否かを調べる１１２。１００または１１２から、他方のコントローラが動作可能な場合、キャッシュ・ミラーリングが使用可能か否かを調べる検査を行う１０２。キャッシュ・ミラーリングが使用可能な場合１０２、スイッチ１８ａ１を閉じ、スイッチ１８ａ２を開く１０４。図６に示すように、スイッチ１８ａ１が閉じられることによってコントローラ間に共用記憶チャネル１４ａｂ１ができ、スイッチ１８ａ２が開かれることによって２本の独立した記憶チャネル１４ａ２および１４ｂ２ができる。キャッシュ・ミラーリングが使用可能でない場合１０２、スイッチ１８ａ１と１８ａ２の両方を開く１０６。これによって、図４に示すように４本の独立した記憶チャネル１４ａ１、１４ａ２、１４ｂ１、および１４ｂ２ができる。その後、周期的ポーリングによって、他方のコントローラが動作不能１１０になったか否かを調べ、動作不能になった場合、これらのスイッチを閉じて１０８、存続コントローラがすべての記憶装置にアクセスすることができるようにする。
【００３０】
このソフトウェアの一実施形態は、既存のコントローラが動作可能か障害状態かを検査するほかに、新規コントローラの存在を検査する。既存のシステムに新規のコントローラが追加された場合、ハードウェア・スイッチが自動的に再構成される。たとえば、本発明の一実施形態によると、図７のシステムに２つの新規コントローラが追加されると、自動的に図８のような構成になる。
【００３１】
本発明の一実施形態の利点は、高可用性構成を作り出すことができることである。たとえば、本発明の一実施形態によると、単一の記憶装置が、システムの必要に応じて２個を超えるコントローラ、たとえば３個のコントローラ、４個のコントローラ、またはそれ以上のコントローラを有する。
【００３２】
以下の例示の実施形態は、ディスク・アレイを使用する適用例である。記憶チャネルにはファイバ・チャネル・アービトレーテド・ループ（Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ  Ａｒｂｉｔｒａｔｅｄ  Ｌｏｏｐ：ＦＣ−ＡＬ）が使用される。
【００３３】
図１０に、９つのディスク・ドライブ、たとえばディスク・ドライブ１６と、１つのコントローラ・カード１０と、２つのループ・カード３０−１および３０−２とをサポートする単一のユニット３２である記憶アレイを示す。ユニット３２は、電源／パッケージング／冷却機構（図示せず）も含む。ドライブ、たとえばドライブ１６と、コントローラ・カード１０と、ループ・カード３０−１および３０−２は、受動バックプレーン（図示せず）からホットプラグおよびホットスワップすることができ、高い可用性が得られる。
【００３４】
コントローラ・カード１０およびすべてのディスク・ドライブ、たとえばディスク・ドライブ１６は二重ポートであり、２つの独立したＦＣ−ＡＬループ１４−１および１４−２に接続される。ループ１４−１のハードウェア回路はループ・カード３０−１上にある。ループ１４−２のハードウェア回路はループ・カード３０−２上にある。
【００３５】
コントローラ・カード１０は、外部アクセス・インタフェース１２を有する。この例の実施態様は、ホスト・コンピュータに接続するためのＦＣ−ＡＬアクセス・インタフェースをサポートする。コントローラ・カード１０は、ＲＡＩＤコントローラの標準機能をサポートする。
【００３６】
ループ・カード３０−１は、他のユニットに接続するためのケーブル（図示せず）をサポートする２つの外部コントローラ２８Ｌ１および２８Ｒ１を有する。同様にループ・カード３０−２は、２つの外部コントローラ２８Ｌ２および２８Ｒ２を有する。一方のユニット上の２８Ｌ１が左側のユニット上の２８Ｒ１に接続し、一方のユニット上の２８Ｌ２が左側のユニット上の２８Ｒ２に接続するように、各ループ・カード上の２つのコネクタを介して（左右の）２つの隣接するユニットにユニットを配線することができる。各外部コネクタ２８Ｌ１、２８Ｒ１、２８Ｌ２、および２８Ｒ２と各相互接続ケーブルが、ＦＣ−ＡＬループおよびシリアル通信チャネルをサポートする。
【００３７】
ドライブ、たとえばドライブ１６、コントローラ・カード１０、およびループ・カード３０−１および３０−２からの状況信号２６によって、これらの構成要素が物理的に存在するか否かが示される。これらの状況信号２６は、ループ・カード３０−１と３０−２の両方にルーティングされる。コントローラ１０と各ループ・カード３０−１および３０−２との間には別個のシリアル通信チャネル２４Ｃが通っている。
【００３８】
ループ・カードの詳細
図１１に、ループ・カード３０のブロック図を示す。ループ回復回路（ＬＲＣ、ポート・バイパス回路とも呼ぶ）３８を使用して、コントローラ１０およびディスク・ドライブ、たとえばドライブ１６をファイバ・チャネル・ループ１４に接続する。各ループ上で追加の２つのＬＲＣ３８Ｌおよび３８Ｒを使用して、隣接するユニットを、ループ・カード・コネクタ２８Ｌおよび２８Ｒを介してこのユニットの両側（左と右）に接続する。ＬＲＣ３８Ｌおよび３８Ｒは、本発明に記載のプログラマブル・ハードウェア・スイッチを実装する。
【００３９】
図１２に、典型的なＬＲＣ３８のブロック図を示し、この装置が信号５０によってスイッチ可能であることを示す。信号５０がアサートされた場合、信号線４２および４４を介して接続された装置（図示せず）が迂回され、入力シリアル・ビット・ストリーム４０が、出力線４６に直接ルーティングされる。信号５０がアサート解除された場合、入力ビット・ストリーム４０を信号線４２を介して装置にルーティングし、戻りビット・ストリーム４４を装置から出力線４６にルーティングすることによって、信号線４２および４４を介して接続された装置（図示せず）がループに接続される。
【００４０】
図１１に示すように、ＬＲＣ制御信号５０は、制御／センス・バス３４を介してハードウェア・レジスタ回路３６によって駆動される。ドライブ、コントローラ・カード、およびループ・カードからの「構成要素有り」状況信号２６も、制御／センス・バス３４を介してハードウェア・レジスタ回路３６にルーティングされる。ケーブルがあるか否かを示す左右の各コネクタ２８Ｌおよび２８Ｒからの状況信号２６もある。これらの状況信号２６も、電源／冷却システム（図示せず）からの様々な制御信号および状況信号と共に、制御／センス・バス３４を介してハードウェア・レジスタ回路３６にルーティングされる。
【００４１】
３本の双方向シリアル通信チャネル２４Ｃ、２４Ｌ、および２４Ｒが、ハードウェア・レジスタ回路３６に接続されている。チャネル２４Ｃはコントローラ１０に通じている。チャネル２４Ｌは、隣接する左側のユニットへの接続のためのループ・カード・コネクタ２８Ｌに接続されている。チャネル２４Ｒは、隣接する右側ユニットへの接続のためのもう一つのループ・カード・コネクタ２８Ｒに接続されている。
【００４２】
ハードウェア・レジスタ回路の詳細
図１３に、ループ・カード３０内のハードウェア・レジスタ回路３６のブロック図を示す。ハードウェア・レジスタ５６は状況および制御信号線３４に接続されている。８０５１マイクロコントローラ５２内のＵＡＲＴが、コントローラ通信チャネル２４Ｃに接続されている。別個の二重ＵＡＲＴ５８が、隣接ユニットとの通信のためのシリアル通信チャネル２４Ｌおよび２４Ｒを備える。フラッシュＲＯＭ５４には８０５１ファームウェアが入っている。ハードウェア・レジスタ５６、二重ＵＡＲＴ５８、フラッシュＲＯＭ５４、およびマイクロコントローラ５２はデータ・バス６０によって接続されている。
【００４３】
８０５１マイクロコントローラ５２内のファームウェアは、シリアル通信チャネル２４Ｒ、２４Ｌ、および２４Ｃにシリアル・プロトコルを実装する。このプロトコルは、任意のシリアル・チャネル２４Ｒ、２４Ｌ、または２４Ｃからのハードウェア・レジスタ５６の読取りと書き込みを可能にする。フラッシュＲＯＭ５４も、シリアル・プロトコルを介して再プログラム可能である。
【００４４】
動作
以下の説明では、特に明記のない限り、図１０を参照する。ソフトウェアを使用して、ユニット３２、ドライブ１６、およびコントローラ１０の存在に基づきループ１４−１および１４−２を自動的に再構成する。この例示の実施態様では、ソフトウェアは、ユニット３２内のコントローラ・カード１０で実行される。これにより、修正を容易にすることができ、柔軟性を向上させることができる。あるいは、コントローラ・カード上で実行されるプロセスは、ループ・カード３０−１および３０−２上で８０５１マイクロコントローラ５２（図１３）ファームウェアによって実行することもできる。
【００４５】
ソフトウェア・タスクが、状況信号２６を周期的にポーリングして、ユニット３２内にどのような構成要素があるかを判断する。このポーリングは、ユニット内のハードウェア・レジスタ５６（図１３）の読取りと書込みをサポートするシリアル・プロトコルを介して行われる。コントローラ１０は、シリアル通信チャネル２４Ｃを介してローカル・ユニット・ループ・カード３０−１および３０−２上の８０５１マイクロコントローラ５２（図１３）と通信する。要求が他のユニットに対するものである場合、これらの８０５１マイクロコントローラはその要求をユニット相互接続ケーブル上のシリアル通信チャネル２４Ｌおよび２４Ｒ（図１３）を介して次のユニットに転送する。必要であれば、これらの８０５１コントローラは、その要求をさらに次のユニットに転送する。
【００４６】
ＬＲＣ回路３８Ｌおよび３８Ｒ（図１１）は、ユニットの構成と、コントローラ間でキャッシュ・ミラーリングが必要か否かに応じた様々な規則に従って更新される。たとえば、コントローラ・カードを持たない新しいユニットが追加された場合、ＬＲＣ回路３８Ｌおよび３８Ｒは、そのユニットのループをそのユニットが接続されたユニット上の既存のループに接続するように更新される。これは、新規ユニットの位置に応じてスイッチ３８Ｌまたは３８Ｒ（図１１）を閉じることによって行われる。あるいは、ユーザ制御による手動で、または自動的に、既存のユニット３２にコントローラ・カード１０が既存のユニット３２に追加される場合、その新規コントローラにそれ自体のドライブのための独立したドライブ・ループを設けるようにＬＲＣ回路３８Ｌおよび３８Ｒを更新することができる。これは、ＬＲＣ回路３８Ｌおよび３８Ｒ（図１１）をしかるべくスイッチングすることによって行われる。
【００４７】
代替実施形態
上述の説明では、特定の実施態様、たとえば、ファイバ・チャネル・ディスク記憶アレイに関して詳述したが、これは本発明の範囲の制限と解釈すべきではない。他の多くの変形態様も可能であり、例としては以下のものがある。
【００４８】
本発明の実施形態には、任意の数の記憶装置、およびＲＡＭディスク、テープ・ドライブ、メモリ装置などの任意のタイプの記憶装置を使用した構成が含まれる。本発明の実施形態には、単一または複数の記憶チャネル、単一または複数ポート記憶装置、および様々なトポロジが含まれる。
【００４９】
代替トポロジには、一次元アレイの相互接続記憶アレイのほかに、Ｎ−Ｎおよびハイパーキューブなど様々な相互接続アーキテクチャを備えた二次元、三次元、またはＮ次元アレイが含まれる。
【００５０】
他のトポロジとして、非接続スイッチを持つ自由「端」がない、閉じたリングの記憶アレイも考えられる。一次元アレイの場合、リングは円を形成する。Ｎ次元アレイの場合、リングはドーナツ形または環状体を形成する。
【００５１】
他のトポロジは、やはり任意の数の次元のスター構成の記憶アレイである。その他のトポロジも、図面を検討すれば明らかになろう。
【００５２】
本発明の実施形態は、ＦＣ−ＡＬ記憶チャネルに加えて、ＡＴＡ、ＳＣＳＩ、ＳＳＡなどの任意のタイプの記憶チャネルを含む。
【００５３】
本発明のハードウェア・スイッチは、様々な形態のものとすることができる。これらのスイッチの自動構成を可能にするために、ある種の実施形態では、スイッチは電子装置を含む。これらのスイッチは、構成のためにユーザの介入を必要とする機械装置とすることも可能である。スイッチのほかに、記憶アレイは、バス、コネクタ、ケーブルなど様々なタイプの相互接続を介して接続することができる。
【００５４】
コントローラおよび記憶装置は、本発明の恩恵を受けるために取り外し可能または交換可能である必要はない。ハードウェア・スイッチは、任意のアクセス・インタフェースから記憶装置への代替アクセス経路を可能にする。また、ハードウェア・スイッチによって、帯域幅を何らかのデータ帯域幅要件に合わせてスケーリングするために記憶チャネルを様々な構成で区分化することができる。
【００５５】
以上、本明細書では例示のために様々な実施形態を開示した。本発明の主旨から逸脱することなく、変更および代用が可能である。したがって、本発明の範囲は、例示した実施形態には限定されず、特許請求の範囲およびその法的同等物によって判断すべきである。
【図面の簡単な説明】
【図１】  （従来の技術）ＳＣＳＩベースのＲＡＩＤ記憶システムのアーキテクチャを示す図である。
【図２】  （従来の技術）ＦＣ−ＡＬベースのＲＡＩＤ記憶システムのアーキテクチャを示す図である。
【図３】  プログラマブル・スイッチによって相互接続された２つの記憶アレイを示す図である。
【図４】  ４本の独立記憶チャネルを有する２つの記憶アレイを示す図である。
【図５】  ２本の共用記憶チャネルを有する２つの記憶アレイを示す図である。
【図６】  ２本の独立記憶チャネルと１本の共用記憶チャネルを有する２つの記憶アレイを示す図である。
【図７】  ２つの記憶アレイのみがコントローラを有する４つの記憶アレイを示す図である。
【図８】  ４本の独立記憶チャネルと２本の共用記憶チャネルを有する４つの記憶アレイを示す図である。
【図９】  スイッチ構成を自動的に設定するソフトウェア・コードのフローチャートである。
【図１０】  ディスク・ドライブとコントローラ・カードとループ・カードを有するディスク・アレイの実施形態を示す図である。
【図１１】  ＬＲＣ回路とハードウェア・レジスタ回路を有するループ・カードの詳細ブロック図である。
【図１２】  ＬＲＣ回路の詳細ブロック図である。
【図１３】  ハードウェア・レジスタ回路の詳細ブロック図である。
【図１】
0004538668.tif 000002
【図２】
0004538668.tif 000003
【図３】
0004538668.tif 000004
【図４】
0004538668.tif 000005
【図５】
0004538668.tif 000006
【図６】
0004538668.tif 000007
【図７】
0004538668.tif 000008
【図８】
0004538668.tif 000009
【図９】
0004538668.tif 000010
【図１０】
0004538668.tif 000011
【図１１】
0004538668.tif 000012
【図１２】
0004538668.tif 000013
【図１３】
0004538668.tif 000014