JP5507670B2 - ストライプ化ファイルシステムにおける能力平準化によるデータ分散 - Google Patents

ストライプ化ファイルシステムにおける能力平準化によるデータ分散 Download PDF

Info

Publication number
JP5507670B2
JP5507670B2 JP2012508480A JP2012508480A JP5507670B2 JP 5507670 B2 JP5507670 B2 JP 5507670B2 JP 2012508480 A JP2012508480 A JP 2012508480A JP 2012508480 A JP2012508480 A JP 2012508480A JP 5507670 B2 JP5507670 B2 JP 5507670B2
Authority
JP
Japan
Prior art keywords
node
striping
storage
file
data
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.)
Active
Application number
JP2012508480A
Other languages
English (en)
Other versions
JP2012525634A (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 JP2012525634A publication Critical patent/JP2012525634A/ja
Application granted granted Critical
Publication of JP5507670B2 publication Critical patent/JP5507670B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

[関連出願]
本願は、2005年4月29日に出願され、2005年9月1日に米国出願公開第US2005−0192932号として公開された「STORAGE ARCHITECTURE FOR STRIPING DATA CONTAINER CONTENT ACROSS VOLUMES OF A CLUSTER」と題するリチャード・ジャーニガン他による米国特許出願第11/119,278号に関連するものであり、この米国特許出願の内容は、参照により本明細書に援用される。
[発明の分野]
本発明は、ストライプ化ファイルシステムに関し、特に、ストライプ化ファイルシステムの複数のノードにわたる能力平準化に関する。
[発明の背景]
ストレージシステムは通常、1以上の記憶装置を含み、要望に応じて、その中に情報を入れ、又はそこから情報を取得することができる。ストレージシステムは、とりわけ、システムにより実施されるストレージサービスを支える種々のストレージオペレーションを実施することにより、システムを機能的に編成するストレージオペレーティングシステムを含む。ストレージシステムは、限定はしないが、例えば、ネットワーク・アタッチド・ストレージ(NAS)環境、ストレージ・エリア・ネットワーク(SAN)、及びクライアント又はホストコンピュータに直接取り付けられるディスクアセンブリを含む種々のストレージアーキテクチャに従って実施される場合がある。記憶装置は一般に、ディスクアレイとして編成された複数のディスクドライブであり、「ディスク」という用語は一般に、内蔵型回転式磁気媒体記憶装置を表す。この文脈におけるディスクという用語は、ハードディスクドライブ(HDD)、又はダイレクト・アクセス・ストレージ・デバイス(DASD)と同義である。なお、代替実施形態において、記憶装置は、例えば、フラッシュメモリ、バッテリーバックアップ不揮発性ランダムアクセスメモリなどのような固体装置からなる場合もある。従って、本明細書の説明は、ディスクを例として記載されているが、それらの実施形態は、単なる例として見るべきである。
ストレージシステムのストレージオペレーティングシステムは、ファイルシステムのような上位モジュールを実施し、種々のボリュームに記憶された情報を、ファイル、及び論理ユニットのようなデータコンテナの階層構造として論理編成する。例えば、「ディスク上」の各ファイルは、そのファイルの実際のデータのような情報を記憶するように構成された一組のデータ構造、すなわちディスクブロックとして実施される場合がある。それらのデータブロックは、ファイルシステムにより管理されるボリュームブロック番号(vbn)空間の中に編成される。ファイルシステムはさらに、ファイル内の各データブロックに、対応する「ファイルオフセット」、又はファイルブロック番号(fbn)を割り当てる場合がある。ファイルシステムは通常、ファイル単位でfbnのシーケンスを割り当てるのに対し、vbnは、より大きなボリュームアドレス空間にわたって割り当てられる。ファイルシステムは、vbn空間の中にデータブロックを「論理ボリューム」として編成する。各論理ボリュームは、必須ではないが、独自のファイルシステムに関連する場合がある。
1つの既知のタイプのファイルシステムは、ディスク上でデータを上書きしないwrite−anywhereファイルシステムである。あるデータブロックが、ディスクからストレージシステムのメモリへ取り出され(読み出され)、新たなデータで「汚され」(すなわち、更新、又は変更され)る場合、書込み性能を最適化するために、そのデータブロックは、以後、ディスク上の新たな場所に記憶される(書き込まれる)。write−anywhereファイルシステムは、最初に、データがディスク上に実質的に連続的に配置されるような最適レイアウトを前提とする場合がある。最適レイアウトにより、ディスクに対する効率的なアクセスオペレーションが得られ、特に、シーケンシャル読み出しオペレーションの場合に効率的なアクセスオペレーションが得られる。ストレージシステムにおいて動作するように構成されたwrite−anywhereファイルシステムの一例は、カリフォルニア州サニーベイルにあるネットアップ,インコーポレイテッドから入手可能なWrite Anywhere File Layout(WAFL(登録商標))ファイルシステムである。
ストレージシステムは、情報配送のクライアント/サーバモデルに従って動作するようにさらに構成される場合があり、それによって多数のクライアントが、システムに記憶されたデータコンテナにアクセスすることが可能になる。このモデルでは、クライアントは、ポイント・ツー・ポイントリンク、共有ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、又はインターネットのような公衆ネットワークを介して実施される仮想私設ネットワーク(VPN)のようなコンピュータネットワークを介してストレージシステムに「接続」するコンピュータ上で実行されるデータベースアプリケーションのようなアプリケーションを含む場合がある。各クライアントは、ネットワークを介してファイルベースのプロトコルメッセージ、及びブロックベースのプロトコルメッセージ(パケットの形をしている)をシステムへ発行することにより、ストレージシステムに種々のサービスを要求する場合がある。
多数のクライアントにサービスを提供するために、複数のストレージシステムが相互接続される場合がある。各ストレージシステムは、1以上のボリュームを提供するように構成される場合があり、各ボリュームは、1以上のデータコンテナを記憶する。しかしながら、しばしば、クライアントにより発行された多数のデータアクセス要求が、環境の特定のストレージシステムにより提供される少数のデータコンテナに向けて送信されることがある。そのような問題の一つの解決策は、特定のストレージシステムにより提供されるボリュームを、環境の全てのストレージシステムにわたって分散させることである。その結果、データアクセス要求、及びそれらの要求に対するサービスを提供するために必要な処理リソースは、全てのストレージシステムにわたって分散され、それによって、各ストレージシステムにおける個々の処理負荷は低減される。但し、ファイルのような単一のデータコンテナのみが、ストレージシステム環境の種々のクライアントにより非常に頻繁にアクセスされる場合、顕著な欠点が現れる。その結果、そのデータコンテナに対する要求についてサービスを提供しようとするストレージシステムは、自身の処理リソースを超過し、速度と処理能力の同時低下を伴う過剰負荷状態になる場合がある。
非常に頻繁に使用される単一データコンテナの問題を克服する一つの技術は、ストライプ化ボリュームセットとして構成された複数のボリュームにわたってデータコンテナをストライピングし、各ボリュームが、異なるストレージシステムからサービスの提供を受けるようにし、それによって、単一データコンテナについての負荷を複数のストレージシステムにわたって分散させることである。データコンテナストライピングのための一つの技術は、「STORAGE SYSTEM ARCHITECTURE FOR STRIPING DATA CONTAINER CONTENT ACROSS VOLUMES OF A CLUSTER」と題する上で援用した米国特許出願公開第US2005−0192932号に記載されている。一般に、ストライプ化ボリュームセットが最初に生成されるとき、ストライプ化ボリュームセットの種々の構成要素ボリュームを提供する構成要素ノードはそれぞれ、同一または類似の生成技術を使用する。すなわち、各ノードは通常、同一、又は実質的に同一のハードウェア、及び/又はソフトウェア構成を備える。すなわち、それらのノードは、各ノードが互いに実質的に同一であるため、ホモジニアスであると見られる場合がある。このようなシステムの顕著な欠点は、時間的に後の時点でストライプ化ボリュームセットが拡張され、顧客が、新たに追加されたノードのために、後世代(すなわち、新世代)のハードウェア、及び/又はソフトウェアを使用する場合に発生する。新たに追加されたノードは、非常に最新のハードウェア、及び/又はソフトウェアを使用するため、それらは通常、クラスタの元のノードに比べて、余分な計算能力を必要とする。より一般的には、この問題は、ヘテロジニアスなクラスタが形成されるとき、すなわち、クラスタのヘテロジニアスなノードが実質的に異なる機能、及び/又はプロセッサ能力を有するときに、顕著となる場合がある。そのようなヘテロジニアスなシステムでは、各ノードが通常、ストライピング処理のために同量だけ使用される。顕著な欠点は、新世代のノードが、十分に活用されない、又は使用されない余分な処理能力を有する場合があることから生じる。すなわち、新たな、及び/又は高速なノードは事実上、クラスタの最も非力なノード、すなわち元のノードと同種であるかのように使用されるため、新たな、及び/又は高速なノードを使用する利点は、無駄となる。そのような処理能力の無駄を回避するために、ユーザは、全てのノードが、共通のホモジニアスタイプのものであることを確保しなければならない。これは例えば、古いノードを購入することにより、又は、古いノードを新しいモデルに置き換えることにより達成される場合がある。これらの解決策はいずれも、最適なものではなく、クラスタ化ストレージシステムの所有権の総合的コストを上昇させる。
[発明の概要]
本発明は、ストライプ化ファイルシステムにおける能力平準化を提供するように構成されたデータ分散技術を提供することにより、従来技術の欠点を克服する。ストライプ化ボリュームセットは、例えば、ボリュームの順序付きリスト、及びデータがストライピングされる宛先となる関連ノードを識別するストライピングテーブルとして実施される場合がある例えばストライピングデータ構造のような一組のストライピングルールに関連する。クラスタの各ノードは、SVSの1つのボリュームを提供するように構成されたディスク要素と、データアクセス要求をクラスタのいずれかのデモジュールへリダイレクトするように構成されたネットワーク要素とを含む。データコンテナの中身は、SVSの種々のボリュームにわたって分配され、それによって、クラスタにより提供されるストレージサービスの効率が改善される。その目的のために、ストライピングテーブルは、データコンテナの中身をストライプとして複数のボリュームにわたって分配する態様を指定する。動作において、新たなノードがストライプ化ボリュームセットに追加されるとき、ストライピングテーブルは、新たに追加されたノードを受け入れるように発展される。例示的実施形態において、クラスタの各ノードは、例えば、そのノードのプロセッサ速度、プロセッサの数、ハードウェア構成、及び/又は使用可能なソフトウェアを考慮に入れた能力値に関連する。ストライピングテーブルの発展処理の際に、本技術は、SVSの種々のストライプが各ノードの能力値に従って最適にノードに割当てられるような形で、SVSの種々のストライプを種々のノードにわたって分配する。例えば、2ノードシステムにおいて、第1のノードが能力値100を有し、第2のノードが能力値200を有する場合、最適な処理能力を得るためには、第2のノードは、第1のノードに比べて2倍の量のストライプを提供しなければならない。能力値を含む発展的ストライピングテーブルの使用により、ヘテロジニアスなノードをストライプ化ボリュームセットの中においてその最大能力まで使用することができ、それによって、十分に活用されない処理リソースを減らすことができる。
本発明の上記の利点、及び他の利点は、添付の図面と併せて下記の説明を参照することで、より良好に理解することができるであろう。図面において、同様の符号は、同一の要素、又は機能的に類似の要素を示している。
本発明の例示的実施形態に従ってクラスタとして相互接続された複数のノードを示す略ブロック図である。 本発明の例示的実施形態によるノードを示す略ブロック図である。 本発明の例示的実施形態に有利に使用される場合があるストレージオペレーティングシステムを示す略ブロック図である。 本発明の例示的実施形態によるクラスタファブリック(CF)メッセージのフォーマットを示す略ブロック図である。 本発明の例示的実施形態によるデータコンテナハンドルのフォーマットを示す略ブロック図である。 本発明の例示的実施形態による例示的inodeを示す略ブロック図である。 本発明の例示的実施形態による例示的バッファツリーを示す略ブロック図である。 本発明に有利に使用される場合があるファイルのバッファツリーの例示的実施形態を示す略ブロック図である。 本発明の例示的実施形態による例示的なアグレゲートを示す略ブロック図である。 本発明の例示的実施形態によるアグレゲートの例示的なディスク上レイアウトを示す略ブロック図である。 本発明の例示的実施形態による一群の管理プロセスを示す略ブロック図である。 本発明の例示的実施形態によるボリューム位置データベース(VLDB)ボリュームエントリを示す略ブロック図である。 本発明の例示的実施形態によるVLDBアグレゲートエントリを示す略ブロック図である。 本発明の例示的実施形態によるストライプ化ボリュームセット(SVS)を示す略ブロック図である。 本発明の例示的実施形態によるVLDB SVSエントリを示す略ブロック図である。 本発明の例示的実施形態によるSVSの種々のボリューム上に記憶されたファイルの中身の周期的散在を示す略ブロック図である。 本発明の例示的実施形態によるSVS内におけるデータコンテナのストライピングを示す略ブロック図である。 本発明の例示的実施形態による、能力平準化に基づくデータ分散を実施するための手順の種々のステップの詳細を示すフロー図である。 本発明の例示的実施形態による、ノードの追加に基づくストライピングテーブルの発展を示す略ブロック図である。 本発明の例示的実施形態による、ノードの追加に基づくストライピングテーブルの発展を示す略ブロック図である。 本発明の例示的実施形態による、ノードの追加に基づくストライピングテーブルの発展を示す略ブロック図である。 本発明の例示的実施形態による、ノードの追加に基づくストライピングテーブルの発展を示す略ブロック図である。
[例示的実施形態の詳細な説明]
A.クラスタ環境
図1は、本発明の例示的実施形態に従って、クラスタ100として相互接続され、種々の記憶装置における情報の編成に関連するストレージサービスを提供するように構成された複数のノード200を示す略ブロック図である。ノード200は、互いに協働し、クラスタ100の分散ストレージシステムアーキテクチャを提供する種々の機能的要素を含む。その目的のために、各ノード200は一般に、ネットワーク要素(Nモジュール310)、及びディスク要素(Dモジュール350)として構成される。Nモジュール310は、ノード200をコンピュータネットワーク140を介して種々のクライアント180に接続することを可能にする機能を有する一方、各Dブレード350は、ディスクアレイ120のディスク130のような1以上の記憶装置に接続する。ノード200は、クラスタスイッチングファブリック150により相互接続され、例示的実施形態において、クラスタスイッチングファブリック150は、ギガビットイーサネット(登録商標)スイッチとして実施される場合がある。分散ファイルシステムアーキテクチャの一例は、2003年12月30日に発行されたエム・ケイザー他による「METHOD AND SYSTEM FOR RESPONDING TO FILE SYSTEM REQUESTS」と題する米国特許第6,671,773号に概ね記載されている。なお、例示的なクラスタ100には、、同数のNモジュールとDモジュールが示されているが、本発明の種々の実施形態によれば、異なる数のNモジュール、及び/又はDモジュールが存在する場合もある。例えば、クラスタ構成100には、NモジュールとDモジュールの間に一対一の対応を反映しない複数のNモジュール及び/又Dモジュールが存在する場合もある。従って、1つのNモジュールと1つのDモジュールを含むノード200の説明は、単なる例として解釈すべきである。
クライアント180は、情報配送のクライアント/サーバモデルに従ってノード200と情報をやりとりするように構成された汎用コンピュータであってもよい。すなわち、各クライアントは、ノードにサービスを要求する場合があり、ノードは、ネットワーク140を介してパケットをやりとりすることにより、クライアントにより要求されたサービスの結果を返す場合がある。クライアントは、ファイル及びディレクトリの形をした情報にアクセスするときに、トランスミッション・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)を介して、コモン・インターネット・ファイル・システム(CIFS)プロトコル、又はネットワーク・ファイル・システム(NFS)プロトコルのようなファイルベースのアクセスプロトコルを含むパケットを発行する場合がある。あるいはクライアントは、ブロックの形をした情報にアクセスするときに、「SCSI(Small Computer Systems Interface) over TCP」(iSCSI)プロトコル、及び「SCSI over FC」(FCP)プロトコルのようなブロックベースのアクセスプロトコルを含むパケットを発行する場合がある。
B.ストレージシステムノード
図2は、例えば、システムバス223によって相互接続された複数のプロセッサ222a,b、メモリ224、ネットワークアダプタ225、クラスタアクセスアダプタ226、ストレージアダプタ228、及びローカルストレージ230を含むストレージシステムとして実施される。ローカルストレージ230は、ユーザモードアプリケーション1100として実行される1以上の管理プロセスにより提供される構成情報をローカルに記憶(例えば、設定ファイル235に)するためにノードにより使用されるディスクのような1以上の記憶装置を含む(図11参照)。クラスタアクセスアダプタ226は、ノード200をクラスタ100の他のノードに接続するように構成された複数のポートを含む。例示的実施形態では、イーサネット(登録商標)をクラスタリングプロトコル及び相互接続媒体として使用しているが、当業者には明らかなように、本明細書に記載されるクラスタアーキテクチャの中において、他のタイプのプロトコル及び相互接続を使用することも可能である。代替実施形態として、Nモジュール及びDモジュールが個別のストレージシステム又はコンピュータ上で実施される場合、N/Dモジュールは、クラスタ100における他のN/Dモジュールとの通信のために、クラスタアクセスアダプタ226により使用される場合がある。
各ノード200は、例えば、ストレージオペレーティングシステム300を実行するデュアルプロセッサストレージシステムとして実施され、ストレージオペレーティングシステム300は、好ましくは、ファイルシステムのような上位モジュールを実施し、情報を、名前付きディレクトリ、ファイル、及び仮想ディスク(以後、一般に「ブロック」)と呼ばれる特殊なタイプのファイルの階層構造としてディスク上に論理編成する。但し、当業者には明らかなように、ノード200は、代替として、単一の、又は3以上のプロセッサシステムを含む場合がある。例えば、1つのプロセッサ222aは、ノード上でNモジュール310の機能を実行し、他のプロセッサ222bは、Dモジュール350の機能を実行する場合がある。
メモリ224は、例えば、本発明に関連するソフトウェアプログラムコード及びデータ構造を記憶するためにプロセッサ及びアダプタによりアドレス指定可能な種々の記憶場所を含む。さらに、プロセッサ、及びアダプタは、ソフトウェアコードを実行し、データ構造を操作するように構成された処理要素、及び/又は論理回路を含む。ストレージオペレーティングシステム300は、その一部がメモリ上に常駐し、処理要素によって実行され、とりわけ、ノードにより実施されるストレージサービスを支える種々のストレージオペレーションを実施することにより、ノード200を機能的に編成する。当業者には明らかなように、、本明細書に記載される本発明に関連するプログラム命令を記憶し、実行するために、例えばフラッシュメモリ、固体記憶装置などのような種々のコンピュータ読取可能記憶媒体を含む、他の処理手段、及び記憶手段を使用してもよい。
ネットワークアダプタ225は、ポイント・ツー・ポイントリンク、ワイドエリアネットワーク、公衆ネットワーク(インターネット)を介して実施される仮想私設ネットワーク、又は共有ローカルエリアネットワークを介してノード200を1以上のクライアント180に接続するように構成された複数のポートを含む。従って、ネットワークアダプタ225は、ノードをネットワークに接続するために必要な機械的、電気的、及び信号的回路を含む場合がある。例えば、コンピュータネットワーク140は、イーサネットネットワーク、又はファイバーチャネル(FC)ネットワークとして実施される場合がある。各クライアント180は、TCP/IPのような所定のプロトコルにしたがってデータの個々のフレーム又はパケットをやりとりすることにより、ネットワーク140を介してノードと通信する場合がある。
ストレージアダプタ228は、ノード200上で実行されるストレージオペレーティングシステム300と協働し、クライアントにより要求された情報にアクセスする。情報は、例えば、ビデオテープ、光学的、DVD、磁気テープ、バブルメモリ、電子的ランダムアクセスメモリ、微小電気機械、及び、データ及びパリティ情報を含む情報を記憶するように構成された任意の他の同様の媒体のような、書き込み可能な記憶装置媒体の任意のタイプのアタッチド・アレイに記憶される場合がある。但し、本明細書に例示的に記載されるように、情報は、好ましくは、アレイ120のディスク130上に記憶される。ストレージアダプタは、従来の高性能FCリンクトポロジーのようなI/O相互接続構成を介してディスクに接続される入出力(I/O)インタフェース回路を有する複数のポートを含む。
各アレイ120上への情報の記憶は、好ましくは、ボリューム(複数可)上のボリュームブロック番号(vbn)空間の全体的論理構成を定義するように協働する一群の物理的記憶ディスク130を含む1以上のストレージ「ボリューム」として実施される。各論理ボリュームは一般に、必須ではないが、独自のファイルシステムに関連する。論理ボリューム/ファイルシステム中のディスクは通常、1以上のグループとして編成され、各グループは、RAID(Redundant Array of Independent or Inexpensive Array)として動作する場合がある。RAID4レベル実施形態のような大半のRAID実施形態は、RAIDグループ中の所与の数の物理ディスクにわたるデータ「ストライプ」の冗長書込み、及びストライピングされたデータに関連するパリティ情報の適切な記憶により、データ記憶の信頼性/完全性を向上させる。RAID実施形態の一例は、RAID4レベル実施形態であるが、他のタイプ、及びレベルのRAID実施形態も、本明細書に記載する本発明の原理に従って使用される場合がある。
C.ストレージオペレーティングシステム
ディスク130へのアクセスを可能にするために、ストレージオペレーティングシステム300は、1以上の仮想化モジュールと協働し、ディスク130により提供される記憶空間を「仮想化」するwrite−anywhereファイルシステムを実施する。ファイルシステムは、情報を、名前付きディレクトリ及びファイルの階層構造としてディスク上に論理編成する。「ディスク上」の各ファイルは、データのような情報を記憶するように構成された一組のディスクブロックとして実施される場合がある一方、ディレクトリは、他のファイル及びディレクトリの名前、及びそれらへのリンクを記憶する特殊なフォーマットのファイルとして実施される場合がある。仮想化モジュール(複数可)によれば、ファイルシステムは、情報を、名前付き論理ユニット番号(lun)としてエキスポートされるディスク上の種々のブロックの階層構造としてさらに論理編成することが可能となる。
例示的実施形態において、ストレージオペレーティングシステムは、好ましくは、カリフォルニア州サニーベイルにあるネットアップ,インコーポレイテッドから入手可能なWrite Anywhere File Layout(WAFL(登録商標))ファイルシステムを実施するNetApp(登録商標) Data ONATP(登録商標)オペレーティングシステムである。但し、当然ながら、本明細書に記載される発明の原理に従って、任意の適当なストレージオペレーティングシステムを拡張して使用することが可能であるものと考えられる。従って、「ONTAP」という用語が使用された場合でも、それは、本発明の教示に適用可能な任意のストレージオペレーティングシステムを広く指し示すものとして解釈すべきである。
図3は、本発明に有利に使用することが可能なストレージオペレーティングシステム300を示す略ブロック図である。ストレージオペレーティングシステムは、統合ネットワークプロトコルスタック、すなわち、より一般的には、ノードに記憶された情報をクライアントがブロックアクセスプロトコル及びファイルアクセスプロトコルを使用してアクセスするためのデータパスを提供するマルチプロトコルエンジン325、を形成するように構成された一連のソフトウェア層を含む。マルチプロトコルエンジンは、IP層314、並びにその支援搬送手段であるTCP層316及びユーザデータグラムプロトコル(UDP)層315のような種々のネットワークプロトコル層に対するインタフェースとなるネットワークドライバ(例えば、ギガビットイーサネットドライバ)のメディアアクセス層312を含む。ファイルシステムプロトコル層は、マルチプロトコルファイルアクセスを提供し、その目的のために、ダイレクトアクセスファイルシステム(DAFS)プロトコル318、NFSプロトコル320、CIFSプロトコル322、及びハイパーテキストトランスファープロトコル(HTTP)プロトコル324をサポートする。VI層326は、DAFSプロトコル318により必要とされるようなRDMAのようなダイレクトアクセストランスポート(DAT)機能を提供するためのVIアーキテクチャを実施する。iSCSIドライバ層328は、TCP/IPネットワークプロトコル層を介したブロックプロトコルアクセスを提供する一方、FCドライバ層330は、ノードとの間でブロックアクセス要求及び応答を送受信する。FC及びiSCSIドライバは、種々のブロックに対するFC固有の、及びiSCSI固有のアクセス制御を提供し、従って、ノード200上の種々のブロックにアクセスするときに、iSCSI又はFCPのいずれか一方、又はiSCSIとFCPの両方へのlunのエキスポートを管理する。
さらに、ストレージオペレーティングシステムは、ノード200のディスク130上に記憶された情報にアクセスするための種々のデータパスを提供するストレージサーバ365を形成するように構成された一連のソフトウェアモジュールを含む。その目的のために、ストレージサーバ365は、ボリュームストライピングモジュール(VSM)370、RAIDシステムモジュール380、及びディスクドライバシステムモジュール390と協働するファイルシステムモジュール360を含む。RAIDシステム380は、I/Oオペレーションに従って、ボリューム/ディスクに対する情報の記憶及び読み出しを管理するのに対し、ディスクドライバシステム390は、例えばSCSIプロトコルのようなディスクアクセスプロトコルを実施する。VSM370は、例えば、ストライプ化ボリュームセット(SVS)を実施する。本明細書に詳しく記載されるように、VSMは、ファイルシステム360と協働し、ストレージサーバ365が、SVSのボリュームに対するサービスを提供できるようにする。特に、VSM370は、Locate()関数375を実施し、SVSボリューム中のデータコンテナ中身の位置を計算し、それによって、クラスタにより提供されるそのような中身の一貫性を確保する。
ファイルシステム360は、例えば、仮想ディスク(vdisk)モジュール(図示せず)、及びSCSIターゲットモジュール335として実施される1以上の仮想化モジュールとの情報のやりとりにより、ストレージオペレーティングシステム300の仮想化システムを実施する。vdiskモジュールによれば、ノード200に対してユーザ(システム管理者)が発行したコマンドに応答し、管理フレームワーク1110(図11参照)のユーザインタフェースのような管理インタフェースによるアクセスが可能となる。SCSIターゲットモジュール335は通常、FC及びiSCSIドライバ328、330と、ファイルシステム360との間に配置され、lunがブロックとして表現される場合に、ブロック(lun)空間とファイルシステム空間との間の仮想化システムの変換層を提供する。
ファイルシステム360は、例えば、ディスクのような記憶装置に記憶された情報へのアクセスの際に使用される論理ボリューム管理機能を提供するメッセージベースのシステムである。すなわち、ファイルシステム360は、ファイルシステムセマンティックを提供するだけでなく、通常ならばボリュームマネージャに関連する機能も提供する。そのような機能には、(1)ディスクのアグレゲーション、(2)ディスクの記憶帯域幅のアグレゲーション、及び(3)ミラーリング、及び/又はパリティ(RAID)のような信頼性保証が含まれる。ファイルシステム360は、例えば、4キロバイト(KB)ブロックを使用するブロックベースのディスク上フォーマット表現を有し、インデックスノード(inode)を使用して、ファイル及びファイル属性(例えば、作成時刻、アクセス権、サイズ、及びブロック位置など)を識別するWAFLファイルシステム(以後、一般に「write−anywhereファイルシステム」)を実施する。ファイルシステムは、ファイルを使用して、そのファイルシステムのレイアウトを表すメタデータを記憶する。そのようなメタデータファイルとしては、とりわけ、inodeファイルが挙げられる。ディスクからのinodeの読み出しには、ファイルハンドル、すなわち、inode番号を含む識別子が使用される。
概して、write−anywhereファイルシステムの全てのinodeは、inodeファイルの中に編成される。ファイルシステム(fs)情報ブロックは、ファイルシステム上の情報のレイアウトを指定し、ファイルシステムの全ての他のinodeを含むファイルのinodeを含む。各論理ボリューム(ファイルシステム)は、fsinfoブロックを有し、fsinfoブロックは、好ましくは例えばRAIDグループ内の固定位置に記憶される。inodeファイルのinodeは、inodeファイルのデータブロックを直接参照する(指し示す)場合もあれば、inodeファイルの間接ブロックを参照し、さらにその間接ブロックが、inodeファイルのデータブロックを参照する場合もある。inodeファイルの各データブロックの中には、埋め込みinodeがあり、埋め込みinodeはそれぞれ、間接ブロックを参照し、さらにその間接ブロックが、ファイルのデータブロックを参照する場合がある。
動作としては、クライアント180からの要求は、コンピュータネットワーク140を介してパケットとしてノード200へ転送され、そこでパケットは、ネットワークアダプタ225によって受信される。(層312又は層330の)ネットワークドライバは、そのパケットを処理し、write−anywhereファイルシステム360へ転送する前に、必要に応じてそのパケットをネットワークプロトコル及びファイルアクセス層へと渡し、さらなる処理を施す。ここで、ファイルシステムは、要求されたデータが「コア内」に、すなわち、メモリ224内に存在しない場合、要求されたデータをディスク130からロード(読み出す)処理を生成する。情報がメモリ上に無い場合、ファイルシステム360は、inode番号を使用してinodeファイル内を検索し、適当なエントリにアクセスし、論理vbnを読み出す。次にファイルシステムは、その論理vbnを含むメッセージ構造をRAIDシステム380へ渡す。論理vbnは、ディスク識別子及びディスクブロック番号(disk,vbn)にマッピングされ、ディスクドライバシステム390の適当なドライバ(例えば、SCSI)へ送信される。ディスクドライバは、指定されたディスク130からそのdbnをアクセスし、ノードによる処理に備えて、要求されたデータブロック(複数可)をメモリにロードする。要求が完了すると、ノード(及び、オペレーティングシステム)は、ネットワーク140を介してクライアント180へ返答を返す。
なお、ノードにおいて受信されたクライアント要求についてデータストレージアクセスを実施するために必要となる上記のストレージオペレーティングシステム層を通るソフトウェア「パス」は、代替として、ハードウェアで実施してもよい。すなわち、本発明の代替実施形態では、ストレージアクセス要求データパスは、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又は特定用途向け集積回路(ASIC)の中に論理回路として実施される場合がある。この種のハードウェア実施形態によれば、クライアント180により発行される要求に応答してノード200により提供されるストレージサービスのパフォーマンスを向上させることができる。また、本発明の代替実施形態において、アダプタ225、228の処理要素は、パケット処理、及びストレージアクセスオペレーションに関する負荷の一部又は全部をプロセッサ222からそれぞれ取り除くように構成され、それによって、ノードにより提供されるストレージサービスの能力を向上させる場合がある。当然ながら、本明細書に記載される種々の処理、アーキテクチャ、及び手順は、ハードウェアで実施しても、ファームウェアで実施しても、ソフトウェアで実施してもよい。
本明細書において、「ストレージオペレーティングシステム」という用語は通常、データアクセスを管理するストレージ機能を実施するための、コンピュータ上で動作可能なコンピュータ実行可能コードを意味し、ノード200の場合、汎用オペレーティングシステムのデータアクセスセマンティックを実施する。ストレージオペレーティングシステムは、マイクロカーネル、UNIX(登録商標)又はWindows NT(登録商標)のような汎用オペレーティングシステム上で動作するアプリケーションプログラム、あるいは本明細書に記載されるようなストレージアプリケーションのために構成される構成変更可能な機能を有する汎用オペレーティングシステムとして実施されてもよい。
さらに、当業者には分かるように、本明細書に記載される発明は、スタンドアロンのコンピュータ、あるいはストレージシステムとして実施され、又はストレージシステムを含むものとして実施されるスタンドアロンのコンピュータの一部を含む、いかなるタイプの特殊な目的(例えば、ファイルサーバ、ファイラ、又はストレージサービスを提供するアプライアンス)のコンピュータにも、汎用コンピュータにも適用することができる。さらに、本発明の教示は、種々のストレージシステムアーキテクチャに適用することができ、限定はしないが、例えば、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、及びクライアント又はホストコンピュータに直接取り付けられたディスクアセンブリに適用することができる。従って、「ストレージシステム」という用語は、ストレージ機能を実施するように構成され、他の装置又はシステムに関連する任意のサブシステムだけでなく、そのような構成をも含むものとして、広い意味で解釈しなければならない。なお、本明細書の説明は、write anywhereファイルシステムを例として記載されているが、本発明の教示は、write in placeファイルシステムを含む任意の適当なファイルシステムに使用することが可能である。
D. CFプロトコル
例示的実施形態において、ストレージサーバ365は、ストレージオペレーティングシステム300のDモジュール350として実施され、アレイ120の1以上のボリュームに対するサービスを提供する。さらに、マルチプロトコルエンジン325は、Nモジュール310として実施され、(1)ネットワーク140上にクライアントが発行する到来データアクセス要求パケットに関するプロトコルターミネーションを実施するとともに、(2)そのようなデータアクセス要求をクラスタ100のいずれかのストレージサーバ365へリダイレクトする。さらに、Nモジュール310とDモジュール350は互いに協働し、クラスタ100の高いスケーラビリティを有する分散ストレージシステムアーキテクチャを提供する。その目的のために、各モジュールは、本明細書に記載されるデータコンテナストライピングオペレーションのためのDモジュール間の通信のような、モジュール間におけるクラスタ内通信を実施するように構成された、クラスタファブリック(CF)インタフェースモジュール340a,bを含む。
Nモジュール310の、例えばNFS/CIFS層、及びiSCSI/FC層のようなプロトコル層は、クライアントからのファイルベース及びブロックベースのデータアクセス要求を、Dモジュール350との通信に使用されるCFプロトコルメッセージに変換するプロトコルサーバとして機能する。すなわち、Nモジュールサーバは、到来するデータアクセス要求をCFインタフェースモジュール340によってCFメッセージの中に埋め込まれたプリミティブオペレーション(コマンド)に変換し、クラスタ100のDモジュール350へ送信する。特に、CFインタフェースモジュール340は、互いに協働し、クラスタ100の全てのDモジュール350にわたる単一のファイルシステムイメージを提供する。すなわち、クライアント要求を受信したNモジュールのネットワークポートはいずれも、クラスタのいずれのDモジュール350に配置された単一のファイルシステムイメージ内のいずれのデータコンテナにもアクセスすることができる。
例示的実施形態に関し、Nモジュール310とDモジュール350は、ストレージオペレーティングシステム300の個別にスケジューリングされたプロセスとして実施される。但し、代替実施形態として、モジュールは、単一のオペレーティングシステムプロセスの中において、コードの断片として実施されてもよい。従って、NモジュールとDモジュールの間の通信は、例えば、モジュール間で受け渡しされるメッセージの使用により実施されるが、異なるノードのNモジュールとDモジュールの間におけるリモート通信の場合、そのようなメッセージの受け渡しは、クラスタスイッチングファブリック150を介して行われる。モジュール(プロセス)間で情報を伝送するためにストレージオペレーティングシステムにより提供される既知のメッセージ受け渡しメカニズムは、インター・プロセス・コミュニケーション(IPC)メカニズムである(を処理する)。IPCメカニズムに使用されるプロトコルは、例えば、CFアプリケーションプログラミングインタフェース(API)を構成する一群のメソッド/関数を含む、ジェネリックファイル、及び/又はブロックベースの「アグノスティック」CFプロトコルである。そのようなアグノスティックプロトコルの例としては、ネットアップ,インコーポレイテッドから入手可能なSpinFS及びSpinNPプロトコルが挙げられる。
CFインタフェースモジュール340は、クラスタ100のモジュール間においてファイルシステムコマンドを伝送するためのCFプロトコルを実施する。通信は、例えば、CF APIを露出しているDモジュールにより実施され、Nモジュール(又は、他のDモジュール)は、そのCF APIに対してコールを発行する。その目的のために、CFインタフェースモジュール340は、CFエンコーダ、及びCFデコーダとして構成される。Nモジュール310上の例えばCFインタフェース340aのCFエンコーダは、(1)ファイルシステムコマンドを同じノード200上にあるDモジュール350へ伝送する場合、CFメッセージをローカル・プロシージャ・コール(LPC)としてカプセル化し、(2)ファイルシステムコマンドをクラスタ100のリモートノードにあるDモジュールへ伝送する場合は、CFメッセージをリモート・プロシージャ・コール(RPC)としてカプセル化する。いずれの場合も、Dモジュール350上のCFインタフェース340bのCFデコーダは、CFメッセージのカプセル化を解除し、ファイルシステムコマンドを処理する。
図4は、本発明の一実施形態によるCFメッセージ400のフォーマットを示す略ブロック図である。CFメッセージ400は、例えば、クラスタ100のリモートモジュール間におけるスイッチングファブリック150を介したRPC通信に使用される。但し、「CFメッセージ」という用語は、クラスタのモジュール間におけるLPC及びRPC通信を指すものとして一般に使用される場合があると理解すべきである。CFメッセージ400は、メディアアクセス層402、IP層404、UDP層406、リライアブルコネクション(RC)層408、及びCFプロトコル層410を含む。上記のように、CFプロトコルは、クラスタ100上に記憶された種々のデータコンテナにアクセスするためのクライアント要求の中に含まれる種々のオペレーションに関連するファイルシステムコマンドを運ぶ汎用ファイルシステムプロトコルである。CFプロトコル層410は、メッセージ400の中のそのファイルシステムコマンドを保持している部分である。例えば、CFプロトコルは、データグラムに基づくものであるから、ソース(例えば、Nモジュール310)から宛先(例えば、Dモジュール350)への信頼できる形でのメッセージ又は「エンベロープ」の伝送を必要とする。RC層408は、そのようなエンベロープをUDP406のような接続プロトコルに従って処理するように構成された信頼性のあるトランスポートプロトコルを実施する。
例えばファイルのようなデータコンテナは、ファイルシステムにおいて、データコンテナハンドルを使用してアクセスされる。図5は、SVS IDフィールド502、inode番号フィールド504、ユニーク識別子フィールド506、ストライプ化フラグフィールド508、及びストライピングエポック番号フィールド510を含むデータコンテナハンドル500のフォーマットを示す略ブロック図である。SVS IDフィールド502は、SVSの(クラスタ100内の)グローバル識別子を含み、その中に、データコンテナは存在する。inode番号フィールド504は、データコンテナに関連する(inodeファイル内の)inodeのinode番号を含む。ユニーク識別子フィールド506は、データコンテナハンドル500を一意に識別する単調増加番号を含む。ユニーク識別子は、inode番号が既に削除され、再使用され、新たなデータコンテナに再割当てされている場合に特に有用である。ユニーク識別子は、特定データコンテナにおいて再使用されたinode番号を、それらのフィールドの潜在的な以前の使用から区別する。ストライプ化フラグフィールド508は、例えば、データコンテナがストライピングされているか否かを識別するブール値である。ストライピングエポックフィールド510は、SVSが、異なるデータコンテナに対し異なるストライピング技術を使用する実施形態の場合に、このデータコンテナに使用すべき適当なストライピング技術を示す。
E.ファイルシステム構成
例示的実施形態として、write−anywhereファイルシステムでは、データコンテナは、ディスク130上への記憶に適したinodeデータ構造として表現される。図6は、メタデータ部605及びデータ部660を有することが好ましいinode600を示す略ブロック図である。各ノード600のメタデータ部605に記憶される情報は、データコンテナ(例えばファイル)を表し、従って、ファイルのタイプ(例えば、通常、ディレクトリ、vdisk)610、そのサイズ615、タイムスタンプ(例えば、アクセス、及び/又は変更時刻)及び所有権、すなわち、そのファイルのユーザ識別子(UID625)及びグループID(GID630)を含む。各inodeのデータ部660の中身は、タイプフィールド610に定義されるファイル(inode)のタイプに応じて、異なる解釈をされる場合がある。例えば、ディレクトリinodeのデータ部660は、ファイルシステムにより制御されるメタデータを含む一方、通常inodeのデータ部は、ファイルシステムデータを含む。後者の場合、データ部660は、そのファイルに関連するデータの表現を含む。
具体的には、通常のオンディスクinodeのデータ部660は、ファイルシステムデータ、又はポインタを含む場合があり、後者は、ファイルシステムデータの記憶に使用されるディスク上の4KBデータブロックを参照する。ディスク上のデータをアクセスする際のファイルシステムとRAIDシステム380の間における効率を促進するために、各ポインタは、論理vbnであることが好ましい。inodeのサイズに制限がある場合(例えば、128バイト)、64バイト以下のサイズのファイルシステムデータは、その全体が、そのinodeのデータ部の中に表現される。一方、データコンテナの中身の長さが64バイトを超え、かつ、64KB以下である場合、inode(例えば、第1レベルinode)のデータ部は、最大で16個のポインタを含み、各ポインタは、ディスク上の4KBブロックのデータを参照する。
さらに、データのサイズが64KBよりも大きく、かつ64メガバイト(MB)以下である場合、そのinode(例えば、第2レベルinode)のデータ部660における各ポインタは、1024個のポインタを含む間接ブロック(例えば、第1レベルL1ブロック)を参照し、各ポインタは、ディスク上の4KBデータブロックを参照する。64MBより大きなサイズのファイルシステムデータの場合、inode(例えば、第3レベルL3inode)のデータ部660における各ポインタは、1024個のポインタを含む二重間接ブロック(例えば、第2レベルL2ブロック)を参照し、各ポインタは、間接(例えば、第1レベルL1)ブロックを参照する。さらに、その間接ブロックは、1024個のポインタを含み、各ポインタは、ディスク上の4KBデータブロックを参照する。ファイルをアクセスする場合、そのファイルの各ブロックは、ディスク130からメモリ224へロードされる場合がある。
オンディスクinode(又はブロック)がディスク130からメモリ224へロードされるとき、それに対応するコア内構造が、オンディスク構造に埋め込まれる。例えば、inode600を取り囲む破線は、オンディスクinode構造のコア内表現を示している。コア内構造は、オンディスク構造の他に、メモリ上の(但し、ディスク上には無い)データを管理するために必要となる追加的な情報をさらに記憶する1ブロックのメモリである。追加的な情報には、例えば、「ダーティ」ビット670が含まれる。inode(又はブロック)中のデータが例えば書込みオペレーションによる命令に従って更新/変更された後、変更されたデータは、ダーティビット670を使用して「ダーティ」であるものとしてマークされ、そのinode(ブロック)をその後、ディスクへ「フラッシュ」(記憶)することが可能となる。
図7は、本発明に有利に使用することが可能なファイルのバッファツリーの一実施形態を示す略ブロック図である。バッファツリーは、メモリ224にロードされ、write−anywhereファイルシステム360によって管理されるファイル(例えば、ファイル700)の種々のブロックの内部表現である。埋め込みinodeのようなルート(最上位)inode702は、間接(例えば、レベル1)ブロック704を参照する。なお、ファイルのサイズによっては、さらに別のレベルの間接ブロック(例えば、レベル2、レベル3)が存在する場合もある。間接ブロック(及びinode)は、ポインタ705を含み、ポインタ705は、ファイルの実際のデータの記憶に使用されるデータブロック706を最終的に参照する。すなわち、ファイル700のデータは、種々のデータブロックに保持され、それらのブロックの位置が、ファイルの間接ブロックに記憶される。各レベル1間接ブロック704は、1024個のデータブロックと同数のポインタを含む場合がある。ファイルシステムの「write−anywhere」な性質によれば、これらのブロックは、ディスク130のいずれの場所に置かれる場合もあり得る。
基礎物理ボリュームをノード200のようなストレージシステムの1以上の仮想ボリューム(又はフレキシブルボリューム)に分配するファイルシステムレイアウトが提供される。そのようなファイルシステムレイアウトの一例は、2008年8月5日に発行され、ネットアップ,インコーポレイテッドに譲渡されたジョン・ケイ・エドワード他による「EXTENSION OF WRITE ANYWHERE FILE SYSTEM LAYOUT」と題する米国特許第7,409,494号に記載されている。基礎物理ボリュームは、ノードのRAIDグループのような、ディスクの1以上のグループを含むアグレゲートである。アグレゲートは、独自の物理ボリュームブロック番号(pvbn)空間を有し、そのpvbn空間の中に、ブロックアロケーション構造のようなメタデータを保持している。各フレキシブルボリュームは、独自の仮想ボリュームブロック番号(vvbn)空間を有し、そのvvbn空間の中に、ブロックアロケーション構造のようなメタデータを保持している。各フレキシブルボリュームは、コンテナファイルに関連するファイルシステムであり、コンテナファイルは、フレキシブルボリュームにより使用される全ブロックを含むアグレゲート中のファイルである。さらに、各フレキシブルボリュームは、データブロックと、他の間接ブロック又はデータブロックのいずれかを指し示すブロックポインタを含む間接ブロックとを含む。
一実施形態において、pvbnは、フレキシブルボリュームに記憶される(ファイル700のような)ファイルのバッファツリーの中においてブロックポインタとして使用される。この「ハイブリッド」フレキシブルボリューム実施形態は、pvbnのみを親間接ブロック(例えば、inode又は間接ブロック)に挿入することを必要とする。論理ボリュームの読み出しパスにおいて、「論理」ボリューム(vol)情報ブロックは、1以上のfsinfoブロックを参照する1以上のポインタを有し、さらに、各ポインタは、inodeファイル、及びそれに対応するinodeバッファツリーを指し示す。フレキシブルボリュームの読み出しパスは一般に、ブロックの適当な位置を見付けるための同じ次のpvbnである(vvbnではなく)。この文脈において、フレキシブルボリュームの読み出しパス(及び、対応する読み出し処理能力)は、物理ボリュームのものと実質的に同様である。pvbnからdisk,dbnへの変換は、ストレージオペレーティングシステム300のファイルシステム/RAIDシステム境界において行われる。
デュアルdbnハイブリッドフレキシブルボリュームの一実施形態において、pvbn、及びそれに対応するvvbnは、ファイルのバッファツリーにおける親間接ブロックに挿入される。すなわち、pvbn及びvvbnは、例えばレベル1(L1)間接ブロック、inodeファイルレベル0(L0)ブロックのような他のブロックへのポインタを有する大半のバッファツリー構造において、各ブロックポインタについて一対として記憶される。図8は、本発明に有利に使用することが可能なファイル800のバッファツリーの例示的実施形態を示す略ブロック図である。埋め込みinodeのようなルート(最上位)inode802は、間接(例えば、レベル1)ブロック804を参照する。なお、ファイルのサイズによっては、さらに別のレベルの間接ブロック(例えば、レベル2、レベル3)が存在する場合もある。間接ブロック(及びinode)は、pvbn/vvbnポインタ対構造808を含み、構造808は、最終的に、ファイルの実際のデータの記憶に使用されるデータブロック806を参照する。
pvbnは、アグレゲートの種々のディスク上の位置を参照する一方、vvbnは、フレキシブルボリュームの種々のファイル内の位置を参照する。間接ブロック804におけるブロックポインタ808のようなpvbnの使用は、読み出しパスにおける効率を提供する一方、vvbnブロックポインタの使用は、要求されたメタデータへの効率的アクセスを提供する。すなわち、ファイルのブロックを開放するとき、ファイル中の親間接ブロックは、直ちに使用可能なvvbnブロックポインタを有し、当該ポインタにより、pvbnからvvbnへの変換を実施するための所有者マップのアクセスに関連する待ち時間は回避されるが、読み出しパスにおいては、pvbnが使用可能である。
図9は、本発明に有利に使用することが可能なアグレゲート900の一実施形態を示す略ブロック図である。lun(ブロック)902、ディレクトリ904、qtree906、及びファイル908は、デュアルvbnフレキシブルボリュームのようなフレキシブルボリューム910の中に収容され、さらに、アグレゲート900の中に収容される場合がある。アグレゲート900は、例えば、RAIDシステムの最上部に層として形成され、RAIDシステムは、少なくとも1つのRAIDプレックス950によって表され(ストレージ構成がミラーリングされるか否かによって変わる)、各プレックス950は、少なくとも1つのRAIDグループ960を含む。各RAIDグループは、例えば1以上のデータ(D)ディスク及び少なくとも1つのパリティ(P)ディスクのような、複数のディスク930をさらに含む。
アグレゲート900は、従来のストレージシステムの物理ボリュームに類似する一方、フレキシブルボリュームは、その物理ボリューム中のファイルに類似する。すなわち、アグレゲート900は、1以上のファイルを含む場合があり、各ファイルは、1つのフレキシブルボリューム910を含み、種々のフレキシブルボリュームにより消費される記憶空間の合計は、物理ボリューム全体のサイズよりも物理的に小さい(又は等しい)。アグレゲートは、「物理」pvbn空間を利用して、物理ボリュームの種々のディスクにより提供されるブロックの記憶空間を定義するのに対し、(ファイル内の)各埋め込みフレキシブルボリュームは、「論理」vvbn空間を利用して、例えばファイルのようなそれらのブロックを編成する。各vvbn空間は、ファイル内の種々の位置に対応する独立した一組の数値であり、その位置は、その後、ディスク上のdbnに変換される。フレキシブルボリューム910もまた、論理ボリュームであるため、そのvvbn空間において独自のブロックアロケーション構造(例えば、アクティブマップ、空間マップ、及び概要マップ)を有する。
コンテナファイルは、フレキシブルボリュームにより使用される全てのブロックを保持するアグレゲート中のファイルである。コンテナファイルは、フレキシブルボリュームをサポートする内部機能(アグレゲートにとって)であり、例えば、1つのフレキシブルボリュームにつき1つのコンテナが存在する。ファイルアプローチにおける純粋な論理ボリュームと同様に、コンテナファイルは、フレキシブルボリュームにより使用されるあらゆるブロックを保持するアグレゲート中の隠しファイル(ユーザにとってアクセスできないファイル)である。アグレゲートは、次のようなフレキシブルボリュームのサブディレクトリを含む例示的な隠しメタデータルートディレクトリを含む。
WAFL/fsid/ファイルシステムファイル、ストレージラベルファイル
具体的には、物理的ファイルシステム(WAFL)ディレクトリは、アグレゲート中の各フレキシブルボリュームについてサブディレクトリを含み、サブディレクトリの名称は、フレキシブルボリュームのファイルシステム識別子(fsid)になっている。各fsidサブディレクトリ(フレキシブルボリューム)は、少なくとも2つのファイル、1つのファイルシステムファイル、及び1つのストレージラベルファイルを有する。ストレージラベルファイルは、例えば、従来のraidラベルに記憶されるものに類似するメタデータを有する4KBファイルである。換言すれば、ストレージラベルファイルは、raidラベルに類似し、したがって、例えば、フレキシブルボリュームの名称、フレキシブルボリュームのユニバーサルユニーク識別子(uuid)、及びfsid、並びに、フレキシブルボリュームがオンラインであるか、作成中であるか、又は破壊されているところであるか等のような、フレキシブルボリュームの状態に関する情報を有する。
図10は、アグレゲート1000のディスク上の表現を示す略ブロック図である。例えばRAIDシステム380のようなストレージオペレーティングシステム300は、pvbnの物理ボリュームを組み立て、アグレゲート1000を作成する。pvbn1及び2は、そのアグレゲートについての「物理」volinfoブロック1002を含む。volinfoブロック1002は、fsinfoブロック1004へのブロックポインタを含み、各fsinfoブロック1004は、アグレゲートのスナップショットを表す場合がある。各fsinfoブロック1004は、所有者マップ1010、アクティブマップ1012、概要マップ1014、及び空間マップ1016、並びに他の特殊なメタデータファイルを含む複数のファイルのinodeを有するinodeファイル1006へのブロックポインタを含む。inodeファイル1006は、ルートディレクトリ1020、及び「隠し」メタデータルートディレクトリ1030をさらに含み、そのうちの後者は、ユーザがその中のファイルを「見る」ことが出来ないフレキシブルボリュームに関連するファイルを有する名前空間を含む。隠しメタデータルートディレクトリは、ファイルシステムファイル1040、及びストレージラベルファイル1090を含むWAFL/fsid/ディレクトリ構造を含む。なお、アグレゲート中のルートディレクトリ1020は空であり、アグレゲートに関連する全てのファイルは、隠しメタデータルートディレクトリ1030の中に編成される。
ファイルシステムファイル1040は、コンテナマップとして編成されるレベル1ブロックを有するコンテナファイルとして実施されるほかに、フレキシブルボリューム1050として実施される種々のファイルシステムを参照するブロックポインタを含む。アグレゲート1000は、それらのフレキシブルボリューム1050を特殊な予約済みinode番号に維持する。各フレキシブルボリューム1050も、とりわけ、ブロックアロケーションビットマップ構造のために使用されるそのフレキシブルボリューム空間の中に、特殊な予約済みinode番号を有する。上記のように、例えば、アクティブマップ1062、概要マップ1064、及び空間マップ1066のよなブロックアロケーションビットマップ構造は、各フレキシブルボリュームに配置される。
具体的には、各フレキシブルボリューム1050は、隠しメタデータルートディレクトリ1080の中に所有者マップ、及びWAFL/fsid/ファイルシステム,ストレージラベルファイルディレクトリ構造が存在しない点を除き、アグレゲートと同じinodeファイル構造/中身を有する。その目的のために、各フレキシブルボリューム1050は、1以上のfsinfoブロック1054を指し示すvolinfoブロック1052を有し、各fsinfoブロック1054は、フレキシブルボリュームのアクティブファイルシステムとともに、スナップショットを表す場合がある。さらに、各fsinfoブロックは、上記のように、上記の点を除き、アグレゲートと同じinode構造/中身を有するinodeファイル1060を指し示す。各フレキシブルボリューム1050は、独自のinodeファイル1060及び対応するinode番号を有する個別のinode空間、並びに、独自のルート(fsid))ディレクトリ、及び他のフレキシブルボリュームとは別にエキスポートすることが可能なファイルのサブディレクトリを有する。
アグレゲートの隠しメタデータルートディレクトリ1030の中に収容されるストレージラベルファイル1090は、従来のraidラベルに類似した機能を有する小さなファイルである。raidレベルは、ボリューム名のような、ストレージシステムに関する物理的情報を含み、その情報は、ストレージラベルファイル1090にロードされる。例えば、ストレージラベルファイル1090は、関連フレキシブルボリューム1050の名称1092、そのフレキシブルボリュームのオンライン/オフライン状態1094、及び、関連フレキシブルボリュームの他の識別・状態情報1096(そのフレキシブルボリュームが、作成処理中であるか、又は破壊処理中であるか)を含む。
F.VLDB
図11は、クラスタのノードについて構成情報(すなわち、管理データ)の管理を提供するために、ユーザモードアプリケーション1100としてストレージオペレーティングシステム300上で実行される一群の管理プロセスを示す略ブロック図である。その目的のために、管理プロセスは、管理フレームプロセス1110、及びボリューム位置データベース(VLDB)プロセス1130を含み、各プロセスは、ライブラリとしてリンクされたデータ複製サービス(RDB1150)を使用する。管理フレームワーク1110は、コマンドラインインタフェース(CLI)及び/又はウェブベースのグラフィカルユーザインタフェース(GUI)による管理者インタフェース1170を、ユーザに提供する。管理フレームワークは、例えば、ユーザ/システム管理者がクラスタ100を管理するためにノード200と情報をやりとりする際に、その相手先となるエンティティを提供する従来のコモン・インタフェース・モデル(CIM)オブジェクトマネージャに基づく場合がある。
VLDB1130は、クラスタ100内の種々のストレージコンポーネント(例えば、SVS、フレキシブルボリューム、アグレゲートなど)の位置を追跡管理し、それによってクラスタ全体を通じた要求のルーティングを可能にするデータベースプロセスである。例示的実施形態において、各ノードのNモジュール310は、データコンテナハンドル500のSVS ID502を、クラスタ内のそのデータコンテナを「所有している」(提供している)Dモジュール350にマッピングする構成ファイル235にアクセスする。VLDBは、複数のエントリを有し、さらに、構成テーブル235中の種々のエントリの中身を提供する。とりわけ、それらのVLDBエントリは、クラスタ内におけるフレキシブルボリューム(以後、一般に「ボリューム910」)及びアグレゲート900の位置を追跡管理する。そのようなVLDBエントリの例としては、VLDBボリュームエントリ1200、及びVLDBアグレゲートエントリ1300が挙げられる。
図12は、例示的なVLDBボリュームエントリ1200を示す略ブロック図である。エントリ1200は、ボリュームIDフィールド1205、アグレゲートIDフィールド1210を含み、代替実施形態では、さらに別のフィールド1215を含む場合がある。ボリュームIDフィールド1205は、ボリューム探索プロセスにおいて使用されるボリューム910を識別するIDを有する。アグレゲートIDフィールド1210は、ボリュームIDフィールド1205により識別されるボリュームを有するアグレゲート900を識別する。同様に、図13は、例示的なVLDBアグレゲートエントリ1300を示す略ブロック図である。エントリ1300は、アグレゲートIDフィールド1305、DモジュールIDフィールド1310を含み、代替実施形態では、さらに追加フィールド1315を含む場合がある。アグレゲートIDフィールド1305は、クラスタ100における特定のアグレゲート900のIDを有する。DモジュールIDフィールド1310は、アグレゲートIDフィールド1305により識別される特定のアグレゲートを有しているDモジュールのIDを有する。
VLDBは、Nモジュール310がVLDB1130に問合せをすることを可能にする、例えばSun RPCインタフェースのような、RPCインタフェースを実施する。Nモジュールは、自分の構成江t-ブルに記憶されていないデータコンテナハンドル500の中身に遭遇すると、RPCをVLDBプロセスへ送信する。これに応答し、VLDB1130は、そのデータコンテナを所有しているDモジュールのIDを含む適当なマッピング情報を、Nモジュールに返す。Nモジュールは、この情報を自分の構成テーブル235にキャッシュし、DモジュールIDを使用して、到来する要求を適当なデータコンテナへ転送する。Nモジュール310とDモジュール350の間の全ての機能、及び情報のやりとりは、一群の管理プロセス、及びRDBライブラリユーザモードアプリケーション1100により、クラスタ幅単位で適宜実施される。
その目的のために、管理プロセスは、RDB1150に対する(RDB1150にに密接に結合された)種々のインタフェースを有する。RDBは、管理プロセスにより処理される管理データの永久的オブジェクト記憶(オブジェクトの記憶)を提供するライブラリを含む。特に、RDB1150は、管理データオブジェクト記憶アクセスを、クラスタ100の全てのノード200にわたって複製し、同期させ、それによって、RDBデータベースイメージが、全てのノード200上において同一となることを確保する。システム始動時に、各ノード200は、自分が有するインタフェースのステータス/状態、及びIPアドレス(自分が「所有」するIPアドレス)を、RDBデータベースに記録する。
G.ストレージシステムアーキテクチャ
提供されるストレージアーキテクチャは、例えば、クラスタ100の複数のノード200にわたって分散された2以上のボリューム910を含む。これらのボリュームは、1つのSVSとして編成され、クライアント180により発行されたマルチプロトコルデータアクセス要求に応答し、クラスタにより提供されるファイル及びlunのようなデータコンテナの中身を記憶するように構成される。特に、各データコンテナの中身は、SVSの種々のボリュームにわたって分配され、それによって、クラスタにより提供されるストレージサービスの効率が改善される。本発明の説明及び理解を容易にするために、データコンテナは、以後、一般に「ファイル」と呼ばれる。
SVSは、メタデータボリューム(MDV)と、1以上のデータボリューム(DV)とを含む。MDVは、SVSに記憶される全てのファイルに関連する、アクセスコントロールリスト(ACL)及びディレクトリのような、メタデータの正統なコピーを記憶するように構成されるのに対し、各DVは、少なくともそれらのファイルのデータ内容を記憶するように構成される。SVS上に記憶される各ファイルについて、1つのボリュームはCAVに指定され、その目的のために、そのファイルに関連する特定の急速に変化する属性メタデータを記憶(「キャッシュ」)するように構成され、それによって、通常ならばMDVへ向けられることになるアクセス要求の負荷を低減する。本明細書に記載される一実施形態において、ファイルについてのCAVの決定は、次のような単純なルールに基づく。すなわち、そのファイルの中身(データ)の第1のストライプを保持しているボリュームを、そのファイルのCAVとして指定するというものである。この単純なルールは、単に便利というだけでなく、小さなファイルの最適化も提供する。すなわち、ファイルが、指定されたストライプ幅の中にフィットするくらい十分に小さい場合、CAVは、SVSの他のボリュームと通信する必要なく、特定の処理を実施することができる場合がある。理想的には、種々のファイルについてのデータの第1のストライプは、SVSの種々のDVにわたって分散され、それによって、SVSの種々のボリュームにわたるCAV指定の均一な分散が可能となる。代替実施形態として、種々のファイルについてのデータは、MDV及びDVにわたってストライピングされる場合がある。さらに別の実施形態として、MDVは省略される場合があり、MDV上に通常収容されるデータは、SVSの種々のDVにわたって分散される場合がある。
図14は、本発明の例示的実施形態によるSVS1400を示す略ブロック図である。SVS1400は、例えば、3つのボリューム、すなわち、MDV1405、及び2つのDV1410、1415を含む場合がある。なお、代替実施形態では、本発明に従って、更に別の、及び/又は異なる数のボリュームが使用される場合もある。例えば、MDV1405は、ルートディレクトリ(RD)inode1420、ディレクトリ(DIR)inode1430、ファイル(F)inode1425、1435、1445、及びACLinode1440を含む複数のinodeを記憶する場合がある。これらのinodeはそれぞれ、例えば、inodeに関連するメタデータ(M)を有する場合がある。例示的実施形態において、MDV1405上の各inodeは、データ(D)を持たないが、代替実施形態において、MDVは、ユーザデータを有する場合がある。
これに対し、各DV1410、1415は、ファイル(F)inode1425、1435、1445、及びACLinode1440のみを記憶する。ここで、DVは、ディレクトリ、又は、シンボリックリンクのような他のデバイスinode/構成を記憶しない。しかしながら、各DVは、Finodeを記憶し、さらに、MDV1405における対応するinodeと同じ位置に配置されたACLinodeのキャッシュコピーを記憶する場合がある。DVによっては、inodeに関連するデータコンテナに対するI/O要求が、そのDVを提供しているDモジュールによって受信されるまで、inodeのコピーを記憶しないものがある。さらに、それらのFinodeにより表される種々のファイルの中身は、本明細書に詳しく記載されるようなSVSストライピングルールに従って、周期的に散在される。さらに、SVS1400に記憶される各ファイルについて1つのボリュームがCAVとして指定されるため、DV1415は、inode1425により表されるファイルのためのCAVとして指定され、DV1410は、inode1435、1445により識別されるファイルのためのCAVとされる。したがって、これらのCAVは、例えばファイルサイズ615のような、それらのファイルに関連する特定の急速に変化する属性メタデータ(M)、並びに、アクセス及び/又は変更タイムスタンプ620をキャッシュする。
例えば、SVSは、ストライプアルゴリズム、ストライプ幅、及びSVS内のボリュームの順序付きリストを定義する一組のストライピングルール(例えば、ストライピングテーブルとして実施されるストライピングデータ構造)に関連する。なお、本明細書ではストライピングテーブルという用語を使用するが、この用語は、VSMがデータをSVS上にストライピングする際の順序を特定できるようにする任意の形のデータ構造を意味するものと解釈すべきである。各SVSについてのストライピングルールは、例えば、VLDB1130の1つのエントリとして記憶され、SVS IDによりアクセスされる場合がある。図15は、本発明の一実施形態による例示的なVLDB SVSエントリ1500を示す略ブロック図である。VLDBエントリ1500は、SVS IDフィールド1005と、一組以上のストライピングルール1530とを含む。代替実施形態では、更に別のフィールド1535が含まれる場合もある。動作中、SVS IDフィールド1505は、データコンテナハンドル500において指定されたSVSのIDを有する。
ストライピングルール1530の各組は、例えば、ストライプ幅フィールド1510、ストライプアルゴリズムIDフィールド1515、ボリュームの順序付きリストフィールド1520を含み、代替実施形態では、さらに別のフィールド1525を含む場合がある。ストライピングルール1530は、SVSの構成を特定するための情報を含む。例えば、ストライプアルゴリズムIDフィールド1515は、SVSに使用されるストライピングアルゴリズムを特定する。一実施形態では、複数のストライピングアルゴリズムが、SVSに使用される場合があり、したがって、ストライプアルゴリズムIDは、どの特定のアルゴリズムを使用するかを特定するために必要となる。さらに、各ストライピングアルゴリズムは、ファイルの中身をSVSの複数のボリュームにわたってストライプとして分配する態様を指定する。ストライプ幅フィールド1510は、各ストライプのサイズ/幅を指定する。
ボリュームの順序付きリストフィールド1520は、SVSを構成する種々のボリュームのIDを含み、本発明の例示的実施形態に従って、能力均一化態様を成すデータレイアウトを決定するためのストライピングテーブルとして機能する。例示的実施形態において、ボリュームの順序付きリストは、フレキシブルボリュームID、及びそのフレキシブルボリュームを記憶しているアグレゲートIDを含む複数のタプルを含む。さらに、ボリュームの順序付きリストは、SVSの種々のボリューム、及びストライピングルールの機能及び実施形態を指定する場合がある。例えば、順序付きリストにおける第1のボリュームは、SVSのMDVを表す場合があるのに対し、リスト中のボリュームの順序は、例えばラウンドロビンのような特定のストライピングアルゴリズムの実施の態様を表す場合がある。
動作において、ストライピングルールの組は、事実上、SVSの種々のブロックを記憶するために使用すべきDモジュールの順序付きセットを特定するストライピングテーブルを定義する。SVSをそれらの種々のDモジュールにわたって分配することにより、単一モジュールの全体的処理消費は制限され、したがって、特定のモジュールが例えばホットスポットになることによりバックログを生成する可能性は、低減される。
VSM370及び他のモジュール(例えば、Nモジュール310のもの)が、ファイルへのアクセス要求に対するサービスを提供するために、SVS1400のDモジュール350、及びそれに関連するボリュームの探索を可能にするために、Locate()関数が用意される。Locate()関数は、少なくとも、(1)SVS ID1505、(2)ファイル内オフセット、(3)ファイルのinode番号、(4)一組のストライピングルール1530を引数としてとり、SVS1400内においてそのオフセットが開始されるボリューム910を返す。例えば、ファイルに対するデータアクセス要求が、クライアント180により発行され、ノード200のNモジュール310において受信される場合を仮定した場合、そこで、そのデータアクセス要求は、マルチプロトコルエンジン325により構文解析され、Nモジュール310の適当なプロトコルサーバへ渡される。
CFメッセージを送信する宛先となるDモジュール350の位置を決定するために、Nモジュール310は、まずSVSエントリ1500を読み出し、SVSに関連するストライピングルール(及び、ボリュームのリスト1520)を取得する場合がある。次にNモジュール310は、Locate()関数375を実行し、処理の対象となる適当なボリュームを特定する。以後、Nモジュールは、適当なVLDBボリュームエントリ1200を読み出し、そのボリューム、及び適当なVLDBアグレゲートエントリ1300を含むアグレゲートを特定し、最終的に、適当なDモジュール350を特定する場合がある。その後、Nモジュール310のプロトコルサーバは、CFメッセージ400をそのDモジュール350へ送信する。
図16は、本発明の例示的実施形態によるSVS1600のボリュームA1605、B1610、及びC1615に記憶されたファイル内容の周期的な散在を示す略ブロック図である。上記のように、ファイル内容は、SVSストライピングルールに従って周期的に散在され、当該ルールは、(ストライプアルゴリズムIDフィールド1515により示されるような)ストライピングアルゴリズム、及び(ストライプ幅フィールド1510により示されるような)各ストライプのサイズ/幅を指定する。なお、一実施形態において、ストライプ幅は、各ストライプが、ファイルの間接ブロック(例えば、レベル1ブロック804)により参照される(例えば、データブロック806に記憶されるような)実際のデータを受け入れることが出来るように選択される場合がある。
例示的なラウンドロビンストライピングアルゴリズムによれば、ボリュームA1605は、1ストライプのファイル内容又はデータ(D)1620、その後に続く2ストライプのスパースネス(S)1622、1624、他のストライプのデータ(D)1626、及び2ストライプのスパースネス(S)1628、1630を含む。一方、ボリュームB1610は、1ストライプのスパースネス(S)1632、その後に続く1ストライプのデータ(D)1634、2ストライプのスパースネス(S)1636、1638、他のストライプのデータ(D)1640、及び1ストライプのスパースネス(S)1642を含む。ボリュームC1615は、ラウンドロビンストライピングパターンを継続し、その目的のために、2ストライプのスパースネス(S)1644、1646、その後に続く1ストライプのデータ(D)1648、2ストライプのスパースネス(S)1650、1652、及び他のストライプのデータ(D)1654を含む。
H.能力平準化
本発明は、ストライプ化ファイルシステムにおける能力平準化を提供するように構成されたデータ分散技術を提供する。ストライプ化ボリュームセットは、例えば、ボリュームの順序付きリスト、及びデータをストライピングする宛先となる関連ノードを特定するストライピングテーブル1500を含む一組のストライピングルールに関連する。クラスタの各ノードは、SVSのボリュームを提供するように構成されたディスク要素と、データアクセス要求をクラスタのいずれかのデモジュールへリダイレクトするように構成されたネットワーク要素とを含む。データコンテナの中身は、SVSの種々のボリュームにわたって分配され、それによって、クラスタにより提供されるストレージサービスの効率は向上される。その目的のために、ストライピングテーブルは、データコンテナの中身を複数のボリュームにわたってストライプとして分配する態様を指定する。動作として、新たなノードをストライプ化ボリュームセットに追加するとき、ストライピングテーブルは、その新たに追加されたノードを受け入れるように発展され、すなわち、繰り返し更新される。一実施形態において、クラスタの各ノードは、例えば、そのノードについてのプロセッサ速度、プロセッサの数、ハードウェア構成、及び/又は使用可能なソフトウェアを考慮に入れた能力値に関連する。ストライピングテーブルの発展処理の際、本技術は、SVSの種々のストライプを、ストライプが各ノードの能力値に従って種々のノードに最適に割当てられるような形で、種々のノードに分配する。例えば、第1のノードが能力値100を有し、第2のノードが能力値200を有する2ノードシステムの場合、最適な処理能力を得るためには、第2のノードは、第1のノードに比べて2倍の量のストライプを提供しなければならない。本明細書に記載される能力値を含むストライピングテーブルの使用により、ヘテロジニアスなノード、すなわち、異なる能力値を有するノードを、ストライプ化ボリュームセットの中で良好に使用することができ、それによって、活用されない処理リソースを減らすことができる。すなわち、高い能力値のノードを必要とすることなく、ノードを使用してノードの処理能力をクラスタ内の最も非力なノードに調節することができる。
図17は、本発明の例示的実施形態による、図16に示したデータコンテナについての例示的なストライピングテーブルを示す略ブロック図である。例えば、ストライピングテーブル1700は、データコンテナの第1のブロックが、第1のノードのボリュームAに記憶され、第2のブロックが、第2のノードのボリュームBに記憶される、等を示す場合がある。ストライピングテーブル1700は、本発明の例示的実施形態にしたがってラウンドロビン態様を成すように、例えばVSM375によって生成される場合がある。当業者には明らかなように、ストライピングテーブルは通常、例示的なストライピングテーブル1700よりも遥かに大きい。同様に、種々のノードの構成は、単に例示の目的で、ラウンドロビンとして示されている。
図18は、本発明の例示的実施形態に従って能力平準化を実施するために、ストライピングテーブルを発展させる手順1800の種々のステップの詳細を示すフロー図である。手順1800は、ステップ1805から開始され、ステップ1810へ進み、そこで新たなノードが、クラスタに追加される。新たなノードのクラスタへの追加は、例えば管理者、及び/又は他のユーザが、その新たなノードをクラスタスイッチファブリック150に物理的に接続し、その新たなノードのN/Dモジュール上で実行されるストレージオペレーティングシステム、及び/又は他のソフトウェアを構成することにより成される場合がある。
さらに、本発明の一実施形態によれば、クラスタの新たに追加されたノードにはそれぞれ、一般にそのノードのベンダ(例えば、製造業者)により、能力値が割当てられる。但し、代替実施形態では、能力値は、管理者、及び/又は自動化プロセスによって割当てられる場合もある。この能力値は、以下で詳しく説明されるストライピングテーブル発展技術を開始するために、クラスタの種々のノードのボリュームストライピングモジュール370に提供される場合がある。新たなノードの追加に応答し、ステップ1815において、ストライピングテーブルは、新たなノードを受け入れるように発展される。一般に、本明細書に記載される技術は、各ノードが、そのノードの能力値を(その新たなノードを含む)クラスタ中の全能力値の合計で割ったものに概ね比例するような形で、ストライピングテーブルを発展させる。すなわち、ノードXの概算の比率は、ノードXの能力値をクラスタの全ノードの全能力値の合計で割ったものに等しい。ストライピングテーブルの発展については、図19を参照して以下で詳しく説明される。
新たなストライピングテーブルが発展され、すなわち繰り返し更新された後、ステップ1820において、次に、新たなストライピングテーブルは、SVSに関連付けられる。例えば、ステップ1825において、次に、再ストライピング処理が実施される。再ストライピング処理は一般に、データが、発展されたストライピングテーブルに従ってストライピングされ、すなわち、データが、本発明の一実施形態から得られる能力平準化に従って分散されるような形での、SVS中の全データの再割当てを生じさせる。なお、再ストライピング処理の実施は、任意選択的なものである。一部の特定の実施形態では、データは、ストライプ化ボリュームセットに書き込まれるときに、再ストライピングされる場合がある。
手順1800は、ステップ1830において終了する。
図19A〜図19Dは、本発明の例示的実施形態による発展中のストライピングテーブルを示す略ブロック図である。説明のために図19を参照し、管理者が、ヘテロジニアスノードの4ノードクラスタを形成することを望んでいる場合を仮定する。3つのノードは、下記の能力レートを有している。
ノードA 100
ノードB 200
ノードC 50
ノードD 50
当業者には明らかなように、この例において記載される原理は、任意数の異なる、及び/又は同一の能力値を有する任意数のノードに使用することができる。したがって、ストライピングテーブル1900の発展に関する本明細書の説明は、単なる例として解釈すべきである。動作として、ストライピングテーブルはまず、図19Aに示したような単一のエントリテーブルとして生成される。単一ノードクラスタの場合、データの各ストライプは、クラスタの単一のノードに、すなわち、この例ではノードAに記憶される。
例えば、管理者は、クラスタ中に全部で4つのノードを得るために、3つのさらに別のノードが追加されることに示すように、ボリュームストライピングモジュールを構成した。次に、ボリュームストライピングモジュールは、各エントリについてサポートの追加を繰り返し開始する場合がある。新たなノードのためのエントリを最初に追加することにより、ボリュームストライピングモジュール370は、その新たに追加されたエントリについてのみではなく、ストライピングテーブル中に表されるべき他の全ての他のエントリについても、能力値を考慮する。これを考慮に入れることにより、ストライピングテーブルにおけるノードAの発生の正しい回数が得られ、それによって、その後の繰り返しの際にノードAのインスタンスを置き換える必要性を、未然に取り除くことができる。一実施形態において、各ノードは、ストライピングテーブルにおいて、その能力値をクラスタ内のノードの全ての能力値の合計で割ったものに概ね比例する形で現れることになる。
上記の例示的な能力値が与えられた場合、所望の表現は、Aの能力レートを合計能力レートで割ったもの、すなわち、AをA+B+C+Dで割ったものに等しい。これは例えば、100を400(100+200+50+50)で割ったものに等しい。したがって、ボリュームストライピングモジュールは、B+C+D(すなわち、後で追加されることになるノードの合計能力値)をA+B+C+D(すなわち、全ての能力値の合計)のレートで割った数のエントリを、すなわち、400エントリにつき300エントリを第1の繰り返しにおいて置き換える。数学的削減を実施することにより、ボリュームストライピングモジュールは、ストライピングテーブルにおいて4つのエントリにつき3つのエントリをBに置き換えるべきことを決定する。このグループ内における置換は、Aのエントリを新たな値Bに置き換えることにより成されるべきである。例えば、どのエントリを置き換えるべきかの厳密な選択は、例えば、「SEMI-STATIC DISTRIBUTION TECHNIQUE」と題する米国特許第7,185,144号に記載されているような準静的技術により実施され、この特許の内容は、参照により本明細書に援用される。
次に、VSM370は、次のエントリ(すなわち、エントリC)を追加することにより、反復的プロセスを繰り返す。この例を継続し、ボリュームストライピングモジュールは、適当な総数のB’を残しつつ、ストライピングテーブルにおける十分な数のB’を置き換えるべきことを決定する。この場合も、これは、残すべきもののレートを合計レートで割ることにより決定される場合がある。これは、C+DのレートをB+C+Dのレートで割ったものに等しいものとなり、それは100/300に等しい。この部分を減らすことにより、ボリュームストライピングモジュールは、3つのBにつき1つのBをCに置き換えるべきことを特定した。そして、最終的な反復により、十分な数のCが、Dに置換される。この数は、Dの能力値をC+Dのレートで割ることにより計算される場合があり、それは、1つおきのC(すなわち、1/2)に等しい。図19Dから分かるように、その結果は、ノードAへの8つの参照、ノードBへの16個の参照、ノードCへの4つの参照、及びノードDへの4つの参照を有する例示的なストライピングテーブルとなる。
当然ながら、その結果、各ノードは、その能力レートに基づいて適当に分配されることになる。ノードAを基準として使用した場合、ノードDは、ノードAの2倍の能力値を有しているため、ノードAに比べて2倍の頻度で出現する、等。本明細書に記載した反復的技術を使用することにより、クラスタ内のヘテロジニアスなコンピュータの最適な使用を可能にする能力平準化を達成することができる。
上記の説明は、本発明の特定の実施形態に関するものである。しかし、当然ながら、それらの利点の一部又は全部を維持しつつ、記載した実施形態に対し、種々の変更及び修正を施すことも可能である。具体的には、本明細書に記載した技術は、非分散ファイルシステムにおいて実施されてもよい。さらに、本明細書の説明は、Nモジュール及びDモジュールを例として記載されているが、本明細書の教示は、NモジュールとDモジュールの機能が単一システムにおいて実施されるような種々のシステムにも等しく適用可能である。あるいは、NモジュールとDモジュールの機能は、任意数の独立したシステムにわたって分散されてもよく、各システムが、そうした機能の1以上を実施する場合がある。さらに、本明細書に記載した手順、プロセス、及び/又はモジュールは、ハードウェアで実施されても、ソフトウェアで実施されても、プログラム命令を有するコンピュータ読取可能媒体として実施されても、ファームウェアとして実施されても、それらの組み合わせとして実施されてもよい。従って、添付の特許請求の範囲の目的は、そうした変更や修正もすべて、本発明の真の思想及び範囲の中に入るようにカバーすることにある。

