JP5844473B2 - 複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法 - Google Patents

複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法 Download PDF

Info

Publication number
JP5844473B2
JP5844473B2 JP2014534292A JP2014534292A JP5844473B2 JP 5844473 B2 JP5844473 B2 JP 5844473B2 JP 2014534292 A JP2014534292 A JP 2014534292A JP 2014534292 A JP2014534292 A JP 2014534292A JP 5844473 B2 JP5844473 B2 JP 5844473B2
Authority
JP
Japan
Prior art keywords
storage
data
storage area
logical
ssd
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.)
Expired - Fee Related
Application number
JP2014534292A
Other languages
English (en)
Other versions
JP2015505078A (ja
Inventor
英通 小関
英通 小関
純司 小川
純司 小川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2015505078A publication Critical patent/JP2015505078A/ja
Application granted granted Critical
Publication of JP5844473B2 publication Critical patent/JP5844473B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/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
    • G06F3/0688Non-volatile semiconductor memory arrays

Description

本発明は、複数の不揮発性の半導体憶媒体を有するストレージ装置の記憶制御に関する。
ストレージ装置は、一般に、データを格納する物理記憶媒体と、物理記憶媒体を制御するコントローラとを有する。コントローラは、ストレージ装置に接続された計算機(例えばホスト)にデータ格納空間(一般に論理ボリューム)を提供する。
ストレージ装置は、複数の物理記憶媒体をRAID(Redundant Array of Independent(or Inexpensive)Disks)構成で使用することにより、I/O処理を高速化したり、物理記憶媒体の故障に対する高い耐障害性を発揮したりすることができる。
ストレージ装置は、物理記憶媒体として一般にHDD(Hard Disk Drive)を搭載しているが、近年、HDDに変わる新しい物理記憶媒体として、フラッシュメモリ(以下、FM)を有する物理記憶媒体、例えば、SSD(Solid State Drive)が注目されている。
SSDは、HDDに比べI/O処理が非常に高速であるというメリットを有しているが、データの書き込み回数には上限があり、HDDに比べ寿命が短いというデメリットも有している。以下、そのデメリットについて説明する。
フラッシュメモリ(典型的にはNAND型のフラッシュメモリ)は、データを書き換えようとしたとき、そのデータ格納されている物理領域上に、データを上書くことができない。その物理領域上のデータに対してデータの書換えを行うためには、フラッシュメモリの消去単位であるブロックと呼ばれる単位でその物理領域上のデータに対して消去処理(以下、ブロック消去)が実行された後、ブロック消去が実行された物理領域上にデータを書く必要がある。
しかしながら、各ブロックについて、ブロック消去の回数(以下、消去回数)は、フラッシュメモリの物理的な制約から限界がある。そして、ブロックの消去回数がこの限界を超えると、そのブロックにはデータを格納することができなくなってしまう。つまり、SSDを構成する全ブロックの消去回数が上限を超えた時が、そのSSDの寿命となる。
そこで、一般のSSDでは、ウエアレベリング(以下、WL)とよばれる手法を用いて、SSDの長寿命化が図られている。これは、消去回数が多いブロックには低頻度に更新されるデータが格納されるように、また、消去回数が少ないブロックには高頻度に更新されるデータが格納されるように、データの格納位置を制御することで、ブロック間の消去回数を平準化し、特定のブロックのみが劣化することを抑える技術である。
ストレージ装置の物理記憶媒体としてSSDが採用される場合、複数のSSDがストレージ装置に搭載されることが一般的である。すなわち、特定のブロックのみが劣化することを抑えられても、SSD間の負荷に不均衡が生じ、特定のSSDのみに負荷が集中することがある。そこで、SSD間にもWLを適用し、複数のSSD間の消去回数を平準化することで、ストレージ装置全体の長寿命化を実現する手法が、特許文献1に開示されている。以下では、SSDなどの物理記憶媒体間で行われるWLを、「デバイス間WL」と言う。
WO/2011/010344
デバイス間WLでは、ストレージ装置のコントローラ(以下、ストレージコントローラ)が、移動対象のデータを決定する。そのため、ストレージコントローラは、SSDの内部情報を把握する必要がある。内部情報とは、フラッシュメモリへのデータ書き込み量や残消去回数などの情報である。この情報の粒度が細かいほど(つまり情報が詳細であるほど)、デバイス間WLの実行精度は向上する。これは、ストレージコントローラが、どのSSDのどのデータをどのSSDに移動すれば良いかということがに分かることを意味している。例えば、特許文献1では、ストレージコントローラが、SSDの内部情報を物理ブロック単位で詳細に把握して、デバイス間WLを実現する技術が開示されている。特許文献1では、ストレージコントローラが、各SSD内の複数のブロックの消去回数等の情報を管理する。
しかし、この場合、各SSDの内部情報が詳細であるが故に、各SSDの内部情報の量が多くなり、ストレージコントローラに、大容量のメモリが必要となる。そして、そのメモリには、各SSDからの膨大な内部情報が格納される。従って、ストレージコントローラは、消去回数を平準化する際に、メモリに格納された膨大な内部情報を参照する必要がある。このため、ストレージコントローラの負荷が大きくなってしまう。
このような問題は、SSD以外の、消去回数に制限のある不揮発性の半導体記憶媒体を有するストレージ装置についても有り得る。
ストレージ装置が、不揮発性の複数の半導体記憶媒体と、複数の半導体記憶媒体に接続されているコントローラであるストレージコントローラとを有する。
各半導体記憶媒体ユニットは、1以上の不揮発性の半導体記憶媒体で構成されており、論理記憶領域の基になっている。ストレージコントローラは、複数の論理記憶領域のうちのライト先の論理記憶領域の基になっている半導体記憶ユニットにライト対象のデータに基づきデータを書き込むようになっている。また、ストレージコントローラは、例えば各半導体記憶媒体から内部情報を定期的又は不定期的に取得し、取得した内部情報を半導体記憶媒体毎に格納するようになっている。
ストレージコントローラは、論理記憶領域毎のライトに関する統計を表す統計情報を記憶し、且つ、各半導体記憶媒体の残寿命に関する情報である残寿命情報を半導体記憶媒体毎に記憶する。残寿命情報は、残寿命それ自体を表す数値であっても良いし、残寿命に影響する属性(例えば、シングルレベルセル或いはマルチレベルセルのような記憶媒体種別)であっても良いし、残寿命の予測(算出)に使用される数値であっても良い。ストレージ装置は、複数の半導体記憶媒体に加えて、他種の物理記憶媒体(例えばハードディスクドライブ)を有していても良い。
ストレージコントローラは、取得した残寿命情報を基に、第1の半導体記憶ユニットと、第1の半導体記憶ユニットよりも残寿命が短い第2の半導体記憶ユニットとを特定する。
また、ストレージコントローラは、論理記憶領域毎のライトに関する統計を表す統計情報を基に、第1の半導体記憶ユニットについて第1の論理記憶領域と、第2の半導体記憶ユニットについて第1の論理記憶領域よりもライト負荷が高い第2の論理記憶領域とを特定する。
ストレージコントローラは、第1及び第2の論理記憶領域からデータを読み出し、且つ、第1の論理記憶領域から読み出したデータを、第2の論理記憶領域に書き込む、及び/又は、第2の論理記憶領域から読み出したデータを、第1の論理記憶領域に書き込む。
半導体記憶ユニットは、例えば、半導体記憶ユニットは、1つのSSDであっても良いし、2以上のSSDで構成されたRAIDグループであっても良い。
また、論理記憶領域は、例えば、1つのSSDに基づく論理アドレス範囲であっても良いし、RAIDグループを構成する2以上のSSDにまたがる論理アドレス範囲であっても良い。
ストレージコントローラの負荷の増加を低減し精度良く不揮発性の半導体記憶媒体間で消去回数の平準化を実行することができる。
第1実施例に係るストレージ装置10を含むストレージシステム10000の構成例を示す図である。 容量仮想化技術の概要説明図である。 キャッシュメモリ103の構成例を示す図である。 Disk管理TBL13100の構成例を示す図である。 RG管理TBL13200の構成例を示す図である。 Pool管理TBL13300の構成例を示す図である。 エクステント管理TBL13400の構成例を示す図である。 仮想ボリューム管理TBL13500の構成例を示す図である。 統計情報管理TBL13600の構成例を示す図である。 第1実施例に係るFM WR量予想TBL13700の構成例を示す図である。 SSD700の構成例を示す図である。 フラッシュメモリ780の構成例を示す図である。 SSDのアドレス空間の構成例を示す図である。 キャッシュメモリ716の構成例を示す図である。 論物変換TBL23100の構成例を示す図である。 SSD内の統計情報管理TBL23200の構成例を示す図である。 SSD内部情報25000の構成例を示す図である。 ホスト計算機30からライト要求が送信されそのライト要求の処理が完了するまでの処理の流れの一例を示すシーケンス図である。 ホスト計算機30からリード要求が送信されそのリード要求の処理が完了するまでの処理の流れの一例を示すシーケンス図である。 WL制御処理の流れの一例を示すシーケンス図である。 図20のS301(SSDの寿命予測)の概要説明図である。 第1実施例に係るFM WR量予測(図20のS303)の流れの一例を示すシーケンス図である。 デバイス間WLの実行パターンAの概要説明図である。 デバイス間WLの実行パターンAの一例のシーケンス図である。 デバイス間WLの実行パターンBの概要説明図である。 デバイス間WLの実行パターンBの一例のシーケンス図である。 デバイス間WLの実行パターンCの概要説明図である。 デバイス間WLの実行パターンDの概要説明図である。 デバイス間WLの実行パターンC及びDの一例のシーケンス図である。 デバイス間WLの実行パターンEの概要説明図である。 デバイス間WLの実行パターンEの一例のシーケンス図である。 デバイス間WLの実行パターンFの一例のシーケンス図である。 第2実施例に係るFM WR量予想TBL13700の構成例を示す図である。 第2実施例に係るWA情報格納テーブル13800の構成例を示す図である。 第2実施例に係るFM WR量予測(図20のS303)の流れの一例を示すシーケンス図である。 第2実施例に係るFM WR量予想TBL13700の構成例を示す図である。 図37は、実施例の概要を示す図である。 図38は、デバイス間WLと仮想ボリュームの関係の一例を示す図である。
以下、本発明の幾つかの実施例を図面を参照しつつ詳細に説明する。
以下の説明では、「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。
また、以下の説明では、要素(例えばエクステント)の識別情報として番号が使用されるが、他種の識別情報(例えば名前、識別子)が使用されて良い。
また、以下、「プログラム」を主語として処理を説明することがある場合、プログラムは、コントローラ(ストレージコントローラ、及びSSDコントローラ)に含まれるプロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インタフェース装置(例えば通信ポート)を用いながら行うため、処理の主語がコントローラ或いはプロセッサとされても良い。また、プロセッサは、処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースからインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ、又は、コンピュータ読取可能な記憶メディアであっても良い。
また、以下の説明では、物理記憶媒体を「Disk」と便宜上表記することがあるが、この表記は、物理記憶媒体が必ずしも円盤状の記憶媒体であることを意味しない。以下の説明では、以下の説明では、DiskはSSDを指すことの方が多い。
また、以下の説明では、期間或いは時間の単位は、限定されない。例えば、期間或いは時間の単位は、年、月、日、時、分、秒のうちのいずれか1つ或いはいずれか2以上の組合せで表現されて良い。
また、以下の説明では、SSDに含まれる不揮発半導体記憶媒体は、フラッシュメモリ(FM)であるとする。そのフラッシュメモリは、ブロック単位で消去が行われ、ページ単位でリード/ライトが行われる種類のフラッシュメモリ、典型的にはNAND型のフラッシュメモリであるとする。しかし、フラッシュメモリは、NAND型に代えて他種のフラッシュメモリ(例えばNOR型)でも良い。また、フラッシュメモリに代えて、他種の不揮発半導体記憶媒体、例えば相変化メモリが採用されても良い。
まず、実施形態の概要を説明する。
図37は、実施形態の概要を示す図である。
ストレージ装置10は、ストレージコントローラ100と、複数の物理記憶媒体11を備える。各物理記憶媒体11は、2以上の論理記憶領域の基になっている。論理記憶領域は、後述のエクステントでも良いし、ストレージ装置10に接続されている上位装置(例えばホスト計算機)に提供される論理ボリューム(LU:Logical Unit)の全部或いは一部でも良い。複数の物理記憶媒体11は、RAIDグループを構成してもよい。ストレージコントローラ100が、物理記憶媒体11間で消去回数の平準化を実行する。
まず、ストレージコントローラ100は、各物理記憶媒体11から各物理記憶媒体に関する内部情報を取得する。内部情報とは、物理記憶媒体11の寿命や消耗状況の指標となる情報を含んだ情報である。
例えば、物理記憶媒体11がSSD(フラッシュメモリを有する記憶媒体)であれば、内部情報は、複数のブロックの合計消去回数や、フラッシュメモリに書き込まれたデータの総量である実ライト量を含んだ情報である。ストレージコントローラ100は、この内部情報に基づいて、SSDの残寿命を判断する。つまり、ストレージコントローラ100は、データの移動元となる寿命の短いSSD11と、そのデータの移動となる寿命の長いSSD11を特定する。ストレージコントローラ100は、SSD単位で内部情報を取得することで、ストレージコントローラ100とSSD11間の情報転送によるオーバヘッドを削減することができる。ストレージコントローラ100は、SSD内の或る論理アドレス範囲や、物理的な範囲(例えばDIMM単位)毎に、内部情報を取得してもよい。
次に、ストレージコントローラ100は、寿命の短いSSD11から移動させるデータを特定する。デバイス間WLにおいて、データを移動させる際の記憶領域の範囲(一定のアドレス範囲)を「エクステント」と呼ぶ。エクステントは、参照符号60に示すように、一つのSSDに基づくアドレス範囲(論理領域)であってもよいし、参照符号70に示すように、複数のSSDにまたがったアドレス範囲(論理領域)であってもよい。また、エクステントの一部が、デバイス間WLの対象とされてもよいし、複数のエクステントの集合が、デバイス間WLの対象とされてもよい。なお、一つのSSDに基づくアドレス範囲(論理領域)を「エクステント」と言い、複数のSSDにまたがったアドレス範囲(論理領域)を「エクステント群」と言うこともできる。
フラッシュメモリのブロック単位や、ページ単位という小さい単位では、データ移動のための負荷が大きくなる。よって、ブロック及びページよりも大きいエクステントという単位でデバイス間WLを行うことで、データ移動の負荷が高くならないようにすることができる。
ストレージコントローラ100は、エクステント毎に、エクステントへのライトデータ量を計測する。例えば、SSDへのライトデータ量が多いと、ブロックの書き換えが頻繁に発生し、それに伴って消去回数が増加する。ブロックの消去回数が増加すると、そのブロックの消去回数が上限値に達して、そのブロックへのリード/ライトが不可能となる。そして、このようなブロックが増加したSSDは、使用不可能となる。そのため、ストレージコントローラ100が、ライトデータ量が多いエクステントを見つけ、そのエクステントに含まれるデータを、短寿命のSSDから、長寿命のSSDへ移動させる。エクステントが複数のSSDにまたがる場合も同様に、ライトデータ量が多いエクステント内のデータを、SSDグループ(複数のSSD)間で移動させられる。
これにより、ストレージコントローラ100の負荷を高くすることなく、SSD間で消去回数を平準化することができる。
また、短寿命のSSDにおけるライトデータ量が多いエクステントのデータと、長寿命のSSDにおけるライトデータ量が少ないエクステントのデータを交換することで、短寿命のSSDの劣化速度を抑制することができる。
以下、本実施形態を詳細に説明する。
図1は、第1実施例に係るストレージ装置10を含むストレージシステム10000の構成例を示す図である。
ストレージシステム10000は、ストレージ装置10、及びホスト計算機30を備える。
ホスト計算機30は、ストレージ装置10を利用する上位装置の一例である。ホスト計算機30は、例えばアプリケーションサーバである。ホスト計算機30とストレージ装置10は、SAN(Storage Area Network)20を経由して通信する。SAN20として、例えば、ファイバチャネル、SCSI(Small Computer System Interface)、iSCSI(internet Small Computer System Interface)、USB(Universal Serial Bus)、IEEE1394バス、SAS(Serial Attached SCSI)等を用いることが可能である。SAN20に代えて、他種の通信ネットワーク(例えばLAN(Local Area Network))が採用されても良い。なお、図では、ホスト計算機30及びストレージ装置10がそれぞれ1つであるが、それらのうちの少なくとも一方は複数でも良い。
ホスト計算機30は、ストレージ装置10に対して制御コマンド等を発行する制御ソフトウェア(図示省略)を実行することにより、制御コマンド等をストレージ装置10に発行する。その制御コマンドがストレージ装置10で実行されることにより、ストレージ装置10が有するRAIDグループのRAIDレベルの変更等を行うことができる。なお、RAIDグループは、複数のSSD(又はHDD)で構成され所定のRAIDレベルに従いデータを記憶する物理記憶媒体グループである。ストレージ装置10に対して制御コマンドを発行する計算機として、ホスト計算機30とは別の計算機が使用されも良い。
ストレージ装置10は、ストレージコントローラ100と、ストレージコントローラ100に接続されたDisk Box110とを有する。
ストレージコントローラ100は、ストレージ装置10の動作を制御する。ストレージコントローラ100は、通信インタフェースデバイスと、メモリと、それらに接続された制御デバイスとを有する。通信インタフェースデバイスとして、フロントエンドの通信インタフェースデバイスであるHost I/F101と、バックエンドの通信インタフェースデバイスであるDisk I/F107がある。メモリとして、キャッシュメモリ103がある。制御デバイスとして、プロセッサ(例えばCPU(Central Processing Unit))104がある。Host I/F101と、キャッシュメモリ103と、プロセッサ104と、Disk I/F107は、例えばPCI(Peripheral Component Interconnect)のような専用の接続バスで、内部ネットワーク102に接続されており、内部ネットワーク102を介して通信可能である。キャッシュメモリ103は、例えばDDR3(Double Data Rate3)のような専用の接続バスで、内部ネットワーク102に接続されている。
Host I/F101は、ストレージ装置10がSAN20と接続するためのインタフェースである。
内部ネットワーク102は、ストレージ装置10の内部に存在するデバイス同士を接続するためのネットワークである。内部ネットワーク102は、スイッチを含む。内部ネットワーク102に代えて、スイッチ機能やDMA転送、RAID演算等のアシスト機能を有するASICs(Application Specific Integrated Circuit)を用いても良い。
プロセッサ104は、ストレージ装置10の全体を制御する。プロセッサ104は、複数存在する。この場合、複数のプロセッサ104が協同または分担してストレージ装置10を制御することもできる。
キャッシュメモリ103は、プロセッサ104がストレージ装置10を制御するために必要なコンピュータプログラムやデータを記憶する領域である。
Disk I/F107は、ストレージコントローラ100とDisk Box110とを接続するためのインタフェースである。
Disk Box110は、種類の異なるDisk(例えば、HDD111、SSD700といった不揮発物理記憶媒体)を複数台備えている。種類の同じDiskでRAIDグループが構成される。そして、各RAIDグループから、ユーザデータの格納空間としての論理ボリュームが提供される。なお、図では、Disk Box110を構成するDiskとして、HDD111及びSSD700が示されているが、HDD111が無くても良い。
図11は、SSD700の構成例を示す図である。
SSD700は、複数のフラッシュメモリとそれらに接続されたSSDコントローラ710とを有する。SSDコントローラ710は、SSD700の動作を制御する。
SSDコントローラ710は、通信インタフェースデバイスと、メモリと、それらに接続された制御デバイスとを有する。通信インタフェースデバイスとして、フロントエンドの通信インタフェースデバイスであるDisk I/F711と、バックエンドの通信インタフェースデバイスであるFlash I/F717がある。メモリとして、キャッシュメモリ716がある。制御デバイスとして、プロセッサ713がある。Disk I/F711と、プロセッサ713と、キャッシュメモリ716と、Flash I/F717は、内部ネットワーク712を介してそれぞれ接続されている。
Disk I/F711は、ストレージコントローラ100のDisk I/F107と専用の接続バスで接続されている。内部ネットワーク712は、デバイス同士を接続するためのネットワークである。内部ネットワーク712は、スイッチを含んでもよい。スイッチ機能を有したASICsで代用しても良い。プロセッサ713は、SSD700全体を制御する。キャッシュメモリ716は、プロセッサ713がSSD700を制御するために必要なコンピュータプログラムやデータを記憶する領域である。Flash I/F717は、SSDコントローラ710とフラッシュメモリ780とを接続するためのインタフェースである。
本実施例において、SSDは、複数のフラッシュメモリと、それらを制御するコントローラとを備える記憶媒体であり、外観形状等がフォームファクタに限定されるものではない。
図12は、フラッシュメモリ780の構成例を示す図である。
フラッシュメモリ780は、複数のブロック782と、それらに接続されたフラッシュメモリコントローラ781とを有する。フラッシュメモリコントローラ(以下、フラッシュコントローラ)781は、フラッシュメモリ780を制御する。各ブロック782は、複数のページ783より構成される。フラッシュメモリ780からのデータのリード、及びフラッシュメモリ780へのデータのライトは、ページ単位で実行される。データ消去は、ブロック単位で実行される。
フラッシュメモリ780は、例えば、NAND型のフラッシュメモリである。NAND型のフラッシュメモリでは、データを上書きすることができない。そのため、データがライトされているページに新たなデータをライトする際は、データを消去し、データが消去された消去済みのページに対してライトする。
SSDコントローラ710は、SSD700内の複数のブロック782に対して、消去回数の平準化を行う。SSDコントローラ710は、更新頻度が小さいデータを消去回数の多いブロックに格納し、更新頻度が大きいデータを消去回数の少ないブロックに格納することで、SSD700内のブロックの消去回数を平準化する。
また、SSDコントローラ710は、消去回数の少ない空きブロックを選択してデータを格納することで、消去回数の平準化を行ってもよい。この際、複数のブロックを消去回数に応じて複数のグループに分けて、消去回数が少ないグループからブロックを選択することとしてもよい。
SSD内の複数のブロックの消去回数が平準化されることで、SSDの長寿命化が達成される。
図13は、SSDのアドレス空間の構成例を示す図である。
SSD700に関して、論理アドレス空間900と物理アドレス空間800とが存在する。論理アドレス空間900は、SSD700がストレージコントローラ100に対して提供している一意なアドレス空間である。一方、物理アドレス空間800は、実際のデータが格納されるアドレス空間である。SSDコントローラ710は、論理アドレス空間900を構成するアドレス範囲(領域)と物理アドレス空間800を構成するアドレス範囲(領域)とのマッピングを動的に変更することで、WL等を実現することができる。
なお、論理アドレス空間900と物理アドレス空間800との対応は、プロセッサ713が後述の論物変換テーブル23100を用いて管理している。本実施例では、ストレージコントローラ100は、直接SSD内の論物変換テーブルを管理していない。ゆえに、プロセッサ713がストレージコントローラ100に対して、SSD内部情報の通知を行わない限り、ストレージコントローラ100は、論理アドレス空間900と物理アドレス空間800との対応関係を把握することはできない。
また、本実施例では、SSD700は、ブロックの集合体をチャンクとして管理している。図13では、ブロック811〜814でチャンク810が形成され、ブロック821〜824でチャンク820が形成され、ブロック831〜834でチャンク830が形成されている。また、チャンク810が論理アドレス(LBA)空間#a901を提供し、チャンク820が論理アドレス(LBA)空間#b902を提供し、チャンク830が論理アドレス(LBA)空間#c903を提供している。
次に、容量仮想化技術について説明する。
容量の仮想化技術(例えば、Thin Provisioning)とは、ストレージ装置10が有している物理的な容量より大きな仮想的な容量をホスト計算機30側に提供する技術である。ホスト計算機30は、仮想的な論理ボリューム(仮想ボリューム)に対してアクセスする。容量の仮想化技術では、ストレージ装置10がライト要求を受けた場合に、ライト要求のデータのライト先の仮想的な記憶領域(仮想エクステント)に、物理的な記憶領域が割り当てられる。本実施例では、容量仮想化技術において割り当てられる物理的な記憶領域の単位をエクステント単位とする。また、エクステントのサイズは、数MBから数GBと多様性に富んでいて良い。
図2を用いて、容量仮想化技術を詳細に説明する。同一種類のDisk(例えばSSD)でRAIDグループ(RG)が構成されている。1以上のRGを基にPool Volume500が構成されている。
エクステントは、Pool Volume500を分割することにより得られた記憶領域、つまり、Pool Volume500の一部である。図では、Pool Volume500は、RG200、RG300及びRG400の3つのRGに基づいて構成されている。以下、RG200について説明する。
RG200は、Disk1 210、Disk2 220、Disk3 230より構成されている。さらに、RG200は、RAID5を構築しており、Data(図では、D)及びParity(図では、P)がDisk(210〜230)に基づくストライプ列に格納される。ここで、「ストライプ列」とは、同一のRGを構成する複数のDiskの同じアドレス領域で構成された記憶領域である。つまり、ストライプ列は、同一のRGを構成する複数のDiskにまたがっている。ストライプ列に、Data及びParityのセットが格納される。図中では、例えば、D211、D221、P231は1つのストライプ列250に格納される。データ移動などにより、同一ストライプ列の同一のDataもしくはParityが、同一のDiskに2つ以上存在してしまうと、RAIDの冗長性が低下する。従って、デバイス間WLが行われた結果として、1つのストライプ列に格納されていたDataもしくはParityが同一のDiskに2つ以上存在しない様に、ストレージコントローラ100が、データの格納先を制御する。
RGに基づく記憶領域が複数のエクステントに分割される。RGに基づく記憶領域は、複数のSSDによって提供される論理アドレス空間900からなる。
次に、エクステントの構成について説明する。例えば、各エクステントは、1以上のストライプ列で構成される。
図2では、RG200から、エクステント240、エクステント241及びエクステント242が作成されている。RG300の記憶領域から、エクステント301、エクステント302及びエクステント303が作成されている。RG400の記憶領域から、エクステント401、エクステント402及びエクステント403が作成されている。そして、エクステント240は、2つのストライプ列、すなわち、Data214、Parity224及びData234が格納されたストライプ列と、Parity215、Data225及びData235が格納されたストライプ列とから構成されている。なお、エクステント301、401も同様にして、RG300、400から作成される。
エクステントは、ブロックよりもサイズが大きい記憶領域である。エクステントのサイズは、例えば、ブロックのN倍(Nは2以上の整数)である。また後述のChunkは、複数のエクステントの集合である。
仮想ボリューム600は、ホスト計算機30がユーザデータを格納するための仮想的な論理ボリュームである。なお、仮想ボリューム600の容量として定義される容量は、ストレージ装置10が有する記憶媒体の容量の合計よりも大きな記憶容量とすることができる。なお、仮想ボリューム600は任意の数の仮想エクステント601から607によって構成されており、例えば、図2に示す1つの仮想エクステントに、1つのエクステントが対応付けられているが、1つの仮想エクステントに、複数のエクステントが対応付けられても良い。仮想ボリューム600は、仮想アドレス(仮想ボリュームを構成する論理アドレス)を有し、仮想アドレスを所定の範囲に区切って仮想エクステントが構成される。
また、実線で示されている仮想エクステント601〜604は、RG200、300、400からエクステントが割当てられている仮想エクステントである。すなわち、仮想エクステント601に対してはエクステント301が、仮想エクステント602に対してはエクステント242が、仮想エクステント603に対してはエクステント402が、仮想エクステント604に対してはエクステント240がそれぞれ割当てられている。
なお、点線で示されている仮想エクステント605〜607は、データのライト先として指定されたアドレスが属している仮想エクステントではないため、仮想エクステント605〜607にはエクステントは未割当てとなっている。
図38は、デバイス間WLと仮想ボリュームの関係の一例を示す図である。
SSD間でデータが移動されると、ホスト計算機30は、データへのアクセス先を移動先のSSDへ変更しなければならない。しかし、仮想ボリューム600を用いてアドレスが変換されることで、ホスト計算機30は、アクセス先を変更することなく、移動先のデータへアクセスできる。つまり、仮想エクステント610の仮想アドレスとの関連付けが、ストレージコントローラ100によって、移動元のエクステント70の論理アドレスから、移動先のエクステント80の論理アドレスへ変更される。ホスト計算機30は、仮想ボリューム600にアクセスすることで、アクセス先のアドレスを変更することなく、デバイス間WLを行うことができる。
アドレス変換に仮想ボリュームを用いるのは一例であり、仮想ボリュームを用いずにアドレス変換が行われてもよい。
図3は、ストレージコントローラ100が備えるキャッシュメモリ103の構成例を示す図である。
キャッシュメモリ103は、Program Area12000、Table Area13000及びData Cache Area14000を有する。Program Area12000及びTable Area13000は、ストレージ装置10を制御するためのプログラムや各種テーブルが格納される領域である。Data Cache Area14000は、ユーザデータを一時的に格納するために使用される領域である。
Program Area12000は、Write I/O Program12100、Read I/O Program12200、寿命管理Program12300、SSD情報取得Program12400及びSSD間WL Program12500を記憶する。
Write I/O Program12100は、ホスト計算機30からのライト要求を処理するプログラムである。Read I/O Program12200は、ホスト計算機30からのリード要求を処理するプログラムである。寿命管理Program12300は、プロセッサ104がSSD700などの各種Diskの寿命を管理するためのプログラムである。SSD情報取得Program12400は、SSD700の内部情報を取得するためのプログラムである。SSD間WL Program12500は、デバイス間WLを実行するためのプログラムである。
Table Area13000は、Disk管理Table(以下、TableをTBLと言う)13100、RG管理TBL13200、Pool管理TBL13300、エクステント管理TBL13400、仮想ボリューム管理TBL13500、統計情報管理TBL13600、FM(Flash Memory)ライト量予想TBL13700及びWA情報格納TBL13800を有する。
Disk管理TBL13100は、Disk Box110に格納されているDiskに関する情報を格納するテーブルである。RG管理TBL13200は、RAIDグループに関する情報を格納するテーブルである。Pool管理TBL13300は、Pool Volumeの情報を格納するテーブルである。エクステント管理TBL13400は、エクステントに関する情報を格納するテーブルである。仮想ボリューム管理TBL13500は、仮想ボリュームに関する情報を格納するテーブルである。統計情報管理TBL13600は、ストレージ装置10の性能に関する各種情報を格納するテーブルである。FMライト量予想TBL13700は、SSD内部のデータ書き込み量を予想する際に使用するテーブルである。WA情報格納TBL13800は、SSDに対するライトIOパターン等に基づいて、SSD内部の処理によって増加するライトデータ量の比率の予想値を格納するテーブルである。
Data Cache Area14000には、ライト要求及びリード要求に従うユーザデータ14100が一時記憶される。ユーザデータ14100は、ホスト計算機30が使用するデータである。
図4は、Disk管理TBL13100の構成例を示す図である。
Disk管理TBL13100で管理される情報は、主に各Diskの寿命を判断するために用いられる。Disk管理TBL13100は、Disk毎に、Disk#13101、Disk Type13102、情報更新日13103、残保証期間13104、総Write量13105、残消去回数13106及び残寿命期間13107を有する。
Disk#13101は、Diskの識別子であり、ユニークな番号である。Disk Type13102は、Diskの種別を表しており、例えば、SSD(SLC)、SSD(MLC)、HDDなどを表す。ここで、使用するNANDフラッシュメモリの種類により、SLC(Single Level Cell)タイプと、MLC(Multi Level Cell)タイプの2種類が存在する。SLCは、高速、長寿命、低容量なフラッシュメモリであり、数十万から数万回オーダーのブロック消去が可能である。一方のMLCは、低速、短寿命、及び大容量なフラッシュメモリであり、数万から数千回オーダーのブロック消去が可能である。
情報更新日13103は、Diskに関する情報が更新された最近の日付(例えば、寿命情報等を更新した日付)を表す。ここでは、情報更新日13103は、日数で示されている。残保証期間13104は、ベンダが定めるDiskの保証期間があとどれだけ残っているかを示す。
ここで、Diskの保証期間とは、Diskが正常に動作することが保証された期間(例えば、5年)である。フラッシュメモリは、データの書き込みによる消去回数の増加により劣化し、寿命に到達すると、データのリード/ライトが不可能、または、データ保持特性が著しく悪化する。よって、Diskを正常に使用可能な期間として、予め消去回数や総ライト量等に基づいて閾値が設定される。Diskの使用期間が保証期間を超えた場合は、そのDiskを交換することとなる。
総Write量13105は、SSDに発生したライト量(SSD内のフラッシュメモリに書き込まれたデータの量)の積算値であり、SSD内部情報を基に更新される。残消去回数13106は、SSDにおいて実行可能なブロック消去の回数に従う値を示す。ここでは、残消去回数13106は、パーセンテージで示されており、SSD内部情報を基に更新される。この数値がゼロになったとき、フラッシュメモリ内の全てのブロックの消去回数が上限に達したことを示す。
総Write量13105及び残消去回数13106として登録される情報は、SSDから取得される情報に含まれる。ストレージコントローラ100が各SSDから取得した情報を基に、総Write量13105及び残消去回数13106が更新される。これらの情報は、例えば、S.M.A.R.T.(Self-Monitoring Analysis and Reporting Technology)等の汎用インターフェースを用いて取得される。
残寿命期間13107は、SSDの残消去回数13106がゼロに到達するまので残りの期間を示す。残寿命期間13107は、プロセッサ104(寿命管理Program12300)が予想した数値である。ここでは、残寿命期間13107は、日数として示されている。
ここで、残寿命期間13107が残保証期間13104を下回るということは、例えばI/Oのばらつきなどにより、特定のSSDに負荷が集中することで、当該SSDがベンダの想定よりも高負荷な状態となってしまい、ベンダが保証する使用期限よりも前に、SSDが寿命に到達するということを意味している。SSD間でデバイス間WLが行われることで、特定のSSDへのライトの集中を回避することができ、SSDの長寿命化が図られる。
また、残寿命期間13107は、情報更新日時13103、総Write量13105、及び消去回数13106等を基に算出することができる。残寿命期間の算出方法については後述する。
また、Disk管理TBL13100は、おもにDiskの寿命管理に関連する情報を格納している。そのため、書換え回数に制約のないDisk(例えば、HDD)については、総Write量13105から残寿命期間13107の情報は、プロセッサ104による取得対象でなくて良い。
図5は、RG管理テーブル13200の構成例を示す図である。
RG管理TBL13200は、RG毎に、RG#13201、Disk Type13202、RAID Level13203、RAID構成13204及びDisk#13205を有する。
RG#13201は、RGの識別子であり、ユニークな番号である。Disk Type13202は、RGを構成するDiskの種別を表す。RGは、同一種類のDiskから構成される。
RAID Level13203は、RGのRAIDレベルを表し、例えば、RAID 1+0、1、3、4、5、6といった種々の値である。RAID構成13204は、RAIDを構成するデータDisk(データを格納するDisk)の数、及びパリティDisk(パリティを格納するDisk)の数を表す。Disk#13205は、RGを構成するDiskの番号を表し、RAID構成13204の数値と等しい数の有効な数値を含む。
図6は、Pool管理TBL13300の構成例を示す図である。
Pool管理TBL13300は、Pool毎に、Pool#13301、RG#13302、RG残容量13303及びPool残容量13304を有する。
Pool#13301は、Poolの識別子であり、ユニークな番号である。RG#13302は、Poolを構成する全てのRGのRG番号を表す。RG残容量13303は、RGごとの残容量を表す。Pool残容量13304は、Poolの残容量を表し、Poolを構成するRGのRG残容量13303の合計値に等しい。また、RG残容量13303及びPool残容量13304は、仮想ボリュームのエクステント未割当領域にデータの書き込みが発生した際に減少し、プロセッサ104(Write I/O Program12100)により減少した値に更新される。
図7は、エクステント管理TBL13400の構成例を示す図である。
エクステント管理TBL13400は、エクステント毎に、エクステント#13401、RG#13402、Size13403、Disk Type13404、Disk#13405、Stripe#13406、Start―LBA13407、Last―LBA13408及び割当てフラグ13409を有する。
エクステント#13401は、エクステントの識別子であり、ユニークな番号である。RG#13402は、エクステントの基になっているRGの番号を示す。Size13403は、エクステントの容量を示す。ここでは、Size13403の単位は、Byteである。
Disk Type13404は、エクステントの基になっているRGに含まれるDiskの種別を示す。
Disk#13405、Stripe#13406、Start―LBA13407及びLast―LBA13408は「当該エクステントが、どのDiskに基づいて作成されているのか」、「当該エクステントが、Diskを構成するどのストライプ列に基づいて作成されているのか」、及び「当該エクステントが、ストライプ列の何番のLBAから何番のLBAまでの物理空間を使用して作成されているか」を示す。
割当てフラグ13409は、当該エクステントが仮想ボリュームに既に割当済みであるか否かを示すものである。ここでは、割当て済みのエクステントのフラグ13409は「済」であり、未割当てのエクステントのフラグ13409は「未」である。
図8は、仮想ボリューム管理TBL13500の構成例を示す図である。
仮想ボリューム管理TBL13500は、仮想ボリューム毎に、仮想ボリューム#13501、仮想容量13502、実使用容量13503、仮想エクステント#13504及び割当中エクステント#13505を有する。
仮想ボリューム#13501は、仮想ボリュームの識別子であり、ユニークな番号である。仮想容量13502は、仮想ボリュームの仮想的な容量である。この仮想的な容量がホスト計算機30に提供される。実使用容量13503は、仮想ボリュームに実際に割当てられているエクステントの容量の合計値である。
仮想エクステント#13504は、仮想ボリュームに含まれる仮想エクステントの識別子である。仮想ボリューム#0には、仮想エクステント#0〜nが含まれることを示す。
割当中エクステント#13505は、仮想ボリュームに割り当てられているエクステントの識別子(番号)である。ストレージコントローラ100は、エクステントの割当て状態を管理する。つまり、仮想エクステント#0には、エクステント#0が割当てられており、仮想エクステント#1には、エクステント#100が割当てられている。ただし、エクステントが未割当ての仮想エクステントの割当中エクステント#13505が「―」となる。つまり、仮想エクステント#nには、物理的な記憶領域であるエクステントが割当てられていない。
図9は、統計情報管理TBL13600の構成例を示す図である。
統計情報管理TBL13600は、各エクステントへのリード/ライト等のアクセス状況に関する情報である。ストレージコントローラ100が、各エクステントへのリード/ライト状況を監視して、統計情報管理TBL13600を構成する。
統計情報管理TBL13600は、Disk毎に、Disk#13601、エクステント#13602、WR(Writeの略) IOPS(Input Output Per Second)13603、RD(Readの略) IOPS13604、平均WR I/O Size13605、WR I/O Pattern13606、WR比率13607、WR量13608及びRD量13609を有している。以下、情報13601〜13609の少なくとも1つをそれぞれ統計情報と呼ぶ場合がある。
Disk#13601は、Diskの識別子であり、ユニークな番号である。エクステント#13602は、Diskに基づくエクステントの識別子であり、ユニークな番号である。
WR IOPS13603及びRD IOPS13604は、Diskのアドレス範囲のうちエクステントに対応するアドレス範囲に発生したWR(ライト) I/O及びRD(リード) I/Oの発生頻度を示す。ここでは、IOPSは、Input/Output Per Secondの略である。
平均WR I/O Size13605は、ホスト計算機30からのWR I/O要求に付随するデータの平均サイズを示す。
WR I/O Pattern13606は、WR I/Oがランダムパターン(RND)なのか、シーケンシャルパターン(SEQ)なのかを示している。WR比率13607は、全I/Oに対するライトI/Oの割合を示している。WR量13608及びRD量13609は、エクステントに発生したWRデータ(Diskのアドレス範囲のうちエクステントに対応するアドレス範囲が書込み先とされたデータ)の総量及びRDデータ(Diskのアドレス範囲のうちエクステントに対応するアドレス範囲が読出し元とされたデータ)の総量を示している。
また、エクステントが複数のDiskにまたがる場合は、エクステントのIOPS等の値は、ディスク毎に管理されている値の合計または平均値として、算出できる。
図9では、Diskごとの統計情報が管理されている場合を示しているが、RGごとに統計情報が管理されてもよい。RG毎に統計情報を取得する場合、複数のDiskにまたがるエクステントは、Diskを区別せずに統計情報を取得できる。
本実施例では、統計情報の監視をエクステント単位とすることで、フラッシュメモリのブロックやページ単位で監視するよりも、監視負荷を低減することができる。
ストレージコントローラ100は、仮想ボリューム管理TBL13500に基づいて、割り当て中のエクステントについて、アクセス状況を監視する。統計情報は、仮想ボリュームにエクステントが割当てられた後からの累積値、及びリード/ライトの傾向である。なお、統計情報は、単位時間当たりの累積値としてもよい。
また、デバイス間WLの要否判断のタイミングに応じて、要否判断対象のエクステントの統計情報は、リセットされてよい。例えば、ストレージコントローラ100は、デバイス間WLで移動されたエクステントに関する統計情報のみをリセットしてもよい。
図10は、本実施例におけるFM WR量予想TBL13700の構成例を示す図である。
FM WR量予想TBL13700は、統計情報管理TBL13600を基に構成される。FM WR量予想TBL13700は、Disk毎に、Disk#13701、エクステント#13702、WR量13706、及びFM WR予想量13708を有している。
Disk#13701は、Diskの識別子であり、ユニークな番号である。エクステント#13702は、エクステントの識別子であり、ユニークな番号である。なお、ここで言う「エクステント」は、エクステントがRGを構成する複数のSSDにまたがっている場合、正確には、エクステントの一部分を意味する。
WR量13706は、Diskのアドレス範囲のうちエクステントに対応するアドレス範囲を書込み先としたWRデータの総量を示している。
FM WR予想量13708は、フラッシュメモリに実際に書き込まれるデータの予想量を示している。
本実施例では、エクステント(又はエクステント部分)についてのWR量13706が、Disk(SSD)における、そのエクステントに対応した領域についての、実WR量とみなす。例えば、或るエクステントへのライトデータ量が多いと、そのエクステントの基になっているSSDにおいてにブロックに対するデータの書き換えが頻繁に発生し、ブロックの消去回数が増加する。ブロックの消去回数が増加すると、そのブロックを有するSSDの寿命が短くなるからである。そのため、デバイス間WLを行う際に、エクステントへのライトデータ量を基に、移動対象のエクステントを決めることで、精度の高いデバイス間WLを行うことができる。
図14は、SSD700におけるキャッシュメモリ716の構成例を示す図である。
キャッシュメモリ716は、Program Area22000、Table Area23000、及びData Cache Area24000を有する。
Program Area22000及びTable Area23000は、SSD700を制御するためのプログラムや各種テーブルが格納される領域である。Data Cache Area24000は、ユーザデータを一時的に格納するために使用される領域である。
Program Area22000は、Write I/O Program22100、Read I/O Program22200、SSD内WL Program22300、空き容量生成Program22400、及びSSD内部情報通信Program22500を有する。
Write I/O Program22100は、ストレージコントローラ100からのライト要求を処理するプログラムである。Read I/O Program22200は、ストレージコントローラ100からのリード要求を処理するプログラムである。SSD内WL Program22300は、SSD内部でのWLを実行するためのプログラムである。空き容量生成Program22400は、SSD700の空き容量の枯渇を回避するために行われるリクラメーション処理を実行するプログラムである。
SSD内部情報通信Program22500は、ストレージコントローラ100の要求に従ってSSDの内部情報を作成し、そのSSD内部情報をストレージコントローラ100に通知するためのプログラムである。
Table Area23000は、論物変換TBL23100、統計情報管理TBL23200を有する。
論物変換TBL23100は、SSD700の論理アドレス空間と物理アドレス空間との対応を管理するためのテーブルである。統計情報管理TBL23200は、SSDの統計情報を管理するためのテーブルである。
Data Cache Area24000は、ユーザデータ24100を格納する領域を有する。ここで言うユーザデータ24100は、ブロックに書き込まれるデータ及びブロックから読み出されたデータである。
図15は、論物変換TBL23100の構成例を示す図である。
論物変換テーブル23100は、Start−LBA23100、Chunk#23102、Block#23103、及びPage#23104を有する。
Start−LBA23100は、ストレージコントローラ100に提供するLBAの開始位置を示す。なお、フラッシュメモリのI/O単位はページであるため、Start−LBA23100の数値はページサイズの倍数で管理されている。Chunk#23102、Block#23103、Page#23104は、Start−LBA23100に対応する物理アドレス空間の情報を示している。論物変換TBL23100は、各Start−LBA23100に対応付けられているチャンク、ブロック、及びページに関する情報を有する。
図16は、SSD内の統計情報管理TBL23200の構成例を示す図である。
統計情報管理TBL23200が有する情報は、ストレージコントローラ100に通知される。統計情報管理TBL23200は、SSD単位の情報23210、Chunk単位の情報23220を有している。
統計情報管理TBL23200は、SSD単位の情報23210またはChunk(複数のエクステントの集合)単位の情報23220のうち、少なくとも1つを有していれば良い。本実施例では、統計情報管理TBL23200は、SSD単位の情報23210を有する。
SSD単位の情報23210は、SSD#23211、WR量23212及び残消去回数23213を有している。
SSD#23211は、SSDの識別子を示す。WR量23212は、SSDにライトされたデータの総量を示す。残消去回数23213は、SSDについての寿命までの残りの消去回数を示す。残消去回数23213は、SSDが有するブロックの残消去回数に基づく値(例えば合計)である。
Chunk単位の情報23220は、Chunk#23221、WR量23222及び残消去回数23223を有している。
Chunk#23221は、Chunkの識別子を示す。WR量23222は、Chunkにライトされたデータの総量を示す。残消去回数23223は、Chunkについての残りの消去回数を示す。残消去回数23223は、Chunkを構成するブロックの残消去回数に基づく値(例えば合計)である。
SSDから送信される情報としては、SSD単位の情報23210またはChunk単位の情報23220いずれかとなる。
また、本テーブル23200の数値は、データのライトや消去が発生した際に更新される(例えば、加算される)。なお、本テーブル23200には、ライトに関する情報だけを格納するのではなく、リードに関する情報も格納されて良い。
図17は、SSD内部情報25000の構成例を示す図である。
SSD内部情報25000は、SSDから送信される情報である。SSD内部情報25000は、例えば、アドレス情報25100と統計情報25200とを有している。
アドレス情報25100は、論物変換TBL23100を基に作成された情報である。論物変換TBL23100は、例えば、ストレージコントローラ100に論理アドレスと物理アドレスとの対応状況を通知するためのものである。論物変換TBL23100は、具体的には、例えば、或るLBAが対応しているChunkを示す情報である。
本実施例の場合、SSD単位の情報23210に基づき処理が行われるので、SSDコントローラ710からストレージコントローラ100に対して、SSDアドレス情報25100は通知されない。後述の実施例3では、アドレス情報25100がSSDコントローラ710からストレージコントローラ100に対して通知される。
統計情報25200は、統計情報管理TBL23200を基に作成された情報である。統計情報25200(図16参照)は、例えば、ストレージコントローラ100に各SSDの寿命に関する情報などを作成させるための情報である。具体的には、例えば、統計情報25200には、SSDに書き込まれたデータ量や、消去可能回数の残数などが含まれている。
また、SSD内部情報25000に含まれる情報の量は、SSD単位やChunk単位等の通知粒度(統計情報管理TBL23200を参照)によって変化する。SSD単位のほうが、Chunk単位より情報の量は少ない。このため、SSD単位の方が通信のオーバヘッドは小さくなる。一方、SSDがChunk単位でストレージコントローラに情報を通知する場合、SSD内の複数のChunkについて情報を転送する必要があるが、ストレージコントローラは、より詳細に内部情報を把握してデバイス間WLを実行することができる。
上述の様に、本施例では、通知単位はSSD単位とする。また、本実施例では、アドレス情報25100は含まず、統計情報25200は、統計情報管理TBL23200のSSD単位の情報23210のみを有するとする。
また、SSDコントローラ710が、SSD内部情報25000として、ストレージコントローラに通知する情報としては、上述の様に、ストレージコントローラ100に各SSDの寿命に関する情報などを作成せるためのもの情報の他に、SSDコントローラ710自身が作成した各SSDの寿命に関する情報も含めても良い。
SSDは、SSD単位やChunk単位等、複数の粒度で情報を管理し、通知される情報の粒度を変更することもできる。
図18は、ホスト計算機30からライト要求が送信されそのライト要求の処理が完了するまでの処理の流れの一例を示すシーケンス図である。
ホスト計算機30は、ライトデータ及びライト要求をストレージコントローラ100に送信する(S100)。
ストレージコントローラ100は、ライトデータ及びライト要求を受信し、ライト要求が表すライト先範囲(仮想ボリュームについてのアドレス範囲)にエクステントが割当済みか否かを、仮想ボリューム管理テーブル13500を基に判断する(S101)。なお、ストレージコントローラ100は、ライト要求を受信したことを契機として、ライト要求が表すライト先範囲にエクステントを割当てることもできる。判断の結果、エクステントが未割当であれば(S101:No)、ストレージコントローラ100は、未割当てのエクステントを見つけて、そのエクステントをライト先範囲の仮想エクステントに割り当て(S102)、受信したデータをキャッシュメモリ103に格納する(S103)。ストレージコントローラ100は、キャッシュメモリ103からSSDにデータを転送する際に、エクステントを割当ててもよい。
一方、S101の判断の結果、エクステントが既に割当済みである場合(S101:Yes)は、ストレージコントローラ100は、S103に進む。
次に、ストレージコントローラ100は、データの格納先となるSSD700のSSDコントローラ710に、キャッシュメモリ103に記憶されたデータとそれのライト要求とを送信する(S104)。
SSDコントローラ710は、ストレージコントローラ100からデータ及びライト要求を受信し、論物変換TBL23100を基に、受信したデータの格納先のフラッシュメモリを決定し、決定したフラッシュメモリにそのデータを格納する(S105)。
その後、SSDコントローラ710は、受信したデータに関する統計情報管理TBL23200を更新する(S106)。SSDコントローラ710は、ストレージコントローラ100に対して、S105で受信したライト要求の応答として、転送の完了応答を送信する(S107)。
ストレージコントローラ100は、SSDコントローラ710から転送完了応答を受信し、統計情報管理TBL23200を更新する(S108)。
その後、ストレージコントローラ100は、ホスト計算機30に対して、S101で受信したライト要求の応答として、転送の完了応答を送信する(S109)。
ホスト計算機30は、ストレージコントローラ100から転送完了応答を受信し、一連の処理を終了する(S110)。
なお、ストレージコントローラ100は、データをキャッシュメモリ103に格納した時点で、ホスト計算機30に転送完了応答を送信し、その後、任意のタイミングで、キャッシュメモリ103からSSDに対してデータの転送を行っても良い。本処理は、ポストライン処理と呼ばれ、ストレージコントローラ100のライト処理性能を向上させる1つの手段として知られている。
また、図18において、ストレージコントローラ100の動作は、Write I/O Program12100が実行されることにより行われた動作であり、SSDコントローラ710の動作は、Write I/O Program22100が実行されることにより行われた動作である。
図19は、ホスト計算機30からリード要求が送信されそのリード要求の処理が完了するまでの処理の流れの一例を示すシーケンス図である。
ホスト計算機30は、ストレージコントローラ100に対して、データのリード要求を送信する(S200)。
ストレージコントローラ100は、データのリード要求を受信し、そのリード要求に従うリード元範囲(仮想ボリュームのアドレス範囲)に割り当てられているエクステントの基になっているSSDを特定し、特定されたSSDのSSDコントローラ710に対して、データのリード要求を送信する(ステージング要求とも言う)(S201)。
SSDコントローラ710は、データのリード要求を受信し、論物変換TBL23100を基に、リード要求に従う論理アドレス範囲に対応する物理アドレス範囲を特定し、その物理アドレス範囲(1以上のページ)らデータを読み出し、読み出したデータをストレージコントローラ100に送信する(S202)。このとき、SSDコントローラ710は、統計情報管理TBL23200を更新する(S203)。
ストレージコントローラ100は、S201で送信したリード要求の応答として、SSDコントローラ710からデータを受信し、受信したデータをキャッシュメモリ103に格納し(S204)、統計情報管理TBL13600を更新する(S205)。その後、ストレージコントローラ100は、S204で格納されたデータをホスト計算機30に送信する(S206)。
ホスト計算機30は、S200で送信したリード要求の応答として、ストレージコントローラ100からデータを受信し、一連の処理を終了する(S207)。
なお、図19において、ストレージコントローラ100の動作は、Read I/O Program12200が実行されることにより行われた動作であり、SSDコントローラ710の動作は、Read I/O Program22200が実行されることにより行われた動作である。
図20は、デバイス間WL制御処理の流れの一例を示すシーケンス図である。
ストレージコントローラ100は、SSDコントローラ710に対して、内部情報25000(図17参照)の通知を要求し、その要求の応答として、SSD700の内部情報をSSDコントローラ710から受信する(S300)。
ストレージコントローラ100は、その内部情報を基に、Disk管理TBL13100を更新し、各SSDの残寿命を計算する(S301)。この残寿命を計算する方法については、図21を用いて後述する。
次に、ストレージコントローラ100は、デバイス間WLが必要か否かを判断する(S302)。これは、例えば、保証期間よりも先に寿命に到達するSSDがある(残保証期間13104よりも残寿命期間13107の方が少ない)か否か、もしくは、SSD間でライト量にばらつきがある(総ライト量13105が均一化されていない)か否かをチェックすることにより判断可能である。ストレージコントローラ100は、エクステントが複数のSSDにまたがる場合、その複数のSSDの中に、一つ以上、保証期間よりも先に寿命に到達するSSDがあれば、デバイス間WLを行うこととしてもよい。
S302の判断の結果、デバイス間WL処理が必要な場合(S302:Yes)、ストレージコントローラ100は、S303に進み、ストレージコントローラ100の統計情報(13701〜13706)と、SSD700の内部情報(23211〜23213)を基に、エクステント毎にフラッシュメモリのライト量を予想する(S303:詳細は図22で説明)。
次に、S303での予想結果を基に、ストレージコントローラ100は、デバイス間WLを行う(S304:詳細は図22〜図32で説明)。その後、ストレージコントローラ100は、デバイス間WLで移動したデータを格納しているエクステントに関する情報(例えば、テーブルに格納されている情報)を更新する(S305)。その後、ストレージコントローラ100は、本処理を終了する。
一方、S302の判断の結果、デバイス間WL処理が不要な場合(S302:No)、ストレージコントローラ100は、そのまま本処理を終了する。
なお、本処理は、任意のタイミングで実行されても良い。一定の間隔(例えば一日おき)で実行しても良い。また、ホスト計算機30のI/O要求に連動させて実行されても良い。また、特定のコマンドを受け取ったタイミングで実行されても良い。更に、ホスト計算機30の制御ソフトウェアからユーザが本処理の実行契機を指示することで実行されても良い。
また、図20において、ストレージコントローラ100の動作は、SSD間WL Program12500が実行されることにより行われた動作である。
図21は、図20のS301(SSDの寿命予測)の概要説明図である。
残消去回数の減少速度から、寿命への到達時刻を予想する方法について説明する。SSDの寿命とは、SSDを実際に使用可能な期間とする。図中横軸は時間であり、縦軸は残消去回数である。或るSSDにライトが集中している場合、寿命が短くなる。従って、寿命の長い他のSSDが積極的に使用されるように、デバイス間WL(具体的には、エクステントに格納されているデータをSSD間で交換)を行う必要がある。本処理では、寿命の短い(寿命が閾値以下の)SSDを検出する。
図21において、t(前回)30000は、前回に寿命予測を行った時点であり、情報更新日時13103に格納されている値が表す時点である。また、EZ(前回)30003は、前回の寿命予測時における残消去回数であり、残消去回数13106に格納されている値が表す回数である。
次に、t(現在)30001は、今回の寿命予測を行う時点であり、EZ(現在)30002はその残消去回数であり、今回発行したSSD内部情報から取得できる値である。これらの情報を用いて、下記の数式、
傾き(I)=(EZ(現在)− EZ(前回))÷ (t(現在)− t(前回))
が計算される。これにより、傾き(I)3004が算出される。傾き(I)3004が大きいほど、残消去回数の減少速度が速い。
算出した傾き(I)30004と、現時点の残消去回数であるEZ(現在)30001を用いて、下記の数式、
t(寿命到達)=−(EZ(現在)÷傾き(I))
が計算される。これにより、残消去回数がゼロとなる時間、すなわち、寿命到達時間であるt(寿命到達)30005が算出される。残消去回数と減少速度から、残寿命期間が算出され、Disk管理TBL13100に格納される。
記憶媒体やストレージ装置として、所定の期間(保証期間、例えば5年)は使用し続け、データが保証されることが重要である。よって、保証期間を一つの指標としてデバイス間WLを実行することで、複数の記憶媒体(例えばSSD)を保証期間以上使用することができる。
また、SSDが寿命に到達するまでに書き込めるデータの全Write総量が分かっている場合は、縦軸を残消去回数に代えて、残Write量(全Write総量から総Write量13105を引いた値)が用いられても良い。
図22は、図20のS303(フラッシュメモリのライト量の予想)の流れの一例を示すシーケンス図である。
プロセッサ104は、統計情報管理TBL13600の情報を基に、FM WR量予想TBL13700に必要な統計情報である、エクステントへのWR量13706を取得する(S3031)。
次に、プロセッサ104は、取得したWR量13706をエクステントが属するSSD内のフラッシュメモリへのFM WR予想量とする(S3032)。
次に、図20のS304(デバイス間WL)の概要を説明する。
デバイス間WLとして、幾つかのパターン、例えば、以下のつの実行パターン(パタ
ーンA〜)がある。
パターンA:エクステント単位で、RG間でデータが移動される(図23)。
パターンB:エクステント単位で、RG間でデータが移動され、さらに、移動先のRGで、エクステント内のデータに基づく複数のデータ要素(データ(及びパリティ))の格納位置が最適化される(図25)。
パターンC:エクステント内の特定のデータ単位で、RG間でデータが移動される(図27)。
パターンD:エクステント内の特定のデータ単位で、RG内でデータが移動される(図28)。
パターンE:デバイスの性能特性に応じて、異なるデバイス間で、データが移動される(図30)。
パターンF:デバイスの寿命特性に応じて、データが移動される(図32)。
パターンA〜Cにおいて、RGは、2以上存在する事が条件となる。また、パターンDにおいては、RGは少なくとも1つあれば良い。また、パターンEおよびパターンFにおいては、Disk種別が異なるRGが2以上存在することが条件となる。
本実施例では、ライト負荷とは、FM WR予想量である。すなわち、高(低)ライト負荷とは、FM WR予想量が大きい(小さい)ことを意味する。
図23は、デバイス間WLの実行パターンAの概要説明図である。
パターンAでは、エクステント内のデータが異なるRG間で移動される。RG#n310は、SSD3110、SSD3120及びSSD3130より構成されており、RG#n310に基づくエクステント#3140がある。エクステント#3140には、SSD3110内のデータ3111、SSD3120内のデータ3121、及び、SSD3130内のデータ3131に基づくデータが格納されている。
RG#m410は、SSD4110、SSD4120及びSSD4130より構成されており、RG#m410に基づくエクステント#4140がある。エクステント#4140には、SSD4110内のデータ4111、SSD4120内のデータ4121、及び、SSD4130内のデータ4131に基づくデータが格納されている。
ここで、RG#m410は、短寿命のRAIDグループとする。例えば、RG#m410には、残寿命が閾値より小さいSSDが含まれる。つまり、短寿命のRAIDグループには、保証期間より短寿命のSSDが含まれる。このRAIDグループに含まれる複数のエクステントのうち、FM WR予想量が最も大きいエクステント(A)をデバイス間WLの対象とする。
RG#n310は、長寿命のRAIDグループとする。例えば、このRAIDグループに含まれるSSDは、いずれも残寿命が閾値より大きいとする。このようなRAIDグループに含まれる複数のエクステントのうち、FM WR予想量が最も小さいエクステント(B)をデバイス間WLの対象とする。
なお、いずれのRAIDグループの寿命が保証期間以内であっても、RAIDグループ間の寿命の乖離(各RAIDグループを構成するSSDの寿命の乖離)が所定値以上である場合に、ストレージコントローラ100が、デバイス間WLを実行することとしてもよい。
このように、RG#n310とRG#m410の残寿命に乖離がある場合に、デバイス間WLが実行される。
具体的には、例えば、エクステント#3140とエクステント#4140にそれぞれ格納されているデータが交換される。この交換により、残寿命の長いRG#n310にライト負荷の高いデータが格納され、残寿命の短いRG#m410に、ライト負荷の低いデータが格納される。
ここで、「データを交換」とは、例えば、ストレージコントローラ100が、下記処理を行うことを示す。
(*)データが格納されているエクステント#3140の論理アドレスの範囲及びデータが格納されているエクステント#4140の論理アドレスの範囲を、エクステント管理TBL13400を参照することにより特定する。
(*)特定した論理アドレス範囲を含むSSDに対してリード要求を発行し(具体的には、エクステント#3140の基になっているSSDとエクステント#4140の基になっているSSDとにリード要求を発行し)、SSDからデータを読出し、読み出したデータをキャッシュメモリ103に一時的に格納する。この際、リード要求を受信したSSDは、リード要求に含まれる論理アドレスと論物変換TBL23100に基づいて、データが格納されている物理ページを特定してデータを読み出し、ストレージコントローラに送信する。キャッシュメモリ103には、エクステント#3140に基づくSSDから読み出されたデータ(第1データ)、及び、エクステント#4140に基づくSSDから読み出されたデータ(第2データ)が一時的に格納される。
(*)エクステントの論理アドレスが含まれるSSDを特定し、そのSSDに、キャッシュメモリ103に一時的に格納された上記データのライト要求を発行する。具体的には、第1データのライト要求がエクステント#4140に基づくSSDに発行され、第2データのライト要求がエクステント#3140に基づくSSDに発行される。この結果、エクステント#3140からの第1データがエクステント#4140に格納され、エクステント#4140からの第2データがエクステント#3140に格納される。この際、ライト要求を受信したSSDは、論物変換TBL23100から空き物理ページを特定し、受信したデータを、特定した空き物理ページに書き込み、論物変換TBL23100を更新する。
以下、「データを交換」とは、上述の様に、2つのエクステントのそれぞれに格納されているデータをエクステント管理TBL13400で特定し、特定したデータをキャッシュメモリ103に一時的に格納し、格納したデータを読出元のエクステントとは異なる他方のエクステントに格納するように処理することを示す。
残寿命の短いRG#m410にライトデータ量の少ないエクステント#3140内のデータが格納されることにより、残寿命の短いRG#m410を構成するSSDへのライトデータ量が減少する。従って、残寿命の減少を抑えることができる。一方、残寿命の長いRG#n310にライトデータ量の多いエクステント#4140内のデータが格納されることにより、残寿命の長いRG#n310は、ライトデータ量が増大する。よって、このデータ交換より、RG#n310の残寿命とRG#m410の残寿命の乖離を縮めることができる。つまり、デバイス間での消去回数が平準化される。
パターンAでは、ストライプ列を維持したエクステント単位でのデータ移動となるため、入れ換えによるRAIDの冗長性低下は起こらない。
また、「データを交換」とは、具体的には、例えば、仮想ボリューム管理TBL13500の割当中エクステント#13505の割当て順序を変更したり、エクステント管理TBL13400の、Disk#13405、Stripe#13406、Start−LBA13407、及びLast−LBA13408の値を変更したりすることに等しい。
また、本処理は、上記の様に、エクステント#3140とエクステント#4140にそれぞれ格納されているデータを交換することにより、RG#n310とRG#m410の残寿命の乖離を縮めるため、SSD間でのデータ移動を行ったが、(低寿命且つ高ライト負荷の)エクステント#4140に格納されているデータを、データを格納していないエクステントに移動させることもできる。
図24は、デバイス間WLの実行パターンAの一例のシーケンス図である。
なお、以下の説明におけるシーケンス図では、ストレージコントローラ100が、エクステントに格納されているデータの交換指示をSSDコントローラ710に送信し、データの交換指示を受信したSSDコントローラ710は、データの交換指示に関連するデータをストレージコントローラ100に対して送信する。
プロセッサ104は、Disk管理TBL13100及びRG管理TBL13200に基づいて、デバイス間WLのデータ移動元となる短寿命のRGを選択する。ここで、短寿命のRGとは、RGに含まれる複数のSSDのうち、残寿命期間が所定の閾値以下(短寿命のSSDが1つ以上(2つ以上としてもよい)存在するRGとする。例えば、閾値は、保証期間に基づいて定められる。つまり、保証期間よりも早く、寿命に到達するSSDを含むRGを短寿命のRGとする。SSDが保証期間よりも前に、寿命に到達するということは、そのSSDにライトが集中していると考えられる。よって、このようなSSDから、ライト負荷の高いデータを移動させることで、SSDの長寿命化が可能となる。
短寿命のRGが複数ある場合は、いずれのRGもデバイス間WLの対象としてもよい。この場合、各RGの寿命を、各RGに含まれるSSDの中で最も短寿命のSSDの寿命として、より短寿命のRGから順にデバイス間WLを実行してもよい。また、保証期間より寿命が短いSSDの数が多いRGから順にデバイス間WLを実行してもよい。
プロセッサ104は、FM WR量予想TBL13700を参照し、短寿命のRGの中で、FM WR予想量が大きいエクステント(A1)を選択する(S30410)。
FM WR予想量が大きいエクステントとは、複数のエクステントの中で最もFM WR予想量が大きいエクステントとする。FM WR予想量が閾値以上のエクステントをグループ化し、その中から一つのエクステントを選択することとしてもよい。この場合、FM WR予想量が最も大きいエクステントを探索する必要がないため、処理時間が短縮される。
次に、プロセッサ104は、Disk管理TBL13100及びRG管理TBL13200に基づいて、長寿命のRGを選択する。ここで、長寿命のRGとは、RGに含まれる複数のSSDのうち、短寿命のSSDが存在しないRGとする。このようなRGが存在しない場合は、短寿命のSSDの数が少ないRGから順に長寿命のRGとしてもよい。
そして、プロセッサ104は、FM WR量予想TBL13700を参照し、長寿命のRGの中で、FM WR量が小さいエクステント(B1)を選択する(S30411)。
FM WR予想量が小さいエクステントとは、複数のエクステントの中で最もFM WR予想量が小さいエクステントとする。FM WR予想量が閾値以下のエクステントをグループ化し、その中から一つのエクステントを選択することとしてもよい。
そして、プロセッサ104は、エクステント(A1)のFM WR予想量がエクステント(B1)のFM WR予想量よりも大きいか否かを判断する(S30412)。
エクステント(B1)のFM WR予想量がエクステント(A1)より大きい場合、エクステント(B1)を残寿命が短いRGに移動すると、そのRGへのライトデータ量がさらに増加し、デバイス間で消去回数を平準化することにならない。よって、この判断により、不要なデータ移動をすることなく、適切にデバイス間で消去回数の平準化を行うことができる。
その判断の結果が肯定的(S30412:Yes)であれば、プロセッサ104は、エクステント(A1)内のデータとエクステント(B1)内のデータを交換し(S30413)、本処理を終了する。一方、S30412の判断の結果が否定的(S30412:No)であれば、プロセッサ104は、データ交換を中止し(S30414)、本処理を終了する。
図25は、デバイス間WLの実行パターンBの概要説明図である。
パターンBでは、エクステント単位で、RG間のデータ移動(データ交換)が行われ、さらに、エクステント内のデータ格納位置の最適化も行われる。RG間でデータが移動されても、エクステント内でデータ格納位置の最適化が図られるとは限らないからである。
RG#n320は、SSD3210、SSD3220及びSSD3230より構成されており、そのRG#n320に基づくエクステント#3240がある。エクステント#3240には、SSD3210内のデータ、SSD3220内のデータ、及び、SSD3230内のデータに基づくデータが格納されている。
RG#m420は、SSD4210、SSD4220及びSSD4230より構成されており、そのRG#m420に基づくエクステント#4240がある。エクステント#4240には、SSD4210内のデータ、SSD4220内のデータ、及び、SSD4230内のデータに基づくデータが格納されている。
RG#n320のエクステント#3240には、FM RW予想量が高い領域(3211及び3221)、及びFM WR予想量が中程度の領域(3231)が存在する。つまり、エクステント#3240には、FM WR予想量の異なる領域(エクステント部分)が存在する。1つのSSDに基づく論理アドレス範囲を「エクステント」と言うのであれば、「エクステント群#3240には、FM WR予想量の異なるエクステントが存在する」と言うこともできる。また、RG#n320は、短寿命のRAIDグループである。
一方、RG#m420のエクステント#4240には、FM WR予想量が低いデータ(4211、4221及び4231)が格納されている。しかし、RG#m420を構成するSSDの寿命はばらついている。具体的には、例えば、SSD4210とSSD4230が、長寿命(残消去回数が多い)であり、SSD4220は残寿命が中程度である。
すわなち、RG#n320とRG#m420の残寿命に乖離がある。そこで、RG#n320とRG#m420の残寿命の乖離を縮めるために、エクステント#3240及び#4240をデバイス間WLの対象とするWLをSSD間で行う。具体的には、下記が行われる。
(*)エクステント#3240とエクステント#4240にそれぞれ格納されているデータが交換される。具体的には、例えば、長寿命のRG#n320にFM WR予想量が多いデータが格納されるように、及び、短残寿RG#m420にFM WR予想量が少ないデータが格納されるようにする。このデータ交換により、RG#n320とRG#m420の残寿命の乖離を縮めることができる。
(*)RG#m420を構成するSSD間の残寿命のばらつきをも解消するように、エクステント#3240に格納されているデータに基づく複数のデータのうちの少なくとも2つのデータの格納先が、そのエクステント#3240において交換される。具体的には、例えば、残寿命が中程度のSSD4220に基づく領域に、FM WR予想量が中程度のデータ3231が格納され、長寿命のSSD4230に基づく領域に、FM WR予想量が多いデータ3221が格納される。つまり、エクステント#3240において、データ3231及び3221の格納位置が交換される。これにより、デバイス間WLを行った後のRG#m420でのSSDの残寿命のばらつきを解消することが期待できる。
図26は、デバイス間WLの実行パターンBの一例のシーケンス図である。
プロセッサ104は、Disk管理TBL13100及びRG管理TBL13200に基づいて、短寿命のRGを選択する。また、プロセッサ104は、FM WR量予想TBL13700を参照し、短寿命のRGの中で、FM WR予想量が大きいエクステント(A2)を選択する(S30420)。
次に、プロセッサ104は、Disk管理TBL13100及びRG管理TBL13200に基づいて、長寿命のRGを選択する。また、プロセッサ104は、FM WR量予想TBL13700を参照し、長寿命のRGの中で、FM WR量が小さいエクステント(B2)を選択する(S30420)。
そして、プロセッサ104は、エクステント(A2)のFM WR量が、エクステント(B2)のFM WR量よりも大きいか否かを判断する(S30422)。
その判断の結果が肯定的(S30422:Yes)であれば、プロセッサ104は、エクステント内でのデータ格納位置の最適化が可能であるかを判断する(S30424)。
エクステント内でのデータ格納位置の最適化とは、データのFM WR予想量の程度に適した残寿命のSSDにそのデータを格納すること、具体的には、FM WR予想量が多いデータを残寿命の長いSSDに格納し、FM WR予想量が少ないデータを残寿命の短いSSDに格納することである。
その判断の結果が肯定的(S30424:Yes)であれば、プロセッサ104は、エクステント(A2)内のデータとエクステント(B2)内のデータを交換し、且つ、エクステント内のデータ位置の入れ換え(データ格納位置の最適化)を実行し(S30425)、本処理を終了する。
一方、S30424の判断の結果が否定的(S30424:No)であれば、プロセッサ104は、エクステント(A2)内のデータとエクステント(B2)内のデータを交換し(S30426)、データ格納位置の最適化を実行することなく、本処理を終了する。
また、S30422の判断の結果が否定的(S30422:No)であれば、プロセッサ104は、データ移動を中止し(S30423)、本処理を終了する。
図27は、デバイス間WLの実行パターンCの概要説明図である。
パターンCでは、エクステント部分単位で、RG間でのデータ移動が行われる。RG#n330に基づくエクステント(A)3340と、RG#m430に基づくエクステント(B)4340とがある。SSD3330は、RG#n330に所属しており、短寿命である。しかし、そのSSD3330は、FM WR予想量が多い領域(エクステント(A)3340におけるエクステント部分)の基になっており、その領域3331に、データが格納されている。一方、SSD4310は、RG#430に所属しており、長寿命である。しかし、そのSSD4310は、FM WR予想量が少ない領域(エクステント(B)4340におけるエクステント部分)の基になっており、その領域4331に、データが格納されている。
そこで、SSD3330とSSD4310の残寿命を平準化するための、データ移動(データ交換)が行われる。具体的には、FM WR予想量が多い領域3331とFM WR予想量が少ない領域4311との間で、データが交換される。
しかし、このデータ移動によれば、ストライプ列を維持できなくなる可能性がある。もし、同一のストライプ列に所属するデータもしくはパリティが、同一のSSDに格納されてしまった場合には、RAIDの冗長性が低下してしまう。
これを回避するため、データの移動時に、プロセッサ104は、エクステント管理TBL13400を参照し、RAIDの冗長性が低下する場合には、そのデータ移動を抑止することができる。
なお、データ移動前において、例えば、1つの仮想エクステントに1つのエクステント(A)3340(言い換えれば、同一のエクステント(A)3340における3つのエクステント部分)が割当てられているが、データ移動後は、この仮想エクステントに、2つのエクステント(A)及び(B)(言い換えれば、エクステント(A)3340及び(B)4340におけるエクステント部分)が対応付けられることになる。具体的には、データ移動後は、エクステント(A)3340が割り当てられている割当先が、エクステント(A)3340との一部分(データ移動元)からエクステント(B)の一部分(データ移動先)に変更される。同様に、エクステント(B)4340が割り当てられている仮想エクステントの一部分の割当先が、エクステント(B)4340の一部分(データ移動元)から、エクステント(A)3340の一部分(データ移動先)に変更される。
図28は、デバイス間WLの実行パターンDの概要説明図である。
パターンDでも、エクステント部分単位で、RG内でデータ移動が行われる。
パターンCとの違いは、RGを跨ぐ移動ではなく、同一のRG内でのデータ移動という点である。基本的な考え方はパターンCと同じであり、RG#n340を構成するSSD3410、SSD3420及びSSD3430のライト負荷を平準化することである。
例えば、RG#n340は、長残寿命のSSD3410、残寿命が中程度のSSD3420、及び短残寿のSSD3430より構成されている。エクステント#3440及び#3450が、RG#n340に基づいている。
短寿命のSSD3430に格納されている、FM RW予想量の多い領域3431に格納されているデータが、長寿命のSSD3410に移動される。また、長寿命のSSD3410に格納されている、FM RW予想量の少ない領域3411に格納されているデータが、短寿命のSSD3430に移動される。
また、パターンCと同様、データ移動によりRAIDの冗長性が低下する危険性があるため、そのような場合には、プロセッサ104はデータの移動を抑止する。
なお、デバイス間WLの実行パターンC及びDでは、同一のエクステント内に、同一ストライプ列を構成するデータが格納されなくなるため、プロセッサ104が、キャッシュメモリ103に、このデータの移動元のエクステント部分と移動先のエクステント部分との対応関係を記憶して良い。プロセッサ104は、複数のエクステントに分散されている同一のストライプ列を構成するデータ群を読み出す場合には、上記記憶している対応関係を基に、読出し元を複数のエクステントとして良い。或いは、プロセッサ104は、同一ストライプ列を構成するデータが複数のエクステントに分散されるような場合には、エクステントの論理アドレス範囲の一部分について、その一部分とSSDの物理アドレス範囲との対応関係を変更して良い。このようにすることで、或るエクステントについては、或るRAIDグループのうちの一部のSSDと、別のRAIDグループのうちの一部のSSDとに基づくことになって良い。
図29は、デバイス間WLの実行パターンC及びDの一例のシーケンス図である。
プロセッサ104は、Disk管理TBL13100、及びRG管理TBL13200に基づいて、短寿命のDiskに基づいて形成されているRG選択する。プロセッサ104は、FM WR予想量TBL13700を参照し、短寿命のDiskの中で、FM WR量が大きいエクステント(A3)を選択する(S30430)。
次に、プロセッサ104は、Disk管理TBL13100、及びFM WR量予想TBL13700に基づいて、長寿命のDiskを選択する。ここで、プロセッサ104は、パターンCでは、短寿命のDiskを有するRGとは異なるRGを構成するDiskから、長寿命のDiskを選択する。また、パターンDでは、プロセッサ104は、短寿命のDiskを有するRGとは同じRGを構成するDiskから、長寿命のDiskを選択する。
プロセッサ104は、長寿命のDiskの中で、FM WR量が小さいデータ(B3)を選択する(S30431)。そして、プロセッサ104は、データ(A3)のFM WR量がデータ(B3)のFM WR量よりも大きいか否かを判断する(S30432)。
その結果が肯定的(S30422:Yes)であれば、プロセッサ104は、エクステント管理TBL13400を参照し、データ移動によりRAIDの冗長性が低下するか否かを判断する(S30433)。
その結果が否定的(S30433:No)であれば、プロセッサ104は、データ(A3)及びデータ(B3)の格納位置を交換するデータ移動を行い(S30434)、本処理を終了する。
一方、S30433の判断の結果が肯定的(S30433:Yes)であれば、プロセッサ104は、データの移動を中止し(S30435)、本処理を終了する。
また、S30432の判断の結果が否定的(S30432:No)であれば、プロセッサ104は、データの移動を中止し(S30435)、本処理を終了する。
図30は、デバイス間WLの実行パターンEの概要説明図である。
パターンEでは、記憶媒体の残寿命に影響するデバイス特徴に応じて、データ移動が行われる。
RG#n350は、SLCタイプのSSDで構成されている。RG#m450は、MLCタイプのSSDで構成されている。RG#o550は、HDDで構成されている。すわなち、RG#n350は、高速かつ長寿命、RG#m450は、高速だが短寿命、RG#o550は、低速だが書換え実質的に無制限という特徴を有している。
パターンEでは、デバイス毎の特徴の違いを利用して、データの格納先に最適なデバイスが選択される。
具体的には、FM WR予想量が少ないエクステントに格納されているデータがSLCタイプのSSDのFM WR予想量が少ないエクステントに格納され、リード負荷の高いデータはMLCタイプのSSDのFM WR予想量が少ないエクステントに格納され、リード負荷が低いデータはHDDに移動される。
このように、特徴の異なるデバイス間でデータ移動が行われることで、各データをそのI/O特性に最適な種別のデバイスに格納することが出来る。
なお、説明を分かり易くするため、図30は、パターンA(RG間でのデータ移動)の例を示しているが、パターンEは、パターンB(RG間でのデータ移動、及び、同一エクステントの基になっているSSD間でのデータ移動)とパターンC(特定のデータ単位でのRG間のデータ移動)のいずれにも適用可能である。
図31は、デバイス間WLの実行パターンEの一例のシーケンス図である。
プロセッサ104は、Disk管理TBL13100、RG管理TBL13200、エクステント管理TBL13400、及びFM WR量予想TBL13700に基づき、処理対象とする特定のエクステントを選択する(S30440)。以下、図31の説明において、S30440で選択されたエクステントを「対象エクステント」と言う。
次に、プロセッサ104は、Disk管理TBL13100、RG管理TBL13200、エクステント管理TBL13400、及びFM WR量予想TBL13700に基づき、対象エクステントが、FM WR予想量の多い領域を含んでいるか否かを判断する(S30441)。その結果が肯定的(S30441:Yes)であれば、プロセッサ104は、対象エクステント内のデータをSLCタイプのSSDに基づくエクステントに移動し(S30443)、本処理を終了する。
一方、S30441の判断の結果が否定的(S30441:No)であれば、プロセッサ104は、対象エクステントのリードの負荷が高いか否かを判断する(S30442)。
その結果が肯定的(S30442:Yes)であれば、プロセッサ104は、対象エクステント内のデータをMLCタイプのSSDに基づくエクステントに移動し(S30444)、本処理を終了する。
S30442の判断の結果が否定的(S30442:No)であれば、プロセッサ104は、対象エクステント内のデータをHDDに基づくエクステントに移動し(S30445)、本処理を終了する。
図32は、デバイス間WLの実行パターンFの一例のシーケンス図である。
パターンFでは、デバイスの寿命に応じてデータが移動される。プロセッサ104は、Disk管理TBL13100、RG管理TBL13200、エクステント管理TBL13400及びFM WR量予想TBL13700に基づき、処理対象とするエクステントを選択する(S30450)。
なお、ここで選択されるエクステントとは、FM WR予想量が多いエクステントである。以下、図32の説明において、S30450で選択されたエクステントを「対象エクステント」と言う。
次に、プロセッサ104は、対象エクステント内のデータをMLCタイプのSSDに基づくエクステントに格納できるか否かを寿命の観点で判断する(S30451)。具体的には、プロセッサ104は、Disk管理TBL13100を参照し、同一のRGを構成する各々のMLCタイプのSSDについて、SSDの残寿命期間13107が、そのSSDの残保証期間13104よりも短い値か否かをチェックする。なぜなら、同一のRGを構成する各々のMLCタイプのSSDについて、SSDの残寿命期間13107がそのSSDの残保証期間13104よりも短い値となっている場合には、そのMLCタイプのSSDには、許容量を超える高いライト負荷が発生しており、データの移動先を、そのMLCタイプのSSDに基づくエクステントにしたとしても、寿命の問題を解決することはできないからである。
そこで、すべてのMLCタイプのSSDの残寿命期間13107が、それらのSSDの残保証期間13104よりも短い値となっている場合(S30451:No)、プロセッサ104は、MLCタイプのSSDよりも寿命の長いSLCタイプのSSDに基づくエクステントにデータを移動することを試みる(S30452)。これは、プロセッサ104が、Disk管理TBL13100を参照し、同一のRGを構成する各々のSLCタイプのSSDについて、SSDの残寿命期間13107がそのSSDの残保証期間13104よりも短い値となっているかを判断することにより、可能である。
SLCタイプのSSDも移動先としてふさわしくない場合(S30452:No)、プロセッサ104は、書き換え上限のないHDDをデータの移動先として決定する(S30455)。
ステップS30451の判断の結果、MLCタイプのSSDに寿命の余裕がある場合(S30451:Yes)、プロセッサ104は、MLCタイプのSSDをデータの移動先として決定する(S30453)。
また、ステップS30452の判断の結果、SLCタイプのSSDに寿命の余裕がある場合(S30452:Yes)、プロセッサ104は、SLCタイプのSSDをデータの移動先として決定する(S30454)。
次に、実施例2について説明する。本実施例は、実施例1と共通部分を多く含む。そのため、本実施例では、実施例1と異なる部分を中心に説明する。実施例2では、WL対象の選択するに際し、FM WR予想量に加えて、予想WA(図36参照)を用いる。
一般的に、SSD700内部では、WLやリクラメーションなどの、SSD独自の処理が発生するため、SSD700がストレージコントローラ100から受信したデータの量に比べ、実際にフラッシュメモリに書き込まれるデータの量は大きいという特性を有している。これはWA(Write Amplification)と呼ばれる。SSD内部の処理によるライトデータ量の増加は、アクセスパターンや、ライトデータのサイズ等に依存する。
SSD内の独自処理によってライトデータ量が増加すると、それに伴って消去回数も増加する。よって、本実施例では、WAを予想することで、デバイス間WLの精度をより向上させる。
まず、WAについて詳細に説明する。
WAは、下記(b)を(a)で割ることにより得られる比率((b)/(a))、
(a)SSDがストレージコントローラ100から受信したデータの量、
(b)フラッシュメモリに実際に書き込むデータの量、
である。
例えば、SSD700に何もデータがライトされていない状態で、SSD700がストレージコントローラ100からWRデータを受信した場合、そのデータは、空きページにそのままライトされることになるので、WAは「1.0」となる確率が高い。また、例えば、SSD700のページに有効データがライトされており、且つ、空きページが無くリクラメーション処理の必要がある場合、有効データの移動先となるページ、及びストレージコントローラ100からのデータを書き込むためのページが必要となるため、WAは「1.0」を超えることになる。
しかしながら、WR量13706が小さいからと言って、WA13707が小さいとは限らない。SSD700内部で、WLやリクラメーションなどの、SSD独自の処理が発生するためである。
なお、リクラメーション処理とは、例えば、空きブロックが枯渇し始めた際に、有効なデータを格納するページを集約し、別のブロックへライトすることで、無効なデータのみを有するブロックを生成し、そのブロック内のデータを消去することで、空きブロックを生成する処理である。
一般的に、WAは、シーケンシャルI/O(シーケンシャルアクセスとも言う)よりもランダムI/O(ランダムアクセスとも言う)の方が大きいという特性を有している。
シーケンシャルI/Oは、一般的に、連続したLBA空間に対するI/Oである。そのため、1ブロックを構成する全ページに対して、新しいデータがライトされる可能性が高い。そうすると、そのブロックに存在するデータの全てが有効データでないことがあり、そのようなブロックに対しては、イレース処理を行うだけで空きページを作ることができる。従って、シーケンシャルI/Oは、データを移動させる必要性が低いので、データの移動先となるページが消費されず、WAは「1」或いはそれに近い数値となる可能性が高くなる。
ランダムI/Oは、一般的に、不連続なLBA空間に対するI/Oであり、例えば、複数のブロックがI/O先となることがある。そうすると、一つのブロックに有効データが多く含まれる確率が高くなる。このため、リクラメーションの際に、シーケンシャルライトと比べて移動させるデータ量が大きくなる。よって、WAは「1」より大きい数値となる可能性が高くなる。
また、WAは、大サイズI/Oよりも小サイズI/Oになるほど大きくなる。ここで、小サイズI/Oとは、I/Oコマンドに付随するデータのサイズが小さいことを示す。また、大サイズI/Oとは、I/Oコマンドに付随するデータのサイズが大きいことを示す。SSDに対して、512Bのデータがライト対象として送信された際、最小ライト単位(ページ)が8192Bであれば、8192Bのページを1つ消費して、512Bのデータを格納することとなる。これは、内部のフラッシュメモリにはSSDに対するデータのサイズと比較して16倍のデータのライトが実施されることに等しい。つまり、I/Oサイズとページサイズに依存する。
また、WAの値は、SSDの圧縮機能や重複排除機能の有無、圧縮機能の圧縮アルゴリズムの種類にも依存する。これは、圧縮効果や重複排除効果が高いデータは、ライトデータサイズが小さくなるからである。
また、WAの値は、SSD内でのキャッシュヒット率にも依存する。SSD内のキャッシュ上でライトデータを更新する場合は、フラッシュメモリへの書き込みが発生しないためである。
また、WAの値は、SSDのデータ格納割合(SSDの容量に対するユーザデータ総量の割合)にも依存する。
例えば、100GBの物理容量を備えるSSDに、ユーザデータが50GB格納されている場合には、SSDは残りの50GBの領域を空きページとして利用できる。ここで、50GBのユーザデータがすべて新しいデータに更新されたとしても、新しいデータは残りの50GBの空ページにライトすることができる。このとき、更新されたデータはすべて無効データとなるため、リクラメーション時には、イレース処理を行うだけで空ページを作ることができる。ゆえに、SSDのデータ格納割合が小さい(具体的には、半分以下)場合には、リクラメーションの効率が向上し、WAが「1」に近づく可能性が高い。
このように、WAには様々な要因が影響する。よって、本実施例ではこれらを考慮してストレージコントローラがWAを予想する(図34参照)。
図33は、本実施例におけるFM WR量予想TBL13700の構成例を示す図である。
FM WR量予想TBL13700には、実際にSSD内部で書き込まれるデータ量を予測するために必要な情報が含まれる。
FM WR量予想TBL13700は、統計情報管理TBL13600を基に構成される。FM WR量予想TBL13700は、Disk毎に、Disk#13701、エクステント#13702、平均WR I/O Size13703、WR I/O Pattern13704、WR比率13705、WR量13706、予想WA(Write Amplification)13707及びFM WR予想量13708を有している。
Disk#13701は、Diskの識別子であり、ユニークな番号である。エクステント#13702は、エクステントの識別子であり、ユニークな番号である。
平均WR I/O Size13703は、Diskのアドレス範囲のうちエクステントに対応するアドレス範囲がWR I/O先となったデータの平均サイズである。WR I/O Pattern13704は、WR I/Oのパターンがランダムであるかシーケンシャルであるかを示している。WR比率13705は、Diskのアドレス範囲のうちエクステントに対応するアドレス範囲に対するI/OのうちのWRコマンドの比率を示している。WR量13706は、Diskのアドレス範囲のうちエクステントに対応するアドレス範囲を書込み先としたWRデータの総量を示している。
予想WA13707は、ストレージコントローラ100からのWRデータが、SSD700内部で何倍に増加するかを予想した数値である。予想WAは、後述のWA情報格納TBL13800に基づく。
FM WR予想量13708は、フラッシュメモリに実際に書き込まれるデータの予想量を示している。この値は、WR量13706及び予想WA13707を基に求められた数値(WR量13706及び予想WA13707の積)である。
本テーブル13700は、ストレージコントローラ100がSSD700に送信したライトデータ量が、SSD700でどの位のデータ量になるかをエクステント単位で把握するためのテーブルである。
Disk#13701からWR量13706は、統計情報管理TBL13600を基に更新される。
図34は、実施例2におけるWA情報格納TBL13800の構成例を示す図である。
WA情報格納TBL13800は、WR I/Oパターン13801、平均WR I/Oサイズ13802及び予想WA13803を有している。WAには、WR I/Oパターン及び平均WR I/Oサイズ以外の要因も影響すると考えられるが、本実施例は、WR I/Oパターン及び平均WR I/OサイズがWAに与える影響が大きいとの考えに基づいている。なお、平均WR I/Oサイズに代えて又は加えて、単位時間当たりの最大(或いは最小)のWR I/Oサイズが、採用されても良い。また、予想WA13803は、WR I/Oパターン13801及び平均WR I/Oサイズ13802に限らず、統計情報管理TBL13600のいずれかの項目(WR IOPS13603、RD IOPS13604、WR比率13607、WR量13608、RD量13609)に基づいて、定められても良い。また、統計情報(図9参照)に含まれるこれらの情報は、ストレージコントローラ100がI/Oを監視することで、容易に取得可能な情報である(ストレージコントローラ100の一機能として予め搭載されていることもあり得る)。よって、ストレージコントローラとSSDの通信オーバヘッドをかけずに、WAを予想することができる。
WR I/Oパターン13801は、ライトのI/Oパターンを示す。平均WR I/Oサイズ13802は、ライトデータのサイズの平均値を示す。予想WA13803は、I/Oパターン、平均I/Oサイズに対して予想されるWAの値を示す。
本実施例では、I/Oパターンがシーケンシャルであれば、平均I/Oサイズによらず、予想WAは1.0とする。また、I/Oパターンがランダムであれば、I/Oサイズが小さいほど、予想WAは大きくする。
また、SSDが圧縮機能や重複排除機能を有している場合、これをWA情報格納TBL13800に加えてもよい。特定パターンのデータ(例えば、オールゼロデータ)は圧縮効果が高く、SSD内でのライト量が小さくなる。よって、ストレージコントローラ100が、圧縮や重複排除の効果が高いデータパターンをSSDにライトする傾向が高い場合は、予想WAを小さくする。
また、ストレージコントローラ100が、SSDからSSD内のキャッシュヒット率の値を取得し、キャッシュヒット率が高ければ予想WAを小さくしてもよい。
また、ストレージコントローラ100が、SSDからSSD内のデータ格納割合を取得し、データ格納割合が小さければ予想WAを小さくしてもよい。
このように、ストレージコントローラがSSDから内部情報を取得してWAを予測する場合、より予想WAの精度が向上する。
デバイス間WLの基本的なフローは実施例1と同様であるため説明を省略する。図20におけるS303の処理が次のように異なる。
図35は、図20のS303(フラッシュメモリのライト量の予想)の流れの一例を示すシーケンス図である。
プロセッサ104は、統計情報管理TBL13600より、エクステントに対するWR量を取得する(S3033)。
プロセッサ104は、統計情報管理TBL13600の情報を基に、FM WR量予想TBL13700に必要な統計情報である、平均WR I/O Size13703、WR I/O Pattern13704、及びWR量13706を取得する(S3034)。
次に、プロセッサ104は、S3034で取得した情報に基づいて、WA情報格納TB
L13800より、予想WA13803の値を取得する(S3035)。
次に、プロセッサ104は、予想WA13803と、エクステントへのWR量13706基いて、FM WR予想量13708を算出する。ここでは、予想WA13803と、エクステントへのWR量13706との積により、FM WR予想量13708を算出している。
本実施例では、FM WR予想量13708をWR量13706だけで求めるのではなく、エクステントへのWR量13706、及び予測WA13707に基づいて求めるので、より精度の高いデバイス間WLを実施し、SSDを長寿命化することができる。
次に、実施例3について説明する。本実施例は、実施例1及び2と共通部分を多く含む。そのため、本実施例では、実施例1及び2と異なる部分を中心に説明する。
実施例3では、ストレージコントローラ100が取得する情報の粒度が、Chunk単位に拡張されている。この場合、図17にて示す、統計情報25200は、SSD単位の情報23210とChunk(複数のエクステントの集合)単位の情報23220が含まれて良い。また、アドレス情報25100(図17参照)も、SSD単位の情報と、Chunk単位の論物変換情報を含むとする。
これにより、プロセッサ104は、エクステントがどのChunkに所属するかを知ることが可能となる。すなわち、本実施例では、ストレージコントローラ100が、取得する情報が実施例1及び2と比較して詳細になる。これにより、FM WR量の予想精度が向上するので、デバイス間WLの精度向上につながる。実施例1からの具体的な変更点を、図36を参照して説明する。
図36は、本実施例に係るFM WR量予想TBL13700の構成例を示す図である。
実施例1(図10)との違いは、FM WR量予想TBLが、Chunk#13710及びChunk WR量13711の情報を含むことである。Chunk#13710はエクステントが所属するChunkの番号を示す。Chunk WR量13711は、Chunkに対応するFM WR量(Chunkに対応するフラッシュメモリ領域に書き込まれたデータの量)の合計値を示す。SSD単位の情報より通知粒度の高いChunk WR量13711の情報を参照することで、本実施例は、実施例1に比べ、より高精度にFM WR予想量13708を算出することが可能となる。
以上の手法により、SSDの内部情報を詳細に把握することが困難な場合においても、SSD内部の状態(例えば、FM WR予想量13708)をストレージコントローラ100が統計情報25200を基に予測することで、デバイス間WLを高精度に実現することが出来る。
なお、デバイス間WLの実行において、ストレージコントローラ100がSSD内部のデータライト量を予測するための判断材料として、エクステントごとのライトI/O数、及び又はデータライト量を用いても良い。
また、実施例1から実施例3では、ストレージコントローラ100が残消去回数を残日数に換算する処理を行っていたが、SSDが残日数を直接通知しても良い。これは、例えば、図21のような、残消去回数を残日数に換算する機能をSSDが備えることで実現できる。
また、実施例1〜3では、残寿命の算出に消去回数やFM WR予測量が用いられた。しかし、フラッシュメモリでは、データをライト(プログラム)してから、消去するまでの時間が短いほど劣化しやすいという性質がある。そこで、残寿命の算出に際し、消去回数やFM WR予測量だけでなく、ライトから消去までの時間を考慮した指標「劣化度」を用いる方法もある。
劣化度としては、例えば、ブロックの消去毎に前回のライトからの経過時間に応じた値(ポイント)を累積したものを用いることができる。具体的に、例えば、データがライトされてから5分以内にデータが消去された場合は40ポイント、10分以内にデータが消去された場合は35ポイント等として、経過時間に応じた消去毎のポイントを加算することで劣化度を管理することができる。
予め、劣化度の最大値(上限値)を定めておくと、劣化度の増加率から寿命を予測することができる。これにより、FM WR予測量及び消去回数のみを用いるよりも精度よく寿命を予測することができ、高精度なデバイス間WLを実施することができる。
実施例1〜3では、エクステント単位でデバイス間WLを実行する処理を説明したが、デバイス間WLを、LU(Logical unit)単位でデバイス間WLを行ってもよい。この場合、ストレージコントローラ100は、LU単位で統計情報を取得する。その他の処理は、上記実施例と同様にRAIDグループの寿命に基づいて、移動元RAIDグループ(短寿命のRAIDグループ)と移動先RAIDグループ(長寿命のRAIDグループ)を選択し、選択した移動元と移動先のRAIDグループの予想ライト量(ライト負荷)に基づいて、LUに格納されているデータを移動させる。
10:ストレージ装置

Claims (16)

  1. 1以上の不揮発性の半導体記憶媒体と、メモリコントローラと、を有する複数の半導体記憶ユニットと、
    前記複数の半導体記憶ユニットに接続されているストレージコントローラと
    を有し、
    前記1以上の不揮発性の半導体記憶媒体のそれぞれは複数のブロックを有し、前記複数のブロックのそれぞれはデータ消去の単位であり、
    前記メモリコントローラは、前記複数のブロックの消去回数に関する情報を含む内部情報を管理し、前記1以上の半導体記憶媒体に対応付けた論理記憶領域を前記ストレージコントローラに提供し
    前記ストレージコントローラは、各半導体記憶ユニットから前記内部情報を取得し、
    前記ストレージコントローラは、前記論理記憶領域を指定して前記半導体記憶ユニットにデータを書き込前記論理記憶領域毎のライトに関する統計を表す統計情報を記憶し、
    前記ストレージコントローラは、
    (A)前記内部情報に基づいて算出される残寿命情報を基に、第1の半導体記憶ユニットと、前記第1の半導体記憶ユニットよりも残寿命が短い第2の半導体記憶ユニットとを特定し、
    (B)前記論理記憶領域毎のライトに関する統計を表す前記統計情報を基に、前記第1の半導体記憶ユニットについて第1の論理記憶領域と、前記第2の半導体記憶ユニットについて前記第1の論理記憶領域よりもライト負荷が高い第2の論理記憶領域とを特定し、
    (C)前記第1及び第2の論理記憶領域からそれぞれデータを読み出し、且つ、前記第1の論理記憶領域から読み出したデータを、前記第2の論理記憶領域に書き込む、及び/又は、前記第2の論理記憶領域から読み出したデータを、前記第1の論理記憶領域に書き込む、
    ストレージ装置。
  2. 請求項1記載のストレージ装置であって
    前記ストレージコントローラは、各半導体記憶媒体について、第1の時点に取得した内部情報と前記第1の時点よりも過去の第2の時点に取得した内部情報とを基に、前記半導体記憶媒体の残寿命を予測する、
    ストレージ装置。
  3. 請求項2記載のストレージ装置であって、
    前記論理記憶領域についてのライト負荷は、前記論理記憶領域をライト先として送信されたデータの総量であるライト量に従う負荷である、
    ストレージ装置。
  4. 請求項3記載のストレージ装置であって、
    前記論理記憶領域についてのライト負荷は、前記ライト量と、前記ストレージコントローラにより前記統計情報を基に得られる予想ライト増減率とに基づく負荷であり、
    前記予想ライト増減率は、前記論理記憶領域に対するライトに関する統計を基に得られる、
    ストレージ装置。
  5. 請求項4記載のストレージ装置であって、
    前記論理記憶領域に対するライトに関する統計は、前記論理記憶領域に対するライトに従うデータの平均サイズ、及び/又は、前記論理記憶領域に対するライトのライト先がシーケンシャルであるかランダムであるかである、
    ストレージ装置。
  6. 請求項2記載のストレージ装置であって、
    前記複数の半導体記憶媒体により複数のRAIDグループが形成されており、
    前記半導体記憶ユニットは、RAIDグループであり、
    前記RAIDグループ毎に、2以上の論理記憶領域群が形成され、
    前記各論理記憶領域群は、RAIDグループを構成する2以上の前記半導体記憶媒体にそれぞれ対応した2以上の前記論理記憶領域の集合であり、
    前記(A)では、前記残寿命情報を基に、第1のRAIDグループと前記第1のRAIDグループよりも残寿命の短い第2のRAIDグループが特定され、
    前記第1及び第2のRAIDグループが、前記第1及び第2の半導体記憶ユニットであり、
    前記(B)では、前記論理記憶領域毎のライトに関する統計を表す前記統計情報を基に、前記第1の半導体記憶ユニットについて第1の前記論理記憶領域群と、前記第2の半導体記憶ユニットについて前記第1の論理記憶領域群よりもライト負荷が高い第2の前記論理記憶領域群とを特定し
    前記(C)では、前記第1及び第2の論理記憶領域群からそれぞれデータを読み出し、且つ、前記第1の論理記憶領域群から読み出したデータを、前記第2の論理記憶領域群に書き込む、及び/又は、前記第2の論理記憶領域群から読み出したデータを、前記第1の論理記憶領域群に書き込む、
    ストレージ装置。
  7. 請求項6記載のストレージ装置であって、
    前記コントローラは、下記の(F)の条件が満たされていれば、下記の(G)を行う、
    (F)前記第1及び第2のRAIDグループの少なくとも1つについて、前記(C)でデータが書き込まれた前記論理記憶領域群に基づく2以上の前記半導体記憶媒体の残寿命にばらつきがあり、且つ、前記論理記憶領域群を構成する2以上の前記論理記憶領域のライト負荷にばらつきがある、
    (G)前記2以上の論理記憶領域のライト負荷と、前記(C)でデータが書き込まれた前記論理記憶領域に基づく2以上の前記半導体記憶媒体の残寿命とに基づいて、同一の前記論理記憶領域群における第の論理記憶領域と第の論理記憶領域との間でデータを交換する、
    前記第の論理記憶領域は、前記2以上の半導体記憶媒体のうちの第1の半導体記憶媒体に基づいており、
    前記第の論理記憶領域は、前記2以上の半導体記憶媒体のうちの第2の半導体記憶媒体に基づいており、
    前記第2の半導体記憶媒体は、前記第1の半導体記憶媒体よりも残寿命が短い半導体記憶媒体であり、
    前記第2の論理記憶領域は、前記第1の論理記憶領域よりもライト負荷が高い論理記憶領域である、
    ストレージ装置。
  8. 請求項1記載のストレージ装置であって、
    前記複数の半導体記憶媒体により複数のRAIDグループが形成されており、
    前記RAIDグループ毎に、2以上の論理記憶領域群が形成され、
    前記(A)では、前記各半導体記憶媒体の残寿命を基に、第1のRAIDグループ内の第1の半導体記憶媒体と前記第1のRAIDグループよりも残寿命の短い第2のRAIDグループ内の第2の半導体記憶媒体とが特定され、
    前記第1及び第2の半導体記憶媒体が、前記第1及び第2の半導体記憶ユニットであり、
    前記(B)では、前記第1の論理記憶領域は、前記第1の半導体記憶媒体に基づく論理記憶領域であり、前記第2の論理記憶領域は、前記第2の半導体記憶媒体に基づく論理記憶領域である、
    ストレージ装置。
  9. 請求項8記載のストレージ装置であって、
    前記ストレージコントローラは、複数の仮想領域で構成された仮想ボリュームを提供し、ライト先の前記仮想領域に、前記論理記憶領域群を割り当て、ライト対象のデータを該論理記憶領域群に書き込むようになっており、
    前記(C)では、前記第1のRAIDグループに基づく論理記憶領域群が割り当てられていた第1の前記仮想領域に、該論理記憶領域群のうちの前記第1の論理記憶領域に代えて、前記第2の論理記憶領域を割り当てる、及び/又は、前記第2のRAIDグループに基づく前記論理記憶領域群が割り当てられていた第2の仮想領域に、該論理記憶領域群のうちの前記第2の論理記憶領域に代えて、前記第1の論理記憶領域を割り当てる、
    ストレージ装置。
  10. 請求項2記載のストレージ装置であって、
    前記複数の半導体記憶媒体によりRAIDグループが形成されており、
    前記RAIDグループを基に、2以上の論理記憶領域が形成され、
    前記(A)では、前記各半導体記憶媒体の残寿命を基に、第1のRAIDグループに含まれる第1及び第2の半導体記憶媒体が特定され、
    前記第1及び第2の半導体記憶媒体が、前記第1及び第2の半導体記憶ユニットであり、
    前記(B)では、前記第1の論理記憶領域は、前記第1の半導体記憶媒体に基づく論理記憶領域であり、前記第2の論理記憶領域は、前記第2の半導体記憶媒体に基づく論理記憶領域である、
    ストレージ装置。
  11. 請求項10記載のストレージ装置であって、
    各論理記憶領域群が、複数のストライプ列で構成されており、
    同一のストライプ列に格納される2以上のデータが同一の半導体記憶媒体に格納される場合には、前記(C)は実行されない、
    ストレージ装置。
  12. 請求項1記載のストレージ装置であって、
    前記(C)で読み出されたデータのライト先の論理記憶領域は、該論理記憶領域についてのライト負荷に加えて、該論理記憶領域のリード負荷を基に決定され、
    前記リード負荷は、単位時間当たりに読み出されるデータの量に従う、
    ストレージ装置。
  13. 請求項2記載のストレージ装置であって、
    前記ストレージコントローラは、前記半導体記憶媒体の保証期間を表す情報を記憶し、
    前記第1及び第2の半導体記憶ユニットは、前記各半導体記憶ユニットの残寿命と前記各半導体記憶ユニットの保証期間との比較の結果を基に決定される、
    ストレージ装置。
  14. 請求項2記載のストレージ装置であって、
    前記予測された残寿命の単位は日数である、
    ストレージ装置。
  15. 請求項2記載のストレージ装置であって、
    前記ストレージコントローラは、
    (A)前記残寿命情報を基に、残寿命が閾値以下の前記半導体記憶ユニットを特定し、
    (B)前記統計情報を基に、前記特定した半導体記憶ユニットについて第1の論理記憶領域と、前記第1の論理記憶領域よりもライト負荷が高い第2の論理記憶領域とを特定し、
    (C)前記第1及び第2の論理記憶領域からそれぞれデータを読み出し、且つ、前記第1の論理記憶領域から読み出したデータを、前記第2の論理記憶領域に書き込む、及び/又は、前記第2の論理記憶領域から読み出したデータを、前記第1の論理記憶領域に書き込む、
    ストレージ装置。
  16. データ消去の単位であるブロックを複数有する1以上の不揮発性の半導体記憶媒体と、メモリコントローラと、を有する複数の半導体記憶ユニットと、
    前記複数の半導体記憶ユニットに接続されているストレージコントローラと
    を有するストレージ装置の記憶制御方法であって、
    前記ストレージ装置は、
    前記メモリコントローラが、前記複数のブロックの消去回数に関する情報を含む内部情報を管理し、前記1以上の半導体記憶媒体に対応付けられた論理記憶領域を前記ストレージコントローラに提供し、
    前記ストレージコントローラが、前記半導体記憶ユニットの各々から前記内部情報を取得し、前記論理記憶領域を指定して前記半導体記憶ユニットにデータを書き込み、前記論理記憶領域毎のライトに関する統計を表す統計情報を記憶する、ストレージ装置であって、
    前記方法は、前記ストレージコントローラが、
    前記内部情報に基づいて算出される残寿命情報を基に、前記半導体記憶媒体の中から、第1の半導体記憶ユニットと、前記第1の半導体記憶ユニットよりも残寿命が短い第2の半導体記憶媒ユニットとを特定し、
    前記統計情報を基に、前記第1の半導体記憶ユニットについて第1の論理記憶領域と、前記第2の半導体記憶ユニットについて前記第1の論理記憶領域よりもライト負荷の高い第2の論理記憶領域とを特定し、
    前記第1及び第2の論理記憶領域からそれぞれデータを読み出し、且つ、前記第1の論理記憶領域から読み出したデータを、前記第2の論理記憶領域に書き込む、及び/又は、前記第2の論理記憶領域から読み出したデータを、前記第1の論理記憶領域に書き込む、
    処理を実行することを特徴とする、記憶制御方法。
JP2014534292A 2012-02-08 2012-02-08 複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法 Expired - Fee Related JP5844473B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/000843 WO2013118170A1 (en) 2012-02-08 2012-02-08 Storage apparatus with a plurality of nonvolatile semiconductor storage units and control method thereof to place hot data in storage units with higher residual life and cold data in storage units with lower residual life

Publications (2)

Publication Number Publication Date
JP2015505078A JP2015505078A (ja) 2015-02-16
JP5844473B2 true JP5844473B2 (ja) 2016-01-20

Family

ID=48903939

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014534292A Expired - Fee Related JP5844473B2 (ja) 2012-02-08 2012-02-08 複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法

Country Status (6)

Country Link
US (2) US9405478B2 (ja)
EP (1) EP2791774A1 (ja)
JP (1) JP5844473B2 (ja)
CN (1) CN104115109A (ja)
IN (1) IN2014DN05977A (ja)
WO (1) WO2013118170A1 (ja)

Families Citing this family (183)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276776A1 (en) * 2010-05-07 2011-11-10 Tatu Ylonen Oy Ltd Addressing for Huge Direct-Mapped Object Systems
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
WO2014141411A1 (ja) * 2013-03-13 2014-09-18 株式会社日立製作所 ストレージシステムおよびストレージシステム制御方法
WO2014184941A1 (ja) * 2013-05-17 2014-11-20 株式会社日立製作所 ストレージ装置
GB2514354A (en) * 2013-05-20 2014-11-26 Ibm Managing storage devices having a lifetime of a finite number of operations
CN103631538B (zh) 2013-12-05 2017-04-05 华为技术有限公司 冷热数据识别门限值计算方法、装置和系统
CN103699030B (zh) * 2013-12-06 2016-04-06 中联重科股份有限公司 工程机械的工作机构的工作参数保存装置、系统和方法
JP2015153056A (ja) * 2014-02-13 2015-08-24 東芝テック株式会社 文書閲覧管理サーバ及び文書閲覧管理プログラム
US9933980B2 (en) * 2014-02-24 2018-04-03 Toshiba Memory Corporation NAND raid controller for connection between an SSD controller and multiple non-volatile storage units
JP6245041B2 (ja) * 2014-04-02 2017-12-13 コニカミノルタ株式会社 情報処理装置及びフラッシュメモリの制御方法
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9747229B1 (en) * 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
EP3230863B1 (en) * 2014-12-09 2022-03-02 Hitachi Vantara LLC A system and method for providing thin-provisioned block storage with multiple data protection classes
KR102343246B1 (ko) * 2014-12-12 2021-12-27 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP6216897B2 (ja) * 2015-01-20 2017-10-18 株式会社日立製作所 ストレージシステム
US10372538B2 (en) * 2015-03-06 2019-08-06 Hitachi, Ltd. Computer system
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10452302B2 (en) 2015-04-09 2019-10-22 Hitachi, Ltd. Storage system and data control method
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US9547441B1 (en) * 2015-06-23 2017-01-17 Pure Storage, Inc. Exposing a geometry of a storage device
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
JP6403162B2 (ja) * 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
JP6721820B2 (ja) 2015-08-14 2020-07-15 富士通株式会社 異常対処決定プログラム、異常対処決定方法、及び、状態管理装置
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
JP6565560B2 (ja) * 2015-10-01 2019-08-28 富士通株式会社 ストレージ制御装置、及び制御プログラム
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
JP6320439B2 (ja) * 2016-03-10 2018-05-09 株式会社東芝 メモリ制御装置、ストレージ装置、ストレージ装置の制御プログラム、及び、ストレージ装置の制御方法
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
KR101884913B1 (ko) * 2016-08-09 2018-08-02 고려대학교 산학협력단 별도의 가상 영역으로 관리되는 복수의 정보 저장 테이블을 가지는 메모리 장치 및 그의 제어 방법
WO2018029820A1 (ja) * 2016-08-10 2018-02-15 株式会社日立製作所 計算機システム
JP2018036711A (ja) * 2016-08-29 2018-03-08 富士通株式会社 ストレージシステム,ストレージ制御装置および制御プログラム
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
CN106502591B (zh) * 2016-10-26 2019-10-25 深信服科技股份有限公司 一种基于混合存储产品的存储控制方法和存储控制装置
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10282097B2 (en) * 2017-01-05 2019-05-07 Western Digital Technologies, Inc. Storage system and method for thin provisioning
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
JP6536614B2 (ja) * 2017-03-30 2019-07-03 日本電気株式会社 ストレージ装置、ストレージ装置の制御方法及びプログラム
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
JP6885173B2 (ja) * 2017-04-13 2021-06-09 富士フイルムビジネスイノベーション株式会社 画像処理装置及びプログラム
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10572407B2 (en) * 2017-08-11 2020-02-25 Western Digital Technologies, Inc. Hybrid data storage array
JP6906405B2 (ja) 2017-09-12 2021-07-21 キオクシア株式会社 情報処理装置、情報処理方法、情報処理プログラム、および情報処理システム
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
CN109725835B (zh) * 2017-10-27 2022-04-29 伊姆西Ip控股有限责任公司 用于管理盘阵列的方法、设备和计算机程序产品
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
JP6805110B2 (ja) * 2017-11-06 2020-12-23 株式会社日立製作所 ストレージシステム及びその制御方法
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
JP6443572B1 (ja) * 2018-02-02 2018-12-26 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11416395B2 (en) * 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
JP6800904B2 (ja) * 2018-03-20 2020-12-16 株式会社東芝 モデル生成装置、情報処理装置、モデル生成方法およびプログラム
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US10877892B2 (en) * 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
KR20200042780A (ko) * 2018-10-16 2020-04-24 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
JP7313840B2 (ja) * 2018-10-25 2023-07-25 キヤノン株式会社 情報処理装置および情報処理装置の制御方法、ならびにプログラム
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
CN111104342B (zh) * 2018-10-29 2023-08-04 伊姆西Ip控股有限责任公司 用于存储的方法、电子设备和计算机程序产品
KR20200085510A (ko) * 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법과, 이를 위한 컨트롤러
US11086548B2 (en) * 2019-01-31 2021-08-10 EMC IP Holding Company LLC Dynamic re-balancing in heterogeneous storage systems
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
JP6886486B2 (ja) * 2019-04-04 2021-06-16 株式会社日立製作所 ストレージシステム及びデータ制御方法
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US11221766B2 (en) * 2019-05-24 2022-01-11 Dell Products L.P. System and method for persistent memory rotation based on remaining write endurance
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
CN111142796A (zh) * 2019-12-20 2020-05-12 北京浪潮数据技术有限公司 一种ssd寿命预测方法、装置、设备及可读存储介质
JP6958941B2 (ja) * 2020-01-22 2021-11-02 Necプラットフォームズ株式会社 ディスク監視装置、それを備えたストレージシステム、ディスク監視方法、及び、ディスク監視プログラム
JP2021125147A (ja) 2020-02-07 2021-08-30 株式会社日立製作所 ストレージ装置およびストレージ装置のデータ処理方法
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
CN113590378A (zh) * 2020-04-30 2021-11-02 伊姆西Ip控股有限责任公司 存储管理的方法、设备和计算机程序产品
CN113934360B (zh) * 2020-06-29 2024-04-12 戴尔产品有限公司 多存储设备生命周期管理系统
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
CN112000591B (zh) * 2020-08-24 2023-12-05 深圳忆联信息系统有限公司 可指定逻辑区块地址的扫描ssd方法、装置、计算机设备及存储介质
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
CN112329272B (zh) * 2020-12-14 2021-11-02 中国人民解放军国防科技大学 综合光伏组件退化和寿命数据的剩余寿命拟合预测方法
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US8200887B2 (en) * 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
JP4933861B2 (ja) * 2005-09-22 2012-05-16 株式会社日立製作所 ストレージ制御装置、データ管理システムおよびデータ管理方法
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US7653778B2 (en) * 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
JP2008015769A (ja) 2006-07-05 2008-01-24 Hitachi Ltd ストレージシステム及び書き込み分散方法
JP2008097502A (ja) * 2006-10-16 2008-04-24 Hitachi Ltd 容量監視方法及び計算機システム
JP2008310685A (ja) 2007-06-15 2008-12-25 Hitachi Ltd 冗長性を維持した性能最適化を行うストレージシステム
US20090144516A1 (en) * 2007-12-04 2009-06-04 Miklos Sandorfi Systems and methods for managing data storage media
JP5242264B2 (ja) * 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
JP2010097372A (ja) * 2008-10-16 2010-04-30 Hitachi Ltd ボリューム管理方式
JP5456063B2 (ja) * 2009-01-23 2014-03-26 エルエスアイ コーポレーション アロケートオンライトのスナップショットを用いた、ダイナミックストレージ階層化のための方法及びシステム
US8166232B2 (en) * 2009-04-02 2012-04-24 Hitachi, Ltd. Metrics and management for flash memory storage life
US8639877B2 (en) * 2009-06-30 2014-01-28 International Business Machines Corporation Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks
WO2011010344A1 (ja) * 2009-07-22 2011-01-27 株式会社日立製作所 複数のフラッシュパッケージを有するストレージシステム
US8489803B2 (en) * 2009-12-14 2013-07-16 Smsc Holdings S.A.R.L. Efficient use of flash memory in flash drives
JP4912456B2 (ja) * 2009-12-17 2012-04-11 株式会社日立製作所 ストレージ装置及びその制御方法
US8621141B2 (en) * 2010-04-01 2013-12-31 Intel Corporations Method and system for wear leveling in a solid state drive
US8700841B2 (en) * 2010-04-19 2014-04-15 International Business Machines Corporation Sub-LUN input/output profiling for SSD devices
JP5459102B2 (ja) * 2010-06-24 2014-04-02 富士通株式会社 ストレージ制御装置、ストレージシステム及びストレージ制御方法
US8812806B2 (en) * 2010-10-29 2014-08-19 Netapp, Inc. Method and system for non-disruptive migration
US8990538B2 (en) * 2010-11-05 2015-03-24 Microsoft Corporation Managing memory with limited write cycles in heterogeneous memory systems
US8775731B2 (en) * 2011-03-25 2014-07-08 Dell Products, L.P. Write spike performance enhancement in hybrid storage systems
US9164676B2 (en) * 2011-11-30 2015-10-20 International Business Machines Corporation Storing multi-stream non-linear access patterns in a flash based file-system

Also Published As

Publication number Publication date
US20130205070A1 (en) 2013-08-08
US20160306557A1 (en) 2016-10-20
EP2791774A1 (en) 2014-10-22
JP2015505078A (ja) 2015-02-16
WO2013118170A1 (en) 2013-08-15
CN104115109A (zh) 2014-10-22
IN2014DN05977A (ja) 2015-06-26
US9405478B2 (en) 2016-08-02

Similar Documents

Publication Publication Date Title
JP5844473B2 (ja) 複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法
US10162536B2 (en) Storage apparatus and storage control method
JP6073471B2 (ja) ストレージ装置
WO2014141411A1 (ja) ストレージシステムおよびストレージシステム制御方法
JP6000376B2 (ja) 特性の異なる複数種類のキャッシュメモリを有する情報処理装置
JP6286622B2 (ja) ストレージシステム
JP6216897B2 (ja) ストレージシステム
US10846231B2 (en) Storage apparatus, recording medium, and storage control method
US20160179403A1 (en) Storage controller, storage device, storage system, and semiconductor storage device
CN111194438B (zh) 扩展ssd长久性
JPWO2011010344A1 (ja) 複数のフラッシュパッケージを有するストレージシステム
CN113924546A (zh) 非易失性存储器中的磨损感知块模式转换
JP2019086974A (ja) ストレージシステム及びその制御方法
US10684785B2 (en) Storage system
JP2017199043A (ja) ストレージ装置とシステム及び方法とプログラム
JP6817340B2 (ja) 計算機
WO2019038859A1 (ja) 不揮発メモリデバイスを有するストレージシステム
JP5768118B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP5945040B2 (ja) 複数のフラッシュパッケージを有するストレージシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150527

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151118

R150 Certificate of patent or registration of utility model

Ref document number: 5844473

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees