(57)【特許請求の範囲】
【請求項１】
ホストに接続されたストレージシステムであって、
複数のページで構成された複数のＮＡＮＤフラッシュメモリチップと、各ページの状態を示すページ管理情報を記憶する記憶媒体と、それらに接続されたメモリコントローラとをそれぞれが含んだ複数のＳＳＤ（Solid  State  Device）と、
前記複数のＳＳＤに接続されており、前記複数のＮＡＮＤフラッシュメモリチップに基づく論理ボリュームに対するアクセスを制御するストレージコントローラと
を有し、
前記ストレージシステムは、それぞれが前記ホストからのＩ／Ｏ要求で指定されるオリジナルの論理ボリュームである１以上のプライマリボリュームを前記ホストに提供し、それぞれがいずれかのプライマリボリュームのスナップショットを表す仮想的な論理ボリュームである１以上のスナップショットボリュームと、それぞれが１又は複数の論理ボリュームを集めた領域である１以上のプールとを管理し、
ページの状態として、データが格納可能な状態である空きと、論理ボリュームの領域に割り当てられておりデータが格納されているページであることを意味する有効と、論理ボリュームの領域に割り当てられていないがデータが格納されているページであることを意味する無効とがあり、
（Ａ）前記ストレージコントローラが、前記１以上のプライマリボリュームのうちのいずれかのプライマリボリュームのプライマリボリューム番号と、そのプライマリボリュームに対応した１以上のスナップショットボリュームのうちの削除対象のスナップショットボリュームの世代番号とを含んだスナップショット削除要求を前記ホストから受領した場合に、前記プライマリボリューム番号及び前記世代番号に対応したスナップショットボリュームに割り当てられている論理ボリューム領域を含んだプールの番号と、そのプール内の論理ボリュームの番号と、その論理ボリューム領域の論理アドレスとを特定し、特定したプール番号、論理ボリューム番号及び論理アドレスに対応したＳＳＤを特定し、特定したＳＳＤに、不要となるデータが格納されている領域の基になっているページの数を低減させるための不要低減要求を送信し、
（Ｂ）前記不要低減要求を受信したＳＳＤのメモリコントローラが、前記不要低減要求に基づいて、前記ページ管理情報において、前記不要となるデータが格納されている領域の基になっている複数のページを無効と設定し、
前記ページ管理情報は、前記ページと前記ページが割り当てられている論理ボリュームの領域との対応関係を記憶し、
前記（Ａ）において、前記ストレージコントローラは、前記不要低減要求として、前記プライマリボリューム番号及び前記世代番号に対応したスナップショットボリュームに割り当てられている論理ボリューム領域に対して固定パターンデータを書き込むための書込み要求を送信し、
前記固定パターンデータは、共通するパターンを有する複数の部分データを有し、前記部分データのサイズは、前記ページのサイズであり、
前記（Ｂ）において、前記メモリコントローラは、
（ｂ１）前記書込み要求が示す論理ボリューム領域に対応付けられている複数のページを特定し、
（ｂ２）前記ページ管理情報において、特定した複数の前記ページを無効と設定し、
（ｂ３）前記固定パターンデータの中の前記部分データを前記複数のページと異なる空きの１つのページに書き込み、
（ｂ４）前記ページ管理情報において、前記論理ボリュームの前記領域中のページのサイズ単位の複数の領域を、前記部分データを書き込んだ前記１つのページと対応付ける、
ストレージシステム。
【請求項２】
ホストに接続されたストレージコントローラと、複数のＳＳＤとを有するストレージシステムの記憶制御方法であって、
前記複数のＳＳＤの各々は、複数のページで構成された複数のＮＡＮＤフラッシュメモリチップと、各ページの状態を示すページ管理情報を記憶する記憶媒体と、それらに接続されたメモリコントローラとを含み、
前記ストレージシステムは、それぞれが前記ホストからのＩ／Ｏ要求で指定されるオリジナルの論理ボリュームである１以上のプライマリボリュームを前記ホストに提供し、それぞれがいずれかのプライマリボリュームのスナップショットを表す仮想的な論理ボリュームである１以上のスナップショットボリュームと、それぞれが１又は複数の論理ボリュームを集めた領域である１以上のプールとを管理し、
ページの状態として、データが格納可能な状態である空きと、論理ボリュームの領域に割り当てられておりデータが格納されているページであることを意味する有効と、論理ボリュームの領域に割り当てられていないがデータが格納されているページであることを意味する無効とがあり、
前記記憶制御方法は、
（Ａ）前記ストレージコントローラは、前記１以上のプライマリボリュームのうちのいずれかのプライマリボリュームのプライマリボリューム番号と、そのプライマリボリュームに対応した１以上のスナップショットボリュームのうちの削除対象のスナップショットボリュームの世代番号とを含んだスナップショット削除要求を前記ホストから受領した場合に、前記プライマリボリューム番号及び前記世代番号に対応したスナップショットボリュームに割り当てられている論理ボリューム領域を含んだプールの番号と、そのプール内の論理ボリュームの番号と、その論理ボリューム領域の論理アドレスとを特定し、特定したプール番号、論理ボリューム番号及び論理アドレスに対応したＳＳＤを特定し、特定したＳＳＤに、不要となるデータが格納されている領域の基になっているページの数を低減させるための不要低減要求を前記特定したＳＳＤに送信し、
（Ｂ）前記不要低減要求を受信したＳＳＤのメモリコントローラは、前記不要低減要求に基づいて、各ページの状態を示すページ管理情報において、前記不要となるデータが格納されている領域の基になっている複数のページを無効と設定する、
を有し、
前記ページ管理情報は、前記ページと前記ページが割り当てられている論理ボリュームの領域との対応関係を記憶し、
前記（Ａ）において、前記ストレージコントローラは、前記不要低減要求として、前記不要となるデータが格納されている前記複数のページが割り当てられている前記論理ボリュームの領域に対して固定パターンデータを書き込むための書込み要求を送信し、
前記固定パターンデータは、共通するパターンを有する複数の部分データを有し、前記部分データのサイズは、前記ページのサイズであり、
前記（Ｂ）において、前記メモリコントローラは、
（ｂ１）前記書込み要求が示す論理ボリュームの領域に対応付けられている複数のページを特定し、
（ｂ２）前記ページ管理情報において、特定した複数の前記ページを無効と設定し、
（ｂ３）前記固定パターンデータの中の前記部分データを前記複数のページと異なる空きの１つのページに書き込み、
（ｂ４）前記ページ管理情報において、前記論理ボリュームの前記領域中のページのサイズ単位の複数の領域を、前記部分データを書き込んだ前記１つのページと対応付ける、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発半導体メモリを含んだ不揮発半導体記憶デバイスを有するストレージシステムに関する。
【背景技術】
【０００２】
ストレージシステムは、一般に、複数の記憶デバイスで構成されたＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）グループに基づいて作成された論理ボリュームを、上位装置（例えばホスト）へ提供する。近年、記憶デバイスとしては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）に加えて又は代えて、複数の不揮発メモリチップを有する不揮発半導体記憶デバイスが採用されている。不揮発半導体記憶デバイスとして、例えば、複数のフラッシュメモリチップ（以下、ＦＭチップ）を有するフラッシュメモリデバイスが採用される。フラッシュメモリデバイスを有するストレージシステムとして、例えば、特許文献１に記載された技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願第２０１１／０２３１５９４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
フラッシュメモリデバイスにおいては、論理アドレスに対応付けられているページのデータ（有効データ）については、例えば、リフレッシュや、リクラメーションの対象となる。すなわち、有効データがページから読み出されて別のページへ書き込まれる処理が実行される。
【０００５】
ここで、フラッシュメモリデバイスの上位装置において、有効データが不要となるような状況が発生することがあるが、フラッシュメモリデバイス自身は、そのような状況を把握することができず、不要であるデータを、有効データとして管理し続けてしまう。すなわち、有効データが、不要なデータであるにもかかわらず、リフレッシュ及びリクラメーションの対象として管理されてしまうこととなる。この結果、不要なデータのページへの書込みが発生し、フラッシュメモリデバイスの寿命が短くなってしまう。
【０００６】
以上のような問題は、フラッシュメモリデバイス以外の不揮発半導体記憶デバイスを有するストレージシステムについてもあり得る。
【課題を解決するための手段】
【０００７】
ストレージシステムが、ホストに接続されており、複数のページで構成された不揮発半導体メモリを含んだ不揮発半導体記憶デバイスと、その半導体記憶デバイスに接続されたストレージコントローラとを有する。不揮発半導体記憶デバイスに基づく論理ボリュームの領域の基になっている複数のページに格納されているデータが不要となる場合に、ストレージコントローラが、不要となるデータが格納されている領域の基になっているページの数を低減させるための不要低減要求を不揮発半導体記憶デバイスに送信する。不揮発半導体記憶デバイスは、その不要低減要求に基づいて、不要となるデータが格納されている領域の基になっている複数のページを無効とする。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例に係る計算機システムの構成例を示す。
【図２】図２は、実施例に係るＲＡＩＤコントローラの構成例を示す。
【図３】図３は、実施例に係るフラッシュメモリデバイスの構成例を示す。
【図４】図４は、実施例に係るフラッシュメモリパッケージの構成例を示す。
【図５】図５は、実施例に係るフラッシュメモリチップの構成例を示す。
【図６】図６は、実施例に係るフラッシュメモリチップにおけるデータの更新を説明する図である。
【図７】図７は、実施例に係るページの状態遷移を説明する図である。
【図８】図８は、実施例に係るフラッシュメモリチップにおけるデータ消去を説明する図である。
【図９】図９は、実施例に係るリクラメーションを説明する図である。
【図１０】図１０は、実施例に係るブロックの状態遷移を説明する図である。
【図１１】図１１は、実施例に係る動的領域割り当て処理を説明する図である。
【図１２】図１２は、実施例に係る動的エクステント領域割り当て処理を説明する図である。
【図１３】図１３は、実施例に係るティア間動的マイグレーションを説明する図である。
【図１４】図１４は、実施例に係るティア間動的マイグレーション後の固定パターンデータライト処理を説明する図である。
【図１５】図１５は、実施例に係る固定パターンデータライト処理の第１の例を説明する図である。
【図１６】図１６は、実施例に係る固定パターンデータライト処理の第２の例を説明する図である。
【図１７】図１７は、実施例に係る固定パターンデータライト処理の第３の例を説明する図である。
【図１８】図１８は、実施例に係る固定パターンデータライト処理の第４の例を説明する図である。
【図１９】図１９は、実施例に係るアンマップ要求を説明する図である。
【図２０】図２０は、実施例に係るスナップショット作成処理を説明する図である。
【図２１】図２１は、実施例に係るスナップショット作成処理の他の例を説明する図である。
【図２２】図２２は、実施例に係るスナップショット削除に伴う不要なデータを説明する図である。
【図２３】図２３は、実施例に係るスナップショット削除後の固定パターンデータライト処理を説明する図である。
【図２４】図２４は、実施例に係る論物変換テーブルの一例を示す。
【図２５】図２５は、実施例に係る物論変換テーブルの一例を示す。
【図２６】図２６は、実施例に係るプール管理テーブルの一例を示す。
【図２７】図２７は、実施例に係る動的領域割り当てテーブルの一例を示す。
【図２８】図２８は、実施例に係る動的エクステント領域割り当てテーブルの一例を示す。
【図２９】図２９は、実施例に係るアクセス頻度テーブルの一例を示す。
【図３０】図３０は、実施例に係るペア管理テーブルの一例を示す。
【図３１】図３１は、実施例に係るスナップショットデータ割り当てテーブルの一例を示す。
【図３２】図３２は、実施例に係るライト処理のフローチャートの一例である。
【図３３】図３３は、実施例に係るブロック消去処理のフローチャートの一例である。
【図３４】図３４は、実施例に係るリクラメーションのフローチャートの一例である。
【図３５】図３５は、実施例に係る動的領域割り当て処理のフローチャートの一例である。
【図３６】図３６は、実施例に係る動的エクステント領域割り当て処理のフローチャートの一例である。
【図３７】図３７は、実施例に係るティア間動的マイグレーションのフローチャートの一例である。
【図３８】図３８は、実施例に係るスナップショット作成処理のフローチャートの一例である。
【図３９】図３９は、実施例に係るスナップショット削除処理のフローチャートの一例である。
【図４０】図４０は、実施例に係る第１の例の固定パターンデータライト処理のフローチャートの一例である。
【図４１】図４１は、実施例に係る第２の例の固定パターンデータライト処理のフローチャートの一例である。
【図４２】図４２は、実施例に係る第３の例の固定パターンデータライト処理のフローチャートの一例である。
【図４３】図４３は、実施例に係る第４の例の固定パターンデータライト処理のフローチャートの一例である。
【図４４】図４４は、実施例に係るアンマップ要求処理のフローチャートの一例である。
【図４５】図４５は、実施例の概要を示す。
【発明を実施するための形態】
【０００９】
以下、一実施例を、図面を参照して説明する。
【００１０】
なお、以下の説明では、要素（例えば、ページ、ブロック、フラッシュメモリチップ（ＦＭチップ）、スイッチ（ＳＷ）、プール、物理ボリューム、論理ボリューム、仮想ボリューム等）を特定するために番号を含む識別情報が使用されるが、識別情報として、番号を含まない情報が使用されても良い。
【００１１】
また、以下の説明では、同種の要素を区別して説明する場合、要素名と参照符号との組合せに代えて、要素名と識別情報との組合せが使用されることがある。例えば、識別情報（識別番号）「０」のブロックを、「ブロック＃０」と表記することがある。
【００１２】
また、以下の説明では、インタフェースデバイスを「Ｉ／Ｆ」と略記することがある。
【００１３】
また、以下の説明では、不揮発半導体メモリは、フラッシュメモリ（ＦＭ）であるとする。そのフラッシュメモリは、ブロック単位で消去が行われ、ページ単位でアクセスが行われる種類のフラッシュメモリ、典型的にはＮＡＮＤ型のフラッシュメモリであるとする。しかし、フラッシュメモリは、ＮＡＮＤ型に代えて他種のフラッシュメモリ（例えばＮＯＲ型）でも良い。また、フラッシュメモリに代えて、他種の不揮発半導体メモリ、例えば相変化メモリが採用されても良い。
【００１４】
また、以下の説明では、不揮発半導体メモリは、前述したように、ＮＡＮＤ型フラッシュメモリである。このため、ページとブロックという用語が使用される。また、或る論理領域（この段落において「対象論理領域」と言う）がライト先であり、且つ、対象論理領域に既にページ（この段落において「第１のページ」と言う）が割り当てられていて第１のページにデータが格納されている場合、対象論理領域には、第１のページに代えて、空きのページ（この段落において「第２のページ」と言う）が割り当てられ、第２のページにデータが書き込まれることになる。第２のページに書き込まれたデータが、対象論理領域にとって最新のデータであり、第１のページに格納されているデータは、対象論理領域にとって旧いデータとなる。以下、各論理領域について、最新のデータを「有効データ」と言い、旧いデータを「無効データ」と言うことがある。また、有効データを格納しているページを「有効ページ」と言い、無効データを格納しているページを「無効ページ」と言うことがある。
【００１５】
「ホスト」とは、ストレージシステムの上位装置（例えば計算機）である。
【００１６】
「仮想ボリューム（仮想ＶＯＬ）」とは、仮想的な論理ボリューム（論理ＶＯＬ）のことをいう。仮想ＶＯＬは、例えばホストに認識される。仮想ＶＯＬは、例えば、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇに従うボリュームでも良いし、後述のスナップショットＶＯＬでも良い。
【００１７】
「論理ボリューム（論理ＶＯＬ）」は、仮想ＶＯＬに割り当てられる記憶領域を含んでおり、論理ＶＯＬを有するストレージシステム内のＲＡＩＤグループ（複数のフラッシュメモリデバイス）に基づいていても良いし、ストレージシステムに接続された外部のストレージシステムの記憶デバイスに基づいていても良い。
【００１８】
「プール」とは、１又は複数の論理ＶＯＬを集めた領域のことをいう。
【００１９】
「プライマリボリューム（プライマリＶＯＬ）」とは、ホストからのＩ／Ｏ要求で指定されるオリジナルの論理ＶＯＬのことをいう。
【００２０】
「スナップショットボリューム（スナップショットＶＯＬ）」とは、プライマリＶＯＬのスナップショットのイメージを表す仮想ＶＯＬである。
【００２１】
「物理ボリューム（物理ＶＯＬ）」とは、物理的な記憶デバイスであり、例えば、ＳＳＤ（Solid  State  Device）である。
【００２２】
「論理アドレス」とは、論理的（又は仮想的）な領域（例えば、仮想ＶＯＬ、論理ＶＯＬ、或いは、物理ＶＯＬが提供する論理領域）のアドレスである。
【００２３】
「物理アドレス」とは、物理的な領域（例えば、物理ＶＯＬが提供する論理領域に割り当てられる物理領域）のアドレスである。
【００２４】
「エクステント」とは、仮想ＶＯＬに割り当てられる論理領域である。プールを構成する論理ＶＯＬは、２以上のエクステントに分割されている。プールから仮想ＶＯＬにエクステントが割り当てられる。複数のエクステントのサイズは、同一であっても、異なっていても良い。エクステントのサイズは、典型的には、ホストのリード要求及びライト要求に従うデータのサイズ（単位サイズ）よりも大きい。
【００２５】
図４５は、本実施例の概要を示す。
【００２６】
ストレージシステムが、ＳＳＤと、ＳＳＤに基づく論理ＶＯＬと、ＳＳＤに接続されたストレージコントローラとを有する。論理ＶＯＬに格納されるデータは、ＳＳＤに格納される。論理ＶＯＬに入出力されるデータの単位サイズである入出力サイズは、ＳＳＤが有するフラッシュメモリを構成するページのサイズよりも大きい。例えば、入出力サイズは、ページサイズの整数倍（Ｎ倍（Ｎは２以上の整数））、具体的には、入出力サイズはページサイズの３倍である。
【００２７】
論理ＶＯＬにおける論理領域内のデータは、所定のイベントの発生を契機に、ストレージシステムのホストにとって不要となる。所定のイベントとしては、例えば、データが論理領域から別の論理領域に移動される、及び、データを格納しているエクステントの割当て先の仮想ＶＯＬが削除される等がある。
【００２８】
ストレージコントローラは、その所定のイベントを契機に、ホストにとって不要なデータを格納している論理領域の基になっているＳＳＤに、不要低減要求を送信する。不要低減要求は、ホストにとって不要なデータを格納している論理領域の基になるページの数を低減する要求である。ＳＳＤは、不要低減要求を受けた場合、ホストにとって不要なデータを格納している論理領域の基になる複数のページの少なくとも１つの状態を、有効から無効に変更する。
【００２９】
以下、本実施例を詳細に説明する。
【００３０】
図１は、本実施例に係る計算機システムの構成例を示す。
【００３１】
計算機システムは、ストレージシステム１と、ホスト２００とを有する。ストレージシステム１、ホスト２００の数は、それぞれ、１以上とすることができる。ストレージシステム１と、ホスト２００とは、通信ネットワーク（例えば、ＳＡＮ（Storage  Area  Network））を介して相互に接続されている。ストレージシステム１は、ホスト２００で利用されるデータを記憶する。ホスト２００は、各種処理を実行し、ストレージシステム１からデータを読み出したり、ストレージシステム１へデータを書き込んだりする。
【００３２】
ストレージシステム１は、複数の物理ＶＯＬと、それら複数の物理ＶＯＬに接続されたストレージコントローラ３００とを有する。
【００３３】
複数の物理ＶＯＬは、複数種類の物理ＶＯＬを含む。少なくとも１種類の物理ＶＯＬは、１以上存在して良い。物理ＶＯＬとして、例えば、ＳＳＤ４００、ＨＤＤ（Hard  Disk  Drive）デバイス（ＳＡＳ：Serial  Attached  SCSI）５００及びＨＤＤ（ＳＡＴＡ：Serial  ATA）６００がある。
【００３４】
ストレージコントローラ３００は、複数のＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  （ｏｒ  Ｉｎｅｘｐｅｎｓｉｖｅ）  Ｄｉｓｋｓの略））コントローラ３０１を有する。各ＲＡＩＤコントローラ３０１は、ＳＳＤ４００、ＨＤＤ（ＳＡＳ）５００及びＨＤＤ（ＳＡＴＡ）６００と内部バスを介して接続されている。
【００３５】
なお、ＲＡＩＤコントローラ３０１は、ＳＳＤ４００、ＨＤＤ（ＳＡＳ）５００及びＨＤＤ（ＳＡＴＡ）６００にとっての上位装置の一例である。ＲＡＩＤコントローラ３０１は、ＲＡＩＤコントローラ３０１にとっての上位装置（例えば、ホスト２００）からＩ／Ｏコマンドを受け、そのＩ／Ｏコマンドに従い、ＳＳＤ４００、ＨＤＤ（ＳＡＳ）５００又はＨＤＤ（ＳＡＴＡ）６００へのアクセス制御を行う。ＲＡＩＤコントローラ３０１は、ＳＳＤ４００、ＨＤＤ（ＳＡＳ）５００、ＨＤＤ（ＳＡＴＡ）６００のそれぞれのエクステントをそれぞれ異なる記憶階層（ティア）として管理し、データのライト先の論理領域に対して、いずれかの記憶階層のエクステントを割当てる処理を行うようにしてもよい。つまり、ティアは、同種の物理ＶＯＬに基づく２以上のエクステントで構成されている。また、図示していないが、ストレージシステム１は、複数のＳＳＤ４００で構成されたＲＡＩＤグループ、複数のＨＤＤ（ＳＡＳ）５００で構成されたＲＡＩＤグループ、及び、複数のＨＤＤ（ＳＡＴＡ）６００で構成されたＲＡＩＤグループを有して良い。
【００３６】
図２は、実施例に係るＲＡＩＤコントローラの構成例を示す。
【００３７】
ＲＡＩＤコントローラ３０１は、オープンポートパッケージ３１０と、メインフレームパッケージ３２０と、ドライブポートパッケージ３３０と、キャッシュメモリ３４０と、共有メモリ３５０と、１以上のマイクロプロセッサパッケージ（ＭＰＰＫ）３６０と、スイッチパッケージ３７０とを有する。オープンポートパッケージ３１０、メインフレームパッケージ３２０、ドライブポートパッケージ３３０、キャッシュメモリ３４０、共有メモリ３５０、及び１以上のマイクロプロセッサパッケージ（ＭＰＰＫ）３６０は、スイッチパッケージ３７０を介して相互に接続されている。
【００３８】
オープンポートパッケージ３１０は、オープンパッケージ用マイクロプロセッサ（Open Port MP）３１１を有し、オープン系のホスト２００と通信するためのポートである。メインフレームパッケージ３２０は、メインフレーム用マイクロプロセッサ（MF Port MP)３２１を有し、メインフレームであるホスト２００と通信するためのポートである。ドライブポートパッケージ３３０は、ドライブパッケージポート用マイクロプロセッサ（Drive Port MP）３３１を有し、物理ＶＯＬ４００、５００、６００との間でデータをやり取りするポートである。
【００３９】
キャッシュメモリ３４０は、リード、ライトに関わるデータを一時的に記憶する。共有メモリ３５０は、ＭＰＰＫ３６０のＭＰ３６２に利用される各種情報を記憶する。本実施例では、共有メモリ３５０は、プール管理テーブル（図２６参照）、動的領域割り当てテーブル（図２７参照）、動的エクステント領域割り当てテーブル（図２８参照）、アクセス頻度テーブル（図２９参照）、ペア管理テーブル（図３０参照）、スナップショットデータ割り当てテーブル（図３１参照）等を記憶する。なお、これらテーブルについては、後述する。
【００４０】
ＭＰＰＫ３６０は、ローカルメモリ及びプログラムメモリ（ＬＭ／ＰＭ）３６１と、１以上のマイクロプロセッサ（ＭＰ）３６２とを有する。ＬＭ／ＰＭ３６１は、ＭＰ３６２が使用するデータや、プログラムを記憶する。ＭＰ３６２は、ＬＭ／ＰＭ３６１に格納されたプログラムを実行し、ＬＭ／ＰＭ３６１に格納されたデータ及び／又は、共有メモリ３５０に格納されたデータを用いて、各種処理を実行する。
【００４１】
図３は、本実施例に係るＳＳＤの構成例を示す。
【００４２】
ＳＳＤ４００は、１以上の上位Ｉ／Ｆスイッチ（上位Ｉ／Ｆ  Ｓｗｉｔｃｈ）４０１と、１以上のフラッシュメモリパッケージ（ＰＫＧ）１０とを有する。上位Ｉ／Ｆスイッチ４０１は、ＲＡＩＤコントローラ３０１と、複数のフラッシュメモリＰＫＧ１０との間のデータの中継を行う。
【００４３】
図４は、本実施例に係るフラッシュメモリパッケージの構成例を示す。
【００４４】
フラッシュメモリＰＫＧ１０は、主記憶メモリの一例としてＤＲＡＭ（Dynamic  Random  Access  Memory）１１を有し、また、ＦＭコントローラ２０と、複数（又は１つ）のＤＩＭＭ（Dual Inline Memory Module）３０とを有する。ＤＲＡＭ１１は、ＦＭコントローラ２０で使用するデータ等を記憶する。ＤＲＡＭ１１は、ＦＭコントローラ２０に搭載されていても良いし、ＦＭコントローラ２０とは別の部材に搭載されていても良い。ＤＲＡＭ１１は、本実施例では、論物変換テーブル１１０（図２４参照）、物論変換テーブル１１１（図２５参照）等を記憶する。これらテーブルについては、後述する。
【００４５】
ＦＭコントローラ２０は、例えば、１つのＡＳＩＣ（Application  Specific  Integrated  Circuit）で構成されており、ＣＰＵ２１と、内部バス２２と、上位Ｉ／Ｆ（インタフェース）２３と、複数（又は１つ）のＦＭ  Ｉ／Ｆ制御部２４とを有する。内部バス２２は、ＣＰＵ２１と、上位Ｉ／Ｆ２３と、ＤＲＡＭ１１と、ＦＭ  Ｉ／Ｆ制御部２４とを通信可能に接続する。
【００４６】
上位Ｉ／Ｆ２３は、上位Ｉ／Ｆ  Ｓｗｉｔｃｈ４０１に接続され、上位装置との通信を仲介する。上位Ｉ／Ｆ２３は、例えば、ＳＡＳのＩ／Ｆである。ＦＭ  Ｉ／Ｆ制御部２４は、複数のＦＭチップ３２とのデータのやり取りを仲介する。本実施例では、ＦＭ  Ｉ／Ｆ制御部２４は、ＦＭチップ３２とのやり取りを実行するバス（データバス等）を複数組有し、複数のバスを用いて、複数のＦＭチップ３２とのデータのやり取りを仲介する。本実施例では、ＤＩＭＭ３０毎にＦＭ  Ｉ／Ｆ制御部２４が設けられ、ＦＭ  Ｉ／Ｆ制御部２４は、その制御部２４に接続されたＤＩＭＭ３０が有する複数のＦＭチップ３２との通信を仲介する。なお、ＦＭ  Ｉ／Ｆ制御部２４が担当するＤＩＭＭ３０の枚数は、２以上であってもよい。ＣＰＵ２１は、ＤＲＡＭ１１（又は図示しない他の記憶領域）に記憶されるプログラムを実行することによって、各種処理を実行することができる。ＣＰＵ２１は複数あってもよく、複数のＣＰＵ２１が各種処理を分担してもよい。ＣＰＵ２１による具体的な処理については、後述する。
【００４７】
ＤＩＭＭ３０は、１以上のＳＷ３１と、複数のＦＭチップ３２とを有する。ＦＭチップ３２は、例えば、ＭＬＣ（Multi  Level  Cell）型のＮＡＮＤフラッシュメモリチップである。ＭＬＣ型のＦＭチップは、ＳＬＣ型のＦＭチップと比べて書き換え可能な回数が劣るが、１セルあたりの記憶容量が多いという特徴を有している。
【００４８】
ＳＷ３１は、ＦＭ  Ｉ／Ｆ制御部２４と、データバスを含むバス２５を介して接続されている。本実施例では、ＳＷ３１は、ＦＭ  Ｉ／Ｆ制御部２４に接続されるデータバスを含む一組のバス２５に対して、一つ対応するように設けられている。また、ＳＷ３１は、複数のＦＭチップ３２とデータバスを含むバス２８を介して接続されている。ＳＷ３１は、ＦＭ  Ｉ／Ｆ制御部２４からのバス２５と、いずれかのＦＭチップ３２のバス２８とを選択的に切り替えて接続できるようになっている。ここで、ＤＩＭＭ３０に、ＳＷ３１と、複数のＦＭチップ３２とが設けられ、配線がされているので、これらを接続するためのコネクタを別に用意せずともよく、必要なコネクタ数を低減することが期待できる。
【００４９】
なお、図４によれば、ＦＭチップ３２が別のＦＭチップ３２を介することなくＳＷ３１に接続されているが、ＦＭチップ３２が別のＦＭチップ３２を介してＳＷ３１に接続されても良い。すなわち、ＳＷ３１に、直列になった２以上のＦＭチップ３２が接続されても良い。
【００５０】
図５は、実施例に係るフラッシュメモリチップの構成例を示す。
【００５１】
フラッシュメモリチップ（ＦＭチップ）３２は、複数のブロック３２ｂを有する。各ブロック３２ｂは、複数のページ３２ｐを有する。ページ３２ｐは、ＦＭチップ３２に対するデータのリード／ライトの単位である。本実施例では、ページ３２ｐのサイズは、８ＫＢである。なお、ページ３２ｐのサイズはこれに限られない。
【００５２】
図６は、実施例に係るフラッシュメモリチップにおけるデータの更新を説明する図である。
【００５３】
論理ＶＯＬ２０１２に対してデータのライトがあった場合には、状態１に示すように、ＦＭチップ３２においては、論理ＶＯＬ２０１２のデータが格納される領域に対応付けられたＦＭチップ３２のブロック３２ｂのページ３２ｐに対して、データが格納される。この場合には、ページ３２ｐは、有効、すなわち、有効なデータを格納していると設定されて管理される。
【００５４】
そして、論理ＶＯＬ２０１２の同一の領域に対して新たなデータ（更新データ）のライトがあった場合には、状態２に示すように、更新データは、別のページ３２ｐに対して格納され、更新前のデータ（旧データ）が格納されていたページ３２ｐは、無効、すなわち、無効データを格納していると設定されて管理される。なお、種々のデータが更新されると、無効と設定されているページ３２ｐは、ブロック３２ｂに散在することとなる。
【００５５】
図７は、実施例に係るページの状態遷移を説明する図である。
【００５６】
データが格納可能な状態である空き状態７０１であるページ３２ｐに対して、新規のデータのライトが発生すると（図７中（１））、ページ３２ｐに当該データがライトされて、ページ３２ｐは、有効状態７０２となる。この後、当該ページ３２ｐが記憶しているデータへの更新ライトが発生すると（図７中（２））、ページ３２ｐは、無効状態７０３となる。無効状態７０３のページ３２ｐが消去（ページ３２ｐ中のデータが消去）されると（図７中（３））、ページ３２ｐは、空き状態７０１に戻る。
【００５７】
図８は、実施例に係るフラッシュメモリチップにおけるデータ消去を説明する図である。
【００５８】
ＦＭチップ３２では、ブロック３２ｂを単位として格納されているデータの消去が可能となっている。したがって、本実施例では、ブロック３２ｂに属する全てのページ３２ｐが無効となった以降において、データの消去が行われる。なお、ブロックのデータの消去を、ブロックの消去ともいう。
【００５９】
図９は、実施例に係るリクラメーションを説明する図である。
【００６０】
リクラメーションとは、消去処理可能なブロックを生成する処理のことをいう。リクラメーションにおいては、図９に示すように、無効ページが所定数以上のブロック３２ｂ（ブロック＃Ａ、ブロック＃Ｂ）中の有効なページ３２ｐのデータを、空きページのある別のブロック３２ｂ（ここでは、ブロック＃Ｃ）にコピーして、コピー元の有効ページを無効ページとする。この結果、コピー元のブロック３２ｂ（ここでは、ブロック＃Ａ、ブロック＃Ｂ）は、すべてのページ３２ｐが無効ページとなり、消去処理可能なブロックとなる。これにより、以降において、当該ブロック３２ｂを消去することができるようになる。
【００６１】
図１０は、実施例に係るブロックの状態遷移を説明する図である。
【００６２】
全てのページ３２ｐが空きである全ページ空き状態１００１のブロック３２ｂにおいて、当該ブロック３２ｂ中のページ３２ｐが論理領域に新規に割り当てられて、データが書き込まれると（図１０中（１））、当該ブロック３２ｂは、空きページと、有効ページとが混在する空きと有効混在状態１００２となる。空きと有効混在状態１００２のブロック３２ｂにおいて、全ての空きページが新規に割り当てられてデータが書き込まれて、空きページがなくなると（図１０中（２））、全ページが有効ページの状態１００３となる。
【００６３】
一方、空きと有効混在状態１００２のブロック３２ｂにおいて、有効ページに対する更新ライトが発生すると（図１０中（３））、当該有効ページは、無効ページとなるので、ブロック３２ｂは、空き、有効、及び無効のページが混在する状態１００４となる。
【００６４】
また、全ページが有効ページの状態１００３のブロック３２ｂにおいて、有効ページに対して更新ライトが発生すると（図１０中（４））、当該有効ページは、無効ページとなるので、ブロック３２ｂは、有効ページ及び無効ページが混在する状態１００５となる。
【００６５】
また、空き、有効、及び無効のページが混在する状態１００４のブロック３２ｂにおいて、全ての空きページが新規に割り当てられてデータが書き込まれて、空きページがなくなると（図１０中（５））、ブロック３２ｂは、有効ページと、無効ページとが混在する状態１００５となる。
【００６６】
有効ページと、無効ページとが混在する状態１００５のブロック３２ｂにおいて、有効ページに対して更新ライトが発生したり、リクラメーションにより有効ページのデータが移動されたりして、有効ページがなくなると（図１０中（６））、ブロック３２ｂは、全て無効ページの状態１００６となる。全て無効ページの状態１００６のブロック３２ｂに対して、消去処理が行われると（図１０中（７））、ブロック３２ｂは、全てのページが空きである空き状態１００１となる。
【００６７】
図１１は、実施例に係る動的領域割り当て処理を説明する図である。
【００６８】
ホスト２００は、仮想ＶＯＬ２０２２の領域（ライト領域）を指定したライト要求を送信する。ここで、ホスト２００がライト要求に従うデータ（以下、ライトデータ）のサイズは、例えば、ＳＳＤ４００のページの容量の複数倍（例えばＮ倍（Ｎは２以上の整数））のサイズである。本実施例では、例えば、ページのサイズを８ＫＢとし、ライトデータのサイズを、ページサイズの３倍である２４ＫＢとしている。ストレージシステム１では、ライト要求を受信すると、仮想ＶＯＬ２０２２のライト領域に対して、プール２００１の論理ＶＯＬ２０１２の領域が割り当てられていない場合には、ライト領域と同じサイズの、プール２００１の論理ＶＯＬ２０１２の領域が割り当てられる。この結果、割り当てられた論理ＶＯＬ２０１２の領域がＳＳＤ４００の領域に対応する場合には、キャッシュ３４０を介して、ＳＳＤ４００の対応する領域（ページ）にライトデータが書きこまれる。
【００６９】
この動的領域割り当て処理に代えて、次の動的エクステント領域割り当て処理を行うようにしてもよい。
【００７０】
図１２は、実施例に係る動的エクステント領域割り当て処理を説明する図である。
【００７１】
動的エクステント領域割り当て処理では、仮想ＶＯＬ２０２２のライト領域に対して、プール２００１の論理ＶＯＬ２０１２の領域が割り当てられていない場合には、ライト領域よりも大きいサイズの領域であるエクステント２０５２を割り当てる。このように、ライト領域よりも大きいサイズのエクステント２０５２を割り当てるようにすることにより、領域の割り当てを管理するための管理情報のデータ量を低減することができる。
【００７２】
この図に示す動的エクステント領域割り当て処理でも、図１１に示した動的領域割り当て処理でも、仮想ＶＯＬの領域には、プール内の論理領域（エクステント）が割り当てられる。このため、以下の説明では、動的エクステント領域割り当て処理と動的領域割り当て処理のいずれの説明でも、「エクステント」が割り当てられると記載することがある。
【００７３】
次に、本実施例に係るストレージシステムにおいて、ＳＳＤ４００に不要なデータが発生する場合の一例として、ティア間動的マイグレーションについて説明する。
【００７４】
図１３は、実施例に係るティア間動的マイグレーションを説明する図である。
【００７５】
ティア間動的マイグレーションとは、仮想ＶＯＬにおける仮想領域又は仮想領域に割り当てられているエクステントに対するアクセス頻度等に応じて、データが格納されるエクステントを別のティアのエクステントに変更する、すなわち、データをエクステントから別のティアのエクステントに移動させることをいう。
【００７６】
ここで、ＳＳＤ４００のエクステントに格納されているデータを、別のティアのエクステント（ここでは、ＨＤＤ（ＳＡＳ）５００のエクステント）に移動させる場合には、ストレージシステム１は、当該領域に対してプール２００１から移動先のティアのエクステントを割り当て、ＳＳＤ４００から対応するデータをキャッシュ３４０に読み出し、当該データを割り当てられた移動先のティアのエクステント（ここでは、ＨＤＤ（ＳＡＳ）５００のエクステント）に移動する。なお、この後、ストレージシステム１は、当該データの仮想ＶＯＬ２０２２の領域を、移動後のティアのエクステントに対応付けるように、動的領域割り当てテーブル等のマッピング変更をする。
【００７７】
このティア間動的マイグレーションが実行された後においては、ＳＳＤ4００の記憶領域に格納されているデータは、ホスト２００から参照されることはなく、不要なデータとなる。しかしながら、ＳＳＤ４００においては、当該データを格納している複数のページは、有効なデータを格納している有効ページとして管理されたままとなっている。
【００７８】
ここで、この不要なデータを格納している領域を低減する方法として、本実施例では、例えば、以下に示す固定パターンデータライト処理を実行する。
【００７９】
図１４は、実施例に係るティア間動的マイグレーション後の固定パターンデータライト処理を説明する図である。
【００８０】
ここで、固定パターンデータとは、ライトデータのサイズと同じであり、ページ３２ｐのサイズに分解して得られる複数の部分データのそれぞれが、同一のデータパターンとなるデータである。固定パターンデータとしては、例えば、全てのビットが“０”のデータとしてもよく、全てのビットが“１”のデータとしてもよい。
【００８１】
固定パターンデータライト処理は、ティア間動的マイグレーション後（データが他のティアのエクステントに移動された後）であって、例えば、移動したデータが格納されている仮想領域（仮想ＶＯＬにおける領域）にマッピングされるエクステント（移動元のエクステント）が別のエクステント（移動先のエクステント）に変更される前に実行され、ストレージシステム１が、固定パターンデータを、不要データが格納されているエクステント（移動元のエクステント）に対応した複数のページ（マイグレーション実行前のデータを格納していたＳＳＤ４００の複数ページ）に対して、固定パターンデータ（例えば、全ビットが“０”のデータ）を書き込む処理である。
【００８２】
この固定パターンデータライト処理としては、図１５乃至図１８に示す第１乃至第４の例に示すものがある。
【００８３】
図１５は、実施例に係る固定パターンデータライト処理の第１の例を説明する図である。
【００８４】
第１の例に係る固定パターンデータライト処理では、ＲＡＩＤコントローラ３０１が、不要データを格納しているエクステント（プールを構成する論理ＶＯＬ２０１２の領域）に対して、ライトデータの単位サイズ（例えば、２４ＫＢ）の固定パターンデータ１０５１を書き込ませるライト要求をＳＳＤ４００（ＳＳＤ４００のフラッシュメモリパッケージ１０）へ送信する。この結果、固定パターンデータ１０５１は、キャッシュ３４０を介して、ＳＳＤ４００に送信される。ＳＳＤ４００は、不要データが格納されていた複数（この例では、３つ）のページを無効ページと設定する。そして、ＳＳＤ４００は、１つのページ３２ｐに対して、固定パターンデータ１０５１の１つのページサイズの部分データを格納し、当該ページ３２ｐに対して、論理ボリュームの領域（ライトデータサイズの領域）のページサイズで分割した（圧縮した）各領域を対応付けるように、論物変換テーブル１１０、物論変換テーブル１１１の情報を更新する。これにより、不要なデータを記憶している有効ページの数を低減することができる。例えば、１つのライトデータについてみると、有効ページを３つから１つにすることができる。
【００８５】
図１６は、実施例に係る固定パターンデータライト処理の第２の例を説明する図である。
【００８６】
第２の例に係る固定パターンデータライト処理では、ＲＡＩＤコントローラ３０１が、不要データを格納している論理ＶＯＬ２０１２の領域に対して、ライトデータの単位サイズ（例えば、２４ＫＢ）の固定パターンデータ１０５１を書き込ませる要求をＳＳＤ４００へ送信する。この結果、固定パターンデータ１０５１は、キャッシュ３４０を介して、ＳＳＤ４００に送信される。ＳＳＤ４００は、不要データが格納されていた複数（この例では、３つ）のページを無効ページと設定する。そして、ＳＳＤ４００は、別の１つのページ３２ｐに対して、論理ボリュームの領域（ライトデータサイズの領域）のページサイズで分割した（圧縮した）各領域を対応付けるとともに、固定パターンデータを特定することのできるデータパターン（例えば、すべて“０”の固定パターンデータであれば、“０”）を各領域に対して対応付けるように、論物変換テーブル１１０、物論変換テーブル１１１の情報を更新する。これにより、不要なデータを記憶している有効ページの数を低減することができる。例えば、１つのライトデータについてみると、有効ページを３つから１つにすることができる。また、ページに対して、データを格納せずに済む。
【００８７】
図１７は、実施例に係る固定パターンデータライト処理の第３の例を説明する図である。
【００８８】
第３の例に係る固定パターンデータライト処理では、ＲＡＩＤコントローラ３０１が、不要データを格納している論理ＶＯＬ２０１２の領域に対する、ライトデータの単位サイズ（例えば、２４ＫＢ）の固定パターンデータ１０５１を書き込む要求として、固定パターンデータ１０５１を分割した（圧縮した）ページサイズの部分データと、固定パターンデータのサイズを示すサイズ情報とを含むライト要求（固定パターンデータ指示付きライト要求）をＳＳＤ４００へ送信する。この結果、部分データは、キャッシュ３４０を介して、ＳＳＤ４００に送信される。ＳＳＤ４００は、サイズ情報に基づいて、不要データが格納されていた複数（この例では、３つ）のページを特定し、当該ページを無効ページと設定する。そして、ＳＳＤ４００は、１つのページ３２ｐに対して、部分データを格納し、当該ページ３２ｐに対して、論理ボリュームの領域（ライトデータサイズの領域）のページサイズで分割した各領域を対応付けるように、論物変換テーブル１１０、物論変換テーブル１１１の情報を更新する。これにより、不要なデータを記憶している有効ページの数を低減することができる。例えば、１つのライトデータについてみると、有効ページを３つから１つにすることができる。
【００８９】
図１８は、実施例に係る固定パターンデータライト処理の第４の例を説明する図である。
【００９０】
第４の例に係る固定パターンデータライト処理では、ＲＡＩＤコントローラ３０１が、不要データを格納している論理ＶＯＬ２０１２の領域に対する、ライトデータのサイズ（例えば、２４ＫＢ）の固定パターンデータ１０５１を書き込む要求として、固定パターンデータ１０５１を分割した（圧縮した）ページサイズの部分データと、固定パターンデータのサイズを示すサイズ情報（例えば、２４ＫＢ）とを含むライト要求をＳＳＤ４００へ送信する。この結果、部分データは、キャッシュ３４０を介して、ＳＳＤ４００に送信される。ＳＳＤ４００は、サイズ情報に基づいて、不要データが格納されていた複数（この例では、３つ）のページを特定し、当該ページを無効ページと設定する。そして、ＳＳＤ４００は、別の１つのページ３２ｐに対して、論理ボリュームの領域（ライトデータサイズの領域）のページサイズで分割した各領域を対応付けるとともに、固定パターンデータを特定することのできるデータパターン（例えば、すべて“０”の固定パターンデータであれば、“０”）を各領域に対して対応付けるように、論物変換テーブル１１０、物論変換テーブル１１１の情報を更新する。これにより、不要なデータを記憶している有効ページの数を低減することができる。例えば、１つのライトデータについてみると、有効ページを３つから１つにすることができる。また、ページに対して、データを格納せずに済む。
【００９１】
また、不要なデータを格納している領域（ページ）を低減する他の方法として、例えば、以下に示す第５の例に係るアンマップ要求を利用した処理を実行するようにしてもよい。
【００９２】
図１９は、実施例に係るアンマップ要求を説明する図である。
【００９３】
アンマップ要求１９０１は、論理アドレス１９０２と、データ長１９０３とのフィールドを有する。論理アドレス１９０２には、無効化するページの先頭を示す論理アドレスが格納される。データ長１９０３には、無効化するページが含まれる論理アドレス範囲を示す先頭の論理アドレスからのデータ長が格納される。
【００９４】
アンマップ要求１９０１を使用する際には、ＲＡＩＤコントローラ３０１が、不要データが格納されている論理アドレスの範囲を特定し、先頭の論理アドレスを論理アドレス１９０２に設定し、データ長１９０３に論理アドレスの範囲のデータ長を設定した後、アンマップ要求１９０１をＳＳＤ４００に送信する。ＳＳＤ４００のフラッシュメモリパッケージ１０では、アンマップ要求１９０１を取得すると、アンマップ要求１９０１の論理アドレス１９０２及びデータ長１９０３の値に基づいて、対応する論理アドレスの範囲を特定し、当該論理アドレスの範囲に対応付けられている複数のページを無効として管理するように、論物変換テーブル１１０、物論変換テーブル１１１の情報を更新する。これにより、不要なデータが格納されたページが全て無効となり、以降において、当該ページが空きページとして利用可能にすることができる。
【００９５】
次に、本実施例に係るストレージシステムにおいて、ＳＳＤ４００に不要なデータが発生する場合の他の例として、スナップショット作成処理及びスナップショット削除処理について説明する。
【００９６】
図２０は、実施例に係るスナップショット作成処理を説明する図である。
【００９７】
スナップショット作成処理では、ホスト２００からコピー対象のプライマリＶＯＬ１５５１の所定の領域（ライト領域）に対して、新データ（対応する領域に格納されているデータ（旧データ）を更新するデータ）をライトするライト要求が送信されると（図２０中（１））、ＲＡＩＤコントローラ３０１が、プライマリＶＯＬ１５５１のライト領域の基になっている物理領域（同図の例では、ＨＤＤ（ＳＡＳ）５００の物理領域）から旧データを読み出して（図２０中（２））、キャッシュ３４０を介して取得し（図２０中（３））、スナップショットＶＯＬ１５５３におけるコピー先領域（プライマリＶＯＬ１５５１におけるライト領域と同じアドレスの領域）に対して、当該旧データを書き込むように処理を行う（図２０中（４））。この処理では、ＲＡＩＤコントローラ３０１は、スナップショットＶＯＬ１５５３のコピー先領域に割り当てたエクステント（プール２００１の論理ＶＯＬ２０１２の論理領域）に旧データを書き込むように処理を行う（図２０中（５））。
【００９８】
旧データのライト先のエクステント（コピー先領域に割り当てられたエクステント）に対してＳＳＤ４００の領域が割り当てられている場合には、ＲＡＩＤコントローラ３０１は、そのライト先のエクステントを指定しライト対象を旧データとしたライト要求を、ライト先のエクステントに割り当てられた領域の基になっているＳＳＤ４００に送信する。当該旧データがキャッシュ３４０を介して（図２０中（６））、ＳＳＤ４００に送信される。ＳＳＤ４００は、ライト先のエクステントに対応した、ＦＭチップの記憶領域（１以上のページ）に旧データを格納する（図２０中（７））。新データが、プライマリＶＯＬ１５５１に格納される（図２０中（８））。
【００９９】
図２１は、実施例に係るスナップショット作成処理の他の例を説明する図である。
【０１００】
図２０中（５）において、ＲＡＩＤコントローラ３０１が、スナップショットＶＯＬ１５５３のコピー先領域に、プール２００１から新たにエクステントを割り当て、当該エクステントに対して旧データを書き込む（図２１中（５））。
【０１０１】
図２２は、実施例に係るスナップショット削除に伴う不要なデータを説明する図である。
【０１０２】
スナップショット作成処理が実行された後において、ストレージシステム１が、例えば、ホスト２００からスナップショットＶＯＬ１５５３を削除する要求を受信する場合がある。この場合には、ストレージシステム１のＲＡＩＤコントローラ３０１は、削除要求されたスナップショットＶＯＬ１５５３を削除する。ここで、スナップショットＶＯＬ１５５３の削除としては、ＲＡＩＤコントローラ３０１で管理している、スナップショットＶＯＬ１５５３に関する情報等が、削除されることである。
【０１０３】
この場合に、ＳＳＤ４００においては、旧データを格納している複数のページは、有効なデータを格納している有効ページとして管理されたままとなっている。
【０１０４】
ここで、この不要なデータを格納している領域を低減する方法として、本実施例では、例えば、以下に示す固定パターンデータライト処理を実行する。
【０１０５】
図２３は、実施例に係るスナップショット削除後の固定パターンデータライト処理を説明する図である。
【０１０６】
図２３に示すスナップショット削除後の固定パターンデータライト処理は、固定パターンデータのライト先を、スナップショットＶＯＬ１５５３に割り当てられていたエクステントとする以外は、図１４に示すティア間動的マイグレーション後の固定パターンデータライト処理と同様な処理である。
【０１０７】
スナップショット削除後の固定パターンデータライト処理は、上記した図１５乃至図１８に示す第１乃至第４の例に示す固定パターンデータライト処理と同様な処理とすることができる。
【０１０８】
また、不要なデータを格納している領域を低減する他の方法として、上記した図１９に示す第５の例に係るアンマップ要求を利用した処理を実行するようにしてもよい。
【０１０９】
次に、ストレージシステム１における各種テーブルについて詳細に説明する。
【０１１０】
図２４は、実施例に係る論物変換テーブルの一例を示す。
【０１１１】
論物変換テーブル１１０は、フラッシュメモリパッケージ１０のＤＲＡＭ１１に格納されているテーブルであり、論理アドレス１１０ａ、有効性１１０ｂ、ＦＭ番号１１０ｃ、ブロック番号１１０ｄ、ページ番号１１０ｅ、及びデータパターン１１０ｆのフィールドを有するレコードを管理する。
【０１１２】
論理アドレス１１０ａには、論理アドレスが格納される。本実施例では、この論理アドレスは、プール２００１における論理ＶＯＬ２０１２の論理アドレスであるが、その論理アドレスに代えて、論理ＶＯＬ２０１２の論理アドレスに対応する、ＳＳＤ４００の論理空間の論理アドレスが、論理アドレス１１０ａに格納されても良い。有効性１１０ｂには、対応する論理アドレスのデータの有効性、例えば、有効（フラッシュメモリパッケージ１０に存在する）か、無効（フラッシュメモリパッケージ１０に存在しないか）かが格納される。ＦＭ番号１１０ｃには、対応する論理アドレスのデータを格納しているＦＭチップ３２の番号（ＦＭ番号）が格納される。ブロック番号１１０ｄには、対応する論理アドレスのデータを格納しているＦＭチップ３２におけるブロックの番号（ブロック番号）が格納される。ページ番号１１０ｅには、対応する論理アドレスのデータを格納しているブロックにおけるページの番号（ページ番号）が格納される。
【０１１３】
データパターン１１０ｆは、固定パターンデータライト処理で、対応するページに、実際にデータを書き込まない場合、すなわち、図１６及び図１８に示す第２及び第４の例の固定パターンデータライト処理を実行する場合に利用されるフィールドであり、その他の場合においては、備えてなくてもよい。データパターン１１０ｆには、対応する論理アドレスのデータを特定するために利用するデータパターン、又は、データパターンが格納されていないことを示すＮＵＬＬが格納される。データパターンが格納されている場合には、当該データパターンに基づいて、対応する論理アドレスのデータを生成することができる。生成されたデータは、例えば、当該データパターンの複数倍（Ｎ倍（Ｎは２以上の整数））である。
【０１１４】
論物変換テーブル１１０の論理アドレス１１０ａが「0x10000000」のレコードによると、当該論理アドレスのデータは、ＦＭチップ＃０のブロック＃０のページ＃０に格納されており、データパターンが格納されていないことがわかる。
【０１１５】
また、論理アドレス１１０ａが「0x20000000」、「0ｘ20002000」、「0ｘ20004000」のレコードは、例えば、第２又は第４の例の固定パターンデータライト処理（図１６、図１８）が行われた後の対応する論理アドレスの状態を示しており、各論理アドレスで示される領域に対しては、ＦＭチップ＃１のブロック＃０のページ＃０が対応付けられており、データパターンが「０」であるので、各論理アドレスに対応するデータは、全てのビットが「０」のデータであることがわかる。
【０１１６】
図２５は、実施例に係る物論変換テーブルの一例を示す。
【０１１７】
物論変換テーブル１１１は、フラッシュメモリパッケージ１０のＤＲＡＭ１１に格納されているテーブルであり、ＦＭ番号１１１ａ、ブロック番号１１１ｂ、ページ番号１１１ｃ、状態１１１ｄ、及び論理アドレス１１１ｅのフィールドを有するレコードを管理する。
【０１１８】
ＦＭ番号１１１ａには、ＦＭチップ３２のＦＭ番号が格納される。ブロック番号１１１ｂには、ＦＭチップ３２におけるブロックの番号が格納される。ページ番号１１１ｃには、対応するブロックにおけるページの番号が格納される。状態１１１ｄには、対応するページの状態が格納される。ページの状態としては、論理アドレスに対応するデータが格納されていることを示す「有効」と、論理アドレスに対応するデータが格納されていない、すなわち、不要データが格納されていることを示す「無効」と、データが格納されていない「空き」とがある。論理アドレス１１１ｅには、対応するページに格納されるデータのプール２００１における論理ＶＯＬ２０１２の論理アドレスが格納される。
【０１１９】
本実施例では、物論変換テーブル１１１は、１つのページに対して、複数（同図では、例えば、４つ）のレコードを管理するようにしている。これは、固定パターンデータライト処理において、ライトデータ（複数のページサイズ）を格納する論理領域中のページサイズ毎に分割した複数の部分領域について、共通の１つのページを割り当てて管理するためである。このようにレコードを管理することにより、１つのページと、対応する複数の部分領域との対応関係を適切に管理することができる。１つのページに対して備えるレコード数は、ライトデータの最大サイズがページサイズの何倍であるかにより決定すればよい。
【０１２０】
物論変換テーブル１１１の上から４つのレコードによれば、ＦＭチップ＃０のブロック＃０のページ＃０は、有効であり、論理アドレスが「0ｘ10000000」のデータのみが格納されていることがわかる。
【０１２１】
また、ＦＭチップ＃１のブロック＃０のページ＃０の４つのレコードによれば、論理アドレスが「0x20000000」、「0ｘ20002000」、「0ｘ20004000」のデータが当該ページに格納されていることがわかる。例えば、固定パターンデータライト処理（図１５乃至図１８）において、固定パターンデータがライトされた場合には、これら４つのレコードが示すような状態に更新される。このように、固定パターンデータの場合には、複数のページサイズに対応する論理領域に対応付けるページ数を１にすることができる。
【０１２２】
図２６は、実施例に係るプール管理テーブルの一例を示す。
【０１２３】
プール管理テーブル３５１は、例えば、ＲＡＩＤコントローラ３０１の共有メモリ３５０に格納されるテーブルであり、プール番号３５１ａ、デバイスタイプ３５１ｂ、論理ＶＯＬ番号３５１ｃ、論理アドレス３５１ｄ、物理ＶＯＬ番号３５１ｅ、物理アドレス３５１ｆ及び状態３５１ｇのフィールドを有するレコードを管理する。
【０１２４】
プール番号３５１ａには、ストレージシステム１において、プールの番号（プール番号）が格納される。デバイスタイプ３５１ｂには、物理ＶＯＬの種別（デバイスタイプ）が格納される。論理ＶＯＬ番号３５１ｃには、対応する論理ＶＯＬの番号（論理ＶＯＬ番号）が格納される。論理アドレス３５１ｄには、対応する論理ＶＯＬに属する論理アドレスが格納される。物理ＶＯＬ番号３５１ｅには、対応する論理アドレスの領域の基になっている物理ＶＯＬの番号（物理ＶＯＬ番号）が格納される。物理アドレス３５１ｆには、対応する物理ＶＯＬにおけるアドレス（物理アドレス）が格納される。なお、デバイスタイプがＳＳＤのように、ＦＭチップを用いたデバイスである場合には、物理アドレス３５１ｆには、ＮＵＬＬが設定される。状態３５１ｇには、対応する論理アドレスの領域の状態が格納される。格納される状態としては、例えば、当該論理アドレスの領域が、仮想ＶＯＬの領域に割り当てられていることを示す「有効」、仮想ＶＯＬの領域に割り当てられていないことを示す「空き」等がある。
【０１２５】
プール管理テーブル３５１の一番上のレコードによれば、プール＃０の論理ＶＯＬ＃0x1000の論理アドレス＃0x10000000の領域は、ＳＳＤ＃０が基になっており、仮想ＶＯＬの領域に割り当てられていることがわかる。
【０１２６】
図２７は、実施例に係る動的領域割り当てテーブルの一例を示す。
【０１２７】
動的領域割り当てテーブル３５２は、例えば、ＲＡＩＤコントローラ３０１の共有メモリ３５０に格納されるテーブルであり、仮想ＶＯＬ番号３５２ａ、ホスト論理アドレス３５２ｂ、状態３５２ｃ、エクステントＩＤ３５２ｄ、プール番号３５２ｅ、論理ＶＯＬ番号３５２ｆ、及び論理アドレス３５２ｇのフィールドを有するレコードを管理する。
【０１２８】
仮想ＶＯＬ番号３５２ａには、仮想ＶＯＬを特定する仮想ＶＯＬの番号（仮想ＶＯＬ番号）が格納される。ホスト論理アドレス３５２ｂには、仮想ＶＯＬに属する論理アドレスであってホストが認識することのできるアドレス（ホスト論理アドレス）が格納される。状態３５２ｃには、対応する仮想ＶＯＬのホスト論理アドレスで示される領域に、論理ＶＯＬの領域が割り当てられているか否かの情報を格納する。例えば、状態３５２ｃには、対応する仮想ＶＯＬのホスト論理アドレスで示される領域に、論理ＶＯＬの領域が割り当てられている場合には、「済」が設定され、論理ＶＯＬの領域が割り当てられていない場合には、「未」が設定される。エクステントＩＤ３５２ｄには、エクステントのＩＤが格納される。プール番号３５２ｅには、プールのプール番号が格納される。論理ＶＯＬ番号３５２ｆには、論理ＶＯＬの論理ＶＯＬ番号が格納される。論理アドレス３５２ｇには、論理ＶＯＬの領域のアドレス（論理アドレス）が格納される。
【０１２９】
動的領域割り当てテーブル３５２の一番上のレコードによれば、仮想ＶＯＬ「0x0000」のホスト論理アドレス「0ｘ00000000」の領域には、エクステント＃０（プール＃０の論理ＶＯＬ#0x1000の論理アドレス＃0x10000000で示される領域）が割り当て済みであることがわかる。
【０１３０】
図２８は、実施例に係る動的エクステント領域割り当てテーブルの一例を示す。
【０１３１】
動的エクステント領域割り当て管理テーブル３５３は、例えば、ＲＡＩＤコントローラ３０１の共有メモリ３５０に格納されるテーブルであり、ホスト２００からのライトデータを格納する領域に対して、ホスト２００からのデータサイズよりも大きなサイズの領域であるエクステントを割り当てるようにした場合に利用されるテーブルである。
【０１３２】
動的エクステント領域割り当て管理テーブル３５３は、仮想ＶＯＬ番号３５３ａ、ホスト論理アドレス３５３ｂ、状態３５３ｃ、エクステントＩＤ３５３ｄ、プール番号３５３ｅ、論理ＶＯＬ番号３５３ｆ、及び論理アドレス３５３ｇのフィールドを有するレコードを管理する。
【０１３３】
仮想ＶＯＬ番号３５３ａには、仮想ボリュームを特定する仮想ＶＯＬ番号が格納される。ホスト論理アドレス３５３ｂには、仮想ボリュームにおけるホストが認識することのできるホスト論理アドレスが格納される。状態３５３ｃには、対応する仮想ボリュームのホスト論理アドレスで示される領域に、論理ボリュームの領域が割り当てられているか否かの情報を格納する。例えば、状態３５３ｃには、対応する仮想ボリュームのホスト論理アドレスで示される領域に、論理ボリュームの領域が割り当てられている場合には、「済」が設定され、論理ボリュームの領域が割り当てられていない場合には、「未」が設定される。エクステントＩＤ３５３ｄには、対応する領域に割り当てられているエクステントのＩＤが格納される。プール番号３５３ｅには、対応する領域に割り当てられているプールのプール番号が格納される。論理ＶＯＬ番号３５３ｆには、対応する領域に割り当てられている論理ボリュームの論理ＶＯＬ番号が格納される。論理アドレス３５３ｇには、対応する領域に割り当てられている論理ボリュームの論理アドレスが格納される。
【０１３４】
動的エクステント領域割り当て管理テーブル３５３の一番上のレコードによれば、仮想ＶＯＬ＃0x0000のホスト論理アドレス＃0x00000000の領域には、エクステント＃０（プール＃０の論理ＶＯＬ＃0x1000の論理アドレス＃0x10000000で示される領域）が割り当て済みであることがわかる。
【０１３５】
動的エクステント領域割り当て管理テーブル３５３を用いた領域の割り当て方法としては、仮想ＶＯＬ番号が「0ｘ0000」であり、ホスト論理アドレスが「0ｘ00002000」の場合には、ＲＡＩＤコントローラは、仮想ＶＯＬ番号が「0ｘ0000」であり、ホスト論理アドレスが「0ｘ00000000」のレコードを参照し、プール番号「０」、論理ＶＯＬ番号「0ｘ0000」の論理ＶＯＬを割り当て先と決定する。さらに、ＲＡＩＤコントローラは、割当て対象のホスト論理アドレス「0ｘ00002000」と、当該レコードのホスト論理アドレス「0ｘ00000000」の差である「0ｘ00002000」を、当該レコードの論理アドレス「0ｘ10000000」に対して加算したアドレス「0ｘ10002000」を、仮想ボリュームの対応する領域に割り当てる論理アドレスに決定する。
【０１３６】
図２９は、実施例に係るアクセス頻度テーブルの一例を示す。
【０１３７】
アクセス頻度テーブル３５４は、例えば、ＲＡＩＤコントローラ３０１の共有メモリ３５０に格納されるテーブルであり、仮想ＶＯＬ番号３５４ａ、ホスト論理アドレス３５４ｂ、現在のデバイスタイプ３５４ｃ、及びアクセス頻度３５４ｄのフィールドを有するレコードを管理する。
【０１３８】
仮想ＶＯＬ番号３５４ａには、仮想ボリュームを特定する仮想ＶＯＬ番号が格納される。ホスト論理アドレス３５４ｂには、仮想ボリュームにおけるホストが認識することのできるホスト論理アドレスが格納される。
【０１３９】
現在のデバイスタイプ３５４ｃには、対応するホスト論理アドレスの領域に対して現在割り当てられている記憶領域のデバイスタイプが格納される。アクセス頻度３５４ｄには、対応するホスト論理アドレスの領域に対するアクセス頻度の情報が格納される。本実施例では、アクセス頻度の情報としては、アクセス頻度が高い方から「高」、「中」、「低」のいずれかが設定される。本実施例では、アクセス頻度が「高」の場合には、ＳＳＤ４００のエクステントにより構成されるティアにデータを移動させ、アクセス頻度が「中」の場合には、ＨＤＤ（ＳＡＳ）５００のエクステントに構成されるティアにデータを移動させ、アクセス頻度が「低」の場合には、ＨＤＤ（ＳＡＴＡ）６００のエクステントに構成されるティアにデータを移動させる必要があることを示している。なお、ＲＡＩＤコントローラは、アクセス頻度テーブル３５４において、アクセス頻度の他に、又はアクセス頻度に代えて、最終アクセス時間、及び／又はデータ保管時間を管理し、いずれかの値を、どのエクステント内のデータをどのティアのエクステントに移動するかの判断に用いてよい。
【０１４０】
アクセス頻度テーブル３５４の一番上のレコードによると、仮想ＶＯＬ番号が「0ｘ0000」であり、ホスト論理アドレスが「0ｘ00000000」に対応する領域に対して、現在ＳＳＤデバイスの領域が割り当てられており、当該領域に対するアクセス頻度が「低」であることがわかる。
【０１４１】
図３０は、実施例に係るペア管理テーブルの一例を示す。
【０１４２】
ペア管理テーブル３５５は、例えば、ＲＡＩＤコントローラ３０１の共有メモリ３５０に格納されるテーブルであり、プライマリＶＯＬ番号３５５ａ、有効性３５５ｂ、ＩＤ３５５ｃ、及びスナップショットＶＯＬ番号３５５ｄのフィールドを有するレコードを管理する。
【０１４３】
プライマリＶＯＬ番号３５５ａには、スナップショットを作成対象となるプライマリＶＯＬの番号（プライマリＶＯＬ番号）が格納される。有効性３５５ｂには、対応するレコードのコピーが有効であるか否かを示す有効性が格納される。ＩＤ３５５ｃには、スナップショットを識別するための番号（ＩＤ）が格納される。ここで、同一のプライマリボリュームを対象に複数のスナップショットを作成することができるが、この番号により、スナップショット（スナップショットの世代）を識別することができる。番号は、例えば、世代と同じ値でよい。スナップショットＶＯＬ番号３５５ｄには、スナップショットＶＯＬの番号（スナップショットＶＯＬ番号）が格納される。
【０１４４】
ペア管理テーブル３５５の一番上のレコードによると、プライマリＶＯＬ番号が「0x1000」を対象としたスナップショットは、スナップショットＶＯＬ番号が「0x1001」の仮想ボリュームに格納され、当該スナップショットの番号は、「0」であり、当該スナップショットは、有効であることがわかる
【０１４５】
図３１は、実施例に係るスナップショットデータ割り当てテーブルの一例を示す。
【０１４６】
スナップショットデータ割り当てテーブル３５６は、例えば、ＲＡＩＤコントローラ３０１の共有メモリ３５０に格納されるテーブルであり、スナップショットＶＯＬ番号３５６ａ、ホスト論理アドレス３５６ｂ、状態３５６ｃ、プール番号３５６ｄ、論理ＶＯＬ番号３５６ｅ及び論理アドレス３５６ｆのフィールドを有するレコードを管理する。
【０１４７】
スナップショットＶＯＬ番号３５６ａには、スナップショットが格納されるスナップショットボリュームのスナップショットＶＯＬ番号が格納される。ホスト論理アドレス３５６ｂには、仮想ボリュームにおけるホストが認識することのできるホスト論理アドレスが格納される。状態３５６ｃには、対応するホスト論理アドレスが示す領域に、論理ボリュームが割り当てられているか否かの情報が格納される。例えば、状態３５６ｃには、対応する仮想ボリュームのホスト論理アドレスで示される領域に、論理ボリュームの領域が割り当てられている場合には、「済」が設定され、論理ボリュームの領域が割り当てられていない場合には、「未」が設定される。プール番号３５６ｄには、対応する領域に割り当てられているプールのプール番号が格納される。論理ＶＯＬ番号３５６ｅには、対応する領域に割り当てられている論理ボリュームの論理ＶＯＬ番号が格納される。論理アドレス３５６ｆには、対応する領域に割り当てられている論理ボリュームの論理アドレスが格納される。
【０１４８】
次に、本実施例に係るストレージシステムの処理を、フローチャートを参照して詳細に説明する。
【０１４９】
図３２は、実施例に係るライト処理のフローチャートの一例である。
【０１５０】
ライト処理は、ＳＳＤ４００のフラッシュメモリパッケージ１０のＦＭコントローラ２０が、ＲＡＩＤコントローラ３０１から所定の論理アドレス（同図の説明において、指定論理アドレスという）が示す領域へのデータのライト要求を受信した場合に実行される。
【０１５１】
ＦＭコントローラ２０は、ＲＡＩＤコントローラ３０１からライト要求を受信すると、物論変換テーブル１１１に対して空ページ検索を行い（ステップＳ１）、空ページ中のいずれかのページを、データを格納するページに割り当てて、対応するデータを格納し、論物変換テーブル１１０の指定論理アドレスに対応するレコードのＦＭ番号１１０ｃ、ブロック番号１１０ｄ、及びページ番号１１０ｅを、割り当てたページに対応する値に更新する（ステップＳ２）。次いで、ＦＭコントローラ２０は、物論変換テーブル１１１を参照し、論理アドレス１１１ｅの値が指定論理アドレスであるレコードの状態１１１ｄが「有効」であるか否かを判定する（ステップＳ３）。
【０１５２】
この結果、「有効」である場合（ステップＳ３でＹＥＳ）には、当該レコードが示すページ（物理領域）のデータは、書き換え前のデータ（旧データ）であり、無効なデータとなるので、ＦＭコントローラ２０は、対応するレコードの状態１１１ｄを「有効」から「無効」に変更し（ステップＳ４）、処理をステップＳ５に進める。これにより、指定論理アドレスのデータを格納していたページは、無効の状態として管理されることとなる。一方、「有効」でない場合（ステップＳ３でＮＯ）には、ＦＭコントローラ２０は、処理をステップＳ５に進める。
【０１５３】
ステップＳ５では、ＦＭコントローラ２０は、物論変換テーブル１１１におけるステップＳ２で割り当てたページに対応するレコードの状態１１１ｄを「空き」から「有効」に変更し（ステップＳ５）、論物変換テーブル１１０の指定論理アドレスに対応するレコードの有効性１１０ｂを「有効」に変更し、処理を終了する。
【０１５４】
次に、ＳＳＤ４００におけるＦＭチップ３２のブロックのデータを消去するブロック消去処理について説明する。
【０１５５】
図３３は、実施例に係るブロック消去処理のフローチャートの一例である。
【０１５６】
ブロック消去処理は、例えば、ＦＭチップ３２における利用可能な容量の枯渇をＦＭコントローラ２０が検出したことを契機として、ＦＭコントローラ２０により実行される。容量の枯渇とは、空きブロックの数が所定割合（所定数）未満になったことを意味する。容量枯渇の検出は、任意の単位でよい。また、ブロック消去処理は、ＦＭコントローラ２０により所定の時間おきに定期的に実行されてもよい。
【０１５７】
ＦＭコントローラ２０は、処理対象とする物理ブロック番号を特定する（ステップＳ１０）。ここで、処理対象とする物理ブロック番号は、以前にブロック消去処理の対象としたブロックの次のブロックの番号としてもよい。
【０１５８】
次いで、ＦＭコントローラ２０は、物論変換テーブル１１１の特定した物理ブロック番号に対応するレコードを参照し、当該レコードの状態１１１ｄが無効、すなわち、対応するページが無効であるか否かを判定する（ステップＳ１１）。この結果、対応するページが無効でない場合（ステップＳ１１でＮＯ）には、当該ブロックには、有効ページが存在し、当該ブロックを消去することができないことを意味しているので、ブロック消去処理を終了する。
【０１５９】
一方、対応するページが無効である場合（ステップＳ１１でＹＥＳ）には、ＦＭコントローラ２０は、当該ブロックに対応する次のレコードがあるか否かを判定する（ステップＳ１２）。
【０１６０】
この判定の結果、当該ブロックに対応する次のレコードがある場合（ステップＳ１２でＹＥＳ）には、同一のページ又は、次のページについての状態を確認する必要があるので、ＦＭコントローラ２０は、処理をステップＳ１１に進める。一方、この判定の結果、当該ブロックに対応する次のレコードがない場合（ステップＳ１２でＮＯ）には、当該ブロックの全てのページが無効であることを意味するので、ＦＭコントローラ２０は、当該ブロックのデータを消去する（ステップＳ１３）。
【０１６１】
次いで、ＦＭコントローラ２０は、物論変換テーブル１１１を更新し（ステップＳ１４）、処理を終了する。ここで、具体的には、ＦＭコントローラ２０は、物論変換テーブル１１１のデータを消去したブロックの全てのページに対応するレコードの状態１１１ｄを「空き」に変更する。これにより、ＦＭチップ３２における空き容量を増やすことができる。
【０１６２】
次に、リクラメーション、すなわち、消去処理可能なブロックを生成する処理を説明する。
【０１６３】
図３４は、実施例に係るリクラメーションのフローチャートの一例である。
【０１６４】
リクラメーションは、例えば、ＦＭチップ３２における利用可能な容量の枯渇をＦＭコントローラ２０が検出したことを契機として、ＦＭコントローラ２０により実行される。容量の枯渇とは、空きブロックの数が所定割合（所定数）未満になったことを意味する。容量枯渇の検出は、任意の単位でよい。また、リクラメーションは、ＦＭコントローラ２０により所定の時間おきに定期的に実行されてもよい。
【０１６５】
ＦＭコントローラ２０は、有効なページを格納させる移動先（リクラメーション先という）とするブロックの物理ブロック番号を特定する（ステップＳ２１）。リクラメーション先とするブロックは、例えば、無効ページがなく、空ページが多いブロックとしてもよい。
【０１６６】
次いで、ＦＭコントローラ２０は、有効なページを移動させる移動元（リクラメーション元という）とするブロックの物理ブロック番号を特定する（ステップＳ２２）。リクラメーション元とするブロックは、例えば、空ページがなく、有効ページが所定数よりも少ないブロックとしてもよい。
【０１６７】
次いで、ＦＭコントローラ２０は、リクラメーション元のブロックに有効ページがあるか否かを判定する（ステップＳ２３）。この結果、有効ページがなければ（ステップＳ２３でＮＯ）、ＦＭコントローラ２０は、処理をステップＳ２２に進める。
【０１６８】
一方、有効ページがあれば（ステップＳ２３でＹＥＳ）、ＦＭコントローラ２０は、当該有効ページ（コピー元ページ）に格納されているデータを、リクラメーション先のブロックのページ（コピー先ページ）にコピーし（ステップＳ２４）、論物変換テーブル１１０、物論変換テーブル１１１を更新する（ステップＳ２５）。ここで、具体的には、ＦＭコントローラ２０は、物論変換テーブル１１１のコピー元ページに対応するレコードの状態１１１ｄを「無効」にし、論理アドレス１１１ｅをＮＵＬＬに設定するとともに、コピー先ページに対応するレコードの状態１１１ｄを、「有効」にし、論理アドレス１１１ｅに、コピー元の論理アドレス１１１ｅに格納されていた論理アドレスを設定する。また、ＦＭコントローラ２０は、論物変換テーブル１１０のコピー元のページが設定されているレコードについて、コピー先ページのＦＭ番号、ブロック番号、及びページ番号を設定する。
【０１６９】
次いで、ＦＭコントローラ２０は、リクラメーション先のブロックに空ページがあるか否かを判定し（ステップＳ２６）、空ページがある場合（ステップＳ２６でＹＥＳ）には、処理をステップＳ２３に進める一方、空ページがない場合（ステップＳ２６でＮＯ）には、リクラメーションを終了する。
【０１７０】
このリクラメーションにより、全てのページが無効となっているブロックを生成することができ、ブロック消去処理により、空きブロックにすることができ、ＦＭチップの空き容量を増加させることができるようになる。
【０１７１】
次に、動的領域割り当て処理について詳細に説明する。動的領域割り当て処理は、図１１に示した処理である。
【０１７２】
図３５は、実施例に係る動的領域割り当て処理のフローチャートの一例である。
【０１７３】
ＲＡＩＤコントローラ３０１は、ホスト２００からデータ（ライトデータ）のライト要求を受信すると（ステップＳ３１）、動的領域割り当てテーブル３５２の当該ライト要求により指定されている仮想ＶＯＬ番号のホスト論理アドレスに対応するレコードの状態３５２ｃが「未」であるか否か、すなわち、対応する領域にエクステントが割り当てられているか否かを判定する（ステップＳ３２）。
【０１７４】
この結果、レコードの状態３５２ｃが「未」でない場合（ステップＳ３２でＮＯ）には、当該領域に対して、エクステントが割り当てられていることを示しているので、ＲＡＩＤコントローラ３０１は、処理をステップＳ３５に進める。
【０１７５】
一方、レコードの状態３５２ｃが「未」である場合（ステップＳ３２でＹＥＳ）には、当該領域に対して、エクステントが割り当てられていないことを示しているので、ＲＡＩＤコントローラ３０１は、プール管理テーブル３５１からデバイスタイプ３５１ｂがＳＳＤであるレコードであって、状態３５１ｇが「空き」であるレコードを特定し、当該レコードの論理ＶＯＬ番号３５１ｃの論理ＶＯＬ番号の論理ボリュームにおける、論理アドレス３５１ｄの論理アドレスに対応するエクステントを、データのライト先のエクステントとして割り当て（ステップＳ３３）、割り当てに基づいて、動的領域割り当てテーブル３５２を更新する（ステップＳ３４）。具体的には、ＲＡＩＤコントローラ３０１は、動的領域割り当てテーブル３５２のレコードのプール番号３５２ｅ、論理ボリューム番号３５２ｆ、及び論理アドレス３５２ｇに、割当てられたエクステントに対応する値を設定し、状態３５２ｃに「済」を設定する。この後、ＲＡＩＤコントローラ３０１は、処理をステップＳ３５に進める。
【０１７６】
ステップＳ３５では、ＲＡＩＤコントローラ３０１は、割り当てられたエクステントを示す論理ＶＯＬ番号及び論理アドレスを指定して、ＳＳＤ４００にライトデータをライトさせるライト要求をＦＭコントローラ２０に送信することにより、ＳＳＤ４００にデータをライトする（ステップＳ３５）。なお、ＳＳＤ４００のＦＭコントローラ２０は、ライト要求を受信すると、図３２に示すライト処理を実行する。
【０１７７】
次に、動的エクステント領域割り当て処理について詳細に説明する。動的エクステント領域割り当て処理は、図１２に示した処理である。
【０１７８】
図３６は、実施例に係る動的エクステント領域割り当て処理のフローチャートの一例である。
【０１７９】
ＲＡＩＤコントローラ３０１は、ホスト２００からデータ（ライトデータ）のライト要求を受信すると（ステップＳ４１）、動的エクステント領域割り当てテーブル３５３を参照して、ライト先の領域に対応する状態３５３ｃが「未」であるか否か、すなわち、ライト先の領域にエクステントが割り当てられているか否かを判定する（ステップＳ４２）。
【０１８０】
この結果、レコードの状態３５３ｃが「未」でない場合（ステップＳ４２でＮＯ）には、ライト先の領域に対して、エクステントが割り当てられていることを示しているので、ＲＡＩＤコントローラ３０１は、処理をステップＳ４５に進める。
【０１８１】
一方、レコードの状態３５３ｃが「未」である場合（ステップＳ４２でＹＥＳ）には、ライト先の領域に対してエクステントが割り当てられていないことを示しているので、ＲＡＩＤコントローラ３０１は、プール管理テーブル３５１からデバイスタイプ３５１ｂがＳＳＤであるレコードであって、状態３５１ｇが「空き」である複数のレコードを特定し、これらレコードの論理ＶＯＬ番号３５１ｃの論理ＶＯＬ番号の論理ボリュームにおける、論理アドレス３５１ｄの論理アドレスに対応するエクステントを割り当て（ステップＳ４３）、割り当てに基づいて、動的エクステント領域割り当てテーブル３５３を更新する（ステップＳ４４）。具体的には、ＲＡＩＤコントローラ３０１は、動的エクステント領域割り当てテーブル３５３のレコードのプール番号３５３ｅ、論理ボリューム番号３５３ｆ、及び論理アドレス３５３ｇに、割当てられたエクステントに対応する値を設定し、状態３５３ｃに「済」を設定する。この後、ＲＡＩＤコントローラ３０１は、処理をステップＳ４５に進める。
【０１８２】
ステップＳ４５では、ＲＡＩＤコントローラ３０１は、割り当てられたエクステントにおける仮想ＶＯＬ番号のホスト論理アドレスに対応する論理ＶＯＬ番号及び論理アドレスを指定して、ライトデータをＳＳＤ４００にライトさせるライト要求をＦＭコントローラ２０に送信することにより、ＳＳＤ４００にデータをライトする（ステップＳ４５）。例えば、仮想ＶＯＬ番号が「0x0000」であり、ホスト論理アドレスが「0x00002000」の場合には、仮想ＶＯＬ番号が「0x0000」であり、ホスト論理アドレスが「0x00000000」のレコードを参照し、プール番号「０」、論理ＶＯＬ番号「0x0000」の論理ボリュームを割り当て先と決定する。さらに、割当て対象のホスト論理アドレス「0x00002000」と、当該レコードのホスト論理アドレス「0x00000000」の差である「0x00002000」を、当該レコードの論理アドレス「0x10000000」に対して加算したアドレス「0x10002000」を、仮想ボリュームに対して割り当てる論理ボリュームの論理アドレスに決定する。なお、ＳＳＤ４００のＦＭコントローラ２０は、ライト要求を受信すると、図３２に示すライト処理を実行する。
【０１８３】
次に、ティア間動的マイグレーションについて詳細に説明する。ティア間動的マイグレーションは、図１３に示した処理である。
【０１８４】
図３７は、実施例に係るティア間動的マイグレーションのフローチャートの一例である。
【０１８５】
ティア間動的マイグレーションは、例えば、定期的に実行される。ＲＡＩＤコントローラ３０１は、アクセス頻度テーブル３５４から１つのレコードを取得し、当該レコードが示す仮想ボリュームの領域（対象仮想ボリューム領域）のデータが格納されている現在のデバイスタイプ３５４ｃがＳＳＤ（ＳＳＤ４００のデバイスタイプ）であるか否かを判定する（ステップＳ５１）。この結果、デバイスタイプがＳＳＤでない場合（ステップＳ５１でＮＯ）には、ＲＡＩＤコントローラ３０１は、ティア間動的マイグレーションを終了する。
【０１８６】
一方、デバイスタイプがＳＳＤである場合（ステップＳ５１でＹＥＳ）には、ＲＡＩＤコントローラ３０１は、対応するレコードのアクセス頻度３５４ｄが「中」であるか否かを判定する（ステップＳ５２）。この結果、アクセス頻度３５４ｄが「中」でない場合（ステップＳ５２でＮＯ）には、ＲＡＩＤコントローラ３０１は、処理をステップＳ５７に進める。
【０１８７】
一方、アクセス頻度３５４ｄが「中」である場合（ステップＳ５２でＹＥＳ）には、ＲＡＩＤコントローラ３０１は、プール管理テーブル３５１からＨＤＤ（ＳＡＳ）５００の空きエクステントを検出して、当該空きエクステントを移動先エクステントとして割り当て（ステップＳ５３）、ＳＳＤ４００から対象仮想ボリューム領域に対応するデータを読み出して、割り当てたＨＤＤ（ＳＡＳ）５００のエクステントに移動させる（ステップＳ５４）。次いで、ＲＡＩＤコントローラ３０１は、ホストにとって不要になったデータが格納されている領域である不要領域（ここでは移動元のエクステント）に対応するページの数を低減させるための不要低減要求を、不要領域に割り当てられているページを有するＳＳＤ４００に送信する（ステップＳ５５）。ここで、不要低減要求とは、例えば、固定パターンデータのライト要求、又はアンマップ要求である。固定パターンデータのライト要求は、ライトデータサイズの固定パターンデータを含むライト要求であってもよく、また、固定パターンデータにおける１ページ分の部分データと、固定パターンデータのサイズを示すサイズ情報とを含むライト要求であってもよい。また、不要領域が、複数のＳＳＤ４００に属する場合には、ＲＡＩＤグループ３０１は、それら複数のＳＳＤ４００に不要低減要求を送信する。なお、不要低減要求を受信する側のＦＭコントローラ２０においては、後述する図４０乃至図４４のいずれかの処理が実行され、フラッシュメモリパッケージ１０における不要データの多くが無効データとされることとなる。
【０１８８】
次いで、ＲＡＩＤコントローラ３０１は、動的領域割り当てテーブル３５２及びアクセス頻度テーブル３５４を更新する（ステップＳ５６）。具体的には、ＲＡＩＤコントローラ３０１は、動的領域割り当てテーブル３５２の対象仮想ボリューム領域に対応するレコードにおけるプール番号３５２ｅ、論理ＶＯＬ番号３５２ｆ、及び論理アドレス３５２ｇに、移動先として割り当てられたＨＤＤ（ＳＡＳ）の領域の値を設定し、アクセス頻度テーブル３５４の対象仮想ボリューム領域に対応するレコードにおける現在のデバイスタイプ３５４ｃに「ＳＡＳ」を設定する。その後、ＲＡＩＤコントローラ３０１は、ティア間動的マイグレーションを終了する。
【０１８９】
ステップＳ５７では、ＲＡＩＤコントローラ３０１は、対応するレコードのアクセス頻度３５４ｄが「低」であるか否かを判定する（ステップＳ５７）。この結果、アクセス頻度３５４ｄが「低」でない場合（ステップＳ５７でＮＯ）には、ＲＡＩＤコントローラ３０１は、ティア間動的マイグレーションを終了する。
【０１９０】
一方、アクセス頻度３５４ｄが「低」である場合（ステップＳ５７でＹＥＳ）には、ＲＡＩＤコントローラ３０１は、プール管理テーブル３５１からＨＤＤ（ＳＡＴＡ）６００の空きエクステントを検出して、当該空きエクステントを移動先エクステントとして割り当て（ステップＳ５８）、ＳＳＤ４００から対象仮想ボリューム領域に対応するデータを読み出して、割り当てたエクステントに対応する、ＨＤＤ（ＳＡＴＡ）６００の領域に、移動させる（ステップＳ５９）。次いで、ＲＡＩＤコントローラ３０１は、移動元のエクステントの基になっているＳＳＤ４００に不要低減要求を送信する（ステップＳ６０）。
【０１９１】
次いで、ＲＡＩＤコントローラ３０１は、動的領域割り当てテーブル３５２及びアクセス頻度テーブル３５４を更新する。具体的には、ＲＡＩＤコントローラ３０１は、動的領域割り当てテーブル３５２の対象仮想ボリューム領域に対応するレコードにおけるプール番号３５２ｅ、論理ＶＯＬ番号３５２ｆ、及び論理アドレス３５２ｇに、移動先として割り当てられたＨＤＤ（ＳＡＴＡ）６００の領域の値を設定し、アクセス頻度テーブル３５４の対象仮想ボリューム領域に対応するレコードにおける現在のデバイスタイプ３５４ｃに「ＳＡＴＡ」を設定する。その後、ＲＡＩＤコントローラ３０１は、ティア間動的マイグレーションを終了する。
【０１９２】
次に、スナップショット作成処理について詳細に説明する。スナップショット作成処理は図２１に示した処理である。
【０１９３】
図３８は、実施例に係るスナップショット作成処理のフローチャートの一例である。
【０１９４】
ＲＡＩＤコントローラ３０１は、ホスト２００からデータ（ライトデータ：新データ）のライト要求を受信すると（ステップＳ７１）、ペア管理テーブル３５５を参照して、当該ライト要求により指定されている仮想ＶＯＬ番号が、プライマリＶＯＬ番号３５５ａとして登録され、且つ有効性３５５ｂが有効であるレコードを検索することにより、スナップショットボリュームへコピーが必要であるか否かを判定する（ステップＳ７２）。
【０１９５】
この結果、コピーが必要でない場合（ステップＳ７２でＮＯ）には、処理をステップＳ７６に進める。一方、コピーが必要である場合（ステップＳ７２でＹＥＳ）には、ＲＡＩＤコントローラ３０１は、ライト要求により指定されている仮想ボリューム（プライマリボリューム）の領域に割当てられているエクステントに対応した、ＳＳＤ４００の領域から、格納されているデータ（旧データ）をキャッシュ３４０へステージングさせる（ステップＳ７３）。
【０１９６】
次いで、ＲＡＩＤコントローラ３０１は、ステップＳ７２でペア管理テーブル３５５から検索されたレコードから、スナップショットＶＯＬ番号を取得してスナップショットボリュームを特定し、旧データをプライマリボリュームからスナップショットボリュームへキャッシュ３４０間コピーを行う（ステップＳ７４）。
【０１９７】
次いで、ＲＡＩＤコントローラ３０１は、旧データをキャッシュ３４０からスナップショットボリュームに割り当てられている物理領域（ここでは、ＳＳＤ４００のＦＭチップ３２の記憶領域）にデステージし（ステップＳ７５）、処理をステップＳ７６に進める。ステップＳ７６では、ＲＡＩＤコントローラ３０１は、新データをプライマリボリュームの対応する領域にライトし（ステップＳ７６）、処理を終了する。
【０１９８】
次に、スナップショット削除処理について詳細に説明する。スナップショット削除処理は図２３に示した処理である。
【０１９９】
図３９は、実施例に係るスナップショット削除処理のフローチャートの一例である。
【０２００】
ＲＡＩＤコントローラ３０１は、ホスト２００からスナップショットを削除する要求（スナップショット削除要求）を受領すると（ステップＳ８１）、スナップショット削除要求に含まれているプライマリＶＯＬ番号及びＩＤとに基づいて、ペア管理テーブル３５５の対応するレコードを特定し、スナップショットＶＯＬ番号を特定した後、当該レコードの有効性３５５ｂを無効に変更する（ステップＳ８２）。
【０２０１】
次いで、ＲＡＩＤコントローラ３０１は、スナップショットデータ割り当てテーブル３５６から、特定したスナップショットＶＯＬ番号が格納されているレコードの中から未処理の１つのレコードを特定し、当該レコードに状態３５６ｃが「済」であるか否か、すなわち、スナップショットＶＯＬ番号に対応するスナップショットボリュームにプールの領域が割り当てられているか否かを判定する（ステップＳ８３）。
【０２０２】
この結果、プールの領域が割り当てられていない場合、すなわち状態３５６ｃが「未」の場合（ステップＳ８３でＮＯ）には、スナップショットボリュームのデータが、ＳＳＤ４００に格納されていないことを示しているので、ＲＡＩＤコントローラ３０１は、スナップショット削除処理を終了する。
【０２０３】
一方、この結果、プールの領域が割り当てられている場合、すなわち状態３５６ｃが「済」の場合（ステップＳ８３でＹＥＳ）には、スナップショットボリュームのデータ（すなわち、不要データ）が、ＳＳＤ４００に格納されていることを示しているので、ＲＡＩＤコントローラ３０１は、当該レコードからプール番号、論理ＶＯＬ番号、及び論理アドレスを取得し、プール番号、論理ＶＯＬ番号、及び論理アドレスを使用して、プール管理テーブル３５１から、対応するレコードを特定し、特定したレコードの物理ＶＯＬ番号に対応するＳＳＤ４００のフラッシュメモリパッケージ１０に、不要低減要求を送信する（ステップＳ８４）。ここで、不要低減要求とは、例えば、固定パターンデータのライト要求、又はアンマップ要求である。固定パターンデータのライト要求は、ライトデータサイズの固定パターンデータを含むライト要求であってもよく、また、固定パターンデータにおける１ページ分の部分データと、固定パターンデータのサイズを示すサイズ情報とを含むライト要求であってもよい。なお、不要低減要求を受信する側のフラッシュメモリパッケージ１０のＦＭコントローラ２０においては、後述する図４０乃至図４４のいずれかの処理が実行され、フラッシュメモリパッケージにおける不要データのデータ量が低減されることとなる。
【０２０４】
次いで、ＲＡＩＤコントローラ３０１は、スナップショットデータ割り当てテーブル３５６において、ステップＳ８３で特定したレコードを削除するとともに、ページ管理テーブル３５１において特定したレコードの状態３５１ｇを「空き」に変更し（ステップＳ８５）、処理をステップＳ８３に進め、スナップショットボリュームの他の領域を対象に同様な処理を繰り返し実行する。
【０２０５】
上記したスナップショット削除処理によると、ＳＳＤ４００に格納されているスナップショットの削除に係るスナップショットボリュームのデータ（不要データ）のデータ量を低減することができる。
【０２０６】
次に、不要低減要求を受信する側のＦＭコントローラ２０における処理の例を図４０乃至図４４を参照して詳細に説明する。
【０２０７】
図４０は、実施例に係る第１の例の固定パターンデータライト処理のフローチャートの一例である。
【０２０８】
この第１の例の固定パターンデータライト処理は、図１５に示した固定パターンデータライト処理である。
【０２０９】
この例においては、ＲＡＩＤコントローラ３０１からは、論理ボリュームの領域に対して、ライトデータのサイズ（例えば、２４ＫＢ）の固定パターンデータ１０５１を書き込ませるライト要求が送信されているものとする。
【０２１０】
ＳＳＤ４００のフラッシュメモリパッケージ１０のＦＭコントローラ２０は、ＲＡＩＤコントローラ３０１から送信されたライト要求を受領すると（ステップＳ９１）、ライト要求の対象のデータ（ライトデータ）が固定パターンデータであるか否かを判定する（ステップＳ９２）。
【０２１１】
この結果、ライトデータが固定パターンデータでない場合（ステップＳ９２でＮＯ）には、ＦＭコントローラ２０は、固定パターンデータライト処理を終了する。なお、このデータに対しては、通常のデータライト処理が実行されることとなる。
【０２１２】
一方、ライトデータが固定パターンデータである場合（ステップＳ９２でＹＥＳ）には、ＦＭコントローラ２０は、物論変換テーブル１１１を参照し、空ページを検索し（ステップＳ９３）、検索により得られた空ページ（ライト先共通ページ）に対して、固定パターンデータの１ページ分のデータをライトする（ステップＳ９４）。次いで、ＦＭコントローラ２０は、論物変換テーブル１１０及び物論変換テーブル１１１を更新する（ステップＳ９５）。
【０２１３】
具体的には、ＦＭコントローラ２０は、物論変換テーブル１１１のライト対象の論理領域に属する論理アドレスに対応付けられている複数のページ（ここでは、例えば、３ページ）に対応するレコードにおいて、状態１１１ｄを無効とする。これにより、ライト対象の論理領域に割り当てられていた複数のページが無効として管理されるようになる。このため、当該ページのデータが、リクラメーションやリフラッシュにおいて、他のページにコピー等されることがなくなるとともに、以降にブロック消去処理を経て、空きページとして利用できることとなる。なお、当該ページを含むブロックのすべてのページが無効となっている場合には、この時点に、当該ブロックの消去を実行して、当該ブロックの全てのページを空ページとするようにしてもよい。このようにすると、空き容量を迅速に増加させることができる。
【０２１４】
また、ＦＭコントローラ２０は、物論変換テーブル１１１のライト先共通ページに対応する複数（ここでは、３つ）のレコードにおける状態１１１ｄを有効に設定し、各レコードの論理アドレス１１１ｅにライト対象の論理領域をページサイズに分割した場合のそれぞれの部分領域に対応する論理アドレスを設定する。これにより、１つのページ（ライト先共通ページ）に対して、ライト対象の論理領域のページサイズに分割した部分領域がそれぞれ割り当てられて管理されることとなる。
【０２１５】
また、ＦＭコントローラ２０は、論物変換テーブル１１０のライト対象の論理領域を示す論理アドレスに対応する複数（この例では、３つ）のレコードにおけるＦＭ番号１１０ｃ、ブロック番号１１０ｄ、及びページ番号１１０ｆを、ライト先共通ページに対応する値に設定する。これにより、ライト対象の論理領域に格納されたデータを、１つのページ（ライト先共通ページ）から取得することができるようになる。これは、固定パターンデータにおける、ページサイズの複数の部分データが同一であるという特徴により実現できる。
【０２１６】
ステップＳ９５の後、ＦＭコントローラ２０は、処理を終了する。
【０２１７】
図４１は、実施例に係る第２の例の固定パターンデータライト処理のフローチャートの一例である。
【０２１８】
この第２の例の固定パターンデータライト処理は、図１６に示した固定パターンデータライト処理である。
【０２１９】
この例においては、ＲＡＩＤコントローラ３０１からは、論理ボリュームの領域に対して、ライトデータのサイズ（例えば、２４ＫＢ）の固定パターンデータ１０５１を書き込ませるライト要求が送信されるものとする。
【０２２０】
ＳＳＤ４００のフラッシュメモリパッケージ１０のＦＭコントローラ２０は、ＲＡＩＤコントローラ３０１から送信されたライト要求を受領すると（ステップＳ１０１）、ライト要求の対象のデータ（ライトデータ）が固定パターンデータであるか否かを判定する（ステップＳ１０２）。
【０２２１】
この結果、ライトデータが固定パターンデータでない場合（ステップＳ１０２でＮＯ）には、ＦＭコントローラ２０は、固定パターンデータライト処理を終了する。なお、このデータに対しては、通常のデータライト処理が実行されることとなる。
【０２２２】
一方、ライトデータが固定パターンデータである場合（ステップＳ１０２でＹＥＳ）には、ＦＭコントローラ２０は、物論変換テーブル１１１を参照し、空ページを検索して、空ページ（ライト先共通ページ）を取得する（ステップＳ１０３）。次いで、ＦＭコントローラ２０は、論物変換テーブル１１０及び物論変換テーブル１１１を更新する（ステップＳ１０４）。
【０２２３】
具体的には、ＦＭコントローラ２０は、物論変換テーブル１１１のライト対象の論理領域に属する論理アドレスに対応付けられている複数のページ（ここでは、例えば、３ページ）に対応するレコードにおいて、状態１１１ｄを無効とする。これにより、ライト対象の論理領域に割り当てられていた複数のページが無効として管理されるようになる。このため、当該ページのデータが、リクラメーションやリフラッシュにおいて、他のページにコピー等されることがなくなるとともに、以降にブロックの消去を経て、空きページとして利用できることとなる。なお、当該ページを含むブロックのすべてのページが無効となっている場合には、この時点に、当該ブロックの消去を実行して、当該ブロックの全てのページを空ページとするようにしてもよい。このようにすると、空き容量を迅速に増加させることができる。
【０２２４】
また、ＦＭコントローラ２０は、物論変換テーブル１１１のライト先共通ページに対応する複数（ここでは、３つ）のレコードにおける状態１１１ｄを有効に設定し、各レコードの論理アドレス１１１ｅにライト対象の論理領域をページサイズに分割したそれぞれの部分領域に対応する論理アドレスを設定する。これにより、１つのページ（ライト先共通ページ）に対して、ライト対象の論理領域のページサイズに分割した部分領域がそれぞれ割り当てられて管理されることとなる。
【０２２５】
また、ＦＭコントローラ２０は、論物変換テーブル１１０のライト対象の論理領域を示す論理アドレスに対応する複数（この例では、３つ）のレコードにおけるＦＭ番号１１０ｃ、ブロック番号１１０ｄ、及びページ番号１１０ｆを、ライト先共通ページに対応する値に設定し、データパターン１１０ｆに、固定パターンデータを特定できるパターンデータ（ここでは、“０”）を格納する。これにより、ライト対象の論理領域に格納されたデータを、１つのページ（ライト先共通ページ）に対応付けることができる。これは、固定パターンデータにおけるページサイズの複数の部分データが同一であるという特徴により実現できる。なお、対応する論理領域に対してリード要求が来た場合には、１つのレコードのデータパターン１１０ｆに格納されたパターンデータに基づいて、固定パターンデータの１ページ分が作成され、複数のレコードに基づいて、固定パターンデータの全体が作成される。
【０２２６】
ステップＳ１０４の後、ＦＭコントローラ２０は、処理を終了する。
【０２２７】
図４２は、実施例に係る第３の固定パターンデータライト処理のフローチャートの一例である。
【０２２８】
この第３の例の固定パターンデータライト処理は、図１７に示した固定パターンデータライト処理である。
【０２２９】
この例においては、ＲＡＩＤコントローラ３０１からは、論理ボリュームの領域に対して、ライトデータのサイズ（例えば、２４ＫＢ）の固定パターンデータ１０５１を書き込む要求として、固定パターンデータ１０５１を分割したページサイズの部分データと、固定パターンデータ１０５１の全体のサイズを示すサイズ情報とを含むライト要求（固定パターンデータ指示付きライト要求）が送信されるものとする。したがって、ＲＡＩＤコントローラ３０１から、ＳＳＤ４００に対して送信するデータ量を低減することができる。
【０２３０】
ＳＳＤ４００のフラッシュメモリパッケージ１０のＦＭコントローラ２０は、ＲＡＩＤコントローラ３０１から送信された固定パターンデータ指示付きライト要求を受領すると（ステップＳ１１１）、物論変換テーブル１１１を参照し、空ページを検索し（ステップＳ１１２）、検索により得られた空ページ（ライト先共通ページ）に対して、固定パターンデータの１ページ分のデータをライトする（ステップＳ１１３）。次いで、ＦＭコントローラ２０は、論物変換テーブル１１０及び物論変換テーブル１１１を更新する（ステップＳ１１４）。
【０２３１】
具体的には、ＦＭコントローラ２０は、ライト対象の論理領域を、ライト要求中のサイズ情報に基づいて特定し、物論変換テーブル１１１のライト対象の論理領域に属する論理アドレスに対応付けられている複数のページ（ここでは、例えば、３ページ）に対応するレコードにおいて、状態１１１ｄを無効とする。これにより、ライト対象の論理領域に割り当てられていた複数のページが無効として管理されるようになる。このため、当該ページのデータが、リクラメーションやリフラッシュにおいて、他のページにコピー等されることがなくなるとともに、以降にブロックの消去を経て、空きページとして利用できることとなる。なお、当該ページを含むブロックのすべてのページが無効となっている場合には、この時点に、当該ブロックの消去を実行して、当該ブロックの全てのページを空ページとするようにしてもよい。このようにすると、空き容量を迅速に増加させることができる。
【０２３２】
また、ＦＭコントローラ２０は、物論変換テーブル１１１のライト先共通ページに対応する複数（ここでは、３つ）のレコードにおける状態１１１ｄを有効に設定し、各レコードの論理アドレス１１１ｅにライト対象の論理領域をページサイズに分割した場合のそれぞれのページに対応する論理アドレスを設定する。これにより、１つのページ（ライト先共通ページ）に対して、ライト対象の論理領域のページサイズに分割した部分領域がそれぞれ割り当てられて管理されることとなる。
【０２３３】
また、ＦＭコントローラ２０は、論物変換テーブル１１０のライト対象の論理領域を示す論理アドレスに対応する複数（この例では、３つ）のレコードにおけるＦＭ番号１１０ｃ、ブロック番号１１０ｄ、及びページ番号１１０ｆを、ライト先共通ページに対応する値に設定する。これにより、ライト対象の論理領域に格納されたデータを、１つのページ（ライト先共通ページ）から取得することができるようになる。これは、固定パターンデータにおけるページサイズの複数の部分データが同一であるという特徴により実現できる。
【０２３４】
図４３は、実施例に係る第４の固定パターンデータライト処理のフローチャートの一例である。
【０２３５】
この第４の例の固定パターンデータライト処理は、図１８に示した固定パターンデータライト処理である。
【０２３６】
この例においては、ＲＡＩＤコントローラ３０１からは、論理ボリュームの領域に対して、ライトデータのサイズ（例えば、２４ＫＢ）の固定パターンデータ１０５１を書き込む要求として、固定パターンデータ１０５１を分割したページサイズの部分データと、固定パターンデータ１０５１のサイズを示すサイズ情報とを含むライト要求（固定パターンデータ指示付きライト要求）が送信されるものとする。したがって、ＲＡＩＤコントローラ３０１から、ＳＳＤ４００に対して送信するデータ量を低減することができる。
【０２３７】
ＳＳＤ４００のフラッシュメモリパッケージ１０のＦＭコントローラ２０は、ＲＡＩＤコントローラ３０１から送信された固定パターンデータ指示付きライト要求を受領すると（ステップＳ１２１）、物論変換テーブル１１１を参照し、空ページを検索して、空ページ（ライト先共通ページ）を取得する（ステップＳ１２２）。次いで、ＦＭコントローラ２０は、論物変換テーブル１１０及び物論変換テーブル１１１を更新する（ステップＳ１２３）。
【０２３８】
具体的には、ＦＭコントローラ２０は、ライト対象の論理領域を、ライト要求中のサイズ情報に基づいて特定し、物論変換テーブル１１１のライト対象の論理領域に属する論理アドレスに対応付けられている複数のページ（ここでは、例えば、３ページ）に対応するレコードにおいて、状態１１１ｄを無効とする。これにより、ライト対象の論理領域に割り当てられていた複数のページが無効として管理されるようになる。このため、当該ページのデータが、リクラメーションやリフラッシュにおいて、他のページにコピー等されることがなくなるとともに、以降にブロックの消去を経て、空きページとして利用できることとなる。なお、当該ページを含むブロックのすべてのページが無効となっている場合には、この時点に、当該ブロックの消去を実行して、当該ブロックの全てのページを空ページとするようにしてもよい。このようにすると、空き容量を迅速に増加させることができる。
【０２３９】
また、ＦＭコントローラ２０は、物論変換テーブル１１１のライト先共通ページに対応する複数（ここでは、３つ）のレコードにおける状態１１１ｄを有効に設定し、各レコードの論理アドレス１１１ｅにライト対象の論理領域をページサイズに分割した複数の部分領域のそれぞれに対応する論理アドレスを設定する。これにより、１つのページ（ライト先共通ページ）に対して、ライト対象の論理領域のページサイズの複数の部分領域がそれぞれ割り当てられて管理されることとなる。
【０２４０】
また、ＦＭコントローラ２０は、論物変換テーブル１１０のライト対象の論理領域を示す論理アドレスに対応する複数（この例では、３つ）のレコードにおけるＦＭ番号１１０ｃ、ブロック番号１１０ｄ、及びページ番号１１０ｆを、ライト先共通ページに対応する値に設定し、データパターン１１０ｆに、固定パターンデータを特定できるパターンデータ（ここでは、“０”）を格納する。これにより、ライト対象の論理領域に格納されたデータを、１つのページ（ライト先共通ページ）に対応付けることができる。これは、固定パターンデータにおけるページサイズの複数の部分データが同一であるという特徴により実現できる。なお、対応する論理領域に対してリード要求が来た場合には、１つのレコードのデータパターン１１０ｆに格納されたパターンデータに基づいて、固定パターンデータの１ページ分が作成され、複数のレコードに基づいて、固定パターンデータの全体が作成される。
【０２４１】
図４４は、実施例に係るアンマップ要求処理のフローチャートの一例である。
【０２４２】
ＳＳＤ４００のフラッシュメモリパッケージ１０のＦＭコントローラ２０は、ＲＡＩＤコントローラ３０１から送信されたアンマップ要求を受領すると（ステップＳ１３１）、アンマップ要求１９０１の論理アドレス１９０２及びデータ長１９０３の値に基づいて、対応する論理アドレスの記憶領域の範囲（無効化範囲）を特定し（ステップＳ１３２）、論物変換テーブル１１０、物論変換テーブル１１１を更新する（ステップＳ１３３）。
【０２４３】
具体的には、ＦＭコントローラ２０は、物論変換テーブル１１１の無効化範囲に属する領域を示す論理アドレスに対応付けられている複数のレコードにおける状態１１１ｄを無効に設定する。これにより、無効化範囲に属する複数のページが無効として管理されるようになる。このため、当該ページのデータが、リクラメーションやリフラッシュにおいて、他のページにコピー等されることがなくなるとともに、以降にブロックの消去を経て、空きページとして利用できることとなる。
【０２４４】
また、ＦＭコントローラ２０は、論物変換テーブル１１０の無効化範囲に属する領域を示す論理アドレスに対応付けられているレコードにおいて、状態１１１ｄを無効と設定する。これにより、無効化範囲に属する領域の論理アドレスは、ページが割り当てられていない状態として管理されることとなる。
【０２４５】
このアンマップ要求処理によると、不要なデータが格納されているページを無効ページとすることができ、以降に実行されるブロック消去処理を経て、空きページとして利用できるようになる。
【０２４６】
以上、一実施例を説明したが、本発明は、この実施例に限定されるものでなく、その趣旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０２４７】
例えば、上記実施例では、不揮発半導体メモリの一例として、ＮＡＮＤ型のフラッシュメモリが採用されているが、不揮発半導体メモリは、これに限られない。例えば、不揮発半導体メモリは、相変換メモリでもよい。
【０２４８】
また、上記実施例では、不要データがＳＳＤ４００に発生する例として、ティア間動的マイグレーションと、スナップショット削除処理とを示していたが、この例に限らず、不要データが発生する場合であれば、本発明を適用することができる。
【０２４９】
また、例えば、ＲＡＩＤコントローラ３０１が、フラッシュメモリパッケージ１０に、固定パターンデータ又は部分データを送信することに代えて、固定パターンデータのライト先領域の論理アドレスを通知し、ＦＭコントローラ２０が、固定パターンデータ又は部分データを作成し、そのデータを、通知された論理アドレスの指定された領域に割り当てる物理領域に書き込んでもよい。
【符号の説明】
【０２５０】
１…ストレージシステム、１０…フラッシュメモリＰＫＧ、４００…ＳＳＤ
【図１】
0005882467.tif 000002
【図２】
0005882467.tif 000003
【図３】
0005882467.tif 000004
【図４】
0005882467.tif 000005
【図５】
0005882467.tif 000006
【図６】
0005882467.tif 000007
【図７】
0005882467.tif 000008
【図８】
0005882467.tif 000009
【図９】
0005882467.tif 000010
【図１０】
0005882467.tif 000011
【図１１】
0005882467.tif 000012
【図１２】
0005882467.tif 000013
【図１３】
0005882467.tif 000014
【図１４】
0005882467.tif 000015
【図１５】
0005882467.tif 000016
【図１６】
0005882467.tif 000017
【図１７】
0005882467.tif 000018
【図１８】
0005882467.tif 000019
【図１９】
0005882467.tif 000020
【図２０】
0005882467.tif 000021
【図２１】
0005882467.tif 000022
【図２２】
0005882467.tif 000023
【図２３】
0005882467.tif 000024
【図２４】
0005882467.tif 000025
【図２５】
0005882467.tif 000026
【図２６】
0005882467.tif 000027
【図２７】
0005882467.tif 000028
【図２８】
0005882467.tif 000029
【図２９】
0005882467.tif 000030
【図３０】
0005882467.tif 000031
【図３１】
0005882467.tif 000032
【図３２】
0005882467.tif 000033
【図３３】
0005882467.tif 000034
【図３４】
0005882467.tif 000035
【図３５】
0005882467.tif 000036
【図３６】
0005882467.tif 000037
【図３７】
0005882467.tif 000038
【図３８】
0005882467.tif 000039
【図３９】
0005882467.tif 000040
【図４０】
0005882467.tif 000041
【図４１】
0005882467.tif 000042
【図４２】
0005882467.tif 000043
【図４３】
0005882467.tif 000044
【図４４】
0005882467.tif 000045
【図４５】
0005882467.tif 000046