JP5646633B2 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
JP5646633B2
JP5646633B2 JP2012529828A JP2012529828A JP5646633B2 JP 5646633 B2 JP5646633 B2 JP 5646633B2 JP 2012529828 A JP2012529828 A JP 2012529828A JP 2012529828 A JP2012529828 A JP 2012529828A JP 5646633 B2 JP5646633 B2 JP 5646633B2
Authority
JP
Japan
Prior art keywords
controller
flash
flash memory
storage
memory chip
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
JP2012529828A
Other languages
English (en)
Other versions
JP2013515979A (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 JP2013515979A publication Critical patent/JP2013515979A/ja
Application granted granted Critical
Publication of JP5646633B2 publication Critical patent/JP5646633B2/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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処理を高速化したり、ディスクの故障に対する高い耐障害性を発揮したりすることができる。
下記特許文献1には、HDD(Hard Disk Drive)を記録メディアとして搭載したストレージ装置が記載されている。
一方近年では、新しい記録メディアとして、Flashメモリが注目されている。Flashメモリの特徴は、HDDよりも高速に読み書きが可能である点である。たとえば、HDDでは読み出し、書込みの所要時間はともに数msオーダーであるのに対し、NANDFlashメモリの性能データ例として、読み出し時間が25μs、書込み時間は300μsというものがある。
また、FlashメモリはHDDとは異なり、一度データを書き込んだ物理領域は、データの書き換えができないという特徴も有している。データの書き換えを行うためには、「Block」と呼ばれる単位で一度データを消去する必要があるが、Flashメモリには、情報を保持するセルの物理的な理由により、書込み回数の制限がある。さらに、消去時間には1ms程度を要するというデータがある。
上記制限への対処として、上位装置に示すアドレスとセル位置との対応関係を保持しておき、Block内の格納データを更新する際は、データの書込みがなされていない空きPageに更新対象データを格納して元の格納データを無効化する制御方法が、Flashメモリでは一般的に用いられている。しかし、データ更新を繰り返すにつれ、空きPageは減少を続けるため、空きPageの不足を解消する技術として、ガベージコレクション(以下、GC)という技術が公開されている。また、GCの他に、各セルに書き込まれる回数を均等化する、ウエアレベリング(以下、WL)という技術もある。
特開2005−182104号公報
上述のように、Flashメモリは読み出しは非常に高速であるものの、書込みおよび消去は低速なデバイスであるといえる。また制御面では、GCやWL等、従来のHDDには存在しない制御が必要である。
例えば、データ書込み(以下、ライト)時に、更新データを格納するための空きPageが十分に存在しない場合には、一度GCを実施して空きPageを確保し、その後、確保した空きPageにデータを格納する。この場合、ライト処理が完了するのに要する時間は、GC処理時間+実際のデータライト時間となる。特に、Flashメモリでは、データ書き込みおよび消去に要する時間が長いため、場合によっては、処理完了までに数msを要してしまい、性能がHDDと同等かそれ以下にまで低下する可能性がある。
図1は、Flashメモリに関する上記課題を説明する図である。ストレージシステムを制御するストレージコントローラが、フラッシュメモリを制御するFlashコントローラに対してライト要求処理を行ったときに、フラッシュメモリ内でGC+ライト(図1中では、Programとして表記)動作を実行すると、ストレージコントローラはライト完了まで長時間待たされることとなる。この間、ストレージコントローラは、データを一時的に格納するためのキャッシュメモリなど、デバイスのリソースを消費し続けることとなり、これが性能低下の原因となり得る。
本発明は、上記のような課題を解決するためになされたものであり、Flashメモリを記録メディアとして採用したストレージ装置において、Flashメモリに対するアクセス性能を向上させることを目的とする。
本発明に係るストレージ装置において、ストレージコントローラは、Flashメモリにアクセスする前に、Flashメモリにアクセスすることができるか否かをFlashコントローラに問い合わせる。
本発明に係るストレージ装置によれば、Flashメモリに対するアクセス可否を事前に問い合わせることにより、アクセス不可時の待ち時間を低減することができる。これにより、Flashメモリに対する実質的なアクセス性能を向上させることができる。
Flashメモリに関する上記課題を説明する図である。 実施の形態1に係るストレージシステム10000の構成を示す図である。 メモリ140の構成図である。 LUのアドレス空間を管理するための、LU管理テーブル1422の構成図である。 メモリ管理テーブルの1423の構成図である。 転送リスト1424の構成図である。 転送終了リスト1425の構成図である。 Flash Box210の構成図である。 Flashメモリチップ231の構成図である。 アドレス割当ての説明図である。 メモリ224の構成図である。 アドレス管理テーブル22422の構成図である。 Block管理テーブル22423の構成図である。 ストレージ装置10の基本I/Oシーケンスを説明するフローチャートである。 ストレージコントローラ100が実行するI/O処理プログラムの動作フロー図である。 図15のステップS150の詳細フローチャートである。 ストレージコントローラ100とFlashコントローラ220の間でやり取りされる、要求コマンド1000と応答コマンド2000の構成図である。 ステップS153の詳細を示すフローチャートである。 ステップS1533の詳細フローチャートである。 実施形態1においてストレージコントローラ100がFlashメモリチップ231にアクセスする際の概略シーケンスを示す図である。 実施の形態2においてストレージコントローラ100が実行するI/O処理プログラムの動作フロー図である。 ステップS240の詳細フローである。 実施形態2においてストレージコントローラ100がFlashメモリチップ231にアクセスする際の概略シーケンスを示す図である。 ストレージコントローラ100からFlashコントローラ220に対して、Block232を解放するよう要求する処理のフローチャートである。 実施形態4におけるメモリ140の構成図である。 セグメント管理テーブル1426の構成図である。 LU管理テーブル1427の構成図である。 統計情報管理テーブル1428の構成図である。 ストレージコントローラ100がFlash Box210間の負荷を均一化する処理のフローチャートである。
<実施の形態1>
図2は、本発明の実施の形態1に係るストレージシステム10000の構成を示す図である。ストレージシステム10000は、ストレージ装置10、ホスト計算機40を備える。ホスト計算機40は、ストレージ装置10を利用する上位装置、例えばアプリケーションサーバである。
ストレージ装置10は、ストレージコントローラ100、Flash Box部200を備える。ストレージコントローラ100は、ストレージ装置10の動作を制御する。Flash Box部200は、データを格納するFlashメモリを有する。
ストレージ装置10には、ストレージコントローラ100のI/F Chip110を介して、ホスト計算機40が接続されている。ストレージ装置10とホスト計算機40を接続するためのインタフェースには、例えば、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)等を用いることが可能である。ストレージ装置10に接続されるホスト計算機40は、複数台でもよい。また、SAN20に代えて、他種のインタフェースを採用することもできる。
ホスト計算機40には、ストレージ装置10に対して制御コマンドなどを発行する制御ソフトウェアがインストールされている。ストレージ装置10のストレージコントローラ100は、その制御コマンドなどを受け取り、自己が備える制御ソフトウェアを実行することにより、ストレージ装置10の動作を制御する。ストレージ装置10とホスト計算機40は、例えばLAN(Local Area Network)30を経由して通信するため、ストレージコントローラ100は、ストレージ装置10がLAN30と接続するためのインタフェースであるNIC(Network Interface Card)120を備えている。ストレージ装置10の管理、制御あるいは保守を行う計算機として、ホスト計算機40とは別の計算機を使用することもできる。また、LAN30に代えて他種の通信ネットワークを利用することもできる。
さらにストレージコントローラ100は、ASICs(Application Specific Integrated Circuits)150、CPU(Central Processing Unit)130、メモリ140、I/F Chip160を備える。ASICs150は、RAIDを構築した際にパリティ演算等を行う。CPU130は、ストレージ装置10全体を制御する。メモリ140は、CPU130がストレージ装置10を制御するために必要なコンピュータプログラムやデータを記憶する。I/F Chip160は、ストレージコントローラ100とFlash Box部200を接続する。
ASICs150は、DMA(Direct Memory Access)転送部151を有している。DMA転送部151は、メモリ140内に格納される転送リストにしたがってデータ転送を実施する。なお、I/F Chip110や160等、ASICs150以外のデバイスがDMA転送部151を有していてもよい。
I/F Chip110、NIC120、CPU130、I/F Chip160は、例えばPCI(Peripheral Component Interconnect)のような専用の接続バス170でASICs150に接続されている。メモリ140は、例えばDDR3(Double Data Rate3)のような専用の接続バス190でASICs150と接続されている。
ストレージコントローラ100は、後述するFlashコントローラ220を介して、Flashメモリチップ231にアクセスする。以下では記載の便宜上、ストレージコントローラ100がFlashメモリチップ231にアクセスする旨に言及するが、Flashメモリチップ231に実際に直接アクセスするのはFlashコントローラ220であることを付言しておく。
Flash Box部200は、複数のFlash Box210を備える。Flash Box部200とストレージコントローラ100は、I/F Chip160と、ファイバチャネルやSAS等の専用バス180を介して接続されている。またFlash Box210の内部には、複数のFlashメモリチップ231が搭載されている。図示はしていないが、複数のFlashメモリチップ231によってRAIDグループが構成されている。
図3は、メモリ140の構成図である。メモリ140は、データキャッシュ領域141、システム領域142を有する。データキャッシュ領域141は、ユーザデータを一時的に格納するために使用される領域である。システム領域142は、ストレージ装置10を制御するためのプログラムや各種テーブルが格納されている。
データキャッシュ領域141は、任意のサイズを持つ複数のキャッシュセグメントに分割され、キャッシュセグメント単位でユーザデータ1411を格納する。ユーザデータ1411は、例えばホスト計算機40とストレージ装置10の間で読み書きするデータである。
システム領域142は、プログラム群1421、LU管理テーブル1422、メモリ管理テーブル1423、転送リスト1424、転送終了リスト1425を格納する。プログラム群1421は、CPU130が実行する各種プログラムである。LU管理テーブル1422は、Flashメモリ231のRAIDグループ内に作成されたLU(Logical Unit)のアドレス空間を管理する。LUは、ストレージ装置10の記憶領域をストレージ装置10の外部に対して提供する単位である。メモリ管理テーブル1423は、データキャッシュ領域141のキャッシュセグメントを管理する。転送リスト1424は、CPU130がASICs150に対しDMA転送を指示するために使用される。転送終了リスト1425は、ASICs150がCPU130に対しDMA転送終了を通知するために使用される。
図4は、LUのアドレス空間を管理するための、LU管理テーブル1422の構成図である。LU管理テーブル1422は、LUN(Logical Unit Number)14221、Flash Box No14222、START LBA14223、LAST LBA14224を有する。
LUN14221は、作成されたLUの識別子であり、それぞれのLUにユニークな数字が割り当てられている。Flash Box No14222は、LUが作成されているFlash Box210の番号を示している。START LBA14223およびLAST LBA14224は、LUのアドレス空間がFlash Box210内のどの位置に対応するかを示すものであり、開始アドレスと終了アドレスをそれぞれLBA(Logical Block Address)で示している。
図5は、メモリ管理テーブルの1423の構成図である。メモリ管理テーブルの1423は、キャッシュセグメントNo14231、LUN14232、LBA14233、LENGTH14234を有する。
キャッシュセグメントNo14231は、データキャッシュ領域141のキャッシュセグメントの識別子であり、それぞれユニークな数字が割り当てられている。LUN14232、LBA14233、LENGTH14234は、キャッシュセグメントに格納されているユーザデータを管理するための情報である。LUN14232は、当該データが格納されているLUの識別番号を示す。LBA14233は、当該データの先頭アドレスを示す。LENGTH14234は、当該データのデータ長を示す。
図6は、転送リスト1424の構成図である。転送リスト1424は、リストNo14241、転送元14242、転送先14243、キャッシュセグメントNo14244、LENGTH14245、LUN14246、LBA14247を有する。
リストNo14241は、各転送リストの識別子であり、ユニークな数字が割り当てられている。転送元14242および転送先14243は、データ転送方向を管理するためのパラメータである。例えば、転送元が「Mem」、転送先が「FE(Front End)」となっている場合は、メモリ140からI/F Chip110の方向に向かってデータ転送を行うことを示している。また、転送元が「Mem」、転送先が「BE(Back End)」となっている場合は、メモリ140からI/F Chip160の方向に向かってデータ転送を行うことを示している。キャッシュセグメントNo14244およびLENGTH14245は、DMA転送する対象であるデータが格納される(もしくは、格納されている)キャッシュセグメントの位置と、転送対象データのサイズをそれぞれ示す。LUN14246とLBA14247は、転送対象データが属するLUの識別番号と先頭アドレスをそれぞれ示している。
図7は、転送終了リスト1425の構成図である。転送終了リスト1425は、転送リストNo14251を有する。転送リストNo14251は、転送が終了したリストNo14241の値を格納する。転送終了リスト1425を参照することで、どの転送要求が終了しているのかを確認することができる。
図8は、Flash Box210の構成図である。Flash Box210は、Flashコントローラ220、memory array230を備える。Flashコントローラ220は、Flash Box210全体を制御する。memory array230は、複数のFlashメモリチップ231より構成される。
Flashコントローラ220は、I/F Chip221、CPU222、ASICs223、メモリ224を備える。
I/F Chip221は、Flashコントローラ220とストレージコントローラ100とを接続するために用いられる。I/F Chip221とストレージコントローラ100は、前述の接続バス180を介して接続されている。CPU222は、Flash Box210全体を制御する。メモリ224は、CPU222がFlash Box210を制御するために必要なコンピュータプログラムやデータを記憶する。ASICs223は、GCやWLなどFlash Memory Chip231を制御するための機能を提供する。
ASICs223は、DMA転送部2231、Memoryコントローラ(Mem CTL)2232を備える。Memoryコントローラ2232は、Flashメモリチップ231に対するリード、ライト、消去等の基本的な動作を管理する。これらの機能部は、ASICs223以外のデバイスが有していてもよい。また、メモリコントローラ2232が単体で存在してもよい。
ASICs223は、PCI等の専用バス225でCPU222およびI/F Chip221と接続されている。またASICs223は、DDR3等の専用バス226でメモリ224と接続されている。さらにASICs223は、Memoryコントローラ2232を介して、専用バス227でFlashメモリチップ231と接続されている。
図9は、Flashメモリチップ231の構成図である。Flashメモリチップ231は、複数のBlock232から構成されている。このBlock232がメモリの消去単位となる。Block232は、Flashメモリチップ231の最小の読み書き単位であるPage233が複数集まって構成されている。
図10は、アドレス割当ての説明図である。Block232は、通常Block236と代替Block237とに属性が分類される。通常Block232は、ストレージコントローラ100にLU空間として認識されるBlockである。代替Block237は、GCやWLが実行される際のデータ移行先、または通常Block故障時の交換対象として使用される。これらの属性は各Block232に固定のものではなく、各Block232の使用状況に応じて随時変更される。
さらに、通常Block236内のPage233は、ベース領域234と、更新領域235とに分類される。ベース領域234は、上位装置に実際のアドレス空間として提供される領域であり、更新領域235はPage更新が発生した際に更新対象データを格納するための領域である。ゆえに、厳密にはベース領域234に属するPage233の合計の物理アドレス空間が、論理的なアドレス空間としてストレージコントローラ100に対して提供される。
ストレージコントローラ100から見た論理アドレス空間は一意であるが、特定の論理アドレス空間を提供する物理Blockは、随時変更される。ゆえに、ストレージコントローラ100がLBAとして認識する論理アドレスは常に一様である。本実施形態1では、ベース領域234と更新領域235とが同一のBlock内に存在する例を示したが、それぞれの領域をBlock単位で構成してもよい。
図11は、メモリ224の構成図である。メモリ224は、データキャッシュ領域2241、システム領域2242を有する。データキャッシュ領域2241は、ユーザデータを一時的に格納するために使用される領域である。システム領域2242は、Flash Box210を制御するためのプログラムや各種テーブルを格納する。
データキャッシュ領域2241は、任意のサイズを持つ複数のキャッシュセグメントに分割され、キャッシュセグメント単位でユーザデータ22411を格納する。
システム領域2242は、プログラム群22421、アドレス管理テーブル22422、Block管理テーブル22423、転送リスト22424を格納する。プログラム群22421は、CPU222が実行する各種プログラムである。アドレス管理テーブル22422は、論理アドレスと物理アドレスの対応を管理する。Block管理テーブル22423は、Block232の状態を管理する。転送リスト22424は、ASICs223がDMA転送を行う際に使用する。
図12は、アドレス管理テーブル22422の構成図である。アドレス管理テーブル22422は、START LBA224221、Chip No224222、Block No224223、Page No224224を有する。
START LBA224221は、ストレージコントローラ100が認識するLBAのオフセット値である。本数値は、Flashメモリチップ231の最小のリード/ライト単位である、Page233のサイズにより決定される。例えば、各Page233が20hのアドレス空間を持つ場合は、START LBA224221は、20h刻みの数値となる。Chip No224222、Block No224223およびPage No224224は、論理アドレスに対応するPage233を特定するための情報である。
図13は、Block管理テーブル22423の構成図である。Block管理テーブル22423は、Chip No224231、Block No224232、属性224233、ステータス224234、有効Page残数224235、消去回数224236を有する。
Chip No224231は、Block232が所属するFlashメモリチップ231の番号を示す。Block No224232は、Flashメモリチップ231内のBlock番号を示す。各Block232は、Chip No224231とBlock No224232によって識別される。属性224233は、図10で説明したBlock232の属性を示すものであり、「通常」もしくは「代替」がセットされる。ステータス224234は、各Block232の動作状況を表している。例えば、当該Blockに対してWLが実行されているときは「WL」、GCが実行されているときは「GC」、読み書き可能である場合は「通常」、その他のステータスについては「n/a」がセットされる。有効Page残数224235は、更新領域235として割り当てられているPage233が当該Block232内にあと何Page分残っているかを表す。ただし、当該Blockが代替属性である場合や、WL/GCのようにPage解放処理を実施しているような場合には、「n/a」が設定される。消去回数224236は、当該Block232の消去回数を表し、主に、当該Block232が書き換え上限に達しているか否かを管理するための情報として使用される。
図14は、ストレージ装置10の基本I/Oシーケンスを説明するフローチャートである。以下、図14の各ステップについて説明する。
(図14:ステップS10)
ストレージ装置10は、ホスト計算機40から、データライト要求またはデータリード要求(I/O要求)を受信する。ストレージコントローラ100は、本フローチャートを開始する。
(図14:ステップS20)
ストレージコントローラ100は、ステップS10で受信した要求がリード(RD)要求であるか、ライト(WR)要求であるかを判断する。リード要求である場合はステップS30へ進み、ライト要求である場合はステップS50へ進む。
(図14:ステップS30)
ストレージコントローラ100は、リード要求を受けたデータをFlash Box210からメモリ140に転送するステージング処理を実行する。本ステップの詳細は、後述の図15〜図16で改めて説明する。
(図14:ステップS40)
ストレージコントローラ100は、ステップS30でFlash Box210からメモリ140に転送したデータを、ホスト計算機40に送信する。本ステップにより、ホスト計算機40から依頼されたリード要求処理は終了する。
(図14:ステップS50)
ストレージコントローラ100は、ホスト計算機40に対し、ライト要求の対象であるデータを転送するよう依頼する。ストレージコントローラ100はそのデータを受信し、メモリ140に格納する。
(図14:ステップS60)
ストレージコントローラ100は、ホスト計算機40に対して、転送が正常終了した旨の応答を送信する。
(図14:ステップS70)
ストレージコントローラ100は、メモリ140に保持しているデータをFlash Box210に格納するデステージ処理を行う。本図では、ライト要求が発生するたびにデステージ処理を実行しているが、デステージ処理は任意のタイミングで実行してもよい。この場合、ステップS50〜S60を複数回実行した後に、デステージ処理をまとめて実行することになる。これにより、1回のデステージ処理でライト対象データをFlash Box210に対してまとめて転送することができ、処理の効率化が期待できる。
図15は、ストレージコントローラ100が実行するI/O処理プログラムの動作フロー図である。本フロー図は、図14で説明したリード処理およびライト処理を実行するためのシーケンスを説明する。以下、図15の各ステップについて説明する。なお説明の便宜上、はじめにリード処理についてまとめて説明し、次にライト処理について説明する。
<実施の形態1:図15:リード処理>
(図15:ステップS100)
ストレージコントローラ100は、ホスト計算機40からI/O要求が到着しているか否かを判断する。I/O要求が到着していればステップS110へ進み、到着していなければステップS140へ進む。
(図15:ステップS110)
ストレージコントローラ100は、ホスト計算機40が発行したコマンドを解析し、要求種別がRDかWRかを判断する。要求種別がRDである場合はステップS120へ進み、WRである場合はステップS130へ進む。ここでは要求種別がRDであったものと過程して以下のステップを説明する。
(図15:ステップS120)
ストレージコントローラ100は、ステージング処理(Flashメモリチップ231に格納されているデータを読み出す処理)を実行するため、データ転送要求(BE転送要求(1))を作成する。具体的には、メモリ管理テーブル1423を参照し、Flashメモリチップ231から読み出したデータを格納すべきキャッシュセグメントを確保する。次に、転送リスト1424を作成する。この場合、転送元14242には「BE」、転送先14243には「Mem」が設定され、キャッシュセグメントNo14244には、確保したキャッシュセグメントの番号等が設定される。ストレージコントローラ100は、再度ステップS100に戻り、別のI/O要求が到着していないかを判断する。ここでは別のI/O要求は到着していないものと仮定し、ステップS140へ進む。
(図15:ステップS140)
ストレージコントローラ100は、転送リスト1424の有無を確認することにより、データ転送要求の有無を判断する。転送リスト1424が作成されている場合は、転送要求ありと判断してステップS150へ進み、転送リスト1424が作成されていなければステップS160へ進む。
(図15:ステップS150)
ストレージコントローラ100は、転送リスト1424の記述にしたがって、データ転送処理を実行する。本ステップの詳細は、後述の図16で説明する。
(図15:ステップS160)
ストレージコントローラ100は、転送終了リスト1425の有無を確認することにより、ステップS150で実行したデータ転送のうち終了しているものが有るか否かを確認する。終了したデータ転送がある場合はステップS180へ進み、ない場合はステップS170へ進む。
(図15:ステップS170)
ストレージコントローラ100は、動作を継続する場合はステップS100へ戻って同様の処理を繰り返し、動作を終了する場合は本フローを終了する。
(図15:ステップS180)
ストレージコントローラ100は、終了したデータ転送処理のリストNo14251をキーにして転送リスト1424を参照し、転送元14242および転送先14243の値を取得する。転送元14242が「BE」で転送先14243が「Mem」である場合はステップS190へ進み、転送元14242が「Mem」で転送先14243が「FE」である場合はステップS220へ進む。
(図15:ステップS180:補足)
転送元14242が「BE」で転送先14243が「Mem」である場合は、Flash Box210からメモリ140にデータを読み出す処理が完了したことが分かる。この場合はさらにメモリ140からホスト計算機40へデータを転送する必要があるので、ステップS190でそのためのデータ転送要求を作成する必要がある。転送元14242が「Mem」で転送先14243が「FE」である場合は、メモリ140からホスト計算機40へデータを転送する処理、すなわちリード処理が完了したことが分かる。
(図15:ステップS190)
ストレージコントローラ100は、ステップS150でFlash Box210からメモリ140に読み出したデータをホスト計算機40へ転送するためのデータ転送要求(FE転送要求(3))を、転送リスト1424として作成する。転送リスト1424の転送元14242には「Mem」、転送先14243には「FE」が設定される。ストレージコントローラ100は、再度ステップS160に戻り、終了したデータ転送があるか否かを確認する。
(図15:ステップS220)
ストレージコントローラ100は、データをホスト計算機40へ転送する処理が完了したものと判断する。
<実施の形態1:図15:ライト処理>
(図15:ステップS100〜S110)
ストレージコントローラ100は、リード処理で説明したステップS100〜S110と同様の処理を実行する。ここでは要求種別がWRであったものと過程して以下のステップを説明する。
(図15:ステップS130)
ストレージコントローラ100は、データ受信処理(ホスト計算機40から書き込み対象データを受信する処理)を実行するため、データ転送要求(FE転送要求(2))を作成する。具体的には、メモリ管理テーブル1423を参照し、ホスト計算機40から受信したデータを格納すべきキャッシュセグメントを確保する。次に、転送リスト1424を作成する。この場合、転送元14242には「FE」、転送先14243には「Mem」が設定され、キャッシュセグメントNo14244には、確保したキャッシュセグメントの番号等が設定される。ストレージコントローラ100は、再度ステップS100に戻り、別のI/O要求が到着していないかを判断する。ここでは別のI/O要求は到着していないものと仮定し、ステップS140へ進む。
(図15:ステップS140〜S170)
これらのステップは、リード処理における各ステップと同様である。
(図15:ステップS180)
ストレージコントローラ100は、終了したデータ転送処理のリストNo14251をキーにして転送リスト1424を参照し、転送元14242および転送先14243の値を取得する。転送元14242が「FE」で転送先14243が「Mem」である場合はステップS200へ進み、転送元14242が「Mem」で転送先14243が「BE」である場合はステップS230へ進む。
(図15:ステップS200)
ストレージコントローラ100は、データ書込みが正常終了した旨をホスト計算機40に通知する。実際にデータ書込みを実行するのは以後のステップであるが、ホスト計算機40に対して応答を早く返すため、データを受信し終えた時点でホスト計算機40に応答を返すこととした。
(図15:ステップS210)
ストレージコントローラ100は、ステップS150でホスト計算機40から受信しメモリ140に格納したデータをFlash Box210へ転送するためのデータ転送要求(BE転送要求(4))を、転送リスト1424として作成する。転送リスト1424の転送元14242には「Mem」、転送先14243には「BE」が設定される。ストレージコントローラ100は、再度ステップS160に戻り、終了したデータ転送があるか否かを確認する。
(図15:ステップS230)
ストレージコントローラ100は、データをFlash Box210へ転送する処理が完了したものと判断する。
図16は、図15のステップS150の詳細フローチャートである。以下、図16の各ステップについて説明する。
(図16:ステップS151)
CPU130は、転送リスト1424を参照し、リストNo14241の最も若い番号のものを処理対象コマンドとして決定する。
(図16:ステップS152)
CPU130は、ステップS151で処理対象として定めたコマンドがFlash Box210に対するI/Oであるか否かを、転送先14243を参照することにより判断する。具体的には、転送先14243「BE」が設定されているものが、Flash Box210に対するI/O要求であると判断する。Flash Box210に対するI/O要求であればステップS153へ進み、Flash Box210に対するI/O要求でなければステップS155へ進む。
(図16:ステップS152:補足)
Flash Box210に対するI/O要求ではない場合とは、例えばホスト計算機40に対するデータ転送要求のことである。
(図16:ステップS153)
CPU130は、Flash Box210に対しデータ転送の可否を問い合わせる。本ステップの詳細は、後述の図17〜図19で改めて説明する。
(図16:ステップS154)
CPU130は、Flash Box210からの回答にしたがって、データ転送可否を判断する。データ転送可能であればステップS155へ進み、データ転送不可であればステップS156へ進む。
(図16:ステップS155)
CPU130は、ASICs150に転送リスト1424を渡す。ASICs150はDMA転送部151の機能を用いて、転送リスト1424に記載されているデータ転送を実行する。
(図16:ステップS156)
CPU130は、ステップS154でデータ転送不可と判断した場合、Flash Box210が即座にライト処理を実行することができないものと判断する。CPU130は、データ転送を開始することなく、所定時間待機する。CPU130は、本ステップでデータ転送を行わなかったデータについては、本フローを再度実行するときに改めて転送を試みる。
(図16:ステップS157)
CPU130は、転送リスト1424を参照し、実行していない転送要求が存在するか否かを判断する。実行していない転送要求がある場合はステップS151へ戻り、同様の処理を繰り返す。実行していない転送要求がない場合は、本フローを終了する。
図17は、ステップS153において、ストレージコントローラ100とFlashコントローラ220の間でやり取りされる、要求コマンド1000と応答コマンド2000の構成図である。以下、各コマンドの構成について説明する。
要求コマンド1000は、ストレージコントローラ100からFlashコントローラ220に送付されるコマンドであり、コマンドNo1001、要求内容1002を有する。要求内容1002の種類によっては、さらに付随的な情報が追加される。ここでは、Flashメモリチップ231に対してデータ書込みをすることができるか否かを、ストレージコントローラ100からFlashコントローラ220に問い合わせる例を説明する。この場合、要求コマンド1000は、さらに先頭アドレス1003、ライト要求サイズ1004を有する。
コマンドNo1001には、ASICs150が現在処理している転送リスト1424のリストNo14241の値が設定される。要求内容1002には、当該要求コマンド1000がデータ転送可否を問合せるコマンドである旨を示す値が設定される。先頭アドレス1003には、LBA14247の数値が設定される。ライト要求サイズ1004には、LENGTH14245の数値が設定される。
応答コマンド2000は、Flashコントローラ220からストレージコントローラ100に送付されるコマンドであり、要求コマンド1000に対する応答内容が含まれている。応答コマンド2000は、コマンドNo2001、応答内容2002を有する。
コマンドNo2001には、対応する要求コマンド1000に設定されたコマンドNo1001の数値が設定される。応答内容2002には、当該応答コマンド2000の応答内容を示す値が設定される。例えば要求コマンド1000が、データ転送可否を問合せるコマンドである場合、データ転送の可否を示す値が設定される。
コマンドの形態は、図17に示す例に限定されるものではない。また、Flashコントローラ220がストレージコントローラ100に対して要求コマンド1000を送付し、ストレージコントローラ100がFlashコントローラ220に対して応答コマンド2000を送付するようにしてもよい。
図18は、ステップS153の詳細を示すフローチャートである。以下、図18の各ステップについて説明する。
(図18:ステップS1530)
ストレージコントローラ100は、要求コマンド1000を作成する。要求コマンド1000の各項目には、図17で説明した通り、ASICs150が現在処理している転送リスト1424の内容がそれぞれ設定される。
(図18:ステップS1531)
ストレージコントローラ100は、作成した要求コマンド1000をFlashコントローラ220に対して送付する。
(図18:ステップS1532)
Flashコントローラ220は、要求コマンド1000を受信する。
(図18:ステップS1533)
Flashコントローラ220は、要求コマンド1000の内容を確認する。本ステップの詳細は、後述の図19で改めて説明する。
(図18:ステップS1534)
Flashコントローラ220は、ステップS1533の結果に基づき応答コマンド2000を作成し、ストレージコントローラ100に送付する。
(図18:ステップS1535)
ストレージコントローラ100は、応答コマンド2000を受信し、その内容を確認した後、本フローを終了する。
図19は、ステップS1533の詳細フローチャートである。以下、図19の各ステップについて説明する。
(図19:ステップS15330)
Flashコントローラ220は、アドレス管理テーブル22422を参照し、要求コマンド1000で指定されたデータが格納されているChip No224222およびBlock No224223を探索する。
(図19:ステップS15331)
Flashコントローラ220は、Block管理テーブル22423のステータス情報224234を参照し、当該Block232が現在GC実行中であるか否かを判断する。GC実行中であればステップS15336へ進み、GC実行中でなければステップS15332へ進む。
(図19:ステップS15332)
Flashコントローラ220は、Block管理テーブル22423のステータス情報224234を参照し、当該Blockが現在WL実行中であるか否かを判断する。WL実行中であればステップS15336へ進み、WL実行中でなければステップS15333へ進む。
(図19:ステップS15333)
Flashコントローラ220は、データ転送要求を受領したBlockにおいて、GCが発生するか否かを判断する。具体的には、要求コマンド1000に含まれるライト要求サイズ1004から、データを格納するために更新領域のPage233がどれだけ必要であるかを判断する。必要となるPage233の数が不足していればGCが発生すると判断し、足りていればGCは発生しないと判断する。GCが発生すると判断する場合はステップS15335へ進み、GCが発生しないと判断する場合はステップS15334へ進む。
(図19:ステップS15333:補足)
本ステップにおける判断方法として、例えば、ライト要求サイズをPage233のサイズで除算して、必要Page数を算出する方法がある。この場合、Flashコントローラ220は、商が当該Blockの有効Page残数224235よりも大きい場合はGCが発生すると判断し、その商が当該Blockの有効Page残数224235以下の場合は、GCは発生しないと判断する。
(図19:ステップS15334)
Flashコントローラ220は、データ転送可能と判定し、本フローを終了する。
(図19:ステップS15335)
Flashコントローラ220は、当該Blockに対してGCを開始する。
(図19:ステップS15336)
Flashコントローラ220は、データ転送不可と判定し、本フローを終了する。
図20は、本実施形態1においてストレージコントローラ100がFlashメモリチップ231にアクセスする際の概略シーケンスを示す図である。以下、図20の各ステップについて説明する。
(図20:ステップS3100)
Flashコントローラ220は、Flashメモリチップ231に対してGCを実行しているものとする。
(図20:ステップS3101〜S3102)
ストレージコントローラ100は、Flashメモリチップ231にデータを書き込むことができるか否かをFlashコントローラ220に対して問い合わせる処理を開始する。ストレージコントローラ100は、Flashメモリチップ231にデータを書込むことができるか否かを問い合わせる要求コマンド1000を、Flashコントローラ220に送信する。
(図20:ステップS3103〜S3104)
Flashコントローラ220は、本ステップの時点ではFlashメモリチップ231に対してGCを実行している。したがって、Flashメモリチップ231にデータを書込むことができない旨を示す応答コマンド2000を、ストレージコントローラ100に送信する。
(図20:ステップS3105)
ストレージコントローラ100は、Flashメモリチップ231にデータを書き込む処理を待機し、別の処理を実行する。このときの待機時間は、固定的に定めておいてもよいし、都度定めてもよい。
(図20:ステップS3106)
Flashコントローラ220は、GCが完了した後は、Flashメモリチップ231に対するデータ書込み要求を受け付けることができる状態になる。
(図20:ステップS3107〜S3108)
ストレージコントローラ100は、ステップS3105で待機していたデータ書込み処理を再開し、ステップS3101〜S3102と同様の処理を実行する。
(図20:ステップS3109〜S3110)
Flashコントローラ220は、ステップS3103〜S3104と同様に、ストレージコントローラ100に対して応答コマンド2000を送信する。ここではGCが完了しているので、Flashメモリチップ231にデータを書込むことができる旨を示す応答コマンド2000を送信することになる。
(図20:ステップS3111〜S3112)
ストレージコントローラ100は、Flashメモリチップ231にデータを書き込む処理を開始する。ストレージコントローラ100は、Flashメモリチップ231にデータを書込む要求コマンド1000を、Flashコントローラ220に送信する。
(図20:ステップS3113〜S3116)
Flashコントローラ220は、Flashメモリチップ231に対してデータ書込みを実行する。データ書込みが完了すると、ストレージコントローラ100に対して、その旨を通知する応答コマンド2000を送信する。ストレージコントローラ100は、その応答コマンド2000を受信すると、データ書込み処理を終了する。
図20のシーケンスによれば、ストレージコントローラ100とFlashコントローラ220が連携することにより、ストレージコントローラ100がデステージに要する時間を最小化することができる。具体的には、ストレージコントローラ100がデステージに要する時間が、Flashメモリチップ231に実際にデータが書き込まれる時間とほぼ等しくなっている。これにより、ストレージコントローラ100が別の処理を実行することができる時間(ステップS3105)が増加するため、ストレージシステム10000全体の性能を向上させることができる。
以上のように、本実施の形態1によれば、ストレージコントローラ100は、Flashメモリチップ231に対してデータを書き込む前に、要求コマンド1000によってFlashコントローラ220に対してデータ書込み可否を問い合わせる。これによりストレージコントローラ100は、Flashメモリチップ231にデータを書き込むことができるようになってから実際にデータ書込みを開始することができるので、実質的なデータ書込み時間を短く抑えることができる。
また、本実施の形態1によれば、ストレージコントローラ100は、Flashメモリチップ231にデータを書き込むことができない旨の応答コマンド2000を受け取った場合は、他の処理を開始する。これにより、Flashメモリチップ231にデータを書き込むことができない時間を無駄にすることなく処理を継続することができるので、ストレージ装置10のパフォーマンスを向上させることができる。
また、本実施の形態1によれば、ストレージコントローラ100は、Flashメモリチップ231にデータを書き込むことができない旨の応答コマンド2000を受け取り、他の処理が完了した後、Flashコントローラ220に対してデータ書込み可否を改めて問い合わせる。これによりストレージコントローラ100は、ある時点でFlashメモリチップ231にデータを書き込むことができない場合でも、データ書込みを中止してしまうことなく、確実にデータ書込みを完了することができる。
また、本実施の形態1において、ストレージコントローラ100は、Flashメモリチップ231にデータを書き込むことができるか否かをFlashコントローラ220に対して問い合わせることを説明したが、データを読み取ることができるか否かを同様に問い合わせるようにしてもよい。これによりストレージコントローラ100は、GC実行中はデータ読取要求を発行せずに別の処理を実行し、GCが終了した時点で改めてデータ読取を行うことができる。
本実施の形態1において、Flashコントローラ220は、ストレージコントローラ100からアクセス要求を受けた時点以外でも、必要に応じて任意のタイミングでGCを実行してもよい。以下の実施形態においても同様である。
本実施の形態1において、Flashコントローラ220からストレージコントローラ100に対し、Flashメモリチップ231にアクセスすることができない旨の応答コマンド2000を送信する際に、待機すべき時間を応答コマンド2000内に含めることもできる。ストレージコントローラ100は、応答コマンド2000に記述されている待機時間だけ待機した後、改めてデータ書込みを試みる。この待機時間は、Flashコントローラ220がGCを実行するのに要する時間に依拠する。そこで、各デバイスの性能等に応じて、適切な待機時間の値をメモリ224等の記憶装置に格納しておき、Flashコントローラ220はその値を読み込んでストレージコントローラ100に通知すればよい。その他、Flashコントローラ220が実行するプログラム内に待機時間の値を埋め込んでおくこともできる。
<実施の形態2>
本発明の実施の形態2では、ストレージコントローラ100がFlashコントローラ220に対してデータ書込み要求を発行する前に、あらかじめGCを実行しておく動作例を説明する。その他の構成は実施の形態1で説明したものと同様である。
図21は、本実施の形態2においてストレージコントローラ100が実行するI/O処理プログラムの動作フロー図である。本フローでは、図15で説明したフローに加えて、ステップS130の後に新たにステップS240が追加されている点が異なる。その他のステップは図15の各ステップと同様である。
図22は、ステップS240の詳細フローである。以下、図22の各ステップについて説明する。
(図22:ステップS241)
ストレージコントローラ100は、現在処理しているI/O要求がシーケンシャルライト要求であるか否かを判断する。シーケンシャルライト要求であればステップS242へ進み、シーケンシャルライト要求でなければ本フローを終了する。
(図22:ステップS241:補足その1)
本ステップでシーケンシャルライトであるか否かを判断しているのは、一般にシーケンシャルライトはサイズの大きいデータを書き込む際に実行される書込みコマンドだからである。
(図22:ステップS241:補足その2)
シーケンシャルライトであるか否かを判定する方法としては、例えば書き込もうとしているデータのアドレスが連続しているか否かによって判定する方法がある。具体的には、ストレージコントローラ100は、ホスト計算機40から受信したI/O要求の直前のアドレス(LBA)におけるデータがメモリ140上に存在するかを、メモリ管理テーブル1423を用いて確認する。そのデータがメモリ140上に存在する場合、当該I/O要求をシーケンシャルライト要求であると判断する。
(図22:ステップS242)
ストレージコントローラ100は、GCを実行するよう指示する要求コマンド1000を作成し、Flashコントローラ220に対して送信する。
図23は、本実施形態2においてストレージコントローラ100がFlashメモリチップ231にアクセスする際の概略シーケンスを示す図である。以下、図23の各ステップについて説明する。
(図23:ステップS3201〜S3205)
ストレージコントローラ100は、ホスト計算機40よりシーケンシャルライト要求を受け取ったものと仮定する。ストレージコントローラ100は、GC実行を開始する要求コマンド1000を、Flashコントローラ220に送信する。ストレージコントローラ100は、Flashメモリチップ231にデータを書き込む処理を待機し、別の処理を実行する。
(図23:ステップS3206〜S3208)
Flashコントローラ220は、Flashメモリチップ231に対してGCを実行する。Flashコントローラ220は、GCが完了した後は、Flashメモリチップ231に対するデータ書込み要求を受け付けることができる状態になる。
(図23:ステップS3209〜S3218)
これらのステップは、図20のステップS3107〜S3116と同様である。
図23のシーケンスによれば、ストレージコントローラ100は、Flashコントローラ220に対してデステージ処理を開始する前に、GCを開始するよう要求しておく。これにより、実際にデータ書込みを開始する前に、Flashメモリチップ231内に十分な空きPageを作成することができる。したがって、その後にシーケンシャルライト要求によってサイズが大きいデータをデステージする処理が発生した場合にも、Flashコントローラ220はFlashメモリチップ231に対してGCを実行することなく、即座にデータを格納することができる。
本実施の形態2において、ストレージコントローラ100は、ホスト計算機40よりシーケンシャルライト要求を受け取ったときは、サイズの大きいデータを書き込む処理が発生するものと判断するものとした。書き込むデータのサイズが大きいことを他の手段によって知ることができる場合には、必ずしもシーケンシャルライト要求であるか否かによってGCを実行する要否を判断しなくともよい。例えば、ホスト計算機40からデータ書込み要求を受けたとき、そのデータのサイズも併せて通知された場合には、そのサイズによってGC要否を判断することもできる。
また、本実施の形態2において、ストレージコントローラ100は、Flashコントローラ220に対してGCをあらかじめ実行しておくよう指示する要求コマンド1000を発行することとした。これに対し、ストレージコントローラ100はデータ書込み要求をFlashコントローラ220にそのまま発行し、GC要否をFlashコントローラ220が判断することも考えられる。この場合Flashコントローラ220は、GCを実行するためデータ書込みを行うことができない旨の応答コマンド2000をストレージコントローラ100に対して送信し、GCを開始する。以後の動作は本実施形態2と同様である。
<実施の形態3>
実施の形態2では、ストレージコントローラ100がFlashメモリチップ231に対してデータを書き込む前に、あらかじめGCを実行しておくことを説明した。GCを行うためには、Flashメモリチップ231内にあるデータをいったん代替Block237に退避させなければならないため、空いている代替Block237が存在している必要がある。
しかし、例えばすべての代替Block237が他のBlock232のWLやGCなどに使われていると、代替Block237が不足し、新たにGCやWLを実行することができない。この場合、実施の形態2で説明したようにサイズの大きいデータを書き込む前にあらかじめGCを実行しようとしても、他のBlock232に対するWLやGCが完了して代替Block237が新たに生成されない限り、当該Blockに対してGCを実行することはできない。
そこで本発明の実施の形態3では、例えばLUが削除されたタイミングなど、それまで使用されていたFlashメモリチップ231上の領域が未使用となった時点で、その未使用となった領域を解放するようにストレージコントローラ100からFlashコントローラ220に対して通知する。これにより、Flashメモリチップ231内の代替Block237の数を確保することを図る。
従来のストレージ装置において、ストレージコントローラは、LUを削除するときに論理アドレス空間であるLUを解放するが、HDDに対してフォーマット処理等の物理領域を開放する処理は実行していない。すなわち、LUを削除することによって見かけ上は記憶領域が解放されたように見えるが、実際には物理領域内にデータが存在し続けていることとなる。
Flashメモリチップ231を用いたストレージ装置においては、一度データを書き込んだPage233に対してデータを改めて書き込むためには、Page233に書き込まれているデータを物理的に削除する必要がある。そのため、ストレージコントローラ100がLUを削除するのみでは記憶領域は実際には解放されておらず、次第に代替Block237が不足して上記不具合が発生する可能性がある。本実施形態3では、この不具合を解消することを図る。
図24は、ストレージコントローラ100がLUを削除した後に、ストレージコントローラ100からFlashコントローラ220に対して、Block232を解放するよう要求する処理のフローチャートである。以下、図24の各ステップについて説明する。
(図24:ステップS300)
ストレージコントローラ100は、LUを削除する処理を実行した後、またはLUを削除する処理の過程で、本処理フローを実行する。
(図24:ステップS301)
ストレージコントローラ100は、削除したLUに割り当てられていたBlock232を解放するよう要求する要求コマンド1000を、Flashコントローラ220に対して発行する。要求コマンド1000の各パラメータには、解放対象とする領域の開始LBAと終了LBAなどを設定する。この解放範囲は、LU管理テーブル1422上で、削除対象としたLUのSTART LBA14223およびLAST LBA14224を参照することにより特定できる。
(図24:ステップS302)
Flashコントローラ220は、要求コマンド1000を受信する。
(図24:ステップS303)
Flashコントローラ220は、要求コマンド1000の内容にしたがって、指示されたBlock232を解放する。具体的には、Flashコントローラ220は、アドレス管理テーブル22422を用いて解放すべきBlock232を特定し、当該Block232に対して消去コマンドを発行する。併せて、Block管理テーブル22423の当該Blockの属性224233を「代替」に変更する。
(図24:ステップS304)
Flashコントローラ220は、Block232を解放する処理が完了した旨を通知するための応答コマンド2000を作成し、ストレージコントローラ100に対して送付する。
(図24:ステップS305)
ストレージコントローラ100は、Flashコントローラ220から応答コマンド2000を受信し、本処理フローを終了する。
以上のように、本実施の形態3によれば、ストレージコントローラ100がLUを削除した時点で、Flashメモリチップ231上の記憶領域を解放する処理が実行される。これにより、Flashコントローラ220がGCを実行しようとしたときに代替Block237が不足してGCを実行できない状況に陥る可能性を低減することができる。特に実施の形態2で説明したように、サイズの大きいデータを書き込む前にあらかじめGCを実行する動作条件の下では、GCを実行する頻度が高まるため、本実施形態3で説明した手法の効果が有効に発揮される。
<実施の形態4>
本発明の実施の形態4では、ストレージ装置10が容量仮想化技術を採用した場合において、代替Block237の数を確保する手法について説明する。代替Block237を確保することが必要となる理由は、実施形態3で説明したものと同様である。
容量仮想化技術とは、ストレージ装置10が持っている物理的な容量を超える仮想的な容量をホスト計算機40に対して提示しておき、その容量が実際に必要になった時点で初めて記憶容量を追加する技術である。容量仮想化技術を採用したストレージ装置の1例は例えば特開2007−66259号公報に開示されている。
本実施形態4において、記憶容量を仮想化したストレージ装置10上でデータが書き込まれた際に割り当てられる記憶領域を、本発明では「セグメント」と呼ぶ。特開2007−66259号公報では、容量仮想化技術を適用したストレージ装置の性能を向上させる手段として、セグメント(同文献においても同様にセグメントと呼んでいる)を記憶装置間で移動させる技術が開示されている。
セグメントを記憶装置間で移動させた場合、移動元のセグメントのデータは物理的には解放されない。そのため、実施形態3と同様に、移動元のセグメントを構成しているBlock232を解放することにより、Flashメモリチップ231内の代替Block237の数を増加させることができる。
図25は、本実施形態4におけるメモリ140の構成図である。実施形態1の図3で説明した構成と比較して、LU管理テーブル1422に代えて、新たにセグメント管理テーブル1426、LU管理テーブル1427、統計情報管理テーブル1428を有する点が異なる。メモリ140以外の構成は実施の形態1〜3と同様である。
セグメント管理テーブル1426は、セグメントの構成を管理する。LU管理テーブル1427は、LUの構成を管理する。統計情報管理テーブル1428は、セグメントに対して発行されたコマンド数などの統計情報を記録する。
図26は、セグメント管理テーブル1426の構成図である。セグメント管理テーブル1426は、セグメントNo14261、Flash Box No14262、START LBA14263、LAST LBA14264を有する。
セグメントNo14261は、作成されたセグメントの識別子である。Flash Box No14262は、セグメントが作成されているFlash Box210の識別番号である。START LBA14263およびLAST LBA14264は、セグメントのアドレス空間がFlash Box210内のどの位置に対応するかを示すものであり、開始アドレスと終了アドレスをそれぞれLBAで示している。
図27は、LU管理テーブル1427の構成図である。LU管理テーブル1427は、作成されたLUの数と等しい数だけ存在する。LU管理テーブル1427は、LUN14271、LUサイズ14272、セグメントNo14273を有する。
LUN14271は、LUの識別子である。LUサイズ14272はLUのサイズを例えばGB(GigaByte)などの単位で示している。セグメントNo14273は、当該LUに割り当てられているセグメントの識別番号を示しており、LUサイズに対応する数だけ存在する。
容量仮想化技術では、実際にデータが格納された時に初めて物理的な記憶領域である仮想論理ユニットを割り当てる。そのため、セグメントNo14273には、セグメントを割り当てていない領域については未割当を示す「n/a」が設定され、セグメントを割り当て済みの領域については該当するセグメントの識別番号が設定されている。
図28は、統計情報管理テーブル1428の構成図である。統計情報管理テーブル1428は、セグメントNo14281、ライトコマンド数14282、リードコマンド数14283を有する。
セグメントNo14281は、セグメントの識別子である。ライトコマンド数14282およびリードコマンド数14283は、当該セグメントに対してホスト計算機40から発行されたライトI/O要求とリード要求I/Oの数をそれぞれ示している。
ストレージコントローラ100は、セグメントを移動またはLUを削除した後に、Flashコントローラ220に対して、そのセグメントに対応するBlock232を解放するよう要求する。このステップは図24と同様であるが、解放対象とするBlock232を特定する手法が異なる。
セグメントを移動する場合、ストレージコントローラ100は、移動元のセグメントNo14261をキーにして、セグメント管理テーブル1426から当該セグメントのSTART LBA14263およびLAST LBA14264を特定する。
LUを削除する場合、ストレージコントローラ100は、まずLUN14271をキーにしてLU管理テーブル1427を参照し、削除したLUを構成するセグメントNo14273を特定する。次にストレージコントローラ100は、そのセグメントNoをキーにしてセグメント管理テーブル1426を参照し、当該セグメントのSTART LBA14263およびLAST LBA14264を特定する。
以上のように、本実施の形態4によれば、ストレージコントローラ100がセグメントを移動またはLUを削除した時点で、Flashメモリチップ231上の記憶領域を解放する処理が実行される。これにより、ストレージ装置10が容量仮想化技術を採用した場合においても、実施形態3と同様の効果を発揮することができる。
なお、本実施形態4において、ストレージコントローラ100がセグメントを削除した場合でも、同様にFlashメモリチップ231上の記憶領域を解放するようにしてもよい。
<実施の形態5>
本発明の実施の形態5では、複数のFlash Box210間でライトI/O頻度、データ消去回数などを均一化する手法を説明する。本実施形態5では、実施形態4で説明した容量仮想化技術を採用した構成を前提とするが、同様の手法を実施形態1〜3で説明した構成の下で用いることもできる。
特定のFlash Box210のみライトI/Oの頻度が高い場合、そのFlash Box210ではGCやWLの実行頻度が高くなるため、Flashメモリチップ231に対する消去回数が増加する。Flashメモリチップ231は有限の消去回数を有するデバイスであるため、特定のBlock232の消去回数が限界値を超え故障すると、代替Block237が故障したBlock232に代わる。したがって、ライトI/O頻度が高いFlash Box210では、Flash Box210内の代替Block237が減少しやすくなり、結果として代替Block237が不足することによるライト処理性能の低下を招く可能性がある。
そこで本実施形態5では、ストレージコントローラ100が、各Flash Box210のライトI/O頻度や消去回数などの統計情報をもとに、Flash Box210間でセグメントを移動させる。これにより、複数のFlash Box210間でライトI/O頻度や消去回数などを均一化し、システム性能の最大化およびFlash Box210の長寿命化を図る。
そのため本実施形態5では、ストレージコントローラ100とFlashコントローラ220の間で、Flash Box210毎のデータ消去回数などの統計情報をやり取りする。
図29は、ストレージコントローラ100がFlash Box210間の負荷を均一化する処理のフローチャートである。以下、図29の各ステップについて説明する。
(図29:ステップS400)
ストレージコントローラ100は、Flashコントローラ220に対して、Flash Box210の統計情報を送付するよう要求するための要求コマンド1000を作成し、Flashコントローラ220に対して送信する。
(図29:ステップS401)
Flashコントローラ220は、要求コマンド1000を受信する。
(図29:ステップS402)
Flashコントローラ220は、要求コマンド1000の内容にしたがって、Flash Box210の統計情報を取得する。具体的には、まずBlock管理テーブル22423を参照し、各Block232の状態を取得する。次に、全Block232の消去回数の合計値などの統計情報を、統計情報管理テーブル1428から取得する。
(図29:ステップS403)
Flashコントローラ220は、要求コマンド1000の要求内容に応じた応答コマンド2000を作成し、ストレージコントローラ100に送付する。
(図29:ステップS403:補足)
本ステップにおいて、Flashコントローラ220がストレージコントローラ100に対して通知する統計情報としては、通常Block236と代替Block237の割り当て数、GCやWLを実行しているBlock232の数、有効Page残数や、データ消去回数などが考えられる。Flashコントローラ220は、ストレージコントローラ100からの要求に応じて、Flash Box210の各種統計情報を通知することができるものとする。
(図29:ステップS404)
ストレージコントローラ100は、Flashコントローラ220から応答コマンド2000を受信する。
(図29:ステップS405)
ストレージコントローラ100は、入れ替え対象となるセグメントを決定する。例えば、Flashコントローラ220から取得したFlash Box210のデータ消去回数と、統計情報管理テーブル1428のライトコマンド数14282の値とを比較し、データ消去回数が最も少ないFlash Box210にライトコマンド数が最も多いセグメントを配置するよう決定する。
(図29:ステップS406)
ストレージコントローラ100は、ステップS405の結果にしたがって、セグメントを入れ替える。これにより、セグメントに対するアクセスが均一になり、Flash Box210間のI/O処理を平準化することができる。
以上のように、本実施の形態5によれば、ストレージコントローラ100は、Flash Box210の統計情報をFlashコントローラ220から取得し、これに基づき各Flash Box210間の負荷を平準化することができる。これにより、Flashメモリチップ231内部におけるデータ書込み回数またはデータ削除回数を平準化するのみならず、Flash Box210間でもデータ書込み回数またはデータ削除回数を平準化することができる。
10:ストレージ装置、100:ストレージコントローラ、110:I/F Chip、120:NIC、130:CPU、140:メモリ、141:データキャッシュ領域、1411:ユーザデータ、142:システム領域、1421:プログラム群、1422:LU管理テーブル、14221:LUN、14222:Flash Box No、14223:START LBA、14224:LAST LBA、1423:メモリ管理テーブル、14231:キャッシュセグメントNo、14232:LUN、14233:LBA、14234:LENGTH、1424:転送リスト、14241:リストNo、14242:転送元、14243:転送先、14244:キャッシュセグメントNo、14245:LENGTH、14246:LUN、14247:LBA、1425:転送終了リスト、14251:転送リストNo、1426:セグメント管理テーブル、14261:セグメントNo、14262:Flash Box No、14263:START LBA、14264:LAST LBA、1427:LU管理テーブル、14271:LUN、14272:LUサイズ、14273:セグメントNo、1428:統計情報管理テーブル、14281:セグメントNo、14282:ライトコマンド数、14283:リードコマンド数、150:ASICs、151:DMA転送部、160:I/F Chip、170:接続バス、180:専用バス、190:接続バス、200:Flash Box部、210:Flash Box、220:Flashコントローラ、221:I/F Chip、222:CPU、223:ASICs、2231:DMA転送部、2232:Memoryコントローラ、224:メモリ、2241:データキャッシュ領域、22411:ユーザデータ、2242:システム領域、22421:プログラム群、22422:アドレス管理テーブル、224221:START LBA、224222:Chip No、224223:Block No、224224:Page No、22423:Block管理テーブル、224231:Chip No、224232:Block No、224233:属性、224234:ステータス、224235:有効Page残数、224236:消去回数、22424:転送リスト、225:専用バス、226:専用バス、227:専用バス、230:memory array、231:Flashメモリチップ、232:Block、233:Page、234:ベース領域、235:更新領域、236:通常Block、237:代替Block、20:SAN、30:LAN、40:ホスト計算機、1000:要求コマンド、1001:コマンドNo、1002:要求内容、1003:先頭アドレス、1004:ライト要求サイズ、2000:応答コマンド、10000:ストレージシステム。

