JP2018185760A - Storage device for eliminating duplication of data - Google Patents
Storage device for eliminating duplication of data Download PDFInfo
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
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.
データ重複排除技術は、その動作原理上、ハッシュテーブル内の検索が必要になる。ハ
ッシュテーブルは、保存データ量の増加に伴い大きくなる。データ重複排除処理速度向上
には、ハッシュテーブルの検索時間を短縮することが重要となる。例えば、ハッシュテー
ブルをメモリ上に配置すれば高速に検索可能だが、データ量増加に伴い必要メモリ量が増
大するため、コストが掛かりデータ量によっては容量が足りなくなってしまう。また、仮
想メモリのようにハッシュテーブルの実体を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.
以下、発明を実施するための実施形態について説明する。 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
00 is connected.
ホスト100は、サーバあるいはクライアントPCのような物理計算機である。ホスト1
00内では、ストレージ装置200のデータにアクセスするためのアプリケーションプロ
グラムが動作する。ホスト100は、このアプリケーションプログラムに従い、ストレー
ジ装置200を外部記憶装置としてネットワーク110を介して利用する。ネットワーク
の種類は、SAN(Storage Area Network)、あるいはEthernet(登録商標)等である。
The
In 00, an application program for accessing data in the
ストレージ装置200は、ディスクアレイ制御装置210およびRAIDディスクアレイ2
30を備える。
The
30.
ディスクアレイ制御装置210は、RAIDディスクアレイ230と、ディスクインタフェ
ースバス220を介して接続されている。ディスクインタフェースバス220のインタフ
ェース種別は、SCSI、あるいはFC、あるいはSAS(Serial Attached SCSI)、あるいはSAT
A(Serial AT Attachment)等である。
The disk
A (Serial AT Attachment).
ディスクアレイ制御装置210は、ホストインタフェース(ホストI/F)211と、
ディスクインタフェース(ディスクI/F)212と、キャッシュメモリ213と、キャ
ッシュコントローラ214と、FROM215と、ローカルメモリ216と、CPU21
7と、チップセット218と、内部バス219とを備える。
The
Disk interface (disk I / F) 212,
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
(Internet SCSI).
ホストI/F211は、ホスト100との間のデータ転送(データ転送プロトコル)を
制御する。
The host I / F 211 controls data transfer (data transfer protocol) with the
ディスクI/F212は、ホスト100からRAIDディスクアレイ230のドライブへの
データライト/リード要求とその応答を送受信するためのインタフェースである。また、
キャッシュコントローラ214は、キャッシュメモリ213へのデータライト/リード要
求を行う。
The disk I /
The
キャッシュメモリ213は、ホスト100からのライト/リード要求に対するキャッシ
ュとして用いられる。本実施形態では、主に図2に示すハッシュテーブル213aを格納
する。なお、キャッシュメモリ213はミラーリング等の冗長化が成されている構成でも
良い。
The
キャッシュコントローラ214は、CPU217上で動作するディスクアレイ制御プロ
グラムからの命令に従いキャッシュメモリ213へのデータのリード/ライト処理を実施
する。ず
The
FROM215は、CPU217により実行されるディスクアレイ制御プログラムを格
納するための書き換えが可能な不揮発性メモリである。本実施形態では、ディスク制御装
置が起動されたときの最初の処理でFROM215に格納されているディスクアレイ制御
プログラムを、ローカルメモリ216にコピーする。
The FROM 215 is a rewritable nonvolatile memory for storing a disk array control program executed by the
ローカルメモリ216は、FROM215からコピーされたディスクアレイ制御プログ
ラムを記憶するのに用いられるほか、ローカルメモリ216の一部の領域は、CPU21
7が動作する上で使用するワーク領域として用いられる。
The
7 is used as a work area used for operation.
CPU217は、ローカルメモリ216に格納されたディスクアレイ装置制御プログラム
のプログラムコードに従い、ディスクアレイ制御装置210内の各部を制御する。また、
CPU217は、チップセット218を介し、ローカルメモリ216上に格納されている
ディスクアレイ制御プログラムが動作し、ディスクアレイ制御装置210全体の制御を行
う。
The
The CPU 217 operates the disk array control program stored on the
チップセット218は、CPU217及びその周辺回路を内部バス219に結合するブ
リッジ回路である。
The
内部バス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,
Interconnected by an internal bus 219. Also, FROM 215, local memory 21
6. The
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
A D array may be applied. Also, a simple set of storage drives (drive array) having no RAID configuration may be applied.
Are managed by a disk array control program. Subsequent
Functions using 0 are also controlled by the disk array control program. Further, in the present embodiment, the
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
また、ディスクアレイ制御装置210が、ホスト100のカードスロットに装着して用
いられるカードに備えられていても構わない。また、ディスクアレイ制御装置210の一
部がホスト100に内蔵され、当該ディスクアレイ制御装置210の残りが前記カードに
備えられていても構わない。
Further, the disk
図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
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
ローカルメモリ216は、制御プログラム領域216a、テーブル領域216b、ワーク
領域216cを含む。制御プログラム領域216aは、CPU217によって実行される
制御プログラムの少なくとも一部を格納するのに用いられる。この制御プログラムは、前
述したようにFROM215に予め格納されており、当該制御プログラムの少なくとも一部は
、ディスクアレイ制御装置210の起動時に当該FROM215からローカルメモリ216の
制御プログラム領域216aにロードされる。
The
テーブル領域216bは、ディスクアレイ制御装置210格納されている各種のテーブ
ルの少なくとも一部を格納するのに用いられる。ワーク領域216cは、CPU217が
制御プログラムを実行する際に利用される一時的なデータを格納するのに用いられる。
The
RAIDディスクアレイ230は、メタテーブル230a、チャンクテーブルb(詳細は後述
する)を格納する。つまりRAIDディスクアレイ230は、メタテーブル230a、チャン
クテーブル230bがそれぞれ格納される記憶領域を含む。
The
キャッシュメモリ213は、ハッシュテーブル213a(詳細は後述する)を格納する
。つまりキャッシュメモリ213は、ハッシュテーブル213aが格納される記憶領域を
含む。ハッシュテーブル213aの記憶容量は固定長であるものとする。
The
一般的なストレージシステムでは、論理ボリュームに最初に割り当てられた記憶容量(
例えば、最小の単位の記憶容量)で運用が開始される。論理ボリュームとは、ホストによ
って論理的なストレージドライブとして認識される記憶領域を指す。論理ボリュームには
、例えば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
図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
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
) 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
まず、図4を用いてキャッシュメモリ213に格納されるハッシュテーブル213aに
ついて説明する。ハッシュテーブルは、チャンク番号に対応付けられたエントリの集合を
有する。ハッシュテーブルの各エントリは、そのエントリに登録されたチャンク番号が付
与されたチャンクに関するハッシュ値、参照ビット、ヒットカウンタから構成される。
First, the hash table 213a stored in the
ハッシュ値は、前述した通り、対応付けられたチャンク番号が付与されたチャンクのデ
ータに基づいて、所定のハッシュ関数を用いて計算した値である。参照ビットは、後述す
るエージング周期処理の周期期間内において、対応付けられたチャンク番号が示すチャン
クがアクセスされた際にビット”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
もし、ハッシュテーブル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
チャンクAが重複しないと判定された場合、アクセスコントローラ304は、書き込み
要求によって指定された論理アドレスに割り当てられる物理アドレスの示す物理領域に、
チャンクAを書き込む指示を出す。このとき重複管理部301は、ハッシュ値H(A)と
チャンクAのチャンク番号との対を含むハッシュ情報を、ハッシュテーブル213aに登
録する。
When it is determined that the chunk A does not overlap, the
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
Writing of the chunk A to the
図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
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
今、ホスト100からネットワーク110を介してストレージ装置200に、データの
書き込みを指定するデータ書き込み要求が送られたものとする。そして、ストレージ装置
200のディスクアレイ制御装置210が、ホスト100からのデータ書き込み要求を受
信したものとする。
Now, it is assumed that a data write request designating data write is sent from the
まず、ディスクアレイ制御装置210の分割部300は、データ書き込み要求で指定さ
れたデータを例えば4Kバイト毎に区切る。これにより、分割部300は、指定されたデ
ータを4Kバイトのサイズを有する複数のチャンクに分割する(S1)。つまり重複管理
部301は、指定されたデータから、そのデータを構成する複数のチャンクを取得する。
なお、指定されたデータのサイズが4Kバイト以下の場合、分割部300は、当該データ
自体を1つのチャンクとして取得する。ここで、チャンクのサイズは固定長である必要は
なく、チャンクのサイズは可変長であっても構わない。
First, the dividing
When the size of the designated data is 4 Kbytes or less, the dividing
重複管理部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
続いて、重複管理部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
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
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
It is determined that writing of all the chunks included in the data designated by the data write request from the
次に、チャンク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
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
The operation of writing to the
続いて重複管理部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
続いて、重複管理部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
アクセスコントローラ304は、ホスト100から受信したデータの読み出し要求で指
定されたデータの先頭の論理アドレスとデータ長(セクタ数)に基づいて、ディスクアレ
イ230からデータを読み出してローカルメモリ216のワーク領域216cに設けたリ
ードバッファに保存する(S20)。このデータの読み出しに際して、読み出しデータを
構成する各チャンクが記録されている物理アドレスは次のようにして求めることができる
。即ち、先頭の論理アドレスに順次チャンクを構成するセクタ数(8セクタ=4KB)を
加算することで、読み出しデータを構成する各チャンクの論理アドレスを特定する。この
特定された論理アドレスに基づいてメタテーブル230aを参照すれば、その論理アドレ
スに記録されているチャンクのチャンク番号が特定できる。さらに、この特定されたチャ
ンク番号に基づいてチャンクテーブル230bを参照すれば、各チャンクが記録されてい
る物理アドレスが特定できる。
The
次に、アクセスコントローラ304は、ローカルメモリ216のリードバッファに保存
したデータを読み出し、ホスト100へ転送する(S21)。
Next, the
データを転送後、ディスクアレイ制御装置210の分割部300は、転送されたデータ
を複数のチャンクに分割する(S22)。重複管理部301は、取得されたチャンクの数
を変数Nに設定する(S23)。
After transferring the data, the dividing
続いて、重複管理部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
このように本実施形態において、新規のハッシュテーブルのエントリの登録をライト処
理時だけでなくリード処理完了時にも行う。これにより、ハッシュテーブルの記憶容量が
固定値となっているがために、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ディ
スクアレイ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
For the purpose of 0 reading data from the
(ハッシュエントリの置換)
ハッシュテーブル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
このように、本実施形態は、ハッシュエントリを一定量のみキャッシュメモリ213上
に保持し、アクセス数とアクセス間隔に基づいて重み付けしたヒットカウンタによりハッ
シュエントリを管理する。また、リード処理時にもハッシュエントリを登録する。それに
より、高速で高重複排除率の重複排除機能を実現することができる。
As described above, in this embodiment, only a certain amount of hash entries are held in the
以上、本発明の実施形態を説明したが、これらの実施形態は、例として提示したもので
あり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の
様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略
、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨
に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
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
212 ... Disk I / F
213 ...
216 ...
218 ... Chip set 220 ...
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.
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)
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 |
-
2017
- 2017-04-27 JP JP2017088762A patent/JP2018185760A/en active Pending
Patent Citations (6)
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 |