JP2022099948A - ストレージシステムおよびストレージシステムにおけるデータ量削減方法 - Google Patents

ストレージシステムおよびストレージシステムにおけるデータ量削減方法 Download PDF

Info

Publication number
JP2022099948A
JP2022099948A JP2020214037A JP2020214037A JP2022099948A JP 2022099948 A JP2022099948 A JP 2022099948A JP 2020214037 A JP2020214037 A JP 2020214037A JP 2020214037 A JP2020214037 A JP 2020214037A JP 2022099948 A JP2022099948 A JP 2022099948A
Authority
JP
Japan
Prior art keywords
data
chunk
update
content
storage system
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.)
Pending
Application number
JP2020214037A
Other languages
English (en)
Inventor
鎮平 野村
Shimpei Nomura
光雄 早坂
Mitsuo Hayasaka
悠冬 鴨生
Yuto Komo
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
Priority to JP2020214037A priority Critical patent/JP2022099948A/ja
Priority to US17/473,804 priority patent/US20220197527A1/en
Publication of JP2022099948A publication Critical patent/JP2022099948A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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]
    • 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/0673Single storage device

Abstract

【課題】差分圧縮処理を行うにあたって類似データの検索作業を不要とし、処理負担の軽減を図る。【解決手段】ストレージシステムは、重複する複数のデータに対して重複排除を行う重複排除機能と、類似する複数のデータの差分を格納する差分圧縮機能とを有し、ストレージシステムのプロセッサ110は、格納しているデータを更新するライト要求を受信すると、ライト要求よる更新前のデータが重複排除を行われており、更新後のデータが他のデータと重複しない場合に、更新前のデータと更新後のデータとの差分を生成して格納する差分圧縮を行う。【選択図】図1

Description

本発明は、ストレージシステムおよびストレージシステムにおけるデータ量削減方法に関する。
データの増大に伴い、ストレージシステムの容量削減技術の需要が高まっている。そのため、データセンターに設置されるストレージシステムのみならず、ユーザに近い位置に配置されるエッジサーバにおいても、データ圧縮や重複排除などの容量削減機能を提供し、ユーザのデータ格納コストの低減を図っている。
容量削減技術の一つとして、差分符号化処理(差分圧縮処理、Delta-Compression、以下、「差分圧縮処理」に統一する) がある。この技術では、格納するデータに対して、ストレージシステム内に類似データが存在する場合、格納するデータと類似データの間での差分データのみをストレージシステムに格納することで、データ容量を削減することができる。データ圧縮や重複排除と合わせて差分圧縮処理を用いることにより、より大きなデータ削減効果が見込まれる。
差分圧縮処理によりデータ量削減を図るストレージシステムとして、特許文献1に開示されている技術がある。この特許文献1では、重複排除機能を持つストレージシステムにおいて、格納するデータに対する重複データが見つからなかった場合に、類似データを検索して差分圧縮処理を適用している。
米国特許第8751462号明細書
特許文献1に開示された技術を含む、差分圧縮処理における類似データの検索は、データから算出されるスケッチと呼ばれる値を比較して行う。類似データの検索のためにストレージシステムの各データから算出したスケッチを集めてテーブルに記録していくと、このテーブルはメモリ上に乗り切らない大きさとなる。
そのため、テーブル検索ではディスクアクセスが頻発し、類似データ検索に要する時間は非常に大きなものとなることから、実際にストレージシステムの格納データの中から類似データを見つけることは現実的でない。結果として、差分圧縮処理の効果を得ることができなくなる。また、たとえ類似データが見つかったとしても、類似度が低い場合には差分圧縮処理を実施しても容量が削減できないケースも存在する。
本発明は、上記事情に鑑みなされたものであり、その目的は、差分圧縮処理を行うにあたって類似データの検索作業を不要とし、処理負担の軽減を図ることが可能なストレージシステムおよびストレージシステムにおけるデータ量削減方法を提供することにある。
上記課題を解決すべく、本発明の一つの観点に従うストレージシステムは、データを格納するストレージデバイスと、前記ストレージデバイスに格納するデータを処理するプロセッサとを備えたストレージシステムであって、重複する複数のデータに対して重複排除を行う重複排除機能と、類似する複数のデータの差分を格納する差分圧縮機能と、を有し、プロセッサは、格納しているデータを更新するライト要求を受信すると、ライト要求よる更新前のデータが重複排除を行われており、更新後のデータが他のデータと重複しない場合に、更新前のデータと更新後のデータとの差分を生成して格納する差分圧縮を行うことを特徴とする。
本発明によれば、差分圧縮処理を行うにあたって類似データの検索作業を不要とし、処理負担の軽減を図ることができる。
実施例1に係るストレージシステムの概略構成を示すブロック図である。 実施例1に係るストレージシステムに格納されるデータの構成の一例を示す図である。 チャンクの差分圧縮処理の一例を説明するための図である。 実施例1に係るストレージシステムのコンテンツ管理表の構成の一例を示す図である。 実施例1に係るストレージシステムの重複チャンク管理表の構成の一例を示す図である。 実施例1に係るストレージシステムの重複チャンク判定表の構成の一例を示す図である。 実施例1に係るストレージシステムのコンテンツデータ削減処理の一例を示すフローチャートである。 実施例1に係るストレージシステムのチャンクデータ削減処理の一例を示すフローチャートである。 実施例1に係るストレージシステムのチャンク重複排除処理を示すフローチャートである。 実施例1に係るストレージシステムのチャンク差分圧縮処理の一例を示すフローチャートである。 実施例1に係るストレージシステムの非データ削減チャンク処理の一例を示すフローチャートである。 実施例1に係るストレージシステムのチャンクリード処理の一例を示すフローチャートである。 実施例1に係るストレージシステムのチャンク更新処理の一例を示すフローチャートである。 実施例2に係るストレージシステムのコンテンツデータ削減処理の一例を示すフローチャートである。 実施例2に係るストレージシステムのチャンクデータ削減処理の一例を示すフローチャートである。 実施例2に係るストレージシステムの更新前チャンク選定処理の一例を示すフローチャートである。 実施例2に係るストレージシステムのチャンク重複排除処理を示すフローチャートである。 実施例2に係るストレージシステムのチャンク差分圧縮処理の一例を示すフローチャートである。 実施例3に係るストレージシステムの重複チャンク管理表の構成の一例を示す図である。 実施例3に係るストレージシステムの新規作成コンテンツデータ削減処理の一例を示すフローチャートである。 実施例3に係るストレージシステムの更新前コンテンツ選定処理の一例を示すフローチャートである。 実施例3に係るストレージシステムのチャンク重複排除処理を示すフローチャートである。 実施例3に係るストレージシステムの重複チャンク格納コンテンツチャンク移動処理を示すフローチャートである。 実施例4に係るストレージシステムの概略構成を示すブロック図である。 実施例4に係るストレージシステムに格納されるデータの構成の一例を示す図である。 ブロックデータの差分圧縮処理の一例を説明するための図である。 実施例4に係るストレージシステムのアドレス変換表の構成の一例を示す図である。 実施例4に係るストレージシステムのブロック管理表の構成の一例を示す図である。 実施例4に係るストレージシステムの重複ブロック判定表の構成の一例を示す図である。 実施例4に係るストレージシステムのブロックデータ削減処理の一例を示すフローチャートである。 実施例4に係るストレージシステムのブロック重複排除処理を示すフローチャートである。 実施例4に係るストレージシステムのブロック差分圧縮処理の一例を示すフローチャートである。 実施例4に係るストレージシステムの非データ削減ブロック処理の一例を示すフローチャートである。 実施例4に係るストレージシステムのブロックリード処理の一例を示すフローチャートである。 実施例4に係るストレージシステムのブロック更新処理の一例を示すフローチャートである。 実施例5に係るストレージシステムの概略構成を示すブロック図である。 実施例5に係るストレージシステムに格納されるデータの構成の一例を示す図である。 実施例5に係るストレージシステムのコンテンツ管理表の構成の一例を示す図である。 実施例5に係るストレージシステムの特殊ライトコマンドの構成の一例を示す図である。 実施例5に係るストレージシステムのNASブロック更新処理の一例を示すフローチャートである。 実施例5に係るストレージシステムのブロック差分圧縮処理の一例を示すフローチャートである。
以下、本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
本実施例のストレージシステムは、例えば以下の構成を有する。すなわち、差分圧縮処理は、複製したファイル(データ)へ更新を加えていくようなケースへ適用することで高いデータ削減効果を生み出すと考えられる。そこで、本実施例のストレージシステムでは、更新前には重複排除が効いていたが、部分更新により重複排除が効かなくなったチャンクに対して、更新前のチャンクとの間で差分圧縮処理をすることで、類似データの検索作業をすることなくデータ容量を削減することができる。
一例として、ファイルの構造管理データ(詳細は後述)から、このファイルが更新前に参照していたチャンクを特定し、これらチャンクとの間で差分圧縮処理を行うことでデータ削減を図っている。つまり、(1)対象チャンクに対して重複排除処理を行う、(2)(1)において対象チャンクが非重複データであった場合、構造管理データから更新前チャンクが重複チャンクかどうかを確認する、(3)更新前チャンクが非重複チャンクの場合、上書きする、(4)更新前チャンクが重複チャンクの場合、新旧データで差分圧縮処理を適用する、(5)差分圧縮処理により元データよりもデータ量が削減された場合には、差分圧縮処理したデータをストレージデバイスに格納する。データ量が削減されなかった場合は、元データストレージデバイスに格納する。
なお、以下の説明において、「メモリ」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明において、「プロセッサ」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。
また、少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
本開示において、ストレージデバイスは、1台のHDD(Hard Disk Drive)やSSD(Solid State Drive)等の1台のストレージドライブ、複数台のストレージドライブを含むRAID装置、及び複数のRAID装置を含む。また、ドライブがHDDである場合には、例えば、SAS(Serial Attached SCSI) HDDを含んでもよく、NL-SAS(ニアラインSAS) HDDを含んでもよい。
また、以下の説明において、「xxxテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。
また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶資源(例えば、メモリ)及び/又は通信インターフェースデバイス(例えば、ポート)を用いながら行うため、処理の主語がプログラムとされてもよい。プログラムを主語として説明された処理は、プロセッサまたはそのプロセッサを有する計算機が行う処理としてもよい。
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体にあってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。
図1は、実施例に係るストレージシステムの一例であるNAS(Network Attached Storage)10の概略構成の一例を示す図である。
NAS10はコントローラとしてのNASヘッド100とストレージシステム200とを有する。
NASヘッド100は、NASヘッド100及びNAS10全体の動作制御を行うプロセッサ110、プロセッサ110の動作制御に用いられるプログラム及びデータを一時的に記憶するメモリ120、クライアント11からネットワーク12を介してライトされるデータやストレージシステム200からリードされたデータを一時的に格納するキャッシュ130、クライアント11との間でネットワーク12を介して通信を行うネットワークインターフェース(I/F)140及びストレージシステム200との間での通信を行うストレージインターフェース(I/F)150を有する。これらプロセッサ110、メモリ120、キャッシュ130、ネットワークI/F140及びストレージI/F150はバス160により互いに接続されている。
ストレージシステム200も、ストレージシステム200の動作制御を行うプロセッサ210、プロセッサ210の動作制御に用いられるプログラム及びデータを一時的に記憶するメモリ220、NASヘッド100からライトされるデータや記憶デバイス240からリードされたデータを一時的に格納するキャッシュ230、データが格納される記憶デバイス240、及びNASヘッド100との間での通信を行うストレージインターフェース(I/F)250を有する。これらプロセッサ210、メモリ220、キャッシュ230、記憶デバイス240及びストレージI/F250はバス260により互いに接続されている。
メモリ120には、ネットワークストレージプログラム121、ローカルファイルシステムプログラム122、及びコンテンツ容量削減プログラム123が格納されている。
ネットワークストレージプログラム121は、クライアント11からの各種要求を受領し、この要求に含まれるプロトコルを処理する。ローカルファイルシステムプログラム122は、クライアント11に対してファイルシステムを提供する。
コンテンツ容量削減プログラム123は、本実施例のストレージシステム(NAS10)の特徴となるプログラムであり、ストレージシステム200に格納されたコンテンツに対して容量削減処理を行う。コンテンツ容量削減プログラム123の動作の詳細については後述する。
記憶デバイス240には、コンテンツ管理表500、重複チャンク管理表600、重複チャンク判定表700及びチャンク410、420、440が格納されている。
図2は、実施例1に係るNAS10に格納されるデータの構成の一例を示す図である。
本実施例のNAS10では、クライアント11がNAS10に対して操作を行うデータの単位であるファイル、すなわちコンテンツ310を複数のデータ単位に分割してストレージシステム200に格納している。実施例1(及び後述する実施例2、3)においては、コンテンツ310は、データ長が可変長であるチャンク410、420、440に分割されてストレージシステム200に格納されている。この際、コンテンツ容量削減プログラム123は、チャンク410、420、440に対して重複排除処理及び差分圧縮処理を行う。
より詳細には、コンテンツ容量削減プログラム123は、複数のコンテンツ310においてデータが重複するチャンク(以降、重複チャンク420と称する)については1つの重複チャンク420のみストレージシステム200、より詳細には記憶デバイス240に格納する(重複排除処理)。また、重複チャンク420に類似するチャンクについては差分圧縮対象チャンク430として特定し、重複チャンク420と差分圧縮対象チャンク430との差分である差分チャンク440を記憶デバイス240に格納する(差分圧縮処理)。そして、重複排除処理及び差分圧縮処理のいずれの対象にもならないチャンクは非重複チャンク410として記憶デバイス240に格納される。以降、実体として1つの重複チャンク420を有するコンテンツを重複チャンク格納コンテンツ320と称する。
図3は、チャンクの差分圧縮処理の一例を説明するための図である。
コンテンツ容量削減プログラム123は、ベースチャンク(これは重複チャンクでもある)420に個々のデータ単位で非常に類似している差分圧縮対象チャンク430を検出する。図3に示す例では、ベースチャンク420と差分圧縮対象チャンク430との間では、データ単位で数バイト程度(図示例では16進数表示をしている)の差しかない。従って、コンテンツ容量削減プログラム123は、これらベースチャンク420と差分圧縮対象チャンク430との間で差分を取り、どの位置でデータが異なるかというポインタ(例えば[0:8]とはチャンクの先頭から8個のデータは共通するということ)とともに差分チャンク440として生成し、ベースチャンク420と差分チャンク440を記憶デバイス240に格納する。以下、その状態を特定しないで説明する際には、重複チャンク420の符号でチャンク420を代表して説明する。
図4は、実施例1に係るNAS10のコンテンツ管理表500の構成の一例を示す図である。
コンテンツ管理表500は、コンテンツ310の構造管理データの一例であり、コンテンツ310単位に作成される。
コンテンツID510には、個々のコンテンツ310を特定するIDが格納される。コンテンツ内オフセット520には、コンテンツ310を構成するチャンク420のコンテンツ310内でのオフセット、つまり、個々のチャンク420がどの位置からスタートするかを示す値が格納される。チャンクサイズ521には、チャンク420のサイズを示す値が格納される。データ削減処理済みフラグ522には、このチャンク420が既にデータ量削減処理がされたか否かを示すフラグ(Trueであればデータ量削減処理済み、Falseであればデータ量削減未処理)が格納される。このデータ削減処理済みフラグ522は、後述するチャンク更新処理において更新されるので、データ削減処理済みフラグ522に示すフラグは、チャンク420の更新後の状態を示している。
コンテンツ管理表500には、前回データ削減処理時チャンク情報530として、チャンク状態531、差分圧縮後チャンク長532、チャンク格納コンテンツID533、参照オフセット534、チャンク内オフセット535、サイズ536、参照先537、参照チャンク内オフセット538を有する。前回データ削減処理時チャンク情報530は、前回のコンテンツ容量削減プログラム123による容量削減処理が行われた際の情報である。
チャンク状態531には、前回のデータ削減処理が行われた結果としてのチャンク420の状態を示す値が格納される。差分圧縮後チャンク長532は、差分圧縮が行われたチャンク420のチャンク長を示す値が格納される。チャンク格納コンテンツID533には、重複排除処理または差分圧縮処理がされたチャンク420において参照すべき実体のチャンク420が格納されているコンテンツ310のIDが格納される。この実体のチャンク420を、以降、ベースチャンク、ベースデータと称する。参照オフセット534には、チャンク格納コンテンツID533に示されるコンテンツ310においてベースチャンク420がどの位置にあるかを示すオフセットが格納される。
チャンク内オフセット535、サイズ536、参照先537、参照チャンク内オフセット538は差分圧縮処理がされたチャンク420についての値が格納される。チャンク内オフセット535は、チャンク420においてどの部分がベースチャンク420で構成され、どの部分が差分チャンク440で構成されるかを示すオフセットが格納される。サイズ536は、参照先であるベースチャンク420、差分チャンク440の部分のデータサイズを示す値が格納される。参照先537は参照すべきチャンクがベースチャンク420であるのか差分チャンク440であるのかの値が格納される。参照チャンク内オフセット538は、参照されるベースチャンク420、差分チャンク440の参照位置を示すオフセットが格納される。
図5は、実施例1に係るNAS10の重複チャンク管理表600の構成の一例を示す図である。重複チャンク管理表600は、図2に示す重複チャンク格納コンテンツ320単位に作成される。
コンテンツID610には、重複チャンク格納コンテンツ320を特定するIDが格納される。オフセット620には、重複チャンク格納コンテンツ320を構成するチャンク420のオフセット、つまりどの位置からスタートするかを示す値が格納される。チャンクサイズ621には、チャンク420のサイズを示す値が格納される。参照数622には、チャンク420(図2に示すように、重複チャンク格納コンテンツ320には重複チャンク420が格納される)がどれだけの数参照されているかを示す数が格納される。
図6は、実施例1に係るNAS10の重複チャンク判定表700の構成の一例を示す図である。
フィンガプリント710は、個々のチャンク420のデータから求められた固定長のハッシュ値であり、このフィンガプリント710を用いればチャンク420を一意に特定することができる。コンテンツID711には、チャンク420が含まれるコンテンツ310のIDが格納される。オフセット712には、コンテンツ310においてチャンク420がどの位置からスタートするかを示す値が格納される。チャンクサイズ713にはチャンク420のサイズを示す値が格納される。チャンク状態714には、データ削減処理が行われた結果としてのチャンク420の状態を示す値が格納される。
図7は、実施例1に係るNAS10のコンテンツデータ削減処理の一例を示すフローチャートである。
図7に示すコンテンツデータ削減処理は、コンテンツ310単位でポストプロセス時に実行される。実行されるタイミングは任意であるが、一例として、NAS10のプロセッサ110がコンテンツ310の操作ログを適宜取得し、この操作ログから更新処理がされたコンテンツ310を特定し、更新に係るコンテンツ310について図7に示すコンテンツデータ削減処理を行う例が挙げられる。あるいは、コンテンツ310単位で更新処理がされたら状態が変化する更新フラグを設けておき、この更新フラグから更新処理がされたコンテンツ310を特定し、更新に係るコンテンツ310について図7に示すコンテンツデータ削減処理を行う例が挙げられる。
図7において、コンテンツ容量削減プログラム123は、コンテンツデータ削減処理がされるコンテンツ310に含まれるチャンク420について、どのチャンク420に対してコンテンツデータ削減処理を行うかを特定する変数iを初期化する(S102)。
次いで、コンテンツ容量削減プログラム123は、変数iにより特定されるチャンク420がデータ削減処理済であるか否かを、コンテンツ管理表500のデータ削減処理済みフラグ522を参照して判定する(S103)。そして、既にデータ削減処理済であると判定したら(S103においてYES)S104に進み、データ量削減処理がされていない(この場合はコンテンツ310の更新処理後においてということ)と判定したら(S103においてNO)サブルーチンS200に進む。サブルーチンS200(チャンクデータ削減処理)の詳細については後述する。
S104では、コンテンツ容量削減プログラム123が、コンテンツデータ削減処理を行う対象チャンク420を特定する変数iが、コンテンツ310を構成するチャンク420の総数nを下回っているか否かを判定する。そして、下回っていると判定したら(S104においてYES)S105に進み、下回っていない(この場合はi=nという判定である)と判定したら(S104においてNO)、図7のフローチャートに示す処理を終了する。
S105では、コンテンツ容量削減プログラム123が変数iを1つインクリメントする。その後、処理はS103に戻る。
図8は、実施例1に係るNAS10のチャンクデータ削減処理の一例を示すフローチャートである。
まず、コンテンツ容量削減プログラム123は、対象となるチャンク420の分割点、つまり、コンテンツ310における対象チャンク420のオフセットを計算する(S202)。これは、図7に示すコンテンツデータ削減処理がコンテンツ310の更新処理をトリガとしているので、チャンク420の分割点に変更がないかどうかを確認するためである。
次いで、コンテンツ容量削減プログラム123は、サブルーチンS300(チャンク重複排除処理)を実行する。チャンク重複排除処理の詳細については後述する。次いで、コンテンツ容量削減プログラム123は、対象となるチャンク420(図7のコンテンツデータ削減処理において特定された、ということ)が重複排除処理されているか否かを、重複チャンク判定表700のチャンク状態714を参照して判定する(S203)。そして、重複排除処理がされていると判定したら(S203においてYES)S207に進み、重複排除処理がされていないと判定したら(S203においてNO)S204に進む。
S204では、コンテンツ容量削減プログラム123が、更新前の対象チャンク420が重複排除済みまたは差分圧縮済みであるか否かを、コンテンツ管理表500のチャンク状態531を参照して判定する。そして、更新前の対象チャンク420が重複排除済みまたは差分圧縮済みであると判定したら(S204においてYES)、サブルーチンS400(チャンク差分圧縮処理)を実行し、更新前の対象チャンク420が重複排除済みでもなく差分圧縮済みでもないと判定したら(S204においてNO)サブルーチンS500(非データ削減チャンク処理)を実行する。チャンク差分圧縮処理及び非データ削減チャンク処理の詳細については後述する。
サブルーチンS400の処理が終わったら、コンテンツ容量削減プログラム123は、サブルーチンS400による差分圧縮処理でチャンク420の容量が削減できたか否かを判定する(S205)。そして、チャンク420の容量が削減できたと判定したら(S205においてYES)S206に進み、チャンク420の容量が削減できなかったと判定したら(S206においてNO)サブルーチンS500を実行する。
S206では、コンテンツ容量削減プログラム123が、S202での算出結果に基づいて、対象チャンク420のチャンク分割点に変更があったかどうかを判定する。そして、チャンク分割点に変更があったと判定したら(S206においてYES)、次のチャンク420についてサブルーチンS200を実行し、チャンク分割点に変更がなかったと判定したら(S206においてNO)、図8のフローチャートに示す処理を終了する。
図9は、実施例1に係るNAS10のチャンク重複排除処理を示すフローチャートである。
まず、コンテンツ容量削減プログラム123は、対象チャンク420のフィンガプリントを算出する(S302)。次いで、コンテンツ容量削減プログラム123は、S302で算出したフィンガプリントに一致するフィンガプリントが存在するか否かを、重複チャンク判定表700のフィンガプリント710を参照して検索する(S303)。そして、一致するフィンガプリントがあると判定したら(S303においてYES)、重複するチャンク420が存在している(存在していた場合も含む)ので、一致したチャンク420に対してサブルーチンS600(チャンクリード処理)を実行する。チャンクリード処理の詳細については後述する。一方、一致するフィンガプリントがないと判定したら(S303においてNO)、重複するチャンク420が存在していないので、図9のフローチャートに示す処理を終了する。
サブルーチンS600の処理の終了後、コンテンツ容量削減プログラム123は、サブルーチンS600において読み出した(リードした)チャンクのフィンガプリントを計算する(S304)。そして、コンテンツ容量削減プログラム123は、S304で算出したフィンガプリントが対象チャンク420のフィンガプリントと一致するか否かを判定する(S305)。そして、S304で算出したフィンガプリントが対象チャンク420のフィンガプリントと一致すると判定したら(S305においてYES)S306に進み、S304で算出したフィンガプリントが対象チャンク420のフィンガプリントに一致しないと判定したら(S306においてNO)、図9のフローチャートに示す処理を終了する。
S306において、コンテンツ容量削減プログラム123は、フィンガプリントが一致するチャンクは既に重複チャンク420であるか否かを、重複チャンク判定表700のチャンク状態714を参照して判定する。そして、フィンガプリントが一致するチャンクが既に重複チャンク420であると判定したら(S306においてYES)、このチャンクは既に重複チャンク420として管理されているので、S307に進む。一方、フィンガプリントが一致するチャンクが重複チャンク420でないと判定したら(S306においてNO)、対象チャンク420が重複排除処理されていないので、対象チャンク420を重複チャンク格納コンテンツ320に移動する処理を行うため、S310に進む。
S307では、コンテンツ容量削減プログラム123が、重複チャンク管理表600から一致する重複チャンク420の参照数622を1だけ加算する。次いで、コンテンツ容量削減プログラム123は、コンテンツ310内の対象チャンク420を削除する(S308)。そして、コンテンツ容量削減プログラム123は、対象チャンク420を含むコンテンツ管理表500を更新し(S309)、図9のフローチャートに示す処理を終了する。
一方、S310において、コンテンツ容量削減プログラム123は、対象チャンク420を重複チャンク格納コンテンツ320に追記する。次いで、コンテンツ容量削減プログラム123は、追記したチャンク420の情報を重複チャンク管理表600に追加する(S311)。さらに、コンテンツ容量削減プログラム123は、一致するチャンク420を含む情報に基づいて、コンテンツ管理表500を更新する(S312)。
次いで、コンテンツ容量削減プログラム123は、重複チャンク判定表700のチャンク状態714を参照して、一致するチャンク420が差分圧縮対象チャンク430であるか否かを判定する(S313)。その結果、一致するチャンク420が差分圧縮対象チャンク430であると判定したら(S313においてYES)S314に進み、一致するチャンク420が差分圧縮対象チャンク430でないと判定したら(S313においてNO)S316に進む。
S314において、コンテンツ容量削減プログラム123は、一致するチャンク420を含むコンテンツ310から差分チャンク440を削除する。次いで、コンテンツ容量削減プログラム123は、重複チャンク管理表600から、一致するチャンク420のベースチャンク420の参照数622を1だけ減算する(S315)。
S316において、コンテンツ容量削減プログラム123は、一致するチャンク420を含んでいたコンテンツ310から、この一致するチャンク420を削除する。そして、コンテンツ容量削減プログラム123は、重複チャンク判定表700から一致するチャンク420の情報を更新し(S317)、図9のフローチャートに示す処理を終了する。
図10は、実施例1に係るNAS10のチャンク差分圧縮処理の一例を示すフローチャートである。
まず、コンテンツ容量削減プログラム123は、更新前の対象チャンク420が重複排除済みであるか否かを、コンテンツ管理表500のチャンク状態531を参照して判定する(S402)。そして、更新前の対象チャンク420が重複排除済みであると判定したら(S402においてYES)S403に進み、更新前の対象チャンク420が重複排除済みでないと判定したら(S402においてNO)、更新前の対象チャンク420は既に重複排除済みまたは差分圧縮済みであると判定されており(S204においてYES)、従って、更新前の対象チャンク420は差分圧縮済みであるので、S408に進む。
S403では、コンテンツ容量削減プログラム123が更新前の対象チャンク420を読み出す。次いで、コンテンツ容量削減プログラム123は、更新前の対象チャンク420と対象チャンク420との間で差分圧縮処理を行う(S404)。
S404における差分圧縮処理の結果、差分チャンク440が対象チャンク420より容量が少なくなった(小さくなった)か否かを、コンテンツ容量削減プログラム123が判定する(S405)。そして、差分チャンク440が対象チャンク420より小さくなったと判定したら(S405においてYES)S406に進み、差分チャンク440が対象チャンク420より小さくならないと判定したら(S405においてNO)、図10のフローチャートに示す処理を終了する。
S406では、コンテンツ容量削減プログラム123が、差分チャンク440をコンテンツ310の対象チャンク420の領域に書き込む。次いで、コンテンツ容量削減プログラム123は、重複チャンク管理表600の更新前の対象チャンク420の参照数622を1だけ加算する(S407)。さらに、コンテンツ容量削減プログラム123はコンテンツ管理表500を更新し(S413)、重複チャンク判定表700に対象チャンク420の情報を登録する(S414)。この後、図10のフローチャートに示す処理を終了する。
一方、S408では、コンテンツ容量削減プログラム123が更新前の対象チャンク420のベースチャンク420を読み出す。次いで、コンテンツ容量削減プログラム123は、更新前の対象チャンク420のベースチャンク420と対象チャンク420との間で差分圧縮処理を行う(S409)。
S409における差分圧縮処理の結果、差分チャンク440が対象チャンク420より容量が少なくなった(小さくなった)か否かを、コンテンツ容量削減プログラム123が判定する(S410)。そして、差分チャンク440が対象チャンク420より小さくなったと判定したら(S410においてYES)S411に進み、差分チャンク440が対象チャンク420より小さくならないと判定したら(S410においてNO)、図10のフローチャートに示す処理を終了する。
S411では、コンテンツ容量削減プログラム123が、差分チャンク440をコンテンツ310の対象チャンク420の領域に書き込む。次いで、コンテンツ容量削減プログラム123は、重複チャンク管理表600の更新前の対象チャンク420のベースチャンク420の参照数622を1だけ加算する(S407)。この後、S413に進む。
図11は、実施例1に係るNAS10の非データ削減チャンク処理の一例を示すフローチャートである。
まず、コンテンツ容量削減プログラム123はコンテンツ管理表500を更新する(S502)。次いで、コンテンツ容量削減プログラム123は、重複チャンク管理表600に対象チャンク420の情報を登録し(S503)、図11のフローチャートに示す処理を終了する。
図12は、実施例1に係るNAS10のチャンクリード処理の一例を示すフローチャートである。図12にフローチャートに示すチャンクリード処理は、クライアント11からのコンテンツ310のリード要求をトリガとする。
まず、コンテンツ容量削減プログラム123は、リード要求の対象でもある対象チャンク420が重複排除済みであるか否かを、重複チャンク判定表700のチャンク状態714を参照して判定する(S602)。そして、対象チャンク420が重複排除済みであると判定したら(S602においてYES)S603に進み、対象チャンク420が重複排除済みでないと判定したら(S602においてNO)S604に進む。
S603では、コンテンツ容量削減プログラム123が、重複チャンク格納コンテンツ320から対象チャンク420を読み出し、図12のフローチャートに示す処理を終了する。
一方、S604では、コンテンツ容量削減プログラム123が、リード要求の対象となっている対象チャンク420が差分圧縮済みであるか否かを、重複チャンク判定表700のチャンク状態714を参照して判定する。そして、対象チャンク420が差分圧縮済みであると判定したら(S604においてYES)S605に進み、対象チャンク420が差分圧縮済みでないと判定したら(S604においてNO)S608に進む。
S605では、コンテンツ容量削減プログラム123が、重複チャンク格納コンテンツ320からベースチャンク420を読み出す。次いで、コンテンツ容量削減プログラム123は、コンテンツ310内の対象領域から差分チャンク440を読み出す(S608)。さらに、コンテンツ容量削減プログラム123は、ベースチャンク420と差分チャンク440から差分圧縮対象チャンク430を復元し(S607)、図12のフローチャートに示す処理を終了する。
S608では、対象チャンク420は重複チャンク420でも差分チャンク440でもないので、コンテンツ容量削減プログラム123は、コンテンツ310内の対象領域から対象チャンク420を読み出し、図12のフローチャートに示す処理を終了する。
図13は、実施例1に係るNAS10のチャンク更新処理の一例を示すフローチャートである。図13にフローチャートに示すチャンク更新処理は、クライアント11からのコンテンツ310のライト要求をトリガとする。
まず、コンテンツ容量削減プログラム123は、ライト要求の対象でもある対象チャンク420が重複チャンク420または差分圧縮対象チャンク430であるか否かを、重複チャンク判定表700のチャンク状態714を参照して判定する(S702)。そして、対象チャンク420が重複チャンク420または差分圧縮対象チャンク430であると判定したら(S702においてYES)対象チャンク420についてサブルーチンS600においてリード処理を行い、対象チャンク420が重複チャンク420または差分圧縮対象チャンク430でないと判定したら(S702においてNO)S707に進む。
対象チャンク420についてチャンクリード処理を行った後、コンテンツ容量削減プログラム123は、サブルーチンS600においてリードしたチャンク420をコンテンツ310の対象領域に書き込む(S703)。
次いで、コンテンツ容量削減プログラム123は、対象チャンク420が重複チャンク420であるか否かを、重複チャンク判定表700のチャンク状態714を参照して判定する(S704)。そして、対象チャンク420が重複チャンク420であると判定したら(S704においてYES)S705に進み、対象チャンク420が重複チャンク420でないと判定したら(S701においてNO)S706に進む。
S705では、コンテンツ容量削減プログラム123が重複チャンク管理表600から重複チャンク420の参照数622を1だけ減算する。一方、S706では、コンテンツ容量削減プログラム123が重複チャンク管理表600からベースチャンク420の参照数622を1だけ減算する。
S707では、コンテンツ容量削減プログラム123が更新内容をコンテンツ310の対象領域に反映させる。そして、コンテンツ容量削減プログラム123は、コンテンツ管理表500において対象チャンク420のデータ削減処理済みフラグ522をFalseに変更することで、対象チャンク420がデータ削減処理前であることを明示し(S708)、図13のフローチャートに示す処理を終了する。
このように構成される本実施例によれば、差分圧縮処理を行う際に差分圧縮処理における類似データの検索作業を不要にすることができる。これにより、処理負担の軽減を図ることが可能なストレージシステムを実現することができる。さらには、処理負担の増加を危惧して差分圧縮処理を行っていなかったストレージシステムにおいても差分圧縮処理によるデータ削減処理を行うことができ、さらなるデータ削減処理を行うことができる。
実施例1及び実施例2が適用されるストレージシステム(NAS10)は、更新前のデータ削減状況によって差分圧縮処理の対象となるチャンク420を変更しているが、データ削減処理中においてもコンテンツ310及びチャンク420は適宜更新されうる。このため、本実施例では、対象となるチャンク420の更新前の状態を適切に把握し、適切なデータ削減処理を行うものである。
ここで、実施例2が適用されるNAS10は実施例1のそれと同様である。従って、以下の説明において、同様の構成要素については同一の符号を付し、その説明を簡略化する。また、図示しない各種処理については、既に説明した実施例の各種処理が行われる。
図14は、実施例2に係るストレージシステム(NAS10)のコンテンツデータ削減処理の一例を示すフローチャートである。図14に示すコンテンツデータ削減処理は、実施例1の図7に示すコンテンツデータ削減処理とほぼ同一である。
異なる点は、コンテンツ容量削減プログラム123が、コンテンツデータ削減処理を行うに先立って、対象となるコンテンツ310のコンテンツ管理表500を複製して更新前のコンテンツ管理表500としてメモリ120またはキャッシュ130に残す(S802)ことと、全てのチャンク420に対してチャンクデータ削減処理(サブルーチンS900)を行った後に、複製して残していた更新前のコンテンツ管理表500を削除する(S806)ことである。
図15は、実施例2に係るNAS10のチャンクデータ削減処理の一例を示すフローチャートである。図15に示すチャンクデータ削減処理は、実施例1の図8に示すチャンクデータ削減処理とほぼ同じである。
異なる点は、サブルーチンS1100(サブルーチンS1500は実施例3において参照する)におけるチャンク重複排除処理の詳細が異なる(これについては後に詳述する)ことと、S904において、コンテンツ容量削減プログラム123が、更新前の対象チャンク420が重複排除済みまたは差分圧縮済みであるか否かを、コンテンツ管理表500のチャンク状態531を参照して判定する処理に先立って、サブルーチンS1000(更新前チャンク選定処理)を行うことである。更新前チャンク選定処理の詳細については後述する。
図16は、実施例2に係るNAS10の更新前チャンク選定処理の一例を示すフローチャートである。
まず、コンテンツ容量削減プログラム123は、基準チャンク420が設定されているか否かを判定する(S1002)。基準チャンク420は、後述するチャンク重複排除処理S1100のS1109、またはチャンク差分圧縮処理S1200のS1215において設定される。設定情報はNAS10のメモリ120またはキャッシュ130に一時的に格納される。そして、基準チャンク420が設定されていると判定したら(S1002においてYES)S1003に進み、基準チャンク420が設定されていないと判定したら(S1002においてNO)S1006に進む。
S1003では、コンテンツ容量削減プログラム123が、対象となるチャンク420と設定された基準チャンク420との間に未更新のチャンク420があるか否かを判定する。この判定は、コンテンツ容量削減プログラム123によるコンテンツデータ削減処理S800の動作中に、基準チャンク420以降においてチャンク420の挿入、削除があったため、コンテンツ管理表500に示す情報にズレが生じたか否かの判定である。
そして、対象となるチャンク420と設定された基準チャンク420との間に未更新のチャンク420がない(つまりズレがない)と判定したら(S1003においてYES)S1004に進み、対象となるチャンク420と設定された基準チャンク420との間に未更新のチャンク420がある(つまりズレがない)と判定したら(S1003においてNO)S1006に進む。
S1004では、コンテンツ容量削減プログラム123が、更新中(つまり現在記憶デバイス240に格納されている)のコンテンツ管理表500において、対象チャンク420と基準チャンク420との間の距離を、チャンク数として数える。次いで、コンテンツ容量削減プログラム123は、更新前の(S802において保存した)コンテンツ管理表500において、基準チャンク420からS1004で求めた距離分だけ後方のチャンク420の前回データ削減処理時チャンク情報530を、更新前の対象チャンク420の情報として設定し(S1005)、図16のフローチャートに示す処理を終了する。
一方、S1006では、コンテンツ容量削減プログラム123が、更新中(つまり現在記憶デバイス240に格納されている)のコンテンツ管理表500における前回データ削減処理時チャンク情報530を、更新前の対象チャンク420の情報として設定し(S1005)、図16のフローチャートに示す処理を終了する。
図17は、実施例2に係るNAS10のチャンク重複排除処理を示すフローチャートである。図17に示すチャンク重複排除処理は、実施例1の図9に示すチャンクデータ削減処理とほぼ同じである。
異なる点は、S1108及びS1109が、コンテンツ容量削減プログラム123が、重複チャンク管理表600から一致する重複チャンク420の参照数622を1だけ加算する(S1107)処理の後に追加された点である。
すなわち、S1107において、コンテンツ容量削減プログラム123は、更新前の(S802において保存した)コンテンツ管理表500においても、フィンガプリントが一致する重複チャンク420を参照しているか否かを判定する。そして、更新前のコンテンツ管理表500においても、フィンガプリントが一致する重複チャンク420を参照していると判定したら(S1107においてYES)S1108に進み、更新前のコンテンツ管理表500ではフィンガプリントが一致する重複チャンク420を参照していないと判定したら(S1107においてNO)S1118に進む。
S1108では、コンテンツ容量削減プログラム123が、更新前のコンテンツ管理表500においてフィンガプリントが一致するチャンク420を参照するチャンク420と対象チャンク420とを基準チャンク420に設定する。この後、S1118に進む。
図18は、実施例2に係るNAS10のチャンク差分圧縮処理の一例を示すフローチャートである。図18に示すチャンク差分圧縮処理は、図9に示す実施例1のチャンク差分圧縮処理とほぼ同じである。
異なる点は、重複チャンク判定表700に対象チャンク420の情報を登録した(S1214)後、S1215の処理を行う点である。
すなわち、S1215において、コンテンツ容量削減プログラム123は、更新前の(S802において保存した)コンテンツ管理表500における更新前のチャンク420と対象チャンク420とを基準チャンク420に設定する。
従って、本実施例によっても、上述した実施例1と同様の効果を奏することができる。
クライアント11がコンテンツ310を新規に作成して記憶デバイス240に格納する(ライト要求をする)場合、既に記憶デバイス240に格納されている他のコンテンツ310を複製して新規コンテンツ310を作成することがある。本実施例は、このような他のコンテンツ310を複製して作成された新規コンテンツ310についても適切な更新前チャンク420を簡易に検索できるものである。
ここで、実施例3が適用されるNAS10も実施例1のそれと同様である。また、図示しない各種処理については、既に説明した実施例1及び実施例2の各種処理が行われる。
図19は、実施例3に係るNAS10の重複チャンク管理表601の構成の一例を示す図である。図19に示す本実施例の重複チャンク管理表601には、実施例1の重複チャンク管理表600に、逆引き代表コンテンツID611及び代表コンテンツ参照数612が追加されている。
逆引き代表コンテンツID611には、重複チャンク格納コンテンツ320において最も多く参照されているコンテンツ310のIDが格納される。代表コンテンツ参照数612は、逆引き代表コンテンツID611において特定されたコンテンツ310が参照されている数である。これら逆引き代表コンテンツID611及び代表コンテンツ参照数612は事前に入力されており、後述する処理において適宜更新されうる。
図20は、実施例3に係るNAS10の新規作成コンテンツデータ削減処理の一例を示すフローチャートである。図20のフローチャートに示す新規作成コンテンツデータ削減処理は、クライアント11によりコンテンツ310が新規に作成されて記憶デバイス240に格納されたことをトリガとして開始される。
まず、コンテンツ容量削減プログラム123は、新規作成されたコンテンツ310をチャンク420に分割する(S1302)。チャンク420に分割する手法は既知であるのでここでの説明は省略する。
次いで、コンテンツ容量削減プログラム123は、新規作成されたコンテンツ310に含まれるチャンク420について、どのチャンク420に対して重複排除処理を行うかを特定する変数iを初期化し(S1303)、対象となるチャンク420についてサブルーチンS1500を実行することで、対象チャンク420の重複排除処理を行う。
サブルーチンS1500による重複排除処理の後、コンテンツ容量削減プログラム123は、重複排除処理を行う対象チャンク420を特定する変数iが、コンテンツ310を構成するチャンク420の総数nを下回っているか否かを判定する(S1304)。そして、下回っていると判定したら(S1304においてYES)S1305に進み、下回っていない(この場合はi=nという判定である)と判定したら(S1304においてNO)、サブルーチンS1400に示す更新前コンテンツ選定処理を実行する。更新前コンテンツ選定処理は、できるだけ重複するチャンク420との間で差分圧縮処理を行うためのものである。
S1305では、コンテンツ容量削減プログラム123が変数iを1つインクリメントする。その後、処理はサブルーチンS1500に戻る。
サブルーチンS1400による更新前コンテンツ選定処理の後、コンテンツ容量削減プログラム123は、どのチャンク420に対して差分圧縮処理等を行うかを特定する変数iを初期化し(S1306)、次いで、変数iにより特定される対象チャンク420が重複排除済みであるか否かを判定する(S1307)。そして、対象チャンク420が重複排除済みであると判定したら(S1307においてYES)、サブルーチンS1000に示す更新前チャンク選定処理を行い、対象チャンク420が重複排除済みでないと判定したら(S1307においてNO)S1310に進む。
サブルーチンS1000による更新前チャンク選定処理の後、コンテンツ容量削減プログラム123は、更新前の対象チャンク420が重複排除済みまたは差分圧縮済みであるか否かを判定する(S1308)。そして、更新前の対象チャンク420が重複排除済みまたは差分圧縮済みであると判定したら(S1308においてYES)サブルーチンS1200に示すチャンク差分圧縮処理(図18参照)を実行し、更新前の対象チャンク420が重複排除済み及び差分圧縮済みのいずれでもないと判定したら(S1308においてNO)、サブルーチンS600に示す非データ削減チャンク処理(図11参照)を実行する。
サブルーチンS1200によるチャンク差分圧縮処理の実行の後、コンテンツ容量削減プログラム123は、対象チャンク420が差分圧縮済みであるか否かを判定する(S109)。そして、対象チャンク420が差分圧縮済みであると判定したら(S1309においてYES)S1310に進み、対象チャンク420が差分圧縮処理をされていないと判定したら(S1309においてNO)サブルーチンS600に示す非データ削減チャンク処理を実行する。サブルーチンS600に示す非データ削減チャンク処理の実行後は、S1310に進む。
S1310において、コンテンツ容量削減プログラム123は、差分圧縮処理等を行う対象チャンク420を特定する変数iが、コンテンツ310を構成するチャンク420の総数nを下回っているか否かを判定する。そして、下回っていると判定したら(S1310においてYES)S1311に進み、コンテンツ容量削減プログラム123が変数iを1つインクリメントする。その後、処理はS1307に戻る。一方、下回っていない(この場合はi=nという判定である)と判定したら(S1310においてNO)、コンテンツ容量削減プログラム123は、複製して残していたコンテンツ管理表500を削除し(S1312)、図20のフローチャートに示す処理を終了する。
図21は、実施例3に係るNAS10の更新前コンテンツ選定処理の一例を示すフローチャートである。
まず、コンテンツ容量削減プログラム123は、対象コンテンツ310内において重複排除済みのチャンク420が最も多く参照する重複チャンク格納コンテンツ320を特定する(S1402)。次に、コンテンツ容量削減プログラム123は、重複チャンク管理表601を参照し、S1402において特定した重複チャンク格納コンテンツ320の逆引き代表コンテンツID611を取得する(S1403)。そして、コンテンツ容量削減プログラム123は、取得した逆引き代表コンテンツID611により特定されるコンテンツ310のコンテンツ管理表500から、前回データ削減処理時チャンク情報530を利用する(S1404)。
図22は、実施例3に係るNAS10のチャンク重複排除処理を示すフローチャートである。図22のフローチャートに示すチャンク重複排除処理は、図17のフローチャートに示す実施例2のチャンク重複排除処理に、新規作成コンテンツデータを重複チャンク格納コンテンツ320に移動する作業を追加したものである。
図22のフローチャートにおいて、S1502~S1506は、図17のフローチャートのS1102~S1106と共通する。なお、S1506において、フィンガプリントが一致するチャンク420が既に重複チャンク420であるか否かの判定は、既に発生した重複チャンク420が重複チャンク格納コンテンツ320に移動済みであるか(S1506においてYES)、あるいはまだ移動していないか(S1506においてNO)の判定である。
フィンガプリントが一致するチャンク420が既に重複チャンク420である(S1506においてYES)と判定したら、コンテンツ容量削減プログラム123は、対象チャンク420を含むコンテンツ310が重複チャンク格納コンテンツ320のチャンク参照数において代表コンテンツ310の代表コンテンツ参照数612を超えるか否かを判定する(S1508)。そして、超えると判定したら(S1508においてYES)S1509に進み、超えないと判定したら(S1508においてNO)S1510に進む。
一方、フィンガプリントが一致するチャンク420は既に重複チャンク420でない(S1506においてNO)と判定したら、サブルーチンS1550(重複チャンク格納コンテンツチャンク移動処理)に進む。
S1509において、コンテンツ容量削減プログラム123は、重複チャンク管理表601の逆引き代表コンテンツID611と参照数622とを、対象チャンク420を含むコンテンツ310のID及び参照数で更新する。S1510~S1512は、図17のS1108~S1109及びS1118~S1119と共通する。
図23は、実施例3に係るNAS10の重複チャンク格納コンテンツチャンク移動処理を示すフローチャートである。図23のフローチャートに示す重複チャンク格納コンテンツチャンク移動処理は、図17のフローチャートに示すチャンク重複排除処理のうち、S1110~S1117とほぼ同じである。
異なるのは、S1552、S1555及びS1556である。すなわち、コンテンツ容量削減プログラム123は、対象チャンク420を含むコンテンツ310と一致するチャンク420を含むコンテンツ310から最も多く参照する重複チャンク格納コンテンツ320を、チャンク420の追記先として選択する(S1552)。つまり、できるだけ参照数が多い重複チャンク格納コンテンツ320にまとめる作業を行う。
また、コンテンツ容量削減プログラム123は、対象チャンク420を含む、または一致するチャンク420を含むコンテンツ310が、重複チャンク格納コンテンツ320のチャンク参照数において代表コンテンツ310の代表コンテンツ参照数612を超えるか否かを判定する(S1555)。そして、超えると判定したら(S1555においてYES)S1556に進み、超えないと判定したら(S1555においてNO)S1557に進む。
S1556において、コンテンツ容量削減プログラム123は、重複チャンク管理表601の逆引き代表コンテンツID611と参照数622とを、対象チャンク420を含む、または一致するチャンク420を含むコンテンツ310のID及び参照数で更新する。
従って、本実施例によっても、上述した実施例2と同様の効果を奏することができる。
図24は、実施例4に係るストレージシステムの概略構成を示すブロック図である。
本実施例はいわゆるブロックストレージシステムに適用される。ホスト21はSAN(Storage Area Network)22を介してストレージシステム200にアクセスする。
ストレージシステム200の概略の構成は実施例1のストレージシステム200と略同一である。本実施例においては、データ削減プログラム222がストレージシステム200のメモリ220内にあるブロックストレージプログラム221に含まれている。また、ストレージシステム200の記憶デバイス240には、アドレス変換表1000、ブロック管理表1100、重複ブロック判定表1200及びブロック900、910が格納されている。アドレス変換表1000、ブロック管理表1100及び重複ブロック判定表1200の詳細については後述する。
図25は、実施例4に係るストレージシステム200に格納されるデータの構成の一例を示す図である。
本実施例のストレージシステム200では、ホスト21がストレージシステム200に対して操作を行うデータの単位であるファイルを複数のデータ単位に分割してストレージシステム200に格納している。実施例4(及び後述する実施例5)においては、ファイルは、データ長が固定長であるブロック900に分割されてストレージシステム200に格納されている。この際、データ削減プログラム222は、ブロック900、910に対して重複排除処理及び差分圧縮処理を行う。
ブロックストレージプログラム221は、ホスト21に対して論理アドレス空間810を提供し、ホスト21はこの論理アドレス空間810においてファイルの操作を行う。ファイルの実体は物理アドレス空間820にある。ファイルは固定長のブロック900に分割されている。論理アドレス空間810上のブロック900と物理アドレス空間820上のブロック900とは後述する変換テーブルにより対応付けられている。
本実施例のストレージシステム200においてもデータ削減プログラム222は重複排除処理及び差分圧縮処理を行うことでデータ削減処理をしている。物理アドレス空間820上にあるブロック900は、論理アドレス空間810上において複数のブロック900により参照されることがあり、これにより重複排除処理がされている。また、論理アドレス空間810上の差分圧縮対象ブロック910は、物理アドレス空間820上においてブロック900と差分圧縮処理の結果である差分ブロック920とに対応付けられている。
図26は、ブロックデータの差分圧縮処理の一例を説明するための図である。
ベースブロック900と差分圧縮対象ブロック910との間でXOR(排他的論理和)演算が行われる。ベースブロック900と差分圧縮対象ブロック910とでビット単位で共通する部分はXOR演算の結果として0が出力されるので、適切な圧縮処理を行うことで差分ブロック920のデータ容量を削減することができる。
図27は、実施例4に係るストレージシステム200のアドレス変換表1000の構成の一例を示す図である。
アドレス変換表1000は、ファイルの構造管理データの一例であり、アドレス変換表1000の各行が論理アドレス空間810上における個々のブロック900に対応している。
LBA(Logical Block Address)1010にはそれぞれのブロック900の論理アドレス空間810上におけるアドレス値が格納される。データ削減処理済みフラグ522には、このブロック900が既にデータ量削減処理がされたか否かを示すフラグ(Trueであればデータ量削減処理済み、Falseであればデータ量削減未処理)が格納される。
アドレス変換表1000には、データ削減処理前ブロック情報1020としてPBA(Physical Block Address)1021を有する。PBA1021には、LBA1010により特定されるブロック900の物理アドレス空間820上における物理アドレスが格納される。
また、アドレス変換表1000には、前回データ削減処理時ブロック情報1030として、差分圧縮フラグ1031、PBA1032、及びブロック内オフセット1033が格納される。前回データ削減処理時ブロック情報1030は、前回のデータ削減プログラム222による容量削減処理が行われた際の情報である。
差分圧縮フラグ1031は、前回の容量削減処理においてデータ削減プログラム222により差分圧縮処理がされたか否かを示すフラグであり、差分圧縮処理がされていればTrue、差分圧縮処理がされていなければFalseが格納される。PBA1032には、LBA1010により特定されるブロック900の物理アドレス空間820上における物理アドレスが格納される。ブロック内オフセット1033には、差分圧縮対象ブロック910において差分ブロック920がどの位置にあるかを示すオフセットが格納される。
図28は、実施例4に係るストレージシステム200のブロック管理表1100の構成の一例を示す図である。ブロック管理表1100は、物理アドレス空間820上のブロック900、920単位に作成される。
PBA1110には、ブロック900の物理アドレス空間820上における物理アドレスが格納される。参照数1111には、PBA1110により特定されるブロック900が論理アドレス空間810上のブロック900からどれだけの数参照されているかを示す数が格納される。差分圧縮フラグ1112は、PBA1110により特定されるブロック900が差分圧縮処理されているか否かを示すフラグであり、差分圧縮処理がされていればTrue、差分圧縮処理がされていなければFalseが格納される。
ブロック内オフセット1113、差分圧縮後サイズ1114、ベースブロック情報1120は差分ブロック920にのみ適用されるカラムであり、ブロック内オフセット1033には、差分ブロック920を構成する差分圧縮データがどの位置から開始するかを示すオフセットが格納される。差分圧縮後サイズ1114には、差分ブロック920を構成する差分圧縮データの差分圧縮処理後のサイズを示す値が格納される。ベースブロック情報1120は、差分ブロック920が差分圧縮処理された対象となるベースブロック900に関する値が格納され、PBAにはベースブロック900の物理アドレスが、ブロック内オフセットにはベースブロック900のオフセットが格納される。
図29は、実施例4に係るストレージシステム200の重複ブロック判定表1200の構成の一例を示す図である。重複ブロック判定表1200は、物理アドレス空間820上のブロック900単位に作成される。
フィンガプリント1210は、個々のブロック900のデータから求められた固定長のハッシュ値であり、このフィンガプリント1210を用いればブロック900を一意に特定することができる。差分圧縮フラグ1211は、PBA1212により特定されるブロック900が差分圧縮処理されているか否かを示すフラグであり、差分圧縮処理がされていればTrue、差分圧縮処理がされていなければFalseが格納される。PBA1212には、ブロック900の物理アドレス空間820上における物理アドレスが格納される。オフセット1213にはブロック900のオフセットが格納される。
図30は、実施例4に係るストレージシステム200のブロックデータ削減処理の一例を示すフローチャートである。
本実施例及び後述する実施例5において、図30に示すブロックデータ削減処理は、ブロック900単位でポストプロセス時に実行される。データ削減プログラム222はブロック900単位でデータ削減処理を行う。実行されるタイミングは任意であるが、一例として、ストレージシステム200のプロセッサ210がファイルの操作ログを適宜取得し、この操作ログから更新処理がされたファイルを特定し、更新に係るブロック900について図30に示すブロックデータ削減処理を行う例が挙げられる。あるいは、ファイル単位で更新処理がされたら状態が変化する更新フラグを設けておき、この更新フラグから更新処理がされたファイルを特定し、更新に係るブロック900について図30に示すファイルデータ削減処理を行う例が挙げられる。
まず、データ削減プログラム222は、サブルーチンS1700(ブロック重複排除処理)を実行する。ブロック重複排除処理の詳細については後述する。次いで、データ削減プログラム222は、対象となるブロック900が重複排除処理されたか否かを、ブロック管理表1100の参照数1111を参照して判定する(S1602)。そして、重複排除処理がされたと判定したら(S1602においてYES)図30フローチャートに示す処理を終了し、重複排除処理がされなかったと判定したら(S1602においてNO)S1603に進む。
S204では、データ削減プログラム222が、更新前の対象ブロック900が重複排除済みまたは差分圧縮済みであったか否かを、アドレス変換表1000を参照して判定する。そして、更新前の対象ブロック900が重複排除済みまたは差分圧縮済みであったと判定したら(S1603においてYES)、サブルーチンS1800(ブロック差分圧縮処理)を実行し、更新前の対象ブロック900が重複排除済みでもなく差分圧縮済みでもなかったと判定したら(S1603においてNO)サブルーチンS1900(非データ削減ブロック処理)を実行する。ブロック差分圧縮処理及び非データ削減ブロック処理の詳細については後述する。
サブルーチンS1800の処理が終わったら、データ削減プログラム222は、サブルーチンS1800による差分圧縮処理でブロック900の容量が削減できたか否かを判定する(S1605)。そして、ブロック900の容量が削減できたと判定したら(S1605においてYES)図30フローチャートに示す処理を終了し、ブロック900の容量が削減できなかったと判定したら(S1605においてNO)サブルーチンS1900を実行する。その後、図30のフローチャートに示す処理を終了する。
図31は、実施例4に係るストレージシステム200のブロック重複排除処理を示すフローチャートである。
まず、データ削減プログラム222は、対象ブロック900のフィンガプリントを算出する(S1702)。次いで、データ削減プログラム222は、S1702で算出したフィンガプリントに一致するフィンガプリントが存在するか否かを、重複ブロック判定表1200のフィンガプリント1210を参照して検索する(S1703)。そして、一致するフィンガプリントがあると判定したら(S1703においてYES)、重複するブロック900が存在しているので、一致したブロック900に対してサブルーチンS2000(ブロックリード処理)を実行する。ブロックリード処理の詳細については後述する。一方、一致するフィンガプリントがないと判定したら(S1703においてNO)、重複するブロック900が存在していないので、図31のフローチャートに示す処理を終了する。
サブルーチンS2000の処理の終了後、データ削減プログラム222は、サブルーチンS2000において読み出した(リードした)ブロック900のフィンガプリントを計算する(S1704)。そして、データ削減プログラム222は、S1704で算出したフィンガプリントが対象ブロック900のフィンガプリントと一致するか否かを判定する(S1705)。そして、S1704で算出したフィンガプリントが対象ブロック900のフィンガプリントと一致すると判定したら(S1705においてYES)S1706に進み、S1704で算出したフィンガプリントが対象ブロック900のフィンガプリントに一致しないと判定したら(S1706においてNO)、図31のフローチャートに示す処理を終了する。
S1706では、データ削減プログラム222が、ブロック管理表1100から一致する重複ブロック900の参照数1111を1だけ加算する。次いで、データ削減プログラム222は、データ削減処理前の対象ブロック900を削除する(S1707)。そして、データ削減プログラム222は、対象ブロック900についてのアドレス変換表1000を更新し(S1708)、図9のフローチャートに示す処理を終了する。
図32は、実施例4に係るストレージシステム200のブロック差分圧縮処理の一例を示すフローチャートである。
まず、データ削減プログラム222は、更新前の対象ブロック900が重複排除済みであるか否かを、アドレス変換表1000のデータ削減処理済みフラグ1011を参照して判定する(S1802)。そして、更新前の対象ブロック900が重複排除済みであると判定したら(S1802においてYES)S1803に進み、更新前の対象ブロック900が重複排除済みでないと判定したら(S1802においてNO)、更新前の対象ブロック900は既に重複排除済みまたは差分圧縮済みであったと判定されており(S1603においてYES)、従って、更新前の対象ブロック900は差分圧縮済みであるので、S1808に進む。
S1803では、データ削減プログラム222が更新前の対象ブロック900を読み出す。次いで、データ削減プログラム222は、更新前の対象ブロック900と対象ブロック900との間で差分圧縮処理を行う(S1804)。
S1804における差分圧縮処理の結果、差分ブロック920が対象ブロック900より容量が少なくなった(小さくなった)か否かを、データ削減プログラム222が判定する(S1805)。そして、差分ブロック920が対象ブロック900より小さくなったと判定したら(S1805においてYES)S1806に進み、差分ブロック920が対象ブロック900より小さくならないと判定したら(S1805においてNO)、図32のフローチャートに示す処理を終了する。
S1806では、データ削減プログラム222が、差分ブロック920を記憶デバイス240の空き領域に書き込む。次いで、データ削減プログラム222は、ブロック管理表1100において更新前の対象ブロック900の参照数1111を1だけ加算する(S1807)。さらに、データ削減プログラム222はアドレス変換表1000を更新し(S1813)、重複ブロック判定表1200に対象ブロック900の情報を登録する(S1814)。この後、図10のフローチャートに示す処理を終了する。
一方、S1808では、データ削減プログラム222が更新前の対象ブロック900のベースブロック900を読み出す。次いで、データ削減プログラム222は、更新前の対象ブロック900のベースブロック900と対象ブロック900との間で差分圧縮処理を行う(S1809)。
S1809における差分圧縮処理の結果、差分ブロック920が対象ブロック900より容量が少なくなった(小さくなった)か否かを、データ削減プログラム222が判定する(S1810)。そして、差分ブロック920が対象ブロック900より小さくなったと判定したら(S1810においてYES)S1811に進み、差分ブロック920が対象ブロック900より小さくならないと判定したら(S1810においてNO)、図32のフローチャートに示す処理を終了する。
S1811では、データ削減プログラム222が、差分ブロック920を記憶デバイス240の空き領域に書き込む。次いで、データ削減プログラム222は、ブロック管理表1100においてベースブロック900の参照数1111を1だけ加算する(S1812)。この後、S1813に進む。
図33は、実施例4に係るストレージシステム200の非データ削減ブロック処理の一例を示すフローチャートである。
まず、データ削減プログラム222はアドレス変換表1000を更新する(S1902)。次いで、データ削減プログラム222は、重複ブロック判定表1200に対象ブロック900の情報を登録し(S1903)、図33のフローチャートに示す処理を終了する。
図34は、実施例4に係るストレージシステム200のブロックリード処理の一例を示すフローチャートである。図34にフローチャートに示すブロックリード処理は、ホスト21からのファイルのリード要求をトリガとする。
まず、データ削減プログラム222は、リード要求の対象となっている対象ブロック900が差分圧縮済みであるか否かを、ブロック管理表1100の差分圧縮フラグ1112を参照して判定する(S2002)。そして、対象ブロック900が差分圧縮済みであると判定したら(S2002においてYES)S2003に進み、対象ブロック900が差分圧縮済みでないと判定したら(S2002においてNO)S2006に進む。
S2003では、データ削減プログラム222がベースブロック900を読み出す。次いで、データ削減プログラム222は、記憶デバイス240の対象領域から差分ブロック920を読み出す(S2004)。さらに、データ削減プログラム222は、ベースブロック900と差分ブロック920から差分圧縮対象ブロック910を復元し(S2005)、図34のフローチャートに示す処理を終了する。
S2006では、対象ブロック900は重複ブロック900でも差分ブロック920でもないので、データ削減プログラム222は、記憶デバイス240の対象領域から対象ブロック900を読み出し、図34のフローチャートに示す処理を終了する。
図35は、実施例4に係るストレージシステム200のブロック更新処理の一例を示すフローチャートである。図35にフローチャートに示すブロック更新処理は、ホスト21からのファイルのライト要求をトリガとする。
まず、データ削減プログラム222は、ライト要求の対象でもある対象ブロック900が重複排除済みまたは差分圧縮済みであるか否かを、アドレス変換表1000を参照して判定する(S2102)。そして、対象ブロック900が重複排除済みまたは差分圧縮済みであると判定したら(S2102においてYES)、更新後のブロック900を記憶デバイス240の対象領域に書き込み(S2103)、重複排除済みでも差分圧縮済みでもないと判定したら(S2102においてNO)S2105に進む。
S2103の後、データ削減プログラム222はブロック管理表1100から更新前のブロック900の参照数1111を1だけ減算する(S2104)。一方、S2105では、データ削減プログラム222が更新後のブロック900を上書きする。
そして、データ削減プログラム222は、アドレス変換表1000の対象ブロック900の情報を更新し、図35のフローチャートに示す処理を終了する。
従って、本実施例によっても、上述した実施例1と同様の効果を奏することができる。
図36は、実施例5に係るNAS10の概略構成を示すブロック図である。
本実施例のストレージシステムであるNAS10は、実施例1に示したNASヘッド100と実施例4に示したストレージシステム200とを有する。このとき、データ削減処理を行うプログラムは、ストレージシステム200のメモリ220内に格納されているデータ削減プログラム222である。また、ストレージシステム200の記憶デバイス240には、実施例4の記憶デバイス240に格納された各種データに加えて、コンテンツ管理表501が格納される。
本実施例の基本的な動作は実施例4と共通し、図示しない各種処理については、既に説明した実施例4の各種処理が行われる。以下、実施例4と異なる動作をする点を中心に説明する。
本実施例では、ブロックデータ更新に係る情報をNASヘッド100がストレージシステム200に提供し、ストレージシステム200のデータ削減プログラム222がデータ削減処理を行う。
図37は、実施例5に係るNAS10に格納されるデータの構成の一例を示す図である。
図37に示すように、本実施例のNAS10において、ローカルファイルシステムプログラム122が提供するファイルシステムにより、ホスト21はコンテンツ単位で操作を行う。実施例4と同様に、ストレージシステム200の論理アドレス空間810には複数の固定長のブロック900が存在し、少なくとも一つのブロック900によりコンテンツが構成されている。
図38は、実施例5に係るストレージシステム200のコンテンツ管理表の構成の一例を示す図である。
コンテンツ管理表501はコンテンツ単位に作成される。コンテンツID510には、個々のコンテンツを特定するIDが格納される。コンテンツ内ブロック番号540には、コンテンツを構成するブロックを特定する番号が格納される。LBA541には、コンテンツ内ブロック番号540により特定されるブロック900の論理アドレスが格納される。
図39は、実施例5に係るNAS10の特殊ライトコマンドの構成の一例を示す図である。図39に示す特殊ライトコマンドは、NASヘッド100からストレージシステム200へのライト要求の際に発行される。
特殊ライトコマンドは、オペレーションコード、ネームスペース、データポインタ、書き込み先LBA、及び更新前LBAを有する。本実施例の特殊ライトコマンドは、通常のライトコマンドに加えて、ブロックデータの更新前のLBAを特定する更新前LBAを有する。
図40は、実施例5に係るNAS10のNASブロック更新処理の一例を示すフローチャートである。図40のNASブロック更新処理は、クライアント11からのファイルのライト要求をトリガとし、NASヘッド100のプロセッサ110により実行される。
まず、プロセッサ110は、ブロックストレージであるストレージシステム200からライト要求の対象となる対象ブロック900を読み出す(S2202)。次に、プロセッサ110は、S2202でリードしたブロックへ更新内容を反映する(S2203)。次いで、プロセッサ110は、更新したブロック900の書き込み先LBAを決定する(S2204)。さらに、プロセッサ110は、ストレージシステム200に対して、特殊ライトコマンドを用いて更新前ブロック900のLBAと更新後(つまり書き込み先)ブロック900のLBAを通知して、ライト処理を依頼する。
その後、ストレージシステム200は、図35に示すサブルーチンS2100(ブロック更新処理)を実行し、ライト完了通知をNASヘッド100に通知する。プロセッサ110は、ストレージシステム200からライト完了通知を受領し(S2206)、図40に示す処理を終了する。
図41は、実施例5に係るストレージシステム200のブロック差分圧縮処理の一例を示すフローチャートである。図41のフローチャートに示すブロック差分圧縮処理は、図32のフローチャートに示す実施例4のブロック差分圧縮処理に、NASヘッド100から通知された更新前ブロックのLBAを用いて更新前ブロック900を特定する作業を追加したものである。
すなわち、データ削減プログラム222は、NASヘッド100からのブロック更新処理のリクエスト時に更新前ブロック900のLBAが通知されているか否かを判定する(S2302)。そして、更新前ブロック900のLBAが通知されていると判定したら(S2302においてYES)S2303に進み、更新前ブロック900のLBAが通知されていないと判定したら(S2302においてNO)S2304に進む。S2303では、データ削減プログラム222が、通知されたLBAのブロック900を更新前ブロック900として設定する。
S2304以降は、図35のS1802~S1814と同一の処理を行う。
従って、本実施例によっても、上述した実施例4と同様の効果を奏することができる。
なお、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)、Python等の広範囲のプログラム又はスクリプト言語で実装できる。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
11…クライアント 12…ネットワーク 21…ホスト 100…NASヘッド 110…プロセッサ 120…メモリ 123…コンテンツ容量削減プログラム 200…ストレージシステム 210…プロセッサ 220…メモリ 222…データ削減プログラム 230…キャッシュ 240…記憶デバイス 310…コンテンツ 320…重複チャンク格納コンテンツ 410…非重複チャンク 420…重複チャンク 430…差分圧縮対象チャンク 440…差分チャンク 500、501…コンテンツ管理表 600、601…重複チャンク管理表 700…重複チャンク判定表 900…ブロック 910…差分圧縮対象ブロック 920…差分ブロック 1000…アドレス変換表 1100…ブロック管理表 1200…重複ブロック判定表

