JP2001504616A - グローバルアドレシング可能なメモリを用いた高度に利用可能なデータ記憶装置を提供するためのシステムおよび方法 - Google Patents

グローバルアドレシング可能なメモリを用いた高度に利用可能なデータ記憶装置を提供するためのシステムおよび方法

Info

Publication number
JP2001504616A
JP2001504616A JP52399698A JP52399698A JP2001504616A JP 2001504616 A JP2001504616 A JP 2001504616A JP 52399698 A JP52399698 A JP 52399698A JP 52399698 A JP52399698 A JP 52399698A JP 2001504616 A JP2001504616 A JP 2001504616A
Authority
JP
Japan
Prior art keywords
node
data
directory
nodes
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.)
Ceased
Application number
JP52399698A
Other languages
English (en)
Inventor
ビー. カーター,ジョン
エイチ. デイビス,スコット
ジェイ. ディターリッチ,ダニエル
ジェイ. フランク,スティーブン
エス. フィリップス,ロバート
ウッズ,ジョン
ポーター,デイビッド
エイチ. リー,シン
Original Assignee
マンゴソフト コーポレイション
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
Priority claimed from US08/754,481 external-priority patent/US6148377A/en
Application filed by マンゴソフト コーポレイション filed Critical マンゴソフト コーポレイション
Publication of JP2001504616A publication Critical patent/JP2001504616A/ja
Ceased legal-status Critical Current

Links

Classifications

    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/182Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/24Negotiation of communication capabilities
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/964Database arrangement
    • Y10S707/966Distributed
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 データ交換定期的接続状態情報の持続的格納を提供するグローバルにアドレシング可能なメモリシステムへのコンピュータノードインターフェースのネットワーク。交換される接続状態情報は、ノード故障に関する情報をシステム内の他のノードに提供し、生き残りノードは、この情報を用いて、機能停止したノードがある場合にどのノードが機能停止したのかを決定する。様々な処理を用いて、RAMディレクトリ、ディスクディレクトリまたはファイルシステム情報を含む、故障ノードが関与したグローバルアドレススペースの一部を修復する。さらに、ノードを複数のグループに細分化して、1つのグループに属するノード間で接続状態情報を交換してもよい。その場合、各グループは、グループ毎の接続状態情報を交換し、故障を修復することができる。

Description

【発明の詳細な説明】 グローバルアドレシング可能なメモリを用いた 高度に利用可能なデータ記憶装置を提供するためのシステムおよび方法 関連出願の引用 本出願は1996年11月22日に出願された同時係属中の米国特許出願番号 第08/754,481号および1997年3月28日に出願された同時継続中 の米国特許出願番号第08/827,534号の一部継続出願であり、双方共に 本明細書中で参考として援用される関連する弁護士管理番号CLC−002であ る。 技術分野 本発明は一般に分散データ記憶装置システムに関し、詳細には高度に利用可能 なデータの分散記憶装置を維持するためのシステムおよび方法に関する。 背景情報 コンピュータファイルシステムおよびデータベースシステムのようなコンピュ ータベースの構造化記憶装置システムは莫大な量のデータへの素早く手軽なアク セスをユーザに提供するのに著しく成功してきた。今日の商業でこれらの構造化 記憶装置システムの重要性を誇張することは困難である。例えば、構造化記憶装 置システムは企業が何年もの間に変更および更新し得る持続的なデータの膨大な 記憶を事業が生成するまたは維持するのを可能にしてきた。多くの企業にとって 、この持続的なデータは企業の中心の経営を遂行するのに毎日使用する価値ある 主要な資産である。データはコンピュータファイル(例えばソースコード、ワー ドプロセッシング文書など)、データベースレコードおよび情報(例えば、従業員 、 顧客、および/または製品の情報)、および/またはウェブページであり得る。 そのようなデータは「高度に利用でき」なければならない。すなわち、データは システムハードウェアまたはソフトウェアの故障にもかかわらず、しばしば日々 のプロセスの決定に用いられるためデータは利用できなければならない。 高度な利用性またはフォールトトラレンスを提供する以前の試みは例えば冗長 システムを提供するハードウェア技術と例えば独立ディスクの冗長アレイ(RA ID)技術および集積化といったソフトウェアへの取り組みの両方が含まれてい る。これらの試みのそれぞれは独自に固有の弱点を有する。 冗長システムは二重または三重冗長に代表される。システムのこれらのタイプ は1台の機器の仕事を達成するのに1台以上の完全な機器を提供する。各機器は 同時に同じ作業を実行する。1台の機器が故障またはエラーに直面する場合、付 加的な機器が正しい結果を提供する。システム故障の耐用性が高いそのようなシ ステムは極めて高価である。実際、複数のネットワーク機器は各ネットワークを 実現するために提供されなければならない。 記憶装置のための同様のフォールトトラレントへの取り組みがRAIDである 。RAID技術はディスクミラーリング(いわゆるRAID I)またはパリティ を有するディスクストライプ(いわゆるRAID V)として実現され得る。デ ィスクミラーリングは高度なフォールトトラレントの記憶装置を提供するが、通 常2つの複数のディスクが1つのディスクデータを記憶するために提供されなけ ればならないので、高価である。各時間データがディスクアレイに書き込まれ、 パリティブロックは計算されなければならないので、パリティを有するディスク ストライプは集中的な書き込みアプリケーションに対して乏しいパフォーマンス を有する。ミシングブロック(またはブロック)は読み取り動作が実行されるた びに再計算されなければならないので、ディスクストライプは強固なN+1冗長 を提供し、第1のエラーの後に付加的なパフォーマンスの低下を受ける。最終的 に、そのような強固なN+1冗長機構はそれ自身の「回復」の方法を有さず、つ まり、一つのエラーの後、システムはもうN+1冗長ではない。 中央化構造化記憶装置ネットワークシステムの信頼性および動作を改良する他 のソフトウェアへの取り組みは一般に以下を含む。(1)1つ以上のサーバに対 するデータおよび関連ディスクの静的マッピング(「共有なし」の集積性とも呼ば れる)(2)共有ディスクのような共有データ貯蔵所でのデータの記憶(「すべて のものを共有」の集積性とも呼ばれる)および(3)データベース貯蔵所。 第1の方法を用いたシステムは複数のサーバおよび関連ディスクに亘ってデー タ記憶部分を分散する。各サーバは構造化データ記憶の部分と同様に任意に特定 のサーバ内のデータ記憶部分を記述するディレクトリ構造の関連部分を維持する 。これらのシステムは複数のサーバに亘って静的にデータ記憶を分散することに よってデータの損失に対して警戒し、それによって、任意の一つのサーバの故障 がデータ全体の部分のみの損失の結果になる。しかし、公知の集積データベース 技術はデータの損失に対して警戒するよりフォールトトラレントな動作を提供し 得、および二重経路ディスクのための支持を提供し得るが、公知のシステムは依 然と様々なサーバに亘ってデータの静的な割り当てに頼る。データはサーバ間で 動的に割り当てられないので、(1)システムリソースはそれらの利用下で生じ るシステム使用方法に基づいて割り当てられない(2)新しいサーバはデータセ ットが増加したとしても、またはある特定のサーバがデータセットの一部に作ら れたサービス要求を果たせないとしても提供されなければならないので、スケー ラブルパフォーマンス(scaleable perfomance)は制限さ れる(3)そのような静的な割り当てはやはりデータを保存するために残存する 情報を記憶するサーバを少なくとも一つ必要とする。また、一つのサーバの故障 はシステムのパフォーマンスを低下させるダウンサーバによって以前に貢献した データを貢献させる第2のサーバを必要とする。 第2の方法を用いたシステムは共有ディスクのような共有データ貯蔵所に記憶 されたデータを記憶する。共有ディスクはシステムノードのサブセット間、また はシステムの全てのノード間に共有し得る。システムの各ノードは頻繁に構造化 記憶の部分で中央データ貯蔵所を更新する。例えば、データベースシステムで、 各ノードは現在データ記憶に対して用いるテーブルをエクスポートする。この方 法は中央データ貯蔵所を平均化する負荷の問題をエクスポートする間、方法は二 つの主な弱点を受ける。第1に、スループットは中央データ記憶の干渉性を確実 するのに関連するオーバーヘッドの増加のせいで減少する。第2に、ノードがあ るページの部分にアクセスする場合、全体のページがロックされているのでロッ クが不十分である。結果として、正しいコンフリクトが存在しない場合でさえ、 ノードはメモリの競合を受け得る。 より高いレベルであるが、ディスクミラーイングに類似したものはデータベー スの複製に基づく技術である。これらのシステムはデータ記憶の複製またはデー タ記憶で実行されたトランザクションを提供し得る。従って、これらのシステム は構造化された記憶装置システムで静的な冗長を提供することによりデータの損 失に対して更に警戒を続ける。しかし、そのようなシステムは上記の他の静的技 術と同じ弱点を受ける。そのうえ、いわゆる「安全トランザクション」複製技術 は貢献するテーブル数が増加するとスケーラビリティの問題を受ける。 発明の要旨 本発明はエラーに直面した場合にパフォーマンスの低下を受けない現在のデー タ記憶装置システムより、信頼ができ、より大きいフォールトトラレント動作を 提供するデータ記憶装置システムに関する。本明細書で説明される新規のシステ ムはディスク記憶装置のための自身の回復N+1冗長、RAM記憶装置、および 分散したシステムデータによる構造化データ記憶装置および全体的にアドレシン グ可能なメモリ空間を亘るデータ構造、ネットワーク上のより異なるノードの一 つによって管理される部分を達成する。各ノードは局所的に現在アクセスしてい るシステムページを管理するので、システムはパフォーマンスを最適化するおよ びノードアクセス時間を最小化するためにネットワークの活性レベルおよびアク セスパターンに応じて動的にデータを動かす能力を有する。システムは更に、フ ァイルシステム、データベースシステム、および要求しているノードに対してウ ェブページを記憶、共有、および送達するシステムのような複数の構造化記憶装 置システムの異なるタイプに対して分散制御を提供する。 システムデータはネットワークノードに亘って分散されるのでシステムはさら に動作中に発生したエラーを修復することができる。適当なデータ構造および動 作方針はノードが損傷するまたは情報を紛失する場合、システムが同定できるこ とを提供される。情報は位置づけられ得、または再生成され得、およびシステム をN+1冗長に戻すネットワーク上の他のノードに再分散される。任意に、共有 メモリシステムはネットワークに接続されるいくつかのまたはすべてのメモリデ バイスに亘ってデータの記憶装置を分散する分散共有メモリシステム(DSM) のように使用され得る。ネットワークに接続され得るメモリデバイスはハードデ ィスクドライブ、テープドライブ、フロッピーディスクドライブ、CD−ROM ドライブ、光ディスクドライブ、ランダムアクセスメモリチップ、または読み取 り専用メモリチップを含む。 ある局面で、本発明はデータ上の分散制御を提供するためのシステムでノード の故障の後の継続的な動作方法に関する。複数のノードはネットワークによって 相互連結され、およびノードは周期的に連結情報を交換する。各ノードの記憶は データを操作するためのデータ制御プログラムのインスタンスである。従って、 データ制御プログラムの多重に分散されたインスタンスはネットワーク上に存在 する。データ制御プログラムの各インスタンスは分散共有メモリシステムをイン ターフェイスする。このメモリシステムは相互接続されたノードに亘って分散記 憶装置およびアドレシング可能なデータの持続的記憶装置を提供する。データ制 御プログラムの各インスタンスはその中に含まれるデータを有するメモリデバイ スとして共有メモリシステムを使用するのに作動される。共有メモリシステムは データ上で分散制御を提供するデータへのアクセスを調整する。交換連結情報は ノードの故障を決定するのに使用される。ノードの故障が認識されると、故障し たノードが関係したデータの部分が決定される。 別の局面で、本発明は、データに分散制御を提供するためのシステムにおいて 、ノード故障後、連続的に動作する方法に関する。複数のノードは、ネットワー クによって相互接続され、ノードは定期的に連結情報を交換する。操作データに おけるデータ制御プログラムのインスタンスが各ノードに格納される。従って、 データ制御プログラムの複数の、分散インスタンスはネットワーク全体に存在す る。データ制御プログラムの各インスタンスは、相互接続されたノードを横切っ て分散ストレージを提供し、データのアドレシング可能持続性ストレージを提供 するための全体的なアドレシング可能データストアとインターフェースする。デ ータ制御プログラムの各インスタンスは、メモリデバイスがその中で維持された デー タを備えるように全体的なアドレシング可能データストアを用いるために動作さ れる。全体的なアドレシング可能データストアは、データに分散制御を提供する ためのデータへのアクセスを調整する。変換された連結情報はノード故障を決定 するのに用いられる。一度ノード故障が認められると、原因である故障のおきた ノードのデータの一部分が決定される。 上記のおよび他の目的、捉え方、特徴、本発明の利点は以下の明細書および請 求の範囲から、更に明らかになる。 図面の簡単な説明 図面において、概して、同様の参照文字は、異なった図面を通して同じ部分に 関する。また、発明の原理を例示のために概して強調されているため、図面の寸 法は、正確でない。 図1は、本発明における構造化データストレジシステムの分散アドレシング可 能共有メモリの概念上のブロック図である。 図2は、ネットワークノードを論理的に組織する実施形態の図式である。 図3は、図1のシステムのある実施可能の実施形態の図であり、言い換えれば 、ソースコードファイル、ワードプロセッシング文書ファイルなどコンピュータ ファイルに関するストレージを提供する分散アドレシング可能共有メモリファイ ルシステムの図である。 図4は、図3のファイルシステムとともに用いるのに適したディレクトリエン トリ、および連想ファイル記述子(「Iノード」として公知である)の組織のグラ フィカルな表示である。 図5は、図3のファイルシステムとともに用いるのに適したIノードの図であ る。 図6は、ファイルシステムメタデータを更新するための工程のフローチャート である。 図7は、分散共有メモリコンピュータネットワークを示す。 図8は、図7に示されたある分散共有メモリコンピュータネットワークを更に 詳細に示した機能的ブロック図である。 図9は、図8に示されたネットワークとともに実行するのに適した共有メモリ サブシステムをさらに詳細に示す。 図10は、本発明によるある共有メモリサブシステムの機能的なブロック図で ある。 図11は、図10で示されたタイプの共有メモリサブシステムによって提供さ れ得るディレクトリページを示す。 図12は、共有メモリの中で分散され得、図11に示されたタイプのディレク トリページを形成し得るディレクトリを示す。 図13は、分散共有メモリ部分をトラッキングするための図12によるディレ クトリを用いたシステムを形成する機能的ブロック図を示す。 説明 本発明によるネットワークシステム10は、複数のネットワークノードを含み 、ネットワークノードは構造化ファイルシステムあるいはデータベースなどのデ ータの構造化ストアを格納するメモリ空間にアクセスする。各ノードは少なくと もデータ制御プログラムを含み、データの構造化ストアへアクセスし、および構 造化ストアを管理する。データの構造化ストアはアドレシング可能共有メモリに 格納され得るか、あるいはデータの構造化ストアはさらに従来的な様式で、格納 され得る。例えば、各ノードは、データの構造化ストアの特定のエレメントある いは複数のエレメントに格納することに責任を負い得る。そのような実施形態に おいて、データ制御プログラムは、全体的な独自の識別子を用いて構造化ストア の所望部分ヘアクセスし得る。基本的なシステムは、識別子を所望のデータへア クセスするためのネットワーク転送コマンドを含んだ一以上のコマンドに翻訳す る。他の実施形態で、データの構造化ストアはアドレシング可能共有メモリ空間 に格納され、ノードが、標準メモリアクセスコマンドを用いる構造化ストア部分 へ容易にアクセスすることを可能にする。 システム10はファイルシステム、データベースシステム、ウェブサーバ、オ ブジェクト貯蔵システム、あるいは組織化されたデータセットを維持するための 任意の他の構造化ストレージシステムであり得る。本明細書で用いるように、用 語「ウェブサーバ」は、任意のプロセッサを意味し、それは、データオブジェク ト(アクティブXオブジェクトなど)、アプリケーション(JAVAアプッレット など)、あるいはファイル(HTMLファイルなど)を、ウェブプロトコル(た とえばhttpあるいはftp)を介してリクエスタへ転送する。ある開示され た実施形態において、システム10はファイルシステムであり、種々のコンピュ ータファイルを維持する。しかし、これは例示的な目的のために提供される本発 明のある実施形態でしかない。本発明は、複数の構造化ストレージシステム(例 えば、データベースシステム、ウェブページシステム、インターネットなど)の うちの任意の1つを提供するために用いられ得る。本発明は、ファイルシステム あるいは、本明細書に記載された他の特定の実施形態に限定され得ない。 図1を参照すると、本発明に依るネットワークシステム10は複数のネットワ ークノード12a〜12dおよびデータ28の構造化ストアを格納するための部 分22を備えたアドレシング可能共有メモリ空間20を備える。各ノード12a 〜12dは、幾つかのサブエレメントを含み得る。例えば、ノード12aはプロ ッセッサ30a、データ制御プログラム32a,および共有メモリサブシステム 34aを備える。開示された実施形態において、ノード12aおよび12cの2 つのノードは、アドレシング可能共有メモリ空間20の中にデータ28の構造化 ストアをグラフィカルに表現するディスプレイ40および42を提供するモニタ を備える。アドレシング可能共有メモリ空間20は、各ネットワークノード12 a〜12dを相互に連結し、アドレシング可能共有メモリ空間20の中に含まれ たデータ28の構造化ストアへのアクセスを各ノード12a〜12dへ提供する 。 本発明によるシステム10は、数ある中で、各ネットワークノード12a〜1 2dに、データ28の構造化ストアの共有制御を提供する。従って、システム1 0は、ネットワークのノードにわたって、データストアの制御を分散し得る。こ の目的のために、ノード12aなどのシステム10の各ノードは、共有メモリサ ブシステム34aとインタフェースするデータ制御プログラム32aを備える。 データ制御プログラム32aは、ファイルシステムなどの、構造化ストレージシ ステムとして作動し得、データの構造化ストアを維持するために、および、デー タの構造化ストアを格納し得るアドレシング可能メモリデバイスとして共有メモ リシステムを用いるために用意される。データ制御プログラム32aの指示で、 共有メモリサブシステム34aは、アドレシング可能共有メモリ空間20内のデ ータにアクセスし得、データを格納し得る。これらの協力的なエレメントは、構 造化ストレージシステムを提供する。それは、分散アーキテクチャを備え、それ によって、中央集権化制御および中央集権化サーバに依存した公知の構造化スト レージシステムよりも優れた故障耐性、信頼性、および可撓性を達成する。従っ て、本発明は、分散的に制御され、容易に評価されるファイルシステム、データ ベースシステム、ウェブページシステム、オブジェクト格納庫、データキャッチ ングシステム、あるいは任意の他の構造化ストレージシステムをコンピュータネ ットワークに提供する。 種々のシステム機能を提供するために、ネットワーク(図1の12a〜d)に 存在する全てのノードのリストおよびノードに関する相互接続情報を維持する必 要がある。ある実施形態において、ノード情報は、故障復元のレベルを提供する ために用いられ、それは、以下に詳細に述べられる。 ノードのリストを維持するための任意のデータ構造は、リストがそれぞれ簡潔 に残存する間は、用いられ得る。ネットワークノードのリストがネットワーク技 術から独立することもまた望まれ得、これはネットワークアドレスが直接用いら れないことを意味する。ある実施形態において、独自の認識コードはネットワー クにおいて、各ノード12a〜dに割り当てられる。各ノードに割り当てられた 認識コードは変えるべきではない。 明細書全体で記述されるネットワークは、地理的に広められる、あるいは別個 のネットワークに位置される数千のノードを含み得る。そのようなネットワーク トポロジーのためのノードの平面リストを維持することは、階上に非常に多くの リストを維持するという結果になる。従って、階上での維持を減らすためにノー ドリストにいくつかの構造を加えることが、概して望まれる。 図2に記述される実施形態を参照すれば、ノード12a〜eはノード52、5 4のグループに集められ、種々のネットワークトポロジーをもたらすために定義 され得る。ノードのグループはまた、グループ化され得る。これはノードおよび ツリー構造の階層に至る。メンバーとして含む、ある「ルート」グループ56が あり、全グループおよびノードはネットワークに存在する。さらに、効率は、グ ループサイズを、所定のノードの数に限定することによって達成される。 図2によって記述された実施形態において、グループメンバーシップはまれに 多少なりとも変化することが期待される。一般に、ノード12a−eが、ネット ワーク中に取り入れられた場合、それは特定のグループ52、54に配置され、 ノードグループの提携はネットワーク管理者によって保証されるコマンドの結果 としてのみ変化すべきである。 例えば、ノードがグループ化され、任意のあるグループに所属するノードの数 が拘束されるという実施態様において、識別表示の2つの形式が各ノードに割り 当てられ得る。識別表示の短い形式は、グループ化された情報を暗号化した形式 を割り当て得、従って、しかしまれに、ネットワークトポロジあるいは論理的組 織を用いて変化し得る。識別表示の長い形式はまた、不変状態で保証される各ノ ードへ割り当てられ得る。後者の形式は主に、ネットワークにおいて、各ノード 12a〜eで参照するために用いられる。 例えば、ノード52および54のグループは64のメンバーに限られ得、各ノ ードに対して識別情報をエンコードするのに6ビット必要である。従って、1よ りも大きく最大64までのノードグループが存在するときに、12ビットでシス テムがネットワークにおいて任意のノードを個別に識別できる。64を超えるノ ードグループが存在するネットワークに対して、ノードグループはそれら自体が グループ化されなければならなず、システムにおいて任意のノードを個別に識別 するためには18ビットが必要とされる。 12a〜eの各ノードには、また、ノードの寿命において不変である永久識別 コードが割り当てられる。永久識別コードは、永久識別コードを空間において固 有にするようにグローバルアドレス要素を使用して構築され得、および、永久識 別コードを結局固有にするように日付けおよび時間要素を使用して構築され得る 。従って、本実施形態において、ノードの永久識別コードはアドレスおよびタイ ム−スタンプの両方から構成され、その永久識別コードが固有であることを確実 に する。 図1を再度参照すると、本発明のシステム10は、アドレシング可能共有メモ リ空間20内にデータ構造化ストア28を維持している。ノード12a〜12d のそれぞれは、共有メモリサブシステム34a〜34dを介してアドレシング可 能共有メモリ空間20にアクセスすることができる。共有メモリサブシステム3 4a〜34dのそれぞれは、そのノードにアドレシング可能共有メモリ空間20 へのアクセスを提供する。共有メモリサブシステム34a〜34dは、ノードの メモリアクセス動作のそれぞれを調整して、所望のデータへのアクセスを提供し 、およびアドレシング可能共有メモリ空間20においてデータのコヒーレンシー (coherency)を維持する。このことにより、相互接続されたノード12a〜12 dは、アドレシング可能共有メモリ空間20をデータを格納および検索するため の空間として使用することができる。アドレシング可能共有メモリ空間20の少 なくとも一部は、データの持続性記憶装置を提供する物理的なメモリシステムに よって支持される。例えば、アドレシング可能共有メモリ空間20の一部は、1 以上のハードディスクドライブに割り当てられるかあるいはマッピングされ得る 。この1以上のハードディスクドライバは、ネットワーク上に存在するか、ある いは、特定のノードに対するローカルハードディスク記憶装置として、ネットワ ークノード12a〜12dのうちの1以上と関連する。従って、図1は、本発明 のシステムが、アドレシング可能共有メモリ空間へのアクセスをネットワークノ ードに提供する共有メモリサブシステムを有することを示す。その空間の少なく とも一部は、1以上の持続性記憶メモリ装置(例えば、ハードディスク)の少な くとも一部分に割り当てられ、ノードがデータを1以上の持続性記憶メモリ装置 に格納および検索することならびに、ノードがデータを1以上の持続格納メモリ 装置から格納および検索することを許容する。このようなアドレシング可能共有 メモリ空間の好ましい実施形態は、1996年11月22に出願された同一譲受 人の米国特許出願第08/754、481号に記載されており、この特許を参考 として援用する。 それ故に、本発明の1つの実現はノード12a〜12dのそれぞれが、それぞ れの共有メモリサブシステムを、持続的なデータ記憶装置を提供するメモリ装置 として使用し得ることである。 データ制御プログラム32a〜32dのそれぞれは、それぞれの共有メモリサ ブシステム34a〜34dに結合する、ソフトウェアモジュールであり、従来の データ記憶プログラムとローカルメモリ装置との間のインタフェースと同様に動 作する。例えば、データ制御プログラム32aは、共有メモリサブシステム34 aにデータをストリームすることができ、共有メモリサブシステム34aからデ ータを収集することができる。共有メモリサブシステムはメモリアクセスをアド レシング可能共有メモリ空間20に調整するので、それぞれのデータ制御プログ ラムは、ネットワークにおける他のデータ制御プログラムとのやり取りを管理お よび調整しなくてもよい、あるいは、1以上の中央サーバとのやり取りを管理お よび調整しなくてもよい。従って、各データ制御プログラム32a〜32dは、 ネットワークノード12a〜12dのうちの異なる1つに存在するピアインカー ネーション(すなわち、インスタンス)であり得、ローカルハードディスクのよ うな、ローカルメモリ装置として共有メモリサブシステム34a〜34dのそれ ぞれを処理することができる。 1以上のデータ制御コントロールプログラム32a〜32dは、アドレシング 可能共有メモリ空間20内に含まれたデータ構造化ストア28をグラフィクカル に示す、グラフィカルユーザインタフェース42を提供することができる。グラ フィカルユーザインタフェース42は、ノード、例えば、ノード12aでユーザ がデータオブジェクトをグラフィクカルにデータ構造化ストア28に挿入するこ とを許容する。この最後に、データ制御プログラム32aは、データストリーム を共有メモリサブシステム34aに与える、1セットのコマンドを形成し、共有 メモリサブシステム34aはデータストリームを使用してオブジェクトをデータ 構造化ストア28内に格納する。同様に、他の共有メモリサブシステム34b〜 34dは、データ構造化ストア28に対してこの変更を表すそれぞれのノードに 情報を提供することができる。従って、簡単のためだけにノード12cに対して は図1に示されるように、(グラフィカルユーザインタフェース40を含む)ノ ードは、ノード12aのデータ制御プログラム32aによって影響されたデータ 構造化ストア28に対する変更を反映する。特に、ノード12cのグラフィカル ユーザインタフェース40は、オブジェクトがデータ構造化ストア28内に配置 されることをユーザに示すことができる。例えば、アドレシング可能共有メモリ 空間20は、データ構造化ストア部となるデータ構造化ストア28内に配置され 得るデータオブジェクト50a〜50cも含む。図示されるように、ノード12 aでのシステムユーザは、オブジェクト50aをデータストア28内のセット位 置に挿入されるように指示することができる。データ制御プログラム32aは、 共有メモリサブシステム34aを、オブジェクト50aをデータストア28内の 適切な位置に配置するように指示する。さらに、ノード12c上の共有メモリサ ブシステム34cは、データストア28内の変更を検出し、および、グラフィカ ルユーザインタフェース40内における変更を反映する。 いま図3を参照して、構造化ファイルシステム60は、全てのネットワークノ ードにとってコヒーレントの単一ファイルシステムのように見えるものが実際に アドレシング可能共有メモリ空間20に結合された全ネットワークノードにつな がっているときに、アドレシング可能共有メモリ空間20の特性を使用する、本 発明の特別の実施形態である。 図3のファイルシステム60は、様々な点において、公知の物理的ファイルシ ステムおよび分散ファイルシステムと異なる。ディスクブロック上へファイル組 織をマップする公知の物理ファイルシステムに対して、本発明によるファイルシ ステム60は、ディレクトリおよびファイル構造の分散アドレシング可能共有メ モリシステム20上へのマッピングを管理する。分散アドレシング可能共有メモ リシステム20は、ネットワーク上の1以上の持続性記憶装置(例えばハードデ ィスク)の少なくとも一部分にマップされるか、あるいは、割り当てられる、ア ドレシング可能空間の少なくとも一部分を有する。公知の分散ファイルシステム とは違って、本発明のファイルシステム60はピアノードを使用する。各ピアノ ードは、同じデータ制御プログラムのインカーネーションあるいはインスタンス を有する。また、公知のファイルシステムとは違って、概して本発明のファイル システム60は;ネットワークノードにおけるデータコヒーレンスを維持し;自 動的にデータを冗長および障害耐性のために複製する;自動的および動的にデー タをネットワークの使用およびトラフィックパターンを変更するためにアカウン トに移動する;および様々の他の利点および進歩を提供する。これらのいくつか が、1996年11月22に出願された同一譲受人の米国特許出願第08/75 4、481号に開示されおり、この特許を参考として援用する。 また、図3を参照して、ファイルシステム60はアドレシング可能共有メモリ 空間20内にある程度存在し、データ構造化ストア62、スーパールート64、 ファイルセット66〜74、ディレクトリエントリ80およびファイルあるいは 文書82を含む。2つのネットワークノード84および86は、ロジカルドライ ブ90および94を介してアドレシング可能共有メモリ空間20をアクセスする ことが(図1を参照して上述したように)示される。ノードを実行するアプリケ ーションプログラム92および96は、データ制御プログラム(図3には図示さ れないが、図1に32a〜32dとして図示)と相互作用し、ノードにおけるデ ータ制御プログラムに、ロジカルドライブ90および94をアクセスさせる。開 示される実施形態において、ロジカルドライブはファイルシステム60と関連す るインストール可能なファイルシステムドライバを介してファイルセットディレ クトリに「接続する」DOSデバイスである。 ファイルシステム60は、ネットワークノードの全てによって共有されるアド レシング可能共有メモリ空間20につき1つのグローバルファイルシステムを支 持する。このグローバルファイルシステムは、ファイルセット66〜74として 示される、1以上の独立したファイルの集合に組織化される。ファイルセットは 、伝統的なファイルシステム部分に論理的に等しいと考えられ得る。ファイルセ ットは、ルートディレクトリにルートされるディレクトリツリー構造として、階 層的に組織化されたファイルの集合である。ツリーにおけるリーフのないノード がディレクトリ80であり、ツリーにおけるリーフは通常のファイル82かある いは空のディレクトリである。ファイルセット内のサブディレクトリツリーは、 ファイルを複ディレクトリにリンクすることによって重複し得る。 ファイルシステム60をファイルセット66〜74に分けることの利点は、シ ステム60のユーザに対するより柔軟なファイルシステム管理を提供することで ある。ファイルシステム60は、非常に大きいサイズ(例えば、幾千ギガビット の記憶装置を有する幾百のノード)になるまで成長すると、ファイルが管理エン ティティのグループに組織化され、他の操作に影響を与えることなしに管理操作 が独立に個々のグループに適用され得ることが望まれる。 アドレシング可能共有メモリ空間20におけるファイルセットが共通の構造に おいて説明され、列挙されている。ルート64はアドレシング可能共有メモリ空 間20においてファイルセットを配置するための開始点を提供する。ルート64 はアドレシング可能共有メモリ空間20における静止した公知のメモリ位置に格 納され得、分散された共有メモリシステムプログラムインタフェースを介してア クセスされ得る。ノードが最初にファイルセットをアクセスするときに、ノード はルート64を探索し、ファイルセット、例えば、ファイルセットをアクセスす るために使用される共有メモリアドレスに関連した識別子を決定する。一旦ノー ドが識別子を決定すると、ノードはファイルセットのルートディレクトリをアク セスすることができる。ルートディレクトリから、ノードは完全なファイルディ レクトリツリーをトラバースして、所望のファイルを配置することができる。フ ァイルシステム60によって使用されるファイルセットは、「ファイルセット」 の見出しのもとに、下記に詳細に説明される。 図4を参照して、本発明によるファイルシステム60の開示される実施例にお いて、(図2のディレクトリ80のような)ディレクトリ126は、ディレクト リIノードあるいは識別子128において開始することによってアクセスされる 。ディレクトリIノードあるいは識別子128は、ディレクトリエントリストリ ーム識別子130を示すアドレスを含む。この識別子130は、ファイル1から ファイル3に対するディレクトリエントリを含むデータブロックに対するポイン タである。ファイル1に対するディレクトリエントリは多くのエントリを有し、 そのエントリの1つはファイル名を含む列(string)であり、他のエントリはI ノードおよびストリーム識別子132のアドレスである。ファイル1に対するス トリーム識別子は、ファイル1を構成するアドレシング可能共有メモリ空間20 における、種々の4キロバイトページを配置し検索するように使用される。他の ファイルも同じ方法で、アドレシング可能共有メモリ空間20から検索されおよ び構築される。ファイルシステム60によって使用されるディレクトリは、「デ ィレクトリ」の見出しのもとで詳細に説明される。 図5に開示されるファイルシステム60の実施態様において、ファイル98は 、データ100、102、104、106および108の1つ以上の共有ページ によって、アドレシング可能共有メモリ空間20において表現される。ファイル 98それぞれは、様々なファイル属性112を含む記述子110もしくはファイ ルIノード(Inode)を有する。ファイル記述子110は、データストリー ム記述子114を指すアドレスを含み、データストリームはそれ自身が、確認可 能な共有メモリ空間20において特定のページを指すアドレス116、118、 120、122および124の1つ以上を含む。開示された実施態様においては 、ページはアドレッシング可能共有メモリ空間20において原始的ユニットであ り、4キロバイトのデータまでを含んでいる。たとえ4キロバイト全てが必要で ないとしても、全てのページが使用される。これは、約2キロバイトのデータの みを含むページ108によって描かれる。ファイルシステム60によって使用さ れるファイルは、以下の見出し「ファイル」においてより詳細に説明される。 ファイルセット ファイルセットは、ファイルシステム60のための基本ユニットである。ファ イルセットそれぞれは、255文字までのネームで確認される。ファイルシステ ム60は以下の活動タイプを介して管理者がファイルセットを管理することを可 能にするファイルセットレベル動作のセットを読み出す。ファイルセット作成 この動作は新しいファイルを作成する。ファイルセットは最初1つのファイル で作成され、空のルートディレクトリである。デフォルトファイルはアドレッシ ング可能共有メモリ空間20の初期化において自動的に作成される。ファイルセット消去 この動作はファイルセットを消去する。ファイルセットの全てのファイルは消 去され、ファイルセットにおいてファイルに割り当てられる全ての共有メモリ空 間は破棄され、補助物理的記憶装置は新しい記憶装置と引き替える。ファイルシ ステム60は、ファイルセットにおけるファイルデータストリームについての開 示の対処法がなくなって初めて、ファイルセットの消去のみを認め得る。ファイ ルセットの消去を用意するために、ファイルセットは、オフラインにすることに よって「シャットダウン」されなければならない。ファイルセット列挙 この動作はアドレッシング可能共有メモリ空間20において特定のまたは全て のファイルセットを列挙する。ファイルセット制御 この動作はファイルセット属性のセッティングのようなファイルセットレベル 制御ルーチンを実行する。マウントイクスポート制御 ディレクトリは局部デバイスに接続すなわち「マウントされ」、Window sNTレジストリまたはそのような情報のための他のいくつかの同様の中央記憶 領域に格納されたパラメータを使用する。第1のスタートアップのとき、データ 制御プログラム60は中央記憶領域にアクセスし、どのファイルセットがマウン トされるべきであるかを決定する。データ制御プログラムは中央記憶装置におけ るエントリにより認識されたファイルセットそれぞれを表すファイルオブジェク トを作成する。いくつかの実施態様では、適切なAPIの呼び出しを行うことに よりデータ制御プログラム60がファイルセットを動的にマウントしアンマウン トを可能にするAPIが提供され得る。 ファイルシステム60のユーザは共有メモリ「論理容量」に気付かないが、容 量(もしくは伝統的な物理ファイルシステムの検出における区分)としてファイ ルセットそれぞれをある程度見る。Win32GetVolumeInform ationはファイルセット上で(より詳細には、ファイルセットが接続された 論理デバイス上で)情報を得るために使用される。全てのファイルセットはアド レッシング可能共有メモリ空間20における格納の同じ格納場所を共有するため 、ファイルセットそれぞれを用いるユーザにリターンする全容量の大きさは、ア ドレッシング可能共有メモリ空間20における現総記憶容量である。同じアプロ ーチが総空き空間情報に対して受け入れられ、アドレッシング可能共有メモリ空 間20の総合値は、ファイルセットそれぞれへリターンする。 ディレクトリ ディレクトリエントリ走査は、ユーザアプリケーションにより最も頻繁に活動 する動作の一つである。ディレクトリエントリ走査はまた、パフォーマンスの点 で最も明白な活動であり得る。結果として、多くの配慮はディレクトリ走査が効 率的になるように向けられ、WindowsNTFilesSystem(NT FS)は、ファイルIノードからの情報を読むことから外れることなくディレク トリエントリを走査および読むことによって満足させられ得るリードディレクト リ動作のようなディレクトリエントリにおいて、十分なファイルIノード情報を 複製する。このスキームの問題点は、ファイルタイムスタンプおよびファイルサ イズなどの二重に格納されたファイルメタデータが非常に頻繁に更新され得、そ れがメタデータを更に高価に更新するということである。しかし、このオーバー ヘッドは、ディレクトリ走査動作において獲得されるパフォーマンスに抗して好 ましく思われる。 ファイルシステム60は、ディレクトリエントリにおけるファイルIノード情 報を複製することによって効率的なディレクトリ走査を提供するのと同じ原理を 取り入れる。ディレクトリエントリそれぞれは、Win32照会ファイル情報リ クエストを満足させるのに十分な情報を含んでいる。ファイルIノードは分割さ れたページ上でファイルストリーム記述子を用いて格納される。Iノードはディ レクトリエントリにおいてポインタを介して配置される。 ファイルシステムのディレクトリエントリはディレクトリファイルのディレク トリエントリデータストリームに格納される。最大空間利用化のために、ディレ クトリエントリそれぞれは、全てのエントリを保持し得るページにおいて第1の 利用可能な空き空間上に割り当てられる。エントリの長さは、ファイルの1次ネ ームの長さに依存して変化する。以下の情報はディレクトリエントリの部分であ り、作成時間、変更時間、最終書き込み時間、最終アクセス時間、ストリーム記 述子へのポインタ、親ディレクトリIノードへのポインタ、MS−DOS型ファ イル属性、およびMS−DOS形式ファイルネーム(8.3ネーミングコンベン ション)である。ファイルネームの長さの平均化のために、ページは約30エン トリまでを含む。ディレクトリエントリにおける全てのファイル情報もまた、フ ァイル1次ネームおよびMS−DOSファイルネームを除いてファイルIノード 内に含まれる。ファイル1次ネームおよび関連するショートネームは、ディレク トリエントリのみに格納される。これは、Iノードサイズ定型をつくる。 ファイル情報が修正(ファイルネームを除く)されたとき、Iノードは、更新 処理のコンテクストにおいて更新され、それにより常にほとんど最新の情報を含 む。関連ディレクトリエントリ変更はだらだらと流され、二重更新のコストを低 減する。これは、ディレクトリエントリ更新と対応することなしにIノード更新 のが流されるか回復され得ることを意味する。ディレクトリエントリがIノード と同調から外れるならば(Iノード変更がディレクトリ変更なしに成功的に流さ れたとき)、エントリは、Iノードが更新された次の時間に更新される。ディレ クトリ更新の同調を促進させるために、ディレクトリエントリ(Iノード)は多 重ページを補い得ない。図4に、ディレクトリエントリおよび関連するIノード の構成が描かれている。 ファイル ファイルシステム60のファイルは、ファイルシステムメタデータおよびデー タのストリームを含み、ファイルを記述する。ファイルは、オブジェクトがIノ ードを呼び出すことによりファイルシステム60に記述される。Iノードは、フ ァイルメタデータを格納するデータ構造である。それは、ファイルシステム60 にファイルを表示する。 データストリームは、バイトの論理的連続ストリームである。それは、アプリ ケーションによって格納されるデータあるいはファイルシステム60によって格 納される内部情報であり得る。データストリームは、記憶装置のためにアドレッ シング可能共有メモリ空間20から割り当てられたページへマップされる。ファ イルシステム60は、4キロバイトセグメントのシーケンスへデータストリーム をセグメントし、セグメントそれぞれはページと対応している。ファイルシステ ム60は、データストリームにつき二つのサイズ情報を保持する。すなわち、デ ータストリーム内の複数のバイト、および複数のページ内の割り当てサイズであ る。情報をマッピングするセグメントページへのバイト−ストリームは、ファイ ルメタデータの部分であり、データストリーム記述子を呼び出す構造内に格納さ れる。図5を参照のこと。 データへのユーザの要求は、バイト位置ゼロのデータストリームの開始からオ フセットされることにより測定された開始バイトの位置およびバイトの範囲とい う点で特定される。ファイルシステム60は、開始バイトを含むページおよびペ ージの始まりからのイントラページオフセットへオフセットをマッピングする。 ファイルシステム60の全てのファイルは、少なくとも2つのデータストリー ム、つまりデフォルトデータストリームおよびアクセス制御リスト(ACL)ス トリームを有する。ファイルそれぞれは、オプションとして他のデータストリー ムを有し得る。ACLストリームは、ファイル上でセキュリティアクセス制御リ ストに格納するために使用される。データストリームそれぞれは、個々に名付け られ、ユーザは特定のデータストリームへのアクセスを作成あるいは公開し得る 。デフォルトデータストリームのネームは、ファイルの1次ネームと仮定される 。データストリームにアクセスするために、ネームによる所望のデータストリー ムへのファイルハンドルをはじめに開示しなければならない。もしファイルネー ムが使われているならば、デフォルトデータストリームのハンドルが開示される 。この開示されたファイルハンドルは、データストリーム上で動作する全てのフ ァイルシステムサービスにおいてデータストリームを示す。 ファイルシステム60は、ファイルレベルでの動作のためにサービスのセット を書き出す。サービスへの入力は、ファイルオブジェクトハンドル(Iノード) またはデータストリームオブジェクトハンドルおよび動作特定パラメータであり 、バイト位置においてデータストリームの所望の部分を含む。 開示されたファイルは、データストリームオブジェクト(あるいはまさにファ イルオブジェクト)により示される。ユーザのアクセスファイルは、これらのフ ァイルオブジェクトを使用し、ファイルハンドルを介してユーザを確認する。フ ァイルハンドルは、開示されたファイルストリームのインスタンスを示す32ビ ットエントリである。例えば、WindowsNTは、ファイルオブジェクトを 作成し、ファイル作成またはファイル開示のためのユーザの要求への応答におい てユーザへのファイルハンドルをリターンする。ファイルシステム60はファイ ル制御ブロックへのポインタを初期化する。多重ファイルオブジェクトは、開示 されたコンテクストそれぞれのための分離ストリームオブジェクトを保持するフ ァィル制御ブロックそれぞれおよび同一のファイル制御ブロックをポインティン グする。外見的には、ファイルハンドルはユーザにとって曖昧になる。多重開示 は、同一のファイルに反して供給され得る。ユーザがファイルを閉じると、ファ イルオブジェクトおよび関連するファイルハンドルは消去される。 ファイルシステム60は、徐々に大きくなるセグメントシーケンス内にファイ ルストリームをマッピングし、ここで各セグメントは一つ以上のページに対応す る。ファイルシステム60は、データストリーム用の隣接しているページを予約 しようとするが、必要とされる基準(needed basis)、たいていはデータストリ ーム割り当てサイズを越えて書き込むことにより要求されたファイル拡張の結果 として真の補助記憶装置を割り当てるだけである。ファイル拡張要求を受け取る と、ファイルシステム60は、拡張サイズをバイト数で4キロバイトの倍数にま で切り上げ、それを整数のページにして、実際の割り当てに対するページを要求 する。ファイルシステムによって割り当てられた4キロバイト数のページは、作 成されたファイル拡張要求数に依存する。ファイルシステム60は、第1の拡張 要求に対して1つの4キロバイトページを、第2の要求に対して2つの4キロバ イトページを、第3の拡張要求に対して4つの4キロバイトページを割り当てる 。新たに割り当てられたページは、ゼロで満たされている。隣接しているページ を予約する事によって、ファイルシステム60は、ページマッピングのバイトオ フセット上のブックキーピング情報の量を削減する。ファイルシステム60は、 ファイルに対する要求されたメモリ空間よりも大きく(ある時はかなり大きい)、 ページ毎に補助記憶装置を割り当てることによって記憶装置を実現する。 4キロバイトに割り当てられたセグメントは、使われていない記憶装置空間を 削減するように選択され、使われているファイル拡張に対して合理的な割り当て サイズを依然として提供する。割り当ては高価な動作(分散動作を最も含みそう である)であるので、より小さい割り当てサイズは効果はない。より大きな割り 当てサイズは、非効率的な空間利用または付加的な複雑さを引き起こし、使われ ていない空間を管理する事となる。4キロバイトのセグメントもまた、ページに 対してたやすくマッピング、すなわちページマッピングに対するデータストリー ムセグメントを簡略化する。類似物は大きなディスクに対する4キロバイトのク ラスタ(セグメント)サイズのNTFSの割り当て方針を用いて作成され、割り 当てをスピードアップし、且つ断片化を削減するが、実際のディスク上割り当て セグメントサイズがローカルディスクサイズおよび物理ファイルシステムに大き く依存することから、そのような類似物は完全に正当なものではない。 各ディスクのパーティションの割り当てを制御し、それによって割り当てのた めに利用可能な自由なボリューム空間を素早く決定できるNTFSについて同様 に、ファイルシステム60は合計の利用可能な空間情報を要求し、且つこの情報 を用いて割り当て処理を進めるかどうかを素早く決定する。合計の利用可能な空 間が要求された割り当てサイズに満たない場合、要求は即座に拒否される。また あるいは、ファイルシステム60は、ページの割り当てを進め、要求を満たす。 実際の合計の利用可能な空間は常に変化していることから、ファイルシステム6 0が割り当てを進めることができるという事実は、割り当てが成功するというこ とを保証するものではない。 ファイルシステム60は、下にある分散アドレシング可能な共有メモリシステ ム20のページレベル複製能力を利用する。そのメモリシステムは上述で参考と して援用されている米国特許出願において開示されている。ページレベル複製は 、システムがファイル複製を提供することを可能にする。複製されたファイルの データストリームは、自分自身で複製できるページによって元に戻される。この ようにして、データストリームは、ファイルシステム60の介入なしに自動的に 複製される。多数の再生物によって消費される余分な空間は、ファイル(データ ストリーム)サイズに反映されない。ストリーム割り当てサイズは、一つの再生 物に対して要求されたページにおいて合計の割り当てサイズを依然として報告す る。しかし、ページバッキング(backing)のテンポラリファイルは、複製され ない。 ファイルアクセスおよびリソース共有−ロッキング 共有メモリは、ファイルシステム60のソフトウェアを動作させるピアノード (peer node)内のリソース共有に対する分散メカニズムを提供する。各ネット ワークノード上でのファイルシステム60の各インスタンスから、共有メモリリ ソース(すなわちページ)が他のローカルまたは遠隔スレッドと共有されている ように見られる。ファイルシステム60は、高レベルなファイルシステムロック を実行するための方法を必要とし、一定のリソース共有を提供する。任意の一致 した制御構造は、ロックオブジェクトまたはセマフォのようなロックを実行する ために使用され得る。データベースアプリケーションにおいて、ロッキングはま た、データベースインデックスまたはキーに関連付けられた一致した制御構造を 実行することによって達成され得る。ファイルシステムアプリケーションにおい て、ファイルまたはディレクトリに対するアクセスは制御され得る。ファイルシ ステムの別の例では、ロックはバイトレンジロッキングである。バイトレンジロ ッキングは、ファイルに対する共有アクセスを調整する能力をユーザに提供する 。バイトレンジロックは、ファイルのバイト範囲にあるロックセットである。調 整されたファイルに対する共有アクセスは、所望のバイト範囲でロックを使うこ とによって成し遂げられ得る。一般的に、高レベルなファイルシステムロックは 、以下の様式で作用する。(a)ファイルシステムリソースが各ファイルシステ ム60のインスタンスによって共有されるようになり、且つリソースに対するア クセスが、共有リソースを調整するための高レベルなロックを表すロックオブジ ェクトデータ構造を使用するロッキングプロトコルによって調整される。ロッキ ングプロトコルはロックの現在の状態を表すデータ構造の値である。(b)リソ ースにアクセスするための各ノードでのインスタンスは、ロックデータ構造の状 態(または値)を見ることが出来なければならず、状態(または値)が「ビジー 」となるように「フリー」を変更するが、「ビジー」であるが「フリー」になる まで待たねばならないならば、「フリー」と「ビジー」との中間状態(すなわち 2つより多いロック状態)であり得る。しかし任意のイベントにおいて、このバ イトレンジロッキングインスタンスでは、ロックはファイルシステム60のいく つかのスレッドによって共有/排他的にロックされた特定のバイトレンジの記述 である。すでにロックされているバイトレンジにある、または重ね合わせるコン フリクトしている新しいバイトレンジのロック要求は拒否され、または要求者は (要求がどのようにして作成されたかに基づいて)ブロックし得る。(c)各ノ ードインスタンスによるロックデータ構造へのアクセスまたはロックデータ構造 の変更は、次に高レベルなリソース共有を調整するために使用され得るように直 列化される必要がある。 上述で参考として援用されている米国特許出願シリアル番号第08/754,481号で 説明される共有メモリエンジンのロッキング特徴および能力は、ファイルシステ ム60がページに対するアクセスを調整することを可能にする。エンジンはまた 、リソースに対するアクセスを調整するために使用され得るが、バイトレンジロ ッキングのような複雑で高レベルなリソースロッキングの場合では、エンジンの ロッキング特徴および能力を使用してロックを直接提供することは、以下の理由 でコストが掛かり過ぎる。(a)各バイトレンジロックはロックを表示するペー ジを要求し、バイトレンジロック数が多数であり得るので、ページ消費に関する コストは大変高くなり得る。(b)エンジンロックは2つのロック状態(すなわ ち共有および排他)を提供するのみであり、高レベルなファイルシステムはさら なるロック状態を要求し得る。 本発明のファイルシステム60は、直列化を提供するための基礎(primitive )としてエンジンロッキングを使用するファイルシステムロッキングを実行し、 ロックデータ構造にアクセスして、ロックデータ構造を更新する。ロック構造を 読み出すために、ファイルシステム60は、ページが読み出される前に、エンジ ンロッキング特徴および能力を使用するデータ構造のページ上で共有ロックを用 いて、データ構造が変更されるのを防ぐ。ロック構造を変更するために、排他的 ロックがページ上で設定される。ページロックは、ロック構造値が読み出される かまたは変更されるとすぐに、用いられて放棄される。 ページロッキングおよびページの非有効な通知によって提供される直列化をも って、ファイルシステム60は、高レベルなロックを以下の方法で実行する。( a)ファイルシステムロック(FSロック)を用いるために、ファイルシステム 60は、FSロックページ上で共有ロックを設定し、且つページを読み出してロ ック構造を調べる。(b)ロック構造が、リソースが互換性のあるロックモード でロックされていないまたはロックされている場合、ファイルシステム60は、 ページを排他的にロックすることを要求し、1つのファイルシステム60のノー ドインスタンスだけがロックデータ構造を変更し得ることを保証する。要求が成 功する場合、ファイルシステム60の書き込みはロックページをマッピングし、 ロックを設定するためにロック構造を変更し、ページをロックせず、ノードにア クセスするページを設定する。(c)リソースが互換性のないロックモードでロ ックされる場合、ファイルシステム60は、ページをロックしないが、マッピン グされたページの読み出しを保持する。次に自分自身(現在のスレッド)を一列 に並べ、ロック値が変化したことを通知するシステムイベントを待つ。ロック値 が変化すると、ファイルシステム60のスレッドは、通知されたものを得て、上 記のステップ(a)を繰り返す。ファイルシステム60は、信号基礎を使用して 通知を実行する。ロックを待つファイルシステム60のスレッドは、システムイ ベントでブロックされる。ロックを含むページが変化しないと、信号は各ブロッ クされたファイルシステム60のスレッドに送られる。その後、各ブロックされ たファイルシステム60のスレッドが呼び起こされ、ステップ(a)を繰り返す 。FSロックは、揮発性ページに記憶される。 ファイルアクセスおよびリソース共有−バイトレンジロッキング バイトレンジロッキングは、Win32LockFile()およびLock FileEx()APIを介してユーザにエキスポートされるファイルシステム ロッキングサービスである。これは、ファイルデータストリームの互いに異なる 重複しない領域が複数のユーザによって同時にアクセスされることを可能にする 。データストリームにアクセスするためには、ユーザは、ファイルの領域(バイ トレンジ)をロックすることにより、領域への排他的または共有読み出しアクセ スを獲得する。 ファイルシステム60は、ファイルの個々のデータストリームに対するバイト レンジロッキングをサポートする。以下のWin32スタイルバイトレンジロッ キング挙動がサポートされる。(a)ファイルの特定の領域に対する共有又は排 他的アクセスを獲得するためにファイルの領域をロックすることが用いられ、フ ァイルシステム60はファイルハンドル(file handle)によりバイ トレンジロックを追跡する。従って、ファイルハンドルは、ロックのオーナを独 自に識別する方法を提供する。(b)現在のファイルの終端位置を越えて延びる 領域をロックすることは、エラーではない。(c)排他的アクセスのためにファ イルの一部分をロックすることは、他のすべてのプロセスがファイルの特定され た領域に対して読み出しアクセスすることと書き込みアクセスすることとの両方 を否定する。共有アクセスのためにファイルの一部分をロックすることは、他の すべてのプロセスがファイルの特定された領域に対して書き込みアクセスするこ とを否定するが、他のプロセスがロックされた領域を読み出すことを許可する。 このことは、ファイルシステム60が、ロック要求だけでなく全ての読み出しま たは書き込みアクセスに関しても、データストリームにセットされたバイトレン ジロックをチェックしなければならないことを意味する。(d)すでに共有され た状態でロックされているか又は他のスレッドにより排他的にロックされている かのいずれかである領域に対して排他的ロックが要求された場合、要求は、特定 された呼び出しオプションに依存してブロックするか失敗する。(e)ロックは 、ファイルの、現存するロック領域と重複し得ない。 各バイトレンジロックに関して、ファイルシステム60はロックを表すバイト レンジロック記録を作成する。記録は、以下の情報を含む。(a)バイトレンジ 、(b)ロックモード(共有または排他的)、(c)プロセス識別、および(d) Win32ロックキー値。 ファイルシステム60は、ファイルバイトレンジを、制御されたアクセスを有 するリソースであるとみなす。各バイトレンジロック記録に関して、ファイルシ ステム60は、ファイルシステムロック(上述したような)を作成することによ り、バイトレンジ「リソース」へのアクセスを調整する。互換性バイトレンジロ ック要求(共有ロック)は、バイトレンジ記録に関連するファイルシステムロッ ク上で読み出しロックをとる(take read lock)ことであると解 釈される。排他的バイトレンジロック要求は、ファイルシステムロック上で書き 込みロックをとる(take write lock)ことにマッピングされる 。 上述したファイルシステムロッキング機構を用いた場合、所望のバイトレンジ を含むページ上で待機中のロック要求は、ページコンテンツが変更されると通知 される。 本発明の特定の実施形態、すなわちファイルシステム60をある程度詳細に述 べてきたが、ファイルシステム60の簡単な要旨を以下の3段落で述べる。 ファイルシステム60は、アドレシング可能な共有メモリ空間20を、多くの ネットワークノード(例えば12a〜12d)により同時にアクセスされる共有 平坦(flat)識別子空間であるとみなす。ファイルシステム60は、ファイ ルデータと、ページ内でバイトストリームとして論理的に表されるメタデータと をマッピングする。ページは、アドレシング可能な共有メモリ空間20の単位で ある。ファイルシステム60の観点から考えると、データストリームは、ページ の秩序だった収集体内に記憶される。ファイルシステム60は、参考のため援用 される上記米国特許出願に記載されているエンジンを呼び出すことにより、その メタデータとユーザファイルデータとを記憶するためにアドレシング可能な共有 メモリ空間20からページ内の空間を割り当てる。アドレシング可能な共有メモ リ空間20のうち、ファイルシステム60により受け取られたセクションは、ア ドレシング可能な共有メモリ空間20内の、ファイルシステム60のインスタン スによりアクセスされ得るが、他のタイプのネットワークノードによってはアク セスされ得ない。 ファイルシステム60の各インスタンス(図1のデータ制御プログラム32a 〜34dを含む)は、ファイルシステム60を実行し従ってアドレシング可能な 共有メモリ空間20を介してファイルデータを共有する、他のすべてのネットワ ークノードの均等物である。ファイルシステム60は、ローカルユーザに対して は、単一ノードの一貫性の特性を示し、共有を行うファイルは同一のノード上の 他のプロセスと共有しているかのように挙動する。ファイルシステム60のユー ザの観点から考えると、以下のローカルな挙動が観察される。(a)ファイルデ ータ更新は、ネットワーク全体において一貫している。すなわちファイルページ が変更されると、他のユーザによるオープンハンドル(open handle )を用いたファイルへの修正が即座に見られる。共有書き込みファイルアクセス に関しては、共有書き込みアクセスが調整されている場合、その調整は、通常 バイトレンジロッキングにより、完全にユーザに委ねられる。(b)フラッシュ は、ネットワーク内のグローバルな動作である。すなわち、有効なダーティ(d irty)ファイルページは、ファイルを開いているノードからフラッシュ(f lush)され得る。フラッシュがうまく完了しない場合、得られるファイルデ ータ状態は、フラッシュ前の古い状熊または部分的に書き込まれた状態である。 ファイルシステム60のインスタンスは、共有アドレス空間を、データ記憶装置 および情報伝送(ロッキングおよび情報共有)機構の両方として利用する。 以下は、ファイルシステム60が、参考のため援用される上記米国特許出願に 記載されている基本的エンジンに発行し得るタイプの要求のリストである。(a )アドレシング可能な共有メモリ空間20のひとまとまり(chunk)を保存 する。−−ファイルシステム60は、連続したレンジのアドレスが保存されるこ とを要求する。共有メモリ空間の保存は、メモリ空間の具現化(割り当て)を引 き起こさず、単にアドレスによって表される空間を保存する。(b)アドレシン グ可能な共有メモリ空間20内のひとまとまりのアドレスの保存をキャンセルす る。−−ファイルシステム60は、もはや用いられていないレンジのアドレスを 解放する。アドレスは一旦破棄されると再使用されないため、保存キャンセルの コールはない。(c)アドレシング可能な共有メモリ空間20のひとまとまりを 具現化する。−−以前に保存されているアドレスに共有メモリ空間を割り当てる 。割り当てられた空間はページとして戻されるが、戻されるのは、保存された共 有メモリ空間がファイルシステム60によってアクセスされ得るように割り当て られた後である。割り当てられたページはアクセス可能であるが、これらにアク セスするためには、ファイルシステム60は、正式なアクセス要求を作成し、割 り当てられているページが持続性であるか揮発性であるかを特定しなければなら ない。さらにファイルシステム60は、必要に応じて、ページに必要なレプリカ の数を特定し得る。(d)ページを再度割り当てる。−−多くのページがファイ ルシステム60によって解放される。ページによって表されるリソースはリサイ クルされ得る。(e)あるレンジのページにアクセスする。−−ファイルシステ ム60はページに対する読み出し又は書き込みアクセスを要求する。このことに よりページがローカルノードメモリに移動する。(f)あるレンジのページに 対する参照を取り除く。−−ファイルシステム60は、もはやページにアクセス する必要がないことを示す。(g)ページをロックまたはアンロックする。−− ファイルシステム60は、ページに対するロックおよびアンロックを用いること により、読み出し一書き込み更新をページに同期し、「共有、排他的」というロ ックのタイプを表す符号(rock semantic)が用いられる。(h) ダーティページをフラッシュする。−−ファイルシステム60は、ダーティペー ジを持続性記憶装置にフラッシュすることを要求する。フラッシュは典型的には 、ファイルが閉じられたとき又はファイルシステムのシャットダウン中にファイ ルシステムのコーラー(caller)によって明示的に要求された場合に実行 される。(i)ページおよびサブページに関する属性を設定する。−−ファイル システム60は、ページの属性を用いることにより、所望のページ管理挙動を特 定する。ファイルシステムによって設定される属性のいくつかは、ページにとっ ての最適コヒーレンシー(coherency)プロトコル、いかにしてページ が複製されるべきか(コアコピーの数)、ページがRAMキャッシュにおいてキャ ッシュされるべきか否か、ページ上の16バイトファイルシステム属性の設定を 含む。(j)ページの属性を読み出す(獲得する)、(k)super_root の位置を獲得する、(l)アドレシング可能な共有メモリ空間20の総記憶装置 空間(単位:バイト)および総フリー記憶装置空間(単位:バイト)を獲得する 。(m)トランザクションの開始、終了、コミット(commit)、中断、ログ 記録の獲得などの、トランザクションロギング(logging)動作。 アドレシング可能な共有メモリ空間 本発明およびその様々な実施形態をある程度詳細に述べてきたが、上記で参考 のため援用された、1996年11月22日に出願された、本出願と同一の所有 者を有する米国特許出願シリアル番号第08/754,481号に記載のアドレ シング可能な共有メモリ空間に関して、より詳細な記載を提供する。以下の情報 はすべて上記特許出願に含まれる。 参考のため援用された米国特許出願に記載されているアドレス指定可能な共有 メモリシステムは、ネットワーク上の各コンピュータにより共有され得る仮想メ モリ空間を作成および管理し得、且つネットワークに接続された各メモリデバイ スの記憶装置空間をカバーし得る「エンジン」である。従って、ネットワーク上 に記憶されたすべてのデータは、仮想メモリ空間内に記憶され得、データの実際 の物理的位置が、ネットワークに接続されたいずれかのメモリデバイス内にあり 得る。 より詳細には、エンジンまたはシステムは、仮想メモリ空間の、例えば4キロ バイトの部分を表すグローバルなアドレス信号を作成または受信し得る。グロー バルなアドレス信号は、基本コンピュータハードウェアの物理的空間および識別 子空間から分離され得る、すなわち、無関係にされ得る。それにより、システム に接続されている各揮発性および持続性メモリデバイスをカバーするに十分大き いメモリ空間に対するサポートが提供される。例えば、本発明のシステムは、3 2ビットコンピュータ上で動作し得るが、128ビット幅であり得るグローバル アドレス信号を採用し得る。従って、仮想メモリ空間は2128バイトをカバーし 、これは、基本コンピュータハードウェアによってサポートされる232アドレス 空間よりもはるかに大きい。このようなアドレス空間は、全てのRAM、ディス ク、テープ記憶装置を含む、ネットワーク上のデータ記憶装置の各バイトに対し て別々のアドレスを提供するに十分大きいことがあり得る。 このような大きい仮想メモリ空間の場合、典型的には小さい部分のみが、いつ でもデータを記憶している。従って、システムは、仮想メモリ空間のうち、使用 中の部分を迫跡するディレクトリマネジャーを含む。システムは、仮想メモリ空 間のうちの使用中の各部分に対して、RAMメモリまたはハードドライブなどの 物理的メモリデバイスにこのような部分の各々をマッピングすることにより、物 理的メモリ記憶装置を提供する。必要に応じて、マッピングは、データ移動、フ ォールトトレラント動作、および負荷バランシング(load balanci ng)を容易にする遠回りのレベルを含む。 各コンピュータが、仮想メモリ空間のいずれの部分が使用中であるかをモニタ し追跡することを可能にすることによって、各コンピュータはメモリ空間を共有 し得る。このことは、ネットワーク化されたコンピュータが単一のメモリを有す るように見えることを可能にし、そのため、異なるコンピュータ上で実行されて いるアプリケーションプログラムが、同一のマシン上で実行されているアプリケ ーション間の通信に現在用いられている技術を用いて、通信することを可能にす る。 1つの局面において、本願で参考のために援用する上記の米国特許出願の発明 は、アドレス指定可能な共有メモリ空間を有するコンピュータシステムを含むこ とが理解され得る。システムは、コンピュータ読み出しが可能な情報を示すデー タ信号を搬送するデータネットワーク、データネットワークに結合し、持続性デ ータ記憶装置を提供する持続性メモリ装置、および各々がデータネットワークに 結合するインターフェースを有する、データネットワークにアクセスして、デー タ信号を交換する複数のコンピュータを有し得る。さらに、コンピュータのそれ ぞれは、アドレス指定可能なメモリ空間の一部を持続性記憶装置の一部にマッピ ングし、データ信号をアドレス指定可能な持続性記憶装置を提供する共有メモリ サブシステムを有し得る。 ネットワークのメモリ装置にわたって記憶装置を分散するシステムでは、持続 性メモリ装置は、各々が複数のコンピュータのそれぞれ1つに結合する複数のロ ーカル持続性メモリ装置を有することが理解される。これと同じ目的のために、 システムはまた、複数のローカル持続性メモリ装置にわたってアドレス指定可能 なメモリ空間の部分をマッピングするディストリビュータ、およびアドレス指定 可能なメモリ空間のマップされた部分を追跡し、マッピングされたアドレス指定 可能なメモリ空間の部分を記憶するローカル持続性メモリ装置を示す情報を提供 するディスクディレクトリマネージャを有し得る。 システムはまた、アドレス指定可能なメモリ空間の最近アクセスされた部分に 関連したデータ信号をキャッシュ記憶するキャッシュメモリとして、ローカル持 続性メモリ装置の1つを作動するキャシュシステムを有し得る。さらに、システ ムは、アドレス指定可能なメモリ空間の部分を、複数のコンピュータのローカル 持続性メモリ装置間で選択的に移動させる移動制御器を有し得る。移動制御器は 、データアクセスパターン、リソース要求、または発明の実施に適した他の任意 の基準またはヒューリスティックを決定およびこれらに応答し得る。従って、移 動 制御器は、ネットワーク上の負荷を平衡にし、データが通常アクセスされるノー ドにデータを移動させ得る。キャッシュ制御器は、ソフトウェアで管理されるR AMおよびディスクキャッシュを提供するためのホストコンピュータ上で走るソ フトウェアプログラムであり得る。RAMは、SRAM、DRAM、または他の 任意の揮発性メモリを含む任意の揮発性メモリであり得る。ディスクは、任意の ディスク、RAID、テープ、または持続的にデータを記憶する他の装置を含む 任意の持続性メモリであり得る。 システムはまた、第1のコンピュータのローカル持続性メモリ装置内に維持さ れるアドレス指定可能なメモリ空間の一部のコピーおよび選択された数のコピを 生成し、そのコピーを第2のコンピュータのローカル持続性メモリ装置内に記憶 するためのコヒーレント複製制御器を有し得る。コヒーレント複製制御器は、コ ピーのコヒーレンシーを維持し、コヒーレントデータ複製を提供することが可能 である。 システムはまた、揮発性メモリおよび持続性メモリ内に記憶されるデータの集 積制御を提供することが理解され得る。このようなシステムでは、揮発性メモリ 装置は、データ信号を揮発性に記憶し、共有メモリサブシステムは、アドレス指 定可能なメモリ空間の一部を揮発性記憶装置の一部にマッピングするための要素 、典型的にはソフトウェアモジュールを有する。これらのシステムでは、揮発性 メモリ装置は、複数のローカル揮発性メモリ装置で構成され得、これらの装置の それぞれは、複数のコンピュータのそれぞれ1つに結合する。持続性メモリ装置 は、複数のローカル持続性メモリ装置で構成され得、これらの装置のそれぞれは 、複数のコンピュータのそれぞれ1つに結合する。 これらのシステムでは、ディレクトリマネージャは、アドレス指定可能なメモ リ空間のマッピングされた部分を追跡することができ、2つのサブ構成要素、即 ち、ローカル持続性メモリ装置にマッピングされたアドレス指定可能なメモリ空 間の部分を追跡するディスクディレクトリマネージャおよびローカル揮発性メモ リ装置にマッピングされるアドレス指定可能なメモリ空間の部分を追跡するRA Mディレクトリマネージャを有し得る。必要に応じて、RAMキャッシュシステ ムは、ローカル揮発性メモリ装置の1つを、アドレス指定可能なメモリ空間の最 近アクセスされた部分に関連したデータ信号をキャッシュ記憶するキャッシュメ モリとして作動し得る。 システムは、アドレス指定可能なメモリ空間の一部をローカル揮発性メモリ装 置の1つとローカル持続性メモリ装置の1つとの間で再マッピングするためのペ ージング要素、即ち、複数のコンピュータのそれぞれにおいて利用できる記憶装 置を示すリソース利用可能信号を決定するためのポリシー制御器と、リソース利 用可能信号に応答して、第1のコンピュータのメモリ装置から第2のコンピュー タのメモリ装置にアドレス指定可能なメモリ空間の部分を再マッピングするペー ジング要素と、アドレス指定可能なメモリ空間の部分を複数のコンピュータのロ ーカル揮発性メモリ装置間で移動させるための移動制御器とを含むさらなる要素 を有し得る。 必要に応じて、システムは、複数のコンピュータを、各グループが複数のコン ピュータのうちの少なくとも1つを有する1セットの階層グループに組織化する ための階層マネージャを有し得る。各グループは、アドレス指定可能なメモリ空 間の部分を階層グループの関数として移動させるためのグループメモリマネージ ャを有し得る。 システムはアドレス指定可能なメモリ空間の一部のコヒーレントコピーを生成 するためのコヒーレント複製制御器を含むことによって、メモリ空間のコピーさ れた部分間のコヒーレンシーを維持し得る。 システムはグローバルアドレス信号を生成または受信し得る。従って、システ ムは、アドレス指定可能なメモリ空間の一部を示すグローバルアドレス信号を生 成するためのアドレス生成器を有し得る。アドレス生成器は、グローバルアドレ ス信号を持続性メモリ装置に関連した記憶容量の関数として生成し、持続性メモ リ装置の記憶容量を論理的にアドレス指定することが可能なグローバルアドレス 信号を提供するためのスパンユニットを有し得る。 分散システムでは、ディレクトリマネージャは、分散メモリ空間内に、アドレ ス指定可能な空間の一部の記憶装置位置を示すディレクトリ信号を記憶するため の分散ディレクトリマネージャであり得る。分散ディレクトリマネージャは、ア ドレス指定可能なメモリ空間の一部を割り当て、ディレクトリ信号の一部を示す エントリ信号を内部に記憶するためのディレクトリページ生成器を有し得る。デ ィレクトリページ生成器は、必要に応じて、アドレス指定可能なメモリ空間の一 部を示す範囲信号を生成し、範囲信号に応答するエントリ信号を生成し、アドレ ス指定可能なメモリ空間の一部に対応するディレクトリ信号の一部を示すエント リ信号を提供するための範囲生成器を有する。さらに、分散ディレクトリマネー ジャは、ディレクトリページを連結し、連結されたディレクトリページの階層デ ータ構造を形成するための連結システム、ならびにデイレクトリページを範囲信 号の関数として連結し、連結されたディレクトリページの階層データ構造を形成 する範囲連結システムを有し得る。 システムによって記憶されるデータはホームレスであり得る、即ち、データは 、固定された物理的ホームを有しないが、ネットワークのメモリ装置間を、リソ ースおよび他の要因が指示するように移動し得るので、本発明によるコンピュー タシステムは、共有アドレス空間の一部に対する位置情報を有する複数のコンピ ュータの選択された1つを示す信頼のできるノード信号を生成するためのノード セレクタを有するディレクトリページ生成器を有し得る。これによって、データ の物理的記憶装置位置からディレクトリを切り離す遠回りのレベルが提供される 。従って、ディレクトリは、データの物理的位置を追跡するノードまたは他の装 置を識別するだけでよい。このように、データが物理的記憶装置位置間を移動す る度に、ディレクトリが更新される必要はない。なぜなら、データの位置を追跡 するノードは、変更されず、物理的位置情報を提供するからである。 従って、システムは、信頼のできるコンピュータノードなどの位置モニタを示 す情報を搬送し、データ記憶位置を追跡して、ホームレスデータを追跡するため のディレクトリ構造を提供するディレクトリページを生成するページ生成器を有 し得る。さらに、ディレクトリ自体は、仮想メモリ空間内にページとして記憶さ れ得る。それ故、データ記憶装置位置は、ディレクトリページを示す情報を記憶 して、ホームレスデータのページとしてディレクトリ構造を記憶することが可能 である。 他の局面では、本願で参考のために援用する上記の米国特許出願の発明は、ア ドレス指定可能な共有メモリ空間を有するコンピュータシステムを提供する方法 として理解され得る。この方法は、コンピュータで読み出し可能な情報を示すデ ータ信号を搬送するネットワークを提供する工程と、ネットワークに連結され、 データ信号の持続性記憶装置を有するハードディスクを提供する工程と、各々が 複数のコンピュータ間でデータ信号を交換するためのデータネットワークを結合 するインターフェースを有する複数のコンピュータを提供する工程と、アドレス 指定可能なメモリ空間の一部をハードディスクの持続性記憶装置の一部に割り付 けて、データ信号のアドレス指定可能な持続性記憶装置を提供する工程とを包含 し得る。 ここで、アドレス指定可能な共有メモリシステムまたは本願で参考のために援 用する上記の米国特許出願のエンジンに関連する図面を参照する。図7は、図示 されるコンピュータネットワーク210の各ノードのメモリ空間をカバーする共 有メモリを提供するコンピュータネットワーク10を示す。 具体的には、図7は、各々がCPU214、動作システム216、選択専用メ モリデバイス218、および共有メモリサブシステム220を有する複数のノー ド212aから212cを有するコンピュータネットワーク210を示す。図5 にさらに示すように、各ノード212aから212cは、共有メモリサブシステ ム220を介して仮想共有メモリ222に接続される。以下さらに詳細に説明す るように、ノード212aから212cが仮想共有メモリ222にアクセスでき るようにする共有メモリサブシステム220を提供することによって、コンピュ ータネットワーク210は、ネットワークノード212aから212cが、同じ 機械上で走るアプリケーション間で通信するとき、アプリケーションによって用 いられる同じ技術を用いて通信および機能性を共有し通信することができるよう にする。これらの技術は、オブジェクト連結および埋め込み、ダイナミックリン クライブラリ、クラス登録、および他のこのような技術を使用し得る。従って、 ノード212は、ネットワーク210の異なるノード212上で走るアプリケー ションプログラム間でデータおよびオブジェクトを交換するために、仮想共有メ モリ222を用い得る。 図7に示す実施態様では、各ノード212は、市販のIBMPC互換性のコン ピュータシステムなどの従来のコンピュータシステムであり得る。プロセッサ 214は、このコンピュータシステムのデータ処理を実施するのに適した任意の プロセッサユニットであり得る。動作システム216は、コンピュータシステム のローカルメモリにアクセスし、ネットワーキングするための機能を有するか、 またはこのような機能にアクセスすることが可能な任意の市販のまたは専売動作 システムであり得る。 専用メモリデバイス218は、コンピュータ読み出し可能情報の代表的なデー タ信号を記憶するのに適した任意のコンピュータメモリデバイスであり得る。専 用メモリはネットワーク上の他のノードにアクセス不可能に維持され得るローカ ル記憶装置をノードに提供する。典型的には、専用メモリデバイス218は、デ ータおよびアプリケーションプログラムを一時的に記憶し、且つ、プロセッサ2 14にプログラムを実行するメモリ記憶装置を提供するためのRAMまたはRA Mメモリの一部分を含む。専用メモリデバイス18は、データの持続性記憶装置 のために、典型的にはハードディスクユニットまたはハードディスクユニットの 一部分である持続性メモリ記憶装置を更に含む。 図7に示す共有メモリサブシステム220は、動作システム216と仮想共有 メモリ222との間を結合し、且つ、動作システム216と仮想共有メモリとの 間にインターフェースを形成し、それにより動作システム216が仮想共有メモ リ222にアクセスできる、本発明の1つの実施形態である。図示した共有メモ リサブシステム220は独立型分散共有メモリエンジンとして動作するソフトウ ェアモジュールである。図示したシステムは例示的であり、本発明の他のシステ ムはアプリケーションプログラムに組み込まれ得る共有メモリサブシステムとし て実現され得るか、またはハードウェアデバイスの組み込まれたコードとして実 現され得る。他のこのようなアプリケーションが、本発明の範囲から逸れること なく実行され得る 図示した仮想共有メモリ222は、共有メモリサブシステム220を介して、 ノード212a〜212cの各々によりアクセス可能な仮想共有メモリを示す。 仮想共有メモリ222は、複数のページ224a〜224dとして図7に示した 、コンピュータ読み出し可能データ用の物理的記憶装置を提供する装置をマッピ ングすることができる。ある実施形態において、ページは共有メモリ空間の複数 の 部分を形成し、共有メモリのアドレス空間をページアドレス可能メモリ空間に分 割する。例えば、アドレス空間は4Kバイトのセクションにページ付けされる。 他の実施形態において、共有メモリ空間を管理するのに異なる細分性が使用され 得る。共有メモリサブシステム220を介した各ノード212a〜212cが、 仮想共有メモリ222に記憶された各ページ224a〜224dにアクセスでき る。各ページ224a〜224dは、仮想共有メモリ222内に記憶されたコン ピュータデータの独自のエントリ(entry)を示す。各ページ224a〜2 24dは、ノード212a〜212cの各々1つにアクセス可能である。あるい は、各ノードは仮想共有メモリ222内の更なるページのデータを記憶し得る。 各新たに記憶されたページのデータは、他のノード212a〜212cの各々に アクセス可能であり得る。従って、仮想共有メモリ222は、コンピュータネッ トワーク210の各ノード212間でデータを共有且つ通信するシステムを提供 する。 図8は、分散共有メモリを有するコンピュータネットワーク230を形成する 機能ブロック図を示す。この実施形態において、各ノード212a〜212cは 、動作システム216と2つのローカルメモリデバイス、RAM234およびデ ィスク236との間を接続し、図示したノード212a、212bおよび212 cの各々ならびにネットワークメモリデバイス226に結合するネットワーク2 38に更に結合するメモリサブシステム232を有する。 より詳細には、図8は、それぞれが処理ユニット214を含む複数のノード2 12a〜212c、動作システム216、メモリサブシステム232、RAM2 34、およびディスク236を含む分散共有メモリネットワーク30を示す。図 8は、ノード212a〜212cとネットワークメモリデバイス226との間を 接続するコンピュータネットワークシステム38を更に示す。ネットワーク23 8はこれらのエレメントを亘るネットワーク通信システムを提供する。 動作システム216a〜216cと、メモリエレメント234a〜234c、 236a〜236cと、ネットワーク238との間を接続する図示したメモリサ ブシステム232a〜232cは、ノードの各々のローカルメモリをカプセル化 し、ネットワーク238上のノード212a〜212cの各々を亘ってカバーす る共有仮想メモリシステムの概念図を提供する。メモリサブシステム232a〜 232cは、図示したメモリデバイスを亘るアドレス可能メモリ空間の複数の部 分をマッピングするディストリビュータとして機能するソフトウェアモジュール であり得る。メモリサブシステムは、各ノード212のローカルメモリに記憶さ れたデータを更に追跡し、且つ、ノード212a〜212c間でデータを転送す るためのネットワーク238とのネットワーク連結を更に動作する。このように 、メモリサブシステム232a〜232cが、ネットワーク238上の各メモリ エレメントにアクセスし且つそれらを制御し、動作システム216に対して認識 されないメモリアクセス動作を実行する。従って、動作システム216は、ネッ トワーク238上の各ノード212a〜212cに亘るグローバルメモリ空間へ のインターフェースとして、メモリサブシステム232とインターフェースする 。 図8は、システム230が、分散されたメモリの複数の部分のための持続性記 憶装置を含む分散共有メモリを提供する様子を更に示す。特に、図示した実施形 態は、持続性メモリデバイスにインターフェースするサブシステム232a等の メモリサブシステムを含む。これを、ディスク236aとして図示する。サブシ ステム232aは持続性メモリデバイスを動作し、分散共有メモリ空間の複数の 部分のために持続性記憶装置を提供し得る。図示されたように、図8に示す各持 続性メモリデバイス236は、マッピングされたアドレス可能メモリ空間の一部 分を有する。例えば、デバイス236aは、マッピングされたアドレス可能メモ リ空間Co、Cd、Cgを複数の部分を有し、それらのアドレス範囲に記憶された データ信号に持続性記憶装置を提供する。 従って、サブシステム232aは持続性記憶装置デバイスおよび電子メモリの 統合された制御を提供し、分散共有メモリ空間が両タイプの記憶装置デバイスを 亘ることを可能とし、および、分散共有メモリの複数の部分が最近の使用方法の ように所定の条件に基づいて持続性メモリと電子メモリとの間を移動することを 可能にする。 図2に示す実施形態を参照して、ネットワークのノードがグループの階層に構 成され得る。これらの実施形態において、メモリサブシステム232a〜232 cが、データの分散について階層的制御を提供する階層マネージャを含み得る。 これは以下に詳細に説明する移動コントローラおよびポリシーコントローラを制 御することを含み、データが主に同じグループのコンピュータ間を移動し、且つ 、階層的順序で他のグループを通過するように、階層的データ移動および負荷バ ランシングを実行する。リソース分散は同様に管理される。 図9は、本発明による、ある共有メモリサブシステム240をより詳細に示す 。図9は、インターフェース242、DSMディレクトリマネージャ244、メ モリコントローラ246、ローカルディスクキャッシュコントローラ248、お よびローカルRAMキャッシュコントローラ250を含む共有メモリサブシステ ム240を示す。図9は、ネットワーク254、サービス258として示すDS Mシステムの追加的なコンシューマ、動作システム216、ディスクドライバ2 60、ディスクエレメント262およびRAMエレメント264を更に示す。 図9に示す共有メモリサブシステム240は、ネットワークノード212のメ モリ管理動作をカプセル化し、ネットワーク254に接続する各ノードに亘り得 る仮想共有メモリを提供し得る。従って、各ローカルノード212はネットワー クを、それぞれが大規模共有コンピュータメモリに接続された1組のノードとみ なす。 図示したインターフェース242はローカルノードにエントリーポイントを提 供し、コンピュータネットワークの共有メモリ空間にアクセスする。インターフ ェース242は動作システム216、図示したDSMファイルシステム258等 の分散サービスユーティリティ、分散ユーザレベルサービスユーティリティ、あ るいはそれらの任意の組み合わせに直接結合し得る。 図示したインターフェース242は、メモリ志向性APIであるAPIを提供 する。従って、示したインターフェース242は分散メモリの低レベル制御を提 供する1組のインターフェースをエクスポートし得る。図9に示すように、イン ターフェース242はAPIを動作システム216またはオプショナルDSMサ ービス258にエクスポートする。動作システム216またはサービスはインタ ーフェース242を用いて、メモリ空間の複数の部分からの読み出しおよび書き 込み等の標準的なメモリ管理技術を要求する。メモリ空間のこれらの部分は共有 メモリ空間もしくはオブジェクトまたはセグメント等の他のユニットのメモリの 4Kバイトの部分であり得る上述のようなページであり得る。各ページはグロー バルアドレス信号によってメモリのそのページを指定された共有メモリ空間内に 位置し得る。システムはアプリケーションプログラムからアドレス信号を受け取 り得るか、または選択的に、アドレス信号を生成するグローバルアドレス生成器 を含み得る。アドレス生成器は、ネットワークの記憶容量に亘るメモリ空間につ いてアドレス信号を生成するスパニングモジュールを含み得る。 従って、ある実施形態において、インターフェース242は共有メモリ空間の ページを操作する(manipulate)要求を受け取る。この目的のために 、インターフェース242は、サービス、OS216、または他のコーラー(c aller)によって呼び出され得る機能またはデバイスのライブラリを含むソ フトウェアモジュールを含み得る。機能呼び出しはOS216にデータ読み出し 、データ書き込みおよびメモリ割り当て等の高レベルメモリ志向性サービスのA PIを提供する。機能の実行には、ディレクトリマネージャ244を動作する制 御の1組の呼び出しおよびローカルメモリコントローラ246が含まれ得る。従 って、インターフェース242は、共有メモリサブシステム240の低レベル機 能エレメントにインターフェースする1組の高レベルメモリ機能呼び出しであり 得る。 図9は、インターフェース242に結合するDSMディレクトリマネージャ2 44を更に示す。インターフェース242は要求を示す要求信号を通し、メモリ の部分の割り当て、メモリの部分のロッキング、メモリの部分のマッピング、ま たはこのような他のメモリ機能等のメモリ動作を実行する。ディレクトリマネー ジャ244は、各RAMおよびネットワークによってアクセス可能なディスクエ レメントを含む図8に示されるネットワーク238に接続された各メモリデバイ スに亘り得るマッピングを含み得るディレクトリを管理する。ディレクトリマネ ージャ244は、グローバルアドレス空間のマップを提供するグローバルディレ クトリ構造を記憶する。以下に更に詳細に説明するある実施形態において、ディ レクトリマネージャ244が、グローバルアドレス信号とネットワーク上のレス ポンシブルノード(responsible node)との間をマッピングす るグローバルディレクトリを提供する。レスポンシブルノードは、それぞれのグ ローバルアドレスに関連するデータの位置および属性に関する情報を記憶し、ペ ージのデータのコピーを選択的に記憶する。結果、ディレクトリマネージャ24 4は識別子空間(identifier space)内の任意のアドレス位置にアクセスするため の情報を追跡する。 分散共有メモリの制御は、ディレクトリマネージャ244およびメモリコント ローラ246によって調整され得る。ディレクトリマネージャ244はディレク トリ構成を維持し、そのディレクトリ構成は、インターフェース242から受け 取られるグローバルアドレス上で作動し、共有メモリ空間のアドレスに関するペ ージを維持する責任を負う、ネットワーク上のノードを、そのアドレスについて 、特定し得る。特定のアドレスを維持する責任を負うノードはいずれのノードで あるのかを、一旦、ディレクトリマネージャ244が特定すると、ディレクトリ マネージャ244はそのページのコピーを位置づけるための情報を記憶するノー ドを特定し得、そのノードのメモリコントローラ246を呼び出し、そのノード のメモリコントローラに対して、メモリインターフェース242によって提供さ れるメモリの要求を通す。それにより、示されるディレクトリマネージャ244 はディレクトリ構成を管理する責任を負い、そのディレクトリ構成は、共有メモ リ空間の各ページについて、それぞれのページに記憶されるデータの物理的位置 を追跡する責任を負うノードを特定し得る。したがって、ディレクトリは、ペー ジの位置を直接提供するよりもむしろ、任意に、ページの位置を追跡する責任を 負うノード、または他のデバイスを特定し得る。この遠回りは、ページがノード 間を移動する際のディレクトリの維持を容易にする。 メモリコントローラ246は、ネットワークに接続されるメモリ要素内にデー タを物理的に記憶する、低レベルメモリアクセス機能を実行する。示される実施 態様では、第1のノードのディレクトリマネージャ244は、インターフェース 242を介して、メモリアクセス要求をOS216のネットワークモジュールに 通し得る。さらに、ネットワーク254を通って、所与のアドレスに対して責任 を負うノードとしてディレクトリマネージャ244が特定する、第2のノードに その要求を通し得る。次いで、ディレクトリマネージャ244は、属性を特定す るために、且つそれぞれのグローバルアドレスに関するメモリページの現在のオ ーナノードを特定するために、責任を負うノードに照会し得る。それぞれのペー ジのオーナは、関連するページのデータが記憶されるメモリ記憶装置要素を制御 する、ネットワークノードである。オーナのメモリコントローラ246は、その ノードのOS216を介してまたは任意のインターフェースを介して、ページの データにアクセスするために、オーナノードのメモリにアクセスし得る。ページ のデータは、そのオーナノード上に物理的に記憶される。 特に、図9に示されるように、ディレクトリマネージャ244はネットワーク モジュール252に接続し、ネットワークモジュール252はネットワーク25 4に接続する。ディレクトリマネージャはネットワークモジュール252にコマ ンドを遷移し得、且つデータ信号をオーナノードに通すように、ネットワークイ ンターフェース252を誘導する、関連データをも遷移し得る。オーナノードは ネットワーク254を通じて、且つネットワークモジュール252を介して、メ モリ要求を受け取る。ネットワークモジュール252は、メモリ要求をオーナノ ードのインターフェース242に通す。インターフェース242はメモリコント ローラ246に接続し、オーナノードのローカルメモリコントローラに、メモリ 要求を通し得る。それは、要求されるメモリ動作を実行するために、ディスクま たはRAM要素などのローカル記憶装置要素を操作するためである。 オーナノードが、一旦、データのページの読み出しなどの、要求メモリ動作を 実行すると、次いで、オーナノードのメモリサブシステム240は、そのデータ のページ、またはそのデータのページのコピーを、ネットワーク254を介して 、共有メモリのその部分へのアクセスを最初に要求したノードに転送し得る。デ ータのページは、ネットワーク254を介して、ノードに要求するネットワーク モジュール252へ転送され、且つ、共有メモリサブシステム240は、メモリ コントローラ246が、アクセスされたデータのコピーを、ノードに要求するロ ーカルメモリ内に記憶するようにコントローラを操作する。 したがって発明の1つの実施態様では、第1のノードが、共有メモリ空間の、 ノード上に局在的に記憶されていないページにアクセスする場合、ディレクトリ マネージャ244はそのページに記憶されるデータのコピーを有するノードを特 定し、そのデータのコピーを、ノードに要求するローカルメモリ内に移動する。 したがって、ノードに要求する、揮発性(例えば、ローカルRAM)および持続 性(例えば、ローカルディスク記憶装置)の双方のローカルメモリ記憶装置は、 そのローカルノードによって要求されているページのキャッシュになる。この実 施態様は図9に示され、ローカルディスクキャッシュコントローラ248および ローカルRAMキャッシュコントローラ250を有するメモリコントローラが示 される。これらのローカルキャッシュコントローラの双方は、オペレーティング システム216または他のコンシューマに対して、ノードのローカルメモリにキ ャッシュ記憶される共有メモリ空間のページを提供する。そのようなローカルメ モリは、ローカル持続性メモリおよびローカル揮発性メモリを含む。 共有メモリサブシステムはコヒーレント複製コントローラを含み得る。コヒー レント複製コントローラは、無効化プロセスを介するコヒーレンス、移動プロセ スを介するコヒーレンス、または本発明の実施に適する他のコヒーレンスプロセ スを用いることによって、キャッシュされたページの間におけるコヒーレンスを 維持する。コヒーレント複製コントローラは、各ページ内に記憶されるデータの コピーを自動的に発生し得、そのコピーを、元のコピーのメモリデバイスとは別 のメモリデバイス内に、記憶し得る。これはフォールトトラレント動作を提供す るが、それは任意のメモリデバイスの1つの故障が、データの損失を生じないと いった動作である。コヒーレント複製コントローラは、揮発性メモリ内に保持さ れるページの全コピーをモニタし、且つ、書き込みのために利用可能にしておく ソフトウエアモデルであり得る。コントローラは、上にその名称をあげられた、 任意のコヒーレント技術を用い得、生成されたコピー全てについての位置情報を 特定する、ローカル情報のテーブルを記憶し得る。 図10は、発明による共有メモリサブシステムの1つの実施態様を、より詳細 に示す。図10に示される共有メモリサブシステム270は遠隔動作要素274 、ローカルRAMキャッシュ276、RAMコピーセット278、グローバルR AMディレクトリ280、ディスクコピーセット282、グローバルディスクデ ィレクトリ284、環境設定マネージャ288、ポリシー要素290、およびロ ーカルディスクキャッシュ94を含む。図10は、更に、ネットワーク要素30 4、物理的メモリ300、共有データ要素302、オペレーティングシステム2 16 の1部である物理的ファイルシステム298、環境設定サービス308、診断サ ービス310、およびメモリアクセス要求312を示す。示されるサブシステム 270は、物理的メモリ、ファイルシステム、およびホストノードのネットワー クシステムに接続するコンピュータプログラムであり得、またはホストノードに インターフェースをとる電気回路カードアセンブリであり得、またはプログラム および回路カードアセンブリの組み合わせであり得る。 図10に示されるフロースケジューラ272は、サブシステム270のAPI によって提供される制御を統制し得る。1つの実施態様では、フロースケジュー ラ272は、ネットワーク304を介して、要求312および遠隔要求をモニタ し、それらに応答する状態マシンであり得る。それらの要求は、メモリ動作につ いての命令であり得、且つ動作がなされているグローバルアドレスを表す信号を 含み得る。これらのメモリ動作要求312は、1つ以上のグローバルアドレス上 での基本的な動作のための演算コードとして、機能し得る。それらは、要求また は他のメモリ動作を読み出し得、且つ書き込み得る。または、フロースケジュー ラ272は、インタープリタなどのプログラムであり得、そのプログラムは執行 環境を提供し、アプレットと称される制御フロープログラム内にそれらの演算コ ードをマッピングし得る。アプレットはスレッディング、同調化、およびバッフ ァ管理などの環境サービス、ならびに図10に示される要素の双方を用いる独立 的な執行可能プログラムであり得る。APIは、分散共有メモリファイルシステ ムなどの外部のクライアントからと、再帰的に、アプレットおよびサブシステム 270の他の要素274〜294によっての双方で呼び出され得る。各要素は、 システムの特定のリソースまたは局面の管理に対して、カプセル化の程度を提供 する。この目的のために、各要素は、アプレットによって用いられる機能を含む APIをエキスポートし得る。この構成は図10に示される。それにより、フロ ースケジューラ272は、アプレットをロードし執行する環境を提供し得る。ア プレットはフロースケジューラ272によって、演算コード毎にディスパッチさ れ、要素の連続執行または並列執行のためのコントロールフローを実行し得る。 コントロールフローは、特定されたグローバルアドレスにおける、読み取りまた は書き込み動作などの演算コードを行う。必要に応じて、フロースケジューラ2 72は、実行時にアプレットを動的に変更するための、且つアプレットを並列お よび解釈された態様において執行するための要素を含み得る。 示される共有メモリサブシステム270は、分岐するディレクトリマネージャ を含み、そのディレクトリマネージャはグローバルRAMディレクトリ280お よびグローバルディスクディレクトリ284を含む。グローバルRAMディレク トリ280は、ネットワークノードの揮発性メモリに記憶されるページの位置を 提供し得る情報を追跡する、ディレクトリマネージャである。その揮発性メモリ は、典型的にはRAMである。グローバルディスクディレクトリ284は、ディ レクトリ構成を管理するグローバルディスクディレクトリマネージャであり、そ のディレクトリ構成は、持続性メモリデバイスに記憶されるページの位置を提供 し得る情報を追跡する。グローバルRAMディレクトリ280およびグローバル ディスクディレクトリ284は、一緒に、持続性記憶装置および揮発性メモリに 記憶されるページのための、内蔵ディレクトリ管理を、共有メモリサブシステム 270に提供する。 1つの実施態様において、ページング要素はRAMおよびディスクディレクト リマネージャを操作し得、揮発性メモリの1つと持続性メモリの1つとの間のア ドレシング可能メモリ空間の部分を再度マッピングする。共有メモリシステムで は、これにより、ページング要素が、ページを、1つのノードの揮発性メモリか ら別のノードのディスクメモリへと再度マッピングすることを可能にする。それ により、RAMディレクトリマネージャはそのページの制御をディスクディレク トリマネージャに通し、次いで、ディスクディレクトリマネージャは、そのペー ジを、任意の他のデータページとして扱う。これは、ディスクディレクトリマネ ージャの制御下、データをRAMメモリから除去し、且つそれをディスクデバイ スに記憶することによって、負荷バランシングを改善することを可能にする。 データは、1つ以上のRamメモリ、1つ以上のノードの持続性メモリ、また はネットワークに分散されるRAMおよび持続性メモリのある組み合わせに記憶 され得る。システム内に存在する、この、データの自然な分散は、ノード故障に 対する第1の防御線を提供する。データの自然な分散に加えて、システムはデー タのページを2重に(duplex)し得、すなわち、システムはページまたは 多数のノードにコピーを記憶し得る。グローバルディスクディレクトリ284は 、各アドレス範囲内のページを管理する責任を負うノードにアドレス範囲をマッ ピングする。アドレスの範囲に責任を負うノードは、これらのページの「コアホ ルダ」として参照される。 各ページは、それ以下に減少してはならない最低数のコアホルダを割り当てら れる。例えば、ページが、最低数として、3つのコアホルダを割り当てられ、且 つ第3のコアホルダが、ページへのアクセスを妨害する故障を被る場合、少なく とも好適な、コアホルダの最低数を割り込み、ページの別のコピーが作成されな ければならない。ページの別のコピーは、コアホルダノード(完全にそれが故障 しなかった場合)上に作成され得るか、または残るコアホルダの1つによってペ ージのコピーが付与される、新たなコアホルダが指定され得る。 上記に示唆されるように、完全なノードから回復するために再度の2重化も用 いられ、ノード故障の後の再度の2重化は以下にさらに詳細に考察される。 サブシステム270のローカルメモリコントローラは、ローカルRAMキャッ シュ276およびローカルディスクキャッシュ294によって提供される。ロー カルノードの物理的メモリ300に接続するローカルRAMキャッシュ276は 、上述のように、RAMメモリ300内に物理的に記憶されるデータをアクセス するために、ローカルノードの仮想メモリ空間にアクセスし得る。同様に、ロー カルディスクキャッシュ294は持続性記憶装置デバイス298に接続し、ロー カル持続性記憶装置に、分散共有メモリのデータを維持する、物理的な位置をア クセスし得る。 図10は、ネットワーク304とフロースケジューラ272との間を接続する 、遠隔操作要素274をも示す。遠隔操作要素274は、ネットワークのノード 間における共有メモリ空間に記憶されるデータの移動部分について、ネットワー ク304へのそのデータの転送を処理する。遠隔操作要素274は、また、遠隔 の対等者からのサービスを要求し、すなわち、コヒーレンス維持を助けるため、 または別の目的のために無効にする。 図10はまた、プリンタ性能、ハードディスク空間、利用可能RAMおよび他 のこのようなリソースなどのリソースの可用性を決定するコントローラとして機 能するソフトウェアモジュールであり得るポリシーエレメント290を示す。ポ リシーコントローラは、可用リソースを動的に分配するページングコントローラ 、ディスクディレクトリマネージャ、および他のエレメントなどのエレメントを 指示するために適切なヒューリスティック(heuristics)のいずれも利用し得る 。 図10は、RAMコピーセット278およびディスクコピーセット282を含 むメモリサブシステム270を更に示す。これらのコピーセットは、単一ノード でキャッシュされたページのコピーの情報を管理し得る。ディスクコピーセット 282は、ローカル持続メモリであり得るローカルディスクキャッシュに格納さ れるページのコピー上の情報を維持し得る。同様に、RAMコピーセット278 は、ローカルRAMであり得るローカルRAMキャッシュに格納されるページの コピーの情報を維持し得る。これらのコピーセットは、共有メモリスペースにお いて格納されるデータのコヒーレンスを維持する目的でアプレットまたは他の実 行コードによって利用され得るコピーセットデータの索引および記憶装置を要約 する。コピーセットエレメントは、ホストノードによってキャッシュされるペー ジを確認するコピーセットデータを維持し得る。更に、コピーセットは、そのペ ージのコピーを維持するネットワーク上の別のノードを確認し得、これらのノー ドがオーナノードである各ページについて更に確認し得る。ここで、オーナノー ドは、アクセスされるページに書き込み特権を有するノードであり得る。コピー セット自身は、分配された共有メモリスペースのページに格納され得る。 ローカルRAMキャッシュ276は、メモリページおよびそれらの属性のため の記憶装置を提供する。1つの実施形態において、ローカルRAMキャッシュ2 76は、分配されたメモリのキャッシュされたページおよびそのページに基づい た属性にアクセスするためのグローバルアドレスインデックスを提供する。本実 施形態において、ローカルRAMキャッシュ276は、ローカルRAMにキャッ シュされた各グローバルアドレスのリストをメモリに格納する事によってインデ ックスを提供する。列挙されたグローバルアドレスの各々によって、インデック スはバッファメモリおよびページデータのロケーションにポインタを提供する。 任意に、列挙された各グローバルアドレスによって、インデックスは、データの バージョンのバージョンタグ代表、RAMキャッシュデータがディスク上に保持 されたデータのコピーであるかまたは、RAMキャッシュデータが変更されてい るがディスクへまだフラッシュされていないダーティ(dirty)ビット代表、持続 メモリにおいてバックアップ記憶装置によってバックアップされたページである かを示すための揮発性ビット、および格納されたデータのコヒーレンスを管理す るために有用な他の属性情報を含む属性情報を更に提供する。 図10に示す実施形態において、メモリサブシステム270は、グローバルR AMディレクトリ280およびグローバルディスクディレクトリ284を含むデ ィレクトリマネージャ、ローカルRAMキャッシュ276およびローカルディス クキャッシュエレメント294を含むキャッシュコントローラ、およびRAMコ ピーセット278およびディスクコピーセット282を含むコピーセットエレメ ントの同調的な動作による分配メモリスペースへのノードアクセスを提供する。 ディレクトリマネージャは、共有アドレススペースを索引するディレクトリ構 造を提供する。ページ化共有アドレススペースの例を続けると、サブシステム2 70のディレクトリマネージャは、グローバルアドレスによってホストノードが 共有メモリスペースのページにアクセスする事を可能にする。 図11および図12は、共有メモリスペースへのアクセスを提供するディレク トリ構造の1つの実施例を示す。図11は、ページヘッダ322、ディレクトリ エントリ324および326を含むディレクトリページ320を示し、ここで、 キャッシュディレクトリエントリは、領域フィールド330、関与するノードフ ィールド332およびアドレスフィールド334を含む。ディレクトリページは 、ディレクトリマネージャによって制御されるソフトウェアモジュールであり得 るディレクトリページ生成器によって生成され得る。ディレクトリマネージャが グローバルディスクのための1つとグローバルRAMディレクトリのための1つ を含む複数のディレクトリを生成し得ることが理解される。図示されるディレク トリページ320は、共有アドレススペースの4Kバイト部分などのグローバル アドレススペースのページであり得る。よって、ディレクトリページは、ディレ クトリページがアクセスを提供する他のページと同様の分配された共有メモリス ペースに格納され得る。 図11においてさらに示すように、各ディレクトリページ120は、典型的に ディレクトリページのメタデータである、そのページヘッダのための属性情報を 含むページヘッダ322を含み、分配共有メモリ空間の全てのページを含む1つ 以上のページであり得る、共有アドレススペースの部分に索引を提供するディレ クトリエントリ324および326などのディレクトリエントリを更に含む。図 示されたディレクトリページ320は、共有メモリスペースのグローバルアドレ スの選択された範囲を索引するディレクトリエントリを含む。このために、ディ レクトリ生成器は、各ディレクトリエントリがそのエントリが位置するアドレス の範囲の始めを示す範囲フィールド330を含み得るように、範囲生成器を含み 得る。 従って、各ディレクトリページ320は、アドレススペースをアドレス範囲の サブセットに細分化し得る、エントリ324および326などの複数のディレク トリエントリを含み得る。例えば、図示されるディレクトリページ320は、2 つのディレクトリエントリ324および326を含む。ディレクトリエントリ3 24および326は、例えば、アドレススペースを2つのサブ部分に細分化し得 る。本実施例において、ディレクトリエントリ324の開始アドレス範囲は、ア ドレススペースのベースアドレス、およびディレクトリエントリ326の開始ア ドレス範囲は、メモリスペースの上半分のアドレスであり得る。よって、ディレ クトリエントリ324は、基礎アドレスとメモリスペースの中間点までとの間の アドレススペースに格納されるページについてのインデックスを提供し、その完 了に伴い、ディレクトリエントリ326はアドレススペースの中間点から最高ア ドレスまでの範囲のアドレススペースに格納されるページについての索引を提供 する。 図11は、更に、各ディレクトリエントリにおいて、関与するノードフィール ド332および子ページグローバルアドレスフィールド334を含むディレクト リページ320を示す。これらのフィールド332、334は、フィールド33 0によって確認されたアドレス範囲内のページに格納されたデータに対する更な る位置情報を提供する。 図12は、図9に示したディレクトリページと同様のディレクトリページから 形成されるディレクトリ340を示す。図12は、ディレクトリページ342、 350〜354および360〜366を含むディレクトリ340を示す。図12 は更に、図12にページ370〜384で示す分配された共有メモリスペースの ページの位置情報を提供するディレクトリ340を示す。 図12に示すディレクトリページ342は、ルートディレクトリページのよう に機能し、分配アドレススペースに結合されたキャッシュノードに既知である静 的アドレスに配置され得る。ルートディレクトリページ342は、3つのディレ クトリエントリ344、346および348を含む。図12に示す各ディレクト リエントリは、図11に示すのと同様のディレクトリエントリを有する。例えば 、ディレクトリエントリ344は、アドレス範囲フィールド330を示す変数C o、フィールド332を示す変数Nj、およびフィールド334を示す変数Cs を含む。図示されるルートディレクトリページ342は、アドレスCoとCdと の間を伸びるアドレス範囲、アドレスCdとCgとの間を伸びる第2のアドレス 範囲、Cgとアドレススペースの最高メモリ位置との間を伸びる第3のメモリ範 囲として示される3つの範囲にアドレススペースを細分化する。 図12に更に図示されるように、各ディレクトリエントリ344、346およ び348はディレクトリページ350、352、および354として示される従 属ディレクトリページを示す。ディレクトリページ350、352、および35 4の各々は、ルートディレクトリ342の関連ディレクトリエントリによってア ドレス範囲索引をさらに細分化する。図11において、ディレクトリページ35 0、352、および354が、各々、ディレクトリページ360、362、36 4および366の示された例を含む従属ディレクトリページを配置するディレク トリエントリを再び有すると、この細分化プロセスは続けられる。 ディレクトリページ360、362、364および366の図示された例は、 それぞれリーフエントリ(leaf entry)である。リーフエントリは、範囲フィール ド330および関与するノードフィールド332を格納する、リーフエントリ3 60のディレクトリエントリ356および358などのディレクトリエントリを 含む。これらのリーフエントリは、示されたページ370〜384など、アクセ スされる分配されたメモリスペースのページに対するアドレスおよび関与するノ ードを確認する。例えば、図12に示すように、リーフエントリ356は、リ ーフエントリに対してはアクセスされたページである、リーフエントリ356の 範囲フィールド330に対応するページ370を示す。この方法によって、ディ レクトリ構造340は、分配アドレススペースに格納されたページに対する位置 情報を提供する。 図12に示す実施形態において、ノード選択器は、上述するように各ページに 対する関与ノードを選択し得るので、リーフエントリ356は、配置されたペー ジのアドレスおよび関与ノードの情報を提供する。よって、このディレクトリは データの所有者および責任能力を追跡し、データのディレクトリと物理的位置と の間の不正のレベルを提供する。メモリアクセス動作の間、メモリサブシステム 270はリーフエントリ356に示される関与するノードをアクセスされるペー ジのアドレスに送る。ノードの共有メモリサブシステムは、オーナノードを含む 、アクセスされるページのコピーを格納するノードを確認し得る。コピーを有す るノードの確認は、関与するノードのRAMコピーセットおよびディスクコピー セットによって実行され得る。オーナノードなどのローカル物理的メモリに格納 されるコピーを有するノードは、ローカルRAMキャッシュおよびローカルディ スクキャッシュを含むローカルキャッシュエレメントを利用し、グローバルアド レス信号からアクセスされるページに格納されるデータの物理的位置を確認する 。キャッシュエレメントは、オーナノードの動作システムを利用し、ページに格 納されたデータがアクセスされ得るために物理的位置を維持するメモリ装置にア クセスし得る。読み出しメモリ動作、または他の同様な動作に対して、オーナノ ードの物理的メモリから読み出されたデータは、ネットワークを介して読み出し を要求するノードのメモリサブシステムに送られ得、続いて、ノードによる使用 のために要求するノードの仮想メモリスペースに格納される。 図12を再び参照すると、示されるディレクトリ構造340は階層構造を含む ことが見られる。この目的のために、ディレクトリ構造340は、メモリスペー スをより小さなセクションに細分化し続ける構造を提供する。更に、各セクショ ンは、同一の構造のディレクトリページによって示されるが、異なる大きさのア ドレススペースを索引する。ページが作成または削除されるに従い、リンカはデ ィレクトリに対してページが挿入または削除される。1つの実施形態において、 リンカはデータ構造を結合するソフトウェアモジュールである。リンカは、アド レス範囲が示され階層構造を提供するように動作し得る。よって、示されたディ レクトリ340は、共有アドレススペースに対して評価可能なディレクトリを提 供する。更に、ディレクトリページは、分配アドレススペースに格納され、分配 共有メモリシステムによって維持される。ディレクトリに対するルートは、シス テムのブートストラップを可能にするように既知の位置に格納し得る。その結果 、よく使用されるページはコピーおよび分配され、あまり使用されないページは ディスクに転嫁される。同様に、ディレクトリページは、それに最も多くアクセ スするノードに移動し、ネットワーク通信量を低減するある程度の自己体制を提 供する。 図13は、本発明によるシステムによって使用される図12のディレクトリを図 示する。より詳細には、図13は、2つのノード406aおよび406b、ディレクトリ構 造340、ならびに揮発性メモリデバイス264aおよび264bならびに不揮発性メモリ デバイス262aおよび262bを有する1対のローカルメモリを含むシステム400を 図示する。図示されたノード406aは、アドレスコンシューマ408a、グローバルア ドレス4l0a、ならびにインターフェース242a、ディレクトリマネージャ244aおよ びメモリコントローラ246aを含む。ノード406bは、対応する要素を有する。ノー ドは、ネットワーク254によって接続される。ディレクトリ340は、ルートページ 、ディレクトリページA-F、およびページl-5を有する。 各ノード406aおよび406bは、上述のように動作する。図示されたアドレスコン シューマ408aおよび408bは、アプリケーションプログラム、ファイルシステム、 ハードウェアデバイス、または仮想メモリへアクセスを要求するような他の要素 であり得る。動作中に、アドレスコンシューマ408aおよび408bは、1アドレスま たは所定範囲のアドレスを要求し、そしてディレクトリマネージャは、要求され たアドレスをコンシューマに提供するグローバルアドレス生成器、または要求さ れたアドレスへのポインタを含み得る。アドレスが生成されるにつれて、それぞ れのディレクトリマネージャ244aおよび244bは、ディレクトリページを生成し、 そしてページをディレクトリ構造340に格納する。図示されるように、ディレク トリ構造340は、システム400によって用いられるアドレススペースの部分をなぞ り、そして各ページの物理的記憶装置がローカルメモリ内に提供される。 図13に示されるように、ディレクトリページに関連するデータは、2つのロー カルメモリにまたがって分散的に格納され、そして複製コピーが存在し得る。上 述およびここで図13に例示されるように、データは、異なるローカルメモリ間を 移動し得、そしてまた揮発性および不揮発性格納部を移動またはページ(page) する。データの移動は、アプリケーションプログラムのようなメモリユーザまた は上述の移動コントローラの操作によってなされるデータ要求に応答し得る。ま た上述のように、異なるメモリロケーション間のデータの移動は、ディレクトリ 340に対して変更を要求することなしに起こり得る。これは、データ格納ロケー ションをなぞる関連ノードへのポインタを用いることによってデータの物理的ロ ケーションから切り離されるディレクトリ340を提供することによって達成され る。したがって、データ格納ロケーションが変更し得るが、担当ノードは一定を 維持し、これによってディレクトリ340を変更させる必要を回避する。 回復 上述のシステムおよび方法は、分散システムが、メモリのための不揮発性格納 部を含むアドレス空間を共有し、そしてノード故障をうまく処理することを可能 にする。RAMディレクトリ、ディスクディレクトリ、およびファイルシステムは 、分散共有システムですべてのノードにわたって分散されるので、1つのノード の故障は、RAMディレクトリ、ディスクディレクトリ、ファイルシステム、また はこの3つの組合せ中に「ホール(hole)」を残し得る。 明細書全体で述べられるシステムは、メモリ共有および故障寛容性を補助する ための2つの概念に基づく。これらの概念は、定数およびハートビート(heartb eat)であるが定数およびハートビートをまだ説明していない。しかし、アンカ ーノードの概念は、紹介されなければならない。 アンカーノードは、全ノードディレクトリデータベースのコピーを維持する特 定のネットワークノードであり、ディスクディレクトリツリーのルートのコピー などの他の重要なシステム情報のための格納部を提供する。ノードは、ネットワ ークへ導入される場合にアンカーノードとして構成され、そしてこれはノード上 に存在する構成ファイル中の値を設定することによってなされ得、またはジャン パまたは特定のケーブルなどのハードウェア技術を使用してアンカーとして構成 され得る。アンカーノードはまた、ネットワーク内の他のアンカーノードのすべ ての完全なリストを格納する。各アンカーノードは、システムアドミニストレー タによって他のアンカーノードすべてのリストを提供され得、または初期化時に 各アンカーノードが他のアンカーノードを位置付ける探索プロトコルを使用し得 る。 定数は、適切なデータ処理およびメモリ共有を提供するために、十分なノード がシステム内に機能を維持することを示す。ネットワークに存在するノードの数 は、すべてのノードが定数計算に参加するわけではないが、非常におおきくあり 得る。処理要求を低減するために、「アンカー」ノードだけが定数計算に参加す る。定数を確立しようとする際に、各アンカーノードは、1「票」を投じ得る。 受け取られる票の数が所定の閾値を超えるならば、定数が確立され、そして正常 な処理が行われる。定数はまた、ネットワークの故障がネットワークを2つ以上 の領域に分割される場合、うまく動作させるために使用され得る。パーティショ ンの1つは、他は動作を続け得ない間に動作し続け得る(定数が確立し得るなら ば)。特定の実施態様において、ネットワークアドミニストレータは、特定のノ ードに向けてのネットワークの動作のバイアス動作の試みにおいて、1票以上を 特定のアンカーノードに割当て得る。 「ハートビート」は、ネットワークのすべてのノード間における結合情報の周 期的交換を意味する。1つのノードがハートビート情報を監視するために割り当 てられる。ハートビートモニタは、ネットワークごと、パーティションごと、ま たはグループ基盤ごとに割り当てられ得る。ハートビートモニタの同一性は、動 的に割り当てられ、そして、要求はされないが、アンカーノードをハートビート モニタとして選択することが好ましい。ネットワークに接続される他のノードの すべては、ハートビート「スレーブ」であり、これは、これらのノードが動作状 態をハートビートモニタに報告し、そしてモニタから周期的な結合更新を受け取 ることを意味する。 ハートビート情報は、以下の方法で伝達する。各ハートビートスレーブは、機 能的であることをローカルハートビートモニタに示すメンバパルスをモニタへ周 期的に転送する。モニタは、スレーブのメンバパルスを受け取る場合、結合情報 を更新する。モニタは、結合情報をビットマップまたはこのような情報が格納さ れそして転送されることを可能にする任意の他のデータ構造として格納し得る。 モニタは、以下「モニタパルス」と称される、集められた結合情報をハートビー トスレーブへ周期的に同報通信する。 ハートビートスレーブが、メンバパルス情報を転送するための行において3度 期限を逃した場合、ハートビートモニタは、誤ったスレーブが機能を停止したと 仮定し、そして格納された結合情報を状態の変更を反映するために更新する。各 生き残りハートビートスレーブは、次のモニタパルスにおいて結合の変更を通知 され得る。スレーブが不安定で情報を受け取れるが、転送できない場合、スレー ブは、もはやネットワークの部分でないという同報通信された通知を受け取る。 ハートビートモニタが、モニタパルスを同時通信するための行において3度期 限を逃した場合、各スレーブは、ハートビートモニタが機能を停止したと仮定し 、そして各スレーブは、新しいハートビートモニタになろうとする。1つのスレ ーブがハートビートモニタになるように調停するか、またはハートビートモニタ を優先順にリストし、そこから連続するモニタを選択し得る構成ファイルが作成 され得る。 各ノードの責任は、ハートビートモニタ、アンカーノード、またはその両方と なるかどうかに依存する。各場合の要旨が以下に述べられる。ハートビートモニタかつアンカーノード どの結合変更においても、すなわち、メンバパルスを受け取るためのどの期限 においても、このノードは、定数が格納された結合ビットマップだけに基づいて 存在するかどうかを再計算する。得られた定数状態は、同報通信されたモニタパ ルス中に含まれる。他のアンカーノードから受け取られた定数状態情報は、無視 される。ハートモニタであってアンカーモニタでない このノードは、すべてのスレーブからメンバパルスを受け取る。メンバパルス がアンカーノードから受け取られると、このノードはすぐに、現在の定数状態を 更新し、そして次のモニタパルスで現在の定数状態を転送する。ハートビートスレーブかつアンカーノード 結合変更がある場合はいつでも、これらのノードが、ハートビートモニタから 受け取られる結合情報だけに基づいて定数を再計算する。これらのノードは、メ ンバパルス中に得られた結果としての定数状態を含む。ハートビートモニタから 得られた定数情報は無視される。ハートビートスレーブであってアンカーノードでない これらのノードは、定数情報を全く転送しない。これらのノードは、ハートビ ートモニタのモニタパルスから更新された定数情報を受け取る。 ノードがグループ化される実施態様について、各グループは、グループハート ビート転送器を選択し得る。グループハートビート転送器は、グループレベルハ ートビートモニタに、それが表すグループがアクティブであることを通知する。 グループレベルハートビートモニタは、ネットワークに存在するグループの集合 の状態を周期的に同報通信する。この階層的グループ化は、任意の深さのもので ある。 特定の実施態様において、定数情報は、特定期間の時間の後に放棄される。こ れは、タイマを定数情報に関連させることによって(ハートビートモニタおよび スレーブ上で)達成され、ノードが定数情報を受けとったときはいつでも、タイ マは再スタートされる。したがって、最後のアンカーノードが機能を停止する場 合(そしてしたがって定数情報の転送を停止する)、タイマに対してタイムアウト 期間以内に定数をもはや有しないことを知るアンカーはひとつもない。 上記のように、アンカーノードは、現在のノードデータベースの記録を維持す る、すなわちアンカーノードは、ネットワークの現在の結合状態を記録する。ア ンカーノードは、ノード故障の間のバックアップを提供するために、ノードデー タベースをディスク格納部または特定の他の不揮発性格納機構へ格納し得る。ノ ードデータベースは、特定のディレクトリロケーションに書き込まれ得る。デー タベースの更新は、集中されたデータベースによって制御され得る。アンカーノ ードがデータベースを更新する用意をした場合、行おうとする動作(加算、削除 、またはノードの変更)、エントリが変更するノードを確認するデータ、および 更 新が成功した場合に使用されるデータベースのバージョン番号をを示し得る。 1つより多いアンカーノードを有するネットワークにおいて、アンカーノード はノードデータベース更新を行うために調停アルゴリズムへ入力されなければな らない。ノードデータベース更新を開始するアンカーノードは、「コーディネー タ」の役割を仮定する。コーディネータは、現在定数集合中のすべてのアンカー ノードのリストを得、そしてこのリスト中の各アンカーノードは、開始された更 新の目的のために「従属(subordinate)」アンカーノードの役割を仮定する。デ ータベース更新が進行する一方で、コーディネータおよび従属が第2ノードデー タベース更新が始まることを許可しない。 単一アンカーノードを有するネットワークにおいて、コーディネータは、コー ディネータだけを含むアンカーノードのリストを得る。コーディネータが空のア ンカーノードのリストを取り出した場合、エラーが起こり、更新は直ちに終結さ れる。特定の実施態様において、コーディネータの最初の働きは、定数に対する チェックである。定数が全く存在しない場合、更新は直ちに終結される。 RAMディレクトリ回復 上述のように、グローバルRAMディレクトリ(GRD)ページは、冗長性、 信頼性、永続性のあるディスク記憶装置にバックアップされない揮発性ページで あり、頻繁に改変される。これらの特質により、GRDページはノード故障に極 めて脆い。GRDページは他のGRDページの位置を可能にするため、あるGR Dページを失うと、共有メモリスペースのあるセクションが検索不可能になり得 る。 簡単に概観を述べると、ネットワーク内のノードが故障すると、すべての他の ノードが処理を停止する。GRDは放棄され、生き残ったノードのローカルRA Mキャッシュの内容が同期して再供給され、処理が回復する。 「ノード状態」および「ネットワーク状態」の概念が導入されるべきである。 ノードは4つの状態、すなわち、正常状態、通知状態、静止状態、および再構築 状態を有する。正常状態では、ノードは正常に機能している。別のノードの故障 が通知されると、ノードは「通知」状態に入り、そのローカル処理のすべてが停 止するのを待つ。すべての処理が停止すると、ノードは静止状態に入り、保管し ているすべてのGRDページを放棄する。ノードが回復コーディネタからの「再 供給開始」メッセージを受け取ると、静止状態から出て、再構築状態に入る。ノ ードが回復コーディネータに再構築を完了したことを報告すると、ノードは再び 正常状態に入る。 ネットワーク状態は同様の特性を有するが、任意のノードが通知状態にある場 合はネットワークは通知状態にあることを除けば、すべてのノードが静止状熊に あるときのみネットワークは静止状態にあり、任意のノードが再構築状態にある 場合はネットワークは再構築状態にあり、そして第1のノードが正常状態に戻る とネットワークは正常状態にある。 アンカーノードが、ノードが故障したことを(ハートビーン(heartbean)メカ ニズムを介して)通知するか、またはノードの故障を検出した別のノードからG RDを再構築するようにとの要求を受け取ると、アンカーノードは「通知」状態 に入り、他のアンカーと交渉して、回復コーディネータになり、これにより再構 築の制御を得る。再構築を制御する交渉は、多くの異なる特質に依存し得る。例 えば、アンカーノードは識別コードに基づいて交渉し得、割り当て識別コードが 低い方が交渉に「勝つ」。アンカーノードは、交渉に負けると、勝者に従い、再構 築を制御しようと企てることは止め、「回復開始」メッセージを待ち、そして、 上述のように進行する。 さもなければ、アンカーノードが再構築を制御する場合は、「回復のための静 止」メッセージをすべてのノードに送り、返答すべてを受け取るまで待つ。これ は同期プロセスであり得るが、様々な応答速度および能力を有するノードに適合 するためにアンカーノードが非同期であることは望まれ得る。 非アンカーノードは先ず、回復コーディネータであるアンカーノードからの「 回復のための静止」メッセージを受け取る。これにより、ノードは「通知」状態 に入る。通知状態に入ると、すべてのローカル処理活動は停止され、ほとんどの 受け取った遠隔呼び出しに対してエラーが返されるべきである。この状態はすべ ての無効化を完了させるか、または確実に無効化に失敗するかのいずれかでなけ ればならない。さもなくば、ページが改変され得る一方で、分離されたコピー ホールダはそのままにされる。すべてのローカル処理が終了すると、「回復のた めの静止」メッセージへの返答がコーディネータに送られ、ノードは静止状態に 入る。 静止状態の間、ノードはすべてのGRDページを、ダーティかどうかに係わら ずそのローカルRAMキャッシュから除去し、コピーセット情報を放棄し、「再 供給開始」メッセージを待つ。 回復コーディネータは、すべての返答を受け取ると、すべてのノードに「再供 給開始」メッセージを送り、これらのノードからの再供給が完了した旨の返答を 待つ。 ノードは「再供給開始」メッセージを受け取ると、再構築状態に入り、メッセ −ジへの返答を送る。ノードのローカルRAMキャッシュ内に残っているページ に対して、ノードは、グローバルアドレスによってそのページを識別し、そのペ ージの責任ノードおよび所有者となることを要求するメッセージを回復コーディ ネータに送る。これが成功する場合は、ノードはそのページを所有する。成功し ない場合は、ノードはページをそのローカルRAMキャッシュから落とすか、ま たはそのページのコピーチャイルドになるために新しい所有者に登録すべきであ る。 ノードが、そのローカルRAMキャッシュ内に存在するすべてのページの所有 者になろうと企てる場合は、「再供給完了」メッセージを回復コーディネータに 送って、「動作再開」メッセージの受け取りを待つ。すべてのノードが「再供絵 完了」メッセージを回復コーディネータに送ると、回復コーディネータはネット ワーク内のすべてのノードに「動作再開」メッセージを送る。 ノードがGRD再構築プロセス中に失敗すると、このノードは無視されるか、 または再構築プロセスが再び開始される。ディスクディレクトリ回復 GDDのページはネットワーク内の複数のノードによって格納されるため、ノ ードの故障に対してある程度の許容度が提供される。ノードが故障すると、故障 したノードによって格納されている永続性データおよびディレクトリページは、 続いての故障に生き残るために、再複製を行う必要がある。この再複製機能を行 うために使用されるメカニズムは2つある。第1のメカニズムは、通常のページ 活性化プロセスである。ページが活性化される毎に、一次コアホルダがチェック を行って、このページがコアホルダ数の最小しきい値より少なくないことを確実 にする。最小しきい値より少ない場合は、一次コアホルダは責任を持って新しい コアホルダを見つける。このメカニズムは要求駆動型である。すなわち、このメ カニズムによれば、ページは明白にアクセスされるときに再複製される。第2の メカニズムは、活動を非同期的にスケジュール化するバックグラウンド再複製器 を用いる。 ネットワーク内に存在するアンカーノードのうちの1つが、一次アンカーノー ド(PAN)として指名される。PANは、グローバルディスクディレクトリ( GDD)ルートページの一次コピーを維持する。PANは動的に任命される。P ANが故障の場合にPANになるようにアンカーノード同志が調停し得るか、ま たはPANとして働き得る一連のノードをリストアップする構成ファイルが提供 され得る。いずれの場合においても、定数は依然として存在しなければならない 。PANではないアンカーノードは、再複製プロセスに関しては非アンカーノー ドと同じように振る舞う。 非同期のGDD回復を提供するためには、PANはバックグラウンド再複製プ ロセスを維持および制御する。PANは、他のノードが最小コアホルダしきい値 より少ないGDDページを検出するとき送られる他のノードからの通知を受け取 る。これらのGDDページは、典型的には、通常のディレクトリ横断(traversal )動作中に検出される。PANは上述のようにページを活性化することにより再 複製を行う。 ノードは、しきい値より少ない数のコアホルダを有するGDDページに遭遇す ると、このGDDページに関する状態を維持する。このようなページに遭遇する と、ノードはPANにページを再複製するように通知し、次にPANを監視する 。再複製中にPANが故障すると、ノードは他のアンカーノードが新しいPAN を選択するのを(または構成ファイルから新しいPANが任命されるまで)待ち 、新しいPANに再複製要求を伝送する。このプロセスでは、ノード状態を監視 す るために通信サブシステムが利用される。ノード状態はまた、利用可能なディス クスペースなどのリソース制約により不完全であった再複製動作を再び開始する ためにも使用され得る。 様々な形態のネットワークの隙間により、ノードセットが、個別の集合体に分 断される結果となり得る。これが生じると、ページの複製コピーは集合体間で分 断され得る。すなわち、あるページのための1つのコアホルダがネットワーク内 に存在する一方で、別のコアホルダが集合体内に含まれることになる。データお よびディレクトリページへの書き込みアクセスには、オリジナルのアンカーノー ドセットの過半数である定数セットが必要とされる。従って、定数セット内では ないノードの集合体は、データページを供給し得るが、これらに書き込みを行う ことはできない。この定数でない場合にページを改変することができないという 特性は、アンカーノードに、定数が失われるとGDDルートページへの改変を許 可しないようにさせることによって実施される。ノードがそのコアホルダのすべ てにアクセスしないでページを改変しようと企てる場合は、先ずコアコピーホル ダーセットを改変しようと企てるであろうが、これにはそのページのGDDペー ジを改変する必要がある。このGDDページへの書き込みは、それ自体、そのコ アコピーセットを格納するGDDへの権利を必要となり得、最終的には、ノード はGDDルートページを改変しようと企てるであろう。この動作はアンカーノー ドによって失敗させられるため、通常のデータページへのオリジナルな書き込み は失敗し得る。アンカーノードがこのGDDルートページに定数を実施すること により、分断されたネットワークの存在下でのデータ崩壊が防止される。ファイルシステム回復 ノード故障の別の結果としては、ファイルシステムメタデータ不一致の発生が ある。ファイルシステムメタデータ不一致は、(1)ページの割り当てまたは割 り当て解除中の故障により生じる、割り当てられたページのファイルシステム表 示と、割り当てられたまたは割り当て解除されたページのグローバルディスクデ ィレクトリ(GDD)との間の不一致、(2)ファイルIノード中に含まれる間 違ったファイル属性、(3)複数のディスクブロックにわたる更新(ディレクト リ更新およびファイルセット動作)などの、更新を記録するために複数のフラッ シュ動作を必要とするトランザクション中の故障から生じるファイルシステムか らの不一致ページ、(4)単一ページおよび複数ページ更新の失敗から生じるI ノードディレクトリエラー、(5)同期プロセス中の故障から生じる、Iノード 内に格納されているファイル属性と、ファイルのIノードおよびファイルのディ レクトリエントリ内に格納されているファイル属性との間の不一致を含む、多数 の形態をとる。 GDD更新を含むファイルシステムトランザクションは、割り当て動作、割り 当て解除動作、および非割り当て動作、すなわち、アドレススペースを保留にし ておく一方でディスクスペースを自由にする動作を含むトランザクションである 。これらのトランザクションは、割り当てられているページの状態がファイルシ ステムメタデータ構造内で更新されることを必要とし、またGDD割り当て、割 り当て解除、または非割り当て機能の呼び出しを必要とする。これらの機能をフ ァイルシステムがノード故障から回復するのを可能にするように行うためには、 ファイルシステムページは、ページが割り当てられるとGDDに伝送される回復 処理と関連付けられなければならない。回復処理は、ファイルシステム対象物識 別コードなどのページを独自に識別する任意の識別エンティティである。 ファイルシステムは、ファイルシステムに従って行われる特定のページの割り 当ての現在の状態を決定するためにGDDによって呼び出され得るコールバック ルーチンを提供する。ページの割り当てに対しては、ファイルシステムは、トラ ンザクションを企てる前に、GDD割り当て機能を呼び出さなければならない。 GDD割り当てが成功裏に完了すると、ファイルシステムはその割り当て状態を 永久に記録し得る。トランザクションの完了が失敗する場合は、GDDはファイ ルシステムが認識しないページを割り当てているかも知れない。 ページの割り当て解除または非割り当てに対しては、ファイルシステムは、ペ ージの割り当て解除または非割り当てを行うためにGDD機能を呼び出す前に、 割り当て解除または非割り当てを永久に記録(report)しなければならない。トラ ンザクションの完了が失敗する場合は、GDDはファイルシステムが認識しない ファイルシステムページで終了し得る。 GDDは、ファイルシステム対象物IDに関連するページを認証するためにフ ァイルシステムを呼び出し得る。GDDは、GDDが感知する割り当て状態をフ アイルシステムに渡す。ファイルシステムは、そのメタデータ構造を検索して、 ページを識別し、GDDに同意しない場合のみGDDに返答する。 ファイルIノードの更新は、ファイルのIノードに含まれるメタデータ情報を 更新することを要求する。これらの属性は、ファイルのタイムスタンプ、ファイ ルのフラグ、およびエンド・オブ・ファイルマークを含み得る。属性は、様々な セットファイル属性動作によって直接更新されてもよく、あるいはタイムスタン プの場合のように、他のファイルシステム動作の一部として間接的に設定されて もよい。Iノードはディスクブロックにはまたがらないので、すなわちIノード は単一のページを占めるので、更新は完全に成功するか完全に失敗するかのどち らかである。従って、ファイルシステムはファイルシステムのメタデータ中の不 一致性を検出しない。これはファイルサイズの更新にも当てはまる。なぜなら、 一次ストリームのファイルサイズはファイルIノードおよびデータストリーム記 述子の両方に格納されているが、これらのメタデータ構造は両方とも、同じディ スクブロック中の同じページ上に存在するからである。 複数ページにまたがるファイルシステムメタデータ更新は、ファイルまたはデ ィレクトリ作成、ファイルまたはディレクトリ削除、およびファイルまたはディ レクトリのリネーム、ファイルセット更新(例えば作成または削除、あるいはス ーパールート(super root)更新または作成)などの、ディレクトリエントリ更新 を含む。これらの複数ページメタデータ更新のそれぞれは、トランザクション中 のノード故障に弱く、それぞれ特定の方法で取り扱われなければならない。 ディレクトリエントリの挿入および削除は、複数のページに関与する複数のフ ラッシュを必要とし得る。ディレクトリエントリ上の分布に応じて、ファイルの 追加または削除は、エントリを含むページ、リスト中の前のエントリおよび次の エントリを含むページ、およびネームハッシュテーブルを含むIノードページに 影響し得る。ディレクトリエントリの挿入の場合、存在するディレクトリのペー ジ中に空いたスロットが見つからなければ、新しいエントリページが割り当てら れる。 ディレクトリエントリを挿入または削除するトランザクションは、まず、ディ レクトリIノードに、処理のタイプによってマーク付けしなければならない。マ ークは、作成、作成_ディレクトリ、リネーム、リネームターゲット、および削 除を含み得る。挿入または除去されるファイルのIノードナンバーも、ディレク トリIノードに格納される。次にディレクトリIノードをフラッシュする。これ は更新処理の開始を意味(mark)する。 ディレクトリIノードがフラッシュされると、ソートおよびハッシュリスト中 の前のエントリおよび次のエントリを含むページならびにハッシュテーブルIノ ードページとともに、エントリ変更によってディレクトリを更新する。これらは 並列におこり得る。次にディレクトリIノード中の処理マークを消去し、Iノー ドを書き出す。これは処理の終了を意味する。処理マークを有するディレクトリ Iノードページは、そのディレクトリが不完全な処理のターゲットであったこと を示しており、そのディレクトリは回復されなければならない。ファイルシステ ムは、個々のディレクトリを確認して修復する機能を呼び出すことにより、ディ レクトリIノードページを回復する。これらの機能は、壊れたソート/ハッシュ リンク化リスト、不一致空きブロックリンク化リスト、あるいは不正なハッシュ テーブルバケットエントリなどの、ディレクトリ中に見いだされたいかなる不一 致もチェックして修復しなければならない。この機能がディレクトリの修復に失 敗した場合、ディレクトリは不正(corrupt)としてマークされなければならず、 このディレクトリに対する将来のアクセスは禁止されなければならない。そうで ない場合は、処理マークからファイルエントリIノードナンバーを抽出し、Iノ ードに対する接続性を確認する。確認が終われば、ディレクトリIノード中の処 理マークを消去し、ディレクトリIノードページをフラッシュする。これは回復 の終了を意味する。 ファイル作成およびディレクトリ作成は、新しいIノードページの割り当てを 包含し、ディレクトリの場合には、第1のディレクトリエントリページの割り当 ておよび、新しいファイルまたはディレクトリを後に親ディレクトリに挿入する ことを包含する。ファイルシステムは、新しいIノードを返すIノードディレク トリ機能をまず呼び出すことによって、ファイルまたはディレクトリ作成を実行 する。処理を親ディレクトリIノード中でマークし、フラッシュする。全てのデ ータ構造更新は、この処理マーク下において行われる。これらの更新がフラッシ ュされると、ディレクトリIノード中の処理マークを消去する。 親Iノード(すなわち親ディレクトリのIノード)中で見つかった処理マーク は、処理中にノード故障が起こったことを示している。故障したファイルまたは ディレクトリ作成処理から回復するために、親ディレクトリIノードに含まれる 処理マークを用いてファイルまたはディレクトリIノードを探す。親ディレクト リは、上述と同様な方法で回復されるが、親Iノード処理マークは直ちには消去 されない。親ディレクトリを修復することが可能あるいは不一致性を有しており 、処理マークから新しいファイルIノードまたは新しいディレクトリIノードが 明らかであれば、親Iノード中の処理マークを消去し、フラッシュする。この場 合、処理は完了である。そうでない場合は、ファイルシステムは処理を取り消さ なければならない。 処理を取り消すためには、ファイルシステムは、処理がディレクトリ作成処理 であるかファイル作成処理であるかを決定しなければならない。失敗した処理が ディレクトリ作成であり、ファイルシステムがIノードページ中にディレクトリ エントリページに対するポインタを有していれば、単にディレクトリエントリペ ージを割り当て解除すればよい。そうでなければ、ファイルシステムはIノード を自由にするIノードディレクトリ機能を呼び出し、エントリが作成されていれ ば親ディレクトリからエントリを除去し、そして親Iノードから処理マークを消 去してフラッシュしなければならない。 ファイル削除およびディレクトリ削除は2つの段階(phase)で行われる。簡単 に概観すると、ファイルまたはディレクトリをまず削除マーク付けし、そのエン トリを親ディレクトリから除去する。その後、そのファイルまたはディレクトリ に対する全てのオープンハンドルが閉じられたときに、物理的に削除される。 失敗したファイル削除処理またはディレクトリ削除処理から回復するためには 、ファイルシステムは、削除マーク段階において、ファイルIノードまたはディ レクトリIノードに処理マークを設定することによりそれが削除されることを示 さなければならない。次にIノードをフラッシュする。次に上述の一般的方法を 用 いてファイルエントリまたはディレクトリエントリを親ディレクトリから除去す る。親Iノードに設定された処理マークは、削除処理が起こっていることを表す 。そのファイルに対するディレクトリ探索はいまや失敗するため、新しいファイ ルハンドルを開くことはできない。しかし、存在するハンドルを用いてファイル またはディレクトリにアクセスし得る。 ファイルまたはディレクトリに対する全ての存在するハンドルが閉じられ、か つ処理のターゲットがディレクトリである場合、全てのディレクトリエントリペ ージを割り当て解除する。Iノードをゆっくりとローカルルックアサイド(lo okaside)リストに返す。性能およびスケーリング的な理由から、Iノー ドはグループ単位でグローバルプールから割り当てまたは割り当て解除される。 しかし、Iノードは単独で割り当ておよび割り当て解除される。もし親ディレク トリIノードまたはファイル/ディレクトリIノードが、不完全な削除処理を示 す処理マークを有した状態で見つかれば、その削除は回復されなければならない 。 しかし、もし親Iノードが削除処理マークを有していれば、親Iノード中の処 理マークを用いて削除中のファイル/ディレクトリのIノードを探さなければな らない。もしファイル/ディレクトリIノードが、削除のターゲットがディレク トリであることを示していれば、全てのディレクトリエントリページを割り当て 解除しなければならない。Iノードを後の処置のためローカルプールに戻す。フ ァイル/ディレクトリのエントリの除去が確認されれば、親Iノードの処理マー クを消去してもよく、親Iノードをフラッシュすることができる。このステップ により削除の回復が完了する。 リネーム動作は、新しいディレクトリへの挿入および古いディレクトリからの 削除を行うことによって実行される。ただし挿入および削除の両方が首尾よく完 了するまでは、挿入処理は消去されない。これによりシステムは、失敗までの進 行度合いに応じて、不成功なリネーム動作に出会ったときにそこから「退却」す るか、あるいはその失敗したリネーム動作を完了することが可能になる。 ファイルセット作成および削除はまた複数のページフラッシュを必要とするが 、これらは処理中のノード故障に弱い。ファイルセット作成は、新しいファイル セットページ、ファイルセットのIノードディレクトリ、およびルートディレク ト リの割り当ておよび初期化を包含する。失敗したファイルセット作成を回復する ためには、ファイルシステムは、ファイルセット、Iノードディレクトリ、およ びルートディレクトリを初期化するために必要なページを割り当てることから始 めなければならない。ルートディレクトリページには、ルートディレクトリを指 すファイルシステムオブジェクトIDが割り当てられ、ファイルセットの関連ペ ージはファイルセットIDのみによって初期化される。もしこの時点でノードが 失敗すれば、割り当てられたページは失われる。そしてスーパールートを更新す ることにより新しいファイルセットを記録する。このステップが成功すれば、フ ァイルセット作成処理は成功である。 ファイルセット削除動作は、ファイルセットページ、Iノードディレクトリ、 およびルートディレクトリを割り当て解除する。この処理は、ファイルセットを 削除処理のターゲットとしてマーク付けすることから始まる。ファイルセットペ ージをフラッシュし、ルートディレクトリを削除する。ルートディレクトリが削 除されれば全ての空きIノードを割り当て解除し、このステップを必要な回数だ け繰り返し得る。次にスーパールートを更新することによりスーパールートのフ ァイルセットの集合からファイルセットを除去する。この時点でノードが失敗す れば、ファイルページは失われるが、GDDコールバック機構を介して回復され 得る。ファイルセット削除は、ファイルセットページを削除することで完了する 。Iノードディレクトリは、ファイルセット中の全てのIノードを追跡するため に用いられる永続的なデータ構造の集合である。Iノードディレクトリを用いて 、ファイルシステムはファイルセット中のいかなるIノードも探し出すことが可 能である。Iノードディレクトリは、(1)空いているIノードリストおよび(2)I ノードビットマップの2つの主要要素を含む。 上記のように、ファイルシステムのもっとも重要な性能指標の1つであるディ レクトリ照会の性能を改善するために、ファイル属性はファイルIノードおよび そのディレクトリエントリにおいて複製される。いかなるファイル属性の変更も 両構造に伝播されなければならないため、ファイルまたはディレクトリを更新す るために必要なフラッシュの回数は2倍になり得る。Iノードページとディレク トリエントリページとの更新は別なため、これら2つの間に不一致が起こり得る 。 この不一致は、ディレクトリエントリ中のIノードに同期バージョンナンバーを 設けることにより、減少される。これら2つは同じ同期バージョンナンバーを有 していれば同期される。Iノードが更新されるときは必ず、その同期バージョン ナンバーをインクリメントする。そして、ディレクトリエントリページをロック し、Iノード中のファイル属性は同期バージョンナンバーを含めディレクトリエ ントリのコピーとなる。エントリページはまだフラッシュされないが、上述の方 法に基づいてIノードページをフラッシュする。もしこの時点でノードが故障し たならば、Iノード中のディレクトリエントリは互いに対して同期していない。 Iノードがフラッシュされると、エントリページも独立してフラッシュされる。 ファイルオープンまたはディレクトリオープン中において、Iノード同期バー ジョンをディレクトリエントリの同期バージョンと比較する。もしこれらが一致 しなければ、ディレクトリエントリはIノードエントリと同期しておらず、ディ レクトリエントリを更新しなければならない。 当業者には、請求の範囲に記載した通りの発明の趣旨および範囲から逸脱する ことなく、本明細書に説明した事項の変形、改変およびその他の実施が想起され るであろう。従って、本発明は上記の例示的な説明によって定義されるのではな く、以下の請求項の趣旨および範囲によって定義されるものである。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 08/848,967 (32)優先日 平成9年5月2日(1997.5.2) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(GH,KE,LS,MW,S D,SZ,UG,ZW),EA(AM,AZ,BY,KG ,KZ,MD,RU,TJ,TM),AL,AM,AT ,AU,AZ,BA,BB,BG,BR,BY,CA, CH,CN,CU,CZ,DE,DK,EE,ES,F I,GB,GE,GH,HU,ID,IL,IS,JP ,KE,KG,KP,KR,KZ,LC,LK,LR, LS,LT,LU,LV,MD,MG,MK,MN,M W,MX,NO,NZ,PL,PT,RO,RU,SD ,SE,SG,SI,SK,SL,TJ,TM,TR, TT,UA,UG,UZ,VN,YU,ZW (72)発明者 ディターリッチ,ダニエル ジェイ. アメリカ合衆国 マサチューセッツ 01720,アクトン,セダー テラス 4 (72)発明者 フランク,スティーブン ジェイ. アメリカ合衆国 マサチューセッツ 01748,ホプキントン,ティファニー ト レイル 6 (72)発明者 フィリップス,ロバート エス. アメリカ合衆国マサチューセッツ 01506, ブルックフィールド,ピー.オー.ボック ス 601,シャーマン ストリート 5 (72)発明者 ウッズ,ジョン アメリカ合衆国 マサチューセッツ 01719,ボックスボロー,マサチューセッ ツ アベニュー 958 (72)発明者 ポーター,デイビッド アメリカ合衆国 マサチューセッツ 01460,リトルトン,アップランド ロー ド 2 (72)発明者 リー,シン エイチ. アメリカ合衆国 マサチューセッツ 01720,アクトン,フランシン ロード 7

