JP5068252B2 - ストレージシステムクラスタの複数のボリュームにわたってデータコンテナをストライピングするためのデータ配置技術 - Google Patents

ストレージシステムクラスタの複数のボリュームにわたってデータコンテナをストライピングするためのデータ配置技術 Download PDF

Info

Publication number
JP5068252B2
JP5068252B2 JP2008509127A JP2008509127A JP5068252B2 JP 5068252 B2 JP5068252 B2 JP 5068252B2 JP 2008509127 A JP2008509127 A JP 2008509127A JP 2008509127 A JP2008509127 A JP 2008509127A JP 5068252 B2 JP5068252 B2 JP 5068252B2
Authority
JP
Japan
Prior art keywords
volume
volumes
data
file
stripe
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.)
Expired - Fee Related
Application number
JP2008509127A
Other languages
English (en)
Other versions
JP2008539531A5 (ja
JP2008539531A (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 JP2008539531A publication Critical patent/JP2008539531A/ja
Publication of JP2008539531A5 publication Critical patent/JP2008539531A5/ja
Application granted granted Critical
Publication of JP5068252B2 publication Critical patent/JP5068252B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or 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/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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Electron Beam Exposure (AREA)

Description

[発明の分野]
本発明はストレージシステムに関し、詳しくは、ストレージシステムにおいて複数のボリュームにわたってデータを配置することに関する。
[発明の背景]
ストレージシステムは通常、必要に応じて情報を記憶したり、情報を取り出したりするための複数の記憶装置を備える。ストレージシステムは、とりわけ、システムによって実施されるストレージサービスを支援するストレージ・オペレーションを実施することにより、当該システムを機能的に編成するストレージ・オペレーティング・システムを含む。ストレージ・システムは、種々のストレージ・アーキテクチャにしたがって実施され、限定はしないが、例えば、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、及び、クライアント又はホストコンピュータに直接取り付けられたディスクアセンブリ等によって実施される場合がある。記憶装置は通常、ディスクアレイとして編成されたディスクドライブである。ここで、「ディスク」という用語は一般に、内蔵型の回転磁気媒体記憶装置を表わす。この文脈におけるディスクという用語は、ハード・ディスク・ドライブ(HDD)やダイレクト・アクセス・ストレージ・デバイス(DASD)と同じ意味である。
ストレージシステムのストレージ・オペレーティング・システムは、ボリュームに格納される情報をファイルや論理ユニット番号(LUN)のようなデータコンテナの階層構造として論理編成するために、ファイルシステムのような高レベルモジュールを実施する場合がある。例えば、「ディスク上」の各ファイルは、ファイルの実際のデータのような情報を格納するように構成された一組のデータ構造、すなわちディスクブロックとして実施される場合がある。これらのデータブロックは、ファイルシステムによって管理されるボリュームブロック番号(vbn)空間の中で編成される。また、ファイルシステムは、ファイル内の各データブロックに、対応する「ファイル・オフセット」、すなわちファイルブロック番号(fbn)を割り当てる場合がある。ファイルシステムは通常、ファイル単位で一連のfbnを割り当てる一方、vbnは、より大きなボリュームアドレス空間にわたって割り当てられる。ファイルシステムは、vbn空間内のデータブロックを「論理ボリューム」として編成し、必須ではないが、各論理ボリュームは、そのボリューム独自のファイルシステムに関連する場合がある。
既知のタイプのファイルシステムの1つは、ディスク上でデータを上書きしないwrite−anywhereファイルシステムである。あるデータブロックが、ディスクからストレージシステムのメモリへ取得され(読み出され)、新たなデータで「汚される」(すなわち、更新、又は変更される)と、書き込み性能を最適化するために、そのデータブロックは、以後、ディスク上の新たな場所に格納(書き込み)される。write−anywhereファイルシステムは、データがディスク上に連続的に配置されるような最適レイアウトを最初に想定する場合がある。この最適ディスクレイアウトによれば、効率的なアクセスオペレーションが可能となり、特に、ディスクに対するシーケンシャル読み出しオペレーションの場合に効率的なアクセスオペレーションが可能となる。ストレージ・オペレーティング・システム上で動作するように構成されたwrite−anywhereファイルシステムの一例は、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているWrite Anywhere File Layout(WAFL)ファイルシステムである。
ストレージシステムは、情報配送のクライアント/サーバモデルにしたがって動作するように更に構成される場合があり、それによって、多数のクライアントが、当該ストレージシステムに格納されたデータコンテナにアクセスすることができる。このモデルでは、クライアントは、例えば、ポイント・ツー・ポイントリンク、共有ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、又はインターネットのような公共ネットワーク上で実施される仮想私設ネットワーク(VPN)のようなコンピュータを介してストレージシステムに「接続」するために、コンピュータ上で実行されるデータベースアプリケーションのようなアプリケーションを有する場合がある。各クライアントは、ネットワークを介してファイルベースの、又はブロックベースのプロトコルメッセージ(パケットの形をしている)をシステムに対して発行することにより、ストレージシステムのサービスを要求することができる。
複数のストレージシステムを相互接続し、多数のクライアントに対してサービスを提供するように構成されたストレージ・システムを形成する場合もある。各ストレージシステムは、1以上のボリュームを提供するように構成され、各ボリュームが、1以上のデータコンテナを格納する。また、しばしば、クライアントによって発行される多数のデータアクセス要求が、環境の特定のストレージシステムによって提供される少数のデータコンテナに対して発行されることがある。こうした問題に対する1つの解決策は、特定のストレージシステムによって提供されるボリュームをその環境のすべてのストレージシステムにわたって分散させることである。その結果、データアクセス要求、及びそれらの要求に応じるために必要とされる処理リソースは、すべてのストレージシステムにわたって分散され、それによって、各ストレージシステムにおける個々の処理負荷を軽減することができる。ただし、ファイルのような単一のデータだけが、ストレージシステム環境のクライアントによって非常に頻繁にアクセスされると、顕著な欠点が現れる。その結果、そのデータコンテナに対する要求に応じようとするファイルシステムは、自分が有するリソースを超過し、過度な負担を被り、速度と処理能力の両方が同時に低下する場合がある。
このように、単一のデータコンテナだけが非常に頻繁に使用される場合の欠点を克服する1つの技術は、ストライピングされたボリュームセット(SVS)として構成された複数のボリュームにわたってデータコンテナをストライピングすることである。その場合、各ボリュームは、異なるストレージシステムによって提供され、それによって、単一のデータコンテナに対する負荷が、複数のストレージシステムにわたって分散される。そのようなデータコンテナストライピング技術の一例は、「STORAGE SYSTEM ARCHITECTURE FOR STRIPING DATA CONTAINER CONTENT ACROSS VOLUMES OF A CLUSTER」と題する上で参照した米国特許出願第(112056−0206)号に記載されている。ここで、データコンテナの中身(データ)のストライプは、SVS内の各ボリュームにラウンドロビン順で順番に割り当てられ、SVSの最後のボリュームに達したときに、最初のボリュームへと折り返される。このデータコンテナ・ストライピング技術によれば、SVSの複数のボリュームにわたるデータの正確な、又はほぼ正確なバランスを達成することができる。
しかしながら、SVS内のボリューム数が変化する場合、そのようなデータコンテナストライピング技術の顕著な欠点が現れる。例えば、SVSに新たなボリュームを追加したり、SVSから既存のボリュームを取り除いたりする場合、すべてのボリュームにわたるバランスを復元するために、ほぼすべてのボリュームを動かさなければならなくなる(例えば、再ストライピングオペレーションによって)。ラウンドロビン・ストライピングを実施するように構成されたSVSに対するボリュームの追加や除去は、入出力(I/O)が集中し、且つ時間のかかる処理であり、処理能力や、再ストライピング・オペレーションの時間の点で、コストを要する処理である。それでも再ストライピングが重要な機能である理由は、再ストライピングによれば、ユーザや管理者は、データコンテナに使用されるストレージシステム、又はストレージユニットのプールに対して、ストレージシステム、又はストレージユニットを追加、又は除去することにより、データコンテナに対するストレージリソースやプロセッサリソースの割り当てを調節することができるからである。
[発明の概要]
本発明は、1以上のデータコンテナのデータのようなコンテンツをストライピングされたボリュームセット(SVS)の複数のボリューム上に配置する技術を提供することによって、従来技術の欠点を克服する。SVSは、ストライプ・アルゴリズム、ストライプ幅、及び、クラスタとして相互接続された複数のノードにわたって分散されたボリュームの順序付きリストを規定する一組のストライピングルールに関連する。ストライプ・アルゴリズムは、複数のボリュームにわたってデータをストライプとして分散させる態様を指定する一方、ストライプ幅は、各ストライプのサイズ/幅を指定する。特に、このデータ配置技術によれば、1つのボリュームを選択し、そのボリュームの中に、そのSVSの複数のボリュームにわたってすべてのストライプが分散されるように、ストライプを配置することができ、クラスタによって提供されるストレージサービスの効率が向上するような形でストライプを配置することができる。
本発明の第1の態様によれば、SVSの複数のボリュームにわたるデータの配置によって、固定長の決定論的パターンの指定が可能となる。すなわち、このパターンは、SVSの複数のボリュームにわたってストライピングされたファイルのようなデータコンテナのデータの配置を決める。この配置パターンは、複数のボリュームにわたってストライプが正確に均等に、又はほぼ均等に分散されるようなパターンであり、ボリューム数の数倍の任意のローカルスパン内において、ストライプは、ほぼ均等に、複数のボリュームにわたって分散される。
本発明の第2の態様によれば、配置パターンは、複数のSVSが異なる数のボリュームを有する場合と実質的に同じである。例えば、SVSの既存のボリュームに1以上のボリュームが追加され、既存のボリューム上のストライプが、追加されたボリューム間で再分散されるものと仮定する。本発明のこの態様によれば、SVS内の新たな数のボリュームにわたるバランスの性質を維持しながらも、最小限の数のストライプを動かすだけで、データを再ストライピングすることが可能となる。一般に、N−1個のボリュームを有するSVSに第Nのボリュームを追加するためには、既存のN−1個のボリュームのそれぞれから、既存のストライプのうちの1/Nを追加された第Nのボリュームに移動させなければならない。
有利なことに、このデータ配置技術によれば、SVSのボリューム数に何らかの変化があった場合でも、それらのボリュームにわたってデータバランスがとれる、またはほぼバランスがとれるという性質を維持しながらも、移動させなければならないストライプの数を最小限に抑えることができる。また、この新規の技術によれば、再ストライピング・オペレーションに要するコストも最小限に抑えることができ、かつ、場合によっては、そのようなオペレーションの時間も短縮できる場合がある。さらに、この新規のデータ配置技術によれば、再ストライピングの後も、データバランスを維持することができる。
本発明の上記の利点、及び他の利点は、添付の図面と併せて下記の説明を読むことにより、より深く理解することができるであろう。図中、同じ符号は、同一の構成要素、または機能的に類似の構成要素であることを意味している。
[例示的実施形態の詳細な説明]
A.クラスタ環境
図1は、クラスタ100として相互接続され、記憶装置上での情報の編成に関するストレージサービスを提供するように構成された複数のノード200を示す略ブロック図である。ノード200は種々の機能的構成要素を含み、それらが互いに協働し、クラスタ100の分散ストレージシステムアーキテクチャを提供する。その目的のために、各ノード200は、通常、ネットワーク要素(Nブレード310)、及びディスク要素(Dブレード350)として編成される。Nブレード310は、コンピュータネットワーク140を介してノード200をクライアント180に接続できるようにするとともに、各Dブレード350をディスクアレイ120のディスク130のような1以上の記憶装置に接続できるようにする機能を備える。ノード200は、クラスタ切り替え装置150によって相互接続される。一実施形態として、クラスタ切り替え装置150は、ギガビット・イーサネット(R)・スイッチとして実施される場合がある。分散ファイルシステム・アーキテクチャの一例は、2002年8月22に発行されたM. Kazar他による「METHOD AND SYSTEM FOR RESPONDING TO FILE SYSTEM REQUESTS」と題する米国特許出願公開公報第US2002/0116593号に概ね記載されている。
クライアント180は、情報配送のクライアント/サーバモデルにしたがってノード200と通信するように構成された汎用コンピュータであってもよい。すなわち、各クライアントが、ノードのサービスを要求すると、そのノードは、ネットワーク140を介してパケットをやりとりすることによって、クライアントにより要求されたサービスの結果を返すことができる。ファイルやディレクトリの形をした情報をアクセスする場合、クライアントは、トランスミッション・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)上で実施されるコモン・インターネット・ファイル・システム(CIFS)プロトコルやネットワーク・ファイル・システム(NFS)プロトコルのようなファイルベースのアクセスプロトコルを有するパケットを発行する場合がある。あるいは、ブロックの形をした情報をアクセスする場合、クライアントは、「SCSI over TCP(iSCSI)」プロトコルや「SCSI over FC(FCP)」プロトコルのようなブロックベースのアクセスプロトコルを有するパケットを発行する場合がある。
B.ストレージ・システム・ノード
図2は、システムバス223よって相互接続された複数のプロセッサ222a,b、メモリ224、ネットワークアダプタ225、クラスタアクセスアダプタ226、ストレージアダプタ228、及びローカルストレージ230を含むストレージシステムとして例えば実施されるノード200を示す略ブロック図である。ローカルストレージ230は、ユーザモードアプリケーション1100(図11参照)として実行される1以上の管理プロセスにより提供される設定情報(例えば、設定テーブル235内にある)をローカルに格納するためにそのノードで使用されるディスクのような1以上の記憶装置を含む。クラスタアクセスアダプタ226は、ノード200をクラスタ100の他のノードに接続するように構成された複数のポートを有する。図示の実施形態では、クラスタリング・プロトコル、及び相互接続媒体としてイーサネットが使用されているが、当業者には明らかなように、本明細書に記載するクラスタアーキテクチャ内において他のタイプのプロトコルや他のタイプの相互接続を使用することも可能である。NブレードとDブレードが個別のストレージシステム、又はコンピュータ上で実施されるような代替実施形態では、N/Dブレードは、他のN/Dブレードと通信するために、クラスタアクセスアダプタ226を使用する場合がある。
各ノード200は、例えば、ストレージ・オペレーティング・システム300を実行するデュアルプロセッサ・ストレージシステムとして実施され、ストレージ・オペレーティングシステム300は、情報をディレクトリ、ファイル、及び仮想ディスクと呼ばれる特殊なタイプのファイルのような名前付きデータコンテナの階層構造としてディスク上に編成するために、ファイルシステムのような高レベルモジュールを実施することが好ましい。ただし、当業者には明らかなように、ノード200は、場合によっては、1、または3以上のプロセッサシステムを有する場合もある。例えば、一方のプロセッサ222aは、そのノード上でNブレード310の機能を実行し、他のプロセッサ222bは、Dブレード350の機能を実行する場合がある。
メモリ224は、例えば、本発明に関連するソフトウェア・プログラム・コード、及びデータ構造を格納するために、プロセッサ、及びアダプタによってアドレス指定可能な複数の記憶場所を有する。さらに、プロセッサ、及びアダプタは、そのソフトウェアコードを実行し、データ構造を操作するように構成された処理要素、及び/又は論理回路を含む場合がある。ストレージ・オペレーティング・システム300は、その一部が通常、メモリに常駐し、それらの処理要素によって実行され、とりわけ、ノード200により実施されるストレージサービスを支援するストレージ・オペレーションを実施することにより、ノード200を機能的に編成する。当業者には明らかなように、本明細書に記載する本発明に関わるプログラム命令の格納、及び実行には、他の処理手段や、種々のコンピュータ読み取り可能媒体を含む他の記憶手段を使用することも可能である。
ネットワークアダプタ225は、ポイント・ツー・ポイントリンク、ワイド・エリア・ネットワーク、公共ネットワーク(インターネット)上で実施される仮想私設ネットワーク、又は共有ローカル・エリア・ネットワークを介してノード200を1以上のクライアント180に接続するように構成された複数のポートを有する。したがって、ネットワークアダプタ225は、ノードをネットワークに接続するために必要とされる機械的、電気的、及び信号的回路を含む場合がある。例えば、コンピュータネットワーク140は、イーサネット(R)・ネットワーク、またはファイバチャネル(FC)ネットワークとして実施される場合がある。各クライアント180は、例えばTCP/IPのような所定のプロトコルにしたがってデータフレーム、またはデータパケットをやりとりすることによって、ネットワーク140を介してノードと通信することができる。
ストレージアダプタ228は、ノード200上で実行されているストレージ・オペレーティング・システム300と協働し、クライアントによって要求された情報を取得する。この情報は、ビデオテープ、光学媒体、DVD、磁気テープ、バブルメモリ、電気的ランダム・アクセス・メモリ、及びMEMSの他、データやパリティ情報のような情報を記憶するように構成された任意の他の同様の媒体のような、書き込み可能なストレージデバイス媒体の任意のタイプのアタッチド・アレイに格納されている場合がある。ただし、本明細書に例示的に記載されるように、情報は、アレイ120のディスク130上に格納されることが好ましい。ストレージアダプタは、従来の高性能FCリンクトポロジのようなI/O相互接続構成を介してディスクに接続するための入出力(I/O)インタフェース回路を備えた複数のポートを有する。
各アレイ120への情報の格納は、一群の物理記憶ディスク130を含む1以上のストレージ「ボリューム」として実施されることが好ましく、それらの物理記憶ディスク130が協働して、ボリューム(複数の場合もあり)上のボリュームブロック番号(vbn)空間の全体的論理配置を規定する。各論理ボリュームは、必須ではないが一般に、そのボリューム独自のファイルシステムに関連する。論理ボリューム/ファイルシステム内のディスクは通常、1以上のグループに編成され、各グループは、RAID(Redundant Array of Independent Disks)ディスクとして運用される場合がある。RAID−4実施形態のような大半のRAID実施形態は、RAIDグループ内の所与の数の物理ディスクにわたってデータを「ストライプ状」に冗長書き込みし、そのストライプ状データに関するパリティ情報を適切に記憶することによって、データ記憶の信頼性/完全性を向上させる。RAID実施形態の一例は、RAID4レベル実施形態であるが、他のタイプ、及びレベルのRAID実施形態も、本明細書に記載する本発明にしたがって使用することができる。
C.ストレージ・オペレーティング・システム
ディスク130に対するアクセスを容易にするために、ストレージ・オペレーティング・システム300は、write−anywareファイルシステムを実施する。このファイルシステムは、1以上の仮想化モジュールと協働し、ディスク130により提供される記憶空間を「仮想化」する。このファイルシステムは、情報を名前付きのディレクトリ、及びファイルの階層構造としてディスク上に論理編成する。「ディスク上」の各ファイルは、データのような情報を格納するように構成された一組のデータブロックとして実施される一方、ディレクトリは、特殊なフォーマットのファイルとして実施され、その中に他のファイルやディレクトリの名前、及びそれらのへのリンクが格納される場合がある。仮想化モジュール(複数の場合もあり)によれば、ファイルシステムは、情報をブロックの階層構造として更に論理編成することができ、それらを名前付きの論理ユニット番号(LUN)としてエキスポートすることが可能になる。
例示的実施形態として、ストレージ・オペレーティング・システムは、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているNetApp Data ONTAPオペレーティングシステムであることが好ましい。このオペレーティングシステムは、Write Anywhere File Layout(WAFL)ファイルシステムを実施する。ただし、当然ながら、任意の適当なストレージ・オペレーティング・システムを本明細書に記載する本発明の原理にしたがって使用されるように拡張することも可能である。したがって、「WAFL」という用語を使用した場合でも、この用語は、本発明の教示に適合する任意のストレージ・オペレーティング・システムを指すものとして広い意味で解釈しなければならない。
図3は、本発明とともに有利に使用されるストレージ・オペレーティング・システム300を示す略ブロック図である。ストレージ・オペレーティング・システムは、統合ネットワーク・プロトコル・スタック、すなわち、より具体的には、クライアントがノードに格納された情報をブロックアクセスプロトコル、及びファイルアクセスプロトコルを使用してアクセスするためのデータパスを提供するマルチプロトコル・エンジン325を形成するように編成された一連のソフトウェア層を含む。マルチプロトコル・エンジンは、IP層314、並びにそれを支援する搬送機構であるTCP層316、及びユーザ・データグラム・プロトコル(UDP)層315のようなネットワークプロトコル層へのインタフェースを提供するネットワークドライバ(例えば、ギガビット・イーサネット・ドライバ)のメディアアクセス層312を含む。ファイルシステムプロトコル層は、マルチプロトコル・ファイル・アクセスを提供し、その目的のために、ダイレクト・アクセス・ファイル・システム(DAFS)プロトコル318、NFSプロトコル320、CIFSプロトコル322、及びハイパーテキスト・トランスファ・プロトコル(HTTP)プロトコル324を含む。VI層326は、VIアーキテクチャを実施し、DAFSプロトコル318に必要とされるようなRDMAのようなダイレクト・アクセス・トランスポート(DAT)機能を提供する。iSCSIドライバ層328は、TCP/IPネットワークプロトコルを介したブロック・プロトコル・アクセスを提供する一方、FCドライバ層330は、ノードに対してブロックアクセス要求や応答の送受信を行う。FCドライバ、及びiSCSIドライバは、ブロックに対するFC固有の、及びiSCSI固有のアクセスを可能にする。したがって、ノード上のブロックをアクセスするときに、iSCSIとFCPのいずれか一方、あるいは両方へのLUNのエキスポートを管理する。
さらに、ストレージ・オペレーティング・システムは、ノード200のディスク130上に格納された情報をアクセスするためのデータパスを提供するストレージ・サーバ265を形成するように編成された一連のソフトウェア層を含む。その目的のために、ストレージ・サーバ365は、ボリューム・ストライピング・モジュール(VSM)370、RAIDシステムモジュール380、及びディスクドライバ・システムモジュール390と協働するファイルシステム・モジュール360を含む。RAIDシステム380は、I/Oオペレーションによるボリューム/ディスクに対する情報の記憶、及び取り出しを管理する一方、ディスクドライバシステム390は、SCSIプロトコルのようなディスクアクセスプロトコルを実施する。VSM370は、例えば、本発明とともに有利に使用されるストライピングされたボリュームセット(SVS)を実施する場合がある。後で詳しく説明するように、VSMは、ファイルシステム360と協働し、ストレージ・サーバ365がSVSのボリュームを提供できるようにする。具体的には、VSM370は、SVSボリューム内におけるデータコンテナコンテンツの位置を算出するための新規のLocate()関数375を実施し、それによって、クラスタにより提供されるコンテンツの整合性を確保する。
ファイルシステム360は、例えば、仮想ディスク(vdisk)モジュール(図示せず)、及びSCSIターゲットモジュール335として実施される1以上の仮想化モジュールと通信することにより、ストレージ・オペレーティング・システム300の仮想化システムを実施する。vdiskモジュールは、ユーザ(システム管理者)がノード200に対して発行したコマンドに応答して、管理フレームワーク1110(図11参照)のユーザインタフェースのような管理インタフェースによるアクセスを可能にする。SCSIターゲットモジュール335は通常、FCドライバ330、iSCSIドライバ228と、ファイルシステム360との間に配置され、ブロック(LUN)空間と、ファイルシステム空間との間に、仮想化システムの変換層を提供する。その際、LUNはブロックとして表される。
ファイルシステム360は例えば、メッセージベースのシステムであり、ディスクアレイ120上にある自分自身に記憶空間を割り当て、ディスクアレイ上の情報のレイアウトをコントロールする。また、ファイルシステムは、ディスクのような記憶装置に格納された情報へのアクセスに使用される論理ボリューム管理機能も提供する。すなわち、ファイルシステム360は、ファイルシステム・セマンティックを提供するだけでなく、通常ならばボリュームマネージャに関わる機能も提供する。そうした機能には、例えば、(1)ディスクの集合化、(2)ディスクの記憶帯域幅の集合化、及び(3)ミラーリングやパリティ(RAID)のような信頼性保証がある。ファイルシステム360は例えば、4キロバイト(kB)ブロックを使用し、インデックス・ノード(「inode」)を使用してファイルやファイル属性(例えば、作成時刻、アクセス・パーミッション、サイズ、及びブロック位置)を識別するディスク上フォーマットを有するWAFLファイルシステム(以後、「write−anywhereファイルシステム」)を実施する場合がある。ファイルシステムは、ファイルを使用して、自分が有するファイルシステムのレイアウトを表わすメタデータを記憶する。そうしたメタデータファイルには、とりわけ、inodeファイルがある。ディスクからinodeを読み出すために、ファイル(データコンテナ)ハンドル、すなわちinode番号を含む識別子が使用される。
簡単に言えば、write−anywhereファイルシステムのinodeは全て、inodeファイルの中に編成される。ファイルシステム(fs)infoブロックは、ファイルシステム上における情報のレイアウトを指定するためのもので、例えば、そのファイルシステムのすべての他のinodeを含むデータコンテナ(例えば、ファイル)のinodeを含む。各論理ボリューム(ファイルシステム)はfsinfoブロックを有し、fsinfoブロックは、例えばRAIDグループ内の固定位置に格納されることが好ましい。inodeファイルのinodeは、そのinodeファイルのデータブロックを直接参照する(指し示す)場合もあれば、そのinodeファイルの間接ブロックを参照し、さらに、そのinodeファイルのデータブロックを参照する場合もある。inodeファイルの各データブロックは埋め込みinodeであり、各inodeは、間接ブロックを参照し、さらにファイルのデータブロックを参照する場合がある。
動作的には、クライアント180からの要求は、コンピュータネットワーク140を介してパケットとしてノード200へ転送され、そので、その要求は、ノード200のネットワークアダプタ225によって受信される。(層312や層330の)ネットワークドライバは、そのパケットを処理し、必要であれば、それをネットワークプロトコル及びファイルアクセスプロトコル層に渡し、さらなる処理を施してから、それをwrite−anywhereファイルシステム360へと転送する。このとき、ファイルシステムは、要求されたデータが「コア内」になければ、すなわち、メモリ上になければ、そのデータをディスク130からロードする(読み出す)ためのオペレーションを生成する。情報がメモリ上になければ、ファイルシステム360は、inode番号を使用してinodeファイル内を検索し、適当なエントリにアクセスし、論理vbnを読み出す。次に、ファイルシステムは、その論理vbnを含むメッセージ構造をRAISシステム380に渡し、その論理vbnをディスク識別子、及びディスクブロック番号(ディスク、dbn)にマッピングし、ディスクドライバシステム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ブレードとして実施され、(1)ネットワーク140を介して到来するクライアントが発行したデータアクセス要求に対してプロトコル・ターミネーションを実施し、(2)それらのデータアクセス要求をクラスタ100の任意のストレージサーバ365にリダイレクトする。さらに、Nブレード310とDブレード350は協働し、クラスタ100のスケーラビリティの高い分散ストレージシステムアーキテクチャを提供する。その目的のために、各ブレードは、本明細書に記載するデータコンテナ・ストライピング・オペレーションのためのDブレードからDブレードへの通信のような、ブレード間におけるクラスタ内通信を実施するように構成されたクラスタ・ファブリック(CF)・インタフェース・モジュール340a,bを含む。
Nブレード310の例えばNFS/CIFS層、及びiSCSI/FC層のようなプロトコル層は、クライアントからのファイルベースのデータアクセス要求、及びブロックベースのデータアクセス要求を、Dブレード350との通信に使用されるCFプロトコルメッセージに変換するプロトコルサーバとして機能する。すなわち、Nブレードサーバは、クラスタ100のDブレード350への伝送のためのCFインタフェースモジュール340により、到来したデータアクセス要求を、CFメッセージに埋め込まれたファイルシステム・プリミティブ・オペレーション(コマンド)に変換する。特に、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プロトコルがある。SpinFSプロトコルについては、上で参照した米国特許出願公開公報第US2002/0116593号に記載されている。
CFインタフェースモジュール340は、クラスタ100のブレード間でファイルシステムコマンドをやりとりするためのCFプロトコルを実施する。通信は例えば、Nブレード(または他のDブレード)がコールを発行する宛先となる、CF APIを露出しているDブレードによって影響を受ける場合がある。その目的のために、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は、inode600を示す略ブロック図である。inode600は、メタデータ部605、及びデータ部660を有することが好ましい。各inode600のメタデータ部605に格納される情報は、メタデータコンテナ(例えば、ファイル)を表わし、したがって、ファイルのタイプ610(例えば、通常、ディレクトリ、vdisk)、ファイルのサイズ615、タイムスタンプ620(例えば、アクセス、及び/又は変更時刻)、及び所有者、すなわち、そのファイルのユーザ識別子(UID625)、及びグループID(GID630)を含む。メタデータ部605は、生成番号640、及びメタデータ無効フラグフィールド650をさらに有する。後で詳しく説明するように、メタデータ無効フラグフィールド650は、このinode中のメタデータが使用可能であるか否か、すなわち、そのメタデータをMDVから再取得しなければならないか否かを示すために使用される。各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構造のコア内表現を示している。このコア内構造は、オン・ディスク構造、及びメモリ上の(ただしディスク上にはない)データを管理するために必要とされる補助的情報を格納するメモリブロックである。この補助的情報には、例えば、「ダーティ」ビット670がある。例えば書き込みオペレーションによる命令にしたがってinode内のデータ(又はブロック)が更新/変更された後、変更されたデータは、ダーティビット670を使用して「汚れた」ものとしてマーキングされ、そのinode(ブロック)を直ぐにディスクに「フラッシュ」(記憶)できるようになる。inodeやinodeファイルのような、WAFLファイルシステムのコア内フォーマット構造、及びオンディスク・フォーマット構造については、1998年10月6日に発行されたDavid Hitz他による「METHOD FOR MAINTAINING CONSISTENT STATES OF A FILE SYSTEM AND FOR CREATING USER-ACCESSIBLE READ-ONLY COPIES OF A FILE SYSTEM」と題する、上で援用した米国特許第5,818,292号に開示、及び記載されている。
図7は、本発明とともに有利に使用されるファイルのバッファ・ツリーの一実施形態を示す略ブロック図である。バッファ・ツリーは、メモリ224にロードされ、write−anywhereファイルシステム360によって管理されるファイル(例えば、ファイル700)のブロックの内部表現である。埋め込みinodeのようなルート(トップレベル)inode702は、間接(例えば、レベル1)ブロック704を参照する。なお、ファイルのサイズによっては、更に別のレベル(例えば、レベル2やレベル3)の間接ブロックが存在する場合もある。間接ブロック(及びinode)は、そのファイルの実際のデータの格納に使用されるデータブロック706を最終的に参照するポインタ705を有する。すなわち、ファイル700のデータはデータブロックに格納され、それらのデータブロックの位置が、そのファイルの間接ブロックに格納される。各レベル1間接ブロック704は、1024個ものデータブロックへのポインタを有する場合がある。ファイルシステムの「write anywhere」な性質によれば、それらのブロックは、ディスク130上のどこに配置される場合もありうる。
基礎となる物理ボリュームをノード200のようなストレージシステムの1以上の仮想ボリューム(またはフレキシブルボリューム)に分散させるファイルレイアウトが用意される。そのようなファイルシステムレイアウトの一例は、John K. Edwards 他によって出願され、ネットワーク・アプライアンス・インコーポレイテッドに譲渡された「EXTENSION OF WRITE ANYWHERE FILE SYSTEM LAYOUT」と題する米国特許出願第10/836,817号に記載されている。基礎となる物理ボリュームは、ノードのRAIDグループのような1以上のディスクグループを含む集合体である。この集合体は、独自の物理ボリュームブロック番号(pvbn)空間を有し、そのpvbn空間内において、ブロックアロケーション構造のようなメタデータを管理する。各フレキシブルボリュームは、独自の仮想ボリュームブロック番号(vvbn)空間を有し、そのvvbn空間内において、ブロックアロケーション構造のようなメタデータを管理する。各フレキシブルボリュームは、コンテナファイルに関連するファイルシステムであり、コンテナファイルは、そのフレキシブルボリュームによって使用されるすべてのブロックを含む、集合体中のファイルである。また、各フレキシブルボリュームは、データブロック、及び他の間接ブロック又はデータブロックを指し示すブロックポインタを有する間接ブロックを含む。
一実施形態において、pvbnは、フレキシブルボリュームに格納された(ファイル700のような)ファイルのバッファツリー内において、ブロックポインタとして使用される。この「ハイブリッド」フレキシブルボリューム実施形態は、親間接ブロック(例えば、inode、または間接ブロック)にpvbnをすることしか必要としない。論理ボリュームの読み出しパス上において、「論理」ボリューム(vol)infoブロックは、1以上のfsinfoブロックを参照する1以上のポインタを有し、さらに、各ポインタが、inodeファイル、及びそれに対応するinodeバッファツリーを指し示す。フレキシブルボリューム上の読み出しパスは通常、同じ次のpvbnを使用して(vvbnではなく)、ブロックの適当な位置を見付ける。この文脈において、フレキシブルボリュームの読み出しパス(及び、対応する読み出し性能)は、物理ボリュームのものと実質的に同じである。pvbnからディスクdbnへの変換は、ストレージ・オペレーティング・システム300のファイルシステム/RAIDシステム境界において発生する。
デュアルvbnハイブリッド実施形態の一例では、pvbnとそれに対応するvvbnが、ファイルのバッファツリー上の親間接ブロックに挿入される。すなわち、他のブロック、例えばレベル1(L1)間接ブロックやinodeファイルレベル0(L0)ブロックのような他のブロックへのポインタを有する大半のバッファツリー構造では、各ブロックポインタについて、pvbnとvvbnがペアとして記憶される。図8は、本発明とともに有利に使用されるファイル800のバッファツリーの例示的実施形態を示す略ブロック図である。埋め込みinodeのようなルート(トップレベル)inode802は、間接(例えば、レベル1)ブロック804を参照する。なお、ファイルのサイズによっては、さらに別のレベル(例えば、レベル2やレベル3)の間接ブロックが存在する場合もある。間接ブロック(及びinode)は、そのファイルの実際のデータの格納に使用されるデータブロック806を最終的に参照するpvbn/vvbnポインタ対構造808を有する。
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以上のファイルを含み、各ファイルはフレキシブルボリューム910を含み、フレキシブルボリュームによって消費される記憶空間の合計は、物理ボリューム全体のサイズよりも小さい(または、それに等しい)。集合体は、「物理的」pvbn空間を使用して、物理ボリュームのディスクにより提供されるブロックの記憶空間を規定する一方、(ファイル内の)各埋め込みフレキシブルボリュームは、「論理的」vvbn空間を使用して、例えばファイルのようなそれらのブロックを編成する。各vvbn空間は、ファイル内の複数の位置に対応する独立した一組の数であり、その後、その位置は、ディスク上のdbnに変換される。フレキシブルボリューム910もまた論理ボリュームであり、自分のvvbn空間内に独自のブロックアロケーション構造(例えば、アクティブマップ、空間マップ、及び概要マップ)を有する。
コンテナファイルは、フレキシブルボリュームによって使用されるすべてのブロックを含む、集合中のファイルである。コンテナファイルは、フレキシブルボリュームを支援する内部機能(集合体に対する)であり、例えば、1つのフレキシブルボリュームあたり1つのコンテナファイルが存在する。ファイルアプローチにおける純粋な論理ボリュームと同様に、コンテナファイルもまた、集合体中の隠しファイルであり(ユーザはアクセスできない)、そのフレキシブルボリュームによって使用されているあらゆるブロックを保持する。集合体は、例えば、WAFL/fsid/ファイルシステムファイル、ストレージラベルファイルのようなフレキシブルボリュームのサブディレクトリを有する隠しメタデータルートディレクトリである。
具体的には、物理的ファイルシステム(WAFL)ディレクトリは、集合体中の各フレキシブルボリュームについてサブディレクトリを有し、サブディレクトリの名前は、そのフレキシブルボリュームのファイルシステム識別子(fsid)になっている。各fsid(フレキシブルボリューム)は、少なくとも2つのファイル、すなわち、ファイルシステムファイル、及びストレージラベルファイルを含む。ストレージラベルファイルは、例えば、従来のRAIDラベルに格納されているものと同様のメタデータを有する。言い換えれば、ストレージラベルファイルは、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は、集合体と同じinodeファイル構造/コンテンツを有する。ただし、隠しメタデータルートディレクトリ1080の中に、所有者マップ、WAFL/fsid/ファイルシステムファイル、ストレージラベルファイルディレクトリ構造は存在しない。その目的のために、各フレキシブルボリューム1050は、1以上のfsinfoブロック1054を指し示すvolinfoブロック1052を有し、各fsinfoブロックは、そのフレキシブルボリュームのアクティブファイルシステムとともに、スナップショットを表わす場合がある。さらに、各fsinfoブロックは、前述のように、例外を除き、集合体と同じinode構造/コンテンツを有するinodeファイル1060を指し示す。各フレキシブルボリューム1050は、そのボリューム独自のinodeファイル1060、及び対応するinode番号を有する個別のinode空間、並びに、そのボリューム独自のルート(fsid)ディレクトリ1070、及び、他のフレキシブルボリュームとは無関係にエキスポートすることが可能なファイルのサブディレクトリを有する。
集合体の隠しメタデータルートディレクトリ1030の中に格納されるストレージラベルファイル1090は、従来のRAIDラベルと同様の働きをする小さなファイルである。RAIDラベルは、ボリューム名のような、ストレージシステムに関する物理的情報を含み、その情報が、ストレージラベルファイル1090にロードされる。例えば、ストレージラベルファイル1090は、関連フレキシブルボリューム1050の名前1092、そのフレキシブルボリュームのオンライン/オフラインステータス1094、及び、その関連フレキシブルボリュームの他の識別情報、及びステータス情報1096(そのフレキシブルボリュームが作成中であるか、破壊中であるか)を含む場合がある。
F.VLDB
図11は、ユーザモードアプリケーション1100としてストレージ・オペレーティング・システム300上で実行され、クラスタのノードに関する構成情報(すなわち、管理データ)の管理を提供する一群の管理プロセスを示す略ブロック図である。その目的のために、管理プロセスは、管理フレームワークプロセス1110、及びボリューム配置データベース(VLDB)プロセス1130を含み、これらはそれぞれ、ライブラリとしてリンクされたデータ複製サービス(RDB1150)を使用する。管理フレームワーク1110は、ユーザ、または管理者に対し、コマンドライン・インタフェース(CLI)、及び/又はウェブベースのグラフィカル・ユーザ・インタフェース(GUI)によるインタフェースを提供する。管理フレームワークは例えば、従来のコモン・インタフェース・モデル(CIM)オブジェクトマネージャに基づき、クラスタ100を管理するためにユーザ/システム管理者が対話する対象となるエンティティを提供する。
VLDB1130は、クラスタ100内の種々のストレージコンポーネント(例えば、SVS、フレキシブルボリューム、集合体など)の位置を追跡記録することにより、クラスタ全体を通じた要求のルーティグを可能にするデータベースプロセスである。図示の実施形態では、各ノードのNブレード310は、データコンテナハンドル500のSVS ID502をクラスタ内のそのデータを「保有」(提供)するDブレード350にマッピングする設定テーブル235にアクセスする。VLDBは、複数のエントリを有し、さらに、それらのエントリが、設定テーブル235内のエントリの中身を提供する。とりわけ、それらのVLDBエントリは、クラスタ内のフレキシブルボリューム(以後、通常「ボリューム910」)、及び集合体900の位置を追跡記録する。そのようなVLDBエントリの例には、例えば、VLDBボリュームエントリ1200、及びVLDB集合体エントリ1300がある。
図12は、VLDBボリュームエントリ1200のVLDBの一例を示す略ブロック図である。エントリ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は例えば、Sun RPCインタフェースのようなRPCインタフェースを実施する。このインタフェースにより、Nブレード310はVLDB1130に問い合わせをすることが可能になる。Nブレードは、自分の設定テーブル中に格納されていないデータコンテナハンドル500の中身に遭遇すると、RPCをVLDBプロセスに送る。これに応答して、VLDB1130は、そのデータコンテナを所有しているDブレードのIDを含む適当なマッピング情報をNブレードに返す。Nブレードは、その情報を自分の設定テーブル235の中にキャッシュし、DブレードIDを使用して、到来した要求を適当なデータコンテナに転送する。Nブレード310、及びDブレード350の機能、及びそれらの間の通信はすべて、一群の管理プロセス、及びRDBライブラリ・ユーザモード・アプリケーション1100によって、クラスタ幅単位で調整される。
その目的のために、管理プロセスは、RDB1150(RDB1150に非常に密接に結合された)に対するインタフェースを有する。RDBは、管理プロセスによって処理される管理データの永久的オブジェクト記憶(オブジェクトの記憶)を提供するライブラリを含む。特に、RDB1150は、クラスタ100のすべてのノード200にわたる管理データオブジェクト記憶アクセスの複製を複製し、同期させることにより、すべてのノード200上のRDBデータベースイメージが同一になることを保証する。システム始動時に、各ノード200は、自分のインタフェースの状態/状態をRDBデータベースに記録する。
G.ストレージ・システム・アーキテクチャ
本発明は、クラスタ100の複数のノード200にわたって分散された2以上のボリューム910を例えば含むストレージ・システム・アーキテクチャに関する。ボリュームはSVSとして編成され、クライアント180が発行したマルチプロトコル・データアクセス要求に応答して、クライアントにより提供されるファイルやLUNのようなデータコンテナの中身を格納するように構成される。特に、各データコンテナの中身は、SVSの複数のボリュームにわたって分散され、それによって、クラスタにより提供されるストレージサービスに効率を向上させることができる。特に、各データコンテナの中身は、SVSの複数のボリュームにわたって分散され、それによって、クラスタにより提供されるストレージサービスの効率が改善される。本発明の図示説明を容易にするために、データコンテナは、以後、通常、「ファイル」と呼ばれる。
SVSは、ストライプ・アルゴリズム、ストライプ幅、及び、SVS中のボリュームの順序付きリストを規定する一組のストライピング・ルールに関連する。各SVSに適用されるストライピング・ルールは、例えば、VLDB1130のエントリとして格納され、SVS IDによってアクセスされる。図14は、本発明の一実施形態によるVLDB SYSエントリ1400の一例を示す略ブロック図である。VLDBエントリ1400は、SVS IDフィールド1405、及び一組又はそれ以上の組のストライピング・ルール1430を含む。代替実施形態では、さらに別のフィールド1435を含む場合もある。SVS IDフィールド1405はSVSのIDを格納し、SVSのIDは、動作時に、データコンテナハンドル500の中に指定される。
ストライピング・ルール1430の各組は、例えばストライプ幅フィールド1410、ストライプ・アルゴリズムID1415、ボリュームの順序付きリスト・フィールド1420を含み、代替実施形態では、更に別のフィールド1425を含む場合がある。ストライピング・ルール1430は、SVSの編成を識別する情報を有する。例えば、ストライプアルゴリズムIDフィールド1415は、SVSとともに使用されるストライピング・アルゴリズムを識別する。図示の実施形態では、複数のストライピング・アルゴリズムが、SVSとともに使用され、したがって、どのアルゴリズムを使用すべきかを指定するために、ストライプ・アルゴリズムIDが必要とされる。さらに、各ストライピング・アルゴリズムは、ファイル・コンテンツをストライプとしてSVSの複数のボリュームにわたって分散させる態様を指定する。ストライプ幅フィールド1410は、各ストライプのサイズ/幅を指定する。ボリュームの順序付きリストフィールド1420は、SVSを含むボリュームのIDを有する。また、ボリュームの順序付きリストは、種々のボリュームの機能や実施形態、並びに、SVSのストライピング・ルールを更に指定する場合がある。例えば、順序付きリスト中の最初のボリュームは、SVSのMDVを示すものである一方、リスト上のボリュームの順序は、例えばラウンドロビンのような特定のストライピング・アルゴリズムを実施する態様を示す場合がある。
ファイルに対するアクセス要求に応じてVSM370、及び他のモジュール(例えば、Nブレード310のものなど)が、Dブレード350、及びそれに関連するSVSのボリュームを探すことができるようにするために、Locate()関数375が用意される。Locate()関数は、引数として少なくとも(1)SVS ID1405、(2)ファイル内のオフセット、(3)ファイルのinode番号、及び(4)一組のストライピング・ルールをとり、SVS中でそのオフセットが開始されるボリューム910を返す。例えば、ファイルに対するデータアクセス要求がクライアント180によって発行され、ノード200のNブレード310によって受信された場合、その要求は、マルチプロトコルエンジン325によって構文解析され、Nブレード310の適当なプロトコルサーバに渡される。CFメッセージ400の送付先となるDブレード350の位置を判定するために、Nブレード310は、まず、SVSエントリ1400を読み出し、SVSに関連するストライピング・ルール1430(及び、ボリュームリスト1420)を取得する場合がある。次に、Nブレード310は、Locate()関数375を実行し、オペレーションの対象となる適当なボリュームを識別する。その後、Nブレードは、適当なVLDBボリュームエントリ1200を読み出して、そのボリュームを格納している集合体を識別し、適当なVLDB集合体エントリ1300を読み出して、適当なDブレード350を最終的に識別することができる。次に、Nブレード310のプロトコルサーバは、CFメッセージ400をDブレード350に送信する。
H.データ配置技術
本発明は、1以上のデータコンテナのデータのようなコンテンツをSVSのボリューム上に配置する技術に関する。上記のように、SVSは、ストライプ・アルゴリズム、ストライプ幅、及び、クラスタ100として相互接続された複数のノード200にわたって分散されたボリュームの順序付きリストを規定する一組のストライピング・ルールに関連する。ストライプ・アルゴリズムは、データを複数のボリュームにわたってストライプとして分散させる際の態様を指定する一方、ストライプ幅は、各ストライプのサイズ/幅を指定する。特に、このデータ配置技術によれば、1つのボリュームが選択され、その中に、SVSの複数のボリュームにわたってすべてのストライプが分散されるようにストライプが配置され、それによって、クラスタにより提供されるストレージサービスの効率が改善される。
図示の実施形態において、本発明のデータ配置技術は、ストレージ・オペレーティング・システム300のファイルシステム360と協働し、とりわけ、SVS上のデータのレイアウトを管理を行うVSM370によって実施されることが好ましい。このデータ配置技術で使用されるパラメタには、(1)「チャンク」幅、すなわちストライプ幅、及び(2)SVSのボリューム数がある。具体的には、各データコンテナのデータは複数のストライプに編成(分割)され、各ストライプが、所定のストライプ幅を有する。例としてストライプ幅は2MBになっているが、本発明によれば、他のストライプ幅を選択することも可能である。ただし、ストライプ幅は、ディスク上のブロックサイズ(例えば、4kB)の倍数であることが好ましく、また、2の累乗であることが好ましい。後者によれば、効率的な算術演算が可能となる。
本発明の第1の態様において、SVSの複数のボリュームにわたるデータの配置によれば、固定長の決定論的パターンの指定(すなわち、反映)が可能になる。すなわち、このパターンが、SVSの複数のボリュームにわたってストライピングされたファイルのようなデータコンテナのデータの配置を決定する。この配置パターンは、ストライプを複数のボリュームにわたって正確に均等に、またはほぼ均等に分散させることができ、ボリューム数の数倍の任意のローカルスパンの中で、ストライプを複数のボリュームにわたってほぼ均等に分散させることができるようなパターンである。
図15Aは、本発明のデータ配置技術による例示的SVS1500の複数のボリュームにわたってデータコンテナのデータのストライプの配置を示す略ブロック図である。SVS1500は、最初に、データコンテナの全てのデータを格納するように構成された1つのボリューム1502を有し、したがって、ボリューム上の各ストライプがデータ(D)を格納するものと仮定する。SVSを拡張するために第2のボリューム1504を追加すると、ストライプは、2つのボリュームにわたって分散される場合がある。以下同様に、第3のボリューム1506、及び第4のボリューム1508をその拡張されたボリュームに追加した場合、ストライプは、それらのボリュームにわたって分散される場合がある。
各既存のボリュームからのN個のストライプのうちの1つを追加されたボリュームに再割り当てする本発明の技術によれば、データ(D)ストライプは、複数のボリュームにわたって分散される。ただし、ここでNは拡張後のSVS中のボリューム数に等しい。全体として、N個のストライプのうちの1つが、追加されたボリュームに再割り当てされ、その際、既存のボリュームはそれぞれ、拡張されたSVS中のストライプのうちのちょうど1/Nを引き続き保持する。2ボリュームのSVSの場合、第1のボリューム1502上のストライプが1つ置きに、第2のボリューム1504に移動される。この拡張されたSVS1500に第3のボリューム1506を追加することによって3ボリュームのSVSを作成する場合、第1のボリューム1506上のストライプが2つ置きに、そして、第2のボリューム1504上のストライプが2つ置きに、第3のボリューム1506に移動される。このSVSに第4のボリューム1508を追加することによって4ボリュームのSVSを作成する場合、各ボリューム(ボリューム1502〜1506)から、ストライプが3つ置きに、第4のボリューム1508に移動される。
本発明の第2の態様によれば、配置パターンは、異なる数のボリュームをそれぞれ有する複数のSVSを得るための配置パターンと実質的に同様である。例えば、SVSの既存のボリュームに1以上のボリュームを追加し、既存のボリューム上のストライプを追加されたボリュームにわたって再分散させる場合を仮定する。本発明のこの態様によれば、最小限の数のストライプを動かすだけで、SVS中の新たな数のボリュームにわたるバランスの性質を維持しながら、データを再ストライピングすることができる。一般に、N−1個のボリュームを有するSVSに第Nのボリュームを追加するためには、既存のストライプのうちの1/Nを既存のN−1個のボリュームから追加された第Nのボリュームへ移動させなければならない。
図15Bは、本発明のデータ配置技術による例示的SVS1500の複数のボリュームにわたるデータコンテナのデータストライプの再割り当てを示す概略図である。この再割り当ての結果、各ボリューム上のデータ(D)の量は、実質的に同じになっている。また、SVSの複数のボリュームにわたって、データストライプの位置も、予測可能な決定論的パターンを成すように変化している。すなわち、このデータ配置技術によれば、SVSのボリューム上の各ストライプの位置は、所与のストライプ幅、及びSVS中のボリューム数を考慮して決定される。この新規の技術の態様は、所定サイズ(すなわち、所定数のエントリ)のストライプ配置のデータ構造として実施することができる。
具体的には、このデータ配置技術は、特定サイズのSVS中に特定数のボリュームがある場合のストライプ配置を含むデータ構造(例えば、テーブル)を生成し、それをメモリに格納することによって実施することができる。また、特定の限界までの任意のSVSサイズについて、可能なストライプ配置をすべて単一のテーブルに格納することも可能である。その場合、例えば、テーブルは、各SVSについてビットマップを格納する場合があり、1(またはそれ以上)の最大番号のビットセットは、Nよりも小さくなるように選択される。ただし、Nは、SVS中のボリューム数である。一般に、本発明は、分散データのバランスを維持するためのテーブルを利用した任意のストライプ配置を意図している。このデータ配置技術では、データストライプの位置は、SVSボリュームの既知のサイズ、またはSVSの最大ボリュームサイズについて計算され、いずれの場合も、上記のように、計算されたストライプ位置はテーブルに格納される。記憶された位置によって規定されるデータ配置パターン、及び、特に、そのパターンの反復インターバルは、所与のサイズのSVS中の任意のボリューム上のデータストライプの位置の決定に使用することができる。
図16は、本データ配置技術による、種々のSVSサイズについて反復インターバルを示すストライプ配置テーブル1600を示している。このストライプ配置パターンは、SVSのサイズに応じた反復インターバルで反復されている。SVSサイズN(すなわち、Nボリューム))がK−1個のストライプ置きに反復される場合、SVSサイズ(N+1)は、Kと(N+1)の両方を均等に分割する最小数で反復されることになる。特に、テーブルの中身は、ボリューム数に等しいNの値によって決まる数(反復インターバル)に達するまで、反復されない。例えば、2ボリュームのSVSの場合、ストライプ配置パターンは、ストライプ1つ置きに反復される。第3のボリュームを追加すると、ストライプ配置パターンは、5ストライプ置きに反復されることになる。第4のボリュームを追加すると、ストライプパターンは、11ストライプ置きに反復されることになる。テーブル1600から分かるように、SVSサイズが5(及び、6)の場合、ストライプパターンは、15ストライプ置きに反復されることになる。
SVSサイズの関数のような反復インターバルが、最大Nまでの一意の素数要素(「素数」)の組にしたがって決定される。ただし、Nはボリューム数に等しい。反復インターバル(これは、テーブル1600中のエントリ数に等しい)は、乗数Nよりも小さく、実際にはN以下のすべての素数の積に等しく、各素数の乗数は、結果がN以下になるように最大乗数まで引き上げられる。1とNの間にある幾つかの数は素数であるため、当然ながら、反復インターバルは大きくなり、テーブルも大きくなる。例えば、N=10の場合、テーブルサイズは、2^3×3^2×5^1×7^1=8×9×5×7=2,520になる。同様に、N=32の場合、テーブルサイズは、2^5×3^3×5^2×7^1×11^1×13^1×17^1×19^1×23^1×29^1×31^1=32×27×25×7×11×13×17×19×23×29×31≒144×10^12になる。
次に、パターンのテーブルサイズと、バランスの精度との間で、トレードオフがなされる。テーブルは適当なポイントで終わらせることができ、そのテーブルサイズをその特定の反復インターバルで使用することができる。以後、SVSサイズよりも大きなボリュームの数が増えても、本技術は、パターンを反復することができ、それでも、例えば50パーセント以内で、SVS内全体にわたってほぼ均一なバランスを実現することができる。例えば、上記のように、10ボリュームのSVSサイズは、2,519ストライプ置きに反復するストライプ配置パターンに変換される。このサイズ(すなわち、2,520エントリ)のテーブルは、メモリ上で比較的コンパクトであるため、起動時に適当なソフトウェアコードを使用して比較的迅速に計算することができる。これに対し、32ボリュームのSVSサイズ(すなわち、144×10^12個のエントリ)の場合のテーブルは、大きすぎて、メモリに格納することができない。
2,520エントリのテーブルは、任意の適当な数のボリュームに対して良好に動作し、良好なデータバランスを生み出す。ただし、このサイズのテーブルが唯一の選択肢ではなく、他のサイズのテーブルを使用してもよい。2,520エントリのパターンは、Nを10よりも大きな数として、Nから10個までのボリュームに対し、完全なバランスをとることができる。このパターンは、パターンが反復されなくても、良好なデータバランスを提供する。言い換えれば、17ボリュームのSVS用のストライプ配置テーブルは比較的大きいが(1つのパターンあたり7.7MB)、テーブルの一部だけしか使用されなければ、良好なデータバランスを達成しつづけることができる。例えば、このパターンを2,520の所で切り落とした場合、10ボリュームまでのすべてのSVSサイズに対し、完全なバランスが生み出され、それよりも大きなSVSに対しては、1%未満のアンバランスが生じるが、N=11の場合、テーブルサイズは2520×4ビット=1260バイトに、また、N=17〜32の場合、テーブルサイズは5×2520ビット=1575バイトに制限される。
ストライプ配置テーブル1600は、特定の値のNに対し、データストライプのビット位置を示す単一の数としてエンコードすることができる。テーブルは、どのボリュームがストライプを有する可能性があるかを示す(例えば32ボリュームのような何らかの限界までのすべてのSVSサイズについて)単一のテーブルとしてエンコードすることもできる。次に、特定の値のNに対し、どのボリュームがストライプを実際に有するかの判定がなされる。これは、上位側から32〜Nビットをマスキングし、残りのビットを上位側から1または2(あるいはそれ以上)ビット選択することによって達成される。
図17は、本発明のデータ配置技術による、クラスタ100により提供されるデータコンテナに対するデータアクセス要求に応答してデータをアクセスする手順のステップの詳細を示すフロー図である。手順はステップ1705から開始され、ステップ1710へ進み、そこで、クラスタ100中のノード200のNブレード310において、例えば読み出し要求のようなデータアクセス要求が受信される。例えば、その読み出し要求が、ファイルのようなデータコンテナの、例えば3MB〜4MBのオフセットに対するものであるものと仮定する。ステップ1715において、Nブレードは、その読み出し要求に関連するデータコンテナハンドル500を構文解析し、SVS ID502、及びそのファイルのinode番号504を取得する。上記のように、SVS ID502は、ファイルを有するSVSのグローバル識別子(クラスタ100内での)である。inode番号504は、そのファイルに関連するinode(inodeファイル内の)の番号である。
CFメッセージ400を送信する宛先となるDブレード350の位置を判定するために、ステップ1720において、Nブレード310は、SVS ID502を使用して、VLDB1130の適当なSVSエントリ1400を読み出す。SVSエントリ1400は、そのSVSに関連するストライプ幅1410、ストライプアルゴリズムID1415、及び、ボリュームの順序付きリスト1420を含むストライピング・ルール1430を規定する。上記のように、ストライプ幅1410は、各ストライプの幅(例えば、2MB)を指定し、ボリュームの順序付きリスト1420は、SVS内のボリューム数を指定する。また、ストライプアルゴリズムID1415は、そのSVSとともに使用されるストライピング・アルゴリズムを識別する。例示的実施形態として、ストライプ・アルゴリズムは、データ配置技術に関連するアルゴリズムであり、したがって、ストライプ・アルゴリズムには、一意のストライプアルゴリズムIDが割り当てられる。
ステップ1725において、Nブレードは、Locate()関数375を使用して、その要求をリダイレクトする宛先となるDブレードを識別する。後で詳しく説明するように、本発明によれば、Locate()関数は、とりわけ、ストライピング・ルール1430、inode番号504、及びファイル内へのオフセットの組を引数としてとり、ファイルオフセットに関連するストライプを提供する適当なボリュームの識別情報(ID)を返す。その目的のために、Nブレードは、要求のファイルオフセットをストライプ幅で割ることによってストライプ数を計算し、計算されたストライプ数を使用してストライプ配置テーブル内を検索することにより(例えば、ストライプ数 MOD テーブルサイズ)、読み出し要求によって影響を受けるストライプの位置を決定する。ステップ1730において、Nブレードは、その要求を適当なDブレード350へ転送し、そこで、ファイルシステム360、及びVSM370が、その要求を処理する。SVSに対するデータアクセス要求を処理する技術の例については、「STORAGE SYSTEM ARCHITECTURE FOR STRIPING DATA CONTAINER CONTENT ACROSS VOLUMES OF A CLUSTER」と題する上で参照した米国特許出願に記載されている。そして、手順はステップ1740で終了する。
有利なことに、このデータ配置技術によれば、SVSのボリューム数に何らかの変化があった場合でも、移動させなければならないストライプの数を最小限に抑えることができ、かつ、ボリューム全体にわたってデータのバランスを取とることができ、又はほぼバランスを取ることができる性質を維持することができる。また、この新規の技術によれば、再ストライピング・オペレーションのコストを最小限に抑えることができ、かつ、そのようなオペレーションの時間を実質的に短縮できる場合がある。さらに、この新規のデータ配置技術によれば、再ストライピング後にもデータのバランスを維持することができる。
上記の説明は、本発明の幾つかの特定の実施形態に関するものになっている。しかしながら、当然ながら、それらの実施形態の利点の一部または全部を維持しつつ、それらの実施形態に対し、他にも変形や変更を施すことが可能である。例えば、本発明の教示は、コンピュータ上で実行されるプログラム命令を有するコンピュータ読み取り可能媒体を含むソフトウェアとして実施しても、ハードウェアとして実施しても、ファームウェアとして実施してもよく、あるいはそれらの組み合わせとして実施してもよい。したがって、本明細書の説明は、例として捉えるべきものであり、本発明の範囲を制限するものではない。したがって、添付の特許請求の範囲の目的は、そうした変形や変更もすべて、本発明の真の思想、及び範囲の中に含めることにある。
本発明の一実施形態による、クラスタとして相互接続された複数のノードを示す略ブロック図である。 本発明の一実施形態によるノードを示す略ブロック図である。 本発明とともに有利に使用されるストレージ・オペレーティング・システムを示す略ブロック図である。 本発明の一実施形態による、クラスタ・ファブリック・メッセージのフォーマットを示す略ブロック図である。 本発明の一実施形態による、データコンテナハンドルを示す略ブロック図である。 本発明の一実施形態による、inodeの例を示す略ブロック図である。 本発明の一実施形態による、バッファ・ツリーの例を示す略ブロック図である。 本発明とともに有利に使用されるファイルのバッファ・ツリーの例示的実施形態を示す略ブロック図である。 本発明の一実施形態による、集合体の例を示す略ブロック図である。 本発明の一実施形態による、集合体のオンディスク・レイアウトの例を示す略ブロック図である。 本発明の一実施形態による、一群の管理プロセスを示す略ブロック図である。 本発明の一実施形態による、ボリューム位置データベース(VLDB)ボリュームエントリを示す略ブロック図である。 本発明の一実施形態による、VLDB集合体エントリを示す略ブロック図である。 本発明の一実施形態による、VLDBストライピングされたボリュームセット(SVS)エントリを示す略ブロック図である。 本発明のデータ配置技術による、例示的SVSの複数のボリュームにわたるデータコンテナのデータのストライプの配置を示す略ブロック図である。 本発明のデータ配置技術による、図17Aに示すSVSの複数のボリュームにわたるデータコンテナのデータのストライプの再割り当てを示す略ブロック図である。 本データ配置技術による、種々のSVSボリュームサイズについて反復インターバルを示すストライプ配置テーブルを示す図である。 本発明のデータ配置技術の一実施形態による、SVSの複数のボリュームにわたるファイルのデータストライプを分散させる一連のステップを示すフロー図である。

Claims (10)

  1. 1以上のデータコンテナの中身を、ストライピングされたボリュームセットとして構成された複数のボリューム上に配置するためにコンピュータで実施される方法であって、
    前記ストライピングされたボリュームセットに関連する一組のストライピング・ルールであって、ストライプ・アルゴリズム、ストライプ幅、及び前記複数のボリュームのリストを規定する一組のストライピング・ルールを設けるステップと、
    前記複数のボリュームを、1つのクラスタとして相互接続された複数のノードにわたって分散させるステップであって、前記ノードは、クラスタ切り替え装置との接続のためのクラスタアクセスアダプタ、及び前記ノードを1以上のクライアントと接続するためのネットワークアダプタを有する、前記複数のボリュームを、1つのクラスタとして相互接続された複数のノードにわたって分散させるステップと、
    各データコンテナの中身をストライプとして分配し、該ストライプのそれぞれが、前記ストライプ幅によって指定されたサイズを有するようにするステップと、
    前記ストライプを前記複数のボリュームにわたって前記ストライプ・アルゴリズムによって指定されたストライプ配置パターンを成すように配置し、前記ストライプを前記複数のボリュームにわたって均一に分散させるステップと
    を含み、前記複数のボリュームは、ボリュームブロック番号(vbn)空間を規定する論理ボリューム、又はクライアントによってアクセスされる仮想ボリュームブロック番号(vvbn)空間を規定するフレキシブルボリュームである、コンピュータで実施される方法。
  2. 前記ストライプ配置パターンを格納するように構成されたストライプ配置テーブルを生成するステップを更に含み、前記ストライプ配置テーブルは、前記ストライピングされたボリュームセット中の所定数のボリュームについて、ストライプの配置を指定するデータを含む、請求項1に記載のコンピュータで実施される方法。
  3. 前記ストライプ配置パターンを反復インターバルで反復するステップを更に含み、前記ストライピングされたボリュームセットを構成する前記複数のボリュームの数をNとしたときに、前記反復インターバルは、一組のN未満の素数にしたがって決定される、請求項1、又は請求項2に記載のコンピュータで実施される方法。
  4. 前記データコンテナは、ファイル、又は論理ユニット番号からなる、請求項1、請求項2、又は請求項3に記載のコンピュータで実施される方法。
  5. 前記ストライピングされたボリュームセットに更に別のボリュームを追加するステップと、
    前記ストライプの1/Nのみを前記更に別のボリュームに移動させるステップであって、前記Nは、前記ストライピングされたボリュームセット中の前記更に別のボリュームを含むボリュームの数である、前記ストライプの1/Nのみを前記更に別のボリュームに移動させるステップと
    を更に含む、請求項1〜4のうちのいずれか一項に記載のコンピュータで実施される方法。
  6. 前記配置するステップは、前記ストライピングされたボリュームセット中のボリューム数をNとしたときに、固定長の1/N決定論的パターンにしたがって前記ストライプを分散させることを更に含む、請求項1〜5のうちのいずれか一項に記載のコンピュータで実施される方法。
  7. 1以上のデータコンテナの中身を、ストライピングされたボリュームセットの複数のボリューム上に配置するように構成されたシステムであって、前記ストライピングされたボリュームセットの前記ボリュームが、1つのクラスタとして相互接続された複数のノードにわたって分散され、前記ノードが、クラスタ切り替え装置との接続のためのクラスタアクセスアダプタ、及び前記ノードを1以上のクライアントと接続するためのネットワークアダプタを有するものにおいて、
    複数のボリュームを実施するように構成されたディスクアレイと、
    前記複数のボリュームを、ストライピングされたボリュームセットとして編成するように構成されたボリューム・ストライピング・モジュールと、
    前記ボリューム・ストライピング・モジュールと協働し、前記アレイの前記ストライピングされたボリュームセット上のデータコンテナ中身のレイアウトをコントロールするファイルシステム・モジュールと
    を含み、前記モジュールが協働し、前記データコンテナ中身を複数のストライプに分配し、該ストライプを前記複数のボリュームにわたって固定長の決定論的パターンを成すように配置し、前記ストライプを前記複数のボリュームにわたって均一に分散させるように構成され
    前記ボリュームは、ボリュームブロック番号(vbn)空間を規定する論理ボリューム、又はクライアントによってアクセスされる仮想ボリュームブロック番号(vvbn)空間を規定するフレキシブルボリュームである、システム。
  8. 反復インターバルで反復される前記固定長の決定論的パターンを格納するように構成されたストライプ配置テーブルを更に含み、該ストライプ配置テーブルは、前記ストライピングされたボリュームセット中の所定数のボリュームについてストライプの配置を指定するデータを含む、請求項7に記載のシステム。
  9. 前記反復インターバルは、前記ストライピングされたボリュームセットを構成するボリュームの数をNとしたときに、一組のN未満の素数にしたがって決定される、請求項8に記載のシステム。
  10. 前記データコンテナは、ファイル、又は論理ユニット番号からなる、請求項7、請求項8、又は請求項9に記載のシステム。
JP2008509127A 2005-04-29 2006-04-27 ストレージシステムクラスタの複数のボリュームにわたってデータコンテナをストライピングするためのデータ配置技術 Expired - Fee Related JP5068252B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/118,298 US7366837B2 (en) 2003-11-24 2005-04-29 Data placement technique for striping data containers across volumes of a storage system cluster
US11/118,298 2005-04-29
PCT/US2006/016055 WO2006118957A2 (en) 2005-04-29 2006-04-27 Data placement technique for striping data containers across volumes of a storage system cluster

Publications (3)

Publication Number Publication Date
JP2008539531A JP2008539531A (ja) 2008-11-13
JP2008539531A5 JP2008539531A5 (ja) 2012-05-17
JP5068252B2 true JP5068252B2 (ja) 2012-11-07

Family

ID=36829891

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008509127A Expired - Fee Related JP5068252B2 (ja) 2005-04-29 2006-04-27 ストレージシステムクラスタの複数のボリュームにわたってデータコンテナをストライピングするためのデータ配置技術

Country Status (4)

Country Link
US (1) US7366837B2 (ja)
EP (1) EP1880271B1 (ja)
JP (1) JP5068252B2 (ja)
WO (1) WO2006118957A2 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7698289B2 (en) * 2003-12-02 2010-04-13 Netapp, Inc. Storage system architecture for striping data container content across volumes of a cluster
US7430571B2 (en) * 2004-04-30 2008-09-30 Network Appliance, Inc. Extension of write anywhere file layout write allocation
US7257663B2 (en) * 2004-11-17 2007-08-14 International Business Machines Corporation Initiating and using information used for a host, control unit, and logical device connections
US7698334B2 (en) * 2005-04-29 2010-04-13 Netapp, Inc. System and method for multi-tiered meta-data caching and distribution in a clustered computer environment
US7904649B2 (en) 2005-04-29 2011-03-08 Netapp, Inc. System and method for restriping data across a plurality of volumes
US8484213B2 (en) * 2005-08-31 2013-07-09 International Business Machines Corporation Heterogenous high availability cluster manager
US20070250737A1 (en) * 2005-09-13 2007-10-25 Agere Systems Inc. Method and Apparatus for Aligned Data Storage Addresses in a Raid System
US8521955B2 (en) 2005-09-13 2013-08-27 Lsi Corporation Aligned data storage for network attached media streaming systems
US7778960B1 (en) 2005-10-20 2010-08-17 American Megatrends, Inc. Background movement of data between nodes in a storage cluster
US7996608B1 (en) * 2005-10-20 2011-08-09 American Megatrends, Inc. Providing redundancy in a storage system
US8010829B1 (en) 2005-10-20 2011-08-30 American Megatrends, Inc. Distributed hot-spare storage in a storage cluster
US7721044B1 (en) * 2005-10-20 2010-05-18 American Megatrends, Inc. Expanding the storage capacity of a virtualized data storage system
US8010485B1 (en) 2005-10-20 2011-08-30 American Megatrends, Inc. Background movement of data between nodes in a storage cluster
EP1949214B1 (en) 2005-10-28 2012-12-19 Network Appliance, Inc. System and method for optimizing multi-pathing support in a distributed storage system environment
US7730258B1 (en) 2005-11-01 2010-06-01 Netapp, Inc. System and method for managing hard and soft lock state information in a distributed storage system environment
US8255425B1 (en) 2005-11-01 2012-08-28 Netapp, Inc. System and method for event notification using an event routing table
US7404036B2 (en) * 2005-11-23 2008-07-22 International Business Machines Corporation Rebalancing of striped disk data
US7587570B2 (en) * 2006-05-31 2009-09-08 International Business Machines Corporation System and method for providing automated storage provisioning
US20080104445A1 (en) * 2006-10-31 2008-05-01 Hewlett-Packard Development Company, L.P. Raid array
US8489811B1 (en) 2006-12-29 2013-07-16 Netapp, Inc. System and method for addressing data containers using data set identifiers
US8301673B2 (en) * 2006-12-29 2012-10-30 Netapp, Inc. System and method for performing distributed consistency verification of a clustered file system
US8498967B1 (en) 2007-01-30 2013-07-30 American Megatrends, Inc. Two-node high availability cluster storage solution using an intelligent initiator to avoid split brain syndrome
US7908448B1 (en) 2007-01-30 2011-03-15 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems with write-back cache
US8046548B1 (en) 2007-01-30 2011-10-25 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems using bitmap write-intent logging
US8312046B1 (en) 2007-02-28 2012-11-13 Netapp, Inc. System and method for enabling a data container to appear in a plurality of locations in a super-namespace
US7827350B1 (en) 2007-04-27 2010-11-02 Netapp, Inc. Method and system for promoting a snapshot in a distributed file system
US7797489B1 (en) 2007-06-01 2010-09-14 Netapp, Inc. System and method for providing space availability notification in a distributed striped volume set
US7975102B1 (en) 2007-08-06 2011-07-05 Netapp, Inc. Technique to avoid cascaded hot spotting
US8478865B2 (en) * 2007-10-09 2013-07-02 Cleversafe, Inc. Systems, methods, and apparatus for matching a connection request with a network interface adapted for use with a dispersed data storage network
US8244846B2 (en) * 2007-12-26 2012-08-14 Symantec Corporation Balanced consistent hashing for distributed resource management
US8224864B1 (en) * 2008-01-07 2012-07-17 Network Appliance, Inc. Striping directories across a striped volume set by the filenames contained in the directories
US7996607B1 (en) 2008-01-28 2011-08-09 Netapp, Inc. Distributing lookup operations in a striped storage system
US8725986B1 (en) 2008-04-18 2014-05-13 Netapp, Inc. System and method for volume block number to disk block number mapping
US8145841B2 (en) 2008-06-06 2012-03-27 Pivot3 Method and system for initializing storage in a storage system
US8219750B2 (en) 2008-06-30 2012-07-10 Pivot3 Method and system for execution of applications in conjunction with distributed RAID
US8015343B2 (en) * 2008-08-08 2011-09-06 Amazon Technologies, Inc. Providing executing programs with reliable access to non-local block data storage
US8176247B2 (en) 2008-10-28 2012-05-08 Pivot3 Method and system for protecting against multiple failures in a RAID system
US7992055B1 (en) 2008-11-07 2011-08-02 Netapp, Inc. System and method for providing autosupport for a security system
US8117388B2 (en) * 2009-04-30 2012-02-14 Netapp, Inc. Data distribution through capacity leveling in a striped file system
CN101763313B (zh) * 2009-12-17 2011-09-07 成都市华为赛门铁克科技有限公司 一种服务器及其访问卷的方法
US9323775B2 (en) * 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
US11726955B2 (en) 2010-06-19 2023-08-15 Hewlett Packard Enterprise Development Lp Methods and apparatus for efficient container location database snapshot operation
US8527699B2 (en) 2011-04-25 2013-09-03 Pivot3, Inc. Method and system for distributed RAID implementation
US8365023B2 (en) 2011-04-29 2013-01-29 International Business Machines Corporation Runtime dynamic performance skew elimination
US9244770B2 (en) * 2011-07-06 2016-01-26 International Business Machines Corporation Responding to a maintenance free storage container security threat
CN104380286A (zh) * 2012-05-31 2015-02-25 富士通株式会社 索引生成程序以及检索程序
US9009424B2 (en) * 2012-10-29 2015-04-14 International Business Machines Corporation Data placement for loss protection in a storage system
US9547554B2 (en) * 2013-03-15 2017-01-17 Skyera, Llc Mass storage device and method of operating the same to store parity data
US9575844B2 (en) 2013-03-15 2017-02-21 Skyera, Llc Mass storage device and method of operating the same to back up data stored in volatile memory
US10339098B2 (en) * 2015-12-22 2019-07-02 Spectra Logic, Corp. Container-level array storage
KR101734160B1 (ko) * 2016-04-28 2017-05-11 주식회사 디에이아이오 작업부하 편중을 완화하는 저장 장치

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3876978A (en) * 1973-06-04 1975-04-08 Ibm Archival data protection
US4092732A (en) * 1977-05-31 1978-05-30 International Business Machines Corporation System for recovering data stored in failed memory unit
US4201976A (en) * 1977-12-23 1980-05-06 International Business Machines Corporation Plural channel error correcting methods and means using adaptive reallocation of redundant channels among groups of channels
US4205324A (en) * 1977-12-23 1980-05-27 International Business Machines Corporation Methods and means for simultaneously correcting several channels in error in a parallel multi channel data system using continuously modifiable syndromes and selective generation of internal channel pointers
JPS5637883A (en) * 1979-09-04 1981-04-11 Fanuc Ltd Information rewrite system
US4467421A (en) * 1979-10-18 1984-08-21 Storage Technology Corporation Virtual storage system and method
DE3040004A1 (de) * 1979-10-24 1981-05-07 Matsushita Electric Industrial Co., Ltd., Kadoma, Osaka Verfahren und vorrichtung zum codieren von pruefworten geringer redundanz aus ursprungsdaten
US4825403A (en) * 1983-05-16 1989-04-25 Data General Corporation Apparatus guaranteeing that a controller in a disk drive system receives at least some data from an invalid track sector
JPS60142418A (ja) * 1983-12-28 1985-07-27 Hitachi Ltd 入出力エラ−回復方式
FR2561428B1 (fr) * 1984-03-16 1986-09-12 Bull Sa Procede d'enregistrement dans une memoire a disques et systeme de memoire a disques
US4667326A (en) * 1984-12-20 1987-05-19 Advanced Micro Devices, Inc. Method and apparatus for error detection and correction in systems comprising floppy and/or hard disk drives
US5202979A (en) * 1985-05-08 1993-04-13 Thinking Machines Corporation Storage system using multiple independently mechanically-driven storage units
US4722085A (en) * 1986-02-03 1988-01-26 Unisys Corp. High capacity disk storage system having unusually high fault tolerance level and bandpass
JPH0675329B2 (ja) * 1986-02-18 1994-09-21 ソニー株式会社 ディスクプレーヤ
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
USRE34100E (en) * 1987-01-12 1992-10-13 Seagate Technology, Inc. Data error correction system
US4775978A (en) * 1987-01-12 1988-10-04 Magnetic Peripherals Inc. Data error correction system
US4796260A (en) * 1987-03-30 1989-01-03 Scs Telecom, Inc. Schilling-Manela forward error correction and detection code method and apparatus
US5257367A (en) * 1987-06-02 1993-10-26 Cab-Tek, Inc. Data storage system with asynchronous host operating system communication link
US4849974A (en) * 1987-08-03 1989-07-18 Scs Telecom, Inc. PASM and TASM forward error correction and detection code method and apparatus
US4849976A (en) * 1987-08-03 1989-07-18 Scs Telecom, Inc. PASM and TASM forward error correction and detection code method and apparatus
US4837680A (en) * 1987-08-28 1989-06-06 International Business Machines Corporation Controlling asynchronously operating peripherals
US4870643A (en) * 1987-11-06 1989-09-26 Micropolis Corporation Parallel drive array storage system
US4847842A (en) * 1987-11-19 1989-07-11 Scs Telecom, Inc. SM codec method and apparatus
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
US4989205A (en) * 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
US5077736A (en) * 1988-06-28 1991-12-31 Storage Technology Corporation Disk drive memory
US5128810A (en) * 1988-08-02 1992-07-07 Cray Research, Inc. Single disk emulation interface for an array of synchronous spindle disk drives
US5218689A (en) * 1988-08-16 1993-06-08 Cray Research, Inc. Single disk emulation interface for an array of asynchronously operating disk drives
US5148432A (en) * 1988-11-14 1992-09-15 Array Technology Corporation Arrayed disk drive system and method
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5101492A (en) * 1989-11-03 1992-03-31 Compaq Computer Corporation Data redundancy and recovery protection
US5233618A (en) * 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
US5088081A (en) * 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
US5166936A (en) * 1990-07-20 1992-11-24 Compaq Computer Corporation Automatic hard disk bad sector remapping
US5210860A (en) * 1990-07-20 1993-05-11 Compaq Computer Corporation Intelligent disk array controller
US5208813A (en) * 1990-10-23 1993-05-04 Array Technology Corporation On-line reconstruction of a failed redundant array system
US5235601A (en) * 1990-12-21 1993-08-10 Array Technology Corporation On-line restoration of redundancy information in a redundant array system
US5274799A (en) * 1991-01-04 1993-12-28 Array Technology Corporation Storage device array architecture with copyback cache
US5579475A (en) * 1991-02-11 1996-11-26 International Business Machines Corporation Method and means for encoding and rebuilding the data contents of up to two unavailable DASDS in a DASD array using simple non-recursive diagonal and row parity
US5179704A (en) * 1991-03-13 1993-01-12 Ncr Corporation Method and apparatus for generating disk array interrupt signals
EP0519669A3 (en) * 1991-06-21 1994-07-06 Ibm Encoding and rebuilding data for a dasd array
US5237658A (en) * 1991-10-01 1993-08-17 Tandem Computers Incorporated Linear and orthogonal expansion of array storage in multiprocessor computing systems
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
US5410667A (en) * 1992-04-17 1995-04-25 Storage Technology Corporation Data record copy system for a disk drive array data storage subsystem
JPH07141232A (ja) * 1993-11-15 1995-06-02 Hitachi Ltd ファイル格納管理装置
US5537567A (en) * 1994-03-14 1996-07-16 International Business Machines Corporation Parity block configuration in an array of storage devices
JPH0830495A (ja) * 1994-07-15 1996-02-02 Matsushita Electric Ind Co Ltd ファイル管理システム
US5623595A (en) * 1994-09-26 1997-04-22 Oracle Corporation Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system
US5812753A (en) * 1995-10-13 1998-09-22 Eccs, Inc. Method for initializing or reconstructing data consistency within an array of storage elements
US5862158A (en) * 1995-11-08 1999-01-19 International Business Machines Corporation Efficient method for providing fault tolerance against double device failures in multiple device systems
JP2912221B2 (ja) * 1996-03-27 1999-06-28 日本電気通信システム株式会社 分散ネットワーク化ストライプド・ファイルシステム
US5884098A (en) * 1996-04-18 1999-03-16 Emc Corporation RAID controller system utilizing front end and back end caching systems including communication path connecting two caching systems and synchronizing allocation of blocks in caching systems
US5805788A (en) * 1996-05-20 1998-09-08 Cray Research, Inc. Raid-5 parity generation and data reconstruction
JPH103440A (ja) 1996-06-14 1998-01-06 Fujitsu Ltd 計算機システム
KR100267366B1 (en) * 1997-07-15 2000-10-16 Samsung Electronics Co Ltd Method for recoding parity and restoring data of failed disks in an external storage subsystem and apparatus therefor
US6092215A (en) * 1997-09-29 2000-07-18 International Business Machines Corporation System and method for reconstructing data in a storage array system
JP3616487B2 (ja) * 1997-11-21 2005-02-02 アルプス電気株式会社 ディスクアレイ装置
US6138201A (en) * 1998-04-15 2000-10-24 Sony Corporation Redundant array of inexpensive tape drives using data compression and data allocation ratios
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
JP2000242434A (ja) * 1998-12-22 2000-09-08 Hitachi Ltd 記憶装置システム
JP2000322292A (ja) * 1999-05-10 2000-11-24 Nec Corp クラスタ型データサーバシステム及びデータ格納方法
US6532548B1 (en) * 1999-09-21 2003-03-11 Storage Technology Corporation System and method for handling temporary errors on a redundant array of independent tapes (RAIT)
US6581185B1 (en) * 2000-01-24 2003-06-17 Storage Technology Corporation Apparatus and method for reconstructing data using cross-parity stripes on storage media
US20040139167A1 (en) * 2002-12-06 2004-07-15 Andiamo Systems Inc., A Delaware Corporation Apparatus and method for a scalable network attach storage system
US7475189B2 (en) * 2005-03-04 2009-01-06 Microsoft Corporation Advanced hardware and software encapsulation of RAID solutions to facilitate data protection

Also Published As

Publication number Publication date
WO2006118957A3 (en) 2007-03-29
US7366837B2 (en) 2008-04-29
JP2008539531A (ja) 2008-11-13
WO2006118957A2 (en) 2006-11-09
EP1880271B1 (en) 2013-01-02
EP1880271A2 (en) 2008-01-23
US20060184731A1 (en) 2006-08-17

Similar Documents

Publication Publication Date Title
JP5068252B2 (ja) ストレージシステムクラスタの複数のボリュームにわたってデータコンテナをストライピングするためのデータ配置技術
JP4787315B2 (ja) データコンテナの中身をクラスタの複数のボリュームにわたってストライピングするためのストレージシステム・アーキテクチャ
JP5291456B2 (ja) ストレージシステム・アーキテクチャ内のデータ・アロケーション
US8578090B1 (en) System and method for restriping data across a plurality of volumes
JP5507670B2 (ja) ストライプ化ファイルシステムにおける能力平準化によるデータ分散
US7743210B1 (en) System and method for implementing atomic cross-stripe write operations in a striped volume set
US8489811B1 (en) System and method for addressing data containers using data set identifiers
US7698501B1 (en) System and method for utilizing sparse data containers in a striped volume set
US8301673B2 (en) System and method for performing distributed consistency verification of a clustered file system
US7574464B2 (en) System and method for enabling a storage system to support multiple volume formats simultaneously
US7647451B1 (en) Data placement technique for striping data containers across volumes of a storage system cluster
US8224777B2 (en) System and method for generating consistent images of a set of data objects
US8082362B1 (en) System and method for selection of data paths in a clustered storage system
US8209289B1 (en) Technique for accelerating the creation of a point in time representation of a virtual file system
US7243207B1 (en) Technique for translating a pure virtual file system data stream into a hybrid virtual volume
EP1743263A2 (en) Extension of write anywhere file system layout
US20190258604A1 (en) System and method for implementing a quota system in a distributed file system
US10140306B2 (en) System and method for adaptive data placement within a distributed file system
JP4779012B2 (ja) 瞬時ボリューム復元のためのオン・デマンドでデータを復元するシステム、および方法
US7783611B1 (en) System and method for managing file metadata during consistency points

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100928

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101221

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101221

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110913

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111208

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120312

A524 Written submission of copy of amendment under section 19 (pct)

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20120312

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120814

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150824

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees