(57)【要約】【解決課題】ＡＯＵ技術を利用したストレージシステムにおいて、記憶領域の利用効率を改善する。【解決手段】ストレージシステムのコントローラは、上位装置による仮想ボリュームへのアクセスに応じて、上位装置がアクセスした仮想ボリュームの領域に実ボリュームの記憶領域を割り当て、この割り当てを維持する必要が低下したことを検出し、その検出結果に基づいて仮想ボリュームの領域に対する、前記実ボリュームの記憶領域の割り当てを解放する。【選択図】図１２
2007310861.tif 000002
【特許請求の範囲】
【請求項１】
記憶デバイスと、通信経路を介して接続される上位装置からの要求に応じて、前記記憶デバイスにデータを入出力する制御を行うコントローラと、を備えるストレージシステムにおいて、
前記上位装置がアクセスする仮想ボリュームと、
前記記憶デバイスの記憶領域を有する実ボリュームと、を有し、
前記実ボリュームが前記仮想ボリュームに割り当てられることによって、前記仮想ボリュームを介して前記上位装置が前記実ボリュームの記憶領域にアクセスするように構成され、
前記コントローラは、前記上位装置による前記仮想ボリュームへのアクセスに応じて、前記上位装置がアクセスした仮想ボリュームの領域に前記実ボリュームの記憶領域を割り当て、この割り当てを維持する必要が低下したことを検出し、その検出結果に基づいて前記仮想ボリュームの領域に対する、前記実ボリュームの記憶領域の割り当てを解放する、
ストレージシステム。
【請求項２】
第１の仮想ボリュームと第２の仮想ボリュームと、を備え、当該第１の仮想ボリュームと第２の仮想ボリュームと、がコピーペアの関係を有してなり、前記コントローラは、このコピー関係が解消されたことを検出して、コピー先となる仮想ボリュームへの前記記憶領域の割り当てを解放する、請求項１記載のストレージシステム。
【請求項３】
第１の仮想ボリュームと第２の仮想ボリュームと、を備え、当該第１の仮想ボリュームと第２の仮想ボリュームとがコピーペアの関係を有してなり、前記コントローラは、両ボリューム間のコピーが終了し、そしてコピー先ボリュームのデータが外部媒体にバックアップされた後、コピー先ボリュームへの前記記憶領域の割り当てを解放する、請求項１記載のストレージシステム。
【請求項４】
前記上位装置からのアクセスの状況を判定するための制御情報を記憶する制御メモリを備え、前記コントローラは、前記制御情報の内容にしたがって前記解放を実行する、請求項１記載のストレージシステム。
【請求項５】
前記制御情報は、前記上位装置からの実アクセスがあった記憶領域か、前記上位装置からの将来アクセスが予測される記憶領域かを示す情報である、請求項４記載のストレージシステム。
【請求項６】
前記コントローラは、前記実ボリュームの記憶領域について前記制御情報を定期的に走査し、この結果に基づいて前記解放を実行する請求項４記載のストレージシステム。
【請求項７】
前記コントローラは、前記上位装置のアプリケーションプログラムの実行結果に基づいて、前記解放を実行する請求項１記載のストレージシステム。
【請求項８】
前記コントローラは、前記上位装置のアプリケーションプログラムによるデータの削除を契機として、このデータに対応する前記実ボリュームの記憶領域について前記解放を実行する、請求項１記載のストレージシステム。
【請求項９】
前記コントローラは、前記上位装置から前記仮想ボリュームへのアクセスコマンドを監視し、このアクセスコマンドに基づいて、前記解放を実行する請求項１記載のストレージシステム。
【請求項１０】
記憶デバイスと、コントローラと、を有し、通信経路を介して接続される上位装置からの要求に応じて、前記記憶デバイスにデータを入出力する制御を行うストレージ装置において、
前記上位装置がアクセスする仮想ボリュームと、
前記記憶デバイスの記憶領域を有する実ボリュームと、を有し、
前記実ボリュームが前記仮想ボリュームに割り当てられることによって、前記仮想ボリュームを介して前記上位装置が前記実ボリュームの記憶領域にアクセスするように構成され、さらに、
前記コントローラは、前記上位装置による前記仮想ボリュームへのアクセスに応じて、前記上位装置がアクセスした仮想ボリュームの領域に前記実ボリュームの記憶領域を割り当て、そして前記上位装置が前記仮想ボリュームに対して続いてアクセスする領域を予測し、この予測された領域に前記実ボリュームの記憶領域を割り当てる、ストレージシステム。
【請求項１１】
前記予測されたアドレスに対する前記上位装置のアクセス状況に基づいて、前記コントローラは前記予測された領域への前記実ボリュームの記憶領域の割り当てを解放する、請求項１０記載のストレージシステム。
【請求項１２】
前記仮想ボリュームの領域について、前記上位装置がアクセスした領域か前記予測された領域かを区別する制御情報を備え、前記コントローラはこの制御情報に基づいて前記解放を実行する、請求項１０記載のストレージシステム。
【請求項１３】
前記コントローラは前記制御情報を定期的に参照し、その参照結果に基づいて前記解放を実行する、請求項１２記載のストレージシステム。
【請求項１４】
前記コントローラは、前記実ボリュームの記憶領域のうち前記仮想ボリュームに対して割り当てられている割合を算出し、この割合がある値以上の場合に、前記解放を実行する、請求項１記載のストレージシステム。
【請求項１５】
前記コントローラは前記解放された、前記実ボリュームの記憶領域のデータを消去する、請求項１記載のストレージシステム。
【請求項１６】
記憶デバイスと、通信経路を介して接続される上位装置からの要求に応じて、前記記憶デバイスにデータを入出力する制御を行うコントローラと、を備えるストレージシステムの制御において、
前記ストレージシステムは、前記上位装置がアクセスする仮想ボリュームと、前記記憶デバイスの記憶領域を有する実ボリュームと、を有し、前記実ボリュームが前記仮想ボリュームに割り当てられることによって、前記仮想ボリュームを介して前記上位装置が前記実ボリュームの記憶領域にアクセスするように構成され、
前記コントローラは、前記上位装置による前記仮想ボリュームへのアクセスに応じて、前記上位装置がアクセスした仮想ボリュームの領域に前記実ボリュームの記憶領域を割り当てるステップと、この割り当てを維持する必要が低下した、前記仮想ボリュームの領域に対して、前記実ボリュームの記憶領域の割り当てを解放するステップと、を実行するように構成された、ストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードディスクドライブ（以下、ＨＤＤ、と称する）等の記憶デバイスに対するデータの記憶制御を行うストレージシステムに関するものである。
【背景技術】
【０００２】
ストレージシステムと、このストレージシステムにネットワークなどの通信経路を介して接続するサーバやホストコンピュータなどの上位装置とを備えた、コンピュータシステムで扱われるデータ量の増加に伴い、ストレージシステムが備える記憶領域が大容量化されてきている。ストレージ装置は、上位装置がアクセス可能なボリュームを論理的に定義し、この論理ボリュームの物理的記憶領域に上位装置がアクセスすることによって、記憶デバイスに対するデータの入出力が可能となる。
【０００３】
最近では、上位装置が取り扱うデータ量が大幅に増えていることから、ボリュームの記憶容量であるボリュームサイズを大幅に増やさなくてはならなくなっている。最初から大きなサイズの記憶領域を上位装置に割り当てておけば、上位装置にとって記憶容量の不足は起こらず、途中で上位装置に割り当てられている記憶領域のサイズを拡大する必要もない。しかしながら、上位装置である計算機がそれほど大量のデータを使わない場合には、計算機に割り当てられた記憶領域に未使用の領域が発生して記憶領域に無駄が発生する。そこで、上位計算機のプロセッサがストレージ装置の仮想ボリュームに書き込みを行った
ときに初めて、書き込みが行われた仮想ボリューム上の領域に実記憶領域を割り当てることが提案されている（特開２００５−１１３１６号公報）。さらに、米国特許第６,８２３,４４２号公報には、上位装置がアクセスする仮想ボリュームをストレージシステムに設け、この仮想ボリュームに物理的記憶領域を割り当てることが記載されている。
【０００４】
なお、本発明に関連する従来例として、特開２００５−１２８７７１号公報には、データを記憶する物理ストレージを有しアクセス要求を受けてその物理ストレージをアクセスするデータアクセスサーバと、そのデータアクセスサーバにアクセス要求を送りデータアクセスサーバをデータ保存のために利用してデータファイリングを行なうデータファイルサーバとを備えたデータファイルシステム等に関し、論理ブロックが不使用になったときに物理ブロックを有効に解放することが記載されている。また、特開２００４−１２７３０１号公報には、仮想記憶空間と、物理記憶空間と、仮想記憶空間の複数のアドレスを物理記憶空間の各アドレスに関連付けるように構成されたマッピングシステムと、順序に従ってマッピングシステムの除去部分を指定する優先順位付け規定に従って、マッピングシステムの一部を自動的に除去するように構成されたコントローラと、を備える記憶システムが記載されている。
【特許文献１】特開２００５-１１３１６号公報
【特許文献２】米国特許第６,８２３,４４２号公報
【特許文献３】特開２００５−１２８７７１号公報
【特許文献４】特開２００４−１２７３０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本願出願人はストレージシステムにおいて記憶資源を有効に活用するためにAllocation on Use(ＡＯＵ)という技術を開発している。このＡＯＵ技術は、ストレージシステムが、それ自身は記憶領域を持たない仮想ボリュームを上位装置に提供し、この仮想ボリュームにはプールと呼ばれる記憶領域の集合を対応させている。上位装置が仮想ボリュームにアクセスすると、ストレージシステムは上位装置によってアクセスされた仮想ボリュームの領域にプールに含まれる記憶領域を割り当てる。この割り当ては、上位装置が仮想ボリュームにアクセスすることによって実行される。一つのプールには複数の仮想ボリュームが対応可能であるために、ストレージシステムはプールの記憶領域を有効活用することができる。ストレージシステムはあらかじめ大きな、見かけの容量を持つ仮想ボリュームを用意しておき、ストレージシステムは、プールの利用状況に応じて、プールに記憶容量を追加する。
【０００６】
ＡＯＵ技術は、プールの記憶領域が仮想ボリュームの領域に割り当てられる構成を備えているため、上位装置が仮想ボリュームの領域にアクセスするにしたがって仮想ボリュームに割り当てられる記憶領域は増加する一方である。記憶領域に対する上位装置のアクセスが今後実質的に無いと判断される場合に、仮想ボリュームに対する記憶領域の割り当てが固定されたままであると、この記憶領域の利用効率が低下する。また、記憶領域の仮想ボリュームの領域への割り当てが、上位装置が仮想ボリュームにアクセスする際に行われるために、上位装置が仮想ボリュームを介してプールの記憶領域にアクセスする際のアク
セススピードに改善の余地がある。
【０００７】
そこで、本発明は、ＡＯＵ技術を利用したストレージシステムにおいて、記憶領域の利用効率を改善することにある。本発明の他の目的は、ＡＯＵ技術を利用したストレージシステムにおいて、上位装置が仮想ボリュームを介して記憶領域にアクセスする際のアクセススピードを改善することにある。さらに本発明の他の目的は、ＡＯＵ技術を利用したストレージシステムにおいて、上位装置が仮想ボリュームを介して記憶領域にアクセスする際のアクセススピードを改善するとともに、記憶領域の利用効率を改善することにある。
【課題を解決するための手段】
【０００８】
本発明は、仮想ボリュームに一旦記憶領域を割り当てた後、何らかの事情を契機として、この割当を解放することにより、記憶資源の有効利用が可能なストレージシステムを提供することを特徴とするものである。この契機とはさまざまなものが考えられるが、例えば、ボリュームペアのペア状態の解除、正ボリュームのスナップショットを記録する副ボリュームを外部媒体にバックアップした後のタイミング、上位装置からストレージシステムに発行されたデータ削除のコマンドの処理のタイミング、そして、上位装置に対して予め割り当てられているものの、上位装置からのアクセスが無い記憶領域について、定期的に解放処理を実行するタイミング、がある。
【０００９】
本発明は、記憶デバイスと、通信経路を介して接続される上位装置からの要求に応じて、前記記憶デバイスにデータを入出力する制御を行うコントローラと、を備えるストレージシステムにおいて、前記上位装置がアクセスする仮想ボリュームと、前記記憶デバイスの記憶領域を有する実ボリュームと、を有し、前記実ボリュームが前記仮想ボリュームに割り当てられることによって、前記仮想ボリュームを介して前記上位装置が前記実ボリュームの記憶領域にアクセスするように構成され、前記コントローラは、前記上位装置による前記仮想ボリュームへのアクセスに応じて、前記上位装置がアクセスした仮想ボリュームの領域に前記実ボリュームの記憶領域を割り当て、この割り当てを維持する必要が低下したことを検出し、その検出結果に基づいて前記仮想ボリュームの領域に対する、前記実ボリュームの記憶領域の割り当てを解放する、ことを特徴とするものである。
【００１０】
さらに、本発明は、記憶デバイスと、コントローラと、を有し、通信経路を介して接続される上位装置からの要求に応じて、前記記憶デバイスにデータを入出力する制御を行うストレージ装置において、前記上位装置がアクセスする仮想ボリュームと、前記記憶デバイスの記憶領域を有する実ボリュームと、を有し、前記実ボリュームが前記仮想ボリュームに割り当てられることによって、前記仮想ボリュームを介して前記上位装置が前記実ボリュームの記憶領域にアクセスするように構成され、さらに、前記コントローラは、前記上位装置による前記仮想ボリュームへのアクセスに応じて、前記上位装置がアクセスした
仮想ボリュームの領域に前記実ボリュームの記憶領域を割り当て、そして前記上位装置が前記仮想ボリュームに対して続いてアクセスする領域を予測し、この予測された領域に前記実ボリュームの記憶領域を割り当てる、ことを特徴とするものである。
【発明の効果】
【００１１】
以上説明したように、本発明によれば、仮想ボリュームに一旦記憶領域を割り当てた後、何らかの事情を契機として、この割当を解放することにより、記憶資源の有効利用が可能なストレージシステムを提供することができる。更に本発明によれば、本発明の他の目的は、ＡＯＵ技術を利用したストレージシステムにおいて、上位装置が仮想ボリュームを介して記憶領域にアクセスする際のアクセススピードを改善することができる。さらにＡＯＵ技術を利用したストレージシステムにおいて、上位装置が仮想ボリュームを介して記憶領域にアクセスする際のアクセススピードを改善するとともに、記憶領域の利用効率を改善することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、以後説明される図面においては、同一部には同一符号を付し、その繰り返しの説明は省略又は簡略化される。
【００１３】
図１は、本発明が適用されるストレージシステム（ストレージ装置ということもある。）６００を含んだ、記憶制御システムを示すハードウエアブロック図である。ストレージシステム６００は複数の記憶デバイス３００と、情報処理装置２００からの入出力要求に応答して記憶デバイス３００への入出力制御を行う記憶デバイス制御装置（コントローラ）１００と、を備えて構成されている。
【００１４】
情報処理装置２００は上位装置に相当し、ＣＰＵやメモリ等を備えたサーバ（ホスト）や、ストレージ装置の管理用コンピュータからなり、例えば、ワークステーション、メインフレームコンピュータ、パーソナルコンピュータ等で構成される。情報処理装置２００は複数台のコンピュータをネットワーク接続して構成することもできる。情報処理装置２００はオペレーティングシステム上で動作するアプリケーションプログラムを実装している。アプリケーションプログラムとしては、例えば、銀行の自動預金預け払いシステムや航空機の座席予約システム等がある。また、サーバとしては、アプリケーションを実行する、更新系サーバや、更新系サーバのバックエンドでバックアップなどを実行するバックアップサーバが存在する。
【００１５】
情報処理装置１乃至３（２００）はＬＡＮ（Local Area Network）４００を介してストレージ装置６００と接続されている。ＬＡＮ４００は、例えば、イーサネット（登録商標）やＦＤＤＩ等の通信網であり、情報処理装置１乃至３（２００）とストレージシステム６００との間の通信はＴＣＰ／ＩＰプロトコルスイートによって行われる。情報処理装置１乃至３（２００）からはストレージシステム６００に対してファイル名指定によるデータアクセス要求（ファイル単位でのデータ入出力要求。以下、ファイルアクセス要求と称する。）が後述のチャネル制御部ＣＨＮ１乃至ＣＨＮ４（１１０）に送信される。
【００１６】
ＬＡＮ４００にはバックアップデバイス９１０が接続されている。バックアップデバイス９１０は、例えば、ＭＯ、ＣＤ−Ｒ、ＤＶＤ−ＲＡＭ等のディスク系デバイス、ＤＡＴテープ、カセットテープ、オープンテープ、カートリッジテープ等のテープ系デバイスである。バックアップデバイス９１０はＬＡＮ４００を介して記憶デバイス制御装置１００との間で通信を行うことにより記憶デバイス３００に記憶されているデータのバックアップデータを記憶する。また、バックアップデバイス９１０は情報処理装置１（２００）と接続し、情報処理装置１（２００）を介して記憶デバイス３００に記憶されているデータ
のバックアップを取得する。
【００１７】
記憶デバイス制御装置１００はチャネル制御部ＣＨＮ１乃至４（１１０）を備える。記憶デバイス制御装置１００は、チャネル制御部ＣＨＮ１乃至４（１１０）とＬＡＮ４００とを介して、情報処理装置１乃至３（２００）と、バックアップデバイス９１０と、記憶デバイス３００との間のライトアクセス又はリードアクセスを媒介する。チャネル制御部ＣＨＮ１乃至４（１１０）は情報処理装置１乃至３（２００）からのファイルアクセス要求を個々に受け付ける。すなわち、チャネル制御部ＣＨＮ１乃至４（１１０）には個々にＬＡＮ４００上のネットワークアドレス（例えば、ＩＰアドレス）が割り当てられていて
、それぞれが個別にＮＡＳとして振る舞い、個々のＮＡＳがあたかも独立したＮＡＳが存在するかのようにＮＡＳとしてのサービスを情報処理装置１乃至３（２００）に提供することができる。このように１台のストレージシステム６００に個別にＮＡＳとしてのサービスを提供するチャネル制御部ＣＨＮ１乃至４（１１０）を備えるように構成したことで、従来、独立したコンピュータで個々に運用されていたＮＡＳサーバが一台のストレージシステム６００に集約される。そして、これによりストレージシステム６００の統括的な管理が可能となり、各種設定・制御や障害管理、バージョン管理といった保守業務の効率
化が図られる。
【００１８】
情報処理装置３乃至４（２００）はＳＡＮ５００を介して記憶デバイス制御装置１００と接続されている。ＳＡＮ５００は、記憶デバイス３００が提供する記憶領域におけるデータの管理単位であるブロックを単位として情報処理装置３乃至４（２００）との間でデータの授受を行うためのネットワークである。ＳＡＮ５００を介して行われる情報処理装置３乃至４（２００）と記憶デバイス制御装置１００との間の通信は一般にＳＣＳＩプロトコルに従って行われる。情報処理装置３乃至４（２００）からは、ストレージシステム６００に対して、ファイバチャネルプロトコルに従ってブロック単位のデータアクセス要求（以下、ブロックアクセス要求と称する。）が送信される。
【００１９】
ＳＡＮ５００にはＳＡＮ対応のバックアップデバイス９００が接続されている。ＳＡＮ対応バックアップデバイス９００は、ＳＡＮ５００を介して記憶デバイス制御装置１００との間で通信を行うことにより、記憶デバイス３００に記憶されているデータのバックアップデータを記憶する。
【００２０】
記憶デバイス制御装置１００はチャネル制御装置ＣＨＮ１乃至４（１１０）に加えて、更にチャネル制御部ＣＨＦ１乃至２，ＣＨＡ１乃至２（１１０）を備える。記憶デバイス制御装置１００はチャネル制御部ＣＨＦ１乃至２（１１０）とＳＡＮ５００とを介して、情報処理装置３乃至４（２００）及びＳＡＮ対応バックアップデバイス９００との間の通信を行う。チャネル制御部は、上位装置からのアクセスコマンドを処理する。
【００２１】
情報処理装置５（２００）は、更に、ＬＡＮ４００やＳＡＮ５００等のネットワークを介さずに記憶デバイス制御装置１００と接続されている。この情報処理装置５（２００）の例は、例えばメインフレームコンピュータである。情報処理装置５（２００）と記憶デバイス制御装置１００との間の通信は、例えばＦＩＣＯＮ（Fiber Connection)（登録商標）やＥＳＣＯＮ（Enterprise System Connection）（登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture）（登録商標）、ＦＩＢＡＲＣ（Fiber Connection Architecture）（登録商標）などの通信プロトコルに従って行われる。情報処理装置５（２００）からはストレージシステム６００に対して、これらの通信プロトコルに従ってブロックアクセス要求が送信される。記憶デバイス制御装置１００は、チャネル制御部ＣＨＡ１乃至２（１１０）を通じて情報処理装置５（２００）との間で通信を行う。
【００２２】
ＳＡＮ５００には、他のストレージシステム６１０が接続されている。ストレージシステム６１０は、記憶デバイス制御装置１００にストレージシステムが有する記憶資源を提供するという機能を、情報処理装置及びストレージ装置６００に提供する。ストレージ装置の情報処理装置に対する見かけ上の記憶領域が、ストレージ装置６１０によって拡張されたことになる。なお、ストレージシステム６１０はＳＡＮ５００以外にもＡＴＭなどの通信回線によりストレージシステム６００に接続していることもある。また、ストレージシステム６１０をストレージシステム６００に直接接続することもできる。
【００２３】
このように、ストレージシステム６００内にチャネル制御部ＣＨＮ１乃至４（１１０）、チャネル制御部ＣＨＦ１乃至２（１１０）、チャネル制御部ＣＨＡ１乃至２（１１０）を混在させて装着させることにより、異種ネットワークに接続できるストレージシステムを実現できる。即ち、このストレージシステム６００はチャネル制御部ＣＨＮ１乃至４（１１０）を用いてＬＡＮ４００に接続し、かつチャネル制御部ＣＨＦ１乃至２（１１０）を用いてＳＡＮ５００に接続するという、ＳＡＮ−ＮＡＳ統合ストレージシステムである。
【００２４】
接続部１５０は、各々のチャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、及び各々のディスク制御部１４０を相互に接続する。これらのチャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、及びディスク制御部１４０相互間のコマンド又はデータの送受信は接続部１５０を介して行われる。接続部１５０は例えば高速スイッチングによりデータ伝送を行う超高速クロスバスイッチ等の高速バスで構成される。これにより、チャネル制御部１１０相互間の通信パフォーマンスが大幅に向上するとともに、高速なファイル共有機能や高速フェイルオーバー等が可能になる。
【００２５】
共有メモリ１２０、及びキャッシュメモリ１３０はチャネル制御部１１０、及びディスク制御部１４０が共用するメモリ装置である。共有メモリ１２０は主として制御情報やコマンド等を記憶するために利用され、キャッシュメモリ１３０は主としてデータを記憶するために利用される。例えば、あるチャネル制御部１１０が情報処理装置２００から受け取ったデータ入出力コマンドが書き込みコマンドであった場合に、当該チャネル制御部１１０はその書き込みコマンドを共有メモリ１２０に書き込むとともに、情報処理装置２００から受け取ったライトデータをキャッシュメモリ１３０に書き込む。一方、ディスク制御部１４０は共有メモリ１２０を監視しており、共有メモリ１２０に書き込みコマンドが書き込まれたと判定すると、当該書き込みコマンドに従ってキャッシュメモリ１３０からライトデータを読み出して、これを記憶デバイス３００に書き込む。
【００２６】
一方、あるチャネル制御部１１０が情報処理装置２００から受け取ったデータ入出力コマンドが読み出しコマンドであった場合に、当該チャネル制御部１１０はその読み出しコマンドを共有メモリ１２０に書き込むとともに、読み出し対象となるデータがキャッシュメモリ１３０に存在しているか否かをチェックする。ここで、読み出し対象となるデータがキャッシュメモリ１３０に存在している場合には、チャネル制御部１１０はそのデータをキャッシュメモリ１３０から読み取って情報処理装置２００に送信する。読み出し対象となるデータがキャッシュメモリ１３０に存在していない場合には、共有メモリ１２０に
読み出しコマンドが書き込まれたことを検出したディスク制御部１４０は読み出し対象となるデータを記憶デバイス３００から読み出してこれをキャッシュメモリ１３０に書き込むとともに、その旨を共有メモリ１２０に書き込む。チャネル制御部１１０は共有メモリ１２０を監視することにより、読み出し対象となるデータがキャッシュメモリ１３０に書き込まれたことを検出すると、そのデータをキャッシュメモリ１３０から読み出して情報処理装置２００に送信する。
【００２７】
ディスク制御部１４０はチャネル制御部１１０から送信された論理アドレス指定による記憶デバイス３００へのデータアクセス要求を、物理アドレス指定によるデータアクセス要求に変換し、チャネル制御部１１０から出力されるＩ／Ｏ要求に応答して記憶デバイス３００へのデータの書き込み又は読み取りを行う。記憶デバイス３００がＲＡＩＤ構成されている場合には、ディスク制御部１４０はＲＡＩＤ構成に従ったデータのアクセスを行う。すなわち、ディスク制御部は、記憶デバイスであるＨＤＤの制御、ＲＡＩＤグループの制御を行う。複数のＨＤＤの記憶領域によってＲＡＩＤグループが構成されている。
【００２８】
記憶デバイス３００は単一又は複数のディスクドライブ（物理ボリューム）を備えており、情報処理装置２００からアクセス可能な記憶領域を提供する。記憶デバイス３００が提供する記憶領域には単一又は複数の物理ボリュームの記憶空間を合わせた論理ボリュームが設定されている。記憶デバイス３００に設定される論理ボリュームには、情報処理装置２００からアクセス可能なユーザ論理ボリュームや、チャネル制御部１１０の制御のために使用されるシステム論理ボリュームがある。システム論理ボリュームにはチャネル制御部１１０で実行されるオペレーティングシステムも格納されている。また、記憶デバイ
ス３００が、上位装置に提供する論理ボリュームには、各々のチャネル制御部１１０がアクセス可能な論理ボリュームが割り当てられている。もとより、複数のチャネル制御部１１０が同一の論理ボリュームを共有することもできる。
【００２９】
尚、記憶デバイス３００として、例えば、ハードディスク装置等を用いることができる。記憶デバイス３００のストレージ構成として、例えば、複数の記憶デバイス３００によりＲＡＩＤ方式のディスクアレイを構成してもよい。また、記憶デバイス３００と記憶デバイス制御装置１００は直接接続してもよく、ネットワークを介して接続してもよい。更に、記憶デバイス３００は記憶デバイス制御装置１００と一体に構成してもよい。
【００３０】
管理端末１６０はストレージシステム６００を保守・管理するためのコンピュータ装置であり、内部ＬＡＮ１５１を通じて各々のチャネル制御部１１０とディスク制御部１４０に接続している。オペレータは管理端末１６０を操作することで記憶デバイス３００のディスクドライブの設定、論理ボリュームの設定、チャネル制御部１１０やディスク制御部１４０で実行されるマイクロプログラムのインストール等を行うことが可能である。この種の制御は、管理端末に基づくもののほか、上位装置（ホスト）上で動作するプログラムがネットワークを経由するものに基づいても良い。
【００３１】
図２は図１に示す記憶制御システムの機能ブロック図である。チャネル制御部１１０は、マイクロプロセッサＣＴ１とローカルメモリＬＭ１を備え、チャネルコマンド制御プログラムはローカルメモリＬＭ１に記憶されている。マイクロプロセッサＣＴ１はローカルメモリＬＭ１を参照してチャネルコマンド制御プログラムを実行する。チャネルコマンド制御プログラムは、ホストにＬＵを提供する。チャネルコマンド制御プログラムはホストからＬＵに対して送られるアクセスコマンドを処理し、ＬＤＥＶへのアクセスへと変換する。チャネルコマンド制御プログラムはホストからのアクセスに依らず、 ＬＤＥＶに対してアクセスすることもある。ＬＤＥＶとは、ＲＡＩＤグループの一部分を論理的に切り出した論理ボリュームである。但し、仮想ＬＤＥＶはホストのアクセスを受けるが、実記憶領域を備えていない。ホストはＬＤＥＶではなく、ＬＵにアクセスする。ＬＵとは、ホストがアクセスする記憶領域の単位である。一部のＬＵは仮想ＬＤＥＶに割り当てられている。以後仮想ＬＤＥＶに割り当てられているＬＵを実ボリュームに割り当てられているＬＵと区別するために、便宜上仮想ＬＵという。
【００３２】
ディスク制御部１４０は、マイクロプロセッサＣＴ２とローカルメモリＬＭ２とを備えている。ローカルメモリＬＭ２には、ＲＡＩＤ制御プログラムとＨＤＤ制御プログラムが記憶されている。マイクロプロセッサＣＴ２はローカルメモリＬＭ２を参照して、ＲＡＩＤ制御プログラムとＨＤＤ制御プログラムを実行する。ＲＡＩＤ制御プログラムは、複数のＨＤＤからＲＡＩＤグループを構成し、上位のチャネルコマンド制御プログラムにＬＤＥＶを提供する。ＨＤＤ制御プログラムは、上位のＲＡＩＤ制御プログラムの要求に応じてＨＤＤに対してデータの読み書きを実行する。ホスト２００ＡはＬＵ１０を介してＬＤ
ＥＶ１２Ａにアクセスする。ホスト２００Ｂに対する記憶領域はＡＯＵ技術によって構成されている。ホスト２００Ｂは仮想ＬＵ１４を介して仮想ＬＤＥＶ１６にアクセスする。仮想ＬＤＥＶ１６にはプール１８が割り当てられており、このプールにはＬＤＥＶ１２Ｂ，１２Ｃが割り当てられている。仮想ＬＵと仮想ＬＤＥＶとが仮想ボリュームに相当する。プールとは、仮想ＬＤＥＶに割り当てられるＬＤＥＶの集合をいう。なお、チャネルＩ／Ｆ，Ｉ／Ｏパスとは、ホストがストレージサブシステムにアクセスするインターフェースであり、ファイバチャネル、ｉＳＣＳＩなどをいう。
【００３３】
図３は仮想ボリュームとプールとの関係を示すブロック図である。ホストは仮想ボリューム１６に対してアクセスする。アクセスされた仮想ボリュームの領域はプール（物理記憶装置）１８にマッピングされる。このマッピングは仮想ボリュームに対するホストからのアクセスに応じて動的に生成され、以後、ストレージシステムがこのマッピング情報を利用する。仮想ボリュームの領域のうち使用されていない領域の分は物理記憶装置を消費しないので、あらかじめ十分大きな仮想ボリュームを用意しておき、プール１８の利用状況を見て々にプール１８Ａを仮想ボリュームの割り当てに追加するという運用が可能になる。
【００３４】
チャネル制御部１１０がチャネルコマンド制御プログラムにしたがって、ＡＯＵの動作を実行するに際して、管理テーブルが利用される。各管理テーブルについて説明する。図４はＬＵ管理テーブルであり、ＬＵの一覧を保持する。ＬＵはチャネル番号とＬＵＮの組で特定される。仮想ビットが「ＯＦＦ」の場合は、ＬＵはＲＡＩＤ制御プログラムが提供するＬＤＥＶにマッピングされる。仮想ビットが「ＯＮ」の場合、ＬＵは仮想ＬＤＥＶにマッピングされていることを示している。
【００３５】
図５は仮想ＬＤＥＶ管理テーブルであり、仮想ＬＤＥＶの一覧を保持する。仮想ＬＤＥＶは仮想ＬＤＥＶ番号で特定される。仮想ＬＤＥＶ番号はＲＡＩＤ制御プログラムが提供するＬＤＥＶのＬＤＥＶ番号とは別の管理体系を持つ。プール番号は仮想ＬＤＥＶとのマッピング対象となるプールを特定するためのものである。
【００３６】
図６は、ＲＡＩＤ制御プログラムが、チャネル制御部及び上位装置に対して提供するＬＤＥＶの一覧を示す。ＬＤＥＶはＬＤＥＶ番号で特定される。用途レジスタが"Ｌ"である場合は、ＬＤＥＶがＬＵに対してマッピングされていることを示している。"Ｐ"である場合は、ＬＤＥＶがプールを構成すること、換言すれば、ＬＤＥＶがプールに属していることを示している。"Ｎ"である場合は、ＬＤＥＶが未使用であることを示している。
【００３７】
図７はプール管理テーブルであり、プールの一覧を示す。プールはプール番号で特定される。ＬＤＥＶ番号リストには, そのプールを構成するＬＤＥＶ(プールＬＤＥＶ)がリストアップされている。図８はマッピング管理テーブルであり、仮想ＬＤＥＶの記憶領域と、それに対応するプールＬＤＥＶの記憶領域のマッピングを保持する。このテーブルは仮想ＬＤＥＶ毎に存在する。図に示す例は、仮想ＬＤＥＶ番号が０００１♯の場合である。このテーブルには、仮想ＬＤＥＶの領域であるアドレスと、それに対応するプールＬＤＥＶのあるアドレス(実アドレス)が記録される。
【００３８】
ここでいうアドレスとは、仮想ＬＤＥＶおよびプールＬＤＥＶそれぞれをある一定のサイズで区切って通番を振ったものであり、仮想ＬＤＥＶとそれが使用するプールＬＤＥＶ群との間で対応がとれるようなものであれば良い。このアドレスの体系は、ホストがＬＵにアクセスする際に用いるアドレッシング体系とは共通でも良いしあるいは異なっていても良い。
【００３９】
図９は図８の制御テーブルで示された、仮想ＬＤＥＶのアドレスとプールに属するＬＤＥＶの実記憶領域との対応関係をグラフ化したものである。アクセスビットが"１"である場合、仮想ＬＤＥＶの領域とプールＬＤＥＶの記憶領域とのマッピングが、上位装置が仮想ＬＤＥＶへアクセスコマンドを発行したことに基づくもの、すなわち仮想ＬＤＥＶの仮想記憶領域とプールＬＤＥＶの実記憶領域間の対応付けが、ホストが仮想ＬＵにアクセスしたことに基づくものであることを示している。アクセスビットが"０"である場合は、そのマッピングがそれ以外の契機によるものであることを示している。詳しくは後述する
が、例えば、ホストからの将来アクセスを予測して、割当を行った場合である。
【００４０】
図１０は、プールＬＤＥＶの記憶領域が仮想ＬＤＥＶの領域にマッピングされている状態に係わるプールＬＤＥＶ管理テーブルである。マッピングの状態は、各々のプールＬＤＥＶについて、プールＬＤＥＶのアドレス毎に設定される制御ビットの配列（制御情報）として保持されている。 プールＬＤＥＶ管理テーブルには該ビット配列へのポインタが記録されている。ビット配列の先頭をアドレス０とし, 以降アドレス順にビットが設定されている。ビットが０"ならばこのビットに対応する記憶領域は仮想ＬＤＥＶに対してマッピングされていないことを示し、"１"ならばマッピング済みであることを示している。図１０に基づくと、プールＬＤＥＶ番号０００３のＬＤＥＶでは、アドレス０,１,２の領域が仮想ＬＤＥＶにマッピングされている。プールＬＤＥＶ番号０００４のＬＤＥＶの全領域は仮想ＬＤＥＶにマッピングされていない。プールＬＤＥＶ番号０００５のアドレス０の領域は、仮想ＬＤＥＶにマッピングされている。
【００４１】
以上説明した制御テーブルは、チャネル制御部のチャネルコマンド制御プログラムがアクセス可能なメモリ空間に保持されている。制御テーブルは、図１の管理端末によってその内容を変更することができる。このメモリ空間としては、図１の共有メモリ１２０、又は、チャネル制御部のローカルメモリＬＭ１（図２）がある。
【００４２】
図１１は、ホストからＬＵにアクセスがあった場合のチャネルコマンド制御プログラムによるＡＯＵの動作を示すフローチャートである。チャネル制御部はチャネルコマンド制御プログラムに基づいて、図１１のＡＯＵ処理を実行する。チャネル制御部は、ＬＵに対する、ホストからのアクセスコマンドを受領すると（１１００）、アクセス対象ＬＵの仮想ビットがＯＮであるか否かをチェックする（１１０２）。仮想ビットがＯＦＦの場合は、ステップ１１０４に移行して、ホストのＬＵに対するアクセスは、実ボリューム（ＬＤＥＶ）にマッピングされる（図４のＬＤＥＶ番号０００１,０００２）。
【００４３】
ステップ１１０２において、仮想ビットがＯＮである場合には、ホストからのアクセス先であるＬＵのアドレスをマッピング管理用の仮想ＬＤＥＶのアドレスに変換する（１１０６）。次いで、チャネル制御部のコントローラＣＴ１は、このアドレスが図８のマッピング管理テーブルに未登録か否かを判定する（１１０８）。このアドレスが図８のマッピング管理テーブルに未登録の場合は、チャネル制御部はプール管理テーブルに基づいて、仮想ＬＤＥＶが対応するプールに属するＬＤＥＶ番号リストを取得する（１１１２）。チャネル制御部はプールＬＤＥＶのリストのＸ番目（Ｘ：＝１・・・・）のＬＤＥＶを取得する（１１１４）。チャネル制御部はＸ番目のＬＤＥＶが存在するか否かを判定する（１１１６）。
【００４４】
この判定が肯定されると、チャネル制御部は、プールＬＤＥＶ管理テーブル（図１０）からＬＤＥＶのビット配列を取得する（１１１８）。チャネル制御部は、ビット配列に"０"のビットがあるか否かを判定（１１２０）し、これが肯定された場合には、このビットに"１"を設定する（１１２２）。この判定が否定された場合には、プールＬＤＥＶリストの次の番号（Ｘ＋＋）のＬＤＥＶを取得する。ステップ１１２４では、マッピング管理テーブル（図８）に、ビット"１"にした、対応するアドレスを実アドレスとして登録する。次いで、マッピング管理テーブルのアクセスビットを"１"に設定する（１１２６）。次いで、チャネル制御部はホストからの仮想ボリューム（０００１♯）へのアクセスを、プールＬＤＥＶ番号・実アドレスへのアクセスにマッピングする（１１２８）。
【００４５】
チャネルアダプタはステップ１１０８を否定判定すると、ステップ１１１０において、図８のマッピング管理テーブルのアクセスビットが"０"  か否かを判定する。これが肯定判定されると、アクセスビットが"１"に設定され（１１３０）、チャネル制御部はホストからの仮想ボリューム（０００１♯）へのアクセスを、プールＬＤＥＶ番号・実アドレスへのアクセスにマッピングする（１１３２）。ステップ１１１６において、Ｘ番目のＬＤＥＶが存在しない場合には、チャネル制御部は管理端末に対してプールＬＤＥＶ不足エラーを通知する。図１１の処理によれば、チャネル制御部はホストから仮想ボリュームにアクセスがあると、アクセスがあった領域に実記憶領域のアドレスをマッピングする。
【００４６】
図１２は、プールＬＤＥＶの記憶領域を仮想ボリュームの記憶領域へマッピングするためのレコードを、マッピング管理テーブルから削除することによりプールＬＤＥＶの記憶領域を仮想ボリュームへのマッピングから解放して、他の仮想ボリュームに対する記憶領域に開放するなどとして有効活用するための、チャネル制御部がチャネルコマンド制御プログラムに基づいて実行するフローチャートである。先ず、チャネル制御部は、仮想ボリュームの記憶領域のうち、この解放の対象となるべきアドレスを決定する（１２００）。
【００４７】
チャネル制御部は、仮想ボリュームのアドレスが決定された後、マッピング管理テーブル（図８）から、仮想ボリュームのアドレスに対応するプールＬＤＥＶ番号・実アドレスを取得する（１２０２）。次いで、マッピング管理テーブルについて、仮想ボリュームのアドレスとＬＤＥＶ番号・実アドレスとのマッピングに関するレコードを削除する（１２０４）。次いで、チャネルアダプタは、プールＬＤＥＶ管理テーブル（図１０）の該プールＬＤＥＶについて、仮想ＬＤＥＶのアドレスに対応する、プールＬＤＥＶのアドレスについて、このアドレスに対するビットを"０"に置換する（１２０６）。これにより、プールＬＤＥＶの実記憶領域がマッピングから解放される。
【００４８】
次に、解放の契機の第１の例について説明する。第１の例に係わる契機は、ボリュームペアの解除を契機とする解放である。図１３はボリュームペアを説明するブロック図である。図１３において、ＬＵ１とＬＵ２との間に、バックアップなどの目的でボリュームペアが形成されている。ＬＵ１が副ボリュームであり、ＬＵ２が正ボリュームである。ホストのアクセスはＬＵ２に対して行われる。チャネル制御部１１０は、定期的に正ボリュームＬＵ２（コピー元）のコピーを実行してボリューム内容のスナップショットを副ボリュームＬＵ１に対して作成する。副ボリュームＬＵ１は仮想ＬＤＥＶ１に対応付けられており、この仮想ＬＤＥＶはプール内のプールＬＤＥＶにマッピングされている。副ボリュームに対応するプールＬＤＥＶのデータは、テープデバイスなど外部媒体にバックアップされる。正ボリュームと副ボリュームとのペア関係が解除された場合、コピー先ボリューム(副ボリューム)ＬＵ１の内容は不要である。この副ボリュームが仮想ＬＤＥＶにマッピングされている場合、ペア関係の解除を契機として、仮想ＬＤＥＶとプールＬＤＥＶの記憶領域とのマッピングを解消してプールＬＤＥＶの記憶領域をマッピング前の仮想ボリュームから解放する。
【００４９】
図１４は、チャネル制御部１１０におけるボリュームペア制御プログラムとチャネルコマンド制御プログラムとの関係を示すブロック図である。ボリュームペア制御プログラムは、チャネルコマンド制御プログラムに対してコマンドを発行し、ＬＵ間のコピーを制御する。チャネル制御部は、ペアボリュームの設定、 解除、ステータスの変更などの制御を管理端末からの指示で行い、又は、上位装置がチャネルＩ/Ｆを経由して発行するコマンドに依る指示によって行うこともできる。チャネル制御部はボリュームペア制御プログラムからのペアボリューム解除の通知を受けてプール領域（実ボリューム）の記憶領域を解放する。
【００５０】
図１５は、ボリュームペア管理テーブルである。ペア関係にある正副ボリュームが、それぞれチャネル番号とＬＵＮの組で保持される。ボリュームペア制御プログラムはペア関係が設定されると、そのペアに対応するレコードを生成し、ペア関係が解除されると該レコードを削除する。ステータスが"P"である場合、ボリュームペアは「ペア状態」にある。 同様に"S"である場合は「サスペンド状態」、 "C"である場合は「コピー状態」である。ペア状態(P)は, 正ボリュームで内容が更新されると、それが即座に副ボリュームにコピーされ、 正副ボリュームの内容が一致していることを示す。サスペンド状態(S)は、 この更新コピー処理が停止している状態を示す。コピー状態(C)は、 サスペンド状態からペア状態に移行する間、正副ボリュームの内容の差分をコピー中であることを示す。ボリュームの内容の一致状態はボリュームペア毎にビット配列に保持され、ボリュームペア管理テーブルにはビット配列へのポインタが保持される。ビット配列の先頭をアドレス０とし, 以降アドレス順にビットが"１"ならばアドレスの記憶領域は一致、" ０"ならば不一致である。このテーブルはチャネル制御部のプログラムがアクセス可能なメモリ空間に保持される。
【００５１】
図１６はペアボリュームのペア解除に応じた解放の動作を示すフローチャートである。チャネル制御部は、ボリュームペア制御プログラムとチャネルコマンド制御プログラムとに基づいて、図１６の処理を実行する。チャネル制御部は上位装置からペアボリュームのペアを解除する解除指示を受領する（１６００）。チャネル制御部は、副ボリュームのＬＵが仮想ボリュームＬＤＥＶにマッピングされているかをチェックする（１６０２）。この判定が肯定されると、ボリュームペア制御プログラムは、仮想ＬＤＥＶの全領域のアドレスについて解放をチャネルコマンド制御プログラムについて指示する（１６０４）。
【００５２】
次いで、ボリュームペア管理テーブル（図１５）からボリュームペアのレコードを削除する（１６０６）。チャネルコマンド制御プログラムは、ボリュームペア制御プログラムから解放指示を受け取ると、指示された仮想ＬＤＥＶのアドレスについてマッピングを解放する。したがって、この記憶領域に関するマッピングを解放することにより、記憶領域の利用効率が向上する。
【００５３】
次に解放処理の他の実施形態について説明する。図１７は、ＡＯＵ技術において、ストレージシステムがホストから仮想ボリュームにアクセスしていない仮想ボリュームの領域に対して、事前にプールＬＤＥＶの記憶領域をマッピングするという"投機的割当"について説明したフローチャートである。チャネル制御部がホストから受領したアクセスコマンドに応じて仮想ＬＤＥＶとプールＬＤＥＶのマッピングを生成する場合、該アクセスコマンドのアクセス先アドレスに続いて他のアドレスにもアクセスがあるという実情とに基づいて、このアクセスが予測される記憶領域、例えば、ホストからアクセスがあった領域
の直後のアドレスに対して(ホストからのアクセスが予測したアドレスにあるか否かに拘わらず)マッピングを実行する。これは一般に、ホストからのアクセスはＬＵの特定の領域に集中するという予測を基にしている。但し、ホストから仮想ボリュームに対するアクセスのパターンによっては次にアクセスされる領域の予測内容は異なることがあり得る。ここでは、投機的割当を説明するに際して、 次にホストからアクセスがあるであろうアドレスの予測の一例として、ホストによって特定されたアドレスに続く幾分かのアドレス範囲、特に「直後」を例示したが、この他の予測, 例えばある種のファイルシステムではLUを「シリンダグループ」という単位に分割して利用するので、あるアドレスにアクセス
があった場合はそのアドレスが属するシリンダグループに対して集中的に(不連続なアドレスであっても)割当を行なう、 という「予測」の仕方も考えられる。これら予測した領域に上位装置であるホスト計算機からのアクセスが無い場合に、予測した領域に対する仮想ボリュームへの割当を解放することで記憶領域を有効利用できる。
【００５４】
図１７において、チャネル制御部がホストからのアクセスコマンドを受領すると（１７００）、アクセス対象のＬＵに仮想ボリュームが割り当てられているか、即ち、仮想ビットが"ＯＮ"か否かを判定する（１７０２）。これが否定判定されると、チャネル制御部はホストからのアクセスが実ボリュームに対してあったと判定し、ホストからのアクセスをマッピング管理テーブルに基づいて対応する番号のＬＤＥＶへのアクセスにマッピングする（１７０８）。ステップ１７０２の判定において肯定判定されると、ホストからのＬＵに対するアクセス先アドレスを、マッピング管理用の、仮想ボリュームのアドレス（ａ１）に変換する（１７０４）。さらに、ホストからのＬＵに対するアクセス先アドレスの直後のアドレスを仮想ボリュームのアドレス（ａ２）に変換する（１７０６）。
【００５５】
次いで、チャネル制御部は、アドレスＡ（ａ１又はａ２）はマッピング管理テーブル（図８）に未登録か否かをチェックする（１７０９）。これが否定された場合、即ち、アドレスａ１が登録されている場合、マッピング管理テーブルに基づいて、チャネル制御部はアドレスａ１を対応するＬＤＥＶ番号によって特定されるＬＤＥＶおよび実アドレスへマッピングする（１７１２）。ステップ１７０９において、肯定判定された場合は、プール管理テーブル（図７）からプールＬＤＥＶ番号リストを取得する（１７１０）。チャネル制御部はプールＬＤＥＶリストのＸ番目（１番目）のＬＤＥＶを取得する（１７１４）。チャネル制御部は、Ｘ番目のＬＤＥＶが存在するか否かをチェックする（１７１６）。これが肯定判定された場合、チャネル制御部は、プールＬＤＥＶ管理テーブルから該ＬＤＥＶのビット配列を取得する（１７１８）。次いで、チャネル制御部はビット配列に"０"のビット配列があるか否かをチェックする（１７２４）。
【００５６】
この判定が否定された場合、ステップ１７１４に移行して、チャネル制御部は（Ｘ＋１）番目のＬＤＥＶを取得する。この判定が肯定された場合には、"０"のビットを"１"に置換する（１７２６）。次いで、チャネル制御部は、マッピング管理テーブル（図８）に該ビットに対応するアドレスを実アドレスとして登録する（１７２８）。ステップ１７３０において、仮想ボリュームのアドレス（Ａ）がａ１であるか否かが判定され、これが肯定された場合は、チャネル制御部はマッピング管理テーブル（図８）のアクセスビットを"１"に設定する（１７３４）。これが否定判定された場合、チャネル制御部はアクセスビット"０"に設定する（１７３４）。アクセスビット"０"は、既述のとおりマッピングがホストから仮想ボリュームへのアクセスに依らないこと、すなわち"投機的割当"であることを示している。
【００５７】
次いで、チャネルアダプタは、仮想ボリュームに対するホストのアクセスをプールＬＤＥＶ番号・実アドレスへのアクセスにマッピングする。ステップ１７３８において、ホストのアクセス先アドレスがａ１である場合（肯定判定）の、アドレスがａ２に置き換えられた割当処理が繰り返される。すなわち、ステップ１７０９に処理がリターンして既述の各処理が繰り返される。ステップ１７１６において、Ｘ番目のＬＤＥＶが存在しない場合には、ステップ１７２０に処理が移行する。ここでは、ホストのアクセス先アドレスがａ１であるか否かが判定され、アクセス先アドレスがａ１の場合、チャネル制御部はプール
ＬＤＥＶ不足エラーを判定する（１７２２）。一方、アクセス先がａ２の場合は、ホストからのアクセスが現実にあるわけではないのでこのＬＤＥＶ不足エラー処理を行わず処理を終了する。
【００５８】
以上説明した処理によれば、ホストから仮想ボリュームにアクセスがあることに依り、ホストのアクセス先アドレスにプールに属する記憶領域が割り当てられると共に、ホストがアクセスするであろう、仮想ボリュームのアクセス先をチャネル制御部が予測して、この予測アドレスに記憶領域をあらかじめマッピングしておく。したがって、ホストが予測したアドレスに実際にアクセスした場合には、マッピングの処理を経ることなく、マッピングされた記憶領域に書き込みコマンドを直ちに実行することができる。
【００５９】
図１８のフローチャートに示すように、アクセスビットが"０"の記憶領域にホストがアクセスした場合、アクセスビットは"１"に変更される。チャネル制御部は、ホストからのアクセス先アドレスをマッピング管理用のアドレスに変更する（１８００）。チャネル制御部はマッピング管理テーブルからＬＤＥＶ番号・実アドレスを取得する（１８０２）。チャネル制御部は図８に示す制御テーブルのアクセスビットが"０"であるか否かを判定して（１８０４）、これが肯定判定された場合は、アクセスビットを"１"に設定する（１８０６）。
【００６０】
図１９は、アクセスビットが"０"の記憶領域について、マッピングを解放するフローチャートである。アクセスビットが"０"のまま残っている、ＬＤＥＶの記憶領域はホストからのアクセスが当面期待し得ない余剰な領域のまま放置されることになる。これでは記憶資源を有効活用されない。そこで、この余剰領域の整理を目的として、余剰領域についてのマッピングを解放することとした。ステップ１９００において、チャネル制御部は、マッピング管理テーブル（図８）の１番目のレコードを取得し、該レコードについてのアクセスビットが"０"であるか否かをチェックする（１９０２）。これが肯定判定され
た場合は、該レコードのプールＬＤＥＶ番号と実アドレスを取得した上で（１９０３）、このレコードを削除する（１９０４）。次いで、プールＬＤＥＶ管理テーブルの該プールＬＤＥＶについて、該アドレスのビットを"0"にする（１９０５）。
【００６１】
以上の処理は、最終番目のレコードまで処理が継続される（１９０６）。マッピング管理テーブルのレコードのうち、 アクセスビットが"０"であるものは実際にはホストからアクセスされていない記憶領域である。このような余剰領域について、 定期的にマッピング管理テーブルの全レコードを走査しアクセスビットに基づいてマッピング情報の削除を行う。アクセスビットは、ストレージシステムが解放処理を行う場合における、解放する、或いは解放しないを判定するための制御情報である。
【００６２】
次に、マッピングを解放する第３の例について説明する。図２０はこの例を説明するブロック図である。この例は、ストレージシステムがペアボリュームからバックアップ取得後にマッピングされた記憶領域を解放することを示している。ＬＵ１とＬＵ２とがペアボリュームになっている。コピー元ＬＵ(正ボリューム)がマッピングされるのは通常のＬＤＥＶでも, 仮想ＬＤＥＶでもよい。コピー元ＬＵ３は実記憶領域を備えるＬＤＥＶに直接マッピングされている。コピー元ＬＵ２は仮想ＬＤＥＶ２にマッピングされている。ストレージシステムは、定期的にコピー(再同期)を行い、ボリューム内容のスナップショット
をコピー先(副ボリューム)ＬＵ１に作成、そこからテープデバイスにデータバックアップを取得する。
【００６３】
テープデバイス２１０はホスト２００Ａに接続されていてもよいし、 テープデバイス２１２がストレージに接続されて、ホストからのEXTENDED COPY命令によりストレージシステムがテープデバイス２１２へのバックアップを制御しても良い。この再同期、バックアップ取得という一連の処理が終了すると、副ボリュームＬＵ１の記憶内容は不要になる。この副ボリュームが仮想ＬＤＥＶにマッピングされているので、それに割り当てられたプールＬＤＥＶの記憶領域のマッピングを解消して記憶領域を解放する。上記の再同期、バックアップ取得、領域解放という一連の処理は、ホスト上で動作するバックアップアプリケーションＡＰによって行われる。そのため、アプリケーションからストレージサブシステムに対して、領域解放の指示をＩ／Ｏパスやネットワークを通じて送出する。
【００６４】
図２１に示すように、バックアップアプリケーションは、チャネルコマンド制御プログラムとボリュームペア制御プログラムにコマンドを発行し、ＬＵのスナップショット取得とテープデバイス２１２へのコピーを行う。ボリュームペア制御プログラムに対するコマンド発行はネットワークを経由して制御端末から行うこともできるし、チャネルＩ／Ｆを経由して行うこともできる。テープデバイスの制御はバックアップアプリケーション自身が行うこともできるし、チャネルコマンド制御プログラムが制御するようコマンドで指示することもできる。
【００６５】
図２２は、ペアボリュームからテープデバイスにバックアップを取得した後、記憶領域を解放する動作を示すフローチャートである。ホストのバックアップアプリケーションは、ペアボリューム間のコピーをボリュームペア制御プログラムに対して指示する（２２００,２２１４）。ボリュームペア制御プログラムはボリュームペアのステータスをチェックする（２２１６）。ステップ２２１６が肯定判定(ステータスが"P")の場合、は何もせずバックアップアプリケーションの指示を待つ。ステップ２２１６において否定判定の場合は、チャネルコマンド制御プログラムにペアボリューム間のコピーを指示する（２２１８）。このときステータスは"Ｃ"に変更される。ボリュームペア制御プログラムは、チャネルコマンド制御プログラムに依るコピー完了を受けてステータスを"Ｐ"にする。
【００６６】
バックアップアプリケーションは、ペアステータスが"Ｐ"になるまでウエイトし（２２０２）、次いで、ペアボリュームのコピー停止を指示する（２２０４）。ボリュームペア制御プログラムは、ペアボリュームのコピー停止を受けてステータスを"Ｓ"に変更する（２２２６）。バックアップアプリケーションは副ボリュームからテープへのコピーを指示する（２２０６）。この指示を受けてチャネルコマンド制御プログラムは副ボリュームからテープへコピーを実行する（２２３０）。バックアップアプリケーションはコピー完了までウエイトし（２２０８）、副ボリュームがアクセスするＬＵは仮想ＬＤＥＶかを判定する。これが肯定判定された場合は、バックアップアプリケーションは仮想ボリュームＬＤＥＶの全領域のアドレスについてマッピングを解放することをチャネルコマンド制御プログラムに指示する。
【００６７】
チャネルコマンド制御プログラムは、コピー完了と解放指示を受けて、仮想ＬＤＥＶの全領域のアドレスについて、このアドレスにマッピングされた、プール領域のＬＤＥＶの記憶領域を仮想ボリュームへのマッピングから解放する（２２３２）。以上の処理によって、ボリュームペアの関係にあるボリューム間でコピーが完了する過程で、副ボリュームに対応する仮想ボリュームの記憶領域が解放される。
【００６８】
次に、記憶領域の解放に関する他の実施形態について図２３を利用して説明する。この実施形態は、ホスト２００上で動作するアプリケーションが削除した記憶領域に関するマッピングを解放するというものである。ここでは、アプリケーションソフトウエアの一例としてＤＢＭＳ（データベースマネージメントシステム）を取り上げる。ＤＢＭＳはＬＵの記憶領域に対して、表領域、索引、ログといったデータの読み書きを行う。これらのデータはいずれも、あるサイズの領域(セグメント)を占有し、その占有する領域内に論理的な構造が形成されている。このセグメントは、 さらに細かい領域(データブロック)に分割されている。ＤＢＭＳはその動作中、ＬＵ内のセグメントの論理的構造に基づいて、データを記録・更新・削除する。このため、ＤＢＭＳはセグメントＳ1のあるデータブロックＳ２が未使用であるか、使用中であるか、という情報を管理する表を維持している。この表をフリーリストＳ３と呼ぶ。これらデータブロックのあるＬＵが仮想ＬＤＥＶに対応する場合、ホスト(ＤＢＭＳ)からアクセスがあるとマッピングが生成される。この例ではデータブロックのサイズの単位と、マッピングされる領域のサイズの単位が等しいが、この二つのサイズの関係はこれに限定されるものではない。
【００６９】
図２４は、ＤＢＭＳとチャネルコマンド制御プログラムとの関係を示すブロック図である。ＤＢＭＳは、チャネルコマンド制御プログラムにコマンドを発行しＬＵにアクセスする。ホストは、記憶領域のマッピングを削除、解放するようチャネル制御部に指示する。この指示のコマンド発行はネットワークを経由してＳＶＰから行うこともできるし、チャネルＩ／Ｆを経由して行うこともできる。図２５は、フリーリストを示すテーブルである。フリーリストはセグメント毎に存在する。データブロック番号で特定される各データブロックについて、使用ビットが"１"である場合は使用中、"０"である場合は未使用を示
す。
【００７０】
図２６は、ＤＢＭＳによるデータの記録を実行するフローチャートである。図２６において、ＤＢＭＳはフリーリストを走査し（２６００）、使用ビットが"０"のデータブロックがあるか否かをチェックする（２６０２）。この判定が肯定された場合には、チャネル制御部はフリーリストのこのデータブロックについて使用ビットを"１"に設定する（２６０４）。次いで、当該データブロックにデータを書き込む（２６０６）。ステップ２６０４において、否定判定されるとデータブロック不足エラー処理を行う（２６０８）。
【００７１】
図２７は、ＤＢＭＳによるデータの削除を実行するフローチャートである。ＤＢＭＳはフリーリストにおいて削除対象データブロックの使用ビットを"０"に設定する（２７００）。削除対象データブロックのアドレスを指定し領域解放コマンドを発行する。
【００７２】
図２８は、チャネル制御部がフリーリストを参照して、記憶領域の解放を実行するためのフローチャートである。チャネル制御部は、フリーリストから使用ビットが"０"であるデータブロックを抽出する（２８００）。そして、該データブロックのアドレスをマッピング管理用の、仮想ボリュームのアドレスに変換する（２８０２）。次いで、このアドレスが図８のマッピング管理テーブルに登録されているか否かをチェックする（２８０４）。これが肯定判定された場合には、このアドレスに対応したプールＬＤＥＶの記憶領域を解放する（２８０６）。チャネルコマンド制御プログラムは、図２８の処理を定期的に
実行する。
【００７３】
図２９は、図２８の変形例に係わるもので、ホストからチャネル制御部に対するＩ／Ｏを監視するプログラムによって、記憶領域を解放するための、プログラムの動作に係わるブロック図である。ホストのＩ／Ｏ監視プログラムは、ＤＢＭＳから発行されるアクセスコマンドを監視し、フリーリストのあるレコードについて使用ビットを"０"に設定するアクセスを認識した場合、チャネルコマンド制御プログラムに対してそのレコードが示すアドレスのマッピングを削除、解放するよう指示する。この指示のコマンド発行はネットワークを経由してＳＶＰから行うこともできるし,チャネルＩ／Ｆを経由して行うこともできる。図３０に示すように、Ｉ／Ｏ監視プログラムをチャネル制御部に実装しても良い。
【００７４】
図３１は、図２９の動作を示すフローチャートである。Ｉ/Ｏ監視プログラムはホストからのアクセスコマンドを検知して（３１００）、このアクセスコマンドがフリーリストへの書き込みか否かをチェックする（３１０２）。このチェックが肯定された場合は、あるデータブロックの使用ビットを"０"に設定するようなコマンドであるかどうかをチェックする（３１０４）。この判定が肯定判定されると、この使用ビットに対応するデータブロックのアドレスをマッピング管理用アドレスに変換する（３１０６）。次いで、アドレスがマッピング管理用テーブルに登録されているか否かをチェックして、これが肯定判定
されるとこのアドレスに対応する記憶領域を解放する。
【００７５】
以上説明した記憶領域の解放処理において、解放処理を直ちに実行するのではなく、マッピング管理テーブルの解放すべき実アドレスに対してアクセスビットを"０"にまず設定し、然るべき期間経過の後図１９の解放処理を実行するようにしても良い。これにより解放処理を遅延させることができる。また、図３２のフローチャートのようにしても良い。即ち、チャネル制御部は、プールＬＤＥＶ管理テーブルから全プールＬＤＥＶのビット配列を取得する（３０００）。次いで、全ビットのうち"０"となっているビットの割合を算出して（３００２）、ある値よりこれが多いか否かを判定する（３００４）。この判定が否定された場合は、記憶領域が不足しつつあるとして、チャネル制御部はマッピング管理テーブルを走査して、図１９の処理に基づいて解放処理を行う（３００６）。
【００７６】
図３３は、解放する記憶領域のデータを消去する処理を示すフローチャートである。チャネル制御部は、解放する記憶領域のアドレスを決定する（３３００）。次いで、マッピング管理テーブルから、該アドレスに対応するプールＬＤＥＶ番号・実アドレスを取得する（３３０２）。次いでマッピング管理テーブルの該レコードを削除する（３３０４）。チャネル制御部はプールＬＤＥＶ管理テーブルの該プールＬＤＥＶについて該アドレスのビットを"０"に置換する（３３０６）。次いで、該プールＬＤＥＶの該アドレスの記憶領域に特定データパターンを書き込む（３３０８）。
【００７７】
特定のデータパターンの書き込みの例としては, 全ビットを"０"にする、ランダムなビット列にする、 またこれらを複数回繰り返すことがある。このデータ消去によって, 該記憶領域に再びマッピングが生成される際に, もともと記録されていたデータが無関係な他のホストやアプリケーションによって読み出されるといったセキュリティ上のリスクを低減することができる。
【００７８】
なお、プールＬＤＥＶとして、他のストレージシステムの外部記憶資源を利用することもできる。この場合、第１のストレージシステムの仮想ボリュームに第２のストレージシステムの記憶資源が割り当てられる。上位装置は第１の仮想ボリュームにアクセスすることによって、第２のストレージシステムの記憶資源にアクセスすることができる。
【００７９】
図３４は、ストレージシステム６００に他のストレージシステム６００Ａがストレージシステム６００の外部から接続されている状態を示している。なお、図３４を図２と対比して参照されたい。図３４において、５０１はネットワークであり、５０２はＩ／Ｏパスであり、５０３ＡはチャネルＩ／Ｆ（エクスターナルモード）、５０３Ｂ，５０３ＣはチャネルＩ／Ｆ（ターゲットモード）、３０１はハードディスクユニット、６０１は外部ストレージサブシステムの内の外部ＬＵを示す。
【００８０】
チャネルＩ／Ｆ（ターゲットモード）とは、ホストがストレージサブシステムにアクセスするインタフェースであり、チャネルＩ／Ｆ（エクスターナルモード）とは、ストレージサブシステムが外部ストレージサブシステムにアクセスするインタフェースであり、外部ＬＵとは、外部ストレージサブシステム内に定義されたボリューム(ＬＵ)の一群をいう。
【００８１】
図３５は、ホストが、ストレージシステム６００の仮想ボリュームを介して外部ＬＵをストレージシステム６００のボリュームとして認識している状態を示すブロック図である。１２Ｄは外部ストレージシステム６００Ａ内に定義されて設けられた外部ＬＤＥＶである。外部ＬＤＥＶ１２ＤはＬＵ１０に割り当てられている。１２Ｅは外部ＬＤＥＶであり、ストレージシステム６００のＬＤＥＶ１２Ｂ（１２Ｃ）と同様にプール１８を構成している。ストレージシステム６００の仮想ＬＤＥＶ１６はプール１８をマッピングに使用している。
【００８２】
外部ＬＤＥＶとは、チャネルコマンド制御プログラムが、エクスターナルモードのチャネルＩ／Ｆを経由して認識した外部ストレージサブシステムのＬＵを、仮想的にＬＤＥＶと同等の記憶領域としたものである。通常の(ＲＡＩＤ制御プログラムによって提供される)ＬＤＥＶと同様に、ＬＵにマップして上位ホストからのアクセスを受け付けることもできるし、プールの一員として仮想ＬＤＥＶとのマッピングに使用することもできる。プールを構成するＬＤＥＶは, 通常のＬＤＥＶのみであっても外部ＬＤＥＶのみであってもよいし、これらが混在してもよい。外部ＬＤＥＶは、ＬＤＥＶの一覧を示すテーブル（図６に示す）の上では通常のＬＤＥＶと同等に扱われる。
【図面の簡単な説明】
【００８３】
【図１】本発明が適用されるストレージシステムを含んだ、記憶制御システムを示すハードウエアブロック図である。
【図２】図１に示す記憶制御システムの機能ブロック図である。
【図３】仮想ボリュームとプールとの関係を示すブロック図である。
【図４】ＬＵ管理テーブルである。
【図５】仮想ＬＤＥＶ管理テーブルである。
【図６】ＲＡＩＤ制御プログラムが、チャネル制御部及び上位装置に対して提供するＬＤＥＶの一覧を示すテーブルである。
【図７】プール管理テーブルである。
【図８】マッピング管理テーブルであり
【図９】図８の制御テーブルで示された、仮想ＬＤＥＶのアドレスとプールに属するＬＤＥＶの実記憶領域との対応関係を示すブロック図である。
【図１０】プールＬＤＥＶの記憶領域が仮想ＬＤＥＶの領域にマッピングされている状態を示すプールＬＤＥＶ管理テーブルである。
【図１１】ストレージシステムのＡＯＵ処理動作を示すフローチャートである。
【図１２】チャネル制御部がチャネルコマンド制御プログラムに基づいて実行するフローチャートである。
【図１３】ボリュームペアを説明するブロック図である。
【図１４】チャネル制御部におけるボリュームペア制御プログラムとチャネルコマンド制御プログラムとの関係を示すブロック図である。
【図１５】ボリュームペア管理テーブルである。
【図１６】ペアボリュームのペア解除に応じた解放の動作を示すフローチャートである。
【図１７】"投機的割当"について説明したフローチャートである。
【図１８】アクセスビットに対する処理動作を説明するフローチャートである。
【図１９】アクセスビットが"０"の記憶領域について、マッピングを解放するフローチャートである。
【図２０】コピーペアのボリュームを用いたバックアップ動作を示す、機能ブロック図である。
【図２１】バックアップアプリケーションとチャネル制御部との動作関係を示す機能ブロック図である。
【図２２】バックアップの動作を示すフローチャートである。
【図２３】データベースマネジメントシステム(ＤＢＭＳ)に関するアプリケーションプログラムの動作を示す、ストレージシステムの機能ブロック図である。
【図２４】ＤＢＭＳとチャネルコマンド制御プログラムとの関係を示すブロック図である。
【図２５】フリーリストを示すテーブルである。
【図２６】ＤＢＭＳによるデータの記録を実行するフローチャートである。
【図２７】ＤＢＭＳによるデータの削除を実行するフローチャートである。
【図２８】チャネル制御部がフリーリストを参照して、記憶領域の解放を実行するためのフローチャートである。
【図２９】ホストからチャネル制御部に対するＩ／Ｏを監視するプログラムによって、記憶領域を解放するための、プログラムの動作に係わるブロック図である。
【図３０】図２９の変形例である。
【図３１】図２９に係わるシステムの動作を示すフローチャートである。
【図３２】プールＬＤＥＶ管理テーブルのビット配列に基づいて解放を実行するためのフローチャートである。
【図３３】解放される記憶領域のデータを消去するためのフローチャートである。
【図３４】ストレージシステムに他のストレージシステムが外部から接続しているシステムを示すブロック図である。
【図３５】図３４のシステムにおける、ストレージシステム間のボリュームの対応関係を示すブロック図である。
【符号の説明】
【００８４】
１００  コントローラ、１１０  チャネル制御部、１４０  ディスク制御部、２００  
上位装置、６００  ストレージシステム
【図１】
2007310861.tif 000003
【図２】
2007310861.tif 000004
【図３】
2007310861.tif 000005
【図４】
2007310861.tif 000006
【図５】
2007310861.tif 000007
【図６】
2007310861.tif 000008
【図７】
2007310861.tif 000009
【図８】
2007310861.tif 000010
【図９】
2007310861.tif 000011
【図１０】
2007310861.tif 000012
【図１１】
2007310861.tif 000013
【図１２】
2007310861.tif 000014
【図１３】
2007310861.tif 000015
【図１４】
2007310861.tif 000016
【図１５】
2007310861.tif 000017
【図１６】
2007310861.tif 000018
【図１７】
2007310861.tif 000019
【図１８】
2007310861.tif 000020
【図１９】
2007310861.tif 000021
【図２０】
2007310861.tif 000022
【図２１】
2007310861.tif 000023
【図２２】
2007310861.tif 000024
【図２３】
2007310861.tif 000025
【図２４】
2007310861.tif 000026
【図２５】
2007310861.tif 000027
【図２６】
2007310861.tif 000028
【図２７】
2007310861.tif 000029
【図２８】
2007310861.tif 000030
【図２９】
2007310861.tif 000031
【図３０】
2007310861.tif 000032
【図３１】
2007310861.tif 000033
【図３２】
2007310861.tif 000034
【図３３】
2007310861.tif 000035
【図３４】
2007310861.tif 000036
【図３５】
2007310861.tif 000037