JP2019020816A - 分散コンピューティングシステムにおけるデータをリカバリする方法およびシステム - Google Patents

分散コンピューティングシステムにおけるデータをリカバリする方法およびシステム Download PDF

Info

Publication number
JP2019020816A
JP2019020816A JP2017136209A JP2017136209A JP2019020816A JP 2019020816 A JP2019020816 A JP 2019020816A JP 2017136209 A JP2017136209 A JP 2017136209A JP 2017136209 A JP2017136209 A JP 2017136209A JP 2019020816 A JP2019020816 A JP 2019020816A
Authority
JP
Japan
Prior art keywords
server
bases
base
data
file
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.)
Granted
Application number
JP2017136209A
Other languages
English (en)
Other versions
JP6990055B2 (ja
Inventor
開帆 福地
Kaiho Fukuchi
開帆 福地
潤 根本
Jun Nemoto
潤 根本
匡邦 揚妻
Masakuni Agetsuma
匡邦 揚妻
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2017136209A priority Critical patent/JP6990055B2/ja
Priority to US15/920,501 priority patent/US11134121B2/en
Publication of JP2019020816A publication Critical patent/JP2019020816A/ja
Application granted granted Critical
Publication of JP6990055B2 publication Critical patent/JP6990055B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2025Failover techniques using centralised failover control 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

【課題】分散コンピューティングシステムにおけるリカバリに要する時間を短縮する。【解決手段】複数の拠点に存在する複数のノードを有する分散コンピューティングシステムのうちの少なくとも1つのノード(例えば後述のサーバ)又は別の計算機(例えば後述の管理サーバ)が、(A)複数のノードのうちのリカバリ対象のノードが保持している1以上のデータセットと同じ1以上のデータセットを保持している1以上のノードが存在する1以上の拠点を特定し、(B)同じ1以上のデータセットのリストア先となるノードの拠点であるリストア先拠点を、複数の拠点から、特定した1以上の拠点を基に決定する。【選択図】図21

Description

本発明は、概して、分散コンピューティングシステムにおけるデータのリカバリに関する。
分散コンピューティングシステムにおけるデータのリカバリに関し、例えば、特許文献1に開示の技術が知られている。特許文献1によれば、ストレージ装置と複数のバックアップ装置とを備える分散バックアップシステムにおいて、ストレージ装置は、リストアに係る要求データ転送サイズを考慮することにより、バックアップ装置の選択を実行する。
特表2015−529861号公報
以下の説明では、分散コンピューティングシステムの要素としての計算機を「ノード」と言うことがある。プロセッサやメモリや通信インタフェースデバイスといった計算リソースを有するいずれの計算機もノードになることができてよい。ノードは、物理的な計算機であってもよいし、物理的な計算機の少なくとも一部の計算リソースを基に動作する仮想的な計算機であってもよい。
また、以下の説明では、「データセット」とは、アプリケーションプログラムのようなプログラムから見た1つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペアおよびタプルのうちのいずれでもよい。
一般に、分散コンピューティングシステムは、地理的に離れた複数の拠点(例えばデータセンタまたはネットワークセグメント)に存在する複数のノードから構成され、データセットは、2以上の拠点における2以上のノードにレプリカとして分散している。いずれかのノードで障害が発生した場合、リカバリ処理が必要になる。リカバリ処理は、障害が発生したノード(以下、障害ノード)が保持していたデータセットを別のノードにリストアする処理を含む。具体的には、リカバリ処理では、リストア先拠点が決定され、リストア先拠点におけるノード(例えば、新たに追加されたノード、または、既存の予備のノード)が、リストア先ノードとされる。そして、1以上のリストア元拠点における1以上のリストア元ノードからリストア対象のデータセット(障害ノードが保持していたデータセットと同じデータセット)がリストア先ノードにリストアされる。
データセットのリストア中(例えば転送中)は、リストア元ノードの計算リソースが消費される。このため、データセットのリストアに長い時間を要すると、分散コンピューティングシステムの処理性能が低下する期間が長期化するおそれがある。
複数の拠点に存在する複数のノードを有する分散コンピューティングシステムのうちの少なくとも1つのノード(例えば後述のサーバ)又は別の計算機(例えば後述の管理サーバ)が、
(A)複数のノードのうちのリカバリ対象のノードが保持している1以上のデータセットと同じ1以上のデータセットを保持している1以上のノードが存在する1以上の拠点を特定し、
(B)前記同じ1以上のデータセットのリストア先となるノードの拠点であるリストア先拠点を、前記複数の拠点から、特定した1以上の拠点を基に決定する。
本発明によれば、分散コンピューティングシステムにおいて、リカバリに要する時間を短縮することが期待できる。
第一の実施例に係るブロックチェーンシステムの構成の一例を示す図である。 第一の実施例に係るブロックチェーンプログラムの構成の一例を示す図である。 第一の実施例に係るブロックチェーン管理プログラムの一例の構成を示す図である。 第一の実施例に係るサーバ情報の構成の一例を示す図である。 第一の実施例に係る累計データ量情報の構成の一例を示す図である。 第一の実施例に係る拠点間通信速度情報の構成の一例を示す図である。 第一の実施例に係るトランザクション処理の一例を示すフローチャートである。 第一の実施例に係るサーバ追加処理の一例を示すフローチャートである。 第一の実施例に係るリカバリ処理の一例を示すフローチャートである。 第一の実施例に係るリストア先拠点決定処理の一例を示すフローチャートである。 第一の実施例に係る定期監視処理の一例を示すフローチャートである。 第二の実施例に係る分散ファイルシステムの構成の一例を示す図である。 第二の実施例に係るクライアントプログラムの構成の一例を示す図である。 第二の実施例に係る分散プログラムの構成の一例を示す図である。 第二の実施例に係る管理プログラムの構成の一例を示す図である。 第二の実施例に係るサーバ情報の構成の一例を示す図である。 第二の実施例に係るレプリケーション情報の構成の一例を示す図である。 第二の実施例に係るファイル情報の構成の一例を示す図である。 第二の実施例に係る書込み処理の一例を示すフローチャートである。 第二の実施例に係るリストア先拠点決定処理の一例を示すフローチャートである。 第一の実施例の概要を示す模式図である。
以下、本発明の幾つかの実施例について説明する。
なお、以下の説明においては、「インタフェース部」は、1以上のインタフェースデバイス、具体的には、ユーザインタフェース部と、通信インタフェース部とのうちの少なくとも1つを含んでよい。ユーザインタフェース部は、1以上のI/Oデバイス(例えば入力デバイス(例えばキーボードおよびポインティングデバイス)と出力デバイス(例えば表示デバイス))と表示用計算機とのうちの少なくとも1つのI/Oデバイスを含んでよい。通信インタフェース部は、1以上の通信インタフェースデバイスを含んでよい。1以上の通信インタフェースデバイスは、1以上の同種の通信インタフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インタフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明においては、「記憶部」は、1以上のメモリを含む。記憶部に関して少なくとも1つのメモリは、揮発性メモリでよい。記憶部は、主に、プロセッサ部による処理の際に使用される。
また、以下の説明においては、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プロセッサ部は、処理の一部または全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit))を含んでもよい。
また、以下の説明では、「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、HDD(Hard Disk Drive)またはSSD(Solid State Drive)でよい。ストレージシステムに異なる種類のPDEVが混在していてもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部およびインタフェース部のうちの少なくとも1つを用いながら行うため、処理の主語が、プロセッサ部(或いは、プロセッサ部を有する計算機または計算機システム)とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。また、プログラムが実行されることによって実現される処理のうちの少なくとも一部が、ハードウェア回路によって実現されてもよい。
図21は、本発明の第一の実施例の概要を示す模式図である。
第一の実施例に係るブロックチェーンシステム(分散コンピューティングシステムの一例)が、1以上のノードの一例である1以上のサーバ120(例えばサーバ1〜4)で構成されているとする。1以上のサーバ120が存在する1以上の拠点101(例えば拠点1〜4)がある。
また、サーバ1が、データ1〜4を保持しているとする。サーバ2が、データ1を保持しているとする。サーバ3が、データ1〜3を保持しているとする。サーバ4が、データ1および4を保持しているとする。データ1〜4の各々は、データセットの一例であり、後述のブロックチェーンデータである。
サーバ1で障害が発生したとする。図21の説明において、障害が発生したサーバ1を「障害サーバ1」と言う。
図21に示すように、障害サーバ1(リカバリ対象のノードの一例)が保持しているデータ1〜4と同じデータ1〜4を保持するサーバ2〜4が、同一の拠点に存在するとは限らない。このため、或るデータのリストアは短時間で済んでも別のデータのリストアに長時間かかれば、障害サーバ1のリカバリに長時間かかる。
一比較例として、いずれのサーバで障害が生じても予め決められている拠点2がリストア先とされ、拠点2内のサーバがリストア先サーバとされることが考えられる。しかし、一比較例では、障害サーバ1が保持しているデータ1〜4と同じデータ1〜4を、拠点3内のサーバ3や拠点4内のサーバ4から拠点2内のサーバに転送する必要が生じ、リカバリに長時間かかる。
そこで、本実施例では、ブロックチェーン管理プログラム300が、障害ノード1が保持しているデータ1〜4と同じデータ1〜4を保持しているサーバ2〜4が存在する拠点2〜4を特定する。そして、ブロックチェーン管理プログラム300が、データ1〜4のリストア先となるサーバの拠点であるリストア先拠点を、複数の拠点1〜4から、特定した拠点2〜4を基に決定する。図21の例では、拠点3が、リストア先拠点として決定される。その後、リストア先拠点3内のサーバ5がリストア先サーバとして選択される。サーバ2〜4からサーバ5にデータ1〜4が転送(リストア)される。
以下、図面を用いて本発明の第一の実施例を詳細に説明する。
図1は、本発明の第一の実施例に係るブロックチェーンシステムの概略構成を示すブロック図である。
ブロックチェーンシステムは、分散コンピューティングシステムの一例であり、ネットワーク110を介して1以上のクライアント100と接続された1以上(典型的には複数)のサーバ120と、1以上の管理サーバ130とを備えている。
クライアント100は、1以上のサーバ120が提供するブロックチェーンサービス(分散コンピューティングサービスの一例)を利用するために使用する計算機である。クライアント100では、ブロックチェーンサービスを利用するためのクライアントプログラムが動作する。クライアントプログラムをサーバ120で動作させることで、サーバ120がクライアント100を兼用してもよい。
ネットワーク110は、クライアント100と、サーバ120と、管理サーバ130と、を相互に接続するネットワークである。ネットワーク110は、例えばLocal Area Network(LAN)やWide Area Network(WAN)である。
サーバ120は、クライアント100に対してブロックチェーンサービスを提供する計算機である。サーバ120は、ネットワークインタフェース150、ディスクドライブ180、ディスクコントローラ160、メモリ170、および、それらに接続されたCPU140を有する。ネットワークインタフェース150が、インタフェース部の一例である。ディスクドライブ180およびメモリ170が、記憶部の一例である。ディスクコントローラ160およびCPU140が、プロセッサ部の一例である。CPU140は、メモリ170に格納されたプログラムを実行する。ネットワークインタフェース150は、クライアント100との通信に使用される。ディスクドライブ180は、PDEVの一例であり、例えば後述のブロックチェーンデータ190のようなデータセットを格納する。ディスクコントローラ160は、ディスクドライブ180への入出力を制御する。メモリ170は、プログラムやデータを格納する。ネットワークインタフェース150、ディスクドライブ180、ディスクコントローラ160、メモリ170、および、CPU140は、内部的な通信路(例えば、バス)によって接続されていてよい。なお、サーバ120は、仮想マシンでもよい。
サーバ120のメモリ170には、プログラムやデータが格納される。CPU140により実行されるプログラムは、例えば、ブロックチェーンプログラム200および取得プログラム201である。本実施例は、ブロックチェーンサービスを提供する主体が、例としてブロックチェーンプログラム200であることを前提に説明する。
ブロックチェーンプログラム200は、クライアント100に対して、他のサーバ120におけるブロックチェーンプログラム200と協調してスマートコントラクトをサービスし、クライアント100から受信したトランザクション要求に基づいてスマートコントラクトを実行する。
ディスクコントローラ160は、メモリ170に格納された各種プログラムの入出力要求に基づいて、ディスクドライブ180のデータを例えばブロック単位で入出力する。
ディスクドライブ180は、メモリ170に格納された各種プログラムが読み書きするデータを格納するための記憶デバイスである。本実施例において、ディスクドライブ180には、ブロックチェーンデータ190が格納される。
管理サーバ130は、ブロックチェーンシステムを管理する計算機であり、管理システムの一例である。「管理システム」は、一以上の計算機で構成されてよい。具体的には、例えば、管理計算機が表示デバイスを有していて管理計算機が自分の表示デバイスに情報を表示する場合、管理計算機が管理システムでよい。また、例えば、管理計算機が表示用情報を遠隔の表示用計算機に送信し表示用計算機がその情報を表示する場合(管理計算機が表示用計算機に情報を表示する場合)、管理計算機と表示用計算機とのうちの少なくとも管理計算機を含んだシステムが管理システムでよい。管理システムにおける計算機が「表示用情報を表示する」ことは、計算機が有する表示デバイスに表示用情報を表示することであってもよいし、計算機が表示用計算機に表示用情報を送信することであってもよい(後者の場合は表示用計算機によって表示用情報が表示される)。
管理サーバ130は、定められた周期でサーバ120の生存(ダウンしているか否か)の確認や、その確認結果に基づきリカバリ処理を行ったり、ブロックチェーンシステム管理者(以下、管理者)からブロックチェーンシステムに関する情報の登録を受け付けたりする。管理サーバ130は、ネットワークインタフェース50(インタフェース部の一例)、メモリ70(記憶部の一例)およびそれらに接続されたCPU40(プロセッサ部の一例)を有する。メモリ70が、ブロックチェーン管理プログラム300を格納する。ブロックチェーン管理プログラム300は、CPU40により実行されることで、サーバ120の生存を定期的に確認し、ダウンしていればリカバリ処理を行う。なお、ブロックチェーン管理プログラム300が、クライアント100およびサーバ120のいずれかで動作されてもよく、その場合、クライアント100が管理サーバ130を兼用してもよいし、サーバ120が管理サーバ130を兼用してもよい。
ブロックチェーンシステムを構成する1以上(典型的には複数)のサーバ120が、1以上(典型的には複数)の拠点101に存在する。各拠点101は、データセンタまたは同一のネットワークセグメントである。少なくとも1つの拠点101に管理サーバ130が配置されてよい。例えば、クラウド環境においては、多数のデータセンタが存在し、各データセンタ内に仮想マシンが作成され、それら仮想マシンは拠点101間のネットワーク110により接続される。
図2は、ブロックチェーンプログラム200の機能構成を示すブロック図である。なお、図2の説明において、図2に示すブロックチェーンプログラム200を実行するサーバ120を、「自サーバ120」と言い、自サーバ120以外のサーバ120のうちの少なくとも1つを「他サーバ120」と言う。また、図2に示すブロックチェーンプログラム200を実行するサーバ120が存在する拠点101を「自拠点101」と言い、自拠点101以外の拠点101のうちの少なくとも1つを「他拠点101」と言う。
ブロックチェーンプログラム200は、スマートコントラクト210と、トランザクション処理モジュール220と、サーバ追加処理モジュール230と、チャネル更新処理モジュール240と、を備える。
スマートコントラクト210は、自サーバ120のCPU140によって実行される。スマートコントラクト210は、例えば、仮想通貨や証券といった金融資産の取引を処理するためのプログラムである。なお、スマートコントラクト210は複数種存在してもよい。トランザクションとスマートコントラクト210は、1:1、1:N(Nは2以上の整数)、M:1(Mは2以上の整数)、またはM:Nで対応してよい。
トランザクション処理モジュール220は、クライアント100からのトランザクション要求を契機として、自サーバ120のCPU140によって実行される。トランザクション処理モジュール220は、トランザクション要求を受信し、当該トランザクション要求に基づいて、対応するスマートコントラクト210を実行する。さらに、トランザクション処理モジュール220は、実行結果を、当該モジュール220を実行するサーバ120が属する1以上のチャネルに属する1以上の他サーバ120に分配し、確定した上で、クライアント100にトランザクション処理結果を応答する。ここで、「チャネル」とは、ブロックチェーンシステムにおけるデータ共有範囲を意味し、具体的には、1以上のサーバ120で構成されたグループのことである。同一チャネルに属するサーバ120間のみでデータの共有を行うことができる。
サーバ追加処理モジュール230は、管理者が新たなサーバ120を追加した際に、管理者からの指示に基づいて、自サーバ120のCPU140によって実行される。サーバ追加処理モジュール230は、他拠点101のサーバ120との通信速度を計測し、拠点間通信速度情報600を更新する。このとき、自拠点101または他拠点101内に複数のサーバ120が存在する場合は、サーバ追加処理モジュール230は、例えば、自サーバ120と自拠点101または他拠点101内の2以上の他サーバ120との通信速度に基づく通信速度(例えば、平均速度、最高速度および最低速度のうちのいずれか)を求め(または、自拠点101または他拠点101内の代表他サーバとの通信速度を求め)、自拠点101内の通信速度、または、他拠点101との通信速度として、拠点間通信速度情報600を更新する。また、自拠点101内のサーバ120が自サーバ120のみの場合は、自サーバ120のネットワークインタフェース150(例えばNIC(Network Interface Card))の限界速度が、自拠点101内の通信速度でもよい。
チャネル更新処理モジュール240は、管理者がチャネルを作成する際や、サーバ120をチャネルに加える際に利用される。具体的には、例えば、管理者は、サーバ120上のブロックチェーンプログラム200に、サーバIDとチャネルIDを指定したチャネル作成指示を与える。チャネル更新処理モジュール240は、そのチャネル作成指示に応答して、その指示で指定されたサーバIDをもつエントリの参加チャネルIDリスト420(図4参照)に、チャネル作成指示で指定されたチャネルIDを加える。なお、そのようなエントリが存在しない場合、チャネル更新処理モジュール240は、エントリを新規に作成する。ブロックチェーンプログラム200が、クライアント100から、チャネルIDを指定したトランザクション要求を受信した場合、その要求に従うトランザクションを実行し、その指定されたチャネルIDに属する他サーバ120上のブロックチェーンプログラム200に、トランザクションの実行結果を配信する。
図3は、ブロックチェーン管理プログラム300の構成例を示す図である。
ブロックチェーン管理プログラム300は、リカバリ処理モジュール310と、拠点決定モジュール320と、定期監視モジュール330とを有し、サーバ情報400と、累計データ量情報500と、拠点間通信速度情報600と、を管理する。
リカバリ処理モジュール310は、ハードビート信号の断絶などでサーバ120のダウンを検知し、拠点決定モジュール320を利用して新サーバを作成するべき位置(以下、リストア先拠点)を判断し、そのリストア先拠点にサーバ120を新たに作成する。なお、作成するサーバは仮想マシンでもよい。そして、リカバリ処理モジュール310は、ダウンしたサーバ120が保持していたデータを、リストア先拠点を判断する際に利用した情報の少なくとも一部を基に、通信速度が高速であるサーバから優先的にリストア先拠点におけるリストア先サーバにリストアする。
拠点決定モジュール320は、サーバ情報400と、累計データ量情報500と、拠点間通信速度情報600と、を基に、ダウンしたサーバが所持していた全データを最短時間でリストア可能なリストア先拠点を決定する。
定期監視モジュール330は、あらかじめ定められたスケジュールに基づいて、管理サーバ130のCPU40によって定期的に実行され、ブロックチェーンデータ190の容量の合計を各チャネルについて求め、累計データ量情報500を更新する。
サーバ情報400は、サーバ、チャネルおよび拠点の関係を示す情報である。累計データ量情報500は、ブロックチェーンデータ190の合計容量を各チャネルについて示す情報である。拠点間通信速度情報600は、各拠点間の通信速度を示す情報であり、サーバ120の追加時または予め定められた周期にてブロックチェーンプログラム200により更新される。
図4は、サーバ情報400の構成例を示す図である。
サーバ情報400は、例えばテーブルであり、サーバ毎にエントリを有する。各エントリは、サーバID410、参加チャネルIDリスト420および拠点ID430といった情報を格納する。以下、1のサーバ120(図4の説明において「対象サーバ120」)を例に取る。
サーバID410は、対象サーバ120を識別するためのIDである。参加チャネルIDリスト420は、対象サーバ120が属するチャネルを識別するためのIDの一覧である。拠点ID430は、対象サーバ120が属する拠点を識別するためのIDである。
図5は、累計データ量情報500の構成例を示す図である。
累計データ量情報500は、例えばテーブルであり、チャネル毎にエントリを有する。各エントリは、チャネルID510および累計データ量520といった情報を格納する。以下、1のチャネル(図5の説明において「対象チャネル」)を例に取る。
チャネルID510は、対象チャネルのIDである。累計データ量520は、対象チャネルが扱うデータの合計容量(累計データ量)を示す。
図6は、拠点間通信速度情報600の構成例を示す図である。
拠点間通信速度情報600は、例えば、拠点ID610と拠点ID620とのマトリックスである。各セルは、当該セルに対応した拠点ID610が示す拠点と、当該セルに対応した拠点ID620が示す拠点との間の通信速度を示す値を格納する。
以下、本実施例で行われる処理の一例を説明する。
図7は、トランザクション処理のフローチャートの一例である。
ブロックチェーンプログラム200のトランザクション処理モジュール220は、クライアント100からトランザクション要求を受信する(S710)。トランザクション要求は、チャネルIDやパラメータ(例えば、スマートコントラクトを指定するパラメータ)を含む。
次に、トランザクション処理モジュール220は、トランザクション要求で指定されたスマートコントラクト210を実行する(S720)。ここで、スマートコントラクトの実行結果、すなわち、戻り値やブロックチェーンデータ190に反映するデータは、合意形成処理で使用するためメモリ170に退避しておく。
そして、トランザクション処理モジュール220は、合意形成処理を実施する(S730)。合意形成処理は、複数のサーバ120でアトミックにスマートコントラクト実行結果をブロックチェーンデータ190に書き込むために行われる。
次に、トランザクション処理モジュール220は、トランザクション要求に含まれるチャネルIDのチャネルに属するサーバ120にスマートコントラクトの実行結果を配信する(S740)。
そして、トランザクション処理モジュール220は、スマートコントラクトの実行結果をブロックチェーンデータ190に書き込む(S750)。
最後に、トランザクション処理モジュール220は、トランザクション要求に対する応答をクライアント100に送信する(S760)。
図8は、サーバ追加処理のフローチャートの一例である。管理者などが新たなサーバ120を拠点101に追加したことを契機として、サーバ追加処理が行われる。以下、図8の説明において、追加されたサーバ120を「追加サーバ120」と言い、サーバ120の追加先の拠点101を、「追加先拠点101」と言う。
まず、追加サーバ120内の取得プログラム201が、追加サーバ120のサーバIDと、追加先拠点の拠点IDとを、ブロックチェーン管理プログラム300に通知する(S810)。ブロックチェーン管理プログラム300は、その通知に基づいてサーバ情報400を更新する(例えば、追加サーバ120に対応したエントリを追加し、当該エントリに、サーバID及び拠点IDを格納する)。
次に、追加サーバ120内の取得プログラム201が、追加サーバ120と他拠点内のサーバ120との通信速度を計測する(S820)。
そして、追加サーバ120内の取得プログラム201が、計測した通信速度を、ブロックチェーン管理プログラム300に通知する(S830)。ブロックチェーン管理プログラム300は、その通知された通信速度に基づいて拠点間通信速度情報600を更新する。更新後に新たに採用する値は、例えば、古い値(既に登録されている値)とS830により通知された値との平均値、最大値および最小値のいずれでもよい。
図9は、リカバリ処理のフローチャートの一例である。リカバリ処理は、例えば、あらかじめ定められたスケジュールに基づいて実行される。
リカバリ処理モジュール310は、各サーバ120について、ハートビート信号などを基に、サーバ120がダウンしているか否かを判断する(S910)。いずれかのサーバ120がダウンしていると判断された場合(S910:Yes)、S920が行われる。以下、ダウンしたサーバ120を「障害サーバ120」と言う。
次に、リカバリ処理モジュール310は、拠点決定モジュール320にリストア先拠点決定処理を実行させることで、リストア先拠点を特定する(S920)。
次に、リカバリ処理モジュール310は、S920で特定したリストア先拠点におけるサーバをリストア先サーバとして選択するリストア先サーバ選択処理を実行する(S930)。リストア先サーバ選択処理は、例えばサーバ情報400を基に行われる。なお、リストア先サーバは、新たに作成されたサーバでもよいし、既存の予備のサーバであってもよい。新たに作成されたサーバは、例えば、クラウドコンピューティングシステムなどが提供するAPI(Application Programming Interface)を利用して自動作成されたサーバでもよいし、管理者によって手動作成されたサーバでもよい。
最後に、リカバリ処理モジュール310は、障害サーバ120が保持していたブロックチェーンデータ190と同じデータ(以下、リストア対象データ)をリストア先サーバにリストアするデータリストア処理を実行する(S940)。データリストア処理は、各リストア対象データについて、例えば、下記のうちのいずれかでよい。なお、同一のリストア対象データを格納している他サーバが2以上ある場合、リストア先拠点間との通信速度が最も早い拠点101の他サーバ120がリストア元サーバとされてよい。
・リカバリ処理モジュール310が、他サーバ120からリストア対象データを読み込み、当該リストア対象データをリストア先サーバ120に書き込む。
・リカバリ処理モジュール310が、リストア元サーバ120にリストア指示を送信する。リストア指示には、例えば、リストア対象データのIDとリストア先サーバのIDとが指定されている。当該リストア指示を受けたリストア元サーバ120(例えばブロックチェーンプログラム200)は、リストア指示で指定されているリストア対象データを、そのリストア指示で指定されているリストア先サーバに書き込む。
・リカバリ処理モジュール310が、リストア先サーバ120にリストア指示を送信する。リストア指示には、例えば、リストア対象データのIDとリストア元サーバのIDとが指定されている。当該リストア指示を受けたリストア先サーバ120(例えばブロックチェーンプログラム200)は、リストア指示で指定されているリストア対象データを、そのリストア指示で指定されているリストア元サーバから読み込む。
図10は、リストア先拠点決定処理のフローチャートの一例である。リストア先拠点決定処理は、リカバリ処理モジュール310からの要求、または、管理者からの指示に応答して実行されてよい。当該要求または当該指示では、障害サーバのIDが指定されている。
まず、拠点決定モジュール320は、指定されたサーバID(障害サーバのサーバID)に対応した参加チャネルIDリスト420を参照して、障害サーバが属するチャネルを特定する(S1010)。リカバリ処理では、ここで特定したチャネルに属する全ブロックチェーンデータ190と同じデータ(リストア対象データ)を他サーバ120から取得する必要がある。
次に、拠点決定モジュール320は、各拠点について、S1030を行う。以下、1の拠点(図10の説明において「対象拠点」)を例に取る。
拠点決定モジュール320は、累計データ量情報500と拠点間通信速度情報600とを基に、全リストア対象データ(S1010で特定した全チャネルが扱うブロックチェーンデータ)を対象拠点に転送するのに要する転送時間である全データ転送時間を算出する(S1030)。全データ転送時間は、S1030で特定されたX個のチャネル(Xは自然数)にそれぞれ対応したXの転送時間の合計である。各チャネルについて、転送時間は、リストア対象データのデータ量(累計データ量)と、リストア対象データを保持する拠点と対象拠点間の通信速度とを基に算出される(例えば、転送時間=累計データ量/通信速度)。或るチャネルについて、リストア対象データを保持する拠点が2以上存在する場合、2以上の転送時間があるが、その2以上の転送時間のうちのいずれかの転送時間の一例として最短の転送時間が、当該チャネルについての転送時間とされる。言い換えれば、2以上の拠点のうち対象拠点間との通信速度が最も早い拠点が、リストア元の拠点として採用される。
このようにして、各拠点について、全データ転送時間が算出される。拠点決定モジュール320は、全ての全データ転送時間のうちのいずれかの全データ転送時間の一例として最短の全データ転送時間に対応した拠点を、リストア先拠点として決定する(S1040)。拠点決定モジュール320は、決定したリストア先拠点の拠点IDを、出力する(S1050)。具体的には、例えば、拠点IDは、リカバリ処理モジュール310に出力されてもよいし、管理者に対して表示されてもよい。
なお、上記の例では説明の簡単のため、S1030が、全ての拠点101について行われるが、S1030が行われる拠点は、例えば、障害サーバが属していたチャネルと同一のチャネルに属するサーバ120が存在する拠点101のみに限定してもよい。例えば、図4を例に取り説明すると、サーバ1001(サーバIDが“1001”であるサーバ)が障害サーバの場合、サーバ1001が属するチャネルAに属する他サーバが存在する拠点は拠点6002(拠点IDが“6002”の拠点)および拠点6003のみであり、その2つ拠点のみを、S1030が行われる拠点(すなわち、S1030の説明での「対象拠点」となる拠点)とすることもできる。
また、S1030およびS1040のステップを省くこともできる。例えば、図4を例に取り説明すると、サーバ1006が障害サーバの場合、サーバ1006が属するチャネルEに属する他サーバが存在する拠点は6005のみであり、拠点6005の拠点IDがリストア先拠点の拠点IDとしてS1050にて出力されてもよい。
図11は、定期監視処理のフローチャートの一例である。定期監視処理は、管理者からの指示に応答して、または、あらかじめ定められたスケジュールに基づいて実行される。
定期監視モジュール330は、全てのチャネルについて、S1120を行う。以下、1のチャネルを例に取る(図11の説明において「対象チャネル」)。
定期監視モジュール330は、対象チャネルが扱うデータ量の合計、すなわち累計データ量を算出する(S1120)。S1120は、例えば、定期監視モジュール330が、各サーバ120のブロックチェーンデータ190の容量を取得することで実現可能である。
定期監視モジュール330は、各チャネルについての累計データ量を累計データ量情報500に登録することにより累計データ量情報500を更新する(S1130)。
また、定期監視処理において、拠点間通信速度情報600が更新されてもよい。例えば、定期監視モジュール330は、S1120において、対象拠点と他の各拠点との通信速度の計測を対象拠点内のサーバに依頼し、S1130において、その依頼に応答して通知された通信速度を基に、拠点間通信速度情報600を更新してもよい。
以上、本実施例によれば、サーバ情報400と、累計データ量情報500と、拠点間通信速度情報600とを基に、リストア先拠点として、全データ転送時間が最短となる拠点が決定される。このため、複数のサーバにデータを分散保存するブロックチェーンシステムにおいて、データの高可用化のためのリカバリに要する時間を短縮できる。リカバリに要する時間が短縮されることにより、ブロックチェーンシステムのトランザクション処理性能が低下する時間を短縮できる。
以下、図面を用いて本発明の第二の実施例を詳細に説明する。その際、第一の実施例との相違点を主に説明し、第一の実施例との共通点については説明を省略または簡略する。第二の実施例では、ファイルが、データセットの一例である。
図12は、本発明の第二の実施例に係る分散ファイルシステムの概略構成を示すブロック図である。分散ファイルシステムは、分散コンピューティングシステムの一例である。
クライアント1200が、ネットワークインタフェース1250、メモリ1270、および、それらに接続されているCPU1240を有する。ネットワークインタフェース1250は、ネットワーク110に接続される。メモリ1270が、クライアントプログラム1300を格納している。
サーバ1220内のメモリ170が、分散プログラム1400を格納する。CPU140が、分散プログラム1400を実行する。ディスクドライブ180が、ファイルデータ1239を格納する。
管理サーバ1230内のメモリ70が、管理プログラム1500を格納する。CPU40が、管理プログラム1500を実行する。
なお、管理プログラム1500およびクライアントプログラム1300の少なくとも1つを管理サーバ1230で動作させることで、管理サーバ1230が、クライアント1200およびサーバ1220のうちの少なくとも1つを兼用してもよい。なお、クライアント1200、サーバ1220および管理サーバ1230のうちの少なくとも1つは、仮想マシンでもよい。本実施例では、分散ファイルサービスを提供する主体が、例として分散プログラム1400である。また、拠点の図示は省略されているが、第一の実施例と同様、第二の実施例においても、拠点101は存在する。
分散プログラム1400は、クライアント1200に対して、他のサーバ1220における分散プログラム1400と、管理プログラム1500と、協調して分散ファイルシステムをサービスし、クライアント1200から受信したファイル読み書き要求に基づいてファイル内容の取得および保存を行う。
図13は、クライアントプログラム1300の機能構成を示すブロック図である。
クライアントプログラム1300は、読込み処理モジュール1310と、書込み処理モジュール1320と、を備える。
読込み処理モジュール1310は、分散ファイルシステム利用者(以下、利用者)のファイル読込み指示を契機として、クライアント1200のCPU1240によって実行される。読込み処理モジュール1310は、ファイルを読み込むべきサーバ1220を管理プログラム1500に問い合わせ、その問合せに応答して回答されたサーバ1220に対して、読込み要求を送信する。
書込み処理モジュール1320は、利用者のファイル書込み指示を契機として、クライアント1200のCPU1240によって実行される。書込み処理モジュール1320は、ファイルを書き込むべきサーバ1220を管理プログラム1500に問い合わせ、その問合せに応答して回答されたサーバ1220に対して、書込み要求を送信する。
図14は、分散プログラム1400の機能構成を示すブロック図である。
分散プログラム1400は、ファイル読込みモジュール1410と、ファイル書込みモジュール1420と、サーバ追加処理モジュール230と、を備える。
ファイル読込みモジュール1410は、クライアントプログラム1300からの読込み要求に基づいて、その要求で指定されたファイルを読み込み、読み込んだファイルをクライアントプログラム1300に返す。
ファイル書込みモジュール1420は、クライアントプログラム1300からの書込み要求に基づいて、その要求で指定されたファイルを書き込む。さらに、ファイル書込みモジュール1420は、書込み対象のファイルに対応したファイルサイズ1820(図18参照)を、書込み後のファイルサイズに更新する。また、書込み要求がレプリケーション用の書込み要求でない場合、ファイル書込みモジュール1420は、書込み対象のファイルに対応したマスタサーバID1830として、自サーバ(図14の分散プログラム1400を実行するサーバ)のサーバIDを格納する。また、書込み要求がレプリケーション用の書込み要求であった場合、ファイル書込みモジュール1420は、書込み対象のファイルに対応したレプリケーション先サーバIDリスト1840に、自サーバのサーバIDを加える。
図15は、管理プログラム1500の構成例を示す図である。
管理プログラム1500は、保存先判断モジュール1510と、リカバリ処理モジュール310と、拠点決定モジュール1520と、レイアウト情報更新モジュール1530と、レプリケーション情報更新モジュール1540とを有し、サーバ情報1600と、レプリケーション情報1700と、ファイル情報1800と、拠点間通信速度情報600とを管理する。管理プログラム1500は、ファイル情報1800などにより、分散ファイルシステムのメタデータサーバのように振る舞い、分散プログラム1400は管理プログラム1500と協調することで分散ファイルシステムサービスを提供する。また、管理プログラム1500は、リカバリ処理モジュール310などにより、分散ファイルシステムにおけるリカバリ処理などの運用管理も行う。
保存先判断モジュール1510は、ファイルを読み書きするべきサーバの特定処理を行う。
例えば、保存先判断モジュール1510が、クライアントプログラム1300の読込み処理モジュール1310から、ファイル名を指定した読込み問合せ(指定したファイル名のファイルを読み込むサーバの問合せ)を受信すると、保存先判断モジュール1510は、ファイル情報1800(図18参照)から、その指定されたファイル名をファイル名1810として持つエントリを特定する。そして、そのエントリのマスタサーバIDをクライアントプログラム1300に返す。
また、例えば、保存先判断モジュール1510が、クライアントプログラム1300の書込み処理モジュール1320から、ファイル名を指定した書込み問合せ(指定したファイル名のファイルを書き込むサーバの問合せ)を受信すると、保存先判断モジュール1510は、書込み先サーバIDと、レプリケーション用の書込み先サーバIDを返す。具体的には、例えば、保存先判断モジュール1510は、その指定されたファイル名がファイル情報1800に存在するかを確認する。存在した場合、保存先判断モジュール1510が、ファイル名が存在するエントリのマスタサーバIDを、書き込み先サーバIDとする。存在しない場合、保存先判断モジュール1510が、その指定されたファイル名のハッシュ値を求め、そのハッシュ値がサーバ情報1600のハッシュ値最小値1620とハッシュ値最大値1630との範囲に収まるエントリのサーバIDを、書込み先サーバIDとする。また、レプリケーション用の書込み先サーバIDに関しては、例えば、保存先判断モジュール1510が、レプリケーション情報1700(図17参照)から、先の書込み先サーバIDをレプリケーション元サーバID1710として持つエントリを特定する。そして、保存先判断モジュール1510が、そのエントリのレプリケーション先サーバID1720が含む1以上のサーバIDの少なくとも1つを(例えば、ランダムまたはラウンドロビンで選択した少なくとも1つのサーバID)を、レプリケーション用の書込み先サーバIDとする。最後に、保存先判断モジュール1510は、書込み先サーバIDと、レプリケーション用の書込み先サーバIDとをクライアントプログラム1300に返す。
拠点決定モジュール1520は、ファイル情報1800と、サーバ情報1600と、拠点間通信速度情報600と、を元に、リストア先拠点を決定する。
レイアウト情報更新モジュール1530は、利用者からのレイアウト情報更新指示を契機として、管理サーバ1230のCPU40によって実行される。レイアウト情報更新モジュール1530は、各サーバ1220が保持すべきファイルのファイル名のハッシュ値の範囲を求め、サーバ情報1600を更新する。
レプリケーション情報更新モジュール1540は、分散ファイルシステム管理者(以下、管理者)によるレプリケーション情報更新指示を契機として、管理サーバ1230のCPU40によって実行され、管理者のレプリケーション元サーバIDとレプリケーション先サーバIDの指定に基づいて、レプリケーション情報1700を更新する。
サーバ情報1600は、サーバ1220、ファイル及び拠点の関係を示す情報である。
レプリケーション情報1700は、同一のデータを保持するべきサーバ1220の情報を保持する。クライアントプログラム1300は、書込み処理において、マスタへの書き込みと同一の書込み要求を、レプリケーション対象の1以上のサーバ1220に同期的または非同期的に送信する。具体的には、例えば、クライアントプログラム1300の書込み処理モジュール1320は、まず保存先判断モジュール1510に上述の書込み問合せを送信する。保存先判断モジュール1510は、書込み問合せで指定されているファイルをどのサーバにレプリケーションするべきかをレプリケーション情報1700などを基に判断し、その判断結果を書込み処理モジュール1320に返す。そして、書込み処理モジュール1320は、先の問合せ結果に基づき、レプリケーション対象の1以上のサーバ1220に同期的または非同期的にマスタへの書き込みと同一の書込み要求を送信する。
ファイル情報1800は、分散ファイルシステムが扱う各ファイルの情報を保持する。後述するように、ファイル情報1800は、各ファイルのファイルサイズと、ファイルを保持するサーバのIDと、レプリケーション先サーバIDのリストと、を持つ。リカバリ処理において、拠点決定モジュール1520は、ファイル情報1800と、サーバ情報1600と、拠点間通信速度情報600と、を基に、リカバリが最も早く終わるリストア先拠点を決定する。
図16は、サーバ情報1600の構成例を示す図である。
サーバ情報1600は、例えばテーブルであり、サーバ毎にエントリを有する。各エントリは、サーバID1610、ハッシュ値最小値1620、ハッシュ値最大値1630、拠点ID1640およびサーバ種別1650といった情報を格納する。以下、1のサーバ1220(図16の説明において「対象サーバ1220」)を例に取る。
サーバID1610は、対象サーバ1220を識別するためのIDである。ハッシュ値最小値1620は、対象サーバが保持するべきファイルのファイル名のハッシュ値の最小値である。ハッシュ値最大値1630は、対象サーバが保持するべきファイルのファイル名のハッシュ値の最大値である。拠点ID1640は、対象サーバ1220が属する拠点を識別するためのIDである。サーバ種別1650は、対象サーバ120の種別(例えば“マスタ”または“レプリカ”)を示す。
ハッシュ値最小値1620およびハッシュ値最大値1630は、ファイル名のハッシュ値が両者の範囲に収まるファイルが、対象サーバ1220に保存されることを意図する。ハッシュ値最小値1620とハッシュ値最大値1630とに関しては、管理者からのレイアウト情報更新指示を契機として、レイアウト情報更新モジュール1530が、サーバ種別“マスタ”に対応した1以上のサーバ1220の各々について、当該サーバ1220が保持すべきファイルのファイル名のハッシュ値の範囲を求め、サーバ情報1600のハッシュ値最小値1620とハッシュ値最大値1630とを更新する。
図17は、レプリケーション情報の構成例を示す図である。
レプリケーション情報1700は、例えばテーブルであり、レプリケーション毎にエントリを有する。各エントリは、レプリケーション元サーバID1710と、レプリケーション先サーバID1720といった情報を格納する。以下、1のレプリケーション(図17の説明において「対象レプリケーション」)を例に取る。
レプリケーション元サーバID1710は、対象レプリケーションに関してレプリケーション元のサーバのIDである。対象レプリケーションに関してレプリケーション先のサーバのIDである。なお、レプリケーション先サーバID1720として格納されるサーバIDは、一つでも、複数でもよい。
レプリケーション情報1700は、管理者からのレプリケーション情報更新指示を契機として、レプリケーション情報更新モジュール1540により更新される。管理者は、分散ファイルシステムが保持するデータの冗長度に関する要件などを基に、レプリケーション先サーバID1720に指定するサーバIDの数などを決定し、レプリケーション情報更新モジュール1540にサーバIDの数のようなパラメータを指定した上記の更新指示を送信する。
図18は、ファイル情報の構成例を示す図である。
ファイル情報1800は、例えばテーブルであり、ファイル毎にエントリを有する。各エントリは、ファイル名1810、とファイルサイズ1820と、マスタサーバID1830と、レプリケーション先サーバIDリスト1740といった情報を格納する。以下、1のファイル(図18の説明において「対象ファイル」)を例に取る。
ファイル名1810は、対象ファイルのファイル名である。ファイルサイズ1820は、対象ファイルのサイズを示す。マスタサーバID1830は、対象ファイルを保存するマスタサーバ(サーバ種別1650が“マスタ”であるサーバ)のIDである。レプリケーション先サーバIDリスト1840は、対象ファイルのレプリケーション先サーバのIDのリストである。レプリケーション先サーバIDリスト1840に含まれるサーバIDの数は、対象ファイルの重要度(例えば、ファイル識別子、更新頻度またはファイルサイズなどによって決定された値)に応じて決められてよい。
クライアントプログラム1300の書込み処理モジュール1320による書込み要求またはレプリケーション用書込み要求を、分散プログラム1400のファイル書込みモジュール1420が受け取った際に、ファイル書込みモジュール1420によりファイル情報1800のエントリが作成または更新される。
図19は、書込み処理のフローチャートの一例である。
まず、書込み処理モジュール1320は、管理プログラム1500の保存先判断モジュール1510に対して、書込み問合せを送信する(S1910)。具体的には、例えば、書込み処理モジュール1320は、保存先判断モジュール1510に、書込み対象のファイル名を指定した書込み問合せを送信し、保存先判断モジュール1510から、書込みサーバID(書き込みを行うべきサーバのサーバID)と、レプリケーション用サーバID(レプリケーション用の書き込みを行うべきサーバのサーバID)とを受ける。
次に、書込み処理モジュール1320は、S1910で得た書込みサーバIDに対応したサーバ1220に、書込み対象のファイルの書込み要求を送信する(S1920)。その書込み要求は、分散プログラム1400のファイル書込みモジュール1420により処理される。
最後に、書込み処理モジュール1320は、S1910で得たレプリケーション用サーバIDに対応したサーバ1220に、レプリケーション用の書込み要求を送信する(S1930)。レプリケーション用の書込み要求は、分散プログラム1400のファイル書込みモジュール1420により処理される。S1930は、非同期的に行われる場合もある。
図20は、リストア先拠点決定処理のフローチャートの一例である。リストア先拠点決定処理は、リカバリ処理モジュール310の要求に応答して実行されるが、リストア先拠点の助言を得るために管理者からの指示に応答して実行されてもよい。
拠点決定モジュール1520は、全ての拠点101について、S2010〜S2030を行う。以下、一の拠点を例に取る(図20の説明において「対象拠点」)。
次に、拠点決定モジュール1520は、全てのファイルについて、S2010及びS2020を行う。以下、一のファイルを例に取る(図20の説明において「対象ファイル」)。
拠点決定モジュール1520は、対象ファイルがレプリケーション対象か否を判断する(S2010)。対象ファイルに対応したマスタサーバID1830が、障害サーバのサーバIDの場合、S2010の判断結果が真となる。
S2010の判断結果が真の場合(S2010:Yes)、拠点決定モジュール1520は、対象ファイルのファイル転送時間を、拠点間通信速度情報600と、サーバ情報1600と、ファイル情報1800と、を基に算出する(S2020)。具体的には、例えば、拠点決定モジュール1520は、以下の処理を行う。
・拠点決定モジュール1520は、対象ファイルに対応したレプリケーション先サーバIDリスト1840に含まれる1以上のレプリケーション先サーバIDを特定する。
・拠点決定モジュール1520は、サーバ情報1600から、特定した1以上のレプリケーション先サーバIDに対応した1以上の拠点(図20の説明において、「レプリケーション先拠点」)を特定する。
・拠点決定モジュール1520は、1以上のレプリケーション先拠点の各々について、拠点間通信速度情報600から、対象拠点と当該レプリケーション先拠点との間の通信速度を特定する。これにより、1以上のレプリケーション先拠点にそれぞれ対応した1以上の通信速度が特定される。
・拠点決定モジュール1520は、特定された1以上の通信速度と、対象ファイルに対応したファイルサイズ1820とを基に、ファイル転送時間を決定する。具体的には、例えば、拠点決定モジュール1520は、対象ファイルに対応したファイルサイズ1820を、1以上の通信速度のうち最も早い通信速度で除算することで、最短の転送時間を、ファイル転送時間として決定する。
このようにして、全ファイルについて、ファイル転送時間が算出される。拠点決定モジュール1520は、全ファイルのファイル転送時間の合計である全ファイル転送時間を算出する(S2030)。
このようにして、全ての拠点について、全ファイル転送時間が算出される。
次に、拠点決定モジュール1520は、全ての全ファイル転送時間のうちのいずれかの全ファイル転送時間の一例として最小の全ファイル転送時間を特定し、特定した全ファイル転送時間に対応した拠点を求める(S2040)。
最後に、拠点決定モジュール1520は、S2040で求めた拠点の拠点IDを出力する(S2050)。
以下、リストア先拠点決定処理の処理手順を、図6、 図16、図17、図18の具体例を利用して説明する。なお、本具体例では、サーバ1002(サーバIDが“1002”であるサーバ)が障害サーバであるものとする。
まず、拠点決定モジュール1520は、全ての拠点の各々について、全ファイル転送時間(リストア先サーバを当該拠点に作成した場合の、障害サーバが保持していた全ファイルの取得に要する時間)を求める。本具体例では、拠点6001〜6008が存在するため、まずは、拠点6001にリストア先サーバを設置した場合の全ファイル転送時間を求める。拠点決定モジュール1520は、ファイル情報1800の各エントリを走査し、マスタサーバIDが“1002”であるか否かを判断する(S2010)。具体例では、ファイル名“d.tar”に対応したマスタサーバIDが“1002”である。ファイル“d.tar”(ファイル名“d.tar”のファイル)は、サーバ1005と1006にレプリケーションされている。また、サーバ情報1600によれば、サーバ1005とサーバ1006は、それぞれ、拠点6005と6006に属する。拠点6001と拠点6005との通信速度は2MB/sであり、拠点6001と拠点6006との通信速度は1MB/sである。そのため、ファイル“d.tar”をより高速に取得するため、拠点決定モジュール1520は、拠点6005のサーバ1005からファイル“d.tar”の取得を行うこととし、ファイル“d.tar”のファイルサイズ“20MB”を通信速度“2MB/s”で除し、ファイル転送時間“10秒”を算出する(S2020)。
拠点決定モジュール1520は、同様の処理を全てのファイルに対しても実施し、拠点6001にリストア先サーバを設置した際の全ファイル転送時間を算出する(S2030)。
拠点決定モジュール1520は、同様の処理を、他の拠点6002〜6008に対しても実施する。その後、拠点決定モジュール1520は、拠点6001〜6008から、最小の全ファイル転送時間の拠点をリストア先拠点として特定し、特定した拠点の拠点IDを出力する(S2040)。
以上、本実施例によれば、ファイル情報1800と、サーバ情報1600と、拠点間通信速度情報600と、に基づいて、リストア先拠点として、全ファイル転送時間が最短となる拠点が決定される。このため、複数のサーバにデータが分散保存され、レプリケーション時のサーバ1220の選択方法等に起因して、サーバ間でデータ配置の偏りが生じるような分散ファイルシステムにおいて、データの高可用化のためのリカバリに要する時間を短縮できる。リカバリに要する時間が短縮されることにより、分散ファイルシステムの読み書き処理性能が低下する時間を短縮できる。
以下、上述の説明を総括する。その総括において、上述の説明に無い事項が含まれていてもよい。なお、以下の総括において、データセットの一例が、上述のブロックチェーンデータおよびファイルである。また、ノードの一例が、サーバである。また、分散コンピューティングシステムの一例が、ブロックチェーンシステムおよび分散ファイルシステムである。また、管理プログラムの一例が、ブロックチェーン管理プログラム300および管理プログラム1500である。
管理プログラムが、分散コンピューティングシステムのうちの少なくとも1つのノード又は別の計算機で実行される。管理プログラムが、
(A)複数のノードのうちのリカバリ対象のノード(例えば障害ノード)が保持している1以上のデータセットと同じ1以上のデータセットを保持している1以上のノードが存在する1以上の拠点を特定し、
(B)同じ1以上のデータセットのリストア先となるノードの拠点であるリストア先拠点を、複数の拠点から、特定した1以上の拠点を基に決定する。
リストア先拠点が、上記同じ1以上のデータセットが存在する1以上の拠点を基に決定されるので、その同じ1以上のデータセットのリストア(転送)にかかる時間を短縮することが期待できる。
上記のリストア先拠点は、複数の拠点の各々と1以上のリストア元拠点の各々との間の通信速度を基に決定されてよい。1以上のリストア元拠点の各々は、上記同じ1以上のデータセットの各々について、下記(x)または(y)でよい。
(x)当該データセットを保持しているノードが存在する拠点、
(y)当該データセットを保持している1以上のノードが存在する1以上の拠点である1以上の候補拠点のうちのいずれか。
通信速度を基にリストア先拠点が決定されるので、リストア(転送)にかかる時間を短縮することの確実性が高まることが期待できる。なお、拠点間の通信速度は、一般に、単位時間当たりの転送可能なデータ量で表現されるが、それに代えて、拠点間の距離で表現されてもよい。この場合、距離が長いほど、通信速度は低いと解釈可能である。
リストア先拠点は、複数の拠点のうち、特定した1以上の拠点にそれぞれ対応した1以上の通信速度の合計が最大の拠点でよい。これにより、リストアにかかる時間の一層の短縮が期待できる。なお、拠点間の通信速度が拠点間の距離で表現されている場合、「1以上の通信速度の合計が最大の拠点」とは、「1以上の距離の合計が最小の拠点」であってよい。
上記(y)は、1以上の候補拠点のうち、通信速度が最大である拠点でよい。これにより、リストアにかかる時間の一層の短縮が期待できる。
リストア先拠点は、複数の拠点の各々と1以上のリストア元拠点の各々との間の通信速度の他に、1以上のデータセットの各々のデータサイズに基づいて決定されてよい。通信速度が早くても転送対象のデータセットのデータサイズが大きければ、転送完了に時間がかかる。データサイズを更に考慮することで、リストアにかかる時間を短縮することの確実性が高まることが期待できる。
リストア先拠点は、複数の拠点の各々の全データ転送時間に基づいてよい。複数の拠点の各々について、全データ転送時間は、上記同じ1以上のデータセットにそれぞれ対応した1以上の転送時間の合計でよい。複数の拠点のうちの各々について、1以上のデータセットの各々に関し、転送時間は、当該拠点と当該データセットを保持しているリストア元拠点との通信速度と、当該データセットのデータサイズとに基づいてよい。全データ転送時間に基づいてリストア先拠点が決定されるので、リストアにかかる時間を短縮することの確実性が高まることが期待できる。
リストア先拠点は、複数の拠点のうち全データ転送時間が最短の拠点でよい。これにより、リストアにかかる時間の一層の短縮が期待できる。
(y)は、1以上の候補拠点のうち、転送時間が最短である拠点でよい。これにより、リストアにかかる時間の一層の短縮が期待できる。
複数の拠点は、特定された1以上の拠点でよい。これにより、通信速度を基にリストア先拠点を探す範囲(拠点の数)が絞り込まれるので、高速にリストア先拠点を決定することが期待できる。
リストア先拠点は、特定された1以上の拠点のうちのいずれかでよい。これにより、通信速度やデータサイズを考慮すること無しに(上記同じ1以上のデータセットの配置に基づいて)、リストア先拠点を決定することができ、故に、高速にリストア先拠点を決定することが期待できる。
1以上のデータセットの各々に関し、当該データセットと同じデータセットを保持している1以上のサーバの各々は、リカバリ対象のサーバと共に当該データセットのデータ共有範囲に属するサーバでよい。すなわち、データセット毎に、分散範囲の制御が可能である。
上記特定された1以上の拠点は、リカバリ対象のサーバにとって1以上のデータセットのレプリケーション先の1以上のサーバが存在する拠点でよい。すなわち、データセット毎に、分散範囲(具体的には、例えば、マスタサーバとレプリケーション先サーバ)の制御が可能である。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
例えば、地理的に離れた複数の拠点の各々において、計算機システムが存在してよい。「計算機システム」は、1以上の物理的な計算機を含む。少なくとも1つの物理的な計算機が、仮想的な計算機(例えばVM(Virtual Machine))を実行してもよいし、SDx(Software-Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージ装置の一例)又はSDDC(Software-defined Datacenter)を採用することができる。計算機は、ストレージ装置でもよい。計算機システムは、クラウドコンピューティングシステムでもよい。
120:サーバ

