JP2015501960A - 不揮発半導体メモリを含んだ不揮発半導体記憶デバイスを有するストレージシステム - Google Patents

不揮発半導体メモリを含んだ不揮発半導体記憶デバイスを有するストレージシステム Download PDF

Info

Publication number
JP2015501960A
JP2015501960A JP2014528734A JP2014528734A JP2015501960A JP 2015501960 A JP2015501960 A JP 2015501960A JP 2014528734 A JP2014528734 A JP 2014528734A JP 2014528734 A JP2014528734 A JP 2014528734A JP 2015501960 A JP2015501960 A JP 2015501960A
Authority
JP
Japan
Prior art keywords
area
data
page
pages
logical volume
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.)
Granted
Application number
JP2014528734A
Other languages
English (en)
Other versions
JP5882467B2 (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 JP2015501960A publication Critical patent/JP2015501960A/ja
Application granted granted Critical
Publication of JP5882467B2 publication Critical patent/JP5882467B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

ストレージシステムが、ホストに接続されており、複数のページで構成された不揮発半導体メモリを含んだ不揮発半導体記憶デバイスと、その半導体記憶デバイスに接続されたストレージコントローラとを有する。不揮発半導体記憶デバイスに基づく論理ボリュームの領域の基になっている複数のページに格納されているデータが不要となる場合に、ストレージコントローラが、不要となるデータが格納されている領域の基になっているページの数を低減させるための不要低減要求を不揮発半導体記憶デバイスに送信する。不揮発半導体記憶デバイスは、その不要低減要求に基づいて、不要となるデータが格納されている領域の基になっている複数のページを無効とする。【選択図】図45

Description

本発明は、不揮発半導体メモリを含んだ不揮発半導体記憶デバイスを有するストレージシステムに関する。
ストレージシステムは、一般に、複数の記憶デバイスで構成されたRAID(Redundant Array of Independent Disks)グループに基づいて作成された論理ボリュームを、上位装置(例えばホスト)へ提供する。近年、記憶デバイスとしては、HDD(Hard Disk Drive)に加えて又は代えて、複数の不揮発メモリチップを有する不揮発半導体記憶デバイスが採用されている。不揮発半導体記憶デバイスとして、例えば、複数のフラッシュメモリチップ(以下、FMチップ)を有するフラッシュメモリデバイスが採用される。フラッシュメモリデバイスを有するストレージシステムとして、例えば、特許文献1に記載された技術が知られている。
米国特許出願第2011/0231594号明細書
フラッシュメモリデバイスにおいては、論理アドレスに対応付けられているページのデータ(有効データ)については、例えば、リフレッシュや、リクラメーションの対象となる。すなわち、有効データがページから読み出されて別のページへ書き込まれる処理が実行される。
ここで、フラッシュメモリデバイスの上位装置において、有効データが不要となるような状況が発生することがあるが、フラッシュメモリデバイス自身は、そのような状況を把握することができず、不要であるデータを、有効データとして管理し続けてしまう。すなわち、有効データが、不要なデータであるにもかかわらず、リフレッシュ及びリクラメーションの対象として管理されてしまうこととなる。この結果、不要なデータのページへの書込みが発生し、フラッシュメモリデバイスの寿命が短くなってしまう。
以上のような問題は、フラッシュメモリデバイス以外の不揮発半導体記憶デバイスを有するストレージシステムについてもあり得る。
ストレージシステムが、ホストに接続されており、複数のページで構成された不揮発半導体メモリを含んだ不揮発半導体記憶デバイスと、その半導体記憶デバイスに接続されたストレージコントローラとを有する。不揮発半導体記憶デバイスに基づく論理ボリュームの領域の基になっている複数のページに格納されているデータが不要となる場合に、ストレージコントローラが、不要となるデータが格納されている領域の基になっているページの数を低減させるための不要低減要求を不揮発半導体記憶デバイスに送信する。不揮発半導体記憶デバイスは、その不要低減要求に基づいて、不要となるデータが格納されている領域の基になっている複数のページを無効とする。
図1は、実施例に係る計算機システムの構成例を示す。 図2は、実施例に係るRAIDコントローラの構成例を示す。 図3は、実施例に係るフラッシュメモリデバイスの構成例を示す。 図4は、実施例に係るフラッシュメモリパッケージの構成例を示す。 図5は、実施例に係るフラッシュメモリチップの構成例を示す。 図6は、実施例に係るフラッシュメモリチップにおけるデータの更新を説明する図である。 図7は、実施例に係るページの状態遷移を説明する図である。 図8は、実施例に係るフラッシュメモリチップにおけるデータ消去を説明する図である。 図9は、実施例に係るリクラメーションを説明する図である。 図10は、実施例に係るブロックの状態遷移を説明する図である。 図11は、実施例に係る動的領域割り当て処理を説明する図である。 図12は、実施例に係る動的エクステント領域割り当て処理を説明する図である。 図13は、実施例に係るティア間動的マイグレーションを説明する図である。 図14は、実施例に係るティア間動的マイグレーション後の固定パターンデータライト処理を説明する図である。 図15は、実施例に係る固定パターンデータライト処理の第1の例を説明する図である。 図16は、実施例に係る固定パターンデータライト処理の第2の例を説明する図である。 図17は、実施例に係る固定パターンデータライト処理の第3の例を説明する図である。 図18は、実施例に係る固定パターンデータライト処理の第4の例を説明する図である。 図19は、実施例に係るアンマップ要求を説明する図である。 図20は、実施例に係るスナップショット作成処理を説明する図である。 図21は、実施例に係るスナップショット作成処理の他の例を説明する図である。 図22は、実施例に係るスナップショット削除に伴う不要なデータを説明する図である。 図23は、実施例に係るスナップショット削除後の固定パターンデータライト処理を説明する図である。 図24は、実施例に係る論物変換テーブルの一例を示す。 図25は、実施例に係る物論変換テーブルの一例を示す。 図26は、実施例に係るプール管理テーブルの一例を示す。 図27は、実施例に係る動的領域割り当てテーブルの一例を示す。 図28は、実施例に係る動的エクステント領域割り当てテーブルの一例を示す。 図29は、実施例に係るアクセス頻度テーブルの一例を示す。 図30は、実施例に係るペア管理テーブルの一例を示す。 図31は、実施例に係るスナップショットデータ割り当てテーブルの一例を示す。 図32は、実施例に係るライト処理のフローチャートの一例である。 図33は、実施例に係るブロック消去処理のフローチャートの一例である。 図34は、実施例に係るリクラメーションのフローチャートの一例である。 図35は、実施例に係る動的領域割り当て処理のフローチャートの一例である。 図36は、実施例に係る動的エクステント領域割り当て処理のフローチャートの一例である。 図37は、実施例に係るティア間動的マイグレーションのフローチャートの一例である。 図38は、実施例に係るスナップショット作成処理のフローチャートの一例である。 図39は、実施例に係るスナップショット削除処理のフローチャートの一例である。 図40は、実施例に係る第1の例の固定パターンデータライト処理のフローチャートの一例である。 図41は、実施例に係る第2の例の固定パターンデータライト処理のフローチャートの一例である。 図42は、実施例に係る第3の例の固定パターンデータライト処理のフローチャートの一例である。 図43は、実施例に係る第4の例の固定パターンデータライト処理のフローチャートの一例である。 図44は、実施例に係るアンマップ要求処理のフローチャートの一例である。 図45は、実施例の概要を示す。
以下、一実施例を、図面を参照して説明する。
なお、以下の説明では、要素(例えば、ページ、ブロック、フラッシュメモリチップ(FMチップ)、スイッチ(SW)、プール、物理ボリューム、論理ボリューム、仮想ボリューム等)を特定するために番号を含む識別情報が使用されるが、識別情報として、番号を含まない情報が使用されても良い。
また、以下の説明では、同種の要素を区別して説明する場合、要素名と参照符号との組合せに代えて、要素名と識別情報との組合せが使用されることがある。例えば、識別情報(識別番号)「0」のブロックを、「ブロック#0」と表記することがある。
また、以下の説明では、インタフェースデバイスを「I/F」と略記することがある。
また、以下の説明では、不揮発半導体メモリは、フラッシュメモリ(FM)であるとする。そのフラッシュメモリは、ブロック単位で消去が行われ、ページ単位でアクセスが行われる種類のフラッシュメモリ、典型的にはNAND型のフラッシュメモリであるとする。しかし、フラッシュメモリは、NAND型に代えて他種のフラッシュメモリ(例えばNOR型)でも良い。また、フラッシュメモリに代えて、他種の不揮発半導体メモリ、例えば相変化メモリが採用されても良い。
また、以下の説明では、不揮発半導体メモリは、前述したように、NAND型フラッシュメモリである。このため、ページとブロックという用語が使用される。また、或る論理領域(この段落において「対象論理領域」と言う)がライト先であり、且つ、対象論理領域に既にページ(この段落において「第1のページ」と言う)が割り当てられていて第1のページにデータが格納されている場合、対象論理領域には、第1のページに代えて、空きのページ(この段落において「第2のページ」と言う)が割り当てられ、第2のページにデータが書き込まれることになる。第2のページに書き込まれたデータが、対象論理領域にとって最新のデータであり、第1のページに格納されているデータは、対象論理領域にとって旧いデータとなる。以下、各論理領域について、最新のデータを「有効データ」と言い、旧いデータを「無効データ」と言うことがある。また、有効データを格納しているページを「有効ページ」と言い、無効データを格納しているページを「無効ページ」と言うことがある。
「ホスト」とは、ストレージシステムの上位装置(例えば計算機)である。
「仮想ボリューム(仮想VOL)」とは、仮想的な論理ボリューム(論理VOL)のことをいう。仮想VOLは、例えばホストに認識される。仮想VOLは、例えば、Thin Provisioningに従うボリュームでも良いし、後述のスナップショットVOLでも良い。
「論理ボリューム(論理VOL)」は、仮想VOLに割り当てられる記憶領域を含んでおり、論理VOLを有するストレージシステム内のRAIDグループ(複数のフラッシュメモリデバイス)に基づいていても良いし、ストレージシステムに接続された外部のストレージシステムの記憶デバイスに基づいていても良い。
「プール」とは、1又は複数の論理VOLを集めた領域のことをいう。
「プライマリボリューム(プライマリVOL)」とは、ホストからのI/O要求で指定されるオリジナルの論理VOLのことをいう。
「スナップショットボリューム(スナップショットVOL)」とは、プライマリVOLのスナップショットのイメージを表す仮想VOLである。
「物理ボリューム(物理VOL)」とは、物理的な記憶デバイスであり、例えば、SSD(Solid State Device)である。
「論理アドレス」とは、論理的(又は仮想的)な領域(例えば、仮想VOL、論理VOL、或いは、物理VOLが提供する論理領域)のアドレスである。
「物理アドレス」とは、物理的な領域(例えば、物理VOLが提供する論理領域に割り当てられる物理領域)のアドレスである。
「エクステント」とは、仮想VOLに割り当てられる論理領域である。プールを構成する論理VOLは、2以上のエクステントに分割されている。プールから仮想VOLにエクステントが割り当てられる。複数のエクステントのサイズは、同一であっても、異なっていても良い。エクステントのサイズは、典型的には、ホストのリード要求及びライト要求に従うデータのサイズ(単位サイズ)よりも大きい。
図45は、本実施例の概要を示す。
ストレージシステムが、SSDと、SSDに基づく論理VOLと、SSDに接続されたストレージコントローラとを有する。論理VOLに格納されるデータは、SSDに格納される。論理VOLに入出力されるデータの単位サイズである入出力サイズは、SSDが有するフラッシュメモリを構成するページのサイズよりも大きい。例えば、入出力サイズは、ページサイズの整数倍(N倍(Nは2以上の整数))、具体的には、入出力サイズはページサイズの3倍である。
論理VOLにおける論理領域内のデータは、所定のイベントの発生を契機に、ストレージシステムのホストにとって不要となる。所定のイベントとしては、例えば、データが論理領域から別の論理領域に移動される、及び、データを格納しているエクステントの割当て先の仮想VOLが削除される等がある。
ストレージコントローラは、その所定のイベントを契機に、ホストにとって不要なデータを格納している論理領域の基になっているSSDに、不要低減要求を送信する。不要低減要求は、ホストにとって不要なデータを格納している論理領域の基になるページの数を低減する要求である。SSDは、不要低減要求を受けた場合、ホストにとって不要なデータを格納している論理領域の基になる複数のページの少なくとも1つの状態を、有効から無効に変更する。
以下、本実施例を詳細に説明する。
図1は、本実施例に係る計算機システムの構成例を示す。
計算機システムは、ストレージシステム1と、ホスト200とを有する。ストレージシステム1、ホスト200の数は、それぞれ、1以上とすることができる。ストレージシステム1と、ホスト200とは、通信ネットワーク(例えば、SAN(Storage Area Network))を介して相互に接続されている。ストレージシステム1は、ホスト200で利用されるデータを記憶する。ホスト200は、各種処理を実行し、ストレージシステム1からデータを読み出したり、ストレージシステム1へデータを書き込んだりする。
ストレージシステム1は、複数の物理VOLと、それら複数の物理VOLに接続されたストレージコントローラ300とを有する。
複数の物理VOLは、複数種類の物理VOLを含む。少なくとも1種類の物理VOLは、1以上存在して良い。物理VOLとして、例えば、SSD400、HDD(Hard Disk Drive)デバイス(SAS:Serial Attached SCSI)500及びHDD(SATA:Serial ATA)600がある。
ストレージコントローラ300は、複数のRAID(Redundant Array of Independent (or Inexpensive) Disksの略))コントローラ301を有する。各RAIDコントローラ301は、SSD400、HDD(SAS)500及びHDD(SATA)600と内部バスを介して接続されている。
なお、RAIDコントローラ301は、SSD400、HDD(SAS)500及びHDD(SATA)600にとっての上位装置の一例である。RAIDコントローラ301は、RAIDコントローラ301にとっての上位装置(例えば、ホスト200)からI/Oコマンドを受け、そのI/Oコマンドに従い、SSD400、HDD(SAS)500又はHDD(SATA)600へのアクセス制御を行う。RAIDコントローラ301は、SSD400、HDD(SAS)500、HDD(SATA)600のそれぞれのエクステントをそれぞれ異なる記憶階層(ティア)として管理し、データのライト先の論理領域に対して、いずれかの記憶階層のエクステントを割当てる処理を行うようにしてもよい。つまり、ティアは、同種の物理VOLに基づく2以上のエクステントで構成されている。また、図示していないが、ストレージシステム1は、複数のSSD400で構成されたRAIDグループ、複数のHDD(SAS)500で構成されたRAIDグループ、及び、複数のHDD(SATA)600で構成されたRAIDグループを有して良い。
図2は、実施例に係るRAIDコントローラの構成例を示す。
RAIDコントローラ301は、オープンポートパッケージ310と、メインフレームパッケージ320と、ドライブポートパッケージ330と、キャッシュメモリ340と、共有メモリ350と、1以上のマイクロプロセッサパッケージ(MPPK)360と、スイッチパッケージ370とを有する。オープンポートパッケージ310、メインフレームパッケージ320、ドライブポートパッケージ330、キャッシュメモリ340、共有メモリ350、及び1以上のマイクロプロセッサパッケージ(MPPK)360は、スイッチパッケージ370を介して相互に接続されている。
オープンポートパッケージ310は、オープンパッケージ用マイクロプロセッサ(Open Port MP)311を有し、オープン系のホスト200と通信するためのポートである。メインフレームパッケージ320は、メインフレーム用マイクロプロセッサ(MF Port MP)321を有し、メインフレームであるホスト200と通信するためのポートである。ドライブポートパッケージ330は、ドライブパッケージポート用マイクロプロセッサ(Drive Port MP)331を有し、物理VOL400、500、600との間でデータをやり取りするポートである。
キャッシュメモリ340は、リード、ライトに関わるデータを一時的に記憶する。共有メモリ350は、MPPK360のMP362に利用される各種情報を記憶する。本実施例では、共有メモリ350は、プール管理テーブル(図26参照)、動的領域割り当てテーブル(図27参照)、動的エクステント領域割り当てテーブル(図28参照)、アクセス頻度テーブル(図29参照)、ペア管理テーブル(図30参照)、スナップショットデータ割り当てテーブル(図31参照)等を記憶する。なお、これらテーブルについては、後述する。
MPPK360は、ローカルメモリ及びプログラムメモリ(LM/PM)361と、1以上のマイクロプロセッサ(MP)362とを有する。LM/PM361は、MP362が使用するデータや、プログラムを記憶する。MP362は、LM/PM361に格納されたプログラムを実行し、LM/PM361に格納されたデータ及び/又は、共有メモリ350に格納されたデータを用いて、各種処理を実行する。
図3は、本実施例に係るSSDの構成例を示す。
SSD400は、1以上の上位I/Fスイッチ(上位I/F Switch)401と、1以上のフラッシュメモリパッケージ(PKG)10とを有する。上位I/Fスイッチ401は、RAIDコントローラ301と、複数のフラッシュメモリPKG10との間のデータの中継を行う。
図4は、本実施例に係るフラッシュメモリパッケージの構成例を示す。
フラッシュメモリPKG10は、主記憶メモリの一例としてDRAM(Dynamic Random Access Memory)11を有し、また、FMコントローラ20と、複数(又は1つ)のDIMM(Dual Inline Memory Module)30とを有する。DRAM11は、FMコントローラ20で使用するデータ等を記憶する。DRAM11は、FMコントローラ20に搭載されていても良いし、FMコントローラ20とは別の部材に搭載されていても良い。DRAM11は、本実施例では、論物変換テーブル110(図24参照)、物論変換テーブル111(図25参照)等を記憶する。これらテーブルについては、後述する。
FMコントローラ20は、例えば、1つのASIC(Application Specific Integrated Circuit)で構成されており、CPU21と、内部バス22と、上位I/F(インタフェース)23と、複数(又は1つ)のFM I/F制御部24とを有する。内部バス22は、CPU21と、上位I/F23と、DRAM11と、FM I/F制御部24とを通信可能に接続する。
上位I/F23は、上位I/F Switch401に接続され、上位装置との通信を仲介する。上位I/F23は、例えば、SASのI/Fである。FM I/F制御部24は、複数のFMチップ32とのデータのやり取りを仲介する。本実施例では、FM I/F制御部24は、FMチップ32とのやり取りを実行するバス(データバス等)を複数組有し、複数のバスを用いて、複数のFMチップ32とのデータのやり取りを仲介する。本実施例では、DIMM30毎にFM I/F制御部24が設けられ、FM I/F制御部24は、その制御部24に接続されたDIMM30が有する複数のFMチップ32との通信を仲介する。なお、FM I/F制御部24が担当するDIMM30の枚数は、2以上であってもよい。CPU21は、DRAM11(又は図示しない他の記憶領域)に記憶されるプログラムを実行することによって、各種処理を実行することができる。CPU21は複数あってもよく、複数のCPU21が各種処理を分担してもよい。CPU21による具体的な処理については、後述する。
DIMM30は、1以上のSW31と、複数のFMチップ32とを有する。FMチップ32は、例えば、MLC(Multi Level Cell)型のNANDフラッシュメモリチップである。MLC型のFMチップは、SLC型のFMチップと比べて書き換え可能な回数が劣るが、1セルあたりの記憶容量が多いという特徴を有している。
SW31は、FM I/F制御部24と、データバスを含むバス25を介して接続されている。本実施例では、SW31は、FM I/F制御部24に接続されるデータバスを含む一組のバス25に対して、一つ対応するように設けられている。また、SW31は、複数のFMチップ32とデータバスを含むバス28を介して接続されている。SW31は、FM I/F制御部24からのバス25と、いずれかのFMチップ32のバス28とを選択的に切り替えて接続できるようになっている。ここで、DIMM30に、SW31と、複数のFMチップ32とが設けられ、配線がされているので、これらを接続するためのコネクタを別に用意せずともよく、必要なコネクタ数を低減することが期待できる。
なお、図4によれば、FMチップ32が別のFMチップ32を介することなくSW31に接続されているが、FMチップ32が別のFMチップ32を介してSW31に接続されても良い。すなわち、SW31に、直列になった2以上のFMチップ32が接続されても良い。
図5は、実施例に係るフラッシュメモリチップの構成例を示す。
フラッシュメモリチップ(FMチップ)32は、複数のブロック32bを有する。各ブロック32bは、複数のページ32pを有する。ページ32pは、FMチップ32に対するデータのリード/ライトの単位である。本実施例では、ページ32pのサイズは、8KBである。なお、ページ32pのサイズはこれに限られない。
図6は、実施例に係るフラッシュメモリチップにおけるデータの更新を説明する図である。
論理VOL2012に対してデータのライトがあった場合には、状態1に示すように、FMチップ32においては、論理VOL2012のデータが格納される領域に対応付けられたFMチップ32のブロック32bのページ32pに対して、データが格納される。この場合には、ページ32pは、有効、すなわち、有効なデータを格納していると設定されて管理される。
そして、論理VOL2012の同一の領域に対して新たなデータ(更新データ)のライトがあった場合には、状態2に示すように、更新データは、別のページ32pに対して格納され、更新前のデータ(旧データ)が格納されていたページ32pは、無効、すなわち、無効データを格納していると設定されて管理される。なお、種々のデータが更新されると、無効と設定されているページ32pは、ブロック32bに散在することとなる。
図7は、実施例に係るページの状態遷移を説明する図である。
データが格納可能な状態である空き状態701であるページ32pに対して、新規のデータのライトが発生すると(図7中(1))、ページ32pに当該データがライトされて、ページ32pは、有効状態702となる。この後、当該ページ32pが記憶しているデータへの更新ライトが発生すると(図7中(2))、ページ32pは、無効状態703となる。無効状態703のページ32pが消去(ページ32p中のデータが消去)されると(図7中(3))、ページ32pは、空き状態701に戻る。
図8は、実施例に係るフラッシュメモリチップにおけるデータ消去を説明する図である。
FMチップ32では、ブロック32bを単位として格納されているデータの消去が可能となっている。したがって、本実施例では、ブロック32bに属する全てのページ32pが無効となった以降において、データの消去が行われる。なお、ブロックのデータの消去を、ブロックの消去ともいう。
図9は、実施例に係るリクラメーションを説明する図である。
リクラメーションとは、消去処理可能なブロックを生成する処理のことをいう。リクラメーションにおいては、図9に示すように、無効ページが所定数以上のブロック32b(ブロック#A、ブロック#B)中の有効なページ32pのデータを、空きページのある別のブロック32b(ここでは、ブロック#C)にコピーして、コピー元の有効ページを無効ページとする。この結果、コピー元のブロック32b(ここでは、ブロック#A、ブロック#B)は、すべてのページ32pが無効ページとなり、消去処理可能なブロックとなる。これにより、以降において、当該ブロック32bを消去することができるようになる。
図10は、実施例に係るブロックの状態遷移を説明する図である。
全てのページ32pが空きである全ページ空き状態1001のブロック32bにおいて、当該ブロック32b中のページ32pが論理領域に新規に割り当てられて、データが書き込まれると(図10中(1))、当該ブロック32bは、空きページと、有効ページとが混在する空きと有効混在状態1002となる。空きと有効混在状態1002のブロック32bにおいて、全ての空きページが新規に割り当てられてデータが書き込まれて、空きページがなくなると(図10中(2))、全ページが有効ページの状態1003となる。
一方、空きと有効混在状態1002のブロック32bにおいて、有効ページに対する更新ライトが発生すると(図10中(3))、当該有効ページは、無効ページとなるので、ブロック32bは、空き、有効、及び無効のページが混在する状態1004となる。
また、全ページが有効ページの状態1003のブロック32bにおいて、有効ページに対して更新ライトが発生すると(図10中(4))、当該有効ページは、無効ページとなるので、ブロック32bは、有効ページ及び無効ページが混在する状態1005となる。
また、空き、有効、及び無効のページが混在する状態1004のブロック32bにおいて、全ての空きページが新規に割り当てられてデータが書き込まれて、空きページがなくなると(図10中(5))、ブロック32bは、有効ページと、無効ページとが混在する状態1005となる。
有効ページと、無効ページとが混在する状態1005のブロック32bにおいて、有効ページに対して更新ライトが発生したり、リクラメーションにより有効ページのデータが移動されたりして、有効ページがなくなると(図10中(6))、ブロック32bは、全て無効ページの状態1006となる。全て無効ページの状態1006のブロック32bに対して、消去処理が行われると(図10中(7))、ブロック32bは、全てのページが空きである空き状態1001となる。
図11は、実施例に係る動的領域割り当て処理を説明する図である。
ホスト200は、仮想VOL2022の領域(ライト領域)を指定したライト要求を送信する。ここで、ホスト200がライト要求に従うデータ(以下、ライトデータ)のサイズは、例えば、SSD400のページの容量の複数倍(例えばN倍(Nは2以上の整数))のサイズである。本実施例では、例えば、ページのサイズを8KBとし、ライトデータのサイズを、ページサイズの3倍である24KBとしている。ストレージシステム1では、ライト要求を受信すると、仮想VOL2022のライト領域に対して、プール2001の論理VOL2012の領域が割り当てられていない場合には、ライト領域と同じサイズの、プール2001の論理VOL2012の領域が割り当てられる。この結果、割り当てられた論理VOL2012の領域がSSD400の領域に対応する場合には、キャッシュ340を介して、SSD400の対応する領域(ページ)にライトデータが書きこまれる。
この動的領域割り当て処理に代えて、次の動的エクステント領域割り当て処理を行うようにしてもよい。
図12は、実施例に係る動的エクステント領域割り当て処理を説明する図である。
動的エクステント領域割り当て処理では、仮想VOL2022のライト領域に対して、プール2001の論理VOL2012の領域が割り当てられていない場合には、ライト領域よりも大きいサイズの領域であるエクステント2052を割り当てる。このように、ライト領域よりも大きいサイズのエクステント2052を割り当てるようにすることにより、領域の割り当てを管理するための管理情報のデータ量を低減することができる。
この図に示す動的エクステント領域割り当て処理でも、図11に示した動的領域割り当て処理でも、仮想VOLの領域には、プール内の論理領域(エクステント)が割り当てられる。このため、以下の説明では、動的エクステント領域割り当て処理と動的領域割り当て処理のいずれの説明でも、「エクステント」が割り当てられると記載することがある。
次に、本実施例に係るストレージシステムにおいて、SSD400に不要なデータが発生する場合の一例として、ティア間動的マイグレーションについて説明する。
図13は、実施例に係るティア間動的マイグレーションを説明する図である。
ティア間動的マイグレーションとは、仮想VOLにおける仮想領域又は仮想領域に割り当てられているエクステントに対するアクセス頻度等に応じて、データが格納されるエクステントを別のティアのエクステントに変更する、すなわち、データをエクステントから別のティアのエクステントに移動させることをいう。
ここで、SSD400のエクステントに格納されているデータを、別のティアのエクステント(ここでは、HDD(SAS)500のエクステント)に移動させる場合には、ストレージシステム1は、当該領域に対してプール2001から移動先のティアのエクステントを割り当て、SSD400から対応するデータをキャッシュ340に読み出し、当該データを割り当てられた移動先のティアのエクステント(ここでは、HDD(SAS)500のエクステント)に移動する。なお、この後、ストレージシステム1は、当該データの仮想VOL2022の領域を、移動後のティアのエクステントに対応付けるように、動的領域割り当てテーブル等のマッピング変更をする。
このティア間動的マイグレーションが実行された後においては、SSD400の記憶領域に格納されているデータは、ホスト200から参照されることはなく、不要なデータとなる。しかしながら、SSD400においては、当該データを格納している複数のページは、有効なデータを格納している有効ページとして管理されたままとなっている。
ここで、この不要なデータを格納している領域を低減する方法として、本実施例では、例えば、以下に示す固定パターンデータライト処理を実行する。
図14は、実施例に係るティア間動的マイグレーション後の固定パターンデータライト処理を説明する図である。
ここで、固定パターンデータとは、ライトデータのサイズと同じであり、ページ32pのサイズに分解して得られる複数の部分データのそれぞれが、同一のデータパターンとなるデータである。固定パターンデータとしては、例えば、全てのビットが“0”のデータとしてもよく、全てのビットが“1”のデータとしてもよい。
固定パターンデータライト処理は、ティア間動的マイグレーション後(データが他のティアのエクステントに移動された後)であって、例えば、移動したデータが格納されている仮想領域(仮想VOLにおける領域)にマッピングされるエクステント(移動元のエクステント)が別のエクステント(移動先のエクステント)に変更される前に実行され、ストレージシステム1が、固定パターンデータを、不要データが格納されているエクステント(移動元のエクステント)に対応した複数のページ(マイグレーション実行前のデータを格納していたSSD400の複数ページ)に対して、固定パターンデータ(例えば、全ビットが“0”のデータ)を書き込む処理である。
この固定パターンデータライト処理としては、図15乃至図18に示す第1乃至第4の例に示すものがある。
図15は、実施例に係る固定パターンデータライト処理の第1の例を説明する図である。
第1の例に係る固定パターンデータライト処理では、RAIDコントローラ301が、不要データを格納しているエクステント(プールを構成する論理VOL2012の領域)に対して、ライトデータの単位サイズ(例えば、24KB)の固定パターンデータ1051を書き込ませるライト要求をSSD400(SSD400のフラッシュメモリパッケージ10)へ送信する。この結果、固定パターンデータ1051は、キャッシュ340を介して、SSD400に送信される。SSD400は、不要データが格納されていた複数(この例では、3つ)のページを無効ページと設定する。そして、SSD400は、1つのページ32pに対して、固定パターンデータ1051の1つのページサイズの部分データを格納し、当該ページ32pに対して、論理ボリュームの領域(ライトデータサイズの領域)のページサイズで分割した(圧縮した)各領域を対応付けるように、論物変換テーブル110、物論変換テーブル111の情報を更新する。これにより、不要なデータを記憶している有効ページの数を低減することができる。例えば、1つのライトデータについてみると、有効ページを3つから1つにすることができる。
図16は、実施例に係る固定パターンデータライト処理の第2の例を説明する図である。
第2の例に係る固定パターンデータライト処理では、RAIDコントローラ301が、不要データを格納している論理VOL2012の領域に対して、ライトデータの単位サイズ(例えば、24KB)の固定パターンデータ1051を書き込ませる要求をSSD400へ送信する。この結果、固定パターンデータ1051は、キャッシュ340を介して、SSD400に送信される。SSD400は、不要データが格納されていた複数(この例では、3つ)のページを無効ページと設定する。そして、SSD400は、別の1つのページ32pに対して、論理ボリュームの領域(ライトデータサイズの領域)のページサイズで分割した(圧縮した)各領域を対応付けるとともに、固定パターンデータを特定することのできるデータパターン(例えば、すべて“0”の固定パターンデータであれば、“0”)を各領域に対して対応付けるように、論物変換テーブル110、物論変換テーブル111の情報を更新する。これにより、不要なデータを記憶している有効ページの数を低減することができる。例えば、1つのライトデータについてみると、有効ページを3つから1つにすることができる。また、ページに対して、データを格納せずに済む。
図17は、実施例に係る固定パターンデータライト処理の第3の例を説明する図である。
第3の例に係る固定パターンデータライト処理では、RAIDコントローラ301が、不要データを格納している論理VOL2012の領域に対する、ライトデータの単位サイズ(例えば、24KB)の固定パターンデータ1051を書き込む要求として、固定パターンデータ1051を分割した(圧縮した)ページサイズの部分データと、固定パターンデータのサイズを示すサイズ情報とを含むライト要求(固定パターンデータ指示付きライト要求)をSSD400へ送信する。この結果、部分データは、キャッシュ340を介して、SSD400に送信される。SSD400は、サイズ情報に基づいて、不要データが格納されていた複数(この例では、3つ)のページを特定し、当該ページを無効ページと設定する。そして、SSD400は、1つのページ32pに対して、部分データを格納し、当該ページ32pに対して、論理ボリュームの領域(ライトデータサイズの領域)のページサイズで分割した各領域を対応付けるように、論物変換テーブル110、物論変換テーブル111の情報を更新する。これにより、不要なデータを記憶している有効ページの数を低減することができる。例えば、1つのライトデータについてみると、有効ページを3つから1つにすることができる。
図18は、実施例に係る固定パターンデータライト処理の第4の例を説明する図である。
第4の例に係る固定パターンデータライト処理では、RAIDコントローラ301が、不要データを格納している論理VOL2012の領域に対する、ライトデータのサイズ(例えば、24KB)の固定パターンデータ1051を書き込む要求として、固定パターンデータ1051を分割した(圧縮した)ページサイズの部分データと、固定パターンデータのサイズを示すサイズ情報(例えば、24KB)とを含むライト要求をSSD400へ送信する。この結果、部分データは、キャッシュ340を介して、SSD400に送信される。SSD400は、サイズ情報に基づいて、不要データが格納されていた複数(この例では、3つ)のページを特定し、当該ページを無効ページと設定する。そして、SSD400は、別の1つのページ32pに対して、論理ボリュームの領域(ライトデータサイズの領域)のページサイズで分割した各領域を対応付けるとともに、固定パターンデータを特定することのできるデータパターン(例えば、すべて“0”の固定パターンデータであれば、“0”)を各領域に対して対応付けるように、論物変換テーブル110、物論変換テーブル111の情報を更新する。これにより、不要なデータを記憶している有効ページの数を低減することができる。例えば、1つのライトデータについてみると、有効ページを3つから1つにすることができる。また、ページに対して、データを格納せずに済む。
また、不要なデータを格納している領域(ページ)を低減する他の方法として、例えば、以下に示す第5の例に係るアンマップ要求を利用した処理を実行するようにしてもよい。
図19は、実施例に係るアンマップ要求を説明する図である。
アンマップ要求1901は、論理アドレス1902と、データ長1903とのフィールドを有する。論理アドレス1902には、無効化するページの先頭を示す論理アドレスが格納される。データ長1903には、無効化するページが含まれる論理アドレス範囲を示す先頭の論理アドレスからのデータ長が格納される。
アンマップ要求1901を使用する際には、RAIDコントローラ301が、不要データが格納されている論理アドレスの範囲を特定し、先頭の論理アドレスを論理アドレス1902に設定し、データ長1903に論理アドレスの範囲のデータ長を設定した後、アンマップ要求1901をSSD400に送信する。SSD400のフラッシュメモリパッケージ10では、アンマップ要求1901を取得すると、アンマップ要求1901の論理アドレス1902及びデータ長1903の値に基づいて、対応する論理アドレスの範囲を特定し、当該論理アドレスの範囲に対応付けられている複数のページを無効として管理するように、論物変換テーブル110、物論変換テーブル111の情報を更新する。これにより、不要なデータが格納されたページが全て無効となり、以降において、当該ページが空きページとして利用可能にすることができる。
次に、本実施例に係るストレージシステムにおいて、SSD400に不要なデータが発生する場合の他の例として、スナップショット作成処理及びスナップショット削除処理について説明する。
図20は、実施例に係るスナップショット作成処理を説明する図である。
スナップショット作成処理では、ホスト200からコピー対象のプライマリVOL1551の所定の領域(ライト領域)に対して、新データ(対応する領域に格納されているデータ(旧データ)を更新するデータ)をライトするライト要求が送信されると(図20中(1))、RAIDコントローラ301が、プライマリVOL1551のライト領域の基になっている物理領域(同図の例では、HDD(SAS)500の物理領域)から旧データを読み出して(図20中(2))、キャッシュ340を介して取得し(図20中(3))、スナップショットVOL1553におけるコピー先領域(プライマリVOL1551におけるライト領域と同じアドレスの領域)に対して、当該旧データを書き込むように処理を行う(図20中(4))。この処理では、RAIDコントローラ301は、スナップショットVOL1553のコピー先領域に割り当てたエクステント(プール2001の論理VOL2012の論理領域)に旧データを書き込むように処理を行う(図20中(5))。
旧データのライト先のエクステント(コピー先領域に割り当てられたエクステント)に対してSSD400の領域が割り当てられている場合には、RAIDコントローラ301は、そのライト先のエクステントを指定しライト対象を旧データとしたライト要求を、ライト先のエクステントに割り当てられた領域の基になっているSSD400に送信する。当該旧データがキャッシュ340を介して(図20中(6))、SSD400に送信される。SSD400は、ライト先のエクステントに対応した、FMチップの記憶領域(1以上のページ)に旧データを格納する(図20中(7))。新データが、プライマリVOL1551に格納される(図20中(8))。
図21は、実施例に係るスナップショット作成処理の他の例を説明する図である。
図20中(5)において、RAIDコントローラ301が、スナップショットVOL1553のコピー先領域に、プール2001から新たにエクステントを割り当て、当該エクステントに対して旧データを書き込む(図21中(5))。
図22は、実施例に係るスナップショット削除に伴う不要なデータを説明する図である。
スナップショット作成処理が実行された後において、ストレージシステム1が、例えば、ホスト200からスナップショットVOL1553を削除する要求を受信する場合がある。この場合には、ストレージシステム1のRAIDコントローラ301は、削除要求されたスナップショットVOL1553を削除する。ここで、スナップショットVOL1553の削除としては、RAIDコントローラ301で管理している、スナップショットVOL1553に関する情報等が、削除されることである。
この場合に、SSD400においては、旧データを格納している複数のページは、有効なデータを格納している有効ページとして管理されたままとなっている。
ここで、この不要なデータを格納している領域を低減する方法として、本実施例では、例えば、以下に示す固定パターンデータライト処理を実行する。
図23は、実施例に係るスナップショット削除後の固定パターンデータライト処理を説明する図である。
図23に示すスナップショット削除後の固定パターンデータライト処理は、固定パターンデータのライト先を、スナップショットVOL1553に割り当てられていたエクステントとする以外は、図14に示すティア間動的マイグレーション後の固定パターンデータライト処理と同様な処理である。
スナップショット削除後の固定パターンデータライト処理は、上記した図15乃至図18に示す第1乃至第4の例に示す固定パターンデータライト処理と同様な処理とすることができる。
また、不要なデータを格納している領域を低減する他の方法として、上記した図19に示す第5の例に係るアンマップ要求を利用した処理を実行するようにしてもよい。
次に、ストレージシステム1における各種テーブルについて詳細に説明する。
図24は、実施例に係る論物変換テーブルの一例を示す。
論物変換テーブル110は、フラッシュメモリパッケージ10のDRAM11に格納されているテーブルであり、論理アドレス110a、有効性110b、FM番号110c、ブロック番号110d、ページ番号110e、及びデータパターン110fのフィールドを有するレコードを管理する。
論理アドレス110aには、論理アドレスが格納される。本実施例では、この論理アドレスは、プール2001における論理VOL2012の論理アドレスであるが、その論理アドレスに代えて、論理VOL2012の論理アドレスに対応する、SSD400の論理空間の論理アドレスが、論理アドレス110aに格納されても良い。有効性110bには、対応する論理アドレスのデータの有効性、例えば、有効(フラッシュメモリパッケージ10に存在する)か、無効(フラッシュメモリパッケージ10に存在しないか)かが格納される。FM番号110cには、対応する論理アドレスのデータを格納しているFMチップ32の番号(FM番号)が格納される。ブロック番号110dには、対応する論理アドレスのデータを格納しているFMチップ32におけるブロックの番号(ブロック番号)が格納される。ページ番号110eには、対応する論理アドレスのデータを格納しているブロックにおけるページの番号(ページ番号)が格納される。
データパターン110fは、固定パターンデータライト処理で、対応するページに、実際にデータを書き込まない場合、すなわち、図16及び図18に示す第2及び第4の例の固定パターンデータライト処理を実行する場合に利用されるフィールドであり、その他の場合においては、備えてなくてもよい。データパターン110fには、対応する論理アドレスのデータを特定するために利用するデータパターン、又は、データパターンが格納されていないことを示すNULLが格納される。データパターンが格納されている場合には、当該データパターンに基づいて、対応する論理アドレスのデータを生成することができる。生成されたデータは、例えば、当該データパターンの複数倍(N倍(Nは2以上の整数))である。
論物変換テーブル110の論理アドレス110aが「0x10000000」のレコードによると、当該論理アドレスのデータは、FMチップ#0のブロック#0のページ#0に格納されており、データパターンが格納されていないことがわかる。
また、論理アドレス110aが「0x20000000」、「0x20002000」、「0x20004000」のレコードは、例えば、第2又は第4の例の固定パターンデータライト処理(図16、図18)が行われた後の対応する論理アドレスの状態を示しており、各論理アドレスで示される領域に対しては、FMチップ#1のブロック#0のページ#0が対応付けられており、データパターンが「0」であるので、各論理アドレスに対応するデータは、全てのビットが「0」のデータであることがわかる。
図25は、実施例に係る物論変換テーブルの一例を示す。
物論変換テーブル111は、フラッシュメモリパッケージ10のDRAM11に格納されているテーブルであり、FM番号111a、ブロック番号111b、ページ番号111c、状態111d、及び論理アドレス111eのフィールドを有するレコードを管理する。
FM番号111aには、FMチップ32のFM番号が格納される。ブロック番号111bには、FMチップ32におけるブロックの番号が格納される。ページ番号111cには、対応するブロックにおけるページの番号が格納される。状態111dには、対応するページの状態が格納される。ページの状態としては、論理アドレスに対応するデータが格納されていることを示す「有効」と、論理アドレスに対応するデータが格納されていない、すなわち、不要データが格納されていることを示す「無効」と、データが格納されていない「空き」とがある。論理アドレス111eには、対応するページに格納されるデータのプール2001における論理VOL2012の論理アドレスが格納される。
本実施例では、物論変換テーブル111は、1つのページに対して、複数(同図では、例えば、4つ)のレコードを管理するようにしている。これは、固定パターンデータライト処理において、ライトデータ(複数のページサイズ)を格納する論理領域中のページサイズ毎に分割した複数の部分領域について、共通の1つのページを割り当てて管理するためである。このようにレコードを管理することにより、1つのページと、対応する複数の部分領域との対応関係を適切に管理することができる。1つのページに対して備えるレコード数は、ライトデータの最大サイズがページサイズの何倍であるかにより決定すればよい。
物論変換テーブル111の上から4つのレコードによれば、FMチップ#0のブロック#0のページ#0は、有効であり、論理アドレスが「0x10000000」のデータのみが格納されていることがわかる。
また、FMチップ#1のブロック#0のページ#0の4つのレコードによれば、論理アドレスが「0x20000000」、「0x20002000」、「0x20004000」のデータが当該ページに格納されていることがわかる。例えば、固定パターンデータライト処理(図15乃至図18)において、固定パターンデータがライトされた場合には、これら4つのレコードが示すような状態に更新される。このように、固定パターンデータの場合には、複数のページサイズに対応する論理領域に対応付けるページ数を1にすることができる。
図26は、実施例に係るプール管理テーブルの一例を示す。
プール管理テーブル351は、例えば、RAIDコントローラ301の共有メモリ350に格納されるテーブルであり、プール番号351a、デバイスタイプ351b、論理VOL番号351c、論理アドレス351d、物理VOL番号351e、物理アドレス351f及び状態351gのフィールドを有するレコードを管理する。
プール番号351aには、ストレージシステム1において、プールの番号(プール番号)が格納される。デバイスタイプ351bには、物理VOLの種別(デバイスタイプ)が格納される。論理VOL番号351cには、対応する論理VOLの番号(論理VOL番号)が格納される。論理アドレス351dには、対応する論理VOLに属する論理アドレスが格納される。物理VOL番号351eには、対応する論理アドレスの領域の基になっている物理VOLの番号(物理VOL番号)が格納される。物理アドレス351fには、対応する物理VOLにおけるアドレス(物理アドレス)が格納される。なお、デバイスタイプがSSDのように、FMチップを用いたデバイスである場合には、物理アドレス351fには、NULLが設定される。状態351gには、対応する論理アドレスの領域の状態が格納される。格納される状態としては、例えば、当該論理アドレスの領域が、仮想VOLの領域に割り当てられていることを示す「有効」、仮想VOLの領域に割り当てられていないことを示す「空き」等がある。
プール管理テーブル351の一番上のレコードによれば、プール#0の論理VOL#0x1000の論理アドレス#0x10000000の領域は、SSD#0が基になっており、仮想VOLの領域に割り当てられていることがわかる。
図27は、実施例に係る動的領域割り当てテーブルの一例を示す。
動的領域割り当てテーブル352は、例えば、RAIDコントローラ301の共有メモリ350に格納されるテーブルであり、仮想VOL番号352a、ホスト論理アドレス352b、状態352c、エクステントID352d、プール番号352e、論理VOL番号352f、及び論理アドレス352gのフィールドを有するレコードを管理する。
仮想VOL番号352aには、仮想VOLを特定する仮想VOLの番号(仮想VOL番号)が格納される。ホスト論理アドレス352bには、仮想VOLに属する論理アドレスであってホストが認識することのできるアドレス(ホスト論理アドレス)が格納される。状態352cには、対応する仮想VOLのホスト論理アドレスで示される領域に、論理VOLの領域が割り当てられているか否かの情報を格納する。例えば、状態352cには、対応する仮想VOLのホスト論理アドレスで示される領域に、論理VOLの領域が割り当てられている場合には、「済」が設定され、論理VOLの領域が割り当てられていない場合には、「未」が設定される。エクステントID352dには、エクステントのIDが格納される。プール番号352eには、プールのプール番号が格納される。論理VOL番号352fには、論理VOLの論理VOL番号が格納される。論理アドレス352gには、論理VOLの領域のアドレス(論理アドレス)が格納される。
動的領域割り当てテーブル352の一番上のレコードによれば、仮想VOL「0x0000」のホスト論理アドレス「0x00000000」の領域には、エクステント#0(プール#0の論理VOL#0x1000の論理アドレス#0x10000000で示される領域)が割り当て済みであることがわかる。
図28は、実施例に係る動的エクステント領域割り当てテーブルの一例を示す。
動的エクステント領域割り当て管理テーブル353は、例えば、RAIDコントローラ301の共有メモリ350に格納されるテーブルであり、ホスト200からのライトデータを格納する領域に対して、ホスト200からのデータサイズよりも大きなサイズの領域であるエクステントを割り当てるようにした場合に利用されるテーブルである。
動的エクステント領域割り当て管理テーブル353は、仮想VOL番号353a、ホスト論理アドレス353b、状態353c、エクステントID353d、プール番号353e、論理VOL番号353f、及び論理アドレス353gのフィールドを有するレコードを管理する。
仮想VOL番号353aには、仮想ボリュームを特定する仮想VOL番号が格納される。ホスト論理アドレス353bには、仮想ボリュームにおけるホストが認識することのできるホスト論理アドレスが格納される。状態353cには、対応する仮想ボリュームのホスト論理アドレスで示される領域に、論理ボリュームの領域が割り当てられているか否かの情報を格納する。例えば、状態353cには、対応する仮想ボリュームのホスト論理アドレスで示される領域に、論理ボリュームの領域が割り当てられている場合には、「済」が設定され、論理ボリュームの領域が割り当てられていない場合には、「未」が設定される。エクステントID353dには、対応する領域に割り当てられているエクステントのIDが格納される。プール番号353eには、対応する領域に割り当てられているプールのプール番号が格納される。論理VOL番号353fには、対応する領域に割り当てられている論理ボリュームの論理VOL番号が格納される。論理アドレス353gには、対応する領域に割り当てられている論理ボリュームの論理アドレスが格納される。
動的エクステント領域割り当て管理テーブル353の一番上のレコードによれば、仮想VOL#0x0000のホスト論理アドレス#0x00000000の領域には、エクステント#0(プール#0の論理VOL#0x1000の論理アドレス#0x10000000で示される領域)が割り当て済みであることがわかる。
動的エクステント領域割り当て管理テーブル353を用いた領域の割り当て方法としては、仮想VOL番号が「0x0000」であり、ホスト論理アドレスが「0x00002000」の場合には、RAIDコントローラは、仮想VOL番号が「0x0000」であり、ホスト論理アドレスが「0x00000000」のレコードを参照し、プール番号「0」、論理VOL番号「0x0000」の論理VOLを割り当て先と決定する。さらに、RAIDコントローラは、割当て対象のホスト論理アドレス「0x00002000」と、当該レコードのホスト論理アドレス「0x00000000」の差である「0x00002000」を、当該レコードの論理アドレス「0x10000000」に対して加算したアドレス「0x10002000」を、仮想ボリュームの対応する領域に割り当てる論理アドレスに決定する。
図29は、実施例に係るアクセス頻度テーブルの一例を示す。
アクセス頻度テーブル354は、例えば、RAIDコントローラ301の共有メモリ350に格納されるテーブルであり、仮想VOL番号354a、ホスト論理アドレス354b、現在のデバイスタイプ354c、及びアクセス頻度354dのフィールドを有するレコードを管理する。
仮想VOL番号354aには、仮想ボリュームを特定する仮想VOL番号が格納される。ホスト論理アドレス354bには、仮想ボリュームにおけるホストが認識することのできるホスト論理アドレスが格納される。
現在のデバイスタイプ354cには、対応するホスト論理アドレスの領域に対して現在割り当てられている記憶領域のデバイスタイプが格納される。アクセス頻度354dには、対応するホスト論理アドレスの領域に対するアクセス頻度の情報が格納される。本実施例では、アクセス頻度の情報としては、アクセス頻度が高い方から「高」、「中」、「低」のいずれかが設定される。本実施例では、アクセス頻度が「高」の場合には、SSD400のエクステントにより構成されるティアにデータを移動させ、アクセス頻度が「中」の場合には、HDD(SAS)500のエクステントに構成されるティアにデータを移動させ、アクセス頻度が「低」の場合には、HDD(SATA)600のエクステントに構成されるティアにデータを移動させる必要があることを示している。なお、RAIDコントローラは、アクセス頻度テーブル354において、アクセス頻度の他に、又はアクセス頻度に代えて、最終アクセス時間、及び/又はデータ保管時間を管理し、いずれかの値を、どのエクステント内のデータをどのティアのエクステントに移動するかの判断に用いてよい。
アクセス頻度テーブル354の一番上のレコードによると、仮想VOL番号が「0x0000」であり、ホスト論理アドレスが「0x00000000」に対応する領域に対して、現在SSDデバイスの領域が割り当てられており、当該領域に対するアクセス頻度が「低」であることがわかる。
図30は、実施例に係るペア管理テーブルの一例を示す。
ペア管理テーブル355は、例えば、RAIDコントローラ301の共有メモリ350に格納されるテーブルであり、プライマリVOL番号355a、有効性355b、ID355c、及びスナップショットVOL番号355dのフィールドを有するレコードを管理する。
プライマリVOL番号355aには、スナップショットを作成対象となるプライマリVOLの番号(プライマリVOL番号)が格納される。有効性355bには、対応するレコードのコピーが有効であるか否かを示す有効性が格納される。ID355cには、スナップショットを識別するための番号(ID)が格納される。ここで、同一のプライマリボリュームを対象に複数のスナップショットを作成することができるが、この番号により、スナップショット(スナップショットの世代)を識別することができる。番号は、例えば、世代と同じ値でよい。スナップショットVOL番号355dには、スナップショットVOLの番号(スナップショットVOL番号)が格納される。
ペア管理テーブル355の一番上のレコードによると、プライマリVOL番号が「0x1000」を対象としたスナップショットは、スナップショットVOL番号が「0x1001」の仮想ボリュームに格納され、当該スナップショットの番号は、「0」であり、当該スナップショットは、有効であることがわかる
図31は、実施例に係るスナップショットデータ割り当てテーブルの一例を示す。
スナップショットデータ割り当てテーブル356は、例えば、RAIDコントローラ301の共有メモリ350に格納されるテーブルであり、スナップショットVOL番号356a、ホスト論理アドレス356b、状態356c、プール番号356d、論理VOL番号356e及び論理アドレス356fのフィールドを有するレコードを管理する。
スナップショットVOL番号356aには、スナップショットが格納されるスナップショットボリュームのスナップショットVOL番号が格納される。ホスト論理アドレス356bには、仮想ボリュームにおけるホストが認識することのできるホスト論理アドレスが格納される。状態356cには、対応するホスト論理アドレスが示す領域に、論理ボリュームが割り当てられているか否かの情報が格納される。例えば、状態356cには、対応する仮想ボリュームのホスト論理アドレスで示される領域に、論理ボリュームの領域が割り当てられている場合には、「済」が設定され、論理ボリュームの領域が割り当てられていない場合には、「未」が設定される。プール番号356dには、対応する領域に割り当てられているプールのプール番号が格納される。論理VOL番号356eには、対応する領域に割り当てられている論理ボリュームの論理VOL番号が格納される。論理アドレス356fには、対応する領域に割り当てられている論理ボリュームの論理アドレスが格納される。
次に、本実施例に係るストレージシステムの処理を、フローチャートを参照して詳細に説明する。
図32は、実施例に係るライト処理のフローチャートの一例である。
ライト処理は、SSD400のフラッシュメモリパッケージ10のFMコントローラ20が、RAIDコントローラ301から所定の論理アドレス(同図の説明において、指定論理アドレスという)が示す領域へのデータのライト要求を受信した場合に実行される。
FMコントローラ20は、RAIDコントローラ301からライト要求を受信すると、物論変換テーブル111に対して空ページ検索を行い(ステップS1)、空ページ中のいずれかのページを、データを格納するページに割り当てて、対応するデータを格納し、論物変換テーブル110の指定論理アドレスに対応するレコードのFM番号110c、ブロック番号110d、及びページ番号110eを、割り当てたページに対応する値に更新する(ステップS2)。次いで、FMコントローラ20は、物論変換テーブル111を参照し、論理アドレス111eの値が指定論理アドレスであるレコードの状態111dが「有効」であるか否かを判定する(ステップS3)。
この結果、「有効」である場合(ステップS3でYES)には、当該レコードが示すページ(物理領域)のデータは、書き換え前のデータ(旧データ)であり、無効なデータとなるので、FMコントローラ20は、対応するレコードの状態111dを「有効」から「無効」に変更し(ステップS4)、処理をステップS5に進める。これにより、指定論理アドレスのデータを格納していたページは、無効の状態として管理されることとなる。一方、「有効」でない場合(ステップS3でNO)には、FMコントローラ20は、処理をステップS5に進める。
ステップS5では、FMコントローラ20は、物論変換テーブル111におけるステップS2で割り当てたページに対応するレコードの状態111dを「空き」から「有効」に変更し(ステップS5)、論物変換テーブル110の指定論理アドレスに対応するレコードの有効性110bを「有効」に変更し、処理を終了する。
次に、SSD400におけるFMチップ32のブロックのデータを消去するブロック消去処理について説明する。
図33は、実施例に係るブロック消去処理のフローチャートの一例である。
ブロック消去処理は、例えば、FMチップ32における利用可能な容量の枯渇をFMコントローラ20が検出したことを契機として、FMコントローラ20により実行される。容量の枯渇とは、空きブロックの数が所定割合(所定数)未満になったことを意味する。容量枯渇の検出は、任意の単位でよい。また、ブロック消去処理は、FMコントローラ20により所定の時間おきに定期的に実行されてもよい。
FMコントローラ20は、処理対象とする物理ブロック番号を特定する(ステップS10)。ここで、処理対象とする物理ブロック番号は、以前にブロック消去処理の対象としたブロックの次のブロックの番号としてもよい。
次いで、FMコントローラ20は、物論変換テーブル111の特定した物理ブロック番号に対応するレコードを参照し、当該レコードの状態111dが無効、すなわち、対応するページが無効であるか否かを判定する(ステップS11)。この結果、対応するページが無効でない場合(ステップS11でNO)には、当該ブロックには、有効ページが存在し、当該ブロックを消去することができないことを意味しているので、ブロック消去処理を終了する。
一方、対応するページが無効である場合(ステップS11でYES)には、FMコントローラ20は、当該ブロックに対応する次のレコードがあるか否かを判定する(ステップS12)。
この判定の結果、当該ブロックに対応する次のレコードがある場合(ステップS12でYES)には、同一のページ又は、次のページについての状態を確認する必要があるので、FMコントローラ20は、処理をステップS11に進める。一方、この判定の結果、当該ブロックに対応する次のレコードがない場合(ステップS12でNO)には、当該ブロックの全てのページが無効であることを意味するので、FMコントローラ20は、当該ブロックのデータを消去する(ステップS13)。
次いで、FMコントローラ20は、物論変換テーブル111を更新し(ステップS14)、処理を終了する。ここで、具体的には、FMコントローラ20は、物論変換テーブル111のデータを消去したブロックの全てのページに対応するレコードの状態111dを「空き」に変更する。これにより、FMチップ32における空き容量を増やすことができる。
次に、リクラメーション、すなわち、消去処理可能なブロックを生成する処理を説明する。
図34は、実施例に係るリクラメーションのフローチャートの一例である。
リクラメーションは、例えば、FMチップ32における利用可能な容量の枯渇をFMコントローラ20が検出したことを契機として、FMコントローラ20により実行される。容量の枯渇とは、空きブロックの数が所定割合(所定数)未満になったことを意味する。容量枯渇の検出は、任意の単位でよい。また、リクラメーションは、FMコントローラ20により所定の時間おきに定期的に実行されてもよい。
FMコントローラ20は、有効なページを格納させる移動先(リクラメーション先という)とするブロックの物理ブロック番号を特定する(ステップS21)。リクラメーション先とするブロックは、例えば、無効ページがなく、空ページが多いブロックとしてもよい。
次いで、FMコントローラ20は、有効なページを移動させる移動元(リクラメーション元という)とするブロックの物理ブロック番号を特定する(ステップS22)。リクラメーション元とするブロックは、例えば、空ページがなく、有効ページが所定数よりも少ないブロックとしてもよい。
次いで、FMコントローラ20は、リクラメーション元のブロックに有効ページがあるか否かを判定する(ステップS23)。この結果、有効ページがなければ(ステップS23でNO)、FMコントローラ20は、処理をステップS22に進める。
一方、有効ページがあれば(ステップS23でYES)、FMコントローラ20は、当該有効ページ(コピー元ページ)に格納されているデータを、リクラメーション先のブロックのページ(コピー先ページ)にコピーし(ステップS24)、論物変換テーブル110、物論変換テーブル111を更新する(ステップS25)。ここで、具体的には、FMコントローラ20は、物論変換テーブル111のコピー元ページに対応するレコードの状態111dを「無効」にし、論理アドレス111eをNULLに設定するとともに、コピー先ページに対応するレコードの状態111dを、「有効」にし、論理アドレス111eに、コピー元の論理アドレス111eに格納されていた論理アドレスを設定する。また、FMコントローラ20は、論物変換テーブル110のコピー元のページが設定されているレコードについて、コピー先ページのFM番号、ブロック番号、及びページ番号を設定する。
次いで、FMコントローラ20は、リクラメーション先のブロックに空ページがあるか否かを判定し(ステップS26)、空ページがある場合(ステップS26でYES)には、処理をステップS23に進める一方、空ページがない場合(ステップS26でNO)には、リクラメーションを終了する。
このリクラメーションにより、全てのページが無効となっているブロックを生成することができ、ブロック消去処理により、空きブロックにすることができ、FMチップの空き容量を増加させることができるようになる。
次に、動的領域割り当て処理について詳細に説明する。動的領域割り当て処理は、図11に示した処理である。
図35は、実施例に係る動的領域割り当て処理のフローチャートの一例である。
RAIDコントローラ301は、ホスト200からデータ(ライトデータ)のライト要求を受信すると(ステップS31)、動的領域割り当てテーブル352の当該ライト要求により指定されている仮想VOL番号のホスト論理アドレスに対応するレコードの状態352cが「未」であるか否か、すなわち、対応する領域にエクステントが割り当てられているか否かを判定する(ステップS32)。
この結果、レコードの状態352cが「未」でない場合(ステップS32でNO)には、当該領域に対して、エクステントが割り当てられていることを示しているので、RAIDコントローラ301は、処理をステップS35に進める。
一方、レコードの状態352cが「未」である場合(ステップS32でYES)には、当該領域に対して、エクステントが割り当てられていないことを示しているので、RAIDコントローラ301は、プール管理テーブル351からデバイスタイプ351bがSSDであるレコードであって、状態351gが「空き」であるレコードを特定し、当該レコードの論理VOL番号351cの論理VOL番号の論理ボリュームにおける、論理アドレス351dの論理アドレスに対応するエクステントを、データのライト先のエクステントとして割り当て(ステップS33)、割り当てに基づいて、動的領域割り当てテーブル352を更新する(ステップS34)。具体的には、RAIDコントローラ301は、動的領域割り当てテーブル352のレコードのプール番号352e、論理ボリューム番号352f、及び論理アドレス352gに、割当てられたエクステントに対応する値を設定し、状態352cに「済」を設定する。この後、RAIDコントローラ301は、処理をステップS35に進める。
ステップS35では、RAIDコントローラ301は、割り当てられたエクステントを示す論理VOL番号及び論理アドレスを指定して、SSD400にライトデータをライトさせるライト要求をFMコントローラ20に送信することにより、SSD400にデータをライトする(ステップS35)。なお、SSD400のFMコントローラ20は、ライト要求を受信すると、図32に示すライト処理を実行する。
次に、動的エクステント領域割り当て処理について詳細に説明する。動的エクステント領域割り当て処理は、図12に示した処理である。
図36は、実施例に係る動的エクステント領域割り当て処理のフローチャートの一例である。
RAIDコントローラ301は、ホスト200からデータ(ライトデータ)のライト要求を受信すると(ステップS41)、動的エクステント領域割り当てテーブル353を参照して、ライト先の領域に対応する状態353cが「未」であるか否か、すなわち、ライト先の領域にエクステントが割り当てられているか否かを判定する(ステップS42)。
この結果、レコードの状態353cが「未」でない場合(ステップS42でNO)には、ライト先の領域に対して、エクステントが割り当てられていることを示しているので、RAIDコントローラ301は、処理をステップS45に進める。
一方、レコードの状態353cが「未」である場合(ステップS42でYES)には、ライト先の領域に対してエクステントが割り当てられていないことを示しているので、RAIDコントローラ301は、プール管理テーブル351からデバイスタイプ351bがSSDであるレコードであって、状態351gが「空き」である複数のレコードを特定し、これらレコードの論理VOL番号351cの論理VOL番号の論理ボリュームにおける、論理アドレス351dの論理アドレスに対応するエクステントを割り当て(ステップS43)、割り当てに基づいて、動的エクステント領域割り当てテーブル353を更新する(ステップS44)。具体的には、RAIDコントローラ301は、動的エクステント領域割り当てテーブル353のレコードのプール番号353e、論理ボリューム番号353f、及び論理アドレス353gに、割当てられたエクステントに対応する値を設定し、状態353cに「済」を設定する。この後、RAIDコントローラ301は、処理をステップS45に進める。
ステップS45では、RAIDコントローラ301は、割り当てられたエクステントにおける仮想VOL番号のホスト論理アドレスに対応する論理VOL番号及び論理アドレスを指定して、ライトデータをSSD400にライトさせるライト要求をFMコントローラ20に送信することにより、SSD400にデータをライトする(ステップS45)。例えば、仮想VOL番号が「0x0000」であり、ホスト論理アドレスが「0x00002000」の場合には、仮想VOL番号が「0x0000」であり、ホスト論理アドレスが「0x00000000」のレコードを参照し、プール番号「0」、論理VOL番号「0x0000」の論理ボリュームを割り当て先と決定する。さらに、割当て対象のホスト論理アドレス「0x00002000」と、当該レコードのホスト論理アドレス「0x00000000」の差である「0x00002000」を、当該レコードの論理アドレス「0x10000000」に対して加算したアドレス「0x10002000」を、仮想ボリュームに対して割り当てる論理ボリュームの論理アドレスに決定する。なお、SSD400のFMコントローラ20は、ライト要求を受信すると、図32に示すライト処理を実行する。
次に、ティア間動的マイグレーションについて詳細に説明する。ティア間動的マイグレーションは、図13に示した処理である。
図37は、実施例に係るティア間動的マイグレーションのフローチャートの一例である。
ティア間動的マイグレーションは、例えば、定期的に実行される。RAIDコントローラ301は、アクセス頻度テーブル354から1つのレコードを取得し、当該レコードが示す仮想ボリュームの領域(対象仮想ボリューム領域)のデータが格納されている現在のデバイスタイプ354cがSSD(SSD400のデバイスタイプ)であるか否かを判定する(ステップS51)。この結果、デバイスタイプがSSDでない場合(ステップS51でNO)には、RAIDコントローラ301は、ティア間動的マイグレーションを終了する。
一方、デバイスタイプがSSDである場合(ステップS51でYES)には、RAIDコントローラ301は、対応するレコードのアクセス頻度354dが「中」であるか否かを判定する(ステップS52)。この結果、アクセス頻度354dが「中」でない場合(ステップS52でNO)には、RAIDコントローラ301は、処理をステップS57に進める。
一方、アクセス頻度354dが「中」である場合(ステップS52でYES)には、RAIDコントローラ301は、プール管理テーブル351からHDD(SAS)500の空きエクステントを検出して、当該空きエクステントを移動先エクステントとして割り当て(ステップS53)、SSD400から対象仮想ボリューム領域に対応するデータを読み出して、割り当てたHDD(SAS)500のエクステントに移動させる(ステップS54)。次いで、RAIDコントローラ301は、ホストにとって不要になったデータが格納されている領域である不要領域(ここでは移動元のエクステント)に対応するページの数を低減させるための不要低減要求を、不要領域に割り当てられているページを有するSSD400に送信する(ステップS55)。ここで、不要低減要求とは、例えば、固定パターンデータのライト要求、又はアンマップ要求である。固定パターンデータのライト要求は、ライトデータサイズの固定パターンデータを含むライト要求であってもよく、また、固定パターンデータにおける1ページ分の部分データと、固定パターンデータのサイズを示すサイズ情報とを含むライト要求であってもよい。また、不要領域が、複数のSSD400に属する場合には、RAIDグループ301は、それら複数のSSD400に不要低減要求を送信する。なお、不要低減要求を受信する側のFMコントローラ20においては、後述する図40乃至図44のいずれかの処理が実行され、フラッシュメモリパッケージ10における不要データの多くが無効データとされることとなる。
次いで、RAIDコントローラ301は、動的領域割り当てテーブル352及びアクセス頻度テーブル354を更新する(ステップS56)。具体的には、RAIDコントローラ301は、動的領域割り当てテーブル352の対象仮想ボリューム領域に対応するレコードにおけるプール番号352e、論理VOL番号352f、及び論理アドレス352gに、移動先として割り当てられたHDD(SAS)の領域の値を設定し、アクセス頻度テーブル354の対象仮想ボリューム領域に対応するレコードにおける現在のデバイスタイプ354cに「SAS」を設定する。その後、RAIDコントローラ301は、ティア間動的マイグレーションを終了する。
ステップS57では、RAIDコントローラ301は、対応するレコードのアクセス頻度354dが「低」であるか否かを判定する(ステップS57)。この結果、アクセス頻度354dが「低」でない場合(ステップS57でNO)には、RAIDコントローラ301は、ティア間動的マイグレーションを終了する。
一方、アクセス頻度354dが「低」である場合(ステップS57でYES)には、RAIDコントローラ301は、プール管理テーブル351からHDD(SATA)600の空きエクステントを検出して、当該空きエクステントを移動先エクステントとして割り当て(ステップS58)、SSD400から対象仮想ボリューム領域に対応するデータを読み出して、割り当てたエクステントに対応する、HDD(SATA)600の領域に、移動させる(ステップS59)。次いで、RAIDコントローラ301は、移動元のエクステントの基になっているSSD400に不要低減要求を送信する(ステップS60)。
次いで、RAIDコントローラ301は、動的領域割り当てテーブル352及びアクセス頻度テーブル354を更新する。具体的には、RAIDコントローラ301は、動的領域割り当てテーブル352の対象仮想ボリューム領域に対応するレコードにおけるプール番号352e、論理VOL番号352f、及び論理アドレス352gに、移動先として割り当てられたHDD(SATA)600の領域の値を設定し、アクセス頻度テーブル354の対象仮想ボリューム領域に対応するレコードにおける現在のデバイスタイプ354cに「SATA」を設定する。その後、RAIDコントローラ301は、ティア間動的マイグレーションを終了する。
次に、スナップショット作成処理について詳細に説明する。スナップショット作成処理は図21に示した処理である。
図38は、実施例に係るスナップショット作成処理のフローチャートの一例である。
RAIDコントローラ301は、ホスト200からデータ(ライトデータ:新データ)のライト要求を受信すると(ステップS71)、ペア管理テーブル355を参照して、当該ライト要求により指定されている仮想VOL番号が、プライマリVOL番号355aとして登録され、且つ有効性355bが有効であるレコードを検索することにより、スナップショットボリュームへコピーが必要であるか否かを判定する(ステップS72)。
この結果、コピーが必要でない場合(ステップS72でNO)には、処理をステップS76に進める。一方、コピーが必要である場合(ステップS72でYES)には、RAIDコントローラ301は、ライト要求により指定されている仮想ボリューム(プライマリボリューム)の領域に割当てられているエクステントに対応した、SSD400の領域から、格納されているデータ(旧データ)をキャッシュ340へステージングさせる(ステップS73)。
次いで、RAIDコントローラ301は、ステップS72でペア管理テーブル355から検索されたレコードから、スナップショットVOL番号を取得してスナップショットボリュームを特定し、旧データをプライマリボリュームからスナップショットボリュームへキャッシュ340間コピーを行う(ステップS74)。
次いで、RAIDコントローラ301は、旧データをキャッシュ340からスナップショットボリュームに割り当てられている物理領域(ここでは、SSD400のFMチップ32の記憶領域)にデステージし(ステップS75)、処理をステップS76に進める。ステップS76では、RAIDコントローラ301は、新データをプライマリボリュームの対応する領域にライトし(ステップS76)、処理を終了する。
次に、スナップショット削除処理について詳細に説明する。スナップショット削除処理は図23に示した処理である。
図39は、実施例に係るスナップショット削除処理のフローチャートの一例である。
RAIDコントローラ301は、ホスト200からスナップショットを削除する要求(スナップショット削除要求)を受領すると(ステップS81)、スナップショット削除要求に含まれているプライマリVOL番号及びIDとに基づいて、ペア管理テーブル355の対応するレコードを特定し、スナップショットVOL番号を特定した後、当該レコードの有効性355bを無効に変更する(ステップS82)。
次いで、RAIDコントローラ301は、スナップショットデータ割り当てテーブル356から、特定したスナップショットVOL番号が格納されているレコードの中から未処理の1つのレコードを特定し、当該レコードに状態356cが「済」であるか否か、すなわち、スナップショットVOL番号に対応するスナップショットボリュームにプールの領域が割り当てられているか否かを判定する(ステップS83)。
この結果、プールの領域が割り当てられていない場合、すなわち状態356cが「未」の場合(ステップS83でNO)には、スナップショットボリュームのデータが、SSD400に格納されていないことを示しているので、RAIDコントローラ301は、スナップショット削除処理を終了する。
一方、この結果、プールの領域が割り当てられている場合、すなわち状態356cが「済」の場合(ステップS83でYES)には、スナップショットボリュームのデータ(すなわち、不要データ)が、SSD400に格納されていることを示しているので、RAIDコントローラ301は、当該レコードからプール番号、論理VOL番号、及び論理アドレスを取得し、プール番号、論理VOL番号、及び論理アドレスを使用して、プール管理テーブル351から、対応するレコードを特定し、特定したレコードの物理VOL番号に対応するSSD400のフラッシュメモリパッケージ10に、不要低減要求を送信する(ステップS84)。ここで、不要低減要求とは、例えば、固定パターンデータのライト要求、又はアンマップ要求である。固定パターンデータのライト要求は、ライトデータサイズの固定パターンデータを含むライト要求であってもよく、また、固定パターンデータにおける1ページ分の部分データと、固定パターンデータのサイズを示すサイズ情報とを含むライト要求であってもよい。なお、不要低減要求を受信する側のフラッシュメモリパッケージ10のFMコントローラ20においては、後述する図40乃至図44のいずれかの処理が実行され、フラッシュメモリパッケージにおける不要データのデータ量が低減されることとなる。
次いで、RAIDコントローラ301は、スナップショットデータ割り当てテーブル356において、ステップS83で特定したレコードを削除するとともに、ページ管理テーブル351において特定したレコードの状態351gを「空き」に変更し(ステップS85)、処理をステップS83に進め、スナップショットボリュームの他の領域を対象に同様な処理を繰り返し実行する。
上記したスナップショット削除処理によると、SSD400に格納されているスナップショットの削除に係るスナップショットボリュームのデータ(不要データ)のデータ量を低減することができる。
次に、不要低減要求を受信する側のFMコントローラ20における処理の例を図40乃至図44を参照して詳細に説明する。
図40は、実施例に係る第1の例の固定パターンデータライト処理のフローチャートの一例である。
この第1の例の固定パターンデータライト処理は、図15に示した固定パターンデータライト処理である。
この例においては、RAIDコントローラ301からは、論理ボリュームの領域に対して、ライトデータのサイズ(例えば、24KB)の固定パターンデータ1051を書き込ませるライト要求が送信されているものとする。
SSD400のフラッシュメモリパッケージ10のFMコントローラ20は、RAIDコントローラ301から送信されたライト要求を受領すると(ステップS91)、ライト要求の対象のデータ(ライトデータ)が固定パターンデータであるか否かを判定する(ステップS92)。
この結果、ライトデータが固定パターンデータでない場合(ステップS92でNO)には、FMコントローラ20は、固定パターンデータライト処理を終了する。なお、このデータに対しては、通常のデータライト処理が実行されることとなる。
一方、ライトデータが固定パターンデータである場合(ステップS92でYES)には、FMコントローラ20は、物論変換テーブル111を参照し、空ページを検索し(ステップS93)、検索により得られた空ページ(ライト先共通ページ)に対して、固定パターンデータの1ページ分のデータをライトする(ステップS94)。次いで、FMコントローラ20は、論物変換テーブル110及び物論変換テーブル111を更新する(ステップS95)。
具体的には、FMコントローラ20は、物論変換テーブル111のライト対象の論理領域に属する論理アドレスに対応付けられている複数のページ(ここでは、例えば、3ページ)に対応するレコードにおいて、状態111dを無効とする。これにより、ライト対象の論理領域に割り当てられていた複数のページが無効として管理されるようになる。このため、当該ページのデータが、リクラメーションやリフラッシュにおいて、他のページにコピー等されることがなくなるとともに、以降にブロック消去処理を経て、空きページとして利用できることとなる。なお、当該ページを含むブロックのすべてのページが無効となっている場合には、この時点に、当該ブロックの消去を実行して、当該ブロックの全てのページを空ページとするようにしてもよい。このようにすると、空き容量を迅速に増加させることができる。
また、FMコントローラ20は、物論変換テーブル111のライト先共通ページに対応する複数(ここでは、3つ)のレコードにおける状態111dを有効に設定し、各レコードの論理アドレス111eにライト対象の論理領域をページサイズに分割した場合のそれぞれの部分領域に対応する論理アドレスを設定する。これにより、1つのページ(ライト先共通ページ)に対して、ライト対象の論理領域のページサイズに分割した部分領域がそれぞれ割り当てられて管理されることとなる。
また、FMコントローラ20は、論物変換テーブル110のライト対象の論理領域を示す論理アドレスに対応する複数(この例では、3つ)のレコードにおけるFM番号110c、ブロック番号110d、及びページ番号110fを、ライト先共通ページに対応する値に設定する。これにより、ライト対象の論理領域に格納されたデータを、1つのページ(ライト先共通ページ)から取得することができるようになる。これは、固定パターンデータにおける、ページサイズの複数の部分データが同一であるという特徴により実現できる。
ステップS95の後、FMコントローラ20は、処理を終了する。
図41は、実施例に係る第2の例の固定パターンデータライト処理のフローチャートの一例である。
この第2の例の固定パターンデータライト処理は、図16に示した固定パターンデータライト処理である。
この例においては、RAIDコントローラ301からは、論理ボリュームの領域に対して、ライトデータのサイズ(例えば、24KB)の固定パターンデータ1051を書き込ませるライト要求が送信されるものとする。
SSD400のフラッシュメモリパッケージ10のFMコントローラ20は、RAIDコントローラ301から送信されたライト要求を受領すると(ステップS101)、ライト要求の対象のデータ(ライトデータ)が固定パターンデータであるか否かを判定する(ステップS102)。
この結果、ライトデータが固定パターンデータでない場合(ステップS102でNO)には、FMコントローラ20は、固定パターンデータライト処理を終了する。なお、このデータに対しては、通常のデータライト処理が実行されることとなる。
一方、ライトデータが固定パターンデータである場合(ステップS102でYES)には、FMコントローラ20は、物論変換テーブル111を参照し、空ページを検索して、空ページ(ライト先共通ページ)を取得する(ステップS103)。次いで、FMコントローラ20は、論物変換テーブル110及び物論変換テーブル111を更新する(ステップS104)。
具体的には、FMコントローラ20は、物論変換テーブル111のライト対象の論理領域に属する論理アドレスに対応付けられている複数のページ(ここでは、例えば、3ページ)に対応するレコードにおいて、状態111dを無効とする。これにより、ライト対象の論理領域に割り当てられていた複数のページが無効として管理されるようになる。このため、当該ページのデータが、リクラメーションやリフラッシュにおいて、他のページにコピー等されることがなくなるとともに、以降にブロックの消去を経て、空きページとして利用できることとなる。なお、当該ページを含むブロックのすべてのページが無効となっている場合には、この時点に、当該ブロックの消去を実行して、当該ブロックの全てのページを空ページとするようにしてもよい。このようにすると、空き容量を迅速に増加させることができる。
また、FMコントローラ20は、物論変換テーブル111のライト先共通ページに対応する複数(ここでは、3つ)のレコードにおける状態111dを有効に設定し、各レコードの論理アドレス111eにライト対象の論理領域をページサイズに分割したそれぞれの部分領域に対応する論理アドレスを設定する。これにより、1つのページ(ライト先共通ページ)に対して、ライト対象の論理領域のページサイズに分割した部分領域がそれぞれ割り当てられて管理されることとなる。
また、FMコントローラ20は、論物変換テーブル110のライト対象の論理領域を示す論理アドレスに対応する複数(この例では、3つ)のレコードにおけるFM番号110c、ブロック番号110d、及びページ番号110fを、ライト先共通ページに対応する値に設定し、データパターン110fに、固定パターンデータを特定できるパターンデータ(ここでは、“0”)を格納する。これにより、ライト対象の論理領域に格納されたデータを、1つのページ(ライト先共通ページ)に対応付けることができる。これは、固定パターンデータにおけるページサイズの複数の部分データが同一であるという特徴により実現できる。なお、対応する論理領域に対してリード要求が来た場合には、1つのレコードのデータパターン110fに格納されたパターンデータに基づいて、固定パターンデータの1ページ分が作成され、複数のレコードに基づいて、固定パターンデータの全体が作成される。
ステップS104の後、FMコントローラ20は、処理を終了する。
図42は、実施例に係る第3の固定パターンデータライト処理のフローチャートの一例である。
この第3の例の固定パターンデータライト処理は、図17に示した固定パターンデータライト処理である。
この例においては、RAIDコントローラ301からは、論理ボリュームの領域に対して、ライトデータのサイズ(例えば、24KB)の固定パターンデータ1051を書き込む要求として、固定パターンデータ1051を分割したページサイズの部分データと、固定パターンデータ1051の全体のサイズを示すサイズ情報とを含むライト要求(固定パターンデータ指示付きライト要求)が送信されるものとする。したがって、RAIDコントローラ301から、SSD400に対して送信するデータ量を低減することができる。
SSD400のフラッシュメモリパッケージ10のFMコントローラ20は、RAIDコントローラ301から送信された固定パターンデータ指示付きライト要求を受領すると(ステップS111)、物論変換テーブル111を参照し、空ページを検索し(ステップS112)、検索により得られた空ページ(ライト先共通ページ)に対して、固定パターンデータの1ページ分のデータをライトする(ステップS113)。次いで、FMコントローラ20は、論物変換テーブル110及び物論変換テーブル111を更新する(ステップS114)。
具体的には、FMコントローラ20は、ライト対象の論理領域を、ライト要求中のサイズ情報に基づいて特定し、物論変換テーブル111のライト対象の論理領域に属する論理アドレスに対応付けられている複数のページ(ここでは、例えば、3ページ)に対応するレコードにおいて、状態111dを無効とする。これにより、ライト対象の論理領域に割り当てられていた複数のページが無効として管理されるようになる。このため、当該ページのデータが、リクラメーションやリフラッシュにおいて、他のページにコピー等されることがなくなるとともに、以降にブロックの消去を経て、空きページとして利用できることとなる。なお、当該ページを含むブロックのすべてのページが無効となっている場合には、この時点に、当該ブロックの消去を実行して、当該ブロックの全てのページを空ページとするようにしてもよい。このようにすると、空き容量を迅速に増加させることができる。
また、FMコントローラ20は、物論変換テーブル111のライト先共通ページに対応する複数(ここでは、3つ)のレコードにおける状態111dを有効に設定し、各レコードの論理アドレス111eにライト対象の論理領域をページサイズに分割した場合のそれぞれのページに対応する論理アドレスを設定する。これにより、1つのページ(ライト先共通ページ)に対して、ライト対象の論理領域のページサイズに分割した部分領域がそれぞれ割り当てられて管理されることとなる。
また、FMコントローラ20は、論物変換テーブル110のライト対象の論理領域を示す論理アドレスに対応する複数(この例では、3つ)のレコードにおけるFM番号110c、ブロック番号110d、及びページ番号110fを、ライト先共通ページに対応する値に設定する。これにより、ライト対象の論理領域に格納されたデータを、1つのページ(ライト先共通ページ)から取得することができるようになる。これは、固定パターンデータにおけるページサイズの複数の部分データが同一であるという特徴により実現できる。
図43は、実施例に係る第4の固定パターンデータライト処理のフローチャートの一例である。
この第4の例の固定パターンデータライト処理は、図18に示した固定パターンデータライト処理である。
この例においては、RAIDコントローラ301からは、論理ボリュームの領域に対して、ライトデータのサイズ(例えば、24KB)の固定パターンデータ1051を書き込む要求として、固定パターンデータ1051を分割したページサイズの部分データと、固定パターンデータ1051のサイズを示すサイズ情報とを含むライト要求(固定パターンデータ指示付きライト要求)が送信されるものとする。したがって、RAIDコントローラ301から、SSD400に対して送信するデータ量を低減することができる。
SSD400のフラッシュメモリパッケージ10のFMコントローラ20は、RAIDコントローラ301から送信された固定パターンデータ指示付きライト要求を受領すると(ステップS121)、物論変換テーブル111を参照し、空ページを検索して、空ページ(ライト先共通ページ)を取得する(ステップS122)。次いで、FMコントローラ20は、論物変換テーブル110及び物論変換テーブル111を更新する(ステップS123)。
具体的には、FMコントローラ20は、ライト対象の論理領域を、ライト要求中のサイズ情報に基づいて特定し、物論変換テーブル111のライト対象の論理領域に属する論理アドレスに対応付けられている複数のページ(ここでは、例えば、3ページ)に対応するレコードにおいて、状態111dを無効とする。これにより、ライト対象の論理領域に割り当てられていた複数のページが無効として管理されるようになる。このため、当該ページのデータが、リクラメーションやリフラッシュにおいて、他のページにコピー等されることがなくなるとともに、以降にブロックの消去を経て、空きページとして利用できることとなる。なお、当該ページを含むブロックのすべてのページが無効となっている場合には、この時点に、当該ブロックの消去を実行して、当該ブロックの全てのページを空ページとするようにしてもよい。このようにすると、空き容量を迅速に増加させることができる。
また、FMコントローラ20は、物論変換テーブル111のライト先共通ページに対応する複数(ここでは、3つ)のレコードにおける状態111dを有効に設定し、各レコードの論理アドレス111eにライト対象の論理領域をページサイズに分割した複数の部分領域のそれぞれに対応する論理アドレスを設定する。これにより、1つのページ(ライト先共通ページ)に対して、ライト対象の論理領域のページサイズの複数の部分領域がそれぞれ割り当てられて管理されることとなる。
また、FMコントローラ20は、論物変換テーブル110のライト対象の論理領域を示す論理アドレスに対応する複数(この例では、3つ)のレコードにおけるFM番号110c、ブロック番号110d、及びページ番号110fを、ライト先共通ページに対応する値に設定し、データパターン110fに、固定パターンデータを特定できるパターンデータ(ここでは、“0”)を格納する。これにより、ライト対象の論理領域に格納されたデータを、1つのページ(ライト先共通ページ)に対応付けることができる。これは、固定パターンデータにおけるページサイズの複数の部分データが同一であるという特徴により実現できる。なお、対応する論理領域に対してリード要求が来た場合には、1つのレコードのデータパターン110fに格納されたパターンデータに基づいて、固定パターンデータの1ページ分が作成され、複数のレコードに基づいて、固定パターンデータの全体が作成される。
図44は、実施例に係るアンマップ要求処理のフローチャートの一例である。
SSD400のフラッシュメモリパッケージ10のFMコントローラ20は、RAIDコントローラ301から送信されたアンマップ要求を受領すると(ステップS131)、アンマップ要求1901の論理アドレス1902及びデータ長1903の値に基づいて、対応する論理アドレスの記憶領域の範囲(無効化範囲)を特定し(ステップS132)、論物変換テーブル110、物論変換テーブル111を更新する(ステップS133)。
具体的には、FMコントローラ20は、物論変換テーブル111の無効化範囲に属する領域を示す論理アドレスに対応付けられている複数のレコードにおける状態111dを無効に設定する。これにより、無効化範囲に属する複数のページが無効として管理されるようになる。このため、当該ページのデータが、リクラメーションやリフラッシュにおいて、他のページにコピー等されることがなくなるとともに、以降にブロックの消去を経て、空きページとして利用できることとなる。
また、FMコントローラ20は、論物変換テーブル110の無効化範囲に属する領域を示す論理アドレスに対応付けられているレコードにおいて、状態111dを無効と設定する。これにより、無効化範囲に属する領域の論理アドレスは、ページが割り当てられていない状態として管理されることとなる。
このアンマップ要求処理によると、不要なデータが格納されているページを無効ページとすることができ、以降に実行されるブロック消去処理を経て、空きページとして利用できるようになる。
以上、一実施例を説明したが、本発明は、この実施例に限定されるものでなく、その趣旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、上記実施例では、不揮発半導体メモリの一例として、NAND型のフラッシュメモリが採用されているが、不揮発半導体メモリは、これに限られない。例えば、不揮発半導体メモリは、相変換メモリでもよい。
また、上記実施例では、不要データがSSD400に発生する例として、ティア間動的マイグレーションと、スナップショット削除処理とを示していたが、この例に限らず、不要データが発生する場合であれば、本発明を適用することができる。
また、例えば、RAIDコントローラ301が、フラッシュメモリパッケージ10に、固定パターンデータ又は部分データを送信することに代えて、固定パターンデータのライト先領域の論理アドレスを通知し、FMコントローラ20が、固定パターンデータ又は部分データを作成し、そのデータを、通知された論理アドレスの指定された領域に割り当てる物理領域に書き込んでもよい。
1…ストレージシステム、10…フラッシュメモリPKG、400…SSD

Claims (15)

  1. ホストに接続されたストレージシステムであって、
    複数のページで構成された不揮発半導体メモリと、各ページの状態を示すページ管理情報を記憶する記憶媒体と、それらに接続されたメモリコントローラとを含んだ不揮発半導体記憶デバイスと、
    前記不揮発半導体記憶デバイスに接続されており、前記不揮発半導体メモリに基づく論理ボリュームに対するアクセスを制御するストレージコントローラと
    を有し、
    ページの状態として、論理ボリュームの領域に割り当てられておりデータが格納されているページであることを意味する有効と、論理ボリュームの領域に割り当てられていないがデータが格納されているページであることを意味する無効とがあり、
    前記論理ボリュームの領域の基になっている複数のページに格納されているデータが前記ホストにとって不要となる場合に、以下の(A)及び(B)が行われる、
    (A)前記ストレージコントローラが、前記不要となるデータが格納されている領域の基になっているページの数を低減させるための不要低減要求を送信する、
    (B)前記メモリコントローラが、前記不要低減要求に基づいて、前記ページ管理情報において、前記不要となるデータが格納されている領域の基になっている複数のページを無効と設定する、
    ストレージシステム。
  2. 前記ページ管理情報は、前記ページと前記ページが割り当てられている論理ボリュームの領域との対応関係を記憶し、
    前記(A)において、前記ストレージコントローラは、前記不要低減要求として、前記不要となるデータが格納されている前記複数のページが割り当てられている前記論理ボリュームの領域に対して固定パターンデータを書き込むための書き込み要求を送信し、
    前記固定パターンデータは、共通するパターンを有する複数の部分データを有し、前記部分データのサイズは、前記ページのサイズであり、
    前記(B)において、前記メモリコントローラは、
    (b1)前記書込み要求が示す論理ボリュームの領域に対応付けられている複数のページを特定し、
    (b2)前記ページ管理情報において、特定した複数の前記ページを無効と設定し、
    (b3)前記固定パターンデータの中の前記部分データを前記複数のページと異なる1つのページに書き込み、
    (b4)前記ページ管理情報において、前記論理ボリュームの前記領域中のページのサイズ単位の複数の領域を、前記部分データを書き込んだ前記1つのページと対応付ける、
    請求項1に記載のストレージシステム。
  3. 前記ストレージシステムは、前記不揮発半導体記憶デバイスと異なる1以上の他の記憶デバイスを含み、
    前記ストレージシステムは、前記不揮発半導体記憶デバイスの1以上のページが割り当てられていた前記論理ボリュームの領域に対して、前記他の記憶デバイスの領域を割り当てる場合に、前記(A)において、前記論理ボリュームの前記領域の基になっている複数のページを有する不揮発性記憶デバイスに、前記不要低減要求を送信する、
    請求項2に記載のストレージシステム。
  4. 前記ストレージシステムは、プライマリボリュームのスナップショットを表す仮想的な論理ボリュームであるスナップショットボリュームを有し、
    前記ストレージコントローラは、前記スナップショットボリュームの削除要求を受け取った場合に、当該スナップショットボリュームに割り当てられている、前記論理ボリュームの領域の基になっているページを有する前記不揮発性記憶デバイスに対して、前記(A)を行う、
    請求項2に記載のストレージシステム。
  5. 前記不要となるデータが格納されている前記複数のページが割り当てられている前記論理ボリュームの領域に対する書込み要求は、共通するパターンを有する複数の部分データを有する固定パターンデータにおける前記部分データと、前記固定パターンデータのサイズを特定可能なサイズ情報とを含み、
    各部分データのサイズは、前記ページのサイズであり、
    前記(B)において、前記メモリコントローラは、前記サイズ情報に基づいて、前記書込み要求が示す論理ボリュームの領域の範囲を特定し、当該特定した前記論理ボリュームの領域の範囲に対応付けられている複数のページを特定する、
    請求項2に記載のストレージシステム。
  6. 前記ページ管理情報は、前記ページと前記ページが割り当てられている論理ボリュームの領域との対応関係を記憶し、
    前記(A)において、前記ストレージコントローラは、前記不要低減要求として、前記不要となるデータが格納されている前記複数のページが割り当てられている前記論理ボリュームの領域に対して、共通するパターンを有する複数の部分データを有する固定パターンデータを書き込むための書き込み要求を送信し、
    各部分データのサイズは、前記ページのサイズであり、
    前記(B)において、前記メモリコントローラは、
    (b1)前記書込み要求が示す論理ボリュームの領域に対応付けられている複数のページを特定し、
    (b2)前記ページ管理情報における特定した複数の前記ページを無効と設定し、
    (b3)前記ページ管理情報において、前記論理ボリュームの前記領域中のページのサイズ単位の複数の領域を、前記複数のページと異なる1つのページと対応付けるとともに、前記1つのページに前記固定パターンデータを特定することのできるデータパターンを対応付ける、
    請求項1に記載のストレージシステム。
  7. 前記ストレージシステムは、前記不揮発半導体記憶デバイスと異なる1以上の他の記憶デバイスを含み、
    前記ストレージシステムは、前記不揮発半導体記憶デバイスの1以上のページが割り当てられていた前記論理ボリュームの領域に対して、前記他の記憶デバイスの領域を割り当てる場合に、前記(A)において、前記論理ボリュームの前記領域の基になっている複数のページを有する不揮発性記憶デバイスに、前記不要低減要求を送信する、
    請求項6に記載のストレージシステム。
  8. 前記ストレージシステムは、プライマリボリュームのスナップショットを表す仮想的な論理ボリュームであるスナップショットボリュームを有し、
    前記ストレージコントローラは、前記スナップショットボリュームの削除要求を受け取った場合に、当該スナップショットボリュームに割り当てられている、前記論理ボリュームの領域の基になっているページを有する前記不揮発性記憶デバイスに対して、前記(A)を行う、
    請求項6に記載のストレージシステム。
  9. 前記不要となるデータが格納されている前記複数のページが割り当てられている前記論理ボリュームの領域に対する書込み要求は、共通するパターンを有する複数の部分データを有する固定パターンデータにおける前記部分データと、前記固定パターンデータのサイズを特定可能なサイズ情報とを含み、
    各部分データのサイズは、前記ページのサイズであり、
    前記(B)において、前記メモリコントローラは、前記サイズ情報に基づいて、前記書込み要求が示す論理ボリュームの領域の範囲を特定し、当該特定した前記論理ボリュームの領域の範囲に対応付けられている複数のページを特定する、
    請求項6に記載のストレージシステム。
  10. 前記ページ管理情報は、前記ページと前記ページが割り当てられている論理ボリュームの領域との対応関係を記憶し、
    前記(A)において、前記ストレージコントローラは、前記不要低減要求として、前記不要となるデータが格納されている前記複数のページが割り当てられている前記論理ボリュームの領域の範囲を示す範囲情報を含むアンマップ要求を送信し、
    前記(B)において、前記メモリコントローラは、前記アンマップ要求に含まれる範囲情報と、前記ページ管理情報とに基づいて、前記範囲情報が示す領域の範囲に属する複数のページを特定し、ページ管理情報における特定した複数の前記ページを無効と設定する、
    請求項1に記載のストレージシステム。
  11. 前記ストレージシステムは、前記不揮発半導体記憶デバイスと異なる1以上の他の記憶デバイスを含み、
    前記ストレージシステムは、前記不揮発半導体記憶デバイスの1以上のページが割り当てられていた前記論理ボリュームの領域に対して、前記他の記憶デバイスの領域を割り当てる場合に、前記(A)において、前記論理ボリュームの前記領域の基になっている複数のページを有する不揮発性記憶デバイスに、前記不要低減要求を送信する、
    請求項10に記載のストレージシステム。
  12. 前記ストレージシステムは、プライマリボリュームのスナップショットを表す仮想的な論理ボリュームであるスナップショットボリュームを有し、
    前記ストレージコントローラは、前記スナップショットボリュームの削除要求を受け取った場合に、当該スナップショットボリュームに割り当てられている、前記論理ボリュームの領域の基になっているページを有する前記不揮発性記憶デバイスに対して、前記(A)を行う、
    請求項10に記載のストレージシステム。
  13. 前記ストレージシステムは、前記不揮発半導体記憶デバイスと異なる1以上の他の記憶デバイスを含み、
    前記ストレージシステムは、前記不揮発半導体記憶デバイスの1以上のページが割り当てられていた前記論理ボリュームの領域に対して、前記他の記憶デバイスの領域を割り当てる場合に、前記(A)において、前記論理ボリュームの前記領域の基になっている複数のページを有する不揮発性記憶デバイスに、前記不要低減要求を送信する、
    請求項1に記載のストレージシステム。
  14. 前記ストレージシステムは、プライマリボリュームのスナップショットを表す仮想的な論理ボリュームであるスナップショットボリュームを有し、
    前記ストレージコントローラは、前記スナップショットボリュームの削除要求を受け取った場合に、当該スナップショットボリュームに割り当てられている、前記論理ボリュームの領域の基になっているページを有する前記不揮発性記憶デバイスに対して、前記(A)を行う、
    請求項1に記載のストレージシステム。
  15. ホストに接続されたストレージシステムの記憶制御方法であって、
    複数のページで構成された不揮発半導体メモリを含んだ不揮発半導体記憶デバイスに基づく論理ボリュームの領域の基になっている複数のページに格納されているデータが前記ホストにとって不要となる場合に、
    前記不要となるデータが格納されている領域の基になっているページの数を低減させるための不要低減要求を前記不揮発半導体記憶デバイスに送信し、
    前記不揮発半導体記憶デバイスは、前記不要低減要求に基づいて、前記不要となるデータが格納されている領域の基になっている複数のページを無効とする、
    記憶制御方法。
JP2014528734A 2012-03-13 2012-03-13 不揮発半導体メモリを含んだ不揮発半導体記憶デバイスを有するストレージシステム Expired - Fee Related JP5882467B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/001743 WO2013136362A1 (en) 2012-03-13 2012-03-13 Storage system having nonvolatile semiconductor storage device with nonvolatile semiconductor memory

Publications (2)

Publication Number Publication Date
JP2015501960A true JP2015501960A (ja) 2015-01-19
JP5882467B2 JP5882467B2 (ja) 2016-03-09

Family

ID=49158791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014528734A Expired - Fee Related JP5882467B2 (ja) 2012-03-13 2012-03-13 不揮発半導体メモリを含んだ不揮発半導体記憶デバイスを有するストレージシステム

Country Status (5)

Country Link
US (1) US9116622B2 (ja)
EP (1) EP2791775A1 (ja)
JP (1) JP5882467B2 (ja)
CN (1) CN104106038A (ja)
WO (1) WO2013136362A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021501941A (ja) * 2017-11-07 2021-01-21 ホアウェイ・テクノロジーズ・カンパニー・リミテッド メモリブロックリクレーム方法およびメモリブロックリクレーム装置

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8938584B2 (en) * 2012-04-30 2015-01-20 Dell Products, Lp System and method to keep parity consistent in an array of solid state drives when data blocks are de-allocated
US20140089458A1 (en) * 2012-09-27 2014-03-27 Peter Alexander CARIDES Network storage system with flexible drive segmentation capability
TWI619015B (zh) * 2014-04-09 2018-03-21 瑞昱半導體股份有限公司 記憶體控制器以及記憶體控制方法
US9880770B2 (en) * 2015-09-02 2018-01-30 SK Hynix Inc. Supporting invalidation commands for non-volatile memory
US10140034B2 (en) * 2015-11-24 2018-11-27 International Business Machines Corporation Solid-state drive assignment based on solid-state drive write endurance
TWI557561B (zh) * 2016-02-05 2016-11-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
CN107102951B (zh) * 2016-02-19 2019-08-06 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器储存装置
JP6448570B2 (ja) * 2016-03-08 2019-01-09 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
US10268385B2 (en) * 2016-05-03 2019-04-23 SK Hynix Inc. Grouped trim bitmap
KR102615151B1 (ko) * 2016-06-23 2023-12-18 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 시스템
KR20180055296A (ko) 2016-11-16 2018-05-25 삼성전자주식회사 컴퓨터 시스템, 및 컴퓨터 시스템의 동작 방법
JP6765322B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
KR102423278B1 (ko) * 2017-11-28 2022-07-21 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN110737397B (zh) * 2018-07-20 2023-08-11 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
KR20230035947A (ko) 2021-09-06 2023-03-14 삼성전자주식회사 저장 장치 및 그의 동작 방법
US20240070065A1 (en) * 2022-08-30 2024-02-29 Dell Products L.P. Method to offload memory tiering from the cpu to the memory device

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006209636A (ja) * 2005-01-31 2006-08-10 Hitachi Ltd スナップショット維持方法
JP2007115232A (ja) * 2005-09-22 2007-05-10 Hitachi Ltd 低消費電力記憶装置とその制御方法
JP2008015623A (ja) * 2006-07-03 2008-01-24 Hitachi Ltd 複数種類の記憶デバイスを備えたストレージシステムの制御装置
JP2008159013A (ja) * 2006-11-28 2008-07-10 Hitachi Ltd 半導体記憶装置
JP2009187237A (ja) * 2008-02-06 2009-08-20 Hitachi Ltd スナップショットを管理する記憶制御装置及び方法
JP2009301525A (ja) * 2008-05-14 2009-12-24 Hitachi Ltd フラッシュメモリを用いたストレージ装置
WO2010097832A1 (en) * 2009-02-26 2010-09-02 Hitachi, Ltd. Storage system comprising raid group
JP2010282608A (ja) * 2009-06-03 2010-12-16 Hitachi Ltd 動的チャンク割り当て機能を有するデータストレージシステムに於けるデータボリューム生成を制御するための方法及び装置
WO2011024239A1 (en) * 2009-08-31 2011-03-03 Hitachi, Ltd. Storage system having plurality of flash packages
US20110202709A1 (en) * 2008-03-19 2011-08-18 Rambus Inc. Optimizing storage of common patterns in flash memory

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US20110179219A1 (en) * 2004-04-05 2011-07-21 Super Talent Electronics, Inc. Hybrid storage device
US7568075B2 (en) * 2005-09-22 2009-07-28 Hitachi, Ltd. Apparatus, system and method for making endurance of storage media
US8151060B2 (en) 2006-11-28 2012-04-03 Hitachi, Ltd. Semiconductor memory system having a snapshot function
US8935302B2 (en) * 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
JP5234348B2 (ja) * 2008-11-21 2013-07-10 株式会社日立製作所 オンラインボリュームと性能/障害独立かつ容量効率の高いスナップショットを実現するストレージシステム及び方法
JP2012128816A (ja) * 2010-12-17 2012-07-05 Toshiba Corp メモリシステム
TWI459197B (zh) * 2011-04-21 2014-11-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006209636A (ja) * 2005-01-31 2006-08-10 Hitachi Ltd スナップショット維持方法
JP2007115232A (ja) * 2005-09-22 2007-05-10 Hitachi Ltd 低消費電力記憶装置とその制御方法
JP2008015623A (ja) * 2006-07-03 2008-01-24 Hitachi Ltd 複数種類の記憶デバイスを備えたストレージシステムの制御装置
JP2008159013A (ja) * 2006-11-28 2008-07-10 Hitachi Ltd 半導体記憶装置
JP2009187237A (ja) * 2008-02-06 2009-08-20 Hitachi Ltd スナップショットを管理する記憶制御装置及び方法
US20110202709A1 (en) * 2008-03-19 2011-08-18 Rambus Inc. Optimizing storage of common patterns in flash memory
JP2009301525A (ja) * 2008-05-14 2009-12-24 Hitachi Ltd フラッシュメモリを用いたストレージ装置
WO2010097832A1 (en) * 2009-02-26 2010-09-02 Hitachi, Ltd. Storage system comprising raid group
JP2010282608A (ja) * 2009-06-03 2010-12-16 Hitachi Ltd 動的チャンク割り当て機能を有するデータストレージシステムに於けるデータボリューム生成を制御するための方法及び装置
WO2011024239A1 (en) * 2009-08-31 2011-03-03 Hitachi, Ltd. Storage system having plurality of flash packages
JP2012523594A (ja) * 2009-08-31 2012-10-04 株式会社日立製作所 複数のフラッシュパッケージを有するストレージシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021501941A (ja) * 2017-11-07 2021-01-21 ホアウェイ・テクノロジーズ・カンパニー・リミテッド メモリブロックリクレーム方法およびメモリブロックリクレーム装置
US11886333B2 (en) 2017-11-07 2024-01-30 Huawei Technologies Co., Ltd. Memory block reclamation method and apparatus

Also Published As

Publication number Publication date
US20130246722A1 (en) 2013-09-19
JP5882467B2 (ja) 2016-03-09
CN104106038A (zh) 2014-10-15
US9116622B2 (en) 2015-08-25
EP2791775A1 (en) 2014-10-22
WO2013136362A1 (en) 2013-09-19

Similar Documents

Publication Publication Date Title
JP5882467B2 (ja) 不揮発半導体メモリを含んだ不揮発半導体記憶デバイスを有するストレージシステム
US10162536B2 (en) Storage apparatus and storage control method
US9684593B1 (en) Techniques using an encryption tier property with application hinting and I/O tagging
JP5657801B2 (ja) ストレージシステムおよび記憶制御方法
JP6000376B2 (ja) 特性の異なる複数種類のキャッシュメモリを有する情報処理装置
US9189391B2 (en) Storage system and data control method therefor
US11237742B2 (en) Apparatus and method for controlling data stored in memory system
JP5646633B2 (ja) ストレージ装置
US10360144B2 (en) Storage apparatus and non-volatile memory device including a controller to selectively compress data based on an update frequency level
US20150347310A1 (en) Storage Controller and Method for Managing Metadata in a Cache Store
US20120254513A1 (en) Storage system and data control method therefor
US10235069B2 (en) Load balancing by dynamically transferring memory range assignments
KR20150105323A (ko) 데이터 스토리지 방법 및 시스템
JP2012515954A (ja) 論理アドレスオフセット
US20180196755A1 (en) Storage apparatus, recording medium, and storage control method
US11543989B2 (en) Storage system and control method thereof
US11093134B2 (en) Storage device, management method, and program in tiered storage system
US10310758B2 (en) Storage system and storage control method
WO2013014699A1 (en) Storage system and its logical unit management method
CN115458013A (zh) 存储装置及其操作方法
US20140317367A1 (en) Storage apparatus and data copy control method
JP5873545B2 (ja) ストレージシステムおよび記憶制御方法
EP4220414A1 (en) Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150408

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150428

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150624

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160203

R150 Certificate of patent or registration of utility model

Ref document number: 5882467

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees