(57)【要約】【課題】故障発生状況に応じたバッテリ持続時間内で重要性の高いデータをバックアップする。【解決手段】バッテリ１３は、電源の停電時に揮発性記憶装置１１から不揮発性記憶装置１２へデータを格納するための電力を供給する。制御部１４は、停電時に、揮発性記憶装置１１に記憶されたデータ群ＤＧ１〜ＤＧ３を優先度が高い順に不揮発性記憶装置１２に格納するバックアップ処理を実行する。このバックアップ処理では、制御部１４は、データ群ＤＧ１〜ＤＧ３のそれぞれについて不揮発性記憶装置１２への格納が完了するたびに、バッテリ１３から供給される供給電圧に基づいてバッテリ１３からの電圧供給に関する故障状態を判定し、故障状態に基づいて、データ群ＤＧ１〜ＤＧ３のうち次に優先度が高いデータ群を不揮発性記憶装置１２へ格納するか否かを決定する。【選択図】図１
2020030580.tif 000002
【特許請求の範囲】
【請求項１】
揮発性記憶装置と、
不揮発性記憶装置と、
電源の停電時に前記揮発性記憶装置から前記不揮発性記憶装置へデータを格納するための電力を供給するバッテリと、
前記停電時に、前記揮発性記憶装置に記憶された、あらかじめ優先度が設定された複数種類のデータ群を、前記優先度が高い順に前記不揮発性記憶装置に格納するバックアップ処理を実行する制御部と、
を有し、
前記制御部は、前記バックアップ処理において、前記複数種類のデータ群のそれぞれについて前記不揮発性記憶装置への格納が完了するたびに、前記バッテリから供給される供給電圧に基づいて前記バッテリからの電圧供給に関する故障状態を判定し、前記故障状態に基づいて、前記複数種類のデータ群のうち次に前記優先度が高いデータ群を前記不揮発性記憶装置へ格納するか否かを決定する、
情報処理装置。
【請求項２】
前記情報処理装置は、前記停電時に前記バッテリからの電力を前記情報処理装置の内部に出力するように制御されるスイッチ回路をさらに有し、
前記供給電圧は、前記スイッチ回路の出力電圧であり、
前記制御部は、前記供給電圧を所定の電圧閾値と比較することで、前記故障状態として前記スイッチ回路の状態を判定する、
請求項１記載の情報処理装置。
【請求項３】
前記電圧閾値は、前記スイッチ回路が正常な状態と故障した状態のそれぞれにおいて、前記バッテリから前記スイッチ回路を介して出力される電圧の差分に基づく値である、
請求項２記載の情報処理装置。
【請求項４】
前記情報処理装置は、前記バッテリから前記情報処理装置の内部へ電力を供給するための並列な第１の電力経路と第２の電力経路とを有し、前記スイッチ回路として、前記第１の電力経路上に設けられる第１のスイッチ回路と、前記第２の電力経路上に設けられる第２のスイッチ回路とを有し、
前記電圧閾値として、前記第１のスイッチ回路と前記第２のスイッチ回路の両方が正常な正常状態と前記第１のスイッチ回路および前記第２のスイッチ回路の両方が故障した状態のそれぞれにおいて、前記バッテリから前記スイッチ回路を介して出力される電圧の差分に基づく第１の閾値と、前記バッテリから前記スイッチ回路を介して出力される電圧が前記正常状態より低下したことを判定するための第２の閾値とが用いられ、
前記制御部は、
前記複数種類のデータ群のうち第１のデータ群について前記不揮発性記憶装置への格納が完了したとき、前記供給電圧が前記第１の閾値より高い場合には、前記複数種類のデータ群のうち前記第１のデータ群の次に前記優先度が高い第２のデータ群を前記不揮発性記憶装置へ格納し、
前記第２のデータ群の格納が完了したとき、前記供給電圧が前記第２の閾値より高い場合には、前記複数種類のデータ群のうち前記第２のデータ群の次に前記優先度が高い第３のデータ群を前記不揮発性記憶装置へ格納する、
請求項２記載の情報処理装置。
【請求項５】
前記揮発性記憶装置には、前記複数種類のデータ群の１つとして、前記情報処理装置が所定の処理を実行する際に使用される第１のデータ群が記憶され、他の１つとして、他の情報処理装置で記憶されたデータのバックアップデータである第２のデータ群が記憶され、
前記第１のデータ群は、前記第２のデータ群より高い前記優先度が設定される、
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項６】
前記揮発性記憶装置には、前記バックアップ処理により、前記複数種類のデータ群のそれぞれについて前記不揮発性記憶装置への格納が完了したか否かが記録された管理情報が記憶され、
前記制御部は、さらに、
前記第１のデータ群を前記他の情報処理装置にミラーリングし、
前記電源からの電源供給が復旧して前記情報処理装置が起動したとき、前記管理情報に基づいて、前記第１のデータ群および前記第２のデータ群のそれぞれを、前記不揮発性記憶装置と前記他の情報処理装置のどちらから読み出して前記揮発性記憶装置にリストアするかを判定する、
請求項５記載の情報処理装置。
【請求項７】
前記所定の処理は、前記揮発性記憶装置をキャッシュとして用いながら記憶装置に対するアクセスを制御するアクセス制御処理であり、
前記第１のデータ群は、前記キャッシュのデータのうち前記記憶装置にライトバックされていないダーティデータであり、
前記バッテリには、前記電源からの電力供給が復旧すると、前記電源からの電力による充電が開始され、
前記制御部は、前記電源からの電源供給が復旧して前記情報処理装置が起動し、前記第１のデータを前記揮発性記憶装置にリストアした後、前記バッテリの残量が所定量未満である間、ライトスルー方式で前記アクセス制御処理を実行し、前記バッテリの残量が前記所定量以上になると、前記アクセス制御処理の処理方式をライトスルー方式からライトバック方式に切り替える、
請求項５または６記載の情報処理装置。
【請求項８】
揮発性記憶装置と、不揮発性記憶装置と、電源の停電時に前記揮発性記憶装置から前記不揮発性記憶装置へデータを格納するための電力を供給するバッテリとを有するコンピュータが、
前記停電時に、前記揮発性記憶装置に記憶された、あらかじめ優先度が設定された複数種類のデータ群を、前記優先度が高い順に前記不揮発性記憶装置に格納するバックアップ処理を実行し、
前記バックアップ処理では、前記複数種類のデータ群のそれぞれについて前記不揮発性記憶装置への格納が完了するたびに、前記バッテリから供給される供給電圧に基づいて前記バッテリからの電圧供給に関する故障状態を判定し、前記故障状態に基づいて、前記複数種類のデータ群のうち次に前記優先度が高いデータ群を前記不揮発性記憶装置へ格納するか否かを決定する、
データ管理方法。
【請求項９】
揮発性記憶装置と、不揮発性記憶装置と、電源の停電時に前記揮発性記憶装置から前記不揮発性記憶装置へデータを格納するための電力を供給するバッテリとを有するコンピュータに、
前記停電時に、前記揮発性記憶装置に記憶された、あらかじめ優先度が設定された複数種類のデータ群を、前記優先度が高い順に前記不揮発性記憶装置に格納するバックアップ処理を実行させ、
前記バックアップ処理では、前記複数種類のデータ群のそれぞれについて前記不揮発性記憶装置への格納が完了するたびに、前記バッテリから供給される供給電圧に基づいて前記バッテリからの電圧供給に関する故障状態を判定し、前記故障状態に基づいて、前記複数種類のデータ群のうち次に前記優先度が高いデータ群を前記不揮発性記憶装置へ格納するか否かを決定する、
データ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、データ管理方法およびデータ管理プログラムに関する。
【背景技術】
【０００２】
揮発性記憶装置に記憶されているデータは、停電が発生すると失われてしまうことから、停電が発生すると、バッテリの電力を利用して揮発性記憶装置のデータを不揮発性メモリにバックアップすることが行われている。
【０００３】
このような技術の例として、バッテリの充電状況に応じて、揮発性メモリに記憶されているどの情報要素を、電断発生時の配置対象とするかが制御されるストレージシステムが提案されている。また、停電時においてバッテリユニットの残電力量がデータ退避処理の実行に必要な退避電力量以下となった時点で、キャッシュメモリ上のライトデータ属性のデータのみのデータ退避処理を開始するディスク制御装置が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１０／０６４２８０号
【特許文献２】特開平９−３３０２７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、上記のようなデータバックアップ用のバッテリからの電圧経路上の回路で故障が発生すると、その故障によってバッテリの消費電力が高まり、バッテリの持続時間が短くなってしまう場合がある。このような故障が予期せずに発生した場合、バックアップ処理が中断して、重要なデータのバックアップが完了せずにそのデータが失われてしまう。
【０００６】
１つの側面では、本発明は、故障発生状況に応じたバッテリ持続時間内で重要性の高いデータをバックアップできるようにした情報処理装置、データ管理方法およびデータ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの案では、揮発性記憶装置と、不揮発性記憶装置と、電源の停電時に揮発性記憶装置から不揮発性記憶装置へデータを格納するための電力を供給するバッテリと、停電時に、揮発性記憶装置に記憶された、あらかじめ優先度が設定された複数種類のデータ群を、優先度が高い順に不揮発性記憶装置に格納するバックアップ処理を実行する制御部と、を有する情報処理装置が提供される。また、この情報処理装置において、制御部は、バックアップ処理において、複数種類のデータ群のそれぞれについて不揮発性記憶装置への格納が完了するたびに、バッテリから供給される供給電圧に基づいてバッテリからの電圧供給に関する故障状態を判定し、故障状態に基づいて、複数種類のデータ群のうち次に優先度が高いデータ群を不揮発性記憶装置へ格納するか否かを決定する。
【０００８】
また、１つの案では、上記の情報処理装置の制御部と同様の処理がコンピュータによって実行されるデータ管理方法が提供される。
さらに、１つの案では、上記の情報処理装置の制御部と同様の処理をコンピュータに実行させるデータ管理プログラムが提供される。
【発明の効果】
【０００９】
１つの側面では、故障発生状況に応じたバッテリ持続時間内で重要性の高いデータをバックアップできる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ＣＭのハードウェア構成例を示す図である。
【図４】ＣＭ間でのキャッシュのミラーリングについて説明するための図である。
【図５】停電時のバックアップ処理について説明するための図である。
【図６】電源制御回路の内部構成例を示す図である。
【図７】バッテリ電圧の推移例を示す図である。
【図８】ＣＭが備える処理機能の構成例を示すブロック図である。
【図９】キャッシュ管理テーブルの構成例を示す図である。
【図１０】データの優先度について説明するための図である。
【図１１】バックアップ管理テーブルの構成例を示す図である。
【図１２】優先度にしたがったバックアップ処理の例を示す図である。
【図１３】停電時におけるＣＭの処理手順を示すフローチャートの例である。
【図１４】復電時におけるＣＭの処理手順を示すフローチャートの例（その１）である。
【図１５】復電時におけるＣＭの処理手順を示すフローチャートの例（その２）である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。情報処理装置１０は、揮発性記憶装置１１、不揮発性記憶装置１２、バッテリ１３および制御部１４を有する。
【００１２】
揮発性記憶装置１１には、あらかじめ優先度が設定された複数のデータ群が記憶されている。図１の例では、最も優先度が高い「優先度１」が設定されたデータ群ＤＧ１と、次に優先度が高い「優先度２」が設定されたデータ群ＤＧ２と、最も優先度が低い「優先度３」が設定されたデータ群ＤＧ３が記憶されているものとする。
【００１３】
ここで、重要性の高いデータ群ほど、高い優先度が設定される。例えば、他の情報処理装置のバックアップデータより、情報処理装置１０が自ら使用するデータの方が、高い優先度が設定される。
【００１４】
不揮発性記憶装置１２には、電源の停電時において、揮発性記憶装置１１に記憶されたデータ群ＤＧ１〜ＤＧ３がバックアップされる。
バッテリ１３は、停電時において、揮発性記憶装置１１に記憶されたデータ群ＤＧ１〜ＤＧ３を不揮発性記憶装置１２に格納するための電力を供給する。なお、このようなデータの格納は制御部１４の制御により実行されるので、停電時におけるバッテリ１３からの電力は、揮発性記憶装置１１、不揮発性記憶装置１２および制御部１４に供給される。
【００１５】
制御部１４は、例えば、プロセッサとして実現される。制御部１４は、停電時において、揮発性記憶装置１１に記憶されたデータ群ＤＧ１〜ＤＧ３を、優先度が高い順に不揮発性記憶装置１２に格納するバックアップ処理を実行する。また、制御部１４は、このバックアップ処理において、１つのデータ群を不揮発性記憶装置１２へ格納する処理が完了するたびに、バッテリ１３から供給される供給電圧に基づいて、バッテリ１３からの電圧供給に関する故障状態を判定する。そして、制御部１４は、判定された故障状態に基づいて、次に優先度が高いデータ群を不揮発性記憶装置１２へ格納するか否かを決定する。
【００１６】
例えば、制御部１４は、まず、最も優先度の高いデータ群ＤＧ１を不揮発性記憶装置１２に格納する（ステップＳ１）。格納が完了すると、制御部１４は、バッテリ１３からの供給電圧に基づいて故障状態を判定し（ステップＳ２）、故障状態に基づいて、次に優先度の高いデータ群ＤＧ２を不揮発性記憶装置１２に格納するか否かを決定する（ステップＳ３）。制御部１４は、特定の故障が発生していると判定した場合、その時点でバックアップ処理を終了する。一方、制御部１４は、故障していないと判定した場合、次のデータ群ＤＧ２に関してステップＳ１〜Ｓ３を実行する。このようにして、故障していないと判定される間、データ群ＤＧ２，ＤＧ３が順次不揮発性記憶装置１２に格納される。一方、故障していると判定された時点で、バックアップ処理が終了される。
【００１７】
ここで、バッテリ１３からの電圧供給経路上の回路において種々の故障が発生する場合がある。これらの故障によりバッテリ１３の消費電力が高くなり、そのためにバッテリ１３の持続時間が短くなってしまう場合がある。このような故障の種類によっては、例えば、バッテリ１３からの供給電圧が正常時より一定レベルだけ低くなったり、正常時より供給電圧の低下が早く始まる場合がある。上記のステップＳ２では、バッテリ１３からの供給電圧から、このような特定の故障が発生しているか否かを判定でき、発生していると判定された場合には、バッテリ１３の持続時間が少ないと推定できる。
【００１８】
そして、制御部１４による上記処理によれば、データ群単位でバックアップが行われ、かつ、優先度の高いデータ群ほど先にバックアップが行われて、特定の故障が発生していると判定された場合には、バックアップ処理が終了される。これにより、故障発生状況に応じたバッテリ１３の持続時間内で、重要性の高いデータをバックアップすることができる。
【００１９】
〔第２の実施の形態〕
次に、図１の情報処理装置１０を含む情報処理システムの例として、ストレージシステムについて説明する。
【００２０】
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、ＣＭ（Controller Module）１００，２００、ドライブ部３００およびＰＳＵ（Power Supply Unit）４００を備えたストレージ装置１０００と、ホスト装置１１００とを含む。ホスト装置１１００は、例えばＳＡＮ（Storage Area Network）を介して、ＣＭ１００，２００と接続されている。
【００２１】
ＣＭ１００，２００は、ホスト装置１１００からの要求に応じて、ドライブ部３００に搭載された記憶装置に対するアクセスを制御するストレージ制御装置である。ＣＭ１００は、ＣＭ１００の内部のキャッシュを用いて、ドライブ部３００内の記憶装置に対するアクセスを制御する。ＣＭ２００も同様に、ＣＭ２００の内部のキャッシュを用いて、ドライブ部３００内の記憶装置に対するアクセスを制御する。
【００２２】
また、ＣＭ１００とＣＭ２００は、互いに接続され、データを互いに送受信することができる。ＣＭ１００とＣＭ２００との間のデータ転送は、キャッシュのミラーリングに利用される。すなわち、ＣＭ１００のキャッシュのデータがＣＭ２００にミラーリングされ、ＣＭ２００のキャッシュのデータがＣＭ１００にミラーリングされる。
【００２３】
ドライブ部３００には、ホスト装置１１００からのアクセス対象となる複数台の記憶装置が搭載されている。記憶装置としては、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）などの不揮発性記憶装置が搭載される。
【００２４】
ＰＳＵ４００は、図示しない外部電源から供給された電力を受け付け、その電力を基にＣＭ１００，２００およびドライブ部３００に対して電源を供給する。
図３は、ＣＭのハードウェア構成例を示す図である。
【００２５】
まず、ＣＭ１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＡＭ（Random Access Memory）１０２、ＰＣＩｅ（PCI express，PCI：Peripheral Component Interconnect）スイッチ１０３、ＳＳＤ１０４、ホストコントローラ（ＣＯＮＴ）１０５、ＳＡＳ（Serial Attached SCSI，SCSI：Small Computer System Interface）エクスパンダ（ＥＸＰ）１０６、バッテリ１０７および電源制御回路１０８を備える。
【００２６】
ＣＰＵ１０１は、ＣＭ１００全体を統括的に制御する。ＣＰＵ１０１は、例えば、１または複数のプロセッサコアを備える。
ＲＡＭ１０２は、ＣＭ１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。例えば、ＲＡＭ１０２には、ホスト装置１１００からの要求に応じたドライブ部３００内の記憶装置へのアクセス制御の際に用いられるキャッシュの領域が確保される。
【００２７】
ＳＳＤ１０４は、ＰＣＩｅスイッチ１０３を介してＣＰＵ１０１と接続されている。ＰＣＩｅスイッチ１０３は、ＳＳＤ１０４とＣＰＵ１０１との間のデータ送受信を制御する。
【００２８】
ＳＳＤ１０４は、ＣＭ１００の補助記憶装置として使用される。ＳＳＤ１０４には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。また、ＳＳＤ１０４には、停電時にＲＡＭ１０２内の一部のデータをバックアップするためのバックアップ領域が確保される。なお、ＳＳＤ１０４の代わりに、ＨＤＤなどの他の種類の不揮発性記憶装置が用いられてもよい。
【００２９】
ホストコントローラ１０５は、ホスト装置１１００と通信するためのインタフェース回路である。
ＳＡＳエクスパンダ１０６は、ＣＰＵ１０１とドライブ部３００内の記憶装置との間で送受信されるデータを中継する。なお、図３では例として、ドライブ部３００にはｎ台の記憶装置ＤＫ１，ＤＫ２，ＤＫ３，・・・，ＤＫｎが搭載されている。ＳＡＳエクスパンダ１０６とドライブ部３００内の記憶装置ＤＫ１，ＤＫ２，ＤＫ３，・・・，ＤＫｎとの間では、ＳＡＳ規格にしたがって通信が行われる。
【００３０】
バッテリ１０７は、停電時のバックアップ用電源である。バッテリ１０７は、停電が発生したとき、ＲＡＭ１０２内のバックアップ対象データをＳＳＤ２０４のバックアップ領域にバックアップするための電力をＣＭ１００の内部に供給する。
【００３１】
電源制御回路１０８は、ＰＳＵ４００から供給される電力とバッテリ１０７から供給される電力のいずれかを、選択的にＣＭ１００の内部に供給する。具体的には、電源制御回路１０８は、通常時はＰＳＵ４００からの電力をＣＭ１００の内部に供給し、停電の発生を検出すると、バッテリ１０７からの電力をＣＭ１００の内部に供給する。
【００３２】
ＣＭ２００は、ＣＭ１００と同様のハードウェア構成を有する。すなわち、ＣＭ２００は、ＣＰＵ２０１、ＲＡＭ２０２、ＰＣＩｅスイッチ２０３、ＳＳＤ２０４、ホストコントローラ（ＣＯＮＴ）２０５、ＳＡＳエクスパンダ（ＥＸＰ）２０６、バッテリ２０７および電源制御回路２０８を備える。ＣＰＵ２０１、ＲＡＭ２０２、ＰＣＩｅスイッチ２０３、ＳＳＤ２０４、ホストコントローラ２０５、ＳＡＳエクスパンダ２０６、バッテリ２０７および電源制御回路２０８は、ＣＰＵ１０１、ＲＡＭ１０２、ＰＣＩｅスイッチ１０３、ＳＳＤ１０４、ホストコントローラ１０５、ＳＡＳエクスパンダ１０６、バッテリ１０７および電源制御回路１０８にそれぞれ対応する構成要素であるので、ここでは説明を省略する。
【００３３】
図４は、ＣＭ間でのキャッシュのミラーリングについて説明するための図である。
ＣＭ１００，２００は、論理ボリュームに対するアクセスをホスト装置１１００から受け付ける。論理ボリュームは、ドライブ部３００に搭載された１台以上の記憶装置によって実現される論理記憶領域である。本実施の形態では、ＣＭ１００，２００は、それぞれ個別の論理ボリュームに対するアクセスを受け付けるものとする。なお、論理ボリュームは、シンプロビジョニング技術を用いた仮想ボリュームであってもよい。この場合、ドライブ部３００内の複数の記憶装置によって実現される「プール」と呼ばれる論理記憶領域から、仮想ボリュームの記憶領域が動的に割り当てられる。
【００３４】
ＣＭ１００は、ＲＡＭ１０２の記憶領域の一部をキャッシュとして用い、論理ボリュームに対するアクセスをライトバック方式で制御する。ＣＭ２００も同様に、ＲＡＭ２０２の記憶領域の一部をキャッシュとして用い、論理ボリュームに対するアクセスをライトバック方式で制御する。また、ＣＭ１００，２００は、自装置のキャッシュのデータを他方のＲＡＭにミラーリングする。これにより、キャッシュのデータが失われる可能性が低減される。また、一方の装置が故障したとき、他方の装置がミラーリングされたキャッシュのデータを用いて、一方の装置が実行していたアクセス制御処理を引き継ぐこともできる。
【００３５】
図４に示すように、ＣＭ１００のＲＡＭ１０２には、自系テーブル領域１０２ａ、自系キャッシュ領域１０２ｂ、他系テーブル領域１０２ｃおよび他系キャッシュ領域１０２ｄが確保される。また、ＣＭ２００のＲＡＭ２０２には、自系テーブル領域２０２ａ、自系キャッシュ領域２０２ｂ、他系テーブル領域２０２ｃおよび他系キャッシュ領域２０２ｄが確保される。
【００３６】
ＣＭ１００の自系テーブル領域１０２ａには、ＣＭ１００が論理ボリュームに対するアクセスを制御するために使用される各種の管理テーブルのデータが記憶される。また、ＣＭ１００の自系キャッシュ領域１０２ｂは、ＣＭ１００が論理ボリュームに対するアクセスを制御する際に、キャッシュとして使用される。
【００３７】
同様に、ＣＭ２００の自系テーブル領域２０２ａには、ＣＭ２００が論理ボリュームに対するアクセスを制御するために使用される各種の管理テーブルのデータが記憶される。また、ＣＭ２００の自系キャッシュ領域２０２ｂは、ＣＭ２００が論理ボリュームに対するアクセスを制御する際に、キャッシュとして使用される。
【００３８】
一方、ＣＭ１００の他系テーブル領域１０２ｃには、ＣＭ２００の自系テーブル領域２０２ａと同一のデータが記憶される。また、ＣＭ１００の他系キャッシュ領域１０２ｄには、ＣＭ２００の自系キャッシュ領域２０２ｂと同一のデータが記憶される。同様に、ＣＭ２００の他系テーブル領域２０２ｃには、ＣＭ１００の自系テーブル領域１０２ａと同一のデータが記憶される。また、ＣＭ２００の他系キャッシュ領域２０２ｄには、ＣＭ１００の自系キャッシュ領域１０２ｂと同一のデータが記憶される。
【００３９】
すなわち、ＣＭ１００は、自系テーブル領域１０２ａおよび自系キャッシュ領域１０２ｂのデータを、ＣＭ２００の他系テーブル領域２０２ｃおよび他系キャッシュ領域２０２ｄにそれぞれミラーリングする。また、ＣＭ２００は、自系テーブル領域２０２ａおよび自系キャッシュ領域２０２ｂのデータを、ＣＭ１００の他系テーブル領域１０２ｃおよび他系キャッシュ領域１０２ｄにそれぞれミラーリングする。
【００４０】
例えば、ＣＭ１００がある論理ボリュームへのデータの書き込み要求をホスト装置１１００から受け付けた場合（ステップＳ１１）、次のような処理が実行される。ＣＭ１００のＣＰＵ１０１は、書き込みが要求されたデータ（書き込みデータ）を自系キャッシュ領域１０２ｂに書き込むとともに、自系テーブル領域１０２ａを更新する（ステップＳ１２）。例えば、自系テーブル領域１０２ａに記憶されたキャッシュ管理テーブルが更新される。
【００４１】
また、ＣＰＵ１０１は、書き込みデータと、自系テーブル領域１０２ａの更新内容を示すデータとをＣＭ２００のＣＰＵ２０１に送信する。ＣＰＵ２０１は、書き込みデータを他系キャッシュ領域２０２ｄに書き込むとともに、更新内容を示すデータに基づいて他系テーブル領域２０２ｃを更新する（ステップＳ１３）。
【００４２】
ＣＭ１００のＣＰＵ１０１は、以上の処理が完了すると、ホスト装置１１００に対して書き込みの完了通知を送信する（ステップＳ１４）。このような処理により、自系テーブル領域１０２ａおよび自系キャッシュ領域１０２ｂのデータは、ＣＭ２００の他系テーブル領域２０２ｃおよび他系キャッシュ領域２０２ｄにそれぞれミラーリングされる。
【００４３】
なお、図示しないが、ＣＰＵ１０１は、この後の非同期のタイミングで、ステップＳ１２で自系キャッシュ領域１０２ｂに書き込んだ書き込みデータを、ドライブ部３００における対応する記憶装置に書き込む（ライトバック）。
【００４４】
図５は、停電時のバックアップ処理について説明するための図である。
上記の図４で説明したように、ＣＭ１００，２００では、ライトバック方式のアクセス制御が行われ、キャッシュ領域（自系キャッシュ領域１０２ｂ，２０２ｂ）は揮発性記憶装置であるＲＡＭ１０２，２０２に確保される。このような構成では、停電が発生した場合、キャッシュ領域のデータのうち、ライトバックが行われていないダーティデータが失われてしまう。
【００４５】
このようなデータロストを防止するために、ＣＭ１００，２００にはそれぞれバッテリ１０７，２０７が搭載され、停電が発生すると、バッテリ１０７，２０７からの電力を用いて、キャッシュ領域のダーティデータが不揮発性記憶装置に退避される。図５に示すように、ＣＭ１００のＳＳＤ１０４には、停電時にバックアップデータを格納するためのバックアップ領域１０４ａが確保されており、キャッシュ領域のダーティデータはバックアップ領域１０４ａにバックアップされる。また、図示しないが、ＣＭ２００のＳＳＤ２０４にも同様なバックアップ領域が確保されている。
【００４６】
また、図４に示したように、ＲＡＭ１０２には自系キャッシュ領域１０２ｂに加えて、自系テーブル領域１０２ａ、他系テーブル領域１０２ｃ、他系キャッシュ領域１０２ｄが確保されている。自系テーブル領域１０２ａには、キャッシュ管理テーブルなど、論理ボリュームへのアクセスに必要な管理データが格納されている。そのため、図５に示すように、停電時には、自系テーブル領域１０２ａに格納された管理テーブルのデータも、ＳＳＤ１０４のバックアップ領域１０４ａにバックアップされる。同様に、図示しないが、ＣＭ２００の自系テーブル領域２０２ａに格納されたデータも、ＳＳＤ２０４のバックアップ領域へのバックアップの対象となる。
【００４７】
さらに、本実施の形態では、図５に示すように、他系テーブル領域１０２ｃに格納された管理テーブルのデータと、他系キャッシュ領域１０２ｄのデータのうちダーティデータも、バックアップ領域１０４ａにバックアップされる。同様に、図示しないが、ＣＭ２００の他系テーブル領域２０２ｃに格納された管理テーブルのデータと、他系キャッシュ領域２０２ｄのデータのうちダーティデータも、ＳＳＤ２０４のバックアップ領域にバックアップされる。
【００４８】
例えば、他系テーブル領域１０２ｃに格納された管理テーブルのデータと、他系キャッシュ領域１０２ｄのデータのうちダーティデータもバックアップされることで、次のようなメリットが得られる。例えば、何らかの理由でＣＭ２００の自系テーブル領域２０２ａおよび自系キャッシュ領域２０２ｂのデータが失われてしまった場合に、ＣＭ２００は、他系テーブル領域１０２ｃおよび他系キャッシュ領域１０２ｄのデータを読み込むことで、動作を再開できる。
【００４９】
また、停電状態から復電したときにＣＭ１００，２００がともに正常に起動した場合でも、ＣＭ１００の他系テーブル領域１０２ｃおよび他系キャッシュ領域１０２ｄには、他方のＣＭ２００ではなくＣＭ１００のバックアップ領域１０４ａからデータをリストアできる。このため、復電から、ＣＭ２００の自系テーブル領域２０２ａおよび自系キャッシュ領域１０２ｂとＣＭ１００の他系テーブル領域１０２ｃおよび他系キャッシュ領域１０２ｄとがミラーリングされた状態でＣＭ１００，２００が起動するまでの時間を短縮できる。その結果、キャッシュデータおよび管理テーブルのデータが冗長化された状態で、ＣＭ２００によるアクセス制御処理を短時間で再開できるようになる。
【００５０】
なお、ＳＳＤ１０４のフラッシュメモリに対するデータの書き込みは、一定サイズのセルを単位として行われる。本実施の形態では、セルのサイズを４キロバイトとする。そして、本実施の形態では、ＲＡＭ１０２におけるバックアップ対象のデータも４キロバイト単位で管理することで、ＲＡＭ１０２からＳＳＤ１０４のバックアップ領域１０４ａへのデータの書き込みを４キロバイト単位で簡単に実行できるようにする。一例として、本実施の形態では、キャッシュページの大きさを４キロバイトとする。
【００５１】
図６は、電源制御回路の内部構成例を示す図である。なお、図６では例として、ＣＭ１００の電源制御回路１０８について示すが、ＣＭ２００の電源制御回路２０８も同様の内部構成を有する。
【００５２】
図６（Ａ）に示すように、電源制御回路１０８は、スイッチ回路１１１，１１２を備える。スイッチ回路１１１は、ＰＳＵ４００からＣＭ１００内の各部に対する電力の通電、遮断を切り替える。スイッチ回路１１２は、バッテリ１０７から、ＣＭ１００内の各部に対する電力の通電、遮断を切り替える。
【００５３】
スイッチ回路１１１，１１２はいずれも、入力側の電圧と出力側の電圧とを検出してそれらを比較することで、停電状態か否かを検出する。停電でない状態（ＰＳＵ４００から電力が供給されている状態）では、スイッチ回路１１１が通電状態となり、スイッチ回路１１２が遮断状態となる。停電状態では、スイッチ回路１１１が遮断状態となり、スイッチ回路１１２が通電状態となる。
【００５４】
図６（Ｂ）には、スイッチ回路１１１，１１２の内部構成例を示している。スイッチ回路１１１は、ＦＥＴ（Field Effect Transistor）１１１ａ，１１１ｂとコントローラ１１１ｃを備える。スイッチ回路１１２は、ＦＥＴ１１２ａ，１１２ｂとコントローラ１１２ｃを備える。なお、ＦＥＴ１１１ａ，１１１ｂ，１１２ａ，１１２ｂは、いずれもＮチャネルＭＯＳＦＥＴ（Metal-Oxide-Semiconductor FET）である。
【００５５】
スイッチ回路１１１において、ＦＥＴ１１１ａ，１１１ｂの各ドレインにはＰＳＵ４００からの１２Ｖの電圧が入力され、各ソースはＣＭ１００の内部に対する出力端子に接続されている。また、ＦＥＴ１１１ａ，１１１ｂの各ゲートにはコントローラ１１１ｃからの共通の制御信号が入力され、この制御信号によってＦＥＴ１１１ａ，１１１ｂのそれぞれのドレイン−ソース間の導通、遮断が制御される。この構成により、ＰＳＵ４００からの電圧の出力を制御するスイッチング素子が冗長化され、電圧出力の切り替え動作の信頼性が高められている。
【００５６】
また、スイッチ回路１１２において、ＦＥＴ１１２ａ，１１２ｂの各ドレインにはバッテリ１０７からの１２Ｖの電圧が入力され、各ソースはＣＭ１００の内部に対する出力端子に接続されている。また、ＦＥＴ１１２ａ，１１２ｂの各ゲートにはコントローラ１１２ｃからの共通の制御信号が入力され、この制御信号によってＦＥＴ１１２ａ，１１２ｂのそれぞれのドレイン−ソース間の導通、遮断が制御される。この構成により、バッテリ１０７からの電圧の出力を制御するスイッチング素子が冗長化され、電圧出力の切り替え動作の信頼性が高められている。
【００５７】
コントローラ１１１ｃは、入力電圧Ｖａ１と出力電圧Ｖｃ１とを検出し、それらの比較結果に基づいてＦＥＴ１１１ａ，１１１ｂの各ゲートに対する制御信号を出力する。コントローラ１１２ｃは、入力電圧Ｖａ２と出力電圧Ｖｃ２とを検出し、それらの比較結果に基づいてＦＥＴ１１２ａ，１１２ｂの各ゲートに対する制御信号を出力する。
【００５８】
コントローラ１１１ｃは、（Ｖａ１−Ｖｃ１）＞ＴＨ１の場合、制御信号をハイレベルにしてＦＥＴ１１１ａ，１１１ｂを導通させ、それ以外の場合、制御信号をローレベルにしてＦＥＴ１１１ａ，１１１ｂを遮断させる。閾値ＴＨ１は、ＦＥＴ１１１ａ，１１１ｂ，１１２ａ，１１２ｂのドレイン−ソース間の電圧降下量より小さい値（例えば、１０ｍＶ）に設定される。一方、コントローラ１１２ｃは、（Ｖａ２−Ｖｃ２）＞ＴＨ２の場合、制御信号をローレベルにしてＦＥＴ１１２ａ，１１２ｂを遮断させ、それ以外の場合、制御信号をハイレベルにしてＦＥＴ１１２ａ，１１１ｂを導通させる。閾値ＴＨ２は、上記の電圧降下量より大きい値に設定される。
【００５９】
これにより、ＣＭ１００の電源が投入されたとき、ＰＳＵ４００から１２Ｖの電圧が供給されていれば、コントローラ１１１ｃからの制御信号がハイレベルになり、ＰＳＵ４００からの電力がＣＭ１００の内部に供給される。このとき、コントローラ１１２ｃからの制御信号がローレベルになり、バッテリ１０７からの電力はＣＭ１００の内部に供給されない。
【００６０】
この状態から、停電してＰＳＵ４００から電圧が出力されなくなると、コントローラ１１１ｃからの制御信号がローレベルになり、ＰＳＵ４００からの電源経路が遮断される。一方、コントローラ１１２ｃからの制御信号がハイレベルになり、バッテリ１０７からの電力がＣＭ１００の内部に供給されるようになる。このようなコントローラ１１１ｃ，１１２ｃによる自律的な処理により、停電が発生したとき、ＣＭ１００の内部に対する電力供給源がＰＳＵ４００からバッテリ１０７に切り替えられる。
【００６１】
なお、停電が発生したとき、ＣＰＵ１０１の処理によってホストコントローラ１０５やＳＡＳエクスパンダ１０６の動作が停止される。このため、停電が発生した後、バッテリ１０７からの電力はバックアップ処理に関係するＣＰＵ１０１、ＲＡＭ１０２、ＰＣＩｅスイッチ１０３およびＳＳＤ１０４にだけ供給されるようになる。ＣＭ２００でも同様に、停電が発生した後、バッテリ２０７からの電力はバックアップ処理に関係するＣＰＵ２０１、ＲＡＭ２０２、ＰＣＩｅスイッチ２０３およびＳＳＤ２０４にだけ供給されるようになる。
【００６２】
次に、図７を用いて、スイッチ回路１１２が故障した場合の問題点について説明する。
図７は、バッテリ電圧の推移例を示す図である。図７では、停電発生時を起点としたバッテリ１０７からの出力電圧の推移について示している。ここで言う出力電圧とは、正確には、電源制御回路１０８を介したバッテリ１０７の出力電圧（すなわち、バッテリ１０７による駆動時におけるスイッチ回路１１２からの出力電圧Ｖｃ２）を指す。
【００６３】
バッテリ１０７のためのスイッチ回路１１２が故障する状態としては、ＦＥＴ１１２ａ，１１２ｂの一方のみ故障している「故障状態Ａ」と、ＦＥＴ１１２ａ，１１２ｂの両方とも故障している「故障状態Ｂ」の２通りの状態が想定される。これらの故障状態Ａ，Ｂのどちらでも、故障したＦＥＴの寄生ダイオードの影響によってＦＥＴでの消費電力が大きくなり、その結果、図７に示すようにバッテリ１０７の持続時間が正常時より減少する。
【００６４】
具体的には、故障状態Ａでは、故障していない他方のＦＥＴによってバッテリ１０７からの電力はＣＭ１００の内部に出力され続ける。例えば、ＦＥＴ１１１ａが故障したとすると、ＦＥＴ１１１ｂはオンのままなので、バッテリ１０７からの電力が出力され続け、スイッチ回路１１２の出力電圧は１２．０Ｖのまま維持される。しかし、このとき、故障したＦＥＴ１１１ａの寄生ダイオードに大きな電流が流れ、電力が消費されてしまう。その結果、図７に示すように、ＦＥＴ１１２ａ，１１２ｂが故障していない正常状態より、バッテリ１０７の持続時間が短くなってしまう。
【００６５】
図７において、９．６Ｖの電圧は、ＣＭ１００がバックアップ動作を実行可能な下限の電圧（動作下限電圧）を示す。図７の例では、正常状態では、電源制御回路１０８を介したバッテリ１０７の出力電圧が動作下限電圧の９．６Ｖより低下するまでの時間は、３００秒となっている。これに対して、故障状態Ａでは、電源制御回路１０８を介したバッテリ１０７の出力電圧が動作下限電圧の９．６Ｖより低下するまでの時間は、２５０秒に短縮されている。
【００６６】
故障状態Ｂでは、故障したＦＥＴ１１１ａ，１１１ｂのいずれもオフになる。しかし、バッテリ１０７からの電圧がＦＥＴ１１１ａ，１１１ｂの両方の寄生ダイオードに印加されて、これら２つの寄生ダイオードに電流が流れてしまうことで、例えば図７に示すように、１１．４Ｖの電圧が出力される。また、故障状態Ａより多くの寄生ダイオードに電流が流れることで、故障状態Ａよりさらに大きな電力が消費されてしまう。その結果、図７に示すように、バッテリ１０７の持続時間が故障状態Ａよりさらに短くなってしまう。図７の例では、故障状態Ｂでは、電源制御回路１０８を介したバッテリ１０７の出力電圧が動作下限電圧の９．６Ｖより低下するまでの時間は、さらに２００秒に短縮されている。
【００６７】
このように、故障状態Ａ，Ｂになると、バッテリ１０７の持続時間が短くなる。このため、バックアップ対象のデータの一部をバックアップ領域１０４ａにバックアップできずに失う可能性が生じる。
【００６８】
ここで、故障検出方法の一例として、電源制御回路１０８を介したバッテリ１０７の出力電圧が、上記の動作下限電圧（９．６Ｖ）より低くなった場合に、バッテリ１０７が故障したと判定する方法がある。しかし、この方法では、図７の例のように、動作下限電圧より高い出力電圧がある程度の時間維持される故障状態Ａ，Ｂを検出することはできない。
【００６９】
また、ＦＥＴの個数を増やしてＦＥＴを通る経路の冗長度を高めることで、故障状態Ｂのように電力が消費される事態を防止できる。しかし、この方法では、回路の実装面積が増大して電源制御回路１０８が大型化し、また、電源制御回路１０８のコストも上がってしまう。また、この方法では、故障状態Ａのような寄生ダイオードによる電力消費を防止することはできない。
【００７０】
このような問題に対して、ＣＭ１００は、バックアップ対象のデータに優先度を付与し、優先度の高いデータから順にバックアップ領域１０４ａにバックアップしていく。また、ＣＭ１００は、ある優先度のデータのバックアップが完了するたびに、電源制御回路１０８を介したバッテリ１０７の出力電圧を検出して、バッテリ１０７によるその後の電力供給能力を推定する。ＣＭ１００は、次の優先度のデータのバックアップを完了できるだけの電力供給能力があると判定される場合に、そのデータのバックアップを実行する。このような処理により、スイッチ回路１１２の故障状態に応じて、バッテリ１０７からの電力供給能力の範囲内で、優先度の高い順に、同じ優先度のデータ群を単位として最大限のデータをバックアップできるようにする。
【００７１】
なお、以上の図７ではＣＭ１００での故障について説明したが、ＣＭ２００でも同様の故障によって同様の問題が発生し得る。そして、ＣＭ２００もＣＭ１００と同様の処理を実行可能である。
【００７２】
図８は、ＣＭが備える処理機能の構成例を示すブロック図である。なお、図８では例としてＣＭ１００について示すが、ＣＭ２００もＣＭ１００と同様の処理機能を備える。
ＣＭ１００は、アクセス制御部１２１、ミラーデータ受信処理部１２２、バックアップ制御部１２３およびリストア制御部１２４を備える。なお、アクセス制御部１２１、ミラーデータ受信処理部１２２、バックアップ制御部１２３およびリストア制御部１２４の処理は、例えば、ＣＰＵ１０１が所定のプログラムを実行することで実現される。
【００７３】
アクセス制御部１２１は、ホスト装置１１００からの要求に応じて論理ボリュームに対するアクセスを制御する。そのアクセス制御の際、アクセス制御部１２１は、自系キャッシュ領域１０２ｂをキャッシュとして用いる。通常時、図４で説明したように、アクセス制御部１２１は、自系キャッシュ領域１０２ｂをキャッシュとして用いながら、論理ボリュームに対するデータの書き込みをライトバック方式で制御する。また、アクセス制御部１２１は、自系キャッシュ領域１０２ｂのデータを、ＣＭ２００のミラーデータ受信処理部（図示せず）を介して他系キャッシュ領域１０２ｄにミラーリングする。
【００７４】
また、アクセス制御部１２１は、論理ボリュームへのアクセス制御の際、自系テーブル領域１０２ａに記憶された管理テーブルを参照する。そして、アクセス制御部１２１は、自系テーブル領域１０２ａのデータを更新するたびに、そのデータ更新をＣＭ２００のミラーデータ受信処理部（図示せず）を介して他系キャッシュ領域に反映させる。
【００７５】
例えば、図８に示すように、自系キャッシュ領域１０２ｂには、アクセス制御部１２１に参照される管理テーブルとして、キャッシュ管理テーブル１３１とボリューム管理テーブル１３２が記憶される。キャッシュ管理テーブル１３１は、自系キャッシュ領域１０２ｂに記憶されるデータを管理するための管理情報である。ボリューム管理テーブル１３２は、論理ボリュームへのアクセスのためのアドレス変換のために利用される管理情報である。
【００７６】
ここで、図９は、キャッシュ管理テーブルの構成例を示す図である。キャッシュ管理テーブル１３１には、自系キャッシュ領域１０２ｂの各ページを示すページ番号に対応付けて、論理アドレス、ダーティフラグ、属性が登録される。
【００７７】
論理アドレスは、ページに格納されたデータについての論理ボリューム上のアドレスを示す。ダーティフラグは、ページに格納されたデータがダーティデータか否かを示す。ダーティフラグは、ダーティデータの場合「１」を示し、ダーティデータでない場合「０」を示す。属性は、データが書き込み要求と読み出し要求のどちらに応じてページに格納されたかを示す。
【００７８】
他方のＣＭ２００の他系テーブル領域２０２ｃには、図９のキャッシュ管理テーブル１３１と同じ形式のキャッシュ管理テーブルが記憶される。アクセス制御部１２１は、キャッシュ管理テーブル１３１を更新すると、その更新内容を他系テーブル領域２０２ｃのキャッシュ管理テーブルにも反映させる。
【００７９】
例えば、アクセス制御部１２１は、ホスト装置１１００からの要求に応じてあるページにデータを書き込むと、キャッシュ管理テーブル１３１の該当ページ番号に対応する論理アドレスとして、論理ボリューム上の書き込み先アドレスを登録する。これとともに、アクセス制御部１２１は、該当ページ番号に対応するダーティフラグを「１」に設定し、属性として「書き込み」を設定する。さらに、アクセス制御部１２１は、他系テーブル領域２０２ｃのキャッシュ管理テーブルについても、同じページ番号に対応する論理アドレス、ダーティフラグおよび属性を同様に更新する。
【００８０】
その後、アクセス制御部１２１は、上記データのライトバックを実行すると、キャッシュ管理テーブル１３１における該当レコードのダーティフラグを「０」に更新する。これとともに、アクセス制御部１２１は、他系テーブル領域２０２ｃのキャッシュ管理テーブルについても、該当レコードのダーティフラグを「０」に更新する。
【００８１】
以下、図８に戻って説明を続ける。
前述のように、ボリューム管理テーブル１３２は、論理ボリュームへのアクセスのためのアドレス変換のために利用される管理情報である。ボリューム管理テーブル１３２には、例えば、次のようなデータが登録される。
【００８２】
例えば、ボリューム管理テーブル１３２には、ドライブ部３００内の１以上の記憶装置によって実現される論理記憶領域のアドレスと、論理ボリュームのアドレスとの対応関係を示す情報が登録される。論理記憶領域がＲＡＩＤ（Redundant Arrays of Inexpensive Disks）グループとして実現される場合、ボリューム管理テーブル１３２には、ＲＡＩＤグループに属する記憶装置の識別情報、ＲＡＩＤレベルなど、ＲＡＩＤグループに関する情報が登録される。
【００８３】
また、論理ボリュームがシンプロビジョニング技術を用いた仮想ボリュームとして生成される場合には、例えば、論理ボリュームを分割した単位領域のうち、データが書き込まれた単位領域に対してのみ、論理記憶領域（プール）から記憶領域が割り当てられる。この場合、ボリューム管理テーブル１３２には、論理ボリューム上の単位領域と、論理記憶領域から割り当てられた記憶領域との対応関係を示す情報が登録される。アクセス制御部１２１は、論理ボリューム上の空きの単位領域に新たなデータを書き込むたびに、その単位領域に対して論理記憶領域から新たな記憶領域を割り当てる。このとき、アクセス制御部１２１は、単位領域とその割り当て先の記憶領域との対応関係を示す情報をボリューム管理テーブル１３２に登録するとともに、ＣＭ２００の他系テーブル領域２０２ｃのボリューム管理テーブルにも同様の情報を登録する。
【００８４】
ミラーデータ受信処理部１２２は、ＣＭ２００のアクセス制御部（図示せず）から自系キャッシュ領域２０２ｂまたは自系テーブル領域２０２ａにおける更新されたデータを受信する。ミラーデータ受信処理部１２２は、受信したデータによって他系キャッシュ領域１０２ｄまたは他系テーブル領域１０２ｃの該当箇所を更新する。
【００８５】
バックアップ制御部１２３は、停電が発生すると、自系テーブル領域１０２ａ、自系キャッシュ領域１０２ｂ、他系テーブル領域１０２ｃおよび他系キャッシュ領域１０２ｄのデータを、ＳＳＤ１０４のバックアップ領域１０４ａにバックアップする。このとき、バックアップ制御部１２３は、バッテリ１０７から電源制御回路１０８を介して出力される電圧を参照しながら、後述するデータごとの優先度にしたがってバックアップ処理を実行する。
【００８６】
また、ＳＳＤ１０４には、バックアップ管理テーブル１３３が記憶される。バックアップ制御部１２３は、バックアップ管理テーブル１３３をバックアップ処理の進行に応じて更新する。
【００８７】
リストア制御部１２４は、外部電力の供給が再開される（復電する）と、バックアップ管理テーブル１３３を参照しながら、ＳＳＤ１０４のバックアップ領域１０４ａにバックアップされたデータをＲＡＭ１０２に書き戻してデータをリストアする。
【００８８】
次に、図１０〜図１２を用いて、バックアップ制御部１２３によるバックアップ処理について説明する。
図１０は、データの優先度について説明するための図である。ＣＭ１００，２００では、バックアップ対象のデータに優先度が設定され、優先度が高い順にデータがＳＳＤ１０４のバックアップ領域１０４ａにバックアップされる。
【００８９】
ＣＭ１００では、図１０に示すように、自系テーブル領域１０２ａに格納された管理テーブルのデータ（テーブルデータ）と、自系キャッシュ領域１０２ｂに格納されたデータのうちのダーティデータとに対して、最も優先度が高い「優先度１」が設定される。これらのデータがバックアップされる確実性を高めることで、復電時にＣＭ１００が記憶するデータだけを用いて、データを失うことなく迅速にアクセス制御を再開できる。
【００９０】
また、他系テーブル領域１０２ｃに格納された管理テーブルのデータ（テーブルデータ）に対して、次に優先度が高い「優先度２」が設定される。さらに、他系キャッシュ領域１０２ｄに格納されたデータのうちのダーティデータに対して、最も優先度が低い「優先度３」が設定される。
【００９１】
なお、ＣＭ２００においても上記と同様に、バックアップ対象のデータに優先度が設定される。すなわち、自系テーブル領域２０２ａに格納された管理テーブルのデータ（テーブルデータ）と、自系キャッシュ領域２０２ｂに格納されたデータのうちのダーティデータとに対して、「優先度１」が設定される。また、他系テーブル領域２０２ｃに格納された管理テーブルのデータ（テーブルデータ）に対して、「優先度２」が設定される。さらに、他系キャッシュ領域２０２ｄに格納されたデータのうちのダーティデータに対して、「優先度３」が設定される。
【００９２】
図１１は、バックアップ管理テーブルの構成例を示す図である。前述のように、ＳＳＤ１０４にはバックアップ管理テーブル１３３が記憶される。バックアップ管理テーブル１３３には、優先度ごとにバックアップフラグが対応付けられている。バックアップフラグは、対応する優先度のデータのバックアップが完了したか否かを示すフラグ情報である。バックアップフラグは、該当するデータのバックアップが未完了の場合は「０」に設定され、該当するデータのバックアップが完了した場合は「１」に設定される。
【００９３】
なお、ＣＭ２００のＳＳＤ２０４にも、図１１と同様のデータ構成を有するバックアップ管理テーブルが記憶される。
図１２は、優先度にしたがったバックアップ処理の例を示す図である。なお、図７と同様に、図１２のグラフの縦軸は、電源制御回路１０８を介したバッテリ１０７の出力電圧を示す。
【００９４】
バックアップ制御部１２３は、停電が検出されたタイミングＴ０において、優先度１に対応するデータのバックアップを開始する。これにより、自系テーブル領域１０２ａに格納された管理テーブルのデータと、自系キャッシュ領域１０２ｂに格納されたデータのうちのダーティデータとが、ＳＳＤ１０４のバックアップ領域１０４ａにバックアップされる。
【００９５】
バックアップ制御部１２３は、タイミングＴ１において優先度１に対応するデータのバックアップが完了すると、バックアップ管理テーブル１３３における優先度１に対応するバックアップフラグを、「０」から「１」に更新する。これとともに、バックアップ制御部１２３は、電源制御回路１０８を介したバッテリ１０７の出力電圧（すなわち、スイッチ回路１１２からの出力電圧Ｖｃ２）をスイッチ回路１１２のコントローラ１１２ｃから取得する。バックアップ制御部１２３は、取得した出力電圧が１１．４Ｖ以下であるかを判定する。
【００９６】
ここで、タイミングＴ１において取得した出力電圧が１１．４Ｖ以下である場合、スイッチ回路１１２のＦＥＴ１１２ａ，１１２ｂの両方とも故障している故障状態Ｂであると推定される。この場合、バッテリ１０７の持続時間の残りが非常に短く、優先度２に対応するデータのバックアップを完了することも困難と推定される。このため、バックアップ制御部１２３は、バックアップ処理を終了する。
【００９７】
一方、タイミングＴ１において取得した出力電圧が１１．４Ｖより高い場合、少なくとも故障状態Ｂにはなっておらず、バッテリ１０７の持続時間の残りがある程度長いと推定される。このため、バックアップ制御部１２３は、次の優先度２に対応するデータのバックアップを開始する。これにより、他系テーブル領域１０２ｃに格納された管理テーブルのデータが、ＳＳＤ１０４のバックアップ領域１０４ａにバックアップされる。
【００９８】
なお、タイミングＴ１での上記判定では、電圧の判定閾値として１１．４Ｖ以上１２．０Ｖ未満の値が用いられればよい。この判定閾値は、ＦＥＴ１１２ａ，１１２ｂがいずれも正常な場合の出力電圧Ｖｃ２といずれも故障している場合の出力電圧Ｖｃ２との差分に基づいて決定される、ということができる。
【００９９】
バックアップ制御部１２３は、タイミングＴ２において優先度２に対応するデータのバックアップが完了すると、バックアップ管理テーブル１３３における優先度２に対応するバックアップフラグを、「０」から「１」に更新する。これとともに、バックアップ制御部１２３は、電源制御回路１０８を介したバッテリ１０７の出力電圧をスイッチ回路１１２のコントローラ１１２ｃから取得する。
【０１００】
バックアップ制御部１２３は、取得した出力電圧が１１．８Ｖ以下であるかを判定する。この１１．８Ｖとは、出力電圧が正常時の１２．０Ｖより低下し始めているかを判定するための電圧である。出力電圧が正常時の１２．０Ｖより低下し始めている場合、ＦＥＴ１１２ａ，１１２ｂの一方のみ故障している故障状態Ａになっており、そのような故障による余計な電力消費によって出力電圧が低下し始めていると推定される。このため、バッテリ１０７の持続時間の残りが非常に短く、優先度３に対応するデータのバックアップを完了することも困難と推定される。したがって、バックアップ制御部１２３は、バックアップ処理を終了する。
【０１０１】
一方、タイミングＴ２において取得した出力電圧が１１．８Ｖより高い場合、正常状態である可能性が高いと推定される。このため、バックアップ制御部１２３は、次の優先度３に対応するデータのバックアップを開始する。これにより、他系キャッシュ領域１０２ｄに格納された管理テーブルのデータが、ＳＳＤ１０４のバックアップ領域１０４ａにバックアップされる。
【０１０２】
バックアップ制御部１２３は、タイミングＴ３において優先度３に対応するデータのバックアップが完了すると、バックアップ管理テーブル１３３における優先度３に対応するバックアップフラグを、「０」から「１」に更新する。そして、バックアップ制御部１２３は、バックアップ処理を終了する。
【０１０３】
なお、バックアップ管理テーブル１３３は、復電後のリストア処理時にリストア制御部１２４によって参照される。バックアップ管理テーブル１３３のバックアップフラグにより、どのデータがＳＳＤ１０４のバックアップ領域１０４ａにバックアップされ、どのデータを他方のＳＳＤ２０４のバックアップ領域から取得するべきかが判断される。バックアップ管理テーブル１３３を用いたリストア処理については、後の図１４、図１５において詳しく説明する。
【０１０４】
以上の処理によれば、優先度の高いデータから順にバックアップが行われる。また、１つの優先度に対応するデータのバックアップが完了するたびに、電源制御回路１０８を介したバッテリ１０７の出力電圧が検出され、バッテリ１０７による電力供給能力の余力が推定される。そして、余力が十分あると推定される場合は次の優先度に対応するデータがバックアップされる一方、余力がないと推定される場合はその時点でバックアップ処理が終了される。
【０１０５】
このような処理により、バッテリ１０７からの放電経路上にあるＦＥＴの故障によってバッテリ１０７の電力供給能力が低下した場合でも、その能力の範囲内で、同じ優先度のデータ群を単位として最大限のデータをバックアップできる。このとき、優先度の高いデータから順にバックアップされることで、重要なデータ（特に、復電後にアクセス制御を正確かつ迅速に再開するために必要なデータ）が失われる可能性を低減できる。
【０１０６】
また、バッテリ１０７の電力供給能力の余力が少ないと判定された場合に、その時点でバックアップ処理が終了されることで、その時点でバッテリ１０７の放電も終了され、バッテリ１０７の残量低下が停止する。このため、バッテリ１０７の電力供給能力がなくなるまでバックアップ処理を継続する場合と比較して、復電時点でのバッテリ１０７の残量が多くなる。
【０１０７】
復電後には、バッテリ１０７の残量が、少なくとも優先度１に対応するデータのバックアップを実行できる下限量に達するまで、キャッシュデータのロストを防止するため、ライトスルー方式でアクセス制御が再開される。そして、バッテリ１０７の残量がこの下限量に達すると、アクセス制御の方式がライトバック方式に切り替えられる。ライトスルー方式では、データの書き込みが要求された場合、そのデータのキャッシュへの書き込みだけでなく、そのデータのライトバックが完了した後に、ホスト装置１１００に対して書き込み完了が通知される。このため、ライトバック方式と比較して、ホスト装置１１００からの書き込み要求に対する応答速度が低い。
【０１０８】
上記のように、復電時点でのバッテリ１０７の残量が多くなることで、復電後に、アクセス制御をライトスルー方式からライトバック方式に切り替えるまでの時間を短縮できる。その結果、ホスト装置１１００からの書き込み要求に対する応答性能を、復電から短時間で回復させることができ、全体としてこの応答性能を改善できる。
【０１０９】
次に、ＣＭ１００の処理についてフローチャートを用いて説明する。
図１３は、停電時におけるＣＭの処理手順を示すフローチャートの例である。
［ステップＳ２１］バックアップ制御部１２３は、停電を検出するまで待機状態となり、停電を検出するとステップＳ２２の処理を実行する。なお、バックアップ制御部１２３は、例えば、電源制御回路１０８のスイッチ回路１１１のコントローラ１１１ｃからの通知に基づいて、停電の発生を検出する。また、バックアップ制御部１２３は、すべてのバックアップフラグを「０」に設定したバックアップ管理テーブル１３３を、ＳＳＤ１０４に記録する。
【０１１０】
［ステップＳ２２］バックアップ制御部１２３は、優先度１のデータを退避させる。すなわち、バックアップ制御部１２３は、自系テーブル領域１０２ａに格納された管理テーブルのデータと、自系キャッシュ領域１０２ｂに格納されたデータのうちのダーティデータとを、ＳＳＤ１０４のバックアップ領域１０４ａに格納する。なお、自系キャッシュ領域１０２ｂに格納されたデータのうちのダーティデータは、自系テーブル領域１０２ａに格納されたキャッシュ管理テーブル１３１のダーティフラグに基づいて判別される。
【０１１１】
［ステップＳ２３］バックアップ制御部１２３は、バックアップ管理テーブル１３３における優先度１に対応するバックアップフラグを「１」に更新する。
［ステップＳ２４］バックアップ制御部１２３は、電源制御回路１０８を介したバッテリ１０７の出力電圧（すなわち、スイッチ１１２からの出力電圧Ｖｃ２）をスイッチ回路１１２のコントローラ１１２ｃから取得する。バックアップ制御部１２３は、取得した出力電圧が１１．４Ｖ以下である場合、処理を終了する。この場合、ＣＭ１００の動作が停止する。一方、バックアップ制御部１２３は、取得した出力電圧が１１．４Ｖより高い場合、ステップＳ２５の処理を実行する。
【０１１２】
［ステップＳ２５］バックアップ制御部１２３は、優先度２のデータを退避させる。すなわち、バックアップ制御部１２３は、他系テーブル領域１０２ｃに格納された管理テーブルのデータを、ＳＳＤ１０４のバックアップ領域１０４ａに格納する。
【０１１３】
［ステップＳ２６］バックアップ制御部１２３は、バックアップ管理テーブル１３３における優先度２に対応するバックアップフラグを「１」に更新する。
［ステップＳ２７］バックアップ制御部１２３は、電源制御回路１０８を介したバッテリ１０７の出力電圧をスイッチ回路１１２のコントローラ１１２ｃから取得する。バックアップ制御部１２３は、取得した出力電圧が１１．８Ｖ以下である場合、処理を終了する。この場合、ＣＭ１００の動作が停止する。一方、バックアップ制御部１２３は、取得した出力電圧が１１．８Ｖより高い場合、ステップＳ２８の処理を実行する。
【０１１４】
［ステップＳ２８］バックアップ制御部１２３は、優先度３のデータを退避させる。すなわち、バックアップ制御部１２３は、他系キャッシュ領域１０２ｄに格納されたデータのうちのダーティデータを、ＳＳＤ１０４のバックアップ領域１０４ａに格納する。なお、他系キャッシュ領域１０２ｄに格納されたデータのうちのダーティデータは、他系テーブル領域１０２ｃに格納されたＣＭ２００のキャッシュ管理テーブルのダーティフラグに基づいて判別される。
【０１１５】
［ステップＳ２９］バックアップ制御部１２３は、バックアップ管理テーブル１３３における優先度３に対応するバックアップフラグを「１」に更新する。この処理が完了すると、ＣＭ１００の動作が停止する。
【０１１６】
図１４、図１５は、復電時におけるＣＭの処理手順を示すフローチャートの例である。
［ステップＳ３１］外部電源からの電力供給が復旧すると、ＰＳＵ４００からの電力供給が再開される（復電する）。ＣＭ１００が、ＰＳＵ４００からの電力によって起動すると、リストア制御部１２４は、ステップＳ３２以降の処理を実行する。また、ＰＳＵ４００からの電力供給が再開されることで、電源制御回路１０８は、ＰＳＵ４００からの電力を用いてバッテリ１０７の充電を開始する。
【０１１７】
［ステップＳ３２］リストア制御部１２４は、ＳＳＤ１０４に記憶されたバックアップ管理テーブル１３３を参照し、優先度１に対応するバックアップフラグを読み込む。リストア制御部１２４は、バックアップフラグが「１」の場合、ステップＳ３３の処理を実行し、バックアップフラグが「０」の場合、ステップＳ３４の処理を実行する。
【０１１８】
［ステップＳ３３］リストア制御部１２４は、ＣＭ１００のＳＳＤ１０４のバックアップ領域１０４ａから、優先度１のデータをリストアする。すなわち、リストア制御部１２４は、自系テーブル領域１０２ａからバックアップされた管理テーブルのデータを、バックアップ領域１０４ａから自系テーブル領域１０２ａに書き戻す。また、リストア制御部１２４は、自系キャッシュ領域１０２ｂからバックアップされたダーティデータを、バックアップ領域１０４ａから自系キャッシュ領域１０２ｂに書き戻す。
【０１１９】
［ステップＳ３４］リストア制御部１２４は、他方のＣＭ２００が備えるＳＳＤ２０４のバックアップ領域から、優先度１のデータをリストアする。具体的には、リストア制御部１２４は、他方のＣＭ２００のリストア制御部に対して、他系テーブル領域２０２ｃのデータと他系キャッシュ領域２０２ｄのダーティデータの転送を要求する。ＣＭ２００のリストア制御部は、ＳＳＤ２０４のバックアップ領域から、他系テーブル領域２０２ｃからバックアップされた管理テーブルのデータと、他系キャッシュ領域２０２ｄからバックアップされたダーティデータとを読み出し、ＣＭ１００に転送する。ＣＭ１００のリストア制御部１２４は、転送された管理テーブルのデータを自系テーブル領域１０２ａに格納し、転送されたダーティデータを自系キャッシュ領域１０２ｂに格納する。
【０１２０】
［ステップＳ３５］リストア制御部１２４は、ＳＳＤ１０４に記憶されたバックアップ管理テーブル１３３を参照し、優先度２に対応するバックアップフラグを読み込む。リストア制御部１２４は、バックアップフラグが「１」の場合、ステップＳ３６の処理を実行し、バックアップフラグが「０」の場合、ステップＳ３７の処理を実行する。
【０１２１】
［ステップＳ３６］リストア制御部１２４は、ＣＭ１００のＳＳＤ１０４のバックアップ領域１０４ａから、優先度２のデータをリストアする。すなわち、リストア制御部１２４は、他系テーブル領域１０２ｃからバックアップされた管理テーブルのデータを、バックアップ領域１０４ａから他系テーブル領域１０２ｃに書き戻す。
【０１２２】
［ステップＳ３７］リストア制御部１２４は、他方のＣＭ２００が備えるＳＳＤ２０４のバックアップ領域から、優先度２のデータをリストアする。具体的には、リストア制御部１２４は、他方のＣＭ２００のリストア制御部に対して、自系テーブル領域２０２ａのデータの転送を要求する。ＣＭ２００のリストア制御部は、ＳＳＤ２０４のバックアップ領域から、自系テーブル領域２０２ａからバックアップされた管理テーブルのデータを読み出し、ＣＭ１００に転送する。ＣＭ１００のリストア制御部１２４は、転送された管理テーブルのデータを他系テーブル領域１０２ｃに格納する。
【０１２３】
［ステップＳ３８］リストア制御部１２４は、ＳＳＤ１０４に記憶されたバックアップ管理テーブル１３３を参照し、優先度３に対応するバックアップフラグを読み込む。リストア制御部１２４は、バックアップフラグが「１」の場合、ステップＳ３９の処理を実行し、バックアップフラグが「０」の場合、ステップＳ４０の処理を実行する。
【０１２４】
［ステップＳ３９］リストア制御部１２４は、ＣＭ１００のＳＳＤ１０４のバックアップ領域１０４ａから、優先度３のデータをリストアする。すなわち、リストア制御部１２４は、リストア制御部１２４は、他系キャッシュ領域１０２ｄからバックアップされたダーティデータを、バックアップ領域１０４ａから他系キャッシュ領域１０２ｄに書き戻す。
【０１２５】
［ステップＳ４０］リストア制御部１２４は、他方のＣＭ２００が備えるＳＳＤ２０４のバックアップ領域から、優先度３のデータをリストアする。具体的には、リストア制御部１２４は、他方のＣＭ２００のリストア制御部に対して、自系キャッシュ領域２０２ｂのデータの転送を要求する。ＣＭ２００のリストア制御部は、ＳＳＤ２０４のバックアップ領域から、自系キャッシュ領域２０２ｂからバックアップされたダーティデータを読み出し、ＣＭ１００に転送する。ＣＭ１００のリストア制御部１２４は、転送されたダーティデータを他系キャッシュ領域１０２ｄに格納する。
【０１２６】
以上の処理により、リストア処理が完了する。上記のリストア処理では、リストア制御部１２４は、バックアップ管理テーブル１３３の優先度ごとのバックアップフラグに基づいて、リストア対象のデータをどこから読み込むべきかを判断できる。そのため、データを確実かつ迅速にリストアすることができる。
【０１２７】
以下、図１５を用いて説明を続ける。
［ステップＳ４１］リストア制御部１２４は、他方のＣＭ２００でのリストア処理が終了したかをＣＭ２００のリストア制御部に問い合わせる。リストア制御部１２４は、ＣＭ２００でのリストア処理が終了していない場合、待ち状態になり、一定時間ごとに再度問い合わせを行う。そして、リストア制御部１２４は、ＣＭ２００でのリストア処理が終了した場合、ステップＳ４２の処理を実行する。
【０１２８】
［ステップＳ４２］リストア制御部１２４は、バッテリ１０７の残量が所定の閾値以上かを判定する。この閾値としては、例えば、優先度１に対応するデータのバックアップを実行できるバッテリ１０７の残量の下限値が設定される。バッテリ１０７の残量がこの下限値以上であれば、ライトバック方式によるアクセス制御を再開したとしても、停電が発生した場合に少なくとも優先度１に対応するデータをバックアップでき、ライトバックされていないダーティデータを保証できる。リストア制御部１２４は、バッテリ１０７の残量が閾値未満の場合、ステップＳ４３の処理を実行し、残量が閾値以上の場合、ステップＳ４５の処理を実行する。
【０１２９】
［ステップＳ４３］リストア制御部１２４は、バッテリ１０７の残量が閾値未満であることをアクセス制御部１２１に通知する。アクセス制御部１２１は、この通知に応じて、ホスト装置１１００からの要求に応じた論理ボリュームに対するアクセス制御を開始する。このとき、アクセス制御部１２１は、書き込み制御をライトスルー方式で実行する。すなわち、アクセス制御部１２１は、ホスト装置１１００からデータの書き込みが要求された場合、そのデータを自系キャッシュ領域１０２ｂに書き込むとともに、そのデータをドライブ部３００にライトバックし、ホスト装置１１００に対して書き込み完了を通知する。
【０１３０】
［ステップＳ４４］バッテリ１０７の残量が上記の閾値以上かを判定する。リストア制御部１２４は、バッテリ１０７の残量が閾値以上になるまで待機状態となり、残量が閾値以上になると、ステップＳ４５の処理を実行する。
【０１３１】
［ステップＳ４５］リストア制御部１２４は、バッテリ１０７の残量が閾値以上になったことをアクセス制御部１２１に通知する。ステップＳ４２の次にステップＳ４５が実行された場合、アクセス制御部１２１は、この通知に応じて、ホスト装置１１００からの要求に応じた論理ボリュームに対するアクセス制御を開始する。このとき、アクセス制御部１２１は、書き込み制御をライトバック方式で実行する。一方、ステップＳ４４の次にステップＳ４５が実行された場合、すなわち、すでにアクセス制御が開始されている場合には、アクセス制御部１２１は、書き込み制御方式をライトスルー方式からライトバック方式に切り替える。
【０１３２】
ここで、図１３に示した停電時の処理では、ある優先度のデータのバックアップが完了したとき、バッテリ１０７の電力供給能力の余力が小さいと推定される場合には、その時点でバックアップ処理が終了される。これにより、バッテリ１０７の残量がバックアップ処理を実行できる下限量に低下するまでバックアップ処理を継続する場合と比較して、バッテリ１０７の放電量を抑制できる。その結果、図１４、図１５の処理では、復電から、バッテリ１０７の残量が閾値以上になるまでの時間が短縮される。これにより、復電から、アクセス制御部１２１がライトバック方式でアクセス制御を実行できるようになるまでの時間を短縮でき、ホスト装置１１００からの書き込み要求に対する応答性能を全体として改善できる。
【０１３３】
なお、上記の各実施の形態に示した装置（例えば、情報処理装置１０、ＣＭ１００，２００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ブルーレイディスク（Blu-ray Disc：ＢＤ、登録商標）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１３４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１３５】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【０１３６】
１０  情報処理装置
１１  揮発性記憶装置
１２  不揮発性記憶装置
１３  バッテリ
１４  制御部
ＤＧ１〜ＤＧ３  データ群
Ｓ１〜Ｓ３  ステップ
【図１】
2020030580.tif 000003
【図２】
2020030580.tif 000004
【図３】
2020030580.tif 000005
【図４】
2020030580.tif 000006
【図５】
2020030580.tif 000007
【図６】
2020030580.tif 000008
【図７】
2020030580.tif 000009
【図８】
2020030580.tif 000010
【図９】
2020030580.tif 000011
【図１０】
2020030580.tif 000012
【図１１】
2020030580.tif 000013
【図１２】
2020030580.tif 000014
【図１３】
2020030580.tif 000015
【図１４】
2020030580.tif 000016
【図１５】
2020030580.tif 000017