(57)【特許請求の範囲】
【請求項１】
上位装置に接続され、前記上位装置からデータを受ける上位インタフェースと、
データが格納される複数のディスク装置と、
前記上位装置との間でやり取りされるデータの前記ディスク装置への読み書きを制御する複数のディスクインタフェースと、
前記複数のディスクドライブの記憶領域を用いて生成される第１の論理ボリュームへのデータの読み書きを制御し、前記第１の論理ボリュームに格納された過去のデータを世代毎の差分データとして第２の論理ボリュームに書き込むように制御し、前記第２の論理ボリュームに格納されている前記世代毎の差分データの関係を管理するスナップショット管理テーブルを前記メモリの領域に設けることによって前記差分データを管理する制御プロセッサと、を有するディスクアレイ装置であって、
前記制御プロセッサは、
前記第２の論理ボリュームに格納されたデータ量を管理し、
前記第２の論理ボリュームに格納されたデータ量が前記第２の論理ボリュームの容量の第１の割合を超えた場合、前記第２の論理ボリュームの容量を増加し、
前記第２の論理ボリュームに格納されたデータ量が、前記第１の割合より大きい第２の割合を超えた場合、前記第１の論理ボリュームに対するデータの書き込みを制限し、
前記第２の論理ボリュームに格納されたデータ量が、前記第２の割合より大きい第３の割合を超えた場合、前記第２の論理ボリュームに書き込まれた差分データのうち、特定の世代の差分データを削除し、
前記第２の論理ボリュームに格納されたデータ量が、前記第３の割合より大きい第４の割合を超えた場合、前記第２の論理ボリュームに書き込まれた差分データのうち、前記特定の第１の論理ボリュームに対応するものを削除すること特徴とするディスクアレイ装置。
【請求項２】
請求項１に記載のディスクアレイ装置であって、
前記制御プロセッサは、前記第２の論理ボリュームに格納されたデータ量が、前記第２の論理ボリュームの容量に達した場合、前記第２の論理ボリュームに書き込まれた全ての差分データを削除することを特徴とするディスクアレイ装置。
【請求項３】
請求項１に記載のディスクアレイ装置であって、
前記上位インタフェースに接続され、前記上位装置との間でやり取りされるデータ、及び前記上位装置との間でやり取りされるデータに関する制御情報を保存するメモリを有し、
前記ディスクインタフェースは、前記上位装置との間でやり取りされ、前記メモリに格納されるデータを、前記ディスク装置に書き込むように制御することを特徴とするディスクアレイ装置。
【請求項４】
ディスクアレイ装置においてボリュームを管理する方法であって、
前記ディスクアレイ装置は、
上位装置に接続され、前記上位装置からデータを受ける上位インタフェースと、
データが格納される複数のディスク装置と、
前記上位装置との間でやり取りされるデータの前記ディスク装置への読み書きを制御する複数のディスクインタフェースと、
前記複数のディスクドライブの記憶領域を用いて生成される第１の論理ボリュームへのデータの読み書きを制御し、前記第１の論理ボリュームに格納された過去のデータを世代毎の差分データとして第２の論理ボリュームに書き込むように制御し、前記第２の論理ボリュームに格納されている前記世代毎の差分データの関係を管理するスナップショット管理テーブルを前記メモリの領域に設けることによって前記差分データを管理する制御プロセッサと、を有し、
前記方法は、
前記第２の論理ボリュームに格納されたデータ量を管理し、
前記第２の論理ボリュームに格納されたデータ量が前記第２の論理ボリュームの容量の第１の割合を超えた場合、前記第２の論理ボリュームの容量を増加し、
前記第２の論理ボリュームに格納されたデータ量が、前記第１の割合より大きい第２の割合を超えた場合、前記第１の論理ボリュームに対するデータの書き込みを制限し、
前記第２の論理ボリュームに格納されたデータ量が、前記第２の割合より大きい第３の割合を超えた場合、前記第２の論理ボリュームに書き込まれた差分データのうち、特定の世代の差分データを削除し、
前記第２の論理ボリュームに格納されたデータ量が、前記第３の割合より大きい第４の割合を超えた場合、前記第２の論理ボリュームに書き込まれた差分データのうち、前記特定の第１の論理ボリュームに対応するものを削除すること特徴とするボリューム管理方法。
【請求項５】
請求項４に記載のボリューム管理方法であって、
前記第２の論理ボリュームに格納されたデータ量が、前記第２の論理ボリュームの容量
に達した場合、前記第２の論理ボリュームに書き込まれた全ての差分データを削除するこ
とを特徴とするボリューム管理方法。
【請求項６】
請求項４に記載のボリューム管理方法であって、
前記ディスクアレイ装置は、前記上位インタフェースに接続され、前記上位装置との間
でやり取りされるデータ、及び前記上位装置との間でやり取りされるデータに関する制御
情報を保存するメモリを有し、
前記方法は、前記上位装置との間でやり取りされ、前記メモリに格納されるデータを、
前記ディスク装置に書き込むように制御することを特徴とするボリューム管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ装置に関し、特にスナップショットにおける差分ＬＵの管理技術に関する。
【背景技術】
【０００２】
コンピュータシステムにおいては、ストレージ装置に記憶されるデータをバックアップする場合など、元のデータを記憶した記憶ボリュームの複製を生成する場合がある、この場合、元のデータを記憶した記憶ボリュームと複製データを記憶した記憶ボリュームとは内容が一致し整合性が保たれる必要がある。そのためには複製の生成が完了するまでの間、元のデータを記憶した記憶ボリュームの更新を停止させる必要がある。しかし高可用性が求められるコンピュータシステムなどでは、元のデータを記憶した記憶ボリュームに対するアクセスを停止することができない場合がある。
【０００３】
そこで、元のデータを記憶した記憶ボリュームと複製データを記憶した記憶ボリュームとの間である時点での整合性を保ち、ある時点の後に元のデータが更新されたとしてもある時点の元のデータを参照できるようにするスナップショットと呼ばれる技術が開発されている。
【０００４】
スナップショットの技術によれば、整合性を保つべき時点の後に元のデータが更新される場合には、整合性を保つべき時点のデータを別の記憶ボリュームに記憶するようにする。つまり元のデータは、更新されなければそのままであり、更新される場合には整合性を保つべき時点のデータが別の記憶ボリュームに記憶される（例えば、特許文献１参照。）。
【０００５】
また、スナップショットを複数世代において利用可能にする方法が提案されている。
【０００６】
これによれば、データ保持部１は、通常の読み書きを行う。データ保持部２は、ある時点でのデータ保持部１のスナップショットイメージを保存する。データ保持部３は、データ保持部２にスナップショットイメージを保存した時点以降のデータ保持部１へのデータ書替えに伴う更新データと、その世代を示す情報と、その更新領域を示す情報とを含む履歴情報を保存する。データ読出し元選択部４は、読出されるべきスナップショットイメージの世代及び領域の指定に応じて、データ保持部３に保存される各履歴情報を参照し、読出されるべきスナップショットイメージの保存場所を知得し、その保存場所に応じてデータの読出し元をデータ保持部２及びデータ保持部３のいずれかに切替える（例えば、特許文献２参照。）。
【特許文献１】特開２００１−３０６４０７号公報
【特許文献２】特開２００２−２７８８１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、スナップショット機能は、正ＬＵの容量よりも差分ＬＵの容量を減らせることが利点であるが、ホストからのデータの書き込みが多くなると差分データが多くなる。そして、プール領域（差分ＬＵ）の使用量が１００％になるとスナップショットを維持できなくなる。このため、プール領域の使用量が閾値を超えたときに、管理者に警告を発する。この警告を受け取った管理者は、データを別ディスクへ退避して、プール領域の使用量を減らす、又はV-VOLを削除する等によって、運用で処理されていた。そのため、管理者の負担が大きく、プール領域の使用量が１００％になることの回避に失敗するリスクを抱えていた。
【０００８】
本発明は、プール領域の使用量が１００％になることを回避して、全スナップショットイメージの破壊を防止することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、上位装置に接続され、前記上位装置からデータを受ける上位インタフェースと、データが格納される複数のディスク装置と、前記上位装置との間でやり取りされるデータの前記ディスク装置への読み書きを制御する複数のディスクインタフェースと、前記複数のディスクドライブの記憶領域を用いて生成される第１の論理ボリュームへのデータの読み書きを制御し、前記第１の論理ボリュームに格納された過去のデータを世代毎の差分データとして第２の論理ボリュームに書き込むように制御し、前記第２の論理ボリュームに格納されている前記世代毎の差分データの関係を管理するスナップショット管理テーブルを前記メモリの領域に設けることによって前記差分データを管理する制御プロセッサと、を有するディスクアレイ装置であって、前記制御プロセッサは、前記第２の論理ボリュームに格納されたデータ量を管理し、前記第２の論理ボリュームに格納されたデータ量が前記第２の論理ボリュームの容量の第１の割合を超えた場合、前記第２の論理ボリュームの容量を増加し、前記第２の論理ボリュームに格納されたデータ量が、前記第１の割合より大きい第２の割合を超えた場合、前記第１の論理ボリュームに対するデータの書き込みを制限し、前記第２の論理ボリュームに格納されたデータ量が、前記第２の割合より大きい第３の割合を超えた場合、前記第２の論理ボリュームに書き込まれた差分データのうち、特定の世代の差分データを削除し、前記第２の論理ボリュームに格納されたデータ量が、前記第３の割合より大きい第４の割合を超えた場合、前記第２の論理ボリュームに書き込まれた差分データのうち、前記特定の第１の論理ボリュームに対応するものを削除すること特徴とする。
【発明の効果】
【００１１】
本発明によると、プール領域の使用量が１００％になることを回避することができ、全スナップショットイメージの破壊を防止することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態を図面を参照して説明する。
【００１３】
図１は、本発明の実施の形態のディスクアレイ装置の構成を示すブロック図である。
【００１４】
本発明の実施の形態のディスクアレイ装置１は、ディスクアレイコントローラ１０及びディスク２０を含んで構成される。また、ディスクアレイ装置１は、ＳＡＮ２を介して複数のホスト３に接続され、ＬＡＮ４を介して管理用端末装置５に接続されている。
【００１５】
ディスクアレイコントローラ１０は制御プログラム１０３の動作によって、ディスク２０に対するデータの入出力を制御する。また、ディスク２０によってＲＡＩＤ（Redundant Array of Independent Disks）が構成されており、記憶されるデータに冗長性を持たせている。このため、ディスクの一部に障害が生じても、記憶されたデータが消失しないようになっている。
【００１６】
ディスクアレイコントローラ１０には、ＣＰＵ１０１、メモリ１０２、データ転送コントローラ１０４、フロントエンドインターフェース１０５、バックエンドインターフェース１０６、キャッシュメモリ１０７、及びＬＡＮインターフェース１０８が設けられている。
【００１７】
メモリ１０２には制御プログラム１０３（図２参照）が記憶されており、ＣＰＵ１０１が制御プログラム１０３を呼び出して実行することによって各種処理が行われる。
【００１８】
データ転送コントローラ１０４は、ＣＰＵ１０１、フロントエンドインターフェース１０５、バックエンドインターフェース１０６、及びキャッシュメモリ１０７の間でデータを転送する。
【００１９】
フロントエンドインターフェース１０５は、ＳＡＮ２に対するインターフェースであって、例えば、ファイバチャネルプロトコルによって、ホスト３との間でデータや制御信号を送受信する。
【００２０】
バックエンドインターフェース１０６は、ディスク２０に対するインターフェースであって、例えば、ファイバチャネルプロトコルによって、ディスク２０との間でデータや制御信号を送受信する。
【００２１】
キャッシュメモリ１０７には、フロントエンドインターフェース１０５とバックエンドインターフェース１０６との間で送受信されるデータが一時的に記憶されるキャッシュが設けられている。
【００２２】
すなわち、データ転送コントローラ１０４は、ＳＡＮ４を介してディスクに読み書きされるデータをインターフェース１０５、１０６間で転送する。さらに、これらのディスクに読み書きされるデータをキャッシュメモリ１０７に転送する。
【００２３】
ＬＡＮインターフェース１０８は、ＬＡＮ４に対するインターフェースであって、例えば、ＴＣＰ／ＩＰプロトコルによって、管理用端末装置５との間でデータや制御信号を送受信することができる。
【００２４】
ＳＡＮ２は、例えばファイバチャネルプロトコルのような、データの転送に適するプロトコルで通信可能なネットワークである。
【００２５】
ホスト３は、ＣＰＵ、メモリ、記憶装置、インターフェース、入力装置及び表示装置が備わるコンピュータ装置であり、ディスクアレイ装置１から提供されるデータを利用して、データベースサービスやウェブサービス等を利用可能にする。
【００２６】
ＬＡＮ４は、ディスクアレイ装置１の管理用に用いられるもので、例えば、ＴＣＰ／ＩＰプロトコルによって、コンピュータ間でデータや制御情報を通信可能であり、例えばイーサネット（登録商標、以下同じ）が用いられる。
【００２７】
管理用端末装置５は、ＣＰＵ、メモリ、記憶装置、インターフェース、入力装置及び表示装置が備わるコンピュータ装置である。管理用端末装置５では管理プログラムが動作しており、該管理プログラムによってディスクアレイ装置１の動作状態を把握し、ディスクアレイ装置１の動作を制御する。なお、管理用端末装置５ではｗｅｂブラウザ等のクライアントプログラムが動作しており、ディスクアレイ装置１からＣＧＩ（Common Gateway Interface）等によって供給される管理プログラムによってディスクアレイ装置１の動作を制御してもよい。
【００２８】
図２は、本発明の実施の形態の制御プログラム１０３の説明図である。
【００２９】
ホスト３の通常Ｉ／Ｏ処理プログラム３０１から送られたデータ入出力要求は、ディスクアレイ装置１の制御プログラム１０３のＲ／Ｗコマンド解析プログラム１１１によって解析され、スナップジョブプログラム１２１に送られる。
【００３０】
スナップジョブプログラム１２１は、正ＬＵに対するデータ書き込み要求を受信すると、正ＬＵ内の更新前のデータを差分ＬＵに複写し、この複写後に正ＬＵの内容を更新する。更に、スナップジョブプログラム１２１は、データが更新された正ＬＵ内のブロックに対応する仮想ＬＵ内のブロックを、スナップショット生成要求の受信時点で正ＬＵのデータ（すなわち更新前のデータ）が格納されている差分ＬＵ上のブロックと対応付けるようスナップショット管理テーブル（差分情報管理ブロック２０４）を更新する。
【００３１】
また、スナップリストアジョブプログラム１２２は、仮想ＬＵに対するアクセス要求を受信すると、スナップショット管理テーブルを参照して、仮想ＬＵのブロックと対応付けられている正ＬＵのブロック又は差分ＬＵのブロックにアクセスする。このようにして、ディスクアレイ装置１はスナップショットイメージを提供することが可能になる。そして、ホスト３が、通常Ｉ／Ｏ処理プログラム３０１によって、仮想ＬＵにアクセスすることによって、スナップショット生成要求発行時点での正ＬＵ内の情報を利用することができる。
【００３２】
また、通常Ｉ／Ｏ処理プログラム３０１から送られた制御コマンドは、その他コマンド解析プログラム１１２によって解析され、構成情報制御プログラム１４０に送られる。
【００３３】
構成情報制御プログラム１４０のペア情報管理プログラム１４４は、スナップショット生成要求を受信すると、まずスナップショット管理テーブルに新しい仮想ＬＵの識別情報を登録し、ペア情報管理テーブルにスナップショットのペアを新規に登録し、差分ビットマップ２０２、正ＬＵアドレステーブル２０３、差分情報管理ブロック２０４を確保、初期化する。この仮想ＬＵのブロックは、最初はスナップショット管理テーブルによって、正ＬＵのブロックと一対一で対応付けられている。
【００３４】
プールＬＵ管理プログラム１４２は、後述するように、プール領域に登録されたＬＵの追加及び削除を管理する。
【００３５】
プール管理プログラム１５０は、スナップショット差分管理テーブル（差分情報管理ブロック２０４）の領域の確保、解放及び空きキューへの遷移等の管理を行う。
【００３６】
ＷＥＢプログラム１６０は、スナップショットで作成される各ペアの状態（ペア情報管理テーブル内の情報等からペアの障害有無）をＷＥＢブラウザに提供する。
【００３７】
ディスクアレイ装置１の制御プログラム１０３のＲＡＩＤマネージャプログラム１３１は、ホスト３のＲＡＩＤマネージャプログラム３０２と通信可能に接続されている。このＲＡＩＤマネージャプログラム１２１、３０２によって、スナップショットの生成やペア状態の変更などを行うことができる。
【００３８】
また、ＤＡＭＰインターフェースプログラム１２２は、仮想ＬＵの削除処理等のディスクアレイの各種設定を行うユーザインターフェースを提供する。ＤＡＭＰインターフェースプログラム１２２は、管理用端末装置５のＤＡＭＰプログラム５０１と通信可能に接続されている。このＤＡＭＰインターフェースプログラム１２２によって、管理用端末装置５のＤＡＭＰプログラム５０１との通信が行われて、ディスクアレイ装置１のＲＡＩＤの構成の管理、プールへの自動追加、削除の設定が行われる。
【００３９】
図３は、本発明の実施の形態のスナップショットの管理方法の説明図である。
【００４０】
正ＬＵ２０１は、通常の運用に供され、ホスト３からのデータ入出力の対象となる論理ユニット（Ｐ−ＶＯＬ：Primary Volume）である。
【００４１】
差分ビットマップ２０２は、キャッシュメモリ１０７の管理領域に設けられており、正ＬＵ２０１のブロック（例えば、６４ｋバイト／ブロック）に対応するビットを有する。この差分ビットマップ２０２は、後述する正ＬＵアドレステーブル２０３及び差分情報管理ブロック２０４と共にスナップショット管理テーブルを構成する。
【００４２】
正ＬＵ２０１のブロックアドレスに対応する差分データが差分ＬＵ２０６に記録されている場合に、差分ビットマップ２０２中の正ＬＵ２０１に対応するビットが「１」となっている。従って、正ＬＵ２０１に対する書き込みが行われるときに、差分ビットマップ２０２を参照することによって、更新前データを差分ＬＵにコピーする必要があるかを判定することができる（すなわち、ビットが「１」であれば、スナップショット生成時のデータが既に差分ＬＵ２０６に書き込まれているので、正ＬＵ２０１のデータを差分ＬＵ２０６にコピーする必要がない）。
【００４３】
正ＬＵアドレステーブル２０３は、キャッシュメモリ１０７の管理領域に設けられており、差分ビットマップ２０２のビットと対応して差分情報管理ブロック２０４のアドレスが記録されている。
【００４４】
差分情報管理ブロック２０４は、差分ＬＵと同じ容量を有し、キャッシュメモリ１０７の管理領域に設けられている。差分情報管理ブロック２０４は、差分ＬＵ２０６のブロック（例えば、６４ｋバイト／ブロック）毎に区切られて、その各々に管理テーブルが設けられている。この管理テーブルには、差分ＬＵ２０６のブロックに対応する位置に記録された差分データがどの世代のスナップショットのデータであるかが記録されている。また、正ＬＵ２０１の当該ブロックに対応する他の差分データがあれば、その差分情報管理ブロック２０４上のアドレスへのリンク情報が記録されている。すなわち、差分情報管理ブロック２０４に記録されたアドレスをたどることによって、複数世代の差分データを参照することができる。
【００４５】
なお、差分情報管理ブロック２０４の使用されていない領域は、空きキューとしてリンクが設定されている。そして、この空きキューの量はキャッシュメモリ１０７に設けられた空きキューカウンタ２０５によって管理されている。
【００４６】
差分ＬＵ２０６は、プール領域に登録されたＬＵによって構成される。この差分ＬＵ２０６は、スナップショット作成時点における正ＬＵ２０１のデータが複写されている。そして、差分ＬＵ２０６のデータがどの世代の差分データかは差分情報管理ブロック２０４の世代管理ビットマップによって知ることができる。
【００４７】
よって、正ＬＵにデータを書き込むときは、まず、差分ビットマップ２０２を参照して、更新前データを差分ＬＵにコピーする必要があるかを判定する。そして、差分ビットマップ２０２の対応ビットが「１」であれば、更新前データを差分ＬＵにコピーする必要がないと判定し、正ＬＵにデータを書き込む。一方、差分ビットマップ２０２の対応ビットが「０」であれば、更新前データを差分ＬＵにコピーした後に、正ＬＵにデータを書き込む。
【００４８】
そして、正ＬＵのブロックに対応する差分情報管理ブロック２０４のブロックに、新たに設定された差分データに対するリンクアドレスを設定する。そして、必要に応じて正ＬＵアドレステーブルに、差分情報管理ブロック２０４のブロックのアドレスを設定する。そして、差分ビットマップ２０２の対応ビットを「１」にし、差分ＬＵ２０６の当該更新前データを書き込んだアドレスに対応する差分情報管理ブロック２０４の世代管理ビットマップを設定する。さらに、差分情報管理ブロック２０４の空きキューを使用したので、空きキューカウンタ２０５を更新する。
【００４９】
また、仮想ＬＵ（Ｖ−ＶＯＬ：Virtual Volume）にアクセスするときには、正ＬＵアドレステーブル２０３を参照して、アクセス対象となる仮想ＬＵのブロックアドレス（正ＬＵのブロックアドレスに等しい）によって差分情報管理ブロック２０４のアドレスを特定して、差分情報管理ブロック２０４の当該アドレスの世代管理ビットマップによって、アクセス対象の世代の差分データがあるかを特定する。そして、所望の世代の差分データがあれば、当該差分情報管理ブロック２０４のアドレスに対応する差分ＬＵ２０６のアドレスから差分データを読み出して、仮想ＬＵのイメージを提供する。一方、所望の世代の差分データでなければ、他の差分データに対するリンクアドレスを参照して、所望の世代の差分データを探す。そして、いずれの差分データも所望の世代のものでなければ、現在、正ＬＵに記録されているデータを仮想ＬＵのデータとして提供する。
【００５０】
図４は、本発明の実施の形態の空き容量チェック処理のフローチャートであり、正ＬＵへのデータの書き込み処理等によって、正ＬＵから差分ＬＵに差分データをコピーするときに、プールＬＵ管理プログラム１３２によって実行される。
【００５１】
まず、空きキューカウンタ２０５を参照して、プール（差分ＬＵ）の空き容量（既に使用されている容量でもよい）を確認する（Ｓ１０１）。
【００５２】
次に、ステップＳ１０１で取得したプール領域の使用量と予め定めたＬＵ追加閾値（７０％）とを比較し、プール領域の使用量がＬＵ追加閾値を超えているか否かを判定する（Ｓ１０２）。そして、プール領域の使用量がＬＵ追加閾値（７０％）を超えていれば、ＬＵ追加処理（図５）を実行する（Ｓ１０３）。
【００５３】
このＬＵ追加閾値は、プール領域の使用量が１００％に到達しないように余裕を持たせて７０％程度とすることが望ましいが、ストレージ装置の稼働状態（例えば、データ入出力要求の量）によってＬＵ追加閾値を変更することができる。
【００５４】
また、ＬＵのプール領域への追加処理の実行中は通常時の値より高い閾値を設定することによって（例えば、通常時の７０％に対して７５％）、プール領域の使用量がＬＵ追加閾値を超えたことによってＬＵ追加処理が実行されているにもかかわらず、新たにＬＵ追加処理の実行を防止することもできる。
【００５５】
次に、プール領域の使用量がＩ／Ｏ制限閾値（９０％）を超えているか否かを判定する（Ｓ１０４）。その結果、プール領域の使用量がＩ／Ｏ制限閾値（９０％）を超えていれば、ホスト３からのデータの書き込みを制限する（Ｓ１０５）。このＩ／Ｏ制限では、手動による仮想ＬＵの削除処理を優先して、データ書き込み要求と差分データの削除処理とが１対１程度となるようにして、プール領域の使用量がこれ以上高くならないようにする。
【００５６】
次に、プール領域の使用量が仮想ＬＵ解除閾値（９５％）を超えているか否かを判定する（Ｓ１０６）。そして、プール領域の使用量が仮想ＬＵ解除閾値（９５％）を超えていれば、仮想ＬＵ削除処理（図７）を実行する（Ｓ１０７）。この仮想ＬＵ削除処理によって運用の性能劣化を避けつつ、少量の空き容量を作ることができる。
【００５７】
この仮想ＬＵ解除閾値は、プール領域の使用量が１００％に到達する前に仮想ＬＵ削除処理を完了する必要があるので、若干の余裕を持たせて９５％程度とすることが望ましいが、ストレージ装置の稼働状態（例えば、データ入出力要求の量）によって仮想ＬＵ解除閾値を変更することができる。
【００５８】
また、１回目の判定では仮想ＬＵ解除閾値を９５％とし、仮想ＬＵ削除処理中の２回目以後の判定では仮想ＬＵ解除閾値を高く設定する（例えば、９６％とする）ことによって、プール領域の使用量が仮想ＬＵ解除閾値を超えたことによって仮想ＬＵ削除処理が実行されているにもかかわらず、新たに仮想ＬＵ削除処理が実行されないようにすることもできる。
【００５９】
なお、プール領域の全容量が２００ＧＢ以上の場合には、プール領域の使用量の割合ではなく、プール領域の残容量が１０ＧＢ以下となったときに仮想ＬＵ削除処理を実行してもよい。
【００６０】
次に、プール領域の使用量が正ＬＵ解除閾値（９９％）を超えているか否かを判定する（Ｓ１０８）。この正ＬＵ解除閾値によって、プール領域の使用量が１００％に到達する可能性が極めて高く、緊急かつ確実に空き容量を確保する必要があることを判定する。そして、プール領域の使用量が正ＬＵ解除閾値（９９％）を超えていれば、仮想ＬＵ削除処理（図１１）を実行する（Ｓ１０７）。
【００６１】
なお、プール領域の全容量が２００ＧＢ以上の場合には、プール領域の使用量の割合ではなく、プール領域の残容量が２ＧＢ以下となったときに仮想ＬＵ削除処理を実行してもよい。
【００６２】
このように、複数段階で緊急度に応じた仮想ＬＵの削除を実行するので、プール領域の使用量を確実に１００％にさせないよういにすることができる。
【００６３】
次に、プール領域の使用量が全仮想ＬＵ解除閾値（１００％）に到達したか否かを判定する（Ｓ１１０）。そして、プール領域の使用量が１００％に達していれば、ペア状態管理テーブルに記録されている当該プール領域を使用している仮想ＬＵの状態を全てエラー状態（ＰＳＵＥ）にして、当該プール領域を使用している全ての仮想ＬＵを削除する。
【００６４】
このように、本発明の実施の形態の空き容量チェック処理では、管理者が介入することなく、指定条件に従って自動的に仮想ＬＵを削除することができ、プール領域の使用量が１００％となることを防止できる。また、プール領域の使用量に応じて段階的に仮想ＬＵを削除するので、運用上の性能劣化を最小限に抑えることができる。
【００６５】
図５は、本発明の実施の形態のＬＵ追加処理のフローチャートであり、空き容量チェック処理（図４のステップＳ１０３）から呼び出されて（すなわち、プール領域の使用量がＬＵ追加閾値（７０％）を超えたときに）、プールＬＵ管理プログラム１３２によって実行される。
【００６６】
まず、プール自動追加対象管理テーブル１４３（図６）を参照して、プール自動追加対象にＬＵが登録されているか否かを判定する（Ｓ１２１）。そして、プール自動追加対象にＬＵが登録されていなければ、追加すべきＬＵが存在しないので、ＬＵを追加することなくこの処理を終了する。一方、プール自動追加対象にＬＵが登録されていれば、ステップＳ１２２に進む。
【００６７】
ステップＳ１２２では、プール管理テーブル１４１（図６）を参照して、プール領域に登録されているＬＵが最大数に達しているか否かを判定する。このプール領域の登録数の最大値はプール管理テーブル１４１の容量によって定められる。そして、プール管理テーブル１４１に登録されているＬＵの数が既に最大数であれば、プール管理テーブル１４１に新たにＬＵを追加することができないので、ＬＵを追加することなくこの処理を終了する。一方、プール管理テーブル１４１に登録されているＬＵの数が最大数に満たなければ、ステップＳ１２３に進む。
【００６８】
ステップＳ１２３では、キャッシュメモリ１０７の管理領域に空きがあるか否かを判定する。これは、プール領域にＬＵを追加することに伴い差分情報管理ブロック２０４の容量を増加することが必要なためである。そして、キャッシュメモリ１０７の管理領域に空きがなければ、差分情報管理ブロック２０４の領域を増やすことができないので、ＬＵを追加することなくこの処理を終了する。一方、キャッシュメモリ１０７の管理領域に空きがあれば、ステップＳ１２４に進む。
【００６９】
Ｓ１２１〜Ｓ１２３の処理によってＬＵを追加する条件が確認されたら、移動するＬＵをプール自動追加対象管理テーブル１４３から削除し、プール管理テーブル１４１に追加して、差分ＬＵとして使用可能にする（Ｓ１２４）。
【００７０】
この移動するＬＵとして、複数のＬＵをプール管理テーブル１４１に事前に指定しておくことができる。このようにすることで、必要な分だけＬＵを追加することが可能となる。例えば、１００ＧＢのＬＵを１０個登録しておくと、プール領域の容量が３００ＧＢ不足した場合に１００ＧＢのＬＵを３個だけプール領域に追加して、あとの７個のＬＵは、別の用途に使用可能となる。
【００７１】
その後、従来から存在した差分情報管理ブロック２０４の最後の空きキューに、新たに増加した差分情報管理ブロック２０４の領域の空きキューのアドレスを設定し、新たに増加した空きキューを従来からの空きキューにつなげる（Ｓ１２５）。
【００７２】
図６は、本発明の実施の形態のＬＵ追加処理の説明図である。
【００７３】
正ＬＵ（ＬＵ０）に対して、スナップショット生成時のデータのイメージを提供する仮想ＬＵ（ＬＵ２）が設けられている。このＬＵ２は、正ＬＵのデータと、プール領域にある差分データとによって構成される仮想的な論理ユニットである。すなわち、ＬＵ２に対するアクセスがあると、そのデータが正ＬＵにあるのか、プール領域にある差分データなのかを判断して、差分ＬＵに対するアクセスを実現している。
【００７４】
プール領域に追加されるＬＵは、プール自動追加対象管理テーブル１４３に登録されているもの（ＬＵ６、ＬＵ７）を、プール自動追加対象管理テーブル１４３から削除し、プール管理テーブル１４１に追加する。これによって、追加されたＬＵが差分ＬＵとして使用可能となる。
【００７５】
このように本発明の実施の形態のＬＵ追加処理では、プール領域の容量を増加するためのＬＵを事前に複数用意しておき、プール領域の使用量がある閾値を越えた場合に、自動的にＬＵをプール領域に追加し、プール領域の容量を増加して、プール領域の使用量が１００％になるのを防ぐ。また、プール領域の使用量が少なくて、ＬＵを追加する必要がない場合は、ＬＵを他の用途に使用することができる。よって、不要なディスクをプール領域に事前に登録することなく、ディスクの容量を有効に活用することができる。
【００７６】
図７は、本発明の実施の形態の仮想ＬＵ削除処理（仮想ＬＵ単位）のフローチャートであり、空き容量チェック処理（図４のステップＳ１０７）から呼び出されて（すなわち、プール領域の使用量が仮想ＬＵ解除閾値（９５％）を超えたときに）、プールＬＵ管理プログラム１３２によって実行される。
【００７７】
まず、管理者が設定した情報に基づいて、削除する仮想ＬＵを決定する（Ｓ１３１）。この削除するＬＵの設定には様々な方法がある。一つは、最も古い世代の仮想ＬＵのデータを削除する方法である。また、管理者が指定した世代の仮想ＬＵのデータを削除することもできる。なお、管理者が削除するＬＵを設定する画面は後述する（図９、図１０）。
【００７８】
また、最も古い仮想ＬＵを選択するためには、全ての正ＬＵのペア情報管理テーブル（図８）を参照して、仮想ＬＵのペア状態とスナップショット作成日時を検索して、ペア状態がスプリット状態（ＰＳＵＳ）となっている仮想ＬＵの中で、最も古い仮想ＬＵを選択する。ＰＡＩＲ状態では仮想ＬＵの実体がないため、実体があるスプリット状態の仮想ＬＵを削除対象としている。
【００７９】
そして、仮想ＬＵ単位の削除処理を登録し、この処理をバックグラウンドで実行する（Ｓ１３２）。この削除処理は、決定された仮想ＬＵのデータを削除するものである。差分データは、複数世代に共通して用いられているものと、その削除対象の世代のみに用いられているものがあり、まず、差分データがこのいずれかであるかを判定する必要がある。差分情報管理ブロック２０４の世代管理微とマップを確認した結果、差分情報管理ブロック２０４が該当世代のみに使用されていれば、差分情報管理ブロック２０４のデータを更新して空きキューに変更する。一方、差分情報管理ブロック２０４を複数世代で共有されていれば、差分情報管理ブロック２０４の共有情報（世代管理ビットマップ）を更新する。
【００８０】
そして、ペア情報管理テーブル（図８）に記録されている当該削除対象となる仮想ＬＵのペア状態をエラー状態（ＰＳＵＥ）に変更してペアを解除し、この仮想ＬＵを使用不可にする（Ｓ１３３）。
【００８１】
以上説明した仮想ＬＵ削除処理はプール領域の使用量が仮想ＬＵ解除閾値（９５％）を超えたときに実行されるものであるが、削除対象の仮想ＬＵを削除しても、プール領域の使用量がＩ／Ｏ制限閾値（９０％）以下にならない場合には、当該仮想ＬＵの削除を行わないようにしてもよい。
【００８２】
このように仮想ＬＵ削除処理（仮想ＬＵ単位）は、削除対象の仮想ＬＵ（例えば、最も古い仮想ＬＵ等）のペア状態を解除し、スナップショットの維持に大きな影響を与えることなく、空き容量を作ることができる。また、管理者が設定した情報に基づいて削除する仮想ＬＵを決定するので、古いデータであっても残すべき仮想ＬＵを残して、ＬＵの空き容量を増やすことができる。また、仮想ＬＵ削除処理をバックグランドで実行するので、運用の性能劣化を避けつつ、データの空き容量を作ることができる。
【００８３】
図８は、本発明の実施の形態のペア情報管理テーブルの説明図である。
【００８４】
ペア情報管理テーブルは、正ＬＵ毎に設けられており、正ＬＵと各世代の仮想ＬＵのペア状態と、その仮想ＬＵの作成日時を記録して、正ＬＵと仮想ＬＵとの関係を管理している。例えば、０番の正ＬＵの１３番の仮想ＬＵは２００３年１１月２４日２２時３０分３０秒に作成され、現在もペア状態（ＰＡＩＲ）が維持されている。すなわち、１３番の仮想ＬＵは最新の仮想ＬＵであり、現在の差分データの書き込みが行われている。
【００８５】
また、０番の正ＬＵの０番の仮想ＬＵは２００３年１０月８日８時３０分３０秒にスナップショット作成要求が受け付けられることによって作成され、現在仮想ＬＵが作成されたスプリット状態（ＰＳＵＳ）にある。このスプリット状態の仮想ＬＵは削除対象となる。また、０番の正ＬＵの９番の仮想ＬＵは２００３年９月２０日１０時１０分１０秒に作成されたが、既に削除された仮想ＬＵであり、削除対象に登録されたエラー状態（ＰＳＵＥ）となっている。
【００８６】
ペア情報管理テーブルによって、削除対象のＬＵがチェック、削除登録がされ、削除する仮想ＬＵが決定される。なお、削除対象ＬＵの決定後、実際に差分データの削除はプール管理プログラム１５０が行う。
【００８７】
図９は、本発明の実施の形態の仮想ＬＵ削除処理の設定画面の説明図である。
【００８８】
図９（ａ）は仮想ＬＵ削除情報設定のメイン画面であり、「削除可能」タブが選択された状態を示す。この画面では、削除優先順位について、仮想ＬＵの作成日が「古い日付順から削除する。」のか、「指定した仮想ＬＵを削除する。」のかを選択する。「指定した仮想ＬＵを削除する。」が選択されると、「設定情報確認」ボタンがアクティブになる。そして「設定情報確認」ボタンを操作することによって、選択された正ＬＵに関する削除優先順位設定サブ画面（図９（ｂ））に移行する。削除優先順位設定サブ画面では、削除チェック欄をチェックすることによって、仮想ＬＵ毎に削除の許可を設定することができる。また、削除チェック欄にチェックを入れることによって優先順位を選択することができる。なお、優先順位は「高」「中」「低」のランクではなく、個別に順序を設定することもできる。
【００８９】
図１０は、本発明の実施の形態の仮想ＬＵ削除処理の設定画面の説明図である。
【００９０】
図１０（ａ）は仮想ＬＵ削除情報設定のメイン画面であり、「削除禁止」タブが選択された状態を示す。この画面では、正ＬＵを選択し、「設定情報確認」ボタンを操作することによって、選択された正ＬＵに関する削除禁止設定サブ画面（図１０（ｂ））に移行する。削除禁止設定サブ画面では、削除チェック欄をチェックすることによって、仮想ＬＵ毎に削除の禁止を設定することができる。
【００９１】
図１１は、本発明の実施の形態の仮想ＬＵ削除処理（正ＬＵ単位）のフローチャートであり、空き容量チェック処理（図４のステップＳ１０９）から呼び出されて（すなわち、プール領域の使用量が正ＬＵ解除閾値（９９％）を超えたときに）、プールＬＵ管理プログラム１３２によって実行される。
【００９２】
まず、ペア情報管理テーブルを参照して仮想ＬＵの削除中であるか否かを判定する。すなわち、ペア情報管理テーブルのペア状態欄が「ＰＳＵＳ」であれば仮想ＬＵの削除中であると判定する（Ｓ１４１）。その結果、仮想ＬＵの削除中であれば、仮想ＬＵの削除を優先して速やかにプール領域の空き容量を確保するために、ステップＳ１３６に移行し、現在行われている削除処理を継続する。一方、仮想ＬＵの削除中でなければ、新たに仮想ＬＵの削除を実行する。
【００９３】
そこで、まず、仮想ＬＵの削除に対応する正ＬＵを決定する（Ｓ１４２）。この正ＬＵは、管理者が予め定めたものを選択する他に、ホスト３からデータ書き込み要求を受けている正ＬＵを選択することができる。現在データ書き込み要求を送っているホストは、プール領域の空き容量が減少する原因となっている可能性が高いので、データ書き込み要求に係る正ＬＵを選択することによって、当該ホストからのアクセスを止めることができる。
【００９４】
そして、全てのホスト３からデータ書き込みを停止する（Ｓ１４３）。このデータ書き込みの停止によって、他の処理に優先して仮想ＬＵの削除処理を行うことができ、速やかに空き容量を確保することができる。
【００９５】
そして、選択された正ＬＵに関係する仮想ＬＵの削除を実行する（Ｓ１４４）。この削除処理は、選択された正ＬＵの正ＬＵアドレステーブル２０３を参照して、差分情報管理ブロック２０４に登録された内容を削除し、当該アドレスの差分情報管理ブロック２０４のデータを空きキューにすることによって、仮想ＬＵを削除し、プール領域の空き容量を確保する。この削除処理は、前述した仮想ＬＵ単位の削除処理（図７のＳ１３２）と比較して、差分情報管理ブロック２０４のデータ（世代管理ビットマップ）を参照して仮想ＬＵの世代を特定する必要がないので、迅速に仮想ＬＵを削除することができる。
【００９６】
そして、プール領域の空き容量が確保されたなら、ホスト３からの書き込み処理を再開する（Ｓ１４５）。
【００９７】
このように仮想ＬＵ削除処理（正ＬＵ単位）は、閾値を超えたときに削除対象のせいＬＵ（例えば、データ入出力要求があった正ＬＵ）に関係する全ての仮想ＬＵのペア状態をＰＳＵＥにして、ペア状態を解除する。このペア解除処理は、バックグランドにて行うが、１回のＪＯＢで大量（１００ＭＢ程度）を削除できる。すなわち、選択された正ＬＵに関係する全ての仮想ＬＵを削除するために全ホストからのデータ書き込みを一時的に停止して、正ＬＵ単位で全体（又は、１００ＭＢなどの所定の容量ごと）にデータを削除して、一定のプール領域の空き容量を確保したうえで、ホストからのデータ書き込み要求を再開させる。よって、即座にかつ確実にプール領域の空き容量を増やすことができる。また、特定の正ＬＵに関して仮想ＬＵを削除するので、当該正ＬＵに関係する特定のホストからのアクセスを止めることができる。
【００９８】
特許請求の範囲に記載した以外の本発明の観点の代表的なものとして、次のものがあげられる。
【００９９】
上位装置に接続され、前記上位装置からデータを受ける上位インタフェースと、
前記上位インタフェースに接続され、前記上位装置との間でやり取りされるデータ、及び前記上位装置との間でやり取りされるデータに関する制御情報を保存するメモリと、
前記メモリに接続され、前記上位装置との間でやり取りされるデータを、前記メモリに読み書きするように制御する複数のディスクインタフェースと、
前記複数のディスクインタフェースに接続され、前記複数のディスクインタフェースの制御のもとに、前記上位装置から送られたデータが格納される複数のディスクドライブと、
前記複数のディスクドライブの記憶領域を用いて生成される第１の論理ボリュームへのデータの読み書きを制御し、前記第１の論理ボリュームに格納された過去のデータを世代毎の差分データとして第２の論理ボリュームに書き込むように制御し、前記第２の論理ボリュームに格納されている前記世代毎の差分データの関係を管理するスナップショット管理テーブルを前記メモリの領域に設けることによって前記差分データを管理する制御プロセッサと、を有するディスクアレイ装置における制御方法であって、
前記制御プロセッサは、
前記第２の論理ボリュームに格納されたデータ量を管理し、
前記第２の論理ボリュームに格納されたデータ量が前記第２の論理ボリュームの容量の第１の割合を超えた場合、前記第２の論理ボリュームの容量を増加し、
前記第２の論理ボリュームに格納されたデータ量が前記第２の論理ボリュームの容量の第２の割合を超えた場合、前記第１の論理ボリュームに対するデータの書き込みを制限し、
前記第２の論理ボリュームに格納されたデータ量が前記第２の論理ボリュームの容量の第３の割合を超えた場合、前記第２の論理ボリュームに書き込まれた差分データのうち、特定の世代の差分データを削除し、
前記第２の論理ボリュームに格納されたデータ量が前記第２の論理ボリュームの容量の第４の割合を超えた場合、前記第２の論理ボリュームに書き込まれた差分データのうち、前記第１の論理ボリュームに対応するものを削除し、
前記第２の論理ボリュームに格納されたデータ量が前記第２の論理ボリュームの容量の第５の割合を超えた場合、前記第２の論理ボリュームに書き込まれた全ての差分データを削除するディスクアレイ装置の制御方法。
【０１００】
さらに、前記制御プロセッサは、最も古い世代の差分データを削除対象として決定するディスクアレイ装置の制御方法。
【０１０１】
さらに、前記制御プロセッサは、１回目の判定では前記第１の所定値を超えたか否かの判定をし、差分データ削除処理中の２回目以後の判定では前記第１の所定値より大きい第２の所定値を用いて、前記第２の論理ボリュームに格納されたデータ量が前記第２の所定値を超えたか否かの判定をするディスクアレイ装置の制御方法。
【０１０２】
さらに、前記制御プロセッサは、前記削除する差分データに対応する前記第１の論理ボリュームを決定する前に、前記差分データの削除処理中か否かを判定し、前記差分データの削除処理中であれば、現在実行中の削除処理を優先して実行するディスクアレイ装置の制御方法。
【図面の簡単な説明】
【０１０３】
【図１】本発明の実施の形態のディスクアレイ装置のブロック図である。
【図２】本発明の実施の形態の制御プログラムの説明図である。
【図３】本発明の実施の形態の差分ＬＵの管理方法の説明図である。
【図４】本発明の実施の形態の空き容量チェック処理のフローチャートである。
【図５】本発明の実施の形態のＬＵ追加処理のフローチャートである。
【図６】本発明の実施の形態のＬＵ追加処理の説明図である。
【図７】本発明の実施の形態の仮想ＬＵ削除処理のフローチャートである。
【図８】本発明の実施の形態のペア情報管理テーブルの説明図である。
【図９】本発明の実施の形態の仮想ＬＵ削除処理の設定画面の説明図である。
【図１０】本発明の実施の形態の仮想ＬＵ削除処理の設定画面の説明図である。
【図１１】本発明の実施の形態の仮想ＬＵ削除処理のフローチャートである。
【符号の説明】
【０１０４】
１  ディスクアレイ装置
２  ＳＡＮ
３  ホスト
４  ＬＡＮ
５  管理用端末装置
１０  ディスクアレイコントローラ
２０  ディスク
１０１  ＣＰＵ
１０２  メモリ
１０３  制御プログラム
１０４  データ転送コントローラ
１０５  フロントエンドインターフェース
１０６  バックエンドインターフェース
１０７  データバッファ
１０８  ＬＡＮインターフェース
【図１】
0004681249.tif 000002
【図２】
0004681249.tif 000003
【図３】
0004681249.tif 000004
【図４】
0004681249.tif 000005
【図５】
0004681249.tif 000006
【図６】
0004681249.tif 000007
【図７】
0004681249.tif 000008
【図８】
0004681249.tif 000009
【図９】
0004681249.tif 000010
【図１０】
0004681249.tif 000011
【図１１】
0004681249.tif 000012