(57)【特許請求の範囲】
【請求項１】
上位装置に対して仮想論理ボリュームを提供する仮想ストレージ装置であって、
前記仮想論理ボリュームを構成する管理単位領域毎に、管理単位領域に対する物理領域の割り当て状態を示す割当情報と、管理単位領域のデータに対する巡回冗長検査の結果を示す管理情報とに基づいて、管理単位領域が解放可能領域であるかを判定する解放可能領域判定部と、
前記解放可能領域判定部により解放可能領域として判定された前記管理単位領域に対して、当該管理対象領域内の全データがゼロデータであるオールゼロ領域であるかを判断する判断部と、
前記判断部によりオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する解放処理部とをそなえることを特徴とする、
仮想ストレージ装置。
【請求項２】
前記解放可能領域判定部により解放可能領域として判定された前記管理単位領域についての情報を予測情報として出力する、予測情報出力部を備えることを特徴とする、請求項１記載の仮想ストレージ装置。
【請求項３】
前記解放可能領域判定部は、前記管理情報が前記管理単位領域のデータに対する巡回冗長検査の結果が０であることを示す場合に、当該管理単位領域を解放可能領域として判定することを特徴とする、請求項１又は２記載の仮想ストレージ装置。
【請求項４】
前記上位装置から受信するライトデータに対して巡回冗長検査を行なう検査部と、
前記検査部による巡回冗長検査の結果に基づいて、前記ライトデータに対応する管理単位領域に関して、前記管理情報を更新する更新処理部とをそなえることを特徴とする、請求項１〜３のいずれか１項に記載の仮想ストレージ装置。
【請求項５】
仮想論理ボリュームを構成する管理単位領域毎に、管理単位領域に対する物理領域の割り当て状態を示す割当情報と、管理単位領域のデータに対する巡回冗長検査の結果を示す管理情報とに基づいて、管理単位領域が解放可能領域であるかを判定する解放可能領域判定部と、
前記解放可能領域判定部により解放可能領域として判定された前記管理単位領域に対して、当該管理対象領域内の全データがゼロデータであるオールゼロ領域であるかを判断する判断部と、
前記判断部によりオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する解放処理部とをそなえることを特徴とする、制御装置。
【請求項６】
仮想論理ボリュームを構成する管理単位領域毎に、管理単位領域に対する物理領域の割り当て状態を示す割当情報と、管理単位領域のデータに対する巡回冗長検査の結果を示す管理情報とに基づいて、管理単位領域が解放可能領域であるかを判定し、
解放可能領域として判定された前記管理単位領域に対して、当該管理対象領域内の全データがゼロデータであるオールゼロ領域であるかを判断し、
オールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する、
処理をコンピュータに実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、仮想ストレージ装置，制御装置及び制御プログラムに関する。
【背景技術】
【０００２】
一般に、ストレージ装置の信頼性を高めるために、ＲＡＩＤ（Redundant Array of Independent Disks）技術が普及している。特に、近年では、記憶領域や管理費用を削減するために、ＲＡＩＤ技術にシンプロビジョニング機能を加えたストレージ装置が採用されている。
シンプロビジョニング機能とは、ストレージシステムにおいて、物理ボリューム容量以上の容量をサーバに見せる技術であって、サーバ等の上位装置から見えるボリューム容量を仮想化する機能である。
【０００３】
一般に、ストレージの容量を増設しようとした場合に、ストレージ装置に新規に作成したＬＵＮ（Logical Unit Number）を上位装置側で認識させようとすると、上位装置側ではＯＳ（Operating System）の再起動、すなわちサービスの停止が必要となる。しかし、シンプロビジョニング機能を用いた場合、初めからＬＵＮのサイズを実際より大きくＯＳに見せかけることが可能である。これにより、ＬＵＮの使用率が上がってきた時点でストレージ装置内に物理ディスクを無停止で増設することで、ＯＳ側に影響を与えることなく物理ディスク容量の増設が可能である。このように、シンプロビジョニング機能によれば、拡張性に優れるという利点がある。
【０００４】
また、シンプロビジョニング機能を利用しない旧来のＬＵＮでは、ＬＵＮを作成する場合に、ＬＵＮサイズに必要な物理ディスクを導入時にあらかじめ準備しておく必要があった。しかし、シンプロビジョニング機能では、導入時は必要最小限の物理ディスクのみで運用し、ＬＵＮの使用率が上がってきたところで物理ディスクを増設するといった対応を取ることで、低コストでの運用が可能となる。又、物理ディスクの使用効率を向上させることもできる。
【０００５】
このように、シンプロビジョニング機能は、例えば、クラウドストレージの実現において課題とされる、予測不能なストレージ拡張要求（拡張性）に対して、サービスを停止せずに安価に対応できる機能として活用されている。
以下に、シンプロビジョニング機能の動作を説明する。以下、シンプロビジョニング機能により仮想化したＬＵＮを、ＴＰＶ（シンプロビジョニングボリューム）と表現する。
【０００６】
ＴＰＶに対して、上位装置からＩ／Ｏ（Input/Output）要求が来た場合のストレージ装置の動作は次のようになる。
先ず、上位装置からリード要求が来た場合に、物理ディスク領域が割り当てられていない領域に対するＩ／Ｏであれば、ストレージ装置は、上位装置に対して、未使用部分を示すALL 0データを応答する。一方、物理ディスク領域が割り当てられている領域に対するＩ／Ｏであれば、ストレージ装置は、その物理ディスク領域上のデータを読み込み、上位装置に転送する。
【０００７】
次に、ＴＰＶに対し、上位装置からデータのライトが行なわれた場合には、ストレージ装置は、上位装置からライトされた量に応じて必要な物理ディスク領域をＴＰＶに一定の管理単位ごとに割り当て、その後、物理ディスクにデータを書き込む。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−１５９２４１号公報
【特許文献２】特開２０１１−１３８００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、ストレージシステムにおいては、上位装置のＯＳから初期化を行なう際やバックアップデータのリストアを行なう際に、物理ディスク領域に未使用部分を示すデータとしてALL0データが書き込まれることがある。
このように、ＴＰＶに対して上位装置からALL0データが書き込まれた場合には、このALL0が書き込まれた領域に実際にデータが書き込まれていないにもかかわらず、物理ディスク領域が割り当てられてしまう。すなわち、ディス領域を効率的に使用することができないという課題がある。又、これにより、物理ディスクの使用効率を向上させ、低コストでの運用を実現するというシンプロビジョニング機能の効果を有効に発揮できない。
【００１０】
本件の目的の一つは、ストレージ領域を効率的に使用できるようにすることである。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
【課題を解決するための手段】
【００１１】
このため、この仮想ストレージ装置は、上位装置に対して仮想論理ボリュームを提供する仮想ストレージ装置であって、前記仮想論理ボリュームを構成する管理単位領域毎に、管理単位領域に対する物理領域の割り当て状態を示す割当情報と、管理単位領域のデータに対する巡回冗長検査の結果を示す管理情報とに基づいて、管理単位領域が解放可能領域であるかを判定する解放可能領域判定部と、前記解放可能領域判定部により解放可能領域として判定された前記管理単位領域に対して、当該管理対象領域内の全データがゼロデータであるオールゼロ領域であるかを判断する判断部と、前記判断部によりオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する解放処理部とをそなえる。
【００１２】
また、この制御装置は、仮想論理ボリュームを構成する管理単位領域毎に、管理単位領域に対する物理領域の割り当て状態を示す割当情報と、管理単位領域のデータに対する巡回冗長検査の結果を示す管理情報とに基づいて、管理単位領域が解放可能領域であるかを判定する解放可能領域判定部と、前記解放可能領域判定部により解放可能領域として判定された前記管理単位領域に対して、当該管理対象領域内の全データがゼロデータであるオールゼロ領域であるかを判断する判断部と、前記判断部によりオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する解放処理部とをそなえる。
【００１３】
さらに、この制御プログラムは、仮想論理ボリュームを構成する管理単位領域毎に、管理単位領域に対する物理領域の割り当て状態を示す割当情報と、管理単位領域のデータに対する巡回冗長検査の結果を示す管理情報とに基づいて、管理単位領域が解放可能領域であるかを判定し、解放可能領域として判定された前記管理単位領域に対して、当該管理対象領域内の全データがゼロデータであるオールゼロ領域であるかを判断し、オールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する、処理をコンピュータに実行させる。
【発明の効果】
【００１４】
開示の技術によれば、オールゼロ領域の解放処理の高速化することができる。
【図面の簡単な説明】
【００１５】
【図１】実施形態の一例としての仮想ストレージ装置の機能構成を示す図である。
【図２】実施形態の一例としての仮想ストレージ装置のハードウェア構成を模式的に示す図である。
【図３】（ａ），（ｂ）は実施形態の一例としての仮想ストレージ装置におけるチャンク管理テーブルを説明する図である。
【図４】実施形態の一例としての本仮想ストレージ装置におけるデータライト時の処理を説明するためのフローチャートである。
【図５】実施形態の一例としての仮想ストレージ装置における解放可能領域判定部による解放可能領域の判定処理を説明するためのフローチャートである。
【図６】実施形態の一例としての仮想ストレージ装置における、割当解放処理指示の受信に伴う割当解放処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本仮想ストレージ装置、制御装置及び制御プログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１７】
図１は実施形態の一例としての仮想ストレージ装置の機能構成を示す図、図２はそのハードウェア構成を模式的に示す図である。
本仮想ストレージ装置１は、図２に示すディスクエキスパンダ（ＤＥ：Disk Expander）３０−１〜３０−４に格納された図示しない記憶装置（実ストレージ環境）を仮想化して、仮想ストレージ環境を形成する。そして仮想ストレージ装置１は、仮想ボリュームを上位装置であるホストコンピュータ２に提供する。
【００１８】
本仮想ストレージ装置１は、図２に示すように、１以上（図１に示す例では１つ）のホスト装置２に対して通信可能に接続されている。ホスト装置２と仮想ストレージ装置１とは、例えばiSCSIにより接続されている。
ホストコンピュータ２は、例えば、サーバ機能をそなえた情報処理装置であり、仮想ストレージ装置１との間において、SCSIコマンドやレスポンス等の各種データをTCP／IPを用いて送受信する。このホスト装置２は、ストレージ装置１０に対してリード／ライト等のディスクアクセスコマンドを送信することにより、仮想ストレージ装置１が提供する仮想ボリュームにデータの書き込みや読み出しを行なう。
【００１９】
そして、本仮想ストレージ装置１は、ホストコンピュータ２から仮想ボリュームに対して行なわれる入出力要求（例えば、リードコマンドやライトコマンド）に応じて、この仮想ボリュームに対応する実ストレージに対して、データの読み出しや書き込み等の処理を行なう。なお、ホストコンピュータ２からの入出力要求のことをＩ／Ｏコマンドという場合がある。
【００２０】
本仮想ストレージ装置１は、図２に示すように、複数（本実施形態では２つ）のＣＭ（Control Module）１００ａ，１００ｂ及び複数のデバイスエンクロージャ３０−１，３０−２，３０−３，３０−４をそなえる。
デバイスエンクロージャ３０−１〜３０−４は、それぞれ１以上の記憶装置（物理ディスク；図示省略）を搭載可能であり、これらの記憶装置の記憶領域（実ボリューム）を、本仮想ストレージ装置１に対して提供する。例えば、各デバイスエンクロージャ３０−１〜３０−４は、それぞれ１０段のスロットをそなえ、これらのスロットに、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の記憶装置を挿入することにより、実ボリューム容量を随時変更することができる。本仮想ストレージ装置１においては、複数の記憶装置をアレイ状に配列することにより、ＲＡＩＤが形成されている。
【００２１】
なお、記憶装置としては、種々の記憶装置を用いることができるが、本実施形態においては、これらの記憶装置として、ＳＡＳ（Serial Attached SCSI）の規格に基づいて接続されたＳＡＳディスクを用いた例について説明する。
各デバイスエンクロージャ３０−１〜３０−４は、それぞれＣＭ１００ａのエキスパンダ（ＥＸＰ）１０２，１０２とＣＭ１００ｂのエキスパンダ１０２，１０２と接続されている。そして、これらの各デバイスエンクロージャ３０−１〜３０−４には、ＣＭ１００ａ，１００ｂのいずれからもアクセスして、データの書き込みや読み出しを行なうことができる。すなわち、これらの各デバイスエンクロージャ３０−１〜３０−４の記憶装置に対して、ＣＭ１００ａ，１００ｂのそれぞれを接続することにより、記憶装置へのアクセス経路が二重化されている。
【００２２】
なお、以下、便宜上、本仮想ストレージ装置１において、Ｉ／Ｏコマンドの送信元であるホストコンピュータ側を上流側といい、ディスクアクセスコマンドに基づいて作成されるディスクアクセスコマンドの送信先側を下流側という。
デバイスエンクロージャ３０−１〜１０−４は、上述したＣＭ１００ａ，１００ｂの下流側に配設され、これらのＣＭ１００ａ，１００ｂのエキスパンダ１０２，１０２にＳＡＳワイドリンク等のデータパスを介して接続されている。
【００２３】
デバイスエンクロージャ３０−１〜１０−４は、互いにほぼ同様の構成を有している。以下、デバイスエンクロージャを示す符号としては、複数のデバイスエンクロージャのうち１つを特定する必要があるときには符号３０−１〜３０−４を用いるが、任意のデバイスエンクロージャを指すときには符号３０を用いる。
ＣＭ１００ａ，１００ｂは、仮想ストレージ装置１内の動作を制御するコントローラ（制御装置）であり、ホストコンピュータから送信されるＩ／Ｏコマンドに従って、デバイスエンクロージャ３０の記憶装置へのアクセス制御等、各種制御を行なう。又、ＣＭ１００ａ，１００ｂは互いにほぼ同様の構成を有している。以下、ＣＭを示す符号としては、複数のＣＭのうち１つを特定する必要があるときには符号１００ａ，１００ｂを用いるが、任意のＣＭを指すときには符号１００を用いる。
【００２４】
また、図中、同一の符号は同一もしくは略同一の部分を示しているので、その詳細な説明は省略する。
ＣＭ１００ａ，１００ｂはＣＡ１０１を介して、それぞれネットワーク５０に接続される。そして、これらのＣＭ１００ａ，１００ｂは、ホストコンピュータ２から送信されるリード／ライト等のコマンドを受信し、エキスパンダ３０等を介して記憶装置の制御を行なう。又、ＣＭ１００ａ，１００ｂは、ＰＣＩｅインタフェース１０４を介して相互に接続されている。
【００２５】
ＣＭ１００は、図２に示すように、複数（図２に示す例では２つ）のＣＡ（Channel Adapter）１０１，１０１と、複数（図２に示す例では２つ）のエキスパンダ（ＥＸＰ）１０２，１０２とをそなえるとともに、ＣＰＵ（Central Processing Unit）１１０，ＲＯＭ１０３，ＰＣＩｅインタフェース１０４及びＲＡＭ１０５をそなえる。
ＣＡ１０１は、ホストコンピュータ２等と通信可能に接続するインタフェースコントローラ（通信アダプタ）である。ＣＭ１００は、このＣＡ１０１によりホストコンピュータ２等と通信ケーブル５０を介して接続され、Ｉ／Ｏコマンドの受信やデータの送受信等を行なう。図２に示す例においては、ＣＭ１００ａ，１００ｂのそれぞれに２つのＣＡ１０１，１０１がそなえられている。
【００２６】
ＣＡ１０１は、ホストコンピュータ２等から送信されたデータを受信したり、ＣＭ１００から出力するデータをホストコンピュータ２等に送信する。すなわち、ＣＡ１０１は、ホストコンピュータ２等の外部装置との間でのデータの入出力（Ｉ／Ｏ）を制御する。
また、ＣＡ１０１は、ＣＲＣ（Cyclic Redundancy Check：巡回冗長検査）機能をそなえる。ＣＡ１０１は、ホストコンピュータ２から１ＬＢＡ（Logical Block Address）単位で受信するライトデータに対してＣＲＣコードを算出（生成）し、その生成したＣＲＣコードをデータに付加する。すなわち、ＣＡ１０１は、ホストコンピュータから受信するライトデータに対して巡回冗長検査を行なう検査部として機能する。
【００２７】
なお、このＣＡ１０１によるＣＲＣコードの生成方法は既知の種々の手法で実現することができ、その詳細な説明は省略する。又、ＣＲＣとしては、例えば、ＣＲＣ−１６やＣＲＣ−３２等、既知の種々の技術を用いることができ、使用する多項式等に限定されるものではない。
ＰＣＩｅインタフェース１０４は、他のＣＭ１００との通信を実現するインタフェースであり、PCI Expressの規格に則って他のＣＭ１００との間でデータ等の送受信を実現する。
【００２８】
エキスパンダ１０２は、ドライブエンクロージャ３０や記憶装置等と通信可能に接続するためのインタフェースであり、デバイスアダプタ等をそなえる。エキスパンダ１０２には、デバイスエンクロージャ３０の記憶装置が接続され、ホストコンピュータから受信したＩ／Ｏコマンドに基づき、これらの記憶装置に対するアクセス制御を行なう。
ＣＭ１００は、このエキスパンダ１０２を介して、記憶装置に対するデータの書き込みや読み出しを行なう。又、図２に示す例においては、ＣＭ１００ａ，１００ｂのそれぞれに２つのエキスパンダ１０２，１０２がそなえられている。そして、ＣＭ１００ａ，１００ｂのそれぞれにおいて、一方のエキスパンダ１０２にはデバイスエンクロージャ３０−１，３０−２が、又、他方のエキスパンダ１０２にはデバイスエンクロージャ３０−３，３０−４がそれぞれ接続されている。
【００２９】
これにより、各デバイスエンクロージャ３０の記憶装置には、ＣＭ１００ａ，１００ｂのいずれからもデータの書き込みや読み出しを行なうことができる。
ＲＯＭ１０３は、ＣＰＵ１１０が実行するプログラムや種々のデータを格納する記憶装置である。
ＲＡＭ１０５は、種々のデータやプログラムを一時的に格納する記憶装置であり、メモリ領域（Memory）１０６及びキャッシュ領域（Cache）１０７をそなえる。キャッシュ領域１０７は、ホストコンピュータ２から受信したデータや、ホストコンピュータ２に対して送信するデータを一時的に格納する。メモリ領域１０６には、ＣＰＵ１１０がプログラムを実行する際に、データやプログラムを一時的に格納・展開して用いる。又、このメモリ領域１０６には、後述するボリューム制御部１０によって用いられるチャンク管理テーブル１７１（チャンク管理テーブル群１７）が格納される（図１参照）。
【００３０】
ＣＰＵ１１０は、種々の制御や演算を行なう処理装置であり、ＲＯＭ１０３に格納されたプログラムを実行することにより、種々の機能を実現する。例えば、ＣＰＵ１１０は、ＲＡＩＤの実現やホストコンピュータ２からのホストＩ／Ｏに応じた記憶装置へのアクセス制御等、既知のディスクＲＡＩＤコントローラとしての種々の機能を実現する。更に、ＣＰＵ１１０は、図１に示すように、排他制御部２０，キャッシュ制御部２２，コピー制御部２３，ディスク制御部２４及びボリューム制御部１０として機能する。
【００３１】
排他制御部２０は、ＣＡ１０１を介して複数のホストコンピュータ２が接続されている場合において、これらの複数のホストコンピュータ２からデバイスエンクロージャ３０の記憶装置に対するライト処理についての排他制御を行なう。
ディスク制御部２４は、デバイスエンクロージャ３０の記憶装置に対するデータの書き込み及び読み出しを制御する。すなわち、キャッシュ領域１０７のデータを記憶装置に書き込んだり、又、記憶装置から読み出したデータをキャッシュ領域１０７に格納する。
【００３２】
コピー制御部２３は、論理ボリューム間でのデータのコピーを制御する。コピー制御部２３は、ボリューム間でのコピー処理を、所定サイズのブロック単位（例えば、５１２〜２０４８バイト）で行なう。
キャッシュ制御部２２は、ＲＡＭ１０５のキャッシュ領域１０７へのデータの書き込み及び読み出しを制御する。すなわち、キャッシュ制御部２２は、記憶装置から読み出したデータやホストコンピュータ２から受信したデータをキャッシュ領域１０７に書き込んだり、又、キャッシュ領域１０７に格納されたデータを読み出す。
【００３３】
ボリューム制御部１０は、ホストコンピュータ２に対してシンプロビジョニング型の仮想ボリュームを提供する。
ボリューム制御部１０は、本仮想ストレージ装置１にそなえられる記憶装置（物理ディスク）をストレージプールとして管理する。すなわち、物理ディスクの記憶領域（物理領域）は共有のディスクプールとして管理され、仮想ボリュームに書き込まれたデータ量に応じて割り当てられる。これにより、使用されない物理ディスクの無駄をなくし、効率的な運用が可能となる。
【００３４】
ボリューム制御部１０は、ホストコンピュータ２から仮想ボリュームに対する新規データの書き込み要求を検出すると、この新規データを仮想ボリューム内の仮想領域に対応付ける。仮想ボリュームは、ホストコンピュータ２からのアクセス対象となる仮想的な記憶部であり、シンプロビジョニング型のボリュームである。以下、シンプロビジョニング機能により仮想化した論理ボリュームをシンプロビジョニングボリューム（ＴＰＶ）という場合がある。なお、仮想ボリュームは、ホストコンピュータ２に対して１つであっても良いし、２つ以上であっても良い。
【００３５】
ボリューム制御部１０は、ホストコンピュータ２に対しては、そのホストコンピュータ２からの要求通りのサイズで論理（仮想）ボリュームを提供する。一方、ボリューム制御部１０は、仮想ボリュームにアサインした容量を、初期はストレージ内部でアロケートせずに、ホストコンピュータ２からの書き込み要求に応じて、プールボリュームから「チャンク」と呼ばれる所定の論理ブロックサイズの固まり単位で、仮想ボリュームへアロケートする。一般にチャンクのサイズ（論理ブロックサイズ）は数百KBから数百MBの間で設定される。本実施形態においては、チャンクのサイズは、例えば、３２Mbyteである。
【００３６】
シンプロビジョニング機能においては、上述のごとく、ＬＵＮをある論理ブロックサイズ（チャンク）ごとに分割し、各チャンクに物理領域を割り当てて管理している。シンプロビジョニング機能によりＬＵＮを作成した直後（初期状態）は、どのチャンクにも物理領域は割り当てられていない。ホストコンピュータ２からライト要求が来たときは、そのライト範囲に含まれるチャンクに対して、ストレージプールのプール領域から物理領域を割り当て、その物理領域にデータを書き込む。
【００３７】
これにより、ホストコンピュータ２が書き込みを行なった容量のみ記憶装置内部の容量を消費することになり、無駄なストレージ容量を削減することが可能となる。
なお、ボリューム制御部１０によるホストコンピュータ２に対するシンプロビジョニング機能を用いた仮想ボリュームの提供手法は、既知の種々の手法で実現することができ、その説明は省略する。
【００３８】
ボリューム管理部１０は、図１に示すように、解放可能領域判定部１１，判断部１２，解放処理部１３，チャンクテーブル管理部１４及び予測情報出力部１５としての機能をそなえる。
チャンクテーブル管理部１４は、チャンク管理テーブル群１７を管理する。すなわち、ボリューム制御部１０は、チャンクに対する物理領域の割り当てをチャンク管理テーブル群１７を用いて管理する。
【００３９】
図３（ａ），（ｂ）は実施形態の一例としての仮想ストレージ装置１におけるチャンク管理テーブル群１７を説明する図であり、（ａ）はＴＰＶを模式的に例示する図、（ｂ）は（ａ）のＴＰＶに対応するチャンク管理テーブルを例示する図である。
チャンク管理テーブル群１７は複数のチャンク管理テーブル１７１の集合体である。チャンク管理テーブル１７１は、ＴＰＶを構成するチャンクの状態を示す情報であり、チャンクを識別する情報（ａ１〜ａ１２）に対して、割当済みフラグ（割当済）及びＣＲＣゼロフラグ（CRC＝０）を対応付けている。
【００４０】
図３（ａ）に示す例においては、符号ａ１〜ａ１２で示される１２個のチャンクをそなえたＴＰＶを示している。この図３（ａ）に示すＴＰＶは、チャンクａ２，ａ３，ａ５〜ａ７，ａ９及びａ１１には物理領域が割り当てられており（物理領域割り当て済み）、チャンクａ１，ａ４，ａ８，ａ１０及びａ１２には物理領域が割り当てられていない（物理領域未割り当て）。
【００４１】
図３（ｂ）には、図３（ａ）のチャンクａ１〜ａ１２にそれぞれ対応する、１２個のチャンク管理テーブル１７１をそなえるチャンク管理テーブル群１７を示す。
割当済みフラグは、そのチャンクに対して物理領域が割り当てられているか否かを示す。例えば、そのチャンクの少なくとも一部に対して物理領域が割り当てられている場合には“１”が、又、そのチャンクに対して物理領域が割り当てられていない場合には“０”が設定される。
【００４２】
図３（ｂ）に例示する各チャンク管理テーブル１７１においては、割当済フラグとして、チャンクａ２，ａ３，ａ５〜ａ７，ａ９及びａ１１に対して“１”が設定されており、又、チャンクａ１，ａ４，ａ８，ａ１０及びａ１２に対しては“０”が設定されている。
このように、割当済みフラグは、仮想論理ボリュームを構成するチャンク（管理単位領域）毎に、このチャンクに対する物理領域の割り当て状態を示す割当情報として機能する。
【００４３】
ＣＲＣゼロフラグは、そのチャンクに格納されているデータのＣＲＣが０であるか否かを表す。すなわち、そのチャンクに格納されている、ホストコンピュータ２から受信した１ＬＢＡ単位の各データのＣＲＣの値が全て０の場合に、ＣＲＣゼロフラグとして“１”が設定される。具体的には、そのチャンクに格納されている、ホストコンピュータ２から受信した１ＬＢＡ単位の各データのＣＲＣの値の論理和（ＯＲ）の値が０の場合に“１”が設定される。以下、このＣＲＣゼロフラグに“１”を設定することをフラグをオン（ＯＮ）にするという場合がある。
【００４４】
一方、そのチャンクに格納されている、ホストコンピュータ２から受信した１ＬＢＡ単位の各データの少なくともいずれか１つのＣＲＣの値が０でない場合に、ＣＲＣゼロフラグとして“０”が設定される。具体的には、そのチャンクに格納されている、ホストコンピュータ２から受信した１ＬＢＡ単位の各データのＣＲＣの値の論理和（ＯＲ）の値が１の場合に“０”が設定される。以下、このＣＲＣゼロフラグに“０”を設定することを、フラグをオフ（ＯＦＦ）にする、もしくはフラグを落とすという場合がある。
【００４５】
上述したチャンクに格納されている１ＬＢＡ単位の各データのＣＲＣの値は、前述したＣＡ１０１によって当該データに付加される。
図３（ｂ）に例示する各チャンク管理テーブル１７１においては、ＣＲＣゼロフラグとして、チャンクａ３，ａ６，ａ７及びａ１１に対して“１”が設定されており、又、チャンクａ２，ａ５及びａ９に対して“０”が設定されている。
【００４６】
このように、ＣＲＣゼロフラグは、仮想論理ボリュームを構成するチャンク（管理単位領域）毎に、このチャンクが解放候補領域であるか否かを表す解放候補領域情報として機能する。
そして、チャンク管理テーブル１７１（チャンク管理テーブル群１７）は、仮想論理ボリュームを構成するチャンク毎に、割当済フラグと、ＣＲＣゼロフラグとを関連付ける管理情報として機能する。
【００４７】
また、チャンクテーブル管理部（更新処理部）１４は、ＣＡ１０１により受信したライトデータのＣＲＣの結果に基づいて、ライトデータに対応するチャンクのチャンク管理テーブル１７１を更新する。
例えば、物理ディスク領域の割り当てが行なわれていないＴＰＶに対して、新規にホストコンピュータ２からデータ（１ＬＢＡのデータ）の書き込みが行なわれた場合には、チャンクテーブル管理部１４は以下のようにしてチャンク管理テーブル群１７を更新する。
【００４８】
すなわち、チャンクテーブル管理部１４は、当該ＴＰＶにおける、当該書き込みが行なわれたデータが含まれるチャンクに対応するチャンク管理テーブル１７１に対して、割当済みフラグをＯＮに設定する。又、チャンクテーブル管理部１４は、書き込まれたデータのＣＲＣの値をチェックし、ＣＲＣ＝０の場合に、ＣＲＣゼロフラグをＯＮに設定する。
一方、既に物理ディスク領域の割り当てが行なわれているＴＰＶに対してホストコンピュータ２からデータ（１ＬＢＡのデータ）の書き込みが行なわれた場合には、チャンクテーブル管理部１４は、以下のようにしてチャンク管理テーブル群１７を更新する。
【００４９】
すなわち、チャンクテーブル管理部１４は、当該ＴＰＶにおける、当該書き込みが行なわれたデータが含まれるチャンクに対応するチャンク管理テーブル１７１に対して、割当済みフラグをＯＮのままとする。
また、チャンクテーブル管理部１４は、データが書き込まれた領域（チャンク）のＣＲＣゼロフラグの状態と、書き込まれたデータのＣＲＣの値とに基づいて、以下に示すようにチャンク管理テーブル群１７を更新する。
【００５０】
（１）書き込み先のチャンクのＣＲＣゼロフラグが“１”の場合
書き込み先のチャンクのＣＲＣゼロフラグが“１”の場合、すなわち、割当済みの領域のデータがＣＲＣ=０データの場合において、書き込まれたデータのＣＲＣが０の場合には、チャンクテーブル管理部１４は、そのチャンクに対応するチャンク管理テーブル１７１のＣＲＣゼロフラグは変更しない。つまり、ＣＲＣゼロフラグを“１”のまま変更しない。
【００５１】
一方、書き込み先のチャンクのＣＲＣゼロフラグが“１”の場合、すなわち、割当済みの領域のデータがＣＲＣ=０データの場合において、書き込まれたデータのＣＲＣが０でない場合には、チャンクテーブル管理部１４は、そのチャンクに対応するチャンク管理テーブル１７１のＣＲＣゼロフラグのフラグを落とす。つまり、ＣＲＣゼロフラグを“０”に設定する。
【００５２】
（２）書き込み先のチャンクのＣＲＣゼロフラグが“０”の場合
書き込み先のチャンクのＣＲＣゼロフラグが“０”の場合、すなわち、割当済みの領域のデータがＣＲＣ≠０データの場合には、チャンクテーブル管理部１４は、そのチャンクに対応するチャンク管理テーブル１７１において、書き込まれたデータのＣＲＣが０の場合も０でない場合も、ＣＲＣゼロフラグを落とす。つまり、ＣＲＣゼロフラグを“０”に設定する。本手法においては、チャンク単位でチェックを行なうので、チャンク内のどのＬＢＡにアクセスがあったかまでは管理できず、当該チャンクにおけるどのＬＢＡがＣＲＣ≠０であるかが不明であるからである。
【００５３】
また、チャンクテーブル管理部１４によるチャンク管理テーブル１７１の更新手法の詳細は後述する。
解放可能領域判定部１１は、チャンク管理テーブル１７１（チャンク管理テーブル群１７）を参照して、解放可能領域を判定する。
すなわち、解放可能領域判定部１１は、チャンク管理テーブル１７１において、割当済みフラグ及びＣＲＣゼロフラグにそれぞれ“１”が設定されているチャンクが、当該領域に格納されている全データが０（ALL0）であるALL0領域（０データ領域）の可能性が高い領域であると判定する。以下、このALL0領域（０データ領域）の可能性が高い領域を解放可能領域という。
【００５４】
０のデータのＣＲＣは０となる。従って、ＣＲＣが０となる場合、当該データは０である可能性がある。又、ALL0領域のデータのＣＲＣは０である。すなわち、ＣＲＣゼロフラグに“１”が設定されているチャンクには、ALL0が格納されている可能性が高い。ただし、「ALL0データのＣＲＣは０になる」と言うことは可能であるが、「ＣＲＣが０となるデータは必ずALL0である」とは言えない。
【００５５】
また、解放可能領域判定部１１は、解放可能領域カウンタを用いて解放可能領域と判定されるチャンクの数を管理する。解放可能領域カウンタは、例えば、ＲＡＭ１０５のメモリ領域１０６に形成される。解放可能領域判定部１１は、管理テーブル群１７において、割当済フラグ及びＣＲＣゼロフラグにそれぞれ“１”が設定されているチャンクを計数して解放可能領域カウンタに格納する。
【００５６】
さらに、ボリューム制御部１０は、ストレージプールの容量監視機能をそなえる。この容量監視機能は、ストレージプールにおいて、全体のストレージ容量に対する割り当て済みの物理ボリュームの容量の割合が、予め設定された閾値に達した状態を検出する。
判断部１２は、解放可能領域判定部１１により解放可能領域として判定されたチャンクに対して、そのチャンクの全データがゼロデータ（ALL0）であるオールゼロ領域であるかを判断する。
【００５７】
具体的には、判断部１２は、解放可能領域と判断されたチャンク内の全データに対して、順次、０データであるか否か、すなわち格納されているデータが０であるか否かを判断する。なお、チャンク内の各データが０データであるか否かの判断手法は、既知の種々の手法を用いて実現することができ、その詳細な説明は省略する。
解放処理部１３は、判断部１２によりオールゼロ領域であると判断されたチャンクについて、物理領域の割り当てを解放する。すなわち、解放処理部１３は、チャンクに割り当てられていた物理領域をプールに戻す。
【００５８】
解放処理部１３は、例えば、ホストコンピュータ２からUNMAPコマンドやWRITE SAMEコマンド等の既知の割当解放コマンドを受信した時と同様の処理を自律的に行なうことにより、チャンクに割り当てられていた物理領域を解放する。以下、チャンクに割り当てられている物理領域を解放することを割当解放という場合がある。
また、解放可能領域判定部１１は、チャンク管理テーブル１７１における、当該チャンクの割当済みフラグを“１”から“０”に書き換えることより、当該チャンクの状態を未割当の状態に変更する。
【００５９】
かかる解放処理部１３による割当解放は、オペレータが任意のタイミングで指示を行なうことにより開始してもよく、又、予め規定された所定条件が満たされたことが検知されたタイミングで自動的に開始してもよい。
本仮想ストレージ装置１においては、例えば、以下に示す（i）〜（iv）の４つの条件が割当解放を自動的に開始する所定条件として用いられる。解放可能領域判定部１１は、これらの条件のうち少なくともいずれか１つの条件が満たされたことを検知したタイミングで割当解放を開始する。
【００６０】
（i）本仮想ストレージ装置１がそなえるコピー機能によるコピーがされた後
一般に、データの読み書きが，ある大きさのブロック単位（例えば、５１２〜２０４８バイト）でランダムに行なわれるブロックデバイスにおいては、コピー処理はブロックレベルで行なわれる。
そのため、あるＬＵＮのデータを他のＬＵＮへコピーした場合に、そのコピー元ＬＵＮにおける未使用領域は、コピー先のボリュームにおいては０データとして書き込まれる。そのため、コピー処理が行なわれた後のコピー先のＬＵＮでは０データ領域が発生している可能性が高い。
【００６１】
本仮想ストレージ装置１においては、ＬＵＮのコピー処理が完了した後に割当解放を実施することにより、コピー処理によって生じる０データ領域を解消することができ、効率的である。
（ii）ＬＵＮの全領域にＬＢＡが連続でライトされた後
ＬＵＮのバックアップを行なう際に、バックアップ元のＬＵＮにおいて未使用領域があった場合には、該当未使用領域はバックアップ先のＬＵＮに０データとしてバックアップされる。そして、この０データの領域がリストアされると、０データがそのままリストア先のＬＵＮに書き込まれ、０データ領域が生成される。
【００６２】
ＬＵＮの全面リストアは、仮想ストレージ装置１においてはシーケンシャルライトに見える。 そのため、ＬＵＮの全面に対してシーケンシャルライトが行なわれた場合は、全面リストアが実行されたと判断し、割当解放処理を自動で実行する。これにより、全面リストアにより生じる０データ領域を解消することができる。
（iii）ホストコンピュータ２からＬＵＮの初期化が実施された後
例えば、ＮＴＦＳのディスクフォーマット手法においては、全領域をゼロクリアする機能がそなえられている。かかる機能を用いてＬＵＮの初期化（ディスクフォーマット）を実行した場合は、上記（２）の全面リストアと同様に、仮想ストレージ装置１としてはシーケンシャルライトに見える。ＬＵＮの全面に対してシーケンシャルライトがされた場合は、全面リストアがされたと判断し、割当解放処理を自動で実行する。これによっても、全面リストアにより生じる０データ領域を解消することができる。
【００６３】
そこで、ホストコンピュータ２からＬＵＮの初期化（ファイルシステム作成やボリュームマネージャによるボリュームの作成）が実施された場合は、全面リストアが実行されたと判断し、割当解放処理を自動で実行する。これにより、全面リストアにより生じる０データ領域を解消することができる。
（iv）ストレージプールの容量監視でアラームが生じた時
前述したボリューム制御部１０の容量監視機能により、ディスクプールにおいて、プール全体の容量に対する割当済みの物理領域の量が所定のしきい値に達した場合にアラームを生じさせ、割当解放処理を実行する。
【００６４】
すなわち、プールの空き容量が少なくなってきた場合に割当解放処理を実施することにより、そのチャンクに割り当てられていた物理領域がプールに戻され、ストレージプールの容量を増やすことができる。
仮想ストレージ装置１において、ＬＵＮへの０データの割り当ては空き容量を減少させる要因となる。従って、ストレージプールの容量監視機能により、ストレージプール全体の容量に対する割当済みの物理領域の量が所定のしきい値に達したことを検知した場合に割当解放処理を実行して０データ領域を解放する。これにより、ストレージプールの使用効率を高めることが可能となる。
【００６５】
解放処理部１３は、これらの（i）〜（iv）所定条件のうち少なくとも１つが検知された場合に、割当解放処理指示が行なわれたと判断し、割当解放を開始する。又、オペレータが図示しない入力装置を用いて割当解放処理指示を入力した場合も、解放処理部１３は割当解放を開始する。
予測情報出力部１５は、解放可能領域判定部１１により解放可能領域として判定されたチャンクについての情報を予測情報として出力する。例えば、予測情報出力部１５は、解放可能領域判定部１１により解放可能領域として判定されたチャンクの数に相当する領域の容量を、解放可能と予測される容量として、例えば、図示しないディスプレイ等に出力（通知）する。
【００６６】
すなわち、割当済みフラグ及びＣＲＣゼロフラグがいずれも“１”であるチャンクについて、当該チャンク数にチャンクサイズを乗算した値を解放可能予測容量として算出し、通知する。この解放可能予測容量の通知は、例えば、図示しないディスプレイ等に表示することにより行なう。又、割当済みフラグ及びＣＲＣゼロフラグがいずれも“１”であるチャンクの数は、解放可能領域判定部１１により解放可能領域カウンタに格納されている。予測情報出力部１５は、この解放可能領域カウンタ値を用いて解放可能予測容量を算出する。
【００６７】
このように、本仮想ストレージ装置１においては、物理ディスク上のデータをチェックすることなく、メモリ上のチェックのみで、解放可能な領域をある程度予測することができる。
そして、ＣＭ１００のＣＰＵ１１０が、制御プログラムを実行することにより、上述した、排他制御部２０，キャッシュ制御部２２，コピー制御部２３，ディスク制御部２４及びボリューム管理部１０（解放可能領域判定部１１，判断部１２，解放処理部１３，チャンクテーブル管理部１４及び予測情報出力部１５）として機能する。
【００６８】
なお、これらの排他制御部２０，キャッシュ制御部２２，コピー制御部２３，ディスク制御部２４及びボリューム管理部１０（解放可能領域判定部１１，判断部１２，解放処理部１３，チャンクテーブル管理部１４及び予測情報出力部１５）としての機能を実現するためのプログラム（制御プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００６９】
排他制御部２０，キャッシュ制御部２２，コピー制御部２３，ディスク制御部２４及びボリューム管理部１０（解放可能領域判定部１１，判断部１２，解放処理部１３，チャンクテーブル管理部１４及び予測情報出力部１５）としての機能を実現する際には、内部記憶装置（本実施形態ではＣＭ１００のＲＡＭ１０５やＲＯＭ１０３）に格納された制御プログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１１０）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【００７０】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。又、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、ＣＭ１００がコンピュータとしての機能を有しているのである。
【００７１】
上述の如く構成された、実施形態の一例としての本仮想ストレージ装置１におけるデータライト時の処理を、図４に示すフローチャート（ステップＡ１０〜Ａ１００）に従って説明する。
先ず、本仮想ストレージ装置１においてホストコンピュータ２からライト要求を受信する（ステップＡ１０）。
【００７２】
ボリューム制御部１０は、ボリューム制御部１０は、そのライト要求に基づいてチャンク管理テーブル１７１の割当済フラグを参照して、その書き込み先のＴＰＶのチャンク（ライト対象チャンク）に物理領域が割り当てられているか否かを判断する（ステップＡ２０）。
ライト対象チャンクに物理領域が割り当てられていない場合は（ステップＡ２０のＮＯルート参照）、ストレージプールからそのライト対象チャンクに物理領域を割り当てる（ステップＡ３０）。又、チャンクテーブル管理部１４はチャンク管理テーブル１７１において、当該チャンクの割当済フラグをＯＮにする（ステップＡ４０）。
【００７３】
その後、ホストコンピュータ２からライトデータを受信し、ＣＡ１０１は受信した１ＬＢＡ単位のデータに対してＣＲＣを行ない、そのチェック結果を当該データに付加する（ステップＡ５０）。キャッシュ制御部２２は、受信したデータをキャッシュ領域１０７に格納する。
また、ステップＡ２０において、ライト対象チャンクに物理領域が既に割り当てられている場合は（ステップＡ２０のＹＥＳルート参照）、ステップＡ５０に移行する。
【００７４】
チャンクテーブル管理部１４は、受信したデータのＣＲＣが０であるか否かを確認する（ステップＡ６０）。受信したデータのＣＲＣが０である場合には（ステップＡ６０のＹＥＳルート参照）、チャンクテーブル管理部１４は、当該データの格納先のチャンク（ライト対象チャンク）のチャンク管理テーブル１７１において、ＣＲＣゼロフラグをオンにする（ステップＡ７０）。その後、ボリューム制御部１０は、ホストコンピュータ２に対してライトの完了を応答し（ステップＡ８０）、処理を終了する。
【００７５】
一方、受信したデータのＣＲＣが０でない場合には（ステップＡ６０のＮＯルート参照）、チャンクテーブル管理部１４は、ライト対象チャンクのチャンク管理テーブル１７１において、ＣＲＣゼロフラグを確認する（ステップＡ９０）。すなわち、チャンクテーブル管理部１４は、ライト対象チャンクのＣＲＣゼロフラグがＯＮであるか否かを確認する。ＣＲＣゼロフラグがオンである場合には（ステップＡ９０のＹＥＳルート参照）、チャンクテーブル管理部１４はライト対象チャンクのチャンク管理テーブル１７１においてＣＲＣゼロフラグをオフにして（ステップＡ１００）、ステップＡ８０に移行する。
【００７６】
また、ＣＲＣゼロフラグがオンでない場合には（ステップＡ９０のＮＯルート参照）、そのまま、すなわち、ライト対象チャンクのチャンク管理テーブル１７１においてＣＲＣゼロフラグをオフにしたまま、ステップＡ８０に移行する。
次に、実施形態の一例としての仮想ストレージ装置１における解放可能領域判定部１１による解放可能領域の判定処理を、図５に示すフローチャート（ステップＢ１０〜Ｂ６０）に従って説明する。
【００７７】
解放予測は、例えば、オペレータが本仮想ストレージ装置１において解放可能な物理領域の容量を確認したい場合に、オペレータが対象とするＴＰＶのＬＵＮの指定とともに指示を行なうこと等により開始される。
解放可能領域判定部１１は、指定されたＬＵＮについて、チャンク管理テーブル群１７の先頭のチャンク管理テーブル１７１のチャンクを対象チャンクとして確認する（ステップＢ１０）。
【００７８】
解放可能領域判定部１１は、対象チャンクのチャンク管理テーブル１７１において、割当済フラグがオンであるか否かを確認する（ステップＢ２０）。対象チャンクの割当済フラグがオンでない場合には（ステップＢ２０のＮＯルート参照）、チャンク管理テーブル群１７における次のチャンク管理テーブル１７１のチャンクを対象チャンクとして（ステップＢ６０）、ステップＢ２０に戻る。
【００７９】
対象チャンクの割当済フラグがオンである場合には（ステップＢ２０のＹＥＳルート参照）、次に、解放可能領域判定部１１は、対象チャンクのチャンク管理テーブル１７１においてＣＲＣゼロフラグがオンであるか否かを確認する（ステップＢ３０）。対象チャンクのＣＲＣゼロフラグがオンでない場合には（ステップＢ３０のＮＯルート参照）、ステップＢ６０に移行する。
【００８０】
対象チャンクのＣＲＣゼロフラグがオンである場合には（ステップＢ３０のＹＥＳルート参照）、解放可能領域判定部１１は、解放可能領域カウンタをインクリメントする（ステップＢ４０）。その後、解放可能領域判定部１１は、チャンク管理テーブル群１７における全てのチャンクを対象チャンクとして確認処理を行なったか否かを確認する（ステップＢ５０）。全てのチャンクに対する確認が終了していない場合には（ステップＢ５０のＮＯルート参照）、ステップＢ６０に移行する。
【００８１】
また、全てのチャンクに対する確認が終了した場合には（ステップＢ５０のＹＥＳルート参照）、解放可能領域の判定処理を終了する。
予測情報出力部１５は、ステップＢ４０において解放可能領域判定部１１によって算出された解放可能領域カウンタの値を用いて、解放可能予測容量を算出し、ディスプレイ等に出力する。
【００８２】
これにより、オペレータは、解放可能と予測される物理領域の容量を容易に把握することができ、利便性が高い。
次に、実施形態の一例としての仮想ストレージ装置１における、割当解放処理指示の受信に伴う割当解放処理を、図６に示すフローチャート（ステップＣ１０〜Ｃ１００）に従って説明する。
【００８３】
例えば、前述した４つの所定条件のうち少なくともいずれか１つが検知され、解放可能領域判定部１１が割当解放処理指示を受信すると（ステップＣ１０）、解放可能領域判定部１１は、指定されたＬＵＮについて、そのチャンク管理テーブル群１７の先頭のチャンク管理テーブル１７１のチャンクを対象チャンクとして確認する（ステップＣ２０）。
解放可能領域判定部１１は、対象チャンクのチャンク管理テーブル１７１において、割当済フラグがオンであるか否かを確認する（ステップＣ３０）。対象チャンクの割当済フラグがオンでない場合には（ステップＣ３０のＮＯルート参照）、解放可能領域判定部１１は、チャンク管理テーブル群１７の全てのチャンクを対象チャンクとして確認処理を行なったか否かを確認する（ステップＣ９０）。
【００８４】
ここで、全てのチャンクに対する確認が終了した場合には（ステップＣ９０のＹＥＳルート参照）、解放可能領域の判定処理を終了する。又、全てのチャンクに対する確認が終了していない場合には（ステップＣ９０のＮＯルート参照）、チャンク管理テーブル群１７における次のチャンク管理テーブル１７１のチャンクを対象チャンクとして（ステップＣ１００）、ステップＣ３０に戻る。
【００８５】
対象チャンクの割当済フラグがオンである場合には（ステップＣ３０のＹＥＳルート参照）、次に、解放可能領域判定部１１は、対象チャンクのチャンク管理テーブル１７１においてＣＲＣゼロフラグがオンであるか否かを確認する（ステップＣ４０）。対象チャンクのＣＲＣゼロフラグがオンでない場合には（ステップＣ４０のＮＯルート参照）、ステップＣ９０に移行する。
【００８６】
対象チャンクのＣＲＣゼロフラグがオンである場合には（ステップＣ４０のＹＥＳルート参照）、判断部１２は、その対象チャンクの全てのデータをチェックする（ステップＣ５０）。判断部１２は、対象チャンクの全てのデータが０であるか否か、すなわち、ALL0であるか否かを判断する（ステップＣ６０）。対象チャンクの全データが０（ALL0）でない場合は（ステップＣ６０のＮＯルート参照）、ステップＣ９０に移行する。
【００８７】
一方、対象チャンクの全データがゼロデータである場合は（ステップＣ６０のＹＥＳルート参照）、その対象チャンクの物理割当を解放して（ステップＣ７０）、チャンク管理テーブル１７１において、対象チャンクの割当済フラグをリセットし“０”を設定してから（ステップＣ８０）、ステップＣ９０に移行する。
このように、実施形態の一例としての仮想ストレージ装置１によれば、解放可能領域判定部１１が、チャンク管理テーブル１７１において、割当済みフラグ及びＣＲＣゼロフラグにそれぞれ“１”が設定されているチャンクが、当該領域に格納されているデータがALL0であるALL0領域の可能性が高い領域（解放可能領域）であると判定する。そして、判断部１２が、解放可能領域判定部１１により解放可能領域として判定されたチャンクに対して、そのチャンクの全データがゼロデータ（ALL0）であるオールゼロ領域であるかを判断する。
【００８８】
これにより、判断部１２がＴＰＶにおける全てのチャンクに対してゼロデータであるか否かの判断を行なう必要がなく、ALL0データ領域解放処理の高速化を図ることができる。又、ＣＭ１００のＣＰＵ１１０の負荷を軽減することができる。
また、本仮想ストレージ装置１においては、ＣＲＣが０となる場合に当該データは０である可能性があるというＣＲＣの特性を利用している。そして、ホストコンピュータ２から転送されたデータに対して、ＣＡ１０１がデータ整合性の保証を行なうために付加するＣＲＣの値を利用する。これにより、既存のＣＲＣ機能を用いて実現することができ、新たなオーバーヘッドが生じることがなく、導入コストを低減することができる。
【００８９】
さらに、予測情報出力部１５が、解放可能領域判定部１１により解放可能領域として判定されたチャンクの数に相当する領域の容量を、解放可能と予測し通知することができる。これにより、予め、オールゼロ領域の解放により確保することができる容量を容易に知ることができ利便性が高い。
また、（i）本仮想ストレージ装置１がそなえるコピー機能によるコピーがされた後，（ii）ＬＵＮの全領域にＬＢＡが連続でライトされた後，（iii）ホストコンピュータ２からＬＵＮの初期化が実施された後、及び（iv）ストレージプールの容量監視でアラームが生じた時、のいずれかを検知したタイミングで割当解放を行なう。これにより、効率的に割当解放を行なうことができる。
【００９０】
また、ボリューム制御部１０が、ホストコンピュータ２に対してシンプロビジョニング型の仮想ボリュームを提供する。これにより、ＬＵＮの使用率が上がってきた時点でデバイスエンクロージャ３０に記憶装置を無停止で増設することで、ＯＳ側に影響を与えることなく物理ディスク容量の増設が可能である。又、また、導入時は必要最小限の物理ディスクのみで運用し、ＬＵＮの使用率が上がってきたところで物理ディスクを増設するといった対応を取ることで、低コストでの運用が可能であり、更に、物理ディスクの使用効率を向上させることもできる。
【００９１】
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
上位装置に対して仮想論理ボリュームを提供する仮想ストレージ装置であって、
前記仮想論理ボリュームを構成する管理単位領域毎に、当該管理単位領域に対する物理領域の割り当て状態を示す割当情報と、当該管理単位領域が解放候補領域であるか否かを表す解放候補領域情報とを関連付ける管理情報を参照して、物理領域が割り当てられており、且つ、解放候補領域である管理単位領域を解放可能領域として判定する解放可能領域判定部と、
前記解放可能領域判定部により解放可能領域として判定された前記管理単位領域に対して、当該管理対象領域内の全データがゼロデータであるオールゼロ領域であるかを判断する判断部と、
前記判断部によりオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する解放処理部とをそなえることを特徴とする、仮想ストレージ装置。
【００９２】
（付記２）
前記解放可能領域判定部により解放可能領域として判定された前記管理単位領域についての情報を予測情報として出力する、予測情報出力部を備えることを特徴とする、付記１記載の仮想ストレージ装置。
（付記３）
前記管理情報が、前記管理単位領域のデータに対する巡回冗長検査の結果が０である場合に、当該管理単位領域にかかる前記解放候補領域情報が解放候補領域を示すことを特徴とする、付記１又は２記載の仮想ストレージ装置。
【００９３】
（付記４）
前記上位装置から受信するライトデータに対して巡回冗長検査を行なう検査部と、
前記検査部による巡回冗長検査の結果に基づいて、前記ライトデータに対応する管理単位領域に関して、前記管理情報を更新する更新処理部とをそなえることを特徴とする、付記１〜３のいずれか１項に記載の仮想ストレージ装置。
【００９４】
（付記５）
前記仮想論理ボリュームに対してデータコピーが行なわれたことが検知されると、前記解放可能領域判定部が前記解放可能領域の判定を行ない、前記判断部が前記オールゼロ領域であるかの判定を行ない、前記解放処理部がオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放することを特徴とする、付記１〜４のいずれか１項に記載の仮想ストレージ装置。
【００９５】
（付記６）
前記仮想論理ボリュームの全域に対して連続してデータライトが行なわれたことが検知されると、前記解放可能領域判定部が前記解放可能領域の判定を行ない、前記判断部が前記オールゼロ領域であるかの判定を行ない、前記解放処理部がオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放することを特徴とする、付記１〜５のいずれか１項に記載の仮想ストレージ装置。
【００９６】
（付記７）
前記仮想論理ボリュームの定義に用いる実ストレージ資源を管理するストレージプールの空き容量が所定値以下となったことが検知されると、前記解放可能領域判定部が前記解放可能領域の判定を行ない、前記判断部が前記オールゼロ領域であるかの判定を行ない、前記解放処理部がオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放することを特徴とする、付記１〜６のいずれか１項に記載の仮想ストレージ装置。
【００９７】
（付記８）
仮想論理ボリュームを構成する管理単位領域毎に、当該管理単位領域に対する物理領域の割り当て状態を示す割当情報と、当該管理単位領域が解放候補領域であるか否かを表す解放候補領域情報とを関連付ける管理情報を参照して、物理領域が割り当てられており、且つ、解放候補領域である管理単位領域を解放可能領域として判定する解放可能領域判定部と、
前記解放可能領域判定部により解放可能領域として判定された前記管理単位領域に対して、当該管理対象領域内の全データがゼロデータであるオールゼロ領域であるかを判断する判断部と、
前記判断部によりオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する解放処理部とをそなえることを特徴とする、制御装置。
【００９８】
（付記９）
前記解放可能領域判定部により解放可能領域として判定された前記管理単位領域についての情報を予測情報として出力する、予測情報出力部を備えることを特徴とする、付記８記載の制御装置。
（付記１０）
前記管理情報が、前記管理単位領域のデータに対する巡回冗長検査の結果が０である場合に、当該管理単位領域にかかる前記解放候補領域情報が解放候補領域を示すことを特徴とする、付記８又は９記載の制御装置。
【００９９】
（付記１１）
前記上位装置から受信するライトデータに対して巡回冗長検査を行なう検査部と、
前記検査部による巡回冗長検査の結果に基づいて、前記ライトデータに対応する管理単位領域に関して、前記管理情報を更新する更新処理部とをそなえることを特徴とする、付記８〜１０のいずれか１項に記載の制御装置。
【０１００】
（付記１２）
前記仮想論理ボリュームに対してデータコピーが行なわれたことが検知されると、前記解放可能領域判定部が前記解放可能領域の判定を行ない、前記判断部が前記オールゼロ領域であるかの判定を行ない、前記解放処理部がオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放することを特徴とする、付記８〜１１のいずれか１項に記載の制御装置。
【０１０１】
（付記１３）
前記仮想論理ボリュームの全域に対して連続してデータライトが行なわれたことが検知されると、前記解放可能領域判定部が前記解放可能領域の判定を行ない、前記判断部が前記オールゼロ領域であるかの判定を行ない、前記解放処理部がオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放することを特徴とする、付記８〜１２のいずれか１項に記載の制御装置。
【０１０２】
（付記１４）
前記仮想論理ボリュームの定義に用いる実ストレージ資源を管理するストレージプールの空き容量が所定値以下となったことが検知されると、前記解放可能領域判定部が前記解放可能領域の判定を行ない、前記判断部が前記オールゼロ領域であるかの判定を行ない、前記解放処理部がオールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放することを特徴とする、付記８〜１３のいずれか１項に記載の制御装置。
【０１０３】
（付記１５）
仮想論理ボリュームを構成する管理単位領域毎に、当該管理単位領域に対する物理領域の割り当て状態を示す割当情報と、当該管理単位領域が解放候補領域であるか否かを表す解放候補領域情報とを関連付ける管理情報を参照して、物理領域が割り当てられており、且つ、解放候補領域である管理単位領域を解放可能領域として判定し、
解放可能領域として判定された前記管理単位領域に対して、当該管理対象領域内の全データがゼロデータであるオールゼロ領域であるかを判断し、
オールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する、
処理をコンピュータに実行させる制御プログラム。
【０１０４】
（付記１６）
解放可能領域として判定された前記管理単位領域についての情報を予測情報として出力する、
処理をコンピュータに実行させることを特徴とする、付記１５記載の制御プログラム。
（付記１７）
前記管理情報が、前記管理単位領域のデータに対する巡回冗長検査の結果が０である場合に、当該管理単位領域にかかる前記解放候補領域情報が解放候補領域を示すことを特徴とする、付記１５又は１６記載の制御プログラム。
【０１０５】
（付記１８）
前記上位装置から受信するライトデータに対して行なわれた巡回冗長検査の結果に基づいて、前記ライトデータに対応する管理単位領域に関して、前記管理情報を更新する、
処理をコンピュータに実行させることを特徴とする、付記１５〜１７のいずれか１項に記載の制御プログラム。
【０１０６】
（付記１９）
前記仮想論理ボリュームに対してデータコピーが行なわれたことが検知されると、前記解放可能領域の判定を行ない、前記オールゼロ領域であるかの判定を行ない、オールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する、
処理をコンピュータに実行させることを特徴とする、付記１５〜１８のいずれか１項に記載の制御プログラム。
【０１０７】
（付記２０）
前記仮想論理ボリュームの全域に対して連続してデータライトが行なわれたことが検知されると、前記解放可能領域の判定を行ない、前記オールゼロ領域であるかの判定を行ない、オールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する、
処理をコンピュータに実行させることを特徴とする、付記１５〜１９のいずれか１項に記載の制御プログラム。
【０１０８】
（付記２１）
前記仮想論理ボリュームの定義に用いる実ストレージ資源を管理するストレージプールの空き容量が所定値以下となったことが検知されると、前記解放可能領域の判定を行ない、前記オールゼロ領域であるかの判定を行ない、オールゼロ領域であると判断された前記管理単位領域に対する物理領域の割り当てを解放する、
処理をコンピュータに実行させることを特徴とする、付記１５〜２０のいずれか１項に記載の制御プログラム。
【符号の説明】
【０１０９】
１    仮想ストレージ装置
２    ホストコンピュータ（上位装置）
１０    ボリューム制御部
１１    解放可能領域判定部
１２    判断部
１３    解放処理部
１４    チャンクテーブル管理部
１５    予測情報出力部
１７    チャンク管理テーブル群
２０    排他制御部
２２    キャッシュ制御部
２３    コピー制御部
２４    ディスク制御部
３０−１〜３０−４，３０    デバイスエンクロージャ
５０    ネットワーク
１００ａ，１００ｂ，１００    ＣＭ（制御装置）
１０１    ＣＡ（検査部）
１０２    エキスパンダ
１０４    ＰＣＩｅインタフェース
１０５    ＲＡＭ
１０６    メモリ領域
１０７    キャッシュ領域
１１０    ＣＰＵ
１７１    チャンク管理テーブル
【図１】
0005853734.tif 000002
【図２】
0005853734.tif 000003
【図３】
0005853734.tif 000004
【図４】
0005853734.tif 000005
【図５】
0005853734.tif 000006
【図６】
0005853734.tif 000007