JP2016530598A - 非集中的な分散型コンピューティング・システム - Google Patents

非集中的な分散型コンピューティング・システム Download PDF

Info

Publication number
JP2016530598A
JP2016530598A JP2016520748A JP2016520748A JP2016530598A JP 2016530598 A JP2016530598 A JP 2016530598A JP 2016520748 A JP2016520748 A JP 2016520748A JP 2016520748 A JP2016520748 A JP 2016520748A JP 2016530598 A JP2016530598 A JP 2016530598A
Authority
JP
Japan
Prior art keywords
node
file
task
readable medium
transitory computer
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
JP2016520748A
Other languages
English (en)
Other versions
JP6132980B2 (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.)
Hitachi Data Systems Engineering UK Ltd
Original Assignee
Hitachi Data Systems Engineering UK 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 Data Systems Engineering UK Ltd filed Critical Hitachi Data Systems Engineering UK Ltd
Publication of JP2016530598A publication Critical patent/JP2016530598A/ja
Application granted granted Critical
Publication of JP6132980B2 publication Critical patent/JP6132980B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1881Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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
    • 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/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

分散型システムが、ネットワークを介して接続された複数のノードを含む。各ノードが、分散型システムにおいてノードを特定する一意識別子を有する。タスクが、分散型システム内の任意のノードから開始され、一意識別子を含む。ノードは、そのノードの一意識別子を含むタスクを受信する場合、タスクを実行する。各ノードは、各タスクをログに記憶する。ノードは、障害にあう場合、障害からリカバリした後、受信されなかったタスク、および障害が原因で完了されなかったタスクに関して分散型システムに問い合わせる。タスクは、メタデータに対応するデータを記憶するノードの位置を指定するメタデータへの帯域内アクセスを用いて得られた位置データに基づいてノード上で開始され得る。タスクは、仮想マシンを構成するファイル内にIPアドレスが符号化されるように仮想マシンを開始することを含み得る。

Description

