JP2018185760A - Storage device for eliminating duplication of data - Google Patents

Storage device for eliminating duplication of data Download PDF

Info

Publication number
JP2018185760A
JP2018185760A JP2017088762A JP2017088762A JP2018185760A JP 2018185760 A JP2018185760 A JP 2018185760A JP 2017088762 A JP2017088762 A JP 2017088762A JP 2017088762 A JP2017088762 A JP 2017088762A JP 2018185760 A JP2018185760 A JP 2018185760A
Authority
JP
Japan
Prior art keywords
chunk
data
hash
value
disk array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017088762A
Other languages
Japanese (ja)
Inventor
小林 正樹
Masaki Kobayashi
正樹 小林
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 JP2017088762A priority Critical patent/JP2018185760A/en
Publication of JP2018185760A publication Critical patent/JP2018185760A/en
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

PROBLEM TO BE SOLVED: To provide a storage device capable of holding an entry of a hash table in a data duplication elimination technique in a cache memory of a constant amount, allowing retrieval at a high speed, and preventing the shortage of an amount of the cache memory.SOLUTION: A storage device comprises a volatile memory that divides data designated by a host computer into a plurality of chunk, generates each hush value on the basis of the data of each chunk, and holds a hush table in which an identifier and the hush value of the chunk written into a storage medium are stored in association with each other. When the chunk is written into the storage medium, it is searched whether the hush value matched to the hush value generated on the basis of the data of the chunk has been recorded into the hush table. If the hush value is not recorded, the hush value is written into the hush table. If the hush value has been recorded, the writing of the hush value is suppressed.SELECTED DRAWING: Figure 7

Description

本発明の実施形態は、データの重複を排除するためのストレージ装置に関する。   Embodiments described herein relate generally to a storage apparatus for eliminating data duplication.

近年,情報処理システムで使われるビックデータを格納するためにストレージ装置の大
容量化が進むだけでなく、限られた記憶容量を有効に使用するストレージ装置が求められ
ている。例えば、データを保存する際にデータを一定の大きさに区切り、各々のハッシュ
値を計算し、ハッシュ値を保存しているデータテーブル上に重複する値がある場合は、該
当データを書き込まないという、データ重複排除技術が注目されている。
In recent years, not only has the capacity of a storage device increased to store big data used in an information processing system, but also a storage device that effectively uses a limited storage capacity has been demanded. For example, when storing data, the data is divided into a certain size, each hash value is calculated, and if there are duplicate values on the data table storing the hash value, the corresponding data is not written Data deduplication technology is attracting attention.

特許第5444506号Patent No. 5444506

データ重複排除技術は、その動作原理上、ハッシュテーブル内の検索が必要になる。ハ
ッシュテーブルは、保存データ量の増加に伴い大きくなる。データ重複排除処理速度向上
には、ハッシュテーブルの検索時間を短縮することが重要となる。例えば、ハッシュテー
ブルをメモリ上に配置すれば高速に検索可能だが、データ量増加に伴い必要メモリ量が増
大するため、コストが掛かりデータ量によっては容量が足りなくなってしまう。また、仮
想メモリのようにハッシュテーブルの実体をHDDのような二次記憶装置に持てば、コスト
を抑えられデータ量上限は向上させられるが、検索に時間がかかる。
The data deduplication technique requires a search in a hash table because of its operation principle. The hash table increases as the amount of stored data increases. To improve the data deduplication processing speed, it is important to shorten the hash table search time. For example, if a hash table is arranged on the memory, the search can be performed at high speed. However, since the required memory amount increases as the data amount increases, the cost increases and the capacity becomes insufficient depending on the data amount. Further, if a hash table entity such as a virtual memory is held in a secondary storage device such as an HDD, the cost can be reduced and the upper limit of the data amount can be improved, but the search takes time.

実施形態のストレージ装置は、ホストコンピュータに指定されたデータを複数のチャン
クに分割するチャンク分割部と、前記複数のチャンクの各々のデータに基づいて各々のハ
ッシュ値を生成するハッシュ生成部と、記録媒体に書き込まれているチャンクの識別子と
そのチャンクのハッシュ値とが対応付けられて記憶されているハッシュテーブルを保持す
る揮発性メモリと、前記記録媒体に第一のチャンクを書き込むときに、第一のチャンクの
データに基づいて前記ハッシュ生成部で生成されたハッシュ値と一致するハッシュ値が、
既に前記ハッシュテーブルに記録されているか否かを探索し、一致するハッシュが記録さ
れていない場合には第一のチャンクを書き込み、一致するハッシュが記録されている場合
には書き込みを抑止する制御部と、を備える。
The storage apparatus according to the embodiment includes a chunk dividing unit that divides data designated by the host computer into a plurality of chunks, a hash generation unit that generates each hash value based on the data of each of the plurality of chunks, and a recording A volatile memory that holds a hash table in which identifiers of chunks written on the medium and hash values of the chunks are stored in association with each other, and when the first chunk is written to the recording medium, Hash value that matches the hash value generated by the hash generation unit based on the chunk data,
A control unit that searches whether or not a hash is already recorded in the hash table, writes a first chunk if no matching hash is recorded, and suppresses writing if a matching hash is recorded And comprising.

実施形態に係るストレージシステムのブロック図。1 is a block diagram of a storage system according to an embodiment. ディスクアレイ制御装置の機能構成を示すブロック図。The block diagram which shows the function structure of a disk array control apparatus. ホストコンピュータの書き込み要求で指定されたデータとチャンクとの関係の一例を示す図。The figure which shows an example of the relationship between the data designated by the write request of a host computer, and a chunk. ハッシュテーブルのデータ構造例を示す図。The figure which shows the data structure example of a hash table. メタテーブルのデータ構造例を示す図。The figure which shows the data structure example of a metatable. チャンクテーブルのデータ構造例を示す図。The figure which shows the data structure example of a chunk table. ディスクアレイ制御装置がデータ書き込み要求を受信した場合に実行されるデータ書き込み処理の手順を示す図。The figure which shows the procedure of the data write process performed when a disk array control apparatus receives a data write request. ディスクアレイ制御装置がデータ読み込み要求を受信した場合に実行されるデータ書き込み処理の手順を示す図。The figure which shows the procedure of the data write process performed when a disk array control apparatus receives a data read request. ハッシュテーブルのエントリをソートするためのエージング周期処理の手順を示す図。The figure which shows the procedure of the aging period process for sorting the entry of a hash table.

以下、発明を実施するための実施形態について説明する。   Hereinafter, embodiments for carrying out the invention will be described.

図1は、実施形態に係るストレージシステムのブロック図を示す。本実施形態のストレ
ージシステムは、ホストコンピュータ100(以下、ホスト100と称する)とストレー
ジ装置200を備える。ストレージ装置200は、ネットワーク110を介してホスト1
00と接続されている。
FIG. 1 is a block diagram of a storage system according to the embodiment. The storage system of this embodiment includes a host computer 100 (hereinafter referred to as host 100) and a storage apparatus 200. The storage apparatus 200 is connected to the host 1 via the network 110.
00 is connected.

ホスト100は、サーバあるいはクライアントPCのような物理計算機である。ホスト1
00内では、ストレージ装置200のデータにアクセスするためのアプリケーションプロ
グラムが動作する。ホスト100は、このアプリケーションプログラムに従い、ストレー
ジ装置200を外部記憶装置としてネットワーク110を介して利用する。ネットワーク
の種類は、SAN(Storage Area Network)、あるいはEthernet(登録商標)等である。
The host 100 is a physical computer such as a server or a client PC. Host 1
In 00, an application program for accessing data in the storage apparatus 200 operates. The host 100 uses the storage device 200 as an external storage device via the network 110 according to the application program. The type of network is SAN (Storage Area Network) or Ethernet (registered trademark).

ストレージ装置200は、ディスクアレイ制御装置210およびRAIDディスクアレイ2
30を備える。
The storage device 200 includes a disk array control device 210 and a RAID disk array 2
30.

ディスクアレイ制御装置210は、RAIDディスクアレイ230と、ディスクインタフェ
ースバス220を介して接続されている。ディスクインタフェースバス220のインタフ
ェース種別は、SCSI、あるいはFC、あるいはSAS(Serial Attached SCSI)、あるいはSAT
A(Serial AT Attachment)等である。
The disk array control device 210 is connected to the RAID disk array 230 via the disk interface bus 220. The interface type of the disk interface bus 220 is SCSI, FC, SAS (Serial Attached SCSI), or SAT.
A (Serial AT Attachment).

ディスクアレイ制御装置210は、ホストインタフェース(ホストI/F)211と、
ディスクインタフェース(ディスクI/F)212と、キャッシュメモリ213と、キャ
ッシュコントローラ214と、FROM215と、ローカルメモリ216と、CPU21
7と、チップセット218と、内部バス219とを備える。
The disk array controller 210 includes a host interface (host I / F) 211,
Disk interface (disk I / F) 212, cache memory 213, cache controller 214, FROM 215, local memory 216, and CPU 21
7, a chip set 218, and an internal bus 219.

ディスクアレイ制御装置210は、ストレージ装置200を外部記憶装置として利用す
るホスト100と、ネットワーク110を経由し、ホストI/F211を介して接続され
る。ホストI/F211のインタフェース種別はFC(Fibre Channnel)、あるいはiSCSI
(internet SCSI)などである。
The disk array control device 210 is connected to the host 100 that uses the storage device 200 as an external storage device via the network 110 via the host I / F 211. The interface type of the host I / F 211 is FC (Fibre Channel) or iSCSI
(Internet SCSI).

ホストI/F211は、ホスト100との間のデータ転送(データ転送プロトコル)を
制御する。
The host I / F 211 controls data transfer (data transfer protocol) with the host 100.

ディスクI/F212は、ホスト100からRAIDディスクアレイ230のドライブへの
データライト/リード要求とその応答を送受信するためのインタフェースである。また、
キャッシュコントローラ214は、キャッシュメモリ213へのデータライト/リード要
求を行う。
The disk I / F 212 is an interface for transmitting / receiving a data write / read request and a response to the drive of the RAID disk array 230 from the host 100. Also,
The cache controller 214 makes a data write / read request to the cache memory 213.

キャッシュメモリ213は、ホスト100からのライト/リード要求に対するキャッシ
ュとして用いられる。本実施形態では、主に図2に示すハッシュテーブル213aを格納
する。なお、キャッシュメモリ213はミラーリング等の冗長化が成されている構成でも
良い。
The cache memory 213 is used as a cache for a write / read request from the host 100. In this embodiment, the hash table 213a shown mainly in FIG. 2 is stored. Note that the cache memory 213 may be configured to have redundancy such as mirroring.

キャッシュコントローラ214は、CPU217上で動作するディスクアレイ制御プロ
グラムからの命令に従いキャッシュメモリ213へのデータのリード/ライト処理を実施
する。ず
The cache controller 214 performs data read / write processing to the cache memory 213 in accordance with instructions from the disk array control program operating on the CPU 217. Z

FROM215は、CPU217により実行されるディスクアレイ制御プログラムを格
納するための書き換えが可能な不揮発性メモリである。本実施形態では、ディスク制御装
置が起動されたときの最初の処理でFROM215に格納されているディスクアレイ制御
プログラムを、ローカルメモリ216にコピーする。
The FROM 215 is a rewritable nonvolatile memory for storing a disk array control program executed by the CPU 217. In this embodiment, the disk array control program stored in the FROM 215 is copied to the local memory 216 in the first process when the disk control device is activated.

ローカルメモリ216は、FROM215からコピーされたディスクアレイ制御プログ
ラムを記憶するのに用いられるほか、ローカルメモリ216の一部の領域は、CPU21
7が動作する上で使用するワーク領域として用いられる。
The local memory 216 is used to store a disk array control program copied from the FROM 215. In addition, a part of the local memory 216 is stored in the CPU 21.
7 is used as a work area used for operation.

CPU217は、ローカルメモリ216に格納されたディスクアレイ装置制御プログラム
のプログラムコードに従い、ディスクアレイ制御装置210内の各部を制御する。また、
CPU217は、チップセット218を介し、ローカルメモリ216上に格納されている
ディスクアレイ制御プログラムが動作し、ディスクアレイ制御装置210全体の制御を行
う。
The CPU 217 controls each unit in the disk array control device 210 according to the program code of the disk array device control program stored in the local memory 216. Also,
The CPU 217 operates the disk array control program stored on the local memory 216 via the chip set 218 to control the entire disk array control apparatus 210.

チップセット218は、CPU217及びその周辺回路を内部バス219に結合するブ
リッジ回路である。
The chip set 218 is a bridge circuit that couples the CPU 217 and its peripheral circuits to the internal bus 219.

内部バス219は汎用バスであり、例えばPCI-expressバスである。ホストI/F21
1、ディスクI/F212、キャッシュコントローラ214及びチップセット218は、
内部バス219により相互接続されている。また、FROM215、ローカルメモリ21
6、CPU217は、チップセット218を介して内部バス219に接続されている。
The internal bus 219 is a general-purpose bus, for example, a PCI-express bus. Host I / F21
1, disk I / F 212, cache controller 214 and chipset 218
Interconnected by an internal bus 219. Also, FROM 215, local memory 21
6. The CPU 217 is connected to the internal bus 219 via the chipset 218.

RAIDディスクアレイ230は、複数のハードディスクドライブ(HDD)を用いて構成され
る。RAIDディスクアレイ230に代えて、例えば複数のHDDおよび複数のSSD(ソリッドス
テートドライブ)を用いて構成されるRAIDアレイや複数のSSDのみを用いて構成されるRAI
Dアレイを適用しても構わない。また、RAID構成を持たない単なる複数のストレージドラ
イブの集合(ドライブアレイ)を適用しても構わない。また、RAIDディスクアレイ230
は、ディスクアレイ制御プログラムによって管理される。以降のRAIDディスクアレイ23
0を使用した機能についても、ディスクアレイ制御プログラムによって制御する。さらに
本実施形態において、RAIDディスクアレイ230は、図2に示すメタテーブル230aお
よびチャンクテーブル230bを格納する。なお、RAIDディスクアレイ230に代えて、
フラッシュメモリ等を用いることも可能である。
The RAID disk array 230 is configured using a plurality of hard disk drives (HDD). Instead of the RAID disk array 230, for example, a RAID array configured using a plurality of HDDs and a plurality of SSDs (solid state drives) or a RAI configured using only a plurality of SSDs
A D array may be applied. Also, a simple set of storage drives (drive array) having no RAID configuration may be applied. RAID disk array 230
Are managed by a disk array control program. Subsequent RAID disk array 23
Functions using 0 are also controlled by the disk array control program. Further, in the present embodiment, the RAID disk array 230 stores the meta table 230a and the chunk table 230b shown in FIG. Instead of the RAID disk array 230,
A flash memory or the like can also be used.

本実施形態においてディスクアレイ制御装置210は、RAIDディスクアレイ230を含
むストレージ装置に備えられている。しかし、ディスクアレイ制御装置210が、ストレ
ージ装置200から独立して備えられていても構わない。この場合、ディスクアレイ制御
装置210が、ホスト100に内蔵されていても構わない。また、ディスクアレイ制御装
置210の機能が、ホスト100の有するオペレーティングシステム(OS)の機能の一
部を用いて実現されても構わない。
In this embodiment, the disk array control device 210 is provided in a storage device including the RAID disk array 230. However, the disk array control device 210 may be provided independently of the storage device 200. In this case, the disk array control device 210 may be built in the host 100. Further, the function of the disk array control device 210 may be realized by using a part of the function of the operating system (OS) that the host 100 has.

また、ディスクアレイ制御装置210が、ホスト100のカードスロットに装着して用
いられるカードに備えられていても構わない。また、ディスクアレイ制御装置210の一
部がホスト100に内蔵され、当該ディスクアレイ制御装置210の残りが前記カードに
備えられていても構わない。
Further, the disk array control device 210 may be provided in a card that is used by being installed in a card slot of the host 100. Further, a part of the disk array control device 210 may be built in the host 100, and the rest of the disk array control device 210 may be provided in the card.

図2は、図1に示されるディスクアレイ制御装置210の機能構成を示すブロック図で
ある。ディスクアレイ制御装置210は、分割部300、重複管理部301、重複判定部
302、ハッシュ生成部303、アクセスコントローラ304を備えている。分割部30
0、重複管理部301、重複判定部302、ハッシュ生成部303の機能については後述
する。アクセスコントローラ304は、RAIDディスクアレイ230に対するデータの読み
出し、書き込みを制御する。これらの機能要素300ないし304は、図1に示されるデ
ィスクアレイ制御装置のCPU217が制御プログラムを実行することにより実現される
ソフトウェアモジュールである。機能要素300ないし304の一部または全部がハード
ウェアモジュールによって実現されても構わない。
FIG. 2 is a block diagram showing a functional configuration of the disk array control apparatus 210 shown in FIG. The disk array control apparatus 210 includes a dividing unit 300, a duplication management unit 301, a duplication determination unit 302, a hash generation unit 303, and an access controller 304. Dividing unit 30
The functions of 0, the duplication management unit 301, the duplication determination unit 302, and the hash generation unit 303 will be described later. The access controller 304 controls reading and writing of data with respect to the RAID disk array 230. These functional elements 300 to 304 are software modules realized by the CPU 217 of the disk array control apparatus shown in FIG. 1 executing a control program. A part or all of the functional elements 300 to 304 may be realized by a hardware module.

ローカルメモリ216は、制御プログラム領域216a、テーブル領域216b、ワーク
領域216cを含む。制御プログラム領域216aは、CPU217によって実行される
制御プログラムの少なくとも一部を格納するのに用いられる。この制御プログラムは、前
述したようにFROM215に予め格納されており、当該制御プログラムの少なくとも一部は
、ディスクアレイ制御装置210の起動時に当該FROM215からローカルメモリ216の
制御プログラム領域216aにロードされる。
The local memory 216 includes a control program area 216a, a table area 216b, and a work area 216c. The control program area 216a is used to store at least a part of a control program executed by the CPU 217. As described above, this control program is stored in advance in the FROM 215, and at least a part of the control program is loaded from the FROM 215 to the control program area 216a of the local memory 216 when the disk array control device 210 is activated.

テーブル領域216bは、ディスクアレイ制御装置210格納されている各種のテーブ
ルの少なくとも一部を格納するのに用いられる。ワーク領域216cは、CPU217が
制御プログラムを実行する際に利用される一時的なデータを格納するのに用いられる。
The table area 216b is used to store at least a part of various tables stored in the disk array control device 210. The work area 216c is used to store temporary data used when the CPU 217 executes the control program.

RAIDディスクアレイ230は、メタテーブル230a、チャンクテーブルb(詳細は後述
する)を格納する。つまりRAIDディスクアレイ230は、メタテーブル230a、チャン
クテーブル230bがそれぞれ格納される記憶領域を含む。
The RAID disk array 230 stores a meta table 230a and a chunk table b (details will be described later). That is, the RAID disk array 230 includes storage areas for storing the meta table 230a and the chunk table 230b, respectively.

キャッシュメモリ213は、ハッシュテーブル213a(詳細は後述する)を格納する
。つまりキャッシュメモリ213は、ハッシュテーブル213aが格納される記憶領域を
含む。ハッシュテーブル213aの記憶容量は固定長であるものとする。
The cache memory 213 stores a hash table 213a (details will be described later). That is, the cache memory 213 includes a storage area in which the hash table 213a is stored. The storage capacity of the hash table 213a is assumed to be a fixed length.

