図面 (/)

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

出願人 富士通株式会社
発明者 岸祐介松井秀樹
出願日 2016年8月22日 (4年8ヶ月経過) 出願番号 2016-161703
公開日 2018年3月1日 (3年2ヶ月経過) 公開番号 2018-032061
状態 特許登録済
技術分野 ハードウェアの冗長性 外部記憶装置との入出力 入出力制御
主要キーワード 専用LSI Readデータ 共用ストレージ プライマリディスク レシーブ ミラーリング処理 PCIeバス PCIeスイッチ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2018年3月1日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (11)

課題

ライトリクエストに対する応答時間の増加を抑制すること。

解決手段

CM#iは、CA#iに直接接続されるFPGA#i(あるいは、専用LSI)により、ホスト装置120からのライトリクエストを受け付けたことに応じて、対応情報リストを参照して、ライトリクエストから特定されるLUNに対応する担当CMの論理アドレスを特定する。そして、CM#iは、FPGA#i(あるいは、専用LSI)により、特定した担当CMの論理アドレスを宛先に設定して、ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送する。

概要

背景

従来、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の複数の記憶装置を格納した筐体を複数搭載して、ホスト装置へ記憶装置の記憶領域を提供するストレージシステムがある。また、このようなストレージシステムでは、ホスト装置と記憶装置との間のアクセス制御を行うストレージ制御装置が複数設けられることがある。

先行技術としては、例えば、データの書き込みが指示された場合に、ローカルキャッシュミラーキャッシュへデータを書き込み、また、プライマリディスクへローカルキャッシュのデータを書き込むとともに、セカンダリディスクへミラーキャッシュのデータを書き込むものがある。また、複数のRAID(Redundant Array of Inexpensive Disks)コントローラが、複数のホスト・コンピュータ共用ストレージデバイスへの読取り書込みアクセスを提供するRAIDシステムでキャッシュ・コヒーレンシを提供するためのものがある。

概要

ライトリクエストに対する応答時間の増加を抑制すること。CM#iは、CA#iに直接接続されるFPGA#i(あるいは、専用LSI)により、ホスト装置120からのライトリクエストを受け付けたことに応じて、対応情報リストを参照して、ライトリクエストから特定されるLUNに対応する担当CMの論理アドレスを特定する。そして、CM#iは、FPGA#i(あるいは、専用LSI)により、特定した担当CMの論理アドレスを宛先に設定して、ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送する。

目的

従来、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の複数の記憶装置を格納した筐体を複数搭載して、ホスト装置へ記憶装置の記憶領域を提供する

効果

実績

技術文献被引用数
1件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

ホスト装置に接続されるインターフェースと、前記インターフェースに直接接続される、内部の回路再構成可能な集積回路または専用の集積回路と、を有し、前記集積回路は、前記インターフェースを介して前記ホスト装置からのライトリクエスト受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、前記ライトリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、特定した前記論理アドレスを宛先に設定して、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送する、ことを特徴とするストレージ制御装置。

請求項2

前記対応情報は、さらに、前記記憶装置と、前記記憶装置へのリクエストにかかるライトデータのミラーリングを行う第2のストレージ装置との対応関係を示し、前記集積回路は、前記対応情報を参照して、さらに、前記ライトリクエストから特定される記憶装置に対応する第2のストレージ制御装置の論理アドレスを特定し、特定した前記第2のストレージ制御装置の論理アドレスを宛先に設定して、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送する、ことを特徴とする請求項1に記載のストレージ制御装置。

請求項3

前記集積回路は、前記インターフェースを介して前記ホスト装置からのリードリクエストを受け付けたことに応じて、前記対応情報を参照して、前記リードリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、特定した前記論理アドレスを宛先に設定して、前記リードリクエストを転送する、ことを特徴とする請求項1または2に記載のストレージ制御装置。

請求項4

複数のストレージ制御装置を含むストレージシステムであって、前記複数のストレージ制御装置のうちのいずれかのストレージ制御装置は、ホスト装置に接続されるインターフェースと、前記インターフェースを介して前記ホスト装置からのライトリクエストを受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、前記ライトリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、特定した前記論理アドレスを宛先に設定して、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送する、内部の回路を再構成可能な集積回路または専用の集積回路と、を有することを特徴とするストレージシステム。

技術分野

0001

本発明は、ストレージ制御装置、およびストレージシステムに関する。

背景技術

0002

従来、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の複数の記憶装置を格納した筐体を複数搭載して、ホスト装置へ記憶装置の記憶領域を提供するストレージシステムがある。また、このようなストレージシステムでは、ホスト装置と記憶装置との間のアクセス制御を行うストレージ制御装置が複数設けられることがある。

0003

先行技術としては、例えば、データの書き込みが指示された場合に、ローカルキャッシュミラーキャッシュへデータを書き込み、また、プライマリディスクへローカルキャッシュのデータを書き込むとともに、セカンダリディスクへミラーキャッシュのデータを書き込むものがある。また、複数のRAID(Redundant Array of Inexpensive Disks)コントローラが、複数のホスト・コンピュータ共用ストレージデバイスへの読取り書込みアクセスを提供するRAIDシステムでキャッシュ・コヒーレンシを提供するためのものがある。

先行技術

0004

国際公開第2004/114115号
特表2004−538532号公報

発明が解決しようとする課題

0005

しかしながら、従来技術では、複数のストレージ制御装置を含むストレージシステムにおいて、ホスト装置からのライトリクエストに対する応答時間が増大する場合がある。例えば、ホスト装置からのデータのストレージ制御装置間の転送処理に時間がかかり、ライトリクエストに対する応答時間が増大する場合がある。

0006

一つの側面では、本発明は、ライトリクエストに対する応答時間の増加を抑制することを目的とする。

課題を解決するための手段

0007

本発明の一態様によれば、ホスト装置からリクエスト受け付けインターフェースと、前記インターフェースに直接接続される、内部の回路再構成可能な集積回路または専用の集積回路と、を有し、前記集積回路が、前記インターフェースから前記リクエストを受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、受け付けた前記リクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、特定した前記論理アドレスを宛先に設定して、受け付けた前記リクエストを転送するストレージ制御装置が提案される。

0008

本発明の一態様によれば、複数のストレージ制御装置を含むストレージシステムであって、前記複数のストレージ制御装置のうちのいずれかのストレージ制御装置が、ホスト装置からリクエストを受け付けるインターフェースと、前記インターフェースから前記リクエストを受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、受け付けた前記リクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、特定した前記論理アドレスを宛先に設定して、受け付けた前記リクエストを転送する、内部の回路を再構成可能な集積回路または専用の集積回路と、を有するストレージシステムが提案される。

発明の効果

0009

本発明の一側面によれば、ライトリクエストに対する応答時間の増加を抑制することができる。

図面の簡単な説明

0010

図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のリクエスト処理の具体的処理手順の一例を示すフローチャートである。

実施例

0011

以下に図面を参照して、本発明にかかるストレージ制御装置、およびストレージシステムの実施の形態を詳細に説明する。

0012

(実施の形態)
図1は、実施の形態にかかるストレージ制御方法の一実施例を示す説明図である。図1において、ストレージシステム100は、CE(Controller Enclosure)$0,$1と、DE(Device Enclosure)$0,$1と、を含む。ストレージシステム100は、例えば、RAID5,6等のデータを冗長化して記憶するRAID構成のシステムである。

0013

CE$0は、CM(Controller Module)#0,#1を有する。CE$1は、CM#2,#3を有する。各CM#0〜#3は、自配下のストレージに対するアクセスを制御するストレージ制御装置の一例である。各CM#0〜#3は、FRT(Front End Router)110を介して、互いに通信可能に接続される。

0014

なお、CM#0〜#3のハードウェア構成例については、図2を用いて後述する。

0015

FRT110は、FRT−SW(switch)111を有し、CM間を互いに通信可能に接続する接続部の一例である。FRT110は、例えば、PCIe(Peripheral Component Interconnect Express)に準拠したアダプタを複数有し、各CM#0〜#3とPCIeに対応したケーブル等によって接続されてもよい。

0016

なお、図1では、CM間を接続するFRTとして、FRT110のみ表記したが、2以上のFRTにより冗長化されていてもよい。

0017

また、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)やインターネット等を介して接続されることにしてもよい。

0018

なお、図1では、1台のホスト装置120がCM#0〜#3に接続される場合を例に挙げて説明したが、これに限らない。例えば、複数台のホスト装置のそれぞれが、CM#0〜#3のうちの1以上のCMに接続されることにしてもよい。

0019

DE$0,$1は、複数の記憶装置Dを有する。記憶装置Dは、例えば、HDDやSSDなどであってもよく、また、論理的な記憶装置である論理ユニット(LU:Logical Unit)であってもよい。なお、図1では、DE$0,$1が記憶装置Dを有することにしたが、例えば、CE$0,$1が記憶装置Dを有することにしてもよい。

0020

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に対するアクセスを制御する。

0021

また、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に対するアクセスを制御する。

0022

なお、CE$0とDE$0は、例えば、1つの筐体に搭載されるストレージ装置として実現される。同様に、CE$1とDE$1は、1つの筐体に搭載されるストレージ装置として実現される。また、ストレージシステム100に含まれるCEの数は2台に限定されるものではなく、各CEに含まれるCMの数も2台に限定されるものではない。

0023

ここで、従来のストレージシステムでは、ライトリクエスト時に、ホスト装置からRAID演算するデータを、当該RAID演算を担当する第1のCM(以下、「担当CM」という)に転送後、転送したデータを第2のCM(以下、「ミラーCM」という)のメモリコピーミラーリング)することで、データの冗長化を行っている。

0024

しかし、冗長化完了をもってホスト装置へ応答を返すため、ライトリクエストに対する応答時間がその分増加する。なお、RAID演算は、例えば、ホスト装置120からリクエスト(ライトリクエスト、リードリクエスト)に応じて行われるデータの分割、パリティ計算等を含む。

0025

一方で、ホスト装置からRAID演算するデータを担当CMに転送するにあたり、物理的な接続関係要因となって、他のCMを経由することがある。この際、ホスト装置からデータを受け取ったCM(以下、「レシーブCM」という)は、当該データから担当CMを判断して、担当CMに転送するため、レシーブCMが担当CMである場合に比べて、ライトリクエストに対する応答時間が増加する。

0026

具体的には、例えば、レシーブCMが、ホスト装置からデータを受信すると、当該データをメモリに一旦格納する。そして、レシーブCMのCPU(Central Processing Unit)が、メモリに格納したデータを解析して、どのCMでRAID演算するものであるかを判断し、担当CMに当該データを転送する。

0027

担当CMは、レシーブCMからデータを受信すると、当該データをメモリに格納する。そして、担当CMのCPUが、メモリに格納したデータを解析して、どのCMにコピー(ミラーリング)するのかを判断し、ミラーCMに当該データ(コピーデータ)を転送する。また、担当CMは、ミラーCMからミラーリング処理の完了を受けると、レシーブCMを介して、ホスト装置に応答を返す。

0028

このように、従来のストレージシステムでは、ホスト装置から受信したデータは、一旦メモリに格納してからCPUが処理するようになっている。したがって、レシーブCMが担当CMでなくても、ホスト装置から受信したデータは一旦メモリに格納され、メモリアクセスにかかる処理負荷や処理時間がかかる。

0029

なお、レシーブCMを経由せずにPCIeツリー外のCA(Channel Adapter)にアクセスする場合、ホスト装置からのライトリクエスト時に、CAから全CMに対し、割り込みとしてライトリクエストをブロードキャストすることで、ホスト装置からのライトリクエストを担当CMが直接受信できるようにすることが考えられる。

0030

ライトリクエストのパケットの中にはデータのLUN(Logical Unit Number)、LBA(Logical Block Addressing)、サイズの情報が格納されている。このため、各CMは受け取ったライトリクエストの内容を確認して、DMA(Direct Memory Access)を指示する。また、ホスト装置からのライトデータもブロードキャストする場合、全てのCMに全てのCAから送信されるデータを格納するキャッシュ域を準備すれば、ミラーリングも可能である。

0031

ところが、CMが多数の場合、例えば、24CM構成になると、割込頻度が24倍となり、各CMの割込(例外)処理が増える。割込処理はRAID演算などの通常動作を止めて実施するため、割込が増えた場合はシステムの性能ダウンを引き起こしてしまう。また、CAが増えると、ホスト装置からのライトデータを格納する領域(数)も増えるため、システム資源の無駄が多くなる。

0032

そこで、本実施の形態では、レシーブCMにおいて、FPGA(Field Programmable Gate Array)や専用LSI(Large−Scale Integration)などの集積回路を用いて、CPUやメモリを介さずに、ホスト装置120からのリクエストを解析して転送先を特定し、担当CMやミラーCMへのデータ転送を行うことで、ホスト装置120からのリクエストに対する応答時間の増加を抑制する。

0033

(CM#0〜#3のハードウェア構成例)
つぎに、CM#0〜#3のハードウェア構成例について説明する。以下の説明では、CM#0〜#3のうちの任意のCMを「CM#i」と表記する場合がある(i=0,1,2,3)。

0034

図2は、CM#iのハードウェア構成例を示すブロック図である。図2において、CM#iは、CPU#iと、MEM(Memory)#iと、IOC(Input/Output Controller)#iと、CA#iと、FPGA#iと、SW#iと、を含む。各構成部は、バスによってそれぞれ接続される。

0035

CPU#iは、CM#iの全体の制御を司る。CPU#iは、DMAの機能を有する。DMAは、例えば、PCIeバスから直接(CPU#iの演算を介さずに)MEM#iにリード、ライトする技術である。なお、ここではCPU#iがDMAの機能を有することにしたが、CPU#iとは別に、DMA転送における通信を制御するDMAコントローラを有することにしてもよい。

0036

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は、データやプログラムを一時的に記憶するキャッシュメモリとしても用いられてもよい。

0037

IOC#iは、記憶装置Dへのアクセス(I/O)を制御するI/O制御部である。CA#iは、ホスト装置120と通信するためのインターフェースである。CA#iは、例えば、LAN、SAN、FC等に準拠したアダプタを有する。FPGA#iは、内部の回路を再構成可能な集積回路である。SW#iは、他のCMと通信するためのインターフェースである。SW#iは、例えば、他のCMと接続するためのポートを有するPCIeスイッチである。

0038

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 AttachedSCSI)により接続される。

0039

なお、図2では、CM#iがFPGA#iを有することにしたが、これに限らない。例えば、CM#iにおいてFPGA#iが行う処理を、専用LSIにより実現することにしてもよい。

0040

(対応情報リスト300の具体例)
つぎに、図2に示したCM#iのFPGA#iが有する対応情報リスト300の具体例について説明する。

0041

図3は、対応情報リスト300の具体例を示す説明図である。図3において、対応情報リスト300は、LUN情報と、担当CM情報と、ミラーCM情報と、を対応付けて表す対応情報300−1〜300−10を含む。LUN情報は、アクセス先となる論理ユニット(LU)を識別するLUNを示す。担当CM情報は、担当CMの論理アドレスを示す。ミラーCM情報は、ミラーCMの論理アドレスを示す。

0042

例えば、対応情報300−1は、LUN0へのリクエストが発生した際の担当CM#0の論理アドレス「0000_2000_0000_0000」を示す。また、対応情報300−1は、LUN0へのリクエストが発生した際のミラーCM#2の論理アドレス「0000_2200_0000_0000」を示す。

0043

(CM#iのFPGA#iの機能的構成例)
図4は、CM#iのFPGA#iの機能的構成例を示すブロック図である。図4において、FPGA#iは、受付部401と、特定部402と、転送部403と、を含む構成である。具体的には、例えば、各機能(受付部401〜転送部403)をHDL(Hardware Description Language)を用いて機能定義し、そのHDL記述論理合成してFPGA#iに与えることにより、その機能を実現する。

0044

受付部401は、CA#iを介して、ホスト装置120からのリクエストを受け付ける。ここで、リクエストは、例えば、DE$0,$1内のいずれかのRAIDグループに対するライトリクエスト(書込要求)またはリードリクエスト(読出要求)である。リクエストには、例えば、アクセス先のLUN情報やライトデータ(書込データ)またはリードデータ(読出データ)のデータサイズなどが含まれている。

0045

具体的には、例えば、まず、CA#iが、ホスト装置120からリクエストを受け付けたことに応じて、当該リクエストのDMAWriteをFPGA#iに指示する。この結果、ホスト装置120からのリクエストは、MEM#iに格納されることなく直接FPGA#iに送られる。

0046

特定部402は、ホスト装置120からのリクエストを受け付けたことに応じて、当該リクエストの宛先を特定する。具体的には、例えば、特定部402は、当該リクエストのコマンド種別を判断する。ここで、特定部402は、ライトリクエストであると判断した場合には、当該ライトリクエストに含まれるLUNを特定する。このLUNは、アクセス先となる論理ユニットを識別する情報である。そして、特定部402は、対応情報リスト300を参照して、特定したLUNに対応する担当CM情報およびミラーCM情報を特定する。

0047

これにより、ライトリクエストの宛先として、担当CM#jおよびミラーCM#kの論理アドレスを特定することができる。担当CM#jは、ライトリクエストにかかるライトデータのRAID演算を担当するCMである。ミラーCM#kは、ライトリクエストにかかるライトデータのミラーリングを担当するCMである。なお、ライトリクエスト時は、CM#iが担当CM#jまたはミラーCM#kのいずれかである場合がある。

0048

また、特定部402は、リードリクエストであると判断した場合、当該リードリクエストに含まれるLUNを特定する。このLUNは、アクセス先となる論理ユニットを識別する情報である。そして、特定部402は、対応情報リスト300を参照して、特定したLUNに対応する担当CM情報を特定する。

0049

これにより、リードリクエストの宛先として、担当CM#jの論理アドレスを特定することができる。担当CM#jは、リードリクエストにかかるリードデータのRAID演算を担当するCMである。なお、リードリクエスト時は、CM#iが担当CM#jである場合がある。

0050

転送部403は、ホスト装置120からのリクエストを、特定部402によって特定された当該リクエストの宛先に転送する。具体的には、例えば、ライトリクエストの場合には、転送部403は、特定された担当CM#jの論理アドレスおよびミラーCM#kの論理アドレスをそれぞれ宛先に設定して、ライトリクエストをSW#iに転送する。

0051

この結果、SW#iにおいてアドレス変換が行われ、ホスト装置120からのライトリクエストが、FRT110を介して、担当CM#jおよびミラーCM#kにそれぞれ転送される。また、ライトリクエストの場合、ホスト装置120からライトリクエストが送られてきたあとに、当該ライトリクエストにかかるライトデータが転送されてくる。転送部403は、直前の宛先(ライトリクエストの宛先)を記憶しており、ホスト装置120からのライトデータを、その宛先に転送する。なお、ライトリクエストの転送例については、図5および図6を用いて後述する。

0052

また、リードリクエストの場合には、転送部403は、リードリクエストの宛先に、特定された担当CM#jの論理アドレスを設定して、SW#iに転送する。この結果、SW#iにおいてアドレス変換が行われ、ホスト装置120からのリードリクエストが、FRT110を介して、担当CM#jに転送される。

0053

なお、PCIeのバスでは、基本的にはピアツーピア(P2P)の通信が行われるが、これではFPGA#iは、担当CM#jおよびミラーCM#kのいずれから送られてきたデータであるかを判断できなくなる。このため、FPGA#iは、担当CM#jおよびミラーCM#kそれぞれとやり取りができるように、例えば、ミラーCM#kに仮想的なBus(バス)/Dev(デバイス)/Func(機能)を割り当てる。

0054

これにより、担当CM#jおよびミラーCM#kそれぞれとやり取りするための受け口を設けることができる。仮想的なBus/Dev/Funcを割り当てる技術としては、例えば、既存のSR−IOV(Single Root I/O Virtualization)を用いることができる。SR−IOVは、PCIデバイス側で仮想化サポートする機能である。

0055

また、上述したFPGA#iの各機能は、専用の集積回路(例えば、専用LSI)により実現することにしてもよい。具体的には、例えば、FPGA#iの各機能(特定部402〜転送部403)をHDL(あるいは、回路図)を用いて機能定義し、そのHDL記述を論理合成して得られる回路情報に基づいて、その機能を実現する専用LSIを製造することができる。

0056

(ライトリクエストの転送例)
つぎに、図5および図6を用いて、ライトリクエストの転送例について説明する。

0057

図5は、ライトリクエスト時のストレージシステム100の動作例を示す説明図である。また、図6は、ライトリクエスト時のアドレス変換例を示す説明図である。ここでは、CM#0のCA#0が、ホスト装置120からLUN3の「0000_0000_0000_0000」へのライトリクエストを受け付けた場合を想定する。すなわち、CM#0は、レシーブCMである。

0058

この場合、FPGA#0は、CA#0からライトリクエストを受け付けると、当該ライトリクエストに含まれるLUN3を特定する。そして、図6に示すように、FPGA#0は、対応情報リスト300を参照して、LUN3に対応する担当CM#3の論理アドレス「0000_2300_0000_0000」およびミラーCM#1の論理アドレス「0000_2100_0000_0000」を特定する。

0059

つぎに、FPGA#0は、ライトリクエストの宛先に、担当CM#3の論理アドレス「0000_2300_0000_0000」およびミラーCM#1の論理アドレス「0000_2100_0000_0000」をそれぞれ設定して、SW#0に転送する。

0060

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」の範囲に対応するパスに出力する。

0061

この結果、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に書き込まれる。

0062

(ストレージシステム100のライトリクエスト処理手順)
つぎに、ストレージシステム100のライトリクエスト処理手順について説明する。ここでは、レシーブCMが担当CMおよびミラーCMと異なる場合を例に挙げて説明する。

0063

図7Aおよび図7Bは、ストレージシステム100のライトリクエスト処理手順の一例を示すシーケンス図である。図7Aのシーケンス図において、まず、レシーブCM#iのCA#iは、ホスト装置120からライトリクエスト(FCP Command)を受け付けると、ホスト装置120からのライトリクエストをFPGA#iに出力する(ステップS701)。

0064

つぎに、レシーブCM#iのFPGA#iは、CA#iからライトリクエストを受け付けると、担当CM#jおよびミラーCM#kにライトリクエストを転送するリクエスト処理を実行する(ステップS702)。この際、FPGA#iは、ミラーCM#kに対して仮想的なBus/Dev/Funcを割り当てる。

0065

この結果、担当CM#jのMEM#jおよびミラーCM#kのMEM#kのResponse queueにIOCB(I/Oコマンド(制御)・ブロック)が格納される。IOCBは、プロトコルフロー制御等に使用されるデータであり、例えば、ライトリクエストの内容を示す情報が含まれる。

0066

なお、FPGA#iのリクエスト処理の具体的な処理手順は、図9を用いて後述する。

0067

つぎに、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の論理アドレス宛にそれぞれ通知される。

0068

担当CM#jのCPU#jおよびミラーCM#kのCPU#kは、割り込みを受けると割込要因を読み込む(ステップS704)。この際、担当CM#jのCPU#jは、直接CA#iへアクセスして割込要因を読み込む。一方、ミラーCM#kのCPU#kは、FPGA#iの仮想的なBus/Dev/Funcにアクセスして、コピーされた割込要因を読み込む。

0069

ここで、割込要因がIOCBであれば、各CPU#j,#kにおいて、MEM#j,#k内のDMA情報(ライトデータのサイズ等)を参照して、ライトデータ用のキャッシュ領域の確保等の準備が行われる。

0070

そして、FPGA#iは、各CPU#j,#kにおける準備が完了するのを待ち合わせて、各CPU#j,#kの準備が完了すると、その旨をCA#iに通知する(ステップS705)。CA#iは、各CPU#j,#kの準備が完了すると、ホスト装置120にデータ転送を要求する(ステップS706)。

0071

図7Bのシーケンス図において、まず、ホスト装置120は、CA#iからデータ転送の要求を受け付けると、ライトデータの転送を開始する(ステップS707)。CA#iは、FPGA#iを介して、担当CM#jのMEM#jおよびミラーCM#kのMEM#kにライトデータを転送する(ステップS708)。ライトデータには、例えば、データ訂正コード(BCC:Block Check Code)が付加される。

0072

そして、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)。

0073

各CPU#j,#kは、割り込みを受けると、割込要因を読み込んで刈り取る(ステップS711)。そして、各CPU#j,#kは、データ転送が正常に完了したことを確認したら、各MEM#j,#kのResponse queueにデータ転送正常完了のIOCBを格納して、レジスタ(IOCBDMA起動)への書き込みを行う(ステップS712)。この際、CPU#jは、直接CA#iへアクセスする一方で、CPU#kは、FPGA#iの仮想的なBus/Dev/Funcにアクセスする。

0074

つぎに、FPGA#iは、各CPU#j,#kにおけるデータ転送完了を待ち合わせて、各CPU#j,#kのデータ転送が正常に完了すると、その旨をCA#iに通知する(ステップS713)。そして、CA#iは、各CPU#j,#kのデータ転送が正常に完了すると、ホスト装置120にStatus転送正常完了通知を送信する(ステップS714)。

0075

なお、ホスト装置120にStatus転送正常完了通知が送信されると、各CPU#j,#kに対して処理が正常に完了したことが通知され、その結果、各CPU#j,#kにおいて、キャッシュ領域を解放するなどの後処理が行われる。

0076

これにより、レシーブCM#iのFPGA#iにおいて、ホスト装置120からのライトリクエストの宛先を解析して、ライトリクエストおよびライトデータを担当CM#jおよびミラーCM#kに転送することができる。

0077

(ストレージシステム100のリードリクエスト処理手順)
つぎに、ストレージシステム100のリードリクエスト処理手順について説明する。ここでは、レシーブCMが担当CMと異なる場合を例に挙げて説明する。

0078

図8は、ストレージシステム100のリードリクエスト処理手順の一例を示すシーケンス図である。図8のシーケンス図において、まず、レシーブCM#iのCA#iは、ホスト装置120からリードリクエスト(FCP Command)を受け付けると、ホスト装置120からのリードリクエストをFPGA#iに出力する(ステップS801)。

0079

つぎに、レシーブCM#iのFPGA#iは、CA#iからリードリクエストを受け付けると、担当CM#jにリードリクエストを転送するリクエスト処理を実行する(ステップS802)。この結果、担当CM#jのMEM#jのResponse queueにIOCBが格納される。

0080

なお、FPGA#iリクエスト処理の具体的な処理手順は、図9を用いて後述する。

0081

