JP2007219717A - ストレージシステム及びストレージコントローラ - Google Patents

ストレージシステム及びストレージコントローラ Download PDF

Info

Publication number
JP2007219717A
JP2007219717A JP2006037958A JP2006037958A JP2007219717A JP 2007219717 A JP2007219717 A JP 2007219717A JP 2006037958 A JP2006037958 A JP 2006037958A JP 2006037958 A JP2006037958 A JP 2006037958A JP 2007219717 A JP2007219717 A JP 2007219717A
Authority
JP
Japan
Prior art keywords
processor
frame
local router
stored
fifo
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
JP2006037958A
Other languages
English (en)
Other versions
JP4740763B2 (ja
Inventor
Takahito Nakamura
崇仁 中村
Akira Fujibayashi
昭 藤林
Mutsumi Hosoya
睦 細谷
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006037958A priority Critical patent/JP4740763B2/ja
Priority to US11/396,676 priority patent/US8423677B2/en
Priority to EP06253355.9A priority patent/EP1833221B1/en
Publication of JP2007219717A publication Critical patent/JP2007219717A/ja
Application granted granted Critical
Publication of JP4740763B2 publication Critical patent/JP4740763B2/ja
Priority to US13/688,483 priority patent/US8843703B2/en
Priority to US14/492,107 priority patent/US9513825B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0613Improving I/O performance in relation to throughput
    • 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/0656Data buffering 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/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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk 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/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
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks
    • H04L49/357Fibre channel switches
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

【課題】プロセッサ資源を有効に活用する。
【解決手段】プロトコルプロセッサと、プロセッサと、ローカルルータ部と、第1メモリと、ディスクドライブと、を備え、前記プロトコルプロセッサは、前記ホストコンピュータにフレームを送信すると、当該フレームの送信状況に関する情報をローカルルータ部に送信し、前記ローカルルータ部は、前記プロトコルプロセッサがフレームを受信すると、前記受信されたフレームがアクセスを要求する対象に基づいて、前記受信されたフレームを処理するプロセッサを決定し、当該決定されたプロセッサに、前記受信されたフレームを転送し、前記プロトコルプロセッサがフレームを送信すると、前記送信されたフレームのエクスチェンジに基づいて、前記フレームの送信状況に関する情報を処理するプロセッサを決定し、当該決定されたプロセッサに、前記フレームの送信状況に関する情報を転送する。
【選択図】図11

Description

本発明は、チャネルを介してホストコンピュータに接続されるストレージシステムに関し、特に、前記チャネルを複数のプロセッサによって制御する技術に関する。
近年、複数のストレージシステムが、一つの大規模ストレージに置き換えられている。他にも、複数のストレージシステムを、一つの大規模ストレージシステムに見せる技術が採用されている。これらによって、ストレージシステムの管理を容易化する。この場合、大規模ストレージシステムは、記憶容量だけでなく、性能も要求される。
一方、安価な小規模ストレージシステムから、大規模ストレージシステムへの拡張のニーズも存在する。
小規模ストレージシステムから大規模ストレージシステムをサポートするための技術として、仮想化スイッチ技術及び高スケーラブル化技術が知られている。
例えば、仮想化スイッチ技術については、特許文献1に開示されている。仮想化スイッチ技術では、SAN(Storage Area Network)を構成するSANスイッチが、仮想化の機能を備える。具体的には、仮想化スイッチ技術は、接続される複数のストレージシステムを単一のストレージシステムとしてホストコンピュータに提供する。更に、仮想化スイッチは、接続される複数のストレージシステムに様々な機能を提供する。
しかしこの場合、管理者は、仮想化スイッチ及び複数のストレージシステムのそれぞれに対して設定を行う必要がある。また、仮想化スイッチが行う仮想化のための変換処理が、ストレージシステムの性能のボトルネックになってしまう。
また、ストレージシステムの高スケーラブル化については、特許文献2に開示されている。高スケーラブル化されたストレージシステムは、当該ストレージシステムを制御する多数のプロセッサを備える。更に、高スケーラブル化されたストレージシステムは、多数のプロトコルプロセッサを備える。
プロトコルプロセッサについては、特許文献3に開示されている。プロトコルプロセッサは、ホストコンピュータとストレージシステムとを接続するチャネルのプロトコルを処理する。具体的には、プロトコルプロセッサは、チャネルを通じて受信したパケット又はフレームを、ストレージシステムの内部のプロトコルに変換する。
ストレージシステムを高スケーラブルにできれば、小規模な構成から大規模な構成にまで拡張できる。そのため、ユーザの要求する規模にあわせたストレージシステムを提供できる。
米国特許第6,898,670号明細書 特開2004−240949号公報 米国特許第6,791,989号明細書
しかし、一般的なストレージシステムには、以下のような問題点がある。プロトコルプロセッサは、1つ又は少数のプロセッサのみにチャネルの制御機能を提供する。そのため、高スケーラブル化されたストレージシステムにおいては、多数のプロセッサを備えていても、すべてのプロセッサを有効に活用できない。
また、プロトコルプロセッサの能力が不足しているので、プロセッサの処理の効率を上げられない。
本発明は、前述した問題点に鑑みてなされたものであり、プロセッサを効率よく利用するストレージシステムを提供することを目的とする。
本発明の代表的な形態は、チャネルを介してホストコンピュータに接続されるストレージシステムにおいて、前記チャネルに接続され、前記ホストコンピュータに対してフレームを送受信する複数のプロトコルプロセッサと、前記チャネルを制御する複数のプロセッサと、前記プロトコルプロセッサ及び前記プロセッサに接続されるローカルルータ部と、前記ローカルルータ部に接続される第1メモリと、前記ホストコンピュータから書き込み要求されるデータを格納するディスクドライブと、を備え、前記プロトコルプロセッサは、前記ホストコンピュータにフレームを送信すると、当該フレームの送信状況に関する情報をローカルルータ部に送信し、前記ローカルルータ部は、前記プロトコルプロセッサがフレームを受信すると、前記受信されたフレームがアクセスを要求する対象に基づいて、前記受信されたフレームを処理するプロセッサを決定し、当該決定されたプロセッサに、前記受信されたフレームを転送し、前記プロトコルプロセッサがフレームを送信すると、前記送信されたフレームのエクスチェンジに基づいて、前記フレームの送信状況に関する情報を処理するプロセッサを決定し、当該決定されたプロセッサに、前記フレームの送信状況に関する情報を転送することを特徴とする。
本発明の代表的な形態によれば、一つのチャネルを複数のプロセッサが制御する。これによって、本発明の代表的な形態のストレージシステムは、プロセッサ資源を有効に活用できる。
以下、本発明の実施の形態を図面を参照して説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態の計算機システムの構成のブロック図である。
計算機システムは、ストレージシステム1、ホストコンピュータ2及びSANスイッチ3を備える。
ストレージシステム1とSANスイッチ3とは、チャネル4によって接続される。同様に、ホストコンピュータ2とSANスイッチ3とは、チャネル4によって接続される。なお、本実施の形態のチャネル4には、ファイバチャネル(FC:Fibre Channel)プロトコルが適用されている。なお、チャネル4には、ファイバチャネルプロトコル以外のプロトコルが適用されていてもよい。
SANスイッチ3は、SAN(Storage Area Network)を構成するスイッチである。SANスイッチ3は、ストレージシステム1とホストコンピュータ2
との通信を制御する。
ストレージシステム1は、ハードディスクエンクロージャ部(HDDエンクロージャ部)5、チャネルアダプタ6、内部スイッチ7及びストレージノード8を備える。
内部スイッチ7は、チャネルアダプタ6とストレージノード8とを接続する。なお、チャネルアダプタ6と内部スイッチ7とは、内部パス71によって接続される。同様に、ストレージノード8と内部スイッチ7とは、内部パス71によって接続される。
HDDエンクロージャ部5は、複数のハードディスクドライブ(HDD)51を含む。HDD51は、ホストコンピュータ2によって書き込み要求されたデータ等を記憶する。なお、HDD51は、RAID(Redundant Array of Independent Disks)を構成していてもよいし、RAIDを構成していなくてもよい。
チャネルアダプタ6は、プロトコルプロセッサ61、ローカルルータ部62及びメモリモジュール63を備える。
プロトコルプロセッサ61は、チャネル4に接続される。また、プロトコルプロセッサ61は、PCI(Peripheral Control Information)バス又はPCI−Express等で、ローカルルータ部62等に接続される。
プロトコルプロセッサ61は、チャネル4のプロトコルを制御する。具体的には、プロトコルプロセッサ61は、チャネル4のプロトコルとストレージシステム1の内部のプロトコルとを相互に変換する。これによって、プロトコルプロセッサ61は、チャネル4にフレームを送信する。同様に、プロトコルプロセッサ61は、チャネル4からフレームを受信する。なお、チャネル4にファイバチャネルプロトコル以外のプロトコルが適用されている場合、プロトコルプロセッサ61は、フレームの代わりに、パケットを送受信する。
ローカルルータ部62は、プロトコルプロセッサ61によって処理されたフレームの転送先となるプロセッサを、ストレージノード8に備わるプロセッサの中から選択する。そして、ローカルルータ部62は、選択されたプロセッサに、プロトコルプロセッサ61によって処理されたフレームを転送する。なお、ローカルルータ部62については、図12で詳細を説明する。
メモリモジュール63は、ローカルルータ部62によって実行されるプログラム及びローカルルータ部62によって必要とされる情報を記憶する。具体的には、メモリモジュール63は、プロセッサ番号対応テーブル(図13)、送信先アドレステーブル(図14)及び転送リストインデックス−プロセッサ番号対応テーブル(図15)等を記憶する。なお、ローカルルータ部62がLSIによって構成される場合には、メモリモジュール63は、プログラムを記憶しない。また、メモリモジュール63の一部は、要求FIFO(First−In First−Out)として使用される。なお、要求FIFOについては、図8で詳細を説明する。
ストレージノード8は、HDD側チャネル52を介してHDD51に接続される。なお、ストレージノードについては、図2で詳細を説明する。
図2は、本発明の第1の実施の形態のストレージシステム1に備わるストレージノード8の構成のブロック図である。
ストレージノード8は、内部ネットワークインタフェース部(内部ネットワークI/F部)81、プロセッサ82、周辺回路部83、メモリモジュール84、ブリッジ部85、HDD側プロトコルプロセッサ86及びキャッシュメモリ87を備える。
内部ネットワークI/F部81は、内部パス71を介して内部スイッチ7に接続される。
ブリッジ部85は、内部ネットワークI/F部81、周辺回路部83、ブリッジ部85、HDD側プロトコルプロセッサ86及びキャッシュメモリ87を相互に接続する。また、ブリッジ部85は、DMAコントローラ851を備える。DMAコントローラ851は、ブリッジ部85のデータ転送処理を制御する。
HDD側プロトコルプロセッサ86は、HDD側チャネル52に接続される。HDD側プロトコルプロセッサ86は、HDD側チャネル52を介して、HDD51を制御する。
周辺回路部83は、例えば、チップセット等である。周辺回路部83は、プロセッサ82、メモリモジュール84及びブリッジ部85を相互に接続する。また、周辺回路部83は、プロセッサ82がプログラムを実行する際に必要とする機能を提供する。例えば、周辺回路部83は、タイマー機能をプロセッサ82に提供する。更に、周辺回路部83は、メモリモジュール84を制御する。
メモリモジュール84には、プロセッサ82によって実行されるプログラム及びプロセッサ82によって必要とされる情報等が記憶される。具体的には、メモリモジュール84には、ストレージシステム1を制御するためのプログラム、ストレージシステム1の構成に関する情報及びキャッシュメモリ87のディレクトリに関する情報等が記憶される。但し、ストレージシステム1の構成に関する情報及びキャッシュメモリ87のディレクトリに関する情報は、メモリモジュール84に記憶されずに、キャッシュメモリ87に記憶されてもよい。なお、メモリモジュール84の一部が通信領域として使用されることによって、プロセッサ82は、他のプロセッサ82と通信しながら処理をしてもよい。
更に、メモリモジュール84の一部は、フレームFIFO及びメッセージFIFOとして使用される。なお、フレームFIFOについては、図10で詳細を説明する。また、メッセージFIFOについては、図9で詳細を説明する。
キャッシュメモリ87は、ホストコンピュータ2によって書き込み要求されたデータ又は読み出し要求されたデータを一時的に記憶する。
ストレージシステム1のアベイラビリティを向上させるために、ストレージノード8の構成は、冗長化されてもよい。本ブロック図のストレージノード8は、電源ユニットAによって電力を供給される電源系A801、及び電源ユニットBによって電力を供給される電源系B802を含む。そして、電源系A801及び電源系B802のそれぞれが、内部ネットワークI/F部81、プロセッサ82、周辺回路部83、メモリモジュール84、ブリッジ部85、HDD側プロトコルプロセッサ86及びキャッシュメモリ87を備える。なお、ブリッジ部85のDMAコントローラ851は、電源系Aに備わるキャッシュメモリ87及び電源系Bに備わるキャッシュメモリ87の両方にデータを格納する。
これによって、一方の電源系が故障しても、データが消失しない。更に、故障していないもう一方の電源系が、処理を継続できる。
プロセッサ82は、メモリモジュール84に記憶されるプログラムを実行することによって、各種処理を行う。これによって、プロセッサ82は、ストレージシステム1を制御する。
プロセッサ82は、フレームFIFO、要求FIFO及びメッセージFIFOを用いて、チャネルアダプタ6に備わるプロトコルプロセッサ61と通信する。プロセッサ82は、ホストコンピュータ2から発行されたIO要求を受信すると、受信したIO要求を解析する。これによって、プロセッサ82は、当該IO要求の種類、当該IO要求の対象となるLUN(Logical Unit Number)及び当該IO要求の対象となるLBA(Logical Block Address)等を特定する。なお、IO要求は、リード要求又はライト要求のいずれかである。また、IO要求の対象となるLUNは、当該IO要求によってデータを読み出し又は書込みされるLUの識別子である。IO要求の対象となるLBAは、当該IO要求によってデータを読み出し又は書き込みされるLBAである。
IO要求がリード要求である場合、プロセッサ82は、キャッシュメモリ87のディレクトリに関する情報に基づいて、読み出し要求されたデータ(リードデータ)がキャッシュメモリ87に記憶されているか否かを判定する。
リードデータがキャッシュメモリ87に記憶されている場合、プロセッサ82は、当該リードデータをホストコンピュータ2に転送するように、プロトコルプロセッサ61に指示する。
一方、リードデータがキャッシュメモリ87に記憶されていない場合、プロセッサ82は、当該リードデータが格納されているHDD51及びLBAを特定する。そして、プロセッサ82は、特定したHDD51中の、特定したLBAから、リードデータを抽出する。次に、プロセッサ82は、抽出したリードデータを、キャッシュメモリ87に格納する。そして、プロセッサ82は、当該リードデータをホストコンピュータ2に転送するように、プロトコルプロセッサ61に指示する。
IO要求がライト要求である場合、プロセッサ82は、キャッシュメモリ87のディレクトリに関する情報に基づいて、IO要求の対象となるLBAに対応する記憶領域がキャッシュメモリ87上に存在するか否かを判定する。
IO要求の対象となるLBAに対応する記憶領域がキャッシュメモリ87に存在する場合、プロセッサ82は、ホストコンピュータ2によって書き込み要求されるデータ(ライトデータ)をキャッシュメモリ87上の当該記憶領域に書き込むように、プロトコルプロセッサ61に指示する。
一方、IO要求の対象となるLBAに対応する記憶領域がキャッシュメモリ87に存在しない場合、プロセッサ82は、ライトデータを格納する記憶領域を、キャッシュメモリ87に確保する。但し、ライトデータが格納される記憶領域を、キャッシュメモリ87に確保できない場合、プロセッサ82は、LRU(Least Recently Used)アルゴリズムなどを用いて、キャッシュメモリ87から削除するデータを決定する。そして、プロセッサ82は、決定したデータをHDD51に戻す。そして、プロセッサ82は、決定したデータを、キャッシュメモリ87から削除することによって、ライトデータが格納される記憶領域をキャッシュメモリ87に確保する。
次に、プロセッサ82は、キャッシュメモリ87上に確保された記憶領域に、ライトデータを書き込むように、プロトコルプロセッサ61に指示する。
なお、ブリッジ部85に備わるDMAコントローラ851は、プロセッサ82からの指示に応じて、プロトコルプロセッサ61から送信されるIO要求を、分割又は統合できる。更に、ブリッジ部85に備わるDMAコントローラ851は、プロセッサ82からの指示に応じて、電源系Aに備わるキャッシュメモリ87及び電源系Bに備わるキャッシュメモリ87の両方にデータを書き込むことができる。
次に、ファイバチャネルプロトコルを説明する。
図3は、本発明の第1の実施の形態のファイバチャネルプロトコルのフレーム1000の説明図である。
ファイバチャネルプロトコルでは、情報の伝達にフレーム1000が使用される。フレーム1000は、SOF(Start Of Frame)3010、ヘッダ3020、ペイロード3030、CRC(Cyclic Redundancy Check)3040及びEOF(End Of Frame)3050を含む。
SOF3010は、フレーム1000の先頭を示すビットである。ペイロード3030には、情報ユニット(Information Unit)が格納される。なお、Information Unitについては、図4A〜図4Dで説明する。
CRC3040は、フレーム1000の転送エラーを検出するためのビットである。EOF3050は、フレーム1000の最後尾を示すビットである。
ヘッダ3020は、R_CTL3021、D_ID3022、S_ID3023、TYPE3024、F_CTL30241、SEQ_ID3025、SEQ_CNT3026、OX_ID3027、RX_ID3028等を含む。
R_CTL3021は、当該フレーム1000の種類を示す。なお、フレーム1000の種類には、リンク制御フレーム又はデータフレーム等がある。リンク制御フレームは、リンクを正常に保つために用いられる。また、データフレームは、データを転送するために用いられる。なお、本実施の形態におけるフレーム1000は、データフレームである。
D_ID3022は、当該フレーム1000の送信先のポートアドレスである。S_ID3023は、当該フレーム1000の送信元のポートアドレスである。
TYPE3024は、当該フレーム1000によって転送されるデータのタイプを示す。例えば、TYPE3024は、当該フレーム1000によってSCSI−FCPのタイプのデータが転送されることを示す。
F_CTL30241は、当該フレーム1000のシーケンス及びエクスチェンジの属性を示す。例えば、F_CTL30241は、当該フレーム1000がシーケンスの最初又は最後であることを示す。また、F_CTL30241は、当該フレーム1000の送信元が要求発行元(オリジネータ)又は要求受信元(レスポンダ)のいずれであるかを示す。
SEQ_ID3025は、当該フレーム1000に対応するシーケンスの一意な識別子である。SEQ_CNT3026は、SEQ_ID3025によって識別されるシーケンス中における、当該フレーム1000の順番である。
OX_ID3027は、オリジネータによって付与されるエクスチェンジIDである。RX_ID3028は、レスポンダによって付与されるエクスチェンジIDである。なお、エクスチェンジIDについては、図5で詳細を説明する。
次に、フレーム1000のペイロード3030に含まれるInformation Unitについて説明する。ここでは、FCP_CMND3100、FCP_XFER_RDY3200、FCP_DATA3300及びFCP_RSP3400について説明する。
図4Aは、本発明の第1の実施の形態のFCP_CMND3100に含まれるInformation Unitの説明図である。
FCP_CMND3100は、IO要求に関するフレーム1000である。この場合、R_CTL3021は、当該フレームがIO要求に関するフレームであることを示す。
FCP_CMND3100のInformation Unitは、LUN3101、FCP_CNTL3102、FCP_CDB3103及びFCP_DL3105を含む。
LUN3101は、IO要求の対象となるアクセスデータ(LUN:Logicai Unit Number)を示す。なお、IO要求の対象となるLUNとは、当該IO要求によってデータを読み出し又は書き込みされるLUNである。
FCP_CNTL3102は、当該IO要求の属性を示す。FCP_CDB3105には、SCSIコマンド及びLBA3104等が格納される。LBA3104は、IO要求の対象となるLBAを示す。
FCP_DL3105は、当該IO要求によって転送されるデータの最大転送長である。例えば、FCP_DL3105には、当該IO要求によって書き込み又は読み出しされるデータの大きさが格納される。
図4Bは、本発明の第1の実施の形態のFCP_XFER_RDY3200に含まれるInformation Unitの説明図である。
FCP_XFER_RDY3200は、ライトデータの受信準備の完了をホストコンピュータ2に通知するためのフレームである。つまり、ストレージシステム1は、FCP_XFER_RDY3200をホストコンピュータ2に送信することによって、ライトデータの送信をホストコンピュータ2に要求する。
FCP_XFER_RDY3200のInformation Unitは、DATA_RO3201及びBURST_LEN3202を含む。
DATA_RO3201は、当該フレームによって要求されるライトデータのアドレスオフセットである。BURST_LEN3202は、当該フレームによって要求されるライトデータのバースト長である。
図4Cは、本発明の第1の実施の形態のFCP_DATA3300に含まれるInformation Unitの説明図である。
FCP_DATA3300は、リードデータ又はライトデータを送信するためのフレームである。
FCP_DATA3300のInformation Unitは、DATA3301を含む。DATA3301は、当該フレームによって送信されるリードデータ又はライトデータである。
図4Dは、本発明の第1の実施の形態のFCP_RSP3400に含まれるInformation Unitの説明図である。
FCP_RSP3400は、ステータス又はセンスデータを通知するためのフレームである。
FCP_RSP3400のInformation Unitは、FCP_STATUS3401及びRSP_CODE3402を含む。
FCP_STATUS3401は、当該フレームによって通知されるステータスである。RSP_CODE3402は、当該フレームによって通知されるエラーの内容である。
次に、ホストコンピュータ2がストレージシステム1にリード要求を送信した時の処理を説明する。
図5は、本発明の第1の実施の形態の計算機システムのリード処理のタイミングチャートである。
本説明図では、ホストコンピュータ2は、リード要求を送信するので、オリジネータである。また、ストレージシステム1は、リード要求を受信するので、レスポンダである。
まず、ホストコンピュータ2は、リード要求2001を含むフレームをストレージシステム1に送信する。リード要求2001を含むフレームは、前述したFCP_CMND3100である。
ストレージシステム1は、リード要求を含むフレームを受信する。すると、ストレージシステム1は、リード要求2001によって読み出し要求されたデータ(リードデータ)がキャッシュメモリ87に記憶されているか否かを判定する。リードデータがキャッシュメモリ87に記憶されていない場合、ストレージシステム1は、HDD51からリードデータを抽出する。そして、ストレージシステム1は、抽出したリードデータを、キャッシュメモリ87に格納する。
次に、ストレージシステム1は、キャッシュメモリ87に記憶されているリードデータをホストコンピュータ2に送信する。
なお、本説明図では、ストレージシステム1は、リードデータを、三つのデータ2002、2003及び2004に分割する。次に、ストレージシステム1は、データ2002を含むフレーム、データ2003を含むフレーム、及びデータ2004を含むフレームをホストコンピュータ2に送信する。なお、これらのフレームは、FCP_DATA3300である。
その後、ストレージシステム1は、ステータス2005を含むフレームをホストコンピュータ2に送信する。なお、当該ステータス2005は、送信されたリードデータを正確に受信できたことを通知する。また、ステータス2005を含むフレームは、FCP_RSP3400である。
なお、一連の仕事に関する処理が、シーケンス1001である。本説明図では、三つのシーケンス1001を含む。一つ目のシーケンス1001は、ホストコンピュータ2のリード要求送信処理である。二つ目のシーケンス1001は、ストレージシステム2のリードデータ送信処理である。また、三つ目のシーケンス1001は、ストレージシステム2のステータス通知処理である。なお、二つ目のシーケンス1001は、三つのフレームによって実行される。このように、シーケンス1001は、複数のフレームによって実行されてもよい。
また、ホストコンピュータ2によって発行されたIO要求に関する処理の一群が、エクスチェンジ1002である。本説明図で説明したすべての処理が、エクスチェンジ1002である。つまり、本説明図のエクスチェンジ1002は、三つのシーケンスから構成される。なお、エクスチェンジ1002は、エクスチェンジIDによって一意に識別される。
本説明図では、フレームに含まれるOX_ID3027、RX_ID3028、SEQ_ID3025及びSEQ_CNT3026が図示されている。
OX_ID3027は、オリジネータであるホストコンピュータ2によって付与されるエクスチェンジIDである。RX_ID3028は、レスポンダであるストレージシステム1によって付与されるエクスチェンジIDである。SEQ_ID3025は、当該フレームに対応するシーケンスの一意な識別子である。SEQ_CNT3026は、SEQ_ID3025によって識別されるシーケンス中における、当該フレームの順番である。
本説明図によると、エクスチェンジ1002に含まれるすべてのフレームのOX_ID3027には、同一の値の「0x1234」が格納される。また、リード要求2001を含むフレームのRX_ID3028には、初期値の「0xffff」が格納される。そして、ストレージシステム1は、リード要求2001を含むフレームを受信すると、RX_ID3028を「0x5678」に決定する。そして、以降の処理のすべてのフレームのRX_ID3028には、ストレージシステム1によって決定されたエクスチェンジIDの「0x5678」が格納される。
また、データ2002を含むフレームのSEQ_CNT3026には、「0」が格納される。データ2003を含むフレームのSEQ_CNT3026には、「1」が格納される。データ2004を含むフレームのSEQ_CNT3026には、「2」が格納される。
次に、ホストコンピュータ2がストレージシステム1にライト要求を送信した時の処理を説明する。
図6は、本発明の第1の実施の形態の計算機システムのライト処理のタイミングチャートである。
本説明図では、ホストコンピュータ2は、ライト要求を送信するので、オリジネータである。また、ストレージシステム1は、ライト要求を受信するので、レスポンダである。
まず、ホストコンピュータ2は、ライト要求2011を含むフレームをストレージシステム1に送信する。なお、ライト要求2011を含むフレームは、前述したFCP_CMND3100である。
ストレージシステム1は、ライト要求2011を含むフレームを受信する。すると、ストレージシステム1は、ライトデータを格納する記憶領域をキャッシュメモリ87に確保する。
そして、ストレージシステム1は、ライトデータの受信準備の完了通知2012を含むフレームを、ホストコンピュータ2に送信する。なお、ライトデータの受信準備の完了通知2012を含むフレームは、FCP_XFER_RDY3200である。
ホストコンピュータ2は、ライトデータの受信準備の完了通知2012を含むフレームを受信する。すると、ホストコンピュータ2は、ライトデータをストレージシステム1に送信する。本説明図では、ホストコンピュータ2は、ライトデータを、三つのデータ2013、2014及び2015に分割する。次に、ホストコンピュータ2は、データ2013を含むフレーム、データ2014を含むフレーム及びデータ2015を含むフレームを、ストレージシステム1に送信する。なお、これらのフレームは、FCP_DATA3300である。
ストレージシステム1は、データ2013を含むフレーム、データ2014を含むフレーム及びデータ2015を含むフレームを受信する。すると、ストレージシステム1は、受信したフレームに含まれるデータ2013、2014及び2015をキャッシュメモリ87に格納する。
その後、ストレージシステム1は、ステータス2016を含むフレームをホストコンピュータ2に送信する。なお、当該ステータス2016は、送信されたライトデータの書き込み完了を通知する。また、ステータス2016を含むフレームは、FCP_RSP3400である。
本説明図では、フレームに含まれるOX_ID3027、RX_ID3028、SEQ_ID3025及びSEQ_CNT3026が図示されている。
本説明図によると、同一のエクスチェンジに含まれるすべてのフレームのOX_ID3027には、同一の値の「0x1235」が格納される。また、ライト要求2011を含むフレームのRX_ID3028には、初期値の「0xffff」が格納される。そして、ストレージシステム1は、ライト要求2011を含むフレームを受信すると、RX_ID3028を「0x5679」に決定する。そして、以降の処理のすべてのフレームのRX_ID3028には、ストレージシステム1によって決定された値の「0x5679」が格納される。
また、データ2013を含むフレームのSEQ_CNT3026には、「0」が格納される。データ2014を含むフレームのSEQ_CNT3026には、「1」が格納される。データ2015を含むフレームのSEQ_CNT3026には、「2」が格納される。
次に、プロトコルプロセッサ61の処理について説明する。ここでは、ホストコンピュータ2がストレージシステム1にライト要求を送信した時の処理を説明する。
図7は、本発明の第1の実施の形態の計算機システムのライト処理の説明図である。
まず、ホストコンピュータ2は、ライト要求2011を含むフレームをストレージシステム1のチャネルアダプタ6に送信する。
すると、チャネルアダプタ6に備わるプロトコルプロセッサ61は、ライト要求2011を含むフレームを受信する。すると、プロトコルプロセッサ61は、受信したフレームを、ローカルルータ部62を介してフレームFIFO11に格納する。なお、ストレージノード8に備わるメモリモジュール84の一部が、フレームFIFO11として使用される。
一方、ストレージノード8に備わるプロセッサ82は、フレームをフレームFIFO11から抽出する。プロセッサ82は、抽出したフレームに対応する処理を行う。ここでは、プロセッサ82は、ライトデータを格納する記憶領域をキャッシュメモリ87に確保する。次に、プロセッサ82は、確保した記憶領域のアドレス等を含む転送リストを作成する。なお、転送リストについては、図8で詳細を説明する。
次に、プロセッサ82は、作成した転送リストに対応する、転送リストポインタのインデックスを特定する。転送リストポインタは、転送リストが格納されている記憶領域のアドレスを示す。次に、プロセッサ82は、特定した転送リストポインタのインデックスを、ローカルルータ部62を介して要求FIFO13に格納する。なお、チャネルアダプタ6に備わるメモリモジュール63の一部が、要求FIFO13として使用される。
プロトコルプロセッサ61は、転送リストポインタのインデックスを、要求FIFO13から抽出する。次に、プロトコルプロセッサ61は、抽出したインデックスに対応する転送リストを取得する。そして、プロトコルプロセッサ61は、取得した転送リストに従って、ライトデータの受信準備の完了通知2012を含むフレームを、ホストコンピュータ2に送信する。つまり、プロトコルプロセッサ61は、FCP_XFER_RDY3200をホストコンピュータに送信する。
本実施の形態では、転送リストポインタのインデックスが、フレームのRX_ID3028となる。なお、転送リストには、フレームのRX_ID3028に関するフィールドが含まれていてもよい。この場合、プロトコルプロセッサ61は、取得した転送リストに含まれるRX_IDを、送信するフレームのRX_ID3028とする。
プロトコルプロセッサ61は、ライトデータの受信準備の完了通知2012を含むフレームを正常に送信すると、FCP_XFER_RDY3200の送信に関するシーケンスの完了メッセージを、メッセージFIFO12に格納する。なお、ストレージノード8に備わるメモリモジュール84の一部が、メッセージFIFO12として使用される。
プロセッサ82は、FCP_XFER_RDY3200の送信に関するシーケンスの完了メッセージを、メッセージFIFO12から抽出する。プロセッサ82は、抽出したメッセージに基づいて、プロトコルプロセッサ61がFCP_XFER_RDY3200を正常に送信したことを確認する。
一方、ホストコンピュータ2は、ライトデータの受信準備の完了通知2012を含むフレームを受信する。すると、ホストコンピュータ2は、ライトデータを、三つのデータ2013、2014及び2015に分割する。次に、ホストコンピュータ2は、データ2013を含むフレーム、データ2014を含むフレーム及びデータ2015を含むフレームを、ストレージシステム1のチャネルアダプタ6に送信する。
チャネルアダプタ6に備わるプロトコルプロセッサ61は、データ2013を含むフレーム、データ2014を含むフレーム及びデータ2015を含むフレームを受信する。すると、プロトコルプロセッサ61は、転送リストに従って、受信したフレームに含まれるデータ2013、2014及び2015をキャッシュメモリ87に格納する。
そして、プロトコルプロセッサ61は、データ2013を含むフレーム、データ2014を含むフレーム及びデータ2015を含むフレームのすべてを受信すると、ライトデータの受信に関するシーケンスが完了したと判定する。そこで、プロトコルプロセッサ61は、ライトデータの受信に関するシーケンスの完了メッセージを、メッセージFIFO12に格納する。
プロセッサ82は、ライトデータの受信に関するシーケンスの完了メッセージを、メッセージFIFO12から抽出する。プロセッサ82は、抽出したメッセージに基づいて、プロトコルプロセッサ61がライトデータを正常に受信したことを確認する。次に、プロセッサ82は、DMAコントローラ851及びキャッシュメモリ87のステータスを参照することによって、ライトデータがキャッシュメモリ87に正常に格納されたか否かを判定する。
ライトデータがキャッシュメモリ87に正常に格納された場合、プロセッサ82は、転送リストを書き換える。なお、書換後の転送リストは、ステータス2016をホストコンピュータ2に送信することを指示する。また、ステータス2016は、ライトデータの書き込み完了を通知する。
次に、プロセッサ82は、書き換えた転送リストに対応する、転送リストポインタのインデックスを、要求FIFO13に格納する。
プロトコルプロセッサ61は、転送リストポインタのインデックスを、要求FIFO13から抽出する。次に、プロトコルプロセッサ61は、抽出したインデックスに対応する転送リストを取得する。そして、プロトコルプロセッサ61は、取得した転送リストに従って、ステータス2016を含むフレームを、ホストコンピュータ2に送信する。つまり、プロトコルプロセッサ61は、FCP_RSP3400をホストコンピュータ2に送信する。
プロトコルプロセッサ61は、ステータス2016を含むフレームを正常に送信すると、FCP_RSP3400の送信に関するシーケンスの完了メッセージを、メッセージFIFO12に格納する。
プロセッサ82は、FCP_RSP3400の送信に関するシーケンスの完了メッセージを、メッセージFIFO12から抽出する。プロセッサ82は、抽出したメッセージに基づいて、FCP_RSP3400をプロトコルプロセッサ61が正常に送信したことを確認する。
以上のように、ストレージシステム1は、ライトデータをキャッシュメモリ87に格納する。つまり、プロトコルプロセッサ61とプロセッサ82とは、フレームFIFO11、メッセージFIFO12及び要求FIFO13の三つのFIFOを用いて、情報を交換する。
なお、プロトコルプロセッサ61は、ライト要求を含むフレームをメッセージFIFO11に格納してもよい。この場合、プロトコルプロセッサ61は、フレームである旨を、メッセージの種別とする。プロセッサ82は、メッセージの種別に基づいて、メッセージFIFO12から抽出した情報が、フレーム又はメッセージのいずれであるかを判定する。
図8は、本発明の第1の実施の形態の要求FIFO13及び転送リストの説明図である。
要求FIFO13には、転送リストポインタ131のインデックスが格納される。転送リストポインタ131は、転送リストが格納された記憶領域のアドレスを示す。
本説明図では、要求FIFO13の先頭には、転送リストポインタ131のインデックスである「38」が格納されている。
転送リストポインタ131内の、インデックス「38」に対応するエントリ132には、転送リスト135のアドレスが格納されている。
転送リスト135は、FCP_RSP3400の送信を要求する。そのため、転送リスト135は、種別フィールド1311及びステータスフィールド1314を含む。
種別フィールド1311には、プロトコルプロセッサ61によって送信されるフレームの種類が格納される。つまり、転送リスト135の種別フィールド1311は、プロトコルプロセッサ61によって送信されるフレームがFCP_RSP3400であることを示す。ステータスフィールド1314には、プロトコルプロセッサ61によって送信されるフレームに含めるステータスが格納される。
また、要求FIFO13には、転送リストポインタ131のインデックスである「128」が二番目に格納されている。
転送リストポインタ131内の、インデックス「128」に対応するエントリ133には、転送リスト134のアドレスが格納されている。
転送リスト134は、FCP_XFER_RDY3200の送信を要求する。そのため、転送リスト134は、種別フィールド1311、要素数フィールド1312及びデータフィールド1313を含む。
種別フィールド1311には、プロトコルプロセッサ61によって送信されるフレームの種類が格納される。つまり、転送リスト134の種別フィールド1311は、プロトコルプロセッサ61によって送信されるフレームがFCP_XFER_RDY3200であることを示す。
要素数フィールド1312には、キャッシュメモリ87に格納可能なライトデータの要素数が格納される。つまり、転送リスト134は、要素数フィールド1312に格納された値と同数のデータフィールド1313を含む。
データフィールド1313には、キャッシュメモリ87上の、ライトデータが格納される記憶領域のアドレスが格納される。更に、データフィールド1313には、キャッシュメモリ87上の当該記憶領域に格納されるライトデータのデータ長が格納される。
図9は、本発明の第1の実施の形態のメッセージFIFO12の説明図である。
メッセージFIFO12には、プロトコルプロセッサ61によってメッセージが格納される。メッセージFIFO12に格納されるメッセージは、内容フィールド121、転送リストインデックスフィールド122及びステータスフィールド123を含む。
内容フィールド121には、当該メッセージの種別が格納される。例えば、内容フィールド121には、FCP_XFER_RDY3200の送信に関するシーケンスの完了通知、FCP_RSP3400の送信に関するシーケンスの完了通知、又はFCP_DATA3300の受信に関するシーケンスの完了通知等が当該メッセージの種別として格納される。
転送リストインデックスフィールド122には、当該メッセージに対応する転送リストのインデックスが格納される。ステータスフィールド123には、内容フィールド121に格納されている処理の結果が格納される。
次に、フレームFIFO11、メッセージFIFO12及び要求FIFO13の実装について説明する。
図10は、本発明の第1の実施の形態のフレームFIFO11、メッセージFIFO12及び要求FIFO13の制御に関する説明図である。
本実施の形態では、フレームFIFO11、メッセージFIFO12及び要求FIFO13のそれぞれに、プロデューサインデックス及びコンシューマインデックスが設定される。
ここで、プロデューサは、プロトコルプロセッサ61又はプロセッサ82のうち、FIFOにデータを格納するものである。一方、コンシューマは、プロトコルプロセッサ61又はプロセッサ82のうち、FIFOからデータを抽出するものである。また、プロデューサインデックスは、プロデューサがFIFOに最後にデータを格納したエントリのインデックスである。また、コンシューマインデックスは、コンシューマがFIFOから最後にデータを抽出したエントリのインデックスである。
つまり、フレームFIFO11に関しては、プロトコルプロセッサ61がコンシューマであり、プロセッサ82がプロデューサである。そこで、プロトコルプロセッサ61は、フレームFIFOコンシューマインデックス611を管理する。一方、プロセッサ82は、フレームFIFOプロデューサインデックス821を管理する。
また、メッセージFIFO12に関しては、プロトコルプロセッサ61がコンシューマであり、プロセッサ82がプロデューサである。そこで、プロトコルプロセッサ61は、メッセージFIFOコンシューマインデックス612を管理する。一方、プロセッサ82は、メッセージFIFOプロデューサインデックス822を管理する。
また、要求FIFO13に関しては、プロトコルプロセッサ61がプロデューサであり、プロセッサ82がコンシューマである。そこで、プロトコルプロセッサ61は、要求FIFOプロデューサインデックス613を管理する。一方、プロセッサ82は、書込用要求FIFOコンシューマインデックス823を管理する。
次に、プロトコルプロセッサ61及びプロセッサ82の処理を説明する。
プロデューサは、FIFOにデータを格納する場合、当該FIFOに対応するプロデューサインデックスとコンシューマインデックスとを比較する。これによって、プロデューサは、FIFOにデータを格納するための空き領域が存在するか否かを判定する。なお、プロデューサインデックス及びコンシューマインデックスは、サイクリックな境界を持つ。
FIFOに空き領域が存在すると、プロデューサは、プロデューサインデックスを増加させる。そして、プロデューサは、FIFO中の、増加させたプロデューサインデックスに対応するエントリに、データを格納する。
コンシューマは、コンシューマインデックスとプロデューサインデックスとを比較する。コンシューマインデックスとプロデューサインデックスとが等しくない場合、FIFOにデータが格納されていない。そこで、コンシューマは、FIFOからデータを抽出する。そして、コンシューマは、データを抽出したFIFOに対応するコンシューマインデックスを増加させる。
なお、プロデューサは、コンシューマインデックスの複製を記憶する等によって、コンシューマインデックスを参照できる。同様に、コンシューマは、プロデューサインデックスの複製を記憶する等によって。プロデューサインデックスを参照できる。
また、フレームFIFOプロデューサインデックス821、メッセージFIFOプロデューサインデックス822、書込用要求FIFOコンシューマインデックス823は、プロセッサ82に記憶されてもよいし、メモリモジュール84等に記憶されてもよい。
以上のように、プロトコルプロセッサ61とプロセッサ82とは、データを交換する。そのため、従来のストレージシステムでは、一つのプロトコルプロセッサ61は、一つ又は少数のプロセッサ82によって制御される。そのため、従来のストレージシステムは、一つのチャネル4に対して多数のプロセッサ82を備えていても、プロセッサ82を有効に活用できなかった。そこで、本実施の形態のストレージシステム1は、ローカルルータ部62を備える。これによって、本実施の形態のストレージシステム1では、複数のプロセッサ82が一つのプロトコルプロセッサ61を制御できる。
図11は、本発明の第1の実施の形態のフレームFIFO11、メッセージFIFO12及び要求FIFO13の説明図である。
本実施の形態では、ストレージシステム1は、プロセッサA82からプロセッサN82を備える。また、ストレージシステム1は、プロトコルプロセッサA61からプロトコルプロセッサM82を備える。そして、プロトコルプロセッサA61は、すべてのプロセッサ82からアクセスを受信する。
ストレージノード8に備わるメモリモジュール84は、プロセッサ82に対するフレーム/メッセージFIFO群110をプロセッサ82の数だけ記憶する。
プロセッサ82に対するフレーム/メッセージFIFO群110のそれぞれは、フレームFIFO11及びメッセージFIFO12をプロトコルプロセッサ61ごとに有する。
チャネルアダプタ6に備わるメモリモジュール63は、要求FIFO13を記憶する。更に、当該メモリモジュール63は、当該書込用要求FIFO130をプロセッサ82の数だけ記憶する。
なぜなら、ライトアクセスは、データの到達を待たないが、リードアクセスは、データが到達するまで処理がとまってしまうからである。要求FIFO13は、プロトコルプロセッサ61によってリードされるので、プロトコルプロセッサ61の近くのメモリモジュール63に記憶される。一方、フレームFIFO11及びメッセージFIFO12は、プロセッサ82によってリードされるので、プロセッサ82の近くのメモリモジュール84に記憶される。これによって、ストレージシステム1の性能が向上する。
ただし、プロトコルプロセッサに対する要求FIFO13は、ローカルルータ部62に記憶されてもよい。例えば、要求FIFO13は、ローカルルータ部62のレジスタ等に記憶される。この場合、ローカルルータ部62は、メモリモジュール63にアクセスしないですむので、処理を更に高速化できる。
ローカルルータ部62は、フレームFIFO11に格納されるフレームを処理をするプロセッサ(担当プロセッサ)82を決定する。例えば、ローカルルータ部62は、エクスチェンジID、IO要求の対象となるアクセスデータ、IO要求の対象となるLBA又はフレームに含まれるS_ID3023に応じて、担当プロセッサ82を決定する。
ローカルルータ部62は、決定した担当プロセッサ82に対するフレーム/メッセージFIFO群110に含まれるフレームFIFO11に、フレームを格納する。
また、ローカルルータ部62は、メッセージFIFO12に格納されるメッセージを処理をするプロセッサ(担当プロセッサ)82を決定する。そして、ローカルルータ部62は、決定した担当プロセッサ82に対するフレーム/メッセージFIFO群110に含まれるメッセージFIFO12に、メッセージを格納する。
また、プロセッサ82は、転送リストのインデックスを、当該プロセッサ82用の書込用要求FIFO130に格納する。例えば、プロセッサ82Aは、転送リストのインデックスを、プロセッサA用書込用要求FIFO130Aに格納する。
すると、ローカルルータ部62は、書込用要求FIFO130のそれぞれに格納された転送リストのインデックスを抽出する。そして、ローカルルータ部62は、抽出した転送リストのインデックスを、プロトコルプロセッサに対する要求FIFO13に格納する。
なお、ローカルルータ部62は、プロセッサ82が書込用要求FIFO130に格納しようとした転送リストのインデックスを、書込用要求FIFO130に格納せずに、そのままプロトコルプロセッサに対する要求FIFO13に格納してもよい。
これによって、プロトコルプロセッサ61は、当該プロトコルプロセッサ61に対する要求FIFO13に格納されるインデックスに対応する転送リストのみを処理すればよい。つまり、プロトコルプロセッサ61は、一つの要求FIFO13に格納されるインデックスに対応する転送リストを処理することによって、複数のプロセッサ82によって発行された転送リストを処理できる。
次に、ローカルルータ部62の詳細について説明する。
図12は、本発明の第1の実施の形態のローカルルータ部62の構成のブロック図である。
ローカルルータ部62は、アドレスデコーダ621、バッファ625、プロセッサ番号対応テーブル626、フレームFIFOサーチ部627、メッセージFIFOサーチ部628、送信先アドレス変更部629、転送リストインデクス−プロセッサ番号対応テーブル6280、送信先アドレステーブル6290、要求FIFO制御部6210及びメモリコントローラ6211を備える。
アドレスデコーダ621は、プロトコルプロセッサ61からアクセスを受信する。なお、アクセスは、フレーム又はメッセージ等である。すると、アドレスデコーダ621は、受信したアクセスの送信先アドレスを解析する。これによって、アドレスデコーダ621は、受信したアクセスの送信先がキャッシュメモリ87、フレームFIFO11、メッセージFIFO12又は要求FIFO13のいずれであるかを判定する。
アクセスの送信先がキャッシュメモリ87であると、アドレスデコーダ62は、当該アクセスをそのままプロセッサ82へ転送する(624)。
一方、アクセスの送信先がフレームFIFO11であると、アドレスデコーダ621は、当該アクセスをバッファ625に格納する(622)。
フレームFIFOサーチ部627は、プロセッサ番号対応テーブル626に基づいて、バッファ625に格納されているアクセスを処理するプロセッサ(担当プロセッサ)82を決定する。そして、フレームFIFOサーチ部627は、決定した担当プロセッサ82を、当該アクセスの転送先とする。
送信先アドレス変更部629は、決定された担当プロセッサ82及び送信先アドレステーブル6290に基づいて、アクセスの送信先アドレスを変更する。
そして、送信先アドレス変更部629は、送信先アドレスを変更したアクセスを、プロセッサ82へ転送する。なお、アクセスの送信先がフレームFIFO11の場合のローカルルータ部62の処理については、図16で詳細を説明する。
一方、アクセスの送信先がメッセージFIFO12であると、アドレスデコーダ621は、当該アクセスをバッファ625に格納する(623)。
メッセージFIFOサーチ部628は、転送リストインデクス−プロセッサ番号対応テーブル6280に基づいて、バッファ625に格納されているアクセスを処理するプロセッサ(担当プロセッサ)82を決定する。そして、メッセージFIFOサーチ部628は、決定した担当プロセッサ82を、当該アクセスの転送先とする。
送信先アドレス変更部629は、決定された担当プロセッサ82及び送信先アドレステーブル6290に基づいて、アクセスの送信先アドレスを変更する。
そして、送信先アドレス変更部629は、送信先アドレスを変更したアクセスを、プロセッサ82へ転送する。なお、アクセスの送信先がメッセージFIFO12の場合のローカルルータ部62の処理については、図17で詳細を説明する。
一方、アクセスの送信先が要求FIFO13であると、メモリコントローラ6211は、メモリモジュール63に含まれる要求FIFO13から、転送リストのインデックスを抽出する。要求FIFO制御部6210は、抽出された転送リストのインデックスをプロトコルプロセッサ61に送信する。
また、要求FIFO制御部6210は、プロセッサ82からアクセスを受ける。すると、要求FIFO制御部6210は、受信したアクセスに含まれる転送リストのインデックスを、メモリモジュール63に含まれる要求FIFO13に格納する。
なお、アクセスの送信先が要求FIFO13の場合のローカルルータ部62の処理については、図19で詳細を説明する。
プロセッサ番号対応テーブル626は、ホストコンピュータ2から送信されたフレームを処理するプロセッサ(担当プロセッサ)82を示す。なお、プロセッサ番号対応テーブル626については、図13で詳細を説明する。
送信先アドレステーブル6290は、プロトコルプロセッサ61から送信されたアクセスの転送先となるアドレスを示す。なお、送信先アドレステーブル6290については、図14で詳細を説明する。
転送リストインデックス−プロセッサ番号対応テーブル6280は、転送リストポインタのインデックスとプロセッサ番号との対応を示す。なお、転送リストインデックス−プロセッサ番号対応テーブル6280については、図15で詳細を説明する。
図13は、本発明の第1の実施の形態のプロセッサ番号対応テーブル626の構成図である。
プロセッサ番号対応テーブル626は、入力フレーム6261及びプロセッサ番号6265を含む。
入力フレーム6261は、プロトコルプロセッサ61によって受信されたフレームの内容である。具体的には、入力フレーム6261は、S_ID6262、LUN6263及びLBA6264を含む。
S_ID6262は、当該フレームの送信元であるホストコンピュータ2のポートアドレスである。プロセッサ番号対応テーブル626がS_ID6262を含むことによって、ローカルルータ部62は、特定のホストコンピュータ2からしか認識できない論理ボリューム(LU)を設定できる。
LUN6263は、当該フレームによってアクセスが要求される論理ボリュームの一意な識別子である。LBA6264は、当該フレームによってアクセスが要求される論理ブロックの一意な識別子である。
なお、入力フレーム6261は、論理デバイス番号を含んでいてもよい。論理デバイス番号は、当該フレームによってアクセスが要求される論理デバイスの一意な識別子である。
プロセッサ番号6265は、当該エントリのS_ID6262、LUN6263及びLBA6264に対応するフレームを処理するプロセッサの一意な識別子である。
ローカルルータ部62のフレームFIFOサーチ部627は、検索アルゴリズムを用いることによって、プロセッサ番号対応テーブル626から、プロセッサ番号6265を検索してもよい。この場合、ローカルルータ部62のフレームFIFOサーチ部627は、プロセッサ番号6265を高速に検索できる。なお、検索アルゴリズムは、二分木検索アルゴリズム又はハッシュアルゴリズム等である。また、検索アルゴリズムの種類によっては、テーブルの並び順を昇順にするなどの処理が予め必要となる。
また、プロセッサ番号対応テーブル626は、CAM(Content Addressable Memory)を用いて実装されてもよい。
これによって、ローカルルータ部62は、フレームがアクセスを要求する領域に応じて、当該フレームを処理するプロセッサ82を決定できる。そのため、プロセッサ82は、他のプロセッサとの排他処理を行うことなく、データを読み書きできる。
また、ローカルルータ部62は、一つのプロセッサ82でなく、同一の周辺回路部83に接続される複数のプロセッサ82に同一の処理を割り当ててもよい。同一の周辺回路部83に接続されるプロセッサ82間は高速に通信できるので、ストレージシステム1は、プロセッサ82の処理能力を効率的に利用できる。
図14は、本発明の第1の実施の形態の送信先アドレステーブル6290の構成図である。
送信先アドレステーブル6290は、プロセッサ番号6291、フレームFIFOのベースアドレス6292、メッセージFIFOのベースアドレス6293、フレームFIFOのプロデューサインデックス6294、メッセージFIFOのプロデューサインデックス6295、フレームFIFOのコンシューマインデックス6296、及びメッセージFIFOのコンシューマインデックス6297を含む。
プロセッサ番号6291は、ストレージノード8に備わるプロセッサ82の一意な識別子である。
フレームFIFOのベースアドレス6292は、当該エントリのプロセッサ番号6291によって識別されるプロセッサ82に対するフレームFIFO11の先頭のアドレスある。メッセージFIFOのベースアドレス6293は、当該エントリのプロセッサ番号6291によって識別されるプロセッサ82に対するメッセージFIFO12の先頭のアドレスである。
フレームFIFOのプロデューサインデックス6294は、当該エントリのプロセッサ番号6291によって識別されるプロセッサ82に対するフレームFIFO11に、最後にデータが格納されたエントリのインデックスである。
メッセージFIFOのプロデューサインデックス6295は、当該エントリのプロセッサ番号6291によって識別されるプロセッサ82に対するメッセージFIFO12に、最後にデータが格納されたエントリのインデックスである。
フレームFIFOのコンシューマインデックス6296は、当該エントリのプロセッサ番号6291によって識別されるプロセッサ82に対するフレームFIFO11から、最後にデータが抽出されたエントリのインデックスである。
メッセージFIFOのコンシューマインデックス6297は、当該エントリのプロセッサ番号6291によって識別されるプロセッサ82に対するメッセージFIFO12から、最後にデータが抽出されたエントリのインデックスである。
図15は、本発明の第1の実施の形態の転送リストインデックス−プロセッサ番号対応テーブル6280の構成図である。
転送リストインデックス−プロセッサ番号対応テーブル6280は、転送リストインデックス6281、Valid6282、プロセッサ番号6283及びプロセッサ用インデックス6284を含む。
転送リストインデックス6281は、転送リストポインタのインデックスである。Valid6282は、当該エントリが有効であるか否かを示す。具体的には、当該エントリが有効の場合、Valid6282には「true」が格納される。一方、当該エントリが無効の場合、Valid6282には「false」が格納される。
プロセッサ番号6283は、当該エントリの転送リストインデックス6281に対応する転送リストを処理するプロセッサ82の一意な識別子である。プロセッサ用インデックス6284は、当該エントリのプロセッサ番号6283によって識別されるプロセッサ82が用いる転送リストポインタのインデックスである。
図16は、本発明の第1の実施の形態のフレームFIFO11宛てのアクセスを受信したローカルルータ部62の処理のフローチャートである。
まず、ローカルルータ部62は、フレームFIFO11に対するアクセスを受信する。当該アクセスは、フレームである。ローカルルータ部62は、受信したフレームから、S_ID、IO要求の対象となるLUN及びIO要求の対象となるLBAを抽出する(S1501)。
次に、ローカルルータ部62は、プロセッサ番号対応テーブル626に基づいて、当該フレームの転送先となるプロセッサ82を決定する(S1502)。
具体的には、ローカルルータ部62は、抽出したS_IDとプロセッサ番号対応テーブル626のS_ID6262とが一致するエントリを、プロセッサ番号対応テーブル626から選択する。次に、ローカルルータ部62は、抽出したLUNとプロセッサ番号対応テーブル626のLUN6263とが一致するエントリを、選択したエントリの中から選択する。更に、ローカルルータ部62は、抽出したLBAがプロセッサ番号対応テーブル626のLBAに含まれるエントリを、選択したエントリの中から選択する。
次に、ローカルルータ部62は、選択したエントリから、プロセッサ番号6265を抽出する。そして、ローカルルータ部62は、抽出したプロセッサ番号6265によって識別されるプロセッサ82を、フレームの転送先に決定する。
なお、本実施の形態では、順次選択する方法を示した。ローカルルータ部62は、S_ID、LUN及びLBAを一続きのキーとして、二項検索アルゴリズム又はハッシュアルゴリズムを用いていもよい。また、ローカルルータ部62は、検索機能を備えるメモリを用いてもよい。検索機能を備えるメモリは、例えば、CAM(Content Addressable Memory)である。
次に、ローカルルータ部62は、送信先アドレステーブル6290に基づいて、転送先となるプロセッサ82に対するフレームFIFO11のベースアドレスを特定する。
具体的には、ローカルルータ部62は、抽出したプロセッサ番号6265と送信先アドレステーブル6290のプロセッサ番号6291とが一致するエントリを、送信先アドレステーブル6290から選択する。
次に、ローカルルータ部62は、選択したエントリから、フレームFIFOのベースアドレス6292を抽出する(S1503)。更に、ローカルルータ部62は、選択したエントリから、フレームFIFOのプロデューサインデックス6294及びフレームFIFOのコンシューマインデックス6296を抽出する(S1504)。
次に、ローカルルータ部62は、抽出したフレームFIFOのプロデューサインデックス6294に「1」を加算する。次に、ローカルルータ部62は、「1」を加算されたフレームFIFOのプロデューサインデックス6294を、フレームFIFO11に含まれるエントリの数で除算した余りを求める。そして、ローカルルータ部62は、求めた余りと抽出したフレームFIFOのコンシューマインデックス6296とを比較する(S1505)。
余りとフレームFIFOのコンシューマインデックス6296とが等しい場合、フレームFIFO11に空きがない。そこで、ローカルルータ部62は、抽出したフレームFIFOのコンシューマインデックス6294が更新されるまで待機する(S1506)。そして、フレームFIFOのコンシューマインデックス6294が更新されると、ローカルルータ部62は、ステップS1504に戻る。
一方、余りとコンシューマインデックス6296とが異なる場合、フレームFIFO11に空きがある。そこで、ローカルルータ部62は、当該フレームの送信先のアドレスを算出する。
具体的には、ローカルルータ部62は、以下の式(1)によって送信先アドレスを算出する。
(送信先アドレス)=(フレームFIFOのベースアドレス6292)+(フレームFIFOのプロデューサインデックス6294に「1」が加算された値)×(フレームFIFO11の1エントリのサイズ)・・・(1)
ローカルルータ部62は、フレームに含まれる送信先アドレスを、算出した送信先アドレスに変更する(S1507)。そして、ローカルルータ部62は、送信先アドレスを変更したフレームを、内部スイッチ部7に送信する。
次に、ローカルルータ部62は、送信先アドレステーブル6290に含まれるフレームFIFOのプロデューサインデックス6294を更新する(S1508)。
具体的には、ローカルルータ部62は、抽出したフレームFIFOのプロデューサインデックス6294に「1」を加算する。次に、ローカルルータ部62は、「1」を加算されたフレームFIFOのプロデューサインデックス6294を、フレームFIFO11に含まれるエントリの数で除算した余りを求める。次に、ローカルルータ部62は、求めた余りを、送信先アドレステーブル6290のフレームFIFOのプロデューサインデックス6294に格納する。
そして、ローカルルータ部62は、本処理を終了する。
図17は、本発明の第1の実施の形態のメッセージFIFO12宛てのアクセスを受信したローカルルータ部62の処理のフローチャートである。
まず、ローカルルータ部62は、メッセージFIFO12に対するアクセスを受信する。当該アクセスは、メッセージである。ローカルルータ部62は、受信したメッセージから、転送リストインデックスを抽出する(S1601)。
次に、ローカルルータ部62は、転送リストインデックス−プロセッサ番号対応テーブル6280に基づいて、当該メッセージの転送先となるプロセッサ82を決定する(S1602)。なお、ステップS1602の処理については、図18で詳細を説明する。
例えば、ローカルルータ部62は、抽出した転送リストインデックスと転送リストインデックス−プロセッサ番号対応テーブル6280の転送リストインデックス6281とが一致するエントリを、転送リストインデックス−プロセッサ番号対応テーブル6280から選択する。
次に、ローカルルータ部62は、選択したエントリから、プロセッサ番号6283及びプロセッサ用インデックス6284を抽出する。次に、ローカルルータ部62は、メッセージに含まれる転送リストインデックスを、抽出したプロセッサ用インデックス6284に変更する。また、ローカルルータ部62は、抽出したプロセッサ番号6283によって識別されるプロセッサ82を、メッセージの転送先に決定する。
次に、ローカルルータ部62は、送信先アドレステーブル6290に基づいて、転送先となるプロセッサ82に対するメッセージFIFO12のベースアドレスを特定する。
具体的には、ローカルルータ部62は、抽出したプロセッサ番号6283と送信先アドレステーブル6290のプロセッサ番号6291とが一致するエントリを、送信先アドレステーブル6290から選択する。
次に、ローカルルータ部62は、選択したエントリから、メッセージFIFOのベースアドレス6293を抽出する(S1603)。更に、ローカルルータ部62は、選択したエントリから、メッセージFIFOのプロデューサインデックス6295及びメッセージFIFOのコンシューマインデックス6297を抽出する(S1604)。
次に、ローカルルータ部62は、抽出したメッセージFIFOのプロデューサインデックス6295に「1」を加算する。次に、ローカルルータ部62は、「1」を加算されたメッセージFIFOのプロデューサインデックス6295を、メッセージFIFO12に含まれるエントリの数で除算した余りを求める。そして、ローカルルータ部62は、求めた余りと抽出したメッセージFIFOのコンシューマインデックス6297とを比較する(S1605)。
余りとメッセージFIFOのコンシューマインデックス6297とが等しい場合、メッセージFIFO12に空きがない。そこで、ローカルルータ部62は、抽出したメッセージFIFOのコンシューマインデックス6295が更新されるまで待機する(S1606)。そして、メッセージFIFOのコンシューマインデックス6295が更新されると、ローカルルータ部62は、ステップS1604に戻る。
一方、余りとメッセージFIFOのコンシューマインデックス6297とが異なる場合、メッセージFIFO12に空きがある。そこで、ローカルルータ部62は、当該メッセージの送信先のアドレスを算出する。
具体的には、ローカルルータ部62は、以下の式(2)によって送信先アドレスを算出する。
(送信先アドレス)=(メッセージFIFOのベースアドレス6293)+(メッセージFIFOのプロデューサインデックス6295に「1」が加算された値)×(メッセージFIFO12の1エントリのサイズ)・・・(2)
ローカルルータ部62は、メッセージに含まれる送信先アドレスを、算出した送信先アドレスに変更する(S1607)。そして、ローカルルータ部62は、送信先アドレスを変更したメッセージを、内部スイッチ部7に送信する。
次に、ローカルルータ部62は、送信先アドレステーブル6290に含まれるメッセージFIFOのプロデューサインデックス6295を更新する(S1608)。
具体的には、ローカルルータ部62は、抽出したメッセージFIFOのプロデューサインデックス6295に「1」を加算する。次に、ローカルルータ部62は、「1」を加算されたメッセージFIFOのプロデューサインデックス6295を、メッセージFIFO12のエントリ数で除算した余りを求める。次に、ローカルルータ部62は、求めた余りを、メッセージFIFOのプロデューサインデックス6295に格納する。
そして、ローカルルータ部62は、本処理を終了する。
図18は、本発明の第1の実施の形態のローカルルータ部62が担当プロセッサ82を決定する処理のフローチャートである。
担当プロセッサ82を決定する処理は、ローカルルータ部の処理(図17)のステップS1602において実行される。
まず、ローカルルータ部62は、ローカルルータ部の処理(図17)のステップS1601で抽出した転送リストインデックスと転送リストインデックス−プロセッサ番号対応テーブル6280の転送リストインデックス6281とが一致するエントリを、転送リストインデックス−プロセッサ番号対応テーブル6280から選択する(S1801)。
次に、ローカルルータ部62は、ステップS1801において、転送リストインデックスが一致するエントリを選択できたか否かを判定する(S1802)。
転送リストインデックスが一致するエントリを選択できない場合、ローカルルータ部62は、エラーをプロセッサ82等に通知する(S1805)。
一方、転送リストインデックスが一致するエントリを選択できた場合、ローカルルータ部62は、選択したエントリから、Valid6282を抽出する。次に、ローカルルータ部62は、抽出したValid6282が「true」又は「false」のいずれであるかを判定する(S1803)。
Valid6282が「false」であると、ローカルルータ部62は、エラーをプロセッサ82等に通知する(S1805)。
一方、Valid6282が「true」であると、ローカルルータ部62は、選択したエントリから、プロセッサ番号6283を抽出する。そして、ローカルルータ部62は、抽出したプロセッサ番号6283によって識別されるプロセッサ82を、メッセージの転送先に決定する。そして、ローカルルータ部62は、本処理を終了する。
次に、転送リストインデックス−プロセッサ番号対応テーブル6280の更新処理を説明する。
図19は、本発明の第1の実施の形態の転送リストインデックス−プロセッサ番号対応テーブル6280の更新処理のフローチャートである。
ローカルルータ部62は、要求FIFO13に対するアクセスをプロセッサ82から受信する。但し、当該アクセスは、FCP_RSPの送信要求でない。
ローカルルータ部62は、書込用要求FIFO130に対するアクセスを受信すると、当該アクセスに対応する転送リストインデックスを、要求FIFO13に格納する(S2001)。なお、要求FIFO13に転送リストインデックスを格納する処理は、図23で詳細を説明する。また、要求FIFO13は、プロトコルプロセッサ61によって認識される。一方、書込用要求FIFO130は、プロセッサ82によって認識される。
次に、ローカルルータ部62は、転送リストインデックス−プロセッサ番号対応テーブル6280のValid6282に「true」が格納されているエントリを、転送リストインデックス−プロセッサ番号対応テーブル6280から選択する(S2002)。
なお、ローカルルータ部62は、ステップS2002において、当該転送リストによって送信を要求されるフレームのOX_IDと転送リストインデックス−プロセッサ番号対応テーブル6280の転送リストインデックス6281とが一致するエントリを、転送リストインデックス−プロセッサ番号対応テーブル6280から選択してもよい。
次に、ローカルルータ部62は、ステップS2002においてエントリを選択できたか否かを判定する(S2003)。
エントリを選択できない場合、ローカルルータ部62は、最も昔に更新したエントリを選択する。例えば、ローカルルータ部62は、LRUアルゴリズム等を用いて、最も昔に更新したエントリを選択する。次にローカルルータ部62は、選択したエントリのValid6282に「false」を格納する(S2004)。そして、ローカルルータ部62は、ステップS2002に戻る。
一方、エントリを選択できた場合、ローカルルータ部62は、選択したエントリのプロセッサ番号6283に、受信したアクセスの送信元であるプロセッサ82の識別子を格納する(S2005)。
次に、ローカルルータ部62は、選択したエントリのプロセッサ用インデックス6284に、書込用要求FIFO130に格納された転送リストインデックスを格納する(S2006)。その後、ローカルルータ部62は、選択したエントリのValid6282に「true」を格納する(S2007)。
そして、ローカルルータ部62は、本処理を終了する。
なお、ローカルルータ部62は、ステップS2004において転送リストインデックス−プロセッサ番号対応テーブル6280のValid6282を「false」に変更した。しかし、プロセッサ82が、転送リストインデックス−プロセッサ番号対応テーブル6280のValid6282を「false」に変更してもよい。また、ローカルルータ部62は、転送リストインデックスに対応する転送リストの処理をプロトコルプロセッサ61が完了した時に、当該処理された転送リストに対応するエントリのValid6282を「false」に変更してもよい。
なお、ローカルルータ部62は、転送リストインデックスを異なる方法で管理してもよい。
図20は、本発明の第1の実施の形態の転送リストインデックスの管理に関する説明図である。
本説明図では、転送リストインデックスが、複数の区間に分けられる。それぞれの区間は、特定のプロセッサ82のみに使用される。例えば、「0x000〜0x01f」の区間に含まれる転送リストインデックスは、プロセッサ番号の「1」によって識別されるプロセッサ82のみが使用する。同様に、「0x020〜0x03f」の区間に含まれる転送リストインデックスは、プロセッサ番号の「2」によって識別されるプロセッサ82のみが使用する。
この場合、ローカルルータ部62は、転送リストインデックスに対応するプロセッサを容易に特定できる。そのため、ローカルルータ部62は、転送リストインデックス−プロセッサ番号対応テーブル6280の更新処理(図19)を行う必要がなくなる。
但し、転送リストインデックスを使用するプロセッサ82に制限を設定できない場合等には、ローカルルータ部62は、エクスチェンジID−プロセッサ番号リストを備える。また、本実施の形態ではメッセージFIFO12には転送リストインデックスが含まれるとしたが、そうではないプロトコルプロセッサ61を用いた場合にも、ローカルルータ部62は、エクスチェンジID−プロセッサ番号リストを備える。
図21は、本発明の第1の実施の形態のエクスチェンジID−プロセッサ番号リスト2600の説明図である。
エクスチェンジID−プロセッサ番号リスト2600には、リスト構造でデータが格納されている。また、エクスチェンジID−プロセッサ番号リスト2600は、S_IDフィールド2601、エクスチェンジIDフィールド2602、プロセッサ番号フィールド2603及びネクストポインタフィールド2604を含む。
S_IDフィールド2601には、フレームに含まれるS_IDが格納される。なお、S_IDは、フレームの送信元のポートアドレスである。エクスチェンジIDフィールド2602には、フレームに含まれるOX_IDが格納される。OX_IDは、オリジネータによって付与されるエクスチェンジIDである。プロセッサ番号フィールド2603は、当該リストのS_IDフィールド2601及びエクスチェンジIDフィールド2602に対応するフレームを処理するプロセッサの一意な識別子が格納される。ネクストポインタフィールド2604は、次のリストの位置を示す。
ローカルルータ部62は、送信先がフレームFIFO11であるアクセスをプロトコルプロセッサ61から受信すると、図16で説明した処理を行う。なお、当該アクセスは、フレームである。
但し、この場合、ローカルルータ部62は、ステップS1502の後に、エクスチェンジID−プロセッサ番号リスト2600に新たなリストを追加する。
次に、ローカルルータ部62は、受信したフレームから、S_ID及びOX_IDを抽出する。次に、ローカルルータ部62は、抽出したS_IDを、新たなリストのS_IDフィールド2601に格納する。次に、ローカルルータ部62は、抽出したOX_IDを、新たなリストのエクスチェンジIDフィールド2602に格納する。
次に、ローカルルータ部62は、プロセッサ番号対応テーブル626に基づいて、受信したフレームの転送先となるプロセッサ82を決定する。次に、ローカルルータ部62は、決定したプロセッサ82の識別子を、新たなリストのプロセッサ番号2603に格納する。
そして、ローカルルータ部62は、ステップS1503以降の処理を行う。
その後、ローカルルータ部62は、送信先がメッセージFIFO12であるアクセスをプロトコルプロセッサ61から受信すると、図17で説明した処理を行う。但し、ローカルルータ部62は、ステップS1602の代わりに、以下の処理を行う。なお、当該アクセスは、メッセージである。
ローカルルータ部62は、受信したメッセージから、S_ID及びエクスチェンジIDを抽出する。次に、ローカルルータ部62は、エクスチェンジID−プロセッサ番号リスト2600を先頭からたどる。そして、ローカルルータ部62は、抽出したS_IDとS_IDフィールド2601とが一致し、且つ、抽出したエクスチェンジIDとエクスチェンジフィールドID2603とが一致するリストを、エクスチェンジID−プロセッサ番号リスト2600から選択する。
次に、ローカルルータ部62は、選択したリストのプロセッサ番号フィールド2603から、プロセッサ82の識別子を抽出する。そして、ローカルルータ部62は、抽出したプロセッサに識別子によって識別されるプロセッサ82を、メッセージの転送先に決定する。その後、受信されたメッセージに対応するエクスチェンジが終了すると、ローカルルータ部62は、選択したリストを削除する。
図22は、本発明の第1の実施の形態のメッセージFIFOの仮想化に関する説明図である。
本説明図では、プロトコルプロセッサA61の認識範囲6100及びプロセッサA82の認識範囲8200が図示されている。
ローカルルータ部62は、プロトコルプロセッサ61に、仮想プロトコルプロセッサ用メッセージFIFO6111を提供する。但し、仮想プロトコルプロセッサ用メッセージFIFO6111は、実態が存在しない仮想的なFIFOである。
プロトコルプロセッサ61が、仮想プロトコルプロセッサA用メッセージFIFO6111に対するメッセージを送信したとする。すると、ローカルルータ部62は、当該メッセージの送信先を変更することによって、プロトコルプロセッサA用メッセージFIFO12Aにメッセージを格納する。なお、プロトコルプロセッサA用メッセージFIFO12Aは、メモリモジュール84に含まれる。
次に、プロトコルプロセッサ61は、プロセッサAに対するメッセージFIFOプロデューサインデックス8220を増加させる。
なお、ローカルルータ部62は、プロセッサAに対するメッセージFIFOプロデューサインデックス8220と別に、プロセッサAに対するプロトコルプロセッサA用メッセージFIFOプロデューサインデックスのコピー6121を備える。
プロセッサAに対するメッセージFIFOプロデューサインデックス8220が更新されると、ローカルルータ部62は、プロセッサAに対するプロトコルプロセッサA用メッセージFIFOプロデューサインデックスのコピー6121を用いて、プロトコルプロセッサA用メッセージFIFOプロデューサインデックス822Aを増加させる。なお、プロトコルプロセッサ用メッセージFIFOプロデューサインデックス822は、プロセッサ82に備わる。
このようにして、プロトコルプロセッサ61は、メッセージの送信をプロセッサ82に通知する。
その後、プロセッサA82が、プロトコルプロセッサA用メッセージFIFO12Aからメッセージを抽出したとする。すると、プロセッサA82は、プロセッサAに対するプロトコルプロセッサA用メッセージFIFOコンシューマインデックス6120を増加させる。
なお、ローカルルータ部62は、プロセッサAに対するプロトコルプロセッサA用メッセージFIFOコンシューマインデックス6120と別に、プロセッサAに対するプロトコルプロセッサA用メッセージFIFOコンシューマインデックスのコピー(図示省略)を備える。
プロセッサAに対するプロトコルプロセッサA用メッセージFIFOコンシューマインデックス6120が更新されると、ローカルルータ部62は、プロセッサAに対するプロトコルプロセッサA用メッセージFIFOコンシューマインデックスのコピーを用いて、メッセージFIFOコンシューマインデックス612を増加させる。このとき、ローカルルータ部62は、仮想プロトコルプロセッサA用メッセージFIFO6111と整合が取れるように、メッセージFIFOコンシューマインデックス612を更新する。具体的には、ローカルルータ部62は、メッセージFIFOコンシューマインデックス612を増加させる。なお、メッセージFIFOコンシューマインデックス612は、プロトコルプロセッサ61に備わる。
ローカルルータ部62が以上のように動作することによって、プロトコルプロセッサ61は、一つのプロセッサ82のみとデータを送受信しているのと同一の処理によって、複数のプロセッサ82とデータを送受信できる。
図23は、本発明の第1の実施の形態の要求FIFOの書き込みに関する説明図である。
本説明図では、プロトコルプロセッサA61の認識範囲6101及びプロセッサA82の認識範囲8201が図示されている。
プロセッサA82は、メモリモジュール63に格納されたプロセッサA用書込用要求FIFO130Aを要求FIFO13として認識している。
プロトコルプロセッサ61が、プロセッサA用書込用要求FIFO130Aを送信先とするアクセスを送信する。なお、当該アクセスは、転送リストポインタのインデックスの格納を要求する。
すると、ローカルルータ部62は、プロトコルプロセッサAに対する要求FIFO13に空きがあるか否かを判定する。プロトコルプロセッサAに対する要求FIFO13に空きがない場合、ローカルルータ部62は、当該アクセスをプロセッサA用書込用要求FIFO130Aに格納する。
一方、プロトコルプロセッサAに対する要求FIFO13に空きがある場合、ローカルルータ部62は、当該アクセスの送信先を変更することによって、プロトコルプロセッサAに対する要求FIFO13に当該アクセスを格納する。
次に、プロセッサ82は、プロセッサA用書込用要求FIFOプロデューサインデックス6130を増加させる。
なお、ローカルルータ部62は、プロセッサA用書込用要求FIFOプロデューサインデックス6130と別に、プロセッサA用書込用要求FIFOプロデューサインデックスのコピー(図示省略)を備える。
プロセッサA用書込用要求FIFOプロデューサインデックス6130が更新されると、ローカルルータ部62は、プロセッサA用書込用要求FIFOプロデューサインデックスのコピーを用いて、要求FIFOプロデューサインデックス613を増加させる。なお、要求FIFOプロデューサインデックス613は、プロトコルプロセッサ61に備わる。
その後、プロトコルプロセッサA61が、プロトコルプロセッサAに対する要求FIFO13からアクセスを抽出したとする。すると、プロトコルプロセッサA61は、プロトコルプロセッサAに対する要求FIFOコンシューマインデックス8230を増加させる。
なお、ローカルルータ部62は、プロトコルプロセッサAに対する要求FIFOコンシューマインデックス8230と別に、プロセッサA用書込用要求FIFOコンシューマインデックスのコピー6131を備える。
プロトコルプロセッサAに対する要求FIFOコンシューマインデックス8230が更新されると、ローカルルータ部62は、プロセッサA用書込用要求FIFOコンシューマインデックスのコピー6131を用いて、書込用要求FIFOコンシューマインデックス823を更新する。具体的には、ローカルルータ部62は、書込用要求FIFOコンシューマインデックス823を増加させる。なお、書込用要求FIFOコンシューマインデックス823は、プロセッサ82に備わる。
これによって、プロセッサ82は、ローカルルータ部62をプロトコルプロセッサ61として認識する。また、プロトコルプロセッサ61は、ローカルルータ部62をプロセッサ82として認識する。そのため、プロセッサ82は、プロトコルプロセッサ61には一つのプロセッサ82のみが接続されていると認識する。これによって、プロセッサ82は、いかなるタイミングであっても、要求FIFO13を更新できる。
図24は、本発明の第1の実施の形態の要求FIFO13宛てのアクセスを受信したローカルルータ部62の処理のフローチャートである。
まず、ローカルルータ部62は、プロセッサ用書込用要求FIFO130に対するアクセスをプロセッサ82から受信する。すると、ローカルルータ部62は、要求FIFO13に空きがあるか否かを判定する(S2301)。
具体的には、ローカルルータ部62は、プロトコルプロセッサに対する要求FIFOプロデューサインデックスのコピーに「1」を加算する。次に、ローカルルータ部62は、求まった値を要求FIFO13のエントリ数で除算した余りを求める。次に、ローカルルータ部62は、求まった値とプロトコルプロセッサに対する要求FIFOコンシューマインデックス8230とを比較する。これらが等しい場合、要求FIFO13には空きがない。一方、これらが異なる場合、要求FIFO13には空きがある。
要求FIFO13に空きがある場合、ローカルルータ部62は、プロセッサ用書込用要求FIFO130が空であるか否かを判定する(S2302)。
具体的には、ローカルルータ部62は、プロセッサ用書込用要求FIFOコンシューマインデックスのコピー6131とプロセッサ用書込用要求FIFOプロデューサインデックス6130とを比較する。これらが等しい場合、プロセッサ用書込用要求FIFO130が空である。一方、これらが異なる場合、プロセッサ用書込用要求FIFO130には一つ以上のアクセスが格納されている。
プロセッサ用書込用要求FIFO130が空の場合、ローカルルータ部62は、受信したアクセスを、要求FIFO13に格納する(S2303)。具体的には、ローカルルータ部62は、要求FIFO13内の、要求FIFOプロデューサインデックスのコピーに対応する位置に、アクセスを格納する。つまり、ローカルルータ部62は、プロセッサ用書込用要求FIFO130でなく、要求FIFO13にアクセスを格納する。
次に、ローカルルータ部62は、要求FIFOプロデューサインデックス613を増加させる。同時に、ローカルルータ部62は、要求FIFOプロデューサインデックスのコピーも増加させる。
このとき、ローカルルータ部62は、書込用要求FIFOコンシューマインデックス823及び書込用要求FIFOコンシューマインデックスのコピー6131も増加させておいてもよい(S2304)。そして、ローカルルータ部62は、本処理を終了する。
一方、ステップS2301で要求FIFO13に空きがない場合又はステップS2302でプロセッサ用書込用要求FIFO130が空でない場合には、ローカルルータ部62は、ステップS2305に進む。
ローカルルータ部62は、プロセッサ用書込用要求FIFO130に空きがあるか否かを判定する(S2305)。
プロセッサ用書込用要求FIFO130に空きがある場合、ローカルルータ部62は、そのままステップS2308に進む。
一方、プロセッサ用書込用要求FIFO130に空きがない場合、ローカルルータ部62は、要求FIFO13に空きが出るまで待機する。そして、要求FIFO13に空きがでると、ローカルルータ部62は、プロセッサ用書込用要求FIFO130に格納されているアクセスを抽出する。そして、ローカルルータ部62は、抽出したアクセスを、要求FIFO13に格納する。これによって、ローカルルータ部62は、プロセッサ用書込用要求FIFO130に格納されているアクセスを、要求FIFO13に移動する(S2306)。
次に、ローカルルータ部62は、要求FIFOプロデューサインデックス613及び要求FIFOプロデューサインデックスのコピーを増加させる(S2307)。
次に、ローカルルータ部62は、受信したアクセスを、プロセッサ用書込用要求FIFO130に格納する(S2308)。そして、ローカルルータ部62は、書込用要求FIFOコンシューマインデックス823及び要求FIFOコンシューマインデックス6131のコピーを増加させる(S2309)。
次に、ローカルルータ部62は、要求FIFO13に空きが出るまで待機する。そして、要求FIFO13に空きがでると、ローカルルータ部62は、プロセッサ用書込用要求FIFO130に格納されているアクセスを抽出する。そして、ローカルルータ部62は、抽出したアクセスを、要求FIFO13に格納する。これによって、ローカルルータ部62は、プロセッサ用書込用要求FIFO130に格納されているアクセスを、要求FIFO13に移動する(S2310)。
次に、ローカルルータ部62は、要求FIFOプロデューサインデックス613及び要求FIFOプロデューサインデックスのコピーを増加させる(S2311)。
次に、ローカルルータ部62は、プロセッサ用書込用要求FIFO130が空であるか否かを判定する(S2312)。
プロセッサ用書込用要求FIFO130が空でない場合、ローカルルータ部62は、ステップS2310に戻る。そして、ローカルルータ部62は、プロセッサ用書込用要求FIFO130が空となるまで、ステップS2310〜ステップS2312の処理を繰り返す。
一方、プロセッサ用書込用要求FIFO130が空の場合、ローカルルータ部62は、そのまま本処理を終了する。
以上のように、本実施の形態では、複数のプロセッサ82が、一つのプロトコルプロセッサ61を制御できる。よって、ストレージシステムに備わるプロセッサを有効活用できる。
(第2の実施形態)
図25は、本発明の第2の実施の形態の計算機システムの構成のブロック図である。
第2の実施の形態の計算機システムでは、HDDエンクロージャ部5が、ストレージノード8でなく、ディスクアダプタ9に接続される。第2の実施の形態の計算機システムのそれ以外の構成は、第1の実施の形態の計算機システム(図1)と同一であるので、説明を省略する。
ディスクアダプタ9は、プロトコルプロセッサ61、ローカルルータ部62及びメモリモジュール63を備える。プロトコルプロセッサ61、ローカルルータ部62及びメモリモジュール63は、チャネルアダプタ6に備わるものと同一である。同一の構成には同一の番号を付すことによって、説明を省略する。
但し、ディスクアダプタ9に備わるプロトコルプロセッサ61は、HDDエンクロージャ部5に接続される。
ストレージノード8は、ディスクアダプタ9を介してHDDエンクロージャ部5を制御する。なお、第2の実施の形態の計算機システムの処理は、第1の実施の形態の計算機システムと同一であるので、説明を省略する。
第2の実施の形態の計算機システムは、プロセッサ資源とHDD資源とを分けて管理できる。よって、多数のプロセッサ82が、少数のHDD51を処理できる。そのため、第2の実施の形態の計算機システムは、データベース環境等に適用すると好適である。
(第3の実施形態)
図26は、本発明の第3の実施の形態の計算機システムの構成のブロック図である。
本発明の第3の実施の形態の計算機システムの構成は、チャネルアダプタ6を除き、第1の実施の形態の計算機システム(図1)と同一である。同一の構成には同一の番号を付すことによって説明を省略する。
チャネルアダプタ6は、プロトコルプロセッサ61、ローカルルータ部62、メモリモジュール63、ブリッジ部64及びフロントエンドプロセッサ部68を備える。
プロトコルプロセッサ61、ローカルルータ部62及びメモリモジュール63は、第1の実施の形態のチャネルアダプタ6に備わるものと同一であるので、説明を省略する。ただし、本実施の形態のローカルルータ部62は、フロントエンドプロセッサ67にアクセスを振り分ける。
ブリッジ部64は、ローカルルータ部62とフロントエンドプロセッサ部68とを接続する。
フロントエンドプロセッサ部68は、フロントエンドプロセッサ67及びメモリモジュール65を備える。
メモリモジュール65は、フロントエンドプロセッサ67によって実行されるプログラム及びフロントエンドプロセッサ67によって必要とされる情報等を記憶する。
フロントエンドプロセッサ67は、メモリモジュール65に記憶されるプログラムを実行することによって、各種処理を行う。具体的には、フロントエンドプロセッサ67は、プロトコルプロセッサ61を介してチャネル4を制御する。また、フロントエンドプロセッサ67は、プロトコルプロセッサ61がチャネル4から受信したフレームに含まれるIO要求を解釈することによって、当該IO要求を処理するプロセッサ82を特定する。次に、フロントエンドプロセッサ67は、特定されたプロセッサ82と通信することによって、当該IO要求に対応する処理を行う。例えば、フロントエンドプロセッサ67は、IO要求によってアクセスを要求されたデータがキャッシュメモリ87に格納されているか否かをプロセッサ82に問い合わせる。更に、IO要求によって要求されたデータがキャッシュメモリ87に格納されている場合、フロントエンドプロセッサ67は、当該データが格納されているキャッシュメモリ87上のアドレスを、プロセッサ82に問い合わせる。
フロントエンドプロセッサ67とプロセッサ82との通信は、フロントエンドプロセッサ67とプロトコルプロセッサ61との通信よりも、オーバヘッドが大きいが、高性能な処理を行える。そのため、第3の実施の形態のストレージシステム1は、プロセッサ82間の負荷を分散できる。また、複数のフロントエンドプロセッサ67が、チャネル4を制御する。よって、第3の実施の形態のストレージシステム1では、チャネル制御が性能のボトルネックになることを回避できる。その結果として、第3の実施の形態のストレージシステム1は、プロセッサ82を有効活用できる。
本発明の第1の実施の形態の計算機システムの構成のブロック図である。 本発明の第1の実施の形態のストレージシステムに備わるストレージノードの構成のブロック図である。 本発明の第1の実施の形態のファイバチャネルプロトコルのフレームの説明図である。 本発明の第1の実施の形態のFCP_CMNDに含まれるInformation Unitの説明図である。 本発明の第1の実施の形態のFCP_XFER_RDYに含まれるInformation Unitの説明図である。 本発明の第1の実施の形態のFCP_DATAに含まれるInformation Unitの説明図である。 本発明の第1の実施の形態のFCP_RSPに含まれるInformation Unitの説明図である。 本発明の第1の実施の形態の計算機システムのリード処理のタイミングチャートである。 本発明の第1の実施の形態の計算機システムのライト処理のタイミングチャートである。 本発明の第1の実施の形態の計算機システムのライト処理の説明図である。 本発明の第1の実施の形態の要求FIFO及び転送リストの説明図である。 本発明の第1の実施の形態のメッセージFIFOの説明図である。 本発明の第1の実施の形態のフレームFIFO、メッセージFIFO及び要求FIFOの制御に関する説明図である。 本発明の第1の実施の形態のフレームFIFO、メッセージFIFO及び要求FIFOの説明図である。 発明の第1の実施の形態のローカルルータ部の構成のブロック図である。 本発明の第1の実施の形態のプロセッサ番号対応テーブルの構成図である。 本発明の第1の実施の形態の送信先アドレステーブルの構成図である。 本発明の第1の実施の形態の転送リストインデックス−プロセッサ番号対応テーブルの構成図である。 本発明の第1の実施の形態のフレームFIFO宛てのアクセスを受信したローカルルータ部の処理のフローチャートである。 本発明の第1の実施の形態のメッセージFIFO宛てのアクセスを受信したローカルルータ部の処理のフローチャートである。 本発明の第1の実施の形態のローカルルータ部が担当プロセッサを決定する処理のフローチャートである。 本発明の第1の実施の形態の転送リストインデックス−プロセッサ番号対応テーブルの更新処理のフローチャートである。 本発明の第1の実施の形態の転送リストインデックスの管理に関する説明図である。 本発明の第1の実施の形態のエクスチェンジID−プロセッサ番号リストの説明図である。 本発明の第1の実施の形態のメッセージFIFOの仮想化に関する説明図である。 本発明の第1の実施の形態の要求FIFOの書き込みに関する説明図である。 本発明の第1の実施の形態の要求FIFO宛てのアクセスを受信したローカルルータ部の処理のフローチャートである。 本発明の第2の実施の形態の計算機システムの構成のブロックである。 本発明の第3の実施の形態の計算機システムの構成のブロックである。
符号の説明
1 ストレージシステム
2 ホストコンピュータ
3 SANスイッチ
4 チャネル
5 HDDエンクロージャ部
6 チャネルアダプタ
7 内部スイッチ部
8 ストレージノード
9 ディスクアダプタ
11 フレームFIFO
12 メッセージFIFO
13 要求FIFO
51 HDD
52 HDD側チャネル
61 プロトコルプロセッサ
62 ローカルルータ部
63 メモリモジュール
67 フロントエンドプロセッサ
68 フロントエンドプロセッサ部
81 内部ネットワークI/F部
82 プロセッサ
83 周辺回路部
84 メモリモジュール
85 ブリッジ部
86 HDD側プロトコルプロセッサ
87 キャッシュメモリ
621 アドレスデコーダ
625 バッファ
626 プロセッサ番号対応テーブル
627 フレームFIFOサーチ部
628 メッセージFIFOサーチ部
801 電源系A
802 電源系B
851 DMAコントローラ

Claims (20)

  1. チャネルを介してホストコンピュータに接続されるストレージシステムにおいて、
    前記チャネルに接続され、前記ホストコンピュータに対してフレームを送受信する複数のプロトコルプロセッサと、前記チャネルを制御する複数のプロセッサと、前記プロトコルプロセッサ及び前記プロセッサに接続されるローカルルータ部と、前記ローカルルータ部に接続される第1メモリと、前記ホストコンピュータから書き込み要求されるデータを格納するディスクドライブと、を備え、
    前記プロトコルプロセッサは、前記ホストコンピュータにフレームを送信すると、当該フレームの送信状況に関する情報をローカルルータ部に送信し、
    前記ローカルルータ部は、
    前記プロトコルプロセッサがフレームを受信すると、前記受信されたフレームがアクセスを要求する対象に基づいて、前記受信されたフレームを処理するプロセッサを決定し、
    当該決定されたプロセッサに、前記受信されたフレームを転送し、
    前記プロトコルプロセッサがフレームを送信すると、前記送信されたフレームのエクスチェンジに基づいて、前記フレームの送信状況に関する情報を処理するプロセッサを決定し、
    当該決定されたプロセッサに、前記フレームの送信状況に関する情報を転送することを特徴とするストレージシステム。
  2. 前記第1メモリは、前記フレームによってアクセスが要求される論理ユニットと当該フレームを処理するプロセッサとの対応を示すプロセッサ対応情報を記憶し、
    前記ローカルルータ部は、前記プロトコルプロセッサがフレームを受信すると、前記プロセッサ対応情報に基づいて、前記受信されたフレームを処理するプロセッサを決定することを特徴とする請求項1に記載のストレージシステム。
  3. 前記第1メモリは、前記フレームによってアクセスが要求される論理ユニット及び論理ブロックアドレスと当該フレームを処理するプロセッサとの対応を示すプロセッサ対応情報を記憶し、
    前記ローカルルータ部は、前記プロトコルプロセッサがフレームを受信すると、前記プロセッサ対応情報に基づいて、前記受信されたフレームを処理するプロセッサを決定することを特徴とする請求項1に記載のストレージシステム。
  4. 前記第1メモリは、前記フレームの送信元のアドレスと当該フレームを処理するプロセッサとの対応を示すプロセッサ対応情報を記憶し、
    前記ローカルルータ部は、前記プロトコルプロセッサがフレームを受信すると、前記プロセッサ対応情報に基づいて、前記受信されたフレームを処理するプロセッサを決定することを特徴とする請求項1に記載のストレージシステム。
  5. 前記第1メモリは、前記フレームのエクスチェンジの識別子と当該フレームの送信状況に関する情報を処理するプロセッサとの対応を示すプロセッサ対応情報を記憶し、
    前記ローカルルータ部は、前記プロトコルプロセッサがフレームを送信すると、前記プロセッサ対応情報に基づいて、前記フレームの送信状況に関する情報を処理するプロセッサを決定することを特徴とする請求項1に記載のストレージシステム。
  6. 更に、前記ディスクドライブから読み出されるデータ又は前記ディスクドライブに書き込まれるデータを一時的に記憶するキャッシュメモリを備え、
    前記ローカルルータ部は、前記データが格納される前記キャッシュメモリ上のアドレスを示す転送リストインデックスに基づいて、前記フレームのエクスチェンジを特定することを特徴とする請求項1に記載のストレージシステム。
  7. 前記ローカルルータ部は、
    前記フレームの送信状況に関する情報が格納される仮想的な第1キューを前記プロトコルプロセッサごとに提供し、
    前記フレームの送信状況に関する情報が格納される物理的な第2キューを前記プロセッサごとに提供し、
    前記第1キューへの格納を要求される前記フレームの送信状況に関する情報を、前記第2キューに格納することによって、前記決定されたプロセッサに、前記フレームの送信状況に関する情報を転送することを特徴とする請求項1に記載のストレージシステム。
  8. 更に、前記プロセッサに接続される第2メモリを備え、
    前記ローカルルータ部は、
    前記フレームの送信状況に関する情報が格納される仮想的な第1キューを前記プロトコルプロセッサごとに提供し、
    前記第2メモリの一部を、前記フレームの送信状況に関する情報が格納される物理的な第2キューとして、前記プロセッサごとに提供し、
    前記第1キューへの格納を要求される前記フレームの送信状況に関する情報を、前記第2キューに格納することによって、前記決定されたプロセッサに、前記フレームの送信状況に関する情報を転送することを特徴とする請求項1に記載のストレージシステム。
  9. 前記ローカルルータ部は、
    フレームの送信要求が格納される第1キューをプロセッサごとに提供し、
    フレームの送信要求が格納される第2キューをプロトコルプロセッサごとに提供し、
    前記第1キューに格納されるフレームの送信要求を抽出し、
    前記抽出されたフレームの送信要求を、前記第2キューに格納することを特徴とする請求項1に記載のストレージシステム。
  10. 更に、前記プロセッサに接続される第2メモリを備え、
    前記ローカルルータ部は、
    前記第1メモリの一部を、フレームの送信要求が格納される第1キューとして、プロセッサごとに提供し、
    前記第1メモリの一部を、フレームの送信要求が格納される第2キューとして、プロトコルプロセッサごとに提供し、
    前記第1キューに格納されるフレームの送信要求を抽出し、
    前記抽出されたフレームの送信要求を、前記第2キューに格納することを特徴とする請求項1に記載のストレージシステム。
  11. 第1チャネルを介してホストコンピュータと接続され、更に、第2チャネルを介してディスクドライブと接続されるストレージコントローラにおいて、
    前記第1チャネルに接続され、前記ホストコンピュータに対してフレームを送受信する複数のプロトコルプロセッサと、前記第1チャネルを制御する複数のプロセッサと、前記プロトコルプロセッサ及び前記プロセッサに接続されるローカルルータ部と、前記ローカルルータ部に接続される第1メモリと、を備え、
    前記プロトコルプロセッサは、前記ホストコンピュータにフレームを送信すると、当該フレームの送信状況に関する情報をローカルルータ部に送信し、
    前記ローカルルータ部は、
    前記プロトコルプロセッサがフレームを受信すると、前記受信されたフレームがアクセスを要求する対象に基づいて、前記受信されたフレームを処理するプロセッサを決定し、
    当該決定されたプロセッサに、前記受信されたフレームを転送し、
    前記プロトコルプロセッサがフレームを送信すると、前記送信されたフレームのエクスチェンジに基づいて、前記フレームの送信状況に関する情報を処理するプロセッサを決定し、
    当該決定されたプロセッサに、前記フレームの送信状況に関する情報を転送することを特徴とするストレージコントローラ。
  12. 前記第1メモリは、前記フレームによってアクセスが要求される論理ユニットと当該フレームを処理するプロセッサとの対応を示すプロセッサ対応情報を記憶し、
    前記ローカルルータ部は、前記プロトコルプロセッサがフレームを受信すると、前記プロセッサ対応情報に基づいて、前記受信されたフレームを処理するプロセッサを決定することを特徴とする請求項11に記載のストレージコントローラ。
  13. 前記第1メモリは、前記フレームによってアクセスが要求される論理ユニット及び論理ブロックアドレスと当該フレームを処理するプロセッサとの対応を示すプロセッサ対応情報を記憶し、
    前記ローカルルータ部は、前記プロトコルプロセッサがフレームを受信すると、前記プロセッサ対応情報に基づいて、前記受信されたフレームを処理するプロセッサを決定することを特徴とする請求項11に記載のストレージコントローラ。
  14. 前記第1メモリは、前記フレームの送信元のアドレスと当該フレームを処理するプロセッサとの対応を示すプロセッサ対応情報を記憶し、
    前記ローカルルータ部は、前記プロトコルプロセッサがフレームを受信すると、前記プロセッサ対応情報に基づいて、前記受信されたフレームを処理するプロセッサを決定することを特徴とする請求項11に記載のストレージコントローラ。
  15. 前記第1メモリは、前記フレームのエクスチェンジの識別子と当該フレームの送信状況に関する情報を処理するプロセッサとの対応を示すプロセッサ対応情報を記憶し、
    前記ローカルルータ部は、前記プロトコルプロセッサがフレームを送信すると、前記プロセッサ対応情報に基づいて、前記フレームの送信状況に関する情報を処理するプロセッサを決定することを特徴とする請求項11に記載のストレージコントローラ。
  16. 更に、前記ディスクドライブから読み出されるデータ又は前記ディスクドライブに書き込まれるデータを一時的に記憶するキャッシュメモリを備え、
    前記ローカルルータ部は、前記データが格納される前記キャッシュメモリ上のアドレスを示す転送リストインデックスに基づいて、前記フレームのエクスチェンジを特定することを特徴とする請求項11に記載のストレージコントローラ。
  17. 前記ローカルルータ部は、
    前記フレームの送信状況に関する情報が格納される仮想的な第1キューを前記プロトコルプロセッサごとに提供し、
    前記フレームの送信状況に関する情報が格納される物理的な第2キューを前記プロセッサごとに提供し、
    前記第1キューへの格納を要求される前記フレームの送信状況に関する情報を、前記第2キューに格納することによって、前記決定されたプロセッサに、前記フレームの送信状況に関する情報を転送することを特徴とする請求項11に記載のストレージコントローラ。
  18. 更に、前記プロセッサに接続される第2メモリを備え、
    前記ローカルルータ部は、
    前記フレームの送信状況に関する情報が格納される仮想的な第1キューを前記プロトコルプロセッサごとに提供し、
    前記第2メモリの一部を、前記フレームの送信状況に関する情報が格納される物理的な第2キューとして、前記プロセッサごとに提供し、
    前記第1キューへの格納を要求される前記フレームの送信状況に関する情報を、前記第2キューに格納することによって、前記決定されたプロセッサに、前記フレームの送信状況に関する情報を転送することを特徴とする請求項11に記載のストレージコントローラ。
  19. 前記ローカルルータ部は、
    フレームの送信要求が格納される第1キューをプロセッサごとに提供し、
    フレームの送信要求が格納される第2キューをプロトコルプロセッサごとに提供し、
    前記第1キューに格納されるフレームの送信要求を抽出し、
    前記抽出されたフレームの送信要求を、前記第2キューに格納することを特徴とする請求項11に記載のストレージコントローラ。
  20. 更に、前記プロセッサに接続される第2メモリを備え、
    前記ローカルルータ部は、
    前記第1メモリの一部を、フレームの送信要求が格納される第1キューとして、プロセッサごとに提供し、
    前記第1メモリの一部を、フレームの送信要求が格納される第2キューとして、プロトコルプロセッサごとに提供し、
    前記第1キューに格納されるフレームの送信要求を抽出し、
    前記抽出されたフレームの送信要求を、前記第2キューに格納することを特徴とする請求項11に記載のストレージコントローラ。
JP2006037958A 2006-02-15 2006-02-15 ストレージシステム及びストレージコントローラ Expired - Fee Related JP4740763B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2006037958A JP4740763B2 (ja) 2006-02-15 2006-02-15 ストレージシステム及びストレージコントローラ
US11/396,676 US8423677B2 (en) 2006-02-15 2006-04-04 Storage system having a channel control function using a plurality of processors
EP06253355.9A EP1833221B1 (en) 2006-02-15 2006-06-27 Storage system having a channel control function using a plurality of processors
US13/688,483 US8843703B2 (en) 2006-02-15 2012-11-29 Storage system having a channel control function using a plurality of processors
US14/492,107 US9513825B2 (en) 2006-02-15 2014-09-22 Storage system having a channel control function using a plurality of processors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006037958A JP4740763B2 (ja) 2006-02-15 2006-02-15 ストレージシステム及びストレージコントローラ

Publications (2)

Publication Number Publication Date
JP2007219717A true JP2007219717A (ja) 2007-08-30
JP4740763B2 JP4740763B2 (ja) 2011-08-03

Family

ID=38088194

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006037958A Expired - Fee Related JP4740763B2 (ja) 2006-02-15 2006-02-15 ストレージシステム及びストレージコントローラ

Country Status (3)

Country Link
US (3) US8423677B2 (ja)
EP (1) EP1833221B1 (ja)
JP (1) JP4740763B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009271701A (ja) * 2008-05-07 2009-11-19 Hitachi Ltd ストレージ装置制御方法および計算機システム
US8151049B2 (en) 2008-01-17 2012-04-03 Nec Corporation Input/output control unit, disk array apparatus, input/output control method, and program
US8266342B1 (en) 2011-06-24 2012-09-11 Hitachi, Ltd. Storage system
WO2013001578A1 (ja) * 2011-06-29 2013-01-03 株式会社日立製作所 入出力制御装置及び入出力制御装置のフレーム処理方法
JP2017520826A (ja) * 2014-06-27 2017-07-27 インテル・コーポレーション Usb3.1リタイマプレゼンス検出、及びインデックスの方法及び装置
US9990148B2 (en) 2014-10-01 2018-06-05 Fujitsu Limited Storage control device and storage system for data backup

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010128808A (ja) * 2008-11-27 2010-06-10 Hitachi Ltd ストレージ制御装置
US9525647B2 (en) 2010-07-06 2016-12-20 Nicira, Inc. Network control apparatus and method for creating and modifying logical switching elements
US10103939B2 (en) 2010-07-06 2018-10-16 Nicira, Inc. Network control apparatus and method for populating logical datapath sets
US8880468B2 (en) * 2010-07-06 2014-11-04 Nicira, Inc. Secondary storage architecture for a network control system that utilizes a primary network information base
JP5782925B2 (ja) * 2011-08-31 2015-09-24 富士通株式会社 情報処理装置、プログラム、および制御方法
US9094333B1 (en) * 2011-10-26 2015-07-28 Qlogic, Corporation Systems and methods for sending and receiving information via a network device
US8924606B2 (en) * 2012-03-02 2014-12-30 Hitachi, Ltd. Storage system and data transfer control method
WO2014076736A1 (en) * 2012-11-15 2014-05-22 Hitachi, Ltd. Storage system and control method for storage system
US9176899B2 (en) * 2012-12-19 2015-11-03 International Business Machines Corporation Communication protocol placement into switch memory
US9086991B2 (en) * 2013-02-19 2015-07-21 Infinidat Ltd. Solid state drive cache recovery in a clustered storage system
WO2014178856A1 (en) * 2013-04-30 2014-11-06 Hewlett-Packard Development Company, L.P. Memory network
WO2015068239A1 (ja) 2013-11-07 2015-05-14 株式会社日立製作所 計算機システムおよびデータ制御方法
JP6208870B2 (ja) 2014-07-11 2017-10-04 株式会社日立製作所 ストレージシステム、記憶制御方法及び中継装置
JP6683160B2 (ja) 2017-03-27 2020-04-15 日本電気株式会社 ストレージシステム、および通信方法
JP6794336B2 (ja) * 2017-11-17 2020-12-02 株式会社東芝 ニューラルネットワーク装置
EP3921739A4 (en) * 2019-02-06 2023-02-15 Fermat International, Inc.. ANALYTICS, ALGORITHM ARCHITECTURE AND DATA PROCESSING SYSTEM AND PROCEDURES
US11385941B2 (en) * 2019-07-31 2022-07-12 EMC IP Holding Company, LLC System and method for address space slicing with strong CPU core affinity

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000339226A (ja) * 1997-05-29 2000-12-08 Hitachi Ltd 記憶制御装置及び記憶システム
US20050044267A1 (en) * 2003-07-21 2005-02-24 Dropps Frank R. Method and system for routing and filtering network data packets in fibre channel systems
JP2005165440A (ja) * 2003-11-28 2005-06-23 Hitachi Ltd ディスクアレイ装置及びディスクアレイ装置の制御方法

Family Cites Families (15)

* 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
JP2001167040A (ja) * 1999-12-14 2001-06-22 Hitachi Ltd 記憶サブシステム及び記憶制御装置
US6791989B1 (en) * 1999-12-30 2004-09-14 Agilent Technologies, Inc. Fibre channel interface controller that performs non-blocking output and input of fibre channel data frames and acknowledgement frames to and from a fibre channel
US6898670B2 (en) * 2000-04-18 2005-05-24 Storeage Networking Technologies Storage virtualization in a storage area network
US8019901B2 (en) * 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US7200144B2 (en) * 2001-10-18 2007-04-03 Qlogic, Corp. Router and methods using network addresses for virtualization
US7269168B2 (en) * 2002-07-31 2007-09-11 Brocade Communications Systems, Inc. Host bus adaptor-based virtualization switch
US6957303B2 (en) 2002-11-26 2005-10-18 Hitachi, Ltd. System and managing method for cluster-type storage
US7634614B2 (en) * 2003-01-13 2009-12-15 Sierra Logic Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves and that support virtual disk formatting
US7685254B2 (en) * 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
JP4372098B2 (ja) * 2003-07-09 2009-11-25 富士通株式会社 ネットワークにおける特定サービスの最適ルーティング方法並びに同ネットワークに用いられるサーバ及びルーティングノード
JP2005056200A (ja) * 2003-08-05 2005-03-03 Hitachi Ltd データ管理方法、ディスク記憶装置およびディスク記憶システム
US20050066045A1 (en) * 2003-09-03 2005-03-24 Johnson Neil James Integrated network interface supporting multiple data transfer protocols
JP2006285811A (ja) * 2005-04-04 2006-10-19 Hitachi Ltd ストレージシステム及びデータ処理方法
US20070076685A1 (en) * 2005-09-30 2007-04-05 Pak-Lung Seto Programmable routing for frame-packet based frame processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000339226A (ja) * 1997-05-29 2000-12-08 Hitachi Ltd 記憶制御装置及び記憶システム
US20050044267A1 (en) * 2003-07-21 2005-02-24 Dropps Frank R. Method and system for routing and filtering network data packets in fibre channel systems
JP2005165440A (ja) * 2003-11-28 2005-06-23 Hitachi Ltd ディスクアレイ装置及びディスクアレイ装置の制御方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8151049B2 (en) 2008-01-17 2012-04-03 Nec Corporation Input/output control unit, disk array apparatus, input/output control method, and program
JP2009271701A (ja) * 2008-05-07 2009-11-19 Hitachi Ltd ストレージ装置制御方法および計算機システム
JP4616898B2 (ja) * 2008-05-07 2011-01-19 株式会社日立製作所 ストレージ装置制御方法および計算機システム
US8661219B2 (en) 2008-05-07 2014-02-25 Hitachi, Ltd. Storage device control method and computer system
US8266342B1 (en) 2011-06-24 2012-09-11 Hitachi, Ltd. Storage system
WO2013001578A1 (ja) * 2011-06-29 2013-01-03 株式会社日立製作所 入出力制御装置及び入出力制御装置のフレーム処理方法
JP2017520826A (ja) * 2014-06-27 2017-07-27 インテル・コーポレーション Usb3.1リタイマプレゼンス検出、及びインデックスの方法及び装置
US9990148B2 (en) 2014-10-01 2018-06-05 Fujitsu Limited Storage control device and storage system for data backup

Also Published As

Publication number Publication date
JP4740763B2 (ja) 2011-08-03
EP1833221B1 (en) 2016-04-27
US20160196077A9 (en) 2016-07-07
US20160085463A1 (en) 2016-03-24
US20130159619A1 (en) 2013-06-20
US9513825B2 (en) 2016-12-06
EP1833221A3 (en) 2009-08-19
US20070201434A1 (en) 2007-08-30
US8423677B2 (en) 2013-04-16
US8843703B2 (en) 2014-09-23
EP1833221A2 (en) 2007-09-12

Similar Documents

Publication Publication Date Title
JP4740763B2 (ja) ストレージシステム及びストレージコントローラ
US20200210069A1 (en) Methods and systems for data storage using solid state drives
US20190278719A1 (en) Primary Data Storage System with Data Tiering
JP4859471B2 (ja) ストレージシステム及びストレージコントローラ
JP3997061B2 (ja) 記憶サブシステムおよび記憶サブシステムの制御方法
US7272687B2 (en) Cache redundancy for LSI raid controllers
US20160117103A1 (en) Primary Data Storage System with Quality of Service
JP5029513B2 (ja) 情報処理装置、情報処理装置の制御方法、およびプログラム
JP7105870B2 (ja) データアクセス方法、装置およびシステム
JP4606711B2 (ja) 仮想化制御装置およびデータ移行制御方法
JP5102915B2 (ja) ストレージ装置及びそのデータ検証方法
JP2005010969A (ja) ネットワークシステム及びスイッチ
JP5537732B2 (ja) ストレージシステム
JP2005250938A (ja) 記憶制御システム及び方法
JP6254293B2 (ja) データ重複排除方法及びストレージアレイ
US8527725B2 (en) Active-active remote configuration of a storage system
JP6426838B2 (ja) ストレージシステム、及び、記憶制御方法
JP2012198639A (ja) 制御装置、制御方法およびストレージ装置
US10824425B2 (en) Selecting destination for processing management instructions based on the processor buffer size and uncompleted management instructions
JP2021026541A (ja) ドライブボックス、ストレージシステム及びデータ転送方法
WO2017072868A1 (ja) ストレージ装置
US8055815B2 (en) Optimal paths with SCSI I/O referrals
US6950905B2 (en) Write posting memory interface with block-based read-ahead mechanism
JP2007537550A (ja) デジタルセマンティックプロセッサを用いたストレージサーバーのアーキテクチャ
JP2005346426A (ja) データ共有ディスク装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080811

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110207

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110502

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4740763

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees