JPH08511369A - レードディスクサブシステムを備えた、ファイルシステムのファイル割り当て方法 - Google Patents

レードディスクサブシステムを備えた、ファイルシステムのファイル割り当て方法

Info

Publication number
JPH08511369A
JPH08511369A JP7502001A JP50200195A JPH08511369A JP H08511369 A JPH08511369 A JP H08511369A JP 7502001 A JP7502001 A JP 7502001A JP 50200195 A JP50200195 A JP 50200195A JP H08511369 A JPH08511369 A JP H08511369A
Authority
JP
Japan
Prior art keywords
disk
buffer
data
block
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP7502001A
Other languages
English (en)
Other versions
JP3862274B2 (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 JPH08511369A publication Critical patent/JPH08511369A/ja
Application granted granted Critical
Publication of JP3862274B2 publication Critical patent/JP3862274B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99955Archiving or backup

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

(57)【要約】 本発明は、レードサブシステム(1030)におけるデータブロックの配列の正確な情報を送り出すことができるレードアレー(1030)を備えたファイルシステムの一体化方法に関する。このシステムは、ディスク割り当てを行うため、公知のレードディスクレイアウトを用いる。本発明は、個別のカレント書き込み位置(CWL)ポインタをディスクアレー(1030)の各ディスク(1022)に用い、それらのポインタは書き込みが行なわれる毎にディスク上を進んでゆく。用いられているアルゴリズムには、二つの主要な目的がある。第一の目的は、CWLポインタをできる限り互いに接近した位置に保つことにより、ストライプに複数のブロックを同時に書き込み、レード(1030)の効率を上げることである。第二の目的は、あるファイルの隣接したブロックを同じディスク(1022)に割り当て、読出動作の効率を上げることである。第一の目的は、最も低い位置にあるCWLポインタに基づいてディスク上への書き込が行なわれることにより達成される。第二の目的は、新しいファイルにスペース割り当てがおこなわれる際、またはあるファイルに同じディスク(1022)のN個のブロックに割り当てがおこなわれたときのみに、別のディスクが選択されることにより達成される。その結果、CWLポインタは異なったディスク(1024)上でもNブロック以上離れることはなく、大きなファイルも、同じディスクにN個の連続するブロックに収めることができる。

Description

【発明の詳細な説明】 レードディスクサブシステムを備えた、ファイルシステムのファイル割り当て方 法 発明の背景 1.発明の分野 本発明は、情報を記憶するディスクアレイを用いたファイルシステムの分野に 関する。2.従来技術 一般に、コンピュータシステムにおいては、種々の情報(例えばデータおよび /またはアプリケーションプログラム等)を記憶するためのディスクドライブな どの多くの2次メモリを必要とする。従来のコンピュータシステムにおいては1 つの“ウインチェスター”スタイルのハードディスクドライブを用い、大量のデ ータを永久記憶する構成がとられている。コンピュータやそれに付属のプロセッ サのパーフォーマンスがコード化されるに伴い、大容量のディスクドライブの必 要性やデータ伝送レートのスピード化が望まれるようになった。この要望に歩調 を合わせるため、ディスクドライブパーフォーマンスにおける改良がなされてき た。例えば、データやトラック密度の増加や、メディアの改良や、1つのディス クドライブにおけるヘッドの数やディスクの数の増加等がデータ伝送レートのス ピード化に寄与してきた。 1つのディスクドライブでもって2次記憶装置を構成することの欠点は、より 多くの容量やパーフォーマンスが必要となったときにドライブの取り替えが必要 となることによる出費がある。他の欠点としては、リダンダンシィ(余裕)の無 さであり、単一のディスクドライブにおいてバックアップをとるための容量不足 がある。1つのディスクドライブが故障し、機能しなくなり、または置き換える ことができなくなれば、そのシステムは使うことができなくなる。 単一のディスクドライブシステムにおける上述の欠点を無くしたり軽減するた めに試みられた一つの従来技術として、並列につながれた複数のドライブを使用 するものがある。この場合、データはいくつかの大きな塊に分けられ、複数のド ライブから平行に、かつ同時にアクセスすることもできるし、複数のドライブの うち1つのドライブだけからシーケンシャルにアクセスすることもできる。この ようにディスクドライブを並列に組み合わせたシステムは、“安価なディスクに よる余剰アレイ(redundant array of inexpensive disks)”略してレード(R AID)アレイと呼ばれている。このレードシステムは、大きな1つのディスク ドライブシステムと同じ記憶容量を低価格で提供するものである。更に、アレイ の並列処理により、高速のデータ伝送レートを達成することができる。 レードシステムにおいては、アレイに追加のディスクドライブを加えることに より、段階的に記憶容量を増やしていくことが可能となる。ディスクが故障して もレードシステムが備わっていれば、システム全体を止めることなくそのディス クを取り替えることが可能となる。また、故障したディスクに残っているデータ は、エラー訂正技術を用いることによりリカバリーすることも可能である。 あるレードには6つのディスクアレイが備わっており、それらはレードレベル 0からレードレベル5として呼ばれている。各レードレベルには利点や欠点があ る。以下の説明においては、単にレードレベル4および5について説明する。し かしながら、異なったレードレベルについての詳しい説明はパターソン(Patter son)他著の「安価なディスクを用いた余剰アレイの考察(A Case for Redundan t Arrays of Inexpensive Disks(RAID))」ACM SIGMOD会議, 1988年6月に記載されている。この文献は本願の内容の一部を構成するもの としてここに引用する。 図1は従来技術のレードレベル4を有するシステムを示す。このシステムは、 コンピュータシステムまたはホストコンピュータに通信チャンネル130を介し て接続されたN個のディスク112〜118を有する。図示した例においては、 データは、4キロバイトのブロックまたはセグメントごとに各ハードディスクに 記憶される。ディスク112は、システムのためのパリティディスク、ディスク 114〜118はデータディスク0〜N−1である。レードレベル4は、図1に 示すようにアレーにおけるすべてのディスクに亘ってデータブロックを配るディ スクストライプ方式を用いる。このシステムにおいては、第一のブロックを第一 のドライブに乗せ、残りのN−1個のドライブについても順番に巡回するよう構 成されている。レードレベル4はパリティ用に別のドライブを用い、パリティは ストライプと呼ばれる複数のデータブロックからなるグループ毎にエラー訂正情 報を有する。図1に示すディスクストライプ方式は、一度に大量のデータの読み 書きを行うことが出来るシステムである。各ドライブの一つのセグメントは、同 時に読むことができ、大きなファイルにより速くデータアクセスすることができ る。 レードレベル4のシステムにおいては、複数のブロックからなるファイルはN 個のディスク112〜118に“ストライプ”として記憶される。すなわち、ス トライプとは複数のデータブロックのグループであり、各ブロックはN個のディ スクの1つに記憶されることになる。図1において、第1および第2ストライプ 140,142はそれぞれ点線で示されている。第1ストライプ140はパリテ ィ0ブロックおよびデータブロック0〜N−1から構成される。図に示す例にお いては、第1のデータブロック0はN個のディスクアレイのうちディスク114 に記憶される。第2のデータブロック1はディスク116に記憶され、以下同様 にして記憶が続く。そして、最後のデータブロックN−1はディスク118に記 憶される。当業者によく知られた技術を用いて、ストライプ140に対しパリテ ィチェックが行われ、その結果がディスク112にパリティブロックとして記憶 される。同様にストライプ142にはN−1個のデータブロックが含まれ、デー タブロックNはディスク114に、データブロックN+1はディスク116に、 そしてデータブロック2N−1はディスク118に記憶される。4ストライプ1 42のパリティチェックが行われ、その結果はディスク112にパリティブロッ ク1として記憶される。 図1に示すように、レードレベル4にはパリティディスクドライブが含まれ、 そこにはシステムの各ストライプのエラー訂正情報が含まれている。もし、シス テムにおいてエラーが発生すれば、レードアレイの全てのドライブを用いてシス テムにおけるエラーを訂正する必要がある。通常は1つのドライブにのみアクセ スされるので、レードレベル4は少量のデータを読むのには適している。レード レベル4のアレイはいつでもデータを読むことができるが、エラーがあるときは そのようにはいかない。一方、レードレベル4のアレイは、アレイにデータを書 き込む場合はいつもパリティドライブと協動する。 レードレベル5アレイのシステムも、レードレベル4のシステムと同様にパリ ティを利用する。しかしながら、パリティセクターを常に同じ1つのドライブに 記憶するようなことはしない。レードレベル5においては、パリティブロックの 位置を順次ずらし、N個からなるディスクアレイの全てのディスクに記憶される ようにする。したがって、レードレベル5のシステムはレードレベル4のシステ ムに比べ、パリティデータのアクセスをN−1個のディスクドライブに分散させ 、1ブロック単位でアクセスできるようにした点において改良がなされている。 第1の複数のブロックのセットに対しては、パリティブロックは最初のドライブ に記憶されるようになっている。第2の複数のブロックのセットにおいては、パ リティブロックは第2のディスクドライブに記憶されるようになっている。この ような記憶形態が繰り返され、各セットにパリティブロックが設けられることに なるが、パリティ情報は単一のディスクドライブに記憶されるということは起こ らない。レードレベル4のアレイと同様レードレベル5のアレイも必要とされる データのみを読み出すことができ、そこにエラーが含まれていることもあり得る 。レードレベル5のシステムにおいては、複数のブロックを含むグループに対す るパリティ情報が1つのディスクに収集されることがないので、アレイの複数の 異なったドライブに一度に書き込むことも可能となる。したがって、読み書き動 作はレード4アレイよりもレード5アレイの方がより高速に行うことが可能であ る。 図2はレードレベル5のシステムを備えた従来例のブロック図である。このシ ステムは伝送チャンネル130によりコンピュータシステムまたはホストコンピ ュータ120に接続されるN個のディスク212〜218で構成される。ストラ イ プ240においては、パリティブロックは第1ディスク212に記憶される。デ ータブロック0は第2ディスク214に記憶され、データブロック1は第3ディ スク216に記憶され、以下同様に記憶が行われる。そして、最後にデータブロ ックN−1はディスク218に記憶される。ストライプ212においては、デー タブロックNは第1ディスク212に記憶される。第2のパリティブロック1は 第2ディスク214に記憶される。データブロックN+1はディスク216に記 憶され、以下同様な記憶が行われる。最後に、データブロック2N−1はディス ク218に記憶される。M−1番目のストライプ244では、データブロックM N−Nは第1ディスク212に記憶される。データブロックMN−N+1は第2 ディスク214に記憶される。データブロックMN−N+2は第3ディスク21 6に記憶され、以下同様の記憶が行われる。最後に、パリティブロックM−1は N番目のディスク218に記憶される。したがって、図2に示すようにレードレ ベル5のシステムはレードレベル4のシステムと同様なパリティ情報を記憶する が、レードレベル5のシステムにおいてはパリティブロックの位置が順次ずらさ れ、ディスク212〜218に行き亙るようになっている。 レードレベル5においてはパリティはディスクのアレイにわたって分配される 。この結果、全体のディスクに亙る多重検索を行う必要がある。これはレードア レイの大きさを段階的に増やしていくことを禁止する。何故なら、パリティの構 成により所定量のディスクを一度に増やす必要があるからである。 レードサブシステムの上に載る従来のファイルシステムにおいては、レードア レイを1つの大きな複数のブロックの集合体として認識し、それらブロックはレ ードアレイを横切る方向に順次番号付けが行われる。1つのファイルに含まれる 複数のデータブロックは、複数のデータディスクに亙って分配して記憶され、各 ストライプをできるだけ一杯にした形で記憶され、それぞれのデータブロックは ストライプにおける異なったディスク上に記憶されることになる。第1のストラ イプにN−1個のデータブロックがレードアレイのN−1個のデータディスクの 全てに割り当てられれば、残りのデータブロックは次のストライプに同様なやり 方で割り当てられ、1つのファイルの全体が収まるまで以下同様にして、レード アレイ上に記憶が続けられる。このようにして、1つのファイルはレードシステ ムの複数のデータディスクに亙って記憶され1本のストライプを構成し、同様な ストライプを複数用いることにより記憶がなされる。なお、1本のストライプに はN−1個のデータブロックが含まれている。これでは、1つのファイルにアク セスするためにはN−1のディスクに亙ってアクセスする必要があり、N−1個 のディスクに検索をかける必要があるという欠点を生ずる。したがって、別の従 来例によるファイルシステムにあっては、1つのファイルの全てのブロックを単 一のディスクに書き込むことを行うものがある。しかしこれでは、1つのファイ ルについて1つのデータディスクのみに対して検索が行われ、残りのN−2個の ディスクが十分活用されていないという欠点が生ずる。 ファイルシステム自身には、それが記憶されるレードサブシステムについての 情報は一切有しておらず、かかるレードサブシステムを単なる1つの大きなディ スクとして受け止めている。このような状況の基では、単一のデータブロックの みが1つのストライプに書き込まれ、パリティを計算するためには4つのI/O (入出力)動作を必要とするので、大きなペナルティを生ずることになる。例え ば、引き算によりパリティを行う場合、4回のI/O動作を必要とする。4つの ディスクからなるリードアレイにおいて、1つのディスクがパリティディスクで あれば、1つのストライプに対し3つのデータブロックを書き込み、そしてその データブロックに対するパリティチェックを行うことは、75%(4本のうち3 本のディスクのみを利用しているから)の効率しか得られず、1本のストライプ に1つのデータブロックにのみ書き込む操作においては25%の効率しか得られ ない。 この割り当てアルゴリズムはストライプ全体をできる限り全て利用するもので あり、ファイルの実質的な部分をディスク上に連続した位置に記憶しようとする ものである。このシステムはファイルをディスク上にランダムにちりばめて記憶 することをできるだけ避けるようにしたものであり、複数のディスクの検索を必 要とするものである。もし12キロバイトのファイルが4キロバイトのブロック 毎に3つの個別のディスク(1本のストライプ上)に亙って記憶されたならば、 ファイルにアクセスするためには3つの個別のアクセスが必要となる。他のクラ イエントがファイルシステムからファイルを取り出そうと試みるためキューを発 している間にこのことが行われる。 発明の要約 この発明はレードアレイ技術を伴うファイルシステムの改良に関する。本発明 はレードシステムにおけるデータブロックの配列に関する情報をレード層からフ ァイルシステムへ情報を送る構成に関する。ファイルシステムはこの情報を検査 し、更にレードシステムに書き込まれたブロックの位置の最適化を図るためにそ の情報を利用する。この発明は種々ある番号付け手順よりも優れた番号付け手順 を採用するレードサブシステムを備えたものである。この発明は大きな一塊の情 報を先読みすることにより、そしてストライプを一度に書き込むことにより、レ ードシステムへの書き込みを最適なものにするものである。 より効率の良い動作を得るためにレードアレイにとっては効率の良くないアク セスパターンを避けるため、ここに改良されたレード機能を有するファイルシス テムの開発が、書き込み割り当て方法に照らして行われた。したがって、この発 明においてはレードディスク配置の明白な知識が用いられ、ディスクの割り当て の計画がなされる。本発明においては、ディスクアレイの各ディスクに対し個別 の現在書き込みが行われている位置を示すカレント書き込み位置ポインタが用い られる。これらのカレント書き込み位置ポインタは書き込みが行われる度にポイ ントされているディスクが移り変わっていく。この発明において用いられたアル ゴリズムは、現在の書き込み位置ポインタをできる限り同じストライプに近い位 置に保持するようにし、複数のブロックをストライプに同時に書き込むことがで きるよう、レードの効率の改良を図るものである。本発明はまた、ファイルにお ける隣接したブロックの配置を同じディスクになるように工夫され、データが読 み出される際に効率の改善が図られるよう構成されている。 本発明においては、最下位のカレント書き込み位置ポインタを用いてディスク にデータを書き込む。本発明においてはまた、新しいファイルのためのスペース を割り当て始めるとき、または1つのファイルにつき同じディスクが十分に利用 されたときにのみ新しいディスクを選ぶようになっている。ここで十分に利用さ れたときとは、ブロックの十分な数を言い、一塊のブロックの全てのブロックで あり、一塊とはファイルにおける一連の複数のブロックのうちのある数N個に相 当するものである。複数のブロックが集まった一塊は、ファイルにおいてN個ず つに区切られて並べられたものである。したがって、複数のカレント書き込み位 置ポインタは異なったディスク上であってもNブロック以上離散することはない 。したがって、大きいファイルは同じディスク上にN個の連続したブロックを有 することとなる。 図面の簡単な説明 図1は従来のレードレベル4サブシステムのブロック図、 図2は従来のレードレベル5サブシステムのブロック図、 図3は本発明に基づき、WAFLファイルシステムと一体構成されるレードア レイを使用してファイルを割り当てるための動作を示すフローチャート、 図4は図3のステップ330の詳細を示すフローチャート、 図5は図4のステップ490の詳細を示すフローチャート、 図6はWAFLiノードにより参照されるバッファのツゥリー構造を示す概略 図、 図7はよごれiノードのリストを示す概略図、 図8は図7に示したiノード720によって参照されるバッファのトリー構造 の割り当てを示す概略図、 図9A−9Jは、図5に基づくディスクスペースの割り当てを示す概略図、お よび 図10は本発明に係るシステムの概略図である。 本発明の詳細な説明 レードアレイを用いたファイルシステムにおいて、ファイルを割り当てる方法 について説明する。以下の説明において、種々の具体的データ、例えばポインタ の数やその特性、ディスクブロックの大きさ等、を用いて説明がなされるが、こ れらは、本発明をより完全に理解するためのものである。言うまでもなく、本発 明はこれらの具体的データに限定されるものではなく、これら以外の値であって も達成することができるものである。また、公知の内容等についてはその説明を 簡単にし、発明の内容が不必要に不明瞭なものとならないよう配慮されている。 ネットワークシステムに用いられるコンピュータについては、各ハードディス クはそのネットワークの動作スピードより早いスピードで動作するものとする。 したがって、ガイドシステムにおいては独立した複数のヘッドを用いるのが好ま しい。これによりレードアレイの個別の複数のディスクに記憶された異なったフ ァイルに複数のクライエントが同時にアクセスすることが可能となる。これによ り、レードシステムにおいてデータの引き出しおよび記憶のためのアクセス時間 が非常に短縮できる。 図10は本発明に係るシステムを示すもので、レードサブシステムからなる。 コンピュータ1010は中央演算装置(CPU)1012およびメモリ1014 からなる。CPU1012はバス1016を介してメモリ1012に接続されて いる。バス1016によりコンピュータ1010はレードコントローラ1020 に接続されている。バス1016はまた、コンピュータ1010をネットワーク コントローラ1040に接続する。レードコントローラ1020は、レードアレ イ1030を構成するパリティディスク1020とデータディスク1022〜1 024にバス1026を介して接続される。コンピュータ1010はWAFLフ ァイルシステムにおけるファイルの位置割り当てを行うものであって、WAFL ファイルシステムはレードコントローラ1020とディスク1020−1024 からなるレードディスクサブシステムと一体構成される。 本発明はレードアレイ1030において改良されたブロックの割り当て方法を 提供するものである。このシステムはパリティディスク1020を含むレードア レイであって、N個のディスク1030からなるレードレベル4型のアレイ10 30を利用するものである。残りのディスク1022〜1024は複数のデータ ブロックを記憶するデータディスクである。このレードシステムのストライプは 複数の4キロバイトブロックからなり、各4キロバイトブロックはアレイの異な ったディスクに記憶される。ストライプのそれぞれのブロックはディスクの同じ 対応した位置に記憶される。広い意味では、ファイルは情報を記憶する構成であ って、データは一定の大きさのブロックに分割されたものであると言える。例え ば、本発明においてファイルシステムは4キロバイトのブロックを用いてデータ をディスクに記憶する。なお、言うまでもなく、本発明においては種々のブロッ クサイズ(例えば512,1024,2048バイト等)のものを用いることが でき、いずれも本発明に含まれるものである。したがって、例えば、15キロバ イトのファイルについては4キロバイトのデータブロックが4つ必要となり、1 キロバイトのファイルについては4キロバイトのデータブロックが1つ必要とな る。 本発明においては複数のデータブロックからなるファイルは、1つのレードア レイにおける1つのディスクに所定数のブロックからなる複数のグループに割り 当てられる。これは1バイト毎、もしくはデータブロック(例えば4キロバイト のブロック)毎にN−1個のデータディスクに亙って書き込まれる従来のレード システムとは異なるものである。本発明の好ましい実施形態においては、一つの データディスクの上には最大8データブロック(32キロバイト)からなるグル ープが割り当てられる。ファイルが割り当てられ、個別のディスクへと送り込ま れる。 本発明の重要なポイントは、最大数の異なったファイルに対し、各ディスクに おいて最大32キロバイトの“チャンク(塊)”のデータブロックを同時に記憶 することができる方法を提供することである。理想的には複数のディスクに亙っ て形成される各ストライプは、N−1個の異なったファイルをN−1個のディス クに並列にデータブロックを同時に書き込んで、それが満たされるようになる。 本発明におけるファイルシステムとレードを一体化する概念は、全てのディス クにおける全ての腕がどこにあるかの知識をレードから与えるものであって、そ れにより書き込みの順番を制御することを提案するものである。したがって、い ずれの時点においても、最大のグループの書き込みを行うことができ、パリティ ディスクを“ホット(活動化)”にする必要がなく、レードアレイ全体を通して パリティディスクを見つけ出す必要がない。システムの障害となっていた“ホッ ト”は問題とはならない。何故なら同じ数だけの書き込みを行うことができるか らである。最も好ましい状況は書き込みを行う際、ストライプにおける全てのブ ロックが空きの状態であり、3つのデータディスクに対して行われる3つの書き 込みについてパリティチェックがなされる場合である。しかし、通常のケースに おいてはストライプにおける1つまたは複数のデータブロックが既にデータで満 たされている。これは以前から存在する他のデータがレードサブシステムに記憶 されているからである。したがって、通常のファイルシステムにおいては、例え ば2つは第1ストライプに書き込まれ、第2および第3ストライプのそれぞれに 1つが書き込まれ、第4ストライプに3つが書き込まれるという場合である。し たがって、この場合4本のストライプに亙って書き込まれた7つのデータブロッ クについて4つのパリティ計算を行う必要がある。 本発明はストライプ全体を書き込もうとするとともに、1つのディスクに各フ ァイルを記憶するようにするものである。したがって、パリティディスクにある ヘッドはディスク全体を検索することは必要ない。もし、ヘッドを1つのシリン ダに設ければ、データをディスクからより高速に読み出すことができ、ディスク 毎に多数のトラックに亙って検索する必要がなくなる。これはまた、それぞれの ディスクドライブに設けた1つのシリンダにより1/4メガバイトのデータまた はそれ以上のデータを記憶することができるという利点があり、1つのトラック にファイルの大きな“チャンク(塊)”を書き込むことが可能となる。例えば、 90%満たされたファイルシステムであっても、まだ更に250キロバイトのシ リンダに25KBのデータを記憶することが可能である。この場合、隣のシリン ダにおいてもディスクが1/4回転する間検索することができ、1つのディスク に更に 25KB書き込むことも可能である。したがって、90%満たされたファイルシ ステムであっても、50KBより以下の容量を有するファイルはレードアレイに おける1つのディスクの隣接トラックに速やかに記憶することが可能となる。し たがって、もしファイルをディスクに記憶することがわかっておれば、ディスク は検索のために“ホット”になる必要はない。システムにおける他のディスク以 上により多くの書き込みや検索を経験する必要はない。レードアレイの各ディス クには匹敵する程度の書き込みがある。更に、読み出しの際、割り当て要求であ るファイルのキューは他のディスクのキューに順位が遅らされることはない。 ファイルシステムにはレード層と通信することができるデータ構成を有する。 レード層からはファイルシステムに情報が送られ、レード層のシステムがどのよ うな形態になっているかを知らせる。ファイルシステムのデータ構造はレードシ ステムにおける各ディスクについての情報のアレイが含まれる。同じストライプ に複数のファイルブロックを書き込むことの重要性の理由は他にもある。すなわ ちレードにおいてブロックが更新された場合、1つのデータブロックに書き込み を行う場合4つのディスクのI/Oが必要となるからである。効率の点からすれ ば、1つのブロックを書き込みに、そして2つのブロックを読み取りに用いるよ りも、ストライプに対し3つのブロックを書き込んだ方が好ましい。 個別のディスクのバンド幅よりもネットワークの必要性が高くなるにつれて、 十分な先の情報を読み取ることが好ましく、1つのファイルにアクセスする場合 でも、先に別のディスクにアクセスしておくのが好ましい。これはFDDIおよ びATM等の大きなファイルや高速のネットワークを利用する場合に特に有益で ある。 本発明では、各ディスクに対しディスクの現在の書き込み位置を指定するカレ ント書き込み位置ポインタを設けている。カレント書き込み位置ポインタはディ スクの最終点に到達するまでディスク上で順次その位置がずれていくように構成 され、最終点に到達した後はポインタはディスクの開始点にまで戻ってくる。レ ードアレイの全てのディスクのカレント書き込み位置ポインタはできる限り互い に接近した位置に保たれるようになっている。したがって、各ディスクにおいて ブロック位置の割り当てが順次下の方に移ってくると、レードアレイの処理が行 われるにしたがってストライプが満たされていくこととなる。同じ1つのディス クにファイルを連続して並べるためには、同じ1つのディスクに所定量のブロッ クを割り当てる必要がある。 複数のファイルをグループにまとめるためには、割り当てアルゴリズムはバッ ファを必要とし、ファイルブロックの連続したグループは各ディスクに書き込む ことができると同時に、処理が行われている間はストライプを同時に満たすよう にすることができる。したがって、ファイルはレードシステムに送られて来れば 直ちに書き込みが行われるのではなく、まずバッファに一時的に溜められ、続い てディスクに割り当てられるようになる。最も簡単な形態においては、割り当て アルゴリズムはバッファから(ランダムにもしくはその他の手順で)ファイルを 選出し、書き込み位置ポインタの位置が最も遅れた位置にあるディスクをリード アレイから選び出し、そのディスクから所定量の連続したブロック(4KBを8 ブロック)であって使用可能なものを探し、そのファイルを書き込むためにそれ らブロックを割り当てる。NFSシステムにおいては、ファイルサーバに送られ てくるファイル要求は通常8KBのデータの単位で送られてくる。本発明におい ては32KBのセグメント分のデータを先んじて読み出し、そのデータ量は各デ ィスクに連続して書き込むことができるファイルデータ量と同等な量である。こ の方法の基本的概念によれば、各ディスクに連続して記憶可能なデータ量は、各 ディスクにおいて先行して読むことができるデータ量に相当する。もしブロック がディスク上連続して並んでいなければ、中間にスペースが存在することとなり 、書き込み位置ポインタを進めるにはそれをとばして進めなければならない。カ レント書き込み位置ポインタが現在の最下点を越えて移動したとき、ストライプ におけるファイルシステムによりブロックはレードサブシステムに送り込まれる 。したがって、データブロックは互いに一体となってストライプとしてレードサ ブシステムに書き込まれ、より好ましいシステムの特性を得ることができる。こ れは、 通常のファイルシステムの下にレードサブシステムを配置する従来のシステムと は異なるものである。従来のシステムにおいては最適な環境を得るため、ファイ ルシステムとレードサブシステムの層の間に大きなキャッシュ(cache)を用い ることが試みられていた。そしてそのキャッシュはファイルサイズと同じ大きさ のストライプを見つけるように設計されていた。したがって、従来のレードサブ システムにおいては、ファイルシステムのブロックをどこに配置するかの制御を することができなかった。ほとんどのユニックス(UNIX)のファイルシステ ムにおいては、ファイルを望み通りの位置に並べることはできず、決められた位 置に順番に並べるだけであった。したがって、1メガバイトのキャッシュを有す る従来のシステムにおいては、1メガバイトの“チャンク”(キャッシュサイズ )のデータのグループが、例えば10ギガバイトの大きなレードシステムにラン ダムに送り込まれたとき、連続して並べられるようなことはまずあり得なかった 。 本発明においては8の単位(32KB)の1つのファイルにアクセスする場合 、ディスク間におけるスワッピング(データの行き来)をほとんど無くすことが できる。任意場所書き込みファイルシステムレイアウト(Write Anywhere File-system L ayout) 本発明は任意場所書き込みファイルシステムレイアウト(Write Anywhere Fil e-system Layout)(WAFL)と名付けられたファイルシステムを採用するも のである。広い意味では、WAFLはファイルシステムレイアウトの情報が記憶 されているメタ(超)−データを記憶するファイルを利用するものである。この ファイルシステムはフラグメントを一切用いない4キロバイトのブロックを用い るブロック単位で構成されるものである。WAFLファイルシステムにおける複 数のファイルは全てiノードにより表され、iノードには各ファイルのサイズ、 位置、制作者、その他ファイルに関する情報が含まれている。第3に、ディレク トリはこのシステムにおいては単なるファイルであり、それらファイルは特別に フォーマットがなされている。このWAFLにおいて2つの重要な中核(in-cor e)とな るデータ構造はWAFLiノードとWAFLバッファである。WAFLiノード はファイルシステムにおいて特別のファイルを示すものである。それにはディス ク上のiノードの全ての情報の外、他の情報が含まれる。WAFLバッファは、 メモリになるファイルの1つの4キロバイトデータブロックを記憶するものであ る。WAFLiノード 図6はWAFLiノード610の概略図を示す。ここにおいてファイルは間接 WAFLバッファ620〜624と、直接WAFLバッファ630〜634から 構成される。WAFLインコア(中核的)iノード610は、スタンダードiノ ード情報610A(汚れたバッファ(dirty buffers)のカウントを含む)、W AFLバッファデータ構造610B、16個のバッファポインタ610C、およ びスタンダードオンディスクiノード610Dを含むものである。インコアWA FLiノード610は約300バイトの大きさを有する。オンディスクiノード は128バイトの大きさを有する。WAFLバッファデータ構造610Bは2つ のポインタを有し、第1番目のポインタは16個のバッファポインタ610Cを 参照し、第2番目のポインタはオンディスクブロックナンバー610Dを参照す る。 各iノード610には汚れバッファのカウントを有し、それが参照される。i ノード610は、汚れiノードのリストおよび/または汚れバッファを有するi ノードのリストに加えられることができる。iノードによって参照される全ての 汚れバッファは、ディスクに書き込まれることが予定されたものか、既にディス クに書き込まれたものである場合、iノード610に対する汚れバッファのカウ ントは0にセットされる。iノード610はそのフラッグ(すなわち汚れバッフ ァを含まないことを示すフラッグ)により再キューされる。このiノード610 は次のiノードが処理される前にクリアされる。 WAFLバッファ構造は直接WAFLバッファ620により構成される。WA FLバッファ620は、WAFLバッファデータ構造620Aと、1024個の WAFLバッファポインタを有する4KBバッファ620Bと、1024個のオ ンディスクブロックナンバーを有する4KBバッファ620Cからなる。102 4個のオンディスクブロックナンバーはディスクからブロックの正確な内容を参 照する。バッファ620Cの1024個のポインタは子ブロックとして導入され 、キャッシュにおいてバッファ620に記憶される。WAFLバッファデータ構 造は56バイトの容量を有し、2つのポインタを備えている。WAFLバッファ データ構造620Aの1つのポインタは4KBバッファ620Bを参照し、第2 番目のポインタはバッファ620Cを参照する。図6において、WAFLiノー ド610の16個のバッファポインタ610Cは、16個の単一−間接WAFL バッファ620〜624をポイントする。さらに、WAFLバッファ620は1 024個の直接WAFLバッファ構造630〜634を参照する。WAFLバッ ファ630は直接WAFLバッファを表すものである。 WAFLバッファ630はWAFLバッファデータ構造630Aと、オンディ スク4KBデータブロックに対応するキャッシュメモリを含む4KB直接バッフ ァ630Bからなる。直接WAFLバッファ630は、間接WAFLバッファ6 20にあるバッファ620Cのような4KBバッファを含まない。WAFLバッ ファデータ構造630Aの第2バッファポインタは0にされ、第24KBバッフ ァをポイントすることはない。これによりメモリの非効率的な使用が避けられる 。何故なら、メモリスペースはそうでなければ未使用バッファとして認識される からである。 図6に示すWAFLファイルシステムにおいては、WAFL中核iノード構造 610はWAFLバッファ構造620〜624および630〜634のツゥリー 構造を参照する。これは、間接および/または直接ブロックをポイントしている ブロックナンバーからなるスタンダードのiノードによって参照されるディスク 上のブロックのツゥリー構造と同様なものである。したがって、WAFLiノー ド610は、16個のボリュームブロックナンバーからなるオンディスクiノー ド610Dのみからなるのではなく、WAFLバッファ構造620〜624およ び630〜634をポイントする16個のバッファポインタ610Cをも含むも のである。WAFLバッファ630〜634はボリュームブロックナンバーによ り参照されるブロックであって、キャッシュされた内容のものを含む。 WAFL中核iノード610は16個のバッファポインタ610Cを含む。そ して、16個のバッファポインタ610CはWAFLバッファ構造610Bによ り参照され、このWAFLバッファ構造610BはWAFLバッファ620〜6 24および630〜634のツゥリー構造の根幹(ルート)を成すものである。 したがって、各WAFLiノード610は、1つのWAFLバッファ構造610 Bを含み、このWAFLバッファ構造610Bはiノード610の16個のバッ ファポインタ610Cをポイントするものである。これは、再帰的に実行される (後で説明)バッファのツゥリーを扱うアルゴリズムを簡単なものにする。もし 、iノード610の16個のバッファポインタ610CがWAFLバッファコー ド610Bにより表されていなければ、バッファ620〜624および630〜 634の全ツゥリーに対して動作する機能的アルゴリズムを実行することは難し くなる。汚れブロックを有するiノードのリスト WAFLファイルシステムのWAFL中核iノード(すなわち図6に示すWA FLiノード610)はそのステータスにより異なったリンクのリストで保全さ れる。汚れデータを含むiノードは図7に示すように、汚れiノードリストに加 えられる。従来から知られているように、汚れていない有効なデータを含むiノ ードは別のリストに加えられ、有効なデータを全くもたないiノードはさらに別 なリストに加えられる。本発明においては汚れデータブロックを有するiノード のリストを利用するので、割り当て書き込みを行う必要がある全てのiノードを 見つけ出す機能を容易にすることができる。 図7は本発明に係る汚れiノードのリスト710の概略図である。汚れiノー ドのリスト710はWAFL中核iノード720〜750からなる。図7に示す ように、各WAFL中核iノード720〜750は、それぞれポインタ720A 〜750Aを有し、それによりリスト中にリンクされた他のiノードをポイント する。例えは、WAFLiノード720〜750はそれぞれ2048,2152 ,2878,3448,3712で示されるメモリ位置に記憶されている。した がってiノード720のポインタ720Aはアドレス2152を有する。これに よりWAFLiノード722がポイントされる。さらに、WAFLiノード72 2はそこに書かれたアドレス2878を用いてWAFLiノード730をポイン トする。続いてWAFLiノード730はWAFLiノード740をポイントし 、WAFLiノード740はiノード750をポイントする。WAFLiノード 750のポインタ750Aには何も記憶されていないので、これ以後はいずれの iノードをもポイントすることはない。すなわちこれが汚れiノードのリスト7 10に挙げられた最後のiノードであることがわかる。 リスト710の各iノードは図6で示したバッファのツゥリー構造からなるフ ァイルを表す。各iノード720〜750により参照される少なくとも1つのバ ッファは汚れバッファである。汚れバッファは修正されたデータを含み、その修 正されたデータはWAFLシステムにおける新しいディスクの位置に書き込まら れなければならない。WAFLは常に汚れバッファをディスク上の新たな位置に 書き込む。図7に示す汚れiノードのリスト710は単一にリンクされたリスト として示されているが、当業者には容易であるようにWでリンクされたリストや 他の適切なデータ構造をとるようにしてもよい。 WAFLシステムとは異なり、FFSにおいては、バッファは、バッファに記 憶されたディスクブロックの物理的ブロック数に基づいて把手されたキャッシュ に保持される。この方法は、新しいデータが書き込まれるや否や、ディスクスペ ースは常に割り当て可能な状態にあるディスクシステムについては良好に行うこ とができる。しかしながら、WAFLのようにメガバイト級やそれ以上のデータ がディスク上に書き込まれる前にキャッシュに集められるようなシステムについ ては全く機能しない。ファイル割り当てアルゴリズム 図3は本発明に係るファイル割り当て方法を示すフローチャートである。この アルゴリズムはステップ310のスタートから始まる。ステップ320において 汚れブロックを有するiノードのリストから汚れブロックを含むiノードが選択 される。ステップ330において、iノードで表されたバッファのツゥリー構造 がディスク上に割り当て書き込みがなされる。判定ブロック340においては、 汚れリストにある全てのiノードが処理されたかどうかの判定が行われる。もし 判定結果が偽(NO)であれば、ステップ320に戻る。しかし、判定ブロック 340の結果が真(YES)であれば、ステップ350へ進む。ステップ350 において、全ての書き込みが行われていないストライプはディスク上に送出され る。そしてステップ360でこのアルゴリズムは終了する。キャッシュにあるフ ァイルが割り当てのために選択されれば、まずダイレクトリィの割り当てが行わ れる。次に、ファィルは一番使っていなかったところの選定(lest-recently-us ed(LRU)basis)に基づいて割り当てが行われる。 図4は、ディスクにバッファのツゥリー構造の形で割り当てられたバッファを 書き込む図3のステップ330のフローチャートが示されている。図3のステッ プ330では、iノードを参照したバッファのツゥリー構造はライトアロケート (Write Allocate)(iノードのルートバッファポインタ)と名付けられたアル ゴリズムによって割り当て書き込みが行われる。16個のバッファポインタ61 0Cを参照するWAFLiノード610のバッファデータ構造610Bにあるポ インタはアルゴリズムに送られる。図4においてこのアルゴリズムはステップ4 10から開始される。ステップ410でバッファポインタがライトアロケートア ルゴリズムに送られる。判断ブロック420では、バッファポインタの子バッフ ァのすべてが処理されたかどうかが判定される。判断ブロック420の結果が真 (YES)であれば、ステップ430へ進む。ステップ430において再帰的ア ルゴリズムにより呼び出し処理に戻る。従ってライトアロケーションアルゴリズ ムは図3に示す判断ブロック340である呼び出し処理まで戻る。別の方法とし ては、図4に示す判断ブロック480に戻り、再帰的な呼び出し(後に説明)を 行うこと も可能である。 判断ブロック420の結果が偽(NO)であれば、ステップ440へ進む。ス テップ440においてバッファポインタにより参照されるバッファの子バッファ が取り込まれる。判断ブロック450ではこの取り込んだ子バッファが最下位の ものかどうかの判定が行われる。判断ブロック450の結果が偽(NO)であれ ば、ステップ460へ進む。ステップ460ではライトアロケートアルゴリズム が子バッファポインタを用いて再帰的に呼び出される。続いて、判断ブロック4 80が実行される。判断ブロック450の結果が真(YES)であれば、ステッ プ480へ進む。判断ブロック480では、子バッファが汚れているか否かの判 定が行われる。判断ブロック480の結果が真(YES)であれば、ステップ4 90へ進む。ステップ490では、アロケートスペース(子バッファポインタ) と呼ばれるアルゴリズムを呼び出し、子バッファのためのディスクスペースが割 り当てられる。その後判断ブロック420に戻る。判断ブロック480の判断結 果が偽(NO)であれば、判断ブロック420が続いて実行される。図4に示さ れるアルゴリズムについては、すべての子バッファに対して深さ優先−ポストビ ジト−トラバーサル(depth−first post−visit traversal)が実行され、汚れ たものについては新しいディスクスペースが割り当てられる。ポストビジトトラ バーサルが必要なのは、子バッファにスペースを割り当てることにより親バッフ ァが変わるからである。 図5は、図4に示したステップ490であってディスク上にスペースを割り当 てる工法を詳しく説明するフローチャートである。ステップ510において、ス ペースを割り当てるアルゴリズムが、すでにディスク上にスペースが割り当てら れたバッファのバッファポインタに送られる。判断ブロック420において、今 回のバッファは、前回のバッファとは異なったファイルから作られたバッファか 、または前回のバッファとも異なった先読みチャンクからのバッファかの判断が 成される。判断ブロック520の結果が真(YES)であれば、ステップ530 へ進む。ステップ530では書き込まれるべきディスクが選定される。ここで選 ばれ るディスクは、最下位のカレント書き込み位置ポインタ(current-write locati on(CWL)pointer)を参照して行われる。優先的に書き込みが行われるディ ホルトディスクは、ポインタの値が1番低い値のものである。その後ステップ5 40が実行される。判断ブロックの結果が偽(NO)であれば、ステップ540 へ進む。 ステップ540で、バッファとして使用される古いブロックはフリーにされる 。バッファに使用される古いブロックがフリーにされるためには、ブロックマッ プ(blkmap)ファイルを更新し、特定されたブロックのエントリーにはそのブロ ックがアクティブファイルシステムによりもはや使用されていない旨が表示され る。これはblkmapファイルの特定ブロックにおけるエントリーの部分をビット0 (0)で一掃することにより達成される。ステップ550において、選ばれたデ ィスク上にカレントブロックが割り当てられる。これは、plkmapファイルにおい て割り当てたように、書き込みが行われるべきディホルトディスクのCWLポイ ンタをマークし、blkmapファイルを走査して次のCWLポインタを見け出し、選 ばれたディスクのブロックに達することにより行われる。ステップ550は、図 5に示すアルゴリズムに新しく割り当てられたブロックを支持する。 ステップ560において、ディスク上において割り当てられたブロックはバッ ファに当てられる。ステップ570において、そのバッファは選ばれたディスク における書き込み可能なバッファのリストの一つに加えられる。ステップ580 において、可能な場合はストライプを書き込む。ストライプ580において、完 全なストライプの一部を構成しているバッファがあるか否かをディスクバッファ 9に基づいてチェックする。それらのバッファはグループとしてレードサブシス テムに送られ、出来るだけ効率よく一体となった形で書き込まれる。ステップ5 90でアルゴリズムは呼び出しアルゴリズムに戻る。 ブロックがフリーにされたり割り当てられたりするに従って、ステップ530 〜550では、フリーブロック管理機能(free block management functions) が用いられる。これらの機能により、現在書き込まれたディスクや各ディスクに おいてどれが次のフリーブロックになるか等の経過を保持するグローバルな変数 等 を保全する。またこれらは、blkmapファイルのエントリーを更新する。ファイル システムが開始されれば、CWLポインタは初期化され、ディスク上の最初のフ リーブロックをポイントする。フリーブロックが順次使われるの従って、CWL ポインタは進められ、これはディスクの終端に到達するまで繰り返し行われる。 この時点において、選択はディスクの最初のフリーブロックに戻る。 ステップ560〜580はディスク入力/出力(I/O)機能についての動作 である。これらの機能は各ディスクにおけるI/O動作を管理する。各ディスク にはディスクへの書き込み待ちのバッファに対するキューがある。ストライプ上 に完成されたデータが生成されれば、バッファはキュー状態から開放され、ディ スクのI/Oサブシステムに書き込まれる。すべてのディスクのCWLポインタ の値がストライプのブロックをパスすれば、1本のストライプが完成される。す なわち、例えばCWLポインタの値がそれぞれ231、228、235である3 つのデータディスクがあった場合、最も低い値である228以下の値を有するス トライプはすべて完成されたものであると言える。 図3および図4で説明したように、図5に示すスペース割り当てアルゴリズム は処理される汚れバッファのいずれに対しても呼び込まれる。図3および図4に 示すアルゴリズムは1ファイルずつ処理を行い、それらファイルは順次処理が行 われる。従って、汚れバッファのためのスペース割り当てアルゴリズムはランダ ムに呼ばれるのではなく、各ファイルに対して複数の汚れバッファについて呼ば れることとなる。 本願発明においては、リードアレイにグループ化されたブロックをディスク上 で割り当てる際、2つの制約条件を満たす必要がある。第1の制約条件は、先読 み機能を改良するため、同じディスク上にファイルの一連のブロックを割り当て ることである。第2の制約条件は、リードアレイの書き込み機能を改良するため 、ストライプにおけるすべてのフリーブロックを同時に割り当てることである。 このアルゴリズムにおいては、割り当てのため特定のファイルを選択し、汚れ ブロックをファイル上に割り当てるためリードアレイからディスクを選択し、フ ァ イルの一連の汚れブロック用にディスク上において一連のフリーブロックを割り 当てることにより第1の制約条件を満たしている。またこのアルゴリズムにおい ては、0から始め、ブロック割り当てが起こるたびに現在の書き込みデータをイ ンクリメントさせ、ディスクの終端までこのインクリメントを繰り返し、各ディ スクにおいて現在の書き込み位置の情報を正しく保つことにより第2の制約条件 が満たされる。リードアレイにおけるすべてのディスクの現在の書き込み位置を 互いに近い値になるようにすることにより、同じストライプにおけるブロックは ほぼ同じ時に割り当てが行われる。現在の書き込み位置情報を互いに接近した値 に保つための一つの方法として、ディスク上で割り当てるブロックを常に現在の 書き込み情報が1番低い値のものを選ぶようにする方法がある。 ストライプ毎のブロックをレードに送るためには要求を遅らす必要がある。な ぜなら、ディスク間において必ずしも同じ現在書き込み位置情報を有していると は限らないからである。従って、各ディスク毎に書き込むべきバッファのキュー が備わっている。ディスク上のブロックナンバーがすべてのディスクにおける現 在の書き込み位置情報の最低値より小さい値を有するバッファは書き込みに最も 適したバッファである。本願発明においては、レードアレイにおけるすべてのデ ィスクをスキャンし、同じ現在書き込み位置情報を有するブロック(すなわち同 じストライプにあるバッファ)を見付け、ストライプ毎のバッファをレードサブ システムに送り込むことができるようにする。この点については以下にさらに詳 述する。 汚れバッファを有するiノードの処理 図7に示す汚れiノードのリスト710は、図3に示すフローチャートに基づ き以下のように処理される。ステップ320において、iノード720は汚れi ノードのリスト710から選びだされる。WAFL中核iノード720により参 照されるバッファのツゥリー構造はステップ330において割り当て書き込みが なされる。判断ブロック340において汚れiノードのリスト720にあるすべ てのiノードが処理されたか否かが判断される。判断ブロック340の結果が偽 (N O)であれば、ステップ320へ進む。ステップ320では、汚れバッファを有 する次のiノード722が選ばれる。iノード722はリスト710における前 のiノード720によって参照される。ステップ330においてWAFL中核i ノード722によって参照されるバッファのツゥリー構造は割り当て書き込みさ れる。判断ブロック340において、汚れiノードのリスト710にあるすべて のiノードが処理されたか否かが判断される。判断ブロック340の結果が偽( NO)であったとする。この場合はiノード730および740は同様な方法で 処理される。ステップ330においてiノード740が割り当て書き込みが成さ れれば、判断ブロック340において汚れリストにおけるすべてのiノードが処 理されたか否かがチェックされる。判断ブロック340の結果が偽(NO)であ れば、ステップ320に進む。 ステップ320においてiノード740によりポイントされるiノード750 が汚れiノードのリスト710から選出される。ステップ330においてiノー ド750はリスクに割り当て書き込みされる。判断ブロック340において、汚 れiノードのリスト710におけるすべてのiノードが処理されたか否かが判定 される。ここでポインタ750Aは空である。従って、iノード750はリスト 710においては次のiノードの指定を行うことはない。従って、判断ブロック 340の結果は真(YES)となり、続いてステップ350が実行される。ステ ップ350においては、書き込まれていないストライプはすべてディスクへ一気 に送出される。従って、ステップ350において汚れiノードのリスト710に おける汚れiノード720〜750のすべてについて割り当て書き込みが行われ たとすれば、キュー状態にあるバッファや未完成のストライプは以下に説明する ように、すべて強制的にディスクに送り出される。ステップ360においてこの アルゴリズムは終了する。 バッファのツゥリー構造の割り当て書き込み 図8は、iノード810により参照されるバッファ820〜850,860A 〜860F,870A〜870Dのツゥリー構造の割り当てを示すものである。 WAFLiノード810は16個のバッファポインタ810Aと、16個のバッ ファポインタ810Aを参照するWAFLバッファデータ構造810Bで構成さ れる。図8において、間接バッファ820および830は汚れており、間接バッ ファ840〜850はクリーンである。同様に直接バッファ860A〜860B および860Dは汚れており、直接870Bも汚れている。残りのすべてのバッ ファはクリーンである。ここでは、図6で示したWAFLバッファの簡単化され たものが示されている。この図8における簡単化されたブロック図は図5に示す アルゴリズムを説明するためのものである。 図8において、WAFLiノード810はWAFLバッファ820〜850, 860A〜860F,870A〜870Dのツゥリー構造を参照する。WAFL iノード810の16個のバッファポインタ810AはWAFLバッファ構造8 10により参照される。続いて、バッファポインタ810Aは間接WAFLバッ ファポインタ820〜850のそれぞれを参照する。図8において、バッファポ インタ810Aは汚れWAFLバッファ820、汚れWAFLバッファ830、 クリーンWAFLバッファ840、クリーンWAFLバッファ850を参照する 。間接WAFLバッファのそれぞれは、1024個の直接WAFLバッファ(図 6に示すディスク上のボリュームブロックナンバー620Cと共に)を参照する 1024個のバッファポインタから構成される。直接WAFLバッファ860A 〜860Bおよび860Dは汚れている。間接WAFLバッファ820により参 照される直接WAFLバッファ860Cおよび860E〜860Fはクリーンで ある。間接WAFLバッファ830により参照される直接WAFLバッファ87 0Bも汚れている。直接WAFLバッファ870Aおよび870C〜870D。 すべての子バッファに対し深さ優先ポストビジトトラバーサルを行う一方、汚 れWAFLバッファを新しいブロックに割り当てる方法を図4を参照しながら以 下に述べる。ステップ410において割り当て書き込みアルゴリズムは、WAF Liノード810の16個のバッファポインタ810Aを参照するWAFLiノ ード810のWAFLバッファ構造810Bのバッファポインタをパスする。判 断 ブロック420において、WAFLバッファ構造810Bに含まれるバッファポ インタのすべての子バッファ(この場合間接WAFLバッファ820〜850) のすべてが処理されたか否かが判断される。判断ブロック420の結果が偽(N O)であったとする。ステップ440において間接WAFLバッファ820が8 10BにおけるWAFLバッファポインタの子バッファであるとして取り込まれ る。判断ブロック450において、問接WAFLバッファポインタ450がツゥ リー構造における残っているものの中で最下位のものか否かが判断される。判断 ブロック450の結果が偽(NO)であれば、ステップ460へ進む。ステップ 460では、間接WAFLバッファ820のバッファポインタをパスすることに より割り当て書き込みアルゴリズムが呼び込まれる。従って、割り当て書き込み アルゴリズムが再帰的に呼び込まれる。 ステップ410において、間接WAFLバッファ820のバッファポインタを パスすることにより割り当て書き込みアルゴリズムが呼び込まれる。判断ブロッ ク420において、間接WAFLバッファポインタ820のすべての直接WAF Lバッファ860A〜860Fが処理されたか否かが判断される。判断ブロック 420の結果が偽(NO)であったとする。ステップ440において、直接WA FLバッファ860Aが取得される。判断ブロック450において直接WAFL バッファ840はツゥリー構造において残っているものの内の最下位のものであ るか否かが判断される。判断ブロック450の結果が真(YES)であれば、判 断ブロック480へ進む。判断ブロック480では、直接WAFLバッファ86 0Aは汚いか否かが判断される。ここでは判断ブロック480からは真(YES )の結果が得られる。なぜなら、直接WAFLバッファ860Aは汚れているか らである。ステップ490において、WAFLバッファ860Aのバッファポイ ンタを図5に示すスペース割り当てアルゴリズムへパスすることにより直接WA FLバッファ860Aのスペースが割り当てられる。直接WAFLバッファ86 0Aのスペースが割り当てられれば、判断ブロック420へと進む。 判断ブロック420では、直接WAFLバッファ820の子バッファのすべて が処理されたか否かが判断される。判断ブロック420の結果が偽(NO)であ ったとする。ステップ440で直接WAFLバッファ860Bが取り込まれる。 判断ブロック450において、直接WAFLバッファ860Bはツゥリー構造に 残っているレベルの内の最下位のものであるか否かが判断される。判断ブロック 450の結果が真(YES)であったとする。判断ブロック480において、直 接WAFLバッファ860Bは汚いか否かが判断される。判断ブロック480の 結果が真(YES)であるので、ステップ490において直接WAFLバッファ 860Bにディスクスペースが割り当てられる。ステップ490においてスペー スの割り当ての呼び出しが完了すれば、次に判断ブロック420へ進む。 判断ブロック420において、間接WAFLバッファ820のすべての子バッ ファが処理されたか否かが判断される。判断ブロック420の結果はここでは偽 (no)となる。ブロック440において、直接WAFLバッファ860Cが取り 込まれる。判断ブロック450において、直接WAFLバッファ860Cがツゥ リー構造において残っているレベルの内で最も低いレベルであるか否かが判断さ れる。判断ブロック450の結果はここでは真(yes)である。判断ブロック4 80において、直接WAFLバッファ860Cが汚れているか否かが判断される 。ここでは直接WAFLバッファ860は修正されておらず、したがってクリー ンであるので判断ブロック480の結果は偽(no)である。続いて判断ブロック 420が実行される。図4に示すこの間接WAFLバッファ820の子バッファ に対するスペースの割り当てプロセスは、直接WAFLバッファ860F(10 24番目のバッファ)が処理されるまで続行される。直接WAFLバッファ86 0F(間接WAFLバッファ820の最後の子バッファ)はクリーンであるので 、判断ブロック480の結果は偽(no)である。続いて判断ブロック420が実 行される。判断ブロック420において、間接WAFLバッファ820の子バッ ファ(直接WAFLバッファ860A〜860F)のすべてが処理されたか否か が判断される。ここでは判断ブロック420の結果は真(yes)であるので、ス テップ430において呼び出しアルゴリズムが実行される。 ステップ430において、再起的呼び出しにより判断ブロック480が実行さ れる。判断ブロック480において、子バッファ(間接WAFL820)が汚い か否かが判断される。判断ブロック480の結果はここでは真(yes)であるの で、続いてステップ490が実行される。ステップ490において、間接WAF Lバッファ820のバッファポインタをパスさせてスペース割り当てアルゴリズ ムを呼び出すことにより間接WAFLバッファ820に対しディスクスペースが 割り当てられる。ステップ490の処理が終わると、判断ブロック420が実行 される。判断ブロック420において、WAFLiノード810のWAFLバッ ファ構造810Bに含まれるバッファポインタのすべての子バッファ(間接WA FLバッファ820〜850)について処理が終わったか否かが判断される。判 断ブロック420の結果はここでは偽(no)である。ステップ140において、 間接WAFLバッファ830が取り込まれる。判断ブロック450において間接 WAFLバッファ830がツゥリー構造に残っているレベルの最も低いレベルで あるか否かが判断される。判断ブロック450の結果が偽(no)であるので、続 いてステップ460が実行される。ステップ460において間接WAFLバッフ ァ830のバッファポインタをパスすることにより割り当て書き込みアルゴリズ ムが再起的に呼び込まれる。その後図4に示すアルゴリズムを実行するステップ 410が開始される。 ステップ410において間接WAFLバッファ830のバッファポインタは割 り当て書き込みアルゴリズムにパスされる。判断ブロック420において、間接 WAFLバッファ830のすべての子バッファ(直接WAFLバッファ870A 〜870D)が処理されたか否かが判断される。判断ブロック420の結果はこ こでは偽(no)であるので、続いてステップ440が実行される。ステップ44 0において、直接WAFLバッファ870A(間接WAFLバッファ830の子 バッファ)が取り込まれる。判断ブロック450において、直接WAFLバッフ ァ870Aがツゥリー構造における残りのレベルにおける最下位のレベルである か否かが判断される。判断ブロック450の結果は真(yes)であるので、続い て判断 ブロック480が実行される。判断ブロック480において、直接WAFLバッ ファ870Aが修正され、したがって汚れた子バッファであるか否かが判断され る。判断ブロック480の結果は偽(no)である。なぜなら直接WAFLバッフ ァ870Aはクリーンであるからである。続いて判断ブロック420が実行され る。 判断ブロック420において、間接WAFLバッファ830の次の子バッファ (直接WAFLバッファ870B)が処理されたか否かが判断される。判断ブロ ック420の結果が偽(no)であるので、続いてステップ440が実行される。 ステップ440において、直接WAFLバッファ870Bが取り込まれる。判断 ブロック450において、直接WAFLバッファ870Bがツゥリー構造に残っ ているレベルの最下位レベルであるか否かが判断される。判断ブロック450の 結果は真(yes)であるので、続いて判断ブロック480が実行される。判断ブ ロック480において、直接WAFLバッファ870Bが汚れバッファであるか 否かが判断される。判断ブロック480の結果が真(yes)であるので、続いて ステップ490が実行される。ステップ490において直接WAFLバッファ8 70Bのバッファポインタを用いてスペース割り当てアルゴリズムが呼び込まれ ることにより直接WAFLバッファ870Bに対しディスクスペースが割り当て られる。その後判断ブロック420が実行される。 親の間接WAFLバッファ830の残りのクリーンな直接WAFLバッファ8 70C〜870Dは、図4に示すアルゴリズムにより処理される。間接WAFL バッファ830の子である残りの直接WAFLバッファ870C〜870Dはク リーンであるので、これらのバッファに対してはディスクスペースは割り当てら れない。判断ブロック480において直接WAFLバッファ870Bが汚れてい るか否かの判断がなされるが、その結果は偽(no)である。続いて判断ブロック 420が実行される。判断ブロック420において間接WAFLバッファ830 のすべての子バッファ(直接WAFLバッファ870A〜870D)が処理され たか否かが判断される。判断ブロック420の結果が真(yes)であるので、続 いてステップ430が実行される。ステップ430において、呼び出しアルゴリ ズムが 実行される。続いて判断ブロック480が実行される。判断ブロック480にお いて間接WAFLバッファ830が汚れているか否かが判断される。判断ブロッ ク480の結果は真(yes)であるので、続いて490が実行される。ステップ 490において、間接WAFLバッファ830のバッファポインタをパスし、ス ペース割り当てアルゴリズムを呼び出すことにより、間接WAFLバッファ83 0に対しディスクスペースが割り当てられる。その後判断ブロック420が実行 される。 判断ブロック420において、WAFLiノード810のWAFLバッファ構 造810Bに含まれるバッファポインタの子バッファ(間接WAFLバッファ8 20〜850)のすべてが処理されたか否かが判断される。したがって、間接W AFLバッファ840〜850は、間接WAFLバッファ850が処理されるま で、上述したように割り当て書き込みアルゴリズムにより再起的に処理される。 判断ブロック480において間接WAFLバッファ850が汚いが否かが判断 されれば、この判断ブロック480の結果は偽(no)となる。なぜなら間接WA FLバッファ850はクリーンだからである。その後判断ブロック420は実行 される。判断ブロック420においてWAFLiノード810のWAFLバッフ ァ構造810Bに含まれるバッファポインタのすべての子バッファ(間接WAF Lバッファ820〜850)が処理されたか否かが判断される。判断ブロック4 20の結果は真(yes)であるので、この場合は図3に示す主アルゴリズム、す なわち呼び出しアルゴリズムが実行される。したがって、ツゥリー構造における すべてのバッファ、すなわち間接WAFLバッファ820〜850、およびWA FLiノード810(iノード810は図7に示す汚れiノードのリスト710 のWAFLiノード720に相当する)により参照される直接WAFLバッファ 860A〜860Fおよび870A〜870Dが処理される。図8に示すように WAFLiノード810により参照されるツゥリー構造におけるすべてのバッフ ァの深さ優先ポストビジテッドトラバーサルが実行される。このようにして汚れ 子バッファに対し新しいディスクスペースの割り当てが行なわれる。上述したご とく、間接 WAFLバッファ820が最初に訪問(visit)される。続いて間接WAFLバ ッファ820の子バッファが順次処理される。間接WAFLバッファ820の直 接WAFLバッファ860A〜860Fはツゥリー構造における残りのレベルの 内の最下位レベルに相当するので、それらが順次処理される。直接WAFLバッ ファ860Aは汚れた子バッファであるので、それに対しディスクスペースの割 り当てが行なわれる。これは、直接WAFLバッファ860A内に含まれた数字 1によって示されるものである。続いて、直接WAFLバッファ860B(数字 2によって示される)に対しディスクスペースの割り当てが行なわれる。直接W AFLバッファ860Cはクリーンであるので、図4のステップ490において ディスクスペースの割り当ては行なわれない。このようにして、直接WAFLバ ッファ860A〜860Fは、もしそれらが汚れているのであれば、ディスクス ペースの割り当てが行なわれる。 間接WAFLバッファ820の直接WAFLバッファ860A〜860Fが、 一旦処理されると、間接WAFLバッファ820に対しディスクスペースの割り 当てが行なわれる。これは汚れバッファであるのでディスクスペースの割り当て はステップ490において行なわれる。同様に、直接WAFLバッファ870B についてもディスクスペースの割り当てが行なわれる。続いて、直接WAFLバ ッファ870Bの親バッファ(間接WAFLバッファ830)に対しディスクス ペースの割り当てが行なわれる。割り当てはこれで終了したわけだが、バッファ をディスクに書き込む順番は次の通りである。直接WAFLバッファ860A, 860B,860D;間接WAFLバッファ820;直接WAFLバッファ87 0B;および間接WAFLバッファ830。 汚れバッファに対するディスクスペースの割り当て 図9Aはメモリに記憶されたキャシュ920と、パリティディスクとデータデ ィスク0〜3で構成されるレードアレイのディスクスペース910が示されてい る。図5に示したスペース割り当てアルゴリズムについて、図9の4つのファイ ル940〜946を参照しながらさらに詳述する。最初、データディスク0〜3 のC WLポインタは同じブロックにセットされている。カレント書き込み位置ポイン タ930A〜930Dはそれぞれデータディスク0〜3のデータブロック950 B〜950Eを参照する。図9に示すように4つのファイル940〜946はキ ャシュ920に含まれている。最初のファイル940は2つの汚れブロックF1 −0、F1−1で構成される。第2のファイル942は16個の汚れブロックF 2−0からF2−15で構成される。第3のファイル944は4つの汚れブロッ クF3−0からF3−3で構成される。第4のファイル946は2つの汚れブロ ックF4−0、F4−1で構成される。ディスクスペース910のデータディス ク0〜3において×印は割り当てがなされたブロックを示す。さらに、キャシュ 920にはデータディスク0〜3のそれぞれに対応する4つのディスクキュー9 20A〜920Dが示されている。 図7に示すように、4つのファイル940〜946のそれぞれは汚れiノード のリスト710にあるiノードを参照する。たとえば、図7において、iノード 720は第1のファイル940を参照する。汚れiノードのリスト710の他の iノード722、730、740は、それぞれファイル942〜946を参照す る。汚れiノードのリスト710にあるこれらのiノードは、上述したごとく処 理される。以下、ディスク上におけるブロックの割り当て、およびディスクへの ストライプの書き込みについて図5を参照しながら説明する。 図9Aに示すように、データディスク0〜3のカレント書き込み位置930A 〜930Dは、データブロック950B〜950Eをそれぞれ参照する。これは ブロック950B〜950Eのそれぞれの左下コーナにある小さな箱により支持 される。同様に図9Aに示すように、データディスク0〜3のキュー920A〜 920Dは空である。図9Aにおいて、ディスクブロックに付された×印は、デ ィスクスペース910においてすでに割り当てが行なわれたブロックであること を示す。垂直に延びるコロムのそれぞれは、データディスク0〜3のそれぞれの ディスクスペース910におけるシリンダに対応する。スペース割り当てアルゴ リズムにより処理される最初のファイルは940である。 ステップ510においてファイル940のバッファF1−0のバッファポイン タはアルゴリズムにパスされる。判断ブロック520において、バッファF1− 0は前回のバッファとは異なったファイルにあるのかどうか、または前回のバッ ファとは異なった先読みチャンクにあるのかどうかについて判定される。判定ブ ロック520は、ここではバッファF1−0は異なったファイルにあるので真( yes)を出力する。ステップ530においてデータディスク0が書き込みのため に選択される。ステップ540においてバッファF1−0で前回割り当てられた ブロックはフリーにされる。ステップ550において、データディスク0のデー タブロック952はバッファF1−0用に選ばれたディスク上に割り当てる。ま た、CWL930Aは進められ、ディスク上の次のフリーな位置を参照する。ス テップ560において、ディスクブロック952Bは、ファイル940のバッフ ァF1−0に当てられる。ステップ570においてバッファF0−0は、データ ディスク0のための書き込み可能なバッファのリスト920Aに加えられる。ス テップ580において、CWLに対しそれがファイルシステムの中における最下 位のCWLか否かが判断される。ここではこれは真ではないので、続いて590 が実行される。 ファイル940において別のバッファF1−1は汚れているので、スペース割 り当てアルゴリズムは再び呼び出される。続いてステップ510が実行され、バ ッファF1−1のポインタがアルゴリズムへパスされる。判断ブロック520に おいて、バッファF1−1は、前回のバッファ(この場合は、バッファF1−0 )から異なったファイルにあるか否か、または前回のバッファとは異なった先読 みチャンクにあるか否かが判断ざれる。判断ブロック520の結果は偽(no)で あるので、続いてステップ540が実行される。したがって、バッファF1−1 はバッファF1−0が書かれたディスクと同じディスクに書き込みがなされる。 図9Bに示すように、データブロック954Bが割り当てられるので、データデ ィスク0において次に割り当てられることができるフリーなブロックはブロック 956Bである。ステップ540において、バッファF1−1の前回割り当てら れたブロッ クはフリーにされる。ステップ540において、データディスク上にあるブロッ ク956Bは、バッファF1−1用として割り当てられる。ステップ560にお いて、ブロック956Bは、バッファF1−1用として割り当てられる。ステッ プ570において、バッファF1−1は、データディスク0のキュー920Aに 当てられる。データディスク0のCWL930Aは、データディスク0のブロッ ク956Bを参照する。ステップ580において、ストライプが完成され、ディ スクに送られるのに準備ができたかどうかが判断されるが、この時点ではストラ イプがまだ完成されていない。続いてステップ590が実行される。 図9Bに示すように、第1のファイル940にディスクスペースが割り当てら れたが、バッファF1−0およびF1−1は、まだディスク上に書き込まれてい ない。それらはデータディスク0のキュー920Aのメモリに記憶されたままで ある。 図9Cにおいて、次のファイル942がディスクスペース910に割り当てら れる。第2のファイル942は、16個の汚れブロックF2−0からF2−15 で構成される。ファイル942の最初のバッファF2−0は、ステップ510に おいてアルゴリズムへパスされる。判断ブロック520において、バッファF2 −0は、前回のバッファ(この場合はバッファF1−1)から異なったファイル にあるか否か、または前回のバッファとは異なった先読みチャンクにあるか否か が判断される。ここではバッファF2−0は、異なったファイルにあるので、判 断ブロック520の結果は真(yes)となる。ステップ530において、データ ディスク1が書き込み用として選択される。ステップ540において、前に割り 当てられたブロックはフリーにされる。ステップ550において、ブロック95 2Cは、データディスク1の上に割り当てられる。ステップ560において、ブ ロック952Cは、ファイル942のバッファF2−0に当てられる。ステップ 570において、データディスク1のための書き込み可能バッファのリスト92 0Bに、バッファF2−0が加えられる。ステップ580において、ストライプ がディスクに書き込み可能かどうかの判断がなされる。しかしながら、この時点 におい ては書き込まれるべきブロックはレードアレイにおける最下位のCWLよりも低 いブロックではないので、ストライプは書き込み可能な状態ではないことがわか る。したがって、続いてステップ510のアルゴリズムが実行される。 図4に示すアルゴリズムは、F2−1のための汚れファイルバッファのポイン タを、図5に示すステップ510Aへパスする。判断ブロック520において、 バッファF2−1は、前回のバッファ(F2−0)から異なったファイルにある か否か、または前回のバッファとは異なった先読みチャンクにあるか否かが判断 される。判断ブロック520の結果は偽(no)であるので、続いてステップ54 0が実行される。ステップ540において、ブロック954Cがフリーにされる 。ステップ550において、データディスク1のブロック954Cが割り当てら れる。ステップ560において、ブロック954CがバッファF2−1に割り当 てられる。ステップ570において、バッファF2−1は、データディスク1の ための書き込み可能なバッファのリスト920Bに加えられる。ステップ580 において、データディスク1のCWL930Bは、ブロック954Cに進められ る。次に、ストライプがディスクに書き込み可能かどうかの判断がなされる。し かしながら、ここではデータディスク1のCWL930Bはディスクスペース9 10におけるCWLポインタの最下位のものではないので、ストライプの書き込 みは可能でない。したがって、続いてステップ590が実行される。 図5に示すアルゴリズムに従い、バッファF2−2からF2−6は、ディスク 上のスペースが割り当てられる。8番目のバッファF2−7のためにスペース割 り当てアルゴリズムが呼びだされれば、判断ブロック520において、バッファ F2−7は、前回のバッファ(F2−6)から異なったファイルにあるか否か、 または前回のバッファとは異なった先読みチャンクにあるか否かが判断される。 判断ブロック520の結果は偽(no)であるので、続いてステップ540が実行 される。ステップ540ではブロック968Cがフリーにされる。ステップ55 0で、ブロック968Cがデータディスク1に割り当てられる。ステップ560 において、ブロック968CがバッファF2−7に割り当てられる。ステップ5 70に おいて、バッファF2−7は、データディスク1のための書き込み可能バッファ のリスト920Bに加えられる。ステップ580において、もし可能な場合はス トライプの書き込みがなされる。ここでブロック970は、すでに割り当てられ ているので、データディスク1のCWL930Bは、ブロック970へ進められ る。データディスク1のブロック970Cは、ディスクスペース910における 最下位のCWLではないので、ディスクにストライプは書き込みはまだなされな い。 図5のステップ510において、ファイル942のバッファF2−8用のバッ ファポインタがパスされることにより、スペース割り当てアルゴリズムが呼び出 される。判断ブロック520においてバッファF2−8は前回のバッファ(F2 −7)から異なったファイルにあるか否か、または前回のバッファ(F2−7) とは異なった先読みチャンクにあるか否かが判断される。ファイル942の8個 のバッファF2−0からF2−7は、前回の先読みチャンクの1部であり、すで にスペースの割り当てが行なわれていたので、判断ブロック520の結果は真( yes)となる。ステップ530において、データディスク2が書き込み用として 選択される。これは図9Bに示されている。 ステップ530において、最も低いカレント書き込み位置情報を有するディス クを見つけることにより、ディスクの選択がなされる。もし複数のディスクが最 も低いカレント書き込み位置情報を有していたのであれば、最初に位置するもの が選択される。 ステップ540において、バッファF2−8の前に割り当てられたブロックが フリーにされる。ステップ550においてブロック952Dは、データディスク 2上に割り当てられる。ステップ560において、ブロック952Dは、バッフ ァF2−8に当てられる。ステップ570において、データディスク2のキュー 920CにバッファF2−8が加えられる。ステップ580において、可能な場 合はストライプの書き込みがなされる。しかしながら、ここではバッファF2− 8のためのディスクにストライプを一気に送り出すための準備はできていない。 し たがってステップ510が実行される。 ステップ510において、ファイル942のバッファF2−9のためのポイン タは、スペース割り当てアルゴリズムにパスされる。判断ブロック520におい て、バッファF2−9は、前回のバッファ(F2−8)から異なったファイルに あるか否か、または前回のバッファとは異なった先読みチャンクにあるか否かが 判断される。ここでは、バッファF2−9は前回のバッファF2−8と同じファ イルで同じ先読みチャンクにあるので、判断ブロック520の結果は偽(no)で ある。ステップ540において、データディスク2のブロック954Dは、バッ ファF2−9のためにフリーにされる。ステップ550において、ブロック95 4Dは、データディスク2上に割り当てられる。ステップ560において、デー タディスク2のブロック954Dは、バッファF2−9に当てられる。ステップ 570において、バッファF2−9は、データディスク2のための書き込み可能 なバッファのリスト920Cに加えられる。ステップ580において、ディスク にストライプの書き込みが試みられるが、この時点ではまだストライプの書き込 みは可能ではない。 図9Dに示すように、ディスクブロック952Dから968Dは、ファイル9 42のバッファF2−8からF2−15のために割り当てられる。図5に示すア ルゴリズムに基づき、汚れバッファF2−8からF2−15のためにブロックが 割り当てられるので、バッファF2−8からF2−15は、データディスク2の ための書き込み可能なバッファのリスト920Cに加えられる。ステップ580 において、システムは、ディスクにストライプの書き込みを試みる。しかしなが ら、この時点ではまだ完全なストライプを書き込みすることができない。ステッ プ590において呼び出しアルゴリズムが実行される。 汚れiノードのリスト710にあるiノードを参照して得られる第3のファイ ルは、944である。ファイル944は、4つの汚れブロックF3−0からF3 −3で構成される。ファイル944の汚れバッファF3−0からF3−3は、ス ペース割り当てアルゴリズムにより処理される。ファイル944の汚れバッファ の 割り当てを、図9Eから9Fを参照しながら説明する。ステップ510において 、スペース割り当てアルゴリズムは、ファイル944のバッファF3−0のバッ ファポインタにパスされる。判断ブロック520において、ファイル944のバ ッファF3−0は、前回のバッファ(ファイル942のバッファF2−15)か ら異なったファイルにあるか否か、または前回のバッファとは異なった先読みチ ャンクにあるか否かが判断される。判断ブロック520はここではバッファF3 −0が異なったファイルにあるので、真(yes)を出力する。ステップ530に おいて、1番低いCWL(データブロック950Eについて示された図9Dを参 照)を有するデータディスク3が、書き込み用のディスクとして選択される。ス テップ540において、バッファF3−0のために前回割り当てられたブロック は、フリーにされる。これは、ブロック952Eのためのblkmapファイルのすべ てを更新して、ブロック952Eが、もはやアクティブファイルシステムによっ て利用されるものではないことを示すことにより達成される。ステップ540に おいて、データディスク3の現在の(カレント)ブロック952Eが割り当てら れる。これはデータディスク3のカレント書き込み位置(CWL)930Dを、 データブロック952Eに進めることにより達成される。ステップ560におい て、ブロック952Eは、ファイル944のバッファF3−0に当てられる。ス テップ570において、バッファF3−0は、データディスク3のための書き込 み可能なバッファのリスト920Dに加えられる。 ステップ580において、可能な場合は、ストライプがディスクに書き込まれ る。これはデータディスク0〜3のバッファ920A〜920Dをチェックして 、完成したストライプがあるか否かを見ることにより、達成される。図9Eにお いて、完成されたストライプは、バッファF1−0、F2−0、F2−8、F3 −0からなるディスクキュー920A〜920Dに含まれる。これらのバッファ は、1つのグループとしてレードサブシステムに送り出され、効率よく書き込み がなされる。この状態は図9Eに示されており、ストライプ980は、パリティ ブロック952Aと、データディスク0〜3のデータブロック952B〜952 Eに書 き込まれる。ここでストライプは点線で囲まれて示されている。したがって、バ ッファF1−0は、データディスク0のブロック952Bに書き込まれる。同様 に、バッファF2−0、F2−8、F3−0は、それぞれブロック952C、9 52D、952Eに書き込まれる。図9Eに示すように、データディスク3の最 も低いカレント書き込み位置(CWL)930Dは、ブロック952Eに位置し ている。ストライプ580がディスクに書き込まれることにより、バッファF1 −0、F2−0、F2−8、F3−0は、キュー920A〜920Dから削除さ れる。これは図9Eに示されている。続いて呼び出しルーチンであるステップ5 90が実行される。 ファイル944のバッファF3−1のバッファポインタは、ステップ510に おけるスペース割り当てアルゴリズムにパスされる。判断ブロック520におい て、バッファF3−1は、前回のバッファから異なったファイルにあるか否か、 または前回のバッファとは異なった先読みチャンクにあるか否かが判断される。 判断ブロック520の結果は偽(no)であるので、続いてステップ540が実行 される。ステップ540において、バッファF3−1に前回割り当てられたブロ ックは、フリーにされる。ステップ550において、ブロック954Eがデータ ディスク3に割り当てられる。データディスク3のカレント書き込み位置930 Dは、図9Eに示すブロック952Eから、図9Fに示すブロック956Eに進 められる。カレント書き込み位置930Dは、ブロック956Eに進められ、こ れは現在割り当てられたブロック954Eを下に越えることになる。なぜなら、 ブロック956Eはすでに割り当て(ブロックにおいて×印で示されている部分 )がなされているからである。ステップ560において、ブロック954Eは、 ファイル944のバッファF3−1に当てられる。ステップ570において、バ ッファF3−1はデータディスク3のための書き込み可能なバッファのリスト9 20Dに加えられる。ステップ580において、2つのストライプ982、98 4は、ディスクに書き込まれる。これはデータディスク0および3にある最も低 いカレント書き込み位置930A、930Dが、データブロック956B、95 6Eを参照 することによりなされる。図9Fに示すように、バッファF2−1、F2−9、 F3−1で構成されるストライプ982は、ブロック954Cから954Eに書 き込まれる。同様にストライプ984もディスクに書き込まれる。ストライプ9 82および984がディスクに書き込まれれば、対応するバッファは、リスト9 20A〜920Dから削除される。ステップ590において呼び出しアルゴリズ ムが次に実行される。 同様に、図5に示すアルゴリズムにより、ファイル944のバッファF3−2 、F3−3には、ディスクブロック958E、960Eが割り当てられる。図9 Gに示すように、ファイル944のバッファF3−2、F3−3は、データディ スク3のリスト920Dに割り当てられる。ファイル944に対しカレント書き 込み位置930Dは、データディスク3のブロック960Eに進められる。図9 Gに示すように、最も低いカレント書き込み位置は、データブロック956Bを 参照するデータディスク0のカレント書き込み位置930Aである。他のカレン ト書き込み位置930B〜930Dは、データディスク1〜3のブロック970 C、968D、960Eを参照する。さらに図9Gに示すように、データディス ク0のキュー920Aは空である。データディスク1のための書き込み可能なバ ッファのリスト920Bには、ファイル942のバッファF2−3からF2−7 がある。データディスク2のリスト920Cは、ファイル942の残りの汚れバ ッファF2−11からF2−15がある。データディスク3のリスト920Dに はファイル944の汚れバッファF3−2からF3−3がある。 汚れバッファF4−0からF4−1からなる第4のファイル946は、図5に 示すアルゴリズムを用いてディスクスペースの割り当てがなされる。ステップ5 10において、ファイル946の汚れバッファF4−0は、スペース割り当てア ルゴリズムにパスされる。判断ブロック520において、バッファF4−0は前 回のバッファ(F3−3)から異なったファイルにあるか否か、または前回のバ ッファとは異なった先読みチャンクにあるか否かが判断される。ここではバッフ ァF4−0は異なったファイルにあるので、判断ブロック520の結果は真(ye s) となる。ステップ530において、ディスクスペース910における最も低いカ レント書き込み位置がどこにあるかの判断がなされる。図9Gに示すように、最 も低いカレント書き込み位置は、データディスク0のブロック956Dを参照す る、カレント書き込み位置930Aであることがわかる。したがって、ステップ 530において、データディスク0が書き込み用に選択される。ステップ540 において、データディスク0のバッファF4−0に前回割り当てられたブロック は、フリーにされる。ステップ550において、ブロック958Bは、データデ ィスク0に割り当てられる。これによりデータディスク0のカレント書き込み位 置930Aは、ブロック956Bから958Bへ進められる。これは図9Hにお いて、左下コーナにおける実線で示されている。ステップ560において、ブロ ック958Bは、バッファF4−0に割り当てられる。ステップ570において 、バッファF4−0は、データディスク0のための書き込み可能なバッファのリ スト920Aに加えられる。ステップ580において、バッファF4−0、F2 −11、F3−2で構成されるストライプ986は、ディスクに書き込まれ、こ れはバッファはキュー920A、920C〜920Dから削除される。ステップ 590において続いて呼び出しアルゴリズムが実行される。 図91において、ファイル946の汚れブロック4F−1は、ステップ510 におけるスペース割り当てアルゴリズムへパスされる。判断ブロック520にお いて、今回のバッファは前回のバッファから異なったファイルにあるか否か、ま たは前回のバッファとは異なった先読みチャンクにあるか否かが判断される。判 断ブロック520の結果は偽(no)であるので、続いてステップ540が実行さ れる。ステップ540で前回に割り当てられたブロックがフリーにされる。ステ ップ550においてデータディスク0のブロック960Bが割り当てられる。こ れにより、データディスクのカレント書き込み位置930Aは、ブロック958 Bから960Bへ進められる。ステップ560において、割り当てられたブロッ ク960Bは、バッファF4−1に当てられる。ステップ570において、ファ イル946のバッファF4−1は、データディスク0のための書き込み可能なバ ッ ファのリスト920Aに加えられる。ステップ580において、ストライプ98 8がディスクに書き込まれる。これは、ストライプ988に、最も低いカレント 書き込み位置930Aを含むブロック960A〜960Eが含まれるからである 。バッファF4−1、F2−3、F2−12、F3−3は、それぞれリスト92 0Λ〜920Dから削除される。ステップ590において続いて呼び出しアルゴ リズムが実行される。図91に示すように、データディスク0〜3のカレント書 き込み位置930A〜930Dは、ブロック960B、970C、968D、9 60Eを参照する。最も低い位置にあるカレント書き込み位置930Aより、さ らに低い位置に割り当てられたブロックは、図91に示すようにディスクに送り 出される。しかしながら、データディスク1、2のリスト920B、920Cに 加えられたファイル942の汚れバッファF2−4からF2−7、およびF2− 13からF2−15は、ディスクAから送出されないで残されている。 図9Jは、すべての汚れiノードにブロック割り当てがなされた後、残された 未書き込みのバッファ、すなわちファイル944のバッファF2−4からF2− 7、およびF2−13からF2−15のディスクへの送り出しを示す。この例に おいては、すべてのデータディスク0〜3のカレント書き込み位置930A〜9 30Dは、図91の最も高いカレント書き込み位置930Bにまで進められてい る。したがってキュー920A〜920Dは空にされる。カレント書き込み位置 930Bは、データディスク1のブロック970Cを参照する。この動作は、図 3のステップ350が実行されることにより、すべての未書き込みのストライプ がディスクに送り込まれる。ステップ350において、カレント書き込み位置9 30A〜930Dをグループの内で最も大きな値を有するものに進めることによ り、ディスクにまだ送り込まれていないバッファであってデータディスク0〜3 のキュー920A〜920Dにあるすべてのバッファは、強制的にディスクに送 り込まれる。 上述したごとく、本発明はレードアレイのディスクレイアウトの手順を用いな がら、レードアレイへの書き込み割り当てを最適なものにするものである。レー ドレイアウトの手順には、ディスクに書き込まれるべきバッファのディスクブロ ックや、ストライプに関する情報が含まれる。これは図9A〜9Jに示されてい る。本発明は、レードアレイ技術を有するファイルシステムを、より完全なもの にするものである。レード層は、レードサブシステムにおけるデータブロックの 配列に関する、より詳しい情報をファイルシステムに送るものである。ファイル システムはこの情報を審査し、それらがレードシステムに書き込まれるのに従い 、ブロックの位置を最適なものにするのに用いられる。レードシステムへの書き 込みの最適化は先読みチャンクをより良いものにすると共に、ストライプ全体を 書き込むことにより達成される。 ストライプの負荷感知式書き込み 上述したWAFLファイルシステムのためのレードアレイに書き込み割り当て するための方法は、“循環書き込み”アルゴリズムを用いたものである。この方 法は、ディスクを循環してバッファをレードアレイに書き込むもので、1本のス トライプのすべてのディスクブロックに割り当てが行なわれるものである。スト ライプへの順次書き込みは、少なくとも1つのブロックがフリーにされなければ ならないという点を除いて、ストライプにおいて割り当てられるフリーブロック の数に依存するものではない。このようにして、ストライプへの書き込み割り当 ては、レードアレイにおけるディスクの最後まで進められる。ディスクの最後に 達すれば、書き込み割り当ては、ディスクの始めに戻り、そこから続けられる。 本発明の別の実施の形態においては、ディスクへのデータ書き込みへの速さが 、通常のしきい値を越えれば、“負荷感知式書き込み”により、ディスクへの書 き込みが行なわれるものである。データ書き込みの速さが通常のしきい値を越え れば、本発明では、ディスクの書き込みをストライプの書き込みの効率に依存す るように、ディスク書き込みの処理を行う。レードアレイにおける各ディスクの エリアに割り当てられたブロックのパターンによって、ディスクのある部分につ いては、他の部分より、より容易に書き込みがなされることがある。たとえば、 データディスク上のストライプに割り当てられたブロックがない場合は、レード アレイにス トライプを書き込むことは非常に効率的である。 図9Eに示すように、ストライプ980に対し4つのディスクブロック952 B〜952Eを書き込むことは、レードアレイおいて最も効率よく書き込みが行 なわれる。具体例においては、4つのバッファF1−0、F2−0、F2−8、 F3−0は、実質的に同じ時間TWRITEにディスクに書き込みが行なわれる。し たがって、4KBバッファを用いることにより、所定の時間TWRITEに16KB のデータをディスクに書き込むことが可能である。これは、図9Fで示すレード アレイの3つのブロック954C〜954Eに、バッファF2−1、F2−9、 F3−1からなるストライプ982を書き込むことと対照的である。この場合の 書き込み速さは、所定時間TWRITEに12KBのデータを書き込むことができる 。したがってストライプ982の書き込み速さは、ストライプ980の最大書き 込み速さの75%である。最悪の場合、レードアレイのストライプには、単一の 割り当てられていないディスクブロックのみが存在するだけである。この単一ブ ロックへの書き込みは、4つのディスクブロックに書き込む最大速さの25%で 書き込みをなすことが可能である。したがって、1つのフリーブロックのみでス トライプに書き込みを行うことは非効率的である。 循環書き込みを行う負荷感知式書き込みにおいては、レードサブシステムがビ ジーであれば、非効率的なストライプはスキップされる。すなわち、多くの書き 込まれるべきフリーブロックを有するストライプが、割り当てのために選択され る。システムの負荷が軽い場合にのみ非効率的なストライプの書き込みが許され る。これは、システムの負荷が重たい場合に、より多くの効率のよいストライプ を残しておくために行なわれるものである。したがって、同じシーケンスにおい て、ブロックと汚れファイルの特定のセットを書き込む循環式書き込み方法とは 異なり、負荷感知式循環書き込み方法は、負荷の重さによってその動作を変える ものである。たとえば、5メガバイト/秒の最大書き込み速さを有するレードシ ステムにおいては、本発明においては、10秒のインターバルに1秒当たり2. 5メガバイトの平均速さで書き込みを行なうシステムであれば、3または4個の フリーブロックを有するストライプを書き込む。 本発明においては、レードディスクシステムを備えたファイルシステムを、よ り効率よく動作させるためには、上述の負荷感知式循環書き込み方法により大き な規模のアルゴリズムを加えることも可能である。以上詳述したごとく、レード アレイのレイアウトに関する情報を、ファイルシステムに与えることは、この利 点を受ける規模の大きなアルゴリズムも可能とするものである。 以上のように、レードアレイを用いたファイルシステムにおいてファイルを割 り当てる方法が説明された。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マルコム、マイケル アメリカ合衆国カリフォルニア州94022、 ロス・アルトス、サウス・アバロン・ドラ イブ48番 (72)発明者 ラウ、ジェイムズ アメリカ合衆国カリフォルニア州95014、 カパチノ、アップランド・ウェイ11570番 (72)発明者 ラキチス、バイロン アメリカ合衆国カリフォルニア州94043、 マウンテン・ビュー、ノース・ウィッシマ ン・ナンバー130、100番 【要約の続き】 たはあるファイルに同じディスク(1022)のN個の ブロックに割り当てがおこなわれたときのみに、別のデ ィスクが選択されることにより達成される。その結果、 CWLポインタは異なったディスク(1024)上でも Nブロック以上離れることはなく、大きなファイルも、 同じディスクにN個の連続するブロックに収めることが できる。

Claims (1)

  1. 【特許請求の範囲】 1.ファイルシステムにおいてファイルの割り当てを行なう方法であって、 (a)汚れブロックを有するiノードのリストから、少なくとも1つの汚れブ ロックを有するiノードを選択し、 (b)レードアレイにおける記憶手段に、該iノードを参照することにより、 割り当てられたバッファのツゥリー構造を書き込み、 (c)iノードのリストのすべてのiノードが未処理であれば、上記ステップa −bを繰り返し実行し、iノードのリストにあるすべてのiノードが処理された か否かを判断し、レードアレイにすべての未書き込みストライプを送り出すよう にしたことを特徴とする方法。
JP50200195A 1993-06-03 1994-06-02 Raidディスクサブシステムと統合されたファイルシステムのファイル割り当て方法 Expired - Lifetime JP3862274B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US7164093A 1993-06-03 1993-06-03
US071,640 1993-06-03
PCT/US1994/006322 WO1994029796A1 (en) 1993-06-03 1994-06-02 A method for allocating files in a file system integrated with a raid disk sub-system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2006107735A Division JP2006260582A (ja) 1993-06-03 2006-04-10 Raidディスクサブシステムと統合されたファイルシステムのファイル割り当て方法

Publications (2)

Publication Number Publication Date
JPH08511369A true JPH08511369A (ja) 1996-11-26
JP3862274B2 JP3862274B2 (ja) 2006-12-27

Family

ID=22102622

Family Applications (2)

Application Number Title Priority Date Filing Date
JP50200195A Expired - Lifetime JP3862274B2 (ja) 1993-06-03 1994-06-02 Raidディスクサブシステムと統合されたファイルシステムのファイル割り当て方法
JP2006107735A Pending JP2006260582A (ja) 1993-06-03 2006-04-10 Raidディスクサブシステムと統合されたファイルシステムのファイル割り当て方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2006107735A Pending JP2006260582A (ja) 1993-06-03 2006-04-10 Raidディスクサブシステムと統合されたファイルシステムのファイル割り当て方法

Country Status (7)

Country Link
US (1) US6038570A (ja)
EP (2) EP1197836A3 (ja)
JP (2) JP3862274B2 (ja)
AT (1) ATE222384T1 (ja)
DE (1) DE69431186T2 (ja)
HK (1) HK1045738A1 (ja)
WO (1) WO1994029796A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003296038A (ja) * 2002-03-21 2003-10-17 Network Appliance Inc Raidシステムにおいてストライプの連続アレイに書き込む方法
JP2004537813A (ja) * 2001-08-03 2004-12-16 アイシロン・システムズ・インコーポレーテッド 記憶装置から成る分散型ファイルシステム上の情報をトラッキングするためのメタデータを提供するシステムおよび方法

Families Citing this family (275)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US7174352B2 (en) 1993-06-03 2007-02-06 Network Appliance, Inc. File system image transfer
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
EP0716370A3 (en) * 1994-12-06 2005-02-16 International Business Machines Corporation A disk access method for delivering multimedia and video information on demand over wide area networks
US6098128A (en) 1995-09-18 2000-08-01 Cyberstorage Systems Corporation Universal storage management system
US6070254A (en) * 1997-10-17 2000-05-30 International Business Machines Corporation Advanced method for checking the integrity of node-based file systems
US6574591B1 (en) 1998-07-31 2003-06-03 Network Appliance, Inc. File systems image transfer between dissimilar file systems
US6119244A (en) 1998-08-25 2000-09-12 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6415296B1 (en) * 1999-03-31 2002-07-02 International Business Machines Corporation Method and system for more efficiently providing a copy in a raid data storage system
US6961749B1 (en) 1999-08-25 2005-11-01 Network Appliance, Inc. Scalable file server with highly available pairs
EP1912124B8 (en) 1999-10-14 2013-01-09 Bluearc UK Limited Apparatus and system for implementation of service functions
US6532476B1 (en) * 1999-11-13 2003-03-11 Precision Solutions, Inc. Software based methodology for the storage and retrieval of diverse information
US7245291B2 (en) 2000-07-11 2007-07-17 Imran Sharif System and method for internet appliance data entry and navigation
US20020078445A1 (en) * 2000-07-11 2002-06-20 Imran Sharif Internet appliance for interactive audio/video display using a remote control unit for user input
US20030115167A1 (en) * 2000-07-11 2003-06-19 Imran Sharif Web browser implemented in an Internet appliance
US6980313B2 (en) * 2000-07-11 2005-12-27 Imran Sharif Fax-compatible internet appliance
US6728922B1 (en) * 2000-08-18 2004-04-27 Network Appliance, Inc. Dynamic data space
US6636879B1 (en) 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6745284B1 (en) * 2000-10-02 2004-06-01 Sun Microsystems, Inc. Data storage subsystem including a storage disk array employing dynamic data striping
US6654912B1 (en) 2000-10-04 2003-11-25 Network Appliance, Inc. Recovery of file system data in file servers mirrored file system volumes
US6789162B1 (en) 2000-10-17 2004-09-07 Sun Microsystems, Inc. Storage controller configured to select unused regions of a storage device for data storage according to head position
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US6862692B2 (en) 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US7054927B2 (en) 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US20020161850A1 (en) 2001-01-29 2002-10-31 Ulrich Thomas R. Data path accelerator for storage systems
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US6668264B1 (en) 2001-04-03 2003-12-23 Network Appliance, Inc. Resynchronization of a target volume with a source volume
US7739614B1 (en) 2001-05-22 2010-06-15 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of directories
US8171414B2 (en) * 2001-05-22 2012-05-01 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of file systems
US7478164B1 (en) 2001-06-12 2009-01-13 Netapp, Inc. Methods and apparatus for pacing delivery of streaming media data
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
US7469295B1 (en) 2001-06-25 2008-12-23 Network Appliance, Inc. Modified round robin load balancing technique based on IP identifier
US7249150B1 (en) * 2001-07-03 2007-07-24 Network Appliance, Inc. System and method for parallelized replay of an NVRAM log in a storage appliance
US7194513B2 (en) * 2001-07-08 2007-03-20 Imran Sharif System and method for using an internet appliance to send/receive digital content files as E-mail attachments
US6944785B2 (en) * 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
US7146524B2 (en) 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US6757695B1 (en) 2001-08-09 2004-06-29 Network Appliance, Inc. System and method for mounting and unmounting storage volumes in a network storage environment
US6851070B1 (en) 2001-08-13 2005-02-01 Network Appliance, Inc. System and method for managing time-limited long-running operations in a data storage system
US6965989B1 (en) 2001-08-14 2005-11-15 Network Appliance, Inc. System and method for fast reboot of a file server
US6871317B1 (en) 2001-11-13 2005-03-22 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US7346831B1 (en) 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US7159080B1 (en) 2001-12-20 2007-01-02 Network Appliance, Inc. System and method for storing storage operating system data in switch ports
US7146522B1 (en) 2001-12-21 2006-12-05 Network Appliance, Inc. System and method for allocating spare disks in networked storage
US7650412B2 (en) 2001-12-21 2010-01-19 Netapp, Inc. Systems and method of implementing disk ownership in networked storage
US7296068B1 (en) 2001-12-21 2007-11-13 Network Appliance, Inc. System and method for transfering volume ownership in net-worked storage
US7640484B2 (en) 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US7073115B2 (en) * 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US8402346B2 (en) * 2001-12-28 2013-03-19 Netapp, Inc. N-way parity technique for enabling recovery from up to N storage device failures
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
US7613984B2 (en) 2001-12-28 2009-11-03 Netapp, Inc. System and method for symmetric triple parity for failing storage devices
US7360034B1 (en) * 2001-12-28 2008-04-15 Network Appliance, Inc. Architecture for creating and maintaining virtual filers on a filer
US6895429B2 (en) * 2001-12-28 2005-05-17 Network Appliance, Inc. Technique for enabling multiple virtual filers on a single filer to participate in multiple address spaces with overlapping network addresses
US7206970B1 (en) 2002-02-07 2007-04-17 Network Appliance, Inc. System and method for diagnostics execution and data capture in a storage system using nonvolatile memory
US7562208B1 (en) * 2002-02-07 2009-07-14 Network Appliance, Inc. Method and system to quarantine system software and configuration
US6968345B1 (en) 2002-02-27 2005-11-22 Network Appliance, Inc. Technique to enable support for symbolic link access by windows clients
US7194519B1 (en) 2002-03-15 2007-03-20 Network Appliance, Inc. System and method for administering a filer having a plurality of virtual filers
US6993539B2 (en) 2002-03-19 2006-01-31 Network Appliance, Inc. System and method for determining changes in two snapshots and for transmitting changes to destination snapshot
US7539991B2 (en) 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
US7437727B2 (en) * 2002-03-21 2008-10-14 Network Appliance, Inc. Method and apparatus for runtime resource deadlock avoidance in a raid system
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation in a raid system
US6895413B2 (en) * 2002-03-22 2005-05-17 Network Appliance, Inc. System and method for performing an on-line check of a file system
US7418500B1 (en) 2002-03-25 2008-08-26 Network Appliance, Inc. Mechanism for controlled sharing of files in a clustered application environment
JP2003280826A (ja) * 2002-03-27 2003-10-02 Hitachi Ltd 記憶サブシステム
US7155458B1 (en) 2002-04-05 2006-12-26 Network Appliance, Inc. Mechanism for distributed atomic creation of client-private files
US20030200385A1 (en) * 2002-04-18 2003-10-23 Abrams Roger Kenneth Method and system for increasing disk drive performance
US6857001B2 (en) 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US7783787B1 (en) 2002-06-13 2010-08-24 Netapp, Inc. System and method for reprioritizing high-latency input/output operations
US7024586B2 (en) 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file 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
US7711539B1 (en) 2002-08-12 2010-05-04 Netapp, Inc. System and method for emulating SCSI reservations using network file access protocols
US7426576B1 (en) 2002-09-20 2008-09-16 Network Appliance, Inc. Highly available DNS resolver and method for use of the same
US7707184B1 (en) 2002-10-09 2010-04-27 Netapp, Inc. System and method for snapshot full backup and hard recovery of a database
US7340486B1 (en) * 2002-10-10 2008-03-04 Network Appliance, Inc. System and method for file system snapshot of a virtual logical disk
US7152069B1 (en) 2002-10-15 2006-12-19 Network Appliance, Inc. Zero copy writes through use of mbufs
US7171452B1 (en) 2002-10-31 2007-01-30 Network Appliance, Inc. System and method for monitoring cluster partner boot status over a cluster interconnect
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US6928515B2 (en) * 2002-11-09 2005-08-09 International Business Machines Corporation Integrated sector format-error correction code system and method for efficient writing in a disk array system
US7937421B2 (en) 2002-11-14 2011-05-03 Emc Corporation Systems and methods for restriping files in a distributed file system
US7069307B1 (en) 2002-12-20 2006-06-27 Network Appliance, Inc. System and method for inband management of a virtual disk
US8041761B1 (en) 2002-12-23 2011-10-18 Netapp, Inc. Virtual filer and IP space based IT configuration transitioning framework
US8015266B1 (en) 2003-02-07 2011-09-06 Netapp, Inc. System and method for providing persistent node names
US7809693B2 (en) * 2003-02-10 2010-10-05 Netapp, Inc. System and method for restoring data on demand for instant volume restoration
US7197490B1 (en) 2003-02-10 2007-03-27 Network Appliance, Inc. System and method for lazy-copy sub-volume load balancing in a network attached storage pool
US7991905B1 (en) 2003-02-12 2011-08-02 Netapp, Inc. Adaptively selecting timeouts for streaming media
US7231489B1 (en) 2003-03-03 2007-06-12 Network Appliance, Inc. System and method for coordinating cluster state information
US7117303B1 (en) 2003-03-14 2006-10-03 Network Appliance, Inc. Efficient, robust file handle invalidation
US7155460B2 (en) * 2003-03-18 2006-12-26 Network Appliance, Inc. Write-once-read-many storage system and method for implementing the same
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7111194B1 (en) 2003-03-21 2006-09-19 Network Appliance, Inc. Mirror split brain avoidance
US7424637B1 (en) 2003-03-21 2008-09-09 Networks Appliance, Inc. Technique for managing addition of disks to a volume of a storage system
US7231409B1 (en) 2003-03-21 2007-06-12 Network Appliance, Inc. System and method for reallocating blocks in checkpointing bitmap-based file systems
US7111021B1 (en) 2003-03-21 2006-09-19 Network Appliance, Inc. System and method for efficient space accounting in a file system with snapshots
US7143235B1 (en) 2003-03-21 2006-11-28 Network Appliance, Inc. Proposed configuration management behaviors in a raid subsystem
US7664913B2 (en) * 2003-03-21 2010-02-16 Netapp, Inc. Query-based spares management technique
US7111147B1 (en) 2003-03-21 2006-09-19 Network Appliance, Inc. Location-independent RAID group virtual block management
US7249286B1 (en) 2003-03-24 2007-07-24 Network Appliance, Inc. System and method for automatically diagnosing protocol errors from packet traces
US7457982B2 (en) 2003-04-11 2008-11-25 Network Appliance, Inc. Writable virtual disk of read-only snapshot file objects
US7383378B1 (en) 2003-04-11 2008-06-03 Network Appliance, Inc. System and method for supporting file and block access to storage object on a storage appliance
US7260737B1 (en) 2003-04-23 2007-08-21 Network Appliance, Inc. System and method for transport-level failover of FCP devices in a cluster
US7739543B1 (en) 2003-04-23 2010-06-15 Netapp, Inc. System and method for transport-level failover for loosely coupled iSCSI target devices
US7293203B1 (en) 2003-04-23 2007-11-06 Network Appliance, Inc. System and method for logging disk failure analysis in disk nonvolatile memory
US7293152B1 (en) 2003-04-23 2007-11-06 Network Appliance, Inc. Consistent logical naming of initiator groups
US7191437B1 (en) 2003-04-23 2007-03-13 Network Appliance, Inc. System and method for reliable disk firmware update within a networked storage fabric
US7275179B1 (en) 2003-04-24 2007-09-25 Network Appliance, Inc. System and method for reducing unrecoverable media errors in a disk subsystem
US7437530B1 (en) 2003-04-24 2008-10-14 Network Appliance, Inc. System and method for mapping file block numbers to logical block addresses
US7181439B1 (en) * 2003-04-25 2007-02-20 Network Appliance, Inc. System and method for transparently accessing a virtual disk using a file-based protocol
US7330862B1 (en) 2003-04-25 2008-02-12 Network Appliance, Inc. Zero copy write datapath
US7437523B1 (en) 2003-04-25 2008-10-14 Network Appliance, Inc. System and method for on-the-fly file folding in a replicated storage system
US7577692B1 (en) 2003-04-25 2009-08-18 Netapp, Inc. System and method for reserving space to guarantee file writability in a file system supporting persistent consistency point images
US7603553B1 (en) 2003-04-25 2009-10-13 Netapp, Inc. System and method to make file handles opaque to clients
US7523201B2 (en) * 2003-07-14 2009-04-21 Network Appliance, Inc. System and method for optimized lun masking
US7593996B2 (en) 2003-07-18 2009-09-22 Netapp, Inc. System and method for establishing a peer connection using reliable RDMA primitives
US7716323B2 (en) * 2003-07-18 2010-05-11 Netapp, Inc. System and method for reliable peer communication in a clustered storage system
US8473693B1 (en) 2003-07-29 2013-06-25 Netapp, Inc. Managing ownership of memory buffers (mbufs)
US7373640B1 (en) 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
US7055014B1 (en) 2003-08-11 2006-05-30 Network Applicance, Inc. User interface system for a multi-protocol storage appliance
US7590807B2 (en) 2003-11-03 2009-09-15 Netapp, Inc. System and method for record retention date in a write once read many storage system
US7328305B2 (en) * 2003-11-03 2008-02-05 Network Appliance, Inc. Dynamic parity distribution technique
US7401093B1 (en) 2003-11-10 2008-07-15 Network Appliance, Inc. System and method for managing file data during consistency points
US7721062B1 (en) 2003-11-10 2010-05-18 Netapp, Inc. Method for detecting leaked buffer writes across file system consistency points
US7783611B1 (en) 2003-11-10 2010-08-24 Netapp, Inc. System and method for managing file metadata during consistency points
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7333993B2 (en) * 2003-11-25 2008-02-19 Network Appliance, Inc. Adaptive file readahead technique for multiple read streams
US20070297349A1 (en) * 2003-11-28 2007-12-27 Ofir Arkin Method and System for Collecting Information Relating to a Communication Network
US7698289B2 (en) * 2003-12-02 2010-04-13 Netapp, Inc. Storage system architecture for striping data container content across volumes of a cluster
US7162662B1 (en) 2003-12-23 2007-01-09 Network Appliance, Inc. System and method for fault-tolerant synchronization of replica updates for fixed persistent consistency point image consumption
US7437360B1 (en) 2003-12-23 2008-10-14 Network Appliance, Inc. System and method for communication and synchronization of application-level dependencies and ownership of persistent consistency point images
US7249227B1 (en) * 2003-12-29 2007-07-24 Network Appliance, Inc. System and method for zero copy block protocol write operations
US7100073B2 (en) * 2004-01-05 2006-08-29 International Business Machines Corporation Grouped-object RAID
US7487381B1 (en) 2004-01-08 2009-02-03 Network Appliance, Inc. Technique for verifying a configuration of a storage environment
US7340639B1 (en) 2004-01-08 2008-03-04 Network Appliance, Inc. System and method for proxying data access commands in a clustered storage system
US7529836B1 (en) 2004-01-08 2009-05-05 Network Appliance, Inc. Technique for throttling data access requests
US7631148B2 (en) * 2004-01-08 2009-12-08 Netapp, Inc. Adaptive file readahead based on multiple factors
US7321982B2 (en) 2004-01-26 2008-01-22 Network Appliance, Inc. System and method for takeover of partner resources in conjunction with coredump
US7266717B2 (en) 2004-01-26 2007-09-04 Network Appliance, Inc. System and method of selection and communication of a disk for storage of a coredump
US8041888B2 (en) 2004-02-05 2011-10-18 Netapp, Inc. System and method for LUN cloning
US7966293B1 (en) 2004-03-09 2011-06-21 Netapp, Inc. System and method for indexing a backup using persistent consistency point images
US8230085B2 (en) * 2004-04-12 2012-07-24 Netapp, Inc. System and method for supporting block-based protocols on a virtual storage appliance executing within a physical storage appliance
US7251663B1 (en) 2004-04-30 2007-07-31 Network Appliance, Inc. Method and apparatus for determining if stored memory range overlaps key memory ranges where the memory address space is organized in a tree form and partition elements for storing key memory ranges
US7430571B2 (en) * 2004-04-30 2008-09-30 Network Appliance, Inc. Extension of write anywhere file layout write allocation
US7334094B2 (en) * 2004-04-30 2008-02-19 Network Appliance, Inc. Online clone volume splitting technique
US7409511B2 (en) * 2004-04-30 2008-08-05 Network Appliance, Inc. Cloning technique for efficiently creating a copy of a volume in a storage system
US7409494B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
US7284101B2 (en) * 2004-08-04 2007-10-16 Datalight, Inc. Reliable file system and method of providing the same
US7917694B1 (en) 2004-09-23 2011-03-29 Netlogic Microsystems, Inc. Method and system for finding maximal stripes in cache memory with content addressable memory
US7519629B2 (en) * 2004-09-30 2009-04-14 International Business Machines Corporation System and method for tolerating multiple storage device failures in a storage system with constrained parity in-degree
US7594075B2 (en) * 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US8266438B2 (en) 2004-10-25 2012-09-11 Security First Corp. Secure data parser method and system
US7984085B1 (en) 2004-10-25 2011-07-19 Network Appliance, Inc. Rate of change of data using on-the-fly accounting
US7752325B1 (en) 2004-10-26 2010-07-06 Netapp, Inc. Method and apparatus to efficiently transmit streaming media
US8238350B2 (en) * 2004-10-29 2012-08-07 Emc Corporation Message batching with checkpoints systems and methods
US8051425B2 (en) * 2004-10-29 2011-11-01 Emc Corporation Distributed system with asynchronous execution systems and methods
US8055711B2 (en) 2004-10-29 2011-11-08 Emc Corporation Non-blocking commit protocol systems and methods
US8180855B2 (en) 2005-01-27 2012-05-15 Netapp, Inc. Coordinated shared storage architecture
US8019842B1 (en) 2005-01-27 2011-09-13 Netapp, Inc. System and method for distributing enclosure services data to coordinate shared storage
US7757056B1 (en) 2005-03-16 2010-07-13 Netapp, Inc. System and method for efficiently calculating storage required to split a clone volume
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US9384818B2 (en) * 2005-04-21 2016-07-05 Violin Memory Memory power management
WO2006116183A1 (en) * 2005-04-25 2006-11-02 Network Appliance, Inc. Architecture for supporting sparse volumes
CN101228523B (zh) 2005-04-25 2012-06-06 网络装置公司 用于高速缓存网络文件系统的系统和方法
US7904649B2 (en) 2005-04-29 2011-03-08 Netapp, Inc. System and method for restriping data across a plurality of volumes
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
US7962689B1 (en) 2005-04-29 2011-06-14 Netapp, Inc. System and method for performing transactional processing in a striped volume set
US7698501B1 (en) 2005-04-29 2010-04-13 Netapp, Inc. System and method for utilizing sparse data containers in a striped volume set
US7743210B1 (en) 2005-04-29 2010-06-22 Netapp, Inc. System and method for implementing atomic cross-stripe write operations in a striped volume set
US8073899B2 (en) * 2005-04-29 2011-12-06 Netapp, Inc. System and method for proxying data access commands in a storage system cluster
US7496678B2 (en) * 2005-05-11 2009-02-24 Netapp, Inc. Method and system for unified caching of media content
US7689766B1 (en) 2005-06-10 2010-03-30 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for integrating a caching module into a storage system architecture
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
US7653682B2 (en) * 2005-07-22 2010-01-26 Netapp, Inc. Client failure fencing mechanism for fencing network file system data in a host-cluster environment
US20070022314A1 (en) * 2005-07-22 2007-01-25 Pranoop Erasani Architecture and method for configuring a simplified cluster over a network with fencing and quorum
US20070088917A1 (en) * 2005-10-14 2007-04-19 Ranaweera Samantha L System and method for creating and maintaining a logical serial attached SCSI communication channel among a plurality of storage systems
US8484365B1 (en) 2005-10-20 2013-07-09 Netapp, Inc. System and method for providing a unified iSCSI target with a plurality of loosely coupled iSCSI front ends
US7346720B2 (en) * 2005-10-21 2008-03-18 Isilon Systems, Inc. Systems and methods for managing concurrent access requests to a shared resource
US7386675B2 (en) * 2005-10-21 2008-06-10 Isilon Systems, Inc. Systems and methods for using excitement values to predict future access to resources
US7551572B2 (en) * 2005-10-21 2009-06-23 Isilon Systems, Inc. Systems and methods for providing variable protection
US7788303B2 (en) 2005-10-21 2010-08-31 Isilon Systems, Inc. Systems and methods for distributed system scanning
US7797283B2 (en) 2005-10-21 2010-09-14 Isilon Systems, Inc. Systems and methods for maintaining distributed data
US7917474B2 (en) * 2005-10-21 2011-03-29 Isilon Systems, Inc. Systems and methods for accessing and updating distributed data
US20070101058A1 (en) * 2005-10-27 2007-05-03 Kinnan Keith R Storage unit configuration
WO2007053356A2 (en) * 2005-10-28 2007-05-10 Network Appliance, Inc. System and method for optimizing multi-pathing support in a distributed storage system environment
CN103384196A (zh) 2005-11-18 2013-11-06 安全第一公司 安全数据解析方法和系统
US7797570B2 (en) 2005-11-29 2010-09-14 Netapp, Inc. System and method for failover of iSCSI target portal groups in a cluster environment
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
US7848261B2 (en) 2006-02-17 2010-12-07 Isilon Systems, Inc. Systems and methods for providing a quiescing protocol
US7590660B1 (en) 2006-03-21 2009-09-15 Network Appliance, Inc. Method and system for efficient database cloning
US7756898B2 (en) * 2006-03-31 2010-07-13 Isilon Systems, Inc. Systems and methods for notifying listeners of events
US7844584B1 (en) 2006-06-23 2010-11-30 Netapp, Inc. System and method for persistently storing lock state information
US8539056B2 (en) 2006-08-02 2013-09-17 Emc Corporation Systems and methods for configuring multiple network interfaces
US7752402B2 (en) 2006-08-18 2010-07-06 Isilon Systems, Inc. Systems and methods for allowing incremental journaling
US7590652B2 (en) 2006-08-18 2009-09-15 Isilon Systems, Inc. Systems and methods of reverse lookup
US7822932B2 (en) * 2006-08-18 2010-10-26 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7680836B2 (en) * 2006-08-18 2010-03-16 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7953704B2 (en) 2006-08-18 2011-05-31 Emc Corporation Systems and methods for a snapshot of data
US7680842B2 (en) * 2006-08-18 2010-03-16 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7899800B2 (en) * 2006-08-18 2011-03-01 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7676691B2 (en) 2006-08-18 2010-03-09 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7882071B2 (en) 2006-08-18 2011-02-01 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7979701B1 (en) 2006-09-15 2011-07-12 Netapp, Inc. Cross mapping graphical interface to show encryption relationships between hosts and storage devices
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US7647526B1 (en) 2006-12-06 2010-01-12 Netapp, Inc. Reducing reconstruct input/output operations in storage systems
US7620669B1 (en) 2006-12-15 2009-11-17 Netapp, Inc. System and method for enhancing log performance
US8286029B2 (en) * 2006-12-21 2012-10-09 Emc Corporation Systems and methods for managing unavailable storage devices
US7593938B2 (en) * 2006-12-22 2009-09-22 Isilon Systems, Inc. Systems and methods of directory entry encodings
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
US7509448B2 (en) 2007-01-05 2009-03-24 Isilon Systems, Inc. Systems and methods for managing semantic locks
US8190641B2 (en) 2007-02-13 2012-05-29 Netapp, Inc. System and method for administration of virtual servers
US8868495B2 (en) * 2007-02-21 2014-10-21 Netapp, Inc. System and method for indexing user data on storage systems
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
US8219821B2 (en) 2007-03-27 2012-07-10 Netapp, Inc. System and method for signature based data container recognition
US9632870B2 (en) 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US7900015B2 (en) 2007-04-13 2011-03-01 Isilon Systems, Inc. Systems and methods of quota accounting
US7779048B2 (en) 2007-04-13 2010-08-17 Isilon Systems, Inc. Systems and methods of providing possible value ranges
US8966080B2 (en) 2007-04-13 2015-02-24 Emc Corporation Systems and methods of managing resource utilization on a threaded computer system
US7827350B1 (en) 2007-04-27 2010-11-02 Netapp, Inc. Method and system for promoting a snapshot in a distributed file system
US8898536B2 (en) * 2007-04-27 2014-11-25 Netapp, Inc. Multi-core engine for detecting bit errors
US7882304B2 (en) * 2007-04-27 2011-02-01 Netapp, Inc. System and method for efficient updates of sequential block storage
US7840837B2 (en) * 2007-04-27 2010-11-23 Netapp, Inc. System and method for protecting memory during system initialization
US8219749B2 (en) * 2007-04-27 2012-07-10 Netapp, Inc. System and method for efficient updates of sequential block storage
US7987383B1 (en) 2007-04-27 2011-07-26 Netapp, Inc. System and method for rapid indentification of coredump disks during simultaneous take over
US7836331B1 (en) 2007-05-15 2010-11-16 Netapp, Inc. System and method for protecting the contents of memory during error conditions
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
US7882068B2 (en) 2007-08-21 2011-02-01 Isilon Systems, Inc. Systems and methods for adaptive copy on write
US7949692B2 (en) 2007-08-21 2011-05-24 Emc Corporation Systems and methods for portals into snapshot data
US7966289B2 (en) * 2007-08-21 2011-06-21 Emc Corporation Systems and methods for reading objects in a file system
US7996636B1 (en) 2007-11-06 2011-08-09 Netapp, Inc. Uniquely identifying block context signatures in a storage volume hierarchy
US8380674B1 (en) 2008-01-09 2013-02-19 Netapp, Inc. System and method for migrating lun data between data containers
US8352716B1 (en) 2008-01-16 2013-01-08 American Megatrends, Inc. Boot caching for boot acceleration within data storage systems
US7996607B1 (en) 2008-01-28 2011-08-09 Netapp, Inc. Distributing lookup operations in a striped storage system
US8200734B1 (en) * 2008-02-07 2012-06-12 At&T Intellectual Property Ii L.P. Lookup-based Galois field operations
US7984324B2 (en) 2008-03-27 2011-07-19 Emc Corporation Systems and methods for managing stalled storage devices
US7949636B2 (en) * 2008-03-27 2011-05-24 Emc Corporation Systems and methods for a read only mode for a portion of a storage system
US7953709B2 (en) * 2008-03-27 2011-05-31 Emc Corporation Systems and methods for a read only mode for a portion of a storage system
US7870345B2 (en) 2008-03-27 2011-01-11 Isilon Systems, Inc. Systems and methods for managing stalled storage devices
US8725986B1 (en) 2008-04-18 2014-05-13 Netapp, Inc. System and method for volume block number to disk block number mapping
US8799429B1 (en) 2008-05-06 2014-08-05 American Megatrends, Inc. Boot acceleration by consolidating client-specific boot data in a data storage system
US9158579B1 (en) 2008-11-10 2015-10-13 Netapp, Inc. System having operation queues corresponding to operation execution time
US8572036B2 (en) * 2008-12-18 2013-10-29 Datalight, Incorporated Method and apparatus for fault-tolerant memory management
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
US8793223B1 (en) 2009-02-09 2014-07-29 Netapp, Inc. Online data consistency checking in a network storage system with optional committal of remedial changes
US8688798B1 (en) 2009-04-03 2014-04-01 Netapp, Inc. System and method for a shared write address protocol over a remote direct memory access connection
US8037058B2 (en) * 2009-04-09 2011-10-11 Oracle International Corporation Reducing access time for data in file systems when seek requests are received ahead of access requests
US8117388B2 (en) * 2009-04-30 2012-02-14 Netapp, Inc. Data distribution through capacity leveling in a striped file system
US20100325351A1 (en) * 2009-06-12 2010-12-23 Bennett Jon C R Memory system having persistent garbage collection
US8806143B1 (en) 2009-10-09 2014-08-12 Netapp, Inc. Queuing received write blocks for reducing file fragmentation
EP2467783B1 (en) * 2009-10-09 2020-05-27 Violin Systems LLC Memory system with multiple striping of raid groups and method for performing the same
US8566640B2 (en) 2010-07-19 2013-10-22 Veeam Software Ag Systems, methods, and computer program products for instant recovery of image level backups
KR20120032253A (ko) * 2010-09-28 2012-04-05 삼성전자주식회사 데이터 저장 장치들을 시험하는 방법 및 이를 위한 젠더
US9069471B2 (en) * 2011-09-30 2015-06-30 Hitachi, Ltd. Passing hint of page allocation of thin provisioning with multiple virtual volumes fit to parallel data access
WO2014127147A1 (en) 2013-02-13 2014-08-21 Security First Corp. Systems and methods for a cryptographic file system layer
JP6155754B2 (ja) * 2013-03-28 2017-07-05 富士通株式会社 ストレージシステム、分配装置、分配装置の制御プログラム、およびストレージシステムの制御方法
EP3026545B1 (en) * 2013-08-09 2019-02-20 Huawei Technologies Co., Ltd. File processing method and storage device
CN103733175B (zh) 2013-08-09 2015-05-27 华为技术有限公司 一种文件处理方法、装置及存储设备
US9733849B2 (en) 2014-11-21 2017-08-15 Security First Corp. Gateway for cloud-based secure storage
US9841908B1 (en) 2016-06-30 2017-12-12 Western Digital Technologies, Inc. Declustered array of storage devices with chunk groups and support for multiple erasure schemes
US10372368B2 (en) * 2016-10-13 2019-08-06 International Business Machines Corporation Operating a RAID array with unequal stripes
US10822132B2 (en) 2017-02-10 2020-11-03 R.E.D. Stamp, Inc. High speed stamp applicator
US11809373B2 (en) * 2021-03-16 2023-11-07 International Business Machines Corporation Defining redundant array of independent disks level for machine learning training data
US12093435B2 (en) 2021-04-29 2024-09-17 Dell Products, L.P. Methods and systems for securing data in a distributed storage system
US11892983B2 (en) 2021-04-29 2024-02-06 EMC IP Holding Company LLC Methods and systems for seamless tiering in a distributed storage system
US12007942B2 (en) * 2021-10-27 2024-06-11 EMC IP Holding Company LLC Methods and systems for seamlessly provisioning client application nodes in a distributed system
US11677633B2 (en) 2021-10-27 2023-06-13 EMC IP Holding Company LLC Methods and systems for distributing topology information to client nodes
US11922071B2 (en) 2021-10-27 2024-03-05 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components and a GPU module
US12131074B2 (en) 2021-10-27 2024-10-29 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using GPUS
US11762682B2 (en) 2021-10-27 2023-09-19 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components with advanced data services

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4075691A (en) * 1975-11-06 1978-02-21 Bunker Ramo Corporation Communication control unit
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
US4377843A (en) * 1979-04-19 1983-03-22 Wescom Switching, Inc. Data distribution interface
US4333144A (en) * 1980-02-05 1982-06-01 The Bendix Corporation Task communicator for multiple computer system
US4488231A (en) * 1980-09-29 1984-12-11 Honeywell Information Systems Inc. Communication multiplexer having dual microprocessors
FR2500659B1 (fr) * 1981-02-25 1986-02-28 Philips Ind Commerciale Dispositif pour l'allocation dynamique des taches d'un ordinateur multiprocesseur
US4456957A (en) * 1981-09-28 1984-06-26 Ncr Corporation Apparatus using a decision table for routing data among terminals and a host system
US4685125A (en) * 1982-06-28 1987-08-04 American Telephone And Telegraph Company Computer system with tasking
US4550368A (en) * 1982-07-02 1985-10-29 Sun Microsystems, Inc. High-speed memory and memory management system
US4527232A (en) * 1982-07-02 1985-07-02 Sun Microsystems, Inc. High-speed memory and memory management system
US4710868A (en) * 1984-06-29 1987-12-01 International Business Machines Corporation Interconnect scheme for shared memory local networks
US4719569A (en) * 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
US4825354A (en) * 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
US4742447A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to control I/O accesses in a multi-tasking virtual memory virtual machine type data processing system
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
US4803621A (en) * 1986-07-24 1989-02-07 Sun Microsystems, Inc. Memory access system
US4780821A (en) * 1986-07-29 1988-10-25 International Business Machines Corp. Method for multiple programs management within a network having a server computer and a plurality of remote computers
US4819159A (en) * 1986-08-29 1989-04-04 Tolerant Systems, Inc. Distributed multiprocess transaction processing system and method
US4783730A (en) * 1986-09-19 1988-11-08 Datapoint Corporation Input/output control technique utilizing multilevel memory structure for processor and I/O communication
US4766534A (en) * 1986-10-16 1988-08-23 American Telephone And Telegraph Company, At&T Bell Laboratories Parallel processing network and method
US4887204A (en) * 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US4897781A (en) * 1987-02-13 1990-01-30 International Business Machines Corporation System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
US5109515A (en) * 1987-09-28 1992-04-28 At&T Bell Laboratories User and application program transparent resource sharing multiple computer interface architecture with kernel process level transfer of user requested services
IL88165A (en) * 1987-12-21 1993-01-31 Honeywell Bull Apparatus and method for a data processing system having a peer relationship among a plurality of central processing units
US4875159A (en) * 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
US4914583A (en) * 1988-04-13 1990-04-03 Motorola, Inc. Method of indicating processes resident within a cell of a data processing system
US4993030A (en) * 1988-04-22 1991-02-12 Amdahl Corporation File system for a plurality of storage classes
US5065354A (en) * 1988-09-16 1991-11-12 Compaq Computer Corporation Queued posted-write disk write method with improved error handling
US5218696A (en) * 1989-07-24 1993-06-08 International Business Machines Corporation Method for dynamically expanding and rapidly accessing file directories
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5276867A (en) * 1989-12-19 1994-01-04 Epoch Systems, Inc. Digital data storage system with improved data migration
US5218695A (en) * 1990-02-05 1993-06-08 Epoch Systems, Inc. File server system having high-speed write execution
US5195100A (en) * 1990-03-02 1993-03-16 Micro Technology, Inc. Non-volatile memory storage of write operation identifier in data sotrage device
US5166939A (en) * 1990-03-02 1992-11-24 Micro Technology, Inc. Data storage apparatus and method
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
US5230047A (en) * 1990-04-16 1993-07-20 International Business Machines Corporation Method for balancing of distributed tree file structures in parallel computing systems to enable recovery after a failure
JPH0731582B2 (ja) * 1990-06-21 1995-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション パリティ保護データを回復するための方法および装置
JPH0644218B2 (ja) * 1990-10-22 1994-06-08 インターナショナル・ビジネス・マシーンズ・コーポレイション ミラー化された記憶装置の管理方法および装置
US5274807A (en) * 1990-11-01 1993-12-28 At&T Bell Laboratories Method for reducing magnetic storage volume for computer disk image backup
US5255270A (en) * 1990-11-07 1993-10-19 Emc Corporation Method of assuring data write integrity on a data storage device
US5155835A (en) * 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
JP2603757B2 (ja) * 1990-11-30 1997-04-23 富士通株式会社 アレ−ディスク装置の制御方法
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
US5239640A (en) * 1991-02-01 1993-08-24 International Business Machines Corporation Data storage system and method including data and checksum write staging storage
US5276840A (en) * 1991-03-22 1994-01-04 Acer Incorporated Disk caching method for writing data from computer memory including a step of writing a plurality of physically adjacent blocks in a single I/O operation
US5379417A (en) * 1991-11-25 1995-01-03 Tandem Computers Incorporated System and method for ensuring write data integrity in a redundant array data storage system
US5313626A (en) * 1991-12-17 1994-05-17 Jones Craig S Disk drive array with efficient background rebuilding
US5333305A (en) * 1991-12-27 1994-07-26 Compaq Computer Corporation Method for improving partial stripe write performance in disk array subsystems
JPH06511099A (ja) * 1991-12-27 1994-12-08 コンパック・コンピュータ・コーポレイション 不均一ストライプサイズマッピングスキームを用いたディスク配列操作を実行する方法
US5442752A (en) * 1992-01-24 1995-08-15 International Business Machines Corporation Data storage method for DASD arrays using striping based on file length
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
US5708668A (en) * 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
US5315602A (en) * 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004537813A (ja) * 2001-08-03 2004-12-16 アイシロン・システムズ・インコーポレーテッド 記憶装置から成る分散型ファイルシステム上の情報をトラッキングするためのメタデータを提供するシステムおよび方法
JP2003296038A (ja) * 2002-03-21 2003-10-17 Network Appliance Inc Raidシステムにおいてストライプの連続アレイに書き込む方法
JP2010079928A (ja) * 2002-03-21 2010-04-08 Netapp Inc Raidシステムにおいてストライプの連続アレイに書き込む方法

Also Published As

Publication number Publication date
EP0701716B1 (en) 2002-08-14
HK1013871A1 (en) 1999-09-10
EP0701716A1 (en) 1996-03-20
JP3862274B2 (ja) 2006-12-27
EP0701716A4 (en) 1999-11-17
DE69431186D1 (de) 2002-09-19
DE69431186T2 (de) 2003-05-08
JP2006260582A (ja) 2006-09-28
HK1045738A1 (en) 2002-12-06
EP1197836A3 (en) 2009-06-17
US6038570A (en) 2000-03-14
EP1197836A2 (en) 2002-04-17
WO1994029796A1 (en) 1994-12-22
ATE222384T1 (de) 2002-08-15

Similar Documents

Publication Publication Date Title
EP0701716B1 (en) Method and file system for allocating blocks of files to storage space in a RAID disk system
US6138126A (en) Method for allocating files in a file system integrated with a raid disk sub-system
US6021509A (en) Method and system for rebuilding log-structured arrays
US8135907B2 (en) Method and system for managing wear-level aware file systems
US6871272B2 (en) Data sorting in information storage systems
CN104956312B (zh) 存储装置及存储装置的控制方法
CN103186350B (zh) 混合存储系统及热点数据块的迁移方法
JP5066209B2 (ja) コントローラ、データ記憶装置、及びプログラム
US6636879B1 (en) Space allocation in a write anywhere file system
JPH083798B2 (ja) メモリ割当て方法
US8095728B2 (en) Method and system for power aware I/O scheduling
US20020087822A1 (en) Free space collection in information storage systems
US6611852B1 (en) System and method for cleaning a log structure
JP3407628B2 (ja) 計算機システム
US7584229B2 (en) Method and system for priority-based allocation in a storage pool
US6507890B1 (en) System and method for expanding a log structure in a disk array
Menon et al. An age-threshold algorithm for garbage collection in log-structured arrays and file systems
JPH0786844B2 (ja) 追記型光学式記憶媒体のフォーマット方法
CA2165911C (en) Method for allocating files in a file system integrated with a raid disk sub-system
Staelin High-performance file system design
HK1013871B (en) Method and file system for allocating blocks of files to storage space in a raid disk system
JPS61160133A (ja) デ−タの入力管理方法
Yu et al. Obsi: Object based storage system for massive image databases

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050427

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050620

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050801

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060410

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060608

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060926

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20091006

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101006

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111006

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121006

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20131006

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term