(57)【要約】【課題】仮想ボリュームに割り当てられる物理的な記憶領域を有効に利用する。【解決手段】複数の物理記憶領域を含む記憶媒体を備えるストレージシステムであって、前記ストレージシステムは、複数の仮想的な記憶領域を含む論理ボリュームを前記ホスト計算機に認識させ、前記論理ボリュームの前記仮想的な記憶領域に割り当てられた前記物理記憶領域からデータを読み出し、前記読み出されたデータが所定のパターンのデータのみを含むか否かを判定し、前記読み出されたデータが前記所定のパターンのデータのみを含む場合、前記仮想的な記憶領域への前記物理記憶領域の割り当てを解除する。【選択図】図１
2010086394.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算機によって書き込まれたデータを格納するストレージシステムであって、
前記ストレージシステムは、複数の物理記憶領域を含む記憶媒体と、前記記憶媒体への前記データの書き込み及び前記記憶媒体からの前記データの読み出しを制御するコントローラと、を備え、
前記コントローラは、第１論理ボリュームを前記ホスト計算機に認識させ、
前記第１論理ボリュームの記憶領域空間は、複数のアドレス範囲を含み、
前記コントローラは、
前記各アドレス範囲への前記各物理記憶領域の割り当てを管理する情報を保持し、
前記第１論理ボリュームのいずれかの前記アドレス範囲に対するデータ書き込み要求を受信すると、前記受信したデータ書き込み要求によって指定されたアドレス範囲に前記物理記憶領域が割り当てられているか否かを判定し、
前記指定されたアドレス範囲に前記物理記憶領域が割り当てられていない場合、前記指定されたアドレス範囲に、いずれの前記アドレス範囲にもまだ割り当てられていない前記物理記憶領域を割り当て、
前記指定されたアドレス範囲に割り当てられた物理記憶領域に、前記データ書き込み要求によって書き込みを要求されたデータを書き込み、
所定の条件が満たされた場合、前記第１論理ボリュームの前記アドレス範囲に割り当てられた前記物理記憶領域からデータを読み出し、
前記読み出されたデータが所定のパターンのデータのみを含むか否かを判定し、
前記読み出されたデータが前記所定のパターンのデータのみを含む場合、前記アドレス範囲への前記物理記憶領域の割り当てを解除し、
前記第１論理ボリュームのいずれかの前記アドレス範囲に対するデータ読み出し要求を受信すると、前記データ読み出し要求によって指定されたアドレス範囲に前記物理記憶領域が割り当てられているか否かを判定し、
前記指定されたアドレス範囲に前記物理記憶領域が割り当てられている場合、前記指定されたアドレス範囲に割り当てられた物理記憶領域からデータを読み出して、前記読み出されたデータを前記データ読み出し要求の送信元に送信し、
前記指定されたアドレス範囲に前記物理記憶領域が割り当てられていない場合、前記所定のパターンのデータを前記データ読み出し要求の送信元に送信することを特徴とするストレージシステム。
【請求項２】
前記コントローラは、前記複数の物理記憶領域のうち、前記第１論理ボリュームの前記アドレス範囲に割り当てられた物理記憶領域の量が所定の閾値を超えた場合、前記所定の条件が満たされたと判定することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記コントローラは、さらに、第２論理ボリュームを前記ホスト計算機に認識させ、
前記第２論理ボリュームの全ての記憶領域空間に、前記物理記憶領域が割り当てられ、
前記コントローラは、前記第２論理ボリュームから読み出されたデータの前記第１論理ボリュームへの書き込みが実行された場合、前記所定の条件が満たされたと判定することを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記ストレージシステムには、他のストレージシステムが接続され、
前記コントローラは、前記他のストレージシステムから読み出されたデータの前記第１論理ボリュームへの書き込みが実行された場合、前記所定の条件が満たされたと判定することを特徴とする請求項１に記載のストレージシステム。
【請求項５】
前記ストレージシステムには、磁気テープ記憶装置が接続され、
前記磁気テープ記憶装置には、データを格納する一つ以上の磁気テープ記憶媒体を備え、
前記コントローラは、前記磁気テープ記憶媒体に格納されたデータの前記第１論理ボリュームへのコピーが実行された場合、前記所定の条件が満たされたと判定することを特徴とする請求項１に記載のストレージシステム。
【請求項６】
前記ストレージシステムには、他のストレージシステムが接続され、
前記コントローラは、
前記物理記憶領域に格納されたデータを前記他のストレージシステムにコピーする要求を受信すると、前記物理記憶領域に格納されたデータを読み出し、
前記読み出されたデータが前記所定のパターンのデータのみを含むか否かを判定し、
前記読み出されたデータが前記所定のパターンのデータのみを含む場合、前記読み出されたデータを前記他のストレージシステムに送信せず、
前記読み出されたデータが前記所定のパターン以外のデータを含む場合、前記読み出されたデータを前記他のストレージシステムに送信することを特徴とする請求項１に記載のストレージシステム。
【請求項７】
前記所定のパターンのデータは、０のみを含むデータであることを特徴とする請求項１に記載のストレージシステム。
【請求項８】
前記所定のパターンのデータは、前記第１論理ボリュームの前記アドレス範囲に割り当てられた全ての前記物理記憶領域に格納されたデータのうち、最も出現頻度の高いデータと同一のパターンのデータであることを特徴とする請求項１に記載のストレージシステム。
【請求項９】
ホスト計算機によって書き込まれたデータを格納するストレージシステムであって、
前記ストレージシステムは、複数の物理記憶領域を含む記憶媒体と、前記記憶媒体への前記データの書き込み及び前記記憶媒体からの前記データの読み出しを制御するコントローラと、を備え、
前記コントローラは、論理ボリュームを前記ホスト計算機に認識させ、
前記論理ボリュームの記憶領域空間は、複数のアドレス範囲を含み、
前記コントローラは、
前記アドレス範囲への前記物理記憶領域の割り当てを管理する情報を保持し、
いずれかの前記アドレス範囲に対するデータ書き込み要求を受信すると、前記受信したデータ書き込み要求によって指定されたアドレス範囲に前記物理記憶領域が割り当てられているか否かを判定し、
前記指定されたアドレス範囲に前記物理記憶領域が割り当てられていない場合、前記データ書き込み要求によって書き込みを要求されたデータが所定のパターンのデータのみを含むか否かを判定し、
前記書き込みを要求されたデータが前記所定のパターンのデータのみを含む場合、前記指定されたアドレス範囲に前記物理記憶領域を割り当てず、
前記データ書き込み要求によって書き込みを要求されたデータが前記所定のパターン以外のデータを含む場合、前記指定されたアドレス範囲に、いずれの前記アドレス範囲にもまだ割り当てられていない前記物理記憶領域を割り当て、
前記指定されたアドレス範囲に割り当てられた物理記憶領域に、前記書き込みを要求されたデータを書き込み、
いずれかの前記アドレス範囲に対するデータ読み出し要求を受信すると、前記データ読み出し要求によって指定されたアドレス範囲に前記物理記憶領域が割り当てられているか否かを判定し、
前記指定されたアドレス範囲に前記物理記憶領域が割り当てられている場合、前記指定されたアドレス範囲に割り当てられた物理記憶領域からデータを読み出して、前記読み出されたデータを前記データ読み出し要求の送信元に送信し、
前記指定されたアドレス範囲に前記物理記憶領域が割り当てられていない場合、前記所定のパターンのデータを前記データ読み出し要求の送信元に送信することを特徴とするストレージシステム。
【請求項１０】
ホスト計算機によって書き込まれたデータを格納するストレージシステムであって、
前記ストレージシステムは、
複数の物理記憶領域を含む記憶媒体と、前記記憶媒体への前記データの書き込み及び前記記憶媒体からの前記データの読み出しを制御するコントローラと、を備え、
他のストレージシステム及び磁気テープ記憶装置に接続され、
前記コントローラは、第１論理ボリューム及び第２論理ボリュームを前記ホスト計算機に認識させ、
前記第１論理ボリュームの記憶領域空間は、複数のアドレス範囲を含み、
前記第２論理ボリュームの全ての記憶領域空間に、前記物理記憶領域が割り当てられ、
前記コントローラは、
前記各アドレス範囲への前記各物理記憶領域の割り当てを管理する情報を保持し、
前記第１論理ボリュームのいずれかの前記アドレス範囲に対するデータ書き込み要求を受信すると、前記受信したデータ書き込み要求によって指定されたアドレス範囲に前記物理記憶領域が割り当てられているか否かを判定し、
前記指定されたアドレス範囲に前記物理記憶領域が割り当てられていない場合、前記指定されたアドレス範囲に、いずれの前記アドレス範囲にもまだ割り当てられていない前記物理記憶領域を割り当て、
前記指定されたアドレス範囲に割り当てられた物理記憶領域に、前記データ書き込み要求によって書き込みを要求されたデータを書き込み、
前記複数の物理記憶領域のうち、前記第１論理ボリュームの前記アドレス範囲に割り当てられた物理記憶領域の量が所定の閾値を超えたか、前記第２論理ボリュームから読み出されたデータの前記第１論理ボリュームへの書き込みが実行されたか、前記他のストレージシステムから読み出されたデータの前記第１論理ボリュームへの書き込みが実行されたか、又は、前記磁気テープ記憶装置に格納されたデータの前記第１論理ボリュームへのコピーが実行された場合、前記第１論理ボリュームの前記アドレス範囲に割り当てられた前記物理記憶領域からデータを読み出し、
前記読み出されたデータが所定のパターンのデータのみを含むか否かを判定し、
前記読み出されたデータが前記所定のパターンのデータのみを含む場合、前記アドレス範囲への前記物理記憶領域の割り当てを解除し、
前記第１論理ボリュームのいずれかの前記アドレス範囲に対するデータ読み出し要求を受信すると、前記データ読み出し要求によって指定されたアドレス範囲に前記物理記憶領域が割り当てられているか否かを判定し、
前記指定されたアドレス範囲に前記物理記憶領域が割り当てられている場合、前記指定されたアドレス範囲に割り当てられた物理記憶領域からデータを読み出して、前記読み出されたデータを前記データ読み出し要求の送信元に送信し、
前記指定されたアドレス範囲に前記物理記憶領域が割り当てられていない場合、前記所定のパターンのデータを前記データ読み出し要求の送信元に送信し、
前記物理記憶領域に格納されたデータを前記他のストレージシステムにコピーする要求を受信すると、前記物理記憶領域に格納されたデータを読み出し、
前記読み出されたデータが前記所定のパターンのデータのみを含むか否かを判定し、
前記読み出されたデータが前記所定のパターンのデータのみを含む場合、前記読み出されたデータを前記他のストレージシステムに送信せず、
前記読み出されたデータが前記所定のパターン以外のデータを含む場合、前記読み出されたデータを前記他のストレージシステムに送信し、
前記所定のパターンのデータは、０のみを含むデータであることを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書に開示される技術は、ストレージシステムにおける記憶領域の管理に関し、特に、仮想的な記憶領域に対する実記憶領域の割り当ての管理に関する。
【背景技術】
【０００２】
計算機及びストレージシステムを用いた計算機システムにおいては、一般に、ストレージシステムに格納されるデータ量が増加する傾向がある。このような増加に対応するため、当初から十分なデータ記憶容量を持ったストレージシステムを導入すれば、高い導入コストが発生する。一方、データ量の増加に伴って、順次ストレージシステムのデータ記憶容量を拡張すれば、拡張のための管理コストが発生する。このような導入コスト及び管理コストを軽減するために、ストレージシステムが仮想的な記憶領域を計算機に提供する技術が開示されている（例えば特許文献１参照）。
【０００３】
この技術によれば、十分なデータ記憶容量を持った仮想的な記憶領域が定義されるが、初期状態において、仮想的な記憶領域の全体に物理的な記憶領域（例えば、ハードディスクドライブ上の記憶領域）が割り当てられていない。その後、仮想的な記憶領域に対するデータの書き込み要求に応じて、仮想的な記憶領域に物理的な記憶領域が順次割り当てられる。定義された仮想的な記憶領域のうち、まだ使用されていない領域には物理的な記憶領域が割り当てられないため、物理的な記憶領域が有効に利用される。
【特許文献１】特開２００３−１５９１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記のような仮想的な記憶領域のうち、物理的な記憶領域が割り当てられていない領域に対するデータの読み出し要求を受信すると、ストレージシステムは、特定のパターンのデータ（例えば、「０」の連続）を返す。このため、例えば、仮想的な記憶領域全体からデータを読み出して、それをテープ記憶媒体に格納すると、物理的な記憶領域が割り当てられていない領域から読み出されたデータとして、上記の特定のパターンが格納される。その後、テープ記憶媒体に格納されたデータが仮想的な記憶領域にリストアされると、上記の特定のパターンが仮想的な記憶領域に書き込まれるため、結局、仮想的な記憶領域の全体に物理的な記憶領域が割り当てられる。その結果、物理的な記憶領域を有効に利用することができなくなる。
【課題を解決するための手段】
【０００５】
本願で開示する代表的な発明は、ホスト計算機によって書き込まれたデータを格納するストレージシステムであって、前記ストレージシステムは、複数の物理記憶領域を含む記憶媒体と、前記記憶媒体への前記データの書き込み及び前記記憶媒体からの前記データの読み出しを制御するコントローラと、を備え、前記コントローラは、第１論理ボリュームを前記ホスト計算機に認識させ、前記第１論理ボリュームの記憶領域空間は、複数のアドレス範囲を含み、前記コントローラは、前記各アドレス範囲への前記各物理記憶領域の割り当てを管理する情報を保持し、前記第１論理ボリュームのいずれかの前記アドレス範囲に対するデータ書き込み要求を受信すると、前記受信したデータ書き込み要求によって指定されたアドレス範囲に前記物理記憶領域が割り当てられているか否かを判定し、前記指定されたアドレス範囲に前記物理記憶領域が割り当てられていない場合、前記指定されたアドレス範囲に、いずれの前記アドレス範囲にもまだ割り当てられていない前記物理記憶領域を割り当て、前記指定されたアドレス範囲に割り当てられた物理記憶領域に、前記データ書き込み要求によって書き込みを要求されたデータを書き込み、所定の条件が満たされた場合、前記第１論理ボリュームの前記アドレス範囲に割り当てられた前記物理記憶領域からデータを読み出し、前記読み出されたデータが所定のパターンのデータのみを含むか否かを判定し、前記読み出されたデータが前記所定のパターンのデータのみを含む場合、前記アドレス範囲への前記物理記憶領域の割り当てを解除し、前記第１論理ボリュームのいずれかの前記アドレス範囲に対するデータ読み出し要求を受信すると、前記データ読み出し要求によって指定されたアドレス範囲に前記物理記憶領域が割り当てられているか否かを判定し、前記指定されたアドレス範囲に前記物理記憶領域が割り当てられている場合、前記指定されたアドレス範囲に割り当てられた物理記憶領域からデータを読み出して、前記読み出されたデータを前記データ読み出し要求の送信元に送信し、前記指定されたアドレス範囲に前記物理記憶領域が割り当てられていない場合、前記所定のパターンのデータを前記データ読み出し要求の送信元に送信することを特徴とする。
【発明の効果】
【０００６】
本発明の一実施形態によれば、特定のパターンのデータが書き込まれた領域に物理的な記憶領域が割り当てられないようにすることによって、物理的な記憶領域の有効利用を維持することができる。
【発明を実施するための最良の形態】
【０００７】
最初に、本発明の第１の実施形態を、図面を用いて詳細に説明する。
【０００８】
図１は、本発明の第１の実施形態の計算機システムの構成を示すブロック図である。
【０００９】
本実施形態の計算機システムは、ストレージシステム１００Ａ、ストレージシステム１００Ｂ、テープライブラリ１２０、ホスト計算機１３０、及び、それらを接続するネットワーク１４０を備える。
【００１０】
ストレージシステム１００Ａは、ホスト計算機１３０によって書き込まれたデータを格納する。具体的には、ストレージシステム１００Ａは、ディスクドライブ１１０Ａ〜１１０Ｃ及びコントローラ１０１を備える。
【００１１】
ディスクドライブ１１０Ａ〜１１０Ｃは、ホスト計算機１３０によって書き込まれたデータを格納する記憶媒体を含む記憶デバイスである。以下、ディスクドライブ１１０Ａ〜１１０Ｃに共通する説明をする場合、これらを総称してディスクドライブ１１０とも記載する。図１には三つのディスクドライブ１１０を示すが、ストレージシステム１００Ａはいくつのディスクドライブ１１０を備えてもよい。複数のディスクドライブ１１０がＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）を構成してもよい。
【００１２】
本実施形態のディスクドライブ１１０は、記憶媒体として磁気ディスクを備えるハードディスクドライブであるが、これはいかなる種類の記憶デバイスによって置き換えられてもよい。例えば、ディスクドライブ１１０は、フラッシュメモリのような不揮発性の半導体記憶デバイスによって置き換えられてもよい。
【００１３】
コントローラ１０１は、ディスクドライブ１１０へのデータの書き込み及びディスクドライブ１１０からのデータの読み出しを制御する。コントローラ１０１は、チャネルアダプタ１０２、共有メモリ１０３、ディスクアダプタ１０４、キャッシュメモリ１０５、及び、それらを相互に接続する内部ネットワーク１１６を備える。
【００１４】
チャネルアダプタ１０２は、ＣＰＵ１０６、ローカルメモリ１０７、ポート１０８及びポート１０９を備える。
【００１５】
ＣＰＵ１０６は、ローカルメモリ１０７に格納されたプログラムを実行するプロセッサである。
【００１６】
ローカルメモリ１０７は、ＣＰＵ１０６によって実行されるプログラム及びＣＰＵ１０６によって参照されるデータを格納する。本実施形態のローカルメモリ１０７には、少なくとも、Ｉ／Ｏ制御プログラム１１２及び割り当て管理プログラム１１３が格納される。これらについては後で詳細に説明する。なお、以下の説明において、Ｉ／Ｏ制御プログラム１１２又は割り当て管理プログラム１１３によって実行される処理は、実際には、それらのプログラムを実行するＣＰＵ１０６によって実行される。
【００１７】
ポート１０８は、ネットワーク１４０に接続され、ホスト計算機１３０との通信に使用される。ポート１０９は、内部ネットワーク１１６に接続され、ディスクアダプタ１０４等との通信に使用される。
【００１８】
共有メモリ１０３には、チャネルアダプタ１０２等によって参照される制御情報等が格納される。本実施形態の共有メモリ１０３には、少なくとも、割り当て管理テーブル１１４及びペア管理テーブル１１５が格納される。これらについては後で詳細に説明する。
【００１９】
ディスクアダプタ１０４は、ディスクドライブ１１０に接続され、チャネルアダプタ１０２による制御に従ってディスクドライブ１１０へのデータの書き込み及び読み出しを制御する。
【００２０】
キャッシュメモリ１０５には、ディスクドライブ１１０に書き込まれるデータ及びディスクドライブ１１０から読み出されたデータが一時的に格納される。
【００２１】
ストレージシステム１００Ａは、複数のチャネルアダプタ１０２、複数の共有メモリ１０３、複数のディスクアダプタ１０４及び複数のキャッシュメモリ１０５を備えてもよい。
【００２２】
内部ネットワーク１１６は、例えば、バス又はファブリックスイッチによって実現される。
【００２３】
コントローラ１０１は、ディスクドライブ１１０の記憶媒体によって実現される物理的な記憶領域を、複数の論理ボリューム１１１として管理する。図１に示す論理ボリューム１１１Ａ及び１１１Ｂは、それぞれ、複数の論理ボリューム１１１の一つである。コントローラ１０１は、任意の数の論理ボリューム１１１を管理することができる。論理ボリューム１１１については後で詳細に説明する（図２参照）。
【００２４】
ストレージシステム１００Ｂの構成は、ストレージシステム１００Ａと同様であるため、図示及び説明を省略する。
【００２５】
以下、ストレージシステム１００Ａ及び１００Ｂに共通する説明をする場合、これらを総称してストレージシステム１００とも記載する。
【００２６】
テープライブラリ１２０は、主にストレージシステム１００に格納されたデータをバックアップするために使用される。テープライブラリ１２０は、テープドライブ１２１及び一つ以上のテープ記憶媒体１２２を備える。
【００２７】
各テープ記憶媒体１２２は、例えば、カートリッジに格納された１巻のテープであってもよい。図１に示すテープ記憶媒体１２２Ａ及び１２２Ｂは、それぞれ、複数のテープ記憶媒体１２２の一つである。
【００２８】
テープドライブ１２１は、テープ記憶媒体１２２を装着し、テープ記憶媒体１２２へのデータの書き込み及びテープ記憶媒体１２２からのデータの読み出しを実行する。例えば、テープドライブ１２１は、論理ボリューム１１１に格納されたデータの複製を、一つ又は複数のテープ記憶媒体１２２に書き込んでもよい。
【００２９】
ホスト計算機１３０は、相互に接続されたＣＰＵ１３１、メモリ１３２及びインタフェース１３３を備える。
【００３０】
ＣＰＵ１３１は、メモリ１３２に格納されたプログラムを実行するプロセッサである。
【００３１】
メモリ１３２には、ＣＰＵ１３１によって実行されるプログラム及びＣＰＵ１３１によって参照されるデータが格納される。本実施形態のメモリ１３２には、少なくとも、アプリケーションプログラム１３４が格納される。
【００３２】
インタフェース１３３は、ネットワーク１４０に接続され、ストレージシステム１００との通信を実行する。
【００３３】
ＣＰＵ１３１は、アプリケーションプログラム１３４を実行し、必要に応じて、論理ボリューム１１１に対するデータ書き込み要求及びデータ読み出し要求を、インタフェース１３３を介してストレージシステム１００に送信する。
【００３４】
ネットワーク１４０は、いかなる種類のものであってもよい。典型的には、ネットワーク１４０は、ファイバーチャネルプロトコルが適用される、いわゆるストレージエリアネットワーク（ＳＡＮ）である。その場合、ネットワーク１４０は、ファイバーチャネルスイッチ（図示省略）を含んでもよい。
【００３５】
図２は、本発明の第１の実施形態のストレージシステム１００によって管理される論理ボリューム１１１の説明図である。
【００３６】
図２に示す計算機システムは、図１に示したものに対応するが、論理ボリューム１１１の説明に必要がないハードウェア構成の図示は省略されている。
【００３７】
本実施形態のストレージシステム１００のコントローラ１０１は、３種類の論理ボリューム１１１、すなわち、仮想ボリューム２０１、実ボリューム２０２及びプールボリューム２０３を管理する。具体的には、図２の例において、ストレージシステム１００Ａは、仮想ボリューム２０１Ａ、仮想ボリューム２０１Ｂ、実ボリューム２０２Ａ、プールボリューム２０３Ａ及びプールボリューム２０３Ｂを管理する。ストレージシステム１００Ｂは、仮想ボリューム２０１Ｃ、仮想ボリューム２０１Ｄ、実ボリューム２０２Ｂ、プールボリューム２０３Ｃ及びプールボリューム２０３Ｄを管理する。
【００３８】
以下、仮想ボリューム２０１Ａ〜２０１Ｄに共通する説明をする場合、これらを総称して仮想ボリューム２０１とも記載する。同様に、実ボリューム２０２Ａ及び２０２Ｂを総称して実ボリューム２０２、プールボリューム２０３Ａ〜２０３Ｄを総称してプールボリューム２０３とも記載する。後述するプール２０４Ａ及び２０４Ｂについても、これらを総称してプール２０４とも記載する。
【００３９】
コントローラ１０１は、各実ボリューム２０２の記憶領域空間をホスト計算機１３０に提供する。ホスト計算機１３０は、各実ボリューム２０２を一つの記憶デバイスと認識し、各実ボリューム２０２を対象とするデータ書き込み要求及びデータ読み出し要求を発行する。
【００４０】
各実ボリューム２０２の全ての記憶領域空間には、ディスクドライブ１１０の物理的な記憶領域が割り当てられる。コントローラ１０１は、実ボリューム２０２に対するデータ書き込み要求又はデータ読み出し要求を受信すると、受信した要求によってアクセス先として指定されたアドレスに対応する記憶領域に割り当てられている物理的な記憶領域に対して、データの書き込み又は読み出しを実行する。
【００４１】
同様に、コントローラ１０１は、各仮想ボリューム２０１の記憶領域空間をホスト計算機１３０に提供する。ホスト計算機１３０は、各仮想ボリューム２０１を一つの記憶デバイスと認識し、各仮想ボリューム２０１を対象とするデータ書き込み要求及びデータ読み出し要求を発行する。
【００４２】
しかし、各仮想ボリューム２０１の全ての記憶領域空間に、ディスクドライブ１１０の物理的な記憶領域が割り当てられていない場合がある。コントローラ１０１は、各仮想ボリューム２０１の記憶領域空間の任意のアドレス範囲への物理的な記憶領域の割り当てを制御することができる。
【００４３】
通常、仮想ボリューム２０１が作成された時点で、その仮想ボリューム２０１の記憶領域空間のいずれのアドレス範囲にも、物理的な記憶領域が割り当てられていない。その後、コントローラ１０１は、仮想ボリューム２０１のいずれかのアドレスに対するデータ書き込み要求を受信すると、その書き込み先のアドレスを含むアドレス範囲に物理的な記憶領域を割り当て、割り当てられた物理的な記憶領域にデータを格納する。
【００４４】
なお、仮想ボリューム２０１のアドレス範囲には、物理的な記憶領域が直接的に割り当てられるわけではなく、後述するように、プールボリューム２０３の記憶領域空間（より具体的には、そのアドレス範囲）が割り当てられる。これによって、仮想ボリューム２０１への物理的な記憶領域の割り当てが実現される。
【００４５】
このような仮想ボリューム２０１に対するデータ書き込み及び読み出しの処理については後述する。
【００４６】
プールボリューム２０３は、実ボリューム２０２と同様の論理ボリューム１１１である。すなわち、プールボリューム２０３の全ての記憶領域空間には、ディスクドライブ１１０の物理的な記憶領域が割り当てられる。
【００４７】
しかし、実ボリューム２０２と異なり、プールボリューム２０３の記憶領域空間は、ホスト計算機に直接提供されない。プールボリューム２０３の記憶領域空間は、後述するように、必要に応じて、仮想ボリューム２０１の記憶領域空間に割り当てられる。
【００４８】
本実施形態では、一つ以上のプールボリューム２０３が一つのプール２０４を構成する。プール２０４は、物理的な記憶領域の供給元として仮想ボリューム２０１と対応付けられる。図２の例では、プール２０４Ａが、プールボリューム２０３Ａ及び２０３Ｂを含む複数のプールボリューム２０３によって構成される。プール２０４Ａは、仮想ボリューム２０１Ａ及び２０１Ｂと対応付けられる。
【００４９】
この例では、仮想ボリューム２０１Ａに物理的な記憶領域を割り当てる必要が生じた場合、仮想ボリューム２０１Ａに対応付けられたプール２０４Ａに属するいずれかのプールボリューム２０３（例えばプールボリューム２０３Ａ）の記憶領域空間が割り当てられる。仮想ボリューム２０１Ｂに物理的な記憶領域を割り当てる必要が生じた場合、仮想ボリューム２０１Ｂに対応付けられたプール２０４Ａに属するいずれかのプールボリューム２０３（例えばプールボリューム２０３Ａ）の記憶領域空間が割り当てられる。
【００５０】
同様に、プール２０４Ｂは、プールボリューム２０３Ｃ及び２０３Ｄを含む複数のプールボリューム２０３によって構成される。プール２０４Ｂは、仮想ボリューム２０１Ｃ及び２０１Ｄと対応付けられる。
【００５１】
図３は、本発明の第１の実施形態における仮想ボリューム２０１への物理的な記憶領域の割り当ての説明図である。
【００５２】
図３は、説明を簡単にするため、仮想ボリューム２０１Ａにプール２０４Ａが対応付けられ、プール２０４Ａがプールボリューム２０３Ａのみを含む場合を例として示す。
【００５３】
仮想ボリューム２０１Ａの記憶領域空間への物理的な記憶領域の割り当ては、所定の大きさのアドレス範囲（例えば、後述するブロックアドレスの範囲）ごとに管理される。その所定の大きさのアドレス範囲をページと記載する。言い換えると、仮想ボリューム２０１のページは、所定の大きさの仮想的な記憶領域である。
【００５４】
図３の例では、仮想ボリューム２０１Ａのページ３０１Ａにプールボリューム２０３Ａのページ３０１Ｃが割り当てられている。この割り当ては、割り当て管理テーブル１１４によって管理される。
【００５５】
既に説明したように、プールボリューム２０３Ａの全てのページに物理的な記憶領域が割り当てられている。このため、例えば、ページ３０１Ａ内のいずれかのアドレスを対象とするデータ書き込み要求が発行された場合、ページ３０１Ｃに割り当てられた物理的な記憶領域に書き込まれる。このように、ページ３０１Ｃに割り当てられた物理的な記憶領域は、割り当て管理テーブル１１４を介して、ページ３０１Ａに割り当てられているとみなすことができる。言い換えると、プールボリューム２０３Ａの全てのページに物理的な記憶領域が割り当てられているため、プールボリューム２０３Ａの各ページを物理的な記憶領域とみなすことができる。
【００５６】
一方、仮想ボリューム２０１Ａのページ３０１Ｂには、プールボリューム２０３Ａのどのページも割り当てられていない。
【００５７】
プールボリューム２０３Ａの所定のアドレス範囲３０３（正確には、そのアドレス範囲３０３に割り当てられた物理的な記憶領域）には、特定のパターンのデータが格納される。この特定のパターンとは、あらかじめ定められたものである。例えば、特定のパターンのデータは、「０」のみからなるデータであってもよい。所定のアドレス範囲３０３は、仮想ボリューム２０１Ａ内のいずれのページにも割り当てられることがない。
【００５８】
各ページは、所定の数のブロックを含んでもよい。ここで、ブロックとは、データ書き込み要求（又はデータ読み出し要求）によってデータの書き込み先（又はデータの読み出し対象）として指定される領域の最小単位である。各ブロックは、固定されたサイズ（例えば５１２バイト）を有し、ブロックアドレスによって識別される。図３の例では、ページ３０１Ａに含まれるブロック３０２Ａに、ページ３０１Ｃに含まれるブロック３０２Ｃが割り当てられている。この場合、ブロック３０２Ａに書き込まれたデータは、実際には、ブロック３０２Ｃに割り当てられた物理的な記憶領域に格納される。
【００５９】
一方、図３の例では、ページ３０１Ｂにブロック３０２Ｂが含まれる。しかし、ページ３０１Ｂにプールボリューム２０３Ａのページが割り当てられていないため、ブロック３０２Ｂにはプールボリューム２０３Ａのブロックが割り当てられていない。
【００６０】
図４は、本発明の第１の実施形態の割り当て管理テーブル１１４の説明図である。
【００６１】
割り当て管理テーブル１１４は、共有メモリ１０３に格納され、仮想ボリューム２０１への物理的な記憶領域の割り当てを管理する情報を含む。具体的には、割り当て管理テーブル１１４は、仮想ページ４０１、実ページ４０２及び破棄マーク４０３を含む。
【００６２】
仮想ページ４０１は、仮想ボリューム２０１の各ページを識別する情報である。例えば、仮想ページ４０１は、仮想ボリューム２０１の各ページの先頭アドレスであってもよい。
【００６３】
実ページ４０２は、仮想ボリューム２０１の各ページに割り当てられたプールボリューム２０３のページを識別する情報である。仮想ページ４０１と同様、実ページ４０２は、プールボリューム２０３の各ページの先頭アドレスであってもよい。仮想ボリューム２０１のあるページにプールボリューム２０３のページが割り当てられていない場合、その仮想ボリューム２０１のページに対応する実ページ４０２として無効値が登録される。
【００６４】
破棄マーク４０３は、仮想ボリューム２０１のページを破棄すること（すなわち、仮想ボリューム２０１のページへのプールボリューム２０３のページの割り当てを解除すること）を示すフラグである。破棄マーク４０３を使用したページ破棄判定処理及びページ破棄処理については後で詳細に説明する。
【００６５】
図４の例では、割り当て管理テーブル１１４の先頭のエントリの仮想ページ４０１及び実ページ４０２として、それぞれ、「０ｘ００００」及び「０ｘ００００」が登録されている。一方、２番目のエントリの仮想ページ４０１及び実ページ４０２として、それぞれ、「０ｘ００００」及び無効値が登録されている。これは、仮想ボリューム２０１Ａのブロックアドレス「０ｘ００００」から「０ｘ４ＦＦＦ」までの範囲に対応するページ（例えば、図３のページ３０１Ａ）に、プールボリューム２０３Ａのブロックアドレス「０ｘ００００」から「０ｘ４ＦＦＦ」までの範囲に対応するページ（例えば、図３のページ３０１Ｃ）が割り当てられていること、及び、仮想ボリューム２０１Ａのブロックアドレス「０ｘ５０００」から「０ｘ９ＦＦＦ」までの範囲に対応するページ（例えば、図３のページ３０１Ｂ）に、プールボリューム２０３Ａのページが割り当てられていないこと、を示す。
【００６６】
図５は、本発明の第１の実施形態のペア管理テーブル１１５の説明図である。
【００６７】
ペア管理テーブル１１５は、共有メモリ１０３に格納され、コピーペアを管理する情報を含む。ここで、コピーペアについて説明する。
【００６８】
コピーペアとは、論理ボリューム１１１と、その論理ボリューム１１１に格納されたデータの複製を格納する（すなわちコピー先の）論理ボリューム１１１との組（ペア）である。例えば論理ボリューム１１１のバックアップを目的として、コピーペアが作成される。一つのストレージシステム１００内の二つの論理ボリューム１１１からなるコピーペアが作成されてもよいし、それぞれが異なるストレージシステム１００に含まれる二つの論理ボリューム１１１からなるコピーペアが作成されてもよい。
【００６９】
コピー元の論理ボリューム１１１及びコピー先の論理ボリューム１１１は、それぞれ、仮想ボリューム２０１であってもよいし、実ボリューム２０２であってもよい。以下、コピー元の論理ボリューム１１１を正ボリューム、コピー先の論理ボリューム１１１を副ボリュームと記載する。
【００７０】
新たにコピーペアが作成された場合、正ボリュームに格納された全データが読み出され、その読み出された全データが副ボリュームに書き込まれる。その後、正ボリュームのデータが更新されると、その更新が副ボリュームにも反映される。これによって、正ボリュームに格納されたデータと副ボリュームに格納されたデータとの同一性が維持される。
【００７１】
上記とは逆に、副ボリュームに格納されたデータが正ボリュームにコピーされてもよい。例えば、正ボリュームに格納されたデータが、障害又は誤操作等によって失われた場合、副ボリュームに格納されたデータを正ボリュームにコピーすることによって、データを復元することができる。
【００７２】
二つの論理ボリューム１１１によるコピーペアが作成された場合、そのコピーペアを管理する情報（言い換えると、それらの二つの論理ボリューム１１１を対応付ける情報）がペア管理テーブル１１５に登録される。
【００７３】
ペア管理テーブル１１５は、正ボリュームの装置ＩＤ５０１、正ボリュームのボリュームＩＤ５０２、正ボリュームの種別５０３、副ボリュームの装置ＩＤ５０４、副ボリュームのボリュームＩＤ５０５及び副ボリュームの種別５０６を含む。
【００７４】
正ボリュームの装置ＩＤ５０１は、コピーペアに属する正ボリュームを格納するストレージシステムの識別子である。
【００７５】
正ボリュームのボリュームＩＤ５０２は、コピーペアに属する正ボリュームの識別子である。
【００７６】
正ボリュームの種別５０３は、コピーペアに属する正ボリュームが仮想ボリューム２０１又は実ボリューム２０２のいずれであるかを示す。
【００７７】
副ボリュームの装置ＩＤ５０４は、コピーペアに属する副ボリュームを格納するストレージシステムの識別子である。
【００７８】
副ボリュームのボリュームＩＤ５０５は、コピーペアに属する副ボリュームの識別子である。
【００７９】
副ボリュームの種別５０６は、コピーペアに属する副ボリュームが仮想ボリューム２０１又は実ボリューム２０２のいずれであるかを示す。
【００８０】
図５の例では、ペア管理テーブル１１５の２番目のエントリの正ボリュームの装置ＩＤ５０１、正ボリュームのボリュームＩＤ５０２、正ボリュームの種別５０３、副ボリュームの装置ＩＤ５０４、副ボリュームのボリュームＩＤ５０５及び副ボリュームの種別５０６として、それぞれ、「ＳＴ０１」、「ＶＯＬ０２」、「実」、「ＳＴ０２」、「ＶＯＬ１２」及び「仮想」が格納されている。例えば、ストレージシステム１００Ａの識別子が「ＳＴ０１」、ストレージシステム１００Ｂの識別子が「ＳＴ０２」、実ボリューム２０２Ａの識別子が「ＶＯＬ０２」、仮想ボリューム２０１Ｄの識別子が「ＶＯＬ１２」である場合、この２番目のエントリは、実ボリューム２０２Ａが正ボリューム、仮想ボリューム２０１Ｄが副ボリュームであるコピーペアが作成されていることを示す。
【００８１】
次に、仮想ボリューム２０１へのデータの書き込み及び仮想ボリューム２０１からの読み出しについて説明する。
【００８２】
図６は、本発明の第１の実施形態において実行されるデータ書き込み処理を示すフローチャートである。
【００８３】
具体的には、図６は、Ｉ／Ｏ制御プログラム１１２が仮想ボリューム２０１を書き込み先として指定するデータ書き込み要求を受信したときに実行する処理を示す。
【００８４】
最初に、Ｉ／Ｏ制御プログラム１１２は、データ書き込み要求を受信する（ステップ６０１）。このデータ書き込み要求は、書き込まれるべきデータ、及び、そのデータの書き込み先のアドレスを指定する情報を含む。
【００８５】
なお、このデータ書き込み要求は、ホスト計算機１３０から送信されたものであってもよいし、コピーペアにおけるデータのコピーを実行するためにいずれかのストレージシステム１００のペア制御プログラム（図示省略）によって送信されたものであってもよいし、テープ記憶媒体からのデータの復元のためにテープライブラリ１２０又はバックアップ制御装置（図示省略）によって送信されたものであってもよい。
【００８６】
次に、Ｉ／Ｏ制御プログラム１１２は、書き込み先のアドレスを含むページに物理的な記憶領域が割り当てられているか否かを判定する（ステップ６０２）。具体的には、Ｉ／Ｏ制御プログラム１１２は、割り当て管理テーブル１１４を参照して、書き込み先のアドレスを含むページに対応する実ページ４０２に有効値（すなわちプールボリューム２０３のいずれかのページのアドレス）が登録されているか否かを判定する。
【００８７】
ステップ６０２において、書き込み先のアドレスを含むページに対応する実ページ４０２に無効値が登録されていると判定された場合、書き込み先のアドレスを含むページに物理的な記憶領域が割り当てられていない。この場合、Ｉ／Ｏ制御プログラム１１２は、書き込み先のアドレスを含むページに、まだいずれのページにも割り当てられていない物理的な記憶領域を割り当てる（ステップ６０３）。
【００８８】
具体的には、Ｉ／Ｏ制御プログラム１１２は、書き込み先の仮想ボリューム２０１に対応するプールボリューム２０３のページのうち、まだいずれの仮想ボリュームのページにも割り当てられていないものを選択し、その選択されたページのアドレスを、書き込み先のアドレスを含むページに対応する実ページ４０２に登録する。
【００８９】
なお、ステップ６０３の割り当て処理は、Ｉ／Ｏ制御プログラム１１２から指示を受けた割り当て管理プログラム１１３によって実行されてもよい。
【００９０】
次に、Ｉ／Ｏ制御プログラム１１２は、書き込み先のアドレスにデータを書き込む（ステップ６０４）。具体的には、Ｉ／Ｏ制御プログラム１１２は、割り当て管理テーブル１１４を参照して、書き込み先のアドレスに割り当てられた物理的な記憶領域を特定し、その物理的な記憶領域にデータを書き込む。
【００９１】
一方、ステップ６０２において、書き込み先のアドレスを含むページに対応する実ページ４０２に有効値が登録されていると判定された場合、書き込み先のアドレスを含むページに物理的な記憶領域が割り当てられている。この場合、Ｉ／Ｏ制御プログラム１１２は、ステップ６０３を実行せずに、ステップ６０４を実行する。
【００９２】
以上でデータ書き込み処理が終了する。
【００９３】
上記のように、実際に使用される（すなわちデータが書き込まれる）まで、物理的な記憶領域の論理ボリュームへの割り当てを保留することによって、物理的な記憶領域を有効に利用することができる。このようにデータ書き込み要求に応じて物理的な記憶領域を動的に割り当てる技術は、Ａｌｌｏｃａｔｉｏｎ  ｏｎ  Ｕｓｅ（ＡｏＵ）とも呼ばれる。
【００９４】
ここで、図３及び図４を参照して、データ書き込み処理の具体例を説明する。
【００９５】
例えば、書き込み先としてブロック３０２Ａが指定されている場合、Ｉ／Ｏ制御プログラム１１２は、割り当て管理テーブル１１４を参照して、ブロック３０２Ａを含むページ３０１Ａに、プールボリューム２０３Ａのページ３０１Ｃが割り当てられている（すなわち、物理的な記憶領域が割り当てられている）と判定する（ステップ６０２）。なお、この判定は、指定されたブロック３０２Ａのアドレスが「０ｘ００００」から「０ｘ４ＦＦＦ」までの範囲に含まれることに基づいて実行される。
【００９６】
この場合、Ｉ／Ｏ制御プログラム１１２は、ブロック３０２Ａに割り当てられたブロック３０２Ｃ（より正確には、ブロック３０２Ｃに割り当てられた物理的な記憶領域）に、データを書き込む（ステップ６０４）。
【００９７】
一方、上記の例において、仮想ページ４０１の値「０ｘ００００」に対応する実ページ４０２が無効値である場合、ブロック３０２Ａを含むページ３０１Ａに、プールボリューム２０３Ａのページが割り当てられていない。この場合、Ｉ／Ｏ制御プログラム１１２は、プールボリューム２０３Ａのページ（例えばページ３０１Ｃ）をページ３０１Ａに割り当てる。具体的には、例えば図４に示すように、ページ３０１Ｃの先頭アドレス「０ｘ００００」を仮想ページ４０１の値「０ｘ００００」に対応する実ページ４０２として新たに登録する。その後、Ｉ／Ｏ制御プログラム１１２は、ブロック３０２Ａに割り当てられたブロック３０２Ｃにデータを書き込む（ステップ６０４）。
【００９８】
図７は、本発明の第１の実施形態において実行されるデータ読み出し処理を示すフローチャートである。
【００９９】
具体的には、図７は、Ｉ／Ｏ制御プログラム１１２が仮想ボリューム２０１を読み出し対象として指定するデータ読み出し要求（すなわち、仮想ボリューム２０１からデータを読み出す要求）を受信したときに実行する処理を示す。
【０１００】
最初に、Ｉ／Ｏ制御プログラム１１２は、データ読み出し要求を受信する（ステップ７０１）。このデータ読み出し要求は、データの読み出し対象のアドレスを指定する情報（すなわち、どのアドレスに格納されたデータを読み出すかを示す情報）を含む。
【０１０１】
なお、このデータ読み出し要求は、ホスト計算機１３０から送信されたものであってもよいし、コピーペアにおけるデータのコピーを実行するためにペア制御プログラム（図示省略）によって送信されたものであってもよい。
【０１０２】
次に、Ｉ／Ｏ制御プログラム１１２は、読み出し対象のアドレスを含むページに物理的な記憶領域が割り当てられているか否かを判定する（ステップ７０２）。この判定は、図６のステップ６０２と同様に実行される。
【０１０３】
ステップ７０２において、読み出し対象のアドレスを含むページに物理的な記憶領域が割り当てられていると判定された場合、Ｉ／Ｏ制御プログラム１１２は、読み出し対象のアドレスからデータを読み出す（ステップ７０３）。具体的には、Ｉ／Ｏ制御プログラム１１２は、割り当て管理テーブル１１４を参照して、読み出し対象のアドレスに割り当てられた物理的な記憶領域を特定し、その物理的な記憶領域からデータを読み出す。
【０１０４】
一方、ステップ７０２において、読み出し対象のアドレスを含むページに物理的な記憶領域が割り当てられていないと判定された場合、Ｉ／Ｏ制御プログラム１１２は、所定のアドレス範囲に格納された特定のパターンのデータを読み出す（ステップ７０４）。
【０１０５】
次に、Ｉ／Ｏ制御プログラム１１２は、ステップ７０３又はステップ７０４で読み出されたデータを、データ読み出し要求に対する応答として、要求元に送信する（ステップ７０５）。
【０１０６】
ここで、図３及び図４を参照して、データ読み出し処理の具体例を説明する。
【０１０７】
例えば、読み出し対象としてブロック３０２Ａが指定されている場合、Ｉ／Ｏ制御プログラム１１２は、割り当て管理テーブル１１４を参照して、ブロック３０２Ａを含むページ３０１Ａに、プールボリューム２０３Ａのページ３０１Ｃが割り当てられている（すなわち、物理的な記憶領域が割り当てられている）と判定する（ステップ７０２）。
【０１０８】
この場合、Ｉ／Ｏ制御プログラム１１２は、ブロック３０２Ａに割り当てられたブロック３０２Ｃ（より正確には、ブロック３０２Ｃに割り当てられた物理的な記憶領域）に格納されたデータを読み出し（ステップ７０３）、そのデータを要求元に送信する（ステップ７０５）。
【０１０９】
一方、例えば、読み出し対象としてブロック３０２Ｂが指定されている場合、Ｉ／Ｏ制御プログラム１１２は、割り当て管理テーブル１１４を参照して、ブロック３０２Ｂを含むページ３０１Ｂに、プールボリューム２０３Ａのページが割り当てられていない（すなわち、物理的な記憶領域が割り当てられていない）と判定する（ステップ７０２）。
【０１１０】
この場合、Ｉ／Ｏ制御プログラム１１２は、アドレス範囲３０３に格納された特定のパターンのデータ（例えば、連続する「０」のみからなるデータ）を読み出し（ステップ７０４）、そのデータを要求元に送信する（ステップ７０５）。
【０１１１】
ここで、上記の例を参照して、本発明が解決しようとする課題、及び、その課題を解決するための本実施形態の概要について説明する。
【０１１２】
例えば、仮想ボリューム２０１に格納されたデータの複製を、バックアップのためにテープ記憶媒体１２２に書き込む処理が実行される場合がある。この場合、仮想ボリューム２０１に格納されたデータが、図７に示すように読み出され、テープ記憶媒体１２２に書き込まれる。このとき、仮想ボリューム２０１のページのうち、物理的な記憶領域が割り当てられていないページを対象とする読み出し要求に対して、特定のパターンのデータが応答される。このため、物理的な記憶領域が割り当てられていないページから読み出されたデータとして、上記のように応答された特定のパターンのデータがテープ記憶媒体１２２に格納される。
【０１１３】
その後、テープ記憶媒体１２２に格納されたデータを仮想ボリューム２０１に復元したい場合、テープ記憶媒体１２２に格納されたデータが読み出され、仮想ボリューム２０１に書き込まれる。このとき、テープ記憶媒体１２２に格納された特定のパターンのデータも全て読み出され、仮想ボリューム２０１に書き込まれる。このとき、読み出された特定のパターンのデータを書き込む処理が実行されるため、図６に示すように、特定のパターンのデータを格納するための物理的な記憶領域が仮想ボリューム２０１のページに割り当てられ、特定のパターンのデータが書き込まれる。
【０１１４】
このように、復元される前には物理的な記憶領域が割り当てられていなかったページに、復元によって物理的な記憶領域が割り当てられる。これによって、物理的な記憶領域を有効に利用するというＡｏＵ技術の特徴が損なわれる。
【０１１５】
上記のような問題は、コピーペアにおけるデータコピーによっても発生する。
【０１１６】
例えば、正ボリュームが仮想ボリューム２０１、副ボリュームが実ボリューム２０２であるようなコピーペアが作成された場合、最初に、仮想ボリューム２０１に格納された全てのデータが読み出され、実ボリューム２０２に格納される。このとき、上記のテープ記憶媒体の場合と同様、物理的な記憶領域が割り当てられていないページから読み出されたデータとして、特定のパターンのデータが実ボリューム２０２に格納される。
【０１１７】
その後、副ボリュームのデータが正ボリュームに復元される場合、上記のテープ記憶媒体の場合と同様、実ボリューム２０２に格納された特定のパターンのデータも全て読み出され、仮想ボリューム２０１に書き込まれる。このとき、特定のパターンのデータを格納するための物理的な記憶領域が仮想ボリューム２０１のページに割り当てられる。
【０１１８】
このような問題を回避するため、本実施形態では、一旦書き込まれた特定のパターンのデータを検出し、特定のパターンのデータのみが格納されたページへの物理的な記憶領域の割り当てが解除される。以下、そのための処理について説明する。
【０１１９】
図８は、本発明の第１の実施形態において実行されるプールＪＯＢを示すフローチャートである。
【０１２０】
プールＪＯＢは、各ストレージシステム１００の割り当て管理プログラム１１３によって実行される。
【０１２１】
割り当て管理プログラム１１３は、最初に、所定の条件が満たされたか否かを判定する（ステップ８０１）。例えば、割り当て管理プログラム１１３は、各プール２０４について、そのプール２０４の全記憶容量に対する、既に仮想ボリューム２０１に割り当てられたページの容量の合計の割合が所定の閾値を超えた場合に、所定の条件が満たされたと判定してもよい。
【０１２２】
ステップ８０１において、所定の条件が満たされないと判定された場合、所定の条件が満たされるまでステップ８０１が繰り返される。
【０１２３】
ステップ８０１において、所定の条件が満たされたと判定された場合、割り当て管理プログラム１１３は、所定の条件が満たされたプール２０４に対応付けられた仮想ボリューム２０１の一つを選択する（ステップ８０２）。
【０１２４】
次に、割り当て管理プログラム１１３は、選択された仮想ボリューム２０１について、ページ破棄判定処理を実行する（ステップ８０３）。ページ破棄判定処理については後述する（図９参照）。
【０１２５】
次に、割り当て管理プログラム１１３は、選択された仮想ボリューム２０１について、ページ破棄処理を実行する（ステップ８０４）。ページ破棄処理については後述する（図１１参照）。
【０１２６】
次に、割り当て管理プログラム１１３は、ステップ８０１で選択された仮想ボリューム２０１が最後のものであるか否か、言い換えると、ステップ８０１で所定の条件が満たされたと判定されたプール２０４に対応付けられた全ての仮想ボリューム２０１についてステップ８０３及びステップ８０４が実行されたか否かを判定する（ステップ８０５）。
【０１２７】
ステップ８０５において、ステップ８０１で選択された仮想ボリューム２０１が最後のものでないと判定された場合、処理はステップ８０２に戻る。この場合、ステップ８０２において、割り当て管理プログラム１１３は、残りの仮想ボリューム２０１の一つを選択する。結局、割り当て管理プログラム１１３は、ステップ８０１で所定の条件が満たされたと判定されたプール２０４に対応付けられた全ての仮想ボリューム２０１についてページ破棄判定処理（ステップ８０３）及びページ破棄処理が（ステップ８０４）実行されるまで、ステップ８０２からステップ８０５を繰り返す。
【０１２８】
ステップ８０５において、ステップ８０１で選択された仮想ボリューム２０１が最後のものであると判定された場合、割り当て管理プログラム１１３は、プールＪＯＢを終了する。
【０１２９】
ここで、ステップ８０１における判定のバリエーションを説明する。上記の例では、仮想ボリューム２０１に割り当てられたページの容量の合計の割合が所定の閾値を超えた場合に、所定の条件が満たされたと判定されるが、他の方法によって判定されてもよい。
【０１３０】
例えば、ある仮想ボリューム２０１に定義された全容量に対する、既に物理的な記憶領域が割り当てられたページの容量の合計の割合が所定の閾値を超えた場合に、所定の条件が満たされたと判定されてもよい。この場合、上記の割合が所定の閾値を超えた仮想ボリューム２０１がステップ８０２において選択される。
【０１３１】
あるいは、所定のタイミングが到来したときに、所定の条件が満たされたと判定されてもよい。より具体的には、前回のプールＪＯＢが実行されてから所定の時間が経過したとき、又は、所定の時刻が到来したときに、ストレージシステム１００内の全てのプール２０４について所定の条件が満たされたと判定されてもよい。この場合、いずれのプール２０４にも対応付けられていないものを除く全ての仮想ボリュームを対象として、ステップ８０２からステップ８０５が繰り返し実行される。
【０１３２】
上記の所定のタイミングは、プール最適化処理が実行されるタイミングであってもよい。プール最適化処理とは、仮想ボリューム２０１の未割り当てのページとプール２０４内の未割り当てのページとの対応関係をランダム化する処理である。
【０１３３】
あるいは、ストレージシステム１００のユーザ又は管理者が、プール２０４又は仮想ボリューム２０１を指定して、プールＪＯＢの実行を指示してもよい。具体的には、例えば、ユーザ又は管理者は、ホスト計算機１３０を使用して、プール２０４又は仮想ボリューム２０１の指定を含むプールＪＯＢ実行指示をストレージシステム１００に送信してもよい。この指示を受信したストレージシステムの割り当て管理プログラム１１３は、指定されたプール２０４又は仮想ボリューム２０１について所定の条件が満たされたと判定する（ステップ８０１）。
【０１３４】
あるいは、コピーペアにおいて、実ボリューム２０２から仮想ボリューム２０１へのコピーが実行された場合に、所定の条件が満たされたと判定されてもよい。既に説明したように、実ボリューム２０２から仮想ボリューム２０１へのコピーによって、特定のパターンのデータを格納するために物理的な記憶領域が割り当てられる場合があるためである。
【０１３５】
具体的には、例えば、ステップ８０１において、割り当て管理プログラム１１３は、実ボリューム２０２から仮想ボリューム２０１へのコピーが実行されたか否かを判定し、実行されたと判定した場合には、さらに、そのコピー元が実ボリューム２０２であり、かつ、コピー先が仮想ボリューム２０１であるか否かを判定してもよい。各論理ボリュームがコピーペアに属しているか否か、及び、属している場合、そのコピーペアの属性は、ペア管理テーブル１１５を参照することによって知ることができる。
【０１３６】
上記の判定の結果、コピー元が実ボリューム２０２であり、かつ、コピー先が仮想ボリューム２０１であると判定された場合、ステップ８０２において、コピー先の仮想ボリューム２０３が選択される。
【０１３７】
あるいは、テープ記憶媒体から読み出されたデータが仮想ボリューム２０１にコピーされた場合、所定の条件が満たされたと判定されてもよい。既に説明したように、テープ記憶媒体から仮想ボリューム２０１へのコピーによって、特定のパターンのデータを格納するために物理的な記憶領域が割り当てられる場合があるためである。この場合、ステップ８０２において、コピー先の仮想ボリューム２０３が選択される。
【０１３８】
図９は、本発明の第１の実施形態において実行されるページ破棄判定処理を示すフローチャートである。
【０１３９】
図９に示すページ破棄判定処理は、図８に示すプールＪＯＢのステップ８０３において実行される。
【０１４０】
最初に、割り当て管理プログラム１１３は、ステップ８０２で選択された仮想ボリューム２０１の全ページのうち、既に物理的な記憶領域が割り当てられているページに対応する破棄マーク４０３の値を有効値にする（ステップ９０１）。例えば、破棄マーク４０３の値「１」が有効、「０」が無効を表してもよいし、その逆であってもよい。
【０１４１】
次に、割り当て管理プログラム１１３は、選択された仮想ボリューム２０１のページの一つを選択する（ステップ９０２）。ページ破棄判定処理の実行が開始されてから初めて実行されるステップ９０２では、仮想ボリューム２０１の先頭のページが選択されてもよい。
【０１４２】
次に、割り当て管理プログラム１１３は、選択されたページに対応する破棄マーク４０３の値が有効であるか否かを判定する（ステップ９０３）。
【０１４３】
ステップ９０３において、選択されたページに対応する破棄マーク４０３の値が無効であると判定された場合、そのページは、物理的な記憶領域が割り当てられていないページであるか、又は、物理的な記憶領域の割り当てを解除してはならないページである。このため、割り当て管理プログラム１１３は、ステップ９０４以降の処理を実行せず（すなわち、選択されたページに対する物理的な記憶領域の割り当てを解除する処理を実行せず）、ステップ９０２に戻る。
【０１４４】
一方、ステップ９０３において、選択されたページに対応する破棄マーク４０３の値が有効であると判定された場合、割り当て管理プログラム１１３は、選択されたページのスロットの一つを選択し、そのスロットのデータをステージングする（ステップ９０４）。例えば、ページが選択されてから初めて実行されるステップ９０４では、選択されたページの先頭のスロットが選択されてもよい。
【０１４５】
スロットとは、ページ内のデータの管理単位である。一つのページは所定の数のスロットに分割される。ページに格納されたデータと特定のパターンのデータとの比較は、スロットごとに実行される（図１０参照）。
【０１４６】
スロットのデータをステージングすることは、スロットのデータを読み出してメモリに一時的に格納することを意味する。スロットから読み出されたデータは、ローカルメモリ１０７、共有メモリ１０３又はキャッシュメモリ１０５に格納されてもよい。
【０１４７】
次に、割り当て管理プログラム１１３は、スロットから読み出されたデータと特定のパターンのデータとを比較し、これらが一致するか否かを判定する（ステップ９０５）。この比較は、どのような方法によって実行されてもよい。この比較については後で詳細に説明する（図１０参照）。
【０１４８】
ステップ９０５において、スロットから読み出されたデータと特定のパターンのデータとが一致しないと判定された場合、選択されたページに割り当てられた物理的な記憶領域には、特定のパターンのデータ以外のデータが格納されている。すなわち、その割り当てを解除することはできない。このため、割り当て管理プログラム１１３は、選択されたページに対応する破棄マーク４０３の値を無効値に変更する（ステップ９０６）。
【０１４９】
次に、割り当て管理プログラム１１３は、選択されたスロットが選択されたページ内の最後のスロットであるか否かを判定する（ステップ９０７）。
【０１５０】
ステップ９０７において、選択されたスロットが選択されたページ内の最後のスロットでないと判定された場合、選択されたページ内のスロットのうち、まだ特定のパターンのデータとの比較が終了していないスロットが存在する。このため、処理はステップ９０４に戻る。ステップ９０４では、まだ選択されていないスロットの一つ（例えば、直前に選択されたスロットの次のスロット）が選択される。
【０１５１】
一方、ステップ９０７において、選択されたスロットが選択されたページ内の最後のスロットであると判定された場合、選択されたページ内の全てのスロット（言い換えると全てのデータ）と特定のパターンのデータとの比較が終了した。この場合、割り当て管理プログラム１１３は、選択されたページが選択された仮想ボリューム２０１内の最後のページであるか否かを判定する（ステップ９０８）。
【０１５２】
ステップ９０８において、選択されたページが選択された仮想ボリューム２０１内の最後のページでないと判定された場合、選択された仮想ボリューム２０１内のページのうち、まだ物理的な記憶領域の割り当てを解除するか否かを判定されていないページが存在する。このため、処理はステップ９０２に戻る。ステップ９０２では、まだ選択されていないページの一つ（例えば、直前に選択されたページの次のページ）が選択される。
【０１５３】
ステップ９０８において、選択されたページが選択された仮想ボリューム２０１内の最後のページであると判定された場合、選択された仮想ボリューム２０１内の全てのページについて、物理的な記憶領域の割り当てを解除するか否かが判定された。この場合、割り当て管理プログラム１１３は、現在選択されている仮想ボリューム２０１について、ステップ９０１が実行された後、その仮想ボリューム２０１内のいずれかのページに対するデータＩ／Ｏ要求（すなわちデータ書き込み要求又はデータ読み出し要求）が実行されたか否かを判定する（ステップ９０９）。
【０１５４】
ステップ９０９において、データ書き込み要求が実行されたと判定された場合、そのデータ書き込み要求によって、特定のパターンのデータ以外のデータがページに書き込まれた可能性が高い。一方、データ読み出し要求が実行されたと判定された場合、その読み出しの直後に、データが読み出されたページに対するデータ書き込み要求が実行される可能性が高い。データ書き込み要求を実行する直前に、必ずその書き込み先の領域に対するデータ読み出し要求を実行するように設計されたオペレーティングシステム（ＯＳ）が、ホスト計算機１３０で稼動している可能性があるためである。すなわち、データ読み出し要求が実行された直後にデータ書き込み要求が実行され、それによって特定のパターンのデータ以外のデータがページに書き込まれる可能性がある。
【０１５５】
したがって、特定のパターンのデータ以外のデータが格納された物理的な記憶領域のページへの割り当てを解除することを防止するためには、データＩ／Ｏ要求が実行されたページについては、物理的な記憶領域の割り当てを解除しないことが求められる。
【０１５６】
このため、ステップ９０９において、データＩ／Ｏ要求が実行されたと判定された場合、割り当て管理プログラム１１３は、そのデータＩ／Ｏ要求の対象のページに対応する破棄マーク４０３の値を無効値に変更する（ステップ９１０）。
【０１５７】
一方、ステップ９０９において、データＩ／Ｏ要求が実行されていないと判定された場合、割り当て管理プログラム１１３は、ステップ９１０を実行しない。
【０１５８】
なお、図９の例では、ステップ９０９及びステップ９１０がステップ９０８の後に実行される。しかし、実際には、割り当て管理プログラム１１３は、ページ破棄判定処理の実行が開始された後、ページ破棄処理の実行が終了するまでの間、常にデータＩ／Ｏ要求の実行の有無を監視し、データＩ／Ｏ要求が実行されたときにその要求の対象のページの破棄マーク４０３を無効値に変更することが望ましい。
【０１５９】
以上で、割り当て管理プログラム１１３は、ページ破棄判定処理を終了する。
【０１６０】
図１０は、本発明の第１の実施形態において実行されるデータの比較の説明図である。
【０１６１】
図１０は、例として、仮想ボリューム２０１Ａにおけるデータの比較を示すが、他の仮想ボリューム２０１についても同様にデータの比較が実行される。
【０１６２】
図３を参照して説明したように、仮想ボリューム２０１Ａは、所定の大きさの複数のページ、例えばページ３０１Ａ及びページ３０１Ｂ等を含む。各ページは、所定の大きさの複数のスロットを含む。例えば、ページ３０１Ａは、スロット１００１Ａ〜１００１Ｃを含む。
【０１６３】
例えば、１ページが１６８スロットを含み、１スロットが５１２ブロック（すなわち２５６キロバイト）を含んでもよいが、これらの値は一例であり、どのような値が定められてもよい。
【０１６４】
メモリ（例えばローカルメモリ１０７）には、比較用ワークスロット１００２が用意され、そこに特定のパターンのデータが格納される。例えば、所定のアドレス範囲３０３に格納されたデータが比較用ワークスロット１００２にコピーされてもよい。
【０１６５】
比較器１００３は、各スロットのデータと比較用ワークスロット１００２のデータとを比較し、それらが同一であるか否かを判定する。比較器１００３は、専用のハードウェアによって実現されても、ソフトウェアによって実現されてもよい。
【０１６６】
例えば、最初にスロット１００１Ａのデータがメモリにコピーされる（ステップ９０４）。比較器１００３は、スロット１００１Ａのデータと比較用ワークスロット１００２に格納された特定のパターンのデータとを比較し、それらが同一であるか否かを判定する（ステップ９０５）。それらが同一である場合、次のスロット１００１Ｂがメモリにコピーされ、上記の処理が繰り返される。
【０１６７】
例えば、スロット１００１Ｂのデータと比較用ワークスロット１００２に格納された特定のパターンのデータとが同一でない場合、ページ３０１Ａに対応する破棄マーク４０３の値が無効に変更される。そして、ページ３０１Ａの残りのスロット（すなわちスロット１００１Ｃ以降のスロット）について上記の比較を実行することなく、次のページ３０１Ｂが選択される。
【０１６８】
図１１は、本発明の第１の実施形態において実行されるページ破棄処理を示すフローチャートである。
【０１６９】
図１１に示すページ破棄処理は、図８に示すプールＪＯＢのステップ８０４において実行される。
【０１７０】
最初に、割り当て管理プログラム１１３は、資源ロックを取得する（ステップ１１０１）。これは、現在実行されているページ破棄処理以外の処理によるページへの物理的な記憶領域の割り当てを禁止するための処理である。すなわち、資源ロックの取得によって、ページへの物理的な記憶領域の割り当て及びその解除が排他制御される。
【０１７１】
次に、割り当て管理プログラム１１３は、選択された仮想ボリューム２０１のページの一つを選択する（ステップ１１０２）。ページ破棄処理の実行が開始されてから初めて実行されるステップ１１０２では、仮想ボリューム２０１の先頭のページが選択されてもよい。
【０１７２】
次に、割り当て管理プログラム１１３は、ステップ１１０２で選択されたページに対応する破棄マーク４０３の値が有効であるか否かを判定する（ステップ１１０３）。
【０１７３】
ステップ１１０３において、選択されたページに対応する破棄マーク４０３の値が有効であると判定された場合、選択されたページには、特定のパターンのデータのみが格納されている。この場合、割り当て管理プログラム１１３は、選択されたページへの物理的な記憶領域の割り当てを解除する（ステップ１１０４）。具体的には、割り当て管理プログラム１１３は、選択されたページに対応する実ページ４０２の値を無効値に変更する。
【０１７４】
次に、割り当て管理プログラム１１３は、選択されたページが選択された仮想ボリューム２０１内の最後のページであるか否かを判定する（ステップ１１０５）。
【０１７５】
ステップ１１０５において、選択されたページが選択された仮想ボリューム２０１内の最後のページでないと判定された場合、処理はステップ１１０２に戻る。ステップ１１０２では、まだ選択されていないページの一つ（例えば、直前に選択されたページの次のページ）が選択される。
【０１７６】
ステップ１１０５において、選択されたページが選択された仮想ボリューム２０１内の最後のページであると判定された場合、選択された仮想ボリューム２０１内のページのうち、特定のパターンのデータのみが格納された全てのページについて、物理的な記憶領域の割り当てが解除された。この場合、割り当て管理プログラム１１３は、資源ロックを開放して（ステップ１１０６）、ページ破棄処理を終了する。
【０１７７】
ステップ１１０３において、選択されたページに対応する破棄マーク４０３の値が無効であると判定された場合、選択されたページには、物理的な記憶領域が割り当てられていないか、特定のパターンのデータ以外のデータが含まれているか、又は、ごく近い将来に特定のパターンのデータ以外のデータが書き込まれる可能性が高いか、のいずれかである。このようなページへの物理的な記憶領域の割り当てを解除することは許されない。このため、割り当て管理プログラム１１３は、ステップ１１０４を実行せずにステップ１１０５を実行する。
【０１７８】
以上でページ破棄処理についての説明を終了する。
【０１７９】
ここで、図８から図１１に示した処理の具体例を、図３及び図４を参照しながら説明する。
【０１８０】
ステップ８０２において仮想ボリューム２０１Ａが選択された場合、割り当て管理プログラム１１３は、仮想ボリューム２０１Ａ内の全ページのうち、物理的な記憶領域が割り当てられていないページに対応する破棄マーク４０３として有効値を設定する（ステップ９０１）。例えば、ページ３０１Ａ及びページ３０１Ｂに対応する仮想ページ４０１の値がそれぞれ「０ｘ００００」及び「０ｘ５０００」である場合、ページ３０１Ａには物理的な記憶領域が割り当てられているが、ページ３０１Ｂには割り当てられていない（図４参照）。この場合、割り当て管理プログラム１１３は、「０ｘ００００」に対応する破棄マーク４０３に有効値（例えば「１」）を、「０ｘ５０００」に対応する破棄マーク４０３に無効値（例えば「０」）を設定する。
【０１８１】
次に、ステップ９０２においてページ３０１Ａが選択された場合、割り当て管理プログラム１１３は、ページ３０１Ａの各スロットを順次メモリにコピーして（ステップ９０４）、特定のパターンのデータとの比較を実行する（ステップ９０５）。
【０１８２】
ページ３０１Ａ内の全てのスロットのデータが特定のパターンのデータと一致した場合、ページ３０１Ａに対応する破棄マーク４０３の値は有効値のまま維持され、次のページ３０１Ｂが選択される（ステップ９０２）。一方、特定のパターンのデータと異なるデータを含むスロットがページ３０１Ａ内に一つでも存在した場合、ページ３０１Ａに対応する破棄マーク４０３の値は無効値に変更され（ステップ９０６）、次のページ３０１Ｂが選択される（ステップ９０２）。
【０１８３】
上記と同様の処理が仮想ボリューム２０１Ａの残りのページについても実行される。ただし、ページ３０１Ｂのように物理的な記憶領域が割り当てられていないものについては、ステップ９０３で「Ｎｏ」と判定されるため、上記の比較は実行されない。
【０１８４】
なお、例えば、ステップ９０５における比較の結果、ページ３０１Ａに対応する破棄マーク４０３の値が有効値のまま維持された場合であっても、その後ページ３０１Ａに対するデータＩ／Ｏが実行された場合、ページ３０１Ａに対応する破棄マーク４０３の値は無効値に変更される（ステップ９０９及びステップ９１０）。
【０１８５】
仮想ボリューム２０１Ａの全てのページについてページ破棄判定処理が終了すると、次に、仮想ボリューム２０１Ａについてページ破棄処理が実行される。例えば、図４に示すように、仮想ページ４０１の値「０ｘ００００」によって識別されるページ３０１Ａに対応する破棄マーク４０３の値が有効値「１」である場合、そのページ３０１Ａに対応する実ページ４０２の値「０ｘ００００」が無効値に変更される（ステップ１１０３及びステップ１１０４）。これによって、ページ３０１Ａへの物理的な記憶領域の割り当てが解除される。
【０１８６】
同様に、破棄マーク４０３の値が有効値である全てのページについて、実ページ４０２の値が無効値に変更されると、ページ破棄処理が終了する。
【０１８７】
以上説明したように、本来であれば、特定のパターンのデータは、仮想ボリューム２０１に格納される必要がないものである。言い換えると、特定のパターンのデータを格納するために、仮想ボリューム２０１のページに物理的な記憶領域を割り当てる必要がない。しかし、従来は、特定のパターンのデータを格納するために、仮想ボリューム２０１のページに物理的な記憶領域が割り当てられる場合があり、しかも、その割り当てを解除する方法がなかった。このため、物理的な記憶領域を有効に利用できない場合があった。
【０１８８】
これに対して、上記の本発明の第１の実施形態では、特定のパターンのデータは、仮想ボリューム２０１に一旦格納される。すなわち、特定のパターンのデータを格納するために、仮想ボリューム２０１のページに物理的な記憶領域が一旦割り当てられる。その後、仮想ボリューム２０１に格納されたデータと特定のパターンのデータとが比較され、特定のパターンのデータのみが格納されたページに対する物理的な記憶領域の割り当てが事後的に解除される。割り当てを解除された物理的な記憶領域は、新たに別のページに割り当てることができる。このため、物理的な記憶領域を有効に利用することができる。
【０１８９】
次に、本発明の第２の実施形態を、図面を用いて詳細に説明する。
【０１９０】
本発明の第１の実施形態では、上記のように、特定のパターンのデータを格納するために、仮想ボリューム２０１のページに物理的な記憶領域が一旦割り当てられ、その後、その割り当てが解除される。これに対して、本発明の第２の実施形態では、仮想ボリューム２０１への特定のパターンのデータの書き込みが防止される。
【０１９１】
本発明の第２の実施形態のハードウェア構成及び基本的な論理構成は、第１の実施形態と同様である。すなわち、図１から図５、図７及び図１０は、第２の実施形態にも適用することができる。以下、第２の実施形態が第１の実施形態と相違する点について説明する。
【０１９２】
図１２は、本発明の第２の実施形態において実行されるデータ書き込み処理を示すフローチャートである。
【０１９３】
具体的には、図１２は、Ｉ／Ｏ制御プログラム１１２が仮想ボリューム２０１を書き込み先として指定するデータ書き込み要求を受信したときに実行する処理を示す。
【０１９４】
最初に、Ｉ／Ｏ制御プログラム１１２は、データ書き込み要求を受信する（ステップ１２０１）。このデータ書き込み要求は、書き込まれるべきデータ、及び、そのデータの書き込み先のアドレスを指定する情報を含む。
【０１９５】
以下の説明は、ステップ１２０１において１ページ分のデータを受信した場合にＩ／Ｏ制御プログラム１１２が実行する処理についてのものである。複数ページ分のデータが受信された場合には、以下の処理が繰り返し実行される。１ページに満たないデータが受信された場合、第１の実施形態と同様、図６に示す処理が実行される。
【０１９６】
次に、Ｉ／Ｏ制御プログラム１１２は、書き込み先のアドレスを含むページに物理的な記憶領域が割り当てられているか否かを判定する（ステップ１２０２）。具体的には、Ｉ／Ｏ制御プログラム１１２は、割り当て管理テーブル１１４を参照して、書き込み先のアドレスを含むページに対応する実ページ４０２に有効値（すなわちプールボリューム２０３のいずれかのページのアドレス）が登録されているか否かを判定する。
【０１９７】
ステップ６０２において、書き込み先のアドレスを含むページに対応する実ページ４０２に無効値が登録されていると判定された場合、書き込み先のアドレスを含むページに物理的な記憶領域が割り当てられていない。この場合、Ｉ／Ｏ制御プログラム１１２は、書き込まれるべきデータのうち１スロット分のデータをステージングする（ステップ１２０３）。この処理は、図９のステップ９０４と同様に実行される。
【０１９８】
次に、Ｉ／Ｏ制御プログラム１１２は、ステージングされたデータと特定のパターンのデータとを比較し、これらが一致するか否かを判定する（ステップ１２０４）。この比較は、図９のステップ９０５と同様に実行される。
【０１９９】
ステップ１２０４において、１スロット分のデータと特定のパターンのデータとが一致しないと判定された場合、ステップ１２０１で受信した１ページ分のデータには、特定のパターンのデータと異なるデータが含まれる。この場合、Ｉ／Ｏ制御プログラム１１２は、書き込み先として指定されたアドレスに相当するページに物理的な記憶領域を割り当てる（ステップ１２０６）。この割り当ては、図６のステップ６０３と同様に実行される。
【０２００】
次に、Ｉ／Ｏ制御プログラム１１２は、書き込み先として指定されたアドレスにデータを書き込む（ステップ１２０７）。この書き込みは、図６のステップ６０４と同様に実行される。ステップ１２０７の書き込みが終了すると、Ｉ／Ｏ制御プログラム１１２は、データ書き込み処理を終了する。
【０２０１】
ステップ１２０４において、１スロット分のデータと特定のパターンのデータとが一致すると判定された場合、Ｉ／Ｏ制御プログラム１１２は、ステップ１２０３でステージングされたデータが、ステップ１２０１で受信した１ページ分のデータの最後のスロットに相当するものであるか否かを判定する（ステップ１２０５）。
【０２０２】
ステップ１２０５において、ステージングされたデータが最後のスロットに相当しないと判定された場合、処理はステップ１２０３に戻る。ステップ１２０３において、Ｉ／Ｏ制御プログラム１１２は、直前にステージングされたスロットの次のスロットに相当するデータをステージングして、ステップ１２０４以降の処理を実行する。
【０２０３】
ステップ１２０５において、ステージングされたデータが最後のスロットに相当すると判定された場合、ステップ１２０１で受信した１ページ分のデータは、特定のパターンのデータと同一のデータのみを含む。この場合、Ｉ／Ｏ制御プログラム１１２は、書き込み先として指定されたアドレスに相当するページへの物理的な記憶領域の割り当て、及び、そのページへのデータの書き込みのいずれも実行せずに、データ書き込み処理を終了する。
【０２０４】
なお、ステップ１２０３からステップ１２０６は、Ｉ／Ｏ制御プログラム１１２からの指示を受けた割り当て管理プログラム１１３によって実行されてもよい。
【０２０５】
本実施形態のＩ／Ｏ制御プログラム１１２は、図１２に示すデータ書き込み処理だけでなく、図６に示すデータ書き込み処理を実行する機能を備えてもよい。この場合、例えば、Ｉ／Ｏ制御プログラム１１２は、管理者又はユーザからの指示に従って、実行するデータ書き込み処理を切り替えることができる。
【０２０６】
上記のデータ書き込み処理は、ホスト計算機１３０から送信されたデータ書き込み要求を処理するために実行される場合を例として説明した。しかし、コピーペアにおけるデータのコピーが実行される場合（すなわちコピー先の仮想ボリューム２０１にデータを書き込む場合）、及び、テープ記憶媒体からのデータの復元が実行される場合（すなわちテープ記憶媒体から読み出されたデータを仮想ボリューム２０１に書き込む場合）にも同様の処理が実行される。
【０２０７】
いずれの場合であっても、仮想ボリューム２０１への特定のパターンのデータの書き込みが防止されるため、物理的な記憶領域を有効に利用することができる。
【０２０８】
ただし、コピーペアにおいてデータのコピーが実行される場合、上記のようにコピー先へのデータの書き込みを制御することによってではなく、コピー元からのデータの送信を制御することによって、特定のパターンのデータの書き込みを防止することもできる。以下、それぞれの場合の処理について説明する。
【０２０９】
図１３は、本発明の第２の実施形態において実行される論理ボリューム間のデータコピーの第１の例を示すフローチャートである。
【０２１０】
例えば、二つのストレージシステム１００にまたがるコピーペアにおいて、実ボリューム２０２から仮想ボリューム２０１へのデータのコピーが実行される場合、コピー元の実ボリューム２０２を含むストレージシステム１００のＩ／Ｏ制御プログラム１１２は、コピー元の実ボリューム２０２からデータを読み出し（ステップ１３０１）、読み出したデータを、コピー先の仮想ボリューム２０１を含むストレージシステム１００に送信する（ステップ１３０２）。
【０２１１】
ステップ１３０２で送信されたデータを受信したストレージシステム１００のＩ／Ｏ制御プログラム１１２は、図１２に示すデータ書き込み処理を実行する（ステップ１３０３）。これによって、コピー先の仮想ボリューム２０１への特定パターンのデータの書き込みが防止される。
【０２１２】
図１４は、本発明の第２の実施形態において実行される論理ボリューム間のデータコピーの第２の例を示すフローチャートである。
【０２１３】
図１３の場合と同様に、実ボリューム２０２から仮想ボリューム２０１へのデータのコピーが実行される場合を説明する。ただし、ここでは、実ボリューム２０２に格納された全データの仮想ボリューム２０１へのコピーが実行される場合を例とする。
【０２１４】
コピー元の実ボリューム２０２を含むストレージシステム１００のＩ／Ｏ制御プログラム１１２は、コピー元の実ボリューム２０２から１ページ分のデータを読み出す（１４０１）。
【０２１５】
次に、Ｉ／Ｏ制御プログラム１１２は、読み出された１ページ分のデータのうち１スロット分のデータをステージングする（ステップ１４０２）。この処理は、図９のステップ９０４と同様に実行される。
【０２１６】
次に、Ｉ／Ｏ制御プログラム１１２は、ステージングされたデータと特定のパターンのデータとを比較し、これらが一致するか否かを判定する（ステップ１４０３）。この比較は、図９のステップ９０５と同様に実行される。
【０２１７】
ステップ１４０３において、１スロット分のデータと特定のパターンのデータとが一致しないと判定された場合、ステップ１４０１において読み出された１ページ分のデータには、特定のパターンのデータと異なるデータが含まれる。この場合、Ｉ／Ｏ制御プログラム１１２は、ステップ１４０１において読み出された１ページ分のデータを、コピー先の仮想ボリューム２０１を含むストレージシステム１００に送信する（ステップ１４０４）。
【０２１８】
ステップ１４０３において、１スロット分のデータと特定のパターンのデータとが一致すると判定された場合、Ｉ／Ｏ制御プログラム１１２は、ステップ１４０２でステージングされたデータが、ステップ１４０１で読み出された１ページ分のデータの最後のスロットに相当するものであるか否かを判定する（ステップ１４０５）。
【０２１９】
ステップ１４０５において、ステージングされたデータが最後のスロットに相当しないと判定された場合、処理はステップ１４０２に戻る。ステップ１４０２において、Ｉ／Ｏ制御プログラム１１２は、直前にステージングされたスロットの次のスロットに相当するデータをステージングして、ステップ１４０３以降の処理を実行する。
【０２２０】
ステップ１４０５において、ステージングされたデータが最後のスロットに相当すると判定された場合、ステップ１４０１で読み出された１ページ分のデータは、特定のパターンのデータと同一のデータのみを含む。この場合、Ｉ／Ｏ制御プログラム１１２は、ステップ１４０１で読み出された１ページ分のデータを、コピー先の仮想ボリューム２０１を含むストレージシステム１００に送信せずに、ステップ１４０６を実行する。
【０２２１】
ステップ１４０６において、Ｉ／Ｏ制御プログラム１１２は、ステップ１４０１で読み出された１ページ分のデータが、コピー元の実ボリューム２０２の最後のページであるか否かを判定する。
【０２２２】
ステップ１４０６において、読み出されたデータが最後のページでないと判定された場合、処理はステップ１４０１に戻る。ステップ１４０１において、Ｉ／Ｏ制御プログラム１１２は、直前に読み出されたページの次のページのデータを読み出して、ステップ１４０２以降の処理を実行する。
【０２２３】
ステップ１４０４において送信されたデータを受信したストレージシステムのＩ／Ｏ制御プログラム１１２は、図６に示すデータ書き込み処理を実行することによって、受信したデータをコピー先の仮想ボリューム２０１に書き込む（ステップ１４１１）。
【０２２４】
特定のパターンのデータと同一のデータのみを含むページはステップ１４０４において送信されないため、ステップ１４１１において、特定のパターンのデータと同一のデータのみを含むページに物理的な記憶領域を割り当てられることはない。
【０２２５】
上記の図１３及び図１４は、二つのストレージシステム１００にまたがるコピーペアにおけるデータのコピーを示したが、一つのストレージシステム１００内のコピーペアの場合（すなわち、コピー元の実ボリューム２０２とコピー先の仮想ボリューム２０１とが同一のストレージシステム１００に格納される場合）にも同様の処理を実行することができる。
【０２２６】
なお、図１４に示した処理は、第１の実施形態のストレージシステム１００において実行されてもよい。図１４に示す処理が第１の実施形態のストレージシステム１００において実行される場合、論理ボリューム間のコピーのための物理的な記憶領域の割り当ては、図１４の処理によって制御され、その他の処理（例えばテープ記憶媒体から読み出されたデータの書き込み）のための物理的な記憶領域の割り当ては、プールＪＯＢ（図８等参照）によって制御される。
【０２２７】
以上、本発明の第２の実施形態によれば、特定のパターンのデータと同一のデータのみを含むページに物理的な記憶領域の割り当てが防止される。このため、物理的な記憶領域を有効に利用することができる。
【０２２８】
上記の第１及び第２の実施形態では、特定のパターンのデータの一例として、連続する「０」のみを含むデータを挙げたが、特定のパターンのデータは、いかなるものであってもよい。物理的な記憶領域をより有効に利用するためには、仮想ボリューム２０１のページに割り当てられない物理的な記憶領域ができるだけ多くなるように、特定のパターンのデータを選択することが望ましい。具体的には、仮想ボリューム２０１に対する書き込み要求によって書き込まれるデータのうち、最も出現頻度が高いパターンのデータが、特定のパターンのデータとして選択されることが望ましい。
【０２２９】
例えば、仮想ボリューム２０１の全てのページに物理的な記憶領域が割り当てられている場合、その仮想ボリューム２０１についてプールＪＯＢ（図８〜図１１）が実行される前に、割り当て管理プログラム１１３は、その仮想ボリューム２０１に格納された全データを読み出して、最も出現頻度が高いパターンのデータを特定してもよい。その場合、最も出現頻度が高いパターンのデータが、特定のパターンのデータとして選択される。
【０２３０】
割り当て管理プログラム１１３は、選択された特定のパターンのデータを、その仮想ボリューム２０１に対応付けられたプールボリューム２０３の所定のアドレス範囲３０３に格納する。
【０２３１】
あるいは、図１３又は図１４に示すようにデータがコピーされる場合、コピー元の実ボリューム２０２を含むストレージシステム１００の割り当て管理プログラム１１３は、コピー元の実ボリューム２０２の全データを読み出して、最も出現頻度が高いパターンのデータを特定してもよい。その場合、最も出現頻度が高いパターンのデータが、特定のパターンのデータとして選択される。
【０２３２】
コピー元の実ボリューム２０２を含むストレージシステム１００のＩ／Ｏ制御プログラム１１２は、選択された特定のパターンのデータをあらかじめコピー先の仮想ボリューム２０１を含むストレージシステム１００に送信してもよい。送信先のストレージシステム１００のＩ／Ｏ制御プログラムは、選択された特定のパターンのデータを、所定のアドレス範囲３０３に格納する。
【０２３３】
このように、最も出現頻度が高いパターンのデータを特定のパターンのデータとして使用することによって、物理的な記憶領域をより有効に利用することができる。
【０２３４】
上記のように、本発明の第１の実施形態及び第２の実施形態のいずれも、物理的な記憶領域を有効に利用することを目的としている。そのために、第１の実施形態では、特定のパターンのデータのみが格納されたページに物理的な記憶領域が一旦割り当てられた後、その割り当てが解除される。一方、第２の実施形態では、特定のパターンのデータのみが格納されたページに初めから物理的な記憶領域が割り当てられないように、データの書き込み処理又はデータの送信処理が制御される。このように、第１の実施形態の技術上の意義と、第２の実施形態のそれとは共通する。
【図面の簡単な説明】
【０２３５】
【図１】本発明の第１の実施形態の計算機システムの構成を示すブロック図である。
【図２】本発明の第１の実施形態のストレージシステムによって管理される論理ボリュームの説明図である。
【図３】本発明の第１の実施形態における仮想ボリュームへの物理的な記憶領域の割り当ての説明図である。
【図４】本発明の第１の実施形態の割り当て管理テーブルの説明図である。
【図５】本発明の第１の実施形態のペア管理テーブルの説明図である。
【図６】本発明の第１の実施形態において実行されるデータ書き込み処理を示すフローチャートである。
【図７】本発明の第１の実施形態において実行されるデータ読み出し処理を示すフローチャートである。
【図８】本発明の第１の実施形態において実行されるプールＪＯＢを示すフローチャートである。
【図９】本発明の第１の実施形態において実行されるページ破棄判定処理を示すフローチャートである。
【図１０】本発明の第１の実施形態において実行されるデータの比較の説明図である。
【図１１】本発明の第１の実施形態において実行されるページ破棄処理を示すフローチャートである。
【図１２】本発明の第２の実施形態において実行されるデータ書き込み処理を示すフローチャートである。
【図１３】本発明の第２の実施形態において実行される論理ボリューム間のデータコピーの第１の例を示すフローチャートである。
【図１４】本発明の第２の実施形態において実行される論理ボリューム間のデータコピーの第２の例を示すフローチャートである。
【符号の説明】
【０２３６】
１００Ａ、１００Ｂ  ストレージシステム
１０１  コントローラ
１１０Ａ〜１１０Ｃ  ディスクドライブ
１１１Ａ、１１１Ｂ  論理ボリューム
１１２  Ｉ／Ｏ制御プログラム
１１３  割り当て管理プログラム
１１４  割り当て管理テーブル
１１５  ペア管理テーブル
１２０  テープライブラリ
１３０  ホスト計算機
１４０  ネットワーク
２０１Ａ〜２０１Ｄ  仮想ボリューム
２０２Ａ、２０２Ｂ  実ボリューム
２０３Ａ〜２０３Ｄ  プールボリューム
２０４Ａ、２０４Ｂ  プール
３０１Ａ〜３０１Ｃ  ページ
【図１】
2010086394.tif 000003
【図２】
2010086394.tif 000004
【図３】
2010086394.tif 000005
【図４】
2010086394.tif 000006
【図５】
2010086394.tif 000007
【図６】
2010086394.tif 000008
【図７】
2010086394.tif 000009
【図８】
2010086394.tif 000010
【図９】
2010086394.tif 000011
【図１０】
2010086394.tif 000012
【図１１】
2010086394.tif 000013
【図１２】
2010086394.tif 000014
【図１３】
2010086394.tif 000015
【図１４】
2010086394.tif 000016