JP4690202B2 - 高可用性大容量ストレージデバイスシェルフ - Google Patents

高可用性大容量ストレージデバイスシェルフ Download PDF

Info

Publication number
JP4690202B2
JP4690202B2 JP2005518799A JP2005518799A JP4690202B2 JP 4690202 B2 JP4690202 B2 JP 4690202B2 JP 2005518799 A JP2005518799 A JP 2005518799A JP 2005518799 A JP2005518799 A JP 2005518799A JP 4690202 B2 JP4690202 B2 JP 4690202B2
Authority
JP
Japan
Prior art keywords
storage shelf
data
shelf router
port
frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005518799A
Other languages
English (en)
Other versions
JP2006517699A (ja
Inventor
スタインメッツ、ジョセフ・エイチ
コンペッラ、マーシー
ウォークレイ、マシュー・ピー
スコットン、ジェフリー・ダグラス
Original Assignee
エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エミュレックス デザイン アンド マニュファクチュアリング コーポレーション filed Critical エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
Publication of JP2006517699A publication Critical patent/JP2006517699A/ja
Application granted granted Critical
Publication of JP4690202B2 publication Critical patent/JP4690202B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • G06F11/201Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media between storage system components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Description

本発明は、複数の個々の大容量ストレージデバイス(mass storage device)から構成されるディスクアレイおよび他の大容量ストレージデバイスに関し、特に、ストレージ・シェルフ・ルータの集積回路実施形態およびパス・コントローラ・カードに関する。このパス・コントローラ・カードは、1つ以上の他のストレージ・シェルフ・ルータと一緒に使用され、ストレージ・シェルフ・ルータおよびパス・コントローラ・カードが高可用性データストレージシステムの基礎として働くことを可能にする高冗長性アーキテクチャを使用して、高帯域通信メディアとストレージ・シェルフ内の個々の大容量ストレージデバイスとの間でデータをルーティングし、高帯域通信メディアから受け取られたデータストレージコマンドを処理する。
(関連出願への相互参照)
この一部継続出願は、2003年1月13日に出願した現在係属中の特許出願第10/341,835号の利益を主張する。
(背景技術)
ファイバチャネル(Fibre Channel、FC)は、コンピュータおよび周辺装置の複数の異なった組み合わせを相互接続するデータ通信ネットワークのアーキテクチャおよびプロトコルである。FCは、小型コンピュータシステムインタフェース(Small Computer System Interface、SCSI)プロトコルを含む多様な上位レベルプロトコルをサポートする。コンピュータまたは周辺装置は、FCポートおよび銅線または光ファイバを介してネットワークへリンクされる。FCポートはトランシーバおよびインタフェースコントローラを含み、FCポートを含むコンピュータ周辺装置は「ホスト」と呼ばれる。FCポートは、ローカルデータバス、たとえば周辺コンピュータインタフェース(Peripheral Computer Interface、PCI)バスを介してホストとデータを交換する。インタフェースコントローラは、ファイバチャネルとFCポートが存在するコンピュータまたは周辺装置との間で低レベルのプロトコル交換を実行する。
コンピュータネットワークでリモートデータにアクセスする一般的なパラダイムは、クライアント/サーバアーキテクチャである。このアーキテクチャによれば、クライアントコンピュータはサーバコンピュータへデータを読み出すか書き込む要求を送る。サーバコンピュータは、クライアントコンピュータがデータを読み出すか書き込む認可および許可を有するかどうかをチェックし、要求された読み出しまたは書き込み動作を特定の大容量ストレージデバイスへマップし、書き込み動作の場合には、クライアントコンピュータから大容量ストレージデバイスへ、読み出し動作の場合には、大容量ストレージデバイスからクライアントへ、データを転送する仲介者として働くことによって、要求を処理する。
一般に、現在および過去に利用可能であった通信ネットワークアーキテクチャにおいて、サーバコンピュータはローカルエリアネットワーク(Local Aria Network、LAN)を介してクライアントコンピュータと通信し、サーバコンピュータはローカルバス、たとえばSCSIバスを介して複数の大容量ストレージデバイスと通信する。そのようなシステムにおいて、サーバは、読み出しまたは書き込み動作の結果として転送されたデータを記憶および転送するように要求される。なぜなら、サーバは、2つの異なる通信メディアの間のブリッジを表すからである。FCの出現と共に、クライアントコンピュータ、サーバコンピュータ、および大容量ストレージデバイスは、全て単一の通信メディアによって対称的に相互接続されてよい。従来のクライアント/サーバアーキテクチャは、前述したLANおよびSCSIネットワークで使用される同じタイプのクライアント/サーバプロトコルを使用して、FCへ普通にポートされる。
高容量ディスクドライブを含むSCSIバス互換大容量ストレージデバイスは、広い範囲で入手することができ、特に中型および大型コンピュータシステムで広く使用されている。多くのFCベースシステムはFC互換ディスクドライブを使用し、各々のディスクドライブは、FC応答側として機能するために必要な1つ以上のFCポートおよび論理(logic)を含んでいる。パーソナルコンピュータ(PC)を含む小型システムでは、インテグレーテッドドライブエレクトロニクス(Integrated Drive Electronics、IDE)またはアドバンスドテクノロジアタッチメント(Advanced Technology Attachment、ATA)ディスクドライブと呼ばれる異なったファミリーのディスクドライブが広く使用される。シリアルATA(Serial ATA、SATA)ディスクは、一般的に、業界標準アーキテクチャ(Industry Standard Architecture、ISA)バスを介してシステムと相互接続する。
本発明は、FC、SCSI、およびIDE/ATAテクノロジに関連する。各々は、以下で3つの別々のサブセクションで順番に説明される。これらテクノロジのいずれか、または全てに精通する者は、このセクションの、FCベースディスクアレイを説明している最後のサブセクション、およびそのサブセクションの直後の、発明の要約のセクションへ進んでよい。
ファイバチャネル
ファイバチャネル(「FC」)は、下記の表1でリストされる標準文書を含む複数のANSI標準文書で定義および説明されている。

Figure 0004690202
表1でリストされた文書、およびファイバチャネルに関する追加情報は、次のアドレス、即ち、“http://www.t11.org/index.htm”および“http://www.Fibrechannel.com”を有するワールドワイドウェブページで見ることができる。
FCの以下の説明は、本発明の解説を容易にするため、これらの文書に含まれる情報の幾つかを紹介および要約したものである。もし以下の説明で紹介したトピックの詳細な解説が望まれるのであれば、前述した文書が参考となるであろう。
FCは、1つ以上の通信メディアによって相互接続されたFCノード、一般的にはコンピュータ、ワークステーション、周辺装置、および周辺装置のアレイまたは集合の間のデータ通信アーキテクチャおよびプロトコルである。通信メディアは、シールデッドツイステッドペア接続、同軸ケーブル、および光ファイバを含む。FCノードは、少なくとも1つのFCポートおよびFCリンクを介して、通信メディアへ接続される。FCポートはFCホストアダプタまたはFCコントローラであって、これらはFCノードの処理コンポーネントとレジスタおよびメモリインタフェースを共有し、ハードウェアおよびファームウェアにおいて、FCプロトコルの下位レベルを実現する。FCノードは、一般的に、共有メモリ内の共有データ構造およびFCポート内の制御レジスタを使用して、FCポートとデータおよび制御情報を交換する。FCポートは、電線または光ストランドを含むリンクを介して通信メディアへ結合された直列の送信機および受信機コンポーネントを含む。
以下の説明において、「FC」は、一般的なファイバチャネルアーキテクチャおよびプロトコルを指す形容詞として使用され、またファイバチャネル通信メディアの例示物を指す名詞として使用される。したがって、FC(アーキテクチャおよびプロトコル)ポートは、FC(通信メディア)からFC(アーキテクチャおよびプロトコル)シーケンスを受け取ることができる。
FCアーキテクチャおよびプロトコルは、図1A〜図1Cで示される3つの異なったタイプの相互接続トポロジをサポートする。図1Aは、3つの相互接続トポロジの中で最も単純な「ポイントツーポイントトポロジ」と呼ばれるものを示す。図1Aで示されるポイントツーポイントトポロジにおいて、前記第1のノード101は、前記第1のノード101のFCポート104の送信機103を第2のノード102のFCポート106の受信機105へ直接結合し、第2のノード102のFCポート106の送信機107を前記第1のノード101のFCポート104の受信機108へ直接接続することによって、第2のノード102へ直接接続される。ポイントツーポイントトポロジで使用されるポート104および106は、N_ポートと呼ばれる。
図1Bは、「FCアービトレーテッドループトポロジ」と呼ばれる幾分複雑なトポロジを示す。図1Bは、アービトレーテッドループの中で相互接続された4つのノード110〜113を示す。電気または光バイナリデータから構成される信号は、1つのノードからループを円形に回って次のノードへ転送される。1つのノードの送信機、たとえば、ノード111を関連づけられた送信機114は、ループ内の次のノードの受信機、即ち、送信機114の場合には、ノード112を関連づけられた受信機115へ直接接続される。アービトレーテッドループの中でFCノードを相互接続するためには、FCポートの2つのタイプを使用することができる。アービトレーテッドループで使用される最も普通のタイプは、「NL_ポート」と呼ばれる。以下で説明するように、FCファブリックトポロジを有するFCアービトレーテッドループを相互接続するためには、「FL_ポート」と呼ばれる特殊タイプのポートを使用することができる。ただ1つのFL_ポートが、アービトレーテッドループトポロジへアクティブに組み込まれてよい。FCアービトレーテッドループトポロジは、127個までのアクティブなFCポートを含み、追加の非関与FCポートを含むことができる。
FCアービトレーテッドループトポロジにおいて、複数のノードは、アービトレーテッドループの制御を得るため競争または調停する。複数のノードが制御を得るため競争している場合、一般的に、最低ポートアドレスを有するノードが制御を取得する。全てのノードが最終的に合理的な時間量の制御を受け取ることを保証するため、公平性アルゴリズムがノードによって実現されてよい。ノードがループの制御を取得したとき、ノードはアービトレーテッドループ内の他のノードへのチャネルを開くことができる。半二重チャネルにおいて、1つのノードはデータを送信し、他のノードはデータを受け取る。全二重チャネルにおいて、データが第2のノードによって送信され、前記第1のノードによって受信される同じ時間に、データが前記第1のノードによって送信され、第2のノードによって受信されてよい。たとえば、図1Bのアービトレーテッドループにおいて、もしノード111がノード113との全二重チャネルを開くならば、そのチャネルを介してノード111からノード113へ送信されるデータはノード112のNL_ポート116を通過し、ノード113によってノード111へ送信されるデータはノード110のNL_ポート117を通過する。
図1Cは、「FCファブリック」と呼ばれる最も一般的で最も複雑なFCトポロジを示す。FCファブリックは、図1Cにおいて、4つのFCノード119〜122が接続された不均整形状中央客体118によって表される。FCノード119〜122のN_ポート123〜126は、ファブリック118の中のF_ポート127〜130へ接続される。ファブリックは、機能が電話システムと類似した切り換えまたはクロスポイントスイッチトポロジである。データは、ファブリックによって、「ファブリック要素」と呼ばれるスイッチまたは交換機を介してF_ポートの間をルーティングされる。ファブリックの中の1つのF_ポートと他のF_ポートとの間に、多くの可能なルートが存在してよい。F_ポートを関連づけられたファブリックの中で、データのルーティングおよびノードのアドレシングは、FCノードまたはN_ポートではなくFCファブリックによって処理される。
FCはシリアル通信メディアである。データは非常に高い転送レートで一時に1ビットが転送される。図2は、FCネットワークを通る転送について、時間的にデータが組織される非常に簡単な階層を示す。最低の概念レベルにおいて、データはデータビットのストリーム200として考えられる。FCネットワークによってサポートされるデータの最小単位、またはデータビットグループは、FCポートによって8ビット文字としてデコードされる10ビット文字である。FCプリミティブは、10ビットの文字またはバイトから構成される。或るFCプリミティブは、FCポート間で交換される制御情報を搬送するように使用される。データ組織の次のレベル、即ち、FCプロトコルに関する基本レベルはフレームである。7つのフレーム202〜208が図2で示される。フレームは、デリミタ、ヘッダおよび任意的ヘッダ、並びに0〜2048個のデータバイトを含む36〜2,148個のバイトで構成される。たとえば、前記第1のFCフレームは、データビットストリーム200の、水平括弧201によって包含されるデータビットに対応する。FCプロトコルは、シーケンスと呼ばれる次に高い組織レベルを仕様に定める。前記第1のシーケンス210および第2のシーケンス212の一部分が図2で示される。前記第1のシーケンス210は、フレーム1〜4 202〜205から構成される。第2のシーケンス212は、フレーム5〜7 206〜208および図示されない追加フレームから構成される。FCプロトコルは、交換と呼ばれる第3の組織レベルを仕様に定める。交換214の一部分が図2で示される。この交換214は、少なくとも図2で示される前記第1のシーケンス210および第2のシーケンス212から構成される。代替的に、この交換は、フレーム1〜7 202〜208、および第2のシーケンス212並びに交換214を構成する追加シーケンスに含まれる追加フレームから構成されると見ることができる。
FCは全二重データ伝送メディアである。フレームおよびシーケンスは、発信側またはイニシエータと応答側またはターゲットとの間で、双方向へ同時に渡される。交換は、単一のI/Oトランザクション、たとえば、読み出しトランザクションまたは書き込みトランザクションの間に、発信側と応答側との間で交換される全てのシーケンス、およびシーケンス内のフレームを含む。FCプロトコルは、任意数の高レベルデータ交換プロトコルに従ってデータを転送するように設計される。これらのプロトコルには、インターネットプロトコル(「IP」)、スモールコンピュータシステムスインタフェース(「SCSI」)プロトコル、高パフォーマンスパラレルインタフェース(「HIPPI」)、およびインテリジェントペリフェラルインタフェース(「IPI」)が含まれる。SCSIパスアーキテクチャは次のサブセクションで説明され、このサブセクションおよび残りのサブセクションの後続の説明の多くは、FCプロトコルに埋め込まれたSCSIプロトコルに焦点を当てている。ファイバチャネルへのSCSIプロトコルの標準適合化は、今後、この文書の中では「FCP」と呼ばれる。したがって、FCは、SCSIバスおよび他の周辺相互接続バスの特徴であるマスタスレイブ型通信パラダイム、および、たとえばインターネットを実現するために使用されるような比較的に開放および非構造化された通信プロトコルをサポートすることができる。イニシエータおよびターゲットのSCSIバスアーキテクチャコンセプトはFCPへ継承され、前述したようにSCSIコマンドおよびデータ交換をカプセル化して、FCを介してトランスポートするように設計されている。
図3は、標準FCフレームの内容を示す。FCフレーム302は、5つの高レベルセクション304、306、308、310、および312を含む。フレーム開始デリミタ304と呼ばれる前記第1の高レベルセクションは、フレームの始まりをマークする4つのバイトを含む。フレームヘッダ306と呼ばれる次の高レベルセクションは、アドレス情報、シーケンス情報、交換情報、および様々な制御フラグを含む24バイトから成る。フレームヘッダ314の更に詳細な図が、図3のFCフレーム302から拡張されて示される。行先識別子(Destination Identifier、「D_ID」)または行先ID 316は、フレームの行先FCポートを示す24ビットFCアドレスである。送信元識別子(「S_ID」)または送信元_ID 318は、フレームを送信したFCポートを示す24ビットアドレスである。発信側IDまたはOX_ID 320および応答側ID 322またはRX_IDは、一緒になって32ビットの交換IDを構成する。交換IDは、発信側またはイニシエータおよび応答側またはターゲットのFCポートに関して、フレームが所属する交換を識別する。シーケンスIDまたはSEQ_ID 324は、フレームが所属するシーケンスを識別する。
データペイロードと呼ばれる次の高レベルセクション308は、FCフレームの中にパッケージされた実際のデータを含む。データペイロードは、より高いレベルのプロトコル、たとえばIPおよびSCSIに従って転送されるデータおよびカプセル化プロトコル情報を含む。図3は、SCSIプロトコルに従ったデータ転送に使用されるデータペイロードレイアウト326〜329の4つの基本タイプを示す。これらのフォーマットのFCP_CMNDと呼ばれる最初のフォーマット326は、イニシエータからターゲットへSCSIコマンドを送るために使用される。FCP_LUNフィールド330は8バイトアドレスを含み、このアドレスは、或る実施形態では、特定のSCSIバスアダプタ、そのSCSIバスアダプタを関連づけられたターゲットデバイス、および指定されたターゲットSCSIデバイスを関連づけられたロジカルデバイスに対応する論理装置番号(「LUN」)を指定する。これらは一緒になってFCP_CMNDのターゲットを表す。他の実施形態では、FCP_LUNフィールド330はインデックスまたは参照番号を含み、この参照番号は、SCSIバスアダプタ、そのSCSIバスアダプタを関連づけられたターゲットデバイス、および指定されたターゲットSCSIデバイスを関連づけられたロジカルデバイスに対応するLUNを決定するため、ターゲットFCホストアダプタによって使用される。実際のSCSIコマンド、たとえば、SCSI読み出しまたは書き込みI/Oコマンドは、16バイトフィールドのFCP_CDB332の中に含まれる。
図3で示されるデータペイロードフォーマットの第2のタイプ327は、FCP_XFER_RDYレイアウトと呼ばれる。このデータペイロードフォーマットは、ターゲットによるデータ受信または送信の開始が準備されたことをターゲットからイニシエータへ表示するために使用される。図3で示されるデータペイロードフォーマットの第3のタイプ328は、FCP_DATAフォーマットである。FCP_DATAフォーマットは、SCSI I/Oトランザクションの実行の結果として、SCSIデータストレージデバイスから読み出されるか書き込まれる実際のデータを転送するために使用される。図3で示される最後のデータペイロードフォーマット329は、FCP_RSPレイアウトとよばれる。このレイアウトは、I/Oトランザクションが完了したとき、ターゲットからイニシエータへSCSIステータスバイト334および他のFCPステータス情報を戻すために使用される。
SCSIバスアーキテクチャ
コンピュータバスは一組の電気信号線であって、これらの線を介して、コンピュータコマンドおよびデータが、コンピュータシステムの処理、記憶、および入力/出力(「I/O」)コンポーネントの間を伝送される。SCSI I/Oバスは、最も普及および一般的なコンピュータバスであって、大容量ストレージデバイス、たとえばハードディスクおよびCD−ROMドライブを、コンピュータシステムのメモリおよび処理コンポーネントへ相互接続する。SCSIバスアーキテクチャは、3つの大きな標準で定義される。即ち、SCSI−1、SCSI−2、およびSCSI−3である。SCSI−1およびSCSI−2標準は、それぞれ米国国家規格協会(American National Standard Institute、ANSI)標準文書「X3.131−1986」および「X3.131−1994」で公開されている。SCSI−3標準は、現在ANSI委員会によって開発されている。SCSIバスアーキテクチャの概要は、非特許文献1によって提供される。
図4は、SCSIバスを含む通常のパーソナルコンピュータ(「PC」)アーキテクチャのブロック図である。PC400は、高速CPUバス406によってシステムコントローラ404へリンクされた中央処理装置またはプロセッサ(「CPU」)402を含む。システムコントローラは、メモリバス410を介してシステムメモリコンポーネント408へリンクされる。システムコントローラ404は、更に、ペリフェラルコンポーネントインターコネクト(「PCI」)バス412を介して様々な周辺装置へリンクされる。バス412は、低速企業標準アーキテクチャ(「ISA」)バス414およびSCSIバス416に相互接続される。PCIバスのアーキテクチャは、非特許文献2で説明されている。相互接続されたCPUバス406、メモリバス410、PCIバス412、およびISAバス414によって、CPUは、コンピュータシステムに含まれる様々な処理およびメモリコンポーネント並びにI/Oデバイスと、データおよびコマンドを交換することができる。一般的に、超高速および高帯域I/Oデバイス、たとえば、ビデオディスプレイデバイス418は、PCIバスへ直接接続される。低速I/Oデバイス420、たとえばキーボード420およびポインティングデバイス(図示されず)は、ISAバス414へ直接接続される。ISAバスは、バスブリッジコンポーネント422を介してPCIバスと相互接続される。大容量ストレージデバイス、たとえば、ハードディスク、フロッピーディスクドライブ、CD−ROMドライブ、およびテープドライブ424〜426は、SCSIバス416へ接続される。SCSIバスは、SCSIバスアダプタ430を介してPCIバス412と相互接続される。SCSIバスアダプタ430は、プロセッサコンポーネント、たとえば、53C8xx SCSIプロセッサのSymbiosファミリーから選択されたプロセッサを含み、標準PCIバスプロトコルを使用してPCIバス412へインタフェースする。SCSIバスアダプタ430は、以下で部分的に説明するSCSIバスプロトコルを使用してSCSIバス416へインタフェースする。SCSIバスアダプタ430は、SCSIバスへ接続されて一般的に各々の大容量ストレージデバイス424〜426に埋め込まれているSCSIコントローラ(図示されず)またはSCSIデバイスと、コマンドおよびデータを交換する。SCSIコントローラはハードウェア/ファームウェアコンポーネントである。このコンポーネントは、SCSIバスを介してSCSIアダプタから受け取られたSCSIコマンドを解釈して応答し、ロジカルデバイスとインタフェースしてそれを制御することによってSCSIコマンドを実現する。ロジカルデバイスは、1つ以上のフィジカルデバイスに対応するか、1つ以上のフィジカルデバイスの一部分に対応する。フィジカルデバイスは、データストレージデバイス、たとえば、ディスク、テープ、およびCD−ROMドライブを含む。
I/Oコマンドと呼ばれるコマンドの2つの重要なタイプは、ロジカルデバイスからデータを読み出し、ロジカルデバイスへデータを書き込むようにSCSIデバイスへ命令する。I/Oトランザクションは、コンピュータシステムの2つのコンポーネントの間のデータの交換であり、一般的に処理コンポーネント、たとえば、CPU402によってイニシエートされる。データの交換は、部分的に、読み出しI/Oコマンドまたは書き込みI/Oコマンドによって実現される。したがって、I/Oトランザクションは、読み出しI/Oトランザクションおよび書き込みI/Oトランザクションを含む。
SCSIバス416は、複数のデータビットを同時にトランスポートすることができるパラレルバスである。SCSIバスによって同時にトランスポートされることのできるデータビットの数は、バス幅と呼ばれる。異なったタイプのSCSIバスは、8、16、および32ビットの幅を有する。16および32ビットSCSIバスは、ワイドSCSIバスと呼ばれる。
全てのコンピュータバスおよびプロセッサと同じように、SCSIバスは、動作およびバス上のデータ転送の速度を決定するクロックによって制御される。SCSIバスは多様なクロック速度を有する。SCSIバスの幅と、SCSIバスが動作するクロック速度との組み合わせは、SCSIバスを介してトランスポートすることのできる1秒当たりのバイトの数、またはSCSIバスの帯域を決定する。SCSIバスの異なったタイプは、1秒当たり2メガバイト(「Mバイト」)よりも小さいものから1秒当たり40Mバイトまでの帯域を有し、将来、1秒当たり80Mバイトおよび可能性として1秒当たり160Mバイトへの増加が計画されている。帯域が増加すれば、それに伴ってSCSIバスの物理的長さの制限が増加して得る。
図5はSCSIバスのトポロジを示す。コンピュータシステム502または他のハードウェアシステムは、1つ以上のSCSIバスアダプタ504および506を含むことができる。SCSIバスアダプタ、SCSIバスアダプタが制御するSCSIバス、およびSCSIバスへ取り付けられた周辺装置は、一緒になってドメインを構成する。図5のSCSIバスアダプタ504は第1のドメイン508を関連づけられ、SCSIバスアダプタ506は第2のドメイン510を関連づけられる。最新のSCSI−2バス実施形態では、15の異なったSCSIデバイス513〜515および516〜517を、単一のSCSIバスへ取り付けることができる。図5において、SCSIデバイス513〜515は、SCSIバスアダプタ506によって制御されるSCSIバス518へ取り付けられ、SCSIデバイス516〜517は、SCSIバスアダプタ504によって制御されるSCSIバス520へ取り付けられる。各々のSCSIバスアダプタおよびSCSIデバイスは、SCSI識別番号またはSCSI_IDを有する。SCSI_IDは、特定のSCSIバス内のデバイスまたはアダプタを一意に識別する。慣例によって、SCSIバスアダプタはSCSI_ID 7を有し、SCSIバスへ取り付けられたSCSIデバイスは、0〜6および8〜15のSCSI_IDを有する。SCSIデバイス、たとえばSCSIデバイス513は、複数のロジカルデバイスとインタフェースすることができ、各々のロジカルデバイスは1つ以上のフィジカルデバイスの一部分を含む。各々のロジカルデバイスは論理装置番号(「LUN」)によって識別され、論理装置番号は、ロジカルデバイスを制御するSCSIデバイスに関してロジカルデバイスを一意に識別する。たとえば、SCSIデバイス513は、それぞれLUN0、1、2を有するロジカルデバイス522〜524を制御する。SCSI用語に従えば、SCSIバス上でI/Oコマンドをイニシエートするデバイスはイニシエータと呼ばれ、I/O動作を実行するようにSCSIデバイスへ命令するI/OコマンドをSCSIバス上で受け取るSCSIデバイスはターゲットと呼ばれる。
一般的に、SCSIバスアダプタ、たとえばSCSIバスアダプタ504および506は、ターゲットデバイスへコマンドを送ることによってI/O動作をイニシエートする。ターゲットデバイス513〜515および516〜517は、SCSIバスからI/Oコマンドを受け取る。次に、ターゲットデバイス513〜515および516〜517は、それらが制御する1つ以上のロジカルデバイスとインタフェースして、ロジカルデバイスからデータを読み出し、SCSIバスを介してデータをイニシエータへ戻すか、SCSIバスを介してイニシエータから受け取られたデータをロジカルデバイスへ書き込むことによって、コマンドを実現する。最後に、ターゲットデバイス513〜515および516〜517は、コマンドの実現の成功または失敗を示すステータスメッセージによって、SCSIバスを介してイニシエータに応答する。
図6A〜図6Cは、読み出しおよび書き込みI/O動作のイニシエーションおよび実現に関係するSCSIプロトコルを示す。読み出しおよび書き込みI/O動作は、SCSIデバイスによって実行されるI/O動作の大部分を構成する。SCSIバスによって相互接続された大容量ストレージデバイスシステムの動作の効率を最大にする努力は、最も普通には、読み出しおよび書き込みI/O動作が実行される効率を最大にすることに向けられる。したがって、以下の説明では、読み出しおよび書き込み動作に関連させて様々なハードウェアデバイスのアーキテクチャの特徴を説明する。
図6Aは、SCSIイニシエータ、最も普通にはSCSIバスアダプタによって、SCSIターゲット、最も普通には1つ以上のロジカルデバイスを関連づけられたSCSIデバイスに埋め込まれたSCSIコントローラへ、読み出しまたは書き込みI/Oコマンドを送信することを示す。読み出しまたは書き込みI/Oコマンドの送信は、SCSI I/O動作のコマンド段階と呼ばれる。図6Aは、中央垂直線606によってイニシエータ602およびターゲット604へ分割される。イニシエータセクションおよびターゲットセクションの双方は、SCSIバスの状態を記述する「状態」606および608と名付けられた欄、並びにイニシエータおよびターゲットを関連づけられたSCSIバスイベントを記述する「イベント」610および612と名付けられた欄を含む。I/Oコマンドの送信に関連したバス状態およびバスイベントは、図6Aの上部から図6Aの下部へ降下して時間順に配列される。図6B〜図6Cも、このフォーマットを守っている。
図6Aで示されるように、イニシエータのSCSIバスアダプタからターゲットのSCSIデバイスへI/Oコマンドを送信することによって、ターゲットのSCSIデバイスによる読み出しまたは書き込みI/O動作がイニシエートされる。図4を参照すると、SCSIバスアダプタ430は、I/Oトランザクションの一部分としてI/O動作をイニシエートする。一般的に、SCSIバスアダプタ430は、読み出し動作または書き込み動作の実行をSCSIバスアダプタへ命令するCPU402から、PCIバス412、システムコントローラ404、およびCPUバス406を介して、読み出しまたは書き込みコマンドを受け取る。読み出し動作において、CPU402は、大容量ストレージデバイス424〜426からデータを読み出して、そのデータを、SCSIバス416、PCIバス412、システムコントローラ404、およびメモリバス410を介してシステムメモリ408内のロケーションへ転送するように、SCSIバスアダプタ430に命令する。書き込み動作において、CPU402は、メモリバス410、システムコントローラ404、およびPCIバス412を介してSCSIバスアダプタ430へデータを転送するようにシステムコントローラ404へ命令し、またデータが書き込まれる大容量ストレージデバイス424〜426へSCSIバス416を介してデータを送るようにSCSIバスアダプタ430へ命令する。
図6Aはバス解放状態614のSCSIバスからスタートする。バス解放状態614は、SCSIデバイス上で現在トランスポートされているコマンドまたはデータが存在しないことを示す。イニシエータまたはSCSIバスアダプタは、バスを調停状態616へ入れるためSCSIバスのBSY、D7、およびSEL信号線をアサートする。この状態において、イニシエータは、全てのデバイスへSCSIバス上でコマンドを伝送する意図を告知する。一時点では1つのデバイスだけがSCSIバスの動作を制御するので、調停が必要である。イニシエータがSCSIバスの制御を獲得したと仮定して、次にイニシエータは、SCSIバスを選択状態618へ入れるため、ターゲットSCSI_IDに対応するATN信号線およびDX信号線をアサートする。イニシエータまたはターゲットは、SCSIバス状態変化、たとえば前述した調停状態616から選択状態618への状態変化を起こすため、特定の順序で様々なSCSI信号線をアサートおよびドロップする。これらの順序は、非特許文献1およびANSI標準で見出され、したがって以下では詳細に説明しない。
ターゲットがイニシエータによって選択されたことをターゲットがセンスしたとき、ターゲットは、I/O動作のコマンド段階を完了するためSCSIバスの制御620を取る。次に、ターゲットは、メッセージアウト状態622へ入るためSCSI信号線を制御する。メッセージアウト状態で起こる最初のイベントで、ターゲットはイニシエータから識別メッセージ623を受け取る。識別メッセージ623はLUNフィールド624を含む。LUNフィールド624は、後続のコマンドメッセージがアドレスされるLUNを識別する。識別メッセージ623は、更に、フラグ625を含む。フラグ625は、一般的に、識別メッセージ623は、更に、フラグ625を含む。フラグ625は、一般的に、後続するI/Oコマンドのターゲットによる実現の間、ターゲットがSCSIバスからの切り離しを許可されることをターゲットに示すようにセットされる。次に、ターゲットはキュータグメッセージ626を受け取る。キュータグメッセージ626は、後続するI/Oコマンドがどのようにキューにされるかをターゲットに示すと共に、キュータグ627をターゲットに提供する。キュータグはI/Oコマンドを識別するバイトである。したがって、SCSIバスアダプタは、LUN当たり256個の異なったI/Oコマンドを同時に管理することができる。イニシエータSCSIバスアダプタのSCSI_ID、ターゲットSCSIデバイスのSCSI_ID、ターゲットLUN、およびキュータグは、一緒になってI_T_L_Q連結参照番号を構成し、この参照番号は、SCSIバス内で後続するI/Oコマンドに対応するI/O動作を一意に識別する。次に、ターゲットデバイスは、コマンド状態628へ入るためSCSIバス信号線を制御する。コマンド状態において、ターゲットは、イニシエータからI/Oコマンド630を要請および受信する。I/Oコマンド630は操作符号632を含む。操作符号632は、実行されるべき特定のコマンド、即ち、この場合には読み出しコマンドまたは書き込みコマンド、コマンドによって指定された読み出しまたは書き込み動作の開始点であるロジカルデバイスの論理ブロックを識別する論理ブロック番号636、およびコマンドの実行中に読み出されるか書き込まれるブロックの数を指定するデータ長638を含む。
ターゲットがI/Oコマンドを受信および処理したとき、ターゲットデバイスはメッセージイン状態640に入るためSCSIバス信号線を制御する。メッセージイン状態640において、ターゲットデバイスは、一般的に、イニシエータデバイスへ切り離しメッセージ642を送る。一般的に、ターゲットは、コマンドによって指定された読み出しまたは書き込み動作についてロジカルデバイスを準備するためロジカルデバイスとの対話を開始するので、SCSIバスを切り離す。ターゲットはデータを受け取るためバッファを準備する必要がある可能性があり、またディスクドライブまたはCD−ROMドライブの場合、ターゲットデバイスは、読み出しまたは書き込みコマンドの開始点として指定された適切なブロックの探索をロジカルデバイスに命令してもよい。切り離しによって、ターゲットデバイスは、SCSIバスアダプタとターゲットデバイスとの間で追加のメッセージ、コマンド、またはデータをトランスポートするためSCSIバスを解放する。このようにして、SCSIバス上で複数の異なったI/O動作を同時に多重化することができる。最後に、ターゲットデバイスは、SCSIバスをバス解放状態644へ戻すためBSY信号線をドロップする。
次に、ターゲットデバイスは、読み出しまたは書き込み動作についてロジカルデバイスを準備する。ロジカルデバイスがデータの読み出しまたは書き込みを準備したとき、I/O動作のデータ段階が続く。図6Bは、SCSI I/O動作のデータ段階を示す。SCSIバスは、最初、バス解放状態646にある。読み出しI/Oコマンドに応答してデータを戻すか、書き込みI/Oコマンドに応答してデータを受け入れるかを、現在、準備したターゲットデバイスは、調停状態648に入るためSCSIバス信号線を制御する。ターゲットデバイスがSCSIバスの制御の調停に成功したと仮定すると、ターゲットデバイスは、再選択状態650に入るため、SCSIバス信号線を制御する。再選択状態は、図6Aで前に説明した選択状態と類似しているが、再選択状態で通信するSCSIバスアダプタを選択しているのがターゲットデバイスであり、選択状態でターゲットデバイスを選択するSCSIバスアダプタではないことが異なる。
一度、ターゲットデバイスがSCSIバスアダプタを選択すると、ターゲットデバイスは、SCSIバスをメッセージイン状態652へ入れるため、SCSIバス信号線を操作する。メッセージイン状態において、ターゲットデバイスは、SCSIバスアダプタへ識別メッセージ654およびキュータグメッセージ656の双方を送る。これらのメッセージは、図6Aで示されるように、I/Oコマンドがイニシエータからターゲットへ伝送される間、イニシエータによってターゲットデバイスへ送られた識別メッセージおよびキュータグメッセージと同じである。イニシエータはI_T_L_Q連結参照番号、即ち、イニシエータおよびターゲットデバイスのSCSI_ID、ターゲットLUN、およびキュータグメッセージに含まれるキュータグの組み合わせを使用してI/Oトランザクションを識別する。このI/Oトランザクションについて、読み出し動作の場合には、続いてデータがターゲットからイニシエータへ送られ、書き込み動作の場合は、続いてデータがイニシエータによって伝送される。したがって、I_T_L_Q連結参照番号は、未処理のI/OコマンドテーブルへのインデックスとしてSCSIバスアダプタによって使用されるI/O動作ハンドルであり、SCSIバスアダプタは前記ハンドルを使用して、読み出しの場合にはターゲットデバイスからデータを受け取り、書き込みの場合にはターゲットデバイスへデータを送信する適切なバッファを位置決めする。
識別メッセージおよびキュータグメッセージを送った後、ターゲットデバイスは、データ状態658へ遷移するためSCSI信号線を制御する。読み出しI/O動作の場合、SCSIバスは、データイン状態へ遷移する。書き込みI/O動作の場合、SCSIバスは、データアウト状態へ遷移する。SCSIバスがデータ状態にある間、ターゲットデバイスは、各々のSCSIバスクロックサイクルの間、データ単位を送信する。このデータ単位は、データが送信されている特定のSCSIバスの幅に等しいビット数のサイズを有する。一般的に、各々のデータ単位の転送の一部分として、信号線ACKおよびREQを含むSCSIバス信号線ハンドシェーキングが存在する。たとえば、読み出しI/Oコマンドの場合、ターゲットデバイスは、SCSIバス上に次のデータ単位を置き、REQ信号線をアサートする。イニシエータは、REQ信号線のアサートをセンスし、SCSIバスからの送信データを検索し、データの受信に応答するためACK信号をアサートする。このタイプのデータ転送は非同期転送と呼ばれる。SCSIバスプロトコルによって、更に、ターゲットデバイスは、イニシエータから最初の肯定応答を受け取る前に、或る数のデータ単位を転送することができる。同期転送と呼ばれるこの転送モードでは、最初のデータ単位の送信とその送信の肯定応答の受信との間の待ち時間が回避される。データ送信の間、ターゲットデバイスは、切り離しメッセージによって後続されるポインタ保存メッセージをイニシエータへ送り、次にSCSIバス信号線を制御してバス解放状態へ入ることによって、データ送信を中断することができる。これによって、ターゲットデバイスは、更なるデータを受信または送信する前に、ターゲットデバイスが制御するロジカルデバイスと対話するため休止することができる。SCSIバスを切り離した後、ターゲットデバイスは、後で再びSCSIバスの制御を調停し、追加の識別メッセージおよびキュータグメッセージをイニシエータへ送り、したがってイニシエータは、中断された点でのデータ受信または送信を再開することができる。切り離しおよび再接続の例660は、データ状態658を中断する図6Bで示される。最後に、I/O動作の全てのデータが送信されたとき、ターゲットデバイスは、メッセージイン状態662へ入るためSCSI信号線を制御する。メッセージイン状態662において、ターゲットデバイスは、任意的にポインタ保存メッセージによって先行された切り離しメッセージをイニシエータへ送る。切り離しメッセージを送った後、ターゲットデバイスはBSY信号線をドロップし、したがってSCSIバストランザクションはバス解放状態664へ遷移する。
図6Bで示されるように、I/O動作のデータ送信に続いて、ターゲットデバイスは、I/O動作のステータス段階の間に、イニシエータへステータスを戻す。図6CはI/O動作のステータス段階を示す。図6Aおよび図6Bと同じように、SCSIバスは、図6Cで示されるように、バス解放状態666から調停状態668、再選択状態670、およびメッセージイン状態672へ遷移する。メッセージイン状態672の間に、ターゲットから識別メッセージ674およびキュータグメッセージ676を送信した後、ターゲットデバイスは、ステータス状態678へ入るためSCSIバス信号線を制御する。ステータス状態678において、ターゲットデバイスは、I/Oコマンドが成功裏に完了したかどうかを示すため、単一のステータスバイト684をイニシエータへ送る。図6Cにおいて、ステータスコード0で示される成功完了に対応するステータスバイト680が、ターゲットデバイスからイニシエータへ送られるように示される。ステータスバイトの送信に続いて、ターゲットデバイスは、メッセージイン状態682に入るためSCSIバス信号線を制御する。メッセージイン状態682において、ターゲットデバイスはイニシエータへコマンド完了メッセージ684を送る。この時点で、I/O動作は完了する。次に、ターゲットデバイスはBSY信号線をドロップし、SCSIバスはバス解放状態686へ戻る。ここでSCSIバスアダプタは、I/Oコマンド部分を終了し、I/Oコマンドを実行するために割り振られた内部リソースを解放し、PCIバスを介してCPUへ完了メッセージまたはステータスを戻すことができる。
FCPへのSCSIプロトコルのマッピング
図7Aおよび図7Bは、イニシエータとターゲットとの間で交換されるFCPシーケンスおよび図6A〜図6Cで説明されたSCSIバス段階および状態のマッピングを示す。図7Aおよび図7Bにおいて、ターゲットSCSIアダプタは、FCPホストアダプタと一緒にパッケージされるものと仮定され、したがってターゲットSCSIアダプタは、FCを介してイニシエータと通信し、SCSIバスを介してターゲットSCSIデバイスと通信することができる。図7Aは、読み出しI/Oトランザクションについて、FCPシーケンスとSCSI段階および状態との間のマッピングを示す。トランザクションは、FCを介してターゲットSCSIアダプタへ、FCP_CMND702のデータペイロードを含む単一フレームFCPシーケンスを送るときにイニシエートされる。ターゲットSCSIバスアダプタがFCP_CMNDフレームを受け取るとき、ターゲットSCSIバスアダプタは、図7Aで示されるような調停、選択、メッセージアウト、コマンド、およびメッセージインを含むコマンド段階704のSCSI状態を進行する。コマンド段階が完了したとき、図6Aで示されるように、I/OトランザクションのターゲットであるSCSIデバイスは、SCSIバスを解放するためSCSIバスを切り離し、その間にターゲットSCSIデバイスはトランザクションの実行を準備する。後に、ターゲットSCSIデバイスはSCSIバスの制御を再調停し、I/Oトランザクションのデータ段階706を開始する。この時点で、SCSIバスアダプタは、データ送信が現在進行できることを示すため、FCP_XFER_RDY単一フレームシーケンス708を送る。読み出しI/Oトランザクションの場合、FCP_XFER_RDY単一フレームシーケンスは任意的である。データ段階が継続するにつれて、ターゲットSCSIデバイスは、ロジカルデバイスからデータの読み出しを開始し、SCSIバスを介してそのデータをターゲットSCSIバスアダプタへ送信する。次に、ターゲットSCSIバスアダプタは、ターゲットSCSIデバイスから受け取られたデータを、I/O読み出しトランザクションに対応する交換の第3のシーケンスから構成される或る数のFCP_DATAフレームへパッケージし、FCを介してそれらのFCP_DATAフレームをイニシエータへ戻す。全てのデータが送信され、ターゲットSCSIデバイスがSCSIバスの制御を放棄したとき、ターゲットSCSIデバイスは、I/Oトランザクションのステータス段階714をイニシエートするためSCSIバスの制御を再び調停する。この段階において、SCSIバストランザクションは、ターゲットSCSIデバイスからターゲットSCSIバスアダプタへSCSIステータスバイトを送るため、図7Aで示されるように、バス解放状態から調停、再選択、メッセージイン、ステータス、メッセージイン、およびバス解放状態へ遷移する。ステータスバイトを受け取ると、ターゲットSCSIバスアダプタは、FCP_RSP単一フレームシーケンス716へステータスバイトをパッケージし、FCを介してイニシエータへFCP_RSP単一フレームシーケンスを送信する。これは、読み出しI/Oトランザクションを完了する。
多くのコンピュータシステムにおいて、ターゲットFCホストアダプタとターゲットSCSIバスアダプタとの間に、追加の内部コンピュータバス、たとえばPCIバスが存在してもよい。言い換えれば、FCホストアダプタおよびSCSIアダプタは、単一のターゲットコンポーネントの中に一緒にパッケージされない可能性がある。単純性を考慮して、その追加的相互接続は図7A〜図7Bに示されていない。
図7Bは、図7Aと同じ様式で、FCP_CMNDフレーム718によって示される書き込みI/Oトランザクションの間の、FCPシーケンスとSCSIバス段階および状態との間のマッピングを示す。図7Bと図7Aとの唯一の相違点は、書き込みトランザクションの間、FCP_DATAフレーム722〜725がFCを介してイニシエータからターゲットへ送信され、ターゲットからイニシエータ720へ送られるFCP_XFER_RDY単一フレームシーケンス720が、読み出しI/Oトランザクションのように任意的ではなく、必須であることである。図7Aと同じように、書き込みI/Oトランザクションは、ターゲットがFCP_RSP単一フレームシーケンス726をイニシエータへ返すときを含む。
IDE/ATAディスクドライブ
IDE/ATAドライブは、ディスク論理コントローラおよびハードディスクを単一のモジュールへ一緒に統合するために開発された。IDE/ATAドライブは、特に、ISAバスを介してPCシステムへ容易に統合できるように設計されている。元来、IDE/ATAドライブは、並列16ビット相互接続を有するように設計されており、システムクロックまたはバスクロックによって制御される離散的時間間隔で、IDE/ATAドライブとシステムとの間で2バイトデータを交換できるようにしている。残念ながら、並列バス相互接続は、100〜133MB/秒の現在のデータレートではパフォーマンスの限界に達しており、40または80ピンリボンケーブル接続は、もはや現代のコンピュータシステムにおける内部コンポーネントのクランプ型高密度パッケージングと互換的でない。これらの理由のため、SATA(「SATA」)標準が開発され、80ピンリボンケーブル接続が4導体シリアルケーブルと置換されたSATAディスクドライブが現在生産されている。SATAディスクの初期データレートは150MB/秒であり、まもなく300MB/秒および600MB/秒へ増加することが予想される。データを直列化して、ATAシリアルディスクドライブと周辺コンポーネント相互接続(「PCI」)ベースコントローラとの間で転送するため、標準8B/10Bエンコーディングが使用される。究極的には、様々なI/Oコントローラを統合し、周辺装置およびバスへインタフェースを提供し、1つ以上のCPUおよびメモリをリンクする第2のブリッジとの間でデータを転送するサウスブリッジコントローラが設計されてSATAテクノロジを完全に組み込み、SATAデバイスの直接相互接続を提供してもよい。
ATAインタフェース、特にATA−5およびATA−6標準インタフェースは多様なコマンドをサポートし、これらのコマンドによって、外部プロセッサまたは論理コントローラは、基本データ転送コマンド、探索、キャッシュ管理、および他の管理および診断関連タスクを実行するようにATAディスクドライブ内の論理コントローラへ命令することができる。下記の表2は、プロトコル番号、たとえばプロトコル「1」を、一般タイプのATAコマンドを関連づけている。コマンドのタイプは、プログラムされる入力/出力(「PIO」)、非データコマンド、およびダイレクトメモリアクセス(「DMA」)コマンドを含む。

Figure 0004690202
下記で示される表3は、上記の表2で定義されるように、或る数のATAコマンド、およびコマンドが所属するコマンドタイプを示す対応プロトコルをリストしている。

Figure 0004690202
パワーモードチェックによって、ホストはATAデバイスの現在のパワーモードを決定することができる。マイクロコードダウンロードコマンドによって、ホストはATAデバイスのマイクロコードを変更することができる。実行デバイス診断コマンドによって、ホストはATAデバイスによって実現される診断テストを呼び出すことができる。キャッシュフラッシュコマンドによって、ホストは、ATAデバイスがその書き込みキャッシュをフラッシュすることを要求することができる。このコマンドの2つのバージョンが表に含まれ、拡張バージョンは、ATA−6標準インタフェースをサポートするデバイスで利用可能な48ビットアドレシング特徴を表す。表3で示されるコマンドの追加の拡張バージョンは、以下で別々に説明されない。デバイス識別コマンドによって、ホストはパラメータ情報についてATAデバイスに質問することができる。パラメータ情報には、デバイスによって提供される論理セクタ、シリンダ、およびヘッドの数、デバイスによってサポートされるコマンド、デバイスによってサポートされる特徴、およびそのような他のパラメータが含まれる。DMA読み出しコマンドによって、ホストはDMAデータ転送プロトコルを使用してデバイスからデータを読み出すことができる。一般的に、これはデータが大量であるとき、はるかに効率的になる。セクタ読み出し確認コマンドによって、ホストはATAデバイスに命令して、ホスト内に記憶されたデータの一部分を読み出させ、デバイスから読み出されたデータをホストへ転送することなく、誤り状態が起こったかどうかを決定することができる。探索コマンドによって、ホストは、後続のコマンドで1つ以上の特定の論理ブロックにアクセスすることをATAデバイスに通知し、デバイスは、指定された1つ以上の論理ブロックへの後続アクセスを実行するため、ヘッドポジショニングを最適化することができる。特徴設定コマンドによって、ホストはATAデバイス内の様々なパラメータを修正し、デバイスによって提供される特徴をオンおよびオフにすることができる。スリープコマンドによって、ホストは、スピンダウンして後続のリセットコマンドを待つようにATAデバイスに命令することができる。DMA書き込みコマンドによって、ホストはDMAデータ転送を使用してATAデバイスへデータを書き込むことができる。一般的に、これはデータが大量になると効率的になる。
FCベースディスクアレイ
中型および大型コンピュータシステムにおいて、データ記憶要件は、一般的に、ディスクドライブを埋め込まれた埋め込み型大容量ストレージデバイスの容量を著しく超過する。そのようなシステムにおいて、ハイエンド大容量デバイス、たとえば安価なディスクの冗長アレイ(Redundant Arrays of Inexpensive Disk、RAID)を使用することが普通になってきた。このようなデバイスは、ローカルエリアネットワーク、光ファイバネットワーク、および他の高帯域通信メディアを介して中型およびハイエンドコンピュータシステムへリンクされる内部プロセッサを含む。ディスクアレイの設計および製造を容易にするため、ディスクの製造業者は、ディスクアレイ内のディスクドライブをディスクアレイコントローラへ直接相互接続するためのFCポートを含むディスクドライブを提供する。一般的に、個々のFCディスクドライブをディスクアレイコントローラへ相互接続するため、ディスクアレイの中でFCアービトレーテッドループトポロジが使用される。
Freidhelm Schmidt, "The SCSI Bus and IDE Interface", Addison-Wesley Publishing Company, ISBN 0-201-17514-2, 1997 Shanley & Anderson, Mine Share, Inc., "PCI System Architecture",Addison-Wesley Publishing Company, ISBN 0-201-40993-3, 1995
図8A〜図8Dは、ディスクアレイ内のFCディスクの使用に関連した幾つかの問題を示す。図8Aは、ディスクアレイの内部コンポーネントを比較的に観念的に描写したものを示す。これから説明される図8B〜図8Dおよび図9は、同じ図示慣例を使用する。図8Aにおいて、ディスクアレイコントローラ802は、高帯域通信メディア804を介して、リモートコンピュータシステムおよび他のリモートエンティティへ相互接続される。ディスクアレイコントローラは、ディスクアレイ内のディスクドライブへ比較的高レベルの論理装置および論理ブロックインタフェースをリモートコンピュータシステムへ提供するため、1つ以上のプロセッサ、1つ以上の比較的大型の電子メモリ、およびディスクアレイ制御ファームウェアおよびソフトウェアがディスクアレイコントローラ内に記憶および実行されることを可能にする他のコンポーネントを含む。図8Aで示されるように、ディスクアレイはディスクアレイコントローラ802および複数のFCディスクドライブ806〜813を含む。FCディスクドライブは、FCアービトレーテッドループ814を介して、ディスクアレイコントローラ802に相互接続される。図8Aで観念的に示されるようなFCベースディスクアレイは、記憶メディアとして標準および容易に入手可能なFCディスクを使用し、相互接続のためにFCアービトレーテッドループを使用し、ディスクアレイコントローラ内で標準FCコントローラを使用して、比較的容易に設計および製造されることができる。FCは高速のシリアル通信メディアであるから、FCアービトレーテッドループ814は、FCディスク806〜813とディスクアレイコントローラ802との間で、大きなデータ転送帯域を提供する。
しかし、FCアービトレーテッドループ内の各々のFCノード、たとえばFCディスクドライブにおいて、データがノードのFCポートを通って処理および転送されるとき、著しいノード遅延が存在する。図8Aにおいて、ノード遅延は、添え字を付けられた小文字の「t」を有する短い矢印で示される。ノード遅延はFCアービトレーテッドループ内で累積し、FCアービトレーテッドループ内のFCノードの数に比例した著しい累積ノード遅延を生じる。
図8Aで示されたディスクアレイ実施形態に伴う第2の問題は、FCアービトレーテッドループが潜在的な単一故障点を表すことである。一般的に、FCディスクは、アービトレーテッドループから非機能FCディスクを隔離するためポートバイパス回路を増強されるが、ポートバイパス回路だけでは防止することのできない複数の異なった故障モードが存在する。
第3の問題は、アービトレーテッドループへノードをリンクするFCポートが故障したときに生じる。そのような場合、故障したFCポートを識別および隔離するため、複雑で信頼できない手法を使用しなければならない。一般的に、故障したFCポートはループトポロジを崩壊させ、ディスクアレイコントローラは、故障したノードを隔離するため、ポートバイパス回路を順次に活性化して各々のノードをバイパスしなければならない。しかし、この手法は、様々な故障モードのもとでは、故障したノードを識別できない可能性がある。したがって、ノード故障はアービトレーテッドループトポロジに伴う重大な問題である。
図8Bは、潜在的単一点故障問題への解決法を示す。図8Bで示されるように、ディスクアレイコントローラ802は、2つの別々の独立FCアービトレーテッドループ814および816を介してFCディスク806〜813に相互接続される。2つの別々のFCアービトレーテッドループの使用は、単一点故障問題を大きく解消する。しかし、ノード遅延問題は、2つのFCアービトレーテッドループの使用によっては改善されない。更に、各々のFCディスクは2つの別々のFCポートを含まなければならないので、個々のFCディスクは、むしろ複雑で高価になる。最後に、故障ポートの識別および隔離問題は部分的にのみ対処される。なぜなら、2つのアービトレーテッドループの1つを崩壊させるノード故障の場合、他のアービトレーテッドループは機能を継続するが、もはや通信メディアに二重冗長性は存在しない。二重冗長性を回復するため、ディスクアレイコントローラは、依然として、故障したノードを識別および隔離するように試みなければならず、前述したように、多くの故障モードが識別および隔離に抵抗する。
図8Cは、ディスクアレイのFCベース実施形態に伴う追加問題を示す。一般的に、ディスクアレイから要求される利用可能記憶空間の量が大きくなればなる程、それだけ多く個々のFCディスクが追加される。しかし、追加ディスクの包含はノード遅延問題を悪化させ、前述したように、単一のFCアービトレーテッドループは、最大で127個のノードまでしか含むことができない。この最大ノード問題を解決するため、独立したFCアービトレーテッドループがディスクアレイへ追加される。図8Dは、FCディスクの第1のセット818が2つの別々のFCアービトレーテッドループ814および816を介してFCコントローラ802と相互接続され、FCディスクの第2のセット820がFCアービトレーテッドループの第2のペア822および824を介してディスクアレイコントローラ802と相互接続される高容量ディスクアレイを示す。FCディスクの各々のセット818および820は、シェルフ(shelf)と呼ばれ、一般的に別々のエンクロージャに納められる。これらのエンクロージャは、冗長パワーシステム、冗長制御パス、およびディスクアレイの全体的な耐故障性および高可用性に寄与する他の特徴を有する。しかし、各々のシェルフの追加は、ディスクアレイコントローラ802内のFCコントローラおよびFCポートの数を増加させる。更に注意すべきは、各々の別々のFCアービトレーテッドループは、FCアービトレーテッドループに含まれるFCノードの累積ノード遅延を経験することである。したがってディスクアレイの設計者、製造者、および使用者は、FCベースディスクアレイ内でディスクアレイコントローラおよびFCディスクを相互接続するための、より柔軟で費用効果が高い効率的方法の必要性を認識してきた。更に、ディスクアレイの設計者、製造者、および使用者は、FCベースディスクアレイ内でディスクアレイコントローラとFCディスクとを相互接続する方法であって、ポートの故障および他の通信およびコンポーネントの故障を、より容易かつ信頼性をもって識別させる方法の必要性を認識してきた。
本発明の1つの実施形態は、ストレージ・シェルフ・ルータ(storage shelf router)を実現する集積回路である。この集積回路は、パス・コントローラ・カード(path controller card)、および任意的に他のストレージ・シェルフ・ルータと組み合わせて使用され、ストレージ・シェルフまたはディスクアレイ内のSATAディスクを高帯域通信メディア、たとえばFCアービトレーテッド(arbitrated)ループへ相互接続する。本発明の1つの実施形態を表す単一のストレージ・シェルフ・ルータを使用するストレージ・シェルフは、高可用性デバイスに要求されるコンポーネント冗長性を提供しない。2、4、6、8、またはそれ以上の個数のストレージ・シェルフ・ルータがストレージ・シェルフの中で使用され、またストレージ・シェルフ・ルータ、ディスクドライブ、および外部通信メディアの間の相互接続が適切に設計および構成されるとき、結果のストレージ・シェルフは、ディスクアレイまたは他のタイプの電子デバイスに含まれてよい離散的高可用性コンポーネントを構成する。
1つの実施形態において、各々のストレージ・シェルフ・ルータは、処理要素、複数のメモリ、層状論理アーキテクチャ、ストレージ・シェルフ・ルータを高帯域通信メディアへ相互接続する2つの完全なFCポート、および複数のSATAポートを含む集積回路であり、各々のSATAポートはSATAディスクへインタフェースを提供する。FCポートは、ストレージ・シェルフ内の全てのストレージ・シェルフ・ルータを一緒にストレージ・シェルフ・ルータ内の内部ファブリック空間へリンクする。相互接続されたストレージ・シェルフ・ルータは、2つの別々の部分的に外部のファブリック空間、たとえば部分的に外部のFCアービトレーテッドループへリンクされ、部分的に外部のファブリック空間はストレージ・シェルフをディスクアレイコントローラまたは他の制御コンポーネントに相互接続する。
ストレージ・シェルフ内で相互接続されたストレージ・シェルフ・ルータのセットは、FCアービトレーテッドループまたは他の高帯域通信メディアの単一のポートを介してアクセス可能である。言い換えれば、各々のストレージ・シェルフは、現在の多くのディスクアレイのように、ストレージ・シェルフ内のディスクドライブの数に等しいノードセットではなく、FCアービトレーテッドループの単一のノードを表すことができる。したがって、ストレージ・シェルフ・ルータによってストレージ・シェルフ内のディスクドライブを相互接続することは、本質的に、各々のディスクドライブが1つ以上のFCアービトレーテッドループへ直接接続される現在のストレージ・シェルフに固有の累積ノード遅延を取り除く。1つの実施において、ストレージ・シェルフ内で8個のストレージ・シェルフ・ルータを相互接続して、単一のFCアービトレーテッドループポートを介してFCアービトレーテッドループへストレージ・シェルフ内の64個のディスクドライブを相互接続する高可用性相互接続を提供することができるので、ディスクアレイコントローラを含む単一のFCアービトレーテッドループは、ディスクアレイ内で8,000個のディスクドライブをディスクアレイコントローラへ相互接続することができ、十分な相互接続冗長性が高可用性動作を可能にする。高可用性が必要とされないとき、ストレージ・シェルフ・ルータ8はストレージ・シェルフ内で125個のディスクドライブを相互接続することができ、ディスクアレイコントローラを含む単一のFCアービトレーテッドループを介して16,000個のディスクドライブを相互接続する。こうして、ディスクアレイ内で125個のディスクドライブごとに単一のFCアービトレーテッドループまたは一対のFCアービトレーテッドループを使用する代わりに、本発明の1つの実施形態を表すストレージ・シェルフ・ルータを使用すれば、1つまたは一対のFCアービトレーテッドループを介して、高可用性方式では8,000個のディスクドライブを相互接続し、または冗長接続なしに16,000個のディスクドライブを相互接続することができる。
したがって、ストレージ・シェルフ・ルータは、FCベース実施形態において、FCアービトレーテッドループまたは他のFCファブリックとストレージ・シェルフ内のディスクドライブとの間でFCフレームをルーティングするように働く。一般的に、通常の動作では、FCフレームは、ストレージ・シェルフ・ルータのデフォルトトポロジおよびストレージ・シェルフ・ルータを個々のディスクドライブへリンクする通信路を介してルーティングされる。しかし、個々の通信リンクが故障するか、1つのストレージ・シェルフ・ルータの全体が故障したとき、残りの正しく動作しているストレージ・シェルフ・ルータおよび相互接続は、冗長相互接続および冗長ストレージ・シェルフ・ルータを利用するように自動的に再構成され、ディスクドライブが1つ以上のFCアービトレーテッドループを介してディスクアレイコントローラへ相互接続されることは継続する。
1つの実施形態において、ストレージ・シェルフ・ルータは、FCアービトレーテッドループ、FCファブリック、または他の高帯域通信メディアを、個々のディスクドライブをストレージ・シェルフ・ルータとリンクする複数の内部専用通信メディアに相互接続する一種の通信ハブとして働くので、ストレージ・シェルフ・ルータは、FCベース通信プロトコルを、内部リンクに適した1つ以上の通信プロトコルへ変換するように働くことができる。これは、更に、ストレージ・シェルフ内で安価な非FC互換ディスクドライブを使用できるようにし、ディスクアレイコントローラからストレージ・シェルフ・ルータによって受け取られたFCPコマンドが、ストレージ・シェルフ・ルータによって、安価なディスクドライブに互換的なコマンドへ変換されるようにする。本発明の1つの実施形態を表すストレージ・シェルフ・ルータを使用して実現されたストレージ・シェルフは、実際に含む安価なディスクドライブではなく完全にFC互換のディスクドライブを含むかのように、ディスクアレイコントローラへインタフェースする。多くの安価なディスクドライブは複数の通信リンクポートをサポートしないので、各々の安価なディスクドライブと1つ以上のストレージ・シェルフ・ルータとの間に二重冗長性通信リンクを提供するパス・コントローラ・カードが使用される。各々のディスクドライブは、ポイントツーポイントリンクを介してストレージ・シェルフ・ルータへ相互接続されるので、故障したディスクドライブ、故障したリンク、および故障したポートは、容易に検出および隔離される。
本発明の1つの実施形態は、ストレージ・シェルフ・ルータの集積回路実現である。このストレージ・シェルフ・ルータは、ストレージ・シェルフ内のディスクドライブを高帯域通信メディアと相互接続するため、ディスクアレイまたは他の大型の別々に制御される大容量ストレージデバイスのストレージ・シェルフの中で、単独または組み合わせて使用されてよい。他方では、高帯域通信メディアは、ディスクアレイコントローラまたは類似の大容量ストレージデバイスのコントローラへストレージ・シェルフを相互接続する。説明される実施形態は、更に、ディスクドライブと1つ以上のストレージ・シェルフ・ルータとの間で冗長通信リンクを提供するパス・コントローラ・カードを含む。図8A〜図8Dを参照して前に説明したように、ディスクアレイは、現在、ストレージ・シェルフ内でFC互換ディスクドライブを使用することができ、各々のFC互換ディスクドライブは、FC互換ディスクドライブをディスクアレイコントローラと相互接続する1つまたは2つのFCアービトレーテッドループまたは他のFCファブリックトポロジでFCノードとして働く。対照的に、本発明の1つの実施形態を部分的に表すストレージ・シェルフ・ルータは中間の通信ハブとして働く。このハブは、ポイントツーポイントシリアル通信メディアによって、ストレージ・シェルフ内の各々のディスクドライブへ直接接続され、1つ以上の高帯域通信メディア、たとえばファイバ・チャネル・アービトレーテッド・ループを介して、ディスクアレイコントローラと相互接続される。
本発明の1つの実施形態は、(1)概要、(2)ストレージ・シェルフ内部トポロジ、(3)パス・コントローラ・カードの概要、(4)ストレージ・シェルフ・ルータの概要、(5)ストレージ・シェルフ・インタフェース、(6)ストレージ・シェルフ・ルータの実施形態、および(7)ストレージ・シェルフ・ルータのルーティングレイヤ、を含む以下のサブセクションで詳細に説明される。更に、コンピュータプログラムの付録が、2つのコンパクトディスクで提供され、参照してここに組み込まれる。コンピュータプログラムの付録は、ルーティングレイヤ論理を指定するRTLコード、ストレージ・シェルフ・ルータ実施形態のC言語モデル、およびストレージ・シェルフ・ルータ実施形態の参照マニュアルの5つの章を含む。2つのコンパクトディスクの各々に含まれるファイルは、以下のような仕様である。
Figure 0004690202
概要
図9は、図8A〜図8Dで使用された図示慣例を使用して、本発明の1つの実施形態を表すストレージ・シェルフ・ルータを観念的に示す。図9において、ディスクアレイコントローラ902は、LANまたは光ファイバ通信メディア904を介して、1つ以上のリモートコンピュータシステムへリンクされる。ディスクアレイコントローラ902は、FCアービトレーテッドループ908を介して、ストレージ・シェルフ・ルータ906に相互接続される。ストレージ・シェルフ・ルータ906は、別々のポイントツーポイントインターコネクト、たとえばインターコネクト918を介して、ストレージ・シェルフ910〜917内のディスクドライブの各々に直接相互接続される。図9で観念的に示された実施形態と図8A〜図8Dで示された実施形態とを比較すると、図8A〜図8Dで示された実施形態で識別された問題は、ストレージ・シェルフ・ルータ・ベースの実施形態によって対処されていることが容易に分かる。第1に、図9で示された実施形態のFCアービトレーテッドループ内の唯一のノード遅延は、単一のFCアービトレーテッドループノードとして働くストレージ・シェルフ・ルータによって導入される遅延である。対照的に、図8Aで示されるように、各々のFC互換ディスクドライブは別々のノード遅延を導入し、FCアービトレーテッドループ814上の累積ノード遅延は、FCアービトレーテッドループによって相互接続されたFC互換ディスクドライブの数に比例する。ストレージ・シェルフ・ルータは、ストレージ・シェルフ・ルータを個々のディスクドライブへリンクする内部シリアルインターコネクトとFCポートとの間で、高度に並列および効率的データ転送を容易にするように設計される。したがって、ストレージ・シェルフ・ルータをFCアービトレーテッドループ908へ相互接続するオンボードFCコントローラによって導入される必然的ノード遅延を除いて、ストレージ・シェルフ・ルータによって導入される実質的な遅延および累積遅延は存在しない。
第2に、ストレージ・シェルフ・ルータを使用して、はるかに複数のディスクドライブをディスクアレイコントローラに相互接続することができる。図9の実施形態で使用されたFCアービトレーテッドループ908は、2つのノードだけ、即ち、ディスクアレイコントローラおよびストレージ・シェルフ・ルータを含む。各々のストレージ・シェルフ・ルータは8つのディスクドライブをFCアービトレーテッドループと相互接続できると仮定すれば、単一のFCアービトレーテッドループを使用し、125個のストレージ・シェルフ・ルータをディスクアレイコントローラへ相互接続して、単一のFCアービトレーテッドループを介して8,000以上の個々のディスクドライブをディスクアレイコントローラへ相互接続することができる。もしFCファブリック(パブリックループ)に通常予約されているアドレスがストレージ・シェルフ・ルータによって使用されるとすれば、126個のストレージ・シェルフ・ルータを相互接続することができる。前述したように、高可用性が必要でないときには、単一のFCアービトレーテッドループを介して、16,000以上の個々のディスクドライブをディスクアレイコントローラへ相互接続することができる。対照的に、図8Cで示されるように、個々のFC互換ディスクドライブの各々が別々のFCノードとして機能するのであれば、125個のディスクドライブだけが単一のFCアービトレーテッドループを介してディスクアレイコントローラと相互接続されるか、もしFCファブリック(パブリックループ)に通常予約されているアドレスがディスクドライブのために使用されるならば、126個のディスクドライブが相互接続される。
第3に、ストレージ・シェルフ・ルータを使用するストレージ・シェルフの中で故障を識別および隔離することが、はるかに容易である。従来の1ディスクドライブ/FCアービトレーテッドループノード実施形態において、故障したFCポートまたはFCリンクは、識別するのが非常に難しく、或る故障モードでは、隔離するのが困難であるが、対照的に、ポイントツーポイントリンクを介してストレージ・シェルフ・ルータへ相互接続されたディスクドライブに関連する問題は、比較的容易に識別され、故障したポートまたはリンクは容易に隔離される。
ディスクドライブは、現在利用可能な複数の内部相互接続テクノロジを介して、ストレージ・シェルフ・ルータ906へ相互接続される。1つの実施形態において、SATAディスクドライブをストレージ・シェルフ・ルータに相互接続するため、SATA互換相互接続が使用される。ストレージ・シェルフ・ルータは、ディスクアレイコントローラから受け取られた各々のFCPコマンドを1つ以上の同等ATAインタフェースコマンドへ変換する論理を含み、ストレージ・シェルフ・ルータはATAインタフェースコマンドを適切なSATAディスクドライブへ送信する。図9で示されるストレージ・シェルフ・ルータは、単一のFCアービトレーテッドループ908を介してディスクアレイコントローラに相互接続されるが、この後で説明するように、より普通には、ストレージ・シェルフ・ルータは、2つのFCアービトレーテッドループまたは他のファブリックトポロジを介してディスクアレイコントローラに相互接続される。
図10は、コンピュータおよびディスクアレイの階層相互接続システム内で、本発明の1つの実施形態を部分的に表すストレージ・シェルフ・ルータによって占有される位置を示す。図10において、2つのサーバコンピュータ1001および1004は相互に接続され、また高帯域通信メディア1008、たとえば様々なFCファブリックトポロジの任意のものを介して、ディスクアレイコントローラ1006に相互接続される。ディスクアレイコントローラ1006は、2つの別々のFCアービトレーテッドループを介して、ストレージ・シェルフ1010に相互接続される。第1のFCアービトレーテッドループ1012は、ディスクアレイコントローラ1006を第1のストレージ・シェルフ・ルータ1014に直接相互接続する。第2のFCアービトレーテッドループ1016は、ディスクアレイコントローラ1006を第2のストレージ・シェルフ・ルータ1018へ直接相互接続する。2つのストレージ・シェルフ・ルータ1014および1018は、内部ポイントツーポイントFC相互接続1020に相互接続され、相互接続1020は、第1のFCアービトレーテッドループ1012の一部分として第1のストレージ・シェルフ・ルータ1014から第2のストレージ・シェルフ・ルータ1018へFCフレームを搬送し、第2のFCアービトレーテッドループ1016の一部分として第2のストレージ・シェルフ・ルータ1018と第1のストレージ・シェルフ・ルータ1014との間でFCフレームを搬送する。更に、内部FCリンク1020は、ストレージ・シェルフ1010内で内部的に生成および消費されて内部管理および通信に使用されるFCフレームを搬送することができる。以下で説明するように、ストレージ・シェルフとディスクアレイとを相互接続する2つのFCアービトレーテッドループを「Xループ」または「Xファブリック」および「Yループ」または「Yファブリック」と呼び、内部FC1020上で内部的に生成および消費される管理FCフレームの交換をSファブリックと呼ぶことが普通である。ストレージ・シェルフ1010は16個のSATAディスクドライブを含む。これらのディスクドライブは、図10において、4つのディスクドライブ1022〜1025および明確に示されない12個のディスクドライブを示す省略符号1026によって表される。各々のストレージ・シェルフ・ルータ1014および1018は、ポイントツーポイントシリアルリンク、たとえばシリアルリンク1028を介して、各々のSATAディスクドライブに相互接続される。
図10で示されるように、ディスクアレイコントローラ1006およびストレージ・シェルフ1010を含むディスクアレイ内の相互通信路の各々において、少なくとも二重の冗長性が存在する。更に、ストレージ・シェルフ・ルータに二重の冗長性が存在する。もしいずれかの1つのリンクまたは1つのストレージ・シェルフ・ルータが故障すると、残りのリンクおよび残りのストレージ・シェルフ・ルータは、故障したリンクまたはストレージ・シェルフ・ルータによって前に取られていたワークロードを取り、ストレージ・シェルフ1010内でディスクアレイコントローラ1006と16個のSATAディスクドライブの各々との間で完全な接続性を維持することができる。ディスクアレイコントローラは、更に、複数の異なった高可用性データストレージスキーム、たとえば、RAIDストレージテクノロジの様々なレベルを実現し、1つ以上のSATAディスクドライブが故障しても、回復および完全な動作を可能にすることができる。RAIDテクノロジは、たとえば、2つ以上のディスクドライブに記憶されたデータの2つ以上の完全なコピーを、別々に、また完全な冗長性で復元することができる。サーバは、組み込まれた冗長性およびフェイルオーバを利用して、通信メディア、たとえばFCファブリックを介して、ディスクアレイコントローラ1006および1つ以上のストレージ・シェルフ、たとえばストレージ・シェルフ1010を含むディスクアレイと相互通信する。ディスクアレイコントローラは論理装置(「LUN」)および論理ブロックアドレス(「LBA」)インタフェースを与える。このインタフェースによって、サーバコンピュータ1002および1004は、ストレージ・シェルフ内のディスクドライブにおけるデータの実際のロケーションを顧慮することなく、またデータの冗長コピーおよびディスクアレイコントローラ1006によって提供される他の機能性および特徴を顧慮することなく、ファイルおよび他のデータオブジェクトをディスクアレイに記憶および検索することができる。ディスクアレイコントローラ1006は、ストレージ・シェルフ・ルータ1014および1018によって提供されるインタフェースを介して、ストレージ・シェルフ1010とインタフェースする。ディスクアレイコントローラ1006は、FCPプロトコルを介して出現する離散的FC互換ディスクドライブへFC交換を送信し、FC交換を受信する。しかし、ディスクアレイコントローラとはトランスペアレントに、ディスクシェルフルータ1014および1018は、SATAディスクドライブとコマンドおよびデータを交換するため、FCコマンドをATAコマンドへ変換する。
図11および図12は、本発明の1つの実施形態を表すストレージ・シェルフ・ルータを使用して実現されるストレージ・シェルフのコンポーネントの斜視図である。図11において、ルータカードの上に取り付けられた2つのストレージ・シェルフ・ルータ1102および1104は、パッシブミッドプレイン(passive midplane)1106を介して、16個のSATAディスクドライブ、たとえばSATAディスクドライブ1108に相互接続する。各々のSATAディスクドライブキャリヤは、SATAディスクドライブおよびパス・コントローラ・カード1110を含む。パス・コントローラ・カード1110は、SATAディスクドライブを2つの別々のシリアルリンクに相互接続する。これらのシリアルリンクは、パッシブミッドプレインを介して、2つのストレージ・シェルフ・ルータ1102および1104の各々へ連結される。普通は、SATAディスクドライブは、外部システムへの単一のシリアル接続のみをサポートする。ストレージ・シェルフの中で完全に冗長な接続を提供するため、パス・コントローラ・カード1110が必要である。ストレージ・シェルフ1100は、更に、冗長ファン1112および1114並びに冗長電源1116および1118を含む。図12は、図11と類似したストレージ・シェルフ実施形態を示す。この実施形態は二重SATAディスクドライブキャリヤを有し、このキャリヤの各々は、2つのパス・コントローラ・カードおよび2つのSATAディスクドライブを含む。ディスクドライブ数の増加は、高可用性応用で必要となる二重冗長性を提供するため、ストレージ・シェルフ・ルータの対応する二重化を必要とする。
ストレージ・シェルフの内部トポロジ
図13A〜図13Cは、本発明の1つの実施形態を部分的に表すストレージ・シェルフ・ルータを使用するストレージ・シェルフの3つの異なった実施形態を示す。図13Aにおいて、単一のストレージ・シェルフ・ルータ1302は、FCアービトレーテッドループ1320を介して、16個のSATAディスクドライブ1304〜1319をディスクアレイコントローラに相互接続する。1つの実施形態において、ストレージ・シェルフ・ルータは、最大16個のシリアルリンクを提供し、16個までのSATAディスクドライブの相互接続をサポートすることができる。図13Aに示されるストレージ・シェルフは、高可用性ではない。なぜなら、それは、冗長ストレージ・シェルフ・ルータを含まず、1つ以上のルータと各々のSATAディスクドライブとの間に、冗長シリアルリンクも含まないからである。
対照的に、図13Bで示されるストレージ・シェルフ実施形態は、高可用性である。このストレージ・シェルフにおいて、2つのストレージ・シェルフ・ルータ1322および1324は、ポイントツーポイントシリアルリンクを介して、16個のSATAディスクドライブ1326〜1341の各々へリンクされる。通常の動作の間、ストレージ・シェルフ・ルータ1322は、SATAディスクドライブの半分1326〜1333をディスクアレイコントローラへ相互接続し、ストレージ・シェルフ・ルータ1324はSATAディスクドライブの他の半分1334〜1341をディスクアレイコントローラへ相互接続する。通常の動作の間に使用される内部ポイントツーポイントシリアルリンクは、たとえばシリアルリンク1342のように、図13Bで太く示され、「1次リンク」と呼ばれる。内部シリアルリンク1344のように、通常の動作の間に使用されない内部シリアルリンクは「2次リンク」と呼ばれる。もし1次リンクが動作中に故障すると、故障した1次リンク、およびストレージ・シェルフ・ルータへ接続された他の全ての1次リンクを、故障した1次リンクが接続されたストレージ・シェルフ・ルータから他のストレージ・シェルフ・ルータへフェイルオーバして、故障した1次リンクを修理または置換することができる。この置換には、故障した1次リンクが接続されたストレージ・シェルフ・ルータの置換が含まれる。前述したように、2つのストレージ・シェルフ・ルータの各々は、ストレージ・シェルフをディスクアレイコントローラに相互接続する2つのFCアービトレーテッドループの1つのためにFCノードとして働く。もし1つのFCアービトレーテッドループが故障すると、通常は、故障したFCアービトレーテッドループを通るデータ転送は、残りの動作可能なFCアービトレーテッドループへフェイルオーバされる。同様に、もしストレージ・シェルフ・ルータが故障すると、他のストレージ・シェルフ・ルータがストレージ・シェルフの完全な動作制御を取ることができる。代替の実施形態において、1次パスの故障は、全体のストレージ・シェルフ・ルータをフェイルオーバすることなく、個々にフェイルオーバされてよい。或る実施形態および状況においては、1次パスフェイルオーバはストレージ・シェルフ・ルータ内で実行されてよく、他の実施形態および状況においては、1次パスフェイルオーバは1次パスを第2のストレージ・シェルフ・ルータへフェイルオーバすることを含んでよい。
図13Cは、32ATAディスク高可用性ストレージ・シェルフの実施形態を示す。図13Cで示されるように、32ATAディスクストレージ・シェルフは、4つのストレージ・シェルフ・ルータ1350、1352、1354、および1356を含む。各々のストレージ・シェルフ・ルータは、通常の動作中に、8つのSATAディスクを2つのFCアービトレーテッドループに相互接続する。これらのFCアービトレーテッドループは、ストレージ・シェルフをディスクアレイコントローラへ相互接続する。各々のストレージ・シェルフ・ルータは、2次リンクを介して、8つの追加SATAディスクディスクドライブへ相互接続されるので、もしフェイルオーバが必要であれば、ストレージ・シェルフ・ルータは、全部で16個のSATAディスクドライブを2つのFCアービトレーテッドループに相互接続することができる。注意すべきは、4ストレージ・シェルフ・ルータ構成において、ストレージ・シェルフ・ルータ1350が1つのFCアービトレーテッドループに関して4つの全てのストレージ・シェルフ・ルータのためにFCノードとして働き、ストレージ・シェルフ・ルータ1356が、第2のFCアービトレーテッドループに関して4つの全てのストレージ・シェルフ・ルータのためにFCノードとして働くことである。図13Cで示されるように、ストレージ・シェルフ・ルータ1350がFCノードとして働く第1のFCアービトレーテッドループは、XループまたはXファブリックとして考えられ、ストレージ・シェルフ・ルータ1356がFCノードとして働く他のFCアービトレーテッドループは、YファブリックまたはYループとして考えられる。ディスクアレイコントローラからXループを介してストレージ・シェルフ内のSATAディスクへ送信されたFCフレームは、最初にストレージ・シェルフ・ルータ1350によって受信される。FCフレームは、通常動作の場合、1次リンクを介してストレージ・シェルフ・ルータ1350に相互接続されたSATAディスクへ方向づけられるか、内部FCリンク1358を介してストレージ・シェルフ・ルータ1352へ方向づけられる。ストレージ・シェルフ・ルータ1352は、1次リンクを介してSATAディスクへ送信される1つ以上のATAコマンドへFCフレームを変換するか、下流のストレージ・シェルフ・ルータ1354へFCフレームを転送する。もし応答FCフレームがXファブリックを介してストレージ・シェルフ・ルータ1356によって送信されるのであれば、その応答フレームは、ストレージ・シェルフ・ルータ1354および1352からストレージ・シェルフ・ルータ1350へ、内部FCリンク1360、1362、1358を介して転送されなければならない。ストレージ・シェルフ・ルータ1350から、応答フレームは外部Xファブリックへ送信される。説明された実施形態において、高可用性ストレージ・シェルフは、少なくとも2つのストレージ・シェルフ・ルータを含む必要があり、またストレージ・シェルフの中で8つのSATAディスクの各々のセットについて1つのストレージ・シェルフ・ルータを含む必要がある。
パス・コントローラ・カードの概要
前述したように、2つのコンポーネントが、SATAディスクまたは他の安価なディスクドライブを使用する高可用性ストレージ・シェルフの構成を容易にする。これらのコンポーネントは、FCアービトレーテッドループ上で単一のスロットまたはノードのみを使用して、FCアービトレーテッドループまたは他の高帯域通信メディアと相互接続することができる。1つのコンポーネントはストレージ・シェルフ・ルータであり、他のコンポーネントは、2つのストレージ・シェルフ・ルータへATAドライブの冗長接続を提供するパス・コントローラ・カードである。図14A〜図14Bは、ATAディスクドライブを2つのストレージ・シェルフ・ルータに相互接続するのに適したパス制御カードの2つの実施形態を示す。図14Aで示される実施形態は、パラレルATAディスクドライブへのパラレルコネクタを提供し、図14Bで示される実施形態は、SATAディスクドライブへのシリアル接続を提供する。前述したように、SATAディスクドライブは、より高いデータ転送レートを提供するので、図14Bで示される実施形態が好ましく、以下で説明される実施形態である。
パス・コントローラ・カードはSCA−2コネクタ1402を提供する。このコネクタ1402は、1次シリアルリンク1404および管理リンク1406を第1のストレージ・シェルフ・ルータへ外部接続し、2次シリアルリンク1408および第2の管理リンク1410を第2のストレージ・シェルフ・ルータへ外部接続する。1次リンクおよび2次リンクは、シリアルリンク1414を介してSATAディスクドライブ1416へ相互接続される2:1マルチプレクサによって多重化される。管理リンク1406および1410はマイクロコントローラ1418へ入力される。マイクロコントローラ1418は管理サービスルーチン、たとえば、ディスクドライブ環境の温度をモニタし、ディスクドライブキャリヤ内のファンの動作を制御し、ディスクドライブエンクロージャの外部から見える様々な発光ダイオード(「LED」)信号光を活性化するルーチンを実行する。本質的に、通常の動作では、ATAコマンドおよびデータは1次リンクを介してパス・コントローラ・カードによって受け取られ、2:1マルチプレクサを介して、SATAディスクドライブ1416へ入力されるシリアルリンク1414へ転送される。もし1次リンクを介してパス・コントローラ・カードへ接続されたデフォルトのストレージ・シェルフ・ルータを非活性化するフェイルオーバが、ストレージ・シェルフの中で起こるならば、第2のストレージ・シェルフ・ルータが、2次リンクを介してATAコマンドおよびデータの転送を取り、これらのATAコマンドおよびデータが、SATAディスクドライブ1416へ直接入力されるシリアルリンク1414へ、2:1マルチプレクサを介して渡される。
パス・コントローラ・カードは、2つの別々のストレージ・シェルフ・ルータへ冗長接続を提供し、したがって高可用性ストレージ・シェルフで必要な二重冗長性を提供するために必要である。ストレージ・シェルフ・ルータは、異なったタイプの通信メディアの間で相互接続を提供し、異なったタイプの通信メディアの間でコマンドおよびデータパケットの変換を提供する。更に、ストレージ・シェルフ・ルータは、内部コンポーネントの故障を自動的に検出して適切なフェイルオーバプランを実行するフェイルオーバ論理を含み、冗長リンクおよび非故障コンポーネントを使用して、ディスクアレイコントローラとディスクドライブとの完全な相互接続を回復する。
ストレージ・シェルフ・ルータの概要
図15は、ストレージ・シェルフ・ルータの主要な機能コンポーネントを示す高レベルブロック図である。ストレージ・シェルフ・ルータ1500は、2つのFCポート1502および1504、ルーティングレイヤ1506、FCPレイヤ1508、グローバル共有メモリスイッチ1510、16個のSATAポート1512〜1518、CPUコンプレックス1520、および外部フラッシュメモリ1519を含む。ストレージ・シェルフ内で相互接続されたストレージ・シェルフ・ルータのセットにおけるストレージ・シェルフ・ルータの論理位置に依存して、FCポートの1つまたは双方は、外部FCアービトレーテッドループまたは他のFCファブリックへ接続され、FCポートの1つまたは双方は、内部ポイントツーポイントFCリンクへ相互接続される。一般的に、FCポートの1つは、ストレージ・シェルフ・ルータのセット内のストレージ・シェルフ・ルータの論理および物理位置とは無関係に、ストレージ・シェルフ・ルータを直接または間接に第1のFCアービトレーテッドループへリンクするものと考えてよく、他のFCポートは、ストレージ・シェルフ・ルータを第2のFCアービトレーテッドループに直接または間接に相互接続するものと考えてよい。
ルーティングレイヤ1506は、この後で説明するメモリの中に記憶された複数のルーティングテーブル、および双方のFCポートから到着するFCフレームをどこへ転送するかを決定するルーティングロジック(routing logic)を含む。FCPレイヤ1508は、様々なタイプの到着および出発FCフレームを処理する制御論理、この後で説明するグローバル共有メモリスイッチへのインタフェース、および一緒になってFCP交換を構成するFCフレームの交換を容易にするFC交換コンテキストをメモリの中にセットアップするため、CPUコンプレックス上で実行されているファームウェアルーチンにFCP_CMNDフレームを処理させるCPUコンプレックス1503へのインタフェースを含んでいる。
グローバル共有メモリスイッチ1510は、FCPレイヤとSATAポート1512〜1518との間でデータを渡すための非常に高速の時間多重化されたデータ交換ファシリティである。グローバル共有メモリスイッチ(「GSMS」)1510は、バーチャルキューの割り振りを可能にするバーチャルキューメカニズムを使用して、FCPレイヤと特定のSATAポートとの間のデータ転送を容易にする。GSMSは、本質的に非常に高帯域で高速の双方向マルチプレクサである。このマルチプレクサは、FCPレイヤと16個のSATAポートとの間で高度に並列のデータフローを促進し、FCPレイヤとSATAポートとの間で同期境界の横断を容易にする。
CPUコンプレックス1503は、様々なファームウェアルーチンを実行する。これらのファームウェアルーチンは、FC交換のためにコンテキスト情報を初期化および維持するためFCPコマンドを処理し、FCPコマンドをATA等価コマンドへ変換し、またSATAディスクドライブおよびストレージ・シェルフ・ルータの内部コンポーネントの動作をモニタし、問題が検出されたとき、複雑なフェイルオーバストラテジを実行する。フェイルオーバストラテジを実行するため、CPUコンプレックスはストレージ・シェルフ・ルータの他の論理コンポーネントに相互接続される。外部フラッシュメモリ1519は、構成パラメータおよびファームウェアルーチンを記憶する。注意すべきは、ストレージ・シェルフ・ルータが2つのFCポート1502および1504、16個のSATAポート1512〜1518、16個のシリアル管理リンク1520、ICバス1522、およびコンソール1524へのリンクを介して、外部コンポーネントに相互接続されることである。
ストレージ・シェルフ・インタフェース
前述したように、ストレージ・シェルフ・ルータベースのストレージ・シェルフ実施形態は、現在のFCノード/ディスクドライブ実施形態よりも、多くの点で大きな柔軟性を提供する。ストレージ・シェルフ・ルータは、それが接続されたディスクアレイコントローラへ多くの異なった論理インタフェースを提供することができる。図16A〜図16Gは、本発明の1つの実施形態を部分的に表す1つ以上のストレージ・シェルフ・ルータを組み込んだ高可用性ストレージ・シェルフによって提供される複数の異なった論理インタフェースを示す。図16Aは、図8A〜図8Dを参照して前に説明したストレージ・シェルフの現在のFC互換ディスクドライブ実施形態によって提供されるインタフェースを示す。図16Aは、図16A〜図16Hを通して使用される観念的図示慣例を使用する。図16Aにおいて、各々のディスクドライブ1602〜1605は、番号0〜19を付けられた一連のデータブロックとして論理的に表される。もちろん、実際のディスクドライブは、数十万から数百万の論理ブロックを含むが、インタフェースの様々な異なったタイプを例示するためには、図16Aの各々のディスクについて示された20個の論理ブロックで十分である。図16Aにおいて、各々の個々のディスクドライブ1602〜1605はFCアービトレーテッドループ上の離散的ノードであり、したがって各々のディスクドライブは、別々のFCノードアドレス、または図16Aで「AL_PA1」、「AL_PA2」、「AL_PA3」、および「AL_PA4」として表されたアービトレーテッドループ物理アドレス(「AL_PA」)を関連づけられる。しかし、注意すべきは、現在のFCアービトレーテッドループディスクアレイ実施形態、たとえば図8A〜図8Dを参照して説明された実施形態とは異なり、ノードを関連づけられる累積ノード遅延が存在しないことである。なぜなら、各々のノードは、図9で示されるように、ポイントツーポイント接続を介してストレージ・シェルフ・ルータの相補的SATAポートに相互接続されるからである。したがって、ディスクアレイコントローラは、ディスクドライブを関連づけられたFCアドレスを介して、特定のディスクドライブ内の特定の論理ブロックにアクセスすることができる。所与のディスクドライブは、或る場合には、論理装置(「LUN」)インタフェースを提供することができる。その場合、論理ブロックアドレス空間は別々の論理ブロックアドレス空間へ区分され、各々の論理ブロックアドレス空間は異なったLUNを関連づけられる。しかし、現在の説明のためには、そのような複雑なレベルまで問題にする必要はない。
図16Bは、ストレージ・シェルフ・ルータを介してFCアービトレーテッドループへ相互接続された図16Aの4つのディスクドライブを含むストレージ・シェルフの第1の可能なインタフェースを示す。この第1のインタフェースにおいて、各々のディスクドライブは、別々のFCノードアドレスを関連づけられたままである。各々のディスクドライブは、単一の論理ブロックアドレス空間を含む単一の論理装置と考えられる。このインタフェースは、今後は、本発明の1つの実施形態を部分的に表す1つ以上のストレージ・シェルフ・ルータを含むストレージ・シェルフの「トランスペアレントモード」と呼ばれる。
ストレージ・シェルフによって提供される第2の可能なインタフェースは、図16Cで示される。この場合、4つの全てのディスクドライブは、単一のFCアービトレーテッドループノードアドレス「AL_PA1」を関連づけられる。各々のディスクドライブは異なった論理装置として考えられ、ディスクドライブ1602は論理装置0と考えられ、ディスクドライブ1603は論理装置1と考えられ、ディスクドライブ1604は論理装置2と考えられ、ディスクドライブ1605は論理装置3と考えられる。したがって、ディスクアレイコントローラは、単一のFCノードアドレス、論理装置番号、および論理装置内の論理ブロックアドレスを介して、ストレージ・シェルフ内の4つのディスクドライブの論理ブロックにアクセスすることができる。
仮説のストレージ・シェルフにおける4つのディスクドライブへの代替インタフェースは、図16Dで示される。この場合、4つの全てのディスクドライブは、単一の論理装置の中に含まれると考えられる。4つのディスクドライブ内の各々の論理ブロックは、一意の論理ブロックアドレスを割り当てられる。したがって、ディスクドライブ1602内の論理ブロック0〜19は、論理ブロックアドレス0〜19を関連づけられたままであり、ディスクドライブ1603内の論理ブロック0〜19は、今度は論理ブロックアドレス20〜39を関連づけられる。このインタフェースは、今後は、図16Cで示される純粋のLUNベースインタフェースに対して、純粋の論理ブロックアドレスインタフェースと呼ばれる。
図16Eは、4つのディスクドライブを含む仮説のストレージ・シェルフによって提供される他の可能な論理インタフェースを示す。この場合、2つのディスクドライブ1602および1603の第1のセットは、第1のFCノードアドレス「AL_PA1」を関連づけられ、2つのディスクドライブ1602および1603は、2つの異なったLUN番号、即ち、それぞれLUN0およびLUN1を関連づけられる。同様に、ディスクドライブの第2のペア1604および1605は、共に第2のFCノードアドレス「AL_PA2」を関連づけられ、ディスクドライブの第2のペアの各々は異なったLUN番号を関連づけられる。
図16Fは、更に他の可能なインタフェースを示す。この場合、第1の2つのディスクドライブ1602および1603は、第1のFCノードアドレスを関連づけられ、第2の2つのディスクドライブ1604および1605は、第2のFCノードアドレスを関連づけられる。しかし、この場合、各々のグループ内の2つのディスクドライブは、共に単一の論理装置に所属するものと考えられ、2つのディスクドライブ内の論理ブロックは、単一の論理ブロックアドレス空間を構成する論理ブロックアドレスを関連づけられる。
最後のインタフェースは図16Gに示される。この場合、前の2つのインタフェースと同じように、単一のFCノードアドレスを関連づけられたディスクドライブの各々のペアは、単一の論理ブロックアドレス空間を有する単一のLUNを構成するものと考えられる。しかし、このインタフェースでは、論理ブロックアドレスは2つのディスクドライブの間で交替する。たとえば、ディスクドライブ1602および1603のペアの場合、論理ブロックアドレス0は第1の論理ブロック1610および第1のディスクドライブ1602を関連づけられ、論理ブロックアドレス1は第2のディスクドライブ1603内の第1のブロック1612を関連づけられる。
図16A〜図16Gは、本発明の1つの実施形態を部分的に表すストレージ・シェルフ・ルータによってディスクアレイコントローラへ提供される多くの可能なインタフェースの中の幾つかを示すだけである。ディスクドライブおよびディスクドライブ内の物理ブロックへのLUNおよび論理ブロックアドレスのマッピングであって、アルゴリズムで記述することができるマッピングは、どのようなものでもストレージ・シェルフ内のストレージ・シェルフ・ルータによって実現可能である。一般的に、これらの多くの論理インタフェースの異なったタイプは、次の4つの一般的なインタフェースのタイプへ区分することができる。(1)各々のディスクドライブが、局所的に一意の別々のFCノードアドレスを関連づけられるトランスペアレントモード、(2)各々のディスクドライブが、異なったLUN番号を関連づけられ、全てのディスクドライブが、単一のFCノードアドレスを介してアクセスされる純粋LUNモード、(3)全てのディスクドライブが、単一のFCノードアドレスおよび単一の論理装置番号を関連づけられる純粋論理ブロックアドレシングモード、および(4)LUNおよび論理ブロックアドレス空間区分の様々な異なる組み合わせを使用する混合LUNおよび論理ブロックアドレシングモード。
ストレージ・シェルフ・ルータの実施形態
図17Aは、本発明の1つの実施形態を表すストレージ・シェルフ・ルータ内のコマンドおよびデータフローの高レベル概略図である。ストレージ・シェルフ・ルータは、1つ以上のFCアービトレーテッドループまたは他のFCファブリック1702〜1703を介して、他のストレージ・シェルフ・ルータおよびディスクアレイコントローラとデータおよびコマンドのシリアルストリームを交換する。データのシリアルストリームはFCポートレイヤ1704に入り、低レベルのFCプロトコルレベルで処理される。データストリームから抽出されたFCフレームは、先入れ先出しバッファ(「FIFO」)1706〜1707へ入力される。FCフレームの初期部分が利用可能になると、FCフレームの後の部分がFIFOへ入力されていても、初期部分がルーティングレイヤ1708およびFCPレイヤ1710によって処理される。したがって、FCフレームは、バッファの中で完全にアセンブルされて内部メモリバッファから内部メモリバッファへコピーされる必要なしに、大きな時間および計算的効率を伴って処理される。
ルーティングレイヤ1708は、FCフレームが、ストレージルータまたはリモートストレージルータ、またはFCアービトレーテッドループまたは他のFCファブリックによってストレージルータに相互接続された他のエンティティへ方向づけられているかどうかを、FCフレームヘッダから決定する責任を有する。リモートエンティティへ方向づけられたフレームは、ルーティングレイヤによって、FCアービトレーテッドループまたは他のFCファブリックを介してリモートエンティティへ送信されるように、FCポートレイヤ内の出力FIFO1712〜1713へ方向づけられる。ストレージルータへ方向づけられたフレームは、ルーティングレイヤによってFCPレイヤへ方向づけられ、状態機械がストレージ・シェルフ・ルータ内のディスポジションを制御する。
ストレージ・シェルフ・ルータによってコンテキストが確立された現在アクティブのFC交換を関連づけられたFCP_DATAフレームは、高度にストリームラインされた効率的方法で処理される。これらのフレームからのデータは、FCPレイヤによってGSMS1718内のバーチャルキュー1714〜1716へ方向づけられ、そこからデータはSATAポートレイヤ1722内の入力バッファ1720へ転送される。SATAポートレイヤから、データは、SATAパケットまたはデータフレーム情報構造(DATA FIS)形式で、多くのSATAリンクの1つ1724を介して、ストレージ・シェルフ・ルータに相互接続された複数のSATAディスクドライブの1つ1726へ送信される。
FCP_CMNDフレームは、FCPレイヤによって異なった方式で処理される。これらのフレームは、FCPレイヤによって、FCPレイヤとストレージ・シェルフ・ルータ内のCPUとの間で共有されるメモリ1728へ転送される。CPUは、フレームの中に含まれたコマンドを処理するためフレームにアクセスする。たとえば、到着する書き込みコマンドが受け取られたとき、ストレージ・シェルフ・ルータのCPUは、ファームウェアルーチンの制御のもとで、コマンドがどのSATAドライブへ方向づけられているかを決定し、共有メモリに記憶されるコンテキストを書き込み動作のために確立する必要がある。CPUは、データを受け取るSATAドライブを準備し、イニシエータ、即ち一般的にはディスクアレイコントローラへ、FCP_XFER_RDYフレームを戻す必要がある。CPUによって準備され、共有メモリ内に記憶されたコンテキストは、FCPレイヤがCPUの介入なしに到着FCP_DATAメッセージを処理して、書き込み動作をストリームラインすることを可能にする。
ストレージ・シェルフ・ルータ内の様々な論理レイヤは、一般的に、逆方向で対称に機能する。ATAコマンドへの応答は、SATAポートレイヤ1722によって、SATAディスクドライブからSATAリンクを介して受け取られる。次に、SATAポートレイヤは、適切な信号およびメッセージを生成し、必要なときには、CPUに、ファームウェア制御のもとで適切なアクションおよび応答を実行させる。データがSATAディスクからリモートエンティティへ転送されるとき、読み出しコマンドに応答して、CPUは、共有メモリに記憶されてFCPレイヤによって処理される適切なキューエントリを生成する。FCPレイヤ内の状態機械は、共有メモリからFCフレームヘッダテンプレートを取得し、読み出しコマンドを関連づけられたバーチャルキュー1732〜1733からのデータ転送を手配し、FCフレームヘッダを準備し、FCフレームヘッダおよびSATAポートレイヤから受け取られたデータを、バーチャルキューを介してFCポートレイヤの出力FIFO1712および1713へ転送するように調整し、要求するリモートエンティティ、即ち一般的にはディスクアレイコントローラへ送信する。
図17Aは、ストレージ・シェルフ・ルータにおけるデータおよび制御フローの簡単な概要を提供することを意図したものである。ストレージ・シェルフ・ルータの内部コンポーネントを正確に描写することは意図されず、むしろFCP_CMNDおよびFCP_DATAフレームの受け取りおよび処理に関して論理レイヤの間の相互関係を示すことが意図される。たとえば、複数のバーチャルキューが図17AのGSMSレイヤの中に示される。しかし、バーチャルキューは、一般的に静的エンティティではなく、ストレージ・シェルフ・ルータの現在の状態に依存して、必要に応じてダイナミックに割り振られる。図17Aは、単一のSATAシリアル接続1724およびSATAディスクドライブ1726だけを示すが、前述したように、各々のストレージルータは、1つの実施形態において、16個の異なったSATAディスクドライブへ接続されてよい。
図17B〜図17Fは、本発明の1つの実施形態を表すストレージ・シェルフ・ルータを通るデータおよび制御情報のフローの詳細を提供する。図17B〜図17Fの説明において、簡潔を関心事として、同じコンポーネントを含む様々なペアで、双方のコンポーネントを具体的に参照することはしない。図面は、コンポーネントの完全な図解リストではなく、データおよび制御情報がストレージ・シェルフ・ルータの様々なコンポーネントをどのように移動するかを示すことが意図される。更に、様々なコンポーネントの数は、ストレージ・シェルフ・ルータの様々な異なる実施形態に依存して変更することができる。図17Bは、ストレージ・シェルフ・ルータ内のFCP_DATAフレームの初期フローを示す。FCP_DATAフレームは、最初にFCポート1736によって受け取られ、入力FIFO1737へ書き込まれ、そこから、十分なヘッダ情報が入力FIFOで利用可能になると、直ちにルータ論理1738によって処理を開始されてよい。処理は、FCP_DATAフレームの残りが入力FIFOへ書き込まれている間でも開始される。FCポートは、新しいフレームの到着をルータ論理へ知らせて、ルータ論理がフレームの処理を開始できるようにする。ルータ論理1738は、ルーティングテーブル1739を使用して、フレームがストレージ・シェルフ・ルータへ方向づけられているかどうか、またはフレームがリモートエンティティへ方向づけられているかどうかを決定する。もしFCP_DATAフレームがリモートエンティティへ方向づけられていれば、フレームは、リモートエンティティへ送信するためルータ論理によってFCポートへ方向づけられる。ルータは、更に、FCP_DATAフレームが所属するFC交換のためにコンテキストがCPUによって作成されて共有メモリへ記憶されたかどうかを決定するように、コンテキスト論理1740とインタフェースする。もしフレームのためのコンテキストが発見されるならば、ルータ論理は、フレームをFCPインバウンドシーケンスマネージャ(「FISM」)状態機械1741へ方向づける。もしコンテキストが発見されなければ、フレームは共有メモリへ方向づけられ、そこからCPUによって、ファームウェア制御のもとで、誤って受け取られたフレームとして抽出および処理される。
FISM1741は、FCPデータムーバ論理モジュール(「FDM」)1742からGSMSチャネルを要求する。FDM1742は、GSMS1744内のバーチャルキュー(「VQ」)1743にアクセスし、FISMを介してコンテキスト論理からVQを特徴づけるパラメータを受け取る。次に、FDMはフレーム内に含まれるデータをVQへ書き込み、そこからデータは、SATAディスクドライブへ送信されるように、FDMとVQへのアクセスを共有するSATAポートによって引き出される。注意すべきは、データがVQへ書き込まれ始めると、直ちにSATAポートはデータをディスクドライブへ転送し始めてよいことである。SATAポートは、データをディスクドライブへ送信し始める前に、データの全てが書き込まれるのを待つ必要はない。一度、データ転送動作を関連づけられたデータの全てがVQへ書き込まれると、FDMは、データが転送されたことをコンテキストマネージャへ知らせ、コンテキストマネージャは、完了キューマネージャ(「CQM」)1745が共有メモリ1747内の完了キュー1746へ完了メッセージ(「CMSG」)をキューにすることを要求する。CQMは、CPUデータムーバ(「CPUDM」)1748がCMSGを共有メモリへ書き込むことを要求する。
図17Cは、FC_CMNDフレーム、およびストレージ・シェルフ・ルータ内の誤りを関連づけられたフレームのフローを示す。前述したように、フレームはFCポート1736によって受け取られ、ルータ論理1738によって、ルーティングテーブル1739を参照してストレージ・シェルフ・ルータ内の様々なターゲットコンポーネントへ方向づけられる。FCP_CMNDフレームおよび誤りとして受け取られたFCフレームは、CPUによる抽出および処理のために共有メモリ1747へルーティングされる。ルーティングロジック1738は、フレームバッファキューマネージャ(「FBQM」)1760がフレームを共有メモリ1747へ書き込むように要求を出す。FBQMは、共有メモリ1750に記憶されたバッファポインタをCPUDM1748から受け取り、共有メモリ1747内のフレームバッファ1749へフレームを書き込む。注意すべきは、フレームがエラー処理のために共有メモリへ転送される幾つかの場合には、大きなフレームを収容するか複数のフレームを収容するため複数のフレームバッファが必要になる可能性があることである。最後に、ルータは、CQM1745がCMSGをCQ1746へ書き込むように要求する。CPUは、最終的にCMSGを処理し、CMSG内に含まれる情報を使用してフレームバッファ1749に記憶されたフレームにアクセスする。
図17Dは、1つのFCポートから他のFCポートへのFCフレームのフローを示す。第1のFCポート1736内の入力FIFO1737を介して受け取られたフレームが、ストレージルータへ方向づけられず、リモートエンティティへ方向づけられていることをルータ論理1736が決定する場合、ルータ論理は第2のFCポート1752内の出力FIFO1751へフレームを書き込み、フレームをリモートエンティティへ送信する。
図17Eは、ストレージ・シェルフ・ルータ内のCPUからSファブリック、FCアービトレーテッドループ、または他のFCファブリックへのデータおよび制御情報のフローを示す。CPUは、ファームウェアの制御のもとで、共有メモリ1747内の共有メモリキュー「SRQ」の中にエントリを記憶し、SRQエントリ(「SRE」)の存在を示すため、SRQを関連づけられたSRQプロデューサインデックスを更新する。SREは、CPUが、FCアービトレーテッドループまたは他のFCファブリックへ送信するために作成したシーケンスまたはフレーム、およびヘッダ並びにバッファへのポインタを記述する。SRQマネージャモジュール(「SRQM」)1755は、SRQプロデューサインデックスの更新を検出し、CPUDM1748を介して共有メモリ1747から次のSREをフェッチする。SRQMは、フェッチされたSREをSRQアービトレーションモジュール(「SRQ_ARB」)1756へ渡し、SRQ_ARB1756はアービトレーションスキーム、たとえばラウンドロビンスキームを実現して、複数のCPUによって生成されて複数のSRQに記憶されたSREの処理を確実にする。SRQ_ARBは、次のSREを受け取るSRQMを選択し、FCPアウトバウンドシーケンスマネージャ(「FOSM」)状態機械1757へSREを渡す。FOSMはSREを処理し、CPUDM1748を介して共有メモリ1747からFCヘッダテンプレートおよびフレームペイロードをフェッチする。FOSMは、共有メモリからCPUDMを介するFCヘッダテンプレートおよびフレームペイロードを使用してFCフレームを構成し、それをFCポート1736内の出力FIFO1758へ書き込む。FCフレームは、出力FIFO1758からFCアービトレーテッドループまたは他のFCファブリックへ送信される。フレームがFCポートへ転送されたとき、FOSMは、CMSGを共有メモリへ書き込むようにCQM1745へ命令する。
図17Fは、GSMSおよび共有メモリからFCアービトレーテッドループまたは他のFCファブリックへのデータおよび制御情報のフローを示す。このプロセスにおけるステップの多くは、図17Eを参照して説明したものと類似しており、簡潔を関心事として、再び説明しない。一般的に、FCフレームヘッダ内に記憶されたFCP_DATAフレームの制御部分は、図17Eを参照して説明した他のタイプのフレームの生成と同じような方法で生成される。しかし、FCP_DATAフレームの場合、GSMSを介してSATAポートから取得されたデータを制御情報と結合するため、プロセスをステージする必要がある。FOSM1757が、FCP_DATAフレームを記述するSREを受け取るとき、FOSMはFCP_DATAフレームヘッダを構成し、FDM1742を通るGSMSチャネルを介して、フレームへ組み込まれるデータを要求しなければならない。FDM1742は、GSMS1744内のVQ1759を介してデータを取得する。一度、データおよび制御情報がFOSMによってFCP_DATAフレームへ結合されると、フレームはFCポートへ渡され、FCP_DATAフレームがデータ転送動作の完了を表すとき、CMSGメッセージは、前述したようにCQへのキューにされる。
図18は、本発明の1つの実施形態を表すストレージ・シェルフ・ルータの論理コンポーネントの詳細なブロック図を示す。論理コンポーネントは、2つのFCポート1802および1804、ルーティングレイヤ1806、FCPレイヤ1808、GSMS1810、SATAポートレイヤ1812、およびCPUコンプレックスを含む。CPUコンプレックスは、図16および図17に関して前に説明したように、2つのCPU1814および1816を含む。図18の太い矢印、たとえば矢印1818で示される通信パスおよびリンクは、ストレージ・シェルフ・ルータ内のパフォーマンスクリティカルな通信路を表す。パフォーマンスクリティカルな通信路とは、FCフレームの受信と出力、受信されたフレームを処理して、SATAポートによってSATAディスクドライブへ送信される適切なATAコマンドを生成すること、受信されたFCP_DATAフレームからGSMSを介してSATAポートへデータをファネルすること、FCポートを介してFCアービトレーテッドループまたは他のFCファブリックへ送信するためのFCフレームを生成すること、およびGSMSを介してSATAポートから取得されたデータを出発FCP_DATAフレームへ組み込むことに関連した通信路である。パフォーマンスクリティカルでない通信路は、CPU1814および1816をストレージ・シェルフ・ルータの様々な論理コンポーネントと直接相互接続する様々なプログラムドI/Oインタフェースを含む。たとえば、中央アービトレーションスイッチ1820とGSMS、SLポートレイヤ、および内部バスブリッジ1822との間にPIOインタフェースが存在し、内部バスブリッジ1822は、17個のUARTポート1824、ICバスインタフェース1826、汎用PIOインタフェース(「GPIO」)1828、タイマコンポーネント1830、および幾つかの割り込みコントローラ1832と相互接続される。これらのPIOインタフェースは、図18では太くない双頭矢印1834〜1836として示される。更に、CPU1814および1816とフラッシュメモリコントローラ1840との間に、PIOインタフェース1838が存在し、フラッシュメモリコントローラ1840は、外部フラッシュメモリ1842へインタフェースする。外部フラッシュメモリは、特殊構成管理情報およびファームウェアイメージを記憶するために使用される。CPUは、メモリアクセスインタフェース1844を介して内部SRAMコントローラ1846へ接続され、内部SRAMコントローラ1846はSRAMメモリ1848とインタフェースする。SRAMメモリ1848は、ストレージ・シェルフ・ルータの内部およびそれらの間でフェイルオーバを命令するファームウェアルーチンを含む非パフォーマンスパスコードおよびデータを記憶する。CPU1814および1816は、プロセッサデータ空間としても使用される2つのデータ緊密結合メモリ1850および1852に含まれる共有メモリキューを介して、FCPレイヤ1808およびSATAポートレイヤ1812と相互接続される。各々のCPUは、更に、ファームウェア命令1854および1856を記憶する別々のメモリと相互接続される。最後に、双方のCPUは、単一のPIOチャネル1858を介して、双方のFCポート1802および1804、ルーティングレイヤ1806、およびFCPレイヤ1808に接続される。
図19は、FCポートレイヤの詳細な図を示す。FCポートレイヤは2つのFCポート1902および1904を含み、これらの各々は入力FIFO1906および1908並びに2つの出力FIFO1910〜1911および1912〜1913を含む。FCポートは、物理およびリンクレイヤ論理1914〜1917を含み、これらは一緒になって、FCアービトレーテッドループまたは他のFCファブリックからの到着シリアルデータを、入力FIFOへ渡されるFCフレームへ変換し、また出力FIFOへ書き込まれる出発FCフレームを、FCアービトレーテッドループまたは他のFCファブリックへ送信されるシリアルデータへ変換する。
図20は、ルーティングレイヤの詳細なブロック図を示す。図20で示されるように、ルーティングレイヤ2002は、FCポートの各々を処理する別々のルーティングロジック2004および2006を含む。ルーティングレイヤは、更に、到着するFCフレームを適切なキューへルーティングするために必要なルーティング決定を容易にするため、本質的に超高速アクセスのメモリであるレジスタに記憶されたルーティングテーブル2008を含む。注意すべきは、FCデータフレームが、前述したように、FISM2010および2012の制御のもとで、ルータによってFDM2011を介してGSMSレイヤ2015へ比較的直接にルーティングされ得ることである。ファームウェア処理を必要とするフレームは、FBQM2014および2016の制御のもとで、ルーティングレイヤによってCPUDM2017および2018を介して入力キューへルーティングされる。
図21は、FCPレイヤの詳細なブロック図を示す。図21に示されるこれらの内部コンポーネントの多くは前に説明されたか、以下のセクションで詳細に説明される。注意すべきは、一般的に、コンポーネントの重複したセットが存在することである。これらのコンポーネントは、一方では2つのFCポート1902および1904を処理し、他方では2つのCPU2102および2104を処理するように配列される。出発するフレームを生成するために必要な情報は、ファームウェア制御のもとでCPUによって生成され、共有メモリ2106および2108に記憶される。共有メモリ2106および2108の各々は、主として単一のCPUを関連づけられる。各々のメモリに記憶された情報は、送信のために2つのFCポート1902および1904へ渡されるFCフレームを生成するため、SRQM2110および2112、FOSM2114および2116、SRQ_ARBS2118および2120、CPUDM2122および2124、並びに他のコンポーネントの別々のセットによって処理される。各々のFCポートに到着するフレームは、別々のルータモジュール2004および2006、FISM2010および2012、並びに他のコンポーネントによって処理される。
図22は、SATAポートレイヤの詳細なブロック図を示す。SATAポートレイヤの主な目的は、SATAポートレイヤ、GSMS、およびFCPレイヤの間で共有されるタスクであるバーチャルキュー管理、およびGSMS並びに個々のSATAポートを介するFCPレイヤとのデータ交換である。
図23は、SATAポートの詳細なブロック図を示す。SATAポートは物理レイヤ2302、リンクレイヤ2304、およびトランスポートレイヤ2306を含み、これらは一緒になってSATAインタフェースを実現する。トランスポートレイヤは入力バッファ2308および出力バッファ2310を含み、これらのバッファは、相互接続されたSATAディスクから到着するデータ転送およびATAメッセージ情報の一部分を記憶し、またGSMSレイヤからのデータ転送およびインタフェースからCPUおよび共有メモリへ渡されるATAコマンドの一部分を記憶する。SATAポートに関する追加の詳細は、他のセクションで説明される。
ストレージ・シェルフ・ルータのルーティングレイヤ
図24は、4ストレージ・シェルフ・ルータ高可用性ストレージ・シェルフ内のルーティングトポロジの観念的表現を示す。この観念的表現は、以下の説明の有用なモデルおよびテンプレートである。図24で示されるように、各々のストレージ・シェルフ・ルータ2402〜2405は、1次リンクを介してn個のディスクドライブ、たとえばディスクドライブ2406へ接続される。前述したように、各々のストレージ・シェルフ・ルータは、2次リンクを介してn個のディスクドライブの隣接セットへ接続される。もっとも2次リンクは、簡単にするため、図24には示されない。1つのストレージ・シェルフ・ルータ2402は、第1のFCアービトレーテッドループまたはファブリックX2408と呼ばれる他のFCファブリックに関して、ストレージ・シェルフ・ルータの全体のセットのためのエンドポイントまたはFCノード接続点として働く。異なったストレージ・シェルフ・ルータ2405は、第2のFCアービトレーテッドループまたはファブリックYと呼ばれる他のFCファブリック2410へのエンドポイントまたはFCノード接続として働く。各々のストレージ・シェルフ・ルータは、2つのFCポート、即ち、XポートおよびYポート、たとえばストレージ・シェルフ2402内のXポート2412およびYポート2414を含む。4つのストレージ・シェルフ・ルータは、内部ポイントツーポイントFCリンク2416、2418、および2420に相互接続される。特定のストレージ・シェルフ・ルータ、たとえばストレージ・シェルフ・ルータ2404において、ファブリックXから到着するFCフレームは、Xポート2422上で受け取られ、ストレージ・シェルフ・ルータ2404によってファブリックXへ出力されるFCフレームは、Xポート2422を介して出力される。同様に、到着するFCフレームおよび出発するFCフレームが、それぞれYファブリックから受け取られると共にYファブリックへ方向づけられ、FCポート2424を介して入力および出力される。注意すべきは、XおよびYファブリックへの特定のFCポートの割り当てが構成可能であり、以下の例および例を参照する説明において、FCポート0はXファブリックポートであり、FCポート1はYポートであると仮定されるが、反対の割り当てが構成されてよいことである。
Sファブリック内で使用されて「Sビット」と呼ばれるFCフレームヘッダのDF_CTLフィールド内の2ビット予約サブフィールドによって識別されるSファブリック管理フレームは、XポートまたはYポートおよびポイントツーポイント内部FCリンクを介して、ストレージ・シェルフ・ルータ間で方向づけられる。各々のストレージ・シェルフ・ルータはルータ番号を割り当てられる。この番号は、ストレージ・シェルフ内で一意であり、管理フレームの中でFCフレームヘッダD_IDフィールドの一部分を形成する。ストレージ・シェルフ・ルータは、XおよびYファブリックの1つに関して、厳密に増加する順序で番号を付けられ、XおよびYファブリックの他のものに関して、厳密に減少する順序で番号を付けられる。たとえば、図24において、ストレージ・シェルフ・ルータ2402、2403、2404、および2405は、それぞれルータ番号1、2、3、および4を割り当てられ、したがってXファブリックに関して厳密に増加または上昇し、Yファブリックに関して厳密に減少または下降する。この順序づけは、この後で説明する詳細なフロー制御図で仮定されるが、前述したように、ファブリックとポートとの間の関係、およびポートへの上昇および下降順序は構成可能である。
図25は、ディスクアレイの2ストレージ・シェルフ実施形態である2ストレージ・シェルフ・ルータにおけるXおよびYのFCアービトレーテッドループ相互接続の観念的表現を示す。図25において、ディスクアレイコントローラ2502は、FCアービトレーテッドループX2504によって各々のストレージ・シェルフ2506および2508へリンクされ、FCアービトレーテッドループY2510によって双方のストレージ・シェルフ2506および2508へリンクされる。図25において、ストレージ・シェルフ・ルータ2512は、ストレージ・シェルフ2506のXファブリックエンドポイントとして働き、ストレージ・シェルフ・ルータ2514は、ストレージ・シェルフ2508のXファブリックエンドポイントとして働く。同様に、ストレージ・シェルフ・ルータ2516は、ストレージ・シェルフ2506のYファブリックエンドポイントとして働き、ストレージ・シェルフ・ルータ2518は、ストレージ・シェルフ2508のYファブリックエンドポイントとして働く。各々の個々のディスクドライブ、たとえばディスクドライブ2518は、XおよびYアービトレーテッドループの双方を介するディスクアレイコントローラ2502にアクセス可能である。双方のストレージ・シェルフにおいて、ストレージ・シェルフ・ルータは、単一のポイントツーポイントFCリンク2520および2522を介して内部的に相互接続され、その相互接続は、XおよびYファブリックフレームに加えて、内部的に生成され内部的に消費される管理フレームまたはSファブリックフレームを搬送することができる。ストレージ・シェルフ2506の内部ポイントツーポイントFCリンクはSファブリックと呼ばれ、ストレージ・シェルフ・ルータ2508の内部ポイントツーポイントFCリンクはSファブリックと呼ばれる。本質的に、内部ポイントツーポイントFCリンクはXファブリック、YファブリックのFCフレーム、および内部管理フレームを搬送するが、一度、XファブリックおよびYファブリックのフレームがエンドポイントストレージ・シェルフ・ルータを介してストレージ・シェルフ・ルータに入ると、それらは、エンドポイントストレージ・シェルフ・ルータのFCポートを介してXファブリックまたはYファブリックへ消費またはエクスポートされるまで、Sファブリックフレームと考えられる。
図26A〜図26Eは、本発明の1つの実施形態を表すストレージ・シェルフ内の特定のFCポートを介してFCフレームを特定のストレージ・シェルフ・ルータまたはリモートエンティティへルーティングするために使用されるFCフレームヘッダ内のデータフィールドを示す。FCフレームヘッダは、図3を参照して前に説明された。もちろん、FCヘッダは、ストレージ・シェルフ・ルータに相互接続されるディスクドライブではなくFCノードへフレームを方向づけるように設計される。ストレージ・シェルフ・ルータは、単一のFCノードを介してFCアービトレーテッドループまたは他のFCファブリックへインタフェースする。したがって、FCフレームを適切に方向づけるため、ストレージ・シェルフ内でストレージ・シェルフ・ルータおよびSATAディスクドライブ構成へFCフレームヘッダフィールドをマップすることが必要である。FCフレームヘッダ内の3バイトD_IDフィールドは、FCノードのノードアドレスを表す。FCアービトレーテッドループの場合、D_IDの高順位の2バイトは、一般的に非パブリックループとして「0」の値を有し、最低順位バイトは127個のノードの1つを指定するアービトレーテッドループ物理アドレス(「AL_PA」)を含む。一般的に、ディスクアレイコントローラのために少なくとも1つのノードアドレスが使用され、ファブリックアービトレーテッドループ(パブリックループ)アドレスのために他のノードアドレスが予約される。3バイトのS_IDフィールドは、フレームが発信されたノードのノードアドレスを含む。一般的に、S_IDフィールドはディスクアレイコントローラのノードアドレスである。もっとも、ストレージ・シェルフはFCファブリックへ直接相互接続されてよく、その場合、S_IDは、ストレージ・シェルフにアクセスする複数のリモートエンティティの完全な24ビットFCファブリックアドレスであってよい。
図26Aで示されるように、FCフレームヘッダ2606のDF_CTLフィールド2604内の2つの予約ビット2602は、ストレージ・シェルフ内、または言い換えれば、Sファブリック内で、記憶および送信されるフレームについて一種の方向表示または羅針盤2608として使用される。下記の表5は、この方向インディケータのエンコーディングを示す。

Figure 0004690202
ビットパターン「01」は、フレームがXファブリックフレームとしてSファブリックへ入ったことを示し、ビットパターン「10」は、フレームがYファブリックフレームとしてSファブリックへ入ったことを示し、ビットパターン「11」は、フレームがSファブリック管理フレームであることを示す。DF_CTLフィールドのビット18:19によって表されるこの方向インディケータ、または内部羅針盤が必要である理由は、Sファブリックおよび外部ファブリックフレームの双方が、単一のFCポートを介してストレージ・シェルフ・ルータによって受け取られてよいからである。前述したように、DF_CTLフィールドのビット18:19は、集合的に「Sビット」と呼ばれる。Sビットは、エンドポイントストレージ・シェルフ・ルータによってXファブリックまたはYファブリックのフレームが受け取られたときにセットされ、エンドポイントストレージ・シェルフ・ルータからXファブリックまたはYファブリックへFCフレームがエクスポートされる前にクリアされる。FCフレームヘッダのR_CTLフィールドは、FCフレームのタイプの表示を含む。タイプの表示には、FCP_CMND、FCP_DATA、FCP_XFER_RDY、およびFCP_RSPフレームの表示が含まれる。このフィールドは、フレームがどのように処理されるべきかを迅速に決定するためルーティングロジックによって使用される。
図26Bは、FCP_CMNDフレームのルーティングに関連するFCフレームヘッダフィールドを示す。D_IDフィールド2610は、FCフレームを特定のFCノードへ方向づけるが、前述したように、ストレージ・シェルフは、トランスペアレントモードで動作しているとき、複数のFCノードを含む可能性があり、トランスペアレントモードで動作していないとき、全て単一のD_IDを含むFCフレームを散在させる必要がある複数のデータストレージデバイスを含む可能性がある。ストレージ・シェルフ・ルータのルーティングロジックは、本質的に、D_ID、ストレージ・シェルフ、ストレージ・シェルフ・ルータ、および究極的に、ディスクドライブの間の様々なマッピング処理に充てられる。
ルーティングロジックは、D_IDフィールドの値だけから、FCフレームがストレージ・シェルフ・ルータへ方向づけられているかどうかを決定することはできない。D_IDが到着FC_CMNDフレームをストレージ・シェルフ・ルータへ方向づけているかどうかを決定するため、ルーティングロジックは、内部ルーティングテーブル2612および後で説明する幾つかのレジスタを調べて、ストレージ・シェルフ・ルータによって管理されるディスクドライブのアドレスをD_IDが表すかどうかを決定する必要がある。したがって、図26Bで示されるように、D_IDフィールドは、内部ルーティングテーブル2612に関して解釈されて、ストレージ・シェルフ2616内の特定のストレージ・シェルフ・ルータおよびストレージ・シェルフ・ルータに相互接続された特定のディスク2618を指定する。更に、ルーティングロジックは、後で説明する追加の内部テーブル2614を調べて、S_IDフィールド2611によって指定されたFCフレームの送信元が、ストレージ・シェルフ・ルータと一緒に現在ログインされたリモートエンティティであるかどうか、またリモートエンティティが、アドレスされたディスクドライブとの相互接続を識別されるかどうかを決定する。したがって、S_IDフィールドは、様々な内部テーブル2614に関して解釈されて、FC_CMNDフレームによって表されたコマンドが実行されるべきであるかどうかを決定する許可スイッチ2620として働く。
図26Cは、FCP_DATAフレームのルーティングに関連したFCフレームヘッダフィールドを示す。ストレージ・シェルフ2616内の特定のストレージ・シェルフ・ルータおよびストレージ・シェルフ・ルータに相互接続された特定のディスクを指定し、またディスクへのデータ転送を2620に許可するため、FCP_CMNDフレームのルーティングと同じように、D_IDおよびS_IDフィールド2610並びに2611および内部テーブル2612並びに2614が使用される。しかし、FCP_DATAフレームは、マルチFCP_DATAフレーム書き込みシーケンスの一部分である可能性があるので、一度、FC_DATAフレームがストレージ・シェルフ・ルータに対してローカルのディスクへ方向づけられていることをルーティングロジックが決定すると、ストレージ・シェルフ・ルータ内でFCP_DATAフレームを方向づけるためFCフレームヘッダ2606の追加フィールドが使用される。図26Cで示されるように、RX_IDフィールド2622は、FCP_DATAフレームを関連づけられた書き込みコマンドを指定したFCP_CMNDフレームの処理中に、ストレージ・シェルフ・ルータによって最初に生成された値を含み、この値は書き込みコマンドのためにコンテキスト2624を指定し、コンテキスト2624はバーチャルキュー2626を指定し、バーチャルキュー2626によって、データはFCPレイヤからGSMSを介してSATAポートレイヤへ転送され得る。更に、FCフレームヘッダ2606のパラメータフィールド2628はデータの相対オフセットを含み、この相対オフセットは、書き込みコマンドによって転送されたデータの順次の全長2632におけるFCP_DATAフレームに含まれるデータの位置2630を示す。コンテキスト2624は次のFCP_DATAフレームの予想相対オフセットを記憶する。予想相対オフセットを使用して、FCP_DATAフレームが適切な順序にあるかどうかをチェックすることができる。もし記憶された予想相対オフセットがパラメータフィールドの値とマッチすれば、FCP_DATAフレームは順序を外れて受け取られており、エラー処理を呼び出す必要がある。
図26Dは、内部的に生成された管理フレームのルーティングに関連するFCフレームヘッダフィールドを示す。Sビット(図26Aの2602)は、フレームが管理フレームであることを示す。管理フレームの場合、D_IDフィールド2610の最低順位バイトは、ストレージ・シェルフ内の特定のストレージ・シェルフ・ルータを指定するルータ番号を含む。D_IDフィールドに含まれるルータ番号は、この後で説明するレジスタ2634内に含まれるローカルルータ番号と比較される。それは、管理フレームがストレージ・シェルフ・ルータ、たとえばストレージ・シェルフ・ルータ2636へ方向づけられているかどうか、または管理フレームが、Xファブリック関連FCポート2638またはYファブリック関連FCポート2640を介してアクセス可能なストレージ・シェルフ内の他のストレージ・シェルフ・ルータへ方向づけられているかどうかを決定するためである。
最後に、図26Eは、受け取られたFCP_XFER_RDYおよびFCP_RSPフレームのルーティングに関連するFCフレームヘッダフィールドを示す。FCP_XFER_RDYおよびFCP_RSPフレームの場合、ルーティングロジックは、フレームが、他のストレージ・シェルフ・ルータによってリモートエンティティ、即ち典型的にはディスクアレイコントローラへ方向づけられていること即時に認識する。したがって、ルーティングロジックは、FCフレームヘッダのR_CTLフィールド2642を検査して、フレームをXファブリックまたはYファブリックへ戻さなければならないことを決定するだけでよい。
図27は、ルーティングロジックによるFCフレームのルーティングを容易にするためストレージ・シェルフ・ルータ内で維持される7つの主なルーティングテーブルを示す。これらのテーブルは、内部ルーティングテーブル(「IRT」)2702、XファブリックおよびYファブリック外部ルーティングテーブル(「ERT_X」)および(「ERT_Y」)2704および2706、XファブリックおよびYファブリックイニシエータ/ターゲットテーブル(「ITT_X」)および(「ITT_Y」)2708および2710、並びにXファブリックおよびYファブリックログインペアテーブル(「LPT_X」)および(「LTP_Y」)2712および2714を含む。これら7つのルーティングテーブルの各々は、インデックスおよびデータレジスタ、たとえばインデックスおよびデータレジスタ(「IRT_INDEX」)および(「IRT_DATA」)2716および2718を関連づけられる。テーブルの内容はCPUからアクセス可能である。そのアクセスは、テーブル内の特定のフィールドを示す値をインデックスレジスタの中へ書き込み、データレジスタからフィールドの内容を読み出すか、データレジスタの中へフィールドの新しい内容を書き込むことによって行われる。更に、3つのレジスタ「SFAR」2720、「XFAR」2722、および「YFAR」2724が存在し、これらのレジスタは、ルータ番号、およびXおよびYファブリックに関してストレージ・シェルフ・ルータドレスに対応するD_IDの高位2バイトを記憶するために使用される。これによって、IRT、ERT_X、およびERT_Yテーブルがコンパクトになり、これらのテーブルはD_IDの低順位バイトを記憶するだけでよい。
IRTテーブル2702は、ストレージ・シェルフ・ルータに接続された各々のディスクドライブ、言い換えれば、各々のローカルディスクドライブについて1つの行を含む。行は、ディスクドライブへ方向づけられたフレームのD_IDフィールドの低順位バイトに含まれるディスクドライブへ割り当てられたAL_PA、ディスクドライブのLUN番号、ディスクドライブに含まれる論理ブロックアドレスの範囲、2つのCPUのいずれがディスクドライブへ方向づけられたI/Oを管理するかを示すCPUフィールド、および行がテーブル内の有効エントリを表すかどうかを示す有効ビットを含む。有効ビットは、最大可能数よりも少ないディスクドライブがストレージ・シェルフ・ルータへ接続されているときに便利である。
ERT_XおよびERT_Yテーブル2704および2706は、ストレージ・シェルフ・ルータに対してローカルでなくストレージ・シェルフに対してローカルであるディスクドライブをアドレスする有効D_IDの低順位バイトを含む。これらのテーブルは、この後で説明するように、不必要な内部FCフレームの転送を短絡するために使用可能である。
XファブリックおよびYファブリックITTテーブル2708および2710は、ストレージ・シェルフ・ルータと一緒に現在ログインされてストレージ・シェルフ・ルータおよびストレージ・シェルフ・ルータへ相互接続されたディスクドライブとのFC交換をイニシエートできるリモートFC発信側に対応するフルS_IDを含む。ログインペアテーブル2712および2714は本質的に散在マトリックスであり、FCP交換のために現在ログインされているリモート発信側およびローカルディスクドライブのペアに対応するセルで、ビット値がオンである。したがって、ログインテーブル2712および2714は、リモートエンティティ、たとえばディスクアレイコントローラと、ストレージ・シェルフ・ルータへ相互接続されたローカルディスクドライブとの間で進行中の相互接続を表す有効ログインの表示を提供する。
次に、一連の詳細なフロー制御図を参照して、ストレージ・シェルフ・ルータのルーティングレイヤを構成するルーティングロジックを説明する。図28は、フロー制御図で使用される簡単なルーティングトポロジおよびルーティング行先の用語を提供する。図29〜図35は、ルーティングレイヤ論理を説明する一連の階層フロー制御図である。
図28で示されるように、ルーティングレイヤ2802は、FCポート2804および2806から到着するFCフレームを、FCポートへ直接戻すか、CPUで実行されているFCP論理およびファームウェアによって処理されるようにFCPレイヤ2810へ転送するか、コンテキストが確立されたデータフレームの場合には、GSMSレイヤへ比較的直接に転送することに関係する。ルーティングレイヤは、「From_FP0」および「From_FP1」と示されているようにFCポート内の入力FIFO2812および2814から到着するFCフレームを受け取る。ルーティングレイヤは、「To_FP0」および「To_FP0」と示されているようにFIFO2816および2818の1つへFCフレームを書き込むことによって、一般的にフレームが受け取られたポートとは反対のポートであるFCポートへ戻すようにFCフレームを方向づけることができる。ルーティングレイヤは、「To_GSMS」と呼ばれるプロセスとして、バーチャルキューを介してFCP_DATAフレームをGSMSレイヤへ比較的直接に転送し、「To_FCP」と呼ばれるプロセスとして、FCフレームをFCPレイヤ2810へ転送することができる。FIFOからの読み出しと書き込み、GSMSバーチャルキューメカニズムを介するデータ転送、およびCPUへの共有メモリインタフェースを介する状態機械媒介転送のプロセスを示す略記表示として、「From_FP0」、「From_FP1」、「To_FP0」、「To_FP1」、「To_GSMS」、および「To_FCP」の表示がフロー制御図で使用される。
図29は、ルーティングレイヤ論理を表す第1の最高レベルフロー制御図である。ルーティングレイヤ論理は、到着するFCフレームを適切の行先へ方向づけるために行われる意思決定のセットとして記述される。機能しているストレージルータにおいて、図29〜図35に関して説明されるルーティングロジックは、到着するFCフレームが処理されるときに呼び出される。ルーティングロジックは、ストレージ・シェルフ・ルータの状態機械および論理回路の中に存在する。ストレージ・シェルフ・ルータは、記憶転送データコピー型(store−and−foward, data−copying type)の内部データ転送をできるだけ避けるように設計され、フレームがFCポートのFIFOへ入力されているときでも、フレームヘッダ内の情報を使用してフレームをルーティングできるようにストリームライン化される。言い換えれば、FIFOから読み出すためフレームヘッダが入手されると、直ちにルーティングロジックが呼び出されてよく、FCポートによる残りのデータの受け取りと並行して、フレームがルーティングされ、フレーム内に含まれる初期データがその行先へ転送されてよい。ストレージ・シェルフ・ルータは、2つのFCポートの2つの異なった入力FIFOの公平処理を確実にするアービトレーション論理を含み、XファブリックおよびYファブリックの双方から到着するFCフレームは、タイムリーに処理され、XファブリックもYファブリックも、不必要なFCフレーム処理遅延または枯渇を経験しない。ルーティングロジックは、FCポートによって生成された信号によって呼び出される。この信号は、新しく到着したフレームヘッダがFIFOで利用可能であることを示す。
ステップ2902において、ルーティングレイヤ論理(「RLL」)は、「From_FP0」および「From_FP1」として示されるように、次に到着するFCフレームヘッダを、FCポートの入力FIFOの1つから読み出す。ステップ2904において、ルーティングレイヤ論理は、フレームヘッダを含むFCフレームがクラス3のFCフレームかどうかを決定する。クラス3のFCフレームのみが、ストレージ・シェルフ・ルータの説明された実施形態によってサポートされる。もしFCフレームがクラス3のFCフレームでなければ、ステップ2906で、FCフレームはエラー処理のためにTo_FCPとしてFCPレイヤへ方向づけられる。注意すべきは、このフロー制御図および後続のフロー制御図において、フロー矢印を関連づけられた小文字の「e」は、誤り状態を処理するために、フロー矢印によって表されたフローが起こることを示す。ステップ2904で決定されるように、もしFCフレームがクラス3のFCフレームであれば、次にRLLは、ステップ2908で、FCフレームを受け取らせたFCポートが、Sファブリックエンドポイント、または言い換えれば、XファブリックまたはYファブリックノードであるかどうかを決定する。ストレージ・シェルフ・ルータは、構成可能セッティングから、特定のポートが、Sファブリックに関するエンドポイント、または言い換えれば、XファブリックまたはYファブリックノードであるかどうかを決定することができる。FCフレームヘッダは、前述したように、送信元ポートのポートアドレスを含む。
もしFCフレームの送信元ポートがSファブリックエンドポイントであれば、これはFCフレームがローカルSファブリックの外部にあるエンティティから受け取られたことを示し、次にRLLは、ステップ2910で、FCフレームヘッダのDF_CTLフィールドでSビットのいずれかがセットされているかどうかを決定する。もしセットされていれば、誤りが起こっており、FCフレームは、ステップ2906におけるエラー処理のために、To_FCPとしてFCPレイヤへ方向づけられる。もしセットされていなければ、ステップ2912で、適切なSビットがセットされ、FCフレームがXファブリックまたはX空間またはYファブリックまたはY空間に所属するかどうかが示される。注意すべきは、ストレージ・シェルフ内の相互接続されたストレージ・シェルフ・ルータのセットにおけるストレージ・シェルフ・ルータの位置とは無関係に、2つのFCポートの一方がXファブリックに対応し、2つのFCポートの他方がYファブリックに対応することである。前述したように、FCポートとXおよびYファブリックとの間の関連づけは構成可能である。次に、RLLは、ステップ2914で、フレームがSファブリックフレームであることを示すようにSビットがセットされているかどうかを決定する。もしセットされていれば、フレームの行先を決定するためステップ2916でサブロジック「行先管理(management destination)」が呼び出され、その後で、ステップ2916で決定された行先へFCフレームを実際にルーティングするため、サブロジック「行先へのルーティング(route to destination)」がステップ2918で呼び出される。ステップ2914で決定されるように、もしFCフレームがSファブリック管理フレームでなければ、ステップ2920で、RLLは、トランスペアレントモードで現在動作しているかどうかを決定する。トランスペアレントモードは、各々のディスクドライブがそれ自身のFCノードアドレスを有するモードとして前に説明された。もしストレージ・シェルフ・ルータがトランスペアレントモードで動作していれば、フレームの行先を決定するためステップ2922でサブロジック「トランスペアレント行先(transparent destination)」が呼び出され、次にフレームを行先へ実際にルーティングするため、ステップ2918でサブロジック「行先へのルーティング」が呼び出される。そうでなければ、フレームの行先を決定するためステップ2924でサブロジック「行先(destination)」が呼び出され、その後で、ステップ2918のサブロジック「行先へのルーティング」の呼び出しを介して、フレームはその行先へルーティングされる。
図30は、図29のステップ2916から呼び出されるサブロジック「行先管理」のフロー制御図を示す。ステップ3002において、RLLは、FCフレームのヘッダのD_IDに記憶されたストレージ・シェルフ・ルータ番号が、ストレージ・シェルフ・ルータの番号に等しいかどうかを決定する。この決定は、ストレージ・シェルフ内のストレージ・シェルフ・ルータに割り当てられてSFARレジスタに記憶されたルータ番号を使用して行うことができる。ステップ3002で決定されるように、もしD_IDに含まれたルータ番号がSFARレジスタ内のルータ番号とマッチすれば、変数「行先(destination)」がステップ3004で値「To_FCP」へセットされる。この値は、フレームがFCPレイヤへ送られるべきことを示す。もしルータ番号がマッチしなければ、ステップ3006で、RLLは、FCフレームのD_ID内のルータ番号が、ストレージ・シェルフ・ルータのルータ番号よりも大きいかどうかを決定する。もしFCフレームのD_ID内のルータ番号がSFARレジスタに記憶されたストレージ・シェルフ・ルータの番号よりも大きければ、制御はステップ3008へ流れる。そうでなければ、制御はステップ3010へ流れる。ステップ3008および3010の双方において、RRLは、フレームがストレージ・シェルフ内のSファブリックエンドポイントに達したかどうかを決定する。もし達していれば、管理フレームは正しくアドレスされていないか、誤って適切な行先をフィールドに指定されず、したがって双方の場合、行先はステップ3004で「To_FCP」へセットされ、フレームは、誤って受け取られたフレームとしてCPUで処理される。しかし、ステップ3008および3010の双方において、もし現在のストレージ・シェルフ・ルータがSファブリックエンドポイントでなければ、D_ID内のルータ番号が現在のルータのルータ番号よりも小さい場合として、行先はステップ3012で「To_FP0」へセットされ、もしD_ID内のルータ番号が現在のストレージ・シェルフ・ルータのルータ番号よりも大きければ、ステップ3014で「To_FP1」へセットされる。再び注意すべきこととして、ストレージ・シェルフ内のストレージルータの数字識別はXファブリックに関して上昇順であり、Yファブリックに関して下降順である。
図31は、図29のステップ2924から呼び出されるサブロジック「行先」のフロー制御図を示す。このサブロジックは、ストレージ・シェルフ・ルータがトランスペアレントモードで動作していないとき、または言い換えれば、ストレージ・シェルフ・ルータが複数のディスクドライブをAL_PAへマップしているとき、FCフレームの行先を決定する。ステップ3102において、RLLはフレームがXFER_RDYであるかRSPフレームであるかを決定する。これらのフレームは、ディスクアレイコントローラへ戻される必要がある。もしそうであれば、RLLは、フレームがXファブリックに所属するかどうかをステップ3103で決定する。もしフレームがXファブリックに所属すれば、フレームをX FCポートへ方向づけるため、ステップ3104で変数「行先」が値「To_FP0」へセットされる。ステップ3103で決定されるように、もしフレームがYファブリックフレームであれば、フレームをY FCポートへ方向づけるため、ステップ3106で変数「行先」が「To_FP1」へセットされる。ステップ3102で決定されるように、もしフレームがFCP_XFAR_RDYまたはFCP_RSPフレームでなければ、ステップ3108で、RLLは、フレームがFCP_CMNDフレームであるかどうかを決定する。もしそうであれば、ステップ3110で、変数「行先」が「To_FCP」へセットされる。これは、フレームが、ストレージ・シェルフ・ルータに対してローカルであるLUNへ方向づけられたFCP_CMNDフレームであること、およびファームウェアで処理してFCPコマンドのコンテキストを確立するためフレームをFCPレイヤへ方向づける必要があることを示す。ステップ3108で決定されるように、もしフレームがFCP_CMNDフレームでなければ、ステップ3112で、RLLはフレームがFCP_DATAフレームであるかどうかを決定する。もしフレームがデータフレームでなければ、エラー処理を呼び出して、どのようなタイプのフレームが受け取られたか、またどのようにフレームを処理するかをファームウェアで決定するため、変数「行先」がステップ3114で「To_FCP」へセットされる。ステップ3112で決定されるように、もしフレームがFCP_DATAフレームであれば、ステップ3116で、RLLは、フレームが応答側によって送られたか、または発信側によって送られたかを決定する。もしフレームが発信側によって送られたのであれば、フレームをFCPレイヤ処理へ方向づけるため、ステップ3110で変数「行先」が「To_FCP」へセットされる。もしデータフレームが応答側によって送られたのであれば、ステップ3118で、RLLは、フレームがSファブリックの外から最初に受け取られたかどうか、またはフレームヘッダ内のSビット符号化ファブリック表示が、フレームが受け取られたポートとは反対のポートと一致しないかどうかを決定する。もしいずれかの条件が真であれば、フレームは誤って受け取られており、エラー処理のためにフレームをCPUへ方向づけるため、ステップ3114で変数「行先」が「To_FCP」へセットされる。そうでなければ、XポートまたはYポートへ方向づけるため、制御はステップ3103へ流れる。
図32は、図29のステップ2922から呼び出されるサブロジック「トランスペアレント行先」のフロー制御図を示す。このサブロジックは、ストレージ・シェルフ・ルータがトランスペアレントモードで動作しているときFCフレームの行先を決定する。トランスペアレントモードでは、各々のディスクドライブがそれ自身のAL_PAを有する。ステップ3202において、RLLは、FCフレーム内のヘッダのD_IDフィールドの高位2バイトが、フレームを受け取った送信元ポートに対応するXFARまたはYFARレジスタの内容と等しいかどうか、および、D_IDフィールドの低位バイトがIRTテーブルに含まれたAL_PAを含んで、AL_PAがローカルディスクドライブへ割り当てられたことを示すかどうかを決定する。もしそうであれば、FCフレームは現在のストレージ・シェルフ・ルータへ方向づけられた。そうでなければ、FCフレームは他のストレージ・シェルフまたはストレージ・シェルフ・ルータへ方向づけられる。FCフレームが現在のストレージ・シェルフ・ルータへ方向づけられる場合、ステップ3204で、RLLは、S_IDが適切なIITテーブルに含まれるS_IDに対応するかどうかをチェックし、もしS_IDが適切なITTテーブルの中に発見されるならば、更に適切なLPTテーブルをチェックして、FCフレームヘッダに含まれたS_IDを関連づけられたリモートエンティティが、フレームを方向づけられたディスクに関して現在ログインされているかどうかを調べることによって、FCフレームの発信側が、ストレージ・シェルフ・ルータに相互接続されたディスクドライブとFC交換を現在イニシエートできる外部FC発信側として識別されたリモートエンティティであるかどうかを決定する。ステップ3204で決定されるように、もし現在ログインされ、フレームが方向づけられたストレージ・シェルフ・ルータに相互接続されたディスクドライブとのFC交換に着手できるリモートエンティティをS_IDが表すならば、処理のためにフレームをFCPレイヤへ方向づけるため、ステップ3206で変数「行先」が「To_FCP」へセットされる。対照的に、もしS_IDが適切なIITテーブルの中にないか、FCフレームが方向づけられた送信元およびディスクドライブが、適切なLPTテーブルによって示されるように現在ログインされていなければ、エラー処理のためにフレームをFCPレイヤへ方向づけるため、ステップ3208で変数「行先」が「To_FCP」へセットされる。
ステップ3202で決定されるように、もしD_IDフィールドが適切なFARレジスタの内容とマッチしなければ、ステップ3210で、RLLは、フレームがXファブリックフレームであるかどうかを決定する。もしそうであれば、ステップ3212で、RLLは、フレームがストレージ・シェルフ内の他のストレージ・シェルフ・ルータへ方向づけられているかどうかを決定する。もし方向づけられていなければ、フレームを外部Xファブリックへ戻して他のストレージ・シェルフへ転送するため、ステップ3214で変数「行先」が「To_FP0」へセットされる。ステップ3212で決定されるように、もしフレームの行先が、ストレージ・シェルフ内の他のストレージ・シェルフ・ルータへ取り付けられたディスクドライブであることを示すエントリをERT_Xテーブルが含むならば、ステップ3216で、RLLは、現在のストレージ・シェルフ・ルータがYファブリックエンドポイントを表すかどうかを決定する。もし表すならば、フレームは正しく処理されておらず、Yファブリックへ送られることはできない。したがって、エラー処理のためにフレームをFCPレイヤへ方向づけることができるように、ステップ3208で、変数「行先」が値「To_FCP」へセットされる。そうでなければ、Sファブリックを介してストレージ・シェルフ内の後続のストレージ・シェルフ・ルータへフレームを転送するため、ステップ3218で、変数行先が「To_FP1」へセットされる。ステップ3210で決定されるように、もし受け取られたフレームがXファブリックフレームでなければ、ステップ3220で、RLLは、受け取られたフレームがYファブリックフレームであるかどうかを決定する。もしそうであれば、フレームはXファブリックフレームの処理と対称的および同等に処理され、ステップ3222が開始される。そうでなければ、エラー処理のためにフレームをFCPレイヤへ方向づけるため、ステップ3208で、変数「行先」が「To_FCP」へセットされる。
図33は、図29のステップ2918から呼び出されるサブロジック「行先へのルーティング」のフロー制御図を示す。このサブロジックは、受け取られたFCフレームを、前に呼び出された論理で決定された行先へ方向づける。ステップ3302において、RLLは、変数「行先」の値が「To_FP0」または「To_FP1」であるかどうかを決定する。もしそうであれば、同じステップで、RLLは、行先が、FCフレームを受け取ったポートとは反対のポートを関連づけられているかどうかを決定する。もしそうであれば、ステップ3304で、RLLは、変数「行先」の内容によって示された行先が、Sファブリックエンドポイントを表すポートを関連づけられたキューであるかどうかを決定する。もしそうであれば、ステップ3306で、ローカルのSファブリックからフレームを送信する前に、FCフレームヘッダのDF_CTLフィールド内にセットされたSビットがクリアされる。ステップ3308において、RLLは、フレームがXファブリックまたはYファブリックのどちらに所属するかを決定し、ステップ3310または3312で、適切な出力キューでフレームをキューにする。ステップ3302で示されるように、もし変数「行先」の内容がFP0またはFP1ポートを示さないか、行先が、FCフレームを受け取ったポートとは反対のポートでなければ、ステップ3314で、RLLは、フレームがFCポートの1つへ方向づけられるべきことを変数「行先」の内容が示すかどうかを決定する。もしフレームがFCポートの1つへ方向づけられるべきであれば、FCPレイヤによるエラー処理のために、ステップ3316で、フレームはFCPレイヤへ方向づけられる。ステップ3318でRLLによって決定されるように、フレームが「To_FCP」としてFCPレイヤへ方向づけられることを、もし変数「行先」の内容が示すならば、フレームはステップ3316でFCPレイヤへ方向づけられる。そうでなければ、ステップ3320で、RLLは、フレームがFCPフレームであることを、FCフレームヘッダのR_CTLフィールドが示すかどうかをチェックする。もし示さなければ、エラー処理のために、ステップ3316で、フレームはFCPレイヤへ方向づけられる。そうでなければ、ステップ3322で、RLLは、フレームがFCP_CMNDであるかどうかを決定する。もしそうであれば、ステップ3324でサブロジック「行先マップ」が呼び出され、その後のステップ3326で、RLLは、変数「行先」の内容が「To_FCP」と等しいかどうかを決定する。もし等しければ、フレームは、ステップ3316でFCPレイヤへ方向づけられる。他方では、ステップ3328で決定されるように、もし変数「行先」の内容が、2つのFCポートの1つへのフレーム転送を示し、FCポート行先が、フレームを受け取った同じFCポートであれば、エラー処理のために、ステップ3316で、フレームはFCPレイヤへ方向づけられる。そうでなければ、2つのFCPポートの1つへフレームをキューにするため、制御はステップ3304へ流れる。ステップ3322で決定されるように、もしフレームがFCP_CMNDフレームでなければ、ステップ3330で、サブロジック「他のルーティング」が呼び出される。
図34は、ステップ3324で呼び出されるサブロジック「行先マップ」のフロー制御図を示す。RLLは、最初にステップ3402で、LUN、LBA、またはLUNおよびLBAの組み合わせマッピングが、ストレージ・シェルフ・ルータによって現在実行されているかどうかを決定する。もし実行されていなければ、RLLは、ステップ3404で、ストレージ・シェルフ・ルータが、現在トランスペアレントモードで動作しているかどうかを決定する。もし動作していれば、変数「行先」の値が、ステップ3406で「To_FCP」へセットされる。ステップ3404で決定されるように、もしストレージ・シェルフ・ルータがトランスペアレントモードで動作していなければ、RLLは、ステップ3408で、フレームの送信元がフレームの行先とデータを交換するためログインされていることを、適切なLPTテーブルが示すかどうかを決定する。もしそうであれば、ステップ3406で、変数「行先」が「To_FCP」へセットされる。そうでなければ、エラー処理のためにフレームをCPUへ方向づけるため、ステップ3406で、行先も「To_FCP」へセットされる。もしLUN、LBA、またはLUNおよびLBAの組み合わせマッピングがストレージ・シェルフ・ルータによって実行されていれば、RLLは、ステップ3410で、指定された行先ディスクがIRTテーブル内に関連エントリを有するかどうかを決定する。もし有すれば、制御はステップ3404へ流れる。そうでなければ、ステップ3412で、RLLは、範囲のチェックが不能にされたかどうかを決定する。もし範囲のチェックが不能にされたのであれば、ステップ3414で、RLLは、フレームがFP0ポートで受け取られたかどうかを決定する。もしそうであれば、ステップ3416で、変数「行先」が「To_FP1」へセットされる。そうでなければ、ステップ3418で、変数「行先」の内容が「To_FP0」へセットされる。もし範囲のチェックが可能にされていれば、ステップ3420で、RLLは、指定された行先ディスクがFP0ポートを介してアクセス可能であるかどうかを決定する。もしアクセス可能であれば、制御はステップ3418へ流れる。そうでなければ、ステップ3422で、RLLは、指定された行先ディスクがFCポートFP1を介してアクセス可能であるかどうかを決定する。もしアクセス可能であれば、制御はステップ3416へ流れる。そうでなければ、エラー処理のため、ステップ3406で、変数「行先」が「To_FCP」へセットされる。最後のステップにおいて、ステップ3416または3418のいずれかで2つのFCポートの1つへマップされたフレームについて、RLLは、ステップ3424で、フレームを現在方向づけられたポートが、S空間エンドポイントであるかどうかを決定する。もしそうであれば、エラー処理のためにフレームをFCPへ方向づけるため、ステップ3406で、変数「行先」の値が「To_FCP」へセットされる。
図35は、図33のステップ3330のサブロジック「他のルーティング」のフロー制御図を示す。ステップ3502において、RLLは、現在のストレージ・シェルフ・ルータまたはそれに接続されたディスクドライブがフレームのFC応答側であることを、フレームのRX_IDフィールドが示すかどうかを決定する。もし示すならば、ステップ3504で、RLLは、フレームがFCP_DATAフレームであるかどうかを決定する。もしそうであれば、ステップ3506で、RLLは、フレームの有効なコンテキストが存在するかどうかを決定する。もし存在すれば、前述したように、SATAポートへデータを転送するため、ステップ3508で、フレームは「To_GSMS」のようにGSMSへ方向づけられる。そうでなければ、エラー処理のために、ステップ3510で、フレームはFCPレイヤへ方向づけられる。ステップ3502で決定されるように、もしFCフレームヘッダのRX_IDフィールドが、このストレージ・シェルフ・ルータをフレームのFC応答側として示さなければ、ステップ3512で、RLLは、FCフレームヘッダ内のRX_IDフィールドによって識別されたストレージ・シェルフ・ルータが、フレームを受け取ったポートとは反対のポートを介してアクセス可能であるかどうかを決定する。もし可能でなければ、フレームは、FCPレイヤによるエラー処理のために、キュー「To_FCP」へキューにされる。そうでなく、RX_IDが、フレームを受け取ったポートとは反対のポートからアクセス可能なストレージ・シェルフ・ルータを識別する場合、RLLは、ステップ3514で、そのポートがSファブリックエンドポイントであるかどうかを決定する。もしそうであれば、ステップ3516で、RLLは、FCフレームヘッダのDF_CTLフィールド内にセットされたS空間ビットを除去する。ステップ3518で、RLLは、XファブリックおよびYファブリックのどちらへフレームが所属するかを決定し、ステップ3520または3522で、フレームが所属するファブリックに適切なポートのFIFOへフレームを書き込む。
SCSIコマンド/ATAコマンドの変換
前述したように、本発明の1つの実施形態を表すストレージ・シェルフ・ルータは、ディスクアレイコントローラからストレージ・シェルフ・ルータへ方向づけられたFCP_CMNDフレームを、あたかもFCディスクドライブへ方向づけられたかのようにフィールドし、FCP_CMNDフレーム内のSCSIコマンドを1つ以上のATAコマンドへ変換し、これらのATAコマンドがSATAディスクドライブへ送信されて、SCSIコマンドが実行されるようにする。下記の表6は、ストレージ・シェルフ・ルータによって受け取られたSCSIコマンドと、SCSIコマンドを実行するために使用されるATAコマンドとの間の対応を示す。
Figure 0004690202
本発明は、特定の実施形態に関して説明されたが、この実施形態に限定されることは意図されない。本発明の趣旨の範囲内での修正は当業者に明らかであろう。たとえば、ほとんど無限数の異なった集積チップの設計および実施形態を使用して、ストレージ・シェルフ・ルータおよびパス・コントローラ・カードについて前に説明した機能を実現することができる。説明された実施形態は、ファイバチャネルファブリックに相互接続するストレージ・シェルフ・ルータに関連しているが、ストレージ・シェルフ・ルータは、代替的に、ストレージ・シェルフをディスクアレイコントローラおよび他の電子デバイスに相互接続するために使用される他のタイプの高帯域通信に相互接続するように設計されてよい。更に、代替の実施形態では、SATAディスクドライブに加えて、他のタイプの安価なディスクドライブが、ストレージ・シェルフ・ルータへ相互接続されるように、同じようにサポートされてよい。類似していないデータパケットフォーマット間の変換、コマンドのスイート、および異なった相互接続プロトコルの他の局面は、説明された実施形態で実行されたレイヤとは異なるレイヤで実行されてよい。説明されたストレージ・シェルフ・ルータにおいて、内部機能は一連の離散的論理コンポーネントとして説明された。これらの論理コンポーネントは、説明を明瞭にするため比較的恣意的に案出されたが、論理コンポーネントに対する内部論理の他のマッピングが可能である。高帯域通信メディアとディスクドライブまたは他のデータストレージデバイスとの間で通信メッセージのルーティングを達成するため、極めて多様な代替の内部リンク、プロセッサ、構成、および他の実施形態の詳細を設計することができる。ストレージ・シェルフ・ルータは、ディスクドライブ以外の他のタイプの大容量ストレージデバイスを電子デバイスコントローラへ相互接続するために使用されてよい。説明されたストレージ・シェルフ・ルータは、通常、8個のディスクドライブを処理し、フェイルオーバモードでは、16個のディスクドライブを処理することができるが、代替のストレージ・シェルフ・ルータは、より多くの1次および2次リンクを処理するように実現されてよい。同様に、説明されたストレージ・シェルフ・ルータは、高帯域通信メディアへの2つの別々のポートを含むが、ストレージ・シェルフにおけるストレージ・シェルフ・ルータ間の、より複雑な内部接続のために、追加のポートを含むことが望ましいであろう。
説明を目的としたこれまでの記述は、本発明の完全な理解を提供するため具体的な専門用語を使用した。しかし、本発明を実施するためには、具体的詳細は必要でないことが当業者に明らかであろう。他の場合には、周知の回路およびデバイスがブロック図形式で示されるが、これは根底の発明から注意力が不必要にそらされないようにするためである。このように、本発明の具体的実施形態のこれまでの記述は、例示および説明を目的として提供される。即ち、それらが全部を尽くしていること、または開示されたそのままの形式に限定されることは意図されない。これまでの教示を勘案して、明らかに多くの修正および変形が可能である。本発明の原理およびその実用的応用を最も良く説明し、それによって当技術分野に通じる他の者に、想定される特定の使用に適した様々な修正と共に本発明および様々な実施形態を最も良く利用させるため、実施形態が選択および説明された。本発明の範囲は、以下の請求項およびそれらの同等物によって限定されることが意図される。
FC相互接続トポロジの3つの異なったタイプを示す図である。 FC相互接続トポロジの3つの異なったタイプを示す図である。 FC相互接続トポロジの3つの異なったタイプを示す図である。 FCネットワークを介して転送されるデータが時間的に組織される非常に簡単な階層を示す図である。 標準FCフレームの内容を示す図である。 SCSIバスを含む普通のパーソナルコンピュータアーキテクチャのブロック図である。 SCSIバストポロジを示す図である。 読み出し並びに書き込みI/O動作のイニシエーションおよび実施形態に含まれるSCSIプロトコルを示す図である。 読み出し並びに書き込みI/O動作のイニシエーションおよび実施形態に含まれるSCSIプロトコルを示す図である。 読み出し並びに書き込みI/O動作のイニシエーションおよび実施形態に含まれるSCSIプロトコルを示す図である。 イニシエータとターゲットとの間で交換されるSCSIシーケンス、および図6A〜図6Cで示されるSCSIバス段階並びに状態へのFCプロトコルのマッピングを示す図である。 イニシエータとターゲットとの間で交換されるSCSIシーケンス、および図6A〜図6Cで示されるSCSIバス段階並びに状態へのFCプロトコルのマッピングを示す図である。 ディスクアレイ内でFCディスクを使用するときの幾つかの問題を示す図である。 ディスクアレイ内でFCディスクを使用するときの幾つかの問題を示す図である。 ディスクアレイ内でFCディスクを使用するときの幾つかの問題を示す図である。 ディスクアレイ内でFCディスクを使用するときの幾つかの問題を示す図である。 図8A〜図8Dで使用される図示慣例を使用して、本発明の1つの実施形態を表すストレージ・シェルフ・ルータを観念的に示す図である。 コンピュータおよびディスクアレイの階層的に相互接続されたシステムの中で、本発明の1つの実施形態を表すストレージ・シェルフ・ルータによって占められる位置を示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータを使用して実現されたストレージ・シェルフのコンポーネントの斜視図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータを使用して実現されたストレージ・シェルフのコンポーネントの斜視図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータを使用するストレージ・シェルフの実施形態を示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータを使用するストレージ・シェルフの実施形態を示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータを使用するストレージ・シェルフの実施形態を示す図である。 ATAディスクドライブをストレージ・シェルフ・ルータへ相互接続するのに適したパス・コントローラ・カードの実施形態を示す図である。 ATAディスクドライブをストレージ・シェルフ・ルータへ相互接続するのに適したパス・コントローラ・カードの実施形態を示す図である。 ストレージ・シェルフ・ルータの主要な機能コンポーネントを示す高レベルのブロック図である。 本発明の1つの実施形態を表す1つ以上のストレージ・シェルフ・ルータを組み込まれた高可用性ストレージ・シェルフによって提供される論理インタフェースを示す図である。 本発明の1つの実施形態を表す1つ以上のストレージ・シェルフ・ルータを組み込まれた高可用性ストレージ・シェルフによって提供される論理インタフェースを示す図である。 本発明の1つの実施形態を表す1つ以上のストレージ・シェルフ・ルータを組み込まれた高可用性ストレージ・シェルフによって提供される論理インタフェースを示す図である。 本発明の1つの実施形態を表す1つ以上のストレージ・シェルフ・ルータを組み込まれた高可用性ストレージ・シェルフによって提供される論理インタフェースを示す図である。 本発明の1つの実施形態を表す1つ以上のストレージ・シェルフ・ルータを組み込まれた高可用性ストレージ・シェルフによって提供される論理インタフェースを示す図である。 本発明の1つの実施形態を表す1つ以上のストレージ・シェルフ・ルータを組み込まれた高可用性ストレージ・シェルフによって提供される論理インタフェースを示す図である。 本発明の1つの実施形態を表す1つ以上のストレージ・シェルフ・ルータを組み込まれた高可用性ストレージ・シェルフによって提供される論理インタフェースを示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータを通過するデータおよび制御情報のフローを示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータを通過するデータおよび制御情報のフローを示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータを通過するデータおよび制御情報のフローを示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータを通過するデータおよび制御情報のフローを示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータを通過するデータおよび制御情報のフローを示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータを通過するデータおよび制御情報のフローを示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ・ルータの論理コンポーネントの詳細なブロック図である。 FCポートレイヤの詳細な図である。 ルーティングレイヤの詳細なブロック図である。 FCPレイヤの詳細なブロック図である。 SATAポートレイヤの詳細なブロック図である。 SATAポートの詳細なブロック図である。 4ストレージ・シェルフ・ルータ可用性ストレージ・シェルフ内のルーティングトポロジの観念的な図である。 ディスクアレイの2ストレージ・シェルフ・ルータおよび2ストレージ・シェルフ実施形態におけるXおよびY FCアービトレーテッドループ相互接続の観念的な図である。 本発明の1つの実施形態を表すストレージ・シェルフ内の特定のFCポートを介して特定のストレージ・シェルフ・ルータまたはリモートエンティティへFCフレームをルーティングするために使用されるFCフレームヘッダ内のデータフィールドを示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ内の特定のFCポートを介して特定のストレージ・シェルフ・ルータまたはリモートエンティティへFCフレームをルーティングするために使用されるFCフレームヘッダ内のデータフィールドを示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ内の特定のFCポートを介して特定のストレージ・シェルフ・ルータまたはリモートエンティティへFCフレームをルーティングするために使用されるFCフレームヘッダ内のデータフィールドを示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ内の特定のFCポートを介して特定のストレージ・シェルフ・ルータまたはリモートエンティティへFCフレームをルーティングするために使用されるFCフレームヘッダ内のデータフィールドを示す図である。 本発明の1つの実施形態を表すストレージ・シェルフ内の特定のFCポートを介して特定のストレージ・シェルフ・ルータまたはリモートエンティティへFCフレームをルーティングするために使用されるFCフレームヘッダ内のデータフィールドを示す図である。 ルーティングレイヤによるFCフレームのルーティングを容易にするため、ストレージ・シェルフ・ルータ内に維持される7つの主要なルーティングテーブルを示す図である。 簡単なルーティングトポロジ、およびフロー制御図で使用されるルーティング行先用語を提供する図である。 ルーティングレイヤの論理を記述する一連の階層フロー制御図である。 ルーティングレイヤの論理を記述する一連の階層フロー制御図である。 ルーティングレイヤの論理を記述する一連の階層フロー制御図である。 ルーティングレイヤの論理を記述する一連の階層フロー制御図である。 ルーティングレイヤの論理を記述する一連の階層フロー制御図である。 ルーティングレイヤの論理を記述する一連の階層フロー制御図である。 ルーティングレイヤの論理を記述する一連の階層フロー制御図である。

Claims (11)

  1. 2つの通信メディアへ相互接続された複数のデータ・ストレージ・デバイスを含むストレージ・シェルフ(1100)内で使用されるストレージ・シェルフ・ルータ (1018、1014、1500)の集積回路であって、
    第1の通信メディア・ポート(1502)と、
    第2の通信メディア・ポート(1504)とを備え、該第1および第2の通信メディア・ポートは、前記ストレージ・シェルフ・ルータが第1の通信方式の通信メディアからデータおよびコマンドを受け取り、該第1の通信方式の通信メディアにデータを送信するインタフェースを提供し、
    1つ以上のプロセッサ(1503)と、
    デバイス・リンク(1028、918)を介して前記複数のデータ・ストレージ・デバイスへデータおよびコマンドを送信する複数のデバイス・リンク・ポート(1512-1518)とを備え、該複数のデバイス・リンク・ポートのそれぞれは、ポートレイヤ(1722)を介して第2の通信方式の前記複数のデータ・ストレージ・デバイスとのインタフェースを提供し、
    前記第1および第2の通信メディア・ポートからそれぞれ受け取られたメッセージおよびコマンドを前記1つ以上のプロセッサへルーティングするルーティングロジック(1506, 1508、1708)を備え、
    前記ルーティングロジックは、前記第1および第2の通信メディア・ポートから受け取られたメッセージが、当該ストレージ・シェルフ・ルータ集積回路向けであるか、当該ストレージ・シェルフ・ルータ集積回路と相互通信する他のストレージ・シェルフ・ルータ集積回路(2403-2405)向けであるか、を少なくとも決定するロジック(1506)を含み、当該ストレージ・シェルフ・ルータ集積回路向けと決定された前記メッセージに関連するデータをグローバル共有メモリスイッチ(1510、1718)へ書き込むよう構成されており、
    前記複数のデータ・ストレージ・デバイスは、前記ポートレイヤを介して前記グローバル共有メモリスイッチ内のデータにアクセスするよう構成されている、
    ストレージ・シェルフ・ルータ集積回路。
  2. 前記第1および第2の通信メディア・ポートのそれぞれが先入れ先出しバッファを備え、前記通信メディア・ポートによって受け取られたコマンドおよびデータが前記先入れ先出しバッファへ書き込まれ、前記通信メディア・ポートによって受け取られたコマンドおよびデータが前記ルーティングロジックによって前記先入れ先出しバッファからアクセスされる、請求項1に記載のストレージ・シェルフ・ルータ集積回路。
  3. 前記第1および第2の通信メディア・ポートの一つがコマンドまたはデータの後の部分を前記先入れ先出しバッファへ書き込んでいる間に、前記ルーティングロジックが前記先入れ先出しバッファからコマンドまたはデータの始めの部分にアクセスする、請求項1に記載のストレージ・シェルフ・ルータ集積回路。
  4. 前記ルーティングロジックが前記第1および代2の通信メディア・ポートの一つによって受け取られたコマンドおよびデータを前記先入れ先出しバッファからアクセスし、該コマンドをストレージ・シェルフ・ルータ集積回路へ方向づけ、該ストレージ・シェルフ・ルータ集積回路が該コマンドを共有メモリへ書き込み、1つ以上の前記プロセッサが該共有メモリからコマンドをアクセスする、請求項1に記載のストレージ・シェルフ・ルータ集積回路。
  5. 前記ストレージ・シェルフ・ルータ集積回路が一意の番号を割り当てられ、前記第1の通信メディア・ポートおよび第1の通信メディアを介して第1のエンティティへリンクされ、前記第2の通信メディア・ポートおよび第2の通信メディアを介して第2のエンティティへリンクされ、
    前記第1のエンティティが、ストレージ・シェルフの外部にあるリモートデバイス、および割り当てられた一意の番号よりも小さい一意の番号を有するストレージ・シェルフ・ルータ集積回路うちの1つであり、
    前記第2のエンティティが、前記ストレージ・シェルフの外部にあるリモートデバイス、および前記割り当てられた一意の番号よりも大きい一意の番号を有する前記ストレージ・シェルフ・ルータ集積回路の1つである、
    請求項1に記載のストレージ・シェルフ・ルータ集積回路。
  6. 通信メディアへ相互接続された複数のデータ・ストレージ・デバイス(1108)を含むストレージ・シェルフ(1100)であって、
    請求項1に記載の第1および第2のストレージ・シェルフ・ルータ集積回路(1014、1018)とを有し、
    前記ストレージ・シェルフは、複数のパス・コントローラ・カード(図11の1110)を有し、前記パス・コントローラ・カードのそれぞれが、
    前記第1および第2のストレージ・シェルフ・ルータ集積回路のうちの一つの集積回路の前記デバイス・リンク・ポート(1512-1518)から前記デバイス・リンクを介して送信されたデータおよびコマンドを受け取り、前記デバイス・リンクまたは前記デバイス・リンク・ポート(1512-1518)が故障したときは、前記第1および第2のストレージ・シェルフ・ルータ集積回路のもう一つの集積回路の前記デバイス・リンク・ポート(1512-1518)の1つまたは複数から送信されるデータおよびコマンドを受け取り、受け取られた前記データおよびコマンドを前記データ・ストレージ・デバイスへ送信するよう構成されている、
    ストレージ・シェルフ。
  7. 前記ストレージ・シェルフが第1および第2の通信メディアに相互接続されており、複数の前記ストレージ・シェルフ・ルータ集積回路が第1の相互接続で相互に接続され、該第1の相互接続において、
    前記第1のストレージ・シェルフ・ルータ集積回路(2402)は、該集積回路の前記第1通信メディア・ポート(2412)を介して前記第1の通信メディアに接続され、該第1のストレージ・シェルフ・ルータ集積回路の前記第2通信メディア・ポート(2414)、前記第2のストレージ・シェルフ・ルータ集積回路(2405)の前記第1の通信メディア・ポート(ブロック2405のX)、および内部通信メディア(2416、2403、1418、2404、2420)を介して前記第2のストレージ・シェルフ・ルータ集積回路に接続されている、
    請求項6に記載のストレージ・シェルフ。
  8. 複数の前記ストレージ・シェルフ・ルータ集積回路が第2の相互接続で接続され、該第2の相互接続において、
    前記第2のストレージ・シェルフ・ルータ集積回路(2405)は、該集積回路の前記第2の通信メディア・ポート(ブロック2405のY)を介して前記第2の通信メディアに接続され、該第2のストレージ・シェルフ・ルータ集積回路の前記第1の通信メディア・ポート(ブロック2405のX)、前記第1のストレージ・シェルフ・ルータ集積回路(2402)の第2の通信メディア・ポート(2414)、および内部通信メディア(2416、2403、1418、2404、2420)を介して前記第1のストレージ・シェルフ・ルータ集積回路に接続されている、
    請求項7に記載のストレージ・シェルフ。
  9. 請求項1記載の構造を有するローカルのストレージ・シェルフ・ルータ集積回路(2402)に含まれるルーティング・ロジック・コンポーネント(1506、1508)であって、該ローカルのストレージ・シェルフ・ルータ集積回路は、コマンドおよびエラー処理コンポーネント(1503)、およびポートレイヤ(1722)を備え、前記ルーティング・ロジック・コンポーネントは、
    前記第1および第2の通信メディア・ポートから受け取られたメッセージが、前記ローカルのストレージ・シェルフ・ルータ集積回路へ方向づけられているのか、該ローカルのストレージ・シェルフ・ルータ集積回路と相互通信するリモートのストレージ・シェルフ・ルータ集積回路(2403-2405)へ方向づけられているのか、または前記ストレージ・シェルフ(2506)の外部にあるリモートエンティティ(2508)へ方向づけられているのかを決定するロジック(1506)と、
    前記メッセージが前記リモートのストレージ・シェルフ・ルータ集積回路へ方向づけられていると決定されたとき、前記メッセージを前記リモートのストレージ・シェルフ・ルータ集積回路へ転送するため、前記第1および第2の通信メディア・ポートの1つから受け取られた前記メッセージを前記第1および第2の通信メディア・ポートの1つへルーティングし、前記メッセージがストレージ・シェルフ(2506)の外部にあるリモートエンティティ(2508)へ方向づけられていると前記決定するロジックが決定したとき、前記ストレージ・シェルフの外部にある前記リモートエンティティへメッセージを転送するため、前記第1および第2の通信メディア・ポートの1つから受け取られたメッセージを前記第1および第2の通信メディア・ポートの1つへルーティングし、メッセージが前記ローカルのストレージ・シェルフ・ルータ集積回路へ方向づけられていると前記決定するロジックが決定したとき、前記第1および第2の通信メディア・ポートの1つから受け取られたメッセージを、前記コマンドおよびエラー処理コンポーネントの1つまたは前記ポートレイヤへルーティングする、ルーティングロジック(1506および1508)と
    を備えるルーティング・ロジック・コンポーネント。
  10. 前記ストレージ・シェルフ・ルータはルーティングテーブルを備え、該ルーティングテーブルは、前記ポートレイヤを介して前記ストレージ・シェルフ・ルータへ相互接続された複数のデータ・ストレージ・デバイスの各々について、該データ・ストレージ・デバイスに関連する第1の通信アドレス、前記データ・ストレージ・デバイスに関連する第2の通信アドレス、および前記データ・ストレージ・デバイスによってサポートされるデバイスアドレスを含んでおり、
    前記ストレージ・シェルフ・ルータは、一意の番号を割り当てられ、前記第1の通信メディア・ポートを介して第1のエンティティへリンクされ、前記第2の通信メディア・ポートを介して第2のエンティティへリンクされ、
    前記第1のエンティティが、前記ストレージ・シェルフの外部にあるリモートデバイス、および割り当てられた一意の番号よりも小さい一意の番号を有するストレージ・シェルフ・ルータのうちの1つであり、
    前記第2のエンティティが、前記ストレージ・シェルフの外部にあるリモートデバイス、および割り当てられた一意の番号よりも大きい一意の番号を有するストレージ・シェルフ・ルータのうちの1つである、
    請求項9に記載のルーティング・ロジック・コンポーネント。
  11. 前記第1の通信メディア・ポートを介して受け取られたコマンドメッセージにアクセスしたとき、
    前記コマンドメッセージ内の行先アドレスが前記ルーティングテーブル内の第1通信アドレスとマッチする場合、前記コマンドおよびエラー処理コンポーネントへコマンドメッセージをルーティングし、
    前記コマンドメッセージ内の行先アドレスが前記ルーティングテーブル内の第1通信アドレスとマッチせず、前記第2のエンティティがストレージ・シェルフの外部にあるリモートデバイスではない場合、前記第2のポートへコマンドメッセージをルーティングし、
    前記コマンドメッセージの行先アドレスが前記ルーティングテーブル内の第1通信アドレスとマッチせず、前記第2のエンティティがストレージ・シェルフの外部にあるリモートデバイスである場合、前記第1の通信メディア・ポートへコマンドメッセージをルーティングし、
    前記コマンドメッセージがエラー処理を必要とすることを決定したとき、前記コマンドおよびエラー処理コンポーネントへ前記コマンドメッセージをルーティングするよう構成された、
    請求項10に記載のルーティング・ロジック・コンポーネント。
JP2005518799A 2003-01-13 2004-01-13 高可用性大容量ストレージデバイスシェルフ Expired - Fee Related JP4690202B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US34183503A 2003-01-13 2003-01-13
US10/341,835 2003-01-13
US10/602,529 2003-06-23
US10/602,529 US7353321B2 (en) 2003-01-13 2003-06-23 Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves that may be incorporated within disk arrays
PCT/US2004/000771 WO2004063903A2 (en) 2003-01-13 2004-01-13 Storage- shelf router and path controller card

Publications (2)

Publication Number Publication Date
JP2006517699A JP2006517699A (ja) 2006-07-27
JP4690202B2 true JP4690202B2 (ja) 2011-06-01

Family

ID=32711596

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005518799A Expired - Fee Related JP4690202B2 (ja) 2003-01-13 2004-01-13 高可用性大容量ストレージデバイスシェルフ

Country Status (4)

Country Link
US (1) US7353321B2 (ja)
EP (1) EP1584022B1 (ja)
JP (1) JP4690202B2 (ja)
WO (1) WO2004063903A2 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6953392B2 (en) * 2001-01-05 2005-10-11 Asm Nutool, Inc. Integrated system for processing semiconductor wafers
US20040123027A1 (en) * 2002-10-03 2004-06-24 Workman Michael Lee Systems and methods of multiple access paths to single ported storage devices
AU2003290706A1 (en) * 2002-11-08 2004-06-03 Crossroads Systems, Inc. System and method for controlling access to media libraries
US8095704B2 (en) * 2003-01-13 2012-01-10 Sierra Logic Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves that may be incorporated within disk arrays
CN100440825C (zh) * 2003-01-28 2008-12-03 华为技术有限公司 数字传送网上不同的数据帧接入和传送的系统和方法
JP4651913B2 (ja) * 2003-02-17 2011-03-16 株式会社日立製作所 記憶装置システム
JP2004348464A (ja) * 2003-05-22 2004-12-09 Hitachi Ltd ストレージ装置、及び通信信号の整形回路
JP4060235B2 (ja) 2003-05-22 2008-03-12 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の制御方法
US7398345B2 (en) 2003-06-12 2008-07-08 Hewlett-Packard Development Company, L.P. Inter-integrated circuit bus router for providing increased security
US7010639B2 (en) * 2003-06-12 2006-03-07 Hewlett-Packard Development Company, L.P. Inter integrated circuit bus router for preventing communication to an unauthorized port
JP4156499B2 (ja) * 2003-11-28 2008-09-24 株式会社日立製作所 ディスクアレイ装置
GB2416912B8 (en) * 2003-12-16 2007-04-12 Hitachi Ltd Disk array system and interface converter
JP4497918B2 (ja) * 2003-12-25 2010-07-07 株式会社日立製作所 ストレージシステム
US20050169170A1 (en) * 2004-01-30 2005-08-04 Copan Systems, Inc. Space-efficient storage command and data routing system and method
GB2410578B (en) * 2004-02-02 2008-04-16 Surfkitchen Inc Routing system
JP4634049B2 (ja) 2004-02-04 2011-02-16 株式会社日立製作所 ディスクアレイ装置における異常通知制御
JP4441286B2 (ja) * 2004-02-10 2010-03-31 株式会社日立製作所 ストレージシステム
US7467238B2 (en) * 2004-02-10 2008-12-16 Hitachi, Ltd. Disk controller and storage system
JP4405277B2 (ja) * 2004-02-16 2010-01-27 株式会社日立製作所 ディスク制御装置
US20050228943A1 (en) * 2004-04-02 2005-10-13 Decenzo David P Multipath redundant storage system architecture and method
US7428613B1 (en) 2004-06-29 2008-09-23 Crossroads Systems, Inc. System and method for centralized partitioned library mapping
US7454565B1 (en) * 2004-06-29 2008-11-18 Crossroads Systems, Inc System and method for distributed partitioned library mapping
GB0419430D0 (en) * 2004-09-02 2004-10-06 Ibm Data communications apparatus
US7451291B2 (en) 2005-01-28 2008-11-11 Crossroads Systems, Inc. System and method for mode select handling for a partitioned media library
US7370173B2 (en) 2005-01-28 2008-05-06 Crossroads Systems, Inc. Method and system for presenting contiguous element addresses for a partitioned media library
US7971006B2 (en) * 2005-01-28 2011-06-28 Crossroads Systems, Inc. System and method for handling status commands directed to partitioned media library
US7853741B2 (en) * 2005-04-11 2010-12-14 Emulex Design & Manufacturing Corporation Tunneling SATA targets through fibre channel
US7788413B1 (en) 2005-04-29 2010-08-31 Crossroads Systems, Inc. Method and system for handling commands requesting movement of a data storage medium between physical media libraries
JP2007012000A (ja) 2005-07-04 2007-01-18 Hitachi Ltd 記憶制御装置及びストレージシステム
DE102005048582A1 (de) * 2005-10-06 2007-04-12 Robert Bosch Gmbh Teilnehmerschnittstelle zwischen einem Mikrocontroller und einem FlexRay-Kommunikationsbaustein, FlexRay-Teilnehmer und Verfahren zur Übertragung von Botschaften über eine solche Schnittstelle
US20070180145A1 (en) * 2006-01-27 2007-08-02 Cisco Technology, Inc. (A California Corporation) Pluggable transceiver module with encryption capability
JP5089901B2 (ja) * 2006-03-28 2012-12-05 株式会社日立製作所 記憶制御装置及び記憶制御装置の制御方法
US7600070B1 (en) * 2006-03-30 2009-10-06 Linnell Thomas E Disk drive packaging enclosure
JP4798024B2 (ja) * 2007-03-07 2011-10-19 船井電機株式会社 テレビジョン受像機、テレビジョン受信機
US8140796B2 (en) 2007-12-27 2012-03-20 Igt Serial advanced technology attachment write protection: mass storage data protection device
US8351785B2 (en) * 2008-04-21 2013-01-08 Futurewei Technologies, Inc. Gigabit passive optical network transmission convergence extension for next generation access
DE102009016742B4 (de) * 2009-04-09 2011-03-10 Technische Universität Braunschweig Carolo-Wilhelmina Mehrprozessor-Computersystem
US8255607B2 (en) * 2009-11-05 2012-08-28 Emulex Design & Manufacturing Corporation SAS expander-based SAS/SATA bridging
WO2012095892A1 (en) 2011-01-14 2012-07-19 Hitachi, Ltd. Storage apparatus and response time control method
US9241046B2 (en) * 2012-12-13 2016-01-19 Ca, Inc. Methods and systems for speeding up data recovery
US9430165B1 (en) * 2013-07-24 2016-08-30 Western Digital Technologies, Inc. Cold storage for data storage devices
WO2017046916A1 (ja) * 2015-09-17 2017-03-23 株式会社安川電機 産業機器の通信システム、通信方法、及び産業機器
WO2018101309A1 (ja) 2016-11-30 2018-06-07 大日本住友製薬株式会社 Wt1ヘルパーペプチド及びこれと癌抗原ペプチドコンジュゲート体との組合せ
WO2018181648A1 (ja) 2017-03-30 2018-10-04 大日本住友製薬株式会社 Wt1癌抗原ペプチドおよびこれを含むペプチドコンジュゲート体
CN106992830B (zh) * 2017-04-05 2018-07-27 中国科学院空间应用工程与技术中心 一种fc-ae-1553网络中的时钟同步方法
WO2019123458A1 (en) * 2017-12-24 2019-06-27 Technion Research & Development Foundation Limited Message authentication based on a physical location on a bus
CN108415862B (zh) * 2018-03-05 2021-06-01 青岛海信宽带多媒体技术有限公司 光模块的通道保存方法、装置及光模块
KR20210068060A (ko) 2018-09-28 2021-06-08 다이니뽄 스미토모 세이야쿠 가부시키가이샤 주사용 조성물
US11336509B2 (en) * 2018-10-31 2022-05-17 EMC IP Holding Company LLC Detecting single points of failure on a storage system
TW202200188A (zh) 2020-05-12 2022-01-01 日商大日本住友製藥股份有限公司 用以處置癌症之醫藥組合物
US11297006B1 (en) * 2020-06-03 2022-04-05 Cisco Technology, Inc. Use of virtual lanes to solve credit stall on target ports in FC SAN
CN111682886B (zh) * 2020-06-15 2021-06-08 北京国科天迅科技有限公司 一种采用同轴线缆进行数据传输的光纤航电网络系统

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03250322A (ja) * 1990-02-28 1991-11-08 Nec Corp 記憶装置
JPH04125716A (ja) * 1990-09-17 1992-04-27 Fujitsu Ltd 電源断診断システム
JPH07152491A (ja) * 1993-11-29 1995-06-16 Hitachi Ltd 仮想ディスクシステム
JPH08328760A (ja) * 1995-06-01 1996-12-13 Hitachi Ltd ディスクアレイ装置
JPH09506752A (ja) * 1994-03-22 1997-06-30 ケーブルトロン・システムズ・インコーポレーテッド ネットワーク層経路指定用分散型自律オブジェクト・アーキテクチャ
JPH09198308A (ja) * 1996-01-17 1997-07-31 Hitachi Ltd データ記憶システム
JP2000187622A (ja) * 1998-11-15 2000-07-04 Hewlett Packard Co <Hp> 複数デバイス筐体
JP2001034427A (ja) * 1999-07-23 2001-02-09 Fujitsu Ltd デバイス制御装置及び制御方法
WO2001042922A1 (en) * 1999-12-07 2001-06-14 Data Foundation, Inc. Scalable storage architecture
JP2001169232A (ja) * 1999-12-09 2001-06-22 Sony Corp 記録再生装置及び記録再生タイミングの調整方法
JP2001306414A (ja) * 2000-04-25 2001-11-02 Hitachi Ltd 記憶装置のリモートコピーシステム
JP2002014775A (ja) * 2000-05-19 2002-01-18 Internatl Business Mach Corp <Ibm> 自動化データストレージライブラリにおける高可用性ワークキューイング
WO2002065298A1 (en) * 2001-02-13 2002-08-22 Candera, Inc. Silicon-based storage virtualization server
JP2003510721A (ja) * 1999-09-29 2003-03-18 シリコン グラフィックス インコーポレイテッド マルチプロセッサノードコントローラ回路及び方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5337414A (en) * 1992-09-22 1994-08-09 Unisys Corporation Mass data storage and retrieval system
US5435482A (en) * 1994-02-04 1995-07-25 Lsi Logic Corporation Integrated circuit having a coplanar solder ball contact array
DE69604005T2 (de) * 1995-04-12 2000-04-06 Digital Equipment Corp RAID-Disk-Umhüllung mit ESD-Festigkeit
US5812754A (en) * 1996-09-18 1998-09-22 Silicon Graphics, Inc. Raid system with fibre channel arbitrated loop
JP3671595B2 (ja) * 1997-04-01 2005-07-13 株式会社日立製作所 複合計算機システムおよび複合i/oシステム
US5941972A (en) * 1997-12-31 1999-08-24 Crossroads Systems, Inc. Storage router and method for providing virtual local storage
US6054828A (en) * 1998-12-16 2000-04-25 Stmicroelectronics, N.V. Circuitry and methods for adjusting and switching the gain of a digital-to-analog converter in a disk drive
US6715034B1 (en) * 1999-12-13 2004-03-30 Network Appliance, Inc. Switching file system request in a mass storage system
US6658478B1 (en) * 2000-08-04 2003-12-02 3Pardata, Inc. Data storage system
US6862648B2 (en) * 2000-10-30 2005-03-01 Sun Microsystems, Inc. Interface emulation for storage devices
US7010715B2 (en) * 2001-01-25 2006-03-07 Marconi Intellectual Property (Ringfence), Inc. Redundant control architecture for a network device
US6757694B2 (en) * 2001-10-03 2004-06-29 International Business Machines Corporation System and method for logically assigning unique names to devices in a storage system
US7127798B1 (en) * 2003-04-04 2006-10-31 Network Appliance Inc. Method for converting disk drive storage enclosure into a standalone network storage system
DE10214700B4 (de) * 2002-04-03 2006-02-23 Advanced Micro Devices, Inc., Sunnyvale Kombinierter ATA/SATA-Controller als integrierter Schaltkreischip und dazugehöriges Verfahren zum Betreiben
US6820140B2 (en) * 2002-07-24 2004-11-16 Intel Corporation Method, system, and program for returning data to read requests received over a bus

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03250322A (ja) * 1990-02-28 1991-11-08 Nec Corp 記憶装置
JPH04125716A (ja) * 1990-09-17 1992-04-27 Fujitsu Ltd 電源断診断システム
JPH07152491A (ja) * 1993-11-29 1995-06-16 Hitachi Ltd 仮想ディスクシステム
JPH09506752A (ja) * 1994-03-22 1997-06-30 ケーブルトロン・システムズ・インコーポレーテッド ネットワーク層経路指定用分散型自律オブジェクト・アーキテクチャ
JPH08328760A (ja) * 1995-06-01 1996-12-13 Hitachi Ltd ディスクアレイ装置
JPH09198308A (ja) * 1996-01-17 1997-07-31 Hitachi Ltd データ記憶システム
JP2000187622A (ja) * 1998-11-15 2000-07-04 Hewlett Packard Co <Hp> 複数デバイス筐体
JP2001034427A (ja) * 1999-07-23 2001-02-09 Fujitsu Ltd デバイス制御装置及び制御方法
JP2003510721A (ja) * 1999-09-29 2003-03-18 シリコン グラフィックス インコーポレイテッド マルチプロセッサノードコントローラ回路及び方法
WO2001042922A1 (en) * 1999-12-07 2001-06-14 Data Foundation, Inc. Scalable storage architecture
JP2003516582A (ja) * 1999-12-07 2003-05-13 データ ファウンデイション、インコーポレイテッド スケーラブルな記憶アーキテクチャ
JP2001169232A (ja) * 1999-12-09 2001-06-22 Sony Corp 記録再生装置及び記録再生タイミングの調整方法
JP2001306414A (ja) * 2000-04-25 2001-11-02 Hitachi Ltd 記憶装置のリモートコピーシステム
JP2002014775A (ja) * 2000-05-19 2002-01-18 Internatl Business Mach Corp <Ibm> 自動化データストレージライブラリにおける高可用性ワークキューイング
WO2002065298A1 (en) * 2001-02-13 2002-08-22 Candera, Inc. Silicon-based storage virtualization server
JP2004523831A (ja) * 2001-02-13 2004-08-05 キャンデラ, インコーポレイテッド シリコンベースのストレージ仮想化サーバ

Also Published As

Publication number Publication date
WO2004063903A2 (en) 2004-07-29
WO2004063903A3 (en) 2004-12-02
US7353321B2 (en) 2008-04-01
EP1584022A2 (en) 2005-10-12
EP1584022B1 (en) 2014-12-24
US20040139260A1 (en) 2004-07-15
EP1584022A4 (en) 2008-11-19
JP2006517699A (ja) 2006-07-27

Similar Documents

Publication Publication Date Title
JP4690202B2 (ja) 高可用性大容量ストレージデバイスシェルフ
US7167929B2 (en) Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves that may be incorporated within disk arrays, and a storage-shelf-interface tunneling method and system
JP4871880B2 (ja) ストレージシェルフ・ルータ集積回路
JP4406431B2 (ja) 仮想ディスクをフォーマッティングするシステムおよび方法
KR101203251B1 (ko) 효율적인 큐 관리를 위한 방법 및 시스템
JP5047365B2 (ja) 割り当て単位に基づく仮想フォーマッティング法およびその方法を利用するデバイス
JP3666730B2 (ja) 複数デバイス筐体
JP5250031B2 (ja) 割り当て単位に基づく仮想フォーマッティング法および割り当て単位に基づく仮想フォーマッティング法を利用するデバイス
US8281084B2 (en) Method and interface for access to memory within a first electronic device by a second electronic device
US7080190B2 (en) Apparatus and method for providing transparent sharing of channel resources by multiple host machines
US20160021031A1 (en) Global shared memory switch

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071120

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080214

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090225

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090602

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100304

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20101207

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20101228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110125

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110217

R150 Certificate of patent or registration of utility model

Ref document number: 4690202

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140225

Year of fee payment: 3

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees