JP5291456B2 - ストレージシステム・アーキテクチャ内のデータ・アロケーション - Google Patents

ストレージシステム・アーキテクチャ内のデータ・アロケーション Download PDF

Info

Publication number
JP5291456B2
JP5291456B2 JP2008509170A JP2008509170A JP5291456B2 JP 5291456 B2 JP5291456 B2 JP 5291456B2 JP 2008509170 A JP2008509170 A JP 2008509170A JP 2008509170 A JP2008509170 A JP 2008509170A JP 5291456 B2 JP5291456 B2 JP 5291456B2
Authority
JP
Japan
Prior art keywords
volume
data
volumes
file
striped
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
JP2008509170A
Other languages
English (en)
Other versions
JP2008541207A (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 JP2008541207A publication Critical patent/JP2008541207A/ja
Application granted granted Critical
Publication of JP5291456B2 publication Critical patent/JP5291456B2/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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/061Improving I/O performance
    • 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]

Description

発明の分野
[技術分野]
本発明の実施形態はストレージシステムに関し、特に、ストレージ・システム・クラスタの複数のボリュームにわたるデータ・アロケーションに関する。
[背景]
一般に、ストレージシステムは、当該ストレージシステムに接続された1以上の記憶装置に格納された情報へのアクセスを提供する。情報へのアクセスは、それらの記憶装置をボリュームに編成することによって可能となり、記憶装置に格納される情報は、ボリュームによって論理編成される。記憶装置は通常、ディスクアレイとして編成された複数のディスクドライブである。ここで、「ディスク」という用語は、内蔵型の回転式磁気媒体記憶装置を表わす。また、この文脈におけるディスクという用語は、ハード・ディスク・ドライブ(HDD)やダイレクト・アクセス・ストレージ・デバイス(DASD)と同じ意味である。
ストレージシステムは、情報配送のクライアント/サーバモデルにしたがってさらに構成される場合があり、それによって、多数のクライアントが、当該ストレージシステムに格納されたデータコンテナにアクセスすることができる場合がある。このモデルでは、クライアントは、ポイント・ツー・ポイントリンク、共有ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、またはインターネットのような公共ネットワーク上で実施される仮想私設ネットワーク(VPN)のようなコンピュータネットワークを介してストレージシステムに「接続」するために、コンピュータ上で実行されるデータベース・アプリケーションのようなアプリケーションを有する場合がある。各クライアントは、ネットワークを介してファイルベースのプロトコルメッセージ、またはブロックベースのプロトコルメッセージ(パケットの形をしている)をストレージシステムに発行することにより、ストレージシステムのサービスを要求することができる。
複数のストレージシステムを相互接続し、多数のクライアントにサービスを提供するように構成されたストレージシステム環境を形成する場合もある。各ストレージシステムは1以上のボリュームを提供するように構成され、各ボリュームは1以上のデータコンテナを格納する。しかしながら、しばしば、クライアントによって発行される多数のデータアクセス要求は、当該環境の特定のストレージシステムが提供する少数のデータコンテナに対して発行される。このような問題に対する解決策は、特定のストレージシステムによって提供されるボリュームを、その環境のすべてのストレージシステムにわたって分散させることである。そして、その結果、そのようなデータアクセス要求は、そのような要求に応じるために必要な処理リソースとともに、すべてのストレージシステムにわたって分散され、それによって、各ストレージシステムにおける個々の処理負荷が軽減される。ただし、ファイルのような単一のデータコンテナだけが、ストレージシステム環境のクライアントによって非常に頻繁にアクセスされる場合、顕著な欠点が浮上する。その結果、そのデータコンテナに対する要求に応じようとするストレージシステムは、自分が有する処理リソースを超過し、過負荷になり、速度と性能が両方とも低下する場合がある。
[発明の概要]
本発明の実施形態は、ストレージシステム・アーキテクチャ内でのデータ・アロケーションのための方法、及びシステムを提供する。具体的には、本発明は、1つのクラスタとして相互接続された複数のノードにわたって分散された1以上のボリュームを含むストレージシステム・アーキテクチャを提供することにより、従来技術の欠点を克服する。ボリュームは、ストライピングされたボリュームセット(SVS)として編成され、クライアントが発行したマルチプロトコル・データアクセス要求に応答して、クラスタが提供するファイルや論理ユニットのようなデータコンテナの中身を記憶するように構成される。クラスタの各ノードは、(1)SVSのボリュームを提供するように構成されたストレージサーバ、及び(2)データアクセス要求をクラスタのいずれかのストレージサーバへリダイレクトするように構成されたマルチプロトコル・エンジンを含む。特に、各データコンテナの中身は、SVSの複数のボリュームにわたって分散され、それによって、クラスタによって提供されるストレージサービスの性能が改善される。なお、本発明は、種々の態様で実施することができ、例えば、プロセス、装置、システム、デバイス、あるいは、コンピュータ読み取り可能媒体上の手段として実施することができる。本発明の幾つかの実施形態について以下で説明する。
データ・アロケーションの方法の一実施形態として、該方法は、複数のストレージシステムにわたってデータを割り当てるためのストレージシステム・アーキテクチャを識別するステップを含む。この方法は、データの塊(データチャンク)の分布を表わすアロケーション構造を判定するステップをさらに含む。この方法は、ストレージシステム・アーキテクチャを変更するときに、アロケーション構造を更新するステップをさらに含む。
ストレージシステム・アーキテクチャ内におけるデータ・アロケーションのためのシステムのさらに別の例示的実施形態として、該システムは、データチャンクを分散させるための複数のボリュームを識別するアロケーション構造を含む。複数のボリュームはそれぞれ、ストレージシステム・アーキテクチャの少なくとも1つのストレージシステムによって編成される。さらに、システムの実施形態は複数の再ストライピングプロセスを含み、該複数の再ストライピングプロセスのそれぞれが、ストレージシステム・アーキテクチャの変更に応答して、アロケーション構造の中身を再構成する。
ストレージシステム・アーキテクチャ内におけるデータ・アロケーションのための命令を含むコンピュータ読み取り可能媒体の一実施形態として、該実施形態は、ストレージシステム・アーキテクチャの複数のストレージシステムにわたってデータを割り当てるための命令を含む。この実施形態は、データチャンクの分布を表わすアロケーション構造を判定するための命令をさらに含む。この実施形態は、ストレージシステム・アーキテクチャを変更するときに、アロケーション構造を更新するための命令をさらに含む。
データ・アロケーションのためのコンピューティング環境の一実施形態として、該実施形態は、データチャンクを分散させるための複数のボリュームを識別する手段を含む。前記複数のボリュームはそれぞれ、コンピューティング環境の少なくとも1つのシステムによって編成される。この実施形態は、コンピューティング環境の変更に応答して、アロケーション構造の中身を再構成する手段をさらに含む。
本発明の他の態様は、添付の図面と併せて下記の説明を読むことにより明らかになるであろう。図面は、本発明の原理を例として示すものである。
[例示的実施形態の詳細な説明]
下記の実施形態は、ストレージシステム・アーキテクチャ内におけるデータ・アロケーションのための方法、およびシステムを表わす。具体的には、本発明は、クラスタ化コンピューティング環境として相互接続された複数のノードにわたって分散された1以上のボリュームを含むストレージシステム・アーキテクチャを提供することによって、従来技術の欠点を克服する。ボリュームは、ストライピングされたボリュームセット(SVS)として編成され、クライアントが発行したマルチプロトコルデータアクセス要求に応答して、クラスタによって提供されるファイルや論理ユニットのようなデータコンテナの中身を記憶するように構成される。クラスタの各ノードは、(1)SVSのボリュームを提供するように構成されたストレージサーバ、及び(2)前記データアクセス要求をクラスタのいずれかのストレージサーバにリダイレクトするように構成されたマルチプロトコル・エンジンを含む。特に、各データコンテナの中身は、SVSの複数のボリュームにわたって分散され、それにより、クラスタによって提供されるストレージサービスの効率が向上する。ただし、当業者には明らかなように、本発明のそれらの実施形態は、それらの特定の詳細の一部、または全部がなくても、実施することができる。例によっては、本明細書に記載する本発明の実施形態を不明瞭にしないために、既知のプロセスオペレーションについては、詳しく記載されない場合もある。
図1のコンピューティング環境は、本発明の一実施形態による、クラスタ化コンピューティング環境として相互接続された複数のノード100を示す図である。ノード100は、ディスクアレイ140のような記憶装置上での情報の編成に関するストレージサービスを提供するように構成される。ノード100は種々の機能的コンポーネントを含み、それらが協働して、クラスタの分散ストレージシステム・アーキテクチャを提供する。さらに、各ノード100は、ネットワーク要素(Nブレード160)、及びディスク要素(Dブレード170)として編成される。Nブレード160は、接続システム120を介してノード100をクライアント110に接続する機能を有する一方、各Dブレード170は、ディスクアレイ140のディスク150のような1以上の記憶装置に接続される。ノード100は、クラスタ切り替え装置130によって相互接続され、クラスタ切り替え装置は一実施形態において、ギガビット・イーサネット(R)・スイッチとして実施される場合がある。分散ファイルシステムアーキテクチャの一例は、2002年8月22日に発行されたM. Kazar他による「METHOD AND SYSTEM FOR RESPONDING TO FILE SYSTEM REQUESTS」と題する米国特許出願公開第US2002/0116593号に概ね記載されている。なお、図1に示すクラスタには、同数のNブレード、及びDブレードが描かれているが、本発明の種々の実施形態によれば、Nブレードの数とDブレードの数は異なる場合もある。例えば、NブレードとDブレードの間の一対一の対応を反映しないクラスタ構成では、相互接続された複数のNブレード、及び/又はDブレードが存在する場合がある。したがって、1つのNブレードと1つのDブレードを含むノード100の説明は、単なる例として捉えなければならない。
クライアント110は、情報配送のクライアント/サーバモデルにしたがってノード100と通信するように構成された汎用コンピュータであってもよい。つまり、各クライアント110がノード100のサービスを要求すると、ノード100は、接続システム120を介してパケットをやりとりすることによって、クライアント110により要求されたサービスの結果を返す場合がある。ファイルやディレクトリのような形態の情報をアクセスする場合、クライアント110は、トランスミッション・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)上で実施されるコモン・インターネット・ファイルシステム(CIFS)プロトコルやネットワーク・ファイルシステム(NFS)プロトコルのようなファイルベースのアクセスプロトコルを有するパケットを発行する場合がある。一方、ブロック形態の情報をアクセスする場合、クライアントは、「SCSI over TCP(iSCSI)」プロトコルや「SCSI over FC(FCP)」プロトコルのようなブロックベースのアクセスプロトコルを有するパケットを発行する場合がある。
図2は、本発明の一実施形態によるノード100を示す図である。一実施形態において、ノード100は、システムバス290によって相互接続された複数のプロセッサ210a、210b、メモリ220、ネットワークアダプタ240、クラスタ・アクセス・アダプタ270、ストレージアダプタ280、及びローカル・ストレージ250を含むストレージシステムである。ローカル・ストレージ250はディスクのような1以上の記憶装置を含み、ノード100は、それらの記憶装置を使用して、ユーザモード・アプリケーション900(図9参照)として実行される1以上の管理プロセスにより提供される設定情報をノード100にローカルに(例えば、設定テーブル260に)記憶する。クラスタ・アクセス・アダプタ270は、ノード100をクラスタの他のノード100に接続するように構成された複数のポートを備える。例示する実施形態では、クラスタリング・プロトコル、及び相互接続媒体としてイーサネットが使用されるが、当業者には明らかなように、他のタイプのプロトコル、及び相互接続を、本明細書に記載するクラスタアーキテクチャの中で使用してもよい。NブレードとDブレードが個別のストレージシステム、またはコンピュータ上で実施される他の実施形態では、N/Dブレードは、クラスタ・アクセス・アダプタ270を利用して、クラスタの他のN/Dブレードと通信する場合がある。
各ノード100は、ストレージ・オペレーティング・システム230を実行するデュアル・プロセッサ・ストレージシステムとして実施される場合がある。ストレージ・オペレーティング・システム230は、情報を名前付きのディレクトリ、ファイル、及び、仮想ディスクと呼ばれる特殊なファイル(以後、一般に「ブロック」)の階層構造としてディスク上に論理編成するために、ファイルシステムのような高レベルモジュールを実施することが好ましい。ただし、当業者には明らかなように、ノード100は、場合によっては、1又は3以上のプロセッサシステムを含む場合がある。例えば、一方のプロセッサ210aは、ノード100上のNブレード160の機能を実行し、他方のプロセッサ210bは、Dブレード170の機能を実行する場合がある。
メモリ220は例えば、本発明に関連するソフトウェアプログラムコード、及びデータ構造を格納するために、プロセッサ、及びアダプタによってアドレス指定可能な複数の記憶場所を有する。さらに、プロセッサ、及びアダプタは、そのソフトウェアコードを実行し、データ構造を操作するように構成された処理要素、及び/又は論理回路を含む場合がある。ストレージ・オペレーティング・システム230は、その一部が通常、メモリに常駐し、処理要素によって実行され、とりわけ、ノード100によって実施されるストレージサービスを支援するストレージ・オペレーションを実施することにより、ノード100を機能的に編成する。当業者には明らかなように、本明細書に記載する本発明に関わるプログラム命令の記憶、及び実行には、他の処理手段や、種々のコンピュータ読み取り可能媒体を含む他の記憶手段を使用することも可能である。
ネットワークアダプタ240は、ポイント・ツー・ポイントリンク、ワイド・エリア・ネットワーク、公共ネットワーク(インターネット)上で実施される仮想私設ネットワーク、又は共有ローカル・エリア・ネットワークを介して、ノード100を1以上のクライアント110に接続するように構成された複数のポートを備える。したがって、ネットワークアダプタ240は、ノード100を接続システム120のネットワークに接続するために必要とされる機械的、電気的、及び信号的回路を含む場合がある。例えば、接続システム120は、イーサネット・ネットワーク、またはファイバ・チャネル(FC)ネットワークとして実施される場合がある。各クライアント110は、TCP/IPのような所定のプロトコルにしたがってデータフレーム、またはデータパケットをやりとりすることにより、接続システム120を介してノード100と通信することができる。
ストレージアダプタ280は、ノード100上で実行されるストレージ・オペレーティング・システム230と協働し、クライアント110により要求された情報を取得する。情報は、ビデオテープ、光学媒体、DVD、磁気テープ、バブルメモリ、電気的ランダム・アクセス・メモリ、MEMSデバイス、及び、データやパリティ情報のような情報を記憶するように構成された他の任意の同様の媒体といった、書き込み可能なストレージデバイス媒体の任意のタイプのアタッチド・アレイ上に記憶される場合がある。ただし、本明細書に記載するように、この情報は、ディスクアレイ140のディスク150上に格納されることが好ましい。ストレージアダプタ280は、従来の高性能ファイバチャネル(FC)リンクトポロジのようなI/O相互接続構成を介してディスク150に接続するための入出力(I/O)インタフェース回路を有する複数のポートを備える。
ディスクアレイ140への情報の記憶は、1以上のストレージ「ボリューム」として実施されることが好ましく、ボリュームは一群の物理的記憶装置150を含み、それらが協働して、ボリューム上のボリュームブロック番号(vbn)空間の全体的論理配置を規定する。各論理ボリュームは通常、必須ではないが、そのボリューム独自のファイルシステムに関連する。論理ボリューム/ファイルシステム中のディスクは通常、1以上のグループに編成され、各グループは、RAID(Redundant Array of Independent Disk)として運用される場合がある。RAID−4実施形態のような大半のRAID実施形態は、RAIDグループ中の所与の数の物理的ディスクにわたってデータ「ストライプ」を冗長書き込みし、そのストライプ状データに関するパリティ情報を適切に記憶することによって、データ記憶の信頼性/完全性を向上させる。RAID実施形態の一例はRAID−4レベル実施形態であるが、他のタイプ、及びレベルのRAID実施形態を本明細書に記載する本発明の原理にしたがって使用することも可能である。なお、当然ながら、本発明の例示的実施形態に関し、そのようなデータ「ストライプ」は、複数のストレージシステムにわたってデータの塊(データチャンク)として分散された割り当て済みデータとは異なる。例示的実施形態の「ストライプ状データ」については、図13Aを参照して後で詳しく説明する。
ストレージ・オペレーティング・システム230によれば、ディスク150へのアクセスが容易になる。具体的には、ストレージ・オペレーティング・システム230は、write−anywhereファイルシステムを実施する。このファイルシステムは、1以上の仮想化モジュールと協働し、ディスク150によって提供される記憶空間を「仮想化」する。このファイルシステムは、情報を名前付きのディレクトリ、及びファイルの階層構造としてディスク上に論理編成する。「ディスク上」の各ファイルは、データのような情報を格納するように構成された一組のディスクブロックとして実施される一方、ディレクトリは、特殊なフォーマットのファイルとして実施され、その中に、他のファイルやディレクトリの名前、及びそれらへのリンクが格納される場合がある。仮想化モジュール(複数の場合もあり)によれば、ファイルシステムは、情報をブロックの階層構造としてディスク上に論理編成し、それらを名前付きの論理ユニット番号(LUN)としてエキスポートすることが可能になる。
例示的実施形態として、ストレージ・オペレーティング・システム230は、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているData ONTAPオペレーティングシステムであることが好ましい。このファイルシステムは、Write anywhere File Layout(WAFL)ファイルシステムを実施する。ただし、当然ながら、任意の適当なオペレーティングシステムを本明細書に記載する本発明の原理にしたがって使用するように拡張してもよい。したがって、「WAFL」という用語を使用した場合でも、この用語は、本発明の教示に適合する任意のストレージ・オペレーティング・システムを指すものとして広い意味で解釈しなければならない。
図3は、本発明の一実施形態とともに使用される例示的ストレージ・オペレーティング・システム230を示す図である。ストレージ・オペレーティング・システム230は、統合ネットワークプロトコルスタック、すなわち、より具体的には、ノードに格納された情報をクライアントがブロックアクセスプロトコル、及びファイルアクセスプロトコルを使用してアクセスするためのデータパスを提供するマルチプロトコル・エンジンを形成するように編成された一連のソフトウェア層を含む。マルチプロトコル・エンジンは、IP層314、並びにそれを支援する搬送機構であるTCP層316、及びユーザ・データグラム・プロトコル(UDP)層315のようなネットワークプロトコル層に対するインタフェースを提供するネットワークドライバ(例えば、ギガビット・イーサネット・ドライバ)のメディアアクセス層312を含む。ファイルシステムプロトコル層は、マルチプロトコルファイルアクセスを提供し、その目的のために、ダイレクト・アクセス・ファイル・システム(DAFS)プロトコル318、NFSプロトコル320、CIFSプロトコル322、及びハイパー・テキスト・トランスファ・プロトコル(HTTP)プロトコル324をサポートする。VI層326は、VIアーキテクチャを実施し、DAFSプロトコル3218に必要とされるRDMAのようなダイレクト・アクセス・トランスポート(DAT)機能を提供する。iSCSIドライバ層328は、TCP/IPネットワークプロトコル層を介したブロックプロトコルアクセスを提供する一方、FCドライバ層330は、ノードに対するブロックアクセス要求や応答の送受信を行う。FCドライバ、及びiSCSIドライバは、ブロックに対するFC固有の、及びiSCSI固有のアクセスコントロールを提供し、したがって、ノード100上のブロックをアクセスするときに、iSCSIとFCPのいずれか一方、または両方へのLUNのエキスポートを管理する。
さらに、ストレージ・オペレーティング・システム230は、ノード100のディスク150上に格納された情報をアクセスするためのデータパスを提供するストレージサーバ356を形成するように編成された一連のソフトウェア層を含む。その目的のために、ストレージサーバ365は、ボリューム1、ボリューム2、及びボリュームNのような任意数のボリュームを編成するファイルシステムモジュール360、並びに、RAIDシステムモジュール380、及びディスクドライバシステムモジュール390を含む。ファイルシステム360のボリューム・ストライピング・モジュール(VSM:図示せず)は、図10を参照して後で詳しく説明されるストライピングされたボリュームセット(SVS)を実施する。VSMは、ファイルシステム360と協働し、ストレージサーバ365が、SVSのボリュームを提供できるようにする。特に、VSMは、SVSボリューム上のデータコンテナの中身の位置を計算し、それによって、クラスタにより提供されるそのような中身の整合性を確保する。RAIDシステム380は、I/Oオペレーションによるボリューム/ディスクに対する情報の記憶、及び取り出しを管理し、ディスクドライバシステム390は、例えばSCSIプロトコルのようなディスクアクセスプロトコルを実施する。
ファイルシステ360は、例えば仮想ディスク(vdisk)モジュール(図示せず)として実施される1以上の仮想化モジュール、及びSCSIターゲットモジュール335と通信することにより、ストレージ・オペレーティング・システム230の仮想化システムを実施する。vdiskモジュールは、ユーザ(システム管理者)がノード100に対して発行したコマンドに応答して、管理フレームワーク910(図9参照)のユーザインタフェースによるアクセスを可能にする。SCSIターゲットモジュール335は一般に、iSCSIドライバ330、FCドライバ328と、ファイルシステム360との間に配置され、ブロック(LUN)空間とファイルシステム空間の間の、仮想化システムの変換層を提供する。その際、LUNはブロックとして表現される。
ファイルシステム360は、例えば、ディスク150のような記憶装置に格納された情報をアクセスするために使用される論理ボリューム管理機能を提供するメッセージベースのシステムである。すなわち、ファイルシステム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が、間接ブロックを参照し、さらに、ファイルのデータブロックを参照する場合がある。
動作として、クライアント110からの要求は、接続システム120を介してパケットとしてノード100へ転送され、そこで、その要求は、ネットワークアダプタ240によって受信される。(層312、又は層330の)ネットワークドライバは、そのパケットを処理し、必要であれば、それをネットワークプロトコル層、及びファイルアクセス層に渡し、さらなる処理を施してから、それをwrite−anywhereファイルシステム360へ転送する。そして、ファイルシステムは、要求されたデータが「コア内」になければ、すなわち、メモリ220上になければ、そのデータをディスク150からロードする(読み出す)ためのオペレーションを生成する。情報がメモリ220上になければ、ファイルシステム360は、inode番号を使用してinodeファイル内を検索し、適当なエントリにアクセスし、論理vbnを取得する。次にファイルシステムは、その論理vbnを含むメッセージ構造をRAIDシステムに渡す。そして、その論理vbnは、ディスク識別子、及びディスクブロック番号(ディスク、dbn)に変換され、ディスクドライバシステム390の適当なドライバ(例えば、SCSI)に送られる。ディスクドライバは、指定されたディスク150からそのdbnをアクセスし、要求されたデータブロック(複数の場合もあり)をメモリ上にロードし、そのinodeによって処理させる。要求に対する処理が完了すると、ノード(及び、オペレーティングシステム)は、接続システム120を介してクライアント110に応答を返す。
なお、ノードで受信されたクライアント要求に対してデータストレージアクセスを実施するために必要とされる上記のストレージ・オペレーティング・システム層を貫通するソフトウェア「パス」は、代わりに、ハードウェアで実施してもよい。つまり、本発明の代替実施形態では、ストレージアクセス要求データパスは、フィールド・プログラマブル・ゲート・アレイ(FPGA)や特定用途向け集積回路(ASIC)の中に実現される論理回路として実施される場合がある。この種のハードウェア実施形態によれば、クライアント110が発行した要求に応答してノード100によって提供されるサービスの性能を向上させることができる。また、本発明のさらに別の実施形態によれば、アダプタ240、280の処理要素は、プロセッサ210a,bからそれぞれパケット処理オペレーションやストレージ・アクセス・オペレーションの負荷の一部またはすべてを取り除くように構成される場合があり、それによって、ノードにより提供されるストレージサービスの性能が改善される場合がある。当然ながら、本明細書に記載する種々のプロセス、アーキテクチャ、及び手順は、ハードウェアで実施しても、ファームウェアで実施しても、ソフトウェアで実施してもよい。
本明細書では、「ストレージ・オペレーティング・システム」という用語は通常、データアクセスを管理するストレージ機能を実施するためにコンピュータ上で動作するコンピュータ実行可能コードを意味し、ノード100の場合、このコードは、汎用オペレーティングシステムのデータアクセス・セマンティックを実施する場合がある。また、ストレージ・オペレーティング・システムは、マイクロカーネルとして実施したり、UNIXやWindows NTのような汎用コンピュータ上で動作するアプリケーションプログラムとして実施することもでき、また、本明細書に記載されるようなストレージアプリケーションのために構成された構成変更機能を備えた汎用オペレーティングシステムとして実施することもできる。
さらに、当業者には分かるように、本明細書に記載する発明は、ストレージシステムとして実施され、またはストレージシステムを含むスタンドアロンのコンピュータやその一部を含めて、任意のタイプの特殊目的(例えば、ファイルサーバ、ストレージサービスを提供する装置など)、または汎用コンピュータに適用することができる。

