JP2018041248A - ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム - Google Patents

ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム Download PDF

Info

Publication number
JP2018041248A
JP2018041248A JP2016174565A JP2016174565A JP2018041248A JP 2018041248 A JP2018041248 A JP 2018041248A JP 2016174565 A JP2016174565 A JP 2016174565A JP 2016174565 A JP2016174565 A JP 2016174565A JP 2018041248 A JP2018041248 A JP 2018041248A
Authority
JP
Japan
Prior art keywords
storage
data block
write
data
host device
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.)
Withdrawn
Application number
JP2016174565A
Other languages
English (en)
Inventor
弘貴 大辻
Hirotaka Otsuji
弘貴 大辻
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016174565A priority Critical patent/JP2018041248A/ja
Priority to US15/684,989 priority patent/US20180067680A1/en
Publication of JP2018041248A publication Critical patent/JP2018041248A/ja
Withdrawn legal-status Critical Current

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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/264Remote server

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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】書き込み要求のIOPSを一定以上に維持できる範囲で書き込み要求に対する応答時間を短縮する。
【解決手段】検出部1aは、ストレージノード11,12の少なくとも1つの記憶装置に格納されたデータブロックのうち、第1の処理21によって格納された第1のデータブロックの数と、第2の処理22によって格納された第2のデータブロックの数との比率を検出する。決定部1bは、検出された比率が、第2のデータブロックに対する第3の処理23の負荷と、ホスト装置からの書き込み要求を単位時間内に処理可能な回数の下限目標値とに基づく目標比率1cに近づくように、ホスト装置から新たに書き込みが要求された第3の書き込みデータブロックの書き込み処理を第1の処理21と第2の処理22のどちらを用いて実行するかを決定する。
【選択図】図1

Description

本発明は、ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラムに関する。
ストレージシステムの技術の1つとして、重複するデータを記憶装置に格納しないようにして、記憶装置の記憶領域を効率的に使用する「重複除去」と呼ばれる技術が知られている。この重複除去技術として、インライン方式とポストプロセス方式が知られている。インライン方式は、書き込みが要求されたデータを重複を除去して記憶装置に格納した後、書き込み要求に対する応答を返す方式である。ポストプロセス方式は、書き込みが要求されたデータを記憶装置に一時的に格納して応答を返し、格納されたデータの重複除去を事後的に行う方式である。
また、インライン方式の重複除去とポストプロセス方式の重複除去の両方を用いることも考えられている。例えば、所定条件下でファイル単位のインライン型重複除去を実行し、重複を除去できなかったファイルについて、チャンク単位でポストプロセス型重複除去を実行するストレージシステムが提案されている。また、インライン方式の重複除去の処理対象になっているデータの合計サイズと、ポストプロセス方式の重複除去の処理対象になっているデータの合計サイズとが均衡するように、適用する重複除去の方式を選択するストレージ装置も提案されている。なお、このストレージ装置では、ポストプロセス方式で処理されるデータの一時記憶領域の容量を抑制することを目的として、合計サイズが均衡するように方式が選択されている。
国際公開第2013/157103号 特表2015−528928号公報
ところで、インライン方式では、書き込み要求に対する応答を返す前に重複除去処理が実行される。このため、重複除去処理が事後的に実行されるポストプロセス方式と比較して、書き込み要求に対する応答時間が長くなるという問題がある。一方、ポストプロセス方式では、事後的に実行される、重複除去を含む一連の処理の負荷が、書き込み要求に対する応答処理の性能に影響を与える可能性がある。このため、事後的な処理の負荷によって、単位時間に書き込み要求を処理できる回数(IOPS:Input/Output Per Second)が低下する場合があるという問題がある。
特に、データが複数のノードに分散して格納されるストレージシステムでは、次のような問題によってIOPSが低下する場合がある。このようなストレージシステムでは、インライン方式が用いられる場合、書き込み要求を受信したノードから他のノードに対して、データが転送される場合がある。一方、ポストプロセス方式が用いられる場合には、ノード間のデータの転送が2回実行される場合がある。1つは、書き込み要求を受信したノードから、データが一時的に格納されるノードへのデータ転送である。もう1つは、データが一時的に格納されたノードから、重複を除去した格納が行われる他のノードへのデータ転送であり、これは事後的な処理に含まれる。
このように、ポストプロセス方式では、事後的な処理においてノード間のデータ転送が行われる場合があり、このデータ転送によるノード間の通信負荷が、書き込み要求に応答するために実行されるノード間通信の性能に影響を与える可能性がある。このため、事後的な処理における通信負荷によってIOPSが低下する場合があるという問題がある。
1つの側面では、本発明は、書き込み要求のIOPSを一定以上に維持できる範囲で書き込み要求に対する応答時間を短縮可能なストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラムを提供することを目的とする。
1つの案では、それぞれ記憶装置を有する複数のストレージノードを含むストレージシステムの動作を制御するストレージ制御装置が提供される。このストレージ制御装置は、検出部と決定部とを有する。
検出部は、複数のストレージノードの少なくとも1つの記憶装置に格納されたデータブロックのうち、第1の処理によって格納された第1のデータブロックの数と、第2の処理によって格納された第2のデータブロックの数との比率を検出する。ここで、第1の処理は、複数のストレージノードのうちホスト装置から第1の書き込みデータブロックの書き込み要求を受けたストレージノードから、第1の書き込みデータブロックを、複数のストレージノードのいずれかの記憶装置に対して重複を除去して第1のデータブロックとして格納し、ホスト装置に応答する処理を含む。また、第2の処理は、複数のストレージノードのうちホスト装置から第2の書き込みデータブロックの書き込み要求を受けたストレージノードから、第2の書き込みデータブロックを、複数のストレージノードのいずれかの記憶装置に対して重複除去処理をスキップして第2のデータブロックとして格納し、前記ホスト装置に応答する処理を含む。
決定部は、検出された比率が、第2のデータブロックに対する第3の処理の負荷と、ホスト装置からの書き込み要求を単位時間内に処理可能な回数の下限目標値とに基づく目標比率に近づくように、ホスト装置から新たに書き込みが要求された第3の書き込みデータブロックの書き込み処理を第1の処理と第2の処理のどちらを用いて実行するかを決定する。ここで、第3の処理は、複数のストレージノードのいずれかの記憶装置に対して、第2のデータブロックを重複を除去して格納し直す処理を含む。
また、1つの案では、それぞれ記憶装置を有する複数のストレージノードを含むストレージシステムが提供される。このストレージシステムにおいて、複数のストレージノードの少なくとも1つは、上記のストレージ制御装置を有する。
さらに、1つの案では、上記のストレージ制御装置と同様の処理をコンピュータが実行するストレージ制御方法が提供される。
また、1つの案では、上記のストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
1つの側面では、書き込み要求のIOPSを一定以上に維持できる範囲で書き込み要求に対する応答時間を短縮できる。
第1の実施の形態に係るストレージシステムの構成例および処理例を示す図である。 第2の実施の形態に係るストレージシステムの構成例を示す図である。 サーバのハードウェア構成例を示す図である。 各サーバが備えるキャッシュおよび主なテーブル情報について示す図である。 ハッシュ管理テーブルのデータ構成例を示す図である。 LBA管理テーブルのデータ構成例を示す図である。 インラインモードの書き込み制御処理の基本的な手順を示すシーケンス図である。 インラインモードでのテーブル更新処理例を示す図である。 ポストプロセスモードの書き込み制御処理の基本的な手順を示すシーケンス図である。 ポストプロセスモードでのテーブル更新処理例を示す図である。 ストレージシステムにおける読み出し制御処理の手順を示すシーケンス図である。 サーバが備える処理機能の構成例を示すブロック図である。 書き込み制御モードの決定処理について説明するための図である。 書き込み応答処理手順の例を示すフローチャートである。 モード決定処理手順の例を示すフローチャートである。 インラインモードでのIO制御処理手順の例を示すフローチャートである。 ポストプロセスモードでのIO制御処理手順の例を示すフローチャートである。 重複除去処理手順の例を示すフローチャートである。 インラインモードでのLBA管理処理手順の例を示す図である。 ポストプロセスモードでのLBA管理処理手順の例を示す図である。 バックグラウンドでのブロック再配置処理手順の例を示すフローチャートである。 デステージ処理手順の例を示すフローチャートである。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例および処理例を示す図である。図1に示すストレージシステムは、複数のストレージノードとストレージ制御装置1とを含む。図1の例では、ストレージシステムは2つのストレージノード11,12を含んでいるが、ストレージノードの数は2つに限定されず、3つ以上であってもよい。
ストレージノード11は、記憶装置11aを有する。ストレージノード12は、記憶装置12aを有する。ストレージノード11,12の間では、図示しないホスト装置から書き込みが要求されたデータブロックが記憶装置11a,12aに分散して格納される。
ストレージ制御装置1は、ストレージシステムの動作を制御する。ストレージ制御装置1は、検出部1aと決定部1bを有する。検出部1aと決定部1bの処理は、例えば、ストレージ制御装置1が備えるプロセッサが所定のプログラムを実行することで実現される。なお、ストレージ制御装置1は、ストレージノード11,12のいずれかに含まれてもよい。
検出部1aは、記憶装置11a,12aの少なくとも1つに格納されたデータブロックのうち、第1の処理21によって格納されたデータブロックの数と、第2の処理22によって格納されたデータブロックの数との比率を検出する。なお、検出部1aは、記憶装置11a,12aの両方に格納されたデータブロックの中から、第1の処理21によって格納されたデータブロックの数と、第2の処理22によって格納されたデータブロックの数との比率を検出する方が望ましい。しかし、検出の対象を複数の記憶装置の一部に限定することで、検出処理を簡易化できるとともに、検出の対象をすべての記憶装置とした場合の比率をある程度の精度で推測できる。
第1の処理21は、ホスト装置からデータブロックの書き込み要求を受けたストレージノード(例えば、ストレージノード12)から、そのデータブロックを、ストレージノード11,12のいずれかの記憶装置(例えば、ストレージノード11の記憶装置11a)に対して重複を除去して格納し(ステップS1a)、ホスト装置に対して応答する(ステップS1b)処理を含む。したがって、第1の処理21によって記憶装置に格納されたデータブロックとは、重複除去された状態で記憶装置に格納されたデータである。
なお、第1の処理21は、重複除去で利用するためのハッシュ値の計算を含んでもよい。また、データブロックが重複を除去して格納されるストレージノードは、データブロックが分散して格納されるように決定される。例えば、データブロックが重複を除去して格納されるストレージノードは、データブロックから算出されたハッシュ値に基づいて決定される。
一方、第2の処理22は、ホスト装置からデータブロックの書き込み要求を受けたストレージノード(例えば、ストレージノード12)から、そのデータブロックを、重複除去処理をスキップしてストレージノード11,12のいずれかの記憶装置(例えば、ストレージノード11の記憶装置11a)に格納し(ステップS2a)、ホスト装置に応答する(ステップS2b)処理を含む。したがって、第2の処理22によって記憶装置に格納されたデータブロックとは、重複除去が行われずに記憶装置に格納されたデータである。
なお、第2の処理22においてデータブロックが格納されるストレージノードは、データブロックが分散して格納されるように決定される。例えば、第2の処理22においてデータブロックが格納されるストレージノードは、書き込み先として指定された論理アドレスに基づいて決定される。
決定部1bは、検出部1aによって検出された比率が目標比率1cに近づくように、ホスト装置から新たに書き込みが要求されたデータブロックの書き込み処理を、第1の処理21と第2の処理22のどちらを用いて実行するかを決定する。目標比率1cは、第2の処理22によって記憶装置に格納されたデータブロックに対する第3の処理23の負荷と、ホスト装置からの書き込み要求を単位時間内に処理可能な回数(以下、「IOPS」と記載する)の下限目標値とに基づいて決定される値である。
また、第3の処理23は、第2の処理22によって記憶装置に格納されたデータブロックを、ストレージノード11,12のいずれかの記憶装置に対して重複を除去して格納し直す処理(ステップS3)を含む。すなわち、第3の処理23は、第2の処理22によって記憶装置に格納されたデータブロックに対して、ホスト装置への応答後に実行される後処理である。
なお、第3の処理23は、重複除去で利用するためのハッシュ値の計算を含んでもよい。また、第3の処理23においてデータブロックが格納されるストレージノードは、データブロックが分散して格納されるように決定される。例えば、第3の処理23においてデータブロックが格納されるストレージノードは、データブロックから算出されたハッシュ値に基づいて決定される。
上記の第1の処理21では、ステップS1aの実行の際に、書き込み要求を受けたストレージノードから他のストレージノードに対してデータブロックが転送される場合がある。また、上記の第2の処理22でも、ステップS2aの実行の際に、書き込み要求を受けたストレージノードから他のストレージノードに対してデータブロックが転送される場合がある。さらに、上記の第3の処理23でも、ステップS3の実行の際に、第2の処理22によって格納されたストレージノードから他のストレージノードに対してデータブロックが転送される場合がある。
ここで、第1の処理21と第2の処理22とを比較すると、第2の処理22では、データブロックを記憶装置に格納する際に重複除去処理を実行しない分だけ、ホスト装置に対する応答時間が短縮される。その一方、第2の処理22によって記憶装置に格納されたデータブロックについては、後処理として第3の処理23が実行される。第3の処理23は、データブロックを重複を除去して格納し直す処理(ステップS3)を含み、この処理の実行時には上記のようにストレージノード間でデータが転送される場合がある。したがって、第2の処理22と第3の処理23の処理全体では、データブロックの転送が最大2回行われる分、第1の処理21よりデータ転送量が多くなる可能性があり、ストレージノード間の通信負荷に与える影響がより大きい。
このため、第1の処理21と第2の処理22のうち、ホスト装置に対する応答時間を短縮するために第2の処理22の実行比率を高めてしまうと、ストレージノード間のデータ転送量が多くなる可能性がある。その場合、ストレージノード間で単位時間に通信可能な回数が低下する。このような通信可能な回数の低下により、ホスト装置からの書き込み要求を単位時間に処理可能な回数(IOPS)も低下してしまう。
これに対して、上記のように、目標比率1cは、第3の処理23の負荷とIOPSの下限目標値とに基づいて決定される。IOPSは、第3の処理23の実行回数が多くなってデータブロックの転送回数が増えるほど、低下し得る。また、第3の処理23は、第2の処理22と同じ回数だけ実行される。このような関係から、IOPSが下限目標値を下回らない範囲で、第1の処理21と第2の処理22のうち、第2の処理22の実行比率が可能な限り高くなるような目標比率1cが得られる。
決定部1bは、上記のような処理の選択によって、第1の処理21と第2の処理22との実行比率が目標比率1cに近づくように制御する。その結果、IOPSが下限目標値以上に維持された状態で、第2の処理22の実行比率が可能な限り高められる。したがって、ストレージ制御装置1によれば、IOPSを一定以上に維持できる範囲で書き込み要求に対する応答時間を短縮できる。
〔第2の実施の形態〕
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すストレージシステムは、サーバ100a〜100c、ストレージ200a〜200c、スイッチ300およびホスト装置400a,400bを含む。
サーバ100a〜100cは、スイッチ300に接続され、スイッチ300を介して互いに通信可能になっている。また、サーバ100aにはストレージ200aが接続され、サーバ100bにはストレージ200bが接続され、サーバ100cにはストレージ200cが接続されている。サーバ100aは、ストレージ200aに対するアクセスを制御するストレージ制御装置である。同様に、サーバ100bは、ストレージ200bに対するアクセスを制御するストレージ制御装置であり、サーバ100cは、ストレージ200cに対するアクセスを制御するストレージ制御装置である。
ストレージ200a〜200cのそれぞれには、1台または複数台の不揮発性記憶装置が搭載されている。本実施の形態では、ストレージ200a〜200cのそれぞれには、複数台のSSD(Solid State Drive)が搭載されているものとする。
なお、サーバ100aとストレージ200a、サーバ100bとストレージ200b、サーバ100cとストレージ200cは、それぞれストレージノードN0,N1,N2に属している。
ホスト装置400a,400bはそれぞれ、スイッチ300に接続され、スイッチ300を介してサーバ100a〜100cの少なくとも1台との間で通信可能になっている。ホスト装置400a,400bはそれぞれ、サーバ100a〜100cによって提供される論理ボリュームに対するアクセス要求を、サーバ100a〜100cの少なくとも1台に送信する。これにより、ホスト装置400a,400bは、論理ボリュームにアクセス可能になっている。
ホスト装置400a,400bとサーバ100a〜100cとの関係は、例えば、次のように決められてもよい。ホスト装置400aは、サーバ100a〜100cによって提供されるある論理ボリュームに対するアクセス要求を、サーバ100a〜100cのうちあらかじめ決められた1台に送信する。また、ホスト装置400bは、サーバ100a〜100cによって提供される別の論理ボリュームに対するアクセス要求を、サーバ100a〜100cのうちあらかじめ決められた別の1台に送信する。なお、これらの論理ボリュームは、ストレージ200a〜200cの物理領域によって実現される。
スイッチ300は、サーバ100a〜100cの間や、ホスト装置400a,400bとサーバ100a〜100cの間でデータを中継する。なお、例えば、サーバ100a〜100cの間や、ホスト装置400a,400bとサーバ100a〜100cの間は、InfiniBand(商標)で接続される。また、サーバ100a〜100cの間の通信と、ホスト装置400a,400bとサーバ100a〜100cとの間の通信は、それぞれ分離された個別のネットワークを介して行われてもよい。
以上の図2では、3台のサーバ100a〜100cが配置された構成としたが、ストレージシステムには2台以上の任意の数のサーバを配置できる。また、図2では、2台のホスト装置400a,400bが配置された構成としたが、ストレージシステムには1台以上の任意の数のホスト装置を配置できる。さらに、図2では、サーバ100a〜100cにそれぞれストレージ200a〜200cが接続された構成としたが、サーバ100a〜100cに対して共通のストレージが接続されてもよい。
なお、これ以後、サーバ100a〜100cを特に区別せずに記載する場合、「サーバ100」と記載する場合がある。同様に、ストレージ200a〜200cを特に区別せずに示す場合、「ストレージ200」と表記する場合があり、ホスト装置400a,400bを特に区別せずに示す場合、「ホスト装置400」と表記する場合がある。
図3は、サーバのハードウェア構成例を示す図である。サーバ100は、例えば、図3に示すようなコンピュータとして実現される。サーバ100は、プロセッサ101、RAM(Random Access Memory)102、SSD103、通信インタフェース104およびストレージインタフェース105を有する。
プロセッサ101は、サーバ100の処理を統括的に制御する。プロセッサ101は、例えば、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)である。また、プロセッサ101は、CPU、DSP、ASIC、FPGAなどの2以上の要素の組合せであってもよい。
RAM102は、サーバ100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に記憶される。また、RAM102には、プロセッサ101による処理に用いる各種データが一時的に記憶される。
SSD103は、サーバ100の補助記憶装置として使用される。SSD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、サーバ100は、補助記憶装置として、SSD103の代わりにHDD(Hard Disk Drive)を備えていてもよい。
通信インタフェース104は、スイッチ300を介して他の装置と通信するためのインタフェース回路である。ストレージインタフェース105は、ストレージ200に搭載された記憶装置と通信するためのインタフェース回路である。なお、ストレージインタフェース105とストレージ200内の記憶装置とは、例えば、SAS(Serial Attached SCSI,SCSI:Small Computer System Interface)、FC(Fibre Channel)などの通信プロトコルにしたがって通信する。
以上の構成によってサーバ100、すなわちサーバ100a〜100cのそれぞれの処理機能が実現される。なお、ホスト装置400a,400bについても、図3に示すようなコンピュータとして実現可能である。
次に、サーバ100a〜100cにおけるストレージ制御方法について説明する。
図4は、各サーバが備えるキャッシュおよび主なテーブル情報について示す図である。なお、ここでは説明を簡単にするために、サーバ100a〜100cは、ストレージ200a〜200cの物理領域によって実現される1つの論理ボリュームを、ホスト装置400に提供するものとする。
サーバ100aのRAM102には、キャッシュ110aの領域が確保される。同様に、サーバ100bのRAM102には、キャッシュ110bの領域が確保され、サーバ100cのRAM102には、キャッシュ110cの領域が確保される。キャッシュ110a〜110cには、論理ボリュームに対応するストレージ200a〜200cの記憶領域からのデータ読み出しの応答速度を高めるために、論理ボリュームのデータが一時的に記憶される。
また、本実施の形態に係るストレージシステムでは、論理ボリュームに含まれる同じ内容のデータが記憶領域に重複して格納されないようにする「重複除去」が行われる。重複除去では、論理ボリュームのブロック単位で、書き込みデータのハッシュ値(フィンガプリント)が計算され、ハッシュ値が同一となるデータが重複して格納されないように制御される。また、後に詳述するが、重複除去は、ストレージ200a〜200cへの格納段階でなく、キャッシュ110a〜110cへの格納段階で行われる。
さらに、ストレージシステムでは、ハッシュ値をキーとしてデータがストレージノードN0〜N2の間で分散管理される。ここで、16進数で表記したハッシュ値における最上位ケタの値を「ハッシュ先頭値」と記載すると、図4の例ではハッシュ先頭値に基づいて次のような方法でデータが分散管理される。
ストレージノードN0は、ハッシュ先頭値が0〜4となるデータの管理を担当する。ストレージノードN0に含まれるストレージ200aには、ハッシュ値の先頭値が0〜4となるデータだけが格納され、ストレージノードN0に含まれるサーバ100aは、ハッシュ先頭値0〜4のハッシュ値と対応するデータの記憶位置とが対応付けられたハッシュ管理テーブル121aを保持する。
ストレージノードN1は、ハッシュ先頭値が5〜9となるデータの管理を担当する。ストレージノードN1に含まれるストレージ200bには、ハッシュ値の先頭値が5〜9となるデータだけが格納され、ストレージノードN1に含まれるサーバ100bは、ハッシュ先頭値5〜9のハッシュ値と対応するデータの記憶位置とが対応付けられたハッシュ管理テーブル121bを保持する。
ストレージノードN2は、ハッシュ先頭値がA〜Fとなるデータの管理を担当する。ストレージノードN2に含まれるストレージ200cには、ハッシュ値の先頭値がA〜Fとなるデータだけが格納され、ストレージノードN2に含まれるサーバ100cは、ハッシュ先頭値A〜Fのハッシュ値と対応するデータの記憶位置とが対応付けられたハッシュ管理テーブル121cを保持する。
このような分散管理により、論理ボリューム内のデータはストレージ200a〜200cにほぼ均等に分散されて格納される。また、論理ボリュームのブロックごとに書き込み頻度の偏りがあったとしても、それに関係なく、書き込みアクセスがストレージ200a〜200cでほぼ均等に分散される。そのため、ストレージ200a〜200cのそれぞれにおける書き込み回数の最大値が減少する。さらに、重複除去が行われることで、同じ内容のデータがストレージ200a〜200cに書き込まれなくなるので、ストレージ200a〜200cのそれぞれにおける書き込み回数がさらに減少する。
ここで、SSDは、書き込み回数が増加するにつれて性能が劣化するという特徴がある。上記のような分散管理が行われることで、ストレージ200a〜200c内の記憶装置としてSSDが使用された場合に、SSDの性能劣化を抑制し、それらの寿命を延ばすことができる。
一方、上記のようなハッシュ値に基づく分散管理とは別に、論理ボリューム内の各ブロックと物理記憶領域とのマッピングは次のように管理される。サーバ100a〜100cのそれぞれには、論理ボリュームの領域の中から、物理記憶領域とのマッピングの管理を担当する領域が割り当てられる。なお、論理ボリュームの各ブロックには、0000〜zzzzのLBA(Logical Block Address)が割り当てられているとする。
図4の例では、サーバ100aは、LBA0000〜LBAxxxxの各ブロックと物理記憶領域とのマッピングを担当し、そのマッピングのためのLBA管理テーブル122aを保持する。サーバ100bは、LBA(xxxx+1)〜LBAyyyyの各ブロックと物理記憶領域とのマッピングを担当し、そのマッピングのためのLBA管理テーブル122bを保持する(ただし、xxxx<yyyy)。サーバ100cは、LBA(yyyy+1)〜LBAzzzzの各ブロックと物理記憶領域とのマッピングを担当し、そのマッピングのためのLBA管理テーブル122cを保持する(ただし、yyyy<zzzz)。
なお、例えば、次のような方法で各ブロックと物理記憶領域とのマッピングが管理されてもよい。例えば、論理ボリュームが一定サイズのストリップに分割され(ストライピング)、先頭ストリップから順にサーバ100a,100b,100c,100a,100b,・・・のように割り当てられる。そして、サーバ100a〜100cは、それぞれに割り当てられたストリップ内のブロックと物理記憶領域とのマッピングを管理する。
次に、ハッシュ管理テーブル121a〜121cおよびLBA管理テーブル122a〜122cのデータ構成例について説明する。なお、以下の説明では、ハッシュ管理テーブル121a〜121cを特に区別せずに示す場合、「ハッシュ管理テーブル121」と表記する場合がある。また、LBA管理テーブル122a〜122cを特に区別せずに示す場合、「LBA管理テーブル122」と表記する場合がある。
図5は、ハッシュ管理テーブルのデータ構成例を示す図である。ハッシュ管理テーブル121は、ハッシュ値、ポインタおよびカウント値の各項目を有する。
ハッシュ値の項目には、ブロック単位のデータに基づいて計算されたハッシュ値が登録される。ポインタの項目には、対応するデータの記憶位置を示すポインタが登録される。対応するデータがキャッシュに存在する場合、ポインタの項目にはキャッシュページのページ番号が登録され、対応するデータがストレージに存在する場合、ポインタの項目にはストレージ上のアドレス(PBA:Physical Block Address)が登録される。なお、図5では、「CP:」はキャッシュページのページ番号が登録されていることを示し、「PBA:」はPBAが登録されていることを示す。カウント値の項目には、ポインタが示す記憶位置がいくつのLBAに対応付けられているか、換言すると、ハッシュ値に対応するデータがいくつ重複しているかを示す値が登録される。
図6は、LBA管理テーブルのデータ構成例を示す図である。LBA管理テーブル122は、LBAおよびポインタの各項目を有する。
LBAの項目には、論理ボリュームのブロックを示すLBAが登録される。ポインタの項目には、対応するデータのハッシュ値が計算済みの場合、ハッシュ管理テーブル121のエントリを示すアドレスが登録され、未計算の場合、キャッシュページのページ番号が登録される。なお、図6では、「EN:」はエントリのアドレスが登録されていることを示し、「CP:」はキャッシュページのページ番号が登録されていることを示す。
次に、図7〜図10を用いて、ストレージシステムにおける基本的な書き込み制御処理について説明する。前述のように、ストレージシステムでは、ストレージ200a〜200cへの格納段階でなく、キャッシュ110a〜110cへの格納段階で重複除去が行われる。また、重複除去の方法としては、「インライン方式」と「ポストプロセス方式」とが選択的に用いられる。インライン方式は、ホスト装置400からの書き込み要求に対して応答する前に重複除去を完了させる方式である。一方、ポストプロセス方式は、ホスト装置400からの書き込み要求に対して応答した後にバックグラウンドで重複除去が行われる方式である。以下、インライン方式の重複除去を用いた書き込み制御モードを「インラインモード」と記載し、ポストプロセス方式の重複除去を用いた書き込みモードを「ポストプロセスモード」と記載する。
図7は、インラインモードの書き込み制御処理の基本的な手順を示すシーケンス図である。なお、図7では例として、ホスト装置400からのデータの書き込み要求をサーバ100aが受信したとする。
[ステップS11]サーバ100aは、論理ボリュームのLBAを書き込み先として指定した書き込み要求およびデータを受信する。
[ステップS12]サーバ100aは、受信したデータのハッシュ値を計算する。
[ステップS13]サーバ100aは、算出されたハッシュ値のハッシュ先頭値に基づいて、このハッシュ値に対応するデータの管理を担当するサーバを特定する。なお、以下の説明では、あるハッシュ値に対応するデータの管理を担当するサーバを、「ハッシュ値の担当サーバ」と略称する場合がある。図7の例では、算出されたハッシュ値の担当サーバとしてサーバ100bが特定されたとする。この場合、サーバ100aは、データとハッシュ値をサーバ100bに転送し、データの書き込みを指示する。
[ステップS14]サーバ100bは、受信したハッシュ値がハッシュ管理テーブル121bに登録されているかを判定する。
受信したハッシュ値がハッシュ管理テーブル121bに登録されていない場合、サーバ100bは、キャッシュ110bに新たなキャッシュページを作成し、そのキャッシュページに受信したデータを格納する。また、サーバ100bは、ハッシュ管理テーブル121bに新たなエントリを作成し、そのエントリに、受信したハッシュ値と、作成したキャッシュページのページ番号と、カウント値「1」とを登録する。そして、サーバ100bは、作成したエントリのアドレスをサーバ100aに送信する。
一方、受信したハッシュ値がハッシュ管理テーブル121bに登録されている場合、書き込みが要求されたデータはキャッシュ110bまたはストレージ200bにすでに格納されている。この場合、サーバ100bは、そのハッシュ値が登録されていたエントリのカウント値を1だけカウントアップし、そのエントリのアドレスをサーバ100aに送信する。なお、受信したデータは破棄される。
[ステップS15]サーバ100aは、書き込み先として指定されたLBAに基づいて、このLBAと物理記憶領域とのマッピングを担当するサーバを特定する。なお、以下の説明では、あるLBAと物理記憶領域とのマッピングを担当するサーバを、「LBAの担当サーバ」と略称する場合がある。図7の例では、指定されたLBAの担当サーバとしてサーバ100cが特定されたとする。この場合、サーバ100aは、ステップS14でサーバ100bから送信されたエントリのアドレスと、書き込み先として指定されたLBAとをサーバ100cに送信して、LBA管理テーブル122cの更新を指示する。
[ステップS16]サーバ100cは、LBA管理テーブル122cのエントリのうち、受信したLBAが登録されたエントリにおいて、受信したエントリのアドレスをポインタの項目に登録する。これにより、LBAが示すブロックと物理記憶領域とが対応付けられる。
[ステップS17]サーバ100aは、サーバ100cからテーブルの更新完了通知を受信すると、ホスト装置400に対して書き込み完了を示す応答メッセージを送信する。
以上のように、インラインモードでは、ホスト装置400に対して応答する前に、書き込みが要求されたデータが重複除去された状態でサーバ100a〜100cのいずれかのキャッシュに格納される。
図8は、インラインモードでのテーブル更新処理例を示す図である。この図8では、図7の処理において、LBA0001に対するデータブロックDB1の書き込みが要求されたものとする。また、データブロックDB1に基づいてハッシュ値「0x92DF59」が算出されたとする(なお、「0x」は16進数で表記したことを示す)。
この場合、ステップS14の処理により、サーバ100bのキャッシュ110bにデータブロックDB1が格納される。また、サーバ100bが保持するハッシュ管理テーブル121bのエントリ121b1には、ハッシュ値「0x92DF59」に対応するポインタの項目に、データブロックDB1が格納されたキャッシュページを指し示す情報が登録される。なお、データブロックDB1と同じ内容のデータブロックがすでにキャッシュ110bにすでに登録されていた場合、ハッシュ管理テーブル121bには上記情報を含むエントリ121b1がすでに登録されている。
また、ステップS16の処理により、サーバ100cが保持するLBA管理テーブル122cにおいては、LBA0001に対応するポインタの項目に、ハッシュ管理テーブル121bのエントリ121b1を指し示す情報が登録される。
図9は、ポストプロセスモードの書き込み制御処理の基本的な手順を示すシーケンス図である。なお、図9では例として、図7と同様の初期状態から、図7と同様に、ホスト装置400からのデータの書き込み要求をサーバ100aが受信したとする。
[ステップS21]サーバ100aは、論理ボリュームのLBAを書き込み先として指定した書き込み要求およびデータを受信する。
[ステップS22]サーバ100aは、書き込み先として指定されたLBAに基づいて、書き込み先ブロックと物理記憶領域との対応関係の管理を担当するサーバを特定する。図9の例では、サーバ100cが担当サーバとして特定されたとする。この場合、サーバ100aは、書き込みが要求されたデータをサーバ100cに送信して、キャッシュ110cへの格納を指示する。
[ステップS23]サーバ100cは、キャッシュ110cに新たなキャッシュページを作成し、そのキャッシュページに受信したデータを格納する。このデータは、ハッシュ値の計算が行われていない「ハッシュ未計算ブロック」のデータとしてキャッシュ110cに格納される。また、サーバ100cは、作成したキャッシュページのページ番号をサーバ100aに送信する。
[ステップS24]サーバ100cは、受信したページ番号と、書き込み先として指定されたLBAとをサーバ100cに送信して、LBA管理テーブル122cの更新を指示する。
[ステップS25]サーバ100cは、LBA管理テーブル122cのエントリのうち、受信したLBAが登録されたエントリにおいて、受信したページ番号をポインタの項目に登録する。
なお、書き込み先として指定されたLBAは、ステップS22でデータとともに転送されてもよい。この場合、ステップS24でのサーバ100aとサーバ100cとの通信は不要になる。
[ステップS26]サーバ100aは、サーバ100cからテーブルの更新完了通知を受信すると、ホスト装置400に対して書き込み完了を示す応答メッセージを送信する。
[ステップS27]サーバ100cは、ステップS26の処理後の非同期タイミングで、ステップS23でキャッシュ110cに格納したデータのハッシュ値を計算する。
[ステップS28]サーバ100cは、算出されたハッシュ値のハッシュ先頭値に基づいて、このハッシュ値に対応するデータの管理を担当するサーバを特定する。図9の例では、サーバ100bが担当サーバとして特定されたとする。この場合、サーバ100cは、データとハッシュ値をサーバ100bに転送し、データの書き込みを指示する。このとき、データが格納されていたキャッシュページは解放される。
[ステップS29]サーバ100bは、受信したハッシュ値がハッシュ管理テーブル121bに登録されているかを判定し、その判定結果に応じたデータ格納およびテーブル更新処理を実行する。この処理は、図7のステップS14と同様である。
[ステップS30]サーバ100bは、受信したハッシュ値が登録されている、ハッシュ管理テーブル121bのエントリのアドレスをサーバ100cに送信して、LBA管理テーブル122cの更新を指示する。
[ステップS31]サーバ100cは、LBA管理テーブル122cのエントリのうち、ステップS27でハッシュ値を計算したデータのLBAが登録されたエントリにおいて、受信したエントリのアドレスをポインタの項目に登録する。このポインタの項目では、登録されていたキャッシュページのページ番号が、受信したエントリのアドレスによって更新される。
以上のように、ポストプロセスモードでは、ホスト装置400から書き込みが要求されたデータは、重複の有無を判定せずに、その書き込み先のLBAの管理を担当するサーバ100cのキャッシュ120cに一旦格納される。そして、格納が完了し、格納に伴うLBA管理テーブル122cの更新が完了した時点で、ホスト装置400に応答メッセージが送信される。このように、応答までの間に重複除去処理が行われないことで、インラインモードと比較して、ホスト装置400に対する応答時間(レイテンシ)を短縮できる。
図10は、ポストプロセスモードでのテーブル更新処理例を示す図である。この図10では、図9の処理において、LBA0001に対するデータブロックDB1の書き込みが要求されたものとする。また、データブロックDB1に基づいてハッシュ値「0x92DF59」が算出されたとする。
この場合、ホスト装置400への応答前の段階では、ステップS23で、サーバ100cのキャッシュ110cにデータブロックDB1が格納される。また、ステップS25で、サーバ100cが保持するLBA管理テーブル122cに、LBA0001に対応付けてキャッシュ110cにおけるデータ格納位置を指し示す情報が登録される。
また、ホスト装置400への応答後のステップS28で、データブロックDB1がサーバ100bに転送され、これに応じて重複除去処理が行われる。ステップS29では、サーバ100bのキャッシュ110bにデータブロックDB1が格納される。また、サーバ100bが保持するハッシュ管理テーブル121bのエントリ121b1には、ハッシュ値「0x92DF59」に対応するポインタの項目に、データブロックDB1が格納されたキャッシュページを指し示す情報が登録される。なお、データブロックDB1と同じ内容のデータブロックがすでにキャッシュ110bに登録されていた場合、ハッシュ管理テーブル121bには上記情報を含むエントリ121b1がすでに登録されている。
そして、ステップS31では、サーバ100cが保持するLBA管理テーブル122cにおいて、LBA0001に対応するポインタの項目に、ハッシュ管理テーブル121bのエントリ121b1を指し示す情報が登録される。
図11は、ストレージシステムにおける読み出し制御処理の手順を示すシーケンス図である。この図11では、ホスト装置400からサーバ100aに対して、LBA0001からのデータ読み出しが要求されたものとする。
[ステップS41]サーバ100aは、LBA0001からのデータの読み出し要求をホスト装置400から受信する。
[ステップS42]サーバ100aは、読み出し元として指定されたLBAに基づいて、読み出し元ブロックと物理記憶領域との対応関係の管理を担当するサーバを特定する。図11の例では、サーバ100cが担当サーバとして特定される。この場合、サーバ100aは、LBAをサーバ100cに送信して、LBA管理テーブル122cの検索を指示する。
[ステップS43]サーバ100cは、LBA管理テーブル122cから、受信したLBAを含むエントリを特定し、特定されたエントリにおけるポインタの項目から情報を取得する。ここでは、ポインタの項目から、サーバ100bのハッシュ管理テーブル121bのエントリのアドレスが取得されたものとする。
[ステップS44]サーバ100cは、取得されたエントリのアドレスをサーバ100bに送信して、対応する記憶領域からサーバ100aへのデータ読み出しを指示する。
[ステップS45]サーバ100bは、ハッシュ管理テーブル121bにおける受信したアドレスが示すエントリを参照し、ポインタの項目から情報を読み出す。ここでは、キャッシュページのアドレスが読み出されたとする。サーバ100bは、読み出されたアドレスが示すキャッシュ110bのキャッシュページからデータを読み出し、読み出したデータをサーバ100aに送信する。
[ステップS46]サーバ100aは、受信したデータをホスト装置400に送信する。
以上のように、ハッシュ管理テーブル121およびLBA管理テーブル122に基づいて、読み出しが要求されたデータがサーバ100aに送信される。なお、例えば、ステップS43において、LBA管理テーブル122cのポインタ項目から、サーバ100cのキャッシュ110cにおけるキャッシュページのページ番号が取得される場合もある。これは、読み出しが要求されたデータについてハッシュ値の計算が未実行の場合である。この場合、サーバ100cは、キャッシュ110cの該当するキャッシュページからデータを読み出し、サーバ100aに送信する。サーバ100aは、受信したデータをホスト装置400に送信する。
ところで、図7に示したように、インラインモードでは、ホスト装置400から書き込みが要求されてからホスト装置400に応答するまでの間に、ハッシュ値の計算処理が実行される。例えば、8KBのデータブロックに基づくハッシュ値の計算処理には20μs程度かかるため、その分だけ書き込み要求に対するホスト装置400への応答時間が長くなってしまうという問題がある。
一方、図9に示したように、ポストプロセスモードでは、ホスト装置400から書き込みが要求されてからホスト装置400に応答するまでの間に、ハッシュ値の計算処理が実行されない。そのため、インラインモードと比較して書き込み要求に対する応答時間を向上させることができる。
しかし、ポストプロセスモードでは、ホスト装置400に応答した後に、ハッシュ値計算を含む重複除去のための処理がバックグラウンドで実行される。このため、各サーバでのバックグランドでの処理負荷が、ホスト装置400に対するIO応答性能を低下させる要因になり得る。
これに加えて、バックグラウンドでの処理過程では、図9の例のように、データをキャッシュに一時的に保持するサーバと、ハッシュ値から特定される、データの管理を担当するサーバとが異なる場合、サーバ間での通信が発生する。この通信では、テーブル更新指示のような命令やその応答だけでなく、実体的な書き込みデータの転送も行われる(図9のステップS28参照)。
図7や図9の例のように、インラインモードでもポストプロセスモードでも、ホスト装置400から書き込み要求を受信してから応答するまでの間にサーバ間の通信が発生し得る。また、図11の例のように、ホスト装置400から読み出し要求を受信した場合にも、ホスト装置400に応答するまでの間にサーバ間の通信が発生し得る。このため、上記のようなバックグラウンドの処理過程での通信によってサーバ間の通信トラフィックが混雑すると、それがホスト装置400に対するIO応答性能を低下させる要因になり得る。
例えば、サーバ間の通信で単位時間に伝送可能なメッセージ数には上限がある。このため、サーバ間の通信回数が増大すると、ホスト装置400からのIO要求を単位時間に処理できる数(すなわち、ホスト装置400から見たサーバ100のIOPS)が低下してしまう。
本実施の形態のサーバ100は、インラインモードの書き込み制御処理とポストプロセスモードの書き込み制御処理とを選択的に実行し、その実行比率を制御する。ここで、ポストプロセスモードの書き込み制御処理の実行比率を高くする方が、ホスト装置400からの書き込み要求に対する応答時間(書き込み応答時間)を全体的に短縮できる。しかし、上記の理由により、サーバ100のIOPSが低下する可能性がある。
そこで、本実施の形態では、サーバ100は、IOPSの目標値を設定する。そして、サーバ100は、この目標値を満たす範囲でポストプロセスモードの書き込み制御処理が優先的に実行されるように、インラインモードの書き込み制御処理とポストプロセスモードの書き込み制御処理との実行比率を制御する。これにより、サーバ100のIOPSを維持した状態で、書き込み要求に対する応答時間を短縮する。
次に、サーバ100の処理の詳細について説明する。
図12は、サーバが備える処理機能の構成例を示すブロック図である。サーバ100は、記憶部120、IO制御部131、モード決定部132、重複除去制御部133およびLBA管理部134を有する。
記憶部120は、RAM102またはSSD103など、サーバ100が備える記憶装置の記憶領域として実現される。記憶部120には、前述のハッシュ管理テーブル121およびLBA管理テーブル122が格納される。さらに、記憶部120には、ハッシュ未計算ブロック数123、ハッシュ計算済みブロック数124および目標情報125が格納される。
ハッシュ未計算ブロック数123は、サーバ100のキャッシュ110に格納されたデータブロックのうち、ハッシュ未計算ブロックの数をカウントしたカウント値である。ハッシュ未計算ブロックとは、ポストプロセスモードの書き込み制御処理において、ハッシュ値の計算が行われずに、ホスト装置400から書き込み先として指定されたLBAの担当サーバのキャッシュ110に格納されたデータブロックである。
一方、ハッシュ計算済みブロック数124は、サーバ100のキャッシュ110に格納されたデータブロックのうち、ハッシュ計算済みブロックの数をカウントしたカウント値である。ハッシュ計算済みブロックとは、ハッシュ値が算出され、算出されたハッシュ値の担当サーバのキャッシュ110に格納されたデータブロックである。
目標情報125は、書き込み制御モードを決定するための参照される情報である。例えば、目標情報125は、IOPSの目標値であり性能目標Sや、各モードの書き込み制御処理の実行比率の目標値である目標比率Ftgtなどを含む。目標情報125に含まれる情報の詳細については後述する。
IO制御部131、モード決定部132、重複除去制御部133およびLBA管理部134の処理は、例えば、サーバ100が備えるプロセッサ101が所定のプログラムを実行することで実現される。
IO制御部131は、ホスト装置400からのIO要求を受信し、受信したIO要求に対して応答するまでの処理を統括的に制御する。IO制御部131は、ホスト装置400から書き込み要求を受信した場合には、インラインモードとポストプロセスモードのどちらの書き込み制御モードを選択するかをモード決定部132に問い合わせる。
IO制御部131は、問い合わせの結果、インラインモードを選択する場合には、書き込みデータのハッシュ値を計算し、算出されたハッシュ値の担当サーバを特定する。IO制御部131は、特定された担当サーバの重複除去制御部133に書き込みデータとハッシュ値とを渡し、書き込みデータの格納とハッシュ管理テーブル121の更新を指示する。さらに、IO制御部131は、書き込み先のLBAの担当サーバを特定する。IO制御部131は、特定された担当サーバのLBA管理部134に、LBA管理テーブル122の更新を指示する。
一方、IO制御部131は、問い合わせの結果、ポストプロセスモードを選択する場合には、書き込み先のLBAの担当サーバを特定する。IO制御部131は、特定された担当サーバのLBA管理部134に書き込みデータを渡し、書き込みデータの格納とLBA管理テーブル122の更新を指示する。
モード決定部132は、IO制御部131からの依頼に応じて、インラインモードとポストプロセスモードのどちらの書き込み制御モードを選択するかを決定する。モード決定部132は、モード決定のために必要なパラメータを取得するパラメータ取得部132aと、取得されたパラメータを評価してモードを決定するパラメータ評価部132bとを有する。なお、モード決定部132によるモード決定方法の詳細については、後の図13を用いて説明する。
重複除去制御部133は、書き込みデータとハッシュ値とを受け取ると、同一内容のデータが重複しないように、書き込みデータをキャッシュ110に格納し、ハッシュ管理テーブル121を更新する。インラインモードの書き込み制御過程では、重複除去制御部133は、書き込みデータとハッシュ値とをいずれかのサーバ100のIO制御部131から受け取る。一方、ポストプロセスモードの書き込み制御過程では、重複除去制御部133は、書き込みデータとハッシュ値とをいずれかのサーバ100のLBA管理部134から受け取り、そのLBA管理部134に対してLBA管理テーブル122の更新を指示する。
LBA管理部134は、インラインモードの書き込み制御過程では、IO制御部131からの指示に応じてLBA管理テーブル122を更新する。一方、LBA管理部134は、ポストプロセスモードの書き込み制御過程では、IO制御部131からの指示に応じて、書き込みデータをハッシュ未計算ブロックのデータとしてキャッシュ110に格納し、LBA管理テーブル122を更新する。さらに、LBA管理部134は、キャッシュ110内のハッシュ未計算ブロックのデータを順次選択し、選択したデータのハッシュ値を計算し、算出されたハッシュ値の担当サーバを特定する。LBA管理部134は、特定されたサーバの重複除去制御部133にデータとハッシュ値とを渡し、データの格納とハッシュ管理テーブル121の更新を指示する。そして、LBA管理部134は、その重複除去制御部133からの指示に応じてLBA管理テーブル122を更新する。
次に、モード決定部132による書き込み制御モードの決定処理について説明する。図13は、書き込み制御モードの決定処理について説明するための図である。
モード決定部132は、書き込み制御処理の一部を構成するバックグラウンド処理のコストを、インラインモードとポストプロセスモードのそれぞれについて計算する。バックグラウンド処理とは、書き込み要求に対する応答をホスト装置400に送信した後、データをキャッシュ110からストレージ200へデステージするまでの処理である。また、コストとは、ブロックごとのバックグラウンド処理を連続して実行可能な実行間隔を示す。
図13の左側に示すように、インラインモードでは、バックグラウンド処理には、キャッシュ110からストレージ200へのデータのデステージのみが含まれる。デステージのコストは、ストレージ200内のSSDに対して1ブロック分のデータの格納を指示するコマンドを送信可能な間隔を示す格納指示間隔wと表される。したがって、インラインモードでのバックグラウンド処理のコストHは、wとなる。
一方、図13の右側に示すように、ポストプロセスモードでは、バックグラウンド処理には、ハッシュ値の計算、データとハッシュ値の転送、LBA管理テーブル122の更新指示、キャッシュ110からストレージ200へのデータのデステージが含まれる。ハッシュ値の計算は、図9のステップS27の処理に対応し、そのコストは1ブロック分のデータに基づくハッシュ値の計算時間hと表される。データとハッシュ値の転送は、図9のステップS28の処理に対応し、そのコストは、サーバ100から他のサーバ100へコマンドを送信可能な間隔を示すコマンド送信間隔lと、1ブロック分のデータの転送にかかるデータ転送時間tとの加算値として表される。LBA管理テーブル122の更新指示は、図9のステップS30の処理に対応し、そのコストは、コマンド送信間隔lとして表される。デステージのコストは、インラインモードの場合と同様に、格納指示間隔wと表される。したがって、ポストプロセスモードでのバックグラウンド処理のコストLは、「h+2・l+t+w」と計算される。
インラインモードでのバックグラウンド処理のコストHは、ハッシュ計算済みブロックのデータをキャッシュ110からストレージ200へ追い出すことが可能な間隔を示す。また、ポストプロセスモードでのバックグラウンド処理のコストLは、ハッシュ未計算ブロックのデータをキャッシュ110からストレージ200へ追い出すことが可能な間隔を示す。
一方、キャッシュ110に格納されているデータブロックのうちの最低何個を、単位時間にストレージ200に追い出すことができるかを示す性能目標Sが、あらかじめ与えられ、目標情報125に記録される。この性能目標Sは、キャッシュ110に空き領域がない状態において、ホスト装置400からの書き込み要求に応じて、最低何個の新たなデータブロックを単位時間にキャッシュ110に格納できるか、を示す指標とみなすことができる。このため、性能目標Sは、サーバ100で保証されるIOPSの最低基準値の1つとして用いることができる。
ここで、キャッシュ110に格納されているハッシュ未計算ブロックの数とハッシュ計算済みブロックの数との比率を「F:1−F」とする(ただし、0≦F≦1)。このとき、バックグラウンド処理のコストと性能目標Sとの関係は、次の式(1)のように表される。
1/{F・L+(1−F)H}≧S ・・・(1)
モード決定部132は、キャッシュ110に格納されているハッシュ未計算ブロックの数とハッシュ計算済みブロックの数との比率がどのような場合に、性能目標Sを満たすかを計算する。この比率を目標比率Ftgtとすると、目標比率Ftgtは次の式(2)によって計算される。この式(2)は、式(1)の左辺と右辺とをイコールとした場合に、比率Fを求める式である。
tgt=(1−S・H)/S(L−H) ・・・(2)
この目標比率Ftgtは、性能目標Sを下回らない範囲でのハッシュ未計算ブロックの比率Fの最大値を示す。すなわち、キャッシュ110内のハッシュ未計算ブロックの数とハッシュ計算済みブロックの数との比率が目標比率Ftgtと一致するとき、サーバ100のIOPSを目標以上に維持しながら、ポストプロセスモードで処理されるデータブロック数を最も多くすることができる。したがって、サーバ100のIOPSを目標以上に維持しながら、ホスト装置400からの書き込み要求に対する応答時間をできる限り短縮できる。
モード決定部132は、現在のキャッシュ110内のハッシュ未計算ブロックの数とハッシュ計算済みブロックの数とを検出し、後者に対する前者の比率Fdetを計算する。そして、モード決定部132は、比率Fdetが目標比率Ftgtに近づくように、ホスト装置400から書き込みが要求されたデータブロックについてインラインモードとポストプロセスモードのどちらを用いて書き込み制御を行うかを決定する。これにより、サーバ100のIOPSを目標以上に維持しながら、ホスト装置400からの書き込み要求に対する応答時間をできる限り短縮できる。
なお、本実施の形態では、図13に示したパラメータのうち、計算時間h、コマンド送信間隔l、データ転送時間tは固定値として目標情報125にあらかじめ登録され、格納指示間隔wのみがモード決定のたびに検出されるものとする。これは、SSDにおける格納指示間隔wが、SSDに格納されたデータ量などによって変化する可能性があるからである。ただし、例えば、図13に示したすべてのパラメータを固定値としてもよい。この場合、目標比率Ftgtは、モード決定のたびに計算する必要のない固定値となるので、目標情報125にあらかじめ登録されていればよい。逆に、格納指示間隔w以外のパラメータの中でも動的に変化する可能性のあるパラメータについては、モード決定のたびに検出されてもよい。
次に、サーバ100の処理についてフローチャートを用いて説明する。
図14は、書き込み応答処理手順の例を示すフローチャートである。
[ステップS61]IO制御部131は、ホスト装置400から、論理ボリュームのLBAを書き込み先として指定した書き込み要求と書き込みデータとを受信する。
[ステップS62]IO制御部131は、インラインモードとポストプロセスモードのどちらの書き込み制御モードを選択するかをモード決定部132に問い合わせる。この問い合わせに応じて、モード決定部132は、選択すべき書き込み制御モードを決定する。なお、モード決定部132によるモード決定処理の内容については、次の図15で説明する。
[ステップS63]IO制御部131は、問い合わせの結果、インラインモードが選択された場合にはステップS64の処理を実行し、ポストプロセスモードが選択された場合にはステップS65の処理を実行する。
[ステップS64]IO制御部131は、インラインモードでのIO制御処理を実行する。この処理内容については、後の図16において説明する。
[ステップS65]IO制御部131は、ポストプロセスモードでのIO制御処理を実行する。この処理内容については、後の図17において説明する。
[ステップS66]IO制御部131は、ステップS64またはステップS65の処理が完了すると、ホスト装置400に対して書き込み完了を示す応答メッセージを送信する。
図15は、モード決定処理手順の例を示すフローチャートである。この図15の処理は、図14のステップS62でのIO制御部131からの問い合わせに応じて、モード決定部132によって実行される。
[ステップS62a]モード決定部132のパラメータ取得部132aは、キャッシュ110における現在のハッシュ未計算ブロック数およびハッシュ計算済みブロック数を取得する。これらの数は、記憶部120からハッシュ未計算ブロック数123およびハッシュ計算済みブロック数124を読み出すことで得られる。
[ステップS62b]モード決定部132のパラメータ評価部132bは、ハッシュ未計算ブロック数とハッシュ計算済みブロック数との比率「Fdet:1−Fdet」を計算する。また、パラメータ評価部132bは、キャッシュ110において現在使用されているキャッシュページの総数を示すページ使用数cを計算する。ページ使用数cは、ハッシュ未計算ブロック数123とハッシュ計算済みブロック数124とを加算することで算出される。
[ステップS62c]パラメータ取得部132aは、ストレージ200の格納指示間隔wを検出する。前述のように、格納指示間隔wとは、ストレージ200内のSSDに対して1ブロック分のデータの格納を指示するコマンドを送信可能な間隔を示す。ここで言うストレージ200とは、モード決定部132と同じストレージノードに属するストレージ200である。
[ステップS62d]パラメータ評価部132bは、ハッシュ未計算ブロック数とハッシュ計算済みブロック数との目標比率Ftgtを計算する。
本実施の形態では、性能目標S、ハッシュ値の計算時間h、コマンド送信間隔lおよびデータ転送時間tが、記憶部120の目標情報125にあらかじめ記録される。パラメータ評価部132bは、目標情報125から取得したハッシュ値の計算時間h、コマンド送信間隔lおよびデータ転送時間tと、ステップS62cで検出された格納指示間隔wに基づいて、前述のコストL,Hを計算する。パラメータ評価部132bは、算出されたコストL,Hと、目標情報125から取得した性能目標Sとに基づき、前述の式(2)にしたがって目標比率Ftgtを計算し、記憶部120の目標情報125に上書きして登録する。
[ステップS62e]パラメータ評価部132bは、ステップS62bで算出されたページ使用数cが、キャッシュ110におけるキャッシュページの最大数Nと、ステップS62dで算出された目標比率Ftgtとの乗算値より小さいかを判定する。キャッシュページの最大数Nが乗算値より小さい場合、パラメータ評価部132bはステップS62fの処理を実行する。一方、キャッシュページの最大値が乗算値以上である場合、パラメータ評価部132bはステップS62gの処理を実行する。
[ステップS62f]キャッシュページの最大数Nが上記の乗算値より小さい場合、キャッシュ110に十分余裕があると推定される。この場合、キャッシュ110にハッシュ未計算ブロックが増えてもIOPSに影響がない。このため、パラメータ評価部132bは、選択すべき書き込み制御モードをポストプロセスモードに決定する。
[ステップS62g]パラメータ評価部132bは、ページ使用数cがキャッシュページの最大数Nとほぼ同一かを判定する。例えば、ページ使用数cとキャッシュページの最大数Nとの差が1%以内の場合、これらがほぼ同一と判定される。ほぼ同一の場合、パラメータ評価部132bはステップS62hの処理を実行し、ほぼ同一とは言えない場合、パラメータ評価部132bはステップS62iの処理を実行する。
[ステップS62h]ページ使用数cがキャッシュページの最大数Nとほぼ同一の場合とは、キャッシュ110がほぼ満杯の場合である。この場合、キャッシュ110に格納されたデータがデステージされるまでの時間が、ホスト装置400への書き込み応答時間に影響してしまう。このため、デステージまでの時間が長くなるハッシュ未計算ブロックを発生させるポストプロセスモードを選択することは望ましくない。したがって、パラメータ評価部132bは、選択すべき書き込み制御モードをインラインモードに決定する。
[ステップS62i]パラメータ評価部132bは、目標比率Ftgtと、現在の比率Fdetとの比較結果に基づいて、選択すべき書き込み制御モードを決定する。この処理では、比率Fdetが目標比率Ftgtに近づくように書き込み制御モードが決定される。
例えば、パラメータ評価部132bは、比率Fdetが目標比率Ftgtより大きい場合、書き込み制御モードをインラインモードに決定する。これにより、ハッシュ未計算ブロック数を低減できる。その結果、ポストプロセスモードでのバックグラウンド処理におけるサーバ100間の通信回数が低減される可能性が高まり、IOPSの低下を防止できる可能性が高まる。一方、パラメータ評価部132bは、比率Fdetが目標比率Ftgt以下である場合、書き込み制御モードをポストプロセスモードに決定する。これにより、書き込み要求元のホスト装置400に対して短時間で応答できる。
また、他の方法として、パラメータ評価部132bは、ポストプロセスモードが選択される確率が目標比率Ftgtに近づくように、ステップS62iで決定される書き込み制御モードの選択確率を制御してもよい。例えば、ポストプロセスモードの選択確率をFselとすると、パラメータ評価部132bは、下記の式(3)を満たすような選択確率Fselを計算する。ただし、選択確率Fselの値は0以上1以下の範囲に制限される。
sel:1−Fsel=Ftgt+(Ftgt−Fdet):1−Ftgt+{1−Ftgt−(1−Fdet)} ・・・(3)
パラメータ評価部132bは、ポストプロセスモードが選択される確率が上記の選択比率Fselとなるように、ステップS62iで決定される書き込み制御モードの選択確率を制御する。例えば、パラメータ評価部132bは、現在からその後の所定回数、ホスト装置400から書き込みが要求されたデータブロックについて、ポストプロセスモードを割合Fselで選択し、インラインモードを割合(1−Fsel)で選択する。
以上の図14、図15の処理によれば、ホスト装置400から書き込み要求を受信した時点で、キャッシュ110に十分余裕がある場合には、検出された比率Fdetに関係なく、ポストプロセスモードの書き込み制御が実行される。これにより、ホスト装置400に対する応答時間を短縮できる。一方、キャッシュ110に余裕がない場合には、検出された比率Fdetに関係なく、インラインモードの書き込み制御が実行される。これにより、IOPSの低下を抑制できる。
また、キャッシュ110にある程度余裕がある場合には、インラインモードの書き込み制御に対するポストプロセスモードの書き込み制御の実行比率が目標比率Ftgtに近づくように制御される。これにより、IOPSが目標値を下回らない範囲で、ポストプロセスモードの書き込み制御が優先的に実行されるようになる。その結果、IOPSを目標値以上に維持しながら、ホスト装置400への応答速度を可能な限り短縮できる。
なお、図15の処理は、ホスト装置400から書き込み要求を受信するたびに実行されるのではなく、図14の処理と並行して、例えば一定時間間隔でモード決定部132により実行されてもよい。この場合、例えば、決定された書き込み制御モードが記憶部120に登録され、図14のステップS62でIO制御部131に参照される。
図16は、インラインモードでのIO制御処理手順の例を示すフローチャートである。この図16の処理は、図14のステップS64の処理に対応する。
[ステップS64a]IO制御部131は、書き込みデータのハッシュ値を計算する。ハッシュ値は、例えば、SHA−1(Secure Hash Algorithm 1)のハッシュ関数を用いて計算される。
[ステップS64b]IO制御部131は、算出されたハッシュ値のハッシュ先頭値に基づいて、このハッシュ値の担当サーバを特定し、IO制御部131自身を含むサーバ100が、算出されたハッシュ値の担当サーバであるかを判定する。IO制御部131は、担当サーバである場合、ステップS64cの処理を実行し、担当サーバでない場合、ステップS64dの処理を実行する。
[ステップS64c]IO制御部131は、IO制御部131自身を含むサーバ100の重複除去制御部133に対して書き込みデータとハッシュ値とを通知し、書き込みデータの書き込みを指示する。
[ステップS64d]IO制御部131は、算出されたハッシュ値の担当サーバである他のサーバ100の重複除去制御部133に対して書き込みデータとハッシュ値とを転送し、書き込みデータの書き込みを指示する。
[ステップS64e]IO制御部131は、ステップS64cでの通知先またはステップS64dでの転送先から、ハッシュ管理テーブル121のエントリのアドレスを取得する。
[ステップS64f]IO制御部131は、書き込みデータの書き込み先として指定されたLBAに基づいて、このLBAの担当サーバを特定し、IO制御部131自身を含むサーバ100が、指定されたLBAの担当サーバであるかを判定する。IO制御部131は、担当サーバである場合、ステップS64gの処理を実行し、担当サーバでない場合、ステップS64hの処理を実行する。
[ステップS64g]IO制御部131は、IO制御部131自身を含むサーバ100のLBA管理部134に、ステップS64eで取得されたエントリのアドレスと、書き込み先として指定されたLBAとを通知して、LBA管理テーブル122の更新を指示する。
[ステップS64h]IO制御部131は、指定されたLBAの担当サーバである他のサーバ100のLBA管理部134に、ステップS64eで取得されたエントリのアドレスと、書き込み先として指定されたLBAとを転送して、LBA管理テーブル122の更新を指示する。
図17は、ポストプロセスモードでのIO制御処理手順の例を示すフローチャートである。この図17の処理は、図14のステップS65の処理に対応する。
[ステップS65a]IO制御部131は、書き込みデータの書き込み先として指定されたLBAに基づいて、このLBAの担当サーバを特定し、IO制御部131自身を含むサーバ100が、指定されたLBAの担当サーバであるかを判定する。IO制御部131は、担当サーバである場合、ステップS65bの処理を実行し、担当サーバでない場合、ステップS65eの処理を実行する。
[ステップS65b]IO制御部131は、IO制御部131自身を含むサーバ100のLBA管理部134に、書き込みデータを通知して、キャッシュ110への格納を指示する。
[ステップS65c]IO制御部131は、ステップS65bでの通知先のLBA管理部134から、書き込みデータが格納されたキャッシュページのページ番号を取得する。
[ステップS65d]IO制御部131は、IO制御部131自身を含むサーバ100のLBA管理部134に、取得されたページ番号と、書き込み先として指定されたLBAとを通知して、LBA管理テーブル122の更新を指示する。
[ステップS65e]IO制御部131は、指定されたLBAの担当サーバである他のサーバ100のLBA管理部134に、書き込みデータを転送して、キャッシュ110への格納を指示する。
[ステップS65f]IO制御部131は、ステップS65eでの転送先のLBA管理部134から、書き込みデータが格納されたキャッシュページのページ番号を受信する。
[ステップS65g]IO制御部131は、指定されたLBAの担当サーバである他のサーバ100のLBA管理部134に、取得されたページ番号と、書き込み先として指定されたLBAとを転送して、LBA管理テーブル122の更新を指示する。
図18は、重複除去処理手順の例を示すフローチャートである。
[ステップS81]重複除去制御部133は、書き込みデータとハッシュ値とを、書き込み指示とともに受け付ける。例えば、重複除去制御部133は、図16のステップS64cまたはステップS64dの処理に応じて、いずれかのサーバ100のIO制御部131から書き込み指示を受け付ける。あるいは、重複除去制御部133は、後述する図21のステップS134またはステップS135の処理に応じて、いずれかのサーバ100のIO制御部131から書き込み指示を受け付ける。
[ステップS82]重複除去制御部133は、受け付けたハッシュ値を含むエントリがハッシュ管理テーブル121に登録されているかを判定する。重複除去制御部133は、該当エントリが登録されている場合、ステップS86の処理を実行し、登録されていない場合、ステップS83の処理を実行する。
[ステップS83]ステップS82でエントリが登録されていないと判定された場合、受け付けた書き込みデータと同じ内容のデータは、キャッシュ110またはストレージ200にまだ格納されていない。この場合、重複除去制御部133は、キャッシュ110に新たなキャッシュページを作成し、そのキャッシュページに書き込みデータを格納する。この書き込みデータは、ハッシュ計算済みブロックのデータとしてキャッシュ110に格納される。
[ステップS84]重複除去制御部133は、記憶部120のハッシュ計算済みブロック数124をカウントアップする。
[ステップS85]重複除去制御部133は、ハッシュ管理テーブル121に新たにエントリを作成する。重複除去制御部133は、作成されたエントリにおいて、ハッシュ値の項目に受け付けたハッシュ値を登録し、ポインタの項目にステップS83で書き込みデータを格納したキャッシュページのページ番号を登録し、カウント値の項目に「1」を登録する。
[ステップS86]ステップS82でエントリが登録されていると判定された場合、受け付けた書き込みデータと同じ内容のデータが、キャッシュ110またはストレージ200にすでに格納されている。この場合、重複除去制御部133は、ハッシュ管理テーブル121のエントリのうち、ステップS81で受け付けたハッシュ値が登録されたエントリを特定する。重複除去制御部133は、特定されたエントリにおけるカウント値の項目の値をカウントアップする。また、重複除去制御部133は、ステップS81で受け付けた書き込みデータおよびハッシュ値を破棄する。このようなステップS86の処理により、書き込みデータは重複を除去してストレージノードに格納される。
[ステップS87]重複除去制御部133は、ステップS85で作成されたエントリ、またはステップS86で特定されたエントリのアドレスを通知する。ステップS81で重複除去制御部133と同じサーバ100に含まれるIO制御部131またはLBA管理部134から書き込み指示を受けた場合、エントリのアドレスは同じサーバ100のIO制御部131またはLBA管理部134に通知される。また、ステップS81で重複除去制御部133とは異なる他のサーバ100に含まれるIO制御部131またはLBA管理部134から書き込み指示を受けた場合、エントリのアドレスは他のサーバ100のIO制御部131またはLBA管理部134に転送される。
図19は、インラインモードでのLBA管理処理手順の例を示す図である。
[ステップS101]LBA管理部134は、ハッシュ管理テーブル121のエントリのアドレスと、書き込みデータの書き込み先として指定されたLBAとを、テーブル更新指示とともに受け付ける。例えば、LBA管理部134は、図16のステップS64gまたはステップS64hの処理に応じて、いずれかのサーバ100のIO制御部131からテーブル更新指示を受け付ける。
[ステップS102]LBA管理部134は、LBA管理テーブル122から、ステップS101で受け付けたLBAを含むエントリを特定する。LBA管理部134は、特定されたエントリにおけるポインタの項目に、ステップS101で受け付けたエントリのアドレスを登録する。
[ステップS103]LBA管理部134は、テーブル更新指示の通知元のIO制御部131に対して、テーブル更新の完了通知メッセージを送信する。
以上の図19の処理により、ハッシュ計算済みブロックのデータについて、LBAとハッシュ管理テーブル121のエントリとがマッピングされる。
図20は、ポストプロセスモードでのLBA管理処理手順の例を示す図である。
[ステップS111]LBA管理部134は、書き込みデータをキャッシュ110への格納指示とともに受け付ける。例えば、LBA管理部134は、図17のステップS65bまたはS65eの処理に応じて、いずれかのサーバ100のIO制御部131から格納指示を受け付ける。
[ステップS112]LBA管理部134は、キャッシュ110に新たなキャッシュページを作成し、そのキャッシュページに書き込みデータを格納する。この書き込みデータは、ハッシュ未計算ブロックのデータとしてキャッシュ110に格納される。
[ステップS113]LBA管理部134は、記憶部120のハッシュ未計算ブロック数123をカウントアップする。
[ステップS114]LBA管理部134は、ステップS112で作成されたキャッシュページのページ番号を、格納指示の通知元のIO制御部131に通知する。
[ステップS115]LBA管理部134は、キャッシュページのページ番号と、書き込みデータの書き込み先として指定されたLBAとを、テーブル更新指示とともに受け付ける。例えば、LBA管理部134は、図17のステップS65dまたはステップS65gの処理に応じて、いずれかのサーバ100のIO制御部131からテーブル更新指示を受け付ける。
[ステップS116]LBA管理部134は、LBA管理テーブル122から、ステップS115で受け付けたLBAを含むエントリを特定する。LBA管理部134は、特定されたエントリにおけるポインタの項目に、ステップS115で受け付けたページ番号を登録する。
なお、ステップS116で登録されるページ番号は、ステップS114で通知されたページ番号と同じである。このため、LBA管理部134は、ステップS114,S115の処理をスキップし、ステップS116ではLBAとテーブル更新指示とを受け付けて、テーブル更新を行ってもよい。また、LBA管理部134は、ステップS111の段階でLBAを受け付けてもよい。
以上の図20の処理により、ハッシュ未計算ブロックのデータについて、LBAとキャッシュページとがマッピングされる。
図21は、バックグラウンドでのブロック再配置処理手順の例を示すフローチャートである。図21の処理は、図14〜図20に示した、書き込み要求の受信からその応答までの書き込み制御処理とは非同期に、その書き込み制御処理と並行して実行される。
[ステップS131]LBA管理部134は、キャッシュ110に格納されたハッシュ未計算ブロックのデータを1つ選択する。例えば、LBA管理部134は、LBA管理テーブル122のエントリのうち、ポインタの項目にキャッシュページのページ番号が登録されたエントリを特定する。LBA管理部134は、特定されたエントリの中から、ページ番号の登録時刻が最も早いエントリ、あるいは、ホスト装置400からのアクセス頻度が最も低いエントリを選択する。選択されたエントリに登録されたページ番号が示すキャッシュページに格納されたデータが、選択されるハッシュ未計算ブロックのデータとなる。
[ステップS132]LBA管理部134は、選択されたハッシュ未計算ブロックのデータを基にハッシュ値を計算する。
[ステップS133]LBA管理部134は、算出されたハッシュ値のハッシュ先頭値に基づいて、このハッシュ値の担当サーバを特定し、LBA管理部134自身を含むサーバ100が、算出されたハッシュ値の担当サーバであるかを判定する。LBA管理部134は、担当サーバである場合、ステップS134の処理を実行し、担当サーバでない場合、ステップS135の処理を実行する。
[ステップS134]LBA管理部134は、LBA管理部134自身を含むサーバ100の重複除去制御部133に対して、ハッシュ未計算ブロックのデータとハッシュ値とを通知し、データの書き込みを指示する。
[ステップS135]LBA管理部134は、算出されたハッシュ値の担当サーバである他のサーバ100の重複除去制御部133に対して書き込みデータとハッシュ値とを転送し、書き込みデータの書き込みを指示する。
[ステップS136]LBA管理部134は、ステップS134でのデータおよびハッシュ値の通知先のLBA管理部134、または、ステップS135でのデータおよびハッシュ値の転送先のLBA管理部134から、ハッシュ管理テーブル121のエントリのアドレスをテーブル更新とともに受け付ける。このエントリは、ステップS132で算出されたハッシュ値に対応するエントリであり、ステップS131で選択されたハッシュ未計算ブロックがハッシュ計算済みブロックとして登録された物理記憶領域の位置情報を保持する。
[ステップS137]LBA管理部134は、LBA管理テーブル122のエントリのうち、ステップS131で選択されたハッシュ未計算ブロックのデータに対応するエントリを特定する。LBA管理部134は、特定されたエントリにおけるポインタの項目に、ステップS136で受け付けられたエントリのアドレスを上書きして登録する。
[ステップS138]LBA管理部134は、記憶部120のハッシュ未計算ブロック数123をカウントダウンする。
以上の図21の処理により、バックグラウンドにおいて、ハッシュ未計算ブロックのデータが、重複が除去された状態でいずれかのサーバ100のキャッシュ110に再配置される。
図22は、デステージ処理手順の例を示すフローチャートである。図22の処理は、図14〜図20の書き込み制御処理や、図21のブロック再配置処理と並行して実行される。
[ステップS151]IO制御部131は、キャッシュ110に格納されたハッシュ計算済みブロックのデータの中から、デステージ対象のデータを選択する。例えば、IO制御部131は、キャッシュ110の容量が残り少なくなった場合に、キャッシュ110に格納されたハッシュ計算済みブロックのデータのうち最終アクセス日時が最も早いデータを、デステージ対象として選択する。この場合、デステージ対象のデータは、キャッシュ110から追い出されるデータとなる。また、例えば、IO制御部131は、キャッシュ110に格納されたハッシュ計算済みブロックのデータの中から、ストレージ200内のデータと同期されていないダーティデータを特定してもよい。この場合、例えば、IO制御部131は、特定されたダーティデータのうち更新日時が最も早いデータを、デステージ対象として選択する。
[ステップS152]IO制御部131は、選択されたデータをストレージ200に格納する。選択されたデータが追い出しの対象の場合、IO制御部131は、データをキャッシュ110からストレージ200に移動させる。選択されたデータが追い出しの対象でない場合、IO制御部131は、データをキャッシュ110からストレージ200にコピーする。
[ステップS153]IO制御部131は、ハッシュ管理テーブル121から、デステージ対象のデータに対応するエントリを特定する。例えば、IO制御部131は、選択されたデータのハッシュ値を計算し、ハッシュ管理テーブル121から、算出されたハッシュ値が登録されたエントリを特定する。IO制御部131は、特定されたエントリにおけるポインタの項目に、ステップS152でのデータの格納先を示す物理アドレス(PBA:Physical Block Address)を登録する。
[ステップS154]この処理は、選択されたデータが追い出しの対象であり、ステップS152でキャッシュ110から移動された場合のみ実行される。IO制御部131は、記憶部120のハッシュ計算済みブロック数124をカウントダウンする。
なお、上記の各実施の形態に示した装置(例えば、ストレージ制御装置1、サーバ100a〜100c、ホスト装置400a,400b)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc-Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
1 ストレージ制御装置
1a 検出部
1b 決定部
1c 目標比率
11,12 ストレージノード
11a,12a 記憶装置
21 第1の処理
22 第2の処理
23 第3の処理
S1a,S1b,S2a,S2b,S3 ステップ

Claims (10)

  1. それぞれ記憶装置を有する複数のストレージノードを含むストレージシステムの動作を制御するストレージ制御装置において、
    前記複数のストレージノードの少なくとも1つの前記記憶装置に格納されたデータブロックのうち、第1の処理によって格納された第1のデータブロックの数と、第2の処理によって格納された第2のデータブロックの数との比率を検出する検出部であって、前記第1の処理は、前記複数のストレージノードのうちホスト装置から第1の書き込みデータブロックの書き込み要求を受けたストレージノードから、前記第1の書き込みデータブロックを、前記複数のストレージノードのいずれかの前記記憶装置に対して重複を除去して前記第1のデータブロックとして格納し、前記ホスト装置に応答する処理を含み、前記第2の処理は、前記複数のストレージノードのうち前記ホスト装置から第2の書き込みデータブロックの書き込み要求を受けたストレージノードから、前記第2の書き込みデータブロックを、前記複数のストレージノードのいずれかの前記記憶装置に対して重複除去処理をスキップして前記第2のデータブロックとして格納し、前記ホスト装置に応答する処理を含む、前記検出部と、
    前記比率が、前記第2のデータブロックに対する第3の処理の負荷と、前記ホスト装置からの書き込み要求を単位時間内に処理可能な回数の下限目標値とに基づく目標比率に近づくように、前記ホスト装置から新たに書き込みが要求された第3の書き込みデータブロックの書き込み処理を前記第1の処理と前記第2の処理のどちらを用いて実行するかを決定する決定部であって、前記第3の処理は、前記複数のストレージノードのいずれかの前記記憶装置に対して、前記第2のデータブロックを重複を除去して格納し直す処理を含む、前記決定部と、
    を有するストレージ制御装置。
  2. 前記複数のストレージノードのそれぞれに含まれる前記記憶装置は、他の記憶装置へ書き込むデータをキャッシュするキャッシュメモリであり、
    前記目標比率は、前記第3の処理の負荷と、前記第1のデータブロックに対する第4の処理の負荷と、前記下限目標値とに基づいて決定され、
    前記第3の処理は、前記第2のデータブロックを前記他の記憶装置にデステージする処理をさらに含み、
    前記第4の処理は、前記第1のデータブロックを前記他の記憶装置にデステージする処理を含む、
    請求項1記載のストレージ制御装置。
  3. 前記第3の処理の負荷は、前記第3の処理を連続して実行可能な時間間隔を示し、
    前記第4の処理の負荷は、前記第4の処理を連続して実行可能な時間間隔を示し、
    前記目標比率は、前記第4の処理と前記第3の処理とを前記目標比率で実行したときに、単位時間における前記第4の処理と前記第3の処理の実行回数の合計値が前記下限目標値以上となり、かつ、前記第3の処理の実行回数が最大となる値として決定される、
    請求項2記載のストレージ制御装置。
  4. 前記第3の処理は、前記複数のストレージノードのうち、前記ホスト装置から前記第2のデータブロックの書き込み先として指定された論理アドレスに基づいて決まるストレージノードに対して、前記論理アドレスと、前記第2のデータブロックが格納し直された記憶領域を示す情報とのマッピングを指示する処理を含む、
    請求項2または3記載のストレージ制御装置。
  5. 前記第1の処理は、前記第1の書き込みデータブロックに基づいて第1のハッシュ値を算出し、前記複数のストレージノードのうち前記第1のハッシュ値に基づいて決まる第1のストレージノードの前記記憶装置に対して、重複を除去して前記第1の書き込みデータを前記第1のデータブロックとして格納する処理を含み、
    前記第2の処理は、前記複数のストレージノードのうち前記第2の書き込みデータブロックの書き込み先に基づいて決まる第2のストレージノードの前記記憶装置に対して、前記第2の書き込みデータブロックを前記第2のデータブロックとして格納する処理を含み、
    前記第3の処理は、前記第2のデータブロックに基づいて第2のハッシュ値を算出し、前記複数のストレージノードのうち前記第2のハッシュ値に基づいて決まる第3のストレージノードの前記記憶装置に対して、前記第2のデータブロックを重複を除去して格納し直す処理を含む、
    請求項1乃至3のいずれか1項に記載のストレージ制御装置。
  6. 前記決定部は、前記複数のストレージノードの前記記憶装置におけるデータ格納量が所定の下限閾値以下である場合、前記第3の書き込みデータブロックの書き込み処理を前記第2の処理を用いて実行すると決定する、
    請求項1乃至5のいずれか1項に記載のストレージ制御装置。
  7. 前記決定部は、前記複数のストレージノードの前記記憶装置におけるデータ格納量が所定の上限閾値以上である場合、前記第3の書き込みデータブロックの書き込み処理を前記第1の処理を用いて実行すると決定する、
    請求項1乃至6のいずれか1項に記載のストレージ制御装置。
  8. それぞれ記憶装置を有する複数のストレージノードを含むストレージシステムであって、
    前記複数のストレージノードの少なくとも1つは、
    前記複数のストレージノードの少なくとも1つの前記記憶装置に格納されたデータブロックのうち、第1の処理によって格納された第1のデータブロックの数と、第2の処理によって格納された第2のデータブロックの数との比率を検出する検出部であって、前記第1の処理は、前記複数のストレージノードのうちホスト装置から第1の書き込みデータブロックの書き込み要求を受けたストレージノードから、前記第1の書き込みデータブロックを、前記複数のストレージノードのいずれかの前記記憶装置に対して重複を除去して前記第1のデータブロックとして格納し、前記ホスト装置に応答する処理を含み、前記第2の処理は、前記複数のストレージノードのうち前記ホスト装置から第2の書き込みデータブロックの書き込み要求を受けたストレージノードから、前記第2の書き込みデータブロックを、前記複数のストレージノードのいずれかの前記記憶装置に対して重複除去処理をスキップして前記第2のデータブロックとして格納し、前記ホスト装置に応答する処理を含む、前記検出部と、
    前記比率が、前記第2のデータブロックに対する第3の処理の負荷と、前記ホスト装置からの書き込み要求を単位時間内に処理可能な回数の下限目標値とに基づく目標比率に近づくように、前記ホスト装置から新たに書き込みが要求された第3の書き込みデータブロックの書き込み処理を前記第1の処理と前記第2の処理のどちらを用いて実行するかを決定する決定部であって、前記第3の処理は、前記複数のストレージノードのいずれかの前記記憶装置に対して、前記第2のデータブロックを重複を除去して格納し直す処理を含む、前記決定部と、
    を備えるストレージ制御装置を有する、
    ストレージシステム。
  9. それぞれ記憶装置を有する複数のストレージノードを含むストレージシステムの動作を制御するストレージ制御方法において、
    コンピュータが、
    前記複数のストレージノードの少なくとも1つの前記記憶装置に格納されたデータブロックのうち、第1の処理によって格納された第1のデータブロックの数と、第2の処理によって格納された第2のデータブロックの数との比率を検出し、前記第1の処理は、前記複数のストレージノードのうちホスト装置から第1の書き込みデータブロックの書き込み要求を受けたストレージノードから、前記第1の書き込みデータブロックを、前記複数のストレージノードのいずれかの前記記憶装置に対して重複を除去して前記第1のデータブロックとして格納し、前記ホスト装置に応答する処理を含み、前記第2の処理は、前記複数のストレージノードのうち前記ホスト装置から第2の書き込みデータブロックの書き込み要求を受けたストレージノードから、前記第2の書き込みデータブロックを、前記複数のストレージノードのいずれかの前記記憶装置に対して重複除去処理をスキップして前記第2のデータブロックとして格納し、前記ホスト装置に応答する処理を含み、
    前記比率が、前記第2のデータブロックに対する第3の処理の負荷と、前記ホスト装置からの書き込み要求を単位時間内に処理可能な回数の下限目標値とに基づく目標比率に近づくように、前記ホスト装置から新たに書き込みが要求された第3の書き込みデータブロックの書き込み処理を前記第1の処理と前記第2の処理のどちらを用いて実行するかを決定し、前記第3の処理は、前記複数のストレージノードのいずれかの前記記憶装置に対して、前記第2のデータブロックを重複を除去して格納し直す処理を含む、
    ストレージ制御方法。
  10. それぞれ記憶装置を有する複数のストレージノードを含むストレージシステムの動作を制御するストレージ制御プログラムにおいて、
    コンピュータに、
    前記複数のストレージノードの少なくとも1つの前記記憶装置に格納されたデータブロックのうち、第1の処理によって格納された第1のデータブロックの数と、第2の処理によって格納された第2のデータブロックの数との比率を検出し、前記第1の処理は、前記複数のストレージノードのうちホスト装置から第1の書き込みデータブロックの書き込み要求を受けたストレージノードから、前記第1の書き込みデータブロックを、前記複数のストレージノードのいずれかの前記記憶装置に対して重複を除去して前記第1のデータブロックとして格納し、前記ホスト装置に応答する処理を含み、前記第2の処理は、前記複数のストレージノードのうち前記ホスト装置から第2の書き込みデータブロックの書き込み要求を受けたストレージノードから、前記第2の書き込みデータブロックを、前記複数のストレージノードのいずれかの前記記憶装置に対して重複除去処理をスキップして前記第2のデータブロックとして格納し、前記ホスト装置に応答する処理を含み、
    前記比率が、前記第2のデータブロックに対する第3の処理の負荷と、前記ホスト装置からの書き込み要求を単位時間内に処理可能な回数の下限目標値とに基づく目標比率に近づくように、前記ホスト装置から新たに書き込みが要求された第3の書き込みデータブロックの書き込み処理を前記第1の処理と前記第2の処理のどちらを用いて実行するかを決定し、前記第3の処理は、前記複数のストレージノードのいずれかの前記記憶装置に対して、前記第2のデータブロックを重複を除去して格納し直す処理を含む、
    処理を実行させるストレージ制御プログラム。
JP2016174565A 2016-09-07 2016-09-07 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム Withdrawn JP2018041248A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016174565A JP2018041248A (ja) 2016-09-07 2016-09-07 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US15/684,989 US20180067680A1 (en) 2016-09-07 2017-08-24 Storage control apparatus, system, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016174565A JP2018041248A (ja) 2016-09-07 2016-09-07 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム

Publications (1)

Publication Number Publication Date
JP2018041248A true JP2018041248A (ja) 2018-03-15

Family

ID=61280537

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016174565A Withdrawn JP2018041248A (ja) 2016-09-07 2016-09-07 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム

Country Status (2)

Country Link
US (1) US20180067680A1 (ja)
JP (1) JP2018041248A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3537103A1 (en) 2018-03-07 2019-09-11 Ricoh Company, Ltd. Calibration reference point acquisition system and calibration reference point acquisition method

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10831370B1 (en) * 2016-12-30 2020-11-10 EMC IP Holding Company LLC Deduplicated and compressed non-volatile memory cache
WO2021016728A1 (zh) * 2019-07-26 2021-02-04 华为技术有限公司 存储系统中数据处理方法、装置及计算机存储可读存储介质
CN110569203B (zh) * 2019-08-09 2021-11-30 华为技术有限公司 一种输入控制方法、装置及存储设备
KR20220077208A (ko) 2020-11-30 2022-06-09 삼성전자주식회사 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법
US11487664B1 (en) * 2021-04-21 2022-11-01 EMC IP Holding Company LLC Performing data reduction during host data ingest

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3537103A1 (en) 2018-03-07 2019-09-11 Ricoh Company, Ltd. Calibration reference point acquisition system and calibration reference point acquisition method

Also Published As

Publication number Publication date
US20180067680A1 (en) 2018-03-08

Similar Documents

Publication Publication Date Title
JP2018041248A (ja) ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US9128855B1 (en) Flash cache partitioning
US9632707B2 (en) Enhancing tiering storage performance
JP6781377B2 (ja) 情報処理装置、情報処理方法およびプログラム
US8850152B2 (en) Method of data migration and information storage system
US10061702B2 (en) Predictive analytics for storage tiering and caching
US8966143B2 (en) Method for controlling storages and storage control apparatus
US20160224274A1 (en) Storage device and storage system
US10209898B2 (en) Estimation of performance utilization of a storage device
US9323682B1 (en) Non-intrusive automated storage tiering using information of front end storage activities
JP5976980B1 (ja) 階層化ストレージシステム、階層化ストレージ装置を利用するコンピュータ、及びファイルへのアクセスのカウントを補正する方法
KR20200067962A (ko) Ssd에 데이터를 기록하는 방법 및 장치
JP2018041245A (ja) ストレージ装置、及びストレージ制御装置
WO2012094400A1 (en) Selecting storage locations for storing data based on storage location attributes and data usage statistics
CN104583930A (zh) 数据迁移的方法、控制器和数据迁移装置
US20130097210A1 (en) Efficient garbage collection in a compressed journal file
US20160011788A1 (en) Storage control apparatus and storage control method
US20170344269A1 (en) Storage system, control apparatus, and method of transmitting data
JP2016153957A (ja) データ配置プログラム、データ配置装置およびデータ配置方法
US11429431B2 (en) Information processing system and management device
US20180341423A1 (en) Storage control device and information processing system
US20190056878A1 (en) Storage control apparatus and computer-readable recording medium storing program therefor
GB2522742A (en) Nonvolatile storage thresholding for ultra-SSD, SSD, and HDD drive intermix
US11321000B2 (en) System and method for variable sparing in RAID groups based on drive failure probability
US20170285983A1 (en) Storage system, storage system control method, and program therefor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190611

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190613

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190613

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20191225