(57)【要約】【解決課題】上位装置がアクセスするボリュームに、上位装置からのアクセスに応じて、記憶領域を動的に割り当てるように構成したストレージシステムにおいて、一つのボリュームへの記憶領域の割り当てが他のボリュームへの記憶領域の割り当てに影響がないようするストレージシステムを提供する。【解決手段】仮想ボリュームに割り当てられる記憶領域をプール化し、ストレージシステムはホストから仮想ボリュームにアクセスがあると、プール内の記憶領域を仮想ボリュームに割り当てる。この際、ホスト或いは仮想ボリュームに、記憶領域の割り当てに関する制限を設け、この制限にホストからのアクセスが抵触する場合には、プールの記憶領域を仮想ボリュームに割り当てることなく、ホストにライトエラーを返す。【選択図】図５
2007304794.tif 000002
【特許請求の範囲】
【請求項１】
上位装置からのアクセスを受けるインタフェースと、記憶資源と、前記上位装置と前記記憶資源との間のデータの入出力を制御するコントローラと、この制御を実行する上で必要な制御情報を記憶する制御メモリと、前記上位装置が認識する仮想ボリュームと、前記仮想ボリュームに割り当てられ、前記記憶資源から提供される、複数の記憶領域を備えるプールと、を備え、前記コントローラは、前記上位装置からの前記仮想ボリュームへのアクセスに基づいて、前記プールから前記仮想ボリュームに前記記憶領域を割り当て、前記上位装置が前記仮想ボリュームに割り当てられた記憶領域にアクセスするように構成された、ストレージシステムであって、
前記制御メモリは前記割り当てを制限する制限制御情報を備え、
前記コントローラは、前記仮想ボリュームに割り当て可能な記憶領域が前記プールに含まれている状態で、前記制限制御情報に基づいて、前記記憶領域の前記仮想ボリュームへの割り当てを制限する、ストレージシステム。
【請求項２】
前記メモリは前記制限情報として、前記上位装置から前記仮想ボリュームへのライトアクセスにより当該仮想ボリュームへ割り当てられる記憶領域に対する制限値を含み、
前記コントローラは、当該仮想ボリュームに割り当てられた記憶領域の量がこの制限値に抵触した場合に、前記ライトアクセスを制限する、請求項１記載のストレージシステム。
【請求項３】
前記メモリは、前記制限情報として、前記仮想ボリュームへの記憶領域の割り当て速度に関する制限値を備え、当該割り当て速度の演算値が当該制限値に抵触した場合に、前記コントローラは前記ライトアクセスを制限する、請求項２記載のストレージシステム。
【請求項４】
前記制限値が前記上位装置に対して設定されており、前記コントローラは当該上位装置からのライトアクセスに基づく前記記憶領域の割り当てが前記制限値に達した場合に、このライトアクセスに対して警報を発する、請求項２記載のストレージシステム。
【請求項５】
前記制限値が前記上位装置に対して設定されており、前記コントローラは当該上位装置からのライトアクセスに基づく前記記憶領域の割り当てが前記制限値に達した場合、このライトアクセスをエラーとする請求項２記載のストレージシステム。
【請求項６】
前記制限値が前記仮想ボリュームに対して設定されており、前記コントローラは当該上位装置からのライトアクセスに基づく前記記憶領域の割り当てが前記制限値に達した場合に、このライトアクセスに対して警報を発する、請求項２記載のストレージシステム。
【請求項７】
前記制限値が前記仮想ボリュームに対して設定されており、前記コントローラは当該上位装置からのライトアクセスに基づく前記記憶領域の割り当てが前記制限値に達した場合、このライトアクセスをエラーとする、請求項２記載のストレージシステム。
【請求項８】
前記コントローラは、前記プール内の前記仮想ボリュームへの割り当て済みの前記記憶領域が、当該プールに対して設けられた制限値を越えると、前記ホストからのライトアクセスに応じた前記仮想ボリュームへの前記記憶領域の割り当てを制限する、請求項２記載のストレージシステム。
【請求項９】
前記上位装置で稼動するアプリケーションソフトウエアに対して、前記制限値が設定され、前記コントローラは、当該アプリケーションからのライトアクセスを制限する、請求項２記載のストレージシステム。
【請求項１０】
前記コントローラは、前記仮想ボリュームに対するライトアクセス速度が高い、前記上位装置で稼動するアプリケーションソフトウエアに対して、当該ライトアクセスを制限する、請求項８記載のストレージシステム。
【請求項１１】
前記上位装置の種類に応じて、前記制限値が変更される、請求項２記載のストレージシステム。
【請求項１２】
前記仮想ボリュームの用途に応じて、前記制限値が変更される、請求項２記載のストレージシステム。
【請求項１３】
上位装置からのアクセスを受けるインタフェースと、記憶資源と、前記上位装置と前記記憶資源との間のデータの入出力を制御するコントローラと、この制御を実行する上で必要な制御情報を記憶する制御メモリと、前記上位装置が認識する仮想ボリュームと、前記仮想ボリュームに割り当てられ、前記記憶資源から提供される、複数の記憶領域を備えるプールと、を備え、前記コントローラは、前記上位装置からの前記仮想ボリュームへのアクセスに基づいて、前記プールから前記仮想ボリュームに前記記憶領域を割り当て、前記上位装置が前記仮想ボリュームに割り当てられた記憶領域にアクセスするように構成された、ストレージシステムであって、
前記制御メモリは前記割り当てを制限する制限制御情報として、前記上位装置から前記仮想ボリュームへのライトアクセスにより当該仮想ボリュームへ割り当てられる記憶領域に対する制限値を含み、そして、この制限値は、前記上位装置と前記仮想ボリュームに対してそれぞれ設定されており、
前記コントローラは、前記上位装置からのライトアクセスに基づく前記記憶領域の割り当てが、前記上位装置に対する制限値及び前記仮想ボリュームに対する制限値の少なくとも一方に抵触した場合には、前記上位装置からのライトアクセスを制限するようにした、ストレージシステム。
【請求項１４】
前記ライトアクセスの制限が予め定められた特定の上位装置に対して設定される、ストレージシステム。
【請求項１５】
複数の上位装置がそれぞれアクセスする複数の仮想ボリュームを備え、異なる制限値が各上位装置と各仮想ボリュームに設定されている、ストレージシステム。
【請求項１６】
上位装置がアクセスするボリュームに、上位装置からのアクセスに応じて、記憶領域を動的に割り当てるように構成されたストレージシステムにおける記憶制御方法であって、
前記ボリュームに割り当てられる記憶領域をプール化し、上位装置から前記ボリュームにアクセスがあると、プール内の記憶領域を前記ボリュームに割り当てるとともに、前記上位装置及び／又は前記ボリュームに、前記記憶領域の割り当てに関する制限を設け、この制限に前記上位装置からのアクセスが抵触する場合には、前記プールの記憶領域を前記ボリュームに割り当てることなく、上位装置にライトアクセスエラーを返す、ストレージシステムにおける記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージシステムに係わり、より詳しくは、後述するAllocation On Use（以下”ＡＯＵ”という。)、を利用するストレージシステム及びストレージシステムにおける記憶制御方法に関するものである。
【背景技術】
【０００２】
ストレージシステムと、このストレージシステムにネットワークなどの通信経路を介して接続するサーバやホストコンピュータなどの上位装置とを備えた、コンピュータシステムで扱われるデータ量の増加に伴い、ストレージシステムが備える記憶領域が大容量化されてきている。ストレージシステムは、上位装置がアクセス可能なボリュームを論理的に定義し、この論理ボリュームを構成する物理的記憶領域に上位装置がアクセスすることによって、記憶デバイスに対するデータの入出力が可能となる。
【０００３】
最近では、上位装置が取り扱うデータ量が大幅に増えていることから、論理ボリュームの記憶容量である、ボリュームサイズを大幅に増やさなくてはならなくなっている。最初から大きなサイズの記憶領域を持つ論理ボリュームを上位装置に割り当てておけば、上位装置にとって記憶容量の不足は起こらず、途中で上位装置に割り当てられている記憶領域のサイズを拡大する必要もない。しかしながら、上位装置である計算機がそれほど大量のデータを使わない場合には、計算機に割り当てられた記憶領域に未使用の領域が発生して記憶領域の無駄が発生する。そこで、上位装置がストレージ装置の仮想ボリュームに書き込みを行ったときに初めて、書き込みが行われた仮想ボリューム上の領域に実記憶領域を割り当てることが提案されている（特開２００５−１１３１６号公報）。さらに、米国特許第６,８２３,４４２号公報には、上位装置がアクセスする仮想ボリュームをストレージシステムに設け、この仮想ボリュームに物理的記憶領域を割り当てることが記載されている。なお、本願に関連する従来技術として、その他特開２００５−１３５１１６号公報に記載されたものが存在する。
【特許文献１】特開２００５-１１３１６号公報
【特許文献２】米国特許第６,８２３,４４２号公報
【特許文献３】特開２００５−１３５１１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
出願人は、ストレージシステムにおいて記憶資源を有効に活用するために、既述のＡＯＵという技術を開発している。このＡＯＵは、ストレージシステムが、それ自身は記憶領域を持たない仮想ボリュームを上位装置に提供し、この仮想ボリュームにプールと呼ばれる記憶領域の集合を対応させている。上位装置が仮想ボリュームの中でライトアクセスした領域に、ストレージシステムはプールに含まれる記憶領域を割り当てる。この割り当ては、上位装置が仮想ボリュームにアクセスした際に実行される。
【０００５】
ＡＯＵは、上位装置がアクセスするボリュームの全容量に対する記憶領域を最初からボリュームに割り当てておく場合に比べて、上位装置からボリュームにアクセスに応じて記憶領域がボリュームに割り当てられるために、記憶領域の割当に融通性があって記憶領域を有効に利用することができる。さらに、一つのプールには複数の仮想ボリュームを対応させることができるために、ストレージシステムはプールの記憶領域を有効活用することができる。ストレージシステムは、上位装置に対して、あらかじめ所定容量を持つ仮想ボリュームを提供するとともに、プールの利用状況に応じて、プールに記憶容量を追加することができる。
【０００６】
しかしながら、仮想ボリューム全体に上位装置からライトアクセスがあった場合(例えば、仮想ボリュームに対するフルフォーマット)、ストレージシステムは、仮想ボリューム全体にプール内の記憶領域を割り当ててしまうため、プール内の記憶領域が一気に消費され、このプールを共有している他の仮想ボリュームへ影響が懸念される。
【０００７】
そこで、本発明は、上位装置がアクセスするボリュームに、上位装置からのアクセスに応じて、記憶領域を動的に割り当てるように構成したストレージシステムにおいて、一つのボリュームへの記憶領域の割り当てが他のボリュームへの記憶領域の割り当てに影響がないようするストレージシステムを提供することを目的とする。本発明の他の目的は、仮想ボリューム全体にホストからライトアクセスがある場合には、プール内の記憶領域の消費を防いで、他の仮想ボリュームへの記憶領域の割り当てに影響を及ぼさないストレージシステムを提供することにある。本発明のさらに他の目的は、不正な上位装置（Rogue Host）からのストレージシステムへのアクセスを制限して、この上位装置に対する記憶資源の割り当てを制限するストレージシステムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、この目的を解決するために、上位装置がアクセスするボリュームに、上位装置からのアクセスに応じて、記憶領域を動的に割り当てるように構成したストレージシステムにおいて、上位装置からストレージシステムへのアクセスに制限を設け、アクセスがこの制限に抵触する場合には、プール領域から仮想ボリュームに対して割り当てられる記憶領域に余裕があっても、ボリュームへ記憶領域を割り当てることを制限するようにしたことを特徴とするものである。
【０００９】
本発明の一つの形態は、上位装置からのアクセスを受けるインタフェースと、記憶資源と、前記上位装置と前記記憶資源との間のデータの入出力を制御するコントローラと、この制御を実行する上で必要な制御情報を記憶する制御メモリと、前記上位装置が認識する仮想ボリュームと、前記仮想ボリュームに割り当てられ、前記記憶資源から提供される、複数の記憶領域を備えるプールと、を備え、前記コントローラは、前記上位装置からの前記仮想ボリュームへのアクセスに基づいて、前記プールから前記仮想ボリュームに前記記憶領域を割り当て、前記上位装置が前記仮想ボリュームに割り当てられた記憶領域にアクセスするように構成された、ストレージシステムであって、前記制御メモリは前記割り当てを制限する制限制御情報を備え、前記コントローラは、前記仮想ボリュームに割り当て可能な記憶領域が前記プールに含まれている状態で、前記制限制御情報に基づいて、前記記憶領域の前記仮想ボリュームへの割り当てを制限する、ことを特徴とするものである。
【００１０】
前記メモリは前記制限情報として、前記上位装置から前記仮想ボリュームへのライトアクセスにより当該仮想ボリュームへ割り当てられる記憶領域に対する制限値を含み、前記コントローラは、当該仮想ボリュームに割り当てられた記憶領域の量がこの制限値に抵触した場合に、前記ライトアクセスを制限する。
【００１１】
また、前記メモリは、前記制限情報として、前記仮想ボリュームへの記憶領域の割り当て速度に関する制限値を備え、当該割り当て速度の演算値が当該制限値に抵触した場合に、前記コントローラは前記ライトアクセスを制限する。
【００１２】
前記制限値は、前記上位装置に対して設定されており、前記コントローラは当該上位装置からのライトアクセスに基づく前記記憶領域の割り当てが前記制限値に達した場合に、このライトアクセスに対して警報を発する。前記制限値は、前記上位装置に対して設定されており、前記コントローラは当該上位装置からのライトアクセスに基づく前記記憶領域の割り当てが前記制限値に達した場合、このライトアクセスをエラーとする。
【００１３】
前記制限値は、前記仮想ボリュームに対して設定されており、前記コントローラは当該上位装置からのライトアクセスに基づく前記記憶領域の割り当てが前記制限値に達した場合に、このライトアクセスに対して警報を発する。前記制限値は、前記仮想ボリュームに対して設定されており、前記コントローラは当該上位装置からのライトアクセスに基づく前記記憶領域の割り当てが前記制限値に達した場合、このライトアクセスをエラーとする。前記コントローラは、前記プール内の前記仮想ボリュームへの割り当て済みの前記記憶領域が、当該プールに対して設けられた制限値を越えると、前記ホストからのライトアクセスに応じた前記仮想ボリュームへの前記記憶領域の割り当てを制限する。
【００１４】
前記上位装置で稼動するアプリケーションソフトウエアに対して、前記制限値が設定され、前記コントローラは、当該アプリケーションからのライトアクセスを制限する。前記コントローラは、前記仮想ボリュームに対するライトアクセス頻度或いは速度が高い、前記上位装置で稼動するアプリケーションソフトウエアに対して、当該ライトアクセスを制限する。前記上位装置の種類に応じて、前記制限値は変更される。前記仮想ボリュームの用途に応じて、前記制限値は変更される。
【発明の効果】
【００１５】
以上説明したように、本発明によれば、他の仮想ボリュームへの影響がないように、プールから仮想ボリュームへの記憶領域の割り当て制御を実行可能なストレージシステムを提供することができる。さらに、仮想ボリューム全体にホストからライトアクセスがある場合には、プール内の記憶領域の消費を防いで、他の仮想ボリュームへの記憶領域の割り当てに影響を及ぼさないストレージシステムを提供することができる。さらにまた、不正な上位装置（Rogue Host）からのストレージシステムへのアクセスを制限して、この上位装置に対する記憶資源の割り当てを制限するストレージシステムを提供することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、以後説明される図面においては、同一部には同一符号を付し、その繰り返しの説明は省略又は簡略化される。
【００１７】
図１は、本発明が適用されるストレージシステム（ストレージ装置ということもある。）６００を含んだ、記憶制御システムを示すハードウエアブロック図である。ストレージシステム６００は複数の記憶デバイス３００と、情報処理装置２００からの入出力要求に応答して記憶デバイス３００への入出力制御を行う記憶デバイス制御装置（コントローラ）１００と、を備えて構成されている。
【００１８】
情報処理装置２００は上位装置に相当し、ＣＰＵやメモリ等を備えたサーバ（ホスト）や、ストレージ装置の管理用コンピュータからなり、例えば、ワークステーション、メインフレームコンピュータ、パーソナルコンピュータ等で構成される。情報処理装置２００は複数台のコンピュータをネットワーク接続して構成することもできる。情報処理装置２００はオペレーティングシステム上で動作するアプリケーションプログラムを実装している。アプリケーションプログラムとしては、例えば、銀行の自動預金預け払いシステムや航空機の座席予約システム等がある。また、サーバとしては、アプリケーションを実行する、更新系サーバや、更新系サーバのバックエンドでバックアップなどを実行するバックアップサーバが存在する。
【００１９】
情報処理装置１乃至３（２００）はＬＡＮ（Local Area Network）４００を介してストレージ装置６００と接続されている。ＬＡＮ４００は、例えば、イーサネット（登録商標）やＦＤＤＩ等の通信網であり、情報処理装置１乃至３（２００）とストレージシステム６００との間の通信はＴＣＰ／ＩＰプロトコルスイートによって行われる。情報処理装置１乃至３（２００）からはストレージシステム６００に対してファイル名指定によるデータアクセス要求（ファイル単位でのデータ入出力要求。以下、ファイルアクセス要求と称する。）が後述のチャネル制御部ＣＨＮ１乃至ＣＨＮ４（１１０）に送信される。
【００２０】
ＬＡＮ４００にはバックアップデバイス９１０が接続されている。バックアップデバイス９１０は、例えば、ＭＯ、ＣＤ−Ｒ、ＤＶＤ−ＲＡＭ等のディスク系デバイス、ＤＡＴテープ、カセットテープ、オープンテープ、カートリッジテープ等のテープ系デバイスである。バックアップデバイス９１０はＬＡＮ４００を介して記憶デバイス制御装置１００との間で通信を行うことにより記憶デバイス３００に記憶されているデータのバックアップデータを記憶する。また、バックアップデバイス９１０は情報処理装置１（２００）と接続し、情報処理装置１（２００）を介して記憶デバイス３００に記憶されているデータのバックアップを取得する。
【００２１】
記憶デバイス制御装置１００はチャネル制御部ＣＨＮ１乃至４（１１０）を備える。記憶デバイス制御装置１００は、チャネル制御部ＣＨＮ１乃至４（１１０）とＬＡＮ４００とを介して、情報処理装置１乃至３（２００）と、バックアップデバイス９１０と、記憶デバイス３００との間のライトアクセス又はリードアクセスを媒介する。チャネル制御部ＣＨＮ１乃至４（１１０）は情報処理装置１乃至３（２００）からのファイルアクセス要求を個々に受け付ける。すなわち、チャネル制御部ＣＨＮ１乃至４（１１０）には個々にＬＡＮ４００上のネットワークアドレス（例えば、ＩＰアドレス）が割り当てられていて、それぞれが個別にＮＡＳとして振る舞い、個々のＮＡＳがあたかも独立したＮＡＳが存在するかのようにＮＡＳとしてのサービスを情報処理装置１乃至３（２００）に提供することができる。
【００２２】
このように１台のストレージシステム６００に個別にＮＡＳとしてのサービスを提供するチャネル制御部ＣＨＮ１乃至４（１１０）を備えるように構成したことで、従来、独立したコンピュータで個々に運用されていたＮＡＳサーバが一台のストレージシステム６００に集約される。そして、これによりストレージシステム６００の統括的な管理が可能となり、各種設定・制御や障害管理、バージョン管理といった保守業務の効率化が図られる。
【００２３】
情報処理装置３乃至４（２００）はＳＡＮ５００を介して記憶デバイス制御装置１００と接続されている。ＳＡＮ５００は、記憶デバイス３００が提供する記憶領域におけるデータの管理単位であるブロックを単位として情報処理装置３乃至４（２００）との間でデータの授受を行うためのネットワークである。ＳＡＮ５００を介して行われる情報処理装置３乃至４（２００）と記憶デバイス制御装置１００との間の通信は一般にＳＣＳＩプロトコルに従って行われる。情報処理装置３乃至４（２００）からは、ストレージシステム６００に対して、ファイバチャネルプロトコルに従ってブロック単位のデータアクセス要求（以下、ブロックアクセス要求と称する。）が送信される。
【００２４】
ＳＡＮ５００にはＳＡＮ対応のバックアップデバイス９００が接続されている。ＳＡＮ対応バックアップデバイス９００は、ＳＡＮ５００を介して記憶デバイス制御装置１００との間で通信を行うことにより、記憶デバイス３００に記憶されているデータのバックアップデータを記憶する。
【００２５】
記憶デバイス制御装置１００はチャネル制御装置ＣＨＮ１乃至４（１１０）に加えて、更にチャネル制御部ＣＨＦ１乃至２，ＣＨＡ１乃至２（１１０）を備える。記憶デバイス制御装置１００はチャネル制御部ＣＨＦ１乃至２（１１０）とＳＡＮ５００とを介して、情報処理装置３乃至４（２００）及びＳＡＮ対応バックアップデバイス９００との間の通信を行う。チャネル制御部は、上位装置からのアクセスコマンドを処理する。
【００２６】
情報処理装置５（２００）は、更に、ＬＡＮ４００やＳＡＮ５００等のネットワークを介さずに記憶デバイス制御装置１００と接続されている。この情報処理装置５（２００）の例は、例えばメインフレームコンピュータである。情報処理装置５（２００）と記憶デバイス制御装置１００との間の通信は、例えばＦＩＣＯＮ（Fiber Connection)（登録商標）やＥＳＣＯＮ（Enterprise System Connection）（登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture）（登録商標）、ＦＩＢＡＲＣ（Fiber Connection Architecture）（登録商標）などの通信プロトコルに従って行われる。情報処理装置５（２００）からはストレージシステム６００に対して、これらの通信プロトコルに従ってブロックアクセス要求が送信される。記憶デバイス制御装置１００は、チャネル制御部ＣＨＡ１乃至２（１１０）を通じて情報処理装置５（２００）との間で通信を行う。
【００２７】
ＳＡＮ５００には、他のストレージシステム６１０が接続されている。ストレージシステム６１０は、記憶デバイス制御装置１００にストレージシステムが有する記憶資源を提供するという機能を、情報処理装置及びストレージ装置６００に提供する。ストレージ装置の情報処理装置に対する見かけ上の記憶領域が、ストレージ装置６１０によって拡張されたことになる。なお、ストレージシステム６１０はＳＡＮ５００以外にもＡＴＭなどの通信回線によりストレージシステム６００に接続していることもある。また、ストレージシステム６１０をストレージシステム６００に直接接続することもできる。
【００２８】
このように、ストレージシステム６００内にチャネル制御部ＣＨＮ１乃至４（１１０）、チャネル制御部ＣＨＦ１乃至２（１１０）、チャネル制御部ＣＨＡ１乃至２（１１０）を混在させて装着させることにより、異種ネットワークに接続できるストレージシステムを実現できる。即ち、このストレージシステム６００はチャネル制御部ＣＨＮ１乃至４（１１０）を用いてＬＡＮ４００に接続し、かつチャネル制御部ＣＨＡ１乃至２（１１０）を用いてＳＡＮ５００に接続するという、ＳＡＮ−ＮＡＳ統合ストレージシステムである。
【００２９】
接続部１５０は、各々のチャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、及び各々のディスク制御部１４０を相互に接続する。これらのチャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、及びディスク制御部１４０相互間のコマンド又はデータの送受信は接続部１５０を介して行われる。接続部１５０は例えば高速スイッチングによりデータ伝送を行う超高速クロスバスイッチ等の高速バスで構成される。これにより、チャネル制御部１１０相互間の通信パフォーマンスが大幅に向上するとともに、高速なファイル共有機能や高速フェイルオーバー等が可能になる。
【００３０】
共有メモリ１２０、及びキャッシュメモリ１３０はチャネル制御部１１０、及びディスク制御部１４０が共用するメモリ装置である。共有メモリ１２０は主として制御情報やコマンド等を記憶するために利用され、キャッシュメモリ１３０は主としてデータを記憶するために利用される。例えば、あるチャネル制御部１１０が情報処理装置２００から受け取ったデータ入出力コマンドが書き込みコマンドであった場合に、当該チャネル制御部１１０はその書き込みコマンドを共有メモリ１２０に書き込むとともに、情報処理装置２００から受け取ったライトデータをキャッシュメモリ１３０に書き込む。一方、ディスク制御部１４０は共有メモリ１２０を監視しており、共有メモリ１２０に書き込みコマンドが書き込まれたと判定すると、当該書き込みコマンドに従ってキャッシュメモリ１３０からライトデータを読み出して、これを記憶デバイス３００に書き込む。
【００３１】
一方、あるチャネル制御部１１０が情報処理装置２００から受け取ったデータ入出力コマンドが読み出しコマンドであった場合に、当該チャネル制御部１１０はその読み出しコマンドを共有メモリ１２０に書き込むとともに、読み出し対象となるデータがキャッシュメモリ１３０に存在しているか否かをチェックする。ここで、読み出し対象となるデータがキャッシュメモリ１３０に存在している場合には、チャネル制御部１１０はそのデータをキャッシュメモリ１３０から読み取って情報処理装置２００に送信する。読み出し対象となるデータがキャッシュメモリ１３０に存在していない場合には、共有メモリ１２０に読み出しコマンドが書き込まれたことを検出したディスク制御部１４０は読み出し対象となるデータを記憶デバイス３００から読み出してこれをキャッシュメモリ１３０に書き込むとともに、その旨を共有メモリ１２０に書き込む。チャネル制御部１１０は共有メモリ１２０を監視することにより、読み出し対象となるデータがキャッシュメモリ１３０に書き込まれたことを検出すると、そのデータをキャッシュメモリ１３０から読み出して情報処理装置２００に送信する。
【００３２】
ディスク制御部１４０はチャネル制御部１１０から送信された論理アドレス指定による記憶デバイス３００へのデータアクセス要求を、物理アドレス指定によるデータアクセス要求に変換し、チャネル制御部１１０から出力されるＩ／Ｏ要求に応答して記憶デバイス３００へのデータの書き込み又は読み取りを行う。記憶デバイス３００がＲＡＩＤ構成されている場合には、ディスク制御部１４０はＲＡＩＤ構成に従ったデータのアクセスを行う。すなわち、ディスク制御部は、記憶デバイスであるＨＤＤの制御、ＲＡＩＤグループの制御を行う。複数のＨＤＤの記憶領域によってＲＡＩＤグループが構成されている。
【００３３】
記憶デバイス３００は単一又は複数のディスクドライブ（物理ボリューム）を備えており、情報処理装置２００からアクセス可能な記憶領域を提供する。記憶デバイス３００が提供する記憶領域には単一又は複数の物理ボリュームの記憶空間を合わせた論理ボリュームが設定されている。記憶デバイス３００に設定される論理ボリュームには、情報処理装置２００からアクセス可能なユーザ論理ボリュームや、チャネル制御部１１０の制御のために使用されるシステム論理ボリュームがある。システム論理ボリュームにはチャネル制御部１１０で実行されるオペレーティングシステムも格納されている。また、記憶デバイス３００が、上位装置に提供する論理ボリュームには、各々のチャネル制御部１１０がアクセス可能な論理ボリュームが割り当てられている。もとより、複数のチャネル制御部１１０が同一の論理ボリュームを共有することもできる。
【００３４】
尚、記憶デバイス３００として、例えば、ハードディスク装置等を用いることができる。その他、フラッシュメモリのような半導体メモリを用いることもできる。記憶デバイス３００のストレージ構成として、例えば、複数の記憶デバイス３００によりＲＡＩＤ方式のディスクアレイを構成してもよい。また、記憶デバイス３００と記憶デバイス制御装置１００は直接接続してもよく、ネットワークを介して接続してもよい。更に、記憶デバイス３００は記憶デバイス制御装置１００と一体に構成してもよい。
【００３５】
管理端末１６０はストレージシステム６００を保守・管理するためのコンピュータ装置であり、内部ＬＡＮ１５１を通じて各々のチャネル制御部１１０とディスク制御部１４０と共有メモリ１２０に接続している。オペレータは管理端末１６０を操作することで記憶デバイス３００のディスクドライブの設定、論理ボリュームの設定、チャネル制御部１１０やディスク制御部１４０で実行されるマイクロプログラムのインストール等を行うことが可能である。この種の制御は、管理端末に基づくもののほか、上位装置（ホスト）上で動作するプログラムがネットワークを経由するものに基づいても良い。
【００３６】
図２は図１に示す記憶制御システムの機能ブロック図である。チャネル制御部１１０は、マイクロプロセッサＣＴ１とローカルメモリＬＭ１を備え、チャネルコマンド制御プログラムはローカルメモリＬＭ１に記憶されている。マイクロプロセッサＣＴ１はローカルメモリＬＭ１を参照してチャネルコマンド制御プログラムを実行する。チャネルコマンド制御プログラムは、ホストにＬＵを提供する。チャネルコマンド制御プログラムはホストからＬＵに対して送られるアクセスコマンドを処理し、ＬＤＥＶへのアクセスへと変換する。チャネルコマンド制御プログラムはホストからのアクセスに依らず、 ＬＤＥＶに対してアクセスすることもある。ＬＤＥＶとは、ＲＡＩＤグループの一部分を論理的に切り出した論理ボリュームである。但し、仮想ＬＤＥＶはホストのアクセスを受けるが、実記憶領域を備えていない。ホストはＬＤＥＶではなく、ＬＵにアクセスする。ＬＵとは、ホストがアクセスする記憶領域の単位である。一部のＬＵは仮想ＬＤＥＶに割り当てられている。以後仮想ＬＤＥＶに割り当てられているＬＵを実ボリュームに割り当てられているＬＵと区別するために、便宜上“仮想ＬＵ”という。
【００３７】
ディスク制御部１４０は、マイクロプロセッサＣＴ２とローカルメモリＬＭ２とを備えている。ローカルメモリＬＭ２には、ＲＡＩＤ制御プログラムとＨＤＤ制御プログラムが記憶されている。マイクロプロセッサＣＴ２はローカルメモリＬＭ２を参照して、ＲＡＩＤ制御プログラムとＨＤＤ制御プログラムを実行する。ＲＡＩＤ制御プログラムは、複数のＨＤＤからＲＡＩＤグループを構成し、上位のチャネルコマンド制御プログラムにＬＤＥＶを提供する。ＨＤＤ制御プログラムは、上位のＲＡＩＤ制御プログラムの要求に応じてＨＤＤに対してデータの読み書きを実行する。
【００３８】
ホスト２００ＡはＬＵ１０を介してＬＤＥＶ１２Ａにアクセスする。ホスト２００Ｂに対する記憶領域はＡＯＵ技術によって構成されている。ホスト２００Ｂは仮想ＬＵ１４を介して仮想ＬＤＥＶ１６にアクセスする。仮想ＬＤＥＶ１６にはプール１８が割り当てられており、このプールにはＬＤＥＶ１２Ｂ，１２Ｃが割り当てられている。
【００３９】
仮想ＬＤＥＶが仮想ボリュームに相当する。プールとは、仮想ＬＤＥＶに割り当てられる、実際の記憶領域から構成されるＬＤＥＶの集合をいう。なお、チャネルＩ／Ｆ，Ｉ／Ｏパスとは、ホストがストレージサブシステムにアクセスするインターフェースであり、ファイバチャネル、ｉＳＣＳＩなどをいう。
【００４０】
図３は仮想ボリュームとプールとの関係を示すブロック図である。ホストは仮想ボリューム１６に対してアクセスする。アクセスされた仮想ボリュームの領域はプール（物理記憶装置）１８にマッピングされる。このマッピングは仮想ボリュームに対するホストからのアクセスに応じて動的に生成され、以後、ストレージシステムがこのマッピング情報を利用する。仮想ボリュームの領域のうち使用されていない領域の分は物理記憶装置を消費しないので、ある一定容量の仮想ボリュームを用意しておき、プール１８の利用状況を見て徐々に他のプールを仮想ボリュームの割り当てに追加するという運用が可能になる。
【００４１】
図４に示すように、仮想ボリューム１６は初期状態ではデータを記憶する実領域を持たない。ホストからライトされた部分にのみプール１８から“チャンク（chunk）”３００Ａと呼ぶ実記憶領域の単位が仮想ボリューム１６にアサインされる。ホストからは５１２Ｂのブロックの単位でリード/ライトされる。チャンクのサイズは、例えばこのブロックよりも大きい１ＭＢとするがこれは任意のサイズで良い。１２Ｂ及び１２Ｃは、プール１８に属するプールボリューム（プールＬＤＥＶ）である。
【００４２】
図５は、本発明の典型的な制御動作例に係わるブロック図である。ホストＡから仮想ボリューム１６Ａに対するアクセスに対しては、ストレージシステム６００は、プール１８に実記憶領域であるチャンクが存在するにも拘わらず、チャンク３００Ａを仮想ボリューム１６Ａにアサインしない。一方、ホストＢから仮想ボリューム１６Ｂへのアクセスには実記憶の単位であるチャンク３００Ａをアサインする。仮想ボリューム１６Ａ及び仮想ボリューム１６Ｂがプールに割り当てられている。
【００４３】
ホストＡはホストＢと比較して、ＡＯＵボリューム（仮想ボリューム）１６Ａに対して不正なアクセスをしている。ホスト自体を最初から不正なものとする他、ホストから仮想ボリュームへのアクセスの状況によって、ストレージシステムは、仮想ボリュームへライトアクセスするホストを“不正なホスト（Rogue Host）”と評価或いは判定する。後者は、例えば、ホストＡから仮想ボリューム１６Ａに対して大量のアクセスが発生し、このアクセスが“Quota”（クォータ）と呼ばれるアクセス制限に抵触することになる場合である。
ホストＢからのアクセスはクォータに抵触していない。このクォータには、ホストに対して設定されるものと、仮想ボリュームに対して設定されるものと、さらに、プールに対して設定されるものがある。
【００４４】
ホストに対して設定するクォータは制御テーブルとして、共有メモリ（図１の１２０）に予めストレージシステムの管理者などにより登録されている。管理者は、図１の管理端末１６０を利用して共有メモリ１３０にクォータ管理テーブルを設定する。同一プールに対して、複数の仮想ボリューム１６Ａ，１６Ｂが割り当てられている。ここでの制御動作の特徴は、プールに仮想ボリュームに割り当てるべき実記憶領域がある場合でも、ホストから仮想ボリュームに対するアクセスがアクセス制限に抵触する場合には、プールの実記憶領域を仮想ボリュームに割り当てないことである。この結果、プールの実記憶領域が特定のホストや仮想ボリュームについてのみ消費されるのを防ぐことができる。
【００４５】
図６はホストに対して設定されるクォータの管理テーブルである。この管理テーブルは、各ホストに対してチャンク割り当てについてのクォータを規定するものである。０，１・・・ｎは、ホスト番号、即ちエントリ番号を示す。各エントリは、ＡＯＵによって定義された仮想ボリュームにアクセスするホストのＷＷＮリストとホスト限界クォータとホスト警告クォータとから構成される。ホストＷＷＮは、マルチパスやクラスタ構成を考慮して複数設定可能である。
【００４６】
クォータにはホスト警告クォータとホスト限界クォータの２種類がある。ホスト警告クォータとは、ホストからのライトにより仮想ボリュームにアサインされたチャンクの総容量に関する第１の閾値をいい、仮想ボリュームに割り当てられるチャンクの量がこの第１の閾値を越えた場合に、ストレージシステムはストレージ管理者に警告を通知する。これは、ＧＢ単位で設定される。ホスト限界クォータとは、ホストからのライトにより仮想ボリュームにアサインされたチャンクの総容量に関する第２の閾値をいい、ホストからのライトにより仮想ボリュームにアサインされたチャンクの総容量がこの第２の閾値を超えた場合に、ストレージシステムは、以降そのホストからの(チャンク割り当てを伴う)ライトを異常終了させる。これもＧＢ単位で指定される。警告値（第１の閾値）よりも大きい容量に限界値（第２の閾値）が設定される。
【００４７】
クォータは、仮想ボリュームに割り当てられたチャンクの総容量自体で決められる他、仮想ボリュームの全容量に対する、割り当てられ記憶領域の割合、或いはプールの全容量に対する、割り当てられた記憶領域の割合でも良い。また、仮想ボリュームへのチャンクの割り当て速度によってクォータが定義されても良い。多くのチャンクを消費するホストは、このホストクォータ管理テーブルによって、不正なホストと判定され、このホストからのアクセスに対して、ストレージシステムは、チャンクの割り当てを制限或いは禁止する。なお、ストレージシステムは、仮想ボリュームへの割り当てチャンク数を計測するカウンタを用いて、定期的にカウンタ値をクリアすることによって、チャックの割り当て速度を演算することができる。
【００４８】
図７は、ストレージサブシステム内のボリューム管理テーブルである。この管理テーブルは、図６の場合のようにホストに対してクォータを設定するのではなく、仮想ボリュームにクォータを設定するためのものである。０，１、・・・・ｎはボリューム番号を示すエントリである。各エントリは、ボリュームのタイプ、仮想ボリュームの場合には、ボリューム割り当てテーブル番号、仮想ボリューム限界クォータ、そして、仮想ボリューム警告クォータから構成される。ボリュームタイプは、0: 通常ボリューム、1: 仮想ボリューム、2: プールボリューム、そして、-1: 未使用のボリュームから構成される。
【００４９】
仮想ボリュームの“限界クォータ”及び“警告クォータ”は、図６で説明したホストに対して設定されたクォータと同じである。ここでのクォータは、仮想ボリュームの全容量に対する割合(％)で定義される。
【００５０】
図８は、仮想ボリュームをホストに割り当てることを管理するテーブルであり、仮想ボリュームごとに一つ存在する。各エントリ（１，２、・・・ｎ）は、その仮想ボリュームに割り当たっているプール内の各プールボリューム（図４の１２Ｂ，１２Ｃ）の番号と、仮想ボリュームに割り当てられている当該プールボリューム内のチャンク番号の情報と、そして、そのチャンクを割り当てることとなったライトを発行したホスト番号の情報を持つ。チャンクが割り当たっていない場合には、このエントリに“-1”が設定されている。
【００５１】
図９はプールを管理するテーブルであり、プール内のボリューム毎に1エントリが存在する。各エントリ（０，１・・・ｎ）は、プールボリューム番号と、チャンクビットマップへのポインタとから構成されている。チャンクビットマップとは、チャンクが属するボリュームのチャンクが未使用かどうかを示す情報であり、1ビットが一つのチャンクに対応している。“１”が使用(既に仮想ボリュームに割り当て済み)を示し、“０”が未使用（仮想ボリュームへの割り当てが未）を示す。チャンクビットマップは、プールに属するボリューム毎に存在する。プール管理テーブルはプールボリュームについて有効或いは無効の制御情報を持っており、プールボリュームを仮想ボリュームへ割り当てることを無効にする場合には、プールボリューム番号に“−１”が設定され、反対にこの割り当てを有効にする場合には、“プールボリューム番号”が設定される。
【００５２】
図１０はプールクォータ管理テーブルを示す。プールにクォータを設け、プールの利用率が高い時にのみ、ホストからのライトアクセスを制限する。プールクォータは、プール限界クォータとプール警告クォータとからなる。プール内の仮想ボリュームへの割り当て済みチャンク率がこのプール限界クォータを超えたときに、ストレージシステムは、仮想ボリューム限界クォータやホスト限界クォータによるライト抑止を行う。プール内の割り当て済みチャンク率がプール警告クォータを超えたときに、ストレージシステムは、ストレージ管理者に警告を出す。図１１は、プールクォータ初期値テーブルの例であり、プール警告クォータはプール内のチャンクの割り当て率が７０％に、プール限界クォータはプール内のチャンクの割り当て率が９０％に設定されている。
【００５３】
図１２はホストクォータ初期値テーブルの例である。ホストの種類によって、限界クォータ値及び警告クォータ値を異ならすことができる。値が零のものは限界クォータ値が無いことを意味している。基幹系データベースにおいて、限界クォータ値が零であるとされているのは、基幹系データベースとして働くホストからのストレージシステムへのアクセスを止めると影響が大きいからである。図１３は、仮想ボリュームのクォータについての初期値を保持するテーブルである。ボリュームの用途や性質によって、クォータの値が変更されたり、クォータを設けないように（仮想ボリューム限界クォータ値が“０”）できる。図１０から図１３の初期値テーブルは、ストレージシステムの共有メモリ上に存在し、保守端末（図１の１６０）が仮想ボリュームを作成する処理を実行する際に参照される。ストレージシステムに複数のホストが接続されていると、各ホストに対してクォータを設定でき、かつストレージシステムが複数の仮想ボリュームを有する場合には、各仮想ボリュームに対してクォータを設定することができる。
【００５４】
図１４は、チャネル制御部がホストからライトコマンドを受領した時に実行する処理動作をフローチャートとして表したものである。チャネル制御部は、チャネルコマンド制御プログラムと前記制御テーブルを参照して、図１４のフローチャートを実行する。チャネル制御部がホストからライトコマンドを受領すると、ライト処理を開始させ、次いで、ライトコマンドが発行対象となったボリュームのタイプが仮想ボリュームか否かが判断される（１４００）。チャネル制御部はボリューム管理テーブル（図７）から、アクセス対象となったボリュームのエントリにアクセスし、このエントリのボリュームタイプをリードして、ボリュームが仮想ボリュームか否かを判定する。
【００５５】
ホストがアクセスしたボリュームが仮想ボリュームである場合には、チャネル制御部はホストからアクセスされた、仮想ボリュームのブロック番号をチャンク番号に変換する（１４０２）。ホストが仮想ボリュームに論理ブロックアドレスでアクセスすると、チャネル制御部は論理ブロックアドレスを既述のチャンクの単位で割り算を行うことによりチャンク番号(図８の仮想ボリューム割り当てテーブルのエントリ)を知ることができる。図８の仮想ボリューム割り当てテーブルは仮想ボリュームをチャンク番号で管理する。チャネル制御部は仮想ボリューム割り当てテーブルのエントリにアクセスして、ボリューム番号が“−１”であるか否かをチェックする。ボリューム番号が“−１”の場合には、ホストからアクセスがあった仮想ボリュームの領域には、プールからチャンクが割り当てられていないと判断されて、チャンク割り当て処理に移行する。チャンク割り当て処理については後述する。
【００５６】
次いで、チャネル制御部はエラー発生の有無をチェックし、エラーが発生した場合にはホストに異常終了を通知する（１４１８）。一方、エラー発生が無い場合には、ライト対象ブロック番号に割り当たっているチャンクを持つプールボリューム番号と、そのチャンクが該当するブロックアドレスとを計算する（１４１０）。次いで、チャネル制御部は、このアドレス領域にライトデータを書き込み（１４１２）、次いで書き込みエラーの発生の有無をチェックする（１４１４）。エラーが無い場合にはチャネル制御部はホストに正常終了を通知し（１４１６）、エラーが発生する場合には、ホストに異常終了を返す。チャネル制御部がホストからアクセスされた対象のボリュームが仮想ボリュームで無い場合と、チャンクが仮想ボリュームに既に割りあてられている場合には、ステップ１４１０    に移行する。
【００５７】
図１５は仮想ボリュームへのチャンク割り当て処理(図１４の１４０６)を説明するフローチャートである。ディスク制御部がＨＤＤ制御プログラムに基づいて、既述の制御テーブルを参照してこのフローチャートを実行する。ディスク制御部はプール管理テーブル（図９）を最初のエントリから走査して、全チャンクビットマップの“１”のビットの割合を計算して、プール中の仮想ボリュームへの割り当て済みチャンク率を求める（１５０２）。ディスク制御部は、割り当て済みチャンク率がプール限界クォータを超えている場合（１５０２）には、仮想ボリューム限界クォータ及びホスト限界クォータによるホストからのライト抑止処理を行う。割り当て済みチャンク率がプール限界クォータを超えていない場合には、チャンクの割り当てを行う。
【００５８】
割り当て済みチャンク率がプール限界クォータを超えている場合には、ディスク制御部は、ボリューム管理テーブル（図７）を参照し、ホストからライトアクセスがあった仮想ボリュームのエントリ番号（ボリューム番号）を取得する。ディスク制御部は、このボリューム番号から仮想ボリューム割り当てテーブル番号を取得し(１５０４)、プールボリューム割り当て番号が“−１”でない有効なエントリの割合を計算する（１５０６）。この割合は仮想ボリュームに割り当てられたチャンクの総容量が仮想ボリュームの容量に対して示す率である。ディスク制御部はこの割合が仮想ボリューム限界クォータを超えているか否かを判定し（１５０８）、これが否定判定された場合には、ホストクォータ管理テーブルのＷＷＮリストを参照し、ホストからライトがあったＷＷＮからホスト番号(エントリ番号)を取得する（１５１０）。
【００５９】
ディスク制御部は、仮想ボリューム割り当てテーブルを参照して、取得したホスト番号が一致するエントリ数を計数し、これにチャンクサイズを乗算する（１５１２）。ディスク制御部は、計算結果がストレージシステムにライトアクセスを発行したホストについて、ホスト限界クォータを超えているか否かを判定する（１５１４）。これが否定判定された場合にはチャンクの割り当て処理が行われる。計算結果が仮想ボリューム限界クォータを超えている場合、そして計算結果がホスト限界クォータを超えている場合には、ホストにエラーを返す（１５１６）。
【００６０】
次に、チャンクの割り当て処理について説明する。ディスク制御部は、プール管理テーブル（図９）を最初のエントリから走査し（１５１８）、有効なエントリ（プールボリューム番号）があるか否かをチェックする（１５２０）。これが否定判定された場合は、チャネル制御部はホストにエラーを返す（１５２４）。
【００６１】
有効なエントリが存在する場合には、ディスク制御部は、有効なエントリについてチャンクビットマップに“０”があるか否かをチェックする（１５２２）。“０”が無い場合には他のエントリについて、チャンクビットマップに“０”があるか否かをチェックする。チャンクビットマップに“０”があると、そのビットを“１”にする（１５２６）。次いで、ディスク制御部は、仮想ボリューム割り当てテーブルの所定エントリを選択し、このエントリのボリューム番号にプールボリューム番号と、“１”にしたビットに対応するチャンクのチャンク番号と、ライトアクセスを発行したホストのＷＷＮからホストクォータ管理テーブルを参照してホスト番号(エントリ)を求め、ホスト番号を仮想ボリューム割り当てテーブルのエントリに登録する（１５２８〜１５３４）。以上がチャンクの割り当て処理である。
【００６２】
次いで、ディスク制御部は、ホストからのライトにより仮想ボリュームにアサインされたチャンクの総容量がプール警告クォータを越えたか否かを判定し（１５３６）、プール警告クォータを超えた場合には、ディスク制御部は、警告が管理端末に送信されたか否かを判定し（１５３８）、警告の送信が未だであれば、管理端末に警告メールを送信する（１５４０）。次いで、ディスク制御部は、ホストからのライトにより仮想ボリュームにアサインされたチャンクの総容量がホスト警告クォータを超えたか否かがチェックされ（１５４２）、警告が管理端末に送られていない場合には、管理端末（ストレージ管理者）に警告を送る（１５４６）。仮想ボリューム警告クォータについても同様である（１５４８〜１５５２）。以上の処理を終了すると、ストレージシステムはホストのライトアクセスに対して、ホストに正常終了を通知する。
【００６３】
図１６は、ホストからのライトにより仮想ボリュームにアサインされたチャンクの総容量が、プール警告クォータを超えた場合に、ディスク制御部から管理端末へ送られる警告メールの例である。図１７は、ホスト警告クォータを超えた場合の警告メールの内容である。<xx>はホスト警告クォータの値であり、<ＷＷＮ−Ａ>、<ＷＷＮ−Ｂ>は、ホストのＷＷＮリストである。図１８は、仮想ボリューム警告クォータを超えた場合の警告メールの内容である。<ｘｘｘｘ>は仮想ボリューム番号であり、<ｘｘ>％は仮想ボリューム警告クォータの値である。
【００６４】
図１９はストレージシステムの管理者がプール警告クォータを受け取った場合の対処例に係わるフローチャートである。管理者は警告メールを読み（１９００）、次いでディスクドライブをストレージサブシステムに追加する（１９０２）。管理者は管理端末(保守端末)を操作して、追加したディスクドライブにボリュームを作成する（１９０４）。作成直後のボリュームのタイプは“通常”として、ボリューム管理テーブルエントリが設定される。管理者は保守端末を操作してプールに作成したボリュームをストレージシステムに追加する（１９０６）。
【００６５】
図２０に示すように、保守端末のＣＰＵは、プール追加処理を実行する。ＣＰＵは、ボリューム管理テーブルのエントリのタイプをプールボリューム（２）とする（２０００）。ＣＰＵはプール管理テーブルで空いているエントリを探し（２００２）、これにボリューム番号を設定する（２００４）。ＣＰＵは、このボリューム番号についてチャンクビットマップを全て”０”として用意する（２００６）。次いで、ＣＰＵはチャンクビットマップへのポインタを設定する（２００８）。
【００６６】
図２１は、管理者がホストクォータ警告メールを受け取った場合の対処例である。管理者は警告メールを読み（２１００）、警告メールで特定されたホストを調査する（２１０２）。管理者はこのホストについて、問題があるアプリケーションが動作しているか否かを判断し、これが否定された場合は、もともとホスト警告クォータが適正でないとして、管理者は保守端末を操作してホスト警告クォータとホスト限界クォータとを変更する（２１０８）。問題があるアプリケーションが動作中である場合には、ホスト上での当該アプリケーションの動作を停止させる（２１０６）。管理者は保守端末を操作して、そのアプリケーションが使用していた全ての仮想ボリュームを初期化する（２１１０）。次いで、そのアプリケーションが使用していた他のボリュームをフォーマットする（２１１２）。
【００６７】
図２２は仮想ボリュームの初期化処理を示すフローチャートであり、保守端末のＣＰＵが実行する。ＣＰＵは仮想ボリューム割り当てテーブルのエントリを最初から走査していく（２２００）。ＣＰＵは、ボリュームエントリ番号が“−１”でないエントリがあるか、を判定し（２２０２）、“無い”場合には処理を終了する。“あり”と判定される場合には、ＣＰＵはこのエントリを選択し（２２０４）、そのエントリに入っているプールボリューム番号に対応するプール管理テーブルのエントリを選択する（２２０６）。次いで、対応するチャンクビットマップのビットを“０”にリセットする（２２０８）。次いで、選択している仮想ボリューム割り当てテーブルエントリをクリア、すなわち、プールボリューム番号、チャンク番号、ホスト番号を全て“−１”にする（２２１０）。
【００６８】
図２３はストレージシステム管理者が仮想ボリュームクォータ警告メールを受け取った場合の対処例である。管理者は警告メールを読み（２３００）、警告メールで特定されている仮想ボリュームを使用しているホストを調査する（２３０２）。次いで、問題あるアプリケーションがホスト上で動作しているか否かについてホストを調査する（２３０４）。これが否定判定された場合には、管理者は保守端末を操作して仮想ボリューム警告クォータ、仮想ボリューム限界クォータを変更する（２３０８）。
【００６９】
ステップ２３０４が肯定判定された場合には、管理者はホスト上での問題あるアプリケーションの動作を停止させる（２３０６）。管理者は、保守端末を操作して、当該アプリケーションが使用していた全ての仮想ボリュームを初期化する（２３１０）。次いで、そのアプリケーションが使用した他のボリュームをフォーマットする（２３１２）。
【００７０】
図２４はストレージシステムの管理者が保守端末で仮想ボリュームの作成を指示した場合における、保守端末のＣＰＵが実行する処理を説明したフローチャートである。ストレージシステム管理者は仮想ボリュームを作成する際、ボリュームサイズとボリュームの用途を指定する。ＣＰＵは、ボリューム管理テーブルのタイプが“−１”のエントリを選択し、（２４００）タイプに“１”（仮想ボリューム）を設定する（２４０２）。次いで、ＣＰＵは、仮想ボリューム割り当てテーブルの全てのエントリを“-１”で初期化する。ＣＰＵは、仮想ボリューム割り当てテーブル番号を設定し、ボリューム用途に応じた仮想ボリューム限界クォータと警告クォータとを設定する（２４０６〜２４１２）。
【００７１】
以上、説明したように、特に図１５に示すように、ストレージシステムは、プール内の記憶領域（チャンク）の仮想ボリュームへの割り当てがプール限界クォータを超えている場合に、仮想ボリューム限界クォータとホスト限界クォータを参照し、チャンクの仮想ボリュームへの割り当てがこれら限界クォータを超えている場合には、この割り当ての契機となったホストからのライトアクセスに対して、チャンクを仮想ボリュームにアサインすることなく、ホストにライトアクセスエラーを返す。
【００７２】
一方、仮想ボリュームへのライトアクセス頻度が低い、他のホストからのライトアクセスに対して、ストレージシステムは、チャンクの仮想ボリュームへの既割り当て量がプール限界クォータを越えても、仮想ボリュームへのチャンクの割り当てを追加して、このホストのライトアクセスを有効にする。
【００７３】
既述の実施形態では、ホストからのライトアクセス頻度が他のホストに比較して大きいものを“不正なホスト”とし、このホストの稼動中のアプリケーションソフトウエアを“不正なプログラム”としたが、これに限られること無く、例えば、特定のホストやソフトウエアを不正なものとすることができる。既述の実施形態において、ストレージシステムがホストにライトアクセスエラーを通知するようにしたが、そのため、仮想ボリュームではなく実領域を持つ予備の論理ボリュームをあらかじめ用意しておき、警告を発するタイミングで仮想ボリュームから予備ボリュームへバックグラウンドでデータ移行い、ホストを仮想ボリュームから解放すれば良い。このようにすることによって、ホストが予備ボリュームにアクセスでき、ホストからのライトアクセスをこの予備ボリュームに対して有効に維持することができる。
【００７４】
さらに、あるプール内に記憶領域が無くなった場合に他のプールから記憶領域を融通することができる。この際、ＦＣドライブをＳＡＴＡドライブのプールに融通することはできるが、その逆を制限しても良い。
【図面の簡単な説明】
【００７５】
【図１】図１は、本発明が適用されるストレージシステムを含んだ、記憶制御システムを示すハードウエアブロック図である。
【図２】図１に示す記憶制御システムの機能ブロック図である。
【図３】仮想ボリュームとプールとの関係を示すブロック図である。
【図４】プールから仮想ボリュームへ記憶領域を割り当てている状態を示す、ストレージシステムの一部の機能ブロック図である。
【図５】不正なホストにプールから記憶領域の割り当て禁止、及び、正当なホストにプールから記憶領域の割り当ての処理を説明する、ストレージシステムの機能ブロック図である。
【図６】ホストに対して設定されるクォータ（制限情報）の管理テーブルの一例である。
【図７】ストレージサブシステム内のボリューム管理テーブルの一例である。
【図８】仮想ボリュームをホストに割り当てることを管理するテーブルの一例である。
【図９】プールを管理するテーブルの一例である。
【図１０】プールクォータ管理テーブルの一例である。
【図１１】プールクォータ初期値テーブルの一例である。
【図１２】ホストクォータ初期値テーブルの一例である。
【図１３】仮想ボリュームのクォータについての初期値を保持するテーブルの一例である。
【図１４】チャネル制御部がホストからライトコマンドを受領した時に実行されるフローチャートである。
【図１５】仮想ボリュームへのチャンク割り当て処理を説明するフローチャートである。
【図１６】ホストからのライトにより仮想ボリュームにアサインされたチャンクの総容量が、プール警告クォータを超えた場合に、ディスク制御部から管理端末へ送られる警告メールの例である。
【図１７】ホスト警告クォータを超えた場合の警告メールの一例である。
【図１８】図１８は、仮想ボリューム警告クォータを超えた場合の警告メールの一例である。
【図１９】管理者がプール警告クォータを受け取った場合の対処例に係わるフローチャートである。
【図２０】プール追加処理を実行するためのフローチャートである。
【図２１】管理者がホストクォータ警告メールを受け取った場合の対処例を説明したフローチャートである。
【図２２】図２２は仮想ボリュームの初期化処理を示すフローチャートである。
【図２３】ストレージシステム管理者が仮想ボリュームクォータ警告メールを受け取った場合の対処例を説明したフローチャートである。
【図２４】ストレージシステムの管理者が保守端末で仮想ボリュームの作成を指示した場合における、保守端末のＣＰＵが実行する処理を説明したフローチャートである。
【符号の説明】
【００７６】
１６  仮想ボリューム、１８  プール、１００  コントローラ、１１０  チャネル制御部、１４０  ディスク制御部、２００  上位装置、６００  ストレージシステム
【図１】
2007304794.tif 000003
【図２】
2007304794.tif 000004
【図３】
2007304794.tif 000005
【図４】
2007304794.tif 000006
【図５】
2007304794.tif 000007
【図６】
2007304794.tif 000008
【図７】
2007304794.tif 000009
【図８】
2007304794.tif 000010
【図９】
2007304794.tif 000011
【図１０】
2007304794.tif 000012
【図１１】
2007304794.tif 000013
【図１２】
2007304794.tif 000014
【図１３】
2007304794.tif 000015
【図１４】
2007304794.tif 000016
【図１５】
2007304794.tif 000017
【図１６】
2007304794.tif 000018
【図１７】
2007304794.tif 000019
【図１８】
2007304794.tif 000020
【図１９】
2007304794.tif 000021
【図２０】
2007304794.tif 000022
【図２１】
2007304794.tif 000023
【図２２】
2007304794.tif 000024
【図２３】
2007304794.tif 000025
【図２４】
2007304794.tif 000026