JP5550741B1 - ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法 - Google Patents
ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法 Download PDFInfo
- Publication number
- JP5550741B1 JP5550741B1 JP2012543822A JP2012543822A JP5550741B1 JP 5550741 B1 JP5550741 B1 JP 5550741B1 JP 2012543822 A JP2012543822 A JP 2012543822A JP 2012543822 A JP2012543822 A JP 2012543822A JP 5550741 B1 JP5550741 B1 JP 5550741B1
- Authority
- JP
- Japan
- Prior art keywords
- logical address
- address areas
- unit
- data
- small
- 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.)
- Active
Links
- 239000007787 solid Substances 0.000 title claims abstract description 44
- 238000000034 method Methods 0.000 title claims description 72
- 238000012546 transfer Methods 0.000 claims description 7
- 238000013507 mapping Methods 0.000 description 80
- 230000008569 process Effects 0.000 description 53
- 238000010586 diagram Methods 0.000 description 24
- 238000013403 standard screening design Methods 0.000 description 22
- 238000012545 processing Methods 0.000 description 19
- 238000013467 fragmentation Methods 0.000 description 18
- 238000006062 fragmentation reaction Methods 0.000 description 18
- 238000003379 elimination reaction Methods 0.000 description 12
- 238000007726 management method Methods 0.000 description 12
- 230000008707 rearrangement Effects 0.000 description 10
- 230000001174 ascending effect Effects 0.000 description 8
- 230000007423 decrease Effects 0.000 description 8
- 230000008030 elimination Effects 0.000 description 8
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000007704 transition Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, 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)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
実施形態によれば、ストレージコントローラは、アクセス統計値収集部と選択部と再書き込み部とを含む。アクセス統計値収集部は、ソリッドステートドライブを用いて定義される論理ユニットの論理領域を構成する複数の一定サイズの小論理アドレス領域各々の書き込み頻度を収集する。選択部は、書き込み頻度が低い第1の小論理アドレス領域の集合を論理ユニットから選択する。再書き込み部は、第1の小論理アドレス領域の集合のデータをソリッドステートドライブにまとめて再書き込みし、残りの第2の小論理アドレス領域の集合のデータをソリッドステートドライブにまとめて再書き込みする。
Description
本発明の実施形態は、ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法に関する。
近年、ソリッドステートドライブ(SSD)を備えたストレージ装置が出現している。SSDは、書き換え可能な不揮発性メモリから構成される。書き換え可能な不揮発性メモリとしてフラッシュメモリが用いられるのが一般的である。SSDは、磁気ディスクを用いたハードディスクドライブ(HDD)と比べて、ディスクの回転に伴う機械的な制御を必要としないため高速なアクセスが可能である。
しかし、SSD(より詳細には、SSD内のフラッシュメモリ)への書き込みには、HDDへの書き込みとは異なり、いくつかの制約がある。第1は、SSDに既に書き込まれているデータを書き換える場合、当該SSD内では、当該データ(つまり既存の古いデータ)を消去してから新しいデータを書き込むという手順が必要である。さらにデータ消去は、例えば、数百キロバイト(KB)程度のサイズのブロック(メモリブロックまたは物理ブロック)と呼ばれる単位でしか実行できない。
そのため、一般的にSSDは、当該SSDを利用するホストコンピュータ(以下、ホストと称する)が必要とする(または認識する)ストレージデバイスの記憶容量よりも大容量のフラッシュメモリを用いて構成される。複数のSSDを備えストレージデバイスでは、SSDの記憶領域を一定容量(サイズ)毎に区切って設けた複数の物理ブロックを選択的に割り当てることにより複数の論理ユニット(論理ディスク)を定義(構築)している。ホストは、論理ユニットに対してデータの読み出し及び書き込みを行う。SSDは物理メモリあるいは物理ディスクと呼ばれる。ホストによる論理ユニットへのアクセスには論理アドレスが用いられ、物理メモリへのアクセスには物理アドレスが用いられる。論理アドレスは、一般に物理アドレスとは一致しない。また、仮に初期状態において論理アドレスが物理アドレスに一致していたとしても、論理ユニットのデータの書き換え(つまり物理メモリのデータの書き換え)が繰り返されると、論理アドレスは物理アドレスに一致しなくなる。
ホストは、論理アドレスを用いて論理ユニットに論理的にアクセスすることにより、物理メモリ(SSD)にアクセスする。このホストからのアクセスを可能とするために、例えばSDDに内蔵のコントローラは、論理アドレスと物理アドレスとの対応関係を管理する。
ここで、ストレージ装置が、論理アドレスと物理アドレスとが一致している初期状態にあるとする。この状態で、ブロックサイズよりも小さなサイズのデータの論理ユニットへの書き込みが行われたとする。この場合、SSDは書き込みが行われた論理アドレスに割り当てられている物理ブロックにデータの書き込みは行わず、データの更新は行わない。このデータの更新を行わない代わりに、更新前の旧データを無効として管理する。一方、SSDは新たに未使用の物理ブロックを前記論理アドレスに割り当て、この新たに割り当てられた物理ブロックにデータを書き込む。
SSDにおける無効化されたデータの領域の発生は、メモリ領域(より詳細には、有効なメモリ領域)の断片化(fragmentation)と呼ばれる。今、メモリ領域の断片化が進んで、無効化されたデータの領域を含むブロック(より詳細には、使用中ブロック)が増えたものとする。この場合、SSD(物理メモリ)内で使用可能なフリーブロック(未使用な物理ブロック)が減少することから、新たなデータ書き込みが行えなくなる。そのためSSDは自律的に、無効化されたデータの領域を含む複数の物理ブロックに記録されている有効データを、ひとまとめにして未使用な物理ブロックに再書き込みする。そしてSSDは、この再書き込みによって不要となった前記複数の物理ブロックのデータを消去する。このような処理を、断片化解消処理(デフラグメンテーション処理)と称する。この断片化解消処理により、前記複数の物理ブロックは未使用なブロック(フリーブロック)として再利用可能となる。
しかしながら、SSD内部で前述のような断片化解消処理が実行される頻度が高くなると、当該SSDのアクセス速度が低下する。
そこで、SSD(ソリッドステートドライブ)内で断片化解消処理が実行される頻度を低減することが要求されている。
本発明が解決しようとする課題は、ソリッドステートドライブにおいて断片化解消処理が実行される頻度を低減できるように当該ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法を提供することにある。
実施形態によれば、ストレージ装置は、ソリッドステートドライブとストレージコントローラとを具備する。前記ストレージコントローラは、前記ソリッドステートドライブを制御する。前記ストレージコントローラは、論理ユニット管理部と、アクセス統計値収集部と、選択部と、再書き込み部とを具備する。前記論理ユニット管理部は、前記ソリッドステートドライブの物理領域が割り当てられる論理領域を有する論理ユニットを定義する。前記アクセス統計値収集部は、前記論理ユニットの前記論理領域を構成する複数の一定サイズの小論理アドレス領域各々の書き込み頻度を収集する。前記選択部は、前記書き込み頻度に基づいて、前記書き込み頻度が低い第1の小論理アドレス領域の集合と前記第1の小論理アドレス領域の集合を除く第2の小論理アドレス領域の集合とをそれぞれ前記論理ユニットから選択する。前記再書き込み部は、前記第1の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みするための第1の再書き込みと、前記第2の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みするための第2の再書き込みとを実行する。
以下、実施の形態につき図面を参照して説明する。
<第1の実施形態>
図1は、第1の実施形態に係るストレージ装置の典型的なハードウェア構成を示すブロック図である。図1に示すストレージ装置は、ソリッドステートドライブ(SSD)10と、ホストコンピュータ(以下、ホストと称する)20とから構成される。SSD10は、ストレージ装置の物理メモリ11として用いられる。
<第1の実施形態>
図1は、第1の実施形態に係るストレージ装置の典型的なハードウェア構成を示すブロック図である。図1に示すストレージ装置は、ソリッドステートドライブ(SSD)10と、ホストコンピュータ(以下、ホストと称する)20とから構成される。SSD10は、ストレージ装置の物理メモリ11として用いられる。
ホスト20は、ストレージコントローラ21を備えている。第1の実施形態において、ストレージコントローラ21はホスト20に予め内蔵されている。しかし、ストレージコントローラ21が、ホスト20のカードスロットに装着して用いられるカードに備えられていても構わない。また、ストレージコントローラ21の一部がホスト20に内蔵され。当該ストレージコントローラ21の残りが前記カードに備えられていてもよい。
ストレージコントローラ21は、物理メモリ11(SSD10)の記憶領域を利用してホスト20から認識可能な論理ユニット(以下、LUと称する)12を定義する。ストレージコントローラ21は、論理アドレスを用いてLU12に論理的にアクセスすることにより、SSD10(物理メモリ11)にアクセスする。つまりストレージコントローラ21は、SSD10に対して、論理アドレスを用いてアクセスを要求する。SSD10(より詳細には、SSD10に内蔵のコントローラ)は、LU12の論理領域(論理アドレス)と物理メモリ11の物理領域(物理アドレス)との対応関係を管理する。SSD10は、ストレージコントローラ21からのアクセス要求の示す論理アドレスを上述の対応関係に基づいて物理アドレスに変換し、当該物理アドレスの示す物理領域にアクセスする。
図2は、図1に示されるストレージコントローラ21の典型的な機能構成を主として示すブロック図である。ストレージコントローラ21は、LU(論理ユニット)管理部211、アクセス統計値収集部212、選択部213、アクセスコントローラ214及び管理データ記憶部215を備えている。LU管理部211は、LU12を定義(構築)し、且つ管理する。
アクセス統計値収集部212は、LU12の小ブロックSB(つまり、小論理アドレス領域)毎にアクセス統計値を収集する。小ブロックSBは、後述する論理ブロックが等分割(例えば4分割)された部分的な領域である。以下の説明では、小ブロックSBを統計ブロックSBと称する。アクセス統計値は、例えば、ライト統計値W_I及びリード統計値R_Iから構成される。
ライト統計値W_Iは、アクセス統計値を収集するための予め定められた期間(以下、統計収集期間と称する)における、LU12のI(I=0,1,2…)番目の統計ブロックSBへのデータ書き込みの回数を示す。つまりライト統計値W_Iは、LU12のI番目の統計ブロックSBへのデータ書き込みの頻度(つまり更新頻度)を示す。“I”は、統計ブロックSBを示すインデックス値(統計インデックス値)である。
リード統計値R_Iは、統計収集期間における、LU12のI番目の統計ブロックSBからのデータ読み出しの回数を示す。つまりリード統計値R_Iは、LU12のI番目の統計ブロックSBからのデータ読み出しの頻度を示す。
選択部213は、LU12の統計ブロックSB毎の統計値(例えばライト統計値W_I)に基づいて、アクセス頻度(例えば書き込み頻度)が低い統計ブロックSBをアクセス頻度が低い順に、一定数選択する。アクセス頻度が低い統計ブロックSBの選択の後、選択部213は、残りの統計ブロックSBを選択する。つまり選択部213は、LU12の領域全体を、アクセス頻度が低い統計ブロックSB(第1の小ブロック)の集合と、アクセス頻度が高い統計ブロックSB(第2の小ブロック)の集合とに区分する。
アクセスコントローラ214は、ホスト20からのアクセス要求(アクセスコマンド)に応じ、LU12に論理的にアクセスすることにより物理メモリ11にアクセスする。アクセスコントローラ214は再書き込み部214aを備えている。再書き込み部214aは、統計収集期間が経過する毎に、選択部213によって選択された書き込み頻度が低い統計ブロックSBのデータを当該統計ブロックSBに論理的に再書き込み(上書き)する。このLU12への論理的な再書き込みは、物理メモリ11(SSD10内のコントローラ)内では、連続するメモリブロックへのデータの再書き込み(つまり再配置)として実現される。再書き込み部214aは、書き込み頻度が低い統計ブロックSBのデータの再書き込みの後、残りの統計ブロックSBのデータを当該統計ブロックSBに論理的に再書き込み(上書き)する。
第1の実施形態において、ストレージコントローラ21の上述の機能要素(つまりLU管理部211、アクセス統計値収集部212、選択部213及びアクセスコントローラ214)は、図1に示されるホスト20(または当該ホスト20内のストレージコントローラ21)のCPUがストレージ制御プログラムを実行することにより実現されるソフトウェアモジュールである。しかし、機能要素211乃至214の一部または全部がハードウェアモジュールによって実現されても構わない。
管理データ記憶部215は、例えばホスト20(または当該ホスト20内のストレージコントローラ21)が有するメモリの記憶領域の一部を用いて実現される。管理データ記憶部215には、アクセス統計値テーブル(以下、ASTと称する)215aが格納される。AST215aの各エントリは、LU12の統計ブロックSBの統計インデックス値Iに対応付けてアクセス統計値(ライト統計値W_I及びリード統計値R_I)を格納するのに用いられる。
第1の実施形態の特徴は、選択部213によって選択されたアクセス頻度が低い統計ブロックSBのデータを、再書き込み部214aによるデータ再書き込みによって、SSD10(物理メモリ11)の連続するメモリブロックに再配置することにある。このような再書き込みを適用する理由について、以下に説明する。
SSD10が物理メモリ11として用いられる第1の実施形態では、ストレージコントローラ21がLU12に書かれたデータ(より詳細には、ブロックサイズよりも小さなサイズのデータ)を更新すると、SSD10内では無効データの領域が発生する。したがって、このようなデータ更新(データ書き込み)がLU12内の多くの論理領域(論理アドレス領域)に対して行われると、従来技術の説明からも明らかなように、メモリ領域の断片化が進んで、無効データの領域を含む使用中のメモリブロック(物理ブロック)が増える。この場合、SSD10内では、断片化解消処理が自律的に実行される。しかし、この断片化解消処理が頻繁に実行されると、SSD10(物理メモリ11)のアクセス速度が低下する。このことは、LU12のアクセス速度が低下することと等価である。
そこで、断片化解消処理が実行される頻度を低減するために、SSD10のメモリブロック内の無効データを減らすことが考えられる。そのためには、LU12の全論理アドレス領域のデータが当該LU12にシーケンシャルに再度書き込まれると良い。その理由は、LU12へのシーケンシャルなデータ書き込みは、SSD10内では、空いている連続するメモリブロックへのデータの再書き込み(つまり再配置)として実現されるからである。つまり、連続する論理アドレスでLU12にデータを論理的に書き込む動作により、当該データが物理メモリ11にまとまって記録されるからである。
しかし、ホスト20からのLU12へのアクセスは、同一ストレージ装置内では同様の傾向(パターン)となりがちである。このため、上述のようにシーケンシャルライトにより物理メモリ11内の連続する領域にデータを配置しても、その後の書き込みによって無効データの領域が再び出現する。
そこで第1の実施形態は、無効データの領域を減らすために、つまり断片化解消処理が実行される頻度を低減するために、選択部213による統計ブロックSBの選択と、再書き込み部214aによるデータ再書き込みを適用する。この方法の概要について説明する。
一般に、LU12への論理的な書き込みによりSSD10のような物理メモリにデータを書き込む場合、当該LU12の論理アドレス領域(論理領域)全体に対して均一に書き込みが発生するわけではない。つまり、LU12内には、書き込み(更新)頻度の低い論理アドレス領域と書き込みの高い論理アドレス領域とが分布している。
そこで発明者は、SSD10(物理メモリ11)のメモリ領域の断片化を減らすためには、書き込み頻度に基づくデータの再配置が有効であると認識するに至った。このデータの再配置とは、書き込み頻度が低い論理アドレス領域のデータと書き込み頻度が高い論理アドレス領域のデータとをそれぞれSSD10内の異なるメモリブロックに再書き込み(再配置)することである。
このようなデータ再配置を適用するならば、ホスト20(ストレージコントローラ21)は、SSD10の領域が書き込み頻度の低い第1のメモリブロックの集合と書き込み頻度の高い第2のメモリブロックの集合とに分かれた状態でSSD10を利用することになる。この場合、第2のメモリブロックの集合に対応する論理アドレス領域への書き込み動作は発生するものの、第1のメモリブロックの集合に対応する論理アドレス領域への書き込み動作は殆ど発生しない。よって、断片化の発生を、書き込み頻度が高いメモリブロックの集合に限定することができるため、SSD10全体での断片化の発生量を減らすことができる。
以下、第1の実施形態における再書き込み部214aによるデータの再書き込みを、図3及び図4を参照して説明する。図3は書き込み頻度が低い論理アドレス領域のデータの再書き込みを説明するための図、図4は書き込み頻度が高い論理アドレス領域のデータの再書き込みを説明するための図である。図3において、矢印301,303,305及び307で示される論理アドレスから始まるLU12のそれぞれ論理アドレス領域302,304,306及び308は、書き込み頻度が低い不連続な論理アドレス領域である。図4において、矢印401,403及び405で示される論理アドレスから始まるLU12のそれぞれ論理アドレス領域402,404及び406は、書き込み頻度が高い(より詳細には、書き込み頻度が低くない)不連続な論理アドレス領域である。
再書き込み部214aはまず、書き込み頻度が低い論理アドレス領域302,304,306及び308のデータを連続的に読み出して、当該読み出されたデータを当該論理アドレス領域302,304,306及び308に論理的に再書き込みする(つまり上書き)する。この再書き込みのために再書き込み部214aは、論理アドレス領域302,304,306及び308からのデータの連続する読み出しと、連続して読み出されたデータの論理アドレス領域302,304,306及び308への書き込みとを、対応する論理アドレスを用いて物理メモリ11(SSD10)に要求する。
物理メモリ11(SSD10)の記憶領域(物理アドレス領域)は、複数の一定サイズのメモリブロック(物理ブロック)PB_0,PB_1,…,PB_M−1,PB_M,…から構成されている。メモリブロックは、物理メモリ11におけるデータ消去の最小の単位である。
物理メモリ11(SSD10内のコントローラ)は、再書き込み部214aからの読み出し要求に応じて、図3に示される論理アドレス領域302,304,306及び308に割り当てられている当該物理メモリ11(SSD10)の物理アドレス領域(物理領域)のデータを連続して読み出す。例えば、論理アドレス領域302,304,306及び308の総サイズは、予め定められた数(図3の例では、M個)のメモリブロックの総サイズに一致するものとする。
物理メモリ11(SSD10内のコントローラ)は、再書き込み部214aからの前記読み出し要求に続く書き込み要求に応じて、論理アドレス領域302,304,306及び308に割り当てられている当該物理メモリ11(SSD10)の物理アドレス領域を無効とする。また物理メモリ11(SSD10内のコントローラ)は、論理アドレス領域302,304,306及び308の総サイズに対応する個数(つまりM個)のフリーメモリブロック(より詳細には、物理位置が連続するM個のフリーメモリブロック)、例えばメモリブロックPB_0,PB_1,…,PB_M−1を確保する。そして物理メモリ11(SSD10内のコントローラ)は、図3に示されるように、前記書き込み要求で指定されたデータ、つまり論理アドレス領域302,304,306及び308から読み出されたデータを、メモリブロックPB_0,PB_1,…,PB_M−1に、メモリブロックPB_0の先頭から順にシーケンシャルに書き込む。
このようにして、書き込み頻度が低い論理アドレス領域のデータが、連続するM個のメモリブロックPB_0乃至PB_M−1の集合(メモリブロック集合)309(図3参照)にまとまって書き込まれる。以後、物理メモリ11(SSD10内のコントローラ)は、論理アドレス領域302,304,306及び308を、メモリブロックPB_0,PB_1,…,PB_M−1(メモリブロック集合309)内の対応する物理アドレス領域に関連付けて管理する。
次に再書き込み部214aは、上述の再書き込みの対象とならなかった、残りの論理アドレス領域のデータ、つまり論理アドレス領域402,404及び406を含む書き込み頻度が高い論理アドレス領域のデータを、上述の書き込み頻度が低い論理アドレス領域のデータの再書き込みと同様にして、当該書き込み頻度が高い論理アドレス領域に再書き込みする。これにより、物理メモリ11(SSD10内のコントローラ)は、論理アドレス領域402,404及び406を含む書き込み頻度が高い論理アドレス領域のデータを、図4に示されるように、例えばメモリブロックPB_Mから始まる連続するメモリブロックの集合(メモリブロック集合)407にシーケンシャルに書き込む。
このようにして、書き込み頻度が高い論理アドレス領域のデータが、メモリブロック集合309とは別のメモリブロック集合407(図4参照)にまとまって書き込まれる。以後、物理メモリ11(SSD10内のコントローラ)は、論理アドレス領域402,404及び406を含む書き込み頻度が高い論理アドレス領域とメモリブロック集合407内の対応する物理アドレス領域とを関連付けて管理する。
明らかなように、書き込み頻度が低い領域のデータがまとめて再書き込みされた、物理メモリ11(SSD10)内のブロック集合309では、無効データの領域が発生しにくくなる。これにより第1の実施形態によれば、物理メモリ11(SSD10内のコントローラ)内で断片化解消処理が実行される頻度は減少し、当該物理メモリ11(SSD10)のアクセス速度の低下(つまりLU12のアクセス速度の低下)を防止できる。
次に、上述のような再書き込みのために第1の実施形態で適用される書き込み頻度の収集について、図5を参照して説明する。図5は、LU12の記憶領域と、論理ブロックと、統計ブロックSBとの関係を説明するための図である。
LU12の記憶領域は、物理メモリ11(SSD10)のメモリブロックと同一サイズの複数の論理ブロックLB_0,LB−1,…から構成される。つまりLU12の記憶領域は、メモリブロックと同一サイズの複数の論理ブロックLB_0,LB−1,…にLU管理部211によって分割(つまり区分)して管理される。LU12の論理ブロックLB_j(j=0,1,…)の数は、物理メモリ11(SSD10)のメモリブロックPB_i(i=0,1,…)の数よりも少ない。
LU12の各論理ブロックLB_jは、一定サイズの複数の統計ブロック(小ブロック)SBに分割されて管理される。図5の例では、各論理ブロックLB_jは、4つの統計ブロックSBに分割される。LU12の論理ブロックLB_jの数がNであるものとすると、LU12全体の統計ブロックSBの数は4Nとなる。この場合、LU12の論理領域全体は4N個の統計ブロックSBに分割して管理される。つまりLU12の論理領域は、4N個の統計ブロック(小ブロック)SBから構成される。
統計ブロックSBは、統計インデックス値Iによって特定される。第1の実施形態において統計ブロックSBは、書き込み頻度が収集される単位である。つまり第1の実施形態では、論理ブロックLB_j(またはメモリブロックPB_i)よりも小サイズの統計ブロックSBを単位に、書き込み頻度が収集される。また第1の実施形態では、統計ブロックSBに対するデータ書き込みの頻度を示すライト統計値W_Iとして、書き込み回数(ライトカウント)が用いられる。
アクセス統計値収集部212は、統計収集期間において統計ブロックSBへのデータ書き込みが発生する都度、当該統計ブロックSBのライト統計値W_Iを1インクリメントする。後述する第2の実施形態では、統計ブロックSB毎のライト統計値W_Iに加えて、当該統計ブロックSBからのデータ読み出しの頻度を示すリード統計値R_Iも用いられる。そこでアクセス統計値収集部212は、統計収集期間において統計ブロックSBからのデータ読み出しが発生する都度、当該統計ブロックSBのリード統計値R_Iを1インクリメントする。但し、第2の実施形態では、統計ブロックSB、つまり小ブロックSBは、第1の実施形態と異なり、ストレージコントローラ側で管理されるマッピングの単位である。つまり第2の実施形態では、ストレージコントローラは、LU内の小ブロックSB(マッピング単位)毎に、当該小ブロックSBと物理領域(物理メモリ内の物理領域)とを対応付ける。統計ブロック(小ブロック)SB毎のライト統計値W_I及びリード統計値R_Iは、当該統計ブロックSBの統計インデックス値Iに対応付けてAST215aに格納される。
ここで、SSDを含む複数の物理ディスクを用いて実現されるRAID(Redundant Arrays of Independent DisksまたはRedundant Arrays of Inexpensive Disks)構成の物理メモリ(アレイ)を備えたストレージ装置を想定する。このようなストレージ装置は、LUの論理アドレスを、アクセス統計値に基づいて動的に変更する機能を持つストレージコントローラを持つ可能性がある。もし、図1に示すディスク装置のストレージコントローラ21が、このような機能を有しているならば、アクセス統計値収集部212は、この機能を利用すれば良い。
次に、第1の実施形態における再書き込み部214aによる再書き込みの具体例について、図6乃至図8を参照して説明する。図6は、統計収集期間が経過した時点におけるLU12の統計ブロック毎のライト統計値と当該統計ブロックのデータの再配置位置との関係を説明するための図である。図7は、ライト統計値が大きい統計ブロックのデータの再書き込みを説明するための図、図8は、ライト統計値が小さい統計ブロックのデータの再書き込みを説明するための図ある。
第1の実施形態において再書き込み部214aは、統計収集期間が経過する毎に、以下に述べる再書き込みを実行する。図6の例では、統計収集期間が経過した時点におけるLU12の論理ブロックLB_0内の4つの統計ブロックSBのライト統計値W_Iは、75,37,110及び23である。また、LU12の論理ブロックLB_1内の4つの統計ブロックSBのライト統計値W_Iは、66,101,15及び105である。また、LU12の論理ブロックLB_3内の4つの統計ブロックSBのライト統計値W_Iは、88,96,12及び40である。また、LU12の論理ブロックLB_2内の4つの統計ブロックSBのライト統計値W_Iは、図6では省略されているが、全て96未満であるものとする。
選択部213は、再書き込み部214aによる再書込に際し、LU12内の統計ブロックSBを当該統計ブロックSBのライト統計値W_Iの昇順にソートする。そして選択部213は、ライト統計値W_Iが最も小さい統計ブロックSBから順に一定個数の統計ブロックSBを、書込頻度が低い統計ブロックSB(第1の小論理アドレス領域)の集合として選択する。前記一定個数は、各論理ブロックが4つの統計ブロックSBに分割される第1の実施形態では、4Mである。この4M個の統計ブロックSBの総サイズは、M個の論理ブロックの総サイズに一致する。
図6の例では、Mが3である。この場合、まず選択部213は、ライト統計値W_Iが小さい4×3(=12)個の統計ブロックSB(つまり3個の論理ブロックに相当するサイズの論理アドレス領域)を、当該ライト統計値W_Iが最も小さい統計ブロックSBから順に、書き込み頻度が低い統計ブロックSBとして選択する。つまり選択部213は、書き込み頻度が低い4×3個の統計ブロックSBから構成される論理アドレス領域(論理領域)を選択する。ここでは、選択部213は、図6に示されるLU12内の論理アドレス領域601,603,604,606,608,609及び611を選択する。
論理アドレス領域601は、論理ブロックLB_0内のライト統計値W_Iが75及び37の2つの連続する統計ブロックSBから構成される。論理アドレス領域603は、論理ブロックLB_0内のライト統計値W_Iが23の統計ブロックSBから構成される。論理アドレス領域604は、論理ブロックLB_1内のライト統計値W_Iが66の統計ブロックSBから構成される。論理アドレス領域606は、論理ブロックLB_1内のライト統計値W_Iが15の統計ブロックSBから構成される。論理アドレス領域608は、論理ブロックLB_2内のライト統計値W_Iが96未満の4つの連続する統計ブロックSBから構成される。論理アドレス領域609は、論理ブロックLB_3内のライト統計値W_Iが88の統計ブロックSBから構成される。論理アドレス領域611は、論理ブロックLB_3内のライト統計値W_Iが12及び40の2つの連続する統計ブロックSBから構成される。
このように選択部213は、総サイズが、4M(=4×3)個の統計ブロックSBのそれに一致する、LU12内の書込頻度が低い論理アドレス領域601,603,604,606,608,609及び611を選択する。再書き込み部214aは、選択部213によって選択された書き込み頻度が低い論理アドレス領域601,603,604,606,608,609及び611のデータを、当該論理アドレス領域601,603,604,606,608,609及び611に再書き込み(上書き)する動作(第1の再書き込み)を実行する。
これにより、論理アドレス領域601,603,604,606,608,609及び611のデータ、つまり当該論理アドレス領域601,603,604,606,608,609及び611に割り当てられていた物理メモリ11(SSD10)内の物理アドレス領域のデータは、物理メモリ11(SSD10)の連続するM(M=3)個のメモリブロック(物理ブロック)に再配置される。ここでは、論理アドレス領域601,603,604,606,608,609及び611のデータが、図6に示されるように、物理メモリ11(SSD10)のメモリブロックPB_0乃至PB_2に再配置されるものとする。以後、物理メモリ11(SSD10内のコントローラ)は、論理アドレス領域601,603,604,606,608,609及び611とメモリブロックPB_0乃至PB_2内の対応する物理アドレス領域とを関連付けて管理する。
より詳細に述べるならば、再書き込み部214aは、図7に示すように、LU12内の書き込み頻度が低い論理アドレス領域601,603,604,606,608,609及び611のデータを論理的に且つ連続的にリードする。この論理的なリードは、物理メモリ11(SSD10内のコントローラ)内では、現在論理アドレス領域601,603,604,606,608,609及び611に割り当てられている物理アドレス領域からデータをリードする動作として実現される。
次に再書き込み部214aは、論理アドレス領域601,603,604,606,608,609及び611からリードされたデータを、図7に示すように、当該論理アドレス領域601,603,604,606,608,609及び611に論理的に且つ連続的に再書き込み(上書き)する。このLU12へのデータの論理的な再書き込み(上書き)は、物理メモリ11(SSD10内のコントローラ)内では、論理アドレス領域601,603,604,606,608,609及び611からリードされたデータを、図7に示すように、当該物理メモリ11(SSD10)内の連続するメモリブロック(物理ブロック)PB_0乃至PB_2にライトする動作として実現される。
書き込み頻度が低い論理アドレス領域のデータの再書き込みの後、選択部213は、LU12内の残りの論理アドレス領域、つまり図6に示される論理アドレス領域602,605,607及び610を含む書き込み頻度が高い論理アドレス領域を選択する。再書き込み部214aは、選択部213によって選択された書き込み頻度が高い論理アドレス領域のデータ、つまり図6に示される論理アドレス領域602,605,607及び610を含む書き込み頻度が高い論理アドレス領域のデータを、当該書き込み頻度が高い論理アドレス領域に再書き込み(上書き)する動作(第2の再書き込み)を実行する。
これにより、論理アドレス領域602,605,607及び610のデータ、つまり当該論理アドレス領域602,605,607及び610に割り当てられていた物理メモリ11(SSD10)内の物理アドレス領域のデータは、図6に示されるように、物理メモリ11(SSD10)の例えばメモリブロック(物理ブロック)PB_2に後続するメモリブロックPB_3に再配置される。以後、物理メモリ11(SSD10)は、論理アドレス領域602,605,607及び610とメモリブロックPB_3内の対応する物理アドレス領域とを関連付けて管理する。
より詳細に述べるならば、再書き込み部214aは、図8に示すように、LU12内の論理アドレス領域602,605,607及び610を含む書き込み頻度が高い論理アドレス領域のデータを論理的に且つ連続的にリードする。この論理的なリードは、物理メモリ11(SSD10内のコントローラ)内では、現在論理アドレス領域602,605,607及び610を含む書き込み頻度が高い論理アドレス領域のデータに割り当てられている物理アドレス領域からデータをリードする動作として実現される。
次に再書き込み部214aは、論理アドレス領域602,605,607及び610を含む書き込み頻度が高い論理アドレス領域からリードされたデータを、図8に示すように、当該書き込み頻度が高い論理アドレス領域(つまり元の論理アドレス領域)に論理的に且つ連続的に再書き込み(上書き)する。このLU12へのデータの論理的な再書き込み(上書き)は、物理メモリ11(SSD10内のコントローラ)内では、論理アドレス領域602,605,607及び610を含む書き込み頻度が高い論理アドレス領域からリードされたデータを、図8に示すように、当該物理メモリ11(SSD10)内のメモリブロック(物理ブロック)PB_3から始まる連続するメモリブロックにライトする動作として実現される。
次に、第1の実施形態におけるアクセス統計値(ライト統計値W_Iまたはリード統計値R_I)の更新を含むコマンド処理について、図9を参照して説明する。図9は、コマンド処理の手順を示すフローチャートである。
ストレージコントローラ21は、ホスト20からコマンドを受信した場合(ステップS1)。当該受信されたコマンドがディスクコマンドであるかを判定する(ステップS2)。もし、受信されたコマンドがディスクアクセスコマンドであるならば(ステップS2のYes)、当該コマンドは、アクセス先を指定する論理アドレス(つまりアクセス対象アドレス)を含む。
前記受信コマンドがディスクアクセスコマンドである場合(ステップS2のYes)、ストレージコントローラ21のアクセスコントローラ214は、当該受信コマンドに含まれているアクセス対象アドレスに基づいて、アクセス先の統計ブロックを示す統計インデックス値Iを算出する(ステップS3)。ここでは説明の簡略化のために、アクセス範囲が統計ブロックのサイズに一致し、且つ2つの統計ブロックにまたがらないものとする。この場合、アクセスコントローラ214は、アクセス対象アドレスを統計ブロックサイズで除することにより、統計インデックス値Iを算出する。
次にストレージコントローラ21は、前記受信コマンド(ディスクアクセスコマンド)がリードコマンドであるかを判定する(ステップS4)。もし、前記受信コマンドがリードコマンドであるならば(ステップS4のYes)、ストレージコントローラ21のアクセス統計値収集部212は、ステップS3で算出された統計インデックス値Iに対応付けてAST215aに格納されているリード統計値R_Iを1インクリメントする(ステップS5)。これに対し、前記受信コマンドがライトコマンドであるならば(ステップS4のNo)、アクセス統計値収集部212は、ステップS3で算出された統計インデックス値Iに対応付けてAST215aに格納されているライト統計値W_Iを1インクリメントする(ステップS6)。
ストレージコントローラ21(より詳細には、ストレージコントローラ21のアクセスコントローラ214)は、アクセス統計値収集部212によってステップS5またはS6が実行されると、前記受信コマンド(つまりリードコマンドまたはライトコマンド)の指定する処理(ディスクアクセス処理)を実行する(ステップS7)。一方、前記受信コマンドがディスクアクセスコマンドでない場合(ステップS2のNo)、ストレージコントローラ21はステップS4乃至S6をスキップして、当該受信コマンドの指定する処理(ディスクアクセスとは異なる処理)を実行する(ステップS7)。なお、第1の実施形態では、リード統計値R_Iは必ずしも必要でない。したがって、ステップS5は必ずしも必要でない。
<第2の実施形態>
図10は、第2の実施形態に係るストレージ装置を含むストレージシステムの典型的なハードウェア構成を示すブロック図である。図1に示すストレージシステムは、ストレージ装置100、ホストコンピュータ(以下、ホストと称する)200、及びネットワーク300から構成される。ストレージ装置100は、ネットワーク300を介してホスト200と接続されている。ホスト200は、ストレージ装置100を外部記憶装置として利用する。
図10は、第2の実施形態に係るストレージ装置を含むストレージシステムの典型的なハードウェア構成を示すブロック図である。図1に示すストレージシステムは、ストレージ装置100、ホストコンピュータ(以下、ホストと称する)200、及びネットワーク300から構成される。ストレージ装置100は、ネットワーク300を介してホスト200と接続されている。ホスト200は、ストレージ装置100を外部記憶装置として利用する。
ストレージ装置100は、複数のSSD、例えば4つのSSD110−1(#1)乃至110−4(#4)と、複数のHDD、例えば4つのHDD120−1(#1)乃至120−4(#4)と、ストレージコントローラ130を備えている。このようにストレージコントローラ130は、前記第1の実施形態におけるストレージコントローラ21と異なり、ホスト200から独立して備えられている。ストレージコントローラ130はSSD110−1乃至110−4及びHDD120−1乃至120−4と接続されており、当該SSD110−1乃至110−4及びHDD120−1乃至120−4を制御する。
ストレージコントローラ130は、SSD110−1乃至110−4及びHDD120−1乃至120−4の少なくとも1つの記憶領域を利用してホスト200から認識可能なLU150を定義する。図10の例では、LU150が、SSD110−1及びHDD120−1の記憶領域を利用して定義されている。またストレージコントローラ130は、LU150の論理アドレス領域(論理領域)に割り当てられる物理アドレス領域(物理領域)を提供する物理メモリ140を定義する。図10の例では、物理メモリ140は、SSD110−1及びHDD120−1から構成されるアレイ(ディスクアレイ)である。
図11は、図10に示されるストレージコントローラ130の典型的な機能構成を主として示すブロック図である。図11において、図2と等価な要素には同一参照番号が付されている。以下、図11に示されるストレージコントローラ130の構成について、図2に示されるストレージコントローラ21の構成と相違する点を中心に説明する。
ストレージコントローラ130は、図2に示されるストレージコントローラ21と同様に、LU管理部211、アクセス統計値収集部212、選択部213、アクセスコントローラ214及び管理データ記憶部215を備えている。LU管理部211は、前記第1の実施形態と異なり、マッピング部211aを備えている。
マッピング部211aは、LU150のマッピング単位の論理アドレス領域毎に、物理メモリ140内のドライブ(物理ディスク)、つまりSSD110−1またはHDD120−1を割り当てる(対応付ける)。このLU150の論理アドレス領域と物理メモリ140内のドライブとの対応付けをマッピングと呼ぶ。より詳細に述べるならば、マッピング部211aはマッピングによって、LU150のマッピング単位の論理アドレス領域毎に、当該論理アドレス領域を、当該論理アドレス領域に割り当てられるドライブと、当該ドライブによって認識される論理アドレス領域(以下、ドライブ論理アドレス領域)とに対応付ける。LU150の論理アドレス領域(論理アドレス)にSSDが割り当てられる場合に、当該論理アドレス領域(論理アドレス)に対応付けられるドライブ論理アドレス領域(ドライブ論理アドレス)をSSD論理アドレス領域(SSD論理アドレス)と呼ぶ。これに対し、LU150の論理アドレス領域(論理アドレス)にHDDが割り当てられる場合に、当該論理アドレス領域(論理アドレス)に対応付けられるドライブ論理アドレス領域(ドライブ論理アドレス)をHDD論理アドレス領域(HDD論理アドレス)と呼ぶ。前記第1の実施形態は、LU150の全ての論理アドレスがSSD論理アドレスに等しい場合に相当する。
マッピング部211aは、LU150のマッピング単位毎のアクセス頻度に基づいて、当該LU150の論理アドレス領域とドライブとのマッピングを動的に変更する。このマッピングを変更する機能(つまり再マッピング機能)を利用して、マッピング部211aが、アクセス頻度が高い論理アドレス領域にSSD110−1(つまりアクセス速度が高速なSSD110−1)を再割り当てし、アクセス頻度が低い論理アドレス領域にHDD120−1(つまりアクセス速度が低速なHDD120−1)を再割り当てすることが想定される。この場合、LU150(ストレージ装置100)全体のアクセス速度の向上が期待される。
しかし上述の再マッピングでは、SSD110−1内に書き込み頻度が高いメモリブロックと読み出し頻度が高いメモリブロックとが混在する可能性がある。読み出し頻度が高いメモリブロックは、書き込み頻度が低いメモリブロックを含む可能性がある。このような場合、SSD110−1内では断片化解消処理が多発して、当該SSD110−1のアクセス速度が低下する。
そこでマッピング部211aは、SSD110−1内で断片化解消処理が多発するのを防止するための再マッピングを、ライト統計値W_I及びリード統計値R_Iに基づいて行う。また選択部213は、この再マッピングに伴う再書き込み部214aによる再書き込みのために、ライト統計値W_I及びリード統計値R_Iに基づいて、マッピング単位に論理アドレス領域を選択する
管理データ記憶部215には、AST215aに加えてマッピングテーブル(以下、MTと称する)215bが格納される。MT215bの各エントリは、LU150のマッピング単位の論理アドレス(つまり統計ブロックSBの統計インデックス値I)と、当該論理アドレス(統計インデックス値I)の論理アドレス領域(統計ブロックSB)に割り当てられたドライブ(SSD110−1またはHDD120−1)及びドライブ論理アドレス(SSD論理アドレスまたはHDD論理アドレス)との対応を示す情報(つまりマッピング情報)を格納するのに用いられる。
管理データ記憶部215には、AST215aに加えてマッピングテーブル(以下、MTと称する)215bが格納される。MT215bの各エントリは、LU150のマッピング単位の論理アドレス(つまり統計ブロックSBの統計インデックス値I)と、当該論理アドレス(統計インデックス値I)の論理アドレス領域(統計ブロックSB)に割り当てられたドライブ(SSD110−1またはHDD120−1)及びドライブ論理アドレス(SSD論理アドレスまたはHDD論理アドレス)との対応を示す情報(つまりマッピング情報)を格納するのに用いられる。
次に、第2の実施形態における動作について、再マッピング処理(つまりデータ再配置処理)を例に、図12及び図13を参照して説明する。図12は、再マッピング処理を説明するための図、図13は再マッピング処理の手順を示すフローチャートである。
図12において、LU150内の論理アドレス領域X1,X2及びX3は、書き込み頻度が高い論理アドレス領域である。論理アドレス領域X1乃至X3の読み出し頻度は、高くても或いは低くても構わない。論理アドレス領域X1乃至X3を含む書き込み頻度が高い論理アドレス領域(以下、第2の論理アドレス領域と称する)の総サイズは、例えばMx個(ここでは、Mx=2とする)のメモリブロックの総サイズに一致する。図12において、論理アドレス領域X1乃至X3以外の書き込み頻度が高い論理アドレス領域は省略されている。
LU150内の論理アドレス領域Y1,Y2,Y3,Y4,Y5及びY6は、読み出し頻度が高く且つ書き込み頻度が低い論理アドレス領域(以下、第1の論理アドレス領域と称する)である。第1の論理アドレス領域Y1乃至Y6の総サイズは、例えばMy個(ここでは、My=2とする)のメモリブロックの総サイズに一致する。
LU150内の論理アドレス領域Z1,Z2,Z3,Z4,Z5,Z6及びZ7は、前記第2の論理アドレス領域と、前記第1の論理アドレス領域Y1乃至Y6とを除く、LU150内の論理アドレス領域(以下、第3の論理アドレス領域と称する)である。つまり第3の論理アドレス領域Z1乃至Z7は、読み出し頻度が低く且つ書き込み頻度も低い論理アドレス領域である。
再マッピング処理は、統計収集期間が経過する毎に、図13のフローチャートに示される手順で次のように実行される。まず選択部213は、LU150の全領域(つまり全統計ブロックSB)を、AST215aに格納されているマッピング単位毎のライト統計値W_Iの昇順にソートする(ステップS11)。そして選択部213は、ライト統計値W_Iのソート結果に基づいて、ライト統計値W_Iの大きい(つまり書き込み頻度が高い)論理アドレス領域から順に、Mx個(Mx=2)のメモリブロックに一致する量だけ、論理アドレス領域Xを選択する(ステップS12)。ここでは、論理アドレス領域X1乃至X3を含む第2の論理アドレス領域が、論理アドレス領域Xとして選択される。
次に選択部213は、選択された論理アドレス領域X(つまり書き込み頻度が高い第2の論理アドレス領域)を除く、LU150の領域を、AST215aに格納されているマッピング単位毎のリード統計値R_Iの昇順にソートする(ステップS13)。そして選択部213は、リード統計値R_Iのソート結果に基づいて、リード統計値R_Iの大きい(つまり読み出し頻度が高い)論理アドレス領域から順に、My個(My=2)のメモリブロックに一致する量だけ、論理アドレス領域Yを選択する(ステップS14)。ここでは、読み出し頻度が高く且つ書き込み頻度が低い第1の論理アドレス領域Y1乃至Y6が、論理アドレス領域Yとして選択される。
するとマッピング部211a及び再書き込み部214aは、ステップS15乃至S17から構成される処理Pxを次のように実行する。まずマッピング部211aは、ステップS14で選択された論理アドレス領域Y(つまり第1の論理アドレス領域Y1乃至Y6)の論理アドレスに、SSD110−1を再割り当て(再マッピング)する(ステップS15)。つまりマッピング部211aは、MT215bを更新することにより、第1の論理アドレス領域Y1乃至Y6に、SSD110−1及び第1のSSD論理アドレス(例えば、連続する第1のSSD論理アドレス)を割り当てる。
ステップS15において再書き込み部214aは、第1の論理アドレス領域Y1乃至Y6(より詳細には、再マッピング以前に第1の論理アドレス領域Y1乃至Y6に割り当てられていたドライブ)に書き込まれているデータを、再マッピングによって新たに第1の論理アドレス領域Y1乃至Y6に割り当てられたSSD110−1に再書き込みする。これにより第1の論理アドレス領域Y1乃至Y6のデータが、図12に示されるように、SSD110−1内の連続するMy個(My=2)のメモリブロックから構成される物理アドレス領域111に再配置される。
次にマッピング部211aは、ステップS12で選択された論理アドレス領域X(つまり論理アドレス領域X1乃至X3を含む書き込み頻度が高い第2の論理アドレス領域)の論理アドレスに、SSD110−1を再マッピングする(ステップS16)。つまりマッピング部211aは、MT215bを更新することにより、論理アドレス領域X1乃至X3を含む第2の論理アドレス領域に、SSD110−1及び第2のSSD論理アドレス(例えば、前記連続する第1のSSD論理アドレスに後続する連続する第2のSSD論理アドレス)を割り当てる。
ステップS16において再書き込み部214aは、第2の論理アドレス領域(より詳細には、再マッピング以前に第2の論理アドレス領域に割り当てられていた物理アドレス領域)に書き込まれているデータを、再マッピングによって新たに第2の論理アドレス領域に割り当てられたSSD110−1に再書き込みする。これにより第2の論理アドレス領域(つまり論理アドレス領域X1乃至X3を含む書き込み頻度が高い論理アドレス領域)のデータが、図12に示されるように、SSD110−1内の連続するMx個(Mx=2)のメモリブロックから構成される物理アドレス領域112に再配置される。物理アドレス領域112は、ステップS15に続いてステップS16が実行されることから、一般に物理アドレス領域111に後続する。
次にマッピング部211aは、ステップS12及びS14の何れにおいても選択されなかったLU150内の残りの論理アドレス領域Z(つまり第3の論理アドレス領域Z1乃至Z7)の論理アドレスに、HDD120−1を再マッピングする(ステップS17)。つまりマッピング部211aは、MT215bを更新することにより、第3の論理アドレス領域Z1乃至Z7に、HDD120−1及びHDD論理アドレス(例えば、連続するHDD論理アドレス)を割り当てる。
ステップS17において再書き込み部214aは、第3の論理アドレス領域Z1乃至Z7(より詳細には、再マッピング以前に第3の論理アドレス領域Z1乃至Z7に割り当てられていた物理アドレス領域)に書き込まれているデータを、再マッピングによって新たに当該第3の論理アドレス領域Z1乃至Z7に割り当てられたHDD120−1に再書き込みする。これにより第3の論理アドレス領域Z1乃至Z7のデータが、図12に示されるように、HDD120−1内の物理アドレス領域121に再配置される。すると、再マッピング処理は終了する。
第2の実施形態によれば、再マッピング処理の実行により、SSD110−1内の物理アドレス領域111は、読み出し頻度は高いが、書き込み頻度は低い領域(メモリブロックの集合)に遷移する。つまりSSD110−1内の物理アドレス領域111は、頻繁にデータが読み出されるが、データの書き込み(更新)は発生しにくい領域に遷移する。したがって物理アドレス領域111では、無効データの領域が発生しにくくなる。よって第2の実施形態によれば、SSD110−1内で断片化解消処理が実行される頻度を低減して、当該SSD110−1のアクセス速度の低下、つまりストレージ装置100全体(LU150)アクセス速度の低下を防止できる。
しかも、第2の実施形態によれば、再マッピング処理の実行により、SSD110−1内の物理アドレス領域112は、書き込み頻度が高い領域(メモリブロックの集合)に遷移する。つまりSSD110−1内の物理アドレス領域112は、データの書き込み(更新)が頻繁に発生する領域に遷移する。このように第2の実施形態によれば、SSD110−1の物理アドレス領域を、書き込み頻度または読み出し頻度が高い(つまりアクセス頻度が高い)領域として用いることができる。これにより、ストレージ装置100全体(LU150)のアクセス速度を向上することができる。
更に第2の実施形態によれば、再マッピング処理の実行により、HDD120−1内の物理アドレス領域121は、読み出し頻度及び書き込み頻度がいずれも低い領域(セクタの集合)に遷移する。つまりHDD120−1内の物理アドレス領域121は、アクセスが発生しにくい領域に遷移する。よって第2の実施形態によれば、HDD120−1へのアクセスによってストレージ装置100全体(LU150)のアクセス速度が低下するのを防止できる。
前記第2の実施形態では、ストレージコントローラ130は、ホスト200から独立して備えられており、且つネットワーク300を介して当該ホスト200と接続されている。しかし、ストレージコントローラ130が、前記第1の実施形態におけるストレージコントローラ21と同様に、ホスト200に備えられていても構わない。
<第2の実施形態の変形例>
次に、前記第2の実施形態の変形例について説明する。
前記第2の実施形態では、使用中のSSD110−1を用いて再マッピング処理が実行される。しかし、この再マッピング処理が、非使用状態(いわゆるアンマップ状態)のSSD(例えば予備SSD)を用いて実行されても良い。前記第2の実施形態の変形例の特徴は、予備SSDが存在する場合、当該予備SSDを用いて再マッピングを実行することにある。図13のフローチャートにおける処理Pxは、ストレージ装置100の構成によって変わる。
次に、前記第2の実施形態の変形例について説明する。
前記第2の実施形態では、使用中のSSD110−1を用いて再マッピング処理が実行される。しかし、この再マッピング処理が、非使用状態(いわゆるアンマップ状態)のSSD(例えば予備SSD)を用いて実行されても良い。前記第2の実施形態の変形例の特徴は、予備SSDが存在する場合、当該予備SSDを用いて再マッピングを実行することにある。図13のフローチャートにおける処理Pxは、ストレージ装置100の構成によって変わる。
以下、本変形例の概要について、便宜的に図10及び図11を参照して説明する。
一般に、複数のSSD及びHDDを備えたストレージ装置は、予備のSSDまたはHDDを持つことがある。図10に示されるストレージ装置100においても、SSD110−1乃至110−4の例えば1つまたはHDD120−1乃至120−4の例えば1つを予備として用いることができる。
一般に、複数のSSD及びHDDを備えたストレージ装置は、予備のSSDまたはHDDを持つことがある。図10に示されるストレージ装置100においても、SSD110−1乃至110−4の例えば1つまたはHDD120−1乃至120−4の例えば1つを予備として用いることができる。
ここで、図10に示されるように、物理メモリ140がSSD110−1及びHDD120−1から構成されており、したがって当該SSD110−1及びHDD120−1が、前記第2の実施形態と同様に使用中の状態にあるものとする。この状態で、ストレージコントローラ130に接続されているSDDの中に予備SSDが存在するならば、マッピング部211aは、当該予備SSDの全領域をマッピング単位で消去することによりアンマップする。つまりマッピング部211aは、予備SSDの全領域をフリー状態にする。再書き込み部214aは、SSD110−1及びHDD120−1からアンマップ状態にある予備SSDにデータをコピーする。この予備SSDが存在する場合に実行される処理(第1の処理)を処理Paと呼ぶ。
これに対し、予備SSDは存在しないものの、HDD120−1に十分な空き領域が存在するならば、再書き込み部214aは、SSD110−1にマッピングされている領域のデータを当該HDD120−1の空き領域にコピーする。このコピーの後、マッピング部211aは、SSD110−1の全領域をアンマップする。すると再書き込み部214aは、HDD120−1からアンマップ状態にあるSSD110−1にデータをコピーする。このHDD120−1に十分な空き領域が存在する場合に実行される処理(第2の処理)を処理Pbと呼ぶ。
一方、HDD120−1に十分な空き領域が存在しないならば、前記第2の実施形態と同様の処理が行われる。
一方、HDD120−1に十分な空き領域が存在しないならば、前記第2の実施形態と同様の処理が行われる。
次に、本変形例の詳細について説明する。但し、ここでは、上述の概要と異なり、複数のSSD(例えば2つのSSD110−1及び110−2)と複数のHDD(例えば2つのHDD120−1及び120−2)とから物理メモリ(アレイ)が構成されているものとする。また、SSD110−1及び110−2とHDD120−1及び120−2(つまりSSDと同数のHDD)の記憶領域を利用して、図10に示されるLU150に相当するLU151(図14参照)が定義されているものとする。必要ならば、図10においてLU150をLU151に置き換え、当該LU151に対応付けられているSSD110−1とHDD120−1とを、SSD110−1及び110−2とHDD120−1及び120−2とに置き換えられたい。なお、SSD110−1及び110−2から第1の物理メモリ(アレイ)が構成され、HDD120−1及び120−2から第2の物理メモリ(アレイ)が構成されても良い。
図14は、LU151がSSD110−1及び110−2とHDD120−1及び120−2の記憶領域を利用して定義される場合における、マッピング単位毎のストライプングを説明するための図である。LU151の領域は、マッピング単位でSSD110−1及び110−2またはHDD120−1及び120−2と対応付けられる。
例えば、図14に示される、ある1つのマッピング単位の領域141は、SSD110−1及び110−2にマッピングされる。このSSD110−1及び110−2にマッピングされる領域141は、当該SSD110−1及び110−2で一定サイズのストライプブロックにストライピングされる。また、図14に示される、別の1つのマッピング単位の領域142は、HDD120−1及び120−2にマッピングされる。つまり、領域142は、HDD120−1及び120−2でストライプブロックにストライピングされる。
次に、前記第2の実施形態の変形例で適用される、前記処理Pxに相当する処理(以下、再書き込み処理と称する)について、図15乃至図17のフローチャートを参照して説明する。図15は、再書き込み処理全体の手順を示すフローチャートである。図16は、再書き込み処理における処理Pa(第1の処理)の手順を示すフローチャート、図17は、再書き込み処理における処理Pb(第2の処理)の手順を示すフローチャートである。
ここでは、図14に示されているように、LU151がSSD110−1及び110−2とHDD120−1及び120−2の記憶領域を利用して定義されるものとする。但し以下の説明では、LU151の領域に割り当てられる2つのSSDをSSD_1及びSSD_2と表記し、当該2つのSSDのうちのn番目のSSDをSSD_nと表記する。同様に、LU151の別の領域に割り当てられる2つのHDDをHDD_1及びHDD_2と表記し、当該2つのHDDDのうちのn番目のHDDをHDD_nと表記する。
図15のフローチャートに示される再書き込み処理は、上述したように図13のフローチャートにおける処理Pxに相当する。したがって、この再書き込み処理は、図13のフローチャートにおけるステップS14に続いて実行される。
まずマッピング部211aは、ストレージコントローラ130に接続されているSDDの中に予備SSD(より詳細には、空き状態にある予備SSD)が存在するかを判定する(ステップS21)。もし、予備SSDが存在するならば(ステップS21のYes)、マッピング部211aは再書き込み部214aと協働して処理Paを実行する(ステップS22)。ここでは、予備SSDは、SSD110−3または110−4であるものとする。
これに対し、予備SSDが存在しないならば(ステップS21のNo)、マッピング部211aは、HDD(より詳細には、HDD_1及びHDD_2)に十分な空き領域があるかを判定する(ステップS23)。十分な空き領域とは、SSD_1及びSSD_2のデータ(つまりSSD_1及びSSD_2にマッピングされているLU151のアドレス領域のデータ)をHDD_1及びHDD_2にコピーするのに必要な空き領域を指す。もし、HDD_1及びHDD_2に十分な空き領域があるならば(ステップS23のYes)、マッピング部211aは再書き込み部214aと協働して第2の処理Pbを実行する(ステップS24)。
これに対し、HDD_1及びHDD_2に十分な空き領域がないならば(ステップS23のNo)、マッピング部211aは再書き込み部214aと協働して、図13に示される処理Pxと同様の処理を実行する。必要ならば、処理Pxにおいて、SSDをSSD_1及びSSD_2に、HDDをHDD_1及びHDD_2に置き換えられたい。
次に上記処理Paについて、図16のフローチャートを参照して説明する。まずマッピング部211aは、SSD及びHDDを指定する変数nを初期値1に設定する(ステップS31)。次にマッピング部211aは、予備SSD(つまり空き状態にある予備SSD)を、データの転送先(コピー先)として選択して、当該予備SSDの全領域をアンマップする(ステップS32)。これにより、前記予備SSDの全領域のデータは消去される。またステップS32においてマッピング部211aは、データの転送元(コピー元)としてSSD_n及びHDD_nを選択する。ここでは、n=1であるため、SSD_1及びHDD_1がデータの転送元として選択される。
再書き込み部214aは、LU12内の読み出し頻度が高く且つ書き込み頻度が低い論理アドレス領域Yに割り当てられているSSD_n及びHDD_n内の物理アドレス領域のデータ(つまりストライピングされたデータ)を、例えば、論理アドレスの昇順で且つマッピング単位(つまり統計ブロックSB)毎に、当該SSD_n及びHDD_nから読み出す(ステップS33)。そして再書き込み部214aは、読み出されたデータを前記予備SSD(つまり転送先の予備SSD)に書き込む(ステップS34)。再書き込み部214aは、ステップS33及びS34を、読み出し/書き込みが行われたマッピング単位の数が論理アドレス領域Yの総サイズに対応する数NMyに達するまで繰り返す(ステップS35)。つまり再書き込み部214aは、論理アドレス領域Y1,Y2,Y3,Y4,Y5及びY6のデータの読み出し/書き込みを実行する。
マッピング部211aは、再書き込み部214aによる上述の書き込みに際し、MT215bを用いて再マッピングを行う。例えば、論理アドレス領域Y1から読み出されたデータの書き込みに際し、マッピング部211aは、当該論理アドレス領域Y1の論理アドレスLBAy1に、予備SSD及びSSD論理アドレスSLBA0を割り当てる。SSD論理アドレスSLBA0は例えば0である。この場合、再書き込み部214aは、論理アドレス領域Y1から読み出されたデータの書き込みを、SSD論理アドレスSLBA0を書き込み先として指定することにより、予備SSDに要求する。同様にマッピング部211aは、論理アドレス領域Y2から読み出されたデータの書き込みに際し、当該論理アドレス領域Y2の論理アドレスLBAy2に、予備SSD及びSSD論理アドレスSLBA1を割り当てる。SSD論理アドレスSLBA1はSSD論理アドレスSLBA0に後続する。この場合、再書き込み部214aは、論理アドレス領域Y2から読み出されたデータの書き込みを、SSD論理アドレスSLBA1を書き込み先として指定することにより、予備SSDに要求する。
同様にマッピング部211aは、論理アドレス領域Y3から読み出されたデータの書き込みに際し、当該論理アドレス領域Y3の連続する論理アドレスLBAy3a,LBAy3b及びLBAy3cに、予備SSD及び連続するSSD論理アドレスSLBA2,SLBA3及びSLBA4を割り当てる。SSD論理アドレスSLBA2は、SSD論理アドレスSLBA1に後続する。この場合、再書き込み部214aは、論理アドレス領域Y3から読み出されたデータの書き込みを、SSD論理アドレスSLBA2を書き込み先(書き込み先の開始アドレス)として指定することにより、予備SSDに要求する。同様にマッピング部211aは、論理アドレス領域Y4から読み出されたデータの書き込みに際し、当該論理アドレス領域Y4の連続する論理アドレスLBAy4a及びLBAy4bに、予備SSD及び連続するSSD論理アドレスSLBA5及びSLBA6を割り当てる。SSD論理アドレスSLBA5は、SSD論理アドレスSLBA4に後続する。この場合、再書き込み部214aは、論理アドレス領域Y4から読み出されたデータの書き込みを、SSD論理アドレスSLBA5を書き込み先(書き込み先の開始アドレス)として指定することにより、予備SSDに要求する。
同様にマッピング部211aは、論理アドレス領域Y5から読み出されたデータの書き込みに際し、当該論理アドレス領域Y5の論理アドレスLBAy5に、予備SSD及びSSD論理アドレスSLBA7を割り当てる。SSD論理アドレスSLBA7は、SSD論理アドレスSLBA6に後続する。この場合、再書き込み部214aは、論理アドレス領域Y5から読み出されたデータの書き込みを、SSD論理アドレスSLBA7を書き込み先として指定することにより、予備SSDに要求する。同様にマッピング部211aは、論理アドレス領域Y6から読み出されたデータの書き込みに際し、当該論理アドレス領域Y6の論理アドレスLBAy6に、予備SSD及びSSD論理アドレスSLBA8を割り当てる。SSD論理アドレスSLBA8は、SSD論理アドレスSLBA7に後続する。この場合、再書き込み部214aは、論理アドレス領域Y6から読み出されたデータの書き込みを、SSD論理アドレスSLBA8を書き込み先として指定することにより、予備SSDに要求する。
上述の再書き込みにより、論理アドレス領域Y(論理アドレス領域Y1乃至Y6)から読み出されたデータは、SSD−nの連続する物理アドレスの領域に再配置される。ここでは、SSD−nはステップS32でアンマップされていることから、当該SSD−nの例えば物理アドレス0から始まる連続する物理アドレスの領域に再配置されることが期待される。
次に再書き込み部214aは、LU12内の書き込み頻度が高い論理アドレス領域Xに割り当てられているSSD_n及びHDD_n内の物理アドレス領域のデータ(ストライピングされたデータ)を、例えば、論理アドレスの昇順で且つマッピング単位毎に、当該SSD_n及びHDD_nから読み出す(ステップS36)。そして再書き込み部214aは、読み出されたデータを前記予備SSDに書き込む(ステップS37)。再書き込み部214aは、ステップS36及びS35を、読み出し/書き込みが行われたマッピング単位の数が論理アドレス領域Xの総サイズに対応する数NMxに達するまで繰り返す(ステップS38)。
論理アドレス領域Xから読み出されたデータの予備SSDへの書き込みに際しても、上述の論理アドレス領域Yから読み出されたデータの予備SSDへの書き込みと同様のマッピングが行われる。ここでは、論理アドレス領域Yの先頭の論理アドレスには、SSD論理アドレスSLBA9が割り当てられる。SSD論理アドレスSLBA9は、論理アドレス領域Xの最終の論理アドレスに割り当てられたSSD論理アドレスSLBA8に後続する。この場合、論理アドレス領域Xから読み出されたデータは、SSD−nの物理アドレス0から始まる連続する物理アドレスの領域に後続する物理アドレスの領域に再配置されることが期待される。
次に再書き込み部214aは、LU12内の残りの論理アドレス領域Z(つまり読み出し頻度が低く且つ書き込み頻度も低い論理アドレス領域Z)に割り当てられている物理アドレス領域のデータのうち、SSD_n内の物理アドレス領域のデータ(ストライピングされたデータ)を、例えば、論理アドレスの順番で且つマッピング単位毎に、当該SSD_nから読み出す(ステップS39)。そして再書き込み部214aは、読み出されたデータを前記HDD_nに書き込む(ステップS40)。再書き込み部214aは、ステップS39及びS40を、全ての論理アドレス領域Zについて繰り返す(ステップS41)。
マッピング部211aは、論理アドレス領域Zに割り当てられている物理アドレス領域のデータのうち、SSD_nから読み出されたデータのHDD−nへの書き込みに際しも、予備SSDへの書き込み時と同様のマッピングを行う。例えばマッピング部211aは、論理アドレス領域Zの先頭の論理アドレスに、フリー状態にあるHDD論理アドレス領域の先頭のHDD論理アドレスを割り当てる。
ステップS39及びS40が全ての論理アドレス領域Zについて繰り返されると(ステップS41)、マッピング部211aは、予備SSDをSSD_n(つまり新SSD_n)に切り替える(ステップS42)。またマッピング部211aは、切り替え前のSSD_n(つまり旧SSD_n)を予備SDDに切り替える(ステップS43)。
次にマッピング部211aは、変数nを1インクリメントする(ステップS44)。ここでは、nは1から2にインクリメントされる。そしてマッピング部211aは、このインクリメント後の変数n(=2)が、LU150を定義するのに用いられているSSDの数(=HDDの数)NDを超えたかを判定する(ステップS45)。ここでは、NDは2である。
この例のように、n(=2)がND(=2)を超えていないならば(ステップS45のNo)、マッピング部211aは再書き込み部214aと協働して、ステップS32乃至S45を再び実行する。
以上の動作により、nが1である状態では、SSD_1及びHDD_1から論理アドレス領域Yに対応するデータが読み出されて、当該データが予備SSDに書き込まれる。次に、SSD_1及びHDD_1から論理アドレス領域Xに対応するデータが読み出されて、当該データが予備SSDに書き込まれる。次に、SSD_1から残りの論理アドレス領域Zに対応するデータが読み出されて、当該データがHDD_1に書き込まれる。そして、予備SSDが新SSD_1に切り替えられ、旧SSD_1が予備SSDに切り替えられる。するとnは1から2にインクリメントされる。
このように、nが2である状態では、SSD_2及びHDD_2から論理アドレス領域Yに対応するデータが読み出されて、当該データが予備SSD(つまり旧SSD_1)に書き込まれる。ここで予備SSD(旧SSD_1)は、この読み出し/書き込みの前にアンマップされている。次に、SSD_2及びHDD_2から論理アドレス領域Xに対応するデータが読み出されて、当該データが予備SSD(旧SSD_1)に書き込まれる。次に、SSD_2から残りの論理アドレス領域Zに対応するデータが読み出されて、当該データがHDD_2に書き込まれる。そして、予備SSD(旧SSD_1)が新SSD_2に切り替えられ、旧SSD_2が予備SSDに切り替えられる。するとnは2から3にインクリメントされる。このように、n(=3)がND(=2)を超えたならば(ステップS45のYes)、図16のフローチャートで示される処理Paは終了する。
処理Paによれば、予備SSDを利用することで、図12と同様のデータ再配置を確実に実現することができる。但し、図12に示すデータ再配置は、処理PaにおいてNDが1の場合に相当する。
次に上記処理Pbについて、図17のフローチャートを参照して説明する。まずマッピング部211aは、SSD及びHDDを指定する変数nを初期値1に設定する(ステップS51)。再書き込み部214aは、予備SSDが存在しないことから、以下に述べる手順で、SSD_n内のデータ(より詳細には有効なデータ)をHDD_nにコピー(退避)する。まず再書き込み部214aは、SSD_nがマッピングされているLU12内の論理アドレス領域に割り当てられている当該SSD_nの物理領域から、例えば、論理アドレスの昇順で且つマッピング単位毎に、データ(有効なデータ)を読み出す(ステップS52)。そして再書き込み部214aは、読み出されたデータをHDD_nに書き込む(ステップS53)。これによりSSD_nからHDD_nにデータがコピーされる。再書き込み部214aは、ステップS52及びS53を、SSD_n内の有効なデータが全てHDD_nにコピーされるまで、論理アドレスの順番に繰り返す(ステップS54)。
SSD_nからHDD_nへのデータコピーが終了すると、マッピング部211aはSSD_nをアンマップする(ステップS55)。ステップS55においてマッピング部211aは、SSD_nをアンマップする前に、当該SSD_nがマッピングされていたLU150の論理アドレス領域(マッピング単位)にHDD_nをマッピングする(割り当てる)。すると再書き込み部214aは、LU12内の読み出し頻度が高く且つ書き込み頻度が低い論理アドレス領域Yに割り当てられているHDD_n内の物理アドレス領域のデータを、例えば、論理アドレスの昇順で且つマッピング単位毎に、当該HDD_nから読み出す(ステップS56)。読み出されたデータは、SSD−nをアンマップする前に、当該SSD−nからHDD−nにコピーされたデータを含んでいる可能性がある。再書き込み部214aは、読み出されたデータをSSD_n(アンマップ状態にあるSSD−n)に書き込む(ステップS57)。再書き込み部214aは、ステップS56及びS57を、読み出し/書き込みが行われたマッピング単位の数が論理アドレス領域Yの総サイズに対応する数NMyに達するまで繰り返す(ステップS58)。
次に再書き込み部214aは、LU12内の書き込み頻度が高い論理アドレス領域Xに割り当てられているHDD_n内の物理アドレス領域のデータを、例えば、論理アドレスの昇順で且つマッピング単位毎に、当該HDD_nから読み出す(ステップS59)。そして再書き込み部214aは、読み出されたデータをSSD_nに書き込む(ステップS60)。再書き込み部214aは、ステップS59及びS60を、読み出し/書き込みが行われたマッピング単位の数が論理アドレス領域Xの総サイズに対応する数NMxに達するまで繰り返す(ステップS61)。
次にマッピング部211aは、変数nを1インクリメントする(ステップS62)。ここでは、nは1から2にインクリメントされる。そしてマッピング部211aは、このインクリメント後の変数n(=2)が、LU150を定義するのに用いられているSSDの数(つまりHDDの数)NDを超えたかを判定する(ステップS63)。ここでは、NDは2である。
この例のように、n(=2)がND(=2)を超えていないならば(ステップS63のNo)、マッピング部211aは再書き込み部214aと協働して、ステップS52乃至S63を再び実行する。これに対して、nがNDを超えたならば(ステップS63のYes)、図17のフローチャートで示される処理Pbは終了する。
処理Pbによれば、LU150を定義するのに用いられているHDD(ここではHDD_1及びHDD_2)に十分な空き領域があるならば、当該HDDを利用することで、図12と同様のデータ再配置を確実に実現することができる。但し、図12に示すデータ再配置は、処理PbにおいてNDが1の場合に相当する。
以上説明した少なくとも1つの実施形態によれば、SSD(ソリッドステートドライブ)において断片化解消処理が実行される頻度を低減できるように当該SSDにデータを再配置するストレージ装置、ストレージコントローラ及び方法を提供できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
Claims (6)
- 第1のソリッドステートドライブと、
前記第1のソリッドステートドライブを制御するストレージコントローラとを具備し、
前記ストレージコントローラは、
前記第1のソリッドステートドライブの物理領域が割り当てられる論理領域を有する論理ユニットを定義する論理ユニット管理部と、
前記論理ユニットの前記論理領域を構成する複数の一定サイズの小論理アドレス領域各々の書き込み頻度を収集するアクセス統計値収集部と、
前記書き込み頻度に基づいて、前記書き込み頻度が低い第1の小論理アドレス領域の集合と前記第1の小論理アドレス領域の集合を除く第2の小論理アドレス領域の集合とをそれぞれ前記論理ユニットから選択する選択部と、
前記第1の小論理アドレス領域の集合のデータを前記第1のソリッドステートドライブにまとめて再書き込みするための第1の再書き込みと、前記第2の小論理アドレス領域の集合のデータを前記第1のソリッドステートドライブにまとめて再書き込みするための第2の再書き込みとを実行する再書き込み部とを具備する
ストレージ装置であって、
ハードディスクドライブを更に具備し、
前記ストレージコントローラは、前記第1のソリッドステートドライブに加えて前記ハードディスクドライブを制御し、
前記論理ユニット管理部は、前記第1のソリッドステートドライブに加えて前記ハードディスクドライブを用いて前記論理ユニットを定義し、
前記アクセス統計値収集部は、前記小論理アドレス領域各々の前記書き込み頻度に加えて前記小論理アドレス領域各々の読み出し頻度を収集し、
前記選択部は、前記書き込み頻度及び前記読み出し頻度に基づいて、前記書き込み頻度が低く且つ前記読み出し頻度が高い小論理アドレス領域の集合を前記第1の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第1の小論理アドレス領域の集合を除く前記書き込み頻度が高い小論理アドレス領域の集合を前記第2の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第1の小論理アドレス領域の集合及び前記第2の小論理アドレス領域の集合を除く第3の小論理アドレス領域の集合を前記論理ユニットから選択し、
前記再書き込み部は、前記第3の小論理アドレス領域の集合のデータを前記ハードディスクドライブにまとめて再書き込みするための第3の再書き込みを実行する
ストレージ装置。 - 前記選択部は、前記書き込み頻度が高い小論理アドレス領域から順に、予め定められた第2の数の小論理アドレス領域を、前記第2の小論理アドレス領域の集合として前記論理ユニットから選択し、前記第2の小論理アドレス領域の集合を除く、残りの前記読み出し頻度が高い小論理アドレス領域から順に、予め定められた第1の数の小論理アドレス領域を、前記第1の小論理アドレス領域の集合として前記論理ユニットから選択する請求項1記載のストレージ装置。
- 予備のソリッドステートドライブとしての第2のソリッドステートドライブを更に具備し、
前記再書き込み部は、前記第1の小論理アドレス領域の集合のデータを前記予備のソリッドステートドライブにまとめて再書き込みするための第4の再書き込みを前記第1の再書き込みに代えて実行し、前記第2の小論理アドレス領域の集合のデータを前記予備のソリッドステートドライブにまとめて再書き込みするための第5の再書き込みを前記第2の再書き込みに代えて実行し、且つ前記第3の小論理アドレス領域の集合のうち前記第1のソリッドステートドライブに割り当てられている第4の小論理アドレス領域の集合のデータを前記ハードディスクドライブにまとめて再書き込みするための第6の再書き込みを前記第3の再書き込みに代えて実行し、
前記論理ユニット管理部は、前記第4、第5及び第6の再書き込みの後、前記予備のソリッドステートドライブとして、前記第2のソリッドステートドライブから前記第1のソリッドステートドライブに切り替え、且つ前記論理ユニットに割り当てられるソリッドステートドライブを、前記第1のソリッドステートドライブから前記第2のソリッドステートドライブに切り替える
請求項1記載のストレージ装置。 - 前記再書き込み部は、前記再書き込みに際し、前記第1のソリッドステートドライブのデータを前記ハードディスクドライブにコピーしてから前記第1のソリッドステートドライブのデータを消去し、しかる後に、前記第1の小論理アドレス領域の集合のデータを前記ハードディスクドライブから読み出して、当該第1の小論理アドレス領域の集合のデータを前記第1のソリッドステートドライブにまとめて再書き込みするための第4の再書き込みを前記第1の再書き込みに代えて実行し、且つ前記第2の小論理アドレス領域の集合のデータを前記ハードディスクドライブから読み出して、当該第2の小論理アドレス領域の集合のデータを前記第1のソリッドステートドライブにまとめて再書き込みするための第5の再書き込みを前記第2の再書き込みに代えて実行する
請求項1記載のストレージ装置。 - ソリッドステートドライブ及びハードディスクドライブを制御するストレージコントローラにおいて、
前記ソリッドステートドライブの物理領域が割り当てられる論理領域を有する論理ユニットを定義する論理ユニット管理部と、
前記論理ユニットの前記論理領域を構成する複数の一定サイズの小論理アドレス領域各々の書き込み頻度を収集するアクセス統計値収集部と、
前記書き込み頻度に基づいて、前記書き込み頻度が低い第1の小論理アドレス領域の集合と前記第1の小論理アドレス領域の集合を除く第2の小論理アドレス領域の集合とをそれぞれ前記論理ユニットから選択する選択部と、
前記第1の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みするための第1の再書き込みと、前記第2の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みするための第2の再書き込みとを実行する再書き込み部と
を具備し、
前記論理ユニット管理部は、前記ソリッドステートドライブに加えて前記ハードディスクドライブを用いて前記論理ユニットを定義し、
前記アクセス統計値収集部は、前記小論理アドレス領域各々の前記書き込み頻度に加えて前記小論理アドレス領域各々の読み出し頻度を収集し、
前記選択部は、前記書き込み頻度及び前記読み出し頻度に基づいて、前記書き込み頻度が低く且つ前記読み出し頻度が高い小論理アドレス領域の集合を前記第1の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第1の小論理アドレス領域の集合を除く前記書き込み頻度が高い小論理アドレス領域の集合を前記第2の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第1の小論理アドレス領域の集合及び前記第2の小論理アドレス領域の集合を除く第3の小論理アドレス領域の集合を前記論理ユニットから選択し、
前記再書き込み部は、前記第3の小論理アドレス領域の集合のデータを前記ハードディスクドライブにまとめて再書き込みするための第3の再書き込みを実行する
ストレージコントローラ。 - ソリッドステートドライブ及びハードディスクドライブを制御するストレージコントローラにおいて、前記ソリッドステートドライブにデータを再配置する方法であって、
前記ソリッドステートドライブと前記ハードディスクドライブとの物理領域が割り当てられる論理領域を有する論理ユニットの前記論理領域を構成する複数の一定サイズの小論理アドレス領域各々の書き込み頻度及び読み出し頻度を収集し、
前記書き込み頻度及び前記読み出し頻度に基づいて、前記書き込み頻度が低く且つ前記読み出し頻度が高い小論理アドレス領域の集合を第1の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第1の小論理アドレス領域の集合を除く前記書き込み頻度が高い小論理アドレス領域の集合を第2の小論理アドレス領域の集合として前記論理ユニットから選択し、且つ前記第1の小論理アドレス領域の集合及び前記第2の小論理アドレス領域の集合を除く第3の小論理アドレス領域の集合を前記論理ユニットから選択し、
前記第1の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みし、
前記第2の小論理アドレス領域の集合のデータを前記ソリッドステートドライブにまとめて再書き込みし、
前記第3の小論理アドレス領域の集合のデータを前記ハードディスクドライブにまとめて再書き込みする
方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/074482 WO2014049678A1 (ja) | 2012-09-25 | 2012-09-25 | ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5550741B1 true JP5550741B1 (ja) | 2014-07-16 |
JPWO2014049678A1 JPWO2014049678A1 (ja) | 2016-08-18 |
Family
ID=50387147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012543822A Active JP5550741B1 (ja) | 2012-09-25 | 2012-09-25 | ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9104554B2 (ja) |
JP (1) | JP5550741B1 (ja) |
CN (1) | CN103827970B (ja) |
WO (1) | WO2014049678A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017006674A1 (ja) * | 2015-07-06 | 2017-01-12 | 日本電気株式会社 | 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9280465B2 (en) * | 2013-10-08 | 2016-03-08 | Globalfoundries Inc. | Techniques for moving checkpoint-based high-availability log and data directly from a producer cache to a consumer cache |
CN105637491B (zh) * | 2014-09-26 | 2017-06-20 | 华为技术有限公司 | 一种文件迁移方法、装置和存储设备 |
US9851926B2 (en) * | 2015-06-02 | 2017-12-26 | Quantum Corporation | Log structured block device for hard disk drive |
CN106326133B (zh) * | 2015-06-29 | 2020-06-16 | 华为技术有限公司 | 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法 |
US9959058B1 (en) * | 2016-03-31 | 2018-05-01 | EMC IP Holding Company LLC | Utilizing flash optimized layouts which minimize wear of internal flash memory of solid state drives |
US10430081B2 (en) | 2016-06-28 | 2019-10-01 | Netapp, Inc. | Methods for minimizing fragmentation in SSD within a storage system and devices thereof |
JP2018018271A (ja) * | 2016-07-27 | 2018-02-01 | 富士通株式会社 | ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム |
JP2019016320A (ja) | 2017-07-11 | 2019-01-31 | 富士通株式会社 | ストレージ制御装置およびストレージ制御プログラム |
JP6817242B2 (ja) | 2018-02-26 | 2021-01-20 | Necプラットフォームズ株式会社 | ディスクアレイ装置、ディスクアレイ装置の制御方法、及びディスクアレイ装置の制御プログラム |
CN110858124B (zh) * | 2018-08-24 | 2021-06-01 | 华为技术有限公司 | 数据迁移方法及装置 |
US11188231B2 (en) * | 2019-03-01 | 2021-11-30 | International Business Machines Corporation | Data placement on storage devices |
US11068165B2 (en) * | 2019-06-27 | 2021-07-20 | Western Digital Technologies, Inc. | Non-volatile memory data write management |
TWI688956B (zh) * | 2019-08-28 | 2020-03-21 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
CN112445418B (zh) * | 2019-09-05 | 2023-02-24 | 群联电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
CN112463213B (zh) * | 2019-09-06 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 更新、读取统计值的方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0944381A (ja) * | 1995-07-31 | 1997-02-14 | Toshiba Corp | データ格納方法およびデータ格納装置 |
JP2004164193A (ja) * | 2002-11-12 | 2004-06-10 | Hitachi Ltd | ハイブリッドストレージ、および、それを用いた情報処理装置 |
JP2007220101A (ja) * | 2006-02-17 | 2007-08-30 | Samsung Electronics Co Ltd | ブロック方式のメモリにおいてデータの変更類型に応じてブロックを管理する方法および装置 |
JP2009283046A (ja) * | 2008-05-20 | 2009-12-03 | Sony Corp | 情報記録方法及び情報記録装置 |
JP2010015516A (ja) * | 2008-07-07 | 2010-01-21 | Toshiba Corp | データ制御装置、ストレージシステムおよびプログラム |
JP2010267273A (ja) * | 2007-12-28 | 2010-11-25 | Toshiba Corp | 半導体記憶装置 |
JP2012141946A (ja) * | 2010-12-16 | 2012-07-26 | Toshiba Corp | 半導体記憶装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4261532B2 (ja) | 2005-09-13 | 2009-04-30 | 株式会社東芝 | 論理ディスク管理方法及び仮想化装置 |
CN101957797B (zh) * | 2009-07-17 | 2013-01-09 | 群联电子股份有限公司 | 闪速存储器逻辑区块管理方法及其控制电路与储存系统 |
-
2012
- 2012-09-25 JP JP2012543822A patent/JP5550741B1/ja active Active
- 2012-09-25 CN CN201280002707.5A patent/CN103827970B/zh active Active
- 2012-09-25 WO PCT/JP2012/074482 patent/WO2014049678A1/ja active Application Filing
-
2013
- 2013-03-22 US US13/849,073 patent/US9104554B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0944381A (ja) * | 1995-07-31 | 1997-02-14 | Toshiba Corp | データ格納方法およびデータ格納装置 |
JP2004164193A (ja) * | 2002-11-12 | 2004-06-10 | Hitachi Ltd | ハイブリッドストレージ、および、それを用いた情報処理装置 |
JP2007220101A (ja) * | 2006-02-17 | 2007-08-30 | Samsung Electronics Co Ltd | ブロック方式のメモリにおいてデータの変更類型に応じてブロックを管理する方法および装置 |
JP2010267273A (ja) * | 2007-12-28 | 2010-11-25 | Toshiba Corp | 半導体記憶装置 |
JP2009283046A (ja) * | 2008-05-20 | 2009-12-03 | Sony Corp | 情報記録方法及び情報記録装置 |
JP2010015516A (ja) * | 2008-07-07 | 2010-01-21 | Toshiba Corp | データ制御装置、ストレージシステムおよびプログラム |
JP2012141946A (ja) * | 2010-12-16 | 2012-07-26 | Toshiba Corp | 半導体記憶装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017006674A1 (ja) * | 2015-07-06 | 2017-01-12 | 日本電気株式会社 | 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム |
US10402114B2 (en) | 2015-07-06 | 2019-09-03 | Nec Corporation | Information processing system, storage control apparatus, storage control method, and storage control program |
Also Published As
Publication number | Publication date |
---|---|
US20140289449A1 (en) | 2014-09-25 |
CN103827970A (zh) | 2014-05-28 |
US9104554B2 (en) | 2015-08-11 |
CN103827970B (zh) | 2016-05-18 |
WO2014049678A1 (ja) | 2014-04-03 |
JPWO2014049678A1 (ja) | 2016-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5550741B1 (ja) | ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法 | |
JP6016137B2 (ja) | ソリッドステートドライブおよびその動作方法 | |
JP5581256B2 (ja) | メモリシステム、コントローラ、およびメモリシステムの制御方法 | |
JP4518951B2 (ja) | 不揮発性記憶システムにおける自動損耗均等化 | |
US7506098B2 (en) | Optimized placement policy for solid state storage devices | |
US8788745B2 (en) | Storage system comprising flash memory modules subject to two wear—leveling processes | |
US8316176B1 (en) | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification | |
US7716422B2 (en) | Storage apparatus and method for using a non-volatile cache memory organized into stationary and non-stationary circular regions | |
EP2441004B1 (en) | Memory system having persistent garbage collection | |
US10203876B2 (en) | Storage medium apparatus, method, and program for storing non-contiguous regions | |
US10394493B2 (en) | Managing shingled magnetic recording (SMR) zones in a hybrid storage device | |
JP5480913B2 (ja) | 記憶装置、およびメモリコントローラ | |
WO2009096180A1 (ja) | メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム | |
JP2007193883A (ja) | データ記録装置及び方法、及びデータ再生装置及び方法、並びにデータ記録再生装置及び方法 | |
JP4829202B2 (ja) | 記憶装置及びメモリ制御方法 | |
JP5730446B1 (ja) | トライアル領域を備えた階層化ストレージシステム、ストレージコントローラ及びプログラム | |
JP4737223B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5215434B2 (ja) | 複数の不揮発性メモリを備えたストレージ装置、ストレージコントローラ及び論理ディスク生成方法 | |
JP4952741B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2014222528A (ja) | メモリシステムおよび不揮発性メモリの制御方法 | |
JP2021068129A (ja) | メモリコントローラ及びフラッシュメモリシステム | |
US20200301843A1 (en) | Memory access device, memory system, and information processing system | |
JP2009301491A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
KR20110015280A (ko) | 플래시 메모리에서 각 블록에 대한 블록 정보를 기록하는 방법 | |
JP2015201231A (ja) | 複数のフラッシュパッケージを有するストレージシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20140422 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140520 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5550741 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |