(57)【要約】【課題】利便性を向上させたストレージシステムを得ること。【解決手段】ストレージシステムは、複数のメモリノードを備える。前記複数のメモリノードは、２以上の異なる方向に相互に接続される。前記複数のメモリノードの夫々は、カウント値を記憶する。前記複数のメモリノードの夫々は、更新コマンドを受信したとき、前記更新コマンドの宛先が自メモリノードではない場合、自メモリノードに接続されている他のメモリノードに前記更新コマンドを転送する。前記複数のメモリノードの夫々は、前記更新コマンドの宛先が自メモリノードである場合、前記更新コマンドを実行するとともに自メモリノードが記憶するカウント値をインクリメントし、インクリメント後のカウント値の通知を発行する。【選択図】図９
2015152949.tif 000002
【特許請求の範囲】
【請求項１】
２以上の異なる方向に相互に接続される複数のメモリノードを備え、
前記複数のメモリノードの夫々は、カウント値を記憶し、更新コマンドを受信したとき、前記更新コマンドの宛先が自メモリノードではない場合、自メモリノードに接続されている他のメモリノードに前記更新コマンドを転送し、前記更新コマンドの宛先が自メモリノードである場合、前記更新コマンドを実行するとともに自メモリノードが記憶するカウント値をインクリメントし、インクリメント後のカウント値の通知を発行する、
ことを特徴とするストレージシステム。
【請求項２】
外部からの要求に応じて前記複数のメモリノードのうちの一を宛先とした更新コマンドを送信し、前記更新コマンドを送信後、前記通知を受信して、前記要求を前記通知されたインクリメント後のカウント値とともに蓄積記憶する、コネクションユニット、
をさらに備えることを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記コネクションユニットは、自コネクションユニットが蓄積記憶する要求を用いて前記メモリノードをレストアする、
ことを特徴とする請求項２に記載のストレージシステム。
【請求項４】
前記複数のメモリノードの夫々は、データ毎にカウント値を記憶する、ことを特徴とする請求項１に記載のストレージシステム。
【請求項５】
２以上の異なる方向に相互に接続され、キーに応じた格納位置に値を記憶する複数のメモリノードと、
外部から要求された処理を実行し、前記処理の実行結果として、結果キーと結果値との対を発行するコネクションユニットと、
を備え、
前記複数のメモリノードのうちの前記結果キーによって特定されるメモリノードは、前記対を受信したとき、前記対が含む結果値をカウントし、前記結果値のカウント値を前記結果キーに応じた格納位置に格納する、
ことを特徴とするストレージシステム。
【請求項６】
前記コネクションユニットは、前記対を、前記結果値をカウントする演算を示す演算情報とともに発行し、
前記複数のメモリノードのうちの前記結果キーによって特定されるメモリノードは、前記演算情報を実行することによって、前記対が含む結果値をカウントする、
ことを特徴とする請求項５に記載のストレージシステム。
【請求項７】
前記演算情報は、前記結果キーに応じた格納位置に格納されている値に、前記結果値を加算し、加算によって得られた値を前記結果キーに応じた格納位置に上書きする、演算を示す、
ことを特徴とする請求項６に記載のストレージシステム。
【請求項８】
前記コネクションユニットは、前記結果キーに基づいてメモリノードを特定する、
ことを特徴とする請求項５に記載のストレージシステム。
【請求項９】
前記処理は、外部から入力されたテキストに含まれる、外部から指定されたワードをカウントする処理であり、
前記結果キーは前記ワードであり、前記結果値は、前記ワードのカウント値である、
ことを特徴とする請求項５に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストレージシステムに関する。
【背景技術】
【０００２】
近年、ストレージシステムを備えた複数台の情報処理装置を、相互にネットワークで接続して、一つの情報処理システムとして動作させる場合（例えばクラウドコンピューティング）が増加している。また、ストレージシステムとしても、従来型のＨＤＤを使用したものと比較してより高速な、ＤＲＡＭチップやＮＡＮＤフラッシュチップなどを多数並べてチップ間配線によって接続し、一つのストレージシステムとして用いられるものが存在する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１０３９２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態によれば、ストレージシステムは、複数のメモリノードを備える。前記複数のメモリノードは、２以上の異なる方向に相互に接続される。前記複数のメモリノードの夫々は、カウント値を記憶する。前記複数のメモリノードの夫々は、更新コマンドを受信したとき、前記更新コマンドの宛先が自メモリノードではない場合、自メモリノードに接続されている他のメモリノードに前記更新コマンドを転送する。前記複数のメモリノードの夫々は、前記更新コマンドの宛先が自メモリノードである場合、前記更新コマンドを実行するとともに自メモリノードが記憶するカウント値をインクリメントし、インクリメント後のカウント値の通知を発行する。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態によれば、利便性を向上させたストレージシステムを提供することを目的とする。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態のストレージシステムの構成例を示す図である。
【図２】図２は、ＣＵの構成の一例を示す図である。
【図３】図３は、ＮＭの構成の一例を示す図である。
【図４】図４は、パケットの構成を説明する図である。
【図５】図５は、ＮＭの実装例を示す図である。
【図６】図６は、第１の実施形態のストレージシステムと比較される構成を有するストレージシステムの一例を示す図である。
【図７】図７は、第１メモリのメモリ構成を示す図である。
【図８】図８は、ＲＡＭのメモリ構成を示す図である。
【図９】図９は、第１の実施形態のストレージシステムの動作を示す図である。
【図１０】図１０は、第１の実施形態のストレージシステムの具体的な動作例を示す図である。
【図１１】図１１は、第１の実施形態のストレージシステムの具体的な動作例を示す図である。
【図１２】図１２は、第１の実施形態のストレージシステムの具体的な動作例を示す図である。
【図１３】図１３は、第２の実施形態のストレージシステムの動作を示す図である。
【図１４】図１４は、第２の実施形態のストレージシステムの具体的な動作例を示す図である。
【図１５】図１５は、第３の実施形態のストレージシステムの構成例を示す図である。
【図１６】図１６は、第３の実施形態のＣＵの構成を示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるストレージシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
図１は、第１の実施形態のストレージシステムの構成例を示す図である。
【０００９】
ストレージシステム１は、１以上のコンピュータ３がネットワーク２を介して接続することが可能に構成されている。コンピュータ３は、センサ４が接続されてもよい。センサ４は、データを出力する機器である。センサ４は、例えば、温度、日照、風向き、または風速など、気象データを出力するセンサであってもよい。また、センサ４は、プラント、ビル、または道路などに設置され、画像または動画をデータとして出力する監視カメラであってもよい。また、センサ４は、改札記録をデータとして出力する自動改札機であってもよい。また、センサ４は、顧客による購買記録をデータとして出力するレジスター端末であってもよい。センサ４が接続されているコンピュータ３は、センサ４が出力したデータを登録する要求をストレージシステム１に送信することができる。また、コンピュータ３は、ストレージシステム１に任意のデータを登録することができる。また、コンピュータ３は、ストレージシステム１に登録されたデータを読み出す要求をストレージシステム１に送信することができる。
【００１０】
ストレージシステム１は、記憶部１０およびコネクションユニット（ＣＵ）１１を備えている。
【００１１】
記憶部１０は、記憶機能およびデータ転送機能を夫々有する複数のノードモジュール（ＮＭ）１４をメッシュネットワークにより相互に接続した構成を備える。記憶部１０は、複数のＮＭ１４に対してデータを分散して記憶する。データ転送機能は、各ＮＭ１４が効率的にパケットを転送する転送方式を備える。
【００１２】
図１では、各ＮＭ１４が其々格子点に配置された、矩形状のネットワークの例を示す。格子点の座標を座標（ｘ、ｙ）で示し、格子点に配置されるＮＭ１４の位置情報は、当該格子点の座標と対応してノードアドレス（ｘD、ｙD）で示されるものとする。また、図１の例では、左上隅に位置するＮＭ１４が原点のノードアドレス（０、０）を有し、各ＮＭ１４を横方向（Ｘ方向）および縦方向（Ｙ方向）に移動することで、ノードアドレスが整数値で増減する。
【００１３】
各ＮＭ１４は、それぞれ、２つ以上のインタフェース１５を備える。各ＮＭ１４は、隣接するＮＭ１４と、インタフェース１５を介して接続される。各ＮＭ１４は、２以上の異なる方向に隣接するＮＭ１４と接続される。例えば、図１において左上隅のノードアドレス（０、０）で示されるＮＭ１４は、Ｘ方向に隣接するノードアドレス（１、０）で表されるＮＭ１４と、Ｘ方向とは異なる方向であるＹ方向に隣接するノードアドレス（０、１）で表されるＮＭ１４と、それぞれ接続される。また、図１においてノードアドレス（１、１）で表されるＮＭ１４は、互いに異なる４の方向に隣接する、ノードアドレス（１、０）、（０、１）、（２、１）および（１、２）でそれぞれ示される４のＮＭ１４に接続される。以降、ノードアドレス（ｘD、ｙD）で表されるＮＭ１４を、ノード（ｘD、ｙD）と表記することがある。
【００１４】
図１では、各ＮＭ１４が矩形格子の格子点に配置されるように示したが、各ＮＭ１４の配置の様態は、この例に限定されない。すなわち、格子の形状は、格子点に配置される各ＮＭ１４が２以上の異なる方向に隣接するＮＭ１４と接続されればよく、例えば三角形、六角形などでもよい。また、図１では各ＮＭ１４が２次元状に配置されているが、各ＮＭ１４を３次元的に配置しても構わない。３次元的にＮＭ１４を配置した場合は、（ｘ、ｙ、ｚ）の３つの値で各ＮＭ１４を指定することができる。また、ＮＭ１４が２次元的に配置される場合には、対辺に位置するＮＭ１４同士を接続することによって、ＮＭ１４をトーラス状に接続するようにしてもよい。
【００１５】
ＣＵ１１は、ネットワーク２に接続するコネクタを備えている。ＣＵ１１は、ネットワーク２を介してコンピュータ３から受信する要求に応じて、記憶部１０に対してデータの入出力を実行することができる。
【００１６】
図２は、ＣＵ１１の構成の一例を示す図である。ＣＵ１１は、マイクロプロセッサ（ＭＰＵ）１１１、主記憶として使用されるランダムアクセスメモリ（ＲＡＭ）１１２、第１インタフェース装置１１３、および第２インタフェース装置１１４を備える。第１インタフェース装置１１３は、ネットワーク２に接続するためのものである。第２インタフェース装置１１４は、ＮＭ１４と通信をするためのものである。ＭＰＵ１１１、ＲＡＭ１１２、第１インタフェース装置１１３および第２インタフェース装置１１４は、互いにバスによって接続されている。ここで、第１インタフェース装置１１３、および第２インタフェース装置１１４は、それぞれ複数であってもかまわない。また、ＣＵ１１は、ＲＡＭ１１２とは異なる不揮発メモリを有していてもかまわない。
【００１７】
ＭＰＵ１１１としては、例えばＡＲＭ製Ａ９またはＩｎｔｅｌ製のＣｏｒｅ  ｉ７などが適用可能である。この場合、ＢＵＳ２３０もＭＰＵ１１１に合わせて、それぞれＡＭＢＡ  ＢＵＳまたはＱＰＩ（Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）ＢＵＳ等が適用される。ＲＡＭ１１２としては、例えばＤＲＡＭなどの揮発性メモリが適用可能である。また、ＲＡＭ１１２として、ＭＲＡＭ、ＰｃＲＡＭ、またはＲＲＡＭ（登録商標）等も適用可能である。外部のネットワークとの間で通信を行うネットワーク通信部に相当する、第１インタフェース装置１１３としては、例えばイーサネット（登録商標）、インフィニバンド、ファイバーチャネルといったネットワークインタフェースが適用可能である。また、第１インタフェース装置１１３としては、ＰＣＩ  Ｅｘｐｒｅｓｓ、Ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ、Ｓｅｒｉａｌ  ａｔｔａｃｈｅｄ  ＳＣＳＩなどの外部ＢＵＳ、あるいはストレージインタフェース等が適用可能である。
【００１８】
ＭＰＵ１１１は、ＲＡＭ１１２をワークエリアとして使用しながらサーバアプリケーションプログラムを実行することができる。ＣＵ１１は、サーバアプリケーションプログラムによる制御の下で、外部からの要求を処理する。サーバアプリケーションプログラムは、データベースプログラムを含む。ＣＵ１１は、外部からの要求の処理の過程において、記憶部１０に対するアクセスを実行する。ＣＵ１１は、記憶部１０にアクセスする際には、ＮＭ１４が転送したり実行したりすることが可能なパケットを生成し、生成したパケットを、自ＣＵ１１に接続されているＮＭ１４に送信する。
【００１９】
図１の例では、ストレージシステム１は、８つのＣＵ１１を備えている。８つのＣＵ１１は、夫々異なるＮＭ１４に接続される。ここでは、８つのＣＵ１１のうちの４つは、夫々、ノード（０、０）、ノード（０、１）、ノード（０、２）、およびノード（０、３）に一対一に接続されている。８つのＣＵ１１のうちの他の４つは、夫々、ノード（３、０）、ノード（３、１）、ノード（３、２）、およびノード（３、３）に一対一に接続されている。なお、ＣＵ１１の数は任意に構成することが可能である。また、ＣＵ１１は、記憶部１０を構成する任意のＮＭ１４に接続されることが可能である。また、１つのＣＵ１１が複数のＮＭ１４に接続されてもよいし、１つのＮＭ１４が複数のＣＵ１１に接続されてもよい。また、記憶部１０を構成する複数のＮＭ１４のうちの任意のＮＭ１４にＣＵ１１が接続されてもよい。
【００２０】
図３は、ＮＭ１４の構成の一例を示す図である。ＮＭ１４は、プロセッサであるノードコントローラ（ＮＣ）１４０と、ストレージとして機能する第１メモリ１４１と、ＮＣ１４０がワークエリアとして使用する第２メモリ１４２とを備えている。第１メモリ１４１としては、ＮＡＮＤメモリ、ビットコストスケーラブルメモリ（ＢｉＣＳ）、磁気抵抗メモリ（ＭＲＡＭ）、相変化メモリ（ＰｃＲＡＭ）、抵抗変化型メモリ（ＲＲＡＭ（登録商標））、またはこれらの組み合わせが適用可能である。第２メモリ１４２としては、各種ＲＡＭが適用可能である。なお、第１メモリ１４１がワークエリアとしての機能を提供することによって第２メモリ１４２はＮＭ１４に具備されなくてもよい。
【００２１】
ＮＣ１４０は、４つのインタフェース１５が接続される。ＮＣ１４０は、所定のプログラムによる制御の下で動作する。ＮＣ１４０は、ＣＵ１１または他のＮＭ１４からインタフェース１５を介してパケットを受信したり、ＣＵ１１または他のＮＭ１４にインタフェース１５を介してパケットを送信したりする。インタフェース１５の規格は任意である。例えば、インタフェース１５の規格には、ＬＶＤＳ（Low  voltage  differential  signaling）が適用可能である。ＮＭ１４間を接続するインタフェース１５の規格と、ＮＭ１４とＣＵ１１とを接続するインタフェース１５の規格とが異なっていてもよい。
【００２２】
ＮＣ１４０は、受信したパケットの宛先が自ＮＭ１４である場合には、そのパケット（そのパケットに記録されるコマンド）に応じた処理を実行する。例えば、コマンドがリードコマンドである場合には、ＮＣ１４０は第１メモリ１４１に対するリードを実行する。コマンドがライトコマンドである場合には、ＮＣ１４０は第１メモリ１４１に対するライトを実行する。コマンドが削除コマンドである場合には、ＮＣ１４０は第１メモリ１４１に対してデータの削除を実行する。ＮＣ１４０は、受信したパケットの宛先が自ＮＭ１４では無い場合には、そのパケットを自ＮＭ１４に接続されている他のＮＭ１４に転送する。
【００２３】
図４は、パケットの構成を説明する図である。パケットは、宛先のノードアドレス、送り元のノードアドレス、および、ペイロードを備える。ペイロードには、コマンド、データ、またはその両方が記録される。
【００２４】
パケットは、そのパケットを受信したＮＣ１４０が所定の転送アルゴリズムに基づいてルーティング先を決定することで、ＮＭ１４間を転送されて、宛先のＮＭ１４に到達する。例えば、ＮＣ１４０は、自ＮＭ１４に接続されている複数のＮＭ１４のうちの、自ＮＭ１４から宛先のＮＭ１４までの転送回数が最小となる経路上に位置するＮＭ１４を、転送先のＮＭ１４に決定する。ＮＣ１４０は、自ＮＭ１４から宛先のＮＭ１４までの転送回数が最小となる経路が複数存在する場合には、複数の経路から１つの経路を任意の方法で選択する。ＮＣ１４０は、自ＮＭ１４に接続されている複数のＮＭ１４のうちの転送回数が最小となる経路上に位置するＮＭ１４が故障していたりビジーであったりする場合には、他のＮＭ１４を転送先に決定する。
【００２５】
記憶部１０は、複数のＮＭ１４がメッシュネットワークで接続されて構成されていることにより、転送回数が最小となる経路が複数存在する。特定のＮＭ１４を宛先とするパケットが複数発行された場合であっても、発行された複数のパケットは、上述の転送アルゴリズムにより複数の経路に分散して転送されるので、特定のＮＭ１４に対するアクセス集中によるストレージシステム１全体のスループットの低下が抑制される。
【００２６】
図５は、ＮＭ１４の実装例を示す図である。各ＮＭ１４は、カード基板２０に実装されている。４つのカード基板２０が、着脱可能にコネクタを介してバックプレーン２２に装着される。各カード基板２０には、４つのＮＭ１４が実装されている。Ｙ方向に配列された４つのＮＭ１４は、同一のカード基板２０に実装され、Ｘ方向に配列された４つのＮＭ１４は、夫々異なるカード基板２０に実装されている。ここで、記憶部１０においてＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）を構築することが可能である。例えば、図５に示す例では、４つのＲＡＩＤグループ２１が構築されており、各ＮＭ１４は、４つのＲＡＩＤグループ２１のうちのいずれかに属する。そして、夫々異なるカード基板２０に実装されている４つのＮＭ１４は１つのＲＡＩＤグループ２１が構成される。ここでは、Ｘ方向に配列された４つのＮＭ１４が同一のＲＡＩＤグループ２１に属する。適用されるＲＡＩＤのレベルは、任意である。例えばＲＡＩＤ５が適用される場合には、ＲＡＩＤグループ２１を構成する複数のＮＭ１４のうちの１つが破損したとき、破損したＮＭ１４を有するカード基板２０を交換することで、破損したＮＭ１４に記憶されるデータが復旧される。また、ＲＡＩＤ６が適用される場合には、ＲＡＩＤグループ２１を構成する複数のＮＭ１４のうちの２つのＮＭ１４が破損した場合であっても復旧可能である。
【００２７】
図６は、第１の実施形態のストレージシステム１と比較される構成を有するストレージシステムの一例を示す図である。ストレージシステム１０００は、ＣＰＵ１００２、ＲＡＭ１００３、およびストレージ１００４を有する複数のサーバ１００１がネットワーク５に接続されて構成される。外部のコンピュータ６は、ネットワーク５を介して各サーバ１００１にアクセスすることができる。各サーバ１００１は、ノード番号によって互いに区別される。ストレージシステム１０００を用いてデータベースが運用される場合には、コンピュータ６がどのノード番号のサーバ１００１にアクセスしても素早く所望のデータを出力することができるように、各サーバ１００１のＲＡＭ１００３に他のサーバ１００１のストレージ１００４に格納されるデータがキャッシュされる。この場合、キャッシュデータとマスタデータとの一貫性を維持するために、サーバ１００１間でデータ転送が行われる。サーバ１００１間のデータ転送の際には、ＣＰＵ１００２が実行する演算による遅延、および、ネットワーク５を経由することによる遅延が発生する。
【００２８】
これに対し、第１の実施形態のストレージシステム１は、記憶機能を有する複数のＮＭ１４がメッシュネットワークで接続されている。したがって、複数のＣＵ１１の夫々は、外部のネットワーク２を経由することなく１つのＮＭ１４にアクセスすることが可能である。１つのＮＭ１４に格納されているデータを他のＮＭ１４にキャッシュしておく仕組みの実装を不要とすることができるので、キャッシュの一貫性を維持するためにＮＭ１４間でデータ転送することを不要とすることができる。
【００２９】
第１の実施形態においては、ＮＭ１４に格納されているデータに対し、更新の回数に応じたカウント値が付与される。更新とは、具体的には、上書きおよび削除を含む。更新は、ＣＵ１１がコンピュータ３から受信した要求に応じて実行される。カウント値は、当該データを更新するパケットを発行したＣＵ１１に通知され、カウント値が通知されたＣＵ１１は、更新を実行する原因となった要求を、通知されたカウント値と対応づけて、バックアップとして記録する。
【００３０】
ここでは、カウント値はデータ毎に与えられ、データ毎に独立にインクリメントされるものとする。データとは、外部から格納位置（または格納位置に相当する情報）が指定されるとともに入出力される値の塊であって最小単位の塊をいう。外部から指定される格納位置とは、例えばアドレスである。格納位置に相当する情報は、例えばＫＶＳ（Key-Value  Store）がストレージシステム１に実装される場合には、キーが該当する。データが更新されるとき、そのデータにかかるカウント値がインクリメントされる。
【００３１】
なお、カウント値は、所定の記憶領域毎に与えられてもよい。例えば、各ＮＭ１４に１つのカウント値が与えられてもよい。また、第１メモリ１４１毎に１つのカウント値が与えられてもよい。また、記憶部１０が外部に対して提供するメモリ空間が複数の部分メモリ空間に分割され、部分メモリ空間毎に１つのカウント値が与えられてもよい。カウント値が与えられた記憶領域内のデータが更新されるとき、その記憶領域に与えられたカウント値がインクリメントされる。
【００３２】
図７は、第１メモリ１４１のメモリ構成を示す図であり、図８は、ＲＡＭ１１２のメモリ構成を示す図である。第１メモリ１４１には、各データがカウント値と対にして格納されている。ＲＡＭ１１２には、バックアップ領域１１５が確保されている。バックアップ領域１１５には、要求がカウント値と対応づけて記録されている。
【００３３】
図９は、第１の実施形態のストレージシステム１の動作を示す図である。本図に示すＣＵ１１の動作は、具体的にはＣＵ１１が具備するＭＰＵ１１１が実行する。また、本図に示すＮＭ１４の動作は、具体的にはＮＭ１４が具備するＮＣ１４０が実行する。
【００３４】
ＣＵ１１は、データを更新する要求をコンピュータ３から受信すると（Ｓ１）、データを更新するためのコマンドを記憶部１０に発行する（Ｓ２）。コマンドは、パケットが備えるペイロードに記録される。パケットに記録される宛先は、ＣＵ１１が受信した要求に付与されている格納位置または格納位置に相当する情報に応じて決定される。
【００３５】
例えば、外部からアドレスが指定される場合、ＣＵ１１は、指定されたアドレスから宛先のＮＭ１４を演算してもよい。アドレスと各ＮＭ１４との関係は、例えば予め定められている。例えば、アドレスを構成するビット列の一部が、１つのＮＭ１４を特定する情報として使用される。
【００３６】
また、例えばＫＶＳが実装される場合、ＣＵ１１は、キーをアドレスに変換し、変換されたアドレスから宛先を演算してもよい。また、所定のＮＭ１４がキーからアドレスの変換を実行するようにし、ＣＵ１１は、変換を実行することができるＮＭ１４を宛先とするようにしてもよい。変換を実行することができるＮＭ１４は、キーをアドレスに変換し、変換されたアドレスから宛先を演算し、演算された宛先にコマンドを転送する。
【００３７】
なお、要求がデータを上書きする要求である場合には、その要求は、差分データまたは完全なデータを含む。要求がデータを消去する要求である場合には、その要求はデータを含んでいなくてよい。
【００３８】
ＮＭ１４は、コマンドを受信すると、更新対象のデータのカウント値を第１メモリ１４１から読み出す（Ｓ３）。そして、ＮＭ１４は、読み出したカウント値をインクリメントすることによって、新たなカウント値を計算する（Ｓ４）。そして、ＮＭ１４は、コマンドの送り元のＣＵ１１に、計算したカウント値を通知する（Ｓ５）。カウント値の通知は、パケットの形式で送信される。ＮＭ１４は、データの更新を実行し（Ｓ６）、当該データのカウント値を計算したカウント値で更新する（Ｓ７）。
【００３９】
ＣＵ１１は、カウント値の通知を受信すると、Ｓ１にて受信した要求を通知されたカウント値と対にしてバックアップ領域１１５に追記形式で記録する（Ｓ８）。
【００４０】
図１０〜図１２は、第１の実施形態のストレージシステム１の具体的な動作例を示す図である。なお、符号１００は、記憶部１０によって構成されるメモリ空間を示している。メモリ空間１００に対して２つのＣＵ１１が更新を実行する場合について説明する。２つのＣＵ１１を、ＣＵ＃０、ＣＵ＃１のように、番号を付して互いに区別する。
【００４１】
図１０に示すように、ＣＵ＃０は、値「Ａ」を書き込む要求を実行する。メモリ空間１００には、値「Ａ」がカウント値「１６」と対にして格納され、ＣＵ＃０は、「Ａを書込み」という要求をカウント値「１６」と対にして自ＣＵ＃０が有するバックアップ領域１１５に記録する。
【００４２】
次に、図１１に示すように、ＣＵ＃１は、図１０において値「Ａ」が書き込まれたアドレスが示す位置に値「Ｃ」を書き込む（上書きする）要求を実行する。メモリ空間１００において、値「Ａ」は値「Ｃ」に上書きされるとともに、カウント値が「１７」に更新される。また、ＣＵ＃１は、「Ｃを書込み」という要求をカウント値「１７」と対にして自ＣＵ＃１が有するバックアップ領域１１５に記録する。
【００４３】
次に、図１２に示すように、ＣＵ＃０は、値「Ｃ」が書き込まれていたアドレスを指定してデータを削除する、要求を実行する。メモリ空間１００に書き込まれていた値「Ｃ」は削除され、カウント値が「１８」に更新される。ＣＵ＃０は、「削除」という要求をカウント値「１８」とともにバックアップ領域１１５に追記する。
【００４４】
このように、ＮＭ１４は、データの更新を実行する毎にカウント値をインクリメントし、インクリメント後のカウント値を通知する。ＣＵ１１は、通知されたカウント値と要求とを対にして蓄積記憶する。カウント値は時間的な順番に対応するので、ＣＵ１１が自ＣＵ１１が記憶する任意のカウント値の要求を再度実行することで、そのカウント値が計算された際の状態にＮＭ１４内のデータをレストアすることが可能となる。ＮＭ１４内のデータを任意の時点の状態にレストアすることが可能となるので、利便性が向上する。
【００４５】
また、例えば、ストレージシステム１は、要求毎にトランザクションＩＤを発行し、各要求は、カウント値およびトランザクションＩＤと対応付けてバックアップ領域１１５に記録されてもよい。これにより、ストレージシステム１は、トランザクションＩＤが指定されると、指定されたトランザクションＩＤの要求が実行された時点の状態にＮＭ１４内のデータをレストアすることが可能となる。また、ストレージシステム１は、要求毎にタイムスタンプを発行し、各要求は、カウント値およびタイムスタンプと対応付けてバックアップ領域１１５に記録されてもよい。これにより、ストレージシステム１は、過去の時刻が指定されると、指定された時刻の時点の状態にＮＭ１４内のデータをレストアすることが可能となる。
【００４６】
（第２の実施形態）
ストレージシステム１に具備される各ＮＭ１４は、ＮＣ１４０において種々の処理を実行することができる。このことを利用することによって、ストレージシステム１は、マップレデュース（MapReduce）と同等の機能を実現することが可能である。マップレデュースの処理は、マップフェーズ、シャッフルアンドソートフェーズ、および、レデュースフェーズにより構成される。マップフェーズにおいては、キーと値との対が複数生成される。シャッフルアンドソートフェーズにおいては、マップフェーズにおいて生成された複数の対が、キー毎に分類される。レデュースフェーズにおいては、キー毎の対の値が集約される。
【００４７】
第２の実施形態においては、マップレデュースの機能を実現するストレージシステム１を説明する。図１３は、第２の実施形態のストレージシステム１の動作を示す図である。第２の実施形態においては、ストレージシステム１は、ＫＶＳが実装されているものとする。
【００４８】
コンピュータ３は、まず、実行したい処理を複数の部分処理に分割する（Ｓ１１）。そして、コンピュータ３は、各部分処理を夫々異なるＣＵ１１に送信する（Ｓ１２）。
【００４９】
ＣＵ１１は、部分処理を受信すると、受信した部分処理を実行することによって１以上の処理結果を生成する（Ｓ１３）。ここで生成される各処理結果は、１つのキーと１つの値との対によって構成されるデータ形式を有する。ＣＵ１１は、処理結果を集約するためのコマンドを処理結果毎に発行する（Ｓ１４）。なお、集約は任意の演算によって実行される。集約に該当する演算の種類は、例えばコンピュータ３から指定される。Ｓ１４において発行されるコマンドの宛先は、処理結果が含むキーにより一意に特定される。
【００５０】
ＮＭ１４は、自ＮＭ１４が宛先のコマンドを受信すると、受信したコマンドに応じた動作を実行する（Ｓ１５）。なお、同一のキーを含む処理結果が１つまたは複数のＣＵ１１において生成された場合、Ｓ１４の処理において生成されるコマンドは、同一のＮＭ１４に送信される。ＮＭ１４は、複数のコマンドを受信した場合、受信した全てのコマンドにより得られた値を集約する。ＮＭ１４は、集約により得られた結果を、第１メモリ１４１のうちのキーに応じた位置に格納する（Ｓ１６）。
【００５１】
その後、コンピュータ３は、各ＮＭ１４から集約結果を読み出すことができる（Ｓ１７）。
【００５２】
図１４は、第２の実施形態のストレージシステムの具体的な動作例を示す図である。ここでは一例として、ワードカウントが実行される場合の動作を説明する。カウント対象のワードは、「tokyo」と「london」とである。
【００５３】
まず、マップフェーズ（Ｓ２１）に相当する動作が実現される。具体的には、入力テキスト（Input  Text）３１がコンピュータ３において３つの部分テキスト（Partial  Text）３２に分割される。そして、コンピュータ３は、３つの部分テキスト３２を夫々異なるＣＵ１１に入力する。部分テキスト３２に含まれるワードのうちの、「tokyo」というワードと、「london」というワードとをカウントすることが、部分処理に該当する。すなわち、各ＣＵ１１は、入力された部分テキスト３２に含まれるワードのうち、「tokyo」というワードと、「london」というワードとをカウントする。
【００５４】
次に、シャッフルアンドソートフェーズ（Ｓ２２）に相当する動作が実現される。具体的には、各ＣＵ１１は、ワードをキーとしカウント値を値とする、キーと値との対を、処理結果とし、処理結果を集約するためのコマンド３３を発行する。図１４の例では、「tokyo」をキーとし、「１」を値とする処理結果を含むコマンド３３ａと、「london」をキーとし、「１」を値とする処理結果を含むコマンド３３ｂと、「london」をキーとし、「２」を値とする処理結果を含むコマンド３３ｃとが発行されている。なお、各コマンド３３に含まれる値に付加されている「＋」という記号は、集約のための演算の種類を示している。具体的には、「＋」は、リードモディファイライトの一種であって、キーが示す格納位置から値を読み出して、読み出した値にコマンド３３に含まれる値を加算し、加算後の値をキーが示す格納位置に格納する、という演算を意味する。
【００５５】
なお、例えば１つのＣＵ１１において「london」および「tokyo」が夫々１以上カウントされた場合には、そのＣＵ１１は、「london」というキーを有するコマンド３３と、「tokyo」というキーを有するコマンド３３とを発行する。
【００５６】
各コマンド３３の宛先のＮＭ１４は、キーによって一意に特定される。「tokyo」をキーとするコマンド３３ａは、ＮＭ１４ａを宛先として転送される。「london」をキーとするコマンド３３ｂおよびコマンド３３ｃは、ＮＭ１４ｂを宛先として転送される。各処理結果は、キーに応じたＮＭ１４に夫々転送されるので、シャッフルアンドソートフェーズと同等の処理が実現する。
【００５７】
次に、レデュースフェーズ（Ｓ２３）に相当する動作が実現される。具体的には、ＮＭ１４ａ、ＮＭ１４ｂにおいては、受信したコマンド３３に応じた動作が実行される。各ＮＭ１４においては、コマンド３３に記述された集約のための演算は、ＮＣ１４０によって解釈され、実行される。例えばＮＭ１４ａにおいては、ＮＭ１４０は、コマンド３３ａを受信した場合、キーである「tokyo」に応じた格納位置３４ａに、「１」という値を書き込む。また、例えばＮＭ１４ｂにおいては、ＮＭ１４０は、コマンド３３ｂを受信した場合、キーである「london」に応じた格納位置３４ｂに「２」という値を書き込む。ＮＭ１４０は、その後にコマンド３３ｃを受信すると、キーである「london」に応じた格納位置３４ｂから「２」という値を読み出して、読み出した値「２」にコマンド３３ｃに記録されている値「１」を加算する。そして、ＮＭ１４０は、、加算によって得られた値「３」を、キーである「london」に応じた格納位置３４ｂに上書きする。その後、コンピュータ３は、各キーに応じた各格納位置３４ａ、３４ｂからワードカウントの結果を読み出し、夫々から読み出した結果を結合する。これによりコンピュータ３は、入力テキスト３１に対するワードカウントの結果３５を得ることができる。
【００５８】
このように、複数のＮＭ１４が構成するメモリ空間のうちの各データの格納位置は、キーに応じて特定される。ＣＵ１１は、外部から送られてきた部分処理を実行し、実行結果をコマンドとして発行する。コマンドは、部分処理の実行結果として、キーと値とを含む。コマンドは、そのコマンドが含むキーによって特定されるＮＭ１４に転送される。コマンドが含むキーによって特定されるＮＭ１４は、そのコマンドが含む値を集計し、集計結果を、そのコマンドが含むキーに応じた格納位置に格納する。これにより、ストレージシステム１は、マップレデュースの機能を実現することが可能となる。ストレージシステム１はマップレデュースの機能を実現することが可能であるので、ストレージシステム１の利便性を向上することができる。
【００５９】
（第３の実施形態）
第１および第２の実施形態においては、ＣＵ１１は、ＭＰＵ１１１を備え、ＭＰＵ１１０がプログラムを実行することにより、外部からの要求に応じて記憶部１０に対して種々のアクセスを実行した。第１および第２の実施形態のＣＵ１１の機能を、外部のプロセッサが実現するようにしてもよい。
【００６０】
図１５は、第３の実施形態のストレージシステムの構成例を示す図である。ストレージシステム１ａは、複数（ここでは８つ）のサーバ７に接続されている。コンピュータ３は、ネットワーク２を介して各サーバ７に要求を送信することが可能である。各サーバ７は、受信した要求に応じてストレージシステム１ａに対してアクセスを実行する。各サーバ７は、ストレージシステム１ａに対するアクセスを実行する際には、図４に示すパケットを発行する。
【００６１】
なお、サーバ７とストレージシステム１ａとの間の通信規格は、任意である。例えば、サーバ７とストレージシステム１ａとの間の通信規格は、サーバ７の内部のバスをサーバ７の外部にケーブリングにより拡張することが可能な規格が採用可能である。例えば、サーバ７とストレージシステム１ａとの間の通信規格は、ＰＣＩ  Ｅｘｐｒｅｓｓが採用可能である。
【００６２】
ストレージシステム１ａは、記憶部１０と、複数のＣＵ１６と、を備えている。記憶部１０は、複数のＮＭ１４がメッシュネットワークにより接続されて構成される。
【００６３】
図１５の例では、ストレージシステム１ａは、８つのＣＵ１６を備えている。８つのＣＵ１６は、夫々異なるＮＭ１４に接続される。ここでは、８つのＣＵ１６のうちの４つは、夫々、ノード（０、０）、ノード（０、１）、ノード（０、２）、およびノード（０、３）に一対一に接続されている。８つのＣＵ１６のうちの他の４つは、夫々、ノード（３、０）、ノード（３、１）、ノード（３、２）、およびノード（３、３）に一対一に接続されている。
【００６４】
ＣＵ１６は、サーバ７に接続するコネクタを備えている。ここでは、各ＣＵ１６は、サーバ７と一対一で接続されている。ＣＵ１６は、ＮＭ１４とサーバ７との間でパケットの転送を実行する。
【００６５】
図１６は、ＣＵ１６の構成を示す図である。ＣＵ１６は、内部にレピータ１６１を備える。レピータ１６１は、ＣＵ１６に接続されているＮＭ１４と、ＣＵ１６に接続されているサーバ７との間でパケットの中継を実行する。サーバ７とＣＵ１６とを接続するインタフェースの規格と、ＣＵ１６とＮＭ１４とを接続するインタフェース１５の規格とが異なる場合には、レピータ１６１は、規格間の変換を行ってもよい。
【００６６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６７】
１，１ａ  ストレージシステム、２  ネットワーク、３  コンピュータ、４  センサ、７  サーバ、１０  記憶部、１１，１６  ＣＵ、１４  ＮＭ、１５  インタフェース、２０  カード基板、２１  ＲＡＩＤグループ、２２  バックプレーン、３１  入力テキスト、３２  部分テキスト、３３，３３ａ，３３ｂ，３３ｃ  コマンド。
【図１】
2015152949.tif 000003
【図２】
2015152949.tif 000004
【図３】
2015152949.tif 000005
【図４】
2015152949.tif 000006
【図５】
2015152949.tif 000007
【図６】
2015152949.tif 000008
【図７】
2015152949.tif 000009
【図８】
2015152949.tif 000010
【図９】
2015152949.tif 000011
【図１０】
2015152949.tif 000012
【図１１】
2015152949.tif 000013
【図１２】
2015152949.tif 000014
【図１３】
2015152949.tif 000015
【図１４】
2015152949.tif 000016
【図１５】
2015152949.tif 000017
【図１６】
2015152949.tif 000018