Claims (14)

  1. 複数の拠点に存在する複数のノードを有する分散コンピューティングシステムのうちの少なくとも1つのノード又は別の計算機に、
    (A)前記複数のノードのうちのリカバリ対象のノードが保持している1以上のデータセットと同じ1以上のデータセットを保持している1以上のノードが存在する1以上の拠点を特定し、
    (B)前記同じ1以上のデータセットのリストア先となるノードの拠点であるリストア先拠点を、前記複数の拠点から、前記特定した1以上の拠点を基に決定し、
    前記リカバリ対象拠点は、前記リストア対象ノードが存在する拠点である、
    ことを実行させるコンピュータプログラム。
  2. 前記リストア先拠点は、前記複数の拠点の各々と1以上のリストア元拠点の各々との間の通信速度を基に決定され、
    前記1以上のリストア元拠点の各々は、前記同じ1以上のデータセットの各々について、下記(x)または(y)である、
    (x)当該データセットを保持しているノードが存在する拠点、
    (y)当該データセットを保持している1以上のノードが存在する1以上の拠点である1以上の候補拠点のうちのいずれか、
    請求項1記載のコンピュータプログラム。
  3. 前記リストア先拠点は、前記複数の拠点のうち、前記特定した1以上の拠点にそれぞれ対応した1以上の通信速度の合計が最大の拠点である、
    請求項2記載のコンピュータプログラム。
  4. (y)は、前記1以上の候補拠点のうち、通信速度が最大である拠点である、
    請求項2記載のコンピュータプログラム。
  5. 前記リストア先拠点は、更に、前記1以上のデータセットの各々のデータサイズに基づいて決定される、
    請求項2記載のコンピュータプログラム。
  6. 前記リストア先拠点は、前記複数の拠点の各々の全データ転送時間に基づいており、
    前記複数の拠点の各々について、全データ転送時間は、前記同じ1以上のデータセットにそれぞれ対応した1以上の転送時間の合計であり、
    前記複数の拠点の各々について、前記1以上のデータセットの各々に関し、転送時間は、
    当該拠点と、当該データセットを保持しているリストア元拠点との通信速度と、
    当該データセットのデータサイズと
    に基づいている、
    請求項5記載のコンピュータプログラム。
  7. 前記リストア先拠点は、前記複数の拠点のうち全データ転送時間が最短の拠点である、
    請求項6記載のコンピュータプログラム。
  8. (y)は、前記1以上の候補拠点のうち、転送時間が最短である拠点である、
    請求項6記載のコンピュータプログラム。
  9. 前記複数の拠点は、前記特定された1以上の拠点である、
    請求項2記載のコンピュータプログラム。
  10. 前記リストア先拠点は、前記特定された1以上の拠点のうちのいずれかである、
    請求項1記載のコンピュータプログラム。
  11. 前記1以上のデータセットの各々に関し、当該データセットと同じデータセットを保持している1以上のサーバの各々は、前記リカバリ対象のサーバと共に当該データセットのデータ共有範囲に属するサーバである、
    請求項1記載のコンピュータプログラム。
  12. 前記特定された1以上の拠点は、前記リカバリ対象のサーバにとって前記1以上のデータセットのレプリケーション先の1以上のサーバが存在する拠点である、
    請求項1記載のコンピュータプログラム。
  13. 複数の拠点に存在する複数のノードを有する分散コンピューティングシステムのうちの少なくとも1つのノード又は別の計算機であって、
    1以上のノードと通信のための1以上のインタフェースデバイスを含んだインタフェース部と、
    前記インタフェース部に接続された1以上のプロセッサを含んだプロセッサ部と
    を有し、
    前記プロセッサ部が、
    (A)前記複数のノードのうちのリカバリ対象のノードが保持している1以上のデータセットと同じ1以上のデータセットを保持している1以上のノードが存在する1以上の拠点を特定し、
    (B)前記同じ1以上のデータセットのリストア先となるノードの拠点であるリストア先拠点を、前記複数の拠点から、前記特定した1以上の拠点を基に決定する、
    計算機。
  14. 複数の拠点に存在する複数のノードを有する分散コンピューティングシステムのうちのリカバリ対象のノードをリカバリする方法であって、
    (A)前記複数のノードのうちのリカバリ対象のノードが保持している1以上のデータセットと同じ1以上のデータセットを保持している1以上のノードが存在する1以上の拠点を特定し、
    (B)前記同じ1以上のデータセットのリストア先となるノードの拠点であるリストア先拠点を、前記複数の拠点から、前記特定した1以上の拠点を基にする、
    方法。
JP2017136209A 2017-07-12 2017-07-12 分散コンピューティングシステムにおけるデータをリカバリする方法およびシステム Active JP6990055B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017136209A JP6990055B2 (ja) 2017-07-12 2017-07-12 分散コンピューティングシステムにおけるデータをリカバリする方法およびシステム
US15/920,501 US11134121B2 (en) 2017-07-12 2018-03-14 Method and system for recovering data in distributed computing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017136209A JP6990055B2 (ja) 2017-07-12 2017-07-12 分散コンピューティングシステムにおけるデータをリカバリする方法およびシステム

Publications (2)

Publication Number Publication Date
JP2019020816A true JP2019020816A (ja) 2019-02-07
JP6990055B2 JP6990055B2 (ja) 2022-01-12

Family

ID=64999611

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017136209A Active JP6990055B2 (ja) 2017-07-12 2017-07-12 分散コンピューティングシステムにおけるデータをリカバリする方法およびシステム

Country Status (2)

Country Link
US (1) US11134121B2 (ja)
JP (1) JP6990055B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802920B2 (en) * 2018-04-18 2020-10-13 Pivotal Software, Inc. Backup and restore validation
US11386494B2 (en) * 2018-09-19 2022-07-12 Coinone Inc. Cryptocurrency trading method and system
US11611560B2 (en) * 2020-01-31 2023-03-21 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing consensus on read via a consensus on write smart contract trigger for a distributed ledger technology (DLT) platform

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010225021A (ja) * 2009-03-25 2010-10-07 Toshiba Corp ファイルバックアップ装置およびその方法
JP2013525895A (ja) * 2010-04-23 2013-06-20 コンピュヴェルデ アーベー 分散データストレージ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5362975B2 (ja) * 2007-10-17 2013-12-11 インターナショナル・ビジネス・マシーンズ・コーポレーション ストレージ・デバイス間のデータ複製を制御する制御装置、方法、プログラム及びストレージ・システム
US8521692B1 (en) * 2012-02-28 2013-08-27 Hitachi, Ltd. Storage system and method for controlling storage system
WO2014045316A1 (en) * 2012-09-20 2014-03-27 Hitachi, Ltd. Distributed backup system for determining access destination based on multiple performance indexes
US8898113B2 (en) * 2012-11-21 2014-11-25 International Business Machines Corporation Managing replicated data
US9264494B2 (en) * 2013-10-21 2016-02-16 International Business Machines Corporation Automated data recovery from remote data object replicas
US20170262345A1 (en) * 2016-03-12 2017-09-14 Jenlong Wang Backup, Archive and Disaster Recovery Solution with Distributed Storage over Multiple Clouds
US9967088B2 (en) * 2016-05-23 2018-05-08 Accenture Global Solutions Limited Rewritable blockchain
US10749668B2 (en) * 2017-05-03 2020-08-18 International Business Machines Corporation Reduction in storage usage in blockchain

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010225021A (ja) * 2009-03-25 2010-10-07 Toshiba Corp ファイルバックアップ装置およびその方法
JP2013525895A (ja) * 2010-04-23 2013-06-20 コンピュヴェルデ アーベー 分散データストレージ

