JP4824085B2 - ネットワークファイルシステムをキャッシュするシステム、及び方法 - Google Patents

ネットワークファイルシステムをキャッシュするシステム、及び方法 Download PDF

Info

Publication number
JP4824085B2
JP4824085B2 JP2008508966A JP2008508966A JP4824085B2 JP 4824085 B2 JP4824085 B2 JP 4824085B2 JP 2008508966 A JP2008508966 A JP 2008508966A JP 2008508966 A JP2008508966 A JP 2008508966A JP 4824085 B2 JP4824085 B2 JP 4824085B2
Authority
JP
Japan
Prior art keywords
file
data
volume
cache
caching filer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008508966A
Other languages
English (en)
Other versions
JP2008539520A (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 JP2008539520A publication Critical patent/JP2008539520A/ja
Application granted granted Critical
Publication of JP4824085B2 publication Critical patent/JP4824085B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/59Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable

Description

[発明の分野]
本発明はキャッシュシステムに関し、詳しくは、コンピュータネットワークを介してマルチプロトコルクライアントによって発行されたデータアクセス要求に応答する、キャッシング・ファイラにより提供されるデータのストレージ仮想化に関する。
[発明の背景]
遠隔地を保有する組織は、しばしば、エンジニアリングアプリケーションやライブラリなどの重要なデータを別の場所に複製しなければならないことがある。ネットワーク遅延を受けることなく、そのような重要なデータを遠隔地にいるユーザが利用できるようにするために、組織は、相当なリソース(例えば、ファイルサーバで実行されるファイルシステムなど)を消費して、複雑な複製インフラストラクチャ、及びシステムを管理することがある。データ複製は一般に、読み出し専用データセットに対する分散オンラインアクセスを可能にする既知の技術である。従来のデータ複製は、データセットの読み出し専用コピー全体を分散サーバ上に作成するために、ファイルシステムミラーリングに大きく依存することが多い。
ファイルシステムミラーリングにより生成されるミラーは一般に、大量の管理コストを必要とする。例えば管理者は、複製しなければならないデータを判断しなければならないだけでなく、各ミラーに使用される実際のリソース(ファイルシステムやファイルサーバなど)も管理しなければならない。データセットが大きくなると、この種のデータ複製は、次第に現実的でなくなる。また、複製インフラストラクチャは、複製データを格納するために、遠隔地にサーバの存在を必要とする。そのため組織は、自分達のサーバインフラストラクチャを中央位置に集約することができない。したがって、重要データに対する迅速なアクセスの利点を損なうことなく、高価な複製インフラストラクチャ、及びプロセスを不要にすることが、いまだに必要とされている。
データ複製ミラーリングに代わる1つの代替策が、プロキシキャッシングである。プロキシキャッシングシステムは通常、データセットをオンデマンドで透過的に複製する目的で使用される。一般的なプロキシキャッシュシステムは、フロントエンド・ストレージシステム、またはローカルストレージ(すなわち、「キャッシュ」)を備えた「プロキシデバイス」を備え、フロントエンド・ストレージシステムは、バックエンドストレージシステムに、すなわちリモートストレージを備えた「起源サーバ」に接続される。クライアント要求がキャッシュにより満たされない場合、そのクライアント要求は、起源サーバに渡される。そして、サーバ応答が、要求元クライアントへ返送され、関連データはすべて、ローカルストレージにキャッシュされる。この種のトランザクションは、「キャッシュ・ミス」と呼ばれる。キャッシュ・ミスの結果、一般に、ファイルシステムデータのようなデータがキャッシュに「入れられる」ことになる。クライアント要求を満たすために必要なデータがキャッシュ上にあれば、プロキシデバイスは、関連サーバと通信することなく、応答を構築し、送信することができる。そのようなトランザクションは、「キャッシュ・ヒット」と呼ばれる。キャッシュ・ミス・トランザクションを使用して、プロキシデバイスは、クライアントに対し、プロキシデバイス上のファイルシステムの状態の変更を許可する。その結果、標準的な複製とは違い、クライアントを読み出し専用アクセスに制限することなく、自動的複製が可能となる。
従来のプロキシキャッシング解決策によれば、絶え間ない実地的管理を必要とせずに、例えばファイルのようなデータを遠隔地に配布する機能が得られる。そのようなプロキシキャッシング解決策の一例は、E. Ackaouyにより出願され、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドに譲渡された「Apparatus and Method for a Proxy Cache」と題する米国特許出願第(P01−1509)号に記載されている。キャッシュを備えたプロキシ・ストレージシステム、またはアプライアンスが、サーバ・ストレージシステムに接続される。ファイルシステムは、プロキシアプライアンスが提供する一組のファイルを管理する。そして、それらのファイルは、ネットワーク・ファイル・システム(NFS)プロトコル、および/またはコモン・インターネット・ファイルシステム(CIFS)プロトコルのようなファイルシステムプロトコルを使用して、クライアントからアクセスされる。これに応答し、プロキシ・アプライアンスは、ファイルハンドルに基づくファイル・インデックス・ハッシュ手段を使用して、ファイルを提供する。
簡単に言えば、プロキシ・アプライアンスは、クライアントが発行するNFS/CIFSデータアクセス要求を「監視(listen)」し、ローカル・ハッシュ手段を使用してその要求に応じることが出来るか否かを判断する。その目的のために、プロキシ・アプライアンスは、クライアント要求を自分のファイルシステムに渡してキャッシュ判断を行う前に、そのクライアント要求を一意のキャッシュ名に変換する。ファイルハンドルに対して実施されるハッシュ機能は、ファイルシステムがキャッシュファイル、またはオブジェクト記憶識別子を取得し、ファイルがキャッシュ上にあるか否かを判定するために使用されるキャッシュ名を生成する。ファイルがキャッシュ上にあれば、クライアントによって要求されたデータがすべてキャッシュ上にあるか否かの判定がなされる。キャッシュ上に無い場合、プロキシ・アプライアンスは、その要求を代わりにサーバに渡す。要求されたデータ、または確認メッセージがサーバから返送されると、プロキシ・アプライアンスは、そのサーバ応答をクライアントに渡す。また、プロキシ・アプライアンスは、そのサーバ応答を自分のキャッシュに「入れ」、次のクライアント要求を当該プロキシ・アプライアンスによって処理できるようにする。
本発明は、1つには、キャッシュシステムによって提供されるデータをクライアントからマルチプロトコルアクセスすることが可能な改良型キャッシュシステムに関する。また、本発明は、1つには、キャッシュシステムによって提供されるデータを、ファイルシステムデータ構造、及び名前を使用して、クライアントから効率よくアクセスすることが可能な改良型キャッシュシステムに関する。さらに、本発明は、1つには、クライアントによって発行されたマルチプロトコルデータアクセス要求に応答して、キャッシュシステムによって提供されるデータをストレージ仮想化することが可能な改良型キャッシュシステムに関する。この文脈において、ストレージ仮想化とは、通常、ネットワーク全体にわたる複数のストレージシステムからのストレージリソースを協働させるクライアントに対し、ストレージの透過的ビューを提供することを意味する。
[発明の概要]
本発明は、起源サーバに接続され、コンピュータネットワークを介してマルチプロトコル・クライアントから発行されたデータアクセス要求に応答して、ファイラにより提供されるデータをストレージ仮想化するための、マルチプロトコル・キャッシング・ストレージシステムを備えたネットワーク・キャッシング・システムに関する。このマルチプロトコル・キャッシング・ファイラは、散在ボリュームを管理するように構成されたファイルシステムを含み、それによって、マルチプロトコル・クライアントによるデータアクセスを可能にするキャッシュ機能を提供する。その目的のために、キャッシング・ファイラは、マルチプロトコル・クライアントデータアクセス要求を、キャッシング・ファイラと起源サーバのどちらによっても実行可能な汎用的なファイルシステム・プリミティブ・オペレーションに変換する。
例示的実施形態として、このキャッシュ機能の一部は、キャッシング・ファイラに接続された1以上のディスクからなるキャッシュ・ボリュームを含むキャッシング・ファイラの「ローカル・キャッシュ」によって提供される。本発明の一態様によれば、キャッシュ・ボリュームは、例えば、クライアントから要求されたデータを例えばファイルのような1以上のストレージ・オブジェクトから提供するように構成された散在ボリュームとして実施され、キャッシュボリューム中の少なくとも1つのブロックは抜けている場合がある(すなわち、不在ブロック)。この不在ブロックの抜けデータは、起源サーバに格納され、例えば、リモート・フェッチ・オペレーションを使用して、クライアントに対して透過的な態様で取得(「」)される。
有利なことに、本発明によれば、マルチプロトコル・キャッシング・ファイラの空き記憶空間を利用して、ネットワーク・キャッシング・システムにより提供されるデータに対する高速かつ効率的なクライアントアクセスが可能なする。ファイルハンドルからオブジェクト記憶への明示的な変換が必要な従来のキャッシュシステムとは違い、この新規なマルチプロトコル・キャッシング・ファイラによれば、ファイルシステムを使用することで、具体的には、ファイルシステムによって編成されたストレージ・オブジェクト(ファイル)の実際の名前を使用することで、ネットワーク・キャッシング・システムが提供するデータに対する効率的なクライアントアクセスが可能になる。さらに、ファイルシステムは、キャッシング・ファイラの散在ボリュームと協働し、マルチプロトコルクライアントに対して透過的な態様で、提供されたデータのストレージ空間仮想化を行うことができる。
本発明の上記の利点、および他の利点は、添付の図面を参照し、下記の説明を読めれば更によく分かるであろう。図中、同じ参照符号は、同一の、または機能的に同一の要素であることを意味している。
[例示的実施形態の詳細な説明]
A.ネットワーク環境
図1は、バックエンド・ストレージシステムから伝送された情報(データ)に対するキャッシュ機能を提供するように構成されたフロントエンド・ストレージシステムを含むネットワーク・キャッシュ・システム環境100を示す略ブロック図である。その目的のために、フロントエンド・ストレージシステムは、例えば、ディスクアレイ160のディスク130のような記憶装置上での情報の編成に関するストレージサービスを提供するキャッシング・ファイラ120として実施されるコンピュータである。キャッシング・ファイラ120は、システムバス125によって相互接続されたプロセッサ122、メモリ124、1以上のネットワークアダプタ126a,b、およびストレージアダプタ128を含む。また、キャッシング・ファイラ120は、ストレージ・オペレーティング・システム200を更に含み、ストレージ・オペレーティング・システム200は、ファイルシステムのような高レベルモジュールを実施し、情報を名前付きファイル、ディレクトリ、および仮想ディスク(以後、特殊ファイル、または「ブロック」と呼ぶ)ストレージ・オブジェクトとしてディスク上に論理編成する。
図示の実施形態において、メモリ124は、ソフトウェアプログラムコードの格納のために、プロセッサ、およびアダプタによってアドレス指定可能な複数の記憶場所を有する。メモリの一部はバッファ・キャッシュ170として更に編成され、本発明に関連するデータ構造を格納する場合がある。また、プロセッサ、およびアダプタは、ソフトウェアコードを実行し、データ構造を操作するように構成された処理要素、および/または論理回路を含む場合がある。ストレージ・オペレーティング・システム200は、その一部が通常、メモリに常駐し、処理要素によって実行され、とりわけ、ファイラによって実行されるストレージ・オペレーションを実施することにより、ファイラ120を機能的に編成する。当業者には明らかなように、本明細書に記載する本発明の技術に関連するプログラム命令の格納、および実行には、他の処理手段や、種々のコンピュータ読み取り可能媒体を含む他の記憶手段を使用してもよい。
ネットワークアダプタ126a,b(以後、一般に「ネットワークアダプタ126」と呼ぶ)は、コンピュータネットワーク140を介してキャッシング・ファイラをクライアント、及びバックエンド・ストレージシステムに接続するために必要な機械的、電気的、および信号的回路を含む。コンピュータネットワーク140は、ポイント・ツー・ポイント接続であってもよいし、ローカル・エリア・ネットワーク(LAN)やワイド・エリア・ネットワーク(WAN)のような共有媒体であってもよい。例えば、コンピュータネットワーク140は、イーサネットネット(R)・ネットワーク、またはファイバチャネル(FC)・ネットワークとして実施される場合がある。クライアント110は、トランスミッション・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)のような所定のプロトコルにしたがって個々のデータフレーム、またはデータパケットをやりとりすることにより、ネットワーク140を介してファイラ120と通信することができる。
クライアント110は、アプリケーション112を実行するように構成された汎用コンピュータであってもよい。また、クライアント110は、情報配送のクライアント/サーバモデルにしたがってキャッシング・ファイラ120と通信する場合がある。すなわち、クライアントが、キャッシング・ファイラにサービスを要求すると、ファイラは、ネットワーク140を介してパケットをやりとりすることにより、クライアントによてt要求されたサービスの結果を返す場合がある。ファイルまたはディレクトリ形態の情報をアクセスする場合、クライアントは、TCP/IP上で実施されるコモン・インターネット・ファイル・システム(CIFS)プロトコルやネットワーク・ファイル・システム(NFS)プロトコルのようなファイルベースのアクセスプロトコルを有するパケットを発行する場合がある。一方、ブロック形態の情報をアクセスする場合、クライアントは、「SCSI over TCP」(iSCSI)プロトコルや、「SCSI over FC」(FCP)プロトコルのようなブロックベースのアクセスプロトコルを有するパケットを発行する場合がある。
ストレージアダプタ128は、ファイラ120上で実行されるストレージ・オペレーティング・システム200と協働し、ユーザ(すなわち、クライアント)から要求された情報を取得する。この情報は、任意のタイプの書き込み可能な記憶装置のアレイに格納され、例えば、ビデオテープ、光学媒体、DVD、磁気テープ、バブルメモリ、電気的ランダムアクセスメモリ、MEMSデバイスのほか、データおよびパリティ情報を含む情報を記憶するように構成された任意の同様の媒体に格納される場合がある。ただし、本明細書に例示するように、情報は、HDD、および/またはDASDのようなディスク130のアレイ160に格納されることが好ましい。ストレージアダプタは、従来の高性能FCシリアル・リンク・トポロジのようなI/O相互接続構成を介してディスクに接続するための入出力(I/O)インタフェース回路を含む。
アレイ160への情報の格納は、1以上のストレージ「ボリューム」として実施されることが好ましい。ストレージボリュームは、一群の物理ストレージディスク130を含み、それらが協働して、ボリューム(複数の場合もあり)上のボリュームブロック番号(vbn)空間の全体的論理構成を規定する。必須ではないが、各論理ボリュームは一般に、そのボリューム独自のファイルシステムに関連する。論理ボリューム、および/またはファイルシステム内のディスクは通常、1以上のグループとして編成され、各グループが、RAID(Redundant Array of Independent Disks)として運用される場合がある。RAID−4レベル実施形態のような大半のRAID実施形態は、RAIDグループ中の所与の数の物理的ディスクにわたってデータストライプを冗長書き込みし、そのストライプ状データに関するパリティ情報を適切に格納することによって、データ記憶の信頼性/完全性を向上させる。RAID実施形態の一例は、RAID−4レベル実施形態である。ただし、他のタイプ、または他のレベルのRAID実施形態を本明細書に記載する本発明の原理にしたがって使用することも可能である。
一実施形態として、キャッシング・ファイラ120のキャッシュ機能は、1つには、「ローカル・キャッシュ」によって与えられる。この文脈において、ローカル・キャッシュとは、(1)高レベルプロセッサ・キャッシュ123、(2)中間レベルバッファ・キャッシュ170、および(3)キャッシング・ファイラに接続された1以上のディスク130からなる低レベル「第3」キャッシュボリューム150を含むキャッシュメモリ階層を意味する。本明細書に記載する本発明の一態様によれば、キャッシュ・ボリューム150は例えば、クライアント150によって要求されたデータを例えばファイルのような1以上のストレージ・オブジェクトから提供するように構成された散在ボリュームとして実施され、キャッシュ・ボリューム150中の少なくとも1つのブロック(すなわち、不在ブロック)は抜けている(すなわち、そのボリュームのローカルディスクに記憶されていない)場合がある。この不在ブロックの抜けているデータは、外部記憶装置に記憶され、例えば、リモート・フェッチ・オペレーションを使用して、クライアントに対して透過的な態様で取得される。
外部記憶装置は、キャッシング・ファイラ120と同様の、例えば起源サーバ180として実施されるコンピュータであり、ディスク上に起源ボリューム185として編成される情報の編成に関するストレージサービスを提供するコンピュータである。起源サーバ180は、ネットワーク140を介してキャッシング・ファイラ120に相互接続され、一般に、ファイラ120と同様のハードウェアを備える。ただし、起源サーバ180は、ストレージシステムを起源サーバとしての使用に適合される改変されたストレージ・オペレーティング・システムを実行する。本明細書に記載する代替実施形態では、複数のキャッシング・ファイラ120が、ネットワーク・キャッシングシステム環境100中の起源サーバ180に接続される場合がある。

