JP2015534175A - ソフトウェア定義ネットワークアタッチ可能記憶システムおよび方法 - Google Patents

ソフトウェア定義ネットワークアタッチ可能記憶システムおよび方法 Download PDF

Info

Publication number
JP2015534175A
JP2015534175A JP2015531949A JP2015531949A JP2015534175A JP 2015534175 A JP2015534175 A JP 2015534175A JP 2015531949 A JP2015531949 A JP 2015531949A JP 2015531949 A JP2015531949 A JP 2015531949A JP 2015534175 A JP2015534175 A JP 2015534175A
Authority
JP
Japan
Prior art keywords
namespace
file
hyperserver
hyperfiler
computer systems
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015531949A
Other languages
English (en)
Other versions
JP6199394B2 (ja
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
Application filed by ピークシー, インコーポレイテッド, ピークシー, インコーポレイテッド filed Critical ピークシー, インコーポレイテッド
Publication of JP2015534175A publication Critical patent/JP2015534175A/ja
Application granted granted Critical
Publication of JP6199394B2 publication Critical patent/JP6199394B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4552Lookup mechanisms between a plurality of directories; Synchronisation of directories, e.g. metadirectories
    • 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
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/668Internet protocol [IP] address subnets

Landscapes

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

Abstract

ソフトウェア定義ネットワークアタッチ可能記憶システムを確立する方法は、名前空間サーバおよびデータ空間サーバとして論理コンピュータシステムの第1および第2のセットを確立することをそれぞれ含む。各名前空間サーバは、ファイルおよびディレクトリ名と、ファイルおよびディレクトリ名に関連するユーザデータが常駐する場所の情報とを含むファイルシステムメタデータをそのメモリに記憶し、ファイルシステムメタデータの動的に更新されたコピーをその記憶システムに記憶し、少なくとも1つの要求クライアントコンピュータからの名前空間の所定のサブセットに対する記憶システムパス名要求を処理し、各要求に応答して要求クライアントコンピュータによる使用のためのハンドルを返送するように構成され、各データ空間サーバは、名前空間サーバによって決定されるハンドルに基づいてユーザデータをその記憶システムに記憶し取り出すように構成される。

Description

(関連出願の引用)
本願は、発明の名称が本願と同一の米国仮特許出願第61/701,441号(2012年9月14日出願)の利益を主張する。さらに、本願は、発明の名称が本願と同一の米国特許出願第13/759,799号(2013年2月5日出願)の利益を主張する。これらの関連出願は、参照により本明細書に引用される。
(技術分野)
本発明は、ネットワークアタッチ可能記憶システムに関し、より具体的には、ソフトウェア定義される記憶システムに関する。
広範な文献が、ネットワークアタッチ可能記憶システムについて存在する。
本発明の実施形態は、記憶要求を取り扱うことにおいて、従来技術のファイルシステムと比べて劇的に増加した効率を実証する。本発明の実施形態が、名前空間サーバのメモリに記憶されたメタデータのみに基づいて、データ空間サーバによってアクセスされるファイルオブジェクトのためのハンドルを決定するために、名前空間サーバを使用するため、そのような実施形態は、これらのハンドルを決定するために、ディスクからのいかなる読み取り動作も行う必要がない。削減した数のディスク動作は、ファイルシステムの性能を向上させる。実際、ファイルシステムの実装は、典型的には、従来のファイルシステムより桁違いに良好である、記憶要求を取り扱うことの性能向上を実証する。
本発明の第1の実施形態では、複数の論理コンピュータシステム内でソフトウェア定義ネットワークアタッチ可能記憶システムを確立する方法が提供される。各コンピュータシステムは、メモリと、プロセッサと、記憶システムとを有する。本方法は、名前空間内で動作する名前空間サーバとして、論理コンピュータシステムの第1のセット、およびデータ空間サーバとして、論理コンピュータシステムの第2のセットを確立する、論理コンピュータシステム内でプログラムのセットを実行することを含む。論理コンピュータシステムの第1のセットは、少なくとも2つの論理コンピュータシステムを含む。各論理コンピュータシステムは、名前空間の異なるパーティション内で自律的に動作するように構成される。論理コンピュータシステムのうちのいくつかは、仮想コンピュータシステムであり得る。
本実施形態では、各名前空間サーバは、ファイルシステムメタデータであって、ファイルおよびディレクトリ名と、ファイルおよびディレクトリ名に関連付けられているユーザデータが常駐する場所についての情報とを含む、メタデータを、そのメモリに持続的に記憶し、ファイルシステムメタデータの動的に更新されたコピーをその記憶システムに記憶するように構成される。各名前空間サーバはさらに、そのメモリに持続的に記憶されるメタデータに基づいて、少なくとも1つの要求クライアントコンピュータからの名前空間の所定のサブセットに対する記憶システムパス名要求を処理し、各要求に応答して、要求クライアントコンピュータによる使用のためのハンドルを返送するように構成される。集合的に、名前空間サーバの全ては、名前空間の全体に対する記憶システムパス名要求を処理する。各データ空間サーバは、名前空間サーバによって決定され、少なくとも1つの要求クライアントコンピュータから受信されるハンドルに直接基づいて、ユーザデータをその記憶システムに記憶し、取り出すように構成される。
本発明の別の実施形態では、複数の論理コンピュータシステム内でソフトウェア定義ネットワークアタッチ可能記憶システムを確立する方法が提供される。各コンピュータシステムは、メモリと、プロセッサと、記憶システムとを有する。本方法は、名前空間サーバとして論理コンピュータシステムの第1のセット、およびデータ空間サーバとして論理コンピュータシステムの第2のセットを確立する、論理コンピュータシステム内で、プログラムのセットを実行することを含む。論理コンピュータシステムのうちのいくつかは、仮想コンピュータシステムであり得る。
本実施形態では、各名前空間サーバは、ファイルシステムメタデータであって、ファイルおよびディレクトリ名と、ファイルおよびディレクトリ名に関連付けられているユーザデータが常駐する場所についての情報とを含む、メタデータを、そのメモリに記憶し、ファイルシステムメタデータの動的に更新されたコピーをその記憶システムに記憶するように構成される。各名前空間サーバはさらに、少なくとも1つの要求クライアントコンピュータからの名前空間の所定のサブセットに対する記憶システムパス名要求を処理し、各要求に応答して、要求クライアントコンピュータによる使用のためのハンドルを返送するように構成される。各データ空間サーバは、名前空間サーバによって決定されるハンドルに基づいて、ユーザデータをその記憶システムに記憶し、取り出すように構成される。
関連実施形態では、名前空間サーバの少なくとも1つの厳密なサブセットは、名前空間の共有サブセットに対して記憶システムパス名要求を処理するために、クラスタとして動作するように構成され、名前空間の共有サブセットに対するファイルシステムメタデータは、クラスタ内の各名前空間サーバのメモリの中に常駐している。随意に、クラスタ内の名前空間サーバの数は、予測負荷条件下で、所望のレベルの速度、冗長性、および可用性を達成するように選択される。
別の関連実施形態では、データ空間サーバの少なくとも1つの厳密なサブセットは、データ空間の共有サブセットに対して、名前空間サーバによって決定されるハンドルに基づいて、ユーザデータをその記憶システムに記憶し、取り出すために、クラスタとして動作するように構成される。随意に、クラスタ内のデータ空間サーバの数は、予測負荷条件下で、所望のレベルの速度、冗長性、および可用性を達成するように選択される。
関連実施形態では、論理コンピュータシステムのうちの少なくともいくつかは、仮想コンピュータシステムである。さらなる関連実施形態では、論理コンピュータシステムの全ては、仮想コンピュータシステムである。
また、関連実施形態では、論理コンピュータシステムの第1および第2のセットは、互いに素である。代替として、論理コンピュータシステムの第1および第2のセットは、互いに素ではない。
別の関連実施形態では、ファイルシステムメタデータは、パス名の共有プレフィックスがコンパクトに記憶されるように、パトリシア木データ構造に従って構造化される。随意に、ファイルシステムメタデータは、(i)パトリシア木を符号化するノードテーブル、および(ii)ファイルおよびディレクトリの属性を符号化するファイルテーブル、および(iii)ノードテーブルで使用される最大長より大きい長さを有する、文字列の名前を符号化する文字列テーブルに記憶される。さらなるオプションとして、ノードテーブル、ファイルテーブル、および文字列テーブルの各々は、持続性のために異なるファイルに動的に記憶される。さらなるオプションとして、ノードテーブル、ファイルテーブル、または文字列テーブルのうちの任意のものに対する任意の変更は、インテントログに記憶され、インテントログは、そのようなテーブルに対応するファイルを更新するために動的に使用される。単一の動作に関連する変更のうちの任意のものは、一緒に結び付けられ得る。さらに、ノードテーブル、ファイルテーブル、および文字列テーブルの各々は、固定サイズのエントリを有する異なるアレイであり得る。
別の関連実施形態では、クラスタによって管理されている名前空間データの共有サブセットに対する更新を取り扱う経過中に、そこへの各連続更新は、連続番号を与えられ、クラスタの論理コンピュータシステムは、連続番号に基づいて、事前定義された更新順を依然として保持しながら、非同期的に動作するように構成される。
実施形態の前述の特徴は、添付図面を参照して解釈される、以下の発明を実施するための形態を参照することにより、より容易に理解されるであろう。
図1は、本発明の実施形態による、Hyperfilerのブロック図である。 図2は、いくつかのサブディレクトリを含む、パス名を伴うファイルにアクセスするための従来技術のネットワークアタッチド記憶(NAS)システムに特有である、ディスクおよびネットワーク入出力動作を図示する、略図である。 図3は、図2と同一のパス名を伴うファイルにアクセスするために本発明の実施形態によるHyperfilerによって要求される、ディスクおよびネットワーク入出力動作を図示する、略図である。 図4は、パス名「x/y/z012345678」を伴うファイルを作成するための本発明の実施形態によるHyperfilerにおける動作を図示する、略図である。
定義。本説明および添付図面で使用されるように、以下の用語は、文脈が別様に要求しない限り、指示される意味を有するものとする。
「アクティブディレクトリ」は、それ自体の名前がハッシュ化される、ハイパーサーバ上に常駐するディレクトリのバージョンであり、ファイルおよびサブディレクトリを作成し、削除し、一覧化し、およびアクセスするために使用されるディレクトリである。Hyperfilerでは、各ディレクトリは、2つのバージョン、すなわち、前述のようなアクティブディレクトリ、およびパッシブディレクトリを有し得る。パッシブディレクトリは、ハッシュ化されたその親ディレクトリを有し、その親のリスト化およびトラバーサルにおいて適正に報告されるように存在している。時として、アクティブディレクトリおよびパッシブディレクトリは、同一のハイパーサーバにハッシュ値を持ち、したがって、単一のディレクトリに畳み込まれ得る。
「バッキングストア」は、ノードテーブル、文字列テーブル、およびファイルテーブルのコンテンツを複製する3つのファイルの集合である。
ハイパーサーバの「基数」は、ハイパーサーバで構成されるハイパーサーバメンバーの総数を決定付ける数である。Hyperfilerにおける各ハイパーサーバは、実装することを選択する冗長性のレベルに応じて、1〜4の範囲内の異なる基数を有することができる。
Hyperfiler「クライアント」は、Hyperfilerのファイルシステム名前空間におけるディレクトリのマウントを行う、任意のコンピュータである。Hyperfilerクライアントは、利用可能な種々のサービスの要求を発行する遠隔手続呼び出し(RPC)を介して、記憶サービスに遠隔でアクセスするために、FUSEクライアントコンポーネントを実行する。マウント動作は、クライアントがHyperfilerと相互作用するために必要とする全てのデータ構造をロードし、Hyperfilerは、それらが変化するとこれらのデータ構造を更新するであろう。「クライアントコンピュータ」という用語は、それ自体がクライアントとして役割を果たしているサーバを含む。
「データ空間」は、ユーザファイルデータが記憶される記憶リソースを管理する、Hyperfilerの一部である。データ空間全体は、Hyperfilerにおける全てのデータ可能ハイパーサーバを通して区分化され、その各々は、特定レベルの基数を提供するように構成される。これは、最高基数を伴うハイパーボリュームを管理するハイパーサーバ内に重要データを記憶することを可能にする一方で、本質的に一過性であるデータは、記憶コストを最適化するように、1に設定された基数を伴うハイパーボリューム上に記憶されることができる。ファイルおよびシンボリックリンクは、論理的に連続した範囲の集約として記憶される。
「ディレクトリハッシュテーブル(DHT)」は、全てのパス名ベースの動作を行う際に使用されるテーブルである。全てのHyperfilerメンバーおよびクライアントに知られているハッシュ関数は、DHT内のスロットへの目的とするファイルシステムオブジェクトの親ディレクトリの名前の多数対1のマッピングを行う。標的スロットは、そのオブジェクトに動作を行うために使用されるハイパーサーバのHIDを含む。効果的に、このテーブルは、Hyperfilerにおける全てのハイパーサーバにわたって、大域的な名前空間全体が区分化されることを可能にする。DHTは、単調に増加している世代番号によって保護される。1つのDHTスロットのコンテンツが変更されるか、またはDHTのサイズが変更される度に、世代番号が増加させられる。パス名ベースの遠隔手続呼び出しは、常に、標的ハイパーサーバがクライアントによって使用される任意の状態DHTを検出して更新することができるように、DHT世代番号を搬送する。
「範囲」は、ユーザデータを記憶する、ハイパーボリュームの論理的に連続した部分である。Hyperfilerにおける任意の範囲は、大域的に一意的な範囲ID(EID)を介して識別される。範囲は、最大4メガバイトに及ぶことができる。これは、長さが4メガバイト以下であるファイルにアクセスすることが、単一のディスク入出力動作のみを必要とすることを示唆する。
「範囲ID(EID)」は、Hyperfilerの全体を通して任意の範囲を一意的に識別する、8バイト数である。EIDは、ハイパーボリュームが管理するデータリポジトリ内でその範囲が配置される場所についての情報、およびその範囲の長さとともに、それを所有するハイパーボリューム/ハイパーサーバのHIDを組み込む。具体的には、EIDは、以下のフィールドを含み、その含んでいるハイパーボリュームからの不透明スカラーとして取り扱われる。(i)範囲が割り付けられたハイパーボリュームのHID。これは、Hyperfiler全体内で範囲を大域的に一意的かつアドレス可能にする。(ii)含んでいるハイパーボリューム内の範囲の開始ブロックの論理ブロックオフセット。これは、ハイパーボリューム内の開始ブロックの論理ブロックインデックスを直接識別する。(iii)範囲が及ぶ論理ブロックの総数。これは、範囲内で読み取るためにどれだけのメモリがキャッシュ内で利用可能にされなければならないかを、キャッシュマネージャに知らせる。
「ファイルテーブル(FT)」は、(STおよびNTとともに)3つの連続したアレイのうちの1つであり、それによって、ローカル名前空間が各ハイパーサーバ上で実装される。このアレイは、各ファイルの第1の範囲に対する範囲IDとともに、ファイルまたはディレクトリの属性を記憶する。範囲IDがHyperfiler全体にわたって大域的であるため、データは、その名前空間コンポーネントが常駐する同一のハイパーサーバ内に常駐する必要はない。
本明細書で使用される場合、「Hyperfiler」という用語は、本明細書の出願人であるPeaxy,Inc.によって開発されたソフトウェアを指し、Hyperfilerは、従来のコンピュータハードウェア環境で作動し、単一の名前空間内のファイル記憶のためのスケーラブル設備を提供するように動的に拡張されることが可能な分散型ファイルシステムのコンポーネントとして、1つ以上の高可用性ミニクラスタ(本明細書では「ハイパーサーバ」と呼ばれる)を確立する。より一般的には、HYPERFILERは、広範囲のハードウェア環境でスケーラブル高性能ファイルサーバを実装するソフトウェアに対する、本明細書の出願人であるPeaxy,Inc.の商標であるが、本明細書で使用される場合、「Hyperfiler」という用語は、前の文に記載される具体的な意味を有する。
「ハイパーサーバ」は、Hyperfilerにおける名前空間またはデータ空間あるいは両方の一部分に対して、協調的に処理するように構成される論理コンピュータのクラスタである。(これに関する種々の実施形態では、論理コンピュータは、仮想マシンとして実装される。)したがって、Hyperfiler抽象的概念は、名前空間および/またはデータ空間の一部分に対して全て一斉に動作する、事前定義された数の仮想マシンをハイパーサーバとして一緒にグループ化する。ハイパーサーバの基数は、ハイパーサーバの各論理コンピュータ(例えば、各仮想マシン)が冗長的にファイルシステムを管理し、冗長ハイパーボリュームを実装するという点で、その冗長性を定義する。接続性のクラッシュ、損失、および失われたメンバーの置換により、個々の仮想マシンメンバーがハイパーサーバに参加するか、または退出し得るため、ハイパーサーバは、経時的に変動し得る組成を有する。クライアントは、その要求を実行させるように、ハイパーサーバと相互作用し、ハイパーサーバのメンバーシップを認識する必要はない。したがって、クライアントは、どの時点においても、ハイパーサーバのメンバーであるVMのIPアドレスから抽出するハイパーサーバIDを介して、ハイパーサーバをアドレス指定する。
「ハイパーサーバID(HID)」は、Hyperfiler内の1つの特定のハイパーサーバを識別する、16ビットIDである。それは、クライアントがその要求のうちのいずれかの標的を識別する方法である。
「ハイパーサーバメンバー(HM)」は、ハイパーサーバとして協調的に処理するように構成される、論理コンピュータのクラスタ内の論理コンピュータのうちの1つである。これに関する種々の実施形態では、論理コンピュータは、仮想マシンとして実装され、各HMは、仮想マシンである。
「ハイパーサーバテーブル(HT)」は、Hyperfilerおよびそのクライアントに知られている大域的テーブルであり、HTは、ハイパーサーバ基数に関して(ハイパーサーバが、名前空間のみ、データ空間のみ、または両方にサービス提供するかどうかにかかわらず)、およびハイパーサーバ使用のメンバーであるVMのIPアドレスに関して、Hyperfilerにおける各ハイパーサーバのメンバーシップを説明する。HTの各エントリは、それが表すハイパーサーバのメンバーシップが変化する度に単調に増加させられる世代番号によって個々に保護される。この番号は、所与のハイパーサーバを標的にする全てのRPCにおいて転送され、この番号は、所与のハイパーサーバが、起こり得る非一貫性を検出すること、および任意の状態HTエントリが必要に応じて更新されることを確認することを可能にする。
「ハイパーボリューム」は、ハイパーサーバによって管理される名前空間およびデータ空間コンポーネントの集合である。それは、そのハイパーボリュームを所有して管理するハイパーサーバと共有されるハイパーサーバIDを介して識別される。
「インテントログ」は、バッキングストアへの一セットの更新のリポジトリである。バッキングストアへの一セットの更新が必要とされるときはいつでも、一セットの更新は、各々が関連するテーブルの指示とともに、インテントログにコピーされる。
「論理」コンピュータシステムは、実コンピュータシステムまたは仮想コンピュータシステムのいずれか一方であり得る。論理コンピュータシステムが仮想コンピュータシステムであるとき、仮想コンピュータシステムは、実コンピュータシステムで仮想化ソフトウェアを実行することによって確立される。
「メモリ」という用語は、ランダムアクセスメモリ(RAM)または補助メモリを拡張するために使用されるページング等の任意の配列とともに、RAMおよび補助メモリを意味する。
Hyperfilerにおける「マウント」動作は、クライアントをHyperfilerに知らせ、クライアントをHyperfilerと相互作用させるために必要とされる全てのデータ構造を取り出し、ローカルマウントポイントの下方の標的Hyperfilerディレクトリ下のファイルシステムツリーを利用可能にする。マウント動作が行われた後、マウントポイント下のファイルおよびディレクトリへの全てのアクセスは、Hyperfilerへの遠隔手続呼び出し要求に変換されるが、それらは、依然として、ローカルファイルシステムに向けられているように見える。マウント動作は、クライアントがNFSサーバ上でディレクトリのマウントを行うときに起こるものに類似する、目的を達成する。
「マウントポイント」は、マウント動作を行う際にクライアントによって選択されるローカルファイルシステム内のディレクトリのパス名である。マウント動作の成功後、マウントポイント下で可視的な全てのファイルは、マウント動作で使用されるファイルシステムの標的ディレクトリに記憶されたファイルおよびディレクトリである。
「名前空間」は、Hyperfilerによって実装される階層的なファイル/ディレクトリ構造を管理する、Hyperfilerの一部である。名前空間全体は、HyperfilerのメンバーであるHyperververにわたって区分化される。ファイルシステム階層とともに、名前空間コンポーネントはまた、ファイルおよびシンボリックリンクに対する第1の範囲のEIDとともに、所有権情報、アクセス許可、作成および修正日等のファイル、ディレクトリ、およびシンボリックリンクの基本属性も記憶する。
「ノードテーブル(NT)」は、文字列のサイズがNTエントリで利用可能な記憶を超えるときの文字列テーブル内の文字列、または文字列のID、ならびに必要とされる場合、パトリシア木内の接続NTエントリのインデックス、NTエントリに関連するフラグ、および関連FTエントリのインデックスとともに、各ノードのロックを記憶するデータ構造である。NTの2つのエントリは特別であり、エントリ0は、利用可能な名前空間の全てのルートへのポインタの役割を果たす。この間接レベルを有することは、将来、1つの名前空間または複数の名前空間のスナップショットを実装することを可能にし得る。NTのエントリ1は、POSIX名前空間のルートディレクトリであり、「I」に対応する。
「ポリシー」は、一セットの規則であり、この規則は、ファイルの作成において、または記憶層へ、および間接的に、そのような層を実装するデータ空間Hyperfilerへのファイルのデータコンポーネントの割当を伴うファイルの処理において適用される。ポリシーは、ファイルが所与の層内で記憶されるために有する必要のある特性(サフィックス、親ディレクトリ名、所有者)を決定することができる。ポリシーはまた、ほとんど使用されないとき、または大量アクセスが発生しようとしているときに、1つの層から別の層へファイルを移動させるために必要とされるもの等のワークフローを介して行われるべき時間または事象ベースの動作を特定することもできる。
「一次メンバー」は、所与のときに、それが管理するハイパーボリュームの状態に対する権威あるエンティティであり、したがって、ハイパーサーバにおいて主要な役割を実行するハイパーサーバメンバーである。ハイパーサーバ内で、1つの特定のメンバーが、1度に主要な役割を実行する。全ての他のメンバーは、二次メンバーである。一次メンバーは、任意の二次メンバーと同様に、下にあるハイパーボリュームの状態(読み取り動作等)を変更しない任意の要求にサービスを提供することができるが、任意の状態変更要求を行い、二次メンバーに対する動作を調整する1つのメンバーでもある。この配列下で、要求が完了されるときまでに、ハイパーサーバの全てのメンバーは、各個々の要求に関する同一の状態に達する。一次メンバーは、接続性の損失または他の異常挙動により、それがクラッシュするか、またはハイパーサーバから退去させられるまで、その主要な役割を保つ。
「遠隔手続呼び出し(RPC)」は、それによってクライアントがHyperfilerへのサービスを要求するネットワークプロトコルである。RPCは、実装される必要がある機能性に合わせられ、ファイルシステムレベルで同期している。プロトコルの下位層は、RPCの標的であるハイパーサーバに固有の並列性を利用し、必要なときに個々のハイパーサーバメンバーと非同期的に通信するためにそれを活用する。この側面は、呼び出しの意味論を単純化するように、スタックの上層から隠される。
「パッシブディレクトリ」は、親ディレクトリがハッシュ化され、その親のリスト項目およびトラバーサルにおいて適正に報告されるように存在している、ハイパーサーバ上に常駐するディレクトリのバージョンである。Hyperfilerでは、各ディレクトリは、2つのバージョン、すなわち、前述のようなパッシブディレクトリと、各自の名前がハッシュ化される、ハイパーサーバ上に常駐するディレクトリのバージョンであり、ファイルおよびサブディレクトリを作成し、削除し、一覧化し、およびアクセスするために使用されるディレクトリであるアクティブディレクトリとを有し得る。時として、アクティブディレクトリおよびパッシブディレクトリは、同一のハイパーサーバにハッシュ値を持ち、したがって、単一のディレクトリに畳み込まれ得る。
ハイパーサーバの「二次メンバー」は、ハイパーサーバによって管理される下にあるハイパーボリュームの状態を変更しないクライアント要求を実行することができる、ハイパーサーバメンバーである。ファイルへの書き込み、またはファイル作成あるいは削除の場合のように、ハイパーサーバによって管理されるハイパーボリュームの状態が変更されるものであるとき、それは、そのような要求をスレーブとして実行する二次メンバーとそのような動作を発行して調整する、ハイパーサーバの一次メンバーである。ハイパーボリュームの一次メンバーがハイパーボリュームから退出する場合、1つの二次メンバーが主要な役割を果たすように昇進させられる。
「サーバID(SID)」は、ハイパーサーバ内のハイパーサーバメンバー(HM)に割り当てられた番号である。各メンバーは、ハイパーサーバに参加するときにそのSIDを受信し、ハイパーサーバから退出するまで、またはクラッシュするときまでにそれを保持する。新しいHMは、その時点で未使用であるSIDを受信する(退去させられた、またはクラッシュしたHMで使用されていた、以前に使用されたSIDであり得る)。慣例により、HMの最低SIDは0であり、各連続するSIDは、1、2等である。したがって、SIDは、ハイパーサーバの基数より常に小さい、小さい数である。
「セット」は、少なくとも1つのメンバーを含む。
「記憶層」は、Hyperfilerにおけるデータ空間ハイパーサーバの高レベルグループ化であり、基数の類似性と、それらが管理するハイパーボリュームを実装するために使用される記憶デバイスの容量および性能の類似性とに基づく。個々のデータ空間ハイパーサーバは、記憶層に割り当てられ、層の属性を受け継ぐ。
「文字列テーブル(ST)」は、連続した塊に集約することができる、固定長セルで作成されたアレイであり、ノードテーブル内に収まらない文字列を記憶するために使用される。
所与のセットの「サブセット」は、随意に、所与のセット全体を含み得る。
所与のセットの「厳密なサブセット」は、所与のセット全体を含まない。
「仮想コンピュータシステム」(本明細書では時として「仮想マシン」とも呼ばれる)は、任意の下にある実際のハードウェア環境から実質的に独立した様式で実装される、プロセッサ、メモリ、および記憶装置を含む属性を伴う仮想マシンである。
「ワークフロー」は、特定のポリシーを実行するために、または、Hyperfilerのソフトウェアアップグレード、新しいVMの追加を通したHyperfilerの拡張等の要求された動作を行うために、本明細書の実施形態による記憶システムによって編成される一セットの動作である。
HYPERFILERは、広範囲のハードウェア環境でスケーラブル高性能ファイルサーバを実装するソフトウェアに対する本明細書の出願人であるPeaxy,Inc.の商標である。本明細書で使用される場合、「Hyperfiler」という用語は、従来のコンピュータハードウェア環境で作動し、単一の名前空間内のファイル記憶のためのスケーラブル設備を提供するように動的に拡張されることが可能な分散型ファイルシステムのコンポーネントとして、本明細書では「ハイパーサーバ」と呼ばれる1つ以上の高可用性ミニクラスタを確立する、Peaxyによって開発された、そのようなソフトウェアの特定の実施例を指す。
本明細書の実施形態における、Hyperfilerおよびそのコンポーネントハイパーサーバは、ファイルへのPOSIXアクセスを提供し、それらは、DB型作業負荷をサポートするように意図されていない。
一実施形態では、Hyperfilerは、Linux(登録商標)マシンをクライアントとしてサポートする。他の実施形態が、Microsoft(Redmond,Washington)によって提供されるWindows(登録商標)オペレーティングシステム等の他のオペレーティングシステムのクライアントをサポートするように確立され得る。
本明細書で詳細に説明されるHyperfilerの実施形態内で使用されるファイル記憶装置アクセスプロトコルは、高度に効率化され、UDPに基づく。基本的ファイルサービスを使用するクライアントは、Hyperfilerと連動する動的にロード可能なLinux(登録商標)モジュールを配備する必要がある。これは、低侵襲性であり、極めて限定されたローカルホストリソースを使用する、非常に軽量のクライアントである。
POSIXファイルシステムインターフェースに加えて、ファイルにアクセスするためのスケーラブルHTTP/HTTPSインターフェースもまた、この実施形態のために提供される。
以下では、主要な副次的コンポーネントの全ての詳細を挙げることによって、アーキテクチャの説明を提供する。アーキテクチャの説明は、以下の主要な節で提供される。
I.Hyperfilerの物理的基盤
II.主要Hyperfiler抽象概念
III.動作挙動
(I.Hyperfilerの物理的基盤)
本発明の種々の実施形態では、Hyperfilerは、クライアントコンピュータからの記憶要求に応答するように構成される1つ以上のハイパーサーバによって実装され、各ハイパーサーバは、ハイパーサーバメンバー(HM)として動作する、1つ以上の論理コンピュータのクラスタとして実装される。順に、本発明の実施形態では、ハイパーサーバメンバーとして動作する各論理コンピュータは、そのCPU、RAM、およびネットワークリソースが、KVM、VMware、Xen等のハイパーバイザによって仮想化される、物理的コンピュータ上で作動する仮想マシン(VM)として実装される。
システム管理コンポーネントは、高可用性サーバ抽象概念を実装するハイパーサーバにHMを一緒にクラスタ化する。加えて、システム管理ソフトウェアは、Hyperfilerとして知られているソフトウェア抽象概念にハイパーサーバを集約する。
Hyperfilerのクライアントは、Hyperfilerファイルシステムがマウントされ、従来のPOSIXプログラミングAPIを介してアクセスされることを可能にするソフトウェアコンポーネントを作動させる(「マウント」動作は、NFSファイラへのアクセスを獲得するために行われるものに本質的に類似する)。
各HMは、ハードウェアで利用可能であるか、または下にあるハイパーバイザ(存在する場合)によって仮想化される、利用可能な記憶装置、CPU、RAM、およびネットワークリソースを有する。
(記憶装置)
分散型ファイル記憶装置をサポートするために、各HMは、ブロック記憶装置の使用を利用可能にする。これは、異なる方法で実装されることができる。
HMは、SANインフラストラクチャを通してLUNの使用を利用可能にすることができる。これは、厳密に言えば、SANである必要はないことに留意されたい。実際のSANに加えて、そのVSAN製品を介してVMwareによって、または、Coraid、Nimble、Tintri等の企業によって提供される記憶設備等のVM用の記憶装置を提供する、SANのような設備をサポートする複数の代替案が存在する。採用される特定の記憶設備にかかわらず、HMレベルでの記憶装置は、SANによって利用可能にされるLUNに類似すると考えられる。そのようなLUNがある形態の冗長性を実装するとき、このタイプの記憶装置は、高可用性属性を提供することができる。しかしながら、下にあるLUNは、冗長であり、記憶装置レベルで高い可用性(HA)をサポートすることが可能であろうが、これらのLUNを管理し、ファイルおよびディレクトリの形態で記憶コンテンツを示す、サーバソフトウェアが、それ自体、冗長HM上で作動することが可能ではない限り、HMのクラッシュは、HMが管理するLUNに記憶されたデータへのアクセスを損なうであろう。したがって、下にある記憶装置の冗長性およびHA属性にかかわらず、Hyperfilerは、HMにおける冗長性がサポートされるような方法で構築されなければならない。
異なるアプローチは、物理的記憶装置を業界標準コンピュータ内で作動するHMに関連付けて、HM用の記憶装置としてコンピュータ内のディスクドライバを使用するものである。この場合、別個のHMに、コンピュータ内のドライブの各々を管理させることができる。以前のアプローチとの違いは、この場合、HyperfilerソフトウェアがHMおよび下にある記憶装置の両方において冗長性をサポートするための用意をしなければならないことである。
上記の2つのアプローチは、実際の結果に関して極めて異なる。典型的な実施形態では、HMが、それらが作動するマシン内の物理的ディスクドライブを直接管理する場合、複数のHMにわたる記憶複製方式が実装されて。明らかに、冗長性およびHAが、記憶リソースを供給するSANまたはSANのような設備によって提供される場合、これは、厳密には必要ではない。必要とされるとき、顧客は、所望される複製の程度を選択することによって、複製を構成することができる(以下参照)。複製は、ミラーリングとして実装され、アクティブデータを含む記憶デバイスの一部に限定されることに留意されたい。これは、ミラーにわたる再同期化を加速し、再同期化が起こっている場合でさえも性能を大幅に向上させる。
HMは、ほとんど記憶装置に依存せず、SSDを含む任意のタイプの物理的媒体をサポートすることができる。
典型的には、ハイパーサーバ内の任意の個々のHMが、2つの別個の記憶パーティションを管理し、1つは、名前空間専用であり、1つは、データ空間専用である。これは、これから先でさらに詳細に説明されるであろうが、基本概念のうちの1つは、特定の配備のために顧客が必要とする性能を最も良く達成することができる、物理的媒体上に名前空間およびデータ空間を配置することが可能であることである。これは、より高速のデバイスをキャッシングに専念させるよりも良好である。なぜなら、アクセスされている一セットのファイルが極めてランダムであるときはいつでも(本発明の実施形態が適用可能である1つの使用事例のように)、この方式が有効ではないであろうからである。
(CPUおよびメモリ)
HMは、マルチコアCPUを利用するシステム上で作動することが期待される。Hyperfiler設計で行われる選択の多くは、必要に応じてI/O帯域幅のための処理を交換することによって、マルチコアアーキテクチャの処理能力を利用する。
メモリに関しては、Hyperfilerは、サービス提供することを目標とする市場区分の制約内で、非常に異なるタイプの負荷をサポートするように設計されている。したがって、各HMが使用することを可能にされるべきであるRAMの量は、所望される性能と各展開のための費用目標との関数である。しかしながら、一般に、各HMは、利用可能な1〜4ギガバイトのRAMを有すべきであると期待される。
(ネットワーク)
Hyperfilerは、Ethernet(登録商標)を経由したIP以外のいかなる特別なタイプのネットワーク接続にも依存しない。これは、費用を低減させ、非常に一般的な技術へのアクセスを可能にし、複数のタイプのネットワークインフラストラクチャを管理する必要性を回避し、これは再度、総所有コスト(TCO)を削減する。
業界標準サーバで利用可能である典型的なネットワークインターフェースカード(NIC)は、この仕事に完璧に適している。しかしながら、1つの重要な警告が指摘される。すなわち、同一のボックス内で動作するHMが、CPUコアおよびNICを共有し、したがって、これらが平衡を保たれることが極めて望ましい。例えば、16個のディスクドライブをホストする(おそらく16個のHMを作動させる)コンピュータは、その役割が、ドライブのコンテンツへのアクセスが低頻度であると見なされる、記憶階層内の下層の役割ではない限り、全ての対のHMに対して1ギガビット/秒以上のNICポートを利用可能にすべきである。
(追加のハードウェア要件)
Hyperfilerは、いかなる他の特別なタイプのハードウェアの存在も決定付けないが、NVRAM等のものを確実に利用することができる。
図1は、本発明の実施形態による、Hyperfilerのブロック図である。Hyperfiler101は、ここでは、Hyperfiler101に関連付けられる名前空間104を取り扱うための名前空間ハイパーサーバ106、107、および108の集合によって、および同じ名前空間に対応するデータ空間105を取り扱うためのデータ空間ハイパーサーバ121、122、123、124、および125の集合によって、実装される。本実施例では、各名前空間ハイパーサーバは、2つのハイパーサーバメンバー(HM)によって実装され、各ハイパーサーバメンバーは、仮想マシン(VM)である。したがって、名前空間ハイパーサーバ106は、VM109およびVM110によって実装され、名前空間ハイパーサーバ107は、VM111およびVM112によって実装される。同様に、本実施例での各データ空間ハイパーサーバは、3つのハイパーサーバメンバー(HM)によって実装され、各ハイパーサーバメンバーは、VMである。したがって、データ空間ハイパーサーバ121は、VM126、127、および128によって実装される(他のHyperfiler102および103は、単一のHyperfilerの性能が不十分と見なされるときに大規模記憶装置アクセスさえも提供するように追加できることを示すために図示されている)。
ハイパーサーバ内のVMは、113、114、115、および116として示されるものを含む、一連の従来のサーバで作動するソフトウェアによって確立される。好適な冗長性を提供するために、所与のハイパーサーバ内の各VMが、異なる物理的サーバで実装される。したがって、名前空間ハイパーサーバ106のVM109および110は、異なる物理的サーバ113および114で実装される。同様に、名前空間ハイパーサーバ107のVM111および112もまた、異なる物理的サーバ113および114で実装される。データ空間ハイパーサーバ121に関して、その3つのVM126、127、および128は、それぞれ、異なる物理的サーバ113、114、および115で実装される。
また、物理的サーバが同一である必要はないことも図1から明白である。実際、例えば、サーバ113、114、および115は、第1層記憶装置に使用され、サーバ116を含むサーバは、第2層記憶装置に使用される。最終的に、本実施例におけるサーバ131および132は、クラウドベースのサーバであり、データ空間ハイパーサーバ125によってインターネットを経由してアクセスされ、低頻度でアクセスされるデータに使用され、アクセスにおける待ち時間は、あまり重要ではないと見なされる。
(II.主要Hyperfiler抽象概念)
この節は、本システムが実装する主要抽象概念、およびそれらが下にある物理デバイスに関する方法を説明することによって、前の節を踏まえる。
(ハイパーボリュームおよびハイパーサーバ)
ハイパーボリュームは、物理的記憶媒体の上に複製された高可用性記憶装置を構築し、ネットワークにわたって記憶デバイスをアドレス指定する方法を提供する、抽象概念である。本質的に、ハイパーボリュームを、ハイパーサーバの全てのメンバーにわたって実装される記憶装置の冗長論理ボリュームと考えることができる。(単一のメンバーを伴うハイパーサーバの特別な場合において、概して、SAN LUNの場合のように、使用される物理的記憶装置自体がブロックレベルで冗長ではない限り、ハイパーボリュームはいかなる冗長性も提供しないであろう。)(この抽象概念は、本システムが提供する総合的見解の一部である、より管理可能な要素にHyperfilerにおける記憶装置を区分化するために使用される。)各ハイパーサーバは、そのHMを通して専用ハイパーボリュームにアクセスして管理する。
SAN内のLUNの場合のように、冗長ブロック記憶装置の場合でさえも、ハイパーボリュームは、追加の冗長性を構築することができるが、これは必要ではなく、おそらく、記憶リソースの無駄をもたらすであろう。
複数のHMにわたって物理的ボリュームのコンテンツを複製することによってハイパーボリュームが構築されると、そのHMを通して、ハイパーサーバは、全ての複製がロックステップにおいて進展することを確認する。
ハイパーボリュームは、Hyperfilerの2つの別個のコンポーネントが常駐し得る、リポジトリである。それらは、以下である。
・名前空間コンポーネント。
・データ空間コンポーネント。
2つのコンポーネントのうちの少なくとも1つが、ハイパーボリュームの一部でなくてはならないことに留意されたい。しかしながら、両方のコンポーネントが常に存在する必要はなく、これは、Hyperfilerの動作および管理において高レベルの融通性を可能にする。
ハイパーサーバがハイパーボリュームのアクティブマネージャであり、ハイパーボリュームがハイパーサーバの専用のための潜在的に冗長な記憶リソースであるため、ハイパーボリュームおよびハイパーサーバは連動する。したがって、ハイパーボリュームの状態を変更する(ファイルまたはディレクトリを作成または削除する、あるいはファイルに書き込む)ために、クライアントは、適切な要求をハイパーサーバに送信しなければならない。
本システムは、整数識別子を各ハイパーボリューム/ハイパーサーバに割り当て(ハイパーボリュームIDまたはHID)、そのようなコンポーネントの全てのアドレス指定は、そのような識別子を通して行われる(同一のIDがハイパーサーバおよびそのハイパーボリュームを識別する)。これは、ハイパーサーバ内の1つのHMの損失が、データまたはメタデータにアクセスしようとするクライアントに常に透過的であるように、所与のハイパーボリューム/ハイパーサーバの物理的メンバーの情報から通信側面を分断することを可能にする。また、HMが故障または他の理由により交換されると、ハイパーサーバ全体の利用停止を伴う壊滅的損失が起こらない限り、サービスのクライアントは、これの全てを認識しないままとなる。(この性質の事象は、Hyperfilerが提供する高い程度の冗長性により、起こることが期待されない)。
ハイパーサーバ内のHMの数は、ハイパーサーバの「基数」と呼ばれる。(これはまた、下にあるハイパーボリュームの属性でもあり、ハイパーボリュームは、それが属するハイパーサーバの基数と同数の複製を有する。)
これは、ハイパーサーバが最初に構成されるときに選択される。これは、後で変更されることができる。しかしながら、基数は、常に、実装することを選択する冗長性のレベルに応じて、1〜4の範囲内の小さい数である。各個々のハイパーサーバは、異なる基数を提供するように構成されることができることに留意されたい。
各HMは、サーバID(SID)を割り当てられる。慣例により、割り当てられる第1のSIDがSID=0であるため、SIDは、常に、ハイパーサーバの基数より小さい、小さい数である。各メンバーは、ハイパーサーバに再参加するときにそのSIDを受信し、ハイパーサーバから退出するまで、またはクラッシュする場合まで、それを保持する。新しいHMは、その時点で未使用であるSIDを受信する(退去させられた、またはクラッシュしたHMで使用されていた、以前に使用されたSIDであり得る)。
任意のハイパーサーバ内で、1つのメンバーは、常に一次メンバーであるように選択される。このメンバーは、データまたはメタデータにおける状態の変化を伴う任意の要求を仲裁するので、特別な立場を有する。
ハイパーサーバの一次メンバーが任意の理由でクラッシュするか、またはダウンするとき、ハイパーサーバの別のメンバーが主要な役割を引き継ぎ、利用可能である場合、欠落しているメンバーHMに取って代わるように、システム管理ソフトウェアによって、新しいHMが自動的にもたらされる。どのハイパーサーバメンバーが主要な役割を引き継ぐであろうかという選択は、選択が決定論的であり、個々のメンバーの状態属性に基づくため、選択プロセスを必要としない。いかなるHMも主要な役割を引き継ぐために利用可能ではない場合、ハイパーサーバは、劣化モードで動作し続ける。
主要メンバーになる二次HMは、そのSIDを保持し続けることに留意されたい。
HMは、以下の遷移のみを行うことができる。
・非メンバーから一次または二次メンバーへ。
・二次メンバーから一次メンバーへ。
・一次または二次メンバーから非メンバーへ。この最後の遷移は、メンバーがクラッシュする場合に自動的に起こるか、またはその一貫しない状態の検出によって引き起こされるメンバーの退去によって引き起こされ得る。
いかなる状況でも、退去させられるか、クラッシュしない限り、一次メンバーは、その役割を放棄し、二次メンバーになることができないことに留意されたい。
クライアントが要求をHyperfilerに送信するとき、これは、名前空間要求またはデータ要求のいずれか一方である。名前空間要求は、パス名を伴い、そのパス名を管理しているハイパーサーバに送信されなければならないものである。パス名と関連ハイパーサーバとの間のマッピングは、これから先に説明される機構を介して起こる。データ要求は、標的ハイパーサーバのHIDを含むハンドルに基づいて動作するため、自己識別する。
ハイパーサーバへの2つのタイプの着信要求がある。
・読み取り型要求:このカテゴリにおける任意の要求が行われた後、ハイパーボリューム内のデータまたはメタデータの状態は変化していない。このタイプの要求は、ファイル読み取り、ディレクトリ一覧、ファイルメタデータの取り出し等を含む。
・書き込み型要求:このクラスにおける要求は、ハイパーボリューム内のデータまたはメタデータへの変更を引き起こす。このカテゴリにおける要求は、ファイル書き込み、ファイル作成または名前変更等である。
ハイパーサーバの任意の個々のメンバーが、任意の読み取り型要求を取り扱うことができる。ハイパーサーバに送信される要求は、負荷を区分化するよう、そのメンバーの間で分配される。本システムは、ファイルデータの任意のローカルキャッシングを活用するように、特定のファイル範囲に関する要求を処理するメンバーが、常に同じメンバーであることを確認する。本システムは、クライアントに利用可能な要素、すなわち、パス名ベースの要求についてはパス名、IDベースの要求についてはファイルのIDに基づいて、クライアントにおける読み取り型要求の分配をアルゴリズムで達成する。
全ての他のメンバーが行うように読み取り型要求にサービスを提供することに加えて、一次メンバーはまた、書き込み型要求の処理を調整することを担当する。一次メンバーは、そのような要求が完了したときに全てのメンバーが依然として同期化されていることを確認しなければならず、準拠することまたは再同期化されることができなかったハイパーサーバのメンバーを修復および再同期化するか、退去させるかが可能でなければならない。したがって、一次メンバーは、全てのメンバーが要求の実行の完了に成功したときのみ、肯定確認をクライアントに返す。代替として、本システムが構成される方法に応じて、一次メンバーは、ハイパーサーバのメンバーの大多数が動作を実行したときに確認を返し得る。後者の場合、トランザクションを完了することができなかったメンバーは、適正に標識され、トランザクションが遅延した様式で完了されるか、またはメンバーがハイパーサーバから退去させられる。
Hyperfilerが可変数のハイパーサーバを集約し、ハイパーサーバが同じコンテンツを複製するので、効率的なHyperfiler動作は、所与のハイパーサーバ内の効率的な相互作用のみに依存する。実際、書き込み型要求(ハイパーボリューム状態を変更するため、調整を必要とする唯一のタイプ)を調整するために必要とされる通信の量は、最小限である。結果として、Hyperfilerは無制限に拡張することができる。なぜなら、要求が実行される迅速性は、全体的なHyperfilerサイズの関数ではなく、本質的に小さいハイパーサーバサイズの関数でしかないからである。したがって、Hyperfilerは、ハイパーサーバの連合として挙動し、性能は、Hyperfilerサイズとともに直線的に拡大縮小する。
ファイル動作に対するIDベースの要求は、ハイパーボリューム内に記憶され、HIDを含む一意のIDを介して識別されるファイルセグメント(範囲)に作用する。したがって、各そのような範囲IDは、常に、Hyperfiler全体にわたって大域的に一意である。
ドライブまたはノードが故障し、関連HMがそれとともに故障するとき、利用可能である場合、システム管理が置換用HMを取り込む。これは、ハイパーサーバメンバーと通信するために使用される、HIDと下にあるIPアドレスとの間のマッピングを置換することを伴う。次いで、ハイパーボリュームの存続メンバーに記憶されたデータは、新しいメンバーとしてハイパーボリュームに参加する新しいHMに複製される(データ自体が固有の記憶冗長性を提供するSANまたはSANのような設備にすでに依存していない限り)。新しいメンバーが残りのハイパーサーバと同期化されると、それは、そのピアとともに、着信要求にサービスを提供し始める。
基数が、関連ハイパーボリュームが提供する複製のレベルを定義するので、同一のHyperfiler内の異なるハイパーサーバに異なる基数を割り当てる能力は、いくつかの利点を有する。どのハイパーサーバ(およびハイパーボリューム)が所与のファイルをホストするかを選択することによって、本システムは、より高いまたは低い固有の冗長性をファイルデータに割り当てることを可能にする。これは、より高いまたは低いレベルの冗長性を与えられるべきであるファイルを顧客に選別させ、したがって、あるデータが顧客に対して有する重要性に基づいて、利用可能な記憶装置の最適な割り付けを可能にする。所望のレベルの冗長性への割り付けは、ファイルが常駐するディレクトリ、またはファイルのサフィックスに基づく等、他の基準に従って、行われることができる。代替として、単純化した実施形態では、全てのハイパーサーバの基数は、単一のHyperfiler全体に及ぶ値に制限される。
(ネットワーク層)
ネットワーク層は、Hyperfilerファイル記憶プロトコルを実装することに関与する。プロトコルは、TCPよりもむしろUDPに基づく。これは、いくつかの利点を有する。
・これは、通信が効率化され、非常に効率的になることを可能にする。
・これは、接続指向相互作用に依存しない。これは、オーバーヘッドを削減し、エンドツーエンド意味論の実装を単純化し、かつ、ネットワーク中断、および要求に返信するエンティティが要求が送信されるべきであったものとは異なる場合により良好に対処するので、有利である。(例えば、後者が異なるメンバーによって完了されることを成功できた場合、要求に対処していたハイパーサーバメンバーにおけるエラーを克服するために非常に有用である。)
一方で、これはまた、メッセージのシークエンシング、保証された送達、非重複等に適正に対処するために、遠隔手続呼び出し(RPC)層が純トランスポートの上に実装されることをも要求する。
Hyperfilerファイルシステムの上層は、同期要求に関してハイパーサーバに対処し、前の副次節で記述されるように、ハイパーサーバメンバーに関連付けられるIPアドレスも個々のハイパーサーバの基数も認識する必要がない。それでもなお、ネットワーク設備の下層は、ハイパーサーバのメンバーである特定のIPアドレスへのユニキャストメッセージに関して通信に対処し、非同期機構を使用することによって同期ネットワーク意味論を下に実装する。これは、より低いレベルで非同期並列ネットワークI/Oの融通性および効率に依存しながら、分散ファイルシステム層における論理を単純化する。
ネットワーク層を呼び出すファイルシステム層は、ハイパーサーバのメンバーのうちのいずれに任意の所与のメッセージが送信されるべきかを特定することができる。これは、達成される動作に応じて、2つの方法で行うことができる。
クライアントがその要求を一次メンバー二次メンバー、全ての二次メンバー、またはハイパーサーバの全てのメンバーに送信することを所望する場合、クライアントは、上記の場合のうちのいずれかを特定することを可能にされる。
代替として、ビットマップに基づいて、クライアントは、所与の要求の標的がメンバーのうちの1つ以上であるかどうかを特定することができる。各メンバーは、メンバーがハイパーサーバに属する限り保持され、そのインデックスを使用していたメンバーがハイパーサーバメンバーシップから退出するときに新しいメンバーに再割り当てさられるのみである内部ハイパーサーバインデックスを受信するので、これは、目的とするメンバーを明白に識別する。また、ビットマップがこの目的で使用されるため、1つだけ、いくつか、または全てのメンバーをこのようにしてアドレス指定することができることにも留意されたい。
これは、ネットワーク層に送信される各要求がフラグを含むことを伴い、フラッグは、2つのアドレス指定モードのうちのいずれがその要求に使用されるか、および前者に基づいて、メンバーのうちのいずれが選択される形式に従って標的にされるかを識別する。
また、要求クライアントによって受信される任意の返信は、返信したメンバーのインデックスを用いて識別されることにも留意されたい。ネットワーク層が、同期高レベル要求を選択された受信者への非同期要求へマップするので、複数の返信がある場合、この同じ層が全てのそのような返信を単一の集約返信に組み立てることに留意されたい。返信の各セグメントは、返信したメンバー(およびその役割)のインデックスを搬送する。
ネットワーク層はまた、Hyperfilerのクライアント内でサーバ設備を実装する。クライアント側で提供されるサービスは、非常に最小限で単純であるが、有用であり、クライアントが依然としてアクティブであるかどうか、またはそれらが取得したあるオブジェクトが依然として使用中であるかどうかを立証し、本システムの融通性を増進する。
Hyperfilerでは、ファイルシステム層は、以下の様式でクライアント要求を実行する。
クライアントは、Hyperfiler名前空間をローカルマウントポイント(空であり、その下でクライアントがHyperfilerの名前空間を参照し、それにアクセスすると考えられるであろうローカルディレクトリ)にマウントする。マウントは、マウントに関与するHyperfiler全体に及ぶ周知のエンティティにアドレス指定される。これは、本システムが起動するときに単一のハイパーサーバに要求が殺到することを防止するために、複製エンティティであることができることに留意されたい。マウントが行われるとき、クライアントは、Hyperfilerから、Hyperfilerの組成を表すデータ構造を受信する。これらは、ハッシュバケットをハイパーサーバにマップするハッシュテーブル、Hyperfilerにおけるハイパーサーバの数、および各ハイパーサーバのメンバーシップを表すテーブルを含む。
ファイルシステム動作が必要とされるとき、クライアント内のファイルシステム層は、適切な要求を下層に送信する。要求の性質は、必要とされる相互作用のタイプを決定する。ファイルを開くことなどの名前関連要求は、パス名が64ビット数にハッシュ化されることをもたらす。次いで、番号が、その中にハイパーサーバIDが記憶されているハッシュテーブルにおける1つの特定のスロットをアドレス指定するために使用される。これは、クライアントがその要求をアドレス指定すべきハイパーサーバの指示を下のクライアント層に与える。
次いで、要求は、特定ハイパーサーバにアドレス指定されるために、ネットワーク層に送信される。ネットワーク層は、ハイパーサーバIDをそのメンバーのうちの1つのIPアドレスに変換し、要求を適切なハイパーサーバメンバーに送信する。これは、返信を待ち、これが起こるときに、返信はファイルシステムの上層に転送される。
これに関して、全体として考慮されるべき複数の事情がある。最初に、Hyperfilerが経時的に進展する。これは、ハイパーサーバの数が増大し得ること、ハイパーサーバ内のメンバーHMの総数が変化し得ること、および、HMがクラッシュして交換され得ることをも意味する。これは全て、ハッシュテーブル、ならびに各ハイパーサーバの組成に対する変更を引き起こし得る。この理由により、ハッシュテーブル、およびハイパーサーバを表す各テーブルは、単調に増加する関連世代番号を有する。ハッシュテーブルが修正される度に、この番号は昇進させられる。任意のRPCは、使用されるハッシュテーブルの世代番号、およびRPCが向けられるハイパーサーバの世代番号を搬送する。これは、受信端におけるエンティティが、更新を必要とすることをクライアントに知らせることによって旧世代番号を搬送する任意の要求に反応することを可能にする。これは、非常に非同期的かつ漸進的な様式で、ハッシュテーブルおよびハイパーサーバ組成が必要に応じて伝搬されることを可能にする。
Hyperfilerのシステム管理コンポーネントは、ハッシュテーブルおよびその世代番号、ならびに個々の世代番号を伴うハイパーサーバ構成を維持することに関与する。
(Hyperfiler名前空間)
本明細書の種々の実施形態によるシステムの名前空間は、完全に分散されている。Hyperfilerクライアントは、ファイルまたはディレクトリのパス名に基づいて所与のファイルまたはディレクトリを管理するハイパーサーバのHIDを識別することができる。これは、任意のファイルシステムオブジェクトにアクセスするために、任意のクライアントが、通信する必要があるハイパーサーバを知ることを可能にする。HIDへのパス名のマッピングは、ハッシングを介して達成される。本質的に、各Hyperfilerクライアントは、NFSのために行うであろう同程度に、クライアント自体にローカルであるディレクトリ上でHyperfilerの「マウント」動作を行う。マウントのときに、クライアントは、2つのテーブル、ハイパーサーバテーブル(HT)、およびディレクトリハッシュテーブル(DHT)を含む、ある量のHyperfiler情報を取り出す。
ハイパーサーバテーブル(HT)は、Hyperfilerで利用可能な全てのハイパーサーバをそれらの組成とともに一覧化する。これは、HIDとハイパーサーバのメンバーのIPアドレスとの間のマッピングを提供する。下にあるネットワーク層は、Hyperfilerクライアントがハイパーサーバメンバーと相互作用することを可能にするこのテーブルの一次ユーザである。前述のように、ハイパーサーバ世代番号は、各ハイパーサーバ構成を保護する。これは、各ハイパーサーバ内の構成変更を追跡することを可能にする。ネットワーク層が、ハイパーサーバに送信される各メッセージ内にこの世代番号を自動的に挿入するので、ハイパーサーバは、世代番号の任意の非一貫性を診断することができ、したがって、HTのそのコピーをリフレッシュする必要があることをクライアントに警告することができる。Hyperfilerに対して変更が適用されるときはいつでも(例えば、HMがクラッシュするかアクセス不可能になるとき、または新しいHMがHyperfilerにアタッチされる場合)、HT内のエントリが変化することに留意されたい。
ディレクトリハッシュテーブル(DHT)は、ディレクトリをHIDにマップする。概念的観点から、これは、単に、各々がハイパーサーバのIDを含むスロットのアレイである。マッピングは、多数対1であり、これは、一般に、複数のスロットが同一のハイパーサーバを指し示すであろうことを意味する。クライアントがパス名を解決する必要があるとき、それは、Hyperfiler上の絶対パス名(目的とするファイルシステムオブジェクトの親ディレクトリまで(親ディレクトリを含む))をDHT内の1つのエントリにハッシュ化する。このエントリは、ディレクトリを管理しており、そのディレクトリ内のオブジェクトに対する任意の要求が送信されるべきハイパーサーバのHIDを提供する。DHTは、Hyperfiler状態とそのクライアントの状態との間の任意の非一貫性の検出を可能にするように、それ自体が世代番号によって保護される。したがって、そのような非一貫性は、検出されるとすぐに、オンザフライで修復されることができ、それらは、目的とするDHTエントリが使用されているときに検出されることができるため危険ではない。ハッシングの本質により、単一のDHTエントリは、複数のディレクトリをマップする。また、DHTは、複数のDHTエントリが同一のハイパーサーバを指し示すことができるように、HTより多くのエントリを含むことが期待される。発想としては、100:1の比がDHTスロットの数とハイパーサーバの数との間に存在すべきである。これは、例えば、ボトルネックを緩和するように、またはハイパーサーバにわたるDHTエントリの再分配が必要とされるときに、1つのハイパーサーバから別のハイパーサーバへの特定のエントリ(および関連ディレクトリ)の再標的化を可能にする。
両方のテーブルは、Hyperfilerにおけるハイパーサーバの数に敏感であることに留意されたい。この数が動的に変動し得るので、テーブルは、適切であるときに更新される必要がある。Hyperfiler側では、HTは、ハイパーサーバの組成の変化が起こる度に更新される。クライアント側では、これは、クライアントが、世代番号が変化したハイパーサーバを使用しているときのみ必要とされる。
DHTは、新しいハイパーサーバがHyperfilerに追加されるときに更新されることができる。新しいハイパーサーバが追加された後に、たとえDHTが更新されなくても、Hyperfilerがその機能を実行し続けることができるという意味で、これは強制的ではないことに留意されたい。この場合、新しいハイパーサーバは、依然としてデータファイルを記憶することができるであろうが、名前空間の分配に参加しないであろう。これは、(上層ハイパーサーバの場合は)過渡状態であり得るが、(データファイルのみを記憶する)下層ハイパーサーバの永久状態であり得ることに留意されたい。
DHTはまた、1つの重要な性質を満たさなければならない。それが拡張されるとき、ハッシングスキームは、拡張後にテーブルエントリが意図的に変更されない限り、拡張前にハッシングを介して取り出されるHIDが、拡張後に取り出されるHIDと同一でなければならないようなものでなければならない。これを明確にするために、所与のディレクトリ名をハッシュ化することによって、拡張前にDHTから取り出されるHIDがNであり、次いで、DHTがサイズを拡張される場合、拡張が完了した後に、同一のディレクトリが依然としてNをもたらさなければならないことを想定されたい。しかしながら、テーブル拡張が完了した後、本システムは、必要であれば、より一様な分配を提供するように、エントリにわたってHIDを再分配することを可能にされることに留意されたい。しかしながら、これはまた、置換されているハイパーサーバによって以前に管理されたディレクトリを、引き継いでいるハイパーサーバに移動させることを伴う。したがって、DHT拡張を用いてマッピングを保持する場合、ディレクトリの移動、これへのハイパーサーバの積極的な関与を必要とする動作は、あるDHTエントリが置換されるときに行われる必要があるのみである。
(記憶装置クラス)
メタデータおよびパス名に対処する名前空間への対応物は、顧客のファイルを記憶するために使用される実際の記憶インフラストラクチャである。
ハイパーサーバの特性により、Hyperfilerが構成されおよび拡張された場合、基数、およびクラスの一部であるハイパーサーバの記憶装置特性によって識別されることができる別個の記憶装置クラスを作成するハイパーサーバを構成することは、容易である。したがって、極端な手段として、最大限の保護のために、複製が3つまたはさらに4つのメンバーにわたって行われる高冗長性記憶装置クラスに属するハイパーサーバを有し、他の極端な手段として、複製を全く提供することができず、一時データおよび低い本質的価値を伴うデータのみに使用されるであろう無冗長性記憶装置クラスに属するハイパーサーバを有することが可能である。同様に、HMにわたる冗長性を伴わず、弾力性を増加させるが高い可用性を実装しない、ある程度の内部冗長性を伴うハイパーサーバおよび記憶装置クラスを構成することが可能である。(基数が1に設定され(冗長性がない)、ハイパーボリュームがRAIDセットで作成されるハイパーサーバが、これを達成することができる。この場合、(構成に応じて)RAIDセット内の1つ以上のドライブの損失に対する弾力性があるが、そのようなハイパーサーバをサポートする物理的または仮想デバイスのクラッシュ中の可用性の損失に対する保護を提供しない。)
記憶装置クラスはまた、使用中のドライブの種類にも基づき得る。例えば、顧客は、より良好に保護される必要があるデータにSASドライブを専念させるために、SATAおよびSASドライブの両方を使用するHyperfilerを有することを所望し得る。また、記憶装置クラスは、実際に、低頻度で使用されているデータの低コスト記憶装置のための外部オブジェクト記憶部と連動することができる。
新しいファイルが作成された場合、Hyperfilerの名前空間は、ファイルが常駐するディレクトリ、ファイルの名前のサフィックス等に基づいて、記憶装置クラスをファイルに割り当てる構成規則を使用して、適切な記憶装置クラスを選択する。
Hyperfilerは、メタデータを走査し、各ファイルが顧客選択時間窓内でアクセスされたかどうかを検証することによって、記憶装置クラスにわたってファイルを移動させることができる内蔵機構を有する。次いで、顧客選択ポリシーは、最近アクセスされていないファイルを、より低い可用性および/またはより高いアクセス時間を伴うより低い記憶装置クラスに移動させることができる。これは、自動的に行われ、そのようなファイルのパス名が全く影響を受けないであろうから、名前空間に影響を及ぼさず、走査は、名前空間のみに影響を及ぼすであろうから、いかなる実際のディスク入出力も伴わずに行われるであろう。
(名前空間抽象概念)
名前空間は、Hyperfilerの中心である。名前空間の分散型性質は、メタデータおよびデータの両方が完全分散型であるため、Hyperfilerの線形拡大縮小の手掛かりである。
名前空間の設計は、より従来的なファイルシステム設計の一部ではなく、現代のサーバのコンポーネントの相対的性能および能力により意味を成す、いくつかの重要な観察を中心に展開する。
現代のNICによって提供されるネットワーク帯域幅および待ち時間は、ローカルハードディスクの特性と良好に匹敵するか、それを超える。また、ハードディスクが維持することができる1秒当たりの入出力動作の最大数は、過去数年の間にほとんど変化しておらず、依然として1つのドライブ当たり約100に限定される。
現在のマルチコアCPUは、記憶および入出力動作のための計算能力を交換することを可能にする。
名前空間自体をデータ空間から完全に分断することができる。こうすることは、性能属性に関して、データ空間が記憶されるデバイスとは非常に異なり得るデバイス上に名前空間を配置することを可能にする。これは、データ記憶部へのアクセス時間にかかわらず、効率的な高速パス名参照を確実にするために重要であり得る。
コンピュータまたはHMで利用可能なRAMの量は、通常、1ギガバイトを超える。これは、ファイルシステムメタデータを構造化する新しい方法を可能にする。
Hyperfilerは、単一のハイパーサーバを伴って構成されることができることに留意されたい。この場合、全ての名前空間およびデータ空間は、唯一のハイパーサーバによって管理される。結果として生じる名前空間は、典型的には、ネットワークにわたってアクセスされるために利用可能である。しかしながら、アーキテクチャはまた、それがサポートする抽象概念がこれを可能にするため、ローカルファイルシステムを効率的に実装することができる。
しかしながら、Hyperfilerは、概して、複数のハイパーサーバに及ぶことが期待される。これを達成するために、名前空間およびデータ空間の両方は、ハイパーサーバにわたって分配される。最初に、どのようにして名前がハイパーサーバにわたって分配され、次いで、どのようにして名前空間のローカル部分がハイパーサーバ内で対処されるかを議論する。
(ハイパーサーバにわたる名前空間の分配)
ハイパーサーバにわたる名前空間の分配は、任意のクライアントが、その要求を送信すべきハイパーサーバを即時に認識するように行われる。分配基準は、以下の考慮事項に依拠する。
・ディレクトリのコンテンツを効率的に一覧化する能力は、分散型名前空間内で保持されなければならず、性能は、集中型名前空間の性能に劣るべきではない。
・名前空間内で新しいコンポーネントを作成する能力は、名前の対立が存在するかどうかを検証する能力に依存し、これは、効率的にサポートされなければならない。
・ディレクトリ内のファイルの存在は、データファイル自体が、その親ディレクトリにサービス提供する同一のハイパーサーバによって管理されることを示唆すべきではない。これは、ボトルネックを回避するために重要であり、ファイルおよびディレクトリがハイパーサーバにわたって分配されることを可能にする。
ファイルシステムオブジェクト名は、ファイルシステムオブジェクトの親ディレクトリに基づいて、Hyperfilerにわたって分配される。このスキームは、Koshaで採用されるものに類似し、ディレクトリ名を異なるハイパーサーバにハッシュ化する。Proceedings of the ACM/IEEE SC2004: High Performance Computing,Networking and Storage Conference,Pittsburgh,PA,November 6−12,2004内のAli Raza Butt,Troy A.Johnson,Yili Zheng,and Y.Charlie Hu,“Kosha: A Peer−to−Peer Enhancement for the Network File System”を参照されたい。しかしながら、Koshaとの主要な違いは、ハッシングがサブツリーよりもむしろ任意の個々のディレクトリに適用されることである。したがって、ディレクトリとその子サブディレクトリとが異なるハイパーサーバによって管理されるであろう可能性が高い。ディレクトリは、名前空間内で直接表される。したがって、それらは、ファイルに使用されるデータ空間内に別個の記憶領域を必要としない。
パス名を参照することによって、クライアントは、パス名がファイルまたはディレクトリを指すかどうかを把握しない場合があることに留意されたい。いずれの場合においても、これは、パス名内のリーフコンポーネントの性質が何かを識別するために、親ディレクトリを利用するであろう。これがファイルである場合には、親ディレクトリを管理するハイパーサーバが、全ての問い合わせが送信されるべき場所である。リーフコンポーネントがディレクトリである場合には、その親は、そのディレクトリの全ての関連属性を記憶し、親のハイパーサーバは、要求の標的であるべきである。その上、ディレクトリのコンテンツを一覧化する要求は、ディレクトリを管理するハイパーサーバに送信される必要がある。本質的に、ディレクトリは、複数のハイパーサーバ内で複数のインカーネーション(incarnation)において存在する。
ディレクトリ情報は、その親を管理するハイパーサーバ内に記憶される。これは、ディレクトリのための権威あるハイパーサーバである。
ディレクトリ自体を管理するハイパーサーバは、ディレクトリのコンテンツのための権威あるハイパーサーバであり、そのディレクトリ内のあらゆるものに対する全ての要求は、このハイパーサーバに到達すべきである。
任意のディレクトリのシャドウコピーが、名前空間接続性を保証するために、必要に応じてハイパーサーバ内に存在することができる。
これを例示するために、「/first/second/third」と名付けられたディレクトリの場合を考慮されたい。「/」(Hyperfiler全体のルーツ)が、ハイパーサーバAにハッシュ化され、「first」が、ハイパーサーバBにハッシュ化され、「second」が、ハイパーサーバCにハッシュ化され、「third」が、ハイパーサーバDにハッシュ化されることを仮定されたい。ここで、「/first/second/third」の属性を要求したい場合には、要求はCに送信されるべきである。一方で、「/first/second/third」のコンテンツを一覧化する、または「/first/second/third」の下の任意のファイルにアクセスする要求は、ハイパーサーバDを標的にすべきである。これに加えて、「/first/second/third/fourth/fifth」と名付けられたディレクトリが存在する場合、「/first/second/third/fourth/fifth」を伴う要求を処理することができなければならない任意のハイパーサーバはまた、「/first/second/third/fourth」のシャドウコピーも含まなければならない。
(名前空間の持続性)
仮想メモリベースの名前空間は、明確に持続的であることを要求し、これは、仮想メモリ内のファイルメタデータに行われる任意の修正がクラッシュ後でさえも利用可能であるように、そのコンテンツが実際にディスクにバックアップされなければならないことを意味する。これは確かに、システム性能への影響を最小化しながら、これを提供するためにインテントログ設備を利用するHyperfilerの場合である。インテントログはトランザクショナルであり、名前空間が最後に完了された名前空間トランザクションに対して常に最新の状態であることを可能にすることに留意されたい。クラッシュの場合、ハイパーサーバの再起動は、ディスク上の名前空間の持続的コピーに記録された最後のトランザクションを適用すること、および最新の完了したトランザクションへのそのメモリ内見解の初期化を伴う。
Hyperfiler内の名前空間は、そのデータをデータリポジトリ内に記憶する必要性がないため、データリポジトリから分断される(参考文献[2])。この分断は、これらの実施形態におけるファイルシステムの設計を単純化し、名前空間内のデータの量を最小化する。したがって、これは、それをRAMに記憶するために、後者を好適にする。
(主要データ構造)
Hyperfilerの名前空間内のパス名の集合は、パトリシア木として、すなわち、一種の順序付けられたツリーデータ構造として実装される。具体的には、このツリー様データ構造は、いくつかの非常に重要な属性を有する。
・これは、ツリーのサイズに依存しないが、むしろ参照されている文字列(Hyperfiler内のパス名)のサイズに依存する、極めて高速の検索を達成する。
・これは、共通ステムを伴うアイテムをともにグループ化するという点で、極めてコンパクトである。
・これは、分別された順番でそのエントリを保つ。
最悪の場合、任意の個々のパトリシア木ノードは、256以下の子を有し、これは、ツリー構造がリンクされたリストに類似するものに畳み込まれることを防止する自動機構を提供する。これは、主要な肯定的性能影響を有する。
Hyperfilerパトリシア木は、ノードの性質についての基本情報を保つ固定サイズノードで作成され、ノードの性質は、ノードの種類(ファイルシステムファイルまたはディレクトリ等のファイルシステムノードよりもむしろ、パトリシア木を組み立てるために必要とされる内部ノードであるかどうか)、それに関連付けられる文字列、ノードおよびその子に作用するために必要とされるロック、子および親ノードへのポインタ等を含む。
ファイルシステム内の各ノードが、(許可、所有権情報、日付、および範囲IDのような)ファイル属性とともに、任意の長さの文字列を記憶することができなければならない場合、それは、多くのノードがフィールドのうちのいくつかを使用しないであろう大型データ構造である必要があろう。例えば、内部パトリシア木ノードは、ファイル属性を必要としない。ディレクトリノードは、それらに関連付けられる情報の全てが、データリポジトリ等の中よりもむしろパトリシア木の内側にあるため、範囲IDを必要としない。
これを最良に克服するために、各ハイパーサーバ上のローカル名前空間は、固定サイズのエントリの3つの連続したアレイに関して実装される。
・ファイルテーブル(FT)−このアレイは、各ファイルの第1の範囲に対する範囲IDとともに、ファイルまたはディレクトリの属性を記憶する。参考文献[2]で説明されるように、このIDは、その名前空間コンポーネントが常駐する同じハイパーサーバ内にデータが常駐する必要がないように、Hyperfiler全体にわたって大域的である。
・文字列テーブル(ST)−このアレイは、連続した塊に集約されることができ、ノードテーブル内に収まらないであろう文字列を記憶する固定長セルで作成される。
・ノードテーブル(NT)−このデータ構造は、必要とされる場合、文字列のサイズがNTエントリで利用可能な記憶容量を超えるときのST内の文字列または文字列のID、パトリシア木内の接続NTエントリのインデックス、NTエントリに関連付けられたフラグ、および関連FTエントリのインデックスとともに、各ノードのロックを記憶する。
NTの2つのエントリは特別である。
・エントリ0は、利用可能な名前空間の全てのルートへのポインタの役割を果たす。この間接レベルを有することは、将来、1つの名前空間または複数の名前空間のスナップショットを実装することを可能にし得る。
・NTのエントリ1は、POSIX名前空間のルートディレクトリであり、「/」に対応する。
任意のNTエントリは、以下に関連付けられることができる。
・関連文字列がエントリ内に収まり、エントリが関連FTエントリを有さない場合(内部パトリシア木ノード、またはパス名の中間コンポーネントにすぎないディレクトリの場合で、どちらかが短い関連文字列を有する限り)、他のテーブル内のエントリに関連しない。
・これが短い文字列を伴うファイルまたはディレクトリである場合、FT内の1つのエントリ。
・これが、内部パトリシア木ノード、またはパス名の中間コンポーネントにすぎないディレクトリであり、文字列がノードの容量を超える容量を有する場合、ST内の1つ以上の連続したエントリ。
・これがそのNTエントリの容量を超える文字列を伴うファイルまたはディレクトリである場合、1つのFTエントリおよび1つ以上の連続したSTエントリ。
各HM内の名前空間サーバが、(存在する場合)関連データリポジトリも作動させるマルチスレッドプロセスを実行することに留意されたい。スレッド間の同期化が、名前空間にアクセスする際に必要とされ、排他的アクセスが、更新されているノードに限定される一方で、修正されていないパトリシア木ノードへの共有アクセスを可能にするであろうため、これに読み取り書き込みロックを利用することが望ましい。しかしながら、ここでの最重要点は、FT、ST、およびNTのためのコンパクトなデータ構造を有することである。各ロックが多くのバイト数を必要とされる場合、NTのサイズは大幅に増大し、これはRAMの中でそれを保つ可能性を制限するであろう。したがって、Hyperfilerで使用されるスレッディング設備は、わずかなメモリ占有容量を有する読み取り書き込みロックを実装する。
また、パトリシア木を横断する際のロッキングアルゴリズムは、読み取り型動作については、各ノードが読み取りモードにロックされ、その子のそれが取得されたときにその親がロック解除されるようなものである。これは、ロックすることを2つのレベルに限定し、階層が降下させられるにつれて、パトリシア木内の上部ノードが利用可能になるように、階層様式でそれを行う。これは、読み取り側と書き込み側との間の競合を最小化し、デッドロック(循環性)の4つの必要条件のうちの1つを排除する、ロックの間の順序付けを誘発するため、デッドロックを回避する。
書き込み型動作については、修正されるノードの親に到達するときに、書き込みモードにロックされ、名前空間修正が完了するまでロックされたままであるという事実を除いて、類似アルゴリズムが適用される。
また、パトリシア木ノードをロックすることによって、他のスレッドとの起こり得る対立を伴うことなく、NTエントリ(存在する場合)に関連付けられるFTおよびSTエントリに作用できることにも留意されたい。
自由リスト上の競合を回避するように、名前空間の一部であるテーブルの各々の中のエントリを割り付けおよび割り付け解除するために、別個のミューテックスが使用される。
(持続性およびインテントログ)
持続性は、ファイルシステムにおいて最重要であり、名前空間パトリシア木は、持続的でなければならない。それを完全にRAMベースにすることは、これを達成しない。この理由により、前述のテーブルの各々は、バッキングストアとしてファイルを有し、任意の変更がバッキングストアに書き込まれ、再起動時にテーブルのコンテンツがバッキングストアから読み取られる。
名前空間では、NT、FT、およびST内の各エントリは、巡回冗長検査(CRC)コードを含む。これは、エントリが修正される度に計算される。これらのコードは、エントリがディスクから読み返されるときにチェックされ、ビット崩壊から、および、Hyperfilerが動作するように意図されている規模で無視できない、稀ではあるが起こり得る未検出ディスク読み取りエラーから、主要名前空間データ構造を保護する。
テーブルエントリの各々の小さいサイズを考慮すると、書き込み動作は、バッキングファイル内で多くのランダム検索を必要とし、したがって、ドライブが実現することができる利用可能な入出力動作のうちのいくつかを取り得るので、非常に高価であり得る。
この理由により、全ての更新は、インテントログを使用することによって行われる。後者は、メモリの固定サイズ領域(これは現在1メガバイトに設定されている)をメモリマップすることによって実装される。バッキングストアへの一セットの更新が必要とされるときはいつでも、それらは、各々が関連するテーブルの指示とともにインテントログにコピーされる。単一の動作のための更新が、一緒に結び付けられる。更新を行うスレッド(ハイパーサーバ一次メンバー)は、結び付けられた変更をインテントログに非同期的にプッシュ配信し、次いで、更新を二次メンバーにプッシュ配信する。同期挙動が要求される場合、スレッドは、二次更新が完了されることを待ち、次いで、インテントログが終了されることを待つ。一方で、非同期更新がOKである場合、スレッドは、これまで保持された書き込みロックを解放することによって動作を完了する前に、二次更新が受信されることを待つ必要しかない。
実際のバッキングファイル内の最終ランダムオフセットを標的にすることが、代わりにいかなる中間検索も必要とし得ないにもかかわらず、インテントログは、連続したファイル、したがって、更新のリストにマップされることが期待される。新しい更新が、最初に空のインテントファイルに追加されるので、各マップされたページが満杯になると、非同期的に消去され、更新を持続的にする。同期入出力が要求されるか、または呼び出し側が‘fsync()’呼び出しを行う場合、クライアントへの確認は、目的とするインテントログの部分がディスクにコミットされる場合のみ起こる。したがって、更新は、確認が返信される時間まで安定して記憶されている。インテントログの終了に達するとすぐに、新しいものが着信更新のために作成される一方で、サービススレッドが、非同期的にインテントログから更新を抽出し、それらを実際のバッキングファイルにコミットし始める。これが終了したとき、インテントログは破棄される。クラッシュが起こった場合、再起動時に、名前空間の初期化は、更新がバッキングファイルに伝搬されるように、依然として存在している全てのインテントログの処理を伴う。全ての未解決インテントログが処理されて削除され、バッキングストアが更新されたときのみ、それらは、メモリ内で名前空間データ構造を構成する3つのアレイ(FT、ST、およびNT)に読み込まれる。
(バッキングストアおよびインテントログのさらなる観察)
第1のリリースの標的である上記のスキームの代替案が、この副次節で説明される。
この時点で、完全にデータ投入された名前空間を有するために、ハイパーサーバメンバーが再起動されるときのみ、バッキングストア(NT、ST、およびFTのコンテンツを複製する3つのファイル)が使用されることが明確なはずである。
インテントログからバッキングストアを更新することは、個々のテーブルエントリを更新するための、一連の検索をディスク上で発生させる。これは、直接クライアント要求に対処するためにディスクが実行することができる入出力動作の数を削減するので、望ましくない。したがって、バッキングストアを更新する良好な方式は、インテントログからファイルへの更新を、行われているディスク入出力動作の数が所与の閾値を下回る期間まで遅延させるものであり得る。明確に、この数が潜在的に無限に増大し、合理的であるものを超えるディスクスペースを使用し得るので、多すぎないインテントログが保たれることを保証する必要がある。したがって、非常に長期間にわたって更新を遅延させることを回避するために、ある形態のバックプレッシャが存在しなければならない。
一方で、インテントログの何らかの統合を行うことも可能である。更新されたテーブルエントリのビットマップを保つことができる。これらのビットマップは、最初に0に設定されることができる。次いで、インテントログを後方へ走査し、更新されるべきビットマップに対して更新ビットを設定することができる。エントリ更新が走査されているログの中で見出されたとき、エントリに対する更新ビットがすでに設定されている場合、データの後続のバージョンですでに更新されているので、エントリはさらなる更新を必要としない。したがって、その更新エントリを統合ログからパージすることができる。プロセスは、より古いインテントログが処理されるまで継続するであろう。このスキームは、古くなったエントリがないものへの複数のインテントログの周期的な畳み込みを可能にするであろう。
最終的に、個々のバッキングストアファイルを完全に排除することも可能である。実際、RAMテーブルがディスクから読み取られる必要があるのは再起動時のみであるため、これは、インテントログからそれらを直接読み取ることによって行うことができ、そうでなければ更新トラフィックの存在下で増大し続けるであろう、それらに使用される記憶の量を制限するために、ログの周期的統合を行うことができるという結論に単純に達することができる。
ところで、単一のログファイルが使用されるが、周期的に、それの後続のセクションが、新しい更新を追加するようにメモリマップされるようなインテントログのためのわずかに異なるアプローチを想像することも可能である。これは、インテントログのコンテンツを削減するであろう。大きいファイルは、古くなった更新を取り除くために、以前に議論されたものに類似するスキームを用いた統合を受けることができる。
これは、将来のHyperfilerリリースにおける実際の必要性に基づいて、名前空間の持続性を管理するための初期スキームを進展させることができる、一連のトリックである。
(二次ハイパーサーバメンバーの更新)
一次および二次HMは、概して、独立して作用し、異なる読み取り型要求を処理する。しかしながら、ローカル変更を行う書き込み型要求は、一次メンバーによって、調整され、成功した場合、要求クライアントに返信する前に、二次メンバーの状態が一次メンバーと一致していることを確認する。
ハイパーサーバメンバーの間の処理および各メンバー内で作動する多数のスレッドの非同期挙動により、一次メンバーが、それが受信する書き込み型要求をその二次メンバーに送信した場合、それらは異なって取り扱われ、機能的に同等であろう結果をもたらす可能性が高いが、異なるメンバーに、種々の名前空間テーブルに対する異なるエントリを使用させるであろう。
これは、それだけでは壊滅的ではないだろうが、メンバーにわたる一貫性の検証および修復をより複雑にするであろう。これはまた、別の結果も有する。名前空間がデータリポジトリ内で指し示すファイルは、それらの名前空間コンポーネントを指し示し返す必要がある。これは、さらなる一貫性チェックが名前空間とデータ空間との間で行われ、ガーベジコレクションが孤立データファイルを訂正するために利用可能になることを可能にする。(データ側ハイパーサーバのメンバーのうちの任意のメンバー上の)所与のファイルが、常に、名前空間ハイパーサーバ上の任意のメンバー上の同じNTエントリに接続されていることを名前空間が保証する場合、データファイルは、NTエントリのインデックスを単純に記憶することができる。そうでなければ、データファイルは、名前空間ハイパーサーバのメンバーの各々に対するNTエントリの各々のインデックスを記憶すべきであるか、またはコンポーネントに対する可変長パス名を記憶すべきである(それは、但し、パス名に影響を及ぼす名前変更が起こる度に変更される必要があるであろう)。
上記の複雑な事態を回避するために、Hyperfilerの名前空間は、名前空間ハイパーサーバメンバーのうちの任意のメンバーにおける所与のファイルシステムオブジェクトに対して使用されるべき、名前空間における同じテーブルエントリを有することに依拠する。しかしながら、これは、クライアント要求の非同期実行にもかかわらず、割り付けられるテーブルエントリが同一である必要があるので、二次メンバーでの要求の実行が対処されるべき方法に対する変更を要求する。これは、そのような二次動作を効率化する機会でもある。なぜなら、一次メンバーの状態を反映するようにテーブルエントリを変更するために必要な方法が、二次メンバーに伝えられる必要があるからである。
留意すべき重要な1つの点は、一次メンバーからの書き込み更新が適用された場合、継続中の読み取り型要求が自由にフローすることができなければならないことである。これが成功するために、一次メンバーは、更新を行うために排他的モードにロックされなければならないNTエントリの指示を送信しなければならない。これは、任意の着信読み取り型要求が、過渡状態にあるデータ構造へのアクセスを得ることを防止するであろう。その他の点に関し、一次メンバーは、生成され、そのローカルインテントログにコミットされる更新リストを各二次メンバーに送信することのみ必要である。なぜなら、このリストが、一次メンバー上で行われたものを複製する正確なレシピであるからである。
わずかに複雑な事態がもう1つある。更新さえも一次メンバー上の同時スレッドによって行われるので、そのような更新が二次メンバー上で同一の順序で行われることが望ましい。この理由により、一次および二次メンバーの両方は、シーケンサ、すなわち、動作が行われる順番を記録するモジュールを実行する。これは、一次および二次メンバー上で、異なる方法で使用されて動作する。
一次メンバーにおいて、各更新の開始時に、排他的NTエントリロックが取得された後、更新スレッドは、シーケンスIDを要求して保存する。これは、(ラップアラウンドで)シーケンサが単調に生成する64ビット数である。唯一の排除された値は、0である。一次メンバーは、更新リストとともにそれを二次メンバーに送信するために、この数を取得してそれを保存する。
二次メンバーにおいて、更新要求を受信するスレッドは、シーケンサのそのローカルコピーに、そのシーケンスIDを承認するよう求める。前のシーケンスIDがすでに処理されている場合、シーケンサは、スレッドが続行することを可能にする。そうでなければ、スレッドは、前のシーケンスIDが完全に処理されるまで待つ。スレッドは、そのシーケンスIDを処理するための承認を受信した後、目的とするNTエントリのための排他的ロックを取得し、適正な順序で全てのテーブルエントリを更新し続ける。全てが更新されるとき、スレッドは、それがそのシーケンスIDを用いて行われることをシーケンサに伝え、これは、次の更新が続行することを可能にするであろう。(IDを取得した動作が中断されなければならなかった場合、スレッドがシーケンスIDを破棄することを可能にする設備が利用可能である。)
二次メンバーと対比した一次メンバーにおける更新の実行での1つの重要な側面は、全ての割り付け選択が一次メンバーで行われ、一次メンバーは、一次メンバーが維持する自由リストから、各テーブル内で利用可能な次のエントリを取り出すことによって、一次メンバーがこれを行うという事実に関係する。自由リストは、使用されていない各テーブルのエントリを一緒に結び付ける。一方で、二次メンバーは、使用するもののインデックスが、各二次メンバーが受信する更新リストの中にあるので、二次メンバーは、割り付けるべきテーブルエントリを選択する必要がない。したがって、二次メンバーは、各自の自由リストを維持する必要がない。
名前空間の状態に対する更新に対処する際のハイパーサーバメンバーの非同期動作を要約する。所与のハイパーサーバのメンバーは、ハイパーサーバのメンバーの間で、名前空間のサブコンポーネント、すなわち、ファイルテーブル(FT)エントリ、文字列テーブル(ST)エントリ、およびノードテーブル(NT)エントリが、同一の識別子を用いて、同一の動作のために割り付けられるか、または削除されるように構成される。たとえサブコンポーネントが同一の識別子を用いて使用されたとしても、ハイパーサーバのメンバーは、更新要求(つまり、名前空間の状態の更新を引き起こす任意の要求)に対処する際に、非同期的に作動するように構成される。メンバーの非同期動作を可能にするために、更新要求は、一次メンバーによって連続番号を割り当てられ、これらの連続番号は、更新が二次メンバーによって行われる様式における順番を提供するために使用される。削除、作成、または修正されるエンティティ(ファイルまたはディレクトリあるいはシンボリックリンク)の親であるファイルシステムノードを使用して、一次メンバーによって、書き込みロックが適用される。次いで、一次メンバーは、ローカル更新を行う。次いで、これは、連続番号、取得されるべきロックのリスト、および更新されるべき名前空間エントリの新しいコンテンツを含むパケットを組み立て、次いで、パケットを二次メンバーの各々に送信する。パケットを受信すると、各二次メンバーは、連続番号が最新になることを待ち、次いで、パケットで特定される書き込みロックを、ファイルシステムノードのその対応するコンポーネントに適用し、次いで、ローカル更新を行う。最終的に、二次メンバーは、確認を一次メンバーに与える。この時点で、二次メンバーは、他の同時更新を行うことができるように、次の連続番号へ前進することができる。更新が、上書きが後に続く削除を含む場合において、削除が冗長であるので、次いで、一次メンバーは、上書きのみを伝送する。
二次メンバーのそれぞれから確認を受信すると、一次メンバーは、書き込みロックを除去し、その時点で、一次メンバーは、以下のプロトコルのうちの1つに従って、要求クライアントに返信する。(1)更新が行われ、安定して記憶されているときに、二次メンバーが一次メンバーに確認する、または(2)更新が行われたときであるが、更新が安定して記憶されるまで待つことなく、二次メンバーが一次メンバーに確認する、または(3)一次要求を受信したときであるが、二次メンバーが実際に更新を実行する前に、二次メンバーが一次メンバーに確認する。これらのプロトコルのうちの所与の1つを使用するかどうかの決定は、性能と信頼性との間の所望のトレードオフに従って行われる。
いくつかの重要な考慮事項が、上記から生じる。
・アクティブな一次メンバーのみが、その自由リストを使用して更新する必要があるメンバーであるため、自由リストは、一次メンバーを作動させるために関連するのみである。
・テーブルの間に階級があり、その中で、NTが主要な役割を有し、FTおよびSTは、補助的な役割を果たす。換言すると、FTおよびST内のエントリは、1つのNTエントリによって参照されない限り、割り付けられることができない。
・NT内のエントリは、別のエントリによって、NT内で参照される場合のみ使用されている。
・テーブルは、各テーブルがRAMから処理されるとき、または再起動後にそのバッキングストアから読み取ることによって処理されるとき、自由リストが再作成されることができるような方法で設定される。
これは、2つの主要な結果を有する。
・自由リストが持続的であり、各テーブルに対してファイル記憶部上で裏付けられていることを確認する必要がない。なぜなら、自由リストは、必要とされるとき(すなわち、ハイパーサーバが再起動し、一次メンバーが動作可能にならなければならないときに、二次メンバーが故障した一次メンバーに取って代わるとき)、再構築することができるからである。
・その自由またはビジー状態は、他のテーブルエントリから再構築されることができるので、(テーブルのうちのいずれかの中の)テーブルエントリを自由にする任意の動作は、バッキングストアに到達する必要がない。
上記の実用的意義は、以下の通りである。
・テーブルエントリのうちのいずれかを伴う、自由動作のうちのいずれも、二次メンバーに到達する必要がない。
・テーブルエントリのうちのいずれかを伴う、自由動作のうちのいずれも、インテントログおよびバッキングストアに到達する必要がない。
これは、名前空間のためのハイパーサーバ更新の論理を単純化し、インテントログおよびバッキングストアへの入出力トラフィックを削減するという点で、非常に有用である。
いずれの場合にしても、任意の二次メンバーが、一次メンバーが要求した更新を実行すると、それは最初に、更新をそのインテントログおよびバッキングストアに送信し、次いで、動作の開始時にそれが取得したNTエントリロックを放棄し、最終的に、それが使用していたシーケンスIDが完全に処理されたことをシーケンサに知らせなければならない。
(ハイパーサーバメンバー再起動)
以前に概説されたように、一次メンバーは、(クラッシュすることによって、または退去させられることによってのいずれかで)それらが属するハイパーサーバから退出することによって、それらの役割を変更することしかできない一方で、二次メンバーは、一次メンバーがもはや存続しなくなるときに一次メンバーになることができる。
若干類似する状況は、システムシャットダウンおよび後続の起動の結果としてハイパーサーバが再起動される場合である。
2つの事例は、その役割を持たなかったメンバーが一次メンバーにならなければならないという点で類似する。2つの事例の間の違いは、二次から一次への遷移が、メンバーがすでに起動して作動していたことを示唆する一方で、再起動がハイパーサーバメンバー環境全体の設定を要求することである。
二次から一次への遷移の場合、二次メンバーは、すでに起動して作動している。これは、読み取り型要求を処理し続ける必要しかなく、その二次メンバー上の書き込み型動作を調整することが可能でなければならない。これを行うために、名前空間に関し、全てのテーブルが一貫した状態であること、および、これが、必要に応じて新しいテーブルエントリを割り付けるための利用可能な自由リストを有することを確認する必要がある。
上記を達成するために、新たに選択された一次メンバーは、以下を行う。
・これは、NT、FT、およびSTエントリの各々の中の‘referenced’ビットをリセットする。
・これは、ルート名前空間ノードで始まるNTを走査し、ノードツリーを横断する際に遭遇する任意のエントリに対して‘referenced’ビットを設定する。
・前のステップの終わりに、これは、NT全体を再度走査する。これは、‘referenced’ビットが設定されていない全てのエントリを解放し、それらをNT自由リストに追加する。‘referenced’ビットが設定された全てのNTエントリについて、FTエントリおよび/またはSTエントリへの参照を有するかどうかを確認するようにチェックし、これらのエントリに対する‘referenced’ビットを設定する。
・次いで、これは、FTおよびSTテーブルを走査し、それらの‘referenced’ビットが設定されていない全てのエントリを解放して適切な自由リストに追加する。
上記の終わりに、テーブルおよび自由リストの完全性は、完全に再構築され、新しい一次メンバーは、完全に動作することができる。
ハイパーサーバが再起動される場合において、一次メンバーは、上記を行う必要がある。しかしながら、その前に、ハイパーサーバメンバーの各々は、(存在する場合)インテントログファイルを読み取り、更新をバッキングストアに適用し、処理されたインテントログを削除しなければならない。これが行われると、各メンバーは、ファイルの各々を適切なテーブルに読み込み、初期化を完了すべきであり、一次メンバーのみが自由リストを再構築しなければならない。
(新しいメンバーの初期化)
メンバーがハイパーサーバから退去させられるか、またはクラッシュする場合において、新しいメンバー(利用可能である場合)が、退出したメンバーに取って代わる必要がある。
典型的には、そのようなメンバーは、名前空間のそのコピーを再作成するために必要とする情報のうちのいずれも有さない。したがって、一次メンバーは、以下を行うことによって、新しいメンバーの初期化を引き継ぐ。
・これは、新しいメンバーが、最初は任意のクライアント動作を行うことを可能にされないような状態に新しいメンバーを設定し、クライアントにエクスポートされるハイパーサーバの状態がこれを反映する。
・これは、現在の位置を名前空間テーブルの各々の始まりに設定する。
・これは、テーブルの各々を走査し始め、使用中の各エントリのコンテンツを新しい二次メンバーに伝搬する。
これが進展するにつれて、一次メンバーは、エントリテーブルがテーブルの各々のために処理されているというその概念を更新する。
着信クライアント要求が到着すると、新しい二次メンバーは、アドレス指定されないか、または、それらを一次メンバーに転送することによって、それに到達し得るものを破棄するであろう。一次メンバーが行う全ての更新は、二次メンバーにすでにコピーされた各テーブル内のエントリに影響を及ぼす更新、またはコピーされているエントリを超えるエントリに影響を及ぼす更新に分解され得る。現在のエントリに先行するものは、コピーが行われた時間以降、コピーされたエントリの状態が変化しているため、二次メンバーへの更新を生成する必要がある。現在のエントリに続くものは、これらのエントリが到達されると更新が適用されるであろうため、無視されることができる。
全てのエントリテーブルが処理されたとき、一次メンバーは、ハイパーサーバの状態を変更し、新しい二次メンバーを動作可能としてマークすることができる。
これの終わりに、新しい二次メンバーは、名前空間要求を処理することができる。これがデータリポジトリを有する場合、ファイルに対する要求に応答するその能力は、データリポジトリサブシステムの状態に依存し、そのコンポーネントによって対処される必要がある。
(名前空間の他の用途)
名前空間の構造は、一般的であり、パス名のPOSIXビューに制約されない。具体的には、エントリ0が全ての名前空間のルートノードであるので、POSIX名前空間のルートを指し示すことに加えて、それは、他の子を有することもできる。
これは、ある種類の分散型代替名前空間を実装したい場合に役立つ。多くの可能性のうちの2つは、以下の通りである。
・範囲フィンガープリントを収集する代替名前空間。これらは、ハイパーサーバにわたって分散され、それらをハッシュ化することは、各エントリを管理するハイパーサーバのHIDをもたらすであろう。これは、システムの第1のリリースの標的にされないが、範囲複製を実装するために使用されることができる。
・別の代替名前空間は、Hyperfilerシステム自体によって使用される分散型ディクショナリとして使用されることができる。
Hyperfiler上にAmazon S3型オブジェクトストアを実装するために名前空間を使用することができるが、ファイルの第1の範囲ID(以下参照)をオブジェクトIDとして使用することができるため、特別な名前空間を使用する必要がないであろうことに留意されたい。範囲IDは、それが記憶されているハイパーサーバをすでに識別し、したがって、追加の間接指定を必要としない。
(データ空間)
データ空間は、データリポジトリサブシステムを介して実装される。これは、一意のHyperfiler全体に及ぶ範囲ID(EID)を通して識別される、ファイルデータのためのコンテナを集約し、EIDは、各そのようなコンテナが常駐するハイパーボリュームに関連する。したがって、名前空間内のデータコンテナへの参照は、1つのそのような一意のIDであり、名前空間コンポーネントが配置される同一のハイパーサーバ上でホストされる必要がない。
ハイパーボリュームのデータ空間コンポーネントは、ファイルデータが記憶されるリポジトリである。これは、4キロバイトの論理ブロックを管理する、範囲ベースのファイルシステムである。(理論上、1キロバイト論理ブロックは、1ファイルにつき無駄になる平均記憶容量が、1ファイルにつき512バイトであり、非常に多数の小さいファイルが存在するときはいつでも、相当量の記憶容量を節約することができるという利点を提供することができる。一方で、4キロバイトブロックは、平均無駄を1ファイルにつき2キロバイトまで押し進め、無駄な空間を4倍増加させるであろう。しかしながら、より新しいディスクドライブは、従来の512バイトの代わりに、4キロバイトディスクセクタを使用するため、4キロバイトを選択することは、両方の技術と適合性があり、より大きいファイルに及ぶために必要とされるブロックポインタの数も削減する。)
したがって、空ではないファイルのためのディスク上の最小サイズは、4キロバイトになる。これは、ファイルメタデータが名前空間内で完全に保たれるため、純粋のデータブロックリポジトリである。
一意のEIDは、データ空間内の任意の範囲を識別し、データ空間を管理するハイパーサーバ内から、ならびに任意のクライアントあるいは他のハイパーサーバから、範囲のアドレス指定を可能にする。EIDは、以下のフィールドを含む8バイト構造であり、その含んでいるハイパーボリュームからの不透明スカラーとして取り扱われる。
範囲が割り付けられたハイパーボリュームのHID。これは、Hyperfiler全体内で範囲を大域的に一意的、かつアドレス可能にする。
含んでいるハイパーボリューム内の範囲に対する開始ブロックの論理ブロックオフセット。これは、ハイパーボリューム内の開始ブロックの論理ブロックインデックスを直接識別する。
範囲が及ぶ論理ブロックの総数。これは、範囲内で読み取るためにどれだけのメモリがキャッシュ内で利用可能されなければならないかを、キャッシュマネージャに知らせる。
単一の範囲は、最大で4メガバイトに及ぶ。範囲がアクセスされるとき、それは、その全体で読み取られる。これは、単一のディスク入出力動作で、4メガバイト以下の任意のファイルを読み取ることができることを意味する。これは、入出力サブシステムの効率の主要な上昇である。順次アクセスが検出されるときに、読み取り要求が受信される前に、以下の範囲を読み込むことができるように、LRUアルゴリズムが、空間が取り戻されることを要求し、キャッシュがプリフェッチングを実装するまで、範囲がキャッシュ内にとどまる。(これは、Hyperfilerにおいて普及アクセスモードとなるべきである。)
複数の範囲に及ぶファイルについて、第1の範囲は、高速検索を順方向に行うことが可能であるように、全てのファイル範囲のマップも記憶する。初期範囲が範囲キャッシュからパージされる必要があるとき、ファイルが依然としてアクセスされている場合、範囲マップに使用される領域は、ファイルが閉じられる時間までメモリ内で保持される。範囲マップ自体は、典型的なUnix(登録商標)ファイルシステムi−ノード内のブロックポインタのマップのように組織化される。これは、最初のいくつかの範囲が直接指し示される一方で、後続の範囲が、極めて大きいファイルに対する二重間接指定、次いで、三重間接指定を引き起こし得る、不平衡ツリー様構造である。
各ファイル範囲はまた、範囲が書き込まれるときに計算される範囲に対する20バイトSHA−1フィンガープリントも含む。個々の範囲フィンガープリントは、範囲の完全性の検証を可能にする。ファイルの第1のセグメントはまた、個々の範囲の全てのフィンガープリントのうちの1つのフィンガープリントも計算する。この全体的フィンガープリントは、ファイル長とともに、最終的に、ファイルインスタンスに対する一意のIDを提供することができる。これは、2つの方法で使用され、すなわち、ファイル全体の完全性を検証し、システムの将来のリリースにおいてファイルレベル複製を実装するであろう。
範囲への書き込みは、ファイルのタイプがこれを無意味にしない限り、最初に範囲のコンテンツを圧縮した後に行われる。構成設備は、事実上非圧縮性のファイルがCPUサイクルを無駄にすることを防止するためのこの決定において役立つ。同様に、ファイルシステムから読み込まれるデータは、使用される前に展開される。消費者は、この挙動がCPUサイクルのためのデータ空間を交換することを可能にすることができる。それをサポートするデータ空間およびデータリポジトリについてのさらなる詳細が参照される。
(クライアント要求の管理)
クライアントがHyperfilerにおいて利用可能なルートディレクトリ(または任意の他のディレクトリ)をマウントすると、要求クライアントに与えられるアクセス保護特権に従って、マウントされたディレクトリの下でHyperfilerが利用可能にする任意のファイルおよびディレクトリにアクセスすることが可能にされる。
クライアントとHyperfilerとの間の典型的な相互作用は、以下の様式で起こる。本実施例は、オープン、読み取り、書き込み、およびクローズ呼び出しが、どのように挙動するであろうかを示す。
クライアントは、Hyperfilerのマウントポイントの下でファイルを開く必要があるとき、クライアントは、マウント時に受信したDHTを介して、ファイル名をローカルでハッシュ化して、その名前に責任があるハイパーサーバのHIDを取り出す。
次いで、クライアントは、Hyperfilerネットワーク層に、前のステップで取り出されたHIDの名前空間ハイパーサーバへオープン要求を送信するよう求める。
クライアント上のHyperfilerネットワーク層は、HIDを標的名前空間ハイパーサーバ内のHMのアドレスにマップする。この時点で、ネットワーク層は、要求が、ファイルから読み取るため、またはファイルに書き込むためのオープンであるかどうかに応じて、異なって挙動する。読み取るためのオープンの場合、標的名前空間ハイパーサーバ内の任意のHMが、要求に対処することができる。したがって、クライアントは、(要求を分配するために)無作為に1つのHMを選択し、HMに要求を送信する。書き込むためのオープンの場合、名前空間ハイパーサーバの一次HMが、要求に対処すべきである。したがって、クライアントは、要求をそれに送信する。
成功した場合、名前空間ハイパーサーバのHMは、ファイルを記憶するデータ空間ハイパーサーバも指し示す、ファイルに対するEIDを含む記録を取り出す。
名前空間HMはまた、読み取るためのオープンか、書き込むためのオープンかを区別することによって、ファイルデータへのアクセスを提供すべきである、データ空間ハイパーサーバのHMも選択する。読み取るためのオープンに続く読み取りは、任意のデータ空間HMへ進むことができる。名前空間HMは、好適なものを選択するであろう。書き込むためのオープン後の読み取りおよび書き込みについては、選択されたデータ空間HMは、ハイパーサーバ一次メンバーであろう。
次いで、名前空間ハイパーサーバのHMは、ステップ5で選択されたデータ空間HMとともに、(ファイルを記憶するデータ空間ハイパーサーバも指し示す)ファイルに対するEIDを含む記録を返すことによって、クライアント要求に応答する。同時に、これはまた、クライアントからの後続の入出力要求が、データにアクセスするために必要とする時間を最小化することができるように、ファイルがキャッシュに取り込まれるべきであることをデータ空間ハイパーサーバのHMに警告する。
データ空間HMが後続の読み取り要求に応答しない場合、エラーに対処するために、読み取るためのオープンの場合であれば、クライアントが無作為に別のHMを選択できることに留意されたい。一方、オープンが書き込むためであった場合、データ空間一次メンバーが応答することを待つ必要がある(それは、元の一次メンバーがもはや利用可能ではなかった場合、データ空間ハイパーサーバの再構成を必要とし得る)。
最終的に、クライアントは、ステップ7で説明されるように、名前空間HMが選択したものに対して要求を実行したデータ空間HMが変化し得るため、要求を実行したデータ空間HMに対するSIDとともに、上記のステップ3で選択した名前空間HMにクローズ要求を送信するであろう。名前空間HMは、以前の入出力要求に対処したデータ空間HMにクローズ要求を伝搬し、これが相互作用を完結する。
これに関して、全体として、どこで選択が行われようと、データ空間上のHMの選択が一貫していることを確認するように、同一のアルゴリズムが全面的に適用されることが重要である。
ここで、典型的な従来技術のNASシステム上の入出力動作のいくつかの具体例、およびHyperfilerを使用することに触れる。
図2は、4つのディレクトリレベルを含む、パス名を伴うファイルにアクセスするための従来技術のネットワークアタッチド記憶(NAS)システムの典型である、ディスクおよびネットワーク入出力動作を図示する略図である。4つのディレクトリレベルが、典型的には、良好なディレクトリアクセス速度のために望ましくあり得る。ここで、パスは、「/mnt/netapp/a/b/c/d/E」であり、パスに沿った各ステップは、有意なアクティビティを要求する。ステップ1では、ルートへ進み、i−ノードを読み取ることが必要である。次いで、ステップ2では、ルートデータは、「a」のi番号を取り出し、そのハンドルを返送するために使用される。ステップ3では、ハンドルは、「a」を参照し、「a」のi−ノードを読み取るために使用される。ステップ4では、取り出されたデータは、「b」のi番号を取り出し、そのハンドルを返送するために使用される。ステップ5では、「b」のハンドルは、そのi−ノードを読み取るために使用される。ステップ6では、取り出されたデータは、「c」のi番号を取り出し、そのハンドルを返送するために使用される。ステップ7では、「c」のハンドルは、そのi−ノードを読み取るために使用される。ステップ8では、取り出されたデータは、「d」のi番号を取り出し、そのハンドルを返送するために使用される。ステップ9では、「d」のハンドルは、そのi−ノードを読み取るために使用される。ステップ10では、取り出されたデータは、「E」のi番号を取り出し、そのハンドルを返送するために使用される。最終的に、ステップ11では、「E」のハンドルは、「E」のデータを読み取り、「E」のデータを返すために使用される。これらの動作のためのディスク入出力の総数は、10であり、6つのネットワーク入出力がある。
図3は、図2と同一のパス名を伴うファイルにアクセスするために本発明の実施形態によるHyperfilerによって要求される、ディスクおよびネットワーク入出力動作を図示する略図である。この場合、クライアントは、ハッシュテーブル301を記憶している。ステップ1では、クライアントは、パス名のハッシュ301aを決定し、ハッシュテーブル301にアクセスし、クライアントがその記憶要求を提示することができる関連名前空間ハイパーサーバを識別する、名前空間ハイパーサーバID301bを取得する。ステップ2では、クライアントは、識別された名前空間ハイパーサーバへのファイルオープン要求302aを行い、識別された名前空間ハイパーサーバは、関連データ空間ハイパーサーバのハンドル302bおよびIDをクライアントに返す。ステップ3では、クライアントは、識別されたデータ空間ハイパーサーバへの読み取り要求303aを行い、順に、識別されたデータハイパーサーバからデータ303bを取得する。これらの動作のために、単一のディスク入出力動作、および2つだけのネットワーク入出力動作がある。
図3では記憶読み取りを図示した一方で、図4では、記憶書き込みを図示する。したがって、図4は、パス名「x/y/z012345678」を伴うファイルを作成するための本発明の実施形態によるHyperfilerにおける動作を図示する略図である。図4では、クライアントは、最初に、パス名のハッシュを作成し、記憶要求を行うためにどの名前空間ハイパーサーバを使用するかを決定するために、その記憶されたハッシュテーブル402を使用する。本実施例では、クライアントは、名前空間ハイパーサーバHS0への要求を行うことを決定する。また、本実施例では、名前空間ハイパーサーバHS0は、一次メンバー421と、二次メンバー422とを含む。一次メンバーは、記憶要求を得て、ステップ番号1では、名前空間エントリ35をこの要求に割り付け、このエントリにパスデータを記憶し、次いで、名前空間エントリ35をロックする。同様に、一次メンバー421は、ステップ2でファイルテーブルエントリ51を作成し、ステップ3で文字列テーブルエントリ66を作成する。ステップ4では、一次メンバー421は、連続番号513をこの書き込み要求に割り付け、データ空間ハイパーサーバHS2(一次メンバー431および二次メンバー432を有する)を使用して、それをディスクに送信する。さらに、一次メンバーは、名前空間エントリ35をロックする命令と、FTエントリ51およびSTエントリ66のデータとを含む、シーケンス513についてのレポートを二次メンバー422に送信する。ステップ5では、(ステップ4で送信された命令を実行し、後に、シーケンスの開始時にロックしたノードエントリ35をロック解除した)二次メンバー422から確認を受信した後、一次メンバーは、名前空間エントリ35をロック解除する。ステップ6では、一次メンバーは、データ空間サーバHS2から範囲IDを要求し、さらに、作成要求が行われたことをクライアントに報告し、次いで、名前空間ハイパーサーバHS0とさらに相互作用する必要なく、データ空間ハイパーサーバHS2上で読み取りおよび書き込みを行うために、クライアントが使用されることができるであろうハンドルをクライアントに返す。
NSエントリ35をロックすることを参照して図4で説明しているが、ファイルが作成されるとき、種々の実施形態では、(1)他の動作が同時に同一のディレクトリ上で行われることを防止するため、および(2)親ディレクトリノードが、新しいファイルを表す新たに作成された子ノードを指し示すことを可能にするために、追加のロック、すなわち、名前空間内の親ディレクトリを表すノードのロックがある。ファイル動作が、単に既存のファイルの属性を変更するためである場合、親ディレクトリのロックは要求されず、影響を受けるノードのみがロックされる必要がある。前述の親ディレクトリの場合のように、追加のノードがロックされる必要がある場合、それを行う命令は、一次名前空間ハイパーサーバメンバー421がステップ4でその二次メンバー(メンバー422等)に送信する命令の一部である。
(III.動作挙動)
本節は、システム完全性、故障、およびデータ回復に自動的に対処するために利用可能にされる設備とともに、Hyperfilerの標準挙動を例証する。
(システム設定および管理)
Hyperfilerは、それが約10分で構成されること、および新しいHMが5分未満で追加されることを可能にする、単純なGUIインターフェースを通して管理される。
Hyperfilerのシステム管理コンポーネントは、監視および警告を含む、システムを自動的に管理するために必要とされる全てのサーバ側機能を果たす。
Hyperfiler設定は、最初に、各HMが管理する記憶装置とともに、HMをそれに割り当てることによって達成される。構成段階では、各HMが常駐する物理的サーバも識別することが重要である。これは、それがどのHMが同一のハイパーサーバのメンバーになる良好な候補であるかをシステム管理に知らせるので、重要な情報であり、単一障害点(SPOF)を回避するために、各ハイパーサーバは、異なる物理的ノード上でホストされるHMで作成されなければならない。
同一の記憶層内で使用されるHMが、(RAM、CPU、およびネットワーク能力に関して)同等であるハードウェア上で作動すること、同一の種類の記憶装置(SAN、ローカルドライブ等)に基づくこと、およびまさに同等の物理的ボリュームを管理することが重要である。これにおける大きな相違は、実際に、ハイパーサーバの性能をその最弱コンポーネントの性能まで低減させることによって、性能問題を引き起こし得る。
システム管理は、SPOFが回避されていることを確認することによって、ハイパーサーバを集約する。システム管理は、同一の容量および能力を伴うHMを一緒にグループ化することも試みる。
(通常システム動作)
Hyperfilerを使用することを所望するLinux(登録商標)クライアントは、カーネルローダブルモジュールをロードする必要がある。カーネルローダブルモジュールは、Linux(登録商標)システムが作動するにつれて、ロードおよびアンロードされることができるが、アンロード動作は、クライアントがHyperfilerにアクセスすることを止め、それを「アンマウント」したときのみ許可される(以下参照)。
カーネルモジュールがロードされてアクティブであると、クライアントは、NFSのように、ローカルファイルシステム(マウントポイント)内の空のディレクトリにマウント動作を行うことができる。その後、パス名がマウントポイントの下に到達するファイルまたはディレクトリへの任意のアクセスは、パス名をHyperfiler内の適切なファイルシステムオブジェクトにマップしたカーネルモジュールを伴う。このプロセスは、アプリケーションに透過的である。同一または異なるHyperfilerに対する複数のマウントポイントが、同一のクライアント内で共存でき、クライアントが、NFSファイラディレクトリならびにHyperfilerをマウントできることに留意されたい。
上記で説明されるPOSIX意味論への軽微な制限が、そのようなアクセスに適用される。中でも注目すべきは、書き込むための第1のオープンは承認されるが、後続の要求は、ファイルが閉じられてファイルの現在のバージョンになるまでエラー(EBUSYエラー)を返すとうい点で、複数のスレッドは、同一のファイルへの同時書き込みアクセスを許可されない。一方で、ファイルが書き込むために開いている間、読み取るためのオープンは、ファイルの前のバージョンを自動的に参照するであろう。
HyperfilerがPOSIX意味論を実装するという事実は、クライアント上で作動し、Hyperfiler内のファイルおよびディレクトリにアクセスする任意のアプリケーションが、いかなる変更も伴わずに作動することを示唆する。
Hyperfilerは、ファイルへのHTTP/HTTPSアクセスも利用可能にする。このため、このプロトコルをサポートするコンポーネントは、Hyperfiler内で作動し、各Hyperfilerは、サブドメインサーバを実装する。したがって、Hyperfilerがサポートするように構成されているサブドメインに対する名前を参照する任意の要求は、HTTP/HTTPSコンポーネントに直接渡される。サブドメインマネージャは、Hyperfiler全体にわたって負荷を分配するよう、全ての利用可能なそのようなコンポーネントにわたって、着信要求をラウンドロビンする。しかしながら、URLの解釈において、サブドメインサーバは、目的とするオブジェクトを管理するハイパーサーバによって、要求を対処させようとする。
システムの将来のバージョンは、同様にNFSアクセスをサポートするであろう。将来のHyperfilerバージョンはまた、ネイティブHyperfilerプロトコルを使用するWindows(登録商標)リダイレクタを供給することによって、Windows(登録商標)クライアントもサポートするであろう。
(エラー検出および回復)
Hyperfilerは、分散型ファイルシステム内のファイルおよびディレクトリの完全性を監視し、おそらく生じる得る任意の非一貫性を検出することができる。ローカルの非一貫性は、即時に対処される。例えば、ハイパーサーバのメンバーが、ファイルを読み取っている間に入出力エラーを検出する場合、それは、即時にファイル範囲を不良としてマークし、ハイパーサーバの別のメンバーに要求を終えるように求め、ファイルのコンテンツを有効なコピーを有するメンバーのコンテンツと再同期させる。
(ハイパーボリュームおよびハイパーサーバ修復)
ハイパーサーバのメンバーは、そのハイパーボリュームインスタンスにおいて非一貫性を検出すると、非一貫性の性質に応じて、異なって作用することができる。軽微な非一貫性は、前の節で説明されるように、即座に対処されるべきである。しかしながら、名前空間のコンテンツまたはデータ空間のコンテンツが損なわれた場合、メンバーHMは、完全ハイパーボリューム再同期化をトリガすべきである。新しいHMがハイパーサーバに割り当てられるときに、同じことが起こる。
動作は、2つのステップで起こる。
・第1の段階は、名前空間が存在するはずであり、名前空間再同期化が必要とされる場合、名前空間を再同期させることになる。これは、ハイパーサーバ一次メンバー上で利用可能な持続的イメージに記憶されているような名前空間コンテンツをコピーすることを伴う。これは、システムが作動するにつれて行われる。プロセスの終了時に、一次メンバーは、新しいHMが完全に同期させられるまで、着信更新要求をしばらくの間保持する。この後、更新要求は、新しいメンバーと同様に有効にされる。(これが名前空間内でどのようにして達成されるかについての詳細は、「新しいメンバーの初期化」と題された上記の節にある。)
・第2の段階は、データ空間が、修復されているハイパーサーバのために存在する場合、データ空間に対する同様のタスクを達成する。
第1の段階は、修復される2つのリポジトリの相対的サイズにより、第2の段階より確かに高速であることに留意されたい。それでもなお、段階1の終了時に、その名前空間が完全に修復されるとすぐに、新しいメンバーは、要求にサービスを提供し始めることができる。段階2が完了するまで、新しいHMは、データ空間を伴う要求に返信せず、代わりに他のハイパーバイザメンバーに返信させるであろう。
ハイパーサーバの全てのメンバーが退去するか、またはクラッシュする場合において、そのハイパーサーバによってサポートされるファイルシステムオブジェクトは、利用不可能になるであろう。この理由により、十分な冗長性を伴ってシステムを構成することが極めて望ましい。そのような場合、システム管理は、ハイパーボリュームが高可用性ブロック記憶装置に依存している場合か、冗長性がローカルハードドライブ上にHyperfilerによって構築されるかで異なって動作する。
第1の場合において、システム管理は、単純に、利用可能なHMから新しいハイパーバイザを製造し、ハイパーサーバが所有する冗長記憶リソースにそれを割り当てなければならない。
しかしながら、記憶装置が非冗長ローカル記憶装置の複製を介して実装されている場合、システムは、元のハイパーバイザメンバーのうちの1つが再起動することを待ち、次いで、名前空間上の冗長性および利用可能なコピーからのデータの冗長性を再構築する。
(記憶層の間の移動)
複数の記憶層がHyperfiler内に存在するとき、およびこの特徴が有効にされる場合、システムは、ファイルへのアクセスを監視する。顧客は、ファイル移動窓と呼ばれる、参照の時間窓を設定することを可能にされる。周期的に、システムは、各ハイパーサーバ内の名前空間を調べる。所与のファイルが最後の移動窓内で参照されていない場合、それは、下の記憶層へ移動させられる(下の記憶層が存在する場合)。有効にされている場合、システムはまた、下層内のファイルが参照される次のときに、ファイルを上の記憶層に移動させることも担当し、これは、ファイルが属すべき記憶層内にファイルを保つ。
(スクラビングおよびスカベンジング)
データが書き込まれると、ビット崩壊およびセクタ劣化が起こり得る。この理由により、システムは、既存のデータのスクラビングを行う。各ハイパーサーバ内の一次メンバーは、全てのメンバー上の各ハイパーボリュームの名前空間およびデータ部分を走査して、それらが同期化されていること、破損データがないこと、および孤立しているが誤動作により削除されていない任意のデータがパージされることを確認する。
これは、入出力集中アクティビティであり、最終的にハイパーサーバの全体的性能に影響を及ぼし得る。したがって、システムは、進行中である入出力の量を追跡しているので、これはシステムが高負荷でないときのみ起こり、かつCPU、RAM、ディスク、およびネットワーク帯域幅の事前構成された割合を超えないように起こることを確認することができる。
(Hyperfiler拡張およびアップグレード)
そのアーキテクチャにより、Hyperfilerは、本質的に拡張可能である。追加の記憶装置が必要とされるか、または追加の性能が要求されるときはいつでも、動的な様式で、つまり、継続中の動作を妨害することなく、新しいHMをHyperfilerに追加することが可能である。
その際に、以下の基準が順守されるべきである。
・所与の記憶装置クラスに追加されるHMの数は、そのクラスの基数の倍数となるべきである。所与の記憶層に追加されるHMは、利用可能なRAMおよび記憶装置に関して同様の構成を有すべきであり、かつ同様の能力を伴うCPU上で作動すべきである。
・同一のハイパーサーバのメンバーが同一のマシン上で作動する状況を回避するよう、HMがホストされるサーバの記述は、常に正確であるべきである。これは、実際に、HMレベル冗長性が存在しないことをもたらすであろう。
また、記憶層内の基数の増加が同様に対処されることができることにも留意されたい。また、Hyperfilerの固有冗長性を利用して、継続中の動作を妨害することなく、アップグレードを行うことができる。基本的に、1度に1つのHMがアップグレードされ、したがって、このプロセスが行われる場合、それらが属するハイパーサーバが動作し続けることを可能にする。
(本実施形態における制約および制限)
本明細書のHyperfilerアーキテクチャは、極めて一般的であり、展開の多くの変異形に適応することができる。しかしながら、初期リリースの開発を単純化するために、可能性な組み合わせの数を制約することが望ましい。本節は、そのような制限について議論する。
(ハイパーボリュームおよびハイパーサーバ)
名前空間サービスおよびデータ空間サービスの両方をサポートするHMを実装する際、特に、HMをハイパーサーバに集約することを期待される、システム管理のために、展開を単純化する。しかしながら、直接アタッチドハードドライブ(この場合、直接アタッチド記憶デバイスの省略である「DASD」を伴うものと称する)、ならびにSANまたはSANのようなインフラストラクチャを介してプロビジョニングされたLUNを使用する必要があるので、以下によって引き起こされる、いくつかの複雑な事態が生じる。
SAN上のLUNは、概して高可用性であり、その結果、データ空間のための複製を提供することにおいて固有の価値はない。実際に、SAN上のLUNは、LUNが冗長性をすでに提供しハイパーサーバを介した追加の複製を必要としないので、記憶装置の無駄になるであろう。
名前空間は、少なくとも2に設定された基数を有するハイパーサーバを使用することによって、常に複製されるべきである。これは、HM再起動中に、名前空間のある部分が一時的にアクセスできなくなり得る確率を有意に低減させるので、望ましい。また、これは、複数のHMにわたって名前空間負荷を共有させることを可能にする。これらの考慮事項は、DASD記憶装置および冗長LUNの両方に適用される。
次いで、LUNについては、名前空間を複製させるであろう一方で、データ空間は、Hyperfiler内で複製されないであろう。これは、DASDベースの実装の場合において両方のサービスが複製から利益を得るであろうから、SANベースの実装とDASDベースの実装との間の要件が分岐するという事実を明確に指し示す。HMを独占的に名前空間サービスまたはデータ空間サービスのいずれか一方の専用にすることは、カーネルによって使用されるRAMが各個々のHMのために増加させられるであろうため、いくつかのHMが両方をホストするときよりも多くのRAMを要し得る。しかしながら、そのようなサービスの分離は、いくつかの利益も有するであろう。これは、例えば、DASDベースの構成およびSANベースの構成を同様に取り扱うことによって、HMの作成および管理に単純化を追加するであろう。これは、名前空間サービスに関する問題が、同一のHM内で共同ホストすることができるデータ空間サービスも停止させないように、より良好な故障隔離を提供するであろう。HMで必要とされるカーネルデータの量は、確かに、HMによって実行されるサービスの数および複雑性に厳密に相関するであろう。したがって、大まかに言うと、サービスがHMにおいて分離されるであろうかどうかにかかわらず、所与のサービスによって必要とされるカーネルRAMの量がほぼ同一であろうことを期待することができる。最終的に、各HM内で使用されるカーネルイメージおよび実行ファイルのサイズを最小化することが確かに可能であり、カーネルコードページがHMにわたって共有され得るであろうことをハイパーバイザに知らせることが可能であり、これは、メモリ要件も減少させるであろう。全ての上記の考慮事項により、各HMを両方ではなく名前空間サービスまたはデータ空間サービスのいずれか一方の専用にするように、Hyperfilerの第1のリリースを有することが合理的と考えられる。
(各HMの構成)
第1のHyperfilerリリースにおいて、各HMが名前空間サービスまたはデータ空間サービスのいずれか一方をホストするであろうという事実に基づいて、リソースの割り付けを選択する際に、以下の基準が適用されるであろう:10GBのデータ空間が、名前空間サービスを実行する各HMのために利用可能となるであろう。できる限り多くのドライブが、データ空間サービスを実行する各HMのために利用可能となるであろう。ルートファイルシステムおよびスワップ領域のための十分な量の空間が、どちらのHMタイプのためにも利用可能となるであろう。約1.5GB〜2GBのRAMが、それが実行するサービスによって使用されるために各HMに利用可能となるであろう。約800MBが、各HMカーネルのために利用可能となるであろう。(これは最大値である。可能であれば、必要とされるコンポーネントの量を削減することによって、およびHMにわたってカーネルコードページを共有することによって、これはさらに縮小されるべきである。)コアのおよそ1/4が、各HM専用にされるであろう。およそ2つのHMが、各ドライブに割り付けられるであろう。
(結語)
Hyperfilerは、本明細書の実施形態では、単一の名前空間を伴う高可用性スケールアウトファイルシステムを実装する。本システムは、理想的には、ウェブ規模アプリケーション向けの高可用性共有ファイル記憶プラットフォームを提供するために適しており、容量および性能、固有のボトルネックの欠如、および単一のディスク入出力動作でランダムセット内のファイルを開く能力に関して、無限拡張可能性を提供する。この最後の特性は、単独で、ほとんどのファイルについて10倍の性能利点を伴い、ドライブスピンドルの総数の大幅な削減を可能にする。データ空間からの名前空間の分離は、それらが、SATAドライブまたはSSD等のアプリケーション環境のために最も適切である二次媒体上に配置されることを可能にする。これらの特性を伴うファイルシステムは、現代の業界標準サーバのコンポーネントに依存するトレードオフに基づき、したがって、マルチコアCPU、大量のRAM、高ネットワーク帯域幅、および低ネットワーク待ち時間の可用性を十分に利用する。本システムのための理想的な作業負荷は、データベース型アクセスが必要とされない、一般読み取りを伴う読み取り書き込みトラフィックから成る。本システムは、POSIX規格の順守を提供し、したがって、アプリケーション開発者がベンダー特有のAPIにとらわれることから解放し、NFSに基づく既存のアプリケーションが変わりなく作動することを可能にする。Hyperfilerが単一の名前空間内で無限に拡張できるという事実は、Hyperfilerが単一のエンティティとして挙動して管理される際に、顧客が、全ての記憶デバイスに到達するために複雑なマウントマップに取り組む必要がないことを示唆する。名前空間専用のRAMの量およびスワップデバイスの性質に関して、名前空間が対処される方法の融通性は、サポートされる記憶層の数およびタイプとともに、所望のコスト/性能比の極度の融通性が得られることを可能にする。
Hyperfilerは、最大4メンバーのHMを伴うハイパーサーバに何千個ものHMを一緒に集約する。更新の調整は、単一のハイパーサーバ内で行われる必要しかない。したがって、従来のクラスタにおける直線性を破壊し、それらがサポートできるノードの数を制約する、通信の組み合わせ的爆発が、Hyperfilerを制限しないため、本システムの性能は、直線的に拡大縮小することができる。従来のファイル名およびPOSIX意味論の使用は、アプリケーション開発者がファイル名を介して情報を伝えることを可能にする。これは、あるレベルで、常に名前および属性をオブジェクトIDに変換するために外部マッピング層に依存する必要があるオブジェクトストアと対比されることができる。HAインフラストラクチャは、アプリケーション層内に複製特徴を組み込む必要性を回避する。HMおよびそれらが使用する記憶デバイスへの依存は、特殊アプライアンスまたはアドホックハードウェアを購入しなければならないことからユーザを保護する。全体として、特に大規模ウェブアプリケーションのために設計されている、Hyperfilerのようなシステムは、この市場区分が要求するトレードオフを達成することができる。Hyperfilerは、大部分がそれ自体を自動的に管理するため、Hyperfilerは、複雑性の低減、取得コストの低減、アプリケーションおよびインフラストラクチャ側の開発コストの低減、および運用コストの低減に関して、その革新的技術を主要な節約に具体的に変換する。これはまた、優れた性能および可用性も提供する。
別の関連実施形態では、クラスタによって管理されている名前空間データの共有サブセットに対する更新を取り扱う経過中に、そこへの各連続更新は、連続番号を与えられ、クラスタの論理コンピュータシステムは、連続番号に基づいて、事前定義された更新順を依然として保持しながら、非同期的に動作するように構成される。
本発明はさらに、例えば、以下を提供する。
(項目1)
複数の論理コンピュータシステム内でソフトウェア定義ネットワークアタッチ可能記憶システムを確立する方法であって、各コンピュータシステムは、メモリと、プロセッサと、記憶システムとを有し、
前記方法は、前記論理コンピュータシステム内でプログラムのセットを実行することを含み、
前記プログラムのセットは、名前空間内で動作する名前空間サーバとして論理コンピュータシステムの第1のセットを確立し、かつ、データ空間サーバとして論理コンピュータシステムの第2のセットを確立し、前記論理コンピュータシステムの第1のセットは、少なくとも2つの論理コンピュータシステムを含み、各論理コンピュータシステムは、前記名前空間の異なるパーティション内で自律的に動作するように構成され、
(i)各名前空間サーバは、
(a)ファイルシステムメタデータをそのメモリに持続的に記憶することであって、前記ファイルシステムメタデータは、ファイルおよびディレクトリ名と、前記ファイルおよびディレクトリ名に関連付けられているユーザデータが常駐する場所についての情報とを含む、ことと、前記ファイルシステムメタデータの動的に更新されたコピーをその記憶システムに記憶することと、
(b)そのメモリに持続的に記憶されている前記メタデータに基づいて、少なくとも1つの要求クライアントコンピュータからの前記名前空間の所定のサブセットに対する記憶システムパス名要求を処理することと、各要求に応答して、前記要求クライアントコンピュータによる使用のためのハンドルを返送することと
を行うように構成され、前記名前空間サーバの全ては、集合的に、したがって、前記名前空間の全体に対する記憶システムパス名要求を処理し、
(ii)各データ空間サーバは、前記名前空間サーバによって決定され、前記少なくとも1つの要求クライアントコンピュータから受信されるハンドルに直接基づいて、ユーザデータをその記憶システムに記憶し、取り出すように構成されている、方法。
(項目2)
前記名前空間サーバの少なくとも1つの厳密なサブセットは、前記名前空間の共有サブセットに対して記憶システムパス名要求を処理するために、クラスタとして動作するように構成され、前記名前空間の前記共有サブセットに対するファイルシステムメタデータは、前記クラスタ内の各名前空間サーバのメモリの中に持続的に常駐している、項目1に記載の方法。
(項目3)
前記クラスタ内の名前空間サーバの数は、予測負荷条件下で、所望のレベルの速度、冗長性、および可用性を達成するように選択される、項目2に記載の方法。
(項目4)
前記データ空間サーバの少なくとも1つの厳密なサブセットは、前記データ空間の共有サブセットに対して、前記名前空間サーバによって決定されるハンドルに基づいて、ユーザデータをその記憶システムに記憶し、取り出すために、クラスタとして動作するように構成されている、項目1に記載の方法。
(項目5)
前記クラスタ内のデータ空間サーバの数は、予測負荷条件下で、所望のレベルの速度、冗長性、および可用性を達成するように選択される、項目4に記載の方法。
(項目6)
前記論理コンピュータシステムのうちの少なくともいくつかは、仮想コンピュータシステムである、項目1に記載の方法。
(項目7)
前記論理コンピュータシステムのうちの少なくともいくつかは、仮想コンピュータシステムである、項目2に記載の方法。
(項目8)
前記論理コンピュータシステムの全ては、仮想コンピュータシステムである、項目2に記載の方法。
(項目9)
前記論理コンピュータシステムのうちの少なくともいくつかは、仮想コンピュータシステムである、項目4に記載の方法。
(項目10)
前記論理コンピュータシステムの全ては、仮想コンピュータシステムである、項目4に記載の方法。
(項目11)
前記論理コンピュータシステムの第1および第2のセットは、互いに素である、項目1に記載の方法。
(項目12)
前記論理コンピュータシステムの第1および第2のセットは、互いに素ではない、項目1に記載の方法。
(項目13)
前記ファイルシステムメタデータは、パス名の共有プレフィックスがコンパクトに記憶されるように、パトリシア木データ構造に従って構造化される、項目1に記載の方法。
(項目14)
前記ファイルシステムメタデータは、(i)前記パトリシア木を符号化するノードテーブル、および(ii)ファイルおよびディレクトリの属性を符号化するファイルテーブル、および(iii)前記ノードテーブルで使用される最大長より大きい長さを有する、文字列の名前を符号化する文字列テーブルに記憶される、項目13に記載の方法。
(項目15)
前記ノードテーブル、前記ファイルテーブル、および前記文字列テーブルの各々は、持続性のために異なるファイルに動的に記憶される、項目14に記載の方法。
(項目16)
前記ノードテーブル、前記ファイルテーブル、または前記文字列テーブルのうちの任意のものに対する任意の変更は、インテントログに記憶され、前記インテントログは、そのようなテーブルに対応する前記ファイルを更新するために動的に使用され、単一の動作に関連する前記変更のうちの任意のものは、一緒に結び付けられる、項目15に記載の方法。
(項目17)
前記クラスタによって管理されている名前空間データの前記共有サブセットに対する更新を取り扱う経過中、前記共有サブセットに対する各連続更新は、連続番号を与えられ、前記クラスタの論理コンピュータシステムは、前記連続番号に基づいて、事前定義された更新順を依然として保持しながら、非同期的に動作するように構成されている、項目2に記載の方法。
(項目18)
前記ノードテーブル、前記ファイルテーブル、および前記文字列テーブルの各々は、固定サイズのエントリを有する異なるアレイである、項目14に記載の方法。

Claims (18)

  1. 複数の論理コンピュータシステム内でソフトウェア定義ネットワークアタッチ可能記憶システムを確立する方法であって、各コンピュータシステムは、メモリと、プロセッサと、記憶システムとを有し、
    前記方法は、前記論理コンピュータシステム内でプログラムのセットを実行することを含み、
    前記プログラムのセットは、名前空間内で動作する名前空間サーバとして論理コンピュータシステムの第1のセットを確立し、かつ、データ空間サーバとして論理コンピュータシステムの第2のセットを確立し、前記論理コンピュータシステムの第1のセットは、少なくとも2つの論理コンピュータシステムを含み、各論理コンピュータシステムは、前記名前空間の異なるパーティション内で自律的に動作するように構成され、
    (i)各名前空間サーバは、
    (a)ファイルシステムメタデータをそのメモリに持続的に記憶することであって、前記ファイルシステムメタデータは、ファイルおよびディレクトリ名と、前記ファイルおよびディレクトリ名に関連付けられているユーザデータが常駐する場所についての情報とを含む、ことと、前記ファイルシステムメタデータの動的に更新されたコピーをその記憶システムに記憶することと、
    (b)そのメモリに持続的に記憶されている前記メタデータに基づいて、少なくとも1つの要求クライアントコンピュータからの前記名前空間の所定のサブセットに対する記憶システムパス名要求を処理することと、各要求に応答して、前記要求クライアントコンピュータによる使用のためのハンドルを返送することと
    を行うように構成され、前記名前空間サーバの全ては、集合的に、したがって、前記名前空間の全体に対する記憶システムパス名要求を処理し、
    (ii)各データ空間サーバは、前記名前空間サーバによって決定され、前記少なくとも1つの要求クライアントコンピュータから受信されるハンドルに直接基づいて、ユーザデータをその記憶システムに記憶し、取り出すように構成されている、方法。
  2. 前記名前空間サーバの少なくとも1つの厳密なサブセットは、前記名前空間の共有サブセットに対して記憶システムパス名要求を処理するために、クラスタとして動作するように構成され、前記名前空間の前記共有サブセットに対するファイルシステムメタデータは、前記クラスタ内の各名前空間サーバのメモリの中に持続的に常駐している、請求項1に記載の方法。
  3. 前記クラスタ内の名前空間サーバの数は、予測負荷条件下で、所望のレベルの速度、冗長性、および可用性を達成するように選択される、請求項2に記載の方法。
  4. 前記データ空間サーバの少なくとも1つの厳密なサブセットは、前記データ空間の共有サブセットに対して、前記名前空間サーバによって決定されるハンドルに基づいて、ユーザデータをその記憶システムに記憶し、取り出すために、クラスタとして動作するように構成されている、請求項1に記載の方法。
  5. 前記クラスタ内のデータ空間サーバの数は、予測負荷条件下で、所望のレベルの速度、冗長性、および可用性を達成するように選択される、請求項4に記載の方法。
  6. 前記論理コンピュータシステムのうちの少なくともいくつかは、仮想コンピュータシステムである、請求項1に記載の方法。
  7. 前記論理コンピュータシステムのうちの少なくともいくつかは、仮想コンピュータシステムである、請求項2に記載の方法。
  8. 前記論理コンピュータシステムの全ては、仮想コンピュータシステムである、請求項2に記載の方法。
  9. 前記論理コンピュータシステムのうちの少なくともいくつかは、仮想コンピュータシステムである、請求項4に記載の方法。
  10. 前記論理コンピュータシステムの全ては、仮想コンピュータシステムである、請求項4に記載の方法。
  11. 前記論理コンピュータシステムの第1および第2のセットは、互いに素である、請求項1に記載の方法。
  12. 前記論理コンピュータシステムの第1および第2のセットは、互いに素ではない、請求項1に記載の方法。
  13. 前記ファイルシステムメタデータは、パス名の共有プレフィックスがコンパクトに記憶されるように、パトリシア木データ構造に従って構造化される、請求項1に記載の方法。
  14. 前記ファイルシステムメタデータは、(i)前記パトリシア木を符号化するノードテーブル、および(ii)ファイルおよびディレクトリの属性を符号化するファイルテーブル、および(iii)前記ノードテーブルで使用される最大長より大きい長さを有する、文字列の名前を符号化する文字列テーブルに記憶される、請求項13に記載の方法。
  15. 前記ノードテーブル、前記ファイルテーブル、および前記文字列テーブルの各々は、持続性のために異なるファイルに動的に記憶される、請求項14に記載の方法。
  16. 前記ノードテーブル、前記ファイルテーブル、または前記文字列テーブルのうちの任意のものに対する任意の変更は、インテントログに記憶され、前記インテントログは、そのようなテーブルに対応する前記ファイルを更新するために動的に使用され、単一の動作に関連する前記変更のうちの任意のものは、一緒に結び付けられる、請求項15に記載の方法。
  17. 前記クラスタによって管理されている名前空間データの前記共有サブセットに対する更新を取り扱う経過中、前記共有サブセットに対する各連続更新は、連続番号を与えられ、前記クラスタの論理コンピュータシステムは、前記連続番号に基づいて、事前定義された更新順を依然として保持しながら、非同期的に動作するように構成されている、請求項2に記載の方法。
  18. 前記ノードテーブル、前記ファイルテーブル、および前記文字列テーブルの各々は、固定サイズのエントリを有する異なるアレイである、請求項14に記載の方法。
JP2015531949A 2012-09-14 2013-08-29 ソフトウェア定義ネットワークアタッチ可能記憶システムおよび方法 Expired - Fee Related JP6199394B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261701441P 2012-09-14 2012-09-14
US61/701,441 2012-09-14
US13/759,799 2013-02-05
US13/759,799 US8769105B2 (en) 2012-09-14 2013-02-05 Software-defined network attachable storage system and method
PCT/US2013/057330 WO2014042889A2 (en) 2012-09-14 2013-08-29 Software-defined network attachable storage system and method

Publications (2)

Publication Number Publication Date
JP2015534175A true JP2015534175A (ja) 2015-11-26
JP6199394B2 JP6199394B2 (ja) 2017-09-20

Family

ID=50275637

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015531949A Expired - Fee Related JP6199394B2 (ja) 2012-09-14 2013-08-29 ソフトウェア定義ネットワークアタッチ可能記憶システムおよび方法

Country Status (5)

Country Link
US (3) US8769105B2 (ja)
EP (1) EP2895957A4 (ja)
JP (1) JP6199394B2 (ja)
KR (1) KR101544717B1 (ja)
WO (1) WO2014042889A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021518604A (ja) * 2018-03-19 2021-08-02 ランディス・ギア イノベーションズ インコーポレイテッドLandis+Gyr Innovations, Inc. クラスタ化されたデータベース環境でのデータのパーティショニング

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9332069B2 (en) 2012-12-28 2016-05-03 Wandisco, Inc. Methods, devices and systems for initiating, forming and joining memberships in distributed computing systems
US8364633B2 (en) 2005-01-12 2013-01-29 Wandisco, Inc. Distributed computing systems and system components thereof
US9361311B2 (en) * 2005-01-12 2016-06-07 Wandisco, Inc. Distributed file system using consensus nodes
US9424272B2 (en) * 2005-01-12 2016-08-23 Wandisco, Inc. Distributed file system using consensus nodes
US8296398B2 (en) * 2008-04-29 2012-10-23 Overland Storage, Inc. Peer-to-peer redundant file server system and methods
US9020893B2 (en) * 2013-03-01 2015-04-28 Datadirect Networks, Inc. Asynchronous namespace maintenance
US20140280220A1 (en) * 2013-03-13 2014-09-18 Sas Institute Inc. Scored storage determination
US9933956B2 (en) 2013-09-05 2018-04-03 Nutanix, Inc. Systems and methods for implementing stretch clusters in a virtualization environment
US9467536B1 (en) 2014-03-21 2016-10-11 Cisco Technology, Inc. Shim layer abstraction in multi-protocol SDN controller
US9660877B1 (en) 2014-03-21 2017-05-23 Cisco Technology, Inc. Transaction management in multi-protocol SDN controller
ES2881606T3 (es) * 2014-03-31 2021-11-30 Wandisco Inc Sistema de ficheros geográficamente distribuido que usa replicación de espacio de nombres coordinada
US9823842B2 (en) 2014-05-12 2017-11-21 The Research Foundation For The State University Of New York Gang migration of virtual machines using cluster-wide deduplication
CN106462639B (zh) * 2014-06-24 2020-04-24 谷歌有限责任公司 处理远程数据库的变化
US9575846B2 (en) 2014-07-24 2017-02-21 At&T Intellectual Property I, L.P. Distributed storage of data
US9419915B2 (en) * 2014-09-17 2016-08-16 Theplatform, Llc Methods and systems for resource allocation
US10055240B2 (en) 2014-09-23 2018-08-21 At&T Intellectual Property I, L.P. Service creation and management
US9594674B1 (en) * 2014-09-30 2017-03-14 EMC IP Holding Company LLC Method and system for garbage collection of data storage systems using live segment records
US9697227B2 (en) 2014-10-27 2017-07-04 Cohesity, Inc. Concurrent access and transactions in a distributed file system
US10469580B2 (en) * 2014-12-12 2019-11-05 International Business Machines Corporation Clientless software defined grid
US10554749B2 (en) 2014-12-12 2020-02-04 International Business Machines Corporation Clientless software defined grid
WO2016109743A1 (en) * 2014-12-30 2016-07-07 Nutanix, Inc. Systems and methods for implementing stretch clusters in a virtualization environment
US10255287B2 (en) * 2015-07-31 2019-04-09 Hiveio Inc. Method and apparatus for on-disk deduplication metadata for a deduplication file system
US10387384B1 (en) * 2015-09-30 2019-08-20 EMC IP Holding Company LLC Method and system for semantic metadata compression in a two-tier storage system using copy-on-write
US10628391B1 (en) * 2015-09-30 2020-04-21 EMC IP Holding Company LLC Method and system for reducing metadata overhead in a two-tier storage architecture
US11240334B2 (en) 2015-10-01 2022-02-01 TidalScale, Inc. Network attached memory using selective resource migration
US10229178B2 (en) 2015-10-30 2019-03-12 Netapp, Inc. Techniques for visualizing storage cluster system configurations and events
US10282379B2 (en) * 2015-10-30 2019-05-07 Netapp, Inc. Techniques for visualizing storage cluster system configurations and API therefore
US10997126B1 (en) * 2015-12-08 2021-05-04 EMC IP Holding Company LLC Methods and apparatus for reorganizing dynamically loadable namespaces (DLNs)
US10127238B1 (en) * 2015-12-08 2018-11-13 EMC IP Holding Company LLC Methods and apparatus for filtering dynamically loadable namespaces (DLNs)
US10079693B2 (en) 2015-12-28 2018-09-18 Netapp, Inc. Storage cluster management proxy
US9996541B2 (en) 2016-02-10 2018-06-12 Red Hat, Inc. Hash-based mount point lookup in virtual file systems
US11132450B2 (en) 2016-02-26 2021-09-28 Red Hat, Inc. Accessing file systems in a virtual environment
US9501364B1 (en) 2016-03-18 2016-11-22 Storagecraft Technology Corporation Hybrid image backup of a source storage
US10169100B2 (en) 2016-03-31 2019-01-01 International Business Machines Corporation Software-defined storage cluster unified frontend
US10592221B2 (en) * 2016-05-03 2020-03-17 Hewlett Packard Enterprese Development Lp Parallel distribution of application services to virtual nodes
US10235378B1 (en) * 2016-09-30 2019-03-19 EMC IP Holding Company LLC Namespace performance acceleration by selective SSD caching
CN108021562B (zh) * 2016-10-31 2022-11-18 中兴通讯股份有限公司 应用于分布式文件系统的存盘方法、装置及分布式文件系统
US11360942B2 (en) 2017-03-13 2022-06-14 Wandisco Inc. Methods, devices and systems for maintaining consistency of metadata and data across data centers
US10579553B2 (en) 2017-03-14 2020-03-03 International Business Machines Corporation Storage capability aware software defined storage
KR102263357B1 (ko) 2017-04-19 2021-06-11 한국전자통신연구원 분산 파일시스템 환경에서 사용자 수준 dma i/o를 지원하는 시스템 및 그 방법
US11023135B2 (en) 2017-06-27 2021-06-01 TidalScale, Inc. Handling frequently accessed pages
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US11240306B2 (en) * 2017-11-06 2022-02-01 Vast Data Ltd. Scalable storage system
US11175927B2 (en) 2017-11-14 2021-11-16 TidalScale, Inc. Fast boot
US10735529B2 (en) 2017-12-07 2020-08-04 At&T Intellectual Property I, L.P. Operations control of network services
KR102021671B1 (ko) * 2017-12-11 2019-09-16 건국대학교 산학협력단 SDN에서 애플리케이션 레이어의 통신을 위한 노스바운드 API로써의 gRPC
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US10789217B2 (en) 2018-06-22 2020-09-29 Microsoft Technology Licensing, Llc Hierarchical namespace with strong consistency and horizontal scalability
US11169855B2 (en) * 2019-12-03 2021-11-09 Sap Se Resource allocation using application-generated notifications
WO2022029290A1 (en) * 2020-08-07 2022-02-10 Carlos Ardanza Azcondo Interfacing between file client and file server
US11544234B2 (en) * 2020-11-12 2023-01-03 International Business Machines Corporation Virtualizing specific values in a guest configuration based on the underlying host symbol repository
US11966294B2 (en) * 2021-05-05 2024-04-23 EMC IP Holding Company LLC Journal barrier consistency determination
US11907173B1 (en) * 2021-12-06 2024-02-20 Amazon Technologies, Inc. Composable network-storage-based file systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06266600A (ja) * 1993-03-12 1994-09-22 Hitachi Ltd 分散ファイルシステム
JP2004240803A (ja) * 2003-02-07 2004-08-26 Hitachi Ltd ネットワークストレージ仮想化方法およびネットワークストレージ仮想化システム
JP2005092862A (ja) * 2003-08-11 2005-04-07 Hitachi Ltd 負荷分散方法及びクライアント・サーバシステム
WO2010144374A2 (en) * 2009-06-12 2010-12-16 Microsoft Corporation Software extension analysis

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895429B2 (en) 2001-12-28 2005-05-17 Network Appliance, Inc. Technique for enabling multiple virtual filers on a single filer to participate in multiple address spaces with overlapping network addresses
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US6694323B2 (en) * 2002-04-25 2004-02-17 Sybase, Inc. System and methodology for providing compact B-Tree
US6963868B2 (en) 2002-06-03 2005-11-08 International Business Machines Corporation Multi-bit Patricia trees
US7272654B1 (en) 2004-03-04 2007-09-18 Sandbox Networks, Inc. Virtualizing network-attached-storage (NAS) with a compact table that stores lossy hashes of file names and parent handles rather than full names
US7613703B2 (en) 2004-09-30 2009-11-03 Microsoft Corporation Organizing resources into collections to facilitate more efficient and reliable resource access
US7885970B2 (en) 2005-01-20 2011-02-08 F5 Networks, Inc. Scalable system for partitioning and accessing metadata over multiple servers
US20070088702A1 (en) * 2005-10-03 2007-04-19 Fridella Stephen A Intelligent network client for multi-protocol namespace redirection
US7792129B2 (en) * 2006-12-01 2010-09-07 International Business Machines Corporation Multi-queue packet processing using Patricia tree
US8271612B2 (en) 2008-04-04 2012-09-18 International Business Machines Corporation On-demand virtual storage capacity
US8296398B2 (en) 2008-04-29 2012-10-23 Overland Storage, Inc. Peer-to-peer redundant file server system and methods
US7992037B2 (en) * 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
US8335889B2 (en) * 2008-09-11 2012-12-18 Nec Laboratories America, Inc. Content addressable storage systems and methods employing searchable blocks
US20100082546A1 (en) 2008-09-30 2010-04-01 Microsoft Corporation Storage Tiers for Database Server System
US8078622B2 (en) * 2008-10-30 2011-12-13 Network Appliance, Inc. Remote volume access and migration via a clustered server namespace
US8301654B2 (en) * 2009-02-24 2012-10-30 Hitachi, Ltd. Geographical distributed storage system based on hierarchical peer to peer architecture
WO2011077489A1 (ja) 2009-12-24 2011-06-30 株式会社日立製作所 仮想ボリュームを提供するストレージシステム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06266600A (ja) * 1993-03-12 1994-09-22 Hitachi Ltd 分散ファイルシステム
JP2004240803A (ja) * 2003-02-07 2004-08-26 Hitachi Ltd ネットワークストレージ仮想化方法およびネットワークストレージ仮想化システム
JP2005092862A (ja) * 2003-08-11 2005-04-07 Hitachi Ltd 負荷分散方法及びクライアント・サーバシステム
WO2010144374A2 (en) * 2009-06-12 2010-12-16 Microsoft Corporation Software extension analysis

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021518604A (ja) * 2018-03-19 2021-08-02 ランディス・ギア イノベーションズ インコーポレイテッドLandis+Gyr Innovations, Inc. クラスタ化されたデータベース環境でのデータのパーティショニング
JP7102542B2 (ja) 2018-03-19 2022-07-19 ランディス・ギア イノベーションズ インコーポレイテッド クラスタ化されたデータベース環境でのデータのパーティショニング
JP2022153422A (ja) * 2018-03-19 2022-10-12 ランディス・ギア イノベーションズ インコーポレイテッド クラスタ化されたデータベース環境でのデータのパーティショニング
JP7220321B2 (ja) 2018-03-19 2023-02-09 ランディス・ギア イノベーションズ インコーポレイテッド クラスタ化されたデータベース環境でのデータのパーティショニング

Also Published As

Publication number Publication date
KR20150052036A (ko) 2015-05-13
US9059976B2 (en) 2015-06-16
US20140297734A1 (en) 2014-10-02
WO2014042889A2 (en) 2014-03-20
US8769105B2 (en) 2014-07-01
WO2014042889A3 (en) 2014-05-15
EP2895957A2 (en) 2015-07-22
JP6199394B2 (ja) 2017-09-20
US9549026B2 (en) 2017-01-17
US20140082145A1 (en) 2014-03-20
KR101544717B1 (ko) 2015-08-21
US20150281360A1 (en) 2015-10-01
EP2895957A4 (en) 2015-11-11

Similar Documents

Publication Publication Date Title
JP6199394B2 (ja) ソフトウェア定義ネットワークアタッチ可能記憶システムおよび方法
US11178246B2 (en) Managing cloud-based storage using a time-series database
US7653699B1 (en) System and method for partitioning a file system for enhanced availability and scalability
USRE43346E1 (en) Transaction aggregation in a switched file system
US8943282B1 (en) Managing snapshots in cache-based storage systems
US8316066B1 (en) Shadow directory structure in a distributed segmented file system
US7788335B2 (en) Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system
US8396895B2 (en) Directory aggregation for files distributed over a plurality of servers in a switched file system
CA2512312C (en) Metadata based file switch and switched file system
US8417681B1 (en) Aggregated lock management for locking aggregated files in a switched file system
US7383288B2 (en) Metadata based file switch and switched file system
US7743038B1 (en) Inode based policy identifiers in a filing system
US10725666B2 (en) Memory-based on-demand data page generation
US9582213B2 (en) Object store architecture for distributed data processing system
US7707165B1 (en) System and method for managing data versions in a file system
JP6549704B2 (ja) 分散コンピューティング環境内でゼロコピー2進基数木をサポートするためのシステムおよび方法
US20120036107A1 (en) Rule based aggregation of files and transactions in a switched file system
US20090271418A1 (en) Computer file system with path lookup tables
US7424497B1 (en) Technique for accelerating the creation of a point in time prepresentation of a virtual file system
US20200065199A1 (en) Journaling data received in a cloud-based distributed computing environment
US9165003B1 (en) Technique for permitting multiple virtual file systems having the same identifier to be served by a single storage system
US20170212919A1 (en) Bottom-up dense tree repair technique
Shu Distributed Storage Systems

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20150819

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151013

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160112

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160406

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170823

R150 Certificate of patent or registration of utility model

Ref document number: 6199394

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees