(57)【特許請求の範囲】
【請求項１】
書込みデータをキャッシュメモリに一時記憶するライトキャッシュ機能が有効な不揮発性の１以上の第１の記憶装置と、
前記第１の記憶装置より高速に書込可能で不揮発性の第２の記憶装置と、
前記第１の記憶装置にデータを書込む第１の書込手段と、
１以上の前記第１の記憶装置にそれぞれ書込むデータと、当該データを書込む前記第１の記憶装置のセクタ情報とを前記第２の記憶装置に記憶させる第２の書込手段と、
前記キャッシュメモリに一時記憶されたデータを不揮発とするためのキャッシュフラッシュコマンドの発行に応じて、書込んだデータが前記第１の記憶装置上で不揮発となった後、前記第２の記憶装置が記憶する対応するデータを無効化する無効化手段と
を備え、
前記無効化手段は、定期的に前記キャッシュフラッシュコマンドを発行することにより前記第２の記憶手段が記憶する全てのデータを無効化する、
情報処理装置。
【請求項２】
前記第２の記憶装置からデータとセクタ情報とを読込む読込手段
を更に備え、
前記第１の書込手段は、電源障害からの復帰時に、前記読込手段により前記第２の記憶装置から読込まれたデータを、セクタ情報に応じた前記第１の記憶装置上の位置に書込む、
請求項１記載の情報処理装置。
【請求項３】
前記第２の記憶装置が記憶する、有効なデータとセクタ情報の領域を示すための位置情報を制御する手段
を更に備え、
前記読込手段は、前記位置情報に基づき、読込むデータとセクタ情報とを判別する、
請求項２記載の情報処理装置。
【請求項４】
前記第２の記憶装置はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である、
請求項１乃至請求項３のいずれか１項記載の情報処理装置。
【請求項５】
前記第１の記憶装置がそれぞれ有するキャッシュ機能が有効である、
請求項１乃至請求項４のいずれか１項記載の情報処理装置。
【請求項６】
書込みデータをキャッシュメモリに一時記憶するライトキャッシュ機能が有効な不揮発性の１以上の第１の記憶装置にデータを書込む第１の書込手段と、
１以上の前記第１の記憶装置にそれぞれ書込むデータと、当該データを書込む前記第１の記憶装置のセクタ情報とを、前記第１の記憶装置より高速に書込可能で不揮発性の第２の記憶装置に記憶させる第２の書込手段と、
前記キャッシュメモリに一時記憶されたデータを不揮発とするためのキャッシュフラッシュコマンドの発行に応じて、書込んだデータが前記第１の記憶装置上で不揮発となった後、前記第２の記憶装置が記憶する対応するデータを無効化する無効化手段と
を備え、
前記無効化手段は、定期的に前記キャッシュフラッシュコマンドを発行することにより前記第２の記憶手段が記憶する全てのデータを無効化する、
制御装置。
【請求項７】
書込みデータをキャッシュメモリに一時記憶するライトキャッシュ機能が有効な不揮発性の１以上の第１の記憶装置にデータを書込むステップと、
１以上の前記第１の記憶装置にそれぞれ書込むデータと、当該データを書込む前記第１の記憶装置のセクタ情報とを、前記第１の記憶装置より高速に書込可能で不揮発性の第２の記憶装置に記憶させるステップと、
前記キャッシュメモリに一時記憶されたデータを不揮発とするためのキャッシュフラッシュコマンドの発行に応じて、書込んだデータが前記第１の記憶装置上で不揮発となった後、前記第２の記憶装置が記憶する対応するデータを無効化するステップと、
定期的に前記キャッシュフラッシュコマンドを発行することにより前記第２の記憶手段が記憶する全てのデータを無効化するステップと、
を備える、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明に係るいくつかの態様は、情報処理装置、制御装置、及び情報処理方法に関する。
【背景技術】
【０００２】
現在、記憶装置の高速化、大容量化の要求に応えるべく、ＲＡＩＤ（Ｄｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）の技術が広く普及しつつある。ここで、ＲＡＩＤにおけるライト機能（書込機能）の応答性能の向上を目的に、ライトキャッシュの技術が存在する（例えば、特許文献１）。特許文献１には、コントローラ内にデータを一時的に書込むライトキャッシュを設け、ホストからのライト要求に対してライトキャッシュにデータを書込んだ時点でホストに終了報告を返すことにより、書込処理時の性能低下を防ぐことが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−０９９８０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、ＲＡＩＤを構成する各ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）も、通常はキャッシュメモリを備えている。ＨＤＤ上のキャッシュメモリは通常揮発性メモリが使用されるため、ディスク書込完了前に電源障害等が発生するとデータが揮発してしまう。よって、信頼性を確保すべく、ＨＤＤが有するライトキャッシュ機能は無効（Ｄｉｓａｂｌｅ）となっていることが多い。
【０００５】
また、特許文献１記載の技術は、ディスクアレイ装置を制御する制御装置自体の処理性能向上については言及されているものの、ＲＡＩＤを構成する各ＨＤＤに対する信頼性向上や速度向上については、何ら考慮されていない。
【０００６】
本発明のいくつかの態様は前述の課題に鑑みてなされたものであり、１以上の記憶装置に対するデータ書込時の性能向上を図ることのできる情報処理装置、制御装置、及び情報処理方法を提供することを目的の１つとする。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、不揮発性の１以上の第１の記憶装置と、前記第１の記憶装置より高速に書込可能で不揮発性の第２の記憶装置と、前記第１の記憶装置にデータを書込む第１の書込手段と、１以上の前記第１の記憶装置にそれぞれ書込むデータと、当該データを書込む前記第１の記憶装置のセクタ情報とを前記第２の記憶装置に記憶させる第２の書込手段と、書込んだデータが前記第１の記憶装置上で不揮発となった後、前記第２の記憶装置が記憶する対応するデータを無効化する無効化手段とを備える。
【０００８】
本発明に係る制御装置は、不揮発性の１以上の前記第１の記憶装置にデータを書込む第１の書込手段と、１以上の前記第１の記憶装置にそれぞれ書込むデータと、当該データを書込む前記第１の記憶装置のセクタ情報とを、前記第１の記憶装置より高速に書込可能で不揮発性の前記第２の記憶装置に記憶させる第２の書込手段と、書込んだデータが前記第１の記憶装置上で不揮発となった後、前記第２の記憶装置が記憶する対応するデータを無効化する無効化手段とを備える。
【０００９】
本発明に係る情報処理方法は、不揮発性の１以上の前記第１の記憶装置にデータを書込むステップと、１以上の前記第１の記憶装置にそれぞれ書込むデータと、当該データを書込む前記第１の記憶装置のセクタ情報とを、前記第１の記憶装置より高速に書込可能で不揮発性の前記第２の記憶装置に記憶させるステップと、書込んだデータが前記第１の記憶装置上で不揮発となった後、前記第２の記憶装置が記憶する対応するデータを無効化するステップとを備える。
【００１０】
なお、本発明において、「部」とは、単に物理的手段を意味するものではなく、その「部」が有する機能をソフトウェアによって実現する場合も含む。また、１つの「部」が有する機能が２つ以上の物理的手段や装置により実現されても、２つ以上の「部」の機能が１つの物理的手段や装置により実現されても良い。
【発明の効果】
【００１１】
本発明によれば、１以上の記憶装置に対するデータ書込時の性能向上を図ることのできる情報処理装置、制御装置、及び情報処理方法を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態におけるサーバの概略構成を示す機能ブロック図である。
【図２】図１に示したサーバが有するディスクアレイコントローラのライト機能に係る機能ブロック図である。
【図３】図１に示したサーバによるジャーナルデータの管理方法を説明するための図である。
【図４】図１に示したサーバによる書込処理の流れを示すフローチャートである。
【図５】図１に示したサーバによるデータ復旧処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下に本発明の実施形態を説明する。以下の説明及び参照する図面の記載において、同一又は類似の構成には、それぞれ同一又は類似の符号が付されている。
【００１４】
（実施形態）
図１乃至図５は、本発明の実施形態を説明するための図である。以下、これらの図を参照しながら実施形態を詳細に説明する。
【００１５】
（概要）
図１は、本発明に係る情報処理装置の実施形態であるサーバ１０の概略構成を示す機能ブロック図である。図１に係るサーバ１０は、ホスト１０１と、ディスクアレイコントローラ１０３と、ディスクアレイ１０５を構成するＨＤＤ１０５ａ乃至１０５ｃと、バッテリバックアップユニット１０７と、ＳＳＤ１０９とを含む。
【００１６】
サーバ１０は、オープンアーキテクチャのサーバであり、論理的に１つの記憶装置を構成するディスクアレイ１０５にデータを格納する装置である。そして、ディスクアレイコントローラ１０３が、ＨＤＤ１０５ａ乃至１０５ｃへのそれぞれの書込データ（Ｗｒｉｔｅデータ）のジャーナル機能をＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）１０９を用いて実現することで、ＨＤＤ１０５ａ乃至１０５ｃへ書込むデータを保障する機能を持つ。これにより、電源障害等に伴うデータロスト（データの揮発／消滅／紛失）のリスクを抑制すると共に、ディスクアレイ１０５を構成するＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０５ａ乃至１０５ｃのライトキャッシュ（Ｗｒｉｔｅキャッシュ）機能を有効（Ｅｎａｂｌｅ）にすることが可能となり、結果として、サーバ１０全体の性能向上を図っている。
【００１７】
ここで、ＨＤＤ１０５ａ乃至１０５ｃと、ディスクアレイコントローラ１０３とは、それぞれキャッシュメモリ１０５ａ１乃至１０５ｃ１と、キャッシュメモリ１０３ａとを有する。本実施形態でＳＳＤ１０９を用いたジャーナル機能を利用する主目的は、ＨＤＤ１０５ａ乃至１０５ｃが有するキャッシュメモリ１０５ａ１乃至１０５ｃ１を利用したライトキャッシュ機能を有効（ｅｎａｂｌｅ）として、高速化及びデータ安全性（信頼性）の向上を図ることにある。
【００１８】
サーバ１０は、ディスクアレイコントローラ１０３を用いて、ＨＤＤ１０５ａ乃至１０５ｃを接続すると共に、記録するデータに冗長性を持たせることで、ディスクアレイ１０５を構築する。そして、前述の通り、ディスクアレイコントローラ１０３及びＨＤＤ１０５ａ乃至１０５ｃは、キャッシュ制御に用いられるキャッシュメモリ１０３ａ及びキャッシュメモリ１０５ａ１乃至１０５ｃ１をそれぞれ搭載している。
【００１９】
万一電源障害が発生した場合にはデータロストの可能性があるため、ディスクアレイコントローラ１０３が有するキャッシュメモリ１０３ａにはバッテリバックアップユニット１０７が接続される。これにより、たとえ電源障害が発生しても、バッテリバックアップユニット１０７から電力を供給してキャッシュメモリ１０３ａ上のデータを保持し続けることができ、信頼性を高めることができる。
【００２０】
一方で、ディスクアレイコントローラ１０３に接続されるＨＤＤ１０５ａ乃至１０５ｃに関しては装置内で閉じた制御が行われていることが多いので、通常はキャッシュメモリ１０５ａ１乃至１０５ｃ１をバッテリバックアップする手段はない。よって、突然の電源障害が発生した場合には、キャッシュメモリ１０５ａ１乃至１０５ｃ１上のＷｒｉｔｅデータ紛失（揮発）に繋がるリスクがある。
【００２１】
そこで、電源障害時のリスクを回避してデータ保全を行うための１つの方法として、ＨＤＤ１０５ａ乃至１０５ｃのライト（書込み）キャッシュ機能を無効（ｄｉｓａｂｌｅ）として運用することが考えられる。
【００２２】
尚ここで、ＨＤＤ１０５ａ乃至１０５ｃのリード（Ｒｅａｄ／読込み）処理時には、たとえ電源障害が発生してキャッシュメモリ１０５ａ１乃至１０５ｃ１上のデータが揮発（紛失）したとしても、当該データはＨＤＤ１０５ａ乃至１０５ｃにも記録されており、再度読み直せば再度データを取得することができる（揮発することは無い）。よって、ＨＤＤ１０５ａ乃至１０５ｃのリードキャッシュ機能については、有効（ｅｎａｂｌｅ）として運用することができる。
【００２３】
この、ＨＤＤ１０５ａ乃至１０５ｃのライトキャッシュ機能を無効化（ｄｉｓａｂｌｅ）して運用する方法では、書込み（Ｗｒｉｔｅ）性能に関して、いわゆるキャッシュ制御による性能向上の恩恵を受けることはできない。
【００２４】
ＨＤＤ１０５ａ乃至１０５ｃへのアクセスにはヘッドシーク制御や回転するディスク媒体への書込み等の機械的制御を含む。よって、ＨＤＤ１０５ａ乃至１０５ｃへのアクセス速度は、サーバ１０本体のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算処理速度、メモリアクセス速度、バス速度等と比べて、非常に遅い。もし、ＨＤＤ１０５ａ乃至１０５ｃのライトキャッシュ機能を有効（ｅｎａｂｌｅ）とすることができれば、（ディスク書込みよりも書込速度が速い）キャッシュメモリ１０５ａ１乃至１０５ｃ１上にデータが置かれた（一時記憶された）時点で（すなわち、機械的制御を経てディスク媒体へのデータ書込みを完了する前に）、ＨＤＤ１０５ａ乃至１０５ｃはアクセス完了報告をディスクアレイコントローラ１０３へ返すことができる。よって、ＨＤＤ１０５ａ乃至１０５ｃはライトキャッシュ機能を有効とすると、ライトキャッシュ機能を無効（ｄｉｓａｂｌｅ）とした場合と比べ、数倍から数十倍の速度向上を見込むことができる。
【００２５】
そこで、本実施形態に係るサーバ１０では、ＨＤＤ１０５ａ乃至１０５ｃのＷｒｉｔｅキャッシュ機能を有効として書込み速度の向上を図ると共に、電源障害等が発生しても、ＨＤＤ１０５ａ乃至１０５ｃに対するライトデータ（書込データ）を保障することのできる仕組みを有する。
【００２６】
そのために、サーバ１０では、ディスクアレイコントローラ１０３の配下にＳＳＤ１０９を接続している。ホスト１０１からディスクアレイ１０５の論理ディスクに対する通常のライトアクセス（書込み命令）が発生した場合には、当該ライトアクセスの書込みデータをＳＳＤ１０９に対してジャーナルとして記録する。ジャーナルに記録するデータはＨＤＤ１０５ａ乃至１０５ｃの其々のセクタ単位で管理される。
【００２７】
ここで、ジャーナル機能とは、ファイルシステムへの変更をジャーナルと呼ばれるデータベースに記録する機能である。ＨＤＤ１０５ａ乃至１０５ｃの其々にデータを書込む際、ディスクアレイコントローラ１０３は、ＳＳＤ１０９上のジャーナルに、ＨＤＤ１０５ａ乃至１０５ｃに書込むデータと、ＨＤＤ１０５ａ乃至１０５ｃ上の書込むべきセクタアドレスの情報とを含むジャーナルデータを記録する。これにより、もし、ＨＤＤ１０５ａ乃至１０５ｃへのデータ書込み中に電源障害等によりデータが揮発しても、ＳＳＤ１０９上のジャーナルを読込むことで、データを復元すると共に、当該データを書込むべきＨＤＤ１０５ａ乃至１０５ｃ上の位置（セクタアドレス）を知ることが可能となる。
【００２８】
尚、ジャーナルを記録する媒体としてＳＳＤ１０９を使用する理由は以下の通りである。ＳＳＤ１０９は、例えばディスク媒体へアクセスするような機械的制御が不要であるために、アクセス速度（書込速度）がＨＤＤに比べて数百倍優れている。つまり、ＳＳＤ１０９は、サーバ１０システム全体の速度性能への影響が極めて小さい不揮発性の記憶媒体である。また、速度面だけを鑑みれば、ＮＶＲＡＭ（Ｎｏｎ  Ｖｏｌａｔｉｌｅ  ＲＡＭ）等の他の不揮発性メモリを使用することも考えられるが、ＮＶＲＡＭ等では、ＨＤＤ１０５ａ乃至１０５ｃへのアクセスのジャーナルを記録するのに十分な容量を確保することは難しい。そこで、速度面と容量面の両方を鑑みると、ジャーナルを記憶する媒体としてＳＳＤ１０９を使うのが好適である。
【００２９】
ディスクアレイコントローラ１０３は、ディスクアレイ１０５を構成しているＨＤＤ１０５ａ乃至１０５ｃに対して、随時キャッシュフラッシュを指示（命令）する。キャッシュフラッシュにより、ＨＤＤ１０５ａ乃至１０５ｃ上のキャッシュメモリ１０５ａ１乃至１０５ｃ１上にあるライトデータ（書込データ）が確実にディスク媒体に書込まれてデータを保証できるため、その時点までにＳＳＤ１０９に記録していたジャーナルデータは無効（消去（クリア）等も含む）とすることができる。
【００３０】
つまり、ジャーナルデータの容量がジャーナル書込領域１０９ａの領域の限界を超えそうになった場合には、ディスクアレイコントローラ１０３からディスクアレイ１０５を構成している各ＨＤＤ１０５ａ乃至１０５ｃに対してキャッシュフラッシュ指示を行えば、ジャーナルデータを無効化（クリア）できるので、ジャーナル書込領域１０９ａを先頭から使用することができる。
このように実装することで、ジャーナルするデータ領域（後述するジャーナル書込領域１０９ａ）を、限られたサイズに抑えることが可能となる。
【００３１】
電源障害等が発生した場合には、ディスクアレイコントローラ１０３は、ＳＳＤ１０９に記録したジャーナルから、ＨＤＤ１０５ａ乃至１０５ｃへの書込みの復旧処理を行う。ＳＳＤ１０９にジャーナルされているデータは、ＨＤＤ１０５ａ乃至１０５ｃのディスク媒体への書込みが完全に行われたかどうかが保証できないため、ＳＳＤ１０９にジャーナルされることによりセクタ単位で管理されたデータを、ＨＤＤ１０５ａ乃至１０５ｃへ書込む。これにより、ＨＤＤ１０５ａ乃至１０５ｃのライト（書込み）キャッシュ機能が有効（ｅｎａｂｌｅ）であっても、ライトアクセス（書込み）のデータを保障することができる。
【００３２】
（システム構成）
前述の通り、本実施形態に係るサーバ１０は、ホスト１０１と、ディスクアレイコントローラ１０３と、ディスクアレイ１０５を構成するＨＤＤ１０５ａ乃至１０５ｃと、バッテリバックアップユニット１０７と、ＳＳＤ１０９とを含む。
【００３３】
ホスト１０１は、ＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）制御上、ディスクアレイコントローラ１０３の上位層に位置する、ＯＳドライバ等のモジュールである。ディスクアレイコントローラ１０３に対して、データ書込（Ｗｒｉｔｅ）命令やデータ読込（Ｒｅａｄ）命令等を発行する。
【００３４】
ディスクアレイコントローラ１０３は、ＨＤＤ１０５ａ乃至１０５ｃを、１つの論理ディスクであるディスクアレイ１０５としてホスト１０１に見せるための制御装置である。本実施形態では、ディスクアレイコントローラ１０３は、ＨＤＤ１０５ａ乃至１０５ｃにＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）を構成してディスクアレイ１０５とする。ディスクアレイコントローラ１０３の構成の詳細については、図２を参照しながら後述する。
【００３５】
尚、本実施形態では、ＨＤＤ１０５ａ、１０５ｂ、及び１０５ｃの３つのディスクドライブを用いてディスクアレイ１０５を構成する場合を例に説明を行っているが、これに限られるものではなく、何台のディスクドライブを用いてディスクアレイ１０５を構成しても良い。
【００３６】
ＨＤＤ１０５ａ、１０５ｂ、及び１０５ｃは、ディスクアレイ１０５を構成するディスクドライブである。それぞれ、キャッシュメモリ１０５ａ１、１０５ｂ１、及び１０５ｃ１を有しており、これらを用いて、ライトキャッシュ機能やリードキャッシュ機能を提供する。ライトキャッシュ機能が有効（ｅｎａｂｌｅ）となっている場合には、ＨＤＤ１０５ａ乃至１０５ｃは、キャッシュメモリ１０５ａ１乃至１０５ｃ１上にデータが記録された時点で（内蔵するディスク媒体への書込みが完了する前に）、書込み完了の報告をディスクアレイコントローラ１０３へ返す。
【００３７】
バッテリバックアップユニット１０７は、ディスクアレイコントローラ１０３が内蔵するキャッシュメモリ１０３ａにバックアップ電力を供給する電源ユニットである。もし外部電源が遮断される等の障害が発生したとしても、バッテリバックアップユニット１０７がキャッシュメモリ１０３ａに電力を供給するため、キャッシュメモリ１０３ａ上のデータの揮発は防ぐことができる。
【００３８】
ＳＳＤ１０９は、ＨＤＤ１０５ａ乃至１０５ｃにそれぞれ書込むデータに関するジャーナルを記憶する。前述の通り、ＳＳＤ１０９に書込まれるジャーナルには、ＨＤＤ１０５ａ乃至１０５ｃにそれぞれ書込むデータと、書込むべきセクタの情報とが含まれる。
【００３９】
（ディスクアレイコントローラ１０３のライト処理に係る機能構成）
続いて、ディスクアレイコントローラ１０３のディスクアレイ１０５へのライト処理に係る機能構成を、図２を参照しながら説明する。図２は、ディスクアレイコントローラ１０３のライト処理に係る機能ブロック図である。
【００４０】
ライト制御部２０１は、ＩＯ制御的にディスクアレイコントローラ１０３の上位層に位置するＯＳドライバ等のモジュールであるホスト１０１からの書込命令（ライトコマンド）を受取り、ＨＤＤライト処理部２０３に指示する。
【００４１】
ＨＤＤライト処理部２０３は、ライト制御部２０１から書込指示（書込命令）を受け、ディスクアレイ１０５を構成しているＨＤＤ１０５ａ乃至１０５ｃのうち、どのＨＤＤのどのセクタアドレスにどのようなデータを書くのかを決定した上で、当該決定内容に応じてＨＤＤ１０５ａ乃至１０５ｃにデータを書込む。
また、ＨＤＤライト処理部２０３は、ＨＤＤ１０５ａ乃至１０５ｃに対して書込み指示した情報を、ジャーナル書込部２０５に渡す機能も有する。
【００４２】
更に、ＨＤＤライト処理部２０３は、ジャーナル読込部２１３から、ＨＤＤ１０５ａ乃至１０５ｃ上のセクタアドレスと書込データと共に、ＨＤＤ１０５ａ乃至１０５ｃへの書込み指示を受取る機能も有する。
【００４３】
ジャーナル書込部２０５は、ＨＤＤライト処理部２０３がＨＤＤ１０５ａ乃至１０５ｃに対して書込むデータに対応して、書込みセクタアドレス及び当該セクタに書込むデータを、ジャーナルとしてＳＳＤ１０９に書込む。
【００４４】
ジャーナルポインタ制御は、０７は、ＳＳＤ１０９上のジャーナル書込領域１０９ａに対し、どこまでのジャーナルデータが有効であるかを示すジャーナルポインタ３０１（後述）を管理する。つまり、ジャーナルポインタ制御は、０７は、ジャーナル書込部２０５が新たにジャーナルデータを書込むべき場所を管理する。
【００４５】
フラッシュ制御部２１１は、定期的に、又はＳＳＤ１０９上のジャーナル書込領域１０９ａが枯渇して新たに書込める領域が無くなった場合に、ＨＤＤ１０５ａ乃至１０５ｃに対してキャッシュフラッシュコマンドを発行する。尚、ＨＤＤ１０５ａ乃至１０５ｃはキャッシュフラッシュコマンドを受け取ると、キャッシュメモリ１０５ａ１乃至１０５ｃ１上のライトデータ（書込データ）を全てディスク媒体に書込むと共に、キャッシュメモリ１０５ａ１乃至１０５ｃ１上のデータをクリアする。
【００４６】
ジャーナル読込部２１３は、ＳＳＤ１０９上のジャーナル書込領域１０９ａ内のジャーナルポインタ制御が２０７が示す有効なジャーナルデータから、ライトされたセクタアドレス、及びライトデータを取出し、ライト制御部２０１に渡す。
【００４７】
（ジャーナルの管理方法）
続いて、図３を参照しながら、ＳＳＤ１０９上のジャーナルの管理方法を説明する。図３は、ＳＳＤ１０９上に確保されるジャーナル書込領域１０９ａの管理方法を説明するための図である。
【００４８】
ジャーナル書込領域１０９ａは、ＳＳＤ１０９上に確保される領域であり、ＨＤＤ１０５ａ乃至１０５ｃにそれぞれ書込まれるライトデータ（書込データ）等の情報がジャーナルとして書込まれる。
【００４９】
ジャーナルポインタ３０１は、次に新たにジャーナルデータを書込むべき位置（場所）を示すポインタである。ジャーナルポインタ３０１は、ディスクアレイコントローラ１０３が動作を開始した際に行われる初期化処理により、ジャーナル書込領域１０９ａの先頭を示すように初期設定される。その後、１件のジャーナルデータがジャーナル書込部２０５により書込まれると、ジャーナルポインタ制御部２０７は当該ジャーナルデータのサイズ分だけジャーナルポインタ３０１を進める。次にジャーナル書込部２０５がジャーナルデータを書込む場合には、ジャーナルポインタ３０１が現在指しているアドレスからジャーナルデータを書込み、書込み後は、ジャーナルポインタ制御部２０７が、再度ジャーナルデータのサイズ分だけジャーナルポインタ３０１を進める。
【００５０】
このようにジャーナルデータを書込む度にそのサイズ分だけジャーナルポインタ３０１を進めることで、ジャーナルポインタ３０１は、常に次にジャーナルデータを書込むべき位置を指すことになる。つまり、ジャーナル書込領域１０９ａの先頭からジャーナルポインタ３０１の示す位置までの間にあるデータが、有効なジャーナルデータとなる。
【００５１】
フラッシュ制御部２１１により、ＨＤＤ１０５ａ乃至１０５ｃに対するキャッシュフラッシュコマンドが発行されて、キャッシュメモリ１０５ａ１乃至１０５ｃ１上にあるキャッシュデータが全てディスク媒体に書込まれると、それまでにライト制御部２０１からのライトアクセスが発生した書込みデータは全てＨＤＤ１０５ａ乃至１０５ｃが備える不揮発性のディスク媒体上に記録されたことが保証できる。よって、当該キャッシュフラッシュコマンドが発行されるまでに記録していたジャーナルデータは全て不要になるので、キャッシュフラッシュコマンドに対する処理が完了すると、ジャーナルポインタ制御部２０７は、ジャーナル書込領域１０９ａの先頭をジャーナルポインタ３０１が示すように初期化する。これにより、ジャーナル書込領域１０９ａ上に書込まれたジャーナルデータが全て無効化される。
【００５２】
尚、以上説明したジャーナル書込領域１０９ａは、ディスクアレイコントローラ１０３に接続されているディスクドライブにそれぞれ対応した数（本実施形態ではＨＤＤ１０５ａ乃至１０５ｃに対応する３つ）用意される。
つまり、ジャーナル書込部２０５は、ＨＤＤ１０５ａ乃至１０５ｃのそれぞれに対して、ジャーナルを管理する。
【００５３】
（データ書込時の処理の流れ）
図４を参照しながら、本実施形態に係るディスクアレイコントローラ１０３のデータ書込時の処理の流れを説明する。図４は、書込みに係るディスクアレイコントローラ１０３の処理の流れを示すフローチャートである。
【００５４】
ＯＳドライバ等の上位ソフトウェアモジュールであるホスト１０１からディスクアレイコントローラ１０３に対する書込コマンド（命令）が発生すると、ライト制御部２０１が当該書込コマンドを受信する（Ｓ４０１）。ライト制御部２０１は、当該書込コマンドをＨＤＤライト処理部２０３に渡す。
【００５５】
ＨＤＤライト処理部２０３は、入力された書込コマンドを解析し、ＨＤＤ１０５ａ乃至１０５ｃのどのセクタアドレスに対してアクセスすればよいのか、書込むデータのサイズはどのくらいか、ディスクアレイ１０５を構成するＨＤＤ１０５ａ乃至１０５ｃに対してどのようにデータを分割するのか、等の判断や、必要に応じたパリティデータの生成等を行う。この結果、ＨＤＤライト処理部２０３は、ＨＤＤ１０５ａ乃至１０５ｃのうちどのディスクドライブのどのセクタにどのようなデータを書込むのかを決定し、実際にディスクドライブに対してデータを書込む（書込命令（指示）を発行する）（Ｓ４０３）。
【００５６】
次に、ＨＤＤライト処理部２０３は、Ｓ４０３で行った書込命令（指示）と同様の情報、すなわち、ＨＤＤ１０５ａ乃至１０５ｃのデータ書込先となるセクタアドレスと、書込まれるべきデータとをジャーナル書込部２０５に渡すと共にジャーナルの書込みを指示する。ジャーナル書込部２０５は、ジャーナル書込指示を受けて、最新のジャーナルデータを書込むべき場所を示すジャーナルポインタ３０１が示すジャーナル書込領域１０９ａ上の位置に、ＨＤＤ１０５ａ乃至１０５ｃ上に書込まれるデータと書込まれるべきセクタアドレスの情報とを、ジャーナルデータとして記録する（Ｓ４０５）。
【００５７】
そして、ジャーナルポインタ制御部２０７は、次のジャーナルデータの書込みに備え、ジャーナルポインタ３０１を１件のジャーナルデータのサイズ分だけ進める（更新する）（Ｓ４０７）。
【００５８】
ジャーナルポインタ制御部２０７は、更新後のジャーナルポインタ３０１が示す位置が、ジャーナル書込領域１０９ａの全体サイズ（ジャーナル書込領域１０９ａの終端位置）を超えていないかを検証する（Ｓ４０９）。もしジャーナルポインタ３０１が示す位置がジャーナル書込領域内であれば（Ｓ４０９のＮｏ）、ディスクアレイコントローラ１０３はジャーナルデータの書込処理を終える。
【００５９】
一方、ジャーナルポインタ３０１が示す位置が、ジャーナル書込領域１０９ａの終端（最後）と同じ、若しくは当該領域を超えていた（領域外であった）場合には（Ｓ４０９のＹｅｓ）、次にＨＤＤ１１０５ａ乃至１０５ｃへのＷｒｉｔｅアクセスが発生してジャーナルすべきデータが派生すると、これ以上ジャーナルデータを書込むことができなくなってしまう。
【００６０】
よって、ジャーナルポインタ制御部２０７は、フラッシュ制御部２１１により、ＨＤＤ１０５ａ乃至１０５ｃへのキャッシュフラッシュコマンドの発行を行うことで、ＨＤＤ１０５ａ乃至１０５ｃに、キャッシュメモリ１０５ａ１乃至１０５ｃ１上にあるライトデータをＨＤＤ１０５ａ乃至１０５ｃのディスク媒体に書込ませる（Ｓ４１１）。
【００６１】
ここで、Ｓ４０９の判断（検証／判別）において、更新後のジャーナルポインタ３０１が示す位置がジャーナル書込領域１０９ａの書込領域を超えていない場合であっても、もし次にジャーナルデータを１件書込むとジャーナル書込領域１０９ａを超えてしまう場合には、Ｓ４０９はＹｅｓ（ジャーナル書込領域１０９ａを超える）として判断される。
【００６２】
ＨＤＤ１０５ａ乃至１０５ｃによるキャッシュフラッシュ処理が完了すれば、それまでにライト（書込み）アクセスがあったデータに関しては、全てＨＤＤ１０５ａ乃至１０５ｃのディスク媒体に書込まれたとみなすことができる。従って、当該キャッシュフラッシュ処理が完了すると、ジャーナルポインタ制御部２０７は、ジャーナルポインタ３０１を、ジャーナル書込領域１０９ａの先頭を指すように初期化する（Ｓ４１３）。これにより、ジャーナル書込領域１０９ａ上のジャーナルデータは全て無効化され、次にＨＤＤ１０５ａ乃至１０５ｃへのライトアクセスが発生してＳＳＤ１０９にジャーナルすべきデータが発生した場合には、再度ジャーナル書込領域１０９ａの先頭から書込むことができるようになる。
【００６３】
また、Ｓ４１１及びＳ４１３の処理については、本フローチャートのようにジャーナル書込領域１０９ａが枯渇した時点で行うだけでなく、枯渇前であっても、定期的に実行して、ジャーナルポインタ３０１を初期化しても良い。
【００６４】
このようにディスクアレイコントローラ１０３は、ＨＤＤ１０５ａ乃至１０５ｃへのライトアクセスが発生した場合にはＳ６０１乃至Ｓ６０５の処理を行い、必要に応じてＳ６０６及びＳ６０７を実行することで、ＨＤＤ１０５ａ乃至１０５ｃのどのセクタアドレスにどういったデータが書かれたのかというジャーナルをＳＳＤ１０９上に残すことができる。ＳＳＤ１０９は不揮発性の記憶媒体であるので、たとえ電源障害等が発生しても、ジャーナルが揮発することはない。
【００６５】
（データ復旧時の処理の流れ）
図５を参照しながら、本実施形態に係るディスクアレイコントローラ１０３のデータ復旧時の処理の流れを説明する。図５は、データ復旧に係るディスクアレイコントローラ１０３の処理の流れを示すフローチャートである。
【００６６】
突然の電源障害等が発生した場合には、ＨＤＤ１０５ａ乃至１０５ｃのキャッシュメモリ１０５ａ１乃至１０５ｃ１への電力供給が途切れることとなり、当該メモリ上に一時記憶されたデータは揮発（ロスト／消滅）することとなる。このデータは、ＨＤＤ１０５ａ乃至１０５ｃ単独では保障することはできない。
【００６７】
ＨＤＤ１０５ａ乃至１０５ｃのライト（Ｗｒｉｔｅ）キャッシュ機能を有効（ｅｎａｂｌｅ）にしてサーバ１０のシステムを運用していた場合には、ディスクアレイコントローラ１０３からのライトコマンド（書込命令）をＨＤＤ１０５ａ乃至１０５ｃが受信して、当該ライトコマンドの書込データをキャッシュメモリ１０５ａ１乃至１０５ｃ１に格納した段階で、ＨＤＤ１０５ａ乃至１０５ｃはディスクアレイコントローラ１０３に対してＷｒｉｔｅ処理の完了応答を返す。この時点では、実際には当該ライトコマンドに対する書込データは、ＨＤＤ１０５ａ乃至１０５ｃ内のディスク媒体への書込みが完了していない。ディスクアレイコントローラ１０３は、ＨＤＤ１０５ａ乃至１０５ｃ上にある書込データが、何時の時点でディスク媒体へ書込まれたのか、若しくは書込まれていないのかを判断する手段を持たない。
【００６８】
そこで、ディスクアレイコントローラ１０３は、ＳＳＤ１０９にジャーナルしたデータを用いて書込データを復旧させる。
まずディスクアレイコントローラ１０３は、電源遮断から復帰すると、書込データの復旧を行うためにジャーナル読込部２１３を呼び出す（Ｓ５０１）。
【００６９】
ジャーナル読込部２１３は、ジャーナル書込領域１０９ａに記録されているジャーナルデータを１件ずつ読み出すために、ジャーナルデータの読出し位置をジャーナル書込領域１０９ａの先頭に置く（Ｓ５０３）。
【００７０】
そして、ジャーナル読込部２１３は、ジャーナルデータの読出し位置から１件分のジャーナルデータ（ＨＤＤ１０５ａ乃至１０５ｃのセクタアドレスの情報及び書込データ）を読出し、ＨＤＤライト処理部２０３に渡す（Ｓ５０５）。
【００７１】
ＨＤＤライト処理部２０３は、受け取ったジャーナルデータに基づき、ＨＤＤ１０５ａ乃至１０５ｃ上のセクタアドレスの位置に、書込データを書込む（Ｓ５０７）。そして、ジャーナル読込部２１３は、ジャーナルデータの読出し位置をジャーナルデータ１件分進める（Ｓ５０９）。
【００７２】
その後、更新したジャーナルデータ読出し位置と、ジャーナルポインタ３０１が示す位置とを比較する（Ｓ５１１）。この比較の結果、両者が一致していれば（又は読出しポインタの位置がジャーナルポインタ３０１の示す位置を越えていれば）（Ｓ５１１のＹｅｓ）、これ以上有効なジャーナルデータは存在しないと判断することができるため、ディスクアレイコントローラ１０３は処理を終了する。Ｓ５１１での比較の結果、ジャーナルデータの読出し位置がジャーナルポインタ３０１が示す位置より前にあるのであれば（Ｓ５１１のＮｏ）、ディスクアレイコントローラ１０３は再度Ｓ５０５に戻り、次のジャーナルデータの処理を行う。
【００７３】
ディスクアレイコントローラ１０３は、Ｓ５０５からＳ５０９の処理を繰返して、全ての有効なジャーナルデータを読込み、当該データをＨＤＤ１０５ａ乃至１０５ｃへ書込むことで、電源障害が発生した瞬間にＨＤＤ１０５ａ乃至１０５ｃのキャッシュメモリ１０５ａ１乃至１０５ｃ１に記録されていたＷｒｉｔｅデータを、全てＨＤＤ１０５ａ乃至１０５ｃのディスク媒体上に書込むことができる。
【００７４】
（本実施形態の効果）
本実施形態に係るサーバ１０では、ディスクアレイコントローラ１０３に接続されているＨＤＤ１０５ａ乃至１０５ｃのライトキャッシュ機能を有効（ｅｎａｂｌｅ）にして運用しても、ＨＤＤ１０５ａ乃至１０５ｃのキャッシュメモリ１０５ａ１乃至１０５ｃ１上に記録された書込データは、ジャーナルデータとしてＳＳＤ１０９上にも記録される。これにより、突然の電源障害によりキャッシュメモリ１０５ａ１乃至１０５ｃ１上の書込データが保障できない状態になったとしても、ＳＳＤ１０９上のジャーナルデータから書込データを復旧できる。つまり、ＨＤＤ１０５ａ乃至１０５ｃのＷｒｉｔｅキャッシュ機能を有効（ｅｎａｂｌｅ）にした場合でも、安全にシステムを運用することが可能となる。
【００７５】
そして、ＨＤＤ１０５ａ乃至１０５ｃのライトキャッシュ機能を有効（ｅｎａｂｌｅ）にして運用すれば、ディスクアレイコントローラ１０３からのライトコマンドに対して、その書込データがディスクアレイコントローラ１０３から送られてＨＤＤ１０５ａ乃至１０５ｃのキャッシュメモリ１０５ａ１乃至１０５ｃ１上に記憶された時点で、ＨＤＤ１０５ａ乃至１０５ｃは書込み完了の旨の応答をディスクアレイコントローラ１０３に返すことができる。つまり、ＨＤＤ１０５ａ乃至１０５ｃのディスクアクセスに伴うヘッドのシーク／位置決めや、ディスクの回転待ちといった機械的動作を行わずにライトコマンドへの応答を返すことができるので、当該機械的動作を伴う場合（ライトキャッシュ機能を無効とする場合）と比べて、数倍乃至数十倍の書込み速度の向上を図ることが可能となる。
【００７６】
（付記事項）
なお、前述の各実施形態の構成は、組み合わせたり或いは一部の構成部分を入れ替えたりしてもよい。また、本発明の構成は前述の実施形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加えてもよい。
尚、前述の各実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００７７】
（付記１）
不揮発性の１以上の第１の記憶装置と、前記第１の記憶装置より高速に書込可能で不揮発性の第２の記憶装置と、前記第１の記憶装置にデータを書込む第１の書込手段と、１以上の前記第１の記憶装置にそれぞれ書込むデータと、当該データを書込む前記第１の記憶装置のセクタ情報とを前記第２の記憶装置に記憶させる第２の書込手段と、書込んだデータが前記第１の記憶装置上で不揮発となった後、前記第２の記憶装置が記憶する対応するデータを無効化する無効化手段とを備える情報処理装置。
【００７８】
（付記２）
前記第２の記憶装置からデータとセクタ情報とを読込む読込手段を更に備え、前記第１の書込手段は、電源障害からの復帰時に、前記読込手段により前記第２の記憶装置から読込まれたデータを、セクタ情報に応じた前記第１の記憶装置上の位置に書込む、付記１記載の情報処理装置。
【００７９】
（付記３）
前記第２の記憶装置が記憶する、有効なデータとセクタ情報の領域を示すための位置情報を制御する手段を更に備え、前記読込手段は、前記位置情報に基づき、読込むデータとセクタ情報とを判別する、付記２記載の情報処理装置。
【００８０】
（付記４）
１以上の前記第１の記憶装置に対して、書込んだデータを前記第１の記憶装置上で不揮発とするためのコマンドを発行する手段を更に備える、付記１乃至付記３のいずれか１項記載の情報処理装置。
【００８１】
（付記５）
前記第２の記憶装置はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である、付記１乃至付記４のいずれか１項記載の情報処理装置。
【００８２】
（付記６）
前記第１の記憶装置がそれぞれ有するキャッシュ機能が有効である、付記１乃至付記５のいずれか１項記載の情報処理装置。
【００８３】
（付記７）
不揮発性の１以上の前記第１の記憶装置にデータを書込む第１の書込手段と、１以上の前記第１の記憶装置にそれぞれ書込むデータと、当該データを書込む前記第１の記憶装置のセクタ情報とを、前記第１の記憶装置より高速に書込可能で不揮発性の前記第２の記憶装置に記憶させる第２の書込手段と、書込んだデータが前記第１の記憶装置上で不揮発となった後、前記第２の記憶装置が記憶する対応するデータを無効化する無効化手段とを備える、制御装置。
【００８４】
（付記８）
不揮発性の１以上の前記第１の記憶装置にデータを書込むステップと、１以上の前記第１の記憶装置にそれぞれ書込むデータと、当該データを書込む前記第１の記憶装置のセクタ情報とを、前記第１の記憶装置より高速に書込可能で不揮発性の前記第２の記憶装置に記憶させるステップと、書込んだデータが前記第１の記憶装置上で不揮発となった後、前記第２の記憶装置が記憶する対応するデータを無効化するステップとを備える、情報処理方法。
【符号の説明】
【００８５】
１０・・・サーバ、１０１・・・ホスト、１０３・・・ディスクアレイコントローラ、１０５・・・ディスクアレイ、１０５ａ、１０５ｂ、１０５ｃ・・・ＨＤＤ、１０９・・・ＳＳＤ、２０３・・・ＨＤＤライト制処理部、２０５・・・ジャーナル書込部、２１３・・・ジャーナル読込部
【図１】
0006030308.tif 000002
【図２】
0006030308.tif 000003
【図３】
0006030308.tif 000004
【図４】
0006030308.tif 000005
【図５】
0006030308.tif 000006