B.ストレージ・オペレーティング・システム
ディスク130に対するアクセスを容易にするために、ストレージ・オペレーティング・システム200は、write−anywhereファイルシステムを実施する。write−anywhereファイルシステムは、仮想化モジュールと協働し、キャッシュ(散在)ボリューム150を管理し、ディスク130により提供される記憶空間を「仮想化」する。ファイルシステムは、情報を名前付きのディレクトリ、およびファイルの階層構造としてディスク上に編成する。ディスク上の各ファイルは、データのような情報を格納するように構成された一組のデータブロックとして実施される一方、ディレクトリは、特殊フォーマットのファイルとして実施され、その中に、他のファイルやディレクトリの名前、およびそれらへのリンクが格納される。仮想化モジュールにより、ファイルシステムは、名前付き論理ユニット番号(LUN)としてエキスポートされたディスク上に、情報をブロックの階層構造としてさらに論理編成することが可能となる。
一実施形態として、ストレージ・オペレーティング・システムは、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているNetApp Data ONTAPオペレーティングシステムであることが好ましい。このオペレーティングシステムは、Write Anywhere File Layout(WAFL)ファイルシステムを実施する。ただし、当然ながら、任意の適当なストレージ・オペレーティング・システムを本明細書に記載する本発明の原理にしたがって使用されるように拡張することも可能であるものと考えられる。したがって、「WAFL」という用語を使用した場合でも、この用語は、本明細書の教示に適合する任意のファイルシステムを指すものとして広い意味で解釈しなければならない。
図2は、本発明とともに有利に使用されるストレージ・オペレーティング・システム200を示す略ブロック図である。ストレージ・オペレーティング・システムは、統合ネットワーク・プロトコルスタックを形成するように編成された一連のソフトウェア層を含む。すなわち、より一般的に言えば、ストレージ・オペレーティング・システムは、キャッシング・ファイラに格納された情報をマルチプロトコル・クライアントがブロックアクセス・プロトコル、およびファイルアクセス・プロトコルを使用してアクセスするためのデータパスをマルチプロトコル・クライアントに提供するためのマルチプロトコル・エンジンを含む。プロトコルスタックは、IP層212、並びにその支援搬送手段であるTCP層214、及びユーザ・データグラム・プロトコル(UDP)層216のようなネットワークプロトコル層に対するインタフェースを提供する、ネットワークドライバ(例えば、ギガビット・イーサネット・ドライバ)のメディアアクセス層210を含む。ファイルシステムプロトコル層は、マルチプロトコル・ファイルアクセスを可能するためのもので、その目的のために、ダイレクト・アクセス・ファイル・システム(DAFS)プロトコル218、NFSプロトコル220、CIFSプロトコル222、およびハイパー・テキスト・トランスファ・プロトコル(HTTP)プロトコル224を含む。VI層226は、DAFSプロトコル218に必要とされるRDMAのようなダイレクト・アクセス・トランスポート(DAT)機能を提供するために、VIアーキテクチャを実施する。
iSCSIドライバ層228は、TCP/IPネットワークプロトコル層を介したブロックプロトコルアクセスを提供する一方、FCドライバ層230は、ブロックアクセス要求の送受信、及びキャッシング・ファイラに対する応答のやりとりを行う。FCドライバ、およびiSCSIドライバは、ブロックに対してFC固有の、およびiSCSI固有のアクセス制御を行い、したがって、ファイラ上のブロックをアクセスするときに、iSCSIとFCPのいずれか一方への、あるいはそれら両方へのLUNのエキスポートを管理する。また、ストレージ・オペレーティング・システムは、I/O処理にしたがってボリューム/ディスクに対する情報の記憶、および取り出しを管理するRAIDシステム240として実施されるストレージモジュール、並びに、例えばSCSIプロトコルのようなディスク・アクセス・プロトコルを実施するディスクドライバシステム250を含む。
ストレージ・オペレーティング・システム200は、ファイルシステム280に対するインタフェースとして機能するNetApp Remote Volume(NRV)プロトコル層295をさらに含む。NRVプロトコルは一般に、ローカルディスクに格納されていないデータブロックをリモートディスクからフェッチするために使用される。ただし、本明細書に記載するように、NRVプロトコルは、本発明の原理にしたがって散在キャッシュボリューム150中の不在ブロックをフェッチするための、キャッシング・ファイラと起源サーバとの間の通信にも、使用される場合がある。なお、代替実施形態として、NRVプロトコルの代わりに、NFSプロトコルや他の所有権のあるブロック・フェッチング・プロトコルのような、従来のファイルレベルプロトコルやブロックレベルプロトコルも、本発明の教示の範囲内で使用することができる。
後で詳しく説明するように、ストレージ・オペレーティング・システム200の要求発生器296は、ローカルディスク上に格納されていないデータブロック、すなわち、キャッシング・ファイラ120のキャッシュボリューム150に格納されていないデータブロックをシステムが取得するために使用される。一方、ポンプブロック298は、要求されたそれらのブロック、および他のブロックの起源サーバ180からの取得を調節するためにも使用される場合がある。また、本発明によれば、トランケータ294は、ローカル・キャッシュ(例えば、キャッシュ・ボリューム150)が一杯になったときに、記憶空間を返還要求するためのキャッシュ破棄ポリシーを実施し、リモート・アップデート・エンジン(RUE292)は、キャッシュボリューム150に変更を加えると思われるファイルシステムオペレーションを起源サーバ180へ転送するために使用される。要求発生器296、ポンプ298、トランケータ294、およびRUE292は、本明細書では個別のソフトウェアモジュールとして図示説明されているが、それらは、オペレーティングシステム200の単一のモジュールとして一体化してもよい。さらに、それらのモジュールは、ハードウェアとして実施しても、ソフトウェアとして実施しても、ファームウェアとして実施してもよく、あるいは、それらの任意の組み合わせとして実施してもよい。
ディスクソフトウェア層をマルチプロトコルエンジンに橋渡しするのは、例えば、vdiskモジュール290、およびSCSIターゲットモジュール270として実施される仮想化モジュールと通信するファイルシステム280によって実施される仮想化システムである。vdiskモジュール290は、ファイルシステム280の上に層として形成され、ユーザ(例えば管理者)がファイラに対して発行するコマンドに応答して、ユーザインタフェース(UI)275のような管理インタフェースによるアクセスを可能にする。UI275は、ストレージ・オペレーティング・システムの上に配置され、種々の層、およびシステムに対する管理上のアクセス、またはユーザアクセスが可能になるような態様で配置される。SCSIターゲットモジュール270は、FCドライバ230、iSCSIドライバ228と、ファイルシステム280との間に配置され、ブロック(LUN)空間とファイルシステム空間との間の仮想化システムの変換層として機能する。その際、LUNはブロックとして表現される。
ファイルシステムは、例えば、ディスクのような記憶装置に格納された情報に対するアクセスに使用される論理ボリューム管理機能を提供するメッセージベースのシステムである。すなわち、ファイルシステム280は、ファイルシステムセマンティックを提供するだけでなく、通常ならばボリューム管理機能に関係する機能も提供する。そのような機能には(1)ディスクの集合化、(2)ディスクの記憶帯域幅の集合化、および(3)ミラーリング、および/またはパリティ(RAID)のような信頼性保証がある。ファイルシステム280は、WAFLファイルシステム(以後、「write−anywhereファイルシステム」とも呼ばれる)を実施する。このファイルシステムは、例えば4キロバイト(kB)ブロックを使用し、インデックスノード(「inode」)を使用してファイルやファイル属性(例えば、作成時刻、アクセス・パーミッション、サイズ、およびブロック位置など)を識別する。このファイルシステムは、当該ファイルシステムのファイルレイアウトを表わすメタデータをファイルを使用して記憶する。そして、そのようなメタデータファイルには、とりわけ、inodeファイルがある。
ファイルハンドル、すなわちinode番号を含む識別子は、ディスクからinodeを取り出す際に使用される。
簡単に言えば、write−anywhereファイルシステムのinodeはすべて、inodeファイルとして編成される。ファイルシステム(fs)infoブロックは、ファイルシステム内の情報のレイアウトを指定し、ファイルシステムのすべての他のinodeを含むファイルのinodeを含む。各論理ボリューム(ファイルシステム)はfsinfoブロックを有し、fsinfoブロックは、例えばRAIDグループ内の固定位置に格納されることが好ましい。ルートfsinfoブロックのinodeは、inodeファイルのブロックを直接参照する(すなわち、指し示す)場合もあれば、inodeファイルの間接ブロックを参照し、次いでinodeファイルを直接参照する場合もある。inodeファイルの各直接ブロックの中には、inodeが埋め込まれ、各inodeが、間接ブロックを参照し、次いでファイルのデータブロックを参照する場合がある。
動作としては、クライアント110からの要求は、コンピュータネットワーク140を介してパケットとしてキャッシング・ファイラ120に転送され、そこで、ネットワークアダプタ126によって受信される。(層210、または層230の)ネットワークドライバは、必要に応じてそのパケットを処理し、ネットワークプロトコル、およびファイルアクセス層に渡し、更なる処理を施した後、それをwrite−anywhereファイルシステム280へ転送する。後で詳しく説明するように、要求が、キャッシュボリューム150に格納されたデータを変更するものであった場合、キャッシング・ファイラ120は、NRV書き込み要求を介して、その要求を起源サーバ180に送る。一方、その要求が、ボリューム150上のデータを変更するものでなかった場合、その要求はファイルシステム280へ直接渡され、ファイルシステム280は、その要求に応じることを試みる。データがローカル・キャッシュ上になければ(「キャッシュミス」になる場合)、キャッシング・ファイラは、NRV読み出し要求を起源サーバ180に送り、無かったデータをフェッチする。サーバ180から応答を受け取ると、キャッシング・ファイラは、フェッチしたデータを自分のローカル・キャッシュに格納し、要求されたデータを含む応答を作成し、その応答をクライアント110へ返す。
一方、要求されたデータがローカル・キャッシュ上にあれば、キャッシング・ファイラ(ファイルシステム280)は、その要求に応じる。その目的のために、ファイルシステムは、要求されたデータが「コア内」に、すなわち、バッファ・キャッシュ170上になければ、要求されたデータをディスク130から読み出すオペレーションを生成する。このオペレーションは例えば、ファイルシステム280のLoad_Block()関数284として実施される場合がある。情報がキャッシュ170上になければ、ファイルシステム280は、inode番号を使用してinodeファイル内を検索し、適当なエントリにアクセスし、論理vbnを取得する。次に、ファイルシステムは、その論理vbnを含むメッセージ構造をRAIDシステム240に渡す。そして、論理vbnは、ディスク識別子、およびディスクブロック番号(ディスク、dbn)にマッピングされ、ディスクドライバシステム250の適当なドライバ(例えばSCSIドライバ)へと送られる。ディスクドライバは、指定されたディスク130からそのdbnをアクセスし、要求されたデータブロック(複数の場合もあり)をバッファキャッシュ170にロードし、ファイラによって更なる処理を施す。要求が完了すると、キャッシング・ファイラ(および、オペレーティングシステム)は、ネットワーク140を介してクライアント110に返答を返す。
ファイルシステム280は一般に、ディスクから1以上のブロックを読み出すためのLoad_Block()関数を有する。それらのブロックは、読み出し要求に応答して読み出される場合もあれば、例えばファイルに対する先読みアルゴリズムに応答して読み出される場合もある。後で詳しく説明するように、ファイルのバッファ・ツリー内の何らかの要求されたブロックが特殊なABSENT値を有している場合(すなわち、不在ブロックであることを意味している場合)、Load_Block()関数284は、例えばNRVプロトコル295を使用して、適当な外部記憶装置(例えば、起源サーバ180)からその不在ブロックを取得するためのフェッチ動作を開始する。不在ブロック(任意のデータブロックを含む)の取得が済むと、Load_Block()関数284は、要求されたデータを返す。NRVプロトコルの詳細については、「Architecture for Supporting of Sparse Volumes」と題するJason Lango他による上で参照した米国特許出願に記載されている。ただし、遠隔の外部記憶装置からデータを取得できる適当なプロトコルであれば、例えばNFSプロトコルのようないかなるファイルベース、またはブロックベースのプロトコルでも、本発明とともに有利に使用することができる。また、ファイルシステムは、例えば、ファイルを最初にアクセスするときにinode、およびファイルジオメトリを取得するLoad_Inode()関数288をさらに含む場合がある。
なお、キャッシング・ファイラで受信されたクライアント要求に対してデータストレージアクセスを実施するときに必要とされる上記のストレージ・オペレーティング・システム層を通るソフトウェアパスは、代わりに、ハードウェアで実施してもよい。すなわち、本発明の代替実施形態において、ストレージアクセス要求データパスは、フィールド・プログラマブル・ゲート・アレイ(FPGA)や特定用途向け集積回路(ASIC)の中に実現される論理回路として実施される場合がある。この種のハードウェア実施形態によれば、クライアント110によって発行された要求に応答して、ファイラ120により提供されるストレージサービスの性能を向上させることができる。また、本発明の更に別の実施形態として、アダプタ126、128の処理要素はそれぞれ、パケット処理オペレーション、およびストレージ・アクセス・オペレーションの一部、または全部の負荷をプロセッサ122から取り除くことにより、ファイラによって提供されるストレージサービスのパフォーマンスを向上させるように構成される場合がある。当然ながら、本明細書に記載する種々の処理、アーキテクチャ、および手順は、ハードウェアで実施しても、ファームウェアで実施しても、ソフトウェアで実施してもよい。
本明細書では、「ストレージ・オペレーティング・システム」という用語は一般に、ストレージシステムにおけるストレージ機能を、例えばデータアクセスの管理を実施するコンピュータ実行可能コードを意味し、キャッシング・ファイラの場合、このコードは、ファイルシステム・セマンティックを実施する場合もある。その意味で、ONTAPソフトウェアは、マイクロカーネルとして実施されるそのようなストレージ・オペレーティング・システムの一例であり、WAFLファイルシステム・セマンティック、およびデータアクセスの管理を実施するためのWAFL層を含む。また、ストレージ・オペレーティング・システムは、UNIXやWindows NTのような汎用オペレーティングシステム上で動作するアプリケーションプログラムとして実施してもよいし、機能変更可能な汎用オペレーティングシステムの機能を本明細書に記載するストレージアプリケーションに合わせて設定し、使用してもよい。
さらに、当業者には分かるように、本明細書に記載する本発明のシステム、および方法は、ストレージシステムとして実施される、またはストレージシステムを含むスタンドアロンのコンピュータや、その一部を含め、いかなるタイプの特殊目的のコンピュータ(例えば、ファイルサーバ、ファイラ、またはマルチプロトコル・ストレージ・アプライアンス)、または汎用コンピュータにも適用することが可能である。本発明とともに有利に使用されるマルチプロトコル・ストレージ・アプライアンスの一例は、2002年8月8日に出願された「Multi-Protocol Storage Appliance that Provides Integrated Support for File and Block Access Protocols」と題する米国特許出願第10/215,917号に記載されている。さらに、本発明の教示は、種々のストレージ・システム・アーキテクチャに適合させることができ、限定はしないが、例えば、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、およびクライアントまたはホストコンピュータに直接取り付けられたディスクアセンブリ等に適合させることができる。したがって、「ストレージシステム」という用語は、ストレージ機能を実施するように構成された任意のサブシステム、および関連する他の装置、またはシステムに加え、そのような構成も含むものとして広い意味で解釈しなければならない。
C.ファイルシステムの編成
例示的実施形態として、write−anywhereファイルシステムでは、ファイルは、ディスク130上の記憶装置に適合するinodeデータ構造として表現される。図3は、inode300を示す略ブロック図である。inode300は、メタデータ部310、およびデータ部350を有することが好ましい。各inode300のメタデータ部310に格納される情報はファイルを表わし、したがって、ファイルのタイプ312(例えば、通常、ディレクトリ、仮想ディスクなど)、ファイルのサイズ314、ファイルのタイムスタンプ(例えば、アクセス、および/または変更時刻)、並びに所有権、すなわち、ファイルのユーザ識別子(UID318)、およびグループID(GID320)を含む。ただし、各inodeのデータ部350の中身は、タイプフィールド312の中に規定されたファイル(inode)のタイプに応じて、異なる解釈をされる場合がまる。例えば、ディレクトリinodeのデータ部350は、ファイルシステムによって制御されるメタデータを含む一方、通常inodeのデータ部は、ファイルシステムデータを含む。後者の場合、データ部350は、そのファイルに関連するデータの表現を含む。
具体的には、通常のオン・ディスクinodeのデータ部350は、ファイルシステムデータ、およびポインタを含み、後者は、ファイルシステムデータの格納に使用されるディスク上の4kBデータブロックを参照する。ディスク上のデータをアクセスするときに、ファイルシステムとRAIDシステム240の間の効率を高めるために、各ポインタは、論理vbnであることが好ましい。inodeのサイズが限られている場合(例えば128バイト)、64バイト以下のサイズのファイルシステムデータは、そのすべてが、そのinodeのデータ部の中に表現される。一方、ファイルシステムデータが64バイトよりも大きく、かつ、64kB以下である場合、inodeのデータ部(例えば第1レベルのinode)は、最大で16個のポインタを含み、各ポインタが、ディスク上の4kBブロックを参照する。
さらに、データのサイズが64kBよりも大きく、かつ、64メガバイト(MB)以下である場合、inodeのデータ部350中の各ポインタ(例えば、第2レベルinode)は、最大で1024個のポインタを有する間接データブロック(例えば、第1レベルブロック)を参照し、各ポインタが、ディスク上の4kBデータブロックを参照する。64MBよりも大きなサイズのファイルシステムデータに関しては、inode(例えば、第3レベルinode)のデータ部350中の各ポインタは、最大で1024個のポインタを有する二重間接ブロック(例えば、第2レベルブロック)を参照し、各ポインタが、間接(第1レベル)ブロックを参照する。さらに、その間接ブロックは、1024個のポインタを含み、各ポインタが、ディスク上の4kBデータブロックを参照する。ファイルにアクセスする場合、ファイルの各ブロックは、ディスク130からバッファキャッシュ170へロードされる場合がある。
ディスク130からバッファ・キャッシュ170へディスク上のinode(またはブロック)がロードされる場合、コア構造内のそれに対応するものに、そのオンディスク構造が埋め込まれる。例えば、inode300を取り囲む点線(図3)は、オンディスクinode構造のコア内表現を示している。このコア内構造は、メモリ上のデータ(ただし、ディスク上にはない)の管理に必要とされるオンディスク構造、および付加情報を格納するためのメモリブロックである。付加情報としては、例えば、ダーティビット360がある。例えば、書き込み処理による命令にしたがってinode(またはブロック)上のデータを更新/変更した後、その変更されたデータは、そのinode(ブロック)を後でディスクにフラッシュ(記憶)することが出来るように、ダーティビット360を使用してマーキングされる。inode、およびinodeファイルのようなWAFLファイルシステムのコア内フォーマット構造、およびオン・ディスク・フォーマット構造については、1998年10月6日に発行されたDavid Hitz他による「Method for Maintaining Consistent states of a File System and for Creating User-Accessible Read-Only Copies of a File System」と題する、上で援用された米国特許第5、819,292号に開示、および記載されている。
図4は、本発明とともに有利に使用されるファイルのバッファ・ツリーの一実施形態を示す略ブロック図である。バッファ・ツリーは、バッファ・キャッシュ170の中にロードされ、write−anywhereファイルシステム280によって管理されるファイル(例えばファイル400)のブロックの内部表現である。埋め込みinodeのようなルート(トップレベル)inode402は、間接(例えばレベル1)ブロック404を参照する。なお、ファイルのサイズによっては、さらに別のレベル(例えばレベル2、レベル3)の間接ブロックが存在する場合もある。間接ブロック(およびinode)は、ファイルの実際のデータの格納に使用されるデータブロック406を最終的に参照するポインタ405を含む。すなわち、ファイル400のデータはデータブロックに格納され、それらのデータブロックの位置が、ファイルの間接ブロックに格納される。レベル1間接ブロック404はそれぞれ、1024個ものデータブロックへのポインタを含む場合がある。ファイルシステムの「write anywhere」な性質によれば、それらのデータブロックは、ディスク130上のどこに置かれる場合もある。
基礎物理ボリュームを、キャッシング・ファイラ120のようなストレージシステムの1以上の仮想ボリューム(vvol)に分配するようなファイルシステムレイアウトが提供される。そのようなファイルシステムレイアウトの一例については、John K. Edwards他により出願され、ネットワーク・アプライアンス・インコーポレイテッドに譲渡された「Extension of Write Anywhere File System Layout」と題する米国特許出願第10/836,817号に記載されている。基礎物理ボリュームは、キャッシング・ファイラのRAIDグループのような1以上のディスクグループの集合体である。この集合体は、独自の物理的ボリュームブロック番号(pvbn)空間を有し、そのpvbn空間内において、ブロックアロケーション構造のようなメタデータを管理する。各vvolは、独自の仮想ボリュームブロック番号(vvbn)空間を有し、そのvvbn空間内において、ブロックアロケーション構造のようなメタデータを有する。各vvolは、コンテナファイルに関連するファイルシステムであり、コンテナファイルは、vvolによって使用される全てのブロックを含む、集合内のファイルである。また、各vvolは、データブロック、および間接ブロックを含み、間接ブロックは、他の間接ブロック、またはデータブロックを指すブロックポインタを含む。
一実施形態において、pvbnは、vvolに格納された(ファイル400のような)ファイルのバッファ・ツリー内でブロックポインタとして使用される。この「ハイブリッド」vvol実施形態は、親間接ブロック(例えば、inode、または間接ブロック)にpvbnを挿入することしか必要としない。論理ボリュームの読み出しパスにおいて、「論理」ボリューム(vol)情報ブロックは、1以上のfsinfoブロックを参照する1以上のポインタを含み、各fsinfoブロックは、さらに、inodeファイル、およびそれに対応するinodeバッファツリーを指し示す。ブロックの適当な位置を見付けるためのpvbn(vvbnではなく)と同様に、vvol上の読み出しパスは通常、同じである。この文脈において、vvolの読み出しパス(および、対応する読み出し性能)は、物理ボリュームのものと実質的に同様である。pvbnからディスク、dbnへの変換は、ストレージ・オペレーティング・システム200のファイルシステムとRAIDシステムの境界において行われる。
例えば、デュアルvbnハイブリッド(「フレキシブル」)vvol実施形態では、pvbnと、それに対応するvvbnとの両方が、ファイルのバッファ・ツリーにおける親間接ブロックに挿入される。つまり、例えばレベル1(L1)間接ブロックやinodeファイルレベル0(L0)ブロックのような他のブロックへのポインタを有する大半のバッファツリー構造では、各ブロックポインタについて、pvbnとvvbnがペアとして記憶される。図5は、本発明とともに有利に使用されるファイル500のバッファ・ツリーの一実施形態を示す略ブロック図である。埋め込みinodeのようなルート(トップレベル)inode502は、間接(例えば、レベル1)ブロック504を参照する。なお、ファイルのサイズによっては、さらに別のレベル(例えば、レベル2やレベル3)の間接ブロックが存在する場合もある。間接ブロック(および、inode)は、ファイルの実際のデータの格納に使用されるデータブロック506を最終的に参照するpvbn/vvbnポインタ対構造508を有する。
pvbnは、集合体のディスク上の位置を参照する一方、vvbnは、vvolのファイル内の位置を参照する。間接ブロック504におけるブロックポインタ508のようなpvbnの使用は、読み出しパスにおける効率を提供する一方、vvbnブロックポインタの使用は、要求されたメタデータへの効率的なアクセスを提供する。すなわち、あるファイルのあるブロックを開放するとき、そのファイル内の親間接ブロックは、すぐに利用可能なvvbnブロックポインタを得る。そのため、pvbnからvvbnへの変換を実施するための所有権マップへのアクセスに伴う遅延を避けることができ、それでも、読み出しパスにおいて、pvbnを利用することができる。
上記のように、各inodeは、inodeファイル(例えば64バイトよりも大きなデータ)のサイズに応じて、自分のデータ部に、他のブロックへのブロックポインタとして機能する64バイトを有する。従来のハイブリッドボリュームでは、それらの64バイトは、16個のブロックポインタ、すなわち、16個の4バイトブロックポインタとして実施される。例示的デュアルvbnフレキシブルボリュームの場合、inodeの64バイトは、8対の4バイトブロックポインタとして実施され、各対が、vvbn/pvbn対になっている。また、従来のボリュームの、又はハイブリッドボリュームの各間接ブロックは、最大で1024個の(pvbn)ポインタを有する場合がある。一方、デュアルvbnフレキシブルボリュームの各間接ブロックは、最大で510対(pvbn/vvbn)のポインタを有する。
さらに、ポインタ508のうちの幾つかは、それらのポインタ(複数の場合もあり)によって参照されるオブジェクト(複数の場合もあり)(例えば、間接ブロック、またはデータブロック)がローカルに記憶されていないことを示す特殊なABSENT値を有する場合がある。その場合、それらのオブジェクトは、起源サーバ180の起源ボリューム185からフェッチ(取得)しなければならない。例示的実施形態として、ファイルシステム280のLoad_Block()関数284は、各ポインタの中身を解釈し、要求されたブロックが「不在(ABSENT)」であれば、例えばNRVプロトコルを使用して、そのデータの適当な要求(例えば、リモートフェッチオペレーション)を起源サーバ180に送信する。
なお、キャッシュボリューム150は、例えばフレキシブルvvolとして実施される一方、起源ボリューム185は、フレキシブルvvolとして実施される場合も、従来のボリュームとして実施される場合もある。その主たる理由は、論理ファイルプロトコル(NRV)を使用するためである。上記のように、従来のボリュームとフレキシブルvvolの間には、間接ブロックフォーマットに違いがある。ただし、ネットワーク・キャッシュ・システムにおいて、間接ブロックフォーマットの違いは無意味である。換言すれば、キャッシュボリュームと起源ボリュームの間には物理的関係が何も存在しないので、起源ボリュームのタイプは無意味である。
図6は、本発明とともに有利に使用される集合体600の一実施形態を示す略ブロック図である。LUN(ブロック)602、ディレクトリ604、qtree606、およびファイル608は、デュアルvbnフレキシブルvvolのようなvvol610の中に格納され、さらに、集合体600に収容される場合がある。集合体600は、例えば、RAIDシステムの上に層として形成され、RAIDシステムは、少なくとも1つのRAIDプレックス650によって表現される(ストレージ構成がミラーリングされているか否かに応じて)。各プレックス650は少なくとも1つのRAIDグループ660を含む。各RAIDグループは、例えば、1以上のデータ(D)ディスク、および少なくとも1つのパリティ(P)ディスクのような、複数のディスク630をさらに含む。
集合体600は、従来のストレージシステムの物理的ボリュームに似ている一方、vvolは、物理的ボリューム内のファイルに似ている。すなわち、集合体600は、1以上のファイルを含む場合があり、各ファイルはvvol610を含み、vvolにより消費される記憶空間の合計は、物理的ボリューム全体のサイズよりも小さい(または、それに等しい)。集合体は、物理的ボリュームのディスクによって提供されるブロックの記憶空間を規定する「物理的」pvbn空間を利用する一方、(ファイル内の)各埋め込みvvolは、「論理的」vvbn空間を利用して、それらのブロック、例えばファイルを編成する。各vvbn空間は、ファイル内の複数の位置に対応する独立した一組の数であり、次いで、それらの位置は、ディスク上のdbnsに変換される。vvol610は論理ボリュームであるから、自分のvvbn空間内に独自のブロックアロケーション構造(例えば、アクティブマップ、空間マップ、および概要マップ)を有する。
コンテナファイルは、vvolによって使用されるすべてのブロックを含む、集合体中のファイルである。コンテナファイルは、vvolを支援する内部的(集合体に対して)機能であり、例えば、1つのvvolあたり1つのコンテナファイルが存在する。ファイルアプローチにおける純粋な論理ボリュームと同様に、コンテナファイルもまた集合体中の隠しファイルであり、vvolによって使用中のあらゆるブロックを保持する。集合体は、WAFL/fsid/ファイルシステムファイルやストレージラベルファイルのようなvvolのサブディレクトリを格納する、隠しメタデータルートディレクトリを有する。
具体的には、物理的ファイルシステム(WAFL)ディレクトリは、集合中の各vvolについてサブディレクトリを有し、サブディレクトリの名前は、vvolのファイルシステム識別子(fsid)になっている。各fsidサブディレクトリ(vvol)は、少なくとも2つのファイル、すなわち、ファイルシステムファイルとストレージラベルファイルを有する。ストレージラベルファイルは、例えば、従来のRAIDラベルに格納されるものと同様のメタデータを有する。言い換えれば、ストレージラベルファイルは、RAIDラベルに似たものであり、したがって、例えば、vvolの名前、vvolの世界的に一意な識別子(uuid)およびfsid、vvolがオンラインであるか否か、作成中、または破壊中であるか否か等、vvolの状態に関する情報を有する。
図7は、集合体700のオン・ディスク表現を示す略ブロック図である。ストレージ・オペレーティング・システム200(例えば、RAIDシステム240)は、pvbnの物理的ボリュームを構築し、集合700を作成する。その際、pvbn1、およびpvbn2は、その集合体の「物理的」volinfoブロック702を含む。volinfoブロック702は、fsinfoブロック704へのポインタを有し、各fsinfoブロック704は、集合体のスナップショットを表わす場合がある。各fsinfoブロック704は、所有者マップ710、アクティブマップ712、概要マップ714、および空間マップ716、並びに、他の特殊なメタデータファイルといった複数のファイルのinodeを有するinodeファイル706へのブロックポインタを有する。inodeファイル706は、ルートディレクトリ720、および「隠し」メタデータルートディレクトリ730をさらに含み、後者は、ユーザがファイルを「見る」ことができないvvolに関連するファイルを有する名前空間を含む。隠しメタデータルートディレクトリは、ファイルシステムファイル740、およびストレージラベルファイル90を含むWAFL/fsid/ディレクトリ構造を含む。なお、集合体中のルートディレクトリ720は空であり、集合体に関連するファイルはすべて、隠しメタデータディレクトリ730の中に編成される。
また、vvolが散在ボリュームである場合、隠しメタデータディレクトリ730は更に、1つのvvolあたり1つの散在設定メタファイル(「散在設定ファイル」732)を有する。したがって、散在設定ファイル732は、散在ボリュームに関連し、その目的のために、(中でもとりわけ)起源サーバ180のホスト名、および起源ボリューム185を識別する。散在ボリュームのマウント処理の際、散在設定ファイル732が取得され、コア内フォーマットに変換される。特に、散在設定ファイルは、散在ボリュームがキャッシュ・ボリューム150であるか否かを示す識別子をさらに含む。それらの識別子により、後で詳しく説明するように、キャッシング・ファイラ120は、種々のクライアント要求に対し、リモートアップデート、又はローカルアップデートを実施しなければならないか否かを判定することが可能になる。例えば、ネットワーク・キャッシュ・システム環境100のキャッシング・ファイラは、リモートアップデートを実施する場合がある。
ファイルシステムファイル740は、コンテナマップとして編成されたレベル1ブロックを有する編成のコンテナファイルとして実施される他に、vvol750として実施される種々のファイルシステムを参照するブロックポインタも含む。集合体700は、それらのvvolを特殊な予約されたinode番号に維持する。なお、各vvol750は、自分のvvol空間内に特殊な予約されたinode番号を有し、そうしたinode番号は、特に、ブロック・アロケーション・ビットマップ構造に使用される。上記のように、例えば、アクティブマップ762、概要マップ764、及び空間マップ766のようなブロック・アロケーション・ビットマップ構造が、各vvolに置かれる。
具体的には、各vvol750は、集合体と同じinodeファイル構造/内容を有する。ただし、隠しメタデータルートディレクトリ780内に、所有権マップや、WAFL/fsid/ファイルシステムファイル、ストレージラベルファイルは存在しない。その目的のために、各vvol750は、1以上のfsinfoブロック800を指し示すvolinfoブロック752を有し、各fsinfoブロック800は、vvolのアクティブファイルシステムとともに、スナップショットを表わす場合がある。さらに、各fsinfoブロックは、上記のような例外を除き、集合体と同じinode構造/内容を有するinodeファイル760を指し示す。各vvol750は、独自のinodeファイル760、および対応するinode番号を有する固有のinode空間、並びに、独自のルート(fsid)ディレクトリ770、および他のvvolから個別にエキスポートされることがあるファイルのサブディレクトリを有する。
集合体の隠しメタデータルートディレクトリ730に格納されるストレージ・ラベル・ファイル790は、従来のRAIDラベルに似た働きをする小さなファイルである。RAIDラベルは、ボリューム名のような、ストレージシステムに関する物理的情報を有し、その情報は、ストレージ・ラベル・ファイル790にロードされる。例えば、ストレージ・ラベル・ファイル790は、関連vvol750の名前792、vvolのオンライン/オフライン状態794、並びに、関連vvolの他の識別情報、およびステータス情報796(vvolが作成中であるか、破壊中であるか)を含む。
D.散在ボリューム
上記のように、キャッシュボリューム150は、例えば散在ボリュームとして実施される。したがって、「キャッシュボリューム150」という用語と「散在ボリューム150」という用語は、以後、同じ意味で使用される場合がある。散在ボリューム150は、不在ブロックを含むファイルが含まれることを示す、ボリューム(vvol)のオンディスク構造の特殊なマーキングによって識別される。図8は、オンディスク構造を示す略ブロック図であり、このオンディスク構造は、例としてfsinfoブロック800になっている。fsinfoブロック800は、PCPI(Persistent Consistency Point Image)ポインタ805、および散在ボリュームフラグフィールド810、inodeファイル815のinodeを含み、代替実施形態では、さらに別のフィールド820を有する場合がある。PCPIポインタ805は、ファイルシステムに関連するPCPI(スナップショット)へのポインタのデュアルvbn(vvbn/pvbn)対である。散在ボリュームフラグフィールド810は、fsinfoブロックによって表わされるvvolが散在するものであるか否かを識別する。例示的実施形態では、ボリュームが散在するものであることを示すためにフィールド810内にフラグがアサートされる。散在ボリュームフラグフィールド810は、fsinfoブロックに関連するvvolのタイプを識別するタイプフィールドとしてさらに実施される場合がある。inodeファイル815のinodeは、fsinfoブロックに関連するファイルシステムのinodeファイル760(図7)へのルートレベルポインタを含むinodeを含む。
散在ボリューム150内のデータブロックや間接ブロックのような特定のブロック(複数の場合もあり)が、ボリュームを提供しているキャッシング・ファイラ上に物理的に置かれていないことを示すために、ファイルの適当なブロックポインタ(複数の場合もあり)が、特殊なABSENT(不在)値によってマーキング(ラベリング)される。この特殊なABSENT値は、そのデータを代わりのソース、すなわち起源サーバ180から取得しなければならないことをファイルシステムに警告する。