一般的なストレージシステムでは、論理ボリュームに最初に割り当てられた記憶容量(
例えば、最小の単位の記憶容量)で運用が開始される。論理ボリュームとは、ホストによ
って論理的なストレージドライブとして認識される記憶領域を指す。論理ボリュームには
、例えば4K(キロ)バイト毎にRAIDディスクアレイ230の記憶領域(物理領域)が適
宜割り当てられる。この種のストレージシステムは、運用開始後の状況に応じて、論理ボ
リュームの記憶容量をフレキシブルに増加させる機能を有する。本実施形態におけるスト
レージシステムも同様である。
In a typical storage system, the storage capacity initially assigned to the logical volume (
For example, the operation starts with a minimum unit storage capacity. A logical volume refers to a storage area that is recognized by a host as a logical storage drive. For example, a storage area (physical area) of the RAID disk array 230 is appropriately assigned to the logical volume every 4K (kilo) bytes. This type of storage system has a function of flexibly increasing the storage capacity of the logical volume according to the situation after the start of operation. The same applies to the storage system in this embodiment.

図3は、ホスト100からの書き込み要求で指定されたデータとチャンクとの関係の例
を示す。分割部300は、まず、図3に示されるデータを、固定長、例えば4キロバイト
(4Kバイト)のデータの塊に分割する。この4Kバイト毎のデータの塊をチャンクと呼
ぶ。重複管理部301および重複判定部302は、チャンク毎に重複の有無を検索し、管
理する。図3の例では、データFのサイズは4NKバイトである。この場合、データFは
、N個のチャンク#0ないし#N−1に分割される。重複管理部301は、チャンク#0
ないし#N−1にユニークな識別番号であるチャンク番号を付与する。本実施形態におい
て、チャンク番号は8バイトで表される。
FIG. 3 shows an example of the relationship between the data specified by the write request from the host 100 and the chunk. The dividing unit 300 first divides the data shown in FIG. 3 into data chunks having a fixed length, for example, 4 kilobytes (4 Kbytes). A chunk of data every 4 Kbytes is called a chunk. The duplication management unit 301 and the duplication determination unit 302 search for and manage duplication for each chunk. In the example of FIG. 3, the size of the data F is 4NK bytes. In this case, the data F is divided into N chunks # 0 to # N-1. Duplicate management unit 301 uses chunk # 0.
Also, a chunk number that is a unique identification number is assigned to # N-1. In the present embodiment, the chunk number is represented by 8 bytes.

ここで、本実施形態で適用されるデータライト時の重複排除の概要について説明する。
まず、ホスト100からストレージ装置200のディスクアレイ制御装置210に、チャ
ンクAを含むデータの書き込みが要求されたことを想定する。また、チャンクAのハッシ
ュ値がH(A)であるものとする。重複判定部302は、チャンクAのハッシュ値H(A
)をハッシュテーブルに登録されているハッシュ値と順次比較する。この比較の結果に基
づいて、重複判定部302は、RAIDディスクアレイ230にチャンクAと同一内容を持つ
チャンク(以下、チャンクAと称する)が格納されているかを判定する。
Here, an outline of deduplication at the time of data writing applied in the present embodiment will be described.
First, it is assumed that the host 100 requests the disk array control apparatus 210 of the storage apparatus 200 to write data including chunk A. Further, it is assumed that the hash value of chunk A is H (A). The duplication judgment unit 302 uses the hash value H (A
) Are sequentially compared with the hash values registered in the hash table. Based on the comparison result, the duplication determination unit 302 determines whether a chunk having the same contents as the chunk A (hereinafter referred to as chunk A) is stored in the RAID disk array 230.

まず、図4を用いてキャッシュメモリ213に格納されるハッシュテーブル213aに
ついて説明する。ハッシュテーブルは、チャンク番号に対応付けられたエントリの集合を
有する。ハッシュテーブルの各エントリは、そのエントリに登録されたチャンク番号が付
与されたチャンクに関するハッシュ値、参照ビット、ヒットカウンタから構成される。
First, the hash table 213a stored in the cache memory 213 will be described with reference to FIG. The hash table has a set of entries associated with chunk numbers. Each entry in the hash table includes a hash value, a reference bit, and a hit counter related to the chunk to which the chunk number registered in the entry is assigned.

ハッシュ値は、前述した通り、対応付けられたチャンク番号が付与されたチャンクのデ
ータに基づいて、所定のハッシュ関数を用いて計算した値である。参照ビットは、後述す
るエージング周期処理の周期期間内において、対応付けられたチャンク番号が示すチャン
クがアクセスされた際にビット”1”が設定されるもので、対応付けられたチャンクがア
クセスされたことを示すフラグ情報である。参照ビットは、後述するエージング周期処理
が終了した後にビット”0”が設定されてフラグ情報がクリアされる。ヒットカウンタは
、後述するエージング周期処理の際に、ハッシュエントリの優先順位を決定するために用
いられる。ハッシュテーブル213aは、RAIDディスクアレイ230に書き込まれるべき
チャンクと同一内容を持つチャンクが、既に書き込まれているかを重複判定部302が判
定するのに用いられる。
As described above, the hash value is a value calculated using a predetermined hash function based on the data of the chunk to which the associated chunk number is assigned. The reference bit is set to bit “1” when the chunk indicated by the associated chunk number is accessed within the period of the aging cycle process described later, and the associated chunk has been accessed. This is flag information indicating this. The reference bit is set to bit “0” after the aging cycle process described later is completed, and the flag information is cleared. The hit counter is used to determine the priority order of hash entries during the aging cycle process described later. The hash table 213a is used by the duplication determination unit 302 to determine whether a chunk having the same content as the chunk to be written to the RAID disk array 230 has already been written.

もし、ハッシュテーブル213aにハッシュ値H(A)に一致するハッシュ値(つまり
、ハッシュ値H(A))が登録されているならば、重複判定部302は、RAIDディスクア
レイ230にチャンクAが格納されていると判定する。つまり重複判定部302は、チャ
ンクAが重複すると判定する。一方、ハッシュテーブル213aにハッシュ値H(A)が
登録されていないならば、重複判定部302は、チャンクAが重複しないと判定する。
If a hash value that matches the hash value H (A) (that is, the hash value H (A)) is registered in the hash table 213a, the duplication determination unit 302 stores the chunk A in the RAID disk array 230. It is determined that That is, the duplication determination unit 302 determines that the chunk A is duplicated. On the other hand, if the hash value H (A) is not registered in the hash table 213a, the duplication determination unit 302 determines that the chunk A does not overlap.

チャンクAが重複しないと判定された場合、アクセスコントローラ304は、書き込み
要求によって指定された論理アドレスに割り当てられる物理アドレスの示す物理領域に、
チャンクAを書き込む指示を出す。このとき重複管理部301は、ハッシュ値H(A)と
チャンクAのチャンク番号との対を含むハッシュ情報を、ハッシュテーブル213aに登
録する。
When it is determined that the chunk A does not overlap, the access controller 304 stores the physical address indicated by the physical address assigned to the logical address specified by the write request.
An instruction to write chunk A is issued. At this time, the duplication management unit 301 registers hash information including a pair of the hash value H (A) and the chunk number of the chunk A in the hash table 213a.

一方、チャンクAが重複すると判定された場合には、アクセスコントローラ304は、
チャンクAをRAIDディスクアレイ230に書き込むのを抑止する。この場合、重複管理部
301は、ホスト100からの書き込み要求によって指定された論理アドレスに、チャン
クAが既にRAIDディスクアレイ230に書き込まれている物理アドレスを割り当てる(つ
まりマッピングする)。
On the other hand, when it is determined that the chunk A is duplicated, the access controller 304
Writing of the chunk A to the RAID disk array 230 is suppressed. In this case, the duplication management unit 301 assigns (that is, maps) a physical address in which chunk A has already been written to the RAID disk array 230 to a logical address designated by a write request from the host 100.

図5は、メタテーブル230aのデータ構造例を示す。メタテーブル230aは、論理ボ
リュームを4K(キロ)バイト毎に区切ることにより得られる各領域(4Kバイト領域)
に書き込まれているチャンクを管理するのに用いられる。メタテーブル230aは、論理
ボリュームのそれぞれの4Kバイト領域を指し示す論理アドレスに対応付けられたエント
リの集合である。メタテーブル230aの各エントリは、当該エントリに対応付けられた
論理アドレスの示す4Kバイト領域に格納されるチャンクのチャンク番号を登録するのに
用いられる。したがって重複管理部301は、メタテーブル230aを参照することによ
り、目的の論理アドレスで指定される領域に格納されているチャンクとデータが特定でき
る。
FIG. 5 shows an example of the data structure of the meta table 230a. The meta table 230a has each area (4K byte area) obtained by dividing the logical volume into 4K (kilo) bytes.
Used to manage chunks written in The meta table 230a is a set of entries associated with logical addresses indicating the respective 4 Kbyte areas of the logical volume. Each entry of the meta table 230a is used to register a chunk number of a chunk stored in a 4 Kbyte area indicated by a logical address associated with the entry. Therefore, the duplication management unit 301 can identify the chunk and data stored in the area specified by the target logical address by referring to the meta table 230a.

図6は、チャンクテーブル230bのデータ構造例を示す。チャンクテーブル230b
は、チャンク番号に対応付けられたエントリの集合を有する。チャンクテーブル230b
の各エントリは、当該エントリと対応付けられたチャンク番号を有するチャンクに関する
チャンク情報を登録するのに用いられる。チャンクテーブル230bの各エントリは、チ
ャンク番号、物理アドレス、重複数から構成される。物理アドレスは、対応付けられたチ
ャンク番号が付与されたチャンクが記録されている物理アドレスである。重複数は、対応
付けられたチャンク番号が付与されたチャンクが幾つの論理アドレスに対応付けられてい
るかを示す。重複数が1の場合には、対応付けられたチャンク番号が付与されたチャンク
が論理ボリューム内の1つの論理アドレスが指し示す4Kバイト領域だけに書き込まれて
いることを示す。この場合該当するチャンクが重複していないことを示す。重複数が2の
場合には、重複排除により、実態として1つのチャンクがRAIDディスクアレイ230に書
き込まれているものの、当該チャンクが2つの論理アドレスに対応付けられていることを
示す。つまり、ホスト100から見て、同一内容を持つチャンクが論理ボリューム内の2
つの論理アドレスの指し示す4Kバイト領域に書き込まれていることを示す。
FIG. 6 shows an example of the data structure of the chunk table 230b. Chunk table 230b
Has a set of entries associated with chunk numbers. Chunk table 230b
Each entry is used to register chunk information related to a chunk having a chunk number associated with the entry. Each entry of the chunk table 230b is composed of a chunk number, a physical address, and a duplicate number. The physical address is a physical address in which a chunk to which the associated chunk number is assigned is recorded. The duplication number indicates how many logical addresses the chunks to which the associated chunk numbers are assigned are associated with each other. When the duplication number is 1, it indicates that the chunk assigned with the associated chunk number is written only in the 4 Kbyte area indicated by one logical address in the logical volume. In this case, the corresponding chunk is not duplicated. When the duplication number is 2, it indicates that although one chunk is actually written in the RAID disk array 230 by deduplication, the chunk is associated with two logical addresses. That is, as viewed from the host 100, chunks having the same contents are 2 in the logical volume.
This indicates that data is written in the 4 Kbyte area indicated by one logical address.

(ライト処理時の動作)
次に、本実施形態における、ストレージ装置200のディスク
アレイ制御装置210がホスト100からデータ書き込み要求を受信した場合に実行され
るライト処理時の動作について、図7を参照して説明する。
(Operation during write processing)
Next, an operation at the time of a write process executed when the disk array control device 210 of the storage apparatus 200 receives a data write request from the host 100 in this embodiment will be described with reference to FIG.

今、ホスト100からネットワーク110を介してストレージ装置200に、データの
書き込みを指定するデータ書き込み要求が送られたものとする。そして、ストレージ装置
200のディスクアレイ制御装置210が、ホスト100からのデータ書き込み要求を受
信したものとする。
Now, it is assumed that a data write request designating data write is sent from the host 100 to the storage apparatus 200 via the network 110. Assume that the disk array control device 210 of the storage device 200 has received a data write request from the host 100.

まず、ディスクアレイ制御装置210の分割部300は、データ書き込み要求で指定さ
れたデータを例えば4Kバイト毎に区切る。これにより、分割部300は、指定されたデ
ータを4Kバイトのサイズを有する複数のチャンクに分割する(S1)。つまり重複管理
部301は、指定されたデータから、そのデータを構成する複数のチャンクを取得する。
なお、指定されたデータのサイズが4Kバイト以下の場合、分割部300は、当該データ
自体を1つのチャンクとして取得する。ここで、チャンクのサイズは固定長である必要は
なく、チャンクのサイズは可変長であっても構わない。
First, the dividing unit 300 of the disk array control device 210 divides the data designated by the data write request, for example, every 4 Kbytes. Thereby, the dividing unit 300 divides the designated data into a plurality of chunks having a size of 4 Kbytes (S1). That is, the duplication management unit 301 acquires a plurality of chunks constituting the data from the designated data.
When the size of the designated data is 4 Kbytes or less, the dividing unit 300 acquires the data itself as one chunk. Here, the chunk size need not be a fixed length, and the chunk size may be a variable length.

重複管理部301は、取得されたチャンクの数を変数Nに設定する(S2)。ここで、
取得されたN個のチャンクをチャンクC_1ないしC_Nと表記する。
The duplication management unit 301 sets the number of acquired chunks as a variable N (S2). here,
The acquired N chunks are denoted as chunks C_1 to C_N.

すると重複管理部301は、ステップS1で取得されたN個のチャンクの1つを指定す
るのに用いられる変数nを初期値1に設定する(S3)。続いてハッシュ生成部303は
、n番目のチャンクC_nのハッシュ値Hn(C_n)を計算する(S4)。つまり初期
値n=1であるので、1番目のチャンクC_1のハッシュ値H1(C_1)を計算する。
また、ハッシュ値計算は、例えば“SHA−256”と呼ばれるハッシュ関数を用いて計
算する。さらに、本実施形態では、ハッシュ値H1(C_1)乃至H1(C_N)は、そ
れぞれ32バイトで表される。
Then, the duplication management part 301 sets the variable n used for designating one of the N chunks acquired at step S1 to an initial value 1 (S3). Subsequently, the hash generation unit 303 calculates a hash value Hn (C_n) of the nth chunk C_n (S4). That is, since the initial value n = 1, the hash value H1 (C_1) of the first chunk C_1 is calculated.
The hash value is calculated using a hash function called “SHA-256”, for example. Further, in the present embodiment, the hash values H1 (C_1) to H1 (C_N) are each represented by 32 bytes.

次に、重複管理部301は、ステップS4でハッシュ値計算された、n番目のチャンク
C_nのハッシュ値Hn(C_n)に一致するハッシュ値をハッシュテーブル213aか
ら探索するためのハッシュ値探索処理を実行する(S5)。このハッシュ値探索処理の結
果に基づいて、選択されたチャンクC_nのハッシュ値Hn(C_n)に一致するハッシ
ュ値がハッシュテーブル213aに存在するかを判定する(S6)。
Next, the duplication management unit 301 executes a hash value search process for searching the hash table 213a for a hash value that matches the hash value Hn (C_n) of the n-th chunk C_n calculated in step S4. (S5). Based on the result of the hash value search process, it is determined whether or not a hash value matching the hash value Hn (C_n) of the selected chunk C_n exists in the hash table 213a (S6).

重複管理部301は、この重複判定部302による判定の結果に基づいて、ステップS
7またはステップS14に進む。
Based on the result of determination by the overlap determination unit 302, the overlap management unit 301 performs step S
7 or Step S14.

選択されたチャンクC_nのハッシュ値Hn(C_n)に一致するハッシュ値が存在し
ない場合(S6のNo)を説明する。この場合、重複管理部301は、チャンクC_nと
同一内容を持つチャンクは格納されていないと判断する。
A case where there is no hash value that matches the hash value Hn (C_n) of the selected chunk C_n will be described (No in S6). In this case, the duplication management unit 301 determines that no chunk having the same content as the chunk C_n is stored.

ステップS7おいて重複管理部301は、チャンクC_nにチャンク番号CNC_nを付
与する。次に、アクセスコントローラ304は、当該チャンクC_nをRAIDディスクアレ
イ230内の空いている記憶領域に書き込む(S8)。
In step S7, the duplication management unit 301 assigns a chunk number CNC_n to the chunk C_n. Next, the access controller 304 writes the chunk C_n to a free storage area in the RAID disk array 230 (S8).

続いて、重複管理部301は、選択されたチャンクC_nの論理ボリューム内の位置を
示す論理アドレスを取得する。この論理アドレスは、ホスト100からのデータ書き込み
要求で指定される論理アドレスに4Kを加算することにより取得される。重複管理部30
1は更に、取得された論理アドレスに対応付けられているメタテーブル230aのエント
リに、選択されたチャンクC_nに付与されたチャンク番号CNC_nを登録する(S9
)。
Subsequently, the duplication management unit 301 acquires a logical address indicating the position of the selected chunk C_n in the logical volume. This logical address is obtained by adding 4K to the logical address specified by the data write request from the host 100. Duplicate management unit 30
1 further registers the chunk number CNC_n assigned to the selected chunk C_n in the entry of the meta table 230a associated with the acquired logical address (S9).
).

