JP2021099611A - ストレージシステムおよびストレージシステムのデータ圧縮方法 - Google Patents

ストレージシステムおよびストレージシステムのデータ圧縮方法 Download PDF

Info

Publication number
JP2021099611A
JP2021099611A JP2019230475A JP2019230475A JP2021099611A JP 2021099611 A JP2021099611 A JP 2021099611A JP 2019230475 A JP2019230475 A JP 2019230475A JP 2019230475 A JP2019230475 A JP 2019230475A JP 2021099611 A JP2021099611 A JP 2021099611A
Authority
JP
Japan
Prior art keywords
data
group
drive
address
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019230475A
Other languages
English (en)
Other versions
JP7034132B2 (ja
Inventor
水島 永雅
Eiga Mizushima
永雅 水島
朋宏 吉原
Tomohiro Yoshihara
朋宏 吉原
健太郎 島田
Kentaro Shimada
健太郎 島田
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019230475A priority Critical patent/JP7034132B2/ja
Priority to CN202010810576.XA priority patent/CN113010097A/zh
Priority to US16/993,888 priority patent/US11455122B2/en
Publication of JP2021099611A publication Critical patent/JP2021099611A/ja
Application granted granted Critical
Publication of JP7034132B2 publication Critical patent/JP7034132B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ランダムに書き込まれたデータの圧縮率を高め、アクセス性能を向上させる。【解決手段】ストレージコントローラ22Aは、ドライブ29にリードまたはライトされるデータを格納するキャッシュ領域203Aを備え、キャッシュ領域203Aに格納されドライブ29に入力される複数のデータについて、そのデータ間の類似度に基づいてグループ化し、前記グループを選択し、選択したグループのデータをグループ単位で圧縮し、圧縮したデータをドライブ29に格納させる。【選択図】図1

Description

本発明は、ストレージシステムおよびストレージシステムのデータ圧縮方法に関する。
ストレージシステムは、一般的に、1以上のストレージ装置を備える。1以上のストレージ装置の各々は、一般的に、記憶デバイスとして、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)を備える。ストレージシステムは、SAN(Storage Area Network)又はLAN(Local Area Network)などのネットワーク経由で、1又は複数の上位装置(例えば、ホスト計算機30計算機)からアクセスされる。一般的に、ストレージ装置は、RAID(Redundant Array of Independent (or Inexpensive) Disks)技術に従う高信頼化方法を用いることで信頼性を向上している。
ストレージシステムには、物理的な記憶デバイスに保存するデータ量を削減してコストを低減するため、可逆圧縮機能を有するものがある。また、その圧縮率をできるだけ良くするために圧縮対象のデータに前処理を施すものもある。
特許文献1には、その一つの技術が開示されている。すなわち、特許文献1に開示された技術では、ストレージシステム外部から書き込まれたファイルおよびシーケンスデータをチャンクという単位に分割し、チャンク間の類似性を評価し、類似するチャンク順に並び替えて新たなシーケンスデータを作り、それをグループ単位で圧縮して記憶デバイスに保存する。また、元のファイルやシーケンスデータを復元するためのチャンク並び替えリストも記憶デバイスに保存する。
米国特許第9367557号明細書
特許文献1に記載のストレージシステムは、一度に書き込まれたファイルおよびシーケンスデータを圧縮して格納する時に、類似性に基づく並び替えを行ってから圧縮することによって圧縮率を改善する。ストレージシステムへの書き込みデータは、そのようなシーケンシャルな性質のものだけでなく、ランダムで互いに無関係なものもある。
後者のような書き込みデータを扱う場合においても、類似性に基づいて圧縮率を改善するストレージシステムを実現することが課題である。また、それを実現する際に、ストレージシステムのアクセス性能を改善することも課題である。
本発明は、上記事情に鑑みなされたものであり、その目的は、ランダムに書き込まれたデータの圧縮率を高め、アクセス性能を向上させることが可能なストレージシステムおよびストレージシステムのデータ圧縮方法を提供することにある。
上記目的を達成するため、第1の観点に係るストレージシステムは、物理記憶領域を有するドライブと、前記ドライブに入出力するデータを処理するコントローラを備え、前記コントローラは、前記ドライブにリードまたはライトされるデータを格納するキャッシュ領域を備え、前記コントローラは、前記キャッシュ領域に格納され前記ドライブに入力される複数のデータについて、そのデータ間の類似度に基づいてグループ化し、前記グループを選択し、選択したグループのデータをグループ単位で圧縮し、前記圧縮したデータを前記ドライブに格納させる。
本発明によれば、ランダムに書き込まれたデータの圧縮率を高め、アクセス性能を向上させることができる。
図1は、実施形態に係るストレージシステムのデータ圧縮を伴うデータライト手順を示すブロック図である。 図2は、実施形態に係るストレージシステムのハードウェア構成例を示すブロック図である。 図3は、図2のボリューム管理テーブルの構成例を示す図である。 図4は、図2のプール構成管理テーブルの構成例を示す図である。 図5は、図2のRAID構成管理テーブルの構成例を示す図である。 図6は、図2のプール割当管理テーブルの構成例を示す図である。 図7は、図2のドライブ割当管理テーブルの構成例を示す図である。 図8は、図2のストレージ装置によって管理される論理記憶階層の構成例を示す図である。 図9は、図2のグループ管理テーブルの構成例を示す図である。 図10は、図2のメモリ割当管理テーブルの構成例を示す図である。 図11は、図2のLRUリストテーブルとその遷移を示す図である。 図12は、図2のストレージ装置におけるキャッシュメモリのリソース配分比率の変化を示す図である。 図13は、図2のストレージ装置におけるスロットとグループの構成例を示す図である。 図14は、図2のストレージ装置が実行する類似ハッシュ算出処理を示す図である。 図15は、図2のストレージ装置が実行するデータリード処理を示すフローチャートである。 図16は、図2のストレージ装置が実行するデータライト処理を示すフローチャートである。 図17は、図2のストレージ装置が実行する圧縮前データ構築処理を示すフローチャートである。 図18は、図2のストレージ装置が実行する圧縮・デステージ処理を示すフローチャートである。 図19は、図2のストレージ装置が実行するデータ削除リトライ処理を示すフローチャートである。 図20は、図2のストレージ装置におけるデータ伸張処理の過程を示す図である。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また、実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「インターフェース部」は、ユーザインターフェース部と、通信インターフェース部とのうちの少なくとも1つを含んでよい。ユーザインターフェース部は、1以上のI/Oデバイス(例えば入力デバイス(例えばキーボード及びポインティングデバイス)と出力デバイス(例えば表示デバイス))と表示用計算機とのうちの少なくとも1つのI/Oデバイスを含んでよい。通信インターフェース部は、1以上の通信インターフェースデバイスを含んでよい。1以上の通信インターフェースデバイスは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし、2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ部」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし、不揮発性メモリであってもよい。メモリ部は、主に、プロセッサ部による処理の際に使用される。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部又は全部を行うハードウェア回路(例えば、CPUの処理を補助するオフロードエンジン)を含んでもよい。
また、以下の説明では、「xxxテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号(又は要素のID(例えば識別番号)を使用することがある。例えば、複数のストレージコントローラを区別しない場合には、「ストレージコントローラ22」と記載し、各ストレージコントローラを区別する場合には、「ストレージコントローラ22A」、「ストレージコントローラ22B」のように記載する。他の要素(例えばキャッシュ領域203、バッファ領域202、アドレス1100等)も同様である。
また、以下の説明では、「ストレージシステム」は、1以上のストレージ装置を含む。少なくとも1つのストレージ装置は、汎用的な物理計算機であってもよい。また、少なくとも1つのストレージ装置が、仮想的なストレージ装置であってもよいし、SDx(Software−Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージ装置の一例)又はSDDC(Software−defined Datacenter)を採用することができる。
図1は、実施形態に係るストレージシステムのデータ圧縮を伴うデータライト手順を示すブロック図である。
図1において、ストレージシステム100は、ホスト計算機30及びストレージ装置11を備える。ホスト計算機30は、ネットワーク31を介してストレージ装置11に接続され、管理計算機(図示せず)によって管理される。
ストレージ装置11は、1以上のボリューム(仮想的な記憶領域)を有する。ストレージ装置11は、物理記憶領域を有するドライブ29と、ドライブ29を制御するストレージコントローラ22A、22Bを備える。ストレージコントローラ22Aは、ドライブにおいてリードまたはライトされるデータをキャッシュするキャッシュ領域203Aと、転送時のデータを一時的に保存するバッファ領域202を備える。ストレージコントローラ22Bは、キャッシュ領域203Aにキャッシュされたデータを二重化するキャッシュ領域203Bを備える。
ホスト計算機30は、物理的な計算機でもよいし、物理的な計算機で実行される仮想的な計算機でもよい。ホスト計算機30は、ストレージシステム100において実行される仮想的な計算機でもよい。ホスト計算機30からは、ストレージ装置11のストレージコントローラ22A又はストレージコントローラ22Bに対してデータの書き込みが行われる。
以下、このストレージシステム100において、ホスト計算機30からのデータライト命令に応じた処理手順について説明する。図1の例では、ホスト計算機30からのライト命令をストレージコントローラ22Aが受領した場合について示す。
(S1)ストレージ装置11は、ホスト計算機30からネットワーク31を介してライト命令を受信する。ライト命令は、データとデータの割当先アドレス1100とを含んでいる。ストレージ装置11がライト命令を処理する際のデータ単位は、例えば8KBである。8KBに満たない場合は、周辺アドレスの不足データを補うため、当該装置内の記憶済みデータを読み出して補完し、8KBにしてから処理する。周辺アドレスに未書き込み部分がある場合は、その部分を不定値として管理し、暫定的にゼロデータで補完して処理する。8KBより大きい場合は、1つ以上の8KBデータと、8KBに満たない残りデータとに分け、上記補完により全て8KBデータにして個別に処理する。従って、以下の説明では、ストレージ装置11が扱うデータサイズは8KBであるものとする。ストレージ装置11は、ライト命令受信後に、S2以降のライト処理を開始する。
(S2)ストレージ装置11は、ライト命令に応答して、割当先アドレス1100が示すスロットの排他を確保する。これによって、そのスロット内のデータが他のライト命令によって更新されることを防ぐ。「スロット」とは、ボリューム(VOL)における領域単位の一種である。具体的には、本実施形態のスロットは、ドライブ29への書き込みが行われたか否か及びバッファ領域202への転送が行われたか否か等の管理の単位となる。スロットのサイズは、例えば256KBである。本実施形態では、この領域を「スロット」と呼ぶが、他の名称で呼ばれてもよい。
(S3)ストレージコントローラ22Aは、キャッシュ領域203Aにおいて、データの割当先アドレス1100に対応するアドレス1100Aにデータを格納する。
(S4)ストレージコントローラ22Aは、キャッシュ領域203A内に格納されたデータをストレージコントローラ22Bに転送する。ストレージコントローラ22Bは、割当先アドレス1100に対応するキャッシュ領域203B内のアドレス1100Bに受領したデータを格納し、ストレージコントローラ22Aへ応答を返すことでストレージ装置11内でのデータの二重化を完了する。
(S5)データの二重化を完了した後、ストレージ装置11は、ホスト計算機30に対してネットワーク31を介してライト完了を応答する。この時点で、ホスト計算機30は、ライトが完了したと認識する。
(S6)ストレージコントローラ22Aは、キャッシュ領域203A内に格納されている複数のデータの中から、例えば、アドレス1100Aのデータの内容と類似関係にある1つ以上のデータを検出する。アドレス1100Aのデータの内容と類似関係にあるデータのアドレスを1101とする。
類似関係にあるデータを検出するために、8KBのデータの内容から類似ハッシュと呼ばれる値(データ内容の特徴を表す小さいサイズ(例えば8B)の値)を算出する。例えば、類似ハッシュは、LSH(Localty Sensitive Hash)である。2つのデータの内容が類似しているほど、互いの類似ハッシュの値は近くなる。類似ハッシュの値が近いことは、ハミング距離が短いことを意味する。具体的な類似ハッシュ算出方法は後述する。
(S7)ストレージコントローラ22Aは、キャッシュ領域203Aにキャッシュされたデータ間の類似度に基づいて、キャッシュ領域203Aにキャッシュされたデータをクルーピングしたグループを生成する。各グループにクルーピングされるデータは、ホスト計算機30から別個のライト要求に基づいてライトされたデータを含んでいてもよい。このとき、ストレージコントローラ22Aは、グループごとに複数のデータを格納するため、1つ以上の領域をキャッシュ領域203A内に確保する。グループごとに確保された領域のサイズは、例えば128KBである。そして、ストレージコントローラ22Aは、例えば、ある1つのグループ1102Aの領域に、アドレス1100Aのデータとアドレス1101のデータを転送する。転送するデータの数は2個以上であり、例えば1個のグループには、類似関係にある8KBデータを16個収納できる。別のグループ1102B、1102Cの領域には、(S6)の方法で検出した類似関係にあるデータをそれぞれ収納する。
また、後述するように、ストレージコントローラ22Aは、選択したデータをグルーピングする前に、重複排除処理を行って、その処理後の代表データのみをグルーピングしてもよい。重複排除処理は、内容が完全に等しいN(Nは、2以上の整数)個のデータを1個の代表データに割り当てる処理である。この重複排除処理により、実際の格納データ量をN分の1に削減することができる。
(S8)ストレージコントローラ22Aは、例えば、キャッシュ領域203Aからドライブ29へ書き出すグループ(例えば、グループ1102C)を選択し、選択したグループに含まれるデータをまとめて圧縮してバッファ領域202A内のアドレス1103に追記的に格納する。
ここで、ストレージコントローラ22Aは、グループのアクセス頻度およびグループに含まれるデータ間の類似度に基づいて、圧縮対象となるグループを選択する。例えば、ストレージコントローラ22Aは、グループのアクセス頻度が第1設定値以下かつグループに含まれるデータ間の類似度が第2設定値以上のグループを圧縮対象として選択する。これにより、アクセス頻度が低く、データ間の類似度が高いグループを圧縮対象として選択し、キャッシュ領域203Aから落とすことができる。このため、ドライブ容量を削減することが可能となるとともに、アクセス頻度が高いデータをキャッシュ領域203Aに残すことができ、キャッシュヒット率を向上させることが可能となることから、アクセス性能を向上させることができる。
さらに、ストレージコントローラ22Aは、キャッシュ領域203Aにおけるダーティキャッシュ比率が上限値以上の場合、グループの圧縮を実行し、ダーティキャッシュ比率が上限値未満の場合、グループの圧縮を保留するようにしてもよい。これにより、キャッシュ領域203に新たにライトデータが受け入れられるFree状態の領域を確保しつつ、より圧縮度を高めることが可能な類似したデータを可能な限りキャッシュ領域203に保持させることができ、データの圧縮率を高め、アクセス性能を向上させることが可能となる。
なお、この圧縮処理は、バッファ領域202A内にRAIDパリティサイクル分以上の量が溜まるまでグループごとに実施される。このとき、ストレージコントローラ22Aは、選択したグループの圧縮後に暗号化処理を行って、その暗号化処理後の圧縮データをアドレス1103に格納してもよい。
(S9)ストレージコントローラ22Aは、バッファ領域202A内に追記的に格納した1つ以上のグループの圧縮データがパリティサイクル分以上の量に達すると、それらの内容を保証するためのパリティを生成し、バッファ領域202A内のアドレス1104へ格納する。
(S10)ストレージコントローラ22Aは、バッファ領域202A内の圧縮グループ(1つ以上のグループのパリティサイクル分以上の圧縮データ)及びそれに対応するパリティをドライブ29へ送信し、ドライブ29に書き出す(デステージ処理)。
(S11)ストレージコントローラ22Aは、デステージ処理が完了すると、(S2)において確保したスロットの排他を解放する。
図2は、実施形態に係るストレージシステムのハードウェア構成例を示すブロック図である。
図2において、ストレージ装置11は、1以上のストレージコントローラ22と、1以上のストレージコントローラ22に接続された複数のドライブ29とを有する。
ストレージコントローラ22は、FE_I/F(フロントエンドインターフェースデバイス)23、プロセッサ24、メモリ25、215、BE_I/F(バックエンドインターフェースデバイス)27、内部ネットワーク26およびオフロードエンジン214を備える。FE_I/F23、プロセッサ24、メモリ25、BE_I/F27およびオフロードエンジン214は、内部ネットワーク26を介して接続されている。
FE_I/F23は、ホスト計算機30との通信を行う。BE_I/F27は、ドライブ29との通信を行う。プロセッサ24は、ストレージ装置11全体を制御する。
メモリ25は、プロセッサ24で使用されるプログラム及びデータを格納する。メモリ25は、プログラムを管理するプログラム領域201、データの転送時の一時的な保存領域であるバッファ領域202、ホスト計算機30からのライトデータ(ライト命令に応答して書き込まれるデータ)及びドライブ29からのリードデータ(リード命令に応答して読み出されたデータ)を一時的に格納するキャッシュ領域203及び種々のテーブルを格納するテーブル管理領域206を有する。
テーブル管理領域206は、ボリュームに関する情報を保持するボリューム情報管理テーブル207、プールに関する情報を保持するプール構成管理テーブル208、RAID構成に関する情報を保持するRAID構成管理テーブル209、プール割り当てに関する情報を保持するプール割当管理テーブル210、ドライブ割り当てに関する情報を保持するドライブ割当管理テーブル211、グループへのデータ割り当てに関する情報を保持するグループ管理テーブル212、メモリ割り当てに関する情報を保持するメモリ割当管理テーブル213及びスロットのアクセス頻度を管理するLRU(Least Recently Used)リストテーブル217を格納する。
ドライブ29は、不揮発性のデータ記憶媒体を有する装置であり、例えばSSD(Solid State Drive)でもよいし、HDD(Hard Disk Drive)でもよい。複数のドライブ29が、複数のRAIDグループ(パリティグループとも呼ばれる)を構成してよい。各RAIDグループは、1以上のドライブ29から構成される。
オフロードエンジン214は、プロセッサ24の行う処理を補助するハードウェア回路であり、図1を用いて説明したデータライトにおいて実施する、類似検出、圧縮、重複排除、暗号化およびパリティ生成などの処理の一部または全部をプロセッサ24よりも高速に実行する。同様に、データリード(図による説明は省略)において実施する、伸張、復号およびパリティによる回復(ドライブ障害時のみ)などの処理の一部または全部をプロセッサ24よりも高速に実行する。
メモリ215は、オフロードエンジン214に直接接続された専用メモリである。メモリ215は、データの転送時の一時的な保存領域であるバッファ領域216を有する。メモリ215は、オフロードエンジン214で扱われるデータや、それらの処理に関する情報も保存する。メモリ215を設けることで、内部ネットワーク26とプロセッサ24を経由するメモリ25とオフロードエンジン214間の転送量及び転送時間を削減し、性能向上を図ることができる。
FE_I/F23およびBE_I/F27は、インターフェース部の一例である。メモリ25、215は、メモリ部の一例である。プロセッサ24とオフロードエンジン214は、プロセッサ部の一例である。
図3は、図2のボリューム管理テーブルの構成例を示す図である。
図3において、ボリューム管理テーブル207は、ボリューム毎にエントリを有する。各エントリは、VOL_ID41、VOL属性42、VOL容量43及びプールID44の情報を格納する。
VOL_ID41は、ストレージ装置11が管理している各ボリュームのIDである。VOL属性42は、各ボリュームの属性を示す。各ボリュームの属性は、例えば、シンプロビジョニングのボリュームか、通常割り当てのボリュームか、データ削減が有効(ON)か無効(OFF)か、システムボリュームかなどである。システムボリュームは、類似関係にあるデータを含むグループをストレージ装置11が管理するためのボリュームであり、ホスト計算機30からは直接見えない領域である。ボリューム容量43は、各ボリュームの容量を示す。プールID44は、各ボリュームに関連付けられているプールのIDである。
プロセッサ24は、デステージ処理において、ボリューム管理テーブル207のボリューム属性42を参照することで、ホスト計算機30からデータのライト/リード命令を受けた時に、どのような処理を必要とするボリュームか判定できる。例えば、VOL_ID41が“10”のボリュームは、ボリューム属性42が“シンプロビジョニング、削減ON”であるため、必要に応じてスロットに動的にプールを割り当てながら、ホスト計算機30のライト命令に対して図1で説明したデータライトを行う。
VOL_ID41が“0”のボリュームは、ボリューム属性42が“シンプロビジョニング、削減OFF”であるため、必要に応じてスロットに動的にプールを割り当てながら、ホスト計算機30のライト命令に対してデータ削減処理(重複排除及び圧縮)を除いたデータライトを行う。
VOL_ID41が“30”のボリュームは、ボリューム属性42が“通常割当、削減OFF”であるため、ボリューム作成時に割り当てたプール容量範囲で、ホスト計算機30のライト命令に対してデータ削減処理(重複排除及び圧縮)を除いたデータライトを行う。
図4は、図2のプール構成管理テーブルの構成例を示す図である。
図4において、プールは、1以上のRAIDグループを基に構成された論理記憶領域である。プール構成管理テーブル208は、プール毎にエントリを有する。各エントリは、プールID51、RAIDグループID52、プール容量53及びプール使用容量54の情報を格納する。
プールID51は、ストレージ装置11が管理している各プールのIDである。RAIDグループID52は、プールの基になっている1以上のRAIDグループの各々のIDである。プール容量53は、プールの容量を示す。プール使用容量54は、プールのプール容量のうち、ボリュームに割り当てられている領域の総量を示す。
図5は、図2のRAID構成管理テーブルの構成例を示す図である。
図5において、RAID構成管理テーブル209は、RAID構成を管理する対象のRAIDグループ毎にエントリを有する。各エントリは、RAIDグループID61、RAIDレベル62、ドライブID63、ドライブ種別64、容量65及び使用容量66の情報を格納する。
RAIDグループID61は、ストレージ装置11が管理している各RAIDグループのIDである。RAIDレベル62は、RAIDグループに適用されるRAIDアルゴリズムの種別を示す。ドライブID63は、RAIDグループを構成する1以上のドライブの各々のIDである。ドライブ種別64は、RAIDグループを構成するドライブの種別(例えばHDDかSSDか)を示す。容量65は、RAIDグループの容量を示す。使用容量66は、RAIDグループの容量のうちの使用されている容量を示す。
図6は、図2のプール割当管理テーブルの構成例を示す図である。
図6において、プール割当管理テーブル210は、プールの割り当てを管理する対象のスロットのVOLアドレス(ボリューム内のスロットを示すアドレス)毎にエントリを有する。各エントリは、VOL_ID71、VOLアドレス72、プールID73、プールアドレス74、圧縮前サイズ75、圧縮後サイズ76及び類似度77の情報を格納する。
VOL_ID71は、ストレージ装置11が管理し、VOLアドレスによって識別されるスロットが属するボリュームのIDである。VOLアドレス72は、それらスロットのVOLアドレスである。プールID73は、各スロット(256KB)に含まれる2つのグループ(各128KB)のデータをそれぞれ圧縮したデータを格納するために割り当てられたデータ領域を含むプールの各IDである。プールアドレス74は、2つのグループのデータをそれぞれ圧縮したデータを格納するために割り当てられたデータ領域のアドレス(プールに属するアドレス)である。圧縮前サイズ75は、各グループの圧縮前のデータサイズ(各128KB)を示す。圧縮後サイズ76は、各グループの圧縮後のデータサイズを示す。類似度77は、各グループを構成する16個の8KBのデータの相互の類似関係の強さを示す値である。類似度77が0%は、内容に全く類似関係がないことを示し、類似度77が100%は、内容が完全に一致している(可能性が高い)ことを示す。一般に、類似度77が高いグループほど圧縮率が高い(圧縮後サイズ76が小さい)ことが期待できる。
ストレージ装置11で用いられる可逆圧縮アルゴリズムは、スライド辞書(Sliding Dictionary)圧縮をベースとしており、過去の文字列から一致する文字列を見つけて短い符号(発見位置までの距離と一致長)に置き換えてデータ量を削減する。例えば、30バイト一致する文字列を見つけて、2バイトの短い符号に置き換えられれば28バイト削減される。類似度が高いデータには共通する文字列が多く含まれており、圧縮するグループ内のデータの類似度が高いほど、この辞書圧縮が効果的に働くため、圧縮率が高くなる。
図7は、図2のドライブ割当管理テーブルの構成例を示す図である。
図7において、ドライブ割当管理テーブル211は、ドライブ割当を管理するプールアドレス毎にエントリを有する。各エントリは、プールID81、プールアドレス82、RAIDグループID83、ドライブID84及びドライブアドレス85の情報を格納する。
プールID81は、プールアドレスが属するプールのIDである。プールアドレス82は、ストレージ装置11が管理しているプールアドレスである。RAIDグループID83は、プールアドレスが示すデータ領域の基になっているRAIDグループのIDである。ドライブID84は、プールアドレスが示すデータ領域の基になっているドライブのIDである。ドライブアドレス85は、プールアドレスに対応したドライブアドレスである。
図8は、図2のストレージ装置によって管理される論理記憶階層の構成例を示す図である。
図8において、ホストVOL1000は、シンプロビジョニングが適用され、データ削減が有効なボリュームであり、ホスト計算機30に提供される。システムVOL1001は、データ削減時の圧縮単位であるグループを管理するためのボリュームであり、ホスト計算機30からは直接見えない。
ホストVOL1000内の各8KBデータアドレスに、システムVOL1001内のグループに含まれる各8KBデータアドレスが対応付けられる。図8の例では、VOL1000内の内容「A,B,D」を格納する3つのアドレスに、グループ1102D内の3つのアドレスが対応付けられ、VOL1000内の内容「C,E,F」を格納する3つのアドレスに、グループ1102E内の3つのアドレスが対応付けられている。内容「A,B,D」と「C,E,F」を格納するアドレスの対応先がそれぞれ同じグループ1102D、1102Eに含まれているのは、図1の類似検出(S6)により、それぞれの内容に類似関係があると判断されたためである。
なお、重複排除処理が実施された場合は、ホストVOL1000内の複数の8KBデータアドレスに、システムVOL1001の1つの8KBデータアドレスが対応付けられることがある。図示していないが、異なるホストVOLの複数の8KBデータアドレスに、システムVOLの1つの8KBデータアドレスが対応付けられることもある。図8の例では、同一内容「A」を格納する異なる2つの8KBデータアドレス1105及び1106にグループ1102D内の1つの8KBデータアドレス1107が対応付けられ、同一内容「C」を格納する異なる2つの8KBデータアドレス1108及び1109にグループ1102E内の1つの8KBデータアドレス1110が対応付けられている。
システムVOL1001内のスロット(256KB)に含まれる2つグループ(各128KB)には、圧縮された当該グループデータの格納先として、プール1002内のデータ領域がそれぞれ対応付けられる。図8の例では、グループ1102Dにデータ領域1103Dが対応付けられ、グループ1102Eにデータ領域1103Eが対応付けられている。なお、グループは圧縮されるため、各グループに対応するプール1002内のデータ領域のサイズは、グループサイズ(128KB)以下である。
プール1002の空間は、チャンクと呼ばれる単位で区分けされ、各チャンクはドライブアドレス空間1003へ対応付けられる。ドライブアドレス空間1003は、RAIDグループ1004を構成する複数のドライブ29(例えば4台)によって提供される物理的なデータ格納空間である。パリティ生成処理で生成するパリティ1104のサイズは、チャンクサイズである。ドライブアドレス空間1003は、複数のRAIDサイクルで構成される。ドライブ29の故障によるデータ消失をRAID技術で回復するため、各RAIDサイクルのパリティチャンクPは、1つのドライブに収まるように対応付けられる。
ホストVOL1000からシステムVOL1001への割り当ては、図9のグループ管理テーブル212を基に管理される。そのテーブルの詳細は後述する。また、システムVOL1001からプール1002への割り当ては、図6のプール割当管理テーブル210を基に管理される。また、プール1002からドライブアドレス空間1003への割り当ては、図7のドライブ割当管理テーブル211を基に管理される。
図9は、図2のグループ管理テーブルの構成例を示す図である。
図9において、グループ管理テーブル212は、図8のホストVOL1000の8KBデータに対応するシステムVOL1001のグループを管理するテーブルであり、管理対象の8KBデータのアドレス毎にエントリを有する。各エントリは、ホストVOL_ID901、ホストVOLアドレス902、位置番号903、システムVOL_ID904、システムVOLアドレス905、グループ番号906及び位置番号907の情報を格納する。
ホストVOL_ID901は、ストレージ装置11が管理し、グループ対応の管理対象の8KBデータが属するスロットが属するボリューム(つまり、ホストVOL1000)のIDである。ホストVOLアドレス902は、管理対象の8KBデータが属するスロットのアドレスである。位置番号903は、管理対象の8KBデータが属するスロット(256KB)の中で、当該8KBデータが位置する場所を示す0〜31の範囲の番号であり、先頭を0、末尾を31とする。
システムVOL_ID904は、ストレージ装置11が管理し、ホストVOL1000の8KBデータに対応する、システムVOL1001のグループを含むスロットが属するボリュームのIDである。システムVOLアドレス905は、管理対象の8KBデータが対応する、システムVOL1001のグループを含むスロットのアドレスである。グループ番号906は、管理対象の8KBデータが対応する、システムVOL1001のグループの番号であり、0または1である。位置番号907は、管理対象の8KBデータに対応する、システムVOL1001のグループ(128KB)の中で、当該8KBデータが対応する場所を示す0〜15の範囲の番号であり、先頭を0、末尾を15とする。
なお、システムVOLアドレス905、グループ番号906及び位置番号907において、いずれも“None”が設定されている第3行目のエントリの8KBデータについては、図1の(S7)グループ振分で示したグルーピングが未完了であり、システムVOL1001の対応先グループが未定の状態であることを示す。グルーピングが完了すると、これらの項目にアドレス及び番号が登録される。
また、第4行目と第7行目のエントリで管理される2つの8KBデータは、システムVOL1001の同じグループに対応付けられており、両データの内容が類似関係にあることを示す。第2行目と第6行目のエントリで管理される2つの8KBデータも、システムVOL1001の同じグループに対応付けられており、両データの内容が類似関係にあることを示す。第5行目と第8行目のエントリで管理される2つの8KBデータは、システムVOL1001の同じグループに対応付けられており、かつ位置番号も同一であるため、両データの内容が重複関係にあることを示す。
図10は、図2のメモリ割当管理テーブルの構成例を示す図である。
図10において、メモリ割当管理テーブル213は、キャッシュ領域203やバッファ領域202を利用するスロットについて、スロットアドレス毎にエントリを有する。各エントリは、VOL_ID908、VOLアドレス909、バッファ(BF)転送状態910、バッファ(BF)アドレス911、キャッシュ状態912及びキャッシュアドレス913の情報を格納する。
VOL_ID908は、VOLアドレスによって識別されるスロットが属するボリュームのIDである。VOLアドレス909は、ホストVOL1000またはシステムVOL1001のスロットアドレスである。
BF転送状態910は、システムVOL1001の管理対象スロットに含まれるグループのデータを圧縮したデータを一時的に保持するため、バッファ領域202に転送されたか否かの状態であり、“未”はまだ転送されていないことを示し、“済”はすでに転送されたことを示す。ホストVOL1000の管理対象スロットは、本項目を使わない。
BFアドレス911は、圧縮されたシステムVOL1001のグループデータが転送されたバッファ領域202内のアドレスを示す。ホストVOL1000の管理対象スロットは、本項目を使わない。BF転送状態910が“未”の場合は、BFアドレス911に“None”が設定され、管理対象スロットに含まれるグループデータが圧縮されていないことを意味する。BF転送状態910が“済”であり、BFアドレス911が値を持つ場合、バッファ領域202に圧縮されたグループデータが保持されている状態を意味する。BF転送状態910が“済”であり、BFアドレス911が“None”である場合、バッファ領域202にあった圧縮されたグループデータがすでにドライブ29へ格納され、バッファ領域202の使用部分のアドレスは解放されたことを意味する。
キャッシュ状態912は、ホストVOL1000またはシステムVOL1001の管理対象スロットのデータについて、ドライブ29への格納状態を示す。キャッシュ状態912が“Dirty”のデータは、ドライブ29への格納が未完了である状態を意味し、“Clean”のデータはドライブ29への格納が完了した状態を意味する。なお、ホストVOLスロットのキャッシュ状態912では、32個の8KBデータ毎にキャッシュ状態を管理し、システムVOLスロットのキャッシュ状態912では、2つの128KBグループ毎に状態を管理する。システムVOLスロットのキャッシュ状態912が、2グループとも“Dirty”から“Clean”に変わる時、バッファ領域202の使用アドレスは解放され、BFアドレス911に“None”が設定される。ただし“Clean”になっても、キャッシュ領域203には、当該グループのデータは圧縮されていない状態で残る。当該データがキャッシュから落ちるまで、ホスト計算機30からストレージ装置11への当該データのリード命令はキャッシュヒットする。
キャッシュアドレス913は、ホストVOL1000またはシステムVOL1001の管理対象スロットのデータを格納するために割り当てられたキャッシュ領域203の部分のアドレスである。キャッシュ状態912が全て“Clean”であるスロットは、キャッシュから落とすことができる。キャッシュから落とす場合、メモリ割当管理テーブル213からそのスロットのエントリを削除する。
図11は、図2のLRUリストテーブルとその遷移を示す図である。
図11において、LRUリストテーブル217は、圧縮対象グループを選択するため、スロットのアクセス頻度を管理する。システムVOLアドレス2101は、アクセス頻度を管理するスロットの属するシステムVOLのIDを示す。システムVOLアドレス2102は、アクセス頻度を管理するスロットのアドレスを示す。本リストの上位にあるスロットほどアクセス頻度が低いことを意味する。
あるデータがホスト計算機30からアクセスされると、アクセスデータを含むスロット(例えばアドレス=2600)は本リストの最下位に移動し、そのスロットより下位だった全てのスロット(例えばアドレス=3300、2400、4300など)はそれぞれ1段上へ移動する。このような移動処理を行うと、アクセス頻度の低いデータを含むスロットほどリスト上位に集まる。圧縮対象グループは、例えば、本リストの最上位2103に位置するスロット(例えばアドレス=4100)に含まれる2つのグループから選択することができる。
図12は、図2のストレージ装置におけるキャッシュメモリのリソース配分比率の変化を示す図である。
図12において、図2のキャッシュ領域203は、ホストボリュームやシステムボリュームのスロットのデータを一時的に保持する。データの保持状態によって、キャッシュ領域203のメモリリソースは、以下の3つの状態に分けられる。
データが保持されており、そのデータがすでにドライブ29に格納されている領域部分は、“Clean”である。データが保持されており、そのデータがまだドライブ29に格納されていない領域部分は、“Dirty”である。キャッシュ領域203のうちデータが保持されていない領域部分は、“Free”である。キャッシュ領域203は、それら3つの状態の配分比率1010で配分される。
ホスト計算機30からデータのライト命令を受けて、キャッシュ領域203にデータが新たに保持される時、Free状態のリソースが使われて、その領域部分がDirty状態に変化する(1011)。このとき、キャッシュ領域203のFreeの比率が減り、Dirtyの比率が増える。
キャッシュ領域203に保持したDirty状態のデータがドライブ29に格納されると、そのデータの保持領域は、Dirty状態からClean状態に変化する(1012)。このとき、キャッシュ領域203のDirtyの比率が減り、Cleanの比率が増える。
キャッシュ領域203に新たにライトデータが受け入れられるFree状態の領域を増やすためには、Clean状態の保持領域を解放する必要がある。このとき、Clean状態の保持領域のデータは、ドライブ29に格納済みなので、Clean状態の保持領域を解放してもストレージ装置11としてデータは損失しない。これにより、その解放領域は、Clean状態からFree状態に変化する(1013)。このとき、キャッシュ領域203のCleanの比率が減り、Freeの比率が増える。
キャッシュ領域203のメモリリソースは、以上のようなライフサイクルで管理される。図12の1012で示すDirty状態からClean状態へ変化させるには、図1の(S8)圧縮〜(S10)デステージの処理を行う必要がある。ホスト計算機30からデータのライト命令を受けてから、Free状態のリソースを用意するため、(S8)圧縮〜(S10)デステージの処理によりDirty状態からClean状態へ変化させ、Clean状態の領域の解放によってFree状態へ変化させると、(S1)ライトから(S5)応答までに長い時間がかかる。
そこで、図2のストレージコントローラ22は、Dirty状態のリソースの比率がある閾値に達したことを契機に、キャッシュ領域203にあるグループデータに対して(S8)圧縮を開始して(S10)デステージまでの処理を行い、Dirty状態からClean状態へ事前に変化させる。これにより、ストレージコントローラ22は、ライト命令を受けたらClean状態の領域の解放だけを行ってFree状態のリソースを直ぐに用意し、(S1)ライトから(S5)応答までの時間を短縮することができる。
Dirty状態のリソースの比率がある閾値に達した時に、(S8)圧縮の対象として選択するグループは、キャッシュ領域203において、その時点で最も長い時間アクセスされていないスロット(つまり、LRUスロット)に含まれるグループである。
グループの選択方法は、この方法に限定されない。アクセスされていない時間が長い順に複数のスロット(M(Mは2以上の整数)個)を選択し、それらスロットに含まれるグループ(2M個)の中で、図6のプール割当管理テーブルにおける類似度77が最も高いグループを、(S8)圧縮の対象として選択してもよい。例えば、図11のリスト上位範囲2104は、アクセスされていない時間が長い複数のスロット(M=4)を含む。これらのスロットに含まれる8つのグループで最も類似度77が高いグループを選択する。
この方法の利点を以下に説明する。類似度が低いグループデータは、圧縮率が低い(データの削減量が少ない)ことが予想される。そのため、そのグループデータは、圧縮せずにキャッシュ領域203に残す方がよい。もし、新たに受け入れたライトデータの中に、より類似したデータがあれば、キャッシュ領域203の上でグループを作り直して類似度77を高めれば、圧縮率を改善できる可能性がある。一方、類似度が高いグループデータは、圧縮率が高い(データの削減量が多い)ことが期待できるため、キャッシュ領域203に残しても、新たに受け入れたライトデータの中に、より類似したデータがあることは期待できず、グループを作り直しても圧縮率が改善される可能性は低い。従って、最も類似度が高いグループを、(S8)圧縮の対象として選択するのが望ましい。
図13は、図2のストレージ装置におけるスロットとグループの構成例を示す図である。
図13において、ライト命令によって書かれる8KBデータ1201は、ホスト計算機30から見えるボリューム1210で管理される。ボリューム1210のアドレス空間は、複数のスロット1200で構成され、ライト命令によって書かれる8KBデータ1201の割当先アドレス1100は、スロット1200の1つが占めるアドレス空間に含まれる。
「スロットの排他を確保」とは、ホスト計算機30からのリード命令及びライト命令で指定されたアドレスが示すスロットに対するリード及びライトを防ぐ操作であり、排他を確保したことをホスト計算機30が認識するための情報が管理される。なお、この情報はビットマップ又は時間情報など識別できるものであれば種別は問わない。また、本実施形態において、「スロット」が、ボリューム(例えば、シンプロビジョニングに従うボリューム)における領域単位であるのに対し、「データ領域」は、スロットに割り当てられる領域(例えば、プール内の領域であるプール領域)である。例えば、ボリューム内の1個の256KBスロットに割り当てられたプール領域には、8KBデータを32個格納できる。
類似関係にある16個の8KBデータを含むグループは、ホスト計算機30から見えない別のボリューム1220で管理される。ボリューム1220のアドレス空間も、複数のスロット1202で構成される。ボリューム1220のスロット1202は、それぞれ2つのグループ1203で構成される。それら2つのグループ1203のアドレスは、それらを構成するスロット1202が占めるアドレス空間に含まれる。また、ある1つのグループ1203に16個含まれる、類似関係にある8KBデータ1204のアドレスは、そのグループ1203が占めるアドレス空間に含まれる。
図14は、図2のストレージ装置が実行する類似ハッシュ算出処理を示す図である。なお、図14では、簡単のため、類似ハッシュの対象データの数は2つ(データA、B)とし、各データのサイズは37Bである場合を例にとる。データの数およびサイズが増えても、類似ハッシュの算出方法は同様である。
図14において、各データA、Bについて、例えば、第K文字目から始まる連続3文字を35個抽出する。ここで、Kは、1〜35である。以下、これらの3文字を単語と呼ぶ。2つのデータが共通の単語を多く含むかを判断することで類似性の強さを評価する。単語は、各データA、B内のどの位置に存在してもよいので、開始点(すなわち、K)を1バイトステップで変えながら単語を抽出する。
次に、各データA、Bにおいて、35個の単語の出現頻度(以下、頻度と言う)を示す頻度順位表141、142を作成する。各頻度順位表141、142において、頻度の高いものから順に単語を並べる。ただし、頻度の少ない単語(例えば1回の単語)は、各頻度順位表141、142から除く。
図14では、2つの頻度順位表141、142において共通する単語同士を線で結んでいる。共通する単語の数(積集合の要素数)を、両者の単語の和集合の要素数で割ることで、データA、B間の類似関係の強さSがわかる。この例では、共通単語数が6、和集合の要素数が11であるため、強さS=6/11である。
なお、頻度順位表141、142から頻度の少ない単語を除いた理由は、スライド辞書圧縮において頻度の少ない単語は一致文字列になる可能性が低く、頻度の少ない単語よりも多い単語の共通性を評価する方が、圧縮率を高くする上で効果的だからである。
なお、図14の例では、単語のサイズを3バイトとしたが、それに限定しない。スライド辞書圧縮の多くが3〜4バイト程度を一致文字列の最小検出長としているため、3〜4バイト程度が望ましい。
全てのデータについて頻度順位表をその付属情報として管理し、互いの類似関係の強さSの計算に用いると、ストレージ装置11における管理情報の記憶量が多くなる。そこで、全てのデータの頻度順位表を管理しなくても、その中のある2つのデータ間の類似関係の強さSを近似的に評価できるb−bit Min−wise HashというLSHアルゴリズムを適用する。そのアルゴリズムを以下に示す。
n個のハッシュ関数を用意する。次に、データAの頻度順位表141に出現する10個の単語144をそれぞれn(nは2以上の整数)個のハッシュ関数に通してハッシュ値を計算する。この結果、データAから10×n個のハッシュ値が生成される。
そして、各ハッシュ関数k(kは1〜n)からのハッシュ値10個の中の最小値146を求め、n個の最小値146を得る。それらn個の最小値146を並べてデータAについての類似ハッシュ147を構成する。
データBにも同様の処理を行う。つまり、7×n個のハッシュ値が生成され、各ハッシュ関数kからの7個のハッシュ値の中の最小値146を求め、n個の最小値146を得る。それらn個の最小値146を並べてデータBについての類似ハッシュ147を構成する。
このようにして計算した各データA、Bについての2つの類似ハッシュ147のハミング距離をH、ハッシュ関数のビット長をbとすると、類似関係の強さSの近似値Jは、以下の式で与えられる。
J={(n−H)/n−(1/2)^b}/{1−(1/2)^b}
nとbが大きいほど、近似値Jの近似精度が向上する。
以上の方法により、各データの類似ハッシュ147(各サイズはn×bビット)を管理しておけば、ある2つのデータ間の類似関係の強さSを近似的に求めることができる。例えば、n=16、b=8の場合、8KBデータ当たり16Bの付属情報(0.2%)を持つだけでよい。
ある2つのデータの類似ハッシュ147のハミング距離H=0であるとき、J=1となる。つまり、両データの類似関係の強さSは100%である。ハミング距離H=0(類似ハッシュ147が一致)のとき、両データは全く同じ内容である可能性がある。このため、重複排除処理のための重複データ検出に類似ハッシュ147を用いることも可能である。実際に重複しているか否かは、8KB全体を比較して判定する必要があるが、類似ハッシュ147が一致するか否かで、比較候補を絞り込むことができる。以上、類似ハッシュ算出方法の一例を説明したが、類似ハッシュ算出方法は、この方法に限定されない。
図15は、図2のストレージ装置が実行するデータリード処理を示すフローチャートである。
図15において、リード処理は、図2のホスト計算機30からネットワーク31を介してストレージ装置11がリード命令を受けた場合に開始される。リード命令では、例えば、ボリュームID、アドレス及びデータサイズが指定される。
S1801において、プロセッサ24は、指定アドレスから特定されるスロットの排他を確保する。なお、スロット排他確保時に他の処理がスロットの排他を確保している場合、プロセッサ24は、一定の時間待ってから、S1801を行う。
次に、S1802において、プロセッサ24は、リード対象データがキャッシュ領域203に存在するか否かを判定し、S1802の判定結果が真の場合、S1807に進む。
一方、S1802の判定結果が偽の場合、プロセッサ24は、S1803において、RAIDグループを構成するドライブから対象データ含む圧縮されたグループデータをリードする。この際、プロセッサ24は、ホスト計算機30が指定したボリュームIDとアドレスから、図6のプール割当管理テーブル210のプールID73、プールアドレス74及び圧縮後サイズ76を特定し、図7のドライブ割当管理テーブル211からドライブID84及びドライブアドレス85を参照し、対象データを含む圧縮されたグループデータのドライブ上の格納場所及びサイズを特定する。
次に、S1804において、プロセッサ24は、ドライブからリードした圧縮されたグループデータをバッファ領域202にライトする。
次に、S1805において、プロセッサ24は、バッファ領域202上にライトした圧縮されたグループデータを伸張する。
次に、S1806において、プロセッサ24は、バッファ領域202上の伸張されたグループデータから指定サイズの対象データを抽出する。
次に、S1807において、プロセッサ24は、バッファ領域202上の対象データをホスト計算機30に転送する。ホスト計算機30は、このデータ転送が完了した時点でリード処理が終了したと認識する。
次に、S1808において、プロセッサ24は、S1801で確保していたスロット排他を解放する。
なお、S1805の伸張処理は、プロセッサ24の負荷低減のため、図2のオフロードエンジン214が高性能なハードウェアを用いて代わりに行ってもよい。その際に、オフロードエンジン214は、バッファ領域202の代わりにバッファ領域216を使うことにより、メモリ25の転送帯域の消費を抑えることができる。
図16は、図2のストレージ装置が実行するデータライト処理を示すフローチャートである。なお、以下の説明では、例えば、図1のストレージコントローラ22Aに対応する図2のプロセッサ24をプロセッサ24Aと記載するなど、図1の各ストレージコントローラ22A、22Bに属するものをそれぞれ参照符号に付した「A」及び「B」によって区別する。
図16において、データライト処理は、図2のホスト計算機30からストレージ装置11がライト命令を受信した場合に開始される。ライト命令では、例えば、ボリュームID、アドレス及びデータサイズが指定される。このデータライト処理は、図1の(S1)〜(S5)で実行される。
S1501において、プロセッサ24Aは、指定アドレスから特定されるスロットの排他を確保する。なお、スロット排他確保と同時に、プロセッサ24Aは、データのライト先とするキャッシュ領域203Aの部分を割り当てる。
次に、S1502において、プロセッサ24Aは、ホスト計算機30に対してライト処理の準備ができたことを示す「Ready」を応答する。プロセッサ24Aは、「Ready」を受け取ったホスト計算機30から、ライトデータを受信する。
次に、S1503において、プロセッサ24Aは、ホスト計算機30から受信したライトデータをキャッシュ領域203Aに割り当てたスロット領域にライトする。
次に、S1504において、プロセッサ24Aは、ストレージコントローラ22Aからストレージコントローラ22Bに対してキャッシュ領域203Aに格納したライトデータを転送し、キャッシュ領域203Bに格納することで二重化を行う。
次に、S1505において、プロセッサ24Aは、図9のグループ管理テーブル212と図10のメモリ割当管理テーブル213を更新する。ライトデータは、重複排除および類似グルーピング(両者を合わせて、圧縮前データ構築処理と呼ぶ)がまだ実施されていない。なお、類似グルーピングは、類似関係にあるデータのグルーピングである。そのため、プロセッサ24Aは、グループ管理テーブル212において、ライトデータのホストVOLスロットに対応するシステムVOLスロットのアドレス905、グループ番号906および位置情報907に“None”を設定する。また、プロセッサ24Aは、メモリ割当管理テーブル213で、ライトデータのホストVOLスロットに対応するキャッシュ状態912において、ライトデータのキャッシュ状態を“Dirty”に設定し、キャッシュアドレス913には、キャッシュ領域203Aのライトデータ格納先アドレスを設定する。
次に、S1506において、プロセッサ24Aは、ネットワーク31を介してホスト計算機30に対してライト処理が完了したとして完了応答を返却する。
次に、S1507において、プロセッサ24Aは、S1501で確保していたスロットの排他を解放してライト処理を終了する。
図17は、図2のストレージ装置が実行する圧縮前データ構築処理を示すフローチャートである。
図17において、圧縮前データ構築処理は、ライト処理が終了した後にプロセッサ24が行う。圧縮前データ構築処理は、ライト処理終了直後に実行してもよいし、他に優先して行うべき処理があれば、その処理の後に実行してもよい。この圧縮前データ構築処理は、図1の(S6)〜(S7)で実行される。
S1601において、プロセッサ24は、キャッシュ領域203に格納したホストVOL上のライトデータを選択する。
次に、S1602において、プロセッサ24は、選択したライトデータのアドレスから特定されるスロットの排他を確保する。
次に、S1603において、プロセッサ24は、例えば、図14で説明した方法に従って、選択したデータの類似ハッシュを算出する。
次に、S1604において、プロセッサ24は、算出した類似ハッシュをハッシュテーブルに登録し、それまでに登録された1つ以上の類似ハッシュとの間でハミング距離Hを計算して、他のデータとの類似度を評価する。
次に、S1605において、類似ハッシュが一致し、かつ内容も一致するデータがある場合は、プロセッサ24は、そのデータとライトデータとの間で重複排除処理S1606を実行し、S1611に進む。
重複排除処理S1606では、プロセッサ24は、ライトデータと内容が一致するデータが含まれるシステムVOL上のスロットとグループを特定し、そのグループ内の一致するデータの位置番号を特定する。プロセッサ24は、その特定結果に基づいて、S1611で、図9のグループ管理テーブル212を更新する。すなわち、プロセッサ24は、システムVOLアドレス905、グループ番号906及び位置番号907の値が等しくなるように設定する。このとき、グループ管理テーブル212は、例えば、第5行目と第8行目のエントリの対象データは重複排除されていることを示す。
一方、S1605において、類似ハッシュが一致するデータがない場合、または、類似ハッシュが一致し、かつ内容も一致するデータがない場合は、S1607に進む。
次に、S1607において、プロセッサ24は、ハミング距離Hの最小値があらかじめ規定した基準値以下であるかを判定する。判定結果が真であれば、プロセッサ24は、類似関係にあるデータが存在すると判断し、S1608において、その最小値をもたらすデータが含まれるシステムVOL上のグループを選択し、S1610に進む。
一方、S1607の判定結果が偽であれば、プロセッサ24は、類似関係にあるデータは存在しないと判断し、S1609において、システムVOL上に新たにグループを作成する。この時、プロセッサ24は、グループデータ格納先としてキャッシュ領域203の部分を割り当て、S1610に進む。
次に、S1610において、プロセッサ24は、システムVOL上の選択または作成されたグループに対応するキャッシュ領域部分に、ホストVOL上のライトデータを転送する。
次に、S1610から遷移したS1611において、プロセッサ24は、グループ管理テーブル212を更新する。すなわち、プロセッサ24は、システムVOLアドレス905に選択または作成したシステムVOL上のグループを含むスロットのアドレスを設定し、グループ番号906に当該グループの番号を設定し、位置番号907にライトデータが転送されたグループ内での位置を設定する。なお、ライトデータを転送したグループが、新しく作成したグループであり(つまり、S1609を経ており)、当該グループを含むスロットにおける最初のグループである場合は、さらに、プロセッサ24は、メモリ割当管理テーブル213にそのスロットのエントリを追加する。すなわち、プロセッサ24は、VOL_ID908にシステムVOLのIDを設定し、VOLアドレス909に当該グループを含むスロットアドレスを設定する。また、BF転送状態910に“未”を、BFアドレス911に“None”を設定する。また、キャッシュ状態912の当該グループのキャッシュ状態に“Dirty”を設定する。また、キャッシュアドレス913にはキャッシュ領域203の割り当て部分のアドレスを設定する。
次に、S1612において、プロセッサ24は、ライトデータのアドレスから特定されるスロットの排他を解放して圧縮前データ構築処理を終了する。
なお、S1603の類似ハッシュ算出、S1604のハッシュ登録・評価は、プロセッサ24の負荷低減のため、図2のオフロードエンジン214が高性能なハードウェアを用いて代わりに行ってもよい。その際、オフロードエンジン214は、メモリ215をワークメモリとして使うことにより、メモリ25の転送帯域の消費を抑えることができる。
また、類似ハッシュを登録するためのハッシュテーブルは、キャッシュに乗っているデータの類似ハッシュを保持する。データがキャッシュから落とされるとき、そのデータの類似ハッシュをハッシュテーブルから削除する。
また、S1610において、選択したグループのキャッシュ領域203にライトデータを格納する領域がない場合は、プロセッサ24は、そのグループの所属データで最も他の所属データとの類似性が低いデータを選択し、そのグループから除外してライトデータの格納先を確保する。すなわち、プロセッサ24は、グループ管理テーブル212において、除外対象データのエントリのシステムVOLアドレス905、グループ番号906及び位置番号907に“None”を設定する。これは、除外されたデータが再び重複排除および類似グルーピング(図16参照)が施される準備ができたことを意味する。
図18は、図2のストレージ装置が実行する圧縮・デステージ処理を示すフローチャートである。
図18において、圧縮・デステージ処理は、圧縮前データ構築処理が終了したグループデータについて、キャッシュ領域203の“Dirty”比率が閾値以上となったことを契機として、非同期的に行われる。ただし、プロセッサ24が低負荷な状態であれば、“Dirty”比率が閾値未満であっても、デステージ処理を開始してもよい。また、“Dirty”比率を問わず、タイマを用いて周期的にデステージ処理を開始してもよい。この圧縮・デステージ処理は、図1の(S8)〜(S10)で実行される。
S1701において、プロセッサ24は、キャッシュ領域203内で“Dirty”状態のスロットに含まれるグループの中から、デステージ対象のグループを選択する。具体的には、プロセッサ24は、上述の通り、LRUスロットに含まれるグループまたは最後のアクセスからの経過時間が長い複数スロットに含まれるグループのうち、最も類似度が高いグループを選択する。
次に、S1702において、プロセッサ24は、デステージ対象のグループが属するシステムVOLスロットの排他を確保し、さらに、デステージするグループに転送されたデータが属するホストVOLスロットの排他を確保する。
次に、S1703において、プロセッサ24は、デステージ対象のグループデータ(128KB)を読み出して、可逆圧縮処理を行う。
次に、S1704において、プロセッサ24は、圧縮されたグループデータ(128KB未満)の格納先としてバッファ領域202の部分を割り当て、その格納先へ圧縮グループデータをライトする。なお、バッファ領域202のアドレス割り当てでは、パリティサイクル分の圧縮グループが集まるまで割り当てを繰り返すことが明らかなため、あらかじめパリティサイクル分のアドレスを一括して割り当ててもよい。
次に、S1705において、プロセッサ24は、図10のメモリ割当管理テーブル213のBF転送状態910を“済”に更新する。また、BFアドレス911に、割り当てたバッファ部分のアドレスを設定する。
次に、S1706において、プロセッサ24は、S1702で確保したスロットの排他を解放する。
次に、S1707において、プロセッサ24は、バッファ内の圧縮グループデータの蓄積量を計算する。圧縮グループデータの蓄積量がパリティサイクル分よりも小さい場合、プロセッサ24は、S1701に戻ってデステージ対象のグループを追加で選択する。
一方、パリティサイクル分の圧縮グループデータがバッファ領域202内に溜まった場合は、S1708に進む。なお、圧縮グループデータのサイズは可変であるため、バッファ領域202内の蓄積量が必ずしもパリティサイクル分に一致するとは限らない。パリティサイクル分に達する前にS1708へ処理を進めることもあり得る。
次に、S1708において、プロセッサ24は、バッファ領域202内に蓄積された圧縮グループデータ列からパリティを生成する。
次に、S1709において、プロセッサ24は、圧縮グループデータ列及び生成したパリティを、RAIDグループを構成するドライブ29に書き出す。プロセッサ24は、ドライブ29への書き出し後に、バッファ領域の使用していた部分を解放する。
次に、S1710において、プロセッサ24は、デステージ対象のグループを含むシステムVOLスロットの排他を確保し、さらに、デステージ対象のグループに転送されたデータが属するホストVOLスロットの排他を確保する。
次に、S1711において、プロセッサ24は、メモリ割当管理テーブル213で、デステージ対象のグループを含むシステムVOLスロットのキャッシュ状態912において、当該グループのキャッシュ状態を“Clean”に更新する。その結果、プロセッサ24は、2個のグループのキャッシュ状態がともに“Clean”となれば、BFアドレス911を“None”に設定し、バッファ領域202の使用部分を解放する。このシステムVOLスロットは“Clean”状態となり、いつでもキャッシュから解放して“Free”状態のキャッシュリソースを作ることができる。さらに、プロセッサ24は、メモリ割当管理テーブル213で、デステージ対象のグループに転送された各データが属するホストVOLスロットのキャッシュ状態912において、当該データのキャッシュ状態を“Clean”に更新する。その結果、キャッシュ状態912が全て“Clean”となったホストVOLスロットは、いつでもキャッシュから解放して“Free”状態のキャッシュリソースを作ることができる。
次に、S1712において、プロセッサ24は、デステージ対象のグループを含むホストVOLスロットの排他を解放し、さらに、デステージ対象のグループに転送されたデータが属するホストVOLスロットの排他を解放し、処理を終了する。
以上の圧縮・デステージ処理において、キャッシュから解放されるグループは、アクセス頻度が低く、類似関係が強いデータが優先される。従って、ホスト計算機30からのアクセスがキャッシュヒットする確率がより高くなるため、アクセス性能が向上する。また、ドライブ29に格納されるデータの圧縮率がより高くなるため、データ削減効率が向上する。
なお、S1703の可逆圧縮は、プロセッサ24の負荷低減のため、図2のオフロードエンジン214が高性能なハードウェアを用いて代わりに行ってもよい。その際、オフロードエンジン214は、メモリ215のバッファ領域216をバッファ領域202の代わりとして使うことにより、メモリ25の転送帯域の消費を抑えることができる。
図19は、図2のストレージ装置が実行するデータ削除リトライ処理を示すフローチャートである。
図19において、データ削減リトライ処理は、図2のドライブ29にデステージした圧縮グループを構成するデータを再度キャッシュ領域203に戻して、重複排除および類似グルーピングをリトライできる状態にする。デステージしたグループデータの類似度77が悪かった場合、このデータ削減リトライ処理によって、前より類似関係の強いデータを含むグループが構築され得るため、ストレージ装置11のデータ削減率を改善することができる。
S1901において、プロセッサ24は、図6のプール割当管理テーブル210で管理されているシステムVOLスロットの1つを選択する。
次に、S1902において、プロセッサ24は、プール割当管理テーブル210で、そのシステムVOLスロットに含まれるグループの類似度77が、あらかじめ規定した基準値以下であるかを判定する。
S1902の判定結果が偽であれば、プロセッサ24は、そのシステムVOLスロットのデータ削減は不要として処理を終了する。判定結果が真であれば、S1903に進む。
次に、S1903において、プロセッサ24は、そのシステムVOLスロットの排他を確保する。さらに、図9のグループ管理テーブル212を参照し、当該システムVOLスロット内の類似度が基準値以下のグループを構成するホストVOLスロットのデータを特定し、そのホストVOLスロットの排他も確保する。
次に、S1904において、プロセッサ24は、図10のメモリ割当管理テーブル213を参照し、特定したデータがキャッシュ領域203に存在するか否かを判定する。
S1904の判定結果が真の場合、プロセッサ24は、メモリ割当管理テーブル213において、そのデータのキャッシュ状態912に“Dirty”を設定する。また、グループ管理テーブル212において、当該ホストVOLスロットのデータのエントリのシステムVOLアドレス905、グループ番号906及び位置番号907に“None”を設定し、既存のシステムVOLスロットのグループとの対応関係を切る。これは、当該データが重複排除および類似グルーピング(図16参照)が施される準備ができたことを意味する。そして、S1909に進む。
一方、S1904の判定結果が偽の場合、プロセッサ24は、S1905において、RAIDグループのドライブから、S1902で類似度が基準値以下と判定した圧縮グループデータをリードする。この際、プロセッサ24は、図6のプール割当管理テーブル210のプールID73、プールアドレス74及び圧縮後サイズ76を特定し、ドライブ割当管理テーブル211からドライブID84及びドライブアドレス85を参照し、その圧縮グループデータのドライブ上の格納場所及びサイズを特定する。
次に、S1906において、プロセッサ24は、その圧縮グループデータをバッファ領域202にライトする。
次に、S1907において、プロセッサ24は、バッファ領域202上の圧縮グループデータを伸張する。
次に、S1908において、プロセッサ24は、キャッシュ領域203内に当該データの格納用の領域を割り当て、バッファ領域202上の伸張されたグループから抽出したデータを、その割り当て領域にライトする。この際、プロセッサ24は、メモリ割当管理テーブル213のVOL_ID908に当該データの属するホストVOLのIDを設定し、VOLアドレス909に当該データの属するホストVOLスロットのアドレスを設定し、キャッシュ状態912に“Dirty”を設定し、キャッシュアドレス913にその割り当て領域のアドレスを登録する。また、プロセッサ24は、グループ管理テーブル212において、当該ホストVOLスロットのデータのエントリを削除し、既存のシステムVOLスロットのグループとの対応関係を切る。これは、当該データは重複排除や類似グルーピング(図16参照)が施される準備ができたことを意味する。そして、S1909に進む。
次に、S1909において、プロセッサ24は、S1903で確保したシステムVOLスロット及びホストVOLスロットの排他も解放し、データ削減リトライ処理を終了する。
なお、S1907の伸張処理は、プロセッサ24の負荷低減のため、図2のオフロードエンジン214が高性能なハードウェアを用いて代わりに行ってもよい。その際、オフロードエンジン214は、メモリ215のバッファ領域216をバッファ領域202の代わりとして使うことにより、メモリ25の転送帯域の消費を抑えることができる。
図20は、図2のストレージ装置におけるデータ伸張処理の過程を示す図である。
図20において、プロセッサ24は、類似関係にある複数の8KBデータをグルーピングする処理において、データの並び順と伸張処理を最適化することで、データリード処理の性能を改善する。
データリード処理では、ホスト計算機30からリード命令を受けたデータがキャッシュ領域203にはなく、ドライブ29に格納されていた場合、プロセッサ24は、圧縮されたグループデータ1103を伸張して、128KBサイズのグループ1102を復元し、その復元したデータからリード対象の8KBデータを抽出してホスト計算機30に応答する。
このとき、プロセッサ24は、圧縮されたグループデータの伸張処理において、先頭の8KBデータから順に復元する。リード対象データが1100Cの場合、プロセッサ24は、復元までに範囲2001の部分を伸張すればよい。リード対象データが1100Dの場合、プロセッサ24は、復元までに範囲2002の部分を伸張すればよい。すなわち、リード対象データがグループデータの先頭に近いほど、プロセッサ24は、短い時間でデータを復元できる。
プロセッサ24は、この特性を利用して、リード対象データが復元できた時点でグループデータの伸張処理を中断する。さらに、プロセッサ24は、ホストVOLのアドレス空間を複数の区間に分けて、所定時間範囲(例えば、過去10時間)におけるそれぞれの区間のアクセス頻度を調べる。
プロセッサ24は、類似グルーピングの際に、ホスト計算機30からのアクセス頻度が高い区間にあるデータほど、グループの先頭に近い(位置番号が小さい)位置に配置する。アクセス頻度が低い区間にあるデータほど、グループの末尾に近い(位置番号が大きい)位置に配置する。これにより、ストレージ装置11は、ホスト計算機30からのリード命令に対して、平均応答時間を短縮することができる。
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は、本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によってハードウェアで実現してもよい。すなわち、類似ハッシュ算出、ハッシュ登録、ハッシュ評価及び可逆圧縮・伸張処理をオフロードエンジンの高速ハードウェアが代行して処理するという変形例以外の実施形態もある。
また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、不揮発性半導体メモリ、HDD、SSD等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
また、制御線及び情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線及び情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてもよい。
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。
100 ストレージシステム、11 ストレージ装置、22、22A、22B ストレージコントローラ、24 プロセッサ、25、215 メモリ、202、216 バッファ領域、203、203A、203B キャッシュ領域、214 オフロードエンジン、29 ドライブ、30 ホスト計算機、31 ネットワーク

Claims (10)

  1. 物理記憶領域を有するドライブと、前記ドライブに入出力するデータを処理するコントローラを備え、
    前記コントローラは、
    前記ドライブにリードまたはライトされるデータを格納するキャッシュ領域を備え、
    前記コントローラは、
    前記キャッシュ領域に格納され前記ドライブに入力される複数のデータについて、そのデータ間の類似度に基づいてグループ化し、
    前記グループを選択し、
    選択したグループのデータをグループ単位で圧縮し、
    前記圧縮したデータを前記ドライブに格納させるストレージシステム。
  2. 前記グループの選択は、前記グループ内のデータへのアクセス頻度および前記グループに含まれる複数のデータ間の類似度に基づいて行う請求項1に記載のストレージシステム。
  3. 前記コントローラは、前記グループのアクセス頻度が第1設定値以下かつ前記グループに含まれるデータ間の類似度が第2設定値以上の場合、前記キャッシュ領域に格納されたデータのグループを選択して圧縮する請求項2に記載のストレージシステム。
  4. 前記コントローラは、前記キャッシュ領域におけるダーティキャッシュ比率が所定値以上の場合、前記キャッシュ領域に格納されたデータのグループを選択して圧縮する請求項3に記載のストレージシステム。
  5. 前記グループ化するデータは、別個のライト要求に基づいて前記キャッシュ領域に格納された複数のデータを含む請求項1に記載のストレージシステム。
  6. 前記コントローラは、
    前記ドライブに圧縮して格納された前記グループに含まれるデータ間の類似度を管理し、
    前記ドライブに圧縮して格納されたデータを含むグループのうち、前記データ間の類似度が基準値以下のグループを選択し、
    前記選択したグループに含まれるデータを前記ドライブから読み出して伸張し、前記伸張したデータを再グループ化及び再圧縮のために前記キャッシュ領域に格納する請求項1に記載のストレージシステム。
  7. 前記コントローラは、
    圧縮したデータの伸長は、先頭側から完了し、
    前記圧縮時には、同一グループに含まれるデータについて、前記アクセス頻度の高いデータを前記アクセス頻度の低いデータに比べて前記グループの先頭により近い位置に配置する請求項2に記載のストレージシステム。
  8. 前記コントローラは、前記データのハッシュ値に基づいて、前記類似度を評価し、
    前記ハッシュ値の計算に用いる入力値は、前記データに含まれる同一長の複数の文字列であって、前記文字列は、前記データにおける出現頻度が所定数以上である請求項1に記載のストレージシステム。
  9. 前記コントローラは、
    ライト要求にかかるデータについて、重複排除判定を行い、
    重複排除要の場合には、重複排除処理を行い、
    重複排除不要の場合には、前記グループ化、圧縮及びドライブ格納を行う請求項1に記載のストレージシステム。
  10. 物理記憶領域を有するドライブと、前記ドライブに入出力するデータを処理するコントローラを備えるストレージシステムのデータ圧縮方法であって、
    前記コントローラは、
    前記ドライブにリードまたはライトされるデータを格納するキャッシュ領域を備え、
    前記コントローラは、
    前記キャッシュ領域に格納され前記ドライブに入力される複数のデータについて、そのデータ間の類似度に基づいてグループ化し、
    前記グループを選択し、
    選択したグループのデータをグループ単位で圧縮し、
    前記圧縮したデータを前記ドライブに格納させるストレージシステムのデータ圧縮方法。

JP2019230475A 2019-12-20 2019-12-20 ストレージシステムおよびストレージシステムのデータ圧縮方法 Active JP7034132B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019230475A JP7034132B2 (ja) 2019-12-20 2019-12-20 ストレージシステムおよびストレージシステムのデータ圧縮方法
CN202010810576.XA CN113010097A (zh) 2019-12-20 2020-08-13 存储系统和存储系统的数据压缩方法
US16/993,888 US11455122B2 (en) 2019-12-20 2020-08-14 Storage system and data compression method for storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019230475A JP7034132B2 (ja) 2019-12-20 2019-12-20 ストレージシステムおよびストレージシステムのデータ圧縮方法

Publications (2)

Publication Number Publication Date
JP2021099611A true JP2021099611A (ja) 2021-07-01
JP7034132B2 JP7034132B2 (ja) 2022-03-11

Family

ID=76383558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019230475A Active JP7034132B2 (ja) 2019-12-20 2019-12-20 ストレージシステムおよびストレージシステムのデータ圧縮方法

Country Status (3)

Country Link
US (1) US11455122B2 (ja)
JP (1) JP7034132B2 (ja)
CN (1) CN113010097A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023081676A (ja) * 2021-12-01 2023-06-13 株式会社日立製作所 ストレージシステム及びデータ処理方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI703438B (zh) * 2018-09-11 2020-09-01 慧榮科技股份有限公司 映射表更新方法
US11853568B2 (en) * 2020-10-21 2023-12-26 EMC IP Holding Company LLC Front-end offload of storage system hash and compression processing
CN116009760A (zh) * 2021-10-21 2023-04-25 戴尔产品有限公司 缓存管理的方法、系统和计算机程序产品
US12045462B2 (en) * 2022-09-13 2024-07-23 Dell Products L.P. System and method to create application copies for copy reuse utilizing the application backup data stored in secondary storage
CN116112434B (zh) * 2023-04-12 2023-06-09 深圳市网联天下科技有限公司 一种路由器数据智能缓存方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018073261A (ja) * 2016-11-02 2018-05-10 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法
JP2019046023A (ja) * 2017-08-31 2019-03-22 富士通株式会社 情報処理装置、情報処理方法及びプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1849082B1 (en) * 2005-02-07 2013-08-21 ST-Ericsson SA Data processing system and method of cache replacement
US9413527B2 (en) * 2009-04-30 2016-08-09 HGST Netherlands B.V. Optimizing signature computation and sampling for fast adaptive similarity detection based on algorithm-specific performance
US9582222B2 (en) * 2009-04-30 2017-02-28 Western Digital Technologies, Inc. Pre-cache similarity-based delta compression for use in a data storage system
WO2013186828A1 (ja) * 2012-06-11 2013-12-19 株式会社 日立製作所 計算機システム及び制御方法
US9116902B1 (en) * 2012-06-13 2015-08-25 Emc Corporation Preferential selection of candidates for delta compression
US9367557B1 (en) 2013-09-26 2016-06-14 Emc Corporation System and method for improving data compression
US10838990B1 (en) * 2013-09-26 2020-11-17 EMC IP Holding Company LLC System and method for improving data compression of a storage system using coarse and fine grained similarity
US10216754B1 (en) * 2013-09-26 2019-02-26 EMC IP Holding Company LLC System and method for balancing compression and read performance in a storage system
US9916248B2 (en) * 2013-12-12 2018-03-13 Hitachi, Ltd. Storage device and method for controlling storage device with compressed and uncompressed volumes and storing compressed data in cache
KR102525061B1 (ko) * 2016-07-19 2023-04-21 에스케이하이닉스 주식회사 입력 데이터를 압축하여 저장하는 데이터 저장 장치
JP6802209B2 (ja) * 2018-03-27 2020-12-16 株式会社日立製作所 ストレージシステム
US10884627B2 (en) * 2018-09-26 2021-01-05 International Business Machines Corporation Compacting data in a dispersed storage network
US10990310B2 (en) * 2019-04-24 2021-04-27 EMC IP Holding Company LLC Sub-block data deduplication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018073261A (ja) * 2016-11-02 2018-05-10 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法
JP2019046023A (ja) * 2017-08-31 2019-03-22 富士通株式会社 情報処理装置、情報処理方法及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023081676A (ja) * 2021-12-01 2023-06-13 株式会社日立製作所 ストレージシステム及びデータ処理方法
JP7431791B2 (ja) 2021-12-01 2024-02-15 株式会社日立製作所 ストレージシステム及びデータ処理方法

Also Published As

Publication number Publication date
JP7034132B2 (ja) 2022-03-11
US20210191658A1 (en) 2021-06-24
US11455122B2 (en) 2022-09-27
CN113010097A (zh) 2021-06-22

Similar Documents

Publication Publication Date Title
JP7034132B2 (ja) ストレージシステムおよびストレージシステムのデータ圧縮方法
US20210157523A1 (en) Storage system
JP6507245B2 (ja) データベース検索システム及びデータベース検索方法
US9582222B2 (en) Pre-cache similarity-based delta compression for use in a data storage system
US8880787B1 (en) Extent metadata update logging and checkpointing
US8712963B1 (en) Method and apparatus for content-aware resizing of data chunks for replication
US10222988B2 (en) Efficient management storage system via defining of several size units in advance
US11029862B2 (en) Systems and methods for reducing write tax, memory usage, and trapped capacity in metadata storage
US9141631B2 (en) Table boundary detection in data blocks for compression
US9098202B2 (en) Storage apparatus and data management method
US20150205663A1 (en) Clustered raid data organization
US10503424B2 (en) Storage system
US11321229B2 (en) System controller and system garbage collection method
WO2016181479A1 (ja) ストレージシステムおよび記憶制御方法
CN110968262B (zh) 存储装置和数据存储方法
US10592150B2 (en) Storage apparatus
US9720608B2 (en) Storage system
US9183217B2 (en) Method for decompressing data in storage system for write requests that cross compressed data boundaries
WO2012109145A2 (en) Pre-cache similarity-based delta compression for use in a data storage system
US11249666B2 (en) Storage control apparatus
US20220164146A1 (en) Storage system and control method for storage system
WO2022237245A1 (zh) 一种数据处理方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211021

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220301

R150 Certificate of patent or registration of utility model

Ref document number: 7034132

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350