JP2007501987A - ストレージシェルフ・ルータ・インターフェイスのトンネリングシステムおよび方法 - Google Patents

ストレージシェルフ・ルータ・インターフェイスのトンネリングシステムおよび方法 Download PDF

Info

Publication number
JP2007501987A
JP2007501987A JP2006533821A JP2006533821A JP2007501987A JP 2007501987 A JP2007501987 A JP 2007501987A JP 2006533821 A JP2006533821 A JP 2006533821A JP 2006533821 A JP2006533821 A JP 2006533821A JP 2007501987 A JP2007501987 A JP 2007501987A
Authority
JP
Japan
Prior art keywords
storage shelf
command
frame
data
storage device
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.)
Granted
Application number
JP2006533821A
Other languages
English (en)
Other versions
JP4686463B2 (ja
Inventor
スタインメッツ、ジョゼフ・エイチ
コンペラ、マーシー
ウォークレイ、マシュー・ピー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sierra Logic Inc
Original Assignee
Sierra Logic Inc
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
Priority claimed from US10/602,529 external-priority patent/US7353321B2/en
Application filed by Sierra Logic Inc filed Critical Sierra Logic Inc
Publication of JP2007501987A publication Critical patent/JP2007501987A/ja
Application granted granted Critical
Publication of JP4686463B2 publication Critical patent/JP4686463B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • 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
    • 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
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Abstract

【課題】外部処理エンティティによる高可用性ストレージシェルフの内部コンポーネントへの直接アクセスを容易化する手法を提供する。
【解決手段】本発明は、ストレージシェルフ・ルータ・インターフェイスのトンネリングシステムを提供する。このシステムは、第1のプロトコルのコマンドを用いる第1の通信媒体によって、ストレージシェルフと相互接続された外部処理エンティティと、第2の通信媒体を介して大容量記憶デバイス用のプロトコルによってアクセスされる、ストレージシェルフ内の大容量記憶デバイスと、大容量記憶デバイスへの仮想インターフェイスを外部処理エンティティに提供して、さらに、前記外部処理エンティティによる前記大容量記憶デバイスへの直接アクセスを提供するストレージシェルフ・ルータと、を備える。
【選択図】図36A

Description

本発明は、多数の個別の大容量記憶デバイスにより構成されたディスクアレイ及びその他の大容量記憶デバイスに関し、特に、1台以上の付加的なストレージシェルフ・ルータ(storage-shelf router)と共に併用されるストレージシェルフ・ルータの集積回路型実施及びパスコントローラカード(path controller card)と、ディスクアレイ・コントローラのような外部処理エンティティが、ストレージシェルフ内のディスクドライブと、ディスクドライブ内並びにストレージシェルフ及びパスコントローラカード内に格納された種々のデータ構造に直接的にアクセスするためのトンネリング(tunneling)方法及びシステムに関する。
(関連出願の相互参照)
本願は、2003年1月23日に出願された第10/341835号出願の一部継続出願である2003年6月23日に出願された第10/602529号出願の一部継続出願である。
(背景技術)
ファイバチャネル(Fibre Channel:FC)は、コンピュータと周辺デバイスの複数の様々な組み合わせを相互接続するデータ通信ネットワークのアーキテクチャ及びプロトコルである。FCは、スモールコンピュータシステムインターフェイス(SCSI)プロトコルを含む種々の上位レベルプロトコルをサポートする。コンピュータ又は周辺デバイスは、FCポートと、銅線または光ファイバとを介してネットワークに連結される。FCポートは、トランシーバ及びインターフェイスコントローラを含み、FCポートを収容するコンピュータ周辺デバイスは「ホスト」と呼ばれる。FCポートは、ペリフェラルコンピュータインターフェイス(PCI)バスのようなローカルデータバスを介してホストとデータを交換する。インターフェイスコントローラは、ファイバチャネルと、FCポートが存在するコンピュータまたは周辺デバイスとの間で低レベルプロトコル交換を実施する。
コンピュータネットワーク内の遠隔のデータにアクセスする一般的な実例はクライアント/サーバアーキテクチャである。このアーキテクチャによれば、クライアントコンピュータはサーバコンピュータとの間でデータを読み書きするための要求を送信する。サーバコンピュータは、クライアントサーバがデータを読み書きする権限及び許可を与えられているかどうかをチェックし、要求された読出し(READ)動作又は書込み(WRITE)動作を特定の大容量記憶デバイスにマッピングし、書込み動作の場合にはクライアントコンピュータから大容量記憶デバイスへのデータの転送の際に仲介者として、又は、読出し動作の場合には大容量記憶デバイスからクライアントへのデータの転送の際に仲介者として機能することによって要求を処理する。
現時点で利用可能であり、かつ、以前に利用可能である一般的な通信ネットワークアーキテクチャにおいて、サーバコンピュータはローカルエリアネットワーク(LAN)を介してクライアントコンピュータと通信し、サーバコンピュータは、SCSIバスのようなローカルバスを介して複数の大容量記憶デバイスと通信する。このようなシステムにおいて、サーバは2個の異種通信媒体の間のブリッジに相当するので、サーバは、読出し又は書込み動作の結果として転送されたデータを記憶し、回送することが要求される。FCの出現によって、クライアントコンピュータ、サーバコンピュータ、及び大容量記憶デバイスはすべて、単一の通信媒体によって対称的に相互接続される。従来型のクライアント/サーバアーキテクチャは、上記のLAN及びSCSIネットワークで使用されるプロトコルと同じタイプのクライアント/サーバプロトコルを使用してFCに移植される。
高容量ディスクドライブを含むSCSIバス互換性大容量記憶デバイスは、特に、中規模及び大規模コンピュータシステムにおいて、広く利用可能であり、広く使用される。複数のFCベースシステムは、1台以上のFCポートと、ディスクドライブがFCレスポンダとして機能するために必要とされるロジックとがそれぞれに含まれるFC互換性ディスクドライブを利用する。パーソナルコンピュータ(PC)を含む小規模システムにおいて、統合ドライブエレクトロニクス(Integrated Drive Electronics:IDE)又はアドバンスト・テクノロジー・アタッチメント(Advanced Technology Attachment:ATA)ディスクドライブと呼ばれるディスクドライブの種々のファミリーが広く利用される。シリアルATAディスク(SATA)は、一般的に、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バスを介してシステムと相互接続される。
本発明は、FC技術、SCSI技術、及びIDE/ATA技術に関係する。以下に、各々を、3つの別個のサブセクションで、順番に記載する。これらの技術の一部又は全部に精通している当業者は、FCベースのディスクアレイを説明するこのセクションの最後のサブセクション、及びそのサブセクションの直後に続く発明の要約のセクションへ飛ばし読みすることを望むであろう。
ファイバチャネル
ファイバチャネル(FC)は、以下の表1Aおよび表1Bに掲載された規格文書を含む複数のANSI規格文書によって規定され、記載されている。
Figure 2007501987
Figure 2007501987
表1Aおよび表1Bに掲載された文書、及びファイバチャネルに関するさらなる情報は、以下のアドレス:“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種類の相互接続トポロジーのなかで最も単純な「ポイントツーポイントトポロジー(point-to-point topology)」と呼ばれる相互接続トポロジーを表す。図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_Portと呼ばれる。
図1Bは、「FC調停ループトポロジー(FC arbitrated loop topology)」と呼ばれる少し複雑なトポロジーを表す。図1Bは調停ループ内で相互接続された4台のノード110〜113を表す。電気的又は光学的バイナリデータにより構成される信号は、環状にループを周回してあるノードから次のノードへ転送される。あるノードの送信機はループ内の次のノードの受信機に直接接続され、たとえば、ノード111に関連した送信機114の場合、送信機114はノード112に関連した受信機115に直接接続される。二つのタイプのFCポートが調停ループ内でFCノードを相互接続するために使用される。調停ループで使用される最も一般的なタイプのポートは「NL_Port」と呼ばれる。「FL_Port」と呼ばれる特別のタイプのポートは、後述されるように、FC調停ループをFCファブリックトポロジーと相互接続するため使用される。1台のFL_Portだけが調停ループトポロジー内にアクティブに組み込まれる。調停ループトポロジーは、最大で127台までのアクティブFCポートを含み、付加的な非参加FCポートを含む。
FC調停ループトポロジーでは、ノードは、調停ループの制御を争い、すなわち、調停ループの制御を調停する。一般に、2台以上のノードが制御を争う場合、最小ポートアドレスを有するノードが制御を得る。全ノードが最終的には妥当な時間内に確実に制御を取得するため、公平性アルゴリズム(fairness algorithm)がノードによって実施される。ノードがループの制御を取得したとき、そのノードは調停ループ内の他のノードに対するチャネルを開くことが可能である。半二重チャネルでは、一方のノードがデータを送信し、他方のノードがデータを受信する。全二重チャネルでは、データは第1ノードによって送信され、第2ノードによって受信され、同時に、データが第2ノードによって送信され、第1ノードによって受信される。例えば、図1Bの調停ループにおいて、ノード111がノード113と全二重チャネルを開くならば、ノード111からノード113までそのチャネルを介して送信されるデータはノード112のNL_Port116を通り、ノード113によってノード111へ送信されるデータはノード110のNL_Port117を通る。
図1Cは、「FCファブリック(FC fabric)」と呼ばれる、最も一般的であり、かつ、最も複雑なFCトポロジーを表す。FCファブリックは、図1Cにおいて、4台のFCノード119〜122が接続された不揃いな形状の中心オブジェクト118によって表現される。FCノード119〜122内のN_Port123〜126はファブリック118内のF_Port127〜130に接続される。ファブリックは、電話システムと機能が類似したスイッチ型又はクロスポイントスイッチトポロジーである。データは、「ファブリッ・エレメント(fabric element)」と呼ばれるスイッチ又は交換機を介してF_Portの間でファブリックによって経路制御される。あるF_Portと別のF_Portとの間でファブリックを通る経路は複数存在する可能性がある。F_Portに関連したファブリック内でのデータのルーティング(routing、経路指定)とノードのアドレス指定(addressing)は、FCノード又はN_Portではなく、FCファブリックによって取り扱われる。
FCはシリアル通信媒体である。データは、非常に高い転送レートで同時に1ビットずつ転送される。図2は、FCネットワークを経由する転送のため、時間的に、データを組織化する非常に簡単な階層を示す。最下位概念レベルでは、データはデータビットのストリーム200であると考えられる。FCネットワークによってサポートされる最小のデータのユニット(すなわち、ひとまとまりのデータビット)は、FCポートによって8ビット文字として復号化された10ビット文字である。FCプリミティブは10ビットの文字又はバイトにより構成される。ある種のFCプリミティブは、FCポート間で交換される制御情報を搬送するため利用される。データ編成の次のレベル、すなわち、FCプロトコルに関する基本レベルはフレームである。7個のフレーム202〜208が図2に表されている。フレームは36バイト〜2148バイトにより構成され、デリミッタ、ヘッダ、オプショナルヘッダ、及び0〜2048バイトのデータを含む。第1のFCフレームは、例えば、水平方向の括弧201によって囲まれたデータビットのストリーム200のデータビットに対応する。FCプロトコルは、シーケンスと呼ばれる次の上位レベルの編成レベルを指定する。第1のシーケンス210及び第2のシーケンス212の一部分が図2に表されている。第1のシーケンス210は第1から第4までのフレーム202〜205により構成される。第2のシーケンス212は第5から第7までのフレーム206〜208と、図示されないさらなるフレームとにより構成される。FCプロトコルは、エクスチェンジ(exchange)と呼ばれる第3の編成レベルを指定する。エクスチェンジ214の一部分が図2に表されている。このエクスチェンジ214は、図2に表された少なくとも第1のシーケンス210及び第2のシーケンス212で構成される。このエクスチェンジは、或いは、第1から第7までのフレーム202〜208と、第2のシーケンス212及びエクスチェンジ214を構成するさらなるシーケンス内に収容された付加的なフレームとにより構成されているようにも見える。
FCは全二重データ伝送媒体である。フレーム及びシーケンスは、オリジネータ(originator)およびレスポンダの間、またはイニシエータ(initiator)およびターゲット(target)の間で両方向へ同時に送られる。エクスチェンジは、読出し入出力トランザクション又は書込み入出力トランザクションのような単一の入出力トランザクションの間に、オリジネータとレスポンダとの間で交換された全シーケンスとシーケンス内のフレームとを含む。FCプロトコルは、インターネットプロトコル(IP)、スモールコンピュータシステムインタフェース(SCSI)プロトコル、ハイパフォーマンスパラレルインターフェイス(HIPPI)、及びインテリジェントペリフェラルインターフェイス(IPI)を含む任意の個数の上位レベルデータ交換プロトコルに従ってデータを転送するように設計される。SCSIバスアーキテクチャは以下のサブセクションに記載され、このサブセクション及び残りのサブセクションにおける後続の議論の多くはFCプロトコル内に埋め込まれたSCSIプロトコルに重点を置く。SCSIプロトコルのファイバチャネルへの標準的な適応は、本明細書中では、以下では「FCP」として参照される。したがって、FCは、SCSIバス及びその他の周辺相互接続バスの特色であるマスタースレーブ型の通信パラダイム、並びに、インターネットを実現するために使用される通信プロトコルのような比較的開放型であり、組織化されていない通信プロトコルをサポート可能である。イニシエータ又はターゲットのSCSIバスアーキテクチャの概念は、FCPでは進展させられ、上記のように設計され、FC経由の伝送のためのSCSIコマンド及びデータ交換をカプセル化する。
図3は標準的なFCフレームの内容を表す。FCフレーム302は、5個の上位レベルセクション304、306、308、310及び312を備える。第1の上位レベルセクションは、フレーム開始(start-of-frame:SOF)デリミッタ304と呼ばれ、フレームの先頭にマークを付ける4バイトを備える。次の上位レベルセクションは、フレームヘッダ306と呼ばれ、アドレス指定情報、シーケンス情報、エクスチェンジ情報、及び種々の制御フラグを格納する24バイトを含む。フレームヘッダ314のより詳細な図は図3のFCフレームから拡張されて表示されている。宛先識別子(destination identifier:D_ID)、すなわち、DESTINATION_ID316は、フレームの宛先FCポートを示す24ビットのFCアドレスである。ソース識別子(source identifier:S_ID)、すなわち、SOURCE_ID318は、フレームを送信したFCポートを示す24ビットのアドレスである。オリジネータ識別子、すなわち、OX_ID320と、レスポンダ識別子322、すなわち、RX_IDは、オリジネータ及びレスポンダ、またはイニシエータおよびターゲットのFCポートに関してフレームが属するエクスチェンジを特定する32ビットのエクスチェンジ識別子を一体となって構成する。シーケンス識別子、すなわち、SEQ_ID324は、フレームが属するシーケンスを特定する。
次の上位レベルセクション308は、データ・ペイロードと呼ばれ、FCフレーム内に詰め込まれた実際のデータを格納する。データ・ペイロードは、データと、IP及びSCSIのような上位レベルプロトコルに従って転送されたカプセル化プロトコル情報とを格納する。図3は、SCSIプロトコルに準拠したデータ転送のため使用される4個の基本的なタイプのデータ・ペイロードのレイアウト326〜329を表す。これらのうちの第1のフォーマット326は、FCPコマンド(FCP_CMND)と呼ばれ、イニシエータからターゲットへSCSIコマンドを送信するため使用される。FCP論理ユニット番号(FCP_LUN)フィールド330は、ある種の実施において、特定のSCSI−バスアダプタ、SCSI−バスアダプタに関連したターゲットデバイス、及び指定されたターゲットSCSIデバイスと関連した論理デバイスに対応する論理ユニット番号(LUN)を指定する8バイトのアドレスを含み、一体としてFCP_CMNDのターゲットを表現する。別の実施では、FCP_LUNフィールド330は、SCSI−バスアダプタ、SCSI−バスアダプタに関連したターゲットデバイス、及び指定されたターゲットSCSIデバイスと関連した論理デバイスに対応するLUNを決定するためターゲットFCホストアダプタによって使用されるインデックス又は参照番号を格納する。SCSI読出し又は書込み入出力コマンドのような実際のSCSIコマンドは、16バイトフィールドのFCP_CDB332に格納される。
図3に表された第2のタイプのデータ・ペイロードのフォーマット327は、FCP転送準備完了(FCP_XFER_RDY)レイアウトと呼ばれる。このデータ・ペイロードフォーマットは、ターゲットがデータの受信又は送信を開始する準備を完了した旨のターゲットによるイニシエータへの通知として使用される。図3に表された第3のタイプのデータ・ペイロードのフォーマット328はFCPデータ(FCP_DATA)フォーマットである。FCP_DATAフォーマットは、SCSI入出力トランザクションの実行の結果として、SCSIデータ記憶デバイスから読出し、又は、SCSIデータ記憶デバイスへ書込みされている実際のデータを転送するため使用される。図3に表された最後のデータ・ペイロードのフォーマット329は、FCPレスポンス(FCP_RSP)レイアウトと呼ばれ、SCSI状態バイト334、並びに、その他のFCP状態情報を、入出力トランザクションの完了次第にターゲットからイニシエータへ逆に転送するため使用される。
SCSIバスアーキテクチャ
コンピュータバスは電気信号線の組であり、それを介してコンピュータコマンド及びデータがコンピュータシステムの処理コンポーネント、記憶コンポーネント、及び入出力(I/O)コンポーネントの間で伝送される。SCSI 入出力バスは、ハードディスクドライブ及びCD−ROMドライブのような大容量記憶デバイスをコンピュータシステムのメモリコンポーネント及び処理コンポーネントと相互接続するため最も広く利用され、かつ、人気のあるコンピュータバスである。SCSIバスアーキテクチャは、SCSI−1、SCSI−2及びSCSI−3の三つの主要な規格に規定されている。SCSI−1規格及びSCSI−2規格は、米国規格協会(ANSI)規格文書“X3.131−1986”及び“X3.131−1994”にそれぞれ公表されている。SCSI−3規格はANSI委員会によって現在開発中である。SCSIバスアーキテクチャの概要は非特許文献1に記載されている。
図4は、SCSIバスを含む一般的なパーソナルコンピュータ(PC)のブロック図である。PC400は、高速CPUバス406によってシステムコントローラ404に連結された中央処理ユニット又はプロセッサ(CPU)402を含む。システムコントローラは、次に、メモリバス410を介してシステムメモリコンポーネント408に連結される。システムコントローラ404は、さらに、低速の業界標準アーキテクチャ(ISA)バス414及びSCSIバス416と相互接続されたペリフェラルコンポーネント相互接続(PCI)バス412を介して種々の周辺デバイスに連結される。PCIバスのアーキテクチャは、非特許文献2に記載されている。相互接続されたCPUバス406、メモリバス410、PCIバス412及びISAバス414は、CPUがデータ及びコマンドを、コンピュータシステムに収容された種々の処理コンポーネント及びメモリコンポーネントと入出力デバイス(I/O device)と交換することを可能にさせる。一般に、ビデオディスプレイデバイス418のような非常に高速、かつ、高帯域幅の入出力デバイスはPCIバスに直接接続される。キーボード420及びポインティングデバイス(図示せず)のような低速入出力デバイス420はISAバス414に直接接続される。ISAバスはバスブリッジ・コンポーネント422を介してPCIバスと相互接続される。ハードディスク、フレキシブルディスクドライブ、CD−ROMドライブ及びテープドライブ424〜426のような大容量記憶デバイスはSCSIバス416に接続される。SCSIバスはSCSI−バスアダプタ430を介してPCIバス412と相互接続される。SCSI−バスアダプタ430は、Symboisの53C8xxSCSIプロセッサのファミリーから選択されたプロセッサのようなプロセッサコンポーネントを含み、標準的なPCIバスプロトコルを使用してPCIバス412とインターフェイスをとる。SCSI−バスアダプタ430は、部分的に後述されるSCSIバスプロトコルを使用してSCSIバス416とインターフェイスをとる。SCSI−バスアダプタ430は、SCSIバスに接続された各大容量記憶デバイス424〜426、又は、SCSIデバイス内に一般的に内蔵されたSCSIコントローラ(図示せず)とコマンド及びデータを交換する。SCSIコントローラは、SCSIバスを介してSCSIアダプタから受信したSCSIコマンドを解釈及び応答し、論理デバイスとインターフェイスをとり論理デバイスを制御することによりSCSIコマンドを実施するハードウェア/ファームウェアコンポーネントである。論理デバイスは、1台以上の物理デバイス、又は、1台以上の物理デバイスの一部分に対応する。物理デバイスは、ディスク、テープ及びCD−ROMドライブのようなデータ記憶デバイスを含む。
入出力コマンドと呼ばれる二つの重要なタイプのコマンドは、論理デバイスからのデータの読出しと論理デバイスへのデータの書込みをSCSIデバイスに命令する。入出力トランザクションは、コンピュータシステムの2台のコンポーネント間でのデータの交換であり、CPU402のような処理コンポーネントによって一般的に開始され、読出し入出力コマンド又は書込み入出力コマンドによって、部分的に、実施される。したがって、入出力トランザクションは、読出し入出力トランザクション及び書込み入出力トランザクションを含む。
SCSIバス416は、複数のデータビットを同時に伝送できるパラレルバスである。SCSIバスによって同時に伝送され得るデータビットの個数はバスの幅と呼ばれる。様々なタイプのSCSIバスは8ビット、16ビット及び32ビットの幅を有する。16ビット及び32ビットのSCSIバスはワイドSCSIバスと呼ばれる。
すべてのコンピュータバス及びプロセッサと同様に、SCSIバスは、演算とバス上のデータ転送の速度を決めるクロックによって制御される。SCSIバスの幅と、SCSIバスが動作するクロックレートとの組み合わせは、1秒当たりにSCSIバスを介して伝送されるバイト数、すなわち、SCSIバスの帯域幅を決める。様々なタイプのSCSIバスは毎秒2メガバイト(Mbyte)未満から毎秒40Mbyteまでに達し、今後は毎秒80Mbyteまで、おそらく毎秒160Mbyteまでの増加が計画されている帯域幅を有する。帯域幅の増加はSCSIバスの物理長の限界の増加に伴って起こる。
図5はSCSIバステクノロジーを示す。コンピュータシステム502、又は、その他のハードウェアシステムは、1台以上のSCSI−バスアダプタ504及び506を含む。SCSI−バスアダプタ、SCSI−バスアダプタが制御するSCSIバス、及びSCSIバスに取り付けられた周辺デバイスは、一体となってドメインを構成する。図5においてSCSI−バスアダプタ504は第1のドメイン508と関連付けられ、SCSI−バスアダプタ506は第2のドメインと関連付けられる。殆どの現行の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識別番号、すなわち、SCSI_IDを有する。慣例的に、SCSI−バスアダプタのSCSI_IDは7であり、SCSIバスに取り付けられたSCSIデバイスのSCSI_IDは、0から6まで、及び8から15まで変動する。SCSIデバイス513のようなSCSIデバイスは、各論理デバイスが1台以上の物理デバイスの一部分を構成する複数の論理デバイスとインターフェイスをとる。各論理デバイスは、論理デバイスを制御するSCSIデバイス毎に論理デバイスを一意に特定する論理ユニット番号(LUN)によって特定される。例えば、SCSIデバイス513は、それぞれ、0、1及び2のLUNを有する論理デバイス522〜524を制御する。SCSIの用語によれば、SCSIバス上で入出力コマンドを開始するデバイスはイニシエータ(initiator)と呼ばれ、SCSIバスを介して入出力コマンドを受信し、SCSIデバイスに入出力動作の実行を命令するSCSIデバイスはターゲット(target)と呼ばれる。
一般に、SCSI−バスアダプタ504及び506のようなSCSI−バスアダプタは、コマンドをターゲットデバイスへ送信することにより入出力動作を開始する。ターゲットデバイス513〜515及び516〜517は、SCSIバスから入出力コマンドを受信する。ターゲットデバイス513〜515及び516〜517は、次に、論理デバイスからデータを読み出し、そのデータを、SCSIバスを介して、イニシエータへ返送するために、又は、イニシエータからSCSIバスを介して受信されたデータを論理デバイスへ書き込むために制御する1台以上の論理デバイスとインターフェイスをとることにより、コマンドを実施する。最後に、ターゲットデバイス513〜515及び516〜517は、コマンドの実施の成功又は失敗を示す状態メッセージを用いてSCSIバスを介してイニシエータに応答する。
図6A〜6Cは、読出し及び書込み入出力動作の開始及び実施に関与するSCSIプロトコルを示す。読出し及び書込み入出力動作はSCSIデバイスによって実行される入出力動作の大半を構成する。SCSIバスによって相互接続された大容量記憶デバイスのシステムの動作の効率を最大化するための努力は、最も一般的には、読出し及び書込み入出力動作が実行される効率を最大化することへ向けられる。したがって、以下の議論では、種々のハードウェアデバイスのアーキテクチャ上の特色が読出し及び書込み動作に関して説明される。
図6Aは、SCSIイニシエータ、最も一般的にはSCSI−バスアダプタによるSCSIターゲット、最も一般的には1台以上の論理デバイスに関連したSCSIデバイスに内蔵されたSCSIコントローラへの読出し又は書込み入出力コマンドの送信を表す。読出し又は書込み入出力コマンドの送信は、SCSI入出力動作のコマンドフェーズと呼ばれる。図6Aは、中心垂直線606によってイニシエータ602のセクションとターゲット604のセクションに分割される。イニシエータセクションとターゲットセクションの両方は、SCSIバスの状態を記述する「状態」606及び608という名前が付けられた列と、イニシエータ及びターゲットのそれぞれに関連したSCSIバスイベントを記述する「イベント」610及び612という名前が付けられた列とを含む。入出力コマンドの送信に関与するバス状態及びバスイベントは、図6Aの上端から図6Aの下端まで時間順に並べられる。図6B〜6Cはこの上記のフォーマットに従う。
図6Aに示されたイニシエータSCSI−バスアダプタからターゲットSCSIデバイスへの入出力コマンドの送信は、ターゲットSCSIデバイスによる読出し又は書込み入出力動作を開始する。図4を参照すると、SCSI−バスアダプタ430は入出力トランザクションの一部として入出力動作を開始する。一般に、SCSI−バスアダプタ430は、PCIバス412、システムコントローラ404、及びCPUバス406を介して、SCSI−バスアダプタに読出し動作又は書込み動作のいずれかを実行することを命令するCPU402から読出し又は書込みコマンドを受信する。読出し動作の際、CPU402は、大容量記憶デバイス424〜426からデータを読み出し、そのデータをSCSIバス416、PCIバス412、システムコントローラ404、及びメモリバス410を介して、システムメモリ408内のあるロケーションへ転送することをSCSI−バスアダプタ430に命令する。書込み動作の際、CPU402は、システムメモリ408から、メモリバス410、システムコントローラ404、及びPCIバス412を介して、SCSI−バスアダプタ430にデータを転送することをシステムコントローラ404に命令し、SCSIバス416を介して、データが書き込まれる大容量記憶デバイス424〜426へデータを送信することをSCSI−バスアダプタ430に命令する。
図6Aは、現在SCSIデバイス上で伝送されているコマンド又はデータが存在しないことを示すバスフリー(BUS FREE)状態614のSCSIバスで始まる。イニシエータ、すなわち、SCSI−バスアダプタは、バスを調停(ARBITRATION)状態616とするためSCSIバスのBSY、D7及びSEL信号線をアサート(assert)する。この状態では、イニシエータは、デバイスのすべてにSCSIバス上でコマンドを送信する意図を知らせる。いかなる時点でも1台のデバイスだけがSCSIバスの動作を制御するので、調停が必要である。イニシエータがSCSIバスの制御を取得すると仮定するならば、イニシエータは、次に、SCSIバスを選択(SELECTION)状態618に入れるため、ATN信号線、及びターゲットSCSI_IDに対応するDX信号線をアサートする。イニシエータ又はターゲットは、上記の調停状態616から選択状態618への状態の変化のようなSCSIバス状態変化を実行するため、特定のシーケンスで種々のSCSI信号線をアサートし、ドロップさせる。これらのシーケンスは、特許文献1やANSI規格に記載されているので、これ以上の説明は行われない。
ターゲットがイニシエータによって選択されたことをターゲットが感知したとき、ターゲットは、入出力動作のコマンドフェーズを終了するためSCSIバスの制御620を引き受ける。ターゲットは、次に、メッセージアウト(MESSAGE OUT)状態622へ入るためにSCSI信号線を制御する。メッセージアウト状態で起こる最初のイベントにおいて、ターゲットはイニシエータから識別(IDENTIFY)メッセージ623を受信する。識別メッセージ623は、後に続くコマンドメッセージがアドレス指定されるLUNを特定する論理ユニット番号(LUN)フィールド624を含む。識別メッセージ623は、後に続く入出力コマンドをターゲットが実施する間にターゲットがSCSIバスとの接続を切断することを許可されたことをターゲットに知らせるために一般的にセットされるフラグ625をさらに含む。ターゲットは、次に、後続の入出力コマンドがどのようにキュー入れされるべきであるかをターゲットに知らせ、同時にターゲットにキュータグ627を供給するキュータグ(QUEUE TAG)メッセージ626を受信する。キュータグは入出力コマンドを特定するバイトである。SCSI−バスアダプタは、したがって、LUN毎に256通りの入出力コマンドを同時に管理可能である。イニシエータSCSI−バスアダプタのSCSI_IDと、ターゲットSCSIデバイスのSCSI_IDと、ターゲットLUNと、キュータグとの組み合わせは、一体として、SCSIバス内で後に続く入出力コマンドに対応する入出力動作を一意に特定するI_T_L_Qネクサス参照番号を構成する。次に、ターゲットデバイスはコマンド(COMMAND)状態628へ入るためにSCSIバス信号線を制御する。コマンド状態において、ターゲットはイニシエータからの入出力コマンド630を要求し受信する。入出力コマンド630は、実行されるべき特別なコマンド、この場合には、読出しコマンド又は書込みコマンドを特定するオペコード(opcode)632と、そのコマンドによって指定された読出し又は書込み動作の開始点である論理デバイスの論理ブロックを特定する論理ブロック番号636と、コマンドの実行中に読み出されるか又は書き込まれるブロック数を指定するデータ長638とを含む。
ターゲットが入出力コマンドを受信し処理したとき、ターゲットデバイスは、ターゲットデバイスが切断メッセージ642をイニシエータデバイスに返信するメッセージイン(MESSAGE IN)状態640へ入るためにSCSIバス信号線を制御する。ターゲットは、一般に、ターゲットはコマンドによって指定された読出し又は書込み動作のため論理デバイスに準備させるために論理デバイスと相互作用を開始するので、SCSIバスとの接続を切断する。ターゲットは、データを受信するバッファを準備する必要があり、ディスクドライブ又はCD−ROMドライブの場合、ターゲットデバイスは、読出し又は書込みコマンドの開始点として指定された適切なブロックにシーク(seek)することを論理デバイスに命令する。切断によって、ターゲットデバイスは、SCSI−バスアダプタとターゲットデバイスとの間の付加的なメッセージ、コマンド、又は、データの伝送のためSCSIバスを解放する。このようにして、複数の異なる入出力動作がSCSIバス上で同時に多重化される。最終的に、ターゲットデバイスはSCSIバスをバスフリー状態644へ戻すためにBSY信号線をドロップさせる。
ターゲットデバイスは、次に、読出し又は書込み動作のため論理デバイスを準備させる。論理デバイスがデータを読み出し又は書き込む準備を完了したとき、入出力動作のデータフェーズが続く。図6Bは、SCSI入出力動作のデータフェーズを示す。SCSIバスは最初にバスフリー状態646である。ターゲットデバイスは、読出し入出力コマンドに応答してデータを返送するか、又は、書込み入出力コマンドに応答してデータを受け取る準備が完了しているので、調停状態648へ入るためにSCSIバス信号線を制御する。ターゲットデバイスがSCSIバスの制御の調停に成功するならば、ターゲットデバイスは再選択(RESELECTION)状態650へ入るためにSCSIバス信号線を制御する。再選択状態は、図6Aの上記の議論で説明された選択状態に類似しているが、SCSI−バスアダプタの選択を行うのはターゲットデバイスであり、SCSI−バスアダプタが選択状態であるターゲットデバイスを選択するのではない。
ターゲットデバイスがSCSI−バスアダプタを選択すると、ターゲットデバイスはSCSIバスをメッセージイン状態652へ入れるためにSCSIバス信号線を操作する。メッセージイン状態では、ターゲットデバイスは、識別メッセージ654とキュータグメッセージ656の両方をSCSI−バスアダプタへ送信する。これらのメッセージは、図6Aに示されたイニシエータからターゲットへの入出力コマンドの伝送中にイニシエータによってターゲットデバイスへ送信された識別メッセージ及びキュータグメッセージと同じである。イニシエータは、読出し動作の場合にはターゲットからイニシエータへ続いてデータを送信するための入出力トランザクションを、或いは、書込み動作の場合にはイニシエータによって続いてデータが送信される入出力トランザクションを特定するために、I_T_L_Qネクサス参照番号(nexus reference number)と、イニシエータ及びターゲットデバイスのSCSI_IDの組み合わせと、ターゲットLUNと、キュータグメッセージに含まれるキュータグとを使用する。I_T_L_Qネクサス参照番号は、したがって、読出しの場合にターゲットデバイスからのデータを受信し、書込みの場合にターゲットデバイスへデータを送信する適切なバッファを見つけるために、SCSI−バスアダプタによって未解決の入出力コマンドのテーブルへのインデックスとして使用される入出力動作ハンドルである。
識別メッセージ及びキュータグメッセージを送信した後、ターゲットデバイスはデータ(DATA)状態658へ遷移するためにSCSI信号線を制御する。読出し入出力動作の場合、SCSIバスはデータ入力(DATA IN)状態へ遷移する。書込み入出力動作の場合、SCSIバスはデータ出力(DATA OUT)状態へ遷移する。SCSIバスがデータ状態である間に、ターゲットデバイスは、各SCSIバスクロックサイクル中に、データが送信される特別なSCSIの幅にビット数が一致するサイズを有するデータユニットを送信する。一般に、データの各ユニットの転送の一部として信号線ACK及び信号線REQを必要とするSCSIバス信号線ハンドシェイク(handshake)が存在する。読出し入出力コマンドの場合、例えば、ターゲットデバイスは、次のデータユニットをSCSIバスに置き、REQ信号線をアサートする。イニシエータは、REQ信号線のアサートを感知し、送信されたデータをSCSIバスから取り出し、データの受け取りを承認するためにACK信号線をアサートする。このタイプのデータ転送は非同期転送と呼ばれる。SCSIバスプロトコルは、ターゲットデバイスがイニシエータから最初の肯定応答(acknowledgement)を受信する前にある特定の個数のデータユニットを転送することをさらに許可する。同期転送と呼ばれるこの転送モードでは、最初のデータユニットの送信とその送信に対する肯定応答の受信との間の待ち時間(latency)は避けられる。データ送信中に、ターゲットデバイスは、セーブポインタ(SAVE POINTERS)メッセージ及びその後に続く切断メッセージをイニシエータへ送信し、次に、バスフリー状態へ入るようにSCSIバス信号線を制御することにより、データ送信を中断する。これは、ターゲットデバイスがさらなるデータを受信又は送信する前にそのターゲットデバイスが制御する論理デバイスと相互作用するために一時停止することを可能にさせる。SCSIバスから切断した後、ターゲットデバイスは、SCSIバスの制御を後で再び調停し、付加的な識別メッセージ及びキュータグメッセージをイニシエータへ送信するので、イニシエータはそのイニシエータが中断させられた時点でデータ受信又は転送を再開可能である。切断及び再接続660の一例は図6Bに表され、データ状態658を中断する。最終的に、入出力動作のすべてのデータが送信されたとき、ターゲットデバイスはメッセージイン状態662へ入るためにSCSI信号線を制御し、そのメッセージイン状態では、ターゲットデバイスが切断メッセージをイニシエータへ送信し、場合によってセーブポインタメッセージが切断メッセージよりも先行する。切断メッセージを送信した後、ターゲットデバイスは、SCSIバスがバスフリー状態664へ遷移するようにBSY信号線をドロップさせる。
図6Bに示されるように、入出力動作のためのデータの送信に続いて、ターゲットデバイスは、入出力動作の状態フェーズ中に状態をイニシエータへ返送する。図6Cは入出力動作の状態フェーズを示す。図6A〜6Bのように、SCSIバスは、バスフリー状態666から、図6Bのように、調停状態668、再選択状態670、及びメッセージイン状態672へ遷移する。メッセージイン状態672中のターゲットによるイニシエータへの識別メッセージ674及びキュータグメッセージ676の送信に続いて、ターゲットデバイスはステータス(STATUS)状態へ入るためにSCSIバス信号線を制御する。ステータス状態678では、ターゲットデバイスは、入出力コマンドが成功完了したかどうかを示すために単一の状態バイト684をイニシエータへ送信する。図6Cにおいて、成功完了に対応する状態バイト680は、0という状態コードで示され、ターゲットデバイスからイニシエータへ送信されることが表されている。状態バイトの送信に続いて、ターゲットデバイスは、次に、ターゲットデバイスがコマンド完了(COMMAND COMPLETE)メッセージ684をイニシエータへ送信するメッセージイン状態682へ入るためにSCSIバス信号線を制御する。この時点で、入出力動作が完了している。ターゲットデバイスは、次に、SCSIバスがバスフリー状態686へ戻るようにBSY信号線をドロップさせる。SCSI−バスアダプタは、この時点で、入出力コマンドの割当部分を終え、そのコマンドを実行するため割り付けられた内部リソースを解放し、完了メッセージ又は状態を、PCIバスを介して、CPUへ返送することが可能である。
SCSIプロトコルのFCPへのマッピング
図7A及び7Bは、図6A〜6Cに記載されたイニシエータ及びターゲットとSCSIバスフェーズ及び状態との間で交換されたFCPシーケンスのマッピングを示す。図7A〜7Bにおいて、ターゲットSCSIアダプタは、FCPホストアダプタと一緒にパッケージ化されていると仮定され、ターゲットSCSIアダプタはFCを介してイニシエータと通信可能であり、SCSIバスを介してターゲットSCSIデバイスと通信可能である。図7Aは、読出し入出力トランザクションに対するFCPシーケンスとSCSIフェーズ及び状態との間のマッピングを表す。トランザクションは、イニシエータがFCを介してFCPコマンド(FCP_CMND)702データ・ペイロードを含む単一フレームFCPシーケンスをターゲットSCSIアダプタへ送信するときに開始される。ターゲットSCSI−バスアダプタがFCPコマンドフレームを受信するとき、ターゲットSCSI−バスアダプタは、調停、再選択、メッセージアウト、コマンド及びメッセージインを含む図6Aに示されたコマンドフェーズ704のSCSI状態を移る。図6Aに示されるように、コマンドフェーズの終わりに、入出力トランザクションのターゲットであるSCSIデバイスは、SCSIバスを解放するためにSCSIバスとの接続を切断し、同時に、ターゲットSCSIデバイスはトランザクションを実行するために準備する。後で、ターゲットSCSIデバイスは、SCSIバス制御を再調停し、入出力トランザクションのデータフェーズ706を始める。この時点で、SCSI−バスアダプタは、データ伝送が現在進行可能であることを知らせるためにFCP転送準備完了(FCP_XFER_RDY)単一フレームシーケンス708をイニシエータへ返信する。読出し入出力トランザクションの場合に、FCP_XFER_RDY単一フレームシーケンスはオプションである。データフェーズが継続すると共に、ターゲットSCSIデバイスは、論理デバイスからデータを読み出し始め、SCSIバスを介してそのデータをターゲットSCSI−バスアダプタへ送信する。ターゲットSCSI−バスアダプタは、次に、ターゲットSCSIデバイスから受信されたデータを、入出力トランザクションに対応するエクスチェンジの第3のシーケンスを構成する複数のFCPデータ(FCP_DATA)フレームにパッケージ化し、これらのFCP_DATAフレームを、FCを介して、イニシエータへ返送する。すべてのデータが送信され、ターゲットSCSIデバイスがSCSIバスの制御を解放したとき、ターゲットSCSIデバイスは、次に、入出力トランザクション714の状態フェーズを開始するためにSCSIバスの制御を再び調停する。このフェーズにおいて、SCSIバスは、ターゲットSCSIデバイスからターゲットSCSI−バスアダプタへSCSI状態バイトを送信するために、図6Cに示されるように、バスフリー状態から、調停状態、再選択状態、メッセージイン状態、ステータス状態、メッセージイン状態、及びバスフリー状態を経由して遷移する。状態バイトを受信すると、ターゲットSCSI−バスアダプタは、状態バイトをFCPレスポンス(FCP_RSP)単一フレームシーケンス716にパッケージ化し、FCP_RSP単一フレームシーケンスを、FCを介して、イニシエータへ返信する。これは読出し入出力トランザクションを完了する。
多くのコンピュータシステムには、ターゲットFCホストアダプタとターゲットSCSI−バスアダプタとの間に、PCIバスのような付加的な内部コンピュータバスがある。換言すれば、FCホストアダプタ及びSCSIアダプタは単一のターゲットコンポーネントに一緒にパッケージ化されない。簡易化するために、その付加的な相互接続は図7A〜Bには表されていない。
図7Bは、図7Aと類似した形式で、FCPコマンドフレーム718によって示された書込み入出力トランザクション中のFCPシーケンスとSCSIバスフェーズ及び状態との間のマッピングを表す。図7Bが図7Aと相違するのは、書込みトランザクション中に、FCP_DATAフレーム722〜725がイニシエータからFCを介して送信され、ターゲットからイニシエータへ送信されるFCP_XFER_RDY単一フレームシーケンス720が、読出し入出力動作の場合のようにオプションではなく、不可欠であるという点だけである。図7Aと同様に、書込み入出力トランザクションは、ターゲットがFCP_RSP単一フレームシーケンス720をイニシエータへ返送するときを含む。
IDE/ATAディスクドライブ
IDE/ATAドライブは、ディスクロジックコントローラとハードディスクを一体的に単一のモジュールとして統合するために開発された。IDE/ATAドライブは、ISAバスを用いてPCシステムに容易に統合するため特に設計された。当初、IDE/ATAドライブは、システム又はバスクロックによって制御された離散的な時間間隔でIDE/ATAドライブとシステムとの間で2バイトのデータを交換できるようにするためパラレル16ビット相互接続を用いて設計された。残念ながら、パラレルバス相互接続は性能限界に到達し、現行のデータレートは100〜133MB/秒であり、40〜80ピンのリボンケーブル接続は、もはや最新コンピュータシステム内の内部コンポーネントの余裕のない高密度パッケージングとの互換性がない。これらの理由のため、SATA規格が開発され、80ピンのリボンケーブル(ribbon cable)接続が4導体シリアルケーブルで置き換えられたSATAディスクドライブがこれまでのところ生産されている。SATAディスクの初期データレートは150MB/秒であり、直ぐに300MB/秒まで増加し、その後、600MB/秒まで増加することが予想される。標準的な8B/10B符号化が、ATAシリアルディスクドライブと周辺コンポーネント相互接続(peripheral component interconnect:PCI)に基づくコントローラとの間で転送するデータを直列化するため使用される。残念ながら、様々な入出力コントローラを統合し、周辺デバイス及びバスへのインターフェイスを提供し、1台以上のCPUとメモリを連結する第2のブリッジとの間でデータを転送するサウスブリッジ(Southbridge)コントローラは、SATAデバイスの直接的な相互接続を提供するためにSATAテクノロジーを完全に組み込むよう設計される。
ATAインターフェイス、特に、ATA−5及びATA−6の標準的なインターフェイスは、外部プロセッサ又は論理コントローラが基本的なデータ転送コマンド、シーク、キャッシュ管理、並びに、その他の管理及び診断関連タスクを実行することをATAディスクドライブ内の論理コントローラに命令することを可能にさせる多種多様なコマンドをサポートする。以下の表2は、プロトコル「1」のようなプロトコル番号を一般的なタイプのATAコマンドと関係付ける。コマンドのタイプには、プログラムド入出力(PIO)、非データコマンド、及びダイレクトメモリアクセス(DMA)コマンドが含まれる。
Figure 2007501987
以下に記載された表3は、複数のATAコマンドを、上記の表2に定義されたようなそのコマンドが属するコマンドタイプを含む対応するプロトコルと共に列挙する。
Figure 2007501987
パワーモードチェックコマンドは、ホストがATAデバイスの現在のパワーモードを決定することを可能にさせる。マイクロコードダウンロードコマンドは、ホストがATAデバイスのマイクロコードを変更することを可能にさせる。エグゼクティブデバイス診断コマンドは、ホストがATAデバイスによって実施される診断テストを呼び出すことを可能にさせる。フラッシュキャッシュコマンドは、ATAデバイスがその書込みキャッシュをフラッシュすることをホストに要求させる。このコマンドの二つのバージョンがテーブルに収容され、拡張版はATA−6標準インターフェイスをサポートするデバイス上で48ビットのアドレス指定機能が利用できることを表す。表3に表すコマンドをさらに詳しくしたものは、別個に下記しない。デバイス識別コマンドは、ホストがATAデバイスに、そのデバイスによって与えられる論理セクタ数、シリンダ数及びヘッド数と、デバイスによってサポートされるコマンドと、デバイスによってサポートされる機能と、その他のパラメータとを含むパラメータ情報を問い合わせることを可能にさせる。DMA読出しコマンドは、ホストが、一般的に大量のデータに対して非常に効率的であるDMAデータ転送プロトコルを使用してデバイスからデータを読み出すことを可能にさせる。セクタ検証読出し(READ VERIFY SECTORS)コマンドは、ホストがホスト内に格納されたデータの一部分を読み出すようATAデバイスに命令し、デバイスから読み出されたデータをホストへ転送せずにエラー条件が発生したかどうかを決定することを可能にさせる。シーク(SEEK)コマンドは、ホストが後のコマンドで1個以上の特殊な論理ブロックにアクセスできることをATAデバイスに通知し、指定された1個以上の論理ブロックへの後のアクセスを実行するために、デバイスがヘッド位置決めを最適化することを可能にする。フィーチャー設定(SET FEATURES)コマンドは、ホストが、ATAデバイス内の種々のパラメータを、そのデバイスによって提供される機能のオンとオフを切り換えるために修正することを可能にさせる。スリープコマンドは、ホストがATAデバイスに対して、スピンダウンし、後のリセットコマンドを待つことを命令することを可能にさせる。DMA書込みコマンドは、ホストが、一般的に大量のデータに対して非常に効率的であるDMAデータ転送を使用してATAデバイスにデータを書き込むことを可能にさせる。
FCベースのディスクアレイ
中規模及び大規模コンピュータシステムでは、データ記憶装置の要件は、一般的に、内蔵ディスクドライブを含む内蔵型大容量記憶デバイスの能力を遙かに超えている。このようなシステムでは、ローカルエリアネットワーク、光ファイバネットワーク、及びその他の高帯域幅通信媒体を介して中規模かつ高性能であるコンピュータシステムにリンクされた内部プロセッサを含む、低コストディスクの冗長アレイ(redundant arrays of inexpensive disks:RAID)のような高性能大容量デバイスを利用することが一般的になり始めている。ディスクアレイの設計及び製造を容易化するため、ディスク製造業者は、ディスクアレイ内のディスクドライブをディスクアレイ・コントローラへ直接的に相互接続するためにFCポートを含むディスクドライブを供給する。一般に、FC調停ループトポロジーは、個々のFCディスクドライブをディスクアレイ・コントローラへ相互接続するためディスクアレイ内で採用される。
図8A〜Dは、ディスクアレイ内でのFCディスクの使用に関する複数の問題点を示す。図8Aは、ディスクアレイの内部コンポーネントのかなり抽象的な表現である。後述の図8B〜Dと図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ポートを介して転送されるときに、有意なノード遅延が存在する。ノード遅延は、添え字付きの小文字「t」でラベルが付けられた短い矢印を用いて図8Aに示されている。ノード遅延はFC調停ループ内で累積的であり、FC調停ループ内のFCノードの台数に比例するかなりの累積ノード遅延を引き起こす。
図8Aに示されたディスクアレイ実施に関する第2の問題点は、FC調停ループが潜在的な単一障害点(single point of failure)を示すことである。一般に、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個の調停ループのうちの一方を中断するノード故障の場合、もう一方の調停ループは機能し続けるが、通信媒体に二重の冗長性が存在しなくなるからである。二重の冗長性を回復するために、ディスクアレイ・コントローラは、故障したノードを特定し分離することを試みることが依然として必要であり、上記のように、複数の故障ノードは特定及び分離が難しい。
図8Cは、FCベースのディスクアレイの実施によって生じるさらに別の問題点を示す。一般に、ディスクアレイから要求される高可用性記憶空間の量が増大すると、その結果として、より多数の個別のFCディスクが追加される。しかし、付加的なディスクの収容はノード遅延問題を悪化させ、上記のように、単一FC調停ループは最大で127台のノードしか収容しない。この最大ノード問題を解決するため、付加的な独立したFC調停ループがディスクアレイに追加される。図8Dは、第1のFCディスクの組818が2個の別個のFC調停ループ814及び816を介してFCコントローラ802と相互接続され、第2のFCディスクの組820が第2のFC調停ループ822及び824のペアを介してディスクアレイ・コントローラ802と相互接続されたより高容量のディスクアレイを示す。FCディスクの組818及び820のそれぞれはシェルフと呼ばれ、一般に、冗長なパワーシステム、冗長な制御パス、及びディスクアレイの全体的な耐故障性及び高可用性に寄与するその他の機能と共に別個の筐体に収容される。しかし、各シェルフの追加は、ディスクアレイ・コントローラ802内のFCコントローラ及びFCポートの台数を増加させる。別個のFC調停ループのそれぞれはFC調停ループ内に収容されたFCノードの累積的なノード遅延が起こることに注意すべきである。ディスクアレイの設計者、製造業者及び使用者は、よって、FCベースのディスクアレイ内でディスクアレイ・コントローラとFCディスクを相互接続するよりフレキシブルであり、より費用効率が高く、より効率的な方法の必要性を認識した。その上、ディスクアレイの設計者、製造業者及び使用者は、ポート故障と、その他の通信故障及びコンポーネント故障とをより容易かつより高い信頼性で特定することを可能にする、FCベースのディスクアレイ内のディスクアレイ・コントローラとFCディスクを相互接続する方法の必要性を認識した。
"The SCSI Bus and IDE Interface"、Freidhelm Schmidt、Addison-Wesley Publishing Company、ISBN0-201-1751402、1997年 "PCI System Architecture"、Shanley & Anderson,Mine Share,Inc.、Addison-Wesley Publishing Company発行、ISBN0-201-40993-3、1995年
高可用性ストレージシェルフ内のストレージシェルフ・ルータ、又は、ストレージシェルフ・ルータの組み合わせは、ディスクアレイ・コントローラのような外部処理エンティティのため本質的に高可用性ストレージシェルフの内部コンポーネントを仮想化するが、ディスクアレイの製造、設定及び動作中に、ディスクアレイ・コントローラ又はその他の外部処理エンティティが、高可用性ストレージシェルフ内のディスクドライブ、並びに、ストレージシェルフ・ルータ、パスコントローラカード及びディスクドライブ自体を含む高可用性ストレージシェルフの種々の内部コンポーネントに格納されたデータ構造に直接的にアクセスすることが必要な状況が存在する。高可用性ストレージシェルフ、及び高可用性ストレージシェルフを含むディスクアレイの製造業者、設計者及びユーザは、その結果として、ストレージシェルフ・ルータが現時点で提供していない、外部処理エンティティによる高可用性ストレージシェルフの内部コンポーネントへの直接アクセスを容易化する必要性を認識した。
本発明の一実施形態は、パスコントローラカードおよび選択的に他のストレージシェルフ・ルータと共に使用され、ストレージシェルフ又はディスクアレイ内のSATAディスクをFC調停ループのような高帯域幅通信媒体に相互接続する、ストレージシェルフ・ルータを実施する集積回路である。一実施形態において、各ストレージシェルフ・ルータは、プロセシングエレメント、多数のメモリ、階層論理アーキテクチャ、ストレージシェルフ・ルータを高帯域幅通信媒体に相互接続する2台の完全なFCポート、及びそれぞれがSATAディスクへのインターフェイスを提供する多数のSATAポートを含む集積回路である。FCポートは、ストレージシェルフ内の全ストレージシェルフ・ルータを一緒に、ストレージシェルフ・ルータ内の内部ファブリックスペースへリンクする。相互接続されたストレージシェルフ・ルータは、ストレージシェルフをディスクアレイ・コントローラ又はその他の制御コンポーネントと相互接続する、部分的に外部にあるFC調停ループのような、2個の別々の、部分的に外部にあるファブリックスペースにリンクされる。
本発明の種々の実施形態は、外部処理エンティティがストレージシェルフ内の種々のコンポーネントへ直接的にアクセスできるようにするため、ストレージシェルフ内の1台以上のストレージシェルフ・ルータによって設けられたストレージシェルフ・インターフェイスによるトンネリングメカニズムを提供する。例えば、本発明の種々の実施形態は、外部処理エンティティがデータをフラッシュメモリ及び内部ディスクドライブに格納された種々のデータ構造に書き込み、ストレージシェルフ・ルータによる翻訳又は介入なしで内部ディスクドライブプロトコルを使用して内部ディスクドライブと直接的に相互作用するための手段を提供する。本発明の一実施形態では、バッファ書込み(WRITE-BUFFER)コマンド及びバッファ読出し(READ-BUFFER)コマンドがストレージシェルフ・ルータによってサポートされるコマンドに追加される。これらのコマンドは、SCSIコマンドがFCPプロトコル内にパッケージ化されるのと同じ方式でファイバチャネルを介してFCPプロトコルによって交換される。ストレージシェルフ・ルータは、コマンドフレームに含まれる情報に応じて、バッファ書込みコマンド及びバッファ読出しコマンドを様々な方法で解釈する。ある種の場合に、バッファ書込みコマンド及びバッファ読出しコマンド内にパッケージ化された情報は内部ディスクドライブと直接的に交換される。その他の場合に、情報が抽出され、ストレージシェルフ・ルータの内部コンポーネントに保持された種々のデータ構造に書き込まれる。バッファ書込みコマンド及びバッファ読出しコマンドは、本質的にストレージシェルフ内の1台以上のストレージシェルフ・ルータによって設けられた高可用性ストレージシェルフ仮想インターフェイスに抜け道、すなわち、トンネルを設け、外部処理エンティティが、高可用性ストレージシェルフ内の1台以上のストレージシェルフ・ルータによる介入はないが、しかし、容易化され、サポートされたトンネルを介して情報を交換することを可能にさせる。
本発明の一実施形態は、ディスクアレイ又はその他の大規模の別個に制御される大容量記憶デバイス内で、ストレージシェルフ内のディスクドライブを高帯域幅通信媒体に相互接続するため、単独若しくは組み合わせて利用されるストレージシェルフ・ルータの集積回路型実施であり、その高帯域幅通信媒体が次にストレージシェルフをディスクアレイ・コントローラ、又は、同様の大容量記憶デバイスのコントローラと相互接続する。上記の実施形態は、ディスクドライブと1台以上のストレージシェルフ・ルータとの間に冗長な通信リンクを提供するパスコントローラカードをさらに含む。上記のように、図8A〜Dを参照すると、ディスクアレイは、現在、ストレージシェルフ内でFC互換性ディスクドライブを利用し、各FC互換性ディスクドライブは、FC互換性ディスクドライブをディスクアレイ・コントローラと相互接続する1個若しくは2個のFC調停ループ又はその他のFCファブリックトポロジーでFCノードとして機能する。これに対して、本発明の一実施形態を部分的に表すストレージシェルフ・ルータは、ポイントツーポイントシリアル通信媒体によってストレージシェルフ内の各ディスクドライブと直接接続され、かつ、ファイバチャネル調停ループのような1個以上の高帯域幅通信媒体によってディスクアレイ・コントローラと相互接続された中間通信ハブとして機能する。
本発明の一実施形態は、(1)概要、(2)ストレージシェルフ内部トポロジー、(3)パスコントローラカード概要、(4)ストレージシェルフ・ルータ概要、(5)ストレージシェルフ・インターフェイス、(6)ストレージシェルフ・ルータ実施、及び(7)ストレージシェルフ・ルータのルーティング層を含む以下のサブセクションで詳細に記載される。さらに、コンピュータプログラム付録が2枚のコンパクトディスクで用意され、参照として本明細書に組み込まれる。コンピュータプログラム付録は、ルーティング層ロジックを指定するRTLコード、ストレージシェルフ・ルータ実施のC言語モデル、及びストレージシェルフ・ルータ実施のための5章の参考マニュアルを含む。2枚のコンパクトディスクのそれぞれに収容されたファイルは以下に明記する。
RTLルーティング層詳細
ファイル名 ファイルサイズ 作成日時
rl 45KB 1/3/2003 11:25AM
rl_router 145KB 12/4/2002 10:48AM
rl_rt 20KB 1/3/2003 11:25AM
rl_rt_ert 86KB 10/8/2002 6:21PM
rl_rt_irt 168KB 12/3/2002 6:31PM
rl_rt_itt 12KB 1/3/2003 11:26AM
rl_rt_lpt 16KB 12/3/2002 6:31PM
C言語モデル
ファイル名 ファイルサイズ 作成日時
sim1216.c 55KB 9/5/2002 1:43AM
参考マニュアル
ファイル名 ファイルサイズ 作成日時
chaps1_5 1881KB 1/13/2003 11:36AM
概要
図9は、図8A〜Dのため利用された説明図の規約を使用して、本発明の一実施形態を表すストレージシェルフ・ルータを抽象的に示す。図9において、ディスクアレイ・コントローラ902は、LAN又は光ファイバ通信媒体904を介して、1台以上の遠隔のコンピュータシステムにリンクされる。ディスクアレイ・コントローラ902は、FC調停ループ908を介して、ストレージシェルフ・ルータ906と相互接続される。ストレージシェルフ・ルータ906は、相互接続918のような別個のポイントツーポイント相互接続を介して、ストレージシェルフ910〜917内の各ディスクドライバと直接的に相互接続される。図9に抽象的に示された実施と図8A〜Dに示された実施を比較すると、図8A〜Dに示された実施によって特定された問題がストレージシェルフ・ルータに基づく実施によって解決されることが容易に認められる。第一に、図9に表された実施のFC調停ループ内のノード遅延だけが、単一のFC調停ループノードとして機能するストレージシェルフ・ルータによってもたらされる遅延である。これに対して、図8Aに示されるように、各FC互換性ディスクドライブは別個のノード遅延をもたらし、FC調停ループ814上の累積的なノード遅延はFC調停ループによって相互接続されたFC互換性ディスクドライブの台数に比例する。ストレージシェルフ・ルータは、FCポートと、ストレージシェルフ・ルータを個別のディスクドライブへリンクする内部シリアル相互接続との間で、高度に並列化され効率的なデータ転送を容易に行うように設計される。したがって、ストレージシェルフ・ルータをFC調停ループ908に相互接続するオンボードFCコントローラによってもたらされる避けられないノード遅延の他に、実質的な遅延及び累積的な遅延はストレージシェルフ・ルータによってもたらされない。
第二に、非常に多数のディスクドライブがストレージシェルフ・ルータを使用してディスクアレイ・コントローラと相互接続される。図9に表された実施で利用されるFC調停ループ908は、すなわち、ディスクアレイ・コントローラとストレージシェルフ・ルータの2台のノードだけを含む。各ストレージシェルフ・ルータが8台のディスクドライブをFC調停ループと相互接続可能であると仮定すると、単一のFC調停ループは、125台のストレージシェルフ・ルータを、通常はFCファブリック(パブリックループ)のために確保されているアドレスがストレージシェルフ・ルータによって使用される場合には、126台のストレージシェルフ・ルータを、ディスクアレイ・コントローラに相互接続するため使用できるので、単一のFC調停ループを介して8000台以上の個別のディスクドライブをディスクアレイ・コントローラに相互接続する。上記のように、高可用性が必要とされないとき、16000台以上の個別のディスクドライブが単一のFC調停ループを介してディスクアレイ・コントローラと相互接続される。これに対して、図8Cに示されるように、個別のFC互換性ディスクドライバがそれぞれに別個のFCノードとして機能するとき、125台のディスクドライバだけが、或いは、FCファブリック(パブリックループ)のために通常確保されたアドレスがディスクドライブのため使用されるならば、126台のディスクドライブが、単一のFC調停ループを介してディスクアレイ・コントローラと相互接続される。
第三に、ストレージシェルフ・ルータを利用するストレージシェルフ内の故障の特定及び分離は遙かに容易になる。従来の、FC調停ループノード毎に1台のディスクドライブの実施では、故障したFCポート又はFCリンクは、特定することが非常に困難であり、ある種の故障モードの下で、分離することが困難であり、一方、これに対して、ポイントツーポイントリンクを介してストレージシェルフ・ルータに相互接続されたディスクドライブに関連した問題はかなり容易に特定され、故障したポート又はリンクが容易に分離される。
ディスクドライブは、複数の現在利用可能な内部相互接続トポロジーのいずれかを用いてストレージシェルフ・ルータ906に接続される。一実施形態では、SATA互換性相互接続はSATAディスクドライブをストレージシェルフ・ルータと相互接続するため使用される。ストレージシェルフ・ルータは、ディスクアレイ・コントローラから受信された各FCPコマンドを1個以上の等価的なATAインターフェイスコマンドに変換するロジックを含み、ストレージシェルフ・ルータがそのATAインターフェイスコマンドを適切なSATAディスクドライブへ送信する。図9に表されたストレージシェルフ・ルータは単一のFC調停ループ908を介してディスクアレイ・コントローラと相互接続されるが、上記のように、ストレージシェルフ・ルータは、より一般的には、2個のFC調停ループ又はその他のFCファブリックトポロジーを介してディスクアレイ・コントローラと相互接続される。
図10は、階層的に相互接続されたコンピュータとディスクアレイのシステム内において、本発明の一実施形態を部分的に表すストレージシェルフ・ルータが占める位置を示す図である。図10では、2台のサーバコンピュータ1001及び1004は、種々のFCファブリックトポロジーのうちのいずれかのような高帯域幅通信媒体1008を介して、互いに相互接続され、ディスクアレイ・コントローラ1006と相互接続される。ディスクアレイ・コントローラ1006は、2個の別個のFCファブリックループを介してストレージシェルフ1010と相互接続される。第1のFC調停ループ1012は、ディスクアレイ・コントローラ1006を第1のストレージシェルフ・ルータ1014と直接的に相互接続する。第2のFC調停ループ1016は、ディスクアレイ・コントローラ1006を第2のストレージシェルフ・ルータ1018と直接的に相互接続する。2台のストレージシェルフ・ルータ1014及び1018は、第1のFC調停ループ1012の一部として第1のストレージシェルフ・ルータ1014から第2のストレージシェルフ・ルータ1018へFCフレームを伝送し、第2のFC調停ループ1016の一部として第2のストレージシェルフ・ルータ1018と第1のストレージシェルフ・ルータ1014との間でFCフレームを伝送する内部ポイントツーポイントFC相互接続1020と相互接続される。その上、内部FCリンク1020は、ストレージシェルフ1010内で生成され内部で使われる内部管理及び通信のため使用されるFCフレームを伝送する。後述するように、ディスクアレイをストレージシェルフと相互接続する2本のFC調停ループを、「Xループ」又は「Xファブリック(fabric)」、及び「Yループ」又は「Yファブリック」と呼び、内部FC1020上で内部的に生成され内部的に使用される管理FCフレームのエクスチェンジをSファブリックと呼ぶことは一般的である。ストレージシェルフ1010は、4台のディスクドライブ1022〜1025、及び明示的に記載されていない12台のディスクドライブを示す省略記号1026によって図10に表された16台のSATAディスクドライブを含む。各ストレージシェルフ・ルータ1014及び1018は、シリアルリンク1028のようなポイントツーポイントシリアルリンクを介して各SATAディスクドライブと相互接続される。
図10に示されるように、ディスクアレイ・コントローラ1006及びストレージシェルフ1010を含むディスクアレイ内の相互通信経路のそれぞれには少なくとも2重の冗長性がある。さらに、ストレージシェルフ・ルータに2重の冗長性がある。たとえ、いずれかの単一リンク、又は、一方のストレージシェルフ・ルータが故障しても、残りのリンクと残りのストレージシェルフ・ルータは、ディスクアレイ・コントローラ1006とストレージシェルフ1010内の16台のSATAディスクドライブとの間で完全な接続性を維持するために、故障したリンク又は故障したストレージシェルフ・ルータがそれまで担っていた仕事を引き受けることが可能である。ディスクアレイ・コントローラは、1台以上のSATAディスクドライブの故障にもかかわらず復旧及び完全動作を可能にするため、RAIDストレージ技術の種々のレベルのような複数の異なる可用性データ記憶方式のうちのいずれかをさらに実施する。RAID技術は、例えば、2台以上のディスクドライブ上に記憶されたデータの2個以上の完全なコピーを別々に、かつ、完全に冗長的に復元する。サーバは、冗長性とフェイルオーバー(failover)機能を備えたFCファブリックのような通信媒体を介して、ディスクアレイ・コントローラ1006、及びストレージシェルフ1010のような1台以上のストレージシェルフを備えるディスクアレイと相互通信する。ディスクアレイ・コントローラは、サーバコンピュータ1002及び1004が、ストレージシェルフのディスクドライブの内部及びディスクドライブ間におけるデータの実際の位置とは無関係に、かつ、データの冗長なコピー、並びに、ディスクアレイ・コントローラ1006によって提供されるその他の機能及び特長とは関係なく、ファイル及びその他のデータオブジェクトをディスクアレイに格納し、ディスクアレイから取り出すことを可能にさせる論理ユニット番号(logical unit number:LUN)及び論理ブロックアドレス(logical block address:LBA)インターフェイスを提供する。ディスクアレイ・コントローラ1006は、次に、ストレージシェルフ・ルータ1014及び1018によって提供されたインターフェイスを介してストレージシェルフ1010とインターフェイスをとる。ディスクアレイ・コントローラ1006は、FCエクスチェンジを、FCPプロトコルを用いて、離散的なFC互換性ディスクドライブとして見えるものとの間で送受信する。しかし、ディスクアレイ・コントローラからは見えないが、ディスクシェルフルータ1014及び1018は、SATAディスクドライブとコマンド及びデータを交換するためにFCコマンドをATAコマンドに変換する。
図11及び12は、本発明の一実施形態を表すストレージシェルフ・ルータを使用して実施されたストレージシェルフのコンポーネントの斜視図である。図11において、ルータカードに取り付けられた2台のストレージシェルフ・ルータ1102及び1104は、パッシブ・ミッドプレーン(passive midplane)1106を介して、SATAディスクドライブ1108のような16台のSATAディスクドライブと相互接続する。各SATAディスクドライブキャリアは、SATAディスクドライバと、パスコントローラカード1110とを収容する。パスコントローラカードは、SATAディスクドライバを、パッシブ・ミッドプレーンを介して2台のストレージシェルフ・ルータ1102及び1104のそれぞれに達する2本の別個のシリアルリンクと相互接続する。一般に、SATAディスクドライバは外部システムへの単一のシリアル接続だけをサポートする。ストレージシェルフ内に完全に冗長な相互接続を設けるために、パスコントローラカード1110が必要とされる。ストレージシェルフ1100は、二重化された(redundant)ファン1112、1114および電源1116、1118をさらに含む。図12は、図11に示されたストレージシェルフに類似したストレージシェルフの実施を表す。この実施例は、それぞれが2台のパスコントローラカード及び2台のSATAディスクドライブを含む二重(dual)SATAディスクドライブキャリアを備える。ディスクドライバの台数の増加は、高可用性アプリケーションのため必要とされる2重の冗長性を提供するために、ストレージシェルフ・ルータが対応して2倍になることを必要とする。
ストレージシェルフ内部トポロジー
図13A〜Cは、本発明の一実施形態を部分的に表すストレージシェルフ・ルータを使用するストレージシェルフの3通りの実施を示す図である。図13Aでは、単一のストレージシェルフ・ルータ1302が16台のSATAディスクドライブディスクドライブ1304〜1319を、FC調停ループ1320を介して、ディスクアレイ・コントローラへ相互接続する。一実施形態では、ストレージシェルフ・ルータは、最大で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次リンク(primary link)」と呼ばれる。内側シリアルリンク1344のような正常動作中に使用されない内部シリアルリンクは「2次リンク(secondary link)」と呼ばれる。1次リンクが動作中に故障するならば、故障した1次リンク、及びストレージシェルフ・ルータに接続されたすべての他の1次リンクは、故障した1次リンクが接続されたストレージシェルフ・ルータから、他のストレージシェルフ・ルータへフェイルオーバーされ、故障した1次リンクが接続されたストレージシェルフ・ルータの交換を含めて、故障した1次リンクを修理若しくは取り替えることが可能になる。上記のように、2台のストレージシェルフ・ルータのそれぞれは、ストレージシェルフをディスクアレイ・コントローラと相互接続する2個のFC調停ループの一方のためのFCノードとして機能する。一方のFC調停ループが故障するならば、故障したFC調停ループを本来ならば通過するデータ転送は、残りの、動作可能なFC調停ループへフェイルオーバー(failover)される。同様に、一方のストレージシェルフ・ルータが故障したならば、もう一方のストレージシェルフ・ルータがストレージシェルフの完全な動作制御を担う。代替的な実施形態では、1次パスの故障は、ストレージシェルフ・ルータ全体をフェイルオーバーするのではなく、個別にフェイルオーバーされる。ある種の実施形態及び状況では、1次パスのフェイルオーバーはストレージシェルフ・ルータ内で実行され、他の実施形態及び状況では、1次パスのフェイルオーバーは、1次パスの2次ストレージシェルフ・ルータへのフェイルオーバーを含む。
図13Cは、32台のATAディスクを備えた高可用性ストレージシェルフの実施形態を示す。図13Cに表されるように、32台のATAディスクを備えたストレージシェルフは、4台のストレージシェルフ・ルータ1350、1352、1354及び1356を含む。各ストレージシェルフ・ルータは、正常動作中に、8台のSATAディスクを、ストレージシェルフをディスクアレイ・コントローラと相互接続する2個のFC調停ループと相互接続する。各ストレージシェルフ・ルータは、2次リンクを介して、8台の付加的なSATAディスクドライブに相互接続されるので、フェイルオーバーが必要であるならば、ストレージシェルフ・ルータは全部で16台のSATAディスクを2個のFC調停ループと相互接続することが可能である。4台のストレージシェルフ・ルータの構造では、ストレージシェルフ・ルータ1350は、一つの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が次にFCフレームを、1次リンクを介してSATAディスクへ伝送される1個以上のATAコマンドに変換するか、若しくは、FCフレームを下流のストレージシェルフ・ルータ1354へ転送する。応答FCフレームがXファブリックを介してストレージシェルフ・ルータ1356によって伝送されるならば、それは、内部FCリンク1360、1362及び1358を通り、ストレージシェルフ・ルータ1354及び1352を介して、ストレージシェルフ・ルータ1350へ回送されるべきであり、そのストレージシェルフ・ルータ1350から応答フレームが外部Xファブリックへ伝送される。上記の実施形態では、高可用性ストレージシェルフは、少なくとも2台のストレージシェルフ・ルータを含むことが必要であり、ストレージシェルフ内の8台のSATAディスク毎にストレージシェルフ・ルータを含むことが必要である。
パスコントローラカード概要
上記のように、2台のコンポーネントは、SATAディスク又はその他の低価格ディスクドライブを利用して高可用性ストレージシェルフの構築を容易化し、FC調停ループ、又は、FC調停ループ上の単一のスロット若しくはノードだけを使用してその他の高帯域幅通信媒体と相互接続される。一方のコンポーネントはストレージシェルフ・ルータであり、もう一方のコンポーネントは、ATAドライブの2台のストレージシェルフ・ルータへの冗長な相互接続を提供するパスコントローラカードである。図14A〜Bは、ATAディスクドライブを2台のストレージシェルフ・ルータに相互接続するため適したパスコントローラカードの二つの実施を示す図である。図14Aに表された実施は、並列したATAディスクドライブへのパラレルコネクタを提供し、図14Bに表された実施は、SATAディスクへのシリアル接続を提供する。上記のように、SATAディスクドライブは非常に高いデータ転送レートを提供するので、図14Bに表された実施の方が好ましく、以下ではその実施を説明する。
パスコントローラカードは、1次シリアルリンク1404及び管理リンク(management link)1406の第1のストレージシェルフ・ルータへの外部接続、並びに、2次シリアルリンク1408及び第2の管理リンク1410の第2のストレージシェルフ・ルータへの外部接続のためのSCA−2コネクタ1402を備える。1次リンク及び2次リンクは、シリアルリンク1414を介してSATAディスクドライブ1416に相互接続された2:1のマルチプレクサによって多重化される。管理リンク1406及び1410は、ディスクドライブ環境の温度を監視し、ディスクドライブキャリア内のファンの動作を制御し、ディスクドライブ筐体の外部から見える種々の発光ダイオード(LED)信号光を作動する管理サービスルーチンを実行するマイクロコントローラ1418に入力される。本質的に、正常動作下で、ATAコマンド及びデータは、1次リンクを介してパスコントローラカードによって受信され、2:1のマルチプレクサを介してSATAディスクドライブ1415へ入力されるシリアルリンク1414へ転送される。フェイルオーバーがストレージシェルフ内で起こり、1次リンクを介してパスコントローラカードに接続されたデフォルトのストレージシェルフ・ルータを停止状態にするならば、第2のストレージシェルフ・ルータは、2次リンクを介してATAコマンド及びデータの転送を担い、ATAコマンド及びデータは、次に、2:1のマルチプレクサを経由してSATAディスクドライブ1416に直接的に入力されるシリアルリンク1414へ送られる。
パスコントローラカードは、2台の別個のストレージシェルフ・ルータへの冗長な相互接続を提供するので、高可用性ストレージシェルフで必要とされる2重の冗長性を提供するために必要である。ストレージシェルフ・ルータは、様々なタイプの通信媒体の間の相互接続と、様々なタイプの通信媒体の間のコマンド及びデータの変換とを提供する。その上、ストレージシェルフ・ルータは、内部コンポーネント故障を自動検出し、冗長なリンク及び無故障コンポーネントを使用してディスクドライブのディスクアレイ・コントローラとの完全な相互接続を復旧するために適切なフェイルオーバー計画を実行するフェイルオーバーロジックを含む。
ストレージシェルフ・ルータ概要
図15は、ストレージシェルフ・ルータの主要機能コンポーネントを示す上位レベルブロック図である。ストレージシェルフ・ルータ1500は、2台のFCポート1502及び1504と、ルーティング層1506と、FCP層1508と、グローバル共有メモリスイッチ1510と、16台のSATAポート1512〜1518と、CPU複合体1520と、外部フラッシュメモリ1514とを含む。ストレージシェルフ内で相互接続するストレージシェルフ・ルータの組の中でのストレージシェルフ・ルータの論理的位置に応じて、一方又は両方のFCポートが外部FC調停ループ又は他のFCファブリックに接続され、一方又は両方のFCポートが内部ポイントツーポイントFCリンクに接続される。一般に、FCポートの一方は、ストレージシェルフ・ルータの組の中でのストレージシェルフ・ルータの論理的位置及び物理的位置とは無関係に、ストレージシェルフ・ルータを第1のFC調停ループと直接的又は間接的にリンクすると考えられ、もう一方のFCポートはストレージシェルフ・ルータを第2のFC調停ループと直接的又は間接的に相互接続すると考えられる。
ルーティング層1506は、後述されるメモリに記憶された多数のルーティングテーブルと、両方のFCポートからの入力FCフレームの転送先を決めるルーティングロジックとを備える。FCP層1508は、種々のタイプの入力及び出力FCフレームを処理する制御ロジックと、後述されるグローバル供給メモリスイッチへのインターフェイスと、一体としてFCPエクスチェンジを構築するFCフレームの交換を容易化するようにFCエクスチェンジコンテキストをメモリ内にセットアップするために、ファームウェアルーチンがFCP_CMND(FCPコマンド)フレームを処理するためCPU複合体上で動くことを可能にさせるCPU複合体1512へのインターフェイスと、を備える。
グローバル共有メモリスイッチ1510は、FCP層キューとSATAポート1512〜1518との間でデータを受け渡す非常に高速な時間多重方式のデータ交換機能である。グローバル共有メモリスイッチ(GSMS)1510は、FCP層と特別なSATAポートとの間でデータの転送を容易化するために仮想キューの割り付けを可能にさせる仮想キューメカニズムを利用する。GSMSは、基本的に、FCP層と16台のSATAポートとの間で非常に並列的なデータフローを容易に行う非常に高帯域幅の高速双方向マルチプレクサであり、FCP層とSATAポートとの間で同期境界のトラバース(traverse)を容易化するために同期メカニズムを含む装置である。
CPU複合体1512は、FCエクスチェンジのコンテキスト情報を初期化し維持するため、かつ、FCPコマンドをATA等価コマンドに変換するためにFCPコマンドを処理し、また、SATAディスクドライブ及びストレージシェルフ・ルータの内部コンポーネントの動作を監視し、問題が検出されたときに高機能のフェイルオーバー戦略を実行する種々のファームウェアルーチンを動かす。フェイルオーバー戦略を実行するため、CPU複合体はストレージシェルフ・ルータのその他の論理コンポーネントと相互接続される。外部フラッシュメモリ1514は、設定パラメータ及びファームウェアルーチンを格納する。注意すべき点は、ストレージシェルフ・ルータが2台のFCポート1502及び1504と、16台のSATAポート1512〜1518と、16本のシリアル管理リンク1520と、ICバス1522と、コンソール1524へのリンクとを介して外部コンポーネントに相互接続されることである。
ストレージシェルフ・インターフェイス
上記のように、ストレージシェルフ・ルータベースのストレージシェルフの実施は、現行のディスクドライブ毎にFCノードを設ける実施よりも、様々な形で、より大きな柔軟性を提供する。ストレージシェルフ・ルータは、それが接続されたディスクアレイ・コントローラに多種類の論理インターフェイスのうちのいずれかを提供することができる。図16A〜Gは、本発明の一実施形態を部分的に表す1台以上のストレージシェルフ・ルータを組み込む高可用性ストレージシェルフ・ルータによって提供される多数の異なる論理インターフェイスを示す図である。図16Aは、図8A〜Dを参照して説明したような現行のストレージシェルフのFC互換性ディスクドライブ実施によって提供されるインターフェイスを表す。図16Aは図16A〜Hを通じて使用される抽象的な説明図の規約を使用する。図16Aにおいて、各ディスクドライブ1602〜1605は、0から19までの番号が付けられた一連のデータブロックとして論理的に表現される。当然ながら、実際のディスクドライブは何十万から何百万の論理ブロックを含むが、図16Aではディスク毎に表された20個の論理ブロックが多種多様なタイプのインターフェイスを説明するために十分である。図16Aでは、それぞれの別個のディスクドライブ1602〜1605はFC調停ループ上の離散的なノードであるので、各ディスクドライブは、「AL_PA1」、「AL_PA2」、「AL_PA3」及び「AL_PA4」としてそれぞれ図16Aに表された、別個のFCノードアドレス、すなわち、調停ループ物理アドレス(「AL_PA」)と関連付けられる。しかし、図8A〜Dを参照して説明したような現行のFC調停ループディスクアレイの実施とは異なり、各ノードは、図9に表されるようにポイントツーポイント接続を介してストレージシェルフ・ルータの補完的なSATAポートと相互接続されるので、ノードに関連した累積的なノード遅延がないことに注意すべきである。よって、ディスクアレイ・コントローラは、ディスクドライブに関連したFCアドレスを用いて特別なディスクドライブ内の特別な論理ブロックにアクセスする。あるディスクドライブは、ある種の場合に、論理ユニット(LUN)インターフェイスを提供し、論理ブロックアドレス空間が異なるLUNと関連付けられた別個の論理ブロックアドレス空間に区分される。しかし、ここでの説明の目的のために、複雑さのレベルを扱う必要はない。
図16Bは、ストレージシェルフ・ルータを介してFC調停ループに相互接続された図16Aに表された4台のディスクドライブを含むストレージシェルフのための第1の可能なインターフェイスを表す。この第1のインターフェイスでは、各ディスクドライブは依然として別個のFCノードアドレスと関連付けられる。各ディスクドライブは、単一の論理ブロックアドレス空間を含む単一の論理ユニットであるとみなされる。このインターフェイスは、以下では、本発明の一実施形態を部分的に表す1台以上のストレージシェルフ・ルータを含むストレージシェルフの「トランスペアレント・モード(transparent mode)」動作と呼ばれる。
ストレージシェルフによって提供される第2の可能なインターフェイスは図16Cに表される。この場合、4台すべてのディスクドライブは単一のFC調停ループノードアドレス「AL_PA1」と関連付けられる。各ディスクドライブは異なる論理ユニットであると考えられ、ディスクドライブ1602は論理ユニット0(LUN0)であるとみなされ、ディスクドライブ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とそれぞれ関連付けられる。同様に、ディスクドライブ1604及び1605の第2のペアは、第2のFCノードアドレス「AL_PA2」と共に関連付けられ、ディスクドライブの第2のペアのそれぞれは異なるLUN番号と関連付けられる。
図16Fはさらに別の可能なインターフェイスを表す。この場合、第1の2台のディスクドライブ1602及び1603は第1のFCノードアドレスと関連付けられ、第2の2台のディスクドライブ1604及び1605は第2のFCノードと関連付けられる。しかし、この場合、各グループ内の2台のディスクドライブは、共に単一の論理ユニットに属するとみなされ、2台のディスクドライブ内の論理ブロックは単一の論理ブロックアドレス空間を構成する論理ブロックアドレスと関連付けられる。
最後のインターフェイスは図16Gに表される。この場合、前の二つのインターフェイスと同様に、単一のFCノードアドレスに関連付けられたディスクドライブの各ペアは単一の論理ブロックアドレス空間を有する単一のLUNを構成するとみなされる。しかし、このインターフェイスでは、論理ブロックアドレスは2台のディスクドライブの間で交番する。例えば、ディスクドライブ1602及び1603のペアの場合、論理ブロックアドレス0は第1の論理ブロック1610及び第1のディスクドライブ1602と関連付けられ、論理ブロックアドレス1は第2のディスクドライブ1603の第1のブロック1612と関連付けられる。
図16A〜Gは、本発明の一実施形態を部分的に表すストレージシェルフ・ルータによってディスクアレイ・コントローラに提供されたある種の複数の可能なインターフェイスを示すことだけを意図している。アルゴリズム的に記述することができるLUN及び論理ブロックアドレスのディスクドライブ及びディスクドライブ内の物理ブロックへのマッピングの殆どは、ストレージシェルフ内のストレージシェルフ・ルータによって実施される。一般に、これらの多種多様なタイプの論理インターフェイスは、以下の4個の一般的なインターフェイスのタイプ、すなわち、(1)各ディスクドライブが別個の局所的に一意のFCノードアドレスと関連付けられるトランスペアレント・モードと、(2)各ディスクドライブが異なるLUN番号と関連付けられ、すべてのディスクドライブが単一のFCノードアドレスによってアクセスされる純粋なLUNモードと、(3)すべてのディスクドライブが単一のFCノードアドレス及び単一の論理ユニット番号と関連付けられる純粋な論理ブロックアドレス指定モードと、(4)LUNと論理ブロックアドレス空間分割の多種多様な組み合わせを利用するLUNモード及び論理アドレスアドレス指定モードの混合モードに分類される。
ストレージシェルフ・ルータ実施
図17Aは、本発明の一実施形態を表すストレージシェルフ・ルータ内のコマンドとデータのフローの上位レベル概要である。ストレージシェルフ・ルータは、データとコマンドのシリアルストリームを、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ポート層内の出力FIFO 1712〜1713へ向けられる。ストレージルータへ向けられたフレームはルーティング層によってFCP層へ向けられ、FCP層では状態機械がストレージシェルフ・ルータ内でのフレームの処分を制御する。
ストレージシェルフ・ルータによってコンテキストが確立された現在動作中のFCエクスチェンジと関連付けられたFCP−DATAフレームは、高度にストリームライン化され、かつ、効率的な方法で処理される。これらのフレームからのデータは、FCP層によって、GSMS1718内の仮想キュー1714〜1716へ向けられ、そこからデータはSATAポート層1722内の入力バッファ1720へ転送される。SATAポート層から、データは、SATAパケットで、又は、データフレーム情報構造(Data Flame Information Structures:DATA FISes)で、多数のSATAリンク1724のうちの一つを介して、ストレージシェルフ・ルータと相互接続された多数のSATAディスクドライブ1726のうちの1台へ送信される。
FCP−CMNDフレームは種々の形式でFCP層によって処理される。これらのフレームは、FCP層によって、ストレージシェルフ・ルータ内のFCP層とCPUとの間で共有されるメモリ1728へ転送される。CPUはフレーム内に収容されたコマンドを処理するためフレームにアクセスする。例えば、入力書込みコマンドが受信されたとき、ストレージシェルフ・ルータのCPUは、ファームウェアルーチンの制御下で、コマンドが向けられ、共有メモリに格納された書込み動作のためのコンテキストを確立するSATAドライブを決定する必要がある。CPUは、データを受信するようにSATAドライブを準備し、一般にディスクアレイ・コントローラであるイニシエータへのFCP−XFER−RDYフレームの返送を指令することが必要である。CPUによって準備され、共有メモリに格納されたコンテキストは、FCPレイヤがCPUの介入なしに後続の入力FCP−DATAメッセージを処理することを可能にさせ、書込み動作の実行をストリーム化する。
ストレージシェルフ・ルータ内の種々の論理層は反対方向でほぼ対称的に機能する。ATAコマンドへの応答は、SATAディスクドライブからSATAリンクを介してSATAポート層1722によって受信される。SATAポート層は、次に、適切な信号及びメッセージを生成し、必要に応じて、CPUが、ファームウェアの制御下で、適切な動作及び応答を実行することを可能にさせる。データが、読出しコマンドに応答して、SATAディスクから遠隔のエンティティへ転送されるとき、CPUは、FCP層による処理のための共有メモリに格納される適切なキューエントリーを生成する。FCP層内の状態機械は、共有メモリから、FCフレームヘッダテンプレートを取得し、読出しコマンドに関連した仮想キュー1732〜1733からのデータ転送を手配し、FCフレームヘッダを準備し、仮想キューを介してSATAポート層から受信されたFCフレームヘッダ及びデータの、一般的にディスクアレイ・コントローラである要求中の遠隔のエンティティへの伝送のためのFCポート層の出力FIFO1712及び1713への転送を調整する。
図17Aはストレージシェルフ・ルータ内のデータ及び制御フローの簡略な概要を与えることが意図されている。ストレージシェルフ・ルータの内部コンポーネントを正確に表現することではなく、FCP−CMND及びFCP−DATAフレームの受信及び処理に関して論理層間の相互関係を表すことが意図されている。例えば、複数の仮想キューがGSMS層内で図17Aに表されている。しかし、仮想キューは、一般に、静的エンティティではなく、ストレージシェルフ・ルータの現在状態に依存して必要に応じて動的に割り付けられる。図17Aは単一のSATAシリアル接続1724とSATAディスクドライブ1726だけを表すが、上記のように、各ストレージルータは、一実施形態では、16台の異なるSATAディスクドライブに接続される。
図17B〜Fは、本発明の一実施形態を表すストレージシェルフ・ルータを通るデータ及び制御情報のフローに関するより詳細を記載する。図17B〜Fを説明する際に、同一コンポーネントの様々なペアの両方のコンポーネントは、簡易化するために具体的に言及されない。それらの図は、コンポーネントの完全な図解入りのリストとしてではなく、データ及び制御情報がストレージシェルフ・ルータ内の種々のコンポーネントの中を移動する様子を表すことを意図する。さらに、種々のコンポーネントの台数は、ストレージシェルフ・ルータの多種多様な実施に応じて変化する。図17Bは、ストレージシェルフ・ルータ内のFCP−DATAフレームの初期フローを表す。FCP−DATAフレームは、最初に、FCポート1736によって受信され、入力FIFO1737に書き込まれ、この入力FIFOからのFCP−DATAフレームは、たとえFCP−DATAフレームの残りが未だ入力FIFOに書き込まれている間でも、十分なヘッダ情報が入力FIFOで入手できるようになるとすぐに、ルータロジック1738によって処理され始める。FCポートは、ルータロジックがフレームを処理し始めることを可能にさせるため、新フレームの到着をルータロジックに知らせる。ルータロジック1738は、フレームがストレージシェルフ・ルータへ向けられるか、若しくは、向けられないかを決めるため、又は、フレームが遠隔のエンティティへ向けられるか、若しくは、向けられないかを決めるためにルーティングテーブル1739を利用する。FCP−DATAフレームが遠隔のエンティティへ向けられるならば、フレームはルータロジックによって遠隔のエンティティへの送信のためFCポートへ向けられる。ルータは、さらに、FCP−DATAフレームが属するFCエクスチェンジのためのコンテキストがCPUによって作成され、共有メモリに格納されたかどうかを決めるため、コンテキストロジック1740とインターフェイスを取る。そのフレームのコンテキストが見つけられるならば、ルータロジックはそのフレームをFCPインバウンド・シーケンス・マネージャ(FCP Inbound Sequence Manager:FISM)状態機械1741へ向ける。コンテキストが見つからないならば、フレームは共有メモリへ向けられ、そこからフレームは、次に、ファームウェア制御下のCPUによって誤って受信されたフレームとして抽出され処理される。
FISM1741はFCPデータムーバ・ロジック・モジュール(FCP data mover logic module:FDM)1742からのGSMSチャネルを要求し、FCPデータムーバ・ロジック・モジュールは、次に、GSMS1744内の仮想キュー(virtual queue:VQ)1743にアクセスし、FISMを介してコンテキストロジックからVQを表すパラメータを受信する。FDMは、次に、フレームに含まれるデータをVQに書込み、VQからそのデータは、SATAディスクドライブへの送信のためVQへのアクセスをFDMと共有するSATAポートによって集められる。SATAポートは、データがVQへ書き込まれ始めるとすぐにディスクドライブへのデータの転送を開始することに注意する必要がある。SATAポートは、ディスクドライブへデータを送信し始める前に、すべてのデータが書き込まれるまで待つ必要がない。一旦データ転送動作と関連したすべてのデータがVQに書き込まれると、FDMはデータが転送されたことをコンテキストマネージャに知らせ、コンテキストマネージャは、次に、完了キューマネージャ(completion queue manager:CQM)1745が完了メッセージ(completion message:CMSG)を共有メモリ1747内の完了キュー1746にキュー入れすることを要求する。CQMは、次に、CPUデータムーバ(CPU data mover:CPUDM)1748がCMSGを共有メモリに書き込むことを要求する。
図17Cは、ストレージシェルフ・ルータ内のFC−CMNDフレームとエラーを伴うフレームのフローを表す。上記のように、フレームはFCポート1736によって受信され、ルータロジック1738によって、ルーティングテーブル1739を参照して、ストレージシェルフ・ルータ内の種々のターゲットコンポーネントへ向けられる。エラー受信されたFCP−CMNDフレーム及びFCフレームは、CPUによる抽出及び処理のため共有メモリ1747へ経路制御される。ルーティングロジック1738は、フレームを共有メモリ1747へ書き込む用にフレームバッファ・キュー・マネージャ(flame buffer queue manager:FBQM)1760に要求を発行する。FBQMは、CPUDM1748から、メモリ1750に記憶されたバッファポインタを受信し、フレームを共有メモリ1747内のフレームバッファ1749に書き込む。フレームがエラー処理のため共有メモリへ転送されるある種の場合に、2台以上のフレームバッファがより多くのフレームを収容するために、又は、多数のフレームを収容するために必要とされることに注意すべきである。最後に、ルータは、CQM1745がCMSGをCQ1746に書き込むことを要求する。CPUは、最終的に、フレームバッファ1749に格納されたフレームへアクセスするためにCMSG内に含まれる情報を使用して、CMSGを処理する。
図17Dは、あるFCポートから別のFCポートへのFCフレームのフローを表す。ルータロジック1736が、第1のFCポート1736内の入力FIFO1737を介して受信されたフレームはストレージルータへ向けられるのではなく、代わりに遠隔のエンティティへ向けられることを決定する場合、ルータロジックは、フレームを遠隔のエンティティへ送信するためにフレームを第2のFCポート1752内の出力FIFO1751へ書き込む。
図17Eは、ストレージシェルフ・ルータ内のCPUから、Sファブリック、FC調停ループ又はその他のFCファブリックへのデータ及び制御情報のフローを表す。CPUは、ファームウェア制御下で、共有メモリ1747内の共有メモリキューSRQにエントリーを格納し、CPUが、ヘッダ及びバッファへのポインタと共にFC調停ループ又はその他のFCファブリックへの送信のため作成したフレームを記述するSRQエントリー(SRQ entry:SRE)の存在を示すためにSRQと関連付けられたSRQプロデューサ・インデックス(SQR producer index)を更新する。SRQマネージャモジュール(SRQ manager module:SRQM)1755は、SRQプロデューサ・インデックスの更新を検出し、CPUDM1748を介して共有メモリ1747から次のSREをフェッチ(fetch;取得)する。SRQMはフェッチされたSREを、ラウンドロビン(round-robin)方式のような調停方式を実施するSRQ調停モジュール(SRQ arbitration module:SRQ_ARB)1756へ渡し、複数のCPUによって生成され、複数のSRQに格納されたSREの処理を保証する。SRQ_ARBは、次のSREを受信するためのSRQMを選択し、SREをFCPアウトバウンド・シーケンス・マネージャ(FCP outbound sequence manager:FOSM)状態機械1757へ渡す。FOSMは、CPUDM1748を介して共有メモリ1747からFCヘッダテンプレート及びフレームペイロードをフェッチするためSRWを処理する。FOSMは、共有メモリからCPUDMを経由したFCヘッダテンプレート及びフレームペイロードを使用してFCフレームを構築し、そのフレームをFCポート1736の出力FIFO1758に書込み、そこからフレームはFC調停ループ又はその他のFCファブリックへ送信される。フレームがFCポートへ転送されたとき、FOSMはCMSGを共有メモリへ書き込むためにCQM1745へ向ける。
図17Fは、GSMS及び共有メモリからFC調停ループ又はその他のFCファブリックへのデータ及び制御情報のフローを表す。この処理のステップの殆どは図17Eに関して説明したステップと同様であり、簡易化するために、再度説明はしない。一般に、FCP−DATAフレームの制御部は、FCフレームヘッダ内に格納され、図17Eに関して説明された他のタイプのフレームの生成と同様の形式で生成される。しかし、FCP−DATAフレームの場合、処理は、制御情報を、SATAポートからGSMSを経由して取得されたデータと組み合わせるために段階化されるべきである。FOSM1757がFCP−DATAフレームを記述するSREを受信するとき、FOSMは、FCP−DATAフレームヘッダを構築し、GSMS1744内のVQ1759を介してデータを取得するFDM1742を通してGSMSチャネルによってフレームに組み入れられたデータを要求することが必要である。データ及び制御情報がFOSMによってFCP−DATAフレームに合成されると、フレームは次にFCポートへ渡され、そして、FCP_DATAフレームがデータ転送動作の完了を表すとき、CMSGメッセージが、上述のように、CQにキュー入れされる。
図18は、本発明の一実施形態を表すストレージシェルフ・ルータの論理コンポーネントのより詳細なブロック図を表す。論理コンポーネントは、2台のFCポート1802及び1804と、ルーティング層1806と、FCP層1808と、GSMS1810と、SATAポート層1812と、図16及び17に関して既に説明した2台のCPU1814及び1816を備えたCPU複合体とを含む。図18に、太線矢印1818のような太線矢印で表された通信経路及び通信リンクは、ストレージシェルフ・ルータ内の性能がクリティカルな(performance-critical)通信経路を表す。性能がクリティカルな経路は、FCフレームの受信及び出力と、SATAポートによってSATAディスクドライブへ送信するための適切なATAコマンドを生成するための受信フレームの処理と、受信されたFCP−DATAフレームからのデータをGSMS経由でSATAポートへ送ることと、FCポートを介してFC調停ループ又はその他のFCファブリックへの送信のためのFCフレームの生成と、GSMS経由でSATAポートから取得されたデータの発信FCP−DATAフレームへの組み込みとに関係がある経路である。性能がクリティカルではない(non-performance-critical)経路は、CPU1814及び1816をストレージシェルフ・ルータの種々の論理コンポーネントと直接的に相互接続する種々のプログラムドI/Oインターフェイスを含む。例えば、中央調停スイッチ1820と、GSMS、SLポート層、及び内部バスブリッジ1822との間にPIOインターフェイスが存在し、内部バスブリッジは、今度は、17台のUARTポート1824と、ICバスインターフェイス1826と、汎用PIOインターフェイス(GPIO)1828と、タイマーコンポーネント1830と、数台の割り込みコントローラ1832と相互接続される。これらのPIOインターフェイスは、図18に太字ではない両矢印1834〜1836として表される。その上、CPU1814及び1816とフラッシュメモリコントローラ1840との間にPIOインターフェイス1838が存在し、フラッシュメモリコントローラは、次に、外部フラッシュメモリ1842とインターフェイスをとる。外部フラッシュメモリは、特定の設定管理情報及びファームウェア画像を記憶するため使用される。CPUはメモリアクセス1844を介して内部SRAMコントローラ1846に接続され、内部SRAMコントローラ1846は、次に、ストレージシェルフ・ルータ内、及びストレージシェルフ・ルータ間でフェイルオーバーを命令するファームウェアルーチンを含む、ノンパフォーマンス(non-performance)経路のコード及びデータを記憶する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ポートは、FC調停ループ又はその他のFCファブリックからの入力シリアルデータを入力FIFOへ渡されるFCフレームへ共に変換し、出力FIFOへ書き込まれる出力FCフレームをFC調停ループ又はその他のFCファブリックへ送信されるシリアルデータへ変換する物理層ロジック及びリンク層ロジック1914〜1917を含む。
図20はルーティング層のより詳細なブロック図表示である。図20に表されるように、ルーティング層2002はFCポートのそれぞれを取り扱う別個のルーティングロジック2004及び2006を含む。ルーティング層は、入力FCフレームを適切なキューへ経路制御するため必要なルーティング判定を容易化するため、本質的に非常に高速にアクセスされるメモリであるレジスタに格納されたルーティングテーブル2008をさらに含む。FCデータフレームは、上記のように、FDM2011を介してFISM2010及び2012の制御下でGSMS層2015にルータによってかなり直接的に経路制御されることに注意すべきである。ファームウェア処理を要求するフレームは、ルーティング層によって、CPUDM2017及び2018を介してFBQM2014及び2016の制御下で入力キューへ経路制御される。
図21はFCP層のより詳細なブロック図表示である。図21に表された内部コンポーネントのうちの殆どは既に説明されているか、又は、後のセクションでより詳細に説明される。一般に、一方で2台のFCポート1902及び1904を担当し、他方で2台のCPU2012及び2014を担当するために重複したコンポーネントの組が配置されることに注意すべきである。出力フレームを生成するため必要な情報は、ファームウェア制御下でCPUによって生成され、主として単一CPUと個々に関連付けられた共有メモリ2106及び2108に格納される。各メモリに格納された情報は、次に、送信のため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ポートは、一体としてSATAインターフェイスを実施する物理層2302、リンク層2304、及びトランスポート層2306を含む。トランスポート層は、相互接続されたSATAディスクから到着するデータ転送の部分及びATAメッセージ情報を記憶する入力バッファ2308と、GSMS層からのデータ転送の部分、並びに、インターフェイスからCPU及び共有メモリへ送られるATAコマンドを記憶する出力バッファ2310とを含む。SATAポートに関するさらなる詳細は他のセクションで議論される。
ストレージシェルフ・ルータのルーティング層
図24は、4台のストレージシェルフ・ルータ型の高可用性ストレージシェルフ内のルーティングトポロジーの抽象的な表現を表す。この抽象的な表現は以下の説明のために有用なモデル及びテンプレートである。図24に表されるように、各ストレージシェルフ・ルータ2402〜2405は、1次リンクを介して、ディスクドライブ2406のようなn台のディスクドライブに接続される。上記のように、各ストレージシェルフ・ルータは、2次リンクを介して、近傍のn台のディスクドライブの組に接続されるが、2次リンクは、図24では、単純化するために図示されていない。1台のストレージシェルフ・ルータ2402は、ファブリックX 2408と呼ばれる第1のFC調停ループ、又は、その他のFCファブリックに関してストレージシェルフ・ルータの組全体のための終点又はFCノード接続ポイントとしての役割を担う。別のストレージシェルフ・ルータ2405は、終点、又は、第2の調停ループ、若しくは、ファブリックYと呼ばれるその他のFCファブリック2410へのFCノード接続としての役割を担う。各ストレージシェルフ・ルータは、例えば、ストレージシェルフ・ルータ2402のXポート2412及びYポート2414のように、2台のFCポート、すなわち、Xポート及びYポートを含む。4台のストレージシェルフ・ルータは、内部ポイントツーポイントFCリンク2416、2418及び2420と相互接続される。例えば、ストレージシェルフ・ルータ2404のような特定のストレージシェルフ・ルータの場合、ファブリックXから入力するFCフレームはXポート2422で受信され、ストレージシェルフ・ルータ2404によってファブリックXへ出力されるFCフレームはXポート2422を介して出力される。同様に、入力FCフレーム及び出力FCフレームは、それぞれ、Yファブリックから受信され、Yファブリックへ向けられ、FCポート2424を介して入力され出力される。特定のFCポートのXファブリック及びYファブリックへの割当は設定可能であり、以下の例示のための実施例及び実施例を参照する説明では、FCポート0がXファブリックポートであり、FCポート1がYポートであると仮定されているが、逆の割当も設定可能であることに注意すべきである。
Sファブリック内で使用され、「Sビット」と称されるFCフレームヘッダのDF_CTLフィールド内の2ビット予約サブフィールドによってそのものとして特定されるSファブリック管理フレームは、Xポート又はYポートのいずれか、及びポイントツーポイントの内部FCリンクを介してストレージシェルフ・ルータの間に向けられる。各ストレージシェルフ・ルータは、ストレージシェルフ内で一意であり、かつ、管理フレームにおいてFCフレームヘッダの一部D_IDフィールドを形成するルータ番号が割り当てられる。ストレージシェルフ・ルータは、Xファブリック及びYファブリックの一方に関して厳密に増加する順序に番号付けされ、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ファブリック終点(endpoint)として機能し、ストレージシェルフ・ルータ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〜Eは、本発明の一実施形態を表すストレージシェルフ内の特定のFCポートを介してFCフレームを特定のストレージシェルフ・ルータ又は遠隔のエンティティへルーティングするため使用されるFCフレームヘッダ内のデータフィールドを示す。FCフレームヘッダは図3を参照して既に記載した。当然ながら、FCヘッダは、フレームを、単一のFCノードを介してFC調停ループ又はその他のFCファブリックへ一体的にインターフェイスを取るストレージシェルフ・ルータと相互接続されたディスクドライブではなく、FCノードへ向けるため設計される。したがって、ストレージシェルフ内のストレージシェルフ・ルータ及びSATAディスクドライブ設定へのFCフレームヘッダフィールドのマッピングはFCフレームの適切な宛先のために必要である。FCフレームヘッダの3バイトのD_IDフィールドは、FCノードのノードアドレスを表す。FC調停ループの場合、D_IDの最上位2バイトは、一般に、非公開ループのための値「0」をとり、最下位バイトは、127ノードのうちの一つを指定する調停ループ物理アドレス(AL_PA)を含む。一般的に、少なくともあるノードアドレスはディスクアレイ・コントローラのため使用され、別のノードアドレスはファブリック調停ループアドレスのため予約される。3バイトのS_IDフィールドは、フレームが作り出されたノードのノードアドレスを含む。一般に、S_IDフィールドはディスクアレイ・コントローラのノードアドレスであるが、ストレージシェルフはFCファブリックに直接的に相互接続され、その場合、S_IDは、ストレージシェルフにアクセスする非常に多数の遠隔のエンティティのうちのいずれかの24ビットFCファブリックアドレスの全体である。
図26Aに表されるように、FCフレームヘッダ2606のDF_CTLフィールド2604内の2個の予約ビット2602は、ストレージシェルフ内に、或いは、換言すれば、Sファブリック内に記憶され、送信されたフレームのある種の宛先指標、すなわち、コンパス2608として利用される。以下の表4はこの宛先指標の符号化を表す。
Figure 2007501987
ビットパターン「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フレームヘッダのR_CTLフィールドは、FCP_CMNDフレーム、FCP_DATAフレーム、FCP_XFER_RDYフレーム、及びFCP_RSPフレームの表示を含むFCフレームのタイプの表示を格納する。このフィールドはフレームがどのように処理されるべきであるかを迅速に決定するためルーティングロジックによって使用される。
図26Bは、FCP−CMNDフレームのルーティングと関連したFCフレームヘッダフィールドを説明する。D_IDフレーム2610はFCフレームを特定のFCノードへ向けるが、上記のように、ストレージシェルフは、トランスペアレント・モードで動作するとき、複数のノードを含み、トランスペアレント・モードで動作しないとき、単一のD_IDを収容するすべてのFCフレームを分散させる必要がある複数のデータ記憶デバイスを含む。ストレージシェルフ・ルータのルーティングロジックは、本質的に、D_IDと、ストレージシェルフと、ストレージシェルフ・ルータと、最終的には、ディスクドライブの間の種々のマッピングの取り扱いのために用いられる。ルーティングロジックは、FCフレームがストレージシェルフ・ルータへ向けられているかどうかをD_IDフィールドの値だけからは決定できない。D_IDが入力FC_CMNDフレームをストレージシェルフ・ルータへ向けるかどうかを決定するために、ルーティングロジックは、後述の内部ルーティングテーブル2612及び複数のレジスタを参考にして、D_IDがストレージシェルフ・ルータによって管理されるディスクドライブのアドレスを表現するかどうかを決定することが必要である。よって、図26Bに表されるように、内部ルーティングテーブル2612に関して解釈されるD_IDフィールドは、ストレージシェル2616内の特定のストレージシェルフ・ルータ、及びストレージシェルフ・ルータに相互接続された特定のディスクを指定する。その上、ルーティングロジックは、S_IDフィールド2611によって指定されたFCフレームのソースがストレージシェルフ・ルータを用いて現在ログインされている遠隔のエンティティであるか、及びその遠隔のエンティティがアドレス指定されたディスクドライブと相互接続されているかを判定するために、後述の付加内部テーブル2614を参考にする。よって、種々の内部テーブル2614に関して解釈されるようなS_IDフィールドは、FC−CMNDフレームによって表現されるコマンドが実行されるべきかどうかを決定する許可スイッチ2620として機能する。
図26CはFCP−DATAフレームのルーティングと関連したFCフレームヘッダフィールドを示す。D_IDフィールド2610及びS_IDフィールド2611と内部テーブル2612及び2614は、FCP−CMNDフレームのルーティングと同様に、ストレージシェルフ2616内の特定のストレージシェルフ・ルータ、及びストレージシェルフ・ルータに相互接続されたディスクを指定し、データのディスクへの転送を許可2620するため使用される。しかし、FCP_DATAフレームはマルチFCP_DATAフレームの書込みシーケンスの一部分であるため、ルーティングロジックがFC_DATAフレームはストレージシェルフ・ルータにローカルであるディスクへ向けられることを判定すると、FCフレームヘッダ2606の付加フィールドはストレージシェルフ・ルータ内のFCP_DATAフレームを方向付けるために利用される。図26Cに表されるように、RX_IDフィールド2622は、FCP_DATAフレームに関連した書込みコマンドを指定したFCP_CMNDフレームの処理中に、ストレージシェルフ・ルータによって初期的に生成された値を含み、その値が書込みコマンドのコンテキスト2624を指定し、このコンテキストは、次に、データがGSMSを介してFCP層からSATAポート層へ転送できるようにする仮想キュー2626を指定する。その上、FCフレームヘッダ2606のパラメータフィールド2628は、書込みコマンドによって転送されたデータ2632の一連の全長の範囲内のFCP_DATAフレームに収容されたデータの位置2630を示すデータの相対オフセットを含む。コンテキスト2624は、適切な順序付けのためFCP_DATAフレームをチェックするため使用される次のFCP_DATAフレームの予想相対オフセットを格納する。格納された予想相対オフセットがパラメータフィールドの値と一致しないならば、FCP_DATAフレームは乱れた順序で受信されているので、エラー処理を呼び出すことが必要である。
図26Dは、内部的に生成された管理ファイルのルーティングに関連したFCフレームヘッダフィールドを示す。Sビット(図26Aの2602)は、フレームが管理フレームであることを示す。管理ファイルの場合、D_IDフィールド2610の最下位バイトは、ストレージシェルフ内の特定のストレージシェルフ・ルータを指定するルータ番号を含む。D_IDフィールドに含まれるルータ番号は、管理フレームがストレージシェルフ・ルータ、例えば、ストレージシェルフ・ルータ2636へ向けられているか、又は、管理ファイルがXファブリックに関連したFCポート2638、又は、Yファブリックに関連したFCポート2640を介してアクセス可能であるストレージシェルフ内の別のストレージシェルフ・ルータへ向けられているかを判定するため、後述されるレジスタ2634に含まれるローカルルータ番号と比較される。
最後に、図26Eは、受信されたFCP_XFER_RDYフレーム及びFCP_RSPフレームのルーティングに関連したFCフレームヘッダフィールドを示す。FCP_XFER_RDYフレーム及びFCP_RSPフレームの場合、ルーティングロジックは、別のストレージシェルフ・ルータによって、遠隔のエンティティ、典型的にはディスクアレイ・コントローラへ向けられるようなフレームを直ちに認識する。よって、ルーティングロジックは、フレームがXファブリック又はYファブリックは返信されなければならないことを決定するために、FCフレームヘッダのR_CTLフィールド2642を調べることだけが必要である。
図27は、ルーティングロジックによるFCフレームのルーティングを容易化するためにストレージシェルフ・ルータ内に保持された7個のメインルーティングテーブルを示す。これらのテーブルは、内部ルーティングテーブル(IRT)2702、Xファブリック外部ルーティングテーブル(ERT_X)2704、Yファブリック外部ルーティングテーブル(ERT_Y)2706、Xファブリック・イニシエータ/ターゲットテーブル(ITT_X)2708、Yファブリック・イニシエータ/ターゲットテーブル(ITT_Y)2710、Xファブリック・ログイン・ペアテーブル(LPT_X)2712、及びYファブリック・ログイン・ペアテーブル(LPT_Y)2714を含む。7個のルーティングテーブルのそれぞれは、インデックスレジスタ(IRT_INDEX)2716及びデータレジスタ(IRT_DATA)2718のようなインデックス及びデータレジスタが関連付けられる。テーブルの内容は、テーブル内の特定のフィールドを示す値をインデックスレジスタに書き込み、データレジスタからフィールドの内容を読み出し、又は、フィールドの新しい内容をデータレジスタに書き込むことによりCPUによってアクセス可能である。その上、ルータ番号と、Xファブリック及びYファブリックのそれぞれに関してストレージシェルフ・ルータ・アドレスに対応するD_IDの上位2バイトとを格納するため3個のレジスタSFAR2720、XFAR2722及びYFAR2724が存在する。これは、D_IDの下位バイトだけを格納すればよいIRT、ERT_X及びERT_Yテーブルをよりコンパクトにすることが可能である。
IRTテーブル2702は、ストレージシェルフ・ルータに接続されたディスクドライブ毎に、又は、換言すれば、ローカルディスクドライブ毎に行を含む。行は、ディスクドライブに割り当てられ、ディスクドライブへ向けられたフレームのD_IDフィールドの下位バイトに収容されたAL_PAと、ディスクドライブのLUN番号と、ディスクドライブ内に収容された論理ブロックアドレスの範囲と、2台のCPUのうちI/Oに向けられた方のCPUを示すフィールドと、行がテーブル内の有効エントリーを表現するかどうかを示す有効ビットとを含む。有効ビットは最大可能台数未満のディスクドライブがストレージシェルフ・ルータに接続されるときに好都合である。
ERT_Xテーブル2704及びERT_Yテーブル2706は、ストレージシェルフ・ルータにローカルではなく、ストレージシェルフにローカルであるディスクドライブをアドレス指定する有効D_IDの下位バイトを収容する。これらのテーブルは、後述するように、無駄な内部FCフレーム転送を避けるために使用される。
XファブリックITTテーブル2708及びYファブリックITTテーブル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_FP1」と称される出力FIFO2816及び2818の一方にFCフレームを書き込むことにより、FCフレームを、一般的にフレームが受信されたポートは反対側のポートであるFCポートへ戻す。ルーティング層は、FCP_DATAフレームを、仮想キューを介して、GSMS層にかなり直接的に転送し、プロセス「To_GSMS」と称され、さらに、FCフレームを処理のためFCP層2810に転送し、「To_FCP」と称される。名称「From_FP0」、「From_FP1」、「To_FP0」、「To_FP1」、「To_GSMS」及び「To_FCP」は、FIFOからの読出し、FIFOへの書込み、GSMS仮想キューメカニズムによるデータ転送、及びCPUへの共有メモリインターフェイスによる状態機械介在型転送のプロセスの省略表記としてフロー制御図で利用される。
図29は、ルーティング層ロジックを表現する第1の最上位レベルのフロー制御図である。ルーティング層ロジックは、入力FCフレームをその適切な宛先へ向けるために行われる判定の組として記述される。機能するストレージルータにおいて、図29〜35に関して記載されたルーティングロジックは入力FCフレームが処理されるときに呼び出される。ルーティングロジックは、ストレージシェルフ・ルータの状態機械及び論理回路内にある。ストレージシェルフ・ルータは、蓄積交換性の(store-and-forward)、データコピータイプの内部データ転送をできる限り避け、その代わりに、FCポートのFIFOへ入力されているときでさえ、フレームヘッダ内の情報を使用して、フレームが経路制御可能であるようにストリーム化されるように設計される。換言すれば、ルーティングロジックは、フレームヘッダがFIFOからの読出しのため利用可能になると直ちに呼び出され、フレームが経路制御され、フレームに収容された初期データが、FCポートによる残りのデータの受信と並行してその宛先へ転送される。ストレージシェルフ・ルータは、2台のFCポートの2台の異なる入力FIFOの偏りのない処理を確保するため調停ロジックを含むので、XファブリックとYファブリックの両方から入力するFCフレームは適時に取り扱われ、XファブリックとYファブリックのいずれも不必要なFCフレーム処理遅延、すなわち、飢餓状態に陥ることがない。ルーティングロジックは、FIFOに新たに到着したフレームヘッダの利用可能性を示すFCポートによって生成された信号により呼び出される。
ステップ2902において、ルーティング層ロジック(RLL)は、それぞれ「From_FP0」及び「From_FP1」と称されるFCポートの入力FIFOの一方から次の入力FCフレームを読む。ステップ2904において、ルーティング層ロジックは、フレームヘッダを含むFCフレームがクラス3のFCフレームであるかどうかを判定する。クラス3のFCフレームだけが記載されたストレージシェルフ・ルータの実施形態によってサポートされる。FCフレームがクラス3のフレームでないならば、FCフレームは、ステップ2906におけるエラー処理のため、FCP層、To_FCP、へ向けられる。尚、これ以降のフロー制御図では、フロー矢印に付随する小文字の「e」は、その矢印によって表現されたフローがエラー状態を取り扱うために起こることを示す。FCフレームが、ステップ2904で判定されるように、クラス3のFCフレームであるならば、RLLは、次に、ステップ2908において、FCフレームの受信元であるFCポートがSファブリック終点であるか、換言すれば、Xファブリックノード若しくはYファブリックノードであるかどうかを判定する。ストレージシェルフ・ルータは、特定のポートがSファブリックに関して終点であるかどうかを、換言すれば、設定可能なセッティングからXファブリックノード若しくはYファブリックノードであるかどうかを判定可能である。FCフレームヘッダは、上記のようにソースポートのポートアドレスを含む。
FCフレームのソースポートがSファブリック終点であり、FCフレームがローカルSファブリックの外部にあるエンティティから受信されたことを示すならば、RLLは、ステップ2910において、SビットのいずれかがFCフレームヘッダのDF_CTLフィールド内にセットされたかどうかを判定する。もしそうであるならば、エラーが発生しており、FCフレームは、ステップ2906のエラー処理のためFCP層、To_FCP、へ向けられる。そうでないならば、FCフレームがXファブリック、すなわち、Xスペース、又は、Yファブリック、すなわち、Yスペースに属するかどうかを示すために、ステップ2912において、適切なSビットがセットされる。ストレージシェルフ内で相互接続されたストレージシェルフ・ルータの組内でのストレージシェルフ・ルータの位置とは無関係に、2台のFCポートのうちの一方がXファブリックに対応し、2台のFCポートのうちのもう一方がYファブリックに対応することに注意すべきである。上記のように、FCポートとX及びTファブリックとの間の関連性は設定可能である。次に、RLLは、ステップ2914において、SビットがフレームはSファブリックフレームであることを示すためにセットされるかどうかを判定する。もしそうであるならば、ステップ2916において、フレームの宛先を決定するためにサブロジック「宛先管理(Management Destination)」が呼び出され、その後、サブロジック「宛先へのルーティング(Route to Destination)」がFCフレームをステップ2916で決定された宛先へ実際に経路制御するため、ステップ2918において、呼び出される。FCフレームが、ステップ2914で判定されるように、Sファブリック管理フレームでないならば、ステップ2920において、RLLは、各ディスクドライブがその固有のFCノードアドレスを有するモードとして記載されたトランスペアレント・モードでRLLが現在動作しているかどうかを判定する。ストレージシェルフ・ルータがトランスペアレント・モードで動作しているならば、サブロジック「トランスペアレントデスティネーション(Transparent Destination)」が、ステップ2922において、フレームの宛先を決定するために呼び出され、次に、サブロジック「宛先へのルーティング」がフレームをその宛先へ実際に経路制御するためにステップ2918において呼び出される。そうでなければ、サブロジック「宛先(Destination)」が、ステップ2924において、フレームの宛先を決定するために呼び出され、その後、フレームは、ステップ2918におけるサブロジック「宛先へのルーティング」の呼び出しによって、その宛先へ経路制御される。
図30は、図29のステップ2916から呼び出されるサブロジック「宛先管理」のフロー制御図表示である。ステップ3002において、RLLは、FCフレームのヘッダ内のD_IDに格納されたストレージシェルフ・ルータ番号がストレージシェルフ・ルータのストレージシェルフ・ルータ番号に一致するかどうかを判定する。この判定は、ストレージシェルフ内のストレージシェルフ・ルータに割り当てられ、SFARレジスタに格納されたルータ番号を使用して行える。D_IDに格納されたルータ番号が、ステップ3002で判定されるときに、SFARレジスタ内のルータ番号と一致するならば、変数「DESTINATION」がステップ3004において値「To_FCP」にセットされ、フレームがFCP層へ送信されるべきことを示す。ルータ番号が一致しないならば、ステップ3006において、RLLはFCフレームのD_ID内のルータ番号がストレージシェルフ・ルータのルータ番号よりも大きいかどうかを判定する。FCフレームのD_ID内のルータ番号がSFARレジスタに格納されたストレージシェルフ・ルータのルータ番号よりも大きいならば、制御はステップ3008へ進む。さもなければ、制御はステップ3010へ進む。ステップ3008と3010の両方において、RRLは、フレームがストレージシェルフ内のSファブリック終点に到達したかどうかを判定する。そうであるならば、管理フレームは、誤ってアドレス指定されたか、又は、適切な宛先により誤って対応されているので、どちらの場合も、変数「DESTINATION」は、ステップ3004において、「To_FCP」にセットされ、その結果、そのフレームは、過って受信されたフレームとしてCPUによって処理される。しかし、ステップ3008と3010の両方において、現在のストレージシェルフ・ルータがSファブリック終点でないならば、変数「DESTINATION」は、D_ID内のルータ番号が現在のルータのルータ番号より小さい場合、ステップ3012において、「To_FP0」にセットされ、D_ID内のルータ番号が現在のストレージシェルフ・ルータのルータ番号よりも大きい場合、変数「DESTINATION」は、ステップ3014において、「To_FP1」にセットされる。ストレージシェルフ内のストレージルータの数値識別番号は、Xファブリックに関して増加し、Yファブリックに関して減少することに再度注意すべきである。
図31は、図29のステップ2924から呼び出されるサブロジック「宛先」のフロー制御図表示である。このサブロジックは、ストレージシェルフ・ルータがトランスペアレント・モードで動作していないとき、換言すれば、ストレージシェルフ・ルータが複数台のディスクドライブをAL_PAにマッピングしているときに、FCフレームの宛先を決定する。ステップ3102において、RLLは、フレームがXFER_RDY又はRSPフレームであるかどうかを判定する。これらのフレームはディスクアレイ・コントローラへ返信される必要がある。そうであるならば、ステップ3103において、RLLはフレームがXファブリックに属するどうかを判定する。フレームがXファブリックに属するならば、変数「DESTINATION」は、ステップ3104において、値「To_FP0」にセットされ、フレームをX FCポートへ向ける。フレームが、ステップ3102において判定されるときに、Yファブリックフレームであるならば、変数「DESTINATION」は、ステップ3106において、フレームをY FCポートへ向けるために「To_FP1」にセットされる。ステップ3102において判定されるときに、フレームがXFER_XFER_RDYフレーム又はFCP_RSPフレームではないならば、ステップ3108で、RLLルーチンはそのフレームがFCP_CMNDであるかどうかを判定する。もしそうであるならば、変数「DESTINATION」は、ステップ3110で、「To_FCP」にセットされ、そのフレームはストレージシェルフ・ルータにローカルであるLUNへ向けられたFCP_CMNDフレームであること、及び、そのフレームはFCPコマンドのためのコンテキストを確立するためにファームウェア処理のためのFCP層へ向けられるべきであることを示す。ステップ3108で判定されるときに、フレームがFCP_CMNDフレームではないならば、ステップ3112で、RLLはそのフレームがFCP_DATAフレームであるかどうかを判定する。そのフレームがデータフレームではないならば、変数「DESTINATION」は、ステップ3114で、「To_FCP」にセットされ、エラー処理を呼び出し、そのエラー処理を用いてファームウェアは、受信されたフレームのタイプとそのフレームが処理されるべき方法を判定する。ステップ3112で判定されるときに、フレームがFCP_DATAフレームであるならば、ステップ3116で、RLLは、そのフレームがレスポンダ又はオリジネータによって送信されたかどうかを判定する。そのフレームがオリジネータによって送信されているならば、変数「DESTINATION」はステップ3110で「To_FCP」にセットされ、そのフレームをFCP層処理へ導く。データフレームがレスポンダによって送信されているならば、ステップ3118で、RLLは、フレームが最初にSファブリックの外部から受信されたか、又は、フレームヘッダ内のSビット符号化されたファブリック表示がそのフレームを受信したポートとは反対側のポートと矛盾するかどうかを判定する。いずれかの条件が真であるならば、フレームは誤って受信されたものであり、変数「DESTINATION」は、ステップ3114において、「To_FCP」にセットされ、そのフレームをエラー処理のためCPUへ向ける。そうでなければ、制御はステップ3103へ進み、Xポート又はYポートのいずれかへ向かう。
図32は、図29のステップ2922から呼び出されるサブロジック「トランスペアレントデスティネーション」のフロー制御図表示である。このサブロジックは、ストレージシェルフ・ルータがトランスペアレント・モードで動作し、各ディスクドライブがその固有のAL_PAを有するときに、FCフレームの宛先を決定する。ステップ3202で、RLLは、FCフレーム内のヘッダのD_IDフィールドの上位2バイトがフレームを受信したソースポートに対応するXFARレジスタ又はYFARレジスタの内容と等価であるかどうか、並びに、D_IDフィールドの下位バイトはAL_PAがローカルディスクドライブに割り当てられていることを示すIRTテーブルに収容されたAL_PAを含むかどうかを判定する。もしそうであるならば、FCフレームは現在のストレージシェルフ・ルータへ向けられている。そうでなければ、FCフレームは別のストレージシェルフ又はストレージシェルフ・ルータへ向けられている。FCフレームが現在のストレージシェルフ・ルータへ向けられている場合、ステップ3204で、RLLは、S_IDが適切なIITテーブルに収容されたS_IDに対応するかをチェックすることにより、FCフレームのオリジネータがストレージシェルフ・ルータと相互接続されたディスクドライブとのFCエクスチェンジを現時点で開始する能力を備えた外部FCオリジネータとして特定された遠隔のエンティティであるかどうかを判定する。そして、S_IDが適切なITTテーブルで見つけられた場合、RLLは、FC−フレームヘッダに収容されたS_IDと関連付けられた遠隔のエンティティがフレームの宛先とされたディスクに関して現在ログインされているかどうかを調べるために適切なLPTテーブルをさらにチェックする。ステップ3204で判定されるときに、S_IDが現在ログインされた遠隔のエンティティであり、かつ、ストレージシェルフ・ルータと相互接続されフレームの宛先とされたディスクドライブとのFCエクスチェンジを始める能力を備えた遠隔のエンティティを表すならば、ステップ3206で、変数「DESTINATION」は、フレームを処理のためFCP層へ向けるため「To_FCP」にセットされる。それに反して、S_IDが適切なIITテーブルではないか、又は、FCフレームが向けられたソース及びディスクドライブが、適切なLPTテーブルによって示されるように、現在ログインされていないならば、変数「DESTINATION」は、フレームをエラー処理のためFCP層へ向けるために、ステップ3208において、「To_FCP」にセットされる。
D_IDフィールドが、ステップ3202で判定されるときに、適切なFARレジスタの内容と一致しない場合、ステップ3210において、RLLは、フレームがXファブリックフレームであるかどうかを判定する。もしそうであるならば、ステップ3212において、RLLは、フレームがストレージシェルフ内の別のストレージシェルフ・ルータへ向けられているかどうかを判定する。そうでなければ、変数「DESTINATION」は、ステップ3214において、別のストレージシェルフへ転送する外部Xファブリックへフレームを返送するために、「To_FP0」にセットされる。ERT_Xテーブルが、ステップ3212で判定されるときに、フレームの宛先がストレージシェルフ内の別のストレージシェルフ・ルータに取り付けられたディスクドライブであることを示すエントリーを含むならば、ステップ3216において、RLLは、現在のストレージシェルフ・ルータがYファブリック終点を表現するかどうかを判定する。もしそうであるならば、フレームは正しく処理されず、Yファブリックには送信されないので、変数「DESTINATION」は、ステップ3208において、値「To_FCP」にセットされ、その結果として、フレームがエラー処理のためFCP層へ向けられる。そうでなければ、変数「DESTINATION」は、ステップ3218において、「To_FP1」にセットされ、Sファブリックを介してフレームをストレージシェルフ内の後続のストレージシェルフ・ルータに転送する。ステップ3210で判定されるときに、受信フレームがXファブリックフレームではないならば、ステップ3220において、RLLは受信フレームがYファブリックフレームであるかどうかを判定する。もしそうであるならば、フレームは、ステップ3222から始めて、Xファブリックフレームの処理と対称的かつ同等に処理される。そうでなければ、変数「DESTINATION」は、フレームをエラー処理のためFCP層へ向けるために、ステップ3208において、「To_FCP」にセットされる。
図33は、図29のステップ2918から呼び出されるサブロジック「宛先へのルーティング」のフロー制御図表示である。このサブロジックは、受信FCフレームを前に呼び出されたロジックで決定された宛先へ向ける。ステップ3302において、RLLは、変数「DESTINATION」の値が「To_FP0」又は「To_FP1」であるかどうかを判定する。もしそうであるならば、同じステップにおいて、RLLは、宛先がFCフレームを受信したポートの反対側のポートと関連付けられているかどうかを判定する。もしそうであるならば、ステップ3304において、RLLは、変数「DESTINATION」の内容によって示される宛先がSファブリック終点を表現するポートと関連付けられたキューであるかどうかを判定する。もしそうであるならば、ステップ3306において、FCフレームヘッダのDF_CTLフィールド内にセットされたSスペースビットは、ローカルSファブリックからフレームを送出する前にクリアされる。ステップ3308において、RLLは、フレームがXファブリックとYファブリックのどちらに属するかを判定し、ステップ3310又は3312において、フレームを適切な出力キューにキュー入れする。ステップ3302において判定されるときに、変数「DESTINATION」の内容がFP0ポート若しくはFP1ポートを示さないならば、又は、宛先がFCフレームを受信したポートの反対側ではないならば、ステップ3314において、RLLは、変数「DESTINATION」の内容がフレームは一方のFCポートへ向けられるべきであることを示すかどうかを判定する。フレームが一方のFCポートへ向けられるべきであるならば、フレームは、FCP層によるエラー処理のため、ステップ3316においてFCP層へ向けられる。ステップ3318でRLLによって判定されるときに、変数「DESTINATION」の内容が、フレームはFCP層、「To_FCP」へ向けられることを示すならば、フレームはステップ3316においてFCP層へ向けられる。そうでなければ、RLLは、ステップ3320において、FCフレームヘッダのR_CTLフィールドがそのフレームはFCPフレームであることを示すかどうかをチェックする。そうでなければ、フレームは、ステップ3316において、エラー処理のためFCP層へ向けられる。さもなければ、ステップ3322において、RLLは、フレームがFCP_CMNDフレームであるかどうかを判定する。もしそうであるならば、ステップ3324において、サブロジック「宛先をマッピング(Map Destination)」が呼び出され、その後、RLLは、ステップ3326において、変数「DESTINATION」の内容が「To_FCP」に一致したままであるかどうかを判定する。そうであるならば、フレームはステップ3316においてFCP層へ向けられる。さもなければ、変数「DESTINATION」の内容が今度は、ステップ3328で判定されるときに、2台のFCポートのうちの一方へのフレームの転送を示し、FCポート宛先がフレームを受信したフレームと同じFCポートであるならば、フレームは、ステップ3316において、エラー処理のためFCP層へ向けられる。さもなければ、制御はステップ3304へ進み、フレームを2台のFCPポートの一方に入れる。そのフレームが、ステップ3322で判定されるときに、FCP_CMNDフレームでないならば、サブロジック「他のルーティング(Other Routing)」がステップ3330で呼び出される。
図34は、ステップ3324で呼び出されるサブロジック「宛先をマッピング」のフロー制御図表示である。RLLは最初に、ステップ3402において、LUN、LBA、又は、LUNとLBAの組み合わせのマッピングが現時点でストレージシェルフ・ルータによって実行されているかどうかを判定する。実行されていないならば、RLLは、ステップ3404で、ストレージシェルフ・ルータがこの時点においてトランスペアレント・モードで動作中であるかどうかを判定する。もしそうであるならば、変数「DESTINATION」の値はステップ3406で「To_FCP」にセットされる。ストレージシェルフ・ルータが、ステップ3404で判定されるときに、トランスペアレント・モードで動作していないならば、RLLは、ステップ3408において、フレームのソースがフレームの宛先とデータを交換するためログインされていることを適切なLPTテーブルが示すかどうかを判定する。そうであるならば、変数「DESTINATION」はステップ3406において「To_FCP」にセットされる。そうでなければ、宛先は、フレームをエラー処理のためCPUへ向けるためにステップ3406において「To_FCP」にセットされる。LUN、LBA、又は、LUNとLBAの組み合わせのマッピングがストレージシェルフ・ルータによって実行中であるならば、RLLは、ステップ3410において、指定された宛先ディスクがIRTテーブルに関連したエントリーを有するかどうかを判定する。そうであるならば、制御はステップ3404へ進む。そうでなければ、ステップ3412において、RLLは、レンジチェックが無効にされているかどうかを判定する。レンジチェックが無効であるならば、ステップ3414において、RLLは、フレームがFP0ポートで受信されたかどうかを判定する。そうであるならば、変数「DESTINATION」はステップ3416で「To_FP1」にセットされる。そうでなければ、変数「DESTINATION」の内容はステップ3418で「To_FP0」にセットされる。レンジチェックが有効にされているならば、ステップ3420において、RLLは、指定された宛先ディスクがFP0ポートを介してアクセス可能であるかどうかを判定する。もしそうであるならば、制御はステップ3418へ進む。そうでなければ、ステップ3422において、RLLは、指定された宛先ディスクがFCポートFP1を介してアクセス可能であるかどうかを判定する。もしそうであるならば、制御はステップ3416へ進む。そうでなければ、変数「DESTINATION」は、エラー処理の目的のためステップ3406において「To_FCP」にセットされる。最終的なステップで、ステップ3416又はステップ3418のいずれかで2台のFCポートの一方へマッピングされたフレームに対し、RLLは、ステップ3424において、そのフレームがこの時点で向けられているポートがSスペース終点であるかどうかを判定する。もしそうであるならば、変数「DESTINATION」の値は、フレームをエラー処理のためFCPへ向けるためにステップ3406において「To_FCP」にセットされる。
図35は、図33のステップ3330におけるサブロジック「他のルーティング」のフロー制御図表示である。ステップ3502において、RLLは、フレームのRX_IDフィールドが現在のストレージシェルフ・ルータ、又は、それに接続されたディスクドライブがそのフレームのFCレスポンダであることを示すかどうかを判定する。もしそうであるならば、ステップ3504において、RLLは、フレームがFCP_DATAフレームであるかどうかを判定する。もしそうであるならば、ステップ3506において、RLLは、そのフレームの有効コンテキストが存在するかどうかを判定する。もしそうであるならば、フレームは、上記のように、データをSATAポートへ転送するため、ステップ3508においてGSMS、「To_GSMS」へ向けられる。そうでなければ、フレームは、ステップ3510において、エラー処理のためFCP層へ向けられる。FCフレームヘッダのRX_IDフィールドが、ステップ3502において判定されるときに、このストレージシェルフはフレームの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のいずれかで、そのフレームをそのフレームが属するファブリックに適したキューにキュー入れする。
SCSIコマンド/ATAコマンドの翻訳
上記のように、本発明の一実施形態を表すストレージシェルフ・ルータは、FCP_CMNDフレームがFCディスクドライブへ向けられているかのように、ディスクアレイコントロールによってストレージシェルフ・ルータへ向けられたFCP_CMNDフレームを処理し、FCP_CMNDフレーム内のSCSIコマンドを、SCSIコマンドを実行するためSATAディスクドライブへ送信され得る1個以上のATAコマンドに翻訳する。以下の表5は、ストレージシェルフ・ルータによって受信されたSCSIコマンドと、SCSIコマンドを実行するために使用されるATAコマンドとの間の対応関係を表す。
Figure 2007501987
ストレージシェルフ・ルータ・インターフェイスのトンネリング
図36Aは、本発明の一実施形態を表すストレージシェルフ・ルータを含むディスクアレイ内の概念的なインターフェイスレベルを示す。図36Aにおいて、ディスクアレイ・コントローラ3602はストレージシェルフ・ルータ3604を介してストレージシェルフとインターフェイスをとる。ストレージシェルフ・ルータは、次に、高可用性ストレージシェルフの内部ディスクドライブ3606〜3613のような内部大容量記憶デバイスとインターフェイスをとる。ストレージシェルフ・ルータ3604はディスクアレイ・コントローラ3602への仮想インターフェイスを提供する。例えば、ストレージシェルフ・ルータは、ディスクアレイ・コントローラ3602がストレージシェルフの記憶容量全体を4台の仮想論理ユニット3614〜3617として見るインターフェイスを提供する。ストレージシェルフ・ルータは、ディスクアレイ・コントローラ3602によって仮想論理ユニット3614〜3617へ向けられたアクセス動作を、ストレージシェルフ・ルータ3604によって内部ディスクドライブ3606〜3613へ向けられた対応するアクセス動作に翻訳する。ディスクアレイ・コントローラ3602は、仮想インターフェイスを使用するとき、ストレージシェルフ・ルータ3604、又は、内部ドライブ3606〜3613の実際の特性及び容量を意識しないが、その代わりに、ストレージシェルフ・ルータ3604によって提供された仮想インターフェイスの仮想論理ユニット3614〜3617だけを認識する。
上記のように、前のサブセクションにおいて、仮想インターフェイス及び仮想インターフェイスをサポートするメカニズムは相当に複雑であり、仮想インターフェイスは多数の複雑さと細部を隠すことによってディスクアレイ・コントローラに多大な利益をもたらす。しかし、ディスクアレイ・コントローラ3602のような外部処理エンティティが内部ディスクドライブ3606〜3613に直接アクセスすることを要求する状況がある。例えば、ディスクアレイ・コントローラは、マイクロコードを内部ディスクドライブへダウンロードすること、故障したディスクドライブを評価するため、若しくは、故障モードを予測するためにディスクドライブをテストすること、又は、種々のテスト用プロセスを実行することを必要とする。前のサブセクションに記載された、ストレージシェルフ・ルータによって一般的に提供される仮想インターフェイスは、外部処理エンティティによる内部ディスクドライブへのこのような直接アクセスを提供しない。
ストレージルータは、ディスクアレイ・コントローラのような外部処理エンティティへの直接ディスクインターフェイスを提供するように設計される。しかし、本発明の一実施形態を表すストレージシェルフ・ルータは、前のセクションに記載されたような仮想インターフェイスを提供するだけでなく、FC互換性がないディスクドライブがストレージシェルフで使用され、FCプロトコルによってアクセスされることを可能にする。多数のATAディスクドライブコマンドのような多数のデバイス専用コマンドは、FCPプロトコル内にかなり直接的な対応するコマンドを有するが、FCPプロトコルへ簡単に翻訳できない多数のデバイス専用及びベンダ専用コマンドが存在する。さらに、ストレージシェルフ・ルータは、このようなコマンドセット及びインターフェイスが非常に多種多様であるので、多数の異なるデバイス専用及びベンダ専用内部ドライブインターフェイスへのインターフェイスを簡単に準備できない。ある種の場合、外部処理エンティティは、ディスクドライブ製造業者によってストレージシェルフ・ルータ製造業者へ提供されていない特殊なコマンドを内部ディスクドライブへ向けることが必要である。よって、図36Aに表されるように、ディスクアレイ・コントローラ3602による内部ディスクドライブへのアクセスは、論理ユニット3614〜3717のような仮想インターフェイスを介するか、又は、外部エンティティがストレージシェルフ内に存在していると想定する仮想FCディスクドライブ3620〜3627へ向けられたFCディスクドライブコマンドを用いるアクセスに制限される。内部ディスクドライブがATAディスクドライブ3603〜3613である場合、ディスクアレイ・コントローラは、ディスクドライブ及びベンダ専用コマンドを内部ディスクドライブへ向けることができない。
図36Bは、本発明の一実施形態を表すストレージシェルフ・ルータ・インターフェイスのトンネリング方法及びシステムを示す。図36Bに示されるように、ストレージシェルフ・ルータは、一般的にストレージシェルフ・ルータによってディスクアレイ・コントローラに供給される仮想ストレージシェルフ3614〜3617と仮想ディスクドライブ3620〜3627を完全にバイパスして、ディスクアレイ・コントローラ3602がコマンドを内部ディスクドライブへ向け、そして、内部ディスクドライブから応答を受信するための直接的な経路、すなわち、トンネルを準備する。ストレージシェルフ・ルータは、ストレージシェルフ・ルータ・インターフェイス・トンネルを介して送受信されるコマンドを翻訳又は解釈せずに、単にFCフレームからデバイス専用コマンド及びベンダ専用コマンドをアンパックし、変更や翻訳がなされていないそのコマンドを内部ディスクドライブへ転送し、内部ディスクドライブからの応答を、変更や翻訳を加えずに、FCフレームにパッケージ化し、そのFCフレームをディスクアレイ・コントローラへ転送する。
ストレージシェルフ・インターフェイスのトンネリングの他に、ストレージシェルフ・インターフェイス・トンネルを実施するために使用されるメカニズムは、内部大容量記憶デバイス内に格納されたデータに向けられた通常のデータアクセス動作ではアクセスすることができないストレージシェルフ・ルータ内のフラッシュメモリ、パスコントローラカード、及び内部ディスクに格納された種々のデータ構造及び情報へアクセスするために、ディスクアレイ・コントローラのような外部処理エンティティによってさらに使用される。図37は、本発明の一実施形態を表す高可用性ストレージシェルフの種々のコンポーネントに含まれる種々のデータ構造を示す。高可用性ストレージシェルフの一実施形態では、ストレージシェルフ・ルータ3704内のフラッシュメモリ3702は、カスタマ指定のビヘイビヤ(behavior)データ構造3706とパーシステントログ(persistent log)データ構造3708を含む。これらのデータ構造は、カスタマ専用パラメータと、ストレージシェルフ・ルータによって環状バッファに記録されたエラー情報とを含む。同じ実施形態では、パスコントローラカード3712のようなパスコントローラカード内のフラッシュメモリ3710のようなフラッシュメモリは、ディスクドライブビヘイビヤデータ構造を含む。ストレージシェルフ・ルータ及びパスコントローラカードのファームウェアはさらにフラッシュメモリに格納される。データ構造及びファームウェアは、ストレージシェルフ・ルータ・インターフェイストンネリングのため利用されたメカニズムによってストレージシェルフとの間で読み書きされる。最後に、内部ディスクドライブ3618のセクタ3714及び3716のような各内部ディスクドライブ内のある特殊なセクタは、ストレージシェルフ・ルータによって初期化され保持されるが、ストレージシェルフ・ルータ・インターフェイストンネルを実施するメカニズムを用いて、ディスクアレイ・コントローラのような外部処理エンティティによって部分的にアクセスされる。
前のサブセクションに記載されるように、ディスクアレイ・コントローラのような外部処理エンティティは、ストレージシェルフ・ルータによって構築され保持された、ストレージシェルフのビュー、すなわち、仮想ストレージシェルフ・インターフェイスを介して、ストレージシェルフに格納されたデータにアクセスする。そのストレージシェルフ・インターフェイスは、一般に、1台以上の論理ユニットを提供するFCディスク又はSCSIデバイスとそれぞれが関連付けられた1個以上のファイバチャネルアドレスとして外部処理エンティティに見える。外部処理エンティティは、上記のようにFCPプロトコル内にパッケージ化されたSCSIプロトコルコマンドを使用してストレージシェルフ内のSCSIに準拠した大容量記憶デバイスと相互作用する。しかし、実際にはストレージシェルフ内に存在する大容量記憶デバイスは、上記のように、FC/SCSIに準拠しない。
ATAディスクドライブインターフェイスのようなネイティブ内部ディスクドライブインターフェイスと図37〜40を参照して説明された種々のデータ構造の両方へのディスクアレイ・コントローラのような外部処理エンティティによる直接アクセスを提供するために、ストレージシェルフ・ルータは、FCPコマンド、すなわち、(1)バッファ書込み(WRITE−BUFFER)、及び(2)バッファ読出し(READ−BUFFER)を利用する。これらのコマンドは、外部処理エンティティによってストレージシェルフ・ルータへ送信されたFCP_CMNDフレーム内にパッケージ化される。WRITE−BUFFER及びREAD−BUFFERは、現行のFC互換性装置の観点からは多少旧式であり、トンネリングメカニズムのため利用可能なプロトコル伝達手段を表す。
図38A〜Fは、WRITE_BUFFERコマンド及びREAD_BUFFERコマンドのFCP_CMND及びFCP_CMND CDBフィールドのレイアウトと、一例としてのコマンドヘッダ及び応答を表す。図38AはFCP_CMNDフレーム内のフィールドを表す。FCP_CMNDフィールドには、(1)宛先論理ユニットのアドレスを収容するLUNフィールド3802と、(2)タスク属性フィールド3804と、(3)種々のリセット及びアボート動作を指定するタスク管理フラグ3806と、(4)コマンド記述語ブロック(command descriptor block:CDB)3808と、(5)転送されるべき最大バイト数を指定するデータ長フィールドとが含まれる。ストレージシェルフ・ルータ・インターフェイスのトンネリングのため使用されるとき、LUNフィールドは、コマンドが向けられる特定のATAディスクドライブの表示を格納するが、別個のAL_PAが各内部ディスクドライブのため使用される場合には、LUNフィールドは0であり、WRITE_BUFFERコマンド及びREAD_BUFFERコマンドはFCフレームヘッダによってディスクドライブへ向けられる。ATAディスクアドレスは管理ツールを介して外部処理エンティティによって獲得され、それによってストレージシェルフの詳細な設定がアクセスされる。WRITE_BUFFERコマンド又はREAD_BUFFERコマンドの場合に、タスク管理フラグはセットされない。
図38Bは、汎用FCP_CMND CDBフィールドのレイアウトを表す。CDBは、(1)CDBによって提示されたコマンド及びCDBの長さを指定するオペレーションコードフィールド3810と、(2)指定されたコマンドのためのコマンド専用パラメータ3812と、(3)チェック状態処理及び多重コマンドリンクなどを指定する制御バイト3814とを含む。WRITE_BUFFERコマンド及びREAD_BUFFERコマンドの場合、本発明の一実施形態において、オペレーションコードフィールドは、それぞれ、値「00111011b」及び「00111100b」を格納し、制御バイトは「0」である。
図38CはWRITE_BUFFERコマンドのCDBを表す。WRITE_BUFFERコマンドのCDBは以下のコマンド専用パラメータを含み、すなわち、(1)モードフィールド3815は、値「01h」でベンダ専用モードが使用されることを示し、WRITE_BUFFERコマンドのタイプは後のバッファIDフィールドによって指定され、(2)バッファID3816は、WRITE_BUFFERコマンドによって要求される動作を本質的に指定し、要求される動作には、(a)ストレージシェルフ・ルータ及びオプション的なパスコントローラカードのファームウェアのダウンロード及びセーブ「00h」と、(b)デジタルドライブ・シグネチャーのディスクドライブ内の特殊セクタへの転送及び書き込み「01h」と、(c)カスタマ指定ビヘイビヤデータ構造のストレージシェルフ・ルータフラッシュメモリへの転送「02h」と、(d)ディスクドライブビヘイビヤデータ構造のパスコントローラフラッシュメモリへの転送及びセービング「03h」と、(e)ATAパススルー(ATA pass through:APT)又はトンネル化ATAコマンド「06h」と、(f)パスコントローラカードファームウェア「08h」とを含む。本質的に、バッファIDは、WRITE_BUFFERコマンドによって表現される要求された動作のタイプを指定するWRITE_BUFFERタイプフィールドであり、(3)バッファオフセットフィールド2818は無視され、(4)転送長フィールド3820は、コマンドヘッダ及び/又は後に続くFCP_DATAフレームのデータ・ペイロードサイズを指定し、この転送長は、カスタマ指定ビヘイビヤ及びディスクドライブ・ビヘイビヤデータ構造のようなデータ構造の場合には既知の固定長であり、APTコマンド及びファームウェアダウンロードの場合には可変長である。
図38Dは、APT、ストレージルータ・インターフェイスのトンネリングメカニズムの一部としてFCP_CMND WRITE_BUFFERフレームの後に続く後のFCP_DATAフレームで送信されたATAコマンドのコマンドヘッダのレイアウトを表す。コマンドヘッダに含まれるのは、(1)ストレージシェルフ・ルータによって使用されるべきATAコマンドのタイムアウト値を指定するタイムアウト値フィールド3821と、(2)多数のフラグ、すなわち、(a)デバイス内のデバイス制御レジスタにデバイス制御フィールド内の値が書き込まれるべきかどうかを表すDCVフラグ3822と、(b)ディスクドライブからの電源の除去を指定するPOFフラグ3824と、(c)ディスクの電源が回復されるべきことを示すPUPフィールド3826と、(d)ディスクドライブにハードリセットを出すべきことを指定するHRSTフィールド3828と、(e)プログラムドI/Oがコマンド転送のため使用されるかどうかを指定するPIOフィールド3830と、(f)コマンドがデータ転送に関係するかどうかを指定するデータフラグ3832と、(g)コマンドが読出しコマンドであるか書込みコマンドであるかを指定するRNWフラグとを含む多数のフラグと、(3)(データフラグがセットされている場合に)転送されるべきバイト数を指定するペイロード長3836と、(4)ATAコマンドを指定するために用いられる多数のATAコマンド専用フィールド3838である。
図38Eは、READ_BUFFERコマンドのCDBを表す。READ_BUFFER CDBは、上記のWRITE_BUFFER CDBに類似しているが、オペレーションコードフィールドは異なる値を格納し、転送長フィールド3840は要求中の外部処理エンティティへ返送されるべきデータの長さを指定し、バッファIDフィールド3842は、以下のREAD_BUFFERタイプ識別子、すなわち、(a)CSBが返送されるべき旨を示す「02h」と、(b)DDBが返送されるべき旨を示す「03h」と、(c)APT応答ヘッダが返送されるべき旨を示す「06h」と、(d)ディスク読出し動作からのデータのようなAPT応答ペイロードが返送されるべき旨を示す「07h」と、(e)パスコントローラファームウェア状態が返送されるべき旨を示す「08h」と、(f)パーシステントログデータが返送されるべき旨を示す「09h」と、(g)コンソールログデータが返送されるべき旨を示す「0Ah」のうちの一つを格納する。
図38Fは、READ_BUFFERコマンドの受信に続いてFCP_DATAフレームでストレージシェルフ・ルータによって返送されるATAコマンド応答のフォーマットを表す。ATAコマンド応答のフィールドはATA専用であり、ストレージシェルフ・ルータによって翻訳若しくは処理されることがない。ATA応答はFCP_DATAフレーム内で可変個のバイトとして返送される。
バッファIDフィールドによって指定された異なるWRITE_BUFFERタイプのそれぞれは、WRITE_BUFFER CDBを収容するFCP_CMNDの後に続くFCP_DATAペイロードの異なるフォーマットを利用する。異なるデータ・ペイロードは、例えば、ファームウェア書き込み、データ構造書き込み、及びデジタルディスクシグネチャー書き込みのため使用される。
図39A〜41は、本発明の一実施形態を表すAPTストレージシェルフ・ルータ・インターフェイスのトンネリングのため使用されるWRITE_BUFFERプロトコル及びREAD_BUFFERプロトコルと、そのプロトコルを実施する際の外部処理エンティティ及びストレージシェルフ・ルータの動作とを記述する制御フロー図である。図39A〜Bは、外部処理エンティティからストレージシェルフへのデータの転送が関係するときに、APTトンネリングという状況で、WRITE_BUFFERプロトコルを示す。図39A〜Bと、後に続く図40A〜41において、転送された実際のコマンドは、図の中央の垂直列に順番に現れ、外部処理エンティティの動作は図の左側部分に示され、ストレージシェルフ・ルータの動作は図の右側部分に示される。最初に、ステップ3902において、外部処理エンティティは、FCP_CMNDフレーム内にWRITE_BUFFER CDBを準備し、FCP_CMNDフレーム3904をストレージシェルフ・ルータへ送信する。FCP_CMNDコマンドは、ストレージシェルフ・ルータによって認識される特定のファイバチャネル調停ループアドレスへ向けられることに注意すべきである。種々の管理ツールは、外部処理エンティティ、及び/又は、ヒューマンユーザが、すべての内部ディスクドライブ、ストレージシェルフ・ルータ、パスコントローラカード、及びその他の内部ストレージシェルフコンポーネントのアイデンティティ(identity:ID)を判定することを可能にさせる。この情報は、外部処理エンティティが種々のコマンドをWRITE_BUFFERプロトコルによってストレージシェルフ内の特定のコンポーネントへ向けることを可能にさせる。
ストレージシェルフ・ルータは、ステップ3906において、FCPコマンドを受信し、FCP_XFR_RDYフレーム3908を外部処理エンティティへ返信し、ストレージシェルフ・ルータがWRITE_BUFFERコマンドに関連したデータを受信する準備が完了していることを示す。ステップ3910において、FCP_XFR_RDYフレームを受信し次第、外部処理エンティティは、コマンドヘッダをFCP_DATAフレームにパッケージ化し、FCP_DATAフレーム3912をストレージシェルフ・ルータに返信する。
ストレージシェルフ・ルータが、ステップ3914において、パッケージ化されたコマンドヘッダを受信するとき、ストレージシェルフ・ルータはコマンドヘッダを処理し、包含されたATAコマンドをターゲットATAディスクドライブへ送信し、ディスクドライブからのATAプロトコルのX−RDYパケットを待つ。コマンドをATAディスクドライブへ転送する際に、ストレージシェルフ・ルータは、ストレージシェルフ・ルータ内の種々のデータ転送リソースを割り付け、適切なSATAポートを初期化し、そのポートをロックし、そうでなければ、次のデータ転送の準備をする。ストレージシェルフ・ルータは、次に、別のFCP_XFR_RDYフレーム3916を外部処理エンティティへ送信し、ストレージシェルフ・ルータがデータを受信する準備が完了していることを示す。ステップ3918において、第2のFCP_XFR_RDYフレームを受信し次第、外部処理エンティティは、コマンドのデータ・ペイロードをFCP_DATAフレームにパッケージ化し、FCP_DATAフレーム3920をストレージシェルフ・ルータへ送信する。すべてのデータが第1のFCP_DATAフレームで転送されるならば、ステップ3922、3924、3926及び3928はスキップされ、ステップ3930が後述のように実行される。そうでなければ、ストレージシェルフ・ルータは、ステップ3922において、FCP_DATAフレーム内のデータを受信し、データをそのターゲットへ転送するために内部データ転送リソースを利用する。ストレージシェルフ・ルータは、必要に応じて、付加的なFCP_DATAフレームを要求するために別のFCP_XFR_RDYフレーム3924を返送する。コントローラは、ステップ3926において、付加データを後のFCP_DATAフレームにパッケージ化し、FCP_DATAフレーム3928をストレージシェルフ・ルータへ送信する。データ転送はすべてのデータが転送され終わるまでこのような形式で継続する。
この時点で、ストレージシェルフ・ルータは、ステップ3930において、最終的なデータフレームを受信し、データを転送し、ターゲットATAディスクドライブが実行されたコマンドの状態を報告する状態パケットを返送するまで待ち、内部データ転送リソースの割り付けを取り消し、WRITE_BUFFERコマンドの状態を含むFCP_STATUSフレーム3932を外部処理エンティティへ送信する。ステップ3934において、FCP_STATUSフレームを受信し次第、外部処理エンティティは、元の書き込みバッファ内にカプセル化されたATAコマンドの実行から生じる状態情報を受信するためにFCP_CMNDフレーム3936内のREAD_BUFFERコマンドをストレージシェルフ・ルータへ送信する。ストレージシェルフ・ルータは、ステップ3930において状態がストレージシェルフ・ルータによって既に受信され、ローカルに記憶された旨を返送し、そして、ステップ3938において、図38Fに表されるような応答フォーマットの状態をFCP_DATAフレーム3940内にパッケージ化し、そのFCP_DATAフレームは外部処理エンティティへ返送される。ストレージシェルフ・ルータは、次に、ステップ3942において、READ_BUFFERコマンドの完了を示すために、FCP_STATUS3944フレームを外部処理エンティティへ直ちに送信する。ステップ3946において、外部処理エンティティは、FCP状態フレーム及び応答ヘッダを受信し、データ転送動作の終了3948を示す。
図40A〜Bは、図39A〜Bの制御フロー図に類似し、ストレージシェルフから外部処理エンティティへデータを返送するAPT動作に関してWRITE_BUFFERプロトコル及びREAD_BUFFERプロトコルを記述する制御フロー図を表す。これらのステップの多くは、図39A〜Bにおいて既に説明したステップに類似し、簡潔さと明瞭さのために、図40A〜Bはそれほど詳細に記載されていない。外部処理エンティティは、ストレージシェルフ・ルータにデータを外部処理エンティティへ返送する動作の実行を準備するよう命令するために、WRITE_BUFFER CDBを含むFCP_CMNDフレーム4004をストレージシェルフ・ルータへ送信する。ストレージシェルフ・ルータは、FCP_XFR_RDYフレーム4008で応答し、外部処理エンティティがコマンドヘッダをFCP_DATAフレーム内にパッケージ化し、FCP_DATAフレーム4012をストレージシェルフ・ルータへ返信することを可能にさせる。ストレージシェルフ・ルータは、ステップ4014において、ターゲットATAディスクドライブとの通信のためのデータ転送コンテキストをセットアップし、WRITE_BUFFERコマンドに対する状態を報告するためにFCP_STATUSフレームを外部処理エンティティへ返信するが、ストレージシェルフ・ルータが外部処理エンティティから戻された、FCP_CMNDフレーム4020内にパッケージ化されたREAD_BUFFERコマンドを後で受信するまで、動作の実行の始動を延期する。その時点で、ストレージシェルフ・ルータは、ターゲットにコマンドの実行を命令し、ターゲットから受信されたデータを1個以上のFCP_DATA4024〜4025フレームで外部処理エンティティへ返信する。最終的に、ストレージシェルフ・ルータは、コマンドの完了を知らせるためにFCP_STATUSフレーム4028を外部処理エンティティへ送信すし、READ_BUFFERコマンドの状態を返送するが、ターゲットATAディスクドライブによって返送された状態を保持し続ける。外部処理エンティティは、次に、コマンドに対するATA状態を取り出すために第2のREAD_BUFFERコマンド4030をストレージルータへ送信し、ストレージシェルフ・ルータは、このATA状態をFCP_DATAフレーム4032で返送し、次に、第3のFCP_STATUSフレーム4034で第2のREAD_BUFFERコマンドに対する状態を返送する。ステップ4036で第3のFCP_STATUSフレームを受信し次第、外部処理エンティティは元のAPT READコマンドが成功完了したことを判定する。
図41は、外部処理エンティティとストレージシェルフとの間でコマンド詳細及びリターン状態以外のデータを転送しない制御タイプコマンドと関連したAPTコンテキストにおけるWRITE_BUFFERコマンドプロトコル及びREAD_BUFFERコマンドプロトコルの制御フロー図である。外部処理エンティティは、制御タイプコマンドを開始するためにFCP_CMNDフレーム4014でWRITE_BUFFERコマンドをストレージシェルフ・ルータへ送信する。応答としてFCP_XFR_RDYフレーム4108を受信後、外部処理エンティティは、FCP_DATAフレーム4112内のコマンドヘッダをストレージシェルフ・ルータへ転送し、ストレージシェルフ・ルータは、ステップ4114において、受信されたコマンドヘッダを処理し、ターゲットによるコマンドの実行を開始し、コマンドの完了を待つ。ストレージシェルフ・ルータは、要求された動作の完了を待ち、ある種の場合に、ATAディスクドライブターゲットが完了状態を返信するまで待ち、パワーダウンのようなその他の場合には、ストレージシェルフ・ルータ自体がコマンド状態を決定する。最終的に、ストレージシェルフ・ルータは、動作のWRITE−BUFFERフェーズの完了を通知するFCP_STATUSフレーム4116を返送する。FCP_STATUSフレームを受信し次第、外部処理エンティティは、ストレージシェルフ・ルータがWRITE_BUFFERコマンドに含まれるコマンドに対する状態情報をFCP_DATAフレーム4124で返送するように、FCP_CMNDフレーム4120内のREAD−BUFFERコマンドをストレージシェルフ・ルータへ送信する。ストレージシェルフ・ルータは、最後に、READ_BUFFERコマンドの完了に関するFCP_STATUSフレーム4128を返送し、外部処理エンティティがステップ4130でこのFCP_STATUSフレームを受信し、制御動作の実行が完了したかどうかを判定する。
ストレージシェルフ・ルータ・インターフェイスのトンネリングの一実施形態の上記の制御フローに基づく説明において、エラー処理ステップは明瞭さと簡潔さのため省略されている。エラーは実行の種々の段階で検出され、多数の異なる実施固有の方法で取り扱われる。
本発明は特定の実施形態の観点で説明されているが、本発明がこの実施形態に限定されることは意図されていない。本発明の理念の範囲内における変更は当業者に明白である。例えば、上記の解説は、かなり上位の一般的な概念レベルで本発明の一実施形態を表すストレージシェルフ・インターフェイストンネリング技術を説明する。データの内部ルーティング及び転送と、WRITE−BUFFERコマンドによって開始される動作の詳細は、前のサブセクションで部分的に説明され、そうでなければ、実施及び装置に固有である。殆ど制限のない数の異なるハードウェア、ファームウェア、及びソフトウェア実施が本発明の一実施形態を表すWRITE−BUFFER及びREAD−BUFFERトンネリングメカニズムのため実現可能である。WRITE−BUFFERコマンド内に指定された動作のタイプは、付加データ構造及び内部ストレージシェルフ・ルータコンポーネントにアクセスするために、並びに、トンネリングが、ATAディスクドライブ以外のインターフェイス及び他のタイプの大容量記憶デバイスへのインターフェイスを含む代替的なタイプのインターフェイスを利用することを可能にさせるために必要に応じて拡張される。
上記の解説は、説明の目的のため、本発明の全体を通じた理解を与えるために特定の名称を使用した。しかし、当業者に明らかであるように、具体的な詳細は本発明を実施するために必要とはされない。換言すれば、周知の回路及び装置は根本的な発明から不必要に注意がそれることを避けるためにブロック図形式で表される。よって、本発明の具体的な実施形態の上記の解説は、例示と説明のために記載されたものであり、それらは、網羅的であること、或いは、発明を開示された形式そのままに制限することを意図せず、明らかに多数の変更及び変形が上記の教示内容に照らして可能である。実施形態は、本発明の原理及びその実際的な適用を最もよく説明し、それによって、当業者が本発明及び検討された特定用途に適するような実施形態と共に種々の実施形態を最もうまく利用することを可能にさせるために選択され記載された。本発明の範囲は特許請求の範囲及びその均等の範囲によって定められることが意図されている。
3種類のFC相互接続トポロジーの1タイプを表す図である。 3種類のFC相互接続トポロジーの1タイプを表す図である。 3種類のFC相互接続トポロジーの1タイプを表す図である。 FCネットワーク経由の転送のためデータが時間的に組織化された非常に簡単な階層を示す図である。 標準的なFCフレームの内容を表す図である。 SCSIバスを含む一般的なパーソナルコンピュータアーキテクチャのブロック図である。 SCSIバストポロジーを示す図である。 読出し及び書込み入出力動作の初期化と実施に伴うSCSIプロトコルを示す図である。 読出し及び書込み入出力動作の初期化と実施に伴うSCSIプロトコルを示す図である。 読出し及び書込み入出力動作の初期化と実施に伴うSCSIプロトコルを示す図である。 図6A〜6Cに記載されたイニシエータ及びターゲットとSCSIバスフェーズ及び状態との間で交換されたFCプロトコルのSCSIシーケンスへのマッピングを示す図である。 図6A〜6Cに記載されたイニシエータ及びターゲットとSCSIバスフェーズ及び状態との間で交換されたFCプロトコルのSCSIシーケンスへのマッピングを示す図である。 ディスクアレイでのFCディスクの使用に関連した複数の問題点を示す図である。 ディスクアレイでのFCディスクの使用に関連した複数の問題点を示す図である。 ディスクアレイでのFCディスクの使用に関連した複数の問題点を示す図である。 ディスクアレイでのFCディスクの使用に関連した複数の問題点を示す図である。 図8A〜Dのため利用された説明図の規約を使用して、本発明の一実施形態を表すストレージシェルフ・ルータを抽象的に示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータが階層的に相互接続されたコンピュータとディスクアレイのシステム内で占める位置を示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータを使用して実施されたストレージシェルフのコンポーネントの斜視図である。 本発明の一実施形態を表すストレージシェルフ・ルータを使用して実施されたストレージシェルフのコンポーネントの斜視図である。 本発明の一実施形態を表すストレージシェルフ・ルータを使用する3種類の実施のうちの一つを示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータを使用する3種類の実施のうちの一つを示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータを使用する3種類の実施のうちの一つを示す図である。 ATAディスクドライブを2台のストレージシェルフ・ルータと相互接続するため適したパスコントローラカードの二つの実施のうちの一つを示す図である。 ATAディスクドライブを2台のストレージシェルフ・ルータと相互接続するため適したパスコントローラカードの二つの実施のうちの一つを示す図である。 ストレージシェルフ・ルータの主要機能コンポーネントを示す上位レベルブロック図である。 本発明の一実施形態を表す1台以上のストレージシェルフ・ルータを組み込む高可用性ストレージシェルフによって提供される多数の異なる論理インターフェイスのうちの一つを示す図である。 本発明の一実施形態を表す1台以上のストレージシェルフ・ルータを組み込む高可用性ストレージシェルフによって提供される多数の異なる論理インターフェイスのうちの一つを示す図である。 本発明の一実施形態を表す1台以上のストレージシェルフ・ルータを組み込む高可用性ストレージシェルフによって提供される多数の異なる論理インターフェイスのうちの一つを示す図である。 本発明の一実施形態を表す1台以上のストレージシェルフ・ルータを組み込む高可用性ストレージシェルフによって提供される多数の異なる論理インターフェイスのうちの一つを示す図である。 本発明の一実施形態を表す1台以上のストレージシェルフ・ルータを組み込む高可用性ストレージシェルフによって提供される多数の異なる論理インターフェイスのうちの一つを示す図である。 本発明の一実施形態を表す1台以上のストレージシェルフ・ルータを組み込む高可用性ストレージシェルフによって提供される多数の異なる論理インターフェイスのうちの一つを示す図である。 本発明の一実施形態を表す1台以上のストレージシェルフ・ルータを組み込む高可用性ストレージシェルフによって提供される多数の異なる論理インターフェイスのうちの一つを示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータを通るデータ及び制御情報のフローを示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータを通るデータ及び制御情報のフローを示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータを通るデータ及び制御情報のフローを示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータを通るデータ及び制御情報のフローを示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータを通るデータ及び制御情報のフローを示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータを通るデータ及び制御情報のフローを示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータの論理コンポーネントの詳細なブロック図表示である。 FCポート層を詳細に表す図である。 ルーティング層を表す詳細なブロック図表示である。 FCP層を表す詳細なブロック図表示である。 SATAポート層を表す詳細なブロック図表示である。 SATAポートを表す詳細なブロック図表示である。 4台のストレージシェルフ・ルータ可用性のストレージシェルフ内のルーティングトポロジーを概略的に表した図である。 2台のストレージシェルフ・ルータ、すなわち、ディスクアレイの2台のストレージシェルフ・ルータの実施内でのX及びYのFC調停ループ相互接続の抽象的な表現を表す図である。 本発明の一実施形態を表すストレージシェルフ内の特定のFCポートを介してFCフレームを特定のストレージシェルフ・ルータ又は遠隔のエンティティへルーティングするため使用されるFCフレームヘッダ内のデータフィールドを示す図である。 本発明の一実施形態を表すストレージシェルフ内の特定のFCポートを介してFCフレームを特定のストレージシェルフ・ルータ又は遠隔のエンティティへルーティングするため使用されるFCフレームヘッダ内のデータフィールドを示す図である。 本発明の一実施形態を表すストレージシェルフ内の特定のFCポートを介してFCフレームを特定のストレージシェルフ・ルータ又は遠隔のエンティティへルーティングするため使用されるFCフレームヘッダ内のデータフィールドを示す図である。 本発明の一実施形態を表すストレージシェルフ内の特定のFCポートを介してFCフレームを特定のストレージシェルフ・ルータ又は遠隔のエンティティへルーティングするため使用されるFCフレームヘッダ内のデータフィールドを示す図である。 本発明の一実施形態を表すストレージシェルフ内の特定のFCポートを介してFCフレームを特定のストレージシェルフ・ルータ又は遠隔のエンティティへルーティングするため使用されるFCフレームヘッダ内のデータフィールドを示す図である。 ルーティング層によるFCフレームのルーティングを容易化するためストレージシェルフ・ルータ内に保持された7個のメインルーティングテーブルを示す図である。 フロー制御図で使用される簡易化されたルーティングトポロジー及びルーティング宛先の命名法を規定する図である。 ルーティング層ロジックを示す階層的な一連のフロー制御図である。 ルーティング層ロジックを示す階層的な一連のフロー制御図である。 ルーティング層ロジックを示す階層的な一連のフロー制御図である。 ルーティング層ロジックを示す階層的な一連のフロー制御図である。 ルーティング層ロジックを示す階層的な一連のフロー制御図である。 ルーティング層ロジックを示す階層的な一連のフロー制御図である。 ルーティング層ロジックを示す階層的な一連のフロー制御図である。 本発明の一実施形態を表すストレージシェルフ・ルータを含むディスクアレイ内の概念的なインターフェイスレベルを示す図である。 本発明の一実施形態を表すストレージシェルフ・ルータ・インターフェイストンネリング方法及びシステムを示す図である。 本発明の一実施形態を表す高可用性ストレージシェルフの種々のコンポーネントに含まれる種々のデータ構造を示す図である。 WRITE_BUFFER及びREAD_BUFFERコマンドのFCP_CMND及びFCP_CMND CDBフィールドレイアウトと、一例としてのコマンドヘッダ及び応答を表す図である。 WRITE_BUFFER及びREAD_BUFFERコマンドのFCP_CMND及びFCP_CMND CDBフィールドレイアウトと、一例としてのコマンドヘッダ及び応答を表す図である。 WRITE_BUFFER及びREAD_BUFFERコマンドのFCP_CMND及びFCP_CMND CDBフィールドレイアウトと、一例としてのコマンドヘッダ及び応答を表す図である。 WRITE_BUFFER及びREAD_BUFFERコマンドのFCP_CMND及びFCP_CMND CDBフィールドレイアウトと、一例としてのコマンドヘッダ及び応答を表す図である。 WRITE_BUFFER及びREAD_BUFFERコマンドのFCP_CMND及びFCP_CMND CDBフィールドレイアウトと、一例としてのコマンドヘッダ及び応答を表す図である。 WRITE_BUFFER及びREAD_BUFFERコマンドのFCP_CMND及びFCP_CMND CDBフィールドレイアウトと、一例としてのコマンドヘッダ及び応答を表すを表す図である。 外部処理エンティティからストレージシェルフ・ルータへのデータの転送が関係するときに、APTトンネル化のコンテキストにおけるWRITE−BUFFERプロトコルを示す図である。 外部処理エンティティからストレージシェルフ・ルータへのデータの転送が関係するときに、APTトンネル化のコンテキストにおけるWRITE−BUFFERプロトコルを示す図である。 図39A〜Bの制御フロー図に類似し、ストレージシェルフ・ルータから外部処理エンティティへデータを返信するAPT動作に関してWRITE−BUFFER及びREAD−BUFFERプロトコルを記述する制御フロー図である。 図39A〜Bの制御フロー図に類似し、ストレージシェルフ・ルータから外部処理エンティティへデータを返信するAPT動作に関してWRITE−BUFFER及びREAD−BUFFERプロトコルを記述する制御フロー図である。 コマンド指定及びリターン状態の他に外部処理エンティティとストレージシェルフとの間でデータを転送しない制御タイプコマンドと関連したAPTコンテキストのWRITE−BUFFER及びREAD−BUFFERコマンドプロトコルの制御フロー図である。

Claims (16)

  1. 第1のプロトコルのコマンドを用いる第1の通信媒体によって、ストレージシェルフと相互接続された外部処理エンティティと、
    第2の通信媒体を介して大容量記憶デバイス用のプロトコルによってアクセスされる、前記ストレージシェルフ内の大容量記憶デバイスと、
    前記大容量記憶デバイスへの仮想インターフェイスを外部処理エンティティに提供して、前記第1の通信媒体から受信される前記第1のプロトコルのコマンドを、前記第2の通信媒体を介して大容量記憶デバイスへ送信される前記大容量記憶デバイス用のプロトコルのコマンドに翻訳し、さらに、前記第1の通信媒体を介して受信される特定のタイプの第1プロトコルのコマンドフレームから、大容量記憶デバイス用のプロトコルのコマンドをアンパックすること、および、前記アンパックされた大容量記憶デバイス用のプロトコルのコマンドを、前記第2の通信媒体を介して翻訳せずに前記大容量記憶デバイスへ向けることによって、前記外部処理エンティティによる前記大容量記憶デバイスへの直接アクセスを提供する、ストレージシェルフ・ルータと、
    を備える、ストレージシェルフ・ルータ・インターフェイスのトンネリングシステム。
  2. 前記ストレージルータが、前記大容量記憶デバイスへ向けられた前記アンパックされた大容量記憶デバイス用のプロトコルのコマンドに対する応答を、前記第2の通信媒体を介して前記大容量記憶デバイスから受信し、前記応答を特定のタイプの第1プロトコルのフレームにパッケージ化し、前記第1の通信媒体を介して前記パッケージ化された応答を前記外部処理エンティティへ返送する、請求項1に記載のトンネリングシステム。
  3. さらに前記外部処理エンティティが、特定のタイプの第1プロトコルのコマンドフレーム及び応答フレームを介して、ストレージシェルフのデータ構造及びストレージシェルフ・ルータのファームウェアにアクセスできるようにする、請求項1に記載のトンネリングシステム。
  4. 前記第1の通信媒体がファイバチャネル通信リンクであり、前記第2の通信媒体が、前記ストレージシェルフ・ルータをATAディスクドライブとインターフェイスをとるパスコントローラカードに相互接続するシリアル又はパラレル通信媒体である、請求項1に記載のトンネリングシステム。
  5. 前記第1の通信媒体がファイバチャネル通信リンクであり、前記第2の通信媒体が、前記ストレージシェルフ・ルータをATAディスクドライブに相互接続するシリアル又はパラレル通信媒体である、請求項1に記載のトンネリングシステム。
  6. 前記第1の通信媒体を介して受信される前記特定のタイプの第1プロトコルのコマンドフレームが、FCPコマンドフレーム内にパッケージ化されたバッファ書込みコマンドおよびバッファ読出しコマンドのうちの一方である、請求項1に記載のトンネリングシステム。
  7. 前記第1の通信媒体を介して受信される特定のタイプの第1プロトコルのコマンドフレームから大容量記憶デバイス用のプロトコルのコマンドをアンパックすること、および、前記アンパックされた大容量記憶デバイス用のプロトコルのコマンドを、前記第2の通信媒体を介して翻訳せずに前記大容量記憶デバイスへ向けることに加えて、前記ストレージシェルフ・ルータが、前記第1の通信媒体を介して受信される前記特定のタイプの第1プロトコルのコマンドフレームから制御命令をアンパックし、対応する制御動作を大容量記憶デバイスを含むストレージシェルフ・コンポーネントに向ける、請求項1に記載のトンネリングシステム。
  8. 前記制御命令がパワーオン制御命令、パワーオフ制御命令、及びリセット制御命令を含む、請求項7に記載のトンネリングシステム。
  9. 前記第1の通信媒体を介して受信される特定のタイプの第1プロトコルのコマンドフレームから大容量記憶デバイス用のプロトコルのコマンドをアンパックすること、および、前記アンパックされた大容量記憶デバイス用のプロトコルコマンドを前記第2の通信媒体を介して翻訳せずに前記大容量記憶デバイスへ向けることに加えて、前記ストレージシェルフ・ルータが、前記第1の通信媒体を介して受信される前記特定のタイプの第1プロトコルのコマンドフレームからアクセス命令をアンパックし、大容量記憶デバイスを含む指定されたストレージシェルフ・コンポーネントにアクセスする、請求項1に記載のトンネリングシステム。
  10. 前記アクセス命令が、
    ストレージシェルフ・ルータのフラッシュメモリに格納されたデータ構造の内容の全部又は一部を書き込むこと、
    パスコントローラカードのフラッシュメモリに格納されたデータ構造の内容の全部又は一部を書き込むこと、
    大容量記憶デバイス内の特殊セクタに格納されたデータ構造の内容の全部又は一部を書き込むこと、
    ストレージシェルフ・ルータのフラッシュメモリに格納された前記ストレージシェルフファームウェアの全部又は一部を書き込むこと、
    パスコントローラカードのフラッシュメモリに格納されたパスコントローラカードファームウェアの全部又は一部を書き込むこと、
    ストレージシェルフ・ルータのフラッシュメモリに格納されたデータ構造の内容の全部又は一部を読み出すこと、
    パスコントローラカードのフラッシュメモリに格納されたデータ構造の内容の全部又は一部を読み出すこと、
    大容量記憶デバイス内の特殊セクタに格納されたデータ構造の内容の全部又は一部を読み出すこと、
    ストレージシェルフ・ルータのフラッシュメモリに格納された前記ストレージシェルフファームウェアの全部又は一部を読み出すこと、及び
    パスコントローラカードのフラッシュメモリに格納されたパスコントローラカードファームウェアの全部又は一部を読み出すこと
    を含む、請求項9に記載のトンネリングシステム。
  11. 外部処理エンティティによるストレージシェルフ内の大容量記憶デバイスへの直接アクセスを提供する方法であって、該大容量記憶デバイスは、ストレージシェルフ内のストレージシェルフ・ルータにより、ストレージシェルフ・ルータ・インターフェイスを介して仮想化されており、
    前記外部処理エンティティが前記ストレージシェルフ・ルータ・インターフェイスを介して仮想大容量記憶デバイスにアクセスするために用いる第1の通信プロトコルにおいて、前記第1の通信プロトコルをトンネリングコマンドで補足するため仕様されるコマンドフレームを特定するステップと、
    大容量記憶デバイス用のネイティブコマンドを前記特定されたトンネリングコマンドフレームに挿入し、前記大容量記憶デバイス用のネイティブコマンドを前記トンネリングコマンドによって前記ストレージシェルフ・ルータへ送るステップと、
    前記ストレージシェルフ・ルータが前記トンネリングコマンドを受信するステップと、
    前記トンネリングコマンドから前記大容量記憶デバイス用のネイティブコマンドを抽出し、第2の通信媒体によって前記トンネリングコマンドを前記ストレージシェルフ内の大容量記憶デバイスへ転送するステップと
    を含む方法。
  12. 前記ストレージシェルフ・ルータが、前記第2の通信媒体を介して前記転送された大容量記憶デバイス用のネイティブコマンドへの応答を受信し、前記応答を第1プロトコルの応答フレームに挿入し、前記応答を前記外部処理エンティティへ返送するステップをさらに含む、請求項11に記載の方法。
  13. 前記第1の通信媒体がファイバチャネル通信リンクであり、前記第2の通信媒体が、前記ストレージシェルフ・ルータをATAディスクドライブとインターフェイスをとるパスコントローラカードに相互接続するシリアル又はパラレル通信媒体である、請求項11に記載の方法。
  14. 前記特定された第1のプロトコルのコマンドフレームが、FCPコマンドフレーム内にパッケージ化されたバッファ書込みコマンドおよびバッファ読出しコマンドのうちの一方である、請求項11に記載の方法。
  15. 仮想大容量記憶デバイスへ向けられる第1の通信媒体を介して、第1のプロトコルのコマンドを受信するロジックと、
    前記受信されたコマンドを大容量記憶デバイス用のネイティブコマンドに翻訳するロジックと、
    前記翻訳されたネイティブコマンドを第2の通信媒体を介して大容量記憶デバイスへ送信するロジックと、
    選択された第1のプロトコルのコマンド内にパッケージ化された大容量記憶デバイス用のネイティブコマンドを受信し、前記大容量記憶デバイス用のネイティブコマンドを、翻訳せずに大容量記憶デバイスへ転送するロジックと
    を備えるストレージシェルフ・ルータ。
  16. 翻訳された大容量記憶デバイス用のコマンドに対する応答を、前記第2の通信媒体を介して大容量記憶デバイスから受信し、前記応答を第1プロトコルの応答に翻訳し、前記第1プロトコルの応答を前記第1の通信媒体へ転送するロジックと、
    翻訳されていない大容量記憶デバイス用のコマンドに対する応答を、前記第2の通信媒体を介して大容量記憶デバイスから受信し、前記応答を翻訳せずに第1プロトコルの応答にパッケージ化し、第1プロトコルの応答内にパッケージ化された前記翻訳されていない応答を前記第1の通信媒体へ転送するロジックと
    をさらに含む、請求項15記載のストレージシェルフ・ルータ。

JP2006533821A 2003-06-23 2004-06-23 ストレージシェルフ・ルータ・インターフェイスのトンネリングシステムおよび方法 Expired - Fee Related JP4686463B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
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
US10/702,065 US7167929B2 (en) 2003-01-13 2003-11-04 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
US10/702,065 2003-11-04
PCT/US2004/020665 WO2006016862A1 (en) 2003-06-23 2004-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 and a storage-shelf-interface tunneling method and system

Publications (2)

Publication Number Publication Date
JP2007501987A true JP2007501987A (ja) 2007-02-01
JP4686463B2 JP4686463B2 (ja) 2011-05-25

Family

ID=35839535

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006533821A Expired - Fee Related JP4686463B2 (ja) 2003-06-23 2004-06-23 ストレージシェルフ・ルータ・インターフェイスのトンネリングシステムおよび方法

Country Status (4)

Country Link
US (1) US7167929B2 (ja)
EP (1) EP1654658A4 (ja)
JP (1) JP4686463B2 (ja)
WO (1) WO2006016862A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010108497A (ja) * 2009-10-22 2010-05-13 Toshiba Corp ディスクアレイ制御装置および記憶装置
US8433882B2 (en) 2008-10-29 2013-04-30 Kabushiki Kaisha Toshiba Disk array control device and storage device

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030172295A1 (en) * 2002-03-01 2003-09-11 Onspec Electronics, Inc. Device and system for allowing secure identification of an individual when accessing information and a method of use
AU2003291454A1 (en) 2002-11-08 2004-06-03 Crossroads Systems, Inc. System and method for controlling access to multiple physical media libraries
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 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の制御方法
JP4220887B2 (ja) * 2003-11-17 2009-02-04 株式会社日立製作所 ディスク装置及びその制御方法
JP4156499B2 (ja) * 2003-11-28 2008-09-24 株式会社日立製作所 ディスクアレイ装置
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
JP4634049B2 (ja) 2004-02-04 2011-02-16 株式会社日立製作所 ディスクアレイ装置における異常通知制御
DE102004015834B3 (de) * 2004-03-31 2005-03-03 Fujitsu Siemens Computers Gmbh Verfahren zur benutzerspezifischen Konfiguration eines Computers aus einer Gruppe von vorbereiteten Computern
US7206875B2 (en) * 2004-03-31 2007-04-17 Intel Corporation Expander device capable of persistent reservations and persistent affiliations
US7930377B2 (en) * 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US7454565B1 (en) 2004-06-29 2008-11-18 Crossroads Systems, Inc System and method for distributed partitioned library mapping
US7428613B1 (en) 2004-06-29 2008-09-23 Crossroads Systems, Inc. System and method for centralized partitioned library mapping
US7577772B2 (en) 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
US7676611B2 (en) * 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US7593429B2 (en) * 2004-10-14 2009-09-22 Temic Automotive Of North America, Inc. System and method for time synchronizing nodes in an automotive network using input capture
US20060083172A1 (en) * 2004-10-14 2006-04-20 Jordan Patrick D System and method for evaluating the performance of an automotive switch fabric network
US7593344B2 (en) * 2004-10-14 2009-09-22 Temic Automotive Of North America, Inc. System and method for reprogramming nodes in an automotive switch fabric network
US7623552B2 (en) * 2004-10-14 2009-11-24 Temic Automotive Of North America, Inc. System and method for time synchronizing nodes in an automotive network using input capture
US7599377B2 (en) * 2004-10-15 2009-10-06 Temic Automotive Of North America, Inc. System and method for tunneling standard bus protocol messages through an automotive switch fabric network
US7613190B2 (en) * 2004-10-18 2009-11-03 Temic Automotive Of North America, Inc. System and method for streaming sequential data through an automotive switch fabric
US7418545B2 (en) * 2004-10-28 2008-08-26 Intel Corporation Integrated circuit capable of persistent reservations
US7370128B2 (en) 2004-10-29 2008-05-06 Intel Corporation Expander device capable of communication protocol translation
US7409495B1 (en) * 2004-12-22 2008-08-05 Symantec Operating Corporation Method and apparatus for providing a temporal storage appliance with block virtualization in storage networks
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
US7451291B2 (en) * 2005-01-28 2008-11-11 Crossroads Systems, Inc. System and method for mode select handling for a 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
EP1934751B1 (en) * 2005-08-25 2017-11-08 Lattice Semiconductor Corporation Smart scalable storage switch architecture
US7571269B2 (en) * 2005-08-25 2009-08-04 Silicon Image, Inc. Covert channel for conveying supplemental messages in a protocol-defined link for a system of storage devices
US20070162626A1 (en) * 2005-11-02 2007-07-12 Iyer Sree M System and method for enhancing external storage
US20070121621A1 (en) * 2005-11-30 2007-05-31 Michael Moretti Integrated active-active fibre channel capability in SATA and SAS devices
US20070121633A1 (en) * 2005-11-30 2007-05-31 Michael Moretti Active-active fibre channel capability in SATA and SAS devices
US20070121668A1 (en) * 2005-11-30 2007-05-31 Michael Moretti Firmware architecture of active-active fibre channel capability in SATA and SAS devices
US7818790B1 (en) * 2006-03-17 2010-10-19 Erf Wireless, Inc. Router for use in a monitored network
JP5089901B2 (ja) * 2006-03-28 2012-12-05 株式会社日立製作所 記憶制御装置及び記憶制御装置の制御方法
US8385061B2 (en) * 2006-10-24 2013-02-26 Lsi Corporation System and method for implementing a meta-disk aggregation model for storage controllers
US7876894B2 (en) * 2006-11-14 2011-01-25 Mcm Portfolio Llc Method and system to provide security implementation for storage devices
US7653767B2 (en) 2007-01-23 2010-01-26 International Business Machines Corporation Hierarchical enclosure management services
US20090046858A1 (en) * 2007-03-21 2009-02-19 Technology Properties Limited System and Method of Data Encryption and Data Access of a Set of Storage Devices via a Hardware Key
US20080181406A1 (en) * 2007-01-30 2008-07-31 Technology Properties Limited System and Method of Storage Device Data Encryption and Data Access Via a Hardware Key
US8046548B1 (en) 2007-01-30 2011-10-25 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems using bitmap write-intent logging
US20080184035A1 (en) * 2007-01-30 2008-07-31 Technology Properties Limited System and Method of Storage Device Data Encryption and Data Access
US20080288782A1 (en) * 2007-05-18 2008-11-20 Technology Properties Limited Method and Apparatus of Providing Security to an External Attachment Device
US20080288703A1 (en) * 2007-05-18 2008-11-20 Technology Properties Limited Method and Apparatus of Providing Power to an External Attachment Device via a Computing Device
US8397011B2 (en) * 2007-10-05 2013-03-12 Joseph Ashwood Scalable mass data storage device
US8255739B1 (en) * 2008-06-30 2012-08-28 American Megatrends, Inc. Achieving data consistency in a node failover with a degraded RAID array
US7853726B2 (en) * 2008-10-06 2010-12-14 International Business Machines Corporation FCP command-data matching for write operations
US8255607B2 (en) * 2009-11-05 2012-08-28 Emulex Design & Manufacturing Corporation SAS expander-based SAS/SATA bridging
US8625635B2 (en) * 2010-04-26 2014-01-07 Cleversafe, Inc. Dispersed storage network frame protocol header
US9164886B1 (en) * 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9152553B1 (en) * 2011-12-15 2015-10-06 Marvell International Ltd. Generic command descriptor for controlling memory devices
JP5891890B2 (ja) * 2012-03-26 2016-03-23 富士通株式会社 ストレージシステム、ストレージ装置およびデータ復元方法
US9712427B1 (en) 2012-12-21 2017-07-18 EMC IP Holding Company LLC Dynamic server-driven path management for a connection-oriented transport using the SCSI block device model
US9591099B1 (en) * 2012-12-21 2017-03-07 EMC IP Holding Company LLC Server connection establishment over fibre channel using a block device access model
US9348774B2 (en) 2013-01-25 2016-05-24 Seagate Technology Llc Controller-opaque communication with non-volatile memory devices
US9983992B2 (en) * 2013-04-30 2018-05-29 WMware Inc. Trim support for a solid-state drive in a virtualized environment
US9430165B1 (en) * 2013-07-24 2016-08-30 Western Digital Technologies, Inc. Cold storage for data storage devices
US8943226B1 (en) * 2013-11-22 2015-01-27 Lsi Corporation Interface for heterogeneous PCI-e storage devices
US9710170B2 (en) * 2015-03-05 2017-07-18 Western Digital Technologies, Inc. Processing data storage commands for enclosure services
US10185639B1 (en) 2015-05-08 2019-01-22 American Megatrends, Inc. Systems and methods for performing failover in storage system with dual storage controllers
US9716516B2 (en) 2015-05-19 2017-07-25 Samsung Electronics Co., Ltd. Transmitting apparatus and interleaving method thereof
US10872049B2 (en) * 2016-01-29 2020-12-22 Analog Devices, Inc. GPIO-to-GPIO communication on a multi-node daisy-chained network
CN105912275A (zh) * 2016-04-27 2016-08-31 华为技术有限公司 在非易失性存储系统中建立连接的方法和装置
CN106060012A (zh) * 2016-05-17 2016-10-26 北京神州绿盟信息安全科技股份有限公司 一种多路复用方法及装置
US9990134B2 (en) * 2016-06-15 2018-06-05 Seagate Technology Llc Command tunneling in a hybrid data storage device
KR20180043451A (ko) * 2016-10-19 2018-04-30 삼성전자주식회사 컴퓨팅 시스템 및 그것의 동작 방법
US11256641B2 (en) 2017-01-27 2022-02-22 National Instruments Corporation Asynchronous start for timed functions
GB2574560B (en) * 2017-03-16 2022-06-01 Ventus Ip Holdings Llc Miniaturized wireless router
US20180276175A1 (en) * 2017-03-22 2018-09-27 National Instruments Corporation Direct Network Access by a Memory Mapped Peripheral Device for Scheduled Data Transfer on the Network
US11573919B2 (en) * 2017-12-14 2023-02-07 Texas Instruments Incorporated Multi-slave serial communication
US11356636B2 (en) * 2018-01-19 2022-06-07 Caavo Inc Device identification and power state determination using media device information
US11194738B2 (en) * 2019-07-29 2021-12-07 International Business Machines Corporation Implementing management commands utilizing an in-band interface
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
CN114756494A (zh) * 2022-03-31 2022-07-15 中国电子科技集团公司第五十八研究所 多裸芯互连的标准通信协议与片上包传输协议的转换接口

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209023B1 (en) * 1998-04-24 2001-03-27 Compaq Computer Corporation Supporting a SCSI device on a non-SCSI transport medium of a network
JP2001350548A (ja) * 2000-06-07 2001-12-21 Konica Corp 外部記憶装置の電源制御回路
JP2002222158A (ja) * 2000-10-17 2002-08-09 Microsoft Corp マスストレージクラスデジタル画像装置を制御するシステムおよび方法
JP2003044421A (ja) * 2001-07-26 2003-02-14 Fujitsu Ltd 仮想ストレージシステム及び同システムに使用されるスイッチングノード
JP2003196036A (ja) * 2001-12-12 2003-07-11 Internatl Business Mach Corp <Ibm> 記憶装置、該記憶装置を含む情報処理装置および情報記憶システムのリカバリ方法
WO2003083636A1 (en) * 2002-04-02 2003-10-09 International Business Machines Corporation Adapter, converted data storage device and method of operation of a converted data storage device
JP2004513418A (ja) * 2000-09-27 2004-04-30 ストレイジ・テクノロジー・コーポレイション 標準デバイス・インタフェース

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5941972A (en) * 1997-12-31 1999-08-24 Crossroads Systems, Inc. Storage router and method for providing virtual local storage
US6041381A (en) * 1998-02-05 2000-03-21 Crossroads Systems, Inc. Fibre channel to SCSI addressing method and system
US6477139B1 (en) * 1998-11-15 2002-11-05 Hewlett-Packard Company Peer controller management in a dual controller fibre channel storage enclosure
US6862648B2 (en) * 2000-10-30 2005-03-01 Sun Microsystems, Inc. Interface emulation for storage devices
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 (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209023B1 (en) * 1998-04-24 2001-03-27 Compaq Computer Corporation Supporting a SCSI device on a non-SCSI transport medium of a network
JP2001350548A (ja) * 2000-06-07 2001-12-21 Konica Corp 外部記憶装置の電源制御回路
JP2004513418A (ja) * 2000-09-27 2004-04-30 ストレイジ・テクノロジー・コーポレイション 標準デバイス・インタフェース
JP2002222158A (ja) * 2000-10-17 2002-08-09 Microsoft Corp マスストレージクラスデジタル画像装置を制御するシステムおよび方法
JP2003044421A (ja) * 2001-07-26 2003-02-14 Fujitsu Ltd 仮想ストレージシステム及び同システムに使用されるスイッチングノード
JP2003196036A (ja) * 2001-12-12 2003-07-11 Internatl Business Mach Corp <Ibm> 記憶装置、該記憶装置を含む情報処理装置および情報記憶システムのリカバリ方法
WO2003083636A1 (en) * 2002-04-02 2003-10-09 International Business Machines Corporation Adapter, converted data storage device and method of operation of a converted data storage device
JP2005520258A (ja) * 2002-04-02 2005-07-07 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記憶装置のインタフェースを変換するアダプタ、変換済みデータ記憶装置、および変換済みデータ記憶装置の操作方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8433882B2 (en) 2008-10-29 2013-04-30 Kabushiki Kaisha Toshiba Disk array control device and storage device
JP2010108497A (ja) * 2009-10-22 2010-05-13 Toshiba Corp ディスクアレイ制御装置および記憶装置

Also Published As

Publication number Publication date
WO2006016862A1 (en) 2006-02-16
EP1654658A4 (en) 2009-10-21
EP1654658A1 (en) 2006-05-10
US7167929B2 (en) 2007-01-23
US20040148460A1 (en) 2004-07-29
JP4686463B2 (ja) 2011-05-25

Similar Documents

Publication Publication Date Title
JP4686463B2 (ja) ストレージシェルフ・ルータ・インターフェイスのトンネリングシステムおよび方法
JP4871880B2 (ja) ストレージシェルフ・ルータ集積回路
JP4406431B2 (ja) 仮想ディスクをフォーマッティングするシステムおよび方法
JP4690202B2 (ja) 高可用性大容量ストレージデバイスシェルフ
JP5047365B2 (ja) 割り当て単位に基づく仮想フォーマッティング法およびその方法を利用するデバイス
JP5250031B2 (ja) 割り当て単位に基づく仮想フォーマッティング法および割り当て単位に基づく仮想フォーマッティング法を利用するデバイス
JP5250030B2 (ja) 効率的な待ち行列管理のための方法およびシステム
KR101340176B1 (ko) 스마트 스케일러블 스토리지 스위치 아키텍처
US8281084B2 (en) Method and interface for access to memory within a first electronic device by a second electronic device
US20160021031A1 (en) Global shared memory switch

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090224

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090520

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090527

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090622

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090721

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100114

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

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: 20110208

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: 20110214

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

Free format text: PAYMENT UNTIL: 20140218

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4686463

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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