また、本発明の教示は、限定はしないが、例えば、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、及び、クライアント又はホストコンピュータに直接取り付けられたディスクアセンブリのような、種々のストレージシステム・アーキテクチャに適合させることができる。したがって、「ストレージシステム」という用語は、ストレージ機能を実施するように構成され、他の装置又はシステムに関連する任意のサブシステムだけでなく、そのような構成も含むものとして広い意味で捉えなければならない。なお、本明細書の説明は、write anywhereファイルシステムに関するものとなっているが、本発明の教示は、write in−placeフィルシステムを含めて、任意の適当なファイルシステムに採用することが可能である。
一実施形態として、ストレージサーバ365は、ディスクアレイ140の1以上のボリュームを提供するストレージ・オペレーティング・システムのDブレード170として実施される。また、マルチプロトコル・エンジン310はNブレード160として実施され、(1)接続システム120を介して到来するクライアントが発行したデータアクセス要求パケットに対し、プロトコルターミネーションを実施するとともに、(2)それらのデータアクセス要求をクラスタの任意のストレージサーバ365へリダイレクトする。さらに、Nブレード160とDブレード170は協働し、本発明の例示的実施形態を実現するクラスタ化コンピューティング環境の、高いスケーラビリティを有する分散ストレージシステム・アーキテクチャを提供する。その目的のために、各ブレードは、本明細書に記載するデータコンテナストライピングのためのDブレード間通信を含む、ブレード間におけるクラスタ内通信を実施するように構成されたクラスタ・ファブリック(CF)モジュール340a、340bを含む。
Nブレード160の例えばNFS/CIFS層やiSCSI/FC層のようなプロトコル層は、クライアントからのファイルベースのデータアクセス要求やブロックベースのデータアクセス要求を、Dブレード170との通信に使用されるCFプロトコルメッセージ370に変換するプロトコルサーバとして機能する。すなわち、Nブレードサーバは、クラスタのDブレード170への伝送に使用されるCFインタフェースモジュール340により、到来したデータアクセス要求を、CFプロトコルメッセージ370に埋め込まれたファイルシステム・プリミティブ・オペレーション(コマンド)に変換する。特に、複数のCFインタフェースモジュール340が協働し、クラスタ内のすべてのDブレード170にわたる単一のファイルシステムイメージを提供する。したがって、クライアント要求を受信するNブレード160のネットワークポートはすべて、クラスタの任意のDブレード170上にある単一のファイルシステム中のいずれのデータコンテナにもアクセスすることができる。
例示した実施形態では、詳しくは、Nブレード160とDブレード170は、ストレージ・オペレーティング・システム230の個別にスケジューリングされるプロセスとして実施される。ただし、代替実施形態では、それらのブレードは、単一のオペレーティングシステムプロセス中のコード片として実施される場合もある。したがって、NブレードとDブレードの間の通信は、例えば、それらのブレード間で受け渡しされるメッセージの使用により影響を受ける場合がある。ただし、異なるノードにあるNブレードとDブレードの間のリモート通信の場合、そのようなメッセージの受け渡しは、クラスタ切り替え装置130を介して行われる。ブレード(プロセス)間で情報を転送するためにストレージ・オペレーティング・システムによって提供される既知のメッセージ受け渡しメカニズムの1つは、プロセス間通信(IPC)メカニズムである。IPCとともに使用されるプロトコルの例は、CFアプリケーション・プログラミング・インタフェース(API)を構成する一群の方法/機能を含む汎用のファイル、及び/又はブロックベースの「不可知論的」CFプロトコルである。そのような不可知論的プロトコルの例には、例えば、ネットワーク・アプライアンス・インコーポレイテッドから市販されているSpinFSプロトコルやSpinNPプロトコルがある。SpinFSプロトコルについては、上で参照した米国特許出願公開公報第US2002/0116593号に記載されている。
CFインタフェースモジュール340は、クラスタのブレード間でファイルシステムコマンドをやりとりするためのCFプロトコルを実施する。通信は例えば、Nブレード(または、他のDブレード)がコールを発行する宛先となるCF APIを露出しているDブレードによって影響を受ける。その目的のために、CFインタフェースモジュール340は、CFエンコーダ、及びCFデコーダとして編成される。Nブレード160上の例えばCFインタフェース340aのCFエンコーダは、(1)同じノード100上のDブレード170にファイルシステムコマンドを伝送する場合、CFメッセージをローカル・プロシージャ・コール(LPC)としてカプセル化し、あるいは(2)クラスタのリモートノードにまるDブレードにファイルシステムコマンドを伝送する場合、CFメッセージをリモート・プロシージャ・コール(RPC)としてカプセル化する。いずれの場合も、Dブレード350上のCFインタフェース340bのCFデコーダは、そのCFメッセージのカプセル化を解除し、ファイルシステムコマンドを処理する。
図4Aは、本発明の一実施形態による、クラスタ・ファブリック(CF)・プロトコル・メッセージ370のフォーマットを示す図である。CFプロトコルメッセージ370は、CFメッセージと呼ばれることもあり、例えば、クラスタのリモートブレード間における、クラスタ切り替え装置130を介したRPC通信に使用される場合がある。ただし、「CFメッセージ」という用語は、一般に、クラスタのブレード間におけるLPC通信、及びRPC通信を指して使用されるものと考えるべきである。CFメッセージ370は、メディアアクセス層402、IP層404、UDP層406、信頼性の高い接続(RC)層408、及びCFプロトコル層410を含む。上記のように、CFプロトコルは、クラスタ化環境に格納されたデータコンテナをアクセスするためのクライアント要求の中に含まれるオペレーションに関連するファイルシステムコマンドを運ぶ汎用ファイルシステムプロトコルである。CFプロトコル層410は、CFメッセージ370のそれらのファイルシステムコマンドを有する部分である。例えば、CFプロトコルは、データグラムに基づくものであり、したがって、メッセージ、または「エンベロープ」を信頼性の高い態様でソース(例えば、Nブレード160)から宛先(例えば、Dブレード170)へ伝送しなければならない。RC層408は、そうしたエンベロープをUDP406のようなコネクションレスのプロトコルにしたがって処理するように構成された信頼性の高いトランスポートプロトコルを実施する。
図4Bは、本発明の一実施形態による、データコンテナハンドル400のフォーマットの詳細を示す図である。具体的には、例えばファイルのような、ファイルシステム中のデータコンテナは、データコンテナハンドルを使用してアクセスされる。データコンテナハンドル400は、SVS IDフィールド420、inode番号フィルド430、一意の識別子フィールド440、ストライプ化フラグフィールド450、及びストライピング・エポック番号フィールド460を含む。SVS IDフィールド420は、SVSの(クラスタ内の)グローバル識別子であり、その中に、データコンテナがある。inode番号フィールド430は、データコンテナに関連する(inodeファイル中の)inodeのinode番号を有する。一意の識別子フィールド440は、データコンテナハンドル400を一意に識別する単調増加番号を有する。一意の識別子は、inode番号が削除され、再使用され、新たなデータコンテナに再割り当てされている場合に、特に有用である。一意の識別子は、特定のデータコンテナ中のその再使用されたinode番号を、それらのフィールドで以前使用された可能性があるものから区別する。ストライプ化フラグフィールド450は、データコンテナ400がストライピングされているか否かを識別するブール値である。また、SVSが異なるデータコンテナ400に異なるデータストライピング技術を使用する実施形態の場合、ストライピング・エポック番号フィールド460は、このデータコンテナとともに使用される適当なストライピング技術を示す。クラスタ化コンピューティング環境のノード100間で有利にロードバランスをとることが可能なストライピング技術の一例は、ラウンドロビン・ロードバランシング技術である。なお、当然ながら、ラウンドロビンは、純粋な例であり、クラスタ内のロードバランスをとることが可能なストライピング技術であれば、他のストライピング技術を使用することも可能である。
Dブレード170のファイルシステム360によって編成されるボリュームは、集合体としてさらに編成される。図5は、本発明の一実施形態による、集合体500の例を示す図である。LUN(ブロック)502、ディレクトリ504、qtree506、及びファイル508は、デュアルvbnフレキシブルボリュームのようなボリューム510の中に格納され、さらに集合体500に格納される場合がある。集合体500は、例えば、RAIDシステム380の最上部に層として形成され、RAIDシステム380は、少なくとも1つのRAIDプレックス550によって表わされ(ストレージ構成がミラーリングされているか否かに応じて)、各プレックス550は、少なくとも1つのRAIDグループ560を含む。各RAIDグループは、複数のディスク150を含み、例えば、1以上のデータ(D)ディスクと、少なくとも1つのパリティ(P)ディスクとを含む場合がある。
集合体500は、従来のストレージシステムの物理ボリュームに似ている一方、フレキシブルボリュームのようなボリューム510は、その物理ボリューム内のファイルに似ている。つまり、集合体500は1以上のファイルを含み、各ファイルはフレキシブルボリュームを含み、それらのフレキシブルボリュームによって消費される記憶空間の合計は、物理ボリューム全体のサイズよりも物理的に小さい(または、それに等しい)。集合体500は、「物理的」pvbn空間を使用して、物理ボリュームによって提供されるブロックの記憶空間を規定する一方、(ファイル中の)各埋め込みフレキシブルボリュームは、「論理的」vvbn空間を使用して、ファイルのようなそれらのブロックを編成する。各vvbn空間は、ファイル内の複数の位置に対応する独立した一組の番号であり、その後、それらの位置は、ディスク上のdbnに変換される。フレキシブルボリュームは論理ボリュームでもあるため、フレキシブルボリュームは、自分のvvbn空間内に独自のブロックアロケーション構造(例えば、アクティブマップ、空間マップ、及び概要マップ)を有する。
コンテナファイルは、フレキシブルボリュームによって使用されるすべてのブロックを含む、集合中のファイルである。コンテナファイルは、フレキシブルボリュームを支援する(集合体の)内部機能であり、例えば、1つのフレキシブルボリュームあたり、1つのコンテナファイルが存在する。ファイルアプローチにおける純粋な論理ボリュームと同様に、コンテナファイルもまた、集合体中の隠しファイル(ユーザがアクセスできない)であり、そのフレキシブルボリュームによって使用されているあらゆるブロックを保持する。集合体は例えば、WAFL/fsid/ファイルシステムファイル、ストレージラベルファイルといった、フレキシブルボリュームのサブディレクトリを有する隠しメタデータルートディレクトリを含む。
具体的には、物理ファイルシステム(WAFL)ディレクトリは、集合体中の各フレキシブルボリュームについてサブディレクトリを有し、サブディレクトリの名前は、フレキシブルボリュームのファイルシステム識別子(fsid)になっている。各fsidサブディレクトリ(フレキシブルボリューム)は、少なくとも2つのファイル、すなわち、ファイルシステムファイル、及びストレージラベルファイルを含む。ストレージラベルファイルは、例えば、従来のRAIDラベルに格納されるものと同様のメタデータを有する。言い換えれば、ストレージラベルファイルは、RAIDラベルに似たものであり、したがって、例えば、フレキシブルボリュームの名前、フレキシブルボリュームの世界的に一意な識別子(uuid)、及びfsid、並びに、フレキシブルボリュームがオンラインであるか、作成中であるか、破壊中であるかなど、フレキシブルボリュームに関する情報を有する。
一実施形態として、データコンテナは、ディスク150への格納に適したinodeデータ構造としてwrite−anywhereファイルシステム上に表現される。inode(図示せず)は、メタデータ部(図示せず)、及びデータ部(図示せず)を有する。各inodeのメタデータ部に格納される情報は、データコンテナ(例えば、ファイル)を表わし、したがって、ファイルのタイプ(例えば、通常、ディレクトリ、vdiskなど)、ファイルのサイズ、タイムスタンプ(例えば、アクセス時刻、及び/又は変更時刻)、及び、ファイルの所有者、すなわち、ユーザ識別子(UID)、及びグループID(GID)を含む。また、メタデータ部は、生成番号、及びメタデータ無効フラグフィールドをさらに有する。後で詳しく説明するように、メタデータ無効フラグフィールドは、そのinode中のメタデータが使用可能であるか否か、すなわち、そのメタデータをMDV(図10参照)から再取得しなければならないか否かを示すために使用される。各inodeのデータ部の中身は、タイプフィールドに規定されたファイル(inode)のタイプに応じて、異なる解釈をされる場合がある。例えば、ディレクトリinodeのデータ部は、ファイルシステムによってコントロールされるメタデータを有する一方、通常inodeのデータ部は、ファイルシステムデータを有する。後者の場合、データ部は、そのファイルに関連するデータの表現を含む。
具体的には、通常のディスク上のinodeのデータ部は、ファイルシステムデータ、またはポインタを有し、後者は、ファイルシステムデータの格納に使用される4kBデータブロックを参照する。ディスク上のデータをアクセスするときのファイルシステムとRAIDシステム380の間の効率を高めるために、各ポインタは、論理vbnであることが好ましい。inodeのサイズが限られている場合(例えば、128バイト)、64バイト以下のサイズのファイルシステムデータは、その全体が、そのinodeのデータ部の中に表現される。一方、データコンテナの長さが64バイトよりも大きく、且つ、64kB以下である場合、そのinodeのデータ部(例えば、第1レベルinode)は、最大で16個のポインタを有し、各ポインタが、ディスク上の4kBデータブロックを参照する。
また、データのサイズが64kBよりも大きく、且つ、64メガバイト(MB)以下である場合、そのinode(例えば、第2レベルinode)のデータ部中の各ポインタは、1024個のポインタを有する間接ブロック(例えば、第1レベルL1ブロック)を参照し、各ポインタが、ディスク上の4kBデータブロックを参照する。64MBよりも大きなファイルシステムデータの場合、そのinode(例えば、第3レベルL3inode)は、1024個のポインタを有する二重間接ブロック(例えば、第2レベルL2ブロック)を参照し、各ポインタが、間接(例えば、第1レベルL1)ブロックを参照する。さらに、その間接ブロックは1024個のポインタを有し、各ポインタが、ディスク上の4kBデータブロックを参照する。ファイルをアクセスする場合、そのファイルの各ブロックは、ディスク150からメモリ220へロードされる場合がある。
ディスク上のinode(または、ブロック)が、ディスク150からメモリ220へロードされるとき、それに対応するコア内構造が、そのオンディスク構造に埋め込まれる。このコア内構造は、そのオンディスク構造と、メモリ上(かつディスク上にはない)のデータを管理するために必要とされる補助的情報とを格納する。この捕縄的情報には、例えば、「ダーティ」ビットがある。例えば書き込みオペレーションによる命令にしたがって、inode(または、ブロック)内のデータが更新/変更された後、その変更されたデータは、ダーティビットを使用して「汚れたもの」としてマーキングされ、そのinode(ブロック)を直ぐにディスクへ「フラッシュ」(格納)することができるようになる。inode、及びinodeファイルを含む、このWAFLファイルシステムのコア内フォーマット構造、及びオンディスク・フォーマット構造については、1998年10月6日に発行されたDavit Hitz他による「METHOD FOR MAINTAINING CONSISTENT STATES OF A FILE SYSTEM AND FOR CREATING USER-ACCESSIBLE READ-ONLY COPIES OF A FILE SYSTEM」と題する、上で援用した米国特許第5,819,292号に開示、及び記載されている。
図6Aは、本発明の一実施形態による、バッファ・ツリーの例を示す図である。具体的には、バッファ・ツリーは、メモリ220内にロードされ、write−anywhereファイルシステム360によって管理されるファイル(例えば、ファイル600)のブロックの内部表現である。埋め込みinodeのようなルート(トップレベル)inode602は、間接(例えば、レベル1)ブロック604を参照する。なお、ファイルのサイズによっては、さらに別のレベル(例えば、レベル2やレベル3)の間接ブロックが存在する場合もある。間接ブロック(及び、inode)は、ファイルの実際のデータの格納に使用されるデータブロック606を最終的に参照するポインタ605を有する。すなわち、ファイル600のデータは、データブロックに格納され、それらのブロックの位置が、そのファイルの間接ブロックに格納される。各レベル1間接ブロック604は、1024個ものデータブロックへポインタを有する場合がある。ファイルシステムの「write anywhere」な性質によれば、それらのブロックは、ディスク150上のどこに置かれる場合もありうる。
基礎となる物理ボリュームをノード100のようなストレージシステムの1以上の仮想ボリューム(または、フレキシブルボリューム)の中に分散させるファイルシステムレイアウトが使用される。そのようなファイルレイアウトの一例は、John K. Edwards他により出願され、ネットワーク・アプライアンス・インコーポレイテッドに譲渡された、「EXTENSION OF WRITE ANYWHERE FILE SYSTEM LAYOUT」と題する米国特許出願第10/836,817号に記載されている。基礎となる物理ボリュームは、ノード100のRAIDグループのような1以上のグループのディスクを含む集合体500である。集合体500は、その集合体独自の物理ブロック番号(pvbn)空間を有し、そのpvbn空間の中で、ブロックアロケーション構造のようなメタデータを管理する。各フレキシブルボリュームは、そのボリューム独自の仮想ボリュームブロック番号(vvbn)空間を有し、そのvvbn空間の中で、ブロックアロケーション構造のようなメタデータを管理する。各フレキシブルボリュームは、コンテナファイルに関連するファイルシステムであり、コンテナファイルは、フレキシブルボリュームによって使用されるすべてのブロックを有する、集合体中のファイルである。また、各フレキシブルボリュームは、データブロック、及び、他の間接ブロック、またはデータブロックを指し示すブロックポインタを有する間接ブロックを含む。
一実施形態において、pvbnは、フレキシブルボリュームに格納される(ファイル600のような)ファイルのバッファ・ツリー内で、ブロックポインタとして使用される。この「ハイブリッド」フレキシブルボリューム実施形態では、pvbnを親間接ブロック(例えば、inode、または間接ブロック)に挿入することしか必要としない。論理ボリュームの読み出しパスにおいて、「論理」ボリューム(vol)infoブロックは、1以上のfsinfoブロックを参照する1以上のポインタを有し、各fsinfoブロックは、さらに、inodeファイル、及びそれに対応するバッファ・ツリーを指し示す。ブロックの適当な位置を見付けるためのpvbn(vvbnではなく)と同様に、フレキシブルボリューム上の読み出しパスは通常、同じである。この文脈において、フレキシブルボリュームの読み出しパス(及び、対応する読み出し性能)は、物理ボリュームのものと実質的に同じである。pvbnからディスク、dbnへの変換は、ストレージ・オペレーティング・システム230のファイルシステム/RAIDシステム境界において行われる。
例示的なデュアルvbnハイブリッド・フレキシブルボリューム実施形態では、pvbnとそれに対応するvvbnが、ファイルのバッファ・ツリー中の親間接ブロックに挿入される。すなわち、例えば、レベル1(L1)間接ブロックやinodeファイルレベル0(L0)ブロックのような他のブロックへのポインタを有する大半のバッファツリー構造では、各ブロックポインタについて、pvbnとvvbnがペアとして格納される。図6Bは、本発明の一実施形態による、バッファツリーの他の例を示す図である。埋め込みinodeのようなルート(トップレベル)inode622は、間接(例えば、レベル1)ブロック624を参照する。なお、ファイルのサイズによっては、更に別のレベル(例えば、レベル2やレベル3)の間接ブロックが存在する場合もある。そうした間接ブロック(及び、inode)は、そのファイルの実際のデータの格納に使用されるデータブロック606を最終的に参照するpvbn/vvbnポインタ対構造625を有する。
pvbnは、集合体のディスク上の位置を参照する一方、vvbnは、フレキシブルボリュームのファイル内の位置を参照する。間接ブロック624におけるブロックポインタ625のようなpvbnの使用は、読み出しパス上の効率を提供する一方、vvbnブロックポインタの使用は、要求されたメタデータへ効率的なアクセスを提供する。すなわち、ファイルのあるブロックを開放するとき、そのファイル中の親間接ブロックは、すぐに利用可能なvvbnブロックポインタを有し、それによって、pvbnからvvbnへの変換を実施するための所有者マップへのアクセスにともなう遅延を回避することができ、それでも、読み出しパス上で、pvbnを利用することができる。
図7は、本発明の一実施形態による、集合体500のディスク上のレイアウトの例を示す図である。例えば、RAIDシステム380のようなストレージ・オペレーティング・システム230は、集合体500を作成するために、pvbnの物理ボリュームを組み立てる。その際、pvbn1と2は、集合体500の「物理」volinfoブロック702を含む。volinfoブロック702は、fsinfoブロック704へのブロックポインタを有し、各fsinfoブロック704は、集合体500のスナップショットを表わす場合がある。各fsinfoブロック704は、所有者マップ710、アクティブマップ712、概要マップ714、及び空間マップ716、並びに他の特殊なメタデータファイルを含む複数のファイルのinodeを含むinodeファイル706へのブロックポインタを有する。inodeファイル706は、ルートディレクトリ720、及び「隠し」メタデータルートディレクトリ730をさらに含み、後者は、ユーザがファイルを見ることのできないフレキシブルボリュームに関連するファイルを有する名前空間を含む。隠しメタデータルートディレレクトリはWAFL/fsid/ディレクトリ構造を有し、この構造は、ファイルシステムファイル740、及びストレージラベルファイル790を含む。なお、集合体500中のルートディレクトリ720は空であり、集合体500に関連するファイルはすべて、隠しメタデータルートディレクトリ730の中に編成される。
ファイルシステム740は、コンテナマップとして編成されるレベル1ブロックを有するコンテナファイルとして実施される他に、フレキシブルボリューム750として実施される種々のファイルシステムを参照するブロックポインタも有する。集合体500は、それらのフレキシブルボリューム750を特殊な予約済みinode番号に維持する。また、各フレキシブルボリューム750は、自分のフレキシブルボリューム空間の中に、特殊な予約済みinode番号を更に有し、それらが、とりわけ、ブロックアロケーション・ビットマップ構造のために使用される。上記のように、例えば、アクティブマップ762、概要マップ764、及び空間マップ766のようなブロックアロケーション・ビットマップ構造が、各フレキシブルボリュームに配置される。
具体的には、各フレキシブルボリューム750は、集合体と同じinodeファイル構造/コンテンツを有する。ただし、隠しメタデータルートディレクトリ780中に、所有者マップやWAFL/fsid/ファイルシステムファイル、ストレージラベルファイルディレクトリ構造は存在しない。その目的のために、各フレキシブルボリューム750は、1以上のfsinfoブロック754を指し示すvolinfoブロック752を有し、各fsinfoブロック754は、そのフレキシブルボリュームのアクティブファイルシステムとともに、スナップショットを表わす場合がある。さらに、各fsinfoブロックはinodeファイル760を指し示し、上記のように、例外を除き、集合体と同じinode構造/コンテンツを有する。各フレキシブルボリューム750は、そのボリューム独自のinodeファイル760、及び、対応するinode番号を有する個別のinode空間を有し、さらに、そのボリューム独自のルート(fsid)ディレクトリ770、及び他のフレキシブルボリュームから個別にエキスポートすることが可能なファイルのサブディレクトリを有する。
集合体の隠しメタデータルートディレクトリ730の中に格納されるストレージラベルファイル790は、従来のRAIDラベルと同様の働きをする小さなファイルである。RAIDラベルは、ボリューム名のような、ストレージシステムに関する物理的情報を有し、その情報は、ストレージラベルファイル790の中にロードされる。例えば、ストレージラベルファイル790は、関連フレキシブルボリューム750の名前792、フレキシブルボリュームのオンライン/オフラインステータス794、並びに、関連フレキシブルボリュームの他の識別情報(ID)、及びステータス情報796(そのボリュームが作成中であるか、破壊中であるか)を含む。
一実施形態として、各ノード100のNブレード160は、データコンテナハンドル400のSVS ID420をクラスタ化コンピューティング環境内にあるそのデータコンテナを「所有」しているDブレード170にマッピングする設定テーブル260にアクセスする。ボリューム位置データベース(VLDB)は、ノード100のボリューム、及び集合体の位置を追跡記録する機能を有する。具体的には、VLDBは、設定テーブル260中のエントリの中身を提供する複数のエントリを有し、とりわけ、それらのVLDBエントリは、クラスタ化・コンピューティング環境中のフレキシブルボリューム(以後、一般に「ボリューム510」)、及び集合体500の位置を追跡記録する。図8Aは、本発明の一実施形態による、例示的なVLDBボリュームエントリ810を示す図である。また、図8Bは、本発明の一実施形態による、例示的なVLDB集合体エントリ850を示す図である。したがって、VLDBエントリの例には、VLDBボリュームエントリ810とVLDB集合体エントリ850がある。
図8AのVLDBエントリ810は、ボリュームIDフィールド805、集合体IDフィールド815を有し、代替実施形態では、さらに別のフィールド820を有する場合がある。ボリュームIDフィールド805は、ボリューム探索プロセスにおいて、ボリューム510を識別するIDを格納する。集合体IDフィールド815は、ボリュームIDフィールド805によって識別されるボリュームを含む集合体500を識別する。同様に、図8Bは、VLDB集合体エントリ850の例を示している。VLDB集合体エントリ850は、集合体IDフィールド855、及びDブレードIDフィールド860を有し、代替実施形態では、さらに別のフィールド865を有する場合がある。集合体IDフィールド855は、クラスタ化コンピューティング環境中の特定の集合体500のIDを有する。DブレードIDフィールド860は、集合体IDフィールド855によって識別されるその特定の集合体を有するDブレード170のIDを有する。
VLDBは、例えばSun RPCインタフェースのようなRPCインタフェースを実施し、それによって、Nブレード16はがVLDBに問い合わせすることができる。Nブレード160は、自分の設定テーブルに格納されていないデータコンテナハンドル400のコンテンツに遭遇すると、図9を参照して説明したように、RPCをVLDBプロセスに対して送信する。これに応答して、VLDBプロセスは、そのデータコンテナを所有するDブレードのIDを含む適当なマッピング情報をNブレード160に返す。Nブレード160は、その情報を自分の設定テーブル260上にキャッシュし、DブレードID860を使用して、その到来した要求を適当なデータコンテナに転送する。Nブレード160、及びDブレード170の機能、及びそれらの間の通信はすべて、後で詳しく説明するように、一群の管理プロセス、及びRDBライブラリ・ユーザモード・アプリケーションによってクラスタ幅ごとに調整される。
本発明は、クラスタ化コンピューティング環境の複数のノード100にわたって分散された1以上のボリューム510を含むストレージアーキテクチャに関する。ボリューム510は、SVSとして編成され、クライアント110によって発行されたマルチプロトコル・データアクセス要求に応答してクラスタにより提供されるファイルやLUNのようなデータコンテナの中身を記憶するように構成される。特に、各データコンテナの中身は、SVSの複数のボリュームにわたって分散され、それによって、クラスタ化環境により提供されるストレージサービスの効率が向上する。本発明の説明、及び理解を容易にするために、以後、データコンテナは一般に、「ファイル」と呼ばれる。
本発明の一実施形態によれば、SVSは、1つのメタデータボリューム(MDV)、及び1以上のデータボリューム(DV)を含む。MDVは、SVSに格納された全ファイルに関連するアクセス・コントロール・リスト(ACL)やディレクトリのようなメタデータの正規のコピーを格納するように構成され、各DVは、少なくとも、それらのファイルのデータコンテンツを格納するように構成される。SVSに格納される各ファイルについて、1つのボリュームはCAVとして指定され、その目的のために、そのファイルに関連する特定の高速に変化する属性メタデータを格納(「キャッシュ」)するように構成され、それによって、通常ならばMDVに対して発行されるアクセス要求の負荷を軽減する。本明細書に記載する例示的実施形態では、ファイルのCAVの決定は、そのファイルの中身(データ)の最初のストライプをそのファイルのCAVとして指定する、という単純なルールに基づいて行われる。この単純なルールは、便利なだけでなく、小さなファイルに対する最適化も提供する。すなわち、ファイルが指定されたストライプ幅の中に納まるくらい十分に小さい場合、CAVは、SVSの他のボリュームと通信することなく幾つかのオペレーションを実施することができる場合がある。理想的には、ファイルの最初のストライプのデータは、SVSの複数のDVにわたって分散され、それによって、SVSの複数のボリュームにわたるCAV指定の均一な分散が可能になる。代替実施形態では、ファイルのデータは、MDV、及びDVにわたってストライピングされる場合がある。
図9は、本発明の一実施形態による、複数のボリュームにわたってストライピングされた割り当て済みデータを管理するための一群の管理プロセスを示している。これらの管理プロセスは、ユーザモード・アプリケーション900としてストレージ・オペレーティング・システム230上で実行され、クラスタ化コンピューティング環境のノード100の設定情報(すなわち、管理データ)の管理を提供する。その目的のために、管理プロセスは、管理フレームワークプロセス910、及びボリューム位置データベース(VLDB)プロセス960を含み、これらのプロセスがそれぞれ、ライブラリとしてリンクされたデータ複製サービス(RDB950)を使用する。管理フレームワーク910は、ユーザに対し、コマンドラインインタフェース(CLI)、及び/又はウェブベースのグラフィカル・ユーザ・インタフェース(GUI)による管理者970インタフェースを提供する。管理フレームワークは、例えば従来のコモン・インタフェース・モデル(CIM)オブジェクトマネージャに基づくものであり、クラスタの管理のために、ユーザ/システム管理者がノード100と通信するためのエンティティを提供する。VLDBプロセス960は、クラスタ内の種々のストレージコンポーネント(例えば、SVS、フレキシブルボリューム、集合体など)の位置を追跡記録し、それによって、クラスタ全体を通じた要求のルーティングを可能にするデータベースプロセスである。
管理プロセスは、RDB950に対するインタフェースを有する(RDB950に密接に結合される)。RDBは、管理プロセスにより処理される管理データの永久的オブジェクト記憶(オブジェクトの記憶)を提供するライブラリを含む。特に、RDB950は、クラスタの全てのノード100にわたって、管理データオブジェクト記憶アクセスを複製し、同期させ、それによって、すべてのノード100上で、RDBデータベースイメージが同じになるようにする。システム起動時に、各ノード100は、自分のインタフェースのステータス/状態、及びIPアドレス(当該ノードが「保有」するIPアドレス)をRDBデータベースに記録する。
本明細書に記載するストレージシステム・アーキテクチャによれば、複数のSVSオペレーションによって、SVSの複数のボリュームにわたって分散されたファイル(及び、他のデータコンテナ)コンテンツの効率的かつ正確な提供が可能になる。そのようなSVSオペレーションには、とりわけ、ファイル作成、ファイル消去、ファイル属性の読み出し、ファイル属性の書き込み/変更、ファイル読み出し、及びファイル書き込みオペレーションがある。図10は、本発明の一実施形態によるストライピングされたボリュームセット(SVS)1000を示す図である。SVS1000は例えば、3つのボリューム、すなわち、MDV1005、及び2つのDV1010、1015を含む。なお、代替実施形態では、本発明にしたがって、更に別のボリューム、及び/又は異なる数のボリュームが使用される場合もある。例えば、MDV1005は、ルートディレクトリ(RD)inode1020、ディレクトリ(DIR)inode1030、ファイル(F)inode1025、1035、1045、及びACL inode1040のような複数のinodeを格納する。これらのinodeはそれぞれ、例えば、そのinodeに関連するメタデータ(M)を有する。例示的実施形態において、MDV1005上の各inodeは、データ(D)を持たない。ただし、代替実施形態では、MDVは、ユーザデータを有する場合がある。
これに対し、各DV1010、1015は、ファイル(F)inode1025、1035、1045、及びACL inode1040だけを格納する。本発明のアーキテクチャによれば、DVは、ディレクトリや、シンボリックリンクのような他のデバイスinode/構造を格納しない。ただし、各DVは、F inodeを格納し、ACL inodeのキャッシュされたコピーを格納する場合があり、これらは、MDV1005内の対応するinodeと同じ場所に格納される。特定のDVは、inodeに関連するデータコンテナに対するI/O要求が、その特定のDVを提供するDブレードによって受信されるまで、そのinodeのコピーを格納しない場合がある。また、それらのF inodeによって表わされるファイルの中身は、後で詳しく説明するように、SVSストライピング・ルールにしたがって定期的に構文解析される。さらに、SVS1000上に格納された各ファイルについて、1つのボリュームはCAVとして指定され、DV1015はinode1025によって表わされるファイルのCAVとして指定され、DV1010は、inode1035、1045によって識別されるファイルのCAVとして指定される。したがって、それらのCAVは、例えばファイルサイズのような、それらのファイルに関連する特定の高速に変化する属性メタデータ(M)、ならびに、アクセスタイムスタンプ、及び/又は変更タイムスタンプをキャッシュする。
本発明の他の実施形態によれば、SVSは、ストライプ・アルゴリズム、ストライプ幅、及び、SVS中のボリュームの順序付きリストを規定する一組のストライピング・ルールに関連する。各SVSのストライピング・ルールは、例えば、VLDBプロセス960の1つのエントリとして格納され、SVS IDによってアクセスされる。図11は、本発明の一実施形態によるVLDB SVSエントリ1100を示す図である。VLDBエントリ1100は、SVS IDフィールド1105、及び、一組以上のストライピング・ルール1130を含む。代替実施形態では、更に別のフィールド1135を有する場合もある。SVS IDフィールド1105は、SVSのIDを有し、動作時には、それが、データコンテナハンドル400の中に指定される。
各組のストライピング・ルール1130は、例えば、ストライプ幅フィールド1110、ストライプアルゴリズムIDフィールド1115、及びボリュームの順序付きリストフィールド1120を含み、代替実施形態では、さらに別のフィールド1125を含む場合がある。ストライピング・ルール1130は、SVSの編成を識別するための情報を含む。例えば、ストライプアルゴリズムIDフィールド1115は、SVSとともに使用されるストライピング・アルゴリズムを識別する。例示的実施形態では、複数のストライピング・アルゴリズムが、SVSとともに使用される場合がある。したがって、どのアルゴリズムを使用するかを識別するために、ストライプアルゴリズムIDが必要となる。さらに、各ストライピング・アルゴリズムは、ファイル・コンテンツをストライプとしてSVSの複数のボリュームにわたって分散させる態様を指定する。
ストライプ幅フィールド1110は、各ストライプのサイズ/幅を指定する。ボリュームの順序付きリストフィールド1120は、SVSを含むボリュームのIDを有する。一実施形態において、ボリュームの順序付きリストは、フレキシブルボリュームID、及び該フレキシブルボリュームを格納している集合体IDを含む複数のタプルを含む。さらに、ボリュームの順序付きリストは、種々のボリュームの機能や実施形態、及びSVSのストライピング・ルールを指定する場合がある。例えば、順序付きリスト上の最初のボリュームは、SVSのMDVを表わす一方、リスト上のボリュームの順序は、例えばラウンドロビンのような特定のストライピング・アルゴリズムを実施する態様を表わす。
CFメッセージ370を送信する宛先となるDブレード170の位置を判定するために、Nブレード160は、まず、SVSエントリ1100を読み出し、SVSに関連するストライピング・ルール(及び、ボリュームのリスト1120)を取得する。次に、Nブレード160は、Locate()関数(図示せず)のような探索プロセスを実行し、オペレーションの対象となる適当なボリュームを識別する。その後、Nブレード160は、適当なVLDBボリュームエントリ810を読み出し、そのボリュームを格納している集合体を識別するとともに、適当なVLDB集合体エントリを読み出し、適当なDブレード170を最終的に識別する。次に、Nブレード310のプロトコルサーバは、CFメッセージ370をDブレード170に送信する。
図12は、本発明の一実施形態による、SVSのボリュームに格納されるファイル・コンテンツの周期的散在状況を示す図である。散在状況は、SVSのボリュームのストライプが、ファイルコンテンツ、またはデータを有しないことを意味する。ボリュームの例としては、SVS1200のボリュームA1205、B1210、及びC1215がある。上記のように、ファイル・コンテンツは、SVSストライピングルールにしたがって、定期的に分散され、SVSストライピングルールは、ストライピング・アルゴリズム(ストライプアルゴリズムIDフィールド1115によって示される)、及び、各ストライプのサイズ/幅(ストライプ幅フィールド1110によって示される)を指定する。なお、例示的実施形態では、ストライプ幅は、各ストライプが、ファイルの間接ブロック(例えば、レベル1ブロック604)によって参照される実際のデータ(例えば、データブロック606に格納されているようなもの)を確実に収容できるように選択される。
例示的なラウンドロビン・ストライピング・アルゴリズムによれば、ボリュームA1205は、1ストライプのファイル・コンテンツ、又はデータ(D)1220を有し、それに続いて、2ストライプの散在(S)1222、1224、さらに別のストライプのデータ(D)1226、及び2ストライプの散在(S)1228、1230を有する。一方、ボリュームB1210は、1ストライプの散在(S)1232を有し、それに続いて、1ストライプのデータ(D)1234、2ストライプの散在(S)1236、1238、さらに別のストライプのデータ(D)1240、及び1ストライプの散在(S)1242を有する。ボリュームC1215は、ラウンドロビン・ストライピング・パターンを継続し、その目的のために、2ストライプの散在(S)1244、1246を有し、それに続いて、1ストライプのデータ(D)1248、2ストライプの散在(S)1250、1252、及びさらに別のストライプのデータ(D)1254を有する。
図13Aは、本発明の一実施形態による、ストレージシステム・アーキテクチャの複数のボリュームにわたって分散されるデータのアロケーションを示す図である。当然ながら、ストライピングされたデータを割り当てるための本発明の実施形態によれば、クラスタ化コンピューティング環境内で、可変長の任意数のボリュームを実施することができる。具体的には、各ノード100に1つのボリュームが割り当てられ、各ノード100は、クラスタ化コンピューティング環境のストレージシステムであり、1つのノード100に対して任意数のボリュームを割り当てることができる。例えば、複数のノード100が、クラスタ切り替え装置130を介して互いに通信する場合がある。具体的には、ノード100のN/Dブレードは、上で説明したようにして通信する。各Dブレード170は1つのボリュームを有し、各ボリュームは、ストライピングされたデータを格納することができる。例えば、図13Bに示されているように、データボリューム0(DV0)は、第1の位置に1ストライプのデータを格納することができ、データボリューム1(DV1)は、第2の位置に1ストライプのデータを格納することができ、データボリューム2(DV2)は、第3の位置に1ストライプのデータを格納することができ、データボリューム3(DV3)は、第4の位置に1ストライプのデータを格納することができる。
また、図13Bは、本発明の一実施形態による、ストライピングテーブル1300の例を示す図である。ストライピングテーブル1300は、複数のボリュームにわたってストライピングされたデータの塊(データチャンク)の分布を表わす。代替的に記載されるように、ボリューム間におけるデータチャンクの各位置は、ストライピングテーブル1300によって識別される。したがって、ストライピングテーブル1300は、ストライピングされたデータが、DV0上の第1の位置、DV1上の第2の位置、DV2上の第3の位置、及びDV3上の第4の位置に配置されることを示している。例示的実施形態において、ストライピングされたデータは、ストライピングされたファイルシステムの複数のボリュームにわたってストライピングされたファイルを含む。したがって、図13Aは、ストライピングされたファイルシステムのジオメトリ、または編成を示している。
有利なことに、複数のストレージシステムにわたって分散された複数のボリュームにわたってファイルを分散させることにより、ボリューム使用効率を向上させることができ、ホットスポットを防止、または軽減することができる。さらに、本発明の例示的実施形態の再ストライピングプロセスを実施することにより、後で詳しく説明するように、再ストライピングプロセスは、Dブレード170間で移動されるデータの量を制限することができる。データを複数のボリューム全体にわたって均一に分散させることにより、ボリューム使用効率が向上する。具体的には、データアクセスオペレーション中、いずれか1つのボリュームは、他のボリュームに比べて頻繁にアクセスされてはならない。同じファイルに関する連続した2ストライプのデータの記憶を防止することにより、ホットスポットの発生が防止される。したがって、ファイルの特定の領域をアクセスするときに、1つのボリュームは、ボトルネックになってはならない。また、図13Aに示すストライピングされたファイルシステムのジオメトリが変更された場合、再ストライピングプロセスが実施される。例えば、ストライピングされたファイルシステムに1つのボリュームを追加したり、ストライピングされたファイルシステムから1つのボリュームを除去する場合、各再ストライピングプロセスは、アロケーション構造の中身を再構成し、それに対応して、ストライプピングされたデータをボリューム間で巡回させるように移動させる。ボリュームの追加又は除去によるクラスタ化コンピューティング環境の変化に応答して、少なくとも1つの再ストライピングプロセスが実施される。再ストライピングプロセスについては、図14〜図17を参照して後で詳しく説明する。
図14は、本発明の一実施形態による、ストレージシステム・アーキテクチャの追加、及び除去を示す図である。DV0、DV1、及びDV2のような3つのボリュームは、ストレージシステム・アーキテクチャの例示的実施形態において分散されたボリュームである。具体的には、1つのストレージシステムに1つのボリュームが割り当てられる。ただし、実施形態によっては、ストレージシステム・アーキテクチャの複数のストレージシステムのそれぞれに少なくとも1つのボリュームが割り当てられる場合もある。図14に示すような、ラウンドロビン・ロードバランシング技術を使用して3つのボリュームにわたってストライピングされたデータチャンクは、ストライピングテーブル1300によって識別される。例えば、ストライピングされたデータ1410のボリューム位置は、ストライピングテーブル1300の中身によって識別され、それらのボリュームの散在位置1420は、ストライピングテーブル1300によって識別されない。前述のように、ストライピングテーブルは、本発明の実施形態のアロケーション構造である。アロケーション構造は、線形構造として例示されているが、アロケーション構造は、いかなるタイプの構造によって実施してもよく、例えば、三次元構造によって実施したり、あるいは、特定のジオメトリにある複数のボリュームにわたって割り当てられたストライピング後のデータを実際に識別するものであれば、n次元構造によって実施することもできる。
したがって、図14のストライピングテーブル1400は、3つのボリュームにわたってストライピングされたファイルのストライピング後のデータのシーケンスが、DV0、DV1、DV2、DV0、DV1、DV2、DV0、DV1、DV2、DV0、DV1、及びDV2に配置されることを示している。次に、例えばDV3(図示せず)のような1つのボリュームを追加し、続いて削除するときの、再ストライピングプロレスの例について詳しく説明する。具体的には、クラスタにボリュームを追加する場合、再ストライピングプロセスは、進化型アルゴリズムである。あるいは、クラスタからボリュームを除去する場合、再ストライピングプロセスは、退化型アルゴリズムである。したがって、ジオメトリが変化したときに、少なくとも1つの再ストライピングアルゴリズムを実施することによって、データを最適に分散させることができると同時に、ホットスポットの挙動を抑制することができる。さらに、再ストライピングプロセスによれば、ストライピングテーブルを変更するための時間の長さも最小限に抑えることができる。
図14に示す進化型アルゴリズムの実行中に、ストライピングテーブル1300の長さは増大し、ボリュームの総数に等しい数の位置が追加される。さらに、ストライピングテーブル1300の中身は、ボリュームの総数によってグループ化される。各グループ内において、そのグループ内に識別子が現れる回数を識別するようなカウンタが判定される。したがって、ステップ1430において、DV0については、識別子が2回現れているため、カウント0は2になる。DV1については、識別子が1回現れているため、カウント1は1になり、DV2については、識別子が1回現れているため、カウント2は1になる。しかしながら、ステップ1432において、DV0については識別子が1回現れ、DV1については識別子が2回現れ、DV2については識別子が1回現れる。次に、各グループ内において、最大の値を有するカウンタが、新たに追加された第4のボリュームDV3に対応する識別子に置き換えられる。したがって、ストライピングテーブル1440に示されているように、各グループ中の重複する参照は、新たな識別子「3」に置き換えられる。なお、当然ながら、進化型アルゴリズムは、クラスタにボリュームが追加されるたびに毎回実施され、それに対応して、ストライピングテーブル1440に変更が加えられる。
クラスタからボリュームを除去する場合、再ストライピングプロセスは、クラスタから除去される各ボリュームについても実施される。そのような再ストライピングプロセスは、退化型アルゴリズムである。ストライピングテーブルは更にもう一度グループ化され、そのボリューム除去の結果、各グループは、総数のボリュームになる。ただし、総数は3である。なぜなら、ストライピングテーブル1440は、4つのボリュームにわたってストライピングされたデータの位置を識別するからである。今除去された第4のボリュームに対する識別子を含む各グループでは、その識別子を置き換えなければならない。この置き換え識別子は、そのグループ中に現れる回数が最も少ないボリュームから選択される。例えば、グループ中のボリュームに対する参照の回数のカウントを保持することにより、最少数の参照を有するカウンタを置き換えることができる。具体的には、グループ1450は、DV0、及びDV2の識別子を有するが、DV1の識別子は有しない。したがって、識別子「1」が、ストライピングテーブル1460の中身として挿入される。これに対応して、グループ1452は、DV0、及びDV1の識別子を有するが、DV2の識別子は有しない。したがって、識別子「2」が、ストライピングテーブル1460に挿入される。
図14に示した進化型アルゴリズム、及び退化型アルゴリズムを実施する本発明の他の例示的実施形態では、当然ながら、ストライピングテーブル1300のサイズは、必ずしも増減させなくても足りる場合がある。特に、ストライピングテーブル1300は、固定サイズに維持されることもある。そのようなストライピングテーブルサイズの例は、例えば4096エントリである。したがって、ストライピング後のボリュームセット間におけるデータの割り当てが変化するプロセスを実施する場合、ストライピングテーブルによっては、そのサイズが一定に維持されることもある。
図15Aは、本発明の一実施形態による、クラスタ化コンピューティング環境のようなストレージアーキテクチャ内におけるボリュームの追加、及び除去のためのオペレーションを示すフロー図である。オペレーション1510において、管理者、またはストレージ・オペレーティング・システムによって管理される何らかの他のプロセスは、ストライピングテーブルを生成することができる。具体的には、このストライピングテーブルは、クラスタ化コンピューティング環境の複数の分散ボリュームにわたるデータチャンクの分布を表わすアロケーション構造である。ストライピングテーブルを生成するとき、例示的実施形態は、1つのノードに1つのボリュームを割り当て、結合されたノードがクラスタを形成するようにする。具体的には、ノードのDブレードは、ボリュームに格納されたデータへのアクセスを提供する。ただし、当然ながら、本発明の実施形態によっては、複数のボリュームが1つのノードに分散される場合もある。ボリュームは、ストライピングされたボリュームセット(SVS)と編成され、SVSは、そのファイルをSVS全体にわたって「ストライピングされたデータ」としてストライピングする。ボリューム上の各ストライピングされたデータは、ストライピングテーブルによって識別される。したがって、ストライピングテーブルは、データチャンクがSVS上に格納される場所を表わす。
続いて、オペレーション1520において、ボリュームを追加するか、除去するかの判定がなされる。複数のボリュームを追加、及び/又は除去する場合、SVSへの変更により、再ストライピングプロセスが実施されることになる。再ストライピングプロセスは、ストライピングテーブルの中身を再配置し、それに対応して、SVS内のデータチャンクを移動させる。ボリュームを追加する場合、再ストライピングプロセスは、進化型アルゴリズムであると言われ、ボリュームを除去する場合、退化型アルゴリズムであると言われる。各ボリューム変更について、適当な再ストライピングプロセスが一回実施される。したがって、4つのボリュームを追加する場合、進化型アルゴリズムの4つの実施形態が発生する。例えば、ボリュームを追加する場合、オペレーション1530は、追加されるボリュームのそれぞれについて進化型アルゴリズムを適用するオペレーションを表わす。あるいは、ボリュームを除去する場合、オペレーション1550は、除去されるボリュームのそれぞれについて退化型アルゴリズムを適用するオペレーションを表わす。SVSへの各変更について再ストライピングプロセスを適用した後、オペレーション1530、及びオペレーション1550は、いずれもオペレーション1520へ戻り、そこで、ボリュームの追加、または除去を判定する。
図15Bは、本発明の一実施形態による、ボリューム追加の場合のオペレーションを示すフロー図である。オペレーション1532では、1ボリュームの追加により、ストライピングされたデータをSVSに格納するために利用可能なボリュームの量を増加させる。SVS上のストライピングされたデータの位置を識別するストライピングテーブルは、図14を参照して説明したように、ボリュームの総数によってグループ化される。次に、オペレーション1534は、各グループ位置についてカウンタを維持する。例えば、あるグループが、4つの位置を有している場合、追加されたボリュームを除き、そのSVSの各ボリュームについてカウンタが生成される。これらのカウンタは比較され、オペレーション1536は、各グループについて、比較により、ストライピングテーブル中に重複するボリューム参照があるか否かを識別する。したがって、オペレーション1538では、例示的実施形態の再ストライピングプロセスは、各グループについて、ストライピングテーブル上の少なくとも1つの重複したボリューム参照を、追加したボリューム参照に置き換え、置き換えられた重複ボリューム参照が、最大カウンタ値を有するようにする。最後に、オペレーション1540において、ストライピングテーブルの中身を再構成した後、プロセスは、変更後のストライピングテーブルにしたがって、複数のデータボリュームにわたってデータを割り当てる。
本発明の更に別の実施形態では、グループ中にボリューム参照の置換が1つしか存在しない場合がある。したがって、グループ内における複数のボリューム参照置換によれば、ストライピング後のボリュームセット間のデータ分布はわずかに改善される場合もあるが、再ストライピング特性を大幅に悪化させるという犠牲をともなう場合がある。そのような再ストライピング特性の悪化は、ストライピング後のボリュームセット間におけるデータのラウンドロビン分布を減少させる。
図15Cは、本発明の一実施形態による、ボリューム除去の場合のオペレーションを示すフロー図である。オペレーション1552では、1ボリュームの除去により、SVS中のストライピングされたデータを格納するために利用可能なボリュームの量を減少させる。上記の進化型アルゴリズムの場合と同様に、オペレーション1554において、プロセスは、各グループ位置についてカウンタを維持する。次に、オペレーション1556において、プロセスは、複数の最小カウンタ値が同一の値でない限り、ストライピングテーブルに追加するために、各グループについて、最小カウンタのボリューム参照を選択する。グループ中の複数の最小カウンタ値が同一の値であった場合、オペレーション1558の後、プロセスは、オペレーション1560において複数のカウンタ値の中から選択する。具体的には、プロセスは、ストライピングテーブル上において、自分の位置から最も近い位置にある既存のボリューム参照が、ストライピングテーブルの挿入箇所から最も遠い位置にあるようなボリューム参照を選択する。挿入箇所は、除去されるボリューム上のストライピング後のデータの位置が識別されたコンテンツ位置である。したがって、オペレーション1562では、ストライピングテーブル中の除去されたボリューム参照を、ストライピングテーブルの挿入箇所から最も遠い位置にあるボリューム参照で置き換えることによって、ストライピングテーブルの変更が行われ、ホットスポットが防止され、同時に、ボリューム使用効率が向上される。最後に、オペレーション1564において、ストライピングテーブルの中身を再構成した後、プロセスは、変更後のストライピングテーブルにしたがって、複数のデータボリュームにわたってデータを割り当てる。