また、重複管理部301は、チャンクC_nのチャンク番号CNC_nに対応付けられ
たチャンクテーブル230bのチャンク番号CNC_nのエントリに、チャンクC_nが
書き込まれたRAIDディスクアレイ230内の記憶領域の物理アドレスPC_nを登録する
。さらに、重複管理部301は、チャンクテーブル230bにおいて、チャンク番号CN
C_nに対応するエントリの重複数に1を設定する(S10)。
Further, the duplication management unit 301 registers the physical address PC_n of the storage area in the RAID disk array 230 in which the chunk C_n is written in the entry of the chunk number CNC_n of the chunk table 230b associated with the chunk number CNC_n of the chunk C_n. To do. Furthermore, the duplication management unit 301 uses the chunk number CN in the chunk table 230b.
1 is set to the overlapping number of entries corresponding to C_n (S10).

続いて、重複管理部301は、ハッシュテーブル213aに、チャンクC_nのチャン
ク番号CNC_nおよびハッシュ値Hn(C−n)を登録する。この時、ハッシュテーブル2
13aに空きエントリが少ない場合は、ハッシュテーブル213a最下段のエントリ(つま
り、ヒットカウンタに格納された値が最小のエントリ)を削除し、チャンクC_nのエン
トリを登録する(詳細は後述する)。また重複管理部301は、ハッシュテーブル213
aにおいて、チャンク番号CNC_nに対応するエントリの参照ビットをビット”1”に設定
する(S11)。
Subsequently, the duplication management unit 301 registers the chunk number CNC_n and the hash value Hn (C−n) of the chunk C_n in the hash table 213a. At this time, hash table 2
If there are few empty entries in 13a, the entry at the bottom of the hash table 213a (that is, the entry with the smallest value stored in the hit counter) is deleted, and the entry of chunk C_n is registered (details will be described later). The duplication management unit 301 also has a hash table 213.
In a, the reference bit of the entry corresponding to the chunk number CNC_n is set to bit “1” (S11).

次に、変数nがチャンク数Nを超えているかを判定する。もし、変数nがチャンク数N
を超えていないならば(S12のNo)、重複管理部301は、ホスト100からのデー
タ書き込み要求によって指定されたデータに含まれている次のチャンクの書き込みを処理
するために、変数nを1インクリメントし(S13)、ステップS4に戻る。これに対し
て変数nがチャンク数Nを超えているならば(S12のYes)、重複管理部301は、
ホスト100からのデータ書き込み要求によって指定されたデータに含まれている全ての
チャンクの書き込みを終了したと判定する。この場合、データ書き込み処理は終了する。
Next, it is determined whether the variable n exceeds the number of chunks N. If variable n is the number of chunks N
If it does not exceed (No in S12), the duplication management unit 301 sets the variable n to 1 in order to process writing of the next chunk included in the data specified by the data write request from the host 100. Increment (S13) and return to step S4. On the other hand, if the variable n exceeds the number of chunks N (Yes in S12), the duplication management unit 301
It is determined that writing of all the chunks included in the data designated by the data write request from the host 100 has been completed. In this case, the data writing process ends.

次に、チャンクC_nのハッシュ値Hn(C_n)に一致するハッシュ値が存在する場
合、つまり重複判定部302がステップS6においてYesと判定した場合の動作を説明
する。重複管理部301は、選択されたチャンクC_nと同一内容を持つチャンクが既に
RAIDディスクアレイ230に格納されていると判定する。ここで、RAIDディスクアレイ2
30に既に格納されていて、かつチャンクC_nと同一内容を持つチャンクをチャンクC
_xと表記する。このとき、チャンクC_nのチャンク番号としてチャンクC_xのチャ
ンク番号CNC_xが用いられる。
Next, an operation when there is a hash value that matches the hash value Hn (C_n) of the chunk C_n, that is, when the duplication determination unit 302 determines Yes in step S6 will be described. The duplication management unit 301 has already confirmed that the chunk having the same content as the selected chunk C_n
It is determined that the data is stored in the RAID disk array 230. Here, RAID disk array 2
Chunk C is already stored in 30 and has the same content as Chunk C_n.
Indicated as _x. At this time, the chunk number CNC_x of the chunk C_x is used as the chunk number of the chunk C_n.

この場合、同一内容を持つ複数のチャンクが重複してRAIDディスクアレイ230に格納
されるのを排除するため、アクセスコントローラ304は、選択されたチャンクC_nを
RAIDディスクアレイ230に書き込む動作を抑止する(S14)。
In this case, in order to exclude a plurality of chunks having the same contents from being stored in the RAID disk array 230, the access controller 304 selects the selected chunk C_n.
The operation of writing to the RAID disk array 230 is suppressed (S14).

続いて重複管理部301は、選択されたチャンクC_nのチャンク番号CNC_xに対応
付けられたチャンクテーブル230bのエントリ情報を更新する(S15)。具体的には
、エントリの重複数を1増やす。
Subsequently, the duplication management unit 301 updates the entry information of the chunk table 230b associated with the chunk number CNC_x of the selected chunk C_n (S15). Specifically, the overlapping number of entries is increased by one.

次に、重複管理部301は、メタテーブル230aのチャンクC_nが書き込まれるべ
き論理アドレスに対応付けられたエントリにチャンクC_nと同一内容を持ち既にRAIDデ
ィスクアレイ230に書き込まれているチャンクC_xのチャンク番号CNC_xを登録す
る(S16)。
Next, the duplication management unit 301 has the same contents as the chunk C_n in the entry associated with the logical address to which the chunk C_n of the meta table 230a is to be written, and the chunk number of the chunk C_x that has already been written to the RAID disk array 230. CNC_x is registered (S16).