本発明は、一般に、コンピュータ・システムに関し、より詳細には、ネットワーク化されたデバイスまたはノードの分散型システムを動作させるための技術に関する。
分散型ファイル・システムのサイズおよび帯域幅のスケーラビリティを提供するために、従来のストレージ・システムは、分散型ストレージ・システム内の複数のストレージ・ノードにわたってファイルの記憶を散在させてきた。従来、ストレージ・ノードでのファイルの記憶は分散されてきたが、ファイル・システム、処理、およびファイルのメタデータの管理は、制御ノードまたはタスク管理ノードに集中化されてきた。
従来の分散型ファイル・システムにおいて、ファイル・システム内でデータの位置を特定するための方法は、「帯域外」であると考えられるか、またはファイル・システムにアクセスするために通常使用されるプロトコルによってサポートされないメカニズムを使用してきた。帯域外メカニズムの1つの例は、ParaScale(商標)分散型ストレージ・プラットフォームで使用される。ParaScale(商標)分散型ストレージ・プラットフォームにおいては、集中化されたタスク・マネージャまたはマスタが、ネットワーク・ファイル・システム(NFS)によってエクスポートされたマウント・ポイント上でファイルを開き、「stat」動作を用いてファイルについてのキー情報を取得し、そして、サーバのアドレスなどのデータの位置の受信された拡張可能マークアップ言語(XML)情報をファイルのキー情報を用いて制御ノードのデータ位置サービスに伝達した。それから、ParaScale(商標)プラットフォームのクライアントが、サーバのアドレスを用いてデータ・タスクに着手する可能性があった。
上述のように、従来の分散型ファイル・システムは、すべてのノードのタスクを調整する役割を担う集中化されたタスク・マネージャを使用する。通常、タスク・マネージャは、タスクを実行するようにその他のノードに指示する。そのような構成は知られている順番でタスクが実行されることを可能にするが、タスク・マネージャが障害にあう場合、分散型ファイル・システムの回復力は、追加のタスクが着手され得るよりも前にタスク・マネージャが障害からリカバリしなければならないので痛手を受ける。さらに、保留中のタスクのログは、従来、共有された永続的なストレージに配置されるか、または複数のノードの間で複製されてきた。したがって、タスク・マネージャは、分散型ファイル・システムに関する単一障害点になるという問題を引き起こす。
分散型システムにおいて、システム内のノードへのIPアドレスの割り振りは、従来、動的ホスト構成プロトコル(DHCP)によって扱われてきた。仮想マシンが分散型システム内に存在する場合、DHCPは、概してDHCPがネットワーク内のすべてのシステムにIPアドレスを割り振るという点で問題を引き起こす。結果として、分散型システム内にある仮想マシンにのみIPアドレスを与えるために容易に分離され得るDHCPサーバを構成することに関して、DHCPには問題がある。
Leslie LamportによるPaxos Made Simple SIGACT News、第32巻、第4号(2001年12月)、pp.51〜58
本発明の実施形態は、概して、分散型コンピュータ・システムに関し、より詳細には、特定のタスクが開始されるべきである分散型システム内の位置を決定すること、信頼できるIPアドレスを用いる仮想マシンの作成のタスク、および分散型ストレージ・システム(本明細書においては「クラスタ」)におけるタスクの障害のリカバリのための技術を含む分散型ストレージ・システム中のタスクの発行を管理するための技術に関する。
従来の分散型システムにおける問題に鑑み、本発明の一部の実施形態においては、クラスタが、タスクがクラスタ内の任意のノードからクラスタ内の任意のその他のまたはすべてのその他のノードに発行される可能性があり、タスクが回復力および耐障害性の特徴を持って記憶され、実行される可能性があるように構成される。たとえば、クラスタは耐障害性のある分散型システムを実装するためにPaxosアルゴリズムなどの合意アルゴリズムを使用し、それによって、タスクは、分散され、クラスタ内の各ノード、ノードのサブセット、またはすべてのノードで知られている順番で処理され得る。一部の実施形態においては、障害が原因であるか否かにかかわらずノードがオフラインであり、タスクがオフラインのノードのために定義される場合、タスクは、ノードがオンラインに復帰する(たとえば、障害からリカバリする)ときに実行されなければならない。合意アルゴリズムを用いることによって、保留中のタスクが、クラスタ内の任意のノードからクラスタ内のすべてのノードへの1つまたは複数の順序付けられたメッセージおよびブロードキャストとして開始される。たとえば、参照により本明細書に援用される「Leslie LamportによるPaxos Made Simple SIGACT News、第32巻、第4号(2001年12月)、pp.51〜58」に記載された合意アルゴリズムなどの合意アルゴリズム、またはその変化形が、使用され得る。結果として、上述の実施形態は、有利なことに、耐障害性およびノードの回復力を与える非集中的な分散型システムを提供する。
さらに、本発明のその他の実施形態においては、クラスタ内のノード上で仮想マシン(VM)を開始するタスクが開始されるとき、仮想マシンによって使用される媒体アクセス制御(MAC)アドレスを含む仮想マシンの特定の特徴を含む構成ファイルが参照される。本発明のさまざまな実施形態によれば、仮想マシンによって使用されるIPアドレスが、MACアドレス内に符号化される。結果として、VMは、クラスタ内で使用されるその他のIPアドレスと競合しないIPv4などのIPアドレスを与えられる可能性があり、動的ホスト構成プロトコル(DHCP)サーバは、仮想マシンにIPアドレスを割り振ろうと試みるために頼られる必要がない。結果として、上述の実施形態は、有利なことに、ホストするノードからハイパーバイザを通じて仮想マシンにIPアドレスを伝達するための経路としてMACアドレスを使用して、IPアドレスが仮想マシンのために設定されることを可能にする。
またさらに、本発明のさらにその他の実施形態においては、ファイル・システムが、クラスタ内のファイルのデータの位置を指定する特別な拡張子を有する対応するマッピング・ファイルをあらゆるファイルが有する拡張された名前空間を有する。マッピング・ファイルを指定するために特別な拡張子を含むように名前空間を拡張することによって、マッピング・ファイルは、通常はファイル・システム内に記憶されたデータにアクセスするために使用されるネットワーク・ファイル・システム(NFS)v3.1などのプロトコルを用いてファイル・システム内でアクセスされ得る。しかし、マッピング・ファイルは、ファイル・システムの通常のディレクトリのリスト内では見えない。結果として、上述の実施形態は、有利なことに、データ自体にアクセスするために使用される同じメカニズムを用いてクラスタ内のデータの位置情報にアクセスすることを可能にする。
本発明の実施形態に係るクラスタ化されたコンピュータ・システムのブロック図である。 本発明の実施形態に係るクライアントのブロック図である。 本発明の実施形態に係るノードのブロック図である。 本発明の実施形態に係るノードのストレージ・デバイスの詳細なブロック図である。 本発明の実施形態に係るノードのチャネル・ボードのブロック図である。 本発明の実施形態に係るノードのプロセッサ・ボードのブロック図である。 本発明の実施形態に係るノードのドライブ・ボードのブロック図である。 本発明の実施形態に係るファイル・システムへのクライアントのアクセスのブロック図である。 本発明の実施形態に係るファイル・システムへのクライアントのアクセスのブロック図である。 本発明の実施形態に係るファイル・システムへのクライアントのアクセスのブロック図である。 本発明の実施形態に係るノードのストレージ・デバイスのブロック図である。 本発明の実施形態に係るノードのストレージ・デバイスのブロック図である。 本発明の実施形態に係るノードのストレージ・デバイスのブロック図である。 本発明の実施形態に係るノードの機能ブロック図である。 本発明の実施形態に係る管理テーブルの図である。 本発明の実施形態に係るタスクのログの図である。 本発明の実施形態に係るノードのネットワーク・レイヤ、タスク・キュー・レイヤ、および実行レイヤの抽象的なブロック図である。 本発明の実施形態に係るUUID割り振りプロセスの図である。 本発明の実施形態に係るタスク実行プロセスの図である。 本発明の実施形態に係るノード再開プロセスの図である。 本発明の実施形態に係る符号化されたMACアドレスの構造を示す図である。 本発明の実施形態に係るIPアドレスの符号化の図である。 本発明の実施形態に係るハイパーバイザ・レイヤ、MAC/IPレイヤ、および仮想マシン・レイヤの抽象的なブロック図である。 本発明の実施形態に係る構成プロセスの図である。 本発明の実施形態に係るファイル・システムのブロック図である。 本発明の実施形態に係るファイル、マッピング・ファイル、および位置応答の図である。 本発明の実施形態に係るファイルとマッピング・ファイルとの間の関係を示す図である。 本発明の実施形態に係るファイル属性およびメタデータを更新するためのプロセス・フローの図である。 本発明の実施形態に係るマッピング・システムへのクライアントのアクセスのプロセス・フローの図である。 本発明の実施形態に係るマッピング・システムへのクライアントのアクセスのより詳細なプロセス・フローの図である。
本明細書において検討される実施形態は、本発明の1つまたは複数の例を示す。本発明のこれらの実施形態が図面を参照して説明されるとき、本明細書において説明される方法および/または特定の構造のさまざまな修正または適応が、当業者に明らかになる可能性がある。本発明の教示に依拠するすべてのそのような修正、適応、または変形は、本発明の範囲内にあると考えられる。したがって、本発明は本明細書において示される実施形態のみにまったく限定されないことが理解されるので、この説明および図面は限定的な意味にとられるべきでない。
クラスタ化されたコンピュータ・システム
さまざまな実施形態によれば、クラスタ化されたストレージ・システムなどのスケーラブルな分散型コンピュータ・システム(本明細書においては「クラスタ」と呼ばれる)が、ファイル・システム内のファイルの名前空間およびメタデータの属性をファイルの実際のデータ内容と分ける。一実施形態においては、サーバとして実装される可能性がある1つまたは複数のノードが、ファイルの名前空間、メタデータ、および位置情報を扱う役割を担う。さらに、ノードは、ファイル・システム内のファイルにアクセスする役割を担い、物理的な記憶空間を提供する役割を担う可能性もある。各ノードは、通常、シェアード・ナッシング・アーキテクチャを使用し、つまり、各ノードは、ローカルにあるかまたはストレージ・エリア・ネットワーク(SAN)などを通じて取り付けられるかに関わりなく、クラスタ内のその他のノードと共有されない少なくとも1つの対応するストレージ・デバイスを有する。
一部の実施形態に係るクラスタにおいては、ファイル・システム自体が、クラスタ中に広がっており、クラスタ内の特定のノードまたはノードのサブセットに物理的に結びつけられない。したがって、クラスタは、いくつかの次元でスケーリングされ得る。ファイル・システムに記憶されるファイルにサービスを提供するための容量および帯域幅をスケーリングするために、ノードが追加される可能性がある。各ノードは、処理能力と記憶能力との両方を提供する可能性がある。さらに、クラスタ中に動作の負荷を再配分するために、ノードが追加される可能性がある。
一部の実施形態においては、ユーザ(たとえば、クライアント・コンピュータ・システム)が、ファイル・システムをマウントするための修正なしに業界標準のプロトコルを使用し、ノードからクラスタ内のファイルにアクセスし、クラスタ上および/またはクラスタ内でその他のタスクを実行し得る。一部の実施形態において、クラスタは、ファイル・システムにアクセスするために使用されるノードに無関係にユーザがファイル・システム全体を見ることを可能にするグローバルな名前空間を提供する。
したがって、本発明の一実施形態の分散型シェアード・ナッシング・ストレージ・システムは、ファイル・システム内の複数のファイルに関連するメタデータ、オブジェクト識別子、および位置情報を記憶するノード、ならびに複数のファイルを記憶する複数のノードを含む。クラスタ内のノードは、クライアントからファイル・システム内のファイルの要求を受信し、クラスタ内のファイルの位置を決定することができる。ノードは、その他のノードと通信して、ファイルに関連するメタデータ、オブジェクト識別子、および位置情報を決定する。そして、ノードは、クラスタから受信されたメタデータ、オブジェクト識別子、および位置情報を用いて、クライアントからの要求を満足させるために、ファイル・システム内のファイルにアクセスする。
図1は、本発明の一実施形態に係る分散型コンピュータ・システム(たとえば、クラスタ)100の図である。クラスタ100は、クライアント110および120、ノード130、140、150、160、および170を含む。クライアント110および120、ならびにノード130、140、150、160、および170は、通信ネットワーク180を用いて通信可能なように結合される。代替的に、クライアント110および120、ならびにノード130、140、150、160、および170を接続する1つまたは複数のネットワークが存在する可能性がある。
概して、クライアント110および120は、パーソナル・コンピュータ(PC)、ワークステーション、ラップトップ、携帯情報端末(PDA)、サーバ、メインフレームなどのコンピュータ・システムである。クライアント110および120は、NFS、CIFS、HTTP、FTPなどのファイル・アクセス・プロトコルを用いて遠隔のファイルおよびファイル・システムにアクセスするように構成される。クライアント110および120を実装するのに好適なコンピュータ・システムの1つの例が、図2に示される。
ノード130、140、150、160、および170は、PC、ワークステーション、サーバ、メインフレームなどである可能性がある。ノードは、ローカル・ファイル・システム、ネットワーク接続ストレージ(NAS)、ストレージ・エリア・ネットワーク(SAN)、データベースなどの上のファイル・システム内のファイルに関連する情報を記憶する。ノードは、ローカル・ファイル・システムとデータベースとの組合せのファイル・システム内のファイルに関連する情報を記憶する可能性もある。ノード130、140、150、160、および170を実装するのに好適なコンピュータ・システムの1つの例が、図3に示される。しかし、ノード130、140、150、160、および170は、ファイル・システムにファイルを記憶するように構成された任意のハードウェアおよび/またはソフトウェア要素である可能性もある。ノード130、140、150、160、および170は、NTFS、EXT、XFSなどの、ファイルを記憶するための1つまたは複数のファイル・システムを実装する可能性がある。
ファイル・システム内のファイルに関連する情報は、名前空間、メタデータ、オブジェクト識別子、および位置情報を含む。名前空間は、ほとんどのファイル・システムでよく見られる階層的なツリーに基づくファイル・パスおよび命名体系を含む。メタデータは、ファイル名、パーミッション、サイズ、種類などのファイル属性を含む。オブジェクト識別子は、ノードのオブジェクトベース・ストレージ・エリア(object−based storage area)におけるファイルの命名および記憶のために使用されるクラスタ全体でグローバル一意の128ビットの識別子である。位置情報は、ファイル・システム内のファイルの論理的なおよび/または物理的な位置に関連する情報を含む。たとえば、位置情報は、所与のノード、ノードに取り付けられたオブジェクト・ストア、パス情報などを指定する可能性がある。
動作の一例においては、クライアント110が、ファイルからの読み取り要求などの、ファイル・システム内のファイルの要求をノード150に送信する。そして、ノード150は、ファイルに関連するメタデータ、オブジェクト識別子、および位置情報を決定し、そのノード150のRAMのローカルにこの情報を最適にキャッシュする。この例において、ノード150は、ファイルの名前に関連するオブジェクト識別子を決定し、オブジェクト識別子から、ファイルの位置を決定する。ノード150は、ファイルのオブジェクト識別子および位置をクライアント110またはクラスタ内のその他のノードに送信し得る。本発明のさまざまな実施形態に係るファイル位置特定動作の詳細な動作は、後で説明される。
一実施形態によれば、ノード150は、ファイル・システム内のファイルの位置を特定するために、特別なマッピング・ファイルを参照してファイルのオブジェクト識別子および位置を決定し得る。たとえば、位置情報は、ファイルがノード160のローカルに記憶されることをノード150に特別なマッピング・ファイルによって指定し得る。そして、ノード150は、クライアント110がノード160に直接アクセスし得るようにクライアント110にこの情報を提供し得る。一部の実施形態において、ノード150は、インターネット・プロトコル(IP)に基づく転送メカニズムを用いてその他のノードからまたはその他のノードにファイルを読み取り、書き込み可能性があり、それらの転送メカニズムの一部の例は、HTTPまたはNFSクロス・マウント(cross mount)である。また、位置情報は、ノード150に記憶されたファイル・システムの一部を用いてファイルにアクセスするようにノード150に指示する可能性がある。別の例示的な実施形態においては、ファイルのオブジェクト識別子および位置が、あるノードから別のノードのファイル・システム内のファイルにアクセスするために使用され得る。たとえば、位置情報は、ノード160上のファイルにアクセスするようにノード150に指示する可能性がある。
さまざまな実施形態によれば、クラスタ100は、ファイル・システム内のファイルに関連する名前空間、メタデータ、および位置情報をノード130、140、150、160、および170によるファイルの実際の記憶から切り離す。したがって、さまざまな実施形態は、ノード内のファイルの位置に無関係にクラスタ100を用いてファイル・システム・オブジェクトへの向上したアクセスを提供する。加えて、さまざまな実施形態においては、追加のノードが、ストレージ・システムに追加され、ストレージ・システムの記憶容量を増やし、ファイル・アクセス時間を削減し得る。
一部の実施形態においては、インターネット・プロトコル(IP)アドレスなどのネットワーク・アドレスのプールが、ノードに割り当てられ、割り振られる可能性がある。ノードに障害が起こると(たとえば、ノード150)、ノード130および140は、障害が起きたノード150に関連するネットワーク・アドレス(たとえば、IPアドレス)を機能しているノード(たとえば、ストレージ・ノード160)に動的に再割り振りする。したがって、前にノード150を用いていたファイルへのクライアント/ユーザのアクセスが、新しいノード(すなわち、ストレージ・ノード160)に透過的に移されるおよび/またはリダイレクトされる可能性がある。さらにその他の実施形態においては、障害が起こったノードが、障害が起こったノードがダウンしていた(障害にあっていた)時間の間に何らかのタスクがし損じられた(missed)かどうかを判定するためにクラスタに問い合わせることができる。
図2は、クライアント110のブロック図を示し、クライアント120は、クライアント110と同様の構成を有する可能性がある。図2に示されるように、クライアント装置のハードウェアは、CPU21、揮発性または不揮発性メモリ22(RAMまたはROM)、ストレージ・デバイス23(たとえば、ハード・ディスク・ドライブ、半導体メモリ(SSD(ソリッド・ステート・ドライブ))、キーボードおよびマウスなどの入力デバイス24、液晶モニタおよびプリンタなどの出力デバイス25、ならびにNIC(ネットワーク・インターフェース・カード)、LANアダプタ26−1などのネットワーク・インターフェース(以降、ネットワークI/F26)などを含む。
図3は、ノード130のブロック図を示し、ノード140、150、160、および170は、ノード130と同様の構成を有する。図3に示されるように、ノード130は、CPU31、揮発性または不揮発性メモリ32(RAMまたはROM)、ストレージ・デバイス33(たとえば、ハード・ディスク・ドライブ、半導体メモリ(SSD))、キーボードおよびマウスなどの入力デバイス34、液晶モニタおよびプリンタなどの出力デバイス35、NIC、LANアダプタ36−1、HBA(たとえば、FCアダプタ36−2)などのネットワーク・インターフェース(以降、ネットワークI/F36)、ならびにタイマー回路、RTCなどを用いて構成されたタイマー37を含む。
図4は、図3と同様にノード130のローカルに設けられる可能性があり、または図4と同様にネットワーク5を介したネットワーク接続ストレージ(NAS)である可能性があるストレージ・デバイス33のより詳細なブロック図を示す。ノード130は、ストレージ・デバイス33を有する。ノード140、150、160、および170は、それぞれ、クラスタによって共有されないストレージ・デバイス33を備える。ストレージ・デバイス33は、クライアント110および120ならびにさらにクライアント内のその他のノードから送信されたI/O要求を受信し、受信されたデータI/O要求に応答して、ストレージ・エリア17にアクセスし、データまたは応答をクラスタ100に送信する。
図4に示されるように、ストレージ・デバイス33は、少なくとも1つのチャネル・ボード11、少なくとも1つのプロセッサ・ボード12(マイクロプロセッサ)、少なくとも1つのドライブ・ボード13、キャッシュ・メモリ14、共有メモリ15、内部スイッチ16、およびストレージ・エリア17を含む。チャネル・ボード11、プロセッサ・ボード12、ドライブ・ボード13、キャッシュ・メモリ14、および共有メモリ15は、内部スイッチ16を介して互いに通信可能なように結合される。
チャネル・ボード11は、クラスタ100から送信されたフレームを受信し、受信されたフレームに含まれる要求に関するタスクの応答(たとえば、読み取りデータ、読み取り完了報告または書き込み完了報告、追加ストレージなど)を含むフレームをクラスタ100に送信する。
プロセッサ・ボード12は、チャネル・ボード11によって受信されたフレームに含まれる上述のデータI/O要求に応答して、チャネル・ボード11と、ドライブ・ボード13と、キャッシュ・メモリ14との間のデータ転送(ダイレクト・メモリ・アクセス(DMA)などを用いる高速大容量データ転送)の処理を実行する。プロセッサ・ボード12は、チャネル・ボード11とドライブ・ボード13との間のデータ(ストレージ・エリア17から読み取られたかまたはストレージ・エリア17に書き込まれるデータ)の転送(送達)、ならびにキャッシュ・メモリ14に記憶されるデータのステージング(staging)(ストレージ・エリア17からのデータ読み取り)およびデステージング(de−staging)(ストレージ・エリア17へのデータ書き込み)を実行する。
キャッシュ・メモリ14は、高速なアクセスが可能なRAM(ランダム・アクセス・メモリ)を用いて構成される。キャッシュ・メモリ14は、ストレージ・エリア17に書き込まれるデータ(以降、書き込みデータと呼ばれる)、ストレージ・エリア17から読み取られたデータ(以降、読み取りデータと呼ばれる)などを記憶する。共有メモリ15は、ストレージ・デバイス33を制御するために使用されるさまざまな種類の情報を記憶する。
ドライブ・ボード13は、ストレージ・エリア17からデータを読み取るか、またはストレージ・エリア17にデータを書き込むときにストレージ・エリア17との通信を実行する。内部スイッチ16は、たとえば、高速なクロス・バー・スイッチを用いて構成される。内部スイッチ16を介した通信は、たとえば、ファイバ・チャネル、iSCSI、TCP/IPなどのプロトコルに従って実行される。
ストレージ・エリア17は、複数のストレージ・ドライブ171を含む。各ストレージ・ドライブ171は、たとえば、SAS(シリアル・アタッチドSCSI)、SATA(シリアルATA)、FC(ファイバ・チャネル)、PATA(パラレルATA)、およびSCSIなどの種類のハード・ディスク・ドライブ、半導体ストレージ・デバイス(SSD)などである。
ストレージ・エリア17は、たとえば、RAID(安価な(または独立した)ディスクからなる冗長なアレイ)などの方法によってストレージ・ドライブ171を制御することによって提供される論理ストレージ・エリア単位でストレージ・エリア17のストレージ・エリアをサーバ・システム3に提供する。論理ストレージ・エリアは、たとえば、RAIDグループを含む論理デバイスである。
ストレージ・デバイス33は、論理デバイス172を用いて構成された論理ストレージ・エリアをノード130に提供する。ストレージ・デバイス33は、論理ストレージ・エリアと論理デバイス172との間の対応(関係)を管理する。対応に基づいて、ストレージ・デバイス33は、論理ストレージ・エリアに対応する論理デバイス172を特定し、または論理デバイス172に対応する物理デバイスを特定する。別の代替的な実施形態において、ストレージ・エリア17は、オブジェクト・ベース・ストレージ・エリアがノード130に提供されるように構成され得る。
図5は、チャネル・ボード11のそれぞれのハードウェア構成を示す。図5に示されるように、チャネル・ボード11は、サーバ・システム3と通信するためのポート(通信ポート)を有する外部通信インターフェース(以降、外部ネットワークI/F111と呼ばれる)、(フレーム処理チップおよびフレーム転送チップを含む)プロセッサ112、メモリ113、ならびにプロセッサ・ボード12と通信するためのポート(通信ポート)を含む内部通信インターフェース(以降、内部ネットワークI/F114と呼ばれる)を含む。
外部ネットワークI/F111は、NIC(ネットワーク・インターフェース・カード)、HBA(ホスト・バス・アダプタ)などを用いて構成される。プロセッサ112は、CPU(中央演算処理装置)、MPU(マイクロ処理ユニット)などを用いて構成される。メモリ113は、RAM(ランダム・アクセス・メモリ)またはROM(読み出し専用メモリ)である。メモリ113は、マイクロ・プログラム、ソフトウェア、その他の動作データなどのデータを記憶する。チャネル・ボード11によって提供されるさまざまな機能は、プロセッサ112がメモリ113に記憶された上述のデータを読み取り、実行するときに実施される。内部ネットワークI/F114は、内部スイッチ16を介してプロセッサ・ボード12、ドライブ・ボード13、キャッシュ・メモリ14、および共有メモリ15と通信する。
図6は、プロセッサ・ボード12のハードウェア構成を示す。プロセッサ・ボード12は、内部ネットワーク・インターフェース(以降、内部ネットワークI/F121と呼ばれる)、プロセッサ122、およびプロセッサ122からのアクセス性能が共有メモリ15よりも高いメモリ123(ローカル・メモリ)(すなわち、メモリ123への高速アクセスが可能である)を含む。メモリ123は、マイクロ・プログラムを記憶する。プロセッサ・ボード12によって提供されるさまざまな機能は、プロセッサ122がメモリ123に記憶されたマイクロ・プログラムを読み取り、実行するときに実施される。
内部ネットワーク1/F121は、内部スイッチ16を介してチャネル・ボード11、ドライブ・ボード13、キャッシュ・メモリ14、および共有メモリ15と通信する。プロセッサ122は、CPU、MPU、DMA(ダイレクト・メモリ・アクセス)などを用いて構成される。メモリ123は、RAMまたはROMである。プロセッサ122は、メモリ123と共有メモリ15との両方にアクセスすることができる。
図7は、ドライブ・ボード13のハードウェア構成を示す。ドライブ・ボード13は、内部ネットワーク・インターフェース(以降、内部ネットワークI/F131と呼ばれる)、プロセッサ132、メモリ133、およびドライブ・インターフェース(以降、ドライブI/F134と呼ばれる)を含む。メモリ133は、マイクロ・プログラムを記憶する。ドライブ・ボード13によって提供されるさまざまな機能は、プロセッサ132がメモリ133に記憶されたマイクロ・プログラムを読み取り、実行するときに実施される。内部ネットワークI/F131は、内部スイッチ16を介してチャネル・ボード11、プロセッサ・ボード12、キャッシュ・メモリ14、および共有メモリ15と通信する。プロセッサ132は、CPU、MPUなどを用いて構成される。メモリ133は、たとえば、RAMまたはROMである。ドライブI/F134は、ストレージ・デバイス17と通信する。
図4に示されていない保守デバイスが、ストレージ・デバイス33の構成要素の制御およびステータスの監視を実行する。保守デバイスは、パーソナル・コンピュータ、オフィス・コンピュータなどである。保守デバイス18は、チャネル・ボード11、プロセッサ・ボード12、ドライブ・ボード13、キャッシュ・メモリ14、共有メモリ15、内部スイッチ16などのストレージ・デバイス33の構成要素から動作情報などを獲得し、管理装置19に情報を提供するために、内部スイッチ16、LANなどの通信手段を介して構成要素と必要に応じて通信する。さらに、保守デバイスは、管理装置から送信された制御情報および動作情報に従って(ソフトウェアのインストールおよび更新を含む)構成要素の設定、制御、および保守を実行する。
図4に示されていない管理装置は、LANなどを介して保守デバイスに通信可能なように結合されるコンピュータである。管理装置19は、ストレージ・デバイス33を制御し、監視するためのGUI(グラフィカル・ユーザ・インターフェース)およびCLI(コマンド・ライン・インターフェース)を用いるユーザ・インターフェースを含む。保守デバイスおよび管理デバイス機能は、クライアント110および120と同様のハードウェアを備える可能性がある。
図8A、8B、および8Cは、本発明のさまざまな実施形態に係るノードおよびネットワーク・ファイル・システムへのクライアントのアクセスを示す。図8Aを参照すると、クライアント・システム110は、ネットワーク・ファイル・システム(NFS)のファイル・アクセスを用いてクラスタのノード(たとえば、ノード130)と通信する。ノード130は、NFSサーバ815を含み、ファイル・システム820に結合される。図8Bを参照すると、クライアント・システム110は、共通インターネット・ファイル・システム(CIFS:Common Internet File System)のファイル・アクセスを用いてノード130と通信する。図8Bにおいて、ノード130は、CIFSサーバ835を含み、ファイル・システム840に結合される。図8Cを参照すると、クライアント・システム110は、ハイパーテキスト転送プロトコル(HTTP)のファイル・アクセスを用いてノード130と通信する。図8Cにおいて、ノード130は、httpサーバ855を含み、ファイル・システム860に結合される。
図9A、9B、および9Cは、本発明のさまざまな実施形態に係る物理ストレージ・デバイスへのストレージ・デバイス33の相互接続を示す。図9Aを参照すると、ストレージ・デバイス33は、小型コンピュータ・システム・インターフェース(SCSI)ホスト・バス・アダプタ(HBA)910を含む。SCSI HBA910は、3つのSCSIディスク・ドライブ915に結合される。図9Bを参照すると、ストレージ・デバイス33は、ファイバ・チャネル(FC)HBA925を含む。FC HBA925は、ストレージ・エリア・ネットワーク(SAN)スイッチ930に結合される。SANスイッチ930は、3つのFCディスク935に結合される。図9Cを参照すると、ストレージ・デバイス33は、イーサネット・インターフェース945を含み、サーバ950およびサーバ970に結合される。サーバ950は、SATAディスク965に結合されたイーサネット・インターフェース955およびシリアル・アドバンスド・テクノロジー・アタッチメント(SATA:serial advanced technology attachment)インターフェース960を含む。サーバ970は、2つのSATAディスク985に結合されたイーサネット・インターフェース975およびSATAインターフェース980を含む。
図10は、本発明のさまざまな実施形態に係るノード130およびノード130で管理される主な情報(データ)の機能ブロック図を示す。図10に示されるように、ノード130内に、仮想環境を提供するハイパーバイザ(たとえば、ハイパーバイザ)305およびハイパーバイザ305の制御の下で動作する少なくとも1つの仮想マシン310が、実装される。
各仮想マシン310内に、ファイル共有処理ユニット311、ファイル・システム312、実行されるタスクのキューを保有するデータ操作要求受信ユニット313、データ複製/マイグレーション処理ユニット314、ファイル・アクセス・ログ獲得ユニット317、およびカーネル/ドライバ318の機能が、実装される。
仮想環境は、ノード130のハードウェアとハイパーバイザ305との間にオペレーティング・システムが介在させられるいわゆるホストOS型の方法、またはノード130のハードウェアとハイパーバイザ305との間にオペレーティング・システムが介在させられないハイパーバイザ型の方法によって実現される可能性がある。データ操作要求受信ユニット313、データ複製/マイグレーション処理ユニット314、およびファイル・アクセス・ログ獲得ユニット317の機能は、ファイル・システム312の機能、またはファイル・システム312から独立した機能として実装される可能性がある。
図10に示されるように、本発明のさまざまな実施形態において、ノード130は、仮想マシン構成情報331、タスク・ログ335などを必要に応じてノード130のメモリ32およびストレージ・デバイス33に記憶する。
図10に示された機能のうち、ファイル共有処理ユニット311は、ファイルが共有され得る環境をクライアント110に提供する。ファイル共有処理ユニット311は、たとえば、NFS(ネットワーク・ファイル・システム)、CIFS(共通インターネット・ファイル・システム)、AFS(Andrewファイル・システム)などのプロトコルで規定された機能を提供する。
ファイル・システム312は、ノードによって提供される論理ボリューム(LU)によって管理されるファイル(またはディレクトリ)へのおよびからのI/Oに関連する機能をクライアント110に提供する。ファイル・システム312は、たとえば、FAT(ファイル・アロケーション・テーブル)、NTFS、HFS(階層型ファイル・システム(Hierarchical File System))、ext2(第2拡張ファイル・システム(second extended file system))、ext3(第3拡張ファイル・システム(third extended file system))、ext4(第4拡張ファイル・システム(fourth extended file system))、UDF(ユニバーサル・ディスク・フォーマット)、HPFS(高性能ファイル・システム(High Performance File System))、JFS(ジャーナリング・ファイル・システム(Journaled File System))、UFS(UNIXファイル・システム)、VTOC(ボリューム目録(Volume Table Of Contents))、XFSなどに基づく。
データ操作要求受信ユニット313は、たとえば、クライアント110などのクライアントに関するタスクを実行する要求(以降、データ操作要求と呼ばれる)を受信する。タスクは、複製開始要求、複製ファイルへの更新要求、複製ファイルへの参照要求、同期要求、メタデータへのアクセス要求、ファイル・エンティティへの参照要求、リコール要求、スタブド・ファイル・エンティティへの更新要求、ユーザの作成、物理ディスクの追加、物理ディスクの削除、論理ユニットの構成などの動作を含み得る。
スタブドは、ファイル(またはディレクトリ)のデータのメタデータがノードによって保有されるが、ファイル(またはディレクトリ)のデータのエンティティがストレージ・デバイス33によって記憶または管理されないことを意味する。ノード130がスタブド・ファイル(またはスタブド・ディレクトリ)のエンティティを必要とするデータI/O要求を受信するとき、ファイル(またはディレクトリ)のエンティティが、それぞれのストレージ・デバイス33に送信される(書き戻され、これは、以降、リコールと呼ばれる)。
データ複製/マイグレーション処理ユニット314は、(フラグおよびテーブルを含む)制御情報を送信し、受信し、ノード130とクラスタ100内のその他のノードとの間で(メタデータおよびファイルのエンティティを含む)データを転送し、データの複製/マイグレーションに関連するさまざまな情報を管理する。
図10に示されたカーネル/ドライバ318は、オペレーティング・システムのソフトウェアを形成するカーネル・モジュールおよびドライバ・モジュールを実行することによって実施される。カーネル・モジュールは、ノード130で実行されるソフトウェアに関して、プロセスの管理、プロセスのスケジューリング、ストレージ・エリアの管理、ハードウェアからの割り込み要求の処理などのオペレーティング・システムの基本的な機能を実施するためのプログラムを含む。ドライバ・モジュールは、ノード130を構成するハードウェア、およびノード130に結合されている間使用される周辺デバイスとカーネル・モジュールが通信することを可能にするためのプログラムを含む。
ストレージ・デバイス33の論理ストレージ・エリアに記憶されたファイルがアクセスされる(ファイルが更新される(Write、Update)、ファイルが読み取られる(Read)、ファイルが開かれる(Open)、ファイルが閉じられる(Close)など)とき、図10に示されたファイル・アクセス・ログ獲得ユニット317は、アクセスの詳細(履歴)を示す情報(以降、アクセス・ログと呼ばれる)を、情報にタイム・スタンプを追加した後、タスク・ログ335に記憶し、タイム・スタンプは、タイマー37から獲得された日付/時間情報に基づく。さらに、ストレージの追加、ストレージの削除などの追加のタスクが、タスク・ログ335にタイム・スタンプとともに保有される。加えて、タスク・ログ335に記憶されるタスクは、タスク・ログ335がクラスタで開始されたすべてのタスクのキューを形成するように順番に配列される。
分散型の回復力のある作業キュー
図1に示されたクラスタ100においては、各ノードが、そのノード自体に割り振られた処理タスクに責任を負う。本発明の一実施形態によれば、ノードは、各ノードがクラスタ内で通信中にクラスタ内のその他のノードに対してそのノード自体を特定することを可能にする汎用一意識別子(UUID:universally unique identifier)を割り振られる。図11Aは、ノードおよびノードの対応するUUIDを記憶する管理テーブルを示す。クラスタ100内の各ノードは、図11Aに示されるような管理テーブルを保有し、したがって、そのノードに保有されるUUIDのリストが、その他のノードと通信するために参照され得る。
クラスタ内の各ノードは、クラスタ内のノードによって実行されるように要求されたタスクを追跡するために図11Bに示されるようなタスク・ログ335を保有する。タスク・ログ335内に、各タスクが、1つまたは複数のUUID、その他のノードの識別子、タスクのステータス、タスクの開始時間、およびタスクの終了時間に対応して記憶される。一部の実施形態においては、ノードによってタスクが受信された時間、どのクライアントがタスクを送信したかなどのその他のタスクに関連する情報も、記憶される可能性がある。クラスタ内で送信される各タスクは、それぞれのタスクを実行すべき1つまたは複数のノードを特定するように働く少なくとも1つのUUIDを含む。どのノードがタスクを実行すべきかを特定するUUIDに対応して各タスクが記憶されるようにタスク・ログ335を保有することによって、ノードが障害にあう場合、障害が起こったノードは、再開される必要があるすべてのタスクまたは障害の間にし損じられたすべてのタスクを決定するために、1つまたは複数のノードのタスク・ログ335に関して、障害からのリカバリ後にクラスタに問い合わせることができる。
図13は、本発明の実施形態に係るUUID割り振りプロセスを示す。ステップ601において、ノードが、初期化される。たとえば、ノードは、オペレーティング・ソフトウェアがノードにインストールされるときに初期化される。初期化中または初期化のすぐ後の時間に、好ましくは、ノードがクラスタと通信しようと試みる前に、オペレーティング・ソフトウェアは、クラスタ内のそれぞれのノードを特定するために使用されるUUIDをステップ602においてランダムに生成する。ステップ603において、ノードは、クラスタ100に対してそのノード自体を特定すべきUUIDを持つと、クラスタ100に追加される。例えば、ノードは、ノードを通信ネットワーク180に接続することによってクラスタ100に追加される可能性がある。ステップ604において、UUIDを生成し終わり、クラスタに接続されるノードが、クラスタにそのノードのUUIDを知らせる。したがって、動作可能であり、オンラインであるクラスタ内のあらゆるノードは、好ましくは、クラスタに追加されたばかりのノードのUUIDを受信し、クラスタへのノードの追加を反映するためにそのノードのそれぞれのUUIDリストを更新したはずである。
タスクを実行すべき(1つまたは複数の)ノードの(1つまたは複数の)UUIDを含むタスクがノードで受信されるとき、タスク・ログ335は、タスクの受信を反映するように更新される。各ノードは、図14に示されるように、それぞれの受信されたタスクに対してタスク実行プロセスを実行する。図12は、通信ネットワーク180を介してタスクを受信するノードの抽象的なブロック図を示す。(たとえば、チャネル・ボード11によって提供される)1つまたは複数のネットワーク・レイヤ1201が、タスクをノードに渡す。ステップ701において、タスクが、クラスタ100に接続されたクライアントから受信される。一部の実施形態において、クライアントから受信されるタスクは、タスクを実行すべき1つまたは複数のノードを特定する情報を含む。その他の実施形態において、クライアントから受信されるタスクは、どの1つまたは複数のノードがタスクを実行すべきかを指定せず、タスクを受信するノードが、タスクをクラスタに割り振る必要がある。ステップ702において、タスクを受信するノードが、タスクを実行すべきノード(たとえば、ターゲット・ノード)のUUIDを割り振る。クライアントがタスクをどのノードが実行すべきかを指定した場合、フローは、ステップ701からステップ703に直接進み、ステップ702を迂回する可能性がある。ステップ703において、タスクを実行すべきノードのUUIDを含むタスク・メッセージが、クラスタにブロードキャストされる。クラスタのノードは、ステップ704において、ブロードキャストされたタスク・メッセージを受信する。ステップ705において、各ノードが、受信されたタスクがノードのUUIDに一致するUUIDを含むかどうか(たとえば、タスクがノードに割り振られたかどうか)を判定する。タスクがノードに割り振られていない場合、ノードは、次のタスク・メッセージを受信するのを待つ。タスクがノードに割り振られる場合、ステップ706において、ノードが、タスクが実行されるタスク・キュー1202にタスクを入れ、(たとえば、プロセッサ・ボード12または仮想マシン310によって提供される)タスク実行エンジン・レイヤ1203によってタスクが実行された後に、タスクの完了をクラスタにブロードキャストする。たとえば、図10に示された実施形態において、各仮想マシン310は、実行されるタスクを保持するためのタスク・キュー1202を含むデータ操作要求受信ユニット313を備える。クラスタ内の各ノードは、タスクが完了されたという通知を受信すると、それに応じて、そのノードのそれぞれのタスク・ログ335を更新する。加えて、一部の実施形態において、ノードは、タスクの実行が開始されたときをクラスタに知らせ、クラスタ内の各ノードが、それに応じて、タスクの開始時間のそのノードのそれぞれのタスク・ログ335を更新する。
上述のように、場合によっては、ノードが、障害が起こったノードがタスク・メッセージ受信することができないようにするか、実行されているタスクを完了できないようにするか、またはその両方である可能性がある障害にあう可能性がある。図15は、し損じられたタスクをリカバリするか、不完全なタスクを再開するか、またはその両方を行うために使用される本発明の実施形態に係る再開プロセスを示す。ステップ801において、ノードが、障害からリカバリし、通常通り動作し始める(たとえば、障害からリカバリする)。次に、ステップ802において、リカバリされたノードが、ノードの障害の期間(たとえば、障害が原因でノードがタスク・メッセージを受信することができなかった時間の枠)中にブロードキャストされたタスクに関してクラスタに問い合わせる。たとえば、ノードがそのノードのタスク・キュー1202またはタスク・ログ335から障害の期間を決定することができる場合、クラスタ内のその他のノードが、障害の期間に対応する時間の間動作するノードのタスク・ログ335の一部を提供することができる。代替的に、ノードは、リカバリされたノードのタスク・ログ335の最後の受信されたタスクの後のタイムスタンプを有するすべてのタスク・メッセージを要求する可能性がある。しかし、上述の方法が例であるに過ぎず、クラスタ内の障害が起こらなかったノードからタスク・ログ335をリカバリするその他の方法が代わりに実施され得ることは、当業者に明らかであるに違いない。
ステップ803において、クラスタ内のノードが、リカバリされたノードに応答し、リカバリされたノードの障害の期間に一致するタスクのリストを提供する。そして、ステップ804において、リカバリされたノードが、し損じられたタスク・メッセージのリストをまとめ、し損じられたタスク・メッセージを調べて、リカバリされたノードのUUIDがし損じられたタスク・メッセージに存在するかどうかを判定する。いずれかのし損じられたタスク・メッセージがリカバリされたノードに振り向けられる場合、リカバリされたノードは、し損じられたタスクを実行するためにタスクのリストに追加する。さらに、リカバリされたノードは、好ましくは、そのノード自体のタスク・ログ335を調べ、障害が原因であるすべての誤った処理を防止するために、開始されたが完了されていないものとして印を付けられた任意のタスクを再開すべきである。ステップ805において、リカバリされたノードが、タスク・キュー1202にタスクを入れ、し損じられた任意のタスクおよび/または障害が原因で完了されなかった任意のタスクを実行し始める。ステップ805で、タスクが発生順に実行されることが一部の実施形態において好ましい可能性がある。
上述のように各ノードにおいてUUIDリストおよびタスク・ログを構築し、保有することによって、タスクの管理が、非集中的になり、ノードの障害が、クラスタの残りにおけるタスクの処理に過度に影響を与えない。さらに、障害が起こったノードは、単一の管理ノードも障害の事例を被る可能性があり、そのことが、非集中的なタスク・ログを管理するために管理ノードに頼るすべてのその他のノードのリカバリに悪影響を与えるときに、ノードが動作不可能であった間に定義されたすべてのタスクを、そのような管理ノードに頼る必要なしにそのような情報に関してクラスタ内のその他のノードに問い合わせることによって決定することができる。
仮想マシンのIPアドレス管理
図10に示されるように、本発明の一部の実施形態において、ノード130は、仮想マシン構成情報331に基づく1つまたは複数の仮想マシン310を実行する可能性があり、仮想マシンは、ハイパーバイザ305によってホストされる。図10において、各仮想マシン310は、ハイパーバイザによって仮想マシンをホストするノードから分離される。ノードの観点からすると、仮想マシン310は、ハイパーバイザによって実行される不透明なプロセスに見える。仮想マシンの観点からすると、ハイパーバイザは、物理的なハードウェアリソースに見える。したがって、仮想マシンによるすべての通信はネットワーク・インターフェースを介して行われるので、ハイパーバイザ305以外に、ノード自体によって実行されるプロセスが仮想マシン310によって実行されるプロセスと直接インタラクションするためのメカニズムは存在しない。
ハイパーバイザ305は、仮想マシン構成情報331に依拠して各仮想マシン310を構成する。仮想マシン構成情報331は、仮想マシン310をホストするノード130によって設定される。仮想マシン構成情報331は、各仮想マシン310のインスタンスに固有のMACアドレスを含む。仮想マシン310がネットワーク接続性を確立するためには、知られているIPアドレス(たとえば、IPv4)が、前もって構成されなければならない。
図16に示されるように、仮想マシンに関するMACアドレスは、48ビットであり、仮想マシンに関するIPアドレスは、MACアドレスの最も下位の32ビットに符号化される。したがって、仮想マシン310を構成し、仮想マシン310のMACアドレスを決定するときにハイパーバイザが仮想マシン構成情報331を参照するときに、仮想マシン310のIPアドレスも、同時に指定される。たとえば、割り振られたMACアドレスが「00:00:C0:A8:0A:05」である場合、16進IPv4アドレスが、そのMACアドレス中に「C0:A8:0A:05」として符号化され、10進でそれと等価な値は、「192.168.10.5」である。
ノードが1つまたは複数の仮想マシンをホストする前にノードに対してIPアドレス・テーブルが指定される場合、(たとえば、ノードのメモリ33に記憶される)IPアドレス・テーブル内のIPアドレスが、上で説明されたようにMACアドレスに符号化され、仮想マシン構成情報331に記憶され得る。したがって、仮想マシン310がその後構成されるとき、その仮想マシン310のIPアドレスは、図17に示されるように、ハイパーバイザを通じた経路として符号化されたMACアドレスを用いてノードから仮想マシンに直接渡される。したがって、MACアドレスおよびMACアドレスに符号化されたIPアドレスは、図18に示されるように、ハイパーバイザ・レイヤから仮想マシン310に渡され得る。
図19は、本発明の一実施形態に係る構成プロセスを示す。ステップ1901において、仮想マシン310への割り振りのためにクラスタ100内で割り当てられるIPアドレスが、MACアドレスに符号化され、仮想マシン310をホストする1つまたは複数のノードの仮想マシン構成情報331に記憶される。ステップ1902において、ノードのそれぞれが、仮想マシンを開始するようにノードに命令するタスクを受信する。仮想マシンを開始するタスクを受信した後、ノードは、ステップ1903において、仮想マシンによる使用のために割り振られたIPアドレスを符号化されたMACアドレスを含む仮想マシン構成情報331に従って仮想マシン310を構成する。たとえば、本発明の一実施形態において、仮想マシン構成情報331は、それぞれが仮想マシンのインスタンスを定義する複数の.xmlファイルを含む。各.xmlファイルにおいては、それぞれの仮想マシンの定義の一部が、(たとえば、ネットワークでのアドレスの競合を避けるように構成された)ネットワークで使用するのに好適なIPアドレスを符号化されたMACアドレスである。ステップ1904において、構成された仮想マシンが、ハイパーバイザ305によってその仮想マシンに与えられた符号化されたMACアドレスからIPアドレスを復号する。ステップ1905において、仮想マシン310が、復号されたIPアドレスを用いてネットワーク180を介した通信を開始する。たとえば、本発明のその他の実施形態によれば、仮想マシン310は、クラスタ内のその他のノード上のタスクに着手し始める可能性がある。したがって、図19に示されるプロセスを繰り返すことによって、複数の仮想マシンが、前もってネットワーク180のために予め定義されたIPアドレスを用いてノード上で構成される可能性がある。
帯域内のデータの位置特定
図1に示されたクラスタ100のさまざまな実施形態によれば、クラスタ中に広がっており、クラスタ内の特定のノードまたはノードのサブセットに物理的に結びつけられないファイル・システムが提供される。その他の実施形態において、ファイル・システムは、クラスタ内のノードのサブセット中に広がるように提供される可能性がある。さらにその他の実施形態においては、クラスタ中に広がるかまたはクラスタのノードのサブセット中に広がるかのどちらかの複数のファイル・システムが、クラスタにおいて提供される可能性がある。したがって、そのような構成において、クラスタは、いくつかの次元でスケーリングされ得る。
本発明のそのような実施形態においては、ファイル・システムの名前空間が、ファイル・システム内のあらゆるファイルに対する「.mapping」またはその他のそのような拡張子を含むようにあらゆるファイルに関して拡張される。図20は、本発明の一実施形態に係るファイル・システムおよびファイル属性を示すブロック図である。クラスタ中に提供されるファイル・システム1200においては、マウント・ポイント1210が、1つまたは複数のディレクトリを含むマウントされたファイル・システム1220へのアクセスを提供する。下位ディレクトリ1230は、.txt、.mp3などのファイルのファイル・タイプに対応するファイル拡張子を有する、「FILE1234」と名付けられたファイル1250を含む。ファイル・システム1200内のファイル1250は、ファイルの対1240を形成する対応する「.mapping」拡張ファイル1260も有する。ファイル1250は、関連するメタデータ1270をやはり有する。この例において、メタデータは、サイズ、所有者の識別子、位置データ、作成時間、修正時間、およびアクセス時間などのファイル属性1270を含む。特に、位置データは、以下のように「.mapping」拡張子を有するマッピング・ファイル1260において構成される。
図21は、ファイル1250(たとえば、「FILE1234.***」)およびマッピング・ファイル1260(たとえば、「FILE1234.mapping」)が互いに関連するときのそれらのファイルの構造を示す。ファイル・システム1200がクラスタ中に提供されるので、下位ディレクトリ1230に記憶されるファイル1250は、サイズが64MBである「チャンク」としてのデータのセクションで複数のノードにわたって記憶される。本発明のさまざまな実施形態においては、ファイル1250の各チャンクに関して、図21に見られるように、クラスタ100内のノードが、チャンク(たとえば、チャンク#1)を記憶し、一方、別のノードが、異なるチャンク(たとえば、チャンク#2)を記憶し、以下同様である。各ノードがUUIDによってクラスタ100内で知られているので、一部の実施形態において、各チャンクの記憶位置は異なる。ファイル・システムがクラスタ中に広がるので、チャンクの記憶位置は、クラスタ内の異なるノードにある可能性がある。
図21において、マッピング・ファイル1260は、「.mapping」拡張子によってファイル1250と区別される。しかし、任意の利用可能なファイル拡張子が、マッピング・ファイルのために使用され得る。たとえば、図22は、ファイル1250がパス名「/my/data/archive/file1234」を有し、マッピング・ファイル1260が経路パス名「/my/data/archive/file1234::LOCATION」を有する別の代替的な実施形態を示す。図22に示される実施形態によれば、マッピング・ファイル1260は、マッピング・ファイルのパス名を指定する標準的なファイル・プロトコルを用いることでアクセスされ得る。
ファイル・システム1200のまたは代替的にファイル・システム1220の名前空間は、そのファイル・システムに記憶される各ファイルに関するマッピング・ファイル1260に対応するように拡張される。図21に示されるように、ファイル1250の各チャンク1251は、マッピング・ファイル1260内に対応するチャンク1252を有する。マッピング・ファイル1260内の各チャンク1252は、そのチャンク1252が関連付けられるチャンク1251の位置データを記憶するかなりまばらなチャンクである。したがって、図21に見られるように、マッピング・ファイル1260内のデータの第1のチャンク1252が、ファイル1250の第1のチャンク1251を記憶する1つまたは複数のノードを指定する位置データ1253を含み、マッピング・ファイル1260内のデータの第2のチャンク1252が、ファイル1250の第2のチャンク1251を記憶する(1つまたは複数の)ノードを指定する位置データ1253を含み、以下同様である。各チャンク1252は、位置データ1253および空のエリア1254からなるかなりまばらなデータのエリアである。たとえば、図21に示される実施形態において、空のエリア1254は、「ヌル」として示される。
さらに、図23は、ファイル属性1270がファイル1250に関して更新されるプロセス・フローを示す。ステップ2301において、クラスタ内に記憶されたファイル1250に対してタスクが実行される。タスクが実行されると、ステップ2302において、ファイル1250のファイル属性1270が、ファイル1250に対してタスクの実行が有するすべての変更を反映するために更新される。たとえば、タスクは、ファイル1250のサイズが変わる結果となる可能性があり、変化が、ファイル属性1270の中のサイズ情報を更新することによってファイル属性1270に反映されるべきである。ステップ2303において、ファイル属性1270が更新された後、クラスタが、タスクの完了を知らされる。
各ファイル1250が対応するマッピング・ファイル1260を有するようにファイル・システムの名前空間を拡張するようにファイル・システムを構築することによって、クライアント110が、クラスタのファイル・システムに記憶されたファイル1250に通常通りアクセスするために使用されるのと同じプロトコルを用いてマッピング・ファイルにアクセスすることができる。図21を参照すると、クライアントは、NFS(たとえば、NFS v3.1)などのリモート・ファイル・プロトコルを用いてクラスタに記憶されたファイル1250にアクセスする場合、やはりリモート・ファイル・プロトコルを用いてマッピング・ファイル1260にアクセスすることもできる。言い換えると、クライアントは、ファイル1250にアクセスするために使用されるリモート・ファイル・プロトコルとは異なるプロトコルまたは技術(たとえば、「帯域外)を使用する必要なしに「帯域内」通信を用いてファイル・システムのマッピング・ファイル1260にアクセスすることができる。したがって、クライアントは、データ自体にアクセスするために使用されるのと同じメカニズムを使用して位置情報にアクセスすることができる。
図24は、本発明のさまざまな実施形態に係る、クライアントがマッピング・ファイル1260にアクセスするプロセス・フローを示す。たとえば、クライアントは、クラスタ100内のファイル1250の第3のチャンク1251の(1つまたは複数の)位置を決定したい場合、ステップ2401と同様に、マッピング・ファイル1260を開き、オフセット1256をシークする。図21の実施形態によれば、各チャンク1251は、サイズが64MBであり、クライアントは、ファイル1250の第3のチャンク1251に対応する位置データ1253を取り出すためにマッピング・ファイル1260内の128MBのシークを指定する。位置データは、たとえば、データの1Kのブロックである可能性がある。そのような場合、ファイル・アクセス要求およびシークを受信するノードは、マッピング・ファイル1260にアクセスし、指定されたオフセットまでシークし、指定されたオフセットに対応するチャンクの位置データ1253であるサイズが1Kのデータのセグメントを読み取る。
本発明のさまざまな実施形態によれば、マッピング・ファイル1260へのアクセスおよび指定されたオフセット1256をクライアントから受信するノードが、ステップ2402と同様に、ファイル1250の対応するチャンク1251が記憶されるクラスタ内の位置を指定する位置データ1253を含む応答を生成する。図21に示される実施形態において、ノードは、マッピング・ファイル1260の位置データ1253から応答1255を生成する。図21に示されるように、応答1255は、ファイル1250のファイル名(たとえば、ファイル・システム内のパス)、ファイル1250のチャンク1251のオフセット、チャンク1251の長さ、および指定されたデータを物理的に記憶する(1つまたは複数の)ノードの(1つまたは複数の)位置を含む.xmlファイルとして構築される。図21において、位置は、指定されたチャンクを記憶するサーバのIPアドレスによって指定される。
クラスタ100と通信するクライアントが、ステップ2403において応答1255を受信し、ステップ2405と同様に、そこに記憶されたチャンク1251に関連するタスクを応答1255で指定されたノードに直接送信することができる。したがって、クライアントは、チャンク1251を用いてタスクを実行するように応答1255内のノードに命令することができる。クライアントが帯域内通信を用いてデータの位置情報にアクセスすることを可能にすることによって、タスクは、1つまたは複数の中間ノードをクライアントの代わりにタスクを開始するためのプロキシとして働かせるのではなく、データをローカルに記憶するノード上で直接開始され得る。結果として、クラスタに接続するネットワークへの負荷が、削減される可能性があり、各ノードとそのノードのローカル・ストレージ・エリアとの間で利用可能な比較的広い帯域幅が、所与のノードから遠隔にあるデータを操作するためにプロキシを使用するのではなく、ローカルに記憶されたデータに対してタスクが実行されるように利用され得る。
帯域内のデータの位置特定に関連する上記の説明においては、位置データがマッピング・ファイル1260に記憶される実施形態が、説明された。本発明のその他の実施形態によれば、ファイル1250に関するその他のメタデータが、位置データの代わりにまたは位置データと組み合わせてマッピング・ファイル1260に記憶される可能性がある。図20に示されるように、ファイル1250のファイル属性1270が保有される。したがって、サイズ、所有者の識別子、作成時間、修正時間、およびアクセス時間などのその他のファイル属性1270が、位置データ1253とともにまたは位置データ1253の代わりにマッピング・ファイル1260に記憶される可能性がある。加えて、図21に示された実施形態は、.xmlの応答1255を生成する。しかし、応答1255は、JavaScriptオブジェクト表記法(JSON:JavaScript Object Notation)、カスタムのキー値の符号化などを用いることによるなど、.xmlの応答以外の方法で構築される可能性がある。
本発明のさまざまな実施形態によれば、図25に示されるプロセス・フローが、クラスタ内の(1つまたは複数の)特定のデータの位置を決定し、特定のデータの位置で特定のデータに対して開始されるようにタスクに命令するために従われる。ステップ2501において、クライアントが、特定のファイル1250に対応するマッピング・ファイル1260にアクセスするようにクラスタ内のノードに要求し、特定のファイル1250にアクセスするために使用されるリモート・ファイル・プロトコルを用いてオフセットを指定する。図25は、クライアントがマッピング・ファイル1260にアクセスするようにノードに要求することを示すが、代替的な実施形態ではノードは、クラスタ内の別のノードでタスクを開始するためにクライアントからの指示なしにマッピング・ファイルを参照する可能性がある。ステップ2502において、ノードが、要求を受信し、マッピング・ファイル1260内で指定されたオフセットをシークし、マッピング・ファイル1260から位置データ1253を読み取る。ステップ2503において、応答1255が、位置データおよび/または位置データに関連するその他のメタデータを含むノードによって生成され、ノードが、クライアントに応答を送信する。ステップ2504において、応答1255を受信すると、クライアントは、位置データを読み取る。ステップ2506において、位置データ1253にしたがって、そのとき、クライアントは、応答1255に含まれる位置データ1253に関連するターゲット・ノードでタスクを開始することができる。たとえば、ステップ2506においてターゲット・ノードで開始されたタスクが、図14に示されるように、受信されたタスクを実行するためのプロセス・フローをトリガする可能性がある。
本明細書において説明された実施形態は、たとえば、1つまたは複数のコンピュータ可読ストレージ・デバイスに記憶され、コンピューティング・デバイスによって実行されるプログラムなどのコンピュータが実行可能な命令またはコードによって実装される可能性があることが、理解されるであろう。そのようなストレージ・デバイスは、信号自体を除外する。概して、プログラムは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、オブジェクト、コンポーネント、データ構造などを含む。本明細書において使用されるとき、用語「プログラム」は、単一のプログラム、または協力して働く複数のプログラムを意味する可能性があり、アプリケーション、サービス、または任意のその他の種類もしくは分類のプログラムを表すために使用される可能性がある。同様に、用語、ストレージ・デバイス、「コンピュータ」、および「コンピューティング・デバイス」は、本明細書において使用されるとき、協力して働く、1つまたは複数のプログラムを電子的に実行する2つ以上のデバイスを含む任意のデバイスを含む。
本明細書において説明された構成および/または手法は本質的に例示的であり、これらの特定の実施形態または例は、数多くの変形があり得るので、限定的な意味に取られてはならないことを理解されたい。本明細書において説明された特定のルーチンまたは方法は、任意の数の処理方針のうちの1つまたは複数を表す可能性がある。したがって、示された様々な行為は、示された順番で実行されるか、その他の順番で実行されるか、並列的に実行されるか、または場合によっては省略される可能性がある。同様に、上述のプロセスの順番は、変更される可能性がある。
本開示の主題は、本明細書において開示されたさまざまなプロセス、システム、および構成、およびその他の特徴、機能、行為、および/または特性、ならびにこれらの任意のおよびすべての均等物のすべての新規性のある明白でない組合せおよび部分的組合せを含む。

Claims (26)

  1. 実行可能な命令を記憶する非一時的コンピュータ可読媒体であって、前記実行可能な命令が複数のノードを有する分散型システムに方法を実行させ、前記方法が、
    前記複数のノードのそれぞれに一意識別子を割り振るステップと、
    前記ノードのうちの1つから前記分散型システムに前記ノードの1つまたは複数の一意識別子を含むタスクをブロードキャストするステップと、
    前記ブロードキャストされたタスクを各ノードにおいて記憶するステップと、
    前記ノードのそれぞれに関して、前記タスクの前記1つまたは複数の一意識別子が前記それぞれのノードの前記一意識別子を含む場合に前記タスクを実行するステップと、
    前記タスクを実行した各ノードから前記分散型システムに完了メッセージをブロードキャストするステップとを含む、非一時的コンピュータ可読媒体。
  2. 前記一意識別子が、汎用一意識別子(UUID)である請求項1に記載の非一時的コンピュータ可読媒体。
  3. 前記方法が、
    前記分散型システムに接続されたクライアントから前記ノードのうちの1つにおいて前記タスクを受信するステップをさらに含む請求項1に記載の非一時的コンピュータ可読媒体。
  4. 前記方法が、
    前記タスクの前記1つまたは複数の一意識別子が前記それぞれのノードの前記一意識別子を含む場合、前記それぞれのノードにおいて前記タスクを実行するステップの前に、前記それぞれのノードのキューに前記タスクを入れるステップをさらに含む請求項1に記載の非一時的コンピュータ可読媒体。
  5. 各ノードが、前記ブロードキャストされたタスクをログにタイムスタンプとともに記憶する請求項1に記載の非一時的コンピュータ可読媒体。
  6. 前記方法が、
    前記タスクの前記1つまたは複数の一意識別子が前記それぞれのノードの前記一意識別子を含む場合、前記それぞれのノードが前記タスクを実行し始めるときに開始メッセージをブロードキャストするステップをさらに含む請求項5に記載の非一時的コンピュータ可読媒体。
  7. 各ノードが、前記開始メッセージで示される時間および前記完了メッセージで示される時間に対応して前記ブロードキャストされたタスクを記憶する請求項6に記載の非一時的コンピュータ可読媒体。
  8. 前記ノードのうちの第1のノードが、障害が原因で前記ブロードキャストされたタスクを受信することができない請求項1に記載の非一時的コンピュータ可読媒体。
  9. 前記方法が、
    前記第1のノードが前記障害からリカバリした後に、前記第1のノードにおいて前記ノードのうちの1つまたは複数から前記ブロードキャストされたタスクを受信するステップと、
    前記第1のノードが前記障害からリカバリした後に、前記第1のノードにおいて前記ブローキャストされたタスクを記憶するステップとをさらに含む請求項8に記載の非一時的コンピュータ可読媒体。
  10. 実行可能な命令を記憶する非一時的コンピュータ可読媒体であって、前記実行可能な命令が、IPアドレスを割り振る方法をプロセッサに実行させ、前記方法が、
    MACアドレス内にIPアドレスを符号化するステップと、
    前記符号化されたMACアドレスを有するように仮想マシンを構成するステップと、
    前記符号化されたMACアドレスから前記IPアドレスを復号するステップと、
    前記復号されたIPアドレスを前記仮想マシンに割り振るステップとを含む、非一時的コンピュータ可読媒体。
  11. 前記IPアドレスが、前記MACアドレスの下位部分に含まれる請求項10に記載の非一時的コンピュータ可読媒体。
  12. 前記方法が、
    前記仮想マシンを構成するために使用される構成ファイルに前記符号化されたMACアドレスを記憶するステップをさらに含む請求項10に記載の非一時的コンピュータ可読媒体。
  13. 前記IPアドレスが、IPv4アドレスである請求項10に記載の非一時的コンピュータ可読媒体。
  14. ハイパーバイザが、ホスト上で前記仮想マシンを構成する請求項10に記載の非一時的コンピュータ可読媒体。
  15. 前記ホストが、前記ハイパーバイザを介して前記仮想マシンと通信することができない請求項14に記載の非一時的コンピュータ可読媒体。
  16. 前記方法が、
    前記ホストによって複数のMACアドレスに複数のIPアドレスを符号化するステップと、
    前記ハイパーバイザによって前記仮想マシンを構成するために使用される前記符号化されたMACアドレスとして前記符号化されたMACアドレスのうちの1つを選択するステップとをさらに含む請求項14に記載の非一時的コンピュータ可読媒体。
  17. 前記方法が、
    前記復号されたIPアドレスを用いて前記仮想マシンによってネットワークを介して通信するステップをさらに含む請求項10に記載の非一時的コンピュータ可読媒体。
  18. 実行可能な命令を記憶する非一時的コンピュータ可読媒体であって、前記実行可能な命令が、分散型システム内の複数のノードにわたるファイル・システム内に記憶されたファイルの一部の位置を特定する方法を実行させ、前記方法が、
    マッピング・ファイルにアクセスし、前記マッピング・ファイルのオフセットを指定するステップと、
    前記マッピング・ファイルの前記オフセットのデータを読み取るステップと、
    前記マッピング・ファイルの前記オフセットの前記データによって指定される前記ファイルの前記一部を記憶するノードにおいてタスクを開始するステップとを含み、
    前記マッピング・ファイルが、前記ノードにわたる前記ファイル・システム内の前記ファイルの一部を記憶するノードの位置を含み、
    前記マッピング・ファイルが、前記ファイルの一部に対応する複数の部分を有し、
    前記マッピング・ファイルにアクセスするステップが、前記ファイルの前記一部のデータにアクセスするために使用されるメカニズムを使用し、前記マッピング・ファイルの前記データが、前記ファイルのメタデータである、非一時的コンピュータ可読媒体。
  19. 前記マッピング・ファイルの前記一部が、位置データを含み、前記位置データが、前記マッピング・ファイル内に間隔を空けて記憶される請求項18に記載の非一時的コンピュータ可読媒体。
  20. 前記マッピング・ファイルの各位置データが、前記ファイルの前記一部のうちの対応する1つが前記ノードの中で記憶される位置を指定する請求項19に記載の非一時的コンピュータ可読媒体。
  21. 複数の追加のメタデータが、前記マッピング・ファイルに前記位置データとともに間隔を空けて記憶され、前記マッピング・ファイルのそれぞれの追加のメタデータが、前記ファイルの前記一部のうちの対応する1つの情報を指定する請求項19に記載の非一時的コンピュータ可読媒体。
  22. 前記オフセットが、前記マッピング・ファイル内の前記間隔の倍数である請求項18に記載の非一時的コンピュータ可読媒体。
  23. 前記ファイル・システムが、ネットワーク・ファイル・システム(NFS)である請求項18に記載の非一時的コンピュータ可読媒体。
  24. 前記ファイルの前記一部のデータにアクセスするために使用される前記メカニズムが、ネットワーク・ファイル・システム(NFS)アクセスである請求項18に記載の非一時的コンピュータ可読媒体。
  25. 前記方法が、
    前記マッピング・ファイルの前記オフセットにおいて読み取られた前記データに基づいて前記マッピング・ファイルへの前記アクセスに対する応答を生成するステップをさらに含む請求項18に記載の非一時的コンピュータ可読媒体。
  26. 前記応答が、XMLファイル・フォーマットである請求項25に記載の非一時的コンピュータ可読媒体。
JP2016520748A 2013-06-19 2013-06-19 非集中的な分散型コンピューティング・システム Expired - Fee Related JP6132980B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2013/001931 WO2014203023A1 (en) 2013-06-19 2013-06-19 Decentralized distributed computing system

Publications (2)

Publication Number Publication Date
JP2016530598A true JP2016530598A (ja) 2016-09-29
JP6132980B2 JP6132980B2 (ja) 2017-05-24

Family

ID=49551713

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016520748A Expired - Fee Related JP6132980B2 (ja) 2013-06-19 2013-06-19 非集中的な分散型コンピューティング・システム

Country Status (5)

Country Link
US (4) US9110719B2 (ja)
EP (3) EP2847678B1 (ja)
JP (1) JP6132980B2 (ja)
CN (1) CN105531675B (ja)
WO (1) WO2014203023A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021525926A (ja) * 2018-06-01 2021-09-27 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited ファイルシステムデータアクセス方法およびファイルシステム

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9576039B2 (en) 2014-02-19 2017-02-21 Snowflake Computing Inc. Resource provisioning systems and methods
US9965185B2 (en) * 2015-01-20 2018-05-08 Ultrata, Llc Utilization of a distributed index to provide object memory fabric coherency
CN106161384A (zh) * 2015-04-15 2016-11-23 伊姆西公司 用于在移动设备中提供对数据的安全访问的方法和系统
US20160321318A1 (en) * 2015-04-30 2016-11-03 Hewlett-Packard Development Company, L.P. Service provider dependency mapping
CN104935657A (zh) * 2015-06-15 2015-09-23 清华大学深圳研究生院 主动推送信息的方法和嵌入式节点操作系统
CA2985719C (en) 2015-06-25 2024-03-26 Gambro Lundia Ab Medical device system and method having a distributed database
US20170024224A1 (en) * 2015-07-22 2017-01-26 Cisco Technology, Inc. Dynamic snapshots for sharing network boot volumes
US20170091016A1 (en) * 2015-09-30 2017-03-30 Sap Portals Israel Ltd Continual execution in a computing system
US9985867B2 (en) * 2015-12-11 2018-05-29 Cisco Technology, Inc. Optimizing EVPN for data centers with redundant top-of-rack deployments
SG11201803928UA (en) * 2015-12-17 2018-06-28 Ab Initio Technology Llc Processing data using dynamic partitioning
CN106095618A (zh) * 2016-06-06 2016-11-09 北京中油瑞飞信息技术有限责任公司 数据操作的方法和系统
US10862821B1 (en) * 2016-06-16 2020-12-08 Amazon Technologies, Inc. Managing processor load in a multi-tenant environment
US11240305B2 (en) 2016-07-28 2022-02-01 At&T Intellectual Property I, L.P. Task allocation among devices in a distributed data storage system
US10719353B2 (en) * 2016-09-23 2020-07-21 Sap Se Handling failovers at one or more nodes in a distributed database system
US10264056B2 (en) * 2016-12-08 2019-04-16 Bank Of America Corporation Multicomputer processing of an event request from an event origination device with centralized event orchestration
US11082523B2 (en) 2017-02-09 2021-08-03 International Business Machines Corporation System, method and computer program product for a distributed virtual address space
CN107688500B (zh) * 2017-07-26 2021-12-24 创新先进技术有限公司 一种分布式任务处理方法、装置、系统及设备
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US11797326B2 (en) * 2018-01-22 2023-10-24 Vmware, Inc. External communication with packaged virtual machine applications without networking
US11579978B2 (en) * 2018-02-14 2023-02-14 Rubrik, Inc. Fileset partitioning for data storage and management
GB2571987B (en) * 2018-03-15 2022-05-25 Cloudreach Europe Ltd Processing task scheduling
US10963356B2 (en) 2018-04-18 2021-03-30 Nutanix, Inc. Dynamic allocation of compute resources at a recovery site
CN110609866B (zh) * 2018-06-15 2023-08-11 伊姆西Ip控股有限责任公司 用于协商事务的方法、设备和计算机程序产品
US11620191B2 (en) * 2018-10-01 2023-04-04 Rubrik, Inc. Fileset passthrough using data management and storage node
CN109614209B (zh) * 2018-10-26 2023-09-05 创新先进技术有限公司 一种任务处理方法、应用服务器及系统
US10846079B2 (en) 2018-11-14 2020-11-24 Nutanix, Inc. System and method for the dynamic expansion of a cluster with co nodes before upgrade
CN111193600B (zh) * 2018-11-14 2023-04-07 杭州海康威视系统技术有限公司 一种接管服务的方法、装置及系统
CN111367202B (zh) * 2018-12-26 2022-12-13 华为云计算技术有限公司 监控实例的方法、监控节点和监控集群
US10922272B2 (en) * 2019-01-28 2021-02-16 EMC IP Holding Company LLC Providing data across multiple clusters in a single namespace
US11347696B2 (en) * 2019-02-19 2022-05-31 Oracle International Corporation System for transition from a hierarchical file system to an object store
CN110457281A (zh) * 2019-08-14 2019-11-15 北京博睿宏远数据科技股份有限公司 数据处理方法、装置、设备及介质
US11354154B2 (en) * 2019-08-20 2022-06-07 Red Hat, Inc. Timer task ownership determination in a cluster based on a common cluster member selection algorithm
CN110750343B (zh) * 2019-09-20 2023-12-12 深圳市递四方信息科技有限公司 集群系统定时任务调度控制方法及集群系统
CN110704185B (zh) * 2019-09-20 2024-03-22 深圳市递四方信息科技有限公司 集群系统分片定时任务调度方法及集群系统
CN110737520B (zh) * 2019-09-20 2024-03-12 深圳市递四方信息科技有限公司 集群系统调度控制定时任务的方法及集群系统
CN110704172B (zh) * 2019-09-20 2024-03-12 深圳市递四方信息科技有限公司 集群系统定时任务调度方法及集群系统
CN111090519B (zh) * 2019-12-05 2024-04-09 东软集团股份有限公司 任务执行方法、装置、存储介质及电子设备
US11609776B1 (en) * 2019-12-23 2023-03-21 Cisco Technology, Inc. Elastic internet protocol (IP) address for hypervisor and virtual router management in a branch environment
CN111274205B (zh) * 2020-01-07 2024-03-26 北京小米松果电子有限公司 数据块访问方法及装置、存储介质
CN112000618B (zh) * 2020-08-07 2022-06-07 北京浪潮数据技术有限公司 集群节点的文件变动管理方法、装置、设备及存储介质
CN112087512A (zh) * 2020-09-08 2020-12-15 浙江惠瀜网络科技有限公司 一种自动化扩展材料下载任务的方法
US20230127387A1 (en) * 2021-10-27 2023-04-27 EMC IP Holding Company LLC Methods and systems for seamlessly provisioning client application nodes in a distributed system
US11922071B2 (en) 2021-10-27 2024-03-05 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components and a GPU module
US20230130893A1 (en) * 2021-10-27 2023-04-27 EMC IP Holding Company LLC Methods and systems for seamlessly configuring client nodes in a distributed system
CN117472530B (zh) * 2023-10-25 2024-04-05 上海宽睿信息科技有限责任公司 一种基于集中管理的数据智能调度方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62187958A (ja) * 1986-02-13 1987-08-17 Fujitsu Ltd マルチプロセツサ実行方式
JP2013061700A (ja) * 2011-09-12 2013-04-04 Sony Corp 情報処理装置、情報処理方法、記録媒体および情報処理システム

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4080599B2 (ja) 1998-06-17 2008-04-23 富士通株式会社 通信制御装置およびマルチキャスト対応lanに適用される通信制御方法
US6401215B1 (en) 1999-06-03 2002-06-04 International Business Machines Corporation Resynchronization of mirrored logical data volumes subsequent to a failure in data processor storage systems with access to physical volume from multi-initiators at a plurality of nodes
US6356801B1 (en) * 2000-05-19 2002-03-12 International Business Machines Corporation High availability work queuing in an automated data storage library
US7539746B2 (en) * 2001-02-01 2009-05-26 Emc Corporation Highly available transaction failure detection and recovery for electronic commerce transactions
WO2002087172A1 (en) * 2001-04-20 2002-10-31 Motorola, Inc. Protocol and structure for self-organizing network
US7222257B1 (en) 2001-06-12 2007-05-22 Emc Corporation Method and system for repairing a redundant array of disk drives
US7509372B2 (en) * 2001-09-13 2009-03-24 International Business Machines Corporation Method and system for redirecting data requests in peer-to-peer data networks
US6910098B2 (en) 2001-10-16 2005-06-21 Emc Corporation Method and apparatus for maintaining data coherency
US6763436B2 (en) 2002-01-29 2004-07-13 Lucent Technologies Inc. Redundant data storage and data recovery system
US7392421B1 (en) 2002-03-18 2008-06-24 Symantec Operating Corporation Framework for managing clustering and replication
US7024586B2 (en) 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
US8204992B2 (en) * 2002-09-26 2012-06-19 Oracle America, Inc. Presence detection using distributed indexes in peer-to-peer networks
US7395536B2 (en) * 2002-11-14 2008-07-01 Sun Microsystems, Inc. System and method for submitting and performing computational tasks in a distributed heterogeneous networked environment
US6907507B1 (en) 2002-12-19 2005-06-14 Veritas Operating Corporation Tracking in-progress writes through use of multi-column bitmaps
US6978354B1 (en) 2002-12-20 2005-12-20 Veritas Operating Corporation Method for creating a virtual data copy of a volume being restored
US6910111B1 (en) 2002-12-20 2005-06-21 Veritas Operating Corporation Volume restoration using an accumulator map
US7895338B2 (en) 2003-03-18 2011-02-22 Siemens Corporation Meta-search web service-based architecture for peer-to-peer collaboration and voice-over-IP
US7178055B2 (en) 2003-06-06 2007-02-13 Hewlett-Packard Development Company, L.P. Method and system for ensuring data consistency after a failover event in a redundant data storage system
US8689043B1 (en) 2003-06-30 2014-04-01 Symantec Operating Corporation Fast failover with multiple secondary nodes
US20050080858A1 (en) * 2003-10-10 2005-04-14 Microsoft Corporation System and method for searching a peer-to-peer network
US20050108368A1 (en) 2003-10-30 2005-05-19 Aditya Mohan Method and apparatus for representing data available in a peer-to-peer network using bloom-filters
US7225307B2 (en) 2004-05-04 2007-05-29 International Business Machines Corporation Apparatus, system, and method for synchronizing an asynchronous mirror volume using a synchronous mirror volume
US8275951B2 (en) 2004-06-10 2012-09-25 Hewlett-Packard Development Company, L.P. Local bitmaps for an array of redundant storage devices
US7805407B1 (en) 2004-06-16 2010-09-28 Oracle America, Inc. System and method for dynamic configuration of replicated database servers
US7844691B2 (en) 2004-12-30 2010-11-30 Xstor Systems, Inc. Scalable distributed storage and delivery
US7617259B1 (en) 2004-12-31 2009-11-10 Symantec Operating Corporation System and method for managing redundant storage consistency at a file system level
US8401997B1 (en) 2005-06-30 2013-03-19 Symantec Operating Corporation System and method for replication using consistency interval markers in a distributed storage environment
US7603581B2 (en) 2006-03-17 2009-10-13 International Business Machines Corporation Remote copying of updates to primary and secondary storage locations subject to a copy relationship
US7970835B2 (en) 2006-04-04 2011-06-28 Xerox Corporation Peer-to-peer file sharing system and method using downloadable data segments
US7929535B2 (en) 2006-07-07 2011-04-19 Qualcomm Incorporated Geolocation-based addressing method for IPv6 addresses
US8005022B2 (en) 2006-07-20 2011-08-23 Oracle America, Inc. Host operating system bypass for packets destined for a virtual machine
US7702953B2 (en) 2007-01-04 2010-04-20 International Business Machines Corporation Storage management in cascaded replication of data
US8498967B1 (en) 2007-01-30 2013-07-30 American Megatrends, Inc. Two-node high availability cluster storage solution using an intelligent initiator to avoid split brain syndrome
US7685378B2 (en) 2007-02-15 2010-03-23 Hitachi, Ltd. Methods and apparatus for adjusting a journal area for continuous data protection
US20090006744A1 (en) 2007-06-28 2009-01-01 Cavallo Joseph S Automated intermittent data mirroring volumes
US7991972B2 (en) 2007-12-06 2011-08-02 International Business Machines Corporation Determining whether to use a full volume or repository for a logical copy backup space
CN101465786B (zh) * 2007-12-18 2013-01-09 华为技术有限公司 一种资源转发的方法、网络实体及网络系统
US8817595B2 (en) * 2008-02-13 2014-08-26 Telefonaktiebolaget L M Ericsson (Publ) Overlay network node and overlay networks
GB0807990D0 (en) 2008-05-02 2008-06-11 Pace Micro Tech Plc Peer to peer broadcast content synchronisation
EP2279584B1 (en) 2008-05-20 2012-01-04 Thomson Licensing System and method for distributing a map of content available at multiple receivers
US8015343B2 (en) 2008-08-08 2011-09-06 Amazon Technologies, Inc. Providing executing programs with reliable access to non-local block data storage
US9496620B2 (en) 2013-02-04 2016-11-15 Ubiquiti Networks, Inc. Radio system for long-range high-speed wireless communication
US20100333094A1 (en) * 2009-06-24 2010-12-30 Mark Restall Job-processing nodes synchronizing job databases
EP2446604A1 (en) * 2009-06-26 2012-05-02 Telefonaktiebolaget L M Ericsson (PUBL) Method and node for locating objects in a peer-to-peer network
CN101997759B (zh) * 2009-08-10 2013-06-05 中兴通讯股份有限公司 一种业务实现方法及业务系统
US9043401B2 (en) * 2009-10-08 2015-05-26 Ebay Inc. Systems and methods to process a request received at an application program interface
WO2011049491A1 (en) * 2009-10-21 2011-04-28 Telefonaktiebolaget L M Ericsson (Publ) Method and arrangement for locating services in a peer-to-peer network
US8321648B2 (en) * 2009-10-26 2012-11-27 Netapp, Inc Use of similarity hash to route data for improved deduplication in a storage server cluster
JP5521595B2 (ja) 2010-02-05 2014-06-18 富士通株式会社 ストレージシステム及びストレージ制御方法
US20110225297A1 (en) * 2010-03-11 2011-09-15 International Business Machines Corporation Controlling Access To A Resource In A Distributed Computing System With A Distributed Access Request Queue
CN102130935A (zh) 2010-08-05 2011-07-20 华为技术有限公司 数据获取方法和装置以及网络存储方法和设备
US8655955B2 (en) * 2011-08-18 2014-02-18 International Business Machines Corporation Stream processing using a client-server architecture
US8650365B2 (en) * 2011-09-02 2014-02-11 Compuverde Ab Method and device for maintaining data in a data storage system comprising a plurality of data storage nodes
US8549187B1 (en) 2012-08-03 2013-10-01 American Megatrends, Inc. System and method of MAC address assignment using IP addresses

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62187958A (ja) * 1986-02-13 1987-08-17 Fujitsu Ltd マルチプロセツサ実行方式
JP2013061700A (ja) * 2011-09-12 2013-04-04 Sony Corp 情報処理装置、情報処理方法、記録媒体および情報処理システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021525926A (ja) * 2018-06-01 2021-09-27 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited ファイルシステムデータアクセス方法およびファイルシステム
JP7378870B2 (ja) 2018-06-01 2023-11-14 アリババ・グループ・ホールディング・リミテッド ファイルシステムデータアクセス方法およびファイルシステム

Also Published As

Publication number Publication date
US9110719B2 (en) 2015-08-18
EP2847678A1 (en) 2015-03-18
US20150089504A1 (en) 2015-03-26
EP2863307A1 (en) 2015-04-22
US20150088882A1 (en) 2015-03-26
EP2847678B1 (en) 2016-06-08
JP6132980B2 (ja) 2017-05-24
WO2014203023A1 (en) 2014-12-24
CN105531675A (zh) 2016-04-27
EP2863308B1 (en) 2018-08-08
US9304821B2 (en) 2016-04-05
CN105531675B (zh) 2019-04-12
US20160188628A1 (en) 2016-06-30
EP2863308A1 (en) 2015-04-22
US20150074168A1 (en) 2015-03-12
US9069784B2 (en) 2015-06-30

Similar Documents

Publication Publication Date Title
JP6132980B2 (ja) 非集中的な分散型コンピューティング・システム
US20220147495A1 (en) Virtualized file server
US11855905B2 (en) Shared storage model for high availability within cloud environments
US9684571B2 (en) Namespace mirroring in an expandable storage volume
US20050210067A1 (en) Inter-server dynamic transfer method for virtual file servers
US20230367746A1 (en) Distributed File System that Provides Scalability and Resiliency
US20230393787A1 (en) Distributed File System with Disaggregated Data Management and Storage Management Layers
US20220391361A1 (en) Distributed File System with Reduced Write and Read Latencies
EP4102350A1 (en) Distributed file system that provides scalability and resiliency

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20161014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170314

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170418

R150 Certificate of patent or registration of utility model

Ref document number: 6132980

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees