揮発性メモリと不揮発性メモリとを備えたストレージシステム
【課題】揮発性メモリにおける退避対象を確実に不揮発性メモリに退避できるようにする。退避処理に要する時間をなるべく短くする。
【解決手段】バッテリの充電状況が定期的又は不定期的に把握され、把握された充電状況に応じて、揮発性メモリに記憶されているどの情報要素を、電断発生時の退避対象とするかが制御される。揮発性メモリに記憶されている複数の情報要素のうち特定の情報要素が、その特定の情報要素に関する状況に応じて、退避処理の際の非退避対象とされる。
(図35)
【解決手段】バッテリの充電状況が定期的又は不定期的に把握され、把握された充電状況に応じて、揮発性メモリに記憶されているどの情報要素を、電断発生時の退避対象とするかが制御される。揮発性メモリに記憶されている複数の情報要素のうち特定の情報要素が、その特定の情報要素に関する状況に応じて、退避処理の際の非退避対象とされる。
(図35)
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、揮発性メモリと不揮発性メモリとを備えたストレージシステムの制御に関する。
【背景技術】
【0002】
この種のストレージシステムとして、例えば、特許文献1に開示のストレージシステムが知られている。特許文献1によれば、ストレージシステムでは、一次電源から揮発性キャッシュメモリへの給電が無くなった場合に、バッテリから揮発性キャッシュメモリに電力が供給され、その間に、揮発性キャッシュメモリに記憶されているデータが不揮発性メモリにコピーされる。
【0003】
【特許文献1】特開2008−108026号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
一次電源から揮発性メモリへの給電が無くなった場合(つまり電断が生じた場合)、バッテリからの給電が開始される。一次電源からの給電が再開されれば、バッテリからの給電が中止され再び充電が開始されるが、満充電になる前(充電率が100%になる前)に再び一次電源の電断が生じれば、満充電ではない充電状況であってもバッテリからの給電が開始される。すなわち、一次電源の電断が頻発すると、充電状況の良くないバッテリからの給電に基づいて揮発性メモリから不揮発性メモリへの情報の退避処理が行われることになり、それ故、揮発性メモリにおける退避対象を退避する前にバッテリの残量が枯渇してしまうおそれがある。
【0005】
また、不揮発性メモリを大容量にしておけば、大量の情報を退避することが期待できるが、そうすると、揮発性メモリから不揮発性メモリに退避される情報の量が多くなり、故に、退避処理に要する時間が長くなってしまう。
【0006】
そこで、本発明の第一の目的は、揮発性メモリにおける退避対象を確実に不揮発性メモリに退避できるようにすることにある。
【0007】
本発明の第二の目的は、退避処理に要する時間をなるべく短くすることにある。
【課題を解決するための手段】
【0008】
第一の観点では、バッテリの充電状況が定期的又は不定期的に把握され、把握された充電状況に応じて、揮発性メモリに記憶されているどの情報要素を、電断発生時の退避対象とするかが制御される。具体的には、例えば、揮発性メモリにおける後述のダーティデータの総量が制御される。
【0009】
第二の観点では、揮発性メモリに記憶されている複数の情報要素のうち特定の情報要素が、その特定の情報要素に関する状況に応じて、退避処理の際の非退避対象とされる。具体的には、例えば、特定の情報要素は、更新頻度が低い状況の場合に退避され、この時点で退避済みとなるので、退避処理の際には、新たに更新されていなければ、非退避対象である。また、特定の情報要素は、重要度が低い場合には、非退避対象とされる。
【図面の簡単な説明】
【0010】
【図1】図1は、本発明の一実施形態に係る計算機システムの構成例を示す。
【図2】図2は、ストレージシステム103におけるデータと制御信号の流れの一例を示す。
【図3】図3は、電源モジュール117からの給電とバッテリ124からの給電とを示す。
【図4】図4は、CM−PK116で行われる処理の説明図である。
【図5】図5は、ホスト101からリードコマンドを受けたストレージシステム103で行われる処理の流れを示す。
【図6】図6は、ホスト101からライトコマンドを受けたストレージシステム103で行われる処理の流れを示す。
【図7】図7は、計画停止フェーズで行われる退避処理の概要を示す。
【図8】図8は、揮発性メモリ121の構成例を示す。
【図9】図9は、制御テーブルの例を示す。
【図10】図10は、テーブル管理情報の構成を示す。
【図11】図11は、ダーティ量管理情報の構成を示す。
【図12】図12は、制御量管理情報の構成を示す。
【図13】図13は、監視充電率情報を示す。
【図14】図14は、監視ダーティ量情報を示す。
【図15】図15Aは、代表退避時刻情報を示す。図15Bは、ホストデータ退避時刻情報を示す。
【図16】図16は、ホストデータ管理情報を示す。
【図17】図17は、アドレス管理情報を示す。
【図18】図18は、ダーティ退避処理の流れを示す。
【図19】図19は、制御退避処理の流れを示す。
【図20】図20は、電断フェーズで行われる退避処理の概要を示す。
【図21】図21は、電断フェーズで行われる退避処理の流れを示す。
【図22】図22は、回復フェーズで行われる回復処理の概要を示す。
【図23】図23は、回復フェーズで行われる回復処理の流れを示す。
【図24】図24は、バッテリ充電率に応じた退避対象制御処理が行われない場合の問題点を示す。
【図25】図25は、バッテリ充電率に応じた退避対象制御処理が行われることによる効果の一例を示す。
【図26】図26は、ソフトウェア的なバッテリ監視処理の具体例の説明に関する図である。
【図27】図27は、ダーティ量調整処理の概要を示す。
【図28】図28は、ダーティ量調整処理の流れを示す。
【図29】図29は、制御テーブル退避処理の概要を示す。
【図30】図30は、制御テーブル退避処理の流れを示す。
【図31】図31は、更新管理処理の概要を示す。
【図32】図32は、更新管理処理の流れを示す。
【図33】図33は、更新のあった制御テーブルが不揮発性メモリに上書きされることを示す。
【図34】図34は、事前リフレッシュ処理の流れを示す。
【図35】図35は、バッテリ充電率に応じた退避対象制御処理の流れを示す。
【図36】図36は、バッテリ充電率に応じた退避対象制御処理によって退避対象の総量が調整されることを示す。
【図37】図37は、MP−PKの構成を示す。
【図38】図38は、退避済み且つ更新無しの制御テーブルを非退避対象とする流れを示す。
【符号の説明】
【0011】
103…ストレージシステム
【発明を実施するための最良の形態】
【0012】
以下、図面を参照して、本発明の一実施形態を説明する。
【0013】
図1は、本発明の一実施形態に係る計算機システムの構成例を示す。
【0014】
ストレージシステム103に、SAN(Storage Area Network)102を通じて、一以上のホスト101が接続されている。SAN102に代えて、LAN(Local Area Network)等の他種の通信ネットワークが採用されても良い。
【0015】
ホスト101は、CPU(Central Processing Network)やメモリ等の情報処理資源を備えた計算機であり、例えば、パーソナルコンピュータや、ワークステーションや、メインフレーム等である。
【0016】
ストレージシステム103は、コントローラと、記憶装置群と、電源モジュール117とを備える。
【0017】
電源モジュール117は、商用電源から供給される電力に基づく電力を各種構成要素に供給する。
【0018】
記憶装置群は、例えば、複数のHDD(Hard Disk Drive)115で構成されている。RAID(Redundant Array of Independent (or Inexpensive) Disks)グループを構成する二以上のHDD115で、一以上の論理ボリュームが形成されている。HDD115に代えて、フラッシュメモリなど他種の物理記憶装置が採用されても良い。
【0019】
コントローラは、複数種類のパッケージ(以下、パッケージを「PK」と略す)、具体的には、CHA−PK111、MP−PK112、SW−PK113、CM−PK116、及びDKA−PK114で構成される。各種パッケージは、例えば、回路基板である。各種パッケージの数は、1に限らず、2以上であっても良い。例えば、CHA−PK111及びDKA−PK114の数は、それぞれ2以上である。
【0020】
CHA−PK111は、ホスト101との通信を制御するインタフェース装置である。CHA−PK111は、ホスト101からI/Oコマンド(例えばライトコマンド又はリードコマンド)を受信し、ホスト101との間でデータの送受信を行う。
【0021】
MP−PK112は、ストレージシステム103の動作を制御する。
【0022】
SW−PK113は、CHA−PK111、MP−PK112、CM−PK116及びDKA−PK114に接続されており、これらPK間の通信を中継する。
【0023】
CM−PK116は、ホスト101からのライトコマンドに応答してHDD115に書き込まれるライト対象のデータや、ホスト101からのリードコマンドに応答してHDD115から読み出されたリード対象のデータを一時的に記憶するキャッシュメモリとしてのパッケージである。CM−PK116は、揮発性メモリ121と、不揮発性メモリ123と、バッテリ124と、C−MP122とを有する。揮発性メモリ121が、キャッシュメモリとして利用されるメモリである。不揮発性メモリ123が、揮発性メモリ121に記憶されている情報の退避先として利用されるメモリである。不揮発性メモリ123は、例えば、フラッシュメモリを備えたデバイス、一例として、SSD(Solid State Device)である。C−MP122は、CM−PK116に備えられるマイクロプロセッサである。MP−PK112にも、後述するようにマイクロプロセッサが備えられているが、C−MP122は、そのマイクロプロセッサよりも性能の低いマイクロプロセッサで良い。本実施形態の説明では、CM−PK116に備えられるマイクロプロセッサを「C−MP」と言い、MP−PK112に備えられるマイクロプロセッサを「M−MP」と言う。
【0024】
DKA−PK114は、HDD115に対する通信を制御するインタフェース装置である。
【0025】
図2は、ストレージシステム103におけるデータと制御信号の流れの一例を示す。
【0026】
ホスト101からのI/Oコマンドは、CHA−PK111で受け付けられる。データは、SW−PK113を介して、CHA−PK111、MP−PK112及びDKA−PK114間でやり取りされる。また、揮発性メモリ121と不揮発性メモリ123との間でもデータがやり取りされる。揮発性メモリ121から不揮発性メモリ123へのデータの退避、並びに、不揮発性メモリ123から揮発性メモリ121へのデータの回復は、C−MP122からの制御信号に基づき行われる。
【0027】
図3は、電源モジュール117からの給電とバッテリ124からの給電とを示す。
【0028】
実線矢印で示すように、電源モジュール117からは、商用電源からの電力に基づく電力が、ストレージシステム103内の各種構成要素、すなわち、CHA−PK111、MP−PK112、SW−PK113、DKA−PK114、HDD115、及びCM−PK116(具体的には、例えば、CM−PK116内の各要素121、122、123及び124)に供給される。バッテリ124には、電源モジュール117からの給電に基づき充電がされる。
【0029】
停電或いは障害の発生等が原因で、電源モジュール117からの給電が断たれると(つまり電断が発生すると)、点線矢印で示すように、バッテリ124から、CM−PK116内の他の要素121、122及び123に、電力が供給される。
【0030】
図4は、CM−PK116で行われる処理の説明図である。
【0031】
揮発性メモリ121に記憶される情報要素としては、ホストデータと制御情報要素がある。ホストデータは、ホスト101からのライトコマンドに応答してHDD115に書き込まれるデータ、及び、ホスト101からのリードコマンドに応答してHDD115から読み出されたデータである。制御情報要素は、後述のM−MPに参照されストレージシステム103の制御のために使用される情報要素である。揮発性メモリ121上のホストデータ(正確には後述のダーティデータ)及び制御情報要素が、不揮発性メモリ123に退避される。
【0032】
C−MP122は、下記機能(4−1)及び(4−2)、
(4−1)設定されたアドレスセットが表す領域(開始アドレスから終了アドレスの範囲に対応した領域)に記憶されている情報要素を揮発性メモリ121から不揮発性メモリ123に退避する機能;
(4−2)不揮発性メモリ123から揮発性メモリ121に情報要素を回復する機能;
を有する。回復される情報要素は、不揮発性メモリ123に記憶されている全ての情報要素であっても良いし、設定されたアドレスセットが表す領域(開始アドレスから終了アドレスの範囲に対応した領域)に対応した情報要素であっても良い。揮発性メモリ121から不揮発性メモリ123への情報要素の退避が失敗した場合には、不揮発性メモリ123上に、C−MP122によって、退避失敗を表す情報が格納される。
【0033】
本実施形態で言う「アドレスセット」とは、開始アドレス及び終了アドレスのセットである。アドレスセットは、C−MP122のレジスタ(及び/又は揮発性メモリ121)に設定される。そのレジスタ(及び/又は揮発性メモリ121)には、一又は複数のアドレスセットを蓄積することが可能である。また、レジスタに設定されているアドレスセットは、C−MP122(及び/又は揮発性メモリ121)から不揮発性メモリ123に書き込まれる。これにより、電断が生じても、アドレスセットは不揮発性メモリ123で保持されていることになる。
【0034】
ちなみに、本実施形態では、揮発性メモリ121に割当てられているアドレスと不揮発性メモリ123に割当てられているアドレスが、1対1で対応している。このため、本実施形態では、退避処理及び回復処理において、例えば、或るアドレス範囲を表すアドレスセットが設定された場合、そのアドレス範囲に対応する、一方のメモリ121又は123の領域から、そのアドレス範囲に対応する、他方のメモリ123又は121の領域への情報の転送が行われる。しかし、それに限らず、例えば、不揮発性メモリの容量と揮発性メモリの容量が異なっている等の場合には、不揮発性メモリのアドレスと揮発性メモリのアドレスとの対応を管理する管理情報が用意され、その管理情報を基に、退避処理や回復処理が行われても良い。
【0035】
図37は、MP−PK112の構成例を示す。
【0036】
MP−PK112は、例えば、M−MP3701と、ローカルメモリ3702とを有する。ローカルメモリ3702には、M−MP3701に実行されるコンピュータプログラム(以下、「PG」と略す)として、例えば、I/O制御PG3711と、バッテリ監視PG3712と、退避PG3713と、制御情報管理PG3714と、リフレッシュPG3715と、回復PG3716と、退避対象制御PG3717とを記憶する。各PGについては、後に説明する。なお、以下、説明を簡易にするために、PGを主語として処理を説明することがあるが、その処理は、PGを実行するM−MP122によって行われる処理である。
【0037】
図5は、ホスト101からリードコマンドを受けたストレージシステム103で行われる処理の流れを示す。点線は、コマンドや指示の流れを表し、実線は、ホストデータの流れを表す(これは、図6についても同様である)。
【0038】
CHA−PK111がホスト101からリードコマンドを受けると、リードコマンドがMP−PK112に送られる。
【0039】
揮発性メモリ121にリード対象のホストデータがあれば、MP−PK112内のI/O制御PG3711は、そのホストデータを揮発性メモリ121から読出しCHA−PK111を通じてホスト101に送信する。
【0040】
揮発性メモリ121にリード対象のホストデータが無ければ、MP−PK112内のI/O制御PG3711は、受信したリードコマンドで指定されているリード元ボリューム(例えばポート番号及びLUN(Logical Unit Number))及びリード元アドレス(例えばLBA(Logical Block Address))等を基に、DKA−PK114に、リード対象のホストデータ“C”を揮発性メモリ121に送ることのリード指示を送信する。DKA−PK114が、そのリード指示に応答して、そのリード指示から特定されるHDD115からリード対象のホストデータ“C”を読み出し、そのホストデータ“C”を揮発性メモリ121に格納し、リード完了をMP−PK112に通知する。リード完了の通知を受けたMP−PK112内のI/O制御PG3711は、揮発性メモリ121からホストデータ“C”を読み出してCHA−PK111を通じてホスト101に送信する。
【0041】
図6は、ホスト101からライトコマンドを受けたストレージシステム103で行われる処理の流れを示す。
【0042】
CHA−PK111がホスト101からライトコマンドを受けると、ライトコマンドがMP−PK112に送られる。MP−PK112内のI/O制御PG3711は、そのライトコマンドに従うライト対象のホストデータ“D”を揮発性メモリ121に書き込む。そして、MP−PK112内のI/O制御PG3711は、受信したライトコマンドで指定されているライト先ボリューム及びライト先アドレス等を基に、DKA−PK114に、ホストデータ“D”のHDD115へのライト指示を送信する。DKA−PK114が、そのライト指示に応答して、揮発性メモリ121からホストデータ“D”を読み出し、そのホストデータ“D”をHDD115に格納する。
【0043】
図8は、揮発性メモリ121の構成例を示す。
【0044】
揮発性メモリ121は、制御情報エリア801とホストデータエリア803とで構成される。制御情報エリア801に、前述した制御情報が格納され、ホストデータエリア803に、ホストデータが格納される。制御情報要素としては、下記情報要素、
(1)各種制御テーブル;
(2)ダーティ量管理情報;
(3)制御量管理情報;
(4)監視充電率情報;
(5)監視ダーティ量情報;
(6)代表退避時刻情報;
(7)ホストデータ退避時刻情報;
(8)ホストデータ管理情報;
がある。以下、各種の制御情報要素を説明する。
【0045】
図9は、制御テーブルの例を示す。
【0046】
制御テーブルとは、MP−PK112が行う制御の基になる情報要素である。制御テーブルには、例えば、構成テーブル901、コピーテーブル902、モニタテーブル903等がある。構成テーブル901は、ストレージシステム103の構成に関する情報(例えば、どのLUNにどの論理ボリュームが割当てられていてどの論理ボリュームがどのHDDを基に形成されているかを表す情報)を保持するテーブルである。コピーテーブル902は、ボリューム間のコピーに関する情報(例えば、どのボリュームとどのボリュームがペアになっていてそのペアがどんな状態であるかを表す情報)を保持するテーブルである。モニタテーブル903は、ストレージシステム103内の種々の監視結果を表す情報を保持するテーブルである。各種制御テーブルには、制御テーブルを識別するためのテーブルIDが割当てられている。
【0047】
図10は、テーブル管理情報の構成を示す。
【0048】
テーブル管理情報1001は、制御テーブルに関する情報を保持するテーブルである。テーブル管理情報1001には、例えば、制御テーブル毎に、退避要否情報、退避重要度情報、更新有無情報、更新カウント値、退避済み情報、テーブルサイズ及び退避時刻情報といったサブ情報要素が保持される。以下、図10の説明において、或る一つの制御テーブルを「対象制御テーブル」と言い、対象制御テーブルについて、各サブ情報要素を説明する。
【0049】
退避要否情報は、対象制御テーブルを不揮発性メモリ123に退避する必要があるかどうかを表すサブ情報要素である。退避要か退避不要かは、対象制御テーブルの種類を基に予め決定されている。
【0050】
退避重要度情報は、対象制御テーブルの重要度を表すサブ情報要素である。本実施形態では、重要度としての値は、“高”(対象制御テーブルの退避が必須であることを意味する値)と、“低”(対象制御テーブルが退避されなくても差し支えないことを意味する値)との2種類がある。重要度の値も、対象制御テーブルの種類を基に予め決定されている。
【0051】
更新有無情報は、ストレージシステム103が起動した後、若しくは、対象制御テーブルが退避された後に、対象制御テーブルが更新されたか否かを表すサブ情報要素である。
【0052】
更新カウント値は、対象制御テーブルが更新された回数を表すサブ情報要素である。
【0053】
退避済み情報は、対象制御テーブルの退避処理が正常に完了したか否かを表すサブ情報要素である。退避済み情報としての値は、例えば、退避済みであれば“0”、退避済みでなければ“1”である。
【0054】
テーブルサイズは、対象制御テーブルのサイズ(情報量)を表すサブ情報要素である。
【0055】
退避時刻情報は、対象制御テーブルが退避された時刻を表すサブ情報要素である。
【0056】
図11は、ダーティ量管理情報の構成を示す。
【0057】
ダーティ量管理情報1101には、どんなバッテリ充電率の場合にどのぐらいのダーティデータを退避することが可能かを表す制御情報要素である。具体的には、バッテリ充電率範囲毎の退避可能なダーティ量が保持される。「ダーティ量」とは、ダーティデータの総量である。ダーティ量は、ホストデータエリア803(図8参照)の記憶容量を100としたときの、ダーティデータの総量である。「ダーティデータ」とは、揮発性メモリ121内のホストデータのうちの、HDD115に未格納のホストデータである。それに対し、揮発性メモリ121内のホストデータのうちの、HDD115に格納済みのホストデータを、「クリーンデータ」と言う。
【0058】
図12は、制御量管理情報の構成を示す。
【0059】
制御量管理情報1201には、どんなバッテリ充電率の場合にどのぐらいの制御情報を退避することが可能かを表す制御情報要素である。具体的には、バッテリ充電率範囲毎の退避可能な制御情報量が保持される。制御情報量は、制御情報エリア801(図8参照)の記憶容量を100としたときの、制御情報の量である。
【0060】
図13は、監視充電率情報を示す。
【0061】
監視充電率情報1301は、バッテリ124の充電率の監視結果を表す制御情報要素である。具体的には、バッテリ124の充電率は、定期的に(又は不定期的に)把握され、把握された充電率が、監視充電率情報1301として揮発性メモリ121に記憶される。バッテリ124の充電率の監視は、バッテリ監視PG3712と、C−MP122の両方が行うことができる。つまり、ソフトウェア的な監視と、ハードウェア的な監視との両方を行うことができる。ハードウェア的な監視で把握されたバッテリ充電率が、監視充電率情報1301として優先的に記憶され、ハードウェア的な監視がされない場合には、ソフトウェア的な監視で把握されたバッテリ充電率が、監視充電率情報1301として記憶される。
【0062】
図14は、監視ダーティ量情報を示す。
【0063】
監視ダーティ量情報1401は、現時点のダーティ量を表す制御情報要素である。例えば、監視ダーティ量情報1401は、ダーティデータの総量が変更される都度、例えば、揮発性メモリ121にライト対象のデータが格納される都度、或いは、ダーティデータが揮発性メモリ121からHDD115に格納される都度に、I/O制御PG3711或いは退避PG3713によって更新される。
【0064】
図15Aは、代表退避時刻情報を示す。
【0065】
代表退避時刻情報1501は、テーブル管理情報1001(図10参照)における退避時刻情報や、図15Bに示すホストデータ退避時刻情報1601の基になる制御情報要素である。代表退避時刻情報1501は、例えば、計画停止の際の退避処理の開始時刻である。
【0066】
図15Bは、ホストデータ退避時刻情報を示す。
【0067】
ホストデータ退避時刻情報1601は、揮発性メモリ121からHDD115にダーティデータが退避された時刻を表す制御情報要素である。
【0068】
図16は、ホストデータ管理情報を示す。
【0069】
ホストデータ管理情報1701は、揮発性メモリ121内のホストデータエリア803における各スロット(記憶領域)に記憶されているホストデータの属性を管理するための制御情報要素である。ホストデータ管理情報1701には、例えば、スロット毎に、スロット番号とスロット状態とが保持される。スロット状態は、対応するスロットに格納されているホストデータがクリーンデータかダーティデータかを表す情報である。
【0070】
なお、スロットのサイズは、一定である。従って、ダーティデータが格納されているスロットの数とスロットのサイズとのサイズとホストデータエリア803とのサイズを基に、ダーティ量を算出することが可能である。
【0071】
図17は、アドレス管理情報を示す。
【0072】
アドレス管理情報1710は、前述した一又は複数のアドレスセット(開始アドレスと終了アドレスのセット)で構成されている情報である。アドレス管理情報1710は、C−MP122内のレジスタ、或いは、揮発性メモリ121に格納され、不揮発性メモリ123に退避される。
【0073】
前述した情報のうち、少なくとも、テーブル管理情報1001(図10参照)、代表退避時刻情報1501(図15A参照)、及びホストデータ退避時刻情報1701(図16参照)は、電断フェーズでの退避処理での退避対象である。言い換えれば、アドレス管理情報1710には、電断フェーズでの退避処理に備えて、テーブル管理情報1001が占める範囲の開始アドレス及び終了アドレスと、代表退避時刻情報1501が占める範囲の開始アドレス及び終了アドレスと、ホストデータ退避時刻情報1701が占める範囲の開始アドレス及び終了アドレスとが必ず含まれる。
【0074】
以下、本実施形態で行われる処理を、
計画停止フェーズ;
電断フェーズ;
回復フェーズ;
通常フェーズ;
の4つのフェーズに場合分けして説明する。
【0075】
<計画停止フェーズ>。
【0076】
図7は、計画停止フェーズで行われる退避処理の概要を示す。
【0077】
計画停止フェーズでは、電断フェーズと異なり、揮発性メモリ121への電力は、一次電源117から供給される。従って、バッテリ124の充電率の割に退避対象としての制御情報要素の総量が多くても、揮発性メモリ121から不揮発性メモリ123に全ての退避対象の制御情報要素を退避することは可能である。
【0078】
計画停止フェーズは、例えば、計画停止信号が検出されたときに開始される。計画停止信号は、例えば、ホスト101或いは管理計算機(図示せず)等の外部の装置から入力される信号であっても良いし、ストレージシステム103に備えられている特定のスイッチがターンオンされることによって入力される信号であっても良い。
【0079】
計画停止フェーズでは、ダーティ退避処理と制御退避処理の2種類の退避処理が行われる。ダーティ退避処理では、ダーティデータ“E”が、そのダーティデータ“E”をライト対象とするライトコマンドに従う書込み先に対応したHDD115に格納される。制御退避処理では、複数種類の制御テーブルのうちのいずれを非退避対象とするかが決定され、非退避対象とされなかった制御情報要素“F”(つまり退避対象とされた制御情報要素“F”)が、不揮発性メモリ123に退避される。
【0080】
ダーティ退避処理も制御退避処理も、退避PG3713(図37参照)によって行われる。以下、図18を参照して、ダーティ退避処理の流れを説明し、図19を参照して、制御退避処理の流れを説明する。
【0081】
図18は、ダーティ退避処理の流れを示す。
【0082】
退避PG3713は、計画停止信号を検出したら、ホストデータ管理情報1701(図16参照)を参照し(S1801)、ホストデータ管理情報1701における先頭のレコードから末尾のレコード(言い換えれば、ホストデータエリア803における先頭のスロットから末尾のスロット)にかけて、S1802乃至S1804を実行する。
【0083】
すなわち、退避PG3713は、参照したレコードにスロット状態として“ダーティ”が記録されていなければ(S1802:NO)、S1803をスキップしてS1804を実行する。一方、退避PG3713は、参照したレコードにスロット状態として“ダーティ”が記録されていれば(S1802:YES)、そのレコードに対応したスロットに記憶されているダーティデータをHDD115に格納し、そのレコードにおけるスロット状態の値を“ダーティ”から“クリーン”に変更する(S1803)。そして、退避PG3713は、参照したレコードが末尾のレコードでなければ(S1804:NO)、次のレコードについてS1802を行う。
【0084】
図19は、制御退避処理の流れを示す。
【0085】
退避PG3713は、計画停止信号を検出したら、代表退避時刻情報1501を、現在時刻を表す情報に更新する(S1901)。現在時刻は、例えばタイマから取得される。
【0086】
退避PG3713は、テーブル管理情報1001(図10参照)を参照し、テーブル管理情報1001における先頭のレコードから末尾のレコードにかけて、S1903乃至S1907を実行する。
【0087】
すなわち、退避PG3713は、参照したレコードに退避要否として“否”が記録されていれば(S1903:NO)、S1904乃至S1906をスキップしてS1907を実行する。退避PG3713は、参照したレコードに退避要否として“要”が記録されていれば(S1903:YES)、そのレコードに更新有無として“有”が記録されているか“無”が記録されているかを判断する(S1904)。更新有無として“有”が記録されていれば、退避PG3713は、S1905として、
(1905−1)参照したレコードにおける退避時刻情報を、代表退避時刻情報と同じ情報に更新する;
(1905−2)C−MP122に、参照したレコードに対応する制御テーブルが記憶されている領域に対応したアドレスセットを設定し、C−MP122に、その設定したアドレスセットに対応した領域に記憶されている制御テーブルを揮発性メモリ121から不揮発性メモリ123に退避させる;
(1905−3)参照したレコードにおける退避済み情報として値を、退避済みを表す値“0”に更新する;
を実行する。一方、更新有無として“無”が記録されていれば、退避PG3713は、S1906として、
(1906−1)参照したレコードにおける退避時刻情報を、代表退避時刻情報と同じ情報に更新する;
(1906−2)参照したレコードにおける退避済み情報としての値を、退避済みを表す値“0”に更新する;
を実行する。つまり、更新有無“無”に対応した制御レコードは、非退避対象とされ、不揮発性メモリ123に退避されない。S1905或いはS1906の後、退避PG3713は、参照したレコードが末尾のレコードでなければ(S1907:NO)、次のレコードについてS1903を行う。
【0088】
テーブル管理情報1001における末尾のレコードについてS1903乃至S1907が行われたら(S1907:YES)、退避PG3713は、C−MP122に、テーブル管理情報1001及び代表退避時刻情報1501を不揮発性メモリ123に退避させる(S1908)。
【0089】
以上の制御退避処理によれば、退避要否“否”の制御テーブル、並びに、退避済み且つ更新有無“無”の制御テーブルが、非退避対象とされる。このため、計画停止フェーズにおける退避処理に要する時間を短く抑えることが期待できる。
【0090】
なお、計画停止フェーズにおいて、全ての退避対象の退避に成功した場合、退避成功を表す情報が、C−MP122によって、不揮発性メモリ123に設定される。
【0091】
<電断フェーズ>。
【0092】
電断フェーズでは、図20に示すように、C−MP122に設定されているアドレスセットが示す領域に記憶されている全ての情報要素、つまり、ダーティデータ“E”も制御情報要素“F”も、揮発性メモリ121から不揮発性メモリ123に退避される。
【0093】
図21は、電断フェーズで行われる退避処理の流れを示す。
【0094】
C−MP122は、電断を検出すると、C−MP122のレジスタに設定されているアドレス管理情報1710(図17参照)を参照する(S2101)。C−MP122は、そのアドレス管理情報1710から一つのアドレスセットを選択し、選択されたアドレスセットから特定される領域(揮発性メモリ121内の領域)に記憶されている情報(ダーティデータ又は制御情報内の退避対象としての情報要素)を、揮発性メモリ121から不揮発性メモリ123に退避する(S2102)。C−MP122は、アドレス管理情報1710内に未選択のアドレスセットがあれば(S2103:NO)、そのアドレスセットについてS2102を実行し、未選択のアドレスセットがなければ(S2103:YES)、終了する。
【0095】
以上の流れによれば、電断フェーズでは、アドレス管理情報1710内のアドレスセットに対応した領域に記憶されている情報要素が、揮発性メモリ121から不揮発性メモリ123に退避される。揮発性メモリ121におけるどの情報要素を電断フェーズでの退避対象とするかが、通常フェーズにおいて制御される。すなわち、通常フェーズにおいて、或る情報要素が非退避対象に決定された場合には、その或る情報要素が記憶されている領域を表すアドレスセットが、アドレス管理情報1710から削除され、逆に、或る情報要素が非退避対象から退避対象にされた場合には、その或る情報要素が記憶されている領域を表すアドレスセットが、アドレス管理情報1710に追加される。全ての退避対象の退避に成功した場合、退避成功を表す情報が、C−MP122によって、不揮発性メモリ123に設定される。
【0096】
<回復フェーズ>。
【0097】
回復フェーズでは、図22に示すように、不揮発性メモリ123に記憶されている全ての情報要素、例えば、ダーティデータ“E”及び制御情報要素“F”が、不揮発性メモリ123から揮発性メモリ121に回復される。
【0098】
図23は、回復フェーズで行われる回復処理の流れを示す。
【0099】
回復PG3716がストレージシステム103の起動を検出した場合、回復PG3716は、回復処理をC−MP122に命じる。
【0100】
C−MP122は、不揮発性メモリ123に、退避失敗を表す情報が記憶されていれば(S2301:NO)、退避対象が揮発したと扱う(S2307)。具体的には、C−MP122は、退避対象が揮発したことを、回復PG3716に伝える。ストレージシステム103が起動した後、退避対象が揮発したとして、種々の制御が行われる。
【0101】
C−MP122は、不揮発性メモリ123に、退避成功を表す情報が記憶されていれば(S2301:YES)、退避されたアドレス管理情報から一つのアドレスセットを取得し(S2302)、そのアドレスセットに対応した領域(不揮発性メモリ123内の領域)から情報要素を回復する(S2303)。その情報要素に対応した退避時間情報(例えば、制御テーブルに対応した退避時間情報)が代表退避時間情報1501と不一致であれば(S2304:YES)、C−MP122は、S2303で回復された情報要素を揮発したと扱い(S2305)、回復された情報要素に対応した退避時間情報が代表退避時間情報1501と一致であれば(S2304:NO)、S2305をスキップする。退避されたアドレス管理情報に未選択のアドレスセットがあれば(S2306:NO)、そのアドレスについてS2302が行われ、未選択のアドレスセットが無ければ(S2306:YES)、回復処理の終了となる。
【0102】
なお、揮発したか否かが、代表退避時刻情報と退避時刻情報が一致するか否かで判定されるが、時刻情報に代えて、カウント値など、他種の情報が採用されても良い。例えば、図19のS1901では、代表退避値が、特定の値に更新され、S1905では、退避値が、代表退避値と同じ値に更新され、S1906では、退避値が、代表退避値と異なる値に更新される。このような方法でも、回復処理において、代表退避値と退避値が一致するか否かで、回復された情報要素を揮発として扱うか否かを制御することができる。
【0103】
<通常フェーズ>。
【0104】
通常フェーズで処理としては、例えば、下記(N−1)乃至(N−6)、
(N−1)バッテリ監視処理;
(N−2)バッテリ充電率に応じた退避対象制御処理;
(N−3)リード処理/ライト処理(ダーティ量調整処理);
(N−4)制御テーブル退避処理;
(N−5)更新管理処理;
(N−6)事前リフレッシュ処理;
の6種類の処理がある。
【0105】
(N−1)バッテリ監視処理。
【0106】
バッテリ監視処理とは、定期的に(又は不定期的に)バッテリ124の充電率を把握する処理である。バッテリ監視処理としては、前述したように、ハードウェア的な処理とソフトウェア的な処理がある。
【0107】
ハードウェア的な処理は、C−MP122が行う。C−MP122は、把握されたバッテリ充電率を表す情報をレジスタに設定する。C−MP122のレジスタに設定されたバッテリ充電率情報は、バッテリ監視PG371によって取得され、監視充電率情報1301(図13参照)として揮発性メモリ121に格納される。
【0108】
ソフトウェア的な処理は、バッテリ監視PG3712が行う。具体的には、例えば、バッテリ監視PG3712は、(26−A)乃至(26−C)の処理、
(26−A)バッテリ124の予め分かっている充電特性を基に、バッテリ124の現時点の充電率から満充電になるまでに必要な時間長(以下、時間長T)を把握し、時間長Tと、ストレージシステム103が起動してからの経過時間とを基に、バッテリ124の充電率を計算(推測)する;
(26−B)電断が検出された場合、電断検出時のバッテリ124の充電率((26−A)で計算された値)と、バッテリ124の予め分かっている消費特性を基に定義されている、電断1回当たりのバッテリ消費量とを基に(或いは、電断検出時のバッテリ124の充電率と、単位時間当りのバッテリ消費量と、電断検出時からの経過時間)とを基に)、バッテリ124の残量(充電率)を計算する;
(26−C)電断から回復されたことを検出した場合、(26−A)を実行する;
を行う。
【0109】
図26を参照して、ソフトウェア的なバッテリ監視処理の具体例を説明すると、以下の通りである。すなわち、バッテリ監視PG3712は、電断発生1回当たりのバッテリ消費量を50%とすると、以下の(26−1)乃至(26−7)の処理、
(26−1)満充電の状態で電断発生1があり、その結果、前述の(26−B)の処理によって、バッテリ充電率(残量)が50%であると計算する;
(26−2)バッテリ充電率が50%のときにストレージシステム101が起動し、前述の(26−A)の処理を行い、その結果、その起動からの経過時間が、充電率50%から満充電になるまでに必要な時間(3h)を経過したため、バッテリ充電率を100%と計算する;
(26−3)満充電の状態で電断発生2があり、その結果、前述の(26−B)の処理によって、バッテリ充電率(残量)が50%であると計算する;
(26−4)バッテリ充電率が50%のときにストレージシステム101が起動し、前述の(26−A)の処理を行い、その結果、その起動からの経過時間が、充電率50%から満充電になるまでに必要な時間(3h)の半分の時間1.5hの時点で、電断発生3があったため、バッテリ充電率を50%+25%=75%と計算する;
(26−5)バッテリ充電率75%の状態で電断発生3があり、その結果、前述の(26−B)の処理によって、バッテリ充電率(残量)が25%であると計算する;
(26−6)バッテリ充電率が25%のときにストレージシステム101が起動し、前述の(26−A)の処理を行い、その結果、その起動からの経過時間が2hの時点で、電断発生4が生じたため、バッテリ充電率を25%+(50%×2/3)≒58%と計算する;
(26−7)バッテリ充電率58%のときに電断発生4があり、その結果、前述の(26−B)の処理によって、バッテリ充電率(残量)が8%であると計算する;
を行う。
【0110】
以上のように、ソフトウェア的にバッテリ監視処理が行われるので、ハードウェア的なバッテリ監視処理がサポートされていなくても、或いは、C−MP122に障害が発生しても、バッテリ充電率を把握することができる。
【0111】
(N−2)バッテリ充電率に応じた退避対象制御処理。
【0112】
バッテリ充電率に応じた退避対象制御処理は、把握されたバッテリ充電率に応じて、退避対象を制御する処理である。退避対象制御PG3717が、バッテリ充電率が把握される都度に、図37に示す、バッテリ充電率に応じた退避対象制御処理を行う。
【0113】
すなわち、退避対象制御PG3717は、把握されたバッテリ充電率(最新の監視充電率情報1301が表すバッテリ充電率)と、直前回に把握されたバッテリ充電率とを比較する充電率比較処理を行う。
【0114】
充電率比較処理の結果、把握されたバッテリ充電率が属するバッテリ充電率範囲が、直前回に把握されたバッテリ充電率が属するバッテリ充電率範囲と同じであれば(S3501:NO、S3054:NO)、S3502、S3503、S3505及びS3506の処理は実行されない。
【0115】
前述の充電率比較処理の結果、把握されたバッテリ充電率が、直前回に把握されたバッテリ充電率よりも低ければ、具体的には、把握されたバッテリ充電率が属するバッテリ充電率範囲が、直前回に把握されたバッテリ充電率が属するバッテリ充電率範囲よりも低い範囲であれば(S3501:NO、S3054:YES)、退避対象制御PG3717は、S3505で、下記の処理、
(3505−1)揮発性メモリ121におけるダーティデータの総量が、把握されたバッテリ充電率が属するバッテリ充電率範囲に対応するダーティ量(規定ダーティ量)を超えていれば、ダーティデータの総量が規定ダーティ量以下になるように、ダーティデータをHDD115に格納し(つまりダーティデータを減らし)、それに伴い、監視ダーティ量情報1401(図14参照)を更新する;
(3505−2)退避する制御情報要素の総量が、把握されたバッテリ充電率が属するバッテリ充電率範囲に対応する制御情報量(以下、規定情報量)を超えていれば、退避する制御情報要素の総量が規定情報量以下になるように、より多くの制御テーブル(具体的には、より多くの、退避要否“要”且つ重要度“低”に対応した制御テーブル)を非退避対象とし、非退避対象の制御テーブルに対応した退避時刻情報として、現在時刻を表す情報を、テーブル管理情報1001(図10参照)に設定する;
を実行する。これにより、後の回復処理では、回復された代表退避時刻情報1501が表す時刻と、非退避対象とされた制御情報テーブルに対応する退避時刻とが不一致となるため、回復された制御テーブルが、電断時に退避されなかった制御テーブルであると判断することが可能である。
【0116】
その後、退避対象制御PG3717は、S3506で、アドレス管理情報1710(図17参照)から、下記(3506−1)及び(3506−2)、
(3506−1)前述の(3505−1)でHDD115に格納されたダーティデータが存在していた領域(揮発性メモリ121における領域)のアドレス範囲を表すアドレスセット;
(3506−2)前述の(3505−2)で非退避対象とされた制御テーブルが存在する領域(揮発性メモリ121における領域)のアドレス範囲を表すアドレスセット;
を削除する。これにより、図36に示すように、電断時に退避される制御情報要素の総量が減ることになる。
【0117】
前述の充電率比較処理の結果、把握されたバッテリ充電率が、直前回に把握されたバッテリ充電率よりも高ければ、具体的には、把握されたバッテリ充電率が属するバッテリ充電率範囲が、直前回に把握されたバッテリ充電率が属するバッテリ充電率範囲よりも高い範囲であれば(S3501:YES)、退避対象制御PG3717は、S3502で、以下の処理を行う。すなわち、退避対象制御PG3717は、退避する制御情報要素の総量が、把握されたバッテリ充電率が属するバッテリ充電率範囲に対応する制御情報量(規定情報量)を超えない範囲で、より多くの制御テーブル(具体的には、より多くの、退避要否“要”且つ重要度“低”に対応した制御テーブル)を退避対象とし、退避対象の制御テーブルに対応した退避時刻情報として、代表退避時刻を表す情報をテーブル管理情報1001(図10参照)に設定する。これにより、後の回復処理では、回復された代表退避時刻情報1501が表す時刻と、退避対象とされた制御情報テーブルに対応する退避時刻とが一致するため、回復された制御テーブルが、電断時に退避された制御テーブルであると判断することが可能である。
【0118】
その後、退避対象制御PG3717は、S3503で、アドレス管理情報1710(図17参照)に、S3502で退避対象とされた制御テーブルが存在する領域(揮発性メモリ121における領域)のアドレス範囲を表すアドレスセットを追加する。これにより、図36に示すように、電断時に退避される制御情報要素の総量が増えることになる。
【0119】
バッテリ充電率に応じた退避対象制御処理では、退避対象としてのダーティデータの総量、並びに、退避対象としての制御情報要素の総量を、アドレス管理情報1710に設定されているアドレスセットから、特定することができる。従って、例えば、S3505では、どの重要度“低”の制御テーブルを退避対象から非退避対象に切替えることで、退避対象としての制御情報要素の総量を規定情報量以下にすることができるかを、把握することができる。
【0120】
以上の、バッテリ充電率に応じた退避対象制御処理によれば、バッテリ充電率に応じて退避対象の総量が制御される。このため、例えば図24に示すような、電断発生の繰り返しによってバッテリ残量が枯渇してしまうことを防止することができる。具体的には、例えば、図25に示すように、バッテリ充電率が低い場合には退避対象の総量も少なく制御されるので、退避処理が短い時間で済み、それ故、電断1回あたりに消費するバッテリ充電率も低く抑えられる。この結果、図24に示した例と異なり、図25に示すように、バッテリ残量が枯渇してしまうことを防止することができる。
【0121】
(N−3)リード処理/ライト処理(ダーティ量調整処理)。
【0122】
リード処理は、図5を参照して説明した処理であり、ライト処理は、図6を参照して説明した処理である。
【0123】
ライト処理では、一時的に、揮発性メモリ121にダーティデータが増えることになる。そこで、I/O制御PG3711が、図28に示すダーティ量調整処理を行う。
【0124】
すなわち、I/O制御PG3711は、ライトコマンドを受けたとき、監視充電率情報1301が表す充電率に対応したダーティ量(以下、図28の説明において、「上限ダーティ量」)をダーティ量管理情報1101から把握し、且つ、監視ダーティ量情報1401が表すダーティ量(以下、図28の説明において「現在のダーティ量」と言う)を把握する(S2801)。
【0125】
I/O制御PG3711は、ライト対象のデータの情報量と現在のダーティ量との和が上限ダーティ量を超えない場合には(S2802:YES)、図27に実線で示すように、通常ライトモードに従う処理を行う。具体的には、I/O制御PG3711は、ライト対象のデータを揮発性メモリ121に書き(S2803)、ホスト101へライト完了の応答を返す。この場合、ライト対象のデータが格納されているスロットに対応したスロット状態として、ダーティ量管理情報1101に、I/O制御PG3711によって、“ダーティ”が設定される。
【0126】
一方、I/O制御PG3711は、ライト対象のデータの情報量と現在のダーティ量との和が上限ダーティ量を超える場合には(S2802:NO)、図27に点線で示すように、ライトスルーモードに従う処理を行う。具体的には、I/O制御PG3711は、ライト対象のデータを揮発性メモリ121に一時記憶させそのライト対象のデータをHDD115に格納し(S2804)、その後で、ホスト101へライト完了の応答を返す。この場合、ライト対象のデータが格納されているスロットに対応したスロット状態として、ダーティ量管理情報1101に、I/O制御PG3711によって、“クリーン”が設定される。
【0127】
以上のダーティ量調整処理により、揮発性メモリ121におけるダーティデータの総量が、電断フェーズにおいて退避しきれない程の量になってしまうことを防ぐことができる。
【0128】
(N−4)制御テーブル退避処理。
【0129】
図30に示すように、退避対象制御PG3717が、定期的に、各制御テーブルに対応した更新カウント値をチェックする(S3001、S3002)。
【0130】
退避対象制御PG3717は、所定回数見ても変更の無い更新カウント値に対応した制御テーブルを、不揮発性メモリ121に格納し、その制御テーブルに対応した退避済み情報を、退避済みを表す“0”に更新し、その制御テーブルに対応したアドレスセットをアドレス管理情報1710から削除する(S3003)。
【0131】
以上の制御テーブル退避処理によれば、例えば図29に示すように、一定期間以内に更新のあった制御テーブル“C1”、つまり更新頻度の高い制御テーブル“C1”は、不揮発性メモリ123に退避されないが、一定期間経っても更新の無い制御テーブル、つまり更新頻度の低い制御テーブル“C2”が、計画停止フェーズ或いは電断フェーズでの退避処理の前に予め不揮発性メモリに格納され、非退避対象とされる(制御テーブル“C2”が存在する領域に対応したアドレスセットがアドレス管理情報1710から削除される)。これにより、計画停止フェーズ及び電断フェーズでの退避処理に要する時間を短く抑えることが期待できる。
【0132】
(N−5)更新管理処理。
【0133】
特定のイベントの発生により(例えば、論理ボリュームから別の論理ボリュームへデータがマイグレーションされた、或いは、ボリューム間ペアの状態が変更された等)、少なくとも一つの制御テーブルが更新されることがある。この場合、図32に示すように、制御情報管理PG3714は、更新された制御テーブル(以下、図32の説明において「対象制御テーブル」と言う)が、退避要否“要”に対応した制御テーブルであれば(S3201:YES)、S3202として、下記の処理(3202−1)乃至(3202−4)、
(3202−1)対象制御テーブルに対応した更新有無(テーブル管理情報1001における更新有無情報)を“有”に設定する;
(3202−2)対象制御テーブルに対応した更新カウント値を1インクリメントする;
(3202−3)対象制御テーブルに対応した退避済み情報を、非退避済みを表す“1”に更新する;
(3202−4)対象制御テーブルが記憶されている領域に対応したアドレスセットをアドレス管理情報1710に追加する;
を行う。
【0134】
以上の更新管理処理によれば、ストレージシステム103の起動後、複数の制御テーブルのうち、更新のあった制御テーブルのみが、退避対象とされる。具体的には、例えば、ストレージシステム103の起動後、アドレス管理情報1710には、所定の退避対象に対応したアドレスセットのみが含まれている。このため、例えば、図31に示すように、制御テーブル“C3”が、更新の無いまま計画停止フェーズ或いは電断フェーズに入った場合、計画停止フェーズ或いは電断フェーズでは、制御テーブル“C3”は非退避対象である。一方、更新のあった制御テーブル“C4”は、計画停止フェーズ或いは電断フェーズでは退避対象である。
【0135】
(N−6)事前リフレッシュ処理。
【0136】
前述したように、特定のイベントの発生により、少なくとも一つの制御テーブルが更新されることがある。この場合、図32に示すように、リフレッシュPG3715は、更新された制御テーブル(以下、図34の説明において「対象制御テーブル」と言う)が、退避要否“要”に対応した制御テーブルであれば(S3401:YES)、その制御テーブルが格納されている領域に対応した、不揮発性メモリ(フラッシュメモリ)123内の領域に、リフレッシュ処理、具体的には消去処理を施す。例えば、複数の物理ページで構成された物理ブロックを複数個備えるNAND型フラッシュメモリの場合には、物理ページ単位で書込みや読出しが行われるが、リフレッシュ処理(消去処理)は、物理ブロック単位で行われる。
【0137】
以上の事前リフレッシュ処理により、退避処理に要する時間を短く抑えることが期待できる。具体的には、下記の通りである。
【0138】
すなわち、フラッシュメモリの領域に情報を上書きするためには、その領域に一旦リフレッシュ処理を施す必要がある。しかし、退避処理の際にリフレッシュ処理を施すことは、退避処理に要する時間を長引かせる原因になる。
【0139】
そして、退避対象の一つは、図33に示すように、更新のあった制御テーブル“C6”である。
【0140】
そこで、本実施形態では、退避処理が行われる前に、予め、更新のあった制御テーブルに対応した、不揮発性メモリ123内の領域に、リフレッシュ処理が施される。このため、その更新のあった制御テーブルの退避の際にリフレッシュ処理を行う必要が無いので、退避処理に要する時間を短くすることが期待できる。
【0141】
なお、この事前リフレッシュ処理は、更新のあった制御テーブルに対応した領域だけでなく、更新が無くても退避されることになる制御情報要素の退避先領域に対して行われても良い。
【0142】
以上、本発明の好適な実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、アドレスセットに代えて、開始アドレス(又は終了アドレス)とデータサイズとのセットが採用されても良い。また、例えば、図38に示すように、退避対象制御PG3717が、定期的にテーブル管理情報1001をチェックし(S3801)、退避済み且つ更新無しに対応した制御テーブルが記憶されている領域に対応したアドレスセットを、アドレス管理情報1701から削除しても良い(S3802)。つまり、退避済み且つ更新無しに対応した制御テーブルが、計画停止フェーズ及び電断フェーズの前に予め非退避対象にされても良い。
【技術分野】
【0001】
本発明は、揮発性メモリと不揮発性メモリとを備えたストレージシステムの制御に関する。
【背景技術】
【0002】
この種のストレージシステムとして、例えば、特許文献1に開示のストレージシステムが知られている。特許文献1によれば、ストレージシステムでは、一次電源から揮発性キャッシュメモリへの給電が無くなった場合に、バッテリから揮発性キャッシュメモリに電力が供給され、その間に、揮発性キャッシュメモリに記憶されているデータが不揮発性メモリにコピーされる。
【0003】
【特許文献1】特開2008−108026号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
一次電源から揮発性メモリへの給電が無くなった場合(つまり電断が生じた場合)、バッテリからの給電が開始される。一次電源からの給電が再開されれば、バッテリからの給電が中止され再び充電が開始されるが、満充電になる前(充電率が100%になる前)に再び一次電源の電断が生じれば、満充電ではない充電状況であってもバッテリからの給電が開始される。すなわち、一次電源の電断が頻発すると、充電状況の良くないバッテリからの給電に基づいて揮発性メモリから不揮発性メモリへの情報の退避処理が行われることになり、それ故、揮発性メモリにおける退避対象を退避する前にバッテリの残量が枯渇してしまうおそれがある。
【0005】
また、不揮発性メモリを大容量にしておけば、大量の情報を退避することが期待できるが、そうすると、揮発性メモリから不揮発性メモリに退避される情報の量が多くなり、故に、退避処理に要する時間が長くなってしまう。
【0006】
そこで、本発明の第一の目的は、揮発性メモリにおける退避対象を確実に不揮発性メモリに退避できるようにすることにある。
【0007】
本発明の第二の目的は、退避処理に要する時間をなるべく短くすることにある。
【課題を解決するための手段】
【0008】
第一の観点では、バッテリの充電状況が定期的又は不定期的に把握され、把握された充電状況に応じて、揮発性メモリに記憶されているどの情報要素を、電断発生時の退避対象とするかが制御される。具体的には、例えば、揮発性メモリにおける後述のダーティデータの総量が制御される。
【0009】
第二の観点では、揮発性メモリに記憶されている複数の情報要素のうち特定の情報要素が、その特定の情報要素に関する状況に応じて、退避処理の際の非退避対象とされる。具体的には、例えば、特定の情報要素は、更新頻度が低い状況の場合に退避され、この時点で退避済みとなるので、退避処理の際には、新たに更新されていなければ、非退避対象である。また、特定の情報要素は、重要度が低い場合には、非退避対象とされる。
【図面の簡単な説明】
【0010】
【図1】図1は、本発明の一実施形態に係る計算機システムの構成例を示す。
【図2】図2は、ストレージシステム103におけるデータと制御信号の流れの一例を示す。
【図3】図3は、電源モジュール117からの給電とバッテリ124からの給電とを示す。
【図4】図4は、CM−PK116で行われる処理の説明図である。
【図5】図5は、ホスト101からリードコマンドを受けたストレージシステム103で行われる処理の流れを示す。
【図6】図6は、ホスト101からライトコマンドを受けたストレージシステム103で行われる処理の流れを示す。
【図7】図7は、計画停止フェーズで行われる退避処理の概要を示す。
【図8】図8は、揮発性メモリ121の構成例を示す。
【図9】図9は、制御テーブルの例を示す。
【図10】図10は、テーブル管理情報の構成を示す。
【図11】図11は、ダーティ量管理情報の構成を示す。
【図12】図12は、制御量管理情報の構成を示す。
【図13】図13は、監視充電率情報を示す。
【図14】図14は、監視ダーティ量情報を示す。
【図15】図15Aは、代表退避時刻情報を示す。図15Bは、ホストデータ退避時刻情報を示す。
【図16】図16は、ホストデータ管理情報を示す。
【図17】図17は、アドレス管理情報を示す。
【図18】図18は、ダーティ退避処理の流れを示す。
【図19】図19は、制御退避処理の流れを示す。
【図20】図20は、電断フェーズで行われる退避処理の概要を示す。
【図21】図21は、電断フェーズで行われる退避処理の流れを示す。
【図22】図22は、回復フェーズで行われる回復処理の概要を示す。
【図23】図23は、回復フェーズで行われる回復処理の流れを示す。
【図24】図24は、バッテリ充電率に応じた退避対象制御処理が行われない場合の問題点を示す。
【図25】図25は、バッテリ充電率に応じた退避対象制御処理が行われることによる効果の一例を示す。
【図26】図26は、ソフトウェア的なバッテリ監視処理の具体例の説明に関する図である。
【図27】図27は、ダーティ量調整処理の概要を示す。
【図28】図28は、ダーティ量調整処理の流れを示す。
【図29】図29は、制御テーブル退避処理の概要を示す。
【図30】図30は、制御テーブル退避処理の流れを示す。
【図31】図31は、更新管理処理の概要を示す。
【図32】図32は、更新管理処理の流れを示す。
【図33】図33は、更新のあった制御テーブルが不揮発性メモリに上書きされることを示す。
【図34】図34は、事前リフレッシュ処理の流れを示す。
【図35】図35は、バッテリ充電率に応じた退避対象制御処理の流れを示す。
【図36】図36は、バッテリ充電率に応じた退避対象制御処理によって退避対象の総量が調整されることを示す。
【図37】図37は、MP−PKの構成を示す。
【図38】図38は、退避済み且つ更新無しの制御テーブルを非退避対象とする流れを示す。
【符号の説明】
【0011】
103…ストレージシステム
【発明を実施するための最良の形態】
【0012】
以下、図面を参照して、本発明の一実施形態を説明する。
【0013】
図1は、本発明の一実施形態に係る計算機システムの構成例を示す。
【0014】
ストレージシステム103に、SAN(Storage Area Network)102を通じて、一以上のホスト101が接続されている。SAN102に代えて、LAN(Local Area Network)等の他種の通信ネットワークが採用されても良い。
【0015】
ホスト101は、CPU(Central Processing Network)やメモリ等の情報処理資源を備えた計算機であり、例えば、パーソナルコンピュータや、ワークステーションや、メインフレーム等である。
【0016】
ストレージシステム103は、コントローラと、記憶装置群と、電源モジュール117とを備える。
【0017】
電源モジュール117は、商用電源から供給される電力に基づく電力を各種構成要素に供給する。
【0018】
記憶装置群は、例えば、複数のHDD(Hard Disk Drive)115で構成されている。RAID(Redundant Array of Independent (or Inexpensive) Disks)グループを構成する二以上のHDD115で、一以上の論理ボリュームが形成されている。HDD115に代えて、フラッシュメモリなど他種の物理記憶装置が採用されても良い。
【0019】
コントローラは、複数種類のパッケージ(以下、パッケージを「PK」と略す)、具体的には、CHA−PK111、MP−PK112、SW−PK113、CM−PK116、及びDKA−PK114で構成される。各種パッケージは、例えば、回路基板である。各種パッケージの数は、1に限らず、2以上であっても良い。例えば、CHA−PK111及びDKA−PK114の数は、それぞれ2以上である。
【0020】
CHA−PK111は、ホスト101との通信を制御するインタフェース装置である。CHA−PK111は、ホスト101からI/Oコマンド(例えばライトコマンド又はリードコマンド)を受信し、ホスト101との間でデータの送受信を行う。
【0021】
MP−PK112は、ストレージシステム103の動作を制御する。
【0022】
SW−PK113は、CHA−PK111、MP−PK112、CM−PK116及びDKA−PK114に接続されており、これらPK間の通信を中継する。
【0023】
CM−PK116は、ホスト101からのライトコマンドに応答してHDD115に書き込まれるライト対象のデータや、ホスト101からのリードコマンドに応答してHDD115から読み出されたリード対象のデータを一時的に記憶するキャッシュメモリとしてのパッケージである。CM−PK116は、揮発性メモリ121と、不揮発性メモリ123と、バッテリ124と、C−MP122とを有する。揮発性メモリ121が、キャッシュメモリとして利用されるメモリである。不揮発性メモリ123が、揮発性メモリ121に記憶されている情報の退避先として利用されるメモリである。不揮発性メモリ123は、例えば、フラッシュメモリを備えたデバイス、一例として、SSD(Solid State Device)である。C−MP122は、CM−PK116に備えられるマイクロプロセッサである。MP−PK112にも、後述するようにマイクロプロセッサが備えられているが、C−MP122は、そのマイクロプロセッサよりも性能の低いマイクロプロセッサで良い。本実施形態の説明では、CM−PK116に備えられるマイクロプロセッサを「C−MP」と言い、MP−PK112に備えられるマイクロプロセッサを「M−MP」と言う。
【0024】
DKA−PK114は、HDD115に対する通信を制御するインタフェース装置である。
【0025】
図2は、ストレージシステム103におけるデータと制御信号の流れの一例を示す。
【0026】
ホスト101からのI/Oコマンドは、CHA−PK111で受け付けられる。データは、SW−PK113を介して、CHA−PK111、MP−PK112及びDKA−PK114間でやり取りされる。また、揮発性メモリ121と不揮発性メモリ123との間でもデータがやり取りされる。揮発性メモリ121から不揮発性メモリ123へのデータの退避、並びに、不揮発性メモリ123から揮発性メモリ121へのデータの回復は、C−MP122からの制御信号に基づき行われる。
【0027】
図3は、電源モジュール117からの給電とバッテリ124からの給電とを示す。
【0028】
実線矢印で示すように、電源モジュール117からは、商用電源からの電力に基づく電力が、ストレージシステム103内の各種構成要素、すなわち、CHA−PK111、MP−PK112、SW−PK113、DKA−PK114、HDD115、及びCM−PK116(具体的には、例えば、CM−PK116内の各要素121、122、123及び124)に供給される。バッテリ124には、電源モジュール117からの給電に基づき充電がされる。
【0029】
停電或いは障害の発生等が原因で、電源モジュール117からの給電が断たれると(つまり電断が発生すると)、点線矢印で示すように、バッテリ124から、CM−PK116内の他の要素121、122及び123に、電力が供給される。
【0030】
図4は、CM−PK116で行われる処理の説明図である。
【0031】
揮発性メモリ121に記憶される情報要素としては、ホストデータと制御情報要素がある。ホストデータは、ホスト101からのライトコマンドに応答してHDD115に書き込まれるデータ、及び、ホスト101からのリードコマンドに応答してHDD115から読み出されたデータである。制御情報要素は、後述のM−MPに参照されストレージシステム103の制御のために使用される情報要素である。揮発性メモリ121上のホストデータ(正確には後述のダーティデータ)及び制御情報要素が、不揮発性メモリ123に退避される。
【0032】
C−MP122は、下記機能(4−1)及び(4−2)、
(4−1)設定されたアドレスセットが表す領域(開始アドレスから終了アドレスの範囲に対応した領域)に記憶されている情報要素を揮発性メモリ121から不揮発性メモリ123に退避する機能;
(4−2)不揮発性メモリ123から揮発性メモリ121に情報要素を回復する機能;
を有する。回復される情報要素は、不揮発性メモリ123に記憶されている全ての情報要素であっても良いし、設定されたアドレスセットが表す領域(開始アドレスから終了アドレスの範囲に対応した領域)に対応した情報要素であっても良い。揮発性メモリ121から不揮発性メモリ123への情報要素の退避が失敗した場合には、不揮発性メモリ123上に、C−MP122によって、退避失敗を表す情報が格納される。
【0033】
本実施形態で言う「アドレスセット」とは、開始アドレス及び終了アドレスのセットである。アドレスセットは、C−MP122のレジスタ(及び/又は揮発性メモリ121)に設定される。そのレジスタ(及び/又は揮発性メモリ121)には、一又は複数のアドレスセットを蓄積することが可能である。また、レジスタに設定されているアドレスセットは、C−MP122(及び/又は揮発性メモリ121)から不揮発性メモリ123に書き込まれる。これにより、電断が生じても、アドレスセットは不揮発性メモリ123で保持されていることになる。
【0034】
ちなみに、本実施形態では、揮発性メモリ121に割当てられているアドレスと不揮発性メモリ123に割当てられているアドレスが、1対1で対応している。このため、本実施形態では、退避処理及び回復処理において、例えば、或るアドレス範囲を表すアドレスセットが設定された場合、そのアドレス範囲に対応する、一方のメモリ121又は123の領域から、そのアドレス範囲に対応する、他方のメモリ123又は121の領域への情報の転送が行われる。しかし、それに限らず、例えば、不揮発性メモリの容量と揮発性メモリの容量が異なっている等の場合には、不揮発性メモリのアドレスと揮発性メモリのアドレスとの対応を管理する管理情報が用意され、その管理情報を基に、退避処理や回復処理が行われても良い。
【0035】
図37は、MP−PK112の構成例を示す。
【0036】
MP−PK112は、例えば、M−MP3701と、ローカルメモリ3702とを有する。ローカルメモリ3702には、M−MP3701に実行されるコンピュータプログラム(以下、「PG」と略す)として、例えば、I/O制御PG3711と、バッテリ監視PG3712と、退避PG3713と、制御情報管理PG3714と、リフレッシュPG3715と、回復PG3716と、退避対象制御PG3717とを記憶する。各PGについては、後に説明する。なお、以下、説明を簡易にするために、PGを主語として処理を説明することがあるが、その処理は、PGを実行するM−MP122によって行われる処理である。
【0037】
図5は、ホスト101からリードコマンドを受けたストレージシステム103で行われる処理の流れを示す。点線は、コマンドや指示の流れを表し、実線は、ホストデータの流れを表す(これは、図6についても同様である)。
【0038】
CHA−PK111がホスト101からリードコマンドを受けると、リードコマンドがMP−PK112に送られる。
【0039】
揮発性メモリ121にリード対象のホストデータがあれば、MP−PK112内のI/O制御PG3711は、そのホストデータを揮発性メモリ121から読出しCHA−PK111を通じてホスト101に送信する。
【0040】
揮発性メモリ121にリード対象のホストデータが無ければ、MP−PK112内のI/O制御PG3711は、受信したリードコマンドで指定されているリード元ボリューム(例えばポート番号及びLUN(Logical Unit Number))及びリード元アドレス(例えばLBA(Logical Block Address))等を基に、DKA−PK114に、リード対象のホストデータ“C”を揮発性メモリ121に送ることのリード指示を送信する。DKA−PK114が、そのリード指示に応答して、そのリード指示から特定されるHDD115からリード対象のホストデータ“C”を読み出し、そのホストデータ“C”を揮発性メモリ121に格納し、リード完了をMP−PK112に通知する。リード完了の通知を受けたMP−PK112内のI/O制御PG3711は、揮発性メモリ121からホストデータ“C”を読み出してCHA−PK111を通じてホスト101に送信する。
【0041】
図6は、ホスト101からライトコマンドを受けたストレージシステム103で行われる処理の流れを示す。
【0042】
CHA−PK111がホスト101からライトコマンドを受けると、ライトコマンドがMP−PK112に送られる。MP−PK112内のI/O制御PG3711は、そのライトコマンドに従うライト対象のホストデータ“D”を揮発性メモリ121に書き込む。そして、MP−PK112内のI/O制御PG3711は、受信したライトコマンドで指定されているライト先ボリューム及びライト先アドレス等を基に、DKA−PK114に、ホストデータ“D”のHDD115へのライト指示を送信する。DKA−PK114が、そのライト指示に応答して、揮発性メモリ121からホストデータ“D”を読み出し、そのホストデータ“D”をHDD115に格納する。
【0043】
図8は、揮発性メモリ121の構成例を示す。
【0044】
揮発性メモリ121は、制御情報エリア801とホストデータエリア803とで構成される。制御情報エリア801に、前述した制御情報が格納され、ホストデータエリア803に、ホストデータが格納される。制御情報要素としては、下記情報要素、
(1)各種制御テーブル;
(2)ダーティ量管理情報;
(3)制御量管理情報;
(4)監視充電率情報;
(5)監視ダーティ量情報;
(6)代表退避時刻情報;
(7)ホストデータ退避時刻情報;
(8)ホストデータ管理情報;
がある。以下、各種の制御情報要素を説明する。
【0045】
図9は、制御テーブルの例を示す。
【0046】
制御テーブルとは、MP−PK112が行う制御の基になる情報要素である。制御テーブルには、例えば、構成テーブル901、コピーテーブル902、モニタテーブル903等がある。構成テーブル901は、ストレージシステム103の構成に関する情報(例えば、どのLUNにどの論理ボリュームが割当てられていてどの論理ボリュームがどのHDDを基に形成されているかを表す情報)を保持するテーブルである。コピーテーブル902は、ボリューム間のコピーに関する情報(例えば、どのボリュームとどのボリュームがペアになっていてそのペアがどんな状態であるかを表す情報)を保持するテーブルである。モニタテーブル903は、ストレージシステム103内の種々の監視結果を表す情報を保持するテーブルである。各種制御テーブルには、制御テーブルを識別するためのテーブルIDが割当てられている。
【0047】
図10は、テーブル管理情報の構成を示す。
【0048】
テーブル管理情報1001は、制御テーブルに関する情報を保持するテーブルである。テーブル管理情報1001には、例えば、制御テーブル毎に、退避要否情報、退避重要度情報、更新有無情報、更新カウント値、退避済み情報、テーブルサイズ及び退避時刻情報といったサブ情報要素が保持される。以下、図10の説明において、或る一つの制御テーブルを「対象制御テーブル」と言い、対象制御テーブルについて、各サブ情報要素を説明する。
【0049】
退避要否情報は、対象制御テーブルを不揮発性メモリ123に退避する必要があるかどうかを表すサブ情報要素である。退避要か退避不要かは、対象制御テーブルの種類を基に予め決定されている。
【0050】
退避重要度情報は、対象制御テーブルの重要度を表すサブ情報要素である。本実施形態では、重要度としての値は、“高”(対象制御テーブルの退避が必須であることを意味する値)と、“低”(対象制御テーブルが退避されなくても差し支えないことを意味する値)との2種類がある。重要度の値も、対象制御テーブルの種類を基に予め決定されている。
【0051】
更新有無情報は、ストレージシステム103が起動した後、若しくは、対象制御テーブルが退避された後に、対象制御テーブルが更新されたか否かを表すサブ情報要素である。
【0052】
更新カウント値は、対象制御テーブルが更新された回数を表すサブ情報要素である。
【0053】
退避済み情報は、対象制御テーブルの退避処理が正常に完了したか否かを表すサブ情報要素である。退避済み情報としての値は、例えば、退避済みであれば“0”、退避済みでなければ“1”である。
【0054】
テーブルサイズは、対象制御テーブルのサイズ(情報量)を表すサブ情報要素である。
【0055】
退避時刻情報は、対象制御テーブルが退避された時刻を表すサブ情報要素である。
【0056】
図11は、ダーティ量管理情報の構成を示す。
【0057】
ダーティ量管理情報1101には、どんなバッテリ充電率の場合にどのぐらいのダーティデータを退避することが可能かを表す制御情報要素である。具体的には、バッテリ充電率範囲毎の退避可能なダーティ量が保持される。「ダーティ量」とは、ダーティデータの総量である。ダーティ量は、ホストデータエリア803(図8参照)の記憶容量を100としたときの、ダーティデータの総量である。「ダーティデータ」とは、揮発性メモリ121内のホストデータのうちの、HDD115に未格納のホストデータである。それに対し、揮発性メモリ121内のホストデータのうちの、HDD115に格納済みのホストデータを、「クリーンデータ」と言う。
【0058】
図12は、制御量管理情報の構成を示す。
【0059】
制御量管理情報1201には、どんなバッテリ充電率の場合にどのぐらいの制御情報を退避することが可能かを表す制御情報要素である。具体的には、バッテリ充電率範囲毎の退避可能な制御情報量が保持される。制御情報量は、制御情報エリア801(図8参照)の記憶容量を100としたときの、制御情報の量である。
【0060】
図13は、監視充電率情報を示す。
【0061】
監視充電率情報1301は、バッテリ124の充電率の監視結果を表す制御情報要素である。具体的には、バッテリ124の充電率は、定期的に(又は不定期的に)把握され、把握された充電率が、監視充電率情報1301として揮発性メモリ121に記憶される。バッテリ124の充電率の監視は、バッテリ監視PG3712と、C−MP122の両方が行うことができる。つまり、ソフトウェア的な監視と、ハードウェア的な監視との両方を行うことができる。ハードウェア的な監視で把握されたバッテリ充電率が、監視充電率情報1301として優先的に記憶され、ハードウェア的な監視がされない場合には、ソフトウェア的な監視で把握されたバッテリ充電率が、監視充電率情報1301として記憶される。
【0062】
図14は、監視ダーティ量情報を示す。
【0063】
監視ダーティ量情報1401は、現時点のダーティ量を表す制御情報要素である。例えば、監視ダーティ量情報1401は、ダーティデータの総量が変更される都度、例えば、揮発性メモリ121にライト対象のデータが格納される都度、或いは、ダーティデータが揮発性メモリ121からHDD115に格納される都度に、I/O制御PG3711或いは退避PG3713によって更新される。
【0064】
図15Aは、代表退避時刻情報を示す。
【0065】
代表退避時刻情報1501は、テーブル管理情報1001(図10参照)における退避時刻情報や、図15Bに示すホストデータ退避時刻情報1601の基になる制御情報要素である。代表退避時刻情報1501は、例えば、計画停止の際の退避処理の開始時刻である。
【0066】
図15Bは、ホストデータ退避時刻情報を示す。
【0067】
ホストデータ退避時刻情報1601は、揮発性メモリ121からHDD115にダーティデータが退避された時刻を表す制御情報要素である。
【0068】
図16は、ホストデータ管理情報を示す。
【0069】
ホストデータ管理情報1701は、揮発性メモリ121内のホストデータエリア803における各スロット(記憶領域)に記憶されているホストデータの属性を管理するための制御情報要素である。ホストデータ管理情報1701には、例えば、スロット毎に、スロット番号とスロット状態とが保持される。スロット状態は、対応するスロットに格納されているホストデータがクリーンデータかダーティデータかを表す情報である。
【0070】
なお、スロットのサイズは、一定である。従って、ダーティデータが格納されているスロットの数とスロットのサイズとのサイズとホストデータエリア803とのサイズを基に、ダーティ量を算出することが可能である。
【0071】
図17は、アドレス管理情報を示す。
【0072】
アドレス管理情報1710は、前述した一又は複数のアドレスセット(開始アドレスと終了アドレスのセット)で構成されている情報である。アドレス管理情報1710は、C−MP122内のレジスタ、或いは、揮発性メモリ121に格納され、不揮発性メモリ123に退避される。
【0073】
前述した情報のうち、少なくとも、テーブル管理情報1001(図10参照)、代表退避時刻情報1501(図15A参照)、及びホストデータ退避時刻情報1701(図16参照)は、電断フェーズでの退避処理での退避対象である。言い換えれば、アドレス管理情報1710には、電断フェーズでの退避処理に備えて、テーブル管理情報1001が占める範囲の開始アドレス及び終了アドレスと、代表退避時刻情報1501が占める範囲の開始アドレス及び終了アドレスと、ホストデータ退避時刻情報1701が占める範囲の開始アドレス及び終了アドレスとが必ず含まれる。
【0074】
以下、本実施形態で行われる処理を、
計画停止フェーズ;
電断フェーズ;
回復フェーズ;
通常フェーズ;
の4つのフェーズに場合分けして説明する。
【0075】
<計画停止フェーズ>。
【0076】
図7は、計画停止フェーズで行われる退避処理の概要を示す。
【0077】
計画停止フェーズでは、電断フェーズと異なり、揮発性メモリ121への電力は、一次電源117から供給される。従って、バッテリ124の充電率の割に退避対象としての制御情報要素の総量が多くても、揮発性メモリ121から不揮発性メモリ123に全ての退避対象の制御情報要素を退避することは可能である。
【0078】
計画停止フェーズは、例えば、計画停止信号が検出されたときに開始される。計画停止信号は、例えば、ホスト101或いは管理計算機(図示せず)等の外部の装置から入力される信号であっても良いし、ストレージシステム103に備えられている特定のスイッチがターンオンされることによって入力される信号であっても良い。
【0079】
計画停止フェーズでは、ダーティ退避処理と制御退避処理の2種類の退避処理が行われる。ダーティ退避処理では、ダーティデータ“E”が、そのダーティデータ“E”をライト対象とするライトコマンドに従う書込み先に対応したHDD115に格納される。制御退避処理では、複数種類の制御テーブルのうちのいずれを非退避対象とするかが決定され、非退避対象とされなかった制御情報要素“F”(つまり退避対象とされた制御情報要素“F”)が、不揮発性メモリ123に退避される。
【0080】
ダーティ退避処理も制御退避処理も、退避PG3713(図37参照)によって行われる。以下、図18を参照して、ダーティ退避処理の流れを説明し、図19を参照して、制御退避処理の流れを説明する。
【0081】
図18は、ダーティ退避処理の流れを示す。
【0082】
退避PG3713は、計画停止信号を検出したら、ホストデータ管理情報1701(図16参照)を参照し(S1801)、ホストデータ管理情報1701における先頭のレコードから末尾のレコード(言い換えれば、ホストデータエリア803における先頭のスロットから末尾のスロット)にかけて、S1802乃至S1804を実行する。
【0083】
すなわち、退避PG3713は、参照したレコードにスロット状態として“ダーティ”が記録されていなければ(S1802:NO)、S1803をスキップしてS1804を実行する。一方、退避PG3713は、参照したレコードにスロット状態として“ダーティ”が記録されていれば(S1802:YES)、そのレコードに対応したスロットに記憶されているダーティデータをHDD115に格納し、そのレコードにおけるスロット状態の値を“ダーティ”から“クリーン”に変更する(S1803)。そして、退避PG3713は、参照したレコードが末尾のレコードでなければ(S1804:NO)、次のレコードについてS1802を行う。
【0084】
図19は、制御退避処理の流れを示す。
【0085】
退避PG3713は、計画停止信号を検出したら、代表退避時刻情報1501を、現在時刻を表す情報に更新する(S1901)。現在時刻は、例えばタイマから取得される。
【0086】
退避PG3713は、テーブル管理情報1001(図10参照)を参照し、テーブル管理情報1001における先頭のレコードから末尾のレコードにかけて、S1903乃至S1907を実行する。
【0087】
すなわち、退避PG3713は、参照したレコードに退避要否として“否”が記録されていれば(S1903:NO)、S1904乃至S1906をスキップしてS1907を実行する。退避PG3713は、参照したレコードに退避要否として“要”が記録されていれば(S1903:YES)、そのレコードに更新有無として“有”が記録されているか“無”が記録されているかを判断する(S1904)。更新有無として“有”が記録されていれば、退避PG3713は、S1905として、
(1905−1)参照したレコードにおける退避時刻情報を、代表退避時刻情報と同じ情報に更新する;
(1905−2)C−MP122に、参照したレコードに対応する制御テーブルが記憶されている領域に対応したアドレスセットを設定し、C−MP122に、その設定したアドレスセットに対応した領域に記憶されている制御テーブルを揮発性メモリ121から不揮発性メモリ123に退避させる;
(1905−3)参照したレコードにおける退避済み情報として値を、退避済みを表す値“0”に更新する;
を実行する。一方、更新有無として“無”が記録されていれば、退避PG3713は、S1906として、
(1906−1)参照したレコードにおける退避時刻情報を、代表退避時刻情報と同じ情報に更新する;
(1906−2)参照したレコードにおける退避済み情報としての値を、退避済みを表す値“0”に更新する;
を実行する。つまり、更新有無“無”に対応した制御レコードは、非退避対象とされ、不揮発性メモリ123に退避されない。S1905或いはS1906の後、退避PG3713は、参照したレコードが末尾のレコードでなければ(S1907:NO)、次のレコードについてS1903を行う。
【0088】
テーブル管理情報1001における末尾のレコードについてS1903乃至S1907が行われたら(S1907:YES)、退避PG3713は、C−MP122に、テーブル管理情報1001及び代表退避時刻情報1501を不揮発性メモリ123に退避させる(S1908)。
【0089】
以上の制御退避処理によれば、退避要否“否”の制御テーブル、並びに、退避済み且つ更新有無“無”の制御テーブルが、非退避対象とされる。このため、計画停止フェーズにおける退避処理に要する時間を短く抑えることが期待できる。
【0090】
なお、計画停止フェーズにおいて、全ての退避対象の退避に成功した場合、退避成功を表す情報が、C−MP122によって、不揮発性メモリ123に設定される。
【0091】
<電断フェーズ>。
【0092】
電断フェーズでは、図20に示すように、C−MP122に設定されているアドレスセットが示す領域に記憶されている全ての情報要素、つまり、ダーティデータ“E”も制御情報要素“F”も、揮発性メモリ121から不揮発性メモリ123に退避される。
【0093】
図21は、電断フェーズで行われる退避処理の流れを示す。
【0094】
C−MP122は、電断を検出すると、C−MP122のレジスタに設定されているアドレス管理情報1710(図17参照)を参照する(S2101)。C−MP122は、そのアドレス管理情報1710から一つのアドレスセットを選択し、選択されたアドレスセットから特定される領域(揮発性メモリ121内の領域)に記憶されている情報(ダーティデータ又は制御情報内の退避対象としての情報要素)を、揮発性メモリ121から不揮発性メモリ123に退避する(S2102)。C−MP122は、アドレス管理情報1710内に未選択のアドレスセットがあれば(S2103:NO)、そのアドレスセットについてS2102を実行し、未選択のアドレスセットがなければ(S2103:YES)、終了する。
【0095】
以上の流れによれば、電断フェーズでは、アドレス管理情報1710内のアドレスセットに対応した領域に記憶されている情報要素が、揮発性メモリ121から不揮発性メモリ123に退避される。揮発性メモリ121におけるどの情報要素を電断フェーズでの退避対象とするかが、通常フェーズにおいて制御される。すなわち、通常フェーズにおいて、或る情報要素が非退避対象に決定された場合には、その或る情報要素が記憶されている領域を表すアドレスセットが、アドレス管理情報1710から削除され、逆に、或る情報要素が非退避対象から退避対象にされた場合には、その或る情報要素が記憶されている領域を表すアドレスセットが、アドレス管理情報1710に追加される。全ての退避対象の退避に成功した場合、退避成功を表す情報が、C−MP122によって、不揮発性メモリ123に設定される。
【0096】
<回復フェーズ>。
【0097】
回復フェーズでは、図22に示すように、不揮発性メモリ123に記憶されている全ての情報要素、例えば、ダーティデータ“E”及び制御情報要素“F”が、不揮発性メモリ123から揮発性メモリ121に回復される。
【0098】
図23は、回復フェーズで行われる回復処理の流れを示す。
【0099】
回復PG3716がストレージシステム103の起動を検出した場合、回復PG3716は、回復処理をC−MP122に命じる。
【0100】
C−MP122は、不揮発性メモリ123に、退避失敗を表す情報が記憶されていれば(S2301:NO)、退避対象が揮発したと扱う(S2307)。具体的には、C−MP122は、退避対象が揮発したことを、回復PG3716に伝える。ストレージシステム103が起動した後、退避対象が揮発したとして、種々の制御が行われる。
【0101】
C−MP122は、不揮発性メモリ123に、退避成功を表す情報が記憶されていれば(S2301:YES)、退避されたアドレス管理情報から一つのアドレスセットを取得し(S2302)、そのアドレスセットに対応した領域(不揮発性メモリ123内の領域)から情報要素を回復する(S2303)。その情報要素に対応した退避時間情報(例えば、制御テーブルに対応した退避時間情報)が代表退避時間情報1501と不一致であれば(S2304:YES)、C−MP122は、S2303で回復された情報要素を揮発したと扱い(S2305)、回復された情報要素に対応した退避時間情報が代表退避時間情報1501と一致であれば(S2304:NO)、S2305をスキップする。退避されたアドレス管理情報に未選択のアドレスセットがあれば(S2306:NO)、そのアドレスについてS2302が行われ、未選択のアドレスセットが無ければ(S2306:YES)、回復処理の終了となる。
【0102】
なお、揮発したか否かが、代表退避時刻情報と退避時刻情報が一致するか否かで判定されるが、時刻情報に代えて、カウント値など、他種の情報が採用されても良い。例えば、図19のS1901では、代表退避値が、特定の値に更新され、S1905では、退避値が、代表退避値と同じ値に更新され、S1906では、退避値が、代表退避値と異なる値に更新される。このような方法でも、回復処理において、代表退避値と退避値が一致するか否かで、回復された情報要素を揮発として扱うか否かを制御することができる。
【0103】
<通常フェーズ>。
【0104】
通常フェーズで処理としては、例えば、下記(N−1)乃至(N−6)、
(N−1)バッテリ監視処理;
(N−2)バッテリ充電率に応じた退避対象制御処理;
(N−3)リード処理/ライト処理(ダーティ量調整処理);
(N−4)制御テーブル退避処理;
(N−5)更新管理処理;
(N−6)事前リフレッシュ処理;
の6種類の処理がある。
【0105】
(N−1)バッテリ監視処理。
【0106】
バッテリ監視処理とは、定期的に(又は不定期的に)バッテリ124の充電率を把握する処理である。バッテリ監視処理としては、前述したように、ハードウェア的な処理とソフトウェア的な処理がある。
【0107】
ハードウェア的な処理は、C−MP122が行う。C−MP122は、把握されたバッテリ充電率を表す情報をレジスタに設定する。C−MP122のレジスタに設定されたバッテリ充電率情報は、バッテリ監視PG371によって取得され、監視充電率情報1301(図13参照)として揮発性メモリ121に格納される。
【0108】
ソフトウェア的な処理は、バッテリ監視PG3712が行う。具体的には、例えば、バッテリ監視PG3712は、(26−A)乃至(26−C)の処理、
(26−A)バッテリ124の予め分かっている充電特性を基に、バッテリ124の現時点の充電率から満充電になるまでに必要な時間長(以下、時間長T)を把握し、時間長Tと、ストレージシステム103が起動してからの経過時間とを基に、バッテリ124の充電率を計算(推測)する;
(26−B)電断が検出された場合、電断検出時のバッテリ124の充電率((26−A)で計算された値)と、バッテリ124の予め分かっている消費特性を基に定義されている、電断1回当たりのバッテリ消費量とを基に(或いは、電断検出時のバッテリ124の充電率と、単位時間当りのバッテリ消費量と、電断検出時からの経過時間)とを基に)、バッテリ124の残量(充電率)を計算する;
(26−C)電断から回復されたことを検出した場合、(26−A)を実行する;
を行う。
【0109】
図26を参照して、ソフトウェア的なバッテリ監視処理の具体例を説明すると、以下の通りである。すなわち、バッテリ監視PG3712は、電断発生1回当たりのバッテリ消費量を50%とすると、以下の(26−1)乃至(26−7)の処理、
(26−1)満充電の状態で電断発生1があり、その結果、前述の(26−B)の処理によって、バッテリ充電率(残量)が50%であると計算する;
(26−2)バッテリ充電率が50%のときにストレージシステム101が起動し、前述の(26−A)の処理を行い、その結果、その起動からの経過時間が、充電率50%から満充電になるまでに必要な時間(3h)を経過したため、バッテリ充電率を100%と計算する;
(26−3)満充電の状態で電断発生2があり、その結果、前述の(26−B)の処理によって、バッテリ充電率(残量)が50%であると計算する;
(26−4)バッテリ充電率が50%のときにストレージシステム101が起動し、前述の(26−A)の処理を行い、その結果、その起動からの経過時間が、充電率50%から満充電になるまでに必要な時間(3h)の半分の時間1.5hの時点で、電断発生3があったため、バッテリ充電率を50%+25%=75%と計算する;
(26−5)バッテリ充電率75%の状態で電断発生3があり、その結果、前述の(26−B)の処理によって、バッテリ充電率(残量)が25%であると計算する;
(26−6)バッテリ充電率が25%のときにストレージシステム101が起動し、前述の(26−A)の処理を行い、その結果、その起動からの経過時間が2hの時点で、電断発生4が生じたため、バッテリ充電率を25%+(50%×2/3)≒58%と計算する;
(26−7)バッテリ充電率58%のときに電断発生4があり、その結果、前述の(26−B)の処理によって、バッテリ充電率(残量)が8%であると計算する;
を行う。
【0110】
以上のように、ソフトウェア的にバッテリ監視処理が行われるので、ハードウェア的なバッテリ監視処理がサポートされていなくても、或いは、C−MP122に障害が発生しても、バッテリ充電率を把握することができる。
【0111】
(N−2)バッテリ充電率に応じた退避対象制御処理。
【0112】
バッテリ充電率に応じた退避対象制御処理は、把握されたバッテリ充電率に応じて、退避対象を制御する処理である。退避対象制御PG3717が、バッテリ充電率が把握される都度に、図37に示す、バッテリ充電率に応じた退避対象制御処理を行う。
【0113】
すなわち、退避対象制御PG3717は、把握されたバッテリ充電率(最新の監視充電率情報1301が表すバッテリ充電率)と、直前回に把握されたバッテリ充電率とを比較する充電率比較処理を行う。
【0114】
充電率比較処理の結果、把握されたバッテリ充電率が属するバッテリ充電率範囲が、直前回に把握されたバッテリ充電率が属するバッテリ充電率範囲と同じであれば(S3501:NO、S3054:NO)、S3502、S3503、S3505及びS3506の処理は実行されない。
【0115】
前述の充電率比較処理の結果、把握されたバッテリ充電率が、直前回に把握されたバッテリ充電率よりも低ければ、具体的には、把握されたバッテリ充電率が属するバッテリ充電率範囲が、直前回に把握されたバッテリ充電率が属するバッテリ充電率範囲よりも低い範囲であれば(S3501:NO、S3054:YES)、退避対象制御PG3717は、S3505で、下記の処理、
(3505−1)揮発性メモリ121におけるダーティデータの総量が、把握されたバッテリ充電率が属するバッテリ充電率範囲に対応するダーティ量(規定ダーティ量)を超えていれば、ダーティデータの総量が規定ダーティ量以下になるように、ダーティデータをHDD115に格納し(つまりダーティデータを減らし)、それに伴い、監視ダーティ量情報1401(図14参照)を更新する;
(3505−2)退避する制御情報要素の総量が、把握されたバッテリ充電率が属するバッテリ充電率範囲に対応する制御情報量(以下、規定情報量)を超えていれば、退避する制御情報要素の総量が規定情報量以下になるように、より多くの制御テーブル(具体的には、より多くの、退避要否“要”且つ重要度“低”に対応した制御テーブル)を非退避対象とし、非退避対象の制御テーブルに対応した退避時刻情報として、現在時刻を表す情報を、テーブル管理情報1001(図10参照)に設定する;
を実行する。これにより、後の回復処理では、回復された代表退避時刻情報1501が表す時刻と、非退避対象とされた制御情報テーブルに対応する退避時刻とが不一致となるため、回復された制御テーブルが、電断時に退避されなかった制御テーブルであると判断することが可能である。
【0116】
その後、退避対象制御PG3717は、S3506で、アドレス管理情報1710(図17参照)から、下記(3506−1)及び(3506−2)、
(3506−1)前述の(3505−1)でHDD115に格納されたダーティデータが存在していた領域(揮発性メモリ121における領域)のアドレス範囲を表すアドレスセット;
(3506−2)前述の(3505−2)で非退避対象とされた制御テーブルが存在する領域(揮発性メモリ121における領域)のアドレス範囲を表すアドレスセット;
を削除する。これにより、図36に示すように、電断時に退避される制御情報要素の総量が減ることになる。
【0117】
前述の充電率比較処理の結果、把握されたバッテリ充電率が、直前回に把握されたバッテリ充電率よりも高ければ、具体的には、把握されたバッテリ充電率が属するバッテリ充電率範囲が、直前回に把握されたバッテリ充電率が属するバッテリ充電率範囲よりも高い範囲であれば(S3501:YES)、退避対象制御PG3717は、S3502で、以下の処理を行う。すなわち、退避対象制御PG3717は、退避する制御情報要素の総量が、把握されたバッテリ充電率が属するバッテリ充電率範囲に対応する制御情報量(規定情報量)を超えない範囲で、より多くの制御テーブル(具体的には、より多くの、退避要否“要”且つ重要度“低”に対応した制御テーブル)を退避対象とし、退避対象の制御テーブルに対応した退避時刻情報として、代表退避時刻を表す情報をテーブル管理情報1001(図10参照)に設定する。これにより、後の回復処理では、回復された代表退避時刻情報1501が表す時刻と、退避対象とされた制御情報テーブルに対応する退避時刻とが一致するため、回復された制御テーブルが、電断時に退避された制御テーブルであると判断することが可能である。
【0118】
その後、退避対象制御PG3717は、S3503で、アドレス管理情報1710(図17参照)に、S3502で退避対象とされた制御テーブルが存在する領域(揮発性メモリ121における領域)のアドレス範囲を表すアドレスセットを追加する。これにより、図36に示すように、電断時に退避される制御情報要素の総量が増えることになる。
【0119】
バッテリ充電率に応じた退避対象制御処理では、退避対象としてのダーティデータの総量、並びに、退避対象としての制御情報要素の総量を、アドレス管理情報1710に設定されているアドレスセットから、特定することができる。従って、例えば、S3505では、どの重要度“低”の制御テーブルを退避対象から非退避対象に切替えることで、退避対象としての制御情報要素の総量を規定情報量以下にすることができるかを、把握することができる。
【0120】
以上の、バッテリ充電率に応じた退避対象制御処理によれば、バッテリ充電率に応じて退避対象の総量が制御される。このため、例えば図24に示すような、電断発生の繰り返しによってバッテリ残量が枯渇してしまうことを防止することができる。具体的には、例えば、図25に示すように、バッテリ充電率が低い場合には退避対象の総量も少なく制御されるので、退避処理が短い時間で済み、それ故、電断1回あたりに消費するバッテリ充電率も低く抑えられる。この結果、図24に示した例と異なり、図25に示すように、バッテリ残量が枯渇してしまうことを防止することができる。
【0121】
(N−3)リード処理/ライト処理(ダーティ量調整処理)。
【0122】
リード処理は、図5を参照して説明した処理であり、ライト処理は、図6を参照して説明した処理である。
【0123】
ライト処理では、一時的に、揮発性メモリ121にダーティデータが増えることになる。そこで、I/O制御PG3711が、図28に示すダーティ量調整処理を行う。
【0124】
すなわち、I/O制御PG3711は、ライトコマンドを受けたとき、監視充電率情報1301が表す充電率に対応したダーティ量(以下、図28の説明において、「上限ダーティ量」)をダーティ量管理情報1101から把握し、且つ、監視ダーティ量情報1401が表すダーティ量(以下、図28の説明において「現在のダーティ量」と言う)を把握する(S2801)。
【0125】
I/O制御PG3711は、ライト対象のデータの情報量と現在のダーティ量との和が上限ダーティ量を超えない場合には(S2802:YES)、図27に実線で示すように、通常ライトモードに従う処理を行う。具体的には、I/O制御PG3711は、ライト対象のデータを揮発性メモリ121に書き(S2803)、ホスト101へライト完了の応答を返す。この場合、ライト対象のデータが格納されているスロットに対応したスロット状態として、ダーティ量管理情報1101に、I/O制御PG3711によって、“ダーティ”が設定される。
【0126】
一方、I/O制御PG3711は、ライト対象のデータの情報量と現在のダーティ量との和が上限ダーティ量を超える場合には(S2802:NO)、図27に点線で示すように、ライトスルーモードに従う処理を行う。具体的には、I/O制御PG3711は、ライト対象のデータを揮発性メモリ121に一時記憶させそのライト対象のデータをHDD115に格納し(S2804)、その後で、ホスト101へライト完了の応答を返す。この場合、ライト対象のデータが格納されているスロットに対応したスロット状態として、ダーティ量管理情報1101に、I/O制御PG3711によって、“クリーン”が設定される。
【0127】
以上のダーティ量調整処理により、揮発性メモリ121におけるダーティデータの総量が、電断フェーズにおいて退避しきれない程の量になってしまうことを防ぐことができる。
【0128】
(N−4)制御テーブル退避処理。
【0129】
図30に示すように、退避対象制御PG3717が、定期的に、各制御テーブルに対応した更新カウント値をチェックする(S3001、S3002)。
【0130】
退避対象制御PG3717は、所定回数見ても変更の無い更新カウント値に対応した制御テーブルを、不揮発性メモリ121に格納し、その制御テーブルに対応した退避済み情報を、退避済みを表す“0”に更新し、その制御テーブルに対応したアドレスセットをアドレス管理情報1710から削除する(S3003)。
【0131】
以上の制御テーブル退避処理によれば、例えば図29に示すように、一定期間以内に更新のあった制御テーブル“C1”、つまり更新頻度の高い制御テーブル“C1”は、不揮発性メモリ123に退避されないが、一定期間経っても更新の無い制御テーブル、つまり更新頻度の低い制御テーブル“C2”が、計画停止フェーズ或いは電断フェーズでの退避処理の前に予め不揮発性メモリに格納され、非退避対象とされる(制御テーブル“C2”が存在する領域に対応したアドレスセットがアドレス管理情報1710から削除される)。これにより、計画停止フェーズ及び電断フェーズでの退避処理に要する時間を短く抑えることが期待できる。
【0132】
(N−5)更新管理処理。
【0133】
特定のイベントの発生により(例えば、論理ボリュームから別の論理ボリュームへデータがマイグレーションされた、或いは、ボリューム間ペアの状態が変更された等)、少なくとも一つの制御テーブルが更新されることがある。この場合、図32に示すように、制御情報管理PG3714は、更新された制御テーブル(以下、図32の説明において「対象制御テーブル」と言う)が、退避要否“要”に対応した制御テーブルであれば(S3201:YES)、S3202として、下記の処理(3202−1)乃至(3202−4)、
(3202−1)対象制御テーブルに対応した更新有無(テーブル管理情報1001における更新有無情報)を“有”に設定する;
(3202−2)対象制御テーブルに対応した更新カウント値を1インクリメントする;
(3202−3)対象制御テーブルに対応した退避済み情報を、非退避済みを表す“1”に更新する;
(3202−4)対象制御テーブルが記憶されている領域に対応したアドレスセットをアドレス管理情報1710に追加する;
を行う。
【0134】
以上の更新管理処理によれば、ストレージシステム103の起動後、複数の制御テーブルのうち、更新のあった制御テーブルのみが、退避対象とされる。具体的には、例えば、ストレージシステム103の起動後、アドレス管理情報1710には、所定の退避対象に対応したアドレスセットのみが含まれている。このため、例えば、図31に示すように、制御テーブル“C3”が、更新の無いまま計画停止フェーズ或いは電断フェーズに入った場合、計画停止フェーズ或いは電断フェーズでは、制御テーブル“C3”は非退避対象である。一方、更新のあった制御テーブル“C4”は、計画停止フェーズ或いは電断フェーズでは退避対象である。
【0135】
(N−6)事前リフレッシュ処理。
【0136】
前述したように、特定のイベントの発生により、少なくとも一つの制御テーブルが更新されることがある。この場合、図32に示すように、リフレッシュPG3715は、更新された制御テーブル(以下、図34の説明において「対象制御テーブル」と言う)が、退避要否“要”に対応した制御テーブルであれば(S3401:YES)、その制御テーブルが格納されている領域に対応した、不揮発性メモリ(フラッシュメモリ)123内の領域に、リフレッシュ処理、具体的には消去処理を施す。例えば、複数の物理ページで構成された物理ブロックを複数個備えるNAND型フラッシュメモリの場合には、物理ページ単位で書込みや読出しが行われるが、リフレッシュ処理(消去処理)は、物理ブロック単位で行われる。
【0137】
以上の事前リフレッシュ処理により、退避処理に要する時間を短く抑えることが期待できる。具体的には、下記の通りである。
【0138】
すなわち、フラッシュメモリの領域に情報を上書きするためには、その領域に一旦リフレッシュ処理を施す必要がある。しかし、退避処理の際にリフレッシュ処理を施すことは、退避処理に要する時間を長引かせる原因になる。
【0139】
そして、退避対象の一つは、図33に示すように、更新のあった制御テーブル“C6”である。
【0140】
そこで、本実施形態では、退避処理が行われる前に、予め、更新のあった制御テーブルに対応した、不揮発性メモリ123内の領域に、リフレッシュ処理が施される。このため、その更新のあった制御テーブルの退避の際にリフレッシュ処理を行う必要が無いので、退避処理に要する時間を短くすることが期待できる。
【0141】
なお、この事前リフレッシュ処理は、更新のあった制御テーブルに対応した領域だけでなく、更新が無くても退避されることになる制御情報要素の退避先領域に対して行われても良い。
【0142】
以上、本発明の好適な実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、アドレスセットに代えて、開始アドレス(又は終了アドレス)とデータサイズとのセットが採用されても良い。また、例えば、図38に示すように、退避対象制御PG3717が、定期的にテーブル管理情報1001をチェックし(S3801)、退避済み且つ更新無しに対応した制御テーブルが記憶されている領域に対応したアドレスセットを、アドレス管理情報1701から削除しても良い(S3802)。つまり、退避済み且つ更新無しに対応した制御テーブルが、計画停止フェーズ及び電断フェーズの前に予め非退避対象にされても良い。
【特許請求の範囲】
【請求項1】
外部装置(101)からI/O(Input/Output)コマンドを受信するストレージシステムであって、
複数の記憶装置(115)と、
揮発性メモリ(121)と、
不揮発性メモリ(123)と、
二次電源であるバッテリ(124)と、
前記I/Oコマンドがライトコマンドの場合、そのライトコマンドに従うデータを前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記複数の記憶装置の少なくとも一つに書込み、前記I/Oコマンドがリードコマンドの場合、そのリードコマンドに従うデータを前記複数の記憶装置の少なくとも一つから読み出して前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記外部装置に送信するI/O制御部(3711)と、
一次電源(117)から前記揮発性メモリへの給電が無くなった場合に、前記バッテリからの給電により、前記揮発性メモリに記憶されている複数の情報要素のうちの全ての退避対象としての情報要素を前記不揮発性メモリに退避する退避部(122)と、
前記バッテリの充電状況を定期的又は不定期的に把握するバッテリ監視部(3712、122)と、
前記把握された充電状況に応じて、前記揮発性メモリに記憶されているどの情報要素を前記退避対象とするかを制御する退避対象制御部(3717)と
を備えるストレージシステム。
【請求項2】
前記揮発性メモリに記憶される情報要素には、I/Oデータと制御情報要素とが含まれており、
前記I/Oデータは、前記揮発性メモリに記憶されている情報要素の一つであって、前記外部装置からのI/Oコマンドに応答して書き込まれる又は読み出されるデータであり、
前記I/Oデータは、前記複数の記憶装置のいずれかに既に書き込まれているタイプのI/Oデータであるクリーンデータと、前記複数の記憶装置のいずれにも未だ書込まれていないタイプのデータであるダーティデータとのいずれかであり、
前記制御情報要素としては、制御テーブル(901、902、903)と、テーブル管理情報(1001)と、ダーティ量管理情報(1101)と、制御量管理情報(1201)とがあり、
各制御テーブルは、所定種類のサブ情報要素を有しており、
前記テーブル管理情報は、制御テーブル毎に関するサブ情報要素として、下記(A)乃至(D)のサブ情報要素を有し、
(A)重要度情報:制御テーブルの重要度を表すサブ情報要素;
(B)更新有無情報:制御テーブルに更新があったか否かを表すサブ情報要素;
(C)退避済み情報:制御テーブルが退避済みか否かを表すサブ情報要素;
(D)テーブルサイズ情報:制御テーブルのサイズを表すサブ情報要素;
前記ダーティ量管理情報は、充電状況に応じたダーティ量を表しており、前記ダーティ量は、退避可能なダーティデータの総量であり、
前記制御量管理情報は、充電状況に応じた退避可能な制御量を表しており、前記制御量は、退避可能な制御情報の情報量を表しており、
前記バッテリ監視部は、マイクロプロセッサが所定のコンピュータプログラムを実行することにより、前記一次電源からの給電が開始されてからの経過時間と単位時間当りの充電状況とを基に充電状況を把握し、
前記退避対象制御部は、把握された充電状況が直前回に把握された充電状況よりも悪ければ、下記(2−1)及び(2−2)の処理を行い、
(2−1)把握された充電状況に対応するダーティ量を前記ダーティ量管理情報から把握し、前記揮発性メモリに記憶されているダーティデータの総量が前記把握されたダーティ量以下の量になるように、前記揮発性メモリに記憶されている一以上のダーティデータを前記複数の記憶装置に格納し、
(2−2)把握された充電状況に対応する制御量を前記制御量管理情報から把握し、退避対象としての制御情報要素の総量が前記把握された制御量以下の量になるように、前記テーブル管理情報における情報(A)及び(D)を基に、所定の重要度より低い重要度に対応した制御テーブルを、非退避対象とし、
前記退避対象制御部は、情報(B)及び(C)を基に、退避済み且つ更新無しの制御テーブルを、非退避対象とし、
前記退避対象は、少なくとも下記(a)乃至(c)であり、
(a)前記揮発性メモリに残っている全てのダーティデータ;
(b)非退避対象ではない制御テーブル;
(c)前記テーブル管理情報;
前記I/O制御部は、前記ライトコマンドを受けて、そのライトコマンドに従うライト対象のデータが前記揮発性メモリにダーティデータとして残ると前記揮発性メモリにおけるダーティデータの総量が前記把握された充電状況に対応するダーティ量を超えてしまう場合には、ライトスルーモードで動作し、一方、そのライト対象のデータが前記揮発性メモリにダーティデータとして残っても前記揮発性メモリにおけるダーティデータの総量が前記把握された充電状況に対応するダーティ量以下である場合には、通常ライトモードで動作し、
前記ライトスルーモードでは、前記I/O制御部は、前記ライト対象のデータを前記揮発性メモリに一時記憶させ、そのライト対象のデータを前記複数の記憶装置のいずれかに書込むことで、そのライト対象のデータをクリーンデータとし、その後で、前記ライトコマンドに対する応答を前記外部装置に送信し、
前記通常ライトモードでは、前記I/O制御部は、前記ライト対象のデータを前記揮発性メモリに一時記憶させ、そのライト対象のデータを前記複数の記憶装置のいずれかに書込むことなく、前記ライトコマンドに対する応答を前記外部装置に送信する、
請求項1記載のストレージシステム。
【請求項3】
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素(E)を有し、
(E)更新回数情報:制御テーブルが更新された回数を表す情報;
前記退避対象制御部は、
(3−1)一定時間経っても更新されない前記サブ情報要素(E)に対応した制御テーブルを前記不揮発性メモリに退避し、その制御テーブルに対応する前記サブ情報要素(B)を、更新無しを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素(C)を、退避済みを表す情報に更新し、
(3−2)前記(3−1)で退避した制御テーブルが更新された場合、その制御テーブルに対応する前記サブ情報要素(B)を、更新有りを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素(C)を、非退避済みを表す情報に更新する、
請求項2記載のストレージシステム。
【請求項4】
回復部(3716、122)を更に備え、
前記揮発性メモリは、代表退避値と、ダーティデータの退避値を表すI/O退避値とを記憶し、
前記代表退避値及び前記I/O退避値は、それぞれ、退避対象であり、
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素(F)、
(F)退避値:制御テーブルの退避値;
を有し、
前記退避部は、計画停止のときに、前記代表退避値を、特定の値を表す情報に更新し、前記揮発性メモリにおける退避対象を前記不揮発性メモリに退避し、
前記退避対象制御部は、
(4−1)把握された充電状況が直前回に把握された充電状況よりも良ければ、退避対象の制御テーブルに対応したサブ情報要素(F)を、前記代表退避値と同じ情報に更新し、
(4−2)把握された充電状況が直前回に把握された充電状況よりも悪ければ、非退避対象の制御テーブルに対応したサブ情報要素(F)を、前記代表退避値と異なる値に更新し、
前記回復部は、前記一次電源からの給電が停止した後に再び前記一次電源から給電があった場合に、前記不揮発性メモリに記憶されている情報を前記揮発性メモリに回復し、その際、回復された代表退避値と、回復されたI/O退避値が異なっている場合には、回復されたダーティデータを揮発したデータと扱い、且つ、回復された代表退避値と、回復されたテーブル管理情報内の前記サブ情報要素(F)が異なっている場合には、回復された代表退避値と異なっているサブ情報要素(F)に対応する制御テーブルを揮発したテーブルと扱う、
請求項3記載のストレージシステム。
【請求項5】
前記不揮発性メモリは、フラッシュメモリであり、
前記一次電源から電力が供給されている間において、制御情報における退避対象である制御退避対象が更新されたときに、前記制御退避対象の退避先領域にリフレッシュ処理を施すリフレッシュ処理部(3715)を更に備える、
請求項4記載のストレージシステム。
【請求項6】
前記退避対象制御部は、前記揮発性メモリに記憶されているダーティデータの総量が前記把握された充電状況に応じた退避可能な情報量以下の量になるように、前記揮発性メモリに記憶されている一以上のダーティデータを前記複数の記憶装置に格納し、
前記ダーティ量は、ダーティデータの総量であり、
前記ダーティデータは、前記複数の記憶装置のいずれにも未だ書込まれていないタイプのI/Oデータであり、
前記I/Oデータは、前記揮発性メモリに記憶されている情報要素の一つであって、前記外部装置からのI/Oコマンドに応答して書き込まれる又は読み出されるデータである、
請求項1記載のストレージシステム。
【請求項7】
前記退避対象制御部は、前記揮発性メモリにおける現時点の退避対象の総量が、前記把握された充電状況に応じた退避可能な情報量以下になるように、前記揮発性メモリにおける複数の情報要素のうち、所定の重要度より低い重要度の情報要素を非退避対象とする、
請求項1又は6記載のストレージシステム。
【請求項8】
前記退避対象制御部は、退避済み且つ更新の無い情報要素を非退避対象とする、
請求項1、6又は7に記載のストレージシステム。
【請求項9】
前記退避対象制御部は、特定の期間更新の無い情報要素を前記揮発性メモリから前記不揮発性メモリに退避しておく、
請求項8記載のストレージシステム。
【請求項10】
外部装置(101)からI/O(Input/Output)コマンドを受信するストレージシステムであって、
複数の記憶装置(115)と、
揮発性メモリ(121)と、
不揮発性メモリ(123)と、
前記I/Oコマンドがライトコマンドの場合、そのライトコマンドに従うデータを前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記複数の記憶装置の少なくとも一つに書込み、前記I/Oコマンドがリードコマンドの場合、そのリードコマンドに従うデータを前記複数の記憶装置の少なくとも一つから読み出して前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記外部装置に送信するI/O制御部(3711)と、
前記揮発性メモリに記憶されている複数の情報要素のうちの全ての退避対象としての情報要素を前記不揮発性メモリに退避する退避部(3713、122)と、
前記揮発性メモリに記憶されている複数の情報要素のうち特定の情報要素を、その特定の情報要素に関する状況に応じて、退避処理の際の非退避対象とする退避対象制御部(3713、3717)と
を備えるストレージシステム。
【請求項11】
二次電源であるバッテリ(124)と、
前記バッテリの充電状況を定期的又は不定期的に把握するバッテリ監視部(3712)と、
回復部(3716、122)と、
前記一次電源からの給電があって正常に稼動している間に退避対象の退避先領域にリフレッシュ処理を施すリフレッシュ処理部(3715)と
備え、
前記揮発性メモリに記憶される情報要素として、制御情報要素があり、
前記制御情報要素としては、制御テーブル(901、902、903)と、テーブル管理情報(1001)と、制御量管理情報(1201)とがあり、
各制御テーブルは、所定種類の情報を有しており、
前記テーブル管理情報は、制御テーブル毎に関する情報として、下記(A)乃至(D)のサブ情報要素を有し、
(A)重要度情報:制御テーブルの重要度を表すサブ情報要素;
(B)更新有無情報:制御テーブルに更新があったか否かを表すサブ情報要素;
(C)退避済み情報:制御テーブルが退避済みか否かを表すサブ情報要素;
(D)テーブルサイズ情報:制御テーブルのサイズを表すサブ情報要素;
前記制御量管理情報は、充電状況に応じた退避可能な制御量を表しており、前記制御量は、退避可能な制御情報の情報量を表しており、
前記バッテリ監視部は、マイクロプロセッサが所定のコンピュータプログラムを実行することにより、前記一次電源からの給電が開始されてからの経過時間と単位時間当りの充電状況とを基に充電状況を把握し、
前記退避対象制御部は、
(12−1)前記把握された充電状況が直前回に把握された充電状況よりも悪ければ、充電状況に対応する制御量を前記制御量管理情報から把握し、前記制御情報における退避対象の量が前記把握された制御量以下の量になるように、前記テーブル管理情報におけるサブ情報要素(A)及び(D)を基に、所定の重要度より低い重要度に対応した制御テーブルを、非退避対象とし、
前記退避対象制御部は、サブ情報要素(B)及び(C)を基に、退避済み且つ更新無しの制御テーブルを、非退避対象とし、
前記退避対象は、少なくとも下記(a)乃至(c)であり、
(a)前記揮発性メモリに残っている全てのダーティデータ;
(b)非退避対象ではない制御テーブル;
(c)前記テーブル管理情報;
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素(E)を有し、
(E)更新回数情報:制御テーブルが更新された回数を表す情報;
前記退避対象制御部は、
(13−1)一定時間経っても更新されない前記サブ情報要素(E)に対応した制御テーブルを前記不揮発性メモリに退避し、その制御テーブルに対応する前記サブ情報要素(B)を、更新無しを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素(C)を、退避済みを表す情報に更新し、
(13−2)前記(13−1)で退避した制御テーブルが更新された場合、その制御テーブルに対応する前記サブ情報要素(B)を、更新有りを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素(C)を、非退避済みを表す情報に更新し、
前記不揮発性メモリは、フラッシュメモリであり、
前記リフレッシュ処理部は、制御情報要素が更新された場合に、その制御情報要素の退避先にリフレッシュ処理を施し、
前記揮発性メモリは、代表退避値と、ダーティデータの退避値を表すI/O退避値とを記憶し、
前記代表退避値及び前記I/O退避値は、それぞれ、退避対象であり、
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素(F)、
(F)退避値:制御テーブルの退避値;
を有し、
前記退避部は、計画停止のときに、前記代表退避値を、特定の値に更新し、前記揮発性メモリにおける全ての退避対象を前記不揮発性メモリに退避し、
前記退避対象制御部は、
(14−1)把握された充電状況が直前回に把握された充電状況よりも良ければ、退避対象の制御テーブルに対応したサブ情報要素(F)を、前記代表退避値と同じ値に更新し、
(14−2)把握された充電状況が直前回に把握された充電状況よりも悪ければ、非退避対象の制御テーブルに対応したサブ情報要素(F)を、前記代表退避値と異なる値に更新し、
前記回復部は、前記一次電源からの給電が停止した後に再び前記一次電源から給電があった場合に、前記不揮発性メモリに記憶されている情報を前記揮発性メモリに回復し、その際、回復された代表退避値と、回復されたI/O退避値が異なっている場合には、回復されたダーティデータを揮発したデータと扱い、且つ、回復された代表退避値と、回復されたテーブル管理情報内の前記サブ情報要素(F)が異なっている場合には、回復された代表退避値と異なっているサブ情報要素(F)に対応する制御テーブルを揮発したテーブルと扱う、
請求項10記載のストレージシステム。
【請求項12】
前記退避対象制御部は、前記揮発性メモリにおける現時点の退避対象の総量が、前記把握された充電状況に応じた退避可能な情報量以下になるように、前記揮発性メモリにおける複数の情報要素のうち、所定の重要度より低い重要度の情報要素を非退避対象とする、
請求項10記載のストレージシステム。
【請求項13】
前記退避対象制御部は、退避済み且つ更新の無い情報要素を非退避対象とする、
請求項10又は12記載のストレージシステム。
【請求項14】
前記退避対象制御部は、特定の期間更新の無い情報要素を前記揮発性メモリから前記不揮発性メモリに退避しておく、
請求項13記載のストレージシステム。
【請求項15】
前記不揮発性メモリは、フラッシュメモリであり、
前記一次電源から電力が供給されている間に退避対象の退避先領域にリフレッシュ処理を施しておくリフレッシュ処理部(3715)を更に備える、
請求項10、12乃至14のいずれかに記載のストレージシステム。
【請求項1】
外部装置(101)からI/O(Input/Output)コマンドを受信するストレージシステムであって、
複数の記憶装置(115)と、
揮発性メモリ(121)と、
不揮発性メモリ(123)と、
二次電源であるバッテリ(124)と、
前記I/Oコマンドがライトコマンドの場合、そのライトコマンドに従うデータを前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記複数の記憶装置の少なくとも一つに書込み、前記I/Oコマンドがリードコマンドの場合、そのリードコマンドに従うデータを前記複数の記憶装置の少なくとも一つから読み出して前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記外部装置に送信するI/O制御部(3711)と、
一次電源(117)から前記揮発性メモリへの給電が無くなった場合に、前記バッテリからの給電により、前記揮発性メモリに記憶されている複数の情報要素のうちの全ての退避対象としての情報要素を前記不揮発性メモリに退避する退避部(122)と、
前記バッテリの充電状況を定期的又は不定期的に把握するバッテリ監視部(3712、122)と、
前記把握された充電状況に応じて、前記揮発性メモリに記憶されているどの情報要素を前記退避対象とするかを制御する退避対象制御部(3717)と
を備えるストレージシステム。
【請求項2】
前記揮発性メモリに記憶される情報要素には、I/Oデータと制御情報要素とが含まれており、
前記I/Oデータは、前記揮発性メモリに記憶されている情報要素の一つであって、前記外部装置からのI/Oコマンドに応答して書き込まれる又は読み出されるデータであり、
前記I/Oデータは、前記複数の記憶装置のいずれかに既に書き込まれているタイプのI/Oデータであるクリーンデータと、前記複数の記憶装置のいずれにも未だ書込まれていないタイプのデータであるダーティデータとのいずれかであり、
前記制御情報要素としては、制御テーブル(901、902、903)と、テーブル管理情報(1001)と、ダーティ量管理情報(1101)と、制御量管理情報(1201)とがあり、
各制御テーブルは、所定種類のサブ情報要素を有しており、
前記テーブル管理情報は、制御テーブル毎に関するサブ情報要素として、下記(A)乃至(D)のサブ情報要素を有し、
(A)重要度情報:制御テーブルの重要度を表すサブ情報要素;
(B)更新有無情報:制御テーブルに更新があったか否かを表すサブ情報要素;
(C)退避済み情報:制御テーブルが退避済みか否かを表すサブ情報要素;
(D)テーブルサイズ情報:制御テーブルのサイズを表すサブ情報要素;
前記ダーティ量管理情報は、充電状況に応じたダーティ量を表しており、前記ダーティ量は、退避可能なダーティデータの総量であり、
前記制御量管理情報は、充電状況に応じた退避可能な制御量を表しており、前記制御量は、退避可能な制御情報の情報量を表しており、
前記バッテリ監視部は、マイクロプロセッサが所定のコンピュータプログラムを実行することにより、前記一次電源からの給電が開始されてからの経過時間と単位時間当りの充電状況とを基に充電状況を把握し、
前記退避対象制御部は、把握された充電状況が直前回に把握された充電状況よりも悪ければ、下記(2−1)及び(2−2)の処理を行い、
(2−1)把握された充電状況に対応するダーティ量を前記ダーティ量管理情報から把握し、前記揮発性メモリに記憶されているダーティデータの総量が前記把握されたダーティ量以下の量になるように、前記揮発性メモリに記憶されている一以上のダーティデータを前記複数の記憶装置に格納し、
(2−2)把握された充電状況に対応する制御量を前記制御量管理情報から把握し、退避対象としての制御情報要素の総量が前記把握された制御量以下の量になるように、前記テーブル管理情報における情報(A)及び(D)を基に、所定の重要度より低い重要度に対応した制御テーブルを、非退避対象とし、
前記退避対象制御部は、情報(B)及び(C)を基に、退避済み且つ更新無しの制御テーブルを、非退避対象とし、
前記退避対象は、少なくとも下記(a)乃至(c)であり、
(a)前記揮発性メモリに残っている全てのダーティデータ;
(b)非退避対象ではない制御テーブル;
(c)前記テーブル管理情報;
前記I/O制御部は、前記ライトコマンドを受けて、そのライトコマンドに従うライト対象のデータが前記揮発性メモリにダーティデータとして残ると前記揮発性メモリにおけるダーティデータの総量が前記把握された充電状況に対応するダーティ量を超えてしまう場合には、ライトスルーモードで動作し、一方、そのライト対象のデータが前記揮発性メモリにダーティデータとして残っても前記揮発性メモリにおけるダーティデータの総量が前記把握された充電状況に対応するダーティ量以下である場合には、通常ライトモードで動作し、
前記ライトスルーモードでは、前記I/O制御部は、前記ライト対象のデータを前記揮発性メモリに一時記憶させ、そのライト対象のデータを前記複数の記憶装置のいずれかに書込むことで、そのライト対象のデータをクリーンデータとし、その後で、前記ライトコマンドに対する応答を前記外部装置に送信し、
前記通常ライトモードでは、前記I/O制御部は、前記ライト対象のデータを前記揮発性メモリに一時記憶させ、そのライト対象のデータを前記複数の記憶装置のいずれかに書込むことなく、前記ライトコマンドに対する応答を前記外部装置に送信する、
請求項1記載のストレージシステム。
【請求項3】
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素(E)を有し、
(E)更新回数情報:制御テーブルが更新された回数を表す情報;
前記退避対象制御部は、
(3−1)一定時間経っても更新されない前記サブ情報要素(E)に対応した制御テーブルを前記不揮発性メモリに退避し、その制御テーブルに対応する前記サブ情報要素(B)を、更新無しを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素(C)を、退避済みを表す情報に更新し、
(3−2)前記(3−1)で退避した制御テーブルが更新された場合、その制御テーブルに対応する前記サブ情報要素(B)を、更新有りを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素(C)を、非退避済みを表す情報に更新する、
請求項2記載のストレージシステム。
【請求項4】
回復部(3716、122)を更に備え、
前記揮発性メモリは、代表退避値と、ダーティデータの退避値を表すI/O退避値とを記憶し、
前記代表退避値及び前記I/O退避値は、それぞれ、退避対象であり、
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素(F)、
(F)退避値:制御テーブルの退避値;
を有し、
前記退避部は、計画停止のときに、前記代表退避値を、特定の値を表す情報に更新し、前記揮発性メモリにおける退避対象を前記不揮発性メモリに退避し、
前記退避対象制御部は、
(4−1)把握された充電状況が直前回に把握された充電状況よりも良ければ、退避対象の制御テーブルに対応したサブ情報要素(F)を、前記代表退避値と同じ情報に更新し、
(4−2)把握された充電状況が直前回に把握された充電状況よりも悪ければ、非退避対象の制御テーブルに対応したサブ情報要素(F)を、前記代表退避値と異なる値に更新し、
前記回復部は、前記一次電源からの給電が停止した後に再び前記一次電源から給電があった場合に、前記不揮発性メモリに記憶されている情報を前記揮発性メモリに回復し、その際、回復された代表退避値と、回復されたI/O退避値が異なっている場合には、回復されたダーティデータを揮発したデータと扱い、且つ、回復された代表退避値と、回復されたテーブル管理情報内の前記サブ情報要素(F)が異なっている場合には、回復された代表退避値と異なっているサブ情報要素(F)に対応する制御テーブルを揮発したテーブルと扱う、
請求項3記載のストレージシステム。
【請求項5】
前記不揮発性メモリは、フラッシュメモリであり、
前記一次電源から電力が供給されている間において、制御情報における退避対象である制御退避対象が更新されたときに、前記制御退避対象の退避先領域にリフレッシュ処理を施すリフレッシュ処理部(3715)を更に備える、
請求項4記載のストレージシステム。
【請求項6】
前記退避対象制御部は、前記揮発性メモリに記憶されているダーティデータの総量が前記把握された充電状況に応じた退避可能な情報量以下の量になるように、前記揮発性メモリに記憶されている一以上のダーティデータを前記複数の記憶装置に格納し、
前記ダーティ量は、ダーティデータの総量であり、
前記ダーティデータは、前記複数の記憶装置のいずれにも未だ書込まれていないタイプのI/Oデータであり、
前記I/Oデータは、前記揮発性メモリに記憶されている情報要素の一つであって、前記外部装置からのI/Oコマンドに応答して書き込まれる又は読み出されるデータである、
請求項1記載のストレージシステム。
【請求項7】
前記退避対象制御部は、前記揮発性メモリにおける現時点の退避対象の総量が、前記把握された充電状況に応じた退避可能な情報量以下になるように、前記揮発性メモリにおける複数の情報要素のうち、所定の重要度より低い重要度の情報要素を非退避対象とする、
請求項1又は6記載のストレージシステム。
【請求項8】
前記退避対象制御部は、退避済み且つ更新の無い情報要素を非退避対象とする、
請求項1、6又は7に記載のストレージシステム。
【請求項9】
前記退避対象制御部は、特定の期間更新の無い情報要素を前記揮発性メモリから前記不揮発性メモリに退避しておく、
請求項8記載のストレージシステム。
【請求項10】
外部装置(101)からI/O(Input/Output)コマンドを受信するストレージシステムであって、
複数の記憶装置(115)と、
揮発性メモリ(121)と、
不揮発性メモリ(123)と、
前記I/Oコマンドがライトコマンドの場合、そのライトコマンドに従うデータを前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記複数の記憶装置の少なくとも一つに書込み、前記I/Oコマンドがリードコマンドの場合、そのリードコマンドに従うデータを前記複数の記憶装置の少なくとも一つから読み出して前記揮発性メモリに一時記憶させ、そのデータを前記揮発性メモリから読み出して前記外部装置に送信するI/O制御部(3711)と、
前記揮発性メモリに記憶されている複数の情報要素のうちの全ての退避対象としての情報要素を前記不揮発性メモリに退避する退避部(3713、122)と、
前記揮発性メモリに記憶されている複数の情報要素のうち特定の情報要素を、その特定の情報要素に関する状況に応じて、退避処理の際の非退避対象とする退避対象制御部(3713、3717)と
を備えるストレージシステム。
【請求項11】
二次電源であるバッテリ(124)と、
前記バッテリの充電状況を定期的又は不定期的に把握するバッテリ監視部(3712)と、
回復部(3716、122)と、
前記一次電源からの給電があって正常に稼動している間に退避対象の退避先領域にリフレッシュ処理を施すリフレッシュ処理部(3715)と
備え、
前記揮発性メモリに記憶される情報要素として、制御情報要素があり、
前記制御情報要素としては、制御テーブル(901、902、903)と、テーブル管理情報(1001)と、制御量管理情報(1201)とがあり、
各制御テーブルは、所定種類の情報を有しており、
前記テーブル管理情報は、制御テーブル毎に関する情報として、下記(A)乃至(D)のサブ情報要素を有し、
(A)重要度情報:制御テーブルの重要度を表すサブ情報要素;
(B)更新有無情報:制御テーブルに更新があったか否かを表すサブ情報要素;
(C)退避済み情報:制御テーブルが退避済みか否かを表すサブ情報要素;
(D)テーブルサイズ情報:制御テーブルのサイズを表すサブ情報要素;
前記制御量管理情報は、充電状況に応じた退避可能な制御量を表しており、前記制御量は、退避可能な制御情報の情報量を表しており、
前記バッテリ監視部は、マイクロプロセッサが所定のコンピュータプログラムを実行することにより、前記一次電源からの給電が開始されてからの経過時間と単位時間当りの充電状況とを基に充電状況を把握し、
前記退避対象制御部は、
(12−1)前記把握された充電状況が直前回に把握された充電状況よりも悪ければ、充電状況に対応する制御量を前記制御量管理情報から把握し、前記制御情報における退避対象の量が前記把握された制御量以下の量になるように、前記テーブル管理情報におけるサブ情報要素(A)及び(D)を基に、所定の重要度より低い重要度に対応した制御テーブルを、非退避対象とし、
前記退避対象制御部は、サブ情報要素(B)及び(C)を基に、退避済み且つ更新無しの制御テーブルを、非退避対象とし、
前記退避対象は、少なくとも下記(a)乃至(c)であり、
(a)前記揮発性メモリに残っている全てのダーティデータ;
(b)非退避対象ではない制御テーブル;
(c)前記テーブル管理情報;
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素(E)を有し、
(E)更新回数情報:制御テーブルが更新された回数を表す情報;
前記退避対象制御部は、
(13−1)一定時間経っても更新されない前記サブ情報要素(E)に対応した制御テーブルを前記不揮発性メモリに退避し、その制御テーブルに対応する前記サブ情報要素(B)を、更新無しを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素(C)を、退避済みを表す情報に更新し、
(13−2)前記(13−1)で退避した制御テーブルが更新された場合、その制御テーブルに対応する前記サブ情報要素(B)を、更新有りを表す情報に更新し、その制御テーブルに対応する前記サブ情報要素(C)を、非退避済みを表す情報に更新し、
前記不揮発性メモリは、フラッシュメモリであり、
前記リフレッシュ処理部は、制御情報要素が更新された場合に、その制御情報要素の退避先にリフレッシュ処理を施し、
前記揮発性メモリは、代表退避値と、ダーティデータの退避値を表すI/O退避値とを記憶し、
前記代表退避値及び前記I/O退避値は、それぞれ、退避対象であり、
前記テーブル管理情報は、制御テーブル毎に、更に、下記サブ情報要素(F)、
(F)退避値:制御テーブルの退避値;
を有し、
前記退避部は、計画停止のときに、前記代表退避値を、特定の値に更新し、前記揮発性メモリにおける全ての退避対象を前記不揮発性メモリに退避し、
前記退避対象制御部は、
(14−1)把握された充電状況が直前回に把握された充電状況よりも良ければ、退避対象の制御テーブルに対応したサブ情報要素(F)を、前記代表退避値と同じ値に更新し、
(14−2)把握された充電状況が直前回に把握された充電状況よりも悪ければ、非退避対象の制御テーブルに対応したサブ情報要素(F)を、前記代表退避値と異なる値に更新し、
前記回復部は、前記一次電源からの給電が停止した後に再び前記一次電源から給電があった場合に、前記不揮発性メモリに記憶されている情報を前記揮発性メモリに回復し、その際、回復された代表退避値と、回復されたI/O退避値が異なっている場合には、回復されたダーティデータを揮発したデータと扱い、且つ、回復された代表退避値と、回復されたテーブル管理情報内の前記サブ情報要素(F)が異なっている場合には、回復された代表退避値と異なっているサブ情報要素(F)に対応する制御テーブルを揮発したテーブルと扱う、
請求項10記載のストレージシステム。
【請求項12】
前記退避対象制御部は、前記揮発性メモリにおける現時点の退避対象の総量が、前記把握された充電状況に応じた退避可能な情報量以下になるように、前記揮発性メモリにおける複数の情報要素のうち、所定の重要度より低い重要度の情報要素を非退避対象とする、
請求項10記載のストレージシステム。
【請求項13】
前記退避対象制御部は、退避済み且つ更新の無い情報要素を非退避対象とする、
請求項10又は12記載のストレージシステム。
【請求項14】
前記退避対象制御部は、特定の期間更新の無い情報要素を前記揮発性メモリから前記不揮発性メモリに退避しておく、
請求項13記載のストレージシステム。
【請求項15】
前記不揮発性メモリは、フラッシュメモリであり、
前記一次電源から電力が供給されている間に退避対象の退避先領域にリフレッシュ処理を施しておくリフレッシュ処理部(3715)を更に備える、
請求項10、12乃至14のいずれかに記載のストレージシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【公表番号】特表2011−524555(P2011−524555A)
【公表日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−549758(P2010−549758)
【出願日】平成20年12月4日(2008.12.4)
【国際出願番号】PCT/JP2008/003604
【国際公開番号】WO2010/064280
【国際公開日】平成22年6月10日(2010.6.10)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公表日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願日】平成20年12月4日(2008.12.4)
【国際出願番号】PCT/JP2008/003604
【国際公開番号】WO2010/064280
【国際公開日】平成22年6月10日(2010.6.10)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]