つぎに、レシーブCM#iのCA#iは、FPGA#iを介して、担当CM#jのCPU#j(ドライバ)に割り込みを通知する(ステップS803)。FPGA#iでは、直前の宛先、すなわち、リードリクエストの転送先である担当CM#jの論理アドレスが記憶されている。このため、CA#iからの割り込みは、担当CM#jの論理アドレス宛に通知される。

0082

担当CM#jのCPU#jは、割り込みを受けると、直接CA#iへアクセスして割込要因を読み込む(ステップS804)。ここで、割込要因がIOCBであれば、CPU#jにおいて、MEM#j内のDMA情報を参照して、CA#iが読み込むMEM#j内の領域にリードデータを書き込む等の準備が行われる。

0083

CA#iは、CPU#jの準備が完了し、転送データ(リードデータ)の転送準備が完了すると、MEM#jからリードデータを読み出して、ホスト装置120にリードデータ(BCC取外)を転送する(ステップS805)。そして、CA#iは、リードデータの転送が完了すると、ホスト装置120にReadデータ送信正常完了通知を送信する(ステップS806)。

0084

なお、ホスト装置120にReadデータ送信正常完了通知が送信されると、CPU#jに対して処理が正常に完了したことが通知され、その結果、CPU#jにおいて、MEM#j内のリードデータを削除するなどの後処理が行われる。

0085

これにより、レシーブCM#iのFPGA#iにおいて、ホスト装置120からのライトリクエストの宛先を解析して、リードリクエストを担当CM#jに転送することができる。

0086

(リクエスト処理の具体的処理手順)
つぎに、FPGA#iのリクエスト処理の具体的な処理手順について説明する。

0087

図9は、FPGA#iのリクエスト処理の具体的処理手順の一例を示すフローチャートである。図9のフローチャートにおいて、まず、FPGA#iは、ホスト装置120からのリクエストをCA#iから受け付ける(ステップS901)。つぎに、FPGA#iは、受け付けたリクエストがライトリクエストであるか否かを判断する(ステップS902)。

0088

ここで、ライトリクエストの場合(ステップS902:Yes)、FPGA#iは、ライトリクエスト(FCP Command)に含まれるアクセス先のLUNを特定する(ステップS903)。つぎに、FPGA#iは、対応情報リスト300を参照して、特定したアクセス先のLUNに対応する担当CM#jおよびミラーCM#kの論理アドレスを特定する(ステップS904)。

0089

そして、FPGA#iは、特定した担当CM#jおよびミラーCM#kの論理アドレスをライトリクエストの宛先にそれぞれ設定して、当該ライトリクエストをSW#iに転送し(ステップS905)、本フローチャートによる一連の処理を終了する。これにより、FPGA#iにより、ホスト装置120からのライトリクエストを担当CM#jおよびミラーCM#kに転送することができる。

0090

また、ステップS902において、リードリクエストの場合(ステップS902:No)、FPGA#iは、ライトリクエスト(FCP Command)に含まれるアクセス先のLUNを特定する(ステップS906)。つぎに、FPGA#iは、対応情報リスト300を参照して、特定したアクセス先のLUNに対応する担当CM#jの論理アドレスを特定する(ステップS907)。

0091

そして、FPGA#iは、特定した担当CM#jの論理アドレスをリードリクエストの宛先に設定して、当該リードリクエストをSW#iに転送し(ステップS908)、本フローチャートによる一連の処理を終了する。これにより、FPGA#iにより、ホスト装置120からのリードリクエストを担当CM#jに転送することができる。

0092

以上説明したように、実施の形態にかかるCM#iによれば、CA#iに直接接続されるFPGA#i(あるいは、専用LSI)により、ホスト装置120からのライトリクエストを受け付けたことに応じて、対応情報リスト300を参照して、ライトリクエストから特定されるLUNに対応する担当CM#jの論理アドレスを特定することができる。そして、CM#iによれば、FPGA#i(あるいは、専用LSI)により、特定した担当CM#jの論理アドレスを宛先に設定して、ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送することができる。

0093

これにより、CA#iに直接接続されたFPGA#i(あるいは、専用LSI)を用いて、CPU#iやMEM#iを介さずに、ホスト装置120からのライトリクエストの転送先を解析して、担当CM#jへライトリクエストおよびライトデータを転送することができる。この結果、ライトリクエスト時に、ホスト装置120からのデータをMEM#iに一旦格納する必要がなくなり、CPU#iが処理する場合に比べて、ライトリクエストに対する応答時間の増加を抑制することができる。また、ライトリクエスト時に、CPU#iへの割り込みが発生しないため、CPU#iで実行中の処理が中断されるのを防いで、ストレージシステム100の性能向上を図ることができる。

