JP2021189462A - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
JP2021189462A
JP2021189462A JP2020090612A JP2020090612A JP2021189462A JP 2021189462 A JP2021189462 A JP 2021189462A JP 2020090612 A JP2020090612 A JP 2020090612A JP 2020090612 A JP2020090612 A JP 2020090612A JP 2021189462 A JP2021189462 A JP 2021189462A
Authority
JP
Japan
Prior art keywords
switch
data
port
storage
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020090612A
Other languages
English (en)
Inventor
勝也 田中
Katsuya Tanaka
洋俊 赤池
Hirotoshi Akaike
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 JP2020090612A priority Critical patent/JP2021189462A/ja
Priority to US17/010,691 priority patent/US11347672B2/en
Publication of JP2021189462A publication Critical patent/JP2021189462A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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
    • 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Small-Scale Networks (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】ストレージ装置において、コントローラがスイッチのポートステータスを短時間で読み出す。【解決手段】ストレージ装置は、スイッチと、複数のストレージコントローラとを含む。スイッチは、スイッチプロセッサと、複数のデータポートと、スイッチ集積回路と、メモリと、管理インターフェースとを含む。複数のデータポートの一つと管理インターフェースの管理ポートとが接続されている。スイッチプロセッサは、スイッチ集積回路から取得した複数のデータポートのステータスを、メモリに格納する。複数のストレージコントローラは、複数のデータポートと管理ポートとを介して管理インターフェースにアクセスし、管理インターフェースからメモリに格納された複数のデータポートのステータスを受信する。【選択図】図6

Description

本発明は、複数のストレージコントローラがスイッチを介してして通信するストレージ装置に関する。
複数のストレージノードを集めたクラスタ構成のストレージ装置は、各ストレージノードを並列に稼働させることにより、並列アクセスによる高いデータアクセス性能を実現すると共に、データの冗長化による高可用を実現できる。たとえば特許文献1では、複数のストレージノードをネットワークで相互接続することで大規模なストレージ装置を構成することが開示されている。以下の説明及び図面において、複数のストレージノードを接続したストレージ装置の内部ネットワークを、ストレージ内部ネットワークと呼ぶことにする。また、ストレージノードを単にノードと呼ぶことがある。
ストレージノードは、一般的に、ストレージコントローラと、ランダムアクセス可能な不揮発性記録媒体とを有する。この記録媒体は、例えば、不揮発性半導体メモリドライブやハードディスクドライブを多数備えたドライブボックスである。ストレージコントローラは、上位装置(ホストシステム等)を接続するためのフロントエンドインターフェースと、ドライブボックスを接続するためのバックエンドインターフェースと、上位装置がドライブボックスに対して読み書きするユーザーデータを一時的に保存するキャッシュメモリを有する。更に、ストレージコントローラは、ストレージコントローラ内で扱う制御データを格納する制御メモリと、ユーザーデータ及び制御データのデータ転送を制御するためのプロセッサを有する。複数のストレージノードを接続したストレージ装置においては、複数のストレージノードがストレージ内部ネットワークを介して、ユーザーデータや制御データをノード間で送受信する。
また、ストレージノードをはじめとする、計算機ノード間の接続に好適なネットワークの標準規格としてはイーサーネットが知られている。ストレージ内部ネットワークにイーサーネットを適用したストレージ装置は、複数のストレージノードをイーサーネットスイッチで接続する。
一般的に、イーサーネットスイッチは、複数のストレージノードを接続するための複数のデータポートと、管理ネットワークに接続するための管理ポートを備える。さらにイーサーネットスイッチは、一般的に、データポート間のデータ転送を実現するASIC(Application Specific Integrated Circuit、以下、スイッチASICと呼ぶ)を含む。
さらに、イーサーネットスイッチは、スイッチASICを制御するCPU(Central Processing Unit、以下、スイッチCPUと呼ぶ)と、スイッチCPUが実行するプログラムや参照するデータを格納するためのメモリ(以下、スイッチメモリと呼ぶ)を含む。イーサーネットスイッチは、さらに、管理ポートを備えスイッチCPUと接続される管理インターフェースを備える。
ストレージコントローラは、データ転送先となる他のストレージコントローラの障害を検出するため、イーサーネットスイッチのポートステータスを監視する。例えばストレージコントローラの電源に障害が発生した場合、そのストレージコントローラを接続するイーサーネットスイッチのポートがダウンする。従って、正常なストレージコントローラは、イーサーネットスイッチのポートステータスを読み出すことにより、他のストレージコントローラの電源障害等を検出することができる。
イーサーネットスイッチのポートステータスを読み出す従来技術としては、SNMP(Simple Network Management Protocol)やTelemetryが知られている。これらにおいては、一般的に、管理サーバが管理ネットワークを介して、イーサーネットスイッチの管理ポートからデータポートのステータス読み出す。そしてその読み出しには、1秒以上の時間がかかっていた。
ホストシステムとストレージをイーサーネットで接続した場合は、一般的に、ホストシステムとストレージとの間には交替パスが用意されている。さらにイーサーネットの上位のトランスポート層の機構により、ロスしたパケットは再送される。従って、ストレージコントローラの障害によりイーサーネットスイッチのポートがダウンした場合に、SNMPまたはTelemetryによるポートステータス読み出しに1秒かかっても、ホストシステムとストレージ間のデータ転送は継続できる。以上より、従来のイーサーネットスイッチの使い方では、ポートステータス読み出しに1秒以上かかっても問題は無かった。
米国特許第10459791号明細書
ストレージコントローラのプロセッサは、ストレージ装置の機能を実現するため、ストレージ制御プログラムを実行する。ストレージ制御プログラムは、例えば、最大で数百個からなるストレージコントローラ内プロセッサの各コアで動作する。多数コアで動作するストレージ制御プログラムが同時にスイッチのポートステータスを読み出す場合もあり得る。この読み出し時間が長いと、ストレージ制御プログラムにおけるプロセッサ待ち時間が長くなり、ストレージ装置の性能低下につながる。
ストレージ内部のコントローラ間ネットワークに適用するスイッチは、多数のコアがスイッチにアクセスする場合でも短時間で、例えば、1ミリ秒程度以内でポートステータスを読み出せる必要がある。しかし従来技術では、上述の通り、ポートステータス読み出しに1秒以上かかっていた。また、管理サーバ1台あたり多数のスイッチを管理するので、同時に多数クライアント(この場合は管理サーバ)からのポートステータスの読み出し要求をスイッチが処理することも考慮されていなかった。
本発明の一実態様の目的は、ストレージ内部ネットワークにおける要件を満たす、スイッチのポートステータス読み出し方法及びそれを用いたストレージ装置を提供することである。
本発明の一態様のストレージ装置は、スイッチと、前記スイッチを介して通信する複数のストレージコントローラと、を含む。前記スイッチは、スイッチプロセッサと、複数のデータポートと、前記データポート間でデータを転送するスイッチ集積回路と、メモリと、管理インターフェースと、を含む。前記複数のデータポートの一つと管理インターフェースの管理ポートとが接続されている。前記スイッチプロセッサは、前記スイッチ集積回路から取得した前記複数のデータポートのステータスを、前記メモリに格納する。前記複数のストレージコントローラは、前記複数のデータポートと前記管理ポートとを介して前記管理インターフェースにアクセスし、前記管理インターフェースから前記メモリに格納された前記複数のデータポートのステータスを受信する。
スイッチに接続されたストレージコントローラがスイッチのポートステータスを短時間で読み出すことができる。
図1は、実施例1のストレージ装置を説明する図である。 図2は、ストレージノードを説明する図である。 図3は、ストレージコントローラ間の論理的な接続を説明する図である。 図4は、ストレージ装置のRead動作を説明する図である。 図5は、ストレージ装置のWrite動作を説明する図である。 図6は、イーサーネットスイッチの構成を説明する図である。 図7は、実施例1におけるIPアドレス設定を説明する図である。 図8は、ストレージコントローラとイーサーネットスイッチ間の論理的な接続を説明する図である。 図9は、実施例1におけるポート管理テーブルを説明する図である。 図10は、実施例1におけるデータ種別とデータ転送優先度とトラフィッククラスの対応を説明する図である。 図11は、ストレージコントローラがイーサーネットスイッチからポート管理テーブルを読み出すシーケンスを説明する図である。 図12は、実施例2におけるIPアドレス設定を説明する図である。 図13は、実施例3におけるイーサーネットスイッチを説明する図である。 図14は、実施例4におけるストレージコントローラからイーサーネットスイッチのデータポートのダウンを指示する場合のシーケンスを説明する図である。 図15は、実施例4におけるポート管理テーブルを説明する図である。 図16は、実施例4におけるポート管理テーブルを説明する図である。 図17は、実施例4におけるポート管理テーブルを説明する図である。 図18は、実施例4におけるポート管理テーブルを説明する図である。 図19は、ストレージコントローラがイーサーネットスイッチからポート管理テーブルを読み出すシーケンスを説明する図である。 図20は、更新管理テーブルを説明する図である。
以下、図面を参照しながら、本発明の幾つかの実施例を説明する。なお、全ての実施例を通して、同一符号が付されている構成要素は、実質的に同じものであるとする。また、「プログラム」を主語として処理を説明する場合がある。そのプログラムは、プロセッサ、例えば、CPU(Central Processing Unit)によって実行されるもので、定められた処理をするものである。なお、プロセッサが実行する処理は、適宜に記憶資源(例えばメモリ)及び通信インターフェース装置(例えば、通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。プロセッサは、CPUの他に専用ハードウェアを有していても良い。
図1から図11を参照して、実施例1に係るストレージ装置の説明を行う。図1は、実施例1におけるストレージ装置のハードウェア構成を説明する図である。実施例1のストレージ装置100は、内部ネットワークにより相互接続されたストレージノード101、111を含む複数のストレージノードを有する。図1では、2個のストレージノードを図示しているが、内部ネットワークに接続されるストレージノード数は任意である。この内部ネットワークを、本明細書ではストレージ内部ネットワークと呼ぶ。
実施例1に係るストレージ装置100では、ストレージ内部ネットワークに、たとえばイーサーネット(登録商標)規格のスイッチやリンクで構築されたネットワークが用いられる。ストレージノード101、111は、イーサーネットスイッチ120、130を介して相互接続される。なお、イーサーネットスイッチの数は任意であり、イーサーネットと異なるプロトコルのスイッチ及びリンクが使用されてもよい。
ストレージノード101は、その内部に2個のストレージコントローラ102、103を有する。ストレージコントローラ102は、イーサーネットスイッチ120、130と接続するためのエッジインターフェース(EIF)104を有する。同様に、ストレージコントローラ103は、イーサーネットスイッチ120、130と接続するためのエッジインターフェース(EIF)105を有する。ストレージノード111は、ストレージノード101と同様の構成を有している。なお、ストレージノード内のストレージコントローラの数は任意であり。異なるストレージコントローラが異なる構成を有してもよい。
図2は、実施例1におけるストレージノードのハードウェア構成を説明する図である。ストレージノード101は、ストレージコントローラ102、103と、複数のハードディスクドライブ(HDD)または複数のソリッドステートドライブ(SSD)を有するドライブボックス230を含む。
ストレージコントローラ102は、プロセッサ(MP)200と、メモリ202と、フロントエンドインターフェース(FE)204と、バックエンドインターフェース(BE)205を有する。同様に、ストレージコントローラ103は、プロセッサ(MP)210と、メモリ212と、フロントエンドインターフェース(FE)214と、バックエンドインターフェース(BE)215を有する。プロセッサ200、210は、それぞれ複数のプロセッサコア201、211を有する。
ストレージ装置100にアクセスするホストシステム(非図示)は、フロントエンドインターフェース204、214を介して、ストレージ装置100に接続される。ホストシステムとフロントエンドインターフェース204、214との間は、ファイバチャネルケーブルやイーサーネットケーブル等の伝送線で接続される。
あるいはホストシステムとフロントエンドインターフェース204、214が、複数の伝送線と複数のスイッチで構成されたストレージエリアネットワークを介して接続される構成でも良い。フロントエンドインターフェース204、214は、ホストシステムとストレージノード101間のデータ転送プロトコルと、ストレージコントローラ102、103内のデータ転送プロトコルを変換する。
ドライブボックス230は、バックエンドインターフェース205、215を介して、ストレージコントローラ102、103に接続される。バックエンドインターフェース205、215は、ストレージコントローラ102、103内のデータ転送プロトコルと、ストレージコントローラ102、103とドライブボックス230との間のデータ転送プロトコルを変換する。なお、ドライブボックス内のドライブがPCIe接続のNVMeSSDの場合、バックエンドインターフェース205、215は、プロトコル変換を行わないPCIeスイッチである。
プロセッサ200、210は、フロントエンドインターフェース204、214を介して接続したホストシステムと、バックエンドインターフェース205、215を介して接続したドライブボックス230との間のデータ転送を制御する。さらに、プロセッサ200、210は、ストレージノード間のデータ転送を制御する。
メモリ202、212は、それぞれ、プロセッサ200、210の主記憶であり、プロセッサ200、210が実行するプログラム(ストレージ制御プログラム等)や、プロセッサ200、210が参照する管理テーブル等を格納する。また、メモリ202、212は、それぞれストレージコントローラ102、103のキャッシュメモリとしても使用される。
さらに、ストレージコントローラ102、103は、それぞれ、PCI Expressによりプロセッサ200、210に接続されているNTB(Non−Transparent Bridge)203、213と、エッジインターフェース(EIF)104、105とを有する。
NTB203とNTB213との間は、Non−Transparentリンク220で接続されている。プロセッサ200と210は、Non−Transparentリンク220を介して相互に通信可能である。このようにして、ストレージノード101は、2個のコントローラ102、103によりデュアルコントローラを構成する。
エッジインターフェース104、105はそれぞれ、イーサーネットのリンクを接続するための物理ポートを1以上有する。以下、この物理ポートのことをイーサーネットポートと呼ぶ。本実施例に係るストレージ装置100では、エッジインターフェース104は少なくともイーサーネットポート207を有し、エッジインターフェース105は少なくともイーサーネットポート217を有する。プロセッサ200、210は、それぞれイーサーネットポート207、217を介して、図1のイーサーネットスイッチ120、130に接続している。その結果、異なるストレージノードに属するストレーコントローラは、相互に通信可能になっている。
図3は、実施例1におけるストレージコントローラ間のイーサーネットワークによる論理的な接続を説明する図である。
本実施例のストレージ装置100では、ストレージコントローラ間のデータ転送にRoCE(RDMA over Converged Ethernet)を用いる。RoCEは、イーサーネット上でRDMAによるデータ転送を可能にするプロトコルである。ストレージコントローラ間を接続するエッジインターフェース104、105は、RoCEによるRDMAデータ転送が可能である。
各ストレージコントローラ内のメモリ(図2のメモリ202及びメモリ212)は、ホストシステムから受信したユーザーデータを格納するユーザーデータメモリ領域と、ストレージ装置内の制御データを格納する制御メモリ領域を有する。ユーザーデータメモリ領域には、ストレージノードのキャッシュメモリや、フロントエンドインターフェースまたはバックエンドインターフェースが使用するバッファ領域が割り当てられる。
図3において、ストレージノード1(101)内のストレージコントローラ102は、ユーザーデータメモリ領域301と制御メモリ領域302を有する。同様に、ストレージノード2(320)内のストレージコントローラ327は、ユーザーデータメモリ領域321と制御メモリ領域322を有する。ストレージノードn(330)内のストレージコントローラ337は、ユーザーデータメモリ領域331と制御メモリ領域332を有する。
RoCEでは、各ストレージコントローラ内のプロセッサ上で動作するプログラムが通信を行う際、論理的な通信ポート(論理ポート)であるQueue Pair(QP)を用いる。RoCEのRC(Reliable Connection)サービスでは、通信相手となるストレージコントローラ毎と、QPを操作するプログラムのプロセス毎にQPが必要となる。さらに、ユーザーデータと制御データを異なるデータ転送の優先度で転送する場合には、データ転送メモリ領域(ユーザーデータメモリ領域及び制御メモリ領域)毎にQPが必要となる。
従って、各ストレージコントローラは、少なくともメモリ領域毎と接続するストレージコントローラ毎に、個別のQPを備える。例えば、ストレージコントローラ102は、ユーザーデータメモリ領域301のデータをストレージコントローラ327のユーザーデータメモリ領域321へ転送するためのQP303を有する。また、ストレージコントローラ102は、ユーザーデータメモリ領域301のデータをストレージコントローラ337のユーザーデータメモリ領域331へ転送するためのQP304を有する。
さらに、ストレージコントローラ102は、制御メモリ領域302のデータをストレージコントローラ327の制御メモリ領域322へ転送するためのQP305を有する。さらにまた、ストレージコントローラ102は、制御メモリ領域302のデータをストレージコントローラ337の制御メモリ領域332へ転送するためのQP306を有する。
同様に、ストレージコントローラ327は、ユーザーデータメモリ領域321のデータをストレージコントローラ102のユーザーデータメモリ領域301へ転送するためのQP323を有する。また、ストレージコントローラ327は、ユーザーデータメモリ領域321のデータをストレージコントローラ337のユーザーデータメモリ領域331へ転送するためのQP324を有する。
さらに、ストレージコントローラ327は、制御メモリ領域322のデータをストレージコントローラ102の制御メモリ領域302へ転送するためのQP325を有する。さらにまた、ストレージコントローラ327は、制御メモリ領域322のデータをストレージコントローラ337の制御メモリ領域332へ転送するためのQP326を有する。
同様に、ストレージコントローラ337は、ユーザーデータメモリ領域331のデータをストレージコントローラ102のユーザーデータメモリ領域301へ転送するためのQP333を有する。また、ストレージコントローラ337は、ユーザーデータメモリ領域331のデータをストレージコントローラ327のユーザーデータメモリ領域321へ転送するためのQP334を有する。
さらに、ストレージコントローラ337は、制御メモリ領域332のデータをストレージコントローラ102の制御メモリ領域302へ転送するためのQP335を有する。さらにまた、ストレージコントローラ337は、制御メモリ領域332のデータをストレージコントローラ327の制御メモリ領域322へ転送するためのQP336を有する。なお、2個のQP間では双方向通信が可能である。
図4は、実施例1のストレージ装置100における、ホストシステムからRead要求を受信した場合の動作を説明する図である。ホストシステム400は、ストレージノード1(101)内のストレージコントローラ102のフロントエンドインターフェース204に接続している。フロントエンドインターフェース204がホストシステム400からのRead要求を受信したとする。そして、ホストシステム400に要求されたデータは、ストレージノード2(320)内のストレージコントローラ327のキャッシュメモリ(CM)421に格納されているとする。
ストレージコントローラ102のプロセッサ200は、エッジインターフェース104からエッジインターフェース423に対して、キャッシュメモリ421内のデータ読み出し要求を送信する。具体的には、データ転送制御プログラムがプロセッサ200で実行されることにより、プロセッサ200はストレージコントローラ102内に用意されている複数のQPのうち、ストレージコントローラ327との通信用のQPに対してデータ読み出し用のリクエスト(たとえばRDMA Readリクエスト)をポストする。ポストは、(メモリ202内の)QPの送信キューにリクエストを格納する動作を意味する。これによりRDMA Readリクエストがエッジインターフェース104からエッジインターフェース423へ送信される。
このリクエストを受信したエッジインターフェース423は、キャッシュメモリ421内の読み出しデータを、プロセッサ422、エッジインターフェース423、イーサーネットスイッチ120、エッジインターフェース104、プロセッサ200を経由する経路402で、メモリ202内のバッファ領域401に転送する。この転送において、データはプロセッサ422、200のポートを通過するが、これらコアはデータ転送に関与しない。これは、RDMAによる他の転送例に対して同様である。フロントエンドインターフェース204は、バッファ領域401に格納された読み出しデータを、ホストシステム400に転送する(403)。
あるいは、キャッシュメモリ421内のデータを、ストレージコントローラ327からストレージコントローラ102へ、RDMA Writeリクエストを使って送信するように制御してもよい。その場合、先ず、プロセッサ200が、ストレージコントローラ327との通信用のQPに対して、読み出しデータ送信をプロセッサ422に依頼するメッセージを転送するリクエスト(例えばRDMA Writeリクエスト)をポストする。メッセージを受信したプロセッサ422は、ストレージコントローラ102との通信用のQPに対して、読み出しデータを転送するRDMA Writeリクエストをポストする。
図5は、実施例1のストレージ装置100における、ホストシステムからのWrite要求を受信した場合の動作を説明する図である。ホストシステム400から受信した書き込みデータは、先ず、メモリ202内のバッファ領域401に格納される(501)。ホストシステム400から受信した書き込みデータの書き込み先として、ストレージコントローラ327内のキャッシュメモリ421が、ストレージ制御プログラムにより指示されたとする。
プロセッサ200は、バッファ領域401内の書き込みデータを、エッジインターフェース104と423のRDMAデータ転送機能を使って、イーサーネットスイッチ120、プロセッサ422(のポート)を介して、ストレージコントローラ327のキャッシュメモリ421へ転送する(502)。
さらに書き込みデータを冗長化するため、プロセッサ422は、書き込みデータを、NTB511、NTB512、プロセッサ510を介して、ストレージコントローラ527のキャッシュメモリ521へ転送する(503)。ストレージノード2(320)内の2個のキャッシュメモリ(421、521)への書き込みが完了した後、フロントエンドインターフェース204は、ホストシステム400に対して、書き込みが完了を通知する。
この場合も、ホストシステムからのRead要求を受信した場合の処理と同様に、プロセッサ200は、ストレージコントローラ102内に用意されている複数のQPのうち、ストレージコントローラ327との通信用のQPに対してデータ書き込み用のリクエスト(たとえばRDMA Writeリクエスト)をポストしてもよい。これにより、エッジインターフェース104と423がRDMAデータ転送を行うことができる。
図6は、イーサーネットスイッチの構成例を説明する図である。イーサーネットスイッチ120は、各ストレージコントローラ内のエッジインターフェース104と1対1で接続するデータポート610と、複数のデータポート間のデータ転送を実現するスイッチASIC(Application Specific Integrated Circuit)601と、スイッチASIC601を設定及び制御するスイッチCPU(Central Processing Unit)620を有する。スイッチASIC及びスイッチCPUは、それぞれ、スイッチ集積回路及びスイッチプロセッサの例である。
さらにイーサーネットスイッチ120は、スイッチCPU620が実行するプログラムや参照するデータを格納するためのスイッチメモリ630、及び管理インターフェース640を備える。管理インターフェース640は、例えばRDMAをサポートするネットワークインターフェースカードまたはFPGA(Field Programmable Gate Array)カードとして提供される。さらに管理インターフェース640は、イーサーネットポートである管理ポート641を備える。
スイッチCPU620とスイッチASIC601は、PCI Express(PCIe)622で接続されている。スイッチCPU620と管理インターフェース640は、PCI Express(PCIe)623で接続されている。スイッチCPU620とスイッチメモリ630は、メモリバス621で接続されている。
管理ポート641とデータポート611は、イーサーネットスイッチの筐体内部で、イーサーネットリンク612で接続されている。イーサーネットリンク612は、各ストレージコントローラからポート管理テーブルを読み出すのに十分な帯域を有する。例えばデータポート611が100Gbpsの帯域を有していても、ポート管理テーブル読み出しには1Gbpsから10Gbpsで十分であれば、イーサーネットリンク612は10Gbps以下で且つ管理ネットワークの速度(例えば1Gbps)より高速なリンクとする。
データポートと管理ポートを接続するリンクの帯域が、ストレージコントローラとデータポートを接続するリンクの帯域より小さいことで、管理ポート641とイーサーネットリンク612が100Gbps等高速リンク対応不要になり、イーサーネットスイッチの構成を簡便化できる。
スイッチメモリ630は共有メモリ631を含む。共有メモリ631は、スイッチCPU620及び管理インターフェース640に共有され、それらからアクセス可能な領域である。共有メモリ631はポート管理テーブル632を格納する。スイッチCPU620は、スイッチASIC601からデータポート610の現在のステータスを読み出し、その値を共有メモリ631内のポート管理テーブル632に格納する。スイッチCPU620がポート管理テーブル632にポートステータスを格納するプロセスと、管理インターフェース640からポート管理テーブル632をストレージコントローラへ送信するプロセスがポート管理テーブルを共有するため、管理テーブル632を共有メモリ631内に格納している。
管理インターフェース640はRDMAによるデータ転送が可能でる。管理インターフェース640は、スイッチCPU620のコアの関与なく、管理ポート641から受信したデータをスイッチメモリ630に格納し、スイッチメモリ630内データを管理ポート641から送信することができる。管理インターフェース640のRDMAデータ転送の対象となるメモリリージョンとして共有メモリ631を登録し、その中にポート管理テーブル632が含まれるようにする。
管理ポート641とデータポート611はイーサーネットリンク612で接続されているので、各ストレージコントローラはデータポート610及びスイッチASIC601を通るデータ経路、つまりインバンドで、RDMAデータ転送によりポート管理テーブル632を読み出すことができる。イーサーネットスイッチ130もイーサーネットスイッチ120と同様の構成である。
図7は、実施例1におけるIP(Internet Protocol)アドレス設定を説明する図である。実施例1のストレージ装置100では、イーサーネットスイッチ120をIPレイヤ3のスイッチとして設定している。レイヤ3のイーサーネットスイッチの各データポートには、IPアドレスが割り当てられる。例えばデータポートiには、10.0.0.2iのIPアドレスが割り当てられる。図7の例では、iは0から8の整数である。各データポートと接続されるエッジインターフェースのポートには、10.0.0.2i+1のIPアドレスが割り当てられる。データポートとエッジインターフェースポートのIPアドレスのネットマスクは31である。
つまり、実施例1のストレージ装置では、サブネットを構成するIPアドレス数は2であり、各データポートとそれに接続されるエッジインターフェースポート毎にサブネットが異なる。例えば、データポート610のIPアドレスは10.0.0.0/31であり、それと接続されるエッジインターフェース104のポートのIPアドレスは10.0.0.1/31である。データポート611は、管理ポート641と、イーサーネットスイッチ内部で接続されている。データポート611のIPアドレスは10.0.0.16/31であり、管理ポート641のIPアドレスは10.0.0.17/31である。
図8は、ストレージコントローラとイーサーネットスイッチ間の論理的な接続を説明する図である。イーサーネットスイッチ120の共有メモリ631内のデータを、ストレージノード1(101)内のストレージコントローラ102の制御メモリ領域302へ転送するため、ストレージコントローラ102はQP801を、イーサーネットスイッチ120はQP811を有する。
同様に、イーサーネットスイッチ120の共有メモリ631内のデータをストレージノードn(330)内のストレージコントローラ337の制御メモリ領域332へ転送するため、ストレージコントローラ337はQP802を、イーサーネットスイッチ120はQP812を有する。このように各ストレージコントローラは、異なるストレージノードに属するストレージコントローラ間のデータ転送用のQP(図3)とは別に、イーサーネットスイッチからポート管理テーブルを読み出すためのQPを有する。
図9は、実施例1におけるポート管理テーブルを説明する図である。ポート管理テーブル632は、データポートの識別情報901と、各データポートの管理ステート902と、各データポートの稼働ステータス903を含む。管理ステートは、スイッチCPU620がスイッチASIC601に指示した、各データポートステートの設定値である。稼働ステータスは、各データポートの実際のステータスである。
正常状態では、管理ステート902と稼働ステータス903は一致することが望まれる。例えば、管理ステート902がup(down)ならば、稼働ステータス903もup(down)となる。ただし、接続先のストレージコントローラに障害が発生した場合等は、管理ステート902がupでも、稼働ステータス903がdownになることもあり得る。「up」は通信可能な状態を示し、「down」は通信不可能な状態を示す。
また、ポート管理テーブル632には、テーブル更新情報904が含まれる。この情報は、例えば、スイッチCPU620がポート管理テーブル632を更新した時刻に関連する情報である。イーサーネットスイッチ120からポート管理テーブル632を読み出したストレージコントローラ102内のプロセッサ200は、このテーブル更新情報904を参照し、例えば現在時刻と比較することにより、読み出したポート管理テーブルが最新のものかを確認することができる。
図10は、実施例1におけるデータ転送用途と、データ転送優先度と、トラフィッククラスの対応を説明する図である。トラフィッククラスは、データ転送に使用するリソースを指す。データ転送の用途毎にデータ転送リソースを分けることにより、例えばユーザーデータ転送の混雑が、制御データ転送に影響しないようにすることができる。
データ転送優先度管理テーブル1000は、データ転送の用途1001と、割り当てられたデータ転送優先度1002と、そのデータ転送優先度に対応付けされたトラフィッククラス1003との対応を示す。データ転送優先度1002の数字が大きいほど、優先度が高い。
実施例1のストレージ装置100は、ユーザーデータ転送1011を行うためのQPにデータ転送優先度0を設定し、トラフィッククラス0を割り当てる。また、ストレージ装置100は、制御データ転送1012を行うためのQPにデータ転送優先度1を設定し、トラフィッククラス1を割り当てる。さらに、ストレージ装置100は、イーサーネットスイッチからのポート管理テーブル読み出し1013を行うためのQPにデータ転送優先度2を設定し、トラフィッククラス2を割り当てる。
データ転送優先度が高いほどデータ転送の優先度が高くなる。また、データ転送の用途別にトラフィッククラスを割り当てているので、たとえイーサーネットリンク上でユーザーデータ転送による混雑が生じていても、イーサーネットスイッチからのポート管理テーブル読み出しのためのデータは優先して転送されることになる。
もし、イーサーネットリンクに割り当て可能なトラフィッククラス数が少ない場合は、例えば、制御データとイーサーネットスイッチからのポート管理テーブル読み出しに一つのトラフィッククラスを共有させて、少なくともユーザーデータ転送に対してポート管理テーブル読み出しのデータ転送優先度を高く設定する。また、少なくともユーザーデータ転送とイーサーネットスイッチからのポート管理テーブル読み出しには、異なるトラフィッククラスを割り当てる。これにより、ポート管理テーブルの読み出しの遅延を抑制できる。
図11は、ストレージコントローラ内のプロセッサがエッジインターフェースを介して、イーサーネットスイッチ120から共有メモリ631内のポート管理テーブル632を読み出すシーケンスを説明する図である。
スイッチCPU620は、スイッチASIC601から、データポートのステータスを繰り返して読み出している(1111)。スイッチCPU620は、読み出したデータポートのステータスを共有メモリ631内のポート管理テーブル632に繰り返し書き込む(1112)。
ストレージコントローラがポート管理テーブル632を読み出すため、エッジインターフェース104から管理インターフェース640へRDMA Readリクエストを送信する。そのRDMA Readリクエストを受信した管理インターフェース640は、ポート管理テーブル632をエッジインターフェース104へ返送する(1113)。同様に、別のストレージコントローラのエッジインターフェース1101からRDMA Readリクエストを受信した管理インターフェース640は、ポート管理テーブル632をエッジインターフェース1101へ返送する(1114)。
以上述べたように、実施例1に係るストレージ装置は、一般的な管理ネットワークよりも高速なストレージ内部のコントローラ間ネットワークを使うことにより、ストレージコントローラが、イーサーネットスイッチからポートステータスを短時間に読み出すことができる。
スイッチCPU620がスイッチASIC601からデータポートのステータスを読み出し、その値をポート管理テーブル632に格納するのにかかる時間は、高々100マイクロ秒程度である。そして、各ストレージコントローラと共有メモリ631との間のRDMA Readデータ転送時間は高々10マイクロ秒である。従って、実施例1のストレージ装置によれば、1ミリ秒以下の時間で、各ストレージコントローラからイーサーネットスイッチのポートステータスを読み出すことができる。
また、ストレージコントローラがRDMAコマンドでポート管理テーブルを読み出すことにより、スイッチCPU620にポート管理テーブル読み出しに伴う負荷がかからないようにすることができる。そして、多数のストレージコントローラからでも、ポート管理テーブルを短い時間で読み出すことができる。なお、ストレージコントローラ及び管理インターフェースがRDMA転送をサポートせず、ストレージコントローラが、スイッチCPU620への割り込みのような他の方法で、データポートの現在ステータスを取得してもよい。
また、ストレージコントローラがインバンドでイーサーネットスイッチの管理インターフェース及びスイッチCPUにアクセスできるので、ストレージ内部ネットワークを管理するための管理ネットワークを省略できる。
図12を参照して、実施例2に係るストレージ装置の説明を行う。実施例2のストレージ装置のその他の構成は、実施例1のストレージ装置と同様であるので、説明を省略する。
図12は、実施例2におけるIPアドレス設定を説明する図である。実施例2のストレージ装置では、イーサーネットスイッチ120をIPレイヤ2のスイッチとして設定している。さらに、ストレージ内部ネットワークに3個のVLAN(Virtual Lacal Area Network)1201、1202、1203を設けている。VLAN1201は、ユーザーデータ転送用に使うネットワークで、そのVLAN IDは1000である。VLAN1202は、制御データ転送用に使うネットワークで、そのVLAN IDは2000である。VLAN1203は、ストレージコントローラがイーサーネットスイッチからのポート管理テーブル読み出しに使うネットワークで、そのVLAN IDは3000である。
各エッジインターフェースのイーサーネットポートには、3個のVLANに対応した3個のIPアドレスが割り当てられる。例えば、イーサーネットスイッチ120のデータポート610に接続されるエッジインターフェース(EIF0)のイーサーネットポートは、VLAN1201に対応して、IPアドレス192.168.1.1/24が割り当てられる(1211)。
また、エッジインターフェース(EIF0)のイーサーネットポートは、VLAN1202に対応して、IPアドレス192.168.2.1/24が割り当てられる(1212)。さらにまた、エッジインターフェース(EIF0)のイーサーネットポートは、VLAN1203に対応して、IPアドレス192.168.3.1/24が割り当てられる(1213)。
ここで、IPアドレスのネットマスクは24である。図7の場合とは異なり、レイヤ2のイーサーネットスイッチのデータポートには、IPアドレスが割り当てられない。データポート611とイーサーネットスイッチ120内部で接続される管理ポート641のIPアドレスは、VLAN1203に対応して、192.168.3.17/24である。各ストレージコントローラは、VLAN1203を介して管理ポート641にアクセスでき、イーサーネットスイッチ120からポート管理テーブルを読み出すことができる。
実施例2のストレージ装置では、イーサーネットスイッチ120のスイッチCPUにアクセスできるVLAN1203とその他のデータ転送用のVLAN1201、1202を分けている。この設定により、ポート管理テーブル読み出し以外のトラフィックがスイッチCPUに流れ込んでスイッチCPUが過負荷になることを防ぐことができる。スイッチCPUが過負荷になれば、イーサーネットスイッチの動作に支障をきたす恐れがある。なお、他の例において、ユーザーデータ転送用のVLANと制御データ転送用のVLANは同一でもよい。
図13を参照して、実施例3に係るストレージ装置の説明を行う。実施例3のストレージ装置のイーサーネットスイッチ以外の構成は、実施例1のストレージ装置と同様であるので、説明を省略する。
図13は、図6のイーサーネットスイッチの構成に、さらに管理ネットワーク接続用のイーサーネットポートを備えたイーサーネットスイッチを説明する図である。図13のイーサーネットスイッチ120において、管理インターフェース640は、管理ポート641の他にイーサーネットポート1301を備える。イーサーネットポート1301は、イーサーネットスイッチ120の管理ポート1302に接続している。さらに、管理ポート1302は、管理ネットワーク1303に接続している。
管理サーバ1304は、管理ネットワーク1303を介して、イーサーネットスイッチ120の管理ポート1302にアクセスできる。管理サーバ1304は、SNMPやTelemetry等の標準的な手段を使ってイーサーネットスイッチ120の管理情報を送受信し、イーサーネットスイッチ120を管理することができる。換言すれば、SNMPやTelemetryが使えればいいので、管理インターフェース640は、イーサーネットポート1301を介して、RDMAデータ転送を行う必要はない。
図13のイーサーネットスイッチ120のその他の構成は、図6のイーサーネットスイッチ120と同様であるので、説明を省略する。
実施例3のストレージ装置によれば、管理ネットワーク経由の従来型のネットワーク管理が必須の環境でも、イーサーネットスイッチを含めたストレージ内部ネットワークを管理することができる。それに加えて実施例1と同様な、ストレージコントローラからイーサーネットスイッチへのインバンドアクセスによる管理も可能である。
図14から図18を参照して、実施例4に係るストレージ装置の説明を行う。実施例4のストレージ装置のその他の構成は、実施例1のストレージ装置と同様であるので、説明を省略する。
実施例4のストレージ装置は、ストレージコントローラからの指示を受けたイーサーネットスイッチが、データポートのステートを変更する点に特徴を有する。これは、例えば、障害が発生したストレージコントローラが接続されたデータポートを、別の正常なストレージコントローラからの指示により、イーサーネットスイッチがダウンさせる場合等に有用である。
図14は、ストレージコントローラ内のプロセッサがエッジインターフェースを介して、データポートのステート変更指示と、イーサーネットスイッチ120から共有メモリ631内のポート管理テーブルを読み出すシーケンスを説明する図である。
実施例4のストレージ装置において、ストレージコントローラは、RDMA Write with Immediateリクエスト使いイーサーネットスイッチ内のポート管理テーブルを更新すると共に、スイッチCPUにデータポートのステート変更を指示する。
RDMA Write with Immediateリクエストは、RDMA Writeの動作に加えて、送信元のQPから送信先のQPにImmediate Dataを送信することができるリクエストである。スイッチCPU620は、RDMA Write with Immediateを受信したQPに接続されたコンプリーションキューからImmediate Dataを取り出すことができる。
ストレージコントローラはエッジインターフェース104からRDMA Write with Immediateリクエストを送信する(1401)。このリクエストを受信した管理インターフェース640は、共有メモリ631内のポート管理テーブルを更新する。
次に、スイッチCPU620は、コンプリーションキューからコンプリーションエントリを回収し、その中に含まれているImmediate Dataを受信する(1402)。このImmediate Dataには、特定のデータポートをダウンさせる指示が含まれている。
Immediate Dataを受信したスイッチCPU620は、スイッチASIC601のポートステートの変更を指示する(1403)。スイッチCPU620は、スイッチASIC601から、データポートのステータスを繰り返して読み出している(1404)。スイッチCPU620は、読み出したデータポートのステータスを共有メモリ631内のポート管理テーブルに書き込む(1405)。
ストレージコントローラがポート管理テーブルを読み出すため、エッジインターフェース104から管理インターフェース640へRDMA Readリクエストを送信する。そのRDMA Readリクエストを受信した管理インターフェース640は、ポート管理テーブルをエッジインターフェース104へ返送する(1406、1408)。同様に、別のストレージコントローラのエッジインターフェース1101からRDMA Readリクエストを受信した管理インターフェース640は、ポート管理テーブルをエッジインターフェース1101へ返送する(1407、1409)。
次に、図15から図18を用いて、実施例4のストレージ装置におけるポート管理テーブルに格納されているデータ内容の、図14のシーケンスに伴う変更を説明する。
図15は、実施例4のストレージ装置におけるポート管理テーブル1500を説明する図である。ポート管理テーブル1500は、実施例1のポート管理テーブル632と同様に、イーサーネットスイッチ120の共有メモリ631内に格納されている。ポート管理テーブル1500は、データポートの識別情報1501と、ストレージコントローラから変更を指示された場合の変更後のステートを示す受諾ステート1502と、各データポートの管理ステート1503と、各データポートの稼働ステータス1504を含む。また、ポート管理テーブル1500は、実施例1のテーブル更新情報904と同様なテーブル更新情報1505を含む。
図15のポート管理テーブル1500は、Port Idが「0」のデータポートについて、受諾ステート1502、管理ステート1503、稼働ステータス1504が全てupであることを示している。
図16は、ストレージコントローラからPort Idが0のデータポートをdownさせる指示を受信した直後のポート管理テーブル1500を示す。ポート管理テーブル1500の内容がストレージコントローラからのRDMA Writeによって、スイッチCPU620を介さずに直接書き換えられた結果、受諾ステート1502がdownに変更されている。
図17は、Immediate Dataを受信したスイッチCPU620が、スイッチASIC601にPort Idが「0」のデータポートをdownさせる指示をした直後のポート管理テーブル1500を示す。受諾ステート1502と管理ステート1503がdownに変更されている。
図18は、スイッチASIC601によるPort Idが「0」のデータポートのステート変更完了後のポート管理テーブル1500を示す。受諾ステート1502と管理ステート1503と稼働ステータスがdownに変更されている。
スイッチASIC601がデータポートのステート変更を指示した場合、実際にデータポートのステートが変更されるまでには時間がかかる。そこで、実施例4のストレージ装置では、ポート管理テーブル1500に受諾ステート1502を追加して、間もなくダウンする予定のデータポートの情報を、複数のストレージコントローラ間で共有できるようにしている。これにより、ダウンさせるデータポートに接続されているストレージコントローラへの無効なデータ転送を防止することができる。
上述の例では、ストレージコントローラがデータポートをダウンさせる場合を説明したが、同様な手順により、交換または増設したストレージコントローラを接続したデータポートをアップさせてもよい。
また、エッジインターフェースまたは管理インターフェースの何れかがRDMA Write with Immediateリクエストをサポートしない場合は、ストレージコントローラがデータポートのステート変更指示をRDMA Sendリクエストで送信し、スイッチCPUが管理インターフェースを介してRDMA Receiveリクエストで受信するようにしてもよい。
この場合、ストレージコントローラが送信するポート管理テーブル更新用のRDMA Writeとデータポート変更指示用のRDMA Sendは、連続していればそれらの送信順序はどちらが先でもよい。また、ストレージコントローラがエッジインターフェースからRDMA Write with Immediateリクエストを送信する代わりに、スイッチCPU620へ割込みを送信してもよい。その場合、割込みを受信したスイッチCPU620は、データポートのステートを変更する。
図19から図20を参照して、実施例5に係るストレージ装置の説明を行う。実施例5のストレージ装置のその他の構成は、実施例1のストレージ装置と同様であるので、説明を省略する。
実施例5のストレージ装置は、ストレージコントローラからの指示を受けたイーサーネットスイッチが、ポート管理テーブルの内容を更新する点に特徴を有する。これは、例えば、ストレージコントローラが、最新の内容に更新されたポート管理テーブルを読み出したことを確認する場合に有用である。
図19は、実施例5のストレージ装置における、ストレージコントローラからのポート管理テーブル読み出しシーケンスを説明する図である。先ず、ストレージコントローラは、エッジインターフェース104から管理インターフェースへRDMA Writeリクエストを送信する(1901)。このリクエストは共有メモリ内に格納された更新管理テーブルの更新フラグを0にクリアする。次に、この更新管理テーブルについて説明した後、図19のシーケンスの説明に戻る。
図20は、更新管理テーブル2000を説明する図である。更新管理テーブル2000は、エッジインターフェースとストレージ制御プログラムが動作するプロセッサコアとを識別する情報2001と、更新フラグ2002を含む。更新フラグは、例えば、「0」の場合はポート管理テーブルが未更新であることを示し、「1」の場合はポート管理テーブルが更新済みであることを示す。
更新管理テーブル2000は,エッジインターフェース及びプロセッサコア毎に更新フラグを設定可能になっている。これにより、ストレージコントローラは、各プロセッサコア上で動作するストレージ制御プログラム及びエッジインターフェース毎にポート管理テーブルの更新状況を確認することができる。
図19の説明に戻る。次に、ストレージコントローラは、スイッチCPU620に、ポート管理テーブルの更新を指示するための割込みを送信する(1902)。ここで、ストレージコントローラは割込みを送信する代わりに、実施例4と同様にRDMA Write with Immediateリクエストを送信することにより、スイッチCPU620にポート管理テーブル更新を指示してもよい。
割込みを受信したスイッチCPU620は、スイッチASIC601のポートステータスを読み出し(1903)、その結果をポート管理テーブルに書き込む(1904)。さらにスイッチCPU620は、更新管理テーブル2000のエッジインターフェース104及びストレージコントローラのコアに対応する更新フラグ2002に、更新済みであることを示す「1」を書き込む。
ストレージコントローラは、ポート管理テーブルを読み出すため、エッジインターフェース104から管理インターフェース640へRDMA Readリクエストを送信する。そのRDMA Readリクエストを受信した管理インターフェース640は、ポート管理テーブルをエッジインターフェース104へ返送する(1905)。その際、ストレージコントローラが更新管理テーブル2000も同時に読み出す。
図19のシーケンスでは、ストレージコントローラがポート管理テーブルを読み出す前に更新フラグをクリアしていたが(1901)、ポート管理テーブル読み出し後に更新フラグをクリアしてもよい。その場合、ストレージコントローラは、ポート管理テーブルを読み出した後、RDMA Writeリクエストを送信して更新管理テーブル2000の上記更新フラグ2002に、未更新を示す「0」を書き込む。ストレージコントローラは、エッジインターフェース104に対応する更新フラグを読み出すことにより、ポート管理テーブルが更新済みか否かを確認することができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成・機能・処理部等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスクドライブ、ソリッドステートドライブ等の記録装置の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
100 ストレージ装置、120、130 イーサーネットスイッチ、101、111、320、330 ストレージノード、104、105、423 エッジインターフェース
102、103、327、337、527 ストレージコントローラ、200、210、422、510 プロセッサ、201、211 プロセッサコア、202、212 メモリ、203、213、511、512 NTB、204、214 フロントエンドインターフェース、205、215 バックエンドインターフェース、207、217 イーサーネットポート、220 NTBリンク、230 ドライブボックス、301、321、331 ユーザーデータメモリ、302、322、332 制御データメモリ、303、304、305、306、323、324、325、326、333、334、335、336、801、802、811、812 QP、400 ホストシステム、401 バッファ領域、421、521 キャッシュメモリ、601 スイッチASIC、610 データポート、620 スイッチCPU、630 スイッチメモリ、631 共有メモリ、632 ポート管理テーブル、640 管理インターフェース、641 1302 管理ポート、1301 イーサーネットポート

Claims (15)

  1. ストレージ装置であって、
    スイッチと、
    前記スイッチを介して通信する複数のストレージコントローラと、を含み、
    前記スイッチは、
    スイッチプロセッサと、
    複数のデータポートと、
    前記複数のデータポート間でデータを転送するスイッチ集積回路と、
    メモリと、
    管理インターフェースと、を含み、
    前記複数のデータポートの一つと管理インターフェースの管理ポートとが接続され、
    前記スイッチプロセッサは、前記スイッチ集積回路から取得した前記複数のデータポートのステータスを、前記メモリに格納し、
    前記複数のストレージコントローラは、前記複数のデータポートと前記管理ポートとを介して前記管理インターフェースにアクセスし、前記管理インターフェースから前記メモリに格納された前記複数のデータポートのステータスを受信する、ストレージ装置。
  2. 請求項1記載のストレージ装置であって、
    前記複数のストレージコントローラ及び前記管理インターフェースは、リモート直接メモリアクセスによるデータ転送が可能であり、
    前記スイッチプロセッサは、前記複数のデータポートのステータスを前記メモリ内の共有メモリ領域に格納し、
    前記複数のストレージコントローラは、前記管理インターフェースに前記リモート直接メモリアクセスのコマンドを送信して、前記共有メモリ領域から前記複数のデータポートのステータスを取得する、ストレージ装置。
  3. 請求項1記載のストレージ装置であって、
    前記複数のストレージコントローラと前記管理インターフェースとの間のデータ転送は、前記複数のストレージコントローラ間のデータ転送より高い優先度に設定される、ストレージ装置。
  4. 請求項1記載のストレージ装置であって、
    前記複数のストレージコントローラと前記管理インターフェースとの間のデータ転送を行う仮想ネットワークは、前記複数のストレージコントローラ間のデータ転送を行う仮想ネットワークと異なる仮想ネットワークである、ストレージ装置。
  5. 請求項1記載のストレージ装置であって、
    前記複数のデータポートの一つと前記管理ポートを接続するリンクの帯域は、前記複数のストレージコントローラと前記複数のデータポートとを接続するリンクの帯域より小さい、ストレージ装置。
  6. 請求項1記載のストレージ装置であって、
    前記管理インターフェースは、さらに管理ネットワークに接続されるイーサーネットポートを含む、ストレージ装置。
  7. 請求項1記載のストレージ装置であって、
    前記複数のストレージコントローラが、前記スイッチプロセッサに、前記複数のデータポートのステート変更を指示する、ストレージ装置。
  8. 請求項1記載のストレージ装置であって、
    前記複数のストレージコントローラが、前記スイッチプロセッサに、前記複数のデータポートのステータスを前記スイッチ集積回路から取得することを指示する、ストレージ装置。
  9. ストレージ装置において、スイッチのデータポートステータスを読み出す方法であって、
    前記ストレージ装置は、
    スイッチと、
    前記スイッチを介して通信する複数のストレージコントローラと、を含み、
    前記スイッチは、
    スイッチプロセッサと、
    複数のデータポートと、
    前記複数のデータポート間でデータを転送するスイッチ集積回路と、
    メモリと、
    管理インターフェースと、を含み、
    前記複数のデータポートの一つと管理インターフェースの管理ポートとが接続され、
    前記方法は、
    前記スイッチプロセッサが、前記スイッチ集積回路から取得した前記複数のデータポートのステータスを、前記メモリに格納し、
    前記複数のストレージコントローラが、前記複数のデータポートと前記管理ポートとを介して前記管理インターフェースにアクセスし、前記管理インターフェースから前記メモリに格納された前記複数のデータポートのステータスを受信する、ことを含む方法。
  10. 請求項9に記載の方法であって、
    前記複数のストレージコントローラが、前記スイッチプロセッサに、前記複数のデータポートのステート変更を指示する、ことを含む方法。
  11. 請求項9に記載の方法であって、
    前記複数のストレージコントローラが、前記スイッチプロセッサに、前記複数のデータポートのステータスを前記スイッチ集積回路から取得することを指示する、ことを含む方法。
  12. 請求項9に記載の方法であって、
    前記方法は、
    前記スイッチプロセッサが、前記複数のデータポートのステータスを前記メモリ内の共有メモリ領域に格納し、
    前記複数のストレージコントローラが、前記管理インターフェースにリモート直接メモリアクセスのコマンドを送信して、前記共有メモリ領域から前記複数のデータポートのステータスを取得する、ことを含む方法。
  13. 請求項9に記載の方法であって、
    前記複数のストレージコントローラと前記管理インターフェースとの間のデータ転送は、前記複数のストレージコントローラ間のデータ転送より高い優先度に設定される、方法。
  14. 請求項9に記載の方法であって、
    前記複数のストレージコントローラと前記管理インターフェースとの間のデータ転送を行う仮想ネットワークは、前記複数のストレージコントローラ間のデータ転送を行う仮想ネットワークと異なる仮想ネットワークである、方法。
  15. 請求項9に記載の方法であって、
    前記複数のデータポートの一つと前記管理ポートを接続するリンクの帯域は、前記複数のストレージコントローラと前記複数のデータポートとを接続するリンクの帯域より小さい、方法。
JP2020090612A 2020-05-25 2020-05-25 ストレージ装置 Pending JP2021189462A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020090612A JP2021189462A (ja) 2020-05-25 2020-05-25 ストレージ装置
US17/010,691 US11347672B2 (en) 2020-05-25 2020-09-02 Storage apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020090612A JP2021189462A (ja) 2020-05-25 2020-05-25 ストレージ装置

Publications (1)

Publication Number Publication Date
JP2021189462A true JP2021189462A (ja) 2021-12-13

Family

ID=78609035

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020090612A Pending JP2021189462A (ja) 2020-05-25 2020-05-25 ストレージ装置

Country Status (2)

Country Link
US (1) US11347672B2 (ja)
JP (1) JP2021189462A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11558310B2 (en) * 2021-06-16 2023-01-17 Mellanox Technologies, Ltd. Low-latency delivery of in-band telemetry data
CN114389995A (zh) * 2021-12-03 2022-04-22 阿里巴巴(中国)有限公司 资源共享的方法、装置以及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8041874B2 (en) * 2008-08-08 2011-10-18 Standard Microsystems Corporation USB and ethernet controller combination device
WO2012109679A2 (en) * 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for application direct virtual memory management
US10459791B2 (en) 2015-02-26 2019-10-29 Hitachi, Ltd. Storage device having error communication logical ports
PL3812900T3 (pl) * 2016-12-31 2024-04-08 Intel Corporation Systemy, sposoby i aparaty do obliczania heterogenicznego
US10608640B1 (en) * 2019-05-10 2020-03-31 Achronix Semiconductor Corporation On-chip network in programmable integrated circuit
US20200104275A1 (en) * 2019-12-02 2020-04-02 Intel Corporation Shared memory space among devices
US20210117249A1 (en) * 2020-10-03 2021-04-22 Intel Corporation Infrastructure processing unit
US11755500B2 (en) * 2020-12-26 2023-09-12 Intel Corporation Cryptographic computing with disaggregated memory

Also Published As

Publication number Publication date
US20210365397A1 (en) 2021-11-25
US11347672B2 (en) 2022-05-31

Similar Documents

Publication Publication Date Title
US7447197B2 (en) System and method of providing network node services
CN110177059B (zh) 用于存储数据的系统和方法
US6983303B2 (en) Storage aggregator for enhancing virtualization in data storage networks
US8677023B2 (en) High availability and I/O aggregation for server environments
US10970237B2 (en) Storage system
US10229021B1 (en) System, and control method and program for input/output requests for storage systems
JP2004531001A (ja) ホスト・コンピュータ・システムとイーサネット(r)・アダプタの間におけるデータ転送
US10162775B2 (en) System and method for efficient cross-controller request handling in active/active storage systems
US11997024B2 (en) Mapping NVMe-over-fabric packets using virtual output queues
US20160216891A1 (en) Dynamic storage fabric
US10423333B2 (en) System and method for scalable processing of abort commands in a host bus adapter system
US11347672B2 (en) Storage apparatus
WO2013146808A1 (ja) コンピュータシステム、及び通信経路変更方法
US20230421451A1 (en) Method and system for facilitating high availability in a multi-fabric system
US10459791B2 (en) Storage device having error communication logical ports
US20230328008A1 (en) Network interface and buffer control method thereof
WO2018015984A1 (en) Communication apparaus, system, rollback method, and program
US11144242B2 (en) Distributed storage system
US11182325B1 (en) Memory centric computing storage controller system
WO2020036162A1 (ja) 負荷分散システム及び負荷分散方法
US11880570B1 (en) Storage system, data transmission method, and network interface
US20220337532A1 (en) Storage apparatus and address setting method
US11336592B2 (en) Flexible link level retry for shared memory switches
US20230315345A1 (en) Storage device and protocol conversion method by storage device
JP6250378B2 (ja) 計算機システム、アドレス管理装置およびエッジノード