[go: up one dir, main page]

JP2016018384A - ストレージ制御装置、ストレージシステム、及びプログラム - Google Patents

ストレージ制御装置、ストレージシステム、及びプログラム Download PDF

Info

Publication number
JP2016018384A
JP2016018384A JP2014140732A JP2014140732A JP2016018384A JP 2016018384 A JP2016018384 A JP 2016018384A JP 2014140732 A JP2014140732 A JP 2014140732A JP 2014140732 A JP2014140732 A JP 2014140732A JP 2016018384 A JP2016018384 A JP 2016018384A
Authority
JP
Japan
Prior art keywords
storage
data
node
instruction
cpu
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.)
Pending
Application number
JP2014140732A
Other languages
English (en)
Inventor
賢次 澤田
Kenji Sawada
賢次 澤田
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 JP2014140732A priority Critical patent/JP2016018384A/ja
Priority to US14/742,104 priority patent/US20160011791A1/en
Publication of JP2016018384A publication Critical patent/JP2016018384A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】命令の転送を高速化すること。
【解決手段】データを記憶するストレージ装置20A、20B、20Cと、ストレージ装置20A、20B、20Cにおけるデータの処理を制御するストレージ制御装置10A、10B、10Cとを含むノードA、B、Cを複数有するストレージシステムが提供される。ストレージ制御装置10Aは、ストレージ装置20A、20B、20Cにおけるデータの処理を指示する上位装置30、及び他のノードB、Cに含まれるストレージ制御装置10B、10Cと通信する通信部11Aと、任意のノードA、B、Cに含まれるストレージ装置20A、20B、20Cにおけるデータの処理についての指示を含む命令Qを上位装置30から受信した場合に命令Qを全ての他のノードB、Cに含まれるストレージ制御装置10B、10Cへ送信するように制御する制御部12Aと、を有する。
【選択図】図1

Description

本発明は、ストレージ制御装置、ストレージシステム、及びプログラムに関する。
容量の大きなデータを扱うシステムにおいては、高い信頼性及び高い読み書き性能を実現することが可能なRAID(Redundant Arrays of Inexpensive Disks)装置が利用される。RAID装置は、HDD(Hard Disk Drive)などの記憶装置を複数接続して冗長化した装置である。また、ネットワークを介して複数のホスト装置からアクセスできる仕組みを設け、データを集中管理できるようにしたNAS(Network Attached Storage)装置などが利用されることもある。以下、1つのRAID装置又は複数のRAID装置を組み合わせた記憶装置をディスクアレイと呼ぶことにする。
ディスクアレイへデータを書き込む処理や、ディスクアレイからデータを読み出す処理は、コントローラと呼ばれる制御装置により制御される。そのため、ホスト装置は、コントローラを介してディスクアレイに対するデータの読み書きを実行する。なお、1つのコントローラと、そのコントローラが制御対象とするディスクアレイとの組はノードと呼ばれる単位で管理される場合がある。また、複数のノードを含むストレージシステムでは、ノード同士がネットワークで接続され、あるノードがホスト装置から受けたデータの書き込み要求や読み出し要求を他のノードへ転送する仕組みが設けられる。
上記のようなストレージシステムでは、ホスト装置への応答速度を高速化するために、コントローラに高速なキャッシュメモリが設けられることがある。この場合、コントローラは、ホスト装置からディスクアレイに対する書き込み要求を受けた際、書き込みデータをキャッシュメモリに格納した後、ホスト装置へ書き込みの完了を通知する。その後、コントローラは、キャッシュメモリに格納した書き込みデータをディスクアレイに格納する。この仕組みによれば、ホスト装置へ書き込みの完了を素早く通知できる。データを読み出す場合も、対象とするデータがキャッシュメモリに格納されている場合、キャッシュメモリからデータを読み出して素早くホスト装置へ送信できる。
ところで、ホスト装置と通信する複数のチャネルアダプタと、ストレージデバイスと通信する複数のストレージアダプタと、メインキャッシュメモリとを有し、ホスト装置への応答速度を高速化するストレージシステムが提案されている。このストレージシステムでは、チャネルアダプタとストレージアダプタとの間で送受信されるデータがメインキャッシュメモリに格納される。また、このチャネルアダプタは、ローカルキャッシュメモリを有しており、ライト要求に応じてライトデータをローカルキャッシュメモリに二重化して書き込み、完了通知をホスト装置へ送信する。
上記のチャネルアダプタは、完了通知と非同期のタイミングでローカルキャッシュメモリに格納されたライトデータを一括してメインキャッシュメモリへ転送する。さらに、このチャネルアダプタは、ローカルキャッシュメモリに格納されたデータのディレクトリ情報を管理し、リード要求を受けた場合に、ディレクトリ情報を利用してローカルキャッシュメモリ内のリードデータを探索する。リードデータが見つかると、チャネルアダプタは、ローカルキャッシュメモリからホスト装置へリードデータを転送する。
また、計算ノード、第1のI/Oノード、及び第2のI/Oノードを含み、データ書き込みを効率化するデータ処理システムが提案されている。このデータ処理システムでは、計算ノードから書き込み要求を受けた第1のI/Oノードが、書き込みデータを第2のI/Oノードへ転送する。そして、書き込みデータを受領した第2のI/Oノードが、受領後に確認メッセージを計算ノードへ送る。このとき、第1のI/Oノードは、自身が有する不揮発性ストレージに書き込みデータを書き込んだ後、第2のI/Oノードが有する揮発性メモリから書き込みデータを排除させる排除要求を第2のI/Oノードへ送る。
特開2005−157815号公報 特開2000−259502号公報
複数のノードを含むストレージシステムの場合、ホスト装置が発行する命令は、その命令が処理を要求するノードに直接送られないことがある。例えば、ホスト装置が発行した命令は、ランダムに決定されたノードへと送られる。そのため、上記のような命令の転送処理が発生する。あるノードがホスト装置から受けた命令を他のノードへ転送する際、ホスト装置から命令を受けたノードが命令を解析して転送先を決める処理が発生する。この処理を省略することができれば、転送時間の短縮に寄与すると考えられる。
そこで、1つの側面によれば、本発明の目的は、命令の転送を高速化することが可能なストレージ制御装置、ストレージシステム、及びプログラムを提供することにある。
本開示の1つの側面によれば、データを記憶するストレージ装置と、当該ストレージ装置におけるデータの処理を制御するストレージ制御装置とを含むノードを複数有するストレージシステムのストレージ制御装置が提供される。ストレージ制御装置は、ストレージ装置におけるデータの処理を指示するホスト装置、及び他のノードに含まれるストレージ制御装置と通信する通信部と、任意のノードに含まれるストレージ装置におけるデータの処理についての指示を含む命令を通信部がホスト装置から受信した場合に当該命令を全ての他のノードに含まれるストレージ制御装置へ送信するように通信部を制御する制御部と、を有する。
また、本開示の他の1つの側面によれば、データを記憶するストレージ装置と、当該ストレージ装置におけるデータの処理を制御するストレージ制御装置とを含むノードを複数有するストレージシステムが提供される。ストレージ制御装置は、ストレージ装置におけるデータの処理を指示するホスト装置、及び他のノードに含まれるストレージ制御装置と通信する通信部と、任意のノードに含まれるストレージ装置におけるデータの処理についての指示を含む命令を通信部がホスト装置から受信した場合に当該命令を全ての他のノードに含まれるストレージ制御装置へ送信するように通信部を制御する制御部と、を有する。また、ストレージ装置は、ストレージ制御装置と接続する接続部と、データを格納する記録媒体と、ストレージ制御装置による制御を受けて記録媒体に対するデータの書き込み処理又はデータの読み出し処理を実行する処理部と、を有する。
また、本開示の他の1つの側面によれば、データを記憶するストレージ装置と、当該ストレージ装置におけるデータの処理を制御するストレージ制御装置とを含むノードを複数有するストレージシステムのストレージ制御装置として動作するコンピュータに、ストレージ装置におけるデータの処理を指示するホスト装置、及び他のノードに含まれるストレージ制御装置との通信を制御し、任意のノードに含まれるストレージ装置におけるデータの処理についての指示を含む命令をホスト装置から受信した場合に当該命令を全ての他のノードに含まれるストレージ制御装置へ送信するように制御する処理を実行させる、プログラムが提供される。
本発明によれば、命令の転送を高速化することが可能になる。
第1実施形態に係るストレージシステムの一例を示した図である。 第2実施形態に係るストレージシステムの一例を示した図である。 第2実施形態に係るホストコンピュータの機能を実現可能なハードウェアの一例を示した図である。 第2実施形態に係るコントローラ及びストレージの機能を実現可能なハードウェアの一例を示した図である。 書き込み命令に応じてコントローラが実行する処理の一例を示したシーケンス図である。 命令の一例を示した図である。 読み出し命令に応じてコントローラが実行する処理(退避領域にデータがある場合)の一例を示したシーケンス図である。 読み出し命令に応じてコントローラが実行する処理(退避領域にデータがない場合)の一例を示したシーケンス図である。 書き込み命令に応じてコントローラが実行する処理(命令の転送を含む処理)の一例を示したシーケンス図である。 読み出し命令に応じてコントローラが実行する処理(命令の転送を含む処理;退避領域にデータがある場合)の一例を示したシーケンス図である。 読み出し命令に応じてコントローラが実行する処理(命令の転送を含む処理;退避領域にデータがない場合)の一例を示したシーケンス図である。 第2実施形態に係るコントローラが命令に応じて実行する処理の一例を示したシーケンス図である。 第2実施形態に係る管理情報の一例を示した図である。 第2実施形態に係る管理情報の更新方法について説明するための第1の図である。 第2実施形態に係る管理情報の更新方法について説明するための第2の図である。 第2実施形態に係る管理情報の更新方法について説明するための第3の図である。 第2実施形態に係る管理情報の更新方法について説明するための第4の図である。 第2実施形態に係るノードAのコントローラが書き込み命令に応じて実行する処理の一例を示したフロー図である。 第2実施形態に係るノードBのコントローラが書き込み命令に応じて実行する処理の一例を示したフロー図である。 第2実施形態に係るノードCのコントローラが書き込み命令に応じて実行する処理の一例を示したフロー図である。 第2実施形態に係るノードAのコントローラが読み出し命令に応じて実行する処理の一例を示したフロー図である。 第2実施形態に係るノードBのコントローラが読み出し命令に応じて実行する処理の一例を示したフロー図である。
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。図1は、第1実施形態に係るストレージシステムの一例を示した図である。
図1に例示したストレージシステムは、ノードA、B、Cを有する。
図1の例において、ノードAは、データを記憶するストレージ装置20Aと、当該ストレージ装置20Aにおけるデータの処理を制御するストレージ制御装置10Aとを含む。ノードBは、ストレージ装置20Bと、当該ストレージ装置20Bにおけるデータの処理を制御するストレージ制御装置10Bとを含む。ノードCは、データを記憶するストレージ装置20Cと、当該ストレージ装置20Cにおけるデータの処理を制御するストレージ制御装置10Cとを含む。
なお、1つのノードに含まれるストレージ装置の数は1以上であってもよい。また、1つのノードに含まれるストレージ制御装置の数は1以上であってもよい。図1の例では、ノードが、ストレージ装置及びストレージ制御装置のハードウェアを単位として設定されているが、ノードの設定方法はこれに限定されない。
例えば、ストレージ装置が有する1以上の記録媒体に設定された1以上の論理的な記憶領域や、ストレージ制御装置が有する1以上のプロセッサに設定された1以上の論理的な演算リソースを単位としてノードが設定されていてもよい。また、ハードウェアを仮想化する技術を適用して2台のストレージ制御装置を3台以上の仮想的なストレージ制御装置として運用する場合、仮想的なストレージ制御装置を単位としてノードを設定することも可能である。同様に、ストレージ装置の仮想化にも対応可能である。但し、簡単のために図1の例に基づいて説明を進める。
ストレージ制御装置10Aは、通信部11A、制御部12A、及び記憶部13Aを有する。また、ストレージ装置20Aは、接続部21A、記録媒体22A、及び処理部23Aを有する。また、上位装置30は、ストレージ装置20A、20B、20Cにおけるデータの処理を指示する。なお、上位装置30は、サーバ装置や端末装置などに代表されるコンピュータ(情報処理装置)の一例である。
なお、記憶部13Aは、RAM(Random Access Memory)などの揮発性記憶装置、或いは、HDDやフラッシュメモリなどの不揮発性記憶装置である。また、制御部12A及び処理部23Aは、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。但し、制御部12A及び処理部23Aは、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路であってもよい。制御部12Aは、例えば、記憶部13A又は他のメモリに記憶されたプログラムを実行する。また、処理部23Aは、例えば、記録媒体22A又は他のメモリに記憶されたプログラムを実行する。
通信部11Aは、他のノードB、Cに含まれるストレージ制御装置10B、10Cと通信する。例えば、通信部11Aは、任意のノードA、B、Cに含まれるストレージ装置20A、20B、20Cにおけるデータの処理についての指示を含む命令Qを通信部11Aが上位装置30から受信する。この場合、制御部12Aは、命令Qを全ての他のノードB、Cに含まれるストレージ制御装置10B、10Cへ送信するように通信部11Aを制御する。記憶部13Aは、データを一時的に格納する要素である。
接続部21Aは、ストレージ制御装置10Aに接続する要素である。例えば、接続部21Aは、ストレージ制御装置10Aと接続する要素である。記録媒体22Aは、データを格納する要素である。記録媒体22Aは、例えば、1台又は複数台のHDDやSSD(Solid State Drive)、或いは、RAID装置などである。処理部23Aは、ストレージ装置20Aによる制御を受けて記録媒体22Aに対するデータの書き込み処理又はデータの読み出し処理を実行する。
通信部11Aは、他のノードB、Cに含まれるストレージ制御装置10B、10Cから、任意のノードA、B、Cに含まれるストレージ装置20A、20B、20Cにおけるデータの書き込み処理についての指示及びデータを含む命令Qを受信することがある。この場合、制御部12Aは、通信部11Aが受信した命令Qを記憶部13Aに格納する。
また、通信部11Aは、他のノードB、Cに含まれるストレージ装置20B、20Cにおけるデータの読み出し処理についての指示を含む命令Qを受信することがある。この場合、制御部12Aは、当該指示の対象となるデータが記憶部13Aに格納されているとき、当該データを記憶部13Aから読み出して上位装置30へ送信するように通信部11Aを制御する。
上記のように、通信部11Aは、ノードAに含まれるストレージ装置20Aにおけるデータの書き込み処理についての指示及び当該データを含む命令Qを上位装置30から受信することがある。この場合、制御部12Aは、命令Qを記憶部13Aに格納し、当該命令Qに対する応答を上位装置30へ送信するように通信部11Aを制御する。また、制御部12Aは、当該応答の送信後に当該データを当該ストレージ装置20Aに格納する。このとき、制御部12Aは、ストレージ装置20Aに対する当該データの格納完了を示す完了通知を全ての他のノードB、Cに含まれるストレージ制御装置10B、10Cへ送信するように通信部11Aを制御する。
また、通信部11Aは、他のノードB、Cに含まれるストレージ制御装置10B、10Cから、当該他のノードB、Cに含まれるストレージ装置20B、20Cへのデータの格納完了を示す完了通知を受信することがある。この場合、制御部12Aは、当該データと同じデータを記憶部13Aから消去する。なお、当該データを消去するタイミングは、記憶部13Aへのデータ格納後、設定した時間が経過した後であってもよい。
上記のように、ノードAのストレージ制御装置10Aが受信した命令Qが他のノードB、Cに含まれる全てのストレージ制御装置10B、10Cへと転送されることで、転送時に命令を解析して転送先を選択する処理を省略することができる。その結果、命令Qの転送処理を高速化することが可能になる。また、ストレージ制御装置10A、10B、10Cがいずれも命令Qのデータを保持することで、応答速度が速いストレージ制御装置が、読み出し要求に対して素早く応答できるようになる。
例えば、書き込み処理を実行中のストレージ制御装置に対して読み出し要求が発生した場合に、他のストレージ制御装置が上位装置30へと応答することで、高速な応答が可能になる。なお、図1の例では、説明の都合上、上位装置30が1つしか記載されていないが、複数の上位装置が含まれる場合には、複数の上位装置から書き込み命令や読み出し命令が様々なタイミングで各ノードに送信されることが予想される。第1実施形態に係る技術を適用すれば、このような状況において高い読み出し性能を実現することが可能になる。
以上、第1実施形態について説明した。
<2.第2実施形態>
次に、第2実施形態について説明する。
[2−1.ストレージシステム]
図2を参照しながら、第2実施形態に係るストレージシステムについて説明する。図2は、第2実施形態に係るストレージシステムの一例を示した図である。
図2に例示したストレージシステムは、ホストコンピュータ100A、100B、及びノードA、B、Cを含む。また、ノードAは、コントローラ200A、及びストレージ300Aを含む。同様に、ノードBは、コントローラ200B、及びストレージ300Bを含む。ノードCは、コントローラ200C、及びストレージ300Cを含む。
ホストコンピュータ100A、100Bは上位装置の一例である。コントローラ200A、200B、200Cは、ストレージ制御装置の一例である。ストレージ300A、300B、300Cは、ストレージ装置の一例である。
なお、以下の説明において、ホストコンピュータ100A、100Bを区別せずにホストコンピュータ100と表記する場合がある。同様に、コントローラ200A、200B、200Cを区別せずにコントローラ200と表記する場合がある。ストレージ300A、300B、300Cを区別せずにストレージ300と表記する場合がある。
ホストコンピュータ100A、100Bは、ネットワークNWを介してコントローラ200A、200B、200Cと通信することができる。ネットワークNWは、例えば、LAN(Local Area Network)や光通信ネットワークなどである。
コントローラ200Aは、CPU201A、及びメモリ202Aを有する。同様に、コントローラ200Bは、CPU201B、及びメモリ202Bを有する。コントローラ200Cは、CPU201C、及びメモリ202Cを有する。なお、CPU201A、201B、201Cに代えて、DSPなどのプロセッサ、或いは、ASICやFPGAなどの電子回路を利用しても、コントローラ200A、200B、200Cの機能を実現することができる。CPU201A、201B、201Cは、制御部の一例である。
メモリ202A、202B、202Cは、例えば、RAMなどの揮発性記憶装置、或いは、HDDやフラッシュメモリなどの不揮発性記憶装置である。また、メモリ202A、202B、202Cはそれぞれ、1以上の揮発性記憶装置、及び1以上の不揮発性記憶装置を組み合わせた記憶装置の集合体であってもよい。例えば、メモリ202A、202B、202Cはそれぞれ、主記憶領域として利用する揮発性記憶装置、一時的にデータを格納する一時記憶領域として利用する不揮発性記憶装置、及びキャッシュメモリとして利用する揮発性記憶装置を含んでいてもよい。
ストレージ300A、300B、300Cは、例えば、それぞれ1以上のHDDやSSDを有する記憶装置、或いは、RAID装置やNAS装置などの記憶装置である。ストレージ300Aにおけるデータの処理(書き込み処理、読み出し処理)は、コントローラ200Aにより制御される。同様に、ストレージ300Bにおけるデータの処理(書き込み処理、読み出し処理)は、コントローラ200Bにより制御される。ストレージ300Cにおけるデータの処理(書き込み処理、読み出し処理)は、コントローラ200Cにより制御される。
ところで、図2には、1つのノードに1組のコントローラ200及びストレージ300を含む例が示されているが、ノードの設定方法はこれに限定されない。例えば、1つのノードに含まれるコントローラ200の数は2以上であってもよい。また、1つのノードに含まれるストレージ300の数は2以上であってもよい。
また、図2の例では、コントローラ200、ストレージ300というハードウェアを単位としてノードが設定されているが、ノードの設定方法はこれに限定されない。
例えば、ストレージ300が有する記憶装置に設定された1以上の論理的な記憶領域や、コントローラ200が有するプロセッサに設定された1以上の論理的な演算リソースを単位としてノードを設定することも可能である。また、ハードウェアを仮想化する技術を適用して2以上のコントローラ200を3以上の仮想的なコントローラとして運用し、仮想的なコントローラを単位としてノードを設定することも可能である。同様に、ストレージ300の仮想化にも対応可能である。
但し、以下の説明では、簡単のために図2に例示したストレージシステムに基づいて説明を進める。
以上、ストレージシステムについて説明した。
[2−2.ハードウェア]
次に、ホストコンピュータ100、コントローラ200、及びストレージ300のハードウェアについて説明する。
(ホストコンピュータ)
図3を参照しながら、ホストコンピュータ100の機能を実現可能なハードウェアについて説明する。図3は、第2実施形態に係るホストコンピュータの機能を実現可能なハードウェアの一例を示した図である。
ホストコンピュータ100が有する機能は、例えば、図3に示す情報処理装置のハードウェア資源を用いて実現することが可能である。つまり、ホストコンピュータ100が有する機能は、コンピュータプログラムを用いて図3に示すハードウェアを制御することにより実現される。
図3に示すように、このハードウェアは、主に、CPU902と、ROM(Read Only Memory)904と、RAM906と、ホストバス908と、ブリッジ910とを有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926とを有する。
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。
これらの要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、ボタン、スイッチ、及びレバーなどが用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラが用いられることもある。
出力部918としては、例えば、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、又はELD(Electro-Luminescence Display)などのディスプレイ装置が用いられる。また、出力部918として、スピーカやヘッドホンなどのオーディオ出力装置、又はプリンタなどが用いられることもある。つまり、出力部918は、情報を視覚的又は聴覚的に出力することが可能な装置である。
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、HDDなどの磁気記憶デバイスが用いられる。また、記憶部920として、SSDやRAMディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。
ドライブ922は、着脱可能な記録媒体であるリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。
接続ポート924は、例えば、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)、RS−232Cポート、又は光オーディオ端子など、外部接続機器930を接続するためのポートである。外部接続機器930としては、例えば、プリンタなどが用いられる。
通信部926は、ネットワーク932に接続するための通信デバイスである。通信部926としては、例えば、有線又は無線LAN用の通信回路、WUSB(Wireless USB)用の通信回路、光通信用の通信回路やルータ、ADSL(Asymmetric Digital Subscriber Line)用の通信回路やルータ、携帯電話ネットワーク用の通信回路などが用いられる。通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークであり、例えば、インターネット、LAN、放送網、衛星通信回線などを含む。
(コントローラ及びストレージ)
次に、図4を参照しながら、コントローラ200及びストレージ300の機能を実現可能なハードウェアについて説明する。図4は、第2実施形態に係るコントローラ及びストレージの機能を実現可能なハードウェアの一例を示した図である。
図4に示すように、コントローラ200は、CPU201、及びメモリ202を有する。なお、コントローラ200に搭載されるCPU201の数は2以上であってもよい。また、複数の演算コアを搭載したCPU201を利用することも可能である。また、CPU201に代えてDSP、ASIC、FPGAなどを利用することもできる。
メモリ202は、主記憶領域221、一時記憶領域222、及び退避領域223を含む。主記憶領域221は、例えば、データの読み出し速度及びデータの書き込み速度が高速な揮発性記憶装置又は当該揮発性記憶装置に設定された記憶領域である。一時記憶領域222は、例えば、NVRAM(Non-Volatile RAM)などの不揮発性記憶装置又は当該不揮発性記憶装置に設定された記憶領域である。退避領域223は、例えば、キャッシュメモリとして利用可能な揮発性記憶装置又は不揮発性記憶装置である。
以下の説明において、コントローラ200Aの主記憶領域221を主記憶領域221A、コントローラ200Bの主記憶領域221を主記憶領域221B、コントローラ200Cの主記憶領域221を主記憶領域221Cと表記する場合がある。同様に、コントローラ200Aの一時記憶領域222を一時記憶領域222A、コントローラ200Bの一時記憶領域222を一時記憶領域222B、コントローラ200Cの一時記憶領域222を一時記憶領域222Cと表記する場合がある。コントローラ200Aの退避領域223を退避領域223A、コントローラ200Bの退避領域223を退避領域223B、コントローラ200Cの退避領域223を退避領域223Cと表記する場合がある。
ストレージ300は、RAIDコントローラ301、及びディスクアレイ302を有する。ディスクアレイ302は、HDD321、322、323を有する。RAIDコントローラ301は、例えば、ディスクアレイ302に対して挿脱される物理ボリュームの管理や、ディスクアレイ302に設定される論理ボリュームの管理を実施する。また、RAIDコントローラ301は、コントローラ200による制御に応じてディスクアレイ302に対するデータの書き込み処理や読み出し処理を実行する。
以上、ハードウェアについて説明した。
[2−3.退避領域の利用]
次に、退避領域を利用した書き込み処理及び読み出し処理について説明する。
(書き込み処理)
図5及び図6を参照しながら、退避領域を利用した書き込み処理について説明する。図5は、書き込み命令に応じてコントローラが実行する処理の一例を示したシーケンス図である。図6は、命令の一例を示した図である。
(S11)ホストコンピュータ100は、コントローラ200のCPU201に対して書き込み命令を送信する。命令には、対象のデータと、指示する処理の内容を示す指示情報とが含まれる。
例えば、命令は、図6に示すように、命令種別、指定ノード、ファイル名、及びデータを有する。命令種別は、書き込み命令であるか、読み出し命令であるかを特定する情報である。指定ノードは、指示した処理を実行するノードを特定する情報である。ファイル名は、指示した処理の対象となるデータを特定する情報である。データは、指示した処理の対象となるデータ本体である。なお、命令種別、指定ノード、ファイル名の組を指示情報と呼ぶことにする。
図6に例示した命令は、命令種別が「書き込み」、指定ノードが「A」、ファイル名が「ファイルX」、データが「010010101」である。この命令は、ノードAに対し、ファイルXとして特定されるデータ010010101を書き込むように指示する書き込み命令である。但し、読み出し命令には、データが含まれず、「読み出し」を特定する命令種別、指定ノード、及び読み出し対象のファイル名を含む指示情報が含まれる。
図5の例は書き込み処理を示しているため、S11において、データ及び指示情報を含む書き込み命令がホストコンピュータ100からCPU201へと送信される。また、図5の例では、コントローラ200を含むノードを指定して書き込み処理を指示する書き込み命令がホストコンピュータ100から送信されたものとする。
(S12)CPU201は、S11で受信した書き込み命令からデータを抽出し、抽出したデータを一時記憶領域222に格納する。
(S13)CPU201は、S12で一時記憶領域222に格納したデータを退避領域223へ退避する。退避領域223へ退避したことで、一時記憶領域222に格納されたデータが消去された後でも、CPU201は、そのデータを退避領域223から読み出すことができる。
(S14)CPU201は、S11で受信した書き込み命令に対する応答として、その書き込み命令に対する処理が完了した旨を示す完了通知をホストコンピュータ100に送信する。このように、CPU201は、退避領域223へのデータの退避が完了した直後に完了通知をホストコンピュータ100に送信する。
(S15)CPU201は、一時記憶領域222のデータをストレージ300へ格納する。なお、ストレージ300へデータを格納する処理は、ホストコンピュータ100への応答が完了した後、任意のタイミングで実行してよい。つまり、応答のタイミングと、ストレージ300へデータを格納するタイミングは非同期でよい。例えば、CPU201又はストレージ300の負荷状況に応じて、負荷が低い期間にS15の処理が実行される。S15の処理が完了すると、図5に示した一連の処理は終了する。
(読み出し処理)
次に、図7及び図8を参照しながら、退避領域を利用した読み出し処理について説明する。図7は、読み出し命令に応じてコントローラが実行する処理(退避領域にデータがある場合)の一例を示したシーケンス図である。図8は、読み出し命令に応じてコントローラが実行する処理(退避領域にデータがない場合)の一例を示したシーケンス図である。
(退避領域にデータがある場合)
図7を参照する。図7の例は、退避領域にデータがある場合の処理を示している。
(S21)ホストコンピュータ100は、コントローラ200のCPU201に対して読み出し命令を送信する。読み出し命令には、指示情報が含まれる。例えば、読み出し命令には、命令種別「読み出し」、指定ノード「A」、ファイル名「ファイルX」などの情報が含まれる。
(S22)CPU201は、S21で受信した読み出し命令を一時記憶領域222に格納する。
(S23)CPU201は、一時記憶領域222に格納した読み出し命令に含まれる指示情報を参照し、読み出し対象のデータを特定するファイル名を抽出する。そして、CPU201は、退避領域223に格納されているデータから、抽出したファイル名のデータを探索する。なお、図7の例では、抽出したファイル名のデータが退避領域223に格納されており、そのデータがCPU201により特定できたものとする。
(S24)CPU201は、S23で特定したデータを主記憶領域221へ格納する。
(S25)CPU201は、読み出し命令に対する応答として、S24で主記憶領域221に格納したデータ、及び読み出し命令に対する処理が完了した旨を示す完了通知をホストコンピュータ100に送信する。S25の処理が完了すると、図7に示した一連の処理は終了する。
(退避領域にデータがない場合)
図8を参照する。図8の例は、退避領域にデータがない場合の処理を示している。
(S31)ホストコンピュータ100は、コントローラ200のCPU201に対して読み出し命令を送信する。読み出し命令には、指示情報が含まれる。例えば、読み出し命令には、命令種別「読み出し」、指定ノード「A」、ファイル名「ファイルX」などの情報が含まれる。
(S32)CPU201は、S31で受信した読み出し命令を一時記憶領域222に格納する。
(S33)CPU201は、一時記憶領域222に格納した読み出し命令に含まれる指示情報を参照し、読み出し対象のデータを特定するファイル名を抽出する。そして、CPU201は、退避領域223に格納されているデータから、抽出したファイル名のデータを探索する。なお、図8の例では、抽出したファイル名のデータが退避領域223に格納されておらず、そのデータがCPU201により特定できなかったものとする。
(S34)CPU201は、ストレージ300に格納されているデータから、S33で抽出したファイル名のデータを探索する。なお、図8の例では、抽出したファイル名のデータがストレージ300に格納されており、そのデータがCPU201により特定できたものとする。
(S35)CPU201は、S34で特定したデータを主記憶領域221及び退避領域223へ格納する。なお、読み出しの対象とされたデータは近い将来に再び読み出される可能性があるため、CPU201は、ストレージ300から読み出したデータを退避領域223へも格納し、高速に読み出せるようにする。
(S36)CPU201は、読み出し命令に対する応答として、S35で主記憶領域221に格納したデータ、及び読み出し命令に対する処理が完了した旨を示す完了通知をホストコンピュータ100に送信する。S36の処理が完了すると、図8に示した一連の処理は終了する。
以上、退避領域を利用した処理について説明した。上記のように、退避領域を利用すると、退避領域にデータが格納されている場合には、ストレージからデータを読み出す処理を省略し、退避領域から読み出したデータを用いて応答することができる。その結果、ホストコンピュータへの応答を高速化することが可能になる。
[2−4.命令の転送]
次に、命令の転送を伴う書き込み処理及び読み出し処理について説明する。
単一ノードの場合や、対象のノードに対して命令が直接送られる場合には上述した図7や図8の例に従ってデータの書き込み処理や読み出し処理を実現することができる。しかし、複数のノードを含むストレージシステムでは、対象のノード以外のノードへ命令が送られることがある。この場合、命令を受けたノードは、対象のノードに対して命令を転送する。ここでは、このような命令の転送を伴う処理について説明する。なお、簡単のため、2つのノードA、Bを対象として説明する。
(書き込み処理)
図9を参照しながら、命令の転送を伴う書き込み処理について説明する。図9は、書き込み命令に応じてコントローラが実行する処理(命令の転送を含む処理)の一例を示したシーケンス図である。
(S41)ホストコンピュータ100は、ノードAに属するコントローラ200AのCPU201Aに対して書き込み命令を送信する。書き込み命令には、対象のデータと、指示情報とが含まれる。なお、この書き込み命令には、命令種別「書き込み」、指定ノード「B」、ファイル名「ファイルX」を示す指示情報が含まれているものとする。
(S42)CPU201Aは、書き込み命令に含まれる指示情報を解析し、書き込み命令の宛先となるノードのコントローラを認識する。図9の例では、ノードBに属するコントローラ200Bが、CPU201Aにより宛先として認識される。
(S43)CPU201Aは、コントローラ200BのCPU201Bに対して書き込み命令を転送する。
(S44)CPU201Bは、書き込み命令からデータを抽出し、抽出したデータを一時記憶領域222Bに格納する。
(S45)CPU201Bは、S44で一時記憶領域222Bに格納したデータを退避領域223Bへ退避する。退避領域223Bへ退避したことで、一時記憶領域222Bに格納されたデータが消去された後でも、CPU201Bは、そのデータを退避領域223Bから読み出すことができる。
(S46)CPU201Bは、書き込み命令に対する応答として、その書き込み命令に対する処理が完了した旨を示す完了通知をCPU201Aに送信する。このように、CPU201Bは、退避領域223Bへのデータの退避が完了した直後に完了通知をCPU201Aに送信する。
(S47)CPU201Aは、S41で受信した書き込み命令に対する応答として、その書き込み命令に対する処理が完了した旨を示す完了通知をホストコンピュータ100に送信する。
(S48)CPU201Bは、一時記憶領域222Bのデータをストレージ300Bへ格納する。なお、ストレージ300Bへデータを格納する処理は、CPU201Aへの応答が完了した後、任意のタイミングで実行してよい。つまり、応答のタイミングと、ストレージ300Bへデータを格納するタイミングは非同期でよい。例えば、CPU201B又はストレージ300Bの負荷状況に応じて、負荷が低い期間にS48の処理が実行される。S48の処理が完了すると、図9に示した一連の処理は終了する。
(読み出し処理)
次に、命令の転送を伴う読み出し処理について説明する。図10は、読み出し命令に応じてコントローラが実行する処理(命令の転送を含む処理:退避領域にデータがある場合)の一例を示したシーケンス図である。図11は、読み出し命令に応じてコントローラが実行する処理(命令の転送を含む処理:退避領域にデータがない場合)の一例を示したシーケンス図である。
(退避領域にデータがある場合)
図10を参照する。図10の例は、退避領域にデータがある場合の処理を示している。
(S51)ホストコンピュータ100は、ノードAに属するコントローラ200AのCPU201Aに対して読み出し命令を送信する。読み出し命令には、指示情報が含まれる。例えば、読み出し命令には、命令種別「読み出し」、指定ノード「B」、ファイル名「ファイルX」などの情報が含まれる。
(S52)CPU201Aは、読み出し命令に含まれる指示情報を解析し、読み出し命令の宛先となるノードのコントローラを認識する。図10の例では、ノードBに属するコントローラ200Bが、CPU201Aにより宛先として認識される。
(S53)CPU201Aは、コントローラ200BのCPU201Bに対して読み出し命令を転送する。
(S54)CPU201Bは、読み出し命令を一時記憶領域222Bに格納する。
(S55)CPU201Bは、一時記憶領域222Bに格納した読み出し命令に含まれる指示情報を参照し、読み出し対象のデータを特定するファイル名を抽出する。そして、CPU201Bは、退避領域223Bに格納されているデータから、抽出したファイル名のデータを探索する。なお、図10の例では、抽出したファイル名のデータが退避領域223Bに格納されており、そのデータがCPU201Bにより特定できたものとする。
(S56)CPU201Bは、S55で特定したデータを主記憶領域221Bへ格納する。
(S57)CPU201Bは、読み出し命令に対する応答として、S56で主記憶領域221Bに格納したデータ、及び読み出し命令に対する処理が完了した旨を示す完了通知をコントローラ200AのCPU201Aに送信する。
(S58)CPU201Aは、読み出し命令に対する応答として、CPU201Bから受信したデータ、及び読み出し命令に対する処理が完了した旨を示す完了通知をホストコンピュータ100に送信する。S58の処理が完了すると、図10に示した一連の処理は終了する。
(退避領域にデータがない場合)
図11を参照する。図11の例は、退避領域にデータがない場合の処理を示している。
(S61)ホストコンピュータ100は、ノードAに属するコントローラ200AのCPU201Aに対して読み出し命令を送信する。読み出し命令には、指示情報が含まれる。例えば、読み出し命令には、命令種別「読み出し」、指定ノード「B」、ファイル名「ファイルX」などの情報が含まれる。
(S62)CPU201Aは、読み出し命令に含まれる指示情報を解析し、読み出し命令の宛先となるノードのコントローラを認識する。図11の例では、ノードBに属するコントローラ200Bが、CPU201Aにより宛先として認識される。
(S63)CPU201Aは、コントローラ200BのCPU201Bに対して読み出し命令を転送する。
(S64)CPU201Bは、読み出し命令を一時記憶領域222Bに格納する。
(S65)CPU201Bは、一時記憶領域222Bに格納した読み出し命令に含まれる指示情報を参照し、読み出し対象のデータを特定するファイル名を抽出する。そして、CPU201Bは、退避領域223Bに格納されているデータから、抽出したファイル名のデータを探索する。なお、図11の例では、抽出したファイル名のデータが退避領域223Bに格納されておらず、そのデータがCPU201Bにより特定できなかったものとする。
(S66)CPU201Bは、ストレージ300Bに格納されているデータから、S65で抽出したファイル名のデータを探索する。なお、図11の例では、抽出したファイル名のデータがストレージ300に格納されており、そのデータがCPU201Bにより特定できたものとする。
(S67)CPU201Bは、S66で特定したデータを主記憶領域221B及び退避領域223Bへ格納する。なお、読み出しの対象とされたデータは近い将来に再び読み出される可能性があるため、CPU201Bは、ストレージ300Bから読み出したデータを退避領域223Bへも格納し、高速に読み出せるようにする。
(S68)CPU201Bは、読み出し命令に対する応答として、S67で主記憶領域221Bに格納したデータ、及び読み出し命令に対する処理が完了した旨を示す完了通知をコントローラ200AのCPU201Aに送信する。
(S69)CPU201Aは、読み出し命令に対する応答として、CPU201Bから受信したデータ、及び読み出し命令に対する処理が完了した旨を示す完了通知をホストコンピュータ100に送信する。S69の処理が完了すると、図11に示した一連の処理は終了する。
以上、命令の転送を伴う処理について説明した。上記のように、命令を受けたノード(図9〜図11の例ではノードA)が命令を転送する際に命令を解析して宛先を認識する処理が生じている。この処理を省略できれば、より高速に命令を転送することができる。また、ノードAが単に命令を転送するだけでなく、その命令を利用することができれば、より効率的な処理を実現することができる。以下、命令の転送を高速化する方法、及び処理を効率化する方法について説明する。
[2−5.全ノード転送方式]
次に、命令を受けたノードのコントローラが他のノードのコントローラ全てに命令を転送する方式(以下、全ノード転送方式)について説明する。以下では、3つのノードA、B、Cを考慮して説明を進める。
(転送方式)
図12を参照しながら、全ノード転送方式に係る命令の転送処理について説明する。図12は、第2実施形態に係るコントローラが命令に応じて実行する処理の一例を示したシーケンス図である。なお、図12の例では、命令を受けるノードのコントローラ(ノードコントローラ)としてノードAのコントローラ200Aが選択されているものとする。また、ノードコントローラは、自身が管理するノード以外のノードを指定する命令を受けた場合、ホストコンピュータ100に対してエラーを通知する。
(S71、S72、S73)ホストコンピュータ100は、ノードAに属するコントローラ200AのCPU201Aに対して命令を送信する。この命令を受信したCPU201Aは、その命令を解析せず、全ての他のノードに属するコントローラ(コントローラ200B、200C)に対して命令を転送する。
(S74、S75、S76)CPU201Aは、命令の転送後、その命令に対する処理を実行する。また、CPU201Aから命令を受信したCPU201B、201Cは、それぞれ命令に対する処理を実行する。処理の完了及びホストコンピュータ100への応答が終了すると、図12に示した一連の処理は終了する。
上記のように、ホストコンピュータから受けた命令を全ての他のノードに転送することとすれば、転送先を選択するために命令を解析する処理を省略することができる。つまり、無条件に全ノードへ命令をそのまま転送するのであれば、転送時に行う解析処理が不要になり、転送処理を高速化することができる。結果として、命令を受けてから、転送後に実行する処理の開始までの時間を短縮することができる。
(管理情報)
上記のように、全ノード転送方式によれば、全てのノードが命令を保持できるようになる。また、全てのノードが命令に対して処理を実行できるようになる。そこで、命令に対する処理の実行状況や、命令が対象とするデータの格納状況を管理できれば、後続の命令に対する処理の効率化が期待できる。ここでは、こうした処理の実行状況やデータの格納状況を管理する管理情報の例及び管理情報の更新方法について述べる。
以下、図13〜図17を参照しながら、管理情報について説明する。
図13は、第2実施形態に係る管理情報の一例を示した図である。図14は、第2実施形態に係る管理情報の更新方法について説明するための第1の図である。図15は、第2実施形態に係る管理情報の更新方法について説明するための第2の図である。図16は、第2実施形態に係る管理情報の更新方法について説明するための第3の図である。図17は、第2実施形態に係る管理情報の更新方法について説明するための第4の図である。
図13は、ノードAに属するコントローラ200Aが保持する管理情報の例を示している。この管理情報は、例えば、一時記憶領域222Aに格納される。図13に示すように、管理情報は、レコードを特定する識別番号(No.)、命令の対象となるノードを特定する指定ノード、命令の対象となるデータを特定するファイル名、及び、命令の対象となるデータの格納場所や状況を特定するデータ格納情報を含む。
例えば、No.001のレコードには、指定ノード「ノードA」、ファイル名「ファイルX」、データ格納情報「データ本体」と記載されている。このレコードは、処理を実行するノードとしてノードAを指定する命令に応じて、ファイルXで特定されるデータが退避領域223Aに格納されていることを示している。なお、データ格納情報「データ本体」は、データ本体が退避領域223に格納されていることを示している。
また、No.002のレコードには、指定ノード「ノードB」、ファイル名「ファイルY」、データ格納情報「ノードB(書き込み完了)」と記載されている。このレコードは、処理を実行するノードとしてノードBを指定する命令に応じて、ファイルYで特定されるデータがノードBに属するストレージ300Bに既に書き込み済みであることを示している。なお、データ格納情報「ノードB(書き込み完了)」は、ノードBのストレージ300Bにデータが書き込み完了していることを示している。
また、No.003のレコードには、指定ノード「ノードA」、ファイル名「ファイルZ」、データ格納情報「ストレージ内の格納位置」と記載されている。このレコードは、処理を実行するノードとしてノードAを指定する命令に応じて、ファイルZで特定されるデータがストレージ300Aに格納されていることを示している。なお、データ格納情報「ストレージ内の格納位置」は、ストレージ300Aにおけるデータの格納位置を特定するアドレスやポインタなどの情報である。
ここで、管理情報の更新方法について説明する。
(ノードA宛ての書き込み命令をノードAが受けた場合#1)
図14を参照する。図14の例は、ノードA宛ての書き込み命令をノードAが受けた場合にノードAのコントローラ200Aが実行する管理情報の更新処理を示している。なお、管理情報の更新処理は、主にCPU201Aにより実行される。また、図13に例示したNo.001のレコードを更新する処理について説明する。
(S101)CPU201Aは、書き込み命令から指定ノード、ファイル名、データ格納情報として記載する情報を抽出する。そして、CPU201Aは、図14に示すように、管理情報のレコードに指定ノード、ファイル名、データ格納情報を記載する。なお、CPU201Aは、書き込み命令の受信後、一時記憶領域222Aから退避領域223Aへデータを退避し、ホストコンピュータ100へ応答する。そのため、データ格納情報は「データ本体」となる。
(S102)CPU201Aは、書き込み命令を解析し、書き込み命令の宛先を認識する。図14の例では「ノードA」が宛先であるため、この時点で、CPU201Aは、指定ノードを「空白」に設定する。
(S103)CPU201Aは、ホストコンピュータ100への応答後、一時記憶領域222Aに格納したデータをストレージ300Aに格納する。ストレージ300Aへデータを格納し終えた後、CPU201Aは、データを格納したストレージ300A内の位置を特定する情報でデータ格納情報を書き換える。S103の処理が完了すると、図14に示した一連の処理は終了する。
(ノードA宛ての書き込み命令をノードAが受けた場合#2)
図15を参照する。図15の例は、ノードA宛ての書き込み命令をノードAが受けた場合にノードBのコントローラ200Bが実行する管理情報の更新処理を示している。なお、管理情報の更新処理は、主にCPU201Bにより実行される。
(S111)CPU201Bは、書き込み命令から指定ノード、ファイル名、データ格納情報として記載する情報を抽出する。そして、CPU201Bは、図15に示すように、管理情報のレコードに指定ノード、ファイル名、データ格納情報を記載する。なお、CPU201Bは、書き込み命令の受信後、一時記憶領域222Bから退避領域223Bへデータを退避し、ホストコンピュータ100へ応答する。そのため、データ格納情報は「データ本体」となる。
(S112)CPU201Bは、書き込み命令を解析し、書き込み命令の宛先を認識する。図15の例では「ノードA」が宛先であるため、CPU201Bは、指定ノードを「ノードA」のままとする。
(S113)コントローラ200AのCPU201Aは、ホストコンピュータ100への応答後、一時記憶領域222Aに格納したデータをストレージ300Aに格納する。ストレージ300Aへデータを格納し終えた後、CPU201Aは、データの格納を完了した旨を示す格納完了をCPU201Bに通知する。この格納完了を受けたCPU201Bは、「ノードA(書き込み完了)」でデータ格納情報を書き換える。さらに、CPU201Bは、指定ノードを「空白」に設定する。S113の処理が完了すると、図15に示した一連の処理は終了する。
(ノードB宛ての書き込み命令をノードAが受けた場合#1)
図16を参照する。図16の例は、ノードB宛ての書き込み命令をノードAが受けた場合にノードAのコントローラ200Aが実行する管理情報の更新処理を示している。なお、管理情報の更新処理は、主にCPU201Aにより実行される。
(S121)CPU201Aは、書き込み命令から指定ノード、ファイル名、データ格納情報として記載する情報を抽出する。そして、CPU201Aは、図16に示すように、管理情報のレコードに指定ノード、ファイル名、データ格納情報を記載する。なお、CPU201Aは、書き込み命令の受信後、一時記憶領域222Aから退避領域223Aへデータを退避し、ホストコンピュータ100へ応答する。そのため、データ格納情報は「データ本体」となる。
(S122)CPU201Aは、書き込み命令を解析し、書き込み命令の宛先を認識する。図16の例では「ノードB」が宛先であるため、CPU201Aは、指定ノードを「ノードB」のままとする。
(S123)コントローラ200BのCPU201Bは、一時記憶領域222Bに格納したデータをストレージ300Bに格納する。ストレージ300Bへデータを格納し終えた後、CPU201Bは、データの格納を完了した旨を示す格納完了をCPU201Aに通知する。この格納完了を受けたCPU201Aは、「ノードB(書き込み完了)」にデータ格納情報を書き換える。さらに、CPU201Aは、指定ノードを「空白」に設定する。S123の処理が完了すると、図16に示した一連の処理は終了する。
(ノードB宛ての書き込み命令をノードAが受けた場合#2)
図17を参照する。図17の例は、ノードB宛ての書き込み命令をノードAが受けた場合にノードBのコントローラ200Bが実行する管理情報の更新処理を示している。なお、管理情報の更新処理は、主にCPU201Bにより実行される。
(S131)CPU201Bは、書き込み命令から指定ノード、ファイル名、データ格納情報として記載する情報を抽出する。そして、CPU201Bは、図17に示すように、管理情報のレコードに指定ノード、ファイル名、データ格納情報を記載する。なお、CPU201Bは、書き込み命令の受信後、一時記憶領域222Bから退避領域223Bへデータを退避し、CPU201Aへ応答する。そのため、データ格納情報は「データ本体」となる。
(S132)CPU201Bは、書き込み命令を解析し、書き込み命令の宛先を認識する。図17の例では「ノードB」が宛先であるため、この時点で、CPU201Bは、指定ノードを「空白」に設定する。
(S133)CPU201Bは、コントローラ200AのCPU201Aへの応答後、一時記憶領域222Bに格納したデータをストレージ300Bに格納する。ストレージ300Bへデータを格納し終えた後、CPU201Bは、データを格納したストレージ300B内の位置を特定する情報でデータ格納情報を書き換える。S133の処理が完了すると、図17に示した一連の処理は終了する。
上記のように、管理情報を利用することで、自ノードのストレージに格納されるデータ、及び自ノードが命令を受け、他ノードのストレージに格納されるデータの状態を管理することができる。そのため、ホストコンピュータから読み出し要求を受けた場合に管理情報を利用して効率的な応答処理を実行することが可能になる。
(書き込み処理)
次に、図18〜図20を参照しながら、全ノード転送方式に係る書き込み処理について説明する。
図18は、第2実施形態に係るノードAのコントローラが書き込み命令に応じて実行する処理の一例を示したフロー図である。図19は、第2実施形態に係るノードBのコントローラが書き込み命令に応じて実行する処理の一例を示したフロー図である。図20は、第2実施形態に係るノードCのコントローラが書き込み命令に応じて実行する処理の一例を示したフロー図である。
(ノードAの処理)
図18を参照する。図18の例は、ノードAのコントローラ200Aがホストコンピュータ100からノードB宛ての書き込み命令を受信した場合に実行する処理を示している。なお、図18に示した処理は、主にCPU201Aにより実行される。
(S141)CPU201Aは、ホストコンピュータ100からノードB宛ての書き込み命令を受信する。
(S142)CPU201Aは、S141で受信した書き込み命令をノードBに属するコントローラ200B及びノードCに属するコントローラ200Cへ転送する。つまり、CPU201Aは、書き込み命令の宛先を認識する処理を省略し、全ての他ノードに属するコントローラ(コントローラ200B、200C)に書き込み命令を転送する。
(S143)CPU201Aは、書き込み命令からデータを抽出し、抽出したデータを一時記憶領域222Aに格納する。
(S144)CPU201Aは、S143で一時記憶領域222Aに格納したデータを退避領域223Aへ退避する。退避領域223Aへ退避したことで、一時記憶領域222Aに格納されたデータが消去された後でも、CPU201Aは、そのデータを退避領域223Aから読み出すことができる。
(S145)CPU201Aは、書き込み命令から指定ノード、ファイル名、データ格納情報として記載する情報を抽出する。そして、CPU201Aは、管理情報のレコードに指定ノード、ファイル名、データ格納情報を記載する。S144で退避領域223Aにデータが退避されているため、データ格納情報は「データ本体」となる。
(S146)CPU201Aは、書き込み命令に対する応答として、その書き込み命令に対する処理が完了した旨を示す完了通知をホストコンピュータ100に送信する。
(S147)CPU201Aは、ノードBに属するコントローラ200BのCPU201Bから格納完了が通知されたか否かを判定する。なお、この格納完了は、CPU201Bがデータをストレージ300Bに格納し終えた後でCPU201A、201Cへと通知される。格納完了が通知されている場合、処理はS149へと進む。一方、格納完了が通知されていない場合、処理はS148へと進む。
(S148)CPU201Aは、データを退避領域223Aへ退避した後、一定時間が経過しているか否かを判定する。なお、この一定時間は、予め設定されている。例えば、30秒、5分、30分、1時間、1日、1週間など、様々な単位で一定時間を設定することができる。一定時間が経過している場合、処理はS149へと進む。一方、一定時間が経過していない場合、処理はS147へと進む。
(S149)CPU201Aは、S144で退避したデータを退避領域223Aから消去する。このように、一定時間が経過したデータを退避領域223Aから削除することで、退避領域223Aの容量を有効活用することができる。また、退避領域223Aにデータを一定時間保持しておくことで、その間に当該データを指定する読み出し命令に対してCPU201Aが素早く応答できるようになる。
(S150)CPU201Aは、管理情報を更新する。例えば、CPU201Bから格納完了が通知されている場合、CPU201Aは、データ格納情報を「ノードB(書き込み完了)」と書き換え、指定ノードを「空白」に設定する(図16を参照)。また、CPU201Bから格納完了が通知されずに一定時間が経過した場合、CPU201Aは、「ノードB(書き込み未了)」などと書き換える。S150の処理が完了すると、図18に示した一連の処理は終了する。
(ノードBの処理)
図19を参照する。図19の例は、ノードBのコントローラ200BがノードB宛ての書き込み命令をノードAのコントローラ200Aから受信した場合に実行する処理を示している。なお、図19に示した処理は、主にCPU201Bにより実行される。
(S161)CPU201Bは、ノードAに属するコントローラ200AのCPU201AからノードB宛ての書き込み命令を受信する。
(S162)CPU201Bは、書き込み命令からデータを抽出し、抽出したデータを一時記憶領域222Bに格納する。
(S163)CPU201Bは、S162で一時記憶領域222Bに格納したデータを退避領域223Bへ退避する。退避領域223Bへ退避したことで、一時記憶領域222Bに格納されたデータが消去された後でも、CPU201Bは、そのデータを退避領域223Bから読み出すことができる。
(S164)CPU201Bは、書き込み命令から指定ノード、ファイル名、データ格納情報として記載する情報を抽出する。そして、CPU201Bは、管理情報のレコードに指定ノード、ファイル名、データ格納情報を記載する。S163で退避領域223Bにデータが退避されているため、データ格納情報は「データ本体」となる。
(S165)CPU201Bは、一時記憶領域222Bのデータをストレージ300Bへ格納する。なお、ストレージ300Bへデータを格納する処理は、任意のタイミングで実行してよい。例えば、CPU201B又はストレージ300Bの負荷状況に応じて、負荷が低い期間にS165の処理が実行される。
(S166)CPU201Bは、ストレージ300Bへデータを格納し終えたことを示す格納完了をノードAに属するコントローラ200AのCPU201A及びノードCに属するコントローラ200CのCPU201Cに通知する。つまり、CPU201Bは、全ての他ノードに属するコントローラに格納完了を通知する。
(S167)CPU201Bは、データを格納したストレージ300B内の位置を特定する情報でデータ格納情報を書き換えて、管理情報を更新する。
(S168)CPU201Bは、データを退避領域223Bへ退避した後、一定時間が経過しているか否かを判定する。なお、この一定時間は、予め設定されている。例えば、30秒、5分、30分、1時間、1日、1週間など、様々な単位で一定時間を設定することができる。一定時間が経過している場合、処理はS169へと進む。一方、一定時間が経過していない場合、処理は再びS168へと進む。
(S169)CPU201Bは、S163で退避したデータを退避領域223Bから消去する。このように、一定時間が経過したデータを退避領域223Bから削除することで、退避領域223Bの容量を有効活用することができる。また、退避領域223Bにデータを一定時間保持しておくことで、その間に当該データを指定する読み出し命令に対してCPU201Bが素早く応答できるようになる。S169の処理が完了すると、図19に示した一連の処理は終了する。
(ノードCの処理)
図20を参照する。図20の例は、ノードCのコントローラ200CがノードB宛ての書き込み命令をノードAのコントローラ200Aから受信した場合に実行する処理を示している。なお、図20に示した処理は、主にCPU201Cにより実行される。
(S171)CPU201Cは、ノードAに属するコントローラ200AのCPU201AからノードB宛ての書き込み命令を受信する。
(S172)CPU201Cは、書き込み命令からデータを抽出し、抽出したデータを一時記憶領域222Cに格納する。
(S173)CPU201Cは、S172で一時記憶領域222Cに格納したデータを退避領域223Cへ退避する。退避領域223Cへ退避したことで、一時記憶領域222Cに格納されたデータが消去された後でも、CPU201Cは、そのデータを退避領域223Cから読み出すことができる。
(S174)CPU201Cは、書き込み命令から指定ノード、ファイル名、データ格納情報として記載する情報を抽出する。そして、CPU201Cは、管理情報のレコードに指定ノード、ファイル名、データ格納情報を記載する。S173で退避領域223Cにデータが退避されているため、データ格納情報は「データ本体」となる。
(S175)CPU201Cは、ノードBに属するコントローラ200BのCPU201Bから格納完了が通知されたか否かを判定する。なお、この格納完了は、CPU201Bがデータをストレージ300Bに格納し終えた後でCPU201A、201Cへと通知される。格納完了が通知されている場合、処理はS177へと進む。一方、格納完了が通知されていない場合、処理はS176へと進む。
(S176)CPU201Cは、データを退避領域223Cへ退避した後、一定時間が経過しているか否かを判定する。なお、この一定時間は、予め設定されている。例えば、30秒、5分、30分、1時間、1日、1週間など、様々な単位で一定時間を設定することができる。一定時間が経過している場合、処理はS177へと進む。一方、一定時間が経過していない場合、処理はS175へと進む。
(S177)CPU201Cは、S173で退避したデータを退避領域223Cから消去する。このように、一定時間が経過したデータを退避領域223Cから削除することで、退避領域223Cの容量を有効活用することができる。また、退避領域223Cにデータを一定時間保持しておくことで、その間に当該データを指定する読み出し命令に対してCPU201Cが素早く応答できるようになる。
(S178)CPU201Cは、管理情報を更新する。例えば、CPU201Bから格納完了が通知されている場合、CPU201Cは、データ格納情報を「ノードB(書き込み完了)」と書き換え、指定ノードを「空白」に設定する。また、CPU201Bから格納完了が通知されずに一定時間が経過した場合、CPU201Cは、「ノードB(書き込み未了)」などと書き換える。S178の処理が完了すると、図20に示した一連の処理は終了する。
(読み出し処理)
次に、図21及び図22を参照しながら、全ノード転送方式に係る読み出し処理について説明する。
(ノードA、Cの処理)
図21は、第2実施形態に係るノードAのコントローラが読み出し命令に応じて実行する処理の一例を示したフロー図である。図22は、第2実施形態に係るノードBのコントローラが読み出し命令に応じて実行する処理の一例を示したフロー図である。
図21を参照する。図21の例は、ノードAのコントローラ200AがノードB宛ての読み出し命令をホストコンピュータ100から受信した場合に実行する処理を示している。なお、図21に示した処理は、主にCPU201Aにより実行される。
(S181)CPU201Aは、ホストコンピュータ100からノードB宛ての読み出し命令を受信する。
(S182)CPU201Aは、S181で受信した読み出し命令からファイル名を特定し、特定したファイル名に該当するレコードを管理情報から抽出する。
(S183)CPU201Aは、該当するレコードがあるか否かを判定する。つまり、CPU201Aは、S182で該当するレコードを抽出できたか否かを判定する。該当するレコードがある場合、処理はS184へと進む。該当するレコードがない場合、処理はS187へと進む。
(S184)CPU201Aは、S182で抽出したレコードのデータ格納情報を参照し、退避領域223Aにデータがあるか否かを判定する。つまり、CPU201Aは、データ格納情報が「データ本体」であるか否かを判定する。退避領域223Aにデータがある場合、処理はS185へと進む。一方、退避領域223Aにデータがない場合、図21に示した一連の処理は終了する。
(S185)CPU201Aは、他ノード(ノードB、C)から応答禁止を通知されているか否かを判定する。応答禁止を通知されている場合、図21に示した一連の処理は終了する。一方、応答禁止が通知されていない場合、処理はS186へと進む。
なお、上記の応答禁止は、他ノード(ノードB、C)のコントローラが既にホストコンピュータ100に応答している場合に重複した応答を避けるために用いられる。例えば、ノードBに属するコントローラ200Bが先にホストコンピュータ100に応答した場合、コントローラ200Bは、ノードA、Cのコントローラ200A、200Cに対して応答禁止を通知する。
(S186)CPU201Aは、退避領域223Aからデータを読み出し、読み出したデータを主記憶領域221Aへ格納する。そして、CPU201Aは、読み出し命令に対する応答として、主記憶領域221Aに格納したデータ、及び読み出し命令に対する処理が完了した旨を示す完了通知をホストコンピュータ100に送信する。S186の処理が完了すると、処理はS188へと進む。
(S187)CPU201Aは、読み出し命令に対する応答として、ホストコンピュータ100へエラーを通知する。例えば、CPU201Aは、読み出し命令により指定されたデータがいずれのノードにも保持されていないことを示すエラーをホストコンピュータ100に通知する。S187の処理が完了すると、処理はS188へと進む。
(S188)CPU201Aは、ノードBに属するコントローラ200B及びノードCに属するコントローラ200Cへ応答禁止を通知する。このように、読み出し命令に対する応答が完了した場合に全ての他ノードに応答禁止を通知することで、無駄な応答処理を減らし、システム全体の処理負荷を低減することができる。S188の処理が完了すると、図21に示した一連の処理は終了する。
なお、ノードCのコントローラ200CがノードB宛ての読み出し命令をホストコンピュータ100から受信した場合に実行する処理も同様である。但し、ノードCに適用する場合には、S188で通知する応答禁止の通知先がノードA、Bに変更される。
(ノードBの処理)
図22を参照する。図22の例は、ノードBのコントローラ200BがノードB宛ての読み出し命令をホストコンピュータ100から受信した場合に実行する処理を示している。なお、図22に示した処理は、主にCPU201Bにより実行される。
(S191)CPU201Bは、ノードAに属するコントローラ200AのCPU201AからノードB宛ての読み出し命令を受信する。
(S192)CPU201Bは、S191で受信した読み出し命令からファイル名を特定し、特定したファイル名に該当するレコードを管理情報から抽出する。
(S193)CPU201Bは、該当するレコードがあるか否かを判定する。つまり、CPU201Bは、S192で該当するレコードを抽出できたか否かを判定する。該当するレコードがある場合、処理はS194へと進む。該当するレコードがない場合、処理はS198へと進む。
(S194)CPU201Bは、S192で抽出したレコードのデータ格納情報を参照し、退避領域223Bにデータがあるか否かを判定する。つまり、CPU201Bは、データ格納情報が「データ本体」であるか否かを判定する。退避領域223Bにデータがある場合、処理はS196へと進む。一方、退避領域223Bにデータがない場合、処理はS195へと進む。
(S195)CPU201Bは、ストレージ300Bに格納されているデータから、S192で特定したファイル名のデータを取得する。CPU201Bは、取得したデータを退避領域223Bへ格納する。S195の処理を完了すると、処理はS196へと進む。
(S196)CPU201Bは、他ノード(ノードA、C)から応答禁止を通知されているか否かを判定する。応答禁止を通知されている場合、図22に示した一連の処理は終了する。一方、応答禁止が通知されていない場合、処理はS197へと進む。
なお、上記の応答禁止は、他ノード(ノードA、C)のコントローラが既にホストコンピュータ100に応答している場合に重複した応答を避けるために用いられる。例えば、コントローラ200Aが先にホストコンピュータ100に応答した場合、コントローラ200Aは、コントローラ200B、200Cに対して応答禁止を通知する。
(S197)CPU201Bは、退避領域223Bからデータを読み出し、読み出したデータを主記憶領域221Bへ格納する。そして、CPU201Bは、読み出し命令に対する応答として、主記憶領域221Bに格納したデータ、及び読み出し命令に対する処理が完了した旨を示す完了通知をホストコンピュータ100に送信する。S197の処理が完了すると、処理はS199へと進む。
(S198)CPU201Bは、読み出し命令に対する応答として、ホストコンピュータ100へエラーを通知する。例えば、CPU201Bは、読み出し命令により指定されたデータがいずれのノードにも保持されていないことを示すエラーをホストコンピュータ100に通知する。S198の処理が完了すると、処理はS199へと進む。
(S199)CPU201Bは、ノードAに属するコントローラ200A及びノードCに属するコントローラ200Cへ応答禁止を通知する。このように、読み出し命令に対する応答が完了した場合に全ての他ノードに応答禁止を通知することで、無駄な応答処理を減らし、システム全体の処理負荷を低減することができる。S199の処理が完了すると、図22に示した一連の処理は終了する。
以上、全ノード転送方式について説明した。上記のように、ストレージへの格納完了を他のノードへ通知することで、データの格納状況を各ノードが認識することができる。また、データの格納状況を管理情報により管理することができる。また、ある程度の時間、各ノードが同じデータを退避領域に保持し、命令を全ノードに転送するため、より早く応答できる任意のコントローラが読み出し命令に応答できる。その結果、応答速度が向上する。また、応答したコントローラが他のノードに応答禁止を通知するため、無駄な応答を抑制することができ、効率的な処理を実現することができる。
以上説明したように、ノードAが受けた命令が全ての他のノードB、Cへと転送されることで、転送時に命令を解析して転送先を選択する処理を省略することができる。その結果、命令の転送処理を高速化することが可能になる。また、ノードA、B、Cがいずれも同じ命令のデータを保持することで、応答速度が速いコントローラが、読み出し要求に対して素早く応答できるようになる。
例えば、書き込み処理を実行中のコントローラに対して読み出し要求が発生した場合に、他のコントローラがホストコンピュータへと応答することで、高速な応答が可能になる。ストレージシステムの運用中、複数のホストコンピュータから書き込み命令や読み出し命令が様々なタイミングで各ノードに送信されることが予想される。このような状況でも、第2実施形態に係る技術を適用すれば、高い読み出し性能を実現できる。
以上、第2実施形態について説明した。
<3.付記>
以上説明した実施形態に関し、さらに以下の付記を開示する。
(付記1) データを記憶するストレージ装置と、当該ストレージ装置におけるデータの処理を制御するストレージ制御装置とを含むノードを複数有するストレージシステムの前記ストレージ制御装置であって、
前記ストレージ装置におけるデータの処理を指示する上位装置、及び他のノードに含まれる前記ストレージ制御装置と通信する通信部と、
任意のノードに含まれる前記ストレージ装置におけるデータの処理についての指示を含む命令を前記通信部が前記上位装置から受信した場合に当該命令を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信するように前記通信部を制御する制御部と、
を有する、ストレージ制御装置。
(付記2) 前記ストレージ制御装置は、データを一時的に格納する記憶部をさらに有し、
前記制御部は、前記他のノードに含まれる前記ストレージ制御装置から、任意のノードに含まれる前記ストレージ装置におけるデータの書き込み処理についての指示及び当該データを含む命令を前記通信部が受信した場合に当該命令を前記記憶部に格納する
付記1に記載のストレージ制御装置。
(付記3) 前記制御部は、前記他のノードに含まれる前記ストレージ装置におけるデータの読み出し処理についての指示を含む命令を前記通信部が受信した場合に、当該指示の対象となるデータが前記記憶部に格納されているとき、当該データを前記記憶部から読み出して前記上位装置へ送信するように前記通信部を制御する
付記2に記載のストレージ制御装置。
(付記4) 前記制御部は、自身を含むノードに含まれる前記ストレージ装置におけるデータの書き込み処理についての指示及び当該データを含む命令を前記通信部が前記上位装置から受信した場合に当該命令を前記記憶部に格納し、当該命令に対する応答を前記上位装置へ送信するように前記通信部を制御し、当該応答の送信後に当該データを当該ストレージ装置に格納し、当該ストレージ装置に対する当該データの格納完了を示す完了通知を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信するように前記通信部を制御する
付記2又は3に記載のストレージ制御装置。
(付記5) 前記制御部は、前記他のノードに含まれる前記ストレージ制御装置から、当該他のノードに含まれる前記ストレージ装置へのデータの格納完了を示す完了通知を前記通信部が受信した場合に当該データと同じデータを前記記憶部から消去する
付記4に記載のストレージ制御装置。
(付記6) 前記制御部は、任意のノードに含まれる前記ストレージ装置におけるデータの読み出し処理についての指示を含む命令を前記通信部が受信し、当該指示の対象となるデータを前記記憶部から読み出して前記上位装置へ送信するように前記通信部を制御した場合、当該命令に対する応答を抑制する抑制通知を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信するように前記通信部を制御する
付記1〜5のいずれかに記載のストレージ制御装置。
(付記7) データを記憶するストレージ装置と、当該ストレージ装置におけるデータの処理を制御するストレージ制御装置とを含むノードを複数有するストレージシステムであって、
前記ストレージ制御装置は、
前記ストレージ装置におけるデータの処理を指示する上位装置、及び他のノードに含まれる前記ストレージ制御装置と通信する通信部と、任意のノードに含まれる前記ストレージ装置におけるデータの処理についての指示を含む命令を前記通信部が前記上位装置から受信した場合に当該命令を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信するように前記通信部を制御する制御部と、を有し、
前記ストレージ装置は、
前記ストレージ制御装置に接続する接続部と、データを格納する記録媒体と、当該ストレージ制御装置による制御を受けて前記記録媒体に対するデータの書き込み処理又はデータの読み出し処理を実行する処理部と、を有する、
ストレージシステム。
(付記8) データを記憶するストレージ装置と、当該ストレージ装置におけるデータの処理を制御するストレージ制御装置とを含むノードを複数有するストレージシステムの前記ストレージ制御装置として動作するコンピュータに、
前記ストレージ装置におけるデータの処理を指示する上位装置、及び他のノードに含まれる前記ストレージ制御装置との通信を制御し、
任意のノードに含まれる前記ストレージ装置におけるデータの処理についての指示を含む命令を前記上位装置から受信した場合に当該命令を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信するように制御する
処理を実行させる、プログラム。
(付記9) データを記憶するストレージ装置と、当該ストレージ装置におけるデータの処理を制御するストレージ制御装置とを含むノードを複数有するストレージシステムの前記ストレージ制御装置が、
前記ストレージ装置におけるデータの処理を指示する上位装置、及び他のノードに含まれる前記ストレージ制御装置との通信を制御し、
任意のノードに含まれる前記ストレージ装置におけるデータの処理についての指示を含む命令を前記上位装置から受信した場合に当該命令を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信するように制御する
制御方法。
(付記10) 付記8に記載のプログラムが格納された、コンピュータにより読み取り可能な記録媒体。
(付記11) 前記制御部は、前記記憶部に前記命令を格納する際、当該命令と当該命令に含まれる指示の対象となる前記ストレージ装置を含むノードの情報とを対応付ける管理情報を前記記憶部に格納する
付記8に記載のプログラム。
(付記12) 前記コンピュータは、データを一時的に格納する記憶部を有し、
前記他のノードに含まれる前記ストレージ制御装置から、任意のノードに含まれる前記ストレージ装置におけるデータの書き込み処理についての指示及び当該データを含む命令を前記コンピュータが受信した場合に、当該命令を前記記憶部に格納する処理を実行させる
付記8に記載のプログラム。
(付記13) 前記他のノードに含まれる前記ストレージ装置におけるデータの読み出し処理についての指示を含む命令を前記コンピュータが受信した場合に、当該指示の対象となるデータが前記記憶部に格納されているとき、当該データを前記記憶部から読み出して前記上位装置へ送信する処理を実行させる
付記12に記載のプログラム。
(付記14) 前記コンピュータを含むノードに含まれる前記ストレージ装置におけるデータの書き込み処理についての指示及び当該データを含む命令を前記コンピュータが前記上位装置から受信した場合に当該命令を前記記憶部に格納し、当該命令に対する応答を前記上位装置へ送信し、当該応答の送信後に当該データを当該ストレージ装置に格納し、当該ストレージ装置に対する当該データの格納完了を示す完了通知を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信する処理を実行させる
付記12又は13に記載のプログラム。
(付記15) 前記他のノードに含まれる前記ストレージ制御装置から、当該他のノードに含まれる前記ストレージ装置へのデータの格納完了を示す完了通知を前記コンピュータが受信した場合に当該データと同じデータを前記記憶部から消去する処理を実行させる
付記14に記載のプログラム。
(付記16) 前記コンピュータが、任意のノードに含まれる前記ストレージ装置におけるデータの読み出し処理についての指示を含む命令を受信し、当該指示の対象となるデータを前記記憶部から読み出して前記上位装置へ送信した場合、前記コンピュータに、当該命令に対する応答を抑制する抑制通知を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信する処理を実行させる
付記8、12〜15のいずれかに記載のプログラム。
10A、10B、10C ストレージ制御装置
11A 通信部
12A 制御部
13A 記憶部
20A、20B、20C ストレージ装置
21A 接続部
22A 記録媒体
23A 処理部
30 上位装置
A、B、C ノード
Q 命令

Claims (8)

  1. データを記憶するストレージ装置と、当該ストレージ装置におけるデータの処理を制御するストレージ制御装置とを含むノードを複数有するストレージシステムの前記ストレージ制御装置であって、
    前記ストレージ装置におけるデータの処理を指示する上位装置、及び他のノードに含まれる前記ストレージ制御装置と通信する通信部と、
    任意のノードに含まれる前記ストレージ装置におけるデータの処理についての指示を含む命令を前記通信部が前記上位装置から受信した場合に当該命令を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信するように前記通信部を制御する制御部と、
    を有する、ストレージ制御装置。
  2. 前記ストレージ制御装置は、データを一時的に格納する記憶部をさらに有し、
    前記制御部は、前記他のノードに含まれる前記ストレージ制御装置から、任意のノードに含まれる前記ストレージ装置におけるデータの書き込み処理についての指示及び当該データを含む命令を前記通信部が受信した場合に当該命令を前記記憶部に格納する
    請求項1に記載のストレージ制御装置。
  3. 前記制御部は、前記他のノードに含まれる前記ストレージ装置におけるデータの読み出し処理についての指示を含む命令を前記通信部が受信した場合に、当該指示の対象となるデータが前記記憶部に格納されているとき、当該データを前記記憶部から読み出して前記上位装置へ送信するように前記通信部を制御する
    請求項2に記載のストレージ制御装置。
  4. 前記制御部は、自身を含むノードに含まれる前記ストレージ装置におけるデータの書き込み処理についての指示及び当該データを含む命令を前記通信部が前記上位装置から受信した場合に当該命令を前記記憶部に格納し、当該命令に対する応答を前記上位装置へ送信するように前記通信部を制御し、当該応答の送信後に当該データを当該ストレージ装置に格納し、当該ストレージ装置に対する当該データの格納完了を示す完了通知を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信するように前記通信部を制御する
    請求項2又は3に記載のストレージ制御装置。
  5. 前記制御部は、前記他のノードに含まれる前記ストレージ制御装置から、当該他のノードに含まれる前記ストレージ装置へのデータの格納完了を示す完了通知を前記通信部が受信した場合に当該データと同じデータを前記記憶部から消去する
    請求項4に記載のストレージ制御装置。
  6. 前記制御部は、任意のノードに含まれる前記ストレージ装置におけるデータの読み出し処理についての指示を含む命令を前記通信部が受信し、当該指示の対象となるデータを前記記憶部から読み出して前記上位装置へ送信するように前記通信部を制御した場合、当該命令に対する応答を抑制する抑制通知を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信するように前記通信部を制御する
    請求項1〜5のいずれか1項に記載のストレージ制御装置。
  7. データを記憶するストレージ装置と、当該ストレージ装置におけるデータの処理を制御するストレージ制御装置とを含むノードを複数有するストレージシステムであって、
    前記ストレージ制御装置は、
    前記ストレージ装置におけるデータの処理を指示する上位装置、及び他のノードに含まれる前記ストレージ制御装置と通信する通信部と、任意のノードに含まれる前記ストレージ装置におけるデータの処理についての指示を含む命令を前記通信部が前記上位装置から受信した場合に当該命令を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信するように前記通信部を制御する制御部と、を有し、
    前記ストレージ装置は、
    前記ストレージ制御装置に接続する接続部と、データを格納する記録媒体と、当該ストレージ制御装置による制御を受けて前記記録媒体に対するデータの書き込み処理又はデータの読み出し処理を実行する処理部と、を有する、
    ストレージシステム。
  8. データを記憶するストレージ装置と、当該ストレージ装置におけるデータの処理を制御するストレージ制御装置とを含むノードを複数有するストレージシステムの前記ストレージ制御装置として動作するコンピュータに、
    前記ストレージ装置におけるデータの処理を指示する上位装置、及び他のノードに含まれる前記ストレージ制御装置との通信を制御し、
    任意のノードに含まれる前記ストレージ装置におけるデータの処理についての指示を含む命令を前記上位装置から受信した場合に当該命令を全ての前記他のノードに含まれる前記ストレージ制御装置へ送信するように制御する
    処理を実行させる、プログラム。
JP2014140732A 2014-07-08 2014-07-08 ストレージ制御装置、ストレージシステム、及びプログラム Pending JP2016018384A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014140732A JP2016018384A (ja) 2014-07-08 2014-07-08 ストレージ制御装置、ストレージシステム、及びプログラム
US14/742,104 US20160011791A1 (en) 2014-07-08 2015-06-17 Storage control apparatus, storage system, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014140732A JP2016018384A (ja) 2014-07-08 2014-07-08 ストレージ制御装置、ストレージシステム、及びプログラム

Publications (1)

Publication Number Publication Date
JP2016018384A true JP2016018384A (ja) 2016-02-01

Family

ID=55067591

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014140732A Pending JP2016018384A (ja) 2014-07-08 2014-07-08 ストレージ制御装置、ストレージシステム、及びプログラム

Country Status (2)

Country Link
US (1) US20160011791A1 (ja)
JP (1) JP2016018384A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10681130B2 (en) 2016-09-09 2020-06-09 Toshiba Memory Corporation Storage system including a plurality of nodes

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102406666B1 (ko) * 2017-09-20 2022-06-08 삼성전자주식회사 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US11334284B2 (en) * 2018-09-24 2022-05-17 Samsung Electronics Co., Ltd. Database offloading engine

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259502A (ja) * 1998-08-11 2000-09-22 Ncr Internatl Inc データ・ストレージとデータ処理システムにおける書き込みキャッシュデータの転送方法及びその装置
JP2005157815A (ja) * 2003-11-26 2005-06-16 Hitachi Ltd ストレージシステム及同システムにおけるデータキャッシング方法
JP2005276094A (ja) * 2004-03-26 2005-10-06 Hitachi Ltd 分散ストレージ装置のファイル管理方法及び分散ストレージシステム並びにプログラム
JP2005322230A (ja) * 2004-05-05 2005-11-17 Internatl Business Mach Corp <Ibm> 仮想ストレージ・コントローラ間での自己最適化作業負荷分配
JP2007102640A (ja) * 2005-10-06 2007-04-19 Canon Inc ネットワークデバイス、その制御方法およびネットワークシステム
JP2007328408A (ja) * 2006-06-06 2007-12-20 Hitachi Ltd ストレージシステム及び記憶制御装置
US7389393B1 (en) * 2004-10-21 2008-06-17 Symantec Operating Corporation System and method for write forwarding in a storage environment employing distributed virtualization
JP2014106940A (ja) * 2012-11-30 2014-06-09 Fujitsu Ltd ストレージ装置、およびモジュール間データ転送方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6161208A (en) * 1994-05-06 2000-12-12 International Business Machines Corporation Storage subsystem including an error correcting cache and means for performing memory to memory transfers
MY127940A (en) * 1998-05-22 2007-01-31 Canon Kk Data communication apparatus and method
US6778822B1 (en) * 2000-10-04 2004-08-17 Nortel Networks Limited Distributed intelligent network triggering system
US20040221123A1 (en) * 2003-05-02 2004-11-04 Lam Wai Tung Virtual data switch and method of use
US7085898B2 (en) * 2003-05-12 2006-08-01 International Business Machines Corporation Coherency management for a “switchless” distributed shared memory computer system
JP4520755B2 (ja) * 2004-02-26 2010-08-11 株式会社日立製作所 データ移行方法およびデータ移行装置
EP1804431A1 (en) * 2004-10-22 2007-07-04 Mitsubishi Electric Corporation Repeater and network system
JP4786255B2 (ja) * 2005-08-29 2011-10-05 株式会社日立製作所 ストレージシステム及び記憶制御方法
JP4773788B2 (ja) * 2005-09-29 2011-09-14 株式会社日立製作所 記憶システムにおけるリモートコピー制御
US7961741B2 (en) * 2008-10-23 2011-06-14 Silver Spring Networks, Inc. Rapid dissemination of bulk information to widely dispersed network nodes
US8924661B1 (en) * 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
EP2693703B1 (en) * 2011-03-29 2018-05-23 Panasonic Corporation Transfer control device, integrated circuit thereof, transfer control method, and transfer control system
JP5883293B2 (ja) * 2012-01-06 2016-03-09 任天堂株式会社 通信システム、通信装置、通信プログラム及び通信方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259502A (ja) * 1998-08-11 2000-09-22 Ncr Internatl Inc データ・ストレージとデータ処理システムにおける書き込みキャッシュデータの転送方法及びその装置
JP2005157815A (ja) * 2003-11-26 2005-06-16 Hitachi Ltd ストレージシステム及同システムにおけるデータキャッシング方法
JP2005276094A (ja) * 2004-03-26 2005-10-06 Hitachi Ltd 分散ストレージ装置のファイル管理方法及び分散ストレージシステム並びにプログラム
JP2005322230A (ja) * 2004-05-05 2005-11-17 Internatl Business Mach Corp <Ibm> 仮想ストレージ・コントローラ間での自己最適化作業負荷分配
US7389393B1 (en) * 2004-10-21 2008-06-17 Symantec Operating Corporation System and method for write forwarding in a storage environment employing distributed virtualization
JP2007102640A (ja) * 2005-10-06 2007-04-19 Canon Inc ネットワークデバイス、その制御方法およびネットワークシステム
JP2007328408A (ja) * 2006-06-06 2007-12-20 Hitachi Ltd ストレージシステム及び記憶制御装置
JP2014106940A (ja) * 2012-11-30 2014-06-09 Fujitsu Ltd ストレージ装置、およびモジュール間データ転送方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10681130B2 (en) 2016-09-09 2020-06-09 Toshiba Memory Corporation Storage system including a plurality of nodes

Also Published As

Publication number Publication date
US20160011791A1 (en) 2016-01-14

Similar Documents

Publication Publication Date Title
TWI444833B (zh) Sas擴充器之資料預取
US8700570B1 (en) Online storage migration of replicated storage arrays
CN119336256A (zh) 具有发起方模式的固态驱动
CN102760046A (zh) 使用多路输入/输出伪装的在线卷迁移方法和系统
TWI510932B (zh) 塊儲存閘道模組、儲存中介系統、雲端儲存系統、提供對塊儲存的存取的方法、儲存中介方法與內容遞送裝置
JP2008502060A (ja) ソース・データをターゲット・データに移行する方法、システム及びプログラム
WO2019047843A1 (zh) 用于传输数据处理请求的方法和装置
CN114286993B (zh) 数据存储系统中的链路速度恢复
CN110019208A (zh) 一种数据迁移方法、装置和介质
CN111722909A (zh) 一种虚拟机迁移方法、系统、设备及存储介质
CN108418859B (zh) 写数据的方法和装置
US9037821B1 (en) Systems and methods for replicating snapshots across backup domains
US20140281221A1 (en) Data processing
KR102166185B1 (ko) 파이프라인 실행 가속을 위한 데이터 처리 장치 및 그 방법
CN110737396A (zh) 数据复制的方法、设备和计算机程序产品
CN103842954A (zh) 一种存储系统中的数据处理方法、装置和系统
JP2016018384A (ja) ストレージ制御装置、ストレージシステム、及びプログラム
WO2024230250A1 (zh) 管理存储资源的方法、电子设备及计算机可读存储介质
CN103677660B (zh) 信息处理设备和区域释放控制方法
JP5272185B2 (ja) 計算機システム及びストレージシステム
CN116737181B (zh) 通用闪存存储芯片及烧录方法
CN113127438A (zh) 用于存储数据的方法、装置、服务器和介质
US20140040349A1 (en) Server computer, server computer system, and server computer control method
US11620079B2 (en) Log structured array offloaded data transfer migrations
CN116680211A (zh) 虚拟内存管理方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180807

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190219