Claims (1)

  1. 【特許請求の範囲】 1.データに対する分散制御を提供するシステムにおいて、ノード故障後に動作 を継続する方法であって、 (a)接続状態情報を定期的に交換する、ネットワークによって相互接続され た複数のノードを提供するステップと、 (b)データを操作するためのデータ制御プログラムのインスタンスを各ノー ドに格納し、これにより、複数の分散されたデータ制御プログラムのインスタン スを提供するステップと、 (c)該相互接続されたノード上に分散ストレージを提供するとともにアドレ シング可能な持続性データストレージを提供する分散共有メモリシステムに対し て該データ制御プログラムの各インスタンスをインターフェースさせるステップ と、 (d)該データ制御プログラムの各インスタンスを操作して、その中にデータ を収容したメモリ装置として該共有メモリシステムを採用するステップであって 、それによって、該共有メモリシステムが、1つよりも多いネットワークノード 間に分散された複数コピーの持続性データを維持するステップと、 (e)該交換される接続状態情報から、あるノードの故障を決定するステップ と、 (f)該故障ノードが関与した、該データの一部を決定するステップと、 (g)生き残りノードをホストとする持続性ストレージ内に、該故障ノードが 関与した該データの該一部のコピーを格納するステップと、 を包含する方法。 2.前記ステップ(a)は、 (a−a)ネットワークによって相互接続される複数のノードを提供するステ ップと、 (a−b)該相互接続される複数のノードからハートビートモニタ(heartbeat monitor)ノードを指定するステップと、 を包含し、 該複数のノードは該ハートビートモニタノードに定期的に情報を伝達し、該ハ ートビートモニタノードは該複数のノードに定期的に情報を一斉送信する、 請求項1に記載の方法。 3.前記ステップ(a)は、 (a−a)ネットワークによって相互接続される複数のノードを提供するステ ップであって、該ノードは階層的ノードグループに組織化されている、ステップ と、 (a−b)各ノードグループについてハートビートモニタノードを指定するス テップと、 を包含し、 あるグループ内の各ノードは該グループの該ハートビートモニタノードに定期 的に情報を伝達し、各ハートビートモニタノードはそのグループに属するノード に定期的に情報を一斉送信し、該複数のハートビートモニタノードは情報を交換 する、 請求項1に記載の方法。 4.前記ステップ(e)は、あるノードの故障を、該ノードからの交換情報の不 在から決定するステップを包含する、請求項2に記載の方法。 5.前記ステップ(d)は、前記データ制御プログラムの各インスタンスを操作 して、その中にデータを収容したメモリ装置として前記共有メモリシステムを採 用するステップであって、該共有メモリシステムは、ディレクトリを使用して各 ノードに関連する揮発性メモリ素子内に格納されたデータへのアクセスを調整す るとともに、1つよりも多いネットワークノード間に分散された複数コピーの持 続性データを維持するステップを包含する、請求項1に記載の方法。 6.前記ステップ(f)は、 (f−a)前記故障ノードが該故障ノードに関連する揮発性メモリ素子内に格 納していた前記データの一部を決定するステップと、 (f−b)該故障ノードが該故障ノードに関連する持続性メモリ素子内に格納 していた該データの一部を決定するステップと、 をさらに包含する、請求項5に記載の方法。 7.前記ステップ(g)は、前記揮発性メモリディレクトリを再構築するステッ プを包含する、請求項5に記載の方法。 8.データに対する分散制御を提供するシステムにおいて、ノード故障後に動作 を継続する方法であって、 (a)接続状態情報を定期的に交換する、ネットワークによって相互接続され た複数のノードを提供するステップと、 (b)データを操作するためのデータ制御プログラムのインスタンスを各ノー ドに格納し、これにより、複数の分散されたデータ制御プログラムのインスタン スを提供するステップと、 (c)該相互接続されたノード上に分散ストレージを提供するとともにアドレ シング可能な持続性データストレージを提供するグローバルにアドレシング可能 なデータ格納部に対して該データ制御プログラムの各インスタンスをインターフ ェースさせるステップと、 (d)該データ制御プログラムの各インスタンスを操作して、その中にデータ を収容したメモリ装置として該グローバルにアドレシング可能なデータ格納部を 採用するステップであって、それによって、該グローバルにアドレシング可能な データ格納部が、1つよりも多いネットワークノード間に分散された複数コピー の持続性データを維持するステップと、 (e)該交換される接続状態情報から、あるノードの故障を決定するステップ と、 (f)該故障ノードが関与した、該データの一部を決定するステップと、 (g)生き残りノードをホストとする持続性ストレージ内に、該故障ノードが 関与した該データの該一部のコピーを格納するステップと、 を包含する方法。 9.前記ステップ(a)は、 (a−a)ネットワークによって相互接続される複数のノードを提供するステ ップと、 (a−b)該相互接続される複数のノードからハートビートモニタノードを指 定するステップと、 を包含し、 該複数のノードは該ハートビートモニタノードに定期的に情報を伝達し、該ハ ートビートモニタノードは該複数のノードに定期的に情報を一斉送信する、 請求項8に記載の方法。 10.前記ステップ(a)は、 (a−a)ネットワークによって相互接続される複数のノードを提供するステ ップであって、該ノードは階層的ノードグループに組織化されている、ステップ と、 (a−b)各ノードグループについてハートビートモニタノードを指定するス テップと、 をさらに包含し、 あるグループ内の各ノードは該グループの該ハートビートモニタノードに定期 的に情報を伝達し、各ハートビートモニタノードはそのグループに属するノード に定期的に情報を一斉送信し、該複数のハートビートモニタノードは情報を交換 する、 請求項8に記載の方法。 11.前記ステップ(e)は、あるノードの故障を、該ノードからの交換情報の 不在から決定するステップを包含する、請求項9に記載の方法。 12.前記ステップ(d)は、前記データ制御プログラムの各インスタンスを操 作して、その中にデータを収容したメモリ装置として前記グローバルにアドレシ ング可能なデータ格納部を採用するステップであって、該グローバルにアドレシ ング可能なデータ格納部は、ディレクトリを使用して各ノードに関連する揮発性 メモリ素子内に格納されたデータへのアクセスを調整するとともに、1つよりも 多いネットワークノード間に分散された複数コピーの持続性データを維持するス テップを包含する、請求項8に記載の方法。 13.前記ステップ(f)は、 (f−a)前記故障ノードが該故障ノードに関連する揮発性メモリ素子内に格 納していた前記データの一部を決定するステップと、 (f−b)該故障ノードが該故障ノードに関連する持続性メモリ素子内に格納 していた該データの一部を決定するステップと、 をさらに包含する、請求項12に記載の方法。 14.前記ステップ(g)は、前記揮発性メモリディレクトリを再構築するステ ップを包含する、請求項12に記載の方法。
JP52399698A 1996-11-22 1997-11-21 グローバルアドレシング可能なメモリを用いた高度に利用可能なデータ記憶装置を提供するためのシステムおよび方法 Ceased JP2001504616A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US08/754,481 US6148377A (en) 1996-11-22 1996-11-22 Shared memory computer networks
US08/827,534 US5918229A (en) 1996-11-22 1997-03-28 Structured data storage using globally addressable memory
US08/848,967 1997-05-02
US08/848,967 US5909540A (en) 1996-11-22 1997-05-02 System and method for providing highly available data storage using globally addressable memory
US08/754,481 1997-05-02
US08/827,534 1997-05-02
PCT/US1997/021734 WO1998022876A1 (en) 1996-11-22 1997-11-21 System and method for providing highly available data storage using globally addressable memory

Publications (1)

Publication Number Publication Date
JP2001504616A true JP2001504616A (ja) 2001-04-03

Family

ID=56289762

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52399698A Ceased JP2001504616A (ja) 1996-11-22 1997-11-21 グローバルアドレシング可能なメモリを用いた高度に利用可能なデータ記憶装置を提供するためのシステムおよび方法

Country Status (7)

Country Link
US (1) US5909540A (ja)
EP (1) EP1008047B1 (ja)
JP (1) JP2001504616A (ja)
AT (1) ATE249640T1 (ja)
AU (1) AU5461198A (ja)
DE (1) DE69724834T2 (ja)
WO (1) WO1998022876A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102571197B1 (ko) * 2022-12-07 2023-08-30 성균관대학교산학협력단 클러스터 파일시스템의 캐시 일관성 유지방법

Families Citing this family (326)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987506A (en) * 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US6192514B1 (en) * 1997-02-19 2001-02-20 Unisys Corporation Multicomputer system
US6151683A (en) * 1997-03-31 2000-11-21 Sun Microsystems, Inc. Rebuilding computer states remotely
US6170045B1 (en) * 1997-04-30 2001-01-02 International Business Machines Corporation Cross-system data piping using an external shared memory
US6035326A (en) * 1997-05-07 2000-03-07 International Business Machines Corporation Mapping table lookup optimization system
US6182249B1 (en) 1997-05-12 2001-01-30 Sun Microsystems, Inc. Remote alert monitoring and trend analysis
US6154128A (en) * 1997-05-21 2000-11-28 Sun Microsystems, Inc. Automatic building and distribution of alerts in a remote monitoring system
US6026472A (en) * 1997-06-24 2000-02-15 Intel Corporation Method and apparatus for determining memory page access information in a non-uniform memory access computer system
US6163806A (en) * 1997-06-30 2000-12-19 Sun Microsystems, Inc. System and method for transparent, global access to physical devices on a computer cluster
US6886162B1 (en) * 1997-08-29 2005-04-26 International Business Machines Corporation High speed methods for maintaining a summary of thread activity for multiprocessor computer systems
US6289424B1 (en) 1997-09-19 2001-09-11 Silicon Graphics, Inc. Method, system and computer program product for managing memory in a non-uniform memory access system
US6249802B1 (en) * 1997-09-19 2001-06-19 Silicon Graphics, Inc. Method, system, and computer program product for allocating physical memory in a distributed shared memory network
US6070174A (en) * 1997-09-30 2000-05-30 Infraworks Corporation Method and apparatus for real-time secure file deletion
US6092213A (en) * 1997-09-30 2000-07-18 Tandem Computers Incorporated Fault tolerant method of maintaining and distributing configuration information in a distributed processing system
US6279032B1 (en) * 1997-11-03 2001-08-21 Microsoft Corporation Method and system for quorum resource arbitration in a server cluster
US6460071B1 (en) * 1997-11-21 2002-10-01 International Business Machines Corporation System and method for managing client application state in a stateless web browser environment
US6098179A (en) * 1998-01-22 2000-08-01 Digital Equipment Corporation Method and apparatus for performing error detection
US6230246B1 (en) * 1998-01-30 2001-05-08 Compaq Computer Corporation Non-intrusive crash consistent copying in distributed storage systems without client cooperation
US6567774B1 (en) * 1998-01-30 2003-05-20 Compaq Computer Corporation Method and system for configuring and updating networked client stations using a virtual disk and a snapshot disk
US6697846B1 (en) * 1998-03-20 2004-02-24 Dataplow, Inc. Shared file system
US6330709B1 (en) * 1998-03-30 2001-12-11 International Business Machines Corporation Virtual machine implementation for shared persistent objects
US6094663A (en) * 1998-03-31 2000-07-25 Apple Computer, Inc. Method and apparatus for implementing atomic queues
US6289358B1 (en) 1998-04-15 2001-09-11 Inktomi Corporation Delivering alternate versions of objects from an object cache
US6128627A (en) * 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
US6128623A (en) 1998-04-15 2000-10-03 Inktomi Corporation High performance object cache
US6202124B1 (en) * 1998-05-05 2001-03-13 International Business Machines Corporation Data storage system with outboard physical data transfer operation utilizing data path distinct from host
US6161191A (en) * 1998-05-12 2000-12-12 Sun Microsystems, Inc. Mechanism for reliable update of virtual disk device mappings without corrupting data
US6173413B1 (en) * 1998-05-12 2001-01-09 Sun Microsystems, Inc. Mechanism for maintaining constant permissions for multiple instances of a device within a cluster
US6237114B1 (en) 1998-05-13 2001-05-22 Sun Microsystems, Inc. System and method for evaluating monitored computer systems
US6163856A (en) * 1998-05-29 2000-12-19 Sun Microsystems, Inc. Method and apparatus for file system disaster recovery
FR2780589B1 (fr) * 1998-06-30 2000-12-01 Bull Sa Agent de communication entre un administrateur de systeme informatique et un systeme de ressources distribuees et outils de creation d'un tel agent
US7392234B2 (en) * 1999-05-18 2008-06-24 Kom, Inc. Method and system for electronic file lifecycle management
US9361243B2 (en) 1998-07-31 2016-06-07 Kom Networks Inc. Method and system for providing restricted access to a storage medium
US6330567B1 (en) * 1998-08-13 2001-12-11 Tornado Technologies Co., Ltd Searching system for searching files stored in a hard disk of a personal computer
US6405217B1 (en) * 1998-09-21 2002-06-11 Microsoft Corporation State-based implementation of transactions on a file system
US6144970A (en) * 1998-09-24 2000-11-07 International Business Machines Corporation Technique for inplace reorganization of a LOB table space
US6263433B1 (en) * 1998-09-30 2001-07-17 Ncr Corporation Provision of continuous database service and scalable query performance using active redundant copies
US6202149B1 (en) 1998-09-30 2001-03-13 Ncr Corporation Automated application fail-over for coordinating applications with DBMS availability
US6178519B1 (en) * 1998-12-10 2001-01-23 Mci Worldcom, Inc. Cluster-wide database system
US6389551B1 (en) * 1998-12-17 2002-05-14 Steeleye Technology, Inc. Method of preventing false or unnecessary failovers in a high availability cluster by using a quorum service
US6434626B1 (en) * 1999-01-14 2002-08-13 Compaq Information Technologies Group, L.P. Method and apparatus for low latency network performance monitoring
US7774315B1 (en) * 1999-03-12 2010-08-10 Eldad Galker Backup system
US6453426B1 (en) 1999-03-26 2002-09-17 Microsoft Corporation Separately storing core boot data and cluster configuration data in a server cluster
US7774469B2 (en) * 1999-03-26 2010-08-10 Massa Michael T Consistent cluster operational data in a server cluster using a quorum of replicas
US6401120B1 (en) 1999-03-26 2002-06-04 Microsoft Corporation Method and system for consistent cluster operational data in a server cluster using a quorum of replicas
US6222529B1 (en) 1999-05-05 2001-04-24 Shareware, Inc. Method and apparatus for providing multiple sessions on a single user operating system
US6505382B1 (en) 1999-05-14 2003-01-14 Apple Computer, Inc. Hinge apparatus with cam mechanism
US6760756B1 (en) * 1999-06-23 2004-07-06 Mangosoft Corporation Distributed virtual web cache implemented entirely in software
US6615253B1 (en) 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6601192B1 (en) 1999-08-31 2003-07-29 Accenture Llp Assertion component in environment services patterns
US6954220B1 (en) 1999-08-31 2005-10-11 Accenture Llp User context component in environment services patterns
US6640249B1 (en) 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US6842906B1 (en) 1999-08-31 2005-01-11 Accenture Llp System and method for a refreshable proxy pool in a communication services patterns environment
US6640238B1 (en) 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US6601234B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6742015B1 (en) 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
US6571282B1 (en) 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US6578068B1 (en) 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
US6715145B1 (en) 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US6549949B1 (en) 1999-08-31 2003-04-15 Accenture Llp Fixed format stream in a communication services patterns environment
US7289964B1 (en) 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US6640244B1 (en) 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6609215B1 (en) 1999-10-21 2003-08-19 International Business Machines Corporation Method and system for implementing network filesystem-based customized computer system automated rebuild tool
US6516325B1 (en) * 1999-11-16 2003-02-04 Novell, Inc. Virtual partition vector for a computer directory system
US6662219B1 (en) 1999-12-15 2003-12-09 Microsoft Corporation System for determining at subgroup of nodes relative weight to represent cluster by obtaining exclusive possession of quorum resource
US6658589B1 (en) * 1999-12-20 2003-12-02 Emc Corporation System and method for backup a parallel server data storage system
AU2620201A (en) * 1999-12-21 2001-07-03 Intel Corporation Architecture for dynamically exposing hardware capabilities using a page description language
US6748429B1 (en) 2000-01-10 2004-06-08 Sun Microsystems, Inc. Method to dynamically change cluster or distributed system configuration
US6862613B1 (en) 2000-01-10 2005-03-01 Sun Microsystems, Inc. Method and apparatus for managing operations of clustered computer systems
US6789213B2 (en) * 2000-01-10 2004-09-07 Sun Microsystems, Inc. Controlled take over of services by remaining nodes of clustered computing system
US6757836B1 (en) 2000-01-10 2004-06-29 Sun Microsystems, Inc. Method and apparatus for resolving partial connectivity in a clustered computing system
US6658587B1 (en) 2000-01-10 2003-12-02 Sun Microsystems, Inc. Emulation of persistent group reservations
US6769008B1 (en) 2000-01-10 2004-07-27 Sun Microsystems, Inc. Method and apparatus for dynamically altering configurations of clustered computer systems
GB0002019D0 (en) * 2000-01-29 2000-03-22 Ibm Data migration tool
US20010047348A1 (en) * 2000-02-01 2001-11-29 Lemuel Davis Consumer driven content media duplication system
DE10006206A1 (de) * 2000-02-11 2001-08-30 Daimler Chrysler Ag Elektronisches Steuersystem
US6826711B2 (en) 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US20010044879A1 (en) * 2000-02-18 2001-11-22 Moulton Gregory Hagan System and method for distributed management of data storage
US7509420B2 (en) * 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
US20010027467A1 (en) * 2000-03-30 2001-10-04 Anderson David P. Massively distributed database system and associated method
US20090222508A1 (en) * 2000-03-30 2009-09-03 Hubbard Edward A Network Site Testing
US7082474B1 (en) 2000-03-30 2006-07-25 United Devices, Inc. Data sharing and file distribution method and associated distributed processing system
US7003547B1 (en) 2000-03-30 2006-02-21 United Devices, Inc. Distributed parallel processing system having capability-based incentives and associated method
US20010039497A1 (en) * 2000-03-30 2001-11-08 Hubbard Edward A. System and method for monitizing network connected user bases utilizing distributed processing systems
US6891802B1 (en) 2000-03-30 2005-05-10 United Devices, Inc. Network site testing method and associated system
US8010703B2 (en) * 2000-03-30 2011-08-30 Prashtama Wireless Llc Data conversion services and associated distributed processing system
US6654783B1 (en) 2000-03-30 2003-11-25 Ethergent Corporation Network site content indexing method and associated system
US7020678B1 (en) 2000-03-30 2006-03-28 United Devices, Inc. Machine generated sweepstakes entry model and associated distributed processing system
US20040148336A1 (en) * 2000-03-30 2004-07-29 Hubbard Edward A Massively distributed processing system architecture, scheduling, unique device identification and associated methods
US20090216641A1 (en) 2000-03-30 2009-08-27 Niration Network Group, L.L.C. Methods and Systems for Indexing Content
US7254607B2 (en) * 2000-03-30 2007-08-07 United Devices, Inc. Dynamic coordination and control of network connected devices for large-scale network site testing and associated architectures
US6847995B1 (en) 2000-03-30 2005-01-25 United Devices, Inc. Security architecture for distributed processing systems and associated method
USRE42153E1 (en) * 2000-03-30 2011-02-15 Hubbard Edward A Dynamic coordination and control of network connected devices for large-scale network site testing and associated architectures
US6963897B1 (en) 2000-03-30 2005-11-08 United Devices, Inc. Customer services and advertising based upon device attributes and associated distributed processing system
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US20040103139A1 (en) * 2000-03-30 2004-05-27 United Devices, Inc. Distributed processing system having sensor based data collection and associated method
US7039670B2 (en) * 2000-03-30 2006-05-02 United Devices, Inc. Massively distributed processing system with modular client agent and associated method
US7092985B2 (en) * 2000-03-30 2006-08-15 United Devices, Inc. Method of managing workloads and associated distributed processing system
US20020055972A1 (en) * 2000-05-08 2002-05-09 Weinman Joseph Bernard Dynamic content distribution and data continuity architecture
US6873987B1 (en) * 2000-05-31 2005-03-29 International Business Machines Corporation Method, system and program products for recovering from failures within a shared nothing distributed computing environment
JP2003536195A (ja) * 2000-06-09 2003-12-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 記憶メディアで利用可能なメモリ領域を暗黙に分割する方法
US6574748B1 (en) * 2000-06-16 2003-06-03 Bull Hn Information Systems Inc. Fast relief swapping of processors in a data processing system
FI115674B (fi) * 2000-06-30 2005-06-15 Nokia Corp Menetelmä ja järjestelmä merkintäkielipohjaisten sivujen esittämiseksi kannettavissa laitteissa
US6980313B2 (en) * 2000-07-11 2005-12-27 Imran Sharif Fax-compatible internet appliance
US7245291B2 (en) 2000-07-11 2007-07-17 Imran Sharif System and method for internet appliance data entry and navigation
US20030115167A1 (en) * 2000-07-11 2003-06-19 Imran Sharif Web browser implemented in an Internet appliance
US20020078445A1 (en) * 2000-07-11 2002-06-20 Imran Sharif Internet appliance for interactive audio/video display using a remote control unit for user input
US6928521B1 (en) 2000-08-01 2005-08-09 International Business Machines Corporation Method, system, and data structures for using metadata in updating data in a storage device
US20060288080A1 (en) * 2000-09-12 2006-12-21 Ibrix, Inc. Balanced computer architecture
US7406484B1 (en) 2000-09-12 2008-07-29 Tbrix, Inc. Storage allocation in a distributed segmented file system
US7836017B1 (en) 2000-09-12 2010-11-16 Hewlett-Packard Development Company, L.P. File replication in a distributed segmented file system
US8935307B1 (en) 2000-09-12 2015-01-13 Hewlett-Packard Development Company, L.P. Independent data access in a segmented file system
US6782389B1 (en) * 2000-09-12 2004-08-24 Ibrix, Inc. Distributing files across multiple, permissibly heterogeneous, storage devices
US20040236798A1 (en) * 2001-09-11 2004-11-25 Sudhir Srinivasan Migration of control in a distributed segmented file system
US6687716B1 (en) * 2000-09-13 2004-02-03 Radiant Data Corporation File consistency protocols and methods for carrying out the protocols
US6611848B1 (en) * 2000-09-13 2003-08-26 Radiant Data Corporation Methods for maintaining data and attribute coherency in instances of sharable files
US6633870B1 (en) * 2000-09-13 2003-10-14 Radiant Data Corporation Protocols for locking sharable files and methods for carrying out the protocols
US6978280B1 (en) * 2000-10-12 2005-12-20 Hewlett-Packard Development Company, L.P. Method and system for improving LUN-based backup reliability
US7165096B2 (en) * 2000-12-22 2007-01-16 Data Plow, Inc. Storage area network file system
US7047420B2 (en) * 2001-01-17 2006-05-16 Microsoft Corporation Exclusive encryption
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US20020174295A1 (en) * 2001-01-29 2002-11-21 Ulrich Thomas R. Enhanced file system failure tolerance
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
EP1370947A4 (en) * 2001-02-13 2009-05-27 Candera Inc STORAGE VIRTUALIZATION SERVER SILICON BASE
US6606690B2 (en) * 2001-02-20 2003-08-12 Hewlett-Packard Development Company, L.P. System and method for accessing a storage area network as network attached storage
US7089339B2 (en) 2001-03-16 2006-08-08 National Semiconductor Corporation Sharing of functions between an embedded controller and a host processor
US7043637B2 (en) * 2001-03-21 2006-05-09 Microsoft Corporation On-disk file format for a serverless distributed file system
US7478243B2 (en) * 2001-03-21 2009-01-13 Microsoft Corporation On-disk file format for serverless distributed file system with signed manifest of file modifications
US7062490B2 (en) * 2001-03-26 2006-06-13 Microsoft Corporation Serverless distributed file system
US6981138B2 (en) * 2001-03-26 2005-12-27 Microsoft Corporation Encrypted key cache
DE10127195A1 (de) * 2001-06-05 2002-12-19 Infineon Technologies Ag Prozessor mit interner Speicherkonfiguration
US6988124B2 (en) * 2001-06-06 2006-01-17 Microsoft Corporation Locating potentially identical objects across multiple computers based on stochastic partitioning of workload
US7310644B2 (en) * 2001-06-06 2007-12-18 Microsoft Corporation Locating potentially identical objects across multiple computers
US6889233B2 (en) * 2001-06-18 2005-05-03 Microsoft Corporation Selective file purging for delete or rename
US6714953B2 (en) * 2001-06-21 2004-03-30 International Business Machines Corporation System and method for managing file export information
US7194513B2 (en) * 2001-07-08 2007-03-20 Imran Sharif System and method for using an internet appliance to send/receive digital content files as E-mail attachments
US20030014523A1 (en) * 2001-07-13 2003-01-16 John Teloh Storage network data replicator
US9659292B1 (en) * 2001-08-30 2017-05-23 EMC IP Holding Company LLC Storage-based replication of e-commerce transactions in real time
US20040202013A1 (en) * 2001-09-21 2004-10-14 Polyserve, Inc. System and method for collaborative caching in a multinode system
US7277952B2 (en) * 2001-09-28 2007-10-02 Microsoft Corporation Distributed system resource protection via arbitration and ownership
US7430593B2 (en) * 2001-10-05 2008-09-30 International Business Machines Corporation Storage area network for topology rendering
US7287063B2 (en) * 2001-10-05 2007-10-23 International Business Machines Corporation Storage area network methods and apparatus using event notifications with data
EP1321865A3 (en) * 2001-12-19 2006-03-15 Alcatel Canada Inc. System and method for multiple-threaded access to a database
US7139885B2 (en) 2001-12-27 2006-11-21 Hitachi, Ltd. Method and apparatus for managing storage based replication
US7177868B2 (en) * 2002-01-02 2007-02-13 International Business Machines Corporation Method, system and program for direct client file access in a data management system
US6862668B2 (en) 2002-02-25 2005-03-01 International Business Machines Corporation Method and apparatus for using cache coherency locking to facilitate on-line volume expansion in a multi-controller storage system
US7480909B2 (en) 2002-02-25 2009-01-20 International Business Machines Corporation Method and apparatus for cooperative distributed task management in a storage subsystem with multiple controllers using cache locking
US7020665B2 (en) * 2002-03-07 2006-03-28 Microsoft Corporation File availability in distributed file storage systems
US7225204B2 (en) * 2002-03-19 2007-05-29 Network Appliance, Inc. System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping
CA2377649C (en) * 2002-03-20 2009-02-03 Ibm Canada Limited-Ibm Canada Limitee Dynamic cluster database architecture
KR100453228B1 (ko) * 2002-03-21 2004-10-15 한국전자통신연구원 공유 디스크 파일 시스템의 저널링 및 회복 방법
US7631066B1 (en) * 2002-03-25 2009-12-08 Symantec Operating Corporation System and method for preventing data corruption in computer system clusters
WO2003098447A1 (en) * 2002-04-29 2003-11-27 Meshnetworks, Inc. A system and method for creating a graphical view of a network from a node's perspective
JP2003330905A (ja) * 2002-05-14 2003-11-21 Nec Corp コンピュータシステム
US7249118B2 (en) * 2002-05-17 2007-07-24 Aleri, Inc. Database system and methods
US7484216B2 (en) * 2002-06-18 2009-01-27 Microsoft Corporation System and method for decoupling space reservation in transactional logging systems
US20040001476A1 (en) * 2002-06-24 2004-01-01 Nayeem Islam Mobile application environment
US6980994B2 (en) * 2002-07-08 2005-12-27 International Business Machines Corporation Method, apparatus and computer program product for mapping file handles
US6981004B2 (en) * 2002-09-16 2005-12-27 Oracle International Corporation Method and mechanism for implementing in-memory transaction logging records
US7239605B2 (en) * 2002-09-23 2007-07-03 Sun Microsystems, Inc. Item and method for performing a cluster topology self-healing process in a distributed data system cluster
US20040068523A1 (en) * 2002-10-07 2004-04-08 Keith Robert Olan Method and system for full asynchronous master-to-master file synchronization
US7444634B2 (en) * 2002-10-31 2008-10-28 Sun Microsystems, Inc. Method and apparatus for providing dynamic locks for global resources
US8041735B1 (en) * 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7225302B2 (en) * 2002-11-27 2007-05-29 Sap Ag Method and software application for avoiding data loss
US7430569B2 (en) * 2002-11-27 2008-09-30 Sap Ag Computerized replication of data objects
US7464091B2 (en) * 2002-11-27 2008-12-09 Sap Ag Method and software for processing data objects in business applications
US7409412B2 (en) 2002-11-27 2008-08-05 Sap Ag Data element and structure for data processing
US7689715B1 (en) * 2002-12-20 2010-03-30 Symantec Operating Corporation Method and system for implementing a global name space service
US7136885B2 (en) * 2002-12-20 2006-11-14 International Business Machines Corporation Free space management
US20040153841A1 (en) * 2003-01-16 2004-08-05 Silicon Graphics, Inc. Failure hierarchy in a cluster filesystem
US7823077B2 (en) * 2003-03-24 2010-10-26 Microsoft Corporation System and method for user modification of metadata in a shell browser
US7421438B2 (en) * 2004-04-29 2008-09-02 Microsoft Corporation Metadata editing control
US7627552B2 (en) 2003-03-27 2009-12-01 Microsoft Corporation System and method for filtering and organizing items based on common elements
US7712034B2 (en) 2003-03-24 2010-05-04 Microsoft Corporation System and method for shell browser
US7240292B2 (en) 2003-04-17 2007-07-03 Microsoft Corporation Virtual address bar user interface control
US7769794B2 (en) 2003-03-24 2010-08-03 Microsoft Corporation User interface for a file system shell
US7536386B2 (en) * 2003-03-27 2009-05-19 Microsoft Corporation System and method for sharing items in a computer system
US7650575B2 (en) 2003-03-27 2010-01-19 Microsoft Corporation Rich drag drop user interface
US7925682B2 (en) * 2003-03-27 2011-04-12 Microsoft Corporation System and method utilizing virtual folders
US7702659B2 (en) * 2003-03-27 2010-04-20 Sandisk Il Ltd. Robust, self-maintaining file system
JP4413518B2 (ja) 2003-04-16 2010-02-10 株式会社日立製作所 記憶デバイス制御装置、及び記憶デバイス制御装置の制御方法
US7996361B1 (en) * 2003-06-30 2011-08-09 Symantec Operating Corporation Method and system of providing replica files within a fileset
US7111188B2 (en) * 2003-07-31 2006-09-19 International Business Machines Corporation Dynamically configurable fault tolerance in autonomic computing with multiple service points
US20050044301A1 (en) * 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services
US20050080982A1 (en) * 2003-08-20 2005-04-14 Vasilevsky Alexander D. Virtual host bus adapter and method
US8776050B2 (en) * 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US7284147B2 (en) * 2003-08-27 2007-10-16 International Business Machines Corporation Reliable fault resolution in a cluster
US7284018B1 (en) * 2003-10-15 2007-10-16 Sun Microsystems, Inc. Logless transaction coordination
KR100662120B1 (ko) * 2003-10-20 2006-12-27 엘지전자 주식회사 홈 네트워킹에 의한 가전기기의 메모리 공용방법
US8024335B2 (en) 2004-05-03 2011-09-20 Microsoft Corporation System and method for dynamically generating a selectable search extension
US7647355B2 (en) * 2003-10-30 2010-01-12 International Business Machines Corporation Method and apparatus for increasing efficiency of data storage in a file system
JP4376040B2 (ja) * 2003-11-27 2009-12-02 株式会社日立製作所 複数のプロセッサを用いて情報処理を行う装置及び方法
US7107411B2 (en) * 2003-12-16 2006-09-12 International Business Machines Corporation Apparatus method and system for fault tolerant virtual memory management
US7272609B1 (en) * 2004-01-12 2007-09-18 Hyperion Solutions Corporation In a distributed hierarchical cache, using a dependency to determine if a version of the first member stored in a database matches the version of the first member returned
US7397770B2 (en) * 2004-02-20 2008-07-08 International Business Machines Corporation Checking and repairing a network configuration
KR100435985B1 (ko) * 2004-02-25 2004-06-12 엔에이치엔(주) 투표를 활용한 무정지 서비스 시스템 및 그 시스템에서의정보 갱신 및 제공 방법
US7647358B2 (en) * 2004-03-22 2010-01-12 Microsoft Corporation Computing device with relatively limited storage space and operating/file system thereof
US8069192B2 (en) * 2004-03-22 2011-11-29 Microsoft Corporation Computing device with relatively limited storage space and operating / file system thereof
US7694236B2 (en) 2004-04-23 2010-04-06 Microsoft Corporation Stack icons representing multiple objects
US7657846B2 (en) 2004-04-23 2010-02-02 Microsoft Corporation System and method for displaying stack icons
US8707209B2 (en) * 2004-04-29 2014-04-22 Microsoft Corporation Save preview representation of files being created
US7693880B1 (en) * 2004-05-06 2010-04-06 Symantec Operating Corporation Mirrored storage at the file system level
US7203871B2 (en) * 2004-06-03 2007-04-10 Cisco Technology, Inc. Arrangement in a network node for secure storage and retrieval of encoded data distributed among multiple network nodes
US7590706B2 (en) * 2004-06-04 2009-09-15 International Business Machines Corporation Method for communicating in a computing system
US20060004846A1 (en) * 2004-06-16 2006-01-05 Bmc Software, Inc. Low-overhead relational database backup and restore operations
US8069269B2 (en) * 2004-08-04 2011-11-29 Emc Corporation Methods and apparatus for accessing content in a virtual pool on a content addressable storage system
US8307026B2 (en) * 2004-08-19 2012-11-06 International Business Machines Corporation On-demand peer-to-peer storage virtualization infrastructure
US7499980B2 (en) * 2004-08-19 2009-03-03 International Business Machines Corporation System and method for an on-demand peer-to-peer storage virtualization infrastructure
US7908302B1 (en) * 2004-09-17 2011-03-15 Symantec Operating Corporation In-place splitting and merging of files
US7831642B1 (en) * 2004-09-30 2010-11-09 Symantec Operating Corporation Page cache management for a shared file
US7584220B2 (en) * 2004-10-01 2009-09-01 Microsoft Corporation System and method for determining target failback and target priority for a distributed file system
US20060080514A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Managing shared memory
US7600217B2 (en) * 2004-12-14 2009-10-06 Sap Ag Socket-like communication API for Java
US7593930B2 (en) * 2004-12-14 2009-09-22 Sap Ag Fast channel architecture
US7580915B2 (en) 2004-12-14 2009-08-25 Sap Ag Socket-like communication API for C
US7886294B2 (en) * 2004-12-28 2011-02-08 Sap Ag Virtual machine monitoring
US7552153B2 (en) * 2004-12-28 2009-06-23 Sap Ag Virtual machine monitoring using shared memory
US7562138B2 (en) * 2004-12-28 2009-07-14 Sap Shared memory based monitoring for application servers
US7689989B2 (en) 2004-12-28 2010-03-30 Sap Ag Thread monitoring using shared memory
US7614016B2 (en) 2005-04-21 2009-11-03 Microsoft Corporation Multiple roots in navigation pane
US8195646B2 (en) 2005-04-22 2012-06-05 Microsoft Corporation Systems, methods, and user interfaces for storing, searching, navigating, and retrieving electronic information
US7631016B2 (en) * 2005-05-04 2009-12-08 Oracle International Corporation Providing the latest version of a data item from an N-replica set
US7523273B2 (en) * 2005-05-05 2009-04-21 International Business Machines Corporation Autonomic storage provisioning to enhance storage virtualization infrastructure availability
US7665028B2 (en) 2005-07-13 2010-02-16 Microsoft Corporation Rich drag drop user interface
US20070022091A1 (en) * 2005-07-20 2007-01-25 Scriptlogic Corporation Access based file system directory enumeration
US7574461B1 (en) * 2005-12-28 2009-08-11 Emc Corporation Dividing data for multi-thread backup
US7693889B1 (en) 2005-12-28 2010-04-06 Emc Corporation Automated backup and recovery for content repository
JP4908849B2 (ja) * 2006-01-11 2012-04-04 富士通セミコンダクター株式会社 ファイル削除方法、ファイル・オープン方法、ファイル削除プログラム、および、ファイル・オープン・プログラム
US7925624B2 (en) * 2006-03-31 2011-04-12 Amazon Technologies, Inc. System and method for providing high availability data
US7720892B1 (en) * 2006-06-30 2010-05-18 Emc Corporation Bulk updates and tape synchronization
US8117155B2 (en) * 2006-06-30 2012-02-14 Microsoft Corporation Collection-based object replication
US7809828B2 (en) * 2007-04-11 2010-10-05 International Business Machines Corporation Method for maintaining state consistency among multiple state-driven file system entities when entities become disconnected
US9449047B2 (en) 2007-06-19 2016-09-20 Sybase, Inc. Dynamic modification of schemas in streaming databases
US9477560B2 (en) * 2007-07-31 2016-10-25 Lenovo (Singapore) Pte. Ltd. Methods of creating a voting stop point on a distributed network
US8745012B2 (en) 2007-08-10 2014-06-03 Sybase, Inc. Log-structured store for streaming data
US20090063807A1 (en) * 2007-08-29 2009-03-05 International Business Machines Corporation Data redistribution in shared nothing architecture
JP2010541100A (ja) * 2007-10-03 2010-12-24 スケールアウト ソフトウェア インコーポレイテッド 計算グリッド上に高可用性データ並列操作を実装する方法
US8074019B2 (en) * 2007-11-13 2011-12-06 Network Appliance, Inc. Preventing data loss in a storage system
US8301853B1 (en) * 2007-12-31 2012-10-30 Emc Corporation System and method for asynchronously mirroring data
WO2009087413A1 (en) * 2008-01-08 2009-07-16 Taptu Ltd. Data storage
US20090193346A1 (en) * 2008-01-30 2009-07-30 International Business Machines Corporation Apparatus and method to improve a graphical user interface
DE102008012979A1 (de) * 2008-03-06 2009-09-10 Gip Ag Verfahren und Programm zum Bereitstellen von Datenkohärenz in Netzwerken
US8607020B2 (en) * 2008-06-06 2013-12-10 International Business Machines Corporation Shared memory partition data processing system with hypervisor managed paging
JP5377898B2 (ja) * 2008-07-10 2013-12-25 株式会社日立製作所 クラスタリングを構成する計算機システムの系切替方法、及びシステム
US9361229B2 (en) * 2008-08-25 2016-06-07 International Business Machines Corporation Distributed shared caching for clustered file systems
US20100057985A1 (en) * 2008-08-27 2010-03-04 Hitachi, Ltd. System and method for allocating performance to data volumes on data storage systems and controlling performance of data volumes
US8171106B2 (en) * 2008-12-12 2012-05-01 International Business Machines Corporation Per file system usage of networks
US9251149B2 (en) * 2009-02-03 2016-02-02 Bmc Software, Inc. Data set size tracking and management
US8171134B2 (en) * 2009-03-18 2012-05-01 At&T Intellectual Property I, L.P. Methods and apparatus to characterize and predict network health status
US8024496B2 (en) 2009-04-10 2011-09-20 International Business Machines Corporation Enhanced memory migration descriptor format and method
US8090911B2 (en) 2009-04-16 2012-01-03 International Business Machines Corporation Selecting a target number of pages for allocation to a partition
US9807468B2 (en) * 2009-06-16 2017-10-31 Microsoft Technology Licensing, Llc Byte range caching
DE102009031923A1 (de) * 2009-07-07 2011-01-13 Sones Gmbh Verfahren zum Verwalten von Datenobjekten
US20110055494A1 (en) * 2009-08-25 2011-03-03 Yahoo! Inc. Method for distributed direct object access storage
US8495044B2 (en) * 2009-09-02 2013-07-23 Microsoft Corporation File system node updates
US8473582B2 (en) * 2009-12-16 2013-06-25 International Business Machines Corporation Disconnected file operations in a scalable multi-node file system cache for a remote cluster file system
US9158788B2 (en) 2009-12-16 2015-10-13 International Business Machines Corporation Scalable caching of remote file data in a cluster file system
US8458239B2 (en) 2009-12-16 2013-06-04 International Business Machines Corporation Directory traversal in a scalable multi-node file system cache for a remote cluster file system
US8495250B2 (en) 2009-12-16 2013-07-23 International Business Machines Corporation Asynchronous file operations in a scalable multi-node file system cache for a remote cluster file system
EP2354980A1 (en) * 2010-02-04 2011-08-10 ST-Ericsson SA Management of communications between a client equipment and a server equipment providing to the client equipment computer resources represented according to a file system
US11429486B1 (en) * 2010-02-27 2022-08-30 Pure Storage, Inc. Rebuilding data via locally decodable redundancy in a vast storage network
US9244015B2 (en) 2010-04-20 2016-01-26 Hewlett-Packard Development Company, L.P. Self-arranging, luminescence-enhancement device for surface-enhanced luminescence
US9002911B2 (en) * 2010-07-30 2015-04-07 International Business Machines Corporation Fileset masks to cluster inodes for efficient fileset management
US8577855B2 (en) * 2010-10-19 2013-11-05 Symantec Corporation Online file system consistency check
US9279767B2 (en) 2010-10-20 2016-03-08 Hewlett-Packard Development Company, L.P. Chemical-analysis device integrated with metallic-nanofinger device for chemical sensing
WO2012054024A1 (en) 2010-10-20 2012-04-26 Hewlett-Packard Development Company, L.P. Metallic-nanofinger device for chemical sensing
US8612700B1 (en) 2010-10-29 2013-12-17 Symantec Corporation Method and system of performing block level duplications of cataloged backup data
US9465702B2 (en) * 2010-11-05 2016-10-11 Atc Logistics & Electronics, Inc. System and method for auditing removal of customer personal information on electronic devices
US9792104B2 (en) 2010-11-05 2017-10-17 FedEx Supply Chain Logistics & Electronics, Inc. System and method for flashing a wireless device
US20120137044A1 (en) * 2010-11-30 2012-05-31 Nokia Corporation Method and apparatus for providing persistent computations
KR20120063946A (ko) * 2010-12-08 2012-06-18 한국전자통신연구원 대용량 통합 메모리를 위한 메모리 장치 및 이의 메타데이터 관리 방법
KR101502895B1 (ko) 2010-12-22 2015-03-17 주식회사 케이티 복수의 오류 복제본으로부터 오류를 복구하는 방법 및 상기 방법을 이용하는 스토리지 시스템
KR101544481B1 (ko) * 2010-12-31 2015-08-24 주식회사 케이티 클라우드스토리지 시스템에서 복제본 저장장소를 동적으로 선정하는 방법 및 시스템
WO2012094330A1 (en) 2011-01-03 2012-07-12 Planetary Data LLC Community internet drive
US8756378B2 (en) 2011-02-17 2014-06-17 Oracle International Corporation Broadcast protocol for a network of caches
KR101544485B1 (ko) 2011-04-25 2015-08-17 주식회사 케이티 클라우드 스토리지 시스템에서 복수개의 복제본을 분산 저장하는 방법 및 장치
US20120311289A1 (en) * 2011-05-31 2012-12-06 Somasundaram Meiyappan Persistent data storage
JP5729173B2 (ja) * 2011-06-30 2015-06-03 富士通株式会社 制御装置、制御方法およびストレージ装置
US20130080481A1 (en) * 2011-09-27 2013-03-28 Sybase, Inc. Extreme large space allocation
US9104678B1 (en) * 2011-12-31 2015-08-11 Richard Michael Nemes Methods and apparatus for information storage and retrieval using a caching technique with probe-limited open-address hashing
US9549037B2 (en) 2012-08-07 2017-01-17 Dell Products L.P. System and method for maintaining solvency within a cache
US9367480B2 (en) 2012-08-07 2016-06-14 Dell Products L.P. System and method for updating data in a cache
US9852073B2 (en) * 2012-08-07 2017-12-26 Dell Products L.P. System and method for data redundancy within a cache
US9495301B2 (en) * 2012-08-07 2016-11-15 Dell Products L.P. System and method for utilizing non-volatile memory in a cache
US9311240B2 (en) 2012-08-07 2016-04-12 Dell Products L.P. Location and relocation of data within a cache
US20140047183A1 (en) * 2012-08-07 2014-02-13 Dell Products L.P. System and Method for Utilizing a Cache with a Virtual Machine
US9208090B2 (en) * 2012-08-31 2015-12-08 Silicon Graphics International Corp. Transactional memory proxy
US10169090B2 (en) 2012-09-12 2019-01-01 Salesforce.Com, Inc. Facilitating tiered service model-based fair allocation of resources for application servers in multi-tenant environments
US9529626B2 (en) 2012-09-12 2016-12-27 Salesforce.Com, Inc. Facilitating equitable distribution of thread resources for job types associated with tenants in a multi-tenant on-demand services environment
US9239874B1 (en) * 2013-03-15 2016-01-19 Emc Corporation Integrated search for shared storage using index throttling to maintain quality of service
US9317472B2 (en) 2013-06-07 2016-04-19 International Business Machines Corporation Processing element data sharing
US9262415B2 (en) * 2013-11-08 2016-02-16 Sybase, Inc. Cache efficiency in a shared disk database cluster
JP6256931B2 (ja) * 2013-12-11 2018-01-10 インテル・コーポレーション 分散型記憶システムにおけるキャッシュおよび非キャッシュの使用
US9813516B2 (en) 2014-02-18 2017-11-07 Salesforce.Com, Inc. Transparent sharding of traffic across messaging brokers
JP5991699B2 (ja) * 2014-08-08 2016-09-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理装置、情報処理システム、バックアップ方法、およびプログラム
US10963348B1 (en) * 2014-12-19 2021-03-30 EMC IP Holding Company LLC Summary change log indexed by inode numbers
US10572452B1 (en) * 2015-01-01 2020-02-25 EMC IP Holding Company LLC Context-based read-ahead for B+ tree data structures in a deduplication system
WO2017032394A1 (en) * 2015-08-21 2017-03-02 Telefonaktiebolaget Lm Ericsson (Publ) Network data sharing in communication networks
CN105302577B (zh) * 2015-11-26 2019-05-07 上海兆芯集成电路有限公司 驱动执行单元的机器码产生方法以及装置
US10733201B1 (en) 2015-11-30 2020-08-04 Amazon Technologies, Inc. Dynamic provisioning for data replication groups
US10452681B1 (en) 2015-11-30 2019-10-22 Amazon Technologies, Inc. Replication group pools for fast provisioning
US11640410B1 (en) 2015-12-02 2023-05-02 Amazon Technologies, Inc. Distributed log processing for data replication groups
US10489230B1 (en) 2015-12-02 2019-11-26 Amazon Technologies, Inc. Chaining log operations in data replication groups
US10567499B1 (en) 2015-12-02 2020-02-18 Amazon Technologies, Inc. Unsupervised round robin catch up algorithm
US10924543B1 (en) * 2015-12-18 2021-02-16 Amazon Technologies, Inc. Deployment strategy for maintaining integrity of replication groups
US10002004B2 (en) * 2016-05-26 2018-06-19 International Business Machines Corporation Stream computing application shutdown and restart without data loss
US10521311B1 (en) 2016-06-30 2019-12-31 Amazon Technologies, Inc. Prioritized leadership for data replication groups
US10733144B2 (en) * 2016-07-13 2020-08-04 Netapp, Inc. Persistent indexing and free space management for flat directory
US10228995B2 (en) * 2016-07-28 2019-03-12 Hewlett Packard Enterprise Development Lp Last writers of datasets in storage array errors
US10565227B1 (en) 2016-08-31 2020-02-18 Amazon Technologies, Inc. Leadership lease protocol for data replication groups
US11150995B1 (en) 2016-09-13 2021-10-19 Amazon Technologies, Inc. Node placement for replication groups
US10275169B2 (en) * 2017-01-18 2019-04-30 Microsoft Technology Licensing, Llc Shared memory in memory isolated partitions
US10459782B2 (en) * 2017-08-31 2019-10-29 Nxp Usa, Inc. System and method of implementing heartbeats in a multicore system
US10789267B1 (en) 2017-09-21 2020-09-29 Amazon Technologies, Inc. Replication group data management
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US10880401B2 (en) * 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US11734192B2 (en) 2018-12-10 2023-08-22 International Business Machines Corporation Identifying location of data granules in global virtual address space
US11016908B2 (en) * 2018-12-11 2021-05-25 International Business Machines Corporation Distributed directory of named data elements in coordination namespace
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US11537634B2 (en) * 2021-03-30 2022-12-27 Netapp, Inc. Methods for hierarchical propagation in tree structures and devices thereof

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4096567A (en) * 1976-08-13 1978-06-20 Millard William H Information storage facility with multiple level processors
US4426688A (en) * 1981-08-03 1984-01-17 Ncr Corporation Memory system having an alternate memory
US4868738A (en) * 1985-08-15 1989-09-19 Lanier Business Products, Inc. Operating system independent virtual memory computer system
US4710926A (en) * 1985-12-27 1987-12-01 American Telephone And Telegraph Company, At&T Bell Laboratories Fault recovery in a distributed processing system
US4933846A (en) * 1987-04-24 1990-06-12 Network Systems Corporation Network communications adapter with dual interleaved memory banks servicing multiple processors
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5341483A (en) * 1987-12-22 1994-08-23 Kendall Square Research Corporation Dynamic hierarchial associative memory
US5282201A (en) * 1987-12-22 1994-01-25 Kendall Square Research Corporation Dynamic packet routing network
US5335325A (en) * 1987-12-22 1994-08-02 Kendall Square Research Corporation High-speed packet switching apparatus and method
US5251308A (en) * 1987-12-22 1993-10-05 Kendall Square Research Corporation Shared memory multiprocessor with data hiding and post-store
US5226039A (en) * 1987-12-22 1993-07-06 Kendall Square Research Corporation Packet routing switch
US5119481A (en) * 1987-12-22 1992-06-02 Kendall Square Research Corporation Register bus multiprocessor system with shift
US5077736A (en) * 1988-06-28 1991-12-31 Storage Technology Corporation Disk drive memory
US5117350A (en) * 1988-12-15 1992-05-26 Flashpoint Computer Corporation Memory address mechanism in a distributed memory architecture
US4934764A (en) * 1989-03-31 1990-06-19 Kendall Square Research Corporation Computer system module assembly
US5551035A (en) * 1989-06-30 1996-08-27 Lucent Technologies Inc. Method and apparatus for inter-object communication in an object-oriented program controlled system
IT1239122B (it) * 1989-12-04 1993-09-28 Bull Hn Information Syst Sistema multiprocessore a risorse distribuite con replicazione dinamica di dati globali
DE69022716T2 (de) * 1990-03-19 1996-03-14 Bull Hn Information Syst Mehrrechnersystem mit verteilten gemeinsamen Betriebsmitteln und dynamischer und selektiver Vervielfältigung globaler Daten und Verfahren dafür.
EP0472829A3 (en) * 1990-08-31 1993-01-07 International Business Machines Corporation Multicomputer complex and distributed shared data memory
US5333315A (en) * 1991-06-27 1994-07-26 Digital Equipment Corporation System of device independent file directories using a tag between the directories and file descriptors that migrate with the files
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5313647A (en) * 1991-09-20 1994-05-17 Kendall Square Research Corporation Digital data processor with improved checkpointing and forking
US5245563A (en) * 1991-09-20 1993-09-14 Kendall Square Research Corporation Fast control for round unit
US5423037A (en) * 1992-03-17 1995-06-06 Teleserve Transaction Technology As Continuously available database server having multiple groups of nodes, each group maintaining a database copy with fragments stored on multiple nodes
JPH0619785A (ja) * 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
US5452447A (en) * 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
US5394555A (en) * 1992-12-23 1995-02-28 Bull Hn Information Systems Inc. Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory
US5493728A (en) * 1993-02-19 1996-02-20 Borland International, Inc. System and methods for optimized access in a multi-user environment
US5390326A (en) * 1993-04-30 1995-02-14 The Foxboro Company Local area network with fault detection and recovery
US5408649A (en) * 1993-04-30 1995-04-18 Quotron Systems, Inc. Distributed data access system including a plurality of database access processors with one-for-N redundancy
FI97594C (fi) * 1993-07-05 1997-01-10 Nokia Telecommunications Oy Aikajakoinen monikäyttöradiojärjestelmä, menetelmä kapasiteetin jakamiseksi solun sisällä sekä menetelmä solun sisäisen handoverin suorittamiseksi
US5617537A (en) * 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
US5495607A (en) * 1993-11-15 1996-02-27 Conner Peripherals, Inc. Network management system having virtual catalog overview of files distributively stored across network domain
US5560027A (en) * 1993-12-15 1996-09-24 Convex Computer Corporation Scalable parallel processing systems wherein each hypernode has plural processing modules interconnected by crossbar and each processing module has SCI circuitry for forming multi-dimensional network with other hypernodes
US5689700A (en) * 1993-12-29 1997-11-18 Microsoft Corporation Unification of directory service with file system services
US5701462A (en) * 1993-12-29 1997-12-23 Microsoft Corporation Distributed file system providing a unified name space with efficient name resolution
US5588147A (en) * 1994-01-14 1996-12-24 Microsoft Corporation Replication facility
US5519855A (en) * 1994-01-14 1996-05-21 Microsoft Corporation Summary catalogs
US5490272A (en) * 1994-01-28 1996-02-06 International Business Machines Corporation Method and apparatus for creating multithreaded time slices in a multitasking operating system
SE515344C2 (sv) * 1994-02-08 2001-07-16 Ericsson Telefon Ab L M Distribuerat databassystem
US5812533A (en) * 1994-02-28 1998-09-22 British Telecommunications Public Limited Company Service provision in communications networks
WO1995025306A2 (en) * 1994-03-14 1995-09-21 Stanford University Distributed shared-cache for multi-processors
EP0678812A1 (en) * 1994-04-20 1995-10-25 Microsoft Corporation Replication verification
US5566328A (en) * 1995-01-23 1996-10-15 Tandem Computers Incorporated Reconstructing directory pathnames from file handles in a computer system
US5513314A (en) * 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
US5978577A (en) * 1995-03-17 1999-11-02 Csg Systems, Inc. Method and apparatus for transaction processing in a distributed database system
JP3889044B2 (ja) * 1995-05-05 2007-03-07 シリコン、グラフィクス、インコーポレイテッド 不均一メモリ・アクセス(numa)システムにおけるページ移動
US5675723A (en) * 1995-05-19 1997-10-07 Compaq Computer Corporation Multi-server fault tolerance using in-band signalling
US5687308A (en) * 1995-06-07 1997-11-11 Tandem Computers Incorporated Method to improve tolerance of non-homogeneous power outages
US5781537A (en) * 1995-07-07 1998-07-14 International Business Machines Corporation Setting up, taking down and maintaining connections in a communications network
US5805785A (en) * 1996-02-27 1998-09-08 International Business Machines Corporation Method for monitoring and recovery of subsystems in a distributed/clustered system
US5832514A (en) * 1996-06-26 1998-11-03 Microsoft Corporation System and method for discovery based data recovery in a store and forward replication process
US5768510A (en) * 1996-07-01 1998-06-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server application enabler system
US5805786A (en) * 1996-07-23 1998-09-08 International Business Machines Corporation Recovery of a name server managing membership of a domain of processors in a distributed computing environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102571197B1 (ko) * 2022-12-07 2023-08-30 성균관대학교산학협력단 클러스터 파일시스템의 캐시 일관성 유지방법

Also Published As

Publication number Publication date
DE69724834D1 (de) 2003-10-16
WO1998022876A1 (en) 1998-05-28
EP1008047B1 (en) 2003-09-10
AU5461198A (en) 1998-06-10
ATE249640T1 (de) 2003-09-15
US5909540A (en) 1999-06-01
EP1008047A1 (en) 2000-06-14
DE69724834T2 (de) 2004-07-01

Similar Documents

Publication Publication Date Title
EP1008047B1 (en) System for providing highly available data storage using globally addressable memory
US5918229A (en) Structured data storage using globally addressable memory
US5987506A (en) Remote access and geographically distributed computers in a globally addressable storage environment
US6026474A (en) Shared client-side web caching using globally addressable memory
US11755415B2 (en) Variable data replication for storage implementing data backup
US8661068B1 (en) Managing global metadata caches in data storage systems
US9047351B2 (en) Cluster of processing nodes with distributed global flash memory using commodity server technology
JP4568115B2 (ja) ハードウェアベースのファイルシステムのための装置および方法
US8667001B2 (en) Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US7457880B1 (en) System using a single host to receive and redirect all file access commands for shared data storage device from other hosts on a network
US7007047B2 (en) Internally consistent file system image in distributed object-based data storage
US6931450B2 (en) Direct access from client to storage device
WO1998022881A9 (en) Remote access in a globally addressable storage environment
US8131782B1 (en) Shadow directory structure in a distributed segmented file system
KR101453425B1 (ko) 메타데이터 서버 및 메타데이터 관리 방법
US9460177B1 (en) Managing updating of metadata of file systems
CN110221779B (zh) 分布式持久性内存存储系统的构建方法
US20130318086A1 (en) Distributed file hierarchy management in a clustered redirect-on-write file system
Kára Ext4, btrfs, and the others
Siddha A Persistent Snapshot Device Driver for Linux
Sears et al. Segment-based recovery: write-ahead logging revisited
CN116401313A (zh) 一种共享存储数据库集群信息同步方法
BRIEF I. THE PATENTS-IN-SUIT
Kim et al. protocol.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080212

A313 Final decision of rejection without a dissenting response from the applicant

Free format text: JAPANESE INTERMEDIATE CODE: A313

Effective date: 20080701

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080826