JP5121731B2 - 内容参照ストレージアレイ要素 - Google Patents

内容参照ストレージアレイ要素 Download PDF

Info

Publication number
JP5121731B2
JP5121731B2 JP2008552386A JP2008552386A JP5121731B2 JP 5121731 B2 JP5121731 B2 JP 5121731B2 JP 2008552386 A JP2008552386 A JP 2008552386A JP 2008552386 A JP2008552386 A JP 2008552386A JP 5121731 B2 JP5121731 B2 JP 5121731B2
Authority
JP
Japan
Prior art keywords
storage
block
data
data block
contents
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008552386A
Other languages
English (en)
Other versions
JP2009524882A (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 JP2009524882A publication Critical patent/JP2009524882A/ja
Application granted granted Critical
Publication of JP5121731B2 publication Critical patent/JP5121731B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

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

Description

[発明の分野]
本発明は概して、データストレージ圧縮に関し、より具体的には、ストレージリソースに重複データが格納されることを抑制するように構成されたストレージシステムの内容参照ストレージアレイ要素に関する。
[発明の背景]
ストレージシステムは通常、1以上のストレージデバイスを備え、要望に応じてその中に情報を格納したり、その中から情報を取り出したりすることができる。ストレージシステムは、とりわけ、システムによって実施されるストレージサービスをサポートする記憶処理を実施することにより、システムを機能的に編成するストレージオペレーティングシステムを備える。ストレージシステムは、種々のストレージアーキテクチャに従って実施され、限定はしないが、例えば、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、あるいはクライアント又はホストコンピュータに直接取り付けられたディスクアセンブリとして実施される場合がある。ストレージデバイスは一般にディスクドライブであり、それらがディスクアレイとして編成される。ただし、「ディスク」という用語は一般に、内蔵型回転磁気媒体記憶装置を表す。この文脈におけるディスクという用語は、ハードディスクドライブ(HDD)やダイレクト・アクセス・ストレージデバイス(DASD)と同じ意味で使用される。
ディスクアレイへの情報の格納は、好ましくは、ディスク空間の全体的論理構成を決める、物理ディスクの1以上のストレージ「ボリューム」として実施される。ボリューム内のディスクは通常、1以上のグループに編成され、各グループは、RAID(Redundant Array of Independent or Inexpensive Disks)として運用されることがある。大半のRAID実施形態は、RAIDグループ中の所与の数の物理ディスクにわたるデータ「ストライプ」に冗長書き込みを行い、そのストライプ化されたデータに対する冗長情報(パリティ)を適切に記憶することにより、データ記憶の信頼性/完全性を向上させる。各RAIDグループの物理ディスクには、ストライプ化されたデータを記憶するように構成されたディスク(すなわち、データディスク)と、そのデータに関するパリティを記憶するように構成されたディスク(すなわち、パリティディスク)とがある。その後、ディスク故障時に失われたデータの復元を可能にするために、パリティは読み出されることがある。「RAID」という用語、及びその種々の実施形態は既知のものであり、1988年6月、D.A. Patterson、G.A. Gibson、及びR.H. Katz著、国際会議予稿集論文「A Case for Redundant Arrays of Inexpensive Disks (RAID)」に開示されている。
ストレージシステムのストレージオペレーティングシステムは、ディスク上に格納される情報をディレクトリ、ファイル、及びブロックのような名前付きデータコンテナの階層構造として論理編成するための、ファイルシステムのような高レベルモジュールとして実施される場合がある。例えば、「ディスク上」の各ファイルは、ファイルの実際のデータのような情報を格納するように構成された一組のデータ構造、すなわちディスクブロックとして実施される場合がある。これらのデータブロックは、ファイルシステムによって管理されるボリュームブロック番号(vbn)空間の中に編成される。ファイルシステムは、それらのデータブロックを「論理ボリューム」としてvbn空間の中に編成し、必須ではないが、各論理ボリュームは、独自のファイルシステムに関連する。n−1ブロックのサイズのファイルシステムの場合、ファイルシステムは通常、ゼロからnまでの連続的範囲のvbnから構成される。
ファイルシステムの1つの既知のタイプは、ディスク上でデータを上書きしないwrite−anywhereファイルシステムである。ディスクからストレージシステムのメモリへデータブロックを取り出し(読み出し)、新たなデータで「汚す」場合、書き込み性能を最適化するために、以後、そのデータブロックはディスク上の新たな場所に書き込まれる。write−anywhereファイルシステムは、データが複数のディスクにわたって実質的に連続的に配置されるような最適レイアウトを最初に仮定する。最適レイアウトによって、ディスクに対する効率的なアクセスが可能となり、とりわけ、シーケンシャル読み出しオペレーションの場合に、効率的なアクセスが可能となる。ストレージシステム上で動作するように構成されたwrite−anywhereファイルシステムの一例は、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッド社から入手可能なWrite Anywhere File Layout(WAFL)である。
ストレージオペレーティングシステムは、入出力(I/O)オペレーションにしたがってディスクに対する情報の格納や読み出しを管理するための、RAIDシステムのようなストレージモジュールをさらに実施する場合がある。また、RAIDシステムは、ストレージシステム中のRAIDグループに対してパリティオペレーションを実施する役割も有する。RAIDシステムは通常、全てのRAIDグループの全てのディスクにわたってディスクブロックが連結されるように、RAIDグループを1つの大きな「物理」ディスク(すなわち、物理ボリューム)に編成する。ファイルシステムによって管理される論理ボリュームは、次に、RAIDシステムによって管理される物理ボリューム全体に「配置」(分散)される。
ストレージシステムは、情報配送のクライアント/サーバモデルに従って動作するように構成され、その結果、多数のクライアントが、システムに格納されたディレクトリ、ファイル、及びブロックにアクセスすることが可能になる。このモデルでは、クライアントは、ポイント・ツー・ポイントリンク、共有ローカルエリアネットワーク、ワイドエリアネットワーク、あるいはインターネットのような公共ネットワーク上で実施される仮想私設ネットワークのようなコンピュータネットワークを介してストレージシステムに「接続」するために、データベースアプリケーションのようなアプリケーションをコンピュータ上で実施する場合がある。各クライアントは、ネットワークを介して、ファイルシステムプロトコルメッセージ(パケットの形をしている)をストレージシステムへ発行することにより、ファイルシステムのサービスを要求する。従来のコモン・インターネット・ファイルシステム(CIFS)プロトコルやネットワーク・ファイル・システム(NFS)プロトコルのような複数のファイルシステムプロトコルをサポートすることにより、ストレージシステムの利便性は向上する。
クライアント要求に応答して1ブロックのファイルをアクセスするとき、ファイルシステムは、vbnを指定する。このvbnは、RAIDシステムにより、物理ボリュームのRAIDグループ内の特定ディスク(ディスク、pbn)上の物理ブロック番号(pbn)位置に変換される。vbn空間においてもpbn空間においても、各ブロックのサイズは通常、例えば4キロバイトに固定されている。従って、pbn空間においてディスクに格納される情報と、vbn空間においてファイルシステムにより編成される情報との間には、一対一のマッピングが存在する。RAIDシステムにより指定される位置(ディスク、pbn)はさらに、ストレージオペレーティングシステムのディスクドライバシステムにより、指定されたディスク上の複数のセクタに変換される場合がある。
次に、要求されたブロックはディスクから読み出され、メモリのバッファキャッシュに、そのファイルのバッファツリーの一部として格納される。バッファツリーは、ファイルのブロックの内部表現であり、バッファキャッシュに格納され、ファイルシステムによって管理される。一般に、バッファツリーは、ファイルのルート(最上層)にあるinodeを有する。inodeは、ファイルに関するメタデータのような情報の格納に使用されるデータ構造であり、データブロックは、ファイルの実際のデータの格納に使用されるデータ構造である。inodeに格納される情報には、例えば、そのファイルのデータブロックのディスク上の位置への参照がある。ファイルデータの位置への参照は、ブロックポインタとして提供され、さらに、ファイル内のデータ量によっては、ブロックポインタは更に、間接ブロックを参照し、次いで、データブロックを参照することがある。
RAIDシステムは、基礎物理ディスクの幾何構成に関する情報(例えば、各ディスク内のブロック数)を、RAIDラベルのような、ディスク上に格納されるデータ構造として管理する。RAIDシステムは、書き込みアロケーションオペレーションを実施する際にファイルシステムによって使用されるvbnからディスク、pbnへのマッピングを作成・管理するときや、読み出しオペレーションの際にvbnをディスク位置へ変換するときに使用されるディスク幾何構成情報を、ファイルシステムに提供する。アクティブマップ、スナップマップ、空間マップ、及び要約マップのようなブロックアロケーションデータ構造は、write−anywhereファイルシステムのようなファイルシステム中でのブロック使用状況を表わすデータ構造である。これらのマッピングデータ構造は、幾何構成とは関係なく、ファイルシステムの書き込みアロケータにより、論理ボリュームの既存のインフラストラクチャとして使用される。
データ記憶は、銀行、政府施設/請負業者、及びセキュリティ委託業者のような文書保管や規則順守に係る環境において運用される多くの産業の中心部である。これらの環境の多くは、特定データ(例えば、電子メール)、金融文書、あるいは取引記録を不変的に、且つ書き換え不能な形で記憶することを必要とし、場合によっては、長期にわたって記憶することを必要とする。一般に、データバックアップオペレーションは、故障発生時にそれらのデータの保護、及び復元を可能にするために実施される。しかしながら、バックアップオペレーションは、しばしば、ディスクのようなバックアップストレージリソース上にデータの複製を生じることがあり、その結果、ストレージリソース上の記憶空間は十分に消費されないことがある。従って、ストレージリソース上の複製データの発生を防止し、データの実体を1つだけ確実に記憶することにより、ストレージ圧縮を達成することが望まれている。
データストレージ圧縮を提供する1つの既知のアプローチとして、内容参照ストレージシステムを使用するものがある。内容参照ストレージシステムは、書き込むべきデータが、バックアップストレージリソース上に既に存在しているか否かを、ハッシュを使用して判定する。内容参照ストレージシステムにおいてハッシュを計算するプロセスは一般にファイルレベルで実施され(論理ユニットレベルやLUNレベルではなく)、データが既に格納されているか否かを判定するために相当な量の計算が必要になるため、比較的遅い。従って、書き込み処理は通常、遅いプロセスとなる。これが、内容参照ストレージシステムの産業上の致命的な欠点である。
もう1つの既知のアプローチは、CMU(カーネギー・メロン大学)・パラレル・デベロップメント研究所により開発されたカーネギー・メロン大学ネットワーク・アタッチド・セキュア・ディスク(NASD)システムである。NASDは、ダイレクト・アタッチド・ディスクを使用する代わりに、「スマート」ディスクをネットワークに取り付ける。ただし、汎用システムで使用する場合、このアプローチは、一次記憶としては不十分な性能や、予測可能な能力を提供するだけの十分な信頼性を持たない公共ネットワークの使用からの影響に悩まされる。
[発明の概要]
本発明は、ストレージシステムのストレージリソース上への重複データの格納を防止するように構成されたストレージシステムの内容参照ストレージアレイ要素(CASAE)に関する。本発明によれば、CASAEは単独で、書き込み処理に関連するデータが、ストレージシステムのストレージリソース上のいずれかの位置に既に書き込まれているか否かを判定する。その目的のために、CASAEは、同じデータを有する2以上のブロックの格納を防止するために、それらのリソースに書き込まれる各データブロックに対し、内容参照ストレージ計算を実施する。あるブロックのデータが、リソース上に既に書き込まれていた場合、CASAEは、格納されたデータを複製する代わりに、当該システム上で実行されているファイルシステムと協働し、そのデータブロックへの参照(ブロックポインタ)を提供する。あるいは、CASAEは、そのデータブロックをリソース上の新たな位置に格納し、その位置へのブロックポインタを提供する。
例示的実施形態として、CASAEは、とりわけ、内容参照ストレージ計算を実施するように構成されたコントローラ、複数のディスクポート、並びに切り替え装置を介してストレージシステムに接続されるように構成された複数のネットワークポートを含む、ブロック志向の要素である。さらに、ディスクポートは、CASAEのストレージリソース(例えばディスク)に接続され、それによって、「ストレージ・ブリック」を形成する。CASAEストレージブリックのディスクは、論理ユニット(LUN)としてエキスポートされ、ディスクの信頼性を向上させるように構成された単一のRAIDレベル実施形態グループに編成される。
LUNにデータを書き込むためのクライアント要求に応答し、ファイルシステムは、特殊なブロック番号(例えば、ゼロ)を使用して、CASAEに対し、各データブロックに対する内容参照ストレージ計算の実行を命じ、そのデータがLUN上のいずれかの位置に既に書き込まれているか否かを判定する。このストレージ計算には、例えば、ハッシュ関数が必要とされる。なぜなら、ディスクへのデータの格納に、相当な量のドメイン空間が必要になるからである。具体的には、CASAEは、データブロックの内容に基づいてハッシュキーを計算し、次に、そのキーが、以前に格納されたデータブロックに対して計算されているか否かを判定する。計算されている場合、同様のキーを有するデータブロックの中身の比較を行い、中身が一致すれば、以前に格納されたデータブロックに対する参照カウントをインクリメントする。そして、その以前に格納されたデータブロックのブロック番号(位置)をファイルシステムに返す。一方、そのハッシュキーが以前に生成されたことがないものであった場合、又はデータの中身が一致しなかった場合、そのデータは、LUN上の次の空きブロック位置に書き込まれ、その位置が、ファイルシステムに返される。
本発明の上記の利点、及び他の利点は、添付の図面とともに下記の説明を読むことで、より深く理解できるであろう。図中、類似の参照符号は、同一の要素、又は機能的に類似の構成要素を示している。
[例示的実施形態の詳細な説明]
本発明は、ストレージリソースに重複データが格納されることを防止するように構成された内容参照ストレージシステム(CASS)のようなストレージシステムの内容参照ストレージアレイ要素(CASAE)に関する。本発明によれば、CASAEは単独で、書き込み処理に関連するデータが、ストレージリソース上のいずれかの位置に既に格納されているか否かを判定する。その目的のために、CASAEは、同じデータを有する2以上のブロックの格納を防止するために、それらのリソースに格納される各データブロックに対し、内容参照ストレージ計算を実施する。あるブロックのデータが、以前からリソースに既に格納されていた場合、CASAEは、その既に格納されているデータを複製するかわりに、当該システム上で実行されているファイルシステムと協働し、そのデータブロックへの参照(ブロックポインタ)を提供する。あるいは、CASAEは、リソース上の新たな位置にそのデータブロックを格納し、その位置へのブロックポインタを提供する。
図1は、本発明とともに有利に使用される内容参照ストレージシステム(CASS)を示す略ブロック図である。CASS100は、切り替え装置150を介して1以上のCASAE400に接続されたストレージシステム200を含む。切り替え装置150(例えば、イーサネットスイッチ)は、例えば、ストレージシステム200と各CASAE400との接続に使用され、CASS100の低コストな、ホットプラグ可能なネットワークインフラストラクチャを提供する。クライアント110は、コンピュータネットワーク120を介してストレージシステム200に接続される。コンピュータネットワーク120には、例えば、ポイント・ツー・ポイント接続や、ローカル・エリア・ネットワークのような共有媒体が含まれる。例えば、コンピュータネットワーク120は、イーサネット(R)ネットワーク、又はファイバチャネル(FC)ネットワークとして実施される場合がある。各クライアント110は、トランスミッション・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)のような所定のプロトコルに従ってネットワーク120を介して個々のデータフレーム、又はデータパケットをやりとりすることにより、ストレージシステムと通信することができる。
クライアント110は、アプリケーションを実行するように構成され、情報配送のクライアント/サーバ・モデルに従ってストレージシステム200と通信するように構成された汎用コンピュータであってもよい。つまり、ネットワーク120を介してパケットをやりとりすることによって、クライアントは、ストレージシステムのサービスを要求することができ、システムは、クライアントから要求されたサービスの結果を返すことができる。ファイルやディレクトリの形をしたデータのような情報をアクセスする場合、クライアントは、コモン・インターネット・ファイルシステム(CIFS)プロトコルやネットワーク・ファイル・システム(NFS)プロトコルのようなファイルベースのアクセスプロトコルを含むパケットを発行する場合がある。一方、ブロックの形をした情報をアクセスする場合、クライアントは、「SCSI over TCP(iSCSI)」プロトコルや「SCSI over FC(FCP)」プロトコルのようなブロックベースのアクセスプロトコルを含むパケットを発行する場合がある。
本明細書に記載するように、ストレージシステム200は、CASS100によって提供される例えばディレクトリ、ファイル、及び論理ユニット(LUN)のようなデータコンテナを表わす高レベルメタディレクトリを格納するように構成されたローカルストレージアレイ260の、例えばディスクのようなストレージリソースに接続される。また、各CASAE400は、CASS100によって提供されるそれらのデータコンテナのユーザデータ(データブロック)を格納するように構成されたリモートストレージアレイ460のディスクに接続される。なお、CASAEは、自身に関連するリモートストレージアレイと通信し、CASAE「ストレージブリック」180を形成する。本明細書に記載するように、ストレージブリックとは、比較的少ない記憶容量しか持たない、あまり賢くない一組のディスクを意味する。各CASAEストレージブリック180のリモートストレージアレイ460の記憶容量は、ストレージシステム200のローカルストレージアレイ260の記憶容量と協働し、CASS100の拡張記憶空間を提供する。
幾つかのブリックにわたる書き込み処理のストライピングを可能にするために、更に別のCASAEストレージブリック180が、CASS100に挿入される場合もある。これら複数のストレージブリック180は並列に動作し、ブリック間でのリソースのアグレゲーションを可能とし、それによって、書き込み処理に関連する高速で十分な能力の内容参照ストレージ計算が可能となる。従って、1以上のCASAEストレージブリック180の編成によれば、CASS100はグリッドアーキテクチャを形成することが可能となる。さらに、CASAEストレージブリック180を追加すれば、データへのアクセスを妥協することなく、ストレージのスケーリング(増加)、及び複数のディスクの提供が可能となる。リモートストレージアレイ460をCASSに追加するたびに、例えば、(比較的小さな)アレイ全体にわたるストレージ計算を実施することが可能なCASAEブリック180の別の計算要素が追加される。その結果、複数のブリック間での計算のバランスをとることができるため、劣化なしにスケーラブルシステムを実現することができる。つまり、CASAE400は、例えば、ストレージシステム200によって提供されるローカルストレージアレイ260上に、通常どおりに多数(例えば、16、32、又は64)のディスクを提供する代わりに、比較的少数(例えば、8台)のディスクしか提供しない。ローカルストレージアレイ260のディスク上で実施される内容参照ストレージに対し、ストレージシステム200によってストレージ計算が実施される場合、性能は制限される(すなわち、低下する)ことになるであろう。なぜなら、記憶容量が大きくなるのに従って、データのコピーが存在するか否かを判定するために、より広いドメイン空間を調べなければならなくなるからである。
CASSの信頼性、及び利用可能性を向上させるために、ストレージブリック180は、1つのグループに編成され、RAID(Redundant Array of Independent or Inexpensive Disks)として運用される場合がある。RAID4レベル実施形態のような大半のRAID実施形態は、RAIDグループ内の所与の数の物理ディスクにわたってデータを「ストライプ状」に冗長書き込みし、そのストライプ化されたデータに対するパリティ情報を適切に記憶することにより、データ記憶の信頼性/完全性を向上させる。ここで、RAIDレベル4実施形態は、CASS100の複数のストレージブリック180にわたって配置され、ブリックの1つはパリティブリックに指定される場合がある。事実上、各ストレージブリック180は、RAIDグループ内の1つのディスクとして扱われ、パリティブリック上のディスクは、従来のRAID4構成におけるパリティディスクと同様の働きをする。当業者には明らかなように、ストレージブリック上で他のRAID実施形態を配置することもでき、例えば、二重故障を検出し、訂正するように構成された二重パリティRAID6実施形態を配置してもよい。そのようなRAID6実施形態では、例えば、2つのストレージブリック180が、パリティブリックとして指定、及び構成される。例えば故障により、1つ、又は2つのストレージブリックが失われた場合でも、RAID実施形態によれば、故障ディスク(複数の場合もあり)の復元と同様の仕方で、故障したブリック(複数の場合もあり)を復元することが可能となる。故障したストレージブリックのディスクからデータを取り出す(読み出す)ことも可能であるが、書き込みオペレーションの処理を可能にするためには、ブリックを修復しなければならない。
図2は、本発明とともに有利に使用されるストレージシステム200を示す略ブロック図である。ストレージシステム200は、ローカルストレージ(ディスク)アレイ260のディスク230のようなストレージデバイス上での情報の編成に関するストレージサービスを提供するコンピュータである。ストレージシステム200は、システムバス225によって相互接続されたプロセッサ222、メモリ224、1以上のネットワークアダプタ226、1以上のストレージアダプタ228、及び不揮発性ランダムアクセスメモリ(NVRAM229)を含む。NVRAM229は、例えば、バックアップバッテリを備えた固体メモリアレイであってもよいし、メモリアレイに対する何らかの電力供給のロスが発生したときに、メモリアレイを最後の状態に維持するための内蔵最終状態保持機能を備えた半導体メモリアレイでってもよい。各ネットワークアダプタ226は、コンピュータネットワーク120を介してストレージシステム200をクライアント110に接続するための機械的、電気的、及び信号的回路を含む。また、ストレージシステム200は、ストレージオペレーティングシステム300をさらに含む。ストレージオペレーティングシステム300は、ディスク上のディレクトリ、ファイル、及び仮想ディスク(vdisk)と呼ばれる特殊なタイプのファイルの階層構造として情報を論理編成するために、ファイルシステムのような高レベルモジュールを実施することが好ましい。
例示的実施形態として、メモリ224は、ソフトウェアプログラムコードを格納する際にプロセッサによってアドレス指定可能な多数の記憶位置を備える。メモリの一部は、本発明に関連する特定のデータ構造を格納するために、「バッファキャッシュ(270)」としてさらに編成される。さらに、プロセッサ、及びアダプタは、ソフトウェアコードを実行し、データ構造を操作するように構成された処理要素、及び/又は論理回路を含む場合がある。ストレージオペレーティングシステム300は、その一部が通常、メモリに常駐し、それらの処理要素によって実行され、とりわけ、ストレージシステムによって実行されるストレージ処理を実施することにより、システム200を機能的に編成する。当業者には明らかなように、本明細書に記載する本発明の技術に関連するプログラム命令の実行、及び格納には、種々のコンピュータ読取可能媒体を含む、他の処理手段や他の記憶手段が使用される場合もある。
ストレージアダプタ228は、システム200上で実行されているストレージオペレーティングシステム300と協働し、ユーザ(すなわち、クライアント)から要求された情報をアクセスする。情報は、ビデオテープ、光学媒体、DVD、磁気テープ、バブルメモリ、電気的ランダムアクセスメモリ、微小電気機械、及び、データやパリティ情報のような情報を格納するように構成された他の同様の媒体のような、書き込み可能なストレージデバイス媒体のいかなるタイプのアタッチド・アレイに格納してもよい。ただし、本明細書に例示するように、情報は、好ましくは、ローカルストレージアレイ260のHDD、及び/又はDASDのようなディスク230に格納される。ストレージアダプタは、従来の高性能FCシリアルリンクトポロジのようなI/O相互接続構成を介してディスクに接続されるように構成された入出力(I/O)インタフェース回路を含む。
アレイ260への情報の格納は、好ましくは、1以上のストレージ「ボリューム」として実施される。ストレージボリュームは、一群の物理ストレージディスク230を含み、それらが協働して、ボリューム(複数の場合もあり)上のボリュームブロック番号(vbn)の全体的論理構成が規定される。各論理ボリュームは通常、必須ではないが、独自のファイルシステムに関連する。論理ボリューム/ファイルシステム内のディスクは通常、1以上のグループに編成され、各グループが、RAIDグループとして運用される。RAID実施形態の一例は、RAID4実施形態である。ただし、本明細書に記載する本発明の原理によれば、他のタイプ、及び他のレベルのRAID実施形態を使用してもよいと考えられる。
ディスク230へのアクセスを容易にするために、ストレージオペレーティングシステム300は、write−anywhereファイルシステムを実施する。write−anywhereファイルシステムは、仮想化モジュールと協働し、ディスク230によって提供される記憶空間を「仮想化」する。ファイルシステムは、情報をディレクトリ、及びファイルの階層構造としてディスク上に論理編成する。「ディスク上」の各ファイルは、データのような情報を格納するように構成された一組のディスクブロックとして実施される一方、ディレクトリは、特殊なフォーマットのファイルとして実施され、その中に、他のファイルやディレクトリの名前、あるいはそれらへのリンクが格納される場合がある。仮想化モジュールによれば、ファイルシステムは更に、LUNとしてエキスポートされるディスク上に、その情報をvdiskのようなさらに別のデータコンテナの階層構造として論理編成することができる。
例示的実施形態として、ストレージオペレーティングシステムは、好ましくは、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッド社から入手可能なNetApp Data ONTAPオペレーティングシステムである。このオペレーティングシステムは、Write Anywhere File Layout(WAFL)ファイルシステムを実施する。ただし、本明細書に記載する本発明の原理によれば、任意の適当なストレージオペレーティングシステムを拡張して使用することも可能であると考えられる。したがって、「WAFL」という用語を使用した場合でも、この用語は、本発明の教示に適合する任意のストレージオペレーティングシステムを指すものとして広い意味で捉えなければならない。
図3は、本発明とともに有利に使用されるストレージオペレーティングシステム300を示す略ブロック図である。ストレージオペレーティングシステムは、統合ネットワークプロトコルスタックを形成するように編成された一連のソフトウェア層を含み、より一般的に言えば、ストレージオペレーティングシステムは、クライアントがブロックアクセスプロトコル、及びファイルアクセスプロトコルを使用してストレージシステムに格納された情報をアクセスするためのデータパスを提供するマルチプロトコルエンジンを含む。プロトコルスタックは、IP層312、並びにその支援搬送機構であるTCP層314、及びユーザデータグラム(UDP)層316のようなネットワークプロトコル層に対するインタフェースを提供するネットワークドライバ(例えば、ギガビットイーサネット(R)ドライバ)のメディアアクセス層310を含む。ファイルシステムプロトコル層は、マルチプロトコルファイルアクセスを提供し、その目的のために、ダイレクト・アクセス・ファイルシステム(DAFS)プロトコル318、NFSプロトコル320、CIFSプロトコル322、及びハイパーテキスト・トランスファ・プロトコル(HTTP)プロトコル324をサポートする。VI層326は、VIアーキテクチャを実施し、DAFSプロトコル318に必要とされるRDMAのようなダイレクト・アクセス・トランスポート(DAT)機能を提供する。
iSCSIドライバ層328は、TCP/IPネットワークプロトコル層を介したブロックプロトコルアクセスを提供する一方、FCドライバ層330は、ストレージシステムに対するブロックアクセス要求、及び応答の送受信を行う。FCドライバ、及びiSCSIドライバは、ストレージシステムのブロックをアクセスするときに、ブロックに対するFC固有の、又はiSCSI固有のアクセス制御を提供する。すなわち、それらのドライバは、iSCSI、又はFCP、あるいはそれら両方に対するLUNのエキスポートを管理する。さらに、ストレージオペレーティングシステムは、I/O処理に従ってボリューム/ディスクに対する情報の格納、及び読み出しを管理するためにRAID340として実施されるディスクストレージモジュール、及び例えばSCSIプロトコルのようなディスクアクセスプロトコルを実施するディスクドライバシステム350を含む。
ディスクソフトウェア層と統合ネットワークプロトコルスタック層の間を橋渡しするのは、仮想化システム355である。仮想化システム355は、例えばvdiskモジュール370、及びSCSIターゲットモジュールのような仮想化モジュールと通信するファイルシステム365によって実施される。vdiskモジュール370は、例えば、ファイルシステム365の上に層として形成され、ユーザ(システム管理者)がストレージシステムに対して発行するコマンドに応答して、ユーザインタフェース(図示せず)のような管理インタフェースによるアクセスを可能にする。SCSIターゲットモジュール360は、FC、iSCSIドライバ328、330と、ファイルシステム365との間に配置され、ブロック(LUN)空間と、LUNがブロックとして表現されるファイルシステム空間との間に、仮想化システム355の変換層を提供する。
ファイルシステムは例えば、ディスクのようなストレージデバイスに格納された情報にアクセスする際に使用される論理ボリューム管理機能を備えたメッセージベースのシステムである。すなわち、ファイルシステム365は、ファイルシステムセマンティックを提供するだけでなく、通常ならばボリュームマネージャに関連する機能も提供する。そうした機能には例えば、(1)ディスクのアグレゲーション、(2)ディスクの記憶帯域幅のアグレゲーション、並びに(3)ミラーリング、及び/又はパリティ(RAID)のような信頼性保証がある。ファイルシステム365は例えば、4キロバイト(kB)ブロックとインデックス・ノード(「inode」)を使用してファイルやファイル属性(作成時刻、アクセスパーミッション、サイズ、及びブロック位置など)を指定するブロックベースのオンディスク・フォーマット表現を有するWAFLファイルシステム(以後、一般に「write−anywhereファイルシステム」と呼ぶ)を実施する。ファイルシステムは、ファイルを使用して、当該ファイルシステムのレイアウトを表わすメタデータを格納する。こうしたメタデータファイルには、とりわけ、inodeファイルがある。ディスクからのinodeの読み出しには、ファイルハンドル、すなわち、inode番号を含む識別子が使用される。
簡単に言えば、write−anywhereファイルシステムのinodeは全て、inodeファイルとして編成される。ファイルシステム(FS)infoブロックは、ファイルシステム内の情報のレイアウトを指定し、そのファイルシステムの他の全てのinodeを含むファイルのinodeを含む。各論理ボリューム(ファイルシステム)はFSinfoブロックを有し、FSinfoブロックは例えばRAIDグループ内の定位置に格納されることが好ましい。ルートFSinfoブロックのinodeは、inodeファイルのブロックを直接参照する(指し示す)場合もあれば、inodeファイルの間接ブロックを参照し、さらに、inodeファイルの間接ブロックを参照する場合もある。inodeファイルの直接ブロックにはそれぞれ、inodeが埋め込まれ、各inodeは、間接ブロックを参照し、さらに、ファイルのデータブロックを参照する場合がある。
動作的には、クライアント110からの要求は、コンピュータネットワーク120を介してパケットとしてストレージシステム200へ転送され、そこで、ネットワークアダプタ226により受信される。(層310、又は層330の)ネットワークドライバは、そのパケットを処理し、必要であれば、それをネットワークプロトコル層、及びファイルアクセス層に渡して更なる処理を行った後、write−anywhereファイルシステム365へと転送する。このとき、要求されたデータが「コア内」に無ければ、すなわち、バッファキャッシュ270中に無ければ、ファイルシステムは、inode番号を使用してinodeファイル内を検索し、適当なエントリにアクセスし、論理vbnを読み出す。そしてファイルシステムは、その論理vbnを含むメッセージ構造をRAIDシステム340に渡す。そして、この論理vbnは、ディスク識別子と物理ブロック番号(ディスク、vbn)にマッピングされ、ディスクドライバシステム350の適当なドライバ(例えば、SCSI)に送られる。ディスクドライバは、指定されたディスクからそのpbnを取得し、要求されたデータブロック(複数の場合もあり)をキャッシュ270にロードし、ストレージシステムにより処理する。要求の処理が完了すると、ストレージシステム(及び、オペレーティングシステム)は、ネットワーク120を介してクライアント110に応答を返す。
なお、ストレージシステムによって受信されたクライアント要求に応じてデータストレージアクセスを実施するために必要となる上記のストレージオペレーティングシステムの種々の層を通るソフトウェア「パス」は、代替として、ハードウェアで実施してもよい。すなわち、本発明の代替実施形態として、ストレージアクセス要求データパスは、フィールド・プログラマブル・ゲートアレイ(FPGA)として実施され、又は特定用途向けIC(ASIC)の中に論理回路として実施される場合がある。この種のハードウェア実施形態によれば、クライアント110が発行した要求に応答してストレージシステム200により提供されるストレージサービスの性能を向上させることができる。また、本発明の更に別の実施形態によれば、アダプタ226、228の処理要素は、プロセッサ222から、パケット処理やストレージアクセスオペレーションの負荷の一部、又は全部を取り除くように構成される場合があり、それによって、システムにより提供されるストレージサービスの性能が向上する場合がある。当然ながら、本明細書に記載する種々のプロセス、アーキテクチャ、及び手順は、ハードウェアで実施しても、ファームウェアで実施しても、ソフトウェアで実施してもよい。
本明細書に記載するように、「ストレージオペレーティングシステム」という用語は一般に、ストレージシステムにおいてストレージ機能を実施する働きをするコンピュータ実行可能コードを意味する。ストレージシステムは、例えば、データアクセスを管理し、ファイルサーバの場合、ファイルシステムセマンティックを実施する場合もある。その意味において、ONTAPソフトウェアは、マイクロカーネルとして実施され、WAFLファイルシステムセマンティックを実施し、データアクセスを管理するためのWAFL層を含む、そのようなストレージオペレーティングシステムの一例である。また、ストレージオペレーティングシステムは、UNIXやWindows(R) NTのような汎用オペレーティングシステム上で動作するアプリケーションプログラムとして実施してもよいし、あるいは、本明細書に記載するようなストレージアプリケーションにあわせて構成された構成変更機能を備えた汎用オペレーティングシステムとして実施してもよい。
さらに、当業者には明らかなように、本明細書に記載する本発明の技術は、いかなるタイプの特殊目的(例えば、ファイルサーバ、ファイラ、又はマルチプロトコルストレージアプライアンス)のコンピュータにも、汎用コンピュータにも適用することができ、例えば、ストレージシステム200として構成され、又はストレージシステム200を含むように構成されたスタンドアロンのコンピュータ、あるいはその一部に適用される場合もある。本発明とともに有利に使用されるマルチプロトコルストレージアプライアンスの一例は、2002年8月8日に出願された「Multi-Protocol Storage Appliance that provides Integrated Support for File and Block Access Protocols」と題する米国特許出願第10/215,917号に記載されている。この発明の教示は、種々のストレージシステムアーキテクチャに適合し、限定はしないが例えば、ネットワーク・アタッチド・ストレージ環境、ストレージ・エリア・ネットワーク、及びクライアントやホストコンピュータに直接取り付けられたディスクアセンブリにも適合する。したがって、「ストレージシステム」という用語を使用した場合であっても、この用語は、ストレージ機能を実施し、他の装置、又はシステムに関連するように構成された任意のサブシステムだけでなく、そのような構成も含むものとして広い意味で捉えなければならない。
図4は、本発明の一実施形態によるCASAE400を示す略ブロック図である。CASAEは、CASAEは例えば、ブロック志向のASIC素子として実施され、とりわけ、複数(例えば、8個)のディスクポート425を備えたディスクポート・アダプタ420、及びギガビット・イーサネット(R)・ポートのような複数(例えば、2個)のネットワークポート435を備えたネットワークポート・アダプタ430に接続されたコントローラ(例えば、プロセッサ410、及びメモリ415)を含む。プロセッサ410は、本発明による内容参照ストレージ計算を実施するように構成される。ネットワークポート435は、切り替え装置150を介してCASAE400をストレージシステム200に接続するように構成される。更に、ディスクポート425は、ストレージリソース(例えば、ディスク450)をCASAEに接続するように構成され、それによって、CASAE「ストレージブリック」180が形成される。
CASAEストレージブリック180のディスク450は、LUN470としてエキスポートされ、その種々の部分が、例えば、ファームウェア、アカウンティング(本明細書に記載するマッピングテーブルを含む)、及びユーザデータ(データブロック)に割り当てられる。また、LUN470のディスクは、ディスク450の信頼性を向上させるように構成された単一のRAIDレベル実施形態(例えば、RAID6)グループとして編成される。ディスクの1つ、又は2つが故障した場合でも、RAID6実施形態の機能により、ストレージブリック180は動作を継続し、故障したディスク(複数の場合もあり)は、計画された次のダウンタイムに交換、又は修理される。ただし、プロセッサ410の故障は、緊急事態を引き起こす。なぜなら、プロセッサの構成要素は、RAID実施形態によって保護されていないからである。ディスクからデータをまだ読み出せることもあるが、故障した構成要素が交換されるまで、ストレージブリックは、書き込みオペレーションを処理しない。
例示的実施形態として、write−anywhereファイルシステムでは、ファイルは、ディスクへの格納に適したinodeデータ構造として表現される。図5は、inode500を示す略ブロック図である。inode500は、好ましくは、メタデータ部510、及びデータ部550を備える。各inode500のメタデータ部510に格納される情報は、ファイルを表わす。つまり、この情報は、ファイルのタイプ(例えば、普通、ディレクトリ、vdisk)512、ファイルのサイズ514、ファイルのタイムスタンプ(例えば、アクセス、及び/又は変更)516、及び所有者、すなわち、ファイルのユーザID(UID518)、及びグループID(GID520)を含む。ただし、タイプフィールド512に規定されたファイル(inode)のタイプによって、各inodeのデータ部550の中身は、異なる解釈をされる場合がある。例えば、ディレクトリinodeのデータ部550は、ファイルシステムによって制御されるメタデータを有するのに対し、通常inodeのデータ部は、ユーザ(ファイルシステム)データを有する。後者の場合、データ部550は、ファイルに関連するデータの表現を含む。
具体的には、普通のオンディスクinodeのデータ部550は、ファイルシステムデータ、又はポインタを含む場合があり、後者は、ファイルシステムデータの格納に使用されるディスク上の4kBデータブロックを参照する。inodeのサイズには制限があるため(例えば、128バイト)、ファイルシステムデータのサイズが64バイト以下である場合、データ全体が、そのinodeのデータ部の中に表現される。しかしながら、ファイルシステムデータのサイズが、64バイトより大きく、且つ64kB以下である場合、そのinode(すなわち、第1レベルinode)のデータ部は、最大で16個までのブロックポインタを含み、各ブロックポインタが、ディスク上の4kBブロックのデータを参照する。
さらに、ファイルシステムデータのサイズが64kBより大きく、且つ64メガバイト(MB)以下である場合、そのinode(例えば、第2レベルinode)のデータ部550にある各ポインタは、1024個のポインタを含む間接ブロック(例えば、第1レベルブロック)を参照し、各ポインタが、ディスク上の4kBデータブロックを参照する。ファイルシステムファイルシステムデータのサイズが64MBよりも大きい場合、そのinode(例えば、第3レベルinode)のデータ部550にある各ポインタは、1024個のポインタを含む二重間接ブロック(例えば、第2レベルブロック)を参照し、各ポインタが、間接(例えば、第1レベル)ブロックを参照する。さらに、その間接ブロックは、1024個のポインタを含み、各ポインタは、ディスク上の4kBブロックを参照する。ファイルをアクセスするとき、そのファイルの各ブロックは、ディスクからバッファキャッシュ270へロードされる場合がある。
オンディスクinode(又はブロック)をディスクからバッファキャッシュ270へロードするとき、それに対応するコア内構造が、そのオンディスク構造に埋め込まれる。例えば、inode500を取り囲む破線は、オンディスクinode構造のコア内表現を示している。コア内構造は、オンディスク構造だけでなく、メモリ上のデータ(ただし、ディスク上に無い)の管理に必要となる他の情報も格納する。この他の情報には、例えば、「ダーティ」ビット560がある。例えば書き込みオペレーションに従って、inode(又はブロック)中のデータが更新/変更された後、変更されたデータは、ダーティビット560を使用して「ダーティ」としてマーキングされ、以後、そのinode(ブロック)をディスクに「フラッシュ」(格納)できるようにする。inode、及びinodeファイルを含むWAFLファイルシステムのコア内構造、及びオンディスクフォーマット構造については、1998年10月6日に発行された「Method for Maintaining Consistent States of a File System and for Creating User-Accessible Read-Only Copies of a File System」と題する、既に援用された米国特許第5、819,292号に、Davit Hitz他により開示、及び記載されている。
図6は、本発明と共に有利に使用されるファイルのバッファツリーを示す略ブロック図である。バッファツリーは、バッファキャッシュ270にロードされ、write−anywhereファイルシステム365によって管理されるファイルのブロックの内部表現である。埋め込みinodeのようなルート(最上位)inode602は、間接(例えば、レベル1)ブロック604を参照する。なお、ファイルのサイズによっては、さらに別のレベル(例えば、レベル2やレベル3)の間接ブロックが存在する場合もある。これらの間接ブロック(及び、inode)は、そのファイルの実際のデータの格納に使用されるデータブロック606を最終的に参照する幾つかのポインタ605を含む。つまり、ファイル600のデータは、幾つかのデータブロックに格納され、それらのブロックの位置が、そのファイルの間接ブロックに格納される。各レベル1間接ブロック604は、1024個ものデータブロックへのブロックポインタを含む場合がある。ファイルシステムの「write anywhere」な性質によれば、それらのデータブロックは、ディスク上のどこに配置される場合もありうる(例えば、ディスク450)。
上記のように、ローカルストレージアレイ260のディスク230は、例えば、CASS100によって提供されるディレクトリ、ファイル、及びLUNのようなデータコンテナを表わす高レベルメタディレクトリを格納するように構成されるのに対し、リモートストレージアレイ460のディスク450は、それらのコンテナの実際のデータブロックを格納するように構成される。図7は、本発明による、メタディレクトリとデータブロックのオンディスクストレージレイアウト700を示す略ブロック図である。具体的には、ローカルストレージアレイ260は、ファイルinode720を参照する(指し示す)ポインタを有する1以上のinode712を有するディレクトリブロック710を含む。さらに、それらのファイルinodeは、例えば、間接ブロック724を指し示すポインタを有し、さらに、その間接ブロック724は、リモートストレージアレイ460に格納される実際のデータブロック726を参照するブロックポインタを有する。このように、ファイル(及び、vdisk)のバッファツリーのメタデータ、すなわち、inodeと間接ブロックは全て、ストレージシステム200のローカルストレージアレイ260のディスク230上に存在する一方、データブロックは全て、CASAEストレージブリック180のリモートストレージアレイ460のディスク450上に存在する。換言すれば、ローカルストレージアレイ450上のディスク(及び、ボリューム)は、データコンテナのinode、及び間接ブロックを全て格納し、ローカルストレージアレイには、データブロックが何も存在しない。それらのinode、又は間接ブロック中のブロックポインタは全て、リモートストレージアレイ460の幾つかに格納されたデータブロックを参照する。
ストレージシステム200と各CASAEストレージブリック180との間の通信は、例えば、SCSIコマンド記述子ブロック(CDB)メッセージを利用するストレージプロトコル交換を使用して実施される。クライアントから発行された、或るブリックのLUN470に格納されたデータコンテナ(例えば、ファイル)に対する書き込み要求に応答し、ファイルシステム365は、RAIDシステム340と協働し、オペレーション(例えば、読み出し、又は書き込み)、ブロック番号、ステータス、及びデータ(例えば、書き込みデータ)を含むメッセージを生成する。次に、このメッセージは、ディスクドライバシステム350に渡され、SCSI CDBメッセージとして、ストレージブリック180のCASAE400に転送され、ストレージブリック180のCASAE400は、そのLUN470上に何らかの重複データブロックがあるか否かを探すためのストレージ計算プロセスを実施する。これに応答し、CASAEは、LUN470上の書き込みデータの位置の実際のpbnを含むSCSI CDBメッセージを、ストレージシステム(ファイルシステム)に返す。
本発明によれば、ファイルシステム365は、特殊なブロック番号、例えば、ブロックゼロを使用して、CASAE400に対し、各データブロックに対する内容参照ストレージ計算を命じ、それによって、そのデータがLUN上のいずれかの位置に既に書き込まれているか否かを判定する。ディスクへのデータの格納に、相当な量のドメイン空間が必要となることから、このストレージ計算は、例えば、ハッシュ関数、例えば、MD5を使用して行われる。本明細書に記載する実施形態は、例えば、MD5ハッシュアルゴリズムを使用してハッシュキーを計算しているが、当業者には明らかなように、パリティや巡回検査(CRC)のような他のハッシュアルゴリズムを本発明とともに使用することも可能である。使用されるハッシュアルゴリズムによっては、最終的なハッシュキーを得るための計算に時間を要する場合もある。ハッシュアルゴリズムによっては(例えば、パリティやCRCのように)、他のハッシュアルゴリズム(例えば、MD5)に比べて実行に時間を要しないものもあり、後者のアルゴリズムを使用すれば、ドメインが極端に広くない限り、コリジョンの機会は減少する。
具体的には、CASAEは、データブロックの中身に基づいてハッシュキー、例えば128ビットアドレスを計算し、次いで、そのキーが、以前に格納されたデータブロックに対して生成されているか否かを判定する。理論上、一意の(重複しない)データブロックからは全て、新たなハッシュキーが算出されるが、ブロックによっては、同じハッシュキーが算出されることもあり、その結果、コリジョンが発生することもある。もし、そのハッシュキーが以前に生成されているものであった場合、同じキーを有するデータブロックの中身の比較を行い、中身が一致すれば、以前に格納されたデータブロックに対する参照カウントをインクリメントする。そして、以前に格納されたデータブロックのブロック番号(位置)をファイルシステムに返す。一方、そのハッシュキーが以前に生成されたことがないものであった場合、又は、データの中身が一致しなかった場合、そのデータは、LUN上の次の空きブロック位置に書き込まれ、その位置が、ファイルシステムに返される。
図8は、CASS100におけるストレージシステム200の動作を示す手順のフロー図である。手順は、ステップ800から開始され、ステップ802へ進み、そこで、ファイルベース、又はブロックベースの書き込み要求が、クライアント110により発行され、ストレージシステム200のネットワークプロトコルスタックで受信される。ステップ804において、その書き込み要求はファイルシステム365に渡され、ファイルシステム365は、その要求に関連する書き込みデータを例えばNVRAM229にロギングする。ステップ806において、ストレージシステムは、要求の完了を示す確認メッセージをクライアントに返す。その後、書き込みアロケーションの際に、ファイルシステムの書き込みアロケータ368は、ブロックアロケーションデータ構造をサーチし、その書き込みデータを格納するための空き記憶空間を識別し(ステップ808)、その目的のために、その書き込み要求に関連する書き込みデータの格納に使用されるデータブロックを識別するブロックレイアウトメッセージを作成する(ステップ810)。ただし、本発明の一態様によれば、ステップ812において、ファイルシステム365は、特殊なブロック番号、例えばゼロをそのメッセージに挿入し、ステップ814において、そのメッセージをRAIDシステム340に渡す場合がある。
なお、RAIDシステムは、ブリック180、すなわち、自身のストレージレイアウトをRAIDシステムにエキスポートしていないブリック180上のリモートストレージアレイ460の幾何構成を知らない。したがって、RAIDシステム340は、全てのブリック180にわたって均一になるように、書き込みアロケーション(書き込みデータ)のバランスをとろうとする。例えば、各ブリック180は、1テラバイト(TB)のストレージを提供し、RAIDシステムは、CASS100の複数のブリックにわたって書き込みデータをバランスの取れた状態になるようにストライピングしようとする。その目的のために、RAIDシステムは、ディスクドライバシステム350と協働し、書き込みオペレーション、及び書き込みデータを含むSCSI CDBメッセージを作成し、適当なCASAEへ転送する(ステップ816)。書き込みデータを受信すると、CASAE400は、本明細書に記載する内容参照ストレージ計算を実施し、その書き込みデータを格納すべきLUN470上の位置を判定する(ステップ818)。すなわち、CASAE400は、そのデータを有する重複データブロックがあるか否かを判定する。そして、ステップ820において、CASAE400は、そのブロックが存在するLUN上の場所を示すpbnを返す。
pbnを受信すると、ステップ822において、ファイルシステム365は、「修復」オペレーションを実施し、初期に想定した書き込みアロケーションを訂正する。すなわち、ファイルシステムは、最初に、書き込みデータを特殊なブロック番号、ゼロに割り当てたが、修復オペレーションの際に、その特殊なブロック番号をブリック上の実際のpbn位置に変更する。ステップ824において、ファイルシステムは、そのデータブロックのpbn位置を参照するように、(ローカルストレージアレイ260上の)LUN470に関するバッファツリー(例えば、inode 及び/又は間接ブロック)ポインタを更新する。そして、手順はステップ828において終了する。
図9は、本発明によるCASAEによって実施される内容参照ストレージ計算を示す機能ブロック図である。図示のように、CASAEのプロセッサ410は、ハッシュ関数930を使用して、書き込みデータブロック940の中身からハッシュキー920を計算する。次に、得られたハッシュキー920を、内容参照マッピングデータ構造の中から「検索」し、CASAEストレージブリック180のリモートストレージアレイ460上に、重複データブロックが格納されているか否かを判定する。このマッピングデータ構造は、バイナリツリー(Bツリー)を含む種々の形態に編成される場合がある。ただし、説明、及び理解を簡単にするために、マッピング構造は表形態で描かれ、例えば、ハッシュキーを使用して検索される複数のエントリ910を有するマッピングテーブル900として描かれている。
マッピングテーブル900の各エントリ910は、例えば、ハッシュキーフィールド912、リモートストレージアレイ460のディスク450上に以前に格納されたデータブロックを参照するように構成されたpbnポインタフィールド914(すなわち、データブロックの実際の中身を持たないフィールド)、及び参照カウントフィールド916を含む。なお、参照データブロックは同じでない場合もあるが、生成されたハッシュキー920に一致するハッシュキー912を有する複数のエントリ910が存在する場合がある。ハッシュキー920と、エントリ910aのハッシュキー912aが一致したものと仮定する。コンパレータ950は、書き込みデータブロック940の中身を、ディスク450(エントリ910a中のpbnポインタ914aによって指し示される)から読み出された書き込みデータブロックの中身と比較する。2つのブロックの中身が一致すれば、そのデータは重複しているため、エントリ910a中の参照カウント916aがインクリメントされる。上記のように、次に、CASAE400は、あたかもデータブロック940が、その位置に実際に格納された書き込みデータブロック940であるかのように、pbnポインタ914aのコピーをファイルシステム365に返す。
インクリメントされた参照カウント916は、ローカルストレージアレイ260に格納される適当なinode722、又は間接ブロック724にも反映される。pbnポインタ914aのコピーを使用して、ファイルシステム365は、RAIDシステム340と協働して修復処理を実施し、LUN470に関するバッファツリー内のその適当なinode、又は間接ブロックに対する参照カウントを更新する。事実上、ローカルストレージアレイ260において、LUN470に関する1以上のバッファツリー(例えば、inode、及び/又は間接ブロック)ポインタが、そのデータブロックのpbn位置を参照するように更新される。
一方、ハッシュキー920が、エントリ910のハッシュキー912と一致しなかった場合、あるいは、キーは一致したが、データブロックの中身が一致しなかった場合、そのデータは複製されていないので、書き込みデータブロック940は、LUN470上の次の空きpbnブロック位置に書き込まれ、その位置がファイルシステムに返される。なお、データブロックの中身が一致しなかった場合は、テーブル900の他のエントリ910は検査されない。このとき、絶対データ圧縮と、パフォーマンスとの間のトレードオフがなされる。他に重複データブロックが存在しなかったとしても、そのような重複が存在する機会は非常に低い(特に、MD5ハッシュアルゴリズムを使用した場合)。したがって、内容参照マッピングテーブル900の検索は、最初のハッシュキーが「発見」された時点で中止される。そして、書き込みデータブロック940は、新たなpbn位置に格納され、テーブル900上に新たなエントリ910bが作成される。具体的には、この新たなエントリのハッシュキーフィールド912bには、得られたハッシュキー920が格納され、pbnポインタフィールド914bには、次の空き位置のpbnポインタが格納される。また、参照カウントフィールド916bは、単一の書き込みデータブロック940だけを参照するようにセットされる(例えば、参照カウント1にセットされる)。
図10は、CASS100におけるCASAE400の動作を示す手順のフロー図である。手順はステップ1000から開始され、ステップ1002へ進み、そこで、CASAEは、ストレージシステムから、書き込みオペレーション、及び書き込みデータを含むSCSI CDBメッセージを受信する。ステップ1004において、CASAEプロセッサは、内容参照ストレージ計算を実施し、書き込みデータブロックの中身から、ハッシュキーを計算する。なお、このハッシュキーは、4kバイト単位で実施され、すなわち、書き込みデータの各データブロックの中身に対して実施される。次に、得られたハッシュキーをマッピングテーブルの中から「検索」し、CASAEのリモートストレージアレイ上に重複ブロックが存在するか否かを判定する。
具体的には、計算されたハッシュキーは、テーブル上のエントリのハッシュキーと比較され、一致するか否かが判定される(ステップ1006)。一致した場合(ステップ1008)、ステップ1010において、そのデータブロックの中身を、以前に格納されたブロックの中身と比較する。データの中身の比較の結果、両者が一致した場合(ステップ1012)、書き込みデータは重複しているため、ステップ1016において、CASAEは、データをLUNに格納するときのその書き込みデータブロックのpbn位置(この場合、pbn位置は、一致した書き込みデータブロックの以前の位置である)を(ストレージシステムに)に返す。あるいは、書き込みデータが重複するものでなかった場合、ステップ1014において、その書き込みデータブロックは、LUN上の次の空きpbnブロック位置に格納され、ステップ1016において、データをLUNに格納するときのブロックのpbn位置が、ストレージシステムに返される。そして、手順はステップ1018において終了する。
本明細書に記載する例示的実施形態として、各ストレージブリック180は、自分の記憶空間をデータ圧縮(重複除去)することができるが、他のブリックの空間を重複除去することはできない。すなわち、もし、第1のブリックに書き込まれたデータブロックが、第2のブリックに以前に書き込まれたものと同じブロックであった場合、そのブロックの2つのコピーが存在することになる。各ブリックが、自分の記憶空間だけを管理できるようにすることで、コリジョンの範囲は、1ブリック、すなわち1テラバイトのストレージに格納可能な4kブロックの数に制限される。また、有利なことに、ストレージ計算が、全てのストレージブリックにわたって分散される。例えば、各ブリックについてMD5ハッシュキーの計算に1ミリ秒を要するものと仮定する。8個のブリックを使用した場合、32kバイトの書き込みデータに対する計算は、1ミリ秒程度で実施することができるが、1つのブリックに対して何回かの計算を順番に実施する場合は、計算に8ミリ秒程度の時間を要する。
ストレージリソース上に重複データが格納されることを防止するように構成されたストレージシステムのCASAEの幾つかの実施形態について図示説明したが、本発明の思想、及び範囲内で、他にも変更や修正が施される場合があるものと考えられる。例えば、代替実施形態として、本発明は、ストレージブリック180においてpbnから実際のpbnへのマッピングを行う更に別の層にも拡張することができ、その結果、ブリックに書き込まれたあらゆるデータブロックに対し、ブリックは、一意のブロック番号を返すことができる場合がある(幾つかのブロックが、内部的に同じブロックを指し示していても)。このように、ファイルシステムは、書き込みデータブロックが常に新たに割り当てられることを前提としている。
上記の説明は、本発明の特定の幾つかの実施形態に関するものである。しかしながら、当業者には明らかなように、記載した実施形態の利点の一部、又は全部を維持しながら、記載した実施形態に対し、種々の変更、及び修正を施してもよい。例えば、本発明の教示は、コンピュータ上で実行されるプログラム命令を有するコンピュータ読取可能媒体を含むソフトウェアとして実施しても、ハードウェアとして実施しても、ファームウェアとして実施してもよく、あるいは、それらの組み合わせとして実施してもよい。したがって、本明細書の説明は、単なる例として捉えるべきものであり、本発明の範囲を何ら制限するものではない。従って、添付の特許請求の範囲の目的は、そのような変更や修正も全て、本発明の真の思想、及び範囲内に収めることにある。
本発明とともに有利に使用される内容参照ストレージシステム(CASS)を示す略ブロック図である。 本発明とともに有利に使用されるCASSのストレージオペレーティングシステムを示す略ブロック図である。 本発明とともに有利に使用されるストレージオペレーティングシステムの略ブロック図である。 本発明によるCASSの内容参照ストレージアレイ要素(CASAE)の略ブロック図である。 本発明とともに有利に使用されるinodeを示す略ブロック図である。 本発明とともに有利に使用されるファイルのバッファツリーを示す略ブロック図である。 本発明によるメタディレクトリ、及びデータブロックのオンディスクストレージレイアウトを示す略ブロック図である。 CASSにおけるストレージシステムの動作を示す手順のフロー図である。 本発明による、CASAEにより実施される内容参照ストレージ計算を示す機能ブロック図である。 CASSにおけるCASAEの動作を示す手順のフロー図である。

Claims (12)

  1. ストレージシステムのストレージリソースを管理する方法であって、
    前記ストレージシステムから、第1のデータブロックに当初割当てられた特殊なブロック番号を使用した命令を受信することに応答し、ハッシュ関数を使用して、前記ストレージリソースに書き込むべき前記第1のデータブロックの中身から、ハッシュキーを計算するステップと、
    計算されたハッシュキーを、前記ストレージリソースに以前に記憶されたデータブロックの中身から生成されたマッピングテーブル内のエントリーのハッシュキーと比較し、一致するものがあるか否かを判定するステップと、
    一致するものがあった場合、前記第1のデータブロックの中身を、前記ストレージリソースに以前に記憶された、前記計算されたハッシュキーと同様のハッシュキーを有する第2のデータブロックの中身と比較するステップと、
    前記データブロックの中身の比較の結果、一致た場合
    前記第2のデータブロックの位置を示すブロック番号を前記ストレージシステムに返し、
    前記ストレージシステムによって前記第1のデータブロックに当初割当てられた前記特殊なブロック番号を、前記ストレージシステムに返された前記ブロック番号に変更することによって、
    前記第1のデータブロックの中身の前記ストレージリソースへの記憶を防止するステップと
    からなる方法。
  2. 前記ハッシュキーの比較、及び前記データブロックの中身の比較において、一致するものがなかった合、
    前記第1のデータブロックを前記ストレージリソース上の次の空きブロック位置に書き込むステップと、
    前記次の空き位置のブロック番号を前記ストレージシステムに提供するステップとをさらに含む、請求項1に記載の方法。
  3. ストレージシステムのストレージリソースを管理するように構成されたシステムであって、
    (i)前記ストレージリソースから、第1のデータブロックに当初割当てられた特殊なブロック番号を使用した命令を受信することに応答し、ハッシュ関数を使用して、前記ストレージリソースに書き込むべき前記第1のデータブロックの中身にからハッシュキーを計算し、(ii)前記計算されたハッシュキーが前記ストレージリソースに以前に記憶された第2のデータブロックについて生成されたハッシュキーと同様のものであるか否かを判定し、(iii)同様のものである場合、前記第1及び第2のデータブロックの中身を比較し、(iv)一致した場合前記第2のデータブロックの位置を示すブロック番号を返し、前記第1のデータブロックに当初割当てられた前記特殊なブロック番号を、前記第2のデータブロックの位置を示す前記ブロック番号に変更することによって、前記第1のデータブロックの中身の前記ストレージリソースへの記憶を防止するように構成された内容参照ストレージアレイ要素を含む、システム。
  4. 前記ブロック番号は、前記ストレージリソースに記憶された論理ユニットの物理ブロック番号である、請求項に記載のシステム。
  5. 前記第1のデータブロックの前記計算されたハッシュキーが前記第2のデータブロックの前記ハッシュキーと同じでなく、前記第1及び第2のデータブロックの中身の間に一致するものがなかった場合、前記内容参照ストレージアレイ要素は、前記第1のデータブロックを前記ストレージリソース上の次の空きブロック位置に書き込み、前記次の空きブロック位置のブロック番号を、前記ストレージシステムに返すようにさらに構成される、請求項3または請求項4に記載のシステム。
  6. 前記ハッシュ関数は、MD5ハッシュアルゴリズムを含む、請求項3〜5のいずれか一項に記載のシステム。
  7. 記内容参照ストレージアレイ要素によって使用されるマッピングデータ構造をさらに含み、前記マッピングデータ構造は、前記第2のデータブロックの前記ハッシュキーを記憶する、請求項3〜6のいずれか一項に記載のシステム。
  8. 前記マッピングデータ構造は、複数のエントリを有するテーブルであり、各エントリは、ハッシュキー、前記ストレージリソースに以前に記憶されたデータブロックを参照するように構成されたポインタを含む、請求項に記載のシステム。
  9. ストレージシステムのストレージリソースを管理するように構成された装置であって、
    前記ストレージシステムから、第1のデータブロックに当初割当てられた特殊なブロック番号を使用した命令を受信することに応答し、ハッシュ関数を使用して、前記ストレージリソースに書き込むべき前記第1のデータブロックの中身から、ハッシュキーを計算する手段と、
    計算されたハッシュキーを、前記ストレージリソースに以前に記憶されたデータブロックの中身から生成されたマッピングテーブルのエントリハッシュキーと比較し、一致するものがあるか否かを判定する手段と、
    一致するものがあった場合、前記第1のデータブロックの中身を前記ストレージリソースに以前に記憶された、前記計算されたハッシュキーと同様のハッシュキーを有する第2のデータブロックの中身と比較する手段と、
    前記データブロックの中身の比較の結果、一致た場合、前記第2のデータブロックの位置を示すブロック番号を前記ストレージシステムに返し、前記ストレージシステムによって前記第1のデータブロックに当初割当てられた前記特殊なブロック番号を、前記ストレージシステムに返された前記ブロック番号に変更することによって、前記第1のデータブロックの中身の前記ストレージリソースへの記憶を防止する手段と
    からなる装置。
  10. 前記ハッシュキーの比較、及び前記データブロックの中身の比較において、一致するものがなかった合、
    前記第1のデータブロックを前記ストレージリソース上の次の空きブロック位置に書き込む手段と、
    前記次の空きブロック位置のブロック番号を前記ストレージシステムに提供する手段と
    をさらに含む、請求項に記載の装置。
  11. ストレージシステムのストレージリソースを管理する実行可能プログラム命令を含むコンピュータ読取可能媒体であって、前記実行可能プログラム命令が、
    前記ストレージシステムから、第1のデータブロックに当初割当てられた特殊なブロック番号を使用した命令を受信することに応答し、ハッシュ関数を使用して、前記ストレージリソースに書き込むべき前記第1のデータブロックの中身から、ハッシュキーを計算し、
    計算されたハッシュキーを、前記ストレージリソースに以前に記憶されたデータブロックの中身から生成されたマッピングテーブルのエントリハッシュキーと比較し、一致するものがあるか否かを判定し、
    一致するものがあった場合、前記第1のデータブロックの中身を前記ストレージリソースに以前に記憶された、前記計算されたハッシュキーと同様のハッシュキーを有する第2のデータブロックの中身と比較し、
    前記データブロックの中身の比較の結果、一致た場合、前記第2のデータブロックの位置を示すブロック番号を前記ストレージシステムに返し、前記ストレージシステムによって前記第1のデータブロックに当初割当てられた前記特殊なブロック番号を、前記ストレージシステムに返された前記ブロック番号に変更することによって、前記第1のデータブロックの中身の前記ストレージリソースへの記憶を防止するための1以上のプログラム命令からなる、コンピュータ読取可能媒体。
  12. 前記ハッシュキーの比較、及び前記データブロックの中身の比較において、一致するものがなかった合、
    前記第1のデータブロックを前記ストレージリソース上の次の空きブロック位置に書き込み、
    前記次の空き位置のブロック番号を前記ストレージシステムに提供するための1以上のプログラム命令を更に含む、請求項11に記載のコンピュータ読取可能媒体。
JP2008552386A 2006-01-26 2007-01-25 内容参照ストレージアレイ要素 Active JP5121731B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/340,308 US7734603B1 (en) 2006-01-26 2006-01-26 Content addressable storage array element
US11/340,308 2006-01-26
PCT/US2007/001909 WO2007089502A1 (en) 2006-01-26 2007-01-25 Content addressable storage array element

Publications (2)

Publication Number Publication Date
JP2009524882A JP2009524882A (ja) 2009-07-02
JP5121731B2 true JP5121731B2 (ja) 2013-01-16

Family

ID=38048045

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008552386A Active JP5121731B2 (ja) 2006-01-26 2007-01-25 内容参照ストレージアレイ要素

Country Status (5)

Country Link
US (1) US7734603B1 (ja)
EP (1) EP1977308B1 (ja)
JP (1) JP5121731B2 (ja)
CN (1) CN101410783B (ja)
WO (1) WO2007089502A1 (ja)

Families Citing this family (125)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020046061A1 (en) 2000-02-11 2002-04-18 Wright Kenneth L. Personal information system
US8239354B2 (en) 2005-03-03 2012-08-07 F5 Networks, Inc. System and method for managing small-size files in an aggregated file system
US8195760B2 (en) 2001-01-11 2012-06-05 F5 Networks, Inc. File aggregation in a switched file system
US7509322B2 (en) 2001-01-11 2009-03-24 F5 Networks, Inc. Aggregated lock management for locking aggregated files in a switched file system
US20040133606A1 (en) * 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
US7512673B2 (en) * 2001-01-11 2009-03-31 Attune Systems, Inc. Rule based aggregation of files and transactions in a switched file system
EP1368736A2 (en) 2001-01-11 2003-12-10 Z-Force Communications, Inc. File switch and switched file system
US7685126B2 (en) 2001-08-03 2010-03-23 Isilon Systems, Inc. System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US8055711B2 (en) 2004-10-29 2011-11-08 Emc Corporation Non-blocking commit protocol systems and methods
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
US7885970B2 (en) 2005-01-20 2011-02-08 F5 Networks, Inc. Scalable system for partitioning and accessing metadata over multiple servers
US7958347B1 (en) 2005-02-04 2011-06-07 F5 Networks, Inc. Methods and apparatus for implementing authentication
US7797283B2 (en) * 2005-10-21 2010-09-14 Isilon Systems, Inc. Systems and methods for maintaining distributed data
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
US7917474B2 (en) 2005-10-21 2011-03-29 Isilon Systems, Inc. Systems and methods for accessing and updating distributed data
US7848261B2 (en) 2006-02-17 2010-12-07 Isilon Systems, Inc. Systems and methods for providing a quiescing protocol
US7756898B2 (en) 2006-03-31 2010-07-13 Isilon Systems, Inc. Systems and methods for notifying listeners of events
US8417746B1 (en) 2006-04-03 2013-04-09 F5 Networks, Inc. File system management with enhanced searchability
CA2651323C (en) 2006-05-05 2016-02-16 Hybir Inc. Group based complete and incremental computer file backup system, process and apparatus
JP4676378B2 (ja) * 2006-05-18 2011-04-27 株式会社バッファロー データ記憶装置およびデータ記憶方法
US8185751B2 (en) * 2006-06-27 2012-05-22 Emc Corporation Achieving strong cryptographic correlation between higher level semantic units and lower level components in a secure data storage system
US7822932B2 (en) 2006-08-18 2010-10-26 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
US7899800B2 (en) 2006-08-18 2011-03-01 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7680842B2 (en) 2006-08-18 2010-03-16 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7590652B2 (en) * 2006-08-18 2009-09-15 Isilon Systems, Inc. Systems and methods of reverse lookup
US7680836B2 (en) 2006-08-18 2010-03-16 Isilon Systems, Inc. Systems and methods for a snapshot of data
US20080155191A1 (en) * 2006-12-21 2008-06-26 Anderson Robert J Systems and methods for providing heterogeneous storage systems
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
US7509448B2 (en) 2007-01-05 2009-03-24 Isilon Systems, Inc. Systems and methods for managing semantic locks
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
WO2008147973A2 (en) 2007-05-25 2008-12-04 Attune Systems, Inc. Remote file virtualization in a switched file system
US8046509B2 (en) 2007-07-06 2011-10-25 Prostor Systems, Inc. Commonality factoring for removable media
US7882068B2 (en) * 2007-08-21 2011-02-01 Isilon Systems, Inc. Systems and methods for adaptive copy on write
JP5060876B2 (ja) * 2007-08-30 2012-10-31 株式会社日立製作所 ストレージシステム及びストレージシステムの消費電力低減方法
US7870409B2 (en) * 2007-09-26 2011-01-11 Hitachi, Ltd. Power efficient data storage with data de-duplication
JP5331323B2 (ja) 2007-09-26 2013-10-30 株式会社日立製作所 ストレージサブシステム及びその制御方法
US8548953B2 (en) * 2007-11-12 2013-10-01 F5 Networks, Inc. File deduplication using storage tiers
US8117244B2 (en) * 2007-11-12 2012-02-14 F5 Networks, Inc. Non-disruptive file migration
US8180747B2 (en) 2007-11-12 2012-05-15 F5 Networks, Inc. Load sharing cluster file systems
US20090204650A1 (en) * 2007-11-15 2009-08-13 Attune Systems, Inc. File Deduplication using Copy-on-Write Storage Tiers
US8352785B1 (en) 2007-12-13 2013-01-08 F5 Networks, Inc. Methods for generating a unified virtual snapshot and systems thereof
US8447938B2 (en) * 2008-01-04 2013-05-21 International Business Machines Corporation Backing up a deduplicated filesystem to disjoint media
US20090196425A1 (en) * 2008-02-06 2009-08-06 Dean Boland Method for Authenticating Electronically Stored Information
US20090259617A1 (en) * 2008-04-15 2009-10-15 Richard Charles Cownie Method And System For Data Management
US8266114B2 (en) * 2008-09-22 2012-09-11 Riverbed Technology, Inc. Log structured content addressable deduplicating storage
US9098495B2 (en) * 2008-06-24 2015-08-04 Commvault Systems, Inc. Application-aware and remote single instance data management
US8549582B1 (en) 2008-07-11 2013-10-01 F5 Networks, Inc. Methods for handling a multi-protocol content name and systems thereof
EP2329424B1 (en) 2008-08-22 2016-12-07 Datcard Systems, Inc. System and method of encryption for dicom volumes
US8316064B2 (en) * 2008-08-25 2012-11-20 Emc Corporation Method and apparatus for managing data objects of a data storage system
US8074049B2 (en) * 2008-08-26 2011-12-06 Nine Technology, Llc Online backup system with global two staged deduplication without using an indexing database
US10642794B2 (en) * 2008-09-11 2020-05-05 Vmware, Inc. Computer storage deduplication
JP5313600B2 (ja) * 2008-09-16 2013-10-09 株式会社日立製作所 ストレージシステム、及びストレージシステムの運用方法
US8788519B2 (en) 2008-10-24 2014-07-22 John C. Canessa System and methods for metadata management in content addressable storage
US8315992B1 (en) * 2008-11-26 2012-11-20 Symantec Corporation Affinity based allocation for storage implementations employing deduplicated data stores
JP5321029B2 (ja) * 2008-12-10 2013-10-23 日本電気株式会社 負荷軽減装置および負荷軽減方法
JP4962483B2 (ja) * 2008-12-19 2012-06-27 日本電気株式会社 情報処理装置
JP5391705B2 (ja) * 2009-01-27 2014-01-15 日本電気株式会社 ストレージシステム
JP5413948B2 (ja) * 2009-01-27 2014-02-12 日本電気株式会社 ストレージシステム
US8375182B2 (en) * 2009-02-10 2013-02-12 Hewlett-Packard Development Company, L.P. System and method for segmenting a data stream
US8161211B2 (en) * 2009-02-25 2012-04-17 Hitachi, Ltd. Storage system and data processing method for the same
JP5162701B2 (ja) * 2009-03-05 2013-03-13 株式会社日立ソリューションズ 統合重複排除システム、データ格納装置、及びサーバ装置
JP4900850B2 (ja) * 2009-04-01 2012-03-21 日本電気株式会社 ディスクアレイ装置、ディスクアレイ装置の管理方法及びプログラム
US20100281207A1 (en) * 2009-04-30 2010-11-04 Miller Steven C Flash-based data archive storage system
US9032181B2 (en) 2009-05-19 2015-05-12 Vmware, Inc. Shortcut input/output in virtual machine systems
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US8458233B2 (en) * 2009-11-25 2013-06-04 Cleversafe, Inc. Data de-duplication in a dispersed storage network utilizing data characterization
US8204860B1 (en) 2010-02-09 2012-06-19 F5 Networks, Inc. Methods and systems for snapshot reconstitution
US9195500B1 (en) 2010-02-09 2015-11-24 F5 Networks, Inc. Methods for seamless storage importing and devices thereof
JP5585116B2 (ja) * 2010-02-19 2014-09-10 日本電気株式会社 ストレージシステム
US9021229B2 (en) 2010-04-14 2015-04-28 International Business Machines Corporation Optimizing a file system for different types of applications in a compute cluster using dynamic block size granularity
US8930470B2 (en) 2010-04-23 2015-01-06 Datcard Systems, Inc. Event notification in interconnected content-addressable storage systems
US8380949B2 (en) * 2010-05-20 2013-02-19 International Business Machines Corporation Managing write operations to an extent of tracks migrated between storage devices
US10025734B1 (en) * 2010-06-29 2018-07-17 EMC IP Holding Company LLC Managing I/O operations based on application awareness
US8347100B1 (en) 2010-07-14 2013-01-01 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
US9286298B1 (en) 2010-10-14 2016-03-15 F5 Networks, Inc. Methods for enhancing management of backup data sets and devices thereof
WO2012067964A1 (en) * 2010-11-16 2012-05-24 Actifio, Inc. Systems and methods for data management virtualization
WO2012078898A2 (en) 2010-12-10 2012-06-14 Datcard Systems, Inc. Secure portable medical information access systems and methods related thereto
KR101252375B1 (ko) * 2010-12-28 2013-04-08 한양대학교 산학협력단 저장 장치의 중복 제거 성능 향상을 위한 맵핑 관리 시스템 및 방법
JP5673232B2 (ja) * 2011-03-09 2015-02-18 日本電気株式会社 ストレージシステム
US9639591B2 (en) * 2011-06-13 2017-05-02 EMC IP Holding Company LLC Low latency replication techniques with content addressable storage
US9383928B2 (en) * 2011-06-13 2016-07-05 Emc Corporation Replication techniques with content addressable storage
US8396836B1 (en) 2011-06-30 2013-03-12 F5 Networks, Inc. System for mitigating file virtualization storage import latency
US9501421B1 (en) * 2011-07-05 2016-11-22 Intel Corporation Memory sharing and page deduplication using indirect lines
US8463850B1 (en) 2011-10-26 2013-06-11 F5 Networks, Inc. System and method of algorithmically generating a server side transaction identifier
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
US9141631B2 (en) 2012-04-16 2015-09-22 International Business Machines Corporation Table boundary detection in data blocks for compression
US20130282672A1 (en) * 2012-04-18 2013-10-24 Hitachi Computer Peripherals Co., Ltd. Storage apparatus and storage control method
US8799746B2 (en) 2012-06-13 2014-08-05 Caringo, Inc. Erasure coding and replication in storage clusters
US9104560B2 (en) 2012-06-13 2015-08-11 Caringo, Inc. Two level addressing in storage clusters
US8762353B2 (en) 2012-06-13 2014-06-24 Caringo, Inc. Elimination of duplicate objects in storage clusters
US9519501B1 (en) 2012-09-30 2016-12-13 F5 Networks, Inc. Hardware assisted flow acceleration and L2 SMAC management in a heterogeneous distributed multi-tenant virtualized clustered system
US9430164B1 (en) 2013-02-08 2016-08-30 Emc Corporation Memory efficient sanitization of a deduplicated storage system
US9317218B1 (en) 2013-02-08 2016-04-19 Emc Corporation Memory efficient sanitization of a deduplicated storage system using a perfect hash function
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9554418B1 (en) 2013-02-28 2017-01-24 F5 Networks, Inc. Device for topology hiding of a visited network
US9659023B2 (en) * 2013-11-21 2017-05-23 Upthere, Inc. Maintaining and using a cache of child-to-parent mappings in a content-addressable storage system
CN104679442A (zh) * 2013-12-02 2015-06-03 中兴通讯股份有限公司 一种提高磁盘阵列性能的方法及装置
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10061514B2 (en) 2015-04-15 2018-08-28 Formulus Black Corporation Method and apparatus for dense hyper IO digital retention
US20170031940A1 (en) * 2015-07-31 2017-02-02 Netapp, Inc. Compression file structure
JP6419662B2 (ja) * 2015-08-25 2018-11-07 株式会社東芝 ストレージシステム及びデータ重複検出方法
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10797888B1 (en) 2016-01-20 2020-10-06 F5 Networks, Inc. Methods for secured SCEP enrollment for client devices and devices thereof
US10412198B1 (en) 2016-10-27 2019-09-10 F5 Networks, Inc. Methods for improved transmission control protocol (TCP) performance visibility and devices thereof
US10567492B1 (en) 2017-05-11 2020-02-18 F5 Networks, Inc. Methods for load balancing in a federated identity environment and devices thereof
US10700711B1 (en) 2017-11-03 2020-06-30 Caringo Inc. Multi-part upload and editing of erasure-coded objects
WO2019126072A1 (en) 2017-12-18 2019-06-27 Formulus Black Corporation Random access memory (ram)-based computer systems, devices, and methods
US11223689B1 (en) 2018-01-05 2022-01-11 F5 Networks, Inc. Methods for multipath transmission control protocol (MPTCP) based session migration and devices thereof
US10833943B1 (en) 2018-03-01 2020-11-10 F5 Networks, Inc. Methods for service chaining and devices thereof
WO2019231761A1 (en) * 2018-05-31 2019-12-05 Secturion Systems, Inc. Locally-stored remote block data integrity
WO2020142431A1 (en) 2019-01-02 2020-07-09 Formulus Black Corporation Systems and methods for memory failure prevention, management, and mitigation
CN110781160B (zh) * 2019-10-15 2021-07-27 北亚企安科技(北京)有限公司 基于VMware虚拟化文件系统损坏的数据恢复方法
CN113448499A (zh) * 2020-03-25 2021-09-28 华为技术有限公司 存储系统、数据处理方法、装置、节点以及存储介质
US11704035B2 (en) 2020-03-30 2023-07-18 Pure Storage, Inc. Unified storage on block containers
US11934893B2 (en) 2021-07-06 2024-03-19 Pure Storage, Inc. Storage system that drives an orchestrator based on events in the storage system
US11816356B2 (en) 2021-07-06 2023-11-14 Pure Storage, Inc. Container orchestrator-aware storage system

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4156907A (en) 1977-03-02 1979-05-29 Burroughs Corporation Data communications subsystem
US4399503A (en) 1978-06-30 1983-08-16 Bunker Ramo Corporation Dynamic disk buffer control unit
US4598357A (en) 1980-11-14 1986-07-01 Sperry Corporation Cache/disk subsystem with file number for recovery of cached data
US4837675A (en) 1981-10-05 1989-06-06 Digital Equipment Corporation Secondary storage facility empolying serial communications between drive and controller
JPS60142418A (ja) 1983-12-28 1985-07-27 Hitachi Ltd 入出力エラ−回復方式
US4775932A (en) * 1984-07-31 1988-10-04 Texas Instruments Incorporated Computer memory system with parallel garbage collection independent from an associated user processor
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 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 揮発性メモリの間欠エラ−検出方法
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
US5124987A (en) 1990-04-16 1992-06-23 Storage Technology Corporation Logical track write scheduling system for a parallel disk drive array data storage subsystem
US5155835A (en) 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US5426747A (en) 1991-03-22 1995-06-20 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
JP3160106B2 (ja) 1991-12-23 2001-04-23 ヒュンダイ エレクトロニクス アメリカ ディスクアレーの区分け方法
US5581724A (en) 1992-10-19 1996-12-03 Storage Technology Corporation Dynamically mapped data storage subsystem having multiple open destage cylinders and method of managing that subsystem
ATE409907T1 (de) 1993-06-03 2008-10-15 Network Appliance Inc Verfahren und vorrichtung zum beschreiben beliebiger bereiche eines dateisystems
US5446888A (en) * 1994-01-14 1995-08-29 Pyne; Charles F. Remote file transfer method and apparatus
WO1996025801A1 (en) 1995-02-17 1996-08-22 Trustus Pty. Ltd. Method for partitioning a block of data into subblocks and for storing and communicating such subblocks
US5732265A (en) 1995-11-02 1998-03-24 Microsoft Corporation Storage optimizing encoder and method
JP2944496B2 (ja) * 1996-01-29 1999-09-06 日本電気ソフトウェア株式会社 画像データ格納制御装置
US6073209A (en) * 1997-03-31 2000-06-06 Ark Research Corporation Data storage controller providing multiple hosts with access to multiple storage subsystems
GB2341715A (en) 1998-09-17 2000-03-22 Springtek Limited Magnetic disk redundant array
US6421767B1 (en) * 2000-02-23 2002-07-16 Storage Technology Corporation Method and apparatus for managing a storage system using snapshot copy operations with snap groups
JP2001309219A (ja) * 2000-04-20 2001-11-02 Fuji Photo Film Co Ltd 画像転送システム
US6636879B1 (en) 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
JP3899795B2 (ja) * 2000-09-21 2007-03-28 日本電気株式会社 ファイル管理システムおよび方法
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US7073044B2 (en) 2001-03-30 2006-07-04 Intel Corporation Method and apparatus for sharing TLB entries
US7593972B2 (en) * 2001-04-13 2009-09-22 Ge Medical Systems Information Technologies, Inc. Application service provider based redundant archive services for medical archives and/or imaging systems
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
US7200715B2 (en) * 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US6862674B2 (en) * 2002-06-06 2005-03-01 Sun Microsystems Methods and apparatus for performing a memory management technique
US7873700B2 (en) 2002-08-09 2011-01-18 Netapp, Inc. Multi-protocol storage appliance that provides integrated support for file and block access protocols
KR100490723B1 (ko) * 2002-11-29 2005-05-24 한국전자통신연구원 파일 레벨 스트라이핑 장치 및 방법
EP1595197A2 (en) * 2003-02-21 2005-11-16 Caringo, Inc. Additional hash functions in content-based addressing
US7092759B2 (en) 2003-07-30 2006-08-15 Medtronic, Inc. Method of optimizing cardiac resynchronization therapy using sensor signals of septal wall motion
US7076622B2 (en) * 2003-09-30 2006-07-11 International Business Machines Corporation System and method for detecting and sharing common blocks in an object storage system
US7281006B2 (en) 2003-10-23 2007-10-09 International Business Machines Corporation System and method for dividing data into predominantly fixed-sized chunks so that duplicate data chunks may be identified
US7117204B2 (en) 2003-12-03 2006-10-03 International Business Machines Corporation Transparent content addressable data storage and compression for a file system
JP2005295151A (ja) * 2004-03-31 2005-10-20 Canon Inc 文書管理装置及びその制御方法、プログラム
US7213022B2 (en) 2004-04-29 2007-05-01 Filenet Corporation Enterprise content management network-attached system
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
JP4315876B2 (ja) * 2004-08-17 2009-08-19 富士通株式会社 ファイル管理プログラム、ファイル管理方法、及びファイル管理装置
US20070088702A1 (en) 2005-10-03 2007-04-19 Fridella Stephen A Intelligent network client for multi-protocol namespace redirection

Also Published As

Publication number Publication date
JP2009524882A (ja) 2009-07-02
EP1977308A1 (en) 2008-10-08
WO2007089502A1 (en) 2007-08-09
US7734603B1 (en) 2010-06-08
EP1977308B1 (en) 2013-12-25
CN101410783B (zh) 2011-05-25
CN101410783A (zh) 2009-04-15

Similar Documents

Publication Publication Date Title
JP5121731B2 (ja) 内容参照ストレージアレイ要素
US10248660B2 (en) Mechanism for converting one type of mirror to another type of mirror on a storage system without transferring data
US8560503B1 (en) Content addressable storage system
JP5164980B2 (ja) 永久的コンシステンシ・ポイント・イメージを使用するストレージシステムのデータ重複解消を管理するシステム、及び方法
US11611348B2 (en) File system format for persistent memory
US11748208B2 (en) Persistent memory architecture
US20230251932A1 (en) Persistent memory file system reconciliation
JP4779012B2 (ja) 瞬時ボリューム復元のためのオン・デマンドでデータを復元するシステム、および方法
US20230139582A1 (en) Forwarding operations to bypass persistent memory
US20240061603A1 (en) Co-located Journaling and Data Storage for Write Requests
US20220107916A1 (en) Supporting a lookup structure for a file system implementing hierarchical reference counting
US20230376455A1 (en) Coordinating snapshot operations across multiple file systems
US11947430B2 (en) Maintaining and recomputing reference counts in a persistent memory file system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100106

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120312

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120613

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

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

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

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5121731

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250