データアクセス要求に応答して、ファイルシステム280のLoad_Block()関数284は、ファイルの適当なブロックポインタがABSENTとしてマーキングされているか否かを判定し、マーキングされている場合、リモートNRVフェッチ(例えば、読み出し)オペレーションメッセージをキャッシング・ファイラから起源サーバへ送信し、要求されたデータをフェッチする。このフェッチ・オペレーションは例えば、起源ボリューム185に格納されたファイルの1以上のファイルブロック番号(fbn)を要求する。なお、この説明は、単一の起源ボリュームに関するものになっているが、本発明の原理は、単一の散在ボリュームが複数の起源ボリュームによって支援され、各起源ボリュームが、散在ボリュームの全体、または一部を支援するような環境にも適用することが可能である。したがって、本明細書の教示を単一の起源ボリュームに限定されるものとして解釈してはならない。
起源サーバ180は、要求されたデータを自分の記憶装置から読み出し、そのデータをキャッシング・ファイラ120に返す。キャッシング・ファイラ120は、データアクセス要求を処理し、要求されたデータを自分のメモリ124に格納する。次いで、ファイルシステム280は、書き込みアロケーション手順の間に、メモリに格納されたデータをローカルディスクに「フラッシュ」(書き込み)する。この処理は、「ダーティ」であるものとしてマーキングされたデータに応答して実施され、あるいは、データをアロケーションしなければならないことをファイルシステムに伝える他の記述に応答して実施される。例示的なwrite anywhereポリシーの手順によれば、ファイルシステム280は、ファイルの間接ブロック(複数の場合もあり)にポインタ値(ABSENT値以外)を割り当てることにより、キャッシュボリューム150にローカルに格納されたデータの位置(複数の場合もあり)を識別する。したがって、データをアクセスするために、リモートフェッチオペレーションは、もはや必要でなくなる。
なお、キャッシング・ファイラ120と起源サーバ180との間でネットワーク140を介して伝送されるNRVメッセージはすべて、物理ディスクアドレスではなく、論理ファイルアドレスを含む。したがって、起源サーバストレージに対していかなる関係にあるキャッシング・ファイラストレージであっても、そのサイズを調節する必要はない。要求されたデータがキャッシング・ファイラに渡されると、そのデータは、適当なvvbn(および/またはpvbn)ブロック番号にしたがって、書き込みアロケーションされる。言い換えれば、キャッシュ・ボリューム150の書き込みアロケーションは、起源ボリューム185上での書き込みアロケーションからは、完全に独立している。
本発明とともに有利に使用される書き込みアロケーション手順の一例は、「Extension of Write Anywhere File Layout Write Allocation」と題するJohn K. Edwardsによる米国特許出願第10/836,090号に記載されており、この出願はここで参照することにより本明細書に援用される。簡単に言えば、書き込みアロケータ282(図2)が集合中の実際のpvbn、及びvvol中のvvbnを選択した状態で、そのvvol内のあるブロックを書き込みアロケーションする場合、ブロックアロケーションは、フレキシブルvvolと集合体の両方に対して同時に進められる。書き込みアロケータは、集合体のアクティブマップ、及び空間マップのようなブロック・アロケーション・ビットマップ構造を調節し、選択されたpvbnを記録し、vvolの同様の構造を調節し、選択されたvvbnを記録する。vvolのvvid(vvol識別子)、およびvvbnは、集合体の所有者マップ710の中の、選択されたpvbnによって決定されるエントリに挿入される。さらに、選択されたpvbnは、宛先vvolのコンテナマップ(図示せず)にも挿入される。最後に、割り当てられたブロックの間接ブロック、またはinodeファイル親が、その割り当てられたブロックへの1以上のブロックポインタによって更新される。更新オペレーションの内容は、vvol実施形態によって異なる場合がある。デュアルvbnハイブリッドvvol実施形態では、pvbnとvvbnの両方が、間接ブロック、またはinodeにブロックポインタとして挿入される。
E.ネットワーク・キャッシュ・システムの動作
本発明は、起源サーバ180に接続されたマルチプロトコル・キャッシング・ファイラ120を有するネットワーク・キャッシュ・システム100に関し、コンピュータネットワーク140を介してマルチプロトコルクライアント110によって発行されたデータアクセス要求に応答して、ファイラによって提供されるデータのストレージ仮想化を提供する、ネットワーク・キャッシュ・システム100に関する。マルチプロトコル・キャッシング・ファイラ120は、散在ボリュームを管理し、データの記憶空間を「仮想化」するように構成されたファイルシステム280を含み、それによってキャッシュ機能を提供し、マルチプロトコル・クライアントによるデータへのアクセスを可能にする。その目的のために、キャッシング・ファイラは、マルチプロトコル・クライアント・データアクセス要求をキャッシング・ファイラと起源サーバ180の両方によって実行可能な汎用ファイルシステムプリミティブに変換するように構成されたストレージ・オペレーティング・システム200のマルチプロトコルエンジンをさらに含む。
図9は、本発明の一実施形態による、データ変更アクセス要求を処理する手順900のステップを示すフロー図である。本明細書において、データ変更アクセス要求とは、キャッシング・ファイラ120のキャッシュ・ボリューム150を変更する任意のオペレーションを含むアクセス要求である。そのような変更オペレーションの例には、例えば、作成(ファイル)、属性設定、および書き込みオペレーションがある。手順900は、ステップ902から開始され、ステップ904へ進み、そこでクライアント書き込みをキャッシング・ファイラ120で受信する。ステップ906において、マルチプロトコルエンジンの適当なプロトコル層は、その書き込み要求をファイルシステム280へ転送するために、汎用ファイルシステム書き込みメッセージに変換する。
ステップ908において、ファイルシステムは、そのファイルシステム書き込みメッセージがキャッシュ・ボリューム150へ送られたものであるか否か、すなわち、そのメッセージが、リモートアップデートオペレーションを支援するように構成された散在ボリュームへ送られたものであるか否かを判定する。例えば、ファイルシステムは、fsinfoブロック800、および散在設定ファイル732を検査することによって、この判定を実施する。上記のように、fsinfoブロック800は、散在ボリュームフラグ810を有し、それがアサートされていれば、そのボリュームが散在ボリュームであることを示す。また、散在設定ファイル732は、適当なタイプの散在ボリュームを識別する、すなわち、データ変更アクセス要求のためのリモートアップデートがサポートされているか否かを示す識別子を含む。書き込みメッセージがキャッシュ・ボリュームへ送られたものでなかった場合、ファイルシステムは、そのファイルシステム書き込みメッセージをファイルシステムの従来の書き込みハンドラに渡し、プリミティブ書き込みオペレーション要求として処理し(ステップ910)、手順はステップ922で終了する。
一方、書き込みメッセージがキャッシュボリューム150へ送られたものであった場合、ステップ912において、ファイルシステムは、その書き込み要求をRUE292に転送する。ステップ914において、RUE292は、その汎用ファイルシステム書き込みメッセージをリモートアップデート要求に変換し、ステップ916において、そのアップデート要求をポンプモジュール298へ送る。例示的実施形態において、ポンプモジュールのポンプ・ワーカー・スレッドは、その要求を受信すると、他の要求の中におけるその要求の優先順位を決める。ステップ918において、リモートアップデート要求は、NRV書き込みメッセージに変換され、ステップ920において、NRV書き込みメッセージは、ネットワーク140を介して起源サーバ180に送信され、サーバ上のファイルシステムによって実行される。そして、手順はステップ922において終了する。
図10は、本発明の一実施形態による非データ変更アクセス要求を処理する手順1000のステップを示すフロー図である。本明細書において、非データ変更アクセス要求とは、キャッシング・ファイラ120のキャッシュ・ボリューム150を変更しない任意のオペレーションを必要とするアクセス要求である。非変更オペレーションの一例は、読み出しオペレーションである。手順1000はステップ1002から開始され、ステップ1004へ進み、そこで、クライアント読み出し要求は、キャッシング・ファイラ120によって受信される。ステップ1006において、マルチプロトコルエンジンの適当なプロトコル層が、その読み出し要求をファイルシステム280へ転送するための汎用ファイルシステム読み出しメッセージに変換する。ステップ1008において、ファイルシステム280は、そのメッセージをファイルシステムの従来の読み出しハンドラに渡し、プリミティブ読み出しオペレーション要求として処理する。
ステップ1010では、要求されたデータがキャッシング・ファイラのローカル・キャッシュ上にあるか否かの判定がなされる。例えば、ファイルシステムは、Load_Block()284関数を使用して1以上のブロックをロードし、各ブロックのブロックポインタを検査し、そのブロックがABSENT(不在)としてマークされているか否かを判定することにより、その判定を行う場合がある。ブロックが不在でなければ、すなわち、要求されたデータがローカル・キャッシュ上にあれば、ステップ1012において、ファイルシステム280は、読み出しメッセージ/要求(上に記載したようなもの)に応じ、手順はステップ1032において終了する。
一方、ブロックが不在であれば、すなわち、要求されたデータがローカル・キャッシュ上になければ、ステップ1014において、ファイルシステムは、その読み出しメッセージをフェッチ要求に変換し、それをポンプモジュール298に送信する。ポンモジュールのポンプ・ワーカー・スレッドは、その要求を受信し、他の要求の中におけるその要求の優先順位を決める。ステップ1016において、ポンプスレッドは、応答を受信するまで、フェッチ要求を格納するためのプレースホルダーを維持し続ける。ステップ1018において、ポンプスレッドは、NRVモジュール295と協働し、フェッチ要求をNRV読み出しメッセージに変換し、ステップ1020において、そのNRV読み出し要求をネットワーク140を介して起源サーバ180へ送信し、起源サーバにより実行させる。
ステップ1022において、起源サーバは、フェッチされたデータをキャッシング・ファイラ(ポンプスレッド)に返し、ステップ1024において、ポンプスレッドは、ファイルシステムのフィルハンドラと協働し、例えば、フェッチされたデータを使用してフィル・オペレーションを実施することにより、ポンプモジュールにおいてプレースホルダ上に維持されている未処理の読み出し/フェッチ要求に応じる。ステップ1026において、ファイルシステムは要求されたデータを含む応答を生成し、ステップ1028において、その応答をクライアントに返す。次に、ステップ1030において、ファイルシステムにおいて書き込みアロケーションを実施し、フェッチされたデータをキャッシング・ファイラの1以上のローカル記憶装置に格納する。そして、手順はステップ1032において終了する。
F.キャッシュ・コヒーレンシ
本発明の一般的ネットワーク・キャッシュ・システムでは、複数のクライアント110が、複数のキャッシング・ファイラ120のそれぞれに接続される場合があり、クライアントとファイラの両方が、起源サーバ180に接続される場合がある。したがって、この一般的システム実施形態では、起源ボリューム185は、クライアント、および/またはキャッシング・ファイラ120によって変更される場合がある。そのため、起源サーバ180からクライアントによって直接アクセスされるか、またはキャッシング・ファイラ120を介してクライアントによってアクセスされるデータが、常に一貫性のあるものにするために、キャッシュ・コヒーレンシ・ポリシーが必要となる。本発明によれば、ネットワーク・キャッシュ・システム100において使用されるキャッシュ・コヒーレンシ・ポリシーは、キャッシング・ファイラ120が、起源サーバ180に問い合わせ、データがクライアント110へ送られる前にそのデータに変更が発生したか否かを判定するように構成されることを指定する。
例えばファイルのような特定のストレージ・オブジェクトに対する例えば読み出し要求のようなクライアントデータアクセス要求に応答して、キャッシング・ファイラ120のファイルシステム280は、例えば、変更時刻、リンクの数、作成時刻といったそのファイルの属性の最新のコピーを要求するフェッチ・オン・デマンド(FOD)要求を起源サーバ180に送信する。これらの属性のいずれかにおける変化は、そのファイルがファイラに最後にキャッシュされた後、そのファイルが変更されたことを示す。したがって、その変化に応じて、キャッシング・ファイラは、自分のローカル・キャッシュに格納された現在のファイルを破棄する。そして、キャッシング・ファイラは、NRV読み出しメッセージを使用して適当なフェッチ・オペレーションを生成し、要求されたデータを起源サーバから読み出す。
図11は、本発明の一実施形態によるキャッシュ・コヒーレンシ・ポリシーを実施するための手順1100のステップを示すフロー図である。手順1100は、ステップ1102から開始され、ステップ1104へ進み、そこで、クライアント・データアクセス要求(例えば読み出し要求)が、キャッシング・ファイラーにおいて受信される。ステップ1106において、その要求はファイルシステム読み出しメッセージに変換され、ファイルシステム280に転送され、ステップ1108において、そのメッセージは、ファイルシステムの従来の読み出しハンドラに渡され、プリミティブ・読み出しオペレーション要求として処理される。ステップ1110において、読み出しハンドラは、読み出し要求/メッセージに含まれるファイルのinodeを例えばLoad_Inode()288関数を使用して読み出す。
ステップ1112において、ファイルシステムは更に、その読み出しメッセージをFOD要求としてポンプモジュールに渡し、そのinodeの属性を起源サーバから読み出す。ステップ1114において、ポンプスレッドは、そのFOD要求を格納するためのプレースホルダを、応答が受信まで維持し続ける。ステップ1116において、ポンプスレッドは、NRVモジュールと協働し、そのFOD要求をNRV読み出しメッセージに変換し、ステップ1118において、そのNRV読み出しメッセージを、ネットワーク140を介して起源サーバ180に送信し、起源サーバによって実行させる。ステップ1120において、起源サーバは、それらの属性をキャッシング・ファイラ(ポンプスレッド)に応答し、ステップ1122において、ポンプスレッドは、ファイルシステムのフィル・ハンドラと協働し、例えばその応答を使用してフィル・オペレーションを実施することにより、ポンプモジュールにおいてプレースホルダ上に維持されている未処理の読み出し/FOD要求に応じる。
なお、データを有しないフィル・オペレーション(すなわち、長さゼロの読み出し、または「確認」)は、それらの属性しか有しない。したがって、ステップ1124において、フィル・ハンドラは、要求されたファイルに関する属性(起源サーバから受信されるようなもの)が、キャッシング・ファイラに現在格納されているファイルの属性と異なるか否かを判定する。後者の場合、キャッシング・ファイラに格納されているファイルの属性の状態が、例えば、そのファイルのinode300に格納されているアクセススタンプ、および/または変更時刻スタンプ316を検査することによって判定される。なお、NRV読み出しメッセージは、NRV応答において返されるデータがいずれも、そのファイルの最新の属性も含むという性質を持つ。したがって、長さゼロの読み出し(確認)は、データを何もフェッチせずに、ファイルの最新の属性を読み出すことに等しい。
属性に何も違いがなければ(属性に変化がなければ)、それに応じて、フィル・ハンドラは、そのinode(ファイル)属性の確認が済んでいるか否かを確認する(ステップ1126)。したがって、キャッシング・ファイラ120と起源サーバ180との間のNRV交換は、実質的に、余分なレイテンシをシステムにもたらしていた「オペレーションを持たない」(少なくとも最も単純なキャッシュ・コヒーレンシ・ポリシーでは)。ステップ1128において、ファイルシステムは、ローカル・キャッシュをサーチし、クライアントの要求するデータがキャッシング・ファイラ上にあるか否かを判定する。キャッシング・ファイラ上にあれば、ファイルシステムは、ステップ1130において、その(前述のような)読み出し要求/メッセージに応じ、手順はステップ1136において終了する。
一方、要求されたデータ(または、その一部)がローカル・キャッシュ上に無ければ(すなわち、データが欠落していれば)、ステップ1132において、ファイルシステムは、その読み出しメッセージをフェッチ要求に変換し、欠落したデータを取得するために、そのフェッチ要求を最終的に起源サーバへと送る。なお、起源サーバからの応答は、欠落したデータと、そのファイルの最新の属性とを含む。また、(ステップ1124において判定されるような)属性に違いがあれば、手順は、ステップ1132を続ける。ステップ1134では、それらの属性が変化したか否か(すなわち、属性がキャッシング・ファイラ上で最初に確認された時点と、欠落したデータが取得された時点との間において、属性に変更があったか否か)に関する判定がなされる。属性に変化があった場合、手順はステップ1132へ戻る。そうでなければ、手順はステップ1130へ続く。
なお、クライアントによって要求されたデータは、そのデータがキャッシング・ファイラ120上に存在するか否かを判定する前に、確認される。その理由は、もし、要求されたデータがキャッシング・ファイラ上に存在していれば、仮にそのデータを確認した時点から、そのデータがクライアントに提供される時点までの間において、起源サーバ180においてそのデータの更新が行われたとしても、何も問題ないからである。後者の場合、そうしたオペレーションは「重複オペレーション」とみなされ、読み出し要求が先に発生したものとみなすことにより、それらのオペレーションは直列化される。なお、複数のキャッシング・ファイラ、および/または起源サーバにアクセスする複数のクライアントを有するネットワーク・キャッシュ・システム・デプロイメントを考慮すれば、属性は変更されることもあり得る。
例示的実施形態として、ネットワーク・キャッシュ・システム・デプロイメントには、明示的なロッキング手段が存在しない。ただし、書き込みオペレーションが読み出しオペレーションにオーバラップした場合、ネットワーク・キャッシュ・システムは、書き込みよりも先に読み出しに応答してよいというセマンティックにしたがって動作する(すなわち、確認の前に書き込みが行われることはない)。言い換えれば、確認応答は、ファイルの属性に変化がなく、ファイルデータをキャッシング・ファイラのキャッシュ・ボリューム150から提供してよいことを示す(可能であれば)。その後、キャッシュ・ボリュームからデータを提供するとき、キャッシング・ファイラ120は、読み出しオペレーションが書き込みオペレーションよりも先に発生したものであるかのように動作する。
当然ながら、キャッシュ・ヒットの場合も、ネットワーク・キャッシュ・システム100は、このセマンティックを順守する。部分的なキャッシュ・ミスの場合、ネットワーク・キャッシュ・システムは、実質的にスクラッチから開始して、そのセマンティックを順守する。後者に関し、クライアントが32kBの読み出し要求を発行し、キャッシング・ファイラが、その要求のうちの4kBブロックだけを欠落している(欠落データがキャッシュ・ボリューム上にない)ものと仮定する。この状況に対する普通の応答は、キャッシング・ファイラが、欠落データを埋めるために、4kBのNRV読み出しメッセージを、暗示的な確認とともに送信することである(なぜなら、あらゆる読み出しが、ファイル属性を返すからである)。前回の明示的な確認が、データに対する変更が何もないことを示すものであり、その明示的な確認と、4kBのNRV読み出しメッセージの送信との間に、書き込みオペレーションが発生するものとさらに仮定する。キャッシング・ファイラは、読み出し応答に含まれる属性が変化していることから(その応答に付随する暗示的な確認によって分かる)、それらの間に介在する書き込みオペレーションを検出する。次に、それによって、キャッシング・ファイラ120は、そのファイルのコピーを自分のキャッシュ・ボリューム150上に排出し、NRV読み出しメッセージを使用して適当なフェッチ・オペレーションを生成し、要求されたデータを起源サーバ180から取得する。この状況は、書き込みオペレーションが過剰に発生し、無駄な読み出しオペレーションが発生する状況を表わしている。
本発明の一態様によれば、ポンプモジュール298を使用することにより、そのような欠乏が軽減される。ポンプモジュールはフローコントロールを実施し、新規なネットワーク・キャッシュ・システムは、通常のファイルシステム読み出しハンドラによってクライアント要求に応じる代わりに、クライアント要求を起源サーバ180へ渡す働きをする別の形のフローコントロールを提供する。すなわち、クライアント要求に応じるためにファイルをローカル・キャッシュにロードすることが困難である場合、キャッシング・ファイラ120は、そのファイルに対する読み出しオペレーションを、ファイルシステム280を通して読み出しハンドラへ渡す代わりに、RUE292へ渡し、起源サーバ180に格納する。そして、起源サーバが、標準的なフローコントロール、およびアトミック性メカニズムを使用して、その読み出しオペレーションに対する単一の応答を返す。
G.優先順位の決定
本発明の一態様によれば、キャッシング・ファイラによって先読みオペレーションが実施される。そのため、キャッシング・ファイラは、クライアント要求と、推測的先読み要求との間に違いがある場合、優先順位付けを実施する。ネットワーク・キャッシュ・システム実施形態に対するこの機能の利点は、起源サーバは、すべてのクライアント要求を「見る」ことはできないため、キャッシング・ファイラが通常、先読み判定を行うときに得られるほどの情報が得られないことである。キャッシング・ファイラ上ではマルチプロトコルエンジンが実行されているため、キャッシング・ファイラは、ファイラとサーバとの間にキャッシュ・ボリュームが存在したとしても、起源サーバによって通常なされるものと同じ先読み判定を行うことができる。特に、キャッシング・ファイラは、起源サーバで使用されるものと同じ先読みエンジンを使用するため、起源サーバと同じ先読み要求を生成する。要求の優先順位付けに関し、ネットワーク・キャッシュ・システム実施形態は、要求を2つの異なる優先順位バンドとして扱い、クライアント要求は、推測的先読みよりも優先的に優先順位付けされ、システムが飽和すると、推測的先読み要求は破棄される。
H.キャッシュ破棄
上記のように、ローカル・キャッシュ(例えば、キャッシュ・ボリューム150)が一杯になると、トランケータ294は、キャッシュ破棄ポリシーをエンコードし、記憶空間の返還を要求する。キャッシング・ファイラ120のキャッシュ・ボリューム150が、起源サーバ180の起源ボリューム185上に記憶されているワーキングセットよりも小さい状況では、キャッシュ破棄判定が頻繁に行われる。キャッシング・ファイラは、それらの要求をキャッシュ(記憶)するために、ボリューム記憶空間を開放しなければならない。例示的実施形態において、トランケータ294は、空きの空間が必要になったときに、(1)キャッシュ・ボリューム150を「くまなく調べ」、キャッシュ・ボリューム150に格納されたファイルのバッファツリーをスキャンし、(2)以前記憶されたデータのうちのどのデータを破棄すべきかに関する判断を行うように構成されたスキャナとして実施される場合がある。
例えば、キャッシュ破棄ポリシーは、inodeファイル全体を調べるラウンドロビン・プロセスであってもよい。ラウンドロビン・プロセスは、大域的なLRU(Least Recently Used)リストを維持する必要がない点で有利である。その目的のために、トランケータ294は、inodeファイルをラウンドロビン方式でスキャンし、例えば、inodeファイルの先頭から開始して、最後まで進み、さらに、そのファイルの先頭から再開して、遭遇したファイルを適宜自由に強制破棄する場合がある(必要な空き空間が出来るまで)。したがって、このポリシーによれば、空間が必要になったときにファイルがランダムに強制破棄されるが、このポリシーは、inodeファイル全体の検査が済むまで、同じファイルが2度強制破棄されることはないという性質を持つ。キャッシュ・ボリュームが使用中である場合、任意の所与の時刻において、大量のワーキングセットが、キャッシュされる可能性が高い。ただし、「よく使用される」ファイルが間違って強制破棄される場合、このポリシーは、トランケータがinodeファイル全体を検査し終えるまで、そのファイルを強制破棄しないことが望ましい。
図12は、本発明の一実施形態によるキャッシュ破棄ポリシーを実施するための手順1200のステップを示すフロー図である。手順はステップ1202から開始され、ステップ1204へ進み、そこで、トランケータが、inodeファイルの第1のinodeに対して初期化される。ステップ1206では、例えば、キャッシュ・ボリュームが一杯になったことに応答して、トランケータが、起動される(呼び出される)。ステップ1208で、トランケータは、第1のinodeを「強制破棄」し、ステップ1210で、ボリューム上に十分な空き記憶空間が得られるまで、後続のinode(ファイル)を強制破棄し続ける。実際には、トランケータが起動され、inodeファイルが走査されるのは、キャッシュ・ボリューム上の記憶空間を返還要求しなければならないときだけである。inode、またはファイル(すなわち、より具体的には、ファイルのinodeバッファツリー)の強制破棄は、例えば、そのバッファツリーを「ゾンビ」システムに渡すことによって行われる。ゾンビシステムは、既存のブロックを消去した後、そのinodeを、inodeのトップレベルに「穴」を有するinodeに置き換える。この文脈において、穴とは、キャッシュ・ボリューム上のinodeの未割り当てセクションとして規定される(割り当て済みの不在ブロックとは違う)。そして、手順はステップ1212において終了する。
キャッシュ破棄ポリシーの最適化は、inodeのブロック全体を強制破棄(消去)し、例えば、inodeファイルブロック中の全てのinodeを消去し、そのinodeファイルブロックを空にし、inodeファイル内のその位置に穴を挿入する(新たな空きinodeファイルブロックを割り当てる)ことである。キャッシュ・ボリューム上の穴(すなわち、inodeファイルの未割り当てセクション)は、実際にinodeが割り当てられることになる起源サーバ上のinodeファイルブロックによって決まる。この後者の場合、キャッシング・ファイラは、クライアントが特定ファイルへのアクセスを要求したときに、inodeファイルブロックの割り当てだけを行い、そのinodeファイルブロックを割り当てるときに、ファイルの中身を取得するためのフェッチを開始する。このキャッシュ固有フォーマットによれば、inodeファイル中の穴に新たな未割り当てのinodeを入れるための、ファイルシステム・デフォルト・ポリシーを使用することが可能になる。
例示的実施形態では、トランケータ294を起動するトリガは2つある。一方のトリガは、フィル時に発生する(ここで、「フィル」とは、キャッシング・ファイラが起源サーバから応答を受信したときに行われるアクションを意味する)。フィル時には、キャッシング・ファイラは、返還データをいずれも、自分が有するファイルのバッファツリーの中に挿入することが望ましい。しかしながら、そのデータを収容するだけの十分な物理的ディスク空間がない場合、ファイルシステム上の空き空間を考慮して、トランケータが起動される。例えば、集合体中の空きブロックの数を検査し、高−低水位線(例えば、85〜95%)に基づいて、トランケータを起動すべきか否かの判定がなされる。
トランケータを起動するもう一方のトリガは、CP(File System Consistency Point)時間である。キャッシュ・ボリュームはフレキシブルvvolであるため、従来のボリュームと一緒に、同じ集合体上に共存させることもできる。従来の(すなわち、仮想)ボリュームが膨張し、ディスク空間の消費が増してくると、ディスク空間の消費を抑えるために、そのボリュームに対してトランケータが起動される。ディスク空間の量(集合体中の空き物理空間)は、CP時間においてテストされる(例えば、毎10秒ごとに、ただし、CPは頻繁に発生する)。その際、書き込みアロケータ282は、トランケータ294に信号を送ってトランケータ294を再始動させ、空き空間が所定の低水位未満になるまで、集合体記憶空間を開放させる。
I.むすび
有利なことに、本発明によれば、マルチプロトコル・キャッシング・ファイラの記憶空間を仮想化し、ネットワーク・キャッシュ・システムにより提供されるデータに対する高速かつ効率的なクライアントアクセスが可能になる。ファイルハンドルからオブジェクト記憶への明示的な変換が必要な従来のキャッシュシステムと違い、新規なマルチプロトコル・キャッシング・ファイラによれば、ファイルシステムの使用によって、特に、ファイルシステムによって編成されるストレージ・オブジェクト(ファイル)の実際の名前の使用によって、ネットワーク・キャッシュ・システムにより提供されるデータに対する効率的なクライアントアクセスが可能になる。また、ファイルシステムは、キャッシング・ファイラの散在ボリュームと協働し、提供されたデータをマルチプロトコル・クライアントに対して透過的な態様でストレージ空間仮想化することができる。
起源サーバに接続され、コンピュータネットワークを介してマルチプロトコル・クライアントによって発行されたデータアクセス要求に応答して、ファイラにより提供されるデータのストレージ仮想化を提供するマルチプロトコル・キャッシング・ファイラを備えたネットワーク・キャッシュ・システムの実施形態について図示説明したが、本発明の思想、および範囲の中で、種々の変更、および改変を施すことも可能であるものと考えられる。例えば、本発明の代替実施形態では、キャッシュ・ボリュームにあらかじめ入れておくために、要求発生器296を使用して、ローカルディスク上に格納されていないデータブロックをシステム的に取得する場合がある。なお、キャッシュ・デプロイメントが、起源ボリューム185よりもはるかに小さいキャッシュ・ボリューム150を有すること(例えば、純粋な複製を上回る利点を得るために)は一般的である。したがって、そのような小さなキャッシュ・ボリュームに事前にデータを入れておくためには、ローカル・キャッシュ上に存在しなければならないデータに関するインテリジェントな判定を実施するように構成された特殊な要求発生器が必要である。なぜなら、元のデータをすべてキャッシュに収容することはできないからである。
上記の説明は、本発明の特定の幾つかの実施形態に関するものである。しかしながら、当業者には明らかなように、それらの実施形態の利点の一部、または全部を維持しつつ、記載した実施形態に対して他の変更、および改変を施すことも可能である。例えば、本発明の教示は、コンピュータ上で実行されるプログラム命令を有するコンピュータ読み取り媒体を含むソフトウェアで実施しても、ハードウェアで実施しても、ファームウェアで実施してもよく、また、それらの組み合わせによって実施してもよいものと考えられる。したがって、本明細書の説明は、例として捉えるべきものであり、本発明の範囲を制限するものとして解釈してはならない。したがって、添付の特許請求の範囲の目的は、そうした変更、および改変もすべて本発明の真の思想、および範囲に含めることにある。
本発明の一実施形態による例示的ネットワーク環境を示す略ブロック図である。 本発明の一実施形態による例示的ストレージ・オペレーティング・システムを示す略ブロック図である。 本発明の一実施形態による例示的inodeを示す略ブロック図である。 本発明の一実施形態にょる例示的バッファツリーを示す略ブロック図である。 本発明とともに有利に使用されるファイルのバッファツリーの一実施形態を示す略ブロック図である。 本発明の一実施形態による例示的集合を示す略ブロック図である。 本発明の一実施形態による例示的オンディスクレイアウトを示す略ブロック図である。 本発明の一実施形態による例示的fsinfoブロックを示す略ブロック図である。 本発明の一実施形態によるデータ変更アクセス要求を処理するための手順のステップを示すフロー図である。 本発明の一実施形態による非データ変更アクセス要求を処理するための手順のステップを示すフロー図である。 本発明の一実施形態によるキャッシュコヒーレンシポリシーを実施するための手順のステップを示すフロー図である。 本発明の一実施形態によるキャッシュ破棄ポリシーを実施するための手順のステップを示すフロー図である。

Claims (9)

  1. バックエンドストレージシステムとしての起源サーバであって、自身が有する起源ボリュームにおける情報の編成に関連するストレージサービスを提供する起源サーバと、
    前記起源サーバに接続されたキャッシング・ファイラであって、前記起源ボリュームに記憶されたデータをキャッシュするキャッシング・ファイラ
    を含み、前記キャッシング・ファイラは、
    マルチプロトコル・クライアントにより発行され、前記キャッシング・ファイラにより受信されたマルチプロトコルのファイルベースのデータアクセス要求を、前記キャッシング・ファイラ、及び前記起源サーバにより実行可能な汎用ファイルシステムプリミティブオペレーションに変換し、それによって、第1のファイルベースのプロトコルを利用して前記起源ボリュームに記憶された前記情報を、クライアントが第2のファイルベースのプロトコルを使用してアクセス出来るようにするマルチプロトコル・エンジンと、
    前記マルチプロトコル・クライアントによって発行されたマルチプロトコル・データアクセス要求に応答し、前記キャシング・ファイラの物理的ストレージリソースを論理的に表現することによってデータの記憶空間を仮想化し、それによって前記キャッシング・ファイラによ提供されるデータのストレージ仮想化を提供する散在ボリュームと、
    前記散在ボリュームを管理するように構成されたファイルシステム
    を含み、前記散在ボリュームは、前記散在ボリューム中のファイルから少なくとも1つのデータブロックが抜けており、前記少なくとも1つの抜けているブロックは、前記起源サーバによって前記起源ボリュームに記憶される、ネットワーク・キャッシュ・システム。
  2. 前記キャッシング・ファイラのローカルキャッシュを更に含み、該ローカルキャッシュは、1以上のクライアントによって要求されたデータを、前記散在ボリュームから抜けている前記所与のファイルの前記少なくとも1つのデータブロックに相当する少なくとも1つの不在ブロックを有する1以上のストレージ・オブジェクトから提供するように構成された前記散在ボリュームを含み、前記不在ブロックの抜けているデータは、リモート・フェッチ・オペレーションを使用して、前記クライアントから見えない形で読み出される、請求項に記載のネットワーク・キャッシュ・システム。
  3. 前記ストレージ・オブジェクトは、ファイル、及び論理ユニット番号のうちのいずれか一方である、請求項に記載のネットワーク・キャッシュ・システム。
  4. 前記散在ボリュームは、前記キャッシング・ファイラに接続された1以上の記憶装置を含むキャッシュ・ボリュームである、請求項に記載のネットワーク・キャッシュ・システム。
  5. 前記キャッシング・ファイラのリモート・アップデート・エンジン(RUE)を更に含み、該RUEは、前記キャッシュ・ボリュームを変更するファイルシステム・オペレーションを全て前記起源サーバへ転送するように構成される、請求項に記載のネットワーク・キャッシュ・システム。
  6. 前記キャッシング・ファイラのトランケータを更に含み、該トランケータは、前記キャッシュ・ボリュームが満杯になると、キャッシュ破棄ポリシーを実施して、記憶空間を返還要求するように構成される、請求項に記載のネットワーク・キャッシュ・システム。
  7. キャッシング・ファイラ、及び前記キャッシング・ファイラに接続された1以上の記憶装置にわたって記憶された散在ボリュームのキャッシュ・ボリュームを含むネットワーク・キャッシュ・システムを動作させる方法であって、前記散在ボリュームの少なくとも1つのブロックが起源サーバに記憶され、該起源サーバが、バックエンドストレージシステムとして、自身が有する記憶ボリュームにおける情報の編成に関連するストレージサービスを提供するものにおいて、
    前記キャッシング・ファイラにより、当該システムの前記キャッシング・ファイラにあるストレージ・オブジェクトに対するファイルベースのデータアクセス要求を受信するステップと、
    前記キャッシング・ファイラのマルチプロトコル・エンジンにより、前記ファイルベースのデータアクセス要求を、前記キャッシング・ファイラ、及び前記起源サーバにより実行可能な汎用ファイルシステムプリミティブオペレーションに変換し、それによって、第1のファイルベースのプロトコルを利用して前記起源ボリュームに記憶された情報を、クライアントが第2のファイルベースのプロトコルを使用してアクセス出来るようにするステップと、
    前記データアクセス要求が、前記キャッシング・ファイラの前記キャッシュ・ボリュームに記憶されたデータを変更するものであるか否かを、前記キャッシング・ファイラにより判定するステップと、
    変更するものであった場合、変換されたデータアクセス要求を、前記キャッシング・ファイラにより前記キャッシング・ファイラから当該システムの前記起源サーバへ運ぶステップと、
    変換されたデータアクセス要求を前記起源サーバによって処理するステップと
    からなる方法。
  8. 前記データアクセス要求が、前記キャッシュ・ボリュームに記憶されたデータを変更しないものである場合、前記キャッシング・ファイラにより、前記要求を前記キャッシング・ファイラのファイルシステムに渡すステップと、
    前記要求により要求されたデータが、前記キャッシュ・ボリューム上に有るか否かを、前記キャッシング・ファイラにより判定するステップと、
    前記キャッシュ・ボリューム上に無ければ前記要求されたデータを前記起源サーバから取得するための1以上のフェッチ・オペレーションを、前記キャッシング・ファイラにより生成するステップと、
    前記キャッシング・ファイラにより、前記起源サーバから応答を受信したときに、取得した前記データを前記キャッシュ・ボリューム記憶するステップと
    を更に含む、請求項に記載の方法。
  9. 要求されたデータが前記キャッシュ・ボリューム上に無い場合、前記キャッシング・ファイラにより、前記キャッシング・ファイラにおいて前記要求に対するサービスを提供するステップを更に含む、請求項に記載の方法。
JP2008508966A 2005-04-25 2006-04-24 ネットワークファイルシステムをキャッシュするシステム、及び方法 Expired - Fee Related JP4824085B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US67460905P 2005-04-25 2005-04-25
US60/674,609 2005-04-25
PCT/US2006/015279 WO2006116203A1 (en) 2005-04-25 2006-04-24 System and method for caching network file systems

Publications (2)

Publication Number Publication Date
JP2008539520A JP2008539520A (ja) 2008-11-13
JP4824085B2 true JP4824085B2 (ja) 2011-11-24

Family

ID=36763168

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008508966A Expired - Fee Related JP4824085B2 (ja) 2005-04-25 2006-04-24 ネットワークファイルシステムをキャッシュするシステム、及び方法

Country Status (8)

Country Link
US (3) US8055702B2 (ja)
EP (1) EP1875394B1 (ja)
JP (1) JP4824085B2 (ja)
CN (1) CN101228523B (ja)
AT (1) ATE512412T1 (ja)
AU (1) AU2006239882B2 (ja)
IL (1) IL186953A (ja)
WO (1) WO2006116203A1 (ja)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689609B2 (en) * 2005-04-25 2010-03-30 Netapp, Inc. Architecture for supporting sparse volumes
US20080028033A1 (en) * 2006-07-28 2008-01-31 Kestrelink Corporation Network directory file stream cache and id lookup
US8458263B1 (en) 2007-03-27 2013-06-04 Emc Corporation Method and apparatus for electronic message archive verification
US8032599B1 (en) 2007-03-30 2011-10-04 Emc Corporation Display of archived email content in a preview pane
US8234327B2 (en) * 2007-03-30 2012-07-31 Netapp, Inc. System and method for bandwidth optimization in a network storage environment
US8156188B1 (en) 2007-03-30 2012-04-10 Emc Corporation Email archive server priming for a content request
US8527593B1 (en) * 2007-03-30 2013-09-03 Emc Corporation Change of an archived email property in the email system local store
US7730147B1 (en) 2007-03-30 2010-06-01 Emc Corporation Prioritizing archived email requests
US8856241B1 (en) 2007-03-30 2014-10-07 Emc Corporation Management of email archive server requests
US7730146B1 (en) * 2007-03-30 2010-06-01 Emc Corporation Local email archive store size management
US8930464B1 (en) 2007-03-30 2015-01-06 Emc Corporation Email content pre-caching to a local archive store
US7730148B1 (en) * 2007-03-30 2010-06-01 Emc Corporation Backfilling a local email archive store
US8849940B1 (en) * 2007-12-14 2014-09-30 Blue Coat Systems, Inc. Wide area network file system with low latency write command processing
US7805471B2 (en) * 2008-01-14 2010-09-28 International Business Machines, Corporation Method and apparatus to perform incremental truncates in a file system
JP5199000B2 (ja) * 2008-09-25 2013-05-15 株式会社日立製作所 ファイルサーバリソース分割方法、システム、装置及びプログラム
US9348842B2 (en) * 2009-03-23 2016-05-24 Riverbed Technology, Inc. Virtualized data storage system optimizations
US8046432B2 (en) 2009-04-17 2011-10-25 Microsoft Corporation Network caching for multiple contemporaneous requests
US20120042130A1 (en) * 2009-04-24 2012-02-16 Aaron Antony Peapell Data Storage System
US8161238B2 (en) * 2009-11-10 2012-04-17 Blue Coat Systems, Inc. Systems and methods for avoiding performance degradation due to disk fragmentation in a network caching device
US8645660B2 (en) * 2009-12-10 2014-02-04 Microsoft Corporation Automatic allocation of data replicas
CN102164152A (zh) * 2010-02-23 2011-08-24 浙江省公众信息产业有限公司 一种远程处理文件的方法及系统
US9755856B1 (en) * 2010-04-13 2017-09-05 West Corporation Method, apparatus and computer program to provide access to client records and data resources
CN102339281A (zh) * 2010-07-15 2012-02-01 戴元顺 云加速系统
US9165015B2 (en) 2010-07-29 2015-10-20 International Business Machines Corporation Scalable and user friendly file virtualization for hierarchical storage
CN103282889B (zh) * 2010-11-16 2017-02-22 英特尔公司 用于数据储存系统的端点高速缓存
US10394757B2 (en) 2010-11-18 2019-08-27 Microsoft Technology Licensing, Llc Scalable chunk store for data deduplication
US8959293B2 (en) 2010-12-14 2015-02-17 Microsoft Corporation Data deduplication in a virtualization environment
US9348712B1 (en) * 2010-12-22 2016-05-24 Netapp, Inc. Policy-based volume caching in a clustered storage system
US8601220B1 (en) 2011-04-29 2013-12-03 Netapp, Inc. Transparent data migration in a storage system environment
US8990171B2 (en) 2011-09-01 2015-03-24 Microsoft Corporation Optimization of a partially deduplicated file
US9355119B2 (en) * 2011-09-22 2016-05-31 Netapp, Inc. Allocation of absent data within filesystems
US8661068B1 (en) * 2011-09-29 2014-02-25 Emc Corporation Managing global metadata caches in data storage systems
US8825724B2 (en) * 2012-03-29 2014-09-02 Lsi Corporation File system hinting
JP5915341B2 (ja) * 2012-04-06 2016-05-11 ソニー株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
US11347443B2 (en) * 2012-04-13 2022-05-31 Veritas Technologies Llc Multi-tier storage using multiple file sets
US9026736B1 (en) 2012-08-06 2015-05-05 Netapp, Inc. System and method for maintaining cache coherency
CN102902630B (zh) * 2012-08-23 2016-12-21 深圳市同洲电子股份有限公司 一种访问本地文件的方法和装置
KR101979715B1 (ko) * 2012-09-28 2019-05-17 삼성전자 주식회사 컴퓨팅 시스템 및 그 데이터 관리 방법
US9288077B1 (en) * 2012-09-28 2016-03-15 Emc Corporation Cluster file system with server block cache
US9274954B1 (en) 2012-12-18 2016-03-01 Netapp, Inc. Caching data using multiple cache devices
CN103002045A (zh) * 2012-12-18 2013-03-27 江苏乐买到网络科技有限公司 一种web服务系统
US9639546B1 (en) * 2014-05-23 2017-05-02 Amazon Technologies, Inc. Object-backed block-based distributed storage
US9832260B2 (en) * 2014-09-23 2017-11-28 Netapp, Inc. Data migration preserving storage efficiency
US9917882B2 (en) 2014-11-30 2018-03-13 Sonicwall Inc. Transparent deferred spooling store and forward based on standard network system and client interface
US10313486B2 (en) 2015-01-07 2019-06-04 Sonicwall Inc. Optimizing transfer of fragmented packetized data
CN104536704A (zh) * 2015-01-12 2015-04-22 浪潮(北京)电子信息产业有限公司 一种双控制器通信方法、发送端控制器和接收端控制器
US9542328B2 (en) 2015-01-26 2017-01-10 International Business Machines Corporation Dynamically controlling a file system write cache
US9852147B2 (en) * 2015-04-01 2017-12-26 Dropbox, Inc. Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US9813526B2 (en) 2015-05-26 2017-11-07 Sonicwall Inc. Reducing transmission pathway lengths within a distributed network
US10158735B2 (en) * 2015-08-07 2018-12-18 Sonicwall Inc. Read-ahead on signed connections with unsigning, inline, transparent proxies
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9479567B1 (en) 2015-10-29 2016-10-25 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9537952B1 (en) * 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items
US10521592B2 (en) * 2016-04-27 2019-12-31 Apple Inc. Application translocation
US10754829B2 (en) * 2017-04-04 2020-08-25 Oracle International Corporation Virtual configuration systems and methods
CN110069454A (zh) * 2017-09-11 2019-07-30 中兴通讯股份有限公司 一种网络文件管理方法、终端及计算机可读存储介质
US10812589B2 (en) * 2017-10-28 2020-10-20 Tusimple, Inc. Storage architecture for heterogeneous multimedia data
US10789380B2 (en) * 2017-11-21 2020-09-29 Talari Networks Incorporated Intelligent write protection cache (IWPC) in an adaptive private network (APN)
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
CN110196818B (zh) * 2018-02-27 2021-07-16 华为技术有限公司 缓存数据的方法、缓存设备和存储系统
WO2019210349A1 (en) 2018-05-01 2019-11-07 HowTech Pty Ltd Geolocation system and method
WO2020069196A1 (en) * 2018-09-28 2020-04-02 Amazon Technologies, Inc. Client-side filesystem for a remote repository
US11914556B2 (en) * 2018-10-19 2024-02-27 Red Hat, Inc. Lazy virtual filesystem instantiation and caching
EP3702920A1 (en) * 2019-03-01 2020-09-02 ABB Schweiz AG Heterogeneous execution engines in a network centric process control system
WO2020226664A1 (en) * 2019-05-06 2020-11-12 Google Llc Proactive caching of assistant action content at a client device to enable on-device resolution of spoken or typed utterances
JP7288085B2 (ja) * 2019-05-17 2023-06-06 ヒタチ ヴァンタラ エルエルシー オブジェクトベースファイルシステムを管理するための装置、システム及び方法
CN110908602A (zh) * 2019-10-31 2020-03-24 北京浪潮数据技术有限公司 分布式存储系统的数据写入方法、装置、设备及存储介质
CN112817596A (zh) * 2019-10-31 2021-05-18 深圳市万普拉斯科技有限公司 文件信息快速获取方法、装置和电子设备
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
CN113127210B (zh) * 2019-12-31 2024-03-29 阿里巴巴集团控股有限公司 一种分布式系统的存储管理方法、装置及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003075147A1 (fr) * 2002-03-06 2003-09-12 Fujitsu Limited Systeme memoire et procede et transfert de donnees pour un tel systeme
WO2004015521A2 (en) * 2002-08-09 2004-02-19 Network Appliance, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
WO2004025429A2 (en) * 2002-09-16 2004-03-25 Network Appliance, Inc. Apparatus and method for proxy cache
JP2005010969A (ja) * 2003-06-18 2005-01-13 Hitachi Ltd ネットワークシステム及びスイッチ

Family Cites Families (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4156907A (en) 1977-03-02 1979-05-29 Burroughs Corporation Data communications subsystem
US4399503A (en) 1978-06-30 1983-08-16 Bunker Ramo Corporation Dynamic disk buffer control unit
US4408273A (en) 1980-05-27 1983-10-04 International Business Machines Corporation Method and means for cataloging data sets using dual keyed data sets and direct pointers
US4598357A (en) 1980-11-14 1986-07-01 Sperry Corporation Cache/disk subsystem with file number for recovery of cached data
US4837675A (en) 1981-10-05 1989-06-06 Digital Equipment Corporation Secondary storage facility empolying serial communications between drive and controller
US4570217A (en) 1982-03-29 1986-02-11 Allen Bruce S Man machine interface
JPS60142418A (ja) 1983-12-28 1985-07-27 Hitachi Ltd 入出力エラ−回復方式
US4896259A (en) 1984-09-07 1990-01-23 International Business Machines Corporation Apparatus for storing modifying data prior to selectively storing data to be modified into a register
JPS61141056A (ja) 1984-12-14 1986-06-28 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 揮発性メモリの間欠エラ−検出方法
US5202979A (en) 1985-05-08 1993-04-13 Thinking Machines Corporation Storage system using multiple independently mechanically-driven storage units
US4805090A (en) 1985-09-27 1989-02-14 Unisys Corporation Peripheral-controller for multiple disk drive modules having different protocols and operating conditions
US4761785B1 (en) 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
USRE34100E (en) 1987-01-12 1992-10-13 Seagate Technology, Inc. Data error correction system
US4899342A (en) 1988-02-01 1990-02-06 Thinking Machines Corporation Method and apparatus for operating multi-unit array of memories
US4864497A (en) 1988-04-13 1989-09-05 Digital Equipment Corporation Method of integrating software application programs using an attributive data model database
US4993030A (en) 1988-04-22 1991-02-12 Amdahl Corporation File system for a plurality of storage classes
US4989206A (en) 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
US5163131A (en) 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
WO1991004540A1 (en) 1989-09-08 1991-04-04 Auspex Systems, Inc. Multiple facility operating system architecture
US5124987A (en) 1990-04-16 1992-06-23 Storage Technology Corporation Logical track write scheduling system for a parallel disk drive array data storage subsystem
EP0485110B1 (en) 1990-11-09 1999-08-25 Emc Corporation Logical partitioning of a redundant array storage system
US5155835A (en) 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US5278979A (en) 1990-12-20 1994-01-11 International Business Machines Corp. Version management system using pointers shared by a plurality of versions for indicating active lines of a version
US5426747A (en) 1991-03-22 1995-06-20 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
US5974544A (en) 1991-12-17 1999-10-26 Dell Usa, L.P. Method and controller for defect tracking in a redundant array
US5581724A (en) 1992-10-19 1996-12-03 Storage Technology Corporation Dynamically mapped data storage subsystem having multiple open destage cylinders and method of managing that subsystem
ATE222384T1 (de) 1993-06-03 2002-08-15 Network Appliance Inc Verfahren und dateisystem zur zuordnung von datei-blöcken zu speicherplatz in einem raid- plattensystem
US5963962A (en) 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
DE69425658T2 (de) 1993-06-03 2001-04-19 Network Appliance Inc Anordnung eines dateisystems zum beschreiben beliebiger bereiche
US5535381A (en) 1993-07-22 1996-07-09 Data General Corporation Apparatus and method for copying and restoring disk files
US5758145A (en) 1995-02-24 1998-05-26 International Business Machines Corporation Method and apparatus for generating dynamic and hybrid sparse indices for workfiles used in SQL queries
US5568455A (en) 1995-05-18 1996-10-22 Sony Corporation System and method for the storage and retrieval of off-line performatted optical media
US6029175A (en) * 1995-10-26 2000-02-22 Teknowledge Corporation Automatic retrieval of changed files by a network software agent
US5829046A (en) * 1995-10-27 1998-10-27 Emc Corporation On-line tape backup using an integrated cached disk array
US5737747A (en) * 1995-10-27 1998-04-07 Emc Corporation Prefetching to service multiple video streams from an integrated cached disk array
US5933603A (en) * 1995-10-27 1999-08-03 Emc Corporation Video file server maintaining sliding windows of a video data set in random access memories of stream server computers for immediate video-on-demand service beginning at any specified location
US6148377A (en) 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US6138162A (en) * 1997-02-11 2000-10-24 Pointcast, Inc. Method and apparatus for configuring a client to redirect requests to a caching proxy server based on a category ID with the request
US5940838A (en) * 1997-07-11 1999-08-17 International Business Machines Corporation Parallel file system and method anticipating cache usage patterns
US6038601A (en) 1997-07-21 2000-03-14 Tibco, Inc. Method and apparatus for storing and delivering documents on the internet
US5991810A (en) * 1997-08-01 1999-11-23 Novell, Inc. User name authentication for gateway clients accessing a proxy cache server
US6769019B2 (en) * 1997-12-10 2004-07-27 Xavier Ferguson Method of background downloading of information from a computer network
US6229806B1 (en) 1997-12-30 2001-05-08 Motorola, Inc. Authentication in a packet data system
US5941972A (en) 1997-12-31 1999-08-24 Crossroads Systems, Inc. Storage router and method for providing virtual local storage
US6170013B1 (en) * 1998-03-27 2001-01-02 Nortel Networks Limited Method and apparatus for controlling access to network information sources
US6360330B1 (en) 1998-03-31 2002-03-19 Emc Corporation System and method for backing up data stored in multiple mirrors on a mass storage subsystem under control of a backup server
US6574618B2 (en) 1998-07-22 2003-06-03 Appstream, Inc. Method and system for executing network streamed application
US6269431B1 (en) 1998-08-13 2001-07-31 Emc Corporation Virtual storage and block level direct access of secondary storage for recovery of backup data
US6338117B1 (en) * 1998-08-28 2002-01-08 International Business Machines Corporation System and method for coordinated hierarchical caching and cache replacement
US6513051B1 (en) 1999-07-16 2003-01-28 Microsoft Corporation Method and system for backing up and restoring files stored in a single instance store
US6493718B1 (en) 1999-10-15 2002-12-10 Microsoft Corporation Adaptive database caching and data retrieval mechanism
JP3967509B2 (ja) 1999-12-22 2007-08-29 株式会社東芝 最後に処理を行っていたサーバ計算機を判定するプログラムを記録した記録媒体、及び高可用性計算機システム
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
US6571259B1 (en) * 2000-09-26 2003-05-27 Emc Corporation Preallocation of file system cache blocks in a data storage system
WO2002061525A2 (en) 2000-11-02 2002-08-08 Pirus Networks Tcp/udp acceleration
US6868417B2 (en) 2000-12-18 2005-03-15 Spinnaker Networks, Inc. Mechanism for handling file level and block level remote file accesses using the same server
US6804690B1 (en) 2000-12-27 2004-10-12 Emc Corporation Method for physical backup in data logical order
US6735601B1 (en) 2000-12-29 2004-05-11 Vmware, Inc. System and method for remote file access by computer
US20020133537A1 (en) * 2001-03-12 2002-09-19 Whizz Technology Ltd. Server cluster and server-side cooperative caching method for use with same
US7478243B2 (en) 2001-03-21 2009-01-13 Microsoft Corporation On-disk file format for serverless distributed file system with signed manifest of file modifications
AU2001272882A1 (en) 2001-05-09 2002-11-18 Jin Feei Loh Distribution of digital content
US6813633B2 (en) * 2001-06-19 2004-11-02 Foedero Technologies, Inc. Dynamic multi-level cache manager
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
US6912645B2 (en) 2001-07-19 2005-06-28 Lucent Technologies Inc. Method and apparatus for archival data storage
AU2002313583A1 (en) * 2001-08-01 2003-02-17 Actona Technologies Ltd. Virtual file-sharing network
IL144806A (en) * 2001-08-08 2005-11-20 Nova Measuring Instr Ltd Method and apparatus for process control in semiconductor manufacturing
US7062756B2 (en) * 2001-11-30 2006-06-13 Sun Microsystems, Inc. Dynamic object usage pattern learning and efficient caching
US6772161B2 (en) 2001-12-19 2004-08-03 Hewlett-Packard Development Company, L.P. Object-level migration in a partition-based distributed file system
US6775673B2 (en) 2001-12-19 2004-08-10 Hewlett-Packard Development Company, L.P. Logical volume-level migration in a partition-based distributed file system
US7296068B1 (en) 2001-12-21 2007-11-13 Network Appliance, Inc. System and method for transfering volume ownership in net-worked storage
US7152078B2 (en) 2001-12-27 2006-12-19 Hitachi, Ltd. Systems, methods and computer program products for backup and restoring storage volumes in a storage area network
US7392348B2 (en) * 2003-08-06 2008-06-24 International Business Machines Corporation Method for validating remotely cached dynamic content web pages
US7043503B2 (en) 2002-02-15 2006-05-09 International Business Machines Corporation Ditto address indicating true disk address for actual data blocks stored in one of an inode of the file system and subsequent snapshot
US6829617B2 (en) 2002-02-15 2004-12-07 International Business Machines Corporation Providing a snapshot of a subset of a file system
US7216135B2 (en) 2002-02-15 2007-05-08 International Business Machines Corporation File system for providing access to a snapshot dataset where disk address in the inode is equal to a ditto address for indicating that the disk address is invalid disk address
US7475098B2 (en) 2002-03-19 2009-01-06 Network Appliance, Inc. System and method for managing a plurality of snapshots
US7051050B2 (en) 2002-03-19 2006-05-23 Netwrok Appliance, Inc. System and method for restoring a single file from a snapshot
US6895413B2 (en) 2002-03-22 2005-05-17 Network Appliance, Inc. System and method for performing an on-line check of a file system
US20030191858A1 (en) * 2002-04-05 2003-10-09 Koteshwerrao Adusumilli Response time of transformed documents based on caching and dynamic transformation
US7340489B2 (en) 2002-04-10 2008-03-04 Emc Corporation Virtual storage devices
US7370075B2 (en) * 2002-04-25 2008-05-06 Digital Evolution Method and apparatus for managing web services within a computer network system
JP4186537B2 (ja) 2002-07-23 2008-11-26 株式会社日立製作所 ディスクアレイシステムのバックアップ方法
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7284030B2 (en) 2002-09-16 2007-10-16 Network Appliance, Inc. Apparatus and method for processing data in a network
US7035846B2 (en) * 2002-09-23 2006-04-25 International Business Machines Corporation Methods, computer programs and apparatus for caching directory queries
US7337214B2 (en) * 2002-09-26 2008-02-26 Yhc Corporation Caching, clustering and aggregating server
US20040117437A1 (en) 2002-12-16 2004-06-17 Exanet, Co. Method for efficient storing of sparse files in a distributed cache
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
JP4252828B2 (ja) 2003-03-19 2009-04-08 株式会社日立製作所 キャッシュ制御方法、ノード装置、プログラム
US7457982B2 (en) 2003-04-11 2008-11-25 Network Appliance, Inc. Writable virtual disk of read-only snapshot file objects
US20050021566A1 (en) 2003-05-30 2005-01-27 Arkivio, Inc. Techniques for facilitating backup and restore of migrated files
US20040268068A1 (en) 2003-06-24 2004-12-30 International Business Machines Corporation Efficient method for copying and creating block-level incremental backups of large files and sparse files
US7447937B2 (en) 2003-08-21 2008-11-04 International Business Machines Corporation Method for generating sparse logical volume mirrors within data storage systems
US20050114672A1 (en) 2003-11-20 2005-05-26 Encryptx Corporation Data rights management of digital information in a portable software permission wrapper
US7333993B2 (en) 2003-11-25 2008-02-19 Network Appliance, Inc. Adaptive file readahead technique for multiple read streams
US7698289B2 (en) 2003-12-02 2010-04-13 Netapp, Inc. Storage system architecture for striping data container content across volumes of a cluster
US7664916B2 (en) * 2004-01-06 2010-02-16 Microsoft Corporation Global smartcard cache methods and apparatuses
US7631148B2 (en) 2004-01-08 2009-12-08 Netapp, Inc. Adaptive file readahead based on multiple factors
US7426617B2 (en) 2004-02-04 2008-09-16 Network Appliance, Inc. Method and system for synchronizing volumes in a continuous data protection system
US7194579B2 (en) 2004-04-26 2007-03-20 Sun Microsystems, Inc. Sparse multi-component files
US7409494B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
US7430571B2 (en) 2004-04-30 2008-09-30 Network Appliance, Inc. Extension of write anywhere file layout write allocation
US20050278383A1 (en) 2004-05-28 2005-12-15 Network Appliance, Inc. Method and apparatus for keeping a file system client in a read-only name space of the file system
US7565423B1 (en) * 2004-06-30 2009-07-21 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
US8224964B1 (en) * 2004-06-30 2012-07-17 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
US7392324B2 (en) 2004-08-13 2008-06-24 International Business Machines Corporation Consistent snapshots of dynamic heterogeneously managed data
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US7457826B2 (en) 2004-12-20 2008-11-25 Microsoft Corporation Systems and methods for synchronization of items without snapshots
US7689609B2 (en) 2005-04-25 2010-03-30 Netapp, Inc. Architecture for supporting sparse volumes
US8090860B2 (en) * 2007-11-05 2012-01-03 Limelight Networks, Inc. Origin request with peer fulfillment
JP2007108981A (ja) 2005-10-13 2007-04-26 Hitachi Ltd ストレージ装置及びボリューム間のデータ交換方法
US8301839B2 (en) * 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US8151323B2 (en) * 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US8812651B1 (en) * 2007-02-15 2014-08-19 Google Inc. Systems and methods for client cache awareness
US8065275B2 (en) * 2007-02-15 2011-11-22 Google Inc. Systems and methods for cache optimization
JP5135135B2 (ja) * 2008-09-11 2013-01-30 株式会社日立製作所 アプリケーションの実行管理方法、アプリケーションを実行するサーバ計算機及び中継装置
US8442429B2 (en) * 2010-04-06 2013-05-14 Andre F. Hawit System for providing audio messages on a mobile device
CN102567339A (zh) * 2010-12-09 2012-07-11 腾讯科技(深圳)有限公司 一种获取起始页的方法、装置和系统
US8943216B2 (en) * 2011-02-24 2015-01-27 Saguna Networks Ltd. Methods, circuits, devices, systems and associated computer executable code for caching content
US8788849B2 (en) * 2011-02-28 2014-07-22 Sandisk Technologies Inc. Method and apparatus for protecting cached streams
US8812609B2 (en) * 2011-06-06 2014-08-19 Jaguna Networks Ltd Methods, circuits, devices, systems and associated computer executable code for distributed content caching and delivery
US9804928B2 (en) * 2011-11-14 2017-10-31 Panzura, Inc. Restoring an archived file in a distributed filesystem
US9805054B2 (en) * 2011-11-14 2017-10-31 Panzura, Inc. Managing a global namespace for a distributed filesystem
US9582604B2 (en) * 2013-03-27 2017-02-28 Thomson Licensing Caching mechanism to improve user interface responsiveness

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003075147A1 (fr) * 2002-03-06 2003-09-12 Fujitsu Limited Systeme memoire et procede et transfert de donnees pour un tel systeme
WO2004015521A2 (en) * 2002-08-09 2004-02-19 Network Appliance, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
WO2004025429A2 (en) * 2002-09-16 2004-03-25 Network Appliance, Inc. Apparatus and method for proxy cache
JP2005010969A (ja) * 2003-06-18 2005-01-13 Hitachi Ltd ネットワークシステム及びスイッチ

Also Published As

Publication number Publication date
IL186953A (en) 2014-05-28
CN101228523B (zh) 2012-06-06
US20130304844A1 (en) 2013-11-14
US8055702B2 (en) 2011-11-08
US8626866B1 (en) 2014-01-07
JP2008539520A (ja) 2008-11-13
US9152600B2 (en) 2015-10-06
WO2006116203A1 (en) 2006-11-02
EP1875394A1 (en) 2008-01-09
EP1875394B1 (en) 2011-06-08
ATE512412T1 (de) 2011-06-15
US20070250552A1 (en) 2007-10-25
CN101228523A (zh) 2008-07-23
IL186953A0 (en) 2008-02-09
AU2006239882A1 (en) 2006-11-02
AU2006239882B2 (en) 2009-10-29

Similar Documents

Publication Publication Date Title
JP4824085B2 (ja) ネットワークファイルシステムをキャッシュするシステム、及び方法
US7698289B2 (en) Storage system architecture for striping data container content across volumes of a cluster
US7631148B2 (en) Adaptive file readahead based on multiple factors
EP1875384B1 (en) System and method for multi-tiered meta-data caching and distribution in a clustered computer environment
US7333993B2 (en) Adaptive file readahead technique for multiple read streams
US7809693B2 (en) System and method for restoring data on demand for instant volume restoration
US7747584B1 (en) System and method for enabling de-duplication in a storage system architecture
US7743210B1 (en) System and method for implementing atomic cross-stripe write operations in a striped volume set
US7962689B1 (en) System and method for performing transactional processing in a striped volume set
EP1882223B1 (en) System and method for restoring data on demand for instant volume restoration
US11500591B1 (en) Methods and systems for enabling and disabling remote storage location cache usage in a networked storage system
US11544011B1 (en) Write invalidation of a remote location cache entry in a networked storage system

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101221

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110316

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110620

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110907

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

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees