(57)【特許請求の範囲】
【請求項１】
不揮発性記憶媒体を備えるストレージと、
前記ストレージに対してデータの入出力を行うストレージ制御装置と
を有し、
前記ストレージ制御装置は、
前記ストレージに対するデータの入出力に使用される情報である管理情報を記憶するメモリと、
前記ストレージへのアクセスを制御する制御部と、
を有し、
前記制御部は、
（Ａ）前記メモリに記憶されている前記管理情報を、ベースイメージとして前記ストレージに蓄積し、
（Ｂ）前記ベースイメージが前記ストレージに蓄積されたとき以降において前記管理情報が更新されたとき、その更新に関する情報を含むジャーナルを生成し、生成した前記ジャーナルを前記メモリに蓄積し、
（Ｃ）前記メモリ内に蓄積した複数の前記ジャーナルから構成されるジャーナル群が所定量を超えた場合、当該ジャーナル群を前記ストレージ内の第１のジャーナルリストにデステージし、
（Ｄ）前記第１のジャーナルリストを前記ベースイメージに反映し、
（Ｅ）前記第１のジャーナルリストを前記ベースイメージに反映している間、前記メモリに蓄積した複数の前記ジャーナルから構成されるジャーナル群が所定量を超えた場合、当該ジャーナル群を前記ストレージ内の第２のジャーナルリストにデステージする
ストレージシステム。
【請求項２】
前記不揮発性記憶媒体は、フラッシュメモリチップであって、
前記ストレージは、１又は複数の前記フラッシュメモリチップを有するフラッシュメモリであり、
前記管理情報は、データ論物変換テーブルであって、
前記データ論物変換テーブルは、前記フラッシュメモリ内の分割された領域に対応付けられている物理アドレスと、前記物理アドレスに対応付けられている論理アドレスとの対応関係を有するテーブルであり、
前記ジャーナルは、或る領域の論理アドレスと、当該論理アドレスに対応付けられる更新後の物理アドレスとを含む情報である
ことを特徴とする請求項１記載のストレージシステム。
【請求項３】
前記ストレージシステムは、一次電源と、前記一次電源からの電力の供給が停止したときに前記メモリ及び前記制御部に電力を供給する二次電源をさらに備え、
前記制御部は、前記一次電源からの電力の供給が停止したとき、前記メモリに前記生成したジャーナルが存在する場合、前記二次電源を用いて、当該ジャーナルを前記ストレージ内の前記第１のジャーナルリストにデステージし、
前記制御部は、
（Ｆ）前記ストレージに保持されている前記ベースイメージを前記メモリに読み出し、
（Ｇ）前記ストレージ内の前記第１のジャーナルリストに格納されているジャーナルを前記メモリに読み出し、前記メモリ上で前記ベースイメージに反映することにより、前記メモリに前記管理情報を復元する
ことを特徴とする請求項１記載のストレージシステム。
【請求項４】
前記ストレージシステムは、
前記第１のジャーナルリストを反映したベースイメージに対して、更に、前記第２のジャーナルリストを反映する
ことを特徴とする請求項１記載のストレージシステム。
【請求項５】
前記（Ｃ）の処理は、前記第１のジャーナルリストに含まれる前記ジャーナルの数が最大数に達したときに実行され、
前記第１及び第２のジャーナルリストの少なくとも１つについて、前記最大数を変更可能である
ことを特徴とする請求項４記載のストレージシステム。
【請求項６】
前記データ論物変換テーブルは複数のサブテーブルに分割されており、
前記分割されたサブテーブルごとに、前記ジャーナル群及び前記ベースイメージが対応付けられて前記ストレージに保持されており、
前記制御部は、
前記分割された複数のサブテーブルを前記メモリに復元中、前記複数のサブテーブルのいずれか１のサブテーブルに対する使用要求を受けた場合、前記使用要求を受けた１のサブテーブルを優先して復元する
ことを特徴とする請求項２記載のストレージシステム。
【請求項７】
前記ストレージは、データを保持可能なデータ領域と、前記データ領域に保持されるデータを管理する情報を保持可能であり前記データ領域よりも小さい領域である管理領域を備え、
前記制御部は、
前記データ領域に、前記ベースイメージと、前記ジャーナル群とを蓄積し、
前記管理領域に、前記ベースイメージの入出力に使用される情報と前記ジャーナル群の入出力に使用される情報とを蓄積する
ことを特徴とする請求項６記載のストレージシステム。
【請求項８】
不揮発性記憶媒体を備えるストレージに対してデータの入出力を行うストレージ方法であって、
前記ストレージへのアクセスを制御するストレージ制御装置が、
前記ストレージに対するデータの入出力に使用される情報である管理情報を記憶するメモリを有しており、
（Ａ）前記メモリに記憶されている前記管理情報を、ベースイメージとして前記ストレージに蓄積し、
（Ｂ）前記ベースイメージが前記ストレージに蓄積されたとき以降において前記管理情報が更新されたとき、その更新に関する情報を含むジャーナルを生成し、生成した前記ジャーナルを前記メモリに蓄積し、
（Ｃ）前記メモリ内に蓄積した複数の前記ジャーナルから構成されるジャーナル群が所定量を超えた場合、当該ジャーナル群を前記ストレージ内の第１のジャーナルリストにデステージし、
（Ｄ）前記第１のジャーナルリストを前記ベースイメージに反映し、
（Ｅ）前記第１のジャーナルリストを前記ベースイメージに反映している間、前記メモリに蓄積した複数の前記ジャーナルから構成されるジャーナル群が所定量を超えた場合、当該ジャーナル群を前記ストレージ内の第２のジャーナルリストにデステージする
ストレージ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データストレージ技術に関する。
【背景技術】
【０００２】
近年、半導体技術の進歩によって、不揮発性半導体メモリが開発されている。不揮発性半導体メモリの一つにフラッシュメモリがある。近年、フラッシュメモリを記憶媒体とするデータストレージシステム（以下「ストレージシステム」という）が開発されている。
【０００３】
次に、フラッシュメモリ（特に、例えば、ＮＡＮＤ型のフラッシュメモリ）の特性について説明する。フラッシュメモリは、複数の物理ブロックから構成されている。そして、物理ブロックは、複数の物理ページから構成されている。フラッシュメモリは、物理ページ単位でデータを書き換えることができない。したがって、ある物理ページのデータを書き換える場合、以下の処理が必要となる。
１）書き換え対象の物理ページを含む物理ブロックに保持されているデータを、いったん他の物理ページに退避させる。
２）書き換え対象の物理ページを含む物理ブロックのデータを全て消去する。
３）データを消去した書き換え対象の物理ページにデータを書き込む。
【０００４】
すなわち、フラッシュメモリにおいてデータを書き換える場合、いったんデータを消去しなければならない。しかし、フラッシュメモリの１つの物理ブロックのデータを消去するのに要する時間は、１つの物理ページにデータを書き込むのに要する時間と比較して、長い（例えば約一桁長い）。そこで、書き換えデータを、未使用の物理ページに書き込む方法が知られている。
【０００５】
しかしこの場合、データの書き換えが発生するたびに、フラッシュメモリ内の未使用の物理ページが消費されていく。そのため、未使用の物理ページが少なくなった場合、以下に述べるように、フラッシュメモリから不要なデータを消去して、未使用の物理ページを確保する必要がある。この処理を「リクラメーション」という。
１）消去対象の物理ブロックを特定する。
２）消去対象の物理ブロックが保持する有効なデータを、別の未使用の物理ページにコピーする。これにより、消去対象の物理ブロックにおける全ての物理ページに格納されているデータが無効なデータとなる。
３）消去対象の物理ブロックの全てのデータを消去する。
【０００６】
ところで、フラッシュメモリは、データ消去の回数に制限がある。１つの物理ブロックあたりのデータ消去回数の上限は、フラッシュメモリが有するメモリセルの種類によって異なるが、例えば、およそ１０万回であり、これ以上はデータの消去ができなくなる（或いは、データ消去回数が上限を超えた物理ブロックにデータを格納したとしてもそのデータを一定期間保持することができない）恐れがある。そのため、フラッシュメモリには、特定の物理ブロックが集中的に消去されないように各物理ブロックの消去を平準化する「平準化機能」が組み込まれている。
【０００７】
また、フラッシュメモリに保持されたデータは、時間が経過すると共に、読み出しエラーの発生確率が増加する。このような現象を「リテンションエラー」という。これを回避するために、フラッシュメモリには、一定時間が経過すると、物理ページのデータを別の物理ページに移動する、「リフレッシュ機能」が組み込まれている。
【０００８】
これら「リクラメーション」、「平準化機能」、及び「リフレッシュ機能」等を総称して「ウェアレベリング」という。
【０００９】
上述のフラッシュメモリに組み込まれている各種機能を実現するために、フラッシュメモリは、論理アドレスと物理アドレスの対応関係を示す論物変換テーブルを有する。そして、上位のインタフェースには論理アドレスを提示し、フラッシュメモリの物理アドレスを隠蔽する。そして、上位のインタフェースから指定された論理アドレスは、論物変換テーブルが参照され、対応する物理アドレスに変換される。例えば、上位のインタフェースから、ある論理アドレス「１」に対するデータ「Ａ」の書き込みが指示された場合、以下の処理が実行される。
１）フラッシュメモリの未使用の物理ページ「１０１」を特定する。
２）未使用の物理ページ「１０１」に、データ「Ａ」を書き込む。
３）論物変換テーブルにおいて、論理アドレス「１」の参照先を、データを書き込んだ物理ページ「１０１」の物理アドレスに変更する。
【００１０】
論物変換テーブルは、データの書き込みが発生するたびに更新される。すなわち、論物変換テーブルは、頻繁に更新されるので、一般的に、アクセス性能の高い（データの読み出し及び書き込み速度の速い）メインメモリに展開されて使用される。しかし、メインメモリに保持されたデータは、ストレージシステムの電源がオフされたときに消去される。よって、ストレージシステムの電源をオフにする際は、メインメモリに保持された論物変換テーブルを、フラッシュメモリに退避する必要がある。
【００１１】
特許文献１には、メインメモリに保持されているデータを高速にフラッシュメモリに退避する方法として、フラッシュメモリが多値メモリ（ＭＬＣ（Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ））である場合は、最下位ビットのみに書き込む高速モードを用いる方法が記載されている。
【００１２】
特許文献２には、論物変換テーブルをユーザデータと同じようにフラッシュメモリに格納し、フラッシュメモリに格納されたデータから論物変換テーブルを復元する方法が記載されている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００９-２８９０１４号公報
【特許文献２】特開平０８−０７７０７４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
データの入出力に使用される情報である管理情報（例えば、論物変換テーブル等）のデータサイズは、フラッシュメモリの容量の増加に比例して増大する。したがって、容量の大きいフラッシュメモリを備えるストレージステムでは、メインメモリに保持される管理情報を、フラッシュメモリに退避する処理に時間がかかる。
【００１５】
また、ストレージステムには、不意の電源オフに備えて、電源保持回路としてキャパシタやバッテリといった二次電源が備えられている。そして、不意の電源オフが発生したとき、ストレージステムは、二次電源からの電力を用いて、メインメモリに保持される管理情報を、フラッシュメモリに退避する。したがって、管理情報のデータサイズの増大に伴い、二次電源の容量（例えばキャパシタの静電容量）も大きくしなければならない。
上記の問題は、フラッシュメモリ以外のストレージを有し、ストレージ制御装置のメモリからストレージにデータを退避するようになっている種々のストレージシステムについても有りえる。
【００１６】
そこで、本発明の目的は、ストレージ制御装置のメモリに保持されるデータをストレージ制御装置からストレージに退避する処理にかかる時間を、短縮することである。
【００１７】
また、本発明の別の目的は、二次電源の容量の増大を抑制することである。
【課題を解決するための手段】
【００１８】
本発明の一実施形態に従うストレージシステムは、不揮発性記憶媒体を備えるストレージと、ストレージに対してデータの入出力を行うストレージ制御装置とを有する。ストレージ制御装置は、ストレージに対するデータの入出力に使用される情報である管理情報を記憶するメモリと、ストレージへのアクセスを制御する制御部とを有する。制御部は、メモリに記憶されている管理情報を、ベースイメージとしてストレージに蓄積し、ベースイメージが前記ストレージに蓄積された以降において管理情報が更新されたとき、その更新に関する情報を含むジャーナルを生成し、ジャーナルを複数のジャーナルから構成されるジャーナル群として前記ストレージに蓄積する。ジャーナルは、管理情報における更新箇所についての更新後の情報を含んでも良いし、管理情報における更新箇所についての更新前の情報を含んでも良い。
【００１９】
好適な実施形態では、ストレージシステムは、ストレージシステムの電源である一次電源からの電力の供給が停止したときにメモリ及び制御部に電力を供給する二次電源をさらに備えて良い。管理情報が、データ論物変換テーブルを含んで良い。データ論物変換テーブルは、前記ストレージの領域に対応付けられている物理アドレスと、その物理アドレスに対応付けられている論理アドレスとの対応関係を有するテーブルで良い。不揮発性記憶媒体が、フラッシュメモリチップであって良い。ストレージが、１又は複数のフラッシュメモリチップを有するフラッシュメモリで良い。制御部は、一次電源からの電力の供給が停止したとき、メモリに生成したジャーナルが存在する場合、二次電源を用いて、（１）当該ジャーナルをジャーナル群としてストレージに蓄積し、（２）ストレージに保持されているベースイメージをメモリに復元し、その後、（３）ストレージに保持されている前記ジャーナル群をベースイメージに反映し、それにより、メモリに管理情報を復元してもよい。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施例１に係るストレージシステムの構成を示す。
【図２】フラッシュメモリチップの内部構成を示す。
【図３】データ論物変換（ＬＰＴ）テーブルの更新の概要を示す。
【図４】データＬＰＴテーブルを復元するときの一例を示す。
【図５】各ＬＰＴテーブルとフラッシュメモリとの関係を示す。
【図６】メインメモリ上の論理アドレスとフラッシュメモリ上の物理アドレスの関係の具体例を示す。
【図７】メインメモリのデータをフラッシュメモリに退避する場合の動作概要を示す。
【図８】フラッシュメモリに退避したデータをメインメモリに復元する場合の動作概要を示す。
【図９】データＬＰＴテーブルの更新情報を記録する処理のフローチャートの一例を示す。
【図１０】ベースイメージ更新処理のフローチャートの一例を示す。
【図１１】電源オフ時にメインメモリに保持されているデータをフラッシュメモリに退避する処理のフローチャートの一例を示す。
【図１２】フラッシュメモリに退避したデータを電源オン時にメインメモリに復元する処理のフローチャートの一例を示す。
【図１３】データＬＰＴテーブルを復元するときの変形例を示す。
【図１４】ジャーナルリストのリスト最大数を設定変更するときの動作概要を示す。
【図１５】データＬＰＴテーブルを分割して管理する例を示す。
【図１６】第１〜第３のデータＬＰＴテーブルの退避及び復元の一例を示す。
【図１７】第１〜第３のジャーナルリストＬＰＴテーブルを復元する処理のフローチャートの一例を示す。
【図１８】データの復元中にホスト計算機からアクセスを受けた場合の処理概要の一例を示す。
【発明を実施するための形態】
【００２１】
以下、本発明の幾つかの実施例を説明する。
なお、以下の各実施例において、ストレージはフラッシュメモリであるが、本発明はこれに限定されず、例えば、ストレージ（不揮発性の物理的な記憶媒体）は他の不揮発性記憶媒体で構成されてもよい。
また、以下の説明では、「ｘｘｘテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ｘｘｘテーブル」を「ｘｘｘ情報」と呼ぶことができる。
【実施例１】
【００２２】
図１は、本発明の実施例１に係るストレージシステムの構成を示す。
【００２３】
ストレージシステムは、例えば、ストレージ制御装置１０と、フラッシュメモリ２０とを有する。ストレージ制御装置１０に、ホスト計算機３０が通信可能に接続されている。ホスト計算機３０に代えて又は加えて、他のストレージシステムのような他種の上位装置が接続されていても良い。
【００２４】
ホスト計算機３０は、例えば、ストレージ制御装置１０に対して書き込み及び読み出し（以下「Ｉ／Ｏ」という場合もある）コマンドを送信することにより、フラッシュメモリ２０にデータを書き込んだり、フラッシュメモリ２０からデータを読み出したりする。
【００２５】
フラッシュメモリ２０は、例えば、１又は複数のフラッシュメモリチップ（以下「ＦＭチップ」という）２１から構成される。ＦＭチップ２１は、いわゆる不揮発性半導体メモリであり、電力が供給されなくてもデータを保持できる。ＦＭチップが有する各メモリセルは、例えば、ＭＬＣ（Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ）であるが、他種のメモリセルでも良い。
【００２６】
ストレージ制御装置１０は、例えば、ホストインタフェース（以下「Ｈ−ＩＦ」という）１４、制御部１９、メインメモリ１３、電源検出回路１６、キャパシタ１７、及びフラッシュメモリインタフェース（以下「ＦＭ−ＩＦ」という）１５を備え、それぞれがバス１８で接続されている。制御部１９は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１２と、コントローラ１１とを含んでいる。
【００２７】
ＣＰＵ１２は、ストレージ制御装置１０の全体を制御するプロセッサであり、メインメモリ１３に格納されたコンピュータプログラム（以下「プログラム」という）を実行する。これにより、後述する各種機能が実現される。
【００２８】
コントローラ１１は、Ｈ−ＩＦ１４を介して、ホスト計算機３０等からＩ／Ｏコマンドを受け取る。コントローラ１１は、受け取ったＩ／Ｏコマンドに基づき、ＦＭ−ＩＦ１５を介して、そのＩ／Ｏコマンドに従ってデータを書き込む又は読み出すためのＩ／Ｏコマンドを、データの書込み先又は読出し元のＦＭチップ２１に送信する。つまり、コントローラ１１は、ＦＭチップ２１に対してデータのＩ／Ｏを行う。コントローラ１１は、ＣＰＵ１２に制御されて動作する。なお、図１では、コントローラ１１とＣＰＵ１２は別々の構成となっているが、例えば、コントローラ１１とＣＰＵ１２が１つのＬＳＩ（Ｌａｒｇｅ−ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）で構成されてもよい。また、コントローラ１１の機能が１以上のＣＰＵ１２で実現されても良い。
【００２９】
メインメモリ１３は、ＣＰＵ１２で実行されるプログラム及びデータを一時的に保持する。メインメモリ１３は、例えば、揮発性メモリであるＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成される。したがって、メインメモリ１３に保持されたデータは、メインメモリ１３に電力が供給されなくなると、消えてしまう。なお、
【００３０】
Ｈ−ＩＦ１４は、ホスト計算機３０に接続され、ホスト計算機３０とＩ／Ｏコマンド等のデータを送受信する。Ｈ−ＩＦ１４は、例えば、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）等のインタフェースである。
【００３１】
キャパシタ１７は、ストレージ制御装置１０の電源がオンのとき、ストレージ制御装置１０の電源（例えば商用電源）からの電力を蓄えておき、ストレージ制御装置１０の電源がオフになったとき、蓄えていた電力を放出する。放出された電力は、メインメモリ１３上のデータをフラッシュメモリ２０に退避させることに使用される。このため、放出された電力は、メインメモリ１３やメインメモリ１３からデータを退避するデバイス（例えばＣＰＵ１２）に供給される。
【００３２】
電源検出回路１６は、ストレージ制御装置１０の電源状態を監視する。そして、電源検出回路１６は、ストレージ制御装置１０の電源が不意にオフになったとき、キャパシタ１７に蓄えられている電力を放出させると共に、コントローラ１１に対してストレージ制御装置１０の電源が不意にオフになった旨を通知する。
【００３３】
図２は、フラッシュメモリチップの内部構成を示す。
【００３４】
１つのＦＭチップ２１は、１又は２以上のページバッファ４１と複数の物理ブロック３２から構成される。
【００３５】
ページバッファ４１は、ストレージ制御装置１０から受けたＩ／Ｏコマンドの対象データ（ページ単位で書き込まれる又は読み出されるデータ）を一時的に保持する。そして、ページバッファ４１に保持されたデータは、書き込み対象のデータであれば、物理ページ４３に書き込まれ、読み出し対象のデータであれば、ストレージ制御装置１０に転送される。
【００３６】
物理ブロック４２は、複数の物理ページ４３によって構成される。ＦＭチップ２１は、物理ページ４３の単位でデータを書き込み又は読み出し、物理ブロック４２の単位でデータを消去する。また、ＦＭチップ２１は、物理ページ４３に保持されているデータを、別のデータに書き換えることができない。したがって、物理ページ４３に保持されているデータを別のデータに書き換えるときは、まず、物理ページ４３を含む物理ブロック４２全体のデータを消去してから、物理ページ４３にデータを書き込む必要がある。ＦＭチップ２１の種類によるが、一般的に、物理ページ４３のサイズは、２ＫＢｙｔｅ、４ＫＢｙｔｅ、又は８ＫＢｙｔｅ程度であり、物理ブロック４２を構成する物理ページ４３のページ数は、１２８個又は２５６個程度である。
【００３７】
ストレージ制御装置１０は、フラッシュメモリ２０へのデータの入出力に使用される情報である管理情報を有する。管理情報は、例えば、メインメモリ１３の論理アドレスとフラッシュメモリ２０の物理アドレスの対応関係を示すテーブルであるデータ論物変換（以下「ＬＰＴ（Ｌｏｇｉｃａｌ  Ａｄｄｒｅｓｓ−Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）」という）テーブルである。そのデータＬＰＴテーブルは、例えば、図３に示す通りに更新される。管理情報は、ＬＰＴテーブルに限らない。例えば、管理情報は、論理ボリュームとＲＡＩＤグループとの対応関係（どの論理ボリュームがどのＲＡＩＤグループに基づいているか）を表す情報、又は、ＲＡＩＤグループとＦＭモジュールとの対応関係（どのＲＡＩＤグループがどの複数のＦＭモジュールで構成されているか）を表す情報であってもよい。
【００３８】
図３は、データ論物変換（ＬＰＴ）テーブルの更新の概要を示す。
【００３９】
データＬＰＴテーブル５１は、例えば、ユーザデータ５０の論理アドレス５２と物理アドレス５３の対応関係を保持する。ユーザデータ５０は、ホスト計算機３０からのＩ／Ｏコマンドに従って、フラッシュメモリ２０に書き込まれたり、フラッシュメモリ２０から読み出されたりするデータである。本実施例は、データＬＰＴテーブル５１における更新後部分（論理アドレスとその論理アドレスに対応する更新後の物理アドレスとのセット）をジャーナル７５の対象とする。しかし、本発明はこれに限られない。例えば、他のＬＰＴテーブルの更新後部分がジャーナル７５の対象とされてもよいし、ＬＰＴテーブルではなく一般的なデータ格納先アドレスとデータ値とのセットデータがジャーナル７５の対象とされてもよい。
【００４０】
更新情報７６は、データＬＰＴテーブル５１の更新に関する情報を有し、データＬＰＴテーブル５１の更新後部分に相当する。更新情報７６は、例えば、論理アドレス５２と更新後の物理アドレス５３とのセットを有する。更新情報７６は、例えば、データＬＰＴテーブル５１のトランザクションログである。更新情報７６は、データＬＰＴテーブル５１が更新されるたびに生成される。なお、更新情報７６は、さらに、データＬＰＴテーブル５１が更新されたときの時刻である更新時刻を保持してもよい。
【００４１】
ジャーナル７５は、１又は複数の更新情報７６から構成される。更新情報７６が生成されると、ジャーナル７５の末尾に追記される。したがって、ジャーナル７５は、更新情報７６を、古いものから新しいものの順番で保持する。更新情報７６は頻繁に生成されるので、ジャーナル７５は、アクセス速度の速いメインメモリ１３に保持されることが好ましい。
【００４２】
以下、図３を用いて、更新情報７６がジャーナル７５に追記されるときの具体例を述べる。まず、制御部１９が、データＬＰＴテーブル５１の論理アドレス５２「３」に対応する物理アドレス５３を「１０３」から「００３」に更新したとする。このとき、制御部１９は、論理アドレス５２「３」に対応する物理アドレス５３が「００３」に変更されたことを示す「３→００３」を有する更新情報７６ａを生成する。そして、制御部１９は、生成された更新情報７６ａを、ジャーナル７５の末尾に追記する。
【００４３】
これにより、ジャーナル７５には、データＬＰＴテーブル５１の更新履歴が保持される。なお、上記のデータＬＰＴテーブル５１の更新、更新情報７６の生成、及び、更新情報７６のジャーナル７５への追記は、ストレージ制御装置１０の制御部１９によって行われる。
【００４４】
図４は、データＬＰＴテーブルを復元するときの一例を示す。
【００４５】
データ論物変換テーブル５１とジャーナル７５はメインメモリ１３に保持される。ベースイメージ６０と、ジャーナルリスト７０はフラッシュメモリ２０に保持される。
【００４６】
メインメモリ１３に保持されるジャーナル７５は、あるタイミングで、フラッシュメモリ２０に保持されるジャーナルリスト７０にデステージされる（１０２）。このとき、ジャーナル７５は、ジャーナルリスト７０の末尾に追記される。あるタイミングとは、例えば、ジャーナル７５が所定のデータ量になったとき、及び／又は、電源オフの処理が開始されたとき等である。なお、デステージとは、メインメモリ１３に保持されているデータをフラッシュメモリ２０に格納することをいう。
【００４７】
ジャーナルリスト７０は、ジャーナル７５を更新時刻の順番にリストとして保持する（必ずしも更新時刻の順番で無くても良い）。すなわち、ジャーナルリスト７０には、更新情報７６が、古いものから新しいものの順番に保持される。ジャーナルリスト７０は、フラッシュメモリ２０に保持されるので、ストレージシステムの電源がオフされても消去されない。
【００４８】
ベースイメージ６０は、ある時刻（これを「第１の時刻」とする）におけるデータＬＰＴテーブル５１全体を、フラッシュメモリ２０にデステージしたデータである（１０１）。したがって、第１の時刻におけるデータＬＰＴテーブル５１は、ベースイメージ６０から復元できる。しかし、時刻毎にデータＬＰＴテーブル５１全体をベースイメージ６０としてデステージするには、それなりの時間を要する。よって、データＬＰＴテーブル５１をベースイメージ６０としてデステージしている途中に、ストレージシステムの電源がオフされる可能性がある。この場合、ベースイメージ６０のみからはデータＬＰＴテーブル５１を復元できない。
そこで、本実施例では、制御部１９は、時刻毎にデータＬＰＴテーブル５１全体をベースイメージ６０としてフラッシュメモリ２０にデステージするのではなく、第１の時刻でのデータＬＰＴテーブル５１全体をベースイメージ６０としてデステージした後は、第１の時刻でのデータＬＰＴテーブル５１との差分に相当するジャーナル７５をジャーナルリスト７０にデステージする。制御部１９は、第１の時刻より後に更新されたデータＬＰＴテーブル５１を、第１の時刻でのデータＬＰＴテーブル５１全体に相当するベースイメージ６０と、ジャーナルリスト７０内の更新情報７６とを用いて復元する。
【００４９】
具体的には、ジャーナルリスト７０には、データＬＰＴテーブル５１の更新情報７６が時系列に保持される。したがって、第１の時刻より後に更新されたデータＬＰＴテーブル５１であって或る時刻（以下、復元時刻）でのデータＬＰＴテーブル５１を復元したい場合は、制御部１９は、第１の時刻でのデータＬＰＴテーブル５１全体に相当するベースイメージ６０に、各論理アドレスについて、ジャーナルリスト７０のうちの、復元時刻より前の時刻であって復元時刻に最も近い時刻に生成された（又は復元時刻に生成された）更新情報７６を反映させる。これにより、復元時刻（例えば電源オフ時）におけるデータＬＰＴテーブル５１を復元することができる（１０３）。
【００５０】
図５は、各ＬＰＴテーブルとフラッシュメモリとの関係を示す。
【００５１】
ストレージ制御装置１０は、データＬＰＴテーブル５１の他に、ＬＰＴテーブルとして、ジャーナルリストＬＰＴテーブル７１と、ベースイメージＬＰＴテーブル６１を有する。
【００５２】
データＬＰＴテーブル５１は、前述のとおり、フラッシュメモリ２０に保持されるユーザデータ５０の論理アドレス５２と物理アドレス５３の対応関係を保持する。例えば、論理アドレス１１０ａが指定されたとき、制御部１９は、データＬＰＴテーブル５１を参照して、論理アドレス１１０ａに対応する物理アドレス４３ａを特定し、その物理アドレス４３ａに保持されているユーザデータ５０にアクセスする（１１１ａ）。
【００５３】
ジャーナルリストＬＰＴテーブル７１は、フラッシュメモリ２０に保持されるジャーナルリスト７０の論理アドレスと物理アドレスとの対応関係を保持する。例えば、論理アドレス１１０ｂが指定されたとき、制御部１９は、ジャーナルリストＬＰＴテーブル７１を参照して、論理アドレス１１０ｂに対応する物理アドレス４３ｂを特定し、その物理アドレス４３ｂに保持されている更新情報７６にアクセスする（１１１ｂ）。
【００５４】
ベースイメージＬＰＴテーブル６１は、フラッシュメモリ２０に保持されるベースイメージ６０の論理アドレスと物理アドレスとの対応関係を保持する。例えば、論理アドレス１１０ｃが指定されたとき、制御部１９は、ベースイメージＬＰＴテーブル６１を参照して、論理アドレス１１０ｃに対応する物理アドレス４３ｃを特定し、その物理アドレス４３ｃに保持されているペースイメージ６０にアクセスする（１１１ｃ）。
【００５５】
なお、論理アドレスは、図５に示すように、ＬＰＴテーブル５１、６１、７１ごとに独立したアドレス体系であってもよいし、ＬＰＴテーブル５１、６１、７１で一連のアドレス体系であってもよい。
【００５６】
図６は、メインメモリ上の論理アドレスとフラッシュメモリ上の物理アドレスの関係の具体例を示す。
【００５７】
例えば、論理アドレス「０」が属する領域に値「Ａ」を書き込む書き込みコマンド（１１０ｄ）を受けると（１２１ａ）、制御部１９は、データＬＰＴテーブル５１を参照し、論理アドレス「０」に対応する物理アドレス「００１」を特定する。そして、制御部１９は、フラッシュメモリ２０の物理アドレス「００１」の物理領域（物理ページ）（４３ｄ）に値「Ａ」を書き込む。
【００５８】
また、例えば、論理アドレス「２」が属する領域から値を読み出す読み出しコマンドを受けると、制御部１９は、データＬＰＴテーブル５１を参照し、論理アドレス「２」に対応する物理アドレス「２０２」を特定する。そして、制御部１９は、フラッシュメモリ２０の物理アドレス「２０２」の物理領域（４３ｅ）から値「Ｃ」を読み出して（１２２ｂ）、指示元に返す（１２２ａ）。
【００５９】
図７は、メインメモリのデータをフラッシュメモリに退避する場合の動作概要を示す。
【００６０】
メインメモリ１３は、データＬＰＴテーブル５１と、ベースイメージＬＰＴテーブル６１と、ジャーナルリストＬＰＴテーブル７１と、各種テーブル８１とを保持する。さらに、メインメモリ１３は、バッファ中のユーザデータ８２とジャーナル７５を保持する。
【００６１】
フラッシュメモリ２０には、管理領域２２とデータ領域２３が予め確保される。管理領域２２は、例えば、各物理ページ４３の冗長領域の集合で良い。データ領域２３は、例えば、各物理ページ４３のユーザ領域の集合で良い。各物理ページ４３は、ユーザデータ５０、ジャーナルリスト７０、及びベースイメージ６０等のデータが格納されるユーザ領域と、その種のデータ以外の情報が格納される冗長領域とで構成されていて良い。それに限らず、例えば、複数の或る物理ブロック４２で管理領域２２が構成され、複数の別の物理ブロック４２でデータ領域２３が構成されても良い。
【００６２】
管理領域２２には、データ領域２３に保持されるデータを管理するための情報が保持される。例えば、管理領域２２には、ジャーナルリストＬＰＴテーブル７１、及びベースイメージＬＰＴテーブル６１、及び各種情報テーブル８１等が保持される。情報テーブル８１としては、例えば、１以上のＦＭチップ２１と論理ボリューム（例えばホスト計算機３０に提供される論理ボリューム）との対応関係を表すテーブルがある。
【００６３】
データ領域２３には、各種データが保持される。例えば、データ領域２３には、ユーザデータ５０、ジャーナルリスト７０、及びベースイメージ６０等が保持される。データＬＰＴテーブル５１のイメージデータであるベースイメージ６１を、管理領域２２ではなくデータ領域２３に保持する理由は、データＬＰＴテーブル５１のデータサイズが大きいためである。
【００６４】
以下、図７を用いて、メインメモリ１３のデータをフラッシュメモリ２０に退避するときの処理の概要を述べる。
【００６５】
ストレージシステム１の電源がオフされると、メインメモリ１３に保持されているデータを、フラッシュメモリ２０に待避する処理が開始される。
【００６６】
例えば、制御部１９は、メインメモリ１３に保持されているジャーナルリストＬＰＴテーブル７１と、ベースイメージＬＰＴテーブル６１と、各情報テーブル８１を、フラッシュメモリ２０の管理領域２２にデステージ（１３１）する。
【００６７】
制御部１９は、メインメモリ１３にバッファリングされているユーザデータ８２を、データＬＰＴテーブル５１を参照して、データ領域２３にデステージ（１３３）される。データ領域２３内のユーザデータを「ユーザデータ５０」と示している。このとき、制御部１９は、データＬＰＴテーブル５１を更新した場合は、その更新に関する更新情報７６を生成し、その更新情報７６をジャーナル７５に追記する。
【００６８】
制御部１９は、メインメモリ１３に保持されているジャーナル７５を、データ領域２３のジャーナルリスト７０にデステージ（１３４）する。
【００６９】
制御部１９は、データＬＰＴテーブル５１を、ストレージシステムが電源オンの間、時々に（例えば定期的に）ベースイメージ６０としてデータ領域２３にデステージ（１３２）する。このため、制御部１９は、データＬＰＴテーブル５１を、この電源オフのときにデステージしない。
【００７０】
以上の処理により、ストレージ制御装置１０の電源がオフされたとき、メインメモリ１３上のデータはフラッシュメモリ２０上に退避される。
【００７１】
図８は、フラッシュメモリに退避したデータをメインメモリに復元する場合の動作概要を示す。
【００７２】
ストレージシステムの電源がオフのとき、管理領域２２には、ジャーナルリストＬＰＴテーブル７１と、ベースイメージＬＰＴテーブル６１と、各種情報テーブル８１が保持されている。データ領域２３には、ベースイメージ６０と、ユーザデータ５０と、ジャーナルリスト７０が保持されている。
【００７３】
ストレージシステム１の電源がオンされたとき、各ＬＰＴテーブルは、以下のようにして復元される。
【００７４】
まず、制御部１９は、管理領域２２から、ジャーナルリストＬＰＴテーブル７１と、ベースイメージＬＰＴテーブル６１と、各種情報テーブル８１を、メインメモリ１３上に読み出す（１４０）。これにより、メインメモリ１３上に、ジャーナルリストＬＰＴテーブル７１と、ベースイメージＬＰＴテーブル６１と、各種情報テーブル８１が復元される。
【００７５】
そして、制御部１９は、ベースイメージＬＰＴテーブル６１を参照することで（１３８）、データ領域２３におけるベースイメージ６０の位置を特定し、特定した位置からベースイメージ６０をメインメモリ１３上に読み出す（１３５）。これにより、メインメモリ１３上にデータＬＰＴテーブル５１が復元される。
【００７６】
そして、制御部１９は、ジャーナルリストＬＰＴテーブル７１を参照することにより（１３９）、ジャーナルリスト７０において更新時刻の古い順に並んだジャーナル７５の位置を特定する。制御部１９は、特定した位置からジャーナル７５を更新時刻の古い順にメインメモリ１３上に読み出し、そのジャーナル７５に保持される更新情報７６を、順次データＬＰＴテーブル５１に反映する（１３７）。
【００７７】
これにより、ベースイメージ６０を基に、電源オフ時のデータＬＰＴテーブル５１が復元される。
【００７８】
図９は、データＬＰＴテーブルの更新情報を記録する処理のフローチャートの一例を示す。
【００７９】
制御部１９は、データＬＰＴテーブル５１を更新する（Ｓ１０１）。
【００８０】
制御部１９は、その更新後の情報（論理アドレスと、その論理アドレスに対応する更新後の物理アドレスとのセット９を有する更新情報７６）を生成し、更新情報７６をジャーナル７５の末尾に追記する（Ｓ１０２）。
【００８１】
制御部１９は、ジャーナル７５のデステージが必要か否かを判定する（Ｓ１０３）。例えば、制御部１９は、ジャーナル７５に保持されている更新情報７６の数が、所定の数以上になった場合にデステージすると判断してもよい。または、制御部１９は、ジャーナル７５をデステージした最近の時刻（或いは、ジャーナル７５に更新情報７６を追記した最近の時刻）からの時間が所定の時間が経過した場合に、デステージするようにしてもよい。
【００８２】
ジャーナル７５のデステージは不要と判断した場合（Ｓ１０３：ＮＯ）、制御部１９は、当該処理を終了する。
【００８３】
ジャーナル７５のデステージが必要と判断した場合（Ｓ１０３：ＹＥＳ）、制御部１９は、ジャーナル７５を、フラッシュメモリ２０内のジャーナルリスト７０にデステージする（Ｓ１０４）。
【００８４】
制御部１９は、ジャーナルリストＬＰＴテーブル７１における、デステージされたジャーナル７５に関する情報を、更新する（Ｓ１０５）。
【００８５】
制御部１９は、ジャーナルリスト７０が更新情報７６で満杯か否かを判定する（Ｓ１０６）。例えば、制御部１９は、ジャーナルリスト７０に保持される更新情報７６の数が、所定の数（以下「リスト上限数」という）以上であれば、ジャーナルリスト７０が更新情報７６で満杯と判定してよい。また、制御部１９は、ジャーナルリスト７０にジャーナル７５をデステージした最近の時刻からの時間が所定の時間を経過していれば、ジャーナルリスト７０が更新情報７６で満杯と判定してもよい。また、制御部１９は、フラッシュメモリ２０に対する現在のＩ／Ｏ負荷が所定値より高ければ、ジャーナルリスト７０が更新情報７６で満杯と判定してよい。
【００８６】
ジャーナルリスト７０が満杯でない場合（Ｓ１０６：ＮＯ）、制御部１９は、当該処理を終了する。
【００８７】
ジャーナルリスト７０が満杯の場合（Ｓ１０６：ＹＥＳ）、制御部１９は、後述するベースイメージ６０更新処理を実行する（Ｓ１０７）。
【００８８】
なお、当該処理（図９に示した一連の処理）は、ストレージシステム１の電源がオンされている間、定期的に（或いは不定期的に）繰り返し実行される。
また、制御部１９は、メインメモリ１３内のジャーナル７５をフラッシュメモリ２０内のジャーナルリスト７０にデステージすることが完了した場合、ジャーナル７５内の全ての更新情報７６を消去して良い。これにより、デステージ済みの更新情報７６と同じ更新情報７６がフラッシュメモリ２０にデステージされて、フラッシュメモリ２０に重複した更新情報７６が記憶されてしまうことを防ぐことができる。もし、ジャーナル７５のデステージの際に、ジャーナル７５内に、デステージ済みの更新情報７６と同じ更新情報７６が残っている場合には、その更新情報７６についてのみデステージがスキップされても良いし、デステージ済みの更新情報７６が格納されている領域の論理アドレスと同じ論理アドレスが指定されてその同じ更新情報７６がデステージされても良い。
【００８９】
図１０は、ベースイメージ更新処理のフローチャートの一例を示す。本処理は、図９のステップＳ１０７に該当する。
【００９０】
制御部１９は、データＬＰＴテーブル５１を物理ページ４３のデータサイズに分割する（Ｓ２０１）。
【００９１】
制御部１９は、分割した各データ（以下、図１０の説明で「分割データ」と言う）に対してステップＳ２０２ｓ〜Ｓ２０２ｅの間の処理を繰り返し実行する（Ｓ２０２ｓ）。
【００９２】
制御部１９は、分割データをフラッシュメモリ２０にデステージする（Ｓ２０３）。
【００９３】
制御部１９は、ベースイメージＬＰＴテーブル６１において、デステージされた分割データに関する情報を更新する（Ｓ２０４）。
【００９４】
制御部１９は、全ての分割データに対してステップＳ２０３からＳ２０４の処理を実行した後（Ｓ２０２ｅ）、当該処理を終了する。
【００９５】
図１１は、電源オフ時にメインメモリに保持されているデータをフラッシュメモリに退避する処理のフローチャートの一例を示す。
【００９６】
本処理は、ホスト計算機３０から電源オフのコマンドを受けた場合、又は、不意な電源オフ（例えば停電）が発生した場合等に実行される。なお、不意な電源オフが発生した場合は、電源検出回路１６に電源オフが検出され、電力がキャパシタ１７から制御部１９及びメインメモリ１３等に一時的に供給される。そして、電源検出回路１６から制御部１９に電源オフが発生した旨が通知されることで、本処理が実行される。
【００９７】
制御部１９は、メインメモリ１３に保持されているジャーナル７５を、データ領域２３にデステージ（退避）する（Ｓ３０１）。
【００９８】
制御部１９は、ジャーナルリストＬＰＴテーブル７１において、デステージされたジャーナル７５に関する情報を更新する（Ｓ３０２）。
【００９９】
制御部１９は、ジャーナルリストＬＰＴテーブル７１を、管理領域２２にデステージ（退避）する（Ｓ３０３）。
【０１００】
制御部１９は、ベースイメージＬＰＴテーブル６１を、管理領域２２にデステージ（退避）する（Ｓ３０４）。
【０１０１】
制御部１９は、各種情報テーブル８１を、管理領域２２にデステージ（退避）し（Ｓ３０５）、当該処理を終了する。
【０１０２】
図１２は、フラッシュメモリに退避したデータを電源オン時にメインメモリに復元する処理のフローチャートの一例を示す。
【０１０３】
制御部１９は、管理領域２２から、ジャーナルリストＬＰＴテーブル７１と、ベースイメージＬＰＴテーブル６１を、メインメモリ１３に復元する（読み出す）（Ｓ４０１）。
【０１０４】
制御部１９は、ベースイメージＬＰＴテーブル６１を参照して、データ領域２３からベースイメージ６０を読み出して、メインメモリ１３上にデータＬＰＴテーブル５１を復元する（Ｓ４０２）。
【０１０５】
制御部１９は、ジャーナルリスト７０に含まれるジャーナルの数だけ、ステップＳ４０３ｓ〜Ｓ４０３ｅの間の処理を繰り返す（Ｓ４０３ｓ）。
【０１０６】
制御部１９は、ジャーナルリストＬＰＴテーブル７１を参照して、データ領域２３のジャーナルリスト７０から、順次、ジャーナル７５を読み出して、メインメモリ１３に展開する（Ｓ４０４）。
【０１０７】
制御部１９は、ジャーナル７５に含まれる更新情報７６の数だけ、ステップＳ４０５ｓ〜Ｓ４０５ｅの間の処理を繰り返す（Ｓ４０５ｓ）。
【０１０８】
制御部１９は、ジャーナル７５から、更新時刻の古い順に更新情報７６を抽出し、その更新情報７６をベースイメージ６０に反映する（Ｓ４０６）。具体的には、その更新情報７６が有する物理アドレスが、ベースイメージ６０における、その更新情報７６が有する論理アドレスと同じ論理アドレスに対応する物理アドレスに、上書きされる。
【０１０９】
制御部１９は、全ての更新情報７６をベースイメージ６０に反映した後（Ｓ４０５ｅ、Ｓ４０３ｅ）、当該処理を終了する。
【０１１０】
本実施例によれば、ストレージシステム１の電源がオフされた時、データＬＰＴテーブル５１を、フラッシュメモリ２０にデステージする必要がない。これにより、電源がオフされた時のデステージに要する時間を短縮できる。
【０１１１】
すなわち、データＬＰＴテーブル５１のデータサイズは、フラッシュメモリ２０の容量が大きくなるに従って大きくなる。よって、容量の大きいフラッシュメモリ２０において、データＬＰＴテーブル５１を全てデステージする場合、長い時間を要する。これと比較して、容量の大きいフラッシュメモリ２０において、ジャーナルリストＬＰＴテーブル７１と、ベースイメージＬＰＴテーブル６１と、バッファリングされているジャーナル７５とユーザデータ５０とを合計したデータサイズは、データＬＰＴテーブル５１のデータサイズよりも小さい。したがって、本実施例によれば、データＬＰＴテーブル５１をデステージする場合と比較して、電源がオフされた時のデステージに要する時間を短縮できる。
【０１１２】
さらに、本実施例に拠れば、電源がオフされた時のデステージに要する時間を短縮することにより、キャパシタ１７の静電容量を小さくできる。
【０１１３】
すなわち、不意な電源オフが発生した場合、制御部１９は、キャパシタ１７から電力の供給を受けてメインメモリ１３のデータをフラッシュメモリ２０にデステージする必要がある。したがって、キャパシタ１７には、少なくともデステージに要する時間を確保可能な静電容量が求められる。本実施例によれば、電源がオフされた時のデステージに要する時間を短縮できるので、その分、キャパシタ１７の静電容量も小さくすることができる。
【０１１４】
また、本実施例によれば、データＬＰＴテーブル５１をフラッシュメモリ２０のデータ領域２３に保持することができる。これにより、データＬＰＴテーブル５１を管理領域２２に保持する場合と比較して、フラッシュメモリ２０の領域を効率的に利用できる。すなわち、従来のように、データＬＰＴテーブル５１を管理領域２２に保持する場合、ストレージシステムは、フラッシュメモリ２０において、データＬＰＴテーブル５１が取り得る最大サイズ以上の管理領域２２を予め確保しておく必要がある。そのため、データＬＰＴテーブル５１のサイズが小さいときは、フラッシュメモリ２０全体の利用効率が低くなってしまう。しかし、本実施例によれば、前述したように、データＬＰＴテーブル５１をフラッシュメモリ２０のデータ領域２３に保持するので、フラッシュメモリ２０の領域を効率的に利用できる。
【０１１５】
さらに、本実施例によれば、後からフラッシュメモリ２０のデータ領域２３の容量が拡張され、データＬＰＴテーブル５１のサイズが大きくなった場合にも、容易に対応できる。すなわち、従来のように、データＬＰＴテーブル５１を管理領域２２に保持する場合、ストレージシステムは、予め確保された管理領域２２のサイズ以上のデータＬＰＴテーブル５１を保持することができず、フラッシュメモリ２０のデータ領域２３の容量が拡張する場合、それに合わせて管理領域２２のサイズを再設定しなければならない。しかし、本実施例によれば、前述したように、データＬＰＴテーブル５１をフラッシュメモリ２０のデータ領域２３に保持するので、データＬＰＴテーブル５１のサイズが大きくなっても、管理領域２２のサイズを再設定は不要である。
【０１１６】
また、本実施例によれば、ジャーナルリスト７０、ベースイメージ６０、ユーザデータ５０、及びデータＬＰＴテーブル５１を同じデータ領域２３で管理する。これにより、データ領域２３全体でウェアレベリングを行うことができるので、フラッシュメモリ２０全体の書き換え寿命を長くすることができる。すなわち、サイズの小さい管理領域２２における物理ブロック当たりの書き換え頻度は、例えウェアレベリングを行ったとしても、サイズの大きいデータ領域２３における物理ブロック当たりの書き換え頻度よりも多くなってしまう。そのため、従来のようにデータＬＰＴテーブル５１をサイズの小さい管理領域２２に保持する場合、管理領域２２の書き換え寿命が、データ領域２３の書き換え寿命よりも早く尽きてしまう。すなわち、フラッシュメモリ２０全体の書き換え寿命が短くなってしまう。本実施例によれば、前述したように、ジャーナルリスト７０、ベースイメージ６０、ユーザデータ５０、及びデータＬＰＴテーブル５１を同じデータ領域２３で管理し、故に、データ領域２３全体でウェアレベリングを行うことができるので、フラッシュメモリ２０全体の書き換え寿命を長くすることができる。
【実施例２】
【０１１７】
実施例１において、ジャーナルリスト７０に保持可能な更新情報７６の数（又はデータサイズ）には限りがある。よって、データＬＰＴテーブル５１が、ベースイメージ６０として完全にデステージされた場合（つまり、データＬＰＴテーブル５１のデステージが完了した場合）、そのジャーナルリスト７０は、不要となる。なぜなら、データＬＰＴテーブル５１とベースイメージ６０との間に差分が生じていないからである。このため、そのジャーナルリスト７０は、データＬＰＴテーブル５１がベースイメージ６０として完全にデステージされた場合、削除される。このデステージは、ジャーナルリスト７０が満杯になったときに開始される。しかし、実施例１に示すように、ジャーナルリスト７０が１つしかない場合、このデステージが行われている間、ジャーナル７５をデステージできない。
【０１１８】
そこで、本実施例では、フラッシュメモリ２０にジャーナルリストを２つ保持する（ジャーナルリストは３以上保持されても良い）。以下、本実施例について説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略或いは簡略する（これは、後の実施例についても同様である）。
【０１１９】
図１３は、データＬＰＴテーブルを復元するときの変形例を示す。
【０１２０】
実施例２に係るストレージシステムは、フラッシュメモリ２０に、ベースイメージ６０と、第１のジャーナルリスト２７０ａと、第２のジャーナルリスト２７０ｂを保持し、メインメモリ１３に、データＬＰＴテーブル５１を保持する。
【０１２１】
まず、データＬＰＴテーブル５１のデステージについて説明する。
【０１２２】
第１のジャーナルリスト２７０ａが満杯になると、制御部１９は、データＬＰＴテーブル５１を、ベースイメージ６０としてデステージする（１４２）ことを開始する。そして、制御部１９は、それ以降のジャーナル７５を、第２のジャーナルリスト２７０ｂにデステージ（１４３）する。つまり、第１のジャーナルリスト２７０ａには、データＬＰＴテーブル５１のデステージの開始前までの更新情報７６が含まれ、第２のジャーナルリスト２７０ｂには、データＬＰＴテーブル５１のデステージの開始後からの更新情報７６が含まれることになる。
【０１２３】
これにより、データＬＰＴテーブル５１のデステージ（１４２）が行われている間も、ジャーナル７５をデステージ（１４３）できる。
【０１２４】
次に、データＬＰＴテーブル５１の復元について説明する。
【０１２５】
ここでは、ベースイメージ６０は、薄い網掛け部分１４４までしかデステージされなかったと仮定する。なお、ベースイメージ６０は、どの段階までデステージが完了されたかを示す情報を保持しているとする。
【０１２６】
この場合、まず、制御部１９は、ベースイメージ６０の白色の部分１４５（データＬＰＴテーブル５１のデステージされていない部分に相当する部分）に、第１のジャーナルリスト２７０ａの更新情報７６（すなわち、データＬＰＴテーブル５１のデステージの開始前までに生成された更新情報７６）を反映する。さらに、制御部１９は、ベースイメージ６０の全体に対して、第２のジャーナルリスト２７０ｂの更新情報７６（すなわち、データＬＰＴテーブル５１のデステージの開始後に生成された更新情報７６）を反映させる（１４１）。これにより、電源がオフされた時のデータＬＰＴテーブル５１を復元できる。
【０１２７】
本実施例によれば、データＬＰＴテーブル５１のデステージが行われている間も、ジャーナル７５をジャーナルリストにデステージできる。
【実施例３】
【０１２８】
以下、実施例３を説明する。なお、実施例３は、実施例１及び実施例２の少なくとも１つに適用できる。
本実施例では、ジャーナルリスト７０が保持できる更新情報７６の最大数（以下「リスト最大数」という）が設定可能である。実施例１で述べたように、ジャーナルリスト７０が満杯になると、データＬＰＴテーブル５１は、フラッシュメモリ２０にベースイメージ６０としてデステージされる。すなわち、リスト最大数を変更すると、データＬＰＴテーブル５１がデステージされるタイミングも変更される。リスト最大数は、例えば、ホスト計算機３０（或いは、ストレージシステムの管理計算機（図示せず））から設定される。
【０１２９】
図１４は、ジャーナルリストのリスト最大数を設定変更するときの動作概要を示す。
【０１３０】
リスト最大数がＭＡＸ１５２に設定されている場合（リスト最大数が大きい場合）と、リスト最大数がＭＡＸ１５１に設定されている場合（リスト最大値が小さい場合）について比較する。
【０１３１】
リスト最大数が大きい場合は、データＬＰＴテーブル５１がデステージされる頻度が低くなる。すなわち、フラッシュメモリ２０のＩ／Ｏに対する負荷が小さい。しかし、ジャーナルリスト７０に保持される更新情報７６が多いので、復元に要する時間が長くなる。また、ジャーナルリスト７０のデータサイズが大きいので、フラッシュメモリ２０において使用される領域が大きくなる。
【０１３２】
逆に、リスト最大数が小さい場合は、データＬＰＴテーブル５１がデステージされる頻度が高くなる。すなわち、フラッシュメモリ２０のＩ／Ｏに対する負荷が大きい。しかし、ジャーナルリスト７０に保持される更新情報７６が少ないので、復元に要する時間が短くなる。また、ジャーナルリスト７０のデータサイズが小さいので、フラッシュメモリ２０において使用される領域が小さくなる。
実施例３は、前述したように、実施例１及び実施例２の少なくとも１つに適用可能である。故に、例えば、第１及び第２のジャーナルリスト２７０ａ及び２７０ｂのうちの少なくとも１つについて、リスト最大数が変更可能で良い。
【実施例４】
【０１３３】
以下、実施例４を説明する。なお、実施例４は、実施例１乃至実施例３の少なくとも１つに適用できる。
本実施例では、データＬＰＴテーブル５１が複数のテーブルに分割されて管理される。
【０１３４】
図１５は、データＬＰＴテーブルを分割して管理する例を示す。
【０１３５】
制御部１９は、データＬＰＴテーブル５１を、第１〜第３のデータＬＰＴテーブル５１ａ、５１ｂ、５１ｃに分割する。データＬＰＴテーブル５１の分割に伴い、ベースイメージ６０及びジャーナルリスト７０も分割される。すなわち、第１のデータＬＰＴテーブル５１ａは、第１のベースイメージ６０ａと、第１のジャーナルリスト７０ａと対応関係を有する。第２及び第３のデータＬＰＴテーブル５１ｂ、５１ｃも、それぞれ同様の対応関係を有する。
【０１３６】
これにより、例えば、第１のデータＬＰＴテーブル５１ａは、第１のベースイメージ６０ａに第１のジャーナルリスト７０ａが反映されて復元される。
【０１３７】
図１６は、第１〜第３のデータＬＰＴテーブルの退避及び復元の一例を示す。
【０１３８】
第１〜第３のデータＬＰＴテーブル５１ａ、５１ｂ、５１ｃは、それぞれ独立して各第１〜第３のベースイメージ６０ａ、６０ｂ、６０ｃに退避される。また、第１〜第３のデータＬＰＴテーブル５１ａ、５１ｂ、５１ｃの更新情報７６も、それぞれ独立して、第１〜第３のジャーナルリスト７０ａ、７０ｂ、７０ｃに追記される。そして、第１〜第３のデータＬＰＴテーブル５１ａ、５１ｂ、５１ｃは、それぞれ独立して、第１〜第３のベースイメージ６０ａ、６０ｂ、６０ｃ及び各ジャーナルリスト７０ａ、７０ｂ、７０ｃから復元される。
【０１３９】
以下、図１６を用いて具体例を示す。第１及び第２のデータＬＰＴテーブル５１ａ、５１ｂは、それぞれ第１及び第２のベースイメージ６０ａ、６０ｂへのデステージ（１６１ａ、１６１ｂ）が完了している。デステージが完了した時点で、第１及び第２のジャーナルリスト７０ａ、７０ｂの更新情報７６は、不要となるので消去される。第３のデータＬＰＴテーブル５１ｃは、第３のベースイメージ６０ｃへのデステージ（１６１ｃ）の途中である。したがって、第３のジャーナルリスト７０ｃには、デステージ開始時刻から現在の時刻までに第３のデータＬＰＴテーブル５１ｃに発生した更新情報７６が保持される。
【０１４０】
この状態でストレージ制御装置１０の電源がオフされ、その後電源がオンされた場合、以下に述べるようにデータを復元できる。
【０１４１】
制御部１９は、第１及び第２のデータＬＰＴテーブル５１ａ、５１ｂを、それぞれ第１及び第２のベースイメージ６０ａ、６０ｂへのデステージが完了しているので、第１及び第２のベースイメージ６０ａ、６０ｂから復元できる。制御部１９は、第３のデータＬＰＴテーブル５１ｃに対応する第３のベースイメージ６０ｃを、デステージの途中であったので、第３のベースイメージ６０ｃのみからは復元できない。制御部１９は第３のデータＬＰＴテーブル５１ｃを、第３のベースイメージ６０ｃに、第３のジャーナルリスト７０ｃを反映させることで復元できる。
【０１４２】
図１７は、第１〜第３のジャーナルリストＬＰＴテーブルを復元する処理のフローチャートの一例を示す。
【０１４３】
制御部１９は、フラッシュメモリ２０の管理領域２２から、各ベースイメージＬＰＴテーブル６１と、各ジャーナルリストＬＰＴテーブル７１を読み出し、メインメモリ１３に展開する（Ｓ５０１）。
【０１４４】
制御部１９は、各ベースイメージ６０についてステップＳ５０２ｓからステップＳ５０２ｅの処理を繰り返す（Ｓ５０２ｓ）。例えば、ベースイメージ６０ａ、６０ｂ、６０ｃが存在する場合、ベースイメージ６０ａから順番にステップＳ５０２ｓからＳ５０２ｅを繰り返す。
【０１４５】
制御部１９は、ベースイメージＬＰＴテーブル６１を参照して、ベースイメージ６０をメインメモリ１３に読み出す（Ｓ５０３）。
【０１４６】
制御部１９は、ベースイメージ６０に付与されているデステージ進捗情報を参照し、ベースイメージ６０が完全にデステージされているか否かを判定する（Ｓ５０４）。デステージ進捗情報とは、デステージされる際にベースイメージ６０に付与される情報であり、どこまでデステージされたかを示す情報である。
【０１４７】
ベースイメージ６０が完全にデステージされている場合（Ｓ５０４：ＹＥＳ）、制御部１９は、ベースイメージ６０のみからデータＬＰＴテーブル５１を復元し（Ｓ５０５）、ステップＳ５０２ｅに進む。
【０１４８】
ベースイメージ６０が完全にはデステージされていない場合（Ｓ５０４：ＮＯ）、制御部１９は、ベースイメージ６０とそれに対応するジャーナルリスト７０とからデータＬＰＴテーブル５１を復元し（Ｓ５０６）、ステップＳ５０２ｅに進む。
【０１４９】
全てのベースイメージ６０についてステップＳ５０２ｓからステップＳ５０２ｅの処理が完了したら、当該処理を終了する（Ｓ５０２ｅ）。
【０１５０】
図１８は、データの復元中にホスト計算機からアクセスを受けた場合の処理概要の一例を示す。
【０１５１】
例えば、第１のデータＬＰＴテーブル５１ａを復元中に（１７１ａ）、ホスト計算機３０から第３のデータＬＰＴテーブル５１ｃにアクセスされたと仮定する。このとき、制御部１９は、ホスト計算機３０からアクセスされた第３のデータＬＰＴテーブル５１ｃを優先的に復元する（１７１ｃ）。さらに、制御部１９は、ホスト計算機３０からアクセスされた論理アドレスを優先的に復元する。さらに、制御部１９は、ホスト計算機３０からアクセスされた論理アドレスに関連する更新情報が存在する場合は、それらの更新情報を優先して反映させる。
【０１５２】
本実施例によれば、データＬＰＴテーブル５１の復元中であっても、ホスト計算機３０からのアクセスに応答することができる。また、データＬＰＴテーブル５１の復元中であっても、ホスト計算機３０からのアクセスにより早く応答を返すことができる。なお、ホスト計算機３０のアクセス応答にタイムアウトが設定されている場合は、そのタイムアウトに間に合う時間で復元できるデータサイズに、各ベースイメージ６０ａ、６０ｂ、６０ｃを分割することが望ましい。
実施例４は、前述したように、実施例１乃至実施例３の少なくとも１つに適用可能である。このため、例えば、分割により得られたデータＬＰＴテーブル毎に、１つのジャーナルリストに代えて、実施例２で述べたような第１及び第２のジャーナルリストが用意されて良い。そして、それらのジャーナルリストの少なくとも１つについて、リスト最大数が変更可能で良い。
【０１５３】
上述した本発明の幾つかの実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。例えば、ジャーナルは、論理アドレスに対応する更新後の物理アドレスを含むが、それに代えて又は加えて、論理アドレスに対応する更新前の物理アドレスを含んでも良い。
【符号の説明】
【０１５４】
１…ストレージシステム  １０…ストレージ制御装置  １９…制御部  ２０…フラッシュメモリ
【図１】
0005808854.tif 000002
【図２】
0005808854.tif 000003
【図３】
0005808854.tif 000004
【図４】
0005808854.tif 000005
【図５】
0005808854.tif 000006
【図６】
0005808854.tif 000007
【図７】
0005808854.tif 000008
【図８】
0005808854.tif 000009
【図９】
0005808854.tif 000010
【図１０】
0005808854.tif 000011
【図１１】
0005808854.tif 000012
【図１２】
0005808854.tif 000013
【図１３】
0005808854.tif 000014
【図１４】
0005808854.tif 000015
【図１５】
0005808854.tif 000016
【図１６】
0005808854.tif 000017
【図１７】
0005808854.tif 000018
【図１８】
0005808854.tif 000019