JP6056453B2 - プログラム、データ管理方法および情報処理装置 - Google Patents

プログラム、データ管理方法および情報処理装置 Download PDF

Info

Publication number
JP6056453B2
JP6056453B2 JP2012278390A JP2012278390A JP6056453B2 JP 6056453 B2 JP6056453 B2 JP 6056453B2 JP 2012278390 A JP2012278390 A JP 2012278390A JP 2012278390 A JP2012278390 A JP 2012278390A JP 6056453 B2 JP6056453 B2 JP 6056453B2
Authority
JP
Japan
Prior art keywords
node
data
log
data set
memory
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
JP2012278390A
Other languages
English (en)
Other versions
JP2014123218A (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 JP2012278390A priority Critical patent/JP6056453B2/ja
Priority to US14/071,051 priority patent/US20140181035A1/en
Publication of JP2014123218A publication Critical patent/JP2014123218A/ja
Application granted granted Critical
Publication of JP6056453B2 publication Critical patent/JP6056453B2/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems

Description

本発明はプログラム、データ管理方法および情報処理装置に関する。
現在、ネットワークに接続された複数のノードにデータを分散して格納する分散ストレージシステムが利用されることがある。分散ストレージシステムの一例として、各ノードがデータレコードとしてキーと値(バリュー)の組を記憶する分散キーバリューストアが挙げられる。分散キーバリューストアでは、例えば、キーのハッシュ値に基づいて、複数のノードの中からキーとバリューの組を記憶すべきノードが決定される。
分散ストレージシステムでは、所定数以下のノードの故障に耐えられるよう、データをコピーして複数のノードに記憶しておくことがある。例えば、同じデータを3台のノードに記憶しておけば、2台までのノードの同時故障に耐えることができる。データを冗長化した場合、同じデータを記憶する複数のノードのうち、1つのノードのみが当該データの読み出しや書き込みなどの命令を受け付けて処理し、他のノードは当該データを専らバックアップデータとして管理することが考えられる。前者はマスタ処理と呼ぶことがあり、後者はスレーブ処理と呼ぶことがある。複数のノードのリソースを活用するため、マスタ処理専用・スレーブ処理専用のノードを設けるのではなく、各ノードがあるデータについてはマスタ処理を担当し別のデータについてはスレーブ処理を担当することもある。
なお、複数のノードそれぞれがマスタプロセッサとスレーブプロセッサと共有メモリを備え、マスタプロセッサは複数のノードを接続するバスを介して直接監視され、スレーブプロセッサは共有メモリを介して間接的に監視されるシステムが提案されている。また、それぞれ担当する加入者のメッセージを処理する2つのホームロケーションレジスタ(HLR)を備え、一方のHLRが故障すると、メッセージをコピーすることで故障したHLRの処理を他方のHLRが引き継ぐシステムが提案されている。また、複数のリソース管理装置それぞれがリソース要求情報を記憶する予約データベースを備え、リソース管理装置の間で予約データベースが共有された状態にするシステムが提案されている。
特開平7−93270号公報 特開平10−512122号公報 特開2011−203848号公報
データを冗長化した分散ストレージシステムでは、あるデータについてマスタ処理を担当するノードが書き込み命令を実行すると、スレーブ処理を担当するノードに書き込みを反映させることになる。しかし、データの管理には、ランダムアクセスが比較的低速なHDD(Hard Disk Drive)などの不揮発性の記憶装置が利用されることが多い。そのため、書き込み命令が実行される毎にスレーブ処理を担当するノードがこのような不揮発性の記憶装置にアクセスすることは、同じノードで実行される他のデータについてのマスタ処理の性能を低下させるおそれがあるという問題がある。マスタ処理の性能が低下すると、外部から見た分散ストレージシステム全体のスループットが低下してしまう。
1つの側面では、本発明は、データの冗長性の管理が他の処理の性能に与える影響を軽減するプログラム、データ管理方法および情報処理装置を提供することを目的とする。
1つの態様では、第1のデータ集合が割り当てられた第1のノードと、第2のデータ集合が割り当てられると共に第1のデータ集合のバックアップコピーを管理する第2のノードとを備えるシステムにおいて、第2のノードとして用いられるコンピュータに以下の処理を実行させるプログラムが提供される。第1のデータ集合に属するデータに対して実行された命令を示すログを第1のノードから受信し、受信したログをコンピュータが備えるメモリに格納する。所定の条件が満たされたタイミングで、メモリに蓄積された複数の命令分のログをコンピュータが備えるメモリと異なる記憶装置に書き込む。
また、1つの態様では、第1のデータ集合が割り当てられた第1のノードと、第2のデータ集合が割り当てられると共に第1のデータ集合のバックアップコピーを管理する第2のノードとを備えるシステムが実行するデータ管理方法が提供される。データ管理方法では、第1のデータ集合に属するデータに対して実行された命令を示すログを第1のノードから第2のノードに送信する。送信されたログを第2のノードが備えるメモリに格納する。所定の条件が満たされたタイミングで、メモリに蓄積された複数の命令分のログを第2のノードが備えるメモリと異なる記憶装置に書き込む。
また、1つの態様では、第1のデータ集合が割り当てられた第1のノードと、第2のデータ集合が割り当てられると共に第1のデータ集合のバックアップコピーを管理する第2のノードとを備えるシステムにおいて、第2のノードとして用いられる情報処理装置が提供される。情報処理装置は、メモリと、メモリと異なる記憶装置と、第1のデータ集合に属するデータに対して実行された命令を示すログを第1のノードから受信する受信部と、受信したログをメモリに格納し、所定の条件が満たされたタイミングで、メモリに蓄積された複数の命令分のログを記憶装置に書き込む制御部と、を有する。
1つの側面では、データの冗長性の管理が他の処理の性能に与える影響を軽減できる。
第1の実施の形態の情報処理システムの例を示す図である。 第2の実施の形態の情報処理システムの例を示す図である。 データ配置例を示す図である。 ノード障害時のデータ配置の変化例を示す図である。 各ノードのハードウェア例を示すブロック図である。 各ノードの機能例を示すブロック図である。 ノード管理テーブルの例を示す図である。 マスタ処理の手順例を示すフローチャートである。 スレーブ処理の手順例を示すフローチャートである。 冗長回復の手順例を示すフローチャートである。 ノード間の第1の通信例を示す図である。 ノード間の第2の通信例を示す図である。 ノード間の第3の通信例を示す図である。 他のデータ配置例を示す図である。 ノード間の第4の通信例を示す図である。 ノード間の第5の通信例を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムの例を示す図である。第1の実施の形態の情報処理システムは、ノード10,20を含む複数のノードを備える。これら複数のノードは、LAN(Local Area Network)などのネットワークに接続されており、HDDなどの不揮発性の記憶装置を用いて分散してデータを管理する。
ノード10には第1のデータ集合が割り当てられ、ノード20には第1のデータ集合と重複しない第2のデータ集合が割り当てられている。各データ集合は、例えば、キーと値(バリュー)の組であるキーバリュー形式のデータレコードを1つ以上含む。例えば、第1のデータ集合は、キーのハッシュ値が所定の第1の範囲に属するようなデータレコードの集合であり、第2のデータ集合は、キーのハッシュ値が第1の範囲と重複しない所定の第2の範囲に属するようなデータレコードの集合である。
第1のデータ集合が割り当てられたノード10は、第1のデータ集合に属するデータを指定した命令を受け付け、受け付けた命令を実行する。命令の種類として、例えば、書き込み(ライト)命令や読み出し(リード)命令が挙げられる。あるデータを指定した書き込み命令を受け付けると、ノード10は、指定されたデータをノード10が備える不揮発性の記憶装置に書き込む。また、あるデータを指定した読み出し命令を受け付けると、ノード10は、指定されたデータをノード10が備える不揮発性の記憶装置から読み出す。同様に、第2のデータ集合が割り当てられたノード20は、第2のデータ集合に属するデータを指定した命令を受け付け、受け付けた命令を実行する。
また、ノード20は、第1のデータ集合のバックアップコピーを管理する。ノード20は、ノード10と異なり、第1のデータ集合に属するデータを指定した命令を直接には受け付けて実行することはしない。すなわち、第1のデータ集合に属するデータの読み出しは、ノード20ではなくノード10から行われる。また、第1のデータ集合に属するデータの保存は、ノード20ではなくノード10に対して要求される。
なお、命令を受け付けて実行することをマスタ処理、バックアップコピーを管理することをスレーブ処理と言うことができる。ノード10は第1のデータ集合のマスタ処理を担当し、ノード20は第1のデータ集合のスレーブ処理と第2のデータ集合のマスタ処理とを担当している。また、あるデータ集合にとって、マスタ処理を担当するノードをマスタノード、スレーブ処理を担当するノードをスレーブノードと言うこともできる。第1のデータ集合にとっては、ノード10がマスタノードでありノード20がスレーブノードである。また、第2のデータ集合にとっては、ノード20がマスタノードである。
ここで、第1のデータ集合について、マスタノードであるノード10で書き込み命令が実行されると、データの冗長性を維持するために、書き込み結果をスレーブノードであるノード20に反映させることになる。そこで、ノード10からノード20に、実行された命令を示すログを送信する。ログとして通知する命令は、読み出し命令を含む全ての種類の命令としてもよいし、書き込み命令などの所定の種類の命令に絞ってもよい。
情報処理装置としてのノード20は、メモリ21、記憶装置22、受信部23および制御部24を有する。メモリ21は、例えば、RAM(Random Access Memory)などの揮発性の記憶装置である。記憶装置22は、例えば、メモリ21よりランダムアクセスが低速なHDDなどの不揮発性の記憶装置である。受信部23は、例えば、有線または無線でネットワークに接続する通信インタフェースである。制御部24は、例えば、プロセッサを含む。「プロセッサ」は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)でもよいし、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路でもよい。また、「プロセッサ」は、複数のプロセッサの集合(マルチプロセッサ)であってもよい。プロセッサは、例えば、RAMなどの揮発性メモリに記憶されたプログラムを実行する。
受信部23は、第1のデータ集合に属するデータについてノード10で実行された命令(好ましくは、書き込み命令)を示すログを、ネットワークを介してノード10から受信する。ログは、例えば、所定の種類の命令が実行される毎に逐次受信される。
制御部24は、ログが受信される毎に、受信されたログをメモリ21上のバッファ領域に追加する。例えば、キー=a,値=10を指定した書き込み命令のログが受信されると、このログをメモリ21のバッファ領域に追加する。その後、キー=b,値=20を指定した書き込み命令のログが受信されると、このログをメモリ21のバッファ領域に更に追加する。このようにして、メモリ21には、複数の命令分のログが蓄積される。
そして、制御部24は、所定の条件が満たされたタイミングで、メモリ21に蓄積された複数の命令分のログを記憶装置22に書き込む。これら複数の命令分のログは、記憶装置22の連続する記憶領域にシーケンシャルに書き込むことが可能である。記憶装置22に保存したログは、メモリ21から消去してもよい。例えば、制御部24は、別々に受信されたキー=a,値=10を指定した書き込み命令のログと、キー=b,値=20を指定した書き込み命令のログとを、纏めてメモリ21から記憶装置22に移動させる。
所定の条件としては、例えば、ノード20の負荷の大きさの条件が用いられる。この場合、制御部24は、ノード20の負荷を監視し、負荷が閾値未満になったタイミングでログを記憶装置22に書き込む。監視する負荷としては、CPU使用率やマスタ処理による不揮発性の記憶装置(例えば、記憶装置22)へのアクセス頻度を用いてもよい。また、所定の条件としては、例えば、メモリ21のバッファ領域に格納されたログの量の条件が用いられる。この場合、制御部24は、バッファ領域を監視し、ログの量が閾値に達したタイミングでバッファ領域のログを記憶装置22に書き込む。
なお、記憶装置22に書き込まれたログは、ノード10に障害が発生したときに第1のデータ集合を復元するために使用できる。例えば、ノード20は、ノード20が保持する古い第1のデータ集合のバックアップコピーに対して命令を再実行することで、最新の第1のデータ集合を復元する。これにより、ノード20がノード10に代わってマスタノードになることができる。また、記憶装置22に書き込まれたログは、ノード10に障害が発生したときに第1のデータ集合の冗長性を回復するために使用できる。例えば、ノード20は、ノード10,20以外の他のノードにログを送信することで、当該他のノードを第1のデータ集合の新たなスレーブノードに指定する。ただし、ノード20は、ノード10に障害が発生する前に、ノード20の負荷が低いときに命令を再実行してもよい。
第1の実施の形態の情報処理システムによれば、第1のデータ集合に属するデータを指定した命令はノード10が実行し、第2のデータ集合に属するデータを指定した命令はノード20が実行するため、ノード10,20間でデータ処理の負荷が分散される。また、ノード10に割り当てられた第1のデータ集合のバックアップコピーをノード20が管理してデータを冗長化するため、ノード10,20の一方が故障しても他方が第1のデータ集合の処理を継続することができ、耐故障性が向上する。
また、ノード10で第1のデータ集合に属するデータの書き込み命令が実行されたときに、すぐにノード20でも同じ書き込み命令が実行されるのではなくノード20にログが蓄積される。そして、ノード10に障害が発生したとき(または、ノード20の負荷が低いとき)、ログに従ってノード20で書き込み命令が再実行される。このため、ノード20で第1のデータ集合のバックアップコピーを管理する負荷が軽減される。
更に、ログはノード10からノード20に送信される毎に記憶装置22に書き込まれるのではなくメモリ21に蓄積され、所定の条件が満たされたときに蓄積されたログが纏めて記憶装置22に書き込まれる。このため、バックアップコピーの管理に関する記憶装置22へのアクセスを減らすことができ、記憶装置22がランダムアクセアスの低速な記憶装置であっても、他の処理に関する記憶装置22へのアクセスが待ち状態になる可能性を減らすことができる。よって、ノード20における第2のデータ集合に属するデータの処理性能が低下する可能性を減らし、スループットを向上させることができる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムの例を示す図である。第2の実施の形態の情報処理システムは、データを複数のノードに分散して管理する。この情報処理システムは、クライアント装置31およびノード100,100−1〜100−6を備える。クライアント装置31と各ノードは、ネットワーク30に接続されている。
クライアント装置31は、ユーザが操作する端末装置としてのコンピュータである。クライアント装置31は、データの読み出し(リード)やデータの書き込み(ライト)を行うとき、ノード100,100−1〜100−6の何れかにアクセスする。アクセス先のノードとしては、データの内容にかかわらず任意のノードを選択してよい。すなわち、この情報処理システムはボトルネックとなり得る集中管理ノードをもたず、全てのノードはクライアント装置31からのアクセスを受け付けることができる。また、クライアント装置31は、所望のデータが何れのノードに記憶されているか知らなくてよい。
ノード100,100−1〜100−6は、データを不揮発性の記憶装置に格納して管理するサーバコンピュータである。ノード100,100−1〜100−6は、例えば、データをキーと値(バリュー)の組であるキーバリュー形式で記憶する。この場合、ノード100,100−1〜100−6の集合を分散キーバリューストアと呼んでもよい。
第2の実施の形態の情報処理システムでは、耐故障性を高めるためデータが冗長化され、同じデータが複数(例えば2つ)のノードに重複して記憶される。同じデータを記憶する複数のノードのうち、1つのノードがそのデータについてのクライアント装置31からのアクセスを処理し、他のノードはそのデータを専らバックアップコピーとして管理する。前者の処理はマスタ処理、後者の処理はスレーブ処理と呼ぶことがある。また、あるデータにとって、マスタ処理を担当するノードをマスタノード、スレーブ処理を担当するノードをスレーブノードと呼ぶことがある。各ノードではマスタ処理とスレーブ処理を混在させることがあり、その際、各ノードは何れかのデータにとってのマスタノードである(マスタ処理を担当する)と共に、他の何れかのデータにとってのスレーブノードになる(スレーブ処理を担当する)。なお、バックアップコピーは、クライアント装置31が読み出し命令を発行したときの読み出し対象としては使用されない。ただし、クライアント装置31が書き込み命令を発行してマスタノードのデータ(バックアップコピーに対応するオリジナルのデータ)が更新された場合には、データの一貫性を維持するために、オリジナルのデータに対応するバックアップコピーは更新され得る。
各ノードには、キーのハッシュ値に基づいて、マスタ処理を担当すべきデータとスレーブ処理を担当すべきデータとが割り当てられる。クライアント装置31からアクセスを受け付けたノードは、クライアント装置31から指定されたキーのハッシュ値を算出し、そのキーが示すデータのマスタ処理を担当するマスタノードを判定する。判定されたマスタノードが他ノードであるときは、アクセスが当該他ノードに転送される。
図3は、データ配置例を示す図である。データをノード100,100−1〜100−6に配置するにあたって、図3に示すように、キーのハッシュ値の値域を円状に繋げたハッシュ空間を定義する。例えば、ハッシュ値がLビットで表されるとき、2L−1(ハッシュ値の最大)の次のハッシュ値が0に戻るような循環するハッシュ空間が定義される。
ハッシュ空間上には、各ノードに対応する点(ハッシュ値)を設定する。ノードに対応するハッシュ値は、例えば、そのノードのIP(Internet Protocol)アドレスなどのアドレスのハッシュ値とする。図3の例では、ノード100,100−1〜100−6に対応するハッシュ値h0〜h6が、ハッシュ空間上に設定される。そして、隣接する2つのノードのハッシュ値によって挟まれる区間毎に、マスタノードとスレーブノードが割り当てられる。例えば、各ノードは、ハッシュ空間上で1つ前のノードとの間の区間に属するデータのマスタ処理を担当する。また、例えば、あるデータのマスタ処理を担当するノードの1つ後ろに位置するノードが、当該データのスレーブ処理を担当する。
一例として、h()をハッシュ関数としh6とh0の間に“0”があるとすると、区間h6h(key)≦2L−1または0≦h(key)≦h0に属するデータAのマスタ処理はノード100が担当し、データAのスレーブ処理はノード100−1が担当する。また、区間h0<h(key)≦h1に属するデータBのマスタ処理はノード100−1が担当し、データBのスレーブ処理はノード100−2が担当する。また、区間h1<h(key)≦h2に属するデータCのマスタ処理はノード100−2が担当し、データCのスレーブ処理はノード100−3が担当する。
図4は、ノード障害時のデータ配置の変化例を示す図である。あるノードで障害が発生すると、ハッシュ空間上で障害が発生したノードの1つ後ろに位置するノードが、障害が発生したノードのマスタ処理とスレーブ処理を引き継ぐ。これに伴い、ノードへのデータ配置が変化する。ただし、障害の影響を受けるノードは、情報処理システムが備えるノードの全部ではなく一部である。例えば、同じデータがN個のノードに記憶されている(冗長度がNである)場合、障害が発生したノードより後ろのN個ノードが影響を受ける。
一例として、ノード100−1に障害が発生すると、ノード100−2がデータBのマスタ処理とデータAのスレーブ処理を引き継ぐ。ノード100−2は、データBのスレーブノードであったため、他のノードからデータBを取得しなくてよい。一方、ノード100−2は、データAの新たなスレーブノードになるため、ノード100−1が抜けた後の1つ前のノード100からデータAを取得することになる。また、ノード100−3は、ノード100−2がデータBのマスタノードになったことに伴い、データBのスレーブ処理を引き継ぐ。ノード100−3は、新たにデータBのスレーブノードになるため、1つ前のノード100−2からデータBを取得することになる。
ところで、クライアント装置31からの要求に従ってあるマスタノードでデータの書き込みが行われると、データの冗長性を維持するために、スレーブノードにその書き込みの結果を反映させることになる。そこで、第2の実施の形態の情報処理システムでは、マスタノードからスレーブノードに、データの書き込みが行われる毎にログを送信する。
図5は、各ノードのハードウェア例を示すブロック図である。ノード100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、読み取り装置106および通信インタフェース107を有する。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されているプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、ノード100は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM102は、CPU101が実行するプログラムや情報処理に用いられるデータを一時的に記憶する揮発性メモリである。なお、ノード100は、RAM以外の種類のメモリを備えてもよく、複数の種類のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、ノード100は、SSD(Solid State Drive)などの他の種類の不揮発性の記憶装置を備えてもよく、複数の種類の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、ノード100に接続されたディスプレイ41に画像を出力する。ディスプレイ41としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OELD:Organic Electro-Luminescence)ディスプレイなど各種のディスプレイを用いることができる。
入力信号処理部105は、ノード100に接続された入力デバイス42から入力信号を取得し、CPU101に通知する。入力デバイス42としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなど各種の入力デバイスを用いることができる。また、ノード100には複数の種類の入力デバイスが接続されてもよい。
読み取り装置106は、記録媒体43に記録されたプログラムやデータを読み取るメディアインタフェースである。記録媒体43として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体43として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置106は、例えば、CPU101からの命令に従って、記録媒体43から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク30を介してクライアント装置31や他のノードと通信を行う。通信インタフェース107は、ケーブルが接続される有線通信インタフェースでもよいし、電波や光などの伝送媒体を用いてワイヤレスで通信を行う無線通信インタフェースであってもよい。
ただし、ノード100は読み取り装置106を備えなくてもよく、ノード100に対するユーザ操作がクライアント装置31などの他の装置から行える場合には画像信号処理部104や入力信号処理部105を備えなくてもよい。また、ディスプレイ41や入力デバイス42は、ノード100の筐体と一体に形成されていてもよいし、ワイヤレスで接続されていてもよい。クライアント装置31やノード100−1〜100−6も、上記と同様のハードウェアによって実現できる。
なお、CPU101は第1の実施の形態の制御部24の一例、RAM102は第1の実施の形態のメモリ21の一例、HDD103は第1の実施の形態の記憶装置22の一例、通信インタフェース107は第1の実施の形態の受信部23の一例である。
図6は、各ノードの機能例を示すブロック図である。ノード100は、データ記憶部110、ログ記憶部120、ログバッファ130、ノード情報記憶部140、アクセス処理部151、命令実行部152、ログ生成部153、ログ管理部154、ノード監視部155および冗長回復部160を有する。冗長回復部160は、マスタ回復部161、スレーブ回復部162およびデータ追加部163を有する。
データ記憶部110は、HDD103に確保される不揮発性の記憶領域である。データ記憶部110は、キーと値(バリュー)の組であるキーバリュー形式のデータレコードを記憶する。データ記憶部110は、キーに応じて複数の記憶領域に分割されている。例えば、キーが近いデータレコード同士が、近い位置に記憶される。
ログ記憶部120は、HDD103に確保される不揮発性の記憶領域である。ログ記憶部120は、他のノードから受信されデータ記憶部110に未反映である書き込み命令のログを記憶する。ログ記憶部120は、データ記憶部110の記憶領域に対応して複数の記憶領域に分割されている。例えば、データ記憶部110上で近い位置に書き込まれるデータレコードについての書き込み命令のログ(例えば、キーが近いデータレコードの書き込み命令のログ)が、ログ記憶部120の同じ記憶領域に纏めて記憶される。
ログバッファ130は、RAM102に確保される揮発性の記憶領域である。ログバッファ130は、他のノードから受信されログ記憶部120に保存していないログを一時的に蓄積する。ログバッファ130は、ログ記憶部120の記憶領域に対応して複数のバッファ領域に分割されている。例えば、データ記憶部110上で近い位置に書き込まれるデータレコードについての書き込み命令のログ(例えば、キーが近いデータレコードの書き込み命令のログ)が、ログバッファ130の同じバッファ領域に纏めて蓄積される。
ノード情報記憶部140は、RAM102またはHDD103に確保される記憶領域である。ノード情報記憶部140は、ノード100,100−1〜100−6に対するデータの割り当てを示すノード情報を記憶する。例えば、ノード情報は、キーのハッシュ値の区間とマスタノードとの対応関係を示す。図3で説明した方法によってスレーブノードが決定される場合、あるデータのマスタノードとハッシュ空間上でのノードの順序から、当該データのスレーブノードを求めることができる。よって、ノード情報は、キーのハッシュ値の区間とスレーブノードとの対応関係を示す情報を含まなくてもよい。
アクセス処理部151は、クライアント装置31からのアクセスとしてのデータ操作命令を、クライアント装置31または他のノードからネットワーク30を介して受信する。データ操作命令の種類には、キーを指定した読み出し命令(リード命令)や、キーと値を指定した書き込み命令(ライト命令)が含まれる。アクセス処理部151は、データ操作命令で指定されたキーからハッシュ値を算出し、ノード情報記憶部140に記憶されたノード情報を参照して、そのデータ操作命令を実行すべきマスタノードを検索する。検索されたマスタノードがノード100である場合、アクセス処理部151は、データ操作命令を命令実行部152に出力する。一方、検索されたマスタノードが他ノードである場合、アクセス処理部151は、データ操作命令を検索されたマスタノードに転送する。
命令実行部152は、アクセス処理部151から取得したデータ操作命令を実行し、実行結果を示す応答メッセージをクライアント装置31に送信する。すなわち、データ操作命令が読み出し命令である場合、命令実行部152は、指定されたキーが示すデータをデータ記憶部110から読み出し、読み出したデータをクライアント装置31に送信する。データ操作命令が書き込み命令である場合、命令実行部152は、指定されたキーに応じてデータ記憶部110の記憶領域を選択し、選択した記憶領域にキーと対応付けて値を書き込む。このとき、命令実行部152は、データ記憶部110のデータ構造によって、値と共にキーを書き込むこともあるし書き込まないこともある。
ログ生成部153は、命令実行部152が書き込み命令を実行したとき、実行された書き込み命令を示すログ(例えば、キーと値の組を示すログ)を生成する。また、ログ生成部153は、ノード情報記憶部140に記憶されたノード情報を参照して、書き込まれたデータに関するスレーブノードを検索する。そして、ログ生成部153は、生成したログを、ネットワーク30を介してスレーブノードに送信する。
なお、以上の説明ではログとして書き込み命令を示すログを送信することとしたが、書き込み命令を示すログに加えて読み出し命令などの他の命令を示すログも送信するようにしてもよい。また、ログ生成部153がログを送信するタイミングは、命令実行部152がデータ操作命令の実行結果を示す応答メッセージをクライアント装置31に送信する前でもよいし送信した後でもよい。また、ログ生成部153は、書き込み命令を示すログのコピーを、ノード100に記憶しておくようにしてもよい。
ログ管理部154は、他ノードが送信した書き込み命令のログを受信する。ログ管理部154は、書き込み命令で指定されたキーに応じてログバッファ130のバッファ領域を選択し、選択したバッファ領域にログを追記する。すなわち、ログ管理部154は、受信されたログをすぐにHDD103に書き込まずにRAM102に一時的に蓄積する。
また、ログ管理部154は、所定の条件が満たされたとき、ログバッファ130の何れかのバッファ領域に蓄積されたログを、当該バッファ領域に対応するログ記憶部120の記憶領域に纏めて書き込む。ログ記憶部120に書き込んだログは、ログバッファ130から削除してよい。1回のログ記憶部120への書き込みでは、複数回に分けて受信された複数の書き込み命令分のログを、纏めてシーケンシャルに書き込むことが可能である。所定の条件には、何れかのバッファ領域に蓄積されたログの量が閾値に達したことが含まれる。また、所定の条件には、ノード100の負荷(例えば、CPU使用率やHDD103のIO(Input/Output)頻度)が閾値未満になったことが含まれる。
なお、ノード100がマスタ処理を担当するデータに関して、マスタノードにもログを保存する場合、ログ生成部153がログバッファ130またはログ記憶部120にログを書き込んでもよい。その場合、ログ生成部153は、ログバッファ130またはログ記憶部120から当該ログを読み出してスレーブノードに転送してもよい。また、ノード100がスレーブ処理を担当するデータに関して、ログバッファ130またはログ記憶部120に格納されたログをログ管理部154が更に他のノードに転送することもできる。
アクセス処理部151、命令実行部152およびログ生成部153の処理は、マスタ処理に相当する。また、ログ管理部154の処理は、スレーブ処理に相当する。好ましくは、ノード100におけるマスタ処理の優先度を高くし、スレーブ処理の優先度を低くする。また、マスタ処理のCPU使用率やマスタ処理のIO頻度が低いタイミングで、ログ記憶部120へのログの書き込みが行われることが好ましい。
ノード監視部155は、分散データ管理に参加する他のノード(ノード100−1〜100−6)が正常に稼働しているか監視する。例えば、ノード監視部155は、定期的に他のノードにメッセージを送信し、メッセージの送信から一定時間内に応答を得られないノードを障害が発生したノードと判定する。障害が発生したノードが検出されると、ノード監視部155は、図4で説明したような方法に従ってデータ配置を計算し、ノード情報記憶部140に記憶されたノード情報を更新する。
また、ノード監視部155は、障害の発生したノードが、ノード100がマスタ処理を担当しているデータのスレーブノードまたはノード100がスレーブ処理を担当しているデータのマスタノードであるとき、冗長回復部160に冗長性の回復を依頼する。
冗長回復部160は、ノード監視部155または他のノードからの依頼に応じて、障害が発生したノードに割り当てられていたデータの冗長性を回復する。
マスタ回復部161は、ノード100がスレーブ処理を担当しているデータのマスタノードに障害が発生したとき、故障したノードに代わってノード100がマスタノードになるよう制御する。また、マスタ回復部161は、正常な他の1つのノードが、ノード100に代わって新たなスレーブノードになるよう制御する。新たなスレーブノードは、例えば、図3,4で説明したような方法に従って決定することができる。
ノード100がマスタノードになるにあたり、マスタ回復部161は、ログ記憶部120からログを読み出し、ログが示す書き込み命令を再実行することでデータ記憶部110にデータを書き込む。複数の書き込み命令分のログは、データ記憶部110の記憶領域に対応するように分類されている。このため、ログ記憶部120の記憶領域単位でログを読み出して再実行すれば、データ記憶部110のできる限り近い位置へのデータの書き込みを連続して行うことができ、HDD103へのアクセスを効率化できる。
また、新たなスレーブノードを設定するにあたり、マスタ回復部161は、ログ適用前のデータ記憶部110に記憶された関係するデータとログ記憶部120に記憶されたログを、新たなスレーブノードに送信する。ただし、マスタ回復部161は、ログ適用前のデータとログに代えて、ログ適用後のデータを新たなスレーブノードに送信してもよい。
なお、マスタ回復部161は、複数の書き込み命令を再実行する前に、それらの書き込み命令を最適化してもよい。例えば、同じキーを指定した2以上の書き込み命令がログに含まれている場合、それら2以上の書き込み命令のうち最後に実行された1つのみを残して他の書き込み命令を消去してもよい。書き込み命令の最適化は、ログ管理部154がログバッファ130からログ記憶部120にログを移動するときに行ってもよい。また、マスタ回復部161は、マスタノードが故障する前であっても、ノード100の負荷が低いときに、ログ記憶部120に記憶されたログをデータ記憶部110に反映させてもよい。
スレーブ回復部162は、ノード100がマスタ処理を担当しているデータのスレーブノードに障害が発生したとき、故障したノードに代わって正常な他の1つのノードが新たなスレーブノードになるよう制御する。新たなスレーブノードは、例えば、図3,4で説明したような方法に従って決定することができる。スレーブ回復部162は、データ記憶部110に記憶された関係するデータを新たなスレーブノードに送信する。
データ追加部163は、他のノードからの依頼に応じて、ノード100が新たなスレーブノードになるよう制御する。データ追加部163は、新たなマスタノード(旧スレーブノード)から古いデータと書き込み命令のログを受信すると、古いデータをデータ記憶部110に書き込み、書き込み命令のログをログ記憶部120(またはログバッファ130)に書き込む。そして、データ追加部163は、ログが示す書き込み命令を再実行してデータ記憶部110上に最新のデータを再現する。また、データ追加部163は、マスタノードから最新のデータを受信すると、最新のデータをデータ記憶部110に書き込む。
なお、アクセス処理部151、命令実行部152、ログ生成部153、ログ管理部154、ノード監視部155および冗長回復部160は、CPU101に実行させるプログラムのモジュールとして実現することができる。ただし、これらモジュールの機能の一部または全部を、特定用途の集積回路を用いて実現してもよい。また、ノード100−1〜100−6も、ノード100と同様のモジュールを有する。
図7は、ノード管理テーブルの例を示す図である。ノード管理テーブル141は、ノード情報記憶部140に記憶されている。ノード管理テーブル141は、ハッシュ値とノードID(Identification)の項目を含む。ハッシュ値の項目には、ハッシュ空間上でのハッシュ値の区間が登録される。ノードIDの項目には、キーのハッシュ値が当該区間に属するようなデータのマスタ処理を担当するノード(マスタノード)の識別情報が登録される。ノードの識別情報として、IPアドレスなどの通信アドレスを用いてもよい。
データ操作命令で指定されるキーに対して所定のハッシュ関数を適用してハッシュ値を算出すと、ノード管理テーブル141から、当該データ操作命令を実行するべきマスタノードを検索することができる。また、図3で説明したような方法に従ってスレーブノードが決定されている場合、ノード管理テーブル141を参照して、検索されたマスタノードの1つ後ろのノードをスレーブノードとして特定することができる。
図8は、マスタ処理の手順例を示すフローチャートである。ここでは、ノード100がマスタ処理を実行する場合を考えてマスタ処理の手順を説明する。ノード100は、アクセスを受信する毎に図8に示すマスタ処理を実行する。ノード100−1〜100−6においてもノード100と同様のマスタ処理が実行される。
(S11)アクセス処理部151は、クライアント装置31からのアクセスとしてのデータ操作命令を、クライアント装置31または他のノードから受信する。
(S12)アクセス処理部151は、データ操作命令で指定されたキーのハッシュ値を算出し、ノード情報記憶部140に記憶されたノード管理テーブル141からハッシュ値に対応するマスタノードを検索する。そして、アクセス処理部151は、検索されたマスタノードが自ノード(ノード100)であるか判断する。マスタノードが自ノードである場合は処理をS13に進め、自ノードでない場合は処理をS17に進める。
(S13)命令実行部152は、データ操作命令を実行する。データ操作命令が読み出し命令である場合、命令実行部152は、読み出し命令で指定されたキーをもつデータをデータ記憶部110から読み出す。データ操作命令が書き込み命令である場合、命令実行部152は、キーに応じたデータ記憶部110の記憶領域を選択し、選択した記憶領域に書き込み命令で指定されたキーと値の組を書き込む。
(S14)命令実行部152は、データ操作命令の実行結果を示す応答メッセージを、クライアント装置31に送信する。読み出し命令を実行した場合、命令実行部152は、読み出したデータを応答メッセージに含めて送信する。書き込み命令を実行した場合、命令実行部152は、書き込みの成否を示す情報を応答メッセージに含めて送信する。
(S15)ログ生成部153は、命令実行部152が実行したデータ操作命令が書き込み命令であるか判断する。書き込み命令である場合は処理をS16に進め、書き込み命令でない場合(例えば、読み出し命令である場合)はマスタ処理を終了する。なお、書き込みが失敗したときは、処理をS16に進めずにマスタ処理を終了してよい。
(S16)ログ生成部153は、命令実行部152が実行した書き込み命令を示すログを生成する。また、ログ生成部153は、ノード管理テーブル141を参照して、キーのハッシュ値に対応するスレーブノードを検索する。そして、ログ生成部153は、検索されたスレーブノードに生成したログを送信する。その後、マスタ処理を終了する。
(S17)アクセス処理部151は、検索されたマスタノードにアクセスとしてのデータ操作命令を転送する。そして、マスタ処理を終了する。
なお、前述のように、ログの生成および送信(S15,S16)は、クライアント装置31への応答メッセージの送信(S14)よりも前に実行してもよい。また、前述のように、ログに記録するデータ操作命令を書き込み命令に限定せず、読み出し命令などの他の種類のデータ操作命令をログに記録してもよい。その場合、ログを受信したスレーブノードがログから書き込み命令のみを抽出するようにしてもよい。
図9は、スレーブ処理の手順例を示すフローチャートである。ここでは、ノード100がスレーブ処理を実行する場合を考えてスレーブ処理の手順を説明する。ノード100は、図9に示すスレーブ処理を繰り返し実行する。ノード100−1〜100−6においてもノード100と同様のスレーブ処理が実行される。
(S21)ログ管理部154は、他ノードからログを受信したか判断する。ログを受信した場合は処理をS22に進め、ログを受信していない場合は処理をS24に進める。
(S22)ログ管理部154は、ログバッファ130に含まれる複数のバッファ領域の中から、ログで指定されているキーに対応するバッファ領域を選択する。
(S23)ログ管理部154は、選択したバッファ領域に受信したログを追加する。
(S24)ログ管理部154は、ログバッファ130に含まれる各バッファ領域について、当該バッファ領域に蓄積されているログの量(例えば、ログサイズまたはデータ操作命令の数)を確認する。そして、ログ管理部154は、ログ量が所定の閾値以上のバッファ領域が使用されているか判断する。条件を満たすバッファ領域が使用されている場合は処理をS26に進め、条件を満たすバッファ領域が使用されていない場合は処理をS25に進める。
(S25)ログ管理部154は、ノード100の負荷を測定し、負荷が所定の閾値未満であるか判断する。ノード100の負荷の指標値としては、例えば、CPU使用率やHDD103へのアクセス頻度などを用いることができる。ログ管理部154は、マスタ処理に伴う負荷を測定してもよい。ノード100の負荷が閾値未満の場合は処理をS26に進め、負荷が閾値以上である場合はスレーブ処理を終了する。
(S26)ログ管理部154は、ログバッファ130のバッファ領域を1つ選択する。ログ量が閾値以上のバッファ領域がある場合は、ログ量が閾値以上のバッファ領域を選択する。ログ量が閾値以上のバッファ領域がない場合は、任意のバッファ領域を選択してもよいし、ログ量が最も多いバッファ領域を選択するようにしてもよい。
(S27)ログ管理部154は、選択したバッファ領域に蓄積されているログをログ記憶部120に書き込む。このとき、複数のデータ操作命令分のログを纏めてシーケンシャルにログ記憶部120に書き込むことが可能である。ログ記憶部120に書き込んだログはログバッファ130から削除してよい。そして、スレーブ処理を終了する。
このように、ログ管理部154は、マスタノードからログを受信すると、受信したログをすぐにHDD103に書き込まずにRAM102に蓄積する。そして、ログ管理部154は、RAM102に蓄積されたログが多くなるかノード100の負荷が低くなるのを待って、複数のデータ操作命令分のログを纏めてHDD103に移動させる。
図10は、冗長回復の手順例を示すフローチャートである。ここでは、ノード100が他のノードの障害を検出した場合を考えて冗長回復の手順を説明する。ノード100−1〜100−6においてもノード100と同様の冗長回復が行われる。
(S31)ノード監視部155は、他ノードの障害を検出する。
(S32)ノード監視部155は、ノード情報記憶部140に記憶されたノード管理テーブル141を参照して、故障したノードが、ノード100がスレーブ処理を担当するデータについてのマスタノードであるか判断する。故障したノードがマスタノードである場合は処理をS33に進め、マスタノードでない場合は処理をS36に進める。
(S33)マスタ回復部161は、故障したマスタノードに代わってノード100がマスタノードになることを決定する。また、マスタ回復部161は、正常なノードの中から新たなスレーブノードを決定する。新たなスレーブノードは、例えば、図4で説明したように、ハッシュ空間上でノード100の1つ後ろに配置されたノード100−1とする。
(S34)マスタ回復部161は、データ記憶部110に記憶されている関係するデータとログ記憶部120に記憶されているログを、新たなスレーブノードに送信する。新たなスレーブノードでは、ログが適用される前の古いデータに対してログが示す書き込み命令を再実行することで最新のデータが再現される。
(S35)マスタ回復部161は、ログ記憶部120に記憶されたログが示す書き込み命令を再実行することで、故障したマスタノードに記憶されていた最新のデータをデータ記憶部110上に再現する。このとき、マスタ回復部161は、ログ記憶部120の記憶領域単位でログを再実行することで、データ記憶部110上の近い位置へのデータの書き込みを連続的に行うことができる。そして、処理をS39に進める。
なお、前述のように、まずデータ記憶部110に対してログを適用し(S35)、再現された最新のデータを新たなスレーブノードに送信するようにしてもよい。その場合、新たなスレーブノードではログを適用する処理を行わなくてよい。
(S36)ノード監視部155は、ノード管理テーブル141を参照して、故障したノードが、ノード100がマスタ処理を担当するデータについてのスレーブノードであるか判断する。故障したノードがスレーブノードである場合は処理をS37に進め、スレーブノードでない場合は処理をS39に進める。
(S37)スレーブ回復部162は、正常なノードの中から、故障したスレーブノードに代わる新たなスレーブノードを決定する。新たなスレーブノードは、例えば、ハッシュ空間上で故障したスレーブノードの1つ後ろに配置されたノードとする。
(S38)スレーブ回復部162は、データ記憶部110に記憶されている関係するデータを新たなスレーブノードに送信する。ノード100はマスタノードであることから、着目するデータについてデータ記憶部110には最新のデータが記憶されている。新たなスレーブノードでは、ノード100から送信された最新のデータが保存される。
(S39)ノード監視部155は、故障したノードを除外した後のデータ配置を計算してノード管理テーブル141を更新する。例えば、図4で説明したように、故障したノードのマスタ処理とスレーブ処理を、ハッシュ空間上で故障したノードの1つ後ろに位置するノードが引き継ぐ。また、例えば、故障したノードの1つ後ろのノードが担当していたスレーブ処理を、故障したノードの2つ後ろに位置するノードが引き継ぐ。
図11は、ノード間の第1の通信例を示す図である。ここでは、ノード100がキー=A,A1,A2のデータのマスタノードであり、ノード100−1がキー=A,A1,A2のデータのスレーブノードであるとする。また、データの冗長度は2であり、ノード100−2はキー=A,A1,A2のデータについてマスタ処理もスレーブ処理も担当していないとする。なお、図11では、ノード100が行う他のデータのスレーブ処理やノード100−1が行う他のデータのマスタ処理については説明を省略している。
ノード100は、キー=A,A1,A2を指定したデータ操作命令を受け付ける。例えば、ノード100は、キー=A1のデータに対する値=60の書き込み命令、キー=A2のデータに対する値=70の書き込み命令、キー=A1のデータに対する読み出し命令、キー=Aのデータに対する値=100の書き込み命令を順に受け付ける。すると、ノード100は、これらのデータ操作命令を順次実行する。これにより、ノード100のHDD103には、キーバリュー形式のデータとして、キー=Aに対応する値=100、キー=A1に対応する値=60、キー=A2に対応する値=70が記憶される。
また、ノード100は、実行された書き込み命令を示すログをノード100−1に順次送信する。例えば、ノード100は、キー=A1のデータに対する値=60の書き込み命令を示すログ、キー=A2のデータに対する値=70の書き込み命令を示すログ、キー=Aのデータに対する値=100の書き込み命令を示すログを、ノード100−1に順次送信する。キー=A1の読み出し命令を示すログは、ノード100−1に送信してもよいし送信しなくてもよい。
ノード100−1は、ノード100から受信したログをノード100−1のHDD103−1にはすぐに書き込まずに、ノード100−1のRAM102−1に一時的に蓄積する。そして、RAM102−1に蓄積されたログの量が閾値に達するか、または、ノード100−1の負荷が低くなったタイミングで、ノード100−1は、蓄積されたログを纏めてHDD103−1に移動する。例えば、ノード100−1は、キー=A1のデータに対する値=60の書き込み命令を示すログ、キー=A2のデータに対する値=70の書き込み命令を示すログ、キー=Aのデータに対する値=100の書き込み命令を示すログをHDD103−1に書き込む。
ここで、ノード100−1は、HDD103−1に保存したログを、ノード100が保持しているデータに対応するバックアップコピーにすぐには反映させない。ノード100がマスタ処理を担当しておりノード100に保存されている最新のデータと、ノード100−1がスレーブ処理を担当しておりノード100のデータに対応してノード100−1に保存されているデータであるバックアップコピーとが、一時的に同一でなくなる。すなわち、ノード100がもつキー=A,A1,A2のデータは最新である一方、ノード100−1がもつバックアップコピーは最新でない。ただし、ノード100−1は、HDD103−1に記憶されたログをバックアップコピーに適用することで、後で(例えば、ノード100に障害が発生したときに)最新のデータを復元することが可能である。
図12は、ノード間の第2の通信例を示す図である。ここでは、図11の状態でノード100に障害が発生した場合を考える。ノード100−1は、キー=A,A1,A2のデータのスレーブノードであることから、キー=A,A1,A2のデータのマスタノードであるノード100の故障を検出すると、これらデータの冗長性の回復を制御する。
ノード100−1は、ノード100に代わって自ノードがキー=A,A1,A2のデータのマスタノードになると決定する。すると、ノード100−1は、ノード100−1に代わってスレーブノードになるべきノード100−2に、キー=A,A1,A2のバックアップコピー(ログ適用前)とログを送信する。そして、ノード100−1は、古いバックアップコピーに対してログを適用し、ノード100がもっていた最新のデータを復元する。これにより、例えば、HDD103−1には、キー=Aに対応する値=100、キー=A1に対応する値=60、キー=A2に対応する値=70という最新のデータが復元される。
ノード100−2は、ノード100−1から古いバックアップコピーとログを受信すると、バックアップコピーに対してログを適用して最新のデータを復元する。これにより、例えば、ノード100−2のHDD103−2には、キー=Aに対応する値=100、キー=A1に対応する値=60、キー=A2に対応する値=70という最新のデータが復元される。以降、ノード100−2は、キー=A,A1,A2のデータのスレーブノードになる。ノード100−2のデータの復元は、ノード100−1のデータの復元と並列に行うことが可能である。
ただし、ノード100−1からノード100−2には、ノード100−1でログを適用した後の最新のデータを送信するようにしてもよい。また、上記の説明では、新たなスレーブノードであるノード100−2が最新のデータを復元するとしたが、最新のデータを復元せずに古いバックアップコピーとログを保持してもよい。その場合、例えば、ノード100−1が故障したときに最新のデータを復元すればよい。
図13は、ノード間の第3の通信例を示す図である。ここでは、図11の状態でノード100−1に障害が発生した場合を考える。ノード100は、キー=A,A1,A2のデータのマスタノードであることから、キー=A,A1,A2のデータのスレーブノードであるノード100−1の故障を検出すると、これらデータの冗長性の回復を制御する。
ノード100は、ノード100−1に代わってスレーブノードになるべきノード100−2に、キー=A,A1,A2の最新のデータを送信する。ノード100−2は、ノード100から受信した最新のデータを、ノード100−2のHDD103−2に記憶する。例えば、ノード100−2のHDD103−2に、キー=Aに対応する値=100、キー=A1に対応する値=60、キー=A2に対応する値=70という最新のデータが格納される。以降、ノード100−2は、キー=A,A1,A2のデータのスレーブノードになる。
以上、データの冗長度が2である(同じデータが2つのノードに記憶される)場合を例に、データの配置の変化を説明した。ただし、データの冗長度を3以上にすることも可能である。その場合、同じデータが記憶される3つ以上のノードのうち、何れか1つがマスタノードになり、残りの2つ以上のノードがスレーブノードになる。2つ以上のスレーブノードは、好ましくは、第1スレーブノード,第2スレーブノード,・・・のように順位付けされる。第1スレーブノードは、1つ上位のノード(当初のマスタノード)が故障したときに新たなマスタノードになる。第2スレーブノード以下のノードは、それより上位のノードの1つが故障したときに1つ上位のスレーブノードに繰り上がる。その際、最下位のスレーブノードが新たに割り当てられる。
図14は、他のデータ配置例を示す図である。ここでは、データの冗長度が3に設定されており、同じデータが3つのノードに重複して記憶される場合を考える。
各ノードは、図3の例と同様に、ハッシュ空間上で1つ前のノードとの間の区間に属するデータのマスタノードになる。そして、あるデータのマスタノードの1つ後ろに位置するノードが当該データの第1スレーブノードになり、あるデータのマスタノードの2つ後ろに位置するノードが当該データの第2スレーブノードになる。
例えば、h()をハッシュ関数とすると、区間h6<h(key)≦2L−1または0≦h(key)≦h0に属するデータAのマスタノードはノード100になり、データAの第1スレーブノードはノード100−1になり、データAの第2スレーブノードはノード100−2になる。また、区間h0<h(key)≦h1に属するデータBのマスタノードはノード100−1になり、データBの第1スレーブノードはノード100−2になり、データBの第2スレーブノードはノード100−3になる。また、区間h1<h(key)≦h2に属するデータCのマスタノードはノード100−2になり、データCの第1スレーブノードはノード100−3になり、データCの第2スレーブノードはノード100−4という具合になる。
図15は、ノード間の第4の通信例を示す図である。ここでは、ノード100がキー=A,A1,A2のデータのマスタノードであり、ノード100−1がキー=A,A1,A2のデータの第1スレーブノードであり、ノード100−2がキー=A,A1,A2のデータの第2スレーブノードである。また、データの冗長度は3であり、ノード100−3はキー=A,A1,A2のデータについてマスタ処理もスレーブ処理も担当していない。
ノード100は、冗長度が2の場合(図11に示した例)と同様に、キー=A,A1,A2のデータを指定したデータ操作命令を受け付け、これらのデータ操作命令を順次実行する。また、ノード100は、実行された書き込み命令を示すログを第1スレーブノードであるノード100−1に順次送信する。例えば、ノード100は、キー=A1のデータに対する値=60の書き込み命令を示すログ、キー=A2のデータに対する値=70の書き込み命令を示すログ、キー=Aのデータに対する値=100の書き込み命令を示すログを、ノード100−1に順次送信する。
ノード100−1は、冗長度が2の場合(図11に示した例)と同様に、ノード100から受信したログをノード100−1のHDD103−1にはすぐに書き込まずに、ノード100−1のRAM102−1に一時的に蓄積する。そして、RAM102−1に蓄積されたログの量が閾値に達するか、または、ノード100−1の負荷が低くなったタイミングで、ノード100−1は、蓄積されたログを纏めてHDD103−1に移動する。
また、ノード100−1は、ノード100から受信したログをコピーして、第2スレーブノードであるノード100−2に転送する。ただし、ノード100−1がノード100−2にログを転送する代わりに、ノード100がログをコピーしてノード100−1,100−2にそれぞれ送信するようにしてもよい。ノード100−2は、受信したログをノード100−2のHDD103−2にすぐには書き込まずに、ノード100−2のRAM102−2に一時的に蓄積する。そして、RAM102−2に蓄積されたログの量が閾値に達するか、または、ノード100−2の負荷が低くなったタイミングで、ノード100−2は、蓄積されたログを纏めてHDD103−2に移動する。
図16は、ノード間の第5の通信例を示す図である。ここでは、図15の状態でノード100に障害が発生した場合を考える。ノード100−1,100−2は、キー=A,A1,A2のデータのスレーブノードであることから、キー=A,A1,A2のデータのマスタノードであるノード100の故障を検出するとデータの冗長性の回復を制御する。
ノード100−1は、ノード100に代わって自ノードがキー=A,A1,A2のデータのマスタノードになると決定する。すると、ノード100−1は、古いバックアップコピーに対してログを適用し、ノード100がもっていた最新のデータを復元する。これにより、例えば、ノード100−1のHDD103−1には、キー=Aに対応する値=100、キー=A1に対応する値=60、キー=A2に対応する値=70という最新のデータが復元される。
ノード100−2は、ノード100−1に代わって自ノードがキー=A,A1,A2のデータの第1スレーブノードになると決定する。すると、ノード100−2は、ノード100−2に代わって第2スレーブノードになるべきノード100−3に、キー=A,A1,A2のバックアップコピー(ログ適用前)とログを送信する。このとき、ノード100−2は第2スレーブノードであったため、キー=A,A1,A2のデータのバックアップコピーやログをノード100−1から受信しなくてよい。そして、ノード100−2は、ノード100−1と同様、古いバックアップコピーに対してログを適用して最新のデータを復元することができる。これにより、例えば、ノード100−2のHDD103−2には、キー=Aに対応する値=100、キー=A1に対応する値=60、キー=A2に対応する値=70という最新のデータが復元される。
ノード100−3は、ノード100−2から古いバックアップコピーとログを受信すると、バックアップコピーに対してログを適用して最新のデータを復元することができる。これにより、例えば、ノード100−3のHDD103−3には、キー=Aに対応する値=100、キー=A1に対応する値=60、キー=A2に対応する値=70という最新のデータが復元される。ノード100−1〜100−3のデータ復元は、互いに並列に行うことができる。
ただし、第2スレーブノードであったノード100−2からノード100−3にバックアップコピーやログを送信する代わりに、第1スレーブノードであったノード100−1からノード100−3にバックアップコピーやログを送信してもよい。また、ノード100−2(または、ノード100−1)が最新のデータを復元してから、ノード100−3に最新のデータのコピーを送信してもよい。また、上記の説明では、第2スレーブノードから第1スレーブノードに変わったノード100−2が最新のデータを復元することとしたが、最新のデータを復元せずに古いバックアップコピーとログを保持してもよい。その場合、例えば、ノード100−1が故障したときに最新のデータを復元すればよい。同様に、ノード100−3が最新のデータを復元しないようにしてもよい。
第2の実施の形態の情報処理システムによれば、ノード100,100−1〜100−6がマスタ処理を分担するため、クライアント装置31からのアクセスの負荷が分散される。また、マスタ処理を行うノードと異なるノードがデータのバックアップコピーを管理してデータを冗長化しておくため、耐故障性が向上する。また、各ノードがマスタ処理とスレーブ処理を兼ねるため、コンピュータの処理能力を効率的に利用できる。
また、マスタノードで書き込み命令が実行されたとき、すぐにスレーブノードがもつバックアップコピーに書き込みを反映させるのではなく、スレーブノードにログが保存される。このため、スレーブ処理によるHDDへのランダムアクセスを減らし、マスタ処理の性能への影響を軽減することができる。更に、ログはマスタノードからスレーブノードに送信される毎にHDDに書き込まれるのではなくRAMに一時的に蓄積され、後で複数の書き込み命令分のログがシーケンシャルにHDDに書き込まれる。このため、スレーブ処理によるHDDへのランダムアクセスを更に減らすことができる。このように、ランダムアクセスが低速なHDDを用いてデータを管理していても、スレーブ処理の影響でマスタ処理の性能が低下することを抑制し、スループットを向上させることができる。
なお、前述のように、第1の実施の形態の情報処理は、ノード10,20にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、クライアント装置31やノード100,100−1〜100−6にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体43)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からHDDなどの他の記録媒体(例えば、HDD103)にプログラムを複製して(インストールして)実行してもよい。
10,20 ノード
21 メモリ
22 記憶装置
23 受信部
24 制御部

