JP2009020858A - データデデュプリケーションを用いる電力効率のよいストレージ - Google Patents

データデデュプリケーションを用いる電力効率のよいストレージ Download PDF

Info

Publication number
JP2009020858A
JP2009020858A JP2008029970A JP2008029970A JP2009020858A JP 2009020858 A JP2009020858 A JP 2009020858A JP 2008029970 A JP2008029970 A JP 2008029970A JP 2008029970 A JP2008029970 A JP 2008029970A JP 2009020858 A JP2009020858 A JP 2009020858A
Authority
JP
Japan
Prior art keywords
volume
chunk
stored
storage
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008029970A
Other languages
English (en)
Other versions
JP5264203B2 (ja
Inventor
Atsushi Murase
敦史 村瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2009020858A publication Critical patent/JP2009020858A/ja
Application granted granted Critical
Publication of JP5264203B2 publication Critical patent/JP5264203B2/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
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3268Power saving in hard disk drive
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Power Sources (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】ストレージシステムでの電力消費を減らす。
【解決手段】ストレージシステム内の電力消費は、ストレージデバイスに供給される電力を選択的に制御すると同時に、必要な記憶容量の量を減らすためにデデュプリケーション機能をも組み込むことによって減らされる。第1ストレージデバイスは、当初に、パワーオン状態であり、第2ストレージデバイスは、パワーオフ状態である。コントローラによって受け取られた書込データは、当初に、第1ストレージデバイスから割り振られた第1ボリュームに格納される。第2ストレージデバイスがパワーオンされている間に、第1ボリュームに格納された書込データの内容が、第2ストレージデバイス上で割り振られた第2ボリュームに格納されたすべての既存データの内容と比較される。比較の結果が、書込データの内容が既存データの内容と一致しないことを示すときには、書込データが、第2ボリュームに格納される。
【選択図】図2

Description

[0002] 本発明は、全般的にはストレージシステムでの電力消費および容量消費の削減に関する。
[0004] ストレージ産業の最近の傾向によれば、エンタープライズデータの量はすばやく増加しつつあるが、それと同時に、情報テクノロジ予算は制約されつつある。したがって、現在、格納されなければならないデータの量を減らすテクノロジへの高い関心がある。そのようなテクノロジの1つであるデータデデュプリケーション(data de−duplication)は、既に特定のストレージ環境に格納された大量のデータが、やはりそのストレージ環境内に格納された冗長な部分を有するという事実に頼る。データ書込処理中に、通常のデデュプリケーション機能は、データストリームをより小さいデータのチャンクに分解し、データの各チャンクの内容を、そのストレージ環境に以前に格納されたチャンクと比較する。同一のチャンクが既に格納されている場合には、ストレージシステムは、同一の内容を有する新しいチャンクを格納するのではなく、既に格納されているチャンクへの新しいリンクだけを作る。この機能は、ストレージ環境に格納されるデータの総サイズを減らし、したがって、このテクノロジは、VTL(仮想テープライブラリ)製品またはCAS(Contents Addressed Storage)製品など、多数のストレージシステムで採用されてきた。Zhu他の2005年5月24日出願の米国特許出願公告第2005/0216669号、名称「Efficient Data Storage System」は、その開示全体が参照によって本明細書に組み込まれているが、デデュプリケーション機能を用いてデータを格納する通常の方法を教示している。
[0005] さらに、格納されるデータの量の増加に起因して、データを格納するのに必要な電力消費も増えてきた。ストレージデバイスおよびそのストレージデバイスを冷却するのに必要な関連する冷却システムによって直接に消費される電力は、データセンタを運営するコストの大きい要因になりつつある。さらに、近い将来に、一部のデータセンタが、追加される機器の高い密度に起因して、不十分な電力容量を有する可能性があると予測されている。したがって、より高い電力効率を達成することが、多くのデータセンタにとってクリティカルな問題になりつつある。したがって、データセンタ内のストレージデバイスを動作させるのに必要な電力の量を減らし、これによってデータセンタの運営の総合コストを減らすことが望ましい。さらに、上で述べたデデュプリエーションテクノロジの使用を介するなど、格納されるデータの量をも減らすと同時に電力消費を減らすことが望ましい。しかし、従来技術は、データに対するデデュプリケーション処理を実行することによってデータをより効率的に格納すると同時に、ストレージシステムの電力消費を減らすテクノロジを教示せず、提案していない。
[0006] 本発明は、ストレージ環境で必要な記憶容量の量を減らすためにデデュプリケーション機能をも組み込みながら、ストレージデバイスに供給される電力を選択的に制御することによってストレージシステムでの電力消費を減らす。本発明の上記および他の目的および利益は、好ましい実施形態の次の詳細な説明に鑑みて、当業者に明白になるであろう。
[0007] 添付図面は、上で与えた全般的な説明および下で与える好ましい実施形態の詳細な説明と共に、現在企図されている本発明の最良の態様の好ましい実施形態の原理を図示し、説明するように働く。
[0028] 本発明の次の詳細な説明では、本開示の一部を形成する添付図面を参照し、添付図面では、限定ではなく例として、本発明を実践できる特定の実施形態を示す。図面では、類似する符号が、複数の図面を通じて実質的に類似する構成要素を示す。さらに、図面、前述の議論、および次の説明は、例示的かつ説明的であるのみであって、いかなる形でも本発明または本願の範囲を限定することは意図されていない。
[0029] 本発明の実施形態は、ある種の産業での格納されるデータの量の爆発に対処するデデュプリケーション解決策を提供する方法および装置を開示し、本発明の実施形態は、ストレージデバイスによって消費される電力の量を減らすディスク電力制御テクノロジをも導入する。本発明人は、ある種のストレージ環境で、格納される大量のデータが、頻繁にアクセスされる必要がないバックアップまたはアーカイブされるデータであり、実際に、大量のデータが、格納され、絶対に二度とアクセスされないと判定した。本発明は、ストレージデバイスが常時アクティブである必要がない場合にディスクスピンドルをオフにする最適の情況を判定し、これによってストレージデバイスの電力消費を減らすことによって、この現象を利用する。さらに、デデュプリケーションテクノロジが、データバックアップおよびアーカイビングのますます広がる領域で使用されるストレージシステムにますます採用されつつある。しかし、デデュプリケーションテクノロジは、新たに入ってくるデータチャンクの内容を以前に格納されたデータチャンクの内容と常に比較するので、膨大なサイズを有する可能性があるボリュームまたはディスクが、この目的のために常にパワーオンされている必要がある。これが必要なのは、以前に格納されたデータチャンクのいずれかが、新たに入ってくるチャンクとビット対ビットの基礎で直接に比較される必要がある可能性があり、ディスクに格納されたデータの特定の部分が、ある時間期間中に比較に使用される必要がないという保証がないからでる。
[0030] 本発明で開示されるストレージシステムは、クライアントホスト入出力(I/O)動作のターゲットとして、クライアントホストに見かけのストレージリソースとして仮想ボリュームを公開する。本発明の仮想ボリュームは、実際には、2つの別々のタイプの論理ボリュームすなわち、バッファボリュームおよびベースボリュームからなるが、この仮想ボリュームは、ホストがアクセスできる単一のボリュームであるかのようにクライアントホストに提示される。したがって、バッファボリュームとベースボリュームとの両方が、デデュプリケーション機能によって整理統合されるデータチャンクを格納するターゲットボリュームである。しかし、本発明のベースボリュームは、ストレージシステム内のストレージデバイスに対して格納された完全に一意のチャンクを保持するのに使用され、本発明のバッファボリュームは、クライアントホストによって格納を最近に要求されたチャンクを一時的に保持するのに使用される。
[0031] ベースボリュームの電力供給(すなわち、ベースボリュームを構成する1つまたは複数のストレージデバイスへの電力)は、通常はパワーオフ状態である。したがって、ストレージシステム内のストレージデバイスのほとんどは、通常は電力を消費しない。クライアントホストが、データを仮想ボリュームに書き込むことを要求する時に、デデュプリケーションモジュールが、バッファボリュームを利用することによってデデュプリケーション処理を実行する。すべての書込要求に含まれるデータが、一時的にバッファボリュームに格納され、一時格納期間中に、ベースボリュームは、パワーオフのままになる。フラッシュコマンドが受け取られる時(ストレージ管理者によってトリガされる時、データ読取要求の時、またはある他のトリガする機構によってなど)、デデュプリケートするモジュールは、ベースボリュームのデータを含むストレージデバイスの電力をオンにし、デデュプリケーションテクノロジを使用してバッファボリュームに格納されたチャンクをベースボリュームとマージし、これによって、デデュプリケーション処理を同時に実行する。チャンクのマージの終了後に、デデュプリケーションモジュールは、ベースボリュームへの電力供給をオフにし、バッファボリューム上のチャンクおよび関連するテーブルを初期化する。したがって、本発明の利益は、ストレージデバイス電力供給を制御することによってストレージシステムでの電力消費を減らすと同時に、必要な記憶容量の量を減らすためにシステム上でデデュプリケーション機能を利用することである。デデュプリケーションチャンクを格納するボリュームの複数のレイヤを有することと、ベースボリュームの電力供給制御をチャンクをフラッシュする処理と一体化することによって、ストレージデバイスの大きい部分をほとんどの時間にパワーオフすることが可能になり、これを、十分な量のエネルギの節約につなげることができる。本発明のさまざまな例の実施形態を、下で図面を参照して説明する。
[0032] 第1実施形態−ハードウェアアーキテクチャ
[0033] 図1に、第1実施形態の情報システムの物理的ハードウェアアーキテクチャの例を示す。これらの実施形態の情報システムは、ストレージシステム100、1つまたは複数のクライアントホスト110、およびストレージ管理サーバ130からなる。クライアントホスト110およびストレージシステム100は、SAN 120(ストレージエリアネットワーク)を介して通信のために接続される。さらに、SANが図示されているが、この接続を、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、直接接続、または類似物など、さまざまなタイプの接続のいずれかとすることができる。また、ストレージ管理サーバ130およびストレージシステム100は、LAN 140を介して通信のために接続されるが、このLAN 140も、任意の代替の接続タイプとすることができる。
[0034] ストレージシステム100は、記憶媒体106など、複数のストレージデバイスへのアクセスを制御するコントローラ101を含む。コントローラ101は、CPU 102、メモリ103、SAN 120との接続用のポート104、およびLAN 140との接続用のネットワークインターフェース(NIC)105を含む。記憶媒体106は、コントローラ101との通信のために接続され、好ましい実施形態ではハードディスクドライブとすることができるが、他の実施形態では、その代わりに、フラッシュメモリ、光ディスク、テープ、および類似物など、さまざまな他のタイプのストレージデバイスのいずれかとすることができる。
[0035] 各クライアントホスト110は、CPU 111、メモリ112、およびクライアントホスト110をSAN 120に接続するホストバスアダプタ(HBA)113を含むコンピュータとすることができる。クライアントホスト110は、ストレージサービスユーザ用の端末コンピュータとして働くことができる。
[0036] ストレージ管理サーバ130は、CPU 131、メモリ132、およびLAN 140との通信用のネットワークインターフェースカード(NIC)133を含むコンピュータサーバとすることができる。ストレージ管理サーバ130は、ストレージ管理者がストレージシステム100を管理することを可能にする端末サーバとして働くことができる。
[0037] 論理要素の構造
[0038] 図2に、第1実施形態のソフトウェアおよび論理要素の構造を示す。記憶媒体106は、アレイグループ250−1および250−2などの複数のアレイグループ250に論理的に構成され、アレイグループ250−1および250−2などは、各アレイグループから1つまたは複数の論理ボリュームを形成するための論理記憶容量を構成するのに使用することができる。さらに、各アレイグループ250は、好ましくはRAID(redundant array of independent disks)グループまたは類似物に構成される複数の物理記憶媒体106からなる。たとえば、複数の記憶媒体106を、4つのディスクのうちの任意の3つがデータを格納し、残りのディスクがパリティ情報を格納するRAID 5アレイとして構成することができる。他のRAID構成を使用することもでき、あるいはその代わりに、本発明をRAID保護なしで実践することができる。
[0039] バッファボリューム220およびベースボリューム230は、その記憶容量がそれぞれアレイグループ250−1および250−2から切り分けられる論理ストレージエクステントを含む。したがって、図2では、バッファボリューム220は、アレイグループ250−1によって提供される物理ストレージから生成された論理ストレージエリアであり、バッファボリューム220に格納されるデータは、アレイグループ250−1を構成するのに使用される記憶媒体106に物理的に格納されるようになっている。同様に、ベースボリューム230は、アレイグループ250−2から生成された論理ストレージエリアであり、ベースボリューム230に格納されるデータは、アレイグループ250−2を構成する記憶媒体106に物理的に格納される。本発明によれば、アレイグループ250−1を構成する記憶媒体106は、アレイグループ250−2を構成する記憶媒体106とは異なり、記憶媒体に電力を与える別々に制御可能な電力供給を使用し、その結果、アレイグループ250−1を構成する記憶媒体106がパワーオンのままであることができる間に、アレイグループ250−2を構成する記憶媒体106を、エネルギを節約するために長い時間期間にわたってパワーオフできるようになっている。好ましい実施形態では、アレイグループ250−2を構成する記憶媒体106を、アレイグループ250−1を構成する記憶媒体とは別々のアレイエンクロージャ内に配置することができ、これは、そのエンクロージャ全体をパワーオフすることを可能にすることができ、その結果、冷却に必要なエネルギをも節約できるようになる(しかし、本発明がそのような構成に限定されないことに留意されたい)。
[0040] バッファボリューム220とベースボリューム230との両方が、データチャンク240を格納することができる。チャンク240は、クライアントホスト110がストレージシステム100に格納を要求したデータの一部である。しかし、デデュプリケーションモジュール200は、データ書込処理中にバイトの同一のパターンを有するチャンクを整理統合するので、格納される各チャンク240は、少なくともめいめいのボリューム(すなわち、バッファボリューム220またはベースボリューム230)内で、一意の内容を有する。好ましい実施形態では、チャンクは、複数のストレージブロック260からなり、各チャンクは、同一個数のブロックから構成される。1つのチャンク内のブロック260の最大個数は制限されているが、1つのチャンク内のブロックのすべてにデータを充填する必要はない。
[0041] ベースボリューム230は、クライアントホストから格納するよう要求されたチャンクを、ボリュームの開始からある時点まで保持する。本発明によれば、ベースボリューム230は、エネルギを節約するためにほとんどの時間にオフにされる(すなわち、ベースボリューム230を構成する記憶媒体がオフにされる)。ベースボリューム230がパワーオフされる時間中には、バッファボリューム220が、仮想ボリューム210への格納を最近に要求されたすべてのチャンクを一時的に格納する。クライアントホストの観点からは、バッファボリュームとベースボリュームとの両方が、仮想ボリューム210によってカプセル化され、クライアントホストは、仮想ボリューム210を、ストレージシステム100に存在する単一の通常のストレージボリューム(すなわち、論理ユニット)があるかのように見る。したがって、クライアントホスト110は、仮想ボリューム110にデータを書き込み、仮想ボリューム110からデータを読み取り、ストレージシステムのコントローラ101は、バッファボリューム220およびベースボリューム230を管理して、クライアントホストからの要求に応答すると同時に、本発明によるエネルギ節約およびデータデデュプリケーションをも実行する。
[0042] コントローラ上のソフトウェア
[0043] ストレージコントローラ101は、デデュプリケーションモジュール200を含み、デデュプリケーションモジュール200は、クライアントホスト110にデデュプリケーションサービスを提供し、ベースボリューム230への電力供給をも制御する、本発明によるソフトウェアプログラムである。デデュプリケーションモジュール200および本発明の他のソフトウェアは、CPU 102による実行のために、メモリ103などのコンピュータ可読媒体に格納される。デデュプリケーションモジュール200は、クライアントホストによって仮想ボリューム210に向けられる読取要求および書込要求を受け入れる。データ書込要求が受け取られる時に、デデュプリケーションモジュール200は、書込データを1つまたは複数のチャンク24に分解し、これらのチャンクをバッファボリューム220に既に格納されているすべてのチャンク240と比較する。既存のチャンクとの一致が見つからない場合には、そのチャンクは、新しいデータパターンであり、デデュプリケーションモジュール200は、その新しいチャンクをバッファボリューム220に格納する。データ読取要求が受け取られる時に、デデュプリケーションモジュール200は、バッファボリューム220またはベースボリューム230から、要求されたデータを構成するチャンクを集め、集められたチャンクを一緒に正しい順序で単一のデータストリームとして連結し、要求されたデータをクライアントホストに返す。ストレージ管理者が、ストレージシステムにフラッシュコマンドを送る時に、デデュプリケーションモジュール200は、ベースボリューム230の電力をオンにし、デデュプリケーション処理を同時に実行することによって、バッファボリューム220に格納されたチャンクをベースボリューム230にマージする。バッファボリュームからベースボリュームへのチャンクのマージが完了した後に、デデュプリケーションモジュール200は、ベースボリュームへの電力供給をオフにし、バッファボリューム上のチャンクおよび関連するテーブルを初期化する。
[0044] やはり図2に示されているのが、本発明を実行するのに使用される複数のテーブルである。アレイグループテーブル201は、デデュプリケーションモジュール200が、あるアレイグループを構成する記憶媒体106の組を突き止めることを可能にするために、アレイグループ情報のレコードを保持する。ボリュームテーブル202は、各バッファボリュームおよびベースボリュームと各ボリュームがそこから切り分けられたアレイグループとの間の関係を示すレコードを保持する。さらに、各バッファボリュームおよび各ベースボリュームに関する情報を保持するテーブルの組、すなわち、ハッシュテーブル、ビットマップテーブル、およびマッピングテーブルがある。ハッシュテーブル203および206は、格納される新しいデータの既存チャンクとの初期比較での使用のために、チャンクごとに生成されるハッシュ値を保持する。ビットマップテーブル204および207は、各チャンクがバッファボリュームまたはベースボリューム内に実際に格納される位置(たとえば、論理ブロックアドレス)に関する情報を保持する。マッピングテーブル205および208は、仮想ボリューム上の各論理ブロックアドレス(LBA)およびバッファボリュームまたはベースボリューム内の実際のストレージ位置に関するマッピング情報を保持する。これらのテーブルのそれぞれを、下でより詳細に説明する。
[0045] 図3に、アレイグループの識別を提供する、アレイグループID 510を含むアレイグループテーブル201の例のデータ構造を示す。媒体ID 520は、アレイグループに含まれる各記憶媒体を識別する。たとえば、行591、592、および593は、アレイグループ「A1」が少なくとも部分的に記憶媒体「M1」、「M2」、および「M3」から構成されることを示すレコードを表す。テーブル201は、あるアレイグループ250を構成する記憶媒体106の組を判定するために、デデュプリケーションモジュール200によって参照される。
[0046] 図4に、ボリュームのタイプ(たとえば、ボリュームがバッファボリュームまたはベースボリュームのどちらとして使用されるか)を示すタイプ610を含む、ボリュームテーブル202の例のデータ構造を示す。ボリュームテーブル202は、ボリュームの識別を示すボリュームID 620およびボリュームが最初にそこから切り分けられたアレイグループの識別を示すアレイグループID 630をも含む。たとえば、行691は、ボリュームIDとして「V1」を有する「ベースボリューム」であり、アレイグループ「A1」から切り分けられたボリュームのレコードを示す。また、行692は、ボリュームIDとして「V2」を有し、アレイグループ「A2」から切り分けられた「バッファボリューム」のレコードを示す。テーブル202は、特にボリュームへの電力供給を制御する時にベースボリュームについて、ボリュームの起点アレイグループを判定するためにデデュプリケーションモジュール200によって参照され、電力供給をオフにすることができる記憶媒体を判定するために、アレイグループテーブル201と共に使用することができる。
[0047] 図5に、バッファボリュームハッシュテーブル203およびベースボリュームハッシュテーブル206の例のデータ構造を示す。各ハッシュテーブル203および206は、下でさらに詳細に説明するように、データ書込処理またはフラッシュ処理中にデデュプリケーションモジュール200によってめいめいのチャンクから生成されるハッシュ値を示すハッシュ値710フィールドおよびハッシュ値に関連するチャンクを識別するチャンクID 720を含む。たとえば、行791は、ハッシュ値としての「HV1」および「Ch1」のチャンクIDを有するチャンクのレコードを表す。希な場合に、同一のハッシュ値が、異なる実際のデータ内容を有するチャンクから生成される可能性がある。たとえば、「Ch2」の行792と「Ch3」の行793との両方に示されたものなどのチャンクが、同一のハッシュ値「HV2」を有して図示されている。ハッシュテーブル203および206は、クライアントホストによって格納を新たに要求されたチャンクとバッファボリュームまたはベースボリュームの既存チャンクとの間の初期比較を行う際に使用するためにデデュプリケーションモジュールによって更新され、参照される。
[0048] 図6に、チャンクを識別するチャンクIDフィールド810を含むビットマップテーブル204および207の例のデータ構造を示す。このデータ構造には、チャンクの開始アドレスのボリューム上のLBAを与える開始LBA 820およびチャンク内の有効なブロックの個数をリストするブロック数フィールド830も含まれる。たとえば、行891は、チャンクIDとして「Ch1」を有し、ボリュームのLBA「0」から格納され、先頭から「32個」の有効なブロックを含むチャンクのレコードを示す。デデュプリケーション処理中に、書込要求のデータバイトは、最大個数のブロック(この例では32個のブロックと仮定する)を有するチャンクに分解される。しかし、されるデータの終りの部分が、この境界に正確におさまらない場合があり、したがって、しばしば、チャンク内に最大ブロック未満の長さがある。したがって、ブロック数830は、デデュプリケーションに関する比較処理中にデータをそこまで比較すべき終点を示す。テーブル204および207は、クライアントホストからの格納を新たに要求されたチャンクとバッファボリュームまたはベースボリューム上の既存チャンクとの間の比較中に各チャンクの内容にアクセスするためにデデュプリケーションモジュール200によって更新され、参照される。
[0049] 図7に、クライアントホストが書込データを格納することを意図した仮想ボリューム内のLBAを示すLBAフィールド910を示すマッピングテーブル205および208の例のデータ構造を示す。このデータ構造には、チャンクを識別するチャンクID 920およびターゲットブロックがボリュームに格納されるチャンク内のブロックのオフセット数を示すオフセット930も含まれる。たとえば、行991は、「100」の仮想ボリュームLBAに格納されたブロックが実際にはチャンク「Ch1」に格納され、ターゲットブロックが「0」オフセットに置かれることのレコードを表す。また、行992は、仮想ボリューム内のLBA「101」が、同一のチャンク「Ch1」にマッピングされるが、今回は「1」ブロックオフセットにあることを示す。これらのテーブルは、クライアントホストがバッファボリュームまたはベースボリュームに格納されたデータを読み取る要求を行う時に、デデュプリケーションモジュール200によって更新され、参照される。デデュプリケーションモジュールは、マッピングテーブル205および208を参照することによって、読取要求によって要求されたすべてのブロックを集める。
[0050] データをバッファボリュームに書き込む処理
[0051] 図8Aから8Cに、バッファボリューム220にデータを書き込むためにデデュプリケーションモジュール200によって実行される処理の例示的実施形態を示す。要約では、この処理は、(a)要求されたデータをチャンクサイズの片に分解し、(b)まずハッシュ値を使用することによってチャンクを比較し、(c)一致するハッシュ値が見つかった時には実際のチャンク内容と比較し、(d)内容が新しい場合には新しいチャンクを保存し、(e)仮想ボリュームLBAとバッファボリューム上の実際の位置との間でマッピングするためにマッピングテーブルを更新する。したがって、バッファボリュームにデータを書き込む例示的処理には、次のステップを含めることができる。
[0052] ステップ1500 変数「v_LBAonVVol」に、クライアントホストによってデータ書込コマンドで指定された仮想ボリューム上の最初のLBAをセットし、ここで、変数「v_LBAonVVol」は、仮想ボリューム上の現在のLBAである。この変数は、書込動作および読取動作中に使用するためにデデュプリケーションモジュール200によって維持される。
[0053] ステップ1510 データストリームをチャンクのサイズに分解する。たとえば、上で述べたように、チャンクが32個のブロックである場合に、書込データは、新しいチャンクを32ブロックおきに開始することによって分割される。しかし、本発明が、どの特定のサイズのチャンクにも限定されないことに留意されたい。
[0054] ステップ1520 ステップ1510で分解された分割されたデータ(潜在的な新しいチャンク)の1チャンクサイズの部分を処理のために選択する。新しい書込データのすべての潜在的な新しいチャンクが既に処理されている場合には、この処理は終了し、そうでない場合には、この処理はステップ1530に進む。
[0055] ステップ1530 ステップ1520で選択された潜在的な新しいチャンクからハッシュ値を生成する。使用される特定のハッシュ関数は、本発明にとって本質的ではなく、たとえばMD5など、さまざまな既知のハッシュ関数のどれであっても使用することができる。
[0056] ステップ1540 ステップ1530で生成されたハッシュ値と同一のハッシュ値(すなわち、新しいデータチャンクと同一のハッシュ値)を有するすべてのレコードをバッファハッシュテーブル203から選択する。生成されたハッシュ値と一致するレコードがない場合、またはすべてのレコードを既に処理し終えている場合には、新しいチャンクを生成し、バッファボリュームに格納する必要があり、この処理は、図8Bのステップ1570に進む。そうではなく、一致するハッシュ値が見つかる場合には、この処理は、直接比較のためにステップ1550に進む。
[0057] ステップ1550 ステップ1540で突き止められた選択されたレコード内で見つかるチャンクIDを使用することによって、バッファビットマップテーブル204からターゲットチャンク(すなわち、潜在的な新しいチャンクと比較される、既に格納されているチャンク)の開始LBAおよびブロック数を入手する。この情報は、潜在的な新しいチャンクと同一のハッシュ値を有する既に格納されているチャンクの実際のチャンク内容の場所および長さを示す。
[0058] ステップ1560 潜在的な新しいデータチャンクバイトストリームを、ステップ1550で見つかったチャンクと比較する。バイトパターンが一致する場合には、ステップ1610に進み、そうでない場合には、ステップ1540に戻る。2つのチャンクの内容を互いに直接に(すなわち、バイト対バイト、ビット対ビットなど)比較するさまざまなアルゴリズムおよび/またはハードウェアを、本発明に従って提供することができ、本発明は、直接比較を実行するどの特定の方法または装置にも限定されない。直接比較が、2つのチャンクの内容の間の一致を判定する場合に、これは、バッファボリュームに以前に格納されたチャンクを共用できることと、新しいチャンクを、検査されている分割されたデータの部分(潜在的な新しいチャンク)について作成し、格納する必要がないこととを意味する。したがって、この処理は、この場合に、検査されている分割されたデータの部分(潜在的な新しいチャンク)について、仮想ボリュームLBAから既存チャンクへのマッピング情報を作成するだけでよい。
[0059] ステップ1570 ステップ1540で、新しいチャンクを作成する必要があると判定されたときには、この処理は、図8Bに示されているように、新しいチャンクを追加する。したがって、ステップ1570で、この処理は、新しいチャンクのチャンクID(または、デデュプリケーションモジュールが新しいチャンクの任意の一意のIDを作成することができる)およびバッファボリューム内の開始LBAと共に空のチャンク(未使用チャンク)を入手する。めいめいのチャンクへのボリューム容量の提供は、さまざまな方法によって実行することができる。たとえば、バッファボリュームが当初に割り振られる時に、容量全体のうちの一部またはすべてを、チャンクの最大ブロック数サイズに従ってチャンクに事前に分割することができる。その後、各境界アドレスが、新しい空のチャンクが要求される時に、1つずつ、開始LBAとして供給される。
[0060] ステップ1580 バッファボリューム上のステップ1570で入手された開始LBAによって指定される場所に、新しいチャンクの新しいデータ内容を格納する。
[0061] ステップ1590 ステップ1530で生成されたハッシュ値およびステップ1570で入手されたチャンクIDを用いて、バッファハッシュテーブル203に新しいレコードを挿入する。
[0062] ステップ1600 ステップ1570で入手されたチャンクIDおよび開始LBAとブロック数に関する格納されたデータ内容の長さとを用いてバッファビットマップテーブル204に新しいレコードを挿入する。
[0063] 図8Cに示されているように、ステップ1630から1680は、クライアントホストによって指定された仮想ボリューム上のLBAに従って、マッピングテーブル205のレコードを作成し、または更新する。たとえば、LBA 100から131までの、仮想ボリュームLBAと、チャンクID 920およびオフセット930を使用することによるデータが実際の格納された場所との間のマッピング情報を示すレコードである。この処理は、新しいチャンクが作成された場合と、潜在的なチャンクが既存チャンクと一致する内容を有することがわかった場合との両方に使用されるので、ステップ1630から1680までは、両方の場合に使用される。
[0064] ステップ1610 潜在的な新しいチャンクが、バッファボリューム上の既存チャンクと一致する場合に、この処理は、既存チャンクのチャンクIDになるように変数「v_chunkID」をセットする。変数「v_chunkID」は、現在処理されているチャンクのチャンクIDを追跡するためにデデュプリケーションモジュール200によって維持される変数である。
[0065] ステップ1620 その一方で、新しいチャンクが既存チャンクのどれとも一致しなかった場合には、この処理は、ステップ1570で入手されたチャンクIDを変数「v_chunkID」にセットする。
[0066] ステップ1630 変数「v_Offset」を0に初期化する。変数「v_Offset」は、現在処理されているチャンクのオフセットを追跡するためにデデュプリケーションモジュール200によって維持される変数である。
[0067] ステップ1640 LBAが変数「v_LBAonVVol」(当初にステップ1500でセットされた)と一致するレコードをバッファボリュームマッピングテーブル205から選択する。レコードが既に存在する場合には、この処理は、ステップ1660にスキップして、マッピング情報を変更する。そうでない場合には、この処理は、新しいレコードを作成するために、まずステップ1650に進む。
[0068] ステップ1650「v_LBAonVVol」の値を新しいレコードの「LBA」列に置くことによって、バッファマッピングテーブルに新しいレコードを挿入する。
[0069] ステップ1660 ステップ1640で見つかったレコードまたはステップ1650で作成されたレコードのどちらについても、場合に応じてステップ1610またはステップ1620のいずれかで格納された「v_chunkID」の値として「チャンクID」920をセットし、ステップ1630で確立された「v_Offset」の値として「オフセット」をもセットする。
[0070] ステップ1670「v_LBAonVVol」の値を次のLBAブロックに増分し、「v_Offset」の値をチャンク内の次のブロックに増分する。
[0071] ステップ1680 チャンク内のすべてのブロックをマッピングし終えている場合には、この処理は、ステップ1520に戻り、新しいデータの次のチャンクを検査する。そうではなく、すべてのブロックがマッピングに関して残っている場合には、この処理は、バッファボリュームマッピングテーブル205の次のレコードを更新するためにステップ1640に戻る。
[0072] データを読み取る処理
[0073] 図9および10に、デデュプリケーションモジュール200によって実行される、バッファボリューム220またはベースボリューム230のいずれかからデータを読み取る例の処理を示す。この処理は、(a)所望のブロックが格納されているボリュームを見つけ、(b)ターゲットブロックがバッファボリューム上にある場合には、バッファボリュームから内容を読み取り、(c)そうではなく、ターゲットブロックがベースボリューム上にある場合には、この処理は、ベースボリュームを構成するストレージデバイスへの電力をオンにし、ベースボリュームから内容を読み取り、(d)読取要求によって要求されたすべてのブロックを集め、データをクライアントホストに返す。
[0074] ステップ1700 変数「v_LBAonVVol」に、クライアントホストによってデータ読取コマンドで指定された仮想ボリューム上の最初のLBAをセットする。
[0075] ステップ1710「LBA」が変数「v_LBAonVVol」と一致するレコードをバッファマッピングテーブル205から選択する。レコードが存在する場合には、これは、ターゲットブロックがバッファボリュームに格納されていることを意味し、ステップ1720で、この処理は、図10に関して下で説明するサブルーチン「特定のボリュームからブロックデータを読み取る」に進む。そうでない場合には、ターゲットブロックは、ベースボリュームに格納されており、この処理は、ステップ1730に進む。
[0076] ステップ1720 ターゲットブロックがバッファボリューム内に格納されている場合に、この処理は、サブルーチン「特定のボリュームからブロックデータを読み取る」にジャンプして、図10に示されているように、バッファボリュームから指定されたブロックを読み取るために、バッファボリュームからブロック内容を読み取る。
[0077] ステップ1730「LBA」が変数v_LBAonVVolと一致するレコードをベースマッピングテーブル208から選択する。このステップは、チャンクIDとターゲットブロックがベースボリューム内に格納されているオフセットとを見つけるためのものである(レコードが存在する場合には、ステップ1710で、バッファボリュームに関する同一の情報が見つかる)。
[0078] ステップ1740 ベースボリューム230がパワーオフされている場合には、この処理は、ベースボリュームを構成する記憶媒体106の電力をオンにする。オンにする必要がある記憶媒体106の判定は、まずベースボリュームのアレイグループIDを見つけるためにボリュームテーブル202を参照し、次に識別されたアレイグループを構成する記憶媒体106を判定するためにアレイグループテーブル201を参照することによって実行することができる。
[0079] ステップ1750 ベースボリュームがパワーオンされたならば、この処理は、ベースボリューム230からブロック内容を読み取るために、図10に示されたサブルーチン「特定のボリュームからブロックデータを読み取る」にジャンプする。
[0080] ステップ1760 変数「v_LBAonVVol」の値を次のLBAに増分する。
[0081] ステップ1770 すべてのターゲットブロックが見つかっている場合には、この処理はステップ1780に進む。そうでない場合には、この処理は、ステップ1710に戻って、読取要求の次のブロックを集める。
[0082] ステップ1780 集められたブロックを、読取要求に応答してクライアントホストに返す。
[0083] ステップ1790 ベースボリューム230が読取要求に応答するためにパワーオンされた場合には、指示を送って、ベースボリューム230を構成する記憶媒体106をオフにする。
[0084] 図10は、バッファボリュームまたはベースボリュームからデータを読み取る、図9の処理内のサブルーチンである。したがって、図10の処理は、特定のボリュームから(すなわち、バッファボリューム220またはベースボリューム230のいずれかから)ブロックデータを読み取る。バッファボリュームからブロックを読み取る場合のステップとベースボリュームからブロックを読み取る場合のステップとの間には差がないので、図10に示されたステップは、両方の場合にあてはまる。このサブルーチンが呼び出される前に、ターゲットブロックのチャンクID 920およびオフセット930を保持するマッピングテーブル205および208のレコードが、前のステップ(すなわち、ステップ1710または1730)で見つけられている。
[0085] ステップ1800 それぞれステップ1710または1730で選択されたマッピングテーブル205または208の選択されたレコードから「チャンクID」920および「オフセット」値930を入手する。
[0086] ステップ1810 ステップ1800で入手されたものと同一のチャンクIDを有するレコードをめいめいのビットマップテーブル204または207から選択する。
[0087] ステップ1820 ステップ1810でのビットマップテーブル204または207の選択されたレコードから「開始LBA」値を入手し、ステップ1800で入手された「オフセット」値を加算する。これは、特定のボリュームすなわちバッファボリュームまたはベースボリューム上のターゲットブロックのアドレスになる。
[0088] ステップ1830 オフセットを使用して判定される計算されたLBAのブロックからデータを読み取る。データは、LBAから読み取られ、好ましくは、コントローラ101のメモリ103などのキャッシュに格納されて、要求された読取データの残りと正しい順序で連結される。
[0089] バッファをフラッシュする処理
[0090] 図11Aから11Cに、デデュプリケーションモジュール200によって実行される、バッファボリューム上のバッファリングされたチャンクをフラッシュする例の処理を示す。この処理は、(1)ベースボリュームをオンにし、(2)バッファボリューム上でバッファリングされたチャンクごとに、ハッシュ値をベースボリュームに既に格納されているチャンクのハッシュ値と比較し、(3)一致が見つかる場合には、チャンクの内容を既に格納されているチャンクの実際の内容と比較し、(4)バッファボリュームからの新しいチャンクがベースボリューム上のどのチャンクとも一致しない場合には、新しいチャンクをベースボリュームに追加し、(5)ベースボリュームのマッピングテーブル208を更新し、(6)ベースボリュームをオフにし、(7)フラッシュの後にバッファボリュームおよび関連するテーブルを初期化する。
[0091] ステップ1900 ベースボリューム230を構成するのに使用される記憶媒体をオンにする。たとえば、バッファボリュームがアレイグループから作成される場合には、そのアレイグループを構成する記憶媒体が、コントローラ101によってパワーオンされる。
[0092] ステップ1910 バッファハッシュテーブル203からレコードを選択する。すべてのレコードを処理し終えた場合には、この処理はステップ2070に進み、そうでない場合には、この処理は、現在のレコードを処理するためにステップ1920に進む。
[0093] ステップ1920 ステップ1910で入手されたレコード(バッファボリュームから選択されたレコード)と同一のハッシュ値を有するすべてのレコードをベースハッシュテーブル206から検索し、選択する。ベースハッシュテーブル内のどのレコードも、バッファハッシュテーブルから選択された現在のレコードのハッシュ値と一致しない場合、または一致するすべてのレコードを処理し終えている場合には、この処理は図11Bのステップ1960に進み(すなわち、この処理は、ベースボリューム上で新しいチャンクを作成する必要がある)、そうでない場合には、この処理はステップ1930に進む。
[0094] ステップ1930 ステップ1920でベースハッシュテーブルから入手されたレコードと同一のチャンクID 810を有するレコードからのベースビットマップテーブル207から開始LBA820およびブロック数830を入手する。
[0095] ステップ1940 同一の形で、ステップ1910でバッファハッシュテーブル203から選択されたレコードと同一のチャンクID 810を有するレコードからのバッファビットマップテーブル204から開始LBA820およびブロック数830を入手する。
[0096] ステップ1950 ベースボリュームから選択されたチャンク(そのアドレスはステップ1930で判定された)およびバッファボリュームから選択されたチャンク(そのアドレスはステップ1940で判定された)の内容を比較する。上で述べたように、任意の複数の方法を、ビット対ビット比較、バイト対バイトなど、チャンクの内容の直接比較に使用することができる。2つのチャンクの内容が一致する場合には、新しいチャンクを格納する必要はなく、この処理は、マッピングテーブル208を更新するために図11Cのステップ2010に進む。そうではなく、2つのチャンクの内容が一致しない場合には、この処理は、いずれかの他の一致するハッシュ値(通常は希な発生)との比較のためにステップ1920に戻る。バッファボリュームから現在選択されているチャンクのハッシュ値と一致するハッシュ値を有するベースボリュームハッシュテーブル206内の他のレコードがない場合には、この処理は、図11Bのステップ1960に進むが、このステップを次に説明する(図11Aのステップ2070から2090までは、下で説明する)。
[0097] ステップ1960 図11Bを参照すると、この処理は、空のチャンクと、選択された空のチャンクのチャンクID(またはその代わりに、デデュプリケーションモジュールがチャンクIDとして使用される任意の一意のIDを作成することができる)およびベースボリューム上の選択された空のチャンクの開始LBAとを入手する。
[0098] ステップ1980 バッファボリュームチャンク(その開始LBAおよびブロック数はステップ1940で入手された)のデータ内容をステップ1960で入手されたベースボリュームの空のチャンクにコピーする。
[0099] ステップ1990 ステップ1910で選択された(バッファハッシュテーブル203から)バッファボリュームレコードのハッシュ値710およびステップ1960で入手されたチャンクIDを用いて、新しいレコードをベースボリュームハッシュテーブル206に挿入する。
[0100] ステップ2000 ステップ1960で入手されたチャンクIDおよび開始LBAとブロック数に関するステップ1980からの格納されたデータ内容ブロック長とを用いてベースビットマップテーブル207に新しいレコードを挿入する。その後、この処理は図11Cに進む。図11Cには、2つの場合すなわち、(a)ベースボリュームに既に格納されているチャンクと一致するチャンクがあった場合、および(b)新しいチャンクを格納しなければならない場合の、マッピングテーブルを更新する処理が示されている。
[0101] ステップ2010 選択されたバッファボリュームチャンクが、既に格納されているベースボリュームチャンクと一致する場合には、この処理は、ステップ1920で入手されたチャンクIDを変数「v_BaseChunkID」にセットする。これは、デデュプリケーションモジュール200によって維持される変数である。
[0102] ステップ2020 その一方で、バッファボリュームチャンクが、ベースボリュームに既に格納されているどのチャンクとも一致しない場合には、この処理は、ステップ1960で入手されたチャンクID(すなわち、新しい空のチャンクID)を変数「v_BaseChunkID」にセットする。
[0103] ステップ2030「チャンクID」がステップ1910で入手されたレコード(バッファハッシュテーブル203からの)と同一であるレコードをバッファマッピングテーブルから選択する。現在のチャンクのすべてのレコードが処理済みである場合には、この処理は図11Aのステップ1910に戻って、バッファボリューム上の次のチャンクを処理する。そうでない場合には、この処理は、ステップ2040に継続する。さらに、ステップ2030は、チャンク内の最大個数のブロックと同一の個数のレコードを必ず集めるわけではない。たとえば、バッファボリューム上のチャンクのバッファリング中に、LBA 100、101、および102がチャンクXにマッピングされるが、少し後に、別のチャンクYが、LBA 101、102、および103のマッピング情報を更新することによって、このマッピング情報の一部を上書きする場合がある。この場合に、LBA 100のレコードだけが、チャンクXのチャンクIDを有する。したがって、ステップ2030の結果が、可能な最大値より少ない個数のレコードになる場合がある。これが重要なのは、ステップ2060で、下で説明するように、ベースボリュームの有効なマッピング情報だけが更新されるからである。
[0104] ステップ2040「LBA」がステップ2030で選択されたレコードと同一であるレコードをベースマッピングテーブル208から検索する。レコードが既に存在する場合には、この処理はステップ2060に進んで、突き止められたLBAのマッピング情報を変更する。そうではなく、レコードがまだ存在しない場合には、この処理は、新しいレコードを作成するためにステップ2050に進む。
[0105] ステップ2050 ステップ2030で選択されたレコードの「LBA」値を追加することによって、ベースマッピングテーブル208に新しいレコードを挿入する。
[0106] ステップ2060 ステップ2040で見つかったレコードまたはステップ2050で作成されたレコードのいずれかについて、この処理は、場合に応じてステップ2010またはステップ2020のいずれかで格納された「v_BaseChunkID」の値になるように「チャンクID」をセットし、また、ステップ2030で選択されたレコードの値(すなわち、そのレコードのバッファマッピングテーブル205に格納された値)になるように「オフセット」をセットする。2060の完了に続いて、この処理は、選択されたレコードと同一のチャンクIDを有するバッファマッピングテーブル205からのさらなるレコードの処理のためにステップ2030に戻る。レコードがもうないときには、この処理は、図11Aのステップ2070から2090に戻る。
[0107] ステップ2070 この処理は、コントローラに、ベースボリュームに関連する記憶媒体をオフにするように指示する。
[0108] ステップ2080 バッファボリュームを初期サイズに縮小する。好ましい実施形態では、縮小可能なボリュームが、本発明のバッファボリューム220に使用される。たとえば、その開示が参照によって本明細書に組み込まれている2004年2月23日出願のKano他の米国特許出願公告第2004/0162958号、名称「Automated On−Line Capacity Expansion Method for Storage Device」で教示されているように、使用時割振り(allocation−on−use)テクノロジを使用して、バッファボリュームのサイズを管理することができる。バッファリングされたチャンクのすべてが、フラッシュ動作中にベースボリュームの容量にマージされるので、バッファボリューム220の容量を、適切な最小限の初期容量に大幅に減らすことができる。
[0109] ステップ2090 バッファボリューム上の対応するチャンクのすべてが、ベースボリューム230にマージされているので、バッファハッシュテーブル203、バッファビットマップテーブル204、およびバッファマッピングテーブル205上のレコードを削除する。
[0110] 第2実施形態
[0111] 上で示した第1実施形態では、バッファボリュームからバッファリングされたチャンクをフラッシュする処理は、ストレージ管理者の判断によって、あるいは所定の時間期間の経過、バッファボリュームが所定のサイズ限度に達すること、または他のそのようなイベントなどのある他のトリガするイベントによって明示的にトリガされる。下で説明する第2実施形態では、バッファボリュームは、ベースボリュームからデータを読み取る処理が開始される時に必ず自動的にフラッシュされ、この読取は、ある種のストレージシステム環境では非常に頻繁には発生しない可能性がある。ベースボリュームに対するデータ読取動作が行われる時に、ストレージコントローラは、ベースボリュームをオンにする必要がある。ディスクドライイブのスピンアップは、その間にそれに比例して最大量の電力が必要になる時間なので、ディスクアレイをオンにし、オフにすることを繰り返さないことが望ましい。したがって、これは、バッファボリュームフラッシュ処理を実行するのに効率的な時でもある。というのは、エネルギが、システムパワーアップで既に消費されているからである。構成要素および挙動のほとんどは、第1実施形態で説明したものと同一である。したがって、下では相違を説明する。
[0112] データ読取と共にバッファをフラッシュする処理
[0113] 図12に、デデュプリケーションモジュール200によって実行される、データ読取処理と共にバッファリングされたチャンクをフラッシュする処理の例を示す。処理のほとんど(すなわち、ステップ1700から1780まで)は、第1実施形態の図9に示されたものと同一であるが、最後の部分は、フラッシュ処理を呼び出すためにわずかに変更されている。フラッシュ処理自体は、ステップ2110で実行されるが、第1実施形態で図11Aから11Cに示した処理と異ならない。したがって、フラッシュ処理を呼び出すべき時だけが、図12に示された処理に示されている。
[0114] ステップ2100 ステップ1780で集められたブロックを読取要求に応答して返した後に、この処理は、ベースボリュームがパワーオンされているかどうかを判定する。ベースボリュームがパワーオンされている(すなわち、いくつかのデータがベースボリュームから読み取られた)場合には、この処理は、ステップ2110に進んでバッファをフラッシュする。そうではなく、ベースボリュームが、読取要求に応答してパワーオンされてはいない場合には、この処理は終了する。
[0115] ステップ2110 バッファボリューム上のすべてのバッファリングされたチャンクのフラッシュは、第1実施形態で図11A〜11Cに関して上で説明したように行われる。
[0116] ステップ2120 フラッシュ処理の完了の後に、この処理は、コントローラに、ベースボリュームを構成するのに使用される記憶媒体をオフにするように指示する。
[0117] 第3実施形態
[0118] 第3実施形態では、図13に示されているように、それぞれ別々のアレイグループ250−1、250−2…250−N上に、複数のベースボリューム230−1、230−2…230−Nが設けられる。これらの実施形態は、たとえば、格納されるチャンクの個数がますます多くなり、その結果、複数のベースボリュームが、膨大な量の格納されるチャンクを処理するのに必要になる可能性がある情況で適用可能とすることができる。ベースボリュームが非常に大きく、多数のストレージデバイスを必要とする情況では、新しいチャンクコピーがその代わりに比例して少数の記憶媒体を有し、したがってより少ないエネルギ使用量を有する、複数のベースボリュームのうちの1つだけに対して実行できる場合に、フラッシュ処理および/または読取処理中にベースボリュームをオンにすることは、電力効率がよくはない。したがって、第3実施形態では、特定の時にバッファリングされたチャンクのコピーのターゲットになる特定のベースボリュームだけをオンにし、残りのベースボリュームをオフにされたままにする方法の例を説明する。構成要素および挙動のほとんどは、第1実施形態で説明したものと同一である。したがって、下では相違を説明する。
[0119] 論理要素の構造
[0120] 図13に、第3実施形態のソフトウェアおよび論理要素の構造を示す。第3実施形態では、大量のチャンクのストレージを処理するために複数のベースボリューム230−1…230−Nがある。各ベースボリュームは、それぞれ別々のアレイグループ250−1…250−Nに属さなければならず、これは、各ベースボリュームへの電力供給を独立に制御できるようにするために、記憶媒体106の別々の組がベースボリュームごとに使用されることを意味する。さらに、バッファボリュームは、第1実施形態と同様に、別々のアレイグループ250−0上でも構成される。他の実施形態では複数のバッファボリューム220を設けることもできるが、1つのバッファボリューム220だけが、図示の実施形態に十分であると仮定する。フラッシュ処理中に、バッファボリューム220上のチャンクが、ベースボリューム230のうちの、通常はすべてではなく、1つまたはいくつかにマージされる。デデュプリケーションモジュール200によって使用されるコントローラ101上のテーブルに関して、異なるボリュームテーブル290が設けられ、ベースハッシュテーブル、ベースビットマップテーブル、およびベースマッピングテーブルの複数の組は、めいめいのベースボリュームについて必要ではない。そうではなく、変更されたベースハッシュテーブル293およびベースビットマップテーブル292が、すべてのベースボリューム230の統合された情報を保持する。第1実施形態のベースマッピングテーブル208を、本実施形態で使用することができる。
[0121] データ構造
[0122] 図14に、第3実施形態のボリュームテーブル290の例のデータ構造を示す。すべての列610、620、および630が、第1実施形態で図4に関して上で説明したものと同一の意味を有する。しかし、この実施形態では、ベースボリュームの複数のレコードがある。たとえば、行2292は、ベースボリューム「V1」のレコードであり、それと同時に、テーブル290には、レコード2293に示されているように、ベースボリューム「V2」など、システム内に存在する他のベースボリュームがあることが示されている。
[0123] 図15に、この実施形態のバッファボリュームハッシュテーブル291およびベースボリュームハッシュテーブル293の例のデータ構造を示す。バッファハッシュテーブル291とベースハッシュテーブル293との両方が、同一のデータ構造を有し、したがって単一の図に示されている。しかし、新たに追加された列であるベースボリュームID 2330の使用法は、これらの間で異なるが、他の列710および720は、第1実施形態で図5を参照して上で説明したものと同一の意味を有する。
[0124] バッファハッシュテーブル291は、このレコードのバッファボリュームチャンクと同一のハッシュ値710を有するチャンクを格納するベースボリュームを識別するのにベースボリュームID列2230を使用する。この情報は、フラッシュ処理中に、パワーオンすべきベースボリュームを選択するのに使用される。というのは、バッファリングされたチャンクとの比較に使用されるベースボリューム230だけがオンにされ、残りのベースボリュームは、この実施形態ではオフにされたままに保たれるからである。ベースボリュームIDは、バッファリングされたチャンクのハッシュ値が既にベースハッシュテーブルに格納されている場合に、データをバッファボリュームに書き込むデータ書込処理中にセットされる。また、新しいバッファボリュームチャンクのために生成されたハッシュ値が、どのベースハッシュテーブルレコードとも一致しない場合に、この値は、ベースボリュームID列2330でNULLとしてセットされる。
[0125] ベースハッシュテーブル293は、対応するチャンクが格納される特定のベースボリューム230を識別するのにベースボリュームID列2330を使用する。たとえば、行2391は、ハッシュ値710としての「HV1」および「Ch1」のチャンクID 720を有する、ベースボリュームに格納されたチャンクのレコードを表すが、このチャンクはベースボリューム「BV1」に格納される。さらに、異なるベースボリューム230上の複数のチャンクが、いくつかの場合に同一のハッシュ値を有することができることに留意されたい。たとえば、行2392および2393は、これらの両方が同一のハッシュ値「H2」およびバッファリングされたチャンクIDを有するが、そのベースボリュームIDは、可能な一致するチャンクが存在する場合に、ベースボリュームID「BV3」および「BV5」として異なることを示す。また、「ベースボリュームID」列に「NULL」値を有することは、バッファハッシュテーブル291に固有の事例なので、これは図15には示されていない。
[0126] 図16に、この実施形態のベースボリュームビットマップテーブル292の例のデータ構造を示す。チャンクID 810およびブロック数830の列は、第1実施形態で上で説明したものと同一の意味を有する。さらに、バッファビットマップテーブル204のデータ構造は、第1実施形態で示されたものからの相違を有しない。図16では、ベースビットマップテーブル292は、識別されたチャンクが格納されているベースボリュームの識別をもたらすベースボリュームID列2410を含む。開始LBA列2420は、特定のベースボリューム上の識別されたチャンクの開始アドレスを示す。たとえば、行2491は、チャンクID 810として「Ch1」を有するチャンクのレコードを表し、このチャンクは、ベースボリューム「BV1」のLBA「0」から開始して格納され、ブロックの有効な個数は、先頭から「32」個のブロックである。その一方で、行2493は、やはり「0」から始まる「開始LBA」を有するが、これは、ベースボリューム「BV3」に関する。
[0127] データをバッファボリュームに書き込む処理
[0128] 図17に、デデュプリケーションモジュール200によって実行される、バッファボリューム220にデータを書き込む例の処理を示す。この処理のほとんどは、第1実施形態の図8A、8B、および8Cで示したものと同一のステップを使用する。したがって、新しいデータがバッファボリューム上の空のチャンクに格納された後に新しいチャンクを追加する部分の間など、異なる部分だけを説明すればよい。
[0129] ステップ1500〜1580は、図8Aおよび8Bに関して上で説明したものと同一である。したがって、空のチャンクが入手されており、書込データの内容が、バッファボリューム220上の空のチャンクに格納される。
[0130] ステップ2500 この処理は、図8Aのステップ1530で入手されたものと同一のハッシュ値(すなわち、現在検査されている新しい書込データから生成されたハッシュ値)を有するレコードをベースハッシュテーブル293から検索する。一致するハッシュ値を有するレコードが見つからない場合には、この処理はステップ2530に進む。そうではなく、一致するハッシュ値が見つかる場合には、この処理はステップ2510に進む。
[0131] ステップ2510 ステップ1530で生成されたハッシュ値、ステップ1570で入手されたチャンクID、およびステップ2500で選択されたレコードから入手されたベースボリュームIDを使用して、新しいレコードをバッファハッシュテーブル291に挿入する。
[0132] ステップ2520 ステップ2500で突き止められたすべてのレコードを処理し終えた場合には、この処理は1600に進む。そうではなく、ハッシュ値と一致するベースボリュームハッシュテーブル内の別のレコードがある場合には、この処理は、ステップ2500に戻って、残りのレコードを処理する。
[0133] ステップ2530 一致するレコードが、ステップ2500でハッシュ値に関して突き止められない場合に、この処理は、ステップ2530に進んで、ステップ1530で生成されたハッシュ値、ステップ1570で入手されたチャンクIDについて、ベースボリュームIDに「NULL」を使用して(これによって、同一のハッシュ値を有する対応するチャンクがどのベースボリュームにも以前に格納されていないことを示す)バッファハッシュテーブル291に新しいレコードを挿入する。
[0134] ステップ2520またはステップ2530の完了の後に、この処理は、上で第1実施形態で説明した、バッファビットマップテーブル204に新しいレコードを挿入するステップ1600に進み、この処理の残りは、上で図8Cで説明した通りである。
[0135] データを読み取る処理
[0136] 図18および19に、デデュプリケーションモジュール200によって実行される、バッファボリューム220またはベースボリューム230のうちの1つのいずれかからデータを読み取る処理の例を示す。ステップのほとんどは、上で図9および10に関して説明したものと同一である。
[0137] ステップ1700 変数「v_LBAonVVol」に、クライアントホストによってデータ読取コマンドで指定された仮想ボリューム上の最初のLBAをセットする。
[0138] ステップ1710「LBA」が変数「v_LBAonVVol」と一致するレコードをバッファマッピングテーブル205から選択する。レコードが存在する場合には、これは、ターゲットブロックがバッファボリュームに格納されていることを意味し、ステップ1720で、この処理は、図10に関して上で説明したサブルーチン「特定のボリュームからブロックデータを読み取る」に進む。そうでない場合には、ターゲットブロックは、ベースボリュームに格納されており、この処理は、ステップ2600に進む。
[0139] ステップ1720 ターゲットブロックがバッファボリューム内に格納されている場合に、この処理は、サブルーチン「バッファボリュームからブロックデータを読み取る」にジャンプして、バッファボリュームからブロック内容を読み取る。このサブルーチンは、図10に示され、バッファボリュームからの指定されたブロックの読取についてその図に関して上で説明したものと同一である。
[0140] ステップ2600 ターゲットブロックがベースボリューム230のうちの1つに格納されている場合には、この処理は、「LBA」が変数「v_LBAonVVol」と一致するレコードをベースマッピングテーブル208から選択する。このステップは、ターゲットブロックがベースボリューム内に格納されているチャンクIDおよびオフセットを見つけるためのものである。
[0141] ステップ2610「チャンクID」810がステップ2600で見つかった値と同一であるレコードの「ベースボリュームID」をベースビットマップテーブル292から選択する。
[0142] ステップ2620 記憶媒体が、ステップ2610で突き止められた「ベースボリュームID」によって識別される特定のベースボリューム230についてパワーオフされている場合に、これらの記憶媒体をオンにするために指示をコントローラ101に送る。オンにする必要がある記憶媒体を判定するために、この処理は、まずその特定のベースボリュームの特定のアレイグループIDを見つけるためにボリュームテーブル290を参照し、この処理は、次にアレイグループテーブル201からその特定のアレイグループを構成する記憶媒体を見つける。
[0143] ステップ2630 図19に示されたサブルーチン「ベースボリュームからブロックデータを読み取る」にジャンプして、ベースボリュームからブロック内容を読み取る。このサブルーチンは、図19に関して下で詳細に説明する。
[0144] ステップ1760 変数「v_LBAonVVol」の値を次のLBAに増分する。
[0145] ステップ1770 すべてのターゲットブロックが見つかっている場合には、この処理はステップ1780に進む。そうでない場合には、この処理は、ステップ1710に戻って、読取要求の次のブロックを集める。
[0146] ステップ1780 集められたブロックを、読取要求に応答してクライアントホストに返す。
[0147] ステップ1790 ベースボリューム230のいずれかが読取要求に応答するためにパワーオンされた場合には、指示を送って、パワーオンされたベースボリューム230を構成する記憶媒体106をオフにする。この実施形態では、複数のベースボリュームのうちの1つまたは一部だけがオンにされる場合がある。
[0148] 図19は、ベースボリュームの1つからデータを読み取る、上で説明した処理内のステップ2630中に実行されるサブルーチンである。ステップ1800〜1820は、図10に示され、第1実施形態に関して上で説明したものと同一である。したがって、最後のステップすなわちステップ2700だけが異なる。
[0149] ステップ2700 この処理が、開始LBAを判定し、オフセットを加算して、特定のベースボリュームの実際のLBAを入手されたならば、この処理は、図18のステップ2610で見つかった特定のベースボリュームからステップ1820で計算されたLBAのブロックからデータを読み取る。
[0150] バッファをフラッシュする処理
[0151] 図20Aから20Dに、デデュプリケーションモジュール200によって実行される、第3実施形態でバッファリングされたチャンクをバッファボリュームからフラッシュする処理の例を示す。第3実施形態では、ベースボリュームをオンにする処理が、第1実施形態と異なる。というのは、バッファリングされたチャンクと比較される必要があるチャンクを有する特定のベースボリュームだけをオンにする必要があるからである。上で述べたように、バッファボリュームのフラッシュは、管理者指示の結果として、あるいは、所定の時間期間の経過またはバッファボリュームの容量が所定の量を超えることなど、ある他のトリガイベントの際に行うことができる。
[0152] ステップ2800 図20Aを参照すると、この処理は、バッファハッシュテーブル291から「ベースボリュームID」を選択する。これは、この処理が、一致するチャンクを有する候補としてマークされたベースボリュームがあることを示すレコードを選択することを意味する。候補ベースボリュームがパワーオンされている場合には、この処理はステップ2820に進む。そうでない場合には、この処理はステップ2810に進んで、バッファハッシュテーブル291にリストされた候補ベースボリュームをパワーオンする。
[0153] ステップ2810 ステップ2800で選択されたレコードの「ベースボリュームID」によって指定されるベースボリュームがパワーオフされている場合には、指示をコントローラ101に送って、その候補ベースボリュームをオンにする。
[0154] さらに、バッファハッシュテーブル291の1つまたは複数のエントリが「NULL」である場合、または直接データ比較が、チャンクがまだどのベースボリュームにも格納されていないことを示す場合に、これは、1つまたは複数の新しいチャンクをベースボリュームに保存する必要があることを意味し、適切なベースボリュームを選択しなければならない。この例では、ベースボリュームがほぼ同一のサイズを有すると仮定して、最も利用されていないベースボリュームが、新しいチャンクを格納するために選択される(すなわち、最小量のデータが現在格納されているベースボリューム)。他の実施形態では、ベースボリュームが総容量においてかなり異なるときなど、最大の残り容量を有するベースボリュームを選択することができる。代替メトリックスを使用して、新しいチャンクの格納に使用すべきベースボリュームを決定することもできる。ステップ2820から2840は、最低の利用度を有するベースボリュームを突き止めることを対象とする。
[0155] ステップ2820 タイプ610が「ベース」であるレコードの「ボリュームID」をボリュームテーブルから選択する。ボリュームテーブル290内のすべてのベースボリュームの利用度が既に検査済みである場合には、この処理は、ステップ2850に進み、そうでない場合には、この処理はステップ2830に進む。
[0156] ステップ2830 選択されたベースボリュームの使用済みサイズを入手する。ボリュームに既に格納されているデータの量を入手する能力は、従来からほとんどのストレージシステムに備わっている能力である。
[0157] ステップ2840 ステップ2830で見つけたサイズが、これまでで最小のサイズである場合には、この処理は、新しいチャンクを格納する候補としてそのベースボリュームIDを保持する。
[0158] ステップ2850 ステップ2840で最終的に選択されたベースボリュームが、パワーオンされていない場合には、この処理は、指示を送ってこのベースボリュームをオンにし、そのボリュームIDを変数「v_LowUsageVol」にセットするが、この変数は、デデュプリケーションモジュール200によって維持される変数である。「ハッシュ値を用いて比較する」および「チャンクを用いて比較する」の間のステップ1910、1920、1940、および2070〜2090は、上で図11Aを参照して第1実施形態で説明したものと同一である。したがって、異なるステップすなわち、ステップ2900および2910だけを、下で説明する。この実施形態では、チャンク内容の比較のために実行される処理中のターゲットとして特定のベースボリュームを選択することが必要である。
[0159] ステップ2900 ステップ1920で入手されたレコードと同一のチャンクIDを有するレコードのベースビットマップテーブル292から、開始LBA 2420、ブロック数830、およびベースボリュームID 2410をも入手する。
[0160] ステップ2910 バッファボリューム内のチャンクの内容を、ステップ2900で見つかったベースボリュームIDによって指定されるベースボリューム上のチャンクの内容と比較する。内容が一致する場合には、マッピングテーブル208を更新するためにステップ2010に進む。そうではなく、内容が一致しない場合には、この処理は、ステップ1920に戻って、次のレコードと比較する。このチャンクと比較するレコードがもうない場合には、この処理は、ステップ3000に進んで新しいチャンクを追加する。ベースボリュームに新しいチャンクを追加するステップ中に、この実施形態は、この例では、上のステップ2820から2840で選択された最低利用度ボリュームを使用する。
[0161] ステップ3000 ステップ2850で突き止められ、セットされた変数「v_LowUsageVol」によって指定されるベースボリュームから、空のチャンク、チャンクID(または、デデュプリケーションモジュールが空のチャンクの任意の一意のIDを作成することができる)、およびその開始LBAを入手する。
[0162] ステップ1980 バッファボリュームチャンク(その開始LBAおよびブロック数はステップ1940で入手された)のデータ内容をステップ3000で入手されたベースボリュームの空のチャンクにコピーする。
[0163] ステップ3010 ステップ1910で選択された(バッファハッシュテーブル203から)レコードのハッシュ値およびステップ3000で入手されたチャンクIDと、変数「v_LowUsageVol」からのベースボリュームIDをも用いて、新しいレコードをベースハッシュテーブル293に挿入する。
[0164] ステップ3020 ステップ3000で入手されたチャンクIDおよび開始LBAとブロック数に関するステップ1980から入手された格納されたデータ内容長と変数「v_LowUsageVol」からのベースボリュームIDとを用いてベースビットマップテーブル292に新しいレコードを挿入する。
[0165] 最後に、ベースマッピングテーブル208を更新するステップ中に、下で説明するステップ3100を除いて、ステップ2010および2030〜2060は、上で図11Cを参照して第1実施形態で説明したものと同一である。
[0166] ステップ3100 ステップ2910でのチャンク内容の比較が一致しなかった場合には、この処理は、上のステップ3000で入手されたチャンクIDを変数「v_BasechunkID」にセットする。
[0167] ベースボリュームのうちの1つに対する読取要求中が、第3実施形態では必ずしもフラッシュ処理を行うのに効率的な時ではないことに留意されたい。というのは、ベースボリュームのうちの1つだけがそのような要求に応答してオンにされ、他のベースボリュームがパワーオフされたままである場合があるからである。しかし、上で第3実施形態に関して示した処理の代替案では、フラッシュ処理を、オンにされているベースボリューム内のチャンクだけと比較される必要があるバッファボリューム内のチャンクだけに適用することができる。バッファボリューム内のチャンクが新しいチャンクである場合に、その新しいチャンクを、オンにされているベースボリュームに格納することができ、あるいは、別のベースボリュームが次にオンにされる時にその別のベースボリュームに格納するためにマークすることができる。
[0168] したがって、本発明が、データデデュプリケーションの機能性を有するストレージシステム上で使用されることがわかる。ベースボリュームすなわちベースボリュームの基礎になる記憶媒体に関する電力供給が、常態ではオフにされる。したがって、ある種のストレージ環境では、ストレージシステム内のストレージデバイスの大多数が、通常は電力を消費していなくなる。
[0169] 本発明は、ストレージ位置が、格納されるデータの実際の内容に関連する、ある形のcontents−addressed storage(CAS)を使用するストレージシステムに組み込まれる時に、特に有用である可能性がある。関連技術に、その開示全体が参照によって本明細書に組み込まれている、Carpentier他の米国特許第6807632号、名称「Content Addressable Information Encapsulation,Representation,and Transfer」が含まれる。
[0170] 前述から、本発明が、格納されるデータの量を減らすと同時に電力消費も減らす方法および装置を提供することは明白である。さらに、特定の実施形態を本明細書で図示し、説明したが、当業者は、同一の目的を達成するように計画された任意の配置によって、開示された特定の実施形態を置換できることを了解する。本開示は、本発明のすべての適合または変形形態を含むことが意図されており、上の説明が、制限的な形ではなく例示的な形で行われたことを理解されたい。したがって、本発明の範囲は、添付の特許請求の範囲を参照して、そのような特許請求の範囲が権利を与えられる同等物の範囲全体と共に正しく決定されなければならない。
[0008]本発明の方法および装置を適用できるハードウェア構成の例を示す図である。 [0009]図1のアーキテクチャに適用される本発明の論理構成の例を示す図である。 [0010]アレイグループテーブルの例示的なデータ構造を示す図である。 [0011]ボリュームテーブルの例示的なデータ構造を示す図である。 [0012]ハッシュテーブルの例示的なデータ構造を示す図である。 [0013]ビットマップテーブルの例示的なデータ構造を示す図である。 [0014]マッピングテーブルの例示的なデータ構造を示す図である。 [0015]バッファボリュームにデータを書き込む処理を示す図である。 バッファボリュームにデータを書き込む処理を示す図である。 バッファボリュームにデータを書き込む処理を示す図である。 [0016]本発明に従ってデータを読み取る処理を示す図である。 [0017]特定のボリュームからブロックデータを読み取る処理を示す図である。 [0018]バッファボリュームをベースボリュームにフラッシュする処理を示す図である。 バッファボリュームをベースボリュームにフラッシュする処理を示す図である。 バッファボリュームをベースボリュームにフラッシュする処理を示す図である。 [0019]データ読取処理中にバッファボリュームをベースボリュームにフラッシュする処理を含む、本発明の第2実施形態を示す図である。 [0020]第3実施形態での本発明の論理構成を示す図である。 [0021]本発明の第3実施形態のボリュームテーブルの例示的データ構造を示す図である。 [0022]第3実施形態のハッシュテーブルの例示的データ構造を示す図である。 [0023]第3実施形態のベースビットマップテーブルの例示的データ構造を示す図である。 [0024]第3実施形態でバッファボリュームにデータを書き込む処理を示す図である。 [0025]第3実施形態でデータを読み取る処理を示す図である。 [0026]第3実施形態でベースボリュームからブロックデータを読み取る処理を示す図である。 [0027]第3実施形態でバッファボリュームをベースボリュームにフラッシュする処理を示す図である。 第3実施形態でバッファボリュームをベースボリュームにフラッシュする処理を示す図である。 第3実施形態でバッファボリュームをベースボリュームにフラッシュする処理を示す図である。 第3実施形態でバッファボリュームをベースボリュームにフラッシュする処理を示す図である。

Claims (20)

  1. 1つまたは複数の第1記憶媒体および1つまたは複数の第2記憶媒体と通信するコントローラと、
    前記1つまたは複数の第1記憶媒体から割り振られた記憶容量を有する第1ボリュームと、
    前記1つまたは複数の第2記憶媒体から割り振られた記憶容量を有する第2ボリュームと
    を含み、
    当初に、前記1つまたは複数の第1記憶媒体は、パワーオン状態で構成され、前記1つまたは複数の第2記憶媒体は、パワーオフ状態で構成され、
    前記コントローラによって受け取られた書込データは、前記第1ボリュームに格納され、
    前記1つまたは複数の第2記憶媒体がパワーオン状態で構成されている間に、フラッシュ処理は、実行され、これによって、前記第1ボリュームに格納された前記書込データの内容は、前記第2ボリュームに格納されたすべての既存データの内容と比較され、
    前記比較の結果が、前記書込データの前記内容が前記既存データの前記内容と一致しないことを示す時に、前記書込データは、前記第2ボリュームに格納される
    ストレージシステム。
  2. 前記比較の前記結果が、前記書込データの前記内容が前記既存データの前記内容と一致することを示す時に、前記書込データの論理ブロックアドレスを前記既存データにリンクするレコードは、格納され、前記書込データは、破棄される
    請求項1に記載のストレージシステム。
  3. 前記内容が一致しない時の前記書込データの前記第2ボリュームへの格納または前記内容が一致する時の前記レコードの格納の後に、前記1つまたは複数の第2記憶媒体は、パワーオフされ、前記書込データは、前記第1ボリュームから削除される
    請求項2に記載のストレージシステム。
  4. ホストコンピュータからのターゲットとして前記書込データを受け取る前記コントローラによって提示される仮想ボリュームであって、前記仮想ボリュームをターゲットとする前記書込データは、当初に前記第1ボリュームに格納される、仮想ボリューム
    をさらに含む、請求項1に記載のストレージシステム。
  5. 第1ハッシュ値は、前記書込データの前記内容について計算され、前記比較中に、前記第1ハッシュ値は、前記既存データとの前記書込データの前記内容の直接比較を行わなければならないかどうかを判定するために、前記第2ボリュームに格納されたすべての既存データの内容について計算された第2ハッシュ値と比較される
    請求項1に記載のストレージシステム。
  6. 前記第1ボリュームに格納されるデータは、所定のサイズのチャンクとして格納され、
    前記第2ボリュームに格納されるデータは、前記所定のサイズのチャンクとして格納され、
    前記コントローラによって受け取られた前記書込データは、分割された部分に分割され、各分割された部分の内容は、前記第1ボリュームに既に格納されているすべての既存チャンクと比較され、
    各分割された部分について、前記分割された部分の前記比較の結果が、前記分割された部分の前記内容が前記第1ボリューム上の前記既存チャンクの内容と一致しないことを示す時に、前記分割された部分は、新しいチャンクとして前記第1ボリュームに格納され、
    前記分割された部分の前記比較の前記結果が、前記分割された部分の前記内容が前記第1ボリューム上の前記既存チャンクの1つの内容と一致することを示す時に、前記分割された部分の論理ブロックアドレスを前記第1ボリューム上の前記既存チャンクにリンクするレコードは、格納され、前記分割された部分は、破棄される
    請求項1に記載のストレージシステム。
  7. 第1ハッシュ値は、各前記分割された部分の前記内容について計算され、前記分割された部分の前記比較中に、前記第1ハッシュ値は、前記既存データとの前記書込データの前記内容の直接比較を行わなければならないかどうかを判定するために、前記第1ボリュームに格納されたすべての既存データの内容について計算された第2ハッシュ値と比較される
    請求項6に記載のストレージシステム。
  8. 前記1つまたは複数の第2記憶媒体は、前記ストレージコントローラによって受け取られた読取要求に応答してパワーオンされ、前記フラッシュ処理は、開始され、前記比較は、前記読取要求の完了に続いて行われる
    請求項1に記載のストレージシステム。
  9. 前記フラッシュ処理は、管理者からの指示、前記第1ボリュームが所定の容量に達すること、または所定の時間期間の経過のうちの1つを含むトリガするイベントによって開始され、
    前記1つまたは複数の第2記憶媒体は、前記比較を実行できるようにするために、前記フラッシュ処理の開始に応答してパワーオンされる
    請求項1に記載のストレージシステム。
  10. 複数の前記第1記憶媒体があり、前記第1記憶媒体は、第1アレイグループに構成され、前記第1ボリュームは、前記第1アレイグループから割り振られた記憶容量を有し、
    複数の前記第2記憶媒体があり、前記第2記憶媒体は、第2アレイグループに構成され、前記第2ボリュームは、前記第2アレイグループから割り振られた記憶容量を有し、
    前記第2アレイグループは、前記コントローラによって、前記第1アレイグループと独立にパワーオンされ、パワーオフされるように構成される
    請求項1に記載のストレージシステム。
  11. 前記コントローラと通信する1つまたは複数の第3記憶媒体と、
    前記第3アレイグループから割り振られた記憶容量を有する第3ボリュームと
    をさらに含み、
    前記コントローラが、前記書込データについて計算された第1ハッシュ値が前記第2ボリュームまたは前記第3ボリュームのうちの1つに格納された既存データについて計算された第2ハッシュ値と同一であると判定する時に、前記コントローラは、前記既存データの前記内容を前記書込データの前記内容と比較するために、前記第2または第3のボリュームのうちで前記一致するハッシュ値を有する前記既存データが格納されているボリュームの前記記憶媒体をパワーオンすると同時に、前記第2または第3のボリュームの他方の前記記憶媒体をパワーオフされたままにする
    請求項1に記載のストレージシステム。
  12. 第1アレイグループに配置された複数の第1記憶媒体および第2アレイグループに配置された複数の第2記憶媒体に対する入出力(I/O)動作を制御するコントローラと、
    前記第1アレイグループから割り振られた記憶容量を有するバッファボリュームであって、前記バッファボリュームに格納されるデータは、所定のサイズのチャンクとして格納される、バッファボリュームと、
    前記第2アレイグループから割り振られた記憶容量を有するベースボリュームであって、前記ベースボリュームに格納されるデータは、前記所定のサイズのチャンクとして格納される、ベースボリュームと、
    前記I/O動作のターゲットとして前記コントローラによって提示される仮想ボリュームと
    を含み、
    前記第1記憶媒体は、当初にパワーオン状態であり、前記第2記憶媒体は、パワーオフ状態であり、
    前記コントローラによって受け取られた前記仮想ボリュームをターゲットとする書込データは、各分割された部分の内容を前記バッファボリュームに既に格納されているすべての既存チャンクの内容と比較するために前記書込データを前記所定のサイズの分割された部分に分割することと、前記分割された部分の前記内容がどの既存チャンクの前記内容とも一致しない時に前記分割された部分を新しいチャンクとして格納することとによって、当初に前記バッファボリュームに格納され、
    前記1つまたは複数の第2記憶媒体がパワーオンされている間に、前記バッファボリュームに格納されたチャンクの内容は、前記ベースボリュームに格納されたすべてのチャンクの内容と比較され、
    前記バッファボリュームの各チャンクの前記比較の結果が、前記バッファボリュームの前記チャンクの前記内容が前記ベースボリューム上の前記チャンクのいずれの前記内容とも一致しないことを示す時に、前記バッファボリュームからの前記チャンクは、前記ベースボリュームに格納される
    ストレージシステム。
  13. 前記チャンクの前記比較の前記結果が、前記バッファボリュームデータの前記チャンクの前記内容が前記ベースボリューム上のいずれかのチャンクの前記内容と一致することを示す時に、前記バッファボリューム上の前記チャンクの論理ブロックアドレスを前記ベースボリューム上の一致する既存チャンクにリンクするレコードは、格納され、前記バッファボリューム上の前記チャンクは、破棄される
    請求項12に記載のストレージシステム。
  14. 前記バッファボリューム内の前記チャンクの、前記ベースボリューム内に格納されたすべての既存チャンクの前記内容との前記比較と、前記内容が一致しない場合の前記ベースボリュームへの前記チャンクの格納または前記内容が一致する場合の前記レコードの格納との後に、前記1つまたは複数の第2記憶媒体は、パワーオフされ、前記チャンクは、前記バッファボリュームから削除される
    請求項13に記載のストレージシステム。
  15. 第1ハッシュ値は、前記バッファボリューム上の前記チャンクの前記内容について計算され、チャンクの前記比較中に、前記第1ハッシュ値は、前記ベースボリューム上の前記チャンクとの前記バッファボリューム上の前記チャンクの前記内容の直接比較を行わなければならないかどうかを判定するために、前記ベースボリュームに格納されたすべての既存チャンクの前記内容について以前に計算された第2ハッシュ値と比較される
    請求項12に記載のストレージシステム。
  16. 前記ベースボリュームは、複数のベースボリュームのうちの第1ベースボリュームであり、前記ストレージシステムは、さらに、
    第3アレイグループに配置された複数の第3記憶媒体であって、前記コントローラは、前記第3記憶媒体に対するI/O動作を制御する、複数の第3記憶媒体と、
    前記第3アレイグループから割り振られた記憶容量を有する前記複数のベースボリュームのうちの第2ベースボリュームであって、前記第2ベースボリュームに格納されるデータは、前記所定のサイズのチャンクとして格納される、第2ベースボリュームと
    をさらに含み、
    前記コントローラが、前記バッファボリューム上の前記チャンクの1つについて計算された第1ハッシュ値が前記第1ベースボリュームまたは前記第2ベースボリュームのうちの1つに格納された既存チャンクについて以前に計算された第2ハッシュ値と同一であると判定する時に、前記コントローラは、前記既存チャンクの前記内容を前記ベースボリューム上の前記チャンクの前記内容と比較するために、前記一致するハッシュ値を有する前記既存チャンクが格納されている前記第1ベースボリュームまたは前記第2ベースボリュームのうちの前記1つの前記記憶媒体をパワーオンすると同時に、前記第1ベースボリュームまたは前記第2ベースボリュームのうちの他方の前記記憶媒体をパワーオフされたままにする
    請求項12に記載のストレージシステム。
  17. 1つまたは複数の第1記憶媒体、1つまたは複数の第2記憶媒体、および1つまたは複数の第3記憶媒体と通信するコントローラと、
    前記1つまたは複数の第1記憶媒体から割り振られた記憶容量を有する第1ボリュームと、
    前記1つまたは複数の第2記憶媒体から割り振られた記憶容量を有する第2ボリュームと、
    前記1つまたは複数の第3記憶媒体から割り振られた記憶容量を有する第3ボリュームと
    を含み、
    前記1つまたは複数の第1記憶媒体は、当初にパワーオン状態であり、前記1つまたは複数の第2記憶媒体および前記1つまたは複数の第3記憶媒体は、パワーオフ状態であり、
    前記コントローラによって受け取られた書込データは、当初に前記第1ボリュームに格納され、
    前記コントローラが、前記書込データについて計算された第1ハッシュ値が前記第2ボリュームまたは前記第3ボリュームのうちの1つに格納された既存データについて計算された第2ハッシュ値と同一であると判定する時に、前記コントローラは、前記既存データの前記内容を前記書込データの前記内容と比較するために、前記一致するハッシュ値を有する前記既存データが格納されている前記第2または第3のボリュームのうちの前記1つの前記記憶媒体をパワーオンすると同時に、前記第2または第3のボリュームのうちの他方の前記記憶媒体をパワーオフされたままにするように構成される
    ストレージシステム。
  18. 前記比較の結果が、前記書込データの前記内容が前記既存データの前記内容と一致しないことを示す時に、前記書込データは、前記第2ボリュームまたは前記第3ボリュームのうちで最大の残り使用可能容量を有するボリュームに格納される
    請求項17に記載のストレージシステム。
  19. 前記比較の前記結果が、前記書込データの前記内容が前記既存データの前記内容と一致することを示す時に、前記書込データの論理ブロックアドレスを前記既存データにリンクするレコードは、格納され、前記書込データは、破棄される
    請求項17に記載のストレージシステム。
  20. 前記第1ボリュームに格納されるデータは、所定のサイズのチャンクとして格納され、
    前記第2ボリュームおよび前記第3ボリュームに格納されるデータは、前記所定のサイズのチャンクとして格納され、
    前記コントローラによって受け取られた前記書込データは、分割された部分に分割され、各分割された部分の内容は、前記第1ボリュームに既に格納されているすべての既存チャンクと比較され、
    各分割された部分について、前記分割された部分の前記比較の結果が、前記分割された部分の前記内容が前記第1ボリュームに格納された前記既存チャンクの前記内容と一致しないことを示す時に、前記分割された部分は、新しいチャンクとして前記第1ボリュームに格納され、
    前記分割された部分の前記比較の前記結果が、前記分割された部分の前記内容が前記第1ボリューム上の前記既存チャンクの1つの前記内容と一致することを示す時に、前記分割された部分の論理ブロックアドレスを前記第1ボリューム上の前記既存チャンクにリンクするレコードは、格納され、前記分割された部分は、破棄される
    請求項17に記載のストレージシステム。
JP2008029970A 2007-07-10 2008-02-12 データデデュプリケーションを用いる電力効率のよいストレージ Expired - Fee Related JP5264203B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/822,856 US7669023B2 (en) 2007-07-10 2007-07-10 Power efficient storage with data de-duplication
US11/822,856 2007-07-10

Publications (2)

Publication Number Publication Date
JP2009020858A true JP2009020858A (ja) 2009-01-29
JP5264203B2 JP5264203B2 (ja) 2013-08-14

Family

ID=39787885

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008029970A Expired - Fee Related JP5264203B2 (ja) 2007-07-10 2008-02-12 データデデュプリケーションを用いる電力効率のよいストレージ

Country Status (3)

Country Link
US (1) US7669023B2 (ja)
EP (1) EP2017712A3 (ja)
JP (1) JP5264203B2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009059096A (ja) * 2007-08-30 2009-03-19 Hitachi Ltd ストレージシステム及びストレージシステムの消費電力低減方法
JP2009245293A (ja) * 2008-03-31 2009-10-22 Fujitsu Ltd 仮想テープ装置、仮想テープライブラリシステム、電力供給制御方法
WO2010106604A1 (ja) * 2009-03-17 2010-09-23 日本電気株式会社 ストレージシステム
JP2012094220A (ja) * 2010-10-28 2012-05-17 Internatl Business Mach Corp <Ibm> 書込みレコードの重複を排除する記憶装置、及びその書込み方法
JP2012168853A (ja) * 2011-02-16 2012-09-06 Nec Corp ストレージ制御装置、ストレージシステム、ストレージ制御方法及びそのためのプログラム
JP2012203437A (ja) * 2011-03-23 2012-10-22 Nec Corp ストレージ装置、方法及びプログラム
US8321384B2 (en) 2010-03-12 2012-11-27 Fujitsu Limited Storage device, and program and method for controlling storage device
JP2013533991A (ja) * 2010-05-20 2013-08-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 記憶装置の間で移動されるトラックのエクステントへの書込み動作の管理方法、システム、及びコンピュータ・プログラム
JP2018142174A (ja) * 2017-02-28 2018-09-13 日本電気株式会社 ストレージシステム

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8209506B2 (en) 2007-09-05 2012-06-26 Emc Corporation De-duplication in a virtualized storage environment
US8880797B2 (en) * 2007-09-05 2014-11-04 Emc Corporation De-duplication in a virtualized server environment
US7870409B2 (en) * 2007-09-26 2011-01-11 Hitachi, Ltd. Power efficient data storage with data de-duplication
GB2466579B (en) * 2007-10-25 2012-12-26 Hewlett Packard Development Co Data processing apparatus and method of deduplicating data
US8099573B2 (en) * 2007-10-25 2012-01-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8332404B2 (en) * 2007-10-25 2012-12-11 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
DE112007003693B4 (de) 2007-10-25 2014-05-15 Hewlett-Packard Development Co., L.P. Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
US8140637B2 (en) * 2007-10-25 2012-03-20 Hewlett-Packard Development Company, L.P. Communicating chunks between devices
GB2466581B (en) * 2007-10-25 2013-01-09 Hewlett Packard Development Co Data processing apparatus and method of deduplicating data
US8135918B1 (en) * 2007-12-31 2012-03-13 Emc Corporation Data de-duplication for iSCSI
US8200969B2 (en) * 2008-01-31 2012-06-12 Hewlett-Packard Development Company, L.P. Data verification by challenge
US7962706B2 (en) * 2008-02-14 2011-06-14 Quantum Corporation Methods and systems for improving read performance in data de-duplication storage
US7814074B2 (en) * 2008-03-14 2010-10-12 International Business Machines Corporation Method and system for assuring integrity of deduplicated data
US8825617B2 (en) * 2008-03-14 2014-09-02 International Business Machines Corporation Limiting deduplication based on predetermined criteria
DE112008003826B4 (de) * 2008-04-25 2015-08-20 Hewlett-Packard Development Company, L.P. Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
US8543789B2 (en) * 2008-05-05 2013-09-24 Dell Products L.P. System and method for managing a storage array
US8660373B2 (en) * 2008-07-22 2014-02-25 Xerox Corporation PDF de-chunking and object classification
US10642794B2 (en) * 2008-09-11 2020-05-05 Vmware, Inc. Computer storage deduplication
CN101727399B (zh) * 2008-10-30 2012-10-10 鸿富锦精密工业(深圳)有限公司 存储装置及使用该存储装置的数据交换系统
US8751462B2 (en) * 2008-11-14 2014-06-10 Emc Corporation Delta compression after identity deduplication
US8447740B1 (en) * 2008-11-14 2013-05-21 Emc Corporation Stream locality delta compression
US8849772B1 (en) 2008-11-14 2014-09-30 Emc Corporation Data replication with delta compression
JP4717922B2 (ja) * 2008-11-28 2011-07-06 株式会社日立製作所 情報処理システム、情報処理システムにおける制御方法、および、管理装置
AU2009330073B2 (en) 2008-12-22 2012-11-15 Google Llc Asynchronous distributed de-duplication for replicated content addressable storage clusters
WO2010135430A1 (en) 2009-05-19 2010-11-25 Vmware, Inc. Shortcut input/output in virtual machine systems
US8200926B1 (en) * 2009-05-28 2012-06-12 Symantec Corporation Methods and systems for creating full backups
US8280854B1 (en) * 2009-09-01 2012-10-02 Symantec Corporation Systems and methods for relocating deduplicated data within a multi-device storage system
US8862559B2 (en) 2009-10-06 2014-10-14 Dell Products L.P. Scalable mechanism for detection of commonality in a deduplicated data set
US8161077B2 (en) 2009-10-21 2012-04-17 Delphix Corp. Datacenter workflow automation scenarios using virtual databases
US8150808B2 (en) 2009-10-21 2012-04-03 Delphix Corp. Virtual database system
US8499131B2 (en) 2010-04-13 2013-07-30 Hewlett-Packard Development Company, L.P. Capping a number of locations referred to by chunk references
US8548944B2 (en) 2010-07-15 2013-10-01 Delphix Corp. De-duplication based backup of file systems
US8407438B1 (en) * 2010-08-16 2013-03-26 Symantec Corporation Systems and methods for managing virtual storage disk data
US8392754B2 (en) 2010-10-11 2013-03-05 International Business Machines Corporation Disaster recovery production takeover
US8479041B2 (en) 2010-10-13 2013-07-02 International Business Machines Corporation Disaster recovery failback
US8468174B1 (en) 2010-11-30 2013-06-18 Jedidiah Yueh Interfacing with a virtual database system
US9442671B1 (en) * 2010-12-23 2016-09-13 Emc Corporation Distributed consumer cloud storage system
US8904128B2 (en) 2011-06-08 2014-12-02 Hewlett-Packard Development Company, L.P. Processing a request to restore deduplicated data
EP2583642A1 (en) * 2011-10-21 2013-04-24 Universitätsspital Basel Implantable stoma ring
US9489133B2 (en) 2011-11-30 2016-11-08 International Business Machines Corporation Optimizing migration/copy of de-duplicated data
CN104067237A (zh) * 2012-01-25 2014-09-24 惠普发展公司,有限责任合伙企业 存储系统设备管理
US9286934B2 (en) * 2012-02-06 2016-03-15 Hewlett Packard Enterprise Development Lp Data duplication in tape drives
US8776236B2 (en) * 2012-04-11 2014-07-08 Northrop Grumman Systems Corporation System and method for providing storage device-based advanced persistent threat (APT) protection
US9141301B1 (en) * 2012-06-13 2015-09-22 Emc Corporation Method for cleaning a delta storage system
US8918390B1 (en) 2012-06-13 2014-12-23 Emc Corporation Preferential selection of candidates for delta compression
US8712978B1 (en) 2012-06-13 2014-04-29 Emc Corporation Preferential selection of candidates for delta compression
US9026740B1 (en) 2012-06-13 2015-05-05 Emc Corporation Prefetch data needed in the near future for delta compression
US9400610B1 (en) 2012-06-13 2016-07-26 Emc Corporation Method for cleaning a delta storage system
US9116902B1 (en) 2012-06-13 2015-08-25 Emc Corporation Preferential selection of candidates for delta compression
US10135462B1 (en) 2012-06-13 2018-11-20 EMC IP Holding Company LLC Deduplication using sub-chunk fingerprints
US8972672B1 (en) 2012-06-13 2015-03-03 Emc Corporation Method for cleaning a delta storage system
KR102140792B1 (ko) * 2013-12-24 2020-08-03 삼성전자주식회사 데이터 중복 제거를 수행할 수 있는 데이터 저장 장치의 동작 방법들
US9939865B2 (en) 2014-06-13 2018-04-10 Seagate Technology Llc Selective storage resource powering for data transfer management
US9904688B2 (en) * 2014-09-30 2018-02-27 International Business Machines Corporation Buffering and replicating data written to a distributed storage system
US9916325B2 (en) 2014-09-30 2018-03-13 International Business Machines Corporation Quick initialization of data regions in a distributed storage system
US10372695B2 (en) * 2014-12-27 2019-08-06 Intel Corporation Technologies for computing rolling hashes
US20160314155A1 (en) * 2015-04-22 2016-10-27 Palantir Technologies Inc. Data integration pipeline
JP2016207033A (ja) * 2015-04-24 2016-12-08 株式会社東芝 情報記憶システムおよび情報記憶装置
US20170061501A1 (en) * 2015-09-01 2017-03-02 King.Com Limited Method and system for predicting data warehouse capacity using sample data
US10481980B2 (en) * 2018-03-29 2019-11-19 International Business Machines Corporation Enabling segmented source data introspection within dispersed storage network (DSN) memory
US11822489B2 (en) * 2018-12-21 2023-11-21 Micron Technology, Inc. Data integrity protection for relocating data in a memory system
KR102447130B1 (ko) * 2020-11-05 2022-09-26 국민대학교산학협력단 네트워크 패킷 분석 기반의 대상파일 검출 장치 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040054939A1 (en) * 2002-09-03 2004-03-18 Aloke Guha Method and apparatus for power-efficient high-capacity scalable storage system
US20050216669A1 (en) * 2002-12-20 2005-09-29 Data Domain, Inc. Efficient data storage system
JP2005539303A (ja) * 2002-09-12 2005-12-22 コパン システムズ, インコーポレイテッド 電力効率高容量なスケーラブルな記憶システムのための方法および装置
US20070079088A1 (en) * 2005-10-05 2007-04-05 Akira Deguchi Information processing system, control method for information processing system, and storage system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807632B1 (en) 1999-01-21 2004-10-19 Emc Corporation Content addressable information encapsulation, representation, and transfer
JP4175788B2 (ja) 2001-07-05 2008-11-05 株式会社日立製作所 ボリューム制御装置
US7065619B1 (en) 2002-12-20 2006-06-20 Data Domain, Inc. Efficient data storage system
WO2006060670A2 (en) * 2004-12-02 2006-06-08 Storage Dna, Inc. Managing disk storage media
US7539710B1 (en) * 2008-04-11 2009-05-26 International Business Machines Corporation Method of and system for deduplicating backed up data in a client-server environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040054939A1 (en) * 2002-09-03 2004-03-18 Aloke Guha Method and apparatus for power-efficient high-capacity scalable storage system
JP2005539303A (ja) * 2002-09-12 2005-12-22 コパン システムズ, インコーポレイテッド 電力効率高容量なスケーラブルな記憶システムのための方法および装置
US20050216669A1 (en) * 2002-12-20 2005-09-29 Data Domain, Inc. Efficient data storage system
US20070079088A1 (en) * 2005-10-05 2007-04-05 Akira Deguchi Information processing system, control method for information processing system, and storage system
JP2007102579A (ja) * 2005-10-05 2007-04-19 Hitachi Ltd 情報処理システム、情報処理システムの制御方法及びストレージ装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009059096A (ja) * 2007-08-30 2009-03-19 Hitachi Ltd ストレージシステム及びストレージシステムの消費電力低減方法
JP2009245293A (ja) * 2008-03-31 2009-10-22 Fujitsu Ltd 仮想テープ装置、仮想テープライブラリシステム、電力供給制御方法
WO2010106604A1 (ja) * 2009-03-17 2010-09-23 日本電気株式会社 ストレージシステム
JP2010218194A (ja) * 2009-03-17 2010-09-30 Nec Corp ストレージシステム
US8996799B2 (en) 2009-03-17 2015-03-31 Nec Corporation Content storage system with modified cache write policies
US8321384B2 (en) 2010-03-12 2012-11-27 Fujitsu Limited Storage device, and program and method for controlling storage device
JP2013533991A (ja) * 2010-05-20 2013-08-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 記憶装置の間で移動されるトラックのエクステントへの書込み動作の管理方法、システム、及びコンピュータ・プログラム
US9218141B2 (en) 2010-05-20 2015-12-22 International Business Machines Corporation Managing write operations to an extent of tracks migrated between storage devices
US8806173B2 (en) 2010-10-28 2014-08-12 International Business Machines Corporation Elimination of duplicate written records
JP2012094220A (ja) * 2010-10-28 2012-05-17 Internatl Business Mach Corp <Ibm> 書込みレコードの重複を排除する記憶装置、及びその書込み方法
JP2012168853A (ja) * 2011-02-16 2012-09-06 Nec Corp ストレージ制御装置、ストレージシステム、ストレージ制御方法及びそのためのプログラム
JP2012203437A (ja) * 2011-03-23 2012-10-22 Nec Corp ストレージ装置、方法及びプログラム
JP2018142174A (ja) * 2017-02-28 2018-09-13 日本電気株式会社 ストレージシステム

Also Published As

Publication number Publication date
US7669023B2 (en) 2010-02-23
EP2017712A3 (en) 2011-12-07
JP5264203B2 (ja) 2013-08-14
US20090019246A1 (en) 2009-01-15
EP2017712A2 (en) 2009-01-21

Similar Documents

Publication Publication Date Title
JP5264203B2 (ja) データデデュプリケーションを用いる電力効率のよいストレージ
JP5121581B2 (ja) データ重複除外を用いた電力効率的なデータ記憶
US20070162692A1 (en) Power controlled disk array system using log storage area
US9031911B2 (en) Preserving past states of file system nodes
US8972350B2 (en) Preserving a state using snapshots with selective tuple versioning
US7340571B2 (en) Storage system and data management device for storage system
JP4975396B2 (ja) 記憶制御装置及び記憶制御方法
US8271718B2 (en) Storage system and control method for the same, and program
KR100439675B1 (ko) 대용량 공유 저장장치를 위한 효율적인 스냅샷 수행방법
US8204858B2 (en) Snapshot reset method and apparatus
US7827368B2 (en) Snapshot format conversion method and apparatus
US20130311429A1 (en) Method for controlling backup and restoration, and storage system using the same
US20060047926A1 (en) Managing multiple snapshot copies of data
JP2008015769A (ja) ストレージシステム及び書き込み分散方法
JP2007234026A (ja) ユニークブロックプールマネージャを含むデータ記憶システムおよび階層記憶装置における応用
JP2004342050A (ja) 複数のスナップショット維持方法及びサーバ装置及びストレージ装置
JP2007094946A (ja) 階層ストレージシステム、制御方法及びプログラム
US8478933B2 (en) Systems and methods for performing deduplicated data processing on tape
US20180253253A1 (en) Storage apparatus
US9703795B2 (en) Reducing fragmentation in compressed journal storage
US7840755B2 (en) Methods and systems for automatically identifying a modification to a storage array
US8171324B2 (en) Information processing device, data writing method, and program for the same
US11249666B2 (en) Storage control apparatus
JP2004013786A (ja) データ記憶方法およびデータ記憶制御装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090219

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100906

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120814

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121015

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130430

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees