JP5998884B2 - ストレージ装置、およびモジュール間データ転送方法 - Google Patents

ストレージ装置、およびモジュール間データ転送方法 Download PDF

Info

Publication number
JP5998884B2
JP5998884B2 JP2012261923A JP2012261923A JP5998884B2 JP 5998884 B2 JP5998884 B2 JP 5998884B2 JP 2012261923 A JP2012261923 A JP 2012261923A JP 2012261923 A JP2012261923 A JP 2012261923A JP 5998884 B2 JP5998884 B2 JP 5998884B2
Authority
JP
Japan
Prior art keywords
controller module
transfer
controller
communication path
data
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.)
Expired - Fee Related
Application number
JP2012261923A
Other languages
English (en)
Other versions
JP2014106940A (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 JP2012261923A priority Critical patent/JP5998884B2/ja
Priority to US14/031,494 priority patent/US20140156934A1/en
Publication of JP2014106940A publication Critical patent/JP2014106940A/ja
Application granted granted Critical
Publication of JP5998884B2 publication Critical patent/JP5998884B2/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
    • 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/2002Error 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 interconnections or communication control functionality are redundant
    • G06F11/2007Error 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 interconnections or communication control functionality are redundant using redundant communication media
    • G06F11/201Error 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 interconnections or communication control functionality are redundant using redundant communication media between storage system components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3027Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus

Description

本発明は、ストレージ装置、およびモジュール間データ転送方法に関する。
キャッシュメモリを保持しディスクへのアクセス制御をおこなうコントローラモジュールを複数備え、RAID(Redundant Array of Inexpensive Disks)を構成するストレージ装置がある。ストレージ装置は、ホストコンピュータからディスクへのユーザデータの書き込み要求を受け付けると、1つのコントローラモジュールのキャッシュメモリにユーザデータを保持する。さらに、ストレージ装置は、ユーザデータを保護するために他のコントローラモジュールのキャッシュメモリにユーザデータをコピーし、非同期にディスクへの書き込みをおこなう。
コントローラモジュール間では、ユーザデータのコピーなどのデータ転送をおこなうために相互に通信可能な通信路を備える。ストレージ装置は、データ転送パスを冗長化するために、コントローラモジュール間を接続する2つのスイッチを通信路に備える。これにより、ストレージ装置は、コントローラモジュール間のデータ転送パスの冗長化と、通信負荷の分散を図っている。
特開2009−266119号公報 特開2005−275829号公報
スイッチによるデータ転送パスの冗長化は、スイッチの故障により冗長化構成とデータ転送能力が大きく損なわれる。また、スイッチによるデータ転送パスの冗長化は、転送元のコントローラモジュールがスイッチから転送先のコントローラモジュール間の通信状態を確認できない。そのため、転送元のコントローラモジュールは、転送先のコントローラモジュールへの確認を要し、ストレージ装置内のオーバヘッドとなっていた。
複数のコントローラモジュールをメッシュ接続したストレージ装置であっても、転送元のコントローラモジュールと転送先のコントローラモジュールとの間にデータ転送を中継するコントローラモジュールが介在する場合に同様のオーバヘッドがある。
1つの側面では、本発明は、データ転送パスを冗長化したモジュール間通信におけるデータ転送を軽負荷にて保証可能なストレージ装置、およびモジュール間データ転送方法を提供することを目的とする。
上記目的を達成するために、以下に示すような、キャッシュメモリを有しストレージデバイスを制御する第1、第2および第3のコントローラモジュールと、第1、第2および第3のコントローラモジュールをメッシュ状に接続する通信路と、を備えるストレージ装置が提供される。ストレージ装置は、第1のコントローラモジュールと、第2のコントローラモジュールと、第3のコントローラモジュールを備える。第1のコントローラモジュールは、指示部を備える。指示部は、第1のコントローラモジュールを転送元とし、第2のコントローラモジュールを転送先とするデータ転送を、第1のコントローラモジュールおよび第2のコントローラモジュールと通信路によりそれぞれ直接接続する第3のコントローラモジュールに指示する。第3のコントローラモジュールは、転送部を備える。転送部は、指示にもとづいて第1のコントローラモジュールのキャッシュメモリから第2のコントローラモジュールのキャッシュメモリへのデータ転送をおこなう。
また、上記目的を達成するために、キャッシュメモリを有しストレージデバイスを制御する第1、第2および第3のコントローラモジュールと、第1、第2および第3のコントローラモジュールをメッシュ状に接続する通信路と、を備えるストレージ装置のモジュール間データ転送方法が提供される。モジュール間データ転送方法は、以下に示すような処理を第1のコントローラモジュールと第3のコントローラモジュールに実行させる。第1のコントローラモジュールは、第1のコントローラモジュールを転送元とし、第2のコントローラモジュールを転送先とするデータ転送を、第1のコントローラモジュールおよび第2のコントローラモジュールと通信路によりそれぞれ直接接続する第3のコントローラモジュールに指示する。第3のコントローラモジュールは、指示にもとづいて第1のコントローラモジュールのキャッシュメモリから第2のコントローラモジュールのキャッシュメモリへのデータ転送をおこなう。
1態様によれば、ストレージ装置、およびモジュール間データ転送方法において、データ転送パスを冗長化したモジュール間通信におけるデータ転送を軽負荷にて保証することができる。
第1の実施形態のストレージ装置の構成例を示す図である。 第2の実施形態のストレージ装置の構成例を示す図である。 第2の実施形態のコントローラモジュール間のデータフローの一例を示す図である。 第2の実施形態のコントローラモジュールの構成例を示す図である。 第2の実施形態のデータ転送コントローラの構成例を示す図である。 第2の実施形態の性能情報送信バッファが保持する性能情報を示す図である。 第2の実施形態の性能情報格納バッファが保持する性能情報を示す図である。 第2の実施形態のWrite要求受付処理のフローチャートを示す図である。 第2の実施形態のRead要求受付処理のフローチャートを示す図である。 第2の実施形態のユーザデータ転送処理のフローチャートを示す図である。 第2の実施形態のディスクリプタを示す図である。 第2の実施形態のデータ流量テーブル作成処理のフローチャートを示す図である。 第2の実施形態のデータ流量テーブルを示す図である。 第2の実施形態の転送先判定処理のフローチャートを示す図である。 第2の実施形態の転送指示処理のフローチャートを示す図である。 第2の実施形態の転送指示受付処理のフローチャートを示す図である。
以下、実施の形態を図面を参照して詳細に説明する。
[第1の実施形態]
まず、第1の実施形態のストレージ装置について図1を用いて説明する。図1は、第1の実施形態のストレージ装置の構成例を示す図である。
ストレージ装置1は、ストレージデバイス(情報記録装置)7のアクセス制御をおこなう制御装置である。ストレージ装置1は、図示しないホストコンピュータと通信可能に接続し、ホストコンピュータから指示(WriteコマンドやReadコマンドなど)を受け付ける。
ストレージ装置1は、複数のストレージデバイス7を備えることで、RAIDを構成する。
ストレージデバイス7は、ユーザデータや制御情報などの所要の情報を記録可能であり、たとえば、HDD(Hard Disk Drive)やSSD(Solid State Drive:フラッシュメモリドライブ)などである。なお、ストレージデバイス7は、複数のHDDやSSDにより構成されるディスクアレイであってもよい。
ストレージ装置1は、複数のコントローラモジュール2(第1のコントローラモジュール2a、第2のコントローラモジュール2b、第3のコントローラモジュール2c)を備える。第1のコントローラモジュール2aと第2のコントローラモジュール2bと第3のコントローラモジュール2cは、通信路6をメッシュ状に接続して通信可能にしている。図1に示すメッシュ状の通信路6(6a,6b,6c)は、すべてのコントローラモジュール2を相互に接続する完全相互接続である。コントローラモジュール2aとコントローラモジュール2bとは、通信路6aにより直接接続し、通信路6bと通信路6cによりコントローラモジュール2cが中継してホップ数1で間接接続する。コントローラモジュール2bとコントローラモジュール2cとは、通信路6bにより直接接続し、通信路6cと通信路6aによりコントローラモジュール2aが中継してホップ数1で間接接続する。コントローラモジュール2cとコントローラモジュール2aとは、通信路6cにより直接接続し、通信路6aと通信路6bによりコントローラモジュール2bが中継してホップ数1で間接接続する。
コントローラモジュール2(2a,2b,2c)は、キャッシュメモリ3(3a,3b,3c)と、転送部4(4a,4b,4c)と、指示部5(5a,5b,5c)を有し、コントローラモジュール2と接続するストレージデバイス7のアクセス制御をおこなう。キャッシュメモリ3は、ユーザデータを格納し、ストレージデバイス7からデータを読み出したときのキャッシュとなり、ストレージデバイス7にデータを書き込むときのバッファとなる。また、キャッシュメモリ3は、所要の制御情報を格納するワークメモリを兼ねる。
転送部4は、キャッシュメモリ3を転送元または転送先とするデータ転送をおこなう。指示部5は、自身のコントローラモジュール2を転送元とし、転送先となるコントローラモジュール2へのデータ転送を中継するコントローラモジュール2がある通信経路を選択した場合に、中継するコントローラモジュール2にデータ転送を指示する。
コントローラモジュール2a(第1のコントローラモジュール)が転送元となり、コントローラモジュール2c(第2のコントローラモジュール)が転送先となるデータ転送の場合、通信経路は、直接接続する通信路6cと、間接接続する通信路6a,6bがある。
直接接続する通信路6cを通信経路とする場合、コントローラモジュール2aは、コントローラモジュール2aを転送元とし、コントローラモジュール2cを転送先とするデータ転送を転送部4aによりおこなう。転送部4aは、キャッシュメモリ3aからキャッシュメモリ3cへのデータ転送をおこなう。
一方、間接接続する通信路6a,6bを通信経路とする場合、コントローラモジュール2aは、データ転送を中継するコントローラモジュール2b(第3のコントローラモジュール)にデータ転送を指示部5aにより指示する。コントローラモジュール2bは、指示部5aからの指示を受けてコントローラモジュール2aを転送元とし、コントローラモジュール2cを転送先とするデータ転送を転送部4bによりおこなう。転送部4bは、キャッシュメモリ3aからキャッシュメモリ3cへのデータ転送をおこなう。
このように、ストレージ装置1は、スイッチなしにデータ転送パスを冗長化することができ、スイッチの故障により冗長化構成とデータ転送能力が大きく損なわれることがない。また、ストレージ装置1は、コントローラモジュール2間で直接にデータ転送をおこなう場合に転送元の転送部4が通信状態を確認可能であり、中継するコントローラモジュール2を介してデータ転送をおこなう場合に中継する転送部4が通信状態を確認可能である。したがって、ストレージ装置1は、データ転送パスを冗長化したモジュール間通信におけるデータ転送を軽負荷にて保証することができる。
[第2の実施形態]
次に、第2の実施形態のストレージ装置の構成例について図2を用いて説明する。図2は、第2の実施形態のストレージ装置の構成例を示す図である。
ストレージ装置10は、ネットワーク8を介してホストコンピュータ9と通信可能に接続する。ネットワーク8は、1または複数のストレージ装置10と、1または複数のホストコンピュータ9が接続するSAN(Storage Area Network)である。
ストレージ装置10は、複数のコントローラモジュール20(CM#0,CM#1,CM#2,CM#3)を備える。各コントローラモジュール20は、それぞれディスク(ストレージデバイス)11と接続し、ディスク11のアクセス制御をおこなう。
なお、図示するストレージ装置10は、コントローラモジュール20を4台備えるが、データ転送の際に転送元となるコントローラモジュール20、転送先となるコントローラモジュール20、中継するコントローラモジュール20の3台以上あればよい。たとえば、ストレージ装置10は、コントローラモジュール20を6台、あるいは8台を備えるようにしてもよい。
次に、第2の実施形態のコントローラモジュール間のデータフローについて図3を用いて説明する。図3は、第2の実施形態のコントローラモジュール間のデータフローの一例を示す図である。
各コントローラモジュール20は、通信可能に相互接続する完全相互接続である。各コントローラモジュール20間におけるコントローラモジュールCM#xからコントローラモジュールCM#yへの方向のデータフローをDxyとする。たとえば、コントローラモジュールCM#0からコントローラモジュールCM#2への方向のデータフローは、D02であり、その逆方向のデータフローは、D20である。
すべてのコントローラモジュール20は、データ転送の際の転送元となる際に、転送先のコントローラモジュール20と直接接続する通信経路と、転送先までホップ数「1」で中継される通信経路とを有する。各通信経路は、双方向のデータフローがある。
たとえば、コントローラモジュールCM#0とコントローラモジュールCM#2を直接に接続するデータフローは、D02,D20がある。また、コントローラモジュールCM#0は、コントローラモジュールCM#2とホップ数「1」で接続する通信経路を2つ有する。コントローラモジュールCM#1が中継するデータフローは、コントローラモジュールCM#0,CM#1の間がD01,D10であり、コントローラモジュールCM#1,CM#2の間がD21,D12である。コントローラモジュールCM#3が中継するデータフローは、コントローラモジュールCM#0,CM#3の間がD03,D30であり、コントローラモジュールCM#3,CM#2の間がD23,D32である。
次に、第2の実施形態のコントローラモジュールの構成について図4を用いて説明する。図4は、第2の実施形態のコントローラモジュールの構成例を示す図である。
コントローラモジュール20は、キャッシュメモリ21と、プロセッサ22と、ホストインタフェースコントローラ23と、ディスクインタフェースコントローラ24と、データ転送コントローラ30を備える。
プロセッサ22は、コントローラモジュール20の統括的な制御やRAID処理を実行する制御部に相当する。プロセッサ22は、図示しないバスを介してキャッシュメモリ21とホストインタフェースコントローラ23とディスクインタフェースコントローラ24とデータ転送コントローラ30と接続する。
プロセッサ22は、たとえばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)などであってもよい。また、プロセッサ22は、シングルプロセッサに限らず、マルチプロセッサであってもよい。またプロセッサ22は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
ホストインタフェースコントローラ23は、ネットワーク8を介してホストコンピュータ9と接続する。ホストインタフェースコントローラ23は、ホストコンピュータ9からアクセス要求(Read要求やWrite要求など)を受け付けてプロセッサ22に通知する。また、ホストインタフェースコントローラ23は、ホストコンピュータ9から受信したユーザデータをキャッシュメモリ21に格納し、キャッシュメモリ21が格納するユーザデータをホストコンピュータ9に送信する。
ディスクインタフェースコントローラ24は、ディスク11と接続する。ディスクインタフェースコントローラ24は、プロセッサ22からのアクセス要求(Read要求やWrite要求など)によりディスク11へのアクセスをおこなう。ディスクインタフェースコントローラ24は、ディスク11から読み出したユーザデータをキャッシュメモリ21に格納し、キャッシュメモリ21が格納するユーザデータをディスク11に書き込む。
キャッシュメモリ21は、RAM(Random Access Memory)や不揮発性メモリによって構成される。キャッシュメモリ21は、ユーザデータを一時記憶してホストコンピュータ9からストレージ装置10へのアクセス要求に対して高速応答を可能にする。また、キャッシュメモリ21は、コントローラモジュール20の主記憶装置として使用される。キャッシュメモリ21には、プロセッサ22に実行させるOS(Operating System)のプログラムやファームウェア、アプリケーションプログラムの少なくとも一部が一時的に格納される。また、キャッシュメモリ21には、プロセッサ22による処理に必要な各種データが格納される。
不揮発性メモリは、ストレージ装置10の電源遮断時において記憶内容を保持する。不揮発性メモリは、たとえば、EEPROM(Electrically Erasable Programmable Read-Only Memory)やフラッシュメモリなどの半導体記憶装置や、HDDなどである。また、不揮発性メモリは、コントローラモジュール20の補助記憶装置として使用される。不揮発性メモリには、OSのプログラムやファームウェア、アプリケーションプログラム、および各種データが格納される。
データ転送コントローラ30は、キャッシュメモリ21に格納されているユーザデータのコピーを他のコントローラモジュール20に転送する機能を有する。データ転送コントローラ30は、プロセッサ22の指示にもとづいてユーザデータのデータ転送をおこなう。
以上のようなハードウェア構成によって、第2の実施形態のコントローラモジュール20の処理機能を実現することができる。なお、第1の実施形態に示したコントローラモジュール2も、コントローラモジュール20と同様のハードウェアにより実現することができる。
次に、第2の実施形態のデータ転送コントローラの構成について図5を用いて説明する。図5は、第2の実施形態のデータ転送コントローラの構成例を示す図である。
データ転送コントローラ30は、PCIe(ピーシーアイエクスプレス)インタフェース31,39と、パフォーマンスモニタ38と、DMA(Direct Memory Access)32と、ディスクリプタ実行部33と、転送先判定部34を備える。さらに、データ転送コントローラ30は、性能情報送信バッファ35と、ルーティングテーブル36と、性能情報格納バッファ37を備える。
なお、PCIeインタフェース31,39、パフォーマンスモニタ38、DMA32、ディスクリプタ実行部33、および転送先判定部34は、DSP、ASIC、PLDなどの電子回路で実現することができる。また、データ転送コントローラ30、性能情報送信バッファ35、ルーティングテーブル36、および性能情報格納バッファ37は、DSP、ASIC、PLDなどの電子回路で実現することができる。
PCIeインタフェース31(PCIeINF#p)は、DMA32、ディスクリプタ実行部33、およびルーティングテーブル36と接続する。PCIeインタフェース31は、プロセッサ22とデータ転送コントローラ30をPCIeで通信可能に接続するデータ転送インタフェースである。
PCIeインタフェース39(PCIeINF#0,PCIeINF#1,PCIeINF#2)は、性能情報送信バッファ35、ルーティングテーブル36、および性能情報格納バッファ37と接続する。PCIeインタフェース39は、2つのコントローラモジュール20をPCIeで通信可能に接続するデータ転送インタフェースである。
パフォーマンスモニタ38(PM#0,PM#1,PM#2)は、対応するPCIeインタフェース39、性能情報送信バッファ35、および性能情報格納バッファ37と接続する。パフォーマンスモニタ38は、対応するPCIeインタフェース39を通じて他のコントローラモジュール20に転送するデータの流量(データ流量)を観測する。たとえば、PM#0は、PCIeINF#0が他のコントローラモジュール20に転送するデータ流量を観測する。パフォーマンスモニタ38は、性能情報送信バッファ35、および性能情報格納バッファ37に観測したデータ流量を通知する。
性能情報送信バッファ35は、PCIeインタフェース39、パフォーマンスモニタ38、ルーティングテーブル36、および性能情報格納バッファ37と接続する。性能情報送信バッファ35は、パフォーマンスモニタ38が観測したデータ流量を含む性能情報を、PCIeインタフェース31を介して他のコントローラモジュール20に送信する。
性能情報格納バッファ37は、PCIeインタフェース39、パフォーマンスモニタ38、ルーティングテーブル36、性能情報送信バッファ35、および転送先判定部34と接続する。性能情報格納バッファ37は、パフォーマンスモニタ38の観測にもとづく性能情報と、他のコントローラモジュール20から受信した性能情報を格納する。
ルーティングテーブル36は、PCIeインタフェース31,39、DMA32、ディスクリプタ実行部33、性能情報送信バッファ35、および性能情報格納バッファ37と接続し、相互の接続をおこなう。
転送先判定部34は、ディスクリプタ実行部33、および性能情報格納バッファ37と接続する。転送先判定部34は、性能情報格納バッファ37が格納する性能情報にもとづいてデータ転送時の転送先までの転送経路の判定をおこなう。
ディスクリプタ実行部33は、PCIeインタフェース31、DMA32、転送先判定部34、およびルーティングテーブル36と接続する。ディスクリプタ実行部33は、プロセッサ22が生成してキャッシュメモリ21に格納したディスクリプタを読み込み、DMA起動指示を発行する。
ディスクリプタは、データ転送に関する制御情報(転送制御情報)である。ディスクリプタは、制御情報として転送元アドレス、転送先アドレス、データ転送量、転送結果通知先アドレスを含む。ディスクリプタ実行部33は、転送先判定部34が判定するコントローラモジュール20に対してDMA起動指示を発行する。
DMA32は、PCIeインタフェース31、ディスクリプタ実行部33、およびルーティングテーブル36と接続する。DMA32は、DMA起動指示にもとづいてプロセッサ22を介さずにデータ転送をおこなう。DMA32は、複数あり、DMA#0、DMA#1、およびDMA#2があり、それぞれがデータ転送を担う。
DMA32は、ディスクリプタを参照して指示されたアドレス範囲についてデータ転送をおこなう。転送元のコントローラモジュール20のDMA32は、キャッシュメモリ21から転送先のコントローラモジュール20へのデータ転送をおこなうことができる。また、データ転送を中継するコントローラモジュール20のDMA32は、転送元のコントローラモジュール20から転送先のコントローラモジュール20へのデータ転送をおこなうことができる。
次に、第2の実施形態の性能情報送信バッファが保持する性能情報について図6を用いて説明する。図6は、第2の実施形態の性能情報送信バッファが保持する性能情報を示す図である。
性能情報50は、CM#0の性能情報送信バッファ35が保持する性能情報の一例である。性能情報50は、CM#0を送信元とする伝送路ごとの伝送路異常フラグの有無と、データ流量とを含む情報である。データ流量DVxyは、CM#xからCM#yを転送方向とする伝送路のデータ流量である。たとえば、データ流量DV01はCM#0からCM#1を転送方向とする伝送路のデータ流量である。伝送路異常フラグは、たとえば、「0」が正常を表し、「0以外(たとえば1)」で異常を表す。
各伝送路のデータ流量と伝送路以上フラグは、対応するパフォーマンスモニタ38から所定タイミング(たとえば、1秒ごと)で収集され、所定タイミング(たとえば、1秒ごと)で他のコントローラモジュール20に向けて送信される。
次に、第2の実施形態の性能情報格納バッファが保持する性能情報について図7を用いて説明する。図7は、第2の実施形態の性能情報格納バッファが保持する性能情報を示す図である。
性能情報52は、CM#0の性能情報格納バッファ37が保持する性能情報の一例である。性能情報52は、CM#0がパフォーマンスモニタ38から収集した性能情報と、他のコントローラモジュール20(CM31,CM#2,CM#3)から受信した性能情報を含む情報である。
これにより、各コントローラモジュール20は、すべての伝送経路のデータ流量と異常の有無を把握することができる。
次に、第2の実施形態のWrite要求受付処理とRead要求受付処理について説明する。Write要求受付処理とRead要求受付処理は、それぞれホストコンピュータ9からWrite要求、Read要求を受け付けて、プロセッサ22が実行する処理である。Write要求は、ディスク11へのユーザデータの書き込み要求であり、Read要求は、ディスク11からのユーザデータの読み出し要求である。
まず、Write要求受付処理について図8を用いて説明する。図8は、第2の実施形態のWrite要求受付処理のフローチャートを示す図である。
ホストコンピュータ9からストレージ装置10へのWrite要求を、対応するコントローラモジュール20のホストインタフェースコントローラ23が受け付ける。Write要求を受け付けたホストインタフェースコントローラ23がWrite要求受付をプロセッサ22に通知することで、プロセッサ22は、Write要求受付処理を実行する。
[ステップS11]プロセッサ22は、Write要求のあったユーザデータをキャッシュメモリ21に格納するようにホストインタフェースコントローラ23に指示する。この指示を受けて、ホストインタフェースコントローラ23は、ユーザデータをキャッシュメモリ21に格納する。
[ステップS12]プロセッサ22は、ユーザデータ転送処理を実行する。ユーザデータ転送処理は、キャッシュメモリ21上のユーザデータを保護するため、所要のコントローラモジュール20にユーザデータをコピーする処理である。ユーザデータ転送処理の詳細は、図10を用いて後で説明する。
[ステップS13]プロセッサ22は、キャッシュメモリ21にユーザデータが格納されると、ホストインタフェースコントローラ23を介してホストコンピュータ9に完了応答を通知する。
[ステップS14]プロセッサ22は、ディスクインタフェースコントローラ24にディスク11へのユーザデータの書き込みを指示し、Write要求受付処理を終了する。この指示を受けて、ディスクインタフェースコントローラ24は、完了応答と非同期にユーザデータをキャッシュメモリ21から読み出してディスク11に書き込む。
次に、Read要求受付処理について図9を用いて説明する。図9は、第2の実施形態のRead要求受付処理のフローチャートを示す図である。
ホストコンピュータ9からストレージ装置10へのRead要求を、対応するコントローラモジュール20のホストインタフェースコントローラ23が受け付ける。Read要求を受け付けたホストインタフェースコントローラ23がRead要求受付をプロセッサ22に通知することで、プロセッサ22は、Read要求受付処理を実行する。
[ステップS21]プロセッサ22は、Read要求のあったユーザデータがキャッシュメモリ21に格納されているか否かを判定する。プロセッサ22は、Read要求のあったユーザデータがキャッシュメモリ21に格納されている場合にステップS23にすすみ、ユーザデータがキャッシュメモリ21に格納されていない場合にステップS22にすすむ。
[ステップS22]プロセッサ22は、Read要求のあったユーザデータの読み出しとキャッシュメモリ21への格納をディスクインタフェースコントローラ24に指示する。この指示を受けて、ディスクインタフェースコントローラ24は、ユーザデータをディスク11から読み出してキャッシュメモリ21に格納する。
[ステップS23]プロセッサ22は、Read要求のあったユーザデータをキャッシュメモリ21から読み出してホストコンピュータ9に転送するようにホストインタフェースコントローラ23に指示する。この指示を受けて、ホストインタフェースコントローラ23は、ユーザデータをキャッシュメモリ21から読み出してホストコンピュータ9に転送する。
[ステップS24]プロセッサ22は、ホストインタフェースコントローラ23を介してホストコンピュータ9に完了応答を通知してRead要求受付処理を終了する。
次に、ユーザデータ転送処理について図10を用いて説明する。図10は、第2の実施形態のユーザデータ転送処理のフローチャートを示す図である。
ユーザデータ転送処理は、Read要求受付処理のステップS13でプロセッサ22が実行する処理である。
[ステップS31]プロセッサ22は、ディスクリプタを生成する。ここで、ディスクリプタを図11を用いて説明する。図11は、第2の実施形態のディスクリプタを示す図である。
ディスクリプタ54は、データ転送元のアドレスと、データ転送先のアドレスと、データ転送量と、転送結果通知先のアドレスとを含むリスト状の情報である。データ転送元のアドレスは、データ転送元のコントローラモジュール20のキャッシュメモリ21のアドレスを、アドレス下位4byteを示すSRC_Lと、アドレス上位4byteを示すSRC_Uとで表す。データ転送先のアドレスは、データ転送先のコントローラモジュール20のキャッシュメモリ21のアドレスを、アドレス下位4byteを示すDEST_Lと、アドレス上位4byteを示すDEST_Uとで表す。データ転送量は、転送データの大きさをbyte数で表す。転送結果通知先のアドレスは、転送結果通知先となるコントローラモジュール20のキャッシュメモリ21のアドレスを、アドレス下位4byteを示すREP_Lと、アドレス上位4byteを示すREP_Uとで表す。転送結果通知先となるコントローラモジュール20は、データ転送元のコントローラモジュール20である。
[ステップS32]プロセッサ22は、生成したディスクリプタをキャッシュメモリ21に保存する。
[ステップS33]プロセッサ22は、キャッシュメモリ21に保存したディスクリプタを指定して、データ転送コントローラ30に転送開始を指示する。
[ステップS34]プロセッサ22は、転送結果通知先となるキャッシュメモリ21のアドレスに格納してある転送結果情報を参照する。プロセッサ22は、転送結果情報を参照することでデータ転送が完了したか否かを把握することができる。
[ステップS35]プロセッサ22は、データ転送が完了していない場合にステップS34にすすみデータ転送の完了を待つ。プロセッサ22は、データ転送が完了している場合にユーザデータ転送処理を終了する。
ここで、データ流量テーブル作成処理について図12を用いて説明する。図12は、第2の実施形態のデータ流量テーブル作成処理のフローチャートを示す図である。データ流量テーブル作成処理は、性能情報格納バッファ37が格納する性能情報から、転送元と転送先をホップ数「1」で中継する転送経路の性能情報をデータ流量テーブルとして作成する処理である。データ流量テーブル作成処理は、転送先判定部34が所定タイミング(たとえば、1秒ごと)で実行する処理である。
[ステップS41]転送先判定部34は、性能情報格納バッファ37から性能情報を取得する。
[ステップS42]転送先判定部34は、DMA32を起動するコントローラモジュール20と、転送先となるコントローラモジュール20の組み合わせを1つ選択する。転送先と転送元のコントローラモジュール20を直接接続する通信経路では、DMA32を起動するコントローラモジュール20は、転送元のコントローラモジュール20となる。転送元と転送先を中継するコントローラモジュール20を介した通信経路では、DMA32を起動するコントローラモジュール20は、転送元と転送先を中継するコントローラモジュール20となる。たとえば、CM#0を転送元としCM#1を転送先として直接接続する通信経路では、CM#0がDMA32を起動するコントローラモジュール20である。また、CM#0を転送元としCM#1を転送先としてCM#2が中継する通信経路では、CM#2がDMA32を起動するコントローラモジュール20である。
[ステップS43]転送先判定部34は、自らのコントローラモジュール20(自CM)がDMA32を起動するコントローラモジュール20か否かを判定する。転送先判定部34は、自CMがDMA32を起動するコントローラモジュール20である場合にステップS44にすすみ、DMA32を起動するコントローラモジュール20でない場合にステップS46にすすむ。
[ステップS44]転送先判定部34は、性能情報格納バッファ37から取得した性能情報のうちから選択した通信経路に対応する伝送路異常フラグをデータ流量テーブルにセットする。
[ステップS45]転送先判定部34は、性能情報格納バッファ37から取得した性能情報のうちから選択した通信経路に対応するデータ流量をデータ流量テーブルにセットする。
[ステップS46]転送先判定部34は、性能情報格納バッファ37から取得した性能情報のうちから選択した通信経路に対応する2つの伝送路異常フラグにもとづいて通信経路の伝送路異常フラグをデータ流量テーブルにセットする。ここでは、転送先判定部34は、選択した通信経路に対応する2つの伝送路異常フラグの論理和をデータ流量テーブルにセットする。
[ステップS47]転送先判定部34は、性能情報格納バッファ37から取得した性能情報のうちから選択した通信経路に対応する2つのデータ流量にもとづいて通信経路のデータ流量をデータ流量テーブルにセットする。ここでは、転送先判定部34は、選択した通信経路に対応する2つのデータ流量のうちの最大値をデータ流量テーブルにセットする。
[ステップS48]転送先判定部34は、DMA32を起動するコントローラモジュール20と、転送先となるコントローラモジュール20のすべての組み合わせを選択したか否かを判定する。転送先判定部34は、DMA32を起動するコントローラモジュール20と、転送先となるコントローラモジュール20のすべての組み合わせを選択していない場合にステップS42にすすみ、すべてを選択している場合にデータ流量テーブル作成処理を終了する。
ここで、データ流量テーブルについて図13を用いて説明する。図13は、第2の実施形態のデータ流量テーブルを示す図である。データ流量テーブル56は、CM#0の転送先判定部34が生成し保持するデータ流量テーブルの一例である。データ流量テーブル56は、CM#0を転送元とし転送先まで直接接続する通信経路と、CM#0を転送元とし中継CMを介して転送先まで接続する通信経路とについて、通信経路ごとの伝送異常フラグとデータ流量とを表す情報である。
CM#0を転送元とし転送先まで直接接続する通信経路は、CM#0がDMA起動CMとなる。CM#0を転送元とし中継CMを介して転送先まで接続する通信経路は、中継CMがDMA起動CMとなる。
CM#0がDMA起動CMとなる通信経路は、CM#0からCM#1、CM#0からCM#2、およびCM#0からCM#3の3つである。CM#0がDMA起動CMとなる通信経路の伝送路異常フラグは、性能情報格納バッファ37から取得した性能情報の対応するデータフローD01,D02,D03の伝送路異常フラグをコピーする。また、CM#0がDMA起動CMとなる通信経路のデータ流量は、性能情報格納バッファ37から取得した性能情報の対応するデータフローD01,D02,D03のデータ流量をコピーする。したがって、たとえば、DMA起動CMがCM#0であり、転送先CMがCM#1は、D01の伝送異常フラグと同一であり、データ流量F01がデータ流量DV01と同一である。
CM#0がDMA起動CMとならない通信経路は、CM#0からCM#2を経てCM#1、CM#3を経てCM#1、CM#1を経てCM#2、CM#3を経てCM#2、CM#1を経てCM#3、およびCM#2を経てCM#3の6つである。CM#0がDMA起動CMとならない通信経路の伝送路異常フラグは、性能情報格納バッファ37から取得した性能情報の対応する2つのデータフローの伝送路異常フラグの論理和である。たとえば、CM#0からCM#2を経てCM#1の通信経路の場合、CM#2がDMA起動CMとなり、伝送路異常フラグは、OR(伝送路異常フラグ(D02)、伝送路異常フラグ(D21))となる。また、CM#0がDMA起動CMとならない通信経路のデータ流量は、性能情報格納バッファ37から取得した性能情報の対応する2つのデータ流量の最大値とする。たとえば、CM#0からCM#2を経てCM#1の通信経路の場合、CM#2がDMA起動CMとなり、データ流量F21は、MAX(DV02、DV21)である。
これにより、各コントローラモジュール20は、通信経路ごとの最大データ流量と異常の有無を把握することができる。
次に、転送先判定処理について図14を用いて説明する。図14は、第2の実施形態の転送先判定処理のフローチャートを示す図である。
転送先判定処理は、データ流量テーブルからデータ転送をおこなう通信経路を判定する処理である。転送先判定処理は、転送先判定部34が所定タイミング(たとえば、1秒ごと)で実行する処理である。
[ステップS51]転送先判定部34は、ディスクリプタ実行部33からデータ転送の転送先となるコントローラモジュール20を取得する。
[ステップS52]転送先判定部34は、特定したコントローラモジュール20を転送先とする通信経路のうちから、データ流量テーブルの伝送路異常フラグを参照して正常な通信経路(伝送路)を抽出する。
[ステップS53]転送先判定部34は、抽出した通信経路のうちから、データ流量テーブルのデータ流量を参照してデータ流量(転送量)が最小の通信経路(伝送路)を抽出する。
[ステップS54]転送先判定部34は、ディスクリプタ実行部33に通信経路(伝送路)を通知して転送先判定処理を終了する。
これにより、転送先判定部34は、転送先判定タイミングにおける好適なデータ転送が可能な通信経路を決定することができる。
次に、転送指示処理について図15を用いて説明する。図15は、第2の実施形態の転送指示処理のフローチャートを示す図である。
転送指示処理は、データ転送をおこなうDMAにデータ転送を指示する処理である。転送指示処理は、ディスクリプタを設定したプロセッサ22がディスクリプタ実行部33にデータ転送の開始指示をおこなうことで、ディスクリプタ実行部33により実行される。
[ステップS61]ディスクリプタ実行部33は、プロセッサ22に指定されたディスクリプタをキャッシュメモリ21から取得する。
[ステップS62]ディスクリプタ実行部33は、転送先判定部34から通信経路(伝送路)を取得する。
[ステップS63]ディスクリプタ実行部33は、通信経路(伝送路)が転送元から転送先までの直接転送か否かを判定する。ディスクリプタ実行部33は、通信経路(伝送路)が直接転送である場合にステップS65にすすみ、直接転送でない場合に、すなわち中継CMを介して転送先まで接続する場合にステップS64にすすむ。
[ステップS64]ディスクリプタ実行部33は、中継CMのDMA32にディスクリプタを指定してデータ転送を指示し、転送指示処理を終了する。ディスクリプタ実行部33は、は、ルーティングテーブル36からPCIeインタフェース39を通して中継CMのDMA32へのデータ転送の指示をおこなう。中継CMのDMA32は、中継CMのPCIeインタフェース39から中継CMのルーティングテーブル36を通してデータ転送の指示を受け付ける。
たとえば、CM#0の転送先判定部34が、D01からD12をCM#1が中継する通信経路を判定した場合、ディスクリプタ実行部33は、ルーティングテーブル36からPCIeINF#0を通して、CM#1のDMAに転送指示を発行する。また、CM#0の転送先判定部34が、D03からD32をCM#3が中継する通信経路を判定した場合、ディスクリプタ実行部33は、ルーティングテーブル36からPCIeINF#2を通して、CM#3のDMAに転送指示を発行する。
[ステップS65]ディスクリプタ実行部33は、自CMのDMA32にディスクリプタを指定してデータ転送を指示し、転送指示処理を終了する。ディスクリプタ実行部33は、DMA32へのデータ転送の指示をおこなう。
次に、転送指示受付処理について図16を用いて説明する。図16は、第2の実施形態の転送指示受付処理のフローチャートを示す図である。
転送指示受付処理は、データ転送の指示を受け付けたDMAがデータ転送をおこなう処理である。転送指示受付処理は、転送元のコントローラモジュール20のディスクリプタ実行部33からデータ転送の指示を受け付けたDMA32により実行される。
[ステップS71]DMA32は、転送元のコントローラモジュール20のキャッシュメモリ21からディスクリプタを取得する。データ転送の指示を受け付けたDMA32が転送元のコントローラモジュール20にない場合は、PCIeインタフェース39を通して転送元のコントローラモジュール20のキャッシュメモリ21からディスクリプタを取得する。
[ステップS72]DMA32は、ディスクリプタに指定されたデータ転送元のアドレスから指定されたデータ量のデータを読み出す。データ転送の指示を受け付けたDMA32が転送元のコントローラモジュール20にない場合は、PCIeインタフェース39を通して転送元のコントローラモジュール20のキャッシュメモリ21からデータを取得する。
[ステップS73]DMA32は、ディスクリプタに指定されたデータ転送先のアドレスに読み出したデータを書き込む。データ転送の指示を受け付けたDMA32が転送元のコントローラモジュール20にない場合は、PCIeインタフェース39を通して転送先のコントローラモジュール20のキャッシュメモリ21にデータを書き込む。
[ステップS74]DMA32は、ディスクリプタに指定されたデータ転送が完了したか否かを判定する。DMA32は、データ転送が完了した場合にステップS75にすすみ、データ転送が完了していない場合にステップS76にすすむ。
[ステップS75]DMA32は、ディスクリプタに指定された転送結果通知先アドレスにデータ転送完了を書き込み、転送指示受付処理を終了する。データ転送の指示を受け付けたDMA32が転送元のコントローラモジュール20にない場合は、PCIeインタフェース39を通して転送先のコントローラモジュール20のキャッシュメモリ21に転送結果を書き込む。
[ステップS76]DMA32は、データ転送中の通信経路(伝送路)を監視し、伝送路が正常か否かを判定する。DMA32は、伝送路が正常である場合にステップS73にすすみ、伝送路が正常でない場合にステップS77にすすむ。
データ転送中の通信経路の監視は、性能情報格納バッファ37が保存する性能情報の伝送路異常フラグを参照することによりおこなうことができる。また、データ転送中の通信経路の監視は、通信経路にあるPCIeインタフェース39の状態を監視することによってもできる。
通信経路の監視は、たとえば、転送元CM#0から転送先CM#2への直接転送の場合、転送元CM#0のDMA32がデータフローD02を監視する。また、通信経路の監視は、転送元CM#0から中継CM#1を介して転送先CM#2へ転送する場合、中継CM#1のDMA32がデータフローD01,D12を監視する。
[ステップS77]DMA32は、データ転送を中止する。
[ステップS78]DMA32は、ディスクリプタに指定された転送結果通知先アドレスにデータ転送失敗を書き込み、転送指示受付処理を終了する。データ転送の指示を受け付けたDMA32が転送元のコントローラモジュール20にない場合は、PCIeインタフェース39を通して転送先のコントローラモジュール20のキャッシュメモリ21に転送結果を書き込む。
このように、ストレージ装置10は、スイッチなしにデータ転送パスを冗長化することができ、スイッチの故障により冗長化構成とデータ転送能力が大きく損なわれることがない。たとえば、スイッチを設ける場合、スイッチの故障によりデータ転送できなくなる伝送路の範囲が大きくなるが、コントローラモジュール20間をメッシュ接続する場合、スイッチの故障によりデータ転送できなくなる伝送路の範囲は、故障個所に限られる。
また、ストレージ装置10は、コントローラモジュール20間で直接にデータ転送をおこなう場合に転送元のコントローラモジュール20が通信状態を確認可能である。中継するコントローラモジュール20を介してデータ転送をおこなう場合には、ストレージ装置10は、中継するコントローラモジュール20のDMA32が、転送元CMと中継CM間の通信状態および中継CMと転送先CM間の通信状態を確認可能である。したがって、ストレージ装置10は、データの転送保証を容易におこなうことができる。
また、ストレージ装置10は、ディスクリプタにより転送結果通知先アドレスを転送元のコントローラモジュール20のキャッシュメモリ21上とすることで、転送元のコントローラモジュール20のプロセッサ22が転送結果を容易に把握することができる。
また、ストレージ装置10は、コントローラモジュール20間をメッシュ接続することにより、通信経路ごとのデータ転送量を分散可能であり、1つの通信経路のデータ転送量を抑制することができる。ストレージ装置10は、データ転送量の抑制により通信にかかるコストを低減可能である。
したがって、ストレージ装置10は、データ転送パスを冗長化したモジュール間通信におけるデータ転送を軽負荷にて保証することができる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ストレージ装置1、ストレージ装置10(コントローラモジュール20)が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP、ASIC、PLDなどの電子回路で実現することもできる。
1,10 ストレージ装置
2,2a,2b,2c,20 コントローラモジュール
3,3a,3b,3c,21 キャッシュメモリ
4,4a,4b,4c 転送部
5,5a,5b,5c 指示部
6,6a,6b,6c 通信路
7,7a,7b,7c ストレージデバイス
8 ネットワーク
9 ホストコンピュータ
11 ディスク
22 プロセッサ
23 ホストインタフェースコントローラ
24 ディスクインタフェースコントローラ
30 データ転送コントローラ
31,39 PCIeインタフェース
32 DMA
33 ディスクリプタ実行部
34 転送先判定部
35 性能情報送信バッファ
36 ルーティングテーブル
37 性能情報格納バッファ
38 パフォーマンスモニタ
50,52 性能情報
54 ディスクリプタ
56 データ流量テーブル

Claims (5)

  1. キャッシュメモリを有しストレージデバイスを制御する第1、第2および第3のコントローラモジュールと、前記第1、第2および第3のコントローラモジュールをメッシュ状に接続する通信路と、を備えるストレージ装置であって、
    前記第1のコントローラモジュールは、前記第1のコントローラモジュールのキャッシュメモリに転送制御情報を格納し、前記第1のコントローラモジュールを転送元とし、前記第2のコントローラモジュールを転送先とするデータ転送を、前記第1のコントローラモジュールおよび前記第2のコントローラモジュールと前記通信路によりそれぞれ直接接続する前記第3のコントローラモジュールに指示する指示部を備え、
    前記第3のコントローラモジュールは、前記指示を受け付けて前記転送制御情報を取得し、前記第1のコントローラモジュールのキャッシュメモリから前記第2のコントローラモジュールのキャッシュメモリへのデータ転送を、前記第1のコントローラモジュールと前記第3のコントローラモジュールとを接続する通信路の通信状態の監視と、前記第3のコントローラモジュールと前記第2のコントローラモジュールとを接続する通信路の通信状態の監視とを行って得られた監視結果にもとづいて実行し、前記転送制御情報で指定されたアドレスに、実行したデータ転送の結果を格納する転送部を備える、
    ことを特徴とするストレージ装置。
  2. 記結果の格納先となるアドレスは、前記第1のコントローラモジュールのキャッシュメモリ上のアドレスであることを特徴とする請求項記載のストレージ装置。
  3. 前記第1、第2および第3のコントローラモジュールは、
    前記通信路ごとの通信インタフェースを監視して通信路ごとの通信状態を監視する監視部と、
    前記通信路ごとの通信状態を格納する格納部と、
    を備え、
    前記指示部は、前記第1のコントローラモジュールの格納部が格納する前記通信路ごとの前記通信状態にもとづいて前記第3のコントローラモジュールへの指示を決定することを特徴とする請求項1記載のストレージ装置。
  4. 前記転送部は、DMA(ダイレクトメモリアクセス)によるデータ転送をおこなうことを特徴とする請求項1乃至請求項のいずれか1つに記載のストレージ装置。
  5. キャッシュメモリを有しストレージデバイスを制御する第1、第2および第3のコントローラモジュールと、前記第1、第2および第3のコントローラモジュールをメッシュ状に接続する通信路と、を備えるストレージ装置のモジュール間データ転送方法であって、
    前記第1のコントローラモジュールが、前記第1のコントローラモジュールのキャッシュメモリに転送制御情報を格納し、前記第1のコントローラモジュールを転送元とし、前記第2のコントローラモジュールを転送先とするデータ転送を、前記第1のコントローラモジュールおよび前記第2のコントローラモジュールと前記通信路によりそれぞれ直接接続する前記第3のコントローラモジュールに指示し、
    前記第3のコントローラモジュールが、前記指示を受け付けて前記転送制御情報を取得し、前記第1のコントローラモジュールのキャッシュメモリから前記第2のコントローラモジュールのキャッシュメモリへのデータ転送を、前記第1のコントローラモジュールと前記第3のコントローラモジュールとを接続する通信路の通信状態の監視と、前記第3のコントローラモジュールと前記第2のコントローラモジュールとを接続する通信路の通信状態の監視とを行って得られた監視結果にもとづいて実行し、前記転送制御情報で指定されたアドレスに、実行したデータ転送の結果を格納する
    ことを特徴とするモジュール間データ転送方法。
JP2012261923A 2012-11-30 2012-11-30 ストレージ装置、およびモジュール間データ転送方法 Expired - Fee Related JP5998884B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012261923A JP5998884B2 (ja) 2012-11-30 2012-11-30 ストレージ装置、およびモジュール間データ転送方法
US14/031,494 US20140156934A1 (en) 2012-11-30 2013-09-19 Storage apparatus and module-to-module data transfer method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012261923A JP5998884B2 (ja) 2012-11-30 2012-11-30 ストレージ装置、およびモジュール間データ転送方法

Publications (2)

Publication Number Publication Date
JP2014106940A JP2014106940A (ja) 2014-06-09
JP5998884B2 true JP5998884B2 (ja) 2016-09-28

Family

ID=50826666

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012261923A Expired - Fee Related JP5998884B2 (ja) 2012-11-30 2012-11-30 ストレージ装置、およびモジュール間データ転送方法

Country Status (2)

Country Link
US (1) US20140156934A1 (ja)
JP (1) JP5998884B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016018384A (ja) * 2014-07-08 2016-02-01 富士通株式会社 ストレージ制御装置、ストレージシステム、及びプログラム
DE102018125297A1 (de) 2017-11-17 2019-05-23 Samsung Electronics Co., Ltd. Speichereinrichtung, die Peer-to-Peer-Kommunikation mit externer Einrichtung ohne Eingriff eines Host durchführt
US10901734B2 (en) 2019-03-01 2021-01-26 Micron Technology, Inc. Memory mapping using commands to transfer data and/or perform logic operations
JP7326863B2 (ja) 2019-05-17 2023-08-16 オムロン株式会社 転送装置、情報処理装置、および、データ転送方法
US20210342182A1 (en) * 2020-04-30 2021-11-04 Intel Corporation System, apparatus and method for accessing multiple address spaces via a data mover

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3094986B2 (ja) * 1998-04-27 2000-10-03 日本電気株式会社 ポイント−マルチポイントatmコネクション設定方法
JP4483168B2 (ja) * 2002-10-23 2010-06-16 株式会社日立製作所 ディスクアレイ制御装置
JP4718851B2 (ja) * 2004-05-10 2011-07-06 株式会社日立製作所 ストレージシステムにおけるデータ移行
JP2009266119A (ja) * 2008-04-28 2009-11-12 Hitachi Ltd ストレージ装置及びデータ転送方法
US8615615B2 (en) * 2009-07-01 2013-12-24 Lsi Corporation Load balancing with SCSI I/O referrals
US8572342B2 (en) * 2010-06-01 2013-10-29 Hitachi, Ltd. Data transfer device with confirmation of write completion and method of controlling the same
JP5521816B2 (ja) * 2010-06-18 2014-06-18 富士通株式会社 記憶装置、制御装置および記憶装置の制御方法

Also Published As

Publication number Publication date
JP2014106940A (ja) 2014-06-09
US20140156934A1 (en) 2014-06-05

Similar Documents

Publication Publication Date Title
JP4775846B2 (ja) 物理リンクの割当てを制御するコンピュータシステム及び方法
JP4817783B2 (ja) Raidシステム及びそのリビルド/コピーバック処理方法
KR101455016B1 (ko) 고가용성 솔리드 스테이트 드라이브를 제공하는 방법 및 장치
JP5511960B2 (ja) 情報処理装置、及びデータの転送方法
JP5998884B2 (ja) ストレージ装置、およびモジュール間データ転送方法
JP4651797B2 (ja) バックアップシステム、及び複製装置
JP4639223B2 (ja) ストレージサブシステム
JP6899852B2 (ja) ストレージ装置
JP2007122477A (ja) Raidシステム、raidコントローラ及びそのリビルド/コピーバック処理方法
JP2006244123A (ja) データストレージシステム及びデータストレージ制御装置
JP4477437B2 (ja) ストレージ装置、そのクラスタ間データ通信方法、及びそのクラスタ通信制御プログラム
JP2008112399A (ja) ストレージ仮想化スイッチおよびコンピュータシステム
US10901626B1 (en) Storage device
JP2005267038A (ja) ストレージシステムの運用方法
JP2010049502A (ja) ストレージサブシステム、及びこれを有するストレージシステム
JP6464777B2 (ja) 情報処理装置及びプログラム
JP2017010390A (ja) ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法
US8402195B2 (en) Storage system mounted with plurality of processors
JP2006185000A (ja) ストレージ装置
US9921753B2 (en) Data replication across host systems via storage controller
JP2007334764A (ja) Nasシステムおよびnasシステムの情報処理方法
JP2017130002A (ja) ストレージ制御装置および制御プログラム
JP5773446B2 (ja) 記憶装置、冗長性回復方法、およびプログラム
JP5729043B2 (ja) ストレージ装置および制御装置
JP4526509B2 (ja) ディスクアレイ制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150706

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160510

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160711

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160815

R150 Certificate of patent or registration of utility model

Ref document number: 5998884

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees