(57)【特許請求の範囲】
【請求項１】
複数のディスク記憶装置と、
不揮発性半導体記憶装置と、
前記ディスク記憶装置に読み書きされるデータを一時的に記憶するキャッシュメモリを少なくとも含むストレージコントローラと、
を有し、
前記ストレージコントローラは、
前記ディスク記憶装置に設定された論理ボリュームに格納されるデータの内、アクセス頻度に応じて一部のデータを前記複数のディスク記憶装置のいずれかより読み出して前記不揮発性半導体記憶装置に複製し、
前記論理ボリュームへのリード要求を受信した際、前記キャッシュメモリにリードデータが格納されている場合には前記キャッシュメモリから読み出した前記リードデータを前記リード要求の送信元に送信し、前記キャッシュメモリに前記リードデータが格納されていない場合であって、前記リードデータが前記不揮発性半導体記憶装置に複製されている場合には前記不揮発性半導体記憶装置から読み出した前記リードデータを前記キャッシュメモリに格納し、前記リードデータが前記不揮発性半導体記憶装置に複製されていない場合には前記複数のディスク記憶装置のいずれかから読み出した前記リードデータを前記キャッシュメモリに格納し、前記キャッシュメモリに格納した前記リードデータを前記リード要求の送信元に送信し、
前記論理ボリュームへのライト要求を受信した際、前記キャッシュメモリにライトデータを書き込み、前記ライトデータの旧データが前記不揮発性半導体記憶装置に複製されている場合に、前記ライトデータを前記キャッシュメモリから読み出して前記複数のディスク記憶装置のいずれかに書き込み、前記半導体記憶装置に格納される前記旧データを開放する、
ことを特徴とするストレージ装置。
【請求項２】
前記一部のデータを前記キャッシュメモリを介さずに前記複数のディスク記憶装置のいずれかより読み出して前記不揮発性半導体記憶装置に複製する、
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記リード要求の処理と非同期に、前記一部のデータを前記複数のディスク記憶装置のいずれかから前記不揮発性半導体記憶装置に複製する、
ことを特徴とする請求項１乃至２のいずれかに記載のストレージ装置。
【請求項４】
前記ストレージコントローラは、
前記複数のディスク記憶装置に対してＲＡＩＤ（Redundant Array of Independent Disks）制御する、
ことを特徴とする請求項１乃至３のいずれかに記載のストレージ装置。
【請求項５】
前記一部のデータは、前記論理ボリュームに格納されるデータの内、アクセス頻度が閾値を上回るデータである、
ことを特徴とする請求項１乃至４のいずれかに記載のストレージ装置。
【請求項６】
前記ストレージコントローラは、
前記論理ボリューム内に格納されるデータへのアクセス頻度に応じて、前記不揮発性半導体記憶装置に格納されているデータを開放する、
ことを特徴とする請求項１乃至５のいずれかに記載のストレージ装置。
【請求項７】
前記ストレージコントローラは、前記論理ボリュームへ前記ライト要求を受信した際、前記旧データが前記不揮発性半導体記憶装置に複製されている場合に、前記不揮発性半導体記憶装置から読み出した前記旧データを前記キャッシュメモリに格納し、少なくとも前記ライトデータと前記旧データとからパリティデータを作成し、前記ライトデータと前記パリティデータとを前記複数のディスク装置のいずれかに格納する、
ことを特徴とする請求項１乃至６のいずれかに記載のストレージ装置。
【請求項８】
前記ストレージコントローラは、
前記一部のデータを前記複数のディスク記憶装置のいずれかより読み出して前記不揮発性半導体記憶装置に複製する際に前記一部のデータが前記不揮発性半導体記憶装置に格納されていることを示すように更新される管理テーブルを保持し、
前記リードデータが前記不揮発性半導体記憶装置に複製されているかを判断する際に、前記管理テーブルを参照する、
ことを特徴とする請求項１乃至７いずれかに記載のストレージ装置。
【請求項９】
前記ストレージコントローラは、前記リードデータが前記キャッシュメモリに格納されている場合においても、前記リードデータに対する前記アクセス頻度を上げる、
ことを特徴とする請求項１乃至８いずれかに記載のストレージ装置。
【請求項１０】
前記ストレージコントローラは、
前記キャッシュメモリに加え、計算機に接続する少なくとも１以上の第１制御部と、プロセッサと、前記複数のディスク記憶装置及び前記不揮発性半導体記憶装置に接続する少なくとも１以上の第２制御部と、を有し、
前記第２制御部が、前記一部のデータを前記複数のディスク記憶装置のいずれかより読み出して前記不揮発性半導体記憶装置に複製する、
ことを特徴とする請求項１乃至９のいずれかに記載のストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置に関し、例えば、ハードディスクドライブとフラッシュメモリとを搭載したストレージ装置に適用して好適なものである。
【背景技術】
【０００２】
近年、ハードディスクドライブの他にデータを格納するためのデバイスとして、不揮発性メモリであるフラッシュメモリが注目されている。フラッシュメモリは、一般に、ハードディスクドライブと比較し、数十倍以上低消費電力であり、高速に読み出しが可能である。また、フラッシュメモリは、ハードディスクドライブのように機械的な駆動部分が不要なため小型であり、故障に対する耐性も一般的には高い。
【０００３】
このようなフラッシュメモリとハードディスクドライブとを混在させ、それら複数の記憶階層を好適に制御し、データの属性やボリュームに指定されるポリシーに対応した記憶階層を割り当てる技術が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００７−１１５２３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、例えば、ホスト装置とのＩ／Ｏ（Input/Output）処理を行うプロセッサが、ハードディスクドライブからフラッシュメモリに大量のデータを移動するような場合には、プロセッサが当該移動処理に多くの時間を割かれるため、一時的にホスト装置とのＩ／Ｏ処理性能が大幅に低下するおそれがある。
【０００５】
本発明は以上の点を考慮してなされたもので、ホスト装置とのアクセス性能を向上させ得るストレージ装置を提案するものである。
【課題を解決するための手段】
【０００６】
かかる課題を解決するために本発明においては、ストレージ装置において、複数のディスク記憶装置と、不揮発性半導体記憶装置と、前記ディスク記憶装置に読み書きされるデータを一時的に記憶するキャッシュメモリを少なくとも含むストレージコントローラと、を有し、前記ストレージコントローラは、前記ディスク記憶装置に設定された論理ボリュームに格納されるデータの内、アクセス頻度に応じて一部のデータを前記複数のディスク記憶装置のいずれかより読み出して前記不揮発性半導体記憶装置に複製し、前記論理ボリュームへのリード要求を受信した際、前記キャッシュメモリにリードデータが格納されている場合には前記キャッシュメモリから読み出した前記リードデータを前記リード要求の送信元に送信し、前記キャッシュメモリに前記リードデータが格納されていない場合であって、前記リードデータが前記不揮発性半導体記憶装置に複製されている場合には前記不揮発性半導体記憶装置から読み出した前記リードデータを前記キャッシュメモリに格納し、前記リードデータが前記不揮発性半導体記憶装置に複製されていない場合には前記複数のディスク記憶装置のいずれかから読み出した前記リードデータを前記キャッシュメモリに格納し、前記キャッシュメモリに格納した前記リードデータを前記リード要求の送信元に送信し、前記論理ボリュームへのライト要求を受信した際、前記キャッシュメモリにライトデータを書き込み、前記ライトデータの旧データが前記不揮発性半導体記憶装置に複製されている場合に、前記ライトデータを前記キャッシュメモリから読み出して前記複数のディスク記憶装置のいずれかに書き込み、前記半導体記憶装置に格納される前記旧データを開放するようにした。
【０００７】
従って、ディスク状記憶デバイスに格納されているデータを不揮発メモリデバイスに複製する場合にも、一時的にホスト装置とのＩ／Ｏ処理性能が大幅に低下するのを未然かつ有効に防止し、制御部の負荷を格段に軽減することができる。
【発明の効果】
【００１０】
本発明によれば、ホスト装置とのアクセス性能を向上させ得るストレージ装置を実現することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の一実施の形態を、図面を参照して詳細に説明する。
【００１２】
図１は、本実施の形態によるストレージシステム１の構成を示している。ストレージシステム１は、ホスト装置２及びストレージ装置３がＳＡＮ（Storage Area Network）４を介して接続されることにより構成されている。
【００１３】
ホスト装置２は、ＣＰＵ（Central Processing Unit）、メモリ等の情報処理資源（図示せず）を備えたコンピュータ装置であり、例えば、パーソナルコンピュータや、ワークステーション、メインフレーム等から構成される。また、ホスト装置２は、ＳＡＮ４と接続するためのホストバスアダプタ（FC HBA）（図示せず）を備えて構成される。さらに、ホスト装置２は、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置（図示せず）と、モニタディスプレイやスピーカ等の情報出力装置（図示せず）とを備えて構成される。
【００１４】
ＳＡＮ４は、ホスト装置２が提供する記憶資源におけるデータの管理単位であるブロックを単位として、ホスト装置２とストレージ装置３との間で、コマンドやデータ等の授受を行う。この場合、ホスト装置２とストレージ装置３との間で行われる通信プロトコルは、ファイバチャネルプロトコルである。
【００１５】
なお、ホスト装置２とストレージ装置３との間は、必ずしもＳＡＮ４を介して接続する必要はなく、ＬＡＮ等を介して接続するようにしてもよい。例えば、ＬＡＮを介して接続する場合には、例えばＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）に従ってコマンドやデータ等の授受を行う。また、ＬＡＮを介して接続する場合には、ホストバスアダプタに代えて、例えば、ＬＡＮ対応のネットワークカード等を適用することができる。
【００１６】
ストレージ装置３は、データを記憶するための複数のハードディスクドライブ（HDD :Hard Disk Drive）５及び複数のフラッシュメモリ（FM :Flash Memory）６、並びにハードディスクドライブ５及びフラッシュメモリ６に対するデータの入出力を制御するストレージコントローラ７を備えて構成される。
【００１７】
ストレージコントローラ７は、複数のチャネル制御部１１、制御情報格納領域１２が各々接続された複数のプロセッサ１３、キャッシュメモリ１４が各々接続された複数のキャッシュメモリ制御部１５、エクスパンダ（Expander）１６が各々接続された複数のＦＭ／ＨＤＤ制御部１７及び管理装置１８が相互結合部１９を介して接続されることにより構成されている。また、ストレージコントローラ７は、ハードディスクドライブ５及びフラッシュメモリ６とエクスパンダ１６を介して接続されている。
【００１８】
チャネル制御部１１は、例えば、ホスト装置２から受信した要求（例えば、リード要求やライト要求）をプロセッサ１３に通知して、プロセッサ１３からの指示（例えば、リード（読み出し）指示やライト（書き込み）指示）により、キャッシュメモリ制御部１５を介して、ホスト装置２とキャッシュメモリ１４との間のデータの転送を行う。
【００１９】
プロセッサ１３は、ストレージコントローラ７全体を制御し、例えば、チャネル制御から通知された要求を解釈して、チャネル制御部１１及びＦＭ／ＨＤＤ制御部１７に指示を通知する。また、プロセッサ１３は、ハードディスクドライブ５に対して、ＲＡＩＤ（Redundant Arrays of Independent Disks）制御を行うことにより、ストレージ装置３の信頼性、可用性及び性能を向上させることができる。
【００２０】
この場合、プロセッサ１３は、ハードディスクドライブ５をＲＡＩＤ方式で運用する。プロセッサ１３は、１又は複数のハードディスクドライブ５により提供される物理的な記憶領域（ＲＡＩＤグループ）上に、１又は複数の論理的なボリューム（以下、これを論理ボリュームと呼ぶ）を設定する。そして、データは、この論理ボリューム内に所定の大きさのブロック（以下、これを論理ブロックと呼ぶ）単位で記憶される。
【００２１】
各論理ボリュームには、それぞれ固有の識別子（以下、これをＬＵ（Logical Unit number）と呼ぶ）が付与される。本実施の形態の場合、データの入出力は、このＬＵと、各論理ブロックにそれぞれ付与されるその論理ブロックに固有の番号（LBA :Logical Block Address）とを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
【００２２】
制御情報格納領域１２は、例えば、キャッシュメモリ１４の管理情報やストレージ装置３の構成情報等の情報を格納するためのメモリである。また、制御情報格納領域１２には、論理ボリューム管理テーブル２０が格納されている。論理ボリューム管理テーブル２０の具体的な構成については、後述する。
【００２３】
キャッシュメモリ制御部１５は、キャッシュメモリ１４を制御し、チャネル制御部１１又はＦＭ／ＨＤＤ制御部１７から転送されたデータをキャッシュメモリ１４に格納する。キャッシュメモリ１４は、ハードディスクドライブ５やフラッシュメモリ６に格納されるべきデータやホスト装置２に送信すべきデータを一時的に格納するためのメモリである。
【００２４】
ＦＭ／ＨＤＤ制御部１７は、ハードディスクドライブ５及びフラッシュメモリ６を制御し、プロセッサ１３からの指示により、エクスパンダ１６を介して、ハードディスクドライブ５及びフラッシュメモリ６とキャッシュメモリ１４との間のデータの転送を行う。また、ＦＭ／ＨＤＤ制御部１７は、プロセッサ１３からの指示により、エクスパンダ１６を介して、ハードディスクドライブ５とフラッシュメモリ６との間のデータの転送を行う。さらに、ＦＭ／ＨＤＤ制御部１７は、ハードディスクドライブ５に対して、ＲＡＩＤ（Redundant Arrays of Independent Disks）制御を行うことにより、ストレージ装置３の信頼性、可用性及び性能を向上させることができる。
【００２５】
管理装置１８は、ストレージ装置３全体の動作を操作する管理端末であり、例えば、ノート型のパーソナルコンピュータから構成される。管理装置１８は、オペレータの操作に応じて各種処理の指令を行う。オペレータは、例えば、管理装置１８を操作してストレージ装置３の各種状態を管理装置１８の表示部に表示させることにより、ストレージ装置３の状態を確認することができる。
【００２６】
図２は、ＦＭ／ＨＤＤ制御部１７の構成を示している。ＦＭ／ＨＤＤ制御部１７は、パリティ生成部２１、内部転送ＤＭＡ（Direct Memory Access）コントローラ２２、外部転送ＤＭＡコントローラ２３、プロトコル制御部２４、ＦＭステージングコントローラ２５、メモリコントローラ２６及びメモリ２７を備えて構成される。
【００２７】
パリティ生成部２１は、例えば、プロセッサ１３からの指示により、キャッシュメモリ制御部１５を介して、キャッシュメモリ１４からデータを読み出してパリティデータを生成し、生成したパリティデータをキャッシュメモリ制御部１５を介して、キャッシュメモリ１４に格納する。
【００２８】
内部転送ＤＭＡコントローラ２２は、例えば、プロセッサ１３からの指示により、メモリコントローラ２６を介して、キャッシュメモリ１４とメモリ２７との間のデータの転送を行う。
【００２９】
外部転送ＤＭＡコントローラ２３は、例えば、プロセッサ１３からの指示により、自己の外部転送ＤＭＡコントローラ２３及びメモリコントローラ２６を介して、ハードディスクドライブ５及びフラッシュメモリ６とメモリ２７との間のデータの転送を行う。
【００３０】
ＦＭステージングコントローラ２５は、例えば、プロセッサ１３からの指示により、エクスパンダ１６を介して、ハードディスクドライブ５とフラッシュメモリ６との間のデータの転送を行う。また、ＦＭステージングコントローラ２５には、備え付けのメモリ（図示せず）に、ＦＭ管理ＦＩＦＯ（First In First Out）３１が格納されている。ＦＭ管理ＦＩＦＯ３１の具体的な構成については、後述する。
【００３１】
メモリコントローラ２６は、メモリ２７を制御し、キャッシュメモリ１４又はハードディスクドライブ５若しくはフラッシュメモリ６から転送されたデータをメモリ２７に格納する。メモリ２７には、データ３２、転送パラメータ３３、ＦＭ管理テーブル３４及び保守情報管理テーブル３５が格納されている。
【００３２】
データ３２は、キャッシュメモリ１４又はハードディスクドライブ５若しくはフラッシュメモリ６から転送されたデータである。転送パラメータ３３は、プロセッサ１３からの指示により設定される、内部転送ＤＭＡコントローラ２２及び外部転送ＤＭＡコントローラ２３が転送するデータ３２のアドレス、転送先のアドレス及び転送長等のパラメータである。ＦＭ管理テーブル３４及び保守情報管理テーブル３５の具体的な構成については、後述する。
【００３３】
次に、制御情報格納領域１２、ＦＭステージングコントローラ２５のメモリ又はメモリ２７に格納されている各種テーブルについて説明する。
【００３４】
図３は、ＦＭ管理テーブル３４の構成を示している。ＦＭ管理テーブル３４は、ハードディスクドライブ５のアドレスとフラッシュメモリ６の管理単位であるＦＭページ番号との対応関係を管理する。ＦＭ管理テーブル３４は、ＨＤＤアドレス欄３４Ａ、ＦＭ領域確保フラグ欄３４Ｂ、ＦＭページ番号欄３４Ｃ及びＦＭページ番号ポインタ欄３４Ｄから構成されている。
【００３５】
ここで、フラッシュメモリ６の管理単位について説明する。フラッシュメモリ６は、ＦＭブロックごとに管理されている。ＦＭブロックは、ＦＭブロックのアドレスを一意に識別するＦＭブロックアドレスにより、数１００（Kbytes）ごとの単位で管理されている。また、ＦＭブロックは、ＦＭブロックアドレスに格納位置を特定するオフセットを加算した値であるＦＭページ番号ごとに管理されている。ＦＭページ番号は、５１２（bytes）ごとの単位で管理されており、セクタ単位で管理されている。
【００３６】
なお、ハードディスク５は、ＨＤＤアドレスにより、セクタ単位、すなわち、５１２（bytes）ごとの単位で管理されている。フラッシュメモリ６では、データのライト及びリードについては、ハードディスク５と同様に、５１２（bytes）ごとの単位で行うことができるが、データの消去については、ＦＭブロックごとの単位でしか行うことができないようになされている。また、フラッシュメモリ６では、データのライトについては、予めＦＭブロックごとの単位でデータを消去した後でなければ、行うことができない。
【００３７】
ＨＤＤアドレス欄３４Ａには、ハードディスクドライブ５のアドレスを一意に識別するＨＤＤアドレスが格納される。
【００３８】
ＦＭ領域確保フラグ欄３４Ｂは、ＨＤＤアドレスに格納されているデータがフラッシュメモリ６に格納されているか否かを管理する。ＦＭ領域確保フラグ欄３４Ｂには、ハードディスクドライブ５からフラッシュメモリ６へのデータの複製（以下、ＦＭステージングと呼ぶ。）が行われた場合には、「１」が格納される一方、ＦＭステージングが行われたデータを開放した場合には、「０」が格納される。すなわち、ＦＭ領域確保フラグ欄３４Ｂには、ＨＤＤアドレスに格納されているデータがフラッシュメモリ６に格納されている場合には、「１」が格納される一方、ＨＤＤアドレスに格納されているデータがフラッシュメモリ６に格納されていない場合には、「０」が格納される。
【００３９】
ＦＭページ番号欄３４Ｃには、ＦＭページ番号が格納される。ＦＭページ番号ポインタ欄３４Ｄには、同一のＦＭブロックに格納されているデータのＨＤＤアドレスが格納される。
【００４０】
この場合、ＦＭステージングコントローラ２５は、例えば、ＦＭ領域確保フラグ欄３４Ｂに「１」が格納されているＨＤＤアドレスの領域に、プロセッサ１３からリード指示が通知された場合には、対応するＦＭページ番号欄３４ＣのＦＭページ番号の領域からデータを読み出す。
【００４１】
また、ＦＭステージングコントローラ２５は、例えば、ＦＭ領域確保フラグ欄３４Ｂに「１」が格納されているＨＤＤアドレスの領域に、プロセッサ１３からライト指示が通知された場合には、ライト指示に対応するデータをＨＤＤアドレスの領域に格納し、対応するＦＭ領域確保フラグ欄３４ＢのＦＭ領域確保フラグを開放する（「１」から「０」に変更する）。
【００４２】
さらに、ＦＭステージングコントローラ２５は、例えば、ＦＭページ番号ポインタ欄３４ＤのＦＭページ番号ポインタを参照することにより、同一のＦＭブロックアドレスのすべてのＦＭページ番号のＦＭ領域確保フラグを開放することにより、ＦＭブロックを開放する。なお、このとき、ＦＭステージングコントローラ２５は、ＦＭブロックに格納されているデータを消去するようにしても良い。これにより、ＦＭ／ＨＤＤ制御部１７は、迅速に次回のＦＭステージングを行うことができる。
【００４３】
図４は、ＦＭ管理ＦＩＦＯ３１の構成を示している。ＦＭ管理ＦＩＦＯ３１は、空いているＦＭブロックアドレスを管理し、書き込むＦＭブロックを平均化する。ＦＭ管理ＦＩＦＯ３１は、ＦＭブロックアドレス欄３１Ａ、確保ポインタ３１Ｂ、開放ポインタ３１Ｃから構成されている。
【００４４】
ＦＭブロックアドレス欄３１Ａには、ＦＭブロックアドレスが格納されている。確保ポインタ３１Ｂは、ＦＭブロックアドレスの間を指し示すポインタであり、ＦＭブロックアドレスを確保するごとに、１つ下のＦＭブロックアドレスの間を指し示す。開放ポインタ３１Ｃは、ＦＭブロックアドレスの間を指し示すポインタであり、ＦＭブロックアドレスを開放するごとに、１つ下のＦＭブロックアドレスの間を指し示す。
【００４５】
この場合、ＦＭ管理ＦＩＦＯ３１では、確保ポインタ３１Ｂよりも下であり、開放ポインタ３１Ｃよりも上のＦＭブロックアドレスについては、空いているＦＭブロックアドレスであることを示している。また、ＦＭ管理ＦＩＦＯ３１では、確保ポインタ３１Ｂと開放ポインタ３１Ｃとが同一の位置にある場合には、ＦＭブロックアドレスに空きがないことを示している。なお、ＦＭ管理ＦＩＦＯ３１では、確保ポインタ３１Ｂ又は開放ポインタ３１Ｃが最後のＦＭブロックアドレスの下まで移動した場合には、最初のＦＭブロックアドレスの上まで移動する。
【００４６】
ＦＭステージングコントローラ２５は、例えば、確保ポインタ３１Ｂを１つ下のＦＭブロックアドレスの間に移動することにより、ＦＭブロックアドレスを確保して、当該ＦＭブロックアドレスを使用する。また、ＦＭステージングコントローラ２５は、例えば、開放ポインタ３１Ｃを１つ下のＦＭブロックアドレスの間に移動することにより、ＦＭブロックアドレスを開放して、当該ＦＭブロックアドレスの使用を停止する。なお、ＦＭステージングコントローラ２５は、ＦＭブロックアドレスを開放する場合には、当該ＦＭブロックに対応するすべてのＦＭ管理テーブル３４のＨＤＤアドレスにおけるＦＭ領域確保フラグを開放する（「１」から「０」に変更する）。
【００４７】
図５は、論理ボリューム管理テーブル２０の構成を示している。論理ボリューム管理テーブル２０は、カウンタにより頻度の高いアクセスの種類を計測し、ＦＭステージングを行うか否かを管理する。この場合、ＦＭステージングコントローラ２５は、フラッシュメモリ６の性能が生かせるデータ、すなわち、ランダムライトアクセスや、リードアクセスの回数の大きいデータについてＦＭステージングを行う。
【００４８】
論理ボリューム管理テーブル２０は、論理ボリューム欄２０Ａ、ＨＤＤアドレス欄２０Ｂ、ランダムライトカウンタ欄２０Ｃ、シーケンシャルライトカウンタ欄２０Ｄ、リードカウンタ欄２０Ｅ、ＦＭステージング指示フラグ欄２０Ｆ及びＨＤＤデステージ禁止フラグ欄２０Ｇから構成されている。
【００４９】
論理ボリューム欄２０Ａには、論理ボリュームを一意に識別する論理ボリューム番号が格納される。ＨＤＤアドレス欄２０Ｂには、ＨＤＤアドレスが格納される。ランダムライトカウンタ欄２０Ｃには、当該ＨＤＤアドレスへのランダムライトアクセスの回数が計測されて格納される。シーケンシャルライトカウンタ欄２０Ｄには、当該ＨＤＤアドレスへのシーケンシャルライトアクセスの回数が計測されて格納される。リードカウンタ欄２０Ｅには、当該ＨＤＤアドレスへのリードアクセスの回数が計測されて格納される。
【００５０】
ＦＭステージング指示フラグ欄２０Ｆには、当該ＨＤＤアドレスの領域のデータについてＦＭステージングを行うか否かを管理する。ＦＭステージング指示フラグ欄２０Ｆには、ＦＭステージングを行う場合には、「１」が格納される一方、ＦＭステージングを行わない場合には、「０」が格納される。
【００５１】
ＨＤＤデステージ禁止フラグ欄２０Ｇは、当該ＨＤＤアドレスの領域に、キャッシュメモリ１４からハードディスクドライブ５へのデータの複製（以下、ＨＤＤデステージと呼ぶ。）を禁止するか否かを管理する。ＨＤＤデステージ禁止フラグ欄２０Ｇには、ＨＤＤデステージを禁止する場合には、「１」が格納される一方、ＦＭステージングを禁止しない場合には、「０」が格納される。
【００５２】
図６は、保守情報管理テーブル３５の構成を示している。保守情報管理テーブル３５は、モジュール化されているフラッシュメモリ６のコレクタブルエラー発生回数を管理する。
【００５３】
ここで、コレクタブルエラー発生回数について説明する。フラッシュメモリ６は、ビット故障の確率が高いため、１ビットの故障が起きても継続動作が可能なＥＣＣ（Error Correction Code）が付与されている。この場合、ＥＣＣは、１ビットを訂正し、２ビットのランダムエラーを検出することができる。
【００５４】
コレクタブルエラーとは、継続動作が可能な１ビットの故障のことをいう。通常は、コレクタブルエラーが発生しても継続して動作が可能であるため、部品交換を行う必要はない。しかし、信頼性の求められるストレージ装置では、コレクタブルエラーが複数回発生した場合、２ビット以上の致命的な故障であるアンコレクタブルエラーが発生する確率が高まるため、フラッシュメモリ６の交換を指示する必要がある。そのため、モジュール化されているフラッシュメモリ６のコレクタブル発生回数を管理する。
【００５５】
保守情報管理テーブル３５は、ＦＭモジュール番号欄３５Ａ、最大書き込み回数欄３５Ｂ及びコレクタブルエラー発生回数欄３５Ｃから構成されている。
【００５６】
ＦＭモジュール番号欄３５Ａには、モジュール化されているフラッシュメモリ６を一意に識別するＦＭモジュール番号が格納される。最大書き込み回数欄３５Ｂには、モジュール化されているフラッシュメモリ６のうち、書き込み回数が一番大きいＦＭブロックの書き込み回数である最大書き込み回数が格納される。コレクタブルエラー発生回数欄３５Ｃには、モジュール化されているフラッシュメモリ６のコレクタブルエラー発生回数が格納される。なお、メモリコントローラ２６は、フラッシュメモリ６の書き込み回数及びコレクタブルエラー発生回数を計測して管理する。
【００５７】
次に、本実施の形態におけるストレージシステム１のストレージ装置３によるＦＭステージング処理について説明する。
【００５８】
図７及び図８は、このストレージシステム１のストレージ装置３のＦＭステージング処理に関する、ストレージ装置３のＦＭステージングコントローラ２５の具体的な処理手順を示したフローチャートの一例である。
【００５９】
ＦＭステージングコントローラ２５は、例えば、プロセッサ１３からＦＭステージング実行指示が通知されると、ＦＭステージングコントローラ２５内の制御プログラム（図示せず）を実行することにより、図７及び図８に示すＦＭステージング処理手順ＲＴ１に従って、ＦＭ管理ＦＩＦＯ３１を参照して空いているＦＭブロックがあるか否かをチェックする（ＳＰ１）。
【００６０】
具体的に、ＦＭステージングコントローラ２５は、例えば、確保ポインタ３１Ｂよりも下であり、開放ポインタ３１Ｃよりも上のＦＭブロックアドレスがある場合には、空いているＦＭブロックがあると判断し、確保ポインタ３１Ｂと開放ポインタ３１Ｃとが同一の位置にある場合には、空いているＦＭブロックがないと判断する。
【００６１】
そして、ＦＭステージングコントローラ２５は、空いているＦＭブロックがない場合（ＳＰ１：ＮＯ）には、ＦＭブロック開放処理を実行する（ＲＴ２）。ＦＭブロック開放処理については、後述する。これに対して、ＦＭステージングコントローラ２５は、空いているＦＭブロックがある場合（ＳＰ１：ＹＥＳ）には、ＦＭ管理ＦＩＦＯ３１の確保ポインタ３１Ｂを移動して、ＦＭブロックを確保する（ＳＰ２）。
【００６２】
続いて、ＦＭステージングコントローラ２５は、制御情報格納領域１２から論理ボリューム管理テーブル２０を読み出す（ＳＰ３）。続いて、ＦＭステージングコントローラ２５は、読み出した論理ボリューム管理テーブル２０のＨＤＤアドレスのうち、１つのＨＤＤアドレスを選択する（ＳＰ４）。
【００６３】
続いて、ＦＭステージングコントローラ２５は、選択したＨＤＤアドレスのＦＭステージング指示フラグが「１」であるか否かをチェックする（ＳＰ５）。そして、ＦＭステージングコントローラ２５は、選択したＨＤＤアドレスのＦＭステージング指示フラグが「１」でない、すなわち、「０」である場合（ＳＰ５：ＮＯ）には、当該ＨＤＤアドレスの領域のデータのＦＭステージングが行われないため、ステップＳＰ１２に進む。これに対して、ＦＭステージングコントローラ２５は、選択したＨＤＤアドレスのＦＭステージング指示フラグが「１」である場合（ＳＰ５：ＹＥＳ）には、メモリ２７からＦＭ管理テーブル３４を読み出す（ＳＰ６）。
【００６４】
続いて、ＦＭステージングコントローラ２５は、論理ボリューム管理テーブル２０の選択したＨＤＤアドレスのＦＭ領域確保フラグが「１」であるか否かをチェックする（ＳＰ７）。そして、ＦＭステージングコントローラ２５は、当該ＨＤＤアドレスのＦＭ領域確保フラグが「１」である場合（ＳＰ７：ＹＥＳ）には、すでに当該ＨＤＤアドレスの領域のデータのＦＭステージングが行われているため、ステップＳＰ１２に進む。
【００６５】
これに対して、ＦＭステージングコントローラ２５は、当該ＨＤＤアドレスのＦＭ領域確保フラグが「１」でない、すなわち、「０」である場合（ＳＰ７：ＮＯ）には、論理ボリューム管理テーブル２０の選択したＨＤＤアドレスにおけるＨＤＤデステージ禁止フラグ欄２０ＧのＨＤＤデステージ禁止フラグを「０」から「１」に変更し（ＳＰ８）、当該ＨＤＤアドレスへのＨＤＤデステージを禁止する。これにより、ＦＭステージングコントローラ２５は、ＦＭステージング中にＨＤＤデステージが行われるのを未然かつ有効に防止することができる。
【００６６】
続いて、ＦＭステージングコントローラ２５は、選択したＨＤＤアドレスの領域のデータを読み出す（ＳＰ９）。続いて、ＦＭステージングコントローラ２５は、読み出したデータをＦＭブロックに書き込む（ＳＰ１０）。すなわち、ＦＭステージングコントローラ２５は、選択したＨＤＤアドレスの領域のデータのＦＭステージングを行う。
【００６７】
続いて、ＦＭステージングコントローラ２５は、論理ボリューム管理テーブル２０の選択したＨＤＤアドレスにおけるＨＤＤデステージ禁止フラグ欄２０ＧのＨＤＤデステージ禁止フラグを「１」から「０」に変更し（ＳＰ１１）、当該ＨＤＤアドレスへのＨＤＤデステージの禁止を解除する。
【００６８】
やがて、ＦＭステージングコントローラ２５は、論理ボリューム管理テーブル２０のすべてのＨＤＤアドレスが選択されたか否かをチェックする（ＳＰ１２）。そして、ＦＭステージングコントローラ２５は、すべてのＨＤＤアドレスが選択されていない場合（ＳＰ１２：ＮＯ）には、ＦＭ管理テーブル３４を参照して、確保したＦＭブロックに空いているＦＭページ番号があるか否かをチェックする（ＳＰ１３）。
【００６９】
そして、ＦＭステージングコントローラ２５は、確保したＦＭブロックに空いているＦＭページ番号がある場合（ＳＰ１３：ＹＥＳ）には、ステップＳＰ４に戻り、再び、読み出した論理ボリューム管理テーブル２０のＨＤＤアドレスのうち、１つのＨＤＤアドレスを選択し（ＳＰ４）、この後、上述の場合と同様の処理を繰り返す（ＳＰ４〜ＳＰ１３）。これに対して、ＦＭステージングコントローラ２５は、確保したＦＭブロックに空いているＦＭページ番号がない場合（ＳＰ１３：ＮＯ）には、ステップＳＰ１に戻り、再び、ＦＭ管理ＦＩＦＯ３１を参照して空いているＦＭブロックがあるか否かをチェックし（ＳＰ１）、この後、上述の場合と同様の処理を繰り返す（ＳＰ１〜ＳＰ１３）。
【００７０】
これに対して、ＦＭステージングコントローラ２５は、すべてのＨＤＤアドレスが選択された場合（ＳＰ１２：ＹＥＳ）には、この後、ＦＭステージングコントローラ２５内の制御プログラム（図示せず）を終了することにより、この図７及び図８に示すＦＭステージング処理手順ＲＴ１を終了する（ＳＰ１４）。
【００７１】
次に、本実施の形態におけるストレージシステム１のストレージ装置３によるＦＭブロック開放処理について説明する。
【００７２】
続いて、ＦＭステージングコントローラ２５は、選択したＨＤＤアドレスのＦＭステージング指示フラグが「１」であるか否かをチェックする（ＳＰ２３）。そして、ＦＭステージングコントローラ２５は、選択したＨＤＤアドレスのＦＭステージング指示フラグが「１」である場合（ＳＰ２３：ＹＥＳ）には、当該ＨＤＤアドレスの領域のデータのＦＭステージングが行われる予定であるため、ステップＳＰ２７に進む。これに対して、ＦＭステージングコントローラ２５は、選択したＨＤＤアドレスのＦＭステージング指示フラグが「０」である場合（ＳＰ２３：ＮＯ）には、メモリ２７からＦＭ管理テーブル３４を読み出す（ＳＰ２４）。
【００７３】
ＦＭステージングコントローラ２５は、空いているＦＭブロックがない場合（ＳＰ１：ＮＯ）には、図９に示すＦＭブロック開放処理手順ＲＴ２に従って、制御情報格納領域１２から論理ボリューム管理テーブル２０を読み出す（ＳＰ２１）。続いて、ＦＭステージングコントローラ２５は、読み出した論理ボリューム管理テーブル２０のＨＤＤアドレスのうち、１つのＨＤＤアドレスを選択する（ＳＰ２２）。
【００７４】
続いて、ＦＭステージングコントローラ２５は、選択したＨＤＤアドレスのＦＭステージング指示フラグが「１」であるか否かをチェックする（ＳＰ２３）。そして、ＦＭステージングコントローラ２５は、選択したＨＤＤアドレスのＦＭステージング指示フラグが「１」でない、すなわち、「０」である場合（ＳＰ２３：ＹＥＳ）には、当該ＨＤＤアドレスの領域のデータのＦＭステージングが行われる予定であるため、ステップＳＰ２７に進む。これに対して、ＦＭステージングコントローラ２５は、選択したＨＤＤアドレスのＦＭステージング指示フラグが「１」である場合（ＳＰ２３：ＹＥＳ）には、メモリ２７からＦＭ管理テーブル３４を読み出す（ＳＰ２４）。
【００７５】
続いて、ＦＭステージングコントローラ２５は、論理ボリューム管理テーブル２０の選択したＨＤＤアドレスのＦＭ領域確保フラグが「１」であるか否かをチェックする（ＳＰ２５）。そして、ＦＭステージングコントローラ２５は、当該ＨＤＤアドレスのＦＭ領域確保フラグが「１」でない、すなわち、「０」である場合（ＳＰ７：ＮＯ）には、当該ＨＤＤアドレスの領域のデータがＦＭブロックに格納されていないため、ステップＳＰ２７に進む。これに対して、ＦＭステージングコントローラ２５は、当該ＨＤＤアドレスのＦＭ領域確保フラグが「１」である場合（ＳＰ２５：ＹＥＳ）には、同一のＦＭブロックのすべてのＨＤＤアドレスのＦＭ領域確保フラグを開放し（「１」から「０」に変更し）、ＦＭ管理ＦＩＦＯ３１の開放ポインタ３１Ｃを移動して、ＦＭブロックを開放する（ＳＰ２６）。また、ＦＭステージングコントローラ２５は、開放したＦＭブロックのデータを消去する。
【００７６】
やがて、ＦＭステージングコントローラ２５は、論理ボリューム管理テーブル２０のすべてのＨＤＤアドレスが選択されたか否かをチェックする（ＳＰ２７）。そして、ＦＭステージングコントローラ２５は、すべてのＨＤＤアドレスが選択されていない場合（ＳＰ２７：ＮＯ）には、ステップＳＰ２２に戻り、再び、読み出した論理ボリューム管理テーブル２０のＨＤＤアドレスのうち、１つのＨＤＤアドレスを選択し（ＳＰ２２）、この後、上述の場合と同様の処理を繰り返す（ＳＰ２２〜ＳＰ２７）。
【００７７】
これに対して、ＦＭステージングコントローラ２５は、すべてのＨＤＤアドレスが選択された場合（ＳＰ２７：ＹＥＳ）には、この後、この図９に示すＦＭブロック開放処理手順ＲＴ２を終了する（ＳＰ２８）。
【００７８】
なお、本実施の形態においては、ＦＭステージングコントローラ２５内の制御プログラム（図示せず）を実行することにより、ＦＭステージング処理及びＦＭブロック開放処理を実行した場合について述べたが、本発明はこれに限らず、例えば、ＦＭステージングコントローラ２５内にソフトウェアプログラムを実行するプロセッサを備えずに、ハードウェアのシーケンス制御等のハードウェア制御により当該処理を実行することもできる。
【００７９】
次に、本実施の形態におけるストレージシステム１のストレージ装置３によるデータライトの流れについて説明する。なお、本実施の形態においては、ＲＡＩＤグループがＲＡＩＤ５構成である場合について説明するが、この他種々の構成にも適用することができるのは言うまでもない。
【００８０】
図１０は、このストレージシステム１のストレージ装置３のデータライトの流れに関する、ストレージ装置３のチャネル制御部１１、プロセッサ１３、制御情報格納領域１２、キャッシュメモリ制御部１５、ＨＤＤ／ＦＭ制御部１７並びにハードディスクドライブ５及びフラッシュメモリ６の具体的な処理手順を示したフローチャートの一例である。
【００８１】
まず、チャネル制御部１１は、ホスト装置２からライト要求を受信すると、プロセッサ１３にライト要求を通知する（ＳＰ３１）。
【００８２】
続いて、プロセッサ１３は、ハードディスクドライブ５に書き込むべきデータを格納するための領域をキャッシュメモリ１４に排他的に確保して、当該確保情報をキャッシュメモリ１４の領域を管理するキャッシュメモリ領域管理テーブル（図示せず）等が格納されている制御情報格納領域１２に書き込む（ＳＰ３２）。続いて、プロセッサ１３は、チャネル制御部１１にライト指示を通知する（ＳＰ３３）。
【００８３】
続いて、チャネル制御部１１は、キャッシュメモリ制御部１５にライト指示を通知し、キャッシュメモリ制御部１５を介して、キャッシュメモリ１４の確保した領域にデータを書き込む（ＳＰ３４）。
【００８４】
続いて、プロセッサ１３は、通知されたライト要求に応じて論理ボリューム管理テーブル２０のランダムライト又はシーケンシャルライトの回数を増加する（ＳＰ３５）。続いて、プロセッサ１３は、制御情報格納領域１２から論理ボリューム管理テーブル２０を読み出す（ＳＰ３６）。続いて、プロセッサ１３は、論理ボリューム管理テーブル２０を参照して、書き込むべきデータのＦＭステージングを行うか否かを判定するＦＭステージング判定を行う（ＳＰ３７）。
【００８５】
続いて、プロセッサ１３は、書き込むべきデータのＦＭステージングを行う場合には、論理ボリューム管理テーブル２０における書き込むべきデータのＨＤＤアドレスのＦＭステージング指示フラグを「０」から「１」に変更する（ＳＰ３８）。続いて、プロセッサ１３は、ハードディスクドライブ５に書き込むべきデータの旧データ及びパリティデータを格納するための領域をキャッシュメモリ１４に排他的に確保して、当該確保情報をキャッシュメモリ領域管理テーブル（図示せず）等が格納されている制御情報格納領域１２に書き込む（ＳＰ３９）。続いて、プロセッサ１３は、当該旧データ及びパリティデータをキャッシュメモリ１４に転送する転送指示をＨＤＤ／ＦＭ制御部１７に通知する（ＳＰ４０）。
【００８６】
続いて、ＨＤＤ／ＦＭ制御部１７は、ＦＭ管理テーブル３４を参照して、書き込むべきデータの旧データ及びパリティデータがフラッシュメモリ６に格納されているか否かを判定するＦＭヒット・ミス判定を行う（ＳＰ４１）。続いて、ＨＤＤ／ＦＭ制御部１７は、書き込むべきデータの旧データ及びパリティデータをハードディスクドライブ５又はフラッシュメモリ６から読み出す（ＳＰ４２）。
【００８７】
続いて、ＨＤＤ／ＦＭ制御部１７は、キャッシュメモリ制御部１５に転送指示を通知し、キャッシュメモリ制御部１５を介して、キャッシュメモリ１４の確保した領域に読み出した旧データ及びパリティデータを書き込む（ＳＰ４３）。続いて、ＨＤＤ／ＦＭ制御部１７は、転送指示の終了報告をプロセッサ１３に通知する（ＳＰ４４）。
【００８８】
続いて、プロセッサ１３は、書き込むべきデータのパリティデータのパリティ生成指示をＨＤＤ／ＦＭ制御部１７に通知する（ＳＰ４５）。
【００８９】
続いて、ＨＤＤ／ＦＭ制御部１７は、キャッシュメモリ制御部１５にパリティ生成指示を通知し、キャッシュメモリ制御部１５を介して、キャッシュメモリ１４から書き込むべきデータ並びに書き込むべきデータの旧データ及びパリティデータを読み出す（ＳＰ４６）。続いて、ＨＤＤ／ＦＭ制御部１７は、読み出した書き込むべきデータ並びに書き込むべきデータの旧データ及びパリティデータから、書き込むべきデータのパリティデータを生成する（ＳＰ４７）。
【００９０】
続いて、ＨＤＤ／ＦＭ制御部１７は、キャッシュメモリ制御部１５にパリティ生成指示（転送指示）を通知し、キャッシュメモリ制御部１５を介して、キャッシュメモリ１４の確保した領域に書き込むべきデータのパリティデータを書き込む（ＳＰ４３）。続いて、ＨＤＤ／ＦＭ制御部１７は、パリティ生成指示の完了報告をプロセッサ１３に通知する（ＳＰ４９）。
【００９１】
続いて、プロセッサ１３は、書き込むべきデータ及び当該データのパリティデータのＨＤＤデステージ指示をＨＤＤ／ＦＭ制御部１７に通知する（ＳＰ５０）。
【００９２】
続いて、ＨＤＤ／ＦＭ制御部１７は、キャッシュメモリ制御部１５にＨＤＤデステージ指示を通知し、キャッシュメモリ制御部１５を介して、キャッシュメモリ１４から書き込むべきデータ及び当該データのパリティデータを読み出す（ＳＰ５１）。続いて、ＨＤＤ／ＦＭ制御部１７は、読み出した書き込むべきデータ及び当該データのパリティデータをハードディスクドライブ５の該当するＨＤＤアドレスの領域に書き込む（ＳＰ５２）。続いて、ＨＤＤ／ＦＭ制御部１７は、ＨＤＤデステージ指示の終了報告をプロセッサ１３に通知する（ＳＰ５３）。
【００９３】
続いて、プロセッサ１３は、制御情報格納領域１２に格納されている論理ボリューム管理テーブル２０等の各種テーブルの制御情報を更新する（ＳＰ５４）。
【００９４】
次に、本実施の形態におけるストレージシステム１のストレージ装置３によるデータライト処理について説明する。
【００９５】
図１１及び図１２は、このストレージシステム１のストレージ装置３のデータライト処理に関する、ストレージ装置３のプロセッサ１３の具体的な処理手順を示したフローチャートの一例である。
【００９６】
プロセッサ１３は、例えば、チャネル制御部１１からライト要求が通知されると、プロセッサ１３内の制御プログラム（図示せず）を実行することにより、図１１及び図１２に示すデータライト処理手順ＲＴ３に従って、ハードディスクドライブ５に書き込むべきデータを格納するための領域をキャッシュメモリ１４に排他的に確保して、当該確保情報をキャッシュメモリ領域管理テーブル（図示せず）等が格納されている制御情報格納領域１２に書き込む（ＳＰ６１）。続いて、プロセッサ１３は、チャネル制御部１１にライト指示を通知して、キャッシュメモリ１４の確保した領域にデータを書き込ませる（ＳＰ６２）。
【００９７】
続いて、プロセッサ１３は、ハードディスクドライブ５に書き込むべきデータがランダムデータであるか否かをチェックする（ＳＰ６３）。具体的に、プロセッサ１３は、例えば、ハードディスクドライブ５に書き込むべきデータが所定のデータ長以下の場合や、次のライト要求がハードディスクドライブ５の連続するＨＤＤアドレスへのライト要求でない場合には、ランダムデータであると判断し、ハードディスクドライブ５に書き込むべきデータが所定のデータ長より大きい場合や、次のライト要求がハードディスクドライブ５の連続するＨＤＤアドレスへのライト要求である場合には、シーケンシャルデータであると判断する。
【００９８】
そして、プロセッサ１３は、ハードディスクドライブ５に書き込むべきデータがランダムデータである場合（ＳＰ６３：ＹＥＳ）には、論理ボリューム管理テーブル２０のランダムライトカウンタ欄２０Ｃのランダムライトアクセスの回数を「１」増加する（ＳＰ６４）。これに対して、プロセッサ１３は、ハードディスクドライブ５に書き込むべきデータがランダムデータでない場合、すなわち、シーケンシャルデータである場合（ＳＰ６３：ＮＯ）には、論理ボリューム管理テーブル２０のシーケンシャルライトライトカウンタ欄２０Ｄのシーケンシャルライトアクセスの回数を「１」増加する（ＳＰ６５）。
【００９９】
やがて、プロセッサ１３は、論理ボリューム管理テーブル２０における書き込むべきデータのＨＤＤアドレスがＦＭステージングの条件を満たしているか否かをチェックする（ＳＰ６６）。
【０１００】
具体的に、プロセッサ１３は、例えば、ランダムライトカウンタ欄２０Ｃのランダムライトアクセスの回数がシーケンシャルライトカウンタ欄２０Ｄのシーケンシャルライトアクセスの回数より大きい場合や、リードカウンタ欄２０Ｅのリードアクセスの回数が所定の回数よりも大きい場合には、ＦＭステージングの条件を満たしていると判断する。
【０１０１】
これに対して、プロセッサ１３は、ランダムライトカウンタ欄２０Ｃのランダムライトアクセスの回数がシーケンシャルライトカウンタ欄２０Ｄのシーケンシャルライトアクセスの回数以下である場合や、リードカウンタ欄２０Ｅのリードアクセスの回数が所定の回数以下である場合には、ＦＭステージングの条件を満たしていないと判断する。
【０１０２】
なお、プロセッサ１３は、ランダムライトアクセスの回数が所定の回数よりも大きい場合や、ランダムライトアクセスの比率が所定の比率よりも大きい場合、リードアクセスの比率が所定の比率よりも大きい場合等のこの他種々の場合にＦＭステージングの条件を満たしていると判断するようにしても良い。
【０１０３】
そして、プロセッサ１３は、ランダムライトカウンタ欄２０Ｃの書き込むべきデータのＨＤＤアドレスがＦＭステージングの条件を満たしている場合（ＳＰ６６：ＹＥＳ）には、当該ＨＤＤアドレスのＦＭステージング指示フラグを「１」に変更する（ＳＰ６７）。これに対して、プロセッサ１３は、ランダムライトカウンタ欄２０Ｃの書き込むべきデータのＨＤＤアドレスがＦＭステージングの条件を満たしていない場合（ＳＰ６６：ＮＯ）には、当該ＨＤＤアドレスのＦＭステージング指示フラグを「０」に変更する（ＳＰ６８）。
【０１０４】
やがて、プロセッサ１３は、ハードディスクドライブ５に書き込むべきデータの旧データ及びパリティデータを格納するための領域をキャッシュメモリ１４に排他的に確保して、当該確保情報をキャッシュメモリ領域管理テーブル（図示せず）等が格納されている制御情報格納領域１２に書き込む（ＳＰ６９）。続いて、プロセッサ１３は、当該旧データ及びパリティデータの転送指示をＨＤＤ／ＦＭ制御部１７の外部転送ＤＭＡコントローラ２３に通知する（ＳＰ７０）。
【０１０５】
続いて、プロセッサ１３は、ＨＤＤ／ＦＭ制御部１７の内部転送ＤＭＡコントローラ２２からハードディスクドライブ５に書き込むべきデータの旧データ及びパリティデータの転送指示の終了報告が通知されるのを待機モードで待ち受ける（ＳＰ７１）。やがて、プロセッサ１３は、当該転送指示の終了報告が通知された場合（ＳＰ７１：ＹＥＳ）には、書き込むべきデータのパリティデータのパリティ生成指示をＨＤＤ／ＦＭ制御部１７のパリティ生成部２１に通知する（ＳＰ７２）。
【０１０６】
続いて、プロセッサ１３は、ＨＤＤ／ＦＭ制御部１７のパリティ生成部２１から書き込むべきデータのパリティデータのパリティ生成指示の終了報告が通知されるのを待機モードで待ち受ける（ＳＰ７３）。やがて、プロセッサ１３は、当該パリティ生成指示の終了報告が通知された場合（ＳＰ７３：ＹＥＳ）には、書き込むべきデータ及び当該データのパリティデータのＨＤＤデステージ指示をＨＤＤ／ＦＭ制御部１７の内部転送ＤＭＡコントローラ２２に通知する（ＳＰ７４）。
【０１０７】
続いて、プロセッサ１３は、ＨＤＤ／ＦＭ制御部１７の外部転送ＤＭＡコントローラ２３から書き込むべきデータ及び当該データのパリティデータのＨＤＤデステージ指示の終了報告が通知されるのを待機モードで待ち受ける（ＳＰ７５）。やがて、プロセッサ１３は、当該ＨＤＤデステージ指示の終了報告が通知された場合（ＳＰ７５：ＹＥＳ）には、この後、プロセッサ１３内の制御プログラム（図示せず）を終了することにより、この図１１及び図１２に示すデータライト処理手順ＲＴ３を終了する（ＳＰ７６）。
【０１０８】
次に、本実施の形態におけるストレージシステム１のストレージ装置３によるデータリードの流れについて説明する。
【０１０９】
図１３は、このストレージシステム１のストレージ装置３のデータリードの流れに関する、ストレージ装置３のプロセッサ１３、制御情報格納領域１２、キャッシュメモリ制御部１５、ＨＤＤ／ＦＭ制御部１７、ハードディスクドライブ５及びフラッシュメモリ６、並びにチャネル制御部１１の具体的な処理手順を示したフローチャートの一例である。
【０１１０】
まず、チャネル制御部１１は、ホスト装置２からリード要求を受信すると、プロセッサ１３にリード要求を通知する（ＳＰ８１）。
【０１１１】
続いて、プロセッサ１３は、論理ボリューム管理テーブル２０のリードアクセスの回数を増加する（ＳＰ８２）。続いて、プロセッサ１３は、制御情報格納領域１２からキャッシュメモリ領域管理テーブル（図示せず）の管理情報を読み出す（ＳＰ８３）。続いて、プロセッサ１３は、キャッシュメモリ領域管理テーブルを参照して、読み出すべきデータがキャッシュメモリ１４に格納されているか否かを判定するキャッシュヒット・ミス判定を行う（ＳＰ８４）。
【０１１２】
続いて、プロセッサ１３は、例えば、読み出すべきデータがキャッシュメモリ１４に格納されていない場合には、ホスト装置２に読み出すべきデータを格納するための領域をキャッシュメモリ１４に排他的に確保して、当該確保情報をキャッシュメモリ領域管理テーブル（図示せず）等が格納されている制御情報格納領域１２に書き込む（ＳＰ８５）。続いて、プロセッサ１３は、読み出すべきデータのハードディスクドライブ５又はフラッシュメモリ６からキャッシュメモリ１４へのデータの複製（以下、ＨＤＤステージングと呼ぶ。）指示をＨＤＤ／ＦＭ制御部１７に通知する（ＳＰ８６）。
【０１１３】
続いて、ＨＤＤ／ＦＭ制御部１７は、ＦＭ管理テーブル３４を参照して、読み出すべきデータのＦＭヒット・ミス判定を行う（ＳＰ８７）。続いて、ＨＤＤ／ＦＭ制御部１７は、読み出すべきデータをハードディスクドライブ５又はフラッシュメモリ６から読み出す（ＳＰ８８）。続いて、ＨＤＤ／ＦＭ制御部１７は、キャッシュメモリ制御部１５にＨＤＤステージング指示を通知し、キャッシュメモリ制御部１５を介して、キャッシュメモリ１４の確保した領域に読み出すべきデータを書き込む（ＳＰ８９）。続いて、ＨＤＤ／ＦＭ制御部１７は、ＨＤＤステージング指示の終了報告をプロセッサ１３に通知する（ＳＰ９０）。
【０１１４】
続いて、プロセッサ１３は、読み出すべきデータのリード指示をチャネル制御部１１に通知する（ＳＰ９１）。続いて、プロセッサ１３は、制御情報格納領域１２に格納されている論理ボリューム管理テーブル２０等の各種テーブルの制御情報を更新する（ＳＰ９２）。
【０１１５】
続いて、チャネル制御部１１は、キャッシュメモリ制御部１５にリード指示を通知し、キャッシュメモリ制御部１５を介して、キャッシュメモリ１４から読み出すべきデータを読み出してホスト装置２に送信する（ＳＰ９３）。
【０１１６】
次に、本実施の形態におけるストレージシステム１のストレージ装置３によるデータリード処理について説明する。
【０１１７】
図１４は、このストレージシステム１のストレージ装置３のデータリード処理に関する、ストレージ装置３のプロセッサ１３の具体的な処理手順を示したフローチャートの一例である。
【０１１８】
プロセッサ１３は、例えば、チャネル制御部１１からリード要求が通知されると、プロセッサ１３内の制御プログラム（図示せず）を実行することにより、図１４に示すデータリード処理手順ＲＴ４に従って、論理ボリューム管理テーブル２０のリードカウンタ欄２０Ｅのリードアクセスの回数を「１」増加する（ＳＰ１０１）。
【０１１９】
続いて、プロセッサ１３は、キャッシュメモリ領域管理テーブルを参照して、読み出すべきデータがキャッシュメモリ１４に格納されているか否かをチェックする（ＳＰ１０２）。そして、プロセッサ１３は、読み出すべきデータがキャッシュメモリ１４に格納されている場合（ＳＰ１０２：ＹＥＳ）には、ステップＳＰ１０５に進む。これに対して、プロセッサ１３は、読み出すべきデータがキャッシュメモリ１４に格納されていない場合（ＳＰ１０２：ＮＯ）には、読み出すべきデータのＨＤＤステージング指示をＨＤＤ／ＦＭ制御部１７の外部転送ＤＭＡコントローラ２３に通知する（ＳＰ１０３）。
【０１２０】
続いて、プロセッサ１３は、ＨＤＤ／ＦＭ制御部１７の内部転送ＤＭＡコントローラ２２から読み出すべきデータのＨＤＤステージング指示の終了報告が通知されるのを待機モードで待ち受ける（ＳＰ１０４）。やがて、プロセッサ１３は、当該ＨＤＤステージング指示の終了報告が通知された場合（ＳＰ１０４：ＹＥＳ）には、読み出すべきデータのリード指示をチャネル制御部１１に通知して、キャッシュメモリ１４から読み出すべきデータを読み出してホスト装置２に送信させる（ＳＰ１０５）。
【０１２１】
やがて、プロセッサ１３は、この後、プロセッサ１３内の制御プログラム（図示せず）を終了することにより、この図１４に示すデータリード処理手順ＲＴ４を終了する（ＳＰ１０６）。
【０１２２】
次に、本実施の形態におけるストレージシステム１のストレージ装置３によるＦＭヒット・ミス判定処理について説明する。
【０１２３】
図１５は、このストレージシステム１のストレージ装置３のＦＭヒット・ミス判定処理に関する、ストレージ装置３のＨＤＤ／ＦＭ制御部１７の具体的な処理手順を示したフローチャートの一例である。
【０１２４】
ＨＤＤ／ＦＭ制御部１７の外部転送ＤＭＡコントローラ２３は、例えば、プロセッサ１３から転送指示が通知された場合や、プロセッサ１３からＨＤＤステージング指示が通知された場合には、外部転送ＤＭＡコントローラ２３内の制御プログラム（図示せず）を実行することにより、図１５に示すＦＭヒット・ミス判定処理手順ＲＴ５に従って、メモリ２７からＦＭ管理テーブル３４を読み出す（ＳＰ１１１）。
【０１２５】
続いて、外部転送ＤＭＡコントローラ２３は、書き込むべきデータの旧データ及びパリティデータ、又は読み出すべきデータが格納されている領域のＨＤＤアドレスのＦＭ領域確保フラグが「１」であるか否かをチェックする（ＳＰ１１２）。
【０１２６】
そして、外部転送ＤＭＡコントローラ２３は、当該ＨＤＤアドレスのＦＭ領域確保フラグが「１」である場合（ＳＰ１１２：ＹＥＳ）には、書き込むべきデータの旧データ及びパリティデータ、又は読み出すべきデータがフラッシュメモリ６にも格納されているため、書き込むべきデータの旧データ及びパリティデータ、又は読み出すべきデータをフラッシュメモリ６から読み出して、メモリ２７に格納する（ＳＰ１１３）。これにより、外部転送ＤＭＡコントローラ２３は、ハードディスクドライブ５から読み出す場合よりも高速に書き込むべきデータの旧データ及びパリティデータ、又は読み出すべきデータを読み出すことができる。
【０１２７】
これに対して、外部転送ＤＭＡコントローラ２３は、当該ＨＤＤアドレスのＦＭ領域確保フラグが「１」でない、すなわち、「０」である場合（ＳＰ１１２：ＮＯ）には、書き込むべきデータの旧データ及びパリティデータ、又は読み出すべきデータがフラッシュメモリ６にも格納されていないため、書き込むべきデータの旧データ及びパリティデータ、又は読み出すべきデータをハードディスクドライブ５から読み出して、メモリ２７に格納する（ＳＰ１１４）。
【０１２８】
やがて、外部転送ＤＭＡコントローラ２３は、転送指示又はＨＤＤステージング指示を内部転送ＤＭＡコントローラ２２及びキャッシュメモリ制御部１５に通知し、内部転送ＤＭＡコントローラ２２及びキャッシュメモリ制御部１５を介して、書き込むべきデータの旧データ及びパリティデータ、又は読み出すべきデータをキャッシュメモリ１４に転送させ(ＳＰ１１５)、内部転送ＤＭＡコントローラ２２を介して、転送指示又はＨＤＤステージング指示の終了報告をプロセッサ１３に通知させる（ＳＰ１１６）。
【０１２９】
やがて、外部転送ＤＭＡコントローラ２３は、この後、外部転送ＤＭＡコントローラ２３内の制御プログラム（図示せず）を終了することにより、この図１５に示すＦＭヒット・ミス判定処理手順ＲＴ５を終了する（ＳＰ１１７）。
【０１３０】
次に、管理装置１８におけるフラッシュメモリ６の保守管理画面表示について説明する。
【０１３１】
プロセッサ１３は、例えば、管理装置１８から保守管理画面表示要求が送信されると、メモリ２７から保守情報管理テーブル３５を読み出す。そして、保守情報管理テーブル３５に基づいて保守管理画面情報を管理装置１８に送信し、管理装置１８の表示部に保守管理画面３６を表示させる。
【０１３２】
なお、本実施の形態においては、外部転送ＤＭＡコントローラ２３内の制御プログラム（図示せず）を実行することにより、ＦＭヒット・ミス判定処理を実行した場合について述べたが、本発明はこれに限らず、例えば、外部転送ＤＭＡコントローラ２３内にソフトウェアプログラムを実行するプロセッサを備えずに、ハードウェアのシーケンス制御等のハードウェア制御により当該処理を実行することもできる。
【０１３３】
図１６は、保守管理画面３６の構成を示している。保守管理画面３６は、モジュール化されているフラッシュメモリ６の状態、最大書き込み回数及びコレクタブルエラー発生回数を表示する。保守管理画面３６は、ＦＭモジュール番号欄３６Ａ、状態欄３６Ｂ及び詳細欄３６Ｃから構成されている。
【０１３４】
ＦＭモジュール番号欄３５Ａには、ＦＭモジュール番号が表示される。状態欄３６Ｂには、モジュール化されているフラッシュメモリ６が使用されているか、閉塞されているかの情報や、保守情報管理テーブル３５の最大書き込み回数、コレクタブルエラー発生回数に基づいて、当該モジュール化されているフラッシュメモリ６の現在の状態が表示される。
【０１３５】
この場合、状態欄３６Ｂには、例えば、モジュール化されているフラッシュメモリ６が使用されている場合には、「使用中」と表示され、モジュール化されているフラッシュメモリ６が閉塞されている場合には、「閉塞」と表示される。また、状態欄３６Ｂには、例えば、モジュール化されているフラッシュメモリ６の最大書き込み回数又はコレクタブルエラー発生回数が所定の回数より大きく、モジュール化されているフラッシュメモリ６をこのまま使用することが危険である場合には、「ワーニング」と表示される。
【０１３６】
詳細欄３６Ｃは、最大書き込み回数欄及びコレクタブルエラー発生回数欄から構成されている。最大書き込み回数欄には、モジュール化されているフラッシュメモリ６のうち、書き込み回数が一番大きいＦＭブロックの書き込み回数である最大書き込み回数が表示される。コレクタブルエラー発生回数欄には、モジュール化されているフラッシュメモリ６のコレクタブルエラー発生回数が表示される。
【０１３７】
プロセッサ１３は、管理装置１８の表示部に保守管理画面３６を表示させることにより、モジュール化されているフラッシュメモリ６の状態、最大書き込み回数及びコレクタブルエラー発生回数をオペレータに容易に認識させることができる。オペレータは、モジュール化されているフラッシュメモリ６の状態、最大書き込み回数及びコレクタブルエラー発生回数を認識し、モジュール化されているフラッシュメモリ６を閉塞したり、交換したりすることができる。
【０１３８】
図１７は、他の実施の形態によるストレージシステム１の構成を示している。本実施の形態におけるストレージシステム１は、チャネル制御部１１、キャッシュ制御部１５及びＦＭ／ＨＤＤ制御部１７をプロセッサ１３が統括的に制御した場合について述べたが、本発明はこれに限らず、図１７のように、チャネル制御部１１のプロセッサ４１、キャッシュメモリ制御部１５、ＦＭ／ＨＤＤ制御部１７のプロセッサ４２及び制御メモリ制御部４３が独立してそれぞれを制御するようにしても良く、この他種々の形態に適用することができる。
【０１３９】
このようにして、ストレージシステム１では、ＨＤＤ／ＦＭ制御部１７が、ハードディスクドライブ５のランダムライトアクセスや、シーケンシャルライトアクセス、リードアクセス等の状況（使用状況）に応じて、ハードディスクドライブ５に格納されているデータをフラッシュメモリ６に複製し（ＦＭステージングを行い）、プロセッサ１３が、ホスト装置２からリード要求を受信し、対応するデータがフラッシュメモリ６に格納されている場合には、フラッシュメモリ６からデータを読み出す。
【０１４０】
従って、ハードディスクドライブ５に格納されているデータをフラッシュメモリ６に複製する（ＦＭステージングを行う）場合にも、一時的にホスト装置２とのＩ／Ｏ処理性能が大幅に低下するのを未然かつ有効に防止し、プロセッサ１３の負荷を格段に軽減することができる。
【０１４１】
また、ストレージシステム１では、ハードディスクドライブ５に格納されているデータをフラッシュメモリ６に複製する（ＦＭステージングを行う）場合に、データの同一性を保つことができる。さらに、ストレージシステム１では、開放したフラッシュメモリ６のデータを予め消去しておくことで、ＦＭステージングの性能を向上させることができる。さらに、ストレージシステム１では、ＦＭブロック単位で、データの消去を行うことにより、簡易にアドレス管理をすることができる。
【０１４２】
さらに、ストレージシステム１では、フラッシュメモリ６からデータを読み出す場合に、ＨＤＤ／ＦＭ制御部１７が、ＨＤＤアドレスをＦＭブロックアドレスに変換し、フラッシュメモリ６内に格納されているデータを読み出すことにより、プロセッサ１３の負荷をより一層軽減することができる。
【０１４３】
さらに、ストレージシステム１では、フラッシュメモリ６の動作状態、最大書き込み回数及びコレクタブルエラー回数を管理装置１８の表示部に表示することにより、故障フラッシュメモリ６や、故障可能性のあるフラッシュメモリ６をオペレータが容易に特定することができる。
【０１４４】
なお、本実施の形態においては、データを格納するためのフラッシュメモリ４０５を設けた場合について述べたが、本発明はこれに限らず、例えば、相変化メモリや半導体メモリ等のこの他種々の不揮発メモリデバイスに適用することができる。
【０１４５】
また、本実施の形態においては、フラッシュメモリ６よりもデータ書込み可能回数が多いディスク状記憶デバイスとしてハードディスクドライブ５を適用した場合について述べたが、本発明はこれに限らず、例えば、光ディスクや光磁気ディスク等のこの他種々のディスク状記憶デバイスに適用することができる。
【０１４６】
さらに、本実施の形態においては、ストレージ装置３を、データを１つ又は複数のディスク装置又は記憶媒体に格納するストレージ制御装置及び複数のストレージ制御装置、テープライブラリ制御装置、光ディスクライブラリ制御装置、半導体ディスク制御装置などのソリッドステートディスク装置、フラッシュメモリに代表される、不揮発メモリを利用したストレージ装置などから構成されるストレージ装置に適用することができる。
【０１４７】
さらに、本実施の形態においては、ＦＭステージングの条件を満たすデータをハードディスクドライブ５からフラッシュメモリ６に複製する場合について述べたが、本発明はこれに限らず、例えば、ハードディスクドライブ５からフラッシュメモリ６に移動するような場合であっても良く、この他、種々の場合に適用することができ、これと共に、ＨＤＤステージングや、ＨＤＤデステージについても、複製だけでなく上述の場合と同様に種々の形態で適用することができる。
【産業上の利用可能性】
【０１４８】
本発明は、ハードディスクドライブとフラッシュメモリとを搭載したストレージ装置に広く適用することができる。
【図面の簡単な説明】
【０１４９】
【図１】本実施の形態によるストレージシステムの概略的な構成を示すブロック図である。
【図２】ＦＭ／ＨＤＤ制御部の概略的な構成を示すブロック図である。
【図３】ＦＭ管理テーブルの構成の説明に供する概念図である。
【図４】ＦＭ管理ＦＩＦＯの構成の説明に供する概念図である。
【図５】論理ボリューム管理テーブルの構成の説明に供する概念図である。
【図６】保守情報管理テーブルの構成の説明に供する概念図である。
【図７】ＦＭステージング処理手順を示すフローチャートである。
【図８】ＦＭステージング処理手順を示すフローチャートである。
【図９】ＦＭブロック開放処理手順を示すフローチャートである。
【図１０】データライトの流れを示すフローチャートである。
【図１１】データライト処理手順を示すフローチャートである。
【図１２】データライト処理手順を示すフローチャートである。
【図１３】データリードの流れを示すフローチャートである。
【図１４】データリード処理手順を示すフローチャートである。
【図１５】ＦＭヒット・ミス判定処理手順を示すフローチャートである。
【図１６】保守管理画面の構成の説明に供する概念図である。
【図１７】他実施の形態によるストレージシステムの概略的な構成を示すブロック図である。
【符号の説明】
【０１５０】
１……ストレージシステム、２……ホスト装置、３……ストレージ装置、４……ＳＡＮ、５……ハードディスクドライブ、６……フラッシュメモリ、７……コントロール部、１１……チャネル制御部、１２……制御情報格納領域、１３……プロセッサ、１４……キャッシュメモリ、１５……キャッシュメモリ制御部、１７……ＨＤＤ／ＦＭ制御部、１８……管理装置、２０……論理ボリューム管理テーブル、２１……パリティ生成部、２２……内部転送ＤＭＡコントローラ、２３……外部転送ＤＭＡコントローラ、２５……ＦＭステージングコントローラ、２６……メモリコントローラ、３１……ＦＭ管理ＦＩＦＯ、３４……ＦＭ管理テーブル、３５……保守情報管理テーブル、３６……保守管理画面 
【図１】
0005124217.tif 000002
【図２】
0005124217.tif 000003
【図３】
0005124217.tif 000004
【図４】
0005124217.tif 000005
【図５】
0005124217.tif 000006
【図６】
0005124217.tif 000007
【図７】
0005124217.tif 000008
【図８】
0005124217.tif 000009
【図９】
0005124217.tif 000010
【図１０】
0005124217.tif 000011
【図１１】
0005124217.tif 000012
【図１２】
0005124217.tif 000013
【図１３】
0005124217.tif 000014
【図１４】
0005124217.tif 000015
【図１５】
0005124217.tif 000016
【図１６】
0005124217.tif 000017
【図１７】
0005124217.tif 000018