一方、オペレーション1558において、複数のカウンタ値が同一の値でなかった場合、プロセスはオペレーション1562へ進む。オペレーション1562では、ストライピングテーブル中の除去されたボリューム参照を適当なボリューム参照に置き換えることによって、ストライピングテーブルの変更が行われる。そのような適当なボリューム参照は、ストライピングテーブルの挿入箇所から最も遠い位置にある、ボリュームの識別子であってもよい。
上記の再ストライピングプロセスは、本発明の例示的実施形態によって実施される。しかしながら、前述の再ストライピングプロセスの代わりに、あるいはそれに加えて、他のストライピングプロセスを実施してもよい。例えば、再ストライピングプロセスによっては、ストライピングテーブル中の参照をN個置きに置き換えるものがある。図14を参照すると、ストライピングテーブル1300は、SVSにボリュームが追加されるときに再構成される。したがって、3ボリュームのセットに1つのボリュームを追加する場合、ストライピングテーブル中のボリューム参照は3つ置きに新たなボリュームに置き換えられる。例えば、第4の識別子「0」は、「3」に変更され、第4の識別子「1」は、「3」に変更され、第4の識別子「2」は、「3」に変更される。ただし、この再ストライピングプロセスを実施した場合、SVSサイズが比較的大きいと、ホットスポットが増加し、ボリューム使用効率は低下する。したがって、以下では、この再ストライピングプロセスに対する改良を他の再ストライピングプロセスによって例示する。
例えば、図16A〜図16Gは、本発明の他の例示的実施形態により実施される他の再ストライピングプロセスを示している。具体的には、図16Aは、本発明の一実施形態による他の再ストライピングプロセスを示す図である。明瞭化のために、図示のストライピングテーブルには、「A」〜「L」のラベルが付されることがある。さらに、ストライピングテーブルの中身は、SVS中のストライピング後ののラウンドロビン分布を示している。すなわち、A〜C、D〜F、G〜I等は、ボリューム0、1、及び2が、ストライピング後のデータを有するものとして識別されることを示している。上記の第(N+1)再ストライピングプロセスの後、第4の識別子は、新たなボリューム識別子「3」で置き換えられる。ただし、ボリュームの使用分布を改善するために、置換オペレーション(例えば、トランプのデッキのシャッフルに似た「シャッフル」オペレーション)を追加し、ストライピング後のデータの位置を並べ替える場合もある。この置換は、以下に記載するような擬似ランダム技術によって確定的に生成される固定置換であってもよい。ボリュームに対するストライプの割り当てをテーブル形態で記録する場合、この置換は、テーブル中のエントリを擬似ランダムに、かつ確定的でない仕方で並び替える場合がある。その結果、複数のボリュームにわたるちょうど同じ全体的分布が得られることになるが、その分布は、良好な局所的分布、及びバランスを達成しない。
具体的には、I<(n/2)の場合、シャッフルオペレーションは、第1の位置Iにある識別子を第2の位置(2×I)へ移動させることによる、図16Aのストライピングテーブルの識別子の置換を含む場合がある。ここで、nは、ストライピングテーブルの位置の総数である。また、(n/2)≦I<nである場合、識別子は、第1の位置Iから第2の位置((2×I MOD n)+1)へ移動される場合がある。さらに、トランプカードのデッキを「切る」ときと同様に、シャッフルオペレーションは、ストライピングテーブルの識別子を擬似ランダム数pによって異なる位置へ回転させ、位置Iにある識別子が位置((I+P) MOD n)にくるようにすることを含む。pを擬似ランダムに選択することにより、ストライピングテーブルの位置の置換は、既知のシード値を使用して、「カット」と「シャッフル」の繰り返しによって確定的に行うことができる。なお、当然ながら、擬似ランダムオペレーションに使用されるシード値は、当業者にとって既知のものである。図16Aに示されているストライピングテーブルにおいて例として6回繰り返されているように、「カット」と「シャッフル」をある程度の回数繰り返した後、ストライピングテーブルの識別子の良好な擬似ランダム化が達成される。ただし、トランプカードのデッキを満足のいくまで「カット、及びシャッフル」する繰り返し数のように、任意の適当な数の繰り返しが可能である。
実施形態によっては、線形アレイとしてメモリに格納された所定の置換(例えば、SVSの確立に先立って計算される)をストライピングテーブルに適用してもよい。したがって、ストライピングテーブルは、上記の「シャッフル」オペレーションを使用して整備された後、次に、所定の置換が適用される場合がある。さらに、ストライピングテーブルに適用するために、ランダム、または擬似ランダムに生成された複数の所定の置換が、記憶される場合がある。
図16Bに示されているような次の再ストライピングは、シャッフルを必要としない。具体的には、このプロセスは、置換を利用して、例示的なサイズを有するSVSの1つのストライピングテーブルをラウンドロビン順序に並び替え、かつ、それと全く同じ置換を、異なるサイズのSVSの別のストライピングテーブルにも適用する。例えば、任意の2つのテーブルが、本明細書に記載するプロセスのいずれかによって生成される。このプロセスは、ストライピングテーブルを、ラウンドロビンレイアウトのSVSを表わすものにするものが好ましい。なぜなら、ラウンドロビンレイアウトは、SVS中のデータの均一な分布といった、多数の優れた性質を有するからである。しかしながら、SVSを変更するとき、目標は、ボリューム数VのSVSのストライプのうちの(1/(V+1))だけを移動させることである。なお、本明細書に記載するプロセスは、ラウンドロビンレイアウトを得るために使用されているが、良好な性質を有するものであれば任意の適当なレイアウトを使用することが可能である。そのような良好な性質には、ホットスポット等に関して上で述べたものがある。
さらに別の実施形態として、図16Bは、本発明の一実施形態による、他の再ストライピングプロセスを示す図である。この例示的実施形態では、2つのストライピングテーブル、すなわち、テーブル1とテーブル2を使用する。テーブル1は、SVS中の現在のボリューム数を表わし、テーブル2は、追加のボリュームを有するSVSを表している。テーブル1は、一度に1ボリュームづつ3ボリュームまで「成長」するストライピングテーブルを示している。当初、このストライピングテーブルは、ストライピングテーブル1601上のボリューム0を指す識別子を有している。ストライピングテーブル1602は、1ボリュームが追加された後の、識別子「0」及び「1」を有する2つのボリュームのラウンドロビンを示している。具体的には、第(N+1)のボリューム参照を置き換えることにより、ラウンドロビン・ロードバランシングが行われる。第3のボリュームを追加するとき、識別子「2」がテーブル1に挿入され、ストライピングテーブルは、ストライピングテーブル1603のようになる。
それに対応して、テーブル2は、ストライピングテーブル1605上に1つのボリュームを有する当初のSVSから「成長」される。ボリュームを追加するたびに、テーブル2上の各一意の識別子の第(N+1)の発生が、置換される。したがって、ストライピングテーブル1606は、ボリューム0及び1の識別子を示し、ストライピングテーブル1607は、ボリューム0、1、及び2の識別子を示し、ストライピングテーブル1608は、ボリューム0、1、2、及び3の識別子を示している。その結果、スワップ・オペレーション中に、ストライピングテーブル1604の中身が、ストライピングテーブル1609の中身と合わせて再配置される。したがって、ラウンドロビン方式でストライピングされたデータの識別子を示すテーブル1の再配置は、ラウンドロビン方式でストライピングされたデータを得るために、テーブル2上でも模倣される。ただし、この再ストライピングプロセスは、図16Aの再ストライピングプロセスより改善されてはいるものの、比較的大きなボリュームセットについては、ボリューム利用効率の低下を受ける場合がある。
図16Bに示す更に別の実施形態において、2つのテーブルを使用したプロセスは、本明細書に記載する任意のプロセスを使用して、V(例えば、テーブル1)、及びV+1(例えば、テーブル2)の2つの値について2つのテーブルを生成することを含む。そして、ボリュームdを追加する場合、プロセスは、残りのストライプの1/dを全て移動させなければならない。テーブル1の置換により、ラウンドロビンレイアウトを表わすストライピングテーブルになる。置換の1つの方法は、位置Iを埋めるときに、値(I MOD v)を有する次の移動されないエントリを選択することによって、ストライピングテーブルを順序付けることである。テーブル1を強制的にラウンドロビンにするためにテーブル1上のボリューム数Vに対して一組の移動を実施するとき、同時に、テーブル2上でも、ボリューム数V+1に対する移動が実施される。この置換の結果、レイアウトテーブルは、Vに関するテーブルに「近い」所望の性質を有するものとなる。所望の性質が得られる理由は、2つのテーブル上の大半のエントリが、当初同じであったこと、そして、2つのテーブル上の全てのエントリについて、同様の、又はほぼ同様の置換が、全く同じ方法で行われたからである。さらに、上記の技術を使用すれば、サイズV+1のSVSの場合のストライピングテーブルは、1/(V+1)のデータ移動しか必要としないであろう。したがって、ある数Vのボリューム中の識別子のレイアウトを表わす任意のストライピングテーブルに対し、ストライピングテーブルを1以上の方法で並び替える(置換する)ことで、複数のボリュームにわたる識別子のラウンドロビンレイアウトを生成することができる。
図16Cは、本発明の一実施形態による、更に別の再ストライピングプロセスを示す。この再ストライピングプロセスは、図14に関して上で説明した(N+1)ボリューム参照の置換に似ているが、第(N+1)のボリューム参照を置換する代わりに、ストライピングテーブル上の第(N+1)識別子をその中身に関わらず置換する。例えば、ストライピングテーブル1610によって参照される3ボリュームのSVSに対して第4のボリュームを追加した後、その3ボリュームのSVSにおいて既に識別されているボリューム参照とは無関係に、第4の識別子は「3」に置換される。この再ストライピングプロセスに関し、識別子は、ストライピングテーブル全体に撒き散らされ、ボリューム参照の分布を増大させるが、全体的なボリューム利用効率は最適にならない場合がある。
図16Dは、本発明の一実施形態による、更に別の再ストライピングプロセスを示す図である。具体的には、DV0、DV1、及びDV2によって示されているように、3ボリュームのSVSに1つのボリュームを追加する場合、結果的に得られるストライピングテーブル1611は、準備リストの使用によって得られる。準備リストは、ストライピングテーブル上の置換可能なボリューム参照を有する。当初、準備リストは、あらゆるボリューム参照を有する。第4のボリュームを追加するとき、ストライプテーブル上の第4の位置が置換される。次に、置換されたボリューム参照は、準備リストから取り除かれる。例えば、DV1へのボリューム参照が、準備リストから取り除かれ、ストライピングテーブル上のコンテンツ位置「C]にある識別子は、ボリューム「3」を参照する(すなわち、DV3、追加された第4のボリューム)。次に、コンテンツ位置「H」の置換を検査する。しかしながら、DV1は準備リストから既に取り除かれているので、プロセスは、準備リスト上のボリューム対応する第1のコンテンツ位置を探して、置換コンテンツ位置から前後にストライピングテーブルをスキャンする。スキャンにより得られた第1のコンテンツ位置は、準備リスト上のDV0を識別する。したがって、コンテンツ位置「T」はボリューム識別子「3」に置換され、DV0は準備リストから取り除かれる。なお、前後の順でスキャンするという判断は自由であり、プロセスは、他の方向からスキャンを開始してもよい。準備リストが使い果たされると、全てのボリューム参照が、再度、準備リストに入れられる。このプロセスによれば、高いボリューム使用効率が可能となり、ある程度のランダム性が提供され、したがって、高い分散効率が提供される。
図16Eは、本発明の一実施形態による再ストライピングプロセスを示す図である。例示的実施形態において再ストライピングプロセスを実施する場合、図14の例と同様に、ストライピングテーブルは、SVSのボリュームの総数によって再度グループ化される。ただし、SVSのボリューム数をNとしたとき、(N+1)個のグループを生成した後、ボリュームを追加する前に、重複したボリューム参照をカウンタを使用せずに置換する。このプロセスは、高いボリューム使用効率を生み出すが、このプロセスでは、十分なラウンドロビン・ロードバランシングは得られない。
したがって、図16Fは、本発明の一実施形態による、更に別の再ストライピングプロセスを示す図である。例えば、(N+1)個のグループが生成された後、ストライピングテーブル1612上に存在するボリューム参照の総数をカウントするカウンタが、カウンタリスト1613に記録される。具体的には、ストライピングテーブル1612上で、ボリューム0は、8回参照される一方、ボリューム1及び2は、6回参照される。カウンタ1613を検査することにより、プロセスは、最大のカウンタを有するボリュームを置換することができる。したがって、カウンタが、5つのボリューム参照(これは、カウンタリスト1613上の残りのカウンタよりも小さい)に減少するまでに、ボリューム0は、3回置換される。ボリューム利用効率は、図16Eに示したプロセスに比べて僅かに減少するが、同一グループ中の複数の置換により、ホットスポットの挙動は増加する。また、このプロセスは、各グループについて複数の置換が行われる可能性があることから、最適以下の再ストライピング挙動の影響を受ける場合がある。
図16Gは、本発明の一実施形態による再ストライピングプロセスを示す図である。進化型アルゴリズムを例示するこの再ストライピングプロセスの例では、4ボリュームのSVSから1つのボリュームが除去される。このプロセスにおいて、ボリューム「3」を参照するボリューム参照は、もはや有効ではない。したがって、プロセスは、そのボリューム参照をストライピングテーブルの末尾に移動させる。ボリューム「3」に対する識別子の再配置は、既存の有効なボリューム参照の中から、ラウンドロビン方式で選択される。ここで、有効なボリューム参照は、「0」、「1」、及び「2」である。
上に記載した種々の再ストライピングプロセスは、進化型と退化型に分類することができるが、本発明の実施形態によっては、退化型アルゴリズムを実施することなく、進化型アルゴリズムを実施することもある。図17は、本発明の一実施形態による、進化型ストライピングテーブルのためのオペレーションを示すフロー図である。オペレーションは、1ボリューム用のストライピングテーブルを作成することにより、オペレーション1710から開始される。一度に1つのボリュームを追加することによりSVSが「成長」するのに応じて、オペレーション1720は、ストライピングテーブルを進化させ、数ボリュームにつき各ストライピングテーブルを記憶する。例えば、1ボリューム、2ボリューム、3ボリューム等のストライピングテーブルの構成の記録が記憶される。SVSからボリュームが除去された場合、それらのレコードを検査することができる。具体的には、オペレーション1730において、ストライピングテーブルが退化される場合、ストライピングテーブルの「退化」には、以前に記憶されたストライピングテーブルへのアクセスが必要となる。
あるいは、本発明の他の実施形態(図示せず)では、進化型アルゴリズムを実施することなく、ストライピングテーブルを退化させるオペレーションを実施することがある。例えば、最大量のボリュームを有するある程度自由にストライピングされたボリュームセットの場合、ストライピングテーブルは、ラウンドロビンを使用して実施されることがある。そのような最大量のボリュームは、例えば255個のボリュームである。したがって、ボリュームを除去するときにSVSが「縮小」する場合(例えば、225ボリュームから開始して)、退化型アルゴリズムの実施により得られるストライピングテーブルの種々の構成は、図17の記録されたストライピングテーブル構成の使用と同様に、将来の使用に備えて格納することができる。具体的には、ストライピングテーブルが進化する場合、ストライピングテーブルの「退化」には、以前に記憶されたストライピングテーブルが必要となる。なお、最大サイズのSVSの場合、退化型アルゴリズムだけを実施してストライピングテーブル構成が実現される限り、任意の適当な数のボリュームを使用することが可能である。
上記の説明は、本発明の特定の幾つかの実施形態に関するものになっている。しかしながら、それらの実施形態の利点の一部または全部を維持しながら、記載した実施形態に対し、他の変形、及び変更を施すことも可能である。具体的には、本発明の原理は、分散されていないファイルシステム上で実施することも可能である。また、本明細書の説明は、Nブレード、及びDブレードに関するものとして書かれているが、本発明の教示は、NブレードとDブレードの機能が単一のシステムで実施されるシステムにも、等しく適合させることができる。単一の装置は、それらのオペレーションを実施するためのデバイス、または装置に関する。装置は、必要とされる目的にあわせて特別に構成することができ、あるいは、コンピュータに格納されたコンピュータプログラムによって選択的に有効化、または構成された汎用コンピュータであってもよい。特に、種々の汎用マシンは、本明細書記載する教示にしたがって書かれたコンピュータプログラムとともに使用することができ、あるいは、より特殊な装置を構成し、必要とされるオペレーションを実施したほうが便利な場合もある。あるいは、Nブレード、及びDブレードの機能を任意数の独立したシステム間に分散させ、各システムが、1以上の機能を実施するようにしてもよい。
本発明の実施形態は、コンピューティング環境管理システムによって管理することができる。例えば、カリフォルニア州サニーベイルのネットワーク・アプライアンス・インコーポレイテッドにより開発されたデータ・ファブリック・マネージャ(DFM)等のようなコンピューティング環境管理システムは、クラスタ化コンピューティング環境を管理することができる。上記の実施形態を考慮すれば、本発明は、コンピュータシステムに格納されたデータに関わる種々の、コンピュータによって実施されるオペレーションに使用可能であるものと考えられる。こうしたオペレーションは、物理量の物理的操作を必要とする。一般に、必須ではないが、それらの量は、記憶、伝送、結合、比較、及び他の操作をすることが可能な電気的、磁気的、光信号などの形をとる。本明細書に記載した発明を構成するオペレーションはいずれも、機械処理に有用である。また、本明細書に記載する手順、プロセス、及び/又はモジュールは、ハードウェアで実施しても、プログラム命令を有するコンピュータ読み取り可能媒体として実施されるソフトウェアで実施しても、ファームウェアで実施してもよく、あるいは、それらの組み合わせによって実施してもよい。したがって、添付の特許請求の範囲の目的は、そうした変形や変更もすべて、本発明の真の思想、及び範囲に含めることにある。
本発明の一実施形態による、クラスタ化コンピューティング環境のクラスタとして相互接続された複数のノードを示す図である。 本発明の一実施形態によるノードを示す図である。 本発明の一実施形態とともに使用されるストレージ・オペレーティング・システムを示す図である。 本発明の一実施形態による、クラスタ・ファブリック(CF)メッセージのフォーマットを示す図である。 本発明の一実施形態による、データコンテナハンドルのフォーマットの詳細を示す図である。 本発明の一実施形態による、集合体の例を示す図である。 本発明の一実施形態による、バッファ・ツリーの例を示す図である。 本発明の一実施形態による、バッファ・ツリーの他の例を示す図である。 本発明の一実施形態による、集合体のオンディスク・フォーマットの例を示す図である。 本発明の一実施形態による、ボリューム位置データベース(VLDB)ボリュームエントリを示す図である。 本発明の一実施形態による、VLDB集合体エントリを示す図である。 本発明の一実施形態による、一群の管理プロセスを示す図である。 本発明の一実施形態による、ストライピングされたボリュームセット(SVS)を示す図である。 本発明の一実施形態による、VLDB SVSエントリを示す図である。 本発明の一実施形態による、SVSのボリュームに格納されたファイル・コンテンツの周期的散在を示す図である。 本発明の一実施形態による、ストレージ・システム・アーキテクチャの複数のボリューム間に分散されたデータの割り当てを示す図である。 本発明の一実施形態による、ストライピングテーブルの例を示す図である。 本発明の一実施形態による、ストレージ・システム・アーキテクチャのボリュームの追加、及び除去を示す図である。 本発明の一実施形態による、ストレージ・システム・アーキテクチャ内でのボリュームの追加、及び除去のためのオペレーションを示すフロー図である。 本発明の一実施形態による、ボリュームの追加のためのオペレーションを示すフロー図である。 本発明の一実施形態による、ボリュームの除去のためのオペレーションを示すフロー図である。 本発明の一実施形態による、再ストライピングプロセスを示す図である。 本発明の一実施形態による、再ストライピングプロセスを示す図である。 本発明の一実施形態による、再ストライピングプロセスを示す図である。 本発明の一実施形態による、再ストライピングプロセスを示す図である。 本発明の一実施形態による、再ストライピングプロセスを示す図である。 本発明の一実施形態による、再ストライピングプロセスを示す図である。 本発明の一実施形態による、再ストライピングプロセスを示す図である。 本発明の一実施形態による、ストライピングテーブルを進化させるためのオペレーションを示すフロー図である。

Claims (9)

  1. 1つのクラスタとして相互接続された複数のストレージシステムによって提供される複数のボリュームにわたってデータを割り当てる方法であって、各ボリュームが、識別子を有するものにおいて、
    2以上のコンピュータを互いに結合し、前記クラスタを形成するステップと、
    複数のボリュームを、ストライピングされたボリュームセットとして編成し、前記複数のボリュームが、前記クラスタの全域に分散され、各ボリュームが、前記2以上のコンピュータのうちの1つのコンピュータに取り付けられた記憶空間の論理配置となるようにするステップと、
    前記ストライピングされたボリュームセットの複数のボリュームにわたるデータチャンクの分布を表すように構成されたアロケーション構造を生成するステップであって、前記アロケーション構造の中身が、ボリュームの総数によってグループ化され、複数のグループを形成し、各グループが、前記ボリュームの各々について、そのグループの中にそのボリュームのための前記識別子が現れる回数を識別するためのカウンタを含む、アロケーション構造を生成するステップと、
    前記アロケーション構造を使用して、ストライプを成す1以上のデータコンテナを、前記ストライピングされたボリュームセットの全域にわたって格納するステップと、
    前記ストライピングされたボリュームセットの変更に応答して、前記カウンタに基づいて前記識別子を置き換えることにより、前記アロケーション構造を更新するステップと、
    更新されたアロケーション構造に従って、変更されたストライピングされたボリュームセットの複数のボリュームにわたってデータを再割当てするステップと
    を含み、
    前記ストライプは、パリティ情報を含まない、方法。
  2. ラウンドロビン・ストライピングアルゴリズムを使用して、前記データチャンクを前記複数のボリュームにわたってストライピングされたデータとして分散させることを更に含む、請求項1に記載の方法。
  3. 前記アロケーション構造を生成するステップは、前記複数のボリュームにわたって分散された各データチャンクの位置を識別することを更に含む、請求項1に記載の方法。
  4. 前記アロケーション構造を更新するステップは、前記ストライピングされたボリュームセットにボリュームが追加されることに応答して、前記アロケーション構造の中身を再構成することからなる、請求項1に記載の方法。
  5. 前記アロケーション構造を更新するステップは、前記ストライピングされたボリュームセットからボリュームが除去されることに応答して、前記アロケーション構造の中身を再構成することからなる、請求項1に記載の方法。
  6. ストレージシステムクラスタによって提供される複数のボリュームにわたってデータを割り当てるように構成されたシステムであって、各ボリュームが、識別子を有するものにおいて、
    ストレージシステムクラスタを形成するように互いに結合された複数のコンピュータであって、前記複数のコンピュータのそれぞれが、前記複数のボリュームのうちの1以上を格納し、該ボリュームをストライピングされたボリュームセットとして編成するように構成され、前記ボリュームがそれぞれ、前記複数のコンピュータのうちの1つのコンピュータに取り付けられた記憶空間の論理配置である、複数のコンピュータと、
    前記複数のボリュームにわたるデータチャンクの分布を表すように構成されたアロケーション構造を有するように構成されたストレージシステムクラスタであって、前記アロケーション構造の中身が、ボリュームの総数によってグループ化され、複数のグループを形成し、各グループが、前記ボリュームの各々について、そのグループの中にそのボリュームのための前記識別子が現れる回数を識別するためのカウンタを含む、ストレージシステムクラスタと、
    前記ストレージシステムクラスタ中の1以上のコンピュータ上で実行されるボリューム・ストライピング・モジュールであって、該ボリューム・ストライピング・モジュールが、前記アロケーション構造を使用して、前記ストライピングされたボリュームセットの全域にわたって1以上のデータコンテナをストライプにストライピングする、ボリューム・ストライピング・モジュールと、
    前記ストレージシステムクラスタ上で実行される複数の再ストライピングプロセスであって、該再ストライピングプロセスのそれぞれが、前記ストライピングされたボリュームセットの変更に応答して、前記カウンタに基づいて前記識別子を置き換えることにより、前記アロケーション構造の中身を再構成し、更新されたアロケーション構造に従って、変更されたストライピングされたボリュームセットの複数のボリュームにわたってデータを再割当てするように構成される、複数の再ストライピングプロセスと
    を含み、
    前記ストライプは、パリティ情報を含まない、システム。
  7. 前記アロケーション構造の中身は複数の識別子であり、各識別子は、前記複数のボリュームにわたって分散されたデータチャンクの位置を表す、請求項6に記載のシステム。
  8. 前記ストライピングされたボリュームセットに対する追加ボリュームであって、前記アロケーション構造の中身を増加させる追加ボリュームと、
    前記アロケーション構造の中身を減少させるように構成された、前記ストライピングされたボリュームセットから除去される除去ボリュームと
    を更に含む、請求項に記載のシステム。
  9. 前記データコンテナは、ファイル、又はLUである、請求項6に記載のシステム。
JP2008509170A 2005-04-29 2006-04-27 ストレージシステム・アーキテクチャ内のデータ・アロケーション Active JP5291456B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/118,681 2005-04-29
US11/118,681 US7617370B2 (en) 2005-04-29 2005-04-29 Data allocation within a storage system architecture
PCT/US2006/016243 WO2006119021A1 (en) 2005-04-29 2006-04-27 Data allocation within a storage system architecture

Publications (2)

Publication Number Publication Date
JP2008541207A JP2008541207A (ja) 2008-11-20
JP5291456B2 true JP5291456B2 (ja) 2013-09-18

Family

ID=37235782

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008509170A Active JP5291456B2 (ja) 2005-04-29 2006-04-27 ストレージシステム・アーキテクチャ内のデータ・アロケーション

Country Status (5)

Country Link
US (1) US7617370B2 (ja)
EP (1) EP1875354B1 (ja)
JP (1) JP5291456B2 (ja)
IL (1) IL186994A0 (ja)
WO (1) WO2006119021A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996463B2 (en) 2015-11-10 2018-06-12 International Business Machines Corporation Selection and placement of volumes in a storage system using stripes

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7617370B2 (en) 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US8645242B1 (en) * 2005-05-11 2014-02-04 Morgan Stanley Systems and methods for compiling and analyzing bids in an auction of securities
US7536529B1 (en) 2005-06-10 2009-05-19 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for provisioning space in a data storage system
US7747835B1 (en) 2005-06-10 2010-06-29 American Megatrends, Inc. Method, system, and apparatus for expanding storage capacity in a data storage system
US7739318B2 (en) * 2005-06-20 2010-06-15 Netapp, Inc. System and method for maintaining mappings from data containers to their parent directories
US8484213B2 (en) * 2005-08-31 2013-07-09 International Business Machines Corporation Heterogenous high availability cluster manager
US7404036B2 (en) * 2005-11-23 2008-07-22 International Business Machines Corporation Rebalancing of striped disk data
US7702866B2 (en) * 2006-03-31 2010-04-20 International Business Machines Corporation Use of volume containers in replication and provisioning management
US8321643B1 (en) * 2006-05-09 2012-11-27 Vmware, Inc. System and methods for automatically re-signaturing multi-unit data storage volumes in distributed data storage systems
US7987167B1 (en) * 2006-08-04 2011-07-26 Netapp, Inc. Enabling a clustered namespace with redirection
US8930660B2 (en) * 2007-02-16 2015-01-06 Panasonic Corporation Shared information distributing device, holding device, certificate authority device, and system
US8024518B1 (en) 2007-03-02 2011-09-20 Netapp, Inc. Optimizing reads for verification of a mirrored file system
US8370597B1 (en) 2007-04-13 2013-02-05 American Megatrends, Inc. Data migration between multiple tiers in a storage system using age and frequency statistics
US8024542B1 (en) 2007-04-13 2011-09-20 American Megatrends, Inc. Allocating background workflows in a data storage system using historical data
US8140775B1 (en) 2007-04-13 2012-03-20 American Megatrends, Inc. Allocating background workflows in a data storage system using autocorrelation
US8006061B1 (en) 2007-04-13 2011-08-23 American Megatrends, Inc. Data migration between multiple tiers in a storage system using pivot tables
US8001352B1 (en) 2007-04-17 2011-08-16 American Megatrends, Inc. Networked raid in a virtualized cluster
US8271757B1 (en) * 2007-04-17 2012-09-18 American Megatrends, Inc. Container space management in a data storage system
US8209294B2 (en) * 2007-06-15 2012-06-26 Oracle International Corporation Dynamic creation of database partitions
US8356014B2 (en) * 2007-06-15 2013-01-15 Oracle International Corporation Referring to partitions with for (values) clause
US8140493B2 (en) * 2007-06-15 2012-03-20 Oracle International Corporation Changing metadata without invalidating cursors
US8135688B2 (en) * 2007-06-15 2012-03-13 Oracle International Corporation Partition/table allocation on demand
US7676704B2 (en) * 2007-06-29 2010-03-09 Symantec Corporation Resource management for scalable file system recovery
US7756832B1 (en) 2007-09-21 2010-07-13 Netapp, Inc. Apparatus and method for providing upgrade compatibility
US9075809B1 (en) * 2007-09-29 2015-07-07 Symantec Corporation Methods and systems for application cluster virtual nodes
US8468521B2 (en) * 2007-10-26 2013-06-18 Netapp, Inc. System and method for utilizing a virtualized compute cluster as an execution engine for a virtual machine of a storage system cluster
US8301768B2 (en) * 2007-12-20 2012-10-30 Pottenger William M Peer-to-peer indexing-based marketplace
US8239492B2 (en) * 2007-12-20 2012-08-07 Pottenger William M System for content-based peer-to-peer indexing of data on a networked storage device
US8234310B2 (en) * 2007-12-20 2012-07-31 Pottenger William M Social networking on a website with topic-based data sharing
US7904466B1 (en) * 2007-12-21 2011-03-08 Netapp, Inc. Presenting differences in a file system
JP5052376B2 (ja) * 2008-03-21 2012-10-17 株式会社日立製作所 ストレージシステム及びストレージシステムにおける論理ユニットの引継方法
US20090259669A1 (en) * 2008-04-10 2009-10-15 Iron Mountain Incorporated Method and system for analyzing test data for a computer application
EP2304568B1 (en) * 2008-06-06 2013-08-14 Pivot3 Method and system for distributed raid implementation
US8219750B2 (en) * 2008-06-30 2012-07-10 Pivot3 Method and system for execution of applications in conjunction with distributed RAID
US8250035B1 (en) * 2008-09-30 2012-08-21 Emc Corporation Methods and apparatus for creating a branch file in a file system
US8176247B2 (en) 2008-10-28 2012-05-08 Pivot3 Method and system for protecting against multiple failures in a RAID system
US8572071B2 (en) * 2008-12-19 2013-10-29 Rutgers, The State University Of New Jersey Systems and methods for data transformation using higher order learning
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
US9325790B1 (en) 2009-02-17 2016-04-26 Netapp, Inc. Servicing of network software components of nodes of a cluster storage system
US9215279B1 (en) * 2009-02-17 2015-12-15 Netapp, Inc. Servicing of storage device software components of nodes of a cluster storage system
US8090683B2 (en) * 2009-02-23 2012-01-03 Iron Mountain Incorporated Managing workflow communication in a distributed storage system
US8145598B2 (en) * 2009-02-23 2012-03-27 Iron Mountain Incorporated Methods and systems for single instance storage of asset parts
US8397051B2 (en) * 2009-02-23 2013-03-12 Autonomy, Inc. Hybrid hash tables
GB2480183B (en) * 2009-02-23 2014-04-16 Autonomy Inc Managing workflow communication in a distributed storage system
US20100215175A1 (en) * 2009-02-23 2010-08-26 Iron Mountain Incorporated Methods and systems for stripe blind encryption
US8621569B1 (en) 2009-04-01 2013-12-31 Netapp Inc. Intercluster relationship management
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
US8117388B2 (en) * 2009-04-30 2012-02-14 Netapp, Inc. Data distribution through capacity leveling in a striped file system
US8886940B2 (en) * 2009-05-29 2014-11-11 Apple Inc. Hash function using a card shuffling process
US20110016085A1 (en) * 2009-07-16 2011-01-20 Netapp, Inc. Method and system for maintaining multiple inode containers in a storage server
US8473677B2 (en) * 2009-09-29 2013-06-25 Cleversafe, Inc. Distributed storage network memory access based on memory state
US10210279B2 (en) * 2009-10-28 2019-02-19 International Business Machines Corporation Method, apparatus and software for differentiating two or more data sets having common data set identifiers
US8468135B2 (en) * 2010-04-14 2013-06-18 International Business Machines Corporation Optimizing data transmission bandwidth consumption over a wide area network
US8898206B1 (en) * 2010-04-28 2014-11-25 Netapp, Inc. Mechanism for distributed inode to path traversal in a striped volume system
US11726955B2 (en) 2010-06-19 2023-08-15 Hewlett Packard Enterprise Development Lp Methods and apparatus for efficient container location database snapshot operation
US9323775B2 (en) 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
US8386741B2 (en) * 2010-08-31 2013-02-26 International Business Machines Corporation Method and apparatus for optimizing data allocation
US9286302B2 (en) * 2010-10-28 2016-03-15 Symantec Corporation Inode reuse systems and methods
US9069571B2 (en) * 2010-12-01 2015-06-30 International Business Machines Corporation Propagation of unique device names in a cluster system
US8527699B2 (en) 2011-04-25 2013-09-03 Pivot3, Inc. Method and system for distributed RAID implementation
US9063939B2 (en) * 2011-11-03 2015-06-23 Zettaset, Inc. Distributed storage medium management for heterogeneous storage media in high availability clusters
US8725979B1 (en) * 2012-01-30 2014-05-13 Netapp, Inc. Efficient methods and systems for allocating storage volumes
US9015123B1 (en) 2013-01-16 2015-04-21 Netapp, Inc. Methods and systems for identifying changed data in an expandable storage volume
US9467294B2 (en) 2013-02-01 2016-10-11 Symbolic Io Corporation Methods and systems for storing and retrieving data
US20140223118A1 (en) * 2013-02-01 2014-08-07 Brian Ignomirello Bit Markers and Frequency Converters
US10133636B2 (en) 2013-03-12 2018-11-20 Formulus Black Corporation Data storage and retrieval mediation system and methods for using same
US9304703B1 (en) 2015-04-15 2016-04-05 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
US9628108B2 (en) 2013-02-01 2017-04-18 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
US9817728B2 (en) 2013-02-01 2017-11-14 Symbolic Io Corporation Fast system state cloning
US9971468B2 (en) 2013-02-21 2018-05-15 Atlassian Pty Ltd Automatically generating column layouts in electronic documents
US9697226B1 (en) * 2013-06-28 2017-07-04 Sanmina Corporation Network system to distribute chunks across multiple physical nodes
US20150006846A1 (en) * 2013-06-28 2015-01-01 Saratoga Speed, Inc. Network system to distribute chunks across multiple physical nodes with disk support for object storage
US10747475B2 (en) 2013-08-26 2020-08-18 Vmware, Inc. Virtual disk blueprints for a virtualized storage area network, wherein virtual disk objects are created from local physical storage of host computers that are running multiple virtual machines
US9672115B2 (en) 2013-08-26 2017-06-06 Vmware, Inc. Partition tolerance in cluster membership management
US9811531B2 (en) * 2013-08-26 2017-11-07 Vmware, Inc. Scalable distributed storage architecture
US9887924B2 (en) 2013-08-26 2018-02-06 Vmware, Inc. Distributed policy-based provisioning and enforcement for quality of service
US11016820B2 (en) 2013-08-26 2021-05-25 Vmware, Inc. Load balancing of resources
JP2015072629A (ja) * 2013-10-03 2015-04-16 富士通株式会社 データ処理プログラム及びデータ処理方法
US9323615B2 (en) * 2014-01-31 2016-04-26 Google Inc. Efficient data reads from distributed storage systems
WO2015150976A1 (en) 2014-04-03 2015-10-08 Strato Scale Ltd. Cluster-wide memory management using similarity-preserving signatures
WO2016051512A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
US9912748B2 (en) 2015-01-12 2018-03-06 Strato Scale Ltd. Synchronization of snapshots in a distributed storage system
CN106233265A (zh) 2015-02-26 2016-12-14 斯特拉托斯卡莱有限公司 将访问频率层次结构用于逐出目标的选择
US10061514B2 (en) 2015-04-15 2018-08-28 Formulus Black Corporation Method and apparatus for dense hyper IO digital retention
US9792248B2 (en) 2015-06-02 2017-10-17 Microsoft Technology Licensing, Llc Fast read/write between networked computers via RDMA-based RPC requests
WO2016200403A1 (en) * 2015-06-12 2016-12-15 Hewlett Packard Enterprise Development Lp Disk storage allocation
US10725963B2 (en) 2015-09-12 2020-07-28 Microsoft Technology Licensing, Llc Distributed lock-free RDMA-based memory allocation and de-allocation
US10713210B2 (en) 2015-10-13 2020-07-14 Microsoft Technology Licensing, Llc Distributed self-directed lock-free RDMA-based B-tree key-value manager
US10375167B2 (en) 2015-11-20 2019-08-06 Microsoft Technology Licensing, Llc Low latency RDMA-based distributed storage
CN106156402A (zh) * 2016-06-15 2016-11-23 深圳市紫光同创电子有限公司 Fpga逻辑块阵列的版图布局方法及版图布局
US10572186B2 (en) 2017-12-18 2020-02-25 Formulus Black Corporation Random access memory (RAM)-based computer systems, devices, and methods
US10725853B2 (en) 2019-01-02 2020-07-28 Formulus Black Corporation Systems and methods for memory failure prevention, management, and mitigation

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4156907A (en) 1977-03-02 1979-05-29 Burroughs Corporation Data communications subsystem
US4399503A (en) 1978-06-30 1983-08-16 Bunker Ramo Corporation Dynamic disk buffer control unit
US4598357A (en) 1980-11-14 1986-07-01 Sperry Corporation Cache/disk subsystem with file number for recovery of cached data
US4837675A (en) 1981-10-05 1989-06-06 Digital Equipment Corporation Secondary storage facility empolying serial communications between drive and controller
US4570217A (en) 1982-03-29 1986-02-11 Allen Bruce S Man machine interface
JPS60142418A (ja) 1983-12-28 1985-07-27 Hitachi Ltd 入出力エラ−回復方式
US4896259A (en) 1984-09-07 1990-01-23 International Business Machines Corporation Apparatus for storing modifying data prior to selectively storing data to be modified into a register
JPS61141056A (ja) 1984-12-14 1986-06-28 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 揮発性メモリの間欠エラ−検出方法
US5202979A (en) 1985-05-08 1993-04-13 Thinking Machines Corporation Storage system using multiple independently mechanically-driven storage units
US4805090A (en) 1985-09-27 1989-02-14 Unisys Corporation Peripheral-controller for multiple disk drive modules having different protocols and operating conditions
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
US4899342A (en) 1988-02-01 1990-02-06 Thinking Machines Corporation Method and apparatus for operating multi-unit array of memories
US4864497A (en) 1988-04-13 1989-09-05 Digital Equipment Corporation Method of integrating software application programs using an attributive data model database
US4993030A (en) 1988-04-22 1991-02-12 Amdahl Corporation File system for a plurality of storage classes
US4989206A (en) 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
FR2641540B1 (ja) 1989-01-12 1992-08-14 Solvay
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
US5278979A (en) 1990-12-20 1994-01-11 International Business Machines Corp. Version management system using pointers shared by a plurality of versions for indicating active lines of a version
US5426747A (en) 1991-03-22 1995-06-20 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
JP3160106B2 (ja) 1991-12-23 2001-04-23 ヒュンダイ エレクトロニクス アメリカ ディスクアレーの区分け方法
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
EP1003103B1 (en) 1993-06-03 2008-10-01 Network Appliance, Inc. Write anywhere file-system layout method and apparatus
JPH0830495A (ja) * 1994-07-15 1996-02-02 Matsushita Electric Ind Co Ltd ファイル管理システム
US5809224A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation On-line disk array reconfiguration
US5862312A (en) 1995-10-24 1999-01-19 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
JPH103440A (ja) 1996-06-14 1998-01-06 Fujitsu Ltd 計算機システム
US6081875A (en) 1997-05-19 2000-06-27 Emc Corporation Apparatus and method for backup of a disk storage system
US6061770A (en) 1997-11-04 2000-05-09 Adaptec, Inc. System and method for real-time data backup using snapshot copying with selective compaction of backup data
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
US6304942B1 (en) * 1999-08-09 2001-10-16 Lsi Logic Corporation Providing an upgrade path for an existing data storage system
US6341341B1 (en) 1999-12-16 2002-01-22 Adaptec, Inc. System and method for disk control with snapshot feature including read-write snapshot half
US6928459B1 (en) * 2000-07-18 2005-08-09 International Business Machines Corporation Plurality of file systems using weighted allocation to allocate space on one or more storage devices
US6636879B1 (en) 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6895485B1 (en) * 2000-12-07 2005-05-17 Lsi Logic Corporation Configuring and monitoring data volumes in a consolidated storage array using one storage array to configure the other storage arrays
US6671773B2 (en) 2000-12-07 2003-12-30 Spinnaker Networks, Llc Method and system for responding to file system requests
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
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
US6950966B2 (en) 2001-07-17 2005-09-27 Seachange International, Inc. Data transmission from raid services
US6898668B2 (en) * 2002-06-24 2005-05-24 Hewlett-Packard Development Company, L.P. System and method for reorganizing data in a raid storage system
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
US7127577B2 (en) 2003-01-21 2006-10-24 Equallogic Inc. Distributed snapshot process
US7310703B2 (en) * 2003-10-23 2007-12-18 Hewlett-Packard Development Company, L.P. Methods of reading and writing data
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996463B2 (en) 2015-11-10 2018-06-12 International Business Machines Corporation Selection and placement of volumes in a storage system using stripes
US10402321B2 (en) 2015-11-10 2019-09-03 International Business Machines Corporation Selection and placement of volumes in a storage system using stripes
US11048627B2 (en) 2015-11-10 2021-06-29 International Business Machines Corporation Selection and placement of volumes in a storage system using stripes

Also Published As

Publication number Publication date
EP1875354A1 (en) 2008-01-09
EP1875354B1 (en) 2013-08-14
IL186994A0 (en) 2008-02-09
US7617370B2 (en) 2009-11-10
WO2006119021A1 (en) 2006-11-09
EP1875354A4 (en) 2009-04-08
US20060248273A1 (en) 2006-11-02
JP2008541207A (ja) 2008-11-20

Similar Documents

Publication Publication Date Title
JP5291456B2 (ja) ストレージシステム・アーキテクチャ内のデータ・アロケーション
JP5507670B2 (ja) ストライプ化ファイルシステムにおける能力平準化によるデータ分散
JP4787315B2 (ja) データコンテナの中身をクラスタの複数のボリュームにわたってストライピングするためのストレージシステム・アーキテクチャ
JP5068252B2 (ja) ストレージシステムクラスタの複数のボリュームにわたってデータコンテナをストライピングするためのデータ配置技術
US8990539B2 (en) Extension of write anywhere file system layout
US7904649B2 (en) System and method for restriping data across a plurality of volumes
JP6050316B2 (ja) データストレージシステムにおいて使用される方法及びネットワークストレージサーバ
US7334095B1 (en) Writable clone of read-only volume
US7409511B2 (en) Cloning technique for efficiently creating a copy of a volume in a storage system
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
US7647451B1 (en) Data placement technique for striping data containers across volumes of a storage system cluster

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101216

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101216

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101224

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120203

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120210

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20120323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130607

R150 Certificate of patent or registration of utility model

Ref document number: 5291456

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