Claims (6)

  1. 第1のデータ集合が割り当てられた第1のノードと、第2のデータ集合が割り当てられると共に前記第1のデータ集合のバックアップコピーを管理する第2のノードとを備えるシステムにおいて、前記第2のノードとして用いられるコンピュータに、
    前記第1のデータ集合に属するデータに対して実行された命令を示すログを前記第1のノードから受信し、受信したログを前記コンピュータが備えるメモリに格納し、
    前記コンピュータの負荷が閾値未満であるときに、前記メモリに蓄積された複数の命令分のログを前記コンピュータが備える前記メモリと異なる記憶装置に書き込む、
    処理を実行させるプログラム。
  2. 第1のデータ集合が割り当てられた第1のノードと、第2のデータ集合が割り当てられると共に前記第1のデータ集合のバックアップコピーを管理する第2のノードとを備えるシステムにおいて、前記第2のノードとして用いられるコンピュータに、
    前記第1のデータ集合に属するデータに対して実行された命令を示すログを前記第1のノードから受信し、受信したログを前記コンピュータが備えるメモリに格納し、
    前記メモリに蓄積されたログの量が閾値以上になったときに、前記メモリに蓄積された複数の命令分のログを前記コンピュータが備える前記メモリと異なる記憶装置に書き込む、
    処理を実行させるプログラム。
  3. 第1のデータ集合が割り当てられた第1のノードと、第2のデータ集合が割り当てられると共に前記第1のデータ集合のバックアップコピーを管理する第2のノードとを備えるシステムにおいて、前記第2のノードとして用いられるコンピュータに、
    前記第1のデータ集合に属するデータに対して実行された命令を示すログを前記第1のノードから受信し、受信したログが示す命令によって指定されたデータのキーに応じて、当該受信したログを前記コンピュータが備えるメモリに設けられた複数のバッファ領域の何れか1つに格納し、
    所定の条件が満たされたタイミングで、バッファ領域単位で、前記メモリに蓄積された複数の命令分のログを前記コンピュータが備える前記メモリと異なる記憶装置に書き込む、
    処理を実行させるプログラム。
  4. 第1のデータ集合が割り当てられた第1のノードと、第2のデータ集合が割り当てられると共に前記第1のデータ集合のバックアップコピーを管理する第2のノードとを備えるシステムにおいて、前記第2のノードとして用いられるコンピュータに、
    前記第1のデータ集合に属するデータに対して実行された命令を示すログを前記第1のノードから受信し、受信したログを前記コンピュータが備えるメモリに格納し、
    所定の条件が満たされたタイミングで、前記メモリに蓄積された複数の命令分のログを前記コンピュータが備える前記メモリと異なる記憶装置に書き込み
    前記第1のノードの障害を検出し、
    前記障害が検出されると、前記記憶装置に書き込まれたログまたは当該ログに基づいて復元された前記第1のデータ集合を第3のノードに送信することで、前記第3のノードに前記第1のデータ集合のバックアップコピーを管理させる、
    処理を実行させるプログラム。
  5. 第1のデータ集合が割り当てられた第1のノードと、第2のデータ集合が割り当てられると共に前記第1のデータ集合のバックアップコピーを管理する第2のノードとを備えるシステムが実行するデータ管理方法であって、
    前記第1のデータ集合に属するデータに対して実行された命令を示すログを前記第1のノードから前記第2のノードに送信し、
    送信されたログを前記第2のノードが備えるメモリに格納し、
    前記第2のノードの負荷が閾値未満であるときに、前記メモリに蓄積された複数の命令分のログを前記第2のノードが備える前記メモリと異なる記憶装置に書き込む、
    データ管理方法。
  6. 第1のデータ集合が割り当てられた第1のノードと、第2のデータ集合が割り当てられると共に前記第1のデータ集合のバックアップコピーを管理する第2のノードとを備えるシステムにおいて、前記第2のノードとして用いられる情報処理装置であって、
    メモリと、
    前記メモリと異なる記憶装置と、
    前記第1のデータ集合に属するデータに対して実行された命令を示すログを前記第1のノードから受信する受信部と、
    受信したログを前記メモリに格納し、前記情報処理装置の負荷が閾値未満であるときに、前記メモリに蓄積された複数の命令分のログを前記記憶装置に書き込む制御部と、
    を有する情報処理装置。