続いて、重複管理部301は、チャンクC_nのチャンク番号CNC_xに対応付けられ
たハッシュテーブル213aのエントリ情報を更新する(S17)。参照ビット欄にビット
”0”が格納されていれば、ビット”1”に更新しフラグを立てる。既に、ビット”1”
が格納されフラグが立っていれば、そのままにする。その後、処理をステップS12へ進
める。
Subsequently, the duplication management unit 301 updates the entry information of the hash table 213a associated with the chunk number CNC_x of the chunk C_n (S17). If bit “0” is stored in the reference bit column, it is updated to bit “1” and a flag is set. Already bit “1”
Is stored and the flag is set, it is left as it is. Thereafter, the process proceeds to step S12.

(リード処理時の動作)
次に、本実施形態における、ストレージ装置200のディスクアレイ制御装置210が
ホスト100からデータ読み込み要求を受信した場合に実行されるリード処理時の動作に
ついて、図8を参照して説明する。
(Operation during read processing)
Next, an operation at the time of read processing executed when the disk array control device 210 of the storage apparatus 200 receives a data read request from the host 100 in this embodiment will be described with reference to FIG.

アクセスコントローラ304は、ホスト100から受信したデータの読み出し要求で指
定されたデータの先頭の論理アドレスとデータ長(セクタ数)に基づいて、ディスクアレ
イ230からデータを読み出してローカルメモリ216のワーク領域216cに設けたリ
ードバッファに保存する(S20)。このデータの読み出しに際して、読み出しデータを
構成する各チャンクが記録されている物理アドレスは次のようにして求めることができる
。即ち、先頭の論理アドレスに順次チャンクを構成するセクタ数(8セクタ=4KB)を
加算することで、読み出しデータを構成する各チャンクの論理アドレスを特定する。この
特定された論理アドレスに基づいてメタテーブル230aを参照すれば、その論理アドレ
スに記録されているチャンクのチャンク番号が特定できる。さらに、この特定されたチャ
ンク番号に基づいてチャンクテーブル230bを参照すれば、各チャンクが記録されてい
る物理アドレスが特定できる。
The access controller 304 reads the data from the disk array 230 based on the top logical address and the data length (number of sectors) of the data specified in the data read request received from the host 100, and the work area 216c of the local memory 216. (S20). When reading this data, the physical address where each chunk constituting the read data is recorded can be obtained as follows. That is, the logical address of each chunk constituting the read data is specified by adding the number of sectors (8 sectors = 4 KB) constituting the chunk sequentially to the top logical address. By referring to the meta table 230a based on the specified logical address, the chunk number of the chunk recorded at the logical address can be specified. Further, referring to the chunk table 230b based on the specified chunk number, the physical address where each chunk is recorded can be specified.

次に、アクセスコントローラ304は、ローカルメモリ216のリードバッファに保存
したデータを読み出し、ホスト100へ転送する(S21)。
Next, the access controller 304 reads the data stored in the read buffer of the local memory 216 and transfers it to the host 100 (S21).

データを転送後、ディスクアレイ制御装置210の分割部300は、転送されたデータ
を複数のチャンクに分割する(S22)。重複管理部301は、取得されたチャンクの数
を変数Nに設定する(S23)。
After transferring the data, the dividing unit 300 of the disk array control device 210 divides the transferred data into a plurality of chunks (S22). The duplication management unit 301 sets the number of acquired chunks as a variable N (S23).

続いて、重複管理部301は、ステップS23で取得されたN個のチャンクの1つを指
定するのに用いられる変数nを初期値1に設定する(S24)。次に、ハッシュ生成部3
03は、チャンクC_nのハッシュ値、Hn(C_n)を計算する(S25)。つまり初
期値n=1であるので、1番目のチャンクC_1のハッシュ値H1(C_1)を計算する
Subsequently, the duplication management unit 301 sets a variable n used to designate one of the N chunks acquired in step S23 to an initial value 1 (S24). Next, the hash generation unit 3
03 calculates the hash value, Hn (C_n), of the chunk C_n (S25). That is, since the initial value n = 1, the hash value H1 (C_1) of the first chunk C_1 is calculated.

続いて、重複管理部301は、ステップS25でハッシュ値計算されたチャンクC_n
のハッシュ値Hn(C_n)に一致するハッシュ値をハッシュテーブル213aから探索
するためのハッシュ値探索処理を実行する(S26)。このハッシュ値探索処理の結果に
基づいて、選択されたチャンクC_nのハッシュ値Hn(C_n)に一致するハッシュ値
がハッシュテーブル213aに存在するかを判定する(S27)。
Subsequently, the duplication management unit 301 determines the chunk C_n whose hash value has been calculated in step S25.
A hash value search process is executed to search the hash table 213a for a hash value that matches the hash value Hn (C_n) (S26). Based on the result of the hash value search process, it is determined whether or not a hash value matching the hash value Hn (C_n) of the selected chunk C_n exists in the hash table 213a (S27).

重複管理部301は、この重複判定部302による判定の結果に基づいて、ステップS
28またはステップS29に進む。
Based on the result of determination by the overlap determination unit 302, the overlap management unit 301 performs step S
Go to step 28 or step S29.

チャンクC_nのハッシュ値Hn(C_n)に一致するハッシュ値が存在しない場合(
S27のNo)、重複管理部301は、チャンクC_nに対応するチャンク番号CNC_n
のエントリが、ハッシュテーブル213aに保持されていないと判断する。続いて、重複
管理部301は、チャンクC_nのハッシュ値Hn(C_n)をチャンク番号CNC_nに
対応付けてハッシュテーブル213aに登録する(S28)。この時、ハッシュテーブル
213aの空きエントリが少ない場合は、ハッシュテーブル213a最下段のエントリ(つ
まり、ヒットカウンタに格納された値が最小のエントリ)を削除し、チャンクC_nのエ
ントリを登録する(詳細は後述する)。また、対応するエントリの参照ビットをビット”
1”に設定する。
When there is no hash value that matches the hash value Hn (C_n) of the chunk C_n (
No in S27), the duplication management unit 301 determines the chunk number CNC_n corresponding to the chunk C_n.
Is determined not to be held in the hash table 213a. Subsequently, the duplication management unit 301 registers the hash value Hn (C_n) of the chunk C_n in the hash table 213a in association with the chunk number CNC_n (S28). At this time, if there are few empty entries in the hash table 213a, the entry at the bottom of the hash table 213a (that is, the entry with the smallest value stored in the hit counter) is deleted, and the entry of the chunk C_n is registered (for details) Will be described later). Also, set the reference bit of the corresponding entry to “
Set to 1 ”.

チャンクC_nのハッシュ値Hn(C_n)に一致するハッシュ値が存在し、重複判定
部302がステップS27においてYesと判定した場合、重複管理部301は、ハッシ
ュ値がHn(C_n)であるハッシュテーブル213aのエントリを更新する(S29)
。重複管理部301は、ハッシュ値がHn(C_n)であるハッシュテーブル213aの
エントリに参照ビット“1”をセットする。
If there is a hash value that matches the hash value Hn (C_n) of the chunk C_n and the duplication determination unit 302 determines Yes in step S27, the duplication management unit 301 determines that the hash value is Hn (C_n). Update the entry (S29)
. The duplication management unit 301 sets the reference bit “1” to the entry of the hash table 213a whose hash value is Hn (C_n).

重複管理部301は、変数nがステップS23で設定されたチャンク数Nを超えている
かを判定する(S30)。もし、変数nがチャンク数Nを超えていないならば(S30の
No)、重複管理部301は、ホスト100から指定されたデータに含まれている次のチ
ャンクを処理するために、変数nを1インクリメントし(S31)、ステップS25に戻
る。これに対して変数nがチャンク数Nを超えているならば(S30のYes)、重複管
理部301は、全てのチャンクの処理を終了したと判定する。
The duplication management unit 301 determines whether the variable n exceeds the number of chunks N set in step S23 (S30). If the variable n does not exceed the number of chunks N (No in S30), the duplication management unit 301 sets the variable n to process the next chunk included in the data designated by the host 100. Increment by 1 (S31) and return to step S25. On the other hand, if the variable n exceeds the number of chunks N (Yes in S30), the duplication management unit 301 determines that the processing of all chunks has been completed.

このように本実施形態において、新規のハッシュテーブルのエントリの登録をライト処
理時だけでなくリード処理完了時にも行う。これにより、ハッシュテーブルの記憶容量が
固定値となっているがために、RAIDディスクアレイ230に書き込まれている全てのチャ
ンクに対応するエントリを登録できない場合にも、重複排除をより効率的に実現できる。
Thus, in the present embodiment, registration of a new hash table entry is performed not only at the time of write processing but also at the time of completion of read processing. As a result, deduplication is more efficiently realized even when entries corresponding to all chunks written in the RAID disk array 230 cannot be registered because the storage capacity of the hash table is a fixed value. it can.

即ち、あるチャンクを書き込みする場合に、既にそのチャンクと同一内容のチRAIDディ
スクアレイ230に書き込まれているにも関わらず、ハッシュテーブルが固定長であるこ
とに起因して、この既に書き込まれているチャンクに対応するエントリがハッシュテーブ
ルに登録されていないケースが想定される。この場合には、ハッシュテーブルにエントリ
が登録されていないため、重複排除ができない。しかし、リード処理時にもハッシュテー
ブルへのエントリ登録を行うことで、重複排除をすることができる。例えば、ホスト10
0がRAIDディスクアレイ230からデータを読み出す目的として、そのデータに別のデー
タ名を付けてデータをコピーする場合や、その読み出したデータを更新して再度書き込み
する場合が想定される。このような場合にリード処理時にもハッシュテーブルへのエント
リの登録を行うことで、ハッシュテーブルにエントリが登録されていないため発生する重
複排除ができない事態を回避することができる。
That is, when a certain chunk is written, it is already written because the hash table has a fixed length even though it has already been written to the same RAID disk array 230 as that chunk. A case where an entry corresponding to a chunk is not registered in the hash table is assumed. In this case, since no entry is registered in the hash table, deduplication cannot be performed. However, duplication can be eliminated by registering entries in the hash table even during read processing. For example, host 10
For the purpose of 0 reading data from the RAID disk array 230, it is assumed that the data is copied with a different data name, or the read data is updated and rewritten. In such a case, by registering the entry in the hash table even during the read process, it is possible to avoid a situation in which deduplication cannot be performed because no entry is registered in the hash table.

(ハッシュエントリの置換)
ハッシュテーブル213aの記憶容量が固定長であるため、空きのエントリがなくなっ
た場合の対策について説明する。空きのエントリがなくなった場合には、ヒットカウンタ
の値が最小のエントリを選択し、そのエントリに記録されているチャンク番号、ハッシュ
値、参照ビット、ビットカウンタの各記録内容を削除し、新たに登録するチャンク番号、
ハッシュ値、参照ビット、ビットカウンタの値を記録することで置換する。この置換処理
を円滑に進めるために、あらかじめ、定期的にハッシュテーブル213aに記録されてい
るエントリをヒットカウンタの値に基づいてソート処理しておく。このように定期的にソ
ート処理することをエージング周期処理と呼び、その詳細を図9を参照して説明する。な
お、周期処理は、例えばOSが提供するタイマー機能等を利用し任意時間周期で行う。
(Replace hash entry)
Since the storage capacity of the hash table 213a is a fixed length, a countermeasure when there are no more empty entries will be described. When there are no more empty entries, select the entry with the smallest hit counter value, delete the recorded contents of the chunk number, hash value, reference bit, and bit counter recorded in that entry, and newly Chunk number to register,
Replaces by recording the hash value, reference bit, and bit counter value. In order to smoothly proceed with the replacement process, the entries recorded in the hash table 213a are periodically sorted in advance based on the value of the hit counter. Such regular sorting processing is called aging cycle processing, and the details thereof will be described with reference to FIG. Note that the periodic processing is performed at an arbitrary time period using, for example, a timer function provided by the OS.

まず、重複管理部301は、ハッシュテーブル213aの先頭のエントリを選択する(
S32)。本実施形態では、例えば一番上にあるエントリから選択する。続いて重複管理
部301は、ヒットカウンタを1ビット右シフトする(2で割る)(S33)。本実施形
態のヒットカウンタは8ビットで形成されているとし、例えば当該エントリのヒットカウ
ンタに「10000000(16進数:80)」が格納されているとする。1ビット右シフトする
ことで、ヒットカウンタの値は「01000000(16進数:40)」となる。
First, the duplication management unit 301 selects the top entry of the hash table 213a (
S32). In this embodiment, for example, the entry at the top is selected. Subsequently, the duplication management unit 301 right shifts the hit counter by 1 bit (divides by 2) (S33). Assume that the hit counter of this embodiment is formed of 8 bits. For example, “10000000 (hexadecimal number: 80)” is stored in the hit counter of the entry. By shifting 1 bit to the right, the value of the hit counter becomes “01000000 (hexadecimal number: 40)”.

