JP6675290B2 - ストレージシステム及び方法 - Google Patents

ストレージシステム及び方法 Download PDF

Info

Publication number
JP6675290B2
JP6675290B2 JP2016176841A JP2016176841A JP6675290B2 JP 6675290 B2 JP6675290 B2 JP 6675290B2 JP 2016176841 A JP2016176841 A JP 2016176841A JP 2016176841 A JP2016176841 A JP 2016176841A JP 6675290 B2 JP6675290 B2 JP 6675290B2
Authority
JP
Japan
Prior art keywords
request
controller
response signal
congestion degree
node module
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.)
Active
Application number
JP2016176841A
Other languages
English (en)
Other versions
JP2018041404A (ja
Inventor
寿樹 新倉
寿樹 新倉
和也 川村
和也 川村
貴宏 栗田
貴宏 栗田
一成 住吉
一成 住吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2016176841A priority Critical patent/JP6675290B2/ja
Priority to US15/444,255 priority patent/US10681130B2/en
Publication of JP2018041404A publication Critical patent/JP2018041404A/ja
Application granted granted Critical
Publication of JP6675290B2 publication Critical patent/JP6675290B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/11Identifying congestion

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)
  • Multi Processors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

実施形態は概してストレージシステム及び方法に関する。
フラッシュメモリ等の不揮発性半導体メモリをそれぞれ含み、互いに接続されたストレージデバイスを多数含むストレージシステムが開発されている。このストレージシステムは、多数のクライアントと通信可能に接続され、クライアントからのコマンドに応じた要求パケットがいずれかのストレージデバイスに送信される。複数のクライアントからのコマンドが或るストレージデバイスに偏り、或るストレージデバイスへ複数の要求パケットが集中し、要求を実行することができないことがある。この場合、或るストレージデバイスは要求を受け付けることができない(ビジー状態である)ことを示すビジー応答を返信する。ビジー状態が解除されるタイミングは予測不可能であるので、ビジー応答が返信されると、要求が完了するまで、要求パケットが繰り返し送信される。要求パケットの繰り返し送信はリトライとも称される。
特開2012−103926号公報
ビジー応答が返信されると直ちにリトライパケットが送信されると、リトライパケットがストレージデバイス間の通信路を占有し、リトライパケットが要求パケットの通信経路を阻害することで、要求パケットがターゲットとなるストレージデバイスに到達できない、もしくはストレージデバイスからの応答がクライアントへ返ってこないことが生じる。これにより、ストレージシステム全体のレイテンシやスループットに悪影響を及ぼす。
実施形態の目的は、ストレージデバイスからのレスポンス情報を用いて、レイテンシやスループットを向上する方法を提供することである。
実施形態によれば、ストレージシステムは、それぞれが不揮発性半導体メモリを具備し、前記複数のストレージデバイスを接続するネットワークと、
前記ネットワークに接続され、前記複数のストレージデバイスの中の第1ストレージデバイスにI/O要求を送信するコントローラと、を具備する。前記第1ストレージデバイスは、前記コントローラと前記第1ストレージデバイスとの間の前記ネットワークの混雑度を示す混雑度情報を含むとともに受信した前記I/O要求の実行完了または実行不能を示す応答信号を前記コントローラへ送信する。前記コントローラは、前記応答信号が前記I/O要求の実行完了を示し、前記混雑度情報が閾値以上ではない混雑度を示す場合、前記第1ストレージデバイスのバックグランド処理を起動する。
図1は実施形態のストレージシステムを含むシステム全体の構成の一例を示すブロック図である。 図2は第1実施形態のストレージシステムの構成の一例を示すブロック図である。 図3は第1実施形態のストレージシステムの中の接続ユニットの一例を示すブロック図である。 図4は第1実施形態のストレージシステムの中のストレージ部の一例を示すブロック図である。 図5は第1実施形態のストレージシステムの中のストレージ部の中のFPGAの一例を示すブロック図である。 図6は第1実施形態のストレージシステムの中のストレージ部の中のノードモジュールの一例を示すブロック図である。 図7は第1実施形態で使われるパケットのデータ構造の一例を示す。 図8は第1実施形態のパケット転送の一例を示すフローチャートである。 図9は第1実施形態の送信先アドレスの一例を示す。 図10は第1実施形態のI/O要求に関する接続ユニットの処理の一例を示すフローチャートである。 図11は第1実施形態のI/O要求に関するノードモジュールの処理の一例を示すフローチャートである。 図12は第1実施形態のストレージ部の状態の一例を示す。 図13は第1実施形態のストレージ部の状態の他の例を示す。 図14は第1実施形態のストレージ部の状態の他の例を示す。 図15は第1実施形態のストレージ部の状態の他の例を示す。 図16は第1実施形態のストレージ部の状態の他の例を示す。 図17は第1実施形態のI/O要求に関する動作の一例を示す接続ユニットとノードモジュールとの間のシーケンス図である。 図18は第2実施形態のI/O要求に関する動作の一例を示す接続ユニットとノードモジュールとの間のシーケンス図である。 図19は第3実施形態のI/O要求に関する接続ユニットの処理の一例を示すフローチャートである。 図20は第3実施形態のストレージ部の状態の一例を示す。 図21は第3実施形態のストレージ部の状態の他の例を示す。 図22は第4実施形態のI/O要求に関する接続ユニットの処理の一例を示すフローチャートである。 図23は第4実施形態のストレージ部の状態の一例を示す。 図24は第4実施形態のストレージ部の状態の他の例を示す。 図25は第5実施形態のI/O要求に関する接続ユニットの処理の一例を示すフローチャートである。 図26は第5実施形態のストレージ部の状態の一例を示す。 図27は第5実施形態のストレージ部の状態の他の例を示す。 図28は第5実施形態のストレージ部の状態の他の例を示す。 図29は第6実施形態のI/O要求に関する接続ユニットの処理の一例を示すフローチャートである。
以下、実施の形態について図面を参照して説明する。以下の説明において、実質的に同一の機能及び要素については、同一符号を付し、説明は省略することがある。いくつかの要素に複数の表現例を付す場合があるが、これら表現例はあくまで例示であり、上記要素が他の表現例で表現されることを否定するものではない。また、複数の表現例が付されていない要素についても、別の表現例で表現されてもよい。
(第1の実施形態)
[全体構成]
図1は、実施形態のストレージシステムの応用例の一例、例えばビッグデータ分析システムのブロック図である。LAN12に多数のクライアント端末(以下、単にクライアントと称する)10と、ストレージシステム16が接続される。ストレージシステム16は、フラッシュメモリ等を含む多数の不揮発性半導体メモリを含む。LAN12を用いずに、多数のクライアント10がストレージシステム16に直接に接続されてもよい。管理者端末14がストレージシステム16に直接に接続されているが、管理者端末14はLAN12を介してストレージシステム16に接続されてもよい。クライアント10はストレージシステム16にアクセスして、希望のデータをストレージシステム16から読み出し、あるいは処理後のデータをストレージシステム16に書込む。ストレージシステム16はインターネット18にも接続され、同じくインターネット18に接続される多数のセンサ20のセンスデータがストレージシステム16に格納される。
[ストレージシステム16]
図2は、ストレージシステム16の一例を示す。ストレージシステム16は、ストレージ部30、多数の接続ユニット(CU:Connection Unit)32、システムマネージャ34、管理者端末インターフェース36、電源ユニット(PSU:Power Supplying Unit)38、バッテリバックアップユニット(BBU:Battery Backup Unit)42等を含むが、この構成に限定されない。
ストレージ部30は、例えばマトリクス状に配置された多数のノードモジュール(NM:Node Module)54、それぞれが所定数、例えば4つのノードモジュール54に接続される多数のルーティング回路(RC:Routing Circuit)52を含む。すなわち、ルーティング回路52は所定数のノードモジュール54を管理するものであり、ルーティング回路52の個数はノードモジュール54の個数の所定数分の1である。マトリクス状のネットワークは、網目状あるいは格子状に構成されたネットワークであって、複数の縦の線と複数の横の線が交差した交差点に通信ノードが存在し、縦の線と横の線が通信経路となるネットワークである。なお、配置形状はマトリクス状に限定されない。
ノードモジュール54は、不揮発性半導体メモリを含み、クライアント10からの指示によるデータを記憶する記憶部である。ノードモジュール54の詳細については後述するが、ノードモジュール54は、ルーティング回路52および図5に示すパケット管理ユニット(PMU:Packet Management Unit)90を介して、他のノードモジュール54と電気的に接続される。
ルーティング回路52は2つ以上のインターフェースを含み、1つのインターフェースは信号線56、例えばLVDS(Low Voltage Differential Signaling)規格の信号線を介して他のルーティング回路52に接続されるとともに、他のインターフェースは信号線60、例えばPCIe(PCIExpress)規格の信号線を介して接続ユニット32に接続される。インターフェース規格は一例であり、必要に応じてその他のインターフェース規格が適用可能である。
ルーティング回路52は、信号線56、60からなるマトリクス状のネットワークにより、接続ユニット32から送信された、または他のルーティング回路52から転送されたデータを含むパケットを別のルーティング回路52に転送する。
図2のストレージ部30の例では、ノードモジュール54がそれぞれ格子点に配置された通信ノードに対応するマトリクス状のネットワークの例が示される。格子点の座標を、10進数表記の座標(x,y)で示す。格子点に配置されるノードモジュール54の位置情報は、当該格子点の座標と対応する相対的なノードアドレス(xd,yd)(=10進数表記)で示されるものとする。図2の例では、左上隅に位置するノードモジュール54が、原点のノードアドレス(0,0)を有する。ノードアドレス(xd,yd)を有するノードモジュール54をNM(xd,yd)と称する場合がある。各ノードモジュール54の相対的なノードアドレスは、横方向(x方向)、縦方向(y方向)の整数値が変動することにより、増減する。
各ノードモジュール54は、2以上の異なる方向に隣接するノードモジュール54と接続される。例えば、最も左上隅のNM(0,0)は、ルーティング回路52を介して、X方向に隣接するNM(1,0)と、X方向とは異なる方向であるY方向に隣接するNM(0,1)と、斜め方向に隣接するNM(1,1)と接続される。
以上のように構成されるストレージ部30においては、各ルーティング回路52が信号線56によって互いに接続され、ルーティング回路52と複数のノードモジュール54とが接続されることにより、ノードモジュール54間のネットワークが形成される。このため、このネットワーク全体を一つのアドレス空間でアクセスできる単一の巨大な不揮発半導体メモリと見做すことができる。この巨大な不揮発半導体メモリのメモリ空間を多数の接続ユニット、クライアントによってシェアすることができるので、ストレージ部30は、多数のノードモジュール54に対してデータを分散して格納し、分散的かつ並列的にデータを処理することができる。
ネットワークの形状は、上記の形状に限定されない。例えば、各ノードモジュール54がルーティング回路52を介さずに直接接続されることによって、ネットワークが形成されてもよい。
図2の例では、多数のノードモジュール54が、矩形格子の格子点に配置されるが、ノードモジュール54の配置の様態は、この例に限定されない。格子の形状は、格子点に配置される各ノードモジュール54が2以上の異なる方向に隣接するノードモジュール54と接続されればよく、例えば三角形、六角形などでもよい。さらに、図2では、多数のノードモジュール54が、2次元状に配置されるが、多数のノードモジュール54が3次元状に配置されてもよい。3次元状にノードモジュール54を配置する場合、ノードモジュール54の位置情報は、ノードアドレス(xd,yd,zd)で示される。
図2に示すように、ノードモジュール54が2次元状に配置される場合には、対辺に位置するノードモジュール54同士を接続することによって、ノードモジュール54をトーラス状に接続するようにしてもよい。トーラス状とは、ノードモジュール54が循環的に接続され、あるノードモジュール54から他のノードモジュール54への経路として、第1の方向を有する経路と、第1の方向に対して反対回りの第2の経路との少なくとも二つの経路が存在する接続形状である。
接続ユニット32は、LAN12を介して任意の数のクライアント10と接続可能なコネクタを含む接続ユニットである。クライアント10は、ストレージシステム16の利用者(ユーザ)によって使用される。接続ユニット32の数は、任意に構成することができる。接続ユニット32は、複数の例えば、2つの接続ポートを有し、それぞれ異なる2つのルーティング回路52に直接に接続される。接続ポートは図20、図21を参照して第4の実施形態で詳細に説明する。2つ以外のルーティング回路52に接続ユニット32を接続する場合、接続ユニット32は他のルーティング回路52を経由して間接的に接続される。なお、1つのルーティング回路52が複数の接続ユニット32に直接に接続されてもよい。
クライアント10は、ストレージシステム16に対するリードコマンド、ライトコマンド、削除コマンドなどのコマンドをパケットの形でLAN12を介していずれかの接続ユニット32に送信する。コマンドを受け付けた接続ユニット32は、ノードモジュール54間の信号線56、ルーティング回路52を介して、コマンド内の指示に含まれるアドレス指定情報に対応するアドレスのノードモジュール54に、受け付けた指示に対応する要求を送信する。接続ユニット32が、クライアント10からのコマンドを処理する過程においてノードモジュール54に要求を送信する際には、ルーティング回路52が転送したり実行したりすることが可能なパケットを生成し、生成したパケットを、自身に直接に接続されるルーティング回路52に送信する。ルーティング回路52は自分が管理するノードモジュール宛のパケットではない場合、パケットを隣のルーティング回路52に転送する。このようにして、送信先のノードモジュール54を管理するルーティング回路52迄パケットが転送される。また、接続ユニット32は、リード要求によって指示したデータを指示に含まれるアドレス指定情報に対応するアドレスのノードモジュール54から、ルーティング回路52、信号線56を経由して取得し、クライアント10に送信する。
システムマネージャ34は、接続ユニット32と、ルーティング回路52とに電気的に接続される。システムマネージャ34とルーティング回路52とはPCIe規格あるいはI2C(Inter-integrated circuit)規格の信号線で接続される。システムマネージャ34は、CPU(Central Processing Unit)などのプロセッサが、プログラムメモリに記憶されたプログラムを実行することで実現されてもよいし、プロセッサがプログラムを実行するのと同様の機能を有するLSI( Large Scale Integration ) やASIC(Application Specific Integrated Circuit)等のハードウェアにより実現されてもよい。
システムマネージャ34は、図示しないBMC(Base Management Controller)を含む。BMCの機能は、環境温度の監視、図示しない冷却用のファンの回転数の監視とコントロール、電源電流及び電源電圧の監視及び制御、接続ユニット32のステータスの記録、温度の監視、リセットなどを行う。システムマネージャ34は、BMC機能の他に、ストレージ部30に対する処理(バックグラウンド処理)も実行してもよい。ただし、バックグラウンド処理の実行は任意である。例えば、ノードモジュール54がNAND型フラッシュメモリを応用している場合、システムマネージャ34はフラッシュメモリのガベージコレクションやウェアレベリングを実行してもよい。システムマネージャ34は、ノードモジュール54の故障が発見されたとき、故障したノードモジュール54が実装されているカード基板の交換を、接続ユニット32を介して管理者端末14等の外部に通知してもよい。システムマネージャ34は、カード基板の交換後、RAID(Redundant Arrays of Inexpensive Disks)のリビルドを行ってもよい。
ノードモジュール54の故障の検知の主体は、図6に示すノードモジュール54内のノードコントローラ(NC)94でもよいし、接続ユニット32でもよい。ノードモジュール54の故障の検知は、そのノードモジュール54が有するメモリからのリードデータに対するエラー検出に基づいて実行されてもよい。
システムマネージャ34は、ノードモジュール54が有するメモリに対して処理を行う際には、処理に応じたパケットを発行する。システムマネージャ34は、例えば、後述する図7に示す様式に準拠するパケットを発行する。
管理者端末インターフェース36は、システムマネージャ34と管理者端末14とを接続する。管理者端末14は、ストレージシステム16を管理する管理者によって使用される。管理者端末14は、GUI(Graphical User Interface)などのインターフェースを管理者に提供し、ストレージシステム16に対する指示をシステムマネージャ34に送信する。
電源供給ユニット38は、外部電源40から与えられる外部電源電圧を、所定の直流電圧に変換し、ストレージシステム16の各構成に供給する。外部電源40は、例えば、100Vや200Vなどの交流電源である。
バッテリバックアップユニット42は、二次電池を有し、電源供給ユニット38から供給される電力を蓄電する。バッテリバックアップユニット42は、ストレージシステム16が外部電源40から電気的に遮断された場合に、補助電源電圧をストレージシステム16の各構成に供給する。後述するノードモジュール54のノードコントローラ(NC:Node Controller)94は、補助電源電圧によってデータを保護するバックアップを行う。
[接続ユニット32]
図3は、接続ユニット32の一例を示すブロック図である。接続ユニット32は、CPUなどのプロセッサ72と、第1インターフェース76と、第2インターフェース78と、メモリ74と、第3インターフェース80とを含むが、この構成に限定されない。
プロセッサ72は、メモリ74をワークエリアとして使用しながら、アプリケーションプログラムを実行することで各種処理を行う。第1インターフェース76は、信号線60を介してルーティング回路52に接続されるPCIe規格のインターフェースである。第2インターフェース78は、信号線62を介してシステムマネージャ34に接続される。メモリ74は、一時的にデータを保存するワークメモリである。メモリ74は、例えば、RAMであるが、これに限定されず、他の各種メモリを使用することができる。メモリ74は、複数のメモリから構成してもよい。第3インターフェース80は、信号線64を介してLAN12に接続される。
メモリ74は、ノードモジュール54へ送信するI/O要求のキューを含み、接続ユニット32は、複数のクライアント10からのリクエストを受け付け可能である。
[ストレージ部30]
図4は、ストレージ部30の詳細を示す。4つのノードモジュール54を管理するルーティング回路52はFPGA(Field-Programmable Gate Array)により構成される。説明の便宜上、1つのルーティング回路52と4つのノードモジュール54を1つのFPGA82と称する。左上のFPGA82は1つのルーティング回路52と4つのノードモジュールNM(0,0)、NM(1,0)、NM(0,1)、NM(1,1)を含む。同様に、FPGA82は1つのルーティング回路52と4つのノードモジュールNM(2,0)、NM(3,0)、NM(2,1)、NM(3,1)を含む。説明の便宜上、ストレージ部30の4つのFPGAを例にとると、4つのFPGA〜FPGAの各FPGAアドレスは、2進数表記で(000,000)、(010,000)、(000,010)および(010,010)で表される。FPGAアドレスはルーティング時にパケットを中継するためのアドレスである。
各FPGAの1つのルーティング回路52と4つのノードジュール54は、図5に示すパケットマネジメントユニット90を介して互いに接続される。ルーティング回路52は、パケット転送動作において、FPGAアドレスの宛先x,yのうち最下位ビットを無視(マスク)して、ルーティングを行う。FPGAアドレスはルーティングのみに用いられ、実際の宛先と送信元はノードアドレスが用いられる。ノードアドレスの最下位ビットをマスクすると、そのノードが属しているFPGAのアドレスが求まる。
[FPGA82]
図5は、FPGA82の一例を示すブロック図である。FPGA82は、例えば、1つのルーティング回路52と、4つのノードモジュール54以外にも、5つのパケットマネジメントユニット(PMU:Packet Management Unit)90〜90と、PCIeインターフェース92とを含むが、この構成に限定されない。
4つのパケットマネジメントユニット90〜90が4つのノードモジュールNM(0,0)、NM(1,0)、NM(0,1)、NM(1,1)にそれぞれ接続され、パケットマネジメントユニット90がPCIeインターフェース92に接続される。ルーティング回路52が受信したパケットはパケットマネジメントユニット90〜90に供給され、解析される。パケットマネジメントユニット90〜90は、パケットに含まれる送信先の座標(相対的なノードアドレス)と、自身に接続されるノードモジュールの座標(相対的なノードアドレス)とが一致するか否かを判定する。パケットマネジメントユニット90〜90は、パケットに記述される送信先アドレスと自身に接続されるノードモジュールのアドレスが一致する場合、自身に接続されているノードモジュール54にパケットを送信する。一方、パケットマネジメントユニット90〜90は、パケットに記述される座標と自身の座標とが一致しない場合(他の座標である場合)、その旨をルーティング回路52に返信する。ルーティング回路52は4つのパケットマネジメントユニット90〜90から座標が一致しない旨が通知されると、そのパケットを他のルーティング回路52に転送する。転送アルゴリズムの詳細は後述する。
例えば、パケットの送信先ノードアドレスが(1,1)である場合、当該ノードアドレス(1,1)に接続されるパケットマネジメントユニット90は、解析したパケットに記述される座標(1,1)と自分に接続されているノードモジュールの座標(1,1)とが一致すると判定する。そのため、当該ノードアドレス(1,1)に接続されるパケットマネジメントユニット90は、解析したパケットを自身に接続されるノードアドレス(1,1)のノードモジュールNM(1,1)に送信する。送信されたパケットは、ノードモジュール54のノードコントローラ94(図6に示す)により解析される。これにより、FPGA82は、ノードコントローラ94を用いてノードモジュール54中の不揮発性半導体メモリにデータを記憶させるなど、パケットに記載の要求に応じた処理を行う。
PCIeインターフェース92は、接続ユニット32から直接的に送信された要求やパケットなどをパケットマネジメントユニット90に送信する。ルーティング回路52は、パケットマネジメントユニット90に保存された要求やパケットを解析し、解析結果に応じて要求やパケットを自身に接続されているパケットマネジメントユニット90〜90や他のノードモジュール54に転送する。
[ノードモジュール]
図6は、ノードモジュール54の一例を示すブロック図である。ノードモジュール54は、ノードコントローラ94と、不揮発性半導体メモリ96と、ワークメモリ98を含むが、この構成に限定されない。
ノードコントローラ94には、パケットマネジメントユニット90が電気的に接続される。ノードコントローラ94は、パケットマネジメントユニット90を介して接続ユニット32または他のノードモジュール54からパケットを受信したり、パケットマネジメントユニット90を介して接続ユニット32または他のノードモジュール54へパケットを送信したりする。ノードコントローラ94は、パケットマネジメントユニット90から受信したパケットに含まれる要求の内容に対応する処理を実行する。例えば、パケットに含まれる要求の内容が、アクセス要求(リード要求またはライト要求)である場合には、ノードコントローラ94は、不揮発性半導体メモリ96に対するアクセスを実行する。ノードコントローラ94は、アクセス要求を受信した場合、受信したアクセス要求をワークメモリ98に一時的に保存する。
不揮発性半導体メモリ96としては、例えば、NAND型フラッシュメモリ、ビットコストスケーラブルメモリ(BiCS)、磁気抵抗メモリ(MRAM)、相変化メモリ(PcRAM)、抵抗変化型メモリ(RRAM(登録商標))、またはこれらの組み合わせが適用可能である。不揮発性半導体メモリ96はeMMC(Embedded Multi Media Card:登録商標)と呼ばれるフラッシュメモリ応用製品から構成してもよい。eMMCは、NAND型フラッシュメモリと制御回路を1つのBGAパッケージに収納し、メモリカードの規格であるMMCと同じインターフェースで外部と接続される。不揮発性半導体メモリ96は、ガベージコレクション、ウェアレベリング、Flush Cache(キャッシュの書き込み)、Read Reflesh(リードリテンション)等のバックグラウンド処理をアイドル時やライト直後等に実行する。
ワークメモリ98は、不揮発性半導体メモリではなく、一時的にデータを保存するメモリである。ワークメモリ98としては、DRAM(Dynamic Random Access Memory)などの各種RAMが適用可能である。不揮発性半導体メモリ96がワークエリアとしての機能を提供する場合、ワークメモリ98はノードモジュール54に配置されなくてもよい。
[パケットのデータ構造]
図7は、実施形態のストレージシステム16において送信されるデータ・情報のパケットの一例を示す。パケットは、ヘッダ領域HAと、ペイロード領域PAと、冗長領域RAとを含むが、この構成に限定されない。
ヘッダ領域HAには、例えばコマンド、送信元のノードモジュールのX方向およびY方向のアドレス(from_x,from_y)、および送信先のノードモジュールのX方向およびY方向のアドレス(to_x, to_y)などが記述される。ペイロード領域PAには、例えばデータなどが記述される。なお、コマンドはペイロード領域PAにも記述されてよい。ペイロード領域PAのデータサイズは、可変である。冗長領域RAには、例えば、CRC(Cyclic Redundancy Check)符号などが記述される。CRC符号は、ペイロード領域PAのデータの誤りを検出するために用いられる符号(情報)である。
上記構成のパケットを受信したルーティング回路52は、所定の転送アルゴリズムに基づいて、ルーティング先を決定する。転送アルゴリズムに基づいて、パケットは、ルーティング回路52の間を転送されて、最終的な目的地のノードアドレスのノードモジュール54に到達する。
例えば、ルーティング回路52は、上記転送アルゴリズムに基づき、自身に接続されているノードモジュール54から宛先のノードモジュール54までの転送回数が最小となる経路上に位置するノードモジュール54を、転送先のノードモジュール54に決定する。また、ルーティング回路52は、上記転送アルゴリズムに基づき、自身に接続されているノードモジュール54から宛先のノードモジュール54までの転送回数が最小となる経路が複数存在する場合には、複数の経路から1つの経路を任意の方法で選択する。ルーティング回路52は、同様に、自身に接続されているノードモジュール54に接続される複数のノードモジュール54のうちの転送回数が最小となる経路上に位置するノードモジュール54が故障、あるいはビジー状態である場合には、他のノードモジュール54を転送先に決定する。
複数のノードモジュール54がメッシュ状のネットワークで論理的に接続されていることにより、パケットの転送回数が最小となる経路が複数存在する場合がある。この場合において、特定のノードモジュール54を宛先とするパケットが複数出力されても、出力された複数のパケットは、上述の転送アルゴリズムにより複数の経路に分散して転送される。そのため、特定のノードモジュール54に対するアクセス集中を回避することができ、ストレージシステム16全体のスループットの低下を抑制することができる。
[パケット転送動作]
図8はルーティング回路52のパケット転送動作を説明するフローチャートである。
ルーティング回路52は、ステップB12で、接続ユニット32や他のルーティング回路52からパケットを受信すると、そのパケットのヘッダ領域HAに記述された送信先ノードモジュールのX方向およびY方向のアドレス(to_x, to_y)を解析する。この際、ルーティング回路52は、送信先のX方向およびY方向のアドレス(to_x, to_y)の最下位ビットを無視して(マスクして)、ルーティングを行う。
例えば、図9に示すように、送信先ノードモジュールのX方向およびY方向のアドレス(to_x, to_y)がそれぞれ16ビットで記述されている場合、ステップB12で、ルーティング回路52は、送信先ノードモジュールのX方向およびY方向のアドレス(to_x, to_y)の斜線で示す最下位ビットBX0,BY0を無視して、パケットのルーティングを行う。換言すると、ルーティング回路52は、送信先ノードモジュールのX方向およびY方向のアドレス(to_x, to_y)の最下位ビットBX0,BY0にかかわらず、パケットのルーティングを行う。なお、FPGAアドレスも図9のデータ構造で記述される。
より具体的には、図4に示したように、4つのFPGAアドレスが、2進数表記(000,000)、(010,000)、(000,010)、(010,010)で表される場合、ルーティング回路52は、上記4つのFPGAアドレスの最下位ビットを無視して、パケットのルーティングを行う。つまり、ルーティング回路52は、上記4つのFPGAアドレスの最下位ビットを無視する結果、(00X,00Y)、(01X,00Y)、(00X,01Y)、(01X,01Y)で表されるFPGAアドレスに基づいて、パケットのルーティングを行う。ここで、上記アドレス表記において、XおよびYのビットの状態(“0”状態または“1”状態)は、任意である。
続いて、ルーティング回路52は、ステップB14で、受け取ったパケットに記述される送信先ノードアドレスからFPGAアドレスを求め、求めたFPGAアドレスが自分のアドレスか否かを判定する。ルーティング回路52のアドレスは、ルーティング回路52が含まれるFPGA82のアドレスと同じである。この際、ルーティング回路52は、ステップB12で説明したように、送信先FPGAアドレスの最下位ビットBX0,BY0を無視した状態で、アドレスが自分のアドレスか否かを判定する。
受け取ったパケットの送信先FPGAアドレスが自分のアドレスでない場合(ステップB14でNO)、ステップB16で、ルーティング回路52は、転送回数が最小となる経路にて、パケットを他のルーティング回路52に転送し、この動作を終了する。
一方、受け取ったパケットの送信先FPGAアドレスが自分のアドレスである場合(ステップB14でYES)、ステップB18で、ルーティング回路52は、送信先FPGAアドレスの全ビットを認識して、当該認識したX方向およびY方向の送信先アドレスのノードアドレスにパケットを割り振る。換言すると、ステップB18において、ルーティング回路52は、送信先ノードモジュールアドレスの最下位ビットBX0,BY0を無視しないで、当該認識したX方向およびY方向の送信先アドレスのノードアドレスに相対的にパケットを割り振る。より具体的には、ルーティング回路52は、目的のノードアドレスに対応するノードモジュールが接続されているパケットマネジメントユニット90にパケットを転送する。パケットを転送されたパケットマネジメントユニット90は、目的のノードアドレスのノードモジュール54にパケットを割り振り、この動作を終了する。
[第1実施形態の動作]
図10は接続ユニット32の動作例を示すフローチャートである。図11はノードモジュール54の動作例を示すフローチャートである。これらを参照して、第1実施形態の動作の一例を説明する。
クライアント10からストレージ部30へのアクセスを指示するI/Oコマンドを受けた接続ユニット32は、図10のブロック1012で、アクセス対象のノードモジュール54宛のI/O要求(ライト要求あるいはリード要求)を送信する。I/O要求は、上述した転送アルゴリズムによりルーティング回路52を経由して対象のノードモジュール54に到達する。アクセス対象のノードモジュール54は、図11のブロック1112で、I/O要求を受信し、ブロック1114で、ワークメモリ98にI/O要求を保存できるか否か、すなわち、ワークメモリ98がI/O要求を保存する容量を有するか否かを判定する。
ワークメモリ98にI/O要求を保存できない場合、ノードモジュール54は、ブロック1116で、ビジー応答を返信する。ビジー応答は、ワークメモリ98あるいは不揮発性メモリ96にI/O要求を保存する空き容量がなく、I/O要求を受け付けることができないことを示すもので、データ構造は図7に示す構成である。ビジー応答はNM情報を含む。NM情報は、I/Oデータの処理時間、I/O要求がノードモジュールに到着するまでにかかった時間、ワークメモリ98に保存されている要求の数や種類、不揮発性半導体メモリ96の処理時間やレイテンシ等のノードモジュールの状態を示す。NM情報はペイロードに記述されることが多いが、ヘッダに記述しても良い。
ワークメモリ98にI/O要求を保存できる場合、ノードモジュール54は、ブロック1118で、受信したI/O要求をワークメモリ98に保存し、ブロック1120でワークメモリ98から1つのI/O要求(例えば、最も長い時間保存されている要求)を読み出し、実行する。I/O要求の実行が完了すると、ノードモジュール54は、ブロック1122で、完了応答を返信する。完了応答は、I/O要求の実行完了を報告するものであり、NM情報を含み、データ構造は図7に示す構成である。ノードモジュール54は、ブロック1124で、実行が完了したI/O要求をワークメモリ98から消去する、あるいは参照されないようにする。
ブロック1116、あるいはブロック1124の後、ノードモジュール54は、ブロック1126で、ワークメモリ98にI/O要求が残っているか否かを判定する。ワークメモリ98にI/O要求が残っている場合、ノードモジュール54は、ブロック1120からの処理で次のI/O要求を実行する。ワークメモリ98にI/O要求が残っていない場合、ノードモジュール54は、ブロック1112で、次のI/O要求の受信を待機する。
図10に示すように、接続ユニット32は、ブロック1012でノードモジュール54にI/O要求を送信後、ブロック1014でビジー応答を受信するか否かを判定する。ビジー応答を受信した場合、接続ユニット32は、ブロック1016でリトライ間隔を調整する。具体的には、現在設定されているリトライ間隔と、受信したNM情報とに基づいて次にI/O要求を再送するまでの間隔を計算する。例えば、リトライ間隔は次のように計算される。
リトライ間隔
=((ドライバPMU時間)xα_pmutime)>> β_pmutime
+((process_time) x α_temmc)>> β_temmc
+(リトライ回数) x α_retry
+γ_delay (1)
式(1)の各変数はNM情報に含まれるものであり、ドライバPMU時間は、ドライバから発行パケットが発行されて、応答パケットが戻ってくるまでの時間であり、接続ユニット32からノードモジュール54までのパケットルーティング時間と、ノードモジュール54でのコマンド処理時間と、ノードモジュール54から接続ユニット32までのパケットルーティング時間の合計値である。
process_timeは、ノードモジュール54でのコマンド処理時間である。
リトライ回数は、何回目のリトライかを示す値である。
αとβは、リトライ間隔に対する重み係数である。
βでビットシフトしているのは、丸め処理のためである。たとえば
1.000 → 1、 1.001 → 1、 1.500 → 1、 1.999 → 1
2.000 → 2、 2.999 → 3、 3.000 → 3、 のような処理が行われる。
接続ユニット32は、計算されたリトライ間隔だけブロック1018で待機し、その後、ブロック1012で、アクセス対象のノードモジュール54にI/O要求を再度送信(リトライ)する。
ブロック1014で、ビジー応答を受信しない場合、接続ユニット32は、ブロック1020で、完了応答を受信したか否か判定する。完了応答を受信しない場合、ブロック1014でビジー応答を受信するか否かを再度判定する。すなわち、接続ユニット32は、I/O要求の送信後は、ビジー応答か完了応答の受信を待つ。
完了応答を受信する場合、接続ユニット32は、ブロック1022でアクセス対象のノードモジュール54への他のI/O要求がメモリ74のキューに保存されているか否かを判定する。他のI/O要求がキューに保存されている場合、接続ユニット32は、ブロック1012で、他のI/O要求をノードモジュール54に送信する。他のI/O要求がキューに保存されていない場合、処理は終了する。
図12は、4つの接続ユニット32、32、32、32からのI/O要求(例えばライト要求)が1つのノードモジュールNM(3,5)に集中する状況を示す(図10のブロック1012参照)。なお、4つの接続ユニット32、32、32、32からのライト要求は同時ではなく、時間差を持って送信される場合もある。
図13は、ノードモジュールNM(3,5)がビジー応答を4つの接続ユニット32、32、32、32に返信する状況を示す(図11のブロック1116参照)。4つのビジー応答も同時ではなく、時間差を持って送信される場合もある。
この後、接続ユニット32、32、32、32は図14に示すように待機状態となる(図10のブロック1018参照)。なお、4つの接続ユニット32、32、32、32は同時に待機状態となるのでなく、時間差を持って待機状態となる場合もある。接続ユニット32、32、32、32の待機中に他の接続ユニット、例えば、32、32が他のノードモジュール、例えばNM(0,7)にライト要求を送信する場合があるが、この時、ネットワークの通信経路はリトライパケットにより占有されていないので、接続ユニット32、32からNM(0,7)へのライト要求が迂回され、あるいはNM(0,7)に到達しないことがなく、NM(0,7)はライト要求を受信する。
図15は、リトライ間隔待機後に接続ユニット32、32、32、32がライト要求を再送する状況を示す。ライト要求も、同時に限らず、時間差を持って再送されてもよい。再送時、NM(3,5)の不揮発性半導体メモリ96やワークメモリ98の空き容量は増えており、ライト要求を保存することができるので、ライト要求は実行される。実行が完了すると、図16に示すように、NM(3,5)から接続ユニット32、32、32、32に完了応答が返送される。
図17は、上記の動作を、複数の接続ユニット32を代表する接続ユニット32、32とノードモジュール54との間の動作に例えたシーケンス図である。
接続ユニット32はクライアント10からI/Oコマンド(ライトコマンドあるいはリードコマンド)を受信すると、アクセス対象のノードモジュール54にI/O要求を送信し(S10)、ノードモジュール54はI/O要求を実行する(S11)。この実行中に、接続ユニット32がノードモジュール54に他のI/O要求を送信した場合(S12)、ノードモジュール54のワークメモリ98はI/O要求を保存できないとする。ノードモジュール54は接続ユニット32にビジー応答を返送する(S13)。接続ユニット32は待機状態となり、リトライパケットの送信を保留する(S14)。
ノードモジュール54の要求実行(S11)が完了すると、ノードモジュール54は接続ユニット32に完了応答を返送する(S15)。接続ユニット32の待機状態はモジュール54による接続ユニット32からの要求の実行完了後まで続くように計算されている。
このため、待機状態が終わり、接続ユニット32がI/O要求を再送する(S16)時には、ノードモジュール54は接続ユニット32からのI/O要求の実行が完了している。そのため、ノードモジュール54は接続ユニット32から再送(リトライ)されたI/O要求を実行する(S17)。ノードモジュール54の要求実行(S17)が完了すると、ノードモジュール54は接続ユニット32に完了応答を返送する(S18)。
以上説明したように、第1実施形態によれば、ノードモジュール54は、接続ユニット32からのいくつかの要求をワークメモリ98に保存して、要求を実行する。そのため、1つのノードモジュールに複数の要求が集中すると、それ以上の要求を受け付けることが出来ず、接続ユニットへビジー応答を返信する。接続ユニットは、ビジー応答を受信した場合、直ちに要求を再送するのではなく、ノードモジュールの状況を示すNM情報に基づいたリトライ間隔だけ待ってから再送する。このようにリトライパケットの送信間隔が調整されるので、ビジー状態のノードモジュールに送信される無駄なリトライパケットが減り、ネットワーク内のパケット量が減る。その結果、ビジー状態ではないノードモジュールへのパケットが優先的に送信される。また、要求の再送(リトライ)時にノードモジュール54が要求を実行できない可能性が低下する。待機中は、リトライパケットによりネットワークの通信経路が占用されることがないので、ストレージシステムの動作速度が低下することがないとともに、他の接続ユニットからの要求が迂回され、あるいは宛先のノードモジュールに到達しないことがない。
リトライ間隔を決めるためのNM情報は、ノードモジュール54からの応答に含まれているので、リアルタイムにNM情報を接続ユニットにフィードバックすることができるとともに、問い合わせのためのポーリングパケットを送信する必要が無く、ネットワークのリソースが無駄に消費されない。各接続ユニットが独自に負荷を調整するので、接続ユニット間でリトライ間隔調整のための情報のやり取りによるブロッキングが生じない。さらに、ノードモジュールの負荷を調整するためのロードバランシング専用の機器を導入する必要もない。
(第2の実施形態)
第1実施形態ではクライアントからのコマンドを受けると、接続ユニット32はノードモジュール54の状態に関わらずノードモジュール54へ要求を送信する。これとは異なり、ノードモジュール54への要求の送信前に、ノードモジュール54の状態を確認する第2実施形態を説明する。
第2実施形態は、システム構成は第1実施形態と同じであるので、説明は省略する。図18は、第2実施形態のI/O要求に関する接続ユニット32、32とノードモジュール54との間の動作例を示すシーケンス図である。図18においては、複数の接続ユニット32を代表して接続ユニット32、32の動作について示す。
接続ユニット32はクライアント10からI/Oコマンド(ライトコマンドあるいはリードコマンド)を受信すると、アクセス対象のノードモジュール54に負荷確認パケットを送信する(S21)。ノードモジュール54は、負荷確認パケットを受信すると、ワークメモリ98に保存されたI/O要求数が基準未満か否かを判定する。この時、ワークメモリ98に保存されたI/O要求のデータ数は基準未満であるとする。ノードモジュール54は、ワークメモリ98に保存された要求のデータ数が基準未満である場合、ノードモジュール54の負荷が基準未満であると判断し、I/O要求の送信を認める旨(OK)を示す応答パケットを生成し、生成した応答パケットを接続ユニット32に送信する(S22)。
接続ユニット32は、ノードモジュール54からI/O要求の送信を認める旨(OK)を示す応答パケットを受信すると、データを書込むあるいは読み出すことをノードモジュール54に指示するためのI/O要求を生成し、生成したI/O要求を、ノードモジュール間のネットワークを介してノードモジュール54に送信する(S23)。ノードモジュール54は、接続ユニット32から受信したI/O要求を一時メモリとして機能するワークメモリ98に保存し、ワークメモリ98に保存されているI/O要求に基づき、不揮発性半導体メモリ96にアクセスし、I/O要求を実行する(S24)。
一方、接続ユニット32も、データのI/Oコマンドをクライアント200から受信した場合、アクセス対象のノードモジュール54に負荷確認パケットを送信する(S25)。ノードモジュール54は、接続ユニット32から負荷確認パケットを受信すると、ワークモリ98に保存されたI/O要求数が基準未満か否かを判断する。この時は、ワークメモリ98に保存されたI/O要求のデータ数は基準未満ではないとする。ノードモジュール54は、ワークメモリ98に保存された要求のデータ数が基準未満ではない場合、I/O要求の送信を認めない旨(NG)を示す応答パケットを生成し、生成した応答パケットP2を接続ユニット32に送信する(S26)。
OKやNGを示す応答パケットも、図1のビジー応答、完了応答と同様に、ノードモジュールの状況を示すNM情報を含む。
接続ユニット32は、ノードモジュール54からI/O要求の送信を認めない旨(NG)を示す応答パケットを受信すると、待機状態となり(S27)、ノードモジュール54にI/O要求を送信できないとともに、負荷確認パケットも送信できない。接続ユニット32の待機期間は、第1実施形態の図10のブロック1016で説明したように、現在設定されている待機期間と、NG応答に含まれるNM情報とに基づいて計算される。そのため、接続ユニット32の待機状態は、モジュール54による接続ユニット32からのI/O要求の実行完了後まで続く。
ノードモジュール54は、接続ユニット32から受信したI/O要求の実行が完了すると、接続ユニット32に完了応答を送信する(S28)。ノードモジュール54は、完了したI/O要求を、ワークメモリ98から消去する、あるいは参照されないようにする。
一方、接続ユニット32は、待機状態が解除されると、アクセス対象のノードモジュール54に負荷確認パケットを再度送信する(S29)。ノードモジュール54は、接続ユニット32から負荷確認パケットを受信すると、ワークメモリ98に保存されたI/O要求のデータ数が基準未満(ノードモジュール54の負荷が基準未満)か否かを判断する。この時、ノードモジュール54は、処理を実行していないので、ワークメモリ98に保存されたI/O要求のデータ数が基準未満であるとする。ノードモジュール54は、ワークメモリ98に保存されたI/O要求のデータ数が基準未満である場合、I/O要求の送信を認める旨(OK)を示す応答パケットを生成し、生成した応答パケットを接続ユニット32に送信する(S30)。
接続ユニット32は、ノードモジュール54からI/O要求の送信を認める旨(OK)を示す応答パケットを受信すると、データを書込むあるいは読み出すことをノードモジュール54に指示するためのI/O要求を生成する。その後、接続ユニット32は、生成したI/O要求を、ノードモジュール間のネットワークを介してノードモジュール54に送信する(S31)。ノードモジュール54は、接続ユニット32から受信したI/O要求を一時メモリとして機能するワークメモリ98に保存する。そして、ノードモジュール54は、ワークメモリ98に保存されたI/O要求に基づき、不揮発性半導体メモリ96にアクセスし、I/O要求を実行する(S32)。
ノードモジュール54は、接続ユニット32から受信したI/O要求の実行を完了すると、接続ユニット32に完了応答を送信する(S33)。そして、ノードモジュール54は、完了したI/O要求を、ワークメモリ98から消去する、あるいは参照されないようにする。
負荷確認パケット、応答パケットも、図7に示されるデータ構造を有する。負荷確認パケットでは、負荷確認パケットであることを示すデータがペイロード領域PAに記述される。応答パケットでは、応答パケットであることを示すデータおよびI/O要求の送信を認めるか否かを示すデータがペイロード領域PAに記述される。負荷確認パケットおよび応答パケットのデータサイズは、I/O要求のデータサイズよりも小さい。各ノードモジュール54は、ワークメモリ98の記憶領域中に負荷確認パケットおよび応答パケットを保存する領域を確保するために、ワークメモリ98の記憶領域に格納されるI/O要求のデータ数を制限する。これによって、ノードモジュール間のネットワークにおいて混雑が生じている場合であっても、各ノードモジュール54はデータサイズが小さい負荷確認パケットおよび応答パケットを遅滞なく送信することができる。
第2実施形態によれば、ノードモジュール54への要求の送信前に、ノードモジュール54の状態を確認する負荷確認パケットを送信し、ノードモジュール54の負荷が小さい場合のみ、ノードモジュール54へ要求を送信するので、実行不可能な要求パケットを送信することがなく、ストレージシステムの性能の低下を抑制することができる。さらに、ノードモジュール54の負荷が大きい場合、負荷確認パケットを送信しないので、データサイズが小さい負荷確認パケットの再送が繰り返されることによるネットワークへ負担がかかることが抑制できる。
(第3の実施形態)
第1、第2実施形態では、リトライ間隔は、現在設定されているリトライ間隔と、NM情報とに基づいて計算されている。この計算によるリトライ間隔後のリトライ時には、ノードモジュールのビジー状態が解消されている筈であるが、不揮発性半導体メモリ96のアクセス速度にばらつきがあれば、リトライ時にノードモジュールのビジー状態が解消されていない場合もあり得る。このため、第3実施形態では、NM情報が各リトライの成否を示す項目も含む。Q-Learningのようにリトライの成否情報を報酬として与えても良い。接続ユニット32はNM情報をノードモジュール毎に保存し、統計処理して、ノードモジュール毎に最適なリトライ間隔を学習により決定する。
図19は、接続ユニット32の動作例を示すフローチャートである。ノードモジュール54の動作例は図11にフローチャートと同じであるので、フローチャートの図示は省略する。
クライアント10からストレージ部30へのアクセスを指示するコマンドを受けた接続ユニット32は、ブロック1912で、アクセス対象のノードモジュール54にI/O要求(ライト要求あるいはリード要求)を送信する。ノードモジュール54は、図11に示したように、ワークメモリ98にI/O要求を保存できるか否かを判定し、I/O要求を保存できない場合、ビジー応答を返信し、ワークメモリ98にI/O要求を保存できる場合、I/O要求を実行し、完了応答を返信する。ビジー応答と完了応答は、リトライの成否を表すので、NM情報にリトライの成否を示す項目を格別含める必要はない。しかし、第1実施形態の項目に加えてリトライの成否を示す項目も含むNM情報を含めても良い。なお、リトライパケットの送信に対してもビジー応答を返信する場合がある。
接続ユニット32は、ブロック1914で、ビジー応答を受信するか否かを判定する。リトライの成否も含むビジー応答を受信した場合、接続ユニット32は、ブロック1916で、ノードモジュール毎にNM情報をメモリ74に保存する。接続ユニット32は、ブロック1918でリトライ間隔を調整する。具体的には、現在設定されているリトライ間隔と、保存されているNM情報とに基づいて次にI/O要求を再送するまでの間隔を計算する。
リトライ間隔は第1の実施形態で用いられた式(1)をベースに、前回リトライしたときの成否を見て、リトライ成功であればリトライ間隔を小さくし、失敗であれば、リトライ間隔を大きくする。
リトライ間隔(t+1)
=((ドライバPMU時間)xα_pmutime)>> β_pmutime
+((process_time) x α_temmc)>> β_temmc
+(リトライ回数) x α_retry
+γ_delay
+ (1 − 2 × success(t)) )xα_success (2)
式(2)で、success(t)は前回リトライが成功であれば1、失敗であれば0である。
接続ユニット32は、計算されたリトライ間隔だけブロック1920で待機し、その後、ブロック1912で、アクセス対象のノードモジュール54にI/O要求を再度送信(リトライ)する。
ブロック1914で、ビジー応答を受信しない場合、接続ユニット32は、ブロック1922で、完了応答を受信するか否か判定する。完了応答を受信しない場合、ブロック1914でビジー応答を受信するか否かを再度判定する。すなわち、接続ユニット32は、I/O要求の送信後は、ビジー応答か完了応答の受信を待つ。
完了応答を受信する場合、接続ユニット32は、ブロック1924で、ノードモジュール毎にNM情報をメモリ74に保存する。接続ユニット32は、ブロック1926で、アクセス対象のノードモジュール54への他のI/O要求がメモリ74のキューに保存されているか否かを判定する。他のI/O要求がキューに保存されている場合、接続ユニット32は、ブロック1912で、他のI/O要求をノードモジュール54に送信する。他のI/O要求がキューに保存されていない場合、処理は終了する。
第3実施形態によれば、応答に含まれるNM情報がリトライの成否を示す項目を含み、接続ユニット32は、受信したNM情報をノードモジュール毎に保存し、リトライ間隔を学習により決定するので、不揮発性半導体メモリの動作速度のばらつきがあってもノードモジュール毎に最適なリトライ間隔を求めることができる。
(第4の実施形態)
上述の実施形態は、ノードモジュール54からのNM情報に基づいてリトライ間隔を調整することにより、ストレージシステム16の性能を向上するが、ノードモジュール54からのレスポンス情報に基づいて接続ユニット32の接続ポートを変更することにより、ストレージシステム16の性能を向上する第4実施形態を説明する。接続ユニット32は、複数の例えば、2つの接続ポートを有し、それぞれ異なる2つのルーティング回路52に直接に接続される。
図20は、接続ユニット32、32、32、32、32、32、32、32の第1ポートの接続例を示す。接続ユニット32の第1ポートは、NM(0,0)〜NM(1,1)を管理するルーティング回路52に接続され、接続ユニット32の第1ポートは、NM(2,2)〜NM(3,3)を管理するルーティング回路52に接続され、接続ユニット32の第1ポートは、NM(4,0)〜NM(5,1)を管理するルーティング回路52に接続され、接続ユニット32の第1ポートは、NM(6,2)〜NM(7,3)を管理するルーティング回路52に接続され、接続ユニット32の第1ポートは、NM(6,0)〜NM(7,1)を管理するルーティング回路52に接続され、接続ユニット32の第1ポートは、NM(4,2)〜NM(5,3)を管理するルーティング回路52に接続され、接続ユニット32の第1ポートは、NM(6,4)〜NM(7,5)を管理するルーティング回路5212に接続され、接続ユニット32の第1ポートは、NM(4,6)〜NM(5,7)を管理するルーティング回路5215に接続される。
図21は、接続ユニット32、32、32、32、32、32、32、32の第2ポートの接続例を示す。接続ユニット32の第2ポートは、NM(0,4)〜NM(1,5)を管理するルーティング回路52に接続され、接続ユニット32の第2ポートは、NM(2,5)〜NM(3,7)を管理するルーティング回路5214に接続され、接続ユニット32の第2ポートは、NM(4,4)〜NM(5,5)を管理するルーティング回路5211に接続され、接続ユニット32の第2ポートは、NM(6,6)〜NM(7,7)を管理するルーティング回路5216に接続され、接続ユニット32の第2ポートは、NM(2,0)〜NM(3,1)を管理するルーティング回路52に接続され、接続ユニット32の第2ポートは、NM(0,2)〜NM(1,3)を管理するルーティング回路52に接続され、接続ユニット32の第1ポートは、NM(2,4)〜NM(3,5)を管理するルーティング回路5210に接続され、接続ユニット32の第2ポートは、NM(0,6)〜NM(1,7)を管理するルーティング回路5213に接続される。
図22は、接続ユニット32の動作例を示すフローチャートである。ノードモジュール54の動作例は上述の実施形態と同じであるので、フローチャートの図示は省略する。
クライアント10からストレージ部30へのアクセスを指示するコマンドを受けた接続ユニット32は、ブロック2212で、一方のポート、例えば第1ポートを接続ポートに設定し、ブロック2214で、アクセス対象のノードモジュール54にI/O要求(ライト要求あるいはリード要求)を送信する。ノードモジュール54は、図11に示したように、ワークメモリ98にI/O要求を保存できるか否かを判定し、I/O要求を保存できない場合、ビジー応答を返信し、ワークメモリ98にI/O要求を保存できる場合、I/O要求を実行し、完了応答を返信する。ビジー応答と完了応答は、ライフの消費値も含むNM情報を含む。ライフの消費値は、パケットの寿命を示すもので、IPヘッダに含まれるTTL(Time to Live)等を含む。TTLは、ルータを通過できる最大回数であり、ルータを1回通過する度、あるいは処理される度、TTLのカウンター値は−1される。制御ユニット32から出たパケットはLVDS回線上やPMU90上でカウンター値が減らされていき、0になるとPMU90にてパケット消失される。リトライパケットの送信に対してビジー応答を返信することもある。
接続ユニット32は、ブロック2216で、ビジー応答を受信したか否かを判定する。リトライの成否も含むビジー応答を受信した場合、接続ユニット32は、ブロック2218で、ノードモジュール毎にNM情報をメモリ74に保存する。接続ユニット32は、ブロック2220で保存NM情報の中のライフの消費値に基づいてビジー応答を返信したノードモジュールまでの経路の混雑度を求める。混雑度は「どれぐらい混雑しているか」を表すものである。
接続ユニット32は、ブロック2222で混雑度が閾値以上であるか否かを判定する。混雑度が閾値以上の場合、接続ユニット32は、ブロック2224で、接続ポートを切替える。この場合、接続ポートを第1ポートから第2ポートに切替える。この後、接続ユニット32は、ブロック2214で、I/O要求を再送する。
ノードモジュール54がビジー状態である場合、当該ノードモジュール54が接続されるルーティング回路52あるいは当該ルーティング回路52に接続されるネットワークもビジー状態である可能性が高い。そのため、ある接続ユニット32からビジー状態であるノードモジュール54が接続されるルーティング回路52を経由して他の非ビジー状態のノードモジュールに送信したいI/O要求が「ネットワークがパケットにより混雑している状態」であるノードモジュール54により阻害されることがある。パケットが届かない場合、パケットはライフの消費値が0となったときにPMU90により削除される。また、接続ユニット32には応答が来ないので、接続ユニット32がタイムアウトし、要求をキャンセルする。
このような場合、接続ポートが切り替えられると、ビジー状態であるノードモジュール54を迂回するので、I/O要求の阻害が生じない。
混雑度が閾値以上でない場合、接続ユニット32は、ブロック2226で、第1実施形態の図10のブロック1016と同様に、リトライ間隔を調整しても良い。接続ユニット32は、計算されたリトライ間隔だけブロック2228で待機し、その後、ブロック2214で、アクセス対象のノードモジュール54にI/O要求を再度送信(リトライ)する。
ブロック2216で、ビジー応答を受信しない場合、接続ユニット32は、ブロック2230で、完了応答を受信するか否か判定する。完了応答を受信しない場合、ブロック2216でビジー応答を受信するか否かを再度判定する。すなわち、接続ユニット32は、I/O要求の送信後は、ビジー応答か完了応答の受信を待つ。
完了応答を受信する場合、接続ユニット32は、ブロック2232で、ノードモジュール毎にNM情報をメモリ74に保存する。接続ユニット32は、ブロック2234で、アクセス対象のノードモジュール54への他のI/O要求がメモリ74のキューに保存されているか否かを判定する。他のI/O要求がキューに保存されている場合、接続ユニット32は、ブロック2214で、他のI/O要求をノードモジュール54に送信する。他のI/O要求がキューに保存されていない場合、処理は終了する。
なお、接続ポートの切り替えは、ビジー応答を受信した場合に限らず、完了応答を受信した場合でも、ライフの消費値が閾値以上であれ、行っても良い。
図23、図24は第4実施形態のストレージシステム16の動作例を示す。図23は、全ての接続ユニット32が第1ポートを接続ポートに設定している状態を示す。図23に示すように、接続ユニット32からノードモジュールNM(1,3)へのライト要求と、接続ユニット32からノードモジュールNM(1,3)へのライト要求が発生されると、ノードモジュールNM(1,3)がビジー状態となる。他の接続ユニット32からノードモジュールNM(4,2)へのライト要求が発生される場合、このライト要求は、図23に破線で示すように、ビジー状態のノードモジュールNM(1,3)が接続されるルーティング回路52を経由するので、ルーティング回路52がビジー状態であれば、送信先のノードモジュールNM(4,2)に到達しない。
ここで、接続モジュール32はレスポンスのライフの消費値を見て、ターゲットとなるノードへの経路の混雑度が閾値以上の場合、接続ポートを第2ポートに切替える。このため、図24に示すように、ノードモジュールNM(4,2)へのライト要求は、接続ユニット32の第2ポートからルーティング回路52に直接的に送信され、ビジー状態のノードモジュールNM(1,3)が接続されるルーティング回路52を経由しない。そのため、ライト要求は、ルーティング回路52からルーティング回路5210、5211、52を経由してノードモジュールNM(4,2)へ送信される。
第4実施形態によれば、接続ポートが複数ある接続ユニット32において、ネットワークの混雑度が閾値以上の場合は、接続ポートを切り替えてI/O要求を送信することにより、混雑しているルーティング回路、経路を迂回することができる。このため、いずれかのノードモジュール、ルーティング回路、経路にI/O要求が集中しても、混雑していないルーティング回路、経路を経由して他のノードモジュールにI/O要求を送信することができる。
(第5の実施形態)
上述の実施形態は、ノードモジュール54からのNM情報に基づいてリトライ間隔を調整し、あるいはI/O要求を送信する接続ポートを切り換えることにより、ストレージシステム16の性能を向上するが、ノードモジュール54からのNM情報に基づいてバックグラウンドオペレーションの起動タイミングを調整することにより、ストレージシステム16の性能を向上する第5実施形態を説明する。
フラッシュメモリ等の不揮発性半導体メモリ98では、接続ユニット32からのI/O要求の処理とは別にはガベージコレクション、ウェアレベリング等のバックグラウンド処理も行なう。しかし、該当ノードにI/O要求が集中したときにバックグラウンド処理が行われると、レイテンシが悪化する場合がある。
これを防ぐために、ノードモジュール54の状態に応じてバックグラウンド処理の実行タイミングを決定する第5実施形態を説明する。
図25は、接続ユニット32の動作例を示すフローチャートである。ノードモジュール54の動作例は上述の実施形態と同じであるので、フローチャートの図示は省略する。
クライアント10からストレージ部30へのアクセスを指示するコマンドを受けた接続ユニット32は、ブロック2512で、アクセス対象のノードモジュール54にI/O要求(ライト要求あるいはリード要求)を送信する。ここでは、図26に示すように、接続ユニット32からルーティング回路52に接続されるノードモジュールNM(1,3)へI/O要求が送信される。
ノードモジュール54は、図11に示したように、ワークメモリ98にI/O要求を保存できるか否かを判定し、I/O要求を保存できない場合、ビジー応答を返信し、ワークメモリ98にI/O要求を保存できる場合、I/O要求を実行し、完了応答を返信する。ここでは、図27に示すように、ルーティング回路52に接続されるノードモジュールNM(1,3)から接続ユニット32へ応答が送信される。
接続ユニット32は、ブロック2514で、ビジー応答を受信するか否かを判定する。ビジー応答を受信した場合、接続ユニット32は、ブロック2516で、ノードモジュール毎にNM情報をメモリ74に保存する。NM情報は一定期間(例えば、数十秒あるいは数分)メモリ74に保存される。接続ユニット32は、ブロック2518で、一定期間のNM情報を解析し、ブロック2520で、その解析結果とキューに保存されているノードモジュール54へ送信するI/O要求の数に基づいて、バックグラウンド処理を実行するのに適切なタイミングであるか否かを判定する。バックグラウンド処理を実行するのに適切なタイミングとは、例えばメモリ74に保存されている要求数が少ない(ビジー状態ではない)場合や、NM情報に含まれる消費したライフ値が小さい(混雑度が低い)場合や、接続ユニット32のキューに保存されているノードモジュール54へ送信するI/O要求が少ない場合である。
接続ユニット32は、バックグラウンド処理を実行するのに適切なタイミングと判断すると、ブロック2522で、図28に示すように、ガベージコレクション、ウェアレベリング等のバックグラウンド処理の実行を指示する要求BKOPSをルーティング回路52に接続されるノードモジュールNM(1,3)へ送信する。バックグラウンド処理を実行するのに適切なタイミングではない場合、ブロック2522はスキップされる。接続ユニット32は、ブロック2524でアクセス対象のノードモジュール54への他のI/O要求がメモリ74のキューに保存されているか否かを判定する。他のI/O要求がキューに保存されている場合、接続ユニット32は、ブロック1512で、他のI/O要求をノードモジュール54に送信する。他のI/O要求がメモリ74に保存されていない場合、処理は終了する。
第5実施形態によれば、接続ユニット32がノードモジュール54の状況をリアルタイムでモニタし、その結果に基づきノードモジュール54の処理負荷が小さい時にバックグラウンド処理を起動するので、ノードモジュール54の高負荷時にガベージコレクション、ウェアレベリング等のバックグランドオペレーションが駆動され、ストレージシステムの性能が低下する可能性が小さくなる。
(第6の実施形態)
上述の実施形態を組み合わせた第6実施形態を説明する。
図29は第5実施形態の接続ユニット32の動作例を示すフローチャートである。
クライアント10からストレージ部30へのアクセスを指示するI/Oコマンドを受けた接続ユニット32は、ブロック2912で、一方のポート、例えば第1ポートを接続ポートに設定し、ブロック2914で、アクセス対象のノードモジュール54宛のI/O要求(ライト要求あるいはリード要求)を送信する。図示しないが、ノードモジュール54は、ビジー応答、あるいは要求を処理した後完了応答を返信する。
ノードモジュール54は、ブロック2916で、ビジー応答を受信するか否かを判定する。ビジー応答を受信した場合、接続ユニット32は、ブロック2918で、ビジー応答のNM情報をノードモジュール毎にメモリ74に保存する。接続ユニット32は、ブロック2920で、保存NM情報の中のライフの消費値に基づいてビジー応答を返信したノードモジュールまでの経路の混雑度を求める。接続ユニット32は、ブロック2922で混雑度が閾値以上であるか否かを判定する。混雑度が閾値以上の場合、接続ユニット32は、ブロック2924で、接続ポートを切替える。この場合、接続ポートを第1ポートから第2ポートに切替える。この後、接続ユニット32は、ブロック2914で、I/O要求を再送する。
混雑度が閾値以上でない場合、接続ユニット32は、ブロック2926で、第1実施形態の図10のブロック1016と同様に、リトライ間隔を調整する。接続ユニット32は、ブロック2928で待機モードとなり、ブロック2930で、メモリ74に保存されている一定期間のNM情報を解析し、ブロック2932で、その解析結果とキューに保存されているノードモジュール54へ送信するI/O要求の数に基づいて、バックグラウンド処理を実行するのに適切なタイミングであるか否かを判定する。
接続ユニット32は、バックグラウンド処理を実行するのに適切なタイミングと判断すると、ブロック2934で、ガベージコレクション、ウェアレベリング等のバックグラウンド処理の実行を指示する要求を送信する。バックグラウンド処理を実行するのに適切なタイミングではない場合、ブロック2934はスキップされる。接続ユニット32は、ブロック2936で、待機時間がブロック2926で計算したリトライ間隔に達したか否か判定する。達していない場合は、ブロック2930が再度実行され、達した場合は、ブロック2914で、次のI/O要求が送信される。
ビジー応答を受信しない場合、接続ユニット32は、ブロック2942で、完了応答を受信するか否か判定する。完了応答を受信しない場合、ブロック2916でビジー応答を受信するか否かを再度判定する。すなわち、接続ユニット32は、I/O要求の送信後は、ビジー応答か完了応答の受信を待つ。
完了応答を受信する場合、接続ユニット32は、ブロック2944で、ノードモジュール毎にNM情報をメモリ74に保存する。接続ユニット32は、ブロック2946で、メモリ74に保存されている一定期間のNM情報を解析し、ブロック2948で、その解析結果とキューに保存されているノードモジュール54へ送信するI/O要求の数に基づいて、バックグラウンド処理を実行するのに適切なタイミングであるか否かを判定する。
接続ユニット32は、バックグラウンド処理を実行するのに適切なタイミングと判断すると、ブロック2950で、ガベージコレクション、ウェアレベリング等のバックグラウンド処理の実行を指示する要求を送信する。バックグラウンド処理を実行するのに適切なタイミングではない場合、ブロック2950はスキップされる。
接続ユニット32は、ブロック2952でアクセス対象のノードモジュール54への他のI/O要求がメモリ74のキューに保存されているか否かを判定する。他のI/O要求がキューに保存されている場合、接続ユニット32は、ブロック2914で、他のI/O要求をノードモジュール54に送信する。他のI/O要求がメモリ74に保存されていない場合、処理は終了する。
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、請求の範囲に記載された発明とその均等の範囲に含まれるものである。例えば、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。また、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。全ての実施形態は、複数のノードモジュールが1つのルーティング回路に接続され、接続ユニットはルーティング回路を介してノードモジュールに接続される。しかし、ルーティング回路は必須ではなく、ノードモジュールにルーティング機能を持たせれば、接続ユニットがノードモジュールに直接的に接続されてもよい。
16…ストレージユニット、30…ストレージ部、32…接続ユニット、34…システムマネージャ、52…ルーティング回路、54…ノードモジュール、90…パケットマネージメントユニット、94…ノードコントローラ、96…不揮発性メモリ。

Claims (14)

  1. それぞれが不揮発性半導体メモリを具備する複数のストレージデバイスと、
    前記複数のストレージデバイスを接続するネットワークと、
    前記ネットワークに接続され、前記複数のストレージデバイスの中の第1ストレージデバイスにI/O要求を送信するコントローラと、
    を具備するストレージシステムであって、
    前記第1ストレージデバイスは、前記コントローラと前記第1ストレージデバイスとの間の前記ネットワークの混雑度を示す混雑度情報を含むとともに受信した前記I/O要求の実行完了または実行不能を示す応答信号を前記コントローラへ送信し、
    前記コントローラは、前記応答信号が前記I/O要求の実行完了を示し、前記混雑度情報が閾値以上ではない混雑度を示す場合、前記第1ストレージデバイスのバックグランド処理を起動するストレージシステム。
  2. 前記応答信号は、前記I/O要求が前記コントローラから前記第1ストレージデバイスに到着するのに要する時間情報を含み、
    前記コントローラは、前記応答信号が前記I/O要求の実行不能を示す場合前記応答信号に含まれる前記時間情報に比例する再送間隔を求め、前記I/O要求を送信してから前記再送間隔の経過後に前記I/O要求を再送する、請求項1記載のストレージシステム。
  3. 前記応答信号は、前記I/O要求の再送回数情報も含み、
    前記コントローラは、前記応答信号が前記I/O要求の実行不能を示す場合、前記応答信号に含まれる前記時間情報と前記再送回数情報に比例する前記再送間隔を求める、請求項2記載のストレージシステム。
  4. 前記コントローラは複数の前記第1ストレージデバイス毎に前記再送間隔を求める、請求項2又は請求項3記載のストレージシステム。
  5. 前記複数のストレージデバイスの各々は、複数の不揮発性半導体メモリと、前記複数の不揮発性半導体メモリに接続され、前記コントローラからの前記I/O要求を前記複数の不揮発性半導体メモリのいずれかに転送するルーティング回路と、を具備し、
    前記複数のストレージデバイスの各々の前記ルーティング回路は前記ネットワークにより互いに接続される請求項1乃至請求項4のいずれか一項記載のストレージシステム。
  6. それぞれが不揮発性半導体メモリを具備する複数のストレージデバイスと、
    前記複数のストレージデバイスを接続するネットワークと、
    前記ネットワークに接続され、前記複数のストレージデバイスの中の第1ストレージデバイスにI/O要求を送信するコントローラと、
    を具備するストレージシステムにおける方法であって、
    前記第1ストレージデバイスは、前記コントローラと前記第1ストレージデバイスとの間の前記ネットワークの混雑度を示す混雑度情報を含むとともに受信した前記I/O要求の実行完了または実行不能を示す応答信号を前記コントローラへ送信し、
    前記コントローラは、前記応答信号が前記I/O要求の実行完了を示し、前記混雑度情報が閾値以上ではない混雑度を示す場合、前記第1ストレージデバイスのバックグランド処理を起動する方法。
  7. 前記応答信号は、前記I/O要求が前記コントローラから前記第1ストレージデバイスに到着するのに要する時間情報を含み、
    前記コントローラは、前記応答信号が前記I/O要求の実行不能を示す場合、前記応答信号に含まれる前記時間情報に比例する再送間隔を求め、前記I/O要求を送信してから前記再送間隔の経過後に前記I/O要求を再送する、請求項6記載の方法。
  8. 前記応答信号は、前記I/O要求の再送回数情報も含み、
    前記コントローラは、前記応答信号が前記I/O要求の実行不能を示す場合、前記応答信号に含まれる前記時間情報と前記再送回数情報に比例する前記再送間隔を求める、請求項7記載の方法。
  9. 前記コントローラは複数の前記第1ストレージデバイス毎に前記再送間隔を求める、請求項7又は請求項8記載の方法。
  10. それぞれが不揮発性半導体メモリを具備する複数のストレージデバイスと、
    それぞれが所定数のストレージデバイスに接続される複数のルーティング回路と、
    前記複数のルーティング回路を介して前記複数のストレージデバイスを接続するネットワークと、
    前記ネットワークに接続され、前記複数のルーティング回路の中の第1ルーティング回路に接続される第1ポートと前記複数のルーティング回路の中の第2ルーティング回路に接続される第2ポートとを具備するコントローラと、
    を具備するストレージシステムであって、
    前記コントローラは、前記ネットワークに接続される接続ポートとして前記第1ポート及び前記第2ポートのいずれか一方を選択し、前記複数のストレージデバイスの中の第1ストレージデバイスへのI/O要求を前記接続ポート及び前記第1ルーティング回路又は前記第2ルーティング回路を介して前記第1ストレージデバイスに送信し、
    前記第1ストレージデバイスは、前記コントローラと前記第1ストレージデバイスとの間の前記ネットワークの混雑度を示す混雑度情報を含むとともに受信した前記I/O要求の実行完了または実行不能を示す応答信号を前記コントローラへ送信し、
    前記コントローラは、前記応答信号が前記I/O要求の実行不能を示し、前記混雑度情報が閾値以上の混雑度を示す場合、前記接続ポートとして前記第1ポート及び前記第2ポートのいずれか他方を選択した後前記I/O要求を再送するストレージシステム。
  11. 前記コントローラは、前記応答信号が前記I/O要求の実行完了を示し、前記混雑度情報前記閾値以上の混雑度を示す場合、前記接続ポートとして前記第1ポート及び前記第2ポートのいずれか他方を選択した後前記I/O要求を再送する請求項10記載のストレージシステム。
  12. それぞれが不揮発性半導体メモリを具備する複数のストレージデバイスと、
    前記複数のストレージデバイスを接続するネットワークと、
    前記ネットワークに接続され、前記複数のストレージデバイスの中の第1ストレージデバイスにI/O要求を送信するコントローラと、
    を具備するストレージシステムであって、
    前記第1ストレージデバイスは、前記コントローラと前記第1ストレージデバイスとの間の前記ネットワークの混雑度を示す混雑度情報を含むとともに受信した前記I/O要求の実行完了または実行不能を示す応答信号を前記コントローラへ送信し、
    前記コントローラは、前記応答信号が前記I/O要求の実行不能を示し、前記混雑度情報が閾値以上ではない混雑度を示す場合、前記第1ストレージデバイスのバックグランド処理を起動するストレージシステム。
  13. それぞれが不揮発性半導体メモリを具備する複数のストレージデバイスと、
    前記複数のストレージデバイスを接続するネットワークと、
    前記ネットワークに接続され、前記複数のストレージデバイスの中の第1ストレージデバイスにI/O要求を送信するコントローラと、
    を具備するストレージシステムであって、
    前記コントローラは、前記第1ストレージデバイスに送信されるI/O要求を記憶するメモリを具備し、
    前記第1ストレージデバイスは、前記コントローラと前記第1ストレージデバイスとの間の前記ネットワークの混雑度を示す混雑度情報を含むとともに受信した前記I/O要求の実行完了または実行不能を示す応答信号を前記コントローラへ送信し、
    前記コントローラは、前記混雑度情報が閾値以上ではない混雑度を示し、前記メモリに記憶されている前記I/O要求の数が閾値以下の場合、前記第1ストレージデバイスのバックグランド処理を起動するストレージシステム。
  14. 前記複数のストレージデバイスの各々は、複数の不揮発性半導体メモリと、前記複数の不揮発性半導体メモリに接続され、前記コントローラからの前記I/O要求を前記複数の不揮発性半導体メモリのいずれかに転送するルーティング回路と、を具備し、
    前記複数のストレージデバイスの各々の前記ルーティング回路は前記ネットワークにより互いに接続される請求項12又は請求項13記載のストレージシステム。
JP2016176841A 2016-09-09 2016-09-09 ストレージシステム及び方法 Active JP6675290B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016176841A JP6675290B2 (ja) 2016-09-09 2016-09-09 ストレージシステム及び方法
US15/444,255 US10681130B2 (en) 2016-09-09 2017-02-27 Storage system including a plurality of nodes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016176841A JP6675290B2 (ja) 2016-09-09 2016-09-09 ストレージシステム及び方法

Publications (2)

Publication Number Publication Date
JP2018041404A JP2018041404A (ja) 2018-03-15
JP6675290B2 true JP6675290B2 (ja) 2020-04-01

Family

ID=61560644

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016176841A Active JP6675290B2 (ja) 2016-09-09 2016-09-09 ストレージシステム及び方法

Country Status (2)

Country Link
US (1) US10681130B2 (ja)
JP (1) JP6675290B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10635335B2 (en) 2017-03-21 2020-04-28 Western Digital Technologies, Inc. Storage system and method for efficient pipeline gap utilization for background operations
US11188456B2 (en) 2017-03-21 2021-11-30 Western Digital Technologies Inc. Storage system and method for predictive block allocation for efficient garbage collection
US11269764B2 (en) * 2017-03-21 2022-03-08 Western Digital Technologies, Inc. Storage system and method for adaptive scheduling of background operations
US10884656B2 (en) * 2017-06-16 2021-01-05 Microsoft Technology Licensing, Llc Performing background functions using logic integrated with a memory
KR102549584B1 (ko) * 2018-03-27 2023-06-30 삼성전자주식회사 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법
KR102538253B1 (ko) * 2018-04-16 2023-06-01 삼성전자주식회사 반도체 메모리 모듈 및 반도체 메모리 모듈을 포함하는 메모리 시스템
US10990463B2 (en) 2018-03-27 2021-04-27 Samsung Electronics Co., Ltd. Semiconductor memory module and memory system including the same
US10942791B2 (en) * 2018-09-17 2021-03-09 Oracle International Corporation Managing load in request processing environments
JP2021043801A (ja) * 2019-09-12 2021-03-18 株式会社東芝 電子機器、電子機器システム、及び磁気ディスク装置
US20220035663A1 (en) * 2020-07-31 2022-02-03 EMC IP Holding Company LLC Techniques for managing cores for storage

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0256031A (ja) 1988-08-22 1990-02-26 Hitachi Ltd 再試行間隔段階的増加方式
US8375114B2 (en) 2004-04-09 2013-02-12 Hewlett-Packard Development Company, L.P. Device loading in storage networks
JP2006129125A (ja) 2004-10-29 2006-05-18 Sanyo Electric Co Ltd 非同期パケット通信方法及び非同期パケット通信装置
US7984324B2 (en) * 2008-03-27 2011-07-19 Emc Corporation Systems and methods for managing stalled storage devices
JP2010146191A (ja) 2008-12-17 2010-07-01 Sony Corp 情報処理装置及びストレージシステム性能確認方法
US8413153B2 (en) * 2009-06-12 2013-04-02 Freescale Semiconductor Inc. Methods and systems for sharing common job information
JP5238791B2 (ja) 2010-11-10 2013-07-17 株式会社東芝 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法
US8365023B2 (en) 2011-04-29 2013-01-29 International Business Machines Corporation Runtime dynamic performance skew elimination
US9026759B2 (en) 2011-11-21 2015-05-05 Hitachi, Ltd. Storage system management apparatus and management method
US8755142B2 (en) * 2012-06-20 2014-06-17 HGST Netherlands B.V. Magnetic recording disk drive with method for data preservation during high track misregistration (TMR) environment
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US20150026525A1 (en) * 2013-07-18 2015-01-22 Synchronoss Technologies, Inc. Server controlled adaptive back off for overload protection using internal error counts
JP5996497B2 (ja) 2013-08-22 2016-09-21 株式会社東芝 ストレージ装置
JP2015099438A (ja) 2013-11-18 2015-05-28 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JP2015152949A (ja) 2014-02-10 2015-08-24 株式会社東芝 ストレージシステム
JP2016018384A (ja) 2014-07-08 2016-02-01 富士通株式会社 ストレージ制御装置、ストレージシステム、及びプログラム

