(57)【特許請求の範囲】
【請求項１】
メモリ領域を形成する複数の部分領域にそれぞれ対応するビットに、各部分領域に書込データが存在するか否かにより各部分領域におけるデータの書き込み状態を示す書き込み管理情報を保持する書き込み管理情報記憶手段と、
前記複数の部分領域にそれぞれ対応するビットに、各部分領域が次回のパトロール対象となるか否かにより各部分領域が次回のパトロール対象となるか否かを示すパトロール対象情報を保持するパトロール対象記憶手段と、
ホスト装置からの要求に応答して所定の部分領域にデータが書き込まれた場合に、前記書き込み管理情報記憶手段における該部分領域に対応するビットに、データが書き込まれたことを示す値を設定するとともに、パトロール処理に先立って前記書き込み管理情報を前記パトロール対象情報に複写処理するビット管理手段と、
前記書き込み管理情報が複写処理された前記パトロール対象情報を示すビットのうち次回のパトロール対象となることを示す値が設定されたビットに対応する部分領域に対する前記パトロール処理を実行するパトロール処理手段と
を備えたことを特徴とするストレージ装置。
【請求項２】
前記ビット管理手段は、前記ホスト装置からの要求に応答して所定の部分領域からデータの読み込みがなされた場合に、該部分領域に対応する前記パトロール対象情報を示すビットに次回のパトロール対象とならないことを示す値を設定する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記ビット管理手段は、前記パトロール対象記憶手段により保持される前記パトロール対象情報を示すビットのうち、３つの連続する第１ビットに次回のパトロール対象となることを示す値が設定され、第２ビットに次回のパトロール対象とならないことを示す値が設定され、第３ビットに次回のパトロール対象となることを示す値が設定されている場合に、前記第２ビットに次回のパトロール対象となることを示す値を設定する
ことを特徴とする請求項１又は２に記載のストレージ装置。
【請求項４】
前記ビット管理手段は、前記ホスト装置のファイルシステムを介して所定の部分領域に所在するデータの削除通知を受け付けた場合に、該部分領域に対応する前記書き込み管理情報を示すビットにデータが書き込まれていないことを示す値を設定し、前記パトロール対象情報を示すビットに次回のパトロール対象とならないことを示す値を設定する
ことを特徴とする請求項１、２又は３に記載のストレージ装置。
【請求項５】
ストレージ装置がおこなうパトロール方法であって、
前記ストレージ装置は、
メモリ領域を形成する複数の部分領域にそれぞれ対応するビットに、各部分領域に書込データが存在するか否かにより各部分領域におけるデータの書き込み状態を示す書き込み管理情報を保持する書き込み管理情報記憶手段と、
前記複数の部分領域にそれぞれ対応するビットに、各部分領域が次回のパトロール対象となるか否かにより各部分領域が次回のパトロール対象となるか否かを示すパトロール対象情報を保持するパトロール対象記憶手段と
を有し、
ホスト装置からの要求に応答して所定の部分領域にデータが書き込まれた場合に、前記書き込み管理情報記憶手段における該部分領域に対応するビットに、データが書き込まれたことを示す値を設定するステップと、
パトロール処理に先立って前記書き込み管理情報を前記パトロール対象情報に複写処理するステップと、
前記書き込み管理情報が複写処理された前記パトロール対象情報を示すビットのうち次回のパトロール対象となることを示す値が設定されたビットに対応する部分領域に対する前記パトロール処理を実行するステップと
を含んだことを特徴とするパトロール方法。
【請求項６】
コンピュータに、ストレージ装置に対するパトロール処理を実行させるパトロールプログラムであって、
前記ストレージ装置は、
メモリ領域を形成する複数の部分領域にそれぞれ対応するビットに、各部分領域に書込データが存在するか否かにより各部分領域におけるデータの書き込み状態を示す書き込み管理情報を保持する書き込み管理情報記憶手段と、
前記複数の部分領域にそれぞれ対応するビットに、各部分領域が次回のパトロール対象となるか否かにより各部分領域が次回のパトロール対象となるか否かを示すパトロール対象情報を保持するパトロール対象記憶手段と
を有し、
ホスト装置からの要求に応答して所定の部分領域にデータが書き込まれた場合に、前記書き込み管理情報記憶手段における該部分領域に対応するビットに、データが書き込まれたことを示す値を設定する手順と、
パトロール処理に先立って前記書き込み管理情報を前記パトロール対象情報に複写処理する手順と、
前記書き込み管理情報が複写処理された前記パトロール対象情報を示すビットのうち次回のパトロール対象となることを示す値が設定されたビットに対応する部分領域に対する前記パトロール処理を実行する手順と
を前記コンピュータに実行させることを特徴とするパトロールプログラム。
【請求項７】
データの読み書き要求を行うホスト装置と、該ホスト装置からの要求に応答してストレージデバイスに対してデータの書き込み又は読み出しを行うストレージ装置とを有するストレージシステムであって、
前記ホスト装置は、
ファイルの削除操作がなされた場合に、該削除操作されたファイルが書き込まれている部分領域を通知する通知手段を備え、
前記ストレージ装置は、
メモリ領域を形成する複数の部分領域にそれぞれ対応するビットに、各部分領域に書込データが存在するか否かにより各部分領域におけるデータの書き込み状態を示す書き込み管理情報を保持する書き込み管理情報記憶手段と、
前記複数の部分領域にそれぞれ対応するビットに、各部分領域が次回のパトロール対象となるか否かにより各部分領域が次回のパトロール対象となるか否かを示すパトロール対象情報を保持するパトロール対象記憶手段と、
ホスト装置からの要求に応答して所定の部分領域にデータが書き込まれた場合に、前記書き込み管理情報記憶手段における該部分領域に対応するビットに、データが書き込まれたことを示す値を設定し、前記ホスト装置のファイルシステムを介して所定の部分領域に所在するデータの削除通知を受け付けた場合に、該部分領域に対応する前記書き込み管理情報を示すビットにデータが書き込まれていないことを示す値を設定するとともに、パトロール処理に先立って前記書き込み管理情報を前記パトロール対象情報に複写処理するビット管理手段と、
前記書き込み管理情報が複写処理された前記パトロール対象情報を示すビットのうち次回のパトロール対象となることを示す値が設定されたビットに対応する部分領域に対する前記パトロール処理を実行するパトロール処理手段と
を備えたことを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、パトロール方法、パトロールプログラム及びストレージシステムに関する。
【背景技術】
【０００２】
従来、ストレージデバイスをグループ化し、グループ内のストレージデバイス間でユーザデータの分散や冗長化を行うことで、ストレージ装置としての信頼性を向上させる技術が存在する。例えば、ハードディスク装置をストレージデバイスとしたＲＡＩＤ（Redundant Arrays of Inexpensive Disks）と呼ばれるディスクアレイ装置が知られている。
【０００３】
かかるストレージ装置では、通常はストレージデバイスへユーザデータを書き込んだ直後に該ユーザデータを再度読み出して両者が一致するか否かを確認する。ストレージ装置では、アーカイブ装置と比較して、書き込み後に読み出し処理が行われる確率が高く、書き込み直後のユーザデータの正当性を保障している。
【０００４】
その反面で、例えばハードディスクに記録されたユーザデータは、磁性の劣化等が原因で不正なデータとなり、ＣＲＣ（Cyclic Redundancy Check）やブロックＩＤの検査により不正なデータとして検出される場合がある。このため、ストレージデバイスには書き込まれているものの、不正なデータとなってしまったデータ（以下「バッドデータと呼ぶ」を事前に検出するパトロール診断技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−２４９５６号公報
【特許文献２】特開２００８−２７２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のパトロール診断技術によれば、ＬＵＮ（Logical Unit Number）全体をパトロール対象とした場合に、多大なパトロール時間を要するという問題点がある。この点を具体的に説明すると、ストレージ装置には、ホスト装置からユーザデータが書き込まれた領域よりも何も書き込まれていない領域が多く存在する。ところが、ストレージ装置は、ユーザデータが書き込まれているストレージデバイスの場所が分からないため、ＬＵＮ全体をパトロール対象とした場合には、全てのストレージデバイスをパトロールすることとなり、多大なパトロール時間を要する結果となる。特に、新たにストレージ装置が導入された場合には、ユーザデータが書き込まれていない領域が大部分であるにも関わらず、多大のパトロール時間を要することとなり効率的ではない。
【０００７】
さらに、ＬＵＮ全体をパトロール対象とした場合には、ホスト装置からのＩ／Ｏに悪影響を与えないようにするため、例えば数秒に１回と言うタイミングで間欠的にパトロール診断を行うため、パトロールが完了するまでに要する時間が長期化する。
【０００８】
以上のことから、ストレージ全体をパトロール対象とする場合に、いかにして短時間で効率良くパトロールを行うかが重要な課題となっている。なお、ホスト装置のファイルシステムと連携すれば、どの領域にデータが記録されているかを把握することができるが、パトロールのためにホスト装置に負荷を掛けるのはシステム全体への性能影響が大きいために望ましくない。
【０００９】
開示の技術は、上記に鑑みてなされたものであって、ストレージをパトロール対象とする場合に、短時間で効率良くパトロールを行うことができるストレージ装置、パトロール方法、パトロールプログラム及びストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示するストレージ装置は、一つの態様において、メモリ領域を形成する複数の部分領域にそれぞれビットを割り当て、各部分領域に書込データが存在するか否かにより各部分領域におけるデータの書き込み状態を示す書き込み管理情報をビットに記憶する手段を有する。ストレージ装置は、ホスト装置からの要求に応答して所定の部分領域にデータが書き込まれた場合に、該部分領域に割り当てたビットに書き込まれたことを示す値を設定し、書き込み管理情報記憶手段を形成するビットに基づいて各部分領域をパトロール処理する。
【発明の効果】
【００１１】
本願の開示するストレージ装置、パトロール方法、パトロールプログラム及びストレージシステムは、ストレージをパトロール対象とする場合に、短時間で効率良くパトロールを行うことができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係るストレージ装置の構成を示すブロック図である。
【図２】図２は、実施例２に係るディスクアレイ装置の構成を示すブロック図である。
【図３】図３は、図２に示したＣＭの内部構成を示す機能ブロック図である。
【図４】図４は、図３に示したパトロール処理部によるパトロール処理を説明するための説明図である。
【図５】図５は、ディスクアレイ装置がＬＵＮのフォーマット指示を受け付けた場合の処理手順を示すフローチャートである。
【図６】図６は、ディスクアレイ装置がＬＵＮの削除指示を受け付けた場合の処理手順を示すフローチャートである。
【図７】図７は、ディスクアレイ装置がホスト装置からデータ書込要求を受け付けた場合の処理手順を示すフローチャートである。
【図８】図８は、ディスクアレイ装置がホスト装置からデータ読出要求を受け付けた場合の処理手順を示すフローチャートである。
【図９】図９は、ディスクアレイ装置によるパトロール処理手順を示すフローチャートである。
【図１０】図１０は、ビットマップ補正処理部によるパトロール対象ビットマップの補正処理を説明するための説明図である。
【図１１】図１１は、ビットマップ補正処理部によるパトロール対象ビットマップの補正処理手順を示すフローチャートである。
【図１２】図１２は、ビットマップ補正処理部によるパトロール対象ビットマップの他の補正処理手順を示すフローチャートである。
【図１３】図１３は、ビットマップ補正処理部によるパトロール対象ビットマップの他の補正処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するストレージ装置、パトロール方法、パトロールプログラム及びストレージシステムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１４】
図１は、本実施例１に係るストレージシステムの構成を示す機能ブロック図である。同図に示すように、このストレージシステムは、ホスト装置１と、ストレージ装置２とを有する。ホスト装置１は、ストレージ装置２に対してデータの読み書き要求を行う上位装置である。
【００１５】
ストレージ装置２は、ホスト装置１によるデータの読み書き要求に応答してデータの格納又は読み出しを行う記憶装置であり、制御部３、メモリ４及びストレージデバイス５を有する。制御部３は、ストレージ装置２の全体制御を行う制御部であり、ビットマップ管理部３ａ及びパトロール処理部３ｂを有する。メモリ４には、書込状態ビットマップ４ａが記憶されている。ストレージデバイス５は、磁気ディスク装置等の記憶デバイスである。
【００１６】
ここで、書込状態ビットマップ４ａとは、ストレージデバイス５により形成されるメモリ領域の部分領域（以下、単に「領域」と言う）にそれぞれビットを割り当て、各領域に書込データが存在する否かによりビットをオン又はオフにしたビットマップである。つまり、この書込状態ビットマップ４ａは、ストレージデバイス５のどの領域にデータが書き込まれているかを示す情報を有するものである。
【００１７】
ビットマップ管理部３ａは、書込状態ビットマップ４ａを管理する管理部であり、ホスト装置１からの要求に応答して所定の領域にデータが書き込まれた場合に、該領域に割り当てられた書込状態ビットマップ４ａのビットをオンにする。
【００１８】
パトロール処理部３ｂは、ストレージデバイス５に記憶されたデータがバッドデータとなっていないか否かを検査するいわゆるパトロール処理を行う。このパトロール処理とは、ストレージ装置２がバックグラウンドで定期的にストレージデバイス５の媒体チェックを行い、媒体エラーや書き込み不良等のチェックを行う処理を言う。
【００１９】
パトロール処理部３ｂは、書込状態ビットマップ４ａを形成するビットに基づいてストレージデバイス５の各領域をパトロール処理する。具体的には、パトロール処理部３ｂは、書込状態ビットマップ４ａを形成するビットがオンとなっている領域に対してのみパトロール処理を行い、ビットがオフとされている領域についてはパトロール処理の対象外とする。なお、本実施例１においては、パトロール処理の対象となる領域を限定した点に特徴があるため、パトロール処理の処理内容については、様々な従来技術を用いることができる。
【００２０】
上記構成を有するストレージ装置２を用いることにより、ストレージデバイス５全体をパトロール処理対象とする場合に、実際にデータが所在する領域のみをパトロール処理し、もって短時間で効率良くパトロールを行うことができる。
【実施例２】
【００２１】
上記実施例１では、本発明に係るストレージ装置の特徴部分に焦点を当てて説明したが、本実施例２では、本発明をディスクアレイ装置に適用した場合について具体的に説明する。
【００２２】
図２は、本実施例２に係るディスクアレイ装置の構成を示すブロック図である。同図に示すように、ディスクアレイ装置２０は、ＣＥ（Controller Enclosure）２１と、ＤＥ（Device Enclosure）２２とを有する。ＣＥ２１は、ＣＭ（Controller Module）２３及びＣＭ２４を有する。
【００２３】
ＣＭ２３は、ホスト装置１０とのインタフェースであるＣＡ（Channel Adapter）２３１と、ＤＥ２２とのインタフェースであるＤＡ（Device Agapter）２３２と、ＣＰＵ２３３と、メモリ２３４とを有する。同様に、ＣＭ２４は、ＣＡ２４１及びＤＡ２４２と、ＣＰＵ２４３と、メモリ２４４とを有する。ホスト装置１０は、このＣＡ２３１及びＣＡ２４１を介してＣＭ２３及びＣＭ２４と接続され、ＤＥ２２内の各ディスク装置は、ＤＡ２３２及びＤＡ２４２を介してＣＭ２３及びＣＭ２４と接続される。そして、ＣＰＵ２３３及びＣＰＵ２４３上で実行される制御プログラムによって、ＤＥ２２内の複数のディスク装置が一台の大容量の論理ディスク装置として機能する。
【００２４】
ここで、このＣＭ２３及びＣＭ２４は、ＤＥ２２内の複数のディスク装置に格納したデータが、不正なバッドデータ（Bad Data）となっているかどうかをパトロール処理によりチェックする。ディスク装置にはデータが正常に書き込まれたものの、その後の磁性変化等により不正なバッドデータとなる可能性があるからである。このパトロール処理は、基本的にはホスト装置１０の主導の下に行われるのではなく、ＣＭ２３及びＣＭ２４自らが主導的に行う。
【００２５】
かかるパトロール処理を短時間で効率的に行うために、本実施例２に係るディスクアレイ装置２０は、書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂをＣＭ２３のメモリ２３４に記憶する。この書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂは、ＬＵＮ（Logical Unit Number）ごとに設けられる。そして、ＣＭ２３のＣＰＵ２３３は、この書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂを参照しつつ、後述する効率的なパトロール処理を行う。同様に、ＣＭ２４のメモリ２４４には、書込状態ビットマップ２４４ａ及びパトロール対象ビットマップ２４４ｂが記憶され、ＣＰＵ２４３は、これらのビットマップを参照しつつ、後述する効率的なパトロール処理を行う。
【００２６】
書込状態ビットマップ２３４ａは、データの書込状態を示すビットマップであり、ＬＵＮを所定サイズに区切った領域ごとにビットを割り当て、各領域の書込データの存在の有無をビットのオンオフで示したものである。ビットが１である場合には、このビットに対応するＬＵＮの領域にホストから書き込まれたデータ等が存在し、ビットが０である場合には、このビットに対応するＬＵＮの領域にデータが存在しないことになる。
【００２７】
パトロール対象ビットマップ２３４ｂは、パトロール対象となる領域を示すビットマップであり、ＬＵＮを所定サイズに区切った領域ごとにビットを割り当て、各領域がパトロール対象となるか否かをビットのオンオフで示したものである。
【００２８】
ビットが１である場合には、このビットに対応するＬＵＮの領域がパトロール対象となり、ビットが０である場合には、このビットに対応するＬＵＮの領域がパトロール対象とならないことになる。このパトロール対象ビットマップ２３４ｂには、ある時点で書込状態ビットマップ２３４ａの内容がコピーされ、ＬＵＮへのアクセス状況に応じて適宜補正される。例えば、パトロール処理を終えた時点で、次回のパトロール処理に備えて書込状態ビットマップ２３４ａの内容をパトロール対象ビットマップ２３４ｂにコピーする。パトロール対象ビットマップ２３４ｂの補正処理については後述する。なお、パトロール対象ビットマップ２３４ｂは、書込状態ビットマップと同じサイズである。
【００２９】
図３は、図２に示したＣＭ２３の内部構成を示す機能ブロック図である。なお、ＣＭ２４についても同様の構成となる。同図に示すように、ＣＭ２３は、ＲＡＩＤ制御部３１、ビットマップ管理部３２及びパトロール処理部３３を含む制御部３０と、書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂを記憶したメモリ２３４とを有する。
【００３０】
ＲＡＩＤ制御部３１は、ＤＥ２２内の複数のディスク装置を論理ディスク装置として管理するとともに、ＲＡＩＤ０〜６の記憶制御を行う。ビットマップ管理部３２は、すでに説明した書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂの生成、更新、補正並びに開放を含む管理を行う管理部であり、ビットマップ生成処理部３２ａ及びビットマップ補正処理部３２ｂを有する。
【００３１】
ビットマップ生成処理部３２ａは、書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂを生成する。具体的には、ビットマップ生成処理部３２ａは、ホスト装置１０からＬＵＮのフォーマット指示を受け付けた際に、ＬＵＮのビットマップを確保済みでない場合に、このＬＵＮに対応する書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂを新たに生成する。なお、ＬＵＮにはじめて書き込み処理が行われる際にＬＵＮに対応する書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂを生成してもよい。また、このビットマップ生成処理部３２ａは、ホスト装置１０からＬＵＮの削除指示を受け付けた場合には、該当するＬＵＮの書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂの領域を削除して開放する。
【００３２】
ビットマップ補正処理部３２ｂは、パトロール対象ビットマップ２３４ｂの内容を補正する。具体的には、ビットマップ補正処理部３２ｂは、ホスト装置１０から新たにデータの書込要求を受け付けた場合には、このデータを書き込むＬＵＮの領域に対応する書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂのビットをオフにする。つまり、データを書き込む時点で、一旦データを読み出して整合性チェックを行っているので、再度パトロール処理する必要がなくなるからである。なお、データを書き込む場合であっても、整合性チェックが行われないことがある場合には、整合性チェックを行っているかを判断し、整合性チェックを行っていると判断された場合に、ビットをオフにするようにしてもよい。
【００３３】
また、ホスト装置１０から新たにデータの読出要求を受け付けた場合にも、データを読み出す領域に対応するビットをオフにする。データの読み出しが適正になされた場合には、再度パトロール処理する必要がなくなるからである。
【００３４】
パトロール処理部３３は、パトロール対象ビットマップ２３４ｂの各ビットのオンオフ状況に応じてパトロール処理を行う。具体的には、パトロール処理部３３は、ビットがオンとされた領域はパトロール処理対象とし、ビットがオフとされた領域はパトロール対象外とする。なお、具体的なパトロール処理の詳細は、各種従来技術を利用することができる。
【００３５】
図４は、図３に示したパトロール処理部３３によるパトロール処理を説明するための説明図である。図４に示したＬＵＮ＃０のパトロール対象ビットマップ４０が存在する場合には、パトロール処理部３３は、このパトロール対象ビットマップ４０のビットがオンとされた領域のパトロール処理が行われる。
【００３６】
例えば、パトロール対象ビットマップ４０のビット４１がＬＵＮ＃０の領域Ａに対応する場合には、ＬＵＮ＃０の領域Ａがパトロール処理の対象となる。そして、ＬＵＮ＃０の領域Ａは、ＤＥ２２のディスク装置４２〜４４の領域Ａ’にそれぞれ対応するため、実際には、ＤＥ２２のディスク装置４２〜４４の領域Ａ’のパトロール処理が行われることになる。
【００３７】
ここで、パトロール対象ビットマップ４０の１ビット当たりの大きさについて説明する。ディスクアレイ装置２０では、パトロール対象ビットマップ４０の１ビット当たりの大きさがストライプサイズの倍数であり、かつ、ＲＡＩＤを構成するディスクの数に応じた値に設定される。例えば、図４の例では、各ディスク装置４２〜４４の領域Ａ’、領域Ｂ’の大きさがそれぞれストライプサイズであるものとし、ストライプサイズが３２ＫＢ（キロバイト）であるものとする。また、図４の例では、ディスク装置４２及び４３の領域Ａ’に３２ＫＢのストライプサイズのデータが格納され、ディスク装置４４にパリティを格納するものとする。
【００３８】
このような場合には、パトロール対象ビットマップ４０の１ビット当たりの大きさは、ストライプサイズ「３２ＫＢ」の倍数であり、かつ、ＲＡＩＤを構成するディスクの数「２」に応じた値である「６４ＫＢ」に設定される。つまり、ストライプサイズおよびディスク装置の数に応じて、１ビット当たりの大きさを設定することで、ディスク装置上のパトロールを連続した領域でパトロールすることができるため、ディスクへのコマンド発行回数が削減できる。なお、上記の説明では、パトロール対象ビットマップ４０の１ビット当たりの大きさについて、パリティ領域の大きさを記載していないが、パリティ領域についてもパトロール対象とする。
【００３９】
上記構成を有するディスクアレイ装置を用いることにより、ライト／リードがあるとパトロール対象からはずすので、データが存在し、かつパトロールが必要な領域のみをパトロール処理することができるので、パトロール処理を迅速かつ効率的に行うことが可能となる。
【００４０】
なお、図３に示したＲＡＩＤ制御部３１、ビットマップ管理部３２及びパトロール処理部３３に対応するプログラムは、ＣＭ２３内の図示しない不揮発性メモリやＲＯＭに記憶されている。ＣＰＵ２３３が、これらのプログラムを読み込んで実行することで、ビットマップ管理部３２及びパトロール処理部３３が機能発揮状態となる。また、上記説明では書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂはＲＡＭ等のメモリ上に保持する場合を示したが、電源オフ時や停電時に不揮発性メモリやＤＥ２２のディスク装置の未使用の空き領域に待避させることもできる。この場合は、電源再投入時に書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂをメモリ上に読み込むことになる。
【００４１】
次に、ＬＵＮが作成された後に、ディスクアレイ装置２０が、ストレージのＧＵＩ（Graphical  User  Interface）またはＣＬＩ(Command  line  interface）からＬＵＮのフォーマット要求を受け付けた場合の処理手順を説明する。図５は、ディスクアレイ装置２０がＬＵＮのフォーマット要求を受け付けた場合の処理手順を示すフローチャートである。
【００４２】
図５に示すように、ディスクアレイ装置２０が、ストレージのＧＵＩまたはＣＬＩからＬＵＮのフォーマット要求を受け付けたならば（ステップＳ１０１：ＹＥＳ）、ＬＵＮのフォーマット処理を実行する（ステップＳ１０２）。
【００４３】
そして、ディスクアレイ装置２０は、フォーマット対象となるＬＵＮについてのビットマップを確保済みであるか否かを調べる（ステップＳ１０３）。その結果、ビットマップが確保されていない場合には（ステップＳ１０３：ＮＯ）、ビットマップ生成処理部３２ａが書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂを確保する（ステップＳ１０４〜Ｓ１０５）。なお、ビットマップが確保済みである場合には（ステップＳ１０３：ＹＥＳ）、ステップＳ１０６に移行する。
【００４４】
その後、ディスクアレイ装置２０は、書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂをそれぞれ初期化して（ステップＳ１０６〜Ｓ１０７）、ＬＵＮのフォーマット処理の終了をストレージのＧＵＩまたはＣＬＩに通知して（ステップＳ１０８）、処理を終了する。このように、ＬＵＮのフォーマット処理の一環として、書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂが生成されることになる。
【００４５】
次に、ディスクアレイ装置２０がストレージのＧＵＩまたはＣＬＩからＬＵＮの削除要求を受け付けた場合の処理手順を説明する。図６は、ディスクアレイ装置２０がホＬＵＮの削除要求を受け付けた場合の処理手順を示すフローチャートである。
【００４６】
図６に示すように、ディスクアレイ装置２０が、ストレージのＧＵＩまたはＣＬＩからＬＵＮの削除要求を受け付けたならば（ステップＳ２０１：ＹＥＳ）、ＬＵＮの削除処理を実行する（ステップＳ２０２）。
【００４７】
その後、削除されたＬＵＮの書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂの領域をそれぞれ開放し（ステップＳ２０３〜Ｓ２０４）、削除処理の完了をストレージのＧＵＩまたはＣＬＩに通知して（ステップＳ２０５）、処理を終了する。このように、ＬＵＮの削除処理の一環として、書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂが削除されることになる。
【００４８】
次に、ディスクアレイ装置２０がホスト装置１０からデータ書込要求を受け付けた場合の処理手順を説明する。図７は、ディスクアレイ装置２０がホスト装置１０からデータ書込要求を受け付けた場合の処理手順を示すフローチャートである。
【００４９】
図７に示すように、ディスクアレイ装置２０が、ホスト装置１０からデータ書込要求を受け付けたならば（ステップＳ３０１：ＹＥＳ）、データの書込処理を実行する（ステップＳ３０２）。
【００５０】
その後、ディスクアレイ装置２０は、ＬＵＮ上のデータ書込領域に対応する書込状態ビットマップ２３４ａのビットをオンにする（ステップＳ３０３）。つまり、次回のパトロールにおいて、パトロール対象ビットマップ２３４ｂを用いてパトロール処理が行われた以降のパトロール処理の対象とするためである。一方、ディスクアレイ装置２０は、ＬＵＮ上のデータ書込領域に対応するパトロール対象ビットマップ２３４ｂのビットはオフにする（ステップＳ３０４）。すでに書込対象とされた領域は、書込処理時に書込データと読出データの一致チェック等が行われているため、次回のパトロール処理対象から除外するためである。その後、ディスクアレイ装置２０は、データ書込の完了をホスト装置１０に通知して（ステップＳ３０５）、処理を終了する。このように、データ書込の一環としてパトロール対象ビットマップの各ビットがオンに更新される。このように、二つのビットマップを制御することで、書き込み時には異常が発生しないが、その後異常が生じたデータを効率よく検出できる。
【００５１】
次に、ディスクアレイ装置２０がホスト装置１０からデータ読出要求を受け付けた場合の処理手順を説明する。図８は、ディスクアレイ装置２０がホスト装置１０からデータ読出要求を受け付けた場合の処理手順を示すフローチャートである。
【００５２】
図８に示すように、ディスクアレイ装置２０が、ホスト装置１０からデータ読出要求を受け付けたならば（ステップＳ４０１：ＹＥＳ）、データが図示しないキャッシュ上にデータが存在するか否かを確認する（ステップＳ４０２）。
【００５３】
その結果、ディスクアレイ装置２０は、キャッシュにデータが存在しない場合には（ステップＳ４０２：ＮＯ）、ディスク装置から該当するデータを読み出してキャッシュに記憶する（ステップＳ４０３）。また、ディスクアレイ装置２０は、データを読み出した領域に対応するパトロール対象ビットマップ２３４ｂのビットをオフにする（ステップＳ４０４）。正常にデータを読み出せた領域は、次回のパトロール対象から除外しても差し支えないためである。なお、キャッシュにデータが存在する場合には（ステップＳ４０２：ＹＥＳ）、ステップＳ４０５に移行する。
【００５４】
その後、ディスクアレイ装置２０は、読み出したデータをホスト装置１０に送信して（ステップＳ４０５）、処理を終了する。このように、データ読出要求がなされた場合には、該当する領域をパトロール対象から除外することで、より一層のパトロール処理の効率化を図っている。
【００５５】
次に、ディスクアレイ装置２０によるパトロール処理手順を説明する。図９は、ディスクアレイ装置２０によるパトロール処理手順を示すフローチャートである。図９に示すように、まず書込状態ビットマップ２３４ａの内容がパトロール対象ビットマップ２３４ｂにコピーされる（ステップＳ５０１）。ここでは説明の便宜上、パトロール処理の一環としてこのコピー処理が行われる場合を説明するが、かかるコピー処理は、前回のパトロール処理が行われた時点で実行される。例えば、該当領域に対するパトロール処理が行われた時点でコピーしてもよいし、すべてのパトロール処理が終わって時点でコピーしてもよいし、処理が終わって所定時間経過してからコピー処理を行ってもよい。
【００５６】
その後、ビットマップ補正処理部３２ｂによってパトロール対象ビットマップ２３４ｂの補正処理が行われる（ステップＳ５０２）。すでに説明したように、かかる補正処理は、新たなデータ書込要求又はデータ読出要求が行われた場合に実行されるが、図１０及び図１１を用いて説明する後述する補正処理も併せて実行される。
【００５７】
その後、パトロール処理部３３は、パトロール対象ビットマップ２３４ｂのビットがオンになっている領域のパトロール処理を行い（ステップＳ５０３）、その領域に対するパトロール処理が完了すると、パトロール処理を行った領域に対応するパトロール対象ビットマップ２３４ｂのビットをオフにする（ステップＳ５０４）。そして、パトロール対象ビットマップ２３４ｂにオンのビットが存在すれば（ステップＳ５０５：ＮＯ）、ステップＳ５０３に移行して同様の処理を繰り返す。一方、パトロール対象ビットマップ２３４ｂの全てのビットがオフになれば（ステップＳ５０５：ＹＥＳ）、パトロール処理を終了する。
【００５８】
次に、図９のステップＳ５０２に示したパトロール対象ビットマップ２３４ｂの補正処理について説明する。図１０は、ビットマップ補正処理部３２ｂによるパトロール対象ビットマップ２３４ｂの補正処理を説明するための説明図である。図１１は、ビットマップ補正処理部３２ｂによるパトロール対象ビットマップ２３４ｂの補正処理手順を示すフローチャートである。
【００５９】
図１０に示したパトロール対象ビットマップ５０のビット列５１は、オン、オフ、オン、オンとなっている。このため、パトロール処理部３３が、このパトロール対象ビットマップ５０を参照してパトロール処理を行うと、連続する領域であるにも係わらず２回に分けてパトロール処理を行わねばならず、効率的ではない。
【００６０】
このため、パトロール処理部３３では、図１０に示したパトロール対象ビットマップ５０のビット列５１を、パトロール対象ビットマップ６０のビット列６１のように補正してビットの補間処理を行う。これにより、ビット列６１は、オン、オン、オン、オンとなるため、連続した領域を一度に効率良くパトロール処理することができる。
【００６１】
具体的には、図１１に示すように、あらかじめオン、オフ、オン（１、０、１）のテンプレートを準備しておき、このテンプレートをパトロール対象ビットマップ６０に適用して相関値を算出する（ステップＳ６０１）。
【００６２】
そして、この相関値が所定の値すなわち「３」であるか否かを調べ（ステップＳ６０２）、所定の値である場合には（ステップＳ６０２：ＹＥＳ）、中央のビットをオンにする補正処理を行う（ステップＳ６０３）。
【００６３】
未処理のビットが存在する場合には（ステップＳ６０４：ＮＯ）、テンプレートを移動して（ステップＳ６０５）、ステップＳ６０１に移行させ、同様の処理を繰り返す。そして、全てのビットの処理を終えたならば（ステップＳ６０４：ＹＥＳ）、処理を終了する。上記補正処理を行うことにより、連続する領域をまとめてパトロール処理できるので、より一層効率的なパトロール処理が可能となる。
【００６４】
次に、ビットマップ補正処理部３２ｂによるパトロール対象ビットマップ２３４ｂの他の補正処理について説明する。図１２は、ビットマップ補正処理部３２ｂによるパトロール対象ビットマップ２３４ｂの他の補正処理手順を示すフローチャートである。ここでは、パトロール対象となる領域が所定の値以上増えた場合に、全領域をパトロール対象とする場合を示している。
【００６５】
図１２に示すように、ビットマップ補正処理部３２ｂは、パトロール対象ビットマップ２３４ｂの各ビットのうちオンになっているビットの割合を算定する（ステップＳ７０１）。そして、この割合が所定の値以上であるか否かを調べ（ステップＳ７０２）、所定の値以上である場合には（ステップＳ７０２：ＹＥＳ）、パトロール対象ビットマップ２３４ｂの全てのビットをオンにする（ステップＳ７０３）。なお、割合が処置の値未満である場合には（ステップＳ７０２：ＮＯ）、補正を行わずに処理を終了する。
【００６６】
上記補正処理を行うことで、パトロール対象となる領域がある程度以上多い場合に、パトロール対象ビットマップ２３４ｂにアクセスしてパトロール対象となる領域を判定するのに要するタイムラグを低減し、パトロール処理の効率化を図ることができる。なお、所定の値は、例えば５０パーセントとすることができる。
【００６７】
次に、ビットマップ補正処理部３２ｂによるパトロール対象ビットマップ２３４ｂの他の補正処理をさらに説明する。図１３は、ビットマップ補正処理部３２ｂによるパトロール対象ビットマップ２３４ｂの他の補正処理手順を示すフローチャートである。ここでは、ホスト装置１０のファイルシステムと連携してビットマップを補正する場合を示している。
【００６８】
ディスクアレイ装置２０は、データが書き込まれたことを把握できるが、このデータが必ずしも有効であるとは限らない。つまり、ホスト装置１０のファイルシステムによってデータが削除された場合に、ディスクアレイ装置２０に書き込まれたデータ自身が削除されるわけではなく、ファイルアロケーションテーブルのリンクデータのみが削除されるからである。
【００６９】
したがって、実際に有効なデータが存在する領域のみをパトロール処理するためには、ホスト装置１０のファイルシステムと連携し、ファイルが削除された場合に対応することが望ましい。このため、ビットマップ補正処理部３２ｂは、ホスト装置１０のファイルシステムから削除データに係る情報を受け付け、この情報に基づいて書込状態ビットマップ２３４ａ及びパトロール対象ビットマップ２３４ｂを更新している。
【００７０】
図１３に示すように、ホスト装置１０は、ディスクアレイ装置２０に対して削除データに係る情報を通知する。具体的には、ファイルを削除する都度、削除したデータのＬＢＡ（Logical Block Address）を削除データに係る情報として通知する。
【００７１】
ディスクアレイ装置２０は、ホスト装置１０から削除データに係る情報を受け付けたならば（ステップＳ８０１：ＹＥＳ）、パトロール対象ビットマップ２３４ｂの削除データの領域に対応するビットをオフにする（ステップＳ８０２）。同様に、書込状態ビットマップ２３４ａの削除データの領域に対応するビットもオフにする（ステップＳ８０３）。
【００７２】
上記補正処理を行うことにより、実際に有効なデータが存在する領域のみをパトロール対象とすることができるため、より一層効率的にパトロール処理を行うことが可能となる。なお、ホスト装置１０は、定期的に現在使用中のＬＢＡをディスクアレイ装置２０に通知して、削除されたデータを特定するよう構成することもできる。また、ホスト装置１０のファイルシステムが、書込状態ビットマップ２３４ａそのものを作成してディスクアレイ装置２０に通知することもできる。
【００７３】
上述してきたように、本実施例２では、データが書き込まれた領域をビットに対応づけた書込状態ビットマップ２３４ａと、パトロール対象となる領域をビットに対応づけたパトロール対象ビットマップ２３４ｂとを設け、パトロール処理部３３が、パトロール対象ビットマップ２３４ａを参照しつつデータが存在する領域のみをパトロール処理するよう構成したので、ＬＵＮ全体をパトロール対象とする場合に、短時間で効率良くパトロールを行うことができる。
【００７４】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００７５】
（付記１）メモリ領域を形成する複数の部分領域にそれぞれビットを割り当て、各部分領域に書込データが存在するか否かにより各部分領域におけるデータの書き込み状態を示す書き込み管理情報を前記ビットに記憶する書き込み管理情報記憶手段と、
ホスト装置からの要求に応答して所定の部分領域にデータが書き込まれた場合に、該部分領域に割り当てたビットに書き込まれたことを示す値を設定するビット管理手段と、
前記書き込み管理情報記憶手段を形成するビットに基づいて各部分領域をパトロール処理するパトロール処理手段と
を備えたことを特徴とするストレージ装置。
【００７６】
（付記２）前記メモリ領域を形成する複数の部分領域にそれぞれビットを割り当て、各部分領域が次回のパトロール対象となるか否かにより各部分領域が次回のパトロール対象となるか否かを示すパトロール対象情報を前記ビットに記憶するパトロール対象記憶手段をさらに備え、
前記ビット管理手段は、パトロール処理に先立って前記書き込み管理情報を前記パトロール対象情報に複写処理し、
前記パトロール処理手段は、前記パトロール対象記憶手段を形成するビットのうち次回のパトロール対象となることを示す値が設定されたビットに対応する部分領域をパトロール処理する
ことを特徴とする付記１に記載のストレージ装置。
【００７７】
（付記３）前記ビット管理手段は、前記ホスト装置からの要求に応答して所定の部分領域からデータの読み込みがなされた場合に、該部分領域に対応する前記パトロール対象記憶手段のビットに次回のパトロール対象とならないことを示す値を設定することを特徴とする付記２に記載のストレージ装置。
【００７８】
（付記４）前記ビット管理手段は、前記パトロール対象記憶手段を形成する３つの連続する第１ビットに次回のパトロール対象となることを示す値が設定され、第２ビットに次回のパトロール対象とならないことを示す値が設定され、第３ビットに次回のパトロール対象となることを示す値が設定されている場合に、前記第２ビットに次回のパトロール対象となることを示す値を設定することを特徴とする付記２又は３に記載のストレージ装置。
【００７９】
（付記５）前記ビット管理手段は、前記ホスト装置のファイルシステムを介して所定の部分領域に所在するデータの削除通知を受け付けた場合に、該部分領域に対応する前記書き込み管理情報のビット並びに前記パトロール対象記憶手段のビットに次回のパトロール対象とならないことを示す値を設定することを特徴とする付記２、３又は４に記載のストレージ装置。
【００８０】
（付記６）前記ビット管理手段は、前記パトロール対象記憶手段に次回のパトロール対象となることを示す値が設定されたビット数が所定値以上である場合に、該パトロール対象記憶手段の全てのビットに次回のパトロール対象となることを示す値を設定することを特徴とする付記２、３又は４に記載のストレージ装置。
【００８１】
（付記７）メモリ領域を形成する複数の部分領域にそれぞれビットを割り当て、各部分領域に書込データが存在するか否かにより各部分領域におけるデータの書き込み状態を示す書き込み管理情報を生成するステップと、
ホスト装置からの要求に応答して所定の部分領域にデータが書き込まれた場合に、該部分領域に割り当てたビットに書き込まれたことを示す値を設定するステップと、
前記書き込み管理情報を形成するビットに基づいて各部分領域をパトロール処理するステップと
を含んだことを特徴とするパトロール方法。
【００８２】
（付記８）メモリ領域を形成する複数の部分領域にそれぞれビットを割り当て、各部分領域に書込データが存在するか否かにより各部分領域におけるデータの書き込み状態を示す書き込み管理情報を生成する手順と、
ホスト装置からの要求に応答して所定の部分領域にデータが書き込まれた場合に、該部分領域に割り当てたビットに書き込まれたことを示す値を設定する手順と、
前記書き込み管理情報を形成するビットに基づいて各部分領域をパトロール処理する手順と
をコンピュータに実行させることを特徴とするパトロールプログラム。
【００８３】
（付記９）データの読み書き要求を行うホスト装置と、該ホスト装置からの要求に応答してストレージデバイスに対してデータの書き込み又は読み出しを行うストレージ装置とを有するストレージシステムであって、
前記ホスト装置は、
ファイルの削除操作がなされた場合に、該削除操作されたファイルが書き込まれている部分領域を通知する通知手段を備え、
前記ストレージ装置は、
メモリ領域を形成する複数の部分領域にそれぞれビットを割り当て、各部分領域に書込データが存在するか否かにより各部分領域におけるデータの書き込み状態を示す書き込み管理情報を前記ビットに記憶する書き込み管理情報記憶手段と、
ホスト装置からの要求に応答して所定の部分領域にデータが書き込まれた場合に、該部分領域に割り当てたビットに書き込まれたことを示す値を設定するビット管理手段と、
前記書き込み管理情報記憶手段を形成するビットに基づいて各部分領域をパトロール処理するパトロール処理手段と
を備えたことを特徴とするストレージシステム。
【符号の説明】
【００８４】
１  ホスト装置
２  ストレージ装置
３  制御部
３ａ  ビットマップ管理部
３ｂ  パトロール処理部
４  メモリ
４ａ  書込状態ビットマップ
５  ストレージデバイス
１０  ホスト装置
２０  ディスクアレイ装置
２１  ＣＥ
２２  ＤＥ
２３，２４  ＣＭ
３０  制御部
３１  ＲＡＩＤ制御部
３２  ビットマップ管理部
３２ａ  ビットマップ生成処理部
３２ｂ  ビットマップ補正処理部
３３  パトロール処理部
４０  パトロール対象ビットマップ
４１  ビット
４２〜４４  ディスク装置
５０，６０  パトロール対象ビットマップ
５１，６１  ビット列
２３１，２４１  ＣＡ
２３２，２４２  ＤＡ
２３３，２４３  ＣＰＵ
２３４，２４４  メモリ
２３４ａ，２４４ａ  書込状態ビットマップ
２３４ｂ，２４４ｂ  パトロール対象ビットマップ
【図１】
0005531656.tif 000002
【図２】
0005531656.tif 000003
【図３】
0005531656.tif 000004
【図４】
0005531656.tif 000005
【図５】
0005531656.tif 000006
【図６】
0005531656.tif 000007
【図７】
0005531656.tif 000008
【図８】
0005531656.tif 000009
【図９】
0005531656.tif 000010
【図１０】
0005531656.tif 000011
【図１１】
0005531656.tif 000012
【図１２】
0005531656.tif 000013
【図１３】
0005531656.tif 000014