Claims (10)

  1. データを格納するストレージデバイスと、前記ストレージデバイスに格納する前記データを処理するプロセッサとを備えたストレージシステムにおいて、
    重複する複数の前記データに対して重複排除を行う重複排除機能と、類似する複数の前記データの差分を格納する差分圧縮機能と、を有し、
    前記プロセッサは、格納している前記データを更新するライト要求を受信すると、
    前記ライト要求よる更新前の前記データが前記重複排除を行われており、前記更新後の前記データが他の前記データと重複しない場合に、前記更新前の前記データと前記更新後の前記データとの差分を生成して格納する前記差分圧縮を行う
    ことを特徴とするストレージシステム。
  2. 前記更新後の前記データについて重複判定を行い、
    他の前記データと重複している場合には、前記他のデータと重複排除を行い、
    他の前記データと重複しておらず、前記更新前の前記データが重複データである場合に、前記差分圧縮を行う
    ことを特徴とする請求項1に記載のストレージシステム。
  3. 更新後の前記データが他の前記データと重複しておらず、前記更新前のデータが重複データではない場合に、前記更新後の前記データを前記ストレージデバイスに格納する
    ことを特徴とする請求項2に記載のストレージシステム。
  4. 前記プロセッサは、前記差分圧縮を行った更新データを再更新するライト要求を受信すると、
    前記再更新後の前記データについて重複判定を行い、
    他の前記データと重複している場合には、前記他のデータと重複排除を行い、
    他の前記データと重複していない場合、前記更新前のデータとの前記差分圧縮を行う
    ことを特徴とする請求項1に記載のストレージシステム。
  5. 前記ライト要求よる更新前の前記データが前記重複排除を行われており、前記更新後の前記データが他の前記データと重複しない場合に、前記差分圧縮を行った場合の差分データ量と、前記差分圧縮を行わない場合の更新後データ量と、を比較し、データ量が小さい方の形態にて前記データを格納する
    ことを特徴とする請求項1に記載のストレージシステム。
  6. 前記ストレージデバイス内の前記更新前データは、前記ライト要求による前記データの更新前及び更新後において、前記重複排除機能により他の前記データから参照されており、前記データの更新後に削除されずに前記ストレージデバイス内に格納される
    ことを特徴とする請求項1に記載のストレージシステム。
  7. 複数の前記データを順番を並べてデータ列でファイルを構成し、
    前記ファイルの更新は、前記データ列への前記データの挿入及び前記データの削除を含み、
    前記ファイルを更新した場合に、前記更新前のファイルと前記更新後のファイルとで前記データの重複判定を行い、重複判定に基づいて前記データの挿入及び前記データの削除を検知して前記差分圧縮の基準データを変更することを特徴とする請求項1に記載のストレージシステム。
  8. 複数の前記データでファイルを構成し、
    前記プロセッサは、
    前記ファイル内の前記データが前記重複排除及び差分圧縮にて参照する参照先データの数に基づいて、代表ファイルを特定し、
    前記代表ファイルを基準として差分圧縮を行う
    ことを特徴とする請求項1に記載のストレージシステム。
  9. 前記ストレージシステムは上位管理システムを有し、
    前記上位管理システムからの通知により前記更新前データを特定する
    ことを特徴とする請求項1に記載のストレージシステム。
  10. データを格納するストレージデバイスと、前記ストレージデバイスに格納するデータを処理するプロセッサとを備えたストレージシステムにおけるデータ量削減方法であって、
    重複する複数のデータに対して重複排除を行う重複排除機能と、類似する複数のデータの差分を格納する差分圧縮機能と、を有し、
    格納しているデータを更新するライト要求を受信すると、
    前記ライト要求よる更新前のデータが前記重複排除を行われており、前記更新後のデータが他のデータと重複しない場合に、前記更新前のデータと前記更新後のデータとの差分を生成して格納する前記差分圧縮を行う
    ことを特徴とするストレージシステムにおけるデータ量削減方法。
JP2020214037A 2020-12-23 2020-12-23 ストレージシステムおよびストレージシステムにおけるデータ量削減方法 Pending JP2022099948A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020214037A JP2022099948A (ja) 2020-12-23 2020-12-23 ストレージシステムおよびストレージシステムにおけるデータ量削減方法
US17/473,804 US20220197527A1 (en) 2020-12-23 2021-09-13 Storage system and method of data amount reduction in storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020214037A JP2022099948A (ja) 2020-12-23 2020-12-23 ストレージシステムおよびストレージシステムにおけるデータ量削減方法

Publications (1)

Publication Number Publication Date
JP2022099948A true JP2022099948A (ja) 2022-07-05

Family

ID=82023432

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020214037A Pending JP2022099948A (ja) 2020-12-23 2020-12-23 ストレージシステムおよびストレージシステムにおけるデータ量削減方法

Country Status (2)

Country Link
US (1) US20220197527A1 (ja)
JP (1) JP2022099948A (ja)

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE0601702L (sv) * 2006-08-18 2008-02-19 Modul System Sweden Ab Förfarande för inköp, betalning och validering av en resa
US8635194B2 (en) * 2006-10-19 2014-01-21 Oracle International Corporation System and method for data compression
US10642794B2 (en) * 2008-09-11 2020-05-05 Vmware, Inc. Computer storage deduplication
US20100088296A1 (en) * 2008-10-03 2010-04-08 Netapp, Inc. System and method for organizing data to facilitate data deduplication
DE102009032821A1 (de) * 2008-10-28 2010-04-29 Giesecke & Devrient Gmbh Speichermedium mit unterschiedlichen Zugriffsmöglichkeiten
US8751462B2 (en) * 2008-11-14 2014-06-10 Emc Corporation Delta compression after identity deduplication
US8161255B2 (en) * 2009-01-06 2012-04-17 International Business Machines Corporation Optimized simultaneous storing of data into deduplicated and non-deduplicated storage pools
US9442846B2 (en) * 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
US8195636B2 (en) * 2009-04-29 2012-06-05 Netapp, Inc. Predicting space reclamation in deduplicated datasets
US20100332401A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites
US9715434B1 (en) * 2011-09-30 2017-07-25 EMC IP Holding Company LLC System and method for estimating storage space needed to store data migrated from a source storage to a target storage
JP5853734B2 (ja) * 2012-02-02 2016-02-09 富士通株式会社 仮想ストレージ装置,制御装置及び制御プログラム
US8732403B1 (en) * 2012-03-14 2014-05-20 Netapp, Inc. Deduplication of data blocks on storage devices
US9400610B1 (en) * 2012-06-13 2016-07-26 Emc Corporation Method for cleaning a delta storage system
US9141301B1 (en) * 2012-06-13 2015-09-22 Emc Corporation Method for cleaning a delta storage system
JP2014215666A (ja) * 2013-04-23 2014-11-17 富士通株式会社 制御システム,制御装置及び制御プログラム
US10380072B2 (en) * 2014-03-17 2019-08-13 Commvault Systems, Inc. Managing deletions from a deduplication database
WO2015155103A1 (de) * 2014-04-08 2015-10-15 Fujitsu Technology Solutions Intellectual Property Gmbh Verfahren zum verbesserten zugriff auf einen hauptspeicher eines computersystems, entsprechendes computersystem sowie computerprogramm-produkt
US9940337B2 (en) * 2015-05-31 2018-04-10 Vmware, Inc. Predictive probabilistic deduplication of storage
US20170038978A1 (en) * 2015-08-05 2017-02-09 HGST Netherlands B.V. Delta Compression Engine for Similarity Based Data Deduplication
US20170123676A1 (en) * 2015-11-04 2017-05-04 HGST Netherlands B.V. Reference Block Aggregating into a Reference Set for Deduplication in Memory Management
WO2017108900A1 (de) * 2015-12-21 2017-06-29 Tgw Logistics Group Gmbh Verfahren zum sortieren von förderobjekten auf einer förderanlage mittels zeitsteuerung
US20170293450A1 (en) * 2016-04-11 2017-10-12 HGST Netherlands B.V. Integrated Flash Management and Deduplication with Marker Based Reference Set Handling
US10108543B1 (en) * 2016-09-26 2018-10-23 EMC IP Holding Company LLC Efficient physical garbage collection using a perfect hash vector
US10558646B2 (en) * 2017-04-30 2020-02-11 International Business Machines Corporation Cognitive deduplication-aware data placement in large scale storage systems
US10809928B2 (en) * 2017-06-02 2020-10-20 Western Digital Technologies, Inc. Efficient data deduplication leveraging sequential chunks or auxiliary databases
US10976962B2 (en) * 2018-03-15 2021-04-13 Pure Storage, Inc. Servicing I/O operations in a cloud-based storage system
US10795812B1 (en) * 2017-06-30 2020-10-06 EMC IP Holding Company LLC Virtual copy forward method and system for garbage collection in cloud computing networks
EP3554050A1 (de) * 2018-04-09 2019-10-16 Siemens Aktiengesellschaft Verfahren zum sichern einer automatisierungskomponente
US11507305B2 (en) * 2019-03-29 2022-11-22 EMC IP Holding Company LLC Concurrently performing normal system operations and garbage collection
CN111061428B (zh) * 2019-10-31 2021-05-18 华为技术有限公司 一种数据压缩的方法及装置
US11093151B1 (en) * 2020-02-03 2021-08-17 Exagrid Systems, Inc. Similarity matching
US11687424B2 (en) * 2020-05-28 2023-06-27 Commvault Systems, Inc. Automated media agent state management

Also Published As

Publication number Publication date
US20220197527A1 (en) 2022-06-23

Similar Documents

Publication Publication Date Title
US10489059B2 (en) Tier-optimized write scheme
JP6304406B2 (ja) ストレージ装置、プログラム、情報処理方法
US9965216B1 (en) Targetless snapshots
JP6345698B2 (ja) 格納されたデータにおける冗長削減
US10031703B1 (en) Extent-based tiering for virtual storage using full LUNs
US8949208B1 (en) System and method for bulk data movement between storage tiers
US9715434B1 (en) System and method for estimating storage space needed to store data migrated from a source storage to a target storage
US7831793B2 (en) Data storage system including unique block pool manager and applications in tiered storage
US8943032B1 (en) System and method for data migration using hybrid modes
US8694469B2 (en) Cloud synthetic backups
US10956071B2 (en) Container key value store for data storage devices
KR20000022716A (ko) 로그 구조화 목표 저장장치를 사전에 구성하여 볼륨을 효율적으로 복사하는 방법 및 장치
US9189408B1 (en) System and method of offline annotation of future accesses for improving performance of backup storage system
US20180307440A1 (en) Storage control apparatus and storage control method
CN105493080B (zh) 基于上下文感知的重复数据删除的方法和装置
CN110347643B (zh) 一种磁盘间ntfs卷克隆方法及装置
US20170351608A1 (en) Host device
CN114063895B (zh) 存储系统和存储系统中的数据复制方法
CN110427347A (zh) 重复数据删除的方法、装置、存储节点及存储介质
US10725970B2 (en) Block storage device with optional deduplication
US20210173563A1 (en) Storage system and volume copying method
US10013217B1 (en) Upper deck file system shrink for directly and thinly provisioned lower deck file system in which upper deck file system is stored in a volume file within lower deck file system where both upper deck file system and lower deck file system resides in storage processor memory
US11016884B2 (en) Virtual block redirection clean-up
JP2022099948A (ja) ストレージシステムおよびストレージシステムにおけるデータ量削減方法
JP6419662B2 (ja) ストレージシステム及びデータ重複検出方法