(57)【特許請求の範囲】
【請求項１】
それぞれにディスクユニットを有する複数のストレージサブシステムと、前記複数のストレージサブシステムの外部に接続して設けられる１以上の外部ボリュームとで構成されるコンピュータ化されたデータストレージシステムにおいて、
第１の前記ストレージサブシステムは、
第１の前記ディスクユニットと、
前記第１のディスクユニットと前記外部ボリュームとによって構成される第１の容量プールを第１の容量管理テーブルによって管理する第１のストレージコントローラと、
前記第１の容量プールからデータを格納するために所定の容量プールページが割り当てられる第１の仮想ボリュームとを備え、
前記第１のストレージサブシステムに接続される第２の前記ストレージサブシステムは、
第２の前記ディスクユニットと、
前記第２のディスクユニットと前記外部ボリュームとによって構成される第２の容量プールを第２の容量管理テーブルによって管理する第２のストレージコントローラと、
前記第２の容量プールからデータを格納するために所定の容量プールページが割り当てられる第２の仮想ボリュームとを備え、
前記第１の仮想ボリューム及び前記第２の仮想ボリュームは、前記第１の仮想ボリュームと前記第２の仮想ボリュームとの間で関連付けが行われることによってペア関係が形成され、
前記外部ボリュームは、前記第１の容量プール及び第２の容量プールに共有され、
前記第１の仮想ボリュームが前記ペアのマスタボリュームであり、前記マスタボリュームを有する前記第１のストレージサブシステムがマスタストレージサブシステムであり、
前記第２の仮想ボリュームが前記ペアのスレーブボリュームであり、前記スレーブボリュームを有する前記第２のストレージサブシステムがスレーブストレージサブシステムであり、
前記データストレージシステムは、前記スレーブボリュームから前記外部ボリュームへデータをデステージするための第１のプログラムを実行するよう構成され、
前記第２のストレージコントローラは、前記第２の仮想ボリュームに対して前記第２の容量プールの容量プールページを割り当てる処理を実行する場合には、前記第１の仮想ボリュームと前記第１の容量プールとの間における容量プールページの割り当て状況を示す割り当て情報を前記第１のストレージサブシステムから取得し、前記第１のストレージコントローラによって前記第１の容量プールから前記第１の仮想ボリュームに、前記外部ボリュームで構成される容量プールページがすでに割り当てられていたときには、該容量プールページを前記第２の容量プールから前記第２の仮想ボリュームにも割り当て、
前記第１のプログラムは、
ダーティキャッシュスロットが前記スレーブストレージサブシステムで割り当てられていない容量プールページに対応し、前記割り当てられていない容量プールページは前記スレーブ仮想ボリュームに割り当てられていない状況で、前記スレーブストレージサブシステムで前記ダーティキャッシュスロットを探し、
前記割り当てられていない容量プールページの割り当て状態を、前記マスタストレージサブシステムに要求し、
前記割り当てられていない容量プールページと前記マスタストレージサブシステムの前記マスタ仮想ボリュームの関係を得て、該関係を前記スレーブストレージサブシステムに送信し、
前記スレーブストレージサブシステムで、前記割り当てられていない容量プールページを前記スレーブ仮想ボリュームに割り当て、
前記スレーブストレージサブシステムからのロック要求を前記マスタストレージサブシステムに送信し、
前記マスタストレージサブシステムで前記ロック要求を受信し、前記スレーブストレージサブシステムの前記ダーティキャッシュスロットに対応して前記マスタストレージサブシステム上のターゲットキャッシュスロットをロックし、
前記スレーブストレージサブシステムに前記ロック要求完了の通知をし、
前記マスタ仮想ボリュームの前記ターゲットキャッシュスロットのスロット状態がダーティの場合には、前記スレーブストレージサブシステムから前記外部ボリュームに、前記ダーティキャッシュスロットのデータを転送し、
前記スレーブ仮想ボリュームの前記外部ボリュームから前記データ転送の承認を受信し、
前記スレーブストレージサブシステムで前記ダーティキャッシュスロットのスロット状態をダーティからクリーンに変更する
ことを特徴とするコンピュータ化されたデータストレージシステム。
【請求項２】
前記コンピュータ化されたデータストレージシステムは、ホストコンピュータから前記マスタボリュームへのライトＩ／Ｏ操作をコピーするための第２のプログラムを実行するよう構成され、
前記第２のプログラムは、
前記マスタストレージサブシステムでライトＩ／Ｏ要求とライトデータを受信し、
前記マスタストレージサブシステムのキャッシュスロットに前記ライトデータを格納し、
前記ライトＩ／Ｏ要求と前記ライトデータを前記スレーブストレージサブシステムに複製し、
前記スレーブストレージサブシステムのキャッシュスロットに前記ライトデータを格納し、
前記スレーブストレージサブシステムから前記ライトＩ／Ｏ要求の完了の承認を前記マスタストレージサブシステムに返信し、
前記マスタストレージサブシステムから前記ライトＩ／Ｏ要求の完了の承認を前記ホストコンピュータに送信する
ことを特徴とする、請求項１に記載のコンピュータ化されたデータストレージシステム。
【請求項３】
前記コンピュータ化されたデータストレージシステムは、ホストコンピュータから前記スレーブボリュームへのライトＩ／Ｏ操作をコピーするための第３のプログラムを実行するよう構成され、
前記第３のプログラムは、
前記スレーブストレージサブシステムでライトＩ／Ｏ要求とライトデータを受信し、
前記ライトＩ／Ｏ要求と前記ライトデータを前記マスタストレージサブシステムに複製し、
前記マスタストレージサブシステムのキャッシュスロットに前記ライトデータを格納し、
前記マスタストレージサブシステムから前記ライトＩ／Ｏ要求の完了の承認を前記スレーブストレージサブシステムに返信し、
前記スレーブストレージサブシステムのキャッシュスロットに前記ライトデータを格納し、
前記スレーブストレージサブシステムから前記ライトＩ／Ｏ要求の完了の承認を前記ホストコンピュータに送信する
ことを特徴とする、請求項１に記載のコンピュータ化されたデータストレージシステム。
【請求項４】
前記コンピュータ化されたデータストレージシステムは、前記マスタボリュームから前記外部ボリュームへデータをデステージするための第４のプログラムを実行するよう構成され、
前記第４のプログラムは、
割り当てられていない仮想ボリュームの容量プールページの中で前記マスタストレージサブシステムのダーティキャッシュスロットを探し、
前記外部ボリュームに属する新しい容量プールチャンクを取得し、
前記スレーブストレージサブシステムにページ解放要求を送信し、
前記スレーブストレージサブシステムの容量プールページを含む共有容量プールチャンクを検索して削除し、
前記ページ解放要求の完了の承認を、前記スレーブストレージサブシステムから前記マスタストレージサブシステムへ送信し、
前記外部ボリュームに属する前記新しい容量プールチャンクから、前記マスタストレージサブシステム上の前記割り当てられていない仮想ボリュームに、新しい容量プールページを割り当て、
前記ダーティキャッシュスロットのデータを前記外部ボリュームに転送し、
前記マスタストレージサブシステムの前記外部ボリュームから、前記転送完了の承認を受信し、
前記マスタストレージサブシステムで前記ダーティキャッシュスロットの状態を、ダーティからクリーンへ変更する
ことを特徴とする、請求項１に記載のコンピュータ化されたデータストレージシステム。
【請求項５】
それぞれにディスクユニットを有する複数のストレージサブシステムと、前記複数のストレージサブシステムの外部に接続して設けられる１以上の外部ボリュームとで構成されるコンピュータ化されたデータストレージシステムによるコンピュータ実施の方法において、
第１の前記ストレージサブシステムが、第１の前記ディスクユニットと、前記第１のディスクユニットと前記外部ボリュームとによって構成される第１の容量プールを第１の容量管理テーブルによって管理する第１のストレージコントローラと、前記第１の容量プールからデータを格納するために所定の容量プールページが割り当てられる第１の仮想ボリュームとを有し、
前記第１のストレージサブシステムに接続される第２の前記ストレージサブシステムが、第２の前記ディスクユニットと、前記第２のディスクユニットと前記外部ボリュームとによって構成される第２の容量プールを第２の容量管理テーブルによって管理する第２のストレージコントローラと、前記第２の容量プールからデータを格納するために所定の容量プールページが割り当てられる第２の仮想ボリュームとを有し、
前記第１の仮想ボリューム及び前記第２の仮想ボリュームは、前記第１の仮想ボリュームと前記第２の仮想ボリュームとの間で関連付けが行われることによってペア関係が形成され、
前記外部ボリュームは、前記第１の容量プール及び第２の容量プールに共有され、
前記第１の仮想ボリュームが前記ペアのマスタボリュームであり、前記マスタボリュームを有する前記第１のストレージサブシステムがマスタストレージサブシステムであり、
前記第２の仮想ボリュームが前記ペアのスレーブボリュームであり、前記スレーブボリュームを有する前記第２のストレージサブシステムがスレーブストレージサブシステムであり、
前記第２のストレージコントローラは、前記第２の仮想ボリュームに対して前記第２の容量プールの容量プールページを割り当てる処理を実行する場合には、前記第１の仮想ボリュームと前記第１の容量プールとの間における容量プールページの割り当て状況を示す割り当て情報を前記第１のストレージサブシステムから取得し、前記第１のストレージコントローラによって前記第１の容量プールから前記第１の仮想ボリュームに、前記外部ボリュームで構成される容量プールページがすでに割り当てられていたときには、該容量プールページを前記第２の容量プールから前記第２の仮想ボリュームにも割り当て、
前記データストレージシステムは、前記スレーブボリュームから前記外部ボリュームへデータをデステージするステップをさらに含み、該デステージのステップが、
ダーティキャッシュスロットが前記スレーブストレージサブシステムで割り当てられていない容量プールページに対応し、前記割り当てられていない容量プールページは前記スレーブ仮想ボリュームに割り当てられていない状況で、前記スレーブストレージサブシステムで前記ダーティキャッシュスロットを探すステップと、
前記割り当てられていない容量プールページの割り当て状態を、前記マスタストレージサブシステムに要求するステップと、
前記割り当てられていない容量プールページと前記マスタストレージサブシステムの前記マスタ仮想ボリュームの関係を得て、該関係を前記スレーブストレージサブシステムに送信するステップと、
前記スレーブストレージサブシステムで、前記割り当てられていない容量プールページを前記スレーブ仮想ボリュームに割り当てるステップと、
前記スレーブストレージサブシステムからのロック要求を前記マスタストレージサブシステムに送信するステップと、
前記マスタストレージサブシステムで前記ロック要求を受信し、前記スレーブストレージサブシステムの前記ダーティキャッシュスロットに対応して前記マスタストレージサブシステム上のターゲットキャッシュスロットをロックするステップと、
前記スレーブストレージサブシステムに前記ロック要求完了を通知するステップと、
前記マスタ仮想ボリュームの前記ターゲットキャッシュスロットのスロット状態がダーティの場合には、前記スレーブストレージサブシステムから前記外部ボリュームに、前記ダーティキャッシュスロットのデータを転送するステップと、
前記スレーブ仮想ボリュームの前記外部ボリュームから前記データ転送の承認を受信するステップと、
前記スレーブストレージサブシステムで前記ダーティキャッシュスロットのスロット状態をダーティからクリーンに変更するステップと、
から成ることを特徴とする、コンピュータ実施の方法。
【請求項６】
前記ホストコンピュータから前記マスタボリュームへのライトＩ／Ｏ操作をコピーするステップをさらに含み、該コピーのステップが、
前記マスタストレージサブシステムでライトＩ／Ｏ要求とライトデータを受信するステップと、
前記マスタストレージサブシステムのキャッシュスロットに前記ライトデータを格納するステップと、
前記ライトＩ／Ｏ要求と前記ライトデータを前記スレーブストレージサブシステムに複製するステップと、
前記スレーブストレージサブシステムのキャッシュスロットに前記ライトデータを格納するステップと、
前記スレーブストレージサブシステムから前記ライトＩ／Ｏ要求の完了を前記マスタストレージサブシステムに返信するステップと、
前記マスタストレージサブシステムから前記ライトＩ／Ｏ要求の完了の承認を前記ホストコンピュータに送信するステップと、から成ることを特徴とする、請求項５に記載のコンピュータ実施の方法。
【請求項７】
前記ホストコンピュータから前記スレーブボリュームへのライトＩ／Ｏ操作をコピーするステップをさらに含み、該コピーのステップが、
前記スレーブストレージサブシステムでライトＩ／Ｏ要求とライトデータを受信するステップと、
前記ライトＩ／Ｏ要求と前記ライトデータを前記マスタストレージサブシステムに複製するステップと、
前記マスタストレージサブシステムのキャッシュスロットに前記ライトデータを格納するステップと、
前記マスタストレージサブシステムから前記ライトＩ／Ｏ要求の完了の承認を前記スレーブストレージサブシステムに返信するステップと、
前記スレーブストレージサブシステムのキャッシュスロットに前記ライトデータを格納するステップと、
前記スレーブストレージサブシステムから前記ライトＩ／Ｏ要求の完了の承認を前記ホストコンピュータに送信するステップと、
から成ることを特徴とする、請求項５に記載のコンピュータ実施の方法。
【請求項８】
前記マスタボリュームから前記外部ボリュームへデータをデステージするステップをさらに含み、該デステージのステップが、
割り当てられていない仮想ボリュームの容量プールページの中で前記マスタストレージサブシステムのダーティキャッシュスロットを探すステップと、
前記外部ボリュームに属する新しい容量プールチャンクを取得するステップと、
前記スレーブストレージサブシステムにページ解放要求を送信するステップと、
前記スレーブストレージサブシステムの容量プールページを含む共有容量プールチャンクを検索して削除するステップと、
前記ページ解放要求の完了の承認を、前記スレーブストレージサブシステムから前記マスタストレージサブシステムへ送信するステップと、
前記外部ボリュームに属する前記新しい容量プールチャンクから、前記マスタストレージサブシステム上の前記割り当てられていない仮想ボリュームに、新しい容量プールページを割り当てるステップと、
前記ダーティキャッシュスロットのデータを前記外部ボリュームに転送するステップと、
前記マスタストレージサブシステムの前記外部ボリュームから、前記転送完了の承認を受信するステップと、
前記マスタストレージサブシステムで前記ダーティキャッシュスロットの状態を、ダーティからクリーンへ変更するステップと、
から成ることを特徴とする、請求項５に記載のコンピュータ実施の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明は一般にコンピュータストレージシステムに関し、より具体的にはコンピュータストレージシステムのシン・プロビジョニングに関する。
【背景技術】
【０００２】
０００２    シン・プロビジョニングは大規模な集中型のコンピュータディスクストレージシステム、ストレージエリアネットワーク（ＳＡＮｓ）、ストレージ仮想化システムに適用されるメカニズムである。シン・プロビジョニングにより、スペースを容易に、過不足なくジャストインタイムに、サーバに割り当てることが可能となる。ストレージ容量のプールの多数が、個々のアプリケーションに割り当てられても未使用のままになる、従来のストレージアレイへの割り当て方法を指すファット・プロビジョニングに対比して、シン・プロビジョニングという語が用いられる。
【０００３】
０００３    ストレージ統合環境では多数のアプリケーションが同一のストレージアレイへのアクセスを共有しているため、シン・プロビジョニングによって、管理者はすべてのアプリケーションのデータ増加要求に対応するため、単独の空きスペースバッファプールを維持することができる。シン・プロビジョニングを用いると、ストレージ容量の利用効率は、多額の管理費をかけずとも自動的に向上させることができる。組織は前もって購入するストレージ容量をより少なくでき、実際の商業利用にあわせてストレージ容量のバージョンアップを抑え、未使用のディスクキャパシティを回転させておくためにかかる操作費用を省くことができる。
【０００４】
０００４    シン・プロビジョニングはオーバー割り当て、またはオーバーサブスクリプションを可能にする。オーバー割り当てまたはオーバーサブスクリプションは、ストレージアレイ自体に物理的にリザーブされているよりも多くのストレージ容量をサーバアプリケーションに割り当てることのできるメカニズムである。これによりアプリケーションストレージボリュームの柔軟な増加、減少が可能となり、１つのボリュームがどれだけ拡大するか、または縮小するかを正確に予測する必要がなくなる。アレイ上の物理的ストレージ容量は、ストレージボリュームが最初に割り当てられる時ではなく、データがアプリケーションにより実際に書かれる場合のみ専用となる。
【０００５】
０００５    シン・プロビジョニングによってデータストレージ容量の無駄を削減する方法の１つは、Ｋａｎｏへ２００６年１０月３１日付けで付与された米国特許第７，１３０，９６０号にて開示され、ここで参照することにより、全体が本書に組み込まれる。シン・プロビジョニング技術は、書き込まれていないデータエリアへのストレージ容量の割り当てを阻止することにより、ストレージ容量の無駄を削減する。
【０００６】
０００６    一方、高可用性は、所定の測定期間中、一定レベルの操作継続を確実にする、システム設計プロトコルと関連する実装である。可用性とは、ユーザコミュニティがシステムにアクセスできること、すなわち新しい作業を提出できるか、既存の作業の更新や修正ができるか、また以前の作業の結果を収集することができるかを指す。ユーザがシステムにアクセスできない場合、システムは利用不可能と見なされる。
【０００７】
０００７    可用性向上のためのソリューションの１つは同期コピーシステムを利用することであり、これは日本国特許第２００７−０７２５３８号で開示される。本技術は２つ以上のストレージサブシステムでのデータ複製システム、１つ以上の外部ストレージサブシステム、Ｉ／Ｏサーバでのパス変更機能を含む。１つのサブシステムが、例えばＩ／Ｏパス切断やデバイスエラーといった予期しない障害により停止すると、Ｉ／ＯサーバはＩ／Ｏパスを他のサブシステムに変更する。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
０００８    シン・プロビジョニングと高可用性はいずれもストレージシステムに望ましい属性である。しかし前記の２つの方法論は相殺し合う側面を持つ。
【課題を解決するための手段】
【０００９】
０００９    本発明の方法論は、コンピュータストレージシステムでのシン・プロビジョニングのための従来技術に関連する上記およびその他の１つ以上の問題点を、実質的に取り除く方法とシステムに向けられる。
【００１０】
００１０    本発明の諸側面は、高可用性を提供し、ストレージシステムの容量要求を減らすための方法と装置に向けられる。
【００１１】
００１１    前記発明の１つの側面に従い、ストレージシステムはホストコンピュータ、２つ以上のストレージサブシステム、１つ以上の外部ストレージサブシステムを含む。ストレージサブシステムを第１のストレージサブシステムと呼ぶ場合もある。ホストコンピュータは２つ以上のストレージサブシステムに接続され、ストレージサブシステム間のＩ／Ｏパスを変更できる。２つ以上のストレージサブシステムは、外部ストレージボリュームにアクセスし、それらを自己のストレージ容量として扱うことができる。これらのストレージサブシステムはシン・プロビジョニング機能を含む。シン・プロビジョニング機能は容量プールの１つの要素として外部ストレージボリュームを使用できる。シン・プロビジョニング機能は、他のストレージサブシステムから要求を受けた時、容量プールエリアを割り当てから削除することもできる。ストレージサブシステムは相互に連絡し、ライトＩ／Ｏを受けた時には、このライトＩ／Ｏを相互にコピーし合う。
【００１２】
００１２    本発明概念の１つの側面に従い、それぞれにディスクユニットを有する複数のストレージサブシステムと、前記複数のストレージサブシステムの外部に接続して設けられる１以上の外部ボリュームとで構成されるコンピュータ化されたデータストレージサブシステムが提供される。本発明システムでは、第１の前記ストレージサブシステムは、第１の前記ディスクユニットと、前記第１のディスクユニットと前記外部ボリュームとによって構成される第１の容量プールを第１の容量管理テーブルによって管理する第１のストレージコントローラと、前記第１の容量プールからデータを格納するために所定の容量プールページが割り当てられる第１の仮想ボリュームとを備え、前記第１のストレージサブシステムに接続される第２の前記ストレージサブシステムは、第２の前記ディスクユニットと、前記第２のディスクユニットと前記外部ボリュームとによって構成される第２の容量プールを第２の容量管理テーブルによって管理する第２のストレージコントローラと、前記第２の容量プールからデータを格納するために所定の容量プールページが割り当てられる第２の仮想ボリュームとを備え、前記第１の仮想ボリューム及び前記第２の仮想ボリュームは、前記第１の仮想ボリュームと前記第２の仮想ボリュームとの間で関連付けが行われることによってペア関係が形成され、前記外部ボリュームは、前記第１の容量プール及び第２の容量プールに共有され、前記第１の仮想ボリュームが前記ペアのマスタボリュームであり、前記マスタボリュームを有する前記第１のストレージサブシステムがマスタストレージサブシステムであり、前記第２の仮想ボリュームが前記ペアのスレーブボリュームであり、前記スレーブボリュームを有する前記第２のストレージサブシステムがスレーブストレージサブシステムであり、前記データストレージシステムは、前記スレーブボリュームから前記外部ボリュームへデータをデステージするための第１のプログラムを実行するよう構成される。このとき、前記第２のストレージコントローラは、前記第２の仮想ボリュームに対して前記第２の容量プールの容量プールページを割り当てる処理を実行する場合には、前記第１の仮想ボリュームと前記第１の容量プールとの間における容量プールページの割り当て状況を示す割り当て情報を前記第１のストレージサブシステムから取得し、前記第１のストレージコントローラによって前記第１の容量プールから前記第１の仮想ボリュームに、前記外部ボリュームで構成される容量プールページがすでに割り当てられていたときには、該容量プールページを前記第２の容量プールから前記第２の仮想ボリュームにも割り当てる。さらに、前記第１のプログラムは、ダーティキャッシュスロットが前記スレーブストレージサブシステムで割り当てられていない容量プールページに対応し、前記割り当てられていない容量プールページは前記スレーブ仮想ボリュームに割り当てられていない状況で、前記スレーブストレージサブシステムで前記ダーティキャッシュスロットを探し、前記割り当てられていない容量プールページの割り当て状態を、前記マスタストレージサブシステムに要求し、前記割り当てられていない容量プールページと前記マ��タストレージサブシステムの前記マスタ仮想ボリュームの関係を得て、該関係を前記スレーブストレージサブシステムに送信し、前記スレーブストレージサブシステムで、前記割り当てられていない容量プールページを前記スレーブ仮想ボリュームに割り当て、前記スレーブストレージサブシステムからのロック要求を前記マスタストレージサブシステムに送信し、前記マスタストレージサブシステムで前記ロック要求を受信し、前記スレーブストレージサブシステムの前記ダーティキャッシュスロットに対応して前記マスタストレージサブシステム上のターゲットキャッシュスロットをロックし、前記スレーブストレージサブシステムに前記ロック要求完了の通知をし、前記マスタ仮想ボリュームの前記ターゲットキャッシュスロットのスロット状態がダーティの場合には、前記スレーブストレージサブシステムから前記外部ボリュームに、前記ダーティキャッシュスロットのデータを転送し、前記スレーブ仮想ボリュームの前記外部ボリュームから前記データ転送の承認を受信し、前記スレーブストレージサブシステムで前記ダーティキャッシュスロットのスロット状態をダーティからクリーンに変更する。
【００１３】
００１３    前記発明概念のもう１つの側面に従い、外部ストレージボリューム、相互に、また外部ストレージボリュームにも接続されている２つ以上のストレージサブシステムを含み、ストレージサブシステムはそれぞれキャッシュエリアを含み、ストレージサブシステムはそれぞれ少なくとも１つの仮想ボリュームと少なくとも１つの容量プールを含み、少なくとも１つの仮想ボリュームは少なくとも１つの容量プールのストレージ要素から割り当てられ、少なくとも１つの容量プールは外部ストレージボリュームの少なくとも一部分から構成される、コンピュータ化されたデータストレージシステムが提供される。少なくとも１つの容量プールのストレージ要素は、データアクセス要求に応じて仮想ボリュームに割り当てられる。本発明のストレージシステムはさらに、２つ以上のストレージサブシステムに接続され、２つ以上のストレージサブシステム間のパスのインプット／アウトプットを切り替える働きを持つホストコンピュータを含む。２つ以上のストレージサブシステムのうち第１のストレージサブシステムによるデータライト要求を受信した場合、第１のストレージサブシステムは、受信したデータライト要求を、２つ以上のストレージサブシステムのうち少なくとも第２のストレージサブシステムに提供するよう構成され、第１のストレージサブシステムから要求を受けた場合、第２のストレージサブシステムは、上記の少なくとも１つの容量プールのストレージ要素のうち少なくとも１つが、第２のストレージサブシステムの少なくとも１つの仮想ボリュームに割り当てられるのを阻止するよう構成されている。
【００１４】
００１４    本発明概念のさらに他の側面に従い、それぞれにディスクユニットを有する複数のストレージサブシステムと、前記複数のストレージサブシステムの外部に接続して設けられる１以上の外部ボリュームとで構成されるコンピュータ化されたデータストレージシステムによる、コンピュータに実装された方法が提供される。この方法では、第１の前記ストレージサブシステムが、第１の前記ディスクユニットと、前記第１のディスクユニットと前記外部ボリュームとによって構成される第１の容量プールを第１の容量管理テーブルによって管理する第１のストレージコントローラと、前記第１の容量プールからデータを格納するために所定の容量プールページが割り当てられる第１の仮想ボリュームとを有し、前記第１のストレージサブシステムに接続される第２の前記ストレージサブシステムが、第２の前記ディスクユニットと、前記第２のディスクユニットと前記外部ボリュームとによって構成される第２の容量プールを第２の容量管理テーブルによって管理する第２のストレージコントローラと、前記第２の容量プールからデータを格納するために所定の容量プールページが割り当てられる第２の仮想ボリュームとを有し、前記第１の仮想ボリューム及び前記第２の仮想ボリュームは、前記第１の仮想ボリュームと前記第２の仮想ボリュームとの間で関連付けが行われることによってペア関係が形成され、前記外部ボリュームは、前記第１の容量プール及び第２の容量プールに共有され、前記第１の仮想ボリュームが前記ペアのマスタボリュームであり、前記マスタボリュームを有する前記第１のストレージサブシステムがマスタストレージサブシステムであり、前記第２の仮想ボリュームが前記ペアのスレーブボリュームであり、前記スレーブボリュームを有する前記第２のストレージサブシステムがスレーブストレージサブシステムである。このとき、前記第２のストレージコントローラは、前記第２の仮想ボリュームに対して前記第２の容量プールの容量プールページを割り当てる処理を実行する場合には、前記第１の仮想ボリュームと前記第１の容量プールとの間における容量プールページの割り当て状況を示す割り当て情報を前記第１のストレージサブシステムから取得し、前記第１のストレージコントローラによって前記第１の容量プールから前記第１の仮想ボリュームに、前記外部ボリュームで構成される容量プールページがすでに割り当てられていたときには、該容量プールページを前記第２の容量プールから前記第２の仮想ボリュームにも割り当てる。さらに、前記データストレージシステムは、前記スレーブボリュームから前記外部ボリュームへデータをデステージするステップを含み、該デステージのステップは、ダーティキャッシュスロットが前記スレーブストレージサブシステムで割り当てられていない容量プールページに対応し、前記割り当てられていない容量プールページは前記スレーブ仮想ボリュームに割り当てられていない状況で、前記スレーブストレージサブシステムで前記ダーティキャッシュスロットを探すステップと、前記割り当てられていない容量プールページの割り当て状態を、前記マスタストレージサブシステムに要求するステップと、前記割り当てられていない容��プールページと前記マスタストレージサブシステムの前記マスタ仮想ボリュームの関係を得て、該関係を前記スレーブストレージサブシステムに送信するステップと、前記スレーブストレージサブシステムで、前記割り当てられていない容量プールページを前記スレーブ仮想ボリュームに割り当てるステップと、前記スレーブストレージサブシステムからのロック要求を前記マスタストレージサブシステムに送信するステップと、前記マスタストレージサブシステムで前記ロック要求を受信し、前記スレーブストレージサブシステムの前記ダーティキャッシュスロットに対応して前記マスタストレージサブシステム上のターゲットキャッシュスロットをロックするステップと、前記スレーブストレージサブシステムに前記ロック要求完了を通知するステップと、前記マスタ仮想ボリュームの前記ターゲットキャッシュスロットのスロット状態がダーティの場合には、前記スレーブストレージサブシステムから前記外部ボリュームに、前記ダーティキャッシュスロットのデータを転送するステップと、前記スレーブ仮想ボリュームの前記外部ボリュームから前記データ転送の承認を受信するステップと、前記スレーブストレージサブシステムで前記ダーティキャッシュスロットのスロット状態をダーティからクリーンに変更するステップと、から成る。
【００１５】
００１５    前記発明概念のさらに他の側面に従い、１つ以上のプロセッサにより実行されると、２つ以上のストレージサブシステムに接続されたホストコンピュータを使ったデータストレージのためにコンピュータに内蔵された方法を１つ以上のプロセッサが実行する、１つ以上のシーケンスの指示を具体化したコンピュータ可読メディアが提供される。２つ以上のストレージサブシステムは相互に、また外部ストレージボリュームにも接続される。ストレージボリュームはそれぞれキャッシュエリア、少なくとも１つの仮想ボリューム、少なくとも１つの容量プールを含む。前記の少なくとも１つの仮想ボリュームは、前記の少なくとも１つの容量プールから割り当てられる。少なくとも１つの容量プールは、外部ストレージボリュームの少なくとも一部分を含む。各ストレージサブシステムでは、少なくとも１つの仮想ボリュームが、シン・プロビジョニングボリュームである。本発明の方法は、２つ以上のストレージサブシステムのうち第１のストレージサブシステムの第１の仮想ボリュームと、２つ以上のストレージサブシステムのうち第２のストレージサブシステムの第２の仮想ボリュームを、マスタボリュームとスレーブボリュームとしてペア化するステップと、第１のストレージサブシステムからの要求を受けた場合に、第２のストレージサブシステムのうち少なくとも１つの容量プールのストレージ要素のうち少なくとも１つが、第２の仮想ボリュームに割り当てられるのを防ぐステップで構成される。
００１６    本発明に関するその他の側面は、一部は次の説明に記載され、一部は説明において明白となるか、本発明の実行により判明する。本発明の諸側面は、特に以下の詳細な説明と付随する請求項に示される要素と、さまざまな要素と側面の組み合わせにより実現され、達成される。
【００１６】
００１７    当然のことながら、前記の説明も以下の説明も典型的なものであって、説明のためのものに過ぎず、請求項に記載された発明又はその出願をいかなる方法であろうと限定することを意図するものではない。
【発明を実施するための最良の形態】
【００１７】
００５９    以下の本発明の詳細な説明において、本開示の一部を成す添付図面が参照され、同様の番号は基本的に同様の要素を示す。前記の添付画面は、限定のためではなく説明のため、本発明の原理と一致する特定の実施例、実装例を示す。これらの実装例は、当業者が本発明を実行できるよう、十分な詳細さをもって記述されており、その他の実装例が利用可能であること、本発明の精神と範囲から逸脱することなく、構造的変更および／またはさまざまな要素の置換が実行可能であることを理解されたい。したがって以下の詳細な説明は、限定された意味で解釈するべきものではない。さらに、前記の本発明のさまざまな実施例は、汎用コンピュータ上で動作するソフトウェアの形式か、専用ハードウェア形式か、またはソフトウェアとハードウェアの組み合わせで実装可能である。
【００１８】
００６０    ストレージスペースの無駄を最小限に抑える目的と、ストレージボリュームへの迅速、容易なアクセスという目的の両方を実現させるため、シン・プロビジョニングと高可用性を含む２つの技術が組み合わされると、特定の問題が生じる。これはページマネジメントテーブルがストレージサブシステムに共有されていないという事実による。したがって、２つのストレージサブシステムのページマネジメントテーブルが、２つの異なるストレージサブシステムのシン・プロビジョニングのページエリアに同一の容量プールエリアを割り当て、アサインするという可能性がある。これにより、両方のストレージサブシステムが同じスペースへのＩ／Ｏ実施を試みた場合に、衝突が発生する。
【００１９】
００６１    さらに、ページマネジメントテーブルが前記の衝突を防ぐためにストレージサブシステム間で共有された場合、ストレージサブシステム間の通信またはロックの衝突により待ち時間が発生する。
【００２０】
００６２    ストレージサブシステムの構成要素は、本発明の諸側面に従い、図１、２、３、４、５と、６から１８までで示され、説明される。
【００２１】
００６３    図１は本発明の諸側面に従い、ストレージシステムを示す。
００６４    図１に示されるストレージシステムは２つ以上のストレージサブシステム１００、４００と、ホストコンピュータ３００、外部ボリューム６２１を含む。ストレージシステムは１つ以上のストレージネットワーク２００、５００も含む場合がある。ストレージサブシステム１００、４００は直接に、または表示されないネットワーク経由で相互に接続される。ホストコンピュータは直接に、またはストレージネットワーク２００経由で、ストレージサブシステム１００、４００に接続される。外部ボリューム６２１は直接に、またはストレージネットワーク５００経由で、ストレージサブシステム１００、４００に接続される。
【００２２】
００６５    ホストコンピュータ３００は、ＣＰＵ３０１、メモリ３０２、一つ以上のストレージインタフェース３０３を含む。ＣＰＵ３０１はメモリ３０２に格納されたプログラムとテーブルを実行するためのものである。ストレージインタフェース３０２は、ストレージネットワーク２００を通じてストレージサブシステム１００でホストインタフェース１１４に接続される。
【００２３】
００６６    ストレージサブシステム１００はストレージコントローラ１１０、ディスクユニット１２０、マネジメントターミナル１３０を含む。
【００２４】
００６７    ストレージコントローラ１１０は、メモリ１１２に格納されたプログラムとテーブルを実行するためのＣＰＵ１１１、プログラム、テーブル、データ格納用のメモリ１１２、ディスクユニットにストレージコントローラを接続するためのＳＣＳＩ  Ｉ／Ｆになりうるディスクインタフェース１１６、ストレージコントローラをストレージネットワーク２００を通じてホストコンピュータ３００のストレージインタフェース３０３に接続するためのファイバチャネルＩ／Ｆになりうるホストインタフェース１１５、マネジメントターミナル１３０のストレージコントローラインタフェース１３３にストレージコントローラを接続するためのＮＩＣ  Ｉ／Ｆになりうるマネジメントターミナルインタフェース１１４、もう１つのストレージサブシステム４００でストレージコントローラインタフェース４１７にストレージコントローラを接続するためのファイバチャネルＩ／Ｆになりうるストレージコントローラインタフェース１１７、ストレージネットワーク５００を通じて外部ボリューム６２１にストレージコントローラ１１０を接続するためのファイバチャネルＩ／Ｆになりうる外部ストレージコントローラインタフェース１１８を含む。ホストインタフェース１１５はホストコンピュータ３００からＩ／Ｏ要求を受信し、ＣＰＵ１１１に通知する。マネジメントターミナルインタフェース１１４はボリューム、ディスク、容量プール操作要求をマネジメントターミナル１３０から受信し、ＣＰＵ１１１に通知する。
【００２５】
００６８    ディスクユニット１２０はハードディスクドライブ（ＨＤＤ）１２１などのディスクを含む。
【００２６】
００６９    マネジメントターミナル１３０はマネジメントターミナルにより実行されたプロセスを管理するためのＣＰＵ１３１、メモリ１３２、マネジメントターミナルをストレージコントローラ１１０内のインタフェース１１４に接続し、ボリューム、ディスク、容量プール操作をストレージコントローラ１１０に送信するためのＮＩＣになりうるストレージコントローラインタフェース１３３、キーボード、マウス、モニタ等のユーザインタフェース１３４を含む。
【００２７】
００７０    ストレージサブシステム４００はストレージコントローラ４１０、ディスクユニット４２０、マネジメントターミナル４３０を含む。これらの要素はストレージサブシステム１００に関して記述された構成要素と類似した構成要素を含む。ストレージサブシステム４００の要素は本段落中で以下に記述される。ストレージコントローラ４１０は、メモリ４１２に格納されたプログラムとテーブルを実行するためのＣＰＵ４１１、プログラム、テーブル、データ格納用のメモリ４１２、ディスクユニットにストレージコントローラを接続するためのＳＣＳＩ  Ｉ／Ｆになりうるディスクインタフェース４１６、ストレージコントローラをストレージネットワーク２００を通じてホストコンピュータ３００のストレージインタフェース３０３に接続するためのファイバチャネルＩ／Ｆになりうるホストインタフェース４１５、マネジメントターミナル４３０のストレージコントローラインタフェース４３３にストレージコントローラを接続するためのＮＩＣ  Ｉ／Ｆになりうるマネジメントターミナルインタフェース４１４、もう１つのストレージサブシステム４００でストレージコントローラインタフェース４１７にストレージコントローラを接続するためのファイバチャネルＩ／Ｆになりうるストレージコントローラインタフェース４１７、ストレージネットワーク５００を通じて外部ボリューム６２１にストレージコントローラ４１０を接続するためのファイバチャネルＩ／Ｆになりうる外部ストレージコントローラインタフェース４１８を含む。ホストインタフェース４１５はホストコンピュータ３００からＩ／Ｏ要求を受信し、ＣＰＵ４１１に通知する。マネジメントターミナルインタフェース４１４はボリューム、ディスク、容量プール操作要求をマネジメントターミナル４３０から受信し、ＣＰＵ４１１に通知する。ディスクユニット４２０はハードディスクドライブ（ＨＤＤ）４２１などのディスクを含む。マネジメントターミナル４３０はマネジメントターミナルにより実行された処理を管理するためのＣＰＵ４３１、メモリ４３２、マネジメントターミナルをストレージコントローラ４１０でインタフェース４１４に接続し、ボリューム、ディスク、容量プール操作をストレージコントローラ４１０に送信するためのＮＩＣになりうるストレージコントローラインタフェース４３３、キーボード、マウス、モニタ等のユーザインタフェース４３４を含む。
【００２８】
００７１    図２は本発明の諸側面に従い、ストレージシステムのホストコンピュータのメモリ例を示す。
００７２    図２のホストコンピュータ３００のメモリ３０２はボリュームマネジメントテーブル３０２‐１１を含む場合がある。
【００２９】
００７３    図３は本発明の諸側面に従い、ボリュームマネジメントテーブルの例を示す。
００７４    ボリュームマネジメントテーブルは、あるボリュームの障害の際にそのボリュームから別のボリュームにパスを変更してデータ救出を助けるよう補助的に使用できる情報用ボリュームをペア形成するための、２つのホストボリューム情報列３０２‐１１‐０１、３０２‐１１‐０２を含む。ストレージシステムを形成するストレージサブシステムでのストレージボリュームのこうしたペア形成により、データ可用性を向上させるストレージ冗長性が提供される。
【００３０】
００７５    図４、図５は本発明の諸側面に従い、ストレージサブシステムのストレージコントローラのメモリのための構造例を示す。図６、７、８、９、１０、１１、１２、１３、１４、１５、１６、１７、１８は本発明の諸側面に従い、図４のプログラムとテーブルをさらに詳細に示す。
【００３１】
００７６    図４はストレージサブシステム１００のメモリ１１２に対応し、図５はストレージサブシステム４００のメモリ４１２に対応する。これらのメモリは図１のストレージサブシステム１００、４００にも属する。一連のプログラムとテーブルがメモリ１１２、４１２に格納されている通りに示される。２つのメモリ１１２、４１２は類似しているので、以下では図４のみを詳細に記述する。
【００３２】
００７７    ストレージコントローラのメモリ１１２に格納されるプログラムはボリューム操作プログラム１１２０‐０２を含む。図６に示すように、ボリューム操作プログラムはボリューム操作待機プログラム１１２‐０２‐１、ペア形成プログラム１１２‐０２‐２、ペア削除プログラム１１２‐０２‐３を含む。ボリューム操作待機プログラム１１２‐０２‐１はＣＰＵ１１１が「ペア形成」または「ペア削除」を受信したときに実行されるシステム常駐プログラムである。ペア形成プログラム１１２‐０２‐２はストレージサブシステム１００とストレージサブシステム４００のストレージボリューム間でボリューム複製のための関係を確立し、ＣＰＵ１１１が「ペア形成」を受信したときに実行される。ペア形成プログラム１１２‐０２‐２はボリューム操作待機プログラム１１２‐０２‐１に呼び出される。ペア削除プログラム１１２‐０２‐３はボリューム操作待機プログラム１１２‐０２‐１に呼び出され、ストレージサブシステム１００とストレージサブシステム４００のストレージボリューム間に存在するボリューム複製のための関係を解放する。ＣＰＵ１１１が「ペア削除」を受信したときに実行される。
【００３３】
００７８    ストレージコントローラのメモリ１１２に格納されるプログラムは、さらにＩ／Ｏ操作プログラム１１２‐０４を含む。図７に示されるように、Ｉ／Ｏ操作プログラム１１２‐０４はライトＩ／Ｏ操作プログラム１１２‐０４‐１とリードＩ／Ｏ操作プログラム１１２‐０４‐２を含む。ライトＩ／Ｏ操作プログラム１１２‐０４‐１はＩ／Ｏデータをホストコンピュータ３００からキャッシュエリア１１２‐２０に転送するシステム常駐プログラムであり、ＣＰＵ１１１がライトＩ／Ｏ要求を受信したときに実行される。リードＩ／Ｏ操作プログラム１１２‐０４‐２もＩ／Ｏデータをキャッシュエリア１１２‐２０からホストコンピュータ３００に転送するシステム常駐プログラムであり、ＣＰＵ１１１がリードＩ／Ｏ要求を受信したときに実行される。
【００３４】
００７９    ストレージコントローラのメモリ１１２に格納されるプログラムは、さらにディスクアクセスプログラム１１２‐０５を含む。図８に示されるように、ディスクアクセスプログラム１１２‐０５はディスク掃き出しプログラム１１２‐０５‐１、キャッシュステージングプログラム１１２‐０５‐２、キャッシュデステージプログラム１１２‐０５‐３を含む。ディスク掃き出しプログラム１１２‐０５‐１はダーティキャッシュデータを検索してそれらをディスク１２１に掃き出すシステム常駐プログラムであり、ＣＰＵ１１１の作業負荷が低い時に実行される。キャッシュステージングプログラム１１２‐０５‐２はデータをディスク１２１からキャッシュエリア１１２‐０５‐２０に転送するシステム常駐プログラムであり、ＣＰＵ１１１がディスク１２１のデータへのアクセスを必要とするときに実行される。キャッシュデステージプログラム１１２‐０５‐３はデータをキャッシュエリアから転送するシステム常駐プログラムであり、ディスク掃き出しプログラム１１２‐０５‐１がダーティキャッシュデータをディスク１２１に掃き出すときに実行される。
【００３５】
００８０    ストレージコントローラのメモリ１１２に格納されるプログラムは、さらに容量プールマネジメントプログラム１１２‐０８を含む。図９に示されるように、容量プールマネジメントプログラム１１２‐０８は容量プールページ割り当てプログラム１１２‐０８‐１、容量プールガーベッジコレクションプログラム１１２‐０８‐２、容量プールチャンク解放プログラム１１２‐０８‐３を含む。容量プールページ割り当てプログラム１１２‐０８‐１は容量プールから新しい容量プールページと容量プールチャンクを受け、他のストレージサブシステムに任意のチャンクを削除するよう要求を送る。容量プールガーベッジコレクションプログラム１１２‐０８‐２は容量プールからガーベッジコレクションを実行するシステム常駐プログラムであり、ＣＰＵ１１１の作業負荷が低い時に実行される。容量プールチャンク解放プログラム１１２‐０８‐３はＣＰＵ１１１が「容量プール拡張」要求を受けた時に動作するシステム常駐プログラムであり、特定のＲＡＩＤグループか外部ボリューム６２１を特定の容量プールに追加する。
【００３６】
００８１    ストレージコントローラのメモリ１１２に格納されるプログラムはさらに、図３０に示されるように、他のストレージサブシステムからの要求に続いてスロット１２１‐３のロックやロック解除を行うスロット操作プログラム１１２‐０９を含む。
【００３７】
００８２    ストレージコントローラのメモリ１１２に格納されるテーブルはＲＡＩＤグループマネジメントテーブル１１２‐１１を含む。図１０に示されるように、ＲＡＩＤグループマネジメントテーブル１１２‐１１はストレージコントローラ１１０、４１０内のＲＡＩＤグループのＩＤ、ＲＡＩＤレベルとＲＡＩＤ構成１１２‐１１‐０２列、ＨＤＤナンバー１１２‐１１‐０３、ＨＤＤ容量１１２‐１１‐０４、ストレージサブシステム１１２‐１１‐０５を含む。ＲＡＩＤレベル列１１２‐１１‐０２では、入力として「１０」という数があると「ミラーリング、ストライピング」を意味し、数字の「５」は「パリティストライピング」を意味し、数字の「６」は「ダブルパリティストライピング」を意味し、「ＥＸＴ」という入力は外部ボリューム６２１の使用を意味し、「Ｎ／Ａ」という入力はＲＡＩＤグループが存在しないことを意味する。ＨＤＤナンバー１１２‐１１‐０３列では、ＲＡＩＤレベル情報１１２‐１１‐０２が「１０」か「５」か「６」の場合、ディスク１２１、４２１のＩＤリストがＲＡＩＤグループ内でグループ化されていることと、ＲＡＩＤグループの容量がディスク１２１、４２１を含むことを意味する。ＲＡＩＤグループとペア化されたストレージサブシステムは、このテーブルの最後の列で示される。
【００３８】
００８３    ストレージコントローラのメモリ１１２に格納されたテーブルはさらに、仮想ボリュームマネジメントテーブル１１２‐１２を含む。図１１に示されるように、仮想ボリュームマネジメントテーブル１１２‐１２はボリュームナンバーまたはＩＤ列１１２‐１２‐０１、ボリューム容量列１１２‐１２‐０２、容量プールナンバー列１１２‐１２‐０３、現在使用されているチャンク列１１２‐１２‐０５を含む。ボリューム列１１２‐１２‐０１はストレージコントローラ１１０、４１０の各仮想ボリュームのＩＤを含む。ボリューム容量列１１２‐１２‐０２は対応する仮想ボリュームのストレージ容量を含む。容量プールナンバー列１１２‐１２‐０３は仮想ボリュームに関連しており、この容量プールからデータを格納するため容量を割り当てる。仮想ボリュームはＲＡＩＤグループか外部ボリュームのチャンクから容量プールページを得る。仮想ボリュームにより現在使用されているチャンクは、現在使用されているチャンク列１１２‐１２‐０５に表示される。この列はＲＡＩＤグループと、さまざまなデータストレージ操作のために現在使用されているチャンクのチャンクナンバーを示す。
【００３９】
００８４    ストレージコントローラのメモリ１１２に格納されたテーブルはさらに、仮想ボリュームページマネジメントテーブル１１２‐１３を含む。図１２に示されるように、仮想ボリュームマネジメントテーブル１１２‐１３は、仮想ボリューム１４０内の仮想ボリュームページ１４０‐１のＩＤを提供する仮想ボリュームページアドレス１１２‐１３‐０１、関連するＲＡＩＤグループナンバー１１２‐１３‐０２、容量プールページアドレス１１２‐１３‐０３を含む。ＲＡＩＤグループナンバー１１２‐１３‐０２は、外部ボリューム６２１を含む、割り当てられた容量プールページを有し、この列でのＮ／Ａという入力は、仮想ボリュームページが容量プールページを割り当てないことを意味する。容量プールページアドレス１１２‐１３‐０３は、関連する容量プールページの開始論理アドレスを含む。
【００４０】
００８５    ストレージコントローラのメモリ１１２に格納されたテーブルはさらに、容量プールマネジメントテーブル１１２‐１４を含む。図１３に示されるように、容量プールマネジメントテーブル１１２‐１４は、容量プールナンバー１１２‐１４‐０１、ＲＡＩＤグループリスト１１２‐１４‐０２、空き容量情報１１２‐１４‐０３を含む。容量プールナンバー１１２‐１４‐０１は、ストレージコントローラ１１０、４１０の容量プールのＩＤを含む。ＲＡＩＤグループリスト１１２‐１４‐０２は、容量プール内のＲＡＩＤグループのリストを含む。Ｎ／Ａという入力は、容量プールが存在しないことを示す。空き容量情報１１２‐１４‐０３は、容量プールの合計空きエリアを示す。
【００４１】
００８６    ストレージコントローラのメモリ１１２に格納されたテーブルはさらに、容量プール要素マネジメントテーブル１１２‐１５を含む。図１４に示されるように、容量プール要素マネジメントテーブル１１２‐１５は、ＲＡＩＤグループナンバー１１２‐１５‐０１、容量プールナンバー１１２‐１５‐０２、空きチャンクキューインデックス１１２‐１５‐０３、使用チャンクキューインデックス１１２‐１５‐０４、削除チャンクキューインデックス１１２‐１５‐０５を含む。ＲＡＩＤグループナンバー１１２‐１５‐０１はストレージコントローラ１１０、４１０のＲＡＩＤグループナンバーのＩＤを示す。容量プールナンバー１１２‐１５‐０２は、ＲＡＩＤグループが属する容量プールのＩＤを示す。空きチャンクキューインデックス１１２‐１５‐０３は、空きチャンクキューインデックスのインデックス番号を含む。使用チャンクキューインデックス１１２‐１５‐０４は使用されているチャンクキューインデックスのインデックス番号を示す。削除チャンクキューインデックス１１２‐１５‐０５は、削除チャンクキューインデックスのインデックス番号を含む。ＲＡＩＤグループは空きチャンク、使用チャンク、削除されたチャンクをキューとして管理する。
【００４２】
００８７    ストレージコントローラのメモリ１１２に格納されたテーブルはさらに、容量プールチャンクマネジメントテーブル１１２‐１６を含む。図１５に示されるように、容量プールチャンクマネジメントテーブル１１２‐１６は、以下の列を含む：容量プールチャンクナンバー１１２‐１６‐０１、仮想ボリュームナンバー１１２‐１６‐０２、使用容量１１２‐１６‐０３、削除容量１１２‐１６‐０４、次のチャンクポインタ１１２‐１６‐０５。容量プールチャンクナンバー１１２‐１６‐０１はＲＡＩＤグループ内の容量プールチャンクのＩＤを含む。仮想ボリュームナンバー１１２‐１６‐０２は容量プールチャンクを使用する仮想ボリュームナンバーを含む。使用容量１１２‐１６‐０３は、容量プールチャンクの合計使用容量を含む。仮想ボリュームが容量プールチャンクから容量プールページを得ると、このパラメータは容量プールページサイズに従い増加する。削除容量情報１１２‐１６‐０４は容量プールチャンクからの合計削除容量を含む。仮想ボリュームがボリュームフォーマットか仮想ボリュームページ割り当てにより容量プールページを解放すると、このパラメータは容量プールページサイズに従い増加する。次のチャンクポインタ１１２‐１６‐０５は、その他の容量プールチャンクのポインタを含む。容量プールチャンクはキュー構造である。空きチャンクキューインデックス１１２‐１５‐０３と使用チャンクキューインデックス１１２‐１５‐０４は、図１４で示されたキューのインデックスである。
【００４３】
００８８    ストレージコントローラのメモリ１１２に格納されたテーブルはさらに、容量プールページマネジメントテーブル１１２‐１７を含む。図１６に示されるように、容量プールページマネジメントテーブル１１２‐１７は、容量プールチャンク内の容量プールページのオフセットを示す容量プールナンバー１１２‐１７‐０１と、容量プールページを指す仮想ボリュームページナンバーを示す仮想ボリュームページナンバー１１２‐１７‐０２を含む。この列では「ヌル」という入力はページが削除されたか、または割り当てられていないことを意味する。
【００４４】
００８９    ストレージコントローラのメモリ１１２に格納されたテーブルはさらに、ペアマネジメントテーブル１１２‐１９を含む。図１７に示されるように、ペアマネジメントテーブル１１２‐１９は、ボリュームナンバー１１２‐１９‐０１と、ペア化サブシステムナンバー１１２‐１９‐０２と、ペア化ボリュームナンバー１１２‐１９‐０３を示す列を含む。ボリュームナンバー情報１１２‐１９‐０１はストレージコントローラ１１０、４１０内の仮想ボリュームのＩＤを示す。ペア化サブシステムナンバー情報１１２‐１９‐０２は、ペア化ボリュームが属するストレージサブシステムのＩＤを示す。ペア化ボリュームナンバー情報１１２‐１９‐０３は、個々のストレージサブシステム内にあるペア化仮想ボリュームのＩＤを示す。ペア状態情報１１２‐１９‐０４は、ペアにおけるボリュームの役割をマスタかスレーブかＮ／Ａとして示す。マスタはボリュームが外部ボリュームからシン・プロビジョニングの容量割り当てを操作できることを意味する。スレーブとは、割り当てが必要な場合に、スレーブのボリュームがマスタのボリュームに割り当てを求めることを意味する。マスタが既に外部ボリュームから容量プールページを割り当て済みなら、スレーブは仮想ボリュームページを外部ボリュームの前記の容量プールページに関連付ける。Ｎ／Ａという入力は、ボリュームがその他の仮想ボリュームと何ら関係がないことを示す。
【００４５】
００９０    ストレージコントローラのメモリ１１２に格納されたテーブルはさらに、キャッシュマネジメントテーブル１１２‐１８を含む。図１８に示されるように、キャッシュマネジメントテーブル１１２‐１８は、キャッシュスロットナンバー１１２‐１８‐０１、ディスクナンバーまたは論理ユニットナンバー（ＬＵＮ）１１２‐１８‐０２、ディスクアドレスまたは論理ブロックアドレス（ＬＢＡ）１１２‐１８‐０３、次のスロットポインタ１１２‐１８‐０４、ロック状態１１２‐１８‐０５、キューの種類１１２‐１８‐１１、キューインデックスポインタ１１２‐１８‐１２を含む列を含む。キャッシュスロットナンバー１１２‐１８‐０１は、キャッシュエリア１１２‐２０が複数のキャッシュスロットを含むキャッシュエリア１１２‐２０でのキャッシュスロットのＩＤを含む。ディスクナンバー１１２‐１８‐０２は、図１９又は図２０に示されるように、キャッシュスロットがデータを格納するディスク１２１か仮想ボリューム１４０のナンバーを含む。ディスクナンバー１１２‐１８‐０２はキャッシュスロットナンバーに対応するディスク１２１か仮想ボリューム１４０を特定できる。ディスクアドレス１１２‐１８‐０３は、キャッシュスロットがデータを格納するディスクのアドレスを含む。キャッシュスロットはキュー構造であり、次のスロットポインタ１１２‐１８‐０４は次のキャッシュスロットナンバーを含む。「ヌル」という入力は、キューの末端を示す。ロック状態１１２‐１８‐０５列では、「ロック」という入力はスロットがロックされていることを意味する。「アンロック」という入力はスロットがロックされていないことを意味する。状態が「ロック」の時、ＣＰＵ１１１、４１１は「ロック」により上書きができず、状態が「アンロック」に変わるまで待機する。キューの種類情報１１２‐１８‐１１は、キャッシュスロットキューの種類を示す。この列では、「空き」という入力は未使用キャッシュスロットを持つキューを意味し、「クリーン」という入力はディスクスロットと同じデータを格納するキャッシュスロットを持つキューを意味し、「ダーティー」という入力はディスクスロット内のデータとは異なるデータを格納するキャッシュスロットを持つキューを意味するので、ストレージコントローラ１１０は、今後ディスクスロットにキャッシュスロットデータを掃き出す必要がある。キューインデックスポインタ１１２‐１８‐１２はキャッシュスロットキューのインデックスを含む。
【００４６】
００９１    ストレージコントローラのメモリ１１２、４１２はさらに、キャッシュエリア１１２‐２０を含む。キャッシュエリア１１２‐２０は、キャッシュマネジメントテーブル１１２‐１８に管理されるキャッシュスロット１１２‐２０‐１のナンバーを含む。キャッシュスロットは図２４で示される。
【００４７】
００９２    本発明の諸側面に従い、ストレージシステムの論理構造が図１７から２４に関して示され、説明される。図１９から２４において、実線はオブジェクトがポインタで参照されることを示し、点線はオブジェクトが計算により参照されることを意味する。
【００４８】
００９３    図１９は本発明の諸側面に従い、容量プールチャンク、容量プールページ、ディスクキャッシュの関係を図示する。
【００４９】
００９４    ディスクユニット１２０内の各ディスクは多数のディスクスロット１２１‐３に分割される。容量プールチャンク１２１‐１はＲＡＩＤグループ内で構成される多数のディスクスロット１２１‐３を含む。容量プールチャンク１２１‐１は０個以上の容量プールページ１２１‐２を含むことができる。容量プールチャンク１２１‐１のサイズは固定されている。容量プールページ１２１‐２は１つ以上のディスクスロット１２１‐３を含む。容量プールページ１２１‐２のサイズも固定されている。ストライプのブロックのＲＡＩＤ内にある各ディスクスロット１２１‐３のサイズは固定され、図２４に示されるキャッシュスロット１１２‐２０‐１のサイズと同じである。ディスクスロットはホストデータまたはパリティデータを含む。
【００５０】
００９５    図２０は本発明の諸側面に従い、仮想ボリュームページ、仮想ボリュームスロット、仮想ボリュームの関係を図示する。
００９６    仮想ボリューム１４０はその容量プールから容量を割り当て、Ｉ／Ｏ操作を通じてホストコンピュータ３００によってアクセスすることもできる。仮想ボリュームは仮想ボリュームスロット１４０‐２を含む。１つ以上の仮想ボリュームスロット１４０‐２は仮想ボリュームページ１４０‐１を形成する。仮想ボリュームスロット１４０‐２はキャッシュスロット１１２‐２０‐１かディスクスロット１２１‐３と同じ容量を持つ。
【００５１】
００９７    図２１は本発明の諸側面に従い、容量プールマネジメントテーブル、容量プール要素マネジメントテーブル、容量プールチャンクマネジメントテーブル、ＲＡＩＤグループマネジメントテーブル、容量プールチャンクの関係を図示する。
【００５２】
００９８    容量プールマネジメントテーブル１１２‐１４、容量プール要素マネジメントテーブル１１２‐１５、容量プールチャンクマネジメントテーブル１１２‐１６、ＲＡＩＤグループマネジメントテーブル１１２‐１１、容量プールチャンク１２１‐１の関係が示される。示されるとおり、容量プールマネジメントテーブル１１２‐１４はＲＡＩＤグループリスト１１２‐１４‐０２に従い、容量プール要素マネジメントテーブル１１２‐１５を参照する。容量プール要素マネジメントテーブル１１２‐１５は容量プールナンバー１１２‐１５‐０２に従い、容量プールマネジメントテーブル１１２‐１４を参照する。容量プール要素マネジメントテーブル１１２‐１５は空きチャンクキュー１１２‐１５‐０３、使用チャンクキュー１１２‐１５‐０４、削除チャンクキュー１１２‐１５‐０５に従い、容量プールチャンクマネジメントテーブル１１２‐１６を参照する。容量プール要素マネジメントテーブル１１２‐１５とＲＡＩＤグループマネジメントテーブル１１２‐１１の関係は固定されている。容量プールチャンク１２１‐１と容量プールチャンクマネジメントテーブル１１２‐１６の関係も固定されている。削除容量１１２‐１６‐０４はチャンクごとの比較のために容量プールチャンクマネジメントテーブル１１２‐１６で使用される。
【００５３】
００９９    図２２は本発明の諸側面に従い、仮想ボリューム、仮想ボリュームページ、仮想ボリュームマネジメントテーブル、仮想ボリュームページマネジメントテーブル、容量プールマネジメントテーブル、容量プールチャンク、容量プールページ、容量プール要素マネジメントテーブルの関係を図示する。
【００５４】
００１００    仮想ボリュームマネジメントテーブル１１２‐１２は容量プールナンバー情報１１２‐１２‐０３に従い、容量プールマネジメントテーブル１１２‐１４を参照する。仮想ボリュームマネジメントテーブル１１２‐１２は現在のチャンク情報１１２‐１２‐０５に従い、割り当てられた容量プールチャンク１２１‐１を参照する。容量プールマネジメントテーブル１１２‐１４は、ＲＡＩＤグループリスト１１２‐１４‐０２に従い、ハードディスク上または外部ボリューム６２１上のＲＡＩＤグループを参照する。仮想ボリュームページマネジメントテーブル１１２‐１３は、容量プールページアドレス１１２‐１３‐０３と容量プールページサイズに従い、容量プールページ１２１‐２を参照する。仮想ボリューム１４０と仮想ボリュームマネジメントテーブル１１２‐１２の関係は固定されている。仮想ボリュームマネジメントテーブル１１２‐１２と仮想ボリュームマネジメントテーブル１１２‐１３の関係は固定されている。仮想ボリュームページ１４０‐１と仮想ボリュームページマネジメントテーブル１１２‐１３は固定されている。
【００５５】
００１０１    図２３は本発明の諸側面に従い、仮想ボリューム、仮想ボリュームページ、容量プールチャンク、容量プールページ、容量プールページマネジメントテーブルの関係を図示する。
【００５６】
００１０２    仮想ボリューム１４０、仮想ボリュームページ１４０‐１、容量プールチャンク１２１‐１、容量プールページ１２１‐２、容量プールページマネジメントテーブル１１２‐１７の関係が示される。容量プールチャンクマネジメントテーブル１１２‐１６は、仮想ボリュームナンバー１１２‐１６‐０２に従い、仮想ボリューム１４０を参照する。容量プールページマネジメントテーブル１１２‐１７は仮想ボリュームページナンバー１１２‐１７‐０２に従い、仮想ボリュームページ１４０‐１を参照する。容量プールチャンク１２１‐１と容量プールチャンクマネジメントテーブル１１２‐１６の関係は固定されている。容量プールページマネジメントテーブルの入力内容に従い、容量プールページマネジメントテーブル１１２‐１７を容量プールページ１２１‐２に対応させることが可能である。
【００５７】
００１０３    図２４は、本発明の諸側面に従い、キャッシュスロット、キャッシュマネジメントテーブル、ディスクスロットの関係を図示する。
００１０４    キャッシュスロット１１２‐２０‐１、キャッシュマネジメントテーブル１１２‐１８、ディスクスロット１２１‐３の関係が示される。キャッシュマネジメントテーブル１１２‐１８は、ディスクナンバー１１２‐１８‐０２とディスクアドレス１１２‐１８‐０３に従い、ディスクスロット１２１‐３を参照する。キャッシュマネジメントテーブル１１２‐１８とキャッシュスロット１１２‐２０‐１の関係は固定されている。
【００５８】
００１０５    図２５は、本発明の諸側面に従い、２つのストレージサブシステムの仮想ボリュームとペアマネジメントテーブルの関係を図示する。
００１０６    ２つのストレージサブシステム１００、４００のうち、一方のストレージサブシステム１００に属する仮想ボリューム１４０と、もう一方に属する仮想ボリューム１４０の関係は、ペアマネジメントテーブル１１２‐１９に従って確立される。ペアマネジメントテーブル１１２‐１９は、各サブシステムのペアマネジメントテーブル１１２‐１９のペア化サブシステム１１２‐１９‐０２、ペア化ボリューム１１２‐１９‐０３の列の値に従い、一方のストレージサブシステム１００の仮想ボリューム１４０をもう一方のストレージサブシステム４００の仮想ボリューム１４０に対応させる。
【００５９】
００１０７    図２６は、本発明の諸側面に従い、仮想ボリューム、ＲＡＩＤグループ、外部ボリュームの関係を図示する。
００１０８    仮想ボリューム１４０、ＲＡＩＤグループ、外部ボリューム６２１の関係が示される。ペア形成の１つのタイプは、一方のストレージサブシステム１００の仮想ボリューム１４０ともう一方のストレージサブシステム４００の仮想ボリューム１４０を対応させることにより確立される。また別のタイプのペア形成では、ストレージサブシステム１００の仮想ボリュームページ１４０‐１は、外部ボリューム６２１に属する容量プールページ１２１‐２、または仮想ボリュームページ１４０‐１と同じストレージサブシステム１００のディスク１２１に属する容量プールページ１２１‐２に関連付けられる。ストレージサブシステム４００の仮想ボリュームページ１４０‐１は、外部ボリューム６２１に属する容量プールページ１２１‐２、または仮想ボリュームページ１４０‐１と同じストレージサブシステム４００のディスク１２１に属する容量プールページ１２１‐２に関連付けられる。外部ボリューム６２１の同じ容量プールページ１２１‐２は、ストレージサブシステム１００、４００のペア化された仮想ボリューム１４０により共有される。よって仮想ボリューム１４０はストレージサブシステム間でペア化でき、各ストレージサブシステムの仮想ボリュームは外部ボリュームとペア化できる。しかし各ストレージサブシステムの仮想ボリュームは、同じストレージサブシステムのディスクとしかペア化できない。
【００６０】
００１０９    図２７から３８は、ストレージサブシステム１００のＣＰＵ１１１またはストレージサブシステム４００のＣＰＵ４１１により実行される方法のフローチャートを示す。ストレージサブシステム１００のＣＰＵ１１１に関して以下の機能が記述されるが、それらはストレージサブシステム４００にも同等に適用される。
【００６１】
００１１０    図２７は本発明の諸側面に従い、ボリューム操作待機プログラムの実施方法の例を図示する。
【００６２】
００１１１    図６のボリューム操作待機プログラム１１２‐０２‐１の実施方法の一例が、図２７のフローチャートに示される。前記の方法は１１２‐０２‐１‐０から始まる。１１２‐０２‐１‐１では前記の方法はＣＰＵがボリューム操作要求を受けたかどうかを決定する。ＣＰＵがボリューム操作要求を受けた場合、前記の方法は１１２‐０２‐１‐２に進む。ＣＰＵがそのような要求を受けなかった場合、前記の方法は決定ステップ１１２‐０２‐１‐１を繰り返す。１１２‐０２‐１‐２では前記の方法は、受信した要求が「ペア形成」要求であるかどうかを決定する。「ペア形成」要求が受信された場合は、前記の方法はペア形成プログラム１１２‐０２‐２を呼び出し、このプログラムを１１２‐０２‐１‐３で実行する。ステップ１１２‐０２‐１‐３の後、前記の方法は次の要求を待つためステップ１１２‐０２‐１‐１に戻る。受信した要求が「ペア形成」要求ではない場合、１１２‐０２‐１‐４で前記の方法が、受信したメッセージが「ペア削除」であると決定する。「ペア削除」要求がＣＰＵ１１１で受信された場合、前記の方法は１１２‐０２‐１‐５に進む。１１２‐０２‐１‐５ではＣＰＵ１１１が、２つ以上のストレージサブシステム間の既存の仮想ボリュームペア形成を解除するためペア形成プログラム１１２‐０２‐３を呼び出す。「ペア削除」要求が受信されない場合、前記の方法はステップ１１２‐０２‐１‐１に戻る。同じく、ステップ１１２‐０２‐１‐５の後、前記の方法はステップ１１２‐０２‐１‐１に戻る。
【００６３】
００１１２    図２８は本発明の諸側面に従い、ペア形成プログラムの実施方法の例を図示する。
００１１３    図６のペア形成プログラム１１２‐０２‐２の実施方法の一例が、図２８のフローチャートに示される。この方法はいずれか一方のストレージサブシステムのＣＰＵにより実行可能である。前記の方法は１１２‐０２‐２‐０で始まる。１１２‐０２‐２‐１で前記の方法は、指定された仮想ボリューム１４０が既に他のボリュームとペア化されているかどうかを決定する。図１７のペア化サブシステム情報１１２‐１９‐０２、ペア化ボリュームナンバー情報１１２‐１９‐０３、ペア状態情報１１２‐１９‐０４が「Ｎ／Ａ」に設定されている場合、仮想ボリュームはペア化されていない。このボリュームにペアが存在する場合、前記の方法は１１２‐０２‐２‐１１でエラーが発生したと決定する。ペアが存在しない場合、前記の方法はステップ１１２‐０２‐２‐２に進み、指定された仮想ボリューム１４０の状態をチェックする。ここで前記の方法は、指定されたボリュームの要求された状態がマスタであるかどうかを決定する。状態がマスタであると決定された場合、前記の方法はステップ１１２‐０２‐２‐３に進み、「ペア形成」要求を、もう一方のストレージサブシステムに送信する。１１２‐０２‐２‐３で、マスタ状態の指定ボリュームとのペア化関係を確立するよう要求するために、「ペア形成」要求メッセージがもう一方のサブシステムに送信される。
【００６４】
００１１４    １１２‐０２‐２‐４では前記の方法はＣＰＵが返信メッセージを受信するのを待つ。１１２‐０２‐２‐５で返信メッセージがチェックされる。メッセージが「ＯＫ」の場合、ペア化情報の設定は成功し、前記の方法はステップ１１２‐０‐２‐６に進む。１１２‐０２‐２‐６では前記の方法は、指定された仮想ボリュームのペア化サブシステム情報１１２‐１９‐０２、ペア化ボリュームナンバー情報１１２‐１９‐０３、マスタまたはスレーブ状態１１２‐１９‐０４を含むペアマネジメントテーブル１１２‐１９内の情報に従い、指定された仮想ボリューム１４０の情報を設定する。その後、前記の方法はステップ１２‐０２‐２‐７に進み、「完了」メッセージが「ペア形成」要求の送信者へ送信される。「ペア形成」要求は通常、ホストコンピュータ３００かマネジメントターミナル１３０かマネジメントターミナル４３０により送信される。１１２‐０２‐２‐１０でペア形成プログラム１１２‐０２‐２が終了する。
【００６５】
００１１５    １１２‐０２‐２‐２で、指定された仮想ボリュームの状態がマスタと決定されない場合、状態はスレーブであり、前記の方法はステップ１２‐０２‐２‐８に進む。１２‐０２‐２‐８では前記の方法は、ペアマネジメントテーブル１１２‐１９内の、指定されたボリューム１４０に関する情報、例えばペア化サブシステム情報１１２‐１９‐０２、ペア化ボリュームナンバー情報１１２‐１９‐０３と状態１１２‐１９‐０４等に従い、指定された仮想ボリューム１４０とそのペアのペア化関係を設定する。１１２‐０２‐２‐９ではＣＰＵが「ペア形成」要求の送信者に「ＯＫ」メッセージを送信する。「ペア形成」要求の送信者は「マスタ」ボリュームを含むもう一方のストレージサブシステムの場合もある。このステップの後、１１２‐０２‐２‐１０でペア形成プログラム１１２‐０２‐２が終了する。
【００６６】
００１１６    図２９は本発明の諸側面に従い、ペア削除プログラムの実施方法の例を図示する。
００１１７    図６のペア削除プログラム１１２‐０２‐３の実施方法の一例が、図２９のフローチャートに示される。この方法はいずれか一方のストレージサブシステムのＣＰＵにより実行可能である。
【００６７】
００１１８    前記の方法は１１２‐０２‐３‐０で始まる。１１２‐０２‐３‐１では前記の方法が、指定された仮想ボリューム１４０が既にマスタ／スレーブ関係で他のボリュームとペア化されているかどうかを決定する。図１７のペア化サブシステム情報１１２‐１９‐０２、ペア化ボリュームナンバー情報１１２‐１９‐０３、ペア状態情報１１２‐１９‐０４が「Ｎ／Ａ」に設定されている場合、仮想ボリュームはまだペア化されていない。このボリュームにペアが存在しない場合、前記の方法は、削除対象のペアがないので１１２‐０２‐３‐１１でエラーが発生したと決定する。ペアが存在する場合、前記の方法はステップ１１２‐０２‐３‐２に進み、指定された仮想ボリューム１４０の状態をチェックする。ここで前記の方法は、指定されたボリュームの要求された状態がマスタであるかどうかを決定する。状態がマスタであると決定された場合、前記の方法はステップ１１２‐０２‐３‐３に進み、指定ボリュームとそのスレーブボリュームのペア化解除を要求するために、「ペア削除」要求をもう一方のストレージサブシステムに送信する。
【００６８】
００１１９    １１２‐０２‐３‐４では前記の方法はＣＰＵが返信メッセージを受信するのを待つ。１１２‐０２‐３‐５で返信メッセージがチェックされる。メッセージが「ＯＫ」の場合、ペア化情報の設定は成功しており、前記の方法はステップ１１２‐０‐３‐６に進む。１１２‐０２‐３‐６では前記の方法は、ペア化サブシステム情報１１２‐１９‐０２、ペア化ボリュームナンバー情報１１２‐１９‐０３、マスタまたはスレーブ状態１１２‐１９‐０４を含むペアマネジメントテーブル１１２‐１９から、ペアに関する情報を削除する。その後、前記の方法はステップ１２‐０２‐３‐７に進み、「完了」メッセージが「ペア削除」要求の送信者へ送信される。「ペア削除」要求は通常、ホストコンピュータ３００かマネジメントターミナル１３０かマネジメントターミナル４３０により送信される。１１２‐０２‐３‐１０でペア削除プログラム１１２‐０２‐３が終了する。
【００６９】
００１２０    １１２‐０２‐３‐２で状態がマスタ状態ではないと決定された場合、ボリュームの状態はスレーブであり、前記の方法は１１２‐０２‐３‐８に進む。１１２‐０２‐３‐８で前記の方法は、指定された仮想ボリューム１４０とそのペアをマネジメントテーブル１１２‐１９から削除する。このステップは、ペア化サブシステム情報１１２‐１９‐０２、ペア化ボリュームナンバー情報１１２‐１９‐０３、マスタまたはスレーブ状態１１２‐１９‐０４をペアマネジメントテーブル１１２‐１９から削除することを含む。１１２‐０２‐３‐９でＣＰＵは「ペア削除」要求の送信者に「ＯＫ」メッセージを送信する。「ペア削除」要求の送信者は「マスタ」ボリュームを含むもう一方のストレージサブシステムの場合もある。このステップの後、１１２‐０２‐３‐１０でペア削除プログラム１１２‐０２‐３が終了する。
【００７０】
００１２１    図３０は本発明の諸側面に従い、スロット操作プログラムの実施方法の例を図示する。
００１２２    図４および図５のスロット操作プログラム１１２‐０９の実施方法の一例が、図３０のフローチャートに示される。この方法は図２６および図２７で示される方法と同じく、いずれか一方のストレージサブシステムのＣＰＵにより実行可能である。
【００７１】
００１２３    前記の方法は１１２‐０９‐０で始まる。１１２‐０９‐１では前記の方法はスロット操作要求が受信されたかどうかを決定する。要求が受信されていた場合、前記の方法は１１２‐０９‐２に進む。そのような要求がＣＰＵ１１１に受信されていない場合、前記の方法はステップ１１２‐０９‐１を繰り返す。１１２‐０９‐２で、前記の方法は要求される操作のタイプを決定する。ＣＰＵ１１１が「スロットロック」要求を受信した場合、前記の方法はステップ１１２‐０９‐３に進む。ＣＰＵ１１１が「スロットロック」要求を受信していない場合、前記の方法はステップ１１２‐０９‐４に進む。１１２‐０９‐３で前記の方法は、キャッシュマネジメントテーブル１１２‐１８のロック状態列１１２‐１８‐０５に「ロック」状態を書き込むことにより、スロットのロックを試みる。しかし状態が既に「ロック」に設定されている以上、これは不可能である。状態が「ロック」の時、ＣＰＵ１１１は状態が「アンロック」に変わるまで待つ。ＣＰＵが「ロック」情報の書き込みを終了した後、前記の方法はステップ１１２‐０９‐６に進み、要求の送信者へ承認が送信される。このステップの後、スロット操作プログラムは１１２‐０９‐７で終了する。１１２‐０９‐４で前記の方法は「スロットアンロック」要求が受信されたかどうかを決定するため、受信された操作要求をチェックする。要求が「スロットアンロック」要求ではない場合、前記の方法は次の要求をチェックするため１１２‐０９‐１に戻る。要求が「スロットアンロック」要求の場合、前記の方法は１１２‐０９‐５に進む。１１２‐０９‐５で、前記の方法はキャッシュマネジメントテーブル１１２‐１８のロック状態列１１２‐１８‐０５に「アンロック」状態を書き込む。テーブルへの「アンロック」状態の書き込みを終了した後、前記の方法はステップ１１２‐０９‐６に進み、承認は要求の送信者へ返され、スロット操作プログラムは１１２‐０９‐７で終了する。
【００７２】
００１２４    図３１は本発明の諸側面に従い、ライトＩ／Ｏ操作プログラムの実施方法の例を図示する。
００１２５    図７のライトＩ／Ｏ操作プログラム１１２‐０４‐１の実施方法の一例が、図３１のフローチャートに示される。この方法は、いずれか一方のストレージサブシステムのＣＰＵにより実行可能である。
【００７３】
００１２６    前記の方法は１１２‐０４‐１‐０で始まる。１１２‐０４‐１‐１では前記の方法はライトＩ／Ｏ操作要求が受信されたかどうかを決定する。ライトＩ／Ｏ要求が受信されていない場合、前記の方法は１１２‐０４‐１‐１を繰り返す。ライトＩ／Ｏ要求が受信されている場合、前記の方法はステップ１１２‐０４‐１‐２に進む。１１２‐０４‐１‐２で、前記の方法はライトＩ／Ｏ要求を送信したイニシエータを決定するためチェックを行う。ホストコンピュータ３００か、ストレージサブシステム１００、４００のうち１つのいずれかが、要求を送信する可能性がある。要求がホストコンピュータ３００により送信された場合、前記の方法は１１２‐０４‐１‐５に進む。要求が他方のストレージサブシステムにより送信された場合、前記の方法は１１２‐０４‐１‐３に進む。
【００７４】
００１２７    要求がストレージサブシステムの１つにより送信された場合、１１２‐０４‐１‐３で前記の方法はペア状態情報を参照することにより、ストレージサブシステムの仮想ボリュームの状態をチェックする。状態が「マスタ」か「Ｎ／Ａ」の場合、前記の方法は１１２‐０４‐１‐５に進む。状態が「スレーブ」の場合、前記の方法はステップ１１２‐０４‐１‐４に進む。１１２‐０４‐１‐４では前記の方法はライトＩ／Ｏを複製し、マスタである他方のストレージサブシステム内のペア化仮想ボリュームに送信する。ライトＩ／Ｏのターゲットは、図１７に示されるペアマネジメントテーブル１１２‐１９の、ペア化ボリュームサブシステム列１１２‐１９‐０２とペア化ボリュームナンバー列１１２‐０４‐０３を参照することにより決定される。その後、前記の方法は１１２‐０４‐１‐５に進む。
【００７５】
００１２８    要求のイニシエータがホストコンピュータ３００か、マスタ仮想ボリューム状態のストレージサブシステムの１つである場合、前記の方法は直接に１１２‐０４‐１‐５へ進み、イニシエータがスレーブ仮想ボリューム状態のストレージサブシステムの１つである場合、前記の方法は１１２‐０４‐１‐４を経由してから１１２‐０４‐１‐５に到達する。１１２‐０４‐１‐５では前記の方法は、Ｉ／Ｏライトデータのための仮想ボリュームに対応するキャッシュスロット１１２‐２０‐１発見のため、キャッシュマネジメントテーブル１１２‐１８を検索する。これらのキャッシュスロットは「空き」、「クリーン」、「ダーティ」キューにリンクされる。ＣＰＵが空きキャッシュスロット１１２‐２０‐１を発見した場合、前記の方法はステップ１１２‐０４‐１‐７に進む。ＣＰＵが空きキャッシュスロット１１２‐２０‐１を発見しなかった場合、前記の方法はステップ１１２‐０４‐１‐６に進む。１１２‐０４‐１‐６で前記の方法は、図１８、図２４に示されるキャッシュマネジメントテーブル１１２−１８の「空き」キューにリンクされたキャッシュスロット１１２‐２０‐１を得てから、ステップ１１２‐０４‐１‐７に進む。
【００７６】
００１２９    １１２‐０４‐１‐７で前記の方法は、選択されたスロットにリンクされたロック状態列１１２‐１８‐０５に「ロック」情報を書き込むことにより、スロットのロックを試みる。状態が「ロック」の場合、ＣＰＵはスロットを上書きできず、状態が「アンロック」に変わるまで待つ。「ロック」状態の書き込みが終了した後、ＣＰＵはステップ１１２‐０４‐１‐８に進む。１１２‐０４‐１‐８で前記の方法は、ホストコンピュータ３００か他方のストレージサブシステムからキャッシュスロット１１２‐２０‐１にライトＩ／Ｏデータを転送する。１１２‐０４‐１‐９で、前記の方法は「アンロック」状態をロック状態列１１２‐１８‐０５に書き込む。ＣＰＵが「アンロック」の書き込みを終えた後、前記の方法は１１２‐０４‐１‐１０に進む。
【００７７】
００１３０    １１２‐０４‐１‐１０で、前記の方法はライトＩ／Ｏ要求を送信したイニシエータを決定するため、再確認を行う。あるいは、この情報を保存してＣＰＵに対して利用可能とする場合もある。ホストコンピュータ３００が要求を送信した場合、前記の方法は１１２‐０４‐１‐１に戻る。ストレージサブシステムの１つが要求を送信した場合、前記の方法は１１２‐０４‐１‐１１に進む。１１２‐０４‐１‐１１で、前記の方法は、図１７に示されるペアマネジメントテーブル１１２‐１９のペア状態列を参照することにより、キャッシュスロットに書き込むデータのある仮想ボリュームの状態をチェックする。状態が「スレーブ」か「Ｎ／Ａ」の場合、前記の方法はステップ１１２‐０４‐１‐１に戻る。状態が「マスタ」の場合、前記の方法は１１２‐０４‐１‐１２に進む。１１２‐０４‐１‐１２で、前記の方法はライトＩ／Ｏを複製し、スレーブボリュームになる他方のストレージサブシステムのペア化仮想ボリュームに送信する。前記の方法は、ペアマネジメントテーブル１１２‐１９のペア化ボリュームサブシステム列１１２‐１９‐０２とペア化ボリュームナンバー列１１２‐１９‐０３を参照することにより、ライトＩ／Ｏターゲットを発見する。その後、前記の方法は１１２‐０４‐１‐１に戻る。
００１３１    図３２は本発明の諸側面に従い、リードＩ／Ｏ操作プログラムの実施方法の例を図示する。
００１３２    図７のリードＩ／Ｏ操作プログラム１１２‐０４‐２の実施方法の一例が、図３２のフローチャートに示される。この方法は、いずれか一方のストレージサブシステムのＣＰＵにより実行可能である。
【００７８】
００１３３    前記の方法は１１２‐０４‐２‐０で始まる。１１２‐０４‐２‐１では前記の方法はリードＩ／Ｏ操作要求が受信されたかどうかを決定する。リード要求が受信されていない場合、前記の方法は１１２‐０４‐２‐１を繰り返す。リード要求が受信された場合、前記の方法はステップ１１２‐０４‐２‐２に進む。１１２‐０４‐２‐２で、ＣＰＵ１１１はＩ／Ｏ要求のキャッシュスロット１１２‐１８‐１を発見するため、「クリーン」または「ダーティ」キューにリンクされたキャッシュマネジメントテーブル１１２‐１８を検索する。ＣＰＵが対応キャッシュスロットを発見した場合、前記の方法はステップ１１２‐０４‐２‐６に進む。ＣＰＵが対応キャッシュスロットを発見できない場合、前記の方法はステップ１１２‐０４‐２‐３に進む。１１２‐０４‐２‐３で前記の方法はキャッシュマネジメントテーブル１１２‐１８の「空き」キューにリンクされたキャッシュスロット１１２‐２０‐１を発見し、ステップ１１２‐０４‐２‐４に進む。１１２‐０４‐２‐４でＣＰＵ１１１は仮想ボリュームページマネジメントテーブル１１２‐１３を検索し、仮想ボリュームページが参照する容量プールページ１２１‐２を発見する。前記の方法は続いて１１２‐０４‐２‐５に進む。１１２‐０４‐２‐５ではＣＰＵ１１１は図２４に示されるように、ディスクスロット１２１‐３からキャッシュスロット１１２‐２０‐１へデータを転送するため、キャッシュステージングプログラム１１２‐０５‐２を呼び出す。１１２‐０４‐２‐５の後、前記の方法は１１２‐０４‐２‐６に進む。
【００７９】
００１３４    １１２‐０４‐２‐６で、ＣＰＵ１１１は選択されたスロットにリンクされたロック状態列１１２‐１８‐０５に「ロック」状態を書き込もうとする。状態が「ロック」の時、ＣＰＵ１１１とＣＰＵ４１１はスロットを上書きできず、状態が「アンロック」に変わるまで待つ。「ロック」状態の書き込みを終了後、前記の方法はステップ１１２‐０４‐２‐７に進む。１１２‐０４‐２‐７ではＣＰＵ１１１はリードＩ／Ｏデータをキャッシュスロット１１２‐２０‐１からホストコンピュータ３００へ転送し、１１２‐０４‐２‐８に進む。１１２‐０４‐２‐８でＣＰＵ１１１は、ロック状態列１１２‐１８‐０５に「アンロック」状態を書き込むことにより、スロットの状態をアンロックに変更する。前記の方法がスロットの「アンロック」を終えた後、次のリードＩ／Ｏ操作を待つため１１２‐０４‐２‐１に戻る。
【００８０】
００１３５    図３３Ａおよび図３３Ｂは本発明の諸側面に従い、容量プールページ割り当てプログラムの実施方法の例を図示する。
００１３６    図９の容量プールページ割り当てプログラム１１２‐０８‐１の実施方法の一例が、図３３Ａおよび図３３Ｂのフローチャートに示される。この方法は、いずれか一方のストレージサブシステムのＣＰＵにより実行可能であり、容量プールページ割り当てプログラム実施のために利用される。
【００８１】
００１３７    前記の方法は１１２‐０８‐１‐０で始まる。１１２‐０８‐１‐１で、前記の方法はペアマネジメントテーブル１１２‐１９内のペア状態列１１２‐１９‐０４を参照することにより、仮想ボリューム１４０の状態をチェックする。状態が「マスタ」か「Ｎ／Ａ」の場合、前記の方法はステップ１１２‐０８‐１‐５に進む。状態が「スレーブ」の場合、前記の方法はステップ１１２‐０８‐１‐２に進む。１１２‐０８‐１‐２で前記の方法はマスタボリュームが属するストレージサブシステムに、関連付けられた容量プールページを求める要求を送信する。前記の方法はペアマネジメントテーブル１１２‐９のペア化ボリュームサブシステム列１１２‐１９‐０２とペア化ボリュームナンバー列１１２‐１９‐０３を参照することによりストレージサブシステムを決定する。このようにして前記の方法は、仮想ボリュームページと容量プールページの関係に関する情報を得る。その後、前記の方法は１１２‐０８‐１‐３に進む。１１２‐０８‐１‐３で前記の方法は、図１０のＲＡＩＤグループマネジメントテーブル１１２−１１中のＲＡＩＤレベル列１１２‐１１‐０２を参照することにより、ページのソースをチェックする。前記のテーブルでＲＡＩＤレベルの状態が「ＥＸＴ」と記される場合、ページは外部ボリュームに属し、前記の方法はステップ１１２‐０８‐１‐５に進む。そうではない場合と、ＲＡＩＤレベル列に他の入力がある場合、ページは内部ボリュームに属し、前記の方法はステップ１１２‐０８‐１‐４に進む。１１２‐０８‐１‐４で前記の方法は、ボリュームページマネジメントテーブル１１２‐１３と容量プールページマネジメントテーブル１１２‐１７で提供される情報に従い、仮想ボリュームページと容量プールページの関係を設定する。このステップの後、前記の方法は容量プールマネジメントプログラム１１２‐０８‐１のＣＰＵの実施過程を終了し、１１２‐０８‐１‐２で終了する。
【００８２】
００１３８    参照されたページを含むストレージサブシステムの状態が「マスタ」か「Ｎ／Ａ」の場合、前記の方法はステップ１１２‐０８‐１‐５に進む。１１２‐０８‐１‐５で前記の方法は、図１１の仮想ボリュームマネジメントテーブル１１２‐１２の、容量プール列１１２−１２−０５で現在使用されているＲＡＩＤグループとチャンクの列にある情報を利用する容量プールチャンクに、前記の外部ボリュームが関連するかどうかを決定する。現在のチャンク列１１２‐１２‐０５への入力内容が「Ｎ／Ａ」の場合、前記の方法はステップ１１２‐０８‐１‐７に進む。現在のチャンク列１１２‐１２‐０５が「Ｎ／Ａ」以外の入力内容の場合、前記の方法はステップ１１２‐０８‐１‐６に進む。１１２‐０８‐１‐６で前記の方法は、前記の容量プールページ中の空きページサイズをチェックする。空きページがチャンク内に発見された場合、前記はステップ１１２‐０８‐１‐８に進む。空きページがチャンク内に発見されない場合、前記の方法はステップ１１２‐０８‐１‐７に進む。１１２‐０８‐１‐７で前記の方法は、現在のチャンク列１１２‐１２‐０５が参照する容量プールページマネジメントテーブル１１２‐１７と、図１４の容量プール要素マネジメントテーブル１１２‐１５の使用チャンクキューインデックス１１２‐１５‐０４を移動、結合させることで、古い容量プールチャンクを解放する。その後、前記の方法はステップ１１２‐０８‐１‐８に進む。
【００８３】
００１３９    １１２‐０８‐１‐８で前記の方法は、容量プール要素マネジメントテーブル１１２‐１５の空きチャンクキューインデックス１１２‐１５‐０３が参照している容量プールマネジメントテーブル１１２‐１７を現在のチャンク列１１２‐１２‐０５に結合させる。その後、前記の方法はステップ１１２‐０８‐１‐９に進む。
【００８４】
００１４０    １１２‐０８‐１‐９で前記の方法は、ＲＡＩＤグループマネジメントテーブル１１２‐１１のＲＡＩＤレベル列１１２‐１１‐０２を読み取ることにより、外部ボリューム６２１などの共有外部ボリュームに、前記の新しい容量プールチャンクが属するかどうかをチェックする。ＲＡＩＤレベル列の状態が「ＥＸＴ」と記されない場合、前記の方法はステップ１１２‐０８‐１‐１１に進む。ＲＡＩＤレベル列の状態が「ＥＸＴ」の場合、前記の方法はステップ１１２‐０８‐１‐１０に進む。１１２‐０８‐１‐１０で前記の方法は、新しい容量プールチャンクのために同じ外部ボリュームを共有するほかのストレージサブシステムに、「チャンク解放」要求メッセージを送信する。要求メッセージはブロードキャスティングで送信可能である。
【００８５】
００１４１    １１２‐０８‐１‐１０の後、かつＲＡＩＤレベル列に「ＥＸＴ」と記されていない場合、前記の方法はステップ１１２‐０８‐１‐１１に進む。１１２‐０８‐１‐１１で前記の方法は、図１２の仮想ボリュームページマネジメントテーブル１１２‐１３と図１７の容量プールページマネジメントテーブル１１２‐１７の仮想ボリュームページと容量プールページの関係を設定することにより、新しく得た容量ページを仮想ボリュームページに割り当てる。このステップの後、容量プールマネジメントプログラム１１２‐０８‐１の方法と実施が１１２‐０８‐１２で終了する。
【００８６】
００１４２    図３４は本発明の諸側面に従い、キャッシュステージングプログラムの実施方法の例を図示する。
００１４３    図８のキャッシュステージングプログラム１１２‐０８‐２の実施方法の一例が、図３４のフローチャートに示される。この方法は、いずれか一方のストレージサブシステムのＣＰＵにより実行可能である。
【００８７】
００１４４    前記の方法は１１２‐０５‐２‐０で始まる。キャッシュステージングの方法は、ＣＰＵによるキャッシュステージングプログラム１１２‐０５‐２を含む場合もある。１１２‐０５‐２‐１で、前記の方法は図２４に示される通り、スロットデータをディスクスロット１２１‐３からキャッシュスロット１１２‐２０‐１に転送する。キャッシュステージングプログラムは１１２‐０５‐２‐２で終了する。
【００８８】
００１４５    図３５は本発明の諸側面に従い、ディスク掃き出しプログラムの実施方法の例を図示する。
００１４６    図８のディスク掃き出しプログラム１１２‐０５‐１の実施方法の一例が、図３５のフローチャートに示される。この方法は、いずれか一方のストレージサブシステムのＣＰＵにより実行可能である。
【００８９】
００１４７    前記の方法は１１２‐０５‐１‐０で始まる。ディスク掃き出しの方法は、ＣＰＵによるディスク掃き出しプログラム１１２‐０５‐１を含む場合もある。１１２‐０５‐１‐１で、前記の方法はキャッシュスロットを発見するため、キャッシュマネジメントテーブル１１２‐１８の「ダーティ」キューを検索する。スロットが発見された場合、前記の方法は、ダーティキャッシュスロットであるダーティキューの第１のスロットを得て、１１２‐０５‐１‐２に進む。１１２‐０５‐１‐２で、前記の方法はキャッシュデステージプログラム１１２‐０５‐３を呼び出し、ダーティキャッシュスロットをデステージする。このステップの後、前記の方法は１１２‐０５‐１‐１に戻り、ダーティキャッシュスロットの検索を続ける。また、１１２‐０５‐１‐１でダーティキャッシュスロットが発見されない場合にも、前記の方法はそのようなスロットの検索を続けるため、同じ１１２‐０５‐１‐１に戻る。
【００９０】
００１４８    図３６、図３７、図３８は本発明の諸側面に従い、キャッシュデステージプログラムの実施方法の例を図示する。
００１４９    図８のキャッシュデステージプログラム１１２‐０５‐３の実施方法の一例が、図３４Ａ、３４Ｂ、３４Ｃのフローチャートに示される。この方法は、いずれか一方のストレージサブシステムのＣＰＵにより実行可能である。
【００９１】
００１５０    前記の方法は１１２‐０５‐３‐０で始まる。前記の方法はＣＰＵによるキャッシュデステージプログラム１１２‐０５‐３の実行により行われる。１１２‐０５‐３‐１で前記の方法は、図１７のペアマネジメントテーブル１１２‐１９の状態列を参照することにより、仮想ボリューム１４０の状態をチェックする。状態が「スレーブ」の場合、前記の方法は図３７のステップ１１２‐０５‐３‐８に進む。状態が「マスタ」か「Ｎ／Ａ」の場合、前記の方法は図３６のステップ１１２‐０５‐３‐２に進む。１１２‐０５‐３‐２で、前記の方法はデステージ対象のスロットを含む仮想ボリュームページに関する容量プール割り当ての状態をチェックする。前記の方法は、図１２の仮想ボリュームページマネジメントテーブル１１２‐１３から、関連するＲＡＩＤグループナンバー１１２‐１３‐０２と容量プールページアドレス１１２‐１３‐０３を読み取る。パラメータが「Ｎ／Ａ」ではない場合、前記の方法はステップ１１２‐０５‐３‐５に進む。パラメータが「Ｎ／Ａ」の場合、前記の方法はステップ１１２‐０５‐３‐３に進む。１１２‐０５‐３‐３で前記の方法は、新しい容量プールページをスロットに割り当てるために容量プールページ割り当てプログラム１１２‐０８‐１を呼び出し、ステップ１１２‐０５‐３‐４に進む。１１２‐０５‐３‐４で前記の方法は、ページ初期化のために新しく割り当てられたページのスロット全体に「０」を入力する。ページのうち書き込みのあるエリアは上書きされない。前記の方法はその後、１１２‐０５‐３‐５に進む。１１２‐０５‐３‐５で前記の方法は、選択されたスロットにリンクされたロック状態列１１２‐１８‐０５に「ロック」状態を書き込もうとする。これによりスロットはロックされる。状態が「ロック」の場合、ＣＰＵはスロット内のデータを上書きできず、状態が「アンロック」になるのを待つ。前記の方法が「ロック」書き込みを終えた後、前記の方法はステップ１１２‐０５‐３‐６に進む。１１２‐０５‐３‐６で前記の方法はスロットデータをキャッシュスロット１１２‐２０‐１からディスクスロット１２１‐３に転送し、ステップ１１２‐０５‐３‐７に進む。１１２‐０５‐３‐７で前記の方法はロック状態列１１２‐１８‐０５に「アンロック」状態を書き込む。「アンロック」の書き込みを終了後、キャッシュデステージプログラムは１１２‐０５‐３‐３０で終了する。
【００９２】
００１５１    ボリュームの状態がスレーブの場合、前記の方法は１１２‐０５‐３‐１から１１２‐０５‐３‐８に進み、スロットを含む仮想ボリュームページについて、容量プール割り当ての状態をチェックする。前記の方法は、仮想ボリュームページマネジメントテーブル１１２‐１３の関連ＲＡＩＤグループナンバー１１２‐１３‐０２と容量プールページアドレス１１２‐１３‐０３を読み取る。パラメータが「Ｎ／Ａ」の場合は、ステップ１１２‐０５‐３‐２０に進む。パラメータが「Ｎ／Ａ」でない場合には、仮想ボリュームのスロットに対応する容量プールページがあり、前記の方法はステップ１１２‐０５‐３‐１０に進む。１１２‐０５‐３‐１０で、前記の方法はマスタボリュームのストレージサブシステム内の容量プールページの割り当て状態を決定する。この場合、前記の方法は図１７のペアマネジメントテーブル１１２‐１９のペア化ボリュームサブシステム列１１２‐１９‐０２とペア化ボリュームナンバー列１１２‐１９‐０３を参照することにより、ストレージサブシステムを決定し、仮想ボリュームページと容量プールページの関係を得る。その後、前記の方法は１１２‐０５‐３‐１１に進む。１１２‐０５‐３‐１１で前記の方法は、仮想ボリュームマネジメントテーブルから関連するＲＡＩＤグループナンバー１１２‐１３‐０２と容量プールページアドレス１１２‐１３‐０３を読み取ることにより、前記のスロットを含む仮想ボリュームページの容量プール割り当ての状態をチェックする。パラメータが「Ｎ／Ａ」の場合、マスタスロットに割り当てられた容量プールページはなく、前記の方法はステップ１１２‐０５‐３‐１２に進む。１１２‐０５‐３‐１２で前記の方法は、マスタの割り当て完了を待つのに適した長さでスリープし、その後ステップ１１２‐０５‐３‐１０に戻る。パラメータが「Ｎ／Ａ」ではなく、マスタスロットに割り当てられた容量プールページがある場合には、処理はステップ１１２‐０５‐３‐１３に進む。１１２‐０５‐３‐１３で前記の方法は、仮想ボリュームページマネジメントテーブル１１２‐１３と容量プールページマネジメントテーブル１１２−１７の情報に従い、マスタボリュームの仮想ボリュームページと容量プールページの関係を設定する。この後、前記の方法はステップ１１２‐０５‐３‐２０に進む。
【００９３】
００１５２    １１２‐０５‐３‐２０では、前記の方法はマスタボリュームのストレージサブシステムに「スロットロック」メッセージを送る。メッセージは受信されたという承認を受信した後、前記の方法はステップ１１２‐０５‐３‐２１に進む。１１２‐０５‐３‐２１で前記の方法はマスタボリュームのスロット情報について質問する。回答を受信した後、前記の方法はステップ１１２‐０５‐３‐２２に進む。１１２‐０５‐３‐２２で前記の方法はマスタボリュームのスロット状態をチェックする。状態が「ダーティ」の場合、前記の方法は１１２‐０５‐３‐２７に進む。状態が「ダーティ」でない場合、前記の方法は１１２‐０５‐３‐２３に進む。１１２‐０５‐３‐２３で前記の方法は、キャッシュマネジメントテーブルで選択されたスロットにリンクされたロック状態列１１２‐１８‐０５に「ロック」状態を書き込むことにより、スロットのロックを試みる。状態が「ロック」の時、ＣＰＵは他の「ロック」コマンドでスロットを上書きすることができず、状態が「アンロック」に変わるのを待つ。ＣＰＵが「ロック」状態の書き込みを完了した後、前記の方法はステップ１１２‐０５‐３‐２４に進む。１１２‐０５‐３‐２４で前記の方法は、スレーブのスロット状態を「クリーン」に変更し、ステップ１１２‐０５‐３‐２５に進む。１１２‐０５‐３‐２５で、前記の方法はキャッシュマネジメントテーブルのロック状態列１１２‐１８‐０５に「アンロック」状態を書き込み、ステップ１１２‐０５‐３‐２６に進む。１１２‐０５‐３‐２６で前記の方法はマスタボリュームのストレージサブシステムに「スロットアンロック」メッセージを送る。承認を受信した後、前記の方法はキャッシュデステージプログラム１１２‐０５‐３を、１１２‐０５‐３‐３０で終了する。
【００９４】
００１５３    マスタ状態が「ダーティ」の場合、１１２‐０５‐３‐２７で前記の方法は、選択されたスロットにリンクされたロック状態列１１２‐１８‐０５に「ロック」状態を書き込もうとする。状態が「ロック」の時、ＣＰＵは他の「ロック」コマンドでスロットを上書きすることができず、状態が「アンロック」に変わるのを待つ。「ロック」状態の書き込みを完了した後、ＣＰＵはステップ１１２‐０５‐３‐２８に進む。１１２‐０５‐３‐２８で、前記の方法はスロットデータをキャッシュスロット１１２‐２０‐１からディスクスロット１２１‐３に転送する。転送の完了後、前記の方法はキャッシュスロット１１２‐２０‐１を図１８のキャッシュマネジメントテーブル１１２‐１８のキューインデックスポインタ１１２‐１８‐１２の「クリーン」キューにリンクする。その後、前記の方法はステップ１１２‐０５‐３‐２６に進み、マスタボリュームのストレージサブシステムにアンロック要求を送信した後、前記の方法は１１２‐０５‐３‐３０で終了する。
【００９５】
００１５４    図３９は本発明の諸側面に従い、容量プールガーベッジコレクションプログラムの実施方法の例を図示する。
００１５５    図９の容量プールガーベッジコレクションプログラム１１２‐０８‐２の実施方法の一例が、図３９のフローチャートに示される。この方法は、いずれか一方のストレージサブシステムのＣＰＵにより実行可能である。
【００９６】
００１５６    前記の方法は１１２‐０８‐２‐０で始まる。１１２‐０８‐２‐１で、前記の方法は、容量プール要素マネジメントテーブル１１２‐１５によりインデックス付けされた、使用チャンクキューにリンクされたチャンクを見つけるため、容量プールチャンクマネジメントテーブル１１２‐１６を検索する。前記の方法は削除容量列１１２‐１６‐０４を参照し、前記のチャンクに対応する値が０以上であるかどうかをチェックし、これにより前記の方法はこのチャンクを「部分的に削除されたチャンク」として扱う。「部分的に削除されたチャンク」を発見できない場合、前記の方法はステップ１１２‐０８‐２‐１を繰り返す。
【００９７】
００１５７    部分的に削除されたチャンクを発見した場合、前記の方法はステップ１１２‐０８‐２‐２に進む。１１２‐０８‐２‐２で前記の方法は、部分的に削除されたチャンクの代わりに新しい容量プールチャンク１２１‐１を割り当てるため、容量プール要素マネジメントテーブル１１２‐１５によりインデックス付けされた「空きチャンク」キューにリンクされる容量プールチャンクマネジメントテーブル１１２‐１６にアクセスする。その後、前記の方法はステップ１１２‐０８‐２‐３に進む。
【００９８】
００１５８    １１２‐０８‐２‐３で、前記の方法はステップ１１２‐０８‐２‐４からステップ１１２‐０８‐２‐７までを繰り返すポインタをクリアする。ポインタをクリアするため、前記の方法はポインタＡを現在割り当てられているチャンクの第１のスロットに設定し、ポインタＢは新しく割り当てられるチャンクの第１のスロットに設定する。その後、前記の方法はステップ１１２‐０８‐２‐４に進む。
【００９９】
００１５９    １１２‐０８‐２‐４で前記の方法は、スロットがチャンクの削除ページにあるかどうかを決定する。この決定を行うため、前記の方法は容量プールマネジメントテーブル１１２‐１７を読み取り、容量プールページインデックス１１２‐１７‐１からページオフセットを計算し、仮想ボリュームページナンバー１１２‐１７‐０２をチェックする。仮想ボリュームページナンバー１１２‐１７‐０２が「ヌル」の場合、前記の方法は１１２‐０８‐２‐６に進む。仮想ボリュームページナンバー１１２‐１７‐０２が「ヌル」ではない場合、前記の方法は１１２‐０８‐２‐５に進む。１１２‐０８‐２‐５で、前記の方法はポインタＡが示したスロットからポインタＢが示したスロットにデータをコピーする。前記の方法は新しく割り当てられたチャンクの次のスロットにポインタＢを進める。前記の方法はその後、ステップ１１２‐０８‐２‐６に進む。
【０１００】
００１６０    １１２‐０８‐２‐６で、前記の方法はポインタＡをチェックする。ポインタＡが現在のチャンクの最後のスロットに到達した場合、前記の方法はステップ１１２‐０８‐２‐８に進む。ポインタＡが現在のチャンクの最後のスロットに到達していない場合、前記の方法はステップ１１２‐０８‐２‐７に進む。１１２‐０８‐２‐７で前記の方法は現在のチャンクの次のスロットにポインタＡを進める。その後、前記の方法は次のスロットをチェックするため、ステップ１１２‐０８‐２‐４に戻る。
【０１０１】
００１６１    ポインタＡが１１２‐０８‐２‐６でチャンクの下部に到達した場合、前記の方法は１１２‐０８‐２‐８に進む。１１２‐０８‐２‐８で前記の方法は、容量プールページマネジメントテーブル１１２‐１７へコピーされたスロットの仮想ボリュームページ１４０‐１アドレスを格納し、新しくコピーされた容量プールページ１２１‐１アドレスとサイズを含むよう、仮想ボリュームページマネジメントテーブルを変更する。その後、前記の方法はステップ１１２‐０８‐２‐９に進む。１１２‐０８‐２‐９で前記の方法は、部分的に削除されたチャンクが発見されたものである現在のチャンクを、容量プール要素マネジメントテーブル１１２‐１５によりインデックス付けされた「空きチャンク」キューに設定する。その後、前記の方法はステップ１１２‐０８‐２‐１に戻る。
【０１０２】
００１６２    図４０は本発明の諸側面に従い、容量プールチャンク解放プログラムの実施方法の例を図示する。
００１６３    図９の容量プールチャンク解放プログラム１１２‐０８‐３の実施方法の一例が、図４０のフローチャートに示される。この方法は、いずれか一方のストレージサブシステムのＣＰＵにより実行可能である。
【０１０３】
００１６４    前記の方法は１１２‐０８‐３‐０で始まる。１１２‐０３‐３‐１で前記の方法は、「チャンク解放」操作要求が受信されたかどうかを決定する。要求が受信されていない場合、前記の方法は１１２‐０８‐３‐１を繰り返す。こうした要求が受信された場合、前記の方法はステップ１１２‐０８‐３‐２に進む。１１２‐０８‐０３‐２で、前記の方法は容量プール要素マネジメントテーブル１１２‐１５によりインデックス付けされた「空きチャンク」にリンクされる仮想ボリュームを探して、容量プールチャンクマネジメントテーブル１１２‐１６を検索する。前記の方法は、容量プールチャンクマネジメントテーブル１１２‐１６から得たターゲットかボリュームを、「空きチャンク」キューから「削除されたチャンク」キューに送信し、１１２‐０８‐０３‐３に進む。１１２‐０８‐０３‐３で前記の方法は、ストレージサブシステムから「チャンク解放」操作要求への承認を返す。その後、前記の方法はステップ１１２‐０８‐０３‐１に戻る。
【０１０４】
００１６５    図４１、図４２、図４３、図４４はマスタボリューム、スレーブボリュームへのライトＩ／Ｏとデステージの操作シーケンスを示す。これらの図では、ストレージサブシステム１００の仮想ボリューム１４０は「マスタ」状態で動作し、１４０ｍと称する。ストレージサブシステム４００の仮想ボリューム１４０は「スレーブ」状態で動作し、１４０ｓと称する。これらの図では、図１はホストコンピュータ３００、ストレージサブシステム１００、４００、外部ボリューム６２１を示すために簡略化されている。マスタ仮想ボリューム、スレーブかボリュームは、１４０ｍ、１４０ｓとして示される。Ｓ１‐１として示されるステップ等に加え、矢印の横の丸数字は実行中の操作のシーケンスを示す。
【０１０５】
００１６６    図４１は本発明の諸側面に従い、マスタボリュームへのＩ／Ｏ書き込みのシーケンスを示す。
００１６７    図４１に示されるシーケンスはライトＩ／Ｏ操作プログラム１１２‐０４‐１に対応する。Ｓ１‐１でホストコンピュータ３００はライトＩ／Ｏ要求と、仮想ボリューム１４０ｍに書き込むべきデータを送信する。ストレージサブシステム１００はライトＩ／Ｏデータをキャッシュスロットに格納する。この操作の進行中、ストレージサブシステム１００はスロットをロックする。Ｓ１‐２ではライトＩ／Ｏデータをキャッシュエリアに格納した後、ストレージサブシステム１００はこのライトＩ／Ｏ要求と書き込むべき付随データを、ストレージサブシステム４００の仮想ボリューム１４０ｓに複製する。ストレージサブシステム４００は自己のキャッシュスロットにライトＩ／Ｏデータを格納する。この操作の進行中、ストレージサブシステム４００はスロットをロックする。Ｓ１‐３ではライトＩ／Ｏデータをキャッシュエリアに格納した後、仮想ストレージサブシステム４００がストレージサブシステム１００に承認メッセージを返す。Ｓ１‐４では前記の承認をストレージサブシステム４００から受信した後、仮想ストレージサブシステム１００はホストコンピュータ３００に承認メッセージを返す。
【０１０６】
００１６８    図４２は本発明の諸側面に従い、スレーブボリュームへのＩ／Ｏ書き込みのシーケンスを示す。
００１６９    図４２に示されるシーケンスも、ライトＩ／Ｏ操作プログラム１１２‐０４‐１に対応する。Ｓ２‐１でホストコンピュータ３００はライトＩ／Ｏ要求と、仮想ボリューム１４０ｓに書き込むべき付随データを送信する。Ｓ２‐２では、ストレージサブシステム４００が、受信したライトＩ／Ｏ要求と書き込むべき付随データを、仮想ボリューム１４０ｍに複製する。ストレージサブシステム１００は自己のキャッシュスロットにライトＩ／Ｏデータを格納する。この操作の進行中、ストレージサブシステム１００はスロットをロックする。Ｓ２‐３ではライトＩ／Ｏデータをキャッシュスロットに格納した後、仮想ストレージサブシステム１００はストレージサブシステム４００に承認を返す。ストレージサブシステム４００が前記の承認を受信した後、ストレージサブシステム４００はライトＩ／Ｏデータを自己のキャッシュスロットに格納する。この操作の進行中、ストレージサブシステム１００はスロットをロックする。Ｓ２‐４ではライトＩ／Ｏデータを自己のキャッシュエリアに格納した後、仮想ストレージサブシステム４００はホストコンピュータ３００に承認メッセージを返す。
【０１０７】
００１７０    図４３は本発明の諸側面に従い、マスタボリュームから外部ボリュームへのデステージのシーケンスを示す。
００１７１    図４３に示されるシーケンスは、キャッシュデステージプログラム１１２‐０５‐３に対応する。Ｓ３‐１で、ストレージサブシステム１００は、割り当てられていない仮想ボリュームページにあるダーティキャッシュスロットを発見し、割り当てのために外部ボリューム６２１で新しい容量プールチャンクを得て、ストレージサブシステム４００に「ページ解放」要求を送信する。Ｓ３‐２で、ストレージサブシステム４００は前記の要求を受信し、ダーティと判断された前記の共有容量プールチャンクを検索、削除する。削除が完了した後、ストレージサブシステム４００はストレージサブシステム１００に承認を返す。次にＳ３‐３で、ストレージサブシステム１００は削除の承認を受信した後、新しい容量プールページを、前記の容量プールチャンクから仮想ボリュームに割り当てる。その後、割り当て操作完了後のＳ３‐４では、ストレージサブシステム１００がダーティキャッシュスロットを外部ボリューム６２１に転送し、この操作の間はストレージサブシステム１００がスロットをロックする。その後Ｓ３‐５では、ダーティキャッシュスロットの転送後、ストレージサブシステム１００が外部ボリューム６２１から承認を受信する。承認の受信後、ストレージサブシステム１００はスロット状態をダーティからクリーンに変更し、スロットをアンロックする。
【０１０８】
００１７２    図４４は本発明の諸側面に従い、スレーブボリュームから外部ボリュームへのデステージのシーケンスを示す。
００１７３    図４４に示されるシーケンスも、キャッシュデステージプログラム１１２‐０５‐３に対応する。
【０１０９】
００１７４    Ｓ４‐１で、ストレージサブシステム４００は、割り当てられていない仮想ボリュームページにあるダーティキャッシュスロットを発見する。ストレージサブシステム４００はストレージサブシステム１００に仮想ボリューム１４０ｍでの容量プールページ割り当ての状態を質問する。Ｓ４‐２では要求に応じ、ストレージサブシステム１００が容量プールページマネジメントテーブル１１２‐１７から、仮想ボリュームページと容量プールページの関係を読み取り、ストレージサブシステム４００に回答を送信する。回答受信後のＳ４‐３では、ストレージサブシステム４００が仮想ボリューム１４０ｓ上の同じ容量プールページに、仮想ボリュームページを割り当てる。次にＳ４‐４では、ストレージサブシステム４００が「ロック要求」メッセージをストレージサブシステム１００に送信する。Ｓ４‐５ではストレージサブシステム１００がメッセージを受信し、仮想ボリューム１４０ｓの前記ダーティスロットと同じエリアにあるターゲットスロットをロックする。スロットのロック後、ストレージサブシステム１００は承認と、仮想ボリューム１４０ｍのスロット状態をストレージサブシステム４００に返す。Ｓ４‐６では承認が戻された後、仮想ボリューム１４０ｍのスロット状態がダーティの場合、ストレージサブシステム４００はダーティキャッシュスロットを外部ボリューム６２１に返す。この操作中、ストレージサブシステム１００はスロットをロックする。Ｓ４‐７ではダーティキャッシュスロットの転送後、ストレージサブシステム４００が外部ボリューム６２１からの承認を受信する。承認の受信後、ストレージサブシステム１００はスロット状態をダーティからクリーンに変更し、スロットをアンロックする。
【０１１０】
００１７５    図４５は本発明の諸側面に従い、ストレージシステムを図示する。
００１７６    図４５に示されるストレージシステムは、２つ以上のストレージサブシステム１００、４００、ホストコンピュータ３００を含む点で、図１に示されるストレージシステムに類似する。しかし図４５に示されるストレージシステムは、外部ボリューム６２１ではなく外部ストレージサブシステム６００を含む。図４５のストレージシステムは、１つ以上のストレージネットワーク２００も含む場合がある。ストレージサブシステム１００、４００は相互に直接接続される場合もある。ホストコンピュータはストレージサブシステム１００、４００に直接、またはストレージネットワーク２００を経由して接続される可能性がある。外部ストレージサブシステム６００はストレージサブシステム１００、４００に直接接続される場合がある。
【０１１１】
００１７７    図４６は本発明の諸側面に従い、ストレージサブシステム１００、４００に格納された他の容量プールマネジメントプログラムの構造例を図示する。
００１７８    容量プールマネジメントプログラム１１２‐０８の構造の一例は、容量プールページ割り当てプログラム１１２‐０８‐１ａ、容量プールガーベッジコレクションプログラム１１２‐０８‐２、容量プールチャンク解放プログラム１１２‐０８‐３を含む。図９の容量プールマネジメントプログラム１１２‐０８と比べた場合、図４６に示されるプログラムは容量プールページ割り当てプログラム１１２‐０８‐１の代わりに、容量プールページ割り当てプログラム１１２‐０８‐１ａを含む。
【０１１２】
００１７９    図４７Ａおよび図４７Ｂは本発明の諸側面に従い、容量プールページ割り当ての実施方法の例を示す。
００１８０    容量プールマネジメント割り当てプログラム１１２‐０８‐１ａの実施例は、図５２のフローチャートに示される。このプログラムはストレージサブシステム１００、４００のＣＰＵ１１１、４１１により実行可能である。
【０１１３】
００１８１    前記の方法は１１２‐０８‐１ａ‐０で始まる。１１２‐０８‐１ａ‐２では、ＣＰＵ１１１などのストレージサブシステムのうち１つのＣＰＵが、「ページ割り当て情報取得要求」をストレージサブシステム１００から外部ストレージサブシステム６００に送信する。ページ割り当て情報はマスタボリュームの仮想ボリュームページの割り当てに関連する。ＣＰＵ１１１が回答を外部ストレージサブシステム６００から受信した後、前記の方法は１１２‐０８‐１ａ‐３に進む。
【０１１４】
００１８２    １１２‐０８‐１ａ‐３で、ＣＰＵ１１１は外部ストレージサブシステムから受信した回答をチェックする。回答が「空き」の場合、要求されたページは外部ストレージボリュームに属しておらず、ＣＰＵ１１１はステップ１１２‐０８‐１ａ‐５に進む。回答がページナンバーとボリュームナンバーである場合、要求されたページは既に外部ストレージシステムに割り当てられており、ＣＰＵ１１１はステップ１１２‐０８‐１ａ‐４に進む。ステップ１１２‐０８‐１ａ‐４でＣＰＵ１１１は、ボリュームページマネジメントテーブル１１２‐１３ａと要求プールページマネジメントテーブル１１２‐１７に従い、仮想ボリュームページと容量プールページの間の関係についての情報を設定する。このステップの後、ＣＰＵ１１１は１１２‐０８‐１ａ‐１２で容量プールページ割り当てプログラム１１２‐０８‐１ａを終了する。
【０１１５】
００１８３    要求されたページがまだ外部ボリュームに割り当てられていないとき、ステップ１１２‐０８‐１ａ‐５でＣＰＵ１１１は、ボリュームがチャンクに割り当てられているかを決定するため、仮想ボリュームマネジメントテーブル１１２‐０５の現在使用されているＲＡＩＤグループ、容量プールチャンク１１２‐１２‐０５により参照される容量プールページマネジメントテーブル１１２‐１７の行を参照する。現在使用されるチャンクの列１１２‐１２‐０５が「Ｎ／Ａ」の場合、チャンクに割り当てられているボリュームは存在しないということであり、ＣＰＵ１１１はステップ１１２‐０８‐１ａ‐８に進む。現在使用されるチャンク列１１２‐１２‐０５が「Ｎ／Ａ」に設定されていない場合、前記の方法はステップ１１２‐０８‐１ａ‐６に進む。１１２‐０８‐１ａ‐６でＣＰＵ１１１は、前記の容量プールページの中の空きページサイズをチェックする。利用可能な空きページがある場合、前記の方法はステップ１１２‐０８‐１ａ‐８に進む。利用可能な空きページがない場合、前記の方法はステップ１１２‐０８‐１ａ‐７に進む。１１２‐０８‐１ａ‐７では前記の方法は、現在使用されているチャンク列１１２‐１２‐０５が関連付ける容量プールページマネジメントテーブル１１２‐１７を、容量プール要素マネジメントテーブル１１２‐１５の使用されるチャンクキューインデックス１１２‐１５‐０４に移動、結合させることで、古い容量プールチャンクを解放する。その後、前記の方法はステップ１１２‐０８‐１ａ‐８に進む。
【０１１６】
００１８４    １１２‐０８‐１ａ‐８で前記の方法は、空きチャンクキューインデックス１１２‐１５‐０３が参照している容量プールページマネジメントテーブル１１２‐１７を現在使用されているチャンク列１１２‐１２‐０５に移動、結合させることにより、新しい容量プールチャンクを得る。その後、前記の方法はステップ１１２‐０８‐１ａ‐９に進む。
【０１１７】
００１８５    １１２‐０８‐１ａ‐９でＣＰＵ１１１は、ＲＡＩＤレベル列１１２‐１１‐０２を読み取ることにより、前記の新しい容量プールチャンクが外部ボリューム６２１に属するかどうかを決めるためにチェックを行う。状態が「ＥＸＴ」ではない場合、前記の方法はステップ１１２‐０８‐１ａ‐１１に進む。状態が「ＥＸＴ」の場合、新しい容量プールチャンクは外部ボリュームに属さず、前記の方法はステップ１１２‐０８‐１ａ‐１０に進む。１１２‐０８‐１ａ‐１０で前記の方法は、新しいチャンクの中のページを選択し、選択されたページについて「ページ割り当て」要求を外部ストレージサブシステムに送信する。ＣＰＵ１１１が回答を受信すると、前記の方法はステップ１１２‐０８‐１ａ‐１２に進む。１１２‐０８‐１ａ‐１２ではＣＰＵ１１１が、受信した回答をチェックする。回答が「既に割り当て済み」の場合、前記の方法はステップ１１２‐０８‐１ａ‐１０に戻る。回答が「成功」の場合、前記の方法はステップ１１２‐０８‐１ａ‐１１に進む。１１２‐０８‐１ａ‐１１ではＣＰＵ１１１が、仮想ボリュームページマネジメントテーブル１１２‐１３と容量プールページマネジメントテーブル１１２‐１７の仮想ボリュームページと容量プールページの関係を設定する。このステップの後、容量プールページ割り当てプログラム１１２‐０８‐１ａは１１２‐０８‐１ａ‐１１で終了する。
【０１１８】
００１８６    図４８は本発明の諸側面に従い、外部ストレージサブシステムを図示する。
００１８７    外部ストレージサブシステム６００は図４８でさらに詳しく示される。ストレージサブシステム６００はストレージコントローラ６１０、ディスクユニット６２０、マネジメントターミナル６３０を含む。
【０１１９】
００１８８    ストレージコントローラ６１０は、格納データに加えてプログラムとテーブルを格納するためのメモリ６１２、メモリに格納されたプログラムを実行するためのＣＰＵ６１１、ＳＣＳＩ Ｉ／Ｆなどディスクユニット６２１ａに接続するためのディスクインタフェース６１６、ストレージサブシステムのいずれかで外部ストレージインタフェース１１８、４１８に親ストレージインタフェース６１５を接続するためのファイバチャネルＩ／Ｆなどの親ストレージインタフェース６１５、６１７、マネジメントターミナル６３０でストレージコントローラインタフェース６３３にディスクコントローラを接続するためのＮＩＣ  Ｉ／Ｆなどのマネジメントターミナルインタフェース６１４を含む。親ストレージインタフェース６１５はストレージサブシステム１００からＩ／Ｏ要求を受信し、ＣＰＵ６１１に要求について通知する。マネジメントターミナルインタフェース６１６はボリューム、ディスク、容量プール操作要求をマネジメントターミナル６３０から受信し、ＣＰＵ６１１に要求のことを通知する。
【０１２０】
００１８９    ディスクユニット６２０はＨＤＤなどのディスク６２１ａを含む。
００１９０    マネジメントターミナル６３０はマネジメントターミナル６３０の処理を管理するためのＣＰＵ６３１、メモリ６３２、ストレージコントローラをマネジメントターミナルインタフェース６１４に接続するためのＮＩＣなどのストレージコントローラインタフェース６３３、キーボード、マウス、モニタなどのユーザインタフェースを含む。ストレージコントローラインタフェース６３３はボリューム、ディスク、容量プール操作をストレージコントローラ６１０に送信する。ストレージコントローラ６１０はデータ格納用の仮想ボリュームである外部ボリューム６２１を提供する。
【０１２１】
００１９１    図４９は本発明の諸側面に従い、外部ストレージサブシステムのメモリ用の構造例を図示する。
００１９２    外部ボリューム６００のメモリ６１２用構造例は、図４９で示される。前記メモリは仮想ボリュームページマネジメントプログラム１１２‐０１ａ、Ｉ／Ｏ操作プログラム１１２‐０４、ディスクアクセスプログラム１１２‐０５、容量プールマネジメントプログラム１１２‐０８ａ、スロット操作プログラム１１２‐０９、ＲＡＩＤグループマネジメントテーブル１１２‐１１、仮想ボリュームマネジメントテーブル１１２‐−１２、仮想ボリュームページマネジメントテーブル１１２‐１３ａ、容量プールマネジメントテーブル１１２‐１４、容量プール要素マネジメントテーブル１１２‐１５、容量プールチャンクマネジメントテーブル１１２‐１６、容量プールページマネジメントテーブル１１２‐１７、ペアマネジメントテーブル１１２‐１９、容量プールページマネジメントテーブル１１２‐１７、キャッシュマネジメントテーブル１１２‐１８、キャッシュエリア１１２‐２０を含む。
【０１２２】
００１９３    仮想ボリュームページマネジメントプログラム１１２‐０１ａはＣＰＵ６１１がストレージサブシステム１００、４００のうち１つから「ページ割り当て」要求を受信した時に動作する。指定されたページがすでに割り当て済みの場合、ＣＰＵ６１１はエラーメッセージを要求者に返す。指定されたページがまだ割り当てられていない場合、ＣＰＵ６１１はマスタボリュームページと指定されたページの関係を格納し、成功メッセージを返す。仮想ボリュームページマネジメントプログラム１１２‐０１ａはシステム常駐プログラムである。
【０１２３】
００１９４    図５０はストレージコントローラのメモリ４１２に格納された容量プールマネジメントプログラム１１２‐０８を図示する。
００１９５    このプログラムは図９に示されるプログラムと類似する。
【０１２４】
００１９６    図５１は本発明の諸側面に従い、仮想ボリュームページマネジメントテーブルの構造例を図示する。
００１９７    仮想ボリュームページマネジメントテーブル１１２‐１３ａの構造の一例は、仮想ボリュームページアドレス１１２‐１３ａ‐０１、関連ＲＡＩＤグループナンバー１１２‐１３ａ‐０２、容量プールページアドレス１１２‐１３ａ‐０３、マスタボリュームナンバー１１２‐１３ａ‐０４、マスタボリュームページアドレス１１２‐１３ａ‐０５を含む。
【０１２５】
００１９８    仮想ボリュームページアドレス１１２‐１３ａ‐０１は仮想ボリュームの仮想ボリュームページのＩＤを含む。関連ＲＡＩＤグループナンバー１１２‐１３ａ‐０２は、外部ボリューム６２１を含む、割り当てられた容量プールページのＲＡＩＤグループナンバーか、仮想ボリュームページがＲＡＩＤストレージシステムで容量プールページを割り当てられていないことを意味する「Ｎ／Ａ」のいずれかを含む。容量プールページアドレス１１２‐１３ａ‐０３は、関連プールページの論理アドレスか、容量プールページの開始アドレスのいずれかを含む。マスタボリュームナンバー１１２‐１３ａ‐０４は、ページにリンクされたマスタボリュームのＩＤか、仮想ボリュームページが他のストレージサブシステムにリンクされていないことを意味する「Ｎ／Ａ」のいずれかを含む。マスタボリュームページアドレス１１２‐１３ａ‐０５は、関連マスタボリュームページの論理アドレスか、仮想ボリュームページが他のストレージサブシステムにリンクされていないことを意味する「Ｎ／Ａ」のいずれかを含む。
【０１２６】
００１９９    図５２は本発明の諸側面に従い、仮想ボリュームページマネジメントの実施方法の例を図示する。
００２００    仮想ボリュームページマネジメントプログラム１１２‐１ａの実施方法の一例が示される。このプログラムは外部ストレージサブシステム６２１のＣＰＵ６１１により実施可能である。
【０１２７】
００２０１    前記の方法は１１２‐０１ａ‐０で始まる。１１２‐０１ａ‐１で前記の方法は、「ページ割り当て情報取得」要求が外部ストレージサブシステムで受信されたかどうかを決定する。こうしたメッセージが受信されていない場合、前記の方法はステップ１１２‐０１ａ‐３に進む。ＣＰＵ６１１がこのメッセージを受信している場合、前記の方法はステップ１１２‐０１ａ‐２に進む。
【０１２８】
００２０２    １１２‐０１ａ‐２で前記の方法は、指定された要求ページについてかボリュームページマネジメントテーブル１１２‐１３ａをチェックする。マスタボリュームナンバー１１２‐１３ａ‐０４とマスタボリュームページアドレス１１２‐１３ａ‐０５がどちらも「Ｎ／Ａ」の場合、前記の方法は要求されたストレージサブシステムに「空き」という回答を返す。マスタボリュームナンバー１１２‐１３ａ‐０４とマスタボリュームページアドレス１１２‐１３ａ‐０５が「Ｎ／Ａ」ではない場合、前記の方法はマスタボリュームナンバー１１２‐１３ａ‐０４とマスタボリュームページアドレス１１２‐１３ａ‐０５の値を要求されたストレージサブシステムに返す。回答送信後、前記の方法は次の要求のため、ステップ１１２‐０１ａ‐１に戻る。
【０１２９】
００２０３    ページ割り当て情報要求メッセージが受信されていない場合、１１２‐０１ａ‐３で前記の方法は「ページ割り当て」要求が受信されたことを決定する。そうでない場合、前記の方法は１１２‐０１ａ‐１に戻る。このようなメッセージが受信されている場合、前記の方法は１１２‐０１ａ‐４に進む。１１２‐０１ａ‐４で前記の方法は指定されたページについて仮想ボリュームページマネジメントテーブル１１２‐１３ａをチェックする。関連ＲＡＩＤグループナンバー１１２‐１３ａ‐０２、容量プールページアドレス１１２‐１３ａ‐０３、マスタボリュームナンバー１１２‐１３ａ‐０４、マスタボリュームページアドレス１１２‐１３ａ‐０５が「Ｎ／Ａ」の場合、ページ割り当ては完了しておらず、前記の方法は１１２‐０１ａ‐６に進む。１１２‐０１ａ‐６で、前記の方法は指定された値をマスタボリュームナンバー１１２‐１３ａ‐０４とマスタボリュームページアドレス１１２‐１３ａ‐０５に格納してステップ１１２‐１３ａ‐０７に進み、ページ割り当ての完了成功を承認するため、要求者のストレージサブシステムに「成功」の回答を送信する。その後、前記の方法はステップ１１２‐０１ａ‐１に戻る。
【０１３０】
００２０４    関連ＲＡＩＤグループナンバー１１２‐１３ａ‐０２、容量プールページアドレス１１２‐１３ａ‐０３、マスタボリュームナンバー１１２‐１３ａ‐０４、マスタボリュームページアドレス１１２‐１３ａ‐０５が「Ｎ／Ａ」ではない場合、ページ割り当ては完了しており、前記の方法は１１２‐０１ａ‐５に進む。１１２‐０１ａ‐５で前記の方法は「ページ割り当て済み」という回答を要求者のストレージサブシステムに返し、１１２‐０１ａ‐１に戻る。
【０１３１】
００２０５    図５３は本発明の諸側面に従い、マスタボリュームから外部ボリュームへのデステージのシーケンス例を図示する。
００２０６    示されるデステージシーケンス例では、ストレージサブシステム１００の仮想ボリューム１４０が「マスタ」ボリューム１４０ｍとして動作し、ストレージサブシステム４００の仮想ボリューム１４０が「スレーブ」ボリューム１４０ｓとして動作する。図５３に示されるシーケンスはストレージコントローラのメモリに常駐するキャッシュデステージプログラム１１２‐０５‐３の実施方法の一例であり、マスタ仮想ボリューム１４０ｍから外部ストレージサブシステム６２１にページをデステージするシーケンスを示す。
【０１３２】
００２０７    第一にＳ３ａ‐１でストレージサブシステム１００が、割り当てられていない仮想ボリュームページにあるダーティキャッシュスロットを発見する。ストレージサブシステム１００は外部ストレージサブシステム６００に、新しいページを割り当てるよう要求を送信する。第二にＳ３ａ‐２で、外部ストレージサブシステム６００は要求を受信し、新しいページをチェックし、割り当てる。前記の操作が完了した後、外部ストレージサブシステム６００はストレージサブシステム１００に承認を返す。第三に、割り当て操作終了後のＳ３ａ‐３では、ストレージサブシステム１００がダーティキャッシュスロットを外部ボリューム６２１に送信する。この操作の間、ストレージサブシステム１００はスロットをロックする。第四に最後の操作として、転送後のＳ３ａ‐４で、ストレージサブシステム１００は外部ストレージサブシステム６００から承認を受信する。承認を受信した後、ストレージサブシステム１００はスロット状態をダーティからクリーンに変更し、スロットをアンロックする。
【０１３３】
００２０８    図５４は本発明の諸側面に従い、スレーブボリュームから外部ボリュームへのデステージのシーケンス例を図示する。
００２０９    示されるデステージシーケンス例では、ストレージサブシステム１００の仮想ボリューム１４０が「マスタ」ボリューム１４０ｍとして動作し、ストレージサブシステム４００の仮想ボリューム１４０が「スレーブ」ボリューム１４０ｓとして動作する。図５４に示されるシーケンスはストレージコントローラのメモリに常駐するキャッシュデステージプログラム１１２‐０５‐３の実施方法の一例であり、スレーブ仮想ボリューム１４０ｓから外部ストレージサブシステム６２１にページをデステージするシーケンスを示す。
【０１３４】
００２１０    第一にＳ４ａ‐２で、スレーブ仮想ボリューム１４０ｓを含むストレージサブシステム４００が、割り当てられていない仮想ボリュームページにあるダーティキャッシュスロットを発見する。ストレージサブシステム４００は外部ストレージサブシステム６００に、このスロットのデータに新しいページを割り当てるよう要求する。第二にＳ４ａ‐２で、外部ストレージサブシステム６００は要求を受信し、新しいページをチェックし、割り当てる。割り当て操作が完了した後、外部ストレージサブシステム６００はストレージサブシステム４００に承認を返す。第三にＳ４ａ‐３で、ストレージサブシステム４００は「ロック」要求をストレージサブシステム１００に送信する。第四にＳ４‐４で、ストレージサブシステム１００がロック要求を受信し、仮想ボリューム１４０ｓのダーティスロットに対応するマスタ仮想ボリューム１４０ｍのターゲットスロットをロックする。スロットをロックした後、ストレージサブシステム１００は承認メッセージと、仮想ボリューム１４０ｍのスロット状態を、ストレージサブシステム４００のスレーブ仮想ボリュームに返す。第五に割り当て操作終了後のＳ４ａ‐５では、ストレージサブシステム４００はダーティキャッシュスロットを外部ボリューム６２１に転送し、このデステージ操作の間、ストレージサブシステム４００はスロットをロックする。第六に、転送後のＳ４ａ‐６で、ストレージサブシステム４００は外部ストレージサブシステム６００から承認メッセージを受信する。承認メッセージの受信後、ストレージサブシステム４００はスロット状態をダーティからクリーンに変更し、スロットをアンロックする。
【０１３５】
００２１１    図５５は本発明の方法論の実施例を実装するコンピュータ／サーバシステム５５０の実施例を図示するブロック図である。システム５５００はコンピュータ／サーバプラットフォーム５５０１、周辺機器デバイス群５５０２、ネットワークリソース群５５０３を含む。
【０１３６】
００２１２    コンピュータプラットフォーム５５０１は、データバス５５０４やその他、コンピュータプラットフォーム５５０１の多様なパーツ全体または一部で情報を伝えるための通信メカニズムと、情報処理と他の計算、制御タスク実行のため５５０１に接続されたプロセッサ５５０５を含む可能性がある。コンピュータプラットフォーム５５０１は、プロセッサ５５０５により実行される指示と同じく様々な情報を格納するためバス５５０４に接続された、ランダムアクセスメモリ（ＲＡＭ）その他のダイナミックストレージデバイスなどの、揮発性ストレージ５５０６も含む。揮発性ストレージ５５０６は、プロセッサ５５０５による指示実行中、一時的数値変数その他の中間的情報を格納するために使用される場合もある。コンピュータプラットフォーム５５０１はさらに、様々なシステム構成パラメータだけでなく、基本的インプット‐アウトプットシステム（ＢＩＯＳ）などのプロセッサ５５０５用静的情報、指示を格納するため、バス５５０４に接続された、リードオンリメモリ（ＲＯＭまたはＥＰＲＯＭ）５５０７その他の静的ストレージデバイスを含む場合がある。磁気ディスク、光ディスク、ソリッドステートフラッシュメモリデバイスなど永続的ストレージデバイス５５０８が、情報、指示を格納するためにバス５５０１に提供、接続される。
【０１３７】
００２１３    コンピュータプラットフォーム５５０１のシステム管理者またはユーザに情報を表示するため、コンピュータプラットフォーム５５０１は５５０４経由で、ブラウン管（ＣＲＴ）、プラズマディスプレー、液晶ディスプレー（ＬＣＤ）などのディスプレー５５０９に接続できる。情報とコマンド選択をプロセッサ５５０５に伝達するため、英数字その他のキーを含めてインプットデバイス５５１０は、バス５５０１に接続される。マウス、トラックボール、カーソル方向キーなど、情報とコマンド選択をプロセッサ５５０４に伝達するため、またディスプレー５５０９上でカーソルの移動をコントロールするための、別のタイプのユーザインプットデバイスがカーソルコントロールデバイス５５１１である。このインプットデバイスは典型的には、デバイスが平面上で位置を特定することを可能にする２本の軸、すなわち第一軸（例：ｘ）と第二軸（例：ｙ）による２自由度を持つ。
【０１３８】
００２１４    外部ストレージデバイス５５１２はコンピュータプラットフォーム５５０１用の追加またはリムーバブルストレージ容量を提供するため、バス５５０４経由でコンピュータプラットフォーム５５０１に接続される。コンピュータシステム５５００の実施例では、外部ストレージデバイス５５１２を他のコンピュータシステムとのデータ交換を促進するために使用できる。
【０１３９】
００２１５    本発明は本書に記述された技術を実施するためのコンピュータシステム５５００の使用に関連する。ある実施例において、前記の本発明のシステムはコンピュータプラットフォーム５５０１などのマシンに常駐する可能性がある。本発明の実施例に従い、本書に記述された技術は、揮発性メモリ５５０６に含まれる１つ以上の指示の１つ以上のシーケンスを実施するプロセッサ５５０５に応えてコンピュータシステム５５００により実施される。こうした指示は、永続的ストレージデバイス５５０８などの他のコンピュータ可読メディアから揮発性メモリ５５０６へ読み取ることができる。揮発性メモリ５５０６に含まれる指示のシーケンスを実行することにより、プロセッサ５５０５は本書に記述された処理ステップを実行する。また別の実施例では、本発明を実装するため、ソフトウェア指示の代わりに、またはソフトウェア指示とともに、ハードワイヤ回路を使用できる。このように本発明の実施例は、特定の組み合わせのハードワイヤ回路やソフトウェアに限定されるものではない。
【０１４０】
００２１６    本書で使用する「コンピュータ可読メディア」という語は、プロセッサ５５０５に対して実行指示を与える際に関連する任意のメディアを指す。コンピュータ可読メディアは本書に記述された方法および／または技術のいずれかを実装指示を運ぶマシン可読メディアの一例に過ぎない。こうしたメディアは非揮発性メディア、揮発性メディア、伝達メディアを含むがそれに限定されない多数の形式を取る。例えば非揮発性メディアは、ストレージデバイス５５０８のような光ディスクや磁気ディスクを含む。揮発性メディアは揮発性ストレージ５５０６のような動的メモリを含む。伝達メディアはデータバス５５０４で構成されるワイヤを含めて、同軸ケーブル、銅線、光ファイバーを含む。伝達メディアはまた、電波通信、赤外線通信の間に生成されるような音波や光波の形式を取る場合もある。
【０１４１】
００２１７    コンピュータ可読メディアの一般的な形式は、例えばフロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープその他の磁気メディア、ＣＤ‐ＲＯＭ、その他の光メディア、パンチカード、紙テープ、その他、穴のパターンによる物理メディア、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ‐ＥＰＲＯＭ、フラッシュドライブ、メモリカード、その他メモリチップやカートリッジ、以下に記述するような搬送波、その他、コンピュータが読み取りを行うことのできるメディアを含む。
【０１４２】
００２１８    プロセッサ５５０５へ実行のために１つ以上の指示の１つ以上のシーケンスを伝える際には、多様な形式のコンピュータ可読メディアが関連する場合もある。例えば前記の指示は、まずリモートコンピュータから磁気ディスクで伝わる場合がある。また別の方法として、リモートコンピュータが自己の動的メモリに指示をロードし、モデムを使って電話線で指示を送信することも可能である。コンピュータシステム５５００にローカルなモデムは電話線でデータを受信し、赤外線トランスミッタを使ってデータを赤外線信号に変換することも可能である。赤外線検出器は赤外線信号で伝えられたデータを受信し、適切な回路がデータバス５５０４にデータを配置することができる。バス５５０４はデータを揮発性ストレージ５５０６に伝え、そこからプロセッサ５５０５は指示を検索し、実行する。別の選択肢として、プロセッサ５５０５の前後いずれかに、揮発性メモリ５５０６により受信された指示を、永続的ストレージデバイス５５０８に格納することも可能である。当技術分野で周知の様々なネットワークデータ通信プロトコルを利用して、インターネット経由でコンピュータプラットフォーム５５０１へ指示をダウンロードすることも可能である。
【０１４３】
００２１９    コンピュータプラットフォーム５５０１はデータバス５５０４に接続されたネットワークインタフェースカード５５１３などの通信インタフェースも含む。通信インタフェース５５１３はローカルネットワーク５５１５に接続されたネットワークリンク５５１４との双方向データ通信接続を提供する。例えば通信インタフェース５５１３は、対応するタイプの電話線に通信接続を提供するための統合デジタルサービスネットワーク（ＩＳＤＮ）カードまたはモデムの場合がある。別の例としては、通信インタフェース５５１３が互換ＬＡＮにデータ通信接続を提供するローカルエリアネットワークインタフェースカード（ＬＡＮ  ＮＩＣ）の場合もある。周知の８０２．１１ａ、８０２．１１ｂ、８０２．１１ｇ、Ｂｌｕｅｔｏｏｔｈなどワイヤレスリンクもネットワーク実施に利用可能である。こうした実施例のいずれにおいても、通信インタフェース５５１３は多種多様な情報を表すデジタルデータストリームを伝える電気信号、電磁信号、光信号を送受信する。
【０１４４】
００２２０    ネットワークリンク５５１３は典型的には、１つ以上のネットワークから他のネットワークリソースへのデータ通信を提供する。例えばネットワークリンク５５１４は、ローカルネットワーク５５１５を経由してホストコンピュータ５５１６またはネットワークストレージ／サーバへの接続を提供する。さらに、または代案として、ネットワークリンク５５１３はゲートウェイ／ファイアウォール５５１７を通じて、インターネットのような広域またはグローバルネットワーク５５１８に接続可能である。このようにコンピュータプラットフォーム５５０１は、リモートネットワークストレージ／サーバ５５１９のように、インターネット５５１８上のどこに位置するネットワークリソースへもアクセスできる。一方では、コンピュータプラットフォーム５５０１はローカルエリアネットワーク５５１５および／またはインターネット５５１８上のどこに位置するクライアントからもアクセス可能となる。ネットワーククライアント５５２０、５５２１自体も、プラットフォーム５５０１に類似したコンピュータプラットフォームに基づき、実行可能である。
【０１４５】
００２２１    ローカルネットワーク５５１５とインターネット５５１８はいずれも、デジタルデータストリームを伝える電気信号、電磁信号、光信号を利用する。デジタルデータをコンピュータプラットフォーム５５０１との間で相互に伝えるネットワークリンク５５１４上の様々なネットワークと信号を通じて、また通信インタフェース５５１３を通じて、情報を運ぶ搬送波の形式の例である。
【０１４６】
００２２２    コンピュータプラットフォーム５５０１は、インターネット５５１８とＬＡＮ５５１５、ネットワークリンク５５１４と通信インタフェース５５１３を含む様々なネットワークを経由し、プログラムコードも含めて、メッセージを送信し、データを受信することができる。インターネットの例では、システム５５０１がネットワークサーバの役割をする場合、インターネット５５１８、ゲートウェイ／ファイアウォール５５１７、ローカルエリアネットワーク５５１５、通信インタフェース５５１３を通じて、クライアント５５２０および／または５５２１上で動作するアプリケーションプログラムのために要求されたコードやデータを送信する場合がある。同様に、他のネットワークからコードを受信する場合もある。
【０１４７】
００２２３    受信されたコードはプロセッサ５５０５により受信されたとおりに実行され、そして／または永続的または揮発性ストレージデバイス５５０８、５５０６に個々に、または今後の実行のために非揮発性ストレージに格納される可能性がある。この方法で、コンピュータシステム５５０１は搬送波の形式でアプリケーションコードを得る可能性がある。
【０１４８】
００２２４    本発明は特定のファイアウォールシステムに限定されたものではないことが理解されるべきである。本発明の方針にもとづくコンテンツ処理システムは、３つのファイアウォール操作モード、具体的にはＮＡＴモード、ルートモード、透過モードのいずれかで利用される。
【０１４９】
００２２５    最後に、本書で記述された処理、技術はいかなる特定の装置とも本質的に関連するものではなく、任意の適切な組み合わせの構成要素により実行可能であることが、理解されるべきである。さらに、本書に記述された指導に従い、様々な種類の汎用デバイスが利用可能である。本書に記述された方法を実行するための専用装置を構築することが有益であるとも言える。本発明は、特定の例に関連して記述されてきたが、それらはあらゆる点において説明的なものであり限定的ではない。当業者は、多種多様な組み合わせのハードウェア、ソフトウェア、ファームウェアが本発明に適することを理解するべきである。例えば記述されたソフトウェアはアセンブラ、Ｃ／Ｃ＋＋、Ｐｅｒｌ、ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等、広範なプログラミングまたはスクリプト言語で実行可能である。
【０１５０】
００２２６    さらに、本書で開示された発明の特定、実行を考慮すれば、前記の発明のその他の実施例は、当業者には明白である。記述された実施例の様々な側面および／または構成要素が、シン・プロビジョニング機能を伴うコンピュータ化されたストレージサブシステムにおいて単独に、または任意の組み合わせで利用可能である。以下の請求項により示される本発明の真の範囲と精神により、前記の特定と例は単に例を示すためのものとみなされることが意図されている。
【０１５１】
なお、添付図面は、本発明の実施例を例示し、説明文と併せて、本発明技術の原理を説明し図示する働きをなす。具体的には次の通りである。
【図面の簡単な説明】
【０１５２】
【図１】ストレージシステムを示す図である。
【図２】ストレージシステムのホストコンピュータ用メモリの例を示す図である。
【図３】ボリュームマネジメントテーブルの例を示す図である。
【図４】ストレージサブシステムのストレージコントローラのメモリ用ストラクチャの例を示す図である。
【図５】ストレージサブシステムのストレージコントローラのメモリ用ストラクチャの例を示す図である。
【図６】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図７】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図８】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図９】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図１０】、図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図１１】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図１２】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図１３】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図１４】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図１５】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図１６】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図１７】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図１８】図４、図５のプログラムとテーブルをさらに詳細に示す図である。
【図１９】容量プールチャンク、容量プールページ、ディスクキャッシュの関係を示す図である。
【図２０】仮想ボリュームページ、仮想ボリュームスロット、仮想ボリュームの関係を示す図である。
【図２１】容量プールマネジメントテーブル、容量プール要素マネジメントテーブル、容量プールチャンクマネジメントテーブル、ＲＡＩＤグループマネジメントテーブル、容量プールチャンクの関係を示す図である。
【図２２】仮想ボリューム、仮想ボリュームページ、仮想ボリュームマネジメントテーブル、仮想ボリュームページマネジメントテーブル、容量プールマネジメントテーブル、容量プールチャンク、容量プールページ、容量プール要素マネジメントテーブルの関係を示す図である。
【図２３】仮想ボリューム、仮想ボリュームページ、容量プールチャンク、容量プールページ、容量プールページマネジメントテーブルの関係を示す図である。
【図２４】キャッシュスロット、キャッシュマネジメントテーブル、ディスクスロットの関係を示す図である。
【図２５】２つのストレージサブシステムの仮想ボリュームとペアマネジメントテーブルの関係を示す図である。
【図２６】仮想ボリューム、ＲＡＩＤグループ、外部ボリュームの関係を示す図である。
【図２７】ボリューム操作待機プログラムの実施方法の例を示す図である。
【図２８】ペア形成プログラムの実施方法の例を示す図である。
【図２９】ペア削除プログラムの実施方法の例を示す図である。
【図３０】スロット操作プログラムの実施方法の例を示す図である。
【図３１】ライトＩ／Ｏ操作プログラムの実施方法の例を示す図である。
【図３２】リードＩ／Ｏ操作プログラムの実施方法の例を示す図である。
【図３３Ａ】容量プールページ割り当てプログラムの実施方法の例を示す図である。
【図３３Ｂ】容量プールページ割り当てプログラムの実施方法の例を示す図である。
【図３４】キャッシュステージングプログラムの実施方法の例を示す図である。
【図３５】ディスク掃き出しプログラムの実施方法の例を示す図である。
【図３６】キャッシュデステージングプログラムの実施方法の例を示す図である。
【図３７】キャッシュデステージングプログラムの実施方法の例を示す図である。
【図３８】キャッシュデステージングプログラムの実施方法の例を示す図である。
【図３９】容量プールガーベッジコレクションプログラムの実施方法の例を示す図である。
【図４０】容量プールチャンク解放プログラムの実施方法の例を示す図である。
【図４１】マスタボリュームにＩ／Ｏを書き込むシーケンスを示す図である。
【図４２】スレーブボリュームにＩ／Ｏを書き込むシーケンスを示す図である。
【図４３】マスタボリュームから外部ボリュームにデステージするシーケンスを示す図である。
【図４４】スレーブボリュームから外部ボリュームにデステージするシーケンスを示す図である。
【図４５】本発明の他のストレージシステムを示す図である。
【図４６】本発明のもう１つの容量プールマネジメントプログラムのための構造例を示す図である。
【図４７Ａ】本発明の他の容量プール割り当ての実施方法の例を示す図である。
【図４７Ｂ】本発明の他の容量プール割り当ての実施方法の例を示す図である。
【図４８】本発明の他の外部ストレージサブシステムを示す図である。
【図４９】本発明の他の外部ストレージサブシステムのメモリの構造例を示す図である。
【図５０】本発明の他のストレージコントローラのメモリに格納された容量プールマネジメントプログラムを示す図である。
【図５１】本発明の他の仮想ボリュームページマネジメントテーブルの構造例を示す図である。
【図５２】本発明の他の仮想ボリュームページマネジメントの実施方法例を示す図である。
【図５３】本発明の他のマスタボリュームから外部ボリュームにデステージするシーケンスの例を示す図である。
【図５４】本発明の他のスレーブボリュームから外部ボリュームにデステージするシーケンスの例を示す図である。
【図５５】本発明のシステムを実装可能なコンピュータプラットフォームの実施例を示す図である。
【符号の説明】
【０１５３】
１００    ストレージサブシステム
１１０    ストレージコントローラ
１１１    ＣＰＵ
１１２    メモリ
１１４    ＮＩＣ
１１４    ＮＩＣ
１１５    ＦＣ  Ｉ／Ｆ
１１６    ＳＣＳＩ  Ｉ／Ｆ
１１６    ＳＣＳＩ  Ｉ／Ｆ
１１７    ＦＣ  Ｉ／Ｆ
１１８    ＦＣ  Ｉ／Ｆ
１１８    ＦＣ  Ｉ／Ｆ
１２０    ディスクユニット
１２１    ＨＤＤ
１３０    マネジメントターミナル
１３１    ＣＰＵ
１３２    メモリ
１３３    ＮＩＣ
１３４    ユーザＩ／Ｆ
３００    ホストコンピュータ
３０１    ＣＰＵ
３０２    メモリ
３０３    ＦＣ  Ｉ／Ｆ
４００    ストレージサブシステム
４１０    ストレージコントローラ
４１１    ＣＰＵ
４１２    メモリ
４１５    ＦＣ  Ｉ／Ｆ
４１７    ＦＣ  Ｉ／Ｆ
４２０    ディスクユニット
４２１    ＨＤＤ
４３０    マネジメントターミナル
４３１    ＣＰＵ
４３２    メモリ
４３３    ＮＩＣ
４３４    ユーザＩ／Ｆ
１４０    仮想ボリューム
５５０４    データバス
５５０５    ＣＰＵ
５５０６    揮発性ストレージ
５５０７    ＥＰＲＯＭ／ファームウェアストレージ
５５０８    永続的ストレージ
５５０９    ディスプレー
５５１０    キーボード
５５１１    マウス／ポジションポインティングデバイス
５５１２    外部ストレージ
５５１３    ネットワークインタフェースカード
５５１５    インターネット
５５１６    ホスト
５５１７    ゲートウェイ／ファイアウォール
５５１８    インターネット
５５１９    ネットワークサーバ／ネットワークストレージ
５５２０    クライアント
５５２１    クライアント
５５２２    ネットワークサーバ／ネットワークストレージ
【図１】
0005264464.tif 000002
【図２】
0005264464.tif 000003
【図３】
0005264464.tif 000004
【図４】
0005264464.tif 000005
【図５】
0005264464.tif 000006
【図６】
0005264464.tif 000007
【図７】
0005264464.tif 000008
【図８】
0005264464.tif 000009
【図９】
0005264464.tif 000010
【図１０】
0005264464.tif 000011
【図１１】
0005264464.tif 000012
【図１２】
0005264464.tif 000013
【図１３】
0005264464.tif 000014
【図１４】
0005264464.tif 000015
【図１５】
0005264464.tif 000016
【図１６】
0005264464.tif 000017
【図１７】
0005264464.tif 000018
【図１８】
0005264464.tif 000019
【図１９】
0005264464.tif 000020
【図２０】
0005264464.tif 000021
【図２１】
0005264464.tif 000022
【図２２】
0005264464.tif 000023
【図２３】
0005264464.tif 000024
【図２４】
0005264464.tif 000025
【図２５】
0005264464.tif 000026
【図２６】
0005264464.tif 000027
【図２７】
0005264464.tif 000028
【図２８】
0005264464.tif 000029
【図２９】
0005264464.tif 000030
【図３０】
0005264464.tif 000031
【図３１】
0005264464.tif 000032
【図３２】
0005264464.tif 000033
【図３３Ａ】
0005264464.tif 000034
【図３３Ｂ】
0005264464.tif 000035
【図３４】
0005264464.tif 000036
【図３５】
0005264464.tif 000037
【図３６】
0005264464.tif 000038
【図３７】
0005264464.tif 000039
【図３８】
0005264464.tif 000040
【図３９】
0005264464.tif 000041
【図４０】
0005264464.tif 000042
【図４１】
0005264464.tif 000043
【図４２】
0005264464.tif 000044
【図４３】
0005264464.tif 000045
【図４４】
0005264464.tif 000046
【図４５】
0005264464.tif 000047
【図４６】
0005264464.tif 000048
【図４７Ａ】
0005264464.tif 000049
【図４７Ｂ】
0005264464.tif 000050
【図４８】
0005264464.tif 000051
【図４９】
0005264464.tif 000052
【図５０】
0005264464.tif 000053
【図５１】
0005264464.tif 000054
【図５２】
0005264464.tif 000055
【図５３】
0005264464.tif 000056
【図５４】
0005264464.tif 000057
【図５５】
0005264464.tif 000058