JP6419662B2 - Storage system and data duplication detection method - Google Patents
Storage system and data duplication detection method Download PDFInfo
- Publication number
- JP6419662B2 JP6419662B2 JP2015165787A JP2015165787A JP6419662B2 JP 6419662 B2 JP6419662 B2 JP 6419662B2 JP 2015165787 A JP2015165787 A JP 2015165787A JP 2015165787 A JP2015165787 A JP 2015165787A JP 6419662 B2 JP6419662 B2 JP 6419662B2
- Authority
- JP
- Japan
- Prior art keywords
- ecc
- chunk
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明の実施形態は、ストレージシステム及びデータ重複検出方法に関する。 Embodiments of the present invention relates to a storage system及 beauty data duplication detection method.
近年、ストレージ装置に格納されるべきデータの量は増大の一途をたどっている。このため、ストレージ装置の限られた記憶容量を有効に利用する技術が要求されている。このような技術の1つとして、重複排除技術が注目されている。重複排除技術によれば、同一内容のデータが重複してストレージ装置に格納されるのを防止する。このデータの重複は、例えば、チャンクと呼ばれるデータの塊を単位に判定される。 In recent years, the amount of data to be stored in a storage device is constantly increasing. For this reason, there is a demand for a technology that effectively uses the limited storage capacity of the storage device. As one of such technologies, deduplication technology has attracted attention. According to the de-duplication technology, data having the same content is prevented from being duplicated and stored in the storage apparatus. This duplication of data is determined in units of data chunks called chunks, for example.
重複排除技術は、一般に、重複排除処理を実行する時期の違いにより2つに大別される。第1の重複排除技術では、ストレージ装置へのライトアクセスに応じて、重複排除処理が実行される。これに対して第2の重複排除技術では、ストレージ装置へのライトアクセスとは非同期に、重複排除処理が実行される。 In general, the deduplication technique is roughly classified into two types according to the difference in timing of executing the deduplication processing. In the first deduplication technique, deduplication processing is executed in response to write access to the storage apparatus. In contrast, in the second deduplication technique, deduplication processing is executed asynchronously with write access to the storage apparatus.
第1の重複排除技術では、例えば、ストレージコントローラ(またはストレージ装置を利用するホスト計算機)は、ストレージ装置へのライトアクセスに応じて、ライトデータと同一内容のデータが、ストレージ装置に格納されているかを、チャンクを単位に判定する。この判定のために、ストレージコントローラは、SHA1のようなハッシュ関数を用いて、チャンク毎に、対応するデータのハッシュ値を計算する。計算されたハッシュ値は、対応するチャンクに対応付けて、ハッシュテーブルに格納される。 In the first deduplication technology, for example, the storage controller (or the host computer that uses the storage device) stores, in the storage device, data having the same content as the write data in response to a write access to the storage device. Are determined in units of chunks. For this determination, the storage controller calculates a hash value of the corresponding data for each chunk using a hash function such as SHA1. The calculated hash value is stored in the hash table in association with the corresponding chunk.
ストレージコントローラは、例えば第1のチャンクのデータの第1のハッシュ値を計算した場合、第1のハッシュ値と同一のハッシュ値がハッシュテーブルに格納されているかに基づいて、第1のチャンクと重複するデータが既にストレージ装置に格納されているかを判定する。コントローラは、第1のチャンクと重複するデータが格納されていない場合だけ、当該第1のチャンクのデータをストレージ装置に書き込む。これにより、ストレージ装置から重複するデータが排除される。 For example, when the storage controller calculates the first hash value of the data of the first chunk, it overlaps with the first chunk based on whether the same hash value as the first hash value is stored in the hash table. It is determined whether the data to be stored is already stored in the storage device. The controller writes the data of the first chunk to the storage device only when data that overlaps the first chunk is not stored. This eliminates duplicate data from the storage device.
一方、第2の重複排除技術では、ストレージコントローラ(またはホスト計算機)は、ストレージ装置に格納されている全データをチャンク単位にスキャン(リードして)、比較によりデータが重複するチャンクを検出する。ここで、第1及び第2のチャンクが重複チャンクとして検出されたものとする。この場合、ストレージコントローラは、例えばストレージ装置における第2のチャンクのデータを削除(または無効化)し、且つ第2のチャンクへのアクセスが第1のチャンクへのアクセスに切り替えられるように、マッピングを変更する。 On the other hand, in the second deduplication technique, the storage controller (or host computer) scans (reads) all data stored in the storage device in units of chunks, and detects a chunk in which data is duplicated by comparison. Here, it is assumed that the first and second chunks are detected as duplicate chunks. In this case, for example, the storage controller deletes (or invalidates) the data of the second chunk in the storage device, and the mapping is performed so that the access to the second chunk is switched to the access to the first chunk. change.
しかし、第1の重複排除技術では、ストレージ装置にデータをライトする場合に、チャンク毎に対応するデータ(ライトデータ)のハッシュ値を計算する必要がある。また、第2の重複排除技術では、ストレージ装置に格納されている全データをチャンク単位にスキャンして比較する処理が必要となる。また、第2の重複排除技術における重複チャンクの検出(つまり、チャンク間のデータの重複の検出)に、ハッシュテーブルに基づくハッシュ値の比較を用いることも可能であるが、第1の重複排除技術と同様にチャンク毎にハッシュ値を計算する必要がある。 However, in the first deduplication technique, when data is written to the storage device, it is necessary to calculate a hash value of data (write data) corresponding to each chunk. In the second deduplication technique, it is necessary to scan and compare all data stored in the storage device in units of chunks. In addition, it is possible to use comparison of hash values based on a hash table for detection of duplicate chunks (that is, detection of duplicate data between chunks) in the second deduplication technique. As with, it is necessary to calculate a hash value for each chunk.
本発明が解決しようとする課題は、データの重複の検出に要するコストを低減できるストレージシステム及びデータ重複検出方法を提供することにある。 An object of the present invention is to provide is to provide a storage system及 beauty data duplication detection method capable of reducing the cost of detecting duplication of data.
実施形態によれば、ストレージシステムは、データ及び当該データに基づいて生成される誤り訂正コード(ECC)がセクタを単位に格納されるストレージ装置と、前記ストレージ装置を利用するホスト計算機とを具備する。前記ホスト計算機は、ECC取得部と重複検出部とを具備する。前記ECC取得部は、1つ以上のセクタから構成されるチャンク毎に、各チャンクを構成する複数のセクタから取得される複数のECCを結合し、この結合されたECCのハッシュ値を求めてECC値を取得する。前記重複検出部は、前記ECC値を前記チャンクを単位に比較することにより、比較されたECC値に対応するチャンクのデータの重複の可能性を判定する。前記重複検出部は更に、前記判定の結果に基づいて前記対応するチャンクのデータを比較することにより、当該対応するチャンクのデータの重複を検出する。 According to the embodiment, the storage system includes a storage device in which data and an error correction code (ECC) generated based on the data are stored in units of sectors, and a host computer that uses the storage device. . The host computer includes an ECC acquisition unit and a duplication detection unit. The ECC acquisition unit, for each chunk comprised of one or more sectors, and combining multiple ECC obtained from a plurality of sectors constituting each chunk, ECC seeking hash value of the combined ECC Get the value. The duplication detection unit determines the possibility of duplication of data of chunks corresponding to the compared ECC values by comparing the ECC values in units of the chunks. The duplication detection unit further detects duplication of the data of the corresponding chunk by comparing the data of the corresponding chunk based on the result of the determination.
以下、実施の形態につき図面を参照して説明する。
図1は一つの実施形態に係るストレージシステムの典型的なハードウェア構成を示すブロック図である。ストレージシステムは、ストレージ装置10と、ホスト計算機(ホスト)20とを含む。ストレージ装置10(より、詳細には、ストレージ装置10のストレージコントローラ12)は、ファイバチャネル(FC)、スモールコンピュータシステムインタフェース(SCSI)、シリアルアタッチドSCSI(SAS)、インターネットSCSI(iSCSI)、イーサネット(登録商標)、或いはシリアルATアタッチメント(SATA)のような、ホストインタフェースバス30を介してホスト20と接続されている。なお、ストレージ装置10が、ストレージエリアネットワーク(SAN)、インターネット或いはイントラネットのようなネットワークを介してホスト20と接続されていても良い。
Hereinafter, embodiments will be described with reference to the drawings.
FIG. 1 is a block diagram showing a typical hardware configuration of a storage system according to an embodiment. The storage system includes a
ストレージ装置10は、ストレージ11と、ストレージコントローラ12とを含む。ストレージ11は、FC、SCSI、SAS、iSCSI、イーサネット、或いはSATAのようなストレージインタフェースバス13を介してストレージコントローラ12と接続されている。
The
ストレージ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に加えて、メタデータ、或いはデータ保護情報を含んでいても構わない。
The
In response to an access request from the host 20 (more specifically, a write command or a read command), the
ホスト20は、ストレージインタフェース(SIF)コントローラ21と、メモリ22と、HDD23と、CPU24とを含む。SIFコントローラ21は、CPU24とストレージ装置10のストレージコントローラ12との間のデータ転送を制御する。SIFコントローラ21は、CPU24からのアクセス要求をストレージコントローラ12に送信し、当該アクセス要求に対するストレージコントローラ12からの応答を受信する。SIFコントローラ21は、ストレージコントローラ12からの応答を受信すると、当該応答を、CPU24に伝達する。
The
メモリ22は、ダイナミックRAM(DRAM)のような書き換えが可能な揮発性メモリである。メモリ22の一部の記憶領域は、HDD23からロードされるオペレーティングシステム(OS)及び種々のプログラムを格納するのに用いられる。メモリ22の他の一部の記憶領域は、CPU24のためのワーク領域として用いられる。
The
HDD23には、OS及び複数のプログラムが格納されている。複数のプログラムは、アプリケーションプログラム(以下、アプリケーションと称する)及びユーティリティプログラムを含む。CPU24は、ホスト機器20が起動されたときに、ROMまたはフラッシュROM(FROM)のような不揮発性メモリに格納されているIPLを実行することにより、HDD23に格納されているOSをメモリ22にロードする。またCPU24は、HDD23に格納されているプログラムを適宜メモリ22にロードする。
The
CPU24は、メモリ22にロードされたプログラムに従い、アクセス要求部203、ECC取得部204、重複排除コントローラ205、及びアクセス部206(図2)として機能する。本実施形態では、CPU24は、アプリケーションに従い、アクセス要求部203として機能し、特定のユーティリティプログラムに従い、ECC取得部204及び重複排除コントローラ205として機能し、OSに従い、アクセス部206として機能する。
The
図2は、図1に示されるホスト20の典型的な機能構成を主として示すブロック図である。ホスト20のメモリ22の一部の記憶領域は、重複管理テーブル201及びアドレステーブル202を格納するのに用いられる。ホスト20は、重複管理テーブル201及びアドレステーブル202に加えて、前述のアクセス要求部203、ECC取得部204、重複排除コントローラ205、及びアクセス部206を含む。
FIG. 2 is a block diagram mainly showing a typical functional configuration of the
アクセス要求部203は、例えばアプリケーションからの要求に応じて、アクセス部206に対してストレージ装置10へのアクセスを要求する。本実施形態では、アクセス要求部203からのアクセス要求に応じて、ストレージ装置10へのアクセスが、ブロックと呼ばれる固定長または可変長のデータの塊を単位に実行されるものとする。ブロックのデータは、例えば、チャンクと呼ばれるデータの塊に分割される。チャンクのデータは、ストレージ装置10においては、例えば、複数のセクタに分散して格納される。
The
図3は、本実施形態におけるチャンクのデータ構造の例を示す。図3の例では、チャンク31はn個のセクタ310_1乃至310_nに分割される。即ちチャンク31はn個のセクタ310_1乃至310_nから構成される。本実施形態では、説明の簡略化のために、チャンク31のデータのサイズ(チャンクサイズ)は4KB(キロバイト)の固定長であるものとするが、可変長であっても構わない。
FIG. 3 shows an example of a chunk data structure in this embodiment. In the example of FIG. 3, the
チャンク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の場合もあり得る。
The data of the
セクタ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以外の付加情報は省略されている。
Additional information including ECCs 312_1 to 312_n is added to the sectors 310_1 to 310_n (more specifically, data 311_1 to 311_n of the sectors 310_1 to 310_n). The ECCs 312_1 to 312_n are generated by the
データ311_1乃至311_nのサイズ(つまり、セクタサイズ)が512Bの場合、ECC312_1乃至312_nのサイズ(ECCサイズ)は一般に数十ビット程度である。しかし、ECCサイズが、必ずしも数十ビット程度でなくても構わない。 When the size (that is, the sector size) of the data 311_1 to 311_n is 512B, the size (ECC size) of the ECCs 312_1 to 312_n is generally about several tens of bits. However, the ECC size does not necessarily have to be about several tens of bits.
図2においてECC取得部204は、ストレージ装置10に格納されたチャンクを単位に、ECCの群を取得する。ECC取得部204は、取得されたECCの群に基づいて、それぞれのECCの値を重複管理テーブル201に格納する。
In FIG. 2, the
図4は、図2に示される重複管理テーブル201のデータ構造の例を示す。重複管理テーブル201の各エントリは、重複管理レコードを格納するのに用いられる。重複管理レコードは、物理アドレス、ECC値及び参照カウントを含む。重複管理テーブル201の主キーは物理アドレスである。 FIG. 4 shows an example of the data structure of the duplication management table 201 shown in FIG. Each entry of the duplicate management table 201 is used to store a duplicate management record. The duplicate management record includes a physical address, an ECC value, and a reference count. The primary key of the duplication management table 201 is a physical address.
重複管理レコード中の物理アドレスは、当該重複管理レコード中のECC値に対応するECC群を含むセクタ群から構成されるチャンクが格納されている、ストレージ装置10(ストレージ11)の記憶領域(物理記憶領域)を示す。重複管理レコード中の参照カウントは、当該重複管理レコード中の物理アドレスが、割り当て(対応付け)られている論理アドレスの数を示す。つまり、重複管理レコード中の参照カウントは、当該重複管理レコード中の物理アドレスを論理的に参照する論理アドレスの数を示す。論理アドレスと物理アドレスとの対応は、アドレステーブル202によって示される。また、重複管理レコード中の参照カウントは、当該重複管理レコード中の物理アドレスで示されるストレージ装置10の記憶領域に格納されたチャンクのデータと同一内容のデータを含むチャンクの数(つまり、重複数または重複カウント)をも示す。
The physical address in the duplication management record is a storage area (physical memory) of the storage apparatus 10 (storage 11) in which a chunk composed of a sector group including the ECC group corresponding to the ECC value in the duplication management record is stored. Area). The reference count in the duplication management record indicates the number of logical addresses to which physical addresses in the duplication management record are assigned (associated). That is, the reference count in the duplication management record indicates the number of logical addresses that logically refer to the physical address in the duplication management record. The correspondence between the logical address and the physical address is indicated by the address table 202. Further, the reference count in the duplicate management record is the number of chunks containing the same data as the chunk data stored in the storage area of the
図4に示される重複管理テーブル201において、例えば、物理アドレスADR2を含む重複管理レコードのECC値及び参照カウントは、それぞれECC2及び3である。この重複管理レコード中の参照カウント=3は、物理アドレスADR2(で指定される記憶領域)に格納されたチャンクのデータと同一内容のデータを含むチャンクが合計3つ存在することを示す。 In the duplication management table 201 shown in FIG. 4, for example, the ECC value and the reference count of the duplication management record including the physical address ADR2 are ECC2 and 3, respectively. Reference count = 3 in the duplication management record indicates that there are a total of three chunks containing data having the same contents as the chunk data stored in the physical address ADR2 (the storage area specified by).
図5は、図2に示されるアドレステーブル202のデータ構造例を示す。アドレステーブル202の各エントリは、アドレスレコードを格納するのに用いられる。アドレスレコードは、論理アドレス、及び当該論理アドレスに割り当て(対応付け)られる物理アドレスを含む。本実施形態において、論理アドレスは、ストレージ装置10の記憶領域(物理記憶領域)が割り当てられる論理ボリューム(論理ディスク)内の記憶領域(論理記憶領域)のアドレス、例えば論理ブロックアドレス(LBA)を示す。
FIG. 5 shows an example of the data structure of the address table 202 shown in FIG. Each entry in the address table 202 is used to store an address record. The address record includes a logical address and a physical address assigned (associated) with the logical address. In this embodiment, the logical address indicates an address of a storage area (logical storage area) in a logical volume (logical disk) to which a storage area (physical storage area) of the
図5に示されるアドレステーブル202は、論理アドレスLBA1乃至LBA6を含むアドレスレコードの群を有する。論理アドレスLBA1乃至LBA6で指定される論理ボリューム内の記憶領域には、チャンクCHK1乃至CHK6が論理的に格納されているものとする。つまりLBA1乃至LBA6は、チャンクCHK1乃至CHK6の論理アドレスである。 The address table 202 shown in FIG. 5 has a group of address records including logical addresses LBA1 to LBA6. It is assumed that chunks CHK1 to CHK6 are logically stored in the storage area in the logical volume specified by the logical addresses LBA1 to LBA6. That is, LBA1 to LBA6 are logical addresses of chunks CHK1 to CHK6.
図5の例では、論理アドレスLBA1,LBA4及びLBA5には、1つの物理アドレスADR2が共通に割り当てられている。このことは、チャンクCHK1,CHK4及びCHK5のデータは同一であり、ストレージ装置10内では、この同一のデータが、重複排除により、物理アドレスADR2で指定されるストレージ装置10内の記憶領域にまとめて格納されていることを示す。ADR2は、チャンクCHK1,CHK4及びCHK5の物理アドレスである。
In the example of FIG. 5, one physical address ADR2 is commonly assigned to the logical addresses LBA1, LBA4, and LBA5. This means that the data in the chunks CHK1, CHK4, and CHK5 are the same, and in the
図2において、重複排除コントローラ205は、重複管理テーブル201を参照することにより同一のECC値を含む重複管理レコードを探索するための重複チャンク探索処理を実行する。重複排除コントローラ205は、同一のECC値を含む複数の重複管理レコードを探索できた場合、同一のECC値に対応するECC群を含む複数のチャンクを探索できたと判定する。
In FIG. 2, the
重複排除コントローラ205は、探索された複数のチャンクのデータを比較することにより、当該探索された複数のチャンクのデータが同一であるかを判定する。この判定を、重複チャンク判定(または重複判定)と呼ぶ。重複排除コントローラ205は、探索された複数のチャンクのデータが同一である場合、当該探索された複数のチャンクのデータがストレージ装置10において重複して存在すると判定する。この場合、重複排除コントローラ205は、この重複を排除するために、探索された複数のチャンクをストレージ装置10において一つにまとめるための重複チャンクマージ処理を実行する。
The
重複チャンクマージ処理において重複排除コントローラ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にアクセスする。
In the duplicate chunk merge processing, for example, if the data of the first and second chunks is the same, the
In response to an access request from the
次に、本実施形態においてECC取得部204によってチャンク単位に実行されるECC設定処理について、図6を参照して説明する。図6は、ECC設定処理の典型的な手順を示すフローチャートである。本実施形態においてECC設定処理は、スケジューリングされた時刻が到来した場合(例えば定期的)に、或いはユーザ指定のタイミングで実行される。
Next, an ECC setting process executed in units of chunks by the
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のデータが物理的(実際)に格納されているものとする。
The
次にECC取得部204は、取得された物理アドレスADRjを含む重複管理レコード(ターゲットの重複管理レコード)を、重複管理テーブル201から探索する(ステップS102)。そしてECC取得部204は、ターゲットの重複管理レコードを探索できたかを判定する(ステップS103)。
Next, the
もし、ターゲットの重複管理レコードを探索できなかったならば(ステップS103のNo)、ECC取得部204は、チャンクCHKiに関するECC設定処理を終了する。この場合、ECC取得部204は、次のチャンクに関するECC設定処理を開始する。
If the target duplication management record cannot be searched (No in step S103), the
これに対し、ターゲットの重複管理レコードを探索できたならば(ステップS103のYes)、ECC取得部204は、探索された重複管理レコード中のECC値を参照する(ステップS104)。そしてECC取得部204は、参照されたECC値が無効であるかを判定する(ステップS105)。本実施形態では、この判定は、参照されたECC値がクリアされているかに基づいて実行される。
On the other hand, if the target duplication management record can be searched (Yes in step S103), the
もし、参照されたECC値が無効でないならば(ステップS105のNo)、つまり、参照されたECC値が有効であるならば、ECC取得部204は、チャンクCHKiに関するECC値は既に取得されて設定されているとして、ECC設定処理を終了する。
If the referenced ECC value is not invalid (No in step S105), that is, if the referenced ECC value is valid, the
これに対して、参照されたECC値が無効であるならば(ステップS105のYes)、ECC取得部204は、チャンクCHKiに関するECC値を取得するためのECC取得処理(ステップS106)を実行する。ECC取得部204は、このECC取得処理(ステップS106)において、後述のように、チャンクCHKiを構成する全セクタ中のECC(例えば、n個のECC)を取得する。
On the other hand, if the referenced ECC value is invalid (Yes in step S105), the
次にECC取得部204は、取得されたn個のECCを例えば結合し(ステップS107)、結合されたECC(つまり、ECC列)をECCjとして設定する(ステップS108)。そしてECC取得部204は、探索された重複管理レコード中のECC値(無効なECC値)を、ECCj(有効なECC値)に更新する(ステップS109)。するとECC取得部204は、チャンクCHKiに関するECC設定処理を終了する。
Next, the
次に、ECC取得処理(ステップS106)について説明する。ECC取得処理は、チャンクCHKiを構成する全セクタ中のECCを取得するための処理手順を含む。あるセクタ中のECCを取得するには、以下の2つの方法のいずれかが適用可能である。1つは、セクタ中のデータと付加情報をまとめてリードし、しかる後に付加情報中のECCのみを取り出す方法(第1の方法)である。もう1つは、ストレージ装置10のストレージコントローラ12が有する、セクタ中のECCのみをリードする機能を利用する方法(第2の方法)である。このECCのみのリードをストレージコントローラ12に要求するためのコマンドは、ECCリードコマンドと呼ばれる。
Next, the ECC acquisition process (step S106) will be described. The ECC acquisition processing includes a processing procedure for acquiring ECC in all sectors constituting the chunk CHKi. In order to obtain the ECC in a certain sector, either of the following two methods can be applied. One is a method (first method) in which data and additional information in a sector are read together and then only the ECC in the additional information is extracted. The other is a method (second method) that uses a function of the
ストレージ装置10とホスト20との間のインタフェースに例えばSCSIが適用される場合、当該インタフェースでは、一般に、セクタ中のデータをリードするためのコマンド(通常のリードコマンド)に加えて、セクタ中のデータと付加情報をまとめてリードするためのリードロングと呼ばれるコマンド(リードロングコマンド)が用意されている。第1の方法は、このリードロングコマンドを利用する。
When, for example, SCSI is applied to an interface between the
以下、図6に示されるECC設定処理において実行されるECC取得処理(ステップS106)の詳細について図7を参照して説明する。図7は、ECC取得処理の典型的な手順を示すフローチャートである。本実施形態におけるECC取得処理の特徴は、第1の方法を用いて、チャンクCHKiを構成する全セクタ中のECCを取得することにある。 Details of the ECC acquisition process (step S106) executed in the ECC setting process shown in FIG. 6 will be described below with reference to FIG. FIG. 7 is a flowchart showing a typical procedure of ECC acquisition processing. The feature of the ECC acquisition process in the present embodiment is that the ECC in all sectors constituting the chunk CHKi is acquired using the first method.
まずECC取得部204は、図6のステップS101で取得された物理アドレスADRjを、ECC取得処理で用いられるリードアドレスADRrとして設定する(ステップS201)。次にECC取得部204は、リードアドレスADRrを含むリードロングコマンドを、ストレージ装置10のストレージコントローラ12に発行する(ステップS202)。
First, the
ECC取得処理の1回目のステップS202において、ECC取得部204は、リードアドレスADRrを含むリードロングコマンドを用いて、当該リードアドレスADRrで指定されるストレージ装置10のストレージ11内の物理位置から、チャンクCHKiに対応するn個のセクタ群の先頭セクタのデータ及び付加情報をまとめてリードする。そしてECC取得部204は、リードされたデータ及び付加情報をメモリ22に格納する(ステップS203)。
In the first step S202 of the ECC acquisition process, the
次にECC取得部204は、チャンクCHKi内の全セクタのリードが完了したかを判定する(ステップS204)。もし、ステップS204の判定がNoであるならば、ECC取得部204は、リードアドレスADRrがチャンクCHKiの次のセクタの物理位置を指し示すように、当該リードアドレスADRrを更新(例えばインクリメント)する(ステップS205)。するとECC取得部204は、ステップS202に戻り、インクリメントされたリードアドレスADRrを含むリードロングコマンドを用いて、チャンクCHKiの次のセクタのデータ及び付加情報をまとめてリードする。そしてECC取得部204は、リードされたデータ及び付加情報をメモリ22に格納する(ステップS203)。
Next, the
以下同様に、ECC取得部204は、S205及びS202乃至S204を繰り返す。これにより、チャンクCHKi内の全セクタのリードが完了したものとする(ステップS204のYes)。このときメモリ22には、チャンクCHKiの全セクタ中のデータ及び付加情報が格納されている。そこでECC取得部204は、チャンクCHKiの全セクタ中の付加情報からECC群を取得する(ステップS206)。これによりECC取得部204は、チャンクCHKiに関するECC取得処理(ステップS106)を終了する。
Similarly, the
<ECC取得処理の変形例>
次に、本実施形態の変形例におけるECC取得処理について、図8を参照して説明する。図8は、本実施形態の変形例におけるECC取得処理の典型的な手順を示すフローチャートである。本変形例におけるECC取得処理の特徴は、第2の方法を用いて、チャンクCHKiを構成する全セクタ中のECCを取得することにある。
<Modification of ECC acquisition processing>
Next, an ECC acquisition process in a modification of the present embodiment will be described with reference to FIG. FIG. 8 is a flowchart showing a typical procedure of ECC acquisition processing in the modification of the present embodiment. The feature of the ECC acquisition process in the present modification is that the ECC in all sectors constituting the chunk CHKi is acquired using the second method.
まずECC取得部204は、図6のステップS101で取得された物理アドレスADRjを、ECC取得処理で用いられるリードアドレスADRrとして設定する(ステップS211)。次にECC取得部204は、リードアドレスADRrを含むECCリードコマンドを、ストレージ装置10のストレージコントローラ12に発行する(ステップS212)。
First, the
ECC取得処理の1回目のステップS212において、ECC取得部204は、リードアドレスADRrを含むECCリードコマンドを用いて、当該リードアドレスADRrで指定されるストレージ装置10のストレージ11内の物理位置に格納されているチャンクCHKiの先頭セクタから、ECCのみをリードする。そしてECC取得部204は、リードされたECCをメモリ22に格納する(ステップS213)。
In the first step S212 of the ECC acquisition process, the
次に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)。
Next, the
以下同様に、ECC取得部204は、S215及びS212乃至S214を繰り返す。これにより、チャンクCHKi内の全セクタからのECCのリードが完了したものとする(ステップS214のYes)。このときメモリ22には、チャンクCHKiの全セクタからリードされたECC群が格納されている。そこでECC取得部204は、メモリ22からこのECC群を取得する(ステップS216)。これによりECC取得部204は、チャンクCHKiに関するECC取得処理(ステップS106)を終了する。
Similarly, the
なお、チャンクを単位に、チャンクを構成する全セクタからデータと付加情報をまとめてリードするためのインタフェースを、ストレージコントローラ12に用意しても構わない。同様に、チャンクを単位に、チャンクを構成する全セクタからECCのみを取り出すためのインタフェースを、ストレージコントローラ12に用意しても構わない。
Note that an interface may be provided in the
ところで、ストレージ11が例えばRAID(ディスクアレイ)により構成されている場合、ECC取得部204は、リードロングコマンドを用いてECCを含む付加情報を当該ストレージ11から直接リードすることはできない。このような場合に第1の方法(つまり、セクタ中のデータと付加情報をまとめてリードする方法)を適用するためには、ストレージコントローラ12(つまり、RAIDコントローラとして機能するストレージコントローラ12)に、リードロングコマンドと同等のインタフェースを用意すれば良い。一方、第2の方法(つまり、セクタ中のECCのみをリードする方法)を適用するためには、ストレージコントローラ12に、ストレージ11からリードされたデータからECCのみを取り出す機能を用意すれば良い。
Incidentally, when the
上述のECC設定処理においてECC取得部204は、チャンクCHKiの全セクタから取得したECC群を結合し(ステップS107)、当該結合されたECC群を、チャンクCHKiの物理アドレスADRjを含む重複管理レコード中のECC値として用いる(ステップS108及びS109)。しかし、ECC取得部204が、SHA1のようなハッシュ関数を用いて、結合されたECC群のハッシュ値を計算し、このハッシュ値をECC値として用いても構わない。
In the ECC setting process described above, the
ハッシュ値をECC値として用いる場合、たとえ可変長のチャンクサイズが適用されたとしても、ECC値のサイズは一定となる。このため重複チャンクの判定(探索)に、チャンクサイズに無関係に同一の方法が適用可能となる。また、セクタサイズに対してECCのサイズが比較的大きい場合も、ECC値のサイズを小さくできるため、重複管理テーブル201の格納に必要な記憶容量を小さくできる。 When the hash value is used as the ECC value, the size of the ECC value is constant even if a variable-length chunk size is applied. Therefore, the same method can be applied to the determination (search) of duplicate chunks regardless of the chunk size. Even when the ECC size is relatively large with respect to the sector size, the size of the ECC value can be reduced, so that the storage capacity required for storing the duplication management table 201 can be reduced.
次に、本実施形態において重複排除コントローラ205によってチャンク単位に実行される重複チャンク探索処理について、図9を参照して説明する。図9は、重複チャンク探索処理の典型的な手順を示すフローチャートである。重複チャンク探索処理は、例えば、ECC設定処理とは非同期に、ホスト20のCPU24の負荷が一定レベルより低い場合、或いはスケジューリングされた時刻が到来した場合に実行されるものとする。しかし重複チャンク探索処理が、全てのチャンクについてECC設定処理が実行された場合に実行されても構わない。
Next, the duplicate chunk search process executed in units of chunks by the
重複排除コントローラ205は、チャンク単位に実行される重複チャンク探索処理のために、アドレステーブル202を先頭エントリから順に参照する。この例では、重複チャンク探索処理の先頭で、重複排除コントローラ205が、アドレステーブル202内のi番目のエントリを参照したものとする(ステップS301)。このi番目のエントリには、チャンクCHKiの論理アドレスLBAiを含むアドレスレコードが格納されている。したがって、ステップS301は、重複排除コントローラ205がチャンクCHKiを選択することと等価である。つまり、ステップS301において重複排除コントローラ205は、重複判定対象としてチャンクCHKiを選択する。
The
次に重複排除コントローラ205は、アドレステーブル202内のi番目のエントリから、論理アドレスLBAiと対応付けられている物理アドレスADRj、つまり選択されたチャンクCHKiの物理アドレスADRjを取得する(ステップS302)。そして重複排除コントローラ205は、物理アドレスADRjに基づいて、重複管理テーブル201から物理アドレスADRjに対応付けられたECC値ECCjを取得する(ステップS303)。即ち重複排除コントローラ205は、重複管理テーブル201に格納されている、物理アドレスADRjを含む重複管理レコードから、ECC値ECCjを取得する。
Next, the
次に重複排除コントローラ205は、ECCjと同じECC値を持つ他の重複管理レコード(ターゲットの重複管理レコード)を、重複管理テーブル201から探索する(ステップS304)。そしてECC取得部204は、ターゲットの重複管理レコードを探索できたかを判定する(ステップS305)。
Next, the
もし、ターゲットの重複管理レコードを探索できなかったならば(ステップS305のNo)、重複排除コントローラ205は、チャンクCHKiのデータと同一内容のデータを持つ他のチャンクは存在しないものと判断して、チャンクCHKiに関する重複チャンク探索処理を終了する。この場合、重複排除コントローラ205は、次のチャンクに関する重複チャンク探索処理を開始する。
If the target duplication management record cannot be searched (No in step S305), the
これに対し、ターゲットの重複管理レコードを探索できたならば(ステップS305のYes)、重複排除コントローラ205は、探索された重複管理レコードに対応するチャンク(以下、チャンクCHKxと称する)は、チャンクCHKiのデータと同一内容のデータを持つ可能性があると判断する。そこで重複排除コントローラ205は、データ重複の有無を確認するために、ステップS306乃至S309を次のように実行する。
On the other hand, if the target duplication management record can be searched (Yes in step S305), the
まず重複排除コントローラ205は、探索された重複管理レコード中の物理アドレスADRyを取得する(ステップS306)。そして重複排除コントローラ205は、物理アドレスADRj及びADRyに基づいて、チャンクCHKi及びCHKxのデータを、ストレージ装置10からリードする(ステップS307)。即ち重複排除コントローラ205は、物理アドレスADRjを含むリードコマンドをストレージコントローラ12に発行することにより、当該物理アドレスADRjで指定されるストレージ11の記憶領域に格納されているチャンクCHKiのデータをリードする。同様に重複排除コントローラ205は、物理アドレスADRyを含むリードコマンドをストレージコントローラ12に発行することにより、当該物理アドレスADRyで指定されるストレージ11の記憶領域に格納されているチャンクCHKxのデータをリードする。
First, the
次に重複排除コントローラ205は、リードされたチャンクCHKiのデータとリードされたチャンクCHKxのデータとを比較して(ステップS308)、当該両データが一致するかを判定する(ステップS309)。もし、両データが一致しないならば(ステップS309のNo)、重複排除コントローラ205は、チャンクCHKx及びCHKi間でデータが重複していないと判断する。この場合、重複排除コントローラ205はステップS304に戻って、ECCjと同じECC値を持つ新たな重複管理レコードを、重複管理テーブル201から探索する。
Next, the
これに対し、両データが一致するならば(ステップS309のYes)、チャンクCHKx及びCHKi間でデータが重複していると判断する。この場合、重複排除コントローラ205は、例えばチャンクCHKxを、チャンクCHKiにマージするための重複チャンクマージ処理(ステップS310)を実行する。そして重複排除コントローラ205は、ステップS304に戻って、ECCjと同じECC値を持つ新たな重複管理レコードを、重複管理テーブル201から探索する。
On the other hand, if the two data match (Yes in step S309), it is determined that the data is duplicated between the chunks CHKx and CHKi. In this case, the
重複排除コントローラ205は、このステップS304から始まる処理を、ECCjと同じECC値を持つ新たな重複管理レコードが探索できなくなるまで(ステップS305のNo)、繰り返す。以下の説明では、チャンクCHKx及びチャンクCHKiを、それぞれ、マージ元(またはマージ元チャンク)及びマージ先(またはマージ先チャンク)と称する。なお、マージ元とマージ先は逆であっても構わない。
The
次に、図9に示される重複チャンク探索処理において実行される重複チャンクマージ処理(ステップS310)の詳細について図10を参照して説明する。図10は、本実施形態における重複チャンクマージ処理の典型的な手順を示すフローチャートである。 Next, details of the duplicate chunk merge process (step S310) executed in the duplicate chunk search process shown in FIG. 9 will be described with reference to FIG. FIG. 10 is a flowchart showing a typical procedure of the duplicate chunk merging process in the present embodiment.
まず重複排除コントローラ205は、アドレステーブル202において、マージ元の物理アドレスADRyをマージ先の物理アドレスADRjに変更する(ステップS401)。次に重複排除コントローラ205は、重複管理テーブル201に格納されている、マージ先の物理アドレスADRjを含む重複管理レコード中の参照カウントを、マージ元の物理アドレスADRyを含む重複管理レコード中の参照カウントの値だけインクリメントする(ステップS402)。つまり重複排除コントローラ205は、マージ元の物理アドレスADRyを含む重複管理レコード中の参照カウントの値を、マージ先の物理アドレスADRjを含む重複管理レコード中の参照カウントに引き継がせる。
First, the
次に重複排除コントローラ205は、重複管理テーブル201に格納されている、マージ元の物理アドレスADRyを含む重複管理レコード中の参照カウントを0に設定する(ステップS403)。また、ステップS403において重複排除コントローラ205は、マージ元の物理アドレスADRyを含む重複管理レコード中のECC値を、例えばクリアすることにより無効化する。
Next, the
次に重複排除コントローラ205は、マージ元の物理アドレスADRyで指定される、ストレージ装置10内のマージ元のチャンクCHKxのデータ、つまりマージ元チャンクCHKxを構成するn個のセクタのデータを削除する(ステップS404)。これにより、チャンクCHKxは、チャンクCHKiにマージされる。
Next, the
なお本実施形態では、値が0の参照カウントを含む重複管理レコード中の物理アドレスで指定される記憶領域は、空き記憶領域として管理される。したがって、マージ元の物理アドレスADRyで指定される記憶領域も空き記憶領域として管理される。このため重複排除コントローラ205は、必ずしもマージ元のチャンクCHKxのデータを削除する必要はない。
In the present embodiment, the storage area specified by the physical address in the duplication management record including the reference count having a value of 0 is managed as a free storage area. Therefore, the storage area specified by the merge-source physical address ADRy is also managed as a free storage area. For this reason, the
次に、上述の重複チャンクマージ処理を含む重複チャンク探索処理の具体例について、図11及び図12を参照して説明する。図11及び図12は重複チャンク探索処理に起因する、それぞれ重複管理テーブル201及びアドレステーブル202の状態の変化の例を示す。 Next, a specific example of the duplicate chunk search process including the duplicate chunk merge process described above will be described with reference to FIGS. 11 and 12 show examples of changes in the status of the duplication management table 201 and the address table 202, respectively, resulting from the duplicate chunk search process.
まず、図11及び図12において、矢印A1及びA2の基端側には、重複チャンク探索処理が開始される前の重複管理テーブル201及びアドレステーブル202の状態が示されている。この重複管理テーブル201及びアドレステーブル202の状態は、図4及び図5に示されるそれらの状態と同一である。 First, in FIG. 11 and FIG. 12, the state of the duplication management table 201 and the address table 202 before the duplication chunk search process is started is shown on the base end side of the arrows A1 and A2. The states of the duplication management table 201 and the address table 202 are the same as those shown in FIGS.
この状態では、重複管理テーブル201において、物理アドレスADR1を含む重複管理レコード中のECC値ECC1は、物理アドレスADR3を含む重複管理レコード中のECC値ECC3に等しいものとする。また、アドレステーブル202において、物理アドレスADR1は論理アドレスLBA3と対応付けられており、物理アドレスADR3は論理アドレスLBA2及びLBA6と対応付けられている。つまり、物理アドレスADR3は、2つの論理アドレスLBA2及びLBA6(チャンクCHK2及びCHK6)から参照されており、したがって物理アドレスADR3を含む重複管理レコード中の参照カウントは2である。 In this state, in the duplication management table 201, it is assumed that the ECC value ECC1 in the duplication management record including the physical address ADR1 is equal to the ECC value ECC3 in the duplication management record including the physical address ADR3. In the address table 202, the physical address ADR1 is associated with the logical address LBA3, and the physical address ADR3 is associated with the logical addresses LBA2 and LBA6. That is, the physical address ADR3 is referenced from the two logical addresses LBA2 and LBA6 (chunks CHK2 and CHK6), and therefore the reference count in the duplication management record including the physical address ADR3 is 2.
以上のような重複管理テーブル201及びアドレステーブル202の状態で、アドレステーブル202が1回目の重複チャンク探索処理を開始して、チャンクCHK1を選択したものとする(ステップS301)。チャンクCHK1の論理アドレスLBA1は、アドレステーブル202によって物理アドレスADR2に対応付けられている。 In the state of the duplication management table 201 and the address table 202 as described above, it is assumed that the address table 202 starts the first duplicate chunk search process and selects the chunk CHK1 (step S301). The logical address LBA1 of the chunk CHK1 is associated with the physical address ADR2 by the address table 202.
重複排除コントローラ205は、重複管理テーブル201から、チャンクCHK1の物理アドレスADR2に対応付けられたECC値ECC2を取得する(ステップS302及びS303)。そして重複排除コントローラ205は、ECC2と同じECC値を持つ他の重複管理レコードを、重複管理テーブル201から探索する(ステップS304)。
The
本実施形態では、ECC2と同じECC値を持つ他の重複管理レコードは存在しない(ステップS305のNo)。この場合、重複排除コントローラ205は、2回目の重複チャンク探索処理を開始して、チャンクCHK2を選択する(ステップS301)。チャンクCHK2の論理アドレスLBA2は、アドレステーブル202によって物理アドレスADR3に対応付けられている。
In the present embodiment, there is no other duplicate management record having the same ECC value as ECC2 (No in step S305). In this case, the
重複排除コントローラ205は、重複管理テーブル201から、チャンクCHK2の物理アドレスADR3に対応付けられたECC値ECC3を取得する(ステップS302及びS303)。そして重複排除コントローラ205は、ECC3と同じECC値を持つ他の重複管理レコードを、重複管理テーブル201から探索する(ステップS304)。
The
本実施形態では、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)。
In the present embodiment, the same ECC value as ECC3 is ECC1, and therefore there is another duplicate management record having the same ECC value as ECC3 (Yes in step S305). This duplication management record (that is, duplication management record including ECC1) includes ADR1 as a physical address. ADR1 is associated with the logical address LBA3 by the address table 202, and indicates the physical address of the chunk CHK3. In this case, the
本実施形態では、チャンクCHK2及びCHK3のデータは等しいものとする(ステップS309のYes)。この場合、重複排除コントローラ205は、チャンクCHK3をチャンクCHK2にマージするための重複チャンクマージ処理(ステップS310)を実行する。即ち重複排除コントローラ205は、アドレステーブル202においてチャンクCHK3の論理アドレスLBA3に対応付けられた物理アドレスADR1(つまりチャンクCHK3の物理アドレスADR1)を、図12において矢印A2で示されるように、チャンクCHK2の物理アドレスADR3に変更する(ステップS401)。
In the present embodiment, the data of the chunks CHK2 and CHK3 are assumed to be equal (Yes in step S309). In this case, the
また重複排除コントローラ205は、重複管理テーブル201において物理アドレスADR3に対応付けられた参照カウント(=2)を、重複管理テーブル201において物理アドレスADR1に対応付けられた参照カウント(=1)だけインクリメントする(ステップS402)。これにより物理アドレスADR3に対応付けられた参照カウントは、図11において矢印A1で示されるように、2から3にインクリメントされる。更に重複排除コントローラ205は、図11において矢印A1で示されるように、重複管理テーブル201において物理アドレスADR1に対応付けられた参照カウントを0に設定し、且つ物理アドレスADR1に対応付けられたECC値を無効化(クリア)する(ステップS402)。
The
上述のように、本実施形態において重複排除コントローラ205は、重複管理レコード中のECC値、つまりストレージ装置10に既に格納されている各チャンクを構成する全セクタ中のECCの列を、重複チャンクの探索(判定)に利用する。このように本実施形態においては、セクタのデータのエラー検出及びエラー訂正のために当該セクタに付されるECCを、データの重複を検出するための指標として利用する。これに対して、従来技術(第1の重複排除技術)では、各チャンクのデータをストレージ装置にライトする際に、当該データのハッシュ値が計算される。そして、このハッシュ値が重複管理レコード中に設定されて、重複チャンクの探索に利用される。また、別の従来技術(第2の重複排除技術)では、ストレージ装置に格納されている全データがリードされて比較される。
As described above, in this embodiment, the
本実施形態においては、ECCの値をハッシュ値の代替として用い、ECCの値が等しい場合にのみデータを比較することで、チャンクのデータの重複を検出する。したがって本実施形態によれば、重複チャンクの探索に利用される情報を生成するための計算(ハッシュ計算)、或いは全データの比較を不要にして、チャンクのデータの重複検出に要するコストを低減することができる。 In this embodiment, the ECC value is used as a substitute for the hash value, and data duplication is detected by comparing data only when the ECC values are equal. Therefore, according to the present embodiment, calculation (hash calculation) for generating information used for searching for duplicate chunks or comparison of all data is unnecessary, and the cost required for duplicate detection of chunk data is reduced. be able to.
次に、本実施形態においてアクセス部206によって実行されるライト処理について、チャンクCHKsに新たなデータをライトする場合を例に、図13を参照して説明する。図13は、ライト処理の典型的な手順を示すフローチャートである。本実施形態においてライト処理は、アクセス要求部203からのライトアクセス要求に応じて実行される。
Next, the write process executed by the
まずアクセス部206が、アクセス要求部203からのライトアクセス要求に応じて、チャンクCHKsへのデータライトを開始するものとする。この場合、アクセス部206は、チャンクCHKsの論理アドレスLBAsに対応付けられた有効な物理アドレスADRtを含むアドレスレコード(ターゲットのアドレスレコード)を、アドレステーブル202から探索する(ステップS501)。そしてアクセス部206は、ターゲットのアドレスレコードを探索できたかを判定する(ステップS502)。
First, it is assumed that the
もし、ターゲットのアドレスレコードを探索できたならば(ステップS502のYes)、アクセス部206は、探索されたアドレスレコードから、物理アドレスADRtを取得する(ステップS503)。そしてアクセス部206は、取得された物理アドレスADRtに基づいて重複管理テーブル201を探索することにより、当該取得された物理アドレスADRtを含む重複管理レコード中の参照カウントを取得する(ステップS504)。次にアクセス部206は、取得された参照カウントが1であるかを判定する(ステップS505)。
If the target address record can be searched (Yes in step S502), the
もし、取得された参照カウントが1でないならば(ステップS505のNo)、アクセス部206は、現在のチャンクCHKsのデータは他の1つ以上のチャンクのデータと重複しており、したがって新たなデータを、現在のチャンクCHKsのデータ(より詳細には、重複データ)に上書きすることはできないと判断する。つまりアクセス部206は、新たなデータを、現在のチャンクCHKsのデータがライトされている記憶領域(より詳細には、物理アドレスADRtによって指定される記憶領域)とは別の記憶領域にライトする必要があると判断する。明らかなように、今回のライト処理によりチャンクCHKsにライトされる新たなデータは、上述の他の1つ以上のチャンクのデータと重複しないものである。そこでアクセス部206は、取得された参照カウント(より詳細には、取得された物理アドレスADRtを含む重複管理レコード中の参照カウント)を1デクリメントして(ステップS506)、ステップS507に進む。一方、ターゲットのアドレスレコードを探索できなかったならば(ステップS502のNo)、アクセス部206は、ステップS503乃至S506をスキップしてステップS507に進む。
If the acquired reference count is not 1 (No in step S505), the
ステップS507においてアクセス部206は、新たなデータ(つまり、アクセス要求部203によって要求されたライトデータ)がチャンクCHKsのデータとしてライトされるべき、ストレージ装置10(ストレージ11)内の空き記憶領域(つまり、空きチャンク領域)を確保する(ステップS507)。アクセス部206は、この空きチャンク領域を次のように確保する。まずアクセス部206は、重複管理テーブル201から、値が0の参照カウントを含む重複管理レコードを探索する。そしてアクセス部206は、探索された重複管理レコード中の物理アドレスADRuを、ライト先の空きチャンク領域の物理アドレスとして取得する。これによりアクセス部206は、ライト先の空きチャンク領域を確保する。アクセス部206は、ステップS507を実行すると、ステップS508に進む。
In step S507, the
一方、取得された参照カウントが1であるならば(ステップS505のYes)、アクセス部206は、現在のチャンクCHKsのデータは他の1つ以上のチャンクのデータと重複しておらず、したがって新たなデータを、現在のチャンクCHKsのデータに上書きすることが可能であると判断する。この場合、新たなデータのライト先は、現在のチャンクCHKsのデータがライトされている記憶領域(チャンク領域)であり、物理アドレスADRtによって指定される。ステップS505の判定がYesの場合、アクセス部206は、ステップS506及びS507をスキップしてステップS508に進む。
On the other hand, if the acquired reference count is 1 (Yes in step S505), the
ステップS508においてアクセス部206は、ライト先のチャンク領域の物理アドレスを含む重複管理レコード中のECC値をクリアし、且つ当該重複管理レコード中の参照カウントを1に設定する。ここで、ライト先のチャンク領域は、ステップS507を介してステップS508が実行される場合、当該ステップS507で確保された空きチャンク領域であり、当該ライト先のチャンク領域の物理アドレスはADRuである。これに対し、ステップS507をスキップしてステップS508が実行される場合、ライト先のチャンク領域は、現在チャンクCHKsのデータ(旧データ)が格納されているチャンク領域であり、当該ライト先のチャンク領域の物理アドレスはADRtである。
In step S508, the
アクセス部206は、ステップS508を実行すると、アクセス要求部203によって要求されたライトデータを、チャンクCHKsの新たなデータとして、ストレージ装置10(ストレージ11)におけるライト先のチャンク領域にストレージコントローラ12によりライトさせる(ステップS509)。これにより、チャンクCHKsの新データは、n個のセクタに分散してライトされる。n個のセクタの各々にはECCを含む付加情報が付されている。ECCは、n個のセクタに分散してライトされるデータに基づいてストレージコントローラ12によって生成される。
When executing the step S508, the
なお、図2に示される、ECC取得部204、重複排除コントローラ205及びアクセス部206がストレージコントローラ12に設けられても構わない。この場合、重複管理テーブル201及びアドレステーブル202は、ストレージコントローラ12が有するメモリに格納されれば良い。
Note that the
前記実施形態では、ストレージ装置10は、単一のホスト20と接続されている。しかし、ストレージ装置10が、ホスト20を含む複数のホストと、ホストインタフェースバス30(またはネットワーク)を介して接続されていても良い。この場合、ホスト20以外のホストからのストレージ装置10へのアクセスに関しても、例えば、ホスト20のみが、重複排除のための前記実施形態と同様の処理を行えば良い。また、ホスト20を含む複数のホストが、それぞれ、図2に示される構成を有し、当該複数のホストが重複排除のための前記実施形態と同様の処理を行っても構わない。この場合、複数のホストがそれぞれ重複管理テーブル201及びアドレステーブル202を有し、当該重複管理テーブル201及びアドレステーブル202を複数のホスト間で同期化しても良い。
In the embodiment, the
以上説明した少なくとも1つの実施形態によれば、データの重複の検出に要するコストを低減することができる。 According to at least one embodiment described above, it is possible to reduce the cost required for detecting data duplication.
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalents thereof.
10…ストレージ装置、11…ストレージ、12…ストレージコントローラ、20…ホスト(ホスト計算機)、22…メモリ、24…CPU、201…重複管理テーブル、202…アドレステーブル、204…ECC取得部、205…重複排除コントローラ(重複検出部)、206…アクセス部。
DESCRIPTION OF
Claims (2)
前記ストレージ装置を利用するホスト計算機とを具備し、
前記ホスト計算機は、
1つ以上のセクタから構成されるチャンク毎に、各チャンクを構成する複数のセクタから取得される複数のECCを結合し、この結合されたECCのハッシュ値を求めてECC値を取得するECC取得部と、
前記ECC値を前記チャンクを単位に比較することにより、比較されたECC値に対応するチャンクのデータの重複の可能性を判定し、当該判定の結果に基づいて前記対応するチャンクのデータを比較することにより、当該対応するチャンクのデータの重複を検出する重複検出部とを具備する
ストレージシステム。 A storage device in which data and an error correction code (ECC) generated based on the data are stored in units of sectors;
A host computer using the storage device,
The host computer
Chunks each composed of one or more sectors, ECC acquisition combines multiple ECC obtained from a plurality of sectors constituting each chunk, acquires the ECC value seeking hash value of the combined ECC And
By comparing the ECC value with the chunk as a unit, the possibility of duplication of the data of the chunk corresponding to the compared ECC value is determined, and the data of the corresponding chunk is compared based on the determination result. Accordingly, a storage system including a duplication detection unit that detects duplication of data of the corresponding chunk.
1つ以上のセクタから構成されるチャンク毎に、各チャンクを構成する複数のセクタから取得される複数のECCを結合し、この結合されたECCのハッシュ値を求めてECC値を取得し、
前記ECC値を前記チャンクを単位に比較することにより、比較されたECC値に対応するチャンクのデータの重複の可能性を判定し、
前記判定の結果に基づいて前記対応するチャンクのデータを比較することにより、当該対応するチャンクのデータの重複を検出する
データ重複検出方法。 A data duplication detection method in a host computer using a storage device in which data and an error correction code (ECC) generated based on the data are stored in units of sectors,
Chunks each composed of one or more sectors, and combining multiple ECC obtained from a plurality of sectors constituting each chunk, acquires the ECC value seeking hash value of the combined ECC,
By comparing the ECC value in units of the chunk, the possibility of duplication of data in the chunk corresponding to the compared ECC value is determined,
A data duplication detection method for detecting duplication of data of the corresponding chunk by comparing the data of the corresponding chunk based on the determination result.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015165787A JP6419662B2 (en) | 2015-08-25 | 2015-08-25 | Storage system and data duplication detection method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015165787A JP6419662B2 (en) | 2015-08-25 | 2015-08-25 | Storage system and data duplication detection method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017045177A JP2017045177A (en) | 2017-03-02 |
JP6419662B2 true JP6419662B2 (en) | 2018-11-07 |
Family
ID=58210217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015165787A Active JP6419662B2 (en) | 2015-08-25 | 2015-08-25 | Storage system and data duplication detection method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6419662B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7469803B2 (en) | 2020-10-20 | 2024-04-17 | 株式会社ブイ・テクノロジー | Focused Energy Beam Device |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021022324A (en) * | 2019-07-30 | 2021-02-18 | 富士通株式会社 | Storage controller and storage control program |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05324579A (en) * | 1992-05-25 | 1993-12-07 | Hitachi Ltd | Distributed file system and storage device |
US6665743B2 (en) * | 2001-04-18 | 2003-12-16 | International Business Machines Corporation | Method, system, and program for initializing a storage space |
US7734603B1 (en) * | 2006-01-26 | 2010-06-08 | Netapp, Inc. | Content addressable storage array element |
JP4900850B2 (en) * | 2009-04-01 | 2012-03-21 | 日本電気株式会社 | Disk array device, disk array device management method and program |
-
2015
- 2015-08-25 JP JP2015165787A patent/JP6419662B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7469803B2 (en) | 2020-10-20 | 2024-04-17 | 株式会社ブイ・テクノロジー | Focused Energy Beam Device |
Also Published As
Publication number | Publication date |
---|---|
JP2017045177A (en) | 2017-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6212137B2 (en) | Storage device and storage device control method | |
US10055420B1 (en) | Method to optimize random IOS of a storage device for multiple versions of backups using incremental metadata | |
JP6385570B2 (en) | Storage system and storage control method | |
US10248623B1 (en) | Data deduplication techniques | |
US7716183B2 (en) | Snapshot preserved data cloning | |
JP6345698B2 (en) | Reduce redundancy in stored data | |
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 (en) | Storage device | |
US10956071B2 (en) | Container key value store for data storage devices | |
US20140281307A1 (en) | Handling snapshot information for a storage device | |
JP6429963B2 (en) | Storage device and storage device control method | |
JP2009116873A (en) | Solid state memory (ssm), computer system having ssm, and ssm driving method | |
US10592150B2 (en) | Storage apparatus | |
US9996426B1 (en) | Sparse segment trees for high metadata churn workloads | |
US20210034578A1 (en) | Inline deduplication using neighboring segment loading | |
US20180307440A1 (en) | Storage control apparatus and storage control method | |
JP6419662B2 (en) | Storage system and data duplication detection method | |
WO2016038714A1 (en) | File system, data deduplication method, and program for file system | |
US10565120B1 (en) | Method for efficient write path cache load to improve storage efficiency | |
US8151053B2 (en) | Hierarchical storage control apparatus, hierarchical storage control system, hierarchical storage control method, and program for controlling storage apparatus having hierarchical structure | |
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 | |
WO2018061161A1 (en) | Storage apparatus and method for controlling same |
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 | Written amendment |
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 |