JP2012278390A 2012-12-20 2012-12-20 プログラム、データ管理方法および情報処理装置 Expired - Fee Related JP6056453B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012278390A JP6056453B2 (ja) 2012-12-20 2012-12-20 プログラム、データ管理方法および情報処理装置
US14/071,051 US20140181035A1 (en) 2012-12-20 2013-11-04 Data management method and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012278390A JP6056453B2 (ja) 2012-12-20 2012-12-20 プログラム、データ管理方法および情報処理装置

Publications (2)

Publication Number Publication Date
JP2014123218A JP2014123218A (ja) 2014-07-03
JP6056453B2 true JP6056453B2 (ja) 2017-01-11

Family

ID=50975862

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012278390A Expired - Fee Related JP6056453B2 (ja) 2012-12-20 2012-12-20 プログラム、データ管理方法および情報処理装置

Country Status (2)

Country Link
US (1) US20140181035A1 (ja)
JP (1) JP6056453B2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014229088A (ja) * 2013-05-23 2014-12-08 ソニー株式会社 データ処理システム、データ処理装置および記憶媒体
US9459970B2 (en) 2014-05-19 2016-10-04 Netapp, Inc. Performance during playback of logged data storage operations
CN105991325B (zh) * 2015-02-10 2019-06-21 华为技术有限公司 处理至少一个分布式集群中的故障的方法、设备和系统
US9785480B2 (en) * 2015-02-12 2017-10-10 Netapp, Inc. Load balancing and fault tolerant service in a distributed data system
JP6322161B2 (ja) * 2015-06-22 2018-05-09 日本電信電話株式会社 ノード、データ救済方法およびプログラム
US10452680B1 (en) 2015-09-25 2019-10-22 Amazon Technologies, Inc. Catch-up replication with log peer
US9733869B1 (en) 2015-09-25 2017-08-15 Amazon Technologies, Inc. Provisioning a slave for data storage using metadata with updated references
US9753813B1 (en) 2015-09-25 2017-09-05 Amazon Technologies, Inc. Data replication snapshots for persistent storage using operation numbers
JP2017068342A (ja) * 2015-09-28 2017-04-06 富士通株式会社 制御プログラム、制御方法、及び、情報処理装置
KR101797482B1 (ko) * 2016-04-22 2017-11-14 주식회사 티맥스데이터 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램
JP6674099B2 (ja) * 2016-06-10 2020-04-01 富士通株式会社 情報管理プログラム、情報管理方法、及び情報管理装置
JP6697158B2 (ja) * 2016-06-10 2020-05-20 富士通株式会社 情報管理プログラム、情報管理方法、及び情報管理装置
CN111314479B (zh) * 2016-06-20 2022-08-23 北京奥星贝斯科技有限公司 一种数据处理方法和设备
JP6653230B2 (ja) * 2016-09-01 2020-02-26 日本電信電話株式会社 通信管理装置、通信管理方法、および、通信管理プログラム
JP2018142129A (ja) * 2017-02-27 2018-09-13 富士通株式会社 情報処理システム、情報処理方法、及び情報処理装置
US10673943B2 (en) 2018-05-02 2020-06-02 Commvault Systems, Inc. Network storage backup using distributed media agents
US11249863B2 (en) 2018-05-02 2022-02-15 Commvault Systems, Inc. Backup-based media agent configuration
US11321183B2 (en) 2018-05-02 2022-05-03 Commvault Systems, Inc. Multi-tiered backup indexing
JP6859293B2 (ja) * 2018-07-13 2021-04-14 Kddi株式会社 データ管理システム、データ管理方法及びデータ管理プログラム
WO2020100271A1 (ja) * 2018-11-16 2020-05-22 三菱電機株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US10970335B2 (en) * 2019-03-18 2021-04-06 Vmware, Inc. Access pattern-based distribution for distributed key-value stores
US11263173B2 (en) * 2019-07-30 2022-03-01 Commvault Systems, Inc. Transaction log index generation in an enterprise backup system
KR20220170301A (ko) * 2021-06-22 2022-12-29 현대자동차주식회사 차량 영상 제어 장치 및 그 방법
KR20230015201A (ko) * 2021-07-22 2023-01-31 현대자동차주식회사 차량 영상 제어 장치 및 그 방법

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0145470B1 (ko) * 1995-07-13 1998-08-17 김광호 반도체 메모리 카드의 데이타 기록장치 및 방법
JP2000149046A (ja) * 1998-09-04 2000-05-30 Sony Corp 曲線生成装置及び方法、プログラムを格納した記録媒体、並びに対応点設定方法
JP3763992B2 (ja) * 1999-03-30 2006-04-05 富士通株式会社 データ処理装置及び記録媒体
US7069298B2 (en) * 2000-12-29 2006-06-27 Webex Communications, Inc. Fault-tolerant distributed system for collaborative computing
GB2366891B (en) * 2001-12-06 2002-11-20 Appsense Ltd Improvements in and relating to computer apparatus terminal server apparatus & performance management methods therefor
JP2003316522A (ja) * 2002-04-26 2003-11-07 Hitachi Ltd 計算機システムおよび計算機システムの制御方法
JP4497944B2 (ja) * 2003-02-05 2010-07-07 キヤノン株式会社 受信装置及び受信装置の制御方法
US20050195206A1 (en) * 2004-03-04 2005-09-08 Eric Wogsberg Compositing multiple full-motion video streams for display on a video monitor
JP4222251B2 (ja) * 2004-04-27 2009-02-12 ソニー株式会社 バス調停装置およびバス調停方法
US20060143454A1 (en) * 2004-05-27 2006-06-29 Silverbrook Research Pty Ltd Storage of multiple keys in memory
JP4376750B2 (ja) * 2004-10-14 2009-12-02 株式会社日立製作所 計算機システム
JP4671399B2 (ja) * 2004-12-09 2011-04-13 株式会社日立製作所 データ処理システム
US7461230B1 (en) * 2005-03-31 2008-12-02 Symantec Operating Corporation Maintaining spatial locality of write operations
JP4774915B2 (ja) * 2005-10-26 2011-09-21 カシオ計算機株式会社 撮像装置、階調補正方法及びプログラム
US8661216B2 (en) * 2005-12-19 2014-02-25 Commvault Systems, Inc. Systems and methods for migrating components in a hierarchical storage network
US20070294319A1 (en) * 2006-06-08 2007-12-20 Emc Corporation Method and apparatus for processing a database replica
US20070288526A1 (en) * 2006-06-08 2007-12-13 Emc Corporation Method and apparatus for processing a database replica
TWI350454B (en) * 2007-12-10 2011-10-11 Phison Electronics Corp Anti-attacking method for private key, controller and storage device executing the same
JP5034955B2 (ja) * 2008-01-08 2012-09-26 富士通株式会社 性能評価シミュレーション装置、性能評価シミュレーション方法および性能評価シミュレーションプログラム
EP2083532B1 (en) * 2008-01-23 2013-12-25 Comptel Corporation Convergent mediation system with improved data transfer
EP2107464A1 (en) * 2008-01-23 2009-10-07 Comptel Corporation Convergent mediation system with dynamic resource allocation
JP4934073B2 (ja) * 2008-01-31 2012-05-16 株式会社リコー 画像処理装置及び画像処理方法
JP4884412B2 (ja) * 2008-03-12 2012-02-29 京セラ株式会社 携帯端末
JP5317690B2 (ja) * 2008-12-27 2013-10-16 株式会社東芝 メモリシステム
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
JP5198245B2 (ja) * 2008-12-27 2013-05-15 株式会社東芝 メモリシステム
JP5376983B2 (ja) * 2009-02-12 2013-12-25 株式会社東芝 メモリシステム
JP5201415B2 (ja) * 2009-03-05 2013-06-05 富士通株式会社 ログ情報発行装置、ログ情報発行方法およびプログラム
JP4966327B2 (ja) * 2009-03-17 2012-07-04 株式会社東芝 情報処理装置及び省電力設定方法
JP5347657B2 (ja) * 2009-03-31 2013-11-20 富士通株式会社 データ記憶プログラム、方法、及び情報処理装置
US9294946B2 (en) * 2010-08-27 2016-03-22 Qualcomm Incorporated Adaptive automatic detail diagnostic log collection in a wireless communication system
US8572031B2 (en) * 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US9141527B2 (en) * 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
JP5701398B2 (ja) * 2011-11-16 2015-04-15 株式会社日立製作所 計算機システム、データ管理方法及びプログラム
US8930309B2 (en) * 2012-02-29 2015-01-06 Symantec Corporation Interval-controlled replication
WO2013136520A1 (ja) * 2012-03-16 2013-09-19 株式会社 日立製作所 情報処理システム及び情報処理システムの制御方法
US9063892B1 (en) * 2012-03-31 2015-06-23 Emc Corporation Managing restore operations using data less writes
US9246996B1 (en) * 2012-05-07 2016-01-26 Amazon Technologies, Inc. Data volume placement techniques
US9135262B2 (en) * 2012-10-19 2015-09-15 Oracle International Corporation Systems and methods for parallel batch processing of write transactions
US9021188B1 (en) * 2013-03-15 2015-04-28 Virident Systems Inc. Small block write operations in non-volatile memory systems

Also Published As

Publication number Publication date
US20140181035A1 (en) 2014-06-26
JP2014123218A (ja) 2014-07-03

Similar Documents

Publication Publication Date Title
JP6056453B2 (ja) プログラム、データ管理方法および情報処理装置
US8458398B2 (en) Computer-readable medium storing data management program, computer-readable medium storing storage diagnosis program, and multinode storage system
US8825968B2 (en) Information processing apparatus and storage control method
US20200012442A1 (en) Method for accessing distributed storage system, related apparatus, and related system
US8386707B2 (en) Virtual disk management program, storage device management program, multinode storage system, and virtual disk managing method
US20130054727A1 (en) Storage control method and information processing apparatus
JP4911198B2 (ja) ストレージ制御装置、ストレージシステムおよびストレージ制御方法
CN107924334B (zh) 弹性命名分布式循环缓冲区的重新平衡和弹性存储方案
JP4322240B2 (ja) 再起動方法、システム及びプログラム
US9891992B2 (en) Information processing apparatus, information processing method, storage system and non-transitory computer readable storage media
US10025521B2 (en) Obtaining additional data storage from another data storage system
US20150135004A1 (en) Data allocation method and information processing system
US8276017B2 (en) Process, apparatus, and program for system management
JP2013161383A (ja) 情報処理装置、情報処理方法、プログラム及び情報処理システム
JP2006146661A (ja) レプリケーションシステム、方法、レプリカストレージ、およびプログラム
KR101589122B1 (ko) 네트워크 분산 파일 시스템 기반 iSCSI 스토리지 시스템에서의 장애 복구 방법 및 시스템
US10866756B2 (en) Control device and computer readable recording medium storing control program
KR20160101705A (ko) 공정 관리 장치, 이와 연동하는 데이터 서버를 포함하는 반도체 공정 관리 시스템 및 이를 이용한 반도체 공정 관리 방법
US9430489B2 (en) Computer, data storage method, and information processing system
JPWO2008126169A1 (ja) ストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置
JP2010277342A (ja) 管理プログラム、管理装置および管理方法
JP6736932B2 (ja) 情報処理システム、ストレージ装置、情報処理方法及びプログラム
JP2023110180A (ja) ストレージ装置および制御方法
JP2015212855A (ja) インメモリ管理システムおよびインメモリ管理用プログラム
JP2018169772A (ja) ディザスタリカバリシステム、ディザスタリカバリ方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160804

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161121

R150 Certificate of patent or registration of utility model

Ref document number: 6056453

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees