(57)【特許請求の範囲】
【請求項１】
ホスト装置と接続されるストレージシステムであって、
複数のフラッシュメモリチップと、当該複数のフラッシュメモリチップの記憶領域を制御するパッケージコントローラと、を各々に有する複数のフラッシュパッケージと、
前記複数のフラッシュパッケージの有する記憶領域を用いて、前記ホスト装置に第一のＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）と第二のＬＵを提供するストレージコントローラと
を備え、
前記パッケージコントローラは、
前記第一のＬＵをバックアップ対象、前記第二のＬＵを非バックアップ対象、として管理しているときに、
前記第一のＬＵと対応する第一の論理記憶領域に対して更新データの書き込み要求を受信すると、更新前のデータを維持した状態で前記第一の論理記憶領域に割り当てられていた第一の物理記憶領域をバックアップ用記憶領域として管理し、前記第一の論理記憶領域に新たに第二の物理記憶領域を割り当て、当該第二の物理記憶領域に当該更新データを書き込み、
前記第二のＬＵと対応する第二の論理記憶領域に対して更新データの書き込み要求を受信すると、前記第二の論理記憶領域に割り当てられていた第三の物理記憶領域を無効記憶領域として管理し、前記第二の論理記憶領域に新たに割り当てられた第四の物理記憶領域に当該更新データを書き込み、
バックアップ用記憶領域として管理される前記第一の物理記憶領域を用いて、前記第一のＬＵのバックアップデータを提供し、
無効記憶領域として管理される前記第三の物理記憶領域に格納された更新前のデータを消去するよう制御する
ことを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記ストレージコントローラは、前記ホスト装置から前記第二のＬＵについてバックアップ取得要求を受信すると、前記複数のフラッシュパッケージの前記パッケージコントローラ各々に対して、前記バックアップ取得要求を送信し、
前記パッケージコントローラは、前記第二のＬＵについてバックアップ取得要求を受信すると、前記第二のＬＵをバックアップ対象として管理する
ことを特徴とするストレージシステム。
【請求項３】
請求項１に記載のストレージシステムであって、
前記ストレージコントローラは、前記ホスト装置から前記第一のＬＵについてバックアップ削除要求を受信すると、前記複数のフラッシュパッケージの前記パッケージコントローラ各々に対して、前記バックアップ削除要求を送信し、
前記パッケージコントローラは、前記第一のＬＵについてバックアップ削除要求を受信すると、記第二のＬＵをバックアップ非対象として、前記第一の物理記憶領域を無効記憶領域として、管理する
ことを特徴とするストレージシステム。
【請求項４】
請求項１に記載のストレージシステムであって、
前記パッケージコントローラは、
第一の物理ブロックについて、
前記第一の物理ブロックに含まれる複数の物理記憶領域のうち、前記第一のＬＵまたは前記第二のＬＵと対応する論理記憶領域に割り当てられている少なくとも１つの物理記憶領域に格納されたデータを、第二の物理ブロックに含まれる複数の物理記憶領域にコピーし、
前記第一の物理ブロックに含まれる複数の物理記憶領域のうち、バックアップ用記憶領域として管理される少なくとも１つの物理記憶領域に格納されたデータを、第三の物理ブロックに含まれる複数の物理記憶領域にコピーし、
前記コピー完了後に、前記第一の物理ブロックに含まれる複数の物理記憶領域に格納されたデータを消去するよう制御する
ことを特徴とするストレージシステム。
【請求項５】
請求項４に記載のストレージシステムであって、
前記パッケージコントローラは、
前記フラッシュパッケージが有する複数の物理ブロック各々について、データを消去する制御が実施された回数である消去回数を管理し、
前記複数の物理ブロックのうちから、消去回数が閾値以上の物理ブロックを
前記第二物理ブロックに選択し、消去回数が閾値以上の物理ブロックを前記第三の物理ブロックに選択する、
ことを特徴とするストレージシステム。
【請求項６】
請求項４に記載のストレージシステムであって、
前記第二物理ブロックの消去回数が、前記第三の物理ブロックの消去回数よりも多い
ことを特徴とするストレージシステム。
【請求項７】
請求項４に記載のストレージシステムであって、
前記コピー処理は、前記第一の物理ブロックに含まれる複数の物理記憶領域のうち無効記憶領域として管理される物理記憶領域の割合が閾値以上になった場合に、実施される
ことを特徴とするストレージシステム。
【請求項８】
請求項４に記載のストレージシステムであって、
前記コピー処理は、前記第一の物理ブロックに含まれる複数の物理記憶領域のいずれかに最後にデータが書き込まれてから所定時間経過した場合に、実施される
ことを特徴とするストレージシステム。
【請求項９】
複数のフラッシュメモリチップを各々に有する複数のフラッシュパッケージを備えるストレージシステムの制御方法であって、
ホスト装置に提供される第一のＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）をバックアップ対象、前記ホスト装置に提供される第二のＬＵを非バックアップ対象、として管理しているときに、
前記第一のＬＵと対応する第一の論理記憶領域に対して更新データの書き込み要求を受信すると、更新前のデータを維持した状態で前記第一の論理記憶領域に割り当てられていた第一の物理記憶領域をバックアップ用記憶領域として管理し、前記第一の論理記憶領域に新たに第二の物理記憶領域を割り当て、当該第二の物理記憶領域に当該更新データを書き込み、
前記第二のＬＵと対応する第二の論理記憶領域に対して更新データの書き込み要求を受信すると、前記第二の論理記憶領域に割り当てられていた第三の物理記憶領域を無効記憶領域として管理し、前記第二の論理記憶領域に新たに割り当てられた第四の物理記憶領域に当該更新データを書き込み、
バックアップ用記憶領域として管理される前記第一の物理記憶領域を用いて、前記第一のＬＵのバックアップデータを提供し、
無効記憶領域として管理される前記第三の物理記憶領域に格納された更新前のデータを消去するよう制御する
ことを特徴とするストレージシステムの制御方法。
【請求項１０】
請求項９に記載のストレージシステムの制御方法であって、
前記第二のＬＵについてバックアップ取得要求を受信すると、前記複数のフラッシュパッケージ各々に対して、前記バックアップ取得要求を送信し、
前記第二のＬＵについてバックアップ取得要求を受信すると、前記第二のＬＵをバックアップ対象として管理する
ことを特徴とするストレージシステムの制御方法。
【請求項１１】
請求項９に記載のストレージシステムの制御方法であって、
前記第一のＬＵについてバックアップ削除要求を受信した場合に、前記複数のフラッシュパッケージ各々に対して、前記バックアップ削除要求を送信し、
前記第一のＬＵについてバックアップ削除要求を受信した場合に、記第二のＬＵをバックアップ非対象として、前記第一の物理記憶領域を無効記憶領域として、管理する
ことを特徴とするストレージシステムの制御方法。
【請求項１２】
請求項９に記載のストレージシステムの制御方法であって、
前記フラッシュパッケージが有する第一の物理ブロックに含まれる複数の物理記憶領域のうち、前記第一のＬＵまたは前記第二のＬＵと対応する論理記憶領域に割り当てられている少なくとも１つの物理記憶領域に格納されたデータを、第二の物理ブロックに含まれる複数の物理記憶領域にコピーし、
前記第一の物理ブロックに含まれる複数の物理記憶領域のうち、バックアップ用記憶領域として管理される少なくとも１つの物理記憶領域に格納されたデータを、第三の物理ブロックに含まれる複数の物理記憶領域にコピーし、
前記コピー完了後に、前記第一の物理ブロックに含まれる複数の物理記憶領域に格納されたデータを消去するよう制御する
ことを特徴とするストレージシステムの制御方法。
【請求項１３】
請求項１２に記載のストレージシステムの制御方法であって、
前記フラッシュパッケージが有する複数の物理ブロック各々について、データを消去する制御が実施された回数である消去回数を管理し、
前記複数の物理ブロックのうちから、消去回数が閾値以上の物理ブロックを
前記第二物理ブロックに選択し、消去回数が閾値以上の物理ブロックを前記第三の物理ブロックに選択する
ことを特徴とするストレージシステムの制御方法。
【請求項１４】
請求項１２に記載のストレージシステムの制御方法であって、
前記第二物理ブロックの消去回数が、前記第三の物理ブロックの消去回数よりも多い
ことを特徴とするストレージシステムの制御方法。
【請求項１５】
請求項１２に記載のストレージシステムの制御方法であって、
前記コピー処理は、前記第一の物理ブロックに含まれる複数の物理記憶領域のうち無効記憶領域として管理される物理記憶領域の割合が閾値以上になった場合に、実施される
ことを特徴とするストレージシステムの制御方法。
【請求項１６】
請求項１２に記載のストレージシステムの制御方法であって、
前記コピー処理は、前記第一の物理ブロックに含まれる複数の物理記憶領域のいずれかに最後にデータが書き込まれてから所定時間経過した場合に、実施される
ことを特徴とするストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気的に書き換え可能な不揮発メモリであるフラッシュメモリを記憶媒体として使用したストレージシステムにおけるデータ制御技術に関する。
【背景技術】
【０００２】
フラッシュメモリは、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等他の記憶媒体と比較し、書き込み回数が増えるに従って著しく劣化するという特性を有する。フラッシュメモリを用いた記憶装置では、一般に、書き込み回数への制限、書き込みデータサイズへの制限、定期的なデータ削除などを行うことにより、フラッシュメモリを使用した場合でも、記憶装置の寿命を可能な限り長くできるよう制御している。例えば、ある種の記憶装置では、物理記憶領域へのデータの上書きを禁止して、更新データの書き込み要求を受けた場合に、要求先の論理記憶領域に新たな物理記憶領域を割り当てて更新データを格納し、更新前の旧データが格納されている物理記憶領域を無効な領域として外部からアクセスできないように制御している。
【０００３】
一方、ストレージシステムには、バックアップ機能の１つとして、過去のある時点のデータを保存し、過去のデータイメージを提供するスナップショット機能がある。
【０００４】
フラッシュメモリを記憶媒体として用いるストレージシステムにおいて、更新データ格納後もシステム内に更新前の旧データが格納されているという上述の制御を利用し、旧データが格納された物理記憶領域を論理記憶領域との対応付けを維持したままスナップショット用のデータとして管理し、当該データと更新データの書き込み要求の発生していない他の論理記憶領域に格納されているデータとを用いて、過去のデータイメージを提供する方法が提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１５９０１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献1では、ストレージシステムの有する一部の論理記憶領域についてのみスナップショットを取得したい場合でも、スナップショットの取得をストレージシステムの論理記憶領域全体に対して行われてしまうため、実際には管理が不要な記憶領域についてまでスナップショットとして管理しなければならないこと、不要な旧データまで保持し続けなければなれないこと、などの問題があった。また、特許文献１に記載の従来のストレージシステムでは、ストレージシステムの有する全ての記憶領域について、論理記憶領域と物理記憶領域の対応付けの管理、アドレス変換、ＲＡＩＤ制御、およびスナップショット管理を含む制御が、1つのコントローラに集中してしまい、コントローラの負荷が膨大になってしまうという、問題がある。
【０００７】
そこで、本発明は、フラッシュメモリを記憶媒体として使用したストレージシステムのスナップショット機能において、ユーザのニーズに応じた柔軟なスナップショットの取得、提供を可能にすることを目的とする。
【０００８】
また、本発明の他の目的は、フラッシュメモリを記憶媒体として使用したストレージシステムにおいて、特定のコントローラに負荷が集中してしまうことを防ぐことを目的とする。
【課題を解決するための手段】
【０００９】
ホスト装置と接続されるストレージシステムは下記の要素、
複数のフラッシュメモリチップと、当該複数のフラッシュメモリチップの記憶領域を制御するパッケージコントローラと、を各々に有する複数のフラッシュパッケージと、前記複数のフラッシュパッケージの有する記憶領域を用いて、前記ホスト装置に第一のＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）と第二のＬＵを提供するストレージコントローラとを備える。
前記パッケージコントローラは、前記第一のＬＵをバックアップ対象、前記第二のＬＵを非バックアップ対象、として管理しているときに、
前記第一のＬＵと対応する第一の論理記憶領域に対して更新データの書き込み要求を受信すると、更新前のデータを維持した状態で前記第一の論理記憶領域に割り当てられていた第一の物理記憶領域をバックアップ用記憶領域として管理し、前記第一の論理記憶領域に新たに第二の物理記憶領域を割り当て、当該第二の物理記憶領域に当該更新データを書き込み、
前記第二のＬＵと対応する第二の論理記憶領域に対して更新データの書き込み要求を受信すると、前記第二の論理記憶領域に割り当てられていた第三の物理記憶領域を無効記憶領域として管理し、前記第二の論理記憶領域に新たに割り当てられた第四の物理記憶領域に当該更新データを書き込み、
バックアップ用記憶領域として管理される前記第一の物理記憶領域を用いて、前記第一のＬＵのバックアップデータを提供し、
無効記憶領域として管理される前記第三の物理記憶領域に格納された更新前のデータを消去するよう制御する。
【発明の効果】
【００１０】
本発明によれば、フラッシュメモリを記憶媒体として使用したストレージシステムのスナップショット機能において、ユーザのニーズに応じた柔軟なスナップショットの取得、提供を可能にすることができる。また、フラッシュメモリを記憶媒体として使用したストレージシステムにおいて、特定のコントローラに負荷が集中してしまうことを防ぐことを目的とする。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の一実施形態におけるスナップショット機能を説明する図である。
【図２】図２は、本発明の一実施形態におけるリクラメーション処理の概要を説明する図である。
【図３】図３は、本発明の一実施形態におけるリフレッシュ処理の概要を説明する図である。
【図４】図４は、本発明の一実施形態に係る情報処理システムの構成を示す図である。
【図５】図５は、ＦＭパッケージ１２０内のＦＭチップ４１３を詳細に示した図である。
【図６】図６は、不揮発メモリ４０４が記憶する複数のテーブルを示す図である。
【図７】図７は、ＲＡＩＤグループ構成テーブル６１０の構成を示す図である。
【図８】図８は、ＬＵ構成テーブル６２０の構成を示す図である。
【図９】図９は、スナップショット構成テーブル６３０の構成を示す図である。
【図１０】図１０は、不揮発メモリ４１４が記憶する複数のテーブルを示す図である。
【図１１】図１１は、スナップショット管理テーブル２４１０の構成を示す図である。
【図１２】図１２は、論理物理変換テーブル１０２０の構成を示す図である。
【図１３】図１３は、世代管理エントリ群１０３０の構成を示す図である。
【図１４】図１４は、論理物理変換テーブル１０２０と世代管理エントリとの対応関係を示す説明図である。
【図１５】図１５は、物理ページ状態管理テーブル１０４０の構成を示す図である。
【図１６】図１６は、物理ブロック状態管理テーブル１０５０の構成を示す図である。
【図１７】図１７は、ストレージコントローラ１１０でのスナップショット処理を示すフローチャートである。
【図１８】図１８は、ＦＭパッケージ１２０でのスナップショット処理を示すフローチャートである。
【図１９】図１９は、ストレージコントローラ１１０でのライト処理を示すフローチャートである。
【図２０】図２０は、ＦＭパッケージ１２０でのライト処理を示すフローチャートである。
【図２１】図２１は、ストレージコントローラ１１０でのリード処理を示すフローチャートである。
【図２２】図２２は、ＦＭパッケージ１２０でのリード処理を示すフローチャートである。
【図２３】図２３は、リクラメーション処理を示すフローチャートである。
【図２４】図２４は、リフレッシュ処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施形態を説明する。
【００１３】
なお、以下の説明では、「ｘｘｘテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ｘｘｘテーブル」を「ｘｘｘ情報」と呼ぶことができる。
【００１４】
また、以下の説明では、種々の対象（例えば、論理ユニット、ブロック、ページ）の識別情報の種類として、番号が採用されるが、他種の識別情報が採用されても良い。
【００１５】
また、以下の説明において、後述するストレージコントローラ及びＦＭコントローラが行う処理の少なくとも一部が、プロセッサ（例えばＣＰＵ（Central  Processing  Unit））がコンピュータプログラムを実行することによって行われる。プロセッサは、ＣＰＵそれ自体であっても良いし、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。プログラムは、プログラムソースから各コントローラにインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
【００１６】
図１−３を参照して、本実施形態の概要を以下に説明する。
【００１７】
図１にあるように、ストレージシステム１００は、複数のフラッシュメモリパッケージ（以下、ＦＭパッケージという）１２０と、複数のＦＭパッケージ１２０に接続されたストレージコントローラ１１０とを有する。
【００１８】
ＦＭパッケージ１２０は、複数のフラッシュメモリチップ（以下、ＦＭチップという）を有する。本実施形態では、ＦＭチップは、ＮＡＮＤ型のＦＭチップであるが、他の型式のＦＭチップであってもよい。ＦＭチップは、複数の物理ブロックで構成されている。各物理ブロックは、複数の物理ページで構成されている。
【００１９】
複数のＦＭパッケージ１２０のうち各二以上のＦＭパッケージ１２０により、ＲＡＩＤグループ１４０が構成される（ＲＡＩＤは、Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  （ｏｒ  Ｉｎｅｘｐｅｎｓｉｖｅ）  Ｄｉｓｋｓの略である）。ＲＡＩＤグループ１４０は、パリティグループと呼ばれることもある。なお、本実施形態では、二以上のＦＭパッケージ１２０でＲＡＩＤグループ１４０が構成されているが、必ずしもＲＡＩＤグループが構成されなくてもよい。例えば、ストレージシステムが有するＦＭパッケージの数は、１つでもよい。
【００２０】
ストレージコントローラ１１０は、ＲＡＩＤグループ１４０が提供する記憶空間２００を論理的に区切ることで、複数（又は一つ）の論理ユニット（以下、ＬＵという）１３０を形成する。記憶空間２００を構成する複数のＬＵ１３０のうちの少なくとも一つが、ストレージシステム１００の上位装置としてのホスト装置２に提供される。図１では、ＬＵ１３０の例としてＬＵ＃１が示されている。以下の説明では、ＬＵ番号がｎ（ｎは整数）のＬＵ１３０を「ＬＵ＃ｎ」と表すことがある。
【００２１】
ストレージコントローラ１１０は、ホスト装置２からＩ／Ｏコマンド（ライトコマンド或いはリードコマンド）を受信する。Ｉ／Ｏコマンドは、Ｉ／Ｏ先を表す情報として、例えば、ＬＵ１３０の識別情報と、そのＬＵ１３０における領域を表す論理アドレスを表す情報とを有する。ＬＵ１３０の識別情報は、例えば、ＬＵＮ（Logical  Unit  Number）である。論理アドレスは、例えば、ＬＢＡ（Logical  Block  Address）である。
【００２２】
ストレージコントローラ１１０は、ＬＵ＃１を指定したＩ／Ｏコマンドをホスト装置２から受けて、そのＩ／Ｏコマンドに応答して、そのＩ／Ｏコマンド（ライトコマンド）で指定されているＬＵ＃１にライト対象のデータを書き込む、或いは、そのＩ／Ｏコマンド（リードコマンド）で指定されているＬＵ＃１からリード対象のデータを読み出す。ＬＵ＃１にライト対象のデータが書き込まれるということは、その書き込み先を表す論理アドレスに対応した一又は複数の物理ページにライト対象のデータが書き込まれるということである。また、ＬＵ＃１からリード対象のデータが読み出されるということは、その読み出し元を表す論理アドレスに対応した一又は複数の物理ページから、リード対象のデータが読み出されるということである。
【００２３】
また、このストレージシステム１００は、バックアップ機能の１つとして、スナップショット機能を有する。スナップショット機能とは、ホスト装置２から認識可能なＬＵ＃１のある時点でのフルバックアップイメージを取得する機能である。例えば、スナップショット機能を用いることで、ホスト装置２からの要求された所定の時点でのＬＵ＃１のフルバックアップイメージの復元が可能となる。図１に示す例によれば、スナップショット１，２及び３という、ＬＵ＃１の異なる３つの時点でのフルバックアップイメージが管理されている。ストレージコントローラ１１０は、ＬＵ＃１を指定したスナップショットコマンド（以下、ＳＳコマンドという）をホスト装置２から受けて、そのＳＳコマンドに応答して、そのＳＳコマンドで指定されている時点（或いは、そのＳＳコマンドを受けた時点）でのＬＵ＃１のスナップショットを取得する。スナップショットの取得とは、その取得時点のＬＵを構成する各領域（各論理アドレスが表す領域）に格納されているデータを、後に読み出しできるようにすることである。詳細に説明すると、スナップショットの取得時点以降に更新が行われた各領域の更新前のデータは、差分データとして消去されることなく管理されている。そして、その差分データは、ＦＭパッケージ１２０内に格納されており、どの時点の差分データであるかという付加情報も別途（若しくは一緒に）世代情報として管理されている。このため、どの差分データがどのスナップショット（フルバックアップイメージ）に含まれているデータかがわかり、スナップショット取得時点のスナップショットを復元することができる。
【００２４】
さて、本実施形態では、ＦＭパッケージ１２０の構成要素として、前述したように、ＮＡＮＤ型のＦＭチップが採用されている。ＮＡＮＤ型のＦＭチップは、下記の特徴を有する。
（１）ＮＡＮＤ型ＦＭチップは、読み書きの単位がページであり、消去単位がブロックである。ライトコマンドがあった場合、ライト対象のデータは、１又は複数の物理ページに書き込まれる。また、リードコマンドがあった場合、１又は複数の物理ページに書き込まれたリード対象データが読み出される。なお、この場合、ライト（又はリード）対象のデータは、１（又は複数）の物理ページのすべてに書き込まれるに限られない。ライト（又はリード）対象のデータは、１（又は複数）の物理ページの一部分に書き込まれる場合もある。また、データの消去は、複数のページで構成されたブロック毎に行われる。
（２）ＮＡＮＤ型ＦＭチップは、追記型の記憶媒体である。ＮＡＮＤ型ＦＭチップのページは、上書きできない。データが更新される際には、ライト対象のデータは空きページに書き込まれ、更新前のデータが格納されたページは、無効なページとなる。このため、データ領域を有効活用するために、リクラメーション処理が必要となる。
（３）ＮＡＮＤ型ＦＭチップは、ブロックの消去回数に制限がある。
（４）ＮＡＮＤ型ＦＭチップは、データリテンションによりリードエラーが発生しやすい。なお、ここでは、データリテンションとは、ＦＭチップに格納されているデータは一定期間しか保持できないフラッシュメモリの特性のことをいう。
【００２５】
このため、ストレージシステム１００においては、リクラメーション処理、リフレッシュ処理などのＦＭ特有の処理、及び、ウェアレベリング処理を行うことが望ましい。各処理及びウェアレベリング処理を以下に説明する。以下の説明では、ＬＵに格納されているデータを有効データといい、ＬＵに格納されていないデータを無効データ（有効データが更新され、無効となったデータ）という場合がある。また、スナップショット取得時点における差分データをスナップショットデータ（以下、ＳＳデータという）という場合がある。さらに、ＦＭチップ内において、有効データが格納されているページを有効ページ、無効データが格納されているページを無効ページ、ＳＳデータが格納されているページをスナップショットページ（以下、ＳＳページという）という場合がある。
【００２６】
リクラメーション処理は、空きページのみで構成されたブロック（以下、空きブロックという）を作り出す処理である。具体的には、複数の有効ページが複数（又は一つ）の物理ブロックに分散して存在する場合に、複数の有効ページ内の有効データを１個の物理ブロックに集約し、無効ページのみで構成されたブロック(以下、無効ブロックという)を作り、無効ブロックを消去する処理である。リクラメーション処理の対象となるブロック（以下、ＲＣ対象ブロック）は、例えば、ブロックに割り当てられているページのうち、無効ページ数が閾値以上になったブロックである。
【００２７】
リフレッシュ処理は、データリテンションによるリードエラーを防止するため、所定時間以上経過したブロックのデータを別の物理ブロックに移動する処理である。本実施形態では、リフレッシュ処理の対象となるブロック（以下、ＲＦ対象ブロック）は、例えば、最終のライト時刻からの経過時間が閾値以上になったブロックである。しかし、リフレッシュ処理の対象となるブロックは、最終ライト時刻からの経過時間が閾値以上となるブロックに限られず、例えば、最初のライト時刻からの経過時間が閾値以上となるブロックである等、所定の動作からの経過時間が閾値以上となるブロックであればよいものとする。
【００２８】
ウェアレベリング処理は、ＦＭチップ内のブロック毎の消去回数（又は書込み回数、以下同様）を均一化させるための処理である。具体的には、ウェアレベリング処理では、ブロック毎の消去回数を均一化すべく、フラッシュメモリ内のあるページにライトする場合に、例えば、消去回数が閾値未満のブロックのページを割り当てる。
【００２９】
本実施形態にあっては、上述した処理（リクラメーション処理、リフレッシュ処理及びウェアレベリング処理）は、ＦＭパッケージ毎に、後述する各ＦＭパッケージ内のコントローラ（以下、ＦＭコントローラという）によって行われる。また、以下に説明するＳＳデータの退避処理についても、同様に、各ＦＭコントローラによって行われる。以下に、概要を説明する。
【００３０】
図２は、本実施形態におけるリクラメーション処理実行中のＳＳデータの退避処理の概要を説明する図である。なお、以下の説明において、「ブロックを消去する」とは、具体的には、ブロックに対して消去処理を行うことで空きブロックを生成することを意味する。
【００３１】
ＦＭコントローラが行う処理を以下に示す。
【００３２】
ＦＭコントローラは、リクラメーション処理を行う。リクラメーション処理を行う前処理として、ＲＣ対象ブロック５１１ＲＣ内にＳＳページがある場合には、ＦＭコントローラはＳＳデータの退避処理を行う。具体的には、ＦＭコントローラは、ＦＭパッケージ内のブロック群５１１Ｇの中から、ＲＣ対象ブロック５１１ＲＣとして、無効ページ数が閾値以上のブロックを抽出する。ＦＭコントローラは、抽出したＲＣ対象ブロック５１１ＲＣ内にＳＳページが存在するか否かを判定する。ＳＳページが存在する場合には、ＦＭコントローラは、以下のＳＳデータ退避処理を行う。
（Ａ）ＦＭコントローラは、ＦＭパッケージ内のブロック群５１１Ｇの中から、消去回数が閾値以上のブロック（以下、この説明では第１コピー対象ブロックという）５１１Ｃａを抽出する。
（Ｂ）ＦＭコントローラは、ＲＣ対象ブロック５１１ＲＣにおける１以上のＳＳページの各々について、下記の処理（ｂ１）及び（ｂ２）を行う。
（ｂ１）ＦＭコントローラは、ＳＳページ内のＳＳデータを第１コピー対象ブロック内の空きページにコピーする。
（ｂ２）ＦＭコントローラは、コピー元のＳＳページを無効ページとし、コピー先の空きページを、ＳＳページとする。
【００３３】
ＳＳデータ退避処理で、第１コピー対象ブロックにＳＳページを生成することによって、消去回数が閾値以上のブロック（第１コピー対象ブロック）については、ＳＳページには更新ライトが実施されないことが自明なので、消去回数を維持することが可能となる。
【００３４】
ＦＭコントローラは、ＳＳページの無いＲＣ対象ブロック（具体的には、ＳＳデータ退避処理が行われることによりＳＳページが無くなったＲＣ対象ブロック及び／又は、ＳＳデータ退避処理を行わなくてもＳＳページが存在していないＲＣ対象ブロック）について、リクラメーション処理を行う。リクラメーション処理を以下に説明する。
（Ｆ）ＦＭコントローラは、ＦＭパッケージ内のブロック群５１１Ｇの中から、消去回数が閾値未満のブロック（以下、この説明では第２コピー対象ブロックという）５１１Ｃｂを抽出する。
（Ｇ）ＦＭコントローラは、ＲＣ対象ブロック５１１ＲＣに１以上の有効ページが存在するか否かを判定する。
（Ｈ）上記（Ｇ）の判定の結果が肯定的の場合、ＦＭコントローラは、各有効ページについて、下記の（ｈ１）及び（ｈ２）を行う。
（ｈ１）ＦＭコントローラは、有効ページの有効データを第２コピー対象ブロックの空きページにコピーする。
（ｈ２）ＦＭコントローラは、コピー元の有効ページを無効ページとし、コピー先の空きページを有効ページとする。
（Ｉ）ＦＭコントローラは、すべてのページが無効ページとなったＲＣ対象ブロックを消去することで、空きブロックが生成される。
【００３５】
リクラメーション処理で第２コピー対象ブロックに有効ページを増やすことによって、消去回数が閾値未満のブロックを消去する確率を高めることができる。
【００３６】
図３は、本実施形態におけるリフレッシュ処理実行中のＳＳデータの退避処理の概要を説明する図である。なお、以下の説明において、「ブロックを消去する」とは、具体的には、ブロックに対して消去処理を行うことで空きブロックを生成することを意味する。
【００３７】
ＦＭコントローラが行う処理を以下に示す。
【００３８】
ＦＭコントローラは、リフレッシュ処理を行う。リフレッシュ処理を行う前処理として、ＲＦ対象ブロック５１１ＲＦ内にＳＳページがある場合には、ＦＭコントローラはＳＳデータの退避処理を行う。具体的には、ＦＭコントローラは、ＦＭパッケージ内のブロック群５１１Ｇの中から、ＲＦ対象ブロック５１１ＲＦとして、最終ライト時刻からの経過時間（最終ライト時刻から現在時刻までの差分時間）が閾値以上のブロックを抽出する。ＦＭコントローラは、抽出したＲＦ対象ブロック５１１ＲＦ内にＳＳページが存在するか否かを判定する。ＳＳページが存在する場合には、ＦＭコントローラは、以下のＳＳデータ退避処理を行う。
（Ｊ）ＦＭコントローラは、ＦＭパッケージ内のブロック群５１１Ｇの中から、消去回数が閾値以上のブロック（以下、この説明では、第３コピー対象ブロックという）５１１Ｃｄを抽出する。
（Ｋ）ＦＭコントローラは、ＲＦ対象ブロック５１１ＲＦにおける１以上のＳＳページの各々について、下記の処理（ｂ１）及び（ｂ２）を行う。
（ｋ１）ＦＭコントローラは、ＳＳページ内のＳＳデータを第３コピー対象ブロック５１１Ｃｄ内の空きページにコピーする。
（ｋ２）ＦＭコントローラは、コピー元のＳＳページを無効ページとし、コピー先の空きページを、ＳＳページとする。
【００３９】
ＳＳデータ退避処理で、第３コピー対象ブロック５１１ＣｄにＳＳページを生成することによって、消去回数が閾値以上のブロック（第３コピー対象ブロック）については、ＳＳページには更新ライトが実施されないことが自明なので、消去回数を維持することが可能となる。
【００４０】
ＦＭコントローラは、ＳＳページの無いＲＦ対象ブロック（具体的には、ＳＳデータ退避処理が行われることによりＳＳページが無くなったＲＦ対象ブロック及び／又は、ＳＳデータ退避処理を行わなくてもＳＳページが存在していないＲＦ対象ブロック）について、リフレッシュ処理を行う。リフレッシュ処理を以下に説明する。
（Ｌ）ＦＭコントローラは、ＦＭパッケージ内のブロック群５１１Ｇの中から、消去回数が閾値未満のブロック（以下、第４コピー対象ブロックという）５１１Ｃeを抽出する。
（Ｍ）ＦＭコントローラは、ＲＦ対象ブロック５１１ＲＦに１以上の有効ページが存在するか否かを判定する。
（Ｎ）上記（Ｍ）の判定の結果が肯定的の場合、ＦＭコントローラは、各有効ページについて、下記の（ｎ１）及び（ｎ２）を行う。
（ｎ１）ＦＭコントローラは、有効ページの有効データを第４コピー対象ブロックの空きページにコピーする。
（ｎ２）ＦＭコントローラは、コピー元の有効ページを無効ページとし、コピー先の空きページを有効ページとする。
（Ｏ）ＦＭコントローラは、すべてのページが無効ページとなったＲＦ対象ブロックを消去することで、空きブロックが生成される。
【００４１】
リフレッシュ処理で第４コピー対象ブロックに有効ページを増やすことによって、消去回数が閾値未満のブロックを消去する確率を高めることができる。
【００４２】
以下、図面を参照して、本実施形態を詳細に説明する。
【００４３】
まず、図４及び図５を参照して、本実施形態に係るストレージシステムの構成を説明する。図４は、ストレージシステム１００の構成図である。図５は、ＦＭパッケージ１２０内のＦＭチップ４１３を詳細に示した図である。
【００４４】
ストレージシステム１００は、複数のＦＭパッケージ１２０と、ホスト装置２及び複数のＦＭパッケージ１２０に接続されたストレージコントローラ１１０とを有する。ストレージコントローラ１１０は、ホスト装置２からのＩ／Ｏコマンドに従い複数のＦＭパッケージ１２０のうちの１以上のＦＭパッケージ１２０に対してデータのＩ／Ｏを行う。
【００４５】
ストレージコントローラ１１０は、ホストインターフェース（以下、ホストＩ／Ｆ））４０１と、ＲＡＩＤコントローラ４０２と、不揮発メモリ４０４と、ディスクインターフェース（以下、ディスクＩ／Ｆという）４０３とを有する。ホストＩ／Ｆ４０１が、ホスト装置２に接続される。ディスクＩ／Ｆ４０３が、各ＦＭパッケージ１２０に接続される。ＲＡＩＤコントローラ４０２が、ホストＩ／Ｆ４０１、ディスクＩ／Ｆ４０３及び不揮発メモリ４０４に接続される。
【００４６】
不揮発メモリ４０４は、データ及びプログラムを記憶する。不揮発メモリ４０４に記憶されるデータについては後述する。
【００４７】
ＲＡＩＤコントローラ４０２は、不揮発メモリ４０４内のプログラムを実行するためのマイクロプロセッサ（図示なし）を有する。ＲＡＩＤコントローラ４０２が、ホスト装置２からホストＩ／Ｆ４０１を通じてＩ／Ｏコマンドを受信し、そのＩ／Ｏコマンドに従い、ディスクＩ／Ｆ４０３を介して、一以上のＦＭパッケージ１２０に対して、データのＩ／Ｏコマンドを発行する。
【００４８】
各ＦＭパッケージ１２０は、フラッシュメモリコントローラ（以下、ＦＭコントローラという）４１２と、これに接続された複数のＮＡＮＤ型ＦＭチップ４１３と、不揮発メモリ４１４と、ディスクＩ／Ｆ４１１とを有する。
【００４９】
不揮発メモリ４１４は、データ及びプログラムを記憶する。不揮発メモリ４１４に記憶されるデータについては後述する。
【００５０】
ＦＭコントローラ４１２は、ストレージコントローラ１１０からのＩ／Ｏコマンドに従い、複数のＦＭチップ４１３のうちの１以上のＦＭチップ４１３に対してデータのＩ／Ｏを行う。ＦＭコントローラ４１２は、そのＦＭコントローラ４１２が含まれるＦＭパッケージ１２０の不揮発メモリ４１４内部のプログラムを実行するためのマイクロプロセッサ（図示なし）を有する。
【００５１】
ＦＭパッケージ１２０内の各ＦＭチップ４１３は、そのＦＭパッケージ１２０内のＦＭコントローラ４１２に接続されている。各ＦＭチップ４１３は、複数の物理ブロック５１１で構成されている。各物理ブロック５１１は、複数個の物理ページ５１２で構成されている（図５参照）。
【００５２】
前述したように、ストレージシステム１００内の二以上のＦＭパッケージ１２０によりＲＡＩＤグループが構成される。１つのＲＡＩＤグループに基づき、論理的に区切られた複数（又は１つ）のＬＵが形成される。図５では、ＲＡＩＤグループ＃１に基づいて、ＬＵ＃１及びＬＵ＃２が形成される。ＬＵを構成する各領域には、論理アドレスが割り当てられる。
【００５３】
以下の説明において、ＬＵを構成する領域毎に、ホスト装置２側から見た第１論理アドレスと、ストレージコントローラ１１０及びＦＭパッケージ１２０側から見た第２論理アドレスとがある。
【００５４】
図６は、ストレージコントローラ１１０が有する不揮発メモリ４０４が記憶する複数のテーブルを示す図である。
【００５５】
不揮発メモリ４０４は、複数のテーブルとして、例えば、不揮発メモリ４０４は、ＲＡＩＤグループ構成テーブル６１０、ＬＵ構成テーブル６２０、及びスナップショット構成テーブル６３０を記憶する。これらのテーブルのうちの少なくとも１つは、ストレージシステム１００の稼働後に作成されて良い。不揮発メモリ４０４内のテーブルを以下に説明する。
【００５６】
図７は、ＲＡＩＤグループ構成テーブル６１０の構成を示す。
【００５７】
ＲＡＩＤグループ構成テーブル６１０は、各ＲＡＩＤグループ１４０を構成するＦＭパッケージ１２０を示したテーブルである。具体的には、テーブル６１０は、例えば、ＲＡＩＤグループ毎に、以下の情報、
（＊）ＲＡＩＤグループの番号であるＲＡＩＤグループ番号７０１、
（＊）ＲＡＩＤグループに所属するＦＭパッケージの番号であるＦＭパッケージ番号７０２、
を有する。同図の例によれば、ＲＡＩＤグループ＃１にはＦＭパッケージ＃０、１、２、３、４の５つのＦＭパッケージ１２０が所属していることがわかる。
【００５８】
図８は、ＬＵ構成テーブル６２０の構成を示す。
【００５９】
ＬＵ構成テーブル６２０は、各ＬＵの構成を示したテーブルである。具体的には、テーブル６２０は、例えば、ＬＵ部分毎に、下記の情報、
（＊）ＬＵ部分を含んだＬＵの番号であるＬＵ番号８０１、
（＊）ＬＵ部分の基になっているＲＡＩＤグループの番号であるＲＡＩＤグループ番号８０２、
（＊）ＬＵ部分に割り当てられている第２論理アドレスの範囲である論理アドレス範囲８０３、
（＊）ＬＵ部分の基になっているＦＭパッケージの番号であるＦＭパッケージ番号８０４、
を有する。同図の例によれば、ＬＵ＃０の第１部分（ＬＵ＃０の先頭を含んだ部分）は、ＲＡＩＤグループ＃０内のＦＭパッケージ＃０が基になっており、この第１部分に第２論理アドレスの範囲として０Ｘ００００〜０Ｘ００ＦＦが割り当てられていることがわかる。また、ＬＵ＃０の第２部分（ＬＵ＃０の第１部分の次の部分）は、ＲＡＩＤグループ＃０内のＦＭパッケージ＃１が基になっており、この第２部分に第２論理アドレスの範囲として０Ｘ０１００〜０Ｘ０１ＦＦが割り当てられていることがわかる。従って、同図の例によれば、ＬＵ＃０の第１部分がＩ／Ｏ先である場合には、ＲＡＩＤグループ＃０におけるＦＭパッケージ＃０に対してのみＩ／Ｏが行われ、ＬＵ＃０の第２部分がＩ／Ｏ先である場合には、ＲＡＩＤグループ＃０におけるＦＭパッケージ＃１に対してのみＩ／Ｏが行われる。つまり、本実施形態において、ＲＡＩＤグループ＃０では、データが、ＲＡＩＤグループ＃０を構成する５個のＦＭパッケージ＃０〜＃４に分散して書かれるわけではない。
【００６０】
図９は、スナップショット構成テーブル６３０の構成を示す。
【００６１】
スナップショット構成テーブル６３０は、各ＬＵのスナップショットに関する情報を示したテーブルである。具体的には、テーブル６３０は、例えば、ＬＵ毎に、下記の情報、
（＊）ＬＵの番号であるＬＵ番号９０１、
（＊）ＬＵのスナップショットを取得する（ＯＮ）か否か（ＯＦＦ）を表すスナップショットフラグ９０２、
（＊）ＬＵについて取得されたスナップショットの数を表すスナップショット取得値９０３、
を有する。同図の例によれば、ＬＵ＃０については、スナップショットフラグ９０２が“ＯＮ”のためスナップショットが取得されるようになっており、且つ、３つのスナップショットが取得済みであることがわかる。また、ＬＵ＃１については、スナップショットフラグ９０２が“ＯＦＦ”のためスナップショットが取得されないようになっており、且つ、取得済みのスナップショットの数がゼロであることがわかる。
【００６２】
図１０は、各ＦＭパッケージ１２０が有する不揮発メモリ４１４が記憶する複数のテーブルを示す図である。
【００６３】
不揮発メモリ４１４は、複数のテーブルとして、例えば、スナップショット管理テーブル１０１０、論理物理変換テーブル１０２０、世代管理エントリ群１０３０、物理ページ状態管理テーブル１０４０、及び物理ブロック状態管理テーブル１０５０を記憶する。これらのテーブルのうちの少なくとも１つは、ストレージシステム１の稼働後に作成されて良い。不揮発メモリ４１４内のテーブルを以下に説明する。
【００６４】
図１１は、スナップショット管理テーブル１０１０の構成を示す。
【００６５】
スナップショット管理テーブル１０１０は、ＦＭパッケージ１２０に提供されるスナップショットに関する情報を示したテーブルである。具体的には、テーブル１０１０は、例えば、ＬＵ毎に、下記の情報、
（＊）ＬＵの番号であるＬＵ番号１１０１、
（＊）ＬＵの第２論理アドレスの範囲を表す論理アドレス１１０２、
（＊）ＬＵのスナップショットを取得する（ＯＮ）か否か（ＯＦＦ）を表すスナップショットフラグ１１０３、
（＊）ＬＵについて取得されたスナップショットの数を表すスナップショット取得値１１０４、
を有する。同図の例によれば、ＬＵ＃１については、第２論理アドレスが“０Ｘ００００〜０Ｘ０４ＦＦ”の範囲であって、スナップショットフラグが“ＯＮ” のためスナップショットが取得されるようになっており、且つ、３つのスナップショットが取得済みであることがわかる。
【００６６】
図１２は、論理物理変換テーブル１０２０の構成を示す。
【００６７】
論理物理変換テーブル１０２０は、論理ページと物理ページの対応関係を示したテーブルである。具体的には、テーブル１０２０は、例えば、論理ページ毎に、下記の情報、
（＊）論理ページの番号である論理ページ番号１２０１、
（＊）論理ページに対応づけられている物理ページの番号である物理ページ番号１２０２、
を有する。同図の例によれば、論理ページ＃０には、物理ページ＃５００が対応づけられていることがわかる。なお、図示はしないが、論理ページは第２論理アドレスに対応づけられている。
【００６８】
図１３は、世代管理エントリ群１０３０の構成を示す。
【００６９】
世代管理エントリ群１０３０は、スナップショットの世代を示した１以上のエントリ（以下、世代管理エントリ）の集合である。各世代管理エントリ群は、例えば、スナップショットの世代を表す番号である世代番号１３０１と、その世代のスナップショットを構成するＳＳデータを格納している物理ページの番号である物理ページ番号１３０２とを有する。
【００７０】
図１４に示すように、世代管理エントリは、論理物理変換テーブル１０２０を構成するエントリ（以下、論理物理エントリ）にキュー形式で関連付けられる。論理ページに格納されるＳＳデータの世代が増える都度に、その論理ページに対応する論理物理エントリに関連付けられる世代管理エントリの数は増える。例えば、図１４において、論理ページ＃０に対応した論理物理エントリに、世代＃１に対応した世代管理エントリが関連付けられているとする。この場合に、論理ページ＃０に格納された、世代＃２のＳＳデータが、物理ページ＃３４０に格納されたとする。この場合、論理ページ＃０に対応した論理物理エントリに、世代＃２に対応した世代管理エントリ（世代番号１３０１「世代２」及び物理ページ番号１３０２「３４０」を含んだエントリ）が関連付けられ、その世代管理エントリに、既存の世代管理エントリ（世代番号１３０１「世代１」及び物理ページ番号１３０２「０」を含んだエントリ）が関連付けられる。
【００７１】
図１５は、物理ページ状態管理テーブル１０４０の構成を示す。
【００７２】
物理ページ状態管理テーブル１０４０は、物理ページの状態を示したテーブルである。具体的には、テーブル１０４０は、例えば、物理ページ毎に、下記の情報、
（＊）物理ページの番号を表す物理ページ番号１５０１、
（＊）物理ページの状態を表す物理ページ状態１５０２、
を有する。同図の例によれば、物理ページ＃１は有効ページであり、物理ページ＃２はＳＳページであり、物理ページ＃３は空きページであり、物理ページ＃４は無効ページであることがわかる。なお、空きページとは、データが格納されていない物理ページである。
【００７３】
図１６は、物理ブロック状態管理テーブル１０５０の構成を示す。
【００７４】
物理ブロック状態管理テーブル１０５０は、物理ブロックの状態を示したテーブルである。具体的には、テーブル１０５０は、例えば、物理ブロック毎に、下記の情報
（＊）物理ブロックの番号である物理ブロック番号１６０１、
（＊）物理ブロックを消去した回数を表す消去回数１６０２、
（＊）物理ブロック内の物理ページに最後にデータが格納された時刻を表す最終ライト時刻１６０３、
（＊）物理ブロックが有する無効ページの数を表す無効ページ数１６０４、
（＊）物理ブロックが有する先頭の物理ページの番号から末端の物理ページの番号までの物理ページ番号の一覧を表す物理ページリスト１６０５、
を有する。同図の例によれば、物理ブロック＃０は、現在まで１０００回消去されており、その物理ブロック内のページに最後にデータが格納された時刻は「2010/10/10/15：34：26」であり、無効ページが９９８個あることがわかる。また、物理ブロック＃０は、０〜１０００番の物理ページで構成されていることがわかる。
【００７５】
次に、本実施形態に係るストレージシステム１００で行われる各種処理を説明する。
【００７６】
図１７は、ストレージコントローラ１１０でのスナップショット処理を示す。以下の説明では、スナップショットを「ＳＳ」と省略することがある。
【００７７】
ストレージコントローラ１１０は、ホスト装置２からＳＳコマンドを受信する（Ｓ１７０１）。
【００７８】
ＳＳコマンドとして、複数種類のＳＳコマンドがある。複数の種類のＳＳコマンドは、例えば、ＳＳ取得コマンド（ＳＳの取得のコマンド）と、ＳＳ削除コマンド（ＳＳの削除のコマンド）と、ＳＳ読出しコマンド（ＳＳからのデータの読み出しのコマンド）とがある。複数種類のＳＳコマンドは、ＳＳ書込みコマンド（ＳＳへのデータの書き込みのコマンド）を含んでも良い。
【００７９】
ＳＳコマンドでは、少なくとも、ＬＵが指定されている。具体的には、例えば、ＳＳ取得コマンド、ＳＳ削除コマンド及びＳＳ読出しコマンドは、いずれも、ＳＳの元となるＬＵの番号を含む。ＳＳ読出しコマンドは、更に、ＳＳの世代の番号と、読出し対象のデータが格納されている領域に対応した第１論理アドレスとを含む。図１７の説明では、ＳＳコマンドで指定されているＬＵを「対象ＬＵ」と言う。
【００８０】
ストレージコントローラ１１０は、ＳＳコマンドを基に、ＰＫＧ−ＳＳコマンドの送信先とするＦＭパッケージ（ＰＫＧ）を特定する（Ｓ１７０２）。具体的には、例えば、ストレージコントローラ１１０は、ＬＵ構成テーブル６２０から、対象ＬＵに対応するＦＭパッケージを特定する。もし、ＳＳコマンドが、第１論理アドレスを有している場合、ストレージコントローラ１１０は、対象ＬＵの番号を基に、第１論理アドレスに対応する第２論理アドレスを特定し、そのＬＵ番号とその第２論理アドレスに対応するＦＭパッケージを、ＬＵ構成テーブル６２０から特定する。特定されたＦＭパッケージが、ＰＫＧ−ＳＳコマンドの送信先である。ＰＫＧ−ＳＳコマンドは、ＦＭパッケージに送信されるＳＳコマンドである。
【００８１】
ストレージコントローラ１１０は、ＳＳコマンドの種別を判定する（Ｓ１７０３）。ＳＳコマンドの種別がＳＳ削除であった場合には、ストレージコントローラ１１０は、Ｓ１７０４及びＳ１７０５の処理を行う。ＳＳコマンドの種別がＳＳ取得であった場合には、ストレージコントローラ１１０は、Ｓ１７０７及びＳ１７０８の処理を行う。ＳＳコマンドの種別がＳＳ読出しであった場合には、ストレージコントローラ１１０は、Ｓ１７０９の処理を行う。
【００８２】
ＳＳコマンドの種別がＳＳ削除の場合を以下に説明する。
【００８３】
Ｓ１７０３において、ＳＳコマンドの種別がＳＳ削除であると判定された場合、ストレージコントローラ１１０は、対象ＬＵについて、スナップショット取得の解除を行う（Ｓ１７０４）。具体的には、ストレージコントローラ１１０は、ＳＳコマンドが有するＬＵ番号に対応した、スナップショット構成テーブル６３０におけるスナップショットフラグ９０２を、“ＯＦＦ”に変更する。
【００８４】
次に、ストレージコントローラ１１０は、対象ＬＵについての全てのスナップショットを破棄する（Ｓ１７０５）。具体的には、ストレージコントローラ１１０は、ＳＳコマンドが有するＬＵ番号に対応する、スナップショット構成テーブル６３０におけるスナップショット取得値９０２を“０”に変更する。続いて、Ｓ１７０６を行う。
【００８５】
ＳＳコマンドの種別がＳＳ取得の場合を以下に説明する。
【００８６】
Ｓ１７０３において、ＳＳコマンドの種別がＳＳ取得であると判定された場合、ストレージコントローラ１１０は、対象ＬＵについてスナップショット取得を更新する（Ｓ１７０７）。具体的には、ストレージコントローラ１１０は、対象ＬＵに対応する、スナップショット構成テーブル６３０のスナップショットフラグ９０２を“ＯＮ”にする。
【００８７】
次に、ストレージコントローラ１１０は、対象ＬＵに対応する、スナップショット構成テーブル６３０におけるスナップショット取得値９０２を１増やす（Ｓ１７０８）。つまり、ＳＳ取得コマンドを受信する都度に、対象ＬＵのスナップショットの数が１増える。続いてＳ１７０６を行う。
【００８８】
ＳＳコマンドの種別がＳＳ読出しの場合を以下に説明する。
【００８９】
Ｓ１７０３において、ＳＳコマンドの種別がＳＳ読出しであると判定された場合、ストレージコントローラ１１０は、ＳＳコマンドに設定されている世代番号を取得する（Ｓ１７０８）。続いて、Ｓ１７０６を行う。
【００９０】
Ｓ１７０６の処理を説明する。ストレージコントローラ１１０は、ＳＳコマンドに基づくＰＫＧ−ＳＳコマンドを生成し、そのＰＫＧ−ＳＳコマンドを、Ｓ１５０２で特定されたＦＭパッケージ１２０に送信する。ＰＫＧ−ＳＳコマンドの種別として、例えば、ＳＳコマンドと同様に、ＳＳ削除、ＳＳ取得及びＳＳ読出しがある。
【００９１】
発行するＰＫＧ−ＳＳコマンドに含まれる情報は、Ｓ１７０３で判定されたＳＳコマンド種別によって異なる。ＳＳコマンド種別がＳＳ削除及びＳＳ取得の場合は、ＰＫＧ−ＳＳコマンドには、ＬＵ番号が含まれる。ＳＳコマンド種別がＳＳ読出しの場合は、ＰＫＧ−ＳＳコマンドには、更に、第２論理アドレス及び世代番号が含まれる。
【００９２】
図１８は、ＦＭパッケージ１２０でのスナップショット処理を示す。
【００９３】
ＦＭパッケージ１２０は、ストレージコントローラ１１０からＰＫＧ−ＳＳコマンドを受信する（Ｓ１８０１）。図１８の説明では、ＰＫＧ−ＳＳコマンドで指定されているＬＵを「対象ＬＵ」と言う。図１８での対象ＬＵは、図１７での対象ＬＵと同じである。
【００９４】
ＦＭコントローラ４１２は、受信したＰＫＧ−ＳＳコマンドの種別を判定する（Ｓ１８０２）。具体的には、ＦＭコントローラ４１２は、ＰＫＧ−ＳＳコマンドの種別が、ＳＳ削除、ＳＳ取得、ＳＳ読出しのいずれかであるか判定する。
【００９５】
判定の結果、ＳＳコマンドの種別がＳＳ削除であった場合には、ＦＭコントローラ４１２は、Ｓ１８０３〜Ｓ１８０６の処理を行う。ＳＳコマンドの種別がＳＳ取得であった場合には、ＦＭコントローラ４１２は、Ｓ１８０７〜Ｓ１８０９又はＳ１８０７及びＳ１８０９の処理を行う。ＳＳコマンドの種別がＳＳ読出しであった場合には、ＦＭコントローラ４１２は、Ｓ１８１１〜Ｓ１８１４の処理、又はＳ１８１１〜Ｓ１８１３、Ｓ１８１５の処理を行う。
【００９６】
ＰＫＧ−ＳＳコマンドの種別がＳＳ削除の場合を以下に説明する。
【００９７】
Ｓ１８０２において、ＳＳコマンドの種別がＳＳ削除であると判定された場合、ＦＭコントローラ４１２は、対象ＬＵについて、スナップショット取得の解除を行う（Ｓ１８０３）。具体的には、ＦＭコントローラ４１２は、対象ＬＵに対応する、スナップショット管理テーブル１０１０のスナップショットフラグ１１０３を、“ＯＦＦ”に変更する。
【００９８】
次に、ＦＭコントローラ４１２は、対象ＬＵについての全てのスナップショットを破棄する（Ｓ１８０４）。具体的には、ＦＭコントローラ４１２は、ＰＫＧ−ＳＳコマンドが有するＬＵ番号に対応する、スナップショット管理テーブル１０１０におけるスナップショット取得値１１０４を“０”に変更する。
【００９９】
さらに、ＦＭコントローラ４１２は、対象ＬＵに関連付けられている全てのＳＳデータを破棄する（Ｓ１８０５）。具体的には、ＦＭコントローラ４１２は、論理物理変換テーブル１０２０における、対象ＬＵに対応する全ての論理物理エントリを特定し、特定した複数の論理物理エントリから、全ての世代管理エントリの関連付けを破棄する。また、ＦＭコントローラ４１２は、破棄された世代管理エントリ毎に、その世代管理エントリに登録されている物理ページ番号を特定し、且つ、特定した物理ページ番号を有するエントリ（物理ページ状態管理テーブル１０４０におけるエントリ）内の物理ページ状態１５０２を「ＳＳ」から「無効」に変更する（Ｓ１８０６）。
【０１００】
ＰＫＧ−ＳＳコマンドの種別がＳＳ取得の場合を以下に説明する。
【０１０１】
Ｓ１８０２において、ＳＳコマンドの種別がＳＳ取得であると判定された場合、ＦＭコントローラ４１２は、スナップショットフラグがＯＮであるか否かの判定をさらに行う（Ｓ１８０７）。
【０１０２】
判定の結果、スナップショットフラグがＯＮであった場合には、ＦＭコントローラ４１２は、スナップショットフラグを立てる処理を行う（Ｓ１８０８）。具体的には、ＦＭコントローラ４１２は、対象ＬＵに対応する、スナップショット管理テーブル１０１０におけるスナップショットフラグ９０２を“ＯＮ”に変更する。
【０１０３】
次に、ＦＭコントローラ４１２は、対象ＬＵに対応する、スナップショット管理テーブル１０１０におけるスナップショット取得値１１０４を１インクリメントする（Ｓ１８０９）。つまり、ＰＫＧ−ＳＳ取得コマンドを受信する都度に、対象ＬＵのスナップショットの数が１増える。
【０１０４】
ＰＫＧ−ＳＳコマンドの種別がＳＳ読出しの場合を以下に説明する。
【０１０５】
Ｓ１８０２において、ＰＫＧ−ＳＳコマンドの種別がＳＳ読出しであると判定された場合、ＦＭコントローラ４１２は、ＰＫＧ−ＳＳコマンドから世代番号を取得する（Ｓ１８１１）
【０１０６】
ＦＭコントローラ４１２は、ＰＫＧ−ＳＳコマンドから第２論理アドレスを取得し、その第２論理アドレスに基づいて論理ページ番号を算出し、その論理ページ番号に対応する物理ページを、論理物理変換テーブル１０２０から特定する（Ｓ１８１２）。
【０１０７】
ＦＭコントローラ４１２は、Ｓ１８１２で特定した物理ページに対応する論理物理エントリに、Ｓ１８１１で特定した世代番号を含んだ世代管理エントリがあるか否かを判定する（Ｓ１８１３）。
【０１０８】
Ｓ１８１３において、世代管理エントリが無い場合には、ＦＭコントローラ４１２は、Ｓ１８１２で特定した物理ページからデータを読み出す（Ｓ１８１４）。
【０１０９】
Ｓ１８１３において、世代管理エントリが有る場合には、ＦＭコントローラ４１２は、その世代管理エントリが有する物理ページ番号に対応した物理ページからデータを読み出す（Ｓ１８１５）。
【０１１０】
ＦＭコントローラ４１２は、Ｓ１８１４又はＳ１８１５で読み出されたデータを、ストレージコントローラ１１０に送信する。ストレージコントローラ１１０は、そのデータを、ホスト装置２に送信する。これにより、ホスト装置２は、ＳＳコマンドで指定した世代のスナップショットにおける、そのＳＳコマンドで指定した第１論理アドレスに対応するデータを、取得することができる。
【０１１１】
図１９は、ストレージコントローラ１１０でのライト処理を示す。
【０１１２】
ストレージコントローラ１１０は、ホスト装置２からライトコマンド及びライト対象データを受信する（Ｓ１９０１）。受信したライトコマンドには、ライト先を表す情報、例えば、ＬＵ番号及び第１論理アドレスを含んだ情報が含まれている。
【０１１３】
ストレージコントローラ１１０は、ライトコマンドから、ライト先のＦＭパッケージを特定する（Ｓ１９０２）。具体的には、ストレージコントローラ１１０は、ライトコマンドが有するＬＵ番号及び第１論理アドレスから第２論理アドレスを算出し、ＬＵ番号及びその第２論理アドレスに対応するＦＭパッケージをＬＵ構成テーブル６２０から特定する。そのＦＭパッケージがライト先ＦＭパッケージである。
【０１１４】
Ｓ１９０２で特定したライト先ＦＭパッケージに対し、ストレージコントローラ１１０は、ライトコマンド及びライト対象データを発行する（以下、このライトコマンドをＰＫＧ−ＷＲコマンドという）（Ｓ１９０３）。ＰＫＧ−ＷＲコマンドには、例えば、ＬＵ番号及び第２論理アドレスが含まれる。ＬＵ番号は、ライトコマンドが有するＬＵ番号と同じで良い。
【０１１５】
図２０は、ＦＭパッケージ１２０でのライト処理を示す。
【０１１６】
ＦＭパッケージ１２０は、ストレージコントローラ１１０からＰＫＧ−ＷＲコマンドを受信する（Ｓ２００１）。
【０１１７】
ＦＭコントローラ４１２は、受信したＰＫＧ−ＷＲコマンドから、ライト先の物理ページを特定する（Ｓ２００２）。具体的には、ＦＭコントローラ４１２は、ＰＫＧ−ＷＲコマンドに含まれる、ＬＵ番号及び第２論理アドレスから論理ページ番号を算出する。そして、ＦＭコントローラ４１２は、その論理ページ番号に対応する物理ページ番号を論理物理変換テーブル１０２０から特定する。対象論理ページ番号に物理ページが対応していない場合は、物理ページ番号に代えてその旨を示す情報を取得しておいてもよい。
【０１１８】
ＦＭコントローラ４１２は、消去回数の少ない物理ブロックを選択する（Ｓ２００３）。例えば、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１５０に基づき、消去回数が最も少ない物理ブロックを選択する。また、例えば、ＦＭコントローラ４１２は、消去回数が所定の値以下の物理ブロックを任意に選択してもよい。選択された物理ブロックを、以下、選択ブロックという。
【０１１９】
ＦＭコントローラ４１２は、選択ブロック内の複数の物理ページから、空きの物理ページを選択する（Ｓ２００４）。具体的には、ＦＭコントローラ４１２は、まず、物理ブロック状態管理テーブル１５０に基づき、選択ブロック内に存在する物理ページの物理ページ番号を取得する。そして、ＦＭコントローラ４１２は、物理ページ状態管理テーブル１４０に基づき、それらの物理ページ番号のうち、物理ページ状態１５０２が「空き」の物理ページ番号を選択する。選択された物理ページを、以下、選択ページという。
【０１２０】
ＦＭコントローラ４１２は、選択ページにライト対象データを書き込む（Ｓ２００５）。
【０１２１】
ＦＭコントローラ４１２は、最終ＷＲ時刻を更新する（Ｓ２００６）。具体的には、ＦＭコントローラ４１２は、内蔵タイマー（図示なし）に基づき、Ｓ２００５において選択ページにライト対象データが書き込まれた時刻を取得する。そして、ＦＭコントローラ４１２は、取得した時間を物理ブロック状態管理テーブル１０５０の、選択ブロック(物理ブロック１６０１)に対する最終ＷＲ時刻の欄１６０３に書き込む。
【０１２２】
ＦＭコントローラ４１２は、選択ページに対応する、物理ページ状態管理テーブル１０４０における物理ページ状態１５０２を「有効」に変更する（Ｓ２００７）。
【０１２３】
ＦＭコントローラ４１２は、論理物理変換テーブル１０２０の物理ページ番号を更新する（Ｓ２００８）。具体的には、ＦＭコントローラ４１２は、Ｓ２００２で算出された論理ページ番号に対応する、論理物理変換テーブル１０２０における物理ページ番号１２０２を、選択ページの物理ページ番号に変更する。以下、図２０の説明において、選択ページの物理ページ番号に変更される前の物理ページ番号を「旧物理ページ番号」と言う。
【０１２４】
ＦＭコントローラ４１２は、ライト先ＬＵに対応する、スナップショット管理テーブル１０１０におけるスナップショットフラグ１１０３が“ＯＮ”であるか否かの判定を行う（Ｓ２００９）。スナップショットフラグ１１０３が“ＯＦＦ”であった場合は、Ｓ２０１０に進む。一方、スナップショットフラグ１１０３が“ＯＮ”であった場合は、Ｓ２０１２に進む。
【０１２５】
スナップショットフラグ１１０３が“ＯＦＦ”であった場合を説明する。ＦＭコントローラ４１２は、スナップショット管理テーブル１０１０において、対象ＬＵ番号１１０１に対応するスナップショットフラグ１１０３が“ＯＦＦ”であった場合には、旧物理ページ番号に対応する、物理ページ状態管理テーブル１０４０における物理ページ状態１５０２を「無効」に変更する（Ｓ２０１０）。
【０１２６】
次に、ＦＭコントローラ４１２は、選択ブロックに対応する、物理ブロック状態管理テーブル１０５０における無効ページ数１６０４をインクリメントする（Ｓ２０１１）。無効ページ数１６０４は、Ｓ２０１０において、「無効」を設定したページ数分インクリメントされる。。
【０１２７】
スナップショットフラグ１１０３が“ＯＮ”であった場合を説明する。ＦＭコントローラ４１２は、ライト先ＬＵに対応する、スナップショット管理テーブル１０１０におけるスナップショットフラグ１１０３が“ＯＮ”であった場合には、ライト先ＬＵについて最新世代のＳＳデータが存在しているか否かを判定する（Ｓ２０１２）。最新世代のＳＳデータが存在しない場合とは、Ｓ２００２で算出された論理ページ番号を含んだ論理物理エントリに、最新世代の番号を含んだ世代管理エントリが関連付けられていない場合である。一方、最新世代のＳＳデータが存在する場合とは、Ｓ２００２で算出された論理ページ番号を含んだ論理物理エントリに、最新世代の番号を含んだ世代管理エントリが関連付けられている場合である。最新世代のＳＳデータが存在しない場合は、Ｓ２０１３に進む。最新世代のＳＳデータが存在している場合は、ＦＭコントローラ４１２は、前述したＳ２０１０〜Ｓ２０１１の処理を行い、処理を終了する。
【０１２８】
Ｓ２０１３の処理を説明する。ＦＭコントローラ４１２は、旧物理ページ番号と最新世代の番号とを含んだ世代管理エントリ１０３０を、Ｓ２００２で算出された論理ページ番号を含んだ論理物理エントリに新たに関連付ける（Ｓ２０１３）。
【０１２９】
ＦＭコントローラ４１２は、旧物理ページ番号に対応する、物理ページ状態管理テーブル１０４０における物理ページ状態１５０２を「無効」に変更する（Ｓ２０１４）。
【０１３０】
図２１は、ストレージコントローラ１１０でのリード処理を示す。
【０１３１】
ストレージコントローラ１１０は、ホスト装置２からリードコマンドを受信する（Ｓ２１０１）。受信したリードコマンドには、リード元を表す情報として、例えば、ＬＵ番号及び第１論理アドレスを含んだ情報が含まれている。
【０１３２】
ストレージコントローラ１１０は、リードコマンドから、リード元のＦＭパッケージを特定する（Ｓ２１０２）。具体的には、ストレージコントローラ１１０は、リードコマンドが有するＬＵ番号及び第１論理アドレスから第２論理アドレスを算出し、ＬＵ番号及びその第２論理アドレスに対応するＦＭパッケージをＬＵ構成テーブル６２０から特定する。そのＦＭパッケージがリード元ＦＭパッケージである。
【０１３３】
Ｓ２１０２で特定したリード元ＦＭパッケージに対し、ストレージコントローラ１１０は、リードコマンドを発行する（以下、このリードコマンドをＰＫＧ−ＲＤコマンドという）（Ｓ２１０３）。ＰＫＧ−ＲＤコマンドには、例えば、ＬＵ番号及び第２論理アドレスが含まれる。ＬＵ番号は、リードコマンドが有するＬＵ番号と同じで良い。
【０１３４】
図２２は、ＦＭパッケージ１２０でのリード処理を示す。
【０１３５】
ＦＭパッケージ１２０は、ストレージコントローラ１１０からＰＫＧ−ＲＤコマンドを受信する（Ｓ２２０１）。
【０１３６】
ＦＭコントローラ４１２は、受信したＰＫＧ−ＲＤコマンドから、リード元の物理ページを特定する（Ｓ２２０２）。具体的には、ＦＭコントローラ４１２は、ＰＫＧ−ＲＤコマンドに含まれる、ＬＵ番号及び第２論理アドレスから論理ページ番号を算出する。そして、ＦＭコントローラ４１２は、論理物理変換テーブル１０２０から、算出された論理ページ番号に対応する物理ページ番号を特定する。
【０１３７】
ＦＭコントローラ４１２は、特定された物理ページからデータを読み出す（Ｓ２２０３）。
【０１３８】
ＦＭコントローラ４１２は、読み出されたデータを、ストレージコントローラ１１０に送信する。ストレージコントローラ１１０は、そのデータを、ホスト装置２に送信する。これにより、ホスト装置２は、リードコマンドで指定したＬＵにおける、そのリードコマンドで指定した第１論理アドレスに対応するデータを、取得することができる。
【０１３９】
次に、図２３を参照して、リクラメーション処理について説明する。リクラメーション処理は、ＦＭパッケージ４１２が行う処理である。
【０１４０】
ＦＭコントローラ４１２は、ＦＭパッケージ１２０内の各物理ブロック５１１について、無効ページが閾値以上の物理ブロックがあるか否かを判定する（Ｓ２３０１）。具体的には、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０に基づき、無効ページ数１６０４が閾値以上の物理ブロック（この説明においては、無効ページが閾値以上の物理ブロックを無効ブロックという）の物理ブロック番号１４０１を抽出する。判定の結果、無効ブロックがない場合、ＦＭコントローラ４１２は、リクラメーション処理を終了する（ＥＮＤ）。
【０１４１】
一方、Ｓ２３０１の判定の結果、ＦＭパッケージ１２０内に無効ブロックがあると判定された場合、ＦＭコントローラ４１２は、Ｓ２３０２以下の処理を行う。以下の説明では、１つの無効ブロックについて、Ｓ２３０２以下の処理を説明する。しかし、無効ブロックが複数存在する場合においては、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０から最初に発見された無効ブロックについてＳ２３０２以下の処理を行うようにしてもよいし、物理ブロック番号の小さいものからＳ２３０２以下の処理を行う等、所定のルールに基づいて行われるようにしてもよい。
【０１４２】
ＦＭコントローラ４１２は、無効ブロック内にＳＳページが存在するか否かの判定を行う（Ｓ２３０２）。具体的には、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０に基づき、無効ブロックの物理ブロック番号１６０１に対応する物理ページリスト１６０５を抽出する。そして、ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０に基づき、抽出された物理ページについて物理ページ状態１５０２が「ＳＳ」のものがあるか否かの判定を行う。物理ページ状態１５０２が「ＳＳ」の物理ページがある場合には、Ｓ２３０３に進む。一方、物理ページ状態１５０２が「ＳＳ」の物理ページがない場合には、Ｓ２３０７に進む。
【０１４３】
Ｓ２３０３を説明する。ＦＭコントローラ４１２は、消去回数が閾値以上で、かつ、空きページを有する物理ブロックを選択する（Ｓ２３０３）。この処理の説明においては、Ｓ２３０３で選択された物理ブロックを第１選択ブロックという。具体的には、まず、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０に基づき、消去回数１６０２が閾値以上の物理ブロック番号１６０１を抽出し、抽出した物理ブロック番号１６０１に対応する、物理ページリスト１６０５を取得する。そして、ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０に基づき、取得した物理ページ番号１５０１の物理ページ状態１５０２が「空き」であるか否かを検索する。検索の結果、物理ページ状態１５０２が「空き」である物理ページを含んだ無効ブロックを、第１選択ブロックとして選択する。なお、第１選択ブロックの候補となる物理ブロックが複数ある場合、例えば、空ページの最も多い物理ブロックを第１選択ブロックとしてもよいし、消去回数が所定範囲である物理ブロックを第１選択ブロックとしてもよい。
【０１４４】
ＦＭコントローラ４１２は、無効ブロック内のＳＳページのデータ（ＳＳデータ）を、第１選択ブロックの空きページにコピーする（Ｓ２３０４）。以下、無効ブロック内のコピー元のＳＳページのことをコピー元ページ、第１選択ブロック内のデータのコピー先の空きページのことをコピー先ページという。
【０１４５】
ＦＭコントローラ４１２は、コピー元ページに対応する、論理物理変換テーブル１０２０における物理ページ番号１２０２を、コピー先ページの物理ページ番号に変更する（Ｓ２３０５）。
【０１４６】
ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０について、コピー元ページの物理ページ番号１５０１に対応する物理ページ状態１５０２を、「無効」にし、コピー先ページの物理ページ番号１５０１に対応する物理ページ状態１５０２を、「ＳＳ」にする（Ｓ２３０６）。
【０１４７】
ＦＭコントローラ４１２は、無効ブロックの無効ページ数及び選択ブロックの最終ライト時刻を更新する（Ｓ２３１２）。具体的には、まず、ＦＭコントローラ４１２は、物理状態管理テーブル１０５０において、無効ブロックの物理ブロック番号１６０１に対応する無効ページ数１６０４をインクリメントする。無効ページ数１６０４のインクリメントは、無効ページ数分行われる。次に、ＦＭコントローラ４１２は、物理状態管理テーブル１０５０において、選択ブロックの物理ブロック番号１６０１に対応する最終ライト時刻１６０３を、Ｓ２３０４でコピーされた時刻に更新する。
【０１４８】
Ｓ２３１２の処理の後、Ｓ２３０２の判定の結果、物理ページ状態管理テーブル１０４０において、物理ページ状態１５０２が「ＳＳ」の物理ページがない場合、以下に説明するＳ２３０７が行われる。
【０１４９】
ＦＭコントローラ４１２は、無効ブロック内に有効ページがあるか否かを判定する（Ｓ２３０７）。具体的には、ＦＭコントローラ４１２は、まず、物理ブロック状態管理テーブル１０５０に基づき、無効ブロックの物理ブロック番号１６０１について、物理ページリスト１６０５を取得する。次に、ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０に基づき、取得した物理ページ状態１５０２が「有効」である物理ページ番号１５０１があるか否かを判定する。無効ブロック内に有効ページが存在している場合は、Ｓ２３０８に進む。無効ブロック内に有効ページが存在していない場合は、Ｓ２３１３に進む。
【０１５０】
Ｓ２３０８の処理を説明する。ＦＭコントローラ４１２は、消去回数が閾値未満で、かつ、空きページを有する物理ブロックを選択する（Ｓ２３０８）。この処理の説明においては、Ｓ２３０８で選択された物理ブロックを第２選択ブロックという。具体的には、まず、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０に基づき、消去回数１６０２が閾値未満の物理ブロック番号１６０１を抽出し、抽出した物理ブロック番号１６０１に対応する、物理ページリスト１６０５を取得する。そして、ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０に基づき、取得した物理ページ番号１５０１の物理ページ状態１５０２が「空き」であるか否かを判定する。その判定の結果が肯定的であれば、ＦＭコントローラ４１２は、物理ページ状態１５０２が「空き」である物理ページを含んだ無効ブロックを、第２選択ブロックとして選択する。なお、第２選択ブロックの候補となる物理ブロックが複数ある場合、例えば、空ページの最も多い物理ブロックを第２選択ブロックとしてもよいし、消去回数が最も少ない物理ブロックを第２選択ブロックとしてもよい。
【０１５１】
ＦＭコントローラ４１２は、無効ブロック内の有効ページのデータ（有効データ）を、第２選択ブロックの空きページにコピーする（Ｓ２３０９）。以下、無効ブロック内のコピー元の有効ページのことをコピー元ページ、第２選択ブロック内のデータのコピー先の空きページのことをコピー先ページという。
【０１５２】
ＦＭコントローラ４１２は、コピー元ページに対応する、論理物理変換テーブル１０２０の物理ページ番号１２０２を、コピー先ページの物理ページ番号に変更する（Ｓ２３１０）。
【０１５３】
ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０について、コピー元ページに対応する物理ページ状態１５０２を、「無効」にし、コピー先ページに対応する物理ページ状態１５０２を、「有効」にする（Ｓ２３１１）。
【０１５４】
ＦＭコントローラ４１２は、前述したＳ２３１２の処理を行う。すなわち、ＦＭコントローラ４１２は、無効ブロックの無効ページ数及び選択ブロックの最終ライト時刻を更新する（Ｓ２３１２）。Ｓ２３１２の処理の後、前述したＳ２３０２以下の処理が行われる。
【０１５５】
次に、Ｓ２３１３以下の処理を説明する。
【０１５６】
Ｓ２３０７における判定の結果、無効ブロック内に有効ページが存在していない場合、ＦＭコントローラ４１２は、ＦＭパッケージ１２０内の無効ブロックのうち、無効ページ数が所定の値以上である無効ブロックがあるか否かを判定する（Ｓ２３１３）。具体的には、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０に、所定の値以上の無効ページ数１６０４があるか否かを判定する。判定の結果、無効ページ数が所定の値以上である無効ブロックが存在していない場合は、処理が終了する（ＥＮＤ）。
【０１５７】
一方、判定の結果、無効ページ数が所定の値以上である無効ブロックが存在している場合は、ＦＭコントローラ４１２は、その無効ブロックの物理ブロック番号１６０１を取得する。無効ページ数が所定の値以上である無効ブロックが複数存在している場合は、それらの無効ブロックのうち、無効ページ数が最大である無効ブロックの物理ブロック番号１６０１を取得する。以下、Ｓ２３１４で取得された物理ブロック番号１６０１を有する無効ブロックを対象無効ブロックという。
【０１５８】
ＦＭコントローラ４１２は、対象無効ブロックを消去する（Ｓ２３１４）。無効ブロックの消去とは、無効ブロック内のすべての物理ページを空きの物理ページとすることである。
【０１５９】
ＦＭコントローラ４１２は、対象無効ブロックの消去回数を１インクリメントし、かつ、最終ライト時刻を初期化する（Ｓ２３１５）。具体的には、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０において、対象無効ブロックの物理番号１６０１に対応する消去回数を１インクリメントし、最終ライト時刻を初期化する（例えば「−」を入力する）。
【０１６０】
次に、図２４を参照して、リフレッシュ処理について説明する。リフレッシュ処理は、ＦＭパッケージ４１２が行う処理である。
【０１６１】
ＦＭコントローラ４１２は、ＦＭパッケージ１２０内の各物理ブロック５１１について、最終ライト時刻からの経過時間が閾値以上の物理ブロックがあるか否かを判定する（Ｓ２４０１）。具体的には、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０に基づき、現在時刻と最終ライト時刻との差分が閾値以上となる物理ブロック（この説明においては、現在時刻と最終ライト時刻との差分が閾値以上の物理ブロックを時間超ブロックという）の物理ブロック番号１４０１を抽出する。判定の結果、時間超ブロックがない場合、ＦＭコントローラ４１２は、リフレッシュ処理を終了する（ＥＮＤ）。
【０１６２】
一方、Ｓ２４０１の判定の結果、ＦＭパッケージ１２０内に時間超ブロックがある場合、ＦＭコントローラ４１２は、Ｓ２４０２以下の処理を行う。以下の説明では、１つの時間超ブロックについて、Ｓ２４０２以下の処理を説明する。しかし、時間超ブロックが複数存在する場合においては、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０から最初に発見された時間超ブロックについてＳ２４０２以下の処理を行うようにしてもよいし、物理ブロック番号の小さいものからＳ２４０２以下の処理を行う等、所定のルールに基づいて行われるようにしてもよい。
【０１６３】
ＦＭコントローラ４１２は、時間超ブロック内にＳＳページが存在するか否かの判定を行う（Ｓ２４０２）。具体的には、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０に基づき、時間超ブロックの物理ブロック番号１６０１に対応する物理ページリスト１６０５を抽出する。そして、ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０に基づき、抽出された物理ページについて物理ページ状態１５０２が「ＳＳ」のものがあるか否かの判定を行う。物理ページ状態１５０２が「ＳＳ」の物理ページがある場合には、Ｓ２４０３に進む。一方、物理ページ状態１５０２が「ＳＳ」の物理ページがない場合には、Ｓ２４０７に進む。
【０１６４】
Ｓ２４０３を説明する。ＦＭコントローラ４１２は、消去回数が閾値以上で、かつ、空きページを有する物理ブロックを選択する（Ｓ２４０３）。この処理の説明においては、Ｓ２４０３で選択された物理ブロックを第３選択ブロックという。具体的には、まず、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０に基づき、消去回数１６０２が閾値以上の物理ブロック番号１６０１を抽出し、抽出した物理ブロック番号１６０１に対応する、物理ページリスト１６０５を取得する。そして、ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０に基づき、取得した物理ページ番号１５０１の物理ページ状態１５０２が「空き」であるか否かを検索する。検索の結果、物理ページ状態１５０２が「空き」である物理ページを含んだ時間超ブロックを、第３選択ブロックとして選択する。なお、第３選択ブロックの候補となる物理ブロックが複数ある場合、例えば、空ページの最も多い物理ブロックを第３選択ブロックとしてもよいし、消去回数が所定範囲である物理ブロックを第３選択ブロックとしてもよい。
【０１６５】
ＦＭコントローラ４１２は、時間超ブロック内のＳＳページのデータ（ＳＳデータ）を、第３選択ブロックの空きページにコピーする（Ｓ２４０４）。以下、第３選択ブロック内のコピー元のＳＳページのことをコピー元ページ、第３選択ブロック内のデータのコピー先の空きページのことをコピー先ページという。
【０１６６】
ＦＭコントローラ４１２は、コピー元ページに対応する、論理物理変換テーブル１０２０の物理ページ番号１２０２を、コピー先ページの物理ページ番号に変更する（Ｓ２４０５）。
【０１６７】
ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０について、コピー元ページに対応する物理ページ状態１５０２を、「無効」に変更し、コピー先ページに対応する物理ページ状態１５０２を、「ＳＳ」に変更する（Ｓ２４０６）。
【０１６８】
ＦＭコントローラ４１２は、第３選択ブロックの無効ページ数と第３選択ブロックの最終ライト時刻とを更新する（Ｓ２４１２）。具体的には、まず、ＦＭコントローラ４１２は、物理状態管理テーブル１０５０において、第３選択ブロックに対応する無効ページ数１６０４をインクリメントする。無効ページ数１６０４のインクリメントは、無効ページ数分行われる。次に、ＦＭコントローラ４１２は、物理状態管理テーブル１０５０において、第３選択ブロックに対応する最終ライト時刻１６０３を、Ｓ２４０４でコピーされた時刻に更新する。
【０１６９】
Ｓ２４１２の処理の後、Ｓ２４０２の判定の結果、物理ページ状態管理テーブル１０４０において、物理ページ状態１５０２が「ＳＳ」の物理ページがない場合、以下に説明するＳ２４０７が行われる。
【０１７０】
ＦＭコントローラ４１２は、時間超ブロック内に有効ページがあるか否かを判定する（Ｓ２４０７）。具体的には、ＦＭコントローラ４１２は、まず、物理ブロック状態管理テーブル１０５０に基づき、時間超ブロックの物理ブロック番号１６０１について、物理ページリスト１６０５を取得する。次に、ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０に基づき、取得した物理ページ状態１５０２が「有効」である物理ページ番号１５０１があるか否かを判定する。時間超ブロックに有効ページが存在している場合は、Ｓ２４０８に進む。時間超ブロック内に有効ページが存在していない場合は、Ｓ２４１３に進む。
【０１７１】
Ｓ２４０８の処理を説明する。ＦＭコントローラ４１２は、消去回数が閾値未満で、かつ、空きページを有する物理ブロックを選択する（Ｓ２４０８）。この処理の説明においては、Ｓ２４０８で選択された物理ブロックを第４選択ブロックという。具体的には、まず、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０に基づき、消去回数１６０２が閾値未満の物理ブロック番号１６０１を抽出し、抽出した物理ブロック番号１６０１に対応する、物理ページリスト１６０５を取得する。そして、ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０に基づき、取得した物理ページ番号１５０１の物理ページ状態１５０２が「空き」であるか否かを判定する。その判定の結果が肯定的の場合に、ＦＭコントローラ４１２は、物理ページ状態１５０２が「空き」である物理ページを含んだ時間超ブロックを、第４選択ブロックとして選択する。なお、第４選択ブロックの候補となる物理ブロックが複数ある場合、例えば、空ページの最も多い物理ブロックを第４選択ブロックとしてもよいし、消去回数が最も少ない物理ブロックを第４選択ブロックとしてもよい。
【０１７２】
ＦＭコントローラ４１２は、時間超ブロック内の有効ページのデータ（有効データ）を、第４選択ブロックの空きページにコピーする（Ｓ２４０９）。以下、第４選択ブロック内のコピー元の有効ページのことをコピー元ページ、第４選択ブロック内のデータのコピー先の空きページのことをコピー先ページという。
【０１７３】
ＦＭコントローラ４１２は、コピー元ページに対応する、論理物理変換テーブル１０２０の物理ページ番号１２０２を、コピー先ページの物理ページ番号に変更する（Ｓ２４１０）。
【０１７４】
ＦＭコントローラ４１２は、物理ページ状態管理テーブル１０４０について、コピー元ページに対応する物理ページ状態１５０２を、「無効」に変更し、コピー先ページに対応する物理ページ状態１５０２を、「有効」にする（Ｓ２４１１）。
【０１７５】
ＦＭコントローラ４１２は、前述したＳ２４１２の処理を行う。すなわち、ＦＭコントローラ４１２は、第４選択ブロックの無効ページ数と第４選択ブロックの最終ライト時刻とを更新する（Ｓ２４１２）。Ｓ２４１２の処理の後、前述したＳ２４０２以下の処理が行われる。
【０１７６】
次に、Ｓ２４１３以下の処理を説明する。
【０１７７】
Ｓ２４０７における判定の結果、無効ブロック内に有効ページが存在していない場合、ＦＭコントローラ４１２は、ＦＭパッケージ１２０内の時間超ブロックのうち、無効ページ数が所定の値以上である時間超ブロックがあるか否かを判定する（Ｓ２４１３）。具体的には、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０に基づき、所定の値以上の無効ページ数１６０４があるか否かを判定する。判定の結果、無効ページ数が所定の値以上である時間超ブロックが存在していない場合は、処理が終了する（ＥＮＤ）。
【０１７８】
一方、判定の結果、無効ページ数が所定の値以上である時間超ブロックが存在している場合は、ＦＭパッケージ４１２は、その時間超ブロックの物理ブロック番号１６０１を取得する。無効ページ数が所定の値以上である時間超ブロックが複数存在している場合は、それらの時間超ブロックのうち、無効ページ数が最大である時間超ブロックの物理ブロック番号１６０１が取得される。以下、Ｓ２４１４で取得された物理ブロック番号１６０１を有する時間超ブロックを対象時間超ブロックという。
【０１７９】
ＦＭコントローラ４１２は、対象時間超ブロックを消去する（Ｓ２４１４）。時間超ブロックの消去とは、時間超ブロック内のすべての物理ページを空きの物理ページにすることである。
【０１８０】
ＦＭコントローラ４１２は、対象時間超ブロックの消去回数を１インクリメントし、かつ、最終ライト時刻を初期化する（Ｓ２４１５）。具体的には、ＦＭコントローラ４１２は、物理ブロック状態管理テーブル１０５０において、対象時間超ブロックの物理番号１６０１に対応する消去回数を１インクリメントし、最終ライト時刻を初期化する（例えば「−」を入力する）。そして、処理は終了する（ＥＮＤ）。
【０１８１】
以上、本発明の一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【符号の説明】
【０１８２】
１００…ストレージシステム  １１０…ストレージコントローラ  １２０…ＦＭパッケージ
【図１】
0005543026.tif 000002
【図２】
0005543026.tif 000003
【図３】
0005543026.tif 000004
【図４】
0005543026.tif 000005
【図５】
0005543026.tif 000006
【図６】
0005543026.tif 000007
【図７】
0005543026.tif 000008
【図８】
0005543026.tif 000009
【図９】
0005543026.tif 000010
【図１０】
0005543026.tif 000011
【図１１】
0005543026.tif 000012
【図１２】
0005543026.tif 000013
【図１３】
0005543026.tif 000014
【図１４】
0005543026.tif 000015
【図１５】
0005543026.tif 000016
【図１６】
0005543026.tif 000017
【図１７】
0005543026.tif 000018
【図１８】
0005543026.tif 000019
【図１９】
0005543026.tif 000020
【図２０】
0005543026.tif 000021
【図２１】
0005543026.tif 000022
【図２２】
0005543026.tif 000023
【図２３】
0005543026.tif 000024
【図２４】
0005543026.tif 000025