0094

また、CM#iによれば、FPGA#i(あるいは、専用LSI)により、対応情報リスト300を参照して、さらに、ライトリクエストから特定されるLUNに対応するミラーCM#kの論理アドレスを特定することができる。そして、CM#iによれば、FPGA#i(あるいは、専用LSI)により、特定したミラーCM#kの論理アドレスを宛先に設定して、ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送することができる。

0095

これにより、CA#iに直接接続されたFPGA#i(あるいは、専用LSI)を用いて、CPU#iやMEM#iを介さずに、ミラーCM#kへライトリクエストおよびライトデータを転送して、ライトデータの冗長化を行うことができる。また、担当CM#jおよびミラーCM#kに対して一斉にデータ転送することができるため、担当CM#kからミラーCM#kへデータ転送する場合に比べて、ライトリクエストに対する応答時間を短縮することができる。

0096

また、CM#iによれば、FPGA#i(あるいは、専用LSI)により、ホスト装置120からのリードリクエストを受け付けたことに応じて、対応情報リスト300を参照して、リードリクエストから特定されるLUNに対応する担当CM#jの論理アドレスを特定することができる。そして、CM#iによれば、FPGA#i(あるいは、専用LSI)により、特定した担当CM#jの論理アドレスを宛先に設定して、リードリクエストを転送することができる。

0097

これにより、CA#iに直接接続されたFPGA#i(あるいは、専用LSI)を用いて、CPU#iやMEM#iを介さずに、ホスト装置120からのリードリクエストの転送先を解析して、担当CM#jへリードリクエストを転送することができる。また、リードリクエスト時に、CPU#iへの割り込みが発生しないため、CPU#iで実行中の処理が中断されるのを防いで、ストレージシステム100の性能向上を図ることができる。

0098

上述した実施の形態に関し、さらに以下の付記を開示する。

0099

(付記1)ホスト装置に接続されるインターフェースと、
前記インターフェースに直接接続される、内部の回路を再構成可能な集積回路または専用の集積回路と、を有し、
前記集積回路は、
前記インターフェースを介して前記ホスト装置からのライトリクエストを受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、前記ライトリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、
特定した前記論理アドレスを宛先に設定して、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送する、ことを特徴とするストレージ制御装置。

0100

(付記2)前記対応情報は、さらに、前記記憶装置と、前記記憶装置へのリクエストにかかるライトデータのミラーリングを行う第2のストレージ装置との対応関係を示し、
前記集積回路は、
前記対応情報を参照して、さらに、前記ライトリクエストから特定される記憶装置に対応する第2のストレージ制御装置の論理アドレスを特定し、
特定した前記第2のストレージ制御装置の論理アドレスを宛先に設定して、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送する、ことを特徴とする付記1に記載のストレージ制御装置。

0101

(付記3)前記集積回路は、
前記インターフェースを介して前記ホスト装置からのリードリクエストを受け付けたことに応じて、前記対応情報を参照して、前記リードリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、
特定した前記論理アドレスを宛先に設定して、前記リードリクエストを転送する、ことを特徴とする付記1または2に記載のストレージ制御装置。

0102

(付記4)前記内部の回路を再構成可能な集積回路は、FPGA(Field Programmable Gate Array)であることを特徴とする付記1〜3のいずれか一つに記載のストレージ制御装置。

0103

(付記5)複数のストレージ制御装置を含むストレージシステムであって、
前記複数のストレージ制御装置のうちのいずれかのストレージ制御装置は、
ホスト装置に接続されるインターフェースと、
前記インターフェースを介して前記ホスト装置からのライトリクエストを受け付けたことに応じて、記憶装置と、互いに通信可能な複数のストレージ制御装置のうちの前記記憶装置へのリクエストを処理するストレージ制御装置の論理アドレスとの対応関係を示す対応情報を参照して、前記ライトリクエストから特定される記憶装置に対応するストレージ制御装置の論理アドレスを特定し、特定した前記論理アドレスを宛先に設定して、前記ライトリクエストおよび当該ライトリクエストにかかるライトデータを転送する、内部の回路を再構成可能な集積回路または専用の集積回路と、
を有することを特徴とするストレージシステム。

0104

100ストレージシステム
110 FRT
111 FRT−SW
120ホスト装置
300対応情報リスト
401 受付部
402 特定部
403転送部
#0〜#3,#i,#j,#k CM
#i CPU
#iMEM
#iIOC
#i CA
#iFPGA
#i SW

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