JP3808874B2 - 分散システム及び多重化制御方法 - Google Patents

分散システム及び多重化制御方法 Download PDF

Info

Publication number
JP3808874B2
JP3808874B2 JP2004071494A JP2004071494A JP3808874B2 JP 3808874 B2 JP3808874 B2 JP 3808874B2 JP 2004071494 A JP2004071494 A JP 2004071494A JP 2004071494 A JP2004071494 A JP 2004071494A JP 3808874 B2 JP3808874 B2 JP 3808874B2
Authority
JP
Japan
Prior art keywords
processing
processing elements
computers
computer
execution state
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 - Lifetime
Application number
JP2004071494A
Other languages
English (en)
Other versions
JP2005258946A (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.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
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 Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2004071494A priority Critical patent/JP3808874B2/ja
Priority to US11/069,973 priority patent/US7620845B2/en
Priority to DE602005003490T priority patent/DE602005003490T8/de
Priority to EP05005136A priority patent/EP1574956B1/en
Priority to CNB2005100538833A priority patent/CN100380364C/zh
Publication of JP2005258946A publication Critical patent/JP2005258946A/ja
Application granted granted Critical
Publication of JP3808874B2 publication Critical patent/JP3808874B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • G06F11/184Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、ネットワーク接続されたコンピュータに代表される、相互に通信可能なN個(Nは4以上の整数)の処理要素によって処理が多重化される分散システム及び多重化制御方法に関する。
近年、コンピュータ技術やネットワーク技術の向上は目覚ましく、これに伴って、業務のコンピュータ処理化が広く行われている。しかし、業務の内容によっては、コンピュータの故障などによる中断が許されないものも多い。そこで最近では、複数のコンピュータをネットワークで結合した分散システムを構築することが一般的になりつつある。また、1つのコンピュータ上で並列に動作する、相互に通信が可能な複数の処理要素(処理実行単位)を用いて構築される分散システムも知られている。この処理要素としては、例えばオペレーティングシステム(OS)上で動作し、共通のインタフェースを介してメッセージまたはパケットを授受することにより相互に通信を行うプロセスが知られている。ここでは、複数のコンピュータをネットワークで結合した分散システムを例に説明する。
分散システムの運用手法の1つとして、コンピュータの処理の多重化が知られている。分散システムでは、各コンピュータが独立に故障する可能性がある。仮に、1つのコンピュータが故障しただけでシステム全体が機能しないシステムでは、システムの稼働率は、1台のコンピュータの稼働率よりも低くなってしまう。かかる事態を防止するために、システム全体に係わる処理は多重化することが必要である。逆に、多重化することによって、分散システムの稼働率を1台のコンピュータの稼働率よりも高くすることが可能である。例えば、稼働率99パーセントのコンピュータ10台で構成する分散システムが、全く多重化されていないとすると、その分散システムの稼働率は90%程度である。もし、これが多重化によって3台の故障まで耐え得るとすると、稼働率は、99.9998%程度となる。
[フェイルオーバ方式]
分散システムにおいて、コンピュータの処理を多重化する方式として、コンピュータの故障を検出したら、別のコンピュータでその処理を引き継ぐ方式が従来から知られている。この方式をフェイルオーバ方式と呼ぶ。
フェイルオーバ方式では、コンピュータの故障を検出するのに、コンピュータ間で定期的に通信し合い、お互いの動作状況を確認し合う方法が一般的に行われている。この通信のことを「ハートビート」と呼ぶ。コンピュータの故障停止は、ハートビートのタイムアウトによって検出される。つまり一定時間ハートビートが送出されていないコンピュータは故障停止したものとみなされる。
フェイルオーバ方式を適用する分散システムにおいては、スプリットブレインの発生が問題となる。スプリットブレインとは、実行のコンテキスト(状態)が2つ以上に分かれてしまうことを指す。スプリットブレインは、故障検出が誤って行われたときに発生する。例えば、分散システムを構成するコンピュータが、2つのコンピュータグループの間で互いに通信できない状態となった場合(network partitioning: ネットワーク分割)、両コンピュータグループは、互いに相手の故障を検出する。この場合、両コンピュータグループは独立して動作を始めることから、スプリットブレインに陥る。或いは、異常な高負荷のために、あるコンピュータのハートビートの送信が一時的に中断して故障が検出され、その後、そのコンピュータが動作を再開した後も、スプリットブレインに陥る可能性がある。
多重化された処理は、一般に分散システムの中で重要な処理である。そのため、スプリットブレインが起きると、その処理に一貫性がなくなり、システム全体に致命的な影響を及ぼす。
[多数決方式]
フェイルオーバ方式でのスプリットブレインの問題を根源的に解決するための方式として、多数決を用いた方式(多数決方式)が知られている。この方式は、多重化した全てのコンピュータで同一の処理を実行し、全体の過半数(majority)を占めるコンピュータの動作を一致(同期化)させることができるならば、他のコンピュータの動作に関係なく、処理を継続するものである。この方式では、スプリットブレインを原理的に回避できる。
例えば、3台のコンピュータX,Y,Zで処理を多重化(3重化)している場合で、2台のコンピュータX,YのグループAと、1台のコンピュータZのグループBにネットワーク分割となったものとする。この場合でも、グループAでの処理は動き続ける。これに対し、グループBでの処理は中断する。ここでの中断とは、自身を含めて動作を一致させることができるコンピュータの数が過半数となるまで、処理を先に進めない状態をいう。
また、コンピュータZが異常な高負荷でハングアップしたものとすると、残りの過半数を占めるコンピュータグループ(ここではグループA)での処理は、当該コンピュータZに関係なく継続される。コンピュータZが回復したとき、当該コンピュータZでの処理は、過半数を構成できないため勝手に実行されることはない。つまりコンピュータZは、他の過半数を占めるコンピュータグループの処理に再同期化した後に、動作を再開する。
[定足数方式]
上記多数決方式は、定足数方式の1つである。定足数方式とは、多重化した全てのコンピュータで同一の処理を実行し、定足数(quorum:クォーラム)を占めるコンピュータの動作を一致させることができるならば、他のコンピュータの動作に関係なく、処理を継続するものである。特許文献1及び2には、定足数方式を適用する分散システムが記載されている。特許文献1には、定足数を全体の過半数(つまり1/2を超える数)とする多数決方式の例が示されている。この特許文献1には、多数決をする(つまりクォーラムグループを構成する)サーバ(コンピュータ)の数がNの場合に、そのNのうちの定足数(過半数)を満足する数のサーバが動作していれば、Nの数を動的に変更できる分散システムが示されている。一方、特許文献2には、定足数を全体の2/3を超える最小の整数とする2/3定足数方式の例が示されている。2/3定足数方式は冗長性がより高い多重化方式といえる。
特開2001−117895(段落0007、段落0018乃至0022、図1乃至図5) 特開2003−67215(段落0056乃至0064、図4)
上記したように、定足数方式では、フェイルオーバ方式とは異なって、スプリットブレインの発生を原理的に回避できる。しかし、定足数方式には、フェイルオーバ方式にはない別の問題がある。この問題について説明する。
まず、分散システムにおいて、複数のコンピュータが故障した場合、即ち多重故障が発生した場合、フェイルオーバ方式では、1台のコンピュータが動作していれば、処理を続行できる。これに対して、定足数方式では、常に定足数を満たす数のコンピュータが動作し続けていないといけない。もし、動作しているコンピュータの数が一旦定足数未満になってしまうと、その時点で動作していたコンピュータは処理を続行できなくなる。この場合、システムは停止するのが一般的である。
これに対し、動作しているコンピュータの数が定足数未満になった場合に、システムを停止させる代わりに、その時点で動作していたコンピュータの処理を一時中断させることが考えられる。更に、故障したコンピュータが故障から回復して再起動(リブート)した段階で、その再起動したコンピュータを残りのコンピュータの処理に再同期化して、処理を自動的に再開することが考えられる。しかし、この手法は採用はできない。なぜなら、時間軸方向でのスプリットブレインを招く可能性があるからである。時間軸方向のスプリットブレインとは、多重化された処理がある時点に巻き戻り、もう一度処理が実行された場合に、外部との入出力の過程で不整合が発生するタイプのスプリットブレインを指す。
この時間軸方向のスプリットブレインについて、7台のコンピュータ#1〜#7によって処理が多重化された2/3定足数方式を適用する分散システムを例に、図5を参照して説明する。この場合、定足数は5である。まず、コンピュータ#1〜#7が処理P1,P2,P3を実行し終えた時点T1で、2台のコンピュータ#1,#2と5台のコンピュータ#3〜#7との間で通信が行えなくなったものとする。即ち、2台のコンピュータ#1,#2から構成されるコンピュータグループAと5台のコンピュータ#3〜#7から構成されるコンピュータグループBとに、ネットワーク分割したとする。
この場合、定足数を満たすグループBのコンピュータ#3〜#7は処理を継続する。これに対し、定足数に満たないグループAのコンピュータ#1,#2は処理を一時中断する。やがて、グループBの5台のコンピュータ#3〜#7が処理P3に後続する処理P4,P5,P6を実行し終えた時点T2で、当該コンピュータ#3〜#7がいずれも故障する多重故障が発生したものとする。そして、時点T3で、グループBのコンピュータ#3〜#7がいずれも再起動して、ネットワーク分割も解消したとする。
そこで、再起動したグループBのコンピュータ#3〜#7を、グループAのコンピュータ#1,#2に再同期化する。このとき、グループAのコンピュータ#1,#2は、時点T1の状態、つまり処理P3を実行し終えた状態で処理を中断している。したがって、7台のコンピュータ#1〜#7は、時点T3において、処理P3を実行し終えた状態から処理を再開する。これにより、コンピュータ#3〜#7では、時点T1から時点T2までの処理がもう一度実行されることになる。ところが、時点T3から再開された処理においても、外部との入出力を伴うため、時点T3から再開された処理P3に後続する処理P4’,P5’,P6’と、時点T1から時点T2までに実行された処理P4,P5,P6との間で不整合、つまり時間軸方向のスプリットブレインが発生する可能性がある。
本発明は上記事情を考慮してなされたものでその目的は、相互に通信可能なN個(Nは4以上の整数)の処理要素によって処理を多重化する場合において、スプリットブレインの防止と多重故障発生時における可用性の確保とを両立させることができる分散システム及び多重化制御方法を提供することにある。
本発明の1つの観点によれば、相互に通信可能なN個の処理要素(Nは4以上の整数)のうちの少なくともQ個(Qは定足数)の処理要素の動作を同期化させることができるときに限り、当該少なくともQ個の処理要素によって多重化処理が実行される定足数多重化方式を適用した分散システムが提供される。このシステム内の上記N個の処理要素の各々は、再起動時に、当該N個の処理要素のうちの既に同期化されている少なくともF+1個(F=N−Q)の処理要素と通信ができる場合に、自身の処理の実行状態を上記システム内の最新の実行状態に再同期化することが可能であると判定する再同期化判定手段と、この再同期化手段の判定結果に応じて、上記少なくともF+1個の処理要素の各々の実行状態のうちの最新の実行状態に、自身の処理の実行状態を再同期化する再同期化手段とを備えたことを特徴とする。
上記の構成において、FはN−Qであり、故障しても多重化の処理が止まることのない処理要素の最大数である。つまり、F個以下の処理要素が同時に故障する多重故障が発生しても、多重化処理は一時的にも中断しない。これに対し、F個を超える多重故障が発生した場合には、定足数Qを満たさなくなることから、従来技術ではシステムが停止する。また、多重化処理を一時中断している状態とし、故障から回復した処理要素の再起動時に、既に同期化されている処理要素の実行状態に無条件で再同期化すると、時間軸方向にスプリットブレインを起こす。
これに対して上記の構成においては、故障から回復した処理要素の再起動時に、その再起動された処理要素がN個の処理要素のうちの既に同期化されている少なくともF+1個の処理要素と通信ができる場合に限り再同期化が可能であると判定される。上記システムでは、少なくともQ個の処理要素の動作を同期化させることができるときに限り、当該少なくともQ個の処理要素によって処理が続行される。このシステムでは、最低でもQ個の処理要素は、最新の実行状態にあることになる。したがって、F(=N−Q)個を超える多重故障が発生したとしても、その再起動された処理要素がN個の処理要素のうちの既に同期化されている少なくともF+1個の処理要素と通信ができるならば、当該少なくともF+1台の処理要素のうち、最低でもどれか1つは、最新の実行状態を持っている。ここで、少なくともF+1個の処理要素と通信ができるためには、許容される多重故障の処理要素の数はN−(F+1)=(N−F)−1=Q−1である。
そこで、上記構成においては、再起動された処理要素は、上記少なくともF+1個の処理要素と通信ができる場合に限り、当該少なくともF+1台の処理要素がそれぞれ持つ実行状態のうち、最新の実行状態に再同期化する。この再起動された処理要素の再同期化後の実行状態は、システム全体でも最新の実行状態となっている。したがって、この再同期化によってスプリットブレインを起こす虞はない。
本発明によれば、N個の処理要素(Nは4以上の整数)のうちの少なくともQ個(Qは定足数)の処理要素の動作を同期化させることができるときに限り、当該少なくともQ個の処理要素によって多重化処理が実行される定足数多重化方式を適用する分散システムにおいて、F(=N−Q)個を超える多重故障が発生したとしても、故障から回復して再起動された処理要素がN個の処理要素のうちの既に同期化されている少なくともF+1個の処理要素と通信ができるならば、この再起動された処理要素は、当該少なくともF+1台の処理要素の各々の実行状態のうちの最新の実行状態に自動的に再同期化する構成としたので、システム全体でQ台以上が動作する状態となった段階で、上記最新の実行状態をもとに処理を自動的に再開することができる。これにより、スプリットブレインの防止と多重故障発生時における可用性の確保とを両立させることができる。
以下、本発明の一実施形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る分散システムの構成を示すブロック図である。図1の分散システムは、N台(Nは4以上の整数)、例えば7台のコンピュータ10-1(#1)〜10-7(#7)から構成される。コンピュータ10-1〜10-7は、相互に通信可能な処理要素である。コンピュータ10-1〜10-7は、ネットワーク20によって相互接続されており、当該ネットワーク20を介して相互に通信が可能なように構成されている。
図1の分散システムでは、7台のコンピュータ10-1〜10-7によって処理が多重化される。また、図1の分散システムでは、上記多重化の制御のために、従来技術で述べた定足数方式が適用される。この定足数方式を適用した図1の分散システムの特徴について、説明する。まず、処理を多重化するコンピュータの数をNで表す。本実施形態では、N=7である。また、定足数をQで表す。周知のように、定足数をQとする客定足数方式では、N台のコンピュータで処理を多重化している場合に、Q台以上のコンピュータの動作を一致(同期化)させることができるとき(つまり同一グループを構成できるとき)に限り、たとえ他のコンピュータが故障していても処理を継続できる。定足数方式として2/3定足数決方式を適用するものとすると、QはNの2/3を超える最小の整数であり、N=7の例では5となる。また、N−Qの値をFで表す。明らかなように、Fは、故障してもシステム全体における多重化の処理が止まらないコンピュータの最大数である。N=7のシステムで定足数方式として2/3定足数決方式を適用する場合、Q=5であることから、F=2となる。
本実施形態の特徴は、あるコンピュータ#iが故障(障害)から回復して再起動して、他のコンピュータの動作に再同期化する場合の条件と方法とにある。本実施形態における再同期化とは、コンピュータ#iが、その時点において起動されている他のコンピュータのうち、最新の処理の状態を保持しているコンピュータから、当該最新の処理の状態を自身の処理の状態として当該コンピュータ#i内にコピーすることをいう。最新の処理の状態を保持しているコンピュータの台数は問わない。また、本実施形態における再同期化の条件は、コンピュータ#iが再起動した場合に、当該コンピュータ#iの他に、当該コンピュータ#iと同一グループを構成できる、つまり当該コンピュータ#iと通信できる少なくともF+1台のコンピュータが存在することである。
このような本実施形態特有の再同期化処理を行うことで、時間軸方向のスプリットブレインを防止できる。以下、その理由について述べる。定足数方式を適用する本実施形態の分散システムでは、必ずQ台以上のコンピュータから構成されるグループができている場合に、多重化処理が続行する。したがって、分散システムにおける最新の処理の状態は、少なくともQ台のコンピュータに保持されていることになる。もし、最新の処理の状態を保持するコンピュータの数が、最低のQ台であるものとすると、最新の処理の状態を保持していないコンピュータの数は、残りのコンピュータの数、つまりN−Q=F台となる。また、最新の処理の状態を保持するコンピュータの数が、Q台を超えているものとすると、最新の処理の状態を保持していないコンピュータの数は、N−Q台未満、つまりF台未満となる。このことは、システム内の任意のF+1台のコンピュータのうち、最低でもどれか1台は最新の処理の状態を持っていることを意味する。したがって、コンピュータ#iが上記の再同期化条件のもとで再同期化した場合、当該コンピュータ#iの処理の状態(実行状態)は、システム全体でみても必ず最新の状態となっている。したがって、時間軸方向のスプリットブレインを起こすことはない。
次に、上記再同期化のための具体的な仕組みについて、図1を参照して説明する。コンピュータ10-1(#1)〜10-7(#7)は、いずれも、当該コンピュータ10-1〜10-7によって多重化される処理の手順を記述したプログラム11と、当該コンピュータ10-1〜10-7の現時点における実行状態(処理の状態)を保持する実行状態記憶部12と、プログラム11に従う処理の多重化(定足数での多重化)を制御する多重化制御部13とを備えている。但し、作図の都合上、図1中のコンピュータ10-3〜10-7では、プログラム11、実行状態記憶部12及び多重化制御部13が省略されている。また、図1中の各コンピュータ10-i(i=1〜7)では、プログラム11を記憶するための記憶領域、及び実行状態記憶部12を実現するための記憶領域を提供する記憶装置が省略されている。
各コンピュータ10-i内の多重化制御部13は、例えば当該コンピュータ10-iにインストールされた特定のソフトウェアプログラムを当該コンピュータ10-iが読み取って実行することにより実現される。このプログラムは、コンピュータで読み取り可能な記憶媒体、例えばフロッピー(登録商標)ディスクに代表される磁気ディスク、CD−ROM、DVDに代表される光ディスク、フラッシュメモリに代表される半導体メモリ等の記憶媒体に予め格納して頒布可能である。また、このプログラムが、ネットワークを介してダウンロード(頒布)されても構わない。多重化制御部13は、順序番号保持部131と、再同期化判定部132と、再同期化部133とを有する。
順序番号保持部131は、コンピュータ10-iにおける処理の進行状況の指標となる進行状況情報としての順序番号を保持するのに用いられる。順序番号保持部131の内容は、プログラム11の処理が進む毎に例えば1インクリメントされる。
再同期化判定部132は、コンピュータ10-iが再起動された場合に、当該コンピュータ10-iをシステム内の最新の実行状態を保持するコンピュータの処理に再同期化することが可能であるかを判定する。再同期化部133は、再同期化判定部132の判定結果に応じて当該コンピュータ10-iを再同期化する。ここでは再同期化部133は、コンピュータ10-i内の実行状態記憶部12の内容をシステム内の最新の実行状態にすることにより、当該コンピュータ10-iを再同期化する。システム内の最新の実行状態を保持するコンピュータは、コンピュータ10-iと通信が可能な既に同期化されているコンピュータ(後述する多重化制御の実行中のコンピュータ)の順序番号保持部131に保持されている順序番号を比較することで検出可能である。
次に、図1のシステムにおける動作を、図2及び図3のフローチャート並びに図4のシーケンスチャートを参照して説明する。
まず、多重化制御について説明する。各コンピュータ10-i(i=1〜7)内の多重化制御部13は、互いにネットワーク20を介して情報を交換する(ステップS1)。この情報交換により、コンピュータ10-i内の多重化制御部13は、当該コンピュータ10-i自身を含む少なくともQ台のコンピュータの動作を一致(同期化)させることができるかを判定する(ステップS2)。前記特許文献2の例では、各コンピュータ間で処理Pjのための入力が交換され、その入力を少なくともQ台のコンピュータで一致させることができるかが判定される。処理Pjのための入力を少なくともQ台のコンピュータで一致させることができることは、自身を含む少なくともQ台のコンピュータの動作を一致させることができることと等価である。
コンピュータ10-i内の多重化制御部13は、当該コンピュータ10-i自身を含む少なくともQ台のコンピュータの動作を一致させることができる場合(ステップS2)、当該少なくともQ台のコンピュータから構成されるグループを作成してステップS3に進む。このステップS3において、コンピュータ10-i内の多重化制御部13は、プログラム11に記述されている処理のうち、実行状態記憶部12に保持されている現在の実行状態に対応する処理Pjを実行する。そして処理Pjを実行し終えると、多重化制御部13は、実行状態記憶部12に保持されている実行状態を、処理Pjの実行が完了している状態に更新する(ステップS4)。また多重化制御部13は、順序番号保持部131に保持されている順序番号を1インクリメントする(ステップS5)。多重化制御部13は、以上のステップS1乃至S5を繰り返す。
一方、コンピュータ10-i自身を含む少なくともQ台のコンピュータの動作を一致させることができない場合(ステップS2)、当該コンピュータ10-i内の多重化制御部13はプログラム11の処理を中断する。この場合、多重化制御部13は、上記少なくともQ台のコンピュータの動作を一致させることができるまでは、上記ステップS1での他のコンピュータとの間の情報の交換及び前記ステップS2での判定を繰り返す。このコンピュータ10-iの多重化制御部13によるステップS1及びS2の繰り返しも多重化制御の一部である。つまり、ステップS1及びS2が繰り返されている期間、コンピュータ10-iではプログラム11の新たな処理は行われないものの、当該コンピュータ10-i自身は図2のフローチャートに従って多重化制御を実行している。この場合、コンピュータ10-iを含む少なくともQ台のコンピュータの動作を一致させることができる状態になれば、当該コンピュータ10-iはプログラム11の処理を実行している他のコンピュータの動作に同期して、直ちに新たな処理(ステップS3)に進むことができる。
さて、システム内の全てのコンピュータ10-1〜10-7において、図4に示すように、プログラム11の処理P1,P2,P3が実行されたものとする。そして、処理P3を実行し終えた時点T1で、2台のコンピュータ10-1(#1),10-2(#2)と5台のコンピュータ10-3(#3)〜10-7(#7)との間で通信が行えなくなったものとする。即ち、2台のコンピュータ10-1(#1),10-2(#2)から構成されるコンピュータグループAと5台のコンピュータ10-3(#3)〜10-7(#7)から構成されるコンピュータグループBとに、ネットワーク分割したとする。ここで、図1のシステムが定足数方式として2/3定足数方式を適用しているものとすると、N=7,Q=5,F=2である。
この場合、コンピュータグループBは5台のコンピュータ10-3〜10-7から構成されるため、2/3定足数Qを満たす。したがって、コンピュータ10-3〜10-7は、図4に示すように処理P3に後続するプログラム11の処理を継続する。一方、コンピュータグループAのコンピュータ10-1,10-2はQ(=5)台に満たないため、図4に示すように、処理P3に後続する処理に進まずにプログラム11の処理を中断する。
その後、コンピュータ10-3〜10-7が処理P3に後続する処理P4,P5,P6を実行し終えた時点T2で、当該コンピュータ10-3〜10-7のうち例えば4台のコンピュータ10-4〜10-7が故障(障害)を引き起こしたものとする。この場合、コンピュータ10-3は、たとえコンピュータ10-1,10-2との間のネットワーク分割が解消されて、当該コンピュータ10-1,10-2との間で動作を一致させることができたとしても、つまり同一のグループを作成できたとしても、2/3定足数Qを満たさないことから、処理を中断する。
さて、コンピュータ10-4〜10-7の故障は一時的であり、やがて当該故障から回復して再起動したものとする。すると、コンピュータ10-4〜10-7内の多重化制御部13は、図3のフローチャートに従う再起動時処理を開始する。
まず、コンピュータ10-j(j=4〜7)内の多重化制御部13は、システム内の他の各コンピュータと通信する(ステップS11)。コンピュータ10-j内の多重化制御部13が有する再同期化判定部132は、ステップS11での通信の結果、多重化制御を実行している(既に同期化されている)F+1台以上のコンピュータ(つまり少なくともF+1台のコンピュータ)と通信が可能であるかを判定する(ステップS12)。もし、コンピュータ10-jと通信が可能な、多重化制御を実行しているF+1台以上のコンピュータが存在するならば、再同期化判定部132はコンピュータ10-jの再同期化が可能であると判定する。この場合、再同期化判定部132は、同じコンピュータ10-j内の再同期化部133に制御を渡す。
さて、図1のシステムが7台のコンピュータ10-1〜10-7から構成され(N=7)、定足数方式として2/3定足数方式を適用している本実施形態では(Q=5)、F+1=(N−Q)+1=(7−5)+1=3である。前記したように、多重化制御を実行しているF+1(=3)台以上のコンピュータが存在する場合、当該F+1(=3)台以上のコンピュータのうち、最低でもどれか1台は最新の実行状態(処理の状態)を持っている。図4のシーケンスチャートの例では、時点T3において多重化制御を実行しているコンピュータの数は、コンピュータ10-1〜10-3のF+1(=3)台である。この場合、F+1(=3)台のコンピュータ10-1〜10-3のうちのいずれか1つは、最新の実行状態(ここでは、処理P6の実行が完了している状態)を保持している。
そこで、コンピュータ10-j(j=4〜7)内の再同期化部133は、最新の実行状態を保持しているコンピュータを検出して、その最新の実行状態を保持しているコンピュータに当該コンピュータ10-jを再同期化するための処理を次のように行う。まずコンピュータ10-jは、当該コンピュータ10-jと通信が可能な、多重化制御を実行しているF+1台以上のコンピュータ(ここではF+1=3台のコンピュータ10-1〜10-3)から、当該F+1台以上のコンピュータの順序番号保持部131にそれぞれ保持されている順序番号を取得する(ステップS13)。この順序番号の取得は、例えば、コンピュータ10-j内の再同期化部133から、上記F+1台以上のコンピュータに対して順序番号の転送を要求することにより実現される。
コンピュータ10-j内の再同期化部133は、上記F+1台以上のコンピュータから取得した順序番号を比較することにより、最新の順序番号(ここでは、最も値の大きい順序番号)を判別する(ステップS14)。多重化制御を実行しているコンピュータの中で最新の順序番号を保持しているコンピュータ(以下、コンピュータ10-kと称する)は、図4のシーケンスチャートの例では、コンピュータ10-1〜10-3のうちのコンピュータ10-3である。再同期化部133は、この最新の順序番号を保持しているコンピュータ10-kを特定し、当該特定されたコンピュータ10-kの現在の実行状態に、コンピュータ10-jを再同期化させる(ステップS15)。図4の例では、コンピュータ10-kはコンピュータ10-3であることから、コンピュータ10-j(j=4〜7)、つまりコンピュータ10-4〜10-7は、コンピュータ10-3に再同期化される。この再同期化は、コンピュータ10-k(最新の順序番号を保持しているコンピュータ)の実行状態記憶部12の内容(最新の実行状態)を、再同期化部133がコンピュータ10-jの実行状態記憶部12にコピーすることにより実現される。この再同期化では、最新の順序番号をコンピュータ10-jの順序番号保持部131にコピーする動作も行われる。なお、ステップS14で判定された最新の順序番号が、コンピュータ10-jの順序番号保持部131にも保持されている場合には、再同期化が完了しているものとして、上記のコピーを省略することも可能である。
コンピュータ10-j(j=4〜7)は、コンピュータ10-k(10-3)への再同期化を完了すると、図2のフローチャートに従う多重化制御を開始する。これによりコンピュータ10-jの多重化制御部13は、自身を含むQ台のコンピュータの動作を一致させることができた段階で、実行状態記憶部12に保持されている最新の実行状態をもとに、後続する処理を実行する。図4の例では、コンピュータ10-k、即ちコンピュータ10-3は、コンピュータ10-4〜10-7が故障した時点T2で処理P6まで完了している。その後、コンピュータ10-4〜10-7が再起動され、更にコンピュータ10-1〜10-3とコンピュータ10-4〜10-7との間の通信が可能となった結果、コンピュータ10-4〜10-7が、図4に示すように時点T3でコンピュータ10-3に再同期化できたものとする。この場合、コンピュータ10-4〜10-7の実行状態はコンピュータ10-3と同じ最新の実行状態にある。また、コンピュータ10-1,10-2の実行状態も多重化制御によりコンピュータ10-3と同じ最新の実行状態にある。この結果、コンピュータ10-1〜10-7では、図4に示すように、時点T3において、処理P6に後続する処理P7から多重化処理が開始され、時間軸方向のスプリットブレインを起こすことはない。
以上に述べた本実施形態の効果について、以下に整理して示す。
まず本実施形態では、分散システムを構成するN台(N=7)のコンピュータのうちQ台(Q=5)以上のコンピュータで動作を一致させることができる場合に処理(多重化処理)を続行する定足数方式(2/3定足数方式)を適用している。この場合、F台(F=N−Q=2)以下のコンピュータの故障では、特許文献2に記載された従来技術と同様に、多重化処理は一時的にも中断しない。一方、F+1台以上のコンピュータの故障でも、Q−1台までのコンピュータの故障ならばシステムは停止されず、それらのうち何台かが再起動し全体でQ台以上が動作するならば、それまでの間、一時的に処理が中断するものの、処理を自動的に再開することができる。したがって、N=7,Q=5,F=2の本実施形態では、Fを超える3台(F+1=3)から4台(Q−1=4)までのコンピュータが故障しても、処理を自動的に再開することが可能となる。4台のコンピュータが故障した場合を例にとるならば、それらのうち2台が再起動すれば、残りの3台(F+1台)のコンピュータの処理に再同期化して、処理を自動的に再開することができる。この再同期化による処理の自動再開は、従来から知られている定足数方式では、時間軸方向のスプリットブレインの恐れがあるため、できないことであった。
コンピュータの故障は、二度と立ち上がらなくなる永続的なハードウェア故障ではなく、一過性のハードウェア故障や、OS(オペレーティングシステム)のソフトウェア的な障害によるものが大半を占めている。本実施形態では、コンピュータの起動時に自動的に再同期化を行うため、このような障害のケースでのシステムの可用性を大幅に向上させるという効果がある。
上記実施形態では、定足数方式として2/3定足数方式を適用している。しかし、本発明は、2/3定足数方式以外の定足数方式、例えば多数決方式にも同様に適用できる。但し、Nが奇数の場合には、F+1=Qであることから、以下に述べるように上記実施形態における再起動時の再同期化処理を適用する効果は小さい。まず、F+1=Qの場合、再同期化の条件である、少なくともF+1台のコンピュータが多重化制御を実行中であることは、少なくともQ台のコンピュータが多重化制御を実行中であることに他ならず、多重化処理は一時的にも中断しない。この場合、故障したコンピュータは、図2のフローチャートに従う多重化制御で最新の実行状態を持つコンピュータの動作に一致させることができるため、上記実施形態における再起動時の再同期化処理は必要ない。これに対し、Nが偶数の場合には、Q−F=2、つまりF+1<Qであることから、上記実施形態における再起動時の再同期化処理の効果は大きい。因みにN=8の場合、多数決方式では、Q=5,F=3,F+1=4となり、2/3定足数方式では、Q=6,F=2,F+1=3となる。
また、上記実施形態では、分散システムを構成する相互に通信可能な処理要素がコンピュータである場合について説明した。しかし本発明は、上記処理要素がコンピュータのOS上で動作する多重化されたプロセス、更には多重化されたサーバである場合にも、同様に適用できる。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
本発明の一実施形態に係る分散システムの構成を示すブロック図。 同実施形態における多重化制御の手順を示すフローチャート。 同実施形態における再同期化を含む再起動時処理の手順を示すフローチャート。 同実施形態における各コンピュータの処理状態を示すシーケンスチャート。 再起動時の再同期化処理を無条件で行うことにより時間軸方向のスプリットブレインが発生する場合の各コンピュータの処理状態を示すシーケンスチャート。
符号の説明
10-1〜10-7…コンピュータ(処理要素)、11…プログラム、12…実行状態記憶部、13…多重化制御部、20…ネットワーク、131…順序番号保持部(進行状況情報保持手段)、132…再同期化判定部、133…再同期化部。

Claims (6)

  1. 相互に通信可能なN個の処理要素(Nは4以上の整数)のうちの少なくともQ個(Qは定足数)の処理要素の動作を同期化させることができるときに限り、当該少なくともQ個の処理要素によって多重化処理が実行される定足数多重化方式を適用した分散システムにおいて、
    前記N個の処理要素の各々は、
    再起動時に、前記N個の処理要素のうちの既に同期化されている少なくともF+1個(F=N−Q)の処理要素と通信ができる場合に、自身の処理の実行状態を前記分散システム内の最新の実行状態に再同期化することが可能であると判定する再同期化判定手段と、
    前記再同期化手段の判定結果に応じて、前記少なくともF+1個の処理要素の各々の実行状態のうちの最新の実行状態に、自身の処理の実行状態を再同期化する再同期化手段と
    を具備することを特徴とする分散システム。
  2. 前記N個の処理要素の各々は、自身の処理の最新の実行状態を保持する実行状態記憶手段を更に具備し、
    前記再同期化手段は、前記少なくともF+1個の処理要素のうち前記分散システム内で最新の実行状態を保持している処理要素から自身の前記実行状態記憶手段に当該最新の実行状態をコピーすることにより前記再同期化を実行する
    ことを特徴とする請求項1記載の分散システム。
  3. 前記N個の処理要素の各々は、当該処理要素における処理の進行状況の指標となる進行状況情報を保持する進行状況情報保持手段を更に具備し、
    前記再同期化手段は、前記少なくともF+1個の処理要素の前記進行状況情報保持手段に保持されている進行状況情報から、前記分散システム内で最新の実行状態を保持している処理要素を検出する
    ことを特徴とする請求項1記載の分散システム。
  4. 前記進行状況情報保持手段は、対応する前記処理装置での処理が進む毎にインクリメントされる順序番号を前記進行状況情報として保持し、
    前記再同期化手段は、前記少なくともF+1個の処理要素の前記進行状況情報保持手段に前記進行状況情報として保持されている前記順序番号を比較し、最も値の大きい順序番号を保持する前記進行状況情報保持手段を持つ処理要素を、前記分散システム内で最新の実行状態を保持している処理要素として検出する
    ことを特徴とする請求項3記載の分散システム。
  5. 前記Qが、前記Nの2/3を超える最小の整数に一致する2/3定足数であることを特徴とする請求項1記載の分散システム。
  6. 相互に通信可能なN個の処理要素(Nは4以上の整数)のうちの少なくともQ個(Qは定足数)の処理要素の動作を同期化させることができるときに限り、当該少なくともQ個の処理要素によって多重化処理が実行される定足数多重化方式を適用した分散システムにおいて、処理を多重化するための多重化制御方法であって、
    前記処理要素の再起動時に、当該再起動された処理要素が前記N個の処理要素のうちの既に同期化されている少なくともF+1個(F=N−Q)の処理要素と通信が可能であるかを判定するステップと、
    前記少なくともF+1個の処理要素と通信が可能な場合、当該少なくともF+1個の処理要素の中から、前記分散システム内で最新の実行状態を保持している処理要素を前記再起動された処理要素が検出するステップと、
    検出された処理要素の実行状態に、前記再起動された処理要素の実行状態を再同期化するステップと
    を具備することを特徴とする多重化制御方法。
JP2004071494A 2004-03-12 2004-03-12 分散システム及び多重化制御方法 Expired - Lifetime JP3808874B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2004071494A JP3808874B2 (ja) 2004-03-12 2004-03-12 分散システム及び多重化制御方法
US11/069,973 US7620845B2 (en) 2004-03-12 2005-03-03 Distributed system and redundancy control method
DE602005003490T DE602005003490T8 (de) 2004-03-12 2005-03-09 Verteiltes System mit Quorumredundanz und Verfahren dafür
EP05005136A EP1574956B1 (en) 2004-03-12 2005-03-09 Distributed system using quorum redundancy and method therefor
CNB2005100538833A CN100380364C (zh) 2004-03-12 2005-03-14 分布式系统和冗余控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004071494A JP3808874B2 (ja) 2004-03-12 2004-03-12 分散システム及び多重化制御方法

Publications (2)

Publication Number Publication Date
JP2005258946A JP2005258946A (ja) 2005-09-22
JP3808874B2 true JP3808874B2 (ja) 2006-08-16

Family

ID=34824642

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004071494A Expired - Lifetime JP3808874B2 (ja) 2004-03-12 2004-03-12 分散システム及び多重化制御方法

Country Status (5)

Country Link
US (1) US7620845B2 (ja)
EP (1) EP1574956B1 (ja)
JP (1) JP3808874B2 (ja)
CN (1) CN100380364C (ja)
DE (1) DE602005003490T8 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100429596C (zh) * 2006-01-19 2008-10-29 吴胜华 集散型大容量现场高速实时数据冗余通信方法及其系统
US20070214314A1 (en) * 2006-03-07 2007-09-13 Reuter James M Methods and systems for hierarchical management of distributed data
KR101042908B1 (ko) * 2009-02-12 2011-06-21 엔에이치엔(주) 네트워크 분리 장애 상황에서 메이저 그룹을 결정하기 위한방법, 시스템, 및 컴퓨터 판독 가능한 기록 매체
US8327181B2 (en) * 2009-06-22 2012-12-04 Citrix Systems, Inc. Systems and methods for failover between multi-core appliances
JP4956603B2 (ja) * 2009-12-04 2012-06-20 株式会社東芝 分散システムおよび論理時間調整方法
US9755985B1 (en) * 2010-09-28 2017-09-05 Amazon Technologies, Inc. Utilizing multiple algorithms in a distributed-service environment
CN102176202B (zh) * 2010-12-29 2013-12-25 哈尔滨工业大学 一种星上商用器件冗余网络设计电路
US8578204B1 (en) * 2010-12-29 2013-11-05 Emc Corporation Witness facility for distributed storage system
US8745467B2 (en) * 2011-02-16 2014-06-03 Invensys Systems, Inc. System and method for fault tolerant computing using generic hardware
US8516355B2 (en) * 2011-02-16 2013-08-20 Invensys Systems, Inc. System and method for fault tolerant computing using generic hardware
US9152458B1 (en) * 2012-08-30 2015-10-06 Google Inc. Mirrored stateful workers
US9990414B2 (en) 2015-06-15 2018-06-05 International Business Machines Corporation Cognitive architecture with content provider managed corpus
JP2017016319A (ja) * 2015-06-30 2017-01-19 日本信号株式会社 多重化データ処理装置
JP6409812B2 (ja) * 2016-04-01 2018-10-24 横河電機株式会社 冗長化装置、冗長化システム、及び冗長化方法
JP6787239B2 (ja) * 2017-04-25 2020-11-18 横河電機株式会社 制御装置、制御方法、及び制御プログラム
US11544228B2 (en) 2020-05-07 2023-01-03 Hewlett Packard Enterprise Development Lp Assignment of quora values to nodes based on importance of the nodes
CN113110124B (zh) * 2021-03-11 2022-08-19 上海新时达电气股份有限公司 双mcu控制方法及控制系统
WO2023148976A1 (ja) * 2022-02-07 2023-08-10 株式会社Pfu ノード装置、クラスタ再構成方法、プログラム及びクラスタシステム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4733353A (en) * 1985-12-13 1988-03-22 General Electric Company Frame synchronization of multiply redundant computers
AU616213B2 (en) * 1987-11-09 1991-10-24 Tandem Computers Incorporated Method and apparatus for synchronizing a plurality of processors
AU657685B2 (en) * 1990-06-14 1995-03-23 Fujitsu Limited A synchronization control system in a parallel computer
US5991518A (en) 1997-01-28 1999-11-23 Tandem Computers Incorporated Method and apparatus for split-brain avoidance in a multi-processor system
US5903717A (en) * 1997-04-02 1999-05-11 General Dynamics Information Systems, Inc. Fault tolerant computer system
US6202067B1 (en) * 1998-04-07 2001-03-13 Lucent Technologies, Inc. Method and apparatus for correct and complete transactions in a fault tolerant distributed database system
US6223304B1 (en) * 1998-06-18 2001-04-24 Telefonaktiebolaget Lm Ericsson (Publ) Synchronization of processors in a fault tolerant multi-processor system
US6161196A (en) 1998-06-19 2000-12-12 Lucent Technologies Inc. Fault tolerance via N-modular software redundancy using indirect instrumentation
US6260124B1 (en) * 1998-08-13 2001-07-10 International Business Machines Corporation System and method for dynamically resynchronizing backup data
US6470462B1 (en) * 1999-02-25 2002-10-22 Telefonaktiebolaget Lm Ericsson (Publ) Simultaneous resynchronization by command for state machines in redundant systems
KR100324275B1 (ko) * 1999-07-14 2002-02-25 서평원 이중화된 프로세서의 이중화 상태 제어 방법
US6490693B1 (en) * 1999-08-31 2002-12-03 International Business Machines Corporation Dynamic reconfiguration of a quorum group of processors in a distributed computing system
US6542929B1 (en) 1999-08-31 2003-04-01 International Business Machines Corporation Relaxed quorum determination for a quorum based operation
EP1107119A3 (en) 1999-12-02 2005-07-20 Sun Microsystems, Inc. Extending cluster membership and quorum determinations to intelligent storage systems
US7272632B2 (en) 2001-06-15 2007-09-18 Kabushiki Kaisha Toshiba Distributed system and multiplexing control method for the system
JP3655263B2 (ja) 2001-06-15 2005-06-02 株式会社東芝 分散システムおよび同システムの多重化制御方法
US7016946B2 (en) 2001-07-05 2006-03-21 Sun Microsystems, Inc. Method and system for establishing a quorum for a geographically distributed cluster of computers

Also Published As

Publication number Publication date
CN1667600A (zh) 2005-09-14
DE602005003490T8 (de) 2009-02-05
EP1574956A3 (en) 2006-10-04
DE602005003490T2 (de) 2008-10-09
US7620845B2 (en) 2009-11-17
DE602005003490D1 (de) 2008-01-10
US20050204184A1 (en) 2005-09-15
EP1574956B1 (en) 2007-11-28
CN100380364C (zh) 2008-04-09
EP1574956A2 (en) 2005-09-14
JP2005258946A (ja) 2005-09-22

Similar Documents

Publication Publication Date Title
JP3808874B2 (ja) 分散システム及び多重化制御方法
WO2019085875A1 (zh) 存储集群的配置修改方法、存储集群及计算机系统
US9569517B1 (en) Fault tolerant distributed key-value storage
GB2484086A (en) Reliability and performance modes in a distributed storage system
JP4491482B2 (ja) 障害回復方法、計算機、クラスタシステム、管理計算機及び障害回復プログラム
EP3528431A1 (en) Paxos protocol-based methods and apparatuses for online capacity expansion and reduction of distributed consistency system
JP2009093315A (ja) ストレージシステムの容量拡張制御方法
JP2008052407A (ja) クラスタシステム
JP2009151629A (ja) ノードシステム、サーバ切換え方法、サーバ装置、データ引き継ぎ方法、およびプログラム
US20040153704A1 (en) Automatic startup of a cluster system after occurrence of a recoverable error
JP6083480B1 (ja) 監視装置、フォールトトレラントシステムおよび方法
JP6511739B2 (ja) 冗長システムおよび冗長化方法
US20030208750A1 (en) Information exchange for process pair replacement in a cluster environment
WO2010100757A1 (ja) 演算処理システム、再同期方法、およびファームプログラム
JP5201134B2 (ja) 二重化システム、切替プログラムおよび切替方法
US8977897B2 (en) Computer-readable recording medium, data management method, and storage device
KR102221366B1 (ko) 백업 데이터에 대한 신뢰성을 확보하면서도 블록체인 네트워크를 복구하며, 노드를 재활용함으로써 자원 소모를 최소화하는 딜레이드 동기화 방법 및 장치
TWI669605B (zh) 虛擬機器群組的容錯方法及其容錯系統
JP2009098988A (ja) フォルトトレラントコンピュータシステム
JP2009265973A (ja) データ同期システム、障害復旧方法、及び、プログラム
JP2008276281A (ja) データ同期システム、方法、及び、プログラム
KR102294048B1 (ko) 블록체인 응용서비스의 복제 실행 방법 및 블록체인 응용서비스의 복제 실행 시스템
CN114546978A (zh) 一种存储集群的位图管理方法、系统、设备以及介质
JP2011076262A (ja) 計算機システムおよびその方法
CN104298553B (zh) 一种虚拟机迁移的方法、vrms和系统

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060426

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060518

R150 Certificate of patent or registration of utility model

Ref document number: 3808874

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090526

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100526

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100526

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110526

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110526

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120526

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120526

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130526

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130526

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140526

Year of fee payment: 8

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term