JP2017045177A - ストレージシステム、ホスト計算機、ストレージコントローラ及びデータ重複検出方法 - Google Patents

ストレージシステム、ホスト計算機、ストレージコントローラ及びデータ重複検出方法 Download PDF

Info

Publication number
JP2017045177A
JP2017045177A JP2015165787A JP2015165787A JP2017045177A JP 2017045177 A JP2017045177 A JP 2017045177A JP 2015165787 A JP2015165787 A JP 2015165787A JP 2015165787 A JP2015165787 A JP 2015165787A JP 2017045177 A JP2017045177 A JP 2017045177A
Authority
JP
Japan
Prior art keywords
chunk
ecc
data
duplication
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.)
Granted
Application number
JP2015165787A
Other languages
English (en)
Other versions
JP6419662B2 (ja
Inventor
祥一 澤田
Shoichi Sawada
祥一 澤田
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 JP2015165787A priority Critical patent/JP6419662B2/ja
Publication of JP2017045177A publication Critical patent/JP2017045177A/ja
Application granted granted Critical
Publication of JP6419662B2 publication Critical patent/JP6419662B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】重複排除に要するコストを低減する。
【解決手段】実施形態によれば、ストレージ装置を利用するホスト計算機は、ECC取得部と重複検出部とを具備する。前記ECC取得部は、1つ以上のセクタから構成されるチャンクを単位に、各々が1つ以上のECCから構成されるECC値を取得する。前記重複検出部は、前記ECC値を前記チャンクを単位に比較することにより、比較されたECC値に対応するチャンクのデータの重複の可能性を判定する。前記重複検出部は更に、前記判定の結果に基づいて前記対応するチャンクのデータを比較することにより、当該対応するチャンクのデータの重複を検出する。
【選択図】図2

Description

本発明の実施形態は、ストレージシステム、ホスト計算機、ストレージコントローラ及びデータ重複検出方法に関する。
近年、ストレージ装置に格納されるべきデータの量は増大の一途をたどっている。このため、ストレージ装置の限られた記憶容量を有効に利用する技術が要求されている。このような技術の1つとして、重複排除技術が注目されている。重複排除技術によれば、同一内容のデータが重複してストレージ装置に格納されるのを防止する。このデータの重複は、例えば、チャンクと呼ばれるデータの塊を単位に判定される。
重複排除技術は、一般に、重複排除処理を実行する時期の違いにより2つに大別される。第1の重複排除技術では、ストレージ装置へのライトアクセスに応じて、重複排除処理が実行される。これに対して第2の重複排除技術では、ストレージ装置へのライトアクセスとは非同期に、重複排除処理が実行される。
第1の重複排除技術では、例えば、ストレージコントローラ(またはストレージ装置を利用するホスト計算機)は、ストレージ装置へのライトアクセスに応じて、ライトデータと同一内容のデータが、ストレージ装置に格納されているかを、チャンクを単位に判定する。この判定のために、ストレージコントローラは、SHA1のようなハッシュ関数を用いて、チャンク毎に、対応するデータのハッシュ値を計算する。計算されたハッシュ値は、対応するチャンクに対応付けて、ハッシュテーブルに格納される。
ストレージコントローラは、例えば第1のチャンクのデータの第1のハッシュ値を計算した場合、第1のハッシュ値と同一のハッシュ値がハッシュテーブルに格納されているかに基づいて、第1のチャンクと重複するデータが既にストレージ装置に格納されているかを判定する。コントローラは、第1のチャンクと重複するデータが格納されていない場合だけ、当該第1のチャンクのデータをストレージ装置に書き込む。これにより、ストレージ装置から重複するデータが排除される。
一方、第2の重複排除技術では、ストレージコントローラ(またはホスト計算機)は、ストレージ装置に格納されている全データをチャンク単位にスキャン(リードして)、比較によりデータが重複するチャンクを検出する。ここで、第1及び第2のチャンクが重複チャンクとして検出されたものとする。この場合、ストレージコントローラは、例えばストレージ装置における第2のチャンクのデータを削除(または無効化)し、且つ第2のチャンクへのアクセスが第1のチャンクへのアクセスに切り替えられるように、マッピングを変更する。
特許第5444506号公報
しかし、第1の重複排除技術では、ストレージ装置にデータをライトする場合に、チャンク毎に対応するデータ(ライトデータ)のハッシュ値を計算する必要がある。また、第2の重複排除技術では、ストレージ装置に格納されている全データをチャンク単位にスキャンして比較する処理が必要となる。また、第2の重複排除技術における重複チャンクの検出(つまり、チャンク間のデータの重複の検出)に、ハッシュテーブルに基づくハッシュ値の比較を用いることも可能であるが、第1の重複排除技術と同様にチャンク毎にハッシュ値を計算する必要がある。
本発明が解決しようとする課題は、データの重複の検出に要するコストを低減できるストレージシステム、ホスト計算機、ストレージコントローラ及びデータ重複検出方法を提供することにある。
実施形態によれば、ストレージシステムは、データ及び当該データに基づいて生成される誤り訂正コード(ECC)がセクタを単位に格納されるストレージ装置と、前記ストレージ装置を利用するホスト計算機とを具備する。前記ホスト計算機は、ECC取得部と重複検出部とを具備する。前記ECC取得部は、1つ以上のセクタから構成されるチャンクを単位に、各々が1つ以上のECCから構成されるECC値を取得する。前記重複検出部は、前記ECC値を前記チャンクを単位に比較することにより、比較されたECC値に対応するチャンクのデータの重複の可能性を判定する。前記重複検出部は更に、前記判定の結果に基づいて前記対応するチャンクのデータを比較することにより、当該対応するチャンクのデータの重複を検出する。
実施形態に係るストレージシステムの典型的なハードウェア構成を示すブロック図。 図1に示されるホストの典型的な機能構成を主として示すブロック図。 同実施形態におけるチャンクのデータ構造の例を示す図。 図2に示される重複管理テーブルのデータ構造の例を示す図。 図2に示されるアドレステーブルのデータ構造例を示す図。 同実施形態におけるECC設定処理の典型的な手順を示すフローチャート。 図6に示されるECC設定処理において実行されるECC取得処理の典型的な手順を示すフローチャート。 同実施形態の変形例におけるECC取得処理の典型的な手順を示すフローチャート。 同実施形態における重複チャンク探索処理の典型的な手順を示すフローチャート。 図9に示される重複チャンク探索処理において実行される重複チャンクマージ処理の典型的な手順を示すフローチャート。 重複チャンク探索処理に起因する重複管理テーブルの状態の変化の例を示す図。 重複チャンク探索処理に起因するアドレステーブルの状態の変化の例を示す図。 同実施形態におけるライト処理の典型的な手順を示すフローチャート。
以下、実施の形態につき図面を参照して説明する。
図1は一つの実施形態に係るストレージシステムの典型的なハードウェア構成を示すブロック図である。ストレージシステムは、ストレージ装置10と、ホスト計算機(ホスト)20とを含む。ストレージ装置10(より、詳細には、ストレージ装置10のストレージコントローラ12)は、ファイバチャネル(FC)、スモールコンピュータシステムインタフェース(SCSI)、シリアルアタッチドSCSI(SAS)、インターネットSCSI(iSCSI)、イーサネット(登録商標)、或いはシリアルATアタッチメント(SATA)のような、ホストインタフェースバス30を介してホスト20と接続されている。なお、ストレージ装置10が、ストレージエリアネットワーク(SAN)、インターネット或いはイントラネットのようなネットワークを介してホスト20と接続されていても良い。
ストレージ装置10は、ストレージ11と、ストレージコントローラ12とを含む。ストレージ11は、FC、SCSI、SAS、iSCSI、イーサネット、或いはSATAのようなストレージインタフェースバス13を介してストレージコントローラ12と接続されている。
ストレージ11は、例えばハードディスクドライブ(HDD)である。しかし、ストレージ11が、複数のHDDから構成されるRAID(Redundant Arrays of Inexpensive Disks、またはRedundant Arrays of Independent Disks)のようなディスクアレイであっても構わない。またストレージ11が、HDDとの互換性を有するソリッドステートドライブ(SSD)、或いはフラッシュアレイのようなフラッシュストレージであっても構わない。SSD及びフラッシュストレージは、一般に、複数のフラッシュメモリを用いて構成される、
ストレージコントローラ12は、ホスト20からのアクセス要求(より詳細には、ライトコマンドまたはリードコマンド)に応じて、例えばセクタと呼ばれるデータの塊を単位にストレージ11にアクセスする。ストレージコントローラ12はまた、ストレージ11にデータをライトする場合、セクタ単位にエラー訂正コード(ECC)を生成する。ECCは、当該ECCの生成に用いられたデータのエラーの検出及び訂正に用いられる。そしてストレージコントローラ12は、セクタ単位に、データとECCを含む付加情報との組をストレージ11にライトする。付加情報が、ECCに加えて、メタデータ、或いはデータ保護情報を含んでいても構わない。
ホスト20は、ストレージインタフェース(SIF)コントローラ21と、メモリ22と、HDD23と、CPU24とを含む。SIFコントローラ21は、CPU24とストレージ装置10のストレージコントローラ12との間のデータ転送を制御する。SIFコントローラ21は、CPU24からのアクセス要求をストレージコントローラ12に送信し、当該アクセス要求に対するストレージコントローラ12からの応答を受信する。SIFコントローラ21は、ストレージコントローラ12からの応答を受信すると、当該応答を、CPU24に伝達する。
メモリ22は、ダイナミックRAM(DRAM)のような書き換えが可能な揮発性メモリである。メモリ22の一部の記憶領域は、HDD23からロードされるオペレーティングシステム(OS)及び種々のプログラムを格納するのに用いられる。メモリ22の他の一部の記憶領域は、CPU24のためのワーク領域として用いられる。
HDD23には、OS及び複数のプログラムが格納されている。複数のプログラムは、アプリケーションプログラム(以下、アプリケーションと称する)及びユーティリティプログラムを含む。CPU24は、ホスト機器20が起動されたときに、ROMまたはフラッシュROM(FROM)のような不揮発性メモリに格納されているIPLを実行することにより、HDD23に格納されているOSをメモリ22にロードする。またCPU24は、HDD23に格納されているプログラムを適宜メモリ22にロードする。
CPU24は、メモリ22にロードされたプログラムに従い、アクセス要求部203、ECC取得部204、重複排除コントローラ205、及びアクセス部206(図2)として機能する。本実施形態では、CPU24は、アプリケーションに従い、アクセス要求部203として機能し、特定のユーティリティプログラムに従い、ECC取得部204及び重複排除コントローラ205として機能し、OSに従い、アクセス部206として機能する。
図2は、図1に示されるホスト20の典型的な機能構成を主として示すブロック図である。ホスト20のメモリ22の一部の記憶領域は、重複管理テーブル201及びアドレステーブル202を格納するのに用いられる。ホスト20は、重複管理テーブル201及びアドレステーブル202に加えて、前述のアクセス要求部203、ECC取得部204、重複排除コントローラ205、及びアクセス部206を含む。
アクセス要求部203は、例えばアプリケーションからの要求に応じて、アクセス部206に対してストレージ装置10へのアクセスを要求する。本実施形態では、アクセス要求部203からのアクセス要求に応じて、ストレージ装置10へのアクセスが、ブロックと呼ばれる固定長または可変長のデータの塊を単位に実行されるものとする。ブロックのデータは、例えば、チャンクと呼ばれるデータの塊に分割される。チャンクのデータは、ストレージ装置10においては、例えば、複数のセクタに分散して格納される。
図3は、本実施形態におけるチャンクのデータ構造の例を示す。図3の例では、チャンク31はn個のセクタ310_1乃至310_nに分割される。即ちチャンク31はn個のセクタ310_1乃至310_nから構成される。本実施形態では、説明の簡略化のために、チャンク31のデータのサイズ(チャンクサイズ)は4KB(キロバイト)の固定長であるものとするが、可変長であっても構わない。
チャンク31のデータは、セクタ310_1乃至310_nに均等に分散されて格納される。本実施形態において、セクタ310_1乃至310_nのサイズ、つまりセクタ310_1乃至310_nのデータ311_1乃至311_nのサイズ(セクタサイズ)は、512Bの固定長である。したがって、チャンク31のチャンクサイズが本実施形態のように4KBである場合、nは8である。これに対してチャンクサイズが可変長である場合、nは必ずしも8に一致せず、例えば1の場合もあり得る。
セクタ310_1乃至310_n(より詳細には、セクタ310_1乃至310_nのデータ311_1乃至311_n)には、ECC312_1乃至312_nを含む付加情報が付加されている。ECC312_1乃至312_nは、データ311_1乃至311_nに基づいてストレージコントローラ12によって生成される。図3では、ECC312_1乃至312_n以外の付加情報は省略されている。
データ311_1乃至311_nのサイズ(つまり、セクタサイズ)が512Bの場合、ECC312_1乃至312_nのサイズ(ECCサイズ)は一般に数十ビット程度である。しかし、ECCサイズが、必ずしも数十ビット程度でなくても構わない。
図2においてECC取得部204は、ストレージ装置10に格納されたチャンクを単位に、ECCの群を取得する。ECC取得部204は、取得されたECCの群に基づいて、それぞれのECCの値を重複管理テーブル201に格納する。
図4は、図2に示される重複管理テーブル201のデータ構造の例を示す。重複管理テーブル201の各エントリは、重複管理レコードを格納するのに用いられる。重複管理レコードは、物理アドレス、ECC値及び参照カウントを含む。重複管理テーブル201の主キーは物理アドレスである。
重複管理レコード中の物理アドレスは、当該重複管理レコード中のECC値に対応するECC群を含むセクタ群から構成されるチャンクが格納されている、ストレージ装置10(ストレージ11)の記憶領域(物理記憶領域)を示す。重複管理レコード中の参照カウントは、当該重複管理レコード中の物理アドレスが、割り当て(対応付け)られている論理アドレスの数を示す。つまり、重複管理レコード中の参照カウントは、当該重複管理レコード中の物理アドレスを論理的に参照する論理アドレスの数を示す。論理アドレスと物理アドレスとの対応は、アドレステーブル202によって示される。また、重複管理レコード中の参照カウントは、当該重複管理レコード中の物理アドレスで示されるストレージ装置10の記憶領域に格納されたチャンクのデータと同一内容のデータを含むチャンクの数(つまり、重複数または重複カウント)をも示す。
図4に示される重複管理テーブル201において、例えば、物理アドレスADR2を含む重複管理レコードのECC値及び参照カウントは、それぞれECC2及び3である。この重複管理レコード中の参照カウント=3は、物理アドレスADR2(で指定される記憶領域)に格納されたチャンクのデータと同一内容のデータを含むチャンクが合計3つ存在することを示す。
図5は、図2に示されるアドレステーブル202のデータ構造例を示す。アドレステーブル202の各エントリは、アドレスレコードを格納するのに用いられる。アドレスレコードは、論理アドレス、及び当該論理アドレスに割り当て(対応付け)られる物理アドレスを含む。本実施形態において、論理アドレスは、ストレージ装置10の記憶領域(物理記憶領域)が割り当てられる論理ボリューム(論理ディスク)内の記憶領域(論理記憶領域)のアドレス、例えば論理ブロックアドレス(LBA)を示す。
図5に示されるアドレステーブル202は、論理アドレスLBA1乃至LBA6を含むアドレスレコードの群を有する。論理アドレスLBA1乃至LBA6で指定される論理ボリューム内の記憶領域には、チャンクCHK1乃至CHK6が論理的に格納されているものとする。つまりLBA1乃至LBA6は、チャンクCHK1乃至CHK6の論理アドレスである。
図5の例では、論理アドレスLBA1,LBA4及びLBA5には、1つの物理アドレスADR2が共通に割り当てられている。このことは、チャンクCHK1,CHK4及びCHK5のデータは同一であり、ストレージ装置10内では、この同一のデータが、重複排除により、物理アドレスADR2で指定されるストレージ装置10内の記憶領域にまとめて格納されていることを示す。ADR2は、チャンクCHK1,CHK4及びCHK5の物理アドレスである。
図2において、重複排除コントローラ205は、重複管理テーブル201を参照することにより同一のECC値を含む重複管理レコードを探索するための重複チャンク探索処理を実行する。重複排除コントローラ205は、同一のECC値を含む複数の重複管理レコードを探索できた場合、同一のECC値に対応するECC群を含む複数のチャンクを探索できたと判定する。
重複排除コントローラ205は、探索された複数のチャンクのデータを比較することにより、当該探索された複数のチャンクのデータが同一であるかを判定する。この判定を、重複チャンク判定(または重複判定)と呼ぶ。重複排除コントローラ205は、探索された複数のチャンクのデータが同一である場合、当該探索された複数のチャンクのデータがストレージ装置10において重複して存在すると判定する。この場合、重複排除コントローラ205は、この重複を排除するために、探索された複数のチャンクをストレージ装置10において一つにまとめるための重複チャンクマージ処理を実行する。
重複チャンクマージ処理において重複排除コントローラ205は、例えば、第1及び第2のチャンクのデータが同一であるならば、第2のチャンクに対応する重複管理レコード中の参照カウント(第2の参照カウント)を、第1のチャンクに対応する重複管理レコード中の参照カウント(第1の参照カウント)に引き継ぐ。つまり、重複排除コントローラ205は、第1の参照カウントを、第2の参照カウントだけインクリメントし、且つ第2の参照カウントを0に設定する。また、重複排除コントローラ205は、第1のチャンクの第1の物理アドレスが、第1のチャンクの第1の論理アドレスだけでなく、第2のチャンクの第2の論理アドレスにも割り当てられるように、アドレステーブル202(より詳細には、第2の論理アドレスを含むアドレスレコード中の物理アドレス)を更新する、
アクセス部206は、アクセス要求部203からのアクセス要求に応じて、例えば要求されたファイルに、ブロックを単位にアクセスする。このブロック単位のアクセスは、各ブロックを構成する複数のチャンクへのアクセスを含む。アクセス部206は、例えば、チャンクCHKiにアクセスする場合、チャンクCHKiの論理アドレスLBAiに基づいてアドレステーブル202を参照する。そしてアクセス部206は、論理アドレスLBAiに対応付けられた物理アドレスADRj(つまりチャンクCHKiの物理アドレスADRj)を、アクセスされるべき物理記憶領域を示す物理アドレスとして取得して、当該取得された物理アドレスADRjに基づいてストレージ装置10にアクセスする。
次に、本実施形態においてECC取得部204によってチャンク単位に実行されるECC設定処理について、図6を参照して説明する。図6は、ECC設定処理の典型的な手順を示すフローチャートである。本実施形態においてECC設定処理は、スケジューリングされた時刻が到来した場合(例えば定期的)に、或いはユーザ指定のタイミングで実行される。
ECC取得部204は、チャンク単位のECC設定処理のために、アドレステーブル202を先頭エントリから順に参照する。この例では、ECC設定処理の先頭で、ECC取得部204が、アドレステーブル202内のi番目のエントリを参照したものとする(ステップS101)。このi番目のエントリには、論理アドレスLBAiと物理アドレスADRjとを含むアドレスレコードが格納されているものとする。この場合、ステップS101においてECC取得部204は、参照されたi番目のエントリから論理アドレスLBAiに対応付けられた物理アドレスADRjを取得する。論理アドレスLBAiで指定される論理ボリューム内の記憶領域には、チャンクCHKiのデータが論理(仮想)的に格納されており、物理アドレスADRjで指定されるストレージ装置10(ストレージ11)内の記憶領域には、チャンクCHKiのデータが物理的(実際)に格納されているものとする。
次にECC取得部204は、取得された物理アドレスADRjを含む重複管理レコード(ターゲットの重複管理レコード)を、重複管理テーブル201から探索する(ステップS102)。そしてECC取得部204は、ターゲットの重複管理レコードを探索できたかを判定する(ステップS103)。
もし、ターゲットの重複管理レコードを探索できなかったならば(ステップS103のNo)、ECC取得部204は、チャンクCHKiに関するECC設定処理を終了する。この場合、ECC取得部204は、次のチャンクに関するECC設定処理を開始する。
これに対し、ターゲットの重複管理レコードを探索できたならば(ステップS103のYes)、ECC取得部204は、探索された重複管理レコード中のECC値を参照する(ステップS104)。そしてECC取得部204は、参照されたECC値が無効であるかを判定する(ステップS105)。本実施形態では、この判定は、参照されたECC値がクリアされているかに基づいて実行される。
もし、参照されたECC値が無効でないならば(ステップS105のNo)、つまり、参照されたECC値が有効であるならば、ECC取得部204は、チャンクCHKiに関するECC値は既に取得されて設定されているとして、ECC設定処理を終了する。
これに対して、参照されたECC値が無効であるならば(ステップS105のYes)、ECC取得部204は、チャンクCHKiに関するECC値を取得するためのECC取得処理(ステップS106)を実行する。ECC取得部204は、このECC取得処理(ステップS106)において、後述のように、チャンクCHKiを構成する全セクタ中のECC(例えば、n個のECC)を取得する。
次にECC取得部204は、取得されたn個のECCを例えば結合し(ステップS107)、結合されたECC(つまり、ECC列)をECCjとして設定する(ステップS108)。そしてECC取得部204は、探索された重複管理レコード中のECC値(無効なECC値)を、ECCj(有効なECC値)に更新する(ステップS109)。するとECC取得部204は、チャンクCHKiに関するECC設定処理を終了する。
次に、ECC取得処理(ステップS106)について説明する。ECC取得処理は、チャンクCHKiを構成する全セクタ中のECCを取得するための処理手順を含む。あるセクタ中のECCを取得するには、以下の2つの方法のいずれかが適用可能である。1つは、セクタ中のデータと付加情報をまとめてリードし、しかる後に付加情報中のECCのみを取り出す方法(第1の方法)である。もう1つは、ストレージ装置10のストレージコントローラ12が有する、セクタ中のECCのみをリードする機能を利用する方法(第2の方法)である。このECCのみのリードをストレージコントローラ12に要求するためのコマンドは、ECCリードコマンドと呼ばれる。
ストレージ装置10とホスト20との間のインタフェースに例えばSCSIが適用される場合、当該インタフェースでは、一般に、セクタ中のデータをリードするためのコマンド(通常のリードコマンド)に加えて、セクタ中のデータと付加情報をまとめてリードするためのリードロングと呼ばれるコマンド(リードロングコマンド)が用意されている。第1の方法は、このリードロングコマンドを利用する。
以下、図6に示されるECC設定処理において実行されるECC取得処理(ステップS106)の詳細について図7を参照して説明する。図7は、ECC取得処理の典型的な手順を示すフローチャートである。本実施形態におけるECC取得処理の特徴は、第1の方法を用いて、チャンクCHKiを構成する全セクタ中のECCを取得することにある。
まずECC取得部204は、図6のステップS101で取得された物理アドレスADRjを、ECC取得処理で用いられるリードアドレスADRrとして設定する(ステップS201)。次にECC取得部204は、リードアドレスADRrを含むリードロングコマンドを、ストレージ装置10のストレージコントローラ12に発行する(ステップS202)。
ECC取得処理の1回目のステップS202において、ECC取得部204は、リードアドレスADRrを含むリードロングコマンドを用いて、当該リードアドレスADRrで指定されるストレージ装置10のストレージ11内の物理位置から、チャンクCHKiに対応するn個のセクタ群の先頭セクタのデータ及び付加情報をまとめてリードする。そしてECC取得部204は、リードされたデータ及び付加情報をメモリ22に格納する(ステップS203)。
次にECC取得部204は、チャンクCHKi内の全セクタのリードが完了したかを判定する(ステップS204)。もし、ステップS204の判定がNoであるならば、ECC取得部204は、リードアドレスADRrがチャンクCHKiの次のセクタの物理位置を指し示すように、当該リードアドレスADRrを更新(例えばインクリメント)する(ステップS205)。するとECC取得部204は、ステップS202に戻り、インクリメントされたリードアドレスADRrを含むリードロングコマンドを用いて、チャンクCHKiの次のセクタのデータ及び付加情報をまとめてリードする。そしてECC取得部204は、リードされたデータ及び付加情報をメモリ22に格納する(ステップS203)。
以下同様に、ECC取得部204は、S205及びS202乃至S204を繰り返す。これにより、チャンクCHKi内の全セクタのリードが完了したものとする(ステップS204のYes)。このときメモリ22には、チャンクCHKiの全セクタ中のデータ及び付加情報が格納されている。そこでECC取得部204は、チャンクCHKiの全セクタ中の付加情報からECC群を取得する(ステップS206)。これによりECC取得部204は、チャンクCHKiに関するECC取得処理(ステップS106)を終了する。
<ECC取得処理の変形例>
次に、本実施形態の変形例におけるECC取得処理について、図8を参照して説明する。図8は、本実施形態の変形例におけるECC取得処理の典型的な手順を示すフローチャートである。本変形例におけるECC取得処理の特徴は、第2の方法を用いて、チャンクCHKiを構成する全セクタ中のECCを取得することにある。
まずECC取得部204は、図6のステップS101で取得された物理アドレスADRjを、ECC取得処理で用いられるリードアドレスADRrとして設定する(ステップS211)。次にECC取得部204は、リードアドレスADRrを含むECCリードコマンドを、ストレージ装置10のストレージコントローラ12に発行する(ステップS212)。
ECC取得処理の1回目のステップS212において、ECC取得部204は、リードアドレスADRrを含むECCリードコマンドを用いて、当該リードアドレスADRrで指定されるストレージ装置10のストレージ11内の物理位置に格納されているチャンクCHKiの先頭セクタから、ECCのみをリードする。そしてECC取得部204は、リードされたECCをメモリ22に格納する(ステップS213)。
次にECC取得部204は、チャンクCHKi内の全セクタからのECCのリードが完了したかを判定する(ステップS214)。もし、ステップS214の判定がNoであるならば、ECC取得部204は、リードアドレスADRrがチャンクCHKiの次のセクタの物理位置を指し示すように、当該リードアドレスADRrを更新(例えばインクリメント)する(ステップS215)。するとECC取得部204は、ステップS212に戻り、インクリメントされたリードアドレスADRrを含むECCリードコマンドを用いて、チャンクCHKiの次のセクタ中のECCをリードする。そしてECC取得部204は、リードされたECCをメモリ22に格納する(ステップS213)。
以下同様に、ECC取得部204は、S215及びS212乃至S214を繰り返す。これにより、チャンクCHKi内の全セクタからのECCのリードが完了したものとする(ステップS214のYes)。このときメモリ22には、チャンクCHKiの全セクタからリードされたECC群が格納されている。そこでECC取得部204は、メモリ22からこのECC群を取得する(ステップS216)。これによりECC取得部204は、チャンクCHKiに関するECC取得処理(ステップS106)を終了する。
なお、チャンクを単位に、チャンクを構成する全セクタからデータと付加情報をまとめてリードするためのインタフェースを、ストレージコントローラ12に用意しても構わない。同様に、チャンクを単位に、チャンクを構成する全セクタからECCのみを取り出すためのインタフェースを、ストレージコントローラ12に用意しても構わない。
ところで、ストレージ11が例えばRAID(ディスクアレイ)により構成されている場合、ECC取得部204は、リードロングコマンドを用いてECCを含む付加情報を当該ストレージ11から直接リードすることはできない。このような場合に第1の方法(つまり、セクタ中のデータと付加情報をまとめてリードする方法)を適用するためには、ストレージコントローラ12(つまり、RAIDコントローラとして機能するストレージコントローラ12)に、リードロングコマンドと同等のインタフェースを用意すれば良い。一方、第2の方法(つまり、セクタ中のECCのみをリードする方法)を適用するためには、ストレージコントローラ12に、ストレージ11からリードされたデータからECCのみを取り出す機能を用意すれば良い。
上述のECC設定処理においてECC取得部204は、チャンクCHKiの全セクタから取得したECC群を結合し(ステップS107)、当該結合されたECC群を、チャンクCHKiの物理アドレスADRjを含む重複管理レコード中のECC値として用いる(ステップS108及びS109)。しかし、ECC取得部204が、SHA1のようなハッシュ関数を用いて、結合されたECC群のハッシュ値を計算し、このハッシュ値をECC値として用いても構わない。
ハッシュ値をECC値として用いる場合、たとえ可変長のチャンクサイズが適用されたとしても、ECC値のサイズは一定となる。このため重複チャンクの判定(探索)に、チャンクサイズに無関係に同一の方法が適用可能となる。また、セクタサイズに対してECCのサイズが比較的大きい場合も、ECC値のサイズを小さくできるため、重複管理テーブル201の格納に必要な記憶容量を小さくできる。
次に、本実施形態において重複排除コントローラ205によってチャンク単位に実行される重複チャンク探索処理について、図9を参照して説明する。図9は、重複チャンク探索処理の典型的な手順を示すフローチャートである。重複チャンク探索処理は、例えば、ECC設定処理とは非同期に、ホスト20のCPU24の負荷が一定レベルより低い場合、或いはスケジューリングされた時刻が到来した場合に実行されるものとする。しかし重複チャンク探索処理が、全てのチャンクについてECC設定処理が実行された場合に実行されても構わない。
重複排除コントローラ205は、チャンク単位に実行される重複チャンク探索処理のために、アドレステーブル202を先頭エントリから順に参照する。この例では、重複チャンク探索処理の先頭で、重複排除コントローラ205が、アドレステーブル202内のi番目のエントリを参照したものとする(ステップS301)。このi番目のエントリには、チャンクCHKiの論理アドレスLBAiを含むアドレスレコードが格納されている。したがって、ステップS301は、重複排除コントローラ205がチャンクCHKiを選択することと等価である。つまり、ステップS301において重複排除コントローラ205は、重複判定対象としてチャンクCHKiを選択する。
次に重複排除コントローラ205は、アドレステーブル202内のi番目のエントリから、論理アドレスLBAiと対応付けられている物理アドレスADRj、つまり選択されたチャンクCHKiの物理アドレスADRjを取得する(ステップS302)。そして重複排除コントローラ205は、物理アドレスADRjに基づいて、重複管理テーブル201から物理アドレスADRjに対応付けられたECC値ECCjを取得する(ステップS303)。即ち重複排除コントローラ205は、重複管理テーブル201に格納されている、物理アドレスADRjを含む重複管理レコードから、ECC値ECCjを取得する。
次に重複排除コントローラ205は、ECCjと同じECC値を持つ他の重複管理レコード(ターゲットの重複管理レコード)を、重複管理テーブル201から探索する(ステップS304)。そしてECC取得部204は、ターゲットの重複管理レコードを探索できたかを判定する(ステップS305)。
もし、ターゲットの重複管理レコードを探索できなかったならば(ステップS305のNo)、重複排除コントローラ205は、チャンクCHKiのデータと同一内容のデータを持つ他のチャンクは存在しないものと判断して、チャンクCHKiに関する重複チャンク探索処理を終了する。この場合、重複排除コントローラ205は、次のチャンクに関する重複チャンク探索処理を開始する。
これに対し、ターゲットの重複管理レコードを探索できたならば(ステップS305のYes)、重複排除コントローラ205は、探索された重複管理レコードに対応するチャンク(以下、チャンクCHKxと称する)は、チャンクCHKiのデータと同一内容のデータを持つ可能性があると判断する。そこで重複排除コントローラ205は、データ重複の有無を確認するために、ステップS306乃至S309を次のように実行する。
まず重複排除コントローラ205は、探索された重複管理レコード中の物理アドレスADRyを取得する(ステップS306)。そして重複排除コントローラ205は、物理アドレスADRj及びADRyに基づいて、チャンクCHKi及びCHKxのデータを、ストレージ装置10からリードする(ステップS307)。即ち重複排除コントローラ205は、物理アドレスADRjを含むリードコマンドをストレージコントローラ12に発行することにより、当該物理アドレスADRjで指定されるストレージ11の記憶領域に格納されているチャンクCHKiのデータをリードする。同様に重複排除コントローラ205は、物理アドレスADRyを含むリードコマンドをストレージコントローラ12に発行することにより、当該物理アドレスADRyで指定されるストレージ11の記憶領域に格納されているチャンクCHKxのデータをリードする。
次に重複排除コントローラ205は、リードされたチャンクCHKiのデータとリードされたチャンクCHKxのデータとを比較して(ステップS308)、当該両データが一致するかを判定する(ステップS309)。もし、両データが一致しないならば(ステップS309のNo)、重複排除コントローラ205は、チャンクCHKx及びCHKi間でデータが重複していないと判断する。この場合、重複排除コントローラ205はステップS304に戻って、ECCjと同じECC値を持つ新たな重複管理レコードを、重複管理テーブル201から探索する。
これに対し、両データが一致するならば(ステップS309のYes)、チャンクCHKx及びCHKi間でデータが重複していると判断する。この場合、重複排除コントローラ205は、例えばチャンクCHKxを、チャンクCHKiにマージするための重複チャンクマージ処理(ステップS310)を実行する。そして重複排除コントローラ205は、ステップS304に戻って、ECCjと同じECC値を持つ新たな重複管理レコードを、重複管理テーブル201から探索する。
重複排除コントローラ205は、このステップS304から始まる処理を、ECCjと同じECC値を持つ新たな重複管理レコードが探索できなくなるまで(ステップS305のNo)、繰り返す。以下の説明では、チャンクCHKx及びチャンクCHKiを、それぞれ、マージ元(またはマージ元チャンク)及びマージ先(またはマージ先チャンク)と称する。なお、マージ元とマージ先は逆であっても構わない。
次に、図9に示される重複チャンク探索処理において実行される重複チャンクマージ処理(ステップS310)の詳細について図10を参照して説明する。図10は、本実施形態における重複チャンクマージ処理の典型的な手順を示すフローチャートである。
まず重複排除コントローラ205は、アドレステーブル202において、マージ元の物理アドレスADRyをマージ先の物理アドレスADRjに変更する(ステップS401)。次に重複排除コントローラ205は、重複管理テーブル201に格納されている、マージ先の物理アドレスADRjを含む重複管理レコード中の参照カウントを、マージ元の物理アドレスADRyを含む重複管理レコード中の参照カウントの値だけインクリメントする(ステップS402)。つまり重複排除コントローラ205は、マージ元の物理アドレスADRyを含む重複管理レコード中の参照カウントの値を、マージ先の物理アドレスADRjを含む重複管理レコード中の参照カウントに引き継がせる。
次に重複排除コントローラ205は、重複管理テーブル201に格納されている、マージ元の物理アドレスADRyを含む重複管理レコード中の参照カウントを0に設定する(ステップS403)。また、ステップS403において重複排除コントローラ205は、マージ元の物理アドレスADRyを含む重複管理レコード中のECC値を、例えばクリアすることにより無効化する。
次に重複排除コントローラ205は、マージ元の物理アドレスADRyで指定される、ストレージ装置10内のマージ元のチャンクCHKxのデータ、つまりマージ元チャンクCHKxを構成するn個のセクタのデータを削除する(ステップS404)。これにより、チャンクCHKxは、チャンクCHKiにマージされる。
なお本実施形態では、値が0の参照カウントを含む重複管理レコード中の物理アドレスで指定される記憶領域は、空き記憶領域として管理される。したがって、マージ元の物理アドレスADRyで指定される記憶領域も空き記憶領域として管理される。このため重複排除コントローラ205は、必ずしもマージ元のチャンクCHKxのデータを削除する必要はない。
次に、上述の重複チャンクマージ処理を含む重複チャンク探索処理の具体例について、図11及び図12を参照して説明する。図11及び図12は重複チャンク探索処理に起因する、それぞれ重複管理テーブル201及びアドレステーブル202の状態の変化の例を示す。
まず、図11及び図12において、矢印A1及びA2の基端側には、重複チャンク探索処理が開始される前の重複管理テーブル201及びアドレステーブル202の状態が示されている。この重複管理テーブル201及びアドレステーブル202の状態は、図4及び図5に示されるそれらの状態と同一である。
この状態では、重複管理テーブル201において、物理アドレスADR1を含む重複管理レコード中のECC値ECC1は、物理アドレスADR3を含む重複管理レコード中のECC値ECC3に等しいものとする。また、アドレステーブル202において、物理アドレスADR1は論理アドレスLBA3と対応付けられており、物理アドレスADR3は論理アドレスLBA2及びLBA6と対応付けられている。つまり、物理アドレスADR3は、2つの論理アドレスLBA2及びLBA6(チャンクCHK2及びCHK6)から参照されており、したがって物理アドレスADR3を含む重複管理レコード中の参照カウントは2である。
以上のような重複管理テーブル201及びアドレステーブル202の状態で、アドレステーブル202が1回目の重複チャンク探索処理を開始して、チャンクCHK1を選択したものとする(ステップS301)。チャンクCHK1の論理アドレスLBA1は、アドレステーブル202によって物理アドレスADR2に対応付けられている。
重複排除コントローラ205は、重複管理テーブル201から、チャンクCHK1の物理アドレスADR2に対応付けられたECC値ECC2を取得する(ステップS302及びS303)。そして重複排除コントローラ205は、ECC2と同じECC値を持つ他の重複管理レコードを、重複管理テーブル201から探索する(ステップS304)。
本実施形態では、ECC2と同じECC値を持つ他の重複管理レコードは存在しない(ステップS305のNo)。この場合、重複排除コントローラ205は、2回目の重複チャンク探索処理を開始して、チャンクCHK2を選択する(ステップS301)。チャンクCHK2の論理アドレスLBA2は、アドレステーブル202によって物理アドレスADR3に対応付けられている。
重複排除コントローラ205は、重複管理テーブル201から、チャンクCHK2の物理アドレスADR3に対応付けられたECC値ECC3を取得する(ステップS302及びS303)。そして重複排除コントローラ205は、ECC3と同じECC値を持つ他の重複管理レコードを、重複管理テーブル201から探索する(ステップS304)。
本実施形態では、ECC3と同じECC値はECC1であり、したがってECC3と同じECC値を持つ他の重複管理レコードは存在する(ステップS305のYes)。この重複管理レコード(つまり、ECC1を含む重複管理レコード)は、物理アドレスとしてADR1を含む。ADR1は、アドレステーブル202によって論理アドレスLBA3に対応付けられており、チャンクCHK3の物理アドレスを示す。この場合、重複排除コントローラ205は、チャンクCHK2の物理アドレスADR3及びチャンクCHK3の物理アドレスADR1に基づいて、チャンクCHK2及びCHK3のデータをストレージ装置10からリードする(ステップS306及びS307)。そして重複排除コントローラ205は、チャンクCHK2及びCHK3のデータを比較する(ステップS308)。
本実施形態では、チャンクCHK2及びCHK3のデータは等しいものとする(ステップS309のYes)。この場合、重複排除コントローラ205は、チャンクCHK3をチャンクCHK2にマージするための重複チャンクマージ処理(ステップS310)を実行する。即ち重複排除コントローラ205は、アドレステーブル202においてチャンクCHK3の論理アドレスLBA3に対応付けられた物理アドレスADR1(つまりチャンクCHK3の物理アドレスADR1)を、図12において矢印A2で示されるように、チャンクCHK2の物理アドレスADR3に変更する(ステップS401)。
また重複排除コントローラ205は、重複管理テーブル201において物理アドレスADR3に対応付けられた参照カウント(=2)を、重複管理テーブル201において物理アドレスADR1に対応付けられた参照カウント(=1)だけインクリメントする(ステップS402)。これにより物理アドレスADR3に対応付けられた参照カウントは、図11において矢印A1で示されるように、2から3にインクリメントされる。更に重複排除コントローラ205は、図11において矢印A1で示されるように、重複管理テーブル201において物理アドレスADR1に対応付けられた参照カウントを0に設定し、且つ物理アドレスADR1に対応付けられたECC値を無効化(クリア)する(ステップS402)。
上述のように、本実施形態において重複排除コントローラ205は、重複管理レコード中のECC値、つまりストレージ装置10に既に格納されている各チャンクを構成する全セクタ中のECCの列を、重複チャンクの探索(判定)に利用する。このように本実施形態においては、セクタのデータのエラー検出及びエラー訂正のために当該セクタに付されるECCを、データの重複を検出するための指標として利用する。これに対して、従来技術(第1の重複排除技術)では、各チャンクのデータをストレージ装置にライトする際に、当該データのハッシュ値が計算される。そして、このハッシュ値が重複管理レコード中に設定されて、重複チャンクの探索に利用される。また、別の従来技術(第2の重複排除技術)では、ストレージ装置に格納されている全データがリードされて比較される。
本実施形態においては、ECCの値をハッシュ値の代替として用い、ECCの値が等しい場合にのみデータを比較することで、チャンクのデータの重複を検出する。したがって本実施形態によれば、重複チャンクの探索に利用される情報を生成するための計算(ハッシュ計算)、或いは全データの比較を不要にして、チャンクのデータの重複検出に要するコストを低減することができる。
次に、本実施形態においてアクセス部206によって実行されるライト処理について、チャンクCHKsに新たなデータをライトする場合を例に、図13を参照して説明する。図13は、ライト処理の典型的な手順を示すフローチャートである。本実施形態においてライト処理は、アクセス要求部203からのライトアクセス要求に応じて実行される。
まずアクセス部206が、アクセス要求部203からのライトアクセス要求に応じて、チャンクCHKsへのデータライトを開始するものとする。この場合、アクセス部206は、チャンクCHKsの論理アドレスLBAsに対応付けられた有効な物理アドレスADRtを含むアドレスレコード(ターゲットのアドレスレコード)を、アドレステーブル202から探索する(ステップS501)。そしてアクセス部206は、ターゲットのアドレスレコードを探索できたかを判定する(ステップS502)。
もし、ターゲットのアドレスレコードを探索できたならば(ステップS502のYes)、アクセス部206は、探索されたアドレスレコードから、物理アドレスADRtを取得する(ステップS503)。そしてアクセス部206は、取得された物理アドレスADRtに基づいて重複管理テーブル201を探索することにより、当該取得された物理アドレスADRtを含む重複管理レコード中の参照カウントを取得する(ステップS504)。次にアクセス部206は、取得された参照カウントが1であるかを判定する(ステップS505)。
もし、取得された参照カウントが1でないならば(ステップS505のNo)、アクセス部206は、現在のチャンクCHKsのデータは他の1つ以上のチャンクのデータと重複しており、したがって新たなデータを、現在のチャンクCHKsのデータ(より詳細には、重複データ)に上書きすることはできないと判断する。つまりアクセス部206は、新たなデータを、現在のチャンクCHKsのデータがライトされている記憶領域(より詳細には、物理アドレスADRtによって指定される記憶領域)とは別の記憶領域にライトする必要があると判断する。明らかなように、今回のライト処理によりチャンクCHKsにライトされる新たなデータは、上述の他の1つ以上のチャンクのデータと重複しないものである。そこでアクセス部206は、取得された参照カウント(より詳細には、取得された物理アドレスADRtを含む重複管理レコード中の参照カウント)を1デクリメントして(ステップS506)、ステップS507に進む。一方、ターゲットのアドレスレコードを探索できなかったならば(ステップS502のNo)、アクセス部206は、ステップS503乃至S506をスキップしてステップS507に進む。
ステップS507においてアクセス部206は、新たなデータ(つまり、アクセス要求部203によって要求されたライトデータ)がチャンクCHKsのデータとしてライトされるべき、ストレージ装置10(ストレージ11)内の空き記憶領域(つまり、空きチャンク領域)を確保する(ステップS507)。アクセス部206は、この空きチャンク領域を次のように確保する。まずアクセス部206は、重複管理テーブル201から、値が0の参照カウントを含む重複管理レコードを探索する。そしてアクセス部206は、探索された重複管理レコード中の物理アドレスADRuを、ライト先の空きチャンク領域の物理アドレスとして取得する。これによりアクセス部206は、ライト先の空きチャンク領域を確保する。アクセス部206は、ステップS507を実行すると、ステップS508に進む。
一方、取得された参照カウントが1であるならば(ステップS505のYes)、アクセス部206は、現在のチャンクCHKsのデータは他の1つ以上のチャンクのデータと重複しておらず、したがって新たなデータを、現在のチャンクCHKsのデータに上書きすることが可能であると判断する。この場合、新たなデータのライト先は、現在のチャンクCHKsのデータがライトされている記憶領域(チャンク領域)であり、物理アドレスADRtによって指定される。ステップS505の判定がYesの場合、アクセス部206は、ステップS506及びS507をスキップしてステップS508に進む。
ステップS508においてアクセス部206は、ライト先のチャンク領域の物理アドレスを含む重複管理レコード中のECC値をクリアし、且つ当該重複管理レコード中の参照カウントを1に設定する。ここで、ライト先のチャンク領域は、ステップS507を介してステップS508が実行される場合、当該ステップS507で確保された空きチャンク領域であり、当該ライト先のチャンク領域の物理アドレスはADRuである。これに対し、ステップS507をスキップしてステップS508が実行される場合、ライト先のチャンク領域は、現在チャンクCHKsのデータ(旧データ)が格納されているチャンク領域であり、当該ライト先のチャンク領域の物理アドレスはADRtである。
アクセス部206は、ステップS508を実行すると、アクセス要求部203によって要求されたライトデータを、チャンクCHKsの新たなデータとして、ストレージ装置10(ストレージ11)におけるライト先のチャンク領域にストレージコントローラ12によりライトさせる(ステップS509)。これにより、チャンクCHKsの新データは、n個のセクタに分散してライトされる。n個のセクタの各々にはECCを含む付加情報が付されている。ECCは、n個のセクタに分散してライトされるデータに基づいてストレージコントローラ12によって生成される。
なお、図2に示される、ECC取得部204、重複排除コントローラ205及びアクセス部206がストレージコントローラ12に設けられても構わない。この場合、重複管理テーブル201及びアドレステーブル202は、ストレージコントローラ12が有するメモリに格納されれば良い。
前記実施形態では、ストレージ装置10は、単一のホスト20と接続されている。しかし、ストレージ装置10が、ホスト20を含む複数のホストと、ホストインタフェースバス30(またはネットワーク)を介して接続されていても良い。この場合、ホスト20以外のホストからのストレージ装置10へのアクセスに関しても、例えば、ホスト20のみが、重複排除のための前記実施形態と同様の処理を行えば良い。また、ホスト20を含む複数のホストが、それぞれ、図2に示される構成を有し、当該複数のホストが重複排除のための前記実施形態と同様の処理を行っても構わない。この場合、複数のホストがそれぞれ重複管理テーブル201及びアドレステーブル202を有し、当該重複管理テーブル201及びアドレステーブル202を複数のホスト間で同期化しても良い。
以上説明した少なくとも1つの実施形態によれば、データの重複の検出に要するコストを低減することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…ストレージ装置、11…ストレージ、12…ストレージコントローラ、20…ホスト(ホスト計算機)、22…メモリ、24…CPU、201…重複管理テーブル、202…アドレステーブル、204…ECC取得部、205…重複排除コントローラ(重複検出部)、206…アクセス部。

Claims (10)

  1. データ及び当該データに基づいて生成される誤り訂正コード(ECC)がセクタを単位に格納されるストレージ装置と、
    前記ストレージ装置を利用するホスト計算機とを具備し、
    前記ホスト計算機は、
    1つ以上のセクタから構成されるチャンクを単位に、各々が1つ以上のECCから構成されるECC値を取得するECC取得部と、
    前記ECC値を前記チャンクを単位に比較することにより、比較されたECC値に対応するチャンクのデータの重複の可能性を判定し、当該判定の結果に基づいて前記対応するチャンクのデータを比較することにより、当該対応するチャンクのデータの重複を検出する重複検出部とを具備する
    ストレージシステム。
  2. 前記ECC取得部は、前記チャンク毎に、前記ストレージ装置から1つ以上のECCを取得することによりECC値を取得して、前記取得されたECC値を、対応するチャンクの物理アドレスと対応付けて管理テーブルに格納し、
    前記重複検出部は、前記管理テーブルに格納されたECC値を前記チャンク単位の比較に用いる
    請求項1記載のストレージシステム。
  3. 前記重複検出部は、前記対応するチャンクのデータの重複の可能性を判定した場合、当該対応するチャンクのデータを比較するために、当該対応するチャンクのデータを前記ストレージ装置からリードする請求項1及び請求項2のいずれか一項に記載のストレージシステム。
  4. 前記ECC取得部は、ECC値が取得されるべきチャンクが複数のセクタから構成される場合、前記複数のセクタから取得される複数のECCを結合し、当該結合されたECCを前記ECC値として取得する請求項1乃至請求項3のいずれか一項に記載のストレージシステム。
  5. 前記ECC取得部は、前記チャンクを単位に取得される前記ECC値の各々として、対応するチャンクから取得される1つ以上のECC全体のハッシュ値を用いる請求項1乃至請求項3のいずれか一項に記載のストレージシステム。
  6. 前記重複検出部は、前記重複の検出に応じて、前記重複が検出されたチャンクのデータの前記ストレージ装置における格納先を一箇所にまとめることにより、前記ストレージ装置におけるデータの重複を排除する請求項1乃至請求項3のいずれか一項に記載のストレージシステム。
  7. 前記重複検出部は、前記対応するチャンクのデータの重複を検出し、且つ前記対応するチャンクが第1及び第2のチャンクである場合、チャンクを単位に論理アドレスと物理アドレスとが対応付けて格納されるアドレステーブルにおいて、前記第2のチャンクの第2の論理アドレスに対応付けられた第2の物理アドレスを、前記第1のチャンクの第1の論理アドレスに対応付けられた第1の物理アドレスに変更する
    請求項6記載のストレージシステム。
  8. データ及び当該データに基づいて生成される誤り訂正コード(ECC)がセクタを単位に格納されるストレージ装置を利用するホスト計算機において、
    1つ以上のセクタから構成されるチャンクを単位に、各々が1つ以上のECCから構成されるECC値を取得するECC取得部と、
    前記ECC値を前記チャンクを単位に比較することにより、比較されたECC値に対応するチャンクのデータの重複の可能性を判定し、当該判定の結果に基づいて前記対応するチャンクのデータを比較することにより、当該対応するチャンクのデータの重複を検出する重複検出部と
    を具備するホスト計算機。
  9. データ及び当該データに基づいて生成される誤り訂正コード(ECC)がセクタを単位に格納されるストレージへのホスト計算機からのアクセスを制御するストレージコントローラにおいて、
    1つ以上のセクタから構成されるチャンクを単位に、各々が1つ以上のECCから構成されるECC値を取得するECC取得部と、
    前記ECC値を前記チャンクを単位に比較することにより、比較されたECC値に対応するチャンクのデータの重複の可能性を判定し、当該判定の結果に基づいて前記対応するチャンクのデータを比較することにより、当該対応するチャンクのデータの重複を検出する重複検出部と
    を具備するストレージコントローラ。
  10. データ及び当該データに基づいて生成される誤り訂正コード(ECC)がセクタを単位に格納されるストレージ装置を利用するホスト計算機におけるデータ重複検出方法であって、
    1つ以上のセクタから構成されるチャンクを単位に、各々が1つ以上のECCから構成されるECC値を取得し、
    前記ECC値を前記チャンクを単位に比較することにより、比較されたECC値に対応するチャンクのデータの重複の可能性を判定し、
    前記判定の結果に基づいて前記対応するチャンクのデータを比較することにより、当該対応するチャンクのデータの重複を検出する
    データ重複検出方法。
JP2015165787A 2015-08-25 2015-08-25 ストレージシステム及びデータ重複検出方法 Active JP6419662B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015165787A JP6419662B2 (ja) 2015-08-25 2015-08-25 ストレージシステム及びデータ重複検出方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015165787A JP6419662B2 (ja) 2015-08-25 2015-08-25 ストレージシステム及びデータ重複検出方法

Publications (2)

Publication Number Publication Date
JP2017045177A true JP2017045177A (ja) 2017-03-02
JP6419662B2 JP6419662B2 (ja) 2018-11-07

Family

ID=58210217

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015165787A Active JP6419662B2 (ja) 2015-08-25 2015-08-25 ストレージシステム及びデータ重複検出方法

Country Status (1)

Country Link
JP (1) JP6419662B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021022324A (ja) * 2019-07-30 2021-02-18 富士通株式会社 記憶制御装置および記憶制御プログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7469803B2 (ja) 2020-10-20 2024-04-17 株式会社ブイ・テクノロジー 集束エネルギービーム装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05324579A (ja) * 1992-05-25 1993-12-07 Hitachi Ltd 分散ファイルシステム及び記憶装置
JP2002358168A (ja) * 2001-04-18 2002-12-13 Internatl Business Mach Corp <Ibm> 記憶装置の設定方法、システム及び製品
JP2009524882A (ja) * 2006-01-26 2009-07-02 ネットアップ,インコーポレイテッド 内容参照ストレージアレイ要素
JP2010244104A (ja) * 2009-04-01 2010-10-28 Nec Corp ディスクアレイ装置、ディスクアレイ装置の管理方法及びプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05324579A (ja) * 1992-05-25 1993-12-07 Hitachi Ltd 分散ファイルシステム及び記憶装置
JP2002358168A (ja) * 2001-04-18 2002-12-13 Internatl Business Mach Corp <Ibm> 記憶装置の設定方法、システム及び製品
JP2009524882A (ja) * 2006-01-26 2009-07-02 ネットアップ,インコーポレイテッド 内容参照ストレージアレイ要素
JP2010244104A (ja) * 2009-04-01 2010-10-28 Nec Corp ディスクアレイ装置、ディスクアレイ装置の管理方法及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021022324A (ja) * 2019-07-30 2021-02-18 富士通株式会社 記憶制御装置および記憶制御プログラム

Also Published As

Publication number Publication date
JP6419662B2 (ja) 2018-11-07

Similar Documents

Publication Publication Date Title
US10936503B2 (en) Device access point mobility in a scale out storage system
US10248623B1 (en) Data deduplication techniques
JP6212137B2 (ja) ストレージ装置及びストレージ装置の制御方法
US10055420B1 (en) Method to optimize random IOS of a storage device for multiple versions of backups using incremental metadata
US7716183B2 (en) Snapshot preserved data cloning
US9063877B2 (en) Storage system, storage controller, and method for managing mapping between local address and physical address
US9134917B2 (en) Hybrid media storage system architecture
CN108604165B (zh) 存储装置
US10956071B2 (en) Container key value store for data storage devices
US9727245B2 (en) Method and apparatus for de-duplication for solid state disks (SSDs)
JP6429963B2 (ja) ストレージ装置及びストレージ装置の制御方法
US8538933B1 (en) Deduplicating range of data blocks
JP2009116873A (ja) ソリッドステートメモリ(ssm)、ssmを有するコンピュータシステム及びssm駆動方法
US20210034578A1 (en) Inline deduplication using neighboring segment loading
US10592150B2 (en) Storage apparatus
US9996426B1 (en) Sparse segment trees for high metadata churn workloads
US20210034584A1 (en) Inline deduplication using stream detection
US20180307440A1 (en) Storage control apparatus and storage control method
JP2019028954A (ja) ストレージ制御装置、プログラム、及び重複排除方法
US10146616B1 (en) Cache based recovery of corrupted or missing data
JP6419662B2 (ja) ストレージシステム及びデータ重複検出方法
WO2016038714A1 (ja) ファイルシステム、データ重複排除方法、及びファイルシステムのためのプログラム
US20210034467A1 (en) Techniques for duplicating inode state to prevent loss of inode metadata
US20180307615A1 (en) Storage control apparatus and storage control method
US10853257B1 (en) Zero detection within sub-track compression domains

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170927

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180828

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181010

R150 Certificate of patent or registration of utility model

Ref document number: 6419662

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150