Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP6007329B2 - ストレージコントローラ、ストレージ装置、ストレージシステム - Google Patents
[go: Go Back, main page]

JP6007329B2 - ストレージコントローラ、ストレージ装置、ストレージシステム - Google Patents

ストレージコントローラ、ストレージ装置、ストレージシステム Download PDF

Info

Publication number
JP6007329B2
JP6007329B2 JP2015527106A JP2015527106A JP6007329B2 JP 6007329 B2 JP6007329 B2 JP 6007329B2 JP 2015527106 A JP2015527106 A JP 2015527106A JP 2015527106 A JP2015527106 A JP 2015527106A JP 6007329 B2 JP6007329 B2 JP 6007329B2
Authority
JP
Japan
Prior art keywords
ssd
semiconductor memory
memory device
data
address
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
JP2015527106A
Other languages
English (en)
Other versions
JPWO2015008356A1 (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
Application granted granted Critical
Publication of JP6007329B2 publication Critical patent/JP6007329B2/ja
Publication of JPWO2015008356A1 publication Critical patent/JPWO2015008356A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

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)
  • Computer Networks & Wireless Communication (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、複数の半導体記憶装置を制御するストレージコントローラ、半導体記憶装置とストレージコントローラを備えたストレージ装置、ストレージ装置とサーバを接続したストレージシステム、複数の不揮発性メモリチップを制御するストレージコントローラと不揮発性メモリチップを備えた半導体記憶装置に関するものである。
従来から、フラッシュメモリなどの書き込み可能な不揮発性メモリを有する半導体記憶装置は、ハードディスク代替としての記憶装置や、デジタルカメラ、携帯型音楽プレーヤなどで幅広く用いられるようになってきている。半導体記憶装置の容量は年々増加しているが、デジタルカメラの高画素化、携帯型音楽プレーヤの高音質化や動画再生、放送通信融合、ビッグデータ対応のストレージで取り扱うデータ量の増加などにより、半導体記憶装置のさらなる大容量化が求められている。
これに対し、半導体記憶装置の素子レベルの改良により記憶密度を向上させる技術の開発が進み、例えば特許文献1には相変化メモリを用いた高密度化が記載されている一方、複数の半導体記憶装置をまとめて1つのストレージ装置として使用する技術や、複数の不揮発性メモリチップをまとめて1つの半導体記憶装置として使用する技術なども開発され、大容量化への要求に応えている。
また、一般に記憶装置はその性能も重要であり、性能が重要であることは半導体記憶装置も例外ではなく、半導体記憶装置を記憶装置としたコンピュータにおいては半導体記憶装置の性能がコンピュータの情報処理の性能へ影響し、半導体記憶装置を記憶装置としたデジタルカメラにおいては半導体記憶装置の性能が連写性能などへも影響する。
ここで、半導体記憶装置にはハードディスクなどの他の記憶装置とは異なる特性として半導体記憶装置内でのガーベッジコレクションの必要であることが挙げられる。例えば特許文献2にはフラッシュメモリシステムにおいてフォアグラウンドでハウスキーピング操作を行うことが記載されている。ハウスキーピング操作は損耗均等化、スクラッピング、データ圧縮、および先制ガーベージコレクションなどのガーベージコレクションを含む。特許文献3には複数のフラッシュメモリをアレイ構成としてガーベッジコレクションを行うことが記載されている。特許文献4にはフラッシュメモリシステムにおいてガーベージコレクションを含むコンパクション処理の対象範囲を使用可能なブロック数およびブロック内の有効データ量に基づいて動的に設定することが記載されている。非特許文献1にはフラッシュメモリシステムにおいて所定のポリシーに基づいてガーベージコレクションを行うことが記載されている。
国際公開第2011/074545号 特開2009−282989号公報 米国特許出願公開第2012/0059978号明細書 特開2013−030081号公報
"Write amplification analysis in flash−based solid state drives"、 Proceedings of The Israeli Experimental Systems Conference (SYSTOR) (2009)、 pp.1−9
半導体記憶装置などを使用したストレージ装置の重要な性能指標にはIOPS(Input/Output Per Second)性能とレスポンス性能などがあり、これらの性能を向上させることが求められている。IOPS性能は1秒間に処理可能なリード、ライトの回数である。レスポンス性能はサーバがストレージ装置へリード要求もしくはライト要求を発行し、その要求に応じた処理が完了するまでの時間であって、レスポンス時間が短いストレージ装置を高いレスポンス性能を持つストレージ装置であると言う。必ずしもIOPS性能とレスポンス性能とは対応するものではないが、例えばレスポンス時間が短いストレージ装置は次の要求の処理を早く開始できるためIOPS性能も高い。
このような性能指標において、半導体記憶装置がガーベージコレクション中にサーバがリード要求もしくはライト要求を発行すると、半導体記憶装置はガーベージコレクションの処理を中断して要求に応じた処理を実行するため、ガーベージコレクションの処理を中断するまでの時間分だけレスポンス時間が長くなり、IOPS性能が低下する。特にライト要求では、ガーベージコレクションによる半導体記憶装置内の記憶管理の更新状態が新たなライトを可能とする整合状態になるまで中断できないため、中断までの時間をリード要求よりも多く必要とする。また、ガーベージコレクション中以外であっても、一つの半導体記憶装置へサーバのリード要求もしくはライト要求が複数発行されると、他の要求に応じた処理が完了するまでの時間分だけレスポンス時間が長くなり、IOPS性能が低下する。
このような性能低下に対し、特許文献1〜4、非特許文献1にはガーベージコレクション中の性能に関する技術および複数の要求における性能に関する技術の開示は見当たらない。
そこで、本発明の第一の目的は、半導体記憶装置がガーベージコレクションを行うことによるIOPS性能やレスポンス性能の低下を防ぐ、もしくはその性能の低下を軽減することである。本発明の第二の目的は、ガーベージコレクション中以外であってもIOPS性能やレスポンス性能をさらに向上させることである。
本発明にかかるストレージコントローラは、有効なデータを記憶する1以上の第1の半導体記憶装置と有効なデータを記憶しない1以上の第2の半導体記憶装置を含む複数の半導体記憶装置を制御するストレージコントローラであって、前記複数の半導体記憶装置の中から前記第2の半導体記憶装置を特定する情報を管理するテーブルと、前記第1の半導体記憶装置の動作状態と前記テーブルに基づいて前記第1の半導体記憶装置あるいは前記第2の半導体記憶装置へアクセスし、前記アクセスに応じて動的に前記テーブルを変更する制御部と、を備えたことを特徴とする。
また、前記第2の半導体記憶装置は新たな有効なデータを前記第2の半導体記憶装置あるいは2以上の前記第1の半導体記憶装置の他の前記第1の半導体記憶装置へ記憶する場合に使用されるものであり、前記第1の半導体記憶装置の動作状態は前記半導体記憶装置へのガーベージコレクションの指示と前記半導体記憶装置からのガーベージコレクション完了通知に基づく動作状態を含み、前記第1の半導体記憶装置のガーベージコレクション動作状態と前記テーブルに基づいて前記第1の半導体記憶装置あるいは前記第2の半導体記憶装置へアクセスする前記制御部を備えたことを特徴とする。
さらに、前記第1の半導体記憶装置への集中したアクセス動作状態に基づいて前記第1の半導体記憶装置あるいは前記第2の半導体記憶装置へアクセスする前記制御部を備えたことを特徴とする。
そして、前記ガーベージコレクション動作状態あるいは集中したアクセス動作状態の前記第1の半導体記憶装置をアクセス先とする場合、当該アクセス先以外の前記第1の半導体記憶装置あるいは前記第2の半導体装置へのアクセスに変更し、当該変更先の第1の半導体記憶装置あるいは前記第2の半導体装置へアクセスする前記制御部を備えたことを特徴とする。
また、本発明は、前記ストレージコントローラを備えたストレージ装置、ストレージシステム、前記半導体記憶装置の代わりに不揮発性メモリチップを制御する前記ストレージコントローラを備えた半導体記憶装置としても把握される。
本発明によれば、高いIOPS性能やレスポンス性能を維持可能であり、維持するばかりではなく、さらに高いIOPS性能やレスポンス性能を提供可能である。
サーバ−ストレージシステムの構成の例を示す図である。 基本的なSSD(半導体記憶装置)代替テーブルの例を示す図である。 各アドレスの対応関係の例を示す図である。 ライト前と後の各アドレスとSSD番号の対応関係の例を示す図である。 SSD管理情報の例を示す図である。 ストレージシステムの動作の例を示す図である。 ガーベージコレクション処理のフローチャートの例を示す図である。 ストレージシステムのライト処理のフローチャートの例を示す図である。 STC(ストレージコントローラ)のライト処理のフローチャートの例を示す図である。 ストレージシステムのリード処理のフローチャートの例を示す図である。 第2の実施の形態におけるSSD代替テーブルの例を示す図である。 第2の実施の形態におけるSTCのライト処理のフローチャートの例を示す図である。 第3の実施の形態におけるストレージ装置の構成の例を示す図である。 第3の実施の形態におけるSSD番号決定処理のフローチャートの例を示す図である。 第3の実施の形態における各アドレスとSSD番号の対応関係の例を示す図である。 第3の実施の形態におけるライト前と後の各アドレスとSSD番号の対応関係の例を示す図である。 第4の実施の形態におけるSSD代替テーブルの例を示す図である。 第4の実施の形態におけるライト前と後の各アドレスとSSD番号の対応関係の例を示す図である。 第5の実施の形態におけるSSD代替テーブルの例を示す図である。 第5の実施の形態におけるライト前と後の各アドレスとSSD番号の対応関係の例を示す図である。 第6の実施の形態におけるストレージシステムのリード処理のフローチャートの例を示す図である。 第7の実施の形態におけるSTCのライト処理のフローチャートの例を示す図である。 第8の実施の形態における各アドレスとSSD番号の対応関係の例を示す図である。 第9の実施の形態におけるSSDの構成の例を示す図である。 第10の実施の形態における各アドレスとSSD番号の対応関係の例を示す図である。 第11の実施の形態における各アドレスとSSD番号の対応関係の例を示す図である。
以下に添付図面を参照して、ストレージコントローラ、ストレージ装置、ストレージシステム、半導体記憶装置の実施の形態を詳細に説明する。
(第1の実施の形態)
図1は、複数のサーバ0101とストレージ装置0110とを接続したサーバ−ストレージシステム0100の構成図の例である。
サーバ0101は一般的なコンピュータであり、CPU0102、RAM0103、ストレージインターフェース0104からなる。サーバ0101とストレージ装置0110とはスイッチ0105などを介して接続されている。
ストレージ装置0110はストレージコントローラ(以下、STCとする)0111と二つ以上の半導体記憶装置(以下、Solid State Drive、SSDとする)0130からなる。ストレージシステム0110は複数のSTC0111を持つこともできる。なお、ストレージ装置0110はSSD0130以外にハードディスクを持つこともできる。また、SSD0130はストレージ装置0110に内蔵されるだけでなく、外付けのSSDとしてストレージ装置0110へ接続することもできる。STC0111はRAM(Random Access Memory)0117を持つ。RAM0117としてDRAM(Dynamic Random Access Memory)を用いることもできる。RAM0117は後述するデータキャッシュおよび代替SSDテーブル情報、SSD管理情報を記憶する。また、STC0111は不揮発性メモリ0118を持つこともできる。不揮発性メモリ0118は停電などが生じたときにRAM0117の内容を退避させるために用いられたり、ストレージ構成情報を保持するために用いられたりする。ストレージ構成情報とは例えばRAID(Redundant Arrays of Inexprensive Disks)やJBOD(Just a Bunch Of Disks)の構成情報などである。停電時にデータ退避を行うため、STC0111はバッテリーを持っても良い。
STC0111内の制御部0113はGC起動制御0114、SSD代替制御0115、SSD管理情報制御0116を持つ。GC起動制御0114は各SSD0130の消去済みブロック数とガーベージコレクションを行っているSSD0130の情報に基づいて選択したSSD0130へ消去済みブロック数を一定数以上に増やすよう指示する制御部である。なお、この指示を「GC起動」とし、SSD0130が消去済みブロック数を増やしている動作を行っていることを「GC中」とする。SSD代替制御0115は、サーバ0101からストレージ装置0110へのライト要求が生じたときに、ライトされるデータをGC中のSSD0130へは書き込まれず、別のSSD0130へ書き込むようにライトする先のSSD0130を選択する代替ライト処理を行い、サーバ0101からストレージ装置0110へのリード要求が生じたときには、代替ライト処理の情報を参照してライトされたデータが格納されたSSD0130からデータをリードするようにSSD0130を選択する制御部である。SSD管理情報制御0116は各SSD0130から通知された消去済みブロック数とガーベージコレクションを行うSSD0130の番号を管理する。STC0111内のサーバインターフェース0112とSSDインターフェース0119はそれぞれサーバ0101へのインターフェースとSSD0130へのインターフェースを含む。
SSD0130は不揮発性メモリ0131、RAM0132、制御部0133からなる。不揮発性メモリ0131は例えばMLC(Multi−level cell)型もしくはSLC(Single−level cell)型のNAND型フラッシュメモリや相変化メモリ、ReRAMなどであっても良く、不揮発性メモリ0131にはサーバ0101からのライトデータが格納される。RAM0132は例えばDRAM、MRAM、相変化メモリ、ReRAMなどであっても良く、RAM0132にはデータバッファ、データキャッシュ、SSD内の変換に使用されるSSD論理アドレス−物理アドレス変換テーブル、ページ毎の有効/非有効情報、消去済み/不良ブロック/プログラム済みのブロック状態や消去回数といったブロック情報またはその一部の格納に使用される。また、停電などによるRAM0132内の情報消失を避けるため、停電時に制御部0133はRAM0132の内容を不揮発性メモリ0131に退避しても良い。また、SSD0130はバッテリーやスーパーキャパシタを持つことで停電時のデータ消失の可能性を軽減しても良い。制御部0133は論理−物理アドレス変換制御部0134、GC実行制御部0135、STCインターフェース0136を持つ。論理−物理アドレス変換制御部0134はSTC0111がSSD0130へアクセスするときに用いるSSD論理アドレスと制御部0133が不揮発性メモリ0131へアクセスするときに用いる物理アドレスの変換を行う。この変換において、制御部0133は不揮発性メモリ0131への書き込みを均等化するウェアレベリング(Wear Leveling)を行う。GC実行制御部0135はSTC0111が指定したブロック数以上の消去済みブロックを作り出すために、後で説明するガーベージコレクションを実行する部分である。STCインターフェース0136はSTC0111とのインターフェースを含む。制御部0133は図示しない不揮発性メモリインターフェースやRAMインターフェースを持つこともできる。
図2は、STC0111のRAM0117が記憶するSSD代替テーブル0201の例である。SSD代替テーブル0201はSSD代替制御0115で使用される。SSD代替テーブル0201にはホストアドレス(以下、アドレスHA)に対応する代替SSD番号S(ここで、Sは0〜4)すなわちアドレスHAと同じストライプにある代替SSD番号Sが保存されている。図2において、例えばアドレスHA0〜3のストライプに関しては代替SSDの番号Sが2であり、アドレスHA4〜7のストライプに関しては代替SSDの番号Sが4である。ストライプはSSD代替制御0115が代替SSDを管理する単位であり、代替SSD番号はストライプ毎に管理されている。ストライプ毎に代替SSD番号のみを管理することにより代替SSDテーブル0201のデータサイズを小さくすることが可能になる。このため、STC0111内のRAM0117の容量を小さくすることが可能になり、低コストのストレージ装置0110を実現することができる。
アドレスHAについて図3を用いて説明する。サーバ0101はストレージ装置0110のホストインターフェース0112で指定可能なデータ単位よりも大きなデータサイズでソフトウェアがデータを管理することが多い。このため、1個のアドレスHAが表すデータサイズはサーバ0101がSTC0111にアクセスするデータサイズ程度が望ましい。以下、アドレスHAが表すデータサイズは4KBである例を説明する。また、ストレージ装置0110のホストインターフェース112の信号として、サーバ0101はLBA(Logical Block Addressing)でアクセスするアドレスを指定する。1個のLBAが表すデータサイズは例えば512Bである。なお、4K−nativeなどを用いて、サーバ0101が4KB単位でアドレッシングして、STC0111にアクセスできることは言うまでもない。アドレスHAが表すデータサイズは4KBであり、アドレスLBAが表すデータサイズは512Bであるとすると、下記の式(1)からアドレスLBAとアドレスHAの相互変換を行うことができる。
アドレスLBA=アドレスHA×8・・・(1)
ストレージコントローラ111は複数のアドレスHAをまとめたストライプデータ単位でデータを管理する。代替SSDの台数をSCNTとし、すべてのSSDの台数をNCNTとすると、下記の式(2)からストライブデータ単位のアドレスであるストライプアドレス(以下、アドレスSA)とアドレスHAの相互変換を行うことができる。
アドレスHA=アドレスSA×(NCNT−SCNT)・・・(2)
以下、SSD容量を10TB、SSD台数NCNTを5、代替SSD台数SCNTを1の例を用いて説明する。式(2)より、下記の式(3)が得られる。
アドレスHA=アドレスSA×4・・・(3)
この場合のアドレスSAとアドレスHA、アドレスLBAの対応関係の例を図3に示す。例えば、1つのアドレスHAで管理するデータサイズは4KBであり、1つのアドレスSAで管理するデータサイズは16KBである。
図4(a)にアドレスHAとそのアドレスに対応するデータが格納されるSSDの関係を示す。1個のストライプデータ中に4個のアドレスHAに対応するデータが格納されており、また、図4(a)中に記号「S」で示した1個の代替SSDが含まれている。代替SSDはストライプ単位内で有効なデータを格納していないSSD0130であり、GC中のSSD0130への書き込みを他のSSD0130へ行う際に利用する。また、GC中のSSD0130へは書き込みが行われないため、次の代替SSDとなる。代替SSDはSSD単位ではなく1個のストライプのアドレスHAに対して存在し、例えば1個のアドレスSA0にはアドレスHA0、1、2、3に対応するSSD番号0、1、3、4に有効なデータが格納され、アドレスSA0におけるSSD番号2は代替SSDであって有効なデータが格納されていない。
図4(a)に示すように1個のストライプ内ではアドレスHAがSSD番号に対して必ず昇順に並べられている。例えば、アドレスSA0については、図4(a)の左からアドレスHA0、HA1、HA2、HA3となっている。このように、アドレスHAを1個のストライプ内で昇順に並べることにより、Sより左ではアドレスHAとSSD番号とが一致し、Sより右ではアドレスHAに代替SSDの個数を加算することで、すなわち、ストライプ1個につき代替SSDが1個の場合は図2のSSD代替テーブル0201のようにストライプ1個につき代替SSD1個の情報を保持するだけで、アドレスHAに対応するデータがどのSSDに格納されているかSSD番号を計算することができる。
図5はSSD管理情報0501の例である。SSD0130毎の消去済みブロック数とGC中のSSD番号が保持されている。STC0111は、SSD管理情報0501を基に、次にガーベージコレクションを指示するSSDを決めることや、GC中のSSDを知ることができる。
図6と図7を用いてSSD0130の消去済みブロック数を増やす方法について説明する。図6はサーバ0101とSTC0111、SSD0130の間でやりとりされる情報を示す図である。また、図7はガーベージコレクションの一連の処理の流れを示すフローチャートの例である。SSD0130はSTC0111に消去済みブロック数を通知する(ステップS0701)。STC0111は消去済みブロック数をSSD管理情報0501にSSD管理情報制御0116を用いて保存する。次に、STC0111はGC起動制御0114を用いて、SSD0130にガーベージコレクションを行うか判断する(ステップS0702〜S0704)。この判断は例えば下記のようにして行うことができる。STC0111はSSD管理情報0501を参照し、現在、実行中のガーベージコレクションを行っているSSDの数を取得する。その数が代替SSDの数以上であれば、新たなガーベージコレクションを行わない。その数が代替SSDの数未満であれば次の処理に進む(ステップS0702)。このようにして、ガーベージコレクションを同時に行うSSDの数を代替SSD以下に制御する。
ステップS0702において次のステップS0703に進むことが決定された場合、SSD管理情報制御0116を用いてSSD管理情報0501を参照し、SSD0130の消去済みブロック数がブロック数閾値以下であるSSD0130があるかを検索する。検索した結果、ブロック数閾値以下のSSD0130が見つかった場合には次のステップS0705を行う。ブロック数閾値は図示されていないSTC0111を管理する端末から設定することができる。ブロック数閾値はSTC0111の不揮発性メモリ0118などに保存され、STC111の起動時に読み込むことができる。また、一定の条件でブロック数閾値を変化させることもできる。例えば、ストレージ装置0110へのアクセスが少ない夜間はブロック数閾値を増やし、消去済みブロックを多く確保することができる。または、ストレージ装置0110へのアクセス頻度の統計を取り、アクセスの少ない時間帯はブロック数閾値を増やし、アクセスの多い時間帯はブロック数閾値を減らすことができる。このようにして、サーバ−ストレージシステム0100の全体最適化を行い、高性能化することが可能である。
ステップS0705ではSTC0111がSSD0130に消去済みブロック数を目標ブロック数まで増やすように指示する(GC起動)。目標ブロック数は例えばブロック数閾値に一定数、SSD0130内の不揮発性メモリ0131の全ブロック数の5%のブロック数を加えたものにすることができる。もしくは、昼間と夜間でストレージ装置0110へのアクセス量が異なるサーバ−ストレージシステム0100の場合には、ストレージ装置0110でサーバ0101からのデータアクセス量の統計を取り、昼間に発生するアクセスを処理するために必要な消去済みブロック数の想定値にマージンブロック数を加えたものを目標ブロック数として用いることができる。マージンブロック数は例えば想定値の50%である。
次に、SSD0130がガーベージコレクションを行い、消去済みブロック数を増やす(ステップS0706)。ガーベージコレクションでは、SSD0130内のGC実行制御部0135が不揮発性メモリ0131のリードとライト、消去を行い、不揮発性メモリ0131の消去済みブロック数を増やす。ガーベージコレクションにより、制御部0133が不揮発性メモリ0131にアクセスするときに用いるアドレスである物理アドレスとSTC0111がSSD0130にアクセスするときに用いるアドレスである論理アドレスとの対応関係が更新される。論理−物理アドレス変換制御部0134はその対応関係を論理−物理アドレス変換テーブルを用いて管理する。論理−物理アドレス変換テーブルは不揮発性メモリ0131に置くことができる。また、論理−物理アドレス変換テーブルもしくは、その一部をRAM0132に置くこともできる。
ガーベージコレクションの処理を具体的に説明すると、GC実行制御部0135は例えばRAM0132内に記憶された不揮発性メモリ0131のブロック管理情報を基に、今後、STC0111から読み出される可能性の無い無効データ(Invalidデータとも言われる)を多く含むブロックを検索し、そのブロックに含まれる今後、STC111から読み出される可能性の有る有効データ(Validデータとも言われる)を別のブロックにコピーする。なお、ブロックとは制御部0133が不揮発性メモリ0131を消去する単位である。そして、コピー元のブロックを消去する。このガーベージコレクションを行うことで消去済みブロック数を増やすことができる。
次に、図6と図8を用いて、サーバ−ストレージシステム0100のライト処理について説明する。ライト処理はサーバ0101がライト要求をストレージ装置0110に行うことで開始される(ステップS0801)。サーバ0101はライトコマンドとライトデータをひとまとめにして、ストレージ装置0110に送ることができる。具体的には、CPU0102はサーバ0101内のRAM0103に保持されたライトデータをストレージインターフェース0104経由でストレージ装置110に送ることができる。
また、複数のライト要求に関して、複数のライトコマンドを送ったのちに、複数のライトデータを送ることもできる。なお、サーバ0101はSSD0130毎の消去済みブロック数をストレージ装置0110に問い合わせることができる。また、STC0111は消去済みブロック数がある一定の値になったことをサーバ0101に通知することができる。サーバ0101は問い合わせた結果、もしくは、STC0111から通知された結果を基にストレージ装置0110へのアクセス量を変更することができる。これにより、ストレージ装置0110のレスポンス性能を一定以上、確保することが可能になり、高レスポンスのサーバ−ストレージシステム0100を実現することができる。
次に、STC0111のキャッシュへのヒット判定を行う(ステップS0802)。キャッシュ構成としては、ライトバック方式、セットアソシエイティブ方式などを用いることができる。ライト要求に含まれるアドレスLBAから決まるアドレスHAを基に、キャッシュエントリ番号とタグ値を決定し、該当するキャッシュエントリ番号のキャッシュ情報を調べ、タグ値が一致するかをそのエントリに属するすべてのラインについて検索する。サーバ0101からストレージ装置0110にライトされたデータがSTC0111のキャッシュ内にあれば(キャッシュヒット)、キャッシュ内のデータを更新する。このときには、SSD0130へのライトは行われない。キャッシュデータが更新されると、そのラインはダーティー(SSD内のデータとキャッシュ内のデータが異なる状態)とマークされる。なお、SSD内のデータとキャッシュ内のデータが一致していれば、キャッシュはクリーンであるとする。ラインがダーティーかクリーンかはキャッシュ管理情報で管理する。ダーティーとマークされたラインを破棄するときには、キャッシュ内のデータをSSD0130に書き戻すことになる。サーバ0101からのライトにより、キャッシュデータの入れ替えが発生するとラインを破棄する状況が発生することがある。キャッシュ内のダーティーなラインの数はダーティーライン数閾値以下になるように制御部0113により制御されている。ダーティーライン数閾値はSSD管理情報0501に含まれる消去済みブロック数に基づいて、制御部0113が変化させることが可能である。この場合、SSD0130の状況に合わせて、STC0111からSSD0130へのライトのタイミングを変化させることが可能であり、STC0111からSSD0130へのレスポンスを高めることが可能であり、高性能なストレージシステムを実現することができる。キャッシュ管理情報とキャッシュデータはSTC0111内のRAM0117、もしくは、不揮発性メモリ0118に置くことができる。
STC0111のキャッシュ処理の結果、SSD0130への書き戻しが行われるかを判定する(ステップS0803)。SSD0130へのキャッシュデータの書き戻しが発生したときは、STC0111のライト処理が行われる(ステップS0804)。詳細をSTC0111のライト処理を示すフローチャートである図9を用いて説明する。図9では代替SSDすなわちSの個数が1の場合を説明するが、代替SSDが2以上の場合も同様である。
SSD代替制御0115のSSD0130へのライトにおいては、SSD0130の代替ライト処理を行ったことをSSD代替テーブル0201に記録し、SSD0130からのリードにおいては、SSD0130の代替処理に応じたリード動作を行う。まず、ライトについて説明する。SSD代替制御部0115は、図4のSSD代替テーブル0201を参照し、アドレスHAと同じストライプにある代替SSD番号Sを取得する(ステップS0901)。次に、下記(4)式を用いてアドレスHAから仮データSSD番号D_tを計算する(ステップS0902)。
D_t=アドレスHA mod (NCNT−SCNT)・・・(4)
ここで、modは除算の余りを求めることを意味している。すなわち、D_tはアドレスHAを(NCNT−SCNT)で割った余りである。ここでではNCNT=5、SCNT=1であるので下記(5)式となる。
D_t=アドレスHA mod 4・・・(5)
次に、D_tとSを比較する(ステップS0903)。D_tがS以上であれば、Sが1個ある分だけSSD番号がずれるため、D_tに1を加えて新たな仮データSSD番号D_tとする(ステップS0904)。ここで、アドレスHAは昇順に並んでいるため、このような簡単な計算でD_tを求めることができる。このように求めた仮データSSD番号D_tの示すSSD0130が消去済みブロックを増やす処理を行っているか(GC中か)をSSD管理情報0501に基づいて判定する(ステップS0905)。もし、GC中でなければ、実際にデータをライトする実データSSD番号DをD_tにする(ステップS0906)。
もし、GC中であれば、GC中のSSD0130にライトしようとしたデータを別のSSD0130にライトする(代替ライト処理)。さらに、今後のサーバ0101からのリード動作で正しく読出せるように、代替ライト処理が行われたことを記録する。具体的にはSSD代替テーブル0201のアドレスHAに対応する代替SSDをSからD_tに更新する(ステップS0907)。このようにして、SSD番号D_tに対して代替処理が行われたことをストライプ単位で管理する。次に、シフト処理が必要かを判定する(ステップS0908)。シフト処理はストライプ内でアドレスHAをSSD番号に対して昇順に保つために行う処理である。具体的には、STC0111がSSD0130からデータをリードし、別のSSD0130にライトすることでデータコピーを行い、アドレスHAが昇順を保つように並べ替える(ステップS0909)。シフト処理判定とシフト処理を考慮して、実データSSD番号Dを決定する(ステップS0910)。最後に、実データSSD番号DのSSDにライトを行う(S0911)。
アドレスHAは複数のSSD0130を一つにまとめて管理するアドレスであるため、SSD0130への実際のライトにはSSD0130毎のアドレスを使用する。STC0111からSSD0130へのライトに用いるSSD毎のアドレスであるSSD論理アドレスLAは下記(6)式で求めることができる。
アドレスLA=アドレスSA・・・(6)
なお、(6)式でアドレスLAを求めると、SSD130にアクセスされないSSD論理アドレスが発生する。例えば、図4(a)に示す例ではSSD2のSSD論理アドレスLA0はSであるため、サーバ0101からのライト先としてSTC0111がSSD2のSSD論理アドレスLA0へアクセスすることはない。また、STC0111がSSD4のSSD論理アドレスLA1へもアクセスすることはない。そのことを考慮して、SSDのプロヴィジョナル(Provisional)領域の割合を通常より低く設定することができる。具体的には通常より下記(7)式の追加の割合Pだけ低く設定することができる。この場合、アドレスHAからSSD論理アドレスLAへの変換を高速に行うことができるため、高速なストレージ装置0110を実現できる。
=(NCNT−SCNT)/NCNT・・・(7)
プロヴィジョナル領域の割合を変えるのではなく、(6)式を変更し、アクセスされないSSD論理アドレスLAを無くすようにアドレスLAの決定を行うことも可能であることは言うまでもない。この場合は、Sの分が不要となるため、SSD130の持つSSD論理アドレスLAから物理アドレスPAへのアドレス変換テーブルのサイズを小さくすることが可能であり、SSD0130のアドレス変換テーブルを記憶するRAM0132のコストを低下させることができるので、低コストのストレージ装置0110を実現できる。SSD物理アドレスPAはSSDの制御部0133が不揮発性メモリ0131にアクセスするときに用いるアドレスである。SSDは論理−物理アドレス変換制御部0134を用いて、SSD論理アドレスLAからSSD物理アドレスPAへ変換を行うことができる。
具体的にさらに説明する。図4(a)に示す状態から、SSD0がGC中のときにサーバ0101がアドレスHA8、すなわち、LBA64〜71のデータを更新したとき、サーバ0101がライトを行った後のアドレスHAとSSD番号の対応関係を図4(b)に示す。アドレスHA8はアドレスSA2に対応する。仮データ番号D_tは0であり、SSD0にライトしようとしたが、GC中のため、アドレスSA2の代替SSDであったSSD1にライトした。その結果、SSD1のSSD論理アドレスLA2へアドレスHA8に対応するデータが書き込まれる。この条件では、アドレスSA2の中では、アドレスHAが昇順に保たれるため、シフト処理は行われていない。SSD0のSSD論理アドレスLA2にはサーバ0101から参照される可能性のある有効データは書かれていない。STC0111はSSD0にTrimコマンドを送り、SSD論理アドレスLA2が無効データであることを通知することができる。通知を行うことで、SSD0はガーベージコレクションによりSSD論理アドレスLA2の領域を消去することが可能になり、ガーベージコレクションをより効率的に実行できる、具体的にはガーベージコレクションに伴う不揮発性メモリ0131へのライト、リードのデータ量を削減することができる。その結果、ストレージシステム110のデータ転送性能を向上させることができる。なお、Trimコマンドはサーバ0101がSSD0130に対して、無効領域を通知するコマンドである。
また、SSD130はライトバックキャッシュを持ち、STC111からライト要求を受けると、SSD0130のキャッシュに書き込むことができる。キャッシュにライトされることでキャッシュから追い出されたデータは不揮発性メモリ0131に書き込まれる。SSD0130がキャッシュを持たないことや、ライトキャッシュの種類がライトスルーキャッシュであり、キャッシュへライトし、不揮発性メモリに書き込んでから、ライト完了のレスポンスをSTC0111に行うことが可能であることは言うまでもない。この場合、停電などに対するデータ信頼性が向上し、高信頼のストレージ装置0110を実現できる。
次の例では、アドレスHA1個が示すデータ領域の一部のみを更新するようサーバ0101が要求した場合、例えば、アドレスHA0の中でアドレスLBA0〜3のみを更新する場合について説明する。GC中のSSD番号を0とする。このときSTC0111は残りのアドレスLBA4〜7のデータをGC中のSSD0からリードして、サーバ0101から送られたLBA0〜3のデータと合わせたLBA0〜7のデータをライトする(リードモデファイライト)。ライト先SSD0130はGC中のSSD0130以外に制御する。次にシフト処理判定を行う(ステップS0908)。この条件では、アドレスHA0のデータを代替SSDであるSSD2に書き込むと、アドレスSA0の中でアドレスHA1(SSD1)−HA0(SSD2)−HA2(SSD3)−HA3(SSD4)になり、アドレスがSSD番号に対して昇順に並ばなくなる。そこでシフト処理を行う(ステップS0909)。具体的には、STC0111がSSD1からアドレスHA1のデータをリードし、次に、STC0111がSSD2にアドレスHA1のデータをライトする。アドレスSA0内でアドレスHAが昇順に並ぶように制御し、また、GC中のSSD0にはライトしないことから、アドレスHA0の実データSSD番号Dは1に決定される(ステップS0910)。最後に、アドレスHA0のデータをSSD1にライトする(ステップS0911)。
次に、図10を用いて、サーバ−ストレージシステム0100のリード処理について説明する。リード処理はサーバ0101がリード要求をストレージ装置0110に行うことで開始される(ステップS1001)。STC0111はリード要求に含まれるアドレスLBAから決まるアドレスHAを基に、STC0111内のキャッシュにヒットしたかを判定する(ステップS1002)。具体的には、アドレスHAからキャッシュエントリ番号とタグ値を決定し、該当するキャッシュエントリ番号のキャッシュ情報を調べ、タグ値が一致するかをそのエントリに属するすべてのラインについて検索する。STC0111のキャッシュ内にサーバ0101から要求されたデータがあれば(キャッシュヒット)、キャッシュ内のデータをリードして、サーバ0101に送る(ステップS1003)。STC0111のキャッシュ内にサーバ0101から要求されたデータがなければ(キャッシュミス)、SSD0130からデータの読出しを行う。具体的には、まず、SSD番号の決定処理を行う(ステップS1004)。SSD番号の決定処理は代替SSD番号の決定と仮データSSD番号D_tの決定(ステップS0901〜S0904)と同じ処理である。リードを行うSSD番号はD_tである(ステップS1005)。次に、SSD0130にリード要求を行う(ステップS1006)。
制御部0133はSSD0130のキャッシュにヒットしたかを判定する(ステップS10007)。キャッシュにヒットした場合は、キャッシュからデータリードを行う(ステップS1008)。キャッシュにヒットしなかった場合は、不揮発性メモリ0131からデータを読出し、そのデータをSTC0111に送ると共に、SSD0130のキャッシュに書き込む(ステップS1009)。このときに、SSD0130のキャッシュが満杯であるため、SSD0130のキャッシュから不揮発性メモリ0131への書き戻しが行われることがある。次に、STC0111はSSD0130からリードしたデータをサーバ0101に送ると共に、そのデータをSTC0111のキャッシュに書き込む(ステップS1010)。さらに、STC0111のキャッシュが満杯のため、キャッシュからSSD0130への書き戻しが発生するかを判定する(ステップS1011)。書き戻しが発生した場合には、SSD0130へのライトを行う(ステップS1012)。そのときに、STCのライト処理と同様にGC中のSSDへのライトを避けるように制御することは言うまでもない。以上のフローに従い、リード処理は実行される。
以上の処理により、STC0111は消去済みブロック数を増やす処理を行っているため、IOPS性能やレスポンス性能が低下しているSSD0130へのライトを行うことがなくなる。このため、IOPS性能やレスポンス性能の高いストレージ装置0110を実現することができる。また、サーバ0101はIOPS性能やレスポンス性能の高いストレージ装置0110を用いることができるため、サーバ0101を含む全体としても高性能なサーバ−ストレージシステム0100を実現することができる。別の言い方を行うと、ガーベージコレクションに起因するSSDの性能低下をSTC0111は隠蔽することができる。また、ストレージ装置110のレスポンス時間が短くなることで、サーバ0101はより多くの命令を発行することが可能になる。そのため、ストレージ装置0110のIOPS性能も向上する。
(第2の実施の形態)
第2の実施の形態では、ストレージ装置0110のIOPS性能やレスポンス性能をさらに向上させる制御を行う制御部0113を持つストレージ装置0110について説明する。具体的には、シフト処理が不要となり、STC0111からSSD0130へのリードとライトの回数を減らすことができる。
図11はシフト処理を不要にするSSD代替テーブル1101の例である。シフト処理ではアドレスHAとSSD番号の両方を昇順に並べることにより、アドレスHAからSSD番号を計算できるようにしていたが、このSSD代替テーブル1101には代替SSDのSSD番号に加え、各アドレスHAに対応したSSD番号も格納されており、計算の必要がない。SSD代替テーブル1101においてアドレスHAの0は0〜3を表し、アドレスHAの4は4〜7を表して、データSSD0はアドレスHAを4で割った余りが0のアドレスを表し、データSSD1はアドレスHAを4で割った余りが1のアドレスを表すため、例えばアドレスHAが4のデータSSD0〜3はそれぞれアドレスHA4〜7を表す。そして、アドレスHAが4の右欄は代替SSDのSSD番号が4であり、さらなる右欄のSSD番号0、2、3、1がそれぞれデータSSD0、1、2、3すなわちアドレスHA4、5、6、7に対応することを表す。このSSD代替テーブル1101を用いることにより、アドレスHAに対応したデータがどのSSDに格納されているかを管理することが可能になり、アドレスHAからSSD番号の特定に計算が必要でないため、同一ストライプ内でアドレスHAを昇順に並べるように制限する必要がなくなる。
図12のライト処理を示すフローチャートのうち、図9と同一の符号が付されたステップは既に処理を説明済みであるので、ここでは説明を省略する。
代替ライト処理(ステップS1201)は実データSSD番号DへSを設定する。代替ライト処理(ステップS1201)が行われた後に、シフト処理が必要かの判定(ステップS908)と、シフト処理の実行(ステップS0909)は不要であり、図12の処理では存在しない。
第二の実施の形態ではSTC111はシフト処理を行う必要がなくなるため、SSD0130へのリードとライトの回数を減らすことが可能となり、その結果として高性能なストレージ装置0110を実現することができる。また、SSD0130へのライトデータ量を低減することができるため、SSD0130の寿命を延ばし、高信頼のストレージ装置0110を実現できる。
(第3の実施の形態)
第3の実施の形態では、IOPS性能やレスポンス性能が高く、信頼性の高いRAID構成の適用について説明する。
図13はRAID構成をさらに適用したストレージ装置1301である。
図1と同一の符号を付された構成については、既に説明してあるので、ここでは説明を省略する。
ストレージ装置1301はSTC1302を持つ。STC1302は制御部1303を持つ。制御部1303はRAID制御部1304とGC起動制御部0114、SSD代替制御部0115、SSD情報管理制御部0116を持つ。RAIDの構成例としてRAID5の場合を説明する。すべてのSSDの台数NCNTを5台とし、代替SSDの台数SCNTを1台とする。パリティSSDの台数PCNTはRAID5の場合は1台である。なお、RAID6ではPCNTは2台になる。RAIDのデータ分割単位をストライプとし、1つのストライプに含まれるデータは3台のSSDに分割して格納され、別の1台のSSDにはパリティが保存される。例えば1つのアドレスHAで管理するデータサイズは4KBであるとすると、1つのストライプのアドレスSAで管理するデータサイズは12KBである。下記(8)式を用いて、アドレスSAとアドレスHAの相互変換を行うことができる。
アドレスHA=アドレスSA×(NCNT−SCNT)・・・(8)
上記の条件では、式(8)より、下記の式(9)が得られる。
アドレスHA=アドレスSA×3・・・(9)
RAID5の制御について簡単に説明する。
STC1302はサーバ0101からライトするデータを受け取ったときに、データからパリティを計算し、データとパリティを別のSSD0130に格納する。例えば、データをSSD番号0〜2に分割して格納し、パリティをSSD番号4に格納する。SSD0130が故障するなどの原因により、STC1302がSSD番号0〜2の1台からデータをリードできなくなった場合、例えばSSD番号0からリードできなくなった場合には、STC1302は残りのデータが格納されたSSD番号1、2からデータをリードし、SSD番号4からパリティをリードする。これらのデータとパリティからSSD番号0に格納されたデータを復元する。このようにすることで、RAIDを構成する5台のSSDのうち、1台が故障してもデータをリードでき、サーバ0101は作業を継続することが可能になる。
STC1302のライト処理について図14を用いて説明する。図14はSTC1302のライト処理に含まれるSSD番号の決定処理を示すフローチャートのうち、既に説明した図9に示された同一の符号を付された処理について、ここでは説明を省略する。SSD番号の決定処理は、代替SSD番号の決定処理、パリティSSD番号の決定処理、仮データSSD番号D_tの決定処理で構成される。
まず、代替SSD番号Sの取得を行う(ステップS0901)。次に、アドレスHAを基に仮パリティ番号P_tを決定する(ステップS1401)。例えば、下記(10)式を用いて、仮パリティ番号P_tを決定することができる。
P_t=NCNT−SCNT−PCNT−(アドレスHA mod (NCNT−SCNT))・・・(10)
今回の例では、下記(11)式が得られる。
P_t=3−(アドレスHA mod 4)・・・(11)
さらに、仮パリティ番号P_tが代替SSD番号S以上かを判定する(ステップS1402)。P_tがS以上の場合、仮パリティ番号P_tを1増加させる(ステップS1403)。次に、仮データSSD番号D_tを計算する(ステップS1404)。例えば、下記(12)式を用いて計算することができる。
D_t=アドレスHA mod (NCNT−SCNT−PCNT)・・・(12)
今回の例では、下記(13)式となる。
D_t=アドレスHA mod 3・・・(13)
さらに、仮データSSD番号D_tと代替SSD番号Sを比較する(ステップS1405)。D_tがS以上ならば、D_tを1増加する(ステップS1406)。次に、D_tと仮パリティ番号P_tを比較する。D_tがP以上ならば、D_tを1増加する(ステップS1408)。
その後、仮データSSD番号D_tのSSD0130がGC中かを確認する。もし、GC中であれば別のSSD0130にライトし(代替ライト処理1)、実パリティSSD番号PはP_tにする。GC中でなければ、仮パリティ番号P_tのSSD0130がGC中かを確認する。もし、GC中であれば、実パリティ番号PをSにする。すなわち、GC中のSSD0130へパリティをライトする代わりに別のSSD0130である代替SSDにライトする(代替ライト処理2)。もし、GC中でなければ、実パリティ番号PはP_tにする。その後、シフト処理を行うか判定し、シフト処理が必要であれば、実行する。
以上の制御を行うことにより、データ及びパリティを格納したSSD0130へ消去済みブロック数を増やす制御を行っており、IOPS性能やレスポンス性能が低下しているSSD0130にライトすることがなくなり、IOPS性能やレスポンス性能の高いストレージ装置1302を実現することができる。
図15はアドレスHAに対応するデータとそのデータが格納されたSSD0130の関係を示す図である。アドレスSA1個が示す領域に3個のアドレスHAと1個の代替SSDを示すS、1個のパリティPが割り当てられている。アドレスHAはSSD番号に対して昇順に並べられており、仮パリティ番号P_tをアドレスHAから計算できるよう制御することで、ストライプ毎に代替SSD番号Sのみを管理するだけで済む。これにより代替SSDテーブルのデータサイズを小さくすることが可能になる。このため、STC1302内のRAM0117などの容量を小さくすることが可能になり、低コストのストレージ装置1301を実現することができる。
ところで、図16(a)と図16(b)はGC中のSSD0にアドレスHA15のデータが格納されているとき、アドレスHA15のデータをサーバ0101がライトした前後のデータ配置を示す図である。アドレスSA5において、SSD番号の昇順にアドレスHA15、HA16、P、HA17を記録する必要があるため、SSD1にサーバ0101から送られたデータをライトし、SSD3にパリティをライトすると共に、SSD2とSSD4にシフト処理によりアドレスHA16、17のデータをライトする。図16の場合において、ライト処理を行うSSD130はSSD1、2、3、4の4台となる。
(第4の実施の形態)
第4の実施の形態では、さらにIOPS性能やレスポンス性能が高いストレージ装置1301の例を説明する。第4の実施の形態はストレージ装置1301に含まれるSTC1302が持つ代替SSDテーブルで管理する情報が第3の実施の形態と異なる点が特徴である。
図17は、代替SSDテーブル1701の例を示す図である。代替SSDテーブル1701は代替SSDだけでなく、パリティSSDのSSD番号を管理する。パリティSSDの番号をも管理することでシフト処理が必要な確率を低下させ、また、シフト処理が発生した場合も、SSDへのリードデータ量とライトデータ量を低減することができる。そのため、ストレージ装置1301のIOPS性能やレスポンス性能を高くすることができる。
図18(a)と図18(b)はGC中のSSD0にアドレスHA15のデータが格納されているときに、アドレスHA15のデータをサーバ0101が更新した前後のデータ配置を示す図である。アドレスSA5において、SSD番号の昇順にアドレスHA15、HA16、HA17を記録する必要がある。一方、パリティSSDのSSD番号を変更することができる。そのため、SSD1にサーバ0101から送られたデータをライトし、SSD4にパリティをライトすると共に、SSD2へのシフト処理によりアドレスHA16のデータをライトする。一方、SSD3のデータをシフトする必要はない。図18の場合において、ライト処理を行うSSD130はSSD1、2、4の3台となる。第3の実施の形態の図16と比較してライト処理を行うSSD130の台数を1台減らすことができる。
(第5の実施の形態)
第5の実施の形態では、第4の実施の形態よりもさらにIOPS性能やレスポンス性能が高いストレージ装置1301の例を説明する。第5の実施の形態はストレージ装置1301に含まれるSTC1302が持つ代替SSDテーブルの管理する情報が第4の実施の形態と異なる点が特徴である。
図19にRAIDに対応した代替SSDテーブル1901を示す。この代替SSDテーブル1901は代替SSDとパリティSSD、データSSDのSSD番号を管理する。これらのSSD番号を管理することでシフト処理が不要になるため、SSD0130へのリードデータ量とライトデータ量を低減することができる。そのため、ストレージ装置1301のIOPSやレスポンス性能をさらに高くし、信頼性を高くすることができる。
図20(a)と図20(b)はGC中のSSD0にアドレスHA15のデータが格納されているときに、アドレスHA15のデータをサーバ0101が更新した前後のデータ配置を示す図である。アドレスSA5において、SSD番号に関係なく、データやパリティを記録することがある。そのため、SSD4にサーバ0101から送られたデータをライトし、SSD2にパリティをライトするだけでよく、シフト処理を行う必要がない。図20の場合において、ライト処理を行うSSD0130はSSD2とSSD4の2台となる。第4の実施の形態の図19と比較してライト処理を行うSSD0130の台数を1台減らすことができる。なお、データ更新に伴い、パリティは更新されるので更新後のパリティをライトする必要がある。
(第6の実施の形態)
第6の実施の形態では、特にリードのレスポンス性能の高いRAID構成の適用について説明する。
図21は、リード処理のフローチャートである。
まず、サーバ0101がSTC1302にリード要求を送る(ステップS2101)。次に、STC1302はSTC1302内のRAM0117などのキャッシュにヒットしたかを判定する(ステップS2102)。アドレスHAを基に、エントリ番号、タグ値を計算し、エントリ番号に含まれるキャッシュのタグ値を比較することでヒット判定を行うことができる。キャッシュヒットすれば、キャッシュからデータをリードしてサーバ0101にデータを送る(ステップS2103)。キャッシュミスすれば、SSD番号の決定処理を行う(ステップS2104)。この処理を行うことにより、サーバ0101がSTC1302に要求したデータがどのSSD0130に格納されているかをSTC1302は判断する(ステップS2105)。データが格納されたSSD0130を仮決定SSDとする。次に、SSD管理情報制御部0116を用いて、SSD管理情報0501から、現在GC中のSSD番号を調べる(ステップS2106)。さらに、GC中のSSD番号と仮決定SSDの番号が一致するかを判定する(ステップS2107)。もし、一致しなければ、仮決定SSDはGC中ではないため、仮決定SSDからリードを行う(ステップS2108)。もし、一致していれば、サーバ0101が要求したデータが格納されているSSD0130はGC中である。そのときはGC中のSSD0130からリードを行わず、サーバ0101が要求したデータを含むストライプに含まれるGC中でない別のSSD130から別のデータとパリティをリードする(ステップS2109)。この別のデータとパリティからサーバ0101が要求したデータをSTC1302が復元し、そのデータをサーバ0101に送る(ステップS2110)。その後、SSD0130からリードしたデータをSTC1302のキャッシュに書き込むことができる。その結果、キャッシュが満杯となり、STC1302のキャッシュからSSD0130への古いデータの書き戻しが発生することがあるのは言うまでもない。
以上で説明したとおり、GC中ではないSSD0130からリードするため、リードのレスポンス性能が高いストレージ装置を実現できる。
(第7の実施の形態)
第7の実施の形態では、データ転送性能、特にライトデータ転送性能が高いストレー装置0110、1301の例を説明する。このために、特定の1つのSSD0130にライトアクセスが集中したとき、他のSSD0130にライトアクセスを分散させる(ライト分散処理)。分散させたデータを代替SSDテーブル0201、1101、1701、1901に基づいて管理する。リード時には代替SSDテーブル0201、1101、1701、1901を用いて、データの格納されたSSD0130を調べ、データをリードする。
図22はSTC0111、1302のライト処理の流れを示すフローチャートの例である。まず、SSD番号の決定処理を行う(ステップS2201)。これにより、サーバ0101が指定したデータが含まれるSSD番号と、データが含まれるストライプの代替SSD番号をSTC0111、1302は判断することができる(ステップS2202)。次に、仮決定したSSD0130にGC中のSSD0130が含まれるかを判断する。なお、サーバ0101からの1回のライト要求に対して、複数のSSD0130へのライトが生じることもある。もし、GC中のSSD0130が含まれていた場合は、例えば図9のステップS0907〜S0911と同様に代替ライト処理を行う(ステップS2204)。GC中のSSD0130が含まれていなかった場合は、仮決定したSSDにアクセスが集中しているかを判定する(ステップS2205)。この集中しているかの判定方法としては例えば過去1000回のSSD0130へのアクセス履歴を取り、SSD0130毎のアクセス回数の平均値より、仮決定したSSDへのアクセス回数が一定の割合以上大きいかどうかを用いることなどができる。例えば平均値より2倍以上アクセス回数が多ければ、アクセスが集中しているとみなすことができる。アクセスが集中している場合、そのSSD0130にライトしようとしたデータを代替SSDにライトする(ライト分散処理)。同時に、代替SSDテーブル0201、1101、1701、1901を更新し、アドレスHAに対応する代替SSDをアクセスが集中しているSSDにする。以上の手順でライト分散処理を行ったことをSTC0111、1302は管理する。ストレージ装置にサーバからのリードが行われたときは例えば図10に示す方法でリード処理を行う。
以上で説明したとおり、ライトアクセスが1つのSSDに集中することを防ぎ、複数のSSD0130へ平均的にライトアクセスを分散することができる。その結果、1つのSSD0130がストレージ装置0110、1301全体のボトルネックになることを防止することができるため、ストレージ装置0110、1301のデータ転送性能が向上する。特にライトデータ転送性能が高いストレージ装置を実現できる。
(第8の実施の形態)
第8の実施の形態では、高信頼かつデータ転送レート性能の高いストレージ装置の例を図23に基づいて説明する。
サーバ101から送られたデータをSTC111はミラーリングする、すなわち同一のデータを複数のSSDへ格納する。図23においては、アドレスHA0のデータがSSD0とSSD1に格納され、アドレスHA1のデータがSSD3とSSD4に格納される。ここでは、二重にミラーリングを行い、代替SSDの台数が1台の場合を説明するため、図7の処理によりガーベージコレクションを行うSSDの台数は1台以下になるようにSTC111が制御し、ガーベージコレクション中のSSDにライトを行わないようにSTC111が制御を行う。GC中のSSDへライトが予定されたとき、すなわち、仮データSSD番号D_tがGC中のSSD番号となったときは、代替ライト処理を行い、代替SSDにデータをライトし、代替SSDテーブル情報を更新する。
また、リード要求に対して、GC中のSSDからデータリードが予定されたとき、すなわち仮データSSD番号D_tがGC中のSSD番号になったときは、ミラーリングを構成する他方のガーベージコレクションが行われていないSSDからデータをリードする。
以上の構成により、データが二重化されているためストレージ装置の信頼性を高くすることができ、さらに、パリティ生成やパリティを用いたデータ復元が不要なため、ストレージ装置のデータ転送レート性能をさらに高くすることができる。
(第9の実施の形態)
第9の実施の形態では、ストレージ装置0110のみならず、IOPS性能やレスポンス性能の高いSSD241の例を図24に基づいて説明する。
1個のSSD2401の中のある1個のNAND不揮発性メモリ2403へガーベージコレクションのためのアクセスをSSD制御部2404が行うときであって、そのNAND不揮発性メモリ2403にライトアクセスが生じかけたとき、すなわち、仮決定したNAND番号がGC中のNAND不揮発性メモリ2403になったときに、NAND代替制御部2405は代替処理を行い、仮決定したNAND番号をGC中ではない他のNAND不揮発性メモリ2403に変更し、その変更先のNAND不揮発性メモリ2403にライトアクセスを行い、GC中のNAND不揮発性メモリ2403にアクセスをしない。NAND管理情報制御部2406は、NAND不揮発性メモリ2403ごとの消去済みブロック数を管理し、また、ガーベージコレクションを行うNAND不揮発性メモリ2403の番号を管理する。RAM2407にはデータバッファ、データキャッシュ、SSD論理アドレス−物理アドレス変換テーブル、ページ毎の有効/非有効情報、消去済み/不良ブロック/プログラム済みのブロック状態や消去回数といったブロック情報、代替不揮発性メモリテーブル情報、NAND管理情報、またはその一部を格納する。ここで、制御チップ2402はサーバインターフェース0112と制御部2404を備えている。制御部2404はGC起動制御0114を備えているが、サーバインターフェースを経由してガーベージコレクションの指示を受け、ガーベージコレクションの完了を通知し、GC起動制御0114がGC中を管理しても良い。なお、不揮発性メモリとしてNANDを例に説明したが、 そのほかの不揮発性メモリとして、相変化メモリやReRAMを用いることが可能であることはいうまでもない。その場合、相変化メモリやReRAMはNANDよりもレスポンス性能が高いため、さらに高レスポンスのSSDを実現できる。
以上の構成により、SSD2401単体であっても、SSD2401はガーベージコレクションを行い、制御部2404からの処理が行われていてビジー状態である可能性の高いNAND不揮発性メモリ2403にライトすることがなくなるため、SSD2401のIOPS性能やレスポンス性能を向上させることができる。
(第10の実施の形態)
第10の実施の形態では、IOPS性能やレスポンス性能の高く信頼性の高いSSD2401の例を図25に基づいて説明する。
図24に示したSSD2401において、さらにRAID5の制御を行い、データとパリティを図25のアドレスHA0〜2とPのようにNAND不揮発性メモリ2403へ格納する。データやパリティをライトしようとしたNAND不揮発性メモリ2403がGC中のとき、すなわち、仮決定したNAND番号がGC中のNAND番号になったときは、代替ライト処理を行い、代替NANDへデータあるいはパリティをライトし、代替NANDテーブル情報を更新する。ここで図25にはアドレスHAと記載したが、SSD論理アドレス−物理アドレス変換テーブルにより変換した物理アドレスでも良い。
また、リード要求に対しては、GC中のNAND不揮発性メモリ2403からデータリードが予定されたとき、すなわち、仮決定されたNAND番号がGC中のNAND番号になったときは、他のガーベージコレクションが行われていないNAND不揮発性メモリ2403からデータとパリティをリードし、リードしたデータとパリティからGC中のNAND不揮発性メモリ2403のデータを復元してリード要求元に送る。
以上の構成により、SSD2401単体であってもIOPS性能やレスポンス性能が高くすることができ、また、データにパリティを追加することで信頼性が高くすることができる。
(第11の実施の形態)
第11の実施の形態では、高信頼かつデータ転送レート性能の高いSSD2401の例を図26に基づいて説明する。
図24に示したSSDにおいて、上位装置から送られたデータを制御部2404はさらにミラーリングする、すなわち同一のデータを複数のNAND不揮発性メモリ2403に格納する。図26においては、アドレスHA0のデータがNAND0とNAND1に格納され、アドレスHA1のデータがNAND3とNAND4に格納される。ここでは、二重にミラーリングを行い、代替となるNAND不揮発性メモリ2403が1個の場合を説明するため、図23のミラーリングと同じく、ガーベージコレクションを行うNAND不揮発性メモリ2403の数は1個以下になるように制御部2404が制御し、GC中のNAND不揮発性メモリ2403にライトを行わないように制御部2404が制御を行う。GC中のNAND不揮発性メモリ2403にライトが予定されたとき、すなわち、仮決定したNAND番号がGC中のNAND番号になったときは、代替ライト処理を行い、代替となるNAND不揮発性メモリ2403にデータをライトし、代替NANDテーブル情報を更新する。ここで図26にはアドレスHAと記載したが、SSD論理アドレス−物理アドレス変換テーブルにより変換した物理アドレスでも良い。
また、リード要求に対しては、GC中のNANDチップからデータリードが予定されたとき、すなわち仮決定したNAND番号がGC中のNAND番号になったときは、ミラーリングを構成する他方のガーベージコレクションが行われていないNAND不揮発性メモリ2403からデータをリードする。
以上の構成により、データが二重化されているためSSD2401単体の信頼性を高くすることができ、さらに、パリティ生成やパリティを用いたデータ復元が不要なためSSD2401単体のデータ転送レート性能をさらに高くすることができる。
0100 サーバ-ストレージシステム
0101 サーバ
0102 CPU
0103、0117、0132、2407 RAM
0104 ストレージインターフェース
0105 スイッチ
0110、1301 ストレージ装置
0111、1302 ストレージコントローラ
0112 ホストインターフェース
0113、1303 制御部
0114 GC起動制御
0115 SSD代替制御
0116 SSD管理情報制御
0118、0131、2403 不揮発性メモリ
0119 SSDインターフェース
0130、2401 SSD
0133 制御部
0134 論理−物理アドレス変換制御部
0135 GC実行制御部
0136 STCインターフェース
1304 RAID制御部
2405 NAND代替制御
2406 NAND管理情報制御

Claims (11)

  1. 有効なデータを記憶する以上の第1の半導体記憶装置と有効なデータを記憶しない1以上の第2の半導体記憶装置を含む複数の半導体記憶装置を制御するストレージコントローラであって、
    前記複数の半導体記憶装置の中から前記第2の半導体記憶装置を特定する情報を管理するテーブルと、
    前記第1の半導体記憶装置の動作状態と前記テーブルに基づいて前記第1の半導体記憶装置あるいは前記第2の半導体記憶装置へリードライトアクセスし、ライトアクセスに応じて動的に前記テーブルを変更する制御部と、
    を備え
    前記第2の半導体記憶装置は新たな有効なデータを前記第2の半導体記憶装置あるいは2以上の前記第1の半導体記憶装置の他の前記第1の半導体記憶装置へライトする場合に使用されるものであり、
    前記第1の半導体記憶装置の動作状態は前記半導体記憶装置へのガーベージコレクションの指示と前記半導体記憶装置からのガーベージコレクション完了通知に基づく動作状態を含み、
    前記制御部は、
    前記第1の半導体記憶装置の動作状態と前記第2の半導体記憶装置の個数に基づいてガーベージコレクションを指示し、
    前記第1の半導体記憶装置のガーベージコレクション動作状態と前記テーブルに基づいて前記第1の半導体記憶装置あるいは前記第2の半導体記憶装置へリードライトアクセスすることを特徴とするストレージコントローラ。
  2. さらに前記第1の半導体記憶装置への集中したライトアクセス動作状態に基づいて前記第1の半導体記憶装置あるいは前記第2の半導体記憶装置へライトアクセスする前記制御部を備えたことを特徴とする請求項に記載のストレージコントローラ。
  3. 前記ガーベージコレクション動作状態あるいは集中したライトアクセス動作状態の前記第1の半導体記憶装置をライトアクセス先とする場合、2以上の前記第1の半導体記憶装置の当該ライトアクセス先ではない他の前記第1の半導体記憶装置あるいは前記第2の半導体記憶装置へのライトアクセスに変更し、当該変更した先の第1の半導体記憶装置あるいは前記第2の半導体記憶装置へライトアクセスする前記制御部を備えたことを特徴とする請求項に記載のストレージコントローラ。
  4. 新たな前記第2の半導体記憶装置を特定する情報として前記変更の元となるライトアクセス先の第1の半導体記憶装置を登録するよう前記テーブルを変更する前記制御部を備えたことを特徴とする請求項に記載のストレージコントローラ。
  5. 前記第2の半導体記憶装置を特定する情報を用いてリードライトアクセス先の第1の半導体記憶装置の番号を計算して、あるいは前記テーブルが前記第1の半導体記憶装置のすべての番号も含みリードライトアクセス先の第1の半導体記憶装置の番号を参照して、リードライトアクセス先の第1の半導体記憶装置を特定する前記制御部を備えたことを特徴とする請求項4に記載のストレージコントローラ。
  6. 前記複数の半導体記憶装置の中からパリティを記憶した第3の半導体記憶装置を特定する情報をさらに管理する前記テーブルと、
    複数の前記第1の半導体記憶装置をさらにRAID制御する制御部と、
    を備えたことを特徴とする請求項に記載のストレージコントローラ。
  7. 前記第2の半導体記憶装置を特定する情報と前記第3の半導体記憶装置を特定する情報とを入れ替える制御部を備えたことを特徴とする請求項に記載のストレージコントローラ。
  8. 前記第1の半導体記憶装置の動作状態に基づいて前記第1の半導体記憶装置からのリード動作を当該リード動作の対象とならない前記第1の半導体記憶装置のデータと前記第3の半導体記憶装置のパリティによるデータの復元動作とする前記制御部を備えたことを特徴とする請求項に記載のストレージコントローラ。
  9. 複数の前記第1の半導体記憶装置でさらにミラーリング制御する制御部を備えたことを特徴とする請求項に記載のストレージコントローラ。
  10. 請求項に記載の前記ストレージコントローラと前記複数の半導体記憶装置を備えたことを特徴とするストレージ装置。
  11. 請求項10に記載の前記ストレージ装置と前記ストレージ装置へリードライトアクセスを行うサーバを備え
    前記ストレージコントローラは前記サーバからのリードライトアクセスに基づき前記複数の半導体記憶装置へリードライトアクセスすることを特徴とするストレージシステム。
JP2015527106A 2013-07-17 2013-07-17 ストレージコントローラ、ストレージ装置、ストレージシステム Expired - Fee Related JP6007329B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/069452 WO2015008356A1 (ja) 2013-07-17 2013-07-17 ストレージコントローラ、ストレージ装置、ストレージシステム、半導体記憶装置

Publications (2)

Publication Number Publication Date
JP6007329B2 true JP6007329B2 (ja) 2016-10-12
JPWO2015008356A1 JPWO2015008356A1 (ja) 2017-03-02

Family

ID=52345851

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015527106A Expired - Fee Related JP6007329B2 (ja) 2013-07-17 2013-07-17 ストレージコントローラ、ストレージ装置、ストレージシステム

Country Status (3)

Country Link
US (1) US20160179403A1 (ja)
JP (1) JP6007329B2 (ja)
WO (1) WO2015008356A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5843010B2 (ja) * 2012-06-25 2016-01-13 富士通株式会社 ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
JP6166476B2 (ja) * 2014-07-09 2017-07-19 株式会社日立製作所 メモリモジュールおよび情報処理システム
US9652415B2 (en) 2014-07-09 2017-05-16 Sandisk Technologies Llc Atomic non-volatile memory data transfer
US9904621B2 (en) 2014-07-15 2018-02-27 Sandisk Technologies Llc Methods and systems for flash buffer sizing
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US9952978B2 (en) 2014-10-27 2018-04-24 Sandisk Technologies, Llc Method for improving mixed random performance in low queue depth workloads
US9753649B2 (en) 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US9727456B2 (en) * 2014-11-03 2017-08-08 Pavilion Data Systems, Inc. Scheduled garbage collection for solid state storage devices
US9824007B2 (en) 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9817752B2 (en) 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US11188665B2 (en) * 2015-02-27 2021-11-30 Pure Storage, Inc. Using internal sensors to detect adverse interference and take defensive actions
JP6320318B2 (ja) * 2015-02-17 2018-05-09 東芝メモリ株式会社 記憶装置及び記憶装置を含む情報処理システム
US9647697B2 (en) 2015-03-16 2017-05-09 Sandisk Technologies Llc Method and system for determining soft information offsets
US9645765B2 (en) 2015-04-09 2017-05-09 Sandisk Technologies Llc Reading and writing data at multiple, individual non-volatile memory portions in response to data transfer sent to single relative memory address
US9753653B2 (en) 2015-04-14 2017-09-05 Sandisk Technologies Llc High-priority NAND operations management
US9864545B2 (en) 2015-04-14 2018-01-09 Sandisk Technologies Llc Open erase block read automation
US10372529B2 (en) 2015-04-20 2019-08-06 Sandisk Technologies Llc Iterative soft information correction and decoding
US9778878B2 (en) 2015-04-22 2017-10-03 Sandisk Technologies Llc Method and system for limiting write command execution
US9870149B2 (en) 2015-07-08 2018-01-16 Sandisk Technologies Llc Scheduling operations in non-volatile memory devices using preference values
US9715939B2 (en) * 2015-08-10 2017-07-25 Sandisk Technologies Llc Low read data storage management
US9804787B2 (en) * 2015-11-03 2017-10-31 Samsung Electronics Co., Ltd. Mitigating GC effect in a raid configuration
US10228990B2 (en) 2015-11-12 2019-03-12 Sandisk Technologies Llc Variable-term error metrics adjustment
US10126970B2 (en) 2015-12-11 2018-11-13 Sandisk Technologies Llc Paired metablocks in non-volatile storage device
US9837146B2 (en) 2016-01-08 2017-12-05 Sandisk Technologies Llc Memory system temperature management
US10732856B2 (en) 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
JP6696280B2 (ja) * 2016-04-13 2020-05-20 富士通株式会社 情報処理装置、raid制御方法、およびraid制御プログラム
US10481830B2 (en) 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
US10956048B2 (en) * 2017-11-21 2021-03-23 Distech Controls Inc. Computing device and method for inferring a predicted number of physical blocks erased from a flash memory
US11037056B2 (en) 2017-11-21 2021-06-15 Distech Controls Inc. Computing device and method for inferring a predicted number of data chunks writable on a flash memory before wear out
KR20190063054A (ko) 2017-11-29 2019-06-07 삼성전자주식회사 메모리 시스템 및 이의 동작 방법
US10528470B1 (en) * 2018-06-13 2020-01-07 Intel Corporation System, apparatus and method to suppress redundant store operations in a processor
US10409511B1 (en) * 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
US10725941B2 (en) 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US10592144B2 (en) 2018-08-03 2020-03-17 Western Digital Technologies, Inc. Storage system fabric with multichannel compute complex
US20210042236A1 (en) * 2019-08-06 2021-02-11 Micron Technology, Inc. Wear leveling across block pools
US11347397B2 (en) * 2019-10-01 2022-05-31 EMC IP Holding Company LLC Traffic class management of NVMe (non-volatile memory express) traffic
US11768628B2 (en) 2019-10-23 2023-09-26 Sony Interactive Entertainment Inc. Information processing apparatus
CN116257460B (zh) * 2021-12-02 2023-10-31 联芸科技(杭州)股份有限公司 基于固态硬盘的Trim命令处理方法及固态硬盘

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07110743A (ja) * 1993-10-14 1995-04-25 Fujitsu Ltd ディスクアレイ装置の故障対処方法および装置
JP2000330729A (ja) * 1999-05-18 2000-11-30 Toshiba Corp オンラインバックアップ機能を持つディスクアレイシステム
JP2007193883A (ja) * 2006-01-18 2007-08-02 Sony Corp データ記録装置及び方法、及びデータ再生装置及び方法、並びにデータ記録再生装置及び方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003085054A (ja) * 2001-06-27 2003-03-20 Mitsubishi Electric Corp フラッシュメモリを搭載した半導体記憶装置における装置寿命警告発生システムとその方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07110743A (ja) * 1993-10-14 1995-04-25 Fujitsu Ltd ディスクアレイ装置の故障対処方法および装置
JP2000330729A (ja) * 1999-05-18 2000-11-30 Toshiba Corp オンラインバックアップ機能を持つディスクアレイシステム
JP2007193883A (ja) * 2006-01-18 2007-08-02 Sony Corp データ記録装置及び方法、及びデータ再生装置及び方法、並びにデータ記録再生装置及び方法

Also Published As

Publication number Publication date
JPWO2015008356A1 (ja) 2017-03-02
WO2015008356A1 (ja) 2015-01-22
US20160179403A1 (en) 2016-06-23

Similar Documents

Publication Publication Date Title
JP6007329B2 (ja) ストレージコントローラ、ストレージ装置、ストレージシステム
US10430084B2 (en) Multi-tiered memory with different metadata levels
US9135181B2 (en) Management of cache memory in a flash cache architecture
US8392648B2 (en) Storage system having a plurality of flash packages
KR102170539B1 (ko) 저장 장치에 의해 데이터를 저장하기 위한 방법 및 저장 장치
US10203876B2 (en) Storage medium apparatus, method, and program for storing non-contiguous regions
JP5593577B2 (ja) ストレージシステム及びその制御情報の管理方法
KR101726824B1 (ko) 캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용
CN106528001B (zh) 一种基于非易失性存储器和软件raid的缓存系统
JP6017065B2 (ja) ストレージシステム及びキャッシュコントロール方法
US20140189203A1 (en) Storage apparatus and storage control method
US20100325352A1 (en) Hierarchically structured mass storage device and method
US9047200B2 (en) Dynamic redundancy mapping of cache data in flash-based caching systems
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
US9104578B2 (en) Defining address ranges used to cache speculative read data
WO2015145532A1 (ja) ストレージシステム及びデータ処理方法
CN107003937A (zh) 针对大型工作数据集的缓存优化技术
JP2016506585A (ja) データストレージのための方法及びシステム
CN103907096A (zh) 闪存高速缓存中的部分数据片段的提升
KR101155542B1 (ko) Ssd 장치의 매핑 테이블 관리 방법
US20180307440A1 (en) Storage control apparatus and storage control method
WO2016194979A1 (ja) ストレージシステム、ストレージ制御装置、ストレージ制御方法及びプログラム
JP5594647B2 (ja) ストレージ装置及びその制御方法
JP2018181207A (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JP6273678B2 (ja) ストレージ装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160708

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160912

R150 Certificate of patent or registration of utility model

Ref document number: 6007329

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees