JP4892072B2 - ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法 - Google Patents

ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法 Download PDF

Info

Publication number
JP4892072B2
JP4892072B2 JP2010068512A JP2010068512A JP4892072B2 JP 4892072 B2 JP4892072 B2 JP 4892072B2 JP 2010068512 A JP2010068512 A JP 2010068512A JP 2010068512 A JP2010068512 A JP 2010068512A JP 4892072 B2 JP4892072 B2 JP 4892072B2
Authority
JP
Japan
Prior art keywords
block
data
block data
address
storage
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
JP2010068512A
Other languages
English (en)
Other versions
JP2011203842A (ja
Inventor
誠 小原
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.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
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 Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2010068512A priority Critical patent/JP4892072B2/ja
Priority to US13/069,921 priority patent/US8447742B2/en
Publication of JP2011203842A publication Critical patent/JP2011203842A/ja
Application granted granted Critical
Publication of JP4892072B2 publication Critical patent/JP4892072B2/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/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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Description

本発明は、ホスト装置と連携して重複するデータを排除しながらデータを格納するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法に関する。
昨今、官公庁・企業・個人のデータを管理する基盤は急速に肥大化・複雑化しており、その基盤の構成要素であるストレージ装置に格納されるデータも増大の一途をたどっている。このようなデータの保管・管理コストを削減するための1つの技術として、重複排除技術(或いは重複データ排除技術)が注目されている。
重複排除技術とは、データ(以下、対象データと称する)をストレージ装置に格納する際に、既に同じ内容のデータが当該ストレージ装置に格納されているかを検出し、つまりデータの重複を検出し、既に格納されていれば当該対象データを例えばリンクで置き換えることにより重複データを1つにまとめる(排除する)技術をいう。この重複排除技術によれば、データの記憶に必要な記憶容量をより少なくすることができる。
一般に、対象データと同じデータがストレージ装置に格納されているかを高速に検出するためには、ハッシュ値のような、データの代表値を利用することが多い。即ち重複排除技術では、重複の検出のために、対象データ自身を既にストレージ装置に格納されている全データと比較する手法ではなくて、対象データの代表値を求めてこれを既存の格納済みのデータの代表値の各々と比較する手法が適用されている。
従来、このような重複排除技術を適用した製品としては、例えば特許文献1に記載されているような可変長データ分割の手法に、非特許文献1に記載されているような重複データ排除の技術を組み合わせた、バックアップ装置、VTL(仮想テープライブラリ)等が主流であった。バックアップ用途の場合は、次のような理由から重複排除を高速に行うための技術的ハードルが、プライマリ用途と比べて比較的低く、製品に適用しやすいためである。その理由とは、バックアップ用途ではデータの書き込みがストリーム状(非ランダム)に行われ、一度書き込んだデータの更新は頻繁には行われないことである。
その一方、昨今では、重複排除技術への注目の高まりに支えられて、プライマリストレージ装置(以下、単にストレージ装置と称する)への重複排除技術の適用も進んでいる。例えば、SAN(Storage Area Network)などを介して複数のホスト装置からのアクセスを受け付ける共有型のストレージ装置に重複排除技術を適用する手法は、重複排除の処理をストレージ装置で行うかホスト装置で行うかによって、大きく2種類に分けるられる。
まず、ストレージ装置側での重複排除(第1の手法)の手順について説明する。
(1)ホスト装置は書き込みデータをストレージ装置に転送する。
(2)ストレージ装置は、ホスト装置からのデータに基づき、当該データの代表値を生成する。
(3)ストレージ装置は、生成された代表値と、既に格納済みのデータの代表値の各々とを比較し、同一の代表値(データ)が既に格納されているか確認する。ストレージ装置は、同一の代表値が格納されていないときに限り、ホスト装置からのデータを書き込むことで、重複データを排除する。
次にホスト装置側での重複排除(第2の手法)の手順について説明する。
(1)ホスト装置は、書き込みデータに基づき、当該データの代表値を生成する。
(2)ホスト装置は、ストレージ装置に格納済みのデータの代表値を、ストレージ装置から読み込む。なお、ストレージ装置に代表値のインデックスを格納しておくことにより、ホスト装置による代表値の読み込み・比較の高速化を図るのが一般的である。
(3)ホスト装置は、生成した代表値と読み込んだ代表値とを比較し、同一の代表値(データ)が既に格納されているか確認する。ホスト装置は、同一の代表値が格納されていないときに限り、書き込みデータをストレージ装置に転送し、書き込むことで、重複データを排除する。
現在の主流は第1の手法だが、例えば非特許文献2には、第2の手法が開示されている。
米国特許第5990810号明細書
Benjamin Zhu et al., "Avoiding the Disk Bottleneck in the Data Domain Deduplication File System", Data Domain, Inc., USENIX/FAST’08, (2008) Austin T.Clements et al., "Decentralized Deduplication in SAN Cluster File Systems", USENIX’09, (2009)
上述の第1の手法によれば、ストレージ装置を共有する複数のホスト装置からの書き込みに対して、ストレージ装置において排他制御を集中的に行うことができる。このため、ホスト装置同士での分散排他制御が不要となる。
しかし第1の手法では、ストレージ装置での重複排除の処理のために、ホスト装置とストレージ装置との間でのデータ送受信が必ず必要となる。特に、ホスト装置にデータがキャッシュされていたとしても、重複排除処理のためには一度ホスト装置からストレージ装置へデータを転送しなければならない。但し、ホスト装置で書き込んだデータと、ストレージ装置内に書き込まれているデータとの重複排除(データ比較)を行うときにはストレージ装置内で処理を閉じることができる。
また、一般的に、ストレージ装置は、ホスト装置と比較して、CPU性能が低くメモリ搭載容量も少ない。そのため、CPUやメモリの性能が大きく影響する重複データ排除をストレージ装置内で高速に行うことは困難であり、例えばオフロードエンジンの搭載などの工夫が必要となる。
一方、上述の第2の手法によれば、ホスト装置で重複排除の処理を行うことから、ホスト装置側のバッファ/キャッシュに登録されているデータとの間で重複データ排除を行うときには、ホスト装置とストレージ装置との間でのデータ送受信を省くことができる。また、一般的に、ホスト装置は、ストレージ装置と比較して、CPU性能が高くメモリ搭載容量も多い。そのため、CPUやメモリの性能が大きく影響する重複データ排除をホスト装置内で高速に行いやすくなる。
しかし第2の手法では、ホスト装置において、これから書き込むデータと、ストレージ装置内に書き込まれておりホスト装置内にキャッシュされていないデータとの間で重複排除を行うときには、ストレージ装置内のデータをホスト装置に読み込む必要がある。
また第2の手法では、ホスト装置の故障、停電等によるデータ保護等の処理が必要となる。また、ストレージ装置を複数のホスト装置で共有している場合、このストレージ装置内のデータに対して重複排除を行うためには、データ保護のためホスト装置間でアクセスを排他する必要がある。つまり、ホスト装置間で分散排他を実現しなければならない。しかし、ホスト間での分散排他は、ストレージ装置内での集中排他と比較して技術的に難易度が高く、性能上も課題がある。
本発明は上記事情を考慮してなされたものでその目的は、ホスト装置と連携して重複データを排除することで、データの高速書き込みが可能な、ストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法を提供することにある。
本発明の1つの観点によれば、キャッシュを備えたホスト装置と連携して重複データを排除するストレージ装置が提供される。このストレージ装置は、ブロックデータごとに、当該ブロックデータに固有のブロック識別子と当該ブロックデータとを対応付けて格納する第1の記憶手段と、ブロックデータのアドレスごとに、当該アドレスと当該アドレスに対応するブロックデータに固有のブロック識別子とを対応付けて格納する第2の記憶手段と、前記ホスト装置からの書き込み要求を含む各種の要求を処理する制御手段と、前記制御手段によって指定されたブロックデータに固有のブロック識別子を生成するブロック識別子生成手段と、前記制御手段によって指定されたブロックデータを前記第1の記憶手段に格納されているブロックデータと比較する比較手段とを具備する。前記制御手段は、ブロックデータを単位に処理可能なデータの前記ストレージ装置への書き込みを指定する書き込み要求が前記ホスト装置で発生し、前記書き込みが指定されたデータに含まれている第1のブロックデータが、前記ホスト装置の前記キャッシュに格納されているブロックデータのいずれとも一致しないために、前記第1のブロックデータと当該第1のブロックデータの第1のアドレスとを含む第1種の書き込み要求が前記ホスト装置から前記ストレージ装置に送信された場合、前記第1のブロックデータを指定して前記比較手段によるブロックデータ比較を行わせ、このブロックデータ比較の結果、前記第1のブロックデータが、前記第1の記憶手段に格納されているブロックデータのいずれとも一致しない場合、前記ブロック識別子生成手段により当該第1のブロックデータに固有の第1のブロック識別子を生成させて、前記第1のブロック識別子と前記第1のブロックデータとを対応付けて前記第1の記憶手段に格納し、且つ前記第1のアドレスと前記第1のブロック識別子とを対応付けて前記第2の記憶手段に格納する一方、前記第1のブロック識別子と前記第1のブロックデータとを対応付けて、且つ前記第1のアドレスと前記第1のブロック識別子とを対応付けて、それぞれ前記ホスト装置の前記キャッシュに格納させるために、前記第1のブロック識別子を前記ホスト装置に送信する。また前記制御手段は、前記書き込みが指定されたデータに含まれている第2のブロックデータが、前記ホスト装置の前記キャッシュに格納されているブロックデータのいずれか1つと一致した結果、前記第2のブロックデータに固有の第2のブロック識別子と前記第2のブロックデータの第2のアドレスとを含む第2種の書き込み要求が前記ホスト装置から前記ストレージ装置に送信された場合、前記第2のアドレスと前記第2のブロック識別子とを対応付けて前記第2の記憶手段に格納する。
本発明によれば、ストレージ装置がホスト装置と連携して重複データを排除する構成としたことにより、重複排除処理をより高速に行うことができ、これによりデータの書き込み処理を高速化できる。
本発明の一実施形態に係るストレージシステムの構成を示すブロック図。 論理ディスクボリュームの例を示す図。 ストレージ装置の格納部に格納されるブロックテーブル及び論理ディスクボリュームテーブルの例を示す図。 ホスト装置のキャッシュ部に格納されるブロックテーブルキャッシュ及び論理ディスクボリュームテーブルキャッシュの例を示す図。 同実施形態におけるホスト装置側でのデータ書き込み処理の手順を示すフローチャート。 同実施形態におけるストレージ装置側での第1種のデータ書き込み処理の手順を示すフローチャート。 同実施形態におけるストレージ装置側での第2種のデータ書き込み処理の手順を示すフローチャート。 同実施形態におけるデータ書き込み処理の第1の例で用いられる論理ディスクボリュームの例を示す図。 同実施形態におけるデータ書き込み処理の第1の例で用いられるブロックテーブルキャッシュ及び論理ディスクボリュームテーブルキャッシュの例を示す図。 同実施形態におけるデータ書き込み処理の第1の例で用いられるブロックテーブル及び論理ディスクボリュームテーブルの例を示す図。 同実施形態におけるデータ書き込み処理の第2の例を説明するための論理ディスクボリュームの例を示す図。 同実施形態におけるデータ書き込み処理の第2の例を説明するためのブロックテーブルキャッシュ及び論理ディスクボリュームテーブルキャッシュの例を示す図。 同実施形態におけるデータ書き込み処理の第2の例を説明するためのブロックテーブル及び論理ディスクボリュームテーブルの例を示す図。 同実施形態におけるホスト装置側でのデータ読み出し処理の手順を示すフローチャート。 同実施形態におけるストレージ装置側でのデータ読み出し処理の手順を示すフローチャート。 同実施形態におけるデータ読み出し処理の例を説明するための論理ディスクボリュームの例を示す図。 同実施形態におけるデータ読み出し処理の例を説明するためのブロックテーブルキャッシュ及び論理ディスクボリュームテーブルキャッシュの例を示す図。 同実施形態におけるデータ読み出し処理の例を説明するためのブロックテーブル及び論理ディスクボリュームテーブルの例を示す図。
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るストレージシステムの構成を示すブロック図である。このストレージシステムは、ストレージ装置10とホスト装置20とから構成されている。ストレージ装置10とホスト装置20とは、例えばSANのようなネットワーク30によって接続されている。なお、ストレージ装置10とホスト装置20とが、ネットワーク30以外の接続手段により接続されていても構わない。また、ホスト装置20を含む複数のホスト装置が、ストレージ装置10と接続される構成、つまりストレージ装置10が複数のホスト装置によって共有される構成であっても構わない。
ストレージ装置10は、通信部11、比較部12、識別子生成部13、格納部14及び制御部15を備えている。
通信部11は、ホスト装置20とストレージ装置10との間の通信を行う。この通信は、ホスト装置20からのデータの書き込み要求及び読み出し要求の受信を含む。
比較部12は、データを一定サイズのある単位で分割したブロックデータ同士の比較を行い、同一性を判定する。本実施形態では、説明の簡略化のために、1セクタを1ブロックとするが、これに限らない。例えば、1ブロックを2以上のセクタとしても構わない。
識別子生成部13は、制御部15によって指定されたブロックデータに固有の値(識別情報)であるブロック識別子を生成する。つまり識別子生成部13は、入力として制御部15によって指定されたブロックデータを受け取ると、当該ブロックデータに固有のブロック識別子を出力する。本実施形態では、ブロック識別子としてシリアル番号が用いられる。なお、ストレージ装置10及びホスト装置20内からあるブロックが消去された後であれば、そのブロックに付与されていた識別子を再利用しても構わない。
格納部14は、データを格納するのに用いられる。格納部14の構成形態として、ファイルシステムボリュームや、論理ディスクボリューム(論理ボリューム)など様々な形態をとることができる。本実施形態では、格納部14は1つ以上の論理ディスクボリュームを構成するものとする。
格納部14は、ブロックテーブル141及び論理ディスクボリュームテーブル142を格納する。ブロックテーブル141は、ブロックデータとブロック識別子との対を格納する。論理ディスクボリュームテーブル142は、ブロックデータのアドレス(例えば、ブロックデータの論理ディスクボリューム上のアドレス、つまり論理ブロックアドレス)とブロック識別子との対を格納する。
制御部15は、通信部11、比較部12、識別子生成部13及び格納部14を制御する。
本実施形態において、ホスト装置20内の比較部12、識別子生成部13及び制御部15は、ホスト装置20が一般に有するCPUが、当該ホスト装置20の記憶装置に格納されたプログラムを読み込んで実行することにより実現される機能モジュールであるものとする。
ホスト装置20は、ストレージ装置10と連携して重複データ排除を行うため、ストレージ装置10内の通信部11、比較部12、格納部14及び制御部15にそれぞれ相当する、通信部21、比較部22、キャッシュ部24及び制御部25を備えている。この通信部21、比較部22、キャッシュ部24及び制御部25は、例えばホスト装置20のドライバ層26に備えられている。図1には、ホスト装置20のドライバ層26内に、バッファ部28及び代表値生成部29が更に備えられている状態が示されている。しかし後述するように、バッファ部28は、上記実施形態の第1の変形例で適用され、代表値生成部29は、上記実施形態の第2の変形例で適用されるものとする。つまりバッファ部28及び代表値生成部29は、それぞれ上記実施形態の第1の変形例及び第2の変形例の説明のために、便宜的に図1に示されており、上記実施形態では、ホスト装置20内にバッファ部28及び代表値生成部29が必ずしも備えられている必要はない。
通信部21は、ストレージ装置10とホスト装置20との間の通信を行う。この通信は、ストレージ装置10へのデータの書き込み要求及び読み出し要求の送信を含む。
比較部12は、ブロックデータ同士の比較を行い、同一性を判定する。
キャッシュ部24は、データを一時的に格納するのに用いられる。キャッシュ部24は、ブロックテーブルキャッシュ241及び論理ディスクボリュームテーブルキャッシュ242を格納する。ブロックテーブルキャッシュ241はストレージ装置10内のブロックテーブル141のキャッシュであり、ブロックデータとブロック識別子との対を一時格納する。論理ディスクボリュームテーブルキャッシュ242はストレージ装置10内の論理ディスクボリュームテーブル142のキャッシュであり、ブロックデータのアドレス(例えば、ブロックデータの論理ディスクボリューム上のアドレス)とブロック識別子との対を一時格納する。
制御部25は、通信部21、比較部22及びキャッシュ部24を制御する。制御部25はまた、ユーザ層27とドライバ層26との間の通信を行う。ユーザ層27は、ファイルシステム、データベース(DB)、アプリケーション(アプリケーションプログラム)等を含む。
次に、ストレージ装置10が構成する論理ディスクボリュームと、これに対応するストレージ装置10内のブロックテーブル141及び論理ディスクボリュームテーブル142と、これに対応するホスト装置20内のブロックテーブルキャッシュ241及び論理ディスクボリュームテーブルキャッシュ242とについて、例を挙げて説明する。
図2は、ストレージ装置10によって構成される論理ディスクボリュームの例を示す。この例では、ストレージ装置10は2種類の論理ディスクボリューム(論理ボリューム)である、論理ディスクボリュームAと論理ディスクボリュームBとを格納している。図2の例では説明の簡略化のために、論理ディスクボリュームAが5セクタ(つまり5ブロック)から構成され、論理ディスクボリュームBが4セクタ(つまり4ブロック)から構成されている場合を想定している。しかし、論理ディスクボリュームは、図2の例よりも多くのセクタ(ブロック)から構成されるのが一般である。
論理ディスクボリュームAの第1セクタ(アドレス1)にはブロックデータ“DATAE”が、第2セクタ(アドレス2)にはブロックデータ“DATAA”が、それぞれ格納されている。論理ディスクボリュームBの第1セクタ(アドレス1)にはブロックデータ“DATAA”が、第2セクタ(アドレス2)にはブロックデータ“DATAE”が、それぞれ格納されている。ここで、アドレスは、ボリュームにおけるセクタ(ブロック)のアドレス(論理ブロックアドレス)である。
図3は、ストレージ装置10の格納部14に格納(論理的に格納)される論理ディスクボリュームテーブル142及びブロックテーブル141の例を示す。より詳細には、図3は、図2に示される論理ディスクボリュームA及びBを、ストレージ装置10の格納部14に格納される論理ディスクボリュームテーブル142及びブロックテーブル141を用いて構成した状態を示す。
論理ディスクボリュームテーブル142は論理ディスクボリュームA及びB上のアドレス(セクタ)とブロック識別子との対を格納する。つまり論理ディスクボリュームテーブル142は、論理ディスクボリュームA及びB上のアドレス(セクタ)とブロック識別子との対応を示す情報を格納する。本実施形態において論理ディスクボリュームテーブル142は、図3に示すように、論理ディスクボリュームAに対応するサブテーブル142Aと論理ディスクボリュームBに対応するサブテーブル142Bとから構成される。一方、ブロックテーブル141は、ブロック識別子とブロックデータとの対を格納する。
これら2種類のサブテーブル142A及び142Bとブロックテーブル141とは、図3から明らかなように、ブロック識別子により相互に結び付けられている。ここで、同じブロック識別子が付与されている(重複する)ブロックデータは、ブロックテーブル141上で1つにまとめられていること、つまり、重複排除されていることに注目されたい。例えば、図2において、論理ディスクボリュームAの第2セクタに格納されているブロックデータ“DATAA”及び論理ディスクボリュームBの第1セクタに格納されているブロックデータ“DATAA”は、図3に示すように、ブロック識別子“IDA”によりブロックテーブル141上で1つにまとめられている。
このように図3の例では、ブロックテーブル141には、それぞれ固有の、且つ論理ディスクボリュームテーブル142のエントリより参照されているブロックデータ及びブロック識別子のみが格納されている。このようなデータ構造をとることにより、ストレージ装置10でデータを格納するのに必要な記憶容量を削減することができる。
図4は、ブロックテーブルキャッシュ241及び論理ディスクボリュームテーブルキャッシュ242の例を示す。より詳細には、図4は、ストレージ装置10が図2に示される論理ディスクボリュームA及びBを格納しているときの、ホスト装置20のキャッシュ部24に格納される、ブロックテーブルキャッシュ241及び論理ディスクボリュームテーブルキャッシュ242の例を示す。ホスト装置20では、ブロックテーブルキャッシュ241及び論理ディスクボリュームテーブルキャッシュ242の2種類のテーブルキャッシュにより、図2に示されるブロックテーブル141及び論理ディスクボリュームテーブル142に対応するキャッシュが構成される。
論理ディスクボリュームテーブルキャッシュ242は、図2に示される論理ディスクボリュームA及びBにそれぞれ対応するサブテーブルキャッシュ242A及び242Bから構成される。サブテーブルキャッシュ242A及び242Bは、それぞれ図3に示されるサブテーブル142A及び142Bに対応する。
図4の例では、論理ディスクボリュームテーブルキャッシュ242のサブテーブルキャッシュ242Aは、論理ディスクボリュームAの5セクタのうちの4セクタ分のブロックのブロック識別子を格納(キャッシュ)している。一方、論理ディスクボリュームテーブルキャッシュ242のサブテーブルキャッシュ242Bは、論理ディスクボリュームBの4セクタのうちの3セクタ分のブロックのブロック識別子を格納(キャッシュ)している。なお、一般にキャッシュサイズは有限である。このため、ホスト装置20の制御部25は、例えばLRU(Least Recently Usued)のような手法によって、キャッシュするエントリの置き換えを行う。この置き換え手法は周知であるため、その詳細な説明を省略する。図4の例では、論理ディスクボリュームAの第2セクタ(アドレス2)及び論理ディスクボリュームBの第1セクタ(アドレス1)にそれぞれ対応するブロックデータ“DATAA”と、論理ディスクボリュームBの第4セクタ(アドレス4)に対応するブロックデータ“DATAD”とが、何らかのキャッシュ置換方法により、ブロックテーブルキャッシュ241から捨てられている状態を示している。
次に、ホスト装置20とストレージ装置10が連携して効率的に重複排除を行いながら、ストレージ装置10にデータを書き込むためのデータ書き込み処理の手順と、ストレージ装置10からデータを読み出すためのデータ読み出し処理の手順とについて順次説明する。
1.データ書き込み処理
まず、データ書き込み処理の手順について、図5乃至図7のフローチャートを参照して説明する。図5はストレージ装置10にデータを書き込む際のホスト装置20側でのデータ書き込み処理の手順を示すフローチャート、図6及び図7はストレージ装置10にデータを書き込む際のストレージ装置10側での、それぞれ第1種及び第2種のデータ書き込み処理の手順を示すフローチャートである。
1.1.ホスト装置側のデータ書き込み処理
まず、ホスト装置20側でのデータ書き込み処理について、図5のフローチャートを参照して説明する。
今、ホスト装置20内のユーザ層27(より詳細には、ユーザ層27に属する、例えばアプリケーションのような要素)から当該ホスト装置20内のドライバ層26に対して、書き込み要求が発行されたものとする。このときホスト装置20は、ストレージ装置10に格納されている論理ディスクボリュームAまたはBのいずれか一方を、当該ホスト装置20からストレージ装置10に対する要求により、リザーブしているものとする。この場合、上記書き込み要求は、データと、当該データが書き込まれるべき(現在ホスト装置20によってリザーブされている)論理ディスクボリューム上のアドレス(開始アドレス)と、当該データのデータ長(セクタ数)とを引数として持つ。データは、ブロック(セクタ)を単位に処理可能である。
ドライバ層26内の制御部25は、ユーザ層27からの書き込み要求を受け取ると、当該書き込み要求で指定されたデータ(以下、書き込みデータと称する)をブロックデータ(以下、書き込みブロックデータと称する)に分割する(ステップ501)。本実施形態では、1ブロックは1セクタであるため、書き込みデータは、1セクタ単位に分割される。以後、制御部25は、ブロック(より詳細には、書き込みブロックデータ)ごとに以下の手順の繰り返しを制御する(ステップ502)。
なお、データ長が1(1セクタ)である場合、書き込みデータが、そのまま書き込みブロックデータとして用いられる。明らかなように、書き込みデータは、1以上の書き込ブロックデータを含んでいるのと等価である。
制御部25は、キャッシュ部24に格納されているブロックテーブルキャッシュ241の先頭エントリから順にブロックデータを読み出す(ステップ503)。このステップ503において制御部25は、ブロックデータを読み出すごとに、比較部22に対して当該ブロックデータを指定することにより、当該比較部22によるブロックデータ比較を行わせる。これにより比較部22は、制御部25によってブロックテーブルキャッシュ241から順に読み出されるブロックデータを、現在処理対象となっている書き込みブロックデータと比較する。
制御部25は、比較部22による比較の結果に基づき、書き込みブロックデータと同一のブロックデータ(つまり、ブロックデータが同一のブロック)が、ブロックテーブルキャッシュ241にキャッシュされているかを判定する(ステップ504)。もし、キャッシュされていないならば(ステップ504のNo)、制御部25はステップ505に進む。
ステップ505において制御部25は、ストレージ装置10に対して通信部21経由で第1種の書き込み要求を送信し、当該第1種の書き込み要求に対するストレージ装置10による第1種のデータ書き込み処理の完了を示す完了応答を待ち合わせる。第1種の書き込み要求は、書き込みブロックデータのアドレスと当該書き込みブロックデータとを引数として持つ。ストレージ装置10による第1種のデータ書き込み処理については後述する。
さて、ステップ505でストレージ装置10から第1種のデータ書き込み処理の完了応答が返されるのを待ち合わせた結果、制御部25が当該完了応答を受信したものとする。この完了応答は、後述するように、書き込みブロックデータのブロック識別子を含む。このため制御部25は、完了応答の受信(待ち合わせ)により、ストレージ装置10から書き込みブロックデータのブロック識別子を取得する。
すると制御部25は、キャッシュ部24に格納されている論理ディスクボリュームテーブルキャッシュ242の対応するサブテーブルキャッシュに、第1種の書き込み要求の引数としたアドレスと取得したブロック識別子とが対応付けて設定された新たなエントリを登録する(ステップ506)。本実施形態において、対応するサブテーブルキャッシュが、サブテーブルキャッシュ242Aまたは242Bのいずれであるかは、論理ディスクボリュームAまたはBのいずれがホスト装置20によりリザーブされているかによって決まる。
また、ステップ506において制御部25は、キャッシュ部24に格納されているブロックテーブルキャッシュ241に、取得したブロック識別子と第1種の書き込み要求の引数としたブロックデータ(書き込みブロックデータ)とが対応付けて設定された新たなエントリを登録する。このように、論理ディスクボリュームテーブルキャッシュ242のサブテーブルキャッシュとブロックテーブルキャッシュ241とに、それぞれ新たなエントリを登録するために、前述したように、適切なキャッシュ置換アルゴリズムが適用されているものとする。
一方、ブロックデータが同一のブロックが、ブロックテーブルキャッシュ241にキャッシュされているならば(ステップ504のYes)、制御部25はステップ507に進む。ステップ507において制御部25は、ストレージ装置10に対して第2種の書き込み要求を通信部21経由で送信し、当該第2種の書き込み要求に対するストレージ装置10による第2種のデータ書き込み処理の完了を示す完了応答を待ち合わせる。第2種の書き込み要求は、書き込みブロックデータのアドレスと当該書き込みブロックデータのブロック識別子とを引数として持つ。この引数としてのブロック識別子には、上記同一のブロックデータと対応付けてブロックテーブルキャッシュ241に登録されているブロック識別子が用いられる。ストレージ装置10による第2種のデータ書き込み処理については後述する。
さて、ステップ507でストレージ装置10から第2種のデータ書き込み処理の完了応答が返されるのを待ち合わせた結果、制御部25が当該完了応答を受信したものとする。すると制御部25は、第2種の書き込み要求の引数とした、アドレスとブロック識別子とが対応付けて設定された新たなエントリを、論理ディスクボリュームテーブルキャッシュ242の対応するサブテーブルキャッシュに登録する(ステップ508)。この新たなエントリを登録するために、適切なキャッシュ置換アルゴリズムが適用されているものとする。
制御部25は、上述のステップ503乃至506の処理またはステップ503,504,507及び508の処理を、ステップ501で取得した全ての書き込みブロックデータの各々について繰り返す(ステップ502)。制御部25は、全ての書き込みブロックデータについて上述の処理を実行し終えると、ホスト装置20側のデータ書き込み処理を終了する。
1.2.ストレージ装置側のデータ書き込み処理
1.2.1.第1種のデータ書き込み処理
次に、ストレージ装置10側での第1種のデータ書き込み処理について、図6のフローチャートを参照して説明する。
今、ホスト装置20内の制御部25からストレージ装置10に対して、第1種の書き込み要求が通信部21経由で送信されたものとする。この第1種の書き込み要求は、ストレージ装置10内の通信部11で受信されて、当該ストレージ装置10内の制御部15に渡される。第1種の書き込み要求は、前述したように、書き込みブロックデータのアドレスと当該書き込みブロックデータとを引数として持つ。つまり第1種の書き込み要求は、書き込みブロックデータのアドレスと当該書き込みブロックデータとを含む。
制御部15は、第1種の書き込み要求を受け取ると、格納部14に格納されているブロックテーブル141の先頭エントリから順にブロックデータを読み出す(ステップ601)。このステップ601において制御部15は、ブロックデータを読み出すごとに、通信部11に対して当該ブロックデータを指定することにより、当該比較部12によるブロックデータ比較を行わせる。これにより比較部12は、制御部15によってブロックテーブル141から順に読み出されるブロックデータを、第1種の書き込み要求に含まれている書き込みブロックデータと比較する。
制御部15は、比較部12による比較の結果に基づき、書き込みブロックデータと同一のブロックデータ(つまり、ブロックデータが同一のブロック)が、ブロックテーブル141に登録されているかを判定する(ステップ602)。もし、登録されているならば(ステップ602のYes)、制御部15はステップ603に進む。
ステップ603において制御部15は、格納部14に格納されている論理ディスクボリュームテーブル142の対応するサブテーブル内の、第1種の書き込み要求に含まれているアドレスに対応するエントリに、当該アドレスとブロック識別子とを対応付けて登録する(ステップ603)。ここで、登録されるブロック識別子には、上記同一のブロックデータと対応付けてブロックテーブル141に登録されているブロック識別子が用いられる。また、対応するサブテーブルが、サブテーブル142Aまたは142Bのいずれであるかは、論理ディスクボリュームAまたはBのいずれがホスト装置20によりリザーブされているかによって決まる。
一方、ブロックデータが同一のブロックが、ブロックテーブル141に登録されていないならば(ステップ602のNo)、制御部15は第1種の書き込み要求に含まれている書き込みブロックデータのブロック識別子の生成を識別子生成部13に要求する。すると識別子生成部13は、書き込みブロックデータのブロック識別子、つまり書き込みブロックデータに付与されるべき、要求されたブロック識別子を生成する(ステップ604)。シリアル番号がブロック識別子として用いられる本実施形態では、最も最近に生成されたブロック識別子に続く番号が、要求されたブロック識別子として生成される。
制御部15は、識別子生成部13によって生成されたブロック識別子と当該ブロック識別子が付与されるべき書き込みブロックデータとを対応付けて、ブロックテーブル141に登録する(ステップ605)。このステップ605において制御部15は、論理ディスクボリュームテーブル142の対応するサブテーブル内の、第1種の書き込み要求に含まれているアドレスに対応するエントリに、当該アドレスと識別子生成部13によって生成されたブロック識別子とを対応付けて登録する。
なお、ステップ605が実行される場合、論理ディスクボリューム上では論理的には書き込みブロックデータの上書きとなって、ブロックテーブル141内のあるエントリが論理ディスクボリュームテーブル142の全てのエントリから参照されなくなることがある。このような状態が発生し得るのは、論理ディスクボリュームのアドレス及びブロックデータが、それぞれ論理ディスクボリュームテーブル142及びブロックテーブル141に分けて管理されることによる。例えば、論理ディスクボリュームAの第1セクタ(アドレス1)のブロックデータがブロックデータ“DATAE”からブロックデータ“DATAF”に更新される場合、アドレス1に対応付けられるブロック識別子は、例えば“IDE”から“IDF”となる。このときブロックテーブル141には、ブロックデータ“DATAE”が、ブロック識別子“IDE”に対応付けた状態で残される可能性がある。このような場合、上述の状態が発生する。そこで、例えば、直ちにブロックテーブル141上の該当するエントリを削除する(捨てる)か、或いは削除を遅延させるかなど、様々な設計を考えることができる。
制御部15は、ステップ603または605を実行し終えると、ステップ606に進む。ステップ606において制御部15は、第1種の書き込み要求に対する第1種のデータ書き込み処理の完了を示す完了応答を、ブロック識別子を戻り値として、通信部11経由でホスト装置20に返す。これにより制御部15は、ストレージ装置10側での第1種のデータ書き込み処理を終了する。ここで、戻り値としてのブロック識別子には、ステップ603からステップ606に進んだ場合には、当該ステップ603で登録されたブロック識別子が用いられ、ステップ605からステップ606に進んだ場合には、当該ステップ605で登録されたブロック識別子が用いられる。
1.2.2.第2種のデータ書き込み処理
次に、ストレージ装置10側での第2種のデータ書き込み処理について、図7のフローチャートを参照して説明する。
今、ホスト装置20内の制御部25からストレージ装置10に対して、第2種の書き込み要求が通信部21経由で送信されたものとする。この第2種の書き込み要求は、ストレージ装置10内の通信部11で受信されて、当該ストレージ装置10内の制御部15に渡される。第2種の書き込み要求は、前述したように、書き込みブロックデータのアドレスと当該書き込みブロックデータのブロック識別子とを引数として持つ。つまり第2種の書き込み要求は、書き込みブロックデータのアドレスとブロック識別子とを含む。
制御部15は、第2種の書き込み要求を受け取ると、当該第2種の書き込み要求に含まれているアドレスとブロック識別子とを対応付けて、論理ディスクボリュームテーブル142の対応するサブテーブル内の、当該アドレスに対応するエントリに登録する(ステップ701)。そして制御部15は、第2種の書き込み要求に対する第2種のデータ書き込み処理の完了を示す完了応答を、通信部11経由でホスト装置20に返す(ステップ701)。これにより制御部15は、ストレージ装置10側での第2種のデータ書き込み処理を終了する。
1.3.データ書き込み処理の例
次に、上述のデータ書き込み処理の例について説明する。
1.3.1.データ書き込み処理の第1の例
まず、データ書き込み処理の第1の例について、図2乃至図7に加えて、図8乃至図10を参照して説明する。
今、ストレージ装置10によって構成される論理ディスクボリュームA及びBが図2の状態にあり、ホスト装置20が論理ディスクボリュームAをリザーブしているものとする。このとき、ストレージ装置10の格納部14には、図3に示される状態のブロックテーブル141及び論理ディスクボリュームテーブル142が格納され、ホスト装置20のキャッシュ部24には、図4に示される状態のブロックテーブルキャッシュ241及び論理ディスクボリュームテーブルキャッシュ242が格納されているものとする。
このような状態で、ホスト装置20が、例えば論理ディスクボリュームAの第3セクタ(アドレス3)にブロックデータ“DATAF”を論理的に書き込んだ後の、論理ディスクボリュームA及びBの状態を図8に示す。同様に、ブロックテーブルキャッシュ241及び論理ディスクボリュームテーブルキャッシュ242の状態を図9に示し、ブロックテーブル141及び論理ディスクボリュームテーブル142の状態を図10に示す。
上述のブロックデータ“DATAF”の書き込み処理が開始される時点では、ホスト装置20のキャッシュ部24内のブロックテーブルキャッシュ241には、図4から明らかなように、ブロックデータ“DATAF”はキャッシュされていない(ステップ504のNo)。このためホスト装置20は、ストレージ装置10に対して、第1種の書き込み要求により、ブロックデータ“DATAF”とアドレス3とを送信する(ステップ505)。
すると、ストレージ装置10では、第1種のデータ書き込み処理が実行される。この第1種のデータ書き込み処理により、ブロックデータ“DATAF”のブロック識別子“IDF”が生成される(ステップ604)。そして、図10に示すように、ブロックテーブル141に、ブロックデータ“DATAF”及びそれに対応するブロック識別子“IDF”の対が追加登録される(ステップ605)。つまり、ブロックデータ“DATAF”及びそれに対応するブロック識別子“IDF”の対が登録されたエントリがブロックテーブル141に追加される。また、論理ディスクボリュームテーブル142のサブテーブル142A内の、論理ディスクボリュームAの第3セクタ(アドレス3)に対応するエントリの内容が、図3に示すアドレス3及びブロック識別子“IDC”の対から、図10に示すように、アドレス3及びブロック識別子“IDF”の対に更新される(ステップ605)。
その後、ストレージ装置10からホスト装置20に、第1種のデータ書き込み処理の完了を示す完了応答が、ブロック識別子“IDF”を戻り値として返される(606)。するとホスト装置20では、キャッシュサイズの制限によるキャッシュエントリの置換により、ブロックテーブルキャッシュ241内の、例えば先頭のエントリ、つまり図4に示すようにブロック識別子“IDB”及びブロックデータ“DATAB”の対が登録されていたエントリが、図9に示すように、ブロック識別子“IDF”及びブロックデータ“DATAF”の対が登録されたエントリに置き換えられる(ステップ506)。また、論理ディスクボリュームテーブルキャッシュ242のサブテーブルキャッシュ242A内の、論理ディスクボリュームAの第3セクタ(アドレス3)に対応するエントリ、つまり、図4に示すようにアドレス3及びブロック識別子“IDC”の対が登録されていたエントリが、図9に示すように、アドレス3及びブロック識別子“IDF”の対が登録されたエントリに置き換えられる(ステップ506)。先に説明したように、この置き換えは一例であって、キャッシュ置換方法によって置き換えの挙動は異なる。
1.3.2.データ書き込み処理の第2の例
次に、データ書き込み処理の第2の例について、図5乃至図10に加えて、図11乃至図13を参照して説明する。
まず、図8乃至図10に示したような状態で、ホスト装置20が、例えば論理ディスクボリュームBの第2セクタ(アドレス2)にブロックデータ“DATAF”を書き込んだ後の、論理ディスクボリュームA及びBの状態を図11に示す。同様に、ブロックテーブルキャッシュ241及び論理ディスクボリュームテーブルキャッシュ242の状態を図12に示し、ブロックテーブル141及び論理ディスクボリュームテーブル142の状態を図13に示す。このとき、ホスト装置20が論理ディスクボリュームBをリザーブしているものとする。
第2の例において、ブロックデータ“DATAF”の書き込み処理が開始される時点では、ホスト装置20のキャッシュ部24内のブロックテーブルキャッシュ241には、上述の第1の例と異なって、図9に示すようにブロックデータ“DATAF”がブロック識別子“IDF”に対応付けてキャッシュされている(ステップ504のYes)。このためホスト装置20は、ストレージ装置10に対して、第2種の書き込み要求により、ブロック識別子“IDF”及びアドレス2を送信する(ステップ507)。ここでは、ブロックデータ“DATAF”ではなくて、ブロック識別子“IDF”が送信されることに注目されたい。
すると、ストレージ装置10では、第2種のデータ書き込み処理が実行される。この第2種のデータ書き込み処理により、論理ディスクボリュームテーブル142のサブテーブル142B内の、論理ディスクボリュームBの第2セクタ(アドレス2)に対応するエントリ、つまり、図10に示すようにアドレス2及びブロック識別子“IDE”の対が登録されていたエントリが、図13に示すように、アドレス2及びブロック識別子“IDF”の対が登録されていたエントリに置き換えられる(ステップ701)。ここでは、ブロックテーブル141は書き換えられていないことに注目されたい。
その後、ストレージ装置10からホスト装置20に、第2種のデータ書き込み処理の完了を示す完了応答が返される(ステップ702)。するとホスト装置20では、論理ディスクボリュームテーブル142のサブテーブルキャッシュ242B内の、論理ディスクボリュームBの第2セクタ(アドレス2)に対応するエントリ、つまり図9に示すようにアドレス2及びブロック識別子“IDE”の対が登録されていたエントリが、図12に示すように、アドレス2及びブロック識別子“IDF”の対が登録されたエントリに置き換えられる(ステップ508)。即ち、サブテーブルキャッシュ242B内の、第2セクタ(アドレス2)に対応するエントリの内容が、アドレス2及びブロック識別子“IDF”の対に更新される。
2.データ読み出し処理
次に、ストレージ装置10に格納されたデータを読み出すためのデータ読み出し処理の手順について、図14及び図15のフローチャートを参照して説明する。図14はストレージ装置10からデータを読み出す際のホスト装置20側でのデータ読み出し処理の手順を示すフローチャート、図15はストレージ装置10からデータを読み出す際のストレージ装置10側でのデータ読み出し処理の手順を示すフローチャートである。
2.1.ホスト装置側のデータ読み出し処理
まず、ホスト装置20側でのデータ読み出し処理について、図14のフローチャートを参照して説明する。
今、ホスト装置20内のユーザ層27(より詳細には、ユーザ層27に属する、例えばアプリケーションのような要素)から当該ホスト装置20内のドライバ層26に対して、読み出し要求が発行されたものとする。この読み出し要求は、読み出されるべきデータが格納されている論理ディスクボリューム上のアドレス(開始アドレス)と、当該データのデータ長(セクタ数)とを引数として持つ。
ドライバ層26内の制御部25は、ユーザ層27からの読み出し要求を受け取ると、当該読み出し要求で指定されたアドレス及びデータ長(セクタ数)の示す、論理ディスクボリューム上のアドレス範囲をブロック単位に分割し、ブロックごとのアドレスを生成する(ステップ1401)。本実施形態では、1ブロックは1セクタであるため、1セクタ単位にアドレスが生成される。以後、制御部25は、ブロック(セクタ)ごとに(より詳細には、ブロックに対応するアドレスごとに)以下の手順の繰り返しを制御する(ステップ1402)。
制御部25は、現在処理対象となっているブロックに対応するアドレス(以下、現アドレスと称する)に基づき、論理ディスクボリュームテーブルキャッシュ242の対応するサブテーブルキャッシュを参照する(ステップ1403)。制御部25は、このエントリ参照結果に基づき、現アドレスに対応付けてブロック識別子がキャッシュされているかを判定する(ステップ1404)。つまり制御部25は、論理ディスクボリュームテーブルキャッシュ242の対応するサブテーブルキャッシュ内に、現アドレスに対応付けてブロック識別子が登録されているエントリが存在するかを判定する。
現アドレスに対応付けてブロック識別子がキャッシュされているならば(ステップ1404のYes)、制御部25は、当該ブロック識別子に基づき、ブロックテーブルキャッシュ241を参照する(ステップ1405)。制御部25は、このエントリ参照結果に基づき、上記ブロック識別子に対応付けてブロックデータがキャッシュされているかを判定する(ステップ1406)。
このように制御部25は、論理ディスクボリュームテーブルキャッシュ242に現アドレスに対応するブロック識別子がキャッシュ(格納)されており、かつ当該ブロック識別子に対応するブロックデータがブロックテーブルキャッシュ241にキャッシュ(格納)されているかを判定する(ステップ1405,1406)。もし、ブロックデータがキャッシュされているならば(ステップ1405,1406のYes)、制御部25は、当該ブロックデータをブロックテーブルキャッシュ241から読み出す(ステップ1407)。次に制御部25は、読み出されたブロックデータを、ユーザ層27(より詳細には、ユーザ層27内の読み出し要求の発行元)に返す(ステップ1408)。
一方、現アドレスに対応するブロック識別子がキャッシュされていないか(ステップ1405のNo)、或いは当該ブロック識別子に対応するブロックデータがキャッシュされていないならば(ステップ1406のNo)、制御部25はステップ1409に進む。ステップ1409において制御部25は、ストレージ装置10から読み出されるべき論理ディスクボリューム上のブロックデータのアドレスを引数として持つ読み出し要求を、ストレージ装置10に対して通信部21経由で送信し、当該読み出し要求に対するストレージ装置10によるデータ読み出し処理の完了を示す完了応答を待ち合わせる。
さて、ステップ1409でストレージ装置10からデータ読み出し処理の完了応答が返されるのを待ち合わせた結果、制御部25が当該完了応答を受信したものとする。この完了応答は、後述するように、読み出し要求の引数とした論理ディスクボリューム上のアドレスに対応するブロックデータ及び当該ブロックデータのブロック識別子を含む。このため制御部25は、完了応答の受信により、ストレージ装置10から読み出し要求で指定したブロックデータ及び当該ブロックデータのブロック識別子を取得する。
すると制御部25は、キャッシュ部24に格納されている論理ディスクボリュームテーブルキャッシュ242の対応するサブテーブルキャッシュに、読み出し要求の引数としたアドレスと取得したブロック識別子とが対応付けて設定された新たなエントリを登録する(ステッ1410)。このステップ1410において制御部25は、キャッシュ部24に格納されているブロックテーブルキャッシュ241に、取得したブロック識別子及びブロックデータが対応付けて設定された新たなエントリを登録する。前述したように、これらの新たなエントリを登録するために、適切なキャッシュ置換アルゴリズムが適用されているものとする。次に制御部25は、ブロックテーブルキャッシュ241に登録したブロックデータをユーザ層27(ユーザ層27内の読み出し要求の発行元)に返す(ステップ1408)。
制御部25は、上述のステップ1403乃至1408の処理を、ステップ1401で生成された全てのアドレスの各々について繰り返す(ステップ1402)。制御部25は、全てのアドレスについて上述の処理を実行し終えると、ホスト装置20側のデータ読み出し処理を終了する。
2.2.ストレージ装置側のデータ読み出し処理
次にストレージ装置10側でのデータ読み出し処理について、図15のフローチャートを参照して説明する。
今、ホスト装置20内の制御部25からストレージ装置10に対して、読み出し要求が通信部21経由で送信されたものとする。この読み出し要求は、ストレージ装置10内の通信部11で受信されて、当該ストレージ装置10内の制御部15に渡される。読み出し要求は、前述したように、読み出されるべきブロックデータのアドレスを引数として持つ。つまり読み出し要求は、読み出されるべきブロックデータのアドレスを含む。
制御部15は、読み出し要求を受け取ると、格納部14に格納されている論理ディスクボリュームテーブル142から、当該読み出し要求に含まれているアドレスに対応付けられているブロック識別子を読み出す(ステップ1501)。そして制御部15は、格納部14に格納されているブロックテーブル141から、ステップ1501で読み出されたブロック識別子に対応付けられているブロックデータを読み出す(ステップ1502)。
次に制御部15は、読み出し要求に対するデータ読み出し処理の完了を示す完了応答を、ブロックテーブル141から読み出されたブロックデータ及び当該ブロックデータのブロック識別子を戻り値として、通信部11経由でホスト装置20に返す(ステップ1503)。これにより制御部15は、ストレージ装置10側でのデータ読み出し処理を終了する。
2.3.データ読み出し処理の例
次に、データ読み込み処理の例について、図11乃至図15に加えて、図16乃至図18を参照して説明する。
今、ストレージ装置10によって構成される論理ディスクボリュームA及びBが図11の状態にあり、ホスト装置20が論理ディスクボリュームAをリザーブしているものとする。このとき、ホスト装置20のキャッシュ部24には、図12に示される状態のブロックテーブルキャッシュ241及び論理ディスクボリュームテーブルキャッシュ242が格納され、ストレージ装置10の格納部14には、図13に示される状態のブロックテーブル141及び論理ディスクボリュームテーブル142が格納されているものとする。
このような状態で、ホスト装置20が、例えば論理ディスクボリュームAの第2セクタ(アドレス2)のブロックデータを読み出すものとする。つまりホスト装置20(より詳細には、ホスト装置20のユーザ層27)において、論理ディスクボリュームAの第2セクタ(アドレス2)のブロックデータを読み出すための読み出し要求が発生したものとする。この読み出し要求は、論理ディスクボリュームA上のアドレス2と、ブロック数(セクタ数)1を示すデータ長とを含む。
この場合、ホスト装置20では、論理ディスクボリュームAのアドレス2についてのみ、当該アドレス2のブロックデータを読み出すための、データ読み出し処理が行われる。ここで、論理ディスクボリュームテーブルキャッシュ242のサブテーブルキャッシュ242Aには、図12から明らかなように、論理ディスクボリュームAのアドレス2を含むエントリは存在しない。つまり、論理ディスクボリュームテーブルキャッシュ242のサブテーブルキャッシュ242Aには、論理ディスクボリュームAのアドレス2のブロックデータのブロック識別子が、当該アドレス2に対応付けてキャッシュされていない(ステップ1404のNo)。したがって、ブロックテーブルキャッシュ241には、論理ディスクボリュームAのアドレス2のブロックデータはキャッシュされていない。
そこでホスト装置20は、論理ディスクボリュームAのアドレス2のブロックデータ(ここでは、“DATAA”)とそのブロック識別子(ここでは、“IDA”)を取得するために、論理ディスクボリュームAのアドレス2を引数として持つ読み出し要求を、ストレージ装置10に対して通信部21経由で送信する(ステップ1409)。
するとストレージ装置10ではデータ読み出し処理が実行される。このストレージ装置10でのデータ読み出し処理により、論理ディスクボリュームテーブル142のサブテーブル142内で論理ディスクボリュームAのアドレス2Aが登録されているエントリ(図18に示すサブテーブル142A内でハッチングが施されているエントリ)から、当該アドレス2に対応付けて登録されているブロック識別子“IDA”が読み出される(ステップ1501)。また、ブロックテーブル141内で、ブロック識別子“IDA”が登録されているエントリ(図18に示すブロックテーブル141内でハッチングが施されているエントリ)から、当該ブロック識別子“IDA”に対応付けて登録されているブロックデータ“DATAA”が読み出される(ステップ1502)。
その後、ストレージ装置10からホスト装置20に、ブロックデータ“DATAA”及びそのブロック識別子“IDA”を戻り値として含む完了応答が返される(ステップ1503)。
するとホスト装置20では、論理ディスクボリュームテーブル142のサブテーブルキャッシュ242Aに、論理ディスクボリュームAのアドレス2とブロックデータ“DATAA”のブロック識別子“IDA”との対が設定されたエントリが登録される(ステップ1410)。ここでは、図12に示されるサブテーブルキャッシュ242A内の、論理ディスクボリュームAの第4セクタ(アドレス4)のエントリが捨てられて、アドレス2とブロック識別子“IDA”との対が設定されたエントリが登録される。つまり、図12に示されるサブテーブルキャッシュ242A内の、論理ディスクボリュームAの第4セクタ(アドレス4)のエントリが、キャッシュエントリの置換により、図17に示すように、アドレス2とブロック識別子“IDA”の対が登録されたエントリ(サブテーブルキャッシュ242A内でハッチングが施されているエントリ)に置き換えられる。
またステップ1410では、ブロックテーブル141に、ブロックデータ“DATAA”のブロック識別子“IDA”と当該ブロックデータ“DATAA”との対が設定されたエントリが登録される。ここでは、図12に示されるブロックテーブルキャッシュ241内の、ブロック識別子“IDC”のエントリが捨てられて、ブロック識別子“IDA”とブロックデータ“DATAA”との対が設定されたエントリが登録される。つまり、図12に示されるブロックテーブルキャッシュ241内の、ブロック識別子“IDA”のエントリが、キャッシュエントリの置換により、図17に示すように、ブロック識別子“IDA”とブロックデータ“DATAA”との対が登録されたエントリ(ブロックテーブルキャッシュ241内でハッチングが施されているエントリ)に置き換えられる。ブロックテーブルキャッシュ241にブロック識別子IDA”のブロックデータ“DATAA”が登録されたことにより、論理ディスクボリュームテーブルキャッシュ242のサブテーブルキャッシュ242B内の第1セクタ(アドレス1)のエントリも、図17に示すように当該ブロックデータ“DATAA”を指すことに注意されたい。
上述したように、本実施形態によれば、ホスト装置20からストレージ装置10にデータを書き込む際の、ブロックデータ(書き込みブロックデータ)と重複するブロックデータが既にストレージ装置10に格納されているかを判定するための比較・重複判定処理(ステップ601,602)が、ストレージ装置10において行われる。この判定処理の結果、重複が検出されなかったブロックデータには、ストレージ装置10によって固有のブロック識別子が付与される。これらの処理は、ストレージ装置10で集中的に行われることから、たとえホスト装置20を含む複数のホスト装置がストレージ装置10を共有する構成であっても、複数のホスト装置間でデータ保護のためにアクセスを排他する、いわゆる分散排他を行う必要がない。
また本実施形態では、ストレージ装置10によってブロックデータに付与された固有のブロック識別子は、当該ストレージ装置10からホスト装置20に返されて、ホスト装置20において、ブロック識別子とブロックデータとを対にしてキャッシュ部24に登録(キャッシュ)される。そこで本実施形態では、ホスト装置20からストレージ装置10にデータを書き込む際には、まずホスト装置20において、ブロックデータ(書き込みブロックデータ)と当該ホスト装置20のキャッシュ部24にキャッシュされているブロックデータとの間で、比較・重複判定処理(ステップ503,504)が行われる。ホスト装置20において、重複が検出されたときには、ブロックデータに代えて、当該ブロックデータと対応付けてキャッシュされているブロック識別子が、ホスト装置20からストレージ装置10に送信される。これにより、頻繁に同じデータパタンからなるブロックデータがホスト装置20からストレージ装置10に書き込まれるときには、重複排除処理をストレージ装置10からホスト装置20にオフロードすることができ、ホスト装置20とストレージ装置10との間でのデータ転送量も削減できる。よって本実施形態においては、従来技術と比較して、重複排除処理をより高速に行うことができ、データの書き込み処理を高速化できる。
更に本実施形態によれば、ホスト装置20内では、ブロックデータがブロックテーブルキャッシュ241に重複排除された形で保持される。このため、少ないメモリ容量で仮想的により多くのキャッシュデータを保持することができる。
なお、上記実施形態では、ホスト装置20が論理ディスクボリュームAまたはBのいずれかをリザーブしている場合を想定している。しかし、ホスト装置20が必ずしも論理ディスクボリュームAまたはBのいずれかをリザーブしている必要はない。この場合、書き込み要求または読み出し要求に、データが書き込まれるべきまたは読み出されるべき論理ディスクボリュームAまたはBの情報、例えば論理ディスクボリューム番号を含めればよい。
[第1の変形例]
次に、上記実施形態の第1の変形例について、図1を援用して説明する。
第1の変形例が上記実施形態と相違する点は、バッファ部28が用いられる点にある。バッファ部28は、図1に示すように、ホスト装置20のドライバ層26に備えられているものとする。このバッファ部28は、制御部25により制御される。制御部25は、ホスト装置20内のユーザ層27からドライバ層26に発行される、データ(書き込みデータ)を含む書き込み要求(例えばユーザ層27内のアプリケーションなどからの書き込み要求)を、バッファ部28内に格納(バッファリング)する。
制御部25は、例えば、バッファ部28に格納されている書き込み要求がバッファサイズにまで達したとき、或いは、当該バッファ部28に格納されている書き込み要求が最も最近に読み出された時点からの経過時間が閾値に達したときに、当該バッファ部28から次に実行されるべき書き込み要求を読み込出し、当該読み出された書き込み要求に従って、上記実施形態と同様のデータ書き込み処理を行う。また制御部25は、ユーザ層27からドライバ層26に対して読み出し要求が発行された場合、この読み出し要求に基づいて論理ディスクボリュームテーブルキャッシュ242を参照する前に、バッファ部28を参照することで、データ読み出しのためのアドレスに対応する最新のデータ(目的のデータ)が当該バッファ部28に格納されているかを調べる。目的のデータが格納されているならば、制御部25は、当該データをバッファ部28から読み込んで、ユーザ層27(読み出し要求の発行元)に応答する。
このように上記実施形態の第1の変形例によれば、書き込みデータを含む書き込み要求を、ホスト装置20内でバッファ部28に格納することで、書き込み処理を高速化することができる。この書き込み処理では、複数の書き込み要求に含まれている、アドレスが連続する書き込みデータを連結したり、書き込み順序を入れ替えるなどの手法を適用することで、書き込み処理を一層高速化することができる。また第1の変形例によれば、同じアドレスに対して上書き処理が繰り返されるようなときに、重複データ排除の処理回数を減らすことができるため(最新のデータに対してのみ処理すればよいため)、これによっても書き込み処理を高速化することができる。
[第2の変形例]
次に、上記実施形態の第2の変形例について、図1を援用して説明する。
第2の変形例が上記実施形態と相違する点は、代表値生成部29が用いられる点にある。図1に示すように、代表値生成部29はホスト装置20のドライバ層26に備えられているものとする。代表値生成部29は、ホスト装置20の制御部25により利用される。
代表値生成部29は、入力としてブロックデータを受け取ると、当該ブロックデータに対応するブロック代表値を出力する。代表値生成部29がブロックデータからブロック代表値を出力(生成)する仕組みには、例えばハッシュ関数(SHA1など)を利用することができ、ブロックデータのハッシュ値をブロック代表値として用いることができる。ブロック代表値のサイズ(ブロック代表値の記憶に必要な記憶容量)はブロックデータのサイズと比較して小さいものとする。
第2の変形例では更に、ストレージ装置10の格納部14に格納されるブロックテーブル141と、ホスト装置20のキャッシュ部24に格納されるブロックテーブルキャッシュ241とには、ブロックデータに固有のブロック識別子に加えて、当該ブロックデータに基づいて生成されたブロック代表値も保持される。つまりブロックテーブル141及びブロックテーブルキャッシュ241には、いずれも、ブロックデータに固有のブロック識別子と当該ブロックデータとが対応付けて保持されると共に、ブロックデータのブロック代表値と当該ブロックデータとが対応付けて保持される。なお、ブロック識別子、ブロック体表値及びブロックデータが対応付けて保持されるテーブルまたはテーブルキャッシュの構成では、ブロック代表値を高速に検索することが難しい。そこで、テーブルまたはテーブルキャッシュとは別に、ブロック代表値を高速に検索するための、例えばBツリーのようなインデックスを用いてもよい。
第2の変形例では、ホスト装置20内の制御部25は、図5に示すデータ書き込み処理のステップ503で重複(同一性)検出のためにブロックデータを比較する前に、代表値生成部29を用いて、書き込みブロックデータのブロック代表値を生成する。そして代表値生成部29は、生成されたブロック代表値を、ブロックテーブルキャッシュ241の各エントリにブロックデータ及びブロック識別子と対応付けて登録(キャッシュ)されているブロック代表値と比較する。
もし、ブロック代表値の一致が検出されたならば、制御部25は、一致したブロック代表値に対応するブロックデータ同士のみを比較する。つまり制御部25は、書き込みブロックデータと、ブロックテーブルキャッシュ241にキャッシュされている、当該書き込みブロックデータのブロック代表値に一致したブロック代表値のブロックデータとを比較することで、両ブロックデータの同一性を検出(判定)する。制御部25は、ブロックデータ同士の比較で一致(同一性)が検出されたならばキャッシュヒットと判定し、一致が検出されなかったならばキャッシュミスヒットと判定する。ブロック代表値のサイズはブロックデータに対して小さいため、より高速に比較する(キャッシュヒット判定を行う)ことが可能になる。
制御部25は、キャッシュミスヒットを判定したときには、ストレージ装置10に対して第1種の書き込み要求を送信する。この第1種の書き込み要求には、上記実施形態と異なり、「書き込みブロックデータのアドレスと当該書き込みブロックデータ」に加えてブロック代表値が含まれる。
ホスト装置20からの第1種の書き込み要求を受信したストレージ装置10では、図6に示すデータ書き込み処理のステップ601で重複(同一性)検出のためにブロックデータを比較する前に、制御部15が、当該第1種の書き込み要求に含まれているブロック代表値を、ブロックテーブル141の各エントリにブロックデータ及びブロック識別子と対応付けて登録されているブロック代表値と比較する。
もし、ブロック代表値の一致が検出されたならば、制御部15は、一致したブロック代表値に対応するブロックデータ同士を比較することで、両ブロックデータの同一性を検出(判定)する。ブロックデータ同士の比較で一致(同一性)が検出されたならば、書き込みブロックデータに重複するブロックデータがブロックテーブル141に格納されていることから、制御部15はブロックテーブル141へのブロックデータ登録を行わずに、論理ディスクボリュームテーブル142の対応するサブテーブル内の、第1種の書き込み要求に含まれているアドレスに対応するエントリに、当該アドレスとブロック識別子及びブロック代表値とを対応付けて登録する。
これに対し、ブロックデータ同士の比較で一致が検出されなかったならば、書き込みブロックデータに重複するブロックデータはブロックテーブル141に格納されていないことから、制御部15は、ブロックテーブル141に、ブロック識別子、ブロック代表値及びブロックデータを対応付けて登録する。また制御部15は、論理ディスクボリュームテーブル142の対応するサブテーブル内の、第1種の書き込み要求に含まれているアドレスに対応するエントリに、当該アドレスとブロック識別子及びブロック代表値とを対応付けて登録する。
このように、上記実施形態の第2の変形例によれば、ホスト装置20及びストレージ装置10のいずれにおいても、ブロックデータを同士を比較する前にブロックデータよりもデータサイズの小さなブロック代表値同士が比較される。そして、一致が検出された場合、一致したブロック代表値に対応するブロックデータ同士のみに絞って、両者が比較される。これにより、書き込みブロックデータを、ブロックテーブルキャッシュ241またはブロックテーブル141に登録されているブロックデータと順次比較する場合と比べて、より高速に比較することができる。
背景技術の欄でも述べたように、重複排除処理では、データ自体を比較するのではなく、データから求めた代表値(具体的にはハッシュ値)を比較することが多い。理論上、代表値は代表値間での衝突の可能性をもっており、衝突が発生したときには、データ破壊が生じてしまうことになる。そのため様々な工夫が考案されているが、この課題を本質的に回避するためには、データ自体を比較するしかない。しかしデータ自体の比較は高コストである。
これに対して上記実施形態の第2の変形例では、上述のように、まずブロックデータよりもデータサイズの小さなブロック代表値同士を比較し、一致が検出された場合、一致したブロック代表値に対応するブロックデータ同士のみに絞って、両者を比較する構成とすることにより、データ自体の比較回数を少なくし、より高速に重複排除処理を行うことができる
また第2の変形例によれば、ホスト装置20で生成したブロック代表値をストレージ装置10が利用する構成としているため、当該ストレージ装置10側でのブロック代表値生成が不要になる。
[第3の変形例]
次に、上記実施形態の第3の変形例について、図1を援用して説明する。ここでは、ストレージ装置10が、ホスト装置20を含む複数のホスト装置によって共有されるものとする。
ホスト装置20内の制御部25は、ストレージ装置10に対してデータの書き込みまたは読み出しを行う前の任意の機会に、重複排除動作に関する他のホスト装置との間の排他を、ストレージ装置10に対して要求する。この排他の粒度として、例えば論理ディスクボリューム単位や、特定の論理ディスクボリュームのあるアドレス範囲(アドレス空間)などを指定することができる。
ホスト装置20からの排他要求を受けたストレージ装置10の制御部15は、当該ホスト装置20と他のホスト装置との間で排他要求が衝突していなければ、当該ホスト装置20に対して排他成功を通知する。これに対して排他要求が衝突しているときには、制御部15は、ホスト装置20に対して排他失敗を通知すると共に、既に排他成功を通知している他のホスト装置に対して、排他の終了(引き剥がし)を通知する。
ホスト装置20がストレージ装置10から排他成功の通知を受けた場合、当該ホスト装置20の制御部25は、上記実施形態で適用されたようなデータ書き込み処理またはデータ読み出し処理を行う。つまり、ストレージ装置10は、ホスト装置20からの排他要求を受けた際に、他のホスト装置との間で排他要求が衝突しておらず、データの書き込みまたは読み出しが当該ホスト装置20を含む複数のホスト装置の間で競合していないときは、当該ホスト装置20に対して排他成功を通知することにより、重複排除をホスト装置20と連携して行う。この排他成功の通知は、ストレージ装置10からホスト装置20への重複排除の連携の指示、または重複排除のための機能の一部の委譲の指示であるといえる。
これに対し、ホスト装置20が排他失敗の通知を受けた場合、当該ホスト装置20の制御部25は、上記実施形態で適用されたようなデータ書き込み処理またはデータ読み出し処理を行うことなく、例えば、ユーザ層27から発行された書き込み要求または読み出し要求をそのままストレージ装置10に送信する。一方、排他終了の通知を受けた他のホスト装置は、上記実施形態で適用されたような重複排除動作を終了する。
このように、上記実施形態の第3の変形例によれば、例えば論理ディスクボリュームがホスト装置20にリザーブされているときにのみ、重複排除のための機能の一部を当該ホスト装置20に委譲することで、ホスト装置20と他のホスト装置との間での書き込み競合によるデータ破壊を防ぐことができる。また、論理ディスクボリューム内の一部のアドレス範囲が、例えばホスト装置20以外のホスト装置に対してロックされているときに、当該一部のアドレス範囲へのアクセスに限って、重複排除のための機能の一部を当該ホスト装置20に委譲することでも、ホスト装置20と他のホスト装置との間での書き込み競合によるデータ破壊を防ぐことができる。
また、ストレージ装置10の負荷が例えば閾値を超えた場合に、当該ストレージ装置10が重複排除のための機能の一部をホスト装置20に委譲して、重複排除を当該ホスト装置20と連携して行うようにしてもよい。即ち、ストレージ装置10の負荷状況に応じて、当該ストレージ装置10がホスト装置20との連係動作を動的に切り替えてもよい。
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
10…ストレージ装置、11…通信部、12…比較部(第1の比較手段)、13…識別子生成部、14…格納部、15…制御部(第1の制御手段)、20…通信部、22…比較部(第2の比較手段)、24…キャッシュ部、25…制御部(第2の制御手段)、26…ドライバ層、27…ユーザ層、28…バッファ部、29…代表値生成部、141…ブロックテーブル(第1の記憶手段)、142…論理ディスクボリュームテーブル(第2の記憶手段)、142A,142B…サブテーブル、241…ブロックテーブルキャッシュ(第1のキャッシュ)、242…論理ディスクボリュームテーブルキャッシュ(第2のキャッシュ)、242A,242B…サブテーブルキャッシュ。

Claims (9)

  1. キャッシュを備えたホスト装置と連携して重複データを排除するストレージ装置であって、
    ブロックデータごとに、当該ブロックデータに固有のブロック識別子と当該ブロックデータとを対応付けて格納する第1の記憶手段と、
    ブロックデータのアドレスごとに、当該アドレスと当該アドレスに対応するブロックデータに固有のブロック識別子とを対応付けて格納する第2の記憶手段と、
    前記ホスト装置からの書き込み要求を含む各種の要求を処理する制御手段と、
    前記制御手段によって指定されたブロックデータに固有のブロック識別子を生成するブロック識別子生成手段と、
    前記制御手段によって指定されたブロックデータを前記第1の記憶手段に格納されているブロックデータと比較する比較手段とを具備し、
    前記制御手段は、
    ブロックデータを単位に処理可能なデータの前記ストレージ装置への書き込みを指定する書き込み要求が前記ホスト装置で発生し、前記書き込みが指定されたデータに含まれている第1のブロックデータが、前記ホスト装置の前記キャッシュに格納されているブロックデータのいずれとも一致しないために、前記第1のブロックデータと当該第1のブロックデータの第1のアドレスとを含む第1種の書き込み要求が前記ホスト装置から前記ストレージ装置に送信された場合、前記第1のブロックデータを指定して前記比較手段によるブロックデータ比較を行わせ、このブロックデータ比較の結果、前記第1のブロックデータが、前記第1の記憶手段に格納されているブロックデータのいずれとも一致しない場合、前記ブロック識別子生成手段により当該第1のブロックデータに固有の第1のブロック識別子を生成させて、前記第1のブロック識別子と前記第1のブロックデータとを対応付けて前記第1の記憶手段に格納し、且つ前記第1のアドレスと前記第1のブロック識別子とを対応付けて前記第2の記憶手段に格納する一方、前記第1のブロック識別子と前記第1のブロックデータとを対応付けて、且つ前記第1のアドレスと前記第1のブロック識別子とを対応付けて、それぞれ前記ホスト装置の前記キャッシュに格納させるために、前記第1のブロック識別子を前記ホスト装置に送信し、
    前記書き込みが指定されたデータに含まれている第2のブロックデータが、前記ホスト装置の前記キャッシュに格納されているブロックデータのいずれか1つと一致した結果、前記第2のブロックデータに固有の第2のブロック識別子と前記第2のブロックデータの第2のアドレスとを含む第2種の書き込み要求が前記ホスト装置から前記ストレージ装置に送信された場合、前記第2のアドレスと前記第2のブロック識別子とを対応付けて前記第2の記憶手段に格納する
    ことを特徴とするストレージ装置。
  2. 前記制御手段は、前記ブロックデータ比較の結果、前記第1のブロックデータが、前記第1の記憶手段に格納されているブロックデータのうちの第3のブロックデータと一致した場合、前記第3のブロックデータと対応付けて前記第1の記憶手段に格納されている第3のブロック識別子を前記第1のアドレスと対応付けて前記第2の記憶手段に格納する一方、前記第3のブロック識別子と前記第3のブロックデータとを対応付けて、且つ前記第1のアドレスと前記第3のブロック識別子とを対応付けて、それぞれ前記ホスト装置の前記キャッシュに格納させるために、前記第3のブロック識別子を前記ホスト装置に送信することを特徴とする請求項1記載のストレージ装置。
  3. 前記制御手段は、ブロックデータを単位に処理可能なデータの前記ストレージ装置からの読み出しを指定する第1の読み出し要求が前記ホスト装置で発生し、前記読み出しが指定されたデータに含まれる第4のブロックデータが前記ホスト装置の前記キャッシュに格納されていないために、前記第4のブロックデータの第4のアドレスを含む第2の読み出し要求が前記ホスト装置から前記ストレージ装置に送信された場合、前記第4のアドレスに対応付けて前記第2の記憶手段に格納されている第4のブロック識別子を取得すると共に、前記第4のブロック識別子に対応付けて前記第1の記憶手段に格納されているブロックデータを前記第4のブロックデータとして取得して、前記取得した第4のブロック識別子及び前記第4のブロックデータを前記ホスト装置に送信することを特徴とする請求項2記載のストレージ装置。
  4. 前記第1の記憶手段には、ブロックデータに基づいて生成された、当該ブロックデータよりもサイズが小さいブロック代表値が、当該ブロックデータに固有のブロック識別子に加えて、当該ブロックデータに対応付けて格納されており、
    前記第1種の書き込み要求は、前記第1のブロックデータに基づいて前記ホスト装置で生成された第1のブロック代表値を、前記第1のブロックデータ及び前記第1のアドレスに加えて含んでおり、
    前記比較手段は、前記制御手段によってブロック代表値が指定された場合、当該指定されたブロック代表値を前記第1の記憶手段に格納されているブロック代表値と順次比較し、
    前記制御手段は、前記第1のブロックデータを指定する前に、前記第1のブロック代表値を指定して前記比較手段によるブロック代表値比較を行わせ、このブロック代表値比較の結果、前記第1のブロック代表値が前記第1の記憶手段に格納されているブロック代表値のいずれとも一致しない場合、前記第1のブロック識別子と前記第1のブロック代表値と前記第1のブロックデータとを対応付けて前記第1の記憶手段に格納し、且つ前記第1のアドレスと前記第1のブロック識別子とを対応付けて前記第2の記憶手段に格納することを特徴とする請求項1記載のストレージ装置。
  5. 前記制御手段は、前記ブロック代表値比較により、前記第1のブロック代表値に一致する第4のブロック代表値が検出された場合、前記第4のブロック代表値と対応付けて前記第1の記憶手段に格納されている第4のブロックデータを前記比較手段により前記第1のブロックデータと比較させ、前記第1のブロックデータと前記第4のブロックデータとが一致した場合、前記第4のブロックデータと対応付けて前記第1の記憶手段に格納されている第4のブロック識別子を前記第1のアドレスと対応付けて前記第2の記憶手段に格納する一方、前記第4のブロック識別子と前記第4のブロック代表値と前記第4のブロックデータとを対応付けて、且つ前記第1のアドレスと前記第4のブロック識別子とを対応付けて、それぞれ前記ホスト装置の前記キャッシュに格納させるために、前記第4のブロック識別子及び前記第4のブロック代表値を前記ホスト装置に送信することを特徴とする請求項4記載のストレージ装置。
  6. 前記制御手段は、前記ホスト装置で前記書き込み要求が発生した際に必要な重複排除のための処理のうちの一部の処理であって、前記書き込みが指定されたデータに含まれているブロックデータが前記ホスト装置の前記キャッシュに格納されているかの判定を含む一部の処理を前記ホスト装置に委譲するための指示を前記ホスト装置に与えることを特徴とする請求項1記載のストレージ装置。
  7. 前記制御手段は、前記ホスト装置からのストレージ装置に対するデータの書き込みまたは読み出しが他のホスト装置と競合しない場合に、前記委譲するための指示を前記ホスト装置に与えることを特徴とする請求項6記載のストレージ装置。
  8. ストレージ装置とホスト装置とを備え、前記ストレージ装置が前記ホスト装置と連携して重複データを排除するストレージシステムであって、
    前記ストレージ装置は、
    ブロックデータごとに、当該ブロックデータに固有のブロック識別子と当該ブロックデータとを対応付けて格納する第1の記憶手段と、
    ブロックデータのアドレスごとに、当該アドレスと当該アドレスに対応するブロックデータに固有のブロック識別子とを対応付けて格納する第2の記憶手段と、
    前記ホスト装置からの書き込み要求を含む各種の要求を処理する第1の制御手段と、
    前記第1の制御手段によって指定されたブロックデータに固有のブロック識別子を生成するブロック識別子生成手段と、
    前記第1の制御手段によって指定されたブロックデータを前記第1の記憶手段に格納されているブロックデータと比較する第1の比較手段とを具備し、
    前記ホスト装置は、
    ブロックデータごとに、当該ブロックデータに固有のブロック識別子と当該ブロックデータとを対応付けて格納する第1のキャッシュと、
    ブロックデータのアドレスごとに、当該アドレスと当該アドレスに対応するブロックデータに固有のブロック識別子とを対応付けて格納する第2のキャッシュと、
    前記ホスト装置で発生した書き込み要求を含む各種の要求を処理する第2の制御手段と、
    前記第2の制御手段によって指定されたブロックデータを前記第1のキャッシュに格納されているブロックデータと比較する第2の比較手段とを具備し、
    前記第2の制御手段は、
    ブロックデータを単位に処理可能なデータの前記ストレージ装置への書き込みを指定する書き込み要求が前記ホスト装置で発生した場合、前記書き込みが指定されたデータを構成するブロックデータごとに、前記第2の比較手段によるブロックデータ比較を行わせ、
    前記第2の比較手段によるブロックデータ比較の結果、前記書き込みが指定されたデータに含まれている第1のブロックデータが、前記ホスト装置の前記第1のキャッシュに格納されているブロックデータのいずれとも一致しない場合には、前記第1のブロックデータと当該第1のブロックデータの第1のアドレスとを含む第1種の書き込み要求を前記ホスト装置から前記ストレージ装置に送信し、
    前記第2の比較手段によるブロックデータ比較の結果、前記書き込みが指定されたデータに含まれている第2のブロックデータが、前記ホスト装置の前記第1のキャッシュに格納されているブロックデータのいずれか1つと一致した場合には、前記一致したブロックデータと対応付けて前記第1のキャッシュに格納されている第2のブロック識別子と前記第2のブロックデータの第2のアドレスとを含む第2種の書き込み要求を前記ホスト装置から前記ストレージ装置に送信し、
    前記第1種の書き込み要求に対する完了応答として前記第1のブロックデータに固有の第1のブロック識別子が前記ストレージ装置から返された場合、前記第1のブロック識別子と前記第1のブロックデータとを対応付けて前記第1のキャッシュに格納し、且つ前記第1のアドレスと前記第1のブロック識別子とを対応付けて前記第2のキャッシュに格納し、
    前記第2種の書き込み要求に対する前記ストレージ装置からの完了応答に応じて、前記第2のアドレスと前記第2のブロック識別子とを対応付けて前記第2のキャッシュに格納し、
    前記第1の制御手段は、
    前記第1種の書き込み要求が前記ストレージ装置で受信された場合、前記第1のブロックデータを指定して前記第1の比較手段によるブロックデータ比較を行わせ、このブロックデータ比較の結果、前記第1のブロックデータが、前記第1の記憶手段に格納されているブロックデータのいずれとも一致しない場合、前記ブロック識別子生成手段により当該第1のブロックデータに固有の前記第1のブロック識別子を生成させて、前記第1のブロック識別子と前記第1のブロックデータとを対応付けて前記第1の記憶手段に格納し、且つ前記第1のアドレスと前記第1のブロック識別子とを対応付けて前記第2の記憶手段に格納する一方、前記第1種の書き込み要求に対する完了応答として前記第1のブロック識別子を前記ホスト装置に送信し、
    前記第2種の書き込み要求が前記ストレージ装置で受信された場合、前記第2のアドレスと前記第2のブロック識別子とを対応付けて前記第2の記憶手段に格納する一方、前記第2種の書き込み要求に対する完了応答を前記ホスト装置に送信する
    ことを特徴とするストレージシステム。
  9. 第1の比較手段、ブロック識別子生成手段及び第1の制御手段を含むストレージ装置と、第2の比較手段及び第2の制御手段を含むホスト装置とを備えたストレージシステムにおいて、前記ストレージ装置が前記ホスト装置と連携して重複データを排除するための重複排除方法であって、
    ブロックデータを単位に処理可能なデータの前記ストレージ装置への書き込みを指定する書き込み要求が前記ホスト装置で発生した場合、前記書き込みが指定されたデータを構成するブロックデータごとに、前記第2の比較手段が、当該ブロックデータを、前記ホスト装置に含まれている第1のキャッシュに格納されているブロックデータと比較するステップと、
    前記第2の比較手段によるブロックデータ比較の結果、前記書き込みが指定されたデータに含まれている第1のブロックデータが、前記第1のキャッシュに格納されているブロックデータのいずれとも一致しない場合、前記第1のブロックデータと当該第1のブロックデータの第1のアドレスとを含む第1種の書き込み要求を、前記第2の制御手段が前記ホスト装置から前記ストレージ装置に送信するステップと、
    前記第1種の書き込み要求が前記ストレージ装置で受信された場合、前記第1の比較手段が、前記第1のブロックデータを、前記ストレージ装置に含まれている第1の記憶手段に格納されているブロックデータと比較するステップと、
    前記第1の比較手段によるブロックデータ比較の結果、第1のブロックデータが、前記第1の記憶手段に格納されているブロックデータのいずれとも一致しない場合、前記ブロック識別子生成手段が当該第1のブロックデータに固有の第1のブロック識別子を生成するステップと、
    前記第1の制御手段が、前記第1のブロック識別子と前記第1のブロックデータとを対応付けて前記第1の記憶手段に格納し、且つ前記第1のアドレスと前記第1のブロック識別子とを対応付けて、前記ストレージ装置に含まれている第2の記憶手段に格納するステップと、
    前記格納するステップの後、前記第1の制御手段が、前記第1種の書き込み要求に対する完了応答として前記第1のブロック識別子を前記ホスト装置に送信するステップと、
    前記第1種の書き込み要求に対する完了応答を受けて、前記第2の制御手段が、前記第1のブロック識別子と前記第1のブロックデータとを対応付けて前記第1のキャッシュに格納し、且つ前記第1のアドレスと前記第1のブロック識別子とを対応付けて前記ホスト装置に含まれている第2のキャッシュに格納するステップと、
    前記第2の比較手段によるブロックデータ比較の結果、前記書き込みが指定されたデータに含まれている第2のブロックデータが、前記第1のキャッシュに格納されているブロックデータのいずれか1つと一致した場合には、前記一致したブロックデータと対応付けて前記第1のキャッシュに格納されている第2のブロック識別子と前記第2のブロックデータの第2のアドレスとを含む第2種の書き込み要求を、前記第2の制御手段が前記ホスト装置から前記ストレージ装置に送信するステップと、
    前記第2種の書き込み要求が前記ストレージ装置で受信された場合、前記第1の制御手段が、前記第2のアドレスと前記第2のブロック識別子とを対応付けて前記第2の記憶手段に格納するステップと、
    前記第2のアドレスと前記第2のブロック識別子との格納の後、前記第1の制御手段が、前記第2種の書き込み要求に対する完了応答を前記ホスト装置に送信するステップと、
    前記第2種の書き込み要求に対する完了応答を受けて、前記第2の制御手段が、前記第2のアドレスと前記第2のブロック識別子とを対応付けて前記第2のキャッシュに格納するステップと
    を具備することを特徴とする重複排除方法。
JP2010068512A 2010-03-24 2010-03-24 ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法 Active JP4892072B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010068512A JP4892072B2 (ja) 2010-03-24 2010-03-24 ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法
US13/069,921 US8447742B2 (en) 2010-03-24 2011-03-23 Storage apparatus which eliminates duplicated data in cooperation with host apparatus, storage system with the storage apparatus, and deduplication method for the system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010068512A JP4892072B2 (ja) 2010-03-24 2010-03-24 ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法

Publications (2)

Publication Number Publication Date
JP2011203842A JP2011203842A (ja) 2011-10-13
JP4892072B2 true JP4892072B2 (ja) 2012-03-07

Family

ID=44657516

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010068512A Active JP4892072B2 (ja) 2010-03-24 2010-03-24 ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法

Country Status (2)

Country Link
US (1) US8447742B2 (ja)
JP (1) JP4892072B2 (ja)

Families Citing this family (153)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8584145B1 (en) 2010-08-06 2013-11-12 Open Invention Network, Llc System and method for dynamic transparent consistent application-replication of multi-process multi-threaded applications
US8621275B1 (en) 2010-08-06 2013-12-31 Open Invention Network, Llc System and method for event-driven live migration of multi-process applications
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US11275509B1 (en) 2010-09-15 2022-03-15 Pure Storage, Inc. Intelligently sizing high latency I/O requests in a storage environment
US8732426B2 (en) 2010-09-15 2014-05-20 Pure Storage, Inc. Scheduling of reactive I/O operations in a storage environment
US8589655B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment
US8589625B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US9244769B2 (en) 2010-09-28 2016-01-26 Pure Storage, Inc. Offset protection data in a RAID array
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US9317377B1 (en) * 2011-03-23 2016-04-19 Riverbed Technology, Inc. Single-ended deduplication using cloud storage protocol
US8639861B1 (en) * 2011-03-31 2014-01-28 Emc Corporation Pseudo writing system and method
US8930307B2 (en) * 2011-09-30 2015-01-06 Pure Storage, Inc. Method for removing duplicate data from a storage array
US11636031B2 (en) 2011-08-11 2023-04-25 Pure Storage, Inc. Optimized inline deduplication
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US8620886B1 (en) 2011-09-20 2013-12-31 Netapp Inc. Host side deduplication
US8719540B1 (en) 2012-03-15 2014-05-06 Pure Storage, Inc. Fractal layout of data blocks across multiple devices
JP5853819B2 (ja) * 2012-03-29 2016-02-09 富士通株式会社 制御プログラム、制御方法、記憶制御装置および情報処理システム
US9779103B2 (en) 2012-04-23 2017-10-03 International Business Machines Corporation Preserving redundancy in data deduplication systems
US9262428B2 (en) 2012-04-23 2016-02-16 International Business Machines Corporation Preserving redundancy in data deduplication systems by designation of virtual address
US10133747B2 (en) 2012-04-23 2018-11-20 International Business Machines Corporation Preserving redundancy in data deduplication systems by designation of virtual device
US8996881B2 (en) 2012-04-23 2015-03-31 International Business Machines Corporation Preserving redundancy in data deduplication systems by encryption
US8930612B2 (en) 2012-05-31 2015-01-06 Seagate Technology Llc Background deduplication of data sets in a memory
US10037279B1 (en) * 2012-06-20 2018-07-31 EMC IP Holding Company LLC Host device caching of a business process data
US9465737B1 (en) * 2012-07-02 2016-10-11 Toshiba Corporation Memory systems including a duplicate removing filter module that is separate from a cache module
US11032259B1 (en) 2012-09-26 2021-06-08 Pure Storage, Inc. Data protection in a storage system
US8745415B2 (en) 2012-09-26 2014-06-03 Pure Storage, Inc. Multi-drive cooperation to generate an encryption key
US10623386B1 (en) 2012-09-26 2020-04-14 Pure Storage, Inc. Secret sharing data protection in a storage system
US9805048B2 (en) * 2012-10-18 2017-10-31 Oracle International Corporation System and method for managing a deduplication table
US10908835B1 (en) 2013-01-10 2021-02-02 Pure Storage, Inc. Reversing deletion of a virtual machine
US9646039B2 (en) 2013-01-10 2017-05-09 Pure Storage, Inc. Snapshots in a storage system
US11733908B2 (en) 2013-01-10 2023-08-22 Pure Storage, Inc. Delaying deletion of a dataset
US11768623B2 (en) 2013-01-10 2023-09-26 Pure Storage, Inc. Optimizing generalized transfers between storage systems
US9606910B2 (en) * 2013-01-17 2017-03-28 Hitachi, Ltd. Method and apparatus for data reduction
US9467294B2 (en) * 2013-02-01 2016-10-11 Symbolic Io Corporation Methods and systems for storing and retrieving data
US10133636B2 (en) 2013-03-12 2018-11-20 Formulus Black Corporation Data storage and retrieval mediation system and methods for using same
US9304703B1 (en) 2015-04-15 2016-04-05 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
US9817728B2 (en) 2013-02-01 2017-11-14 Symbolic Io Corporation Fast system state cloning
US11128448B1 (en) 2013-11-06 2021-09-21 Pure Storage, Inc. Quorum-aware secret sharing
US10263770B2 (en) 2013-11-06 2019-04-16 Pure Storage, Inc. Data protection in a storage system using external secrets
US10365858B2 (en) 2013-11-06 2019-07-30 Pure Storage, Inc. Thin provisioning in a storage device
US9516016B2 (en) 2013-11-11 2016-12-06 Pure Storage, Inc. Storage array password management
US9208086B1 (en) 2014-01-09 2015-12-08 Pure Storage, Inc. Using frequency domain to prioritize storage of metadata in a cache
US9792063B2 (en) 2014-01-15 2017-10-17 Intel Corporation Deduplication-based data security
US10656864B2 (en) 2014-03-20 2020-05-19 Pure Storage, Inc. Data replication within a flash storage array
US9513820B1 (en) 2014-04-07 2016-12-06 Pure Storage, Inc. Dynamically controlling temporary compromise on data redundancy
US9779268B1 (en) 2014-06-03 2017-10-03 Pure Storage, Inc. Utilizing a non-repeating identifier to encrypt data
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9218407B1 (en) 2014-06-25 2015-12-22 Pure Storage, Inc. Replication and intermediate read-write state for mediums
US10496556B1 (en) 2014-06-25 2019-12-03 Pure Storage, Inc. Dynamic data protection within a flash storage system
US10296469B1 (en) 2014-07-24 2019-05-21 Pure Storage, Inc. Access control in a flash storage system
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9864761B1 (en) 2014-08-08 2018-01-09 Pure Storage, Inc. Read optimization operations in a storage system
US10430079B2 (en) 2014-09-08 2019-10-01 Pure Storage, Inc. Adjusting storage capacity in a computing system
JP6254293B2 (ja) * 2014-09-15 2017-12-27 華為技術有限公司Huawei Technologies Co.,Ltd. データ重複排除方法及びストレージアレイ
US10164841B2 (en) 2014-10-02 2018-12-25 Pure Storage, Inc. Cloud assist for storage systems
US9489132B2 (en) 2014-10-07 2016-11-08 Pure Storage, Inc. Utilizing unmapped and unknown states in a replicated storage system
US10430282B2 (en) 2014-10-07 2019-10-01 Pure Storage, Inc. Optimizing replication by distinguishing user and system write activity
US9727485B1 (en) 2014-11-24 2017-08-08 Pure Storage, Inc. Metadata rewrite and flatten optimization
US9773007B1 (en) 2014-12-01 2017-09-26 Pure Storage, Inc. Performance improvements in a storage system
US9588842B1 (en) 2014-12-11 2017-03-07 Pure Storage, Inc. Drive rebuild
US9552248B2 (en) 2014-12-11 2017-01-24 Pure Storage, Inc. Cloud alert to replica
US9864769B2 (en) 2014-12-12 2018-01-09 Pure Storage, Inc. Storing data utilizing repeating pattern detection
US10545987B2 (en) 2014-12-19 2020-01-28 Pure Storage, Inc. Replication to the cloud
US9569357B1 (en) 2015-01-08 2017-02-14 Pure Storage, Inc. Managing compressed data in a storage system
US10296354B1 (en) 2015-01-21 2019-05-21 Pure Storage, Inc. Optimized boot operations within a flash storage array
US11947968B2 (en) 2015-01-21 2024-04-02 Pure Storage, Inc. Efficient use of zone in a storage device
US9710165B1 (en) 2015-02-18 2017-07-18 Pure Storage, Inc. Identifying volume candidates for space reclamation
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US10061514B2 (en) 2015-04-15 2018-08-28 Formulus Black Corporation Method and apparatus for dense hyper IO digital retention
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US10310740B2 (en) 2015-06-23 2019-06-04 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device
US9547441B1 (en) 2015-06-23 2017-01-17 Pure Storage, Inc. Exposing a geometry of a storage device
US9830273B2 (en) 2015-07-30 2017-11-28 Netapp, Inc. Deduplicated host cache flush to remote storage
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
KR20170028825A (ko) 2015-09-04 2017-03-14 퓨어 스토리지, 아이앤씨. 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10452297B1 (en) 2016-05-02 2019-10-22 Pure Storage, Inc. Generating and optimizing summary index levels in a deduplication storage system
US10133503B1 (en) 2016-05-02 2018-11-20 Pure Storage, Inc. Selecting a deduplication process based on a difference between performance metrics
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10191662B2 (en) 2016-10-04 2019-01-29 Pure Storage, Inc. Dynamic allocation of segments in a flash storage system
US10545861B2 (en) 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US10162523B2 (en) 2016-10-04 2018-12-25 Pure Storage, Inc. Migrating data between volumes using virtual copy operation
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US10185505B1 (en) 2016-10-28 2019-01-22 Pure Storage, Inc. Reading a portion of data to replicate a volume based on sequence numbers
US10359942B2 (en) 2016-10-31 2019-07-23 Pure Storage, Inc. Deduplication aware scalable content placement
US10452290B2 (en) 2016-12-19 2019-10-22 Pure Storage, Inc. Block consolidation in a direct-mapped flash storage system
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11093146B2 (en) 2017-01-12 2021-08-17 Pure Storage, Inc. Automatic load rebalancing of a write group
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11403019B2 (en) 2017-04-21 2022-08-02 Pure Storage, Inc. Deduplication-aware per-tenant encryption
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10776202B1 (en) 2017-09-22 2020-09-15 Pure Storage, Inc. Drive, blade, or data shard decommission via RAID geometry shrinkage
US10789211B1 (en) 2017-10-04 2020-09-29 Pure Storage, Inc. Feature-based deduplication
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
JP6360956B1 (ja) * 2017-11-01 2018-07-18 株式会社Osk データ取込システム
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10572186B2 (en) 2017-12-18 2020-02-25 Formulus Black Corporation Random access memory (RAM)-based computer systems, devices, and methods
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US10970395B1 (en) 2018-01-18 2021-04-06 Pure Storage, Inc Security threat monitoring for a storage system
US11144638B1 (en) 2018-01-18 2021-10-12 Pure Storage, Inc. Method for storage system detection and alerting on potential malicious action
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US11934322B1 (en) 2018-04-05 2024-03-19 Pure Storage, Inc. Multiple encryption keys on storage drives
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11153094B2 (en) * 2018-04-27 2021-10-19 EMC IP Holding Company LLC Secure data deduplication with smaller hash values
US10678433B1 (en) 2018-04-27 2020-06-09 Pure Storage, Inc. Resource-preserving system upgrade
US10678436B1 (en) 2018-05-29 2020-06-09 Pure Storage, Inc. Using a PID controller to opportunistically compress more data during garbage collection
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US10776046B1 (en) 2018-06-08 2020-09-15 Pure Storage, Inc. Optimized non-uniform memory access
US11281577B1 (en) 2018-06-19 2022-03-22 Pure Storage, Inc. Garbage collection tuning for low drive wear
US11869586B2 (en) 2018-07-11 2024-01-09 Pure Storage, Inc. Increased data protection by recovering data from partially-failed solid-state devices
US11133076B2 (en) 2018-09-06 2021-09-28 Pure Storage, Inc. Efficient relocation of data between storage devices of a storage system
US11194759B2 (en) 2018-09-06 2021-12-07 Pure Storage, Inc. Optimizing local data relocation operations of a storage device of a storage system
US10846216B2 (en) 2018-10-25 2020-11-24 Pure Storage, Inc. Scalable garbage collection
US11113409B2 (en) 2018-10-26 2021-09-07 Pure Storage, Inc. Efficient rekey in a transparent decrypting storage array
US10725853B2 (en) 2019-01-02 2020-07-28 Formulus Black Corporation Systems and methods for memory failure prevention, management, and mitigation
US11194473B1 (en) 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
US11588633B1 (en) 2019-03-15 2023-02-21 Pure Storage, Inc. Decommissioning keys in a decryption storage system
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11397674B1 (en) 2019-04-03 2022-07-26 Pure Storage, Inc. Optimizing garbage collection across heterogeneous flash devices
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US10990480B1 (en) 2019-04-05 2021-04-27 Pure Storage, Inc. Performance of RAID rebuild operations by a storage group controller of a storage system
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US10929046B2 (en) 2019-07-09 2021-02-23 Pure Storage, Inc. Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device
US11422751B2 (en) 2019-07-18 2022-08-23 Pure Storage, Inc. Creating a virtual storage system
US11086713B1 (en) 2019-07-23 2021-08-10 Pure Storage, Inc. Optimized end-to-end integrity storage system
US11403043B2 (en) 2019-10-15 2022-08-02 Pure Storage, Inc. Efficient data compression by grouping similar data within a data segment
US11500788B2 (en) 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11520907B1 (en) 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11720714B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
US11625481B2 (en) 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US11169806B1 (en) * 2020-08-10 2021-11-09 Arm Limited Data processing systems

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5990810A (en) 1995-02-17 1999-11-23 Williams; Ross Neil Method for partitioning a block of data into subblocks and for storing and communcating such subblocks
US6928526B1 (en) * 2002-12-20 2005-08-09 Datadomain, Inc. Efficient data storage system
JP4146380B2 (ja) * 2004-03-29 2008-09-10 東芝ソリューション株式会社 ストレージシステム、ブロック再配置制御方法及びプログラム
JP5331323B2 (ja) * 2007-09-26 2013-10-30 株式会社日立製作所 ストレージサブシステム及びその制御方法
JP5026213B2 (ja) * 2007-09-28 2012-09-12 株式会社日立製作所 ストレージ装置及びデータ重複排除方法
JP5084551B2 (ja) * 2008-02-26 2012-11-28 Kddi株式会社 重複排除技術を用いたデータバックアップ方法、記憶制御通信装置及びプログラム
JP2009251725A (ja) * 2008-04-02 2009-10-29 Hitachi Ltd 記憶制御装置及び記憶制御装置を用いた重複データ検出方法。
US20100088296A1 (en) * 2008-10-03 2010-04-08 Netapp, Inc. System and method for organizing data to facilitate data deduplication
JP4386459B1 (ja) * 2009-04-20 2009-12-16 誠 後藤 ファイル格納システム、サーバ装置及びプログラム
US20100333116A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites

Also Published As

Publication number Publication date
US20110238634A1 (en) 2011-09-29
US8447742B2 (en) 2013-05-21
JP2011203842A (ja) 2011-10-13

Similar Documents

Publication Publication Date Title
JP4892072B2 (ja) ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法
US20210004355A1 (en) Distributed storage system, distributed storage system control method, and storage medium
US10078598B1 (en) Maintaining a separate LRU linked list for each thread for multi-threaded access
US9235524B1 (en) System and method for improving cache performance
US9569367B1 (en) Cache eviction based on types of data stored in storage systems
US9274956B1 (en) Intelligent cache eviction at storage gateways
US20090024795A1 (en) Method and apparatus for caching data
WO2016041128A1 (zh) 数据写请求处理方法和存储阵列
US9529731B1 (en) Contention-free approximate LRU for multi-threaded access
JP2011503725A (ja) 分散型共有メモリを備えるネットワーク
TWI771933B (zh) 借助命令相關過濾器來進行重複資料刪除管理的方法、主裝置以及儲存伺服器
JP6254293B2 (ja) データ重複排除方法及びストレージアレイ
US10860481B2 (en) Data recovery method, data recovery system, and computer program product
WO2017189476A1 (en) Inline deduplication
US10048866B2 (en) Storage control apparatus and storage control method
US20200133499A1 (en) Instant-ready active-active storage nodes
US8909886B1 (en) System and method for improving cache performance upon detecting a migration event
US9336157B1 (en) System and method for improving cache performance
US11599460B2 (en) System and method for lockless reading of metadata pages
US9053033B1 (en) System and method for cache content sharing
US10423507B1 (en) Repairing a site cache in a distributed file system
US9009416B1 (en) System and method for managing cache system content directories
JP6924671B2 (ja) データ書込み要求処理方法及びストレージアレイ
CN112131145B (zh) 应用于ceph的缓存方法及装置
US20140188952A1 (en) Reading data without an indirection logical reference identifier in a system that uses indirection access

Legal Events

Date Code Title Description
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: 20111122

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

R150 Certificate of patent or registration of utility model

Ref document number: 4892072

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141222

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350