Also Published As

Publication number Publication date
US20190020716A1 (en) 2019-01-17
US11134121B2 (en) 2021-09-28
JP6990055B2 (ja) 2022-01-12

Similar Documents

Publication Publication Date Title
US11010240B2 (en) Tracking status and restarting distributed replication
US11327799B2 (en) Dynamic allocation of worker nodes for distributed replication
US20200348852A1 (en) Distributed object replication architecture
US11349915B2 (en) Distributed replication and deduplication of an object from a source site to a destination site
US10824512B2 (en) Managing journaling resources with copies stored in multiple locations
US10956279B2 (en) Managing big data on document based NoSQL databases
US9772784B2 (en) Method and system for maintaining consistency for I/O operations on metadata distributed amongst nodes in a ring structure
US9286344B1 (en) Method and system for maintaining consistency for I/O operations on metadata distributed amongst nodes in a ring structure
US9305072B2 (en) Information storage system and data replication method thereof
US11734248B2 (en) Metadata routing in a distributed system
US10387273B2 (en) Hierarchical fault tolerance in system storage
US9984139B1 (en) Publish session framework for datastore operation records
US12013758B2 (en) Methods and systems for power failure resistance for a distributed storage system
JP2014044553A (ja) プログラム、情報処理装置および情報処理システム
JP6990055B2 (ja) 分散コンピューティングシステムにおけるデータをリカバリする方法およびシステム
US10719413B2 (en) Unified RCT backup for different hypervisor configurations
US10558373B1 (en) Scalable index store
US11526284B2 (en) Method and system for storing data in a multiple data cluster system
US20200387477A1 (en) Storage system and snapshot management method
CN114930281A (zh) 动态自适应分区分割
US12019885B2 (en) Information processing system and configuration management method including storage nodes connected by network
US11288005B2 (en) Method and system for generating compliance and sequence aware replication in a multiple data cluster system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210927

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211203

R150 Certificate of patent or registration of utility model

Ref document number: 6990055

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150