(57)【特許請求の範囲】
【請求項１】
ホスト計算機に接続されるストレージシステムであって、
記憶装置と、
第１の揮発メモリを備え、前記記憶装置と前記ホスト計算機との間のデータ転送を制御する第１のコントローラと、
前記第１のコントローラに接続され、第２の揮発メモリを備え、前記第１のコントローラとともに前記記憶装置と前記ホスト計算機との間のデータ転送を制御する第２のコントローラと、
不揮発メモリと、
バッテリ装置とを有し、
電源遮断時に、
前記バッテリ装置は、
前記第１のコントローラ及び前記第２のコントローラへの電力供給を開始し、
前記第２のコントローラは、
前記第１の揮発メモリに格納されているデータを前記第２の揮発メモリにコピーし、当該コピー完了後に、前記第１のコントローラの動作を停止して前記バッテリ装置から前記第１のコントローラへの電力供給を停止させ、前記第２の揮発メモリに格納されているデータを前記不揮発メモリに格納する
ことを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記第１のコントローラは、
前記第１の揮発メモリに格納されるデータのうち前記記憶装置へ格納が完了していない第１のデータを管理し、
前記第２のコントローラは、
前記第２の揮発メモリに格納されるデータのうち前記記憶装置へ格納が完了していない第２のデータを管理し、
前記電源遮断時に、
前記第２のコントローラは、
前記第１の揮発メモリに格納されているデータのうち前記第１のコントローラにより管理される前記第１のデータを前記第２の揮発メモリへコピーし、当該コピー完了後に、前記第１のコントローラの動作を停止して前記バッテリ装置から前記第１のコントローラへの電力供給を停止させ、前記第２の揮発メモリに格納されている前記第１のデータ及び前記第２のデータを前記不揮発メモリに格納する
ことを特徴とするストレージシステム。
【請求項３】
請求項２に記載のストレージシステムであって、
前記電源遮断時に、
前記第２のコントローラは、
前記第２の揮発メモリにおいて前記第２のデータが格納されている第１の記憶領域とは異なる第２の記憶領域の容量と、前記第１のデータの容量とを比較し、
前記第２の記憶領域の容量が前記第１のデータの容量より小さい場合は、前記第２のデータの少なくとも一部のデータを前記不揮発メモリに格納し、
前記第１の揮発メモリに格納されている前記第１のデータを前記第２の揮発メモリの前記第２の記憶領域及び前記第２のデータの少なくとも一部のデータが格納されていた第３の記憶領域にコピーする
ことを特徴とするストレージシステム。
【請求項４】
請求項３に記載のストレージシステムであって、
前記電源遮断時に、
前記第２のコントローラは、
前記記憶装置と前記ホスト計算機との間のデータ転送制御を停止するとともに、前記第２の記憶領域には、前記第２の揮発メモリに格納されているデータを前記不揮発メモリに格納するためのプログラムを格納する
ことを特徴とするストレージシステム。
【請求項５】
請求項１に記載のストレージシステムであって、
前記第２のコントローラは、
さらに第３の揮発メモリを備え、前記第２のコントローラとともに前記記憶装置と前記ホスト計算機との間のデータ転送を制御する第３のコントローラが接続され、
前記電源遮断時に、
前記バッテリ装置は、
前記第１乃至前記第３のコントローラへの電力供給を開始し、
前記第２のコントローラは、
前記第１の揮発メモリの容量と前記第３の揮発メモリの容量とを比較し、当該比較の結果、前記第３の揮発メモリの容量が前記第１の揮発メモリの容量より小さい場合に、前記第３の揮発メモリに格納されているデータを前記第２の揮発メモリにコピーし、当該コピー完了後に、前記第３のコントローラの動作を停止して前記バッテリ装置から前記第３のコントローラへの電力供給を停止させ、
前記第１の揮発メモリに格納されているデータを前記第２の揮発メモリにコピーし、当該コピー完了後に、前記第１のコントローラの動作を停止して前記バッテリ装置から前記第１のコントローラへの電力供給を停止させ、
前記第２の揮発メモリに格納されているデータを前記不揮発メモリに格納する
ことを特徴とするストレージシステム。
【請求項６】
請求項１に記載のストレージシステムであって、
前記第１のコントローラは、
前記ホスト計算機に接続され、当該ホスト計算機から第１の書込み要求を受信すると、前記第１の書込み要求に含まれる第１の書込みデータを前記第１の揮発メモリに格納し、前記ホスト計算機に書込み完了報告を送信した後に、前記第２のコントローラを介して、前記第１の揮発メモリ格納された前記第１の書込みデータを前記記憶装置に格納するよう制御し、
前記第２のコントローラは、
前記第１のコントローラに接続されるホスト計算機とは異なる他のホスト計算機に接続され、当該他のホスト計算機から第２の書込み要求を受信すると、前記第２の書込み要求に含まれる第２の書込みデータを前記第２の揮発メモリに格納し、前記他のホスト計算機に書込み完了報告を送信した後に、前記第２の揮発メモリに格納された前記第２の書込みデータを前記記憶装置に格納するよう制御する
ことを特徴とするストレージシステム。
【請求項７】
請求項６に記載のストレージシステムであって、
前記電源遮断時に、
前記第１のコントローラは、
前記第２のコントローラにより前記第１の揮発メモリに格納されているデータが前記第２の揮発メモリにコピーされる前に、前記第１の揮発メモリに格納されているデータに保障コード付加し、
電源復旧時に、
前記第２のコントローラは、
前記不揮発メモリから読み出したデータのうち、前記電源遮断時において前記第１の揮発メモリから前記第２の揮発メモリにコピーしたデータを前記第１の揮発メモリに格納し、
前記第１のコントローラは、
前記保障コードに基づいて、前記第１の揮発メモリに格納されたデータが正常データであるか否かを判断する
ことを特徴とするストレージシステム。
【請求項８】
請求項１に記載のストレージシステムであって、
前記第２のコントローラは、
前記第２のコントローラの動作を制御する複数のコアを備えるプロセッサを有し、前記電源遮断時に、複数のプロセッサのうちの一部の動作を停止させる
ことを特徴とするストレージシステム。
【請求項９】
ホスト計算機に接続されるストレージシステムのデータバックアップ方法であって、
前記ストレージシステムは、データを記憶する記憶装置と、前記記憶装置と前記ホスト計算機との間のデータ転送を第１の揮発メモリを介して制御する第１のコントローラと、前記第１のコントローラに接続され、前記第１のコントローラとともに前記記憶装置と前記ホスト計算機との間のデータ転送を第２の揮発メモリを介して制御する第２のコントローラと、不揮発メモリと、バッテリ装置とを有し、
電源遮断時において、
前記バッテリ装置が、前記第１のコントローラ及び前記第２のコントローラに対して電力供給を開始する第１のステップと、
前記第２のコントローラが、前記第１の揮発メモリに格納されているデータを前記第２の揮発メモリにコピーし、当該コピー完了後に、前記第１のコントローラの動作を停止させて前記バッテリ装置から前記第１のコントローラに対する電力供給を停止させ、前記第２の揮発メモリに格納されているデータを前記不揮発メモリに格納する第２のステップと
を備えることを特徴とするデータバックアップ方法。
【請求項１０】
請求項９に記載のデータバックアップ方法であって、
前記第１のコントローラが、前記第１の揮発メモリに格納されるデータのうちの前記記憶装置に格納が完了していない第１のデータを管理する第３のステップと、
前記第２のコントローラが、前記第２の揮発メモリに格納されるデータのうちの前記記憶装置に格納が完了していない第２のデータを管理する第４のステップとを備え、
前記第２のステップにおいて、
前記第２のコントローラが、前記第１の揮発メモリに格納されているデータのうち前記第３のステップにより管理される前記第１のデータを前記第２の揮発メモリへコピーし、当該コピー完了後に、前記第１のコントローラの動作を停止して前記バッテリ装置から前記第１のコントローラへの電力供給を停止させ、前記第２の揮発メモリに格納された前記第１のデータ及び前記第４のステップにより管理される前記第２のデータを前記不揮発メモリに格納する
ことを特徴とするデータバックアップ方法。
【請求項１１】
請求項１０に記載のデータバックアップ方法であって、
前記第２のステップにおいて、
前記第２のコントローラが、前記第２の揮発メモリにおいて前記第２のデータが格納されている第１の記憶領域とは異なる第２の記憶領域の容量と、前記第１のデータの容量とを比較し、前記第２の記憶領域の容量が前記第１のデータの容量より小さい場合は、前記第２のデータの少なくとも一部のデータを前記不揮発メモリに格納し、前記第１の揮発メモリに格納されている前記第１のデータを前記第２の揮発メモリの前記第２の記憶領域及び前記第２のデータの少なくとも一部のデータが格納されていた第３の記憶領域にコピーする
ことを特徴とするデータバックアップ方法。
【請求項１２】
請求項１１に記載のデータバックアップ方法であって、
前記第２のステップにおいて、
前記第２のコントローラが、前記記憶装置と前記ホスト計算機との間のデータ転送制御を停止するとともに、前記第２の記憶領域には、前記第２の揮発メモリに格納されているデータを前記不揮発メモリに格納するためのプログラムを格納する
ことを特徴とするデータバックアップ方法。
【請求項１３】
請求項９に記載のデータバックアップ方法であって、
前記第２のコントローラは、前記第２のコントローラとともに前記記憶装置と前記ホスト計算機との間のデータ転送を第３の揮発メモリを介して制御する第３のコントローラに接続され、
前記第１のステップにおいて、
前記バッテリ装置が、前記第１乃至前記第３のコントローラへの電力供給を開始し、
前記第２のステップにおいて、
前記第２のコントローラが、前記第１の揮発メモリの容量と前記第３の揮発メモリの容量とを比較し、当該比較の結果、前記第３の揮発メモリの容量が前記第１の揮発メモリの容量より小さい場合に、前記第３の揮発メモリに格納されているデータを前記第２の揮発メモリにコピーし、当該コピー完了後に、前記第３のコントローラの動作を停止して前記バッテリ装置から前記第３のコントローラへの電力供給を停止させ、前記第１の揮発メモリに格納されているデータを前記第２の揮発メモリにコピーし、当該コピー完了後に、前記第１のコントローラの動作を停止して前記バッテリ装置から前記第１のコントローラへの電力供給を停止させ、前記第２の揮発メモリに格納されているデータを前記不揮発メモリに格納する
ことを特徴とするデータバックアップ方法。
【請求項１４】
請求項９に記載のデータバックアップ方法であって、
前記第１のコントローラが、前記ホスト計算機から第１の書込み要求を受信すると、前記第１の書込み要求に含まれる第１の書込みデータを前記第１の揮発メモリに格納し、前記ホスト計算機に書込み完了報告を送信した後に、前記第２のコントローラを介して、前記第１の揮発メモリ格納された前記第１の書込みデータを前記記憶装置に格納するよう制御する第５のステップと、
前記第２のコントローラが、前記第１のコントローラに接続されるホスト計算機とは異なる他のホスト計算機から第２の書込み要求を受信すると、前記第２の書込み要求に含まれる第２の書込みデータを前記第２の揮発メモリに格納し、前記他のホスト計算機に書込み完了報告を送信した後に、前記第２の揮発メモリに格納された前記第２の書込みデータを前記記憶装置に格納するよう制御する第６のステップとを備える
ことを特徴とするデータバックアップ方法。
【請求項１５】
請求項１４に記載のデータバックアップ方法であって、
前記第２のステップにおいて、
前記第１のコントローラが、前記第２のコントローラにより前記第１の揮発メモリに格納されているデータが前記第２の揮発メモリにコピーされる前に、前記第１の揮発メモリに格納されているデータに保障コード付加し、
電源復旧時において、
前記第２のコントローラが、前記不揮発メモリから読み出したデータのうち、電源遮断時において前記第１の揮発メモリから前記第２の揮発メモリにコピーしたデータを前記第１の揮発メモリに格納する第７のステップと、
前記第１のコントローラが、前記保障コードに基づいて、前記第１の揮発メモリに格納されたデータが正常データであるか否かを判断する第８のステップとを備える
ことを特徴とするデータバックアップ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム及びデータバックアップ方法に関し、特に電源遮断時に揮発メモリに格納されたデータを不揮発メモリに退避させるストレージシステム及びデータバックアップ方法に適用して好適なものである。
【背景技術】
【０００２】
従来、ホスト計算機と記憶装置との間のデータ転送に揮発メモリであるキャッシュメモリを介在させることにより、ホスト計算機の処理速度と、記憶装置の処理速度との差を吸収するストレージシステムがある。【０００３】
一般にストレージシステムは、ホスト計算機に接続されるコントローラ及びデータを記憶する記憶装置を備えて構成される。コントローラは、ホスト計算機からデータの書込み要求とともに書込みデータを受信すると、書込みデータをキャッシュメモリに書き込み、書込み完了通知（ＡＣＫ）をホスト計算機に送信する。その後、コントローラはキャッシュメモリに書き込んだ書込みデータをホスト計算機からのＩ／Ｏとは非同期で記憶装置に転送する。【０００４】
一方コントローラは、ホスト計算機からの読出し要求を受信すると、読出しデータがキャッシメモリに格納されている場合には記憶装置に対してアクセスせず、キャッシュメモリから読出しデータを読み取ってホスト計算機に転送する。キャッシュメモリに読出しデータが格納されてない場合にのみ、コントローラは記憶装置から読出しデータを読み取ってホスト計算機に転送する。【０００５】
ストレージシステムでは、このようにキャッシュメモリを用いることにより、記憶装置の処理速度がホスト計算機の処理速度に比較して遅い場合であっても、記憶装置の処理速度がホスト計算機の業務に影響を与えないように制御される。【０００６】
ここでホスト計算機は、コントローラからＡＣＫを受信すると、問題なくデータが記憶装置に書き込まれたものと判断して、ホスト計算機内のメモリから書込みデータを削除する。しかし実際には、コントローラ内のキャッシュメモリから記憶装置にデータの転送がまだ完了されておらず、この期間にストレージシステムの電源が何らかの事由により遮断された場合、キャッシュメモリに書き込まれた書込みデータを損失してしまう。損失した書込みデータは、たとえ電源が復旧したとしても再生が困難となる。【０００７】
そこで、このキャッシュメモリに書き込まれた書込みデータを保護する対策のひとつとして、不揮発メモリにデータを退避させるデータ退避方法がある（特許文献１及び２参照）。【０００８】
特許文献１及び２には、電源遮断時に揮発メモリであるキャッシュメモリに書き込まれた書込みデータを不揮発メモリに退避させ、電源復旧時には不揮発メモリに退避させた書込みデータをキャッシュメモリにリストアする方法が開示されている。この方法により、電源遮断時にキャッシュメモリに書き込まれたもののいまだ記憶装置には書き込まれていない書込みデータが損失してしまうことを防止することができるとしている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特許４９７７５５４号公報
【特許文献２】特開２００９‐７５７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、特許文献１及び２に記載のストレージシステムでは、複数のコントローラのそれぞれがキャッシュメモリ及び不揮発メモリを備えて構成されており、電源遮断時には各コントローラのそれぞれが自身の有するキャッシュメモリのデータを自身が備える不揮発メモリに退避する構成が採用されている。【００１１】
従って、電源遮断時に不揮発メモリへのデータ退避を行う場合、電源遮断時からデータ退避が完了するまでの間、データ退避を制御する複数のコントローラに電力を供給する必要があり、そのためのバッテリ装置をコントローラごとに搭載する必要がある。よってストレージシステムが大規模になるほど、データ退避に必要な電力量が増大し、大容量のバッテリ装置が必要になる。結果として、バッテリ装置が大型化する。【００１２】
本発明は以上の点を考慮してなされたもので、バッテリ装置を小型化し得るストレージシステム及びデータバックアップ方法を提案するものである。
【課題を解決するための手段】
【００１３】
かかる課題を解決するために、本発明におけるストレージシステムは、ホスト計算機と接続されるストレージシステムであって、記憶装置と、記憶装置とホスト計算機との間のデータ転送を制御する第１のコントローラと、第１のコントローラに接続され、記憶装置とホスト計算機との間のデータ転送を制御する第２のコントローラと、不揮発メモリと、バッテリ装置とを備え、第１のコントローラは、第１の揮発メモリを備え、第２のコントローラは、第２の揮発メモリを備え、電源が遮断された場合、バッテリ装置は、第１のコントローラ及び第２のコントローラに電力供給を開始し、第２のコントローラは、第１の揮発メモリに格納されているデータを第２の揮発メモリにコピーし、コピー完了後、第１のコントローラの動作を停止させるとともに第１のコントローラに対する電力供給を停止し、第２の揮発メモリに格納されているデータを不揮発メモリにコピーすることを特徴とする。【００１４】
またかかる課題を解決するために、本発明のデータバックアップ方法は、ホスト計算機と接続されるストレージシステムのデータバックアップ方法であって、ストレージシステムは、記憶装置と、記憶装置とホスト計算機との間のデータ転送を制御する第１のコントローラと、第１のコントローラに接続され、記憶装置とホスト計算機との間のデータ転送を制御する第２のコントローラと、不揮発メモリと、バッテリ装置とを備え、第１のコントローラは、第１の揮発メモリを備え、第２のコントローラは、第２の揮発メモリを備え、電源が遮断された場合、バッテリ装置が、第１のコントローラ及び第２のコントローラに電力供給を開始する第１のステップと、第２のコントローラが、第１の揮発メモリに格納されているデータを第２の揮発メモリにコピーし、コピー完了後、第１のコントローラの動作を停止させるとともに第１のコントローラに対する電力供給を停止し、第２の揮発メモリに格納されているデータを不揮発メモリにコピーする第２のステップとを備えることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、ストレージシステムに搭載するバッテリ装置を小型化することができる。
【図面の簡単な説明】
【００１６】
【図１】本実施の形態におけるデータ退避方法を説明する概念図である。
【図２】データ退避時にキャッシュ領域を確保する方法を説明する概念図である。
【図３】データ退避時にキャッシュ領域を確保する方法を説明する概念図である。
【図４】電源復旧時のキャッシュ制御方法を説明する概念図である。
【図５】ストレージシステムの全体構成図である。
【図６Ａ】バックアップテーブルの概念図である。
【図６Ｂ】バックアップテーブルの概念図である。
【図７Ａ】バックアップログの概念図である。
【図７Ｂ】バックアップログの概念図である。
【図８Ａ】ブロックデータのリード処理を示すフローチャートである。
【図８Ｂ】ブロックデータのリード処理を示すフローチャートである。
【図８Ｃ】ブロックデータ書込み処理を示すフローチャートである。
【図９Ａ】ファイルデータのリード処理を示すフローチャートである。
【図９Ｂ】ファイルデータのリード処理を示すフローチャートである。
【図９Ｃ】ファイルデータ書込み処理を示すフローチャートである。
【図１０Ａ】電源遮断時のデータ退避処理を示すフローチャートである。
【図１０Ｂ】電源遮断時のデータ退避処理を示すフローチャートである。
【図１０Ｃ】電源遮断時のデータ退避処理を示すフローチャートである。
【図１１Ａ】電源復旧時のデータリストア処理を示すフローチャートである。
【図１１Ｂ】電源復旧時のデータリストア処理を示すフローチャートである。
【図１１Ｃ】電源復旧時のデータリストア処理を示すフローチャートである。
【図１１Ｄ】データ故障時のデータリストア処理を示すフローチャートである。
【図１２】第２の実施の形態におけるストレージシステムの全体構成図である。
【図１３】優先度テーブルの概念図である。
【図１４】電源遮断時のデータ退避処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下図面について、本発明の一実施の形態を詳述する。
【００１８】
（１）第１の実施の形態
（１−１）本実施の形態の概要
図１は、本実施の形態におけるデータ退避方法を説明する概念図である。本実施の形態は、複数のコントローラを備えたストレージシステムにおいて電源遮断が発生した場合、複数のコントローラのうちの何れか一のコントローラが備えるキャッシュメモリに他のコントローラが保持するデータを集約し、集約したデータを一の不揮発メモリに一括して退避させる構成を採用することにより、複数のコントローラのそれぞれが個別にデータを不揮発メモリに退避させる場合と比較して、データ退避に必要な時間及び電力量を削減し、ストレージシステムに搭載するバッテリ装置を小型化しようとするものである。
【００１９】
具体的に本実施の形態におけるストレージシステム１は、バッテリ装置１６、第１のコントローラ（ＮＡＳ：Network Attached Storage コントローラ１１）、第２のコントローラ（ブロックコントローラ１２）及び不揮発メモリ（ＮＶＲＡＭ：Non Volatile RAM １２２）を備えて構成される。これらバッテリ装置１６、ＮＡＳコントローラ１１、ブロックコントローラ１２及びＮＶＲＡＭ１２２は、電源遮断時に以下の処理を実行する。
【００２０】
まずバッテリ装置１６は、ストレージシステム１に供給される電源が何らかの事由により遮断された場合、ＮＡＳコントローラ１１及びブロックコントローラ１２に対して電源の供給を開始する（ＳＰ１）。
【００２１】
次いでＮＡＳコントローラ１１は、第１のキャッシュメモリ（ＮＡＳキャッシュメモリ１１２）に格納されているデータをブロックコントローラ１２が備える第２のキャッシュメモリ（ブロックキャッシュメモリ１２５）に退避させる（ＳＰ２）。
【００２２】
一般にキャッシュメモリ間のデータ転送は、キャッシュメモリと不揮発メモリとの間のデータ転送よりも高速である。よってＮＡＳキャッシュメモリ１１２からブロックキャッシュメモリ１２５にデータを高速に転送し、転送が完了した後はＮＡＳコントローラ１１に対する電源供給を停止させることができる。
【００２３】
ブロックコントローラ１２は、ＮＡＳキャッシュメモリ１１２に格納されている全てのデータをブロックキャッシュメモリ１２５に退避させると、バッテリ装置１６によってＮＡＳコントローラ１１に電源を供給する必要がないと判断して、ＮＡＳコントローラ１１に電源の停止を指示する（ＳＰ３）。
【００２４】
ＮＡＳコントローラ１１は、ブロックコントローラ１２からの電源停止の指示を受信すると電源を停止する。バッテリ装置１６による電源供給が必要なくなった時点で電源を停止させることができるので、バッテリ装置１６の省電力化を図ることができる。
【００２５】
最後にブロックコントローラ１２は、ブロックキャッシュメモリ１２５に集約された全てのデータをＮＶＲＡＭ１２２に退避させて（ＳＰ４）、本実施の形態におけるデータ退避処理を終了する。
【００２６】
このように本実施の形態によれば、複数のコントローラのそれぞれが個別にキャッシュメモリから不揮発メモリにデータを退避させるのではなく、退避させるデータを複数のコントローラのうちの何れか一のコントローラが備えるキャッシュメモリに集約し、集約したデータを一の不揮発メモリに一括して退避させるようにし、一方で一のコントローラにデータの退避が完了した他のコントローラの電源を順次停止するようにしたので、不揮発メモリに退避させるために必要な時間及び電力量を削減することができる。
【００２７】
よって本実施の形態によれば、ストレージシステム１に搭載するバッテリ装置を小型化することができる。
【００２８】
図２は、データ退避処理においてキャッシュ領域を確保する方法を説明する概念図である。本実施の形態では、複数のコントローラのうちの何れか一のコントローラが備えるキャッシュメモリに他のコントローラが保持するデータを集約し、集約したデータを一の不揮発メモリに一括して退避させる構成を採用することから、集約先においてデータを集約可能とするキャッシュ領域を確保する必要がある。
【００２９】
図２の上段は、ストレージシステム１に電源が正常に供給されている通常時の構成を示す。通常時においてブロックキャッシュメモリ１２５には、ブロックデータＤ２、ファイルＯＳプログラムＰ１及びブロックＯＳプログラムＰ２が格納される。
【００３０】
なおブロックデータＤ２とは、ブロックコントローラ１２によりブロック単位で転送制御されるユーザデータである。ファイルＯＳプログラムＰ１とは、ファイルデータＤ１の読み書きを制御するためのプログラムである。ファイルデータＤ１とは、ＮＡＳコントローラ１１によりファイル単位で転送制御されるユーザデータである。またブロックＯＳプログラムＰ２とは、ブロックデータの読み書きを制御するためのプログラムである。
【００３１】
ＮＡＳキャッシュメモリ１１２には、ファイルデータＤ１が格納される。またフラッシュメモリ１２４には、ファイルＯＳプログラムＰ１、ブロックＯＳプログラムＰ２及びストアモードプログラムＰ３が格納される。なおストアモードプログラムＰ３とは、停電時にデータを退避させるためのプログラムである。
【００３２】
通常時においては、フラッシュメモリ１２４に格納されているファイルＯＳプログラムＰ１及びブロックＯＳプログラムＰ２は、ブロックキャッシュメモリ１２５に展開されることが示されている。
【００３３】
図２の下段は、ストレージシステム１に供給される電源が遮断された停電時の構成を示す。停電時においては、データ退避処理に関する制御を除いて、ファイルデータＤ１及びブロックデータＤ２を制御する必要はないため、ブロックキャッシュメモリ１２５にファイルＯＳプログラムＰ１及びブロックＯＳプログラムＰ２を展開しておく必要がない。
【００３４】
そこで本実施の形態において停電時には、ファイルＯＳプログラムＰ１が展開されている記憶領域にファイルデータＤ１を上書きして格納し、ブロックＯＳプログラムＰ２が展開されている記憶領域にはストアモードプログラムＰ３を上書きして展開する。
【００３５】
このような構成を採用することにより、集約先に大容量のキャッシュメモリを搭載しなくとも、停電時に集約先のキャッシュ領域を確保することができる。
【００３６】
図３は、データ退避処理においてキャッシュ領域を確保する他の方法を説明する概念図である。ここでは図２において説明した方法でキャッシュ領域を確保することができない場合にキャッシュ領域を確保する方法について説明する。
【００３７】
図３の上段は、図２の上段と同様、ストレージシステム１に電源が正常に供給されている通常時の構成を示す。図３の上段の構成は、ファイルデータＤ１のサイズがファイルＯＳプログラムＰ１のサイズよりも大きい点で、図２の上段の構成と異なる。従って停電時において、ファイルＯＳプログラムＰ１が展開されている記憶領域にファイルデータＤ１をそのまま上書きすることができない。
【００３８】
図３の下段は、図２の下段と同様、ストレージシステム１に供給される電源が遮断された停電時の構成を示す。ファイルデータＤ１のサイズが大きいため、ファイルＯＳプログラムＰ１が展開されている記憶領域にファイルデータＤ１をそのまま上書きして格納することができない。従ってここではまず、ブロックデータＤ２の一部をＮＶＲＡＭ１２２に退避させてブロックキャッシュメモリ１２５の記憶領域を空けて、その後ファイルデータＤ１をブロックキャッシュメモリ１２５に退避させるようにしている。
【００３９】
ＮＶＲＡＭ１２２に先に退避させるデータはブロックデータＤ２の全てではなく一部であるから、退避させるために多くの時間が必要となることはない。
【００４０】
このような構成を採用することにより、たとえファイルデータＤ１のサイズが大きい場合であっても、停電時に集約先のキャッシュ領域を確保することができる。
【００４１】
図４は、電源復旧時のキャッシュ制御方法を説明する概念図である。本実施の形態では、停電時にデータを退避させる際、バッテリ装置の小型化を実現するため、１つのバッテリ装置からの電源供給によって複数のコントローラを動作させる構成を採用する。そのためデータを退避させた直後のバッテリ装置の充電容量は、たとえ省電力化を図っても、大きく減少している場合が考えられる。電源が復旧した直後の充電容量が大きく減少している状態でダーティデータを存在させておくと、再び停電が発生した場合、データの退避が完了するまでにバッテリ装置からの電源供給が遮断してしまい、データが損失する場合が考えられる。従って電源が復旧してからしばらくは、バッテリ装置の充電容量に応じてキャッシュ制御する必要がある。
【００４２】
そこでストレージシステム１は、バッテリ装置の充電容量を監視するマネジメントコントローラ１２１を備えて構成される。マネジメントコントローラ１２１は、電源が復旧すると、バッテリ装置の充電容量を監視し（ＳＰ５）、バッテリ装置の充電容量をブロックコントローラ１２に通知する（ＳＰ６）。
【００４３】
ブロックコントローラ１２は、マネジメントコントローラ１２１から通知される充電容量に応じて、ＮＡＳキャッシュメモリ１１２及びブロックキャッシュメモリ１２５のキャッシュ制御を実行する。
【００４４】
具体的にブロックコントローラ１２は、バッテリ装置の充電容量が０％の場合、ファイルデータＤ１及びブロックデータＤ２の何れについてもキャッシュ制御をＯＦＦにして、ＨＤＤ１５に書き込んだ時点でＡＣＫを返すように制御する（ＳＰ７）。
【００４５】
またブロックコントローラ１２は、バッテリ装置の充電容量が１０％の場合、ファイルデータＤ１についてはＮＡＳキャッシュ制御をＯＮにして、ＮＡＳキャッシュメモリ１１２に書き込んだ時点でＡＣＫを返すように制御し、一方ブロックファイルＤ２についてはブロックキャッシュ制御をＯＦＦにして、ＨＤＤ１５に書き込んだ時点でＡＣＫを返すように制御する（ＳＰ８）。
【００４６】
充電容量が低い段階でＮＡＳキャッシュ制御だけをＯＮにする理由は、一般にファイルデータＤ１の方がブロックデータＤ２よりもサイズが小さいため、たとえ充電容量が低い段階でＮＡＳキャッシュ制御をＯＮにして、その直後に停電が発生した場合であっても、ファイルデータＤ１を適切に退避させることができるためである。
【００４７】
またブロックコントローラ１２は、バッテリ装置の充電容量が６０％以上となった場合、ブロックデータＤ２についてのキャッシュ制御もＯＮにして、ブロックキャッシュメモリ１２５に書き込んだ時点でＡＣＫを返すように制御する（ＳＰ９）。
【００４８】
このように電源復旧後は、バッテリ装置の充電容量に応じて段階的にキャッシュ制御を実行するようにすることで、データの損失を防止するとともに、ストレージシステム１の性能の向上を図ることができる。
【００４９】
以下図面を参照して、本実施の形態におけるストレージシステム及びデータバックアップ方法の詳細について説明する。
【００５０】
（１−２）全体構成
図５は、本実施の形態におけるストレージシステム１の全体構成を示す。ストレージシステム１は、複数のストレージ装置１０及び２０がクラスタ化されて構成されるシステムであり、交流電源１００から供給される電源によって動作する。
【００５１】
ストレージ装置１０は、電源供給ユニット１０１、ＮＡＳコントローラ１１、ブロックコントローラ１２、ホストコントローラ１３、Ｉ／Ｏコントローラ１４、ＨＤＤ（Hard Disk Drive）１５及びバッテリ装置１６から構成される。
【００５２】
電源供給ユニット１０１は、交流電源１００から供給される交流を直流に変換し、変換した直流をストレージ装置１０に給電する装置である。
【００５３】
ＮＡＳコントローラ１１は、ＣＰＵ（Central Processing Unit）１１１及びＮＡＳキャッシュメモリ１１２から構成される。ＣＰＵ１１１は、ＮＡＳコントローラ１１の動作を統括的に制御するプロセッサである。ＮＡＳキャッシュメモリ１１２は、ＮＡＳコントローラ１１用のキャッシュメモリである。
【００５４】
ＮＡＳコントローラ１１は、ホストサーバ２０２から書込み要求とともにファイル単位で書込みデータを受信すると、受信した書込みデータをＮＡＳキャッシュメモリ１１２に書き込んだ時点で、ホストサーバ２０２に書き込みが完了したことを宣言（コミット）する。ＮＡＳコントローラ１１がＮＡＳキャッシュメモリ１１２を備えることにより、例えばＮＡＳキャッシュメモリ１１２をブロックキャッシュメモリ１２５に統合した場合と比較して、ホストサーバ２０２に対するレスポンス性能を向上させることができる。
【００５５】
ブロックコントローラ１２は、マネジメントコントローラ１２１、ＮＶＲＡＭ１２２、ＣＰＵ１２３、フラッシュメモリ１２４及びブロックキャッシュメモリ１２５から構成される。
【００５６】
マネジメントコントローラ１２１は、ブロックコントローラ１２の環境を常時監視し、本実施の形態においては特にブロックコントローラ１２に対する給電状態を監視する。マネジメントコントローラ１２１は、何らかの事由により電源が遮断された場合、電源遮断を検知するとともに、ＮＡＳコントローラ１１、ホストコントローラ１３及びＩ／Ｏコントローラ１４の各コントローラに省電力処理を実行するように要求する。
【００５７】
ＮＶＲＡＭ１２２は、電源を供給しなくとも記憶を維持することのできる不揮発メモリであり、電源遮断時にブロックキャッシュメモリ１２５に格納されているデータを退避させるための不揮発メモリである。
【００５８】
ＣＰＵ１２３は、ブロックコントローラ１２の動作を統括的に制御するプロセッサである。またＣＰＵ１２３は、電源遮断時にデータを退避させるためのプログラムを備え、このプログラムに基づいて、データを退避させる処理を実行する。またＣＰＵ１２３は、ＮＡＳコントローラ１１、ホストコントローラ１３及びＩ／Ｏコントローラ１４の各種コントローラに接続される。
【００５９】
フラッシュメモリ１２４は、電源を供給しなくとも記憶を維持することのできる不揮発メモリであり、電源遮断時にＮＶＲＡＭ１２２にデータを退避させたときのログ（バックアップログ）を格納する。ＮＶＲＡＭ１２２とは別にフラッシュメモリ１２４を設けることで、ＮＶＲＡＭ１２２が故障した場合であってもバックアップログを格納することができる。
【００６０】
ブロックキャッシュメモリ１２５は、ブロックコントローラ１２用のキャッシュメモリである。ブロックキャッシュメモリ１２５は、各種プログラムを保持し、本実施の形態においては特に電源遮断時にデータを退避させるためのプログラムを保持する。
【００６１】
ホストコントローラ１３は、ホストサーバ２０１と接続するためのインタフェースであり、ホストサーバ２０１からの読書き要求を受信してＣＰＵ１２３に転送する。
【００６２】
Ｉ／Ｏコントローラ１４は、ＨＤＤ１５と接続するためのインタフェースであり、ホストサーバ２０１又は２０２からの読出し要求に対応する読出しデータをＨＤＤ１５から読み出す。またＩ／Ｏコントローラ１４は、書込み要求に対応する書込みデータをＨＤＤ１５に書き込む。
【００６３】
ＨＤＤ１５は、一又は複数のＨＤＤから構成される記憶装置であり、データを長期的に記憶するための記憶装置である。
【００６４】
バッテリ装置１６は、通常時は充電し、電源遮断時にはストレージ装置１０を構成する各部に電源を供給するための装置である。
【００６５】
ストレージ装置２０は、上述してきたストレージ装置１０と同様の構成であり、ストレージ装置１０と同一の動作を実行するため、ここでの説明は省略する。
【００６６】
（１−３）各種情報の詳細
図６Ａは、バックアップテーブル１２５１の概念図を示す。バックアップテーブル１２５１は、交流電源１００から電源が正常に供給されている通常時において、ブロックコントローラ１２により退避させるデータの種別ごとに作成され、ブロックキャッシュメモリ１２５に格納される。バックアップテーブル１２５１は、データ退避処理（図１０Ａ〜図１０Ｃ）においてＮＶＲＡＭ１２２に退避させるデータを特定するために用いられる。
【００６７】
具体的にバックアップテーブル１２５１は、アドレス欄１２５１１及びテーブル名欄１２５１２から構成される。アドレス欄１２５１１には、ブロックキャッシュメモリ１２５内のアドレスが格納される。またテーブル名欄１２５１２には、退避させるデータの種別が特定できるような名称のバックアップテーブルが格納される。
【００６８】
従って図６Ａの場合、例えばブロックキャッシュメモリ１２５内のアドレス「０×００」には「ブロックデータバックアップテーブルＴ１」という名称のバックアップテーブルが格納されており、このブロックデータバックアップテーブルＴ１は、ブロックデータを退避させる際に用いられるテーブルであることが示されている。
【００６９】
図６Ｂは、ブロックデータバックアップテーブルＴ１の詳細を示す。ブロックデータバックアップテーブルＴ１は、ビット欄Ｔ１１、シンボル欄Ｔ１２及び値欄Ｔ１３から構成される。ビット欄Ｔ１１には、ここでは６３〜０のビット数が格納される。シンボル欄Ｔ１２には、ビットに格納される情報の要約が格納される。値欄Ｔ１３には、ビットに格納される値が格納される。
【００７０】
従って図６Ｂの場合、ビット数が「６３」には、「Ｖａｌｉｄ」の情報が格納されることが示されており、具体的にはこのブロックデータバックアップテーブルＴ１が無効であることを示す「０」又は有効であることを示す「１」のうち、何れかの値が格納されることが示されている。
【００７１】
またビット数が「６２：１６」には、「Ｂａｓｅ  Ａｄｄｒｅｓｓ」の情報が格納されることが示されており、具体的にはバックアップ対象メモリ（ここではブロックキャッシュメモリ１２５）の開始アドレスが格納されることが示されている。
【００７２】
またビット数が「１５」には、「Ｄｉｒｔｙ  Ｏｎｌｙ」の情報が格納されることが示されており、具体的にはブロックキャッシュメモリ１２５に格納されているデータのうち、退避データをダーティデータのみとする「１」又は全データとする「０」のうち、何れかの値が格納されることが示されている。退避データをダーティデータのみとする場合、ＮＶＲＡＭ１２２を小容量化することができる。またデータ退避処理にかかる時間を短縮して省電力化を図ることができる。
【００７３】
ビット数が「１４：１１」は、「Ｒｅｓｅｖｅｄ」であり未使用であることが示されている。またビット数が「１０：０」には、「Ｓｉｚｅ」の情報が格納されることが示されており、具体的には退避させるデータのサイズが格納されることが示されている。例えばベースアドレスが「０」であり、このビット数「１０：０」に「１」が格納されている場合、１ＧＢのデータが退避させる範囲として指定されていることを意味する。
【００７４】
図７Ａは、バックアップログ１２２１の概念図を示す。バックアップログ１２２１は、バッテリ装置１６から電源が供給されている停電時にデータを退避した場合、ブロックコントローラ１２により退避したデータの種別ごとに作成され、ＮＶＲＡＭ１２２に格納される。またバックアップログ１２２１は、電源復旧時のデータリストア処理（図１１Ａ〜図１１Ｃ）においてＮＶＲＡＭ１２２からリストアするデータを特定するために用いられる。
【００７５】
具体的にバックアップログ１２２１は、アドレス欄１２２１１及びログ名欄１２２１２から構成される。アドレス欄１２２１１には、ＮＶＲＡＭ１２２内のアドレスが格納される。またログ名欄１２２１２には、リストアするデータの種別が特定できるような名称のバックアップログが格納される。
【００７６】
従って図７Ａの場合、例えばＮＶＲＡＭ１２２内のアドレス「０×００」には「ブロックデータバックアップログＬ１」という名称のバックアップログが格納されており、このブロックデータバックアップログＬ１は、ブロックデータが退避されたこと及びブロックデータをリストアする際に用いられるテーブルであることが示されている。
【００７７】
図７Ｂは、ブロックデータバックアップログＬ１の詳細を示す。ブロックデータバックアップログＬ１は、ビット欄Ｌ１１、シンボル欄Ｌ１２及び値欄Ｌ１３から構成される。ビット欄Ｌ１１には、ここでは６３〜０のビット数が格納される。シンボル欄Ｌ１２には、ビットに格納される情報の要約が格納される。値欄Ｌ１３には、ビットに格納される値が格納される。
【００７８】
従って図７Ｂの場合、ビット数が「６３」には、「Ｖａｌｉｄ」の情報が格納されることが示されており、具体的にはこのブロックデータバックアップログＬ１が無効であることを示す「０」又は有効であることを示す「１」のうち、何れかの値が格納されることが示されている。
【００７９】
またビット数が「６２：１６」には、「Ｂａｓｅ  Ａｄｄｒｅｓｓ」の情報が格納されることが示されている。「Ｂａｓｅ  Ａｄｄｒｅｓｓ」の情報とは、具体的にはバックアップ先のメモリ（ここではＮＶＲＡＭ１２２）の開始アドレスである。
【００８０】
またビット数が「１５」には、「Ｄｉｒｔｙ  Ｏｎｌｙ」の情報が格納されることが示されており、具体的にはＮＶＲＡＭ１２２に格納されているデータのうち、退避したデータはダーティデータのみであることを示す「１」又は全データであることを示す「０」のうち、何れかの値が格納されることが示されている。
【００８１】
ビット数が「１４」には、「ＮＶＲＡＭ」の情報が格納されることが示されており、具体的には退避データがＮＶＲＡＭ１２２に格納済みであることを示す「１」又はブロックキャッシュメモリ１２５に存在することを示す「０」のうち、何れかの値が格納されることが示されている。「０」が格納されるケースとしては、データ退避処理中に電源が復旧してＮＶＲＡＭ１２２にデータを退避させなかったケースである。
【００８２】
ビット数が「１３：１１」には、「Ｅｒｒｏｒ」の情報が格納されることが示されており、具体的にはデータ退避処理時にエラーが発生しているためこのログにより特定されるデータは故障していることを示す「１１１」又はデータ退避処理は正常に完了したことを示す「０００」のうち、何れかの値が格納されることが示されている。
【００８３】
ビット数が「１０：０」には、「Ｓｉｚｅ」の情報が格納されることが示されており、具体的には退避させたデータのサイズが格納されることが示されている。
【００８４】
（１−４）フローチャート
図８Ａは、ブロックデータを読み出すリード処理の処理手順を示す。このリード処理は、ホストサーバ２０１からブロックコントローラ１２に読出し要求が送信されたことを契機として、ホストサーバ２０１及びブロックコントローラ１２により実行される。なお実際にはホストサーバ２０１が備える図示しないＣＰＵ及びブロックコントローラ１２が備えるＣＰＵ１２３により実行されるが、ここでは説明の便宜上、処理主体をホストサーバ２０１及びブロックコントローラ１２として説明する。
【００８５】
まずホストサーバ２０１は、ブロックコントローラ１２に読出し要求（リード要求）を送信する（ＳＰ１１）。次いでブロックコントローラ１２は、ホストサーバ２０１からのリード要求を受信すると、リード要求に対応するデータ（リードデータ）がブロックキャッシュメモリ１２５に記憶されているか否かを判断し（キャッシュヒット又はキャッシュミス）、キャッシュヒットの場合（ＳＰ１２）、リードデータをＨＤＤ１５からではなくブロックキャッシュメモリ１２５から読み出す。
【００８６】
そしてブロックコントローラ１２は、ブロックキャッシュメモリ１２５から読み出したリードデータをホストサーバ２０１に送信する（ＳＰ１３）。ホストサーバ２０１は、ブロックコントローラ１２からのリードデータを受信して（ＳＰ１４）、本処理を終了する。
【００８７】
図８Ｂは、ブロックデータを読み出すリード処理の処理手順を示す。このリード処理は、リードデータがブロックキャッシュメモリ１２５に記憶されていないキャッシュミスの場合のリード処理である点及びＨＤＤ１５も処理主体となる点で、図８Ａに示すリード処理と異なる。
【００８８】
ホストサーバ２０１がブロックコントローラ１２にリード要求を送信し（ＳＰ２１）、ブロックコントローラ１２がキャッシュヒット又はキャッシュミスを判断するまでは、図８Ａに示すリード処理と同様である。キャッシュミスの場合（ＳＰ２２）、ブロックコントローラ１２は、リード要求をＨＤＤ１５に送信する（ＳＰ２３）。
【００８９】
ＨＤＤ１５は、ブロックコントローラ１２からのリード要求を受信すると、受信したリード要求に対応するリードデータをブロックコントローラ１２に送信する（ＳＰ２４）。ブロックコントローラ１２は、ＨＤＤ１５からのリードデータを受信すると、受信したリードデータをホストサーバ２０１に送信する（ＳＰ２５）。ホストサーバ２０１は、ブロックコントローラ１２からのリードデータを受信して（ＳＰ２６）、本処理を終了する。
【００９０】
図８Ｃは、ブロックデータを書き込むライト処理の処理手順を示す。このライト処理は、ホストサーバ２０１からブロックコントローラ１２に書込み要求が送信されたことを契機として、ホストサーバ２０１、ブロックコントローラ１２及びＨＤＤ１５により実行される。
【００９１】
まずホストサーバ２０１は、ブロックコントローラ１２に書込み要求（ライト要求）を送信する（ＳＰ３１）。ブロックコントローラ１２は、ホストサーバ２０１からのライト要求を受信すると、ライト要求に対応するデータ（ライトデータ）をブロックキャッシュメモリ１２５に書き込むとともに、ミラーリング処理を実行する（ＳＰ３２）。
【００９２】
ここでのミラーリング処理は、クラスタ化された他方のストレージ装置２０内のブロックキャッシュメモリ２２５にライトデータを書き込む処理をいう。
【００９３】
次いでブロックコントローラ１２は、ホストサーバ２０１にライト応答を送信する（ＳＰ３３）。ホストサーバ２０１は、ライト応答を受信すると（ＳＰ３４）、実際にはライトデータはＨＤＤ１５に書き込まれていないが、書き込みは完了したものと判断する。
【００９４】
ブロックコントローラ１２は、ライト応答の送信とは非同期で、ライトデータをＨＤＤ１５に送信する（ＳＰ３５）。ＨＤＤ１５は、ブロックコントローラ１２からのライトデータを受信すると、ライトデータを書き込むライト処理を実行し（ＳＰ３６）、その後ライト応答をブロックコントローラ１２に送信する（ＳＰ３７）。
【００９５】
ブロックコントローラ１２は、ＨＤＤ１５からのライト応答を受信すると、このライト応答に対応するライトデータのキャッシュ管理をダーティからクリーンに変更して（ＳＰ３８）、本処理を終了する。
【００９６】
図９Ａは、ファイルデータを読み出すリード処理の処理手順を示す。このリード処理は、ホストサーバ２０２からＮＡＳコントローラ１１にリード要求が送信されたことを契機として、ホストサーバ２０２及びＮＡＳコントローラ１１により実行される。なお実際にはホストサーバ２０２が備える図示しないＣＰＵ及びＮＡＳコントローラ１１が備えるＣＰＵ１１１により実行されるが、ここでは説明の便宜上、処理主体をホストサーバ２０２及びＮＡＳコントローラ１１として説明する。
【００９７】
まずホストサーバ２０２は、ＮＡＳコントローラ１１にリード要求を送信する（ＳＰ４１）。次いでＮＡＳコントローラ１１は、ホストサーバ２０２からのリード要求を受信すると、リード要求に対応するリードデータがＮＡＳキャッシュメモリ１１２に記憶されているか否かを判断し（キャッシュヒット又はキャッシュミス）、キャッシュヒットの場合（ＳＰ４２）、ＮＡＳキャッシュメモリ１１２から読み出す。
【００９８】
そしてＮＡＳコントローラ１１は、ＮＡＳキャッシュメモリ１１２から読み出したリードデータをホストサーバ２０２に送信する（ＳＰ４３）。ホストサーバ２０２は、ＮＡＳコントローラ１１からのリードデータを受信して（ＳＰ４４）、本処理を終了する。
【００９９】
図９Ｂは、ファイルデータを読み出すリード処理の処理手順を示す。このリード処理は、リードデータがＮＡＳキャッシュメモリ１１２に記憶されていないキャッシュミスの場合のリード処理である点並びにブロックコントローラ１２及びＨＤＤ１５も処理主体となる点で、図９Ａに示すリード処理と異なる。
【０１００】
ホストサーバ２０２がＮＡＳコントローラ１１にリード要求を送信し（ＳＰ５１）、ＮＡＳコントローラ１１がキャッシュヒット又はキャッシュミスを判断するまでは、図４Ａに示すリード処理と同様である。キャッシュミスの場合（ＳＰ５２）、ＮＡＳコントローラ１１は、リード要求をブロックコントローラ１２に送信する（ＳＰ５３）。
【０１０１】
ブロックコントローラ１２は、ＮＡＳコントローラ１１からのリード要求を受信すると、ＨＤＤ１５とともにリード処理を実行し（ＳＰ５４）、リードデータをＮＡＳコントローラ１１に送信する（ＳＰ５５）。ここでのリード処理（ＳＰ５４）及びリードデータの送信処理（ＳＰ５５）は、上述した図８ＡのステップＳＰ１２及びＳＰ１３又は図８ＢのステップＳＰ２２〜ＳＰ２５と同様である。
【０１０２】
すなわちブロックコントローラ１２は、キャッシュヒットの場合、ブロックキャッシュメモリ１２５からリードデータを読み出してＮＡＳコントローラ１１に送信し、キャッシュミスの場合、ＨＤＤ１５からリードデータを読み出してＮＡＳコントローラ１１に送信する。
【０１０３】
次いでＮＡＳコントローラ１１は、ブロックコントローラ１２からのリードデータを受信すると、受信したリードデータをホストサーバ２０２に送信する（ＳＰ５６）。ホストサーバ２０２は、ＮＡＳコントローラ１１からのリードデータを受信して（ＳＰ５７）、本処理を終了する。
【０１０４】
図９Ｃは、ファイルデータを書き込むライト処理の処理手順を示す。このライト処理は、ホストサーバ２０２からＮＡＳコントローラ１１にライト要求が送信されたことを契機として、ホストサーバ２０２、ＮＡＳコントローラ１１、ブロックコントローラ１２及びＨＤＤ１５により実行される。
【０１０５】
まずホストサーバ２０２は、ＮＡＳコントローラ１１にライト要求を送信する（ＳＰ６１）。ＮＡＳコントローラ１１は、ホストサーバ２０２からのライト要求を受信すると、ライト要求に対応するライトデータをＮＡＳキャッシュメモリ１１２に書き込むとともに、ミラーリング処理を実行する（ＳＰ６２）。
【０１０６】
ここでのミラーリング処理は、クラスタ化された他方のストレージ装置２０内のＮＡＳキャッシュメモリ２１２においてもライトデータを書き込む処理をいう。
【０１０７】
次いでＮＡＳコントローラ１１は、ホストサーバ２０２にライト応答を送信する（ＳＰ６３）。ホストサーバ２０２は、ライト応答を受信すると（ＳＰ６４）、実際にはライトデータはＨＤＤ１５に書き込まれていないが、書き込みは完了したものと判断する。
【０１０８】
ＮＡＳコントローラ１１は、ライト応答の送信とは非同期で、ライトデータをブロックコントローラ１２に送信する（ＳＰ６５）。ブロックコントローラ１２は、ＮＡＳコントローラ１１からのライトデータを受信すると、ＨＤＤ１５とともにライト処理を実行し（ＳＰ６６）、ライト応答をＮＡＳコントローラ１１に送信する（ＳＰ６７）。
【０１０９】
ここでのライト処理（ＳＰ６６）及びライト応答の送信処理（ＳＰ６７）は、上述した図８ＣのステップＳＰ３５〜ＳＰ３７と同様である。すなわちブロックコントローラ１２は、ＨＤＤ１５にライトデータを書き込み、ライト応答をＮＡＳコントローラ１１に送信する。
【０１１０】
ＮＡＳコントローラ１１は、ブロックコントローラ１２からのライト応答を受信すると、このライト応答に対応するライトデータのキャッシュ管理をダーティからクリーンに変更して（ＳＰ６８）、本処理を終了する。
【０１１１】
図１０Ａ〜図１０Ｃは、電源遮断時におけるデータ退避処理の処理手順を示す。このデータ退避処理は、何らかの事由により交流電源１００からの電源供給が遮断されたことを契機として、主としてバッテリ装置１６、ブロックコントローラ１２及びＮＡＳコントローラ１１により実行される。
【０１１２】
交流電源１００は通常時、ストレージ装置１０の各部に電源を供給しているが（ＳＰ７１）、停電が発生すると電源供給を停止する（ＳＰ７２）。交流電源１００からの電源供給が停止し、電源供給ユニット１０１から供給される直流電源が停止すると、バッテリ装置１６は電源供給を開始する（ＳＰ７３）。
【０１１３】
マネジメントコントローラ１２１は、ブロックコントローラ１２に供給される電源の状態を常時監視しており、停電が発生したことを検知すると（ＳＰ７４）、ブロックコントローラ１２においてデータ退避に必要な機能以外の未使用機能にかかる構成の電源を停止して省電力処理を実行する。
【０１１４】
またマネジメントコントローラ１２１は、他のコントローラにおいても省電力処理を実行するようにＮＡＳコントローラ１１、ホストコントローラ１３及びＩ／Ｏコントローラ１４に省電力要求を送信する（ＳＰ７５）。
【０１１５】
ＮＡＳコントローラ１１は、マネジメントコントローラ１２１からの省電力要求を受信すると、ＮＡＳコントローラ１１においてデータ退避に必要な機能以外の未使用機能にかかる構成の電源を停止して省電力処理を実行する（ＳＰ７６）。
【０１１６】
またホストコントローラ１３及びＩ／Ｏコントローラ１４は、マネジメントコントローラ１２１からの省電力要求を受信すると、このデータ退避処理において全ての機能は使用されないため、コントローラ自体の電源を停止することにより省電力処理を実行する（ＳＰ７７）。
【０１１７】
上述のステップＳＰ７４〜ＳＰ７７のように各コントローラのそれぞれが省電力処理を実行することにより、小型化したバッテリ装置１６であっても、データ退避に必要な電源を長時間供給することができるようになる。
【０１１８】
マネジメントコントローラ１２１は、省電力処理を各コントローラに要求した後、ＣＰＵ１２３に割込み処理の実行を要求するため割りこみを発行する（ＳＰ７８）。
【０１１９】
ＣＰＵ１２３は、停電時にバックアップ（退避）する対象を設定するためにバックアップテーブルを予め設定しておき（ＳＰ７９）、ステップＳＰ７８においてマネジメントコントローラ１２１から割り込みが発行されると、割込み処理を実行する（ＳＰ８０）。
【０１２０】
具体的にＣＰＵ１２３は、割込み発行を受信すると、現在実行中の処理を停止し、ＣＰＵ１２３のキャッシュフラッシュ、ブロックキャッシュメモリ１２５のセルフリフレッシュ及びブロックコントローラ１２のリブートを実行する。
【０１２１】
ＣＰＵ１２３のキャッシュフラッシュとは、ＣＰＵ１２３が備える図示しないキャッシュメモリ（１次キャッシュ及び２次キャッシュとも呼ばれる）に格納されているデータをブロックキャッシュメモリ１２５に書き込む処理である。キャッシュフラッシュを実行することにより、ＣＰＵ１２３をリブートした場合にＣＰＵ１２３内のデータが損失してしまうことを防止することができる。
【０１２２】
ブロックキャッシュメモリ１２５のセルフリフレッシュとは、ブロックキャッシュメモリ１２５の設定をセルフリフレッシュ設定に切り替える処理である。このセルフリフレッシュ設定とは、ブロックキャッシュメモリ１２５を省電力状態にする設定であり、またリブートの前後でデータを維持する設定である。セルフリフレッシュ設定にすることで、ＣＰＵ１２３がリブートした場合にリブートの前後で省電力状態を維持しつつデータを引き継ぐことができる。
【０１２３】
ブロックコントローラ１２のリブートは、例えばＣＰＵ１２３が複数のコアにより構成されている場合、省電力状態とするために１コアだけを動作させて他のコアを停止するために実行される。
【０１２４】
ＣＰＵ１２３は、上述の省電力設定をハードウェア的に実行させるため、ブロックコントローラ１２をリブートし（ＳＰ８１）、またＣＰＵ１２３をリブートする（ＳＰ８２）。
【０１２５】
次いでＣＰＵ１２３は、省電力処理を実行する（ＳＰ８３）。具体的にＣＰＵ１２３は、リブート後にセルフリフレッシュ設定を解除し、ストアモードで起動する。ストアモードとは、ＣＰＵ１２３を構成する複数のコアのうちの１コアを除いて、他のコアをスリープ又はリセット状態にし、さらに動作させる１コアの周波数を低下させて、ＣＰＵ１２３全体の消費電力を削減するモードである。
【０１２６】
次いでＣＰＵ１２３は、マネジメントコントローラ１２１により、電源が復旧したか否かを判断する（ＳＰ８４）。ＣＰＵ１２３は、この判断で肯定結果を得ると、ＣＰＵ１２３を構成する全てのコアを起動してＣＰＵ１２３の周波数を定常化することにより省電力状態を解除する（ＳＰ８５）。
【０１２７】
次いでＣＰＵ１２３は、バッテリ装置１６の容量を確認して、１回分のストアが可能な容量が残っている場合にバックアップログを作成する（ＳＰ８６）。そしてＣＰＵ１２３はＯＳをブートして（ＳＰ８７）、本処理を終了する。
【０１２８】
なおバッテリ装置１６の容量を確認してＯＳをブートする理由は、再度の停電に対応できるようにするためである。
【０１２９】
これに対し、ＣＰＵ１２３はステップＳＰ８４の判断で否定結果を得ると、ストア処理を開始する（ＳＰ８８）。まずＣＰＵ１２３は、バックアップテーブルを参照して（ＳＰ８９）、ＮＡＳキャッシュメモリ１１２に格納されているデータはバックアップ対象であるか否かを判断する（ＳＰ９０）。
【０１３０】
ＣＰＵ１２３は、ステップＳＰ９０の判断で否定結果を得ると、ステップＳＰ９３に移行する。これに対し、ＣＰＵ１２３はステップＳＰ９０の判断で肯定結果を得ると、ＮＡＳコントローラ１１にリード要求を送信する。
【０１３１】
ＮＡＳコントローラ１１は、ＣＰＵ１２３からのリード要求を受信すると、ＮＡＳキャッシュメモリ１１２に格納されているファイルデータのうちのバックアップ対象データにＣＲＣ（Cyclic Redundancy Check）などの保障コードを付加し、これをブロックキャッシュメモリ１２５に送信する（ＳＰ９１）。
【０１３２】
ＮＡＳコントローラ１１が送信するデータに保証コードを付加する目的は、データ送信時のデータ故障及びＮＶＲＡＭ１２２内でのデータ故障を検出するためである。
【０１３３】
ＣＰＵ１２３は、ＮＡＳコントローラ１１からのデータをブロックキャッシュメモリ１２５に書き込んで、ＮＡＳキャッシュメモリ１１２のデータをブロックキャッシュメモリ１２５にコピーする（ＳＰ９２）。
【０１３４】
ＣＰＵ１２３は、ＮＡＳキャッシュメモリ１１２のデータをブロックキャッシュメモリ１２５にコピーする際、データに保障コードを付加する。このデータには、上述したようにＮＡＳコントローラ１１によって既に保障コードが付加されているが、ＣＰＵ１２３は、既に付加されている保障コード及びデータをひとまとまりのデータとして、さらに保障コードを付加する。
【０１３５】
ＣＰＵ１２３が保障コードをさらに付加する目的は、ＮＡＳコントローラ１１からのデータ送信時にデータが故障したのか、或いは、ＮＶＲＡＭ１２２内でデータが故障したのかを判別するためである。
【０１３６】
ＣＰＵ１２３は、ＮＡＳキャッシュメモリ１１２に格納されているバックアップ対象データのコピーが完了したか否かを判断する（ＳＰ９３）。ＣＰＵ１２３は、この判断で否定結果を得ると、ステップＳＰ９２に戻りコピーを繰り返す。
【０１３７】
これに対し、ＣＰＵ１２３はステップＳＰ９３の判断で肯定結果を得ると、省電力を図るためＮＡＳコントローラ１１に電源停止を指示する（ＳＰ９４）。ＮＡＳコントローラ１１は、この電源停止の指示を受信すると、電源を停止する（ＳＰ９５）。
【０１３８】
次いでＣＰＵ１２３は、バックアップログを作成し、作成したバックアップログをフラッシュメモリ１２４に格納する（ＳＰ９６）。
【０１３９】
次いでＣＰＵ１２３は、再度電源が復旧したか否かを判断する（ＳＰ９７）。ＣＰＵ１２３はこの判断で肯定結果を得ると、上述したステップＳＰ８５〜ＳＰ８７と同様、省電力状態を解除し（ＳＰ９８）、バックアップログを作成してフラッシュメモリ１２４に格納し（ＳＰ９９）、ＯＳをブートして（ＳＰ１００）、本処理を終了する。
【０１４０】
これに対し、ＣＰＵ１２３はステップＳＰ９７の判断で否定結果を得ると、バックアップテーブルを参照して（ＳＰ１０１）、ブロックキャッシュメモリ１２５に格納されているデータはバックアップ対象であるか否かを判断する（ＳＰ１０２）。
【０１４１】
ＣＰＵ１２３は、ステップＳＰ１０２の判断で否定結果を得ると、ステップＳＰ１０６に移行する。これに対し、ＣＰＵ１２３はステップＳＰ１０２の判断で肯定結果を得ると、ブロックキャッシュメモリ１２５に格納されているブロックデータのうちのバックアップ対象データにＣＲＣなどの保障コードを付加し（ＳＰ１０３）、これをＮＶＲＡＭ１２２に送信する（ＳＰ１０４）。
【０１４２】
ＮＶＲＡＭ１２２は、ブロックキャッシュメモリ１２５からのブロックデータを記憶した後、ＣＰＵ１２３にライト応答を送信する（ＳＰ１０５）。
【０１４３】
またＣＰＵ１２３は、ブロックキャッシュメモリ１２５に格納されているバックアップ対象のファイルデータをＮＶＲＡＭ１２２に送信する（ＳＰ１０６）。
【０１４４】
ＮＶＲＡＭ１２２は、ブロックキャッシュメモリ１２５からのファイルデータを記憶した後、ＣＰＵ１２３にライト応答を送信する（ＳＰ１０７）。
【０１４５】
ＣＰＵ１２３は、ブロックキャッシュメモリ１２５に記憶されている全てのバックアップ対象データをＮＶＲＡＭ１２２に送信した後、バックアップログを作成してフラッシュメモリ１２４に格納する（ＳＰ１０８）。
【０１４６】
そしてＣＰＵ１２３は、バッテリ装置１６に電源停止を指示する（ＳＰ１０９）。バッテリ装置１６は、ＣＰＵ１２３からの電源停止の指示を受信すると、電源を停止して（ＳＰ１１０）、本処理を終了する。
【０１４７】
図１１Ａ〜図１１Ｃは、電源回復時のデータリストア処理の処理手順を示す。このデータリストア処理は、停電後に電源が復旧したことを契機として、主としてブロックコントローラ１２により実行される。
【０１４８】
交流電源１００は停電時には電源を供給しておらず（ＳＰ１２１）、停電が復旧すると電源供給を開始する（ＳＰ１２２）。マネジメントコントローラ１２１は、停電が復旧したことを検知すると（ＳＰ１２３）、ブロックコントローラ１２の電源をＯＮにする（ＳＰ１２４）。
【０１４９】
ＣＰＵ１２３は、電源がＯＮされると、まずＣＰＵ１２３をブートし（ＳＰ１２５）、次いでＯＳをブートする（ＳＰ１２６）。そしてＣＰＵ１２３は、ＮＡＳコントローラ１１の電源をＯＮにする（ＳＰ１２７）。ＮＡＳコントローラ１１は、電源がＯＮされると起動処理を実行する（ＳＰ１２８）。
【０１５０】
次いでＣＰＵ１２３は、フラッシュメモリ１２４に格納されているバックアップログを参照して（ＳＰ１２９）、ＮＡＳキャッシュメモリ１１２にストアするデータがあるか否かを判断する（ＳＰ１３０）。
【０１５１】
ＣＰＵ１２３は、ステップＳＰ１３０の判断で否定結果を得ると、ステップＳＰ１３５に移行する。これに対し、ＣＰＵ１２３はステップＳＰ１３０の判断で肯定結果を得ると、ＮＶＲＡＭ１２２にリード要求を送信して、ＮＡＳキャッシュメモリ１１２にリストアするデータをＮＶＲＡＭ１２２から読み出す（ＳＰ１３１）。
【０１５２】
なおステップＳＰ１３１の処理においてＣＰＵ１２３は、ＮＶＲＡＭ１２２からストア対象データを一度に全て読み出すのではなく、分割して読み出すようにしている。このように分割して読み出すことにより、読出し先となるブロックキャッシュメモリ１２５の記憶領域がリストア対象データで溢れてしまうことを防止するようにしている。
【０１５３】
ＣＰＵ１２３は、ＮＶＲＡＭ１２２から読み出したリストア対象データをＮＡＳキャッシュメモリ１１２に順次書き込む（ＳＰ１３２）。ＮＡＳコントローラ１１は、ＮＡＳキャッシュメモリ１１２にデータが書き込まれると、データが故障していないかＣＲＣをチェックする（ＳＰ１３３）。そしてＮＡＳコントローラ１１は、ＣＲＣチェック結果をＣＰＵ１２３に送信する。
【０１５４】
ＣＰＵ１２３は、ＣＲＣチェック結果を受信し（ＳＰ１３４）、データが故障していないことを確認する。データが故障しているとのチェック結果を得た場合、ＣＰＵ１２３は、ストレージ装置１０と同一の処理を実行しているストレージ装置２０のＮＶＲＡＭ２２２からＮＡＳキャッシュメモリ１１２にリストアするリストア対象データを読み出し、読み出したデータをＮＡＳキャッシュメモリ１１２に書き込む（図１１Ｄ参照）。
【０１５５】
次いでＣＰＵ１２３は、バックアップログを参照して（ＳＰ１３５）、ブロックキャッシュメモリ１２５にリストアするデータがあるか否かを判断する（ＳＰ１３６）。
【０１５６】
ＣＰＵ１２３は、ステップＳＰ１３６の判断で否定結果を得ると、ステップＳＰ１４０に移行する。これに対し、ＣＰＵ１２３はステップＳＰ１３６の判断で肯定結果を得ると、ＮＶＲＡＭ１２２にリード要求を送信して、ブロックキャッシュメモリ１２５にリストアするデータをＮＶＲＡＭ１２２から読み出す（ＳＰ１３７）。
【０１５７】
次いでＣＰＵ１２３は、ＮＶＲＡＭ１２２から読み出したデータのＣＲＣをチェックして（ＳＰ１３８）、データが故障していないことを確認する。データが故障している場合、ストレージ装置２０のＮＶＲＡＭ２２からブロックキャッシュメモリ１２５にリストアするリストア対象データを読み出し、読み出したデータをブロックキャッシュメモリ１２５に書き込む（図１１Ｄ参照）。
【０１５８】
次いでＣＰＵ１２３は、次回の停電に備えてバックアップテーブルを設定し（ＳＰ１３９）、バックアップログを削除する（ＳＰ１４０）。バックアップログを削除する目的は、停電ではなく正常に電源がＯＦＦされた後のブート時に、誤ってＮＶＲＡＭ１２２のデータがリストアされてしまうことを回避するためである。
【０１５９】
そしてＣＰＵ１２３は、ＮＶＲＡＭ１２２に格納されているデータを削除して（ＳＰ１４１）、本処理を終了する。
【０１６０】
なおＮＶＲＡＭ１２２に格納されているデータを削除する目的は、ブロックコントローラ１２がユーザデータを保持したままであると、ブロックコントローラ１２が持ち出された場合にはユーザデータも持ち出されてしまうことになり、セキュリティ上問題となるためである。
【０１６１】
図１１Ｄは、データ故障時のデータリストア処理の処理手順を示す。このデータリストア処理は、図１１ＢのステップＳＰ１３４又はＳＰ１３８において、ＣＲＣチェック結果がデータ故障である場合に実行される。
【０１６２】
まずＣＰＵ１２３は、リストア対象データのＣＲＣをチェックし（ＳＰ１５１）、ＣＲＣが正常であるか否かを判断する（ＳＰ１５２）。ＣＰＵ１２３は、この判断で肯定結果を得ると、本処理を終了する。これに対し、ＣＰＵ１２３はこの判断で否定結果を得ると、他のブロックコントローラ２２に正常データを要求する（ＳＰ１５３）。
【０１６３】
他のブロックコントローラ２２のＣＰＵ２２３は、要求に対応する正常データをＣＰＵ１２３に送信して（ＳＰ１５４）、本処理を終了する。
【０１６４】
（１−５）本実施の形態による効果
以上のように本実施の形態によるストレージシステム１によれば、複数のコントローラのそれぞれが個別にキャッシュメモリから不揮発メモリにデータを退避させるのではなく、退避させるデータを一のコントローラが備えるキャッシュメモリに集約し、集約したデータを一の不揮発メモリに一括して退避させるようにし、一方で一のコントローラにデータの退避が完了した他のコントローラの電源を順次停止するようにしたので、不揮発メモリに退避させるために必要な時間及び電力量を削減することができる。
【０１６５】
よって本実施の形態によれば、ストレージシステム１に搭載するバッテリ装置を小型化することができる。
【０１６６】
（２）第２の実施の形態
第２の実施の形態は、一のコントローラにデータを退避させる他のコントローラを複数備えて構成される点で、第１の実施の形態と異なる。以下、異なる点について図面を用いて詳細に説明する。
【０１６７】
（２−１）全体構成
図１２は、第２の実施の形態におけるストレージシステム１Ａの全体構成を示す。ストレージシステム１Ａは、ストレージ装置１０ＡにおいてＮＡＳコントローラ１７及びサーバコントローラ１８が追加された点及びストレージ装置２０ＡにおいてＮＡＳコントローラ２７及びサーバコントローラ２８が追加された点で、第１の実施の形態と異なる。
【０１６８】
ストレージ装置１０ＡにおいてＮＡＳコントローラ１７は、ＮＡＳコントローラ１１と同様、ＣＰＵ１７１及びＮＡＳキャッシュメモリ１７２を備えて構成される。またサーバコントローラ１８も同様に、ＣＰＵ１８１及びサーバキャッシュメモリ１８２を備えて構成される。
【０１６９】
サーバコントローラ１８は、ブロックデータ及びファイルデータとは区別されるサーバデータをサーバキャッシュメモリ１８２に書き込み、またデータ退避処理においてはサーバキャッシュメモリ１８２に格納されているデータをブロックキャッシュメモリ１２５に送信する。よって複数の種別のデータがブロックキャッシュメモリ１２５に集約されることになる。集約されたデータは、ブロックコントローラ１２により一括してＮＶＲＡＭ１２２に退避される。
【０１７０】
ストレージ装置２０Ａは、上述してきたストレージ装置１０Ａと同様の構成であり、ストレージ装置１０Ａと同一の動作を実行するため、ここでの説明は省略する。
【０１７１】
（２−２）各種情報の詳細
図１３は、優先度テーブル１２５１Ａの概念図を示す。優先度テーブル１２５１Ａは、ブロックキャッシュメモリ１２５に予め格納されており、データ退避処理（図１４）においてブロックキャッシュメモリ１２５にデータを集約させる際の集約させる順番が規定されている。
【０１７２】
具体的に優先度テーブル１２５１Ａは、優先順位欄１２５１１Ａ及びモジュール欄１２５１２Ａから構成される。優先順位欄１２５１１Ａには、ブロックキャッシュメモリ１２５にデータを退避させる際の順番が格納される。モジュール欄１２５１２Ａには、集約先であるブロックコントローラ１２を除いた他のコントローラの識別情報が格納される。
【０１７３】
従って図１３の場合、データ退避処理において、まず優先順位が「１」の「ＮＡＳコントローラＡ」が保持するデータをブロックキャッシュメモリ１２５に退避させ、次いで優先順位が「２」の「ＮＡＳコントローラＢ」が保持するデータをブロックキャッシュメモリ１２５に退避させ、最後に優先順位が「３」の「サーバコントローラＡ」が保持するデータをブロックキャッシュメモリ１２５に退避させることが示されている。
【０１７４】
なお優先度テーブル１２５１Ａにおいて規定される優先順位は、キャッシュメモリの容量の小さい順である。すなわちここでは「ＮＡＳコントローラＡ」内のキャッシュメモリの容量が最も小さく、次いで「ＮＡＳコントローラＢ」、「サーバコントローラＡ」の順でキャッシュメモリの容量が小さい。
【０１７５】
優先順位をキャッシュメモリの容量が小さい順とする目的は、容量の小さいデータを集約先のブロックキャッシュメモリ１２５に先に退避させて、そのデータを保持するコントローラの電源を停止して省電力を図るためである。容量の大きいデータを集約先のブロックキャッシュメモリ１２５に先に退避させようとすると、ブロックキャッシュメモリ１２５に空き容量がない場合には空き容量を確保するためにブロックキャッシュメモリ１２５のデータの一部をＮＶＲＡＭ１２２に書き込む処理が発生する。よってその分、データ退避にかかる時間が増加して省電力を図ることができなくなる。
【０１７６】
図１４は、電源遮断時におけるデータ退避処理の処理手順を示す。このデータ退避処理は、何らかの事由により交流電源１００からの電源供給が遮断されたことを契機として、主としてブロックコントローラ１２により実行される。
【０１７７】
まずブロックコントローラ１２は、ブロックキャッシュメモリ１２５の容量にファイルデータ及びサーバデータを集約するための空き容量があるか否かを判断する（ＳＰ１６１）。ブロックコントローラ１２は、この判断で否定結果を得ると、ブロックデータの一部をＮＶＲＡＭ１２２に書き込んで、集約するための空き容量を確保する（ＳＰ１６２）。
【０１７８】
これに対し、ブロックコントローラ１２は、ステップＳＰ１６１の判断で肯定結果を得ると、或いは、ステップＳＰ１６２において空き容量を確保すると、優先度テーブル１２５１Ａを参照して、キャッシュメモリの容量が最も小さいＮＡＳキャッシュメモリ（例えばＮＡＳキャッシュメモリ１１２）のデータをブロックキャッシュメモリ１２５にコピーする（ＳＰ１６３）。
【０１７９】
次いでブロックコントローラ１２は、ＮＡＳキャッシュメモリ１１２のデータをブロックキャッシュメモリ１２５にコピーした後のブロックキャッシュメモリ１２５の容量に空き容量があるか否かを判断する（ＳＰ１６４）。
【０１８０】
ブロックコントローラ１２は、ステップＳＰ１６４の判断で否定結果を得ると、ステップＳＰ１６３においてＮＡＳキャッシュメモリ１１２からブロックキャッシュメモリ１２５にコピーしたデータをＮＶＲＡＭ１１２に書き込んで、集約するための空き容量を確保する（ＳＰ１６５）。
【０１８１】
これに対し、ブロックコントローラ１２は、ステップＳＰ１６４の判断で肯定結果を得ると、或いは、ステップＳＰ１６５において空き容量を確保すると、優先度テーブル１２５１Ａを参照して、キャッシュメモリの容量が次に小さいＮＡＳキャッシュメモリ（例えばＮＡＳキャッシュメモリ１７２）のデータをブロックキャッシュメモリ１２５にコピーする（ＳＰ１６６）。
【０１８２】
次いでブロックコントローラ１２は、ＮＡＳキャッシュメモリ１７２のデータをブロックキャッシュメモリ１２５にコピーした後のブロックキャッシュメモリ１２５の容量に空き容量があるか否かを判断する（ＳＰ１６７）。
【０１８３】
ブロックコントローラ１２は、ステップＳＰ１６７の判断で否定結果を得ると、ステップＳＰ１６６においてＮＡＳキャッシュメモリ１７２からブロックキャッシュメモリ１２５にコピーしたデータをＮＶＲＡＭ１１２に書き込んで、集約するための空き容量を確保する（ＳＰ１６８）。
【０１８４】
これに対し、ブロックコントローラ１２は、ステップＳＰ１６７の判断で肯定結果を得ると、或いは、ステップＳＰ１６８において空き容量を確保すると、優先度テーブル１２５１Ａを参照して、キャッシュメモリの容量が次に小さいサーバキャッシュメモリ１８２のデータをブロックキャッシュメモリ１２５にコピーする（ＳＰ１６９）。
【０１８５】
次いでブロックコントローラ１２は、現時点でブロックキャッシュメモリ１２５に格納されているデータのうち、ＮＶＲＡＭ１１２に書き込んでいないデータをＮＶＲＡＭ１１２に書き込んで（ＳＰ１７０）、本処理を終了する。
【０１８６】
（２−３）第２の実施の形態による効果
以上のように第２の実施の形態によれば、データ退避処理時にデータを集約する一のコントローラと、一のコントローラにデータを退避させる複数の他のコントローラとを備えて構成されるストレージシステム１Ａにおいて、他のコントローラから一のコントローラにデータを退避させる場合に容量の小さいキャッシュメモリを備えたコントローラの順にデータを退避させるようにしたので、データ退避にかかる時間及び電力量を削減することができる。よってストレージシステム１Ａに搭載するバッテリ装置を小型化することができる。
【符号の説明】
【０１８７】
１        ストレージシステム
１０      ストレージ装置
１１      ＮＡＳコントローラ
１１１    ＣＰＵ
１１２    ＮＡＳキャッシュメモリ
１２      ブロックコントローラ
１２１    マネジメントコントローラ
１２２    ＮＶＲＡＭ
１２３    ＣＰＵ
１２４    フラッシュメモリ
１２５    ブロックキャッシュメモリ
１３      ホストコントローラ
１４      Ｉ／Ｏコントローラ
１５      ＨＤＤ
１６      バッテリ装置
【図１】
0005963228.tif 000002
【図２】
0005963228.tif 000003
【図３】
0005963228.tif 000004
【図４】
0005963228.tif 000005
【図５】
0005963228.tif 000006
【図６Ａ】
0005963228.tif 000007
【図６Ｂ】
0005963228.tif 000008
【図７Ａ】
0005963228.tif 000009
【図７Ｂ】
0005963228.tif 000010
【図８Ａ】
0005963228.tif 000011
【図８Ｂ】
0005963228.tif 000012
【図８Ｃ】
0005963228.tif 000013
【図９Ａ】
0005963228.tif 000014
【図９Ｂ】
0005963228.tif 000015
【図９Ｃ】
0005963228.tif 000016
【図１０Ａ】
0005963228.tif 000017
【図１０Ｂ】
0005963228.tif 000018
【図１０Ｃ】
0005963228.tif 000019
【図１１Ａ】
0005963228.tif 000020
【図１１Ｂ】
0005963228.tif 000021
【図１１Ｃ】
0005963228.tif 000022
【図１１Ｄ】
0005963228.tif 000023
【図１２】
0005963228.tif 000024
【図１３】
0005963228.tif 000025
【図１４】
0005963228.tif 000026