(57)【要約】【課題】物理ディスク領域の割り当てが不要な論理領域に割り当てられた物理ディスク領域を効率的に解放すること。【解決手段】解放部２２１は、オールゼロでないチャンクが所定数連続すると一定数のチャンクのチェックをスキップする。また、解放部２２１は、ＯＳ及びファイルシステムに基づいてメタデータの位置を特定し、メタデータを含むチャンクのチェックを行わない。また、解放部２２１は、物理ディスク領域上で連続したチャンクをチェックする。【選択図】図３
2014194664.tif 000002
【特許請求の範囲】
【請求項１】
上位装置から書込要求された複数の論理記憶領域に対して、１または複数の記憶デバイスで構築された全物理記憶領域のうち、未使用の物理記憶領域を割り当てるストレージ装置であって、
複数の前記論理記憶領域それぞれに書き込まれたデータパターンが前記物理記憶領域への割り当て不要を示すデータパターンであるかを検査するパターン検査部と、
前記パターン検査部による検査対象の複数の前記論理記憶領域のうち、前記データパターンの検査を行わないスキップ対象の論理記憶領域を決定し、前記検査対象から該スキップ対象の論理記憶領域を除外するスキップ制御部と、
前記パターン検査部により検査された複数の論理記憶領域のうち、割り当て不要を示すデータパターンが書き込まれた論理記憶領域に対する物理記憶領域の割り当てを解放する解放制御部と、
を備えたことを特徴とするストレージ装置。
【請求項２】
前記スキップ制御部は、前記パターン検査部による検査の結果、連続する所定数の論理記憶領域に書き込まれたデータパターンが前記物理記憶領域への割り当て不要を示すデータパターン以外である場合に、前記所定数の論理記憶領域に連続する少なくとも１つ以上の論理記憶領域をスキップ対象として決定することを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記上位装置のオペレーティングシステム又はファイルシステムの種別を判定する種別判定部を備え、
前記スキップ制御部は、前記種別に基づいて、前記スキップ対象の論理記憶領域を決定することを特徴とする請求項１又は２に記載のストレージ装置。
【請求項４】
前記パターン検査部は、前記上位装置に対して使用許諾された論理ボリュームを構築する全論理記憶領域における先頭の論理記憶領域を検査し、
前記スキップ制御部は、前記先頭の論理記憶領域の検査結果に基づいて前記スキップ対象の論理記憶領域を決定することを特徴とする請求項１、２又は３に記載のストレージ装置。
【請求項５】
前記解放制御部は、前記割り当てを解放した際に前記物理記憶領域上で次の論理記憶領域を前記パターン検査部に検査させて該論理記憶領域が検査済みであるとして管理し、
前記スキップ制御部は、検査済みであることが記憶された論理記憶領域をスキップ対象として決定することを特徴とする請求項１〜４のいずれか一つに記載のストレージ装置。
【請求項６】
装置内のデータをコピーするコピー部を備え、
前記スキップ制御部は、前記コピー部によるコピーが行われた後、前記パターン検査部による検査を行わないスキップ対象の論理記憶領域を決定することを特徴とする請求項１〜５のいずれか一つに記載のストレージ装置。
【請求項７】
前記上位装置に対して使用許諾された論理ボリュームを構築する全論理記憶領域に対してシーケンシャルライトが行われたか否かを判定する判定部を備え、
前記スキップ制御部は、前記判定部により前記全論理記憶領域に対してシーケンシャルライトが行われたと判定された場合に、前記パターン検査部による検査を行わないスキップ対象の論理記憶領域を決定することを特徴とする請求項１〜５のいずれか一つに記載のストレージ装置。
【請求項８】
前記上位装置に対して使用許諾された論理ボリュームを構築する複数の論理記憶領域に対して割り当てられた物理記憶領域の量を監視する監視部を備え、
前記スキップ制御部は、前記監視部により監視された物理記憶領域の量が所定の閾値に達すると、前記パターン検査部による検査を行わないスキップ対象の論理記憶領域を決定することを特徴とする請求項１〜５のいずれか一つに記載のストレージ装置。
【請求項９】
コンピュータが、
上位装置から書込要求された複数の論理記憶領域に対して、１または複数の記憶デバイスで構築された全物理記憶領域のうち、未使用の物理記憶領域を割り当て、
複数の前記論理記憶領域それぞれに書き込まれたデータパターンが前記物理記憶領域への割り当て不要を示すデータパターンであるかの検査を行わないスキップ対象の論理記憶領域を決定し、決定したスキップ対象の論理記憶領域を除外して前記検査を行い、
検査した複数の論理記憶領域のうち、割り当て不要を示すデータパターンが書き込まれた論理記憶領域に対する物理記憶領域の割り当てを解放する
処理を行うことを特徴とする割当解放制御方法。
【請求項１０】
コンピュータに、
上位装置から書込要求された複数の論理記憶領域に対して、１または複数の記憶デバイスで構築された全物理記憶領域のうち、未使用の物理記憶領域を割り当て、
複数の前記論理記憶領域それぞれに書き込まれたデータパターンが前記物理記憶領域への割り当て不要を示すデータパターンであるかの検査を行わないスキップ対象の論理記憶領域を決定し、決定したスキップ対象の論理記憶領域を除外して前記検査を行い、
検査した複数の論理記憶領域のうち、割り当て不要を示すデータパターンが書き込まれた論理記憶領域に対する物理記憶領域の割り当てを解放する
処理を実行させることを特徴とする割当解放制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、割当解放制御方法及び割当解放制御プログラムに関する。
【背景技術】
【０００２】
ストレージ装置内の容量を効率的に管理する技術の１つとして、シン・プロビジョニング技術が知られている。シン・プロビジョニングは、論理的な記憶領域(論理領域)をサーバ等の上位装置に仮想的に割り当てておき、実際に必要になったタイミングで、磁気ディスク等の記憶デバイスで構築された物理的な記憶領域（物理ディスク領域）を割り当てる技術である。シン・プロビジョニング機能を用いることにより、少ない物理ディスク数で運用を始められ、必要に応じて物理ディスクを追加すれば良いことから、システム管理者は、初期コストを削減し、ディスクの使用効率を上げることができる。
【０００３】
シン・プロビジョニング機能により仮想化した(論理的に割り当てた)論理領域は、シン・プロビジョニング ボリューム（ＴＰＶ：Thin  Provisioning  Volume）と呼ばれる。また、ＴＰＶをある一定の論理ブロックサイズごとに分割した管理上の単位論理領域を、ここではチャンク（chunk）と呼ぶこととする。なお、このようなチャンクのサイズは数百ＫＢから数百ＭＢの間で設定される。
【０００４】
ＴＰＶに対してホストなどの上位装置からデータのライトが行われた場合、ホストからライトされた量に応じて必要な物理ディスク領域がチャンクごとに割り当てられ、その後、その論理領域に割り当てられた物理ディスク領域にデータが書き込まれる。シン・プロビジョニング機能によりＴＰＶが作成された直後は、どのチャンクにも物理ディスク領域は割り当てられていない。
【０００５】
ＴＰＶに対してホストＯＳ（Operating  System）からの初期化や、バックアップからのリストアが行われた場合、未使用部分を示すデータとしてオールゼロデータが書き込まれることがある。ここで、「オールゼロデータ」とは、全てが０であるデータである。
【０００６】
チャンクにオールゼロデータが書き込まれると、割り当て不要な論理領域にも物理ディスク領域が割り当てられてしまう。そのため、物理ディスク領域が割り当てられている論理領域のデータがオールゼロデータである場合、その論理領域に対応する物理ディスク領域の割り当てを外し、この物理ディスク領域を、ストレージプールに戻すような、自律的な機能がある。ここで、ストレージプールは、いずれの論理領域に対しても未割り当ての物理ディスク領域を集約して管理するためのものである。
【０００７】
なお、動的チャンク割付け機能を有するストレージシステムにおいて、物理ストレージが割り当てられていない領域をデフォルトデータでバックアップして復元する際に物理ストレージの割付けを防止する従来技術がある。また、デフォルトデータであるか否かをチェックするＬＳＩ回路が開示されている（例えば、特許文献１参照。）。
【０００８】
また、仮想ボリュームの記憶内容を複製する際に、仮想ボリュームを構成するブロックに実記憶領域が割り当てられているか否かをチェックし、実記憶領域が割り当てられていないブロックを解放する従来技術がある（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−１３００８０号公報
【特許文献２】特開２０１１−７６５７２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、ストレージ装置は物理ディスク領域の割り当てが不要な論理領域に割り当てられた物理ディスク領域を効率的に解放することができないという問題がある。すなわち、物理ディスク領域の割り当てを外すためには、論理領域のデータがオールゼロデータであるか否かのチェックを行う必要がある。しかし、このチェックを行うためには、論理領域の全データをディスクから読み込む必要があり、オールゼロデータのチェックは時間がかかる。また、ＬＳＩ回路を用いてオールゼロデータであるか否かのチェックを行うと、コストが増大する。
【００１１】
本発明は、１つの側面では、物理ディスク領域の割り当て解放処理を効率的に行うことができるストレージ装置、割当解放制御方法及び割当解放制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示するストレージ装置は、１つの態様において、上位装置から書込要求された複数の論理記憶領域に対して、１または複数の記憶デバイスで構築された全物理記憶領域のうち、未使用の物理記憶領域を割り当てるストレージ装置である。ストレージ装置は、パターン検査部と、スキップ制御部と、解放制御部とを備える。パターン検査部は、複数の前記論理記憶領域それぞれに書き込まれたデータパターンが前記物理記憶領域への割り当て不要を示すデータパターンであるかを検査する。スキップ制御部は、前記パターン検査部による検査対象の複数の前記論理記憶領域のうち、前記データパターンの検査を行わないスキップ対象の論理記憶領域を決定し、前記検査対象から該スキップ対象の論理記憶領域を除外する。解放制御部は、前記パターン検査部により検査された複数の論理記憶領域のうち、割り当て不要を示すデータパターンが書き込まれた論理記憶領域に対する物理記憶領域の割り当てを解放する。
【発明の効果】
【００１３】
１実施態様によれば、物理ディスク領域の割り当て解放処理を効率的に行うことができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例に係るストレージシステムの構成を示す図である。
【図２】図２は、ＣＭのハードウェア構成を示す図である。
【図３】図３は、ファームウェアを実行することによって実現する機能を示す機能ブロック図である。
【図４】図４は、解放部による割り当て解放処理のフローを示すフローチャートである。
【図５Ａ】図５Ａは、メタデータを含むチャンクのチェックを行わない割り当て解放処理のフローを示すフローチャート（Ａ）である。
【図５Ｂ】図５Ｂは、メタデータを含むチャンクのチェックを行わない割り当て解放処理のフローを示すフローチャート（Ｂ）である。
【図６Ａ】図６Ａは、物理ディスク領域上で連続なデータに対するチェックを行う割り当て解放処理のフローを示すフローチャートである。
【図６Ｂ】図６Ｂは、物理ディスク領域上で連続なデータに対するチェックを行う割り当て解放処理のフローを示すフローチャートである。
【図７Ａ】図７Ａは、図４、図６Ａ及び図６Ｂに示した割り当て解放処理を併用した割り当て解放処理のフローを示すフローチャートである。
【図７Ｂ】図７Ｂは、図４、図６Ａ及び図６Ｂに示した割り当て解放処理を併用した割り当て解放処理のフローを示すフローチャートである。
【図８Ａ】図８Ａは、図５Ｂ、図６Ａ及び図６Ｂに示した割り当て解放処理を併用した割り当て解放処理のフローを示すフローチャートである。
【図８Ｂ】図８Ｂは、図５Ｂ、図６Ａ及び図６Ｂに示した割り当て解放処理を併用した割り当て解放処理のフローを示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下に、本願の開示するストレージ装置、割当解放制御方法及び割当解放制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１６】
まず、実施例に係るストレージシステムの構成について説明する。図１は、実施例に係るストレージシステムの構成を示す図である。図１に示すように、ストレージシステム１００は、二重化されたＣＭ（Controller  Module）１１０と、４グループのＤＥ（Disk  Enclosure）１２０を有する。
【００１７】
ＣＭ１１０は、ストレージシステム１００を制御するモジュールであり、２つのＣＡ（Channel  Adapter）１１１と、２つのＩＯＣ（Input  Output  Controller）１１２と、２つのＥＸＰ(EXPander)１１３とを有する。
【００１８】
ＣＡ１１１は、上位装置であるホストとのインタフェースである。ここで、ホストはサーバなどの情報処理装置である。なお、ホストからの書込要求には、データのライト、ボリューム全体への０の書き込みによる初期化、ブロックの初期化などがある。ＩＯＣ１１２は、ＳＡＳ（Serial  Attached  ＳＣＳＩ）のコントローラである。ＥＸＰ１１３は、４ＷＬ（４  Wide  Link）のＳＡＳによって、ＣＭ１１０とＤＥ１２０を接続する。ここで、４ＷＬとは、１つのＳＡＳのポートに４つの物理リンクを使用することを示す。また、二重化されたＣＭ１１０の間は、８レーンのＰＣＩｅ（ＰＣＩエキスプレス）により接続される。
【００１９】
ＤＥ１２０は、複数の磁気ディスクを搭載する複数のディスク装置を収容する装置である。なお、ここでは、４つのＤＥ１２０を有するグループが４つあるストレージシステム１００を示すが、ストレージシステム１００は、任意の台数のＤＥ１２０を有することができる。
【００２０】
図２は、ＣＭ１１０のハードウェア構成を示す図である。図２に示すように、ＣＭ１１０は、２つのＣＡ１１１と、２つのＩＯＣ１１２と、２つのＥＸＰ１１３とに加えて、ＣＰＵ１１４と、メモリ１１５と、キャッシュ１１６とを有する。
【００２１】
ＣＰＵ１１４は、ファームウェアを実行することによってストレージシステム１００を制御する演算装置である。メモリ１１５は、ファームウェアを記憶する記憶装置である。キャッシュ１１６は、磁気ディスクに読み書きされるデータを一時的に記憶する記憶装置である。
【００２２】
図３は、ファームウェアを実行することによって実現する機能を示す機能ブロック図である。図３に示すように、ＣＰＵ１１４は、排他制御部２１０と、キャッシュ制御部２２０と、ディスク制御部２３０と、コピー制御部２４０の機能を実現する。
【００２３】
排他制御部２１０は、磁気ディスクへのアクセスの排他制御を行う。例えば、排他制御部２１０は、データの書き込みが行われている磁気ディスクからデータの読み出しが行われないように制御する。
【００２４】
キャッシュ制御部２２０は、キャッシュ１１６の制御を行う。また、キャッシュ制御部２２０は、物理ディスク領域と論理領域を関係付けるための管理テーブルを有し、論理領域への物理ディスク領域の割り当て及び論理領域からの物理ディスク領域の解放を行う。
【００２５】
キャッシュ制御部２２０は、解放部２２１を有する。解放部２２１は、論理領域に割り当てられている物理ディスク領域のうち、データがオールゼロであるチャンクに割り当てられた物理ディスク領域を解放する。その理由は、データがオールゼロであるデータパターンのチャンクには物理ディスク領域の割り当ては不要であるためである。ただし、解放部２２１は、全てのチャンクについてデータがオールゼロであるか否かをチェックするのではなく、チェックする必要がないチャンクを特定し、特定したチャンク以外のチャンクに対してだけデータがオールゼロであるか否かをチェックする。
【００２６】
具体的には、解放部２２１は、所定の数のチャンクが連続してデータがオールゼロでない場合には、一定数のチャンクをスキップし、スキップしたチャンクに対してはデータがオールゼロであるか否かのチェックは行わない。
【００２７】
解放部２２１は、パターン検査部２２１ａと、スキップ制御部２２１ｂと、解放制御部２２１ｃとを有する。パターン検査部２２１ａは、複数のチャンクそれぞれがオールゼロであるかを検査する。スキップ制御部２２１ｂは、パターン検査部２２１ａが検査を行わないスキップ対象のチャンクを決定し、検査対象からスキップ対象を除外する。解放制御部２２１ｃは、パターン検査部２２１ａにより検査された複数のチャンクのうち、オールゼロであるチャンクの割り当てを解放する。
【００２８】
ホストから大きなデータが書き込まれた場合など、ＴＰＶにはゼロ以外のデータが長く続いている領域の存在が考えられる。解放部２２１は、このような領域の存在を念頭に、所定数のチャンクに連続してゼロ以外のデータを検出した場合、それ以降もしばらくゼロ以外のデータが続くとして一定数のチャンクをスキップする。解放部２２１は、スキップにより、チェック量を減らし、解放処理の高速化を図ることができる。スキップするチャンクの数は、チャンクのサイズにもよるが、例えば、チャンクのサイズを１２Ｍバイトとして、４である。
【００２９】
また、解放部２２１は、ＯＳやファイルシステムで用いられるメタデータの位置を特定し、メタデータが書き込まれているチャンクについては、データがオールゼロであるか否かのチェックは行わない。解放部２２１は、メタデータが書き込まれたチャンクのチェックを行わないことにより、チェック量を減らし、解放処理の高速化を図ることができる。
【００３０】
ただし、メタデータの書き込み位置は、ＯＳやファイルシステムにより異なる。ファイルシステムは主にエクステントベースとブロックベースのものが存在する。エクステントベースのファイルシステムの場合は、主にボリュームの先頭部分にボリュームサイズの一割ほどのメタ領域が作成される。一方、ブロックベースのファイルシステムでは、１Ｍバイトほどのメタデータが、数１００Ｋ〜数１０Ｍバイトほどの一定容量毎に、等間隔に分散して書き込まれる。
【００３１】
そこで、解放部２２１は、まず、ＯＳ及びファイルシステムを特定する。特定する方法としては、ユーザに指定させる方法と、解放部２２１がディスク装置の先頭の論理ブロックから読み取る方法とがある。そして、解放部２２１は、特定したＯＳ及びファイルシステムに基づいて、メタデータの位置を特定する。
【００３２】
なお、解放部２２１がディスク装置の先頭の論理ブロックからＯＳ及びファイルシステムを読み取る方法として、例えば、先頭の論理ブロックに格納されているＭＢＲ（Master  Boot  Record）を用いる方法がある。ＭＢＲには、ファイルシステムに関する情報が含まれる。
【００３３】
このように、解放部２２１は、データがオールゼロであるか否かをチェックする必要がないチャンクを特定し、特定したチャンク以外のチャンクに対してだけチェックすることによって、物理ディスク領域の割り当て解放処理を効率的に行うことができる。
【００３４】
また、シン・プロビジョニング機能において、物理ディスク領域の割り当ては、ホストからデータのライトが行われた時に、必要な量が論理領域のチャンクごとに行われる。ホストからのデータのライトは論理領域上で連続とは限らないため、ＴＰＶの論理領域上では連続なデータであっても、物理ディスク領域の上で連続とは限らない。そのため、論理領域上で連続にデータチェックを行うことは、ディスクアクセスの観点からみると最適とはいえない。そこで、解放部２２１は、論理領域上で連続にデータチェックを行っていくのに加えて、物理ディスク領域上で連続となる別の論理領域の割り当て部分もデータチェックを行う。
【００３５】
すなわち、解放部２２１は、あるチャンクをチェックした場合に、そのチャンクの最終論理ブロックをチェックした後、物理ディスク領域上でそのチャンクと隣り合うチャンクの先頭の論理ブロックのチェックを行う。そして、解放部２２１は、隣り合うチャンクの先頭の論理ブロックにゼロ以外のデータを検出した場合、そのチャンクがチェック済みであることを示す情報をメモリ等に記憶しておいて、そのチャンクのチェック状態を管理し、チェック済みのチャンクに対するチェックは後で行わないように制御する。
【００３６】
このように、解放部２２１は、一回のディスクアクセスで、物理ディスク領域上で隣り合うチャンクの先頭部分を同時にチェックすることにより、ディスクアクセスによるオーバヘッドを減らすことができ、物理ディスク領域の割り当て解放処理を高速化できる。
【００３７】
ディスク制御部２３０は、キャッシュ制御部２２０の指示に基づいて、磁気ディスクからのデータの読み出し、磁気ディスクへのデータの書き込みを制御する。コピー制御部２４０は、ストレージシステム１００内でのデータのコピーを制御する。
【００３８】
次に、解放部２２１による割り当て解放処理の起動について説明する。解放部２２１による割り当て解放処理は、手動又は自動で実行される。自動で実行される場合には、割り当て解放処理は、以下のタイミングで起動される。
【００３９】
（１）ストレージシステム１００が有するコピー機能によりコピーがされた後
ストレージシステム１００が有するコピー処理では、ブロックレベルでのコピーが行われる。そのため、あるディスク装置のボリュームのコピーが行われた場合、そのコピー元ボリュームの未使用部分はゼロデータとしてコピー先に書き込みがされてしまう。そのため、コピー処理が行われた後のコピー先ＴＰＶではゼロデータ領域が発生している可能性が高い。そのため、コピー処理が完了した後で割り当て解放処理を実施することは有効である。
【００４０】
（２）全面リストア等、ＴＰＶの全領域にＬＢＡ（Logical  Block  Address）が連続でライトされた後
バックアップ元のボリュームで未使用領域があった場合、該当領域はゼロデータとしてバックアップされている。このデータがリストアされると、ゼロデータがそのままボリュームに書き込まれることになる。ボリュームの全面リストアは、ストレージシステム１００としては、シーケンシャルライトに見える。そのため、ＴＰＶの全面に対し、シーケンシャルライトがされた場合は、解放部２２１は、全面リストアがされたと判断し、割り当て解放処理を自動で実行する。なお、解放部２２１は、例えば、データが書き込まれていく中で、最初のライトはＴＰＶの先頭ＬＢＡに対してか、また、先頭ＬＢＡ以降に書き込みがあった全ＬＢＡにおいて、各ＬＢＡは論理領域上１つ前のＬＢＡと比較して連続か、また、最後のライトはＴＰＶの最終ＬＢＡに対してかをチェックし、全てを満たす場合に、ＴＰＶの全面に対し、シーケンシャルライトがされたと判断する。
【００４１】
（３）ホストからＴＰＶの初期化(ファイルシステム作成やボリュームマネージャーによるボリュームの作成)実施後
（２）と同様、ホストから初期化処理がされると、ストレージシステム１００としては、初期化処理はシーケンシャルライトに見える。そのため、ＴＰＶの全面に対し、シーケンシャルライトがされた場合は、解放部２２１は、全面リストアがされたと判断し、割り当て解放処理を自動で実行する。
【００４２】
（４）ＴＰＶの容量監視でアラーム（割り当て量がＴＰＶ全体の容量に対し、あるしきい値に達した場合）になった時
アラームになる時は、ＴＰＶの空き容量が少なくなってきた場合である。空き容量が少なくなった原因の一つにゼロデータの割り当ての発生がある場合は、ゼロデータの領域を解放することで、ＴＰＶの使用効率を高めることが可能である。このようなケースに対応できるよう、解放部２２１は、ＴＰＶの容量監視でアラームになった時に、割り当て解放処理を自動で実行する。
【００４３】
（５）スケジュール設定による定期的なタイミング
ストレージシステム１００の管理者により設定されたスケジュールに基づいて、解放部２２１は、割り当て解放処理を自動で実行する。
【００４４】
次に、解放部２２１による割り当て解放処理のフローについて説明する。図４は、解放部２２１による割り当て解放処理のフローを示すフローチャートである。図４に示すように、解放部２２１は、割り当て解放処理が指定されているＴＰＶの先頭チャンクを選択し（ステップＳ１）、選択したチャンクに対して物理割り当て済みか否かを判定する（ステップＳ２）。ここで、「物理割り当て済み」とは、物理ディスク領域が割り当て済みであることを示す。
【００４５】
そして、物理割り当て済みである場合には、解放部２２１は、チャンクの先頭ＬＢ（Logical  Block：論理ブロック）内のデータをチェックし（ステップＳ３）、ＬＢ内のデータがオールゼロであるか否かを判定する（ステップＳ４）。なお、ＬＢのサイズは５１２バイトである。
【００４６】
その結果、ＬＢ内のデータがオールゼロである場合には、解放部２２１は、連続カウンタの値を０にする（ステップＳ５）。ここで、連続カウンタは、オールゼロでないチャンクの数をカウントするカウンタであり、オールゼロのチャンクがあったため、０に初期化される。
【００４７】
そして、解放部２２１は、チャンク内の全ＬＢでデータがオールゼロであるか否かのチェックが完了したか否かを判定し（ステップＳ６）、チェックが完了していないＬＢがある場合には、次のＬＢ内のデータをチェックし（ステップＳ７）、ステップＳ４に戻る。一方、チャンク内の全ＬＢでチェックが完了した場合には、チャンク内のデータがオールゼロであったので、解放部２２１は、チャンクの物理割り当てを解放する（ステップＳ８）。
【００４８】
そして、解放部２２１は、最後のチャンクまで到達したか否かを判定し（ステップＳ９）、到達した場合には、処理を終了し、到達していない場合には、次のチャンクを選択し（ステップＳ１０）、ステップＳ２に戻る。
【００４９】
一方、ＬＢ内のデータがオールゼロでない場合には、解放部２２１は、連続カウンタの値が所定値以上であるか否かを判定し（ステップＳ１１）、所定値以上でない場合には、連続カウンタに１を加え（ステップＳ１２）、ステップＳ９に進む。ここで、連続カウンタの値が所定値以上でない場合とは、データがオールゼロでないチャンクが、チャンクのチェックをスキップしてもかまわないほど連続していない場合である。一方、連続カウンタの値が所定値以上である場合には、解放部２２１は、一定数のチャンク分スキップし（ステップＳ１３）、連続カウンタの値を０にして（ステップＳ１４）、ステップＳ９に進む。
【００５０】
また、解放部２２１は、選択したチャンクに対して物理割り当て済みでない場合には、チャンクのチェックは不要であり、データがオールゼロであるチャンクは途切れたので、ステップＳ１４に進む。
【００５１】
このように、データがオールゼロでないチャンクが所定数連続した場合に、解放部２２１は、チャンクのチェックをスキップするので、チャンクのチェック数を減らすことができ、割り当て解放処理を高速化することができる。
【００５２】
次に、メタデータを含むチャンクのチェックを行わない割り当て解放処理のフローについて説明する。図５Ａ及び図５Ｂは、メタデータを含むチャンクのチェックを行わない割り当て解放処理のフローを示すフローチャートである。図５Ａは、ストレージシステム１００の管理者からＯＳ及びファイルシステムの指定を受け付ける場合を示し、図５Ｂは、解放部２２１がＯＳ及びファイルシステムを判断する場合を示す。
【００５３】
図５Ａに示すように、解放部２２１は、ＯＳ及びファイルシステムの指定を管理者から受け付ける（ステップＳ２１）。そして、解放部２２１は、割り当て解放処理が指定されているＴＰＶの先頭チャンクを選択し（ステップＳ２２）、選択したチャンクに対して物理割り当て済みか否かを判定する（ステップＳ２３）。
【００５４】
そして、物理割り当て済みである場合には、解放部２２１は、ＯＳ及びファイルシステムの情報に基づいて、チャンクにメタデータが含まれるか否かを判定する（ステップＳ２４）。その結果、チャンクにメタデータが含まれない場合には、解放部２２１は、チャンクの先頭ＬＢ内のデータをチェックし（ステップＳ２５）、ＬＢ内のデータがオールゼロであるか否かを判定する（ステップＳ２６）。
【００５５】
その結果、ＬＢ内のデータがオールゼロである場合には、解放部２２１は、連続カウンタの値を０にする（ステップＳ２７）。そして、解放部２２１は、チャンク内の全ＬＢでデータがオールゼロであるか否かのチェックが完了したか否かを判定する（ステップＳ２８）。その結果、チェックが完了していないＬＢがある場合には、解放部２２１は、次のＬＢ内のデータをチェックし（ステップＳ２９）、ステップＳ２６に戻る。
【００５６】
一方、チャンク内の全ＬＢでチェックが完了した場合には、チャンク内のデータがオールゼロであったので、解放部２２１は、チャンクの物理割り当てを解放する（ステップＳ３０）。そして、解放部２２１は、最後のチャンクまで到達したか否かを判定し（ステップＳ３１）、到達した場合には、処理を終了し、到達していない場合には、次のチャンクを選択し（ステップＳ３２）、ステップＳ２３に戻る。
【００５７】
一方、ＬＢ内のデータがオールゼロでない場合には、解放部２２１は、連続カウンタの値が所定値以上であるか否かを判定し（ステップＳ３３）、所定値以上でない場合には、連続カウンタに１を加え（ステップＳ３４）、ステップＳ３１に進む。一方、連続カウンタの値が所定値以上である場合には、解放部２２１は、ＯＳ及びファイルシステムによって決まる数のチャンク分スキップし（ステップＳ３５）、連続カウンタの値を０にして（ステップＳ３６）、ステップＳ３１に進む。
【００５８】
また、解放部２２１は、選択したチャンクに対して物理割り当て済みでない場合及びチャンクにメタデータが含まれる場合には、チャンクのチェックは不要であり、データがオールゼロであるチャンクは途切れたので、ステップＳ３６に進む。
【００５９】
また、図５Ｂに示すように、解放部２２１は、割り当て解放処理が指定されているＴＰＶの先頭チャンクを選択する（ステップＳ４１）。そして、解放部２２１は、ＯＳ及びファイルシステムを判断する（ステップＳ４２）。
【００６０】
そして、解放部２２１は、チャンクが物理割り当て済みであるか否かを判定し（ステップＳ４３）、物理割り当て済みである場合には、ＯＳ及びファイルシステムの情報に基づいて、チャンクにメタデータが含まれるか否かを判定する（ステップＳ４４）。その結果、チャンクにメタデータが含まれない場合には、解放部２２１は、チャンクの先頭ＬＢ内のデータをチェックし（ステップＳ４５）、ＬＢ内のデータがオールゼロであるか否かを判定する（ステップＳ４６）。
【００６１】
その結果、ＬＢ内のデータがオールゼロである場合には、解放部２２１は、連続カウンタの値を０にする（ステップＳ４７）。そして、解放部２２１は、チャンク内の全ＬＢでデータがオールゼロであるか否かのチェックが完了したか否かを判定する（ステップＳ４８）。その結果、チェックが完了していないＬＢがある場合には、解放部２２１は、次のＬＢ内のデータをチェックし（ステップＳ４９）、ステップＳ４６に戻る。
【００６２】
一方、チャンク内の全ＬＢでチェックが完了した場合には、チャンク内のデータがオールゼロであったので、解放部２２１は、チャンクの物理割り当てを解放する（ステップＳ５０）。そして、解放部２２１は、最後のチャンクまで到達したか否かを判定し（ステップＳ５１）、到達した場合には、処理を終了し、到達していない場合には、次のチャンクを選択し（ステップＳ５２）、ステップＳ４３に戻る。
【００６３】
一方、ＬＢ内のデータがオールゼロでない場合には、解放部２２１は、連続カウンタの値が所定値以上であるか否かを判定し（ステップＳ５３）、所定値以上でない場合には、連続カウンタに１を加え（ステップＳ５４）、ステップＳ５１に進む。一方、連続カウンタの値が所定値以上である場合には、解放部２２１は、ＯＳ及びファイルシステムによって決まる数のチャンク分スキップし（ステップＳ５５）、連続カウンタの値を０にして（ステップＳ５６）、ステップＳ５１に進む。
【００６４】
また、解放部２２１は、選択したチャンクに対して物理割り当て済みでない場合及びチャンクにメタデータが含まれる場合には、チャンクのチェックは不要であり、データがオールゼロであるチャンクは途切れたので、ステップＳ５６に進む。
【００６５】
このように、メタデータが含まれるチャンクについては、データがオールゼロであるか否かのチェックを行わないので、解放部２２１は、チャンクのチェック数を減らすことができ、割り当て解放処理を高速化することができる。
【００６６】
次に、物理ディスク領域上で連続なデータに対するチェックを行う割り当て解放処理のフローについて説明する。図６Ａ及び図６Ｂは、物理ディスク領域上で連続なデータに対するチェックを行う割り当て解放処理のフローを示すフローチャートである。
【００６７】
図６Ａに示すように、解放部２２１は、割り当て解放処理が指定されているＴＰＶの先頭チャンクを選択し（ステップＳ７１）、選択したチャンクに対して物理割り当て済みか否かを判定する（ステップＳ７２）。その結果、物理割り当て済みでない場合には、解放部２２１は、ステップＳ７５に進む。
【００６８】
一方、物理割り当て済みである場合には、解放部２２１は、チャンクの先頭ＬＢはチェック済みか否かを判定する（ステップＳ７３）。ここで、チェック済みである場合とは、そのチャンクがチェックが行われたチャンクに物理ディスク領域上連続したチャンクであったためチェックが行われた場合である。
【００６９】
そして、チャンクの先頭ＬＢはチェック済みである場合には、解放部２２１は、チャンクの先頭ＬＢ内のデータはオールゼロか否かを判定する（ステップＳ７４）。その結果、チャンクの先頭ＬＢ内のデータがオールゼロでない場合には、解放部２２１は、全チャンク分のチェックが完了したか否かを判定し（ステップＳ７５）、全チャンク分のチェックが完了した場合には、処理を終了する。一方、チェックしていないチャンクがある場合には、解放部２２１は、論理領域上の次のチャンクを選択し（ステップＳ７６）、ステップＳ７２に戻る。
【００７０】
また、チャンクの先頭ＬＢ内のデータはオールゼロである場合には、解放部２２１は、次のＬＢ内のデータをチェックし（ステップＳ７７）、ＬＢ内のデータがオールゼロであるか否かを判定する（ステップＳ７９）。また、チャンクの先頭ＬＢはチェック済みでない場合には、解放部２２１は、チャンクの先頭ＬＢ内のデータをチェックし（ステップＳ７８）、ＬＢ内のデータがオールゼロであるか否かを判定する（ステップＳ７９）。
【００７１】
その結果、ＬＢ内のデータがオールゼロでない場合には、解放部２２１は、チャンクのチェック済みを記憶し（ステップＳ８０）、ステップＳ７５に移動する。一方、ＬＢ内のデータがオールゼロである場合には、解放部２２１は、チャンク内の全ＬＢでデータがオールゼロであるか否かのチェックが完了したか否かを判定する（ステップＳ８１）。その結果、チェックが完了していないＬＢがある場合には、ステップＳ７７に戻る。
【００７２】
一方、チャンク内の全ＬＢでチェックが完了した場合には、図６Ｂに示すように、解放部２２１は、チャンクの物理割り当てを解放する（ステップＳ８２）。そして、解放部２２１は、物理ディスク領域上に次のチャンクがあるか否かを判定し（ステップＳ８３）、次のチャンクがない場合には、ステップＳ７５に移動する。
【００７３】
一方、物理ディスク領域上に次のチャンクがある場合には、解放部２２１は、物理ディスク領域上の連続したチャンクをチェックする。すなわち、解放部２２１は、物理ディスク領域上の次のチャンクはチェック済みか否かを判定し（ステップＳ８４）、チェック済みである場合には、ステップＳ７５に移動する。一方、チェック済みでない場合には、解放部２２１は、物理ディスク領域上の次のチャンクの先頭ＬＢ内のデータをチェックし（ステップＳ８５）、物理ディスク領域上の次のチャンクの先頭ＬＢのチェック済みを記憶する（ステップＳ８６）。そして、解放部２２１は、ＬＢ内のデータはオールゼロであるか否かを判定し（ステップＳ８７）、オールゼロである場合には、物理ディスク領域上の次のチャンクの先頭ＬＢ内のデータがオールゼロを記憶する（ステップＳ８８）。そして、解放部２２１は、ステップＳ７５に移動する。
【００７４】
このように、物理ディスク領域上の連続したチャンクをチェックすることによって、解放部２２１は、ディスクアクセスの回数を減らすことができ、割り当て解放処理を高速化することができる。
【００７５】
次に、図４、図６Ａ及び図６Ｂに示した割り当て解放処理を併用した割り当て解放処理のフローについて説明する。図７Ａ及び図７Ｂは、図４、図６Ａ及び図６Ｂに示した割り当て解放処理を併用した割り当て解放処理のフローを示すフローチャートである。
【００７６】
図７Ａに示すように、解放部２２１は、割り当て解放処理が指定されているＴＰＶの先頭チャンクを選択し（ステップＳ１０１）、選択したチャンクに対して物理割り当て済みか否かを判定する（ステップＳ１０２）。
【００７７】
そして、物理割り当て済みでない場合には、解放部２２１は、ステップＳ１２３に進む。一方、物理割り当て済みである場合には、解放部２２１は、チャンクの先頭ＬＢはチェック済みか否かを判定する（ステップＳ１０３）。そして、チャンクの先頭ＬＢがチェック済みでない場合には、チャンクの先頭ＬＢ内のデータをチェックする（ステップＳ１０４）。
【００７８】
そして、解放部２２１は、図７Ｂに示すように、ＬＢ内のデータがオールゼロであるか否かを判定する（ステップＳ１０５）。その結果、ＬＢ内のデータがオールゼロである場合には、解放部２２１は、連続カウンタの値を０にする（ステップＳ１０６）。
【００７９】
そして、解放部２２１は、チャンク内の全ＬＢでデータがオールゼロであるか否かのチェックが完了したか否かを判定し（ステップＳ１０７）、チェックが完了していないＬＢがある場合には、次のＬＢ内のデータをチェックする（ステップＳ１０８）。そして、解放部２２１は、ステップＳ１０５に戻る。
【００８０】
一方、チャンク内の全ＬＢでチェックが完了した場合には、チャンク内のデータがオールゼロであったので、解放部２２１は、チャンクの物理割り当てを解放する（ステップＳ１０９）。そして、解放部２２１は、物理ディスク領域上に次のチャンクがあるか否かを判定し（ステップＳ１１０）、次のチャンクがない場合には、ステップＳ１１６に移動する。
【００８１】
一方、物理ディスク領域上に次のチャンクがある場合には、解放部２２１は、物理ディスク領域上の連続したチャンクをチェックする。すなわち、解放部２２１は、物理ディスク領域上の次のチャンクはチェック済みか否かを判定し（ステップＳ１１１）、チェック済みである場合には、ステップＳ１１６に移動する。一方、チェック済みでない場合には、解放部２２１は、物理ディスク領域上の次のチャンクの先頭ＬＢ内のデータをチェックし（ステップＳ１１２）、物理ディスク領域上の次のチャンクの先頭ＬＢのチェック済みを記憶する（ステップＳ１１３）。そして、解放部２２１は、ＬＢ内のデータはオールゼロであるか否かを判定し（ステップＳ１１４）、オールゼロである場合には、物理ディスク領域上の次のチャンクの先頭ＬＢ内のデータがオールゼロを記憶する（ステップＳ１１５）。
【００８２】
そして、解放部２２１は、全チャンク分のチェックが完了したか否かを判定し（ステップＳ１１６）、全チャンク分のチェックが完了した場合には、処理を終了する。一方、チェックしていないチャンクがある場合には、解放部２２１は、論理領域上の次のチャンクを選択し（ステップＳ１１７）、ステップＳ１０２に戻る。
【００８３】
また、解放部２２１は、ＬＢ内のデータがオールゼロでない場合には、連続カウンタの値が所定値以上であるか否かを判定し（ステップＳ１１８）、所定値以上でない場合には、チャンクのチェック済みを記憶する（ステップＳ１１９）。そして、解放部２２１は、連続カウンタに１を加え（ステップＳ１２０）、ステップＳ１１６に進む。一方、連続カウンタの値が所定値以上である場合には、解放部２２１は、一定数のチャンク分スキップし（ステップＳ１２１）、スキップした分のチャンクのチェック済みを記憶する（ステップＳ１２２）。そして、解放部２２１は、連続カウンタの値を０にし（ステップＳ１２３）、ステップＳ１１６に進む。
【００８４】
このように、解放部２２１は、図４、図６Ａ及び図６Ｂに示した割り当て解放処理を併用した割り当て解放処理を行うことで、併用しない場合と比較して、より高速に割り当て解放処理を行うことができる。
【００８５】
次に、図５Ｂ、図６Ａ及び図６Ｂに示した割り当て解放処理を併用した割り当て解放処理のフローについて説明する。図８Ａ及び図８Ｂは、図５Ｂ、図６Ａ及び図６Ｂに示した割り当て解放処理を併用した割り当て解放処理のフローを示すフローチャートである。
【００８６】
図８Ａに示すように、解放部２２１は、ＯＳ及びファイルシステムを判断する（ステップＳ１６１）。また、解放部２２１は、割り当て解放処理が指定されているＴＰＶの先頭チャンクを選択する（ステップＳ１６２）。
【００８７】
そして、解放部２２１は、チャンクが物理割り当て済みであるか否かを判定し（ステップＳ１６３）、物理割り当て済みでない場合には、ステップＳ１８６に進む。一方、物理割り当て済みである場合には、ＯＳ及びファイルシステムの情報に基づいて、チャンクにメタデータが含まれるか否かを判定する（ステップＳ１６４）。
【００８８】
その結果、チャンクにメタデータが含まれる場合には、解放部２２１は、ステップＳ１８６に進む。一方、チャンクにメタデータが含まれない場合には、解放部２２１は、チャンクの先頭ＬＢはチェック済みか否かを判定し（ステップＳ１６５）、チェック済みでない場合には、チャンクの先頭ＬＢ内のデータをチェックする（ステップＳ１６６）。
【００８９】
そして、解放部２２１は、図８Ｂに示すように、ＬＢ内のデータがオールゼロであるか否かを判定する（ステップＳ１６７）。その結果、ＬＢ内のデータがオールゼロである場合には、解放部２２１は、連続カウンタの値を０にする（ステップＳ１６８）。
【００９０】
そして、解放部２２１は、チャンク内の全ＬＢでデータがオールゼロであるか否かのチェックが完了したか否かを判定し（ステップＳ１６９）、チェックが完了していないＬＢがある場合には、次のＬＢ内のデータをチェックする（ステップＳ１７０）。そして、解放部２２１は、ステップＳ１６７に戻る。
【００９１】
一方、チャンク内の全ＬＢでチェックが完了した場合には、チャンク内のデータがオールゼロであったので、解放部２２１は、チャンクの物理割り当てを解放する（ステップＳ１７１）。そして、解放部２２１は、物理ディスク領域上に次のチャンクがあるか否かを判定し（ステップＳ１７２）、次のチャンクがない場合には、ステップＳ１７９に移動する。
【００９２】
一方、物理ディスク領域上に次のチャンクがある場合には、解放部２２１は、物理ディスク領域上の連続したチャンクをチェックする。すなわち、解放部２２１は、物理ディスク領域上の次のチャンクにメタデータが含まれるか否かをチェックし（ステップＳ１７３）、メタデータが含まれる場合には、ステップＳ１７９に移動する。一方、メタデータが含まれない場合には、解放部２２１は、物理ディスク領域上の次のチャンクはチェック済みか否かを判定し（ステップＳ１７４）、チェック済みである場合には、ステップＳ１７９に移動する。一方、チェック済みでない場合には、解放部２２１は、物理ディスク領域上の次のチャンクの先頭ＬＢ内のデータをチェックし（ステップＳ１７５）、物理ディスク領域上の次のチャンクの先頭ＬＢのチェック済みを記憶する（ステップＳ１７６）。そして、解放部２２１は、ＬＢ内のデータはオールゼロであるか否かを判定し（ステップＳ１７７）、オールゼロである場合には、物理ディスク領域上の次のチャンクの先頭ＬＢ内のデータがオールゼロを記憶する（ステップＳ１７８）。
【００９３】
そして、解放部２２１は、全チャンク分のチェックが完了したか否かを判定し（ステップＳ１７９）、全チャンク分のチェックが完了した場合には、処理を終了する。一方、チェックしていないチャンクがある場合には、解放部２２１は、論理領域上の次のチャンクを選択し（ステップＳ１８０）、ステップＳ１６３に戻る。
【００９４】
また、解放部２２１は、ＬＢ内のデータがオールゼロでない場合には、連続カウンタの値が所定値以上であるか否かを判定し（ステップＳ１８１）、所定値以上でない場合には、チャンクのチェック済みを記憶する（ステップＳ１８２）。そして、解放部２２１は、連続カウンタに１を加え（ステップＳ１８３）、ステップＳ１７９に進む。一方、連続カウンタの値が所定値以上である場合には、解放部２２１は、ＯＳ及びファイルシステムによって決まる数のチャンク分スキップし（ステップＳ１８４）、スキップした分のチャンクのチェック済みを記憶する（ステップＳ１８５）。そして、解放部２２１は、連続カウンタの値を０にし（ステップＳ１８６）、ステップＳ１７９に進む。
【００９５】
このように、解放部２２１は、図５Ｂ、図６Ａ及び図６Ｂに示した割り当て解放処理を併用した割り当て解放処理を行うことで、併用しない場合と比較して、より高速に割り当て解放処理を行うことができる。
【００９６】
上述してきたように、実施例では、解放部２２１が、オールゼロでないチャンクが所定数連続すると一定数のチャンクのチェックをスキップするので、チャンクのチェックを減らすことができ、割り当て解放処理を高速化することができる。
【００９７】
また、実施例では、解放部２２１は、ＯＳ及びファイルシステムに基づいてメタデータの位置を特定し、メタデータを含むチャンクのチェックを行わないので、チャンクのチェックを減らすことができ、割り当て解放処理を高速化することができる。
【００９８】
また、実施例では、解放部２２１は、物理ディスク領域上で連続したチャンクをチェックするので、ディスクアクセスの回数を減らすことができ、割り当て解放処理を高速化することができる。
【００９９】
なお、実施例では、ＯＳ及びファイルシステムに基づいてメタデータの位置を特定する場合について説明したが、本発明はこれに限定されるものではなく、ＯＳ又はファイルシステムに基づいてメタデータの位置を特定する場合にも同様に適用することができる。
【０１００】
また、実施例では、磁気ディスクを記憶媒体として用いる場合について説明したが、本発明はこれに限定されるものではなく、例えば、フラッシュメモリなど他の記憶媒体を用いる場合にも同様に適用することができる。
【０１０１】
また、実施例では、ＬＢ内のデータがオールゼロであるか否かをチェックする場合について説明したが、本発明はこれに限定されるものではなく、ＬＢ内のデータが未使用であることを示す他のデータパターンであるか否かをチェックする場合にも同様に適用することができる。
【０１０２】
また、実施例では、複数の割り当て解放処理について説明したが、ストレージシステム１００の管理者は、解放部２２１がいずれの割り当て解放処理を行うかを指定することができる。また、ストレージシステム１００の管理者は、割り当て解放処理を自動で実行するタイミングを指定することができる。
【符号の説明】
【０１０３】
１００    ストレージシステム
１１０    ＣＭ
１１１    ＣＡ
１１２    ＩＯＣ
１１３    ＥＸＰ
１１４    ＣＰＵ
１１５    メモリ
１１６    キャッシュ
１２０    ＤＥ
２００    ファームウェア
２１０    排他制御部
２２０    キャッシュ制御部
２２１    解放部
２３０    ディスク制御部
２４０    コピー制御部
【図１】
2014194664.tif 000003
【図２】
2014194664.tif 000004
【図３】
2014194664.tif 000005
【図４】
2014194664.tif 000006
【図５Ａ】
2014194664.tif 000007
【図５Ｂ】
2014194664.tif 000008
【図６Ａ】
2014194664.tif 000009
【図６Ｂ】
2014194664.tif 000010
【図７Ａ】
2014194664.tif 000011
【図７Ｂ】
2014194664.tif 000012
【図８Ａ】
2014194664.tif 000013
【図８Ｂ】
2014194664.tif 000014