Claims (10)

  1. ストライプ化ファイルシステムをサポートするクラスタ化コンピュータシステム(100)における能力平準化のための方法であって、
    データコンテナを記憶するように構成された複数のボリューム(1405, 1410, 1415)を、前記ストライプ化ファイルシステムのストライプ化ボリュームセット(1400)として編成するステップと、
    前記ストライプ化ボリュームセット(1400)の前記複数のボリューム(1405, 1410, 1415)を、前記クラスタ化コンピュータシステム(100)として編成された複数のストレージシステムノード(200)にわたって分散させるステップと、
    記クラスタ化コンピュータシステムのストレージシステムノードに関連する能力値を割り当てるステップであって、前記能力値は、前記ストレージシステムノードのプロセッサ速度を使用して決定される、能力値を割当てるステップと、
    前記複数のストレージシステムノードのうちの1つのプロセッサ上で実行されるボリュームストライピングモジュールにより、ストライピングデータ構造中におけるストレージシステムノードの発生回数を繰り返し調節し、各ストレージシステムノードに関連する前記能力値に基づいて能力平準化されたストライピングデータ構造を生成するステップと
    データアクセス要求に応答し前記能力平準化されたストライピングデータ構造を使用して、前記データコンテナを前記ストライプ化ファイルシステムの前記ストライプ化ボリュームセット(1400)の前記複数のボリューム(1405, 1410, 1415)にわたってストライプとして分配することを含むデータ割り当てを実施するステップと
    からなる方法。
  2. 前記ストライピングデータ構造において、各ストレージシステムノードは、そのストレージシステムノードの能力値を前記複数のストレージシステムノードの全能力値の合計で割ったものに概ね比例する形で現れる、請求項1に記載の方法。
  3. 準静的分散技術を使用して、前記ストライピングデータ構造内におけるストレージシステムノードの発生回数を繰り返し調節するステップをさらに含む、請求項1に記載の方法。
  4. 前記ストライプ化ファイルシステムに対し再ストライピング処理を実施し、前記能力平準化されたストライピングデータ構造を使用するステップをさらに含む、請求項1に記載の方法。
  5. ストレージシステムノードがプロセッサを含む複数ストレージシステムノードであって、データコンテナを記憶するように構成された複数のボリュームにわたって分配されたストライプ化ボリュームセットを含むストライプ化ファイルシステムをサポートするように構成された1つのクラスタとして編成され、前記複数のボリュームが、前記複数のストレージシステムノードにわたって分散され、前記複数ストレージシステムノードのそれぞれが、能力値に関連し、前記能力値は、前記ストレージシステムノードのプロセッサ速度を使用して決定される、複数ストレージシステムノードと、
    前記プロセッサのうちの1つにおいて実行され、前記データコンテナを前記複数ストレージシステムノードにわたって分散された前記ストライプ化ボリュームセットの前記複数のボリュームにわたってストライプとして分配するように構成され、能力平準化されたストライピングデータ構造において、各ストレージシステムノードが、そのストレージシステムノードの能力値を前記複数ストレージシステムノードの全能力値の合計で割ったものに概ね比例する形で現れるようにするボリュームストライピングモジュールと
    を含み、前記ボリュームストライピングモジュールは、前記能力平準化されたストライピングデータ構造を生成するようにさらに構成され、前記ストライプ化ファイルシステムは、データアクセス要求に応答し、前記能力平準化されたストライピングデータ構造を使用して、前記データコンテナを前記ストライプ化ファイルシステムの前記ストライプ化ボリュームセットの前記複数のボリュームにわたってストライプとして分配することを含むデータ割り当てを実施するようにさらに構成される、システム。
  6. 前記能力平準化されたストライピングデータ構造は、前記複数ストレージシステムノードのそれぞれによってアクセス可能なボリューム位置データベースに記憶される、請求項5に記載のシステム。
  7. 前記複数ストレージシステムノードのそれぞれに、異なる能力値が割り当てられる、請求項5に記載のシステム。
  8. 前記ボリュームストライピングモジュールは、前記複数ストレージシステムノードへの新たなストレージシステムノードの追加に応答し、前記能力平準化されたストライピングデータ構造を発展させるようにさらに構成され、前記能力平準化されたストライピングデータ構造は、各ストレージシステムノードの能力値を前記複数ストレージシステムノード及び前記新たなストレージシステムノードの全能力値の合計で割ったものに概ね比例する形で、前記複数ストレージシステムノード、及び前記新たなストレージシステムノードのそれぞれについてエントリを有する、請求項5に記載のシステム。
  9. 前記ボリュームストライピングモジュールは、前記能力平準化されたストライピングデータ構造を使用して、前記ストライプ化ボリュームセットに対し再ストライピング処理を実施するようにさらに構成される、請求項8に記載のシステム。
  10. 前記ボリュームストライピングモジュールは、準静的分散技術を使用して、前記ストライピング構造内におけるストレージシステムノードの発生回数を繰り返し調節することにより、前記能力平準化されたストライピングデータ構造を発展させるようにさらに構成される、請求項8に記載のシステム。
JP2012508480A 2009-04-30 2010-04-29 ストライプ化ファイルシステムにおける能力平準化によるデータ分散 Active JP5507670B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/433,089 2009-04-30
US12/433,089 US8117388B2 (en) 2009-04-30 2009-04-30 Data distribution through capacity leveling in a striped file system
PCT/US2010/001262 WO2010126596A1 (en) 2009-04-30 2010-04-29 Data distribution through capacity leveling in a striped file system

Publications (2)

Publication Number Publication Date
JP2012525634A JP2012525634A (ja) 2012-10-22
JP5507670B2 true JP5507670B2 (ja) 2014-05-28

Family

ID=42352758

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012508480A Active JP5507670B2 (ja) 2009-04-30 2010-04-29 ストライプ化ファイルシステムにおける能力平準化によるデータ分散

Country Status (5)

Country Link
US (1) US8117388B2 (ja)
EP (1) EP2430571A1 (ja)
JP (1) JP5507670B2 (ja)
CN (1) CN102460439B (ja)
WO (1) WO2010126596A1 (ja)

Families Citing this family (208)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8161076B1 (en) * 2009-04-02 2012-04-17 Netapp, Inc. Generation and use of a data structure for distributing responsibilities among multiple resources in a network storage system
US9934244B2 (en) 2010-08-13 2018-04-03 At&T Intellectual Property I, L.P. System and method for file format management
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
CN102158529A (zh) * 2011-01-27 2011-08-17 浪潮电子信息产业股份有限公司 基于php环境实现网络存储高效管理的方法
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9026560B2 (en) * 2011-09-16 2015-05-05 Cisco Technology, Inc. Data center capability summarization
CN102750343B (zh) * 2012-06-07 2016-08-31 浪潮电子信息产业股份有限公司 一种集群文件系统动态数据分布方法
CN102833845B (zh) * 2012-08-14 2015-12-02 北京华胜天成信息技术发展有限公司 一种异构通信系统及方法
US9229657B1 (en) * 2012-11-01 2016-01-05 Quantcast Corporation Redistributing data in a distributed storage system based on attributes of the data
US8924425B1 (en) * 2012-12-06 2014-12-30 Netapp, Inc. Migrating data from legacy storage systems to object storage systems
US9342256B2 (en) 2013-03-14 2016-05-17 SanDisk Technologies, Inc. Epoch based storage management for a storage device
US9152776B2 (en) * 2013-04-30 2015-10-06 Netapp, Inc. Secure access-based enumeration of a junction or mount point on a clustered server
JP6073471B2 (ja) * 2013-05-17 2017-02-01 株式会社日立製作所 ストレージ装置
JP6222227B2 (ja) * 2013-05-20 2017-11-01 日本電気株式会社 ストレージノード、ストレージノード管理装置、ストレージノード論理容量設定方法、プログラム、記録媒体および分散データストレージシステム
CN104516679B (zh) * 2013-09-30 2017-10-17 杭州宏杉科技股份有限公司 一种raid数据处理方法及装置
CN103558998B (zh) * 2013-11-07 2016-03-30 华为技术有限公司 一种数据操作的方法和设备
US9992103B2 (en) * 2014-01-24 2018-06-05 Cisco Technology, Inc. Method for providing sticky load balancing
US10459892B2 (en) 2014-04-23 2019-10-29 Qumulo, Inc. Filesystem hierarchical aggregate metrics
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9612952B2 (en) 2014-06-04 2017-04-04 Pure Storage, Inc. Automatically reconfiguring a storage memory topology
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9495255B2 (en) * 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9836480B2 (en) 2015-01-12 2017-12-05 Qumulo, Inc. Filesystem capacity and performance metrics and visualizations
US11132336B2 (en) * 2015-01-12 2021-09-28 Qumulo, Inc. Filesystem hierarchical capacity quantity and aggregate metrics
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) * 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11231858B2 (en) 2016-05-19 2022-01-25 Pure Storage, Inc. Dynamically configuring a storage system to facilitate independent scaling of resources
US10691567B2 (en) 2016-06-03 2020-06-23 Pure Storage, Inc. Dynamically forming a failure domain in a storage system that includes a plurality of blades
CN106227463B (zh) * 2016-07-11 2019-06-14 苏州科达科技股份有限公司 Raid、数据读写及其重建方法
US11706895B2 (en) 2016-07-19 2023-07-18 Pure Storage, Inc. Independent scaling of compute resources and storage resources in a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US12039165B2 (en) 2016-10-04 2024-07-16 Pure Storage, Inc. Utilizing allocation shares to improve parallelism in a zoned drive storage system
US10545861B2 (en) 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
CN108008913B (zh) * 2016-10-27 2020-12-18 杭州海康威视数字技术股份有限公司 一种基于管理节点的扩容方法、装置及存储系统
US10095729B2 (en) 2016-12-09 2018-10-09 Qumulo, Inc. Managing storage quotas in a shared storage system
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10783437B2 (en) * 2017-03-05 2020-09-22 International Business Machines Corporation Hybrid aggregation for deep learning neural networks
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
JP7105870B2 (ja) * 2017-08-10 2022-07-25 華為技術有限公司 データアクセス方法、装置およびシステム
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) * 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11360936B2 (en) 2018-06-08 2022-06-14 Qumulo, Inc. Managing per object snapshot coverage in filesystems
US11169746B2 (en) * 2018-06-19 2021-11-09 Weka.IO LTD Expanding a distributed storage system
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US10534758B1 (en) 2018-12-20 2020-01-14 Qumulo, Inc. File system cache tiers
US11151092B2 (en) 2019-01-30 2021-10-19 Qumulo, Inc. Data replication in distributed file systems
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US12087382B2 (en) 2019-04-11 2024-09-10 Pure Storage, Inc. Adaptive threshold for bad flash memory blocks
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US10860372B1 (en) 2020-01-24 2020-12-08 Qumulo, Inc. Managing throughput fairness and quality of service in file systems
US10795796B1 (en) * 2020-01-24 2020-10-06 Qumulo, Inc. Predictive performance analysis for file systems
US11151001B2 (en) 2020-01-28 2021-10-19 Qumulo, Inc. Recovery checkpoints for distributed file systems
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
CN113835637B (zh) * 2020-03-19 2024-07-16 北京奥星贝斯科技有限公司 一种数据的写入方法、装置以及设备
US10936551B1 (en) 2020-03-30 2021-03-02 Qumulo, Inc. Aggregating alternate data stream metrics for file systems
US10936538B1 (en) 2020-03-30 2021-03-02 Qumulo, Inc. Fair sampling of alternate data stream metrics for file systems
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11775481B2 (en) 2020-09-30 2023-10-03 Qumulo, Inc. User interfaces for managing distributed file systems
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
US11157458B1 (en) 2021-01-28 2021-10-26 Qumulo, Inc. Replicating files in distributed file systems using object-based data storage
US11461241B2 (en) 2021-03-03 2022-10-04 Qumulo, Inc. Storage tier management for file systems
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US12099742B2 (en) 2021-03-15 2024-09-24 Pure Storage, Inc. Utilizing programming page size granularity to optimize data segment storage in a storage system
US11567660B2 (en) 2021-03-16 2023-01-31 Qumulo, Inc. Managing cloud storage for distributed file systems
US11132126B1 (en) 2021-03-16 2021-09-28 Qumulo, Inc. Backup services for distributed file systems in cloud computing environments
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US12093435B2 (en) 2021-04-29 2024-09-17 Dell Products, L.P. Methods and systems for securing data in a distributed storage system
US11892983B2 (en) 2021-04-29 2024-02-06 EMC IP Holding Company LLC Methods and systems for seamless tiering in a distributed storage system
US11669255B2 (en) 2021-06-30 2023-06-06 Qumulo, Inc. Distributed resource caching by reallocation of storage caching using tokens and agents with non-depleted cache allocations
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11294604B1 (en) 2021-10-22 2022-04-05 Qumulo, Inc. Serverless disk drives based on cloud storage
US11677633B2 (en) 2021-10-27 2023-06-13 EMC IP Holding Company LLC Methods and systems for distributing topology information to client nodes
US12007942B2 (en) * 2021-10-27 2024-06-11 EMC IP Holding Company LLC Methods and systems for seamlessly provisioning client application nodes in a distributed system
US11922071B2 (en) 2021-10-27 2024-03-05 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components and a GPU module
US11762682B2 (en) 2021-10-27 2023-09-19 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components with advanced data services
US11354273B1 (en) 2021-11-18 2022-06-07 Qumulo, Inc. Managing usable storage space in distributed file systems
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus
US11599508B1 (en) 2022-01-31 2023-03-07 Qumulo, Inc. Integrating distributed file systems with object stores
US11722150B1 (en) 2022-09-28 2023-08-08 Qumulo, Inc. Error resistant write-ahead log
US11729269B1 (en) 2022-10-26 2023-08-15 Qumulo, Inc. Bandwidth management in distributed file systems
US11966592B1 (en) 2022-11-29 2024-04-23 Qumulo, Inc. In-place erasure code transcoding for distributed file systems
US11921677B1 (en) 2023-11-07 2024-03-05 Qumulo, Inc. Sharing namespaces across file system clusters
US11934660B1 (en) 2023-11-07 2024-03-19 Qumulo, Inc. Tiered data storage with ephemeral and persistent tiers

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202979A (en) 1985-05-08 1993-04-13 Thinking Machines Corporation Storage system using multiple independently mechanically-driven storage units
US4916608A (en) 1986-05-30 1990-04-10 International Business Machines Corporation Provision of virtual storage resources to an operating system control program
US4899342A (en) 1988-02-01 1990-02-06 Thinking Machines Corporation Method and apparatus for operating multi-unit array of memories
US4989206A (en) 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
EP0490980B1 (en) 1989-09-08 1999-05-06 Auspex Systems, Inc. Multiple facility operating system architecture
US5163131A (en) 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5124987A (en) 1990-04-16 1992-06-23 Storage Technology Corporation Logical track write scheduling system for a parallel disk drive array data storage subsystem
US5155835A (en) 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
WO1993018461A1 (en) 1992-03-09 1993-09-16 Auspex Systems, Inc. High-performance non-volatile ram protected write cache accelerator system
US5581724A (en) 1992-10-19 1996-12-03 Storage Technology Corporation Dynamically mapped data storage subsystem having multiple open destage cylinders and method of managing that subsystem
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
US5963962A (en) 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
EP0701716B1 (en) 1993-06-03 2002-08-14 Network Appliance, Inc. Method and file system for allocating blocks of files to storage space in a RAID disk system
JP3751018B2 (ja) 1993-06-03 2006-03-01 ネットワーク・アプライアンス・インコーポレイテッド ライトエニウエアファイルシステムレイアウト
JPH0869359A (ja) * 1994-08-29 1996-03-12 Hitachi Ltd ディスクアレイ装置
JPH103440A (ja) 1996-06-14 1998-01-06 Fujitsu Ltd 計算機システム
US5897661A (en) 1997-02-25 1999-04-27 International Business Machines Corporation Logical volume manager and method having enhanced update capability with dynamic allocation of storage and minimal storage of metadata information
US6021508A (en) 1997-07-11 2000-02-01 International Business Machines Corporation Parallel file system and method for independent metadata loggin
US5987477A (en) 1997-07-11 1999-11-16 International Business Machines Corporation Parallel file system and method for parallel write sharing
US6032216A (en) 1997-07-11 2000-02-29 International Business Machines Corporation Parallel file system with method using tokens for locking modes
JPH1195331A (ja) * 1997-09-24 1999-04-09 Noritsu Koki Co Ltd 写真処理システム
JPH11126136A (ja) * 1997-10-22 1999-05-11 Fujitsu Ltd データの転送方法およびデータの分割方法および情報記憶制御装置
US5941972A (en) 1997-12-31 1999-08-24 Crossroads Systems, Inc. Storage router and method for providing virtual local storage
US6173293B1 (en) 1998-03-13 2001-01-09 Digital Equipment Corporation Scalable distributed file system
US6697846B1 (en) 1998-03-20 2004-02-24 Dataplow, Inc. Shared file system
US6868442B1 (en) 1998-07-29 2005-03-15 Unisys Corporation Methods and apparatus for processing administrative requests of a distributed network application executing in a clustered computing environment
US6324581B1 (en) 1999-03-03 2001-11-27 Emc Corporation File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems
US6564252B1 (en) 1999-03-11 2003-05-13 Microsoft Corporation Scalable storage system with unique client assignment to storage server partitions
US6275898B1 (en) 1999-05-13 2001-08-14 Lsi Logic Corporation Methods and structure for RAID level migration within a logical unit
US20020049883A1 (en) 1999-11-29 2002-04-25 Eric Schneider System and method for restoring a computer system after a failure
US6502166B1 (en) 1999-12-29 2002-12-31 International Business Machines Corporation Method and apparatus for distributing data across multiple disk drives
US20030188045A1 (en) 2000-04-13 2003-10-02 Jacobson Michael B. System and method for distributing storage controller tasks
US6829678B1 (en) 2000-07-18 2004-12-07 International Business Machines Corporation System for determining the order and frequency in which space is allocated on individual storage devices
US6636879B1 (en) 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6671773B2 (en) 2000-12-07 2003-12-30 Spinnaker Networks, Llc Method and system for responding to file system requests
US6868417B2 (en) 2000-12-18 2005-03-15 Spinnaker Networks, Inc. Mechanism for handling file level and block level remote file accesses using the same server
US6931450B2 (en) 2000-12-18 2005-08-16 Sun Microsystems, Inc. Direct access from client to storage device
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
US7073044B2 (en) 2001-03-30 2006-07-04 Intel Corporation Method and apparatus for sharing TLB entries
US6643654B1 (en) 2001-06-25 2003-11-04 Network Appliance, Inc. System and method for representing named data streams within an on-disk structure of a file system
US6713630B2 (en) 2001-08-03 2004-03-30 Basf Aktiengesellschaft Continuous preparation of substituted oxazoles
US6978283B1 (en) 2001-12-21 2005-12-20 Network Appliance, Inc. File system defragmentation technique via write allocation
US7039663B1 (en) 2002-04-19 2006-05-02 Network Appliance, Inc. System and method for checkpointing and restarting an asynchronous transfer of data between a source and destination snapshot
US7010528B2 (en) 2002-05-23 2006-03-07 International Business Machines Corporation Mechanism for running parallel application programs on metadata controller nodes
US7873700B2 (en) 2002-08-09 2011-01-18 Netapp, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
US20040139167A1 (en) 2002-12-06 2004-07-15 Andiamo Systems Inc., A Delaware Corporation Apparatus and method for a scalable network attach storage system
US20040122917A1 (en) 2002-12-18 2004-06-24 Menon Jaishankar Moothedath Distributed storage system for data-sharing among client computers running defferent operating system types
US7159093B2 (en) 2002-12-20 2007-01-02 Veritas Operating Corporation Development of a detailed logical volume configuration from high-level user requirements
US7185144B2 (en) 2003-11-24 2007-02-27 Network Appliance, Inc. Semi-static distribution technique
US7412496B2 (en) 2003-08-22 2008-08-12 Emc Corporation Management of the file-modification time attribute in a multi-processor file server system
US7590807B2 (en) 2003-11-03 2009-09-15 Netapp, Inc. System and method for record retention date in a write once read many storage system
US7366837B2 (en) 2003-11-24 2008-04-29 Network Appliance, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7409497B1 (en) * 2003-12-02 2008-08-05 Network Appliance, Inc. System and method for efficiently guaranteeing data consistency to clients of a storage system cluster
US7302520B2 (en) 2003-12-02 2007-11-27 Spinnaker Networks, Llc Method and apparatus for data storage using striping
US7698289B2 (en) * 2003-12-02 2010-04-13 Netapp, Inc. Storage system architecture for striping data container content across volumes of a cluster
US7409494B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
US7617370B2 (en) 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US7904649B2 (en) 2005-04-29 2011-03-08 Netapp, Inc. System and method for restriping data across a plurality of volumes
US20070088702A1 (en) 2005-10-03 2007-04-19 Fridella Stephen A Intelligent network client for multi-protocol namespace redirection

Also Published As

Publication number Publication date
EP2430571A1 (en) 2012-03-21
CN102460439B (zh) 2014-06-25
WO2010126596A1 (en) 2010-11-04
US20100281214A1 (en) 2010-11-04
US8117388B2 (en) 2012-02-14
JP2012525634A (ja) 2012-10-22
CN102460439A (zh) 2012-05-16

Similar Documents

Publication Publication Date Title
JP5507670B2 (ja) ストライプ化ファイルシステムにおける能力平準化によるデータ分散
JP4787315B2 (ja) データコンテナの中身をクラスタの複数のボリュームにわたってストライピングするためのストレージシステム・アーキテクチャ
JP5291456B2 (ja) ストレージシステム・アーキテクチャ内のデータ・アロケーション
US7904649B2 (en) System and method for restriping data across a plurality of volumes
EP1875384B1 (en) System and method for multi-tiered meta-data caching and distribution in a clustered computer environment
US8301673B2 (en) System and method for performing distributed consistency verification of a clustered file system
JP5068252B2 (ja) ストレージシステムクラスタの複数のボリュームにわたってデータコンテナをストライピングするためのデータ配置技術
US7743210B1 (en) System and method for implementing atomic cross-stripe write operations in a striped volume set
US7698501B1 (en) System and method for utilizing sparse data containers in a striped volume set
US8566845B2 (en) System and method for optimizing multi-pathing support in a distributed storage system environment
US7721045B1 (en) System and method for efficiently guaranteeing data consistency to clients of a storage system cluster
US8224777B2 (en) System and method for generating consistent images of a set of data objects
US7962689B1 (en) System and method for performing transactional processing in a striped volume set
US7647451B1 (en) Data placement technique for striping data containers across volumes of a storage system cluster
US8001580B1 (en) System and method for revoking soft locks in a distributed storage system environment
US20190258604A1 (en) System and method for implementing a quota system in a distributed file system
US7783611B1 (en) System and method for managing file metadata during consistency points

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120514

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130705

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130716

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131015

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131016

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131022

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140319

R150 Certificate of patent or registration of utility model

Ref document number: 5507670

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250