JP6419662B2 - Storage system and data duplication detection method - Google Patents

Storage system and data duplication detection method Download PDF

Info

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
Application number
JP2015165787A
Other languages
Japanese (ja)
Other versions
JP2017045177A (en
Inventor
祥一 澤田
祥一 澤田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Digital 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 Digital Solutions Corp filed Critical Toshiba Corp
Priority to JP2015165787A priority Critical patent/JP6419662B2/en
Publication of JP2017045177A publication Critical patent/JP2017045177A/en
Application granted granted Critical
Publication of JP6419662B2 publication Critical patent/JP6419662B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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.

特許第5444506号公報Japanese Patent No. 5444506

しかし、第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 is a block diagram showing a typical hardware configuration of a storage system according to an embodiment. 図1に示されるホストの典型的な機能構成を主として示すブロック図。FIG. 2 is a block diagram mainly showing a typical functional configuration of a host shown in FIG. 1. 同実施形態におけるチャンクのデータ構造の例を示す図。The figure which shows the example of the data structure of the chunk in the same embodiment. 図2に示される重複管理テーブルのデータ構造の例を示す図。The figure which shows the example of the data structure of the duplication management table shown by FIG. 図2に示されるアドレステーブルのデータ構造例を示す図。The figure which shows the data structure example of the address table shown by FIG. 同実施形態におけるECC設定処理の典型的な手順を示すフローチャート。6 is a flowchart showing a typical procedure of ECC setting processing in the embodiment. 図6に示されるECC設定処理において実行されるECC取得処理の典型的な手順を示すフローチャート。The flowchart which shows the typical procedure of the ECC acquisition process performed in the ECC setting process shown by FIG. 同実施形態の変形例におけるECC取得処理の典型的な手順を示すフローチャート。9 is a flowchart showing a typical procedure of ECC acquisition processing according to a modification of the embodiment. 同実施形態における重複チャンク探索処理の典型的な手順を示すフローチャート。The flowchart which shows the typical procedure of the duplicate chunk search process in the embodiment. 図9に示される重複チャンク探索処理において実行される重複チャンクマージ処理の典型的な手順を示すフローチャート。The flowchart which shows the typical procedure of the duplicate chunk merge process performed in the duplicate chunk search process shown by FIG. 重複チャンク探索処理に起因する重複管理テーブルの状態の変化の例を示す図。The figure which shows the example of the change of the state of the duplication management table resulting from duplication chunk search processing. 重複チャンク探索処理に起因するアドレステーブルの状態の変化の例を示す図。The figure which shows the example of the change of the state of the address table resulting from a duplicate chunk search process. 同実施形態におけるライト処理の典型的な手順を示すフローチャート。7 is a flowchart showing a typical procedure of write processing in the embodiment.

以下、実施の形態につき図面を参照して説明する。
図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 storage apparatus 10 and a host computer (host) 20. The storage device 10 (more specifically, the storage controller 12 of the storage device 10) includes Fiber Channel (FC), Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), Internet SCSI (iSCSI), Ethernet ( It is connected to the host 20 via a host interface bus 30 such as a registered trademark or a serial AT attachment (SATA). The storage device 10 may be connected to the host 20 via a network such as a storage area network (SAN), the Internet, or an intranet.

ストレージ装置10は、ストレージ11と、ストレージコントローラ12とを含む。ストレージ11は、FC、SCSI、SAS、iSCSI、イーサネット、或いはSATAのようなストレージインタフェースバス13を介してストレージコントローラ12と接続されている。   The storage device 10 includes a storage 11 and a storage controller 12. The storage 11 is connected to the storage controller 12 via a storage interface bus 13 such as FC, SCSI, SAS, iSCSI, Ethernet, or SATA.

ストレージ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 storage 11 is, for example, a hard disk drive (HDD). However, the storage 11 may be a disk array such as RAID (Redundant Arrays of Inexpensive Disks or Redundant Arrays of Independent Disks) composed of a plurality of HDDs. The storage 11 may be a solid state drive (SSD) having compatibility with the HDD or a flash storage such as a flash array. An SSD and flash storage are generally configured using a plurality of flash memories.
In response to an access request from the host 20 (more specifically, a write command or a read command), the storage controller 12 accesses the storage 11 in units of data called sectors, for example. The storage controller 12 also generates an error correction code (ECC) for each sector when data is written to the storage 11. The ECC is used to detect and correct an error in the data used to generate the ECC. Then, the storage controller 12 writes a set of data and additional information including ECC to the storage 11 in units of sectors. The additional information may include metadata or data protection information in addition to the ECC.

ホスト20は、ストレージインタフェース(SIF)コントローラ21と、メモリ22と、HDD23と、CPU24とを含む。SIFコントローラ21は、CPU24とストレージ装置10のストレージコントローラ12との間のデータ転送を制御する。SIFコントローラ21は、CPU24からのアクセス要求をストレージコントローラ12に送信し、当該アクセス要求に対するストレージコントローラ12からの応答を受信する。SIFコントローラ21は、ストレージコントローラ12からの応答を受信すると、当該応答を、CPU24に伝達する。   The host 20 includes a storage interface (SIF) controller 21, a memory 22, an HDD 23, and a CPU 24. The SIF controller 21 controls data transfer between the CPU 24 and the storage controller 12 of the storage apparatus 10. The SIF controller 21 transmits an access request from the CPU 24 to the storage controller 12 and receives a response from the storage controller 12 to the access request. When receiving a response from the storage controller 12, the SIF controller 21 transmits the response to the CPU 24.

メモリ22は、ダイナミックRAM(DRAM)のような書き換えが可能な揮発性メモリである。メモリ22の一部の記憶領域は、HDD23からロードされるオペレーティングシステム(OS)及び種々のプログラムを格納するのに用いられる。メモリ22の他の一部の記憶領域は、CPU24のためのワーク領域として用いられる。   The memory 22 is a rewritable volatile memory such as a dynamic RAM (DRAM). A part of the storage area of the memory 22 is used to store an operating system (OS) and various programs loaded from the HDD 23. Another part of the storage area of the memory 22 is used as a work area for the CPU 24.

HDD23には、OS及び複数のプログラムが格納されている。複数のプログラムは、アプリケーションプログラム(以下、アプリケーションと称する)及びユーティリティプログラムを含む。CPU24は、ホスト機器20が起動されたときに、ROMまたはフラッシュROM(FROM)のような不揮発性メモリに格納されているIPLを実行することにより、HDD23に格納されているOSをメモリ22にロードする。またCPU24は、HDD23に格納されているプログラムを適宜メモリ22にロードする。   The HDD 23 stores an OS and a plurality of programs. The plurality of programs include application programs (hereinafter referred to as applications) and utility programs. The CPU 24 loads the OS stored in the HDD 23 into the memory 22 by executing an IPL stored in a nonvolatile memory such as a ROM or a flash ROM (FROM) when the host device 20 is activated. To do. Further, the CPU 24 loads a program stored in the HDD 23 to the memory 22 as appropriate.

CPU24は、メモリ22にロードされたプログラムに従い、アクセス要求部203、ECC取得部204、重複排除コントローラ205、及びアクセス部206(図2)として機能する。本実施形態では、CPU24は、アプリケーションに従い、アクセス要求部203として機能し、特定のユーティリティプログラムに従い、ECC取得部204及び重複排除コントローラ205として機能し、OSに従い、アクセス部206として機能する。   The CPU 24 functions as an access request unit 203, an ECC acquisition unit 204, a deduplication controller 205, and an access unit 206 (FIG. 2) according to the program loaded in the memory 22. In this embodiment, the CPU 24 functions as the access request unit 203 according to the application, functions as the ECC acquisition unit 204 and the deduplication controller 205 according to a specific utility program, and functions as the access unit 206 according to the OS.

図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 host 20 shown in FIG. A part of the storage area of the memory 22 of the host 20 is used to store the duplication management table 201 and the address table 202. The host 20 includes the access request unit 203, the ECC acquisition unit 204, the deduplication controller 205, and the access unit 206 in addition to the duplication management table 201 and the address table 202.

アクセス要求部203は、例えばアプリケーションからの要求に応じて、アクセス部206に対してストレージ装置10へのアクセスを要求する。本実施形態では、アクセス要求部203からのアクセス要求に応じて、ストレージ装置10へのアクセスが、ブロックと呼ばれる固定長または可変長のデータの塊を単位に実行されるものとする。ブロックのデータは、例えば、チャンクと呼ばれるデータの塊に分割される。チャンクのデータは、ストレージ装置10においては、例えば、複数のセクタに分散して格納される。   The access request unit 203 requests the access unit 206 to access the storage apparatus 10 in response to a request from an application, for example. In the present embodiment, it is assumed that access to the storage apparatus 10 is executed in units of fixed-length or variable-length data blocks called blocks in response to an access request from the access request unit 203. The block data is divided into chunks of data called chunks, for example. In the storage apparatus 10, for example, chunk data is distributed and stored in a plurality of sectors.

図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 chunk 31 is divided into n sectors 310_1 to 310_n. That is, the chunk 31 is composed of n sectors 310_1 to 310_n. In this embodiment, for simplification of description, the data size (chunk size) of the chunk 31 is assumed to be a fixed length of 4 KB (kilobytes), but may be a variable length.

チャンク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 chunk 31 is evenly distributed and stored in the sectors 310_1 to 310_n. In the present embodiment, the size of the sectors 310_1 to 310_n, that is, the size (sector size) of the data 311_1 to 311_n of the sectors 310_1 to 310_n is a fixed length of 512B. Therefore, when the chunk size of the chunk 31 is 4 KB as in the present embodiment, n is 8. On the other hand, when the chunk size is variable length, n does not necessarily match 8, and may be 1, for example.

セクタ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 storage controller 12 based on the data 311_1 to 311_n. In FIG. 3, additional information other than the ECCs 312_1 to 312_n is omitted.

データ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 ECC acquisition unit 204 acquires an ECC group in units of chunks stored in the storage apparatus 10. The ECC acquisition unit 204 stores each ECC value in the duplication management table 201 based on the acquired ECC group.

図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 storage device 10 indicated by the physical address in the duplicate management record (that is, the duplicate number (Or duplicate count).

図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 storage apparatus 10 is allocated, for example, a logical block address (LBA). .

図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 storage device 10, this same data is combined into a storage area in the storage device 10 specified by the physical address ADR2 by deduplication. Indicates that it is stored. ADR2 is the physical address of chunks CHK1, CHK4, and CHK5.

図2において、重複排除コントローラ205は、重複管理テーブル201を参照することにより同一のECC値を含む重複管理レコードを探索するための重複チャンク探索処理を実行する。重複排除コントローラ205は、同一のECC値を含む複数の重複管理レコードを探索できた場合、同一のECC値に対応するECC群を含む複数のチャンクを探索できたと判定する。   In FIG. 2, the deduplication controller 205 executes a duplicate chunk search process for searching for duplicate management records including the same ECC value by referring to the duplicate management table 201. The deduplication controller 205 determines that a plurality of chunks including an ECC group corresponding to the same ECC value have been searched when a plurality of duplication management records including the same ECC value can be searched.

重複排除コントローラ205は、探索された複数のチャンクのデータを比較することにより、当該探索された複数のチャンクのデータが同一であるかを判定する。この判定を、重複チャンク判定(または重複判定)と呼ぶ。重複排除コントローラ205は、探索された複数のチャンクのデータが同一である場合、当該探索された複数のチャンクのデータがストレージ装置10において重複して存在すると判定する。この場合、重複排除コントローラ205は、この重複を排除するために、探索された複数のチャンクをストレージ装置10において一つにまとめるための重複チャンクマージ処理を実行する。   The deduplication controller 205 determines whether the data of the plurality of searched chunks is the same by comparing the data of the plurality of searched chunks. This determination is called duplication chunk determination (or duplication determination). When the data of a plurality of searched chunks are the same, the deduplication controller 205 determines that the data of the searched plurality of chunks are duplicated in the storage apparatus 10. In this case, the deduplication controller 205 executes a duplicate chunk merging process for collecting a plurality of searched chunks into one in the storage apparatus 10 in order to eliminate this duplication.

重複チャンクマージ処理において重複排除コントローラ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 duplicate elimination controller 205 refers to the reference count (second reference count) in the duplicate management record corresponding to the second chunk. To the reference count (first reference count) in the duplication management record corresponding to the first chunk. That is, the deduplication controller 205 increments the first reference count by the second reference count and sets the second reference count to zero. The deduplication controller 205 also assigns the first physical address of the first chunk not only to the first logical address of the first chunk, but also to the second logical address of the second chunk. Update the address table 202 (more specifically, the physical address in the address record including the second logical address),
In response to an access request from the access request unit 203, the access unit 206 accesses, for example, the requested file in units of blocks. This block-by-block access includes access to a plurality of chunks constituting each block. For example, when accessing the chunk CHKi, the access unit 206 refers to the address table 202 based on the logical address LBAi of the chunk CHKi. The access unit 206 acquires the physical address ADRj associated with the logical address LBAi (that is, the physical address ADRj of the chunk CHKi) as a physical address indicating the physical storage area to be accessed, and the acquired physical address The storage apparatus 10 is accessed based on ADRj.

次に、本実施形態においてECC取得部204によってチャンク単位に実行されるECC設定処理について、図6を参照して説明する。図6は、ECC設定処理の典型的な手順を示すフローチャートである。本実施形態においてECC設定処理は、スケジューリングされた時刻が到来した場合(例えば定期的)に、或いはユーザ指定のタイミングで実行される。   Next, an ECC setting process executed in units of chunks by the ECC acquisition unit 204 in the present embodiment will be described with reference to FIG. FIG. 6 is a flowchart showing a typical procedure of the ECC setting process. In the present embodiment, the ECC setting process is executed when the scheduled time arrives (for example, periodically) or at a timing designated by the user.

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 acquisition unit 204 refers to the address table 202 in order from the top entry for ECC setting processing in units of chunks. In this example, it is assumed that the ECC acquisition unit 204 refers to the i-th entry in the address table 202 at the beginning of the ECC setting process (step S101). It is assumed that an address record including a logical address LBAi and a physical address ADRj is stored in the i-th entry. In this case, in step S101, the ECC acquisition unit 204 acquires the physical address ADRj associated with the logical address LBAi from the referenced i-th entry. In the storage area in the logical volume specified by the logical address LBAi, the data of the chunk CHKi is stored logically (virtual), and the storage area in the storage device 10 (storage 11) specified by the physical address ADRj , It is assumed that the data of the chunk CHKi is physically (actually) stored.

次にECC取得部204は、取得された物理アドレスADRjを含む重複管理レコード(ターゲットの重複管理レコード)を、重複管理テーブル201から探索する(ステップS102)。そしてECC取得部204は、ターゲットの重複管理レコードを探索できたかを判定する(ステップS103)。   Next, the ECC acquisition unit 204 searches the duplication management table 201 for a duplication management record (target duplication management record) including the obtained physical address ADRj (step S102). Then, the ECC acquisition unit 204 determines whether the target duplication management record has been searched (step S103).

もし、ターゲットの重複管理レコードを探索できなかったならば(ステップS103のNo)、ECC取得部204は、チャンクCHKiに関するECC設定処理を終了する。この場合、ECC取得部204は、次のチャンクに関するECC設定処理を開始する。   If the target duplication management record cannot be searched (No in step S103), the ECC acquisition unit 204 ends the ECC setting process for the chunk CHKi. In this case, the ECC acquisition unit 204 starts an ECC setting process for the next chunk.

これに対し、ターゲットの重複管理レコードを探索できたならば(ステップ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 acquisition unit 204 refers to the ECC value in the searched duplication management record (step S104). Then, the ECC acquisition unit 204 determines whether the referenced ECC value is invalid (step S105). In this embodiment, this determination is performed based on whether the referenced ECC value is cleared.

もし、参照された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 acquisition unit 204 has already acquired and set the ECC value related to the chunk CHKi. If so, the ECC setting process is terminated.

これに対して、参照された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 acquisition unit 204 executes an ECC acquisition process (step S106) for acquiring an ECC value related to the chunk CHKi. In this ECC acquisition process (step S106), the ECC acquisition unit 204 acquires ECCs (for example, n ECCs) in all sectors constituting the chunk CHKi, as will be described later.

次にECC取得部204は、取得されたn個のECCを例えば結合し(ステップS107)、結合されたECC(つまり、ECC列)をECCjとして設定する(ステップS108)。そしてECC取得部204は、探索された重複管理レコード中のECC値(無効なECC値)を、ECCj(有効なECC値)に更新する(ステップS109)。するとECC取得部204は、チャンクCHKiに関するECC設定処理を終了する。   Next, the ECC acquisition unit 204 combines the acquired n ECCs, for example (step S107), and sets the combined ECC (that is, the ECC string) as ECCj (step S108). Then, the ECC acquisition unit 204 updates the ECC value (invalid ECC value) in the searched duplicate management record to ECCj (valid ECC value) (step S109). Then, the ECC acquisition unit 204 ends the ECC setting process related to the chunk CHKi.

次に、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 storage controller 12 of the storage apparatus 10 that reads only the ECC in the sector. This command for requesting the storage controller 12 to read only the ECC is called an ECC read command.

ストレージ装置10とホスト20との間のインタフェースに例えばSCSIが適用される場合、当該インタフェースでは、一般に、セクタ中のデータをリードするためのコマンド(通常のリードコマンド)に加えて、セクタ中のデータと付加情報をまとめてリードするためのリードロングと呼ばれるコマンド(リードロングコマンド)が用意されている。第1の方法は、このリードロングコマンドを利用する。   When, for example, SCSI is applied to an interface between the storage apparatus 10 and the host 20, in this interface, in general, in addition to a command (normal read command) for reading data in the sector, data in the sector And a command called read long (read long command) for reading the additional information together. The first method uses this read long command.

以下、図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 acquisition unit 204 sets the physical address ADRj acquired in step S101 of FIG. 6 as a read address ADRr used in the ECC acquisition process (step S201). Next, the ECC acquisition unit 204 issues a read long command including the read address ADRr to the storage controller 12 of the storage apparatus 10 (step S202).

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 acquisition unit 204 uses the read long command including the read address ADRr to start chunking from the physical position in the storage 11 of the storage apparatus 10 specified by the read address ADRr. The data and additional information of the head sector of the n sector groups corresponding to CHKi are read together. The ECC acquisition unit 204 stores the read data and additional information in the memory 22 (step S203).

次にECC取得部204は、チャンクCHKi内の全セクタのリードが完了したかを判定する(ステップS204)。もし、ステップS204の判定がNoであるならば、ECC取得部204は、リードアドレスADRrがチャンクCHKiの次のセクタの物理位置を指し示すように、当該リードアドレスADRrを更新(例えばインクリメント)する(ステップS205)。するとECC取得部204は、ステップS202に戻り、インクリメントされたリードアドレスADRrを含むリードロングコマンドを用いて、チャンクCHKiの次のセクタのデータ及び付加情報をまとめてリードする。そしてECC取得部204は、リードされたデータ及び付加情報をメモリ22に格納する(ステップS203)。   Next, the ECC acquisition unit 204 determines whether reading of all sectors in the chunk CHKi has been completed (step S204). If the determination in step S204 is No, the ECC acquisition unit 204 updates (eg, increments) the read address ADRr so that the read address ADRr points to the physical position of the next sector of the chunk CHKi (step S204). S205). Then, the ECC acquisition unit 204 returns to step S202, and reads the data and additional information of the sector next to the chunk CHKi using a read long command including the incremented read address ADRr. The ECC acquisition unit 204 stores the read data and additional information in the memory 22 (step S203).

以下同様に、ECC取得部204は、S205及びS202乃至S204を繰り返す。これにより、チャンクCHKi内の全セクタのリードが完了したものとする(ステップS204のYes)。このときメモリ22には、チャンクCHKiの全セクタ中のデータ及び付加情報が格納されている。そこでECC取得部204は、チャンクCHKiの全セクタ中の付加情報からECC群を取得する(ステップS206)。これによりECC取得部204は、チャンクCHKiに関するECC取得処理(ステップS106)を終了する。   Similarly, the ECC acquisition unit 204 repeats S205 and S202 to S204. As a result, it is assumed that the reading of all sectors in the chunk CHKi has been completed (Yes in step S204). At this time, the memory 22 stores data and additional information in all sectors of the chunk CHKi. Therefore, the ECC acquisition unit 204 acquires an ECC group from the additional information in all sectors of the chunk CHKi (step S206). Thereby, the ECC acquisition unit 204 ends the ECC acquisition process (step S106) regarding the chunk CHKi.

<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 acquisition unit 204 sets the physical address ADRj acquired in step S101 of FIG. 6 as a read address ADRr used in the ECC acquisition process (step S211). Next, the ECC acquisition unit 204 issues an ECC read command including the read address ADRr to the storage controller 12 of the storage apparatus 10 (step S212).

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 acquisition unit 204 is stored in a physical location in the storage 11 of the storage apparatus 10 specified by the read address ADRr using an ECC read command including the read address ADRr. Only ECC is read from the head sector of the chunk CHKi. The ECC acquisition unit 204 stores the read ECC in the memory 22 (step 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)。   Next, the ECC acquisition unit 204 determines whether or not ECC reading from all sectors in the chunk CHKi has been completed (step S214). If the determination in step S214 is No, the ECC acquisition unit 204 updates (eg, increments) the read address ADRr so that the read address ADRr points to the physical position of the next sector of the chunk CHKi (step S214). S215). Then, the ECC acquisition unit 204 returns to step S212, and reads the ECC in the sector next to the chunk CHKi by using an ECC read command including the incremented read address ADRr. The ECC acquisition unit 204 stores the read ECC in the memory 22 (step S213).

以下同様に、ECC取得部204は、S215及びS212乃至S214を繰り返す。これにより、チャンクCHKi内の全セクタからのECCのリードが完了したものとする(ステップS214のYes)。このときメモリ22には、チャンクCHKiの全セクタからリードされたECC群が格納されている。そこでECC取得部204は、メモリ22からこのECC群を取得する(ステップS216)。これによりECC取得部204は、チャンクCHKiに関するECC取得処理(ステップS106)を終了する。   Similarly, the ECC acquisition unit 204 repeats S215 and S212 to S214. Thereby, it is assumed that the ECC read from all the sectors in the chunk CHKi is completed (Yes in step S214). At this time, the ECC 22 read from all sectors of the chunk CHKi is stored in the memory 22. Therefore, the ECC acquisition unit 204 acquires the ECC group from the memory 22 (step S216). Thereby, the ECC acquisition unit 204 ends the ECC acquisition process (step S106) regarding the chunk CHKi.

なお、チャンクを単位に、チャンクを構成する全セクタからデータと付加情報をまとめてリードするためのインタフェースを、ストレージコントローラ12に用意しても構わない。同様に、チャンクを単位に、チャンクを構成する全セクタからECCのみを取り出すためのインタフェースを、ストレージコントローラ12に用意しても構わない。   Note that an interface may be provided in the storage controller 12 for reading data and additional information collectively from all sectors constituting the chunk in units of chunks. Similarly, the storage controller 12 may be provided with an interface for extracting only the ECC from all sectors constituting the chunk in units of chunks.

ところで、ストレージ11が例えばRAID(ディスクアレイ)により構成されている場合、ECC取得部204は、リードロングコマンドを用いてECCを含む付加情報を当該ストレージ11から直接リードすることはできない。このような場合に第1の方法(つまり、セクタ中のデータと付加情報をまとめてリードする方法)を適用するためには、ストレージコントローラ12(つまり、RAIDコントローラとして機能するストレージコントローラ12)に、リードロングコマンドと同等のインタフェースを用意すれば良い。一方、第2の方法(つまり、セクタ中のECCのみをリードする方法)を適用するためには、ストレージコントローラ12に、ストレージ11からリードされたデータからECCのみを取り出す機能を用意すれば良い。   Incidentally, when the storage 11 is configured by, for example, RAID (disk array), the ECC acquisition unit 204 cannot directly read additional information including ECC using the read long command. In such a case, in order to apply the first method (that is, a method of reading data and additional information in a sector collectively), the storage controller 12 (that is, the storage controller 12 functioning as a RAID controller) is used. An interface equivalent to the read long command may be prepared. On the other hand, in order to apply the second method (that is, a method of reading only the ECC in the sector), the storage controller 12 may be provided with a function of extracting only the ECC from the data read from the storage 11.

上述の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 acquisition unit 204 combines the ECC groups acquired from all sectors of the chunk CHKi (step S107), and combines the combined ECC groups in the duplicate management record including the physical address ADRj of the chunk CHKi. The ECC value is used (steps S108 and S109). However, the ECC acquisition unit 204 may calculate a hash value of the combined ECC group using a hash function such as SHA1, and use this hash value as the ECC value.

ハッシュ値を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 duplicate elimination controller 205 in this embodiment will be described with reference to FIG. FIG. 9 is a flowchart showing a typical procedure of duplicate chunk search processing. The duplicate chunk search process is executed, for example, asynchronously with the ECC setting process, when the load on the CPU 24 of the host 20 is lower than a certain level, or when a scheduled time arrives. However, the duplicate chunk search process may be executed when the ECC setting process is executed for all the chunks.

重複排除コントローラ205は、チャンク単位に実行される重複チャンク探索処理のために、アドレステーブル202を先頭エントリから順に参照する。この例では、重複チャンク探索処理の先頭で、重複排除コントローラ205が、アドレステーブル202内のi番目のエントリを参照したものとする(ステップS301)。このi番目のエントリには、チャンクCHKiの論理アドレスLBAiを含むアドレスレコードが格納されている。したがって、ステップS301は、重複排除コントローラ205がチャンクCHKiを選択することと等価である。つまり、ステップS301において重複排除コントローラ205は、重複判定対象としてチャンクCHKiを選択する。   The deduplication controller 205 refers to the address table 202 in order from the first entry for the duplicate chunk search process executed in units of chunks. In this example, it is assumed that the deduplication controller 205 refers to the i-th entry in the address table 202 at the beginning of the duplicate chunk search process (step S301). This i-th entry stores an address record including the logical address LBAi of the chunk CHKi. Therefore, step S301 is equivalent to the deduplication controller 205 selecting the chunk CHKi. That is, in step S301, the deduplication controller 205 selects the chunk CHKi as a duplication determination target.

次に重複排除コントローラ205は、アドレステーブル202内のi番目のエントリから、論理アドレスLBAiと対応付けられている物理アドレスADRj、つまり選択されたチャンクCHKiの物理アドレスADRjを取得する(ステップS302)。そして重複排除コントローラ205は、物理アドレスADRjに基づいて、重複管理テーブル201から物理アドレスADRjに対応付けられたECC値ECCjを取得する(ステップS303)。即ち重複排除コントローラ205は、重複管理テーブル201に格納されている、物理アドレスADRjを含む重複管理レコードから、ECC値ECCjを取得する。   Next, the deduplication controller 205 acquires the physical address ADRj associated with the logical address LBAi, that is, the physical address ADRj of the selected chunk CHKi, from the i-th entry in the address table 202 (step S302). Then, the deduplication controller 205 acquires the ECC value ECCj associated with the physical address ADRj from the duplication management table 201 based on the physical address ADRj (step S303). That is, the deduplication controller 205 acquires the ECC value ECCj from the duplication management record including the physical address ADRj stored in the duplication management table 201.

次に重複排除コントローラ205は、ECCjと同じECC値を持つ他の重複管理レコード(ターゲットの重複管理レコード)を、重複管理テーブル201から探索する(ステップS304)。そしてECC取得部204は、ターゲットの重複管理レコードを探索できたかを判定する(ステップS305)。   Next, the deduplication controller 205 searches the duplication management table 201 for another duplication management record (target duplication management record) having the same ECC value as ECCj (step S304). The ECC acquisition unit 204 determines whether the target duplication management record has been searched (step S305).

もし、ターゲットの重複管理レコードを探索できなかったならば(ステップS305のNo)、重複排除コントローラ205は、チャンクCHKiのデータと同一内容のデータを持つ他のチャンクは存在しないものと判断して、チャンクCHKiに関する重複チャンク探索処理を終了する。この場合、重複排除コントローラ205は、次のチャンクに関する重複チャンク探索処理を開始する。   If the target duplication management record cannot be searched (No in step S305), the deduplication controller 205 determines that there is no other chunk having the same content data as the chunk CHKi data. The duplicate chunk search process for the chunk CHKi is terminated. In this case, the deduplication controller 205 starts a duplicate chunk search process for the next chunk.

これに対し、ターゲットの重複管理レコードを探索できたならば(ステップ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 deduplication controller 205 determines that the chunk corresponding to the searched duplication management record (hereinafter referred to as chunk CHKx) is the chunk CHKi. It is determined that there is a possibility of having the same data as the data of. Therefore, the deduplication controller 205 executes steps S306 to S309 as follows in order to confirm the presence or absence of data duplication.

まず重複排除コントローラ205は、探索された重複管理レコード中の物理アドレスADRyを取得する(ステップS306)。そして重複排除コントローラ205は、物理アドレスADRj及びADRyに基づいて、チャンクCHKi及びCHKxのデータを、ストレージ装置10からリードする(ステップS307)。即ち重複排除コントローラ205は、物理アドレスADRjを含むリードコマンドをストレージコントローラ12に発行することにより、当該物理アドレスADRjで指定されるストレージ11の記憶領域に格納されているチャンクCHKiのデータをリードする。同様に重複排除コントローラ205は、物理アドレスADRyを含むリードコマンドをストレージコントローラ12に発行することにより、当該物理アドレスADRyで指定されるストレージ11の記憶領域に格納されているチャンクCHKxのデータをリードする。   First, the deduplication controller 205 acquires the physical address ADRy in the searched duplication management record (step S306). Then, the deduplication controller 205 reads the data of the chunks CHKi and CHKx from the storage device 10 based on the physical addresses ADRj and ADRy (step S307). That is, the deduplication controller 205 issues a read command including the physical address ADRj to the storage controller 12, thereby reading the data of the chunk CHKi stored in the storage area of the storage 11 specified by the physical address ADRj. Similarly, the deduplication controller 205 issues a read command including the physical address ADRy to the storage controller 12, thereby reading the data of the chunk CHKx stored in the storage area of the storage 11 specified by the physical address ADRy. .

次に重複排除コントローラ205は、リードされたチャンクCHKiのデータとリードされたチャンクCHKxのデータとを比較して(ステップS308)、当該両データが一致するかを判定する(ステップS309)。もし、両データが一致しないならば(ステップS309のNo)、重複排除コントローラ205は、チャンクCHKx及びCHKi間でデータが重複していないと判断する。この場合、重複排除コントローラ205はステップS304に戻って、ECCjと同じECC値を持つ新たな重複管理レコードを、重複管理テーブル201から探索する。   Next, the deduplication controller 205 compares the read chunk CHKi data with the read chunk CHKx data (step S308), and determines whether the two data match (step S309). If the two data do not match (No in step S309), the deduplication controller 205 determines that the data does not overlap between the chunks CHKx and CHKi. In this case, the deduplication controller 205 returns to step S304 and searches the duplication management table 201 for a new duplication management record having the same ECC value as ECCj.

これに対し、両データが一致するならば(ステップ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 deduplication controller 205 executes, for example, a duplicate chunk merge process (step S310) for merging the chunk CHKx with the chunk CHKi. Then, the deduplication controller 205 returns to step S304 and searches the duplication management table 201 for a new duplication management record having the same ECC value as the ECCj.

重複排除コントローラ205は、このステップS304から始まる処理を、ECCjと同じECC値を持つ新たな重複管理レコードが探索できなくなるまで(ステップS305のNo)、繰り返す。以下の説明では、チャンクCHKx及びチャンクCHKiを、それぞれ、マージ元(またはマージ元チャンク)及びマージ先(またはマージ先チャンク)と称する。なお、マージ元とマージ先は逆であっても構わない。   The deduplication controller 205 repeats the process starting from step S304 until a new duplicate management record having the same ECC value as ECCj cannot be searched (No in step S305). In the following description, the chunk CHKx and the chunk CHKi are referred to as a merge source (or merge source chunk) and a merge destination (or merge destination chunk), respectively. Note that the merge source and the merge destination may be reversed.

次に、図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 deduplication controller 205 changes the merge-source physical address ADRy to the merge-destination physical address ADRj in the address table 202 (step S401). Next, the deduplication controller 205 stores the reference count in the duplication management record including the physical address ADRj of the merge destination stored in the duplication management table 201, and the reference count in the duplication management record including the physical address ADRy of the merge source. Is incremented by the value (step S402). That is, the deduplication controller 205 allows the reference count value in the duplication management record including the merge-source physical address ADRy to be inherited by the reference count in the duplication management record including the merge-destination physical address ADRj.

次に重複排除コントローラ205は、重複管理テーブル201に格納されている、マージ元の物理アドレスADRyを含む重複管理レコード中の参照カウントを0に設定する(ステップS403)。また、ステップS403において重複排除コントローラ205は、マージ元の物理アドレスADRyを含む重複管理レコード中のECC値を、例えばクリアすることにより無効化する。   Next, the deduplication controller 205 sets the reference count in the duplication management record stored in the duplication management table 201 and including the merging source physical address ADRy to 0 (step S403). In step S403, the deduplication controller 205 invalidates the ECC value in the duplication management record including the merge-source physical address ADRy, for example, by clearing it.

次に重複排除コントローラ205は、マージ元の物理アドレスADRyで指定される、ストレージ装置10内のマージ元のチャンクCHKxのデータ、つまりマージ元チャンクCHKxを構成するn個のセクタのデータを削除する(ステップS404)。これにより、チャンクCHKxは、チャンクCHKiにマージされる。   Next, the deduplication controller 205 deletes the data of the merge source chunk CHKx in the storage apparatus 10 designated by the merge source physical address ADRy, that is, the data of n sectors constituting the merge source chunk CHKx ( Step S404). Thereby, the chunk CHKx is merged with the chunk CHKi.

なお本実施形態では、値が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 deduplication controller 205 does not necessarily have to delete the data of the merge-source chunk CHKx.

次に、上述の重複チャンクマージ処理を含む重複チャンク探索処理の具体例について、図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 deduplication controller 205 acquires the ECC value ECC2 associated with the physical address ADR2 of the chunk CHK1 from the duplication management table 201 (steps S302 and S303). Then, the deduplication controller 205 searches the duplication management table 201 for another duplication management record having the same ECC value as the ECC 2 (step S304).

本実施形態では、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 deduplication controller 205 starts the second duplicate chunk search process and selects the chunk CHK2 (step S301). The logical address LBA2 of the chunk CHK2 is associated with the physical address ADR3 by the address table 202.

重複排除コントローラ205は、重複管理テーブル201から、チャンクCHK2の物理アドレスADR3に対応付けられたECC値ECC3を取得する(ステップS302及びS303)。そして重複排除コントローラ205は、ECC3と同じECC値を持つ他の重複管理レコードを、重複管理テーブル201から探索する(ステップS304)。   The deduplication controller 205 acquires the ECC value ECC3 associated with the physical address ADR3 of the chunk CHK2 from the duplication management table 201 (steps S302 and S303). The deduplication controller 205 searches the duplication management table 201 for another duplication management record having the same ECC value as the ECC 3 (step 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)。   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 deduplication controller 205 reads the data of the chunks CHK2 and CHK3 from the storage device 10 based on the physical address ADR3 of the chunk CHK2 and the physical address ADR1 of the chunk CHK3 (Steps S306 and S307). Then, the deduplication controller 205 compares the data of the chunks CHK2 and CHK3 (step S308).

本実施形態では、チャンク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 deduplication controller 205 executes a duplicate chunk merging process (step S310) for merging the chunk CHK3 with the chunk CHK2. That is, the deduplication controller 205 determines the physical address ADR1 (that is, the physical address ADR1 of the chunk CHK3) associated with the logical address LBA3 of the chunk CHK3 in the address table 202 as indicated by the arrow A2 in FIG. The physical address is changed to ADR3 (step S401).

また重複排除コントローラ205は、重複管理テーブル201において物理アドレスADR3に対応付けられた参照カウント(=2)を、重複管理テーブル201において物理アドレスADR1に対応付けられた参照カウント(=1)だけインクリメントする(ステップS402)。これにより物理アドレスADR3に対応付けられた参照カウントは、図11において矢印A1で示されるように、2から3にインクリメントされる。更に重複排除コントローラ205は、図11において矢印A1で示されるように、重複管理テーブル201において物理アドレスADR1に対応付けられた参照カウントを0に設定し、且つ物理アドレスADR1に対応付けられたECC値を無効化(クリア)する(ステップS402)。   The deduplication controller 205 increments the reference count (= 2) associated with the physical address ADR3 in the duplication management table 201 by the reference count (= 1) associated with the physical address ADR1 in the duplication management table 201. (Step S402). As a result, the reference count associated with the physical address ADR3 is incremented from 2 to 3, as indicated by the arrow A1 in FIG. Further, the deduplication controller 205 sets the reference count associated with the physical address ADR1 in the duplication management table 201 to 0 and the ECC value associated with the physical address ADR1, as indicated by the arrow A1 in FIG. Is invalidated (cleared) (step S402).

上述のように、本実施形態において重複排除コントローラ205は、重複管理レコード中のECC値、つまりストレージ装置10に既に格納されている各チャンクを構成する全セクタ中のECCの列を、重複チャンクの探索(判定)に利用する。このように本実施形態においては、セクタのデータのエラー検出及びエラー訂正のために当該セクタに付されるECCを、データの重複を検出するための指標として利用する。これに対して、従来技術(第1の重複排除技術)では、各チャンクのデータをストレージ装置にライトする際に、当該データのハッシュ値が計算される。そして、このハッシュ値が重複管理レコード中に設定されて、重複チャンクの探索に利用される。また、別の従来技術(第2の重複排除技術)では、ストレージ装置に格納されている全データがリードされて比較される。   As described above, in this embodiment, the deduplication controller 205 determines the ECC value in the duplication management record, that is, the column of ECC in all the sectors constituting each chunk already stored in the storage apparatus 10, as the duplicate chunk. Used for search (determination). As described above, in this embodiment, the ECC attached to the sector for error detection and error correction of the data in the sector is used as an index for detecting data duplication. On the other hand, in the conventional technique (first deduplication technique), when data of each chunk is written to the storage device, a hash value of the data is calculated. This hash value is set in the duplicate management record and used for searching for duplicate chunks. In another conventional technique (second deduplication technique), all data stored in the storage device is read and compared.

本実施形態においては、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 access unit 206 in the present embodiment will be described with reference to FIG. 13, taking as an example the case of writing new data to the chunk CHKs. FIG. 13 is a flowchart showing a typical procedure of write processing. In the present embodiment, the write process is executed in response to a write access request from the access request unit 203.

まずアクセス部206が、アクセス要求部203からのライトアクセス要求に応じて、チャンクCHKsへのデータライトを開始するものとする。この場合、アクセス部206は、チャンクCHKsの論理アドレスLBAsに対応付けられた有効な物理アドレスADRtを含むアドレスレコード(ターゲットのアドレスレコード)を、アドレステーブル202から探索する(ステップS501)。そしてアクセス部206は、ターゲットのアドレスレコードを探索できたかを判定する(ステップS502)。   First, it is assumed that the access unit 206 starts data write to the chunk CHKs in response to a write access request from the access request unit 203. In this case, the access unit 206 searches the address table 202 for an address record (a target address record) including a valid physical address ADRt associated with the logical address LBAs of the chunk CHKs (step S501). The access unit 206 determines whether the target address record has been searched (step S502).

もし、ターゲットのアドレスレコードを探索できたならば(ステップ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 access unit 206 acquires the physical address ADRt from the searched address record (step S503). Then, the access unit 206 searches the duplication management table 201 based on the acquired physical address ADRt, thereby acquiring a reference count in the duplication management record including the acquired physical address ADRt (step S504). Next, the access unit 206 determines whether the acquired reference count is 1 (step S505).

もし、取得された参照カウントが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 access unit 206 has the data of the current chunk CHKs duplicated with the data of one or more other chunks, and thus new data. Is not overwritten on the data (more specifically, duplicate data) of the current chunk CHKs. That is, the access unit 206 needs to write new data to a storage area different from the storage area in which the data of the current chunk CHKs is written (more specifically, the storage area specified by the physical address ADRt). Judge that there is. Obviously, the new data written to the chunk CHKs by the current write processing does not overlap with the data of one or more other chunks described above. Therefore, the access unit 206 decrements the acquired reference count (more specifically, the reference count in the duplicate management record including the acquired physical address ADRt) (step S506), and proceeds to step S507. On the other hand, if the target address record could not be searched (No in step S502), the access unit 206 skips steps S503 to S506 and proceeds to step S507.

ステップS507においてアクセス部206は、新たなデータ(つまり、アクセス要求部203によって要求されたライトデータ)がチャンクCHKsのデータとしてライトされるべき、ストレージ装置10(ストレージ11)内の空き記憶領域(つまり、空きチャンク領域)を確保する(ステップS507)。アクセス部206は、この空きチャンク領域を次のように確保する。まずアクセス部206は、重複管理テーブル201から、値が0の参照カウントを含む重複管理レコードを探索する。そしてアクセス部206は、探索された重複管理レコード中の物理アドレスADRuを、ライト先の空きチャンク領域の物理アドレスとして取得する。これによりアクセス部206は、ライト先の空きチャンク領域を確保する。アクセス部206は、ステップS507を実行すると、ステップS508に進む。   In step S507, the access unit 206 determines that the new data (that is, the write data requested by the access request unit 203) is to be written as the chunk CHKs data in the storage device 10 (storage 11). , An empty chunk area) is secured (step S507). The access unit 206 secures this empty chunk area as follows. First, the access unit 206 searches the duplication management table 201 for duplication management records including a reference count having a value of 0. Then, the access unit 206 acquires the physical address ADRu in the searched duplicate management record as the physical address of the write destination empty chunk area. As a result, the access unit 206 secures a write-destination free chunk area. After executing step S507, the access unit 206 proceeds to step S508.

一方、取得された参照カウントが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 access unit 206 indicates that the data of the current chunk CHKs does not overlap with the data of one or more other chunks, and thus a new It is determined that the current data can be overwritten on the data of the current chunk CHKs. In this case, the new data write destination is a storage area (chunk area) in which the data of the current chunk CHKs is written, and is specified by the physical address ADRt. If the determination in step S505 is Yes, the access unit 206 skips steps S506 and S507 and proceeds to step S508.

ステップS508においてアクセス部206は、ライト先のチャンク領域の物理アドレスを含む重複管理レコード中のECC値をクリアし、且つ当該重複管理レコード中の参照カウントを1に設定する。ここで、ライト先のチャンク領域は、ステップS507を介してステップS508が実行される場合、当該ステップS507で確保された空きチャンク領域であり、当該ライト先のチャンク領域の物理アドレスはADRuである。これに対し、ステップS507をスキップしてステップS508が実行される場合、ライト先のチャンク領域は、現在チャンクCHKsのデータ(旧データ)が格納されているチャンク領域であり、当該ライト先のチャンク領域の物理アドレスはADRtである。   In step S508, the access unit 206 clears the ECC value in the duplication management record including the physical address of the write-destination chunk area, and sets the reference count in the duplication management record to 1. Here, when step S508 is executed via step S507, the write destination chunk area is an empty chunk area secured in step S507, and the physical address of the write destination chunk area is ADRu. On the other hand, when step S507 is skipped and step S508 is executed, the write-destination chunk area is a chunk area in which data (old data) of the current chunk CHKs is stored, and the write-destination chunk area The physical address of ADRt is ADRt.

アクセス部206は、ステップS508を実行すると、アクセス要求部203によって要求されたライトデータを、チャンクCHKsの新たなデータとして、ストレージ装置10(ストレージ11)におけるライト先のチャンク領域にストレージコントローラ12によりライトさせる(ステップS509)。これにより、チャンクCHKsの新データは、n個のセクタに分散してライトされる。n個のセクタの各々にはECCを含む付加情報が付されている。ECCは、n個のセクタに分散してライトされるデータに基づいてストレージコントローラ12によって生成される。   When executing the step S508, the access unit 206 writes the write data requested by the access request unit 203 as new data of the chunk CHKs by the storage controller 12 in the write destination chunk area in the storage device 10 (storage 11). (Step S509). As a result, the new data of the chunk CHKs is distributed and written in n sectors. Additional information including ECC is attached to each of the n sectors. The ECC is generated by the storage controller 12 based on data written in a distributed manner in n sectors.

なお、図2に示される、ECC取得部204、重複排除コントローラ205及びアクセス部206がストレージコントローラ12に設けられても構わない。この場合、重複管理テーブル201及びアドレステーブル202は、ストレージコントローラ12が有するメモリに格納されれば良い。   Note that the ECC acquisition unit 204, the deduplication controller 205, and the access unit 206 shown in FIG. 2 may be provided in the storage controller 12. In this case, the duplication management table 201 and the address table 202 may be stored in a memory included in the storage controller 12.

前記実施形態では、ストレージ装置10は、単一のホスト20と接続されている。しかし、ストレージ装置10が、ホスト20を含む複数のホストと、ホストインタフェースバス30(またはネットワーク)を介して接続されていても良い。この場合、ホスト20以外のホストからのストレージ装置10へのアクセスに関しても、例えば、ホスト20のみが、重複排除のための前記実施形態と同様の処理を行えば良い。また、ホスト20を含む複数のホストが、それぞれ、図2に示される構成を有し、当該複数のホストが重複排除のための前記実施形態と同様の処理を行っても構わない。この場合、複数のホストがそれぞれ重複管理テーブル201及びアドレステーブル202を有し、当該重複管理テーブル201及びアドレステーブル202を複数のホスト間で同期化しても良い。   In the embodiment, the storage apparatus 10 is connected to a single host 20. However, the storage apparatus 10 may be connected to a plurality of hosts including the host 20 via the host interface bus 30 (or network). In this case, for access to the storage apparatus 10 from a host other than the host 20, for example, only the host 20 may perform the same processing as in the above-described embodiment for deduplication. Also, a plurality of hosts including the host 20 may have the configuration shown in FIG. 2, and the plurality of hosts may perform the same processing as in the above-described embodiment for deduplication. In this case, a plurality of hosts may have a duplication management table 201 and an address table 202, respectively, and the duplication management table 201 and the address table 202 may be synchronized among the plurality of hosts.

以上説明した少なくとも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 SYMBOLS 10 ... Storage apparatus, 11 ... Storage, 12 ... Storage controller, 20 ... Host (host computer), 22 ... Memory, 24 ... CPU, 201 ... Duplication management table, 202 ... Address table, 204 ... ECC acquisition part, 205 ... Duplication Exclusion controller (duplication detection unit), 206... Access unit.

Claims (2)

データ及び当該データに基づいて生成される誤り訂正コード(ECC)がセクタを単位に格納されるストレージ装置と、
前記ストレージ装置を利用するホスト計算機とを具備し、
前記ホスト計算機は、
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.
データ及び当該データに基づいて生成される誤り訂正コード(ECC)がセクタを単位に格納されるストレージ装置を利用するホスト計算機におけるデータ重複検出方法であって、
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.
JP2015165787A 2015-08-25 2015-08-25 Storage system and data duplication detection method Active JP6419662B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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
US9342256B2 (en) Epoch based storage management for a storage device
US10956071B2 (en) Container key value store for data storage devices
CN108604165B (en) 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