次に重複管理部301は、当該エントリの参照ビット“1”が立っているか判定する(
S34)。例えば、ステップS33の後に、当該エントリのヒットカウンタの値が「0100
0000(16進数:40)」である場合を考える。参照ビット“1”が立っている場合、さ
らに最上位ビットを立て(S35)、ヒットカウンタの値は「11000000(16進数:C0
)」となる。参照ビット“0”の場合、ヒットカウンタの値はそのまま「01000000(16
進数:40)」とし、S36に進む。このように、ステップS33の処理の後に、ステッ
プS34またはステップS35の処理をすることによって、直近にアクセス(参照)され
たチャンクのヒットカウンタの値が増大されることになる。一方、直近にアクセス(参照
)されていないチャンクのヒットカウンタの値は減少されることになる。このようにヒッ
トカウンタの値を変更することによって、アクセス回数は少ないチャンクでも、直近にア
クセスされているものは、そのヒットカウンタの値が大きく設定されるため、高い優先順
位を持つことになる。
Next, the duplication management unit 301 determines whether the reference bit “1” of the entry is set (
S34). For example, after step S33, the value of the hit counter of the entry is “0100”.
Consider the case of “0000 (hexadecimal number: 40)”. When the reference bit “1” is set, the most significant bit is set (S35), and the value of the hit counter is “11000000 (hexadecimal number: C0).
) ”. When the reference bit is “0”, the value of the hit counter is “01000000 (16
(Advance number: 40) ", and the process proceeds to S36. In this way, the value of the hit counter of the most recently accessed (referenced) chunk is increased by performing the processing of step S34 or step S35 after the processing of step S33. On the other hand, the hit counter value of a chunk that has not been accessed (referenced) most recently is decreased. By changing the value of the hit counter in this way, even if the number of accesses is small, the most recently accessed chunk has a high priority because the value of the hit counter is set large.

続いて重複管理部301は、全てのエントリの処理を行ったか判定する(S36)。全
てのエントリの処理を行っていないと判断した場合(S36のNo)は、次のエントリを選
択し(S37)、ステップS33に戻る。全てのエントリの処理を行っていると判断した
場合(S36のNo)は、全エントリをソートし、ヒットカウンタの値が昇順になる位置に
動かし(S38)、エージング周期処理は終了となる。
Subsequently, the duplication management unit 301 determines whether all entries have been processed (S36). If it is determined that all entries have not been processed (No in S36), the next entry is selected (S37), and the process returns to step S33. If it is determined that all entries have been processed (No in S36), all entries are sorted and moved to a position where the value of the hit counter is in ascending order (S38), and the aging cycle process ends.

このエージング周期処理が行われることにより、ハッシュテーブル213a内のエント
リの優先順位が付けられる。その優先順位に則り、エントリの空き領域がなくなった場合
には、ハッシュテーブル213aの一番下のエントリ(つまり、ヒットカウンタの値が最
小のエントリ)を選択し、そのエントリに記録されているチャンク番号、ハッシュ値、参
照ビット、ビットカウンタの各記録内容を削除し、新たに登録するチャンク番号、ハッシ
ュ値、参照ビット、ビットカウンタの値を記録することで置換する。
By performing this aging cycle process, the priority of the entries in the hash table 213a is given. If there is no free space in the entry according to the priority, the lowest entry in the hash table 213a (that is, the entry with the smallest hit counter value) is selected, and the chunk recorded in the entry is selected. The recorded contents of the number, hash value, reference bit, and bit counter are deleted and replaced by recording the newly registered chunk number, hash value, reference bit, and bit counter value.

なお、ハッシュテーブル213aはキャッシュメモリ213上にのみ存在するため、装
置停止で揮発してしまうが、装置シャットダウン時にはHDDやSSDのような不揮発媒体に退
避し、起動時に復元する。
Since the hash table 213a exists only on the cache memory 213, it is volatilized when the apparatus is stopped. However, when the apparatus is shut down, the hash table 213a is saved in a nonvolatile medium such as an HDD or an SSD and restored when the apparatus is activated.

このように、本実施形態は、ハッシュエントリを一定量のみキャッシュメモリ213上
に保持し、アクセス数とアクセス間隔に基づいて重み付けしたヒットカウンタによりハッ
シュエントリを管理する。また、リード処理時にもハッシュエントリを登録する。それに
より、高速で高重複排除率の重複排除機能を実現することができる。
As described above, in this embodiment, only a certain amount of hash entries are held in the cache memory 213, and the hash entries are managed by a hit counter weighted based on the number of accesses and the access interval. A hash entry is also registered during the read process. As a result, a deduplication function with a high deduplication rate can be realized at high speed.

以上、本発明の実施形態を説明したが、これらの実施形態は、例として提示したもので
あり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の
様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略
、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨
に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
As mentioned above, although embodiment of this invention was described, these embodiment is shown as an example and is not intending limiting the range of 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.

100…ホスト
110…ネットワーク
200…ストレージ装置
210…ディスクアレイ制御装置
211…ホストI/F
212…ディスクI/F
213…キャッシュメモリ
213a…ハッシュテーブル
214…キャッシュコントローラ
215…FROM
216…ローカルメモリ
216a…制御プログラム領域
216b…テーブル領域
216c…ワーク領域
217…CPU
218…チップセット
220…ディスクインタフェースバス
230…RAIDディスクアレイ
230a…メタテーブル
230b…チャンクテーブル
300…分割部
301…重複管理部
302…重複判定部
303…ハッシュ生成部
304…アクセスコントローラ
DESCRIPTION OF SYMBOLS 100 ... Host 110 ... Network 200 ... Storage apparatus 210 ... Disk array control apparatus 211 ... Host I / F
212 ... Disk I / F
213 ... Cache memory 213a ... Hash table 214 ... Cache controller 215 ... FROM
216 ... Local memory 216a ... Control program area 216b ... Table area 216c ... Work area 217 ... CPU
218 ... Chip set 220 ... Disk interface bus 230 ... RAID disk array 230a ... Meta table 230b ... Chunk table 300 ... Dividing unit 301 ... Duplicate managing unit 302 ... Duplicate determining unit 303 ... Hash generating unit 304 ... Access controller

Claims (2)

データを記録するための記録媒体を持つストレージ装置において、
ホストコンピュータからのデータ書き込み要求によって指定されたデータを複数のチャ
ンクに分割するチャンク分割部と、
前記複数のチャンクの各々のデータに基づいて、前記複数のチャンクの各々のハッシュ
値を生成するハッシュ生成部と、
前記記録媒体に書き込まれているチャンクの識別子とそのチャンクのハッシュ値とが対
応付けられて記憶されているハッシュテーブルを保持する揮発性メモリと、
前記記録媒体に第一のチャンクを書き込むときに、前記第一のチャンクのデータに基づ
いて前記ハッシュ生成部で生成されたハッシュ値と一致するハッシュ値が、既に前記ハッ
シュテーブルに記録されているか否かを探索し、一致するハッシュが前記ハッシュテーブ
ルに記録されていない場合には、前記第一のチャンクを前記記録媒体に書き込み、一致す
るハッシュが前記ハッシュテーブルに記録されている場合には、前記第一のチャンクの前
記記録媒体への書き込みを抑止する制御部と、
を備えるストレージ装置。
In a storage device having a recording medium for recording data,
A chunk division unit that divides data designated by a data write request from a host computer into a plurality of chunks;
A hash generation unit that generates a hash value of each of the plurality of chunks based on data of each of the plurality of chunks;
A volatile memory that holds a hash table in which the identifier of the chunk written in the recording medium and the hash value of the chunk are stored in association with each other;
Whether or not a hash value that matches the hash value generated by the hash generation unit based on the data of the first chunk has already been recorded in the hash table when writing the first chunk to the recording medium If the matching hash is not recorded in the hash table, the first chunk is written to the recording medium, and if the matching hash is recorded in the hash table, A control unit for suppressing writing of the first chunk to the recording medium;
A storage device comprising:
前記制御部は、ホストコンピュータからの読み出し要求によって指定されたデータを前
記記録媒体から読み出したときに、
当該データを構成する複数のチャンクについて、各々のチャンクに基づいて生成された
ハッシュ値と一致するハッシュ値が前記ハッシュテーブルに既に登録されているか否かを
探索し、一致するハッシュ値が前記ハッシュテーブルに記録されていない場合には、当該
チャンクの識別子とハッシュ値とを前記ハッシュテーブルに登録する、
請求項1記載のストレージ装置。
When the control unit reads data designated by a read request from a host computer from the recording medium,
For a plurality of chunks constituting the data, it is searched whether or not a hash value that matches a hash value generated based on each chunk is already registered in the hash table, and the matching hash value is the hash table. If not recorded in the hash table, the chunk identifier and hash value are registered in the hash table.
The storage apparatus according to claim 1.
JP2017088762A 2017-04-27 2017-04-27 Storage device for eliminating duplication of data Pending JP2018185760A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017088762A JP2018185760A (en) 2017-04-27 2017-04-27 Storage device for eliminating duplication of data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017088762A JP2018185760A (en) 2017-04-27 2017-04-27 Storage device for eliminating duplication of data

Publications (1)

Publication Number Publication Date
JP2018185760A true JP2018185760A (en) 2018-11-22

Family

ID=64356007

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017088762A Pending JP2018185760A (en) 2017-04-27 2017-04-27 Storage device for eliminating duplication of data

Country Status (1)

Country Link
JP (1) JP2018185760A (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140115258A1 (en) * 2012-10-18 2014-04-24 Oracle International Corporation System and method for managing a deduplication table
JP2014199574A (en) * 2013-03-29 2014-10-23 富士通株式会社 Storage control device, storage control method, and storage control program
US20150205716A1 (en) * 2014-01-23 2015-07-23 Snu R&Db Foundation Storage device and method of operating the same
WO2015198371A1 (en) * 2014-06-23 2015-12-30 株式会社日立製作所 Storage system and memory control method
JP6067819B1 (en) * 2015-10-21 2017-01-25 株式会社東芝 Hierarchical storage system, storage controller, and method for deduplication and storage tiering
JP2017049806A (en) * 2015-09-02 2017-03-09 富士通株式会社 Storage control device and storage control program

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140115258A1 (en) * 2012-10-18 2014-04-24 Oracle International Corporation System and method for managing a deduplication table
JP2014199574A (en) * 2013-03-29 2014-10-23 富士通株式会社 Storage control device, storage control method, and storage control program
US20150205716A1 (en) * 2014-01-23 2015-07-23 Snu R&Db Foundation Storage device and method of operating the same
WO2015198371A1 (en) * 2014-06-23 2015-12-30 株式会社日立製作所 Storage system and memory control method
JP2017049806A (en) * 2015-09-02 2017-03-09 富士通株式会社 Storage control device and storage control program
JP6067819B1 (en) * 2015-10-21 2017-01-25 株式会社東芝 Hierarchical storage system, storage controller, and method for deduplication and storage tiering

Similar Documents

Publication Publication Date Title
US11341117B2 (en) Deduplication table management
JP5444506B1 (en) Storage system to eliminate data duplication based on hash table
US9063877B2 (en) Storage system, storage controller, and method for managing mapping between local address and physical address
JP6240071B2 (en) Computer system and method for effectively managing mapping table in storage system
US9146877B2 (en) Storage system capable of managing a plurality of snapshot families and method of snapshot family based read
US9311015B2 (en) Storage system capable of managing a plurality of snapshot families and method of operating thereof
US8977812B1 (en) Iterating in parallel for deduplication
JP5907739B2 (en) Nonvolatile memory device
JP5707540B1 (en) Hierarchical storage system, storage controller, and method for replacing data movement between tiers
JP5410386B2 (en) I / O conversion method and apparatus for storage system
US20220075548A1 (en) Selective erasure of data in a ssd
TW201439763A (en) System, method and computer-readable medium for managing a cache store to achieve improved cache ramp-up across system reboots
US8694563B1 (en) Space recovery for thin-provisioned storage volumes
US8478933B2 (en) Systems and methods for performing deduplicated data processing on tape
KR20170038853A (en) Host-managed non-volatile memory
US20230342054A1 (en) Method, electronic device and computer program product for processing data
US11281390B2 (en) Techniques for data migration
WO2018061161A1 (en) Storage apparatus and method for controlling same
JP6419662B2 (en) Storage system and data duplication detection method
JP2018185760A (en) Storage device for eliminating duplication of data
JP5638022B2 (en) Disk array device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210217

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210617

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210806