JP2022164414A - ストレージ装置及びアドレス設定方法 - Google Patents

ストレージ装置及びアドレス設定方法 Download PDF

Info

Publication number
JP2022164414A
JP2022164414A JP2021069891A JP2021069891A JP2022164414A JP 2022164414 A JP2022164414 A JP 2022164414A JP 2021069891 A JP2021069891 A JP 2021069891A JP 2021069891 A JP2021069891 A JP 2021069891A JP 2022164414 A JP2022164414 A JP 2022164414A
Authority
JP
Japan
Prior art keywords
switch
port
interface
address
storage
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.)
Pending
Application number
JP2021069891A
Other languages
English (en)
Inventor
勝也 田中
Katsuya Tanaka
尚也 岡田
Hisaya Okada
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 JP2021069891A priority Critical patent/JP2022164414A/ja
Priority to US17/462,425 priority patent/US20220337532A1/en
Publication of JP2022164414A publication Critical patent/JP2022164414A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Figure 2022164414000001
【課題】イーサネットワークで接続されるストレージコントローラのインターフェースのIPアドレスを設定する。
【解決手段】ストレージ装置は、ストレージコントローラ及びスイッチを備え、ストレージコントローラは、スイッチと接続するための複数のインターフェースポートを含む、一つ以上のコントローラインターフェースを有し、スイッチは、複数のスイッチポートを有し、また、複数の仮想ネットワークが設定され、ストレージコントローラは、インターフェースポートから複数の仮想ネットワーク宛てに、接続するスイッチポートを特定するためのパケットを送信し、スイッチ番号及びスイッチポート番号を特定するための情報を含むパケットを受信した場合、スイッチ番号及びスイッチポート番号に基づいて、ストレージコントローラ間のデータ転送に使用するインターフェースポートのアドレスを決定する。
【選択図】図8

Description

