[go: up one dir, main page]

JP6554989B2 - ストレージ制御装置 - Google Patents

ストレージ制御装置 Download PDF

Info

Publication number
JP6554989B2
JP6554989B2 JP2015158687A JP2015158687A JP6554989B2 JP 6554989 B2 JP6554989 B2 JP 6554989B2 JP 2015158687 A JP2015158687 A JP 2015158687A JP 2015158687 A JP2015158687 A JP 2015158687A JP 6554989 B2 JP6554989 B2 JP 6554989B2
Authority
JP
Japan
Prior art keywords
data
pcie switch
cpu
buffer
dummy
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
JP2015158687A
Other languages
English (en)
Other versions
JP2017037500A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015158687A priority Critical patent/JP6554989B2/ja
Priority to US15/201,965 priority patent/US9990284B2/en
Publication of JP2017037500A publication Critical patent/JP2017037500A/ja
Application granted granted Critical
Publication of JP6554989B2 publication Critical patent/JP6554989B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)

Description

本発明は、ストレージ制御装置に関する。
ストレージシステムは、データを多重化することで信頼性を保証している。例えば、ストレージシステムは、データが格納されるHDD(Hard Disk Drive)やSSD(Solid State Drive)などの記憶装置を冗長化することで信頼性を高めている。また、記憶装置に対するデータの読み書きを制御するコントローラモジュール(以下、CM)を多重化し、複数のCMのメモリにライトデータを格納した後で記憶装置に書込むストレージシステムがある。このストレージシステムでは記憶装置の前段でライトデータが多重化されるため、さらに信頼性を高めることができる。
上記のストレージシステムでは、複数のCMで同じライトデータを共有するために、1つのCMがホストコンピュータから受信したライトデータは他のCMへと伝送される。CM同士は、例えば、PCI Express(以下、PCIe)などのI/Oシリアルインターフェースを介して接続される。そして、一方のCMが有するCPU(Central Processing Unit)と、他方のCMが有するCPUとの間には、例えば、PCIeスイッチなどのバッファメモリを備えたデバイスが存在する。
上記のように、CMを多重化することで信頼性は向上するが、CM間通信におけるデータの到達保証が実現できれば、さらに信頼性を向上することができる。データ通信網における到達保証については、通信バッファを有するデータ通信網を介して接続された送信手段と受信手段との間で処理データの到達保証を実現する技術が提案されている。この送信手段は、処理データに続いて、通信バッファ長より長いパケット長を有するダミーデータを送信し、ダミーデータに先行する処理データが受信手段へと到達したことを保証する。
特開平6−164574号公報
上記の技術における通信バッファは、格納したデータの送信元に対して応答を返すことはない。一方、PCIeスイッチなど、CM間に介在するデバイスには、バッファメモリにデータを格納したタイミングでデータの受信が完了した旨の応答(以下、ACK:Acknowledgement)を返す中継デバイスがある。
上記のような中継デバイスがあると、受信側のCMにあるメモリにデータを格納するCPUまでデータが到達していないのに、中継デバイスから受けたACKに応じて送信側のCMがデータの受信完了を上位装置に返してしまう可能性が生じる。ACKを返した中継デバイスの後段でデータに異常が生じるリスクもあるから、このような中継デバイスを想定したCM間通信の到達保証を実現することが信頼性のさらなる向上に寄与する。
1つの側面によれば、本開示の目的は、通信経路に中継デバイスを挟むコントローラ間通信の到達保証を実現可能なストレージ制御装置を提供することにある。
1つの側面によれば、第1及び第2の制御部と、第1の制御部から第2の制御部へデータが伝送される経路上にあって該データを転送する転送部とを有するストレージ制御装置が提供される。第1の制御部は、上位装置からライトデータの書込み要求を受け付け、ライトデータと、書込み先に関する付加データと、転送部の数と同数のダミーデータとを順に送信する送信部と、最後に送信されたダミーデータに対する確認応答を送信先の転送部から受信した後で上位装置に書込みの完了を通知する応答部とを有する。転送部は、付加データ及びダミーデータのデータ長以下のサイズを有し、付加データ及びダミーデータを格納するためのバッファ領域を含む記憶部と、受信した付加データをバッファ領域に格納した後で該付加データに対する確認応答を送信元に送信し、受信したダミーデータをバッファ領域に格納した後で該ダミーデータに対する確認応答を送信元に送信する通信部とを有する。
本開示によれば、通信経路に中継デバイスを挟むコントローラ間通信の到達保証を実現することが可能になる。
第1実施形態に係るストレージシステムの一例を示した図である。 第2実施形態に係るストレージシステムの一例を示した図である。 第2実施形態に係るCM間通信の一例を示した図である。 第2実施形態に係る制御データのパケット構造の一例を示した図である。 データ区間及び制御区間について説明するための図である。 第2実施形態に係るダミーデータのパケット構造の一例を示した図である。 第2実施形態に係るCM間通信及びサーバへの応答に関する処理の流れを示した第1のシーケンス図である。 第2実施形態に係るCM間通信及びサーバへの応答に関する処理の流れを示した第2のシーケンス図である。 第2実施形態に係るCM間通信及びサーバへの応答に関する処理の流れを示した第3のシーケンス図である。 第2実施形態に係るCM間通信及びサーバへの応答に関する処理の流れを示した第4のシーケンス図である。 第2実施形態の一変形例に係るCM間通信の一例を示した図である。 第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第1のシーケンス図である。 第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第2のシーケンス図である。 第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第3のシーケンス図である。 第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第4のシーケンス図である。 第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第5のシーケンス図である。 第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第6のシーケンス図である。
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。図1は、第1実施形態に係るストレージシステムの一例を示した図である。
第1実施形態は、記憶装置に対するデータの読み書きを制御するストレージ制御装置の内部におけるCM間通信に関し、バッファメモリを有する中継デバイスがCM間に介在する場合でもデータの到達保証を実現できるストレージシステムを提供する。
図1に示すように、第1実施形態に係るストレージシステムは、上位装置10、ストレージ制御装置20、及び記憶装置30を含む。
上位装置10は、ホストコンピュータとして動作するサーバなどである。ストレージ制御装置20は、上位装置10から受け付けた書込み要求や読出し要求に応じて記憶装置30に対するデータの読み書きを制御する。記憶装置30は、HDDやSSDなどである。記憶装置30は、複数のHDDやSSDを組み合わせて冗長化したRAID(Redundant Array of Inexpensive Disks)装置であってもよい。
ストレージ制御装置20は、第1の制御部21、転送部22、23、及び第2の制御部24を有する。なお、CMのCPUは、第1の制御部21及び第2の制御部24の一例である。CM間通信の主体となるCPU同士を接続するPCIeスイッチは、転送部22、23の一例である。
図1の例では、第1の制御部21の後段に転送部22が接続され、転送部22の後段に転送部23が接続され、転送部23の後段に24が接続されている。つまり、転送部22、23は、第1の制御部21から第2の制御部24へデータが伝送される経路上にある。そして、転送部22、23は、第1の制御部21と第2の制御部24との間で送受信されるデータを転送する中継デバイスとして動作する。
第1の制御部21は、送信部21a及び応答部21bを有する。
送信部21aは、上位装置10からライトデータWDの書込み要求を受け付け、ライトデータWDと、書込み先に関する付加データTDと、経路上に介在する転送部(転送部22、23)の数と同数のダミーデータDD1、DD2とを順に送信する。送信部21aは、ライトデータWDを分割して、予め設定されたデータ長(例えば、128Byte)を有する複数の分割データを生成し、これら複数の分割データを順次送信してもよい。
付加データTDは、例えば、ライトデータWDの書込み先アドレスなど、ライトデータWDが書き込まれるキャッシュメモリ(非図示)の物理アドレスと論理アドレスとを対応付ける管理テーブルの更新に用いる情報を含む。付加データTDのデータ長は、例えば、128Byteなどに設定される。ダミーデータDD1、DD2は、付加データTDと同じデータ長を有し、例えば、Nullデータなどの意味のないデータを含む。
応答部21bは、送信部21aにより最後に送信されたダミーデータDD2に対する確認応答(ACK)を転送部22から受信した後で上位装置10に書込みの完了を通知する。図1の例では、ライトデータWD、付加データTD、ダミーデータDD1、ダミーデータDD2の順で送信部21aから転送部22に送信されるから、最後に送信されたデータは、ダミーデータDD2になる。
転送部22は、記憶部22bを有する。記憶部22bには、ライトデータWDを格納するためのバッファ領域であるBuffer1と、付加データTD及びダミーデータDD1、DD2を格納するためのバッファ領域であるBuffer2とが設けられている。Buffer2は、付加データTD及びダミーデータDD1、DD2のデータ長以下のサイズ(例えば、128Byte)に設定されている。
転送部23は、記憶部23bを有する。記憶部23bには、ライトデータWDを格納するためのバッファ領域であるBuffer3と、付加データTD及びダミーデータDD1、DD2を格納するためのバッファ領域であるBuffer4とが設けられている。Buffer4は、付加データTD及びダミーデータDD1、DD2のデータ長以下のサイズ(例えば、128Byte)に設定されている。
なお、記憶部22b、23bの機能は、RAM(Random Access Memory)などの揮発性記憶装置、又はHDDやフラッシュメモリなどの不揮発性記憶装置を用いて実現できる。
以下、図1に下段に示したシーケンスの例を参考に、転送部22が有する通信部22a、及び転送部23が有する通信部23aについて説明する。
通信部22aは、第1の制御部21からライトデータWDを受信し、Buffer1に格納した後、Buffer1に格納したライトデータWDを転送部22に送信すると共に、ライトデータWDに対するACKを第1の制御部21に送信する。
通信部23aは、転送部22からライトデータWDを受信し、Buffer3に格納した後、Buffer3に格納したライトデータWDを第2の制御部24に送信すると共に、ライトデータWDに対するACKを転送部22に送信する。なお、ライトデータWDを受信した第2の制御部24は、転送部23にACKを返す。
通信部22aからACKを受信した第1の制御部21は、送信部21aにより付加データTDを転送部22に送信する。転送部22のBuffer2が空になっていない場合、通信部22aは、第1の制御部21に対してNACKを返す。NACKを受信した第1の制御部21は、送信部21aにより再び付加データTDを転送部22に送信する。
なお、Buffer2が空になるまで、第1の制御部21から転送部22への付加データTDの送信と、転送部22から第1の制御部21へのNACKの返信とが繰り返される。
Buffer2が空になった場合、通信部22aは、第1の制御部21から付加データTDを受信し、受信した付加データTDをBuffer2に格納した後で付加データTDに対するACKを第1の制御部21(付加データTDの送信元)に送信する。また、通信部22aは、Buffer2に格納した付加データTDを転送部23に送信する。
転送部23のBuffer4が空になっていない場合、通信部23aは、転送部22に対してNACKを返す。NACKを受信した転送部22は、通信部22aにより再び付加データTDを転送部23に送信する。
なお、Buffer4が空になるまで、転送部22から転送部23への付加データTDの送信と、転送部23から転送部22へのNACKの返信とが繰り返される。
Buffer4が空になった場合、通信部23aは、転送部22から付加データTDを受信し、受信した付加データTDをBuffer4に格納した後で付加データTDに対するACKを転送部22(付加データTDの送信元)に送信する。また、通信部23aは、Buffer4に格納した付加データTDを第2の制御部24に送信する。付加データTDを受信した第2の制御部24は、転送部23にACKを返す。
通信部22aから付加データTDに対応するACKを受信した第1の制御部21は、送信部21aによりダミーデータDD1を転送部22に送信する。転送部22のBuffer2が空になっていない場合、通信部22aは、第1の制御部21に対してNACKを返す。NACKを受信した第1の制御部21は、送信部21aにより再びダミーデータDD1を転送部22に送信する。
なお、Buffer2が空になるまで、第1の制御部21から転送部22へのダミーデータDD1の送信と、転送部22から第1の制御部21へのNACKの返信とが繰り返される。
転送部23から付加データTDに対応するACKを受信した後、通信部22aは、Buffer2を空にする(Buffer2 clear)。
Buffer2を空にした通信部22aは、第1の制御部21からダミーデータDD1を受信し、受信したダミーデータDD1をBuffer2に格納した後でダミーデータDD1に対するACKを第1の制御部21(ダミーデータDD1の送信元)に送信する。また、通信部22aは、Buffer2に格納したダミーデータDD1を転送部23に送信する。
転送部23のBuffer4が空になっていない場合、通信部23aは、転送部22に対してNACKを返す。NACKを受信した転送部22は、通信部22aにより再びダミーデータDD1を転送部23に送信する。
なお、Buffer4が空になるまで、転送部22から転送部23へのダミーデータDD1の送信と、転送部23から転送部22へのNACKの返信とが繰り返される。
第2の制御部24から付加データTDに対応するACKを受信した通信部23aは、Buffer4を空にする(Buffer4 clear)。
Buffer4を空にした通信部23aは、転送部22からダミーデータDD1を受信し、受信したダミーデータDD1をBuffer4に格納した後でダミーデータDD1に対するACKを転送部22(ダミーデータDD1の送信元)に送信する。
また、通信部23aは、Buffer4に格納したダミーデータDD1を第2の制御部24に送信する。ダミーデータDD1を受信した第2の制御部24は、転送部23にACKを返す。
通信部22aからダミーデータDD1に対応するACKを受信した第1の制御部21は、送信部21aによりダミーデータDD2を転送部22に送信する。転送部22のBuffer2が空になっていない場合、通信部22aは、第1の制御部21に対してNACKを返す。NACKを受信した第1の制御部21は、送信部21aにより再びダミーデータDD2を転送部22に送信する。
なお、Buffer2が空になるまで、第1の制御部21から転送部22へのダミーデータDD2の送信と、転送部22から第1の制御部21へのNACKの返信とが繰り返される。
転送部23からACKを受信した通信部22aは、Buffer2を空にする(Buffer2 clear)。Buffer2を空にした通信部22aは、第1の制御部21からダミーデータDD2を受信し、受信したダミーデータDD2をBuffer2に格納した後でダミーデータDD2に対するACKを第1の制御部21(ダミーデータDD2の送信元)に送信する。また、通信部22aは、Buffer2に格納したダミーデータDD2を転送部23に送信する。
第2の制御部24からACKを受信した通信部23aは、Buffer4を空にする(Buffer4 clear)。Buffer4を空にした通信部23aは、転送部22からダミーデータDD2を受信し、受信したダミーデータDD2をBuffer4に格納した後でダミーデータDD2に対するACKを転送部22(ダミーデータDD2の送信元)に送信する。また、通信部23aは、Buffer4に格納したダミーデータDD2を第2の制御部24に送信する。ダミーデータDD2を受信した第2の制御部24は、転送部23にACKを返す。
転送部22からACKを受信した応答部21bは、上位装置10に対してライトデータWDの書込み完了を通知する。上記のように、Buffer2、4のサイズを付加データTDのデータ長以下に制限することにより、付加データTD、ダミーデータDD1、DD2が順次中継デバイスから突き出される形で転送される。そのため、第1の制御部21がダミーデータDD2に対するACKを受信した段階で、付加データTDが第2の制御部24に到達することになり、付加データTD及びライトデータWDの到達保証がされる。
なお、図1の例ではBuffer1、2を分けて記載しているが、サイズを変更することが可能な1つのバッファ領域を利用して上記の到達保証を実現することもできる。例えば、ライトデータWDの転送前にバッファ領域のサイズをライトデータWDの格納に適したサイズに変更し、付加データTDの転送前にバッファ領域のサイズを付加データTDのデータ長以下に変更する方法が考えられる。Buffer3、4についても同様である。
この方法を適用すると、バッファ領域のサイズを変更する制御が追加される一方、付加データTD及びダミーデータDD1、DD2の格納用に別途バッファ領域を設けなくて済むようになる。このような変形も第1実施形態の技術的範囲に属する。
以上、第1実施形態について説明した。
<2.第2実施形態>
次に、第2実施形態について説明する。第2実施形態は、ストレージシステムにおけるCM間通信に関し、通信バッファを有する中継デバイスがCM間に介在する場合でもデータの到達保証を実現できるストレージシステムを提供する。
[2−1.システム]
図2を参照しながら、第2実施形態に係るストレージシステムについて説明する。図2は、第2実施形態に係るストレージシステムの一例を示した図である。
図2に示すように、第2実施形態に係るストレージシステムは、サーバ100、ストレージ制御装置200、及び記憶装置300を有する。
サーバ100は、ホストコンピュータとして機能する情報処理装置である。ストレージ制御装置200は、サーバ100から受けた書込み要求や読出し要求に応じて記憶装置300に対するデータの読み書きを制御する。記憶装置300は、HDDやSSDなどである。記憶装置300は、複数のHDDやSSDを組み合わせて冗長化したRAID装置であってもよい。
ストレージ制御装置200は、コントローラモジュール(CM)201、202を有する。CM201は、メモリ211、CPU212、エキスパンダ213、FC(Fibre Channel)コントローラ214、及びPCIeスイッチ215を有する。同様に、CM202は、メモリ221、CPU222、エキスパンダ223、FCコントローラ224、及びPCIeスイッチ225を有する。
なお、図2に例示したストレージシステムでは、CM201、202が同じストレージ制御装置200の筐体内にあるが、CM201、201が異なるストレージ制御装置に搭載され、ストレージ制御装置間のチャネルを介して接続されていてもよい。ここでは、説明の都合上、ストレージ制御装置200の筐体内にCM201、202が含まれる例について説明する。
メモリ211、221は、RAM、HDD、フラッシュメモリなどである。エキスパンダ213は、SAS(Serial Attached SCSI)のホストコントローラとなるCPU212と、エンドデバイスとなる記憶装置300などとを接続する拡張デバイスである。同様に、エキスパンダ223は、SASのホストコントローラとなるCPU222と、エンドデバイスとなる記憶装置300などとを接続する拡張デバイスである。エキスパンダ213、223は相互に接続されている。また、エキスパンダ213はCPU222に、エキスパンダ223はCPU212にも接続されている。
FCコントローラ214、224は、FCによりサーバ100と接続するための通信インターフェースである。PCIeスイッチ215、225は、Upstream側に接続されたデバイスと、Downstream側に接続されたデバイスとをPCIe接続するスイッチである。また、PCIeスイッチ215、225は、NTB(Non Transparent Bridge)機能を有し、PCIeスイッチ215に接続されたデバイス群と、PCIeスイッチ225に接続されたデバイス群との通信を可能にする。また、PCIeスイッチ215、225は、CPUなどのプロセッサを有する。
[2−2.CM間通信]
ここで、図3〜図6を参照しながら、CM間通信について説明する。
図3は、第2実施形態に係るCM間通信の一例を示した図である。
図3に示すように、PCIeスイッチ215は、通信バッファとして利用するバッファメモリを有し、バッファ領域としてデータバッファ215A及びTBLバッファ215Bが設定されている。同様に、PCIeスイッチ225も、通信バッファとして利用するバッファメモリを有し、バッファ領域としてデータバッファ225A及びTBLバッファ225Bが設定されている。
データバッファ215A、225Aは、書込み処理や読出し処理の対象データを格納するためのバッファ領域である。TBLバッファ215B、225Bは、対象データに付加される制御データ、及びダミーデータを格納するためのバッファ領域である。TBLバッファ215B、225Bは、制御データのデータ長以下のサイズに設定されている。なお、CPU222も通信バッファとして用いるバッファ222Aを有する。
図3の例は、CPU212がサーバ100から書込み要求と共に受信したライトデータをCPU222に伝送するCM間通信の状況を示している。この場合、CPU212は、ライトデータを分割して単位サイズ(例えば、128Byte)のデータ#1、…、データ#Nを生成する。また、CPU212は、制御データを生成する。制御データは、例えば、書込み先のアドレスなど、CPU222がライトデータをキャッシュするメモリ221の物理アドレスと論理アドレスとを対応付ける管理テーブルの更新に用いる情報を含む。
また、CPU212は、CPU212、222間に介在する中継デバイス(この例ではPCIeスイッチ215、225)の数と同数のダミーデータを生成する。このとき、CPU212は、CPU212、222間の通信経路に位置し、通信バッファにデータを格納したタイミングで確認応答(ACK)を返す中継デバイスを基準とする。図3の例では、2つのダミーデータが生成される。ダミーデータは、例えば、制御データと同じデータ長を有し、Nullデータなどの意味のないデータを含む。
制御データは、図4に示すようなパケット構造を有する。図4は、第2実施形態に係る制御データのパケット構造の一例を示した図である。図4に示すように、制御データのパケットは、2つのヘッダ#1、#2を有し、その後に管理テーブルの更新に用いる情報などを含む制御情報が付加された構造を有する。
ヘッダ#1は、制御区間(図5を参照)のデータであることを識別するためのタグ情報を含む。ここでは、図5に示すように、ライトデータから生成されたデータ#1、…、データ#Nを含む部分をデータ区間、制御データ及びダミーデータを含む部分を制御区間と呼んでいる。図5は、データ区間及び制御区間について説明するための図である。ヘッダ#2は、制御データであることを識別するためのタグ情報を含む。
図6に示すように、ダミーデータのパケットもヘッダ#1、#2を含む。図6は、第2実施形態に係るダミーデータのパケット構造の一例を示した図である。ダミーデータのヘッダ#1は、制御データのヘッダ#1と同じタグ情報を含む。一方、ダミーデータのヘッダ#2には、ダミーデータであることを識別するためのタグ情報が含まれる。そして、ヘッダ#1、#2の後にNullデータなどが付加される。
CPU212は、図3に示すように、上記のパケット構造を有するデータ#1、…、データ#N、制御データ、及び2つのダミーデータを順にPCIeスイッチ215に送信する。
PCIeスイッチ215は、データ#1、…、データ#Nを受信すると、それぞれデータバッファ215Aに格納してからCPU212にACKを返す。また、PCIeスイッチ215は、データバッファ215Aに格納したデータ#1、…、データ#NをPCIeスイッチ225に送信する。
PCIeスイッチ225は、データ#1、…、データ#Nを受信すると、それぞれデータバッファ225Aに格納してからPCIeスイッチ215にACKを返す。また、PCIeスイッチ225は、データバッファ225Aに格納したデータ#1、…、データ#NをCPU222に送信する。CPU222は、データ#1、…、データ#Nを受信すると、それぞれバッファ222Aに格納してからPCIeスイッチ225にACKを返す。
PCIeスイッチ215は、制御データを受信すると、TBLバッファ215Bに格納してからCPU212にACKを返す。また、PCIeスイッチ215は、TBLバッファ215Bに格納した制御データをPCIeスイッチ225に送信する。なお、TBLバッファ215Bのサイズが制御データのデータ長より小さい場合には、制御データは分割して送信される。ここでは、説明の都合上、TBLバッファ215B、225Bのサイズ、制御データのデータ長、ダミーデータのデータ長は同じとする。
PCIeスイッチ225は、制御データを受信すると、TBLバッファ225Bに格納してからPCIeスイッチ215にACKを返す。また、PCIeスイッチ225は、TBLバッファ225Bに格納した制御データをCPU222に送信する。CPU222は、制御データを受信すると、バッファ222Aに格納してからPCIeスイッチ225にACKを返す。
PCIeスイッチ225からACKを受信したPCIeスイッチ215は、TBLバッファ215Bを空にする。その後、PCIeスイッチ215は、CPU212からダミーデータを受信する。そして、PCIeスイッチ215は、受信したダミーデータをTBLバッファ215Bに格納してからCPU212にACKを返す。
CPU222からACKを受信したPCIeスイッチ225は、TBLバッファ225Bを空にする。その後、PCIeスイッチ225は、PCIeスイッチ215からダミーデータを受信する。そして、PCIeスイッチ225は、受信したダミーデータをTBLバッファ225Bに格納してからPCIeスイッチ215にACKを返す。
CPU212は、データ#1、…、データ#N、制御データ、2つのダミーデータの全てについてACKを受信した後、サーバ100に対して書込み完了を示す応答を返す。CPU222は、受信したダミーデータを破棄する。CPU222は、上述したヘッダ#1、#2を参照することで、受信したデータがデータ#1、…、データ#Nであるか、制御データであるか、ダミーデータであるかを判断できる。なお、CPU222は、ヘッダ#1を参照して制御区間を判別し、制御データに続くデータをダミーデータと判断してもよい。
上記のように、TBLバッファ215B、225Bを適切なサイズに設定し、制御データに続いて2つのダミーデータを順次送信することで、各バッファから各データが突き出される形で転送されるため、制御データ以前のデータについて到達保証ができる。つまり、最後のダミーデータについてCPU212がACKを受信した時点で制御データがCPU222に到達していることになり、そのデータ以前のデータが到達保証される。
(TBLバッファ215B、225Bの効用)
例えば、サーバ100からデータを受信したCPU212は、そのデータをメモリ211に書き込む。CPU212は、複数CMによる多重化を実現するため、DMA(Direct Memory Access)を利用してメモリ221へのデータコピーを開始する。DMAによるデータ伝送では、通信経路上にある次段のデバイス(PCIeスイッチ215)からACKが返ってきた段階で、CPU212がDMA転送が完了したと判断する。
PCIeスイッチ215がDMA転送されるデータのデータ長より大きなバッファ領域を通信バッファとして利用すると仮定した場合、最終段に位置するCPU222までデータが到達する前にDMA転送が完了したと判断される。そのため、CPU222でデータの異常が検出され、CM間通信がリンクダウンされた場合でも、サーバ100に対し、CPU212が完了通知を送信してしまう。
しかし、これまで説明してきたように、TBLバッファ215B、225Bを利用し、中継デバイスの数と同数のダミーデータを送信することで、完了通知を誤送信するリスクを回避することができる。なお、CPU222に到達し、メモリ221に書き込まれたデータをCPU212がDMA転送により再び取得し、到達完了を確認する方法も考えられるが、余分な転送処理が応答の遅延や負荷の増大などの性能劣化要因となる。しかし、これまで説明してきた方法によれば、このような性能劣化のリスクも生じない。
以上、第2実施形態に係るCM間通信について説明した。
[2−3.シーケンス]
次に、図7〜図10を参照しながら、第2実施形態に係るストレージシステムにおける書込み処理のシーケンスについて、さらに説明する。
(ライトデータの伝送)
まず、図7を参照する。図7は、第2実施形態に係るCM間通信及びサーバへの応答に関する処理の流れを示した第1のシーケンス図である。
(S101)サーバ100は、CM201に対してデータの書込み要求(Request(W))を送信する。サーバ100から送信された書込み要求は、FCコントローラ214により受信され、PCIeスイッチ215を介してCPU212に入力される。書込み要求を受けたCPU212は、CM202のCPU222に書込み対象のデータ(以下、ユーザデータ)を送信するCM間通信の処理を開始する。
(S102)CPU212は、ユーザデータに付加するヘッダを生成する。例えば、CPU212は、データ区間と制御区間と(図5を参照)を区別するタグ情報を含むヘッダ#1を生成する。
(S103)CPU212は、ユーザデータを分割し、予め設定された単位サイズ(例えば、128Byte)を有する分割データを生成する。そして、CPU212は、S102で生成したヘッダ#1を各分割データに付加する。なお、以下の説明では、分割データを単にユーザデータと呼ぶ場合がある。
(S104)CPU212は、S103で生成した分割データ(Data)を順次PCIeスイッチ215に送信する。
(S105)PCIeスイッチ215は、CPU212から受信したデータがユーザデータであるか否かを判定する。例えば、PCIeスイッチ215は、受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1にデータ区間を示すタグ情報を含む場合にはユーザデータであると判定する。S104でCPU212から送信されたデータは分割データであるから、PCIeスイッチ215は、このデータをユーザデータであると判定する。
(S106)PCIeスイッチ215は、CPU212から受信した分割データをデータバッファ215A(D−Buffer)に格納する。データバッファ215Aは、分割データのデータ長である単位サイズより大きなサイズ(例えば、25KByte)に設定されていてもよい。
(S107)PCIeスイッチ215は、分割データの受信を完了した旨の確認応答(ACK)をCPU212に返す。このACKを受けてCPU212は次の分割データをPCIeスイッチ215に送信する。つまり、次の分割データについて、S104からS114までの処理(図7の符号Aを付した範囲)が実行開始される。
(S108)PCIeスイッチ215は、データバッファ215Aに格納した分割データをPCIeスイッチ225に送信する。
(S109)PCIeスイッチ225は、PCIeスイッチ215から受信したデータがユーザデータであるか否かを判定する。例えば、PCIeスイッチ225は、受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1にデータ区間を示すタグ情報を含む場合にはユーザデータであると判定する。S108でPCIeスイッチ215から送信されたデータは分割データであるから、PCIeスイッチ225は、受信したデータをユーザデータであると判定する。
(S110)PCIeスイッチ225は、PCIeスイッチ215から受信した分割データをデータバッファ225A(D−Buffer)に格納する。データバッファ225Aは、分割データのサイズである単位サイズより大きなサイズ(例えば、25KByte)に設定されていてもよい。
(S111)PCIeスイッチ225は、分割データの受信を完了した旨の確認応答(ACK)をPCIeスイッチ215に返す。このACKを受けてPCIeスイッチ215はデータバッファ215Aにある次の分割データをPCIeスイッチ225に送信する。
(S112)PCIeスイッチ225は、データバッファ225Aに格納した分割データをCPU222に送信する。
(S113)CPU222は、PCIeスイッチ225から受信した分割データをバッファ222Aに格納する。
(S114)CPU222は、分割データの受信を完了した旨の確認応答(ACK)をPCIeスイッチ225に返す。このACKを受けてPCIeスイッチ225はデータバッファ225Aにある次の分割データをCPU222に送信する。なお、符号Aの範囲にある処理が全ての分割データについて実行される。
(制御データ・ダミーデータの伝送)
次に、図8を参照する。CPU212は、全ての分割データをPCIeスイッチ215に送信した後、制御データ及びダミーデータの送信を開始する。そして、処理は、図8のS121へと進む。
以下、図8〜図10を順次参照する。図8は、第2実施形態に係るCM間通信及びサーバへの応答に関する処理の流れを示した第2のシーケンス図である。図9は、第2実施形態に係るCM間通信及びサーバへの応答に関する処理の流れを示した第3のシーケンス図である。図10は、第2実施形態に係るCM間通信及びサーバへの応答に関する処理の流れを示した第4のシーケンス図である。なお、図8の線上に付したa〜eは、図9の線上に付したa〜eに接続され、図9の線上に付したf〜jは、図10の線上に付したf〜jに接続される。
(S121)CPU212は、ユーザデータの書込み先に関する情報を含む制御データ(Ctrl data)と、CPU212、222間に介在する中継デバイスの数と同数のダミーデータ(Dmy data)とを生成する。
この例では、中継デバイスとしてPCIeスイッチ215、225がCPU212、222間に介在するから、2つのダミーデータ(Dmy1 data、Dmy2 data)が生成される。なお、ダミーデータは、例えば、Nullデータであり、制御データと同じデータ長(例えば、128Byte)を有する。
(S122)CPU212は、制御データ、及びダミーデータに付加するヘッダを生成する。例えば、CPU212は、データ区間と制御区間と(図5を参照)を区別するタグ情報を含むヘッダ#1を生成する。また、CPU212は、制御データとダミーデータとを区別するタグ情報を含むヘッダ#2を生成する(図4及び図6を参照)。そして、CPU212は、ヘッダ#1、#2を制御データ及びダミーデータに付加する。
(S123)CPU212は、制御データをPCIeスイッチ215に送信する。
(S124)PCIeスイッチ215は、CPU212から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。例えば、PCIeスイッチ215は、CPU212から受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1に制御区間を示すタグ情報を含む場合には制御区間のデータであると判定する。S123でCPU212から送信されたデータは制御データであるから、PCIeスイッチ215は、このデータを制御区間のデータであると判定する。
(S125)PCIeスイッチ215は、CPU212から受信したデータが制御データ(Ctrl data)であるか否かを判定する。例えば、PCIeスイッチ215は、CPU212から受信したデータに付加されているヘッダ#2を参照し、ヘッダ#2に制御データを示すタグ情報を含む場合には制御データであると判定する。S123でCPU212から送信されたデータは制御データであるから、PCIeスイッチ215は、このデータを制御データであると判定する。
(S126)PCIeスイッチ215は、CPU212から受信した制御データをTBLバッファ215B(C−Buffer)に格納する。TBLバッファ215Bは、制御データのデータ長以下のサイズ(例えば、128Byte)を有する。
(S127)PCIeスイッチ215は、制御データの受信を完了した旨の確認応答(ACK)をCPU212に返す。
(S128)PCIeスイッチ215は、TBLバッファ215Bに格納した制御データをPCIeスイッチ225に送信する。
(S129)PCIeスイッチ225は、PCIeスイッチ215から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。例えば、PCIeスイッチ225は、PCIeスイッチ215から受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1に制御区間を示すタグ情報を含む場合には制御区間のデータであると判定する。S128でPCIeスイッチ215から送信されたデータは制御データであるから、PCIeスイッチ225は、このデータを制御区間のデータであると判定する。
(S130)PCIeスイッチ225は、PCIeスイッチ215から受信したデータが制御データ(Ctrl data)であるか否かを判定する。例えば、PCIeスイッチ225は、PCIeスイッチ215から受信したデータに付加されているヘッダ#2を参照し、ヘッダ#2に制御データを示すタグ情報を含む場合には制御データであると判定する。S128でPCIeスイッチ215から送信されたデータは制御データであるから、PCIeスイッチ225は、このデータを制御データであると判定する。
(S131)PCIeスイッチ225は、PCIeスイッチ215から受信した制御データをTBLバッファ225B(C−Buffer)に格納する。TBLバッファ225Bは、制御データのデータ長以下のサイズ(例えば、128Byte)を有する。
(S132)PCIeスイッチ225は、制御データの受信を完了した旨の確認応答(ACK)をPCIeスイッチ215に返す。
(S133)PCIeスイッチ225は、TBLバッファ225Bに格納した制御データをCPU222に送信する。
(S134)CPU222は、PCIeスイッチ225から受信したデータのヘッダ#1、#2を参照して、そのデータが制御データであることを確認し、その制御データをバッファ222Aに格納する。
(S135)CPU222は、制御データの受信を完了した旨の確認応答(ACK)をPCIeスイッチ225に返す。
(S136)CPU222からACKを受けたPCIeスイッチ225は、TBLバッファ225Bを空にする(C−Buffer clear)。
(S137)S132でPCIeスイッチ225から送信されたACKを受けたPCIeスイッチ215は、TBLバッファ215Bを空にする(C−Buffer clear)。
(S138)PCIeスイッチ215は、CPU212からダミーデータ(Dmy1 data)を受信する。
(S139)PCIeスイッチ215は、CPU212から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。例えば、PCIeスイッチ215は、CPU212から受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1に制御区間を示すタグ情報を含む場合には制御区間のデータであると判定する。S138でCPU212から送信されたデータはダミーデータであるから、PCIeスイッチ215は、このデータを制御区間のデータであると判定する。
(S140)PCIeスイッチ215は、CPU212から受信したデータがダミーデータ(Dmy data)であるか否かを判定する。例えば、PCIeスイッチ215は、CPU212から受信したデータに付加されているヘッダ#2を参照し、ヘッダ#2にダミーデータを示すタグ情報を含む場合にはダミーデータであると判定する。S138でCPU212から送信されたデータはダミーデータであるから、PCIeスイッチ215は、このデータをダミーデータであると判定する。
(S141)PCIeスイッチ215は、CPU212から受信したダミーデータをTBLバッファ215B(C−Buffer)に格納する。
(S142)PCIeスイッチ215は、ダミーデータの受信を完了した旨の確認応答(ACK)をCPU212に返す。
(S143)PCIeスイッチ215は、TBLバッファ215Bに格納したダミーデータ(Dmy1 data)をPCIeスイッチ225に送信する。
(S144)PCIeスイッチ225は、PCIeスイッチ215から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。例えば、PCIeスイッチ225は、PCIeスイッチ215から受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1に制御区間を示すタグ情報を含む場合には制御区間のデータであると判定する。S143でPCIeスイッチ215から送信されたデータはダミーデータであるから、PCIeスイッチ225は、このデータを制御区間のデータであると判定する。
(S145)PCIeスイッチ225は、PCIeスイッチ215から受信したデータがダミーデータ(Dmy data)であるか否かを判定する。例えば、PCIeスイッチ225は、PCIeスイッチ215から受信したデータに付加されているヘッダ#2を参照し、ヘッダ#2にダミーデータを示すタグ情報を含む場合にはダミーデータであると判定する。S143でPCIeスイッチ215から送信されたデータはダミーデータであるから、PCIeスイッチ225は、このデータをダミーデータであると判定する。
(S146)PCIeスイッチ225は、PCIeスイッチ215から受信したダミーデータをTBLバッファ225B(C−Buffer)に格納する。
(S147)PCIeスイッチ225は、ダミーデータの受信を完了した旨の確認応答(ACK)をPCIeスイッチ215に返す。
(S148)PCIeスイッチ225は、TBLバッファ225Bに格納したダミーデータ(Dmy1 data)をCPU222に送信する。
(S149)CPU222は、PCIeスイッチ225から受信したデータのヘッダ#1、#2を参照して、そのデータがダミーデータであるかを判定する。S148でPCIeスイッチ225から送信されたデータはダミーデータであるから、CPU222は、このデータをダミーデータであると判定する。
(S150)CPU222は、ダミーデータを破棄(Delete)する。
(S151)CPU222は、ダミーデータの受信を完了した旨の確認応答(ACK)をPCIeスイッチ225に返す。
(S152)CPU222からACKを受けたPCIeスイッチ225は、TBLバッファ225Bを空にする(C−Buffer clear)。
(S153)S147でPCIeスイッチ225から送信されたACKを受けたPCIeスイッチ215は、TBLバッファ215Bを空にする(C−Buffer clear)。
(S154)PCIeスイッチ215は、CPU212からダミーデータ(Dmy2 data)を受信する。
(S155)PCIeスイッチ215は、CPU212から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。S154でCPU212から送信されたデータはダミーデータであるから、PCIeスイッチ215は、このデータを制御区間のデータであると判定する。
(S156)PCIeスイッチ215は、CPU212から受信したデータがダミーデータ(Dmy data)であるか否かを判定する。S154でCPU212から送信されたデータはダミーデータであるから、PCIeスイッチ215は、このデータをダミーデータであると判定する。
(S157)PCIeスイッチ215は、CPU212から受信したダミーデータをTBLバッファ215B(C−Buffer)に格納する。
(S158)PCIeスイッチ215は、ダミーデータの受信を完了した旨の確認応答(ACK)をCPU212に返す。
(S159)CPU222は、最後に送信したダミーデータ(Dmy2 data)に対するACK(S158を参照)に応じて、ユーザデータの書込みを完了した旨の完了応答(Response)をサーバ100に送信する。
S134で制御データがCPU222のバッファ222Aに格納され、これに応じてS135でACKがPCIeスイッチ225に返され、PCIeスイッチ225のTBLバッファ225Bが空にされた。この処理を受けて、S143で1つ目のダミーデータがPCIeスイッチ225により受信され、S146で空のTBLバッファ225Bにダミーデータが格納されて、S147でPCIeスイッチ215にACKが返された。
S147のACKを受けてTBLバッファ215Bが空にされ、S154で2つ目のダミーデータがPCIeスイッチ215により受信され、S157で空のTBLバッファ215Bにダミーデータが格納され、S158でCPU212にACKが返された。したがって、S158で返されたACKをCPU212が受けた時点で、CPU222のバッファ222Aに制御データが格納されたことが保証される。つまり、S159の完了応答は、CM間通信におけるユーザデータ及び制御データの到達保証を前提とする信頼性の高いものである。
(S160)PCIeスイッチ215は、TBLバッファ215Bに格納したダミーデータ(Dmy2 data)をPCIeスイッチ225に送信する。
(S161)PCIeスイッチ225は、PCIeスイッチ215から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。S160でPCIeスイッチ215から送信されたデータはダミーデータであるから、PCIeスイッチ225は、このデータを制御区間のデータであると判定する。
(S162)PCIeスイッチ225は、PCIeスイッチ215から受信したデータがダミーデータ(Dmy data)であるか否かを判定する。S160でPCIeスイッチ215から送信されたデータはダミーデータであるから、PCIeスイッチ225は、このデータをダミーデータであると判定する。
(S163)PCIeスイッチ225は、PCIeスイッチ215から受信したダミーデータをTBLバッファ225B(C−Buffer)に格納する。
(S164)PCIeスイッチ225は、ダミーデータの受信を完了した旨の確認応答(ACK)をPCIeスイッチ215に返す。なお、このACKを受けたPCIeスイッチ215は、この時点で、次のCM間通信に備えてTBLバッファ215Bを空にしてもよい。
(S165)PCIeスイッチ225は、TBLバッファ225Bに格納したダミーデータ(Dmy2 data)をCPU222に送信する。
(S166)CPU222は、PCIeスイッチ225から受信したデータのヘッダ#1、#2を参照して、そのデータがダミーデータであるかを判定する。S165でPCIeスイッチ225から送信されたデータはダミーデータであるから、CPU222は、このデータをダミーデータであると判定する。
(S167)CPU222は、ダミーデータを破棄(Delete)する。
(S168)CPU222は、ダミーデータの受信を完了した旨の確認応答(ACK)をPCIeスイッチ225に返す。なお、このACKを受けたPCIeスイッチ225は、この時点で、次のCM間通信に備えてTBLバッファ225Bを空にしてもよい。S168の処理が完了すると、図7〜図10に示した一連の処理は終了する。
以上、第2実施形態に係るストレージシステムにおける書込み処理のシーケンスについて説明した。上記のように、CPU212、222間に介在する中継デバイスの数と同数のダミーデータを送信すること、及びTBLバッファ215B、225Bのサイズを制御データのデータ長以下にすることで、ユーザデータ及び制御データの到達保証ができる。そして、最後に送信したダミーデータの確認応答を待ってサーバ100に書込み処理の完了応答を返すことで、CM間通信の到達保証を伴う信頼性の高い処理を実現できる。
<3.変形例>
これまで、PCIeスイッチ215、225にそれぞれ制御データ及びダミーデータを格納するためのバッファ領域を別途設ける仕組みを前提とした説明をしてきたが、サイズが可変な1つのバッファ領域を利用することで同様に到達保証を実現できる。ここでは、サイズが可変なバッファ領域(以下、容量可変バッファ)を利用する変形例について説明する。
[3−1.CM間通信]
この変形例においては、図11に示すように、容量可変バッファ215C、225Cが利用される。図11は、第2実施形態の一変形例に係るCM間通信の一例を示した図である。容量可変バッファ215C、225Cは、ライトデータを分割したデータ#1、…、データ#N、制御データ、及びダミーデータのいずれの格納にも利用される。また、容量可変バッファ215C、225Cのサイズは、指定したサイズに設定するコマンド(BufCMD)により制御される。
図11に示すように、CPU212は、データ#1、…、データ#Nを送信する前に、容量可変バッファ215Cのサイズをこれらのデータのデータ長(例えば、128Byte)に応じた適当なサイズ(例えば、12KByte)に制御するBufCMDを送信する。このBufCMDを受けたPCIeスイッチ215は、容量可変バッファ215CのサイズをBufCMDで指定されたサイズに変更する。そして、PCIeスイッチ215は、容量可変バッファ215Cのサイズ変更が完了した旨の応答(BufFNSH)をCPU212に返す。
BufFNSHを受けたCPU212は、データ#1、…、データ#Nを順次PCIeスイッチ215に送信する。PCIeスイッチ215は、データ#1、…、データ#Nを受信すると、それぞれ容量可変バッファ215Cに格納してからCPU212にACKを返す。
PCIeスイッチ215は、容量可変バッファ215Cに格納したデータ#1、…、データ#NをPCIeスイッチ225に送信する前に、PCIeスイッチ225にBufCMDを転送する。このBufCMDを受けたPCIeスイッチ225は、容量可変バッファ225CのサイズをBufCMDで指定されたサイズに変更する。そして、PCIeスイッチ225は、容量可変バッファ225Cのサイズ変更が完了した旨の応答(BufFNSH)をPCIeスイッチ215に返す。
BufFNSHを受けたPCIeスイッチ215は、データ#1、…、データ#Nを順次PCIeスイッチ225に送信する。PCIeスイッチ225は、データ#1、…、データ#Nを受信すると、それぞれ容量可変バッファ225Cに格納してからPCIeスイッチ215にACKを返す。また、PCIeスイッチ225は、容量可変バッファ215Cに格納したデータ#1、…、データ#NをCPU222に送信する。CPU222は、データ#1、…、データ#Nを受信すると、それぞれバッファ222Aに格納してからPCIeスイッチ225にACKを返す。
CPU212は、制御データを送信する前に、容量可変バッファ215Cのサイズを制御データのデータ長(例えば、128Byte)以下のサイズ(例えば、128Byte)に制御するBufCMDを送信する。このBufCMDを受けたPCIeスイッチ215は、容量可変バッファ215CのサイズをBufCMDで指定されたサイズに変更する。そして、PCIeスイッチ215は、容量可変バッファ215Cのサイズ変更が完了した旨の応答(BufFNSH)をCPU212に返す。
BufFNSHを受けたCPU212は、制御データ、及び2つのダミーデータを順次PCIeスイッチ215に送信する。
PCIeスイッチ215は、制御データを受信すると、容量可変バッファ215Cに格納してからCPU212にACKを返す。
PCIeスイッチ215は、容量可変バッファ215Cに格納した制御データをPCIeスイッチ225に送信する前に、PCIeスイッチ225にBufCMDを転送する。このBufCMDを受けたPCIeスイッチ225は、容量可変バッファ225CのサイズをBufCMDで指定されたサイズに変更する。そして、PCIeスイッチ225は、容量可変バッファ225Cのサイズ変更が完了した旨の応答(BufFNSH)をPCIeスイッチ215に返す。
BufFNSHを受けたPCIeスイッチ215は、容量可変バッファ215Cに格納した制御データをPCIeスイッチ225に送信する。PCIeスイッチ225は、制御データを受信すると、容量可変バッファ225Cに格納してからPCIeスイッチ215にACKを返す。また、PCIeスイッチ225は、容量可変バッファ215Cに格納した制御データをCPU222に送信する。CPU222は、制御データを受信すると、バッファ222Aに格納してからPCIeスイッチ225にACKを返す。
PCIeスイッチ225からACKを受信したPCIeスイッチ215は、容量可変バッファ215Cを空にする。その後、PCIeスイッチ215は、CPU212からダミーデータを受信する。そして、PCIeスイッチ215は、受信したダミーデータを容量可変バッファ215Cに格納してからCPU212にACKを返す。
CPU222からACKを受信したPCIeスイッチ225は、容量可変バッファ225Cを空にする。その後、PCIeスイッチ225は、PCIeスイッチ215からダミーデータを受信する。そして、PCIeスイッチ225は、受信したダミーデータを容量可変バッファ225Cに格納してからPCIeスイッチ215にACKを返す。
CPU212は、データ#1、…、データ#N、制御データ、2つのダミーデータの全てについてACKを受信した後、サーバ100に対して書込み完了を示す応答を返す。CPU222は、受信したダミーデータを破棄する。
上記のように、容量可変バッファ215C、225Cを適切なサイズに設定し、制御データに続いて2つのダミーデータを順次送信することで、各バッファから各データが突き出される形で転送されるため、制御データ以前のデータについて到達保証ができる。つまり、最後のダミーデータについてCPU212がACKを受信した時点で制御データがCPU222に到達していることになり、そのデータ以前のデータが到達保証される。
[3−2.シーケンス]
次に、図12〜図17を参照しながら、第2実施形態の一変形例に係るストレージシステムにおける書込み処理のシーケンスについて、さらに説明する。
(ライトデータの伝送)
まず、図12を参照する。図12は、第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第1のシーケンス図である。図13は、第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第2のシーケンス図である。なお、図12の線上に付したa〜eは、図13の線上に付したa〜eに接続される。
(S201)サーバ100は、CM201に対してデータの書込み要求(Request(W))を送信する。サーバ100から送信された書込み要求は、FCコントローラ214により受信され、PCIeスイッチ215を介してCPU212に入力される。書込み要求を受けたCPU212は、CM202のCPU222に書込み対象のデータ(ユーザデータ)を送信するCM間通信の処理を開始する。
(S202)CPU212は、ユーザデータを分割した分割データの格納に適したサイズ(例えば、12KByte)を指定し、指定したサイズにバッファサイズを制御するコマンド(BufCMD)をPCIeスイッチ215に送信する。
(S203)PCIeスイッチ215は、CPU212から受信したBufCMDに応じて、BufCMDで指定されたサイズに容量可変バッファ215Cのサイズ(Buffer size)を変更する。
(S204)PCIeスイッチ215は、容量可変バッファ215Cのサイズ変更が完了した旨の応答(BufFNSH)をCPU212に返す。
(S205)CPU212は、ユーザデータに付加するヘッダを生成する。例えば、CPU212は、データ区間と制御区間と(図5を参照)を区別するタグ情報を含むヘッダ#1を生成する。
(S206)CPU212は、ユーザデータを分割し、予め設定された単位サイズ(例えば、128Byte)を有する分割データを生成する。そして、CPU212は、S205で生成したヘッダ#1を各分割データに付加する。なお、以下の説明では、分割データを単にユーザデータと呼ぶ場合がある。
(S207)CPU212は、S206で生成した分割データ(Data)を順次PCIeスイッチ215に送信する。
(S208)PCIeスイッチ215は、CPU212から受信したデータがユーザデータであるか否かを判定する。例えば、PCIeスイッチ215は、受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1にデータ区間を示すタグ情報を含む場合にはユーザデータであると判定する。S207でCPU212から送信されたデータは分割データであるから、PCIeスイッチ215は、このデータをユーザデータであると判定する。
(S209)PCIeスイッチ215は、CPU212から受信した分割データを容量可変バッファ215C(V−Buffer)に格納する。
(S210)PCIeスイッチ215は、分割データの受信を完了した旨の確認応答(ACK)をCPU212に返す。このACKを受けてCPU212は次の分割データをPCIeスイッチ215に送信する。そして、次の分割データについて、前述した図7の符号Aを付した範囲と同じ処理が実行される。なお、説明の都合上、図13に符号Aの範囲を示しているが、S210のACK後に順次分割データについて当該処理が実行される。
(S211)PCIeスイッチ215は、分割データの格納に適したサイズ(例えば、12KByte)を指定し、指定したサイズにバッファサイズを制御するBufCMDをPCIeスイッチ225に転送する。
(S212)PCIeスイッチ225は、PCIeスイッチ215から受信したBufCMDに応じて、BufCMDで指定されたサイズに容量可変バッファ225Cのサイズ(Buffer size)を変更する。
(S213)PCIeスイッチ225は、容量可変バッファ225Cのサイズ変更が完了した旨の応答(BufFNSH)をPCIeスイッチ215に返す。
(S214)PCIeスイッチ215は、容量可変バッファ215Cに格納した分割データをPCIeスイッチ225に送信する。
(S215)PCIeスイッチ225は、PCIeスイッチ215から受信したデータがユーザデータであるか否かを判定する。例えば、PCIeスイッチ225は、受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1にデータ区間を示すタグ情報を含む場合にはユーザデータであると判定する。S214でPCIeスイッチ215から送信されたデータは分割データであるから、PCIeスイッチ225は、受信したデータをユーザデータであると判定する。
(S216)PCIeスイッチ225は、PCIeスイッチ215から受信した分割データを容量可変バッファ225C(V−Buffer)に格納する。
(S217)PCIeスイッチ225は、分割データの受信を完了した旨の確認応答(ACK)をPCIeスイッチ215に返す。このACKを受けてPCIeスイッチ215は容量可変バッファ215Cにある次の分割データをPCIeスイッチ225に送信する。
(S218)PCIeスイッチ225は、容量可変バッファ225Cに格納した分割データをCPU222に送信する。
(S219)CPU222は、PCIeスイッチ225から受信した分割データをバッファ222Aに格納する。
(S220)CPU222は、分割データの受信を完了した旨の確認応答(ACK)をPCIeスイッチ225に返す。このACKを受けてPCIeスイッチ225は容量可変バッファ225Cにある次の分割データをCPU222に送信する。なお、符号Aの範囲にある処理が全ての分割データについて実行される。
(制御データ・ダミーデータの伝送)
次に、図14を参照する。CPU212は、全ての分割データをPCIeスイッチ215に送信した後、制御データ及びダミーデータの送信を開始する。そして、処理は、図14のS221へと進む。
以下、図14〜図17を順次参照する。図14は、第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第3のシーケンス図である。図15は、第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第4のシーケンス図である。図16は、第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第5のシーケンス図である。図17は、第2実施形態の一変形例に係るCM間通信及びサーバへの応答に関する処理の流れを示した第6のシーケンス図である。
なお、図14の線上に付したa〜eは、図15の線上に付したa〜eに接続され、図15の線上に付したf〜jは、図16の線上に付したf〜jに接続され、図16の線上に付したk〜oは、図17の線上に付したk〜oに接続される。
(S221)CPU212は、制御データのデータ長以下のサイズ(例えば、128Byte)を指定したBufCMDをPCIeスイッチ215に送信する。
(S222)PCIeスイッチ215は、CPU212から受信したBufCMDに応じて、BufCMDで指定されたサイズに容量可変バッファ215Cのサイズ(Buffer size)を変更する。
(S223)PCIeスイッチ215は、容量可変バッファ215Cのサイズ変更が完了した旨の応答(BufFNSH)をCPU212に返す。
(S224)CPU212は、ユーザデータの書込み先に関する情報を含む制御データ(Ctrl data)と、CPU212、222間に介在する中継デバイスの数と同数のダミーデータ(Dmy data)とを生成する。この例では、2つのダミーデータ(Dmy1 data、Dmy2 data)が生成される。
(S225)CPU212は、制御データ、及びダミーデータに付加するヘッダを生成する。例えば、CPU212は、データ区間と制御区間と(図5を参照)を区別するタグ情報を含むヘッダ#1を生成する。また、CPU212は、制御データとダミーデータとを区別するタグ情報を含むヘッダ#2を生成する(図4及び図6を参照)。そして、CPU212は、ヘッダ#1、#2を制御データ及びダミーデータに付加する。
(S226)CPU212は、制御データをPCIeスイッチ215に送信する。
(S227)PCIeスイッチ215は、CPU212から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。例えば、PCIeスイッチ215は、CPU212から受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1に制御区間を示すタグ情報を含む場合には制御区間のデータであると判定する。S226でCPU212から送信されたデータは制御データであるから、PCIeスイッチ215は、このデータを制御区間のデータであると判定する。
(S228)PCIeスイッチ215は、CPU212から受信したデータが制御データ(Ctrl data)であるか否かを判定する。例えば、PCIeスイッチ215は、CPU212から受信したデータに付加されているヘッダ#2を参照し、ヘッダ#2に制御データを示すタグ情報を含む場合には制御データであると判定する。S226でCPU212から送信されたデータは制御データであるから、PCIeスイッチ215は、このデータを制御データであると判定する。
(S229)PCIeスイッチ215は、CPU212から受信した制御データを容量可変バッファ215C(V−Buffer)に格納する。
(S230)PCIeスイッチ215は、制御データの受信を完了した旨の確認応答(ACK)をCPU212に返す。
(S231)PCIeスイッチ215は、制御データのデータ長以下のサイズ(例えば、128Byte)を指定したBufCMDをPCIeスイッチ225に転送する。
(S232)PCIeスイッチ225は、PCIeスイッチ215から受信したBufCMDに応じて、BufCMDで指定されたサイズに容量可変バッファ225Cのサイズ(Buffer size)を変更する。
(S233)PCIeスイッチ225は、容量可変バッファ225Cのサイズ変更が完了した旨の応答(BufFNSH)をPCIeスイッチ215に返す。
(S234)PCIeスイッチ215は、容量可変バッファ215Cに格納した制御データをPCIeスイッチ225に送信する。
(S235)PCIeスイッチ225は、PCIeスイッチ215から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。例えば、PCIeスイッチ225は、PCIeスイッチ215から受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1に制御区間を示すタグ情報を含む場合には制御区間のデータであると判定する。S234でPCIeスイッチ215から送信されたデータは制御データであるから、PCIeスイッチ225は、このデータを制御区間のデータであると判定する。
(S236)PCIeスイッチ225は、PCIeスイッチ215から受信したデータが制御データ(Ctrl data)であるか否かを判定する。例えば、PCIeスイッチ225は、PCIeスイッチ215から受信したデータに付加されているヘッダ#2を参照し、ヘッダ#2に制御データを示すタグ情報を含む場合には制御データであると判定する。S234でPCIeスイッチ215から送信されたデータは制御データであるから、PCIeスイッチ225は、このデータを制御データであると判定する。
(S237)PCIeスイッチ225は、PCIeスイッチ215から受信した制御データを容量可変バッファ225C(V−Buffer)に格納する。
(S238)PCIeスイッチ225は、制御データの受信を完了した旨の確認応答(ACK)をPCIeスイッチ215に返す。
(S239)PCIeスイッチ225は、容量可変バッファ225Cに格納した制御データをCPU222に送信する。
(S240)CPU222は、PCIeスイッチ225から受信したデータのヘッダ#1、#2を参照して、そのデータが制御データであることを確認し、その制御データをバッファ222Aに格納する。
(S241)CPU222は、制御データの受信を完了した旨の確認応答(ACK)をPCIeスイッチ225に返す。
(S242)CPU222からACKを受けたPCIeスイッチ225は、容量可変バッファ225Cを空にする(V−Buffer clear)。
(S243)S238でPCIeスイッチ225から送信されたACKを受けたPCIeスイッチ215は、容量可変バッファ215Cを空にする(V−Buffer clear)。
(S244)PCIeスイッチ215は、CPU212からダミーデータ(Dmy1 data)を受信する。
(S245)PCIeスイッチ215は、CPU212から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。例えば、PCIeスイッチ215は、CPU212から受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1に制御区間を示すタグ情報を含む場合には制御区間のデータであると判定する。S244でCPU212から送信されたデータはダミーデータであるから、PCIeスイッチ215は、このデータを制御区間のデータであると判定する。
(S246)PCIeスイッチ215は、CPU212から受信したデータがダミーデータ(Dmy data)であるか否かを判定する。例えば、PCIeスイッチ215は、CPU212から受信したデータに付加されているヘッダ#2を参照し、ヘッダ#2にダミーデータを示すタグ情報を含む場合にはダミーデータであると判定する。S244でCPU212から送信されたデータはダミーデータであるから、PCIeスイッチ215は、このデータをダミーデータであると判定する。
(S247)PCIeスイッチ215は、CPU212から受信したダミーデータを容量可変バッファ215C(V−Buffer)に格納する。
(S248)PCIeスイッチ215は、ダミーデータの受信を完了した旨の確認応答(ACK)をCPU212に返す。
(S249)PCIeスイッチ215は、容量可変バッファ215Cに格納したダミーデータ(Dmy1 data)をPCIeスイッチ225に送信する。
(S250)PCIeスイッチ225は、PCIeスイッチ215から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。例えば、PCIeスイッチ225は、PCIeスイッチ215から受信したデータに付加されているヘッダ#1を参照し、ヘッダ#1に制御区間を示すタグ情報を含む場合には制御区間のデータであると判定する。S249でPCIeスイッチ215から送信されたデータはダミーデータであるから、PCIeスイッチ225は、このデータを制御区間のデータであると判定する。
(S251)PCIeスイッチ225は、PCIeスイッチ215から受信したデータがダミーデータ(Dmy data)であるか否かを判定する。例えば、PCIeスイッチ225は、PCIeスイッチ215から受信したデータに付加されているヘッダ#2を参照し、ヘッダ#2にダミーデータを示すタグ情報を含む場合にはダミーデータであると判定する。S249でPCIeスイッチ215から送信されたデータはダミーデータであるから、PCIeスイッチ225は、このデータをダミーデータであると判定する。
(S252)PCIeスイッチ225は、PCIeスイッチ215から受信したダミーデータを容量可変バッファ225C(V−Buffer)に格納する。
(S253)PCIeスイッチ225は、ダミーデータの受信を完了した旨の確認応答(ACK)をPCIeスイッチ215に返す。
(S254)PCIeスイッチ225は、容量可変バッファ225Cに格納したダミーデータ(Dmy1 data)をCPU222に送信する。
(S255)CPU222は、PCIeスイッチ225から受信したデータのヘッダ#1、#2を参照して、そのデータがダミーデータであるかを判定する。S254でPCIeスイッチ225から送信されたデータはダミーデータであるから、CPU222は、このデータをダミーデータであると判定する。
(S256)CPU222は、ダミーデータを破棄(Delete)する。
(S257)CPU222は、ダミーデータの受信を完了した旨の確認応答(ACK)をPCIeスイッチ225に返す。
(S258)CPU222からACKを受けたPCIeスイッチ225は、容量可変バッファ225Cを空にする(V−Buffer clear)。
(S259)S253でPCIeスイッチ225から送信されたACKを受けたPCIeスイッチ215は、容量可変バッファ215Cを空にする(V−Buffer clear)。
(S260)PCIeスイッチ215は、CPU212からダミーデータ(Dmy2 data)を受信する。
(S261)PCIeスイッチ215は、CPU212から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。S260でCPU212から送信されたデータはダミーデータであるから、PCIeスイッチ215は、このデータを制御区間のデータであると判定する。
(S262)PCIeスイッチ215は、CPU212から受信したデータがダミーデータ(Dmy data)であるか否かを判定する。S260でCPU212から送信されたデータはダミーデータであるから、PCIeスイッチ215は、このデータをダミーデータであると判定する。
(S263)PCIeスイッチ215は、CPU212から受信したダミーデータを容量可変バッファ215C(V−Buffer)に格納する。
(S264)PCIeスイッチ215は、ダミーデータの受信を完了した旨の確認応答(ACK)をCPU212に返す。
(S265)CPU212は、最後に送信したダミーデータ(Dmy2 data)に対するACK(S264を参照)に応じて、ユーザデータの書込みを完了した旨の完了応答(Response)をサーバ100に送信する。
S240で制御データがCPU222のバッファ222Aに格納され、これに応じてS241でACKがPCIeスイッチ225に返され、PCIeスイッチ225の容量可変バッファ225Cが空にされた。この処理を受けて、S249で1つ目のダミーデータがPCIeスイッチ225により受信され、S252で空の容量可変バッファ225Cにダミーデータが格納されて、S253でPCIeスイッチ215にACKが返された。
S253のACKを受けて容量可変バッファ215Cが空にされ、S260で2つ目のダミーデータがPCIeスイッチ215により受信され、S263で空の容量可変バッファ215Cにダミーデータが格納され、S264でCPU212にACKが返された。したがって、S264で返されたACKをCPU212が受けた時点で、CPU222のバッファ222Aに制御データが格納されたことが保証される。つまり、S265の完了応答は、CM間通信におけるユーザデータ及び制御データの到達保証を前提とする信頼性の高いものである。
(S266)PCIeスイッチ215は、容量可変バッファ215Cに格納したダミーデータ(Dmy2 data)をPCIeスイッチ225に送信する。
(S267)PCIeスイッチ225は、PCIeスイッチ215から受信したデータが制御区間(Ctrl section)のデータであるか否かを判定する。S266でPCIeスイッチ215から送信されたデータはダミーデータであるから、PCIeスイッチ225は、このデータを制御区間のデータであると判定する。
(S268)PCIeスイッチ225は、PCIeスイッチ215から受信したデータがダミーデータ(Dmy data)であるか否かを判定する。S266でPCIeスイッチ215から送信されたデータはダミーデータであるから、PCIeスイッチ225は、このデータをダミーデータであると判定する。
(S269)PCIeスイッチ225は、PCIeスイッチ215から受信したダミーデータを容量可変バッファ225C(V−Buffer)に格納する。
(S270)PCIeスイッチ225は、ダミーデータの受信を完了した旨の確認応答(ACK)をPCIeスイッチ215に返す。
(S271)PCIeスイッチ225は、容量可変バッファ225Cに格納したダミーデータ(Dmy2 data)をCPU222に送信する。
(S272)CPU222は、PCIeスイッチ225から受信したデータのヘッダ#1、#2を参照して、そのデータがダミーデータであるかを判定する。S271でPCIeスイッチ225から送信されたデータはダミーデータであるから、CPU222は、このデータをダミーデータであると判定する。
(S273)CPU222は、ダミーデータを破棄(Delete)する。
(S274)CPU222は、ダミーデータの受信を完了した旨の確認応答(ACK)をPCIeスイッチ225に返す。S274の処理が完了すると、図12〜図17に示した一連の処理は終了する。
以上、第2実施形態の一変形例に係るストレージシステムにおける書込み処理のシーケンスについて説明した。上記のように、CPU212、222間に介在する中継デバイスの数と同数のダミーデータを送信すること、制御データの送信前に容量可変バッファ215C、225Cを制御データのデータ長以下にすることで、ユーザデータ及び制御データの到達保証ができる。そして、最後に送信したダミーデータの確認応答を待ってサーバ100に書込み処理の完了応答を返すことで、CM間通信の到達保証を伴う信頼性の高い処理を実現できる。
以上、第2実施形態について説明した。
上記の説明では、PCIeスイッチを介して接続されたCM間の通信を想定していたが、SASやInfinibandなどの接続形態で接続されたプロセッサ間の通信にも応用可能である。また、中継デバイスの数を1以上の任意の数に変更した場合でも同様に上述した技術を適用することができる。こうした応用例についても第2実施形態の技術的範囲に属する。
10 上位装置
20 ストレージ制御装置
21 第1の制御部
21a 送信部
21b 応答部
22、23 転送部
22a、23a 通信部
22b、23b 記憶部
24 第2の制御部
30 記憶装置
WD ライトデータ
TD 付加データ
DD1、DD2 ダミーデータ

Claims (5)

  1. 第1及び第2の制御部と、前記第1の制御部から前記第2の制御部へデータが伝送される経路上にあって該データを転送する転送部とを有するストレージ制御装置であって、
    前記第1の制御部は、
    上位装置からライトデータの書込み要求を受け付け、前記ライトデータと、書込み先に関する付加データと、前記転送部の数と同数のダミーデータとを、前記ライトデータ、前記付加データ、前記ダミーデータの順で送信する送信部と、
    最後に送信された前記ダミーデータに対する確認応答を送信先の前記転送部から受信した後で前記上位装置に書込みの完了を通知する応答部とを有し、
    前記転送部は、
    前記付加データのデータ長以下、かつ前記ダミーデータのデータ長以下のサイズを有し、前記付加データ及び前記ダミーデータを格納するためのバッファ領域を含む記憶部と、
    受信した前記付加データを前記バッファ領域に格納した後で該付加データに対する確認応答を送信元に送信し、受信した前記ダミーデータを前記バッファ領域に格納した後で該ダミーデータに対する確認応答を前記送信元に送信する通信部とを有する
    ストレージ制御装置。
  2. 前記通信部は、
    受信した前記付加データに対する確認応答を前記送信元に送信し、転送した該付加データに対する確認応答を転送先から受信した場合に前記バッファ領域を空にし、
    受信した前記ダミーデータを空の前記バッファ領域に格納した後で該ダミーデータに対する確認応答を前記送信元に送信し、転送した該ダミーデータに対する確認応答を前記転送先から受信した場合に前記バッファ領域を空にする
    請求項1に記載のストレージ制御装置。
  3. 前記バッファ領域は、前記ライトデータの格納にも用いられ、
    前記送信部は、
    前記ライトデータを送信する前に前記バッファ領域のサイズを該ライトデータを格納可能なサイズに制御する第1の制御命令を送信し、
    前記付加データを送信する前に前記バッファ領域のサイズを該付加データの格納用に設定されたサイズに制御する第2の制御命令を送信する
    請求項1に記載のストレージ制御装置。
  4. 前記バッファ領域のサイズは固定され、前記転送部は、前記バッファ領域とは別に前記ライトデータを格納するための他のバッファ領域をさらに有する
    請求項1に記載のストレージ制御装置。
  5. 前記送信部は、前記付加データ及び前記ダミーデータそれぞれに対し、前記ライトデータに付加されるデータであることを示す第1のヘッダ情報と、前記付加データと前記ダミーデータとを区別するための第2のヘッダ情報とを付加し、
    前記第2の制御部は、前記第1のヘッダ情報に基づいて前記ライトデータの後に受信した前記付加データ及び前記ダミーデータを判別し、前記第2のヘッダ情報に基づいて該付加データの後に受信した前記ダミーデータを判別し、判別した該ダミーデータを破棄する
    請求項1に記載のストレージ制御装置。
JP2015158687A 2015-08-11 2015-08-11 ストレージ制御装置 Active JP6554989B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015158687A JP6554989B2 (ja) 2015-08-11 2015-08-11 ストレージ制御装置
US15/201,965 US9990284B2 (en) 2015-08-11 2016-07-05 Storage control device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015158687A JP6554989B2 (ja) 2015-08-11 2015-08-11 ストレージ制御装置

Publications (2)

Publication Number Publication Date
JP2017037500A JP2017037500A (ja) 2017-02-16
JP6554989B2 true JP6554989B2 (ja) 2019-08-07

Family

ID=57994637

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015158687A Active JP6554989B2 (ja) 2015-08-11 2015-08-11 ストレージ制御装置

Country Status (2)

Country Link
US (1) US9990284B2 (ja)
JP (1) JP6554989B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108388405B (zh) * 2017-02-02 2021-11-30 慧荣科技股份有限公司 数据储存装置以及其操作方法
US20180239725A1 (en) * 2017-02-17 2018-08-23 Intel Corporation Persistent Remote Direct Memory Access

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3451103B2 (ja) * 1992-11-27 2003-09-29 富士通株式会社 データ通信装置及び方法
US5592432A (en) * 1995-09-05 1997-01-07 Emc Corp Cache management system using time stamping for replacement queue
US6708233B1 (en) * 1999-03-25 2004-03-16 Microsoft Corporation Method and apparatus for direct buffering of a stream of variable-length data
KR100568232B1 (ko) * 2003-07-28 2006-04-07 삼성전자주식회사 모바일 애드 혹 네트워크에서 전송층을 이용한 효율적인데이터 송수신 방법 및 상기 방법을 이용한 네트워크 장치
JP2008033538A (ja) * 2006-07-27 2008-02-14 Fujitsu Ten Ltd データ転送制御装置および電子機器
JP2009053946A (ja) * 2007-08-27 2009-03-12 Toshiba Corp 二重化コントーラ構成ブロックデバイス制御装置
JP2010033125A (ja) * 2008-07-25 2010-02-12 Hitachi Ltd ストレージ装置及びデータ転送方法
JP2010250665A (ja) * 2009-04-17 2010-11-04 Toshiba Corp PCIExpressのTLP処理回路、及びこれを備える中継デバイス

Also Published As

Publication number Publication date
JP2017037500A (ja) 2017-02-16
US20170046258A1 (en) 2017-02-16
US9990284B2 (en) 2018-06-05

Similar Documents

Publication Publication Date Title
US10852959B2 (en) Data storage system, process and computer program for such data storage system for reducing read and write amplifications
US10860555B2 (en) Method and apparatus for two tier data deduplication using weighted graphs
US20190220191A1 (en) Primary Data Storage System with Quality of Service
US20190278719A1 (en) Primary Data Storage System with Data Tiering
US10146436B1 (en) Efficiently storing low priority data in high priority storage devices
US10929042B2 (en) Data storage system, process, and computer program for de-duplication of distributed data in a scalable cluster system
KR101912553B1 (ko) 기입 데이터 요청 처리 방법과 저장소 어레이
US10956393B2 (en) Data storage system and process for providing distributed storage in a scalable cluster system and computer program for such data storage system
US9910800B1 (en) Utilizing remote direct memory access (‘RDMA’) for communication between controllers in a storage array
WO2011025967A2 (en) Apparatus, system, and method for improved data deduplication
CN106933504B (zh) 用于提供存储系统的访问的方法和系统
CN104272263A (zh) 用于执行去重复操作的碎片控制
KR101716264B1 (ko) 데이터 중복제거 방법 및 스토리지 어레이
US8527725B2 (en) Active-active remote configuration of a storage system
WO2019047026A1 (zh) 数据迁移的方法、系统及智能网卡
US9442672B2 (en) Replicating data across controllers
JP6554989B2 (ja) ストレージ制御装置
US20190324674A1 (en) Multi-granular data reduction for remote data replication
JP4773788B2 (ja) 記憶システムにおけるリモートコピー制御
JP6135226B2 (ja) 情報処理装置、情報処理方法、ストレージシステム及びコンピュータプログラム
JP2017041181A (ja) ストレージシステム、ストレージ制御装置、及びストレージ制御方法
US11467906B2 (en) Storage system resource rebuild based on input-output operation indicator
US10506042B2 (en) Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto
US20200334103A1 (en) Storage system, drive housing thereof, and parity calculation method
US9335949B1 (en) System and method for deferring invalidation of inodes of a volume during volume invalidation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190312

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190510

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190510

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190510

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190624

R150 Certificate of patent or registration of utility model

Ref document number: 6554989

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150