(57)【要約】【課題】揮発性メモリにおける退避対象を確実に不揮発性メモリに退避できるようにする。退避処理に要する時間をなるべく短くする。【解決手段】バッテリの充電状況が定期的又は不定期的に把握され、把握された充電状況に応じて、揮発性メモリに記憶されているどの情報要素を、電断発生時の退避対象とするかが制御される。揮発性メモリに記憶されている複数の情報要素のうち特定の情報要素が、その特定の情報要素に関する状況に応じて、退避処理の際の非退避対象とされる。（図３５）
2011524555.tif 000002
【特許請求の範囲】
【請求項１】
外部装置（１０１）からＩ／Ｏ（Input/Output）コマンドを受信するストレージシステムであって、
複数の記憶装置（１１５）と、
揮発性メモリ（１２１）と、
不揮発性メモリ（１２３）と、
二次電源であるバッテリ（１２４）と、
前記Ｉ／Ｏコマンドがライトコマンドの場合、そのライトコマンドに従うデータを前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記複数の記憶装置の少なくとも一つに書込み、前記Ｉ／Ｏコマンドがリードコマンドの場合、そのリードコマンドに従うデータを前記複数の記憶装置の少なくとも一つから読み出して前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記外部装置に送信するＩ／Ｏ制御部（３７１１）と、
一次電源（１１７）から前記揮発性メモリへの給電が無くなった場合に、前記バッテリからの給電により、前記揮発性メモリに記憶されている複数の情報要素のうちの全ての退避対象としての情報要素を前記不揮発性メモリに退避する退避部（１２２）と、
前記バッテリの充電状況を定期的又は不定期的に把握するバッテリ監視部（３７１２、１２２）と、
前記把握された充電状況に応じて、前記揮発性メモリに記憶されているどの情報要素を前記退避対象とするかを制御する退避対象制御部（３７１７）と
を備えるストレージシステム。
【請求項２】
前記揮発性メモリに記憶される情報要素には、Ｉ／Ｏデータと制御情報要素とが含まれており、
前記Ｉ／Ｏデータは、前記揮発性メモリに記憶されている情報要素の一つであって、前記外部装置からのＩ／Ｏコマンドに応答して書き込まれる又は読み出されるデータであり、
前記Ｉ／Ｏデータは、前記複数の記憶装置のいずれかに既に書き込まれているタイプのＩ／Ｏデータであるクリーンデータと、前記複数の記憶装置のいずれにも未だ書込まれていないタイプのデータであるダーティデータとのいずれかであり、
前記制御情報要素としては、制御テーブル（９０１、９０２、９０３）と、テーブル管理情報（１００１）と、ダーティ量管理情報（１１０１）と、制御量管理情報（１２０１）とがあり、
各制御テーブルは、所定種類のサブ情報要素を有しており、
前記テーブル管理情報は、制御テーブル毎に関するサブ情報要素として、下記（Ａ）乃至（Ｄ）のサブ情報要素を有し、
（Ａ）重要度情報：制御テーブルの重要度を表すサブ情報要素；
（Ｂ）更新有無情報：制御テーブルに更新があったか否かを表すサブ情報要素；
（Ｃ）退避済み情報：制御テーブルが退避済みか否かを表すサブ情報要素；
（Ｄ）テーブルサイズ情報：制御テーブルのサイズを表すサブ情報要素；
前記ダーティ量管理情報は、充電状況に応じたダーティ量を表しており、前記ダーティ量は、退避可能なダーティデータの総量であり、
前記制御量管理情報は、充電状況に応じた退避可能な制御量を表しており、前記制御量は、退避可能な制御情報の情報量を表しており、
前記バッテリ監視部は、マイクロプロセッサが所定のコンピュータプログラムを実行することにより、前記一次電源からの給電が開始されてからの経過時間と単位時間当りの充電状況とを基に充電状況を把握し、
前記退避対象制御部は、把握された充電状況が直前回に把握された充電状況よりも悪ければ、下記（２−１）及び（２−２）の処理を行い、
（２−１）把握された充電状況に対応するダーティ量を前記ダーティ量管理情報から把握し、前記揮発性メモリに記憶されているダーティデータの総量が前記把握されたダーティ量以下の量になるように、前記揮発性メモリに記憶されている一以上のダーティデータを前記複数の記憶装置に格納し、
（２−２）把握された充電状況に対応する制御量を前記制御量管理情報から把握し、退避対象としての制御情報要素の総量が前記把握された制御量以下の量になるように、前記テーブル管理情報における情報（Ａ）及び（Ｄ）を基に、所定の重要度より低い重要度に対応した制御テーブルを、非退避対象とし、
前記退避対象制御部は、情報（Ｂ）及び（Ｃ）を基に、退避済み且つ更新無しの制御テーブルを、非退避対象とし、
前記退避対象は、少なくとも下記（ａ）乃至（ｃ）であり、
（ａ）前記揮発性メモリに残っている全てのダーティデータ；
（ｂ）非退避対象ではない制御テーブル；
（ｃ）前記テーブル管理情報；
前記Ｉ／Ｏ制御部は、前記ライトコマンドを受けて、そのライトコマンドに従うライト対象のデータが前記揮発性メモリにダーティデータとして残ると前記揮発性メモリにおけるダーティデータの総量が前記把握された充電状況に対応するダーティ量を超えてしまう場合には、ライトスルーモードで動作し、一方、そのライト対象のデータが前記揮発性メモリにダーティデータとして残っても前記揮発性メモリにおけるダーティデータの総量が前記把握された充電状況に対応するダーティ量以下である場合には、通常ライトモードで動作し、
前記ライトスルーモードでは、前記Ｉ／Ｏ制御部は、前記ライト対象のデータを前記揮発性メモリに一時記憶させ、そのライト対象のデータを前記複数の記憶装置のいずれかに書込むことで、そのライト対象のデータをクリーンデータとし、その後で、前記ライトコマンドに対する応答を前記外部装置に送信し、
前記通常ライトモードでは、前記Ｉ／Ｏ制御部は、前記ライト対象のデータを前記揮発性メモリに一時記憶させ、そのライト対象のデータを前記複数の記憶装置のいずれかに書込むことなく、前記ライトコマンドに対する応答を前記外部装置に送信する、
請求項１記載のストレージシステム。
【請求項３】
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素（Ｅ）を有し、
（Ｅ）更新回数情報：制御テーブルが更新された回数を表す情報；
前記退避対象制御部は、
（３−１）一定時間経っても更新されない前記サブ情報要素（Ｅ）に対応した制御テーブルを前記不揮発性メモリに退避し、その制御テーブルに対応する前記サブ情報要素（Ｂ）を、更新無しを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素（Ｃ）を、退避済みを表す情報に更新し、
（３−２）前記（３−１）で退避した制御テーブルが更新された場合、その制御テーブルに対応する前記サブ情報要素（Ｂ）を、更新有りを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素（Ｃ）を、非退避済みを表す情報に更新する、
請求項２記載のストレージシステム。
【請求項４】
回復部（３７１６、１２２）を更に備え、
前記揮発性メモリは、代表退避値と、ダーティデータの退避値を表すＩ／Ｏ退避値とを記憶し、
前記代表退避値及び前記Ｉ／Ｏ退避値は、それぞれ、退避対象であり、
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素（Ｆ）、
（Ｆ）退避値：制御テーブルの退避値；
を有し、
前記退避部は、計画停止のときに、前記代表退避値を、特定の値を表す情報に更新し、前記揮発性メモリにおける退避対象を前記不揮発性メモリに退避し、
前記退避対象制御部は、
（４−１）把握された充電状況が直前回に把握された充電状況よりも良ければ、退避対象の制御テーブルに対応したサブ情報要素（Ｆ）を、前記代表退避値と同じ情報に更新し、
（４−２）把握された充電状況が直前回に把握された充電状況よりも悪ければ、非退避対象の制御テーブルに対応したサブ情報要素（Ｆ）を、前記代表退避値と異なる値に更新し、
前記回復部は、前記一次電源からの給電が停止した後に再び前記一次電源から給電があった場合に、前記不揮発性メモリに記憶されている情報を前記揮発性メモリに回復し、その際、回復された代表退避値と、回復されたＩ／Ｏ退避値が異なっている場合には、回復されたダーティデータを揮発したデータと扱い、且つ、回復された代表退避値と、回復されたテーブル管理情報内の前記サブ情報要素（Ｆ）が異なっている場合には、回復された代表退避値と異なっているサブ情報要素（Ｆ）に対応する制御テーブルを揮発したテーブルと扱う、
請求項３記載のストレージシステム。
【請求項５】
前記不揮発性メモリは、フラッシュメモリであり、
前記一次電源から電力が供給されている間において、制御情報における退避対象である制御退避対象が更新されたときに、前記制御退避対象の退避先領域にリフレッシュ処理を施すリフレッシュ処理部（３７１５）を更に備える、
請求項４記載のストレージシステム。
【請求項６】
前記退避対象制御部は、前記揮発性メモリに記憶されているダーティデータの総量が前記把握された充電状況に応じた退避可能な情報量以下の量になるように、前記揮発性メモリに記憶されている一以上のダーティデータを前記複数の記憶装置に格納し、
前記ダーティ量は、ダーティデータの総量であり、
前記ダーティデータは、前記複数の記憶装置のいずれにも未だ書込まれていないタイプのＩ／Ｏデータであり、
前記Ｉ／Ｏデータは、前記揮発性メモリに記憶されている情報要素の一つであって、前記外部装置からのＩ／Ｏコマンドに応答して書き込まれる又は読み出されるデータである、
請求項１記載のストレージシステム。
【請求項７】
前記退避対象制御部は、前記揮発性メモリにおける現時点の退避対象の総量が、前記把握された充電状況に応じた退避可能な情報量以下になるように、前記揮発性メモリにおける複数の情報要素のうち、所定の重要度より低い重要度の情報要素を非退避対象とする、
請求項１又は６記載のストレージシステム。
【請求項８】
前記退避対象制御部は、退避済み且つ更新の無い情報要素を非退避対象とする、
請求項１、６又は７に記載のストレージシステム。
【請求項９】
前記退避対象制御部は、特定の期間更新の無い情報要素を前記揮発性メモリから前記不揮発性メモリに退避しておく、
請求項８記載のストレージシステム。
【請求項１０】
外部装置（１０１）からＩ／Ｏ（Input/Output）コマンドを受信するストレージシステムであって、
複数の記憶装置（１１５）と、
揮発性メモリ（１２１）と、
不揮発性メモリ（１２３）と、
前記Ｉ／Ｏコマンドがライトコマンドの場合、そのライトコマンドに従うデータを前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記複数の記憶装置の少なくとも一つに書込み、前記Ｉ／Ｏコマンドがリードコマンドの場合、そのリードコマンドに従うデータを前記複数の記憶装置の少なくとも一つから読み出して前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記外部装置に送信するＩ／Ｏ制御部（３７１１）と、
前記揮発性メモリに記憶されている複数の情報要素のうちの全ての退避対象としての情報要素を前記不揮発性メモリに退避する退避部（３７１３、１２２）と、
前記揮発性メモリに記憶されている複数の情報要素のうち特定の情報要素を、その特定の情報要素に関する状況に応じて、退避処理の際の非退避対象とする退避対象制御部（３７１３、３７１７）と
を備えるストレージシステム。
【請求項１１】
二次電源であるバッテリ（１２４）と、
前記バッテリの充電状況を定期的又は不定期的に把握するバッテリ監視部（３７１２）と、
回復部（３７１６、１２２）と、
前記一次電源からの給電があって正常に稼動している間に退避対象の退避先領域にリフレッシュ処理を施すリフレッシュ処理部（３７１５）と
備え、
前記揮発性メモリに記憶される情報要素として、制御情報要素があり、
前記制御情報要素としては、制御テーブル（９０１、９０２、９０３）と、テーブル管理情報（１００１）と、制御量管理情報（１２０１）とがあり、
各制御テーブルは、所定種類の情報を有しており、
前記テーブル管理情報は、制御テーブル毎に関する情報として、下記（Ａ）乃至（Ｄ）のサブ情報要素を有し、
（Ａ）重要度情報：制御テーブルの重要度を表すサブ情報要素；
（Ｂ）更新有無情報：制御テーブルに更新があったか否かを表すサブ情報要素；
（Ｃ）退避済み情報：制御テーブルが退避済みか否かを表すサブ情報要素；
（Ｄ）テーブルサイズ情報：制御テーブルのサイズを表すサブ情報要素；
前記制御量管理情報は、充電状況に応じた退避可能な制御量を表しており、前記制御量は、退避可能な制御情報の情報量を表しており、
前記バッテリ監視部は、マイクロプロセッサが所定のコンピュータプログラムを実行することにより、前記一次電源からの給電が開始されてからの経過時間と単位時間当りの充電状況とを基に充電状況を把握し、
前記退避対象制御部は、
（１２−１）前記把握された充電状況が直前回に把握された充電状況よりも悪ければ、充電状況に対応する制御量を前記制御量管理情報から把握し、前記制御情報における退避対象の量が前記把握された制御量以下の量になるように、前記テーブル管理情報におけるサブ情報要素（Ａ）及び（Ｄ）を基に、所定の重要度より低い重要度に対応した制御テーブルを、非退避対象とし、
前記退避対象制御部は、サブ情報要素（Ｂ）及び（Ｃ）を基に、退避済み且つ更新無しの制御テーブルを、非退避対象とし、
前記退避対象は、少なくとも下記（ａ）乃至（ｃ）であり、
（ａ）前記揮発性メモリに残っている全てのダーティデータ；
（ｂ）非退避対象ではない制御テーブル；
（ｃ）前記テーブル管理情報；
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素（Ｅ）を有し、
（Ｅ）更新回数情報：制御テーブルが更新された回数を表す情報；
前記退避対象制御部は、
（１３−１）一定時間経っても更新されない前記サブ情報要素（Ｅ）に対応した制御テーブルを前記不揮発性メモリに退避し、その制御テーブルに対応する前記サブ情報要素（Ｂ）を、更新無しを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素（Ｃ）を、退避済みを表す情報に更新し、
（１３−２）前記（１３−１）で退避した制御テーブルが更新された場合、その制御テーブルに対応する前記サブ情報要素（Ｂ）を、更新有りを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素（Ｃ）を、非退避済みを表す情報に更新し、
前記不揮発性メモリは、フラッシュメモリであり、
前記リフレッシュ処理部は、制御情報要素が更新された場合に、その制御情報要素の退避先にリフレッシュ処理を施し、
前記揮発性メモリは、代表退避値と、ダーティデータの退避値を表すＩ／Ｏ退避値とを記憶し、
前記代表退避値及び前記Ｉ／Ｏ退避値は、それぞれ、退避対象であり、
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素（Ｆ）、
（Ｆ）退避値：制御テーブルの退避値；
を有し、
前記退避部は、計画停止のときに、前記代表退避値を、特定の値に更新し、前記揮発性メモリにおける全ての退避対象を前記不揮発性メモリに退避し、
前記退避対象制御部は、
（１４−１）把握された充電状況が直前回に把握された充電状況よりも良ければ、退避対象の制御テーブルに対応したサブ情報要素（Ｆ）を、前記代表退避値と同じ値に更新し、
（１４−２）把握された充電状況が直前回に把握された充電状況よりも悪ければ、非退避対象の制御テーブルに対応したサブ情報要素（Ｆ）を、前記代表退避値と異なる値に更新し、
前記回復部は、前記一次電源からの給電が停止した後に再び前記一次電源から給電があった場合に、前記不揮発性メモリに記憶されている情報を前記揮発性メモリに回復し、その際、回復された代表退避値と、回復されたＩ／Ｏ退避値が異なっている場合には、回復されたダーティデータを揮発したデータと扱い、且つ、回復された代表退避値と、回復されたテーブル管理情報内の前記サブ情報要素（Ｆ）が異なっている場合には、回復された代表退避値と異なっているサブ情報要素（Ｆ）に対応する制御テーブルを揮発したテーブルと扱う、
請求項１０記載のストレージシステム。
【請求項１２】
前記退避対象制御部は、前記揮発性メモリにおける現時点の退避対象の総量が、前記把握された充電状況に応じた退避可能な情報量以下になるように、前記揮発性メモリにおける複数の情報要素のうち、所定の重要度より低い重要度の情報要素を非退避対象とする、
請求項１０記載のストレージシステム。
【請求項１３】
前記退避対象制御部は、退避済み且つ更新の無い情報要素を非退避対象とする、
請求項１０又は１２記載のストレージシステム。
【請求項１４】
前記退避対象制御部は、特定の期間更新の無い情報要素を前記揮発性メモリから前記不揮発性メモリに退避しておく、
請求項１３記載のストレージシステム。
【請求項１５】
前記不揮発性メモリは、フラッシュメモリであり、
前記一次電源から電力が供給されている間に退避対象の退避先領域にリフレッシュ処理を施しておくリフレッシュ処理部（３７１５）を更に備える、
請求項１０、１２乃至１４のいずれかに記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、揮発性メモリと不揮発性メモリとを備えたストレージシステムの制御に関する。
【背景技術】
【０００２】
この種のストレージシステムとして、例えば、特許文献１に開示のストレージシステムが知られている。特許文献１によれば、ストレージシステムでは、一次電源から揮発性キャッシュメモリへの給電が無くなった場合に、バッテリから揮発性キャッシュメモリに電力が供給され、その間に、揮発性キャッシュメモリに記憶されているデータが不揮発性メモリにコピーされる。
【０００３】
【特許文献１】特開２００８−１０８０２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
一次電源から揮発性メモリへの給電が無くなった場合（つまり電断が生じた場合）、バッテリからの給電が開始される。一次電源からの給電が再開されれば、バッテリからの給電が中止され再び充電が開始されるが、満充電になる前（充電率が１００％になる前）に再び一次電源の電断が生じれば、満充電ではない充電状況であってもバッテリからの給電が開始される。すなわち、一次電源の電断が頻発すると、充電状況の良くないバッテリからの給電に基づいて揮発性メモリから不揮発性メモリへの情報の退避処理が行われることになり、それ故、揮発性メモリにおける退避対象を退避する前にバッテリの残量が枯渇してしまうおそれがある。
【０００５】
また、不揮発性メモリを大容量にしておけば、大量の情報を退避することが期待できるが、そうすると、揮発性メモリから不揮発性メモリに退避される情報の量が多くなり、故に、退避処理に要する時間が長くなってしまう。
【０００６】
そこで、本発明の第一の目的は、揮発性メモリにおける退避対象を確実に不揮発性メモリに退避できるようにすることにある。
【０００７】
本発明の第二の目的は、退避処理に要する時間をなるべく短くすることにある。
【課題を解決するための手段】
【０００８】
第一の観点では、バッテリの充電状況が定期的又は不定期的に把握され、把握された充電状況に応じて、揮発性メモリに記憶されているどの情報要素を、電断発生時の退避対象とするかが制御される。具体的には、例えば、揮発性メモリにおける後述のダーティデータの総量が制御される。
【０００９】
第二の観点では、揮発性メモリに記憶されている複数の情報要素のうち特定の情報要素が、その特定の情報要素に関する状況に応じて、退避処理の際の非退避対象とされる。具体的には、例えば、特定の情報要素は、更新頻度が低い状況の場合に退避され、この時点で退避済みとなるので、退避処理の際には、新たに更新されていなければ、非退避対象である。また、特定の情報要素は、重要度が低い場合には、非退避対象とされる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の一実施形態に係る計算機システムの構成例を示す。
【図２】図２は、ストレージシステム１０３におけるデータと制御信号の流れの一例を示す。
【図３】図３は、電源モジュール１１７からの給電とバッテリ１２４からの給電とを示す。
【図４】図４は、ＣＭ−ＰＫ１１６で行われる処理の説明図である。
【図５】図５は、ホスト１０１からリードコマンドを受けたストレージシステム１０３で行われる処理の流れを示す。
【図６】図６は、ホスト１０１からライトコマンドを受けたストレージシステム１０３で行われる処理の流れを示す。
【図７】図７は、計画停止フェーズで行われる退避処理の概要を示す。
【図８】図８は、揮発性メモリ１２１の構成例を示す。
【図９】図９は、制御テーブルの例を示す。
【図１０】図１０は、テーブル管理情報の構成を示す。
【図１１】図１１は、ダーティ量管理情報の構成を示す。
【図１２】図１２は、制御量管理情報の構成を示す。
【図１３】図１３は、監視充電率情報を示す。
【図１４】図１４は、監視ダーティ量情報を示す。
【図１５】図１５Ａは、代表退避時刻情報を示す。図１５Ｂは、ホストデータ退避時刻情報を示す。
【図１６】図１６は、ホストデータ管理情報を示す。
【図１７】図１７は、アドレス管理情報を示す。
【図１８】図１８は、ダーティ退避処理の流れを示す。
【図１９】図１９は、制御退避処理の流れを示す。
【図２０】図２０は、電断フェーズで行われる退避処理の概要を示す。
【図２１】図２１は、電断フェーズで行われる退避処理の流れを示す。
【図２２】図２２は、回復フェーズで行われる回復処理の概要を示す。
【図２３】図２３は、回復フェーズで行われる回復処理の流れを示す。
【図２４】図２４は、バッテリ充電率に応じた退避対象制御処理が行われない場合の問題点を示す。
【図２５】図２５は、バッテリ充電率に応じた退避対象制御処理が行われることによる効果の一例を示す。
【図２６】図２６は、ソフトウェア的なバッテリ監視処理の具体例の説明に関する図である。
【図２７】図２７は、ダーティ量調整処理の概要を示す。
【図２８】図２８は、ダーティ量調整処理の流れを示す。
【図２９】図２９は、制御テーブル退避処理の概要を示す。
【図３０】図３０は、制御テーブル退避処理の流れを示す。
【図３１】図３１は、更新管理処理の概要を示す。
【図３２】図３２は、更新管理処理の流れを示す。
【図３３】図３３は、更新のあった制御テーブルが不揮発性メモリに上書きされることを示す。
【図３４】図３４は、事前リフレッシュ処理の流れを示す。
【図３５】図３５は、バッテリ充電率に応じた退避対象制御処理の流れを示す。
【図３６】図３６は、バッテリ充電率に応じた退避対象制御処理によって退避対象の総量が調整されることを示す。
【図３７】図３７は、ＭＰ−ＰＫの構成を示す。
【図３８】図３８は、退避済み且つ更新無しの制御テーブルを非退避対象とする流れを示す。
【符号の説明】
【００１１】
１０３…ストレージシステム
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して、本発明の一実施形態を説明する。
【００１３】
図１は、本発明の一実施形態に係る計算機システムの構成例を示す。
【００１４】
ストレージシステム１０３に、ＳＡＮ（Storage Area Network）１０２を通じて、一以上のホスト１０１が接続されている。ＳＡＮ１０２に代えて、ＬＡＮ（Local Area Network）等の他種の通信ネットワークが採用されても良い。
【００１５】
ホスト１０１は、ＣＰＵ（Central Processing Network）やメモリ等の情報処理資源を備えた計算機であり、例えば、パーソナルコンピュータや、ワークステーションや、メインフレーム等である。
【００１６】
ストレージシステム１０３は、コントローラと、記憶装置群と、電源モジュール１１７とを備える。
【００１７】
電源モジュール１１７は、商用電源から供給される電力に基づく電力を各種構成要素に供給する。
【００１８】
記憶装置群は、例えば、複数のＨＤＤ（Hard Disk Drive）１１５で構成されている。ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループを構成する二以上のＨＤＤ１１５で、一以上の論理ボリュームが形成されている。ＨＤＤ１１５に代えて、フラッシュメモリなど他種の物理記憶装置が採用されても良い。
【００１９】
コントローラは、複数種類のパッケージ（以下、パッケージを「ＰＫ」と略す）、具体的には、ＣＨＡ−ＰＫ１１１、ＭＰ−ＰＫ１１２、ＳＷ−ＰＫ１１３、ＣＭ−ＰＫ１１６、及びＤＫＡ−ＰＫ１１４で構成される。各種パッケージは、例えば、回路基板である。各種パッケージの数は、１に限らず、２以上であっても良い。例えば、ＣＨＡ−ＰＫ１１１及びＤＫＡ−ＰＫ１１４の数は、それぞれ２以上である。
【００２０】
ＣＨＡ−ＰＫ１１１は、ホスト１０１との通信を制御するインタフェース装置である。ＣＨＡ−ＰＫ１１１は、ホスト１０１からＩ／Ｏコマンド（例えばライトコマンド又はリードコマンド）を受信し、ホスト１０１との間でデータの送受信を行う。
【００２１】
ＭＰ−ＰＫ１１２は、ストレージシステム１０３の動作を制御する。
【００２２】
ＳＷ−ＰＫ１１３は、ＣＨＡ−ＰＫ１１１、ＭＰ−ＰＫ１１２、ＣＭ−ＰＫ１１６及びＤＫＡ−ＰＫ１１４に接続されており、これらＰＫ間の通信を中継する。
【００２３】
ＣＭ−ＰＫ１１６は、ホスト１０１からのライトコマンドに応答してＨＤＤ１１５に書き込まれるライト対象のデータや、ホスト１０１からのリードコマンドに応答してＨＤＤ１１５から読み出されたリード対象のデータを一時的に記憶するキャッシュメモリとしてのパッケージである。ＣＭ−ＰＫ１１６は、揮発性メモリ１２１と、不揮発性メモリ１２３と、バッテリ１２４と、Ｃ−ＭＰ１２２とを有する。揮発性メモリ１２１が、キャッシュメモリとして利用されるメモリである。不揮発性メモリ１２３が、揮発性メモリ１２１に記憶されている情報の退避先として利用されるメモリである。不揮発性メモリ１２３は、例えば、フラッシュメモリを備えたデバイス、一例として、ＳＳＤ（Solid State Device）である。Ｃ−ＭＰ１２２は、ＣＭ−ＰＫ１１６に備えられるマイクロプロセッサである。ＭＰ−ＰＫ１１２にも、後述するようにマイクロプロセッサが備えられているが、Ｃ−ＭＰ１２２は、そのマイクロプロセッサよりも性能の低いマイクロプロセッサで良い。本実施形態の説明では、ＣＭ−ＰＫ１１６に備えられるマイクロプロセッサを「Ｃ−ＭＰ」と言い、ＭＰ−ＰＫ１１２に備えられるマイクロプロセッサを「Ｍ−ＭＰ」と言う。
【００２４】
ＤＫＡ−ＰＫ１１４は、ＨＤＤ１１５に対する通信を制御するインタフェース装置である。
【００２５】
図２は、ストレージシステム１０３におけるデータと制御信号の流れの一例を示す。
【００２６】
ホスト１０１からのＩ／Ｏコマンドは、ＣＨＡ−ＰＫ１１１で受け付けられる。データは、ＳＷ−ＰＫ１１３を介して、ＣＨＡ−ＰＫ１１１、ＭＰ−ＰＫ１１２及びＤＫＡ−ＰＫ１１４間でやり取りされる。また、揮発性メモリ１２１と不揮発性メモリ１２３との間でもデータがやり取りされる。揮発性メモリ１２１から不揮発性メモリ１２３へのデータの退避、並びに、不揮発性メモリ１２３から揮発性メモリ１２１へのデータの回復は、Ｃ−ＭＰ１２２からの制御信号に基づき行われる。
【００２７】
図３は、電源モジュール１１７からの給電とバッテリ１２４からの給電とを示す。
【００２８】
実線矢印で示すように、電源モジュール１１７からは、商用電源からの電力に基づく電力が、ストレージシステム１０３内の各種構成要素、すなわち、ＣＨＡ−ＰＫ１１１、ＭＰ−ＰＫ１１２、ＳＷ−ＰＫ１１３、ＤＫＡ−ＰＫ１１４、ＨＤＤ１１５、及びＣＭ−ＰＫ１１６（具体的には、例えば、ＣＭ−ＰＫ１１６内の各要素１２１、１２２、１２３及び１２４）に供給される。バッテリ１２４には、電源モジュール１１７からの給電に基づき充電がされる。
【００２９】
停電或いは障害の発生等が原因で、電源モジュール１１７からの給電が断たれると（つまり電断が発生すると）、点線矢印で示すように、バッテリ１２４から、ＣＭ−ＰＫ１１６内の他の要素１２１、１２２及び１２３に、電力が供給される。
【００３０】
図４は、ＣＭ−ＰＫ１１６で行われる処理の説明図である。
【００３１】
揮発性メモリ１２１に記憶される情報要素としては、ホストデータと制御情報要素がある。ホストデータは、ホスト１０１からのライトコマンドに応答してＨＤＤ１１５に書き込まれるデータ、及び、ホスト１０１からのリードコマンドに応答してＨＤＤ１１５から読み出されたデータである。制御情報要素は、後述のＭ−ＭＰに参照されストレージシステム１０３の制御のために使用される情報要素である。揮発性メモリ１２１上のホストデータ（正確には後述のダーティデータ）及び制御情報要素が、不揮発性メモリ１２３に退避される。
【００３２】
Ｃ−ＭＰ１２２は、下記機能（４−１）及び（４−２）、
（４−１）設定されたアドレスセットが表す領域（開始アドレスから終了アドレスの範囲に対応した領域）に記憶されている情報要素を揮発性メモリ１２１から不揮発性メモリ１２３に退避する機能；
（４−２）不揮発性メモリ１２３から揮発性メモリ１２１に情報要素を回復する機能；
を有する。回復される情報要素は、不揮発性メモリ１２３に記憶されている全ての情報要素であっても良いし、設定されたアドレスセットが表す領域（開始アドレスから終了アドレスの範囲に対応した領域）に対応した情報要素であっても良い。揮発性メモリ１２１から不揮発性メモリ１２３への情報要素の退避が失敗した場合には、不揮発性メモリ１２３上に、Ｃ−ＭＰ１２２によって、退避失敗を表す情報が格納される。
【００３３】
本実施形態で言う「アドレスセット」とは、開始アドレス及び終了アドレスのセットである。アドレスセットは、Ｃ−ＭＰ１２２のレジスタ（及び／又は揮発性メモリ１２１）に設定される。そのレジスタ（及び／又は揮発性メモリ１２１）には、一又は複数のアドレスセットを蓄積することが可能である。また、レジスタに設定されているアドレスセットは、Ｃ−ＭＰ１２２（及び／又は揮発性メモリ１２１）から不揮発性メモリ１２３に書き込まれる。これにより、電断が生じても、アドレスセットは不揮発性メモリ１２３で保持されていることになる。
【００３４】
ちなみに、本実施形態では、揮発性メモリ１２１に割当てられているアドレスと不揮発性メモリ１２３に割当てられているアドレスが、１対１で対応している。このため、本実施形態では、退避処理及び回復処理において、例えば、或るアドレス範囲を表すアドレスセットが設定された場合、そのアドレス範囲に対応する、一方のメモリ１２１又は１２３の領域から、そのアドレス範囲に対応する、他方のメモリ１２３又は１２１の領域への情報の転送が行われる。しかし、それに限らず、例えば、不揮発性メモリの容量と揮発性メモリの容量が異なっている等の場合には、不揮発性メモリのアドレスと揮発性メモリのアドレスとの対応を管理する管理情報が用意され、その管理情報を基に、退避処理や回復処理が行われても良い。
【００３５】
図３７は、ＭＰ−ＰＫ１１２の構成例を示す。
【００３６】
ＭＰ−ＰＫ１１２は、例えば、Ｍ−ＭＰ３７０１と、ローカルメモリ３７０２とを有する。ローカルメモリ３７０２には、Ｍ−ＭＰ３７０１に実行されるコンピュータプログラム（以下、「ＰＧ」と略す）として、例えば、Ｉ／Ｏ制御ＰＧ３７１１と、バッテリ監視ＰＧ３７１２と、退避ＰＧ３７１３と、制御情報管理ＰＧ３７１４と、リフレッシュＰＧ３７１５と、回復ＰＧ３７１６と、退避対象制御ＰＧ３７１７とを記憶する。各ＰＧについては、後に説明する。なお、以下、説明を簡易にするために、ＰＧを主語として処理を説明することがあるが、その処理は、ＰＧを実行するＭ−ＭＰ１２２によって行われる処理である。
【００３７】
図５は、ホスト１０１からリードコマンドを受けたストレージシステム１０３で行われる処理の流れを示す。点線は、コマンドや指示の流れを表し、実線は、ホストデータの流れを表す（これは、図６についても同様である）。
【００３８】
ＣＨＡ−ＰＫ１１１がホスト１０１からリードコマンドを受けると、リードコマンドがＭＰ−ＰＫ１１２に送られる。
【００３９】
揮発性メモリ１２１にリード対象のホストデータがあれば、ＭＰ−ＰＫ１１２内のＩ／Ｏ制御ＰＧ３７１１は、そのホストデータを揮発性メモリ１２１から読出しＣＨＡ−ＰＫ１１１を通じてホスト１０１に送信する。
【００４０】
揮発性メモリ１２１にリード対象のホストデータが無ければ、ＭＰ−ＰＫ１１２内のＩ／Ｏ制御ＰＧ３７１１は、受信したリードコマンドで指定されているリード元ボリューム（例えばポート番号及びＬＵＮ（Logical Unit Number））及びリード元アドレス（例えばＬＢＡ（Logical Block Address））等を基に、ＤＫＡ−ＰＫ１１４に、リード対象のホストデータ“Ｃ”を揮発性メモリ１２１に送ることのリード指示を送信する。ＤＫＡ−ＰＫ１１４が、そのリード指示に応答して、そのリード指示から特定されるＨＤＤ１１５からリード対象のホストデータ“Ｃ”を読み出し、そのホストデータ“Ｃ”を揮発性メモリ１２１に格納し、リード完了をＭＰ−ＰＫ１１２に通知する。リード完了の通知を受けたＭＰ−ＰＫ１１２内のＩ／Ｏ制御ＰＧ３７１１は、揮発性メモリ１２１からホストデータ“Ｃ”を読み出してＣＨＡ−ＰＫ１１１を通じてホスト１０１に送信する。
【００４１】
図６は、ホスト１０１からライトコマンドを受けたストレージシステム１０３で行われる処理の流れを示す。
【００４２】
ＣＨＡ−ＰＫ１１１がホスト１０１からライトコマンドを受けると、ライトコマンドがＭＰ−ＰＫ１１２に送られる。ＭＰ−ＰＫ１１２内のＩ／Ｏ制御ＰＧ３７１１は、そのライトコマンドに従うライト対象のホストデータ“Ｄ”を揮発性メモリ１２１に書き込む。そして、ＭＰ−ＰＫ１１２内のＩ／Ｏ制御ＰＧ３７１１は、受信したライトコマンドで指定されているライト先ボリューム及びライト先アドレス等を基に、ＤＫＡ−ＰＫ１１４に、ホストデータ“Ｄ”のＨＤＤ１１５へのライト指示を送信する。ＤＫＡ−ＰＫ１１４が、そのライト指示に応答して、揮発性メモリ１２１からホストデータ“Ｄ”を読み出し、そのホストデータ“Ｄ”をＨＤＤ１１５に格納する。
【００４３】
図８は、揮発性メモリ１２１の構成例を示す。
【００４４】
揮発性メモリ１２１は、制御情報エリア８０１とホストデータエリア８０３とで構成される。制御情報エリア８０１に、前述した制御情報が格納され、ホストデータエリア８０３に、ホストデータが格納される。制御情報要素としては、下記情報要素、
（１）各種制御テーブル；
（２）ダーティ量管理情報；
（３）制御量管理情報；
（４）監視充電率情報；
（５）監視ダーティ量情報；
（６）代表退避時刻情報；
（７）ホストデータ退避時刻情報；
（８）ホストデータ管理情報；
がある。以下、各種の制御情報要素を説明する。
【００４５】
図９は、制御テーブルの例を示す。
【００４６】
制御テーブルとは、ＭＰ−ＰＫ１１２が行う制御の基になる情報要素である。制御テーブルには、例えば、構成テーブル９０１、コピーテーブル９０２、モニタテーブル９０３等がある。構成テーブル９０１は、ストレージシステム１０３の構成に関する情報（例えば、どのＬＵＮにどの論理ボリュームが割当てられていてどの論理ボリュームがどのＨＤＤを基に形成されているかを表す情報）を保持するテーブルである。コピーテーブル９０２は、ボリューム間のコピーに関する情報（例えば、どのボリュームとどのボリュームがペアになっていてそのペアがどんな状態であるかを表す情報）を保持するテーブルである。モニタテーブル９０３は、ストレージシステム１０３内の種々の監視結果を表す情報を保持するテーブルである。各種制御テーブルには、制御テーブルを識別するためのテーブルＩＤが割当てられている。
【００４７】
図１０は、テーブル管理情報の構成を示す。
【００４８】
テーブル管理情報１００１は、制御テーブルに関する情報を保持するテーブルである。テーブル管理情報１００１には、例えば、制御テーブル毎に、退避要否情報、退避重要度情報、更新有無情報、更新カウント値、退避済み情報、テーブルサイズ及び退避時刻情報といったサブ情報要素が保持される。以下、図１０の説明において、或る一つの制御テーブルを「対象制御テーブル」と言い、対象制御テーブルについて、各サブ情報要素を説明する。
【００４９】
退避要否情報は、対象制御テーブルを不揮発性メモリ１２３に退避する必要があるかどうかを表すサブ情報要素である。退避要か退避不要かは、対象制御テーブルの種類を基に予め決定されている。
【００５０】
退避重要度情報は、対象制御テーブルの重要度を表すサブ情報要素である。本実施形態では、重要度としての値は、“高”（対象制御テーブルの退避が必須であることを意味する値）と、“低”（対象制御テーブルが退避されなくても差し支えないことを意味する値）との２種類がある。重要度の値も、対象制御テーブルの種類を基に予め決定されている。
【００５１】
更新有無情報は、ストレージシステム１０３が起動した後、若しくは、対象制御テーブルが退避された後に、対象制御テーブルが更新されたか否かを表すサブ情報要素である。
【００５２】
更新カウント値は、対象制御テーブルが更新された回数を表すサブ情報要素である。
【００５３】
退避済み情報は、対象制御テーブルの退避処理が正常に完了したか否かを表すサブ情報要素である。退避済み情報としての値は、例えば、退避済みであれば“０”、退避済みでなければ“１”である。
【００５４】
テーブルサイズは、対象制御テーブルのサイズ（情報量）を表すサブ情報要素である。
【００５５】
退避時刻情報は、対象制御テーブルが退避された時刻を表すサブ情報要素である。
【００５６】
図１１は、ダーティ量管理情報の構成を示す。
【００５７】
ダーティ量管理情報１１０１には、どんなバッテリ充電率の場合にどのぐらいのダーティデータを退避することが可能かを表す制御情報要素である。具体的には、バッテリ充電率範囲毎の退避可能なダーティ量が保持される。「ダーティ量」とは、ダーティデータの総量である。ダーティ量は、ホストデータエリア８０３（図８参照）の記憶容量を１００としたときの、ダーティデータの総量である。「ダーティデータ」とは、揮発性メモリ１２１内のホストデータのうちの、ＨＤＤ１１５に未格納のホストデータである。それに対し、揮発性メモリ１２１内のホストデータのうちの、ＨＤＤ１１５に格納済みのホストデータを、「クリーンデータ」と言う。
【００５８】
図１２は、制御量管理情報の構成を示す。
【００５９】
制御量管理情報１２０１には、どんなバッテリ充電率の場合にどのぐらいの制御情報を退避することが可能かを表す制御情報要素である。具体的には、バッテリ充電率範囲毎の退避可能な制御情報量が保持される。制御情報量は、制御情報エリア８０１（図８参照）の記憶容量を１００としたときの、制御情報の量である。
【００６０】
図１３は、監視充電率情報を示す。
【００６１】
監視充電率情報１３０１は、バッテリ１２４の充電率の監視結果を表す制御情報要素である。具体的には、バッテリ１２４の充電率は、定期的に（又は不定期的に）把握され、把握された充電率が、監視充電率情報１３０１として揮発性メモリ１２１に記憶される。バッテリ１２４の充電率の監視は、バッテリ監視ＰＧ３７１２と、Ｃ−ＭＰ１２２の両方が行うことができる。つまり、ソフトウェア的な監視と、ハードウェア的な監視との両方を行うことができる。ハードウェア的な監視で把握されたバッテリ充電率が、監視充電率情報１３０１として優先的に記憶され、ハードウェア的な監視がされない場合には、ソフトウェア的な監視で把握されたバッテリ充電率が、監視充電率情報１３０１として記憶される。
【００６２】
図１４は、監視ダーティ量情報を示す。
【００６３】
監視ダーティ量情報１４０１は、現時点のダーティ量を表す制御情報要素である。例えば、監視ダーティ量情報１４０１は、ダーティデータの総量が変更される都度、例えば、揮発性メモリ１２１にライト対象のデータが格納される都度、或いは、ダーティデータが揮発性メモリ１２１からＨＤＤ１１５に格納される都度に、Ｉ／Ｏ制御ＰＧ３７１１或いは退避ＰＧ３７１３によって更新される。
【００６４】
図１５Ａは、代表退避時刻情報を示す。
【００６５】
代表退避時刻情報１５０１は、テーブル管理情報１００１（図１０参照）における退避時刻情報や、図１５Ｂに示すホストデータ退避時刻情報１６０１の基になる制御情報要素である。代表退避時刻情報１５０１は、例えば、計画停止の際の退避処理の開始時刻である。
【００６６】
図１５Ｂは、ホストデータ退避時刻情報を示す。
【００６７】
ホストデータ退避時刻情報１６０１は、揮発性メモリ１２１からＨＤＤ１１５にダーティデータが退避された時刻を表す制御情報要素である。
【００６８】
図１６は、ホストデータ管理情報を示す。
【００６９】
ホストデータ管理情報１７０１は、揮発性メモリ１２１内のホストデータエリア８０３における各スロット（記憶領域）に記憶されているホストデータの属性を管理するための制御情報要素である。ホストデータ管理情報１７０１には、例えば、スロット毎に、スロット番号とスロット状態とが保持される。スロット状態は、対応するスロットに格納されているホストデータがクリーンデータかダーティデータかを表す情報である。
【００７０】
なお、スロットのサイズは、一定である。従って、ダーティデータが格納されているスロットの数とスロットのサイズとのサイズとホストデータエリア８０３とのサイズを基に、ダーティ量を算出することが可能である。
【００７１】
図１７は、アドレス管理情報を示す。
【００７２】
アドレス管理情報１７１０は、前述した一又は複数のアドレスセット（開始アドレスと終了アドレスのセット）で構成されている情報である。アドレス管理情報１７１０は、Ｃ−ＭＰ１２２内のレジスタ、或いは、揮発性メモリ１２１に格納され、不揮発性メモリ１２３に退避される。
【００７３】
前述した情報のうち、少なくとも、テーブル管理情報１００１（図１０参照）、代表退避時刻情報１５０１（図１５Ａ参照）、及びホストデータ退避時刻情報１７０１（図１６参照）は、電断フェーズでの退避処理での退避対象である。言い換えれば、アドレス管理情報１７１０には、電断フェーズでの退避処理に備えて、テーブル管理情報１００１が占める範囲の開始アドレス及び終了アドレスと、代表退避時刻情報１５０１が占める範囲の開始アドレス及び終了アドレスと、ホストデータ退避時刻情報１７０１が占める範囲の開始アドレス及び終了アドレスとが必ず含まれる。
【００７４】
以下、本実施形態で行われる処理を、
計画停止フェーズ；
電断フェーズ；
回復フェーズ；
通常フェーズ；
の４つのフェーズに場合分けして説明する。
【００７５】
＜計画停止フェーズ＞。
【００７６】
図７は、計画停止フェーズで行われる退避処理の概要を示す。
【００７７】
計画停止フェーズでは、電断フェーズと異なり、揮発性メモリ１２１への電力は、一次電源１１７から供給される。従って、バッテリ１２４の充電率の割に退避対象としての制御情報要素の総量が多くても、揮発性メモリ１２１から不揮発性メモリ１２３に全ての退避対象の制御情報要素を退避することは可能である。
【００７８】
計画停止フェーズは、例えば、計画停止信号が検出されたときに開始される。計画停止信号は、例えば、ホスト１０１或いは管理計算機（図示せず）等の外部の装置から入力される信号であっても良いし、ストレージシステム１０３に備えられている特定のスイッチがターンオンされることによって入力される信号であっても良い。
【００７９】
計画停止フェーズでは、ダーティ退避処理と制御退避処理の２種類の退避処理が行われる。ダーティ退避処理では、ダーティデータ“Ｅ”が、そのダーティデータ“Ｅ”をライト対象とするライトコマンドに従う書込み先に対応したＨＤＤ１１５に格納される。制御退避処理では、複数種類の制御テーブルのうちのいずれを非退避対象とするかが決定され、非退避対象とされなかった制御情報要素“Ｆ”（つまり退避対象とされた制御情報要素“Ｆ”）が、不揮発性メモリ１２３に退避される。
【００８０】
ダーティ退避処理も制御退避処理も、退避ＰＧ３７１３（図３７参照）によって行われる。以下、図１８を参照して、ダーティ退避処理の流れを説明し、図１９を参照して、制御退避処理の流れを説明する。
【００８１】
図１８は、ダーティ退避処理の流れを示す。
【００８２】
退避ＰＧ３７１３は、計画停止信号を検出したら、ホストデータ管理情報１７０１（図１６参照）を参照し（Ｓ１８０１）、ホストデータ管理情報１７０１における先頭のレコードから末尾のレコード（言い換えれば、ホストデータエリア８０３における先頭のスロットから末尾のスロット）にかけて、Ｓ１８０２乃至Ｓ１８０４を実行する。
【００８３】
すなわち、退避ＰＧ３７１３は、参照したレコードにスロット状態として“ダーティ”が記録されていなければ（Ｓ１８０２：ＮＯ）、Ｓ１８０３をスキップしてＳ１８０４を実行する。一方、退避ＰＧ３７１３は、参照したレコードにスロット状態として“ダーティ”が記録されていれば（Ｓ１８０２：ＹＥＳ）、そのレコードに対応したスロットに記憶されているダーティデータをＨＤＤ１１５に格納し、そのレコードにおけるスロット状態の値を“ダーティ”から“クリーン”に変更する（Ｓ１８０３）。そして、退避ＰＧ３７１３は、参照したレコードが末尾のレコードでなければ（Ｓ１８０４：ＮＯ）、次のレコードについてＳ１８０２を行う。
【００８４】
図１９は、制御退避処理の流れを示す。
【００８５】
退避ＰＧ３７１３は、計画停止信号を検出したら、代表退避時刻情報１５０１を、現在時刻を表す情報に更新する（Ｓ１９０１）。現在時刻は、例えばタイマから取得される。
【００８６】
退避ＰＧ３７１３は、テーブル管理情報１００１（図１０参照）を参照し、テーブル管理情報１００１における先頭のレコードから末尾のレコードにかけて、Ｓ１９０３乃至Ｓ１９０７を実行する。
【００８７】
すなわち、退避ＰＧ３７１３は、参照したレコードに退避要否として“否”が記録されていれば（Ｓ１９０３：ＮＯ）、Ｓ１９０４乃至Ｓ１９０６をスキップしてＳ１９０７を実行する。退避ＰＧ３７１３は、参照したレコードに退避要否として“要”が記録されていれば（Ｓ１９０３：ＹＥＳ）、そのレコードに更新有無として“有”が記録されているか“無”が記録されているかを判断する（Ｓ１９０４）。更新有無として“有”が記録されていれば、退避ＰＧ３７１３は、Ｓ１９０５として、
（１９０５−１）参照したレコードにおける退避時刻情報を、代表退避時刻情報と同じ情報に更新する；
（１９０５−２）Ｃ−ＭＰ１２２に、参照したレコードに対応する制御テーブルが記憶されている領域に対応したアドレスセットを設定し、Ｃ−ＭＰ１２２に、その設定したアドレスセットに対応した領域に記憶されている制御テーブルを揮発性メモリ１２１から不揮発性メモリ１２３に退避させる；
（１９０５−３）参照したレコードにおける退避済み情報として値を、退避済みを表す値“０”に更新する；
を実行する。一方、更新有無として“無”が記録されていれば、退避ＰＧ３７１３は、Ｓ１９０６として、
（１９０６−１）参照したレコードにおける退避時刻情報を、代表退避時刻情報と同じ情報に更新する；
（１９０６−２）参照したレコードにおける退避済み情報としての値を、退避済みを表す値“０”に更新する；
を実行する。つまり、更新有無“無”に対応した制御レコードは、非退避対象とされ、不揮発性メモリ１２３に退避されない。Ｓ１９０５或いはＳ１９０６の後、退避ＰＧ３７１３は、参照したレコードが末尾のレコードでなければ（Ｓ１９０７：ＮＯ）、次のレコードについてＳ１９０３を行う。
【００８８】
テーブル管理情報１００１における末尾のレコードについてＳ１９０３乃至Ｓ１９０７が行われたら（Ｓ１９０７：ＹＥＳ）、退避ＰＧ３７１３は、Ｃ−ＭＰ１２２に、テーブル管理情報１００１及び代表退避時刻情報１５０１を不揮発性メモリ１２３に退避させる（Ｓ１９０８）。
【００８９】
以上の制御退避処理によれば、退避要否“否”の制御テーブル、並びに、退避済み且つ更新有無“無”の制御テーブルが、非退避対象とされる。このため、計画停止フェーズにおける退避処理に要する時間を短く抑えることが期待できる。
【００９０】
なお、計画停止フェーズにおいて、全ての退避対象の退避に成功した場合、退避成功を表す情報が、Ｃ−ＭＰ１２２によって、不揮発性メモリ１２３に設定される。
【００９１】
＜電断フェーズ＞。
【００９２】
電断フェーズでは、図２０に示すように、Ｃ−ＭＰ１２２に設定されているアドレスセットが示す領域に記憶されている全ての情報要素、つまり、ダーティデータ“Ｅ”も制御情報要素“Ｆ”も、揮発性メモリ１２１から不揮発性メモリ１２３に退避される。
【００９３】
図２１は、電断フェーズで行われる退避処理の流れを示す。
【００９４】
Ｃ−ＭＰ１２２は、電断を検出すると、Ｃ−ＭＰ１２２のレジスタに設定されているアドレス管理情報１７１０（図１７参照）を参照する（Ｓ２１０１）。Ｃ−ＭＰ１２２は、そのアドレス管理情報１７１０から一つのアドレスセットを選択し、選択されたアドレスセットから特定される領域（揮発性メモリ１２１内の領域）に記憶されている情報（ダーティデータ又は制御情報内の退避対象としての情報要素）を、揮発性メモリ１２１から不揮発性メモリ１２３に退避する（Ｓ２１０２）。Ｃ−ＭＰ１２２は、アドレス管理情報１７１０内に未選択のアドレスセットがあれば（Ｓ２１０３：ＮＯ）、そのアドレスセットについてＳ２１０２を実行し、未選択のアドレスセットがなければ（Ｓ２１０３：ＹＥＳ）、終了する。
【００９５】
以上の流れによれば、電断フェーズでは、アドレス管理情報１７１０内のアドレスセットに対応した領域に記憶されている情報要素が、揮発性メモリ１２１から不揮発性メモリ１２３に退避される。揮発性メモリ１２１におけるどの情報要素を電断フェーズでの退避対象とするかが、通常フェーズにおいて制御される。すなわち、通常フェーズにおいて、或る情報要素が非退避対象に決定された場合には、その或る情報要素が記憶されている領域を表すアドレスセットが、アドレス管理情報１７１０から削除され、逆に、或る情報要素が非退避対象から退避対象にされた場合には、その或る情報要素が記憶されている領域を表すアドレスセットが、アドレス管理情報１７１０に追加される。全ての退避対象の退避に成功した場合、退避成功を表す情報が、Ｃ−ＭＰ１２２によって、不揮発性メモリ１２３に設定される。
【００９６】
＜回復フェーズ＞。
【００９７】
回復フェーズでは、図２２に示すように、不揮発性メモリ１２３に記憶されている全ての情報要素、例えば、ダーティデータ“Ｅ”及び制御情報要素“Ｆ”が、不揮発性メモリ１２３から揮発性メモリ１２１に回復される。
【００９８】
図２３は、回復フェーズで行われる回復処理の流れを示す。
【００９９】
回復ＰＧ３７１６がストレージシステム１０３の起動を検出した場合、回復ＰＧ３７１６は、回復処理をＣ−ＭＰ１２２に命じる。
【０１００】
Ｃ−ＭＰ１２２は、不揮発性メモリ１２３に、退避失敗を表す情報が記憶されていれば（Ｓ２３０１：ＮＯ）、退避対象が揮発したと扱う（Ｓ２３０７）。具体的には、Ｃ−ＭＰ１２２は、退避対象が揮発したことを、回復ＰＧ３７１６に伝える。ストレージシステム１０３が起動した後、退避対象が揮発したとして、種々の制御が行われる。
【０１０１】
Ｃ−ＭＰ１２２は、不揮発性メモリ１２３に、退避成功を表す情報が記憶されていれば（Ｓ２３０１：ＹＥＳ）、退避されたアドレス管理情報から一つのアドレスセットを取得し（Ｓ２３０２）、そのアドレスセットに対応した領域（不揮発性メモリ１２３内の領域）から情報要素を回復する（Ｓ２３０３）。その情報要素に対応した退避時間情報（例えば、制御テーブルに対応した退避時間情報）が代表退避時間情報１５０１と不一致であれば（Ｓ２３０４：ＹＥＳ）、Ｃ−ＭＰ１２２は、Ｓ２３０３で回復された情報要素を揮発したと扱い（Ｓ２３０５）、回復された情報要素に対応した退避時間情報が代表退避時間情報１５０１と一致であれば（Ｓ２３０４：ＮＯ）、Ｓ２３０５をスキップする。退避されたアドレス管理情報に未選択のアドレスセットがあれば（Ｓ２３０６：ＮＯ）、そのアドレスについてＳ２３０２が行われ、未選択のアドレスセットが無ければ（Ｓ２３０６：ＹＥＳ）、回復処理の終了となる。
【０１０２】
なお、揮発したか否かが、代表退避時刻情報と退避時刻情報が一致するか否かで判定されるが、時刻情報に代えて、カウント値など、他種の情報が採用されても良い。例えば、図１９のＳ１９０１では、代表退避値が、特定の値に更新され、Ｓ１９０５では、退避値が、代表退避値と同じ値に更新され、Ｓ１９０６では、退避値が、代表退避値と異なる値に更新される。このような方法でも、回復処理において、代表退避値と退避値が一致するか否かで、回復された情報要素を揮発として扱うか否かを制御することができる。
【０１０３】
＜通常フェーズ＞。
【０１０４】
通常フェーズで処理としては、例えば、下記（Ｎ−１）乃至（Ｎ−６）、
（Ｎ−１）バッテリ監視処理；
（Ｎ−２）バッテリ充電率に応じた退避対象制御処理；
（Ｎ−３）リード処理／ライト処理（ダーティ量調整処理）；
（Ｎ−４）制御テーブル退避処理；
（Ｎ−５）更新管理処理；
（Ｎ−６）事前リフレッシュ処理；
の６種類の処理がある。
【０１０５】
（Ｎ−１）バッテリ監視処理。
【０１０６】
バッテリ監視処理とは、定期的に（又は不定期的に）バッテリ１２４の充電率を把握する処理である。バッテリ監視処理としては、前述したように、ハードウェア的な処理とソフトウェア的な処理がある。
【０１０７】
ハードウェア的な処理は、Ｃ−ＭＰ１２２が行う。Ｃ−ＭＰ１２２は、把握されたバッテリ充電率を表す情報をレジスタに設定する。Ｃ−ＭＰ１２２のレジスタに設定されたバッテリ充電率情報は、バッテリ監視ＰＧ３７１によって取得され、監視充電率情報１３０１（図１３参照）として揮発性メモリ１２１に格納される。
【０１０８】
ソフトウェア的な処理は、バッテリ監視ＰＧ３７１２が行う。具体的には、例えば、バッテリ監視ＰＧ３７１２は、（２６−Ａ）乃至（２６−Ｃ）の処理、
（２６−Ａ）バッテリ１２４の予め分かっている充電特性を基に、バッテリ１２４の現時点の充電率から満充電になるまでに必要な時間長（以下、時間長Ｔ）を把握し、時間長Ｔと、ストレージシステム１０３が起動してからの経過時間とを基に、バッテリ１２４の充電率を計算（推測）する；
（２６−Ｂ）電断が検出された場合、電断検出時のバッテリ１２４の充電率（（２６−Ａ）で計算された値）と、バッテリ１２４の予め分かっている消費特性を基に定義されている、電断１回当たりのバッテリ消費量とを基に（或いは、電断検出時のバッテリ１２４の充電率と、単位時間当りのバッテリ消費量と、電断検出時からの経過時間）とを基に）、バッテリ１２４の残量（充電率）を計算する；
（２６−Ｃ）電断から回復されたことを検出した場合、（２６−Ａ）を実行する；
を行う。
【０１０９】
図２６を参照して、ソフトウェア的なバッテリ監視処理の具体例を説明すると、以下の通りである。すなわち、バッテリ監視ＰＧ３７１２は、電断発生１回当たりのバッテリ消費量を５０％とすると、以下の（２６−１）乃至（２６−７）の処理、
（２６−１）満充電の状態で電断発生１があり、その結果、前述の（２６−Ｂ）の処理によって、バッテリ充電率（残量）が５０％であると計算する；
（２６−２）バッテリ充電率が５０％のときにストレージシステム１０１が起動し、前述の（２６−Ａ）の処理を行い、その結果、その起動からの経過時間が、充電率５０％から満充電になるまでに必要な時間（３ｈ）を経過したため、バッテリ充電率を１００％と計算する；
（２６−３）満充電の状態で電断発生２があり、その結果、前述の（２６−Ｂ）の処理によって、バッテリ充電率（残量）が５０％であると計算する；
（２６−４）バッテリ充電率が５０％のときにストレージシステム１０１が起動し、前述の（２６−Ａ）の処理を行い、その結果、その起動からの経過時間が、充電率５０％から満充電になるまでに必要な時間（３ｈ）の半分の時間１．５ｈの時点で、電断発生３があったため、バッテリ充電率を５０％＋２５％＝７５％と計算する；
（２６−５）バッテリ充電率７５％の状態で電断発生３があり、その結果、前述の（２６−Ｂ）の処理によって、バッテリ充電率（残量）が２５％であると計算する；
（２６−６）バッテリ充電率が２５％のときにストレージシステム１０１が起動し、前述の（２６−Ａ）の処理を行い、その結果、その起動からの経過時間が２ｈの時点で、電断発生４が生じたため、バッテリ充電率を２５％＋（５０％×２／３）≒５８％と計算する；
（２６−７）バッテリ充電率５８％のときに電断発生４があり、その結果、前述の（２６−Ｂ）の処理によって、バッテリ充電率（残量）が８％であると計算する；
を行う。
【０１１０】
以上のように、ソフトウェア的にバッテリ監視処理が行われるので、ハードウェア的なバッテリ監視処理がサポートされていなくても、或いは、Ｃ−ＭＰ１２２に障害が発生しても、バッテリ充電率を把握することができる。
【０１１１】
（Ｎ−２）バッテリ充電率に応じた退避対象制御処理。
【０１１２】
バッテリ充電率に応じた退避対象制御処理は、把握されたバッテリ充電率に応じて、退避対象を制御する処理である。退避対象制御ＰＧ３７１７が、バッテリ充電率が把握される都度に、図３７に示す、バッテリ充電率に応じた退避対象制御処理を行う。
【０１１３】
すなわち、退避対象制御ＰＧ３７１７は、把握されたバッテリ充電率（最新の監視充電率情報１３０１が表すバッテリ充電率）と、直前回に把握されたバッテリ充電率とを比較する充電率比較処理を行う。
【０１１４】
充電率比較処理の結果、把握されたバッテリ充電率が属するバッテリ充電率範囲が、直前回に把握されたバッテリ充電率が属するバッテリ充電率範囲と同じであれば（Ｓ３５０１：ＮＯ、Ｓ３０５４：ＮＯ）、Ｓ３５０２、Ｓ３５０３、Ｓ３５０５及びＳ３５０６の処理は実行されない。
【０１１５】
前述の充電率比較処理の結果、把握されたバッテリ充電率が、直前回に把握されたバッテリ充電率よりも低ければ、具体的には、把握されたバッテリ充電率が属するバッテリ充電率範囲が、直前回に把握されたバッテリ充電率が属するバッテリ充電率範囲よりも低い範囲であれば（Ｓ３５０１：ＮＯ、Ｓ３０５４：ＹＥＳ）、退避対象制御ＰＧ３７１７は、Ｓ３５０５で、下記の処理、
（３５０５−１）揮発性メモリ１２１におけるダーティデータの総量が、把握されたバッテリ充電率が属するバッテリ充電率範囲に対応するダーティ量（規定ダーティ量）を超えていれば、ダーティデータの総量が規定ダーティ量以下になるように、ダーティデータをＨＤＤ１１５に格納し（つまりダーティデータを減らし）、それに伴い、監視ダーティ量情報１４０１（図１４参照）を更新する；
（３５０５−２）退避する制御情報要素の総量が、把握されたバッテリ充電率が属するバッテリ充電率範囲に対応する制御情報量（以下、規定情報量）を超えていれば、退避する制御情報要素の総量が規定情報量以下になるように、より多くの制御テーブル（具体的には、より多くの、退避要否“要”且つ重要度“低”に対応した制御テーブル）を非退避対象とし、非退避対象の制御テーブルに対応した退避時刻情報として、現在時刻を表す情報を、テーブル管理情報１００１（図１０参照）に設定する；
を実行する。これにより、後の回復処理では、回復された代表退避時刻情報１５０１が表す時刻と、非退避対象とされた制御情報テーブルに対応する退避時刻とが不一致となるため、回復された制御テーブルが、電断時に退避されなかった制御テーブルであると判断することが可能である。
【０１１６】
その後、退避対象制御ＰＧ３７１７は、Ｓ３５０６で、アドレス管理情報１７１０（図１７参照）から、下記（３５０６−１）及び（３５０６−２）、
（３５０６−１）前述の（３５０５−１）でＨＤＤ１１５に格納されたダーティデータが存在していた領域（揮発性メモリ１２１における領域）のアドレス範囲を表すアドレスセット；
（３５０６−２）前述の（３５０５−２）で非退避対象とされた制御テーブルが存在する領域（揮発性メモリ１２１における領域）のアドレス範囲を表すアドレスセット；
を削除する。これにより、図３６に示すように、電断時に退避される制御情報要素の総量が減ることになる。
【０１１７】
前述の充電率比較処理の結果、把握されたバッテリ充電率が、直前回に把握されたバッテリ充電率よりも高ければ、具体的には、把握されたバッテリ充電率が属するバッテリ充電率範囲が、直前回に把握されたバッテリ充電率が属するバッテリ充電率範囲よりも高い範囲であれば（Ｓ３５０１：ＹＥＳ）、退避対象制御ＰＧ３７１７は、Ｓ３５０２で、以下の処理を行う。すなわち、退避対象制御ＰＧ３７１７は、退避する制御情報要素の総量が、把握されたバッテリ充電率が属するバッテリ充電率範囲に対応する制御情報量（規定情報量）を超えない範囲で、より多くの制御テーブル（具体的には、より多くの、退避要否“要”且つ重要度“低”に対応した制御テーブル）を退避対象とし、退避対象の制御テーブルに対応した退避時刻情報として、代表退避時刻を表す情報をテーブル管理情報１００１（図１０参照）に設定する。これにより、後の回復処理では、回復された代表退避時刻情報１５０１が表す時刻と、退避対象とされた制御情報テーブルに対応する退避時刻とが一致するため、回復された制御テーブルが、電断時に退避された制御テーブルであると判断することが可能である。
【０１１８】
その後、退避対象制御ＰＧ３７１７は、Ｓ３５０３で、アドレス管理情報１７１０（図１７参照）に、Ｓ３５０２で退避対象とされた制御テーブルが存在する領域（揮発性メモリ１２１における領域）のアドレス範囲を表すアドレスセットを追加する。これにより、図３６に示すように、電断時に退避される制御情報要素の総量が増えることになる。
【０１１９】
バッテリ充電率に応じた退避対象制御処理では、退避対象としてのダーティデータの総量、並びに、退避対象としての制御情報要素の総量を、アドレス管理情報１７１０に設定されているアドレスセットから、特定することができる。従って、例えば、Ｓ３５０５では、どの重要度“低”の制御テーブルを退避対象から非退避対象に切替えることで、退避対象としての制御情報要素の総量を規定情報量以下にすることができるかを、把握することができる。
【０１２０】
以上の、バッテリ充電率に応じた退避対象制御処理によれば、バッテリ充電率に応じて退避対象の総量が制御される。このため、例えば図２４に示すような、電断発生の繰り返しによってバッテリ残量が枯渇してしまうことを防止することができる。具体的には、例えば、図２５に示すように、バッテリ充電率が低い場合には退避対象の総量も少なく制御されるので、退避処理が短い時間で済み、それ故、電断１回あたりに消費するバッテリ充電率も低く抑えられる。この結果、図２４に示した例と異なり、図２５に示すように、バッテリ残量が枯渇してしまうことを防止することができる。
【０１２１】
（Ｎ−３）リード処理／ライト処理（ダーティ量調整処理）。
【０１２２】
リード処理は、図５を参照して説明した処理であり、ライト処理は、図６を参照して説明した処理である。
【０１２３】
ライト処理では、一時的に、揮発性メモリ１２１にダーティデータが増えることになる。そこで、Ｉ／Ｏ制御ＰＧ３７１１が、図２８に示すダーティ量調整処理を行う。
【０１２４】
すなわち、Ｉ／Ｏ制御ＰＧ３７１１は、ライトコマンドを受けたとき、監視充電率情報１３０１が表す充電率に対応したダーティ量（以下、図２８の説明において、「上限ダーティ量」）をダーティ量管理情報１１０１から把握し、且つ、監視ダーティ量情報１４０１が表すダーティ量（以下、図２８の説明において「現在のダーティ量」と言う）を把握する（Ｓ２８０１）。
【０１２５】
Ｉ／Ｏ制御ＰＧ３７１１は、ライト対象のデータの情報量と現在のダーティ量との和が上限ダーティ量を超えない場合には（Ｓ２８０２：ＹＥＳ）、図２７に実線で示すように、通常ライトモードに従う処理を行う。具体的には、Ｉ／Ｏ制御ＰＧ３７１１は、ライト対象のデータを揮発性メモリ１２１に書き（Ｓ２８０３）、ホスト１０１へライト完了の応答を返す。この場合、ライト対象のデータが格納されているスロットに対応したスロット状態として、ダーティ量管理情報１１０１に、Ｉ／Ｏ制御ＰＧ３７１１によって、“ダーティ”が設定される。
【０１２６】
一方、Ｉ／Ｏ制御ＰＧ３７１１は、ライト対象のデータの情報量と現在のダーティ量との和が上限ダーティ量を超える場合には（Ｓ２８０２：ＮＯ）、図２７に点線で示すように、ライトスルーモードに従う処理を行う。具体的には、Ｉ／Ｏ制御ＰＧ３７１１は、ライト対象のデータを揮発性メモリ１２１に一時記憶させそのライト対象のデータをＨＤＤ１１５に格納し（Ｓ２８０４）、その後で、ホスト１０１へライト完了の応答を返す。この場合、ライト対象のデータが格納されているスロットに対応したスロット状態として、ダーティ量管理情報１１０１に、Ｉ／Ｏ制御ＰＧ３７１１によって、“クリーン”が設定される。
【０１２７】
以上のダーティ量調整処理により、揮発性メモリ１２１におけるダーティデータの総量が、電断フェーズにおいて退避しきれない程の量になってしまうことを防ぐことができる。
【０１２８】
（Ｎ−４）制御テーブル退避処理。
【０１２９】
図３０に示すように、退避対象制御ＰＧ３７１７が、定期的に、各制御テーブルに対応した更新カウント値をチェックする（Ｓ３００１、Ｓ３００２）。
【０１３０】
退避対象制御ＰＧ３７１７は、所定回数見ても変更の無い更新カウント値に対応した制御テーブルを、不揮発性メモリ１２１に格納し、その制御テーブルに対応した退避済み情報を、退避済みを表す“０”に更新し、その制御テーブルに対応したアドレスセットをアドレス管理情報１７１０から削除する（Ｓ３００３）。
【０１３１】
以上の制御テーブル退避処理によれば、例えば図２９に示すように、一定期間以内に更新のあった制御テーブル“Ｃ１”、つまり更新頻度の高い制御テーブル“Ｃ１”は、不揮発性メモリ１２３に退避されないが、一定期間経っても更新の無い制御テーブル、つまり更新頻度の低い制御テーブル“Ｃ２”が、計画停止フェーズ或いは電断フェーズでの退避処理の前に予め不揮発性メモリに格納され、非退避対象とされる（制御テーブル“Ｃ２”が存在する領域に対応したアドレスセットがアドレス管理情報１７１０から削除される）。これにより、計画停止フェーズ及び電断フェーズでの退避処理に要する時間を短く抑えることが期待できる。
【０１３２】
（Ｎ−５）更新管理処理。
【０１３３】
特定のイベントの発生により（例えば、論理ボリュームから別の論理ボリュームへデータがマイグレーションされた、或いは、ボリューム間ペアの状態が変更された等）、少なくとも一つの制御テーブルが更新されることがある。この場合、図３２に示すように、制御情報管理ＰＧ３７１４は、更新された制御テーブル（以下、図３２の説明において「対象制御テーブル」と言う）が、退避要否“要”に対応した制御テーブルであれば（Ｓ３２０１：ＹＥＳ）、Ｓ３２０２として、下記の処理（３２０２−１）乃至（３２０２−４）、
（３２０２−１）対象制御テーブルに対応した更新有無（テーブル管理情報１００１における更新有無情報）を“有”に設定する；
（３２０２−２）対象制御テーブルに対応した更新カウント値を１インクリメントする；
（３２０２−３）対象制御テーブルに対応した退避済み情報を、非退避済みを表す“１”に更新する；
（３２０２−４）対象制御テーブルが記憶されている領域に対応したアドレスセットをアドレス管理情報１７１０に追加する；
を行う。
【０１３４】
以上の更新管理処理によれば、ストレージシステム１０３の起動後、複数の制御テーブルのうち、更新のあった制御テーブルのみが、退避対象とされる。具体的には、例えば、ストレージシステム１０３の起動後、アドレス管理情報１７１０には、所定の退避対象に対応したアドレスセットのみが含まれている。このため、例えば、図３１に示すように、制御テーブル“Ｃ３”が、更新の無いまま計画停止フェーズ或いは電断フェーズに入った場合、計画停止フェーズ或いは電断フェーズでは、制御テーブル“Ｃ３”は非退避対象である。一方、更新のあった制御テーブル“Ｃ４”は、計画停止フェーズ或いは電断フェーズでは退避対象である。
【０１３５】
（Ｎ−６）事前リフレッシュ処理。
【０１３６】
前述したように、特定のイベントの発生により、少なくとも一つの制御テーブルが更新されることがある。この場合、図３２に示すように、リフレッシュＰＧ３７１５は、更新された制御テーブル（以下、図３４の説明において「対象制御テーブル」と言う）が、退避要否“要”に対応した制御テーブルであれば（Ｓ３４０１：ＹＥＳ）、その制御テーブルが格納されている領域に対応した、不揮発性メモリ（フラッシュメモリ）１２３内の領域に、リフレッシュ処理、具体的には消去処理を施す。例えば、複数の物理ページで構成された物理ブロックを複数個備えるＮＡＮＤ型フラッシュメモリの場合には、物理ページ単位で書込みや読出しが行われるが、リフレッシュ処理（消去処理）は、物理ブロック単位で行われる。
【０１３７】
以上の事前リフレッシュ処理により、退避処理に要する時間を短く抑えることが期待できる。具体的には、下記の通りである。
【０１３８】
すなわち、フラッシュメモリの領域に情報を上書きするためには、その領域に一旦リフレッシュ処理を施す必要がある。しかし、退避処理の際にリフレッシュ処理を施すことは、退避処理に要する時間を長引かせる原因になる。
【０１３９】
そして、退避対象の一つは、図３３に示すように、更新のあった制御テーブル“Ｃ６”である。
【０１４０】
そこで、本実施形態では、退避処理が行われる前に、予め、更新のあった制御テーブルに対応した、不揮発性メモリ１２３内の領域に、リフレッシュ処理が施される。このため、その更新のあった制御テーブルの退避の際にリフレッシュ処理を行う必要が無いので、退避処理に要する時間を短くすることが期待できる。
【０１４１】
なお、この事前リフレッシュ処理は、更新のあった制御テーブルに対応した領域だけでなく、更新が無くても退避されることになる制御情報要素の退避先領域に対して行われても良い。
【０１４２】
以上、本発明の好適な実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、アドレスセットに代えて、開始アドレス（又は終了アドレス）とデータサイズとのセットが採用されても良い。また、例えば、図３８に示すように、退避対象制御ＰＧ３７１７が、定期的にテーブル管理情報１００１をチェックし（Ｓ３８０１）、退避済み且つ更新無しに対応した制御テーブルが記憶されている領域に対応したアドレスセットを、アドレス管理情報１７０１から削除しても良い（Ｓ３８０２）。つまり、退避済み且つ更新無しに対応した制御テーブルが、計画停止フェーズ及び電断フェーズの前に予め非退避対象にされても良い。
【図１】
2011524555.tif 000003
【図２】
2011524555.tif 000004
【図３】
2011524555.tif 000005
【図４】
2011524555.tif 000006
【図５】
2011524555.tif 000007
【図６】
2011524555.tif 000008
【図７】
2011524555.tif 000009
【図８】
2011524555.tif 000010
【図９】
2011524555.tif 000011
【図１０】
2011524555.tif 000012
【図１１】
2011524555.tif 000013
【図１２】
2011524555.tif 000014
【図１３】
2011524555.tif 000015
【図１４】
2011524555.tif 000016
【図１５】
2011524555.tif 000017
【図１６】
2011524555.tif 000018
【図１７】
2011524555.tif 000019
【図１８】
2011524555.tif 000020
【図１９】
2011524555.tif 000021
【図２０】
2011524555.tif 000022
【図２１】
2011524555.tif 000023
【図２２】
2011524555.tif 000024
【図２３】
2011524555.tif 000025
【図２４】
2011524555.tif 000026
【図２５】
2011524555.tif 000027
【図２６】
2011524555.tif 000028
【図２７】
2011524555.tif 000029
【図２８】
2011524555.tif 000030
【図２９】
2011524555.tif 000031
【図３０】
2011524555.tif 000032
【図３１】
2011524555.tif 000033
【図３２】
2011524555.tif 000034
【図３３】
2011524555.tif 000035
【図３４】
2011524555.tif 000036
【図３５】
2011524555.tif 000037
【図３６】
2011524555.tif 000038
【図３７】
2011524555.tif 000039
【図３８】
2011524555.tif 000040
【手続補正書】
【提出日】平成22年3月5日(2010.3.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
外部装置（１０１）からＩ／Ｏ（Input/Output）コマンドを受信するストレージシステムであって、
複数の記憶装置（１１５）と、
二次電源であるバッテリ（１２４）と、
揮発性メモリ（１２１）と、
前記複数の記憶装置のいずれにも未だ書込まれていないタイプのデータであるダーティデータのうち退避可能なダーティデータの総量であるダーティ量と前記バッテリとの対応を示すダーティ量管理情報（１１０１）、前記バッテリの監視充電率情報（１３０１）及び現在のダーティ量を示す監視ダーティ量情報（１４０１）を記憶する不揮発性メモリ（１２３）と、
下記（Ａ）〜（Ｄ）の処理を行うＩ／Ｏ制御部（３７１１）と、
（A）前記Ｉ／Ｏコマンドがライトコマンドの場合、前記ライトコマンド、前記ダーティ量管理情報、前記監視充電率情報及び監視ダーティ量情報から、前記ライトコマンドの受信後にダーティ量がダーティ量の上限を超えるか否かを判断する、
（B）前記（A）の判断の結果が否定的の場合、そのライトコマンドに従うデータを前記揮発性メモリに一時記憶させ、
（Ｃ）前記（Ａ）の判断の結果が肯定的の場合、前記一時記憶の処理に加えて、そのデータを前記揮発性メモリから読み出して前記複数の記憶装置の少なくとも一つに書込み、
（Ｄ）前記Ｉ／Ｏコマンドがリードコマンドの場合、そのリードコマンドに従うデータを前記複数の記憶装置の少なくとも一つから読み出して前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記外部装置に送信する、
一次電源（１１７）から前記揮発性メモリへの給電が無くなった場合に、前記バッテリからの給電により、前記揮発性メモリに記憶されている複数の情報要素のうちの全ての退避対象としての情報要素を前記不揮発性メモリに退避する退避部（１２２）と、
前記バッテリの充電状況を監視し、検出された充電状況を前記監視充電率情報に反映するバッテリ監視部（３７１２、１２２）と
を備えるストレージシステム。
【請求項２】
前記把握された充電状況に応じて、前記揮発性メモリに記憶されているどの情報要素を前記退避対象とするかを制御する退避対象制御部（３７１７）を更に備え、
前記揮発性メモリに記憶される情報要素には、Ｉ／Ｏデータと制御情報要素とが含まれており、
前記Ｉ／Ｏデータは、前記揮発性メモリに記憶されている情報要素の一つであって、前記外部装置からのＩ／Ｏコマンドに応答して書き込まれる又は読み出されるデータであり、
前記Ｉ／Ｏデータは、前記複数の記憶装置のいずれかに既に書き込まれているタイプのＩ／Ｏデータであるクリーンデータと、前記ダーティデータとのいずれかであり、
前記制御情報要素としては、制御テーブル（９０１、９０２、９０３）と、テーブル管理情報（１００１）と、前記ダーティ量管理情報と、制御量管理情報（１２０１）とがあり、
各制御テーブルは、所定種類のサブ情報要素を有しており、
前記テーブル管理情報は、制御テーブル毎に関するサブ情報要素として、下記（Ａ）乃至（Ｄ）のサブ情報要素を有し、
（Ａ）重要度情報：制御テーブルの重要度を表すサブ情報要素；
（Ｂ）更新有無情報：制御テーブルに更新があったか否かを表すサブ情報要素；
（Ｃ）退避済み情報：制御テーブルが退避済みか否かを表すサブ情報要素；
（Ｄ）テーブルサイズ情報：制御テーブルのサイズを表すサブ情報要素；
前記制御量管理情報は、充電状況に応じた退避可能な制御量を表しており、前記制御量は、退避可能な制御情報の情報量を表しており、
前記バッテリ監視部は、マイクロプロセッサが所定のコンピュータプログラムを実行することにより、前記一次電源からの給電が開始されてからの経過時間と単位時間当りの充電状況とを基に充電状況を把握し、
前記退避対象制御部は、把握された充電状況が直前回に把握された充電状況よりも悪ければ、下記（２−１）及び（２−２）の処理を行い、
（２−１）把握された充電状況に対応するダーティ量を前記ダーティ量管理情報から把握し、前記揮発性メモリに記憶されているダーティデータの総量が前記把握されたダーティ量以下の量になるように、前記揮発性メモリに記憶されている一以上のダーティデータを前記複数の記憶装置に格納し、
（２−２）把握された充電状況に対応する制御量を前記制御量管理情報から把握し、退避対象としての制御情報要素の総量が前記把握された制御量以下の量になるように、前記テーブル管理情報における情報（Ａ）及び（Ｄ）を基に、所定の重要度より低い重要度に対応した制御テーブルを、非退避対象とし、
前記退避対象制御部は、情報（Ｂ）及び（Ｃ）を基に、退避済み且つ更新無しの制御テーブルを、非退避対象とし、
前記退避対象は、少なくとも下記（ａ）乃至（ｃ）であり、
（ａ）前記揮発性メモリに残っている全てのダーティデータ；
（ｂ）非退避対象ではない制御テーブル；
（ｃ）前記テーブル管理情報；
前記Ｉ／Ｏ制御部は、前記ライトコマンドを受けて、そのライトコマンドに従うライト対象のデータが前記揮発性メモリにダーティデータとして残ると前記揮発性メモリにおけるダーティデータの総量が前記把握された充電状況に対応するダーティ量を超えてしまう場合には、ライトスルーモードで動作し、一方、そのライト対象のデータが前記揮発性メモリにダーティデータとして残っても前記揮発性メモリにおけるダーティデータの総量が前記把握された充電状況に対応するダーティ量以下である場合には、通常ライトモードで動作し、
前記ライトスルーモードでは、前記Ｉ／Ｏ制御部は、前記ライト対象のデータを前記揮発性メモリに一時記憶させ、そのライト対象のデータを前記複数の記憶装置のいずれかに書込むことで、そのライト対象のデータをクリーンデータとし、その後で、前記ライトコマンドに対する応答を前記外部装置に送信し、
前記通常ライトモードでは、前記Ｉ／Ｏ制御部は、前記ライト対象のデータを前記揮発性メモリに一時記憶させ、そのライト対象のデータを前記複数の記憶装置のいずれかに書込むことなく、前記ライトコマンドに対する応答を前記外部装置に送信する、
請求項１記載のストレージシステム。
【請求項３】
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素（Ｅ）を有し、
（Ｅ）更新回数情報：制御テーブルが更新された回数を表す情報；
前記退避対象制御部は、
（３−１）一定時間経っても更新されない前記サブ情報要素（Ｅ）に対応した制御テーブルを前記不揮発性メモリに退避し、その制御テーブルに対応する前記サブ情報要素（Ｂ）を、更新無しを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素（Ｃ）を、退避済みを表す情報に更新し、
（３−２）前記（３−１）で退避した制御テーブルが更新された場合、その制御テーブルに対応する前記サブ情報要素（Ｂ）を、更新有りを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素（Ｃ）を、非退避済みを表す情報に更新する、
請求項２記載のストレージシステム。
【請求項４】
回復部（３７１６、１２２）を更に備え、
前記揮発性メモリは、代表退避値と、ダーティデータの退避値を表すＩ／Ｏ退避値とを記憶し、
前記代表退避値及び前記Ｉ／Ｏ退避値は、それぞれ、退避対象であり、
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素（Ｆ）、
（Ｆ）退避値：制御テーブルの退避値；
を有し、
前記退避部は、計画停止のときに、前記代表退避値を、特定の値を表す情報に更新し、前記揮発性メモリにおける退避対象を前記不揮発性メモリに退避し、
前記退避対象制御部は、
（４−１）把握された充電状況が直前回に把握された充電状況よりも良ければ、退避対象の制御テーブルに対応したサブ情報要素（Ｆ）を、前記代表退避値と同じ情報に更新し、
（４−２）把握された充電状況が直前回に把握された充電状況よりも悪ければ、非退避対象の制御テーブルに対応したサブ情報要素（Ｆ）を、前記代表退避値と異なる値に更新し、
前記回復部は、前記一次電源からの給電が停止した後に再び前記一次電源から給電があった場合に、前記不揮発性メモリに記憶されている情報を前記揮発性メモリに回復し、その際、回復された代表退避値と、回復されたＩ／Ｏ退避値が異なっている場合には、回復されたダーティデータを揮発したデータと扱い、且つ、回復された代表退避値と、回復されたテーブル管理情報内の前記サブ情報要素（Ｆ）が異なっている場合には、回復された代表退避値と異なっているサブ情報要素（Ｆ）に対応する制御テーブルを揮発したテーブルと扱う、
請求項３記載のストレージシステム。
【請求項５】
前記不揮発性メモリは、フラッシュメモリであり、
前記一次電源から電力が供給されている間において、制御情報における退避対象である制御退避対象が更新されたときに、前記制御退避対象の退避先領域にリフレッシュ処理を施すリフレッシュ処理部（３７１５）を更に備える、
請求項４記載のストレージシステム。
【請求項６】
前記揮発性メモリに記憶されているダーティデータの総量が前記把握された充電状況に応じた退避可能な情報量以下の量になるように、前記揮発性メモリに記憶されている一以上のダーティデータを前記複数の記憶装置に格納する退避対象制御部（３７１７）を更に備える、
請求項１記載のストレージシステム。
【請求項７】
前記揮発性メモリにおける現時点の退避対象の総量が、前記把握された充電状況に応じた退避可能な情報量以下になるように、前記揮発性メモリにおける複数の情報要素のうち、所定の重要度より低い重要度の情報要素を非退避対象とする退避対象制御部（３７１７）を更に備える、
請求項１又は６記載のストレージシステム。
【請求項８】
前記退避対象制御部は、退避済み且つ更新の無い情報要素を非退避対象とする、
請求項６又は７に記載のストレージシステム。
【請求項９】
前記退避対象制御部は、特定の期間更新の無い情報要素を前記揮発性メモリから前記不揮発性メモリに退避しておく、
請求項８記載のストレージシステム。
【請求項１０】
（削除）
【請求項１１】
（削除）
【請求項１２】
（削除）
【請求項１３】
（削除）
【請求項１４】
（削除）
【請求項１５】
前記不揮発性メモリは、フラッシュメモリであり、
前記一次電源から電力が供給されている間に退避対象の退避先領域にリフレッシュ処理を施しておくリフレッシュ処理部（３７１５）を更に備える、
請求項１記載のストレージシステム。
【請求項１６】
前記把握された充電状況に応じて、前記揮発性メモリに記憶されているどの情報要素を前記退避対象とするかを制御する退避対象制御部（３７１７）を更に備える、
請求項１記載のストレージシステム。
【請求項１７】
前記揮発性メモリに記憶されている複数の情報要素のうち特定の情報要素を、その特定の情報要素に関する状況に応じて、退避処理の際の非退避対象とする退避対象制御部（３７１３、３７１７）を更に備える、
請求項１記載のストレージシステム。
【手続補正書】
【提出日】平成23年1月17日(2011.1.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
外部装置からＩ／Ｏ（Input/Output）コマンドを受信するストレージシステムであって、
複数の記憶装置と、
二次電源であるバッテリと、
揮発性メモリと、
前記複数の記憶装置のいずれにも未だ書込まれていないタイプのデータであるダーティデータのうち退避可能なダーティデータの総量であるダーティ量と前記バッテリとの対応を示すダーティ量管理情報、前記バッテリの監視充電率情報及び現在のダーティ量を示す監視ダーティ量情報を記憶する不揮発性メモリと、
下記（Ａ）〜（Ｄ）の処理を行うＩ／Ｏ制御部と、
（A）前記Ｉ／Ｏコマンドがライトコマンドの場合、前記ライトコマンド、前記ダーティ量管理情報、前記監視充電率情報及び監視ダーティ量情報から、前記ライトコマンドの受信後にダーティ量がダーティ量の上限を超えるか否かを判断する、
（B）前記（A）の判断の結果が否定的の場合、そのライトコマンドに従うデータを前記揮発性メモリに一時記憶させ、
（Ｃ）前記（Ａ）の判断の結果が肯定的の場合、前記一時記憶の処理に加えて、そのデータを前記揮発性メモリから読み出して前記複数の記憶装置の少なくとも一つに書込み、
（Ｄ）前記Ｉ／Ｏコマンドがリードコマンドの場合、そのリードコマンドに従うデータを前記複数の記憶装置の少なくとも一つから読み出して前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記外部装置に送信する、
一次電源から前記揮発性メモリへの給電が無くなった場合に、前記バッテリからの給電により、前記揮発性メモリに記憶されている複数の情報要素のうちの全ての退避対象としての情報要素を前記不揮発性メモリに退避する退避部と、
前記バッテリの充電状況を監視し、検出された充電状況を前記監視充電率情報に反映するバッテリ監視部と
を備えるストレージシステム。
【請求項２】
前記把握された充電状況に応じて、前記揮発性メモリに記憶されているどの情報要素を前記退避対象とするかを制御する退避対象制御部を更に備え、
前記揮発性メモリに記憶される情報要素には、Ｉ／Ｏデータと制御情報要素とが含まれており、
前記Ｉ／Ｏデータは、前記揮発性メモリに記憶されている情報要素の一つであって、前記外部装置からのＩ／Ｏコマンドに応答して書き込まれる又は読み出されるデータであり、
前記Ｉ／Ｏデータは、前記複数の記憶装置のいずれかに既に書き込まれているタイプのＩ／Ｏデータであるクリーンデータと、前記ダーティデータとのいずれかであり、
前記制御情報要素としては、制御テーブルと、テーブル管理情報と、前記ダーティ量管理情報と、制御量管理情報とがあり、
各制御テーブルは、所定種類のサブ情報要素を有しており、
前記テーブル管理情報は、制御テーブル毎に関するサブ情報要素として、下記（Ａ）乃至（Ｄ）のサブ情報要素を有し、
（Ａ）重要度情報：制御テーブルの重要度を表すサブ情報要素；
（Ｂ）更新有無情報：制御テーブルに更新があったか否かを表すサブ情報要素；
（Ｃ）退避済み情報：制御テーブルが退避済みか否かを表すサブ情報要素；
（Ｄ）テーブルサイズ情報：制御テーブルのサイズを表すサブ情報要素；
前記制御量管理情報は、充電状況に応じた退避可能な制御量を表しており、前記制御量は、退避可能な制御情報の情報量を表しており、
前記バッテリ監視部は、マイクロプロセッサが所定のコンピュータプログラムを実行することにより、前記一次電源からの給電が開始されてからの経過時間と単位時間当りの充電状況とを基に充電状況を把握し、
前記退避対象制御部は、把握された充電状況が直前回に把握された充電状況よりも悪ければ、下記（２−１）及び（２−２）の処理を行い、
（２−１）把握された充電状況に対応するダーティ量を前記ダーティ量管理情報から把握し、前記揮発性メモリに記憶されているダーティデータの総量が前記把握されたダーティ量以下の量になるように、前記揮発性メモリに記憶されている一以上のダーティデータを前記複数の記憶装置に格納し、
（２−２）把握された充電状況に対応する制御量を前記制御量管理情報から把握し、退避対象としての制御情報要素の総量が前記把握された制御量以下の量になるように、前記テーブル管理情報における情報（Ａ）及び（Ｄ）を基に、所定の重要度より低い重要度に対応した制御テーブルを、非退避対象とし、
前記退避対象制御部は、情報（Ｂ）及び（Ｃ）を基に、退避済み且つ更新無しの制御テーブルを、非退避対象とし、
前記退避対象は、少なくとも下記（ａ）乃至（ｃ）であり、
（ａ）前記揮発性メモリに残っている全てのダーティデータ；
（ｂ）非退避対象ではない制御テーブル；
（ｃ）前記テーブル管理情報；
前記Ｉ／Ｏ制御部は、前記ライトコマンドを受けて、そのライトコマンドに従うライト対象のデータが前記揮発性メモリにダーティデータとして残ると前記揮発性メモリにおけるダーティデータの総量が前記把握された充電状況に対応するダーティ量を超えてしまう場合には、ライトスルーモードで動作し、一方、そのライト対象のデータが前記揮発性メモリにダーティデータとして残っても前記揮発性メモリにおけるダーティデータの総量が前記把握された充電状況に対応するダーティ量以下である場合には、通常ライトモードで動作し、
前記ライトスルーモードでは、前記Ｉ／Ｏ制御部は、前記ライト対象のデータを前記揮発性メモリに一時記憶させ、そのライト対象のデータを前記複数の記憶装置のいずれかに書込むことで、そのライト対象のデータをクリーンデータとし、その後で、前記ライトコマンドに対する応答を前記外部装置に送信し、
前記通常ライトモードでは、前記Ｉ／Ｏ制御部は、前記ライト対象のデータを前記揮発性メモリに一時記憶させ、そのライト対象のデータを前記複数の記憶装置のいずれかに書込むことなく、前記ライトコマンドに対する応答を前記外部装置に送信する、
請求項１記載のストレージシステム。
【請求項３】
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素（Ｅ）を有し、
（Ｅ）更新回数情報：制御テーブルが更新された回数を表す情報；
前記退避対象制御部は、
（３−１）一定時間経っても更新されない前記サブ情報要素（Ｅ）に対応した制御テーブルを前記不揮発性メモリに退避し、その制御テーブルに対応する前記サブ情報要素（Ｂ）を、更新無しを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素（Ｃ）を、退避済みを表す情報に更新し、
（３−２）前記（３−１）で退避した制御テーブルが更新された場合、その制御テーブルに対応する前記サブ情報要素（Ｂ）を、更新有りを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素（Ｃ）を、非退避済みを表す情報に更新する、
請求項２記載のストレージシステム。
【請求項４】
回復部を更に備え、
前記揮発性メモリは、代表退避値と、ダーティデータの退避値を表すＩ／Ｏ退避値とを記憶し、
前記代表退避値及び前記Ｉ／Ｏ退避値は、それぞれ、退避対象であり、
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素（Ｆ）、
（Ｆ）退避値：制御テーブルの退避値；
を有し、
前記退避部は、計画停止のときに、前記代表退避値を、特定の値を表す情報に更新し、前記揮発性メモリにおける退避対象を前記不揮発性メモリに退避し、
前記退避対象制御部は、
（４−１）把握された充電状況が直前回に把握された充電状況よりも良ければ、退避対象の制御テーブルに対応したサブ情報要素（Ｆ）を、前記代表退避値と同じ情報に更新し、
（４−２）把握された充電状況が直前回に把握された充電状況よりも悪ければ、非退避対象の制御テーブルに対応したサブ情報要素（Ｆ）を、前記代表退避値と異なる値に更新し、
前記回復部は、前記一次電源からの給電が停止した後に再び前記一次電源から給電があった場合に、前記不揮発性メモリに記憶されている情報を前記揮発性メモリに回復し、その際、回復された代表退避値と、回復されたＩ／Ｏ退避値が異なっている場合には、回復されたダーティデータを揮発したデータと扱い、且つ、回復された代表退避値と、回復されたテーブル管理情報内の前記サブ情報要素（Ｆ）が異なっている場合には、回復された代表退避値と異なっているサブ情報要素（Ｆ）に対応する制御テーブルを揮発したテーブルと扱う、
請求項３記載のストレージシステム。
【請求項５】
前記不揮発性メモリは、フラッシュメモリであり、
前記一次電源から電力が供給されている間において、制御情報における退避対象である制御退避対象が更新されたときに、前記制御退避対象の退避先領域にリフレッシュ処理を施すリフレッシュ処理部を更に備える、
請求項４記載のストレージシステム。
【請求項６】
前記揮発性メモリに記憶されているダーティデータの総量が前記把握された充電状況に応じた退避可能な情報量以下の量になるように、前記揮発性メモリに記憶されている一以上のダーティデータを前記複数の記憶装置に格納する退避対象制御部を更に備える、
請求項１記載のストレージシステム。
【請求項７】
前記揮発性メモリにおける現時点の退避対象の総量が、前記把握された充電状況に応じた退避可能な情報量以下になるように、前記揮発性メモリにおける複数の情報要素のうち、所定の重要度より低い重要度の情報要素を非退避対象とする退避対象制御部を更に備える、
請求項１又は６記載のストレージシステム。
【請求項８】
前記退避対象制御部は、退避済み且つ更新の無い情報要素を非退避対象とする、
請求項６又は７に記載のストレージシステム。
【請求項９】
前記退避対象制御部は、特定の期間更新の無い情報要素を前記揮発性メモリから前記不揮発性メモリに退避しておく、
請求項８記載のストレージシステム。
【請求項１０】
前記不揮発性メモリは、フラッシュメモリであり、
前記一次電源から電力が供給されている間に退避対象の退避先領域にリフレッシュ処理を施しておくリフレッシュ処理部を更に備える、
請求項１記載のストレージシステム。
【請求項１１】
前記把握された充電状況に応じて、前記揮発性メモリに記憶されているどの情報要素を前記退避対象とするかを制御する退避対象制御部を更に備える、
請求項１記載のストレージシステム。
【請求項１２】
前記揮発性メモリに記憶されている複数の情報要素のうち特定の情報要素を、その特定の情報要素に関する状況に応じて、退避処理の際の非退避対象とする退避対象制御部を更に備える、
請求項１記載のストレージシステム。
【国際調査報告】
2011524555.tif 000041
2011524555.tif 000042
2011524555.tif 000043