Claims (12)

  1. それぞれがデータを格納する複数のブロックを複数のFlashメモリチップと、前記複数のFlashメモリチップに対するデータの書き込みおよび前記複数のFlashメモリチップからのデータの読み取りを制御するプロセッサと、前記複数のブロックのそれぞれについて内部制御が実行中か否かを管理するブロック管理情報を格納するメモリと、を有するFlashコントローラと、を備えるFlashボックスと、
    前記Flashボックスの前記Flashコントローラに対してアクセス要求コマンドを送信するストレージコントローラと、
    を備え、
    前記ストレージコントローラは、
    前記Flashコントローラに対して前記アクセス要求コマンドを送信する前に、前記Flashコントローラに対して問い合わせ要求コマンドを送信し、
    前記Flashコントローラのプロセッサは、前記問い合わせ要求コマンドを受信すると、前記問い合わせ要求コマンドの対象となる対象ブロックを特定し、前記ブロック管理情報を参照して前記Flashボックス内部における前記複数のFlashメモリチップのうちの前記対象ブロックに対する内部制御を実行中か否かを判断し、前記内部制御を実行していない場合は前記ストレージコントローラに対してデータ転送許可応答を送信し、
    前記ストレージコントローラは、前記データ転送許可応答を受信した後に、前記アクセス要求コマンドを前記Flashコントローラに対して送信する
    ことを特徴とするストレージ装置。
  2. 前記ストレージコントローラは、
    前記アクセス要求コマンドに対する応答として前記データ転送許可応答を前記Flashコントローラから受け取らなかった場合は他の処理を実行し、その後に、前記問い合わせ要求コマンドを前記Flashコントローラに対して改めて送信し、
    前記Flashメモリチップに対して所定サイズ以上のデータを書き込む要求またはシーケンシャルライトを実行する要求を発行する前に、前記Flashメモリチップにデータを書き込むことができる容量を確保するためのガベージコレクションを実行するよう前記Flashコントローラに要求し、
    前記Flashメモリチップ上の記憶領域に割り当てた論理ユニットを削除する際に、前記論理ユニットに対応する前記Flashメモリチップ上の記憶領域を解放するよう前記Flashコントローラに通知し、
    前記Flashメモリチップ上の記憶領域に仮想的な記憶領域であるセグメントを割り当て、
    前記セグメントを移動または削除する際に、前記セグメントが移動または削除された前記Flashメモリチップ上の記憶領域を解放するよう前記Flashコントローラに通知し、
    前記Flashメモリチップに対する書込頻度を前記Flashボックス間で平準化し、
    前記Flashメモリチップに対する書込頻度が前記Flashボックス間で平準化されるように前記セグメントを割り当て、
    前記Flashコントローラは、
    前記Flashメモリチップにデータを書き込むことができる容量を確保するためのガベージコレクションを実行し、
    前記ガベージコレクションを実行している間に前記ストレージコントローラから前記問い合わせ要求コマンドを受信した場合は、前記ストレージコントローラに対して前記データ転送許可応答を送信せず、
    前記ストレージコントローラより、前記ガベージコレクションを実行する要求を受け取ると、前記Flashメモリチップに対して前記ガベージコレクションを開始し、
    前記Flashメモリチップに対して所定サイズ以上のデータを書き込む要求またはシーケンシャルライトを実行する要求を前記ストレージコントローラから受け取ると、前記所定サイズ以上のデータを前記Flashメモリチップに書き込む処理を開始する前に前記ガベージコレクションを開始し、
    前記ストレージコントローラより、前記論理ユニットに対応する前記Flashメモリチップ上の記憶領域を解放すべき旨の通知を受け取ると、前記論理ユニットに対応する前記Flashメモリチップ上の記憶領域を解放し、
    前記ストレージコントローラより、前記セグメントが移動または削除された後の前記Flashメモリチップ上の記憶領域を解放すべき旨の通知を受け取ると、前記セグメントが移動または削除された前記Flashメモリチップ上の記憶領域を解放し、
    前記Flashメモリチップに対する書込頻度を前記ストレージコントローラに通知する
    ことを特徴とする請求項1記載のストレージ装置。
  3. 前記ストレージコントローラは、
    前記アクセス要求コマンドに対する応答として前記データ転送許可応答を前記Flashコントローラから受け取らなかった場合は他の処理を実行する
    ことを特徴とする請求項1記載のストレージ装置。
  4. 前記ストレージコントローラは、
    前記他の処理を実行した後、前記問い合わせ要求コマンドを前記Flashコントローラに対して改めて送信する
    ことを特徴とする請求項3記載のストレージ装置。
  5. 前記Flashコントローラは、
    前記Flashメモリチップにデータを書き込むことができる容量を確保するためのガベージコレクションを実行し、
    前記ガベージコレクションを実行している間に前記ストレージコントローラから前記問い合わせ要求コマンドを受信した場合は、前記ストレージコントローラに対して前記データ転送許可応答を送信しない
    ことを特徴とする請求項1記載のストレージ装置。
  6. 前記ストレージコントローラは、
    前記Flashメモリチップに対して所定サイズ以上のデータを書き込む要求またはシーケンシャルライトを実行する要求を発行する前に、前記ガベージコレクションを実行するよう前記Flashコントローラに要求し、
    前記Flashコントローラは、
    前記ストレージコントローラよりその要求を受け取ると、前記Flashメモリチップに対して前記ガベージコレクションを開始する
    ことを特徴とする請求項5記載のストレージ装置。
  7. 前記Flashコントローラは、
    前記Flashメモリチップに対して所定サイズ以上のデータを書き込む要求またはシーケンシャルライトを実行する要求を前記ストレージコントローラから受け取ったとき、
    前記所定サイズ以上のデータを前記Flashメモリチップに書き込む処理を開始する前に前記ガベージコレクションを開始する
    ことを特徴とする請求項5記載のストレージ装置。
  8. 前記ストレージコントローラは、
    前記Flashメモリチップ上の記憶領域に割り当てた論理ユニットを削除する際に、前記論理ユニットに対応する前記Flashメモリチップ上の記憶領域を解放するよう前記Flashコントローラに通知し、
    前記Flashコントローラは、
    前記ストレージコントローラより前記通知を受け取ると、前記論理ユニットに対応する前記Flashメモリチップ上の記憶領域を解放する
    ことを特徴とする請求項1記載のストレージ装置。
  9. 前記ストレージコントローラは、
    前記Flashメモリチップ上の記憶領域に仮想的な記憶領域であるセグメントを割り当て、
    前記セグメントを移動または削除する際に、前記セグメントが移動または削除された前記Flashメモリチップ上の記憶領域を解放するよう前記Flashコントローラに通知し、
    前記Flashコントローラは、
    前記ストレージコントローラより前記通知を受け取ると、前記セグメントが移動または削除された前記Flashメモリチップ上の記憶領域を解放する
    ことを特徴とする請求項1記載のストレージ装置。
  10. 前記Flashコントローラは、
    前記Flashメモリチップに対する書込頻度を前記ストレージコントローラに通知し、
    前記ストレージコントローラは、
    前記Flashメモリチップに対する書込頻度を前記Flashボックス間で平準化する
    ことを特徴とする請求項1記載のストレージ装置。
  11. 前記Flashコントローラは、
    前記Flashメモリチップに対する書込頻度を前記ストレージコントローラに通知し、
    前記ストレージコントローラは、
    前記Flashメモリチップ上の記憶領域に仮想的な記憶領域であるセグメントを割り当て、
    前記Flashメモリチップに対する書込頻度が前記Flashボックス間で平準化されるように前記セグメントを割り当てる
    ことを特徴とする請求項1記載のストレージ装置。
  12. 前記Flashコントローラは、前記複数のFlashメモリチップが有する物理記憶領域に論理記憶領域を対応付けて前記ストレージコントローラに提供し、
    前記ストレージコントローラは、前記Flashコントローラに対して、前記論理記憶領域におけるアドレスを指定して前記アクセス要求コマンドおよび前記問い合わせ要求コマンドを送信する
    ことを特徴とする請求項1記載のストレージ装置。
JP2012529828A 2010-04-12 2010-04-12 ストレージ装置 Expired - Fee Related JP5646633B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/002639 WO2011128928A1 (en) 2010-04-12 2010-04-12 Storage device

Publications (2)

Publication Number Publication Date
JP2013515979A JP2013515979A (ja) 2013-05-09
JP5646633B2 true JP5646633B2 (ja) 2014-12-24

Family

ID=43431936

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012529828A Expired - Fee Related JP5646633B2 (ja) 2010-04-12 2010-04-12 ストレージ装置

Country Status (3)

Country Link
US (2) US8392670B2 (ja)
JP (1) JP5646633B2 (ja)
WO (1) WO2011128928A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8392670B2 (en) 2010-04-12 2013-03-05 Hitachi, Ltd. Performance management of access to flash memory in a storage device
JP2012033002A (ja) * 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
US9015426B2 (en) * 2011-02-28 2015-04-21 Kove Corporation High performance data storage using observable client-side memory access
JP5792313B2 (ja) * 2011-06-07 2015-10-07 株式会社日立製作所 ストレージシステム
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
WO2014141411A1 (ja) 2013-03-13 2014-09-18 株式会社日立製作所 ストレージシステムおよびストレージシステム制御方法
WO2014184941A1 (ja) * 2013-05-17 2014-11-20 株式会社日立製作所 ストレージ装置
TWI582594B (zh) * 2014-01-22 2017-05-11 群聯電子股份有限公司 資料保護方法、記憶體儲存裝置及記憶體控制電路單元
US9881680B2 (en) 2014-06-03 2018-01-30 Qualcomm Incorporated Multi-host power controller (MHPC) of a flash-memory-based storage device
US9690720B2 (en) 2014-06-03 2017-06-27 Qualcomm Incorporated Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
US9632953B2 (en) * 2014-06-03 2017-04-25 Qualcomm Incorporated Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
US9947386B2 (en) * 2014-09-21 2018-04-17 Advanced Micro Devices, Inc. Thermal aware data placement and compute dispatch in a memory system
WO2016139787A1 (ja) * 2015-03-04 2016-09-09 株式会社日立製作所 ストレージシステム及びデータ書込み制御方法
US10678458B2 (en) * 2018-02-09 2020-06-09 Micron Technology, Inc. Data storage device idle time processing
US10489085B2 (en) 2018-02-28 2019-11-26 Micron Technology, Inc. Latency-based scheduling of command processing in data storage devices
JP2022120544A (ja) * 2021-02-05 2022-08-18 東芝テック株式会社 メモリ制御装置およびプログラム

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63147219A (ja) * 1986-12-10 1988-06-20 Fujitsu Ltd 半導体デイスク装置
US8027194B2 (en) * 1988-06-13 2011-09-27 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
JPH07302176A (ja) * 1994-05-09 1995-11-14 Toshiba Corp 半導体ディスク装置
JP2000105734A (ja) * 1998-07-29 2000-04-11 Fujitsu Ltd メモリ制御方法、メモリ装置及びコントローラ
US6449625B1 (en) * 1999-04-20 2002-09-10 Lucent Technologies Inc. Use of a two-way stack approach to optimize flash memory management for embedded database systems
JP2002366380A (ja) * 2001-06-13 2002-12-20 Canon Inc 電子機器および電子機器の制御方法
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
JP4280055B2 (ja) * 2001-11-28 2009-06-17 株式会社Access メモリ制御方法および装置
US6721820B2 (en) * 2002-05-15 2004-04-13 M-Systems Flash Disk Pioneers Ltd. Method for improving performance of a flash-based storage system using specialized flash controllers
JP4317436B2 (ja) 2003-12-16 2009-08-19 株式会社日立製作所 ディスクアレイシステム及びインターフェイス変換装置
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
JP2008529825A (ja) 2005-01-20 2008-08-07 スリーエム イノベイティブ プロパティズ カンパニー 構造化ポリマーフィルムおよびその製造方法
JP2007066259A (ja) * 2005-09-02 2007-03-15 Hitachi Ltd 計算機システムとストレージシステム並びにボリューム容量拡張方法
WO2007081638A2 (en) 2005-12-21 2007-07-19 Sandisk Corporation Non-volatile memories and methods with adaptive file handling in a directly mapped file storage system
JP4863749B2 (ja) * 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
TW200743113A (en) 2006-05-08 2007-11-16 Apacer Technology Inc Dynamic management method of portable data storage device
JP4897524B2 (ja) * 2007-03-15 2012-03-14 株式会社日立製作所 ストレージシステム及びストレージシステムのライト性能低下防止方法
JP5238235B2 (ja) * 2007-12-07 2013-07-17 株式会社日立製作所 管理装置及び管理方法
US8533384B2 (en) * 2007-12-27 2013-09-10 Sandisk Enterprise Ip Llc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
US7873619B1 (en) * 2008-03-31 2011-01-18 Emc Corporation Managing metadata
JP5489434B2 (ja) 2008-08-25 2014-05-14 株式会社日立製作所 フラッシュメモリ搭載ストレージ装置
US8392670B2 (en) 2010-04-12 2013-03-05 Hitachi, Ltd. Performance management of access to flash memory in a storage device
US8335766B2 (en) * 2010-12-14 2012-12-18 International Business Machines Corporation Flash-copying within asynchronous mirroring environment

Also Published As

Publication number Publication date
US20130151762A1 (en) 2013-06-13
US8924659B2 (en) 2014-12-30
US20110283046A1 (en) 2011-11-17
JP2013515979A (ja) 2013-05-09
US8392670B2 (en) 2013-03-05
WO2011128928A1 (en) 2011-10-20

Similar Documents

Publication Publication Date Title
JP5646633B2 (ja) ストレージ装置
US8447918B2 (en) Garbage collection for failure prediction and repartitioning
JP5489434B2 (ja) フラッシュメモリ搭載ストレージ装置
JP5075761B2 (ja) フラッシュメモリを用いたストレージ装置
US20150254186A1 (en) Information processing device having a plurality of types of memory caches with different characteristics
JP5028381B2 (ja) ストレージ装置およびキャッシュ制御方法
JP6459644B2 (ja) ストレージ制御装置、制御システム及び制御プログラム
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
KR20150105323A (ko) 데이터 스토리지 방법 및 시스템
US10649891B2 (en) Storage device that maintains mapping data therein
JP2015501960A (ja) 不揮発半導体メモリを含んだ不揮発半導体記憶デバイスを有するストレージシステム
WO2017148242A1 (zh) 一种访问叠瓦式磁记录smr硬盘的方法及服务器
US11543989B2 (en) Storage system and control method thereof
JP2011070365A (ja) メモリシステム
US8799573B2 (en) Storage system and its logical unit management method
JP5942037B2 (ja) データ管理メカニズムを備えたストレージシステムおよびその動作方法
JP5910596B2 (ja) ストレージ管理システム、ストレージ管理方法、プログラム、および、情報処理システム
JP5597266B2 (ja) ストレージシステム
US11474750B2 (en) Storage control apparatus and storage medium
WO2018142622A1 (ja) 計算機
US8850087B2 (en) Storage device and method for controlling the same
JP6895551B2 (ja) 情報処理システム
EP4033346B1 (en) Affinity-based cache operation for a persistent storage device
US20140019678A1 (en) Disk subsystem and method for controlling memory access

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130827

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131025

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140516

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: 20141007

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141105

R151 Written notification of patent or utility model registration

Ref document number: 5646633

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees