JP5342014B2 - 複数のフラッシュパッケージを有するストレージシステム - Google Patents

複数のフラッシュパッケージを有するストレージシステム Download PDF

Info

Publication number
JP5342014B2
JP5342014B2 JP2011544717A JP2011544717A JP5342014B2 JP 5342014 B2 JP5342014 B2 JP 5342014B2 JP 2011544717 A JP2011544717 A JP 2011544717A JP 2011544717 A JP2011544717 A JP 2011544717A JP 5342014 B2 JP5342014 B2 JP 5342014B2
Authority
JP
Japan
Prior art keywords
physical
controller
chunk
block
logical
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
JP2011544717A
Other languages
English (en)
Other versions
JP2012523594A (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 JP2012523594A publication Critical patent/JP2012523594A/ja
Application granted granted Critical
Publication of JP5342014B2 publication Critical patent/JP5342014B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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; 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1035Keeping track, i.e. keeping track of data and parity changes

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)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ストレージシステムに関する。
ハードディスクの代わりにフラッシュメモリを記憶媒体としたストレージシステムが考えられる。フラッシュメモリ(例えばNAND型のフラッシュメモリ)は、複数のフラッシュメモリチップ(以下、フラッシュチップ)で構成されている。各フラッシュチップは、複数の物理ブロックで構成されている。
フラッシュメモリは、ハードディスクに比べて高速動作可能で、かつ、消費電力が低いという利点を持つ。しかし、一方で、次のような制限もある。
第1に、メモリの各ビットの更新は1から0(または0から1)の一方向に限定される点である。逆の更新が必要な場合は、物理ブロックに対して消去処理を行い、物理ブロックを構成する全てのセルのビットを1(または0)に変更する必要がある。
第2に、各物理ブロックの消去回数には上限がある点である。例えば、NAND型フラッシュメモリの場合、各物理ブロックの消去回数の上限は、一万から十万回程度である。
以上の理由から、ストレージシステムの記憶媒体としてハードディスクの代わりにフラッシュメモリが採用された場合、物理ブロック毎の書き換え頻度の偏りによって、一部の物理ブロックのみが消去回数の上限に達して使えなくなってしまうおそれがある。例えば、一般的なファイルシステムでは、ディレクトリ又はiノードに割り当てられた論理ブロックに対する書き換えの頻度は他の論理ブロックに対する書き換えよりも高いので、ディレクトリ又はiノードに割り当てられた論理ブロックに割り当てられている物理ブロックの消去回数が上限に達する可能性が高い。
この問題に対し、特許文献1に示すように、使えなくなった物理ブロック(不良ブロック)に対して代替となる物理ブロック(代替ブロック)を割り当てることで、記憶装置としての寿命を延ばす技術が知られている。
また、特許文献2に示すように、動的に論理/物理マッピング(例えば論理ブロックと物理ブロックの対応関係)を変更することによって物理ブロックの消去回数を平準化する技術(ウェアレベリング)も知られている。ウェアレベリングのアルゴリズムには、ダイナミックウェアレベリングと、スタティックウェアレベリングとがある。ダイナミックウェアレベリングは、データ更新に伴う物理ブロック消去時に、なるべく消去回数の少ない空きブロックへデータを移動することである。スタティックウェアレベリングでは、更新されないデータ(スタティックなデータ)も移動の対象となり得る。
特開平5−204561号公報 米国特許5479638号明細書
消去回数が偏ると、多くの使用不可能な物理ブロック(寿命が尽きた物理ブロック)が発生し得る。そうすると、論理ブロックに割当て可能な物理ブロック(空きブロック)が枯渇し、それ故、ストレージシステムに新たにデータを格納することができなくなる。
従って、本発明の一つの目的は、ストレージシステム内で効率的にウェアレベリングが行われるようにすることにある。
ストレージシステムが、一以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループを構成する複数のフラッシュパッケージと、複数のフラッシュパッケージに接続されたコントローラとを備える。各フラッシュパッケージは、複数の物理ブロックで構成された複数のフラッシュチップを有する。コントローラは、不要領域に関わる対象領域を特定し、その対象領域に属する論理ブロックに割り当てられている物理ブロックをその論理ブロックから解放し、解放された物理ブロックを空きブロックとして管理する。
図1は、本発明の一実施形態に係る計算機システムの構成例を示す図である。 図2は、論理ユニット管理情報12の一例を示す図である。 図3は、プール管理情報13の一例を示す図である。 図4は、ドライブ5の構成例を示す図である。 図5は、フラッシュメモリ管理情報45の一例を示す図である。 図6は、ドライブコントローラ220が行うセクタ解放処理の一例を示すフローチャートである。 図7は、ブロック解放処理(図6のステップ74)の一例を示すフローチャートである。 図8は、論理ユニット削除処理の一例を示すフローチャートである。 図9は、チャンク解放処理(図8のステップ93)のフローチャートである。 図10は、ホスト計算機2からの解放要求に応答してストレージコントローラ4がドライブ5に解放指示を送信する例の説明図である。 図11は、ホスト計算機2から解放要求を受けたストレージコントローラ4が行う領域解放処理の一例を示すフローチャートである。 図12は、空きブロック不足によるライト失敗に応答して行われるデータ移行処理の説明図である。 図13は、ライト失敗を契機に行われるライトエラーハンドリング処理の一例を示すフローチャートである。 図14は、RAID5(3D+1P)のRAIDグループについてのフラッシュメモリデータ回復処理の説明図である。 図15は、方法1に従うフラッシュメモリデータ回復処理の一例を示すフローチャートである。 図16は、方法2に従うフラッシュメモリデータ回復処理の一例を示すフローチャートである。 図17は、方法3に従うフラッシュメモリデータ回復処理の一例を示すフローチャートである。 図18は、空きチャンク抹消処理の一例を示すフローチャートである。 図19は、解放範囲の修正の一例の説明図である。 図20は、解放範囲修正処理の一例を示すフローチャートである。 図21は、データ回復処理の一例を示すフローチャートである。
以下、本発明の一実施形態を説明する。
まず、その説明で使用される用語の説明を行う。
一般に、いわゆるブロックストレージにおけるデータの読み書きの最小単位は「ブロック」と呼ばれるが、フラッシュメモリでは、フラッシュメモリの消去単位が「ブロック」と呼ばれる。本実施形態の説明では、これらを区別するために、フラッシュメモリの消去単位を「ブロック」と呼び、データの読み書きの最小単位を「セクタ」と呼ぶことにする。本実施形態では、一つのブロックが複数のセクタを含む。具体的には、例えば、フラッシュメモリは、NAND型のフラッシュメモリである。そのため、例えば、フラッシュメモリは、複数のフラッシュチップで構成され、フラッシュチップは、複数の物理ブロックで構成され、物理ブロックは、複数の物理ページで構成される。NAND型のフラッシュメモリでは、読み書きの単位が「ページ」であり、消去単位が「ブロック」である。しかし、本発明は、そのようなフラッシュメモリを有するストレージシステムに限らず、他の構成を有するフラッシュメモリを備えたストレージシステムについても適用可能である。
続いて、「チャンク」という用語を説明する。ストレージコントローラ(後述)が記憶領域を管理するうえで、いわゆる論理ユニットよりも小さい単位で管理を行うことで、記憶領域の割当、解放及び移動といった制御をより柔軟に行うことができる。この記憶領域の管理単位を、本実施形態の説明では「チャンク」と呼ぶ。以下の実施形態では、一つの仮想ユニットが複数の論理チャンクを有し、いずれかの論理チャンクに書込みがある場合にその論理チャンクに物理チャンクが割り当てられる。しかし、本発明は、そのような容量仮想化機能を有するストレージシステムに限らず、記憶領域がボリューム単位で管理されるストレージシステムにも適用可能である。例えば、一つの論理ユニットが一つのチャンクで構成されているとみなされても良い。
次に、本実施形態の概要を説明する。
ストレージシステムは、ストレージコントローラと、フラッシュメモリを記憶媒体とする複数のドライブとを有する。各ドライブは、ドライブコントローラを有する。
ストレージコントローラは、論理ユニットのアドレスと各ドライブの論理アドレスとの対応関係を管理する。ドライブのコントローラは、ドライブの論理アドレスと物理アドレスとの対応関係を管理する。
ストレージコントローラは、不要領域に関する対象領域を特定し、特定された対象領域のアドレスを指定した解放指示をドライブに送信する。ここで言う不要領域は、例えば、以下の(1)〜(5)のうちの少なくとも一つ:
(1)ホストが削除したファイルが格納されていた領域であって、ホストのファイルシステム内の領域;
(2)削除された論理ユニット;
(3)仮想ユニット内のいずれかの論理チャンクから解放された物理チャンク;
(4)或るドライブから別のドライブへ移動したデータが格納されていた移動元領域;
(5)特定のパターンのデータ(例えば“0”データ)が繰り返し書き込まれる領域、
が考えられる。対象領域は、前述した不要領域と同じであっても良いし、その不要領域よりも大きくても小さくても良い。対象領域は、例えば、不要領域に基づくRAIDグループのRAIDタイプを基に決定される。
ドライブコントローラは、その解放指示に応じて、指定されたアドレスを有する論理ブロック部分に対応した物理ブロック部分を解放可能として管理する。ドライブコントローラは、物理ブロックの全域が解放可能として管理されていれば、その物理ブロックを論理ブロックから解放する。つまり、ドライブコントローラは、その物理ブロックの論理ブロックに対する割当てを解除する。ドライブコントローラは、解放された物理ブロックに対して消去処理を行う。ドライブコントローラは、その物理ブロックのこれまでの消去回数が所定の閾値を超えたか否かを判断する。その判断の結果が否定的であれば、ドライブコントローラは、その物理ブロックを割当て可能な物理ブロック(空きブロック)として管理する。これにより、空きブロックを増やすことができるので、ウェアレベリングの効率の向上が期待できる。なお、上記の判断の結果が肯定的であれば、ドライブコントローラは、その物理ブロックを割当て不可能な物理ブロック(不良ブロック)として管理する。
また、ストレージコントローラは、或るドライブへのライトに失敗し、且つ、その失敗の原因が、そのドライブ内で空きブロックが不足していることであれば、その或るドライブから別のドライブへデータを移動する。そして、ストレージコントローラは、元のドライブに対して、移動されたデータが格納されていた記憶領域のアドレスを指定した解放指示を送信する。
また、ストレージコントローラは、或るドライブ内のフラッシュチップに障害が生じた場合に、その障害が生じたチップ内のデータを、他のドライブ内のデータを基に復元し、復元されたデータを、上記或るドライブ内の別のフラッシュチップに書き込む。これにより、一つのドライブの記憶領域を効率的に使用することができる。
また、ストレージコントローラは、記憶領域が残り少なくなった場合に、管理者に警告を発する。具体的には、例えば、ストレージコントローラは、未割当ての物理チャンクが少なくなった場合に、管理者が使用する計算機に警告を表す情報を出力する。
以下、図面を参照して、本実施形態を詳細に説明する。なお、以下の説明では、ストレージコントローラが外部装置(例えばホスト計算機)から受け付けるコマンドを「要求」と言い、ドライブがストレージコントローラから受け付けるコマンドを「指示」と言う。
図1は、本発明の一実施形態に係る計算機システムの構成例を示す図である。
ストレージシステム1には、外部装置の一種でありI/O(Input/Output)要求を発行するホスト計算機2や、ストレージシステム1を管理する計算機である管理サーバ3が接続される。
ストレージシステム1は、ストレージコントローラ4と、複数のドライブ5とを備える。ドライブ5はSSD(Solid State Drive)であっても良い。
複数のドライブ5を基に複数のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループが構成されている。RAIDグループは、二以上のドライブ5で構成されている。RAIDグループには、そのRAIDグループについて予め定義されたRAIDタイプに従って、ストレージコントローラ4によりデータが格納される。
ストレージコントローラ4と、各ドライブ5内のドライブコントローラ220(図4参照)とによって、例えば、コントローラ140が構成されている。
ストレージコントローラ4は、ストレージシステム1の制御を行う一つ以上のマイクロプロセッサ(以下、MPと表記)6と、制御を行うためのデータおよびプログラムを保持する制御メモリ7と、データをキャッシュするためのメモリであるキャッシュメモリ8と、ホスト計算機2とデータを授受する一つ以上のホストアダプタ9と、管理サーバ3と通信する一つ以上の管理ポート10と、ドライブ5、キャッシュメモリ8、ホストアダプタ9及びMP6などを相互に接続する内部ネットワーク11とを備える。制御メモリ7とキャッシュメモリ8は同一のメモリとしてもよい。ホスト計算機2からドライブ5に書き込まれるデータ、及び、ドライブ5からホスト計算機2に読みだされるデータは、キャッシュメモリ8に一時記憶される。つまり、ホスト計算機2によって読み書きされるデータは、キャッシュメモリ8を介して、ドライブ5に入出力される。
制御メモリ7は、各論理ユニットに関する情報を含んだ論理ユニット管理情報12と、ストレージプールに関する情報を含んだプール管理情報13とを格納する。
ストレージコントローラ4は、複数の論理チャンクで構成されている仮想ユニット(仮想ボリューム)と、プールとを管理する。プールは、複数の物理チャンクを含む。複数の物理チャンクは、複数のRAIDグループに基づく複数の論理的な記憶領域である。具体的には、例えば、プールが、RAIDグループに基づく複数の論理ユニットで構成されており、各論理ユニットが、複数の物理チャンクで構成されている。各物理チャンクは、いずれかのRAIDグループを構成する二以上のドライブ5に基づいている。物理チャンクには、その物理チャンクの基になっているRAIDグループについての複数の論理ブロックのうちの二以上の論理ブロックが割り当てられている。ストレージコントローラ4は、ホスト計算機2からライト要求を受けた場合、そのライト要求で指定されているアドレスから特定される論理チャンク(ライト先論理チャンク)に物理チャンクが割り当てられていなければ、プール内の未割当ての物理チャンクをライト先論理チャンクに割当てる。
図2は、論理ユニット管理情報12の一例を示す図である。
論理ユニット管理情報12は、論理ユニット毎に存在する。論理ユニット管理情報12は、プール割当テーブル21と、割当済セクタビットマップ23とを含む。
プール割当テーブル21は、論理ユニット管理情報12に対応する論理ユニット(以下、図2の説明において「対象論理ユニット」と言う)に対する物理チャンクの割当を管理するためのテーブルである。具体的には、テーブル21は、対象論理ユニット(仮想ユニット)を構成する各論理チャンクと、各論理チャンクに割り当てられた物理チャンクとの対応関係を表す。物理チャンクを表す情報は、例えば、RAIDグループ番号24と開始アドレス25とで構成される。物理チャンクが割り当てられていない論理チャンクに対応したRAIDグループ番号24および開始アドレス25は、無効な値(例えばNULL)である。情報24及び25について、一つの物理チャンク(以下、この段落において「対象物理チャンク」)を例に採って説明する。RAIDグループ番号24は、対象物理チャンクの基になっているRAIDグループの番号である。開始アドレス25は、そのRAIDグループの記憶空間での、対象物理チャンクの開始アドレスである。ストレージコントローラ4は、以下の(A)及び(B):
(A)ホスト計算機2からのアクセス要求で指定されているアドレス;
(B)(A)のアドレスを有する論理チャンクに割り当てられた物理チャンクのRAIDグループ番号24および開始アドレス25、
を基に所定の計算を行うことで、ドライブ5に指定するアドレス(論理ブロック群におけるアドレス)を算出することができる。
割当済セクタビットマップ23は、ストレージコントローラ4が対象論理ユニット内の各論理セクタに対してドライブ5の記憶領域を割り当てる必要があるか否かを表すビットマップである。各論理チャンクが、複数のセクタを有しても良いし、各セクタが複数の論理チャンクを有しても良い。つまり、論理チャンクがセクタより大きくても良いし、セクタが論理チャンクより大きくても良い。例えば、ストレージコントローラ4は、セクタ0のアドレスを指定したライト要求を上位装置(ホスト計算機2)から受けた場合、そのセクタ0に対応するビット0(割当済セクタビットマップ23内のビット)を、ON(1)に更新する。一方、ストレージコントローラ4は、セクタ0のアドレスを指定した解放要求をホスト計算機2から受けた場合、上記ビット0をOFF(0)に更新する。以下、ON(1)になっているビットを「オンビット」と言い、OFF(0)になっているビットを「オフビット」と言う。
図3は、プール管理情報13の一例を示す図である。
プール管理情報13は、プール毎に存在する。プール管理情報13は、その情報13に対応するプール(以下、図3の説明において「対象プール」と言う)内の空きチャンク(未割当ての物理チャンク)を管理する空きチャンクリスト31と、対象プール内の空きチャンクの個数を格納する空きチャンクカウンタ32と、対象プールを構成する全物理チャンクの個数を格納する総チャンクカウンタ33とを含む。空きチャンクリスト31は、空きチャンクのRAIDグループ番号34および開始アドレス35を並べたリストである。
図4は、ドライブ5の構成例を示す図である。
ドライブ5は、ドライブコントローラ220と、フラッシュパッケージ230とを有する。フラッシュパッケージ230は、複数のフラッシュチップ43を有する。
ドライブコントローラ220は、ドライブの制御を行う一つ以上のプロセッサ(ドライブプロセッサ)41と、制御を行うためのデータおよびプログラムを保持するメインメモリ42と、ストレージコントローラ4とデータを授受する一つ以上のポート44とを備える。
メインメモリ42は、フラッシュチップ43に関する情報を含んだフラッシュメモリ管理情報45を格納する。なお、メインメモリ42の実装方法は、図4の形態に限らない。例えば、メインメモリ42は、ドライブプロセッサ41を含んだ回路に内蔵されていてもよいし、フラッシュパッケージ230の一部領域がメインメモリ42として用いられてもよい。
図5は、フラッシュメモリ管理情報45の一例を示す。なお、図5では、論理ブロックを「LB」と略記し、物理ブロックを「PB]と略記している。
フラッシュメモリ管理情報45は、ブロック割当テーブル51と、空きブロックリスト52と、空きブロックカウンタ53と、割当済ブロックカウンタ54と、不良ブロックカウンタ55と、ブロック消去カウンタリスト56と、トータル消去回数カウンタ57と、割当済セクタビットマップ58とを含む。
ブロック割当テーブル51は、各論理ブロックと、各論理ブロックに割り当てられた物理ブロックとの対応関係を表す。物理ブロック情報は、例えば、チップ番号59およびブロック番号60で構成される。物理ブロックが割り当てられていない論理ブロックに対応する情報59及び60は、無効な値(例えばNULL)である。情報59及び60について、一つの物理ブロック(以下、この段落において「対象物理ブロック」)を例に採って説明する。チップ番号59は、対象物理チャンクを含んだフラッシュチップ43の番号である。ブロック番号60は、対象物理ブロックを表す番号である。
空きブロックリスト52は、空きブロック(割当て可能な物理ブロック)のチップ番号61およびブロック番号62を並べたリストである。
空きブロックカウンタ53は、空きブロックの個数を格納するカウンタである。
割当済ブロックカウンタ54は、論理ブロックに割り当てられている物理ブロックの個数を格納するカウンタである。
不良ブロックカウンタ55は、不良ブロック(故障や寿命等により使えなくなり割当て不可能になった物理ブロック)の個数を格納するカウンタである。
ブロック消去カウンタリスト56は、各物理ブロックの消去回数を格納するブロック消去カウンタ63のリストである。
トータル消去回数カウンタ57は、当該ドライブ内のトータル消去回数を格納するカウンタである。つまり、カウンタ57の値(トータル消去回数)は、全てのカウンタ63の値(消去回数)の合計である。ドライブコントローラ220は、ドライブ5内のいずれかの物理ブロックに対して消去処理を行う都度に、その物理ブロックに対応するブロック消去カウンタ63の値を1増やし、トータル消去回数カウンタ57の値を1増やす。トータル消去回数カウンタ57の値は、例えば、後述の移動先RAIDグループを判断する際の判断材料の一つとなる。
割当済セクタビットマップ58は、ドライブ5内の各論理セクタに対して物理的な記憶領域を割り当てる必要があるか否かを表すビットマップである。各論理ブロックが、複数のセクタを有しても良いし、各セクタが複数の論理ブロックを有しても良い。つまり、論理ブロックがセクタより大きくても良いし、セクタが論理ブロックより大きくても良い。例えば、ドライブコントローラ220は、セクタ0のアドレスを指定したライト指示を上位装置(ストレージコントローラ4)から受けた場合、そのセクタ0に対応するビット0(割当済セクタビットマップ58内のビット)を、ON(1)に更新する。一方、ドライブコントローラ220は、セクタ0のアドレスを指定した解放指示(UNMAP指示)をストレージコントローラ4から受けた場合、上記ビット0をOFF(0)に更新する。
以下、ストレージコントローラ4から物理ブロックへのアクセスの流れを説明する。なお、ストレージコントローラ4は、どの論理チャンクにどの物理チャンクが割り当てられているかの対応関係(プール割当テーブル21)を管理している。ストレージコントローラ4は、どの物理チャンクにどの二以上の論理ブロックが割り当てられているかの対応関係(チャンク/ブロック対応関係)を管理しても良い。
ストレージコントローラ4は、ホスト計算機2からライト要求を受けた場合、そのライト要求から特定される論理チャンク(ライト先の論理チャンク)に物理チャンクが割り当てられているか否かをプール割当テーブル21を基に判断する。その判断の結果が否定的の場合、ストレージコントローラ4は、ライト先の論理チャンクに空きチャンク(未割当ての物理チャンク)を割り当て、割り当てた物理チャンクに、ライト要求に付随するデータを書き込む。
ストレージコントローラ4は、物理チャンクにデータを書き込む場合、その物理チャンクについての情報24及び25を基に特定されるアドレスを指定したライト指示を、そのアドレスを管理するドライブコントローラ220に送信する。そのライト指示を受けたドライブコントローラ220が、ブロック割当テーブル51(つまりブロック対応関係)を基に、そのライト指示で指定されているアドレスを有する論理ブロック(ライト先の論理ブロック)に物理ブロックが割り当てられているか否かを判断する。その判断の結果が否定的の場合に、ドライブコントローラ220は、空きブロックリスト52を基に空きブロックを選択し、その空きブロックをライト先の論理ブロックに割当て、割り当てた物理ブロック(空きブロック)に、そのライト指示の対象のデータを書き込む。
ストレージコントローラ4は、ホスト計算機2からリード要求を受けた場合、そのリード要求から特定される論理チャンク(リード元の論理チャンク)に割り当てられている物理チャンクをプール割当テーブル21を基に特定する。ストレージコントローラ4は、特定された物理チャンクからデータを読み出し、読み出したデータをホスト計算機2に送信する。
ストレージコントローラ4は、物理チャンクからデータを読み出す場合、その物理チャンクについての情報24及び25を基に特定されるアドレスを指定したリード指示を、そのアドレスを管理するドライブコントローラ220に送信する。そのリード指示を受けたドライブコントローラ220が、そのリード指示で指定されているアドレスを有する論理ブロックに割り当てられている物理ブロックをブロック割当テーブル51を基に特定する。ドライブコントローラ220が、特定された物理ブロックからデータを読み出し、そのデータをストレージコントローラ4に送信する。
以下、本実施形態で行われる処理を説明する。なお、以下の説明において、ドライブコントローラ220が行う処理は、ドライブプロセッサ41が行い、ストレージコントローラ4が行う処理は、MP6が行う。
図6は、セクタ解放処理の一例を示すフローチャートである。
ドライブコントローラ220は、ストレージコントローラ4から解放指示を受ける(ステップ71)。解放指示は、解放対象のアドレス範囲を表すパラメータ群を含む。パラメータ群は、例えば、ドライブ5の解放すべき範囲における先頭アドレス(LBA(Logical Block Address))と、解放すべき範囲の大きさ(セクタ数)とを含む。
ドライブコントローラ220は、その解放指示で指定されているアドレス範囲に含まれる論理セクタに対応するビット(割当済セクタビットマップ58内のビット)を、OFF(0)に更新する(ステップ72)。
ドライブコントローラ220は、論理ブロック内の全ての論理セクタが未割当状態(OFF(0))になったか否かを判断する(ステップ73)。もし、その判断の結果が肯定的であれば(ステップ73:YES)、ドライブコントローラ220は、その論理ブロックに割り当てられている物理ブロック(以下、解放対象ブロック)をその論理ブロックから解放するブロック解放処理を行う(ステップ74)。
その後、ドライブコントローラ220は、ストレージコントローラ4へレスポンスを送信する(ステップ75)。
図7は、ブロック解放処理(図6のステップ74)の一例を示すフローチャートである。
ドライブコントローラ220は、解放対象ブロックに対して消去処理を行う(ステップ81)。消去処理は、このタイミングに限らず、別のタイミングで行われても良い。
次に、ドライブコントローラ220は、解放対象ブロックのマッピング情報を消去する(ステップ82)。具体的には、例えば、ドライブコントローラ220は、解放対象ブロックに対応した情報59及び60(ブロック割当テーブル51内の情報)をNULLに更新する。ドライブコントローラ220は、解放対象ブロックについての消去回数に1を加算する(ステップ83)。
次に、ドライブコントローラ220は、解放対象ブロックの消去回数(消去カウンタ63の値)が上限値を超えたか否かを判断する(ステップ84)。
ステップ84の判断の結果が肯定的であれば(ステップ84:YES)、ドライブコントローラ220は、解放対象ブロックを不良ブロックとして管理する。具体的には、ドライブコントローラ220は、解放対象ブロックのチップ番号及びブロック番号を不良ブロックリストに追加する(ステップ85)。なお、不良ブロックリストは、図示しないが、フラッシュメモリ管理情報45に含まれているリストであって、空きブロックリスト52と同様の構成を有するリストである。
ステップ84の判断の結果が否定的であれば(ステップ84:NO)、ドライブコントローラ220は、解放された物理ブロックを空きブロックとして管理する。具体的には、ドライブコントローラ220は、解放された物理ブロックのチップ番号及びブロック番号を空きブロックリスト52に追加する(ステップ86)。
さて、ストレージコントローラ4がドライブ5に解放指示を送信する契機の一例として、管理サーバ3がストレージコントローラ4に対して論理ユニットの削除要求を送信したことが考えられる。この場合、ストレージコントローラ4は、削除要求の対象の論理ユニット(仮想ユニット)に割り当てられている全ての物理チャンクを解放する。そして、このチャンク解放処理において、ストレージコントローラ4は、ドライブ5に対して解放指示を送信する。
図8は、論理ユニット削除処理の一例を示すフローチャートである。
ストレージコントローラ4は、論理ユニット削除要求を受けた場合(ステップ91)、その要求で指定されている論理ユニット(対象論理ユニット)の先頭の論理チャンクを処理対象の論理チャンクとして選択する(ステップ92)。
次に、ストレージコントローラ4は、処理対象の論理チャンクから物理チャンクを解放するチャンク解放処理(図9参照)を行う(ステップ93)。
ストレージコントローラ4は、対象論理ユニット内の全ての論理チャンクから物理チャンクが解放されたら(ステップ94:YES)、処理を終了する。そうでなければ(ステップ94:NO)、ストレージコントローラ4は、次の論理チャンクを処理対象の論理チャンクとして選択し(ステップ95)、ステップ93からの処理を繰り返す。
図9は、チャンク解放処理(図8のステップ93)の一例を示すフローチャートである。
ストレージコントローラ4は、解放すべきセクタを決定する(ステップ101)。「解放すべきセクタ」とは、処理対象の論理チャンクに含まれる論理セクタであり、具体的には、例えば、割当済セクタビットマップ23におけるオンビットに対応した論理セクタである。
ストレージコントローラ4は、解放すべき論理セクタのドライブ5におけるアドレス範囲を指定した解放指示を、そのアドレス範囲を管理するドライブ5に送信する(ステップ102)。物理チャンクが、その物理チャンクの基になっているRAIDグループを構成する複数のドライブ5に跨っている場合、ストレージコントローラ4は、それら複数のドライブ5にそれぞれ解放指示を送信する。
その解放指示に応答して、ドライブ5によってセクタ解放処理(図6参照)が行われ、ストレージコントローラ4は、ドライブ5から応答を受ける(ステップ103)。
そして、ストレージコントローラ4は、処理対象の論理チャンクに割り当てられていた物理チャンクを未割当として管理する。具体的には、ストレージコントローラ4は、処理対象の論理チャンクに対応したRAIDグループ番号24及び開始アドレス25(プール割当テーブル21内の情報)をNULLに更新する(ステップ104)。そして、ストレージコントローラ4は、その論理チャンクに割り当てられていた物理チャンクのRAIDグループ番号及び開始アドレスを空きチャンクリスト31に追加する(ステップ105)。
以上の説明によれば、論理ユニットが削除されることに限らず、例えば、いずれかの論理チャンクから動的に物理チャンクが解放された場合に、物理チャンクに属する論理ブロックから物理ブロックを解放することも可能である。
さて、次に、ストレージコントローラ4がドライブ5に解放指示を送信する契機の別の例として、ホスト計算機2がストレージコントローラ4に或るアドレス範囲を指定した解放要求(UNMAP要求)を送信するケースがある。
図10は、ホスト計算機2からの解放要求に応答してストレージコントローラ4がドライブ5に解放指示を送信する例の説明図である。
具体的には、例えば、ホスト計算機2のファイルシステムが管理する記憶空間からファイルが削除されたとする。この場合、ホスト計算機2(例えばファイルシステム或いはオペレーティングシステム)が、削除されたファイルが記憶されていた領域のアドレス範囲を指定した解放要求を、ストレージシステム1に送信する。つまり、ホスト計算機2が、ホスト計算機2にとって不要な記憶領域のアドレス範囲を指定した解放要求を送信する機能(インターフェース)を有する。これにより、ストレージシステム1に、ホスト計算機2にとって不要な領域を知らしめることができる。
ストレージコントローラ4は、ホスト計算機2から解放要求を受信し、その解放要求に応答して、その解放要求で指定されているアドレス範囲に属する論理セクタ(つまり解放すべきセクタ)を決定する。ストレージコントローラ4は、決定された論理セクタのドライブ5におけるアドレス範囲を指定した解放指示(つまり、削除されたファイルの領域に相当するアドレス範囲を指定した解放指示)を、そのアドレス範囲を管理するドライブ5に送信する。
その解放指示に応答して、ドライブ5によってセクタ解放処理(図6参照)が行われる。すなわち、解放指示で指定されたアドレス範囲に従う、ドライブ5で管理される論理セクタが解放対象として管理され、論理ブロック内の全ての論理セクタが解放対象となっていれば、その論理ブロックから物理ブロックが解放される。
なお、ストレージシステム1は、例えばNAS(Network Attached Storage)システムであっても良い。その場合、ストレージシステム1は、ホスト計算機2から削除されたファイルの領域を指示される。
図11は、ホスト計算機2から解放要求を受けたストレージコントローラ4が行う領域解放処理の一例を示すフローチャートである。
ストレージコントローラ4は、ホスト計算機2から解放要求を受ける(ステップ111)。
次に、ストレージコントローラ4は、その解放要求で指定されているアドレス範囲に対応したビット(割当済セクタビットマップ23内のビット)を、OFF(0)に更新する(ステップ112)。
次に、ストレージコントローラ4は、その解放要求で指定されているアドレス範囲を基に解放すべき論理セクタを決定する(ステップ113)。ここで決定される論理セクタは、ホスト計算機2から指定されたアドレス範囲の全域の論理セクタであるとは限らず、そのアドレス範囲の基になっているRAIDグループのRAIDタイプ(例えば、RAID5(3D+1P)、RAID5(4D+1P))を基に決定される。具体的には、ストレージコントローラ4は、ステップ113で、図19及び図20を参照して説明する解放範囲修正処理を行う。
次に、ストレージコントローラ4は、ステップ113で決定された論理セクタのドライブ5でのアドレス範囲を指定した解放指示を、ドライブ5に送信する(ステップ114)。その解放指示に応答して、ドライブ5によってセクタ解放処理(図6参照)が行われ、ストレージコントローラ4は、ドライブ5からレスポンスを受信する(ステップ115)。
ストレージコントローラ4は、論理チャンク内の全論理セクタが解放対象か否かを判断する(ステップ116)。具体的には、ストレージコントローラ4は、論理チャンクの全論理セクタに対応するビット(割当済セクタビットマップ23内のビット)がOFF(0)であるか否かを判断する。
ステップ116の判断の結果が肯定的であれば、ストレージコントローラ4は、その論理チャンクについて、前述したチャンク解放処理(図9参照)を行う(ステップ117)。
その後、ストレージコントローラ4は、解放要求に対するレスポンスをホスト計算機2へ送信する(ステップ118)。
ところで、フラッシュメモリは消去回数が限られているので、使用しているうちに不良ブロックが増えていく。不良ブロックが増えるということは、使用可能な物理ブロックが減るということである。
そこで、或るドライブ5内で使用可能な物理ブロックが枯渇した場合、そのドライブ5から別のドライブへデータが移動され、データの移動元の領域に属する論理ブロックから物理ブロックが解放される。解放された物理ブロックに対して、消去処理が行われ、消去回数が上限値以下であれば、その物理ブロックは空きブロックとされる。空きブロックには、データを読み書きすることが可能である。これにより、ドライブ5の長寿命化が期待できる。
図12は、空きブロック不足によるライト失敗に応答して行われるデータ移行処理の説明図である。
例えば、RAIDグループ1を構成するドライブA〜DのうちドライブAの空きブロックが不足しており、空きブロック不足が原因でドライブAにおいてデータの書き込みに失敗した場合、ドライブAのドライブコントローラ220は、ストレージコントローラ4からのライト指示に対するレスポンスとして、「失敗」のステータスを含んだレスポンスを返す。レスポンスは、「失敗」のステータスの他に、失敗の原因が空きブロックの不足であることを表す情報を含む。レスンポンスが失敗の原因を表す情報を含むことに代えて、ストレージコントローラ4が、ライト失敗の原因を、ドライブ5に別途問い合わせることで取得しても良い。
ストレージコントローラ4は、ライト失敗範囲を含む物理チャンク(第1の物理チャンク)が割り当てられている論理チャンク(以下、図12の説明において「対象論理チャンク」と言う)に対し、第1の物理チャンクに代えて、第2の物理チャンクを割り当てる。ライト失敗範囲とは、ライト失敗のレスポンスに対応したライト指示で指定したアドレス範囲(ライト先範囲)であり、具体的には、ドライブAに基づくアドレス範囲である。第1の物理チャンクは、RAIDグループ1に基づく物理チャンク(ソースチャンク)である。第2の物理チャンクは、RAIDグループ1とは別のRAIDグループであるRAIDグループ2に基づく物理チャンク(デスティネーションチャンク)である。
ストレージコントローラ4は、第1の物理チャンクから第2の物理チャンクにデータを移動する。具体的には、ストレージコントローラ4は、ドライブA〜Dから、第1のチャンクにおけるデータのうちキャッシュメモリ8に残っていないデータを読出し、読みだされたデータとドライブAに書き込まれなかったデータ(例えばキャッシュメモリ8に残っているデータ)とを含んだデータ(第1の物理チャンクに書き込まれるべきデータ)を、第2の物理チャンクに書き込む。
移動が完了した場合、ストレージコントローラ4は、第1の物理チャンクに対応する論理セクタの解放指示を移動元ドライブA〜Dに送信する。このとき、解放指示を受けたドライブA〜Dは、指定されたアドレス範囲に相当する論理セクタを解放対象として管理する。
なお、この例では、RAIDグループ1(移動元RAIDグループ)は、ライト失敗範囲を有するRAIDグループであるが、トータル消去回数57が所定の閾値を超えたドライブを有するRAIDグループであってもよい。
図13は、ライト失敗を契機に行われるライトエラーハンドリング処理の一例を示すフローチャートである。以下、ライト失敗のレスポンスの送信元のドライブ5を「エラードライブ5」と言い、エラードライブ5を含んだRAIDグループを「RAIDグループ1」とい言う。
ストレージコントローラ4は、ライト失敗のレスポンスをエラードライブ5から受け、ライト失敗の原因を判断する(ステップ132)。例えば、レスポンスに含まれているエラー原因情報を解析する、或いは、エラードライブ5に別途問合せを出すことにより、ライト失敗の原因を特定することができる。
ライト失敗の原因がエラードライブ5での空きブロックの不足である場合(ステップ132:YES)ストレージコントローラ4は、RAIDグループ2に含まれる空きチャンク(未割当ての物理チャンク)を、移動先として選択する(ステップ133)。RAIDグループ2は、物理チャンク内のデータを記憶するために必要な空きブロック数以上の空きブロックを有し、且つ、RAIDグループ1以外のRAIDグループのうちトータル消去回数が最も少ないRAIDグループである、具体的には、例えば、ストレージコントローラ4は、RAIDグループ1以外のRAIDグループの空きブロック数とトータル消去回数とを調べ、空きブロック数が必要ブロック数(物理チャンク内のデータを格納するために必要なブロック)数より多いRAIDグループのうち、トータル消去回数が最も少ないRAIDグループに基づく空きチャンクを、移動先として選択する。なお、「RAIDグループの空きブロック数」とは、そのRAIDグループに属する各ドライブの空きブロックカウンタ53の値のうち最も小さい値に、RAIDグループに属するドライブの台数を掛けた値のことである。「RAIDグループのトータル消去回数」とは、そのRAIDグループに属する各ドライブ5のトータル消去回数カウンタ57の値のうち最も大きい値のことであるとする。
次に、ストレージコントローラ4は、ライト失敗範囲を含む物理チャンク(移動元チャンク)から、ステップ133で選択した物理チャンク(移動先チャンク)へデータを移動する(ステップ134)。このとき、移動されるデータには、ライトに失敗したデータも含まれている。詳しくは、図12を参照して説明した通りである。
ストレージコントローラ4は、プール割当テーブル21を更新する(ステップ135)。具体的には、ストレージコントローラ4は、移動元チャンクに割り当てられている論理チャンクに対応したRAIDグループ番号24及び開始アドレス25を、移動元チャンクのRAIDグループ番号及び開始アドレスから、移動先チャンクのRAIDグループ番号及び開始アドレスに更新する。
そして、ストレージコントローラ4は、RAIDグループ1(移動元のRAIDグループ)に基づく全ての空きチャンクを、空きチャンクリスト22から抹消する(ステップ136)。これにより、RAIDグループ1に基づく物理チャンクが今後論理チャンクに割り当てられることを防ぐことができる。RAIDグループ1に対する書き込みの失敗は、空きブロック不足が原因であったので、このステップ136の処理により、今後再び空きブロック不足が原因で書き込みに失敗する可能性を軽減することができる。なお、ステップ136は、図18のステップ191に相当する。それ故、ステップ136が行われると、図18のステップ192以降が行われる。これにより、ステップ136を契機としてプール容量が枯渇した場合、管理者に警告を発することができる。
次に、ストレージコントローラ4は、移動元チャンクと、ステップ136で登録を抹消した空きチャンク(抹消チャンク)とに基づく全てのドライブ5(RAIDグループ1内のドライブ5)に対し、移動元チャンク及び抹消チャンクのドライブ5におけるアドレス範囲を指定した解放指示を送信する(ステップ137)。これにより、各ドライブ5で、セクタ解放処理(図6参照)が行われ、ストレージコントローラ4は、これらのドライブ5から、解放指示に対するレスポンスを受領する(ステップ138)。
RAIDグループ1において解放され空きブロックとされた物理ブロックは、RAIDグループ1に基づくいずれかの論理ブロックに割当て可能である。例えば、RAIDグループ1に基づくいずれかの割当て済み物理チャンクに対してデータの書き換えが頻繁に行われた場合、その物理チャンクに基づく論理ブロックに、RAIDグループ1内の空きブロックの割当てが可能である。
ところで、本実施形態では、或るドライブ5内のフラッシュチップ43が故障した場合、以下に説明するチップ障害ハンドリング処理によって、障害が生じたフラッシュチップ(以下、障害チップ)43に格納されていたデータを復元することができる。
図14は、RAID5(3D+1P)のRAIDグループについてのフラッシュメモリデータ回復処理の説明図である。
ドライブD内の或るフラッシュチップ43が故障した場合、ストレージコントローラ4は、障害チップ43に格納されている各セクタデータ(セクタサイズのデータ)について、
(a)障害チップ43内のデータを含んだデータセット内の他のデータを記憶する、他のドライブA〜C内の良品チップ(故障の生じていないチップ)から、データを読み出す;
(b)読みだされたデータを用いたパリティ演算を行うことで、障害チップ43内のデータを復元する;
(c)復元したデータを、障害チップ43を含んだドライブD内のいずれかの良品チップに格納する、
を行う。なお、「データセット」は、RAIDグループに書き込まれるデータの単位である。例えば、RAID5であれば、複数のユーザデータとそれに基づいて生成されたパリティデータとを含んだデータである。
ところで、論理アドレス(LBA)と物理アドレス(フラッシュメモリチップ番号/ブロック番号)との対応関係は、ドライブ5内で管理されているため、或るフラッシュチップ43が故障した時点では、ストレージコントローラ4は、どの論理アドレスのデータが失われたか分からない。そこで、ストレージコントローラ4は、
(方法1)データが失われた範囲をドライブ5に問い合わせ、回答された範囲について、データ復元処理を行う;
(方法2)ドライブ5全体に対してデータ復元処理を行う;
(方法3)ドライブ5の先頭から順にリードし、リードできなかった箇所について、データ復元処理を行う、
の少なくとも一つの方法に従って、フラッシュメモリデータ回復処理を行う。
図15は、方法1に従うフラッシュメモリデータ回復処理の一例を示すフローチャートである。
ストレージコントローラ4は、論理アドレス空間上の故障範囲、すなわち、失われたデータのアドレス範囲(先頭アドレスおよびセクタ数)を、障害チップを含むドライブ(図14の例ではドライブDに相当、以下、「不良ドライブ」と呼ぶ)から取得する(ステップ151)。このとき、すべての故障範囲のリストを一度に取得するような方式も考えられるが、この例では、1箇所ずつ故障範囲が取得される。
もし、不良ドライブが有する障害チップ内の全データが回復済みであれば(ステップ152:YES)、ストレージコントローラ4からの問い合わせに対し、不良ドライブ内のドライブコントローラ220は、例えばNULLを返す。それを受けたストレージコントローラ4は、データ復元が完了したことを認識する。全てのデータを復元したら、ストレージコントローラ4は、このフラッシュメモリデータ回復処理を終了する。
一方、故障範囲が残っている場合(ステップ152:NO)、ストレージコントローラ4は、不良ドライブを含んだRAIDグループ内の他のドライブから、データ(ユーザデータ又はパリティデータ)を読み出す(ステップ153)。
次に、ストレージコントローラ4は、読み出したデータを用いたパリティ演算を行うことにより、失われたデータを復元する(ステップ154)。
次に、ストレージコントローラ4は、復元したデータを不良ドライブに書き込む(ステップ155)。このとき、不良ドライブ内のドライブコントローラ220は、復元したデータを、良品チップ(正常なフラッシュチップ)内の空きブロックに書き込む。
ただし、不良ドライブ内には、この書き込みに必要な空きブロックが残っておらず、それ故、書き込みに失敗する可能性がある。
もし、書き込みに失敗したならば(ステップ156:YES)、図13に示したライトエラーハンドリング処理が行われる(ステップ157)。こうすることで、データを適宜別のRAIDグループへ移すことができる。
図16は、方法2に従うフラッシュメモリデータ回復処理の一例を示すフローチャートである。方法2によれば、不良ドライブ5全体についてデータ復元を行う。
ストレージコントローラ4は、不良ドライブの全域を指定した解放指示を不良ドライブに送信する(ステップ162)。これにより、不良ドライブにおいてセクタ解放処理(図6参照)が行われ、その結果、不良ドライブの全領域(論理アドレス0から最終論理アドレスまで)に割り当てられていた全ての物理ブロックが解放される。
次に、ストレージコントローラ4は、不良ドライブの先頭の物理ブロックを処理対象として選択する(ステップ163)。
次に、ストレージコントローラ4は、不良ドライブを含んだRAIDグループ内の他のドライブから、ステップ163で選択した処理対象の物理ブロック内のデータを含んだデータセットに含まれるデータ(ユーザデータ又はパリティデータ)を読み出す(ステップ164)。
次に、ストレージコントローラ4は、読み出したデータを用いたパリティ演算を行うことにより、失われたデータ(ステップ163で選択した処理対象の物理ブロック内のデータ)を復元する(ステップ165)。
次に、ストレージコントローラ4は、復元したデータを不良ドライブに書き込む(ステップ166)。もし、書き込みに失敗したならば(ステップ167:YES)、ライトエラーハンドリング処理(図13参照)が行われる(ステップ168)。
ストレージコントローラ4は、不良ブロックにおける次の物理ブロックを処理対象として選択する(ステップ169)。
不良ブロック内の全ての物理ブロックについてステップ164以降が行われた場合(ステップ169で物理ブロックを選択できなかった場合)(ステップ170:YES)、このフラッシュメモリデータ回復処理は完了となる。まだ、処理すべき物理ブロックが残っていた場合(ステップ169で物理ブロックを選択できた場合)(ステップ170:NO)、ステップ164以降の処理が行われる。
図17は、方法3に従うフラッシュメモリデータ回復処理の一例を示すフローチャートである。方法3によれば、ストレージコントローラ4は、不良ドライブの先頭から順にリードを行い、リードできなかった箇所についてデータ復元処理を行う。
ストレージコントローラ4は、不良ドライブから、ブロックサイズを表す情報を取得する(ステップ171)。
次に、ストレージコントローラ4は、不良ドライブの先頭の物理ブロックを処理対象として選択する(ステップ172)。
次に、ストレージコントローラ4は、不良ドライブ内の処理対象の物理ブロックからデータをリードする(ステップ173)。
もし、リードに失敗したならば(ステップ174:YES)、ストレージコントローラ4は、ステップ175〜177を行う。すなわち、ストレージコントローラ4は、不良ドライブを含んだRAIDグループ内の他のドライブから、ステップ173で選択した処理対象の物理ブロック内のデータを含んだデータセットに含まれるデータ(ユーザデータ又はパリティデータ)を読み出す(ステップ175)。ストレージコントローラ4は、読み出したデータを用いたパリティ演算を行うことにより、失われたデータ(ステップ173で選択した処理対象の物理ブロック内のデータ)を復元する(ステップ176)。ストレージコントローラ4は、復元したデータを不良ドライブに書き込む(ステップ177)。もし、その書き込みに失敗したならば(ステップ178:YES)、ライトエラーハンドリング処理(図13参照)が行われる(ステップ179)。
ストレージコントローラ4は、ステップ174:NO、又は、ステップ178:NOの場合、不良ドライブ内の次の物理ブロックを処理対象として選択する(ステップ180)。
全ての物理ブロックに対して処理が行われた場合(ステップ180で物理ブロックを選択できなかった場合)(ステップ181:YES)、このフラッシュメモリデータ回復処理は完了となる。まだ処理すべきブロックが残っていた場合(ステップ180で物理ブロックを選択できた場合)(ステップ181:NO)、ステップ173以降の処理が行われる。
ところで、ドライブ5内の空きブロック不足やフラッシュチップ43の故障に伴い、空きチャンクリスト22から空きチャンクの登録が抹消されることがある。このため、プールの容量が減少する。空きチャンクが無くなると、物理チャンクの割当ができず、それ故、ホスト計算機2からのライト要求に付随するデータを記憶できなくなる可能性がある。そうなる前に、プールの容量を増やす(空きチャンクを増やす)ことが望ましい。
そこで、ストレージコントローラ4は、空きチャンクの抹消時にプール使用率(=プール使用量/プール容量)を計算し、算出されたプール使用率が所定の閾値を超えた場合、管理サーバ3に警告を送信する。なお、「プール容量」とは、プールに登録された物理チャンクの総容量である。「プール使用量」とは、プールに登録された物理チャンクのうち論理チャンクに割り当てられている物理チャンクの総容量である。プール使用率を計算する契機は、前述のもののほか、プール使用量が増えたときがあっても良い。
図18は、空きチャンク抹消処理の一例を示すフローチャートである。
ストレージコントローラ4は、空きチャンクリスト22から、登録抹消対象の物理チャンクのエントリを消す(ステップ191)。
次に、ストレージコントローラ4は、プール容量から、抹消した物理チャンクの容量を差し引く(ステップ192)。
次に、ストレージコントローラ4は、プール使用率を計算する(ステップ193)。
算出されたプール使用率が所定の閾値を超えている場合(ステップ194:YES)、ストレージコントローラ4は、管理サーバ3に警告を送信する(ステップ195)。
さて、ストレージシステム1において、複数のドライブのデータ(ユーザデータ)を用いてパリティデータ(例えばエラー訂正コード)が作成される場合(例えば、RAID5やRAID6の場合)、解放範囲を決定する上で、次のような工夫が考えられる。
例えば、或るユーザデータD1、D2及びD3からパリティデータP1が作られ、各ユーザデータD1〜D3およびパリティデータP1が、4つのドライブ(一つのRAIDグループ)に格納されるとする。また、解放された領域に対するリード指示をドライブ5が受けた場合、そのドライブ5が返すデータは、不定であるとする。そして、例えば、ホスト計算機2からの解放要求に従って、D1が格納されている領域のみを解放し、その後に、D2を格納したドライブが故障した場合を考える。このとき、ストレージコントローラ4は、ユーザデータD1及びD3とパリティデータP1とを三つのドライブからリードしてユーザデータD2を復元しようとするが、ユーザデータD1は不定なので、誤ったデータが作られるおそれがある。
したがって、データの整合性を保つためには、データセットに含まれる全てのユーザデータが格納された論理セクタ(論理ユニットにおける論理セクタ)が解放された場合にのみ当該データセットが格納された論理セクタ(ドライブが管理する論理セクタ)が解放対象とされるよう、解放範囲を修正する必要がある。
図19は、解放範囲の修正の一例の説明図である。なお、この図では、RAID5(3D+1P)の例を示しているが、他のRAIDタイプ(RAIDレベル、及び/又は、RIDグループを構成するドライブ数)でも同様の方法を適用することができる。
RAIDグループの記憶空間は、複数のストライプ列で構成されている。一つのストライプ列は、そのRAIDグループを構成する複数のドライブにそれぞれ対応した複数のストライプで構成されている。図19の例によれば、一つのストライプ列は、四つのストライプで構成されている。一つのストライプが、一つのドライブに基づいている。各ストライプには、ユーザデータ又はパリティデータが格納される。
以下、パリティデータの基になる複数のユーザデータが格納される複数のストライプに相当する領域を「パリティサイクル領域」という。図19の例によれば、三つのストライプ毎にパリティデータが作られるため、パリティサイクル領域のサイズは、ストライプサイズの3倍である。
例えば、ホスト計算機2からの解放要求で指定されているアドレス範囲が、パリティサイクル領域の範囲の境界に合っていない場合、ストレージコントローラ4は、その解放範囲をパリティサイクルの境界に合うように補正する。すなわち、ホスト計算機2から指定された解放範囲を解放範囲Aとした場合、ドライブ5に指定する解放範囲Bは、解放範囲A内の先頭のパリティサイクル領域の先頭のセクタから、解放範囲A内の末尾のパリティサイクルの末尾のセクタまでである。
図20は、解放範囲修正処理の一例を示すフローチャートである。
まず、ストレージコントローラ4は、先頭のアドレスを、パリティサイクル領域の境界に合うように補正する(ステップ211)。具体的には、ホスト計算機2から指定された解放範囲の先頭アドレスをS、パリティサイクル領域のサイズをPとすると、修正された先頭アドレスS’は、次の式(1)、
S’=int((S+(P−1))/P)× P ・・・(1)
で求められる。ただし、int(A)は、Aを超えない最大の整数を表す。
次に、ストレージコントローラ4は、終端のアドレスを、パリティサイクル領域の境界に合うように補正する(ステップ212)。具体的には、ホスト計算機2から指定された解放範囲の終端アドレスをE、パリティサイクル領域のサイズをPとすると、修正された終端アドレスE’は、次の式(2)、
E’=int((E+1)/P)× (P−1) ・・・(2)
で求められる。
次に、ストレージコントローラ4は、修正された先頭アドレスS’から修正された終端アドレスE’までに対応する各ドライブ上のセクタと、この範囲のデータに対応するパリティデータが格納された各ドライブ上のセクタとを、解放すべきセクタとして選択する(ステップ213)。ここで選択されたセクタに相当するアドレスを指定した解放指示が、ストレージコントローラ4からドライブ5に送信される。
ところで、図14等を参照して、フラッシュチップ43が故障した場合に行われるフラッシュメモリデータ回復処理を説明したが、故障の原因が、フラッシュチップ43の経年変化(ブロック消去による劣化を含む)やドライブ5内の共通部品に起因するものであった場合は、復元したデータを不良ドライブ5へ格納しても、再び故障が起こるおそれがある。
そこで、フラッシュチップ43の偶発的な故障以外の場合は、不良ドライブとは別のドライブ(例えば、予め搭載されているスペアドライブのような新しいドライブ)に、復元されたデータが格納されてもよい。
図21は、データ回復処理の一例を示すフローチャートである。
このデータ回復処理によれば、すでに説明したフラッシュメモリデータ回復処理を行うか、或いは、その処理を行わず別の処理を行うかが判断される。
まず、ストレージコントローラ4は、ドライブに起こった故障が、フラッシュチップ43の偶発的故障であったか否かを判断する(ステップ221)。具体的には、例えば、ストレージコントローラ4は、下記(X)及び(Y):
(X)不良ドライブの消去回数が所定の閾値を超えたか否か;
(Y)不良ドライブの製造年月日から一定の期間が経過したか否か、
のうちの少なくとも一つの結果が肯定的であれば、偶発的故障ではないと判断する。
ステップ221の判断の結果が肯定的の場合(ステップ221:YES)、前述したフラッシュメモリフラッシュメモリデータ回復処理(図15〜図17のいずれかの処理)が行われる(ステップ222)。
一方、ステップ221の判断の結果が否定的の場合(ステップ221:NO)、ストレージコントローラ4は、不良ドライブ内のすべてのデータを、不良ドライブを含んだRAIDグループ内の他のドライブに格納されたデータを用いて復元し、復元したデータを、新しいドライブに書き込む(ステップ223)。
さて、以上の説明によれば、物理ブロックの解放の契機として幾つかの契機があるが、上記の契機に限らず、他の契機を採用可能である。例えば、ホスト計算機2から解放要求という明示的な要求を受けた契機に限らず、特定のパターンのデータ(以下、パターンデータ)が繰り返し書き込まれることを意味する非明示的な要求を受けた場合であっても、物理ブロックの解放を行うことができる。ここで言う非明示的な要求は、パターンデータが繰り返し書き込まれることになる通常のライト要求であっても良いし、パターンデータを繰り返し書き込むことを明示したライトセイム要求(例えばSCSIコマンドにおけるWRITE SAMEコマンド)であってもよい。ライトセイム要求とは、指定した領域全体に、指定したパターンデータ(例えば全ビット0)を書かせる要求である。例えば、実チャンクが割り当てられていない論理チャンクのアドレスを指定したリード要求に対し、ストレージコントローラ4が全ビット0のデータを返送すると決めておけば、ライトセイム要求等によって物理チャンク内のデータが全ビット0になったときに、ストレージコントローラ4は、その物理チャンクを解放することができる。ドライブ5のブロックに関しても同様のことが可能である。例えば、フラッシュメモリ管理情報45に割当済セクタビットマップ58を含めるとしたが、ステップ73において割当済セクタビットマップ58を調べる代わりに、当該ブロック内のデータが全てゼロであるか否かを調べるようにすれば、割当済セクタビットマップ58を省くこともできる。
以上、本実施形態によれば、効率的に空きブロックが増えていく。これにより、ウェアレベリングの効率の向上が期待できる。
以上、本発明の一つの実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
例えば、ドライブコントローラ220は、ドライブ5の外に設けられても良い。その場合、ドライブコントローラ220の数は、フラッシュパッケージ230の数よりも多くても少なくても良い。具体的には、例えば、X個(Xは二以上の整数)のフラッシュパッケージ230につき一つのドライブコントローラ220が設けられても良い。この場合、一つのドライブコントローラ220は、X個のフラッシュパッケージ230のそれぞれについて、論理アドレスと物理アドレスとの対応関係などを管理する。
また、例えば、RAIDグループ間のデータ移動(チャンク単位のデータ移動)は、ストレージコントローラ4を介することなく行われても良い。具体的には、例えば、ストレージコントローラ4が、移動元アドレス及び移動先アドレスを、移動元及び/又は移動先に対応したドライブコントローラ220に通知し、移動元に対応したドライブコントローラ220と移動先に対応したドライブコントローラ220との間で、ストレージコントローラ4を介することなく、移動元チャンクに対応した論理ブロックに割り当てられている物理ブロック内のデータが、移動先チャンクに対応する論理ブロックに割り当てられる物理ブロックに移動されても良い。
1:ストレージシステム

Claims (4)

  1. 外部装置に接続されたストレージシステムであって、
    複数のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループを構成する複数のフラッシュパッケージと、
    前記複数のフラッシュパッケージに接続され前記外部装置からアクセス要求を受け付ける第1のコントローラと
    を備え、
    各フラッシュパッケージは、
    複数の物理ブロックで構成された複数のフラッシュチップと、
    前記複数のフラッシュチップに接続された第2のコントローラと
    を有し、
    前記第1のコントローラが、複数の論理チャンクで構成された仮想的な論理ユニットである仮想ユニットと、複数の物理チャンクとを管理し、
    前記複数の物理チャンクは、前記複数のRAIDグループに基づく複数の論理的な記憶領域であり、
    各物理チャンクは、いずれかのRAIDグループを構成する二以上のフラッシュパッケージに基づいており、
    一つの物理チャンクには、その一つの物理チャンクの基になっているRAIDグループについての複数の論理ブロックのうちの二以上の論理ブロックが割り当てられており、
    前記第1のコントローラは、どの論理チャンクにどの物理チャンクが割り当てられているかの仮想/実対応関係を管理し、
    前記第2のコントローラは、どの論理ブロックにどの一以上の物理ブロックが割り当てられているかの論理/物理対応関係と、その第2のコントローラがあるフラッシュパッケージが有する空きブロックの総数であるトータル空きブロック数とを管理し、
    前記第1のコントローラが受け付けたアクセス要求がライト要求の場合、前記第1のコントローラは、前記ライト要求を基に特定されるライト先の論理チャンクに物理チャンクが割り当てられているか否かを前記仮想/実対応関係を基に判断し、その判断の結果が否定的の場合、いずれかの未割当ての物理チャンクを前記ライト先の論理チャンクに割り当て、前記割り当てた物理チャンクに、前記ライト要求に付随するデータを書き込み、
    前記第1のコントローラは、物理チャンクにデータを書き込む場合、その物理チャンクに従うアドレスを指定したライト指示を、そのアドレスを管理する第2のコントローラに送信し、そのライト指示を受けた第2のコントローラが、そのライト指示で指定されているアドレスを有する論理ブロックに割り当てられた物理ブロックに、そのライト指示の対象のデータを書き込み、
    前記第1のコントローラは、物理チャンクからデータを読み出す場合、前記第1のコントローラは、その物理チャンクに従うアドレスを指定したリード指示を、そのアドレスを管理する第2のコントローラに送信し、そのリード指示を受けた第2のコントローラが、そのリード指示で指定されているアドレスを有する論理ブロックに割り当てられている物理ブロックを前記論理/物理対応関係を基に特定し、特定された物理ブロックからデータを読み出し、そのデータを前記第1のコントローラに送信し、
    前記第2のコントローラは、或るライト指示に従う書き込みに失敗した場合、ライトエラーを前記第1のコントローラに応答し、
    前記第1のコントローラは、前記或るライト指示の送信先の第2のコントローラからライトエラーを受けた場合、前記送信先の第2のコントローラに対応したフラッシュパッケージのトータル空きブロック数が所定の閾値未満か否かを判断し、その判断の結果が肯定的である場合にライトエラーハンドリング処理を実行し、
    前記ライトエラーハンドリング処理において、
    (H1)前記第1のコントローラが、前記或るライト指示に従うライト先領域に関わる物理チャンクを特定し;
    (H2)前記第1のコントローラが、前記ライト先領域を有するフラッシュパッケージを含んだRAIDグループである第1のRAIDグループとは別の第2のRAIDグループを選択し;
    (H3)前記第1のコントローラが、前記特定された物理チャンクである第1の物理チャンクからデータを読み出し、読み出したデータを、前記第2のRAIDグループが基になっている複数の物理チャンクのうちの未割当ての物理チャンクである第2の物理チャンクに書き込み;
    (H4)前記第1のコントローラが、前記第1の物理チャンクの割当先の論理チャンクに対し、前記第1の物理チャンクに代えて前記第2の物理チャンクを割り当て;
    (H5)前記第1のコントローラが、前記第1のRAIDグループに基づく全ての未割当ての物理チャンクを管理対象から外し、
    (H6)前記第1のコントローラが、前記第1のRAIDグループを構成する各フラッシュパッケージが有する各第2のコントローラに、前記第1の物理チャンクに従うアドレスを含んだ解放指示と、管理対象から外された未割当ての物理チャンクに従うアドレスを含んだ解放指示とを送信し、解放指示を受けた第2のコントローラが、その解放指示で指定されているアドレスを有する論理ブロック部分に対応する物理ブロック部分を特定し、特定された物理ブロック部分を解放可能として管理し、解放可能として管理された物理ブロック部分を有する物理ブロックの全域が解放可能か否かを判断し、その判断の結果が肯定的の場合に、その物理ブロックを、その物理ブロックの割当先の論理ブロックから解放し、前記解放された物理ブロックを空きブロックとして管理し、
    前記第1のコントローラは、未割当ての物理チャンクを管理対象から外したことに伴って物理チャンクの数に対する割当て済み物理チャンクの数の比率が所定の閾値を超えた場合、警告を発する、
    ストレージシステム。
  2. 前記第2のコントローラは、解放する物理ブロックに対して消去処理を行い消去処理が施された物理ブロックを空きブロックとして管理するようになっており
    前記第1のコントローラは、各フラッシュパッケージのトータル消去回数を管理し、
    前記トータル消去回数は、そのトータル消去回数に対応するフラッシュパッケージが有する各物理ブロックに対する消去処理回数の合計であり、
    前記第2のRAIDグループは、書込み対象のデータを記憶するために必要な空きブロック数以上の空きブロックを有し、且つ、前記第1のRAIDグループ以外のRAIDグループのうちトータル消去回数が最も少ないRAIDグループである、
    請求項記載のストレージシステム。
  3. 前記第1のコントローラは、第1のRAIDグループ内の第1のフラッシュパッケージ内の第1のフラッシュチップに障害が発生した場合、前記第1のRAIDグループ内の、前記第1のフラッシュパッケージ以外のフラッシュパッケージからそれぞれデータを読み出し、読み出されたデータを用いて、前記第1のフラッシュチップ内のデータを復元し、復元されたデータを、前記第1のフラッシュパッケージ内の前記第1のフラッシュチップ以外のいずれかのフラッシュチップに書き込む、
    請求項1又は2記載のストレージシステム。
  4. 前記第2のコントローラは、各物理ブロックの消去回数を管理し、
    前記第2のコントローラは、解放される物理ブロックに対して消去処理を行った際に、消去処理が行われた物理ブロックの消去回数が所定の閾値を超えたか否かを判断し、の判断の結果が否定的の場合、前記消去処理が行われた物理ブロックを空きブロックとして管理し、その判断の結果が肯定的の場合、前記消去処理が行われた物理ブロックを割当て不可能な物理ブロックとして管理する、
    請求項1乃至のうちのいずれか1項に記載のストレージシステム。
JP2011544717A 2009-08-31 2009-08-31 複数のフラッシュパッケージを有するストレージシステム Expired - Fee Related JP5342014B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/004259 WO2011024239A1 (en) 2009-08-31 2009-08-31 Storage system having plurality of flash packages

Publications (2)

Publication Number Publication Date
JP2012523594A JP2012523594A (ja) 2012-10-04
JP5342014B2 true JP5342014B2 (ja) 2013-11-13

Family

ID=41800457

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011544717A Expired - Fee Related JP5342014B2 (ja) 2009-08-31 2009-08-31 複数のフラッシュパッケージを有するストレージシステム

Country Status (3)

Country Link
US (1) US8484414B2 (ja)
JP (1) JP5342014B2 (ja)
WO (1) WO2011024239A1 (ja)

Families Citing this family (149)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010109674A1 (en) * 2009-03-24 2010-09-30 Hitachi, Ltd. Storage apparatus and its data control method
US8988800B1 (en) 2009-09-15 2015-03-24 Marvell International Ltd. Error correction for storage devices
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
US8751740B1 (en) * 2010-03-31 2014-06-10 Emc Corporation Systems, methods, and computer readable media for performance optimization of storage allocation to virtual logical units
US9285993B2 (en) 2010-08-30 2016-03-15 Vmware, Inc. Error handling methods for virtualized computer systems employing space-optimized block devices
US9411517B2 (en) 2010-08-30 2016-08-09 Vmware, Inc. System software interfaces for space-optimized block devices
US8850114B2 (en) * 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
KR20120072228A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 플래시 메모리의 파일 시스템
US9009426B1 (en) * 2010-12-30 2015-04-14 Emc Corporation Methods, computer readable media, and systems for optimizing cache utilization
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US8700879B2 (en) * 2011-08-31 2014-04-15 Micron Technology, Inc. Concurrent memory operations
WO2013048493A1 (en) 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
US9069657B2 (en) * 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
JP5853734B2 (ja) * 2012-02-02 2016-02-09 富士通株式会社 仮想ストレージ装置,制御装置及び制御プログラム
CN104106038A (zh) * 2012-03-13 2014-10-15 株式会社日立制作所 具有带有非易失性半导体存储器的非易失性半导体存储设备的存储系统
US8930745B2 (en) * 2012-04-16 2015-01-06 Hitachi, Ltd. Storage subsystem and data management method of storage subsystem
US8898405B2 (en) * 2012-06-12 2014-11-25 Storart Technology Co. Ltd Method for static wear leveling in non-violate storage device
TWI492051B (zh) * 2012-09-05 2015-07-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體控制方法
US10180901B2 (en) * 2012-10-19 2019-01-15 Oracle International Corporation Apparatus, system and method for managing space in a storage device
US9235344B2 (en) * 2012-11-28 2016-01-12 International Business Machines Corporation Identifying redundant data for disk image streaming
DE112013006504B4 (de) 2013-01-25 2022-06-15 Hitachi, Ltd. Speichersystem und Datenverwaltungsverfahren
US9514041B2 (en) 2013-03-08 2016-12-06 Kabushiki Kaisha Toshiba Memory controller and memory system
JP2014211849A (ja) * 2013-04-22 2014-11-13 富士通株式会社 ストレージ制御装置、ストレージ装置、および制御プログラム
JP6164003B2 (ja) * 2013-09-25 2017-07-19 富士通株式会社 メモリ制御装置、情報処理装置、及び情報処理装置の制御方法
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9431052B2 (en) 2014-06-26 2016-08-30 Marvell World Trade Ltd. Two dimensional magnetic recording systems, devices and methods
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9632702B2 (en) * 2014-10-15 2017-04-25 International Business Machines Corporation Efficient initialization of a thinly provisioned storage array
JP6142860B2 (ja) * 2014-11-05 2017-06-07 日本電気株式会社 ディスクアレイ装置、ディスク制御装置、ソリッドステートドライブ、ディスク制御方法、及びそのためのプログラム
US10528272B2 (en) 2015-02-20 2020-01-07 International Business Machines Corporation RAID array systems and operations using mapping information
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
JP6453457B2 (ja) * 2015-06-04 2019-01-16 株式会社日立製作所 ストレージ装置
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10275160B2 (en) 2015-12-21 2019-04-30 Intel Corporation Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
JP2017219913A (ja) * 2016-06-03 2017-12-14 富士通株式会社 ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム
KR102573301B1 (ko) 2016-07-15 2023-08-31 삼성전자 주식회사 Raid 리커버리를 수행하는 메모리 시스템 및 그 동작방법
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10200376B2 (en) 2016-08-24 2019-02-05 Intel Corporation Computer product, method, and system to dynamically provide discovery services for host nodes of target systems and storage resources in a network
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10176116B2 (en) 2016-09-28 2019-01-08 Intel Corporation Computer product, method, and system to provide discovery services to discover target storage resources and register a configuration of virtual target storage resources mapping to the target storage resources and an access control list of host nodes allowed to access the virtual target storage resources
US10545861B2 (en) 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10795860B1 (en) 2017-04-13 2020-10-06 EMC IP Holding Company LLC WAN optimized micro-service based deduplication
US10795859B1 (en) 2017-04-13 2020-10-06 EMC IP Holding Company LLC Micro-service based deduplication
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10949088B1 (en) 2017-07-21 2021-03-16 EMC IP Holding Company LLC Method or an apparatus for having perfect deduplication, adapted for saving space in a deduplication file system
US10860212B1 (en) 2017-07-21 2020-12-08 EMC IP Holding Company LLC Method or an apparatus to move perfect de-duplicated unique data from a source to destination storage tier
US10459633B1 (en) 2017-07-21 2019-10-29 EMC IP Holding Company LLC Method for efficient load balancing in virtual storage systems
US11461269B2 (en) 2017-07-21 2022-10-04 EMC IP Holding Company Metadata separated container format
US10936543B1 (en) * 2017-07-21 2021-03-02 EMC IP Holding Company LLC Metadata protected sparse block set for SSD cache space management
US11113153B2 (en) 2017-07-27 2021-09-07 EMC IP Holding Company LLC Method and system for sharing pre-calculated fingerprints and data chunks amongst storage systems on a cloud local area network
US10481813B1 (en) 2017-07-28 2019-11-19 EMC IP Holding Company LLC Device and method for extending cache operational lifetime
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10929382B1 (en) 2017-07-31 2021-02-23 EMC IP Holding Company LLC Method and system to verify integrity of a portion of replicated data
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US11093453B1 (en) 2017-08-31 2021-08-17 EMC IP Holding Company LLC System and method for asynchronous cleaning of data objects on cloud partition in a file system with deduplication
US10852966B1 (en) * 2017-10-18 2020-12-01 EMC IP Holding Company, LLC System and method for creating mapped RAID group during expansion of extent pool
KR20190044968A (ko) * 2017-10-23 2019-05-02 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
CN110688056B (zh) * 2018-07-05 2024-10-01 北京忆恒创源科技股份有限公司 Nvm组的存储介质替换
KR102702680B1 (ko) * 2018-08-06 2024-09-05 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
CN111104047B (zh) * 2018-10-25 2023-08-25 伊姆西Ip控股有限责任公司 管理冗余磁盘阵列的方法、设备和计算机可读存储介质
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
JP6857673B2 (ja) 2019-02-14 2021-04-14 株式会社日立製作所 マルチストレージノードシステム、マルチストレージノードシステムの容量管理方法
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
CN111158604B (zh) * 2019-12-31 2022-02-11 西南科技大学 一种闪存颗粒阵列的物联网时间序列数据存储与检索方法
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
WO2022040914A1 (en) * 2020-08-25 2022-03-03 Micron Technology, Inc. Unmap backlog in a memory system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
CN113760781A (zh) * 2021-03-05 2021-12-07 北京京东乾石科技有限公司 数据处理方法、装置、电子设备及存储介质
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11836073B2 (en) * 2022-04-27 2023-12-05 Dell Products L.P. Storage device operating data counter system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3231832B2 (ja) 1991-11-26 2001-11-26 株式会社日立製作所 フラッシュメモリを記憶媒体とした半導体ディスク
TW261687B (ja) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
JP4426262B2 (ja) 2003-11-26 2010-03-03 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の障害回避方法
JP2007293442A (ja) 2006-04-21 2007-11-08 Hitachi Ltd ストレージシステム及びその制御方法
JP2007304794A (ja) * 2006-05-10 2007-11-22 Hitachi Ltd ストレージシステム及びストレージシステムにおける記憶制御方法
JP4842719B2 (ja) 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
JP4871701B2 (ja) * 2006-11-02 2012-02-08 株式会社日立製作所 ストレージシステム
JP2008123314A (ja) * 2006-11-14 2008-05-29 Nec Electronics Corp 半導体記憶装置への情報記録方法及び情報記録システム
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US20080140724A1 (en) * 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for servicing object requests within a storage controller
JP2008146574A (ja) 2006-12-13 2008-06-26 Hitachi Ltd 記憶制御装置及び記憶制御方法
JP5042660B2 (ja) 2007-02-15 2012-10-03 株式会社日立製作所 ストレージシステム
JP2008217811A (ja) * 2008-04-03 2008-09-18 Hitachi Ltd 不揮発メモリを使用したディスク制御装置
US20100017649A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation Data storage system with wear-leveling algorithm

Also Published As

Publication number Publication date
US8484414B2 (en) 2013-07-09
US20110231594A1 (en) 2011-09-22
WO2011024239A1 (en) 2011-03-03
JP2012523594A (ja) 2012-10-04

Similar Documents

Publication Publication Date Title
JP5342014B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
US10459639B2 (en) Storage unit and storage system that suppress performance degradation of the storage unit
JP5192352B2 (ja) 記憶装置及びデータ格納領域管理方法
JP5437373B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP5792313B2 (ja) ストレージシステム
US20180275894A1 (en) Storage system
JP6279620B2 (ja) ストレージ装置
US10545684B2 (en) Storage device
US20170308316A1 (en) Virtual storage system
WO2009130848A1 (ja) ストレージシステム及びストレージシステムの制御方法
WO2010109674A1 (en) Storage apparatus and its data control method
US20140075099A1 (en) Control method and memory system of non-volatile semiconductor memory
JP6817340B2 (ja) 計算機
JP5768118B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP7140807B2 (ja) 仮想ストレージシステム
JP6138318B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP5945040B2 (ja) 複数のフラッシュパッケージを有するストレージシステム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130426

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130808

R150 Certificate of patent or registration of utility model

Ref document number: 5342014

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees