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