JP2019016320A - ストレージ制御装置およびストレージ制御プログラム - Google Patents

ストレージ制御装置およびストレージ制御プログラム Download PDF

Info

Publication number
JP2019016320A
JP2019016320A JP2017135335A JP2017135335A JP2019016320A JP 2019016320 A JP2019016320 A JP 2019016320A JP 2017135335 A JP2017135335 A JP 2017135335A JP 2017135335 A JP2017135335 A JP 2017135335A JP 2019016320 A JP2019016320 A JP 2019016320A
Authority
JP
Japan
Prior art keywords
data
write
stream
ssd
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017135335A
Other languages
English (en)
Inventor
孝典 石井
Takanori Ishii
孝典 石井
知佳 青木
Tomoyoshi Aoki
知佳 青木
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 JP2017135335A priority Critical patent/JP2019016320A/ja
Priority to US16/026,174 priority patent/US10776278B2/en
Publication of JP2019016320A publication Critical patent/JP2019016320A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/10Address translation
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】記憶装置での書き込み回数を低減する。【解決手段】記憶部11は、記憶装置20の論理記憶領域21を分割した分割領域R1〜R3のそれぞれと、書き込み頻度の違いを示す複数の識別番号のうちの1つとの対応関係を示す対応管理情報11aを記憶する。制御部12は、分割領域R1〜R3ごとに書き込み頻度を計測し、書き込み頻度の計測結果に基づいて、対応管理情報11aが示す対応関係を更新する。制御部12は、対応関係の更新後に分割領域R1に含まれる書き込みアドレスAD1への書き込みが要求されると、対応管理情報11aに基づいて、分割領域R1に対応付けられた識別番号「3」を、書き込みアドレスAD1に対する書き込み要求に付加して記憶装置20に送信する。【選択図】図1

Description

本発明は、ストレージ制御装置およびストレージ制御プログラムに関する。
SSD(Solid State Drive)は、同じ論理アドレスに対して書き込みが要求された場合、元のデータを無効データとして残したまま、新たなデータを別の未書き込みページに書き込む。このため、SSDの物理記憶領域には無効データが多数残り、それらの無効データによって容量が圧迫される。そこで、物理記憶領域の空き容量を増やすために、ガベージコレクションが実行される。ガベージコレクションでは、空きが少なくなったブロックから有効データだけが別のブロックに移動され、その後、元のブロックのデータが消去(フラッシュ)される。
一方、ブロックに書き込まれるデータには、更新頻度が高いデータと低いデータとが混在し得る。そのため、ガベージコレクションの実行により、更新されていないデータが他のブロックに移動される場合があり得る。更新されていないデータには、対応する無効データが存在しないので、このようなデータの移動は空き容量を増やす効果に寄与せず、無駄なデータ移動と言える。このような無駄なデータ移動によってSSD内部での書き込み回数が増加することで、SSDの寿命を縮める、あるいは外部からのアクセス応答速度が低下するという問題がある。
このような問題に対して、SSDに書き込むデータに属性情報(ストリームID)を付加することが可能なデータストリーム制御規格が策定されている。ストリームIDが付加されたデータの書き込みが要求されると、SSDは、データをストリームIDごとに異なるブロックに書き込む。この規格を用いた場合、例えば、更新頻度の高いデータと低いデータとに異なるストリームIDを付加することで、更新頻度の低いデータのガベージコレクションが実行されにくくなる。その結果、SSD内部でのデータ移動による書き込み回数を減少させることができる。
また、不揮発メモリに対する書き込み制御技術として、次のような技術が提案されている。
例えば、複数の論理アドレス空間を、記憶装置の複数のスペースに割り当て、記憶装置に対するコマンドと、コマンドに対応する論理アドレス空間に割り当てられたスペースの識別データとを記憶装置に送信するようにした情報処理装置が提案されている。なお、この提案において、各スペースは記憶装置内の1以上の書き込み管理エリアに割り当てられている。
さらに、書き込み頻度が低い第1の小論理アドレス領域の集合のデータをSSDにまとめて再書き込みし、残りの第2の小論理アドレス領域の集合のデータをSSDにまとめて再書き込みするようにしたストレージコントローラが提案されている。また、論理アドレスごとの書き換え回数情報に基づき、書き替え回数の少ない所定の論理アドレスに対応する不揮発メモリの物理アドレスを別の物理アドレスに入れ替え、その入れ替えに則したデータ移動を行う制御回路を備えた記憶装置が提案されている。
特開2016−115355号公報 国際公開第2014/049678号 国際公開第2006/067839号
ところで、上記のように、SSDに書き込むデータの更新頻度に応じたストリームIDを付加する場合には、次のような問題がある。
例えば、SSDの論理記憶領域を分割した分割領域ごとに、あらかじめ異なるストリームIDを割り当てるものとする。そして、ある分割領域に対するデータの書き込み要求をSSDに送信する場合に、その分割領域に割り当てられたストリームIDを書き込み要求に付加して送信するものとする。この場合、SSDでは、分割領域ごとにデータが異なるブロックに書き込まれる。
ここで、各分割領域における更新頻度は、時間経過に伴って変動し得る。分割領域ごとの更新頻度が変動した場合には、ガベージコレクションによる書き込み回数の低減効果が十分に得られなくなる。例えば、ある分割領域のデータがあるブロックに書き込まれる状況において、当初はその分割領域の更新頻度が低かったものの、徐々に更新頻度が上昇した場合、そのブロックには更新頻度の高いデータと低いデータとが混在することになる。このため、そのブロックについてガベージコレクションが実行されたとき、有効データが移動する確率が高くなり、その結果としてSSDでの書き込み回数が増加する可能性がある。
なお、以上の問題点は、SSDに限らず、フラッシュメモリを用いた記憶装置全般について生じる。
1つの側面では、本発明は、記憶装置での書き込み回数を低減可能なストレージ制御装置およびストレージ制御プログラムを提供することを目的とする。
1つの案では、記憶部と制御部とを有する次のようなストレージ制御装置が提供される。記憶部は、記憶装置の論理記憶領域を分割した複数の分割領域のそれぞれと、書き込み頻度の違いを示す複数の識別番号のうちの1つとの対応関係を示す対応管理情報を記憶する。制御部は、複数の分割領域のいずれかに含まれる書き込みアドレスへの書き込みが要求されると、対応管理情報に基づいて、複数の識別番号のうち書き込みアドレスを含む分割領域に対応付けられた識別番号を、書き込みアドレスに対する第1の書き込み要求に付加して記憶装置に送信し、複数の分割領域ごとに書き込み頻度を計測し、書き込み頻度の計測結果に基づいて、対応管理情報が示す対応関係を更新し、対応関係の更新後に書き込みアドレスへの書き込みが要求されると、対応管理情報に基づいて、複数の識別番号のうち書き込みアドレスを含む分割領域に対応付けられた識別番号を、書き込みアドレスに対する第2の書き込み要求に付加して記憶装置に送信する。
また、1つの案では、上記のストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
1つの側面では、記憶装置での書き込み回数を低減できる。
第1の実施の形態に係るストレージ制御装置の構成例および処理例を示す図である。 第2の実施の形態に係るストレージシステムの構成例を示す図である。 ストリームIDを利用しない場合のSSDにおける書き込み制御の比較例を示す図である。 ストリームIDを利用した場合のSSDにおける書き込み制御の比較例を示す図である。 1つのストリームIDを複数の単位領域に共通に割り当てた場合のSSDにおける書き込み制御の例を示す図である。 CMが備える処理機能の構成例を示すブロック図である。 ストリームID管理テーブル、書き込み量管理テーブルおよびSSD書き込み量管理テーブルの構成例を示す図である。 データの書き込みが要求された場合のFPGAの処理手順の例を示すフローチャート(その1)である。 データの書き込みが要求された場合のFPGAの処理手順の例を示すフローチャート(その2)である。 ストリームID更新処理手順の例を示すフローチャートである。 ガベージコレクション制御処理手順の例を示すフローチャート(その1)である。 ガベージコレクション制御処理手順の例を示すフローチャート(その2)である。 未更新データのストリームID更新処理手順の例を示すフローチャートである。 第1の状態において管理テーブルに登録されるデータの例を示す図である。 第1の状態におけるSSDの物理記憶領域のイメージ例を示す図である。 第2の状態において管理テーブルに登録されるデータの例を示す図である。 第3の状態において管理テーブルに登録されるデータの例を示す図である。 第4の状態において管理テーブルに登録されるデータの例を示す図である。 第3、第4の状態におけるSSDの物理記憶領域のイメージ例を示す図である。 第5の状態において管理テーブルに登録されるデータの例を示す図である。 第5の状態におけるSSDの物理記憶領域のイメージ例を示す図である。 第3の実施の形態に係るCMが備える処理機能の構成例を示すブロック図である。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージ制御装置の構成例および処理例を示す図である。図1に示すストレージ制御装置10は、記憶装置20に接続し、記憶装置20に対するデータの書き込みを制御する。記憶装置20は、例えば、フラッシュメモリ、あるいはフラッシュメモリを内蔵するSSDである。
ストレージ制御装置10は、記憶部11と制御部12を有する。記憶部11は、例えば、ストレージ制御装置10が備える図示しないRAM(Random Access Memory)、HDD(Hard Disk Drive)などの記憶装置の記憶領域として実現される。制御部12は、例えば、ストレージ制御装置10が備えるプロセッサとして実現される。
記憶部11は、対応管理情報11aを記憶する。対応管理情報11aは、記憶装置20の論理記憶領域21を分割した複数の分割領域のそれぞれと、複数の識別番号(以下、「ID」と記載する)との対応関係を示す。本実施の形態では、例として、論理記憶領域21は3つの分割領域R1〜R3に分割されているものとする。また、本実施の形態では、例として、IDは「1」〜「3」のいずれかの値をとるものとする。
ID「1」〜「3」のそれぞれは、対応する分割領域での書き込み頻度の違いを示す。本実施の形態では、例として、書き込み頻度が高い分割領域ほど大きい値のIDが対応付けられるものとする。なお、分割領域の数が、IDがとる値の数より大きい場合には、1つのIDの値が複数の分割領域に対応付けられ得る。
ここで、例えば、記憶装置20の物理記憶領域22は、複数の管理領域22a,22b,22c,・・・に分割されている。管理領域22a,22b,22c,・・・のそれぞれは、データ消去の単位となる領域であり、フラッシュメモリやSSDの場合、ブロックに相当する。
この場合、ID「1」〜「3」は、記憶装置20が、書き込みが要求されたデータを、そのデータに付加されたIDに応じて、管理領域22a,22b,22c,・・・のうち異なる管理領域に書き込むように制御するための情報である。すなわち、記憶装置20は、同じIDが付与されたデータの書き込みが要求されると、それらのデータを同じ管理領域に書き込む。
また、記憶装置20は、例えば、ガベージコレクションを実行することができる。例えば、記憶装置20は、残容量が所定量以下になった管理領域を選択し、その管理領域に書き込まれたデータのうちの有効データだけを、他の未使用の管理領域に移動させる。そして、有効データの読み出し元の管理領域を未使用状態に戻し、新たなデータを書き込み可能な状態にする。
前述のように、本実施の形態では、ID「1」〜「3」のそれぞれは、対応する分割領域での書き込み頻度の違いを示す。このため、各管理領域には、書き込み頻度が似通った分割領域に属するデータが書き込まれる。その結果、書き込み頻度の高い分割領域に属するデータが書き込まれる管理領域ほど、ガベージコレクションが実行されやすくなる。これは、無効データが多い管理領域のガベージコレクションが実行されやすくなることを意味し、それによって、物理記憶領域22における無効データの削減効果が高まる。これとともに、他のブロックへの有効データの移動データ量が少なくなり、結果的に、ガベージコレクションに伴う記憶装置20での書き込み回数が低減される。
ただし、分割領域での書き込み頻度が変動する場合には、このような効果を十分には得られない。例えば、書き込み頻度が高い状態から低い状態に変動した場合、対応する管理領域では、当初はデータの更新が頻繁に起こり、有効データの比率が小さいが、徐々にデータの更新が起こりにくくなり、有効データの比率が上昇していく。そのため、ガベージコレクションを実行したときに、移動する有効データのデータ量が多くなる可能性がある。
そこで、本実施の形態の制御部12は、分割領域R1〜R3のそれぞれにおける書き込み頻度を計測し、その計測結果に基づいて、分割領域R1〜R3のそれぞれに対応付けるIDを動的に変化させる。以下、制御部12の処理について説明する。
まず、対応管理情報11aにおいては、分割領域R1,R2,R3に対してそれぞれID「1」,「2」,「3」が対応付けられているとする。この場合、分割領域R3,R2,R1の順に書き込み頻度が高いと判定されている。なお、この対応関係は、例えば、分割領域R1〜R3のそれぞれにおける書き込み頻度の実測値に基づいて決定されてもよいし、書き込み頻度の予測に基づいて決定されてもよい。
この状態において、制御部12は、分割領域R1〜R3のいずれかに含まれる書き込みアドレス(論理アドレス)への書き込みが要求されると、対応管理情報11aに基づいて、その書き込みアドレスを含む分割領域に対応付けられたIDを特定する。そして、制御部12は、その書き込みアドレスに対する書き込み要求に、特定したIDを付加して記憶装置20に送信する(ステップS1)。
例えば、分割領域R1の書き込みアドレスAD1に対してデータD1aの書き込みが要求されたとする。この場合、制御部12は、対応管理情報11aから、分割領域R1に対応付けられたID「1」を抽出する。制御部12は、書き込みアドレスAD1に対してデータD1aを書き込むための書き込み要求に、ID「1」を付加して記憶装置20に送信する。記憶装置20は、例えば、付加されたID「1」に応じて、データD1aを管理領域22aに書き込む。
また、例えば、分割領域R3の書き込みアドレスAD2に対してデータD2aの書き込みが要求されたとする。この場合、制御部12は、対応管理情報11aから、分割領域R3に対応付けられたID「3」を抽出する。制御部12は、書き込みアドレスAD2に対してデータD2aを書き込むための書き込み要求に、ID「3」を付加して記憶装置20に送信する。記憶装置20は、例えば、付加されたID「3」に応じて、データD2aを管理領域22aとは別の管理領域22cに書き込む。
次に、制御部12は、分割領域R1〜R3のそれぞれにおける書き込み頻度を計測する(ステップS2)。そして、制御部12は、書き込み頻度の計測結果に基づいて、対応管理情報11aが示す対応関係を更新する(ステップS3)。
ここで、例えば、分割領域R1,R2,R3の順に書き込み頻度が高いと計測されたとする。すなわち、分割領域R1の書き込み頻度が増加し、分割領域R3の書き込み頻度が低下したとする。この場合、制御部12は、分割領域R1,R2,R3に対してそれぞれID「3」,「2」,「1」が対応付けられるように、対応管理情報11aを更新する。
次に、対応管理情報11aの更新後に、分割領域R1〜R3のいずれかに含まれる書き込みアドレスへの書き込みが要求されると、制御部12は、更新された対応管理情報11aに基づいて、その書き込みアドレスを含む分割領域に対応付けられたIDを特定する。そして、制御部12は、その書き込みアドレスに対する書き込み要求に、特定したIDを付加して記憶装置20に送信する(ステップS4)。
例えば、分割領域R1の書き込みアドレスAD1に対して、データD1aを更新するデータD1bの書き込みが要求されたとする。この場合、制御部12は、対応管理情報11aから、分割領域R1に対応付けられたID「3」を抽出する。制御部12は、書き込みアドレスAD1に対してデータD1bを書き込むための書き込み要求に、ID「3」を付加して記憶装置20に送信する。記憶装置20は、付加されたID「3」に応じて、データD1bを管理領域22cに書き込む。
また、例えば、分割領域R3の書き込みアドレスAD2に対してデータD2aを更新するデータD2bの書き込みが要求されたとする。この場合、制御部12は、対応管理情報11aから、分割領域R3に対応付けられたID「1」を抽出する。制御部12は、書き込みアドレスAD2に対してデータD2bを書き込むための書き込み要求に、ID「1」を付加して記憶装置20に送信する。記憶装置20は、付加されたID「1」に応じて、データD2bを管理領域22aに書き込む。
これにより、分割領域R1,R3において書き込み頻度が変動したにもかかわらず、管理領域22aには書き込み頻度の低い分割領域に属するデータが書き込まれ、管理領域22cには書き込み頻度の高い分割領域に属するデータが書き込まれる。その結果、記憶装置20では、管理領域22cにおける有効データの比率が上昇しにくくなり、しかも、管理領域22aより管理領域22cの方が、ガベージコレクションが実行されやすくなる。したがって、ガベージコレクションを実行したときに、移動する有効データのデータ量が低減され、その結果として、記憶装置20における書き込み回数を低減できる。
〔第2の実施の形態〕
次に、ストレージ制御装置の書き込み制御対象としてSSDが用いられたストレージシステムの例について説明する。
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すストレージシステムは、ストレージ装置50とホスト装置300を含む。ストレージ装置50は、CM(Controller Module)100とDE(Drive Enclosure)200を有する。ホスト装置300は、例えば、ファイバチャネル(FC:Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して、CM100に接続されている。
CM100は、ホスト装置300からの要求に応じて、DE200に搭載された記憶装置へのアクセスを制御するストレージ制御装置である。DE200には、ホスト装置300からのアクセス対象となる記憶装置として、SSD201,201a,201b,・・・が搭載されている。なお、本実施の形態では、DE200には、ホスト装置300からのアクセス対象となる記憶装置として少なくとも1台のSSDが搭載されていればよく、それ以外の記憶装置は、HDDなどの他の種類の不揮発性記憶装置であってもよい。
ホスト装置300は、業務処理などの所定の処理に伴って、CM100を介してDE200内の記憶装置にアクセスする。より具体的には、CM100によって、DE200内の記憶装置を用いた論理ボリュームが提供され、ホスト装置300は、その論理ボリュームに対するアクセスをCM100に要求することで、DE200内の記憶装置にアクセスする。なお、CM100は、複数の論理ボリュームをホスト装置300に提供してもよい。また、CM100には複数のホスト装置300が接続され、1以上の論理ボリュームに対して1以上のホスト装置300からアクセス可能になっていてもよい。
以下、CM100のハードウェア構成例について説明する。
CM100は、CPU(Central Processing Unit)101、RAM102、SSD103、CA(Channel Adapter)104、IOC(Input Output Controller)105およびFPGA(Field Programmable Gate Array)106を有する。
CPU101は、CM100全体を統括的に制御する。CPU101は、例えば、マルチプロセッサであってもよい。RAM102は、CM100の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。SSD103は、CM100の補助記憶装置として使用される。SSD103には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、HDDなどの他の種類の不揮発性記憶装置が用いられてもよい。
CA104は、ホスト装置300と通信するためのインタフェースである。IOC105は、DE200内のSSD201,201a,201b,・・・と通信するためのインタフェースである。本実施の形態では例として、IOC105は、SASインタフェースであるものとする。この場合、例えば、DE200はSASエクスパンダを備えており、IOC105は、SASエクスパンダを介してSSD201,201a,201b,・・・と通信する。
FPGA106は、CPU101からIOC105に対して、DE200内のSSDに対する書き込みコマンドの出力が要求された場合に、その書き込みコマンドをIOC105から取得する。FPGA106は、書き込みデータに付加するストリームIDを決定し、そのストリームIDを付加した書き込みコマンドをIOC105に送信させる。
ストリームIDとは、書き込みコマンドに含まれる書き込みデータの属性を示す識別番号であり、ストレージインテリジェンス(Storage Intelligence)仕様において規定されている。SSDは、例えば、同一のストリームIDが付加された書き込みデータを同一のブロックに書き込むように制御する。
FPGA106は、書き込みデータがどの単位領域に属しているかを判別する。単位領域とは、ホスト装置300が認識し、ホスト装置300からのアクセス対象となっている論理記憶領域の全体を、何らかの条件にしたがって区分した領域である。「書き込みデータが単位領域に属する」とは、その書き込みデータを含む書き込みコマンドが、その単位領域に対するホスト装置300からの書き込み要求に応じて出力されたことを指す。
FPGA106は、単位領域ごとに書き込み頻度を計測する。そして、FPGA106は、書き込みデータが属する単位領域における書き込み頻度に応じたストリームIDを決定し、書き込みデータに付加すべきストリームIDとしてIOC105に通知する。さらに、FPGA106は、単位領域ごとの書き込み頻度の変化に応じて、同じ単位領域に属する書き込みデータに付加するストリームIDを動的に変化させる。
なお、FPGA106は、プロセッサ106aとメモリ106bを有する。プロセッサ106aは、例えば、CPUやDSP(Digital Signal Processor)など、演算回路がユニット化された回路として実現されてもよいし、多数の論理回路の集合体であってもよい。また、プロセッサ106aは、ユニット化された回路と複数の論理回路の両方を含んでいてもよい。
メモリ106bは、例えば、DRAM(Dynamic RAM)やSRAM(Static RAM)など、記憶素子がユニット化されたメモリ回路として実現されてもよいし、フリップフロップなどの記憶素子の集合体であってもよい。また、メモリ106bは、ユニット化されたメモリ回路と複数の記憶素子の両方を含んでいてもよい。また、メモリ106bの少なくとも一部は、FPGA106の外部に接続されていてもよい。
ここで、図3〜図5を用いて、SSDにおける書き込み制御の比較例について説明する。
まず、図3は、ストリームIDを利用しない場合のSSDにおける書き込み制御の比較例を示す図である。図3に示すSSD400は、ブロック401〜406を有する。ブロック401〜406は、書き込まれたデータが一度に消去される最小の領域である。
このようなSSD400に対して、データA1−1,B1−1,C1−1,B1−2,C2−1,C2−2,B1−3,C2−3の順に書き込みが要求されたものとする。ここで、データB1−2,B1−3は、それぞれデータB1−1,B1−2を更新するための更新データである。また、データC2−2,C2−3は、それぞれデータC2−1,C2−2を更新するための更新データである。換言すると、データB1−1,B1−2,B1−3は、SSD400上の同じ論理アドレスに対して書き込みが要求されたデータである。また、データC2−1,C2−2,C2−3も、SSD400上の同じ論理アドレスに対して書き込みが要求されたデータである。
SSD400が備える図示しないコントローラは、書き込みが要求されたデータを空いているブロックに順番に書き込んでいく。例えば、図3の上側に示すように、コントローラは、データA1−1,B1−1,C1−1,B1−2をブロック401に書き込み、データC2−1,C2−2,B1−3,C2−3をブロック402に書き込む。SSDの物理記憶領域ではデータの上書きが不可能なので、更新データは更新前のデータとは別の領域に書き込まれ、更新前のデータは無効データとして物理記憶領域上に残る。
また、コントローラは、例えば、SSD400の物理記憶領域の残容量が所定量を下回ると、空き領域を拡大するために有効データだけを別のブロックに寄せ集めるガベージコレクションを実行する。例えば、図3の下側に示すように、コントローラは、空き領域がなくなったブロック401,402についてのガベージコレクションを実行する。
具体的には、コントローラは、ブロック401に書き込まれたデータのうち、有効データであるデータA1−1,C1−1,B1−2だけを別のブロック404に移動させる。また、コントローラは、ブロック402に書き込まれたデータのうち、有効データであるデータB1−3,C2−3だけを別のブロック405に移動させる。これにより、ブロック401,402に含まれるデータがすべて無効データとなるので、コントローラは、ブロック401,402をフラッシュし、新たなデータを書き込み可能な状態にする。
このようなガベージコレクションの実行により、無効データが消去される分だけSSD400の残容量を増やすことができる。しかしながら、上記方法では、同じブロックに更新頻度が高いデータと更新されていないデータとが混在する場合、後者のデータも他のブロックに移動する。データが更新されていない場合には、そのデータに対応する無効データが存在しないので、ガベージコレクションによってそのデータが他のブロックに移動しても空き領域は拡大しない。そのため、本来は更新されていないデータを移動させる必要はない。
図3の例では、ブロック401に書き込まれたデータB1−1,B1−2は、1回更新されているので、ガベージコレクションにより無効なデータB1−1を削除し、有効なデータB1−2だけを残すことができる。しかし、同じブロック401に書き込まれたデータA−1は、更新されていないので、対応する無効データが存在しない。このため、データA−1は、空き領域の拡大に寄与しないにもかかわらず、ブロック404に移動することになる。
このように、本来は移動が不要なデータが他のブロックに移動して書き込まれることで、書き込みデータ量が増加し、SSDの寿命を短縮させてしまう。また、ガベージコレクションにおける書き込みデータ量の増加により、外部からのSSDに対するアクセス速度が低下してしまう。
図4は、ストリームIDを利用した場合のSSDにおける書き込み制御の比較例を示す図である。上記の問題点に対して、データの更新頻度に応じたストリームIDを書き込みデータに付与する方法が考えられる。例えば、データA1−1は最も更新頻度の低い単位領域に属すると判定されて、データA1−1に対してあるストリームIDが付加される。また、データB1−1,B1−2,B1−3は更新頻度が中程度の単位領域に属すると判定されて、データB1−1,B1−2,B1−3に対してデータA1−1とは別のストリームIDが付加される。さらに、データC1−1,C2−1,C2−2,C2−3は更新頻度が最も高い単位領域に属すると判定されて、データC1−1,C2−1,C2−2,C2−3に対してデータA1−1,B1−1,B1−2,B1−3とはさらに別のストリームIDが付加される。
このようなストリームIDが付加された状態で、図3の場合と同様にSSD410に対して、データA1−1,B1−1,C1−1,B1−2,C2−1,C2−2,B1−3,C2−3の順に書き込みが要求されたものとする。なお、SSD410は、ブロック411〜416を有するものとする。この場合、SSD410に搭載された図示しないコントローラは、書き込みが要求されたデータを、ストリームIDごとに別のブロックに書き込む。例えば図4の上側に示すように、コントローラは、データA1−1をブロック411に書き込み、データB1−1,B1−2,B1−3をブロック412に書き込み、データC1−1,C2−1,C2−2,C2−3をブロック413に書き込む。
また、コントローラは、例えば、SSD410の物理記憶領域の残容量が所定量を下回ると、図4の下側に示すように、空き領域の少ないブロック413についてのガベージコレクションを実行する。すなわち、コントローラは、ブロック413に書き込まれたデータのうち、有効データであるデータC1−1,C2−3だけを別のブロック416に移動させる。そして、コントローラは、ブロック413をフラッシュする。
このような処理により、更新頻度の高い単位領域に属するデータが格納されたブロックだけが、ガベージコレクションの実行対象となり、更新頻度が低い単位領域に属するデータA1−1の移動が行われなくなる。したがって、移動の不要なデータが他のブロックに書き込まれる可能性が低くなり、ガベージコレクションの実行時における書き込みデータ量を減少させることができる。
ところで、ストリームIDを利用する方法では、付与可能なストリームIDの数が少ないことから、1つのストリームIDを複数の単位領域に共通に割り当てなければならない場合がある。例えば、単位領域として論理ボリュームを適用した場合、ストレージ装置には多数の論理ボリュームが設定され得ることから、1つのストリームIDを複数の論理ボリュームに共通に割り当てるというケースが考えられる。
図5は、1つのストリームIDを複数の単位領域に共通に割り当てた場合のSSDにおける書き込み制御の例を示す図である。図5に示すSSD420は、ブロック421〜429を有するものとする。また、単位領域AにあるストリームIDが、単位領域B,Cに別のストリームIDが、単位領域D,Eにさらに別のストリームIDが、事前に割り当てられているものとする。この例では、単位領域Aより単位領域B,Cの方が更新頻度が高いと見込まれ、単位領域B,Cより単位領域D,Eの方が更新頻度が高いと見込まれているものとする。
このような状態で、単位領域Aに属するデータA1−1、単位領域Bに属するデータB1−1,B2−1、単位領域Cに属するデータC1−1、単位領域Dに属するデータD1−1,D1−2,D1−3、単位領域Eに属するデータE1−1,E1−2,E1−3が、SSD420に書き込まれたものとする。SSD420は、各データに付加されたストリームIDに基づいて、各データの書き込み先ブロックを振り分ける。例えば、図5の上側に示すように、データA1−1はブロック421に書き込まれ、データB1−1,B2−1,C1−1はブロック422に書き込まれ、データD1−1,D1−2,D1−3,E1−1,E1−2,E1−3はブロック423に書き込まれる。
このような書き込みにより、ブロック423の空き領域がなくなり、ブロック423についてガベージコレクションが実行される。これにより、データD1−3,E1−3がブロック426に移動され、ブロック423がフラッシュされる。図5の上側は、このときの状態を示している。
ここまでの状態では、同じストリームIDが割り当てられた単位領域D,Eの更新頻度は、ほぼ同じとなっている。しかし、あらかじめ1つのストリームIDが割り当てられた複数の単位領域間でも、更新頻度が時間経過に伴って変化する場合があり得る。例えば、図5の上側の状態から、さらに単位領域Eに属するデータE2−1,E1−4,E2−2,E1−5がSSD420に書き込まれたものとする。しかし、単位領域Dに対する書き込みは発生せず、単位領域Eと比較して単位領域Dでの更新頻度が低下している。
新たにSSD420に書き込まれた上記データは、ブロック426に書き込まれる。その結果、ブロック426の空き領域がなくなり、ブロック426についてのガベージコレクションが実行される。例えば、図5の下側に示すように、データD1−3,E1−5,E2−2がブロック429に移動され、ブロック426がフラッシュされる。このガベージコレクションでは、更新されていないデータD1−3が移動しており、無駄なデータ移動が発生している。
このように、各単位領域に対してあらかじめストリームIDを固定的に付加する方法では、更新頻度が当初の見込みから変化した単位領域が現れた場合、書き込みデータ量の低減効果を十分に得ることができないという問題がある。そこで、本実施の形態では、CM100のFPGA106により、単位領域ごとに更新頻度が計測され、更新頻度の時間的変化に応じて単位領域に割り当てるストリームIDが動的に変更される。これにより、SSDの内部におけるガベージコレクションによる移動対象データを最適化し、移動による書き込みデータ量を低減する。
なお、図5では、1つのストリームIDが複数の単位領域に割り当てられるケースについて説明した。しかし、1つのストリームIDが1つの単位領域に割り当てられるケースでも、同様に、単位領域における更新頻度が時間経過に伴って変化することで、ガベージコレクションによるデータ移動量の低減効果が十分得られなくなる。例えば、ある単位領域に属するデータがあるブロックに書き込まれる状況において、当初はその単位領域の更新頻度が低かったものの、その後に更新頻度が上昇した場合、そのブロックには更新頻度が高いデータと低いデータとが混在することになる。このような状況でそのブロックについてガベージコレクションが実行されると、多くの有効データが別のブロックに移動する可能性があり、その場合、書き込みデータ量の低減効果が十分得られなくなる。
本実施の形態では、更新頻度の時間的変化に応じて単位領域に割り当てるストリームIDが動的に変更されることで、更新頻度の高いデータを同じブロックに集中させることができる。このため、1つのストリームIDが1つの単位領域に割り当てられる場合であっても、ガベージコレクションによるデータ移動量の低減効果を得ることができる。
以下、本実施の形態に係るCM100の処理の詳細について説明する。以下の説明では例として、単位領域は、CM100に設定される論理ボリュームであるものとする。
図6は、CMが備える処理機能の構成例を示すブロック図である。CM100は、ホストIO制御部101aを有する。ホストIO制御部101aの処理は、CPU101が所定のアプリケーションプログラムを実行することで実現される。
ホストIO制御部101aは、ホスト装置300から論理ボリュームに対するアクセス要求を受け付ける。このとき、ホストIO制御部101aは、アクセス先アドレスとして、論理ボリュームを識別するLUN(Logical Unit Number)と、論理ボリューム上のアドレスを示すLBA(Logical Block Address)とを受け付ける。
各論理ボリュームのアドレス空間は、DE200内のSSD201,201a,201b,・・・の論理アドレス空間に対応付けられている。ホストIO制御部101aは、アクセス先を示すLUNおよびLBAを、対応するSSDを識別するディスクIDとそのSSD上の論理アドレスとに変換する。ホストIO制御部101aは、アクセス先としてディスクIDとSSD上の論理アドレスとが指定されたコマンドを発行するように、IOC105に要求する。ここで、ホストIO制御部101aは、書き込みコマンドの発行を要求する場合には、変換前のLUNおよびLBAもIOC105に通知する。
IOC105は、ホストIO制御部101aから読み出しコマンドの発行を要求された場合、読み出しアドレスとしてディスクIDとSSD上の論理アドレスとを指定した読み出しコマンドをDE200内の読み出し元SSDに送信する。IOC105は、読み出しコマンドに応じて読み出し元SSDから返信された読み出しデータを受信して、ホストIO制御部101aに転送する。
一方、IOC105は、ホストIO制御部101aから書き込みコマンドの発行を要求された場合、生成した書き込みコマンドをまずFPGA106に受け渡す。このとき、IOC105は、ホストIO制御部101aから通知されたLUNおよびLBAを、書き込みコマンドに付加してFPGA106に受け渡す。FPGA106からは、ストリームIDが付加された書き込みコマンドが受け渡され、IOC105は、その書き込みコマンドをDE200内の書き込み先SSDに送信する。
次に、FPGA106が備える処理機能について説明する。
FPGA106は、記憶部110、コマンド受信処理部121、コマンド送信処理部122、ストリームID設定部123およびガベージコレクション(GC)制御部124を有する。
記憶部110は、FPGA106が備えるメモリ106bの記憶領域によって実現される。記憶部110には、ストリームID管理テーブル111、書き込み量管理テーブル112、SSD書き込み量管理テーブル113および単位領域設定テーブル114が記憶される。
図7は、ストリームID管理テーブル、書き込み量管理テーブルおよびSSD書き込み量管理テーブルの構成例を示す図である。
ストリームID管理テーブル111は、DE200に搭載されたSSD201,201a,201b,・・・のそれぞれについて個別に作成され、記憶される。ストリームID管理テーブル111は、主に、SSDに対する単位領域ごとの書き込み回数や書き込みデータ量、および、各単位領域に対して設定されたストリームIDを保持するためのテーブルである。ストリームID管理テーブル111は、単位領域ID、書き込みデータ量、書き込み回数、ストリームID、GC実行フラグ、IDステータスおよび書き込み管理ビットマップの各項目を有する。
単位領域IDの項目には、単位領域を識別するための識別番号が登録される。書き込みデータ量の項目には、単位領域に対して書き込まれた書き込みデータのデータ量が登録される。書き込み回数の項目には、単位領域に割り当てられるストリームIDの更新処理後に、その単位領域に対してデータの書き込みが行われた回数が登録される。
ストリームIDの項目には、対応する単位領域に割り当てられたストリームIDが登録される。GC実行フラグの項目には、FPGA106からの要求により、対応する単位領域についてのガベージコレクションが実行済みかを示すフラグ情報が登録される。
IDステータスの項目には、同じレコードに登録されたストリームIDのステータスを示す情報が登録される。IDステータスの項目には、「現行ID」、「旧ID」、「無効ID」のいずれかが登録される。「現行ID」は、登録されたストリームIDが、直近の更新処理によって決定されたものであることを示す。「旧ID」は、登録されたストリームIDが、直近の更新処理の実行前に決定されたものであることを示す。「無効ID」は、登録されたストリームIDが付加されたSSD上のデータが、すべて無効化されていることを示す。なお、後述するように、ストリームID管理テーブル111には、同じストリームIDが登録されているものの、互いに異なるIDステータスが登録されている複数のレコードが登録される場合がある。
書き込み管理ビットマップの項目には、単位領域上の各LBAに対応するビットを有するビットマップデータが登録される。各ビット値の初期値は「0」とされ、単位領域に対する書き込みが要求されると、その書き込み先のLBAに対応するビット値が「1」に更新される。これにより、ビットマップデータは、単位領域上のLBAのうち1回以上データが書き込まれたLBAを管理する。
なお、後述するように、ストリームID管理テーブル111では、ストリームIDの更新処理が実行されるたびに新たなレコードが追加される。このため、書き込み管理ビットマップの項目に登録されるビットマップデータは、ストリームIDの更新処理後にデータが書き込まれたLBAを管理する。また、このビットマップデータは、ストリームIDの更新処理後に、単位領域ごとに書き込まれた有効データ量を計算するために用いられる。
書き込み量管理テーブル112は、DE200に搭載されたSSD201,201a,201b,・・・のそれぞれについて個別に作成され、記憶される。書き込み量管理テーブル112は、ストリームID、書き込みデータ量の各項目を有する。ストリームIDの項目には、現在設定されているストリームIDが登録される。書き込みデータ量の項目には、ストリームIDの更新処理が実行された後に、対応するストリームIDが割り当てられているすべての単位領域に書き込まれた書き込みデータの累積データ量が登録される。
SSD書き込み量管理テーブル113は、SSD IDおよび書き込みデータ増加量の各項目を有する。SSD IDの項目には、DE200に搭載されたSSD201,201a,201b,・・・のそれぞれを識別するための識別番号が登録される。書き込みデータ増加量の項目には、対応するSSDに書き込まれた書き込みデータの累積データ量が登録される。書き込みデータ増加量は、一定量に達すると「0」にリセットされる。このため、書き込みデータ増加量は、リセットタイミング後にSSDに書き込まれたデータの増加量を示す。
以下、図6に戻って説明を続ける。
単位領域設定テーブル114は、単位領域ごとに作成されて記憶される。単位領域設定テーブル114は、単位領域、すなわち論理ボリューム上のLBAと、SSD上の論理アドレスとの対応関係を保持する。単位領域設定テーブル114は、例えば、新たな論理ボリュームがCM100に設定されるたびに、CPU101の処理によってFPGA106の記憶部110に登録される。そして、単位領域設定テーブル114は、FPGA106が単位領域に書き込まれたデータについてのガベージコレクションの実行をSSDに要求する際に、単位領域上のLBAをSSD上の論理アドレスに変換するために用いられる。
なお、FPGA106は、ストリームID管理テーブル111を用いて、書き込みデータの累積データ量や書き込み回数、書き込まれた有効データ量を単位領域ごとに管理する。ここで、前述のように、単位領域に対応する論理ボリュームの論理アドレス空間に対して、SSDの論理アドレス空間が割り当てられている。このため、単位領域ごとに上記各情報を管理することは、単位領域に割り当てられているSSDの論理アドレス領域ごとに上記各情報を管理することと実質的に等価である。
このため、FPGA106は、例えば、単位領域ごとの上記情報の管理を、対応するSSDの論理アドレス領域ごとに管理してもよい。この場合、例えば、ホストIO制御部101aからIOC105を介してFPGA106に対して、LUNおよびLBAが通知されなくてもよい。その代わり、FPGA106は、例えば、単位領域設定テーブル114を参照することで、書き込みコマンドに含まれるSSDの論理アドレスがどの単位領域に属するかを判別できる。また、ストリームID管理テーブル111の書き込み管理ビットマップに含まれる各ビットは、単位領域(論理ボリューム)の各LBAではなく、SSDの各論理アドレスに対応付けられていてもよい。
コマンド受信処理部121、コマンド送信処理部122、ストリームID設定部123およびガベージコレクション(GC)制御部124の処理は、FPGA106が備えるプロセッサ106aによって実現される。
コマンド受信処理部121は、IOC105がホストIO制御部101aから書き込みコマンドの送信を要求された場合に、書き込みコマンドを、ホストIO制御部101aから通知されたLUNおよびLBAとともに取得する。コマンド受信処理部121は、LUNから書き込みデータが属する論理領域を判別し、ストリームID管理テーブル111に登録された該当論理領域に対応する書き込みデータ量、書き込み回数および書き込み管理ビットマップを更新する。また、コマンド受信処理部121は、書き込みデータのサイズに基づいて、書き込み量管理テーブル112およびSSD書き込み量管理テーブル113を更新する。
コマンド送信処理部122は、コマンド受信処理部121によって判別された論理領域に割り当てられたストリームIDを、ストリームID管理テーブル111から取得する。コマンド送信処理部122は、取得したストリームIDをコマンド受信処理部121が取得した書き込みコマンドに付加してIOC105に受け渡し、その書き込みコマンドの送信を要求する。
ストリームID設定部123は、SSD書き込み量管理テーブル113に基づき、あるSSDでの書き込みデータ増加量が一定量に達するたびに、そのSSDについて、各単位領域に割り当てるストリームIDを更新する。その際、ストリームID設定部123は、ストリームID管理テーブル111を参照し、各単位領域における書き込み回数に基づいて、各単位領域に割り当てるストリームIDを更新する。これにより、各単位領域に対するストリームIDの割り当てが適正化される。
この更新処理によって、ストリームID管理テーブル111において単位領域に対応付けられたストリームIDが更新される。その後、単位領域に対するデータの書き込みが要求され、コマンド送信処理部122の制御により、更新後のストリームIDを付加した書き込みコマンドがIOC105から送信されることで、SSDにおける書き込み先ブロックの振り分けが適正化されていく。その結果、SSD自身の判断によるガベージコレクション対象のデータが最適化されていき、ガベージコレクションに伴う無駄なデータの書き込み量が削減されていく。
GC制御部124は、あるSSDにおける物理記憶領域の空き領域サイズが所定サイズを下回った場合に、そのSSDに書き込まれているデータのうち、所定条件を満たすストリームIDが付加されたデータについて、SSDにガベージコレクションを実行させる。具体的には、GC制御部124は、書き込み量管理テーブル112を参照し、書き込みデータ量が所定量を超えたストリームIDが存在する場合、そのストリームIDが付加されたデータについてガベージコレクションを実行させる。
次に、FPGA106の処理についてフローチャートを用いて説明する。以下の説明では、例として、SSD201に対するデータの書き込み制御について説明する。また、SSD201のユーザ容量(論理記憶領域の容量)を、400GBとする。さらに、ストリームIDとして「1」〜「3」の3段階の値が設定され、「1」、「2」、「3」の順に書き込み回数が多い単位領域に割り当てられるものとする。
まず、図8、図9は、データの書き込みが要求された場合のFPGAの処理手順の例を示すフローチャートである。
[ステップS11]ホストIO制御部101aは、ホスト装置300から論理ボリュームに対するデータの書き込み要求を受信する。ホストIO制御部101aは、受信した書き込み要求に応じて、IOC105に対してSSD201に対する書き込みコマンドの発行を要求する。このとき、ホストIO制御部101aは、IOC105に対して、ホスト装置300から書き込み先として指定されたLUNおよびLBAも通知する。IOC105は、書き込み先のSSDの論理アドレス、書き込みデータのデータ長を含む書き込みコマンドを生成し、通知されたLUNおよびLBAとともにFPGA106に受け渡す。コマンド受信処理部121は、書き込みコマンドをLUNおよびLBAとともに受信する。
[ステップS12]コマンド受信処理部121は、受信した情報に基づいて、書き込み先の単位領域を特定する。具体的には、コマンド受信処理部121は、受信したLUNが示す論理ボリュームを特定する。
[ステップS13]コマンド受信処理部121は、SSD201に対応するストリームID管理テーブル111を参照し、処理対象のレコードを特定する。具体的には、コマンド受信処理部121は、特定された単位領域を示す単位領域IDが登録され、かつ、IDステータスが「現行ID」であるレコードを、処理対象として特定する。
ただし、この時点で、特定された単位領域に対する書き込みが初めて要求された場合には、ストリームID管理テーブル111にはその単位領域を示す単位領域IDが登録されているレコードが存在しない。この場合、コマンド受信処理部121は、ストリームID管理テーブル111に新たなレコードを追加する。ストリームID設定部123は、追加したレコードの単位領域IDの項目に、特定された単位領域を示す値を設定し、書き込みデータ量および書き込み回数の項目に「0」を設定する。また、ストリームID設定部123は、GC実行フラグの項目に「未実行」を設定し、IDステータスの項目に「現行ID」を設定、書き込み管理ビットマップの項目にビット値がすべて「0」のビットマップデータを設定する。
また、コマンド受信処理部121は、ストリームIDの項目に、あらかじめ決められた値を設定する。本実施の形態では、通常設定されるストリームID「1」〜「3」とは別の初期値「0」が設定されるものとする。
さらに、コマンド受信処理部121は、SSD201に対応する書き込み量管理テーブル112にストリームID「0」が登録されたレコードが存在しない場合、レコードを1つ追加し、そのレコードにストリームID「0」と書き込みデータ量「0」を登録する。
なお、これ以後の処理において、FPGA106によって参照されるストリームID管理テーブル111は、SSD201に対応するテーブルである。
[ステップS14]コマンド受信処理部121は、処理対象のレコードに登録された書き込み回数をカウントアップする。
[ステップS15]コマンド受信処理部121は、処理対象のレコードに登録された書き込みデータ量に、書き込みコマンドに含まれる書き込みデータのデータ長を加算する。
[ステップS16]コマンド受信処理部121は、処理対象のレコードに登録されたGC実行フラグが、ガベージコレクションが実行されたことを示す「実行済み」である場合、GC実行フラグを、実行されていないことを示す「未実行」に更新する。
[ステップS17]コマンド受信処理部121は、処理対象のレコードに登録された書き込み管理ビットマップのビットのうち、ステップS11で受信したLBAに対応するビットのビット値が「0」である場合には、「1」に更新する。
[ステップS18]コマンド受信処理部121は、処理対象のレコードからストリームIDを取得する。コマンド受信処理部121は、SSD201に対応する書き込み量管理テーブル112を参照し、取得したストリームIDに対応するレコードに登録された書き込みデータ量に、書き込みコマンドに含まれる書き込みデータのデータ長を加算する。
[ステップS19]コマンド送信処理部122は、ステップS11で受信された書き込みコマンドに、ステップS18で取得されたストリームIDを付加してIOC105に受け渡し、書き込みコマンドの送信を要求する。IOC105は、この要求に応じて、ストリームIDが付加された書き込みコマンドをSSD201に送信する。
[ステップS20]コマンド受信処理部121は、SSD書き込み量管理テーブル113を参照し、SSD201に対応するレコードに登録された書き込みデータ増加量に、書き込みコマンドに含まれる書き込みデータのデータ長を加算する。
以下、図9を用いて説明を続ける。
[ステップS21]コマンド受信処理部121は、ステップS20で更新した、SSD201における書き込みデータ増加量が、所定のデータ増加量基準値を超えたか否かを判定する。SSD201のユーザ容量が400GBの場合、データ増加量基準値は、例えば100GBに設定される。コマンド受信処理部121は、書き込みデータ量がデータ増加量基準値を超えた場合、ステップS22の処理を実行し、書き込みデータ量がデータ増加量基準値以下の場合、処理を終了する。
[ステップS22]コマンド受信処理部121は、ステップS20で更新した書き込みデータ増加量を「0」にリセットする。これにより、SSD201に対する書き込みデータの累積量がデータ増加量基準値の分だけ増加するたびに、次のステップS23,S24の処理が実行されることになる。
[ステップS23]ストリームID設定部123は、各単位領域に割り当てるストリームIDを必要に応じて更新するためのストリームID更新処理を実行する。この処理の詳細については、図10において説明する。
[ステップS24]GC制御部124は、必要に応じてSSD201にガベージコレクションを実行させるガベージコレクション制御処理を実行する。この処理の詳細については、図11、図12において説明する。
図10は、ストリームID更新処理手順の例を示すフローチャートである。この図10の処理は、図9のステップS23の処理に対応する。
[ステップS31]ストリームID設定部123は、ストリームID管理テーブル111のレコードのうち、IDステータスが「現行ID」であるレコードを特定する。ストリームID設定部123は、特定された各レコードに登録された、単位領域ごとの書き込み回数に基づいて、各単位領域に割り当てるべきストリームIDを更新する。
例えば、ストリームID設定部123は、レコードに登録された書き込み回数が多い順に単位領域をソートする。ストリームID設定部123は、1つのストリームIDに対して均等な数の単位領域が割り当てられるように、ソートされた先頭の単位領域から順にストリームIDを割り当てる。
具体的には、例えば、ストリームIDとして「1」〜「3」の3段階の値が設定され、「1」、「2」、「3」の順に書き込み回数が多い単位領域に割り当てられるものとする。また、6つの単位領域a〜fが存在するものとする。この場合、1つのストリームIDに2つの単位領域が割り当てられる。ストリームID設定部123は、単位領域a〜fを書き込み回数が多い順にソートする。ここでは例として、先頭から単位領域a,b,c,d,e,fという順にソートされたとする。ストリームID設定部123は、単位領域a,bにストリームID「1」を割り当て、単位領域c,dにストリームID「2」を割り当て、単位領域e,fにストリームID「3」を割り当てる。
なお、レコードに登録された書き込み回数は、前回ストリームIDが更新されてからの各単位領域に対する書き込み回数を示す。本実施の形態では、これらの値は、各単位領域におけるデータの更新頻度を近似する値として用いられる。
[ステップS32]ストリームID設定部123は、ステップS33〜S35の処理をすべての単位領域について実行したか否かを判定する。ストリームID設定部123は、未実行の単位領域がある場合、ステップS33の処理を実行する。一方、ストリームID設定部123は、すべての単位領域について処理済みの場合、処理を終了する。この場合、次の図11に示すガベージコレクション制御処理が実行される。
[ステップS33]ストリームID設定部123は、処理を未実行の単位領域を1つ選択する。
[ステップS34]ストリームID設定部123は、ストリームID管理テーブル111に新たなレコードを追加する。ストリームID設定部123は、追加したレコードの単位領域IDの項目に、ステップS33で選択された単位領域を示す値を設定し、ストリームIDの項目に、この単位領域についてステップS31で更新された更新後のストリームIDを設定する。さらに、ストリームID設定部123は、書き込みデータ量および書き込み回数の項目に「0」を設定し、GC実行フラグの項目に「未実行」を設定し、IDステータスの項目に「現行ID」を設定する。また、ストリームID設定部123は、書き込み管理ビットマップの項目に、ビット値がすべて「0」であるビットマップデータを設定する。
このステップS34の処理により、その後に単位領域に対する書き込みが要求された場合に、その単位領域に対応する更新後のストリームIDが書き込みコマンドに付加されるようになる。
[ステップS35]ストリームID設定部123は、更新前のストリームIDが設定されたレコード、すなわち、ステップS31で特定されたレコードのIDステータスの項目に「旧ID」を設定する。この後、ストリームID設定部123は、ステップS32の処理を再度実行する。
以上の図10の処理は、SSD201に対する書き込みデータの累積量がデータ増加量基準値の分だけ増加するたびに実行される。そして、その都度、前回の更新後から現在までの単位領域ごとの書き込み回数に基づいて、各単位領域に割り当てるストリームIDが見直される。
図10の処理が実行された段階では、更新後のストリームIDがストリームID管理テーブル111に登録されるだけで、SSD201に記憶されているデータには更新後のストリームIDは反映されない。そして、その後に単位領域に対する書き込みが要求されて、SSD201に書き込みコマンドが送信される際に、更新後のストリームIDが書き込みコマンドに付加される(図8のステップS19)。このように、ストリームIDの更新後に単位領域に対するデータの書き込みが続けられるのにしたがって、SSD201に記憶されるデータに対して更新後のストリームIDが反映されていく。これにより、単位領域ごとの書き込み頻度の変動に応じて、SSD201におけるデータの書き込み先ブロックが適正化されていく。
図11、図12は、ガベージコレクション制御処理手順の例を示すフローチャートである。これらの図11、図12の処理は、図9のステップS24の処理に対応する。
[ステップS41]GC制御部124は、SSD201の物理記憶領域における空き領域サイズを取得する。具体的には、GC制御部124は、この空き領域サイズの送信を要求するための制御コマンドを、IOC105を介してSSD201に送信し、SSD201から返信された空き領域サイズを受信する。
[ステップS42]GC制御部124は、取得した空き領域サイズが、所定の基準空き領域サイズより小さいか否かを判定する。GC制御部124は、空き領域サイズが基準空き領域サイズより小さい場合、図12のステップS51の処理を実行し、空き領域サイズが基準空き領域サイズ以上である場合、ステップS43の処理を実行する。
このステップS42は、図9のステップS21で、SSD201に対する書き込みデータ増加量がデータ増加量基準値(例えば100GB)分だけ増加した場合に実行される。そのため、基準空き領域サイズは、少なくとも、データ増加量基準値より大きい必要がある。例えば、基準空き領域サイズは、データ増加量基準値より大きく、その2倍より小さい値に設定される。本実施の形態では、基準空き領域サイズを150GBとする。
ここで、SSD201のコントローラは、SSD201の物理記憶領域の空き領域サイズが所定閾値以下となった場合に、ガベージコレクションを実行する。一方、基準空き領域サイズは、FPGA106からの要求によってSSD201にガベージコレクションを実行させるかを判定するために用いられるため、SSD201に設定されているこの閾値より大きい値に設定されることが望ましい。これにより、FPGA106側から、ガベージコレクションの実行が望ましいと推定されるブロックについて、ガベージコレクションを積極的に実行させることができる。
さらに、基準空き領域サイズは、SSD201の物理記憶領域のサイズに対する論理記憶領域のサイズの割合に基づいて設定されてもよい。
[ステップS43]ストリームID設定部123は、未更新データのストリームID更新処理を実行する。この処理の詳細については、図13において説明する。
以下、図12を用いて説明を続ける。
[ステップS51]GC制御部124は、ステップS52以降の処理をすべてのストリームID「0」〜「3」について実行したか否かを判定する。GC制御部124は、未実行のストリームIDがある場合、ステップS52の処理を実行し、すべてのストリームIDについて処理済みの場合、図11のステップS43の処理を実行する。
[ステップS52]GC制御部124は、処理を未実行のストリームIDを1つ選択する。
[ステップS53]GC制御部124は、SSD201に対応する書き込み量管理テーブル112から、ステップS52で選択したストリームIDについての書き込みデータ量を取得する。
[ステップS54]GC制御部124は、ステップS53で取得した書き込みデータ量が、所定の基準データ量より大きいか否かを判定する。GC制御部124は、書き込みデータ量が基準データ量より大きい場合、ステップS55の処理を実行し、書き込みデータ量が基準データ量以下の場合、ステップS51の処理を再度実行する。なお、基準データ量は、例えば、100GBに設定される。この基準データ量は、SSD201のユーザ容量は、付加されるストリームIDの段階数に応じて決定されればよい。
[ステップS55]GC制御部124は、ステップS52で選択したストリームIDが付加されたデータについてガベージコレクションの実行を要求する制御コマンドを、IOC105を介してSSD201に送信する。
SSD201は、書き込まれたデータが、付加されたストリームIDごとに異なるブロックに書き込まれるように制御している。ステップS54で「Yes」と判定された場合、ステップS52で選択されたストリームIDが付加されたデータが、有効データおよび無効データを含めてSSD201に大量に書き込まれている。そして、SSD201上のいずれかのブロックが、ステップS52で選択されたストリームIDが付加されたデータによって満杯に近い状態になっている可能性が高い。
これに対して、ステップS55で制御コマンドが送信されると、SSD201は、受信した制御コマンドに応じて、指定されたストリームIDが付加されたデータが書き込まれているブロックについてガベージコレクションを実行する。これにより、指定されたストリームIDが付加されたデータのうち有効データのみが別のブロックに寄せ集められて、SSD201上の空き領域が増加する。
[ステップS56]GC制御部124は、ストリームID管理テーブル111のレコードのうち、ステップS52で選択されたストリームIDが登録されたレコードを特定する。ここでは、IDステータスが「現行ID」であるレコードと「旧ID」であるレコードのどちらも特定される。GC制御部124は、特定した各レコードにおけるGC実行フラグを「実行済み」に更新する。
[ステップS57]GC制御部124は、ステップS52で選択したストリームIDが割り当てられた単位領域のそれぞれについて、SSD201に書き込まれた有効データのデータ量を取得する。具体的には、GC制御部124は、ステップS56で特定した各レコードについて、次のような処理を実行する。
GC制御部124は、書き込み管理ビットマップから、書き込み済みを示すビット値「1」が設定されたビットを特定する。GC制御部124は、GC制御部124は、単位領域設定テーブル114を参照して、特定した各ビットに対応するSSD201上の論理アドレスを特定する。GC制御部124は、特定した論理アドレスとステップS52で選択したストリームIDとをそれぞれ指定した制御コマンドを、IOC105を介してSSD201に送信する。この制御コマンドは、該当するストリームIDが付加された状態で該当する論理アドレスに対して書き込みが要求されたデータが、有効データとしてSSD201に残っているか否かを問い合わせるためのものである。
GC制御部124は、制御コマンドに対する応答から、各レコードに登録された単位領域IDとストリームIDとに対応する有効データのデータ量を取得する。
なお、このステップS57の処理では、IDステータスが「旧ID」となっているレコードについては、ガベージコレクションの実行により有効データのデータ量が「0」になることがあり得る。これは、ガベージコレクションの実行により、ある単位領域に書き込まれたデータのうち、更新前のストリームIDが付加されていたデータがすべて無効化され、SSD201から消去されたことを意味する。
[ステップS58]GC制御部124は、ステップS56で特定した各レコードについて、登録されている書き込みデータ量を、ステップS57で取得された有効データのデータ量で更新する。
[ステップS59]GC制御部124は、ステップS56で特定した各レコードについて、GC実行フラグを「実行済み」に更新する。
[ステップS60]GC制御部124は、ステップS56で特定したレコードのうち、IDステータスが「旧ID」または「無効ID」であり、かつ、書き込みデータ量が「0」のレコードを特定する。また、GC制御部124は、特定したレコードと同じ単位領域IDが登録され、かつ、IDステータスが「現行ID」であるレコードを特定する。GC制御部124は、前者のレコードに登録された書き込み管理ビットマップと、後者のレコードに登録された書き込み管理ビットマップとを、それらの論理和をとることでマージする。GC制御部124は、マージされたビットマップによって、後者のレコードに登録されている書き込み管理ビットマップを更新する。そして、GC制御部124は、前者のレコードをストリームID管理テーブル111から削除する。
[ステップS61]GC制御部124は、ステップS52で選択したストリームIDに対応するSSD201での書き込みデータ量を算出する。この書き込みデータ量は、詳しくは、ステップS52で選択したストリームIDが付与されたSSD201上のデータのうち、有効データのデータ総量を示す。GC制御部124は、具体的には、ステップS58で更新された、各単位領域の書き込みデータ量を取得し、これらの書き込みデータ量を合算することで、ストリームIDに対応するSSD201での書き込みデータ量を算出する。GC制御部124は、SSD201に対応する書き込み量管理テーブル112を参照し、ステップS52で選択したストリームIDに対応するレコードに登録されている書き込みデータ量を、算出された書き込みデータ量で更新する。
この後、GC制御部124は、ステップS51の処理を再度実行する。
以上の図11、図12の処理によれば、SSD201側の判断に基づくガベージコレクションだけでなく、FPGA106側の判断に基づくガベージコレクションを積極的にSSD201に実行させることができる。FPGA106のGC制御部124は、ストリームIDごとの書き込みデータ量を管理し、その管理の結果を用いることで、ガベージコレクションを実行すべきストリームIDを適切に判定することができる。これにより、SSD201でのガベージコレクションの処理効率が高まる。また、SSD201側の判断に基づくガベージコレクションの実行回数を減らすこともできる。SSD201全体として見ると、SSD201側の判断だけに基づく場合より、ガベージコレクションの実行回数を減らすことができる可能性が高い。その場合、ガベージコレクションの実行に伴うデータの書き込み量をさらに削減できる可能性が高い。
図13は、未更新データのストリームID更新処理手順の例を示すフローチャートである。
[ステップS71]ストリームID設定部123は、ステップS72以降の処理をすべての単位領域について実行したか否かを判定する。ストリームID設定部123は、未実行の単位領域がある場合、ステップS72の処理を実行し、すべての単位領域について処理済みの場合、処理を終了する。
[ステップS72]ストリームID設定部123は、処理を未実行の単位領域を1つ選択する。
[ステップS73]ストリームID設定部123は、ストリームID管理テーブル111から、ステップS72で選択した単位領域の単位領域IDが登録されたレコードを特定する。ストリームID設定部123は、特定したレコードの中に、IDステータスが「旧ID」であり、かつ、GC実行フラグが「実行済み」であるレコードがあるか否かを判定する。この判定条件に該当するレコードは、直前にガベージコレクションが実行されたストリームIDが、更新前のストリームIDとして割り当てられていた単位領域に対応するレコードである。ストリームID設定部123は、該当するレコードがある場合、ステップS74の処理を実行し、該当するレコードがない場合、ステップS71の処理を再度実行する。
[ステップS74]ストリームID設定部123は、ストリームID管理テーブル111のレコードのうち、ステップS72で選択した単位領域の単位領域IDが登録され、かつ、IDステータスが「現行ID」であるレコードから、現行のストリームIDを取得する。
[ステップS75]ストリームID設定部123は、IDステータスが「旧ID」であり、かつ、GC実行フラグが「実行済み」であるというステップS73での判定条件を満たすレコードを特定する。この判定条件を満たすレコードが残っている場合、更新前のストリームIDが付加されてSSD201に書き込まれたデータの中に、図12のガベージコレクションを実行した後にも有効データとして残っているデータがあることを示す。
そこで、ストリームID設定部123は、これらのデータをSSD201から読み出し、読み出したデータにステップS74で取得した現行のストリームIDを付加して、SSD201にリライトする。これによって、SSD201上の有効データに付加されるストリームIDを現行のストリームIDに付け替える。
具体的には、ストリームID設定部123は、特定したレコードの書き込み管理ビットマップから、書き込み済みを示すビット値「1」が設定されたビットを特定する。ストリームID設定部123は、単位領域設定テーブル114を参照して、特定した各ビットに対応するSSD201上の論理アドレスを特定する。ストリームID設定部123は、特定した各論理アドレスについて、次の処理を実行する。
ストリームID設定部123は、特定した論理アドレスを読み出し元アドレスとして設定した読み出しコマンドを、IOC105を介してSSD201に送信する。これにより、対応するデータがSSD201から読み出される。次に、ストリームID設定部123は、同じ論理アドレスを書き込み先アドレスとして設定した書き込みコマンドを作成する。ストリームID設定部123は、この書き込みコマンドに、ステップS74で取得した現行のストリームIDを付加して、IOC105を介してSSD201に送信する。
これにより、SSD201上の同じ論理アドレスに対応するデータのうち、更新前のストリームIDが付加された書き込みデータが無効化される。そして、現行のストリームIDを付加して新たに書き込みを要求したデータが、有効データとしてSSD201上の別のブロックに書き込まれる。
[ステップS76]ストリームID設定部123は、ステップS74で現行のストリームIDを取得した取得元のレコードの書き込みデータ量に、ステップS75でリライトした書き込みデータ長(すなわち、リライトしたデータの合計量)を加算する。
さらに、ストリームID設定部123は、書き込みデータ量を加算したレコードに登録された書き込み管理ビットマップと、ステップS75で特定したレコードに登録された書き込み管理ビットマップとを、それらの論理和をとることでマージする。ストリームID設定部123は、マージされたビットマップによって、前者のレコードに登録された書き込み管理ビットマップを更新する。
[ステップS77]ストリームID設定部123は、ステップS75で特定した各レコードのIDステータスを、「旧ID」から「無効ID」に更新する。この後、ストリームID設定部123は、ステップS71の処理を再度実行する。
次に、SSD201に対する具体的な書き込み制御例を挙げて説明する。
まず、図14は、第1の状態において管理テーブルに登録されるデータの例を示す図である。また、図15は、第1の状態におけるSSDの物理記憶領域のイメージ例を示す図である。
SSD201にデータが書き込まれていない初期状態から、単位領域に対する書き込みが開始されると、SSD201に対する書き込みデータ増加量がデータ増加量基準値(100GB)を超えるまでの間、ストリームIDの更新処理は実行されない。第1の状態は、初期状態から、単位領域a,b,cに対する書き込みが行われたものの、SSD201に対する書き込みデータ増加量がデータ増加量基準値を超えていない状態を示す。
この状態では、図14に示すように、ストリームID管理テーブル111には単位領域a,b,cのそれぞれに対応するレコードが登録される。各単位領域a,b,cには、ストリームIDとして初期値「0」が割り当てられる。そして、書き込みが行われるたびに、ストリームID管理テーブル111の書き込みデータ量と書き込み回数、書き込み量管理テーブル112の書き込みデータ量、および、SSD書き込み量管理テーブル113の書き込みデータ増加量が増加する。
なお、図14に示すストリームID管理テーブル111では、書き込み管理ビットマップの図示を省略している。また、SSD書き込み量管理テーブル113に登録されたSSD ID「1」は、SSD201を示すものとする。
また、図15に示すように、SSD201には、単位領域a,b,cに属するデータが順次格納されていく。この状態では、SSD201の物理記憶領域における空き領域サイズは、ガベージコレクションの実行を要求するための基準空き領域サイズ(150GB)よりはるかに大きい。
次に、上記の第1の状態から単位領域a,b,cに対する書き込みが継続され、SSD201に対する書き込みデータ増加量がデータ増加量基準値(100GB)を超えたとする。このときの状態を第2の状態とする。
図16は、第2の状態において管理テーブルに登録されるデータの例を示す図である。第2の状態では、図10に示すストリームID更新処理が実行される。この第2の状態に遷移するまでの間に、単位領域a,b,cに対してそれぞれ6GB、14GB、80GBのデータが書き込まれたとする。
この場合、図10のステップS31の処理により、単位領域a,b,cに対してそれぞれストリームID「1」,「2」,「3」が割り当てられる。また、ストリームID管理テーブル111には、単位領域a,b,cにそれぞれ対応する新たなレコード111a,111b,111cが追加される。追加されたレコード111a,111b,111cには、新たに更新後のストリームIDが登録され、それらのレコード111a,111b,111cのIDステータスは「現行ID」とされる。一方、更新前のストリームIDが登録されているレコード111d,111e,111fでは、IDステータスが「現行ID」から「旧ID」に更新される。なお、SSD書き込み量管理テーブル113では、SSD201に対応する書き込みデータ増加量が「0」にリセットされる。
以上の第2の状態から単位領域a,b,cに対する書き込みが継続されることで、書き込みコマンドをSSD201に送信する際に、更新後のストリームIDが書き込みコマンドに付加される。これによって、新たに書き込まれるデータには、ストリームID更新処理の実行直前における各単位領域a,b,cの更新頻度に応じたストリームIDが付加される。その結果、SSD201では、更新頻度の異なる単位領域に属するデータが別々のブロックに書き込まれるようになる。
次に、第2の状態から、単位領域a,b,cに加えて単位領域d,eに対する書き込みが行われたとする。また、書き込みの実行に応じてSSD201に対する書き込みデータ増加量がデータ増加量基準値(100GB)を超え、ストリームID更新処理が再度実行されたとする。
そして、さらに単位領域に対する書き込みが継続され、更新後のストリームIDが付加されたデータが少しずつSSD201に書き込まれていったとする。このときの状態を第3の状態とする。
図17は、第3の状態において管理テーブルに登録されるデータの例を示す図である。図17に示すように、ストリームID更新処理の実行によって、単位領域c,dにストリームID「3」が、単位領域b,eにストリームID「2」が、単位領域aにストリームID「1」が、それぞれ新たに割り当てられたとする。
この場合、ストリームID管理テーブル111には、それぞれ単位領域c,d,b,e,aに対応する新たなレコード111g,111h,111i,111j,111kが追加される。そして、それらのレコード111g,111h,111i,111j,111kに更新後のストリームIDが登録される。また、更新前のストリームIDが登録されているレコード111l〜111pでは、IDステータスが「現行ID」から「旧ID」に更新される。
その後、単位領域a〜eに対する書き込みが継続されて、第3の状態に遷移したとする。この第3の状態において、図11のステップS42の判定処理により、SSD201の空き領域サイズが基準空き領域サイズ(150GB)より小さくなったと判定されたとする。この場合、少なくとも1つのストリームIDが割り当てられた単位領域に書き込まれたデータについて、ガベージコレクションが実行される。
図17に示す書き込み量管理テーブル112の例では、ストリームID「0」,「3」について、書き込みデータ量が基準データ量(100GB)より大きくなっている。この場合、ストリームID「0」,「3」がガベージコレクションの実行対象となる。以下、ガベージコレクションが実行された後の状態を、第4の状態とする。
図18は、第4の状態において管理テーブルに登録されるデータの例を示す図である。ガベージコレクションの実行により、レコード111g,111hにおける書き込みデータ量、すなわちストリームID「3」が付加されたデータ量が減少している。本実施の形態では、書き込み量管理テーブル112によりストリームIDごとに書き込みデータ量を管理し、書き込みデータ量が所定値を超えたストリームIDを指定してガベージコレクションを実行させる。これにより、ガベージコレクションの実行による無効データの削減効果が向上する。また、上記条件でガベージコレクションを実行させることで、更新頻度が高い単位領域に属するデータがガベージコレクションの対象となる可能性が高くなる。その結果、ガベージコレクションに伴うデータ書き込み量を減少させることができる。
なお、図18の例では、レコード111m〜111pにおける書き込みデータ量は「0」に更新されている。これは、単位領域b〜eに属するデータのうち、更新前のストリームID「0」が付加されたデータが、SSD201からすべて削除されたことを示す。これらのレコード111m〜111pは、図12のステップS60の処理によってストリームID管理テーブル111から削除される。
図19は、第3、第4の状態におけるSSDの物理記憶領域のイメージ例を示す図である。図19の上図が第3の状態を示し、下図が第4の状態を示す。図19の上図に示すように、第3の状態では、SSD201の物理記憶領域における空き容量が基準空き領域サイズ(150GB)を超えている。これに対して、図19の下図に示すように、第4の状態では、ガベージコレクションの実行によりストリームID「0」,「3」が付加されたデータのデータ量が削減されている。その結果、SSD201の物理記憶領域における空き容量は、基準空き領域サイズよりはるかに大きい値まで回復している。
ところで、第3の状態では、図17に示したように、単位領域aに対応するレコード111kでは書き込みデータ量が「0」になっている。これは、ストリームID更新処理が前回実行された後に、単位領域aに対する書き込みが発生していないことを示す。この場合、図19の下図に示すように、単位領域aに属するデータとしては、更新前のストリームID「0」が付加されているデータしかSSD201に書き込まれていない。これらのデータに有効データが確実に含まれるので、ストリームID「0」についてのガベージコレクションを実行しても、ストリームID「0」が付加された有効データがSSD201に残ってしまう。
図13に示した未更新データのストリームID更新処理は、このように更新前のストリームIDが付加された有効データが残ってしまった場合に、その有効データを読み出し、更新後のストリームIDを付加してSSD201にリライトする処理である。これにより、更新前のストリームIDが付加された有効データをSSD201から削除し、更新後のストリームIDが付加された同じ有効データをSSD201に記憶させることができる。
図20は、第5の状態において管理テーブルに登録されるデータの例を示す図である。また、図21は、第5の状態におけるSSDの物理記憶領域のイメージ例を示す図である。
前述の第4の状態では、単位領域aに対応し、かつ、GC実行フラグが「実行済み」であり、かつ、IDステータスが「旧ID」であるレコード111lが、未更新データのストリームID更新処理の対象となる。この処理では、単位領域aに属するデータのうち、更新前のストリームID「0」が付加された5GB分のデータが、SSD201から読み出される。そして、読み出されたデータが、更新後のストリームID「1」を付加してSSD201にリライトされる。その結果、レコード111kの書き込みデータ量が5GB増加する一方、レコード111lのIDステータスが「無効ID」に更新されて、ストリームID「0」が付加されたデータが無効データになったことが記録される。
また、図21に示すように、第5の状態では、ストリームID「1」が付加された、単位領域aに属するデータが、SSD201に追加的に書き込まれる。これによって、SSD201の空き容量は減少する。しかし、ストリームID「0」が付加された、単位領域aに属するデータはすべて無効データであるので、これらの無効データが書き込まれたブロックは、SSD201のコントローラの判断によっていずれフラッシュされ、再利用可能になる。
〔第3の実施の形態〕
第3の実施の形態に係るCMは、FPGA106の処理がCPU101によって実行されるように、第2の実施の形態に係るCM100を変形したものである。以下、第2の実施の形態との相違点について説明する。なお、第2の実施の形態と同じ構成要素には、同じ符号を付して示す。
図22は、第3の実施の形態に係るCMが備える処理機能の構成例を示すブロック図である。
第3の実施の形態に係るストレージ装置は、CM100の代わりにCM100aを有する。CM100aは、ホストIO制御部101aに加えて、記憶部102aと書き込み制御部101bを有する。
記憶部102aは、例えば、RAM102またはSSD103の記憶領域の一部として実装される。記憶部102aは、第2の実施の形態における記憶部110と同様に、ストリームID管理テーブル111、書き込み量管理テーブル112、SSD書き込み量管理テーブル113および単位領域設定テーブル114が記憶される。
書き込み制御部101bの処理は、例えば、ホストIO制御部101aと同様に、CPU101が所定のアプリケーションプログラムを実行することで実現される。
書き込み制御部101bは、ホストIO制御部101aがIOC105に対して読み出しコマンドの発行要求を出力した場合、その発行要求をそのままIOC105に転送する。一方、書き込み制御部101bは、ホストIO制御部101aがIOC105に対して書き込みコマンドの発行要求を出力した場合には、その発行要求をそのままIOC105に転送せずに取得する。なお、書き込み制御部101bは、書き込みコマンドの発行要求を取得したとき、LUNおよびLBAの通知も受ける。
書き込み制御部101bは、コマンド受信処理部121a、コマンド送信処理部122a、ストリームID設定部123aおよびGC制御部124aを有する。コマンド受信処理部121a、コマンド送信処理部122a、ストリームID設定部123aおよびGC制御部124aの基本的な処理は、それぞれコマンド受信処理部121、コマンド送信処理部122、ストリームID設定部123およびGC制御部124の処理と同じである。
ただし、コマンド受信処理部121aは、ホストIO制御部101aから出力された、書き込みコマンドの発行要求をLUNおよびLBAとともに取得する点で、コマンド受信処理部121とは異なる。コマンド送信処理部122aは、ストリームIDを付加した書き込みコマンドの発行をIOC105に要求する点で、コマンド送信処理部122とは異なる。
ストリームID設定部123aは、図13のステップS75において、SSDからの読み出しや書き込み(リライト)のためのコマンド発行をIOC105に要求する点で、ストリームID設定部123とは異なる。GC制御部124aは、図12のステップS57において、選択したストリームIDに対応する有効データ量の送信を要求するための制御コマンドの発行を、IOC105に要求する点で、GC制御部124とは異なる。
以上の第3の実施の形態に係るCM100aによれば、第2の実施の形態と同様の効果を得ることができる。
なお、上記の各実施の形態に示した装置(例えば、ストレージ制御装置10、CM100,100a)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(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) 記憶装置の論理記憶領域を分割した複数の分割領域のそれぞれと、書き込み頻度の違いを示す複数の識別番号のうちの1つとの対応関係を示す対応管理情報を記憶する記憶部と、制御部とを有し、
前記制御部は、
前記複数の分割領域のいずれかに含まれる書き込みアドレスへの書き込みが要求されると、前記対応管理情報に基づいて、前記複数の識別番号のうち前記書き込みアドレスを含む分割領域に対応付けられた識別番号を、前記書き込みアドレスに対する第1の書き込み要求に付加して前記記憶装置に送信し、
前記複数の分割領域ごとに書き込み頻度を計測し、
書き込み頻度の計測結果に基づいて、前記対応管理情報が示す前記対応関係を更新し、
前記対応関係の更新後に前記書き込みアドレスへの書き込みが要求されると、前記対応管理情報に基づいて、前記複数の識別番号のうち前記書き込みアドレスを含む分割領域に対応付けられた識別番号を、前記書き込みアドレスに対する第2の書き込み要求に付加して前記記憶装置に送信する、
ストレージ制御装置。
(付記2) 前記複数の識別番号は、前記記憶装置が、書き込みデータを前記書き込みデータに付加された識別番号に応じて複数の管理領域のうち異なる管理領域に書き込むように制御するための情報であり、前記複数の管理領域のそれぞれは、前記記憶装置の物理記憶領域に含まれる、データ消去の単位となる領域である、
付記1記載のストレージ制御装置。
(付記3) 前記対応関係の更新は、前記記憶装置に書き込まれる累積データ量が所定量増加するたびに実行される、
付記1または2記載のストレージ制御装置。
(付記4) 前記複数の分割領域の数より前記複数の識別番号の数が少ない場合、前記対応関係の更新では、前記複数の識別番号の少なくとも1つを前記複数の分割領域のうち2以上の分割領域に対応付ける、
付記1〜3のいずれか1つに記載のストレージ制御装置。
(付記5) 前記制御部は、さらに、
前記記憶装置の物理記憶領域の空き容量が所定容量より小さくなった場合、前記記憶装置に書き込まれたデータのうち、書き込み時に前記複数の識別番号がそれぞれ付加されたデータのデータ総量を取得し、
前記複数の識別番号の中から、前記データ総量が所定基準量より大きい特定識別番号を特定し、
書き込み時に前記特定識別番号が付加されたデータについてのガベージコレクションを前記記憶装置に実行させる、
付記1〜4のいずれか1つに記載のストレージ制御装置。
(付記6) 前記記憶部は、さらに、前記複数の識別番号のそれぞれに対応する書き込みデータ量が登録されたデータ量管理情報を記憶し、
前記制御部は、さらに、前記記憶装置に対して、前記複数の識別番号のいずれかを付加して書き込み要求を送信するたびに、付加した識別番号に対応する前記書き込みデータ量に書き込みを要求したデータのサイズを加算し、
前記データ総量の取得では、その時点での前記複数の識別番号にそれぞれ対応する前記書き込みデータ量を、前記データ総量として前記データ量管理情報から読み出す、
付記5記載のストレージ制御装置。
(付記7) 前記制御部は、さらに、
前記複数の分割領域の中から、前回の前記対応関係の更新前に前記特定識別番号が対応付けられており、かつ、前回の前記対応関係の更新後に書き込みが要求されていない特定分割領域を特定し、
前記対応管理情報に基づいて、前記複数の識別番号の中から前記特定分割領域に現在対応付けられている現行識別番号を特定し、
前回の前記対応関係の更新前に前記特定分割領域に書き込まれたデータを前記記憶装置から読み出し、読み出したデータに前記現行識別番号を付加して前記記憶装置に書き込みし直す、
付記5または6記載のストレージ制御装置。
(付記8) コンピュータに、
記憶装置の論理記憶領域を分割した複数の分割領域のいずれかに含まれる書き込みアドレスへの書き込みが要求されると、前記複数の分割領域のそれぞれと、書き込み頻度の違いを示す複数の識別番号のうちの1つとの対応関係を示す対応管理情報に基づいて、前記複数の識別番号のうち前記書き込みアドレスを含む分割領域に対応付けられた識別番号を、前記書き込みアドレスに対する第1の書き込み要求に付加して前記記憶装置に送信し、
前記複数の分割領域ごとに書き込み頻度を計測し、
書き込み頻度の計測結果に基づいて、前記対応管理情報が示す前記対応関係を更新し、
前記対応関係の更新後に前記書き込みアドレスへの書き込みが要求されると、前記対応管理情報に基づいて、前記複数の識別番号のうち前記書き込みアドレスを含む分割領域に対応付けられた識別番号を、前記書き込みアドレスに対する第2の書き込み要求に付加して前記記憶装置に送信する、
処理を実行させるストレージ制御プログラム。
(付記9) 前記複数の識別番号は、前記記憶装置が、書き込みデータを前記書き込みデータに付加された識別番号に応じて複数の管理領域のうち異なる管理領域に書き込むように制御するための情報であり、前記複数の管理領域のそれぞれは、前記記憶装置の物理記憶領域に含まれる、データ消去の単位となる領域である、
付記8記載のストレージ制御プログラム。
(付記10) 前記対応関係の更新は、前記記憶装置に書き込まれる累積データ量が所定量増加するたびに実行される、
付記8または9記載のストレージ制御プログラム。
(付記11) 前記複数の分割領域の数より前記複数の識別番号の数が少ない場合、前記対応関係の更新では、前記複数の識別番号の少なくとも1つを前記複数の分割領域のうち2以上の分割領域に対応付ける、
付記8〜10のいずれか1つに記載のストレージ制御プログラム。
(付記12) 前記コンピュータに、
前記記憶装置の物理記憶領域の空き容量が所定容量より小さくなった場合、前記記憶装置に書き込まれたデータのうち、書き込み時に前記複数の識別番号がそれぞれ付加されたデータのデータ総量を取得し、
前記複数の識別番号の中から、前記データ総量が所定基準量より大きい特定識別番号を特定し、
書き込み時に前記特定識別番号が付加されたデータについてのガベージコレクションを前記記憶装置に実行させる、
処理をさらに実行させる付記8〜11のいずれか1つに記載のストレージ制御プログラム。
(付記13) 前記コンピュータに、
前記複数の識別番号のそれぞれに対応する書き込みデータ量が登録されたデータ量管理情報を記憶部に格納し、
前記記憶装置に対して、前記複数の識別番号のいずれかを付加して書き込み要求を送信するたびに、付加した識別番号に対応する前記書き込みデータ量に書き込みを要求したデータのサイズを加算する、
処理をさらに実行させ、
前記データ総量の取得では、その時点での前記複数の識別番号にそれぞれ対応する前記書き込みデータ量を、前記データ総量として前記データ量管理情報から読み出す、
付記12記載のストレージ制御システム。
(付記14) 前記コンピュータに、
前記複数の分割領域の中から、前回の前記対応関係の更新前に前記特定識別番号が対応付けられており、かつ、前回の前記対応関係の更新後に書き込みが要求されていない特定分割領域を特定し、
前記対応管理情報に基づいて、前記複数の識別番号の中から前記特定分割領域に現在対応付けられている現行識別番号を特定し、
前回の前記対応関係の更新前に前記特定分割領域に書き込まれたデータを前記記憶装置から読み出し、読み出したデータに前記現行識別番号を付加して前記記憶装置に書き込みし直す、
処理をさらに実行させる付記12または13記載のストレージ制御システム。
10 ストレージ制御装置
11 記憶部
11a 対応管理情報
12 制御部
20 記憶装置
21 論理記憶領域
22 物理記憶領域
22a〜22c 管理領域
AD1,AD2 書き込みアドレス
D1a,D1b,D2a,D2b データ
R1〜R3 分割領域
S1〜S4 ステップ

Claims (8)

  1. 記憶装置の論理記憶領域を分割した複数の分割領域のそれぞれと、書き込み頻度の違いを示す複数の識別番号のうちの1つとの対応関係を示す対応管理情報を記憶する記憶部と、制御部とを有し、
    前記制御部は、
    前記複数の分割領域のいずれかに含まれる書き込みアドレスへの書き込みが要求されると、前記対応管理情報に基づいて、前記複数の識別番号のうち前記書き込みアドレスを含む分割領域に対応付けられた識別番号を、前記書き込みアドレスに対する第1の書き込み要求に付加して前記記憶装置に送信し、
    前記複数の分割領域ごとに書き込み頻度を計測し、
    書き込み頻度の計測結果に基づいて、前記対応管理情報が示す前記対応関係を更新し、
    前記対応関係の更新後に前記書き込みアドレスへの書き込みが要求されると、前記対応管理情報に基づいて、前記複数の識別番号のうち前記書き込みアドレスを含む分割領域に対応付けられた識別番号を、前記書き込みアドレスに対する第2の書き込み要求に付加して前記記憶装置に送信する、
    ストレージ制御装置。
  2. 前記複数の識別番号は、前記記憶装置が、書き込みデータを前記書き込みデータに付加された識別番号に応じて複数の管理領域のうち異なる管理領域に書き込むように制御するための情報であり、前記複数の管理領域のそれぞれは、前記記憶装置の物理記憶領域に含まれる、データ消去の単位となる領域である、
    請求項1記載のストレージ制御装置。
  3. 前記対応関係の更新は、前記記憶装置に書き込まれる累積データ量が所定量増加するたびに実行される、
    請求項1または2記載のストレージ制御装置。
  4. 前記複数の分割領域の数より前記複数の識別番号の数が少ない場合、前記対応関係の更新では、前記複数の識別番号の少なくとも1つを前記複数の分割領域のうち2以上の分割領域に対応付ける、
    請求項1〜3のいずれか1項に記載のストレージ制御装置。
  5. 前記制御部は、さらに、
    前記記憶装置の物理記憶領域の空き容量が所定容量より小さくなった場合、前記記憶装置に書き込まれたデータのうち、書き込み時に前記複数の識別番号がそれぞれ付加されたデータのデータ総量を取得し、
    前記複数の識別番号の中から、前記データ総量が所定基準量より大きい特定識別番号を特定し、
    書き込み時に前記特定識別番号が付加されたデータについてのガベージコレクションを前記記憶装置に実行させる、
    請求項1〜4のいずれか1項に記載のストレージ制御装置。
  6. 前記記憶部は、さらに、前記複数の識別番号のそれぞれに対応する書き込みデータ量が登録されたデータ量管理情報を記憶し、
    前記制御部は、さらに、前記記憶装置に対して、前記複数の識別番号のいずれかを付加して書き込み要求を送信するたびに、付加した識別番号に対応する前記書き込みデータ量に書き込みを要求したデータのサイズを加算し、
    前記データ総量の取得では、その時点での前記複数の識別番号にそれぞれ対応する前記書き込みデータ量を、前記データ総量として前記データ量管理情報から読み出す、
    請求項5記載のストレージ制御装置。
  7. 前記制御部は、さらに、
    前記複数の分割領域の中から、前回の前記対応関係の更新前に前記特定識別番号が対応付けられており、かつ、前回の前記対応関係の更新後に書き込みが要求されていない特定分割領域を特定し、
    前記対応管理情報に基づいて、前記複数の識別番号の中から前記特定分割領域に現在対応付けられている現行識別番号を特定し、
    前回の前記対応関係の更新前に前記特定分割領域に書き込まれたデータを前記記憶装置から読み出し、読み出したデータに前記現行識別番号を付加して前記記憶装置に書き込みし直す、
    請求項5または6記載のストレージ制御装置。
  8. コンピュータに、
    記憶装置の論理記憶領域を分割した複数の分割領域のいずれかに含まれる書き込みアドレスへの書き込みが要求されると、前記複数の分割領域のそれぞれと、書き込み頻度の違いを示す複数の識別番号のうちの1つとの対応関係を示す対応管理情報に基づいて、前記複数の識別番号のうち前記書き込みアドレスを含む分割領域に対応付けられた識別番号を、前記書き込みアドレスに対する第1の書き込み要求に付加して前記記憶装置に送信し、
    前記複数の分割領域ごとに書き込み頻度を計測し、
    書き込み頻度の計測結果に基づいて、前記対応管理情報が示す前記対応関係を更新し、
    前記対応関係の更新後に前記書き込みアドレスへの書き込みが要求されると、前記対応管理情報に基づいて、前記複数の識別番号のうち前記書き込みアドレスを含む分割領域に対応付けられた識別番号を、前記書き込みアドレスに対する第2の書き込み要求に付加して前記記憶装置に送信する、
    処理を実行させるストレージ制御プログラム。
JP2017135335A 2017-07-11 2017-07-11 ストレージ制御装置およびストレージ制御プログラム Pending JP2019016320A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017135335A JP2019016320A (ja) 2017-07-11 2017-07-11 ストレージ制御装置およびストレージ制御プログラム
US16/026,174 US10776278B2 (en) 2017-07-11 2018-07-03 Storage control apparatus and computer-readable storage medium storing storage control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017135335A JP2019016320A (ja) 2017-07-11 2017-07-11 ストレージ制御装置およびストレージ制御プログラム

Publications (1)

Publication Number Publication Date
JP2019016320A true JP2019016320A (ja) 2019-01-31

Family

ID=64998984

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017135335A Pending JP2019016320A (ja) 2017-07-11 2017-07-11 ストレージ制御装置およびストレージ制御プログラム

Country Status (2)

Country Link
US (1) US10776278B2 (ja)
JP (1) JP2019016320A (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10496297B2 (en) * 2017-11-21 2019-12-03 Micron Technology, Inc. Data categorization based on invalidation velocities
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US20190324685A1 (en) * 2018-04-19 2019-10-24 EMC IP Holding Company, LLC Storage management system and method
US10846216B2 (en) * 2018-10-25 2020-11-24 Pure Storage, Inc. Scalable garbage collection
KR102626058B1 (ko) * 2019-07-08 2024-01-18 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US12050689B2 (en) 2019-11-22 2024-07-30 Pure Storage, Inc. Host anomaly-based generation of snapshots
US20220327208A1 (en) * 2019-11-22 2022-10-13 Pure Storage, Inc. Snapshot Deletion Pattern-Based Determination of Ransomware Attack against Data Maintained by a Storage System
US20210382992A1 (en) * 2019-11-22 2021-12-09 Pure Storage, Inc. Remote Analysis of Potentially Corrupt Data Written to a Storage System
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US12079356B2 (en) 2019-11-22 2024-09-03 Pure Storage, Inc. Measurement interval anomaly detection-based generation of snapshots
US12067118B2 (en) 2019-11-22 2024-08-20 Pure Storage, Inc. Detection of writing to a non-header portion of a file as an indicator of a possible ransomware attack against a storage system
US12079333B2 (en) 2019-11-22 2024-09-03 Pure Storage, Inc. Independent security threat detection and remediation by storage systems in a synchronous replication arrangement
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
US11625481B2 (en) 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11500788B2 (en) * 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US11520907B1 (en) * 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US11720714B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
US12079502B2 (en) 2019-11-22 2024-09-03 Pure Storage, Inc. Storage element attribute-based determination of a data protection policy for use within a storage system
US12050683B2 (en) 2019-11-22 2024-07-30 Pure Storage, Inc. Selective control of a data synchronization setting of a storage system based on a possible ransomware attack against the storage system
KR20210099930A (ko) * 2020-02-05 2021-08-13 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN113448877A (zh) * 2020-03-26 2021-09-28 伊姆西Ip控股有限责任公司 用于数据存储的方法、设备和计算机程序
CN113885808B (zh) * 2021-10-28 2024-03-15 合肥兆芯电子有限公司 映射信息记录方法以及存储器控制电路单元与存储装置
KR20230097866A (ko) * 2021-12-24 2023-07-03 삼성전자주식회사 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014049678A1 (ja) * 2012-09-25 2014-04-03 株式会社 東芝 ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法
WO2016067328A1 (ja) * 2014-10-27 2016-05-06 株式会社日立製作所 不揮発メモリデバイスを有するストレージ装置、及び、不揮発メモリデバイス
WO2016135954A1 (ja) * 2015-02-27 2016-09-01 株式会社日立製作所 ストレージ装置および不揮発メモリデバイス
US20170060479A1 (en) * 2015-08-31 2017-03-02 Samsung Electronics Co., Ltd. Storage device configured to manage plural data streams based on data amount
JP2017054465A (ja) * 2015-09-11 2017-03-16 株式会社東芝 メモリシステムおよびホスト装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070101047A1 (en) 2004-12-22 2007-05-03 Kiyoshi Kamiya Memory apparatus and controller
US9977734B2 (en) 2014-12-11 2018-05-22 Toshiba Memory Corporation Information processing device, non-transitory computer readable recording medium, and information processing system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014049678A1 (ja) * 2012-09-25 2014-04-03 株式会社 東芝 ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法
WO2016067328A1 (ja) * 2014-10-27 2016-05-06 株式会社日立製作所 不揮発メモリデバイスを有するストレージ装置、及び、不揮発メモリデバイス
WO2016135954A1 (ja) * 2015-02-27 2016-09-01 株式会社日立製作所 ストレージ装置および不揮発メモリデバイス
US20170060479A1 (en) * 2015-08-31 2017-03-02 Samsung Electronics Co., Ltd. Storage device configured to manage plural data streams based on data amount
JP2017054465A (ja) * 2015-09-11 2017-03-16 株式会社東芝 メモリシステムおよびホスト装置

Also Published As

Publication number Publication date
US10776278B2 (en) 2020-09-15
US20190018784A1 (en) 2019-01-17

Similar Documents

Publication Publication Date Title
JP2019016320A (ja) ストレージ制御装置およびストレージ制御プログラム
JP4813843B2 (ja) ストレージ装置、ディスクキャッシュ制御方法及びディスクキャッシュの容量割当方法
CN108733313B (zh) 利用预备盘建立多级闪速缓存的方法、设备和计算机可读介质
JP6000376B2 (ja) 特性の異なる複数種類のキャッシュメモリを有する情報処理装置
JP5149912B2 (ja) 複数の異種のソリッドステート・ストレージ・ロケーションの選択的利用
JP2008015769A (ja) ストレージシステム及び書き込み分散方法
US20140089582A1 (en) Disk array apparatus, disk array controller, and method for copying data between physical blocks
JP2018041245A (ja) ストレージ装置、及びストレージ制御装置
JP2005537554A (ja) ストレージ・ユニット間のデータ移動
CN107562367B (zh) 基于软件化存储系统读写数据的方法以及装置
CN111796765B (zh) 优化数据存储系统性能的方法
JP6402557B2 (ja) ストレージ装置、ストレージ制御方法およびストレージ制御プログラム
JP6867578B2 (ja) ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
WO2014142337A1 (ja) ストレージ装置と方法及びプログラム
CN113396566A (zh) 分布式存储系统中基于全面i/o监测的资源分配
US10482012B1 (en) Storage system and method of operating thereof
JP7197783B2 (ja) 情報処理システム、管理装置および管理プログラム
KR101103061B1 (ko) 반도체 스토리지 시스템 및 그 제어 방법
JP2018197933A (ja) ストレージ制御装置、情報処理システムおよびプログラム
JP2010237907A (ja) ストレージ装置および記録方法
JP7323769B2 (ja) ストレージ装置、ストレージシステムおよびプログラム
JP2017037501A (ja) ストレージ制御装置およびストレージ制御プログラム
JP7132491B2 (ja) メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法
JP2021114264A (ja) ストレージ制御装置およびストレージ制御プログラム
JP2011227802A (ja) データ記録装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200409

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20200414

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210217

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210810