JP2012531656A - 複数のコントローラを備えたストレージシステム - Google Patents

複数のコントローラを備えたストレージシステム Download PDF

Info

Publication number
JP2012531656A
JP2012531656A JP2012516982A JP2012516982A JP2012531656A JP 2012531656 A JP2012531656 A JP 2012531656A JP 2012516982 A JP2012516982 A JP 2012516982A JP 2012516982 A JP2012516982 A JP 2012516982A JP 2012531656 A JP2012531656 A JP 2012531656A
Authority
JP
Japan
Prior art keywords
transfer
parameter
area
circuit
controller
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.)
Granted
Application number
JP2012516982A
Other languages
English (en)
Other versions
JP5358736B2 (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2012531656A publication Critical patent/JP2012531656A/ja
Application granted granted Critical
Publication of JP5358736B2 publication Critical patent/JP5358736B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • G06F2212/286Mirrored cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

第1のコントローラと、前記第1のコントローラに第1パスを介して接続された第2のコントローラとを備える。第1のコントローラが、データ転送を制御する回路である第1の中継回路と、第1の中継回路に第1の第2パスを介して接続された第1のプロセッサと
を有する。第2のコントローラが、データ転送を制御する回路であり、第1パスを介して第1の中継回路に接続された第2の中継回路と、第2の中継回路に第2の第2パスを介して接続された第2のプロセッサとを有する。第1のプロセッサが、第1の中継回路を介することなく第1の第3パスを介して第2の中継回路に接続されており、I/O処理において、第1の第3パスを介して前記第2の中継回路にアクセスする。第2のプロセッサが、第2の中継回路を介することなく第2の第3パスを介して第1の中継回路に接続されており、I/O処理において、第2の第3パスを介して第1の中継回路にアクセスする。
【選択図】図2

Description

本発明は、複数のコントローラを備えたストレージシステムに関する。
近年、低コストでありながら高性能かつ高機能のストレージシステムが市場から要求されている。ストレージシステムは、一般に、コントローラと物理記憶装置群とに大別することができるが、ストレージシステムを高性能かつ高機能にする方法としては、コントローラを高性能かつ高機能にする方法がある。具体的には例えば、プロセッサの周波数を上げる、コントローラ内でのデータ転送を行うLSI(Large Scale Integration)の性能を高くするなどの方法が考えられる。
しかし、コントローラを高性能かつ高機能にすると、通常、ストレージシステム自体のコストは上昇する。そのため、コントローラを高性能かつ高機能にすることに代えて、ストレージシステム内での処理を効率的にする必要があると考えられる。
ストレージシステム内での処理の効率化に関する技術が、例えば、特許文献1及び2に開示されている。特許文献1によれば、第1のコントローラと第2のコントローラとの間に、高レスポンスに適した第1種のパスと高スループットに適した第2種のパスとが設けられ、それら二種類のパスが使い分けられる。特許文献2によれば、第1種のリソースと第2種のリソースのうち一方の種類のリソースの負荷が高く他方の種類のリソースの負荷に余裕がある場合には、他方の種類のリソースの負荷がより高くなるような処理が実行される。
特開2001−43026号公報 特開2008−186108号公報
第1及び第2のコントローラを有するストレージシステムでは、通常、第1のコントローラの電源と第2のコントローラの電源は異なっており、第1のコントローラに障害が生じた場合、第2のコントローラが、第1のコントローラに代わって稼働する。このため、第1のコントローラが稼働している間、第2のコントローラが有する資源が利用されないようになっており、第1のコントローラの負荷を低減することができない。
具体的には、例えば、第1のコントローラは、ホスト装置から受けたライト要求に付随するデータ(ライトデータ)を、ライトデータが失われないようにするために、第1のコントローラが有するキャッシュメモリ(第1のキャッシュメモリ)だけでなく、コントローラ間のパスを介して、第2のコントローラが有するキャッシュメモリ(第2のキャッシュメモリ)にも書き込むことができる。
しかし、それは、ライトデータのミラーリングにすぎず、第1のコントローラの負荷を低減することにはならない。
そこで、本発明の目的は、第1のコントローラの負荷を低減できるように第2のコントローラの資源を利用可能にすることである。
第1のコントローラと、前記第1のコントローラに第1パスを介して接続された第2のコントローラとを備える。第1のコントローラが、データ転送を制御する回路である第1の中継回路と、第1の中継回路に第1の第2パスを介して接続された第1のプロセッサと
を有する。第2のコントローラが、データ転送を制御する回路であり、第1パスを介して第1の中継回路に接続された第2の中継回路と、第2の中継回路に第2の第2パスを介して接続された第2のプロセッサとを有する。第1のプロセッサが、第1の中継回路を介することなく第1の第3パスを介して第2の中継回路に接続されており、I/O処理において、第1の第3パスを介して前記第2の中継回路にアクセスする。第2のプロセッサが、第2の中継回路を介することなく第2の第3パスを介して第1の中継回路に接続されており、I/O処理において、第2の第3パスを介して第1の中継回路にアクセスする。
記憶制御装置は、物理記憶デバイスを有したストレージシステムであっても良いし、ストレージシステムに備えられる装置であっても良いし、ホスト装置とストレージシステムとの間の通信を中継する中継装置(例えばスイッチ装置)であっても良い。
第1のコントローラの負荷を低減できるように第2のコントローラの資源を利用することができる。
図1は、本発明の第1の実施形態にかかるストレージシステムを備えた計算機システムの構成の一例を示すブロック図である。 図2は、ストレージコントローラ21のブロック図である。 図3は、SPU25aの詳細ブロック図である。なお、他のSPU25bも同様の構成を有する。 図4は、MP11の詳細ブロック図である。 図5は、キャッシュメモリ24a及び25bの内部のデータ領域を示したブロック図である。 図6は、ストレージシステム20がホスト装置10からリード要求を受領した場合の処理(I/O処理のうちのリード処理)の流れを示すラダーチャートである。 図7は、ストレージコントローラ21がホスト装置10からライト要求を受領した場合の処理(I/O処理のうちのライト処理)の流れを示したラダーチャートである。 図8は、DMAC251の内部の構造、及び、DMAC251とパケットユニット252及びDMAC制御エリア2431との関係を示すブロック図である。 図9は、転送パラメータ30およびステータスメッセージ40の詳細を示す。 図10は、DMAC選択処理のフローチャートである。 図11Aは、キャッシュデータエリアが固定的に区分されている場合のリード時のキャシュ利用の一例を示す。 図11Bは、キャッシュデータエリアが固定的に区分されている場合のライト時のキャシュ利用の一例を示す。 図12Aは、本発明の第1の実施形態でのリード時のキャシュ利用の一例を示す。 図12Bは、本発明の第1の実施形態でのライト時のキャシュ利用の一例を示す。 図13は、本発明の第2の実施形態にかかるストレージシステムのストレージコントローラの内部構成を示すブロック図である。 図14は、本発明の第3の実施形態におけるインデックスを示す。 図15は、本発明の第4の実施形態におけるインデックス及びパラメータキューの構成を示す。
以下、図面を参照して、本発明の幾つかの実施形態を説明する。
図1は、本発明の第1の実施形態にかかるストレージシステムを備えた計算機システムの構成の一例を示すブロック図である。
計算機システムは、ストレージシステム20と、SANスイッチ30と、複数のホスト装置10とを有する。ストレージシステム20が、SAN(Storage Area Network)を構成するSANスイッチ30を介して、複数のホスト装置10に接続される。例えば、SANスイッチ30は、ストレージシステム20にホストチャネル40を介して接続されるとともに、複数のホスト装置10にそれぞれチャネル11を介して接続される。
ストレージシステム20は、ストレージコントローラ21と、記憶媒体としての複数のHDD(Hard Disk Drive)23とを有する。ストレージコントローラ21に、HDDチャネル22(Hard Disk Drive Channel)を介して、複数のHDD23が接続される。HDDチャネル22は冗長構成にしてもよい。記憶媒体は、HDD23に代えて、フラッシュメモリやDRAM(Dynamic Random Access Memory)などを用いたSSD(Solid State Drive)、或いは、他の記憶媒体でもよい。
ストレージコントローラ21は、ホスト装置10からのライト要求に従い、ライト要求に付随するライト対象のデータをHDD23に格納する。ストレージコントローラ21は、また、ホスト装置10からのリード要求に従い、リード対象のデータをHDD23から読み出し、そのリード対象のデータをホスト装置10へ送信する。
図2は、ストレージコントローラ21のブロック図である。
本実施形態では、ストレージコントローラ21は障害に備え冗長構成となっている。例えば、図2に示すように、ストレージコントローラ21は、第1のコントローラ部21a及び第2のコントローラ部21bの二つのコントローラ部を備える。各コントローラ部21a、21bを点線で示す。図示の例では、第1のコントローラ部21aと第2のコントローラ部21bは、同じ構成となっているが、異なった構成となっていてもよい。本実施形態では、後に説明する通り、稼働中において、第1のコントローラ部21a及び第2のコントローラ部21bのいずれも、自分のコントローラ部内の資源だけでなく相手のコントローラ部内の資源を活用することができるため、第1のコントローラ部21a及び第2のコントローラ部21bをともに稼働させることができる。つまり、ホスト装置が一方のコントローラのみに接続されている場合においても、接続された一方が稼動している間に他方が待機している必要は無く、両方が稼動することができる。
第1のコントローラ部21aには第1のPS(Power Supply)50aから電力が供給され、第2のコントローラ部21bには第2のPS50bから電力が供給される。
コントローラ部21a(21b)は、SPU(Storage Processing Unit)25a(25b)と、MP(Micro Processor)26a(26b)と、HPC(Host Channel Protocol)212a(212b)と、DPC(Disc Channel Protocol Tip)211a(211b)と、キャッシュメモリ24a(24b)と、を備える。
以下、第1のコントローラ部21aを例にとり、コントローラ部21a及び21bを詳細に説明する。なお、以下の説明では、適宜、第1のコントローラ部21aの要素の名称の前に「第1の」と付し、第2のコントローラ部21bの要素の名称の前に「第2の」と付すことにする。
第1のSPU25aは、ハードウェア回路、例えばLSI(Large Scale Integration)である。第1のSPU25aは、第1のキャッシュメモリ24aに接続され、これを制御する。第1のSPU25aは、第1のHPC212aを介してホストチャネル40に接続される。第1のHPC212aは、ホストチャネル40の下位レベルのプロトコル処理を行って、第1のSPU25aに接続可能な伝送方式に変換する。第1のSPU25aは、また、第1のDPC211aを介してHDDチャネル22に接続される。第1のDPC211aは、HDDチャネル22の下位レベルのプロトコル処理を行って、第1のSPU25aに接続可能な伝送方式に変換する。
第1のコントローラ部21aは第2のコントローラ部21bに接続される。具体的には、
第1のSPU25aと第2のSPU25bとが、2本のSPU間パスC1、C2により接続される。SPU間パスの数は、2より多くても少なくてもよい。SPU間パスC1、C2は、キャッシュメモリ24a、24bと後述するDMACとの間のアクセスなどに用いられる。
本実施形態では、第1のMP26aとして、MP11及び12があり、第2のMP26bとして、MP21及び22がある。
第1のMP11(12)が、SPU−MPパスN11(N12)により第1のSPU25aに接続されている。同様に、第2のMP21(22)が、SPU−MPパスN21(N22)により第2のSPU25bに接続されている。以下、MPとそのMPを有するコントローラ部内のSPUとを結ぶSPU−MPパスを、「ノーマルパス」と呼ぶ。
本実施形態では、一方のコントローラ部内のMPが他方のコントローラ部内のSPUにおける資源を直接利用できるようにするための一つの工夫として、コントローラ部をまたぐSPU−MPパスが用意される。以下、そのSPU−MPパスを「ダイレクトパス」と呼ぶ。具体的には、第1のSPU25aに、第2のMP21(22)が、ダイレクトパスD21(22)により接続される。同様に、第2のSPU25bに、第1のMP11(12)が、ダイレクトパスD11(12)により接続される。
すなわち、本実施形態によれば、第1のSPU25aには、第1のMP11(12)がノーマルパスN11(N12)で接続されるとともに、第2のMP21(22)がダイレクトパスD21(D22)で接続されることとなる。同様に、第2のSPU25bには、第2のMP21(22)がノーマルパスN21(N22)で接続されるとともに、第1のMP11(12)がダイレクトパスD11(D12)で接続されることとなる。
この構成において、第1のMP11(12)は、I/O処理(例えば、ライト要求に従う処理、及び、リード要求に従う処理)において、第1のSPU25a内の資源(例えば後述のDMAC)又は第1のキャッシュメモリ24aには、ノーマルパスN11(N12)を介してアクセスし、第2のSPU25b内の資源(例えば後述のDMAC)又は第2のキャッシュメモリ24bには、ダイレクトパスD11(D12)を介してアクセスする。また、第1のMP11(12)は、ダイレクトパスD11(D12)の障害が検出された場合、第1のSPU25a及びSPU間パスC1又はC2を介して、第2のSPU25b内の資源(例えば後述のDMAC)又は第2のキャッシュメモリ24bにアクセスすることができる。
一方、第2のMP21(22)は、I/O処理において、第2のSPU25b内の資源(例えば後述のDMAC)又は第2のキャッシュメモリ24bに、ノーマルパスN21(N22)を介してアクセスし、第1のSPU25a内の資源(例えば後述のDMAC)又は第1のキャッシュメモリ24aに、ダイレクトパスD21(D22)を介してアクセスする。また、第2のMP21(22)は、ダイレクトパスD21(D22)の障害が検出された場合、第2のSPU25b及びSPU間パスC1又はC2を介して、第1のSPU25a内の資源(例えば後述のDMAC)又は第1のキャッシュメモリ24aにアクセスすることができる。
図3は、SPU25aの詳細ブロック図である。なお、他のSPU25bも同様の構成を有する。
SPU25aは、DMAC(Direct Memory Access Controller)251と、パケットユニット252と、バッファ253と、障害管理ユニット257と、メモリコントローラ(MC)258と、複数のポートと、を備える。
各ポートは、プロトコルチップポート(P−P)254、SPU間パスポート(I−P)255、及び、MPポート(M−P)256のいずれかである。I−P255は、SPU間パスC1又はC2が接続されたポートである。M−P256は、ノーマルパス又はダイレクトパスが接続されたポートである。P−P254は、プロトコルチップ(HPC又はDPC)が接続されたポートである。MC258は、キャッシュメモリ24a、24bへのアクセスの制御を行う回路である。
パケットユニット252は、SPU25が受信したデータについて、宛先アドレスを識別し、適切なポート若しくはコンポーネントへのパケット転送を行う。ホスト装置10若しくはHDD23から、HPC212若しくはDPC211がデータを受信した場合には、受信したデータを含んだパケットは、パケットユニット252を介してバッファ253に格納される(ただしデータ以外の要求などを含んだパケットはMPに転送される)。また、バッファ253に格納されたデータがホスト装置10若しくはHDD23へ転送される場合には、バッファ253に格納されたデータを含んだパケットは、パケットユニット252を介してHPC212若しくはDPC211に転送され、その後、HPC212若しくはDPC211からホスト装置10若しくはHDD23へ転送される。
本実施形態においてバッファ253はSPU25内に備えているが、構成によってはキャッシュメモリ24の一部や、後述するMP11(12,21,22)内のメモリ263の一部を利用して配しても良い。
DMAC251は、転送パラメータによるMP26a又は26bからの指示に基づいて、バッファ253に格納されたデータの、キャッシュメモリ24a、24bへの転送を制御する。DMAC251は、また、転送パラメータによるMP26a、26bからの指示に基づいて、キャッシュメモリ24a、24bに格納されたデータの、バッファ253へ転送を制御する。転送パラメータについては後述する。
障害管理ユニット257は、SPU25内の各資源を有効に使用するために、SPU25内の各資源の障害発生を監視するユニットである。障害管理ユニット257は、SPU25内の各資源(コンポーネント)に接続されている。SPU25内の或る資源で障害が発生した場合には、障害管理ユニット257は、障害の発生を検知し、各MP26a、26bに、障害が生じた資源を報告する。例えば、或るM−P256に障害が発生した場合、障害が発生したM−P256に接続しているMP26a又は26bは、ノーマルパス又はダイレクトパス経由では、SPU25内の資源(例えばDMAC251)にアクセスすることができなくなってしまう。このため、障害管理ユニット257は、障害が発生したM−P256に接続されているMP26a又は26bが行う処理を、障害が発生していないM−P256に接続されているMP26a又は26bに引き継がせる。
図4は、MP11の詳細ブロック図である。なお、他のMP12、21及び22もそれぞれ同様の構成を有する。
MP11は、CPU261と、周辺ユニット262と、メモリ263と、を備える。
CPU261は、メモリ263からプログラムを読み出し、そのプログラムを実行することで、プログラムに基づく処理を行う。
周辺ユニット262は、CPU261とメモリ263に接続されているインターフェース回路である。周辺ユニット262には、SPU25aに接続されるノーマルパスN11と、SPU25bに接続されるダイレクトパスD11とが接続される。周辺ユニット262は、CPU261とメモリ263との間の通信や、CPU261とノーマルパスN11又はダイレクトパスD11を介してのSPU25a又は25bとの通信を制御する。なおCPU261の種類によっては、メモリ263が周辺ユニット262を介さずにCPU261に直接接続される形態や、周辺ユニット262がCPU261と一体となっている形態であっても構わない。
メモリ263は、CPU261(または、SPU25a又は25b)からアクセスされる。メモリ263は、プログラムエリア263と、ワークエリア2632と、DMACエリア2633と、メールボックス2634とを備える。
プログラムエリア263には、CPU261が実行するプログラムが格納される。ワークエリア2632は、CPU261がプログラムを実行するために確保された作業領域である。DMACエリア2633には、DMAC251からの転送ステータスが格納される。メールボックス2634は、他のMP12、21又は22との通信のために用いられる。
図5は、キャッシュメモリ24a及び24bの内部のデータ領域を示したブロック図である。
キャッシュメモリ24a(24b)は、制御情報エリア242a(242b)と、転送パラメータエリア243a(243b)と、キャッシュデータエリア241a(241b)と、を備える。
制御情報エリア242a(242b)は、制御情報を記憶する。制御情報は、例えば、下記の(1)〜(5)の情報:
(1)データを格納するスロット2411a(2411b)が指定されるディレクトリ情報;
(2)スロット2411a(2411b)の使用状況を示す情報;
(3)使用中のスロット2411a(2411b)について、どのスロット2411a(2411b)にどのデータが格納されているかを示すデータ格納情報;
(4)複数のHDD23を仮想的に1つのボリュームとして提供するRAID制御の設定情報;
(5)バックアップ機能、スナップショット機能及びリモートコピー機能など、機能に関する情報、
を含む。
転送パラメータエリア243a(243b)には、MP26a又は26bがセットした転送パラメータが格納される。転送パラメータエリア243に格納された転送パラメータは、DMAC251にフェッチされて実行される。転送パラメータについては後述する。
本実施形態では、転送パラメータエリア243a(243b)はキャッシュメモリ24a(24b)に設けられている。しかし、例えば、転送パラメータエリア243a及び/又は243bは、他の記憶資源、例えば、バッファ253及び/又はメモリ263(MP26a(26b)内の記憶資源)に設けられてもよい。メモリ263が転送パラメータエリア243a(243b)を有する場合、例えば、DMACエリア2633に転送パラメータエリア243a(243b)が設けられる。
キャッシュデータエリア241a(241b)は、複数のスロット2411a(2411b)を有する。スロット2411a(2411b)には、ホスト装置10からのライトコマンドに従うライトデータ又はリードデータが一時的に格納される。図では、ライトデータは、アルファベット「W」と、数字との組合せであらわされている。リードデータは、アルファベット「R」と、数字との組合せであらわされている。
キャッシュデータエリア241a(241b)には、複数のスロットが設けられており、ライトデータの書き込みエリアとリードデータの書き込みエリアといった複数のエリアが固定的に設けられていない。このため、ライトデータ(W)及びリードデータ(R)が、キャッシュデータエリア241a(241b)の任意のスロット2411に格納される。特に、ライトデータ(W)は、キャッシュデータエリア241a及び241bの両方に格納される。つまり、データのいわゆるダブルライト、言いかえれば、データのキャッシュミラーリングが行われる。
図9は、転送パラメータ30およびステータスメッセージ40の詳細を示す。
まず、転送パラメータ30について以下に説明する。
転送パラメータ30は、データの転送に関するパラメータである。転送パラメータ30は、IDフィールド301と、オペレーションフィールド302と、バッファアドレスフィールド303と、キャッシュメモリアドレスフィールド304と、サイズフィールド305とを備える。
IDフィールド301は、MP26a(26b)に付与されたIDが設定される領域である。
オペレーションフィールド302は、オペレーションの種類を表す情報が設定される領域である。オペレーションの種類には、例えば、キャッシュメモリ24a(又は24b)からデータを転送する(読み出す)「リード」、単一のキャッシュメモリ24a(又は24b)にデータを転送する(書き込む)「ライト」、及び、キャッシュメモリ24a及び24bの両方にデータを転送する(書き込む)「ダブルライト」がある。
バッファアドレスフィールド303は、バッファ253のアドレスを表す値(バッファアドレス値)が設定される領域である。
キャッシュアドレスフィールド304は、キャッシュメモリ24a及び/又は24bのアドレスを表す値(キャッシュアドレス値)が設定される領域である。キャッシュメモリ値は、例えば、キャッシュメモリ24a及び/又は24bの識別情報と、スロット2411の位置情報とを含んでよい。オペレーションの種類が「ダブルライト」のときには、当該アドレスフィールド304には、キャッシュメモリ24a及び24bの両方のキャッシュアドレス値が設定される。
サイズフィールド305は、転送対象のデータのデータサイズ(データ長)を表す情報(データサイズ情報)が設定されるフィールドである。
なお、ストレージコントローラ21は、ライトの時に、バッファ253内の連続するライトデータを、複数のキャッシュメモリ24に分割して格納するスキャッタ機能や、リードの時に、複数のキャッシュメモリ24に分割されていたリードデータを、一つのバッファ内に連続して格納するギャザー機能を備えてもよい。これらスキャッタ機能若しくはギャザー機能を用いる場合には、転送パラメータ30に、キャッシュアドレスフィールド304及びサイズフィールド305は複数組含まれることとなる。
次に、ステータスメッセージ40について以下に説明する。
ステータスメッセージ40は、転送パラメータ30に対応するメッセージであり、転送パラメータ30の実行の結果のステータスを表す。ステータスメッセージ40は、IDフィールド401と、ステータスフィールド402とを備える。
IDフィールド401は、対応する転送パラメータ30に設定されていたIDと同じIDが設定される領域である。従って、IDフィールド401内のIDを用いて、そのIDを有するステータスメッセージ40に対応する転送パラメータ30を特定することができる。
ステータスフィールド402は、転送パラメータ30の実行に関するステータスを表す情報が設定される領域である。ステータスは、例えば、「正常終了」、「転送中キャッシュメモリ障害検出」、「転送中パス障害検出」及び「転送パラメータフォーマット不正」がある。
ステータスメッセージ40は、DMAC251が転送パラメータ30の実行が完了したことを検知したときにMP26a、26bに送信するメッセージである。ステータスメッセージ40を受信することにより、MP26a、26bは転送状況を知ることができる。
すなわち、MP26a、26bが、受信していないステータスメッセージ40に対応する転送パラメータ30をカウントすることで、未完了の転送パラメータ30の数を知ることができる。例えば、DMAC251の負荷が高ければ、結果として転送パラメータ30の処理速度は遅くなる。具体的には、例えば、転送パラメータ30の実行頻度よりも転送パラメータ30が発行頻度の方が高ければ、未完了の転送パラメータ30の数が増えていくことになる。つまり、未完了の転送パラメータ30の数を知ることで、各MP26a、26bは、他のMP26a、26bと通信せずともDMAC251の負荷状況を知ることができる。
図8は、DMAC251の内部の構造、及び、DMAC251とパケットユニット252及びDMAC制御エリア2431との関係を示すブロック図である。以下の説明では、図8に示すDMAC251及びパケットユニット252は、SPU25a内の要素であるとする。
まず、DMAC制御エリア2431の内部構造について説明する。
DMAC制御エリア2431は、キャッシュメモリ24aにおける転送パラメータエリア243aの内部に設けられた領域である。DMAC制御エリア2431は、複数のパラメータキュー24311を備える。DMAC制御エリア2431内の複数のパラメータキュー24311は、ストレージコントローラ21内のMPに一対一で対応づけられる。つまり、各DMAC251について、MP毎にパラメータキュー24311が設けられている。各パラメータキュー24311には、例えば、対応するMPのID(対応MP−ID)が付与される。
次に、DMAC251の内部構造を説明する。
DMAC251は、インデックス2511と、セレクタ2512と、パラメータフェッチユニット2513と、アドレスレジスタ2514と、カウントレジスタ2515と、転送制御ユニット2516とを備える。
インデックス2511は、そのDMAC251についてのパラメータキュー24311と同様に、ストレージコントローラ21内のMPに一対一で対応づけられる。つまり、DMAC251には、MP毎にインデックス2511が設けられており、各インデックス2511は各パラメータキュー24311に対応している。各インデックス2511には、例えば、対応するMPのID(対応MP−ID)が付与される。すなわち、MP26a、26bが個々に有するIDは、各パラメータキュー24311に付与された対応MP−IDであるとともに、各インデックス2511に付与された対応MP−IDでもある。
パラメータキュー24311には、そのキュー24311に対応したMP26a又は26bから転送パラメータ30が格納される。パラメータキュー24311からは、先に格納された転送パラメータ30から先に、パラメータフェッチユニット2513によってフェッチされる。つまり、パラメータキュー24311内の未処理の転送パラメータ30は、格納された順に処理される。
インデックス2511には、そのインデックス2511に対応したパラメータキュー24311についての未完了の転送パラメータ30の数(つまりキュー24311に蓄積されている転送パラメータ30の数)が記憶されている。例えば、MP26a又は26bにより、そのMPに対応するパラメータキュー24311に転送パラメータ30が一つ格納された場合、そのMP対応するインデックス2511が記憶する値に1がインクリメントされる。また、パラメータフェッチユニット2513により、パラメータキュー24311から一つの転送パラメータ30がフェッチされた場合、そのパラメータキュー24311に対応するインデックス2511が記憶する値から1がデクリメントされる。
セレクタ2512は、インクリメントのあったインデックス2511(以下、対象インデックスという)を選択し、選択した対象インデックスの対応IDをパラメータフェッチユニット2513に送る。セレクタ2512による対象インデックスの選択は、例えば、パラメータフェッチユニット2513が、使用可能な状況(「READY」という状況)であった場合に行われる。対象インデックスが複数あった場合、セレクタ2512が所定のルール(例えばラウンドロビン)で一つの対象インデックスを選択する。
パラメータフェッチユニット2513は、セレクタ2512から受け取った対応IDが付与されている対象インデックス2511から転送パラメータ30をフェッチする。パラメータフェッチユニット2513は、フェッチした転送パラメータ30内のバッファアドレス値及びキャッシュアドレス値を、アドレスレジスタ2514にセットし、且つ、その転送パラメータ30内のデータサイズ値をカウントレジスタ2515にセットする。また、転送制御ユニット2516が使用可能な状況であった場合には、パラメータフェッチユニット2513は、転送制御ユニット2516に対して、例えば、転送パラメータ30のオペレーション種類及び上記受け取った対応IDを伝えるとともに、そのオペレーション種類に応じた転送開始のトリガーをかける。トリガーとしては、リードのトリガーとライトのトリガーとがある。
転送制御ユニット2516は、パラメータフェッチユニット2513から転送開始のトリガーを受けた場合に、キャッシュメモリとバッファとの間の転送制御を行う。
例えば、リードのトリガーがかけられた場合には、転送制御ユニット2516は、レジスタ2514に設定されているキャッシュメモリ値が表すスロットに格納されているデータ(リードデータ)を、そのスロットから、レジスタ2514に設定されているバッファアドレス値が表すバッファ領域(バッファ253内の領域)に転送する。また、例えば、ライトのトリガーがかけられた場合には、転送制御ユニット2516は、レジスタ2514に設定されているバッファアドレス値が表すバッファ領域に格納されているデータ(ライトデータ)を、そのバッファ領域から、レジスタ2514に設定されているキャッシュメモリ値が表すスロットに転送する。このデータ転送が行われる都度に、転送制御ユニット2516によって、レジスタ2515に記憶されているデータサイズ値から、転送されたデータのサイズ分の値がデクリメントされる。つまり、このデータ転送は、レジスタ2515に記憶されているデータサイズ値分のデータが転送されるまで繰り返される。レジスタ2515に記憶されているデータサイズ値分のデータの転送が完了したときに(例えばレジスタ2515に記憶されているデータサイズ値がゼロになったときに)、転送制御ユニット2516が、処理した転送パラメータ30に対応するステータスメッセージ40を生成し、そのメッセージ40を、MPに送信する。具体的には、例えば、転送制御ユニット2516が、パラメータフェッチユニット2513から受け取った対応IDを含んだステータスメッセージ40を作成し、そのメッセージ40を、その対応IDを有するMPに送信する。このデータ転送では、下記の三パターン:
(P1)転送元の記憶領域が、図示のDMAC251を有するコントローラ部内に存在し、転送先の記憶領域も、図示のDMAC251を有するコントローラ部内に存在し、それ故、SPU間でのデータ転送が生じないパターン;
(P2)転送元の記憶領域が、図示のDMAC251を有するコントローラ部内に存在し、転送先の記憶領域が、図示のDMAC251を有するコントローラ部とは別のコントローラ部内に存在するパターン;
(P3)転送元の記憶領域が、図示のDMAC251を有するコントローラ部とは別のコントローラ部内に存在し、転送先の記憶領域が、図示のDMAC251を有するコントローラ部内に存在するパターン、
がある。転送元と転送先の一方の記憶領域は、キャッシュデータエリア241a又は241b内のスロットであり、他方の記憶領域は、バッファ領域(又はMP内のメモリなどの他の記憶資源)である。
以下、本実施形態で行われる処理の流れを説明する。
図6は、ストレージシステム20がホスト装置10からリード要求を受領した場合の処理(I/O処理のうちのリード処理)の流れを示すラダーチャートである。以下の説明では、HPC212aがリード要求を受領するとする。また、図6及び図7の説明では、どの要素がどちらのコントローラ部に存在するのかを区別し易くするため、第1のコントローラ部21aに存在する要素の参照番号の末尾に「a」を付し、第2のコントローラ部21bに存在する要素の参照番号の末尾に「b」を付すことにする。
HPC212aは、リード要求をホスト装置10から受領する(s1000)。以下、リード要求に従うデータを「該当リードデータ」と言う。
HPC212aは、ホスト装置10から受領したリード要求を、MP26aのメールボックス2634aへ送付する(s1001)。
メールボックス2634a内のリード要求を確認したCPU261aは、制御情報エリア242a及び242b内の制御情報を参照し、キャシュヒットしたか否かを判定する。キャッシュヒットしたか否かとは、ホスト装置からのI/O要求で指定されている論理アドレス(例えば、LUN(Logical Unit Number)及びLBA(Logical Block Address))に従う場所に格納されるデータがあるか否かである。キャッシュヒットした場合(ここでは、リード要求が指定する論理アドレスとスロット2411a又は2411bとの対応が管理されている場合)、S1009に処理が移る。
一方、キャッシュヒットしなかった場合、CPU261aは、該当リードデータをバッファ253a(又はメモリ263a等の他の記憶資源)に転送するようDPC211aに指示する(s1002)。その際、CPU261aは、例えば、リード要求が指定する論理アドレスを基に特定した物理アドレスを、DPC211aに通知する。
DPC211aは、HDD23(例えば通知された物理アドレス)にアクセスして該当リードデータを受け取る(s1003)。
s1004で、DPC211aは、受け取った該当リードデータをバッファ253a(又はメモリ263a等の他の記憶資源)に格納する。そして、CPU261aは、キャッシュメモリ24a及び24bにおける複数の確保可能スロットから任意のスロット2411a又は2411bを確保する。確保可能スロットとは、例えば、フリー又はクリーンのスロットとして管理されているスロットである。フリーのスロットとは、空きのスロットである。クリーンのスロットとは、HDD23に格納済みのデータを記憶しているスロットである。図6の説明では、キャッシュメモリ24bからスロット2411bが確保されたとする。
DPC211aは、CPU261aに対して、該当リードデータのバッファ253aへの格納が終了したことを知らせる終了通知を送信する(s1005)。
s1006で、以下の処理(s1006−1)〜(s1006−4)が行われる。
(s1006−1)終了通知を受けたCPU261aが、DMAC選択処理を行う。すなわち、CPU261aは、SPU25a及び25bに存在する複数のDMAC251a及び251bから一つのDMAC251a又は251bを選択する。DMAC選択処理では、後述するように、データの転送先の記憶領域を有するコントローラ部内のDMACが、データの転送先の記憶領域を有しないコントローラ部内のDMACよりも優先的に選択される。そのため、ここでは、DMAC251bが選択されたとする。
(s1006−2)CPU261aは、下記(R01)〜(R05)を含んだ転送パラメータ30:
(R01)ID;
(R02)オペレーション種類「ライト」(キャッシュメモリにデータを書くため)、
(R03)確保したスロットのアドレス値、
(R04)該当リードデータを格納しているバッファ領域のアドレス値;
(R05)該当リードデータのデータサイズ値、
を作成する。
(s1006−3)CPU261aは、その転送パラメータ30を、s6000で選択したDMAC251bについての複数のパラメータキュー24311bのうちの、CPU261aを有するMP26aに対応したパラメータキュー24311bにセットする。
(s1006−4)CPU261aは、上記選択したDMAC251bを起動する。
起動したDMAC251bは、DMAC制御エリア2431b内のパラメータキュー24311bから転送パラメータ30をフェッチし、その転送パラメータ30に基づき、転送元のバッファ253aから転送先のスロット2411bに該当リードデータを転送する(s1007)。
該当リードデータがスロット2411bに格納された後、DMAC251bは、転送が終了した旨のステータスメッセージ40を、MP26a内のDMACエリア2633に、例えばダイレクトパスD11又はD12を介して送信する(s1008)。
ステップS1009は、ステップS1008でDMACエリア2633aに格納されたステータスメッセージ40をCPU261aが確認したとき、若しくは、ステップS1002においてキャッシュヒットしたときに、実行される。s1009で、以下の処理(s1009−1)〜(s1009−4)が行われる。
(s1009−1)CPU261aが、DMAC選択処理を行う。ここでは、例えば、DMAC251aが選択されたとする。
(s1009−2)CPU261aは、下記(R11)〜(R15)を含んだ転送パラメータ30:
(R11)ID;
(R12)オペレーション種類「リード」(キャッシュメモリからデータを読むため)、
(R13)該当リードデータを格納しているスロット2411bのアドレス値、
(R14)バッファ領域のアドレス値;
(R15)該当リードデータのデータサイズ値、
を作成する。
(s1009−3)CPU261aは、その転送パラメータ30を、DMAC251aについての複数のパラメータキュー24311aのうちの、CPU261aを有するMP26aに対応したパラメータキュー24311aにセットする。
(s1009−4)CPU261aは、上記選択されたDMAC251aを起動する。
起動したDMAC251aは、DMAC制御エリア2431a内のパラメータキュー24311aから転送パラメータ30をフェッチし、その転送パラメータ30に基づき、スロット2411bからバッファ領域へ該当リードデータを転送する(s1010)。
転送終了後、DMAC251aは、転送が終了した旨のステータスメッセージ40をMP26aのDMACエリア2633aに送信する(s1011)。
ステップs1011でDMACエリア2633aに格納されたステータスメッセージ40を確認したCPU261aは、バッファ253に格納されている該当リードデータをホスト装置10に転送するようHPC212に指示する(s1012)。
指示を受けたHPC212は、バッファ253より該当リードデータを読み出す(s1013)。
HPC212は、バッファ253から読みだした該当リードデータをホスト装置10へ転送する(s1014)。
全ての該当リードデータの転送が正常に終了した場合は、HPC212は、その旨(正常終了)をホスト装置10に応答する(s1015)。
さらに、HPC212は、ホスト装置10に応答したことをMP26aに通知する(s1016)。これにより、MP26aは、リード要求の処理が終了したことを認識する。
図7は、ストレージコントローラ21がホスト装置10からライト要求を受領した場合の処理(I/O処理のうちのライト処理)の流れを示したラダーチャートである。以下の説明では、HPC212aがライト要求を受領するとする。
HPC212aは、ライト要求をホスト装置10から受領する(s2000)。以下、ライト要求に従うデータを「該当ライトデータ」と言う。
HPC212aは、ホスト装置10から受領したライト要求を、MP26aのメールボックス2634aへ送付する(s2001)。
メールボックス2634a内のライト要求を確認したCPU261aは、制御情報エリア242a及び242bの制御情報を参照し、キャッシュヒットしたか否かを判定する。
ここで、該当ライトデータは、キャッシュメモリ24a及び24bの両方に格納されるべきデータ、つまり、ダブルライトされるべきデータである。
そのため、キャッシュヒット判定では、ライト要求が指定する論理アドレスと対応するスロット2411a及び2411bがあるか否かが判定される。キャッシュヒットした場合、それら対応するスロット2411a及び2411bが確保される。キャッシュヒットしなかった場合、CPU261aは、キャッシュデータエリア241a及び241bからスロット2411a及び2411bを確保する。
スロット2411a及び2411bを確保できた場合は、CPU261aは、該当ライトデータの受け入れ準備ができた旨をホスト装置10に伝えるようHPC212aに指示する(s2002)。
CPU261aからの指示を受けたHPC212aは、該当ライトデータの受け入れ準備完了した旨のメッセージをホスト装置10に送信する(s2003)。
ホスト装置10は、該当ライトデータをHPC212aへ送信する(s2004)。
該当ライトデータを受領したHPC212aは、その該当ライトデータをバッファ253aに格納する(s2005)。
該当ライトデータをバッファ253aに格納した後、HPC212aは、CPU261aに対して、該当ライトデータのバッファ253aへの格納が終了したことを知らせる終了通知を送信する(s2006)。
s2007で、以下の処理(s2007−1)〜(s2007−4)が行われる。
(s2007−1)終了通知を受けたCPU261aが、DMAC選択処理を行う。ここでは、DMAC251aが選択されたとする。
(s2007−2)CPU261aは、下記(W01)〜(W05)を含んだ転送パラメータ30:
(W01)ID;
(W02)オペレーション種類「ダブルライト」(ライト要求に従うデータのキャッシュメモリへのデータ転送であるため)、
(W03)確保したスロット2411a及び2411bのアドレス値、
(W04)該当ライトデータを格納しているバッファ領域のアドレス値;
(W05)該当ライトデータのデータサイズ値、
を作成する。
(s2007−3)CPU261aは、その転送パラメータ30を、s6000で選択したDMAC251aについての複数のパラメータキュー24311aのうちの、CPU261aを有するMP26aに対応したパラメータキュー24311aにセットする。
(s2007−4)CPU261aは、上記選択したDMAC251aを起動する。
起動したDMAC251aは、DMAC制御エリア2431a内のパラメータキュー24311aから転送パラメータ30をフェッチし、その転送パラメータ30に基づき、バッファ253からスロット2411a及び2411bに該当ライトデータを転送する(s2008)。
両データ転送が終了した後、DMAC251aは、転送が終了した旨のステータスメッセージ40をMP26aのDMACエリア2633aに送信する(s2009)。
ステップS2009でDMACエリア2633aに格納されたステータスメッセージ40を確認したCPU261aが、HPC212aにライト終了を通知する(s2010)。
ライト終了の通知を受けたHPC212aはが、ライト終了をホスト装置10に応答する(s2011)。
その後、s2012で、以下の処理(s2012−1)〜(s2012−4)が行われる。
(s2012−1)CPU261aは、該当ライトデータが格納されているスロット2411a及び2411bのうちのいずれかを選択する。ここではスロット2411aが選択されたとする。
(s2012−2)CPU261aは、DMAC選択処理を行う。ここでは、例えば、DMAC251aが選択されたとする。
(s2012−3)CPU261aは、下記(W11)〜(W15)を含んだ転送パラメータ30:
(W11)ID;
(W12)オペレーション種類「リード」(キャッシュメモリからデータを読むため)、
(W13)該当ライトデータを格納しているスロット2411aのアドレス値、
(W14)バッファ領域のアドレス値;
(W15)該当ライトデータのデータサイズ値、
を作成する。
(s2012−4)CPU261aは、その転送パラメータ30を、DMAC251aについての複数のパラメータキュー24311aのうちの、CPU261aを有するMP26aに対応したパラメータキュー24311aにセットする。
(s2012−5)CPU261aは、上記選択されたDMAC251aを起動する。
起動したDMAC251aは、DMAC制御エリア2431a内のパラメータキュー24311aから転送パラメータ30をフェッチし、その転送パラメータ30に基づき、スロット2411aからバッファ領域へ該当ライトデータを転送する(s2013)。
転送終了後、DMAC251aは、転送が終了した旨のステータスメッセージ40を、MP26aのDMACエリア2633aへ送信する(s2014)。
s2014でDMACエリア2633aに格納されたステータスメッセージ40を確認したCPU261aは、バッファ領域に格納された該当ライトデータをHDD23へ転送するようDPC211aに指示する(s2015)。
CPU261aからの指示を受けたDPC211aは、バッファ領域より該当ライトデータを読み出す(s2016)。
DPC211aは、該当ライトデータをHDD23に格納する(s2017)。
全てのデータ転送が正常に終了した場合は、DPC211aはその旨をCPU261aに終了通知を送付する(s2018)。
終了通知を受けたCPU261aは、該当ライトデータが格納されていたスロット2411aを開放する。解放されたスロット2411aは、クリーンのスロットとして管理される。
図10は、DMAC選択処理のフローチャートである。なお、以下の説明では、MP26a及び26bを「MP26」と総称する。
s3001で、MP26が、DMAC251毎のDMACスコアをすべてリセットする。
s3002で、MP26は、転送先(又は転送元)のバッファ253の位置に応じてDMACスコアの変更を行う。具体的には、例えば、MP26aは、転送先(又は転送元)のバッファ253を含んだSPU25内のDMAC251のDMACスコアを変更せず、転送先のバッファ253を含んでいないSPU25内のDMAC251のDMACスコアに第1の所定値を加算する。
s3003で、MP26は、転送先(又は転送元)のキャッシュメモリの位置に応じてDMACスコアの変更を行う。具体的には、例えば、MP26は、転送先(又は転送元)のキャッシュメモリが接続されているSPU25内のDMAC251のDMACスコアを変更せず、転送先のキャッシュメモリが接続されていないSPU25内のDMAC251のDMACスコアに第2の所定値を加算する。第2の所定値は第1の所定値と同じでも異なっていても良い。
次に、MP26は、各パラメータキュー24311における未完了の転送パラメータ30の数をチェックする(s3004)。ここでは、MP26は、各DMACについて、そのDMACについての未完了の転送パラメータの数と第3の所定値(0より大きい値)との乗数を、そのDMACのDMACスコアに加算する。
最後に、MP26は、すべてのDMACスコアを比較し、DMAC251を選択する(s3005)。具体的には、例えば、DMACスコアが最少のDMAC251が選択される。DMACスコアが最少のDMAC251は、他のDMAC251よりも転送先記憶領域に近く、及び/又は、他のDMAC251よりも負荷が低い。そのため、DMACスコアが最少のDMAC251が、DMAC選択処理を行っている時点において、データ転送を行うのに最適なDMAC251であると考えられる。
さらに、DMAC251に障害が発生した場合に、障害が発生していない資源に処理を引き継がせることなどにより、上記第1〜第3の所定値の少なくとも一つがいずれかのMP26によってより小さい値にされても良い。すなわち、SPU25内の正常なDMAC251の数に不均衡が発生しても、スコアの重み付けを変えることで、引き続きSPU25内の資源を有効に使うことが可能となる。
本実施形態では、コントローラ部21a及び21bの一方が他方のコントローラ部内のハードウェア資源を利用している。これにより、ストレージコントローラ21の負荷を低減することができる。
また、本実施形態では、第1のMP11(12)が、ダイレクトパスD11(12)を介して第2のSPU25bに接続され、第2のMP21(22)が、ダイレクトパスD21(22)を介して接続される。このため、コントローラ部21a及び21bの一方が他方のコントローラ部内のハードウェア資源を利用する際に、SPU間パスC1及びC2の経由を不要にすることができる。
また、本実施形態では、一つのDMACが複数のMPから使用されることにより生じ得る下記課題を、ソフトウェア制御ではなくハードウェア制御によって解決される。
例えば、或るMP(x)が転送パラメータをパラメータキューにセットした後、インデックスが更新される前に、他のMP(y)が転送パラメータを上書きしてしまうことがあり得る。この場合は、MPxのセットした転送パラメータは実行されない。その上、転送パラメータが実行されなかったことをMP(x)は検知できない。このため、バッファやキャッシュメモリに新たなデータが反映されないまま、ホスト装置対して処理の完了を通知してしまうことになる。つまり、データ消失や誤ったデータの返送といった致命的な不具合がおこってしまう可能性がある。
この課題を、ソフトウェアでの制御によって解決することも考え得る。ここで、ソフトウェアの制御によって解決するとは、例えば、MP間であらかじめ調停を行って権利を取得したMPが転送パラメータをセットするなどである。しかしながら、ソフトウェアの制御によって上記不具合を解決した場合には、頻繁なアクセスが必要なDMACなどの資源に関しては、相対的にオーバーヘッドが大きく、資源の有効活用ができなくなってしまうという更なる課題が生じるおそれがある。
本実施形態では、パラメータキュー24311及びインデックス2511がMP26毎に設けられていることで、ハードウエアの制御によって、上記のようなデータ消失や誤ったデータの返送といった不具合を防止することができる。
本実施形態にあっては、各SPU25a、25b内に障害管理ユニット257がある。このため、障害管理ユニット257が、SPU25a、25b内で障害が発生した資源に対して、対策を施すことが可能となる。例えば、障害管理ユニット257が、障害が発生したMPポート256に接続されたMP26a、26bが行う処理を、障害が発生していないMPポート256に接続されたMP26a、26bに引き継がせることが可能となる。これにより、SPU25中の資源を有効に使うことができる。
本実施形態にあっては、キャッシュメモリ24a、24bのキャッシュデータエリア241は、下記に示すように、ライトデータの書き込みエリアとリードデータの書き込みエリアを予め固定的に用意しておく必要はない。
図11A及び図11Bによれば、キャッシュデータエリア(A)に、リードキャッシュエリア(A)と、ライトキャッシュエリア(A)と、ミラーエリア(A)とが予め用意されている。同様に、キャッシュデータエリア(B)に、リードキャッシュエリア(B)と、ライトキャッシュエリア(B)と、ミラーエリア(B)とが予め用意されている。ライトキャッシュエリア(A)とミラーエリア(B)はペアになっており、同様に、ライトキャッシュエリア(B)とミラーエリア(A)はペアになっている。
リードキャッシュエリアは、リードデータが格納される専用エリアである。図11Aに示すように、リードキャッシュエリア(A)には、リードキャッシュエリア(A)と同じコントローラ部内にあるMP(A)によって取得されたリードデータ(R1)〜(R10)のみが格納され、ライトデータや、リードキャッシュエリア(A)と別のコントローラ部内にあるMP(B)によって取得されたリードデータは格納されない。
ライトキャッシュエリアは、ライトデータが格納される専用エリアであり、それとペアになったミラーエリアは、ライトデータのミラーが格納される専用エリアである。図11Bに示すように、ライトキャッシュエリア(A)には、ライトキャッシュエリア(A)と同じコントローラ部内にあるMP(A)によって取得されたライトデータ(W1)〜(W5)のみが格納され、リードデータや、他のMP(B)が受けたライトデータや、そのライトデータのミラーデータは格納されない。また、図11Bに示すように、ミラーエリア(B)には、MP(A)によって取得されたライトデータのミラー(W1)〜(W5)のみが格納され、リードデータや、MP(A)及び(B)が受けたライトデータ(オリジナルデータ)は格納されない。
しかし、本実施形態では、図11A及び図11Bを参照して説明したリードキャッシュエリア、ライトキャッシュエリア及びミラーエリアのいずれも、キャッシュデータエリアに用意されていない。本実施形態では、データの種類に限らず、キャッシュデータエリアの任意のスロットに格納することができる。そのため、図12Aに示すように、例えば、第1のMP24aが取得したリードデータ(R1)〜(R40)の一部を第1のキャッシュメモリ24aに格納し残りを第2のキャッシュメモリ24bに格納することができる。また、図12Bに示すように、キャッシュメモリ24a及び24bにおけるそれぞれのキャッシュデータエリアを、第1のMP24aが取得したライトデータ(W1)〜(W20)で満杯にすることもできる。
図13は、本発明の第2の実施形態にかかるストレージシステムのストレージコントローラの内部構成を示すブロック図である。
本実施形態では、ノーマルパス及びダイレクトパスがMPスイッチ(MP Switch)270で実現されている。MPスイッチ270は、複数のMP26と複数のSPU25が接続されたスイッチ装置である。各MP26は、MPスイッチ270を介して所望のSPU25にアクセスすることができる。
また、本実施形態では、SPU間パスがSPUスイッチ(SPU Switch)280で実現されている。複数のSPU25のうちの一つと複数のSPU25のうちの別の一つとの間の通信は、SPUスイッチ280を介して行われる。
SPU25の数、MP26の数、キャッシュメモリ24の数を、スケーラブルにする場合には、本実施形態のような構成をとることができる。この場合、MPスイッチ270とSPUスイッチ280は論理的な構成としてもよく、物理的には同一のスイッチで構成しても良い。例えばPCI-Expressのvirtual channel技術が用いられてもよい。またMPスイッチ270およびSPUスイッチ280は、物理的には複数のスイッチをカスケード接続した形態でも良い。
また、さらにキャッシュメモリのスケーラビリティを向上させるため、キャッシュメモリを独立させてもよい。この場合、例えば、キャッシュメモリ機能のみを持ったSPUがSPUスイッチに接続されてもよい。
図14は、本発明の第3の実施形態におけるインデックスを示す。
インデックス2511が、コンシューマインデックス25111と、プロデューサインデックス25112とで構成されている。
コンシューマインデックス25111は、パラメータキューに蓄積されている一以上の転送パラメータのうちのどの転送パラメータまでフェッチしたかを表す値を記憶する。
プロデューサインデックス25112は、パラメータキューに蓄積されている最後尾の転送パラメータを表す値である。
このようなインデックス2511を用いて、パラメータキューのどこから転送パラメータを読み出すべきかを特定することができる。
図15は、本発明の第4の実施形態におけるインデックス及びパラメータキューの構成を示す。
MP毎に、リード用パラメータキュー26331Rとライト用パラメータキュー26331Wとがある。また、MP毎に、リード用パラメータキュー26331Rに対応したリード用インデックス2511Rと、ライト用パラメータキュー26331Wに対応したライト用インデックス2511Wとがある。
MPは、リード要求での処理において生成した転送パラメータを、リード用パラメータキュー26331Rに格納する。リード用インデックス2511Rは、リード用パラメータキュー26331Rでの未処理の転送パラメータの数を表す値を記憶する。
MPは、ライト要求での処理において生成した転送パラメータを、ライト用パラメータキュー26331Wに格納する。ライト用インデックス2511Wは、ライト用パラメータキュー26331Wでの未処理の転送パラメータの数を表す値を記憶する。
例えば、ライト要求の処理では、該当ライトデータがキャッシュメモリに格納されれば、ホスト装置に対してライトの完了とすることができるが、リード要求の処理では、該当リードデータがキャッシュメモリに格納されるだけでなくホスト装置に転送されてリードの完了となる。
そこで、本実施形態では、DMACは、ライト用パラメータキュー26331Wに格納されている転送パラメータよりも、リード用パラメータキュー26331Rに格納されている転送パラメータを優先的にフェッチする。これにより、リード性能を高めることができる。
以上、本発明の幾つかの実施形態を説明したが、本発明は、これらの実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
上述した実施形態に従う記憶制御装置を別の観点から抽象的に表現すれば、例えば、下記の通りになる。
<表現1>
ホスト装置から発行されたI/Oコマンドに従うデータの転送を制御する回路である中継回路と、
前記中継回路に接続された複数のプロセッサと
プロセッサ毎に設けられておりデータ転送のパラメータである転送パラメータが蓄積されるパラメータ領域と
を有し、
前記中継回路が、データの転送を行う回路であるデータ転送回路を有し、
前記パラメータ領域は、前記データ転送回路についての記憶領域であり、
各プロセッサが、そのプロセッサに対応したパラメータ領域に転送パラメータを格納し、
前記データ転送回路が、いずれかのパラメータ領域から転送パラメータを取得し、その転送パラメータに従って、データ転送を実行する、
記憶制御装置。
<表現2>
表現1記載の記憶制御装置であって、
前記データ転送回路が複数あり、
各データ転送回路について、プロセッサ毎のパラメータ領域があり、
前記複数のプロセッサのうちのI/Oコマンドを受領したプロセッサである対象プロセッサが、前記対象プロセッサに対応した複数のパラメータ領域のうち未完了の転送パラメータの数が最も少ないパラメータ領域に対応したデータ転送回路を選択し、選択したデータ転送回路についての、前記対象プロセッサに対応したパラメータ領域に、転送パラメータを格納する、
記憶制御装置。
<表現3>
表現1又は2記載の記憶制御装置であって、
前記複数のプロセッサにそれぞれ対応した複数のキャッシュメモリ領域を有し、
前記複数のプロセッサのうちの或るプロセッサが、前記複数のプロセッサのうちの別のプロセッサに対応したキャッシュメモリ領域内の任意のアドレスを転送先アドレスとした転送パラメータを、前記或るプロセッサに対応したパラメータ領域に格納する、
記憶制御装置。
<表現4>
表現1乃至3のうちのいずれかに記載の記憶制御装置であって、
各パラメータ領域は、I/Oコマンドがライトコマンドである場合の転送パラメータの格納先とされるパラメータライト領域と、I/Oコマンドがリードコマンドである場合の転送パラメータの格納先とされるパラメータリード領域とを有し、
前記データ転送回路は、前記パラメータライト領域よりも前記パラメータリード領域内の未完了の転送パラメータを優先的に取得する、
記憶制御装置。
<表現5>
表現1乃至4のうちのいずれかに記載の記憶制御装置であって、
前記データ転送回路が、複数のパラメータ領域に蓄積されている未完了の転送パラメータの数をそれぞれ記憶する記憶領域である複数のインデックスと、前記複数のインデックスから一つのインデックスを選択するセレクタと、前記セレクタによって選択されたインデックスに対応したパラメータ領域から転送パラメータを取得しその転送パラメータが有する転送元アドレス及び転送先アドレスを設定するパラメータ取得回路と、前記設定された転送元アドレスが表す記憶領域内のデータを前記設定された転送先アドレスが表す記憶領域に転送する転送制御回路とを有する、
記憶制御装置。
20:ストレージシステム

Claims (13)

  1. 第1のコントローラと、
    前記第1のコントローラに第1パスを介して接続された第2のコントローラと
    を備え、
    ホスト装置が発行したI/O(Input/Output)コマンドを前記第1及び第2のコントローラのいずれかが受け付けた場合、そのI/Oコマンドを受けたI/Oコントローラが、そのI/Oコマンドに従う処理であるI/O処理を行い、前記I/O処理において、そのI/Oコマンドに従うデータのI/Oを記憶デバイスに対して行い、
    前記第1のコントローラが、
    データ転送を制御する回路である第1の中継回路と、
    前記第1の中継回路に第1の第2パスを介して接続された第1のプロセッサと
    を有し、
    前記第2のコントローラが、
    データ転送を制御する回路であり、前記第1パスを介して前記第1の中継回路に接続された第2の中継回路と、
    前記第2の中継回路に第2の第2パスを介して接続された第2のプロセッサと
    を有し、
    前記第1のプロセッサが、前記第1の中継回路を介することなく第1の第3パスを介して前記第2の中継回路に接続されており、前記第1のコントローラが前記I/O処理を行っている場合、そのI/O処理において、前記第1の第3パスを介して前記第2の中継回路にアクセスし、
    前記第2のプロセッサが、前記第2の中継回路を介することなく第2の第3パスを介して前記第1の中継回路に接続されており、前記第2のコントローラが前記I/O処理を行っている場合、そのI/O処理において、前記第2の第3パスを介して前記第1の中継回路にアクセスする
    記憶制御装置。
  2. 請求項1記載の記憶制御装置であって、
    前記第1の中継回路が、データの転送を行う回路である第1のデータ転送回路を有し、
    前記第2の中継回路が、データの転送を行う回路である第2のデータ転送回路を有し、
    前記第1のコントローラが、前記第1の中継回路に接続された第1のメモリと、プロセッサ毎に設けられておりデータ転送のパラメータである転送パラメータが蓄積される第1キューとを有し、
    各第1キューは、前記第1のデータ転送回路についてのキューであり、
    前記第2のコントローラが、前記第2の中継回路に接続された第2のメモリと、プロセッサ毎に設けられており転送パラメータが蓄積される第2キューとを有し、
    各第2キューは、前記第2のデータ転送回路についてのキューであり、
    前記転送パラメータは、前記第1及び第2プロセッサによって生成され、データの転送元の記憶領域のアドレスである転送元アドレスと、そのデータの転送先のアドレスである転送先アドレスとを含み、
    前記第1のデータ転送回路が、複数の第1キューに蓄積されている転送パラメータの数をそれぞれ記憶する記憶領域である複数の第1インデックスと、前記複数の第1インデックスから一つの第1インデックスを選択する第1セレクタと、前記第1セレクタによって選択された第1インデックスに対応した第1キューから転送パラメータを取得しその転送パラメータが有する転送元アドレス及び転送先アドレスを設定する第1パラメータ取得回路と、前記設定された転送元アドレスが表す記憶領域内のデータを前記設定された転送先アドレスが表す記憶領域に転送する第1転送制御回路とを有し、
    前記第2のデータ転送回路が、複数の第2キューに蓄積されている転送パラメータの数をそれぞれ記憶する記憶領域である複数の第2インデックスと、前記複数の第2インデックスから一つの第2インデックスを選択する第2セレクタと、前記第2セレクタによって選択された第2インデックスに対応した第2キューから転送パラメータを取得しその転送パラメータが有する転送元アドレス及び転送先アドレスを設定する第2パラメータ取得回路と、前記設定された転送元アドレスが表す記憶領域内のデータを前記設定された転送先アドレスが表す記憶領域に転送する第2転送制御回路とを有し、
    前記第1及び第2プロセッサのうちのI/Oコマンドを受領したプロセッサである対象プロセッサが、下記の(A)及び(B):
    (A)データの転送先の記憶領域が、前記対象プロセッサを有するコントローラである対象コントローラに存在するか否か;
    (B)前記対象プロセッサに対応した第1キューについての未完了の転送パラメータの数である第1の数と、前記対象プロセッサに対応した第2キューについての未完了の転送パラメータの数である第2の数、
    に基づいて、前記第1及び第2のデータ転送回路のうちのいずれかのデータ転送回路を選択し、選択したデータ転送回路を有するコントローラ内の、前記対象プロセッサに対応したキューに、転送パラメータを格納する、
    記憶制御装置。
  3. 請求項2記載の記憶制御装置であって、
    前記対象プロセッサが、下記(X)及び(Y)の条件に適合するデータ転送回路を優先的に選択する、
    (X)前記転送先記憶領域が前記対象コントローラ内にある場合、前記対象コントローラに存在する;
    (Y)前記第1の数と前記第2の数とのうちの少ない方に対応する、
    記憶制御装置。
  4. 請求項3記載の記憶制御装置であって、
    前記第1のメモリが、第1のキャッシュメモリ領域を有し、
    前記第2のメモリが、第2のキャッシュメモリ領域を有し、
    前記第1のプロセッサが、受け付けたI/Oコマンドに従うデータの転送先アドレスとして前記第2のキャッシュメモリ領域の任意の位置のアドレスを含んだ転送パラメータを、前記第1の第3パスを介して、前記第1のプロセッサに対応した第2キューに格納し、
    前記第2のプロセッサが、受け付けたI/Oコマンドに従うデータの転送先アドレスとして前記第1のキャッシュメモリ領域の任意の位置のアドレスを含んだ転送パラメータを、前記第2の第3パスを介して、前記第1のプロセッサに対応した第1キューに格納する、
    記憶制御装置。
  5. 請求項1記載の記憶制御装置であって、
    プロセッサ毎に設けられておりデータ転送のパラメータである転送パラメータが蓄積される第1パラメータ領域と、
    プロセッサ毎に設けられており転送パラメータが蓄積される第2パラメータ領域と
    を有し、
    前記第1の中継回路が、データの転送を行う回路である第1のデータ転送回路を有し、
    前記第2の中継回路が、データの転送を行う回路である第2のデータ転送回路を有し、
    前記第1パラメータ領域は、前記第1のデータ転送回路についての記憶領域であり、
    前記第2パラメータ領域は、前記第2のデータ転送回路についての記憶領域であり、
    前記第1のプロセッサが、前記第1のデータ転送回路を利用する場合、前記第1のプロセッサに対応した第1パラメータ領域に転送パラメータを格納し、前記第2のデータ転送回路を利用する場合、前記第1のプロセッサに対応した第2パラメータ領域に転送パラメータを格納し、
    前記第2のプロセッサが、前記第2のデータ転送回路を利用する場合、前記第2のプロセッサに対応した第2パラメータ領域に転送パラメータを格納し、前記第1のデータ転送回路を利用する場合、前記第2のプロセッサに対応した第1パラメータ領域に転送パラメータを格納し、
    前記第1のデータ転送回路が、いずれかの第1パラメータ領域から転送パラメータを取得し、その転送パラメータに従って、データ転送を実行し、
    前記第2のデータ転送回路が、いずれかの第2パラメータ領域から転送パラメータを取得し、その転送パラメータに従って、データ転送を実行する、
    記憶制御装置。
  6. 請求項5記載の記憶制御装置であって、
    前記第1及び第2プロセッサのうちのI/Oコマンドを受領したプロセッサである対象プロセッサが、データの転送先の記憶領域が、前記対象プロセッサを有するコントローラである対象コントローラに存在する場合、前記対象コントローラ内のデータ転送回路を選択し、選択したデータ転送回路を有するコントローラ内の、前記対象プロセッサに対応したパラメータ領域に、転送パラメータを格納する、
    記憶制御装置。
  7. 請求項5記載の記憶制御装置であって、
    前記第1及び第2プロセッサのうちのI/Oコマンドを受領したプロセッサである対象プロセッサが、前記対象プロセッサに対応した第1パラメータ領域内の未処理の転送パラメータの数と、前記対象プロセッサに対応した第2パラメータ領域内の未処理の転送パラメータの数とのうち少ない方に対応したデータ転送回路を選択し、選択したデータ転送回路を有するコントローラ内の、前記対象プロセッサに対応したパラメータ領域に、転送パラメータを格納する、
    記憶制御装置。
  8. 請求項5記載の記憶制御装置であって、
    前記第1のコントローラが、前記第1の中継装置に接続された第1のキャッシュメモリ領域を有し、
    前記第2のコントローラが、前記第2の中継装置に接続された第2のキャッシュメモリ領域を有し、
    前記第1のプロセッサが、前記第2のキャッシュメモリ領域内の任意のアドレスを転送先アドレスとした転送パラメータを、前記第1のプロセッサに対応した第2パラメータ領域に格納し、
    前記第2のプロセッサが、前記第1のキャッシュメモリ領域内の任意のアドレスを転送先アドレスとした転送パラメータを、前記第2のプロセッサに対応した第1パラメータ領域に格納する、
    記憶制御装置。
  9. 請求項5記載の記憶制御装置であって、
    前記第1のパラメータ領域は、I/Oコマンドがライトコマンドである場合の転送パラメータの格納先とされる第1のパラメータライト領域と、I/Oコマンドがリードコマンドである場合の転送パラメータの格納先とされる第1のパラメータリード領域とを有し、
    前記第2のパラメータ領域は、I/Oコマンドがライトコマンドである場合の転送パラメータの格納先とされる第2のパラメータライト領域と、I/Oコマンドがリードコマンドである場合の転送パラメータの格納先とされる第2のパラメータリード領域とを有し、
    前記第1のデータ転送回路は、前記第1のパラメータライト領域よりも前記第1のパラメータリード領域内の未処理の転送パラメータを優先的に取得し、
    前記第2のデータ転送回路は、前記第2のパラメータライト領域よりも前記第2のパラメータリード領域内の未処理の転送パラメータを優先的に取得する、
    記憶制御装置。
  10. 請求項5記載の記憶制御装置であって、
    前記第1のデータ転送回路が、複数の第1パラメータ領域に蓄積されている未処理の転送パラメータの数をそれぞれ記憶する記憶領域である複数の第1インデックスと、前記複数の第1インデックスから一つの第1インデックスを選択する第1セレクタと、前記第1セレクタによって選択された第1インデックスに対応した第1パラメータ領域から転送パラメータを取得しその転送パラメータが有する転送元アドレス及び転送先アドレスを設定する第1パラメータ取得回路と、前記設定された転送元アドレスが表す記憶領域内のデータを前記設定された転送先アドレスが表す記憶領域に転送する第1転送制御回路とを有し、
    前記第2のデータ転送回路が、複数の第2パラメータ領域に蓄積されている未処理の転送パラメータの数をそれぞれ記憶する記憶領域である複数の第2インデックスと、前記複数の第2インデックスから一つの第2インデックスを選択する第2セレクタと、前記第2セレクタによって選択された第2インデックスに対応した第2パラメータ領域から転送パラメータを取得しその転送パラメータが有する転送元アドレス及び転送先アドレスを設定する第2パラメータ取得回路と、前記設定された転送元アドレスが表す記憶領域内のデータを前記設定された転送先アドレスが表す記憶領域に転送する第2転送制御回路とを有する、
    記憶制御装置。
  11. 請求項1記載の記憶制御装置であって、
    障害の発生を監視する障害監視ユニットを備え、
    前記障害監視ユニットは、前記第1のプロセッサの障害を検出した場合、前記第2のプロセッサに、前記第1のプロセッサの障害を通知する、
    記憶制御装置。
  12. 請求項11記載の記憶制御装置であって、
    前記障害監視ユニットは、前記第1の中継装置が有する、
    記憶制御装置。
  13. 請求項11記載の記憶制御装置であって、
    前記第1パスは、前記第1及び第2の中継装置を含んだ複数の中継装置に接続された第1のスイッチ装置で実現され、
    前記第1の第3パス及び前記第2の第3パスは、前記第1及び第2のプロセッサを含んだ複数のプロセッサに接続された第2のスイッチ装置で実現され、
    前記第1及び/又は第2のスイッチ装置が、前記障害監視ユニットを有する、
    記憶制御装置。
JP2012516982A 2009-11-10 2009-11-10 複数のコントローラを備えたストレージシステム Expired - Fee Related JP5358736B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/005995 WO2011058598A1 (en) 2009-11-10 2009-11-10 Storage system with multiple controllers

Publications (2)

Publication Number Publication Date
JP2012531656A true JP2012531656A (ja) 2012-12-10
JP5358736B2 JP5358736B2 (ja) 2013-12-04

Family

ID=42226093

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012516982A Expired - Fee Related JP5358736B2 (ja) 2009-11-10 2009-11-10 複数のコントローラを備えたストレージシステム

Country Status (3)

Country Link
US (1) US8321622B2 (ja)
JP (1) JP5358736B2 (ja)
WO (1) WO2011058598A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015025363A1 (ja) * 2013-08-20 2015-02-26 株式会社日立製作所 ストレージ装置及びデータ入出力方法
WO2015162745A1 (ja) * 2014-04-24 2015-10-29 株式会社日立製作所 ストレージシステム
JP2018032061A (ja) * 2016-08-22 2018-03-01 富士通株式会社 ストレージ制御装置、およびストレージシステム

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5856434B2 (ja) * 2011-10-25 2016-02-09 ルネサスエレクトロニクス株式会社 バス接続回路、半導体装置及びバス接続回路の動作方法
JP5835040B2 (ja) * 2012-03-19 2015-12-24 富士通株式会社 情報処理システムおよびデータ記録制御方法
US9112890B1 (en) 2014-08-20 2015-08-18 E8 Storage Systems Ltd. Distributed storage over shared multi-queued storage device
US9274720B1 (en) 2014-09-15 2016-03-01 E8 Storage Systems Ltd. Distributed RAID over shared multi-queued storage devices
US9519666B2 (en) 2014-11-27 2016-12-13 E8 Storage Systems Ltd. Snapshots and thin-provisioning in distributed storage over shared storage devices
US9524249B2 (en) * 2014-12-23 2016-12-20 Intel Corporation Memory encryption engine integration
US9525737B2 (en) * 2015-04-14 2016-12-20 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect
US9529542B2 (en) 2015-04-14 2016-12-27 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect
US10496626B2 (en) 2015-06-11 2019-12-03 EB Storage Systems Ltd. Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect
US9842084B2 (en) 2016-04-05 2017-12-12 E8 Storage Systems Ltd. Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices
US10031872B1 (en) 2017-01-23 2018-07-24 E8 Storage Systems Ltd. Storage in multi-queue storage devices using queue multiplexing and access control
US10685010B2 (en) 2017-09-11 2020-06-16 Amazon Technologies, Inc. Shared volumes in distributed RAID over shared multi-queue storage devices
CN111492631B (zh) * 2017-12-21 2023-05-16 村田机械株式会社 通信系统的控制方法、通信系统以及中继装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08335144A (ja) * 1995-06-07 1996-12-17 Hitachi Ltd 外部記憶装置
JPH09128305A (ja) * 1995-10-30 1997-05-16 Hitachi Ltd 外部記憶装置
JP2001216204A (ja) * 2000-01-31 2001-08-10 Hitachi Ltd 記憶制御装置
JP2001318904A (ja) * 2000-04-13 2001-11-16 Hewlett Packard Co <Hp> 記憶装置コントローラタスクを分散するためのシステムおよび方法
JP2004021556A (ja) * 2002-06-14 2004-01-22 Hitachi Ltd 記憶制御装置およびその制御方法
JP2007219571A (ja) * 2006-02-14 2007-08-30 Hitachi Ltd 記憶制御装置及びストレージシステム
JP2007299213A (ja) * 2006-04-28 2007-11-15 Fujitsu Ltd Raid制御装置および障害監視方法
JP2008134776A (ja) * 2006-11-28 2008-06-12 Hitachi Ltd 記憶制御装置及びその制御方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999063441A1 (en) * 1998-06-05 1999-12-09 Mylex Corporation Snapshot backup strategy
JP3987241B2 (ja) 1999-07-29 2007-10-03 株式会社東芝 系間情報通信システム
US6792505B2 (en) * 2001-04-16 2004-09-14 International Business Machines Corporation System apparatus and method for storage device controller-based message passing having effective data channel bandwidth and controller cache memory increase
US6842829B1 (en) 2001-12-06 2005-01-11 Lsi Logic Corporation Method and apparatus to manage independent memory systems as a shared volume
JP3869769B2 (ja) * 2002-07-24 2007-01-17 株式会社日立製作所 ストレージ・ネットワーク用のスイッチングノード装置および遠隔ストレージ装置のアクセス方法
US7467238B2 (en) * 2004-02-10 2008-12-16 Hitachi, Ltd. Disk controller and storage system
JP4859471B2 (ja) 2006-02-02 2012-01-25 株式会社日立製作所 ストレージシステム及びストレージコントローラ
JP5179031B2 (ja) * 2006-09-13 2013-04-10 株式会社日立製作所 空きポートを有効に活用したストレージシステム
JP5057792B2 (ja) 2007-01-29 2012-10-24 株式会社日立製作所 性能ボトルネックを緩和する機能を備えたストレージシステム
JP4639223B2 (ja) * 2007-12-27 2011-02-23 株式会社日立製作所 ストレージサブシステム
JP5127491B2 (ja) * 2008-02-08 2013-01-23 株式会社日立製作所 ストレージサブシステム及びこれの制御方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08335144A (ja) * 1995-06-07 1996-12-17 Hitachi Ltd 外部記憶装置
JPH09128305A (ja) * 1995-10-30 1997-05-16 Hitachi Ltd 外部記憶装置
JP2001216204A (ja) * 2000-01-31 2001-08-10 Hitachi Ltd 記憶制御装置
JP2001318904A (ja) * 2000-04-13 2001-11-16 Hewlett Packard Co <Hp> 記憶装置コントローラタスクを分散するためのシステムおよび方法
JP2004021556A (ja) * 2002-06-14 2004-01-22 Hitachi Ltd 記憶制御装置およびその制御方法
JP2007219571A (ja) * 2006-02-14 2007-08-30 Hitachi Ltd 記憶制御装置及びストレージシステム
JP2007299213A (ja) * 2006-04-28 2007-11-15 Fujitsu Ltd Raid制御装置および障害監視方法
JP2008134776A (ja) * 2006-11-28 2008-06-12 Hitachi Ltd 記憶制御装置及びその制御方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015025363A1 (ja) * 2013-08-20 2015-02-26 株式会社日立製作所 ストレージ装置及びデータ入出力方法
JP6013609B2 (ja) * 2013-08-20 2016-10-25 株式会社日立製作所 ストレージ装置及びデータ入出力方法
WO2015162745A1 (ja) * 2014-04-24 2015-10-29 株式会社日立製作所 ストレージシステム
JPWO2015162745A1 (ja) * 2014-04-24 2017-04-13 株式会社日立製作所 ストレージシステム
JP2018032061A (ja) * 2016-08-22 2018-03-01 富士通株式会社 ストレージ制御装置、およびストレージシステム

Also Published As

Publication number Publication date
US20110246720A1 (en) 2011-10-06
US8321622B2 (en) 2012-11-27
WO2011058598A1 (en) 2011-05-19
JP5358736B2 (ja) 2013-12-04

Similar Documents

Publication Publication Date Title
JP5358736B2 (ja) 複数のコントローラを備えたストレージシステム
US10782978B2 (en) Techniques for cooperative execution between asymmetric processor cores
JP5490093B2 (ja) ストレージシステムおよびその制御方法
JP4041656B2 (ja) ストレージシステム及びストレージシステムにおけるデータ送受信方法
EP2936494B1 (en) Nvram path selection
JP6955159B2 (ja) ストレージシステム、ストレージ制御装置およびプログラム
JP6024296B2 (ja) 情報処理装置、コピー制御プログラム、およびコピー制御方法
US8924606B2 (en) Storage system and data transfer control method
JP4813872B2 (ja) 計算機システム及び計算機システムのデータ複製方法
US9934172B1 (en) Data storage system with dynamic throttling of parallel sub-I/O request for individual host I/O requests
JP2005196490A (ja) データ多重化のためのシステム及び方法
JP2009053946A (ja) 二重化コントーラ構成ブロックデバイス制御装置
JP2007310448A (ja) 計算機システム、管理計算機、および、ストレージシステム管理方法
US9612756B1 (en) Data storage system with parallel handling of sub-I/O requests for individual host I/O requests
JP4719801B2 (ja) デバイス管理装置、デバイス初期化方法、デバイス初期化プログラムおよびデバイスシステム
CN106610788B (zh) 硬盘阵列控制方法及装置
US10037289B1 (en) Data storage system with efficient processing of single mapping callback for host I/O requests
JP2018106573A (ja) ストレージ制御装置及び制御プログラム
JP2008192020A (ja) Raid制御装置及びその制御方法
JP7348056B2 (ja) ストレージシステム
US20120017057A1 (en) Data copying device, method for copying data and data storage device
JP2005208697A (ja) デフラグ方法
JPWO2016088372A1 (ja) アクセス装置、マイグレーション装置、分散ストレージシステム、アクセス方法及びプログラム
JP6814020B2 (ja) 情報処理装置とその制御方法、及びプログラム
JP2007193839A (ja) ストレージシステム、ストレージシステムにおけるデータ送受信方法及びシステム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130712

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130902

R150 Certificate of patent or registration of utility model

Ref document number: 5358736

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees