JP6825263B2 - ストレージ制御装置、およびストレージシステム - Google Patents

ストレージ制御装置、およびストレージシステム Download PDF

Info

Publication number
JP6825263B2
JP6825263B2 JP2016161703A JP2016161703A JP6825263B2 JP 6825263 B2 JP6825263 B2 JP 6825263B2 JP 2016161703 A JP2016161703 A JP 2016161703A JP 2016161703 A JP2016161703 A JP 2016161703A JP 6825263 B2 JP6825263 B2 JP 6825263B2
Authority
JP
Japan
Prior art keywords
request
storage
write request
cpu
specified
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
JP2016161703A
Other languages
English (en)
Other versions
JP2018032061A (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 JP2016161703A priority Critical patent/JP6825263B2/ja
Publication of JP2018032061A publication Critical patent/JP2018032061A/ja
Application granted granted Critical
Publication of JP6825263B2 publication Critical patent/JP6825263B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Description

本発明は、ストレージ制御装置、およびストレージシステムに関する。
従来、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の複数の記憶装置を格納した筐体を複数搭載して、ホスト装置へ記憶装置の記憶領域を提供するストレージシステムがある。また、このようなストレージシステムでは、ホスト装置と記憶装置との間のアクセス制御を行うストレージ制御装置が複数設けられることがある。
先行技術としては、例えば、データの書き込みが指示された場合に、ローカルキャッシュとミラーキャッシュへデータを書き込み、また、プライマリディスクへローカルキャッシュのデータを書き込むとともに、セカンダリディスクへミラーキャッシュのデータを書き込むものがある。また、複数のRAID(Redundant Array of Inexpensive Disks)コントローラが、複数のホスト・コンピュータに共用ストレージ・デバイスへの読取り/書込みアクセスを提供するRAIDシステムでキャッシュ・コヒーレンシを提供するためのものがある。
国際公開第2004/114115号 特表2004−538532号公報
しかしながら、従来技術では、複数のストレージ制御装置を含むストレージシステムにおいて、ホスト装置からのライトリクエストに対する応答時間が増大する場合がある。例えば、ホスト装置からのデータのストレージ制御装置間の転送処理に時間がかかり、ライトリクエストに対する応答時間が増大する場合がある。
一つの側面では、本発明は、ライトリクエストに対する応答時間の増加を抑制することを目的とする。
本発明の一態様によれば、ホスト装置からリクエストを受け付けるインターフェースと、前記インターフェースに直接接続される、内部の回路を再構成可能な集積回路または専用の集積回路と、を有し、前記集積回路が、前記インターフェースから前記リクエストを受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、受け付けた前記リクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、特定した前記論理アドレスを宛先に設定して、受け付けた前記リクエストを転送するストレージ制御装置が提案される。
本発明の一態様によれば、複数のストレージ制御装置を含むストレージシステムであって、前記複数のストレージ制御装置のうちのいずれかのストレージ制御装置が、ホスト装置からリクエストを受け付けるインターフェースと、前記インターフェースから前記リクエストを受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、受け付けた前記リクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、特定した前記論理アドレスを宛先に設定して、受け付けた前記リクエストを転送する、内部の回路を再構成可能な集積回路または専用の集積回路と、を有するストレージシステムが提案される。
本発明の一側面によれば、ライトリクエストに対する応答時間の増加を抑制することができる。
図1は、実施の形態にかかるストレージ制御方法の一実施例を示す説明図である。 図2は、CM#iのハードウェア構成例を示すブロック図である。 図3は、対応情報リスト300の具体例を示す説明図である。 図4は、CM#iのFPGA#iの機能的構成例を示すブロック図である。 図5は、ライトリクエスト時のストレージシステム100の動作例を示す説明図である。 図6は、ライトリクエスト時のアドレス変換例を示す説明図である。 図7Aは、ストレージシステム100のライトリクエスト処理手順の一例を示すシーケンス図(その1)である。 図7Bは、ストレージシステム100のライトリクエスト処理手順の一例を示すシーケンス図(その2)である。 図8は、ストレージシステム100のリードリクエスト処理手順の一例を示すシーケンス図である。 図9は、FPGA#iのリクエスト処理の具体的処理手順の一例を示すフローチャートである。
以下に図面を参照して、本発明にかかるストレージ制御装置、およびストレージシステムの実施の形態を詳細に説明する。
(実施の形態)
図1は、実施の形態にかかるストレージ制御方法の一実施例を示す説明図である。図1において、ストレージシステム100は、CE(Controller Enclosure)$0,$1と、DE(Device Enclosure)$0,$1と、を含む。ストレージシステム100は、例えば、RAID5,6等のデータを冗長化して記憶するRAID構成のシステムである。
CE$0は、CM(Controller Module)#0,#1を有する。CE$1は、CM#2,#3を有する。各CM#0〜#3は、自配下のストレージに対するアクセスを制御するストレージ制御装置の一例である。各CM#0〜#3は、FRT(Front End Router)110を介して、互いに通信可能に接続される。
なお、CM#0〜#3のハードウェア構成例については、図2を用いて後述する。
FRT110は、FRT−SW(switch)111を有し、CM間を互いに通信可能に接続する接続部の一例である。FRT110は、例えば、PCIe(Peripheral Component Interconnect Express)に準拠したアダプタを複数有し、各CM#0〜#3とPCIeに対応したケーブル等によって接続されてもよい。
なお、図1では、CM間を接続するFRTとして、FRT110のみ表記したが、2以上のFRTにより冗長化されていてもよい。
また、CM#0〜#3には、ホスト装置120が接続される。CM#0〜#3とホスト装置120は、例えば、FC(Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して接続される。また、CM#0〜#3とホスト装置120は、LAN(Local Area Network)やインターネット等を介して接続されることにしてもよい。
なお、図1では、1台のホスト装置120がCM#0〜#3に接続される場合を例に挙げて説明したが、これに限らない。例えば、複数台のホスト装置のそれぞれが、CM#0〜#3のうちの1以上のCMに接続されることにしてもよい。
DE$0,$1は、複数の記憶装置Dを有する。記憶装置Dは、例えば、HDDやSSDなどであってもよく、また、論理的な記憶装置である論理ユニット(LU:Logical Unit)であってもよい。なお、図1では、DE$0,$1が記憶装置Dを有することにしたが、例えば、CE$0,$1が記憶装置Dを有することにしてもよい。
CM#0,#1には、DE$0が接続される。CM#0,#1は、ホスト装置120または他のCMからのリクエストに応じて、DE$0に搭載された記憶装置Dに対するアクセスを制御する。図1の例では、DE$0には、CM#0が担当するRAIDグループRG0〜RG3と、CM#1が担当するRAIDグループRG4〜RG7と、が含まれる。RAIDグループは、複数の記憶装置Dをまとめて一つの記憶装置としたものである。この場合、例えば、CM#0は、ホスト装置120または他のCMからのリクエストに応じて、RAIDグループRG0〜RG3に対するアクセスを制御する。
また、CM#2,#3には、DE$1が接続される。CM#2,#3は、ホスト装置120または他のCMからのリクエストに応じて、DE$1に搭載された記憶装置Dに対するアクセスを制御する。図1の例では、DE$1には、CM#2が担当するRAIDグループRG0〜RG3と、CM#3が担当するRAIDグループRG4〜RG7と、が含まれる。この場合、例えば、CM#2は、ホスト装置120または他のCMからのリクエストに応じて、RAIDグループRG0〜RG3に対するアクセスを制御する。
なお、CE$0とDE$0は、例えば、1つの筐体に搭載されるストレージ装置として実現される。同様に、CE$1とDE$1は、1つの筐体に搭載されるストレージ装置として実現される。また、ストレージシステム100に含まれるCEの数は2台に限定されるものではなく、各CEに含まれるCMの数も2台に限定されるものではない。
ここで、従来のストレージシステムでは、ライトリクエスト時に、ホスト装置からRAID演算するデータを、当該RAID演算を担当する第1のCM(以下、「担当CM」という)に転送後、転送したデータを第2のCM(以下、「ミラーCM」という)のメモリにコピー(ミラーリング)することで、データの冗長化を行っている。
しかし、冗長化完了をもってホスト装置へ応答を返すため、ライトリクエストに対する応答時間がその分増加する。なお、RAID演算は、例えば、ホスト装置120からリクエスト(ライトリクエスト、リードリクエスト)に応じて行われるデータの分割、パリティ計算等を含む。
一方で、ホスト装置からRAID演算するデータを担当CMに転送するにあたり、物理的な接続関係が要因となって、他のCMを経由することがある。この際、ホスト装置からデータを受け取ったCM(以下、「レシーブCM」という)は、当該データから担当CMを判断して、担当CMに転送するため、レシーブCMが担当CMである場合に比べて、ライトリクエストに対する応答時間が増加する。
具体的には、例えば、レシーブCMが、ホスト装置からデータを受信すると、当該データをメモリに一旦格納する。そして、レシーブCMのCPU(Central Processing Unit)が、メモリに格納したデータを解析して、どのCMでRAID演算するものであるかを判断し、担当CMに当該データを転送する。
担当CMは、レシーブCMからデータを受信すると、当該データをメモリに格納する。そして、担当CMのCPUが、メモリに格納したデータを解析して、どのCMにコピー(ミラーリング)するのかを判断し、ミラーCMに当該データ(コピーデータ)を転送する。また、担当CMは、ミラーCMからミラーリング処理の完了を受けると、レシーブCMを介して、ホスト装置に応答を返す。
このように、従来のストレージシステムでは、ホスト装置から受信したデータは、一旦メモリに格納してからCPUが処理するようになっている。したがって、レシーブCMが担当CMでなくても、ホスト装置から受信したデータは一旦メモリに格納され、メモリアクセスにかかる処理負荷や処理時間がかかる。
なお、レシーブCMを経由せずにPCIeツリー外のCA(Channel Adapter)にアクセスする場合、ホスト装置からのライトリクエスト時に、CAから全CMに対し、割り込みとしてライトリクエストをブロードキャストすることで、ホスト装置からのライトリクエストを担当CMが直接受信できるようにすることが考えられる。
ライトリクエストのパケットの中にはデータのLUN(Logical Unit Number)、LBA(Logical Block Addressing)、サイズの情報が格納されている。このため、各CMは受け取ったライトリクエストの内容を確認して、DMA(Direct Memory Access)を指示する。また、ホスト装置からのライトデータもブロードキャストする場合、全てのCMに全てのCAから送信されるデータを格納するキャッシュ域を準備すれば、ミラーリングも可能である。
ところが、CMが多数の場合、例えば、24CM構成になると、割込頻度が24倍となり、各CMの割込(例外)処理が増える。割込処理はRAID演算などの通常動作を止めて実施するため、割込が増えた場合はシステムの性能ダウンを引き起こしてしまう。また、CAが増えると、ホスト装置からのライトデータを格納する領域(数)も増えるため、システム資源の無駄が多くなる。
そこで、本実施の形態では、レシーブCMにおいて、FPGA(Field Programmable Gate Array)や専用LSI(Large−Scale Integration)などの集積回路を用いて、CPUやメモリを介さずに、ホスト装置120からのリクエストを解析して転送先を特定し、担当CMやミラーCMへのデータ転送を行うことで、ホスト装置120からのリクエストに対する応答時間の増加を抑制する。
(CM#0〜#3のハードウェア構成例)
つぎに、CM#0〜#3のハードウェア構成例について説明する。以下の説明では、CM#0〜#3のうちの任意のCMを「CM#i」と表記する場合がある(i=0,1,2,3)。
図2は、CM#iのハードウェア構成例を示すブロック図である。図2において、CM#iは、CPU#iと、MEM(Memory)#iと、IOC(Input/Output Controller)#iと、CA#iと、FPGA#iと、SW#iと、を含む。各構成部は、バスによってそれぞれ接続される。
CPU#iは、CM#iの全体の制御を司る。CPU#iは、DMAの機能を有する。DMAは、例えば、PCIeバスから直接(CPU#iの演算を介さずに)MEM#iにリード、ライトする技術である。なお、ここではCPU#iがDMAの機能を有することにしたが、CPU#iとは別に、DMA転送における通信を制御するDMAコントローラを有することにしてもよい。
MEM#iは、データやプログラムを格納する。MEM#iは、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU#iのワークエリアとして使用される。MEM#iに記憶されるプログラムは、CPU#iにロードされることで、コーディングされている処理をCPU#iに実行させる。MEM#iは、データやプログラムを一時的に記憶するキャッシュメモリとしても用いられてもよい。
IOC#iは、記憶装置Dへのアクセス(I/O)を制御するI/O制御部である。CA#iは、ホスト装置120と通信するためのインターフェースである。CA#iは、例えば、LAN、SAN、FC等に準拠したアダプタを有する。FPGA#iは、内部の回路を再構成可能な集積回路である。SW#iは、他のCMと通信するためのインターフェースである。SW#iは、例えば、他のCMと接続するためのポートを有するPCIeスイッチである。
CM#iにおいて、CPU#i/SW#i間、IOC#i/SW#i間およびFPGA#i/SW#i間は、例えば、PCIeバスによって接続される。また、CPU#i/MEM#i間は、メモリバスによって接続される。また、IOC#i/DE(DE$0,$1)間は、例えば、SAS(Serial Attached SCSI)により接続される。
なお、図2では、CM#iがFPGA#iを有することにしたが、これに限らない。例えば、CM#iにおいてFPGA#iが行う処理を、専用LSIにより実現することにしてもよい。
(対応情報リスト300の具体例)
つぎに、図2に示したCM#iのFPGA#iが有する対応情報リスト300の具体例について説明する。
図3は、対応情報リスト300の具体例を示す説明図である。図3において、対応情報リスト300は、LUN情報と、担当CM情報と、ミラーCM情報と、を対応付けて表す対応情報300−1〜300−10を含む。LUN情報は、アクセス先となる論理ユニット(LU)を識別するLUNを示す。担当CM情報は、担当CMの論理アドレスを示す。ミラーCM情報は、ミラーCMの論理アドレスを示す。
例えば、対応情報300−1は、LUN0へのリクエストが発生した際の担当CM#0の論理アドレス「0000_2000_0000_0000」を示す。また、対応情報300−1は、LUN0へのリクエストが発生した際のミラーCM#2の論理アドレス「0000_2200_0000_0000」を示す。
(CM#iのFPGA#iの機能的構成例)
図4は、CM#iのFPGA#iの機能的構成例を示すブロック図である。図4において、FPGA#iは、受付部401と、特定部402と、転送部403と、を含む構成である。具体的には、例えば、各機能(受付部401〜転送部403)をHDL(Hardware Description Language)を用いて機能定義し、そのHDL記述を論理合成してFPGA#iに与えることにより、その機能を実現する。
受付部401は、CA#iを介して、ホスト装置120からのリクエストを受け付ける。ここで、リクエストは、例えば、DE$0,$1内のいずれかのRAIDグループに対するライトリクエスト(書込要求)またはリードリクエスト(読出要求)である。リクエストには、例えば、アクセス先のLUN情報やライトデータ(書込データ)またはリードデータ(読出データ)のデータサイズなどが含まれている。
具体的には、例えば、まず、CA#iが、ホスト装置120からリクエストを受け付けたことに応じて、当該リクエストのDMA WriteをFPGA#iに指示する。この結果、ホスト装置120からのリクエストは、MEM#iに格納されることなく直接FPGA#iに送られる。
特定部402は、ホスト装置120からのリクエストを受け付けたことに応じて、当該リクエストの宛先を特定する。具体的には、例えば、特定部402は、当該リクエストのコマンド種別を判断する。ここで、特定部402は、ライトリクエストであると判断した場合には、当該ライトリクエストに含まれるLUNを特定する。このLUNは、アクセス先となる論理ユニットを識別する情報である。そして、特定部402は、対応情報リスト300を参照して、特定したLUNに対応する担当CM情報およびミラーCM情報を特定する。
これにより、ライトリクエストの宛先として、担当CM#jおよびミラーCM#kの論理アドレスを特定することができる。担当CM#jは、ライトリクエストにかかるライトデータのRAID演算を担当するCMである。ミラーCM#kは、ライトリクエストにかかるライトデータのミラーリングを担当するCMである。なお、ライトリクエスト時は、CM#iが担当CM#jまたはミラーCM#kのいずれかである場合がある。
また、特定部402は、リードリクエストであると判断した場合、当該リードリクエストに含まれるLUNを特定する。このLUNは、アクセス先となる論理ユニットを識別する情報である。そして、特定部402は、対応情報リスト300を参照して、特定したLUNに対応する担当CM情報を特定する。
これにより、リードリクエストの宛先として、担当CM#jの論理アドレスを特定することができる。担当CM#jは、リードリクエストにかかるリードデータのRAID演算を担当するCMである。なお、リードリクエスト時は、CM#iが担当CM#jである場合がある。
転送部403は、ホスト装置120からのリクエストを、特定部402によって特定された当該リクエストの宛先に転送する。具体的には、例えば、ライトリクエストの場合には、転送部403は、特定された担当CM#jの論理アドレスおよびミラーCM#kの論理アドレスをそれぞれ宛先に設定して、ライトリクエストをSW#iに転送する。
この結果、SW#iにおいてアドレス変換が行われ、ホスト装置120からのライトリクエストが、FRT110を介して、担当CM#jおよびミラーCM#kにそれぞれ転送される。また、ライトリクエストの場合、ホスト装置120からライトリクエストが送られてきたあとに、当該ライトリクエストにかかるライトデータが転送されてくる。転送部403は、直前の宛先(ライトリクエストの宛先)を記憶しており、ホスト装置120からのライトデータを、その宛先に転送する。なお、ライトリクエストの転送例については、図5および図6を用いて後述する。
また、リードリクエストの場合には、転送部403は、リードリクエストの宛先に、特定された担当CM#jの論理アドレスを設定して、SW#iに転送する。この結果、SW#iにおいてアドレス変換が行われ、ホスト装置120からのリードリクエストが、FRT110を介して、担当CM#jに転送される。
なお、PCIeのバスでは、基本的にはピアツーピア(P2P)の通信が行われるが、これではFPGA#iは、担当CM#jおよびミラーCM#kのいずれから送られてきたデータであるかを判断できなくなる。このため、FPGA#iは、担当CM#jおよびミラーCM#kそれぞれとやり取りができるように、例えば、ミラーCM#kに仮想的なBus(バス)/Dev(デバイス)/Func(機能)を割り当てる。
これにより、担当CM#jおよびミラーCM#kそれぞれとやり取りするための受け口を設けることができる。仮想的なBus/Dev/Funcを割り当てる技術としては、例えば、既存のSR−IOV(Single Root I/O Virtualization)を用いることができる。SR−IOVは、PCIデバイス側で仮想化をサポートする機能である。
また、上述したFPGA#iの各機能は、専用の集積回路(例えば、専用LSI)により実現することにしてもよい。具体的には、例えば、FPGA#iの各機能(特定部402〜転送部403)をHDL(あるいは、回路図)を用いて機能定義し、そのHDL記述を論理合成して得られる回路情報に基づいて、その機能を実現する専用LSIを製造することができる。
(ライトリクエストの転送例)
つぎに、図5および図6を用いて、ライトリクエストの転送例について説明する。
図5は、ライトリクエスト時のストレージシステム100の動作例を示す説明図である。また、図6は、ライトリクエスト時のアドレス変換例を示す説明図である。ここでは、CM#0のCA#0が、ホスト装置120からLUN3の「0000_0000_0000_0000」へのライトリクエストを受け付けた場合を想定する。すなわち、CM#0は、レシーブCMである。
この場合、FPGA#0は、CA#0からライトリクエストを受け付けると、当該ライトリクエストに含まれるLUN3を特定する。そして、図6に示すように、FPGA#0は、対応情報リスト300を参照して、LUN3に対応する担当CM#3の論理アドレス「0000_2300_0000_0000」およびミラーCM#1の論理アドレス「0000_2100_0000_0000」を特定する。
つぎに、FPGA#0は、ライトリクエストの宛先に、担当CM#3の論理アドレス「0000_2300_0000_0000」およびミラーCM#1の論理アドレス「0000_2100_0000_0000」をそれぞれ設定して、SW#0に転送する。
SW#0は、FPGA#0からライトリクエストを受け付けると、メモリマップ600を参照して、当該ライトリクエストのアドレス変換を行って、FRT110に出力する。具体的には、SW#0は、担当CM#3の論理アドレス宛のライトリクエストを受け付けると、当該ライトリクエストを論理アドレス「0000_2300_0000_0000〜0000_2380_0000_0000」の範囲に対応するパスに出力する。また、SW#0は、担当CM#1の論理アドレス宛のライトリクエストを受け付けると、当該ライトリクエストを論理アドレス「0000_2100_0000_0000〜0000_2180_0000_0000」の範囲に対応するパスに出力する。
この結果、NTV(Non Transparent Virtual)アドレス変換され、FRT110において、物理アドレス空間へのアドレス変換が行われる(NTL(Non Transparent Link)アドレス変換)。具体的には、FRT−SW111において、各パスに対応する担当CM#3のSW#3およびミラーCM#1のSW#1の論理アドレスへの変換が行われ、ライトリクエストが各SW#1,#3に転送される。各スイッチSW#1,#3では、各MEM#1,#3上の物理アドレスへの変換が行われて、ライトリクエストがMEM#1,#3に書き込まれる。
(ストレージシステム100のライトリクエスト処理手順)
つぎに、ストレージシステム100のライトリクエスト処理手順について説明する。ここでは、レシーブCMが担当CMおよびミラーCMと異なる場合を例に挙げて説明する。
図7Aおよび図7Bは、ストレージシステム100のライトリクエスト処理手順の一例を示すシーケンス図である。図7Aのシーケンス図において、まず、レシーブCM#iのCA#iは、ホスト装置120からライトリクエスト(FCP Command)を受け付けると、ホスト装置120からのライトリクエストをFPGA#iに出力する(ステップS701)。
つぎに、レシーブCM#iのFPGA#iは、CA#iからライトリクエストを受け付けると、担当CM#jおよびミラーCM#kにライトリクエストを転送するリクエスト処理を実行する(ステップS702)。この際、FPGA#iは、ミラーCM#kに対して仮想的なBus/Dev/Funcを割り当てる。
この結果、担当CM#jのMEM#jおよびミラーCM#kのMEM#kのResponse queueにIOCB(I/Oコマンド(制御)・ブロック)が格納される。IOCBは、プロトコルのフロー制御等に使用されるデータであり、例えば、ライトリクエストの内容を示す情報が含まれる。
なお、FPGA#iのリクエスト処理の具体的な処理手順は、図9を用いて後述する。
つぎに、CA#iは、FPGA#iを介して、担当CM#jのCPU#j(ドライバ)およびミラーCM#kのCPU#k(ドライバ)に割り込みを通知する(ステップS703)。FPGA#iでは、直前の宛先、すなわち、ライトリクエストの転送先である担当CM#jおよびミラーCM#kの論理アドレスが記憶されている。このため、CA#iからの割り込みは、担当CM#jおよびミラーCM#kの論理アドレス宛にそれぞれ通知される。
担当CM#jのCPU#jおよびミラーCM#kのCPU#kは、割り込みを受けると割込要因を読み込む(ステップS704)。この際、担当CM#jのCPU#jは、直接CA#iへアクセスして割込要因を読み込む。一方、ミラーCM#kのCPU#kは、FPGA#iの仮想的なBus/Dev/Funcにアクセスして、コピーされた割込要因を読み込む。
ここで、割込要因がIOCBであれば、各CPU#j,#kにおいて、MEM#j,#k内のDMA情報(ライトデータのサイズ等)を参照して、ライトデータ用のキャッシュ領域の確保等の準備が行われる。
そして、FPGA#iは、各CPU#j,#kにおける準備が完了するのを待ち合わせて、各CPU#j,#kの準備が完了すると、その旨をCA#iに通知する(ステップS705)。CA#iは、各CPU#j,#kの準備が完了すると、ホスト装置120にデータ転送を要求する(ステップS706)。
図7Bのシーケンス図において、まず、ホスト装置120は、CA#iからデータ転送の要求を受け付けると、ライトデータの転送を開始する(ステップS707)。CA#iは、FPGA#iを介して、担当CM#jのMEM#jおよびミラーCM#kのMEM#kにライトデータを転送する(ステップS708)。ライトデータには、例えば、データ訂正コード(BCC:Block Check Code)が付加される。
そして、CA#iは、データ転送が完了すると、FPGA#iを介して、各MEM#j,#kのResponse queueにData転送完了のIOCBをそれぞれ格納する(ステップS709)。つぎに、CA#iは、FPGA#iを介して、担当CM#jのCPU#j(ドライバ)およびミラーCM#kのCPU#k(ドライバ)に割り込みを通知する(ステップS710)。
各CPU#j,#kは、割り込みを受けると、割込要因を読み込んで刈り取る(ステップS711)。そして、各CPU#j,#kは、データ転送が正常に完了したことを確認したら、各MEM#j,#kのResponse queueにデータ転送正常完了のIOCBを格納して、レジスタ(IOCB DMA起動)への書き込みを行う(ステップS712)。この際、CPU#jは、直接CA#iへアクセスする一方で、CPU#kは、FPGA#iの仮想的なBus/Dev/Funcにアクセスする。
つぎに、FPGA#iは、各CPU#j,#kにおけるデータ転送完了を待ち合わせて、各CPU#j,#kのデータ転送が正常に完了すると、その旨をCA#iに通知する(ステップS713)。そして、CA#iは、各CPU#j,#kのデータ転送が正常に完了すると、ホスト装置120にStatus転送正常完了通知を送信する(ステップS714)。
なお、ホスト装置120にStatus転送正常完了通知が送信されると、各CPU#j,#kに対して処理が正常に完了したことが通知され、その結果、各CPU#j,#kにおいて、キャッシュ領域を解放するなどの後処理が行われる。
これにより、レシーブCM#iのFPGA#iにおいて、ホスト装置120からのライトリクエストの宛先を解析して、ライトリクエストおよびライトデータを担当CM#jおよびミラーCM#kに転送することができる。
(ストレージシステム100のリードリクエスト処理手順)
つぎに、ストレージシステム100のリードリクエスト処理手順について説明する。ここでは、レシーブCMが担当CMと異なる場合を例に挙げて説明する。
図8は、ストレージシステム100のリードリクエスト処理手順の一例を示すシーケンス図である。図8のシーケンス図において、まず、レシーブCM#iのCA#iは、ホスト装置120からリードリクエスト(FCP Command)を受け付けると、ホスト装置120からのリードリクエストをFPGA#iに出力する(ステップS801)。
つぎに、レシーブCM#iのFPGA#iは、CA#iからリードリクエストを受け付けると、担当CM#jにリードリクエストを転送するリクエスト処理を実行する(ステップS802)。この結果、担当CM#jのMEM#jのResponse queueにIOCBが格納される。
なお、FPGA#iリクエスト処理の具体的な処理手順は、図9を用いて後述する。
つぎに、レシーブCM#iのCA#iは、FPGA#iを介して、担当CM#jのCPU#j(ドライバ)に割り込みを通知する(ステップS803)。FPGA#iでは、直前の宛先、すなわち、リードリクエストの転送先である担当CM#jの論理アドレスが記憶されている。このため、CA#iからの割り込みは、担当CM#jの論理アドレス宛に通知される。
担当CM#jのCPU#jは、割り込みを受けると、直接CA#iへアクセスして割込要因を読み込む(ステップS804)。ここで、割込要因がIOCBであれば、CPU#jにおいて、MEM#j内のDMA情報を参照して、CA#iが読み込むMEM#j内の領域にリードデータを書き込む等の準備が行われる。
CA#iは、CPU#jの準備が完了し、転送データ(リードデータ)の転送準備が完了すると、MEM#jからリードデータを読み出して、ホスト装置120にリードデータ(BCC取外)を転送する(ステップS805)。そして、CA#iは、リードデータの転送が完了すると、ホスト装置120にReadデータ送信正常完了通知を送信する(ステップS806)。
なお、ホスト装置120にReadデータ送信正常完了通知が送信されると、CPU#jに対して処理が正常に完了したことが通知され、その結果、CPU#jにおいて、MEM#j内のリードデータを削除するなどの後処理が行われる。
これにより、レシーブCM#iのFPGA#iにおいて、ホスト装置120からのライトリクエストの宛先を解析して、リードリクエストを担当CM#jに転送することができる。
(リクエスト処理の具体的処理手順)
つぎに、FPGA#iのリクエスト処理の具体的な処理手順について説明する。
図9は、FPGA#iのリクエスト処理の具体的処理手順の一例を示すフローチャートである。図9のフローチャートにおいて、まず、FPGA#iは、ホスト装置120からのリクエストをCA#iから受け付ける(ステップS901)。つぎに、FPGA#iは、受け付けたリクエストがライトリクエストであるか否かを判断する(ステップS902)。
ここで、ライトリクエストの場合(ステップS902:Yes)、FPGA#iは、ライトリクエスト(FCP Command)に含まれるアクセス先のLUNを特定する(ステップS903)。つぎに、FPGA#iは、対応情報リスト300を参照して、特定したアクセス先のLUNに対応する担当CM#jおよびミラーCM#kの論理アドレスを特定する(ステップS904)。
そして、FPGA#iは、特定した担当CM#jおよびミラーCM#kの論理アドレスをライトリクエストの宛先にそれぞれ設定して、当該ライトリクエストをSW#iに転送し(ステップS905)、本フローチャートによる一連の処理を終了する。これにより、FPGA#iにより、ホスト装置120からのライトリクエストを担当CM#jおよびミラーCM#kに転送することができる。
また、ステップS902において、リードリクエストの場合(ステップS902:No)、FPGA#iは、ライトリクエスト(FCP Command)に含まれるアクセス先のLUNを特定する(ステップS906)。つぎに、FPGA#iは、対応情報リスト300を参照して、特定したアクセス先のLUNに対応する担当CM#jの論理アドレスを特定する(ステップS907)。
そして、FPGA#iは、特定した担当CM#jの論理アドレスをリードリクエストの宛先に設定して、当該リードリクエストをSW#iに転送し(ステップS908)、本フローチャートによる一連の処理を終了する。これにより、FPGA#iにより、ホスト装置120からのリードリクエストを担当CM#jに転送することができる。
以上説明したように、実施の形態にかかるCM#iによれば、CA#iに直接接続されるFPGA#i(あるいは、専用LSI)により、ホスト装置120からのライトリクエストを受け付けたことに応じて、対応情報リスト300を参照して、ライトリクエストから特定されるLUNに対応する担当CM#jの論理アドレスを特定することができる。そして、CM#iによれば、FPGA#i(あるいは、専用LSI)により、特定した担当CM#jの論理アドレスを宛先に設定して、ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送することができる。
これにより、CA#iに直接接続されたFPGA#i(あるいは、専用LSI)を用いて、CPU#iやMEM#iを介さずに、ホスト装置120からのライトリクエストの転送先を解析して、担当CM#jへライトリクエストおよびライトデータを転送することができる。この結果、ライトリクエスト時に、ホスト装置120からのデータをMEM#iに一旦格納する必要がなくなり、CPU#iが処理する場合に比べて、ライトリクエストに対する応答時間の増加を抑制することができる。また、ライトリクエスト時に、CPU#iへの割り込みが発生しないため、CPU#iで実行中の処理が中断されるのを防いで、ストレージシステム100の性能向上を図ることができる。
また、CM#iによれば、FPGA#i(あるいは、専用LSI)により、対応情報リスト300を参照して、さらに、ライトリクエストから特定されるLUNに対応するミラーCM#kの論理アドレスを特定することができる。そして、CM#iによれば、FPGA#i(あるいは、専用LSI)により、特定したミラーCM#kの論理アドレスを宛先に設定して、ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送することができる。
これにより、CA#iに直接接続されたFPGA#i(あるいは、専用LSI)を用いて、CPU#iやMEM#iを介さずに、ミラーCM#kへライトリクエストおよびライトデータを転送して、ライトデータの冗長化を行うことができる。また、担当CM#jおよびミラーCM#kに対して一斉にデータ転送することができるため、担当CM#kからミラーCM#kへデータ転送する場合に比べて、ライトリクエストに対する応答時間を短縮することができる。
また、CM#iによれば、FPGA#i(あるいは、専用LSI)により、ホスト装置120からのリードリクエストを受け付けたことに応じて、対応情報リスト300を参照して、リードリクエストから特定されるLUNに対応する担当CM#jの論理アドレスを特定することができる。そして、CM#iによれば、FPGA#i(あるいは、専用LSI)により、特定した担当CM#jの論理アドレスを宛先に設定して、リードリクエストを転送することができる。
これにより、CA#iに直接接続されたFPGA#i(あるいは、専用LSI)を用いて、CPU#iやMEM#iを介さずに、ホスト装置120からのリードリクエストの転送先を解析して、担当CM#jへリードリクエストを転送することができる。また、リードリクエスト時に、CPU#iへの割り込みが発生しないため、CPU#iで実行中の処理が中断されるのを防いで、ストレージシステム100の性能向上を図ることができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)ホスト装置に接続されるインターフェースと、
前記インターフェースに直接接続される、内部の回路を再構成可能な集積回路または専用の集積回路と、を有し、
前記集積回路は、
前記インターフェースを介して前記ホスト装置からのライトリクエストを受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、前記ライトリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、
特定した前記論理アドレスを宛先に設定して、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送する、ことを特徴とするストレージ制御装置。
(付記2)前記対応情報は、さらに、前記記憶装置と、前記記憶装置へのリクエストにかかるライトデータのミラーリングを行う第2のストレージ装置との対応関係を示し、
前記集積回路は、
前記対応情報を参照して、さらに、前記ライトリクエストから特定される記憶装置に対応する第2のストレージ制御装置の論理アドレスを特定し、
特定した前記第2のストレージ制御装置の論理アドレスを宛先に設定して、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送する、ことを特徴とする付記1に記載のストレージ制御装置。
(付記3)前記集積回路は、
前記インターフェースを介して前記ホスト装置からのリードリクエストを受け付けたことに応じて、前記対応情報を参照して、前記リードリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、
特定した前記論理アドレスを宛先に設定して、前記リードリクエストを転送する、ことを特徴とする付記1または2に記載のストレージ制御装置。
(付記4)前記内部の回路を再構成可能な集積回路は、FPGA(Field Programmable Gate Array)であることを特徴とする付記1〜3のいずれか一つに記載のストレージ制御装置。
(付記5)複数のストレージ制御装置を含むストレージシステムであって、
前記複数のストレージ制御装置のうちのいずれかのストレージ制御装置は、
ホスト装置に接続されるインターフェースと、
前記インターフェースを介して前記ホスト装置からのライトリクエストを受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、前記ライトリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、特定した前記論理アドレスを宛先に設定して、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送する、内部の回路を再構成可能な集積回路または専用の集積回路と、
を有することを特徴とするストレージシステム。
100 ストレージシステム
110 FRT
111 FRT−SW
120 ホスト装置
300 対応情報リスト
401 受付部
402 特定部
403 転送部
#0〜#3,#i,#j,#k CM
#i CPU
#i MEM
#i IOC
#i CA
#i FPGA
#i SW

Claims (4)

  1. CPUと、
    ホスト装置に接続される第1のインターフェースと、
    前記第1のインターフェースに直接接続される、内部の回路を再構成可能な集積回路または専用の集積回路と、
    前記集積回路と前記CPUとに直接接続される、他のストレージ制御装置と通信するための第2のインターフェースと、を有し、
    前記集積回路は、
    前記第1のインターフェースを介して前記ホスト装置からのライトリクエストを受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを自CPUにより処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、前記ライトリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、
    特定した前記論理アドレスを宛先に設定して、前記CPUを介さずに、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを前記第2のインターフェースに転送する、ことを特徴とするストレージ制御装置。
  2. 前記対応情報は、さらに、前記記憶装置と、前記記憶装置へのリクエストにかかるライトデータのミラーリングを行う第2のストレージ装置との対応関係を示し、
    前記集積回路は、
    前記対応情報を参照して、さらに、前記ライトリクエストから特定される記憶装置に対応する第2のストレージ制御装置の論理アドレスを特定し、
    さらに、特定した前記第2のストレージ制御装置の論理アドレスを宛先に設定して、前記CPUを介さずに、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを前記第2のインターフェースに転送する、ことを特徴とする請求項1に記載のストレージ制御装置。
  3. 前記集積回路は、
    前記第1のインターフェースを介して前記ホスト装置からのリードリクエストを受け付けたことに応じて、前記対応情報を参照して、前記リードリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、
    特定した前記論理アドレスを宛先に設定して、前記CPUを介さずに、前記リードリクエストを前記第2のインターフェースに転送する、ことを特徴とする請求項1または2に記載のストレージ制御装置。
  4. 複数のストレージ制御装置を含むストレージシステムであって、
    前記複数のストレージ制御装置のうちのいずれかのストレージ制御装置は、
    CPUと、ホスト装置に接続される第1のインターフェースと、前記第1のインターフェースに直接接続される、内部の回路を再構成可能な集積回路または専用の集積回路と、前記集積回路と前記CPUとに直接接続される、他のストレージ制御装置と通信するための第2のインターフェースと、を有し、
    前記集積回路は、
    前記第1のインターフェースを介して前記ホスト装置からのライトリクエストを受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを自CPUにより処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、前記ライトリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、
    特定した前記論理アドレスを宛先に設定して、前記CPUを介さずに、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを前記第2のインターフェースに転送する、とを特徴とするストレージシステム。
JP2016161703A 2016-08-22 2016-08-22 ストレージ制御装置、およびストレージシステム Active JP6825263B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016161703A JP6825263B2 (ja) 2016-08-22 2016-08-22 ストレージ制御装置、およびストレージシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016161703A JP6825263B2 (ja) 2016-08-22 2016-08-22 ストレージ制御装置、およびストレージシステム

Publications (2)

Publication Number Publication Date
JP2018032061A JP2018032061A (ja) 2018-03-01
JP6825263B2 true JP6825263B2 (ja) 2021-02-03

Family

ID=61303392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016161703A Active JP6825263B2 (ja) 2016-08-22 2016-08-22 ストレージ制御装置、およびストレージシステム

Country Status (1)

Country Link
JP (1) JP6825263B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6649989B2 (ja) * 2018-05-25 2020-02-19 株式会社日立製作所 ストレージシステム及びその制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4963892B2 (ja) * 2006-08-02 2012-06-27 株式会社日立製作所 仮想ストレージシステムの構成要素となることが可能なストレージシステムの制御装置
JP5330702B2 (ja) * 2008-01-31 2013-10-30 株式会社日立製作所 複数のコントローラモジュールを備えた記憶装置システム
WO2011058598A1 (en) * 2009-11-10 2011-05-19 Hitachi, Ltd. Storage system with multiple controllers
WO2015068239A1 (ja) * 2013-11-07 2015-05-14 株式会社日立製作所 計算機システムおよびデータ制御方法

Also Published As

Publication number Publication date
JP2018032061A (ja) 2018-03-01

Similar Documents

Publication Publication Date Title
JP6074056B2 (ja) 計算機システムおよびデータ制御方法
US9298648B2 (en) Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch
KR101744465B1 (ko) 데이터를 저장하기 위한 방법 및 장치
US10445018B2 (en) Switch and memory device
US8589723B2 (en) Method and apparatus to provide a high availability solid state drive
US9213500B2 (en) Data processing method and device
US8868865B1 (en) Computer system, server module, and storage module
JP6703600B2 (ja) 計算機システム及びサーバ
JP2012133405A (ja) ストレージ装置及びそのデータ転送制御方法
US9619404B2 (en) Backup cache with immediate availability
CN109815170B (zh) 数据冗余的处理方法及其相关电脑系统
CN115495389A (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
US20130086285A1 (en) Sharing iommu mappings across devices in a dma group
US20170139607A1 (en) Method and system for shared direct access storage
US9921753B2 (en) Data replication across host systems via storage controller
JP6825263B2 (ja) ストレージ制御装置、およびストレージシステム
US10719391B2 (en) Storage system and storage control apparatus
US11972112B1 (en) Host IO device direct read operations on peer memory over a PCIe non-transparent bridge
US10705905B2 (en) Software-assisted fine-grained data protection for non-volatile memory storage devices
US11940938B2 (en) Hypervisor bridging of different versions of an IO protocol
JP7553783B2 (ja) ストレージ制御装置、送達状況判定プログラムおよびストレージシステム
JP5856665B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200602

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200729

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201228

R150 Certificate of patent or registration of utility model

Ref document number: 6825263

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150