Also Published As

Publication number Publication date
US10681130B2 (en) 2020-06-09
US20180077236A1 (en) 2018-03-15
JP2018041404A (ja) 2018-03-15

Similar Documents

Publication Publication Date Title
JP6675290B2 (ja) ストレージシステム及び方法
US20170109298A1 (en) Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto
US8976652B2 (en) Relay device, method of controlling relay device, and relay system
US8417778B2 (en) Collective acceleration unit tree flow control and retransmit
US8644139B2 (en) Priority based flow control within a virtual distributed bridge environment
US9397851B2 (en) Directed route load/store packets for distributed switch initialization
CN103973482A (zh) 具有全局通信事务管理能力的容错片上网络系统及方法
CN105247821A (zh) 用于利用自适应路由来控制资源利用的机制
JP6005533B2 (ja) 記憶装置および記憶方法
CN103618673A (zh) 一种保障服务质量的片上网络路由方法
WO2019148716A1 (zh) 数据传输方法、服务器及存储介质
US10353599B2 (en) Storage system that has a plurality of managers among which a master manager is switchable
TW201342079A (zh) 於晶載網路上之流量控制技術
US20230421451A1 (en) Method and system for facilitating high availability in a multi-fabric system
US20220045969A1 (en) Mapping nvme-over-fabric packets using virtual output queues
US11632288B2 (en) Determining the impact of network events on network applications
JP2016515361A (ja) アプリケーションにより提供される送信メタデータに基づくネットワーク送信調整
US8793412B1 (en) Event-based execution buffer management
JP2021189462A (ja) ストレージ装置
US10506042B2 (en) Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto
JP4771438B2 (ja) メモリアクセス制御装置、メモリアクセス制御方法、及びメモリアクセス制御用プログラム
US10855766B2 (en) Networking switch with object storage system intelligence
US20200034058A1 (en) Method and apparatus for dynamic flow control in distributed storage systems
US20240137429A1 (en) Toe-based network interface device, method of operating the same, and server device including the same
JP6141511B2 (ja) データ記憶装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170111

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170531

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190619

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190723

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190924

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200310

R150 Certificate of patent or registration of utility model

Ref document number: 6675290

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150