本発明は、スイッチを介して接続される複数のストレージコントローラを有するストレージ装置に関する。
複数のストレージノードを集めたクラスタ構成のストレージ装置は、並列アクセスを可能とし、また、データを冗長化するために、各ストレージノードを並列に稼働させることによって、高いデータアクセス性能、及び高い可用性を実現できる。例えば、特許文献1では、複数のストレージノードをネットワークで相互接続することによって大規模なストレージ装置を構成することが開示されている。
以下の説明及び図面において、複数のストレージノードを接続したストレージ装置の内部ネットワークをストレージ内部ネットワークと呼ぶ。また、ストレージノードを単にノードと呼ぶことがある。
ストレージノードは、一般的に、ストレージコントローラと、ランダムアクセス可能な不揮発性記録媒体とを有する。記録媒体は、例えば、不揮発性半導体メモリドライブ又はハードディスクドライブを多数備えたドライブボックスである。ストレージコントローラは、上位装置(ホストシステム等)を接続するためのフロントエンドインターフェースと、ドライブボックスを接続するためのバックエンドインターフェースと、上位装置がドライブボックスに対して読み書きするユーザデータを一時的に保存するキャッシュメモリとを有する。さらに、ストレージコントローラは、ストレージコントローラ内で扱う制御データを格納する制御メモリと、ユーザデータ及び制御データのデータ転送を制御するプロセッサとを有する。複数のストレージノードを接続したストレージ装置では、複数のストレージノードがストレージ内部ネットワークを介して、ユーザデータ及び制御データを互いに送受信する。
また、ストレージノードをはじめとする、計算機ノード間の接続に好適なネットワークの標準規格としてはイーサネット(イーサネット、Ethernetは登録商標。以下同じ。)が知られている。ストレージ内部ネットワークにイーサネットを適用したストレージ装置は、複数のストレージノードをイーサネットスイッチで接続する。
複数のストレージノードを有するストレージ装置では、複数のストレージコントローラを統合して一つのストレージ装置として制御し、ストレージコントローラ間で通信を行うためには、各ストレージコントローラ間インターフェースにアドレスを割り当てる必要がある。アドレスの割当方法として、例えば、特許文献1には、ストレージコントローラ間インターフェースの接続先スイッチポート番号に基づいて、アドレスを割り当てるために必要なストレージコントローラ識別子を決定することが記載されている。
また、イーサネットでは、IEEE802.1ABで標準化されたプロトコルLLDP(Link Layer Discovery Protocol)を用いて、隣接するデバイス同士でデバイスに関する情報を交換できる。イーサネットスイッチから隣接デバイスに送信されるLLDPパケットには、スイッチ及び接続先スイッチポートの識別情報が含まれる。
特開2020-077137号公報
ストレージコントローラ間をイーサネットで接続したストレージ装置において特許文献1と同様の方法でストレージコントローラ識別子を決定するためには、ストレージコントローラが接続先のスイッチ及びスイッチポートに基づいてストレージコントローラ間インターフェースにIP(Internet Protocol)アドレスを設定し、ストレージコントローラとスイッチとを通信可能にする必要がある。
LLDPパケット内に含まれるスイッチ識別情報は、例えば、スイッチ管理ポートのMAC(Media Access Control)アドレスである。そのため、ストレージコントローラは、LLDPを用いて接続先のイーサネットスイッチを識別するためには、接続されるスイッチ及び接続される可能性があるスイッチのMACアドレスを、予め知っている必要がある。
本発明の一実態様の目的は、ストレージコントローラが、接続先スイッチ及びスイッチポートを識別し、ストレージコントローラ間インターフェースのIPアドレスを設定する方法及びそれを用いたストレージ装置を提供することである。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ストレージ装置であって、複数のストレージコントローラと、複数のスイッチと、を備え、前記複数のストレージコントローラは、前記複数のスイッチを介して互いに通信可能に接続され、前記ストレージコントローラは、前記複数のスイッチと接続するための複数のインターフェースポートを含む、一つ以上のコントローラインターフェースを有し、前記スイッチは、複数のスイッチポートを有し、前記スイッチには、一つの前記スイッチポートから構成される複数の仮想ネットワークが設定され、前記ストレージコントローラは、前記インターフェースポートから前記複数の仮想ネットワーク宛てに、当該インターフェースポートが接続する前記スイッチポートを特定するための第1パケットを送信し、前記スイッチのスイッチ番号及び前記インターフェースポートが接続する前記スイッチポートのスイッチポート番号を特定するための情報を含む第2パケットを前記スイッチから受信した場合、前記情報に基づいて前記スイッチのスイッチ番号及び前記スイッチポートのスイッチポート番号を特定し、特定された前記スイッチのスイッチ番号及び特定された前記スイッチポートのスイッチポート番号に基づいて、前記ストレージコントローラ間のデータ転送に使用する前記インターフェースポートのアドレスを決定する。
ストレージコントローラが、接続先のスイッチ及びスイッチポートを識別し、インターフェースポートのIPアドレスを設定できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
実施例1のストレージ装置のハードウェア構成の一例を示す図である。 実施例1のストレージノードのハードウェア構成の一例を示す図である。 実施例1のストレージ装置がホストシステムからRead要求を受信した場合の動作を説明する図である。 実施例1のストレージ装置がホストシステムからWrite要求を受信した場合の動作を説明する図である。 実施例1のスイッチのハードウェア構成の一例を示す図である。 実施例1のスイッチにおけるVLANの設定例を示す図である。 実施例1のスイッチにおけるVLANの設定例を示す図である。 実施例1のストレージ装置が実行するエッジインターフェースポートのIPアドレス設定処理の流れを説明するシーケンス図である。 実施例1のVLANインターフェースIPアドレス管理テーブルの一例を示す図である。 実施例1のEIFプログラムが実行する処理を説明するフローチャートである。 実施例1のスイッチ管理テーブルの一例を示す図である。 実施例1のスイッチプログラムが実行する処理を説明するフローチャートである。 実施例1のエッジインターフェースポートIPアドレス管理テーブルの一例を示す図である。 実施例1のEIFプログラムが実行する処理を説明するフローチャートである。 実施例1のストレージコントローラが実行する接続確認処理を説明するフローチャートである。 実施例2のVLANインターフェースIPアドレス管理テーブルの一例を示す図である。 実施例2のEIFプログラムが実行する処理を説明するフローチャートである。 実施例2のスイッチ管理テーブル一例を示す図である。 実施例2のスイッチプログラムが実行する処理を説明するフローチャートである。 実施例2のエッジインターフェースポートIPアドレス管理テーブルの一例を示す図である。 実施例2のEIFプログラムが実行する処理を説明するフローチャートである。 実施例2のストレージコントローラが実行する接続確認処理を説明するフローチャートである。 実施例3のエッジインターフェースのハードウェア構成を示す図である。 実施例4のストレージ装置が実行するエッジインターフェースポートのIPアドレス設定処理の流れを説明するシーケンス図である。 実施例4のEIFプログラムが実行する処理を説明するフローチャートである。 実施例4のスイッチプログラムが実行する処理を説明するフローチャートである。 実施例4のEIFプログラムが実行する処理を説明するフローチャートである。 実施例5のストレージ装置が実行するエッジインターフェースポートのIPアドレス設定処理の流れを説明するシーケンス図である。 実施例5のEIFプログラムが実行する処理を説明するフローチャートである。 実施例5のスイッチプログラムが実行する処理を説明するフローチャートである。 実施例5のEIFプログラムが実行する処理を説明するフローチャートである。
以下、図面を参照しながら、本発明の幾つかの実施例を説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
また、「プログラム」を主語として処理を説明する場合がある。そのプログラムは、プロセッサ、例えば、CPU(Central Processing Unit)によって実行されるもので、定められた処理をするものである。なお、プロセッサが実行する処理は、適宜に記憶資源(例えばメモリ)及び通信インターフェース装置(例えば、通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。プロセッサは、CPUの他に専用ハードウェアを有していてもよい。
図1から図15を参照して、実施例1のストレージ装置を説明する。
図1は、実施例1のストレージ装置のハードウェア構成の一例を示す図である。
実施例1のストレージ装置100は、内部ネットワークを介して相互接続された複数のストレージノード110を有する。図1では、N個のストレージノード110を有するストレージ装置100を示している。ここで、Nは2以上の整数である。なお、本発明はストレージ装置100に含まれるストレージノード110の数に限定されない。ストレージノード110を接続する内部ネットワークを、本明細書ではストレージ内部ネットワークと呼ぶ。
実施例1のストレージ装置100では、ストレージ内部ネットワークとして、イーサネット規格のスイッチ120及びリンクを用いて構築されたネットワークが用いられる。各ストレージノード110は、スイッチ120-0、120-1、120-2、120-3を介して相互に接続される。スイッチ120には、一意な識別情報(スイッチ番号)が設定される。なお、スイッチ120の数は任意である。また、イーサネットとは異なるプロトコルのスイッチ及びリンクを用いてストレージ内部ネットワークを構築してもよい。
ストレージノード110は、二つのストレージコントローラ130を有する。ストレージコントローラ130は、スイッチ120と接続するためのエッジインターフェース(EIF)140を有する。図1に示すストレージコントローラ130は、二つのエッジインターフェース140を有し、一つのエッジインターフェース140を用いてスイッチ120-0、120-1と接続し、もう一つのエッジインターフェース140を用いてスイッチ120-2、120-3と接続する。
なお、ストレージノード110が有するストレージコントローラ130の数は任意である。ストレージノード110には、構成が異なるストレージコントローラ130が混在してもよい。
次に、実施例1のストレージ装置100におけるストレージコントローラ130の識別情報(ストレージコントローラ番号)の識別方法について説明する。
ストレージコントローラ130は、四つのエッジインターフェースポート205(図2参照)を有する。例えば、ストレージコントローラ130-0のエッジインターフェース140-0は、ポート番号が0番及び1番の二つのエッジインターフェースポート205を有し、エッジインターフェース140-1はポート番号が2番及び3番の二つのエッジインターフェースポート205を有する。
各スイッチ120は、2N個のスイッチポート150を有する。各スイッチポート150には0番から2N-1番のスイッチポート番号が付される。
ストレージコントローラ130の各エッジインターフェースポート205は、ポート番号と同一のスイッチ番号のスイッチ120のスイッチポート150と接続する。このとき、エッジインターフェースポート205は、ストレージコントローラ番号と同一のスイッチポート番号のスイッチポート150と接続する。ストレージコントローラ130は、接続先のスイッチ120のスイッチポート番号に基づいて自身のストレージコントローラ番号を識別する。
図2は、実施例1のストレージノード110のハードウェア構成の一例を示す図である。
ストレージノード110は、二つのストレージコントローラ130、及び複数の記憶媒体を収容するドライブボックス210を有する。ここで、記憶媒体は、例えば、ハードディスクドライブ(HDD)又はソリッドステートドライブ(SSD)等である。
ストレージコントローラ130は、プロセッサ(MP)200、メモリ201、フロントエンドインターフェース(FE)202、バックエンドインターフェース(BE)203、エッジインターフェース140、及びNTB(Non-Transparent Bridge)204を有する。
フロントエンドインターフェース202は、ストレージ装置100にアクセスするホストシステム300(図3参照)及びストレージ装置100を接続する。フロントエンドインターフェース202は、ホストシステム300及びストレージノード110間のデータ転送プロトコルと、ストレージコントローラ130内のデータ転送プロトコルとの変換を行う。
ホストシステム300及びフロントエンドインターフェース202との間は、ファイバチャネルケーブル及びイーサネットケーブル等の伝送線で接続される。また、ホストシステム300及びフロントエンドインターフェース202が、複数の伝送線及び複数のスイッチから構成されるストレージエリアネットワークを介して接続されてもよい。
バックエンドインターフェース203は、ストレージコントローラ130及びドライブボックス210を接続する。バックエンドインターフェース203は、ストレージコントローラ130内のデータ転送プロトコルと、ストレージコントローラ130及びドライブボックス210の間のデータ転送プロトコルとの変換を行う。
なお、ドライブボックス210内の記憶媒体がPCIe(PCI Express)(PCIe、PCI Expressは登録商標。以下同じ。)接続のNVMeSSDである場合、バックエンドインターフェース203は、プロトコル変換を行わないPCIeスイッチである。
プロセッサ200は、フロントエンドインターフェース202を介して接続されるホストシステム300と、バックエンドインターフェース203を介して接続されるドライブボックス210との間のデータ転送を制御する。さらに、プロセッサ200は、ストレージノード110間のデータ転送を制御する。
メモリ201は、プロセッサ200の主記憶装置であり、プロセッサ200が実行するプログラム(例えば、ストレージ制御プログラム等)、プロセッサ200が参照する管理テーブル等の情報を格納する。また、メモリ201は、ストレージコントローラ130のキャッシュメモリとしても使用される。
NTB204は、PCIeによりプロセッサ200と接続する。各ストレージコントローラ130のNTB204は、Non-Transparentリンク206を介して相互に通信できる。各ストレージコントローラ130のプロセッサ200は、Non-Transparentリンク206を介して相互に通信可能である。
以上で説明したように、ストレージノード110は、二つのストレージコントローラ130によりデュアルコントローラを構成する。
エッジインターフェース140は、イーサネットのリンクを接続するためのエッジインターフェースポート205を一つ以上有する。図2に示す例では、エッジインターフェース140-0は少なくともエッジインターフェースポート205-0を有し、エッジインターフェース140-1は少なくともエッジインターフェースポート205-1を有し、エッジインターフェース140-2は少なくともエッジインターフェースポート205-2を有し、エッジインターフェース140-3は少なくともエッジインターフェースポート205-3を有する。プロセッサ200はエッジインターフェースポート205を介してスイッチ120と接続する。その結果、異なるストレージノード110に含まれるストレージコントローラ130は相互に通信可能になっている。
実施例1のストレージ装置100では、ストレージコントローラ130間のデータ転送にRoCE(RDMA over Converged Ethernet)を用いる。RoCEは、イーサネット上でRDMA(Remote Direct Memory Access)によるデータ転送を可能にするプロトコルである。ストレージコントローラ130間を接続するエッジインターフェース140等は、RoCEによるRDMAデータ転送が可能である。また、RoCEでは、各ストレージコントローラ130内のプロセッサ200上で動作するプログラムが通信を行う際、論理的な通信ポート(論理ポート)であるQueue Pair(QP)を用いる。
図3は、実施例1のストレージ装置100がホストシステムからRead要求を受信した場合の動作を説明する図である。
ここで、ホストシステム300は、ストレージノード110-0のストレージコントローラ130-0のフロントエンドインターフェース202-0に接続しているものとする。また、ストレージノード110-0のフロントエンドインターフェース202-0がホストシステム300からのRead要求を受信するものとする。また、ホストシステム300が要求したデータは、ストレージノード110-2のストレージコントローラ130-2のキャッシュメモリ(CM)320-1に格納されているものとする。
ストレージコントローラ130-0のプロセッサ200-0は、エッジインターフェース140-0からエッジインターフェース140-4に対して、キャッシュメモリ320-1に格納されるデータの読出要求を送信する。具体的には、プロセッサ200がデータ転送制御プログラムを実行することによって、ストレージコントローラ130-0に用意されている複数のQPのうち、ストレージコントローラ130-2との通信用のQPに対してデータ読出用のリクエスト(例えば、RDMA Readリクエスト)をポストする。ここで、「ポスト」は、メモリ201-0内のQPのSendキューにリクエストを格納する動作を意味する。これによって、RDMA Readリクエストがエッジインターフェース140-0からエッジインターフェース140-4へ送信される。
エッジインターフェース140-4は、読出要求を受信した場合、キャッシュメモリ320-1に格納されているデータを、プロセッサ200-2、エッジインターフェース140-4、スイッチ120-0、エッジインターフェース140-0、及びプロセッサ200-0を通過する経路330で、メモリ201-0のバッファ領域310に転送する。この転送において、読み出されたデータはプロセッサ200-2、200-0の内部を通過しているが、プロセッサ200-0、200-2のCPUコアはデータ転送に関与しない。これは、RDMAによる他の転送例に対して同様である。フロントエンドインターフェース202-0は、バッファ領域310に格納されたデータを、ホストシステム300に転送する(経路331)。
なお、キャッシュメモリ320-1に格納されているデータを、ストレージコントローラ130-2からストレージコントローラ130-0へ、RDMA Writeリクエストを用いて送信するように制御してもよい。その場合、まず、プロセッサ200-0が、ストレージコントローラ130-2との通信用のQPに対して、データ送信をプロセッサ200-2に依頼するメッセージを転送するリクエスト(例えば、RDMA Writeリクエスト)をポストする。メッセージを受信したプロセッサ200-2は、ストレージコントローラ130-0との通信用のQPに対して、読み出されたデータを転送するRDMA Writeリクエストをポストする。
図4は、実施例1のストレージ装置100がホストシステムからWrite要求を受信した場合の動作を説明する図である。
ストレージコントローラ130-0は、ホストシステム300から受信した書き込みデータを、メモリ201-0のバッファ領域310に格納する(経路401)。ここでは、ストレージ制御プログラム(図示省略)が、ホストシステム300から受信したデータの書き込み先として、ストレージコントローラ130-2のキャッシュメモリ320-1を指示するものとする。
プロセッサ200-0は、バッファ領域310に格納されたデータを、エッジインターフェース140-0、140-4のRDMAデータ転送機能を用いて、スイッチ120-0、プロセッサ200-2を介して、ストレージコントローラ130-2のキャッシュメモリ320-1へ転送する(経路402)。ここで、プロセッサ200-2のCPUコアはデータ転送に関与しない。
プロセッサ200-2は、データを冗長化するため、キャッシュメモリ320-1に書き込まれたデータを、NTB204-2、204-3、プロセッサ200-3を介して、ストレージコントローラ130-3のキャッシュメモリ320-2へ転送する(経路403)。
ストレージノード110-2の二つのキャッシュメモリ320-1、320-2へのデータの書き込みが完了した後、フロントエンドインターフェース202-0は、ホストシステム300に対して書き込みの完了を通知する。
なお、プロセッサ200-0は、ストレージコントローラ130-0内に用意されている複数のQPのうち、ストレージコントローラ130-2との通信用のQPに対してデータ書き込み用のリクエスト(例えば、RDMA Writeリクエスト)をポストしてもよい。これによって、エッジインターフェース140-0とエッジインターフェース140-4との間でRDMAデータ転送を行うことができる。
図5は、実施例1のスイッチのハードウェア構成の一例を示す図である。
スイッチ120は、スイッチポート150、スイッチASIC(Application Specific Integrated Circuit)501、スイッチCPU520、スイッチメモリ530、管理インターフェース525、及びスイッチ番号指定インターフェース527を有する。スイッチASIC501及びスイッチCPU520は、それぞれ、スイッチ集積回路及びスイッチプロセッサの例である。
各スイッチポート150は、ストレージコントローラ130のエッジインターフェース140のエッジインターフェースポート205と1対1で接続する。スイッチASIC501は、複数のスイッチポート150間のデータ転送を実現する。スイッチCPU520は、スイッチASIC501の設定及び制御を行う。スイッチメモリ530は、スイッチCPU520が実行するプログラム531及びプログラム531が参照する情報532を格納する。プログラム531には、スイッチASIC501の制御プログラムが含まれ、情報532はスイッチ120の設定パラメータが含まれる。
管理インターフェース525は、例えばイーサネットインターフェースカードとして提供される。さらに管理インターフェース525は、イーサネットポートである管理ポート526を有する。スイッチ番号指定インターフェース527は、DIP(Dual In-Line Package)スイッチ528を有する。ストレージ装置100の管理者は、DIPスイッチ528を操作してスイッチ120のスイッチ番号を設定することができる。
スイッチCPU520は、スイッチ番号指定インターフェース527を介してDIPスイッチ528に設定されたスイッチ番号を読み出し、その値をスイッチメモリ530に格納する。
スイッチCPU520及びスイッチASIC501は、プロセッサバス522で接続される。スイッチCPU520及び管理インターフェース525は、プロセッサバス523で接続される。スイッチCPU520及びスイッチメモリ530は、メモリバス521で接続される。スイッチCPU520及びスイッチ番号指定インターフェース527は、プロセッサバス524で接続される。
図6は、実施例1のスイッチ120におけるVLANの設定例を示す図である。
スイッチ120は、L2(Layer2)イーサネットスイッチとして動作する。本実施例のスイッチ120にはVLANが設定される。説明を簡単にするため、図6では、スイッチポート150と接続する各エッジインターフェース140は一つのエッジインターフェースポート205のみを図示し、ストレージコントローラ130は省略している。
図6は、ストレージコントローラ間データ転送用のVLAN601の設定例を示す。VLAN601は、0番から2N-1番までのすべてのスイッチポート150が参加したVLANである。
コントローラ番号がi(iは0以上かつ2N-1以下の整数)のストレージコントローラ130-iのエッジインターフェースポート205は、スイッチ120のポート番号iのスイッチポート150と接続する。図3及び図4で説明したストレージ装置100のストレージコントローラ130間のデータ転送ではVLAN601が使用される。
図7は、実施例1のスイッチ120におけるVLANの設定例を示す図である。
図7に示すVLAN701は、ストレージコントローラ130がエッジインターフェース140の接続先のスイッチポート150を識別するために設定されるVLANである。
スイッチ120の各スイッチポート150に対してVLAN701が設定される。スイッチ120に2N個のスイッチポート150が存在する場合、2N個のVLAN701が設定されることになる。
VLAN701に属するスイッチポート150は一つである。VLAN701には、IPアドレスと共に、スイッチCPU520と通信するためのVLANインターフェース702が設定される。ストレージコントローラ130は、VLANインターフェース702を介してスイッチCPU520にアクセスできる。つまり、VLAN701は、スイッチポート150及びVLANインターフェース702を含む。ここで、スイッチポート150は、コントローラ番号がiのストレージコントローラ130-iのエッジインターフェースポート205と接続する。
VLAN601及びVLAN701は、タグ付きVLANであるものとする。VLANタグは、後述するPFC(Priority Flow Control)の優先度を設定するために必要である。
なお、スイッチ120にVLAN601及びVLAN701は同時に設定可能である。
図8は、実施例1のストレージ装置100が実行するエッジインターフェースポート205のIPアドレス設定処理の流れを説明するシーケンス図である。
図8では、VLAN701を用いてエッジインターフェースポート205のIPアドレスを設定するために、ストレージコントローラ130が有するエッジインターフェース140とスイッチCPU520との間で送受信されるパケットを示す。送受信するパケットは、例えば、UDP(User Datagram Protocol)パケットである。
ストレージコントローラ130のプロセッサ200が実行するEIFプログラム801、803、及びスイッチCPU520が実行するスイッチプログラム802が協働して以下で説明する処理を実行する。図8では、エッジインターフェースポート205のIPアドレス設定方法の概要を説明する。各プログラムの詳細は後述する。
プロセッサ200が実行するEIFプログラム801は、スイッチ120のすべてのVLAN701のVLANインターフェース702(VLAN_IF#0からVLAN_IF#2N-1)に対してパケットを送信する。
ここでは、エッジインターフェースポート205がスイッチ120のk番目のスイッチポート150に接続されている場合を想定する。この場合、VLANインターフェース702(VLAN_IF#k)以外のパケットはドロップされる。スイッチCPU520はVLAN IDが「k」のVLANインターフェース702宛てのパケットをk番目のスイッチポート150を介して受信する。
スイッチCPU520が実行するスイッチプログラム802は、k番目のスイッチポート150を介して、エッジインターフェース140から送信された、VLAN IDが「k」のVLANインターフェース702宛のパケットを受信する。
スイッチCPU520が実行するスイッチプログラム802は、スイッチ120のスイッチ番号と、エッジインターフェースポート205と接続するスイッチポート150のスイッチポート番号とをペイロードに格納したパケットを、エッジインターフェース140へ送信する。
プロセッサ200が実行するEIFプログラム803は、スイッチCPU520がVLAN IDが「k」のVLANインターフェース702を介して送信したパケットを受信する。プロセッサ200が実行するEIFプログラム803は、受信したパケットに含まれるスイッチ番号及びスイッチポート番号に基づいてエッジインターフェースポートIPアドレス管理テーブル1300(図13を参照)を参照し、VLAN601で使用するIPアドレスをエッジインターフェースポート205に設定する。
つまり、ストレージコントローラ130は、スイッチ120の各スイッチポート150に設定されたVLAN701をスキャンすることによって、エッジインターフェース140が接続されているスイッチ120のスイッチ番号及びスイッチポート番号を識別する。
なお、ストレージコントローラ130のプロセッサ200は、EIFプログラム801が終わってからEIFプログラム803を実行するわけではない。スイッチCPU520からの返信がいつ来るか分からないのため、ストレージコントローラ130のプロセッサ200は、EIFプログラム801及びEIFプログラム803を並行実行する。
次に、各プログラムの詳細を説明する。まず、図9及び図10を参照してEIFプログラム801の動作を説明する。
図9は、実施例1のVLANインターフェースIPアドレス管理テーブル900の一例を示す図である。
VLANインターフェースIPアドレス管理テーブル900は、ストレージコントローラ130のメモリ201に格納され、プロセッサ200が実行するEIFプログラム801によって参照される。
VLANインターフェースIPアドレス管理テーブル900は、VLAN ID901、VLANインターフェースIPアドレス902、及び送信元IPアドレス903を含むエントリを格納する。一つのVLAN701に対して一つのエントリが存在する。
VLAN ID901は、VLAN701のVLAN IDを格納するフィールドである。VLAN IDは、エッジインターフェース140からVLANインターフェース702に送信するパケットのヘッダに含まれるVLANタグに設定される値である。VLAN ID901には説明のためにVLAN701の識別情報を追加しているが、実際のフィールドには含まれない。
VLANインターフェースIPアドレス902は、VLANインターフェース702のIPアドレスを格納するフィールドである。
送信元IPアドレス903は、エッジインターフェース140からVLANインターフェース702に送信するパケットのヘッダに設定される送信元IPアドレスを格納するフィールドである。
なお、VLANインターフェースIPアドレス902及び送信元IPアドレス903の文字「X」は0以上の整数である。
実施例1のストレージ装置100において、各スイッチ120のVLAN701の設定及びVLANインターフェース702のIPアドレスの設定は同じである。
図10は、実施例1のEIFプログラム801が実行する処理を説明するフローチャートである。
プロセッサ200が実行するEIFプログラム801は、変数iを1に初期化する(ステップS1001)。
次に、プロセッサ200が実行するEIFプログラム801は、VLAN IDが「i」であるVLAN701のVLANインターフェース702宛てのパケットを送信する(ステップS1002)。
具体的には、プロセッサ200が実行するEIFプログラム801は、VLANインターフェースIPアドレス管理テーブル900のVLAN ID901が「i」であるエントリを検索する。プロセッサ200が実行するEIFプログラム801は、検索されたエントリの送信元IPアドレス903の値が送信元IPアドレスとして設定され、かつ、検索されたエントリのVLANインターフェースIPアドレス902の値が送信先IPアドレスとして設定されたパケットを送信する。
なお、パケットの送信先MACアドレスは、ARP(Address Resolution Protocol)を用いて取得したVLANインターフェース702のMACアドレス、又はブロードキャストアドレス(FF-FF-FF-FF-FF-FF)を設定する。
次に、プロセッサ200が実行するEIFプログラム801は、変数iの値がスイッチ120に設定されたVLAN701の数(スイッチポート150の数)より小さい否かを判定する(ステップS1003)。スイッチポート150の数が2Nの場合、変数iの値が2Nより小さいか否かが判定される。
変数iの値がスイッチ120に設定されたVLAN701の数より小さい場合、プロセッサ200が実行するEIFプログラム801は、変数iの値を1だけインクリメントし(ステップS1004)、その後、ステップS1002に戻る。
変数iの値がスイッチ120に設定されたVLAN701の数と等しい場合、プロセッサ200が実行するEIFプログラム801は処理を終了する。
次に、図11及び図12を参照してスイッチプログラム802の動作を説明する。
図11は、実施例1のスイッチ管理テーブル1100の一例を示す図である。
スイッチ管理テーブル1100は、スイッチメモリ530に格納され、スイッチCPU520が実行するスイッチプログラム802によって参照される。ストレージ装置100の管理者は、管理ポート526を介してスイッチCPU520にアクセスすることによって、スイッチ管理テーブル1100の設定及び変更を行うことができる。
スイッチ管理テーブル1100は、VLAN ID1101、VLANインターフェースIPアドレス1102、スイッチID1103、及びスイッチポートID1104を含むエントリを格納する。一つのVLAN701に対して一つのエントリが存在する。
VLAN ID1101は、VLAN701のVLAN IDを格納するフィールドである。VLAN ID1101には説明のためにVLAN701の識別情報を追加しているが、実際のフィールドには含まれない。
VLANインターフェースIPアドレス1102は、VLANインターフェース702のIPアドレスを格納するフィールドである。Xは0以上の整数である。
スイッチID1103は、スイッチ120の識別情報であるスイッチ番号を格納するフィールドである。スイッチポートID1104は、スイッチポート150の識別情報であるスイッチポート番号を格納するフィールドである。
図12は、実施例1のスイッチプログラム802が実行する処理を説明するフローチャートである。
スイッチCPU520が実行するスイッチプログラム802は、すべてのVLANインターフェース702において、ストレージコントローラ130が送信するVLANインターフェース702宛てのパケットを待ち受ける(ステップS1201)。
スイッチCPU520が実行するスイッチプログラム802は、パケットを受信した場合、パケットを受信したVLANインターフェース702から、スイッチ番号及びスイッチポート番号をペイロードに格納したパケットをストレージコントローラ130のエッジインターフェース140に送信する(ステップS1202)。その後、ステップS1201に戻る。
具体的には、スイッチCPU520が実行するスイッチプログラム802は、スイッチ管理テーブル1100を参照して、パケットに含まれるVLANインターフェース702のIPアドレスに対応するエントリを検索する。スイッチCPU520が実行するスイッチプログラム802は、検索されたエントリのスイッチID1103及びスイッチポートID1104の値をペイロードに格納したパケットを、受信したパケットの送信元IPアドレス、すなわち、エッジインターフェース140に送信する。
次に、図13及び図14を参照して、EIFプログラム803の動作を説明する。
図13は、実施例1のエッジインターフェースポートIPアドレス管理テーブル1300の一例を示す図である。
エッジインターフェースポートIPアドレス管理テーブル1300は、ストレージコントローラ130のメモリ201に格納され、プロセッサ200が実行するEIFプログラム803によって参照される。
エッジインターフェースポートIPアドレス管理テーブル1300は、スイッチID1301、スイッチポートID1302、及びEIFポートIPアドレス1303を含むエントリを格納する。スイッチ120及びスイッチポート150の組み合わせの数だけエントリが存在する。
スイッチID1301は、スイッチ120のスイッチ番号を格納するフィールドである。スイッチポートID1302は、スイッチポート番号を格納するフィールドである。EIFポートIPアドレス1303は、VLAN601を介したストレージコントローラ130間のデータ転送で用いるIPアドレスを格納するフィールドである。Y及びZは0以上の整数である。
図14は、実施例1のEIFプログラム803が実行する処理を説明するフローチャートである。
プロセッサ200が実行するEIFプログラム803は、スイッチCPU520から送信されたパケットを受信する(ステップS1401)。ここでは、VLAN IDが「k」のVLANインターフェース702からエッジインターフェース140のIPアドレス(送信元IPアドレス903)宛てのパケットを受信したものとする。
プロセッサ200が実行するEIFプログラム803は、受信したパケットのペイロードに含まれるスイッチ番号及びスイッチポート番号に基づいて、エッジインターフェースポート205に、VLAN601を介したストレージコントローラ130間のデータ転送に使用するIPアドレスを設定する(ステップS1402)。その後、プロセッサ200が実行するEIFプログラム803は処理を終了する。
具体的には、プロセッサ200が実行するEIFプログラム803は、エッジインターフェースポートIPアドレス管理テーブル1300を参照し、スイッチID1301及びスイッチポートID1302の値の組み合わせが、受信したパケットに含まれるスイッチ番号及びスイッチポート番号の組み合わせに一致するエントリを検索する。プロセッサ200が実行するEIFプログラム803は、検索されたエントリのEIFポートIPアドレス1303のIPアドレスをエッジインターフェースポート205に設定する。
図15は、実施例1のストレージコントローラ130が実行する接続確認処理を説明するフローチャートである。
ストレージ装置100は、以下で説明する処理フローに従って、ストレージコントローラ130のエッジインターフェースポート205とスイッチ120との間の接続を確認する。確認の結果、接続が正しい場合、ストレージ装置100はストレージコントローラ番号を確定する。
まず、ストレージコントローラ130が実行する接続確認プログラムは、各エッジインターフェースポート205のポート番号と、スイッチCPU520から受信したスイッチ番号とを比較する(ステップS1501)。
ストレージコントローラ130が実行する接続確認プログラムは、比較の結果に基づいて、すべてのエッジインターフェースポート205のポート番号がスイッチ番号と一致するか否かを判定する(ステップS1502)。
図1で示す接続の場合、各ストレージコントローラ130のエッジインターフェースポート205は、ポート番号と同一のスイッチ番号のスイッチ120と接続されているため、ステップS1502の判定結果はYESとなる。スイッチ番号と一致しないポート番号のエッジインターフェースポート205が少なくとも一つ存在する場合、ステップS1502の判定結果はNOとなる。
スイッチ番号と一致しないポート番号のエッジインターフェースポート205が少なくとも一つ存在する場合、ストレージコントローラ130が実行する接続確認プログラムは、ストレージ装置100の管理者に、エッジインターフェース140の接続スイッチ120に誤りがある旨を通知し(ステップS1506)、処理を終了する。
すべてのエッジインターフェースポート205のポート番号がスイッチ番号と一致する場合、ストレージコントローラ130が実行する接続確認プログラムは、各エッジインターフェースポート205においてスイッチCPU520から受信したスイッチポート番号を比較する(ステップS1503)。
ストレージコントローラ130が実行する接続確認プログラムは、比較の結果に基づいて、すべてのエッジインターフェースポート205が受信したスイッチポート番号が一致するか否かを判定する(ステップS1504)。
受信したスイッチポート番号が一致しないエッジインターフェースポート205が少なくとも一つ存在する場合、ストレージコントローラ130が実行する接続確認プログラムは、ストレージ装置100の管理者に、エッジインターフェース140の接続先スイッチポート150に誤りがある旨を通知し(ステップS1507)、処理を終了する。
すべてのエッジインターフェースポート205が受信したスイッチポート番号が一致する場合、ストレージコントローラ130が実行する接続確認プログラムは、スイッチポート番号をストレージコントローラ番号として設定し(ステップS1505)、処理を終了する。
なお、以上で説明したエッジインターフェースポート205のIPアドレス設定方法は、例えば、ストレージコントローラ130の増設時にストレージコントローラ130間でデータ転送が行われている場合でも、その影響を受けずに実施できる必要がある。ストレージコントローラ130間のデータ転送には、ユーザデータ転送と制御データ転送とが含まれる。エッジインターフェース140とスイッチCPU520との間データ転送の優先度は、特にデータ転送量の多いストレージコントローラ130間のユーザデータ転送の優先度より高く設定する必要がある。優先度が高いほど優先的にデータ転送が行われる。さらに、ストレージコントローラ130間のユーザデータ転送と、エッジインターフェース140とスイッチCPU520との間データ転送に異なるトラフィッククラス(データ転送の資源)を割り当てることによって、イーサネットリンク上でストレージコントローラ130間のユーザデータ転送による混雑が生じた場合でも、エッジインターフェース140とスイッチCPU520との間のデータ転送は優先的に行える。
もし、イーサネットリンクに割り当て可能なトラフィッククラス数が少ない場合、例えば、ストレージコントローラ130間の制御データ転送と、エッジインターフェース140とスイッチCPU520との間のデータ転送とに一つのトラフィッククラスを共有させて、少なくともストレージコントローラ130間のユーザデータ転送に対して、エッジインターフェース140とスイッチCPU520との間のデータ転送の優先度を高く設定する。また、少なくともストレージコントローラ130間のユーザデータ転送と、エッジインターフェース140とスイッチCPU520との間のデータ転送には、異なるトラフィッククラスを割り当てる。これによって、エッジインターフェース140とスイッチCPU520との間のデータ転送の遅延を抑制できる。
以上で説明したように、実施例1のストレージ装置100は、スイッチ120のスイッチポート番号に基づいて、エッジインターフェースポート205のIPアドレスを設定できる。
図16から図22を参照して、実施例2のストレージ装置を説明する。
実施例2のストレージ装置100の構成は実施例1のストレージ装置100の構成と同一であるため説明を省略する。実施例2のストレージノード110及びスイッチ120のハードウェア構成は実施例1のストレージノード110及びスイッチ120のハードウェア構成と同一である。実施例2のエッジインターフェースポート205のIPアドレス設定処理の流れは実施例1と同一である。実施例2では、エッジインターフェースポート205のIPアドレス設定方法の手順が一部異なる。
図16と図17を参照して、実施例2のEIFプログラム801の動作を説明する。
図16は、実施例2のVLANインターフェースIPアドレス管理テーブル1600の一例を示す図である。
VLANインターフェースIPアドレス管理テーブル1600は、ストレージコントローラ130のメモリ201に格納され、プロセッサ200が実行するEIFプログラム801によって参照される。
VLANインターフェースIPアドレス管理テーブル1600は、VLAN ID1601、スイッチID1602、VLANインターフェースIPアドレス1603、及び送信元IPアドレス1604を含むエントリを格納する。一つのVLAN701に対して一つのエントリが存在する。
VLAN ID1601、VLANインターフェースIPアドレス1603、及び送信元IPアドレス1604は、VLAN ID901、VLANインターフェースIPアドレス902、及び送信元IPアドレス903と同一のフィールドである。スイッチID1602は、VLAN701が設定されるスイッチ120のスイッチ番号を格納するフィールドである。
図16に示すように、実施例2のVLANインターフェース702のIPアドレスは、スイッチ120のスイッチ番号に依存するように設定される。
図17は、実施例2のEIFプログラム801が実行する処理を説明するフローチャートである。
プロセッサ200が実行するEIFプログラム801は、変数jを0に初期化する(ステップS1701)。
次に、プロセッサ200が実行するEIFプログラム801は、変数iを1に初期化する(ステップS1702)。
次に、プロセッサ200が実行するEIFプログラム801は、VLAN IDが「i」であるVLAN701のVLANインターフェース702宛てのパケットを送信する(ステップS1703)。
具体的には、プロセッサ200が実行するEIFプログラム801は、VLANインターフェースIPアドレス管理テーブル1600のVLAN ID1601が「i」かつスイッチID1602が「j」に対応するエントリを検索する。プロセッサ200が実行するEIFプログラム801は、検索されたエントリの送信元IPアドレス1604の値が送信元IPアドレスとして設定され、かつ、検索されたエントリのVLANインターフェースIPアドレス1603の値が送信先IPアドレスとして設定されたパケットを送信する。
次に、プロセッサ200が実行するEIFプログラム801は、変数iの値がスイッチ120に設定されたVLAN701の数(スイッチポート150の数)より小さい否かを判定する(ステップS1704)。スイッチポート150の数が2Nの場合、変数iの値が2Nより小さいか否かが判定される。
変数iの値がスイッチ120に設定されたVLAN701の数より小さい場合、プロセッサ200が実行するEIFプログラム801は、変数iの値を1だけインクリメントし(ステップS1705)、その後、ステップS1703に戻る。
変数iの値がスイッチ120に設定されたVLAN701の数と等しい場合、プロセッサ200が実行するEIFプログラム801は、変数jの値がスイッチ120の数より小さいか否かを判定する(ステップS1706)。スイッチ120の数がMの場合、変数jの値がM-1より小さいか否かが判定される。
変数jの値がスイッチ120の数より小さい場合、プロセッサ200が実行するEIFプログラム801は、変数jの値を1だけインクリメントし(ステップS1707)、その後、ステップS1702に戻る。
変数jの値がスイッチ120の数と等しい場合、プロセッサ200が実行するEIFプログラム801は処理を終了する。
次に、図18及び図19を参照して、実施例2のスイッチプログラム802の動作を説明する。
図18は、実施例2のスイッチ管理テーブル1800一例を示す図である。
スイッチ管理テーブル1800は、スイッチメモリ530に格納され、スイッチCPU520が実行するスイッチプログラム802によって参照される。ストレージ装置100の管理者は、管理ポート526を介してスイッチCPU520にアクセスすることによって、スイッチ管理テーブル1800の設定及び変更を行うことができる。
スイッチ管理テーブル1800は、VLAN ID1801、VLANインターフェースIPアドレス1802、スイッチID1803、及びスイッチポートID1804を含むエントリを格納する。一つのVLAN701に対して一つのエントリが存在する。
VLAN ID1801、VLANインターフェースIPアドレス1802、スイッチID1803、及びスイッチポートID1804は、VLAN ID1101、VLANインターフェースIPアドレス1102、スイッチID1103、及びスイッチポートID1104と同一のフィールドである。
図18に示すように、実施例2のVLANインターフェース702のIPアドレスは、DIPスイッチ528によりストレージ装置100の管理者が入力したスイッチ120のスイッチ番号を反映するように設定される。
図19は、実施例2のスイッチプログラム802が実行する処理を説明するフローチャートである。
スイッチCPU520が実行するスイッチプログラム802は、すべてのVLANインターフェース702において、ストレージコントローラ130が送信するVLANインターフェース702宛てのパケットを待ち受ける(ステップS1901)。
スイッチCPU520が実行するスイッチプログラム802は、パケットを受信した場合、パケットを受信したVLANインターフェース702からストレージコントローラ130のエッジインターフェース140にパケットを送信する(ステップS1902)。その後、ステップS1901に戻る。
パケットのペイロードには任意の内容を含めることができる。例えば、スイッチ管理テーブル1800を参照して、スイッチ番号及びスイッチポート番号を含めてもよい。なお、実施例2のパケットには、スイッチ番号及びスイッチポート番号が含まれていなくてもよい。
次に、図20及び図21を参照して、実施例2のEIFプログラム803の動作を説明する。
図20は、実施例2のエッジインターフェースポートIPアドレス管理テーブル2000の一例を示す図である。
エッジインターフェースポートIPアドレス管理テーブル2000は、ストレージコントローラ130のメモリ201に格納され、プロセッサ200が実行するEIFプログラム803によって参照される。
エッジインターフェースポートIPアドレス管理テーブル2000は、VLANインターフェースIPアドレス2001、スイッチID2002、スイッチポートID2003、及びEIFポートIPアドレス2004を含むエントリを格納する。一つのVLANインターフェース702のIPアドレスに対して一つのエントリが存在する。
スイッチID2002、スイッチポートID2003、及びEIFポートIPアドレス2004は、スイッチID1301、スイッチポートID1302、及びEIFポートIPアドレス1303と同一のフィールドである。
図21は、実施例2のEIFプログラム803が実行する処理を説明するフローチャートである。
プロセッサ200が実行するEIFプログラム803は、スイッチCPU520から送信されたパケットを受信する(ステップS2101)。ここでは、VLAN IDが「k」のVLANインターフェース702からエッジインターフェース140のIPアドレス(送信元IPアドレス1604)宛てのパケットが受信されたものとする。
プロセッサ200が実行するEIFプログラム803は、受信したパケットの送信元IPアドレス(VLANインターフェース702のIPアドレス)に基づいて、エッジインターフェースポート205に、VLAN601を介したストレージコントローラ130間のデータ転送に使用するIPアドレスを設定する(ステップS2102)。その後、プロセッサ200が実行するEIFプログラム803は処理を終了する。
具体的には、プロセッサ200が実行するEIFプログラム803は、エッジインターフェースポートIPアドレス管理テーブル2000を参照し、VLANインターフェースIPアドレス2001が受信したパケットの送信元IPアドレスに一致するエントリを検索する。プロセッサ200が実行するEIFプログラム803は、検索されたエントリのEIFポートIPアドレス2004のIPアドレスをエッジインターフェースポート205に設定する。
図22は、実施例2のストレージコントローラ130が実行する接続確認処理を説明するフローチャートである。
ストレージ装置100は、以下で説明する処理フローに従って、ストレージコントローラ130のエッジインターフェースポート205とスイッチ120との間の接続を確認する。確認の結果、接続が正しい場合、ストレージ装置100はストレージコントローラ番号を確定する。
まず、ストレージコントローラ130が実行する接続確認プログラムは、各エッジインターフェースポート205のポート番号と、スイッチCPU520から受信したパケットに含まれる送信元IPアドレス(VLANインターフェース702のIPアドレス)から特定されるスイッチ番号とを比較する(ステップS2201)。
ストレージコントローラ130が実行する接続確認プログラムは、送信元IPアドレスに基づいてエッジインターフェースポートIPアドレス管理テーブル2000を参照することによってスイッチ番号を容易に特定できる。
ストレージコントローラ130は、比較の結果に基づいて、すべてのエッジインターフェースポート205のポート番号がスイッチ番号と一致するか否かを判定する(ステップS2202)。
図1で示す接続の場合、各ストレージコントローラ130のエッジインターフェースポート205は、ポート番号と同一のスイッチ番号のスイッチ120と接続されているため、ステップS2202の判定結果はYESとなる。スイッチ番号と一致しないポート番号のエッジインターフェースポート205が少なくとも一つ存在する場合、ステップS2202の判定結果はNOとなる。
スイッチ番号と一致しないポート番号のエッジインターフェースポート205が少なくとも一つ存在する場合、ストレージコントローラ130が実行する接続確認プログラムは、ストレージ装置100の管理者に、エッジインターフェース140の接続スイッチ120に誤りがある旨を通知し(ステップS2206)、処理を終了する。
すべてのエッジインターフェースポート205のポート番号がスイッチ番号と一致する場合、ストレージコントローラ130が実行する接続確認プログラムは、各エッジインターフェースポート205においてスイッチCPU520から受信したパケットに含まれる送信元IPアドレスから特定されるスイッチポート番号を比較する(ステップS2203)。
ストレージコントローラ130が実行する接続確認プログラムは、送信元IPアドレスに基づいてエッジインターフェースポートIPアドレス管理テーブル2000を参照することによってスイッチポート番号を容易に特定できる。
受信したパケットの送信元IPアドレスに基づくスイッチポート番号が一致しないエッジインターフェースポート205が少なくとも一つ存在する場合、ストレージコントローラ130が実行する接続確認プログラムは、ストレージ装置100の管理者に、エッジインターフェース140の接続先スイッチポート150に誤りがある旨を通知し(ステップS2207)、処理を終了する。
すべてのエッジインターフェースポート205が受信したパケットの送信元IPアドレスに基づくスイッチポート番号が一致する場合、ストレージコントローラ130が実行する接続確認プログラムは、スイッチポート番号をストレージコントローラ番号として設定し(ステップS2205)、処理を終了する。
以上で説明したように、実施例2のストレージ装置100は、実施例1のストレージ装置100と同様に、スイッチ120のスイッチポート番号に基づいて、エッジインターフェースポート205のIPアドレスを設定できる。
図23を参照して、実施例3のストレージ装置100を説明する。
実施例3のストレージ装置100の構成は実施例1のストレージ装置100の構成と同一であるため説明を省略する。実施例3のストレージノード110及びスイッチ120のハードウェア構成は実施例1のストレージノード110及びスイッチ120のハードウェア構成と同一である。実施例3のエッジインターフェースポート205のIPアドレス設定処理の流れは実施例1と同一である。
実施例3では、エッジインターフェース140のハードウェア構成が異なる。図23は、実施例3のエッジインターフェース140のハードウェア構成を示す図である。
エッジインターフェース140は、組込プロセッサ2302、プロトコル処理部2303、エッジインターフェースポート205、メモリ2306、ROM(Read Only Memory)2307、インターフェース部2308、及び内部バス2309を有する。
組込プロセッサ2302は、プロトコル処理部2303を制御し、また、EIFプログラム801、803を実行する。
プロトコル処理部2303は、ストレージコントローラ130内部のデータ転送プロトコルとストレージコントローラ130間のデータ転送プロトコルとを変換する。
エッジインターフェースポート205は、スイッチ120のスイッチポート150と接続する。
メモリ2306は、組込プロセッサ2302が実行するプログラム及びプログラムが参照する情報を格納する。メモリ2306には、VLANインターフェースIPアドレス管理テーブル900及びスイッチ管理テーブル1100が格納される。
ROM2307は、プロトコル処理部2303のファームウェア及び組込プロセッサ2302が実行するプログラムを格納する。ストレージ装置100の起動時に、ファームウェア又はプログラムは、必要に応じてメモリ2306にロードされる。
インターフェース部2308は、エッジインターフェース140をストレージコントローラ130のプロセッサバスに接続する。
内部バス2309は、組込プロセッサ2302、プロトコル処理部2303、メモリ2306、ROM2307、及びインターフェース部2308を相互に接続する。
エッジインターフェース140は、例えば、RDMAデータ転送機能を備えるFPGA(Field Programmable Gate Array)カードとして提供される。
エッジインターフェース140は、組込プロセッサ2302がメモリ2306に格納されるEIFプログラム801、803を実行することによって、実施例1及び実施例2と同様のエッジインターフェースポート205のIPアドレス設定処理を行う。
以上で説明したように、実施例3のストレージ装置100は、ストレージコントローラ130の代わりに、エッジインターフェース140がエッジインターフェースポート205のIPアドレス設定処理を実行する。これによって、ストレージコントローラ130の処理負荷が軽減するため、ストレージ装置100の性能を向上させることができる。
図24から図27を参照して、実施例4のストレージ装置について説明する。
実施例4のストレージ装置100の構成は、実施例1のストレージ装置100と同一であるため説明を省略する。実施例4のストレージノード110及びスイッチ120のハードウェア構成は実施例1のストレージノード110及びスイッチ120のハードウェア構成と同一である。
実施例4のエッジインターフェースポート205のIPアドレス設定処理は実施例1のエッジインターフェースポート205のIPアドレス設定処理を一部変更したものである。実施例4のストレージ装置100は、エッジインターフェースポート205のIPアドレス設定処理において、ARP(Address Resolution Protocol)リクエストパケットを用いてスイッチ120のVLAN701をスキャンする点が特徴である。
図24は、実施例4のストレージ装置100が実行するエッジインターフェースポート205のIPアドレス設定処理の流れを説明するシーケンス図である。
図24では、VLAN701を用いてエッジインターフェースポート205のIPアドレスを設定するために、ストレージコントローラ130が有するエッジインターフェース140とスイッチCPU520との間で送受信されるパケットを示す。
ストレージコントローラ130のプロセッサ200が実行するEIFプログラム801、803、及びスイッチCPU520が実行するスイッチプログラム802が協働して以下で説明する処理を実行する。図24では、エッジインターフェースポート205のIPアドレス設定方法の概要を説明する。各プログラムの詳細は後述する。
プロセッサ200が実行するEIFプログラム801は、スイッチ120のすべてのVLAN701のVLANインターフェース702(VLAN_IF#0からVLAN_IF#2N-1)のMAC(Media Access Control)アドレスを取得するためのARPリクエストパケットを送信する。
ここでは、エッジインターフェースポート205がスイッチ120のk番目のスイッチポート150に接続されている場合を想定する。この場合、MACアドレス取得対象のVLANインターフェース702(VLAN_IF#k)以外のパケットはドロップされる。スイッチCPU520はMACアドレスの取得対象であるVLANインターフェース702(VLAN_IF#k)のARPリクエストパケットをk番目のスイッチポート150を介して受信する。
スイッチCPU520が実行するスイッチプログラム802は、k番目のスイッチポート150を介して、エッジインターフェース140から送信された、VLAN IDが「k」のVLANインターフェース702のMACアドレスを取得するためのARPリクエストパケットを受信する。
スイッチCPU520が実行するスイッチプログラム802は、VLAN IDが「k」のVLANインターフェース702のMACアドレス及びIPアドレスを含むARPリプライパケットを、エッジインターフェース140に送信する。
プロセッサ200が実行するEIFプログラム803は、スイッチCPU520がVLAN IDが「k」のVLANインターフェース702を介して送信したARPリプライパケットを受信する。プロセッサ200が実行するEIFプログラム803は、受信したARPリプライパケットの送信元のVLANインターフェース702に対して、スイッチ番号及びポート番号を取得するためのUDPパケットを送信する。
スイッチCPU520が実行するスイッチプログラム802は、VLAN IDが「k」のVLANインターフェース702を介して、ストレージコントローラが送信したUDPパケットを受信する。スイッチCPU520が実行するスイッチプログラム802は、スイッチ120のスイッチ番号と、エッジインターフェースポート205と接続するスイッチポート150のスイッチポート番号とをペイロードに格納したパケットを、エッジインターフェース140へ送信する。
プロセッサ200が実行するEIFプログラム803は、スイッチCPU520がVLAN IDが「k」のVLANインターフェース702を介して送信したUDPパケットを受信する。プロセッサ200が実行するEIFプログラム803は、受信したUDPパケットに含まれるスイッチ番号及びスイッチポート番号に基づいてエッジインターフェースポートIPアドレス管理テーブル1300を参照して、VLAN601で使用するIPアドレスをエッジインターフェースポート205に設定する。
なお、ストレージコントローラ130のプロセッサ200は、EIFプログラム801が終わってからEIFプログラム803を実行するわけではない。スイッチCPU520からの返信がいつ来るか分からないのため、ストレージコントローラ130のプロセッサ200は、EIFプログラム801及びEIFプログラム803を並行実行させる。
次に、各プログラムの詳細を説明する。
図25は、実施例4のEIFプログラム801が実行する処理を説明するフローチャートである。
プロセッサ200が実行するEIFプログラム801は、変数iを1に初期化する(ステップS2501)。
次に、プロセッサ200が実行するEIFプログラム801は、VLAN IDが「i」であるVLAN701のMACアドレスを問い合わせるARPリクエストパケットを、ブロードキャストアドレス(FF-FF-FF-FF-FF-FF)宛に送信する(ステップS2502)。
次に、プロセッサ200が実行するEIFプログラム801は、変数iの値がスイッチ120に設定されたVLAN701の数(スイッチポート150の数)より小さい否かを判定する(ステップS2503)。スイッチポート150の数が2Nの場合、変数iの値が2Nより小さいか否かが判定される。
変数iの値がスイッチ120に設定されたVLAN701の数より小さい場合、プロセッサ200が実行するEIFプログラム801は、変数iの値を1だけインクリメントし(ステップS2504)、その後、ステップS2502に戻る。
変数iの値がスイッチ120に設定されたVLAN701の数と等しい場合、プロセッサ200が実行するEIFプログラム801は処理を終了する。
図26は、実施例4のスイッチプログラム802が実行する処理を説明するフローチャートである。
スイッチCPU520が実行するスイッチプログラム802は、すべてのVLANインターフェース702において、ストレージコントローラ130が送信したARPリクエストパケットの受信を待つ(ステップS2601)。
スイッチCPU520が実行するスイッチプログラム802は、ARPリクエストパケットを受信した場合、ARPリクエストパケットを受信したVLANインターフェース702から、当該ARPリクエストパケットの送信元のエッジインターフェースポート205に、ARPリプライパケットを送信する(ステップS2602)。ARPリプライパケットには、ARPリクエストパケットを受信したVLANインターフェース702のMACアドレス及びIPアドレスが含まれる。
次に、スイッチCPU520が実行するスイッチプログラム802は、すべてのVLANインターフェース702において、ストレージコントローラ130から送信されるVLANインターフェース702宛てのUDPパケットを待ち受けている(ステップS2603)。
スイッチCPU520が実行するスイッチプログラム802は、UDPパケットを受信した場合、スイッチ番号及びスイッチポート番号をペイロードに格納したUDPパケットをストレージコントローラ130のエッジインターフェース140に送信する(ステップS2604)。ステップS2604の処理はステップS1202の処理と同様である。
図27は、実施例4のEIFプログラム803が実行する処理を説明するフローチャートである。
プロセッサ200が実行するEIFプログラム803は、VLAN IDが「k」のVLANインターフェース702からARPリプライパケットを受信する(ステップS2701)。
次に、プロセッサ200が実行するEIFプログラム803は、受信したARPリプライパケットに含まれるVLANインターフェース702のIPアドレスを送信先IPアドレス、ストレージコントローラ130のIPアドレスを送信元IPアドレスとして含むUDPパケットを送信する(ステップS2702)。ストレージコントローラ130のIPアドレスは、VLANインターフェース702のIPアドレスに基づいてVLANインターフェースIPアドレス管理テーブル900を参照することによって特定できる。
次に、プロセッサ200が実行するEIFプログラム803は、スイッチCPU520から送信されたUDPパケットを受信する(ステップS2703)。ここでは、VLAN IDが「k」のVLANインターフェース702からエッジインターフェース140のIPアドレス(送信元IPアドレス903)宛てのパケットを受信する。
プロセッサ200が実行するEIFプログラム803は、受信したパケットのペイロードに含まれるスイッチ番号及びスイッチポート番号に基づいて、エッジインターフェースポート205に、VLAN601を介してストレージコントローラ130間のデータ転送に使用するIPアドレスを設定する(ステップS2704)。その後、プロセッサ200が実行するEIFプログラム803は処理を終了する。ステップS2704の処理はステップS1402の処理と同様である。
以上で説明したように、実施例4のストレージ装置100のストレージコントローラ130は、ARPリクエストパケットを用いてスイッチ120のスイッチポート150に設定されたVLAN701をスキャンすることによって、エッジインターフェース140が接続するスイッチ120のスイッチ番号及びスイッチポート番号を識別できる。
なお、実施例4のストレージ装置100では、実施例3と同様に、エッジインターフェース140がEIFプログラム801、803を実行してもよい。
図28から図31を参照して、実施例5に係るストレージ装置100について説明する。
実施例5のストレージ装置100の構成は実施例2のストレージ装置100と同一であるため説明を省略する。実施例5のストレージノード110及びスイッチ120のハードウェア構成は実施例2のストレージノード110及びスイッチ120のハードウェア構成と同一である。
実施例5のエッジインターフェースポート205のIPアドレス設定処理は実施例2のエッジインターフェースポート205のIPアドレス設定処理を一部変更したものである。実施例5のストレージ装置100は、エッジインターフェースポート205のIPアドレス設定処理において、ARPリクエストパケットを用いて、スイッチ120のVLAN701をスキャンする点が特徴である。
図28は、実施例5のストレージ装置100が実行するエッジインターフェースポート205のIPアドレス設定処理の流れを説明するシーケンス図である。
図28では、VLAN701を用いてエッジインターフェースポート205のIPアドレスを設定するために、ストレージコントローラ130が有するエッジインターフェース140とスイッチCPU520との間で送受信されるパケットを示す。
ストレージコントローラ130のプロセッサ200が実行するEIFプログラム801、803、及びスイッチCPU520が実行するスイッチプログラム802が協働して以下で説明する処理を実行する。図28では、エッジインターフェースポート205のIPアドレス設定方法の概要を説明する。各プログラムの詳細は後述する。
プロセッサ200が実行するEIFプログラム801は、スイッチ120のすべてのVLAN701のVLANインターフェース702(VLAN_IF#0からVLAN_IF#2N-1)のMACアドレスを取得するためのARPリクエストパケットを送信する。
ここでは、エッジインターフェースポート205がスイッチ120のk番目のスイッチポート150に接続されている場合を想定する。この場合、MACアドレスの取得対象のVLANインターフェース702(VLAN_IF#k)以外のパケットはドロップされる。スイッチCPU520はMACアドレスの取得対象であるVLANインターフェース702(VLAN_IF#k)のARPリクエストパケットをk番目のスイッチポート150を介して受信する。
スイッチCPU520が実行するスイッチプログラム802は、k番目のスイッチポート150を介して、エッジインターフェース140から送信された、VLAN IDが「k」のVLANインターフェース702のMACアドレスを取得するためのARPリクエストパケットを受信する。
スイッチCPU520が実行するスイッチプログラム802は、VLAN IDが「k」のVLANインターフェース702のMACアドレス及びIPアドレスを含むARPリプライパケットを、エッジインターフェース140に送信する。
プロセッサ200が実行するEIFプログラム803は、スイッチCPU520がVLAN IDが「k」ののVLANインターフェース702を介して送信されたARPリプライパケットを受信する。プロセッサ200が実行するEIFプログラム803は、受信したARPリプライパケットに含まれるVLANインターフェース702のIPアドレスに基づいてエッジインターフェースポートIPアドレス管理テーブル2000を参照して、VLAN601で使用するIPアドレスをエッジインターフェースポート205に設定する。
なお、ストレージコントローラ130のプロセッサ200は、EIFプログラム801が終わってからEIFプログラム803を実行するわけではない。スイッチCPU520からの返信がいつ来るか分からないのため、ストレージコントローラ130のプロセッサ200は、EIFプログラム801及びEIFプログラム803を並行実行させる。
次に、各プログラムの詳細を説明する。
図29は、実施例5のEIFプログラム801が実行する処理を説明するフローチャートである。
プロセッサ200が実行するEIFプログラム801は、変数jを0に初期化する(ステップS2901)。
次に、プロセッサ200が実行するEIFプログラム801は、変数iを1に初期化する(ステップS2902)。
次に、プロセッサ200が実行するEIFプログラム801は、エッジインターフェースポート205から、VLAN IDが「i」であるVLAN701のMACアドレスを問い合わせるARPリクエストパケットを、ブロードキャストアドレス(FF-FF-FF-FF-FF-FF)宛に送信する(ステップS2903)。
次に、プロセッサ200が実行するEIFプログラム801は、変数iの値がスイッチ120に設定されたVLAN701の数(スイッチポート150の数)より小さい否かを判定する(ステップS2904)。スイッチポート150の数が2Nの場合、変数iの値が2Nより小さいか否かが判定される。
変数iの値がスイッチ120に設定されたVLAN701の数より小さい場合、プロセッサ200が実行するEIFプログラム801は、変数iの値を1だけインクリメントし(ステップS2905)、その後、ステップS2903に戻る。
変数iの値がスイッチ120に設定されたVLAN701の数と等しい場合、プロセッサ200が実行するEIFプログラム801は、変数jの値がスイッチ120の数より小さいか否かを判定する(ステップS2906)。スイッチ120の数がMの場合、変数jの値がM-1より小さいか否かが判定される。
変数jの値がスイッチ120の数より小さい場合、プロセッサ200が実行するEIFプログラム801は、変数jの値を1だけインクリメントし(ステップS2907)、その後、ステップS2902に戻る。
変数jの値がスイッチ120の数と等しい場合、プロセッサ200が実行するEIFプログラム801は処理を終了する。
図30は、実施例5のスイッチプログラム802が実行する処理を説明するフローチャートである。
スイッチCPU520が実行するスイッチプログラム802は、すべてのVLANインターフェース702において、ストレージコントローラ130が送信するARPリクエストパケットを待ち受ける(ステップS3001)。
スイッチCPU520が実行するスイッチプログラム802は、ARPリクエストパケットを受信した場合、ARPリクエストパケットを受信したVLANインターフェース702から、当該ARPリクエストパケットの送信元のエッジインターフェースポート205に、ARPリプライパケットを送信する(ステップS3002)。その後、ステップS3001に戻る。
図31は、実施例5のEIFプログラム803が実行する処理を説明するフローチャートである。
プロセッサ200が実行するEIFプログラム803は、VLAN IDが「k」のVLANインターフェース702からARPリプライパケットを受信する(ステップS3101)。
次に、プロセッサ200が実行するEIFプログラム803は、受信したARPパケットに含まれる送信元IPアドレス(VLANインターフェース702のIPアドレス)に基づいて、エッジインターフェースポート205に、VLAN601を介したストレージコントローラ130間のデータ転送に使用するIPアドレスを設定する(ステップS3102)。その後、プロセッサ200が実行するEIFプログラム803は処理を終了する。ステップS3102の処理はステップS2102の処理と同様である。
以上で説明したように、実施例5のストレージ装置100のストレージコントローラ130は、ARPリクエストパケットを用いてスイッチ120のスイッチポート150に設定されたVLAN701をスキャンすることによって、エッジインターフェース140が接続するスイッチ120のスイッチ番号及びスイッチポート番号を識別できる。
なお、実施例5のストレージ装置100では、実施例3と同様に、エッジインターフェース140がEIFプログラム801、803を実行してもよい。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Python、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
100 ストレージ装置
110 ストレージノード
120 スイッチ
130 ストレージコントローラ
140 エッジインターフェース
150 スイッチポート
200 プロセッサ
201 メモリ
202 フロントエンドインターフェース
203 バックエンドインターフェース
204 NTB
205 エッジインターフェースポート
210 ドライブボックス
300 ホストシステム
310 バッファ領域
320 キャッシュメモリ
501 スイッチASIC
520 スイッチCPU
521 メモリバス
522、523、524 プロセッサバス
525 管理インターフェース
526 管理ポート
527 スイッチ番号指定インターフェース
528 DIPスイッチ
530 スイッチメモリ
531 プログラム
532 情報
601、701 VLAN
702 VLANインターフェース
801、803 EIFプログラム
802 スイッチプログラム
900 VLANインターフェースIPアドレス管理テーブル
1100 スイッチ管理テーブル
1300 エッジインターフェースポートIPアドレス管理テーブル
1600 VLANインターフェースIPアドレス管理テーブル
1800 スイッチ管理テーブル
2000 エッジインターフェースポートIPアドレス管理テーブル
2302 組込プロセッサ
2303 プロトコル処理部
2306 メモリ
2307 ROM
2308 インターフェース部
2309 内部バス

Claims (15)

  1. ストレージ装置であって、
    複数のストレージコントローラと、
    複数のスイッチと、を備え、
    前記複数のストレージコントローラは、前記複数のスイッチを介して互いに通信可能に接続され、
    前記ストレージコントローラは、前記複数のスイッチと接続するための複数のインターフェースポートを含む、一つ以上のコントローラインターフェースを有し、
    前記スイッチは、複数のスイッチポートを有し、
    前記スイッチには、一つの前記スイッチポートから構成される複数の仮想ネットワークが設定され、
    前記ストレージコントローラは、
    前記インターフェースポートから前記複数の仮想ネットワーク宛てに、当該インターフェースポートが接続する前記スイッチポートを特定するための第1パケットを送信し、
    前記スイッチのスイッチ番号及び前記インターフェースポートが接続する前記スイッチポートのスイッチポート番号を特定するための情報を含む第2パケットを前記スイッチから受信した場合、前記情報に基づいて前記スイッチのスイッチ番号及び前記スイッチポートのスイッチポート番号を特定し、
    特定された前記スイッチのスイッチ番号及び特定された前記スイッチポートのスイッチポート番号に基づいて、前記ストレージコントローラ間のデータ転送に使用する前記インターフェースポートのアドレスを決定することを特徴とするストレージ装置。
  2. 請求項1に記載のストレージ装置であって、
    前記第2パケットは、前記スイッチのスイッチ番号及び前記ストレージコントローラが接続される前記スイッチポートのスイッチポート番号がペイロードに格納されたパケットであることを特徴とするストレージ装置。
  3. 請求項1に記載のストレージ装置であって、
    前記第2パケットは、送信元アドレスとして、前記スイッチのスイッチ番号及び前記仮想ネットワークを構成する前記スイッチポートのスイッチポート番号に基づいて生成された、前記仮想ネットワークのアドレスを含むことを特徴とするストレージ装置。
  4. 請求項1に記載のストレージ装置であって、
    前記ストレージコントローラは、
    前記インターフェースポートのポート番号と、当該インターフェースポートを介して接続される前記スイッチである接続先スイッチのスイッチ番号とが一致する否かを判定し、
    前記複数のインターフェースポートにおいて、当該インターフェースポートが接続する前記スイッチポートである接続先スイッチポートのスイッチポート番号が一致するか否かを判定し、
    前記インターフェースポートのポート番号と前記接続先スイッチのスイッチ番号とが一致し、かつ、前記複数のインターフェースポートにおける前記接続先スイッチポートのスイッチポート番号が一致する場合、前記インターフェースポートに前記決定されたアドレスを設定することを特徴とするストレージ装置。
  5. 請求項1に記載のストレージ装置であって、
    前記スイッチは、前記スイッチのスイッチ番号を入力するための手段を有することを特徴とするストレージ装置。
  6. ストレージ装置が実行するアドレス設定方法であって、
    前記ストレージ装置は、複数のストレージコントローラと、複数のスイッチと、を含み、
    前記複数のストレージコントローラは、前記複数のスイッチを介して互いに通信可能に接続され、
    前記ストレージコントローラは、前記複数のスイッチと接続するための複数のインターフェースポートを含む、一つ以上のコントローラインターフェースを有し、
    前記スイッチは、複数のスイッチポートを有し、
    前記スイッチには、一つの前記スイッチポートから構成される複数の仮想ネットワークが設定され、
    前記アドレスの設定方法は、
    前記ストレージコントローラが、前記インターフェースポートから前記複数の仮想ネットワーク宛てに、当該インターフェースポートが接続する前記スイッチポートを特定するための第1パケットを送信するステップと、
    前記ストレージコントローラが、前記スイッチのスイッチ番号及び前記インターフェースポートが接続する前記スイッチポートのスイッチポート番号を特定するための情報を含む第2パケットを前記スイッチから受信した場合、前記情報に基づいて前記スイッチのスイッチ番号及び前記スイッチポートのスイッチポート番号を特定するステップと、
    前記ストレージコントローラが、特定された前記スイッチのスイッチ番号及び特定された前記スイッチポートのスイッチポート番号に基づいて、前記ストレージコントローラ間のデータ転送に使用する前記インターフェースポートのアドレスを決定するステップと、を含むことを特徴とするアドレス設定方法。
  7. 請求項6に記載のアドレス設定方法であって、
    前記第2パケットは、前記スイッチのスイッチ番号及び前記ストレージコントローラが接続される前記スイッチポートのスイッチポート番号がペイロードに格納されたパケットであることを特徴とするアドレス設定方法。
  8. 請求項6に記載のアドレス設定方法であって、
    前記第2パケットは、送信元アドレスとして、前記スイッチのスイッチ番号及び前記仮想ネットワークを構成する前記スイッチポートのスイッチポート番号に基づいて生成された、前記仮想ネットワークのアドレスを含むことを特徴とするアドレス設定方法。
  9. 請求項6に記載のアドレス設定方法であって、
    前記ストレージコントローラが、前記インターフェースポートのポート番号と、当該インターフェースポートを介して接続される前記スイッチである接続先スイッチのスイッチ番号とが一致する否かを判定するステップと、
    前記ストレージコントローラが、前記複数のインターフェースポートにおいて、当該インターフェースポートが接続する前記スイッチポートである接続先スイッチポートのスイッチポート番号が一致するか否かを判定するステップと、
    前記インターフェースポートのポート番号と前記接続先スイッチのスイッチ番号とが一致し、かつ、前記複数のインターフェースポートにおける前記接続先スイッチポートのスイッチポート番号が一致する場合、前記ストレージコントローラが、前記インターフェースポートに前記決定されたアドレスを設定するステップと、を含むことを特徴とするアドレス設定方法。
  10. 請求項6に記載のアドレス設定方法であって、
    前記スイッチは、前記スイッチのスイッチ番号を入力するための手段を有することを特徴とするアドレス設定方法。
  11. ストレージ装置であって、
    複数のストレージコントローラと、
    複数のスイッチと、を備え、
    前記複数のストレージコントローラは、前記複数のスイッチを介して互いに通信可能に接続され、
    前記ストレージコントローラは、前記複数のスイッチと接続するための複数のインターフェースポートを含む、一つ以上のコントローラインターフェースを有し、
    前記スイッチは、複数のスイッチポートを有し、
    前記スイッチには、一つの前記スイッチポートから構成される複数の仮想ネットワークが設定され、
    前記コントローラインターフェースは、
    前記インターフェースポートから前記複数の仮想ネットワーク宛てに、当該インターフェースポートが接続する前記スイッチポートを特定するための第1パケットを送信し、
    前記スイッチのスイッチ番号及び前記インターフェースポートが接続する前記スイッチポートのスイッチポート番号を特定するための情報を含む第2パケットを前記スイッチから受信した場合、前記情報に基づいて前記スイッチのスイッチ番号及び前記スイッチポートのスイッチポート番号を特定し、
    特定された前記スイッチのスイッチ番号及び特定された前記スイッチポートのスイッチポート番号に基づいて、前記ストレージコントローラ間のデータ転送に使用する前記インターフェースポートのアドレスを決定することを特徴とするストレージ装置。
  12. 請求項11に記載のストレージ装置であって、
    前記第2パケットは、前記スイッチのスイッチ番号及び前記ストレージコントローラが接続される前記スイッチポートのスイッチポート番号がペイロードに格納されたパケットであることを特徴とするストレージ装置。
  13. 請求項11に記載のストレージ装置であって、
    前記第2パケットは、送信元アドレスとして、前記スイッチのスイッチ番号及び前記仮想ネットワークを構成する前記スイッチポートのスイッチポート番号に基づいて生成された、前記仮想ネットワークのアドレスを含むことを特徴とするストレージ装置。
  14. 請求項11に記載のストレージ装置であって、
    前記ストレージコントローラは、
    前記インターフェースポートのポート番号と、当該インターフェースポートを介して接続される前記スイッチである接続先スイッチのスイッチ番号とが一致する否かを判定し、
    前記複数のインターフェースポートにおいて、当該インターフェースポートが接続する前記スイッチポートである接続先スイッチポートのスイッチポート番号が一致するか否かを判定し、
    前記インターフェースポートのポート番号と前記接続先スイッチのスイッチ番号とが一致し、かつ、前記複数のインターフェースポートにおける前記接続先スイッチポートのスイッチポート番号が一致する場合、前記インターフェースポートに前記決定されたアドレスを設定することを特徴とするストレージ装置。
  15. 請求項11に記載のストレージ装置であって、
    前記スイッチは、前記スイッチのスイッチ番号を入力するための手段を有することを特徴とするストレージ装置。
JP2021069891A 2021-04-16 2021-04-16 ストレージ装置及びアドレス設定方法 Pending JP2022164414A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021069891A JP2022164414A (ja) 2021-04-16 2021-04-16 ストレージ装置及びアドレス設定方法
US17/462,425 US20220337532A1 (en) 2021-04-16 2021-08-31 Storage apparatus and address setting method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021069891A JP2022164414A (ja) 2021-04-16 2021-04-16 ストレージ装置及びアドレス設定方法

Publications (1)

Publication Number Publication Date
JP2022164414A true JP2022164414A (ja) 2022-10-27

Family

ID=83602951

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021069891A Pending JP2022164414A (ja) 2021-04-16 2021-04-16 ストレージ装置及びアドレス設定方法

Country Status (2)

Country Link
US (1) US20220337532A1 (ja)
JP (1) JP2022164414A (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5232602B2 (ja) * 2008-10-30 2013-07-10 株式会社日立製作所 ストレージ装置、及びストレージコントローラ内部ネットワークのデータ経路フェイルオーバー方法
JP6007976B2 (ja) * 2011-12-27 2016-10-19 日本電気株式会社 通信システム、コントローラ、通信方法およびプログラム
CN104253770B (zh) * 2013-06-27 2017-07-14 新华三技术有限公司 实现分布式虚拟交换机系统的方法及设备
JP6248763B2 (ja) * 2014-03-31 2017-12-20 富士通株式会社 キャプチャポイント決定方法、キャプチャポイント決定システムおよびキャプチャポイント決定プログラム
US10542077B1 (en) * 2016-05-19 2020-01-21 Equinix, Inc. Event-driven notification and network service bus for a cloud exchange
US20190089592A1 (en) * 2017-09-20 2019-03-21 Quanta Computer Inc. Role-based automatic configuration system and method for ethernet switches

Also Published As

Publication number Publication date
US20220337532A1 (en) 2022-10-20

Similar Documents

Publication Publication Date Title
US7594060B2 (en) Data buffer allocation in a non-blocking data services platform using input/output switching fabric
US9672167B2 (en) Resource management for peripheral component interconnect-express domains
US7023811B2 (en) Switched fabric network and method of mapping nodes using batch requests
TWI222288B (en) End node partitioning using virtualization
US8135858B2 (en) Isolation switch for fibre channel fabrics in storage area networks
US6977927B1 (en) Method and system of allocating storage resources in a storage area network
US20180239726A1 (en) Data transmission method, device, and system
US7617333B2 (en) Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
US7437462B2 (en) Method for zoning data storage network using SAS addressing
US7493416B2 (en) Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
US9407577B2 (en) Communication control system, switch node and communication control method
US8032730B2 (en) Method and apparatus for I/O priority control in storage systems
CN103765833A (zh) 无限带宽织状结构中的启用gid的交换
US10466935B2 (en) Methods for sharing NVM SSD across a cluster group and devices thereof
US8625623B2 (en) Method and system to allocate exchange identifications for fibre channel N—PORT aggregation
US10599600B2 (en) Peripheral Component Interconnect Express (PCIe) switching for multi-host computing system deployments
US20050157725A1 (en) Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
US6785715B2 (en) Storage subsystem
US20110106518A1 (en) System and method of network emlation for test of on-line server processing heavy traffic
JP2005505814A (ja) 記憶ネットワーク中の負荷平衡
US7136907B1 (en) Method and system for informing an operating system in a system area network when a new device is connected
JP2005505035A (ja) 記憶ネットワーク中の記憶資源のプーリング及び供給
CN101150527A (zh) 一种pcie数据传输的方法、系统及设备
WO2014183531A1 (zh) 一种分配远程内存的方法及装置
US7346064B2 (en) Routing packets in packet-based input/output communications