以下、本発明の一実施形態を説明する。
なお、以下の説明では、「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。
また、以下の説明では、種々の対象(例えば、論理ユニット、ブロック、ページ)の識別情報の種類として、番号が採用されるが、他種の識別情報が採用されても良い。
また、以下の説明において、後述するストレージコントローラ及びFMコントローラが行う処理の少なくとも一部が、プロセッサ(例えばCPU(Central Processing Unit))がコンピュータプログラムを実行することによって行われる。プロセッサは、CPUそれ自体であっても良いし、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。プログラムは、プログラムソースから各コントローラにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
図1−3を参照して、本実施形態の概要を以下に説明する。
図1にあるように、ストレージシステム100は、複数のフラッシュメモリパッケージ(以下、FMパッケージという)120と、複数のFMパッケージ120に接続されたストレージコントローラ110とを有する。
FMパッケージ120は、複数のフラッシュメモリチップ(以下、FMチップという)を有する。本実施形態では、FMチップは、NAND型のFMチップであるが、他の型式のFMチップであってもよい。FMチップは、複数の物理ブロックで構成されている。各物理ブロックは、複数の物理ページで構成されている。
複数のFMパッケージ120のうち各二以上のFMパッケージ120により、RAIDグループ140が構成される(RAIDは、Redundant Array of Independent (or Inexpensive) Disksの略である)。RAIDグループ140は、パリティグループと呼ばれることもある。なお、本実施形態では、二以上のFMパッケージ120でRAIDグループ140が構成されているが、必ずしもRAIDグループが構成されなくてもよい。例えば、ストレージシステムが有するFMパッケージの数は、1つでもよい。
ストレージコントローラ110は、RAIDグループ140が提供する記憶空間200を論理的に区切ることで、複数(又は一つ)の論理ユニット(以下、LUという)130を形成する。記憶空間200を構成する複数のLU130のうちの少なくとも一つが、ストレージシステム100の上位装置としてのホスト装置2に提供される。図1では、LU130の例としてLU#1が示されている。以下の説明では、LU番号がn(nは整数)のLU130を「LU#n」と表すことがある。
ストレージコントローラ110は、ホスト装置2からI/Oコマンド(ライトコマンド或いはリードコマンド)を受信する。I/Oコマンドは、I/O先を表す情報として、例えば、LU130の識別情報と、そのLU130における領域を表す論理アドレスを表す情報とを有する。LU130の識別情報は、例えば、LUN(Logical Unit Number)である。論理アドレスは、例えば、LBA(Logical Block Address)である。
ストレージコントローラ110は、LU#1を指定したI/Oコマンドをホスト装置2から受けて、そのI/Oコマンドに応答して、そのI/Oコマンド(ライトコマンド)で指定されているLU#1にライト対象のデータを書き込む、或いは、そのI/Oコマンド(リードコマンド)で指定されているLU#1からリード対象のデータを読み出す。LU#1にライト対象のデータが書き込まれるということは、その書き込み先を表す論理アドレスに対応した一又は複数の物理ページにライト対象のデータが書き込まれるということである。また、LU#1からリード対象のデータが読み出されるということは、その読み出し元を表す論理アドレスに対応した一又は複数の物理ページから、リード対象のデータが読み出されるということである。
また、このストレージシステム100は、バックアップ機能の1つとして、スナップショット機能を有する。スナップショット機能とは、ホスト装置2から認識可能なLU#1のある時点でのフルバックアップイメージを取得する機能である。例えば、スナップショット機能を用いることで、ホスト装置2からの要求された所定の時点でのLU#1のフルバックアップイメージの復元が可能となる。図1に示す例によれば、スナップショット1,2及び3という、LU#1の異なる3つの時点でのフルバックアップイメージが管理されている。ストレージコントローラ110は、LU#1を指定したスナップショットコマンド(以下、SSコマンドという)をホスト装置2から受けて、そのSSコマンドに応答して、そのSSコマンドで指定されている時点(或いは、そのSSコマンドを受けた時点)でのLU#1のスナップショットを取得する。スナップショットの取得とは、その取得時点のLUを構成する各領域(各論理アドレスが表す領域)に格納されているデータを、後に読み出しできるようにすることである。詳細に説明すると、スナップショットの取得時点以降に更新が行われた各領域の更新前のデータは、差分データとして消去されることなく管理されている。そして、その差分データは、FMパッケージ120内に格納されており、どの時点の差分データであるかという付加情報も別途(若しくは一緒に)世代情報として管理されている。このため、どの差分データがどのスナップショット(フルバックアップイメージ)に含まれているデータかがわかり、スナップショット取得時点のスナップショットを復元することができる。
さて、本実施形態では、FMパッケージ120の構成要素として、前述したように、NAND型のFMチップが採用されている。NAND型のFMチップは、下記の特徴を有する。
(1)NAND型FMチップは、読み書きの単位がページであり、消去単位がブロックである。ライトコマンドがあった場合、ライト対象のデータは、1又は複数の物理ページに書き込まれる。また、リードコマンドがあった場合、1又は複数の物理ページに書き込まれたリード対象データが読み出される。なお、この場合、ライト(又はリード)対象のデータは、1(又は複数)の物理ページのすべてに書き込まれるに限られない。ライト(又はリード)対象のデータは、1(又は複数)の物理ページの一部分に書き込まれる場合もある。また、データの消去は、複数のページで構成されたブロック毎に行われる。
(2)NAND型FMチップは、追記型の記憶媒体である。NAND型FMチップのページは、上書きできない。データが更新される際には、ライト対象のデータは空きページに書き込まれ、更新前のデータが格納されたページは、無効なページとなる。このため、データ領域を有効活用するために、リクラメーション処理が必要となる。
(3)NAND型FMチップは、ブロックの消去回数に制限がある。
(4)NAND型FMチップは、データリテンションによりリードエラーが発生しやすい。なお、ここでは、データリテンションとは、FMチップに格納されているデータは一定期間しか保持できないフラッシュメモリの特性のことをいう。
このため、ストレージシステム100においては、リクラメーション処理、リフレッシュ処理などのFM特有の処理、及び、ウェアレベリング処理を行うことが望ましい。各処理及びウェアレベリング処理を以下に説明する。以下の説明では、LUに格納されているデータを有効データといい、LUに格納されていないデータを無効データ(有効データが更新され、無効となったデータ)という場合がある。また、スナップショット取得時点における差分データをスナップショットデータ(以下、SSデータという)という場合がある。さらに、FMチップ内において、有効データが格納されているページを有効ページ、無効データが格納されているページを無効ページ、SSデータが格納されているページをスナップショットページ(以下、SSページという)という場合がある。
リクラメーション処理は、空きページのみで構成されたブロック(以下、空きブロックという)を作り出す処理である。具体的には、複数の有効ページが複数(又は一つ)の物理ブロックに分散して存在する場合に、複数の有効ページ内の有効データを1個の物理ブロックに集約し、無効ページのみで構成されたブロック(以下、無効ブロックという)を作り、無効ブロックを消去する処理である。リクラメーション処理の対象となるブロック(以下、RC対象ブロック)は、例えば、ブロックに割り当てられているページのうち、無効ページ数が閾値以上になったブロックである。
リフレッシュ処理は、データリテンションによるリードエラーを防止するため、所定時間以上経過したブロックのデータを別の物理ブロックに移動する処理である。本実施形態では、リフレッシュ処理の対象となるブロック(以下、RF対象ブロック)は、例えば、最終のライト時刻からの経過時間が閾値以上になったブロックである。しかし、リフレッシュ処理の対象となるブロックは、最終ライト時刻からの経過時間が閾値以上となるブロックに限られず、例えば、最初のライト時刻からの経過時間が閾値以上となるブロックである等、所定の動作からの経過時間が閾値以上となるブロックであればよいものとする。
ウェアレベリング処理は、FMチップ内のブロック毎の消去回数(又は書込み回数、以下同様)を均一化させるための処理である。具体的には、ウェアレベリング処理では、ブロック毎の消去回数を均一化すべく、フラッシュメモリ内のあるページにライトする場合に、例えば、消去回数が閾値未満のブロックのページを割り当てる。
本実施形態にあっては、上述した処理(リクラメーション処理、リフレッシュ処理及びウェアレベリング処理)は、FMパッケージ毎に、後述する各FMパッケージ内のコントローラ(以下、FMコントローラという)によって行われる。また、以下に説明するSSデータの退避処理についても、同様に、各FMコントローラによって行われる。以下に、概要を説明する。
図2は、本実施形態におけるリクラメーション処理実行中のSSデータの退避処理の概要を説明する図である。なお、以下の説明において、「ブロックを消去する」とは、具体的には、ブロックに対して消去処理を行うことで空きブロックを生成することを意味する。
FMコントローラが行う処理を以下に示す。
FMコントローラは、リクラメーション処理を行う。リクラメーション処理を行う前処理として、RC対象ブロック511RC内にSSページがある場合には、FMコントローラはSSデータの退避処理を行う。具体的には、FMコントローラは、FMパッケージ内のブロック群511Gの中から、RC対象ブロック511RCとして、無効ページ数が閾値以上のブロックを抽出する。FMコントローラは、抽出したRC対象ブロック511RC内にSSページが存在するか否かを判定する。SSページが存在する場合には、FMコントローラは、以下のSSデータ退避処理を行う。
(A)FMコントローラは、FMパッケージ内のブロック群511Gの中から、消去回数が閾値以上のブロック(以下、この説明では第1コピー対象ブロックという)511Caを抽出する。
(B)FMコントローラは、RC対象ブロック511RCにおける1以上のSSページの各々について、下記の処理(b1)及び(b2)を行う。
(b1)FMコントローラは、SSページ内のSSデータを第1コピー対象ブロック内の空きページにコピーする。
(b2)FMコントローラは、コピー元のSSページを無効ページとし、コピー先の空きページを、SSページとする。
SSデータ退避処理で、第1コピー対象ブロックにSSページを生成することによって、消去回数が閾値以上のブロック(第1コピー対象ブロック)については、SSページには更新ライトが実施されないことが自明なので、消去回数を維持することが可能となる。
FMコントローラは、SSページの無いRC対象ブロック(具体的には、SSデータ退避処理が行われることによりSSページが無くなったRC対象ブロック及び/又は、SSデータ退避処理を行わなくてもSSページが存在していないRC対象ブロック)について、リクラメーション処理を行う。リクラメーション処理を以下に説明する。
(F)FMコントローラは、FMパッケージ内のブロック群511Gの中から、消去回数が閾値未満のブロック(以下、この説明では第2コピー対象ブロックという)511Cbを抽出する。
(G)FMコントローラは、RC対象ブロック511RCに1以上の有効ページが存在するか否かを判定する。
(H)上記(G)の判定の結果が肯定的の場合、FMコントローラは、各有効ページについて、下記の(h1)及び(h2)を行う。
(h1)FMコントローラは、有効ページの有効データを第2コピー対象ブロックの空きページにコピーする。
(h2)FMコントローラは、コピー元の有効ページを無効ページとし、コピー先の空きページを有効ページとする。
(I)FMコントローラは、すべてのページが無効ページとなったRC対象ブロックを消去することで、空きブロックが生成される。
リクラメーション処理で第2コピー対象ブロックに有効ページを増やすことによって、消去回数が閾値未満のブロックを消去する確率を高めることができる。
図3は、本実施形態におけるリフレッシュ処理実行中のSSデータの退避処理の概要を説明する図である。なお、以下の説明において、「ブロックを消去する」とは、具体的には、ブロックに対して消去処理を行うことで空きブロックを生成することを意味する。
FMコントローラが行う処理を以下に示す。
FMコントローラは、リフレッシュ処理を行う。リフレッシュ処理を行う前処理として、RF対象ブロック511RF内にSSページがある場合には、FMコントローラはSSデータの退避処理を行う。具体的には、FMコントローラは、FMパッケージ内のブロック群511Gの中から、RF対象ブロック511RFとして、最終ライト時刻からの経過時間(最終ライト時刻から現在時刻までの差分時間)が閾値以上のブロックを抽出する。FMコントローラは、抽出したRF対象ブロック511RF内にSSページが存在するか否かを判定する。SSページが存在する場合には、FMコントローラは、以下のSSデータ退避処理を行う。
(J)FMコントローラは、FMパッケージ内のブロック群511Gの中から、消去回数が閾値以上のブロック(以下、この説明では、第3コピー対象ブロックという)511Cdを抽出する。
(K)FMコントローラは、RF対象ブロック511RFにおける1以上のSSページの各々について、下記の処理(b1)及び(b2)を行う。
(k1)FMコントローラは、SSページ内のSSデータを第3コピー対象ブロック511Cd内の空きページにコピーする。
(k2)FMコントローラは、コピー元のSSページを無効ページとし、コピー先の空きページを、SSページとする。
SSデータ退避処理で、第3コピー対象ブロック511CdにSSページを生成することによって、消去回数が閾値以上のブロック(第3コピー対象ブロック)については、SSページには更新ライトが実施されないことが自明なので、消去回数を維持することが可能となる。
FMコントローラは、SSページの無いRF対象ブロック(具体的には、SSデータ退避処理が行われることによりSSページが無くなったRF対象ブロック及び/又は、SSデータ退避処理を行わなくてもSSページが存在していないRF対象ブロック)について、リフレッシュ処理を行う。リフレッシュ処理を以下に説明する。
(L)FMコントローラは、FMパッケージ内のブロック群511Gの中から、消去回数が閾値未満のブロック(以下、第4コピー対象ブロックという)511Ceを抽出する。
(M)FMコントローラは、RF対象ブロック511RFに1以上の有効ページが存在するか否かを判定する。
(N)上記(M)の判定の結果が肯定的の場合、FMコントローラは、各有効ページについて、下記の(n1)及び(n2)を行う。
(n1)FMコントローラは、有効ページの有効データを第4コピー対象ブロックの空きページにコピーする。
(n2)FMコントローラは、コピー元の有効ページを無効ページとし、コピー先の空きページを有効ページとする。
(O)FMコントローラは、すべてのページが無効ページとなったRF対象ブロックを消去することで、空きブロックが生成される。
リフレッシュ処理で第4コピー対象ブロックに有効ページを増やすことによって、消去回数が閾値未満のブロックを消去する確率を高めることができる。
以下、図面を参照して、本実施形態を詳細に説明する。
まず、図4及び図5を参照して、本実施形態に係るストレージシステムの構成を説明する。図4は、ストレージシステム100の構成図である。図5は、FMパッケージ120内のFMチップ413を詳細に示した図である。
ストレージシステム100は、複数のFMパッケージ120と、ホスト装置2及び複数のFMパッケージ120に接続されたストレージコントローラ110とを有する。ストレージコントローラ110は、ホスト装置2からのI/Oコマンドに従い複数のFMパッケージ120のうちの1以上のFMパッケージ120に対してデータのI/Oを行う。
ストレージコントローラ110は、ホストインターフェース(以下、ホストI/F))401と、RAIDコントローラ402と、不揮発メモリ404と、ディスクインターフェース(以下、ディスクI/Fという)403とを有する。ホストI/F401が、ホスト装置2に接続される。ディスクI/F403が、各FMパッケージ120に接続される。RAIDコントローラ402が、ホストI/F401、ディスクI/F403及び不揮発メモリ404に接続される。
不揮発メモリ404は、データ及びプログラムを記憶する。不揮発メモリ404に記憶されるデータについては後述する。
RAIDコントローラ402は、不揮発メモリ404内のプログラムを実行するためのマイクロプロセッサ(図示なし)を有する。RAIDコントローラ402が、ホスト装置2からホストI/F401を通じてI/Oコマンドを受信し、そのI/Oコマンドに従い、ディスクI/F403を介して、一以上のFMパッケージ120に対して、データのI/Oコマンドを発行する。
各FMパッケージ120は、フラッシュメモリコントローラ(以下、FMコントローラという)412と、これに接続された複数のNAND型FMチップ413と、不揮発メモリ414と、ディスクI/F411とを有する。
不揮発メモリ414は、データ及びプログラムを記憶する。不揮発メモリ414に記憶されるデータについては後述する。
FMコントローラ412は、ストレージコントローラ110からのI/Oコマンドに従い、複数のFMチップ413のうちの1以上のFMチップ413に対してデータのI/Oを行う。FMコントローラ412は、そのFMコントローラ412が含まれるFMパッケージ120の不揮発メモリ414内部のプログラムを実行するためのマイクロプロセッサ(図示なし)を有する。
FMパッケージ120内の各FMチップ413は、そのFMパッケージ120内のFMコントローラ412に接続されている。各FMチップ413は、複数の物理ブロック511で構成されている。各物理ブロック511は、複数個の物理ページ512で構成されている(図5参照)。
前述したように、ストレージシステム100内の二以上のFMパッケージ120によりRAIDグループが構成される。1つのRAIDグループに基づき、論理的に区切られた複数(又は1つ)のLUが形成される。図5では、RAIDグループ#1に基づいて、LU#1及びLU#2が形成される。LUを構成する各領域には、論理アドレスが割り当てられる。
以下の説明において、LUを構成する領域毎に、ホスト装置2側から見た第1論理アドレスと、ストレージコントローラ110及びFMパッケージ120側から見た第2論理アドレスとがある。
図6は、ストレージコントローラ110が有する不揮発メモリ404が記憶する複数のテーブルを示す図である。
不揮発メモリ404は、複数のテーブルとして、例えば、不揮発メモリ404は、RAIDグループ構成テーブル610、LU構成テーブル620、及びスナップショット構成テーブル630を記憶する。これらのテーブルのうちの少なくとも1つは、ストレージシステム100の稼働後に作成されて良い。不揮発メモリ404内のテーブルを以下に説明する。
図7は、RAIDグループ構成テーブル610の構成を示す。
RAIDグループ構成テーブル610は、各RAIDグループ140を構成するFMパッケージ120を示したテーブルである。具体的には、テーブル610は、例えば、RAIDグループ毎に、以下の情報、
(*)RAIDグループの番号であるRAIDグループ番号701、
(*)RAIDグループに所属するFMパッケージの番号であるFMパッケージ番号702、
を有する。同図の例によれば、RAIDグループ#1にはFMパッケージ#0、1、2、3、4の5つのFMパッケージ120が所属していることがわかる。
図8は、LU構成テーブル620の構成を示す。
LU構成テーブル620は、各LUの構成を示したテーブルである。具体的には、テーブル620は、例えば、LU部分毎に、下記の情報、
(*)LU部分を含んだLUの番号であるLU番号801、
(*)LU部分の基になっているRAIDグループの番号であるRAIDグループ番号802、
(*)LU部分に割り当てられている第2論理アドレスの範囲である論理アドレス範囲803、
(*)LU部分の基になっているFMパッケージの番号であるFMパッケージ番号804、
を有する。同図の例によれば、LU#0の第1部分(LU#0の先頭を含んだ部分)は、RAIDグループ#0内のFMパッケージ#0が基になっており、この第1部分に第2論理アドレスの範囲として0X0000〜0X00FFが割り当てられていることがわかる。また、LU#0の第2部分(LU#0の第1部分の次の部分)は、RAIDグループ#0内のFMパッケージ#1が基になっており、この第2部分に第2論理アドレスの範囲として0X0100〜0X01FFが割り当てられていることがわかる。従って、同図の例によれば、LU#0の第1部分がI/O先である場合には、RAIDグループ#0におけるFMパッケージ#0に対してのみI/Oが行われ、LU#0の第2部分がI/O先である場合には、RAIDグループ#0におけるFMパッケージ#1に対してのみI/Oが行われる。つまり、本実施形態において、RAIDグループ#0では、データが、RAIDグループ#0を構成する5個のFMパッケージ#0〜#4に分散して書かれるわけではない。
図9は、スナップショット構成テーブル630の構成を示す。
スナップショット構成テーブル630は、各LUのスナップショットに関する情報を示したテーブルである。具体的には、テーブル630は、例えば、LU毎に、下記の情報、
(*)LUの番号であるLU番号901、
(*)LUのスナップショットを取得する(ON)か否か(OFF)を表すスナップショットフラグ902、
(*)LUについて取得されたスナップショットの数を表すスナップショット取得値903、
を有する。同図の例によれば、LU#0については、スナップショットフラグ902が“ON”のためスナップショットが取得されるようになっており、且つ、3つのスナップショットが取得済みであることがわかる。また、LU#1については、スナップショットフラグ902が“OFF”のためスナップショットが取得されないようになっており、且つ、取得済みのスナップショットの数がゼロであることがわかる。
図10は、各FMパッケージ120が有する不揮発メモリ414が記憶する複数のテーブルを示す図である。
不揮発メモリ414は、複数のテーブルとして、例えば、スナップショット管理テーブル1010、論理物理変換テーブル1020、世代管理エントリ群1030、物理ページ状態管理テーブル1040、及び物理ブロック状態管理テーブル1050を記憶する。これらのテーブルのうちの少なくとも1つは、ストレージシステム1の稼働後に作成されて良い。不揮発メモリ414内のテーブルを以下に説明する。
図11は、スナップショット管理テーブル1010の構成を示す。
スナップショット管理テーブル1010は、FMパッケージ120に提供されるスナップショットに関する情報を示したテーブルである。具体的には、テーブル1010は、例えば、LU毎に、下記の情報、
(*)LUの番号であるLU番号1101、
(*)LUの第2論理アドレスの範囲を表す論理アドレス1102、
(*)LUのスナップショットを取得する(ON)か否か(OFF)を表すスナップショットフラグ1103、
(*)LUについて取得されたスナップショットの数を表すスナップショット取得値1104、
を有する。同図の例によれば、LU#1については、第2論理アドレスが“0X0000〜0X04FF”の範囲であって、スナップショットフラグが“ON” のためスナップショットが取得されるようになっており、且つ、3つのスナップショットが取得済みであることがわかる。
図12は、論理物理変換テーブル1020の構成を示す。
論理物理変換テーブル1020は、論理ページと物理ページの対応関係を示したテーブルである。具体的には、テーブル1020は、例えば、論理ページ毎に、下記の情報、
(*)論理ページの番号である論理ページ番号1201、
(*)論理ページに対応づけられている物理ページの番号である物理ページ番号1202、
を有する。同図の例によれば、論理ページ#0には、物理ページ#500が対応づけられていることがわかる。なお、図示はしないが、論理ページは第2論理アドレスに対応づけられている。
図13は、世代管理エントリ群1030の構成を示す。
世代管理エントリ群1030は、スナップショットの世代を示した1以上のエントリ(以下、世代管理エントリ)の集合である。各世代管理エントリ群は、例えば、スナップショットの世代を表す番号である世代番号1301と、その世代のスナップショットを構成するSSデータを格納している物理ページの番号である物理ページ番号1302とを有する。
図14に示すように、世代管理エントリは、論理物理変換テーブル1020を構成するエントリ(以下、論理物理エントリ)にキュー形式で関連付けられる。論理ページに格納されるSSデータの世代が増える都度に、その論理ページに対応する論理物理エントリに関連付けられる世代管理エントリの数は増える。例えば、図14において、論理ページ#0に対応した論理物理エントリに、世代#1に対応した世代管理エントリが関連付けられているとする。この場合に、論理ページ#0に格納された、世代#2のSSデータが、物理ページ#340に格納されたとする。この場合、論理ページ#0に対応した論理物理エントリに、世代#2に対応した世代管理エントリ(世代番号1301「世代2」及び物理ページ番号1302「340」を含んだエントリ)が関連付けられ、その世代管理エントリに、既存の世代管理エントリ(世代番号1301「世代1」及び物理ページ番号1302「0」を含んだエントリ)が関連付けられる。
図15は、物理ページ状態管理テーブル1040の構成を示す。
物理ページ状態管理テーブル1040は、物理ページの状態を示したテーブルである。具体的には、テーブル1040は、例えば、物理ページ毎に、下記の情報、
(*)物理ページの番号を表す物理ページ番号1501、
(*)物理ページの状態を表す物理ページ状態1502、
を有する。同図の例によれば、物理ページ#1は有効ページであり、物理ページ#2はSSページであり、物理ページ#3は空きページであり、物理ページ#4は無効ページであることがわかる。なお、空きページとは、データが格納されていない物理ページである。
図16は、物理ブロック状態管理テーブル1050の構成を示す。
物理ブロック状態管理テーブル1050は、物理ブロックの状態を示したテーブルである。具体的には、テーブル1050は、例えば、物理ブロック毎に、下記の情報
(*)物理ブロックの番号である物理ブロック番号1601、
(*)物理ブロックを消去した回数を表す消去回数1602、
(*)物理ブロック内の物理ページに最後にデータが格納された時刻を表す最終ライト時刻1603、
(*)物理ブロックが有する無効ページの数を表す無効ページ数1604、
(*)物理ブロックが有する先頭の物理ページの番号から末端の物理ページの番号までの物理ページ番号の一覧を表す物理ページリスト1605、
を有する。同図の例によれば、物理ブロック#0は、現在まで1000回消去されており、その物理ブロック内のページに最後にデータが格納された時刻は「2010/10/10/15:34:26」であり、無効ページが998個あることがわかる。また、物理ブロック#0は、0〜1000番の物理ページで構成されていることがわかる。
次に、本実施形態に係るストレージシステム100で行われる各種処理を説明する。
図17は、ストレージコントローラ110でのスナップショット処理を示す。以下の説明では、スナップショットを「SS」と省略することがある。
ストレージコントローラ110は、ホスト装置2からSSコマンドを受信する(S1701)。
SSコマンドとして、複数種類のSSコマンドがある。複数の種類のSSコマンドは、例えば、SS取得コマンド(SSの取得のコマンド)と、SS削除コマンド(SSの削除のコマンド)と、SS読出しコマンド(SSからのデータの読み出しのコマンド)とがある。複数種類のSSコマンドは、SS書込みコマンド(SSへのデータの書き込みのコマンド)を含んでも良い。
SSコマンドでは、少なくとも、LUが指定されている。具体的には、例えば、SS取得コマンド、SS削除コマンド及びSS読出しコマンドは、いずれも、SSの元となるLUの番号を含む。SS読出しコマンドは、更に、SSの世代の番号と、読出し対象のデータが格納されている領域に対応した第1論理アドレスとを含む。図17の説明では、SSコマンドで指定されているLUを「対象LU」と言う。
ストレージコントローラ110は、SSコマンドを基に、PKG−SSコマンドの送信先とするFMパッケージ(PKG)を特定する(S1702)。具体的には、例えば、ストレージコントローラ110は、LU構成テーブル620から、対象LUに対応するFMパッケージを特定する。もし、SSコマンドが、第1論理アドレスを有している場合、ストレージコントローラ110は、対象LUの番号を基に、第1論理アドレスに対応する第2論理アドレスを特定し、そのLU番号とその第2論理アドレスに対応するFMパッケージを、LU構成テーブル620から特定する。特定されたFMパッケージが、PKG−SSコマンドの送信先である。PKG−SSコマンドは、FMパッケージに送信されるSSコマンドである。
ストレージコントローラ110は、SSコマンドの種別を判定する(S1703)。SSコマンドの種別がSS削除であった場合には、ストレージコントローラ110は、S1704及びS1705の処理を行う。SSコマンドの種別がSS取得であった場合には、ストレージコントローラ110は、S1707及びS1708の処理を行う。SSコマンドの種別がSS読出しであった場合には、ストレージコントローラ110は、S1709の処理を行う。
SSコマンドの種別がSS削除の場合を以下に説明する。
S1703において、SSコマンドの種別がSS削除であると判定された場合、ストレージコントローラ110は、対象LUについて、スナップショット取得の解除を行う(S1704)。具体的には、ストレージコントローラ110は、SSコマンドが有するLU番号に対応した、スナップショット構成テーブル630におけるスナップショットフラグ902を、“OFF”に変更する。
次に、ストレージコントローラ110は、対象LUについての全てのスナップショットを破棄する(S1705)。具体的には、ストレージコントローラ110は、SSコマンドが有するLU番号に対応する、スナップショット構成テーブル630におけるスナップショット取得値902を“0”に変更する。続いて、S1706を行う。
SSコマンドの種別がSS取得の場合を以下に説明する。
S1703において、SSコマンドの種別がSS取得であると判定された場合、ストレージコントローラ110は、対象LUについてスナップショット取得を更新する(S1707)。具体的には、ストレージコントローラ110は、対象LUに対応する、スナップショット構成テーブル630のスナップショットフラグ902を“ON”にする。
次に、ストレージコントローラ110は、対象LUに対応する、スナップショット構成テーブル630におけるスナップショット取得値902を1増やす(S1708)。つまり、SS取得コマンドを受信する都度に、対象LUのスナップショットの数が1増える。続いてS1706を行う。
SSコマンドの種別がSS読出しの場合を以下に説明する。
S1703において、SSコマンドの種別がSS読出しであると判定された場合、ストレージコントローラ110は、SSコマンドに設定されている世代番号を取得する(S1708)。続いて、S1706を行う。
S1706の処理を説明する。ストレージコントローラ110は、SSコマンドに基づくPKG−SSコマンドを生成し、そのPKG−SSコマンドを、S1502で特定されたFMパッケージ120に送信する。PKG−SSコマンドの種別として、例えば、SSコマンドと同様に、SS削除、SS取得及びSS読出しがある。
発行するPKG−SSコマンドに含まれる情報は、S1703で判定されたSSコマンド種別によって異なる。SSコマンド種別がSS削除及びSS取得の場合は、PKG−SSコマンドには、LU番号が含まれる。SSコマンド種別がSS読出しの場合は、PKG−SSコマンドには、更に、第2論理アドレス及び世代番号が含まれる。
図18は、FMパッケージ120でのスナップショット処理を示す。
FMパッケージ120は、ストレージコントローラ110からPKG−SSコマンドを受信する(S1801)。図18の説明では、PKG−SSコマンドで指定されているLUを「対象LU」と言う。図18での対象LUは、図17での対象LUと同じである。
FMコントローラ412は、受信したPKG−SSコマンドの種別を判定する(S1802)。具体的には、FMコントローラ412は、PKG−SSコマンドの種別が、SS削除、SS取得、SS読出しのいずれかであるか判定する。
判定の結果、SSコマンドの種別がSS削除であった場合には、FMコントローラ412は、S1803〜S1806の処理を行う。SSコマンドの種別がSS取得であった場合には、FMコントローラ412は、S1807〜S1809又はS1807及びS1809の処理を行う。SSコマンドの種別がSS読出しであった場合には、FMコントローラ412は、S1811〜S1814の処理、又はS1811〜S1813、S1815の処理を行う。
PKG−SSコマンドの種別がSS削除の場合を以下に説明する。
S1802において、SSコマンドの種別がSS削除であると判定された場合、FMコントローラ412は、対象LUについて、スナップショット取得の解除を行う(S1803)。具体的には、FMコントローラ412は、対象LUに対応する、スナップショット管理テーブル1010のスナップショットフラグ1103を、“OFF”に変更する。
次に、FMコントローラ412は、対象LUについての全てのスナップショットを破棄する(S1804)。具体的には、FMコントローラ412は、PKG−SSコマンドが有するLU番号に対応する、スナップショット管理テーブル1010におけるスナップショット取得値1104を“0”に変更する。
さらに、FMコントローラ412は、対象LUに関連付けられている全てのSSデータを破棄する(S1805)。具体的には、FMコントローラ412は、論理物理変換テーブル1020における、対象LUに対応する全ての論理物理エントリを特定し、特定した複数の論理物理エントリから、全ての世代管理エントリの関連付けを破棄する。また、FMコントローラ412は、破棄された世代管理エントリ毎に、その世代管理エントリに登録されている物理ページ番号を特定し、且つ、特定した物理ページ番号を有するエントリ(物理ページ状態管理テーブル1040におけるエントリ)内の物理ページ状態1502を「SS」から「無効」に変更する(S1806)。
PKG−SSコマンドの種別がSS取得の場合を以下に説明する。
S1802において、SSコマンドの種別がSS取得であると判定された場合、FMコントローラ412は、スナップショットフラグがONであるか否かの判定をさらに行う(S1807)。
判定の結果、スナップショットフラグがONであった場合には、FMコントローラ412は、スナップショットフラグを立てる処理を行う(S1808)。具体的には、FMコントローラ412は、対象LUに対応する、スナップショット管理テーブル1010におけるスナップショットフラグ902を“ON”に変更する。
次に、FMコントローラ412は、対象LUに対応する、スナップショット管理テーブル1010におけるスナップショット取得値1104を1インクリメントする(S1809)。つまり、PKG−SS取得コマンドを受信する都度に、対象LUのスナップショットの数が1増える。
PKG−SSコマンドの種別がSS読出しの場合を以下に説明する。
S1802において、PKG−SSコマンドの種別がSS読出しであると判定された場合、FMコントローラ412は、PKG−SSコマンドから世代番号を取得する(S1811)
FMコントローラ412は、PKG−SSコマンドから第2論理アドレスを取得し、その第2論理アドレスに基づいて論理ページ番号を算出し、その論理ページ番号に対応する物理ページを、論理物理変換テーブル1020から特定する(S1812)。
FMコントローラ412は、S1812で特定した物理ページに対応する論理物理エントリに、S1811で特定した世代番号を含んだ世代管理エントリがあるか否かを判定する(S1813)。
S1813において、世代管理エントリが無い場合には、FMコントローラ412は、S1812で特定した物理ページからデータを読み出す(S1814)。
S1813において、世代管理エントリが有る場合には、FMコントローラ412は、その世代管理エントリが有する物理ページ番号に対応した物理ページからデータを読み出す(S1815)。
FMコントローラ412は、S1814又はS1815で読み出されたデータを、ストレージコントローラ110に送信する。ストレージコントローラ110は、そのデータを、ホスト装置2に送信する。これにより、ホスト装置2は、SSコマンドで指定した世代のスナップショットにおける、そのSSコマンドで指定した第1論理アドレスに対応するデータを、取得することができる。
図19は、ストレージコントローラ110でのライト処理を示す。
ストレージコントローラ110は、ホスト装置2からライトコマンド及びライト対象データを受信する(S1901)。受信したライトコマンドには、ライト先を表す情報、例えば、LU番号及び第1論理アドレスを含んだ情報が含まれている。
ストレージコントローラ110は、ライトコマンドから、ライト先のFMパッケージを特定する(S1902)。具体的には、ストレージコントローラ110は、ライトコマンドが有するLU番号及び第1論理アドレスから第2論理アドレスを算出し、LU番号及びその第2論理アドレスに対応するFMパッケージをLU構成テーブル620から特定する。そのFMパッケージがライト先FMパッケージである。
S1902で特定したライト先FMパッケージに対し、ストレージコントローラ110は、ライトコマンド及びライト対象データを発行する(以下、このライトコマンドをPKG−WRコマンドという)(S1903)。PKG−WRコマンドには、例えば、LU番号及び第2論理アドレスが含まれる。LU番号は、ライトコマンドが有するLU番号と同じで良い。
図20は、FMパッケージ120でのライト処理を示す。
FMパッケージ120は、ストレージコントローラ110からPKG−WRコマンドを受信する(S2001)。
FMコントローラ412は、受信したPKG−WRコマンドから、ライト先の物理ページを特定する(S2002)。具体的には、FMコントローラ412は、PKG−WRコマンドに含まれる、LU番号及び第2論理アドレスから論理ページ番号を算出する。そして、FMコントローラ412は、その論理ページ番号に対応する物理ページ番号を論理物理変換テーブル1020から特定する。対象論理ページ番号に物理ページが対応していない場合は、物理ページ番号に代えてその旨を示す情報を取得しておいてもよい。
FMコントローラ412は、消去回数の少ない物理ブロックを選択する(S2003)。例えば、FMコントローラ412は、物理ブロック状態管理テーブル150に基づき、消去回数が最も少ない物理ブロックを選択する。また、例えば、FMコントローラ412は、消去回数が所定の値以下の物理ブロックを任意に選択してもよい。選択された物理ブロックを、以下、選択ブロックという。
FMコントローラ412は、選択ブロック内の複数の物理ページから、空きの物理ページを選択する(S2004)。具体的には、FMコントローラ412は、まず、物理ブロック状態管理テーブル150に基づき、選択ブロック内に存在する物理ページの物理ページ番号を取得する。そして、FMコントローラ412は、物理ページ状態管理テーブル140に基づき、それらの物理ページ番号のうち、物理ページ状態1502が「空き」の物理ページ番号を選択する。選択された物理ページを、以下、選択ページという。
FMコントローラ412は、選択ページにライト対象データを書き込む(S2005)。
FMコントローラ412は、最終WR時刻を更新する(S2006)。具体的には、FMコントローラ412は、内蔵タイマー(図示なし)に基づき、S2005において選択ページにライト対象データが書き込まれた時刻を取得する。そして、FMコントローラ412は、取得した時間を物理ブロック状態管理テーブル1050の、選択ブロック(物理ブロック1601)に対する最終WR時刻の欄1603に書き込む。
FMコントローラ412は、選択ページに対応する、物理ページ状態管理テーブル1040における物理ページ状態1502を「有効」に変更する(S2007)。
FMコントローラ412は、論理物理変換テーブル1020の物理ページ番号を更新する(S2008)。具体的には、FMコントローラ412は、S2002で算出された論理ページ番号に対応する、論理物理変換テーブル1020における物理ページ番号1202を、選択ページの物理ページ番号に変更する。以下、図20の説明において、選択ページの物理ページ番号に変更される前の物理ページ番号を「旧物理ページ番号」と言う。
FMコントローラ412は、ライト先LUに対応する、スナップショット管理テーブル1010におけるスナップショットフラグ1103が“ON”であるか否かの判定を行う(S2009)。スナップショットフラグ1103が“OFF”であった場合は、S2010に進む。一方、スナップショットフラグ1103が“ON”であった場合は、S2012に進む。
スナップショットフラグ1103が“OFF”であった場合を説明する。FMコントローラ412は、スナップショット管理テーブル1010において、対象LU番号1101に対応するスナップショットフラグ1103が“OFF”であった場合には、旧物理ページ番号に対応する、物理ページ状態管理テーブル1040における物理ページ状態1502を「無効」に変更する(S2010)。
次に、FMコントローラ412は、選択ブロックに対応する、物理ブロック状態管理テーブル1050における無効ページ数1604をインクリメントする(S2011)。無効ページ数1604は、S2010において、「無効」を設定したページ数分インクリメントされる。。
スナップショットフラグ1103が“ON”であった場合を説明する。FMコントローラ412は、ライト先LUに対応する、スナップショット管理テーブル1010におけるスナップショットフラグ1103が“ON”であった場合には、ライト先LUについて最新世代のSSデータが存在しているか否かを判定する(S2012)。最新世代のSSデータが存在しない場合とは、S2002で算出された論理ページ番号を含んだ論理物理エントリに、最新世代の番号を含んだ世代管理エントリが関連付けられていない場合である。一方、最新世代のSSデータが存在する場合とは、S2002で算出された論理ページ番号を含んだ論理物理エントリに、最新世代の番号を含んだ世代管理エントリが関連付けられている場合である。最新世代のSSデータが存在しない場合は、S2013に進む。最新世代のSSデータが存在している場合は、FMコントローラ412は、前述したS2010〜S2011の処理を行い、処理を終了する。
S2013の処理を説明する。FMコントローラ412は、旧物理ページ番号と最新世代の番号とを含んだ世代管理エントリ1030を、S2002で算出された論理ページ番号を含んだ論理物理エントリに新たに関連付ける(S2013)。
FMコントローラ412は、旧物理ページ番号に対応する、物理ページ状態管理テーブル1040における物理ページ状態1502を「無効」に変更する(S2014)。
図21は、ストレージコントローラ110でのリード処理を示す。
ストレージコントローラ110は、ホスト装置2からリードコマンドを受信する(S2101)。受信したリードコマンドには、リード元を表す情報として、例えば、LU番号及び第1論理アドレスを含んだ情報が含まれている。
ストレージコントローラ110は、リードコマンドから、リード元のFMパッケージを特定する(S2102)。具体的には、ストレージコントローラ110は、リードコマンドが有するLU番号及び第1論理アドレスから第2論理アドレスを算出し、LU番号及びその第2論理アドレスに対応するFMパッケージをLU構成テーブル620から特定する。そのFMパッケージがリード元FMパッケージである。
S2102で特定したリード元FMパッケージに対し、ストレージコントローラ110は、リードコマンドを発行する(以下、このリードコマンドをPKG−RDコマンドという)(S2103)。PKG−RDコマンドには、例えば、LU番号及び第2論理アドレスが含まれる。LU番号は、リードコマンドが有するLU番号と同じで良い。
図22は、FMパッケージ120でのリード処理を示す。
FMパッケージ120は、ストレージコントローラ110からPKG−RDコマンドを受信する(S2201)。
FMコントローラ412は、受信したPKG−RDコマンドから、リード元の物理ページを特定する(S2202)。具体的には、FMコントローラ412は、PKG−RDコマンドに含まれる、LU番号及び第2論理アドレスから論理ページ番号を算出する。そして、FMコントローラ412は、論理物理変換テーブル1020から、算出された論理ページ番号に対応する物理ページ番号を特定する。
FMコントローラ412は、特定された物理ページからデータを読み出す(S2203)。
FMコントローラ412は、読み出されたデータを、ストレージコントローラ110に送信する。ストレージコントローラ110は、そのデータを、ホスト装置2に送信する。これにより、ホスト装置2は、リードコマンドで指定したLUにおける、そのリードコマンドで指定した第1論理アドレスに対応するデータを、取得することができる。
次に、図23を参照して、リクラメーション処理について説明する。リクラメーション処理は、FMパッケージ412が行う処理である。
FMコントローラ412は、FMパッケージ120内の各物理ブロック511について、無効ページが閾値以上の物理ブロックがあるか否かを判定する(S2301)。具体的には、FMコントローラ412は、物理ブロック状態管理テーブル1050に基づき、無効ページ数1604が閾値以上の物理ブロック(この説明においては、無効ページが閾値以上の物理ブロックを無効ブロックという)の物理ブロック番号1401を抽出する。判定の結果、無効ブロックがない場合、FMコントローラ412は、リクラメーション処理を終了する(END)。
一方、S2301の判定の結果、FMパッケージ120内に無効ブロックがあると判定された場合、FMコントローラ412は、S2302以下の処理を行う。以下の説明では、1つの無効ブロックについて、S2302以下の処理を説明する。しかし、無効ブロックが複数存在する場合においては、FMコントローラ412は、物理ブロック状態管理テーブル1050から最初に発見された無効ブロックについてS2302以下の処理を行うようにしてもよいし、物理ブロック番号の小さいものからS2302以下の処理を行う等、所定のルールに基づいて行われるようにしてもよい。
FMコントローラ412は、無効ブロック内にSSページが存在するか否かの判定を行う(S2302)。具体的には、FMコントローラ412は、物理ブロック状態管理テーブル1050に基づき、無効ブロックの物理ブロック番号1601に対応する物理ページリスト1605を抽出する。そして、FMコントローラ412は、物理ページ状態管理テーブル1040に基づき、抽出された物理ページについて物理ページ状態1502が「SS」のものがあるか否かの判定を行う。物理ページ状態1502が「SS」の物理ページがある場合には、S2303に進む。一方、物理ページ状態1502が「SS」の物理ページがない場合には、S2307に進む。
S2303を説明する。FMコントローラ412は、消去回数が閾値以上で、かつ、空きページを有する物理ブロックを選択する(S2303)。この処理の説明においては、S2303で選択された物理ブロックを第1選択ブロックという。具体的には、まず、FMコントローラ412は、物理ブロック状態管理テーブル1050に基づき、消去回数1602が閾値以上の物理ブロック番号1601を抽出し、抽出した物理ブロック番号1601に対応する、物理ページリスト1605を取得する。そして、FMコントローラ412は、物理ページ状態管理テーブル1040に基づき、取得した物理ページ番号1501の物理ページ状態1502が「空き」であるか否かを検索する。検索の結果、物理ページ状態1502が「空き」である物理ページを含んだ無効ブロックを、第1選択ブロックとして選択する。なお、第1選択ブロックの候補となる物理ブロックが複数ある場合、例えば、空ページの最も多い物理ブロックを第1選択ブロックとしてもよいし、消去回数が所定範囲である物理ブロックを第1選択ブロックとしてもよい。
FMコントローラ412は、無効ブロック内のSSページのデータ(SSデータ)を、第1選択ブロックの空きページにコピーする(S2304)。以下、無効ブロック内のコピー元のSSページのことをコピー元ページ、第1選択ブロック内のデータのコピー先の空きページのことをコピー先ページという。
FMコントローラ412は、コピー元ページに対応する、論理物理変換テーブル1020における物理ページ番号1202を、コピー先ページの物理ページ番号に変更する(S2305)。
FMコントローラ412は、物理ページ状態管理テーブル1040について、コピー元ページの物理ページ番号1501に対応する物理ページ状態1502を、「無効」にし、コピー先ページの物理ページ番号1501に対応する物理ページ状態1502を、「SS」にする(S2306)。
FMコントローラ412は、無効ブロックの無効ページ数及び選択ブロックの最終ライト時刻を更新する(S2312)。具体的には、まず、FMコントローラ412は、物理状態管理テーブル1050において、無効ブロックの物理ブロック番号1601に対応する無効ページ数1604をインクリメントする。無効ページ数1604のインクリメントは、無効ページ数分行われる。次に、FMコントローラ412は、物理状態管理テーブル1050において、選択ブロックの物理ブロック番号1601に対応する最終ライト時刻1603を、S2304でコピーされた時刻に更新する。
S2312の処理の後、S2302の判定の結果、物理ページ状態管理テーブル1040において、物理ページ状態1502が「SS」の物理ページがない場合、以下に説明するS2307が行われる。
FMコントローラ412は、無効ブロック内に有効ページがあるか否かを判定する(S2307)。具体的には、FMコントローラ412は、まず、物理ブロック状態管理テーブル1050に基づき、無効ブロックの物理ブロック番号1601について、物理ページリスト1605を取得する。次に、FMコントローラ412は、物理ページ状態管理テーブル1040に基づき、取得した物理ページ状態1502が「有効」である物理ページ番号1501があるか否かを判定する。無効ブロック内に有効ページが存在している場合は、S2308に進む。無効ブロック内に有効ページが存在していない場合は、S2313に進む。
S2308の処理を説明する。FMコントローラ412は、消去回数が閾値未満で、かつ、空きページを有する物理ブロックを選択する(S2308)。この処理の説明においては、S2308で選択された物理ブロックを第2選択ブロックという。具体的には、まず、FMコントローラ412は、物理ブロック状態管理テーブル1050に基づき、消去回数1602が閾値未満の物理ブロック番号1601を抽出し、抽出した物理ブロック番号1601に対応する、物理ページリスト1605を取得する。そして、FMコントローラ412は、物理ページ状態管理テーブル1040に基づき、取得した物理ページ番号1501の物理ページ状態1502が「空き」であるか否かを判定する。その判定の結果が肯定的であれば、FMコントローラ412は、物理ページ状態1502が「空き」である物理ページを含んだ無効ブロックを、第2選択ブロックとして選択する。なお、第2選択ブロックの候補となる物理ブロックが複数ある場合、例えば、空ページの最も多い物理ブロックを第2選択ブロックとしてもよいし、消去回数が最も少ない物理ブロックを第2選択ブロックとしてもよい。
FMコントローラ412は、無効ブロック内の有効ページのデータ(有効データ)を、第2選択ブロックの空きページにコピーする(S2309)。以下、無効ブロック内のコピー元の有効ページのことをコピー元ページ、第2選択ブロック内のデータのコピー先の空きページのことをコピー先ページという。
FMコントローラ412は、コピー元ページに対応する、論理物理変換テーブル1020の物理ページ番号1202を、コピー先ページの物理ページ番号に変更する(S2310)。
FMコントローラ412は、物理ページ状態管理テーブル1040について、コピー元ページに対応する物理ページ状態1502を、「無効」にし、コピー先ページに対応する物理ページ状態1502を、「有効」にする(S2311)。
FMコントローラ412は、前述したS2312の処理を行う。すなわち、FMコントローラ412は、無効ブロックの無効ページ数及び選択ブロックの最終ライト時刻を更新する(S2312)。S2312の処理の後、前述したS2302以下の処理が行われる。
次に、S2313以下の処理を説明する。
S2307における判定の結果、無効ブロック内に有効ページが存在していない場合、FMコントローラ412は、FMパッケージ120内の無効ブロックのうち、無効ページ数が所定の値以上である無効ブロックがあるか否かを判定する(S2313)。具体的には、FMコントローラ412は、物理ブロック状態管理テーブル1050に、所定の値以上の無効ページ数1604があるか否かを判定する。判定の結果、無効ページ数が所定の値以上である無効ブロックが存在していない場合は、処理が終了する(END)。
一方、判定の結果、無効ページ数が所定の値以上である無効ブロックが存在している場合は、FMコントローラ412は、その無効ブロックの物理ブロック番号1601を取得する。無効ページ数が所定の値以上である無効ブロックが複数存在している場合は、それらの無効ブロックのうち、無効ページ数が最大である無効ブロックの物理ブロック番号1601を取得する。以下、S2314で取得された物理ブロック番号1601を有する無効ブロックを対象無効ブロックという。
FMコントローラ412は、対象無効ブロックを消去する(S2314)。無効ブロックの消去とは、無効ブロック内のすべての物理ページを空きの物理ページとすることである。
FMコントローラ412は、対象無効ブロックの消去回数を1インクリメントし、かつ、最終ライト時刻を初期化する(S2315)。具体的には、FMコントローラ412は、物理ブロック状態管理テーブル1050において、対象無効ブロックの物理番号1601に対応する消去回数を1インクリメントし、最終ライト時刻を初期化する(例えば「−」を入力する)。
次に、図24を参照して、リフレッシュ処理について説明する。リフレッシュ処理は、FMパッケージ412が行う処理である。
FMコントローラ412は、FMパッケージ120内の各物理ブロック511について、最終ライト時刻からの経過時間が閾値以上の物理ブロックがあるか否かを判定する(S2401)。具体的には、FMコントローラ412は、物理ブロック状態管理テーブル1050に基づき、現在時刻と最終ライト時刻との差分が閾値以上となる物理ブロック(この説明においては、現在時刻と最終ライト時刻との差分が閾値以上の物理ブロックを時間超ブロックという)の物理ブロック番号1401を抽出する。判定の結果、時間超ブロックがない場合、FMコントローラ412は、リフレッシュ処理を終了する(END)。
一方、S2401の判定の結果、FMパッケージ120内に時間超ブロックがある場合、FMコントローラ412は、S2402以下の処理を行う。以下の説明では、1つの時間超ブロックについて、S2402以下の処理を説明する。しかし、時間超ブロックが複数存在する場合においては、FMコントローラ412は、物理ブロック状態管理テーブル1050から最初に発見された時間超ブロックについてS2402以下の処理を行うようにしてもよいし、物理ブロック番号の小さいものからS2402以下の処理を行う等、所定のルールに基づいて行われるようにしてもよい。
FMコントローラ412は、時間超ブロック内にSSページが存在するか否かの判定を行う(S2402)。具体的には、FMコントローラ412は、物理ブロック状態管理テーブル1050に基づき、時間超ブロックの物理ブロック番号1601に対応する物理ページリスト1605を抽出する。そして、FMコントローラ412は、物理ページ状態管理テーブル1040に基づき、抽出された物理ページについて物理ページ状態1502が「SS」のものがあるか否かの判定を行う。物理ページ状態1502が「SS」の物理ページがある場合には、S2403に進む。一方、物理ページ状態1502が「SS」の物理ページがない場合には、S2407に進む。
S2403を説明する。FMコントローラ412は、消去回数が閾値以上で、かつ、空きページを有する物理ブロックを選択する(S2403)。この処理の説明においては、S2403で選択された物理ブロックを第3選択ブロックという。具体的には、まず、FMコントローラ412は、物理ブロック状態管理テーブル1050に基づき、消去回数1602が閾値以上の物理ブロック番号1601を抽出し、抽出した物理ブロック番号1601に対応する、物理ページリスト1605を取得する。そして、FMコントローラ412は、物理ページ状態管理テーブル1040に基づき、取得した物理ページ番号1501の物理ページ状態1502が「空き」であるか否かを検索する。検索の結果、物理ページ状態1502が「空き」である物理ページを含んだ時間超ブロックを、第3選択ブロックとして選択する。なお、第3選択ブロックの候補となる物理ブロックが複数ある場合、例えば、空ページの最も多い物理ブロックを第3選択ブロックとしてもよいし、消去回数が所定範囲である物理ブロックを第3選択ブロックとしてもよい。
FMコントローラ412は、時間超ブロック内のSSページのデータ(SSデータ)を、第3選択ブロックの空きページにコピーする(S2404)。以下、第3選択ブロック内のコピー元のSSページのことをコピー元ページ、第3選択ブロック内のデータのコピー先の空きページのことをコピー先ページという。
FMコントローラ412は、コピー元ページに対応する、論理物理変換テーブル1020の物理ページ番号1202を、コピー先ページの物理ページ番号に変更する(S2405)。
FMコントローラ412は、物理ページ状態管理テーブル1040について、コピー元ページに対応する物理ページ状態1502を、「無効」に変更し、コピー先ページに対応する物理ページ状態1502を、「SS」に変更する(S2406)。
FMコントローラ412は、第3選択ブロックの無効ページ数と第3選択ブロックの最終ライト時刻とを更新する(S2412)。具体的には、まず、FMコントローラ412は、物理状態管理テーブル1050において、第3選択ブロックに対応する無効ページ数1604をインクリメントする。無効ページ数1604のインクリメントは、無効ページ数分行われる。次に、FMコントローラ412は、物理状態管理テーブル1050において、第3選択ブロックに対応する最終ライト時刻1603を、S2404でコピーされた時刻に更新する。
S2412の処理の後、S2402の判定の結果、物理ページ状態管理テーブル1040において、物理ページ状態1502が「SS」の物理ページがない場合、以下に説明するS2407が行われる。
FMコントローラ412は、時間超ブロック内に有効ページがあるか否かを判定する(S2407)。具体的には、FMコントローラ412は、まず、物理ブロック状態管理テーブル1050に基づき、時間超ブロックの物理ブロック番号1601について、物理ページリスト1605を取得する。次に、FMコントローラ412は、物理ページ状態管理テーブル1040に基づき、取得した物理ページ状態1502が「有効」である物理ページ番号1501があるか否かを判定する。時間超ブロックに有効ページが存在している場合は、S2408に進む。時間超ブロック内に有効ページが存在していない場合は、S2413に進む。
S2408の処理を説明する。FMコントローラ412は、消去回数が閾値未満で、かつ、空きページを有する物理ブロックを選択する(S2408)。この処理の説明においては、S2408で選択された物理ブロックを第4選択ブロックという。具体的には、まず、FMコントローラ412は、物理ブロック状態管理テーブル1050に基づき、消去回数1602が閾値未満の物理ブロック番号1601を抽出し、抽出した物理ブロック番号1601に対応する、物理ページリスト1605を取得する。そして、FMコントローラ412は、物理ページ状態管理テーブル1040に基づき、取得した物理ページ番号1501の物理ページ状態1502が「空き」であるか否かを判定する。その判定の結果が肯定的の場合に、FMコントローラ412は、物理ページ状態1502が「空き」である物理ページを含んだ時間超ブロックを、第4選択ブロックとして選択する。なお、第4選択ブロックの候補となる物理ブロックが複数ある場合、例えば、空ページの最も多い物理ブロックを第4選択ブロックとしてもよいし、消去回数が最も少ない物理ブロックを第4選択ブロックとしてもよい。
FMコントローラ412は、時間超ブロック内の有効ページのデータ(有効データ)を、第4選択ブロックの空きページにコピーする(S2409)。以下、第4選択ブロック内のコピー元の有効ページのことをコピー元ページ、第4選択ブロック内のデータのコピー先の空きページのことをコピー先ページという。
FMコントローラ412は、コピー元ページに対応する、論理物理変換テーブル1020の物理ページ番号1202を、コピー先ページの物理ページ番号に変更する(S2410)。
FMコントローラ412は、物理ページ状態管理テーブル1040について、コピー元ページに対応する物理ページ状態1502を、「無効」に変更し、コピー先ページに対応する物理ページ状態1502を、「有効」にする(S2411)。
FMコントローラ412は、前述したS2412の処理を行う。すなわち、FMコントローラ412は、第4選択ブロックの無効ページ数と第4選択ブロックの最終ライト時刻とを更新する(S2412)。S2412の処理の後、前述したS2402以下の処理が行われる。
次に、S2413以下の処理を説明する。
S2407における判定の結果、無効ブロック内に有効ページが存在していない場合、FMコントローラ412は、FMパッケージ120内の時間超ブロックのうち、無効ページ数が所定の値以上である時間超ブロックがあるか否かを判定する(S2413)。具体的には、FMコントローラ412は、物理ブロック状態管理テーブル1050に基づき、所定の値以上の無効ページ数1604があるか否かを判定する。判定の結果、無効ページ数が所定の値以上である時間超ブロックが存在していない場合は、処理が終了する(END)。
一方、判定の結果、無効ページ数が所定の値以上である時間超ブロックが存在している場合は、FMパッケージ412は、その時間超ブロックの物理ブロック番号1601を取得する。無効ページ数が所定の値以上である時間超ブロックが複数存在している場合は、それらの時間超ブロックのうち、無効ページ数が最大である時間超ブロックの物理ブロック番号1601が取得される。以下、S2414で取得された物理ブロック番号1601を有する時間超ブロックを対象時間超ブロックという。
FMコントローラ412は、対象時間超ブロックを消去する(S2414)。時間超ブロックの消去とは、時間超ブロック内のすべての物理ページを空きの物理ページにすることである。
FMコントローラ412は、対象時間超ブロックの消去回数を1インクリメントし、かつ、最終ライト時刻を初期化する(S2415)。具体的には、FMコントローラ412は、物理ブロック状態管理テーブル1050において、対象時間超ブロックの物理番号1601に対応する消去回数を1インクリメントし、最終ライト時刻を初期化する(例えば「−」を入力する)。そして、処理は終了する(END)。
以上、本発明の一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。