(57)【特許請求の範囲】
【請求項１】
一つ以上のアプリケーションが走行するホストコンピュータに接続されたストレージシステムであって、
前記ストレージシステムは、
複数の物理ストレージデバイスと、
前記複数の物理ストレージデバイスからプール領域を構成する複数のストレージボリュームを提供するプロセッサ及びメモリを有するコントローラとを備え、
前記複数のストレージボリュームは、
異なる階層レベルを有する複数の階層に分割されて前記一つ以上のアプリケーションの少なくとも一つと対応付けて管理され、
前記コントローラは、
ライトデータを受信するとともに前記ライトデータを使用する前記アプリケーションのアプリケーションＩＤを受信し、
前記ストレージボリューム内の前記プール領域を仮想ボリューム内の仮想領域に割り当て、
前記ライトデータを前記仮想領域に格納し、
前記ライトデータを割り当て済みの前記プール領域に格納するとともに前記アプリケーションＩＤと、割り当て済みの前記プール領域とを対応付けて記憶し、
前記アプリケーションＩＤに基づいて、前記仮想領域に対する前記プール領域の割り当てを前記ライトデータを使用するアプリケーションに対応する階層として予め管理している他の階層の他のプール領域に変更する
ことを特徴とするストレージシステム。
【請求項２】
前記アプリケーションＩＤは、前記ライトデータとともに前記ホストから送信される
ことを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記アプリケーションＩＤは、前記アプリケーションのＩＰアドレスである
ことを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記アプリケーションに対応付けて管理される前記階層は、少なくとも前記アプリケーションの優先度、使用率又は性能要件の何れか一つを含むアプリケーション状態に基づいて変更される
ことを特徴とする請求項１に記載のストレージシステム。
【請求項５】
前記複数の階層のそれぞれは、階層規則構成を満たす前記複数の物理ストレージデバイスのストレージ領域により提供され、
前記コントローラは、
前記階層規則構成が変更されて、前記仮想領域の前記ライトデータを格納している前記プール領域が前記ライトデータを使用する前記アプリケーションに対応する階層とは異なる階層に属することとなった場合、前記仮想領域に対する前記プール領域の割り当てを前記他の階層の他のプール領域に変更する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項６】
前記コントローラは、
前記アプリケーションに対応する階層内に割り当て可能な空きのプール領域がない場合、前記アプリケーションに対応しない何れかの階層内のプール領域を割り当てる
ことを特徴とする請求項１に記載のストレージシステム。
【請求項７】
前記ストレージシステムはリモートストレージシステムに接続されており、
前記複数のストレージボリュームのうち少なくとも一つのストレージボリュームは、前記リモートストレージシステム内のリモートストレージボリュームとリモートコピーペア状態にあり、かつ、複製元ボリューム又は複製先ボリュームのどちらかであり、
複製元ボリュームについて、前記コントローラは、前記複製元ボリュームの階層情報を前記複製元ボリュームとペア状態にある複製先ボリュームとしての前記リモートストレージボリュームへ転送し、
複製先ボリュームについては、前記コントローラは、前記複製先ボリュームの階層情報を、前記複製先ボリュームとペア状態にある複製元ボリュームとしての前記リモートストレージボリュームから受け取る、
ことを特徴とする請求項１に記載のストレージシステム。
【請求項８】
一つ以上のアプリケーションが走行するホストコンピュータに接続されたストレージシステムの制御方法であって、
前記ストレージシステムは、
複数の物理ストレージデバイスと、
前記複数の物理ストレージデバイスからプール領域を構成する複数のストレージボリュームを提供するプロセッサ及びメモリを有するコントローラとを備え、
前記複数のストレージボリュームは、
異なる階層レベルを有する複数の階層に分割されて前記一つ以上のアプリケーションの少なくとも一つと対応付けて管理され、
前記コントローラが、
ライトデータを受信するとともに前記ライトデータを使用する前記アプリケーションのアプリケーションＩＤを受信する第１のステップと、
前記ストレージボリューム内の前記プール領域を仮想ボリューム内の仮想領域に割り当てる第２のステップと、
前記ライトデータを前記仮想領域に格納する第３のステップと、
前記ライトデータを割り当て済みの前記プール領域に格納するとともに前記アプリケーションＩＤと、割り当て済みの前記プール領域とを対応付けて記憶する第４のステップと、
前記アプリケーションＩＤに基づいて、前記仮想領域に対する前記プール領域の割り当てを前記ライトデータを使用するアプリケーションに対応する階層として予め管理している他の階層の他のプール領域に変更する第５のステップと
を備えることを特徴とする制御方法。
【請求項９】
前記アプリケーションＩＤは、前記ライトデータとともに前記ホストから送信される
ことを特徴とする請求項８に記載の制御方法。
【請求項１０】
前記アプリケーションＩＤは、前記アプリケーションのＩＰアドレスである
ことを特徴とする請求項８に記載の制御方法。
【請求項１１】
前記アプリケーションに対応付けて管理される前記階層は、少なくとも前記アプリケーションの優先度、使用率又は性能要件の何れか一つを含むアプリケーション状態に基づいて変更される
ことを特徴とする請求項８に記載の制御方法。
【請求項１２】
前記複数の階層のそれぞれは、階層規則構成を満たす前記複数の物理ストレージデバイスのストレージ領域により提供され、
前記コントローラが、
前記階層規則構成が変更されて、前記仮想領域の前記ライトデータを格納している前記プール領域が前記ライトデータを使用する前記アプリケーションに対応する階層とは異なる階層に属することとなった場合、前記仮想領域に対する前記プール領域の割り当てを前記他の階層の他のプール領域に変更する第６のステップを備える
ことを特徴とする請求項８に記載の制御方法。
【請求項１３】
前記コントローラが、
前記アプリケーションに対応する階層内に割り当て可能な空きのプール領域がない場合、前記アプリケーションに対応しない何れかの階層内のプール領域を割り当てる第７のステップを備える
ことを特徴とする請求項８に記載の制御方法。
【請求項１４】
前記ストレージシステムはリモートストレージシステムに接続されており、
前記複数のストレージボリュームのうち少なくとも一つのストレージボリュームは、前記リモートストレージシステム内のリモートストレージボリュームとリモートコピーペア状態にあり、かつ、複製元ボリューム又は複製先ボリュームのどちらかであり、
複製元ボリュームについて、前記コントローラが、前記複製元ボリュームの階層情報を前記複製元ボリュームとペア状態にある複製先ボリュームとしての前記リモートストレージボリュームへ転送する第８のステップと、
複製先ボリュームについては、前記コントローラが、前記複製先ボリュームの階層情報を、前記複製先ボリュームとペア状態にある複製元ボリュームとしての前記リモートストレージボリュームから受け取る第９のステップと
を備えることを特徴とする請求項８に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本発明は、一般的には階層型ストレージシステムの管理及び構成に関し、より詳しくは、リモートコピー環境における、動的ページ再割当てストレージシステム内のアプリケーション及び階層構成の管理の方法及び装置に関する。
【背景技術】
【０００２】
[0002]  ストレージシステムは、ＳＳＤ（Solid State Disk）や、ＳＡＳ（Serial Attached）ＨＤＤ、ＳＡＴＡ（Serial ATA）ＨＤＤ等の数種類のディスクを使用することができる。これらのディスクは、性能、容量、信頼性、及びコストの面において、それぞれ異なっている。ストレージユーザは、ストレージボリュームを取得すると、ＲＯＩ（Return On An Investment、投資収益率）の最大化という目的及びその要件に従って、種々のディスクの中から選択を行う。上記目的及び要件は経時変化することがある。その場合、ディスク構成を最適化するために調整を行う必要がある。その方法の一つに、階層型ストレージ管理を用いて高ＲＯＩを持続する方法がある。また、最大ＲＯＩを維持するために、階層型ストレージ構成を動的に調整する必要もありうる。
【０００３】
[0003]  階層型ストレージ環境の管理については既にいくつかの技術が存在する。例えば、米国特許出願番号第２００７００５５７１３号はボリューム容量プロビジョニング方法を開示しており、その方法によると、ストレージシステムは、ボリュームの容量拡張が必要となった際に、用途及び所望される性能に応じて適切なディスクを選択する。米国特許出願番号第２００８０１８４０００号は、一つのプール内に存在する複数の階層間でのシン・プロビジョニング（ページ単位のスライス）ボリュームマイグレーション方法を開示している。ストレージシステムは、低アクセスボリュームを選択し、それを別のストレージモジュール内の低レイテンシー階層へ継ぎ目なく移動させる。米国特許出願番号第２００７０１９２５６０号は、シン・プロビジョニングプールへのディスクインストール制御方法を開示しており、その方法によると、ストレージシステムは、システム構成に応じてディスクを適切なプールにインストールする。米国特許出願番号第２００７００５５７１３号及び米国特許出願番号第２００７０１９２５６０号は、ボリューム階層構成を調整するのに有用である。米国特許出願番号第２００８０１８４０００号は、階層に対する容量インストールに有用である。これらの開示内容は、本記載により本発明に組み込まれる。また、ＲＦＣ７９１（INTERNET PROTOCOL）、ＲＦＣ７９３（TRANSMISSION CONTROL PROTOCOL）、ＲＦＣ７９０（ASSIGNED NUMBERS）、ＲＦＣ３７２０（Internet Small Computer Systems Interface（ｉＳＣＳＩ）、ＳＢＣ−３  Ｄｒａｆｔ（SCSI Block Commandsのドラフト（http://www.t10.org））、ＦＣ−ＦＳ−Ｄｒａｆｔ（FIBRE CHANNEL FRAMING AND SIGNALING-2のドラフト（http://wwwt11.org））、ＦＣ−ＢＢ−５  Ｄｒａｆｔ（FIBRE CHANNEL BACKBONE-5のドラフト（http://wwwt11.org））を参照のこと。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
[0004]  本発明の実施形態は、リモートコピー環境における、動的ページ再割当てストレージシステム内でのアプリケーション及び階層構成の管理の方法及び装置を提供するものである。データを階層間で置き換える場合、置換え動作によって不要な動作や信頼性の低下が生じる可能性があるため、同データを有するアプリケーションの優先度、使用率、及び性能要件を知っておく必要がある。データを有するストレージは、どのアプリケーションがそのデータにアクセスするのか知らないため、データを別の階層へ置き換えるべきか否かを判断するのは難しい。本発明は、サーバ上のアプリケーションが、アプリケーションＩＤを含むＩ／Ｏを発行する技術を提供する。アプリケーションがデータにアクセスすると、ストレージは、アクセスされたデータとアプリケーションＩＤとの関係を記憶する。ストレージは、アプリケーションのアプリケーション状態に関連して、同データを階層間で置き換える。これにより、動的ページ再割当てストレージシステムにおけるアプリケーション及び階層構成の管理が可能になる。
【課題を解決するための手段】
【０００５】
[0005]  本発明の一態様は、ストレージシステムに接続されたホストコンピュータ上で一つ以上のアプリケーションが走行するシステムにおける、階層型ストレージ環境でのストレージ管理のためのストレージシステムを対象とする。前記ストレージシステムは、階層レベルの異なる複数の階層に分割されている、プール内の複数のストレージボリュームであって、前記複数の階層は階層構成規則に従って編成され、前記複数のストレージボリュームは、前記ストレージシステム内の複数の物理ストレージデバイスによって提供される、ストレージボリュームと、前記複数の物理ストレージデバイスを制御するとともにプロセッサとメモリとを有するコントローラと、を有する。前記コントローラは、前記物理ストレージデバイスに対する前記階層レベルの変更に基づいて、前記プールを複数の仮想ボリュームに割り当てる。前記コントローラは、前記ホストコンピュータ上で走行する各アプリケーションがアクセスする前記ストレージシステム内のデータと、前記データにアクセスする前記アプリケーションのアプリケーションＩＤとの関係を記憶する。前記複数のストレージボリュームのうち一つのストレージボリュームの一部の前記階層レベルは、前記ストレージボリューム内のデータにアクセスする前記アプリケーションに少なくとも部分的に基づいて変更される。
【０００６】
[0006]  いくつかの実施形態では、前記コントローラは、前記ホストコンピュータ上で走行する各アプリケーションがアクセスする前記ストレージシステム内のストレージボリューム内のデータと、前記アプリケーションにアクセスされる前記データを含む前記ストレージボリュームに対してライトＩ／Ｏを発行する前記アプリケーションのアプリケーションＩＤとの関係を記憶する。前記ストレージボリュームの前記一部の前記階層レベルは、前記ストレージボリューム内のデータにアクセスする前記アプリケーションのアプリケーション状態に少なくとも部分的に基づいて変更され、前記アプリケーション状態とは、前記アプリケーションの優先度、使用率、又は、性能要件の少なくとも一つを含むものである。前記コントローラは、前記物理ストレージデバイスに対する前記階層レベルの変更に基づいて、前記プールを前記複数の仮想ボリュームに動的に割り当て、前記ホストコンピュータ上で走行する各アプリケーションがアクセスする前記ストレージシステム内の前記データと、前記データにアクセスする前記アプリケーションの前記アプリケーションＩＤとの関係を動的に記憶する。管理端末からの入力に応答して、前記コントローラは、前記物理ストレージデバイスに対する階層レベルの変更に基づいて、前記プールを前記複数の仮想ボリュームに割り当てる。前記複数の仮想ボリュームのうち少なくとも一つの仮想ボリュームは、前記コントローラによる階層構成の変更に従って前記階層レベルの設定が可能な、一つ以上の指定エリアを有する。前記アプリケーションＩＤは、前記アプリケーションに設定されたｉＳＣＳＩフレームのＩＰアドレス、前記アプリケーションのＦｉｂｒｅＣｈａｎｎｅｌフレームのＦｉｂｒｅＣｈａｎｎｅｌＩＤ、及び、前記アプリケーションのＥｔｈｅｒｎｅｔ（登録商標）フレーム上のＦｉｂｒｅＣｈａｎｎｅｌのＦｉｂｒｅＣｈａｎｎｅｌＩＤ、からなる群から選択される。
【０００７】
[0007]  特定の実施形態において、前記ストレージシステムは、リモートストレージシステムに接続されている。前記複数のストレージボリュームのうち少なくとも一つのストレージボリュームは、前記リモートストレージシステム内のリモートストレージボリュームとリモートコピーペア状態にあり、かつ、複製元ボリューム又は複製先ボリュームのどちらかである。複製元ボリュームについて、前記コントローラは、前記複製元ボリュームの階層情報を、前記複製元ボリュームとペア状態にある複製先ボリュームとしての前記リモートストレージボリュームへ転送する。複製先ボリュームについては、前記コントローラは、前記複製先ボリュームの階層情報を、前記複製先ボリュームとペア状態にある複製元ボリュームとしての前記リモートストレージボリュームから受け取る。
【０００８】
[0008]  本発明の別の態様は、一つ以上のアプリケーションが走行するホストコンピュータに接続されたストレージシステムと、一つ以上のアプリケーションが走行するリモートホストコンピュータに接続されたリモートストレージシステムと、を有するシステムにおける、階層型ストレージ環境でのストレージ管理のための前記ストレージシステム及び前記リモートストレージシステムであって、前記ストレージシステム及び前記リモートストレージステムは互いに接続された、ストレージシステムを対象とする。前記ストレージシステムは、階層レベルの異なる複数の階層に分割されている、プール内の複数のストレージボリュームであって、前記複数の階層は階層構成規則に従って編成され、前記複数のストレージボリュームは、前記ストレージシステム内の複数の物理ストレージデバイスによって提供される、ストレージボリュームと、前記複数の物理ストレージデバイスを制御するとともにプロセッサとメモリとを有するコントローラと、を有する。前記コントローラは、前記物理ストレージデバイスに対する前記階層レベルの変更に基づいて、前記プールを複数の仮想ボリュームに割り当てる。前記コントローラは、前記ホストコンピュータ上で走行する各アプリケーションがアクセスする前記ストレージシステム内のデータと、前記データにアクセスする前記アプリケーションのアプリケーションＩＤとの関係を記憶する。前記複数のストレージボリュームのうち一つのストレージボリュームの一部の前記階層レベルは、前記ストレージボリューム内のデータにアクセスする前記アプリケーションに少なくとも部分的に基づいて変更される。
【０００９】
[0009]  本発明の別の態様は、ホストコンピュータに接続されたストレージシステムと、リモートホストコンピュータに接続されたリモートストレージシステムと、を有するシステムにおける、階層型ストレージ環境でのストレージ管理のための前記ストレージシステム及び前記リモートストレージシステムであって、前記ストレージシステム及び前記リモートストレージステムは互いに接続されている、ストレージシステムを対象とする。前記ストレージシステムは、階層レベルの異なる複数の階層に分割されている、プール内の複数のストレージボリュームであって、前記複数の階層は階層構成規則に従って編成され、前記複数のストレージボリュームは、前記ストレージシステム内の複数の物理ストレージデバイスによって提供される、ストレージボリュームと、前記複数の物理ストレージデバイスを制御するとともにプロセッサとメモリとを有するコントローラと、を有する。前記コントローラは、前記物理ストレージデバイスに対する前記階層レベルの変更に基づいて、前記プールを複数の仮想ボリュームに割り当てる。前記複数の仮想ボリュームの一つの仮想ボリュームページの前記階層レベルは、前記階層構成規則の変更に基づいて変更される。前記仮想ボリュームページの階層レベルが、リモートコピーペア相手を有するボリュームについて変更されると、前記コントローラは、前記仮想ボリュームページの前記階層レベルの情報を前記リモートストレージシステムへ送信し、それによって、前記リモートストレージシステム内において対応する仮想ボリュームページの階層レベルが変更される。
【００１０】
[0010]  いくつかの実施形態では、前記複数のストレージボリュームのうち一つのストレージボリュームの前記階層レベルは、前記ストレージボリューム内のデータにアクセスするアプリケーションのアプリケーション状態に少なくとも部分的に基づいて変更され、前記アプリケーション状態とは、前記アプリケーションの優先度、使用率、又は、性能要件の少なくとも一つを含むものである。前記ストレージシステム内の前記複数のストレージボリュームのうち少なくとも一つのストレージボリュームは、前記リモートストレージシステム内のリモートストレージボリュームとリモートコピーペア状態にあり、前記仮想ボリュームページの階層レベルが変更されると、前記リモートコピーペア状態をチェックして前記仮想ボリュームがペア状態にあるか否かを判断する。前記対応する仮想ボリュームページの前記階層レベルは、前記仮想ボリュームページを前記階層レベル構成に適合した別の仮想ボリュームページに移動することによって、変更される。前記移動の後、前記仮想ボリュームページと前記プールとの間のマッピング情報が更新される。
【００１１】
[0011]  本発明の上記及びその他の特徴及び利点は、特定の実施形態を下記に詳述することにより、当業者にとって明らかとなるであろう。
【図面の簡単な説明】
【００１２】
【図１】[0012]  図１は、本発明の第１の実施形態に係る、本発明の方法及び装置が適用されうるシステムのハードウェア構成を示している。
【図２】[0013]  図２は、第１の実施形態に係る図１のストレージサブシステム内のメモリの一例を示している。
【図３】[0014]  図３は、ディスク管理テーブルの一例を示している。
【図４】[0015]  図４は、ディスク情報テーブルの一例を示している。
【図５】[0016]  図５は、ＲＡＩＤグループ管理テーブルの一例を示している。
【図６】[0017]  図６は、仮想ボリューム管理テーブルの一例を示している。
【図７】[0018]  図７は、階層管理テーブルの一例を示している。
【図８】[0019]  図８は、仮想ボリュームページ管理テーブルの一例を示している。
【図９】[0020]  図９は、容量プールチャンク管理テーブルの一例を示している。
【図１０】[0021]  図１０は、容量プールページ管理テーブルの一例を示している。
【図１１】[0022]  図１１は、アプリケーション階層管理テーブルの一例を示している。
【図１２】[0023]  図１２は、キャッシュ管理テーブルの一例を示している。
【図１３】[0024]  図１３は、第１の実施形態に係るストレージサブシステムの論理ストレージ構成の概要を示している。
【図１４】[0025]  図１４は、キャッシュエリアの論理構造の一例を示している。
【図１５】[0026]  図１５は、第１の実施形態に係る容量プールチャンクの論理構造の一例を示している。
【図１６】[0027]  図１６は、容量プールに対するテーブル参照構造の一例を示している。
【図１７】[0028]  図１７は、仮想ボリュームに対するテーブル参照構造の一例を示している。
【図１８】[0029]  図１８は、第１の実施形態に係るライトＩ／Ｏ制御の処理フローの一例を示している。
【図１９】[0030]  図１９は、リードＩ／Ｏ制御の処理フローの一例を示している。
【図２０】[0031]  図２０は、ステージング制御の処理フローの一例を示している。
【図２１】[0032]  図２１は、デステージング制御の処理フローの一例を示している。
【図２２】[0033]  図２２は、フラッシュ制御の処理フローの一例を示している。
【図２３】[0034]  図２３は、キャッシュ制御の処理フローの一例を示している。
【図２４】[0035]  図２４は、ボリュームプロビジョニング制御の処理フローの一例を示している。
【図２５】[0036]  図２５は、ボリューム階層制御の処理フローの一例を示している。
【図２６】[0037]  図２６は、階層構成制御の処理フローの一例を示している。
【図２７】[0038]  図２７は、階層登録制御の処理フローの一例を示している。
【図２８】[0039]  図２８は、ページマッピング制御の処理フローの一例を示している。
【図２９】[0040]  図２９は、ページ移動制御の処理フローの一例を示している。
【図３０】[0041]  図３０は、第１の実施形態に係るホストコンピュータからのライトＩ／Ｏフレーム構造の一例を示している。
【図３１】[0042]  図３１は、第１の実施形態に係る、アプリケーション終了と階層変更のシーケンスの一例を示している。
【図３２】[0043]  図３２は、本発明の第２の実施形態に係る、ホストコンピュータからのライトＩ／Ｏフレーム構造の一例を示している。
【図３３】[0044]  図３３は、本発明の第３の実施形態に係る、ホストコンピュータからのライトＩ／Ｏフレーム構造の一例を示している。
【図３４】[0045]  図３４は、本発明の第４の実施形態に係る、本発明の方法及び装置が適用されうるシステムのハードウェア構成を示している。
【図３５】[0046]  図３５は、第４の実施形態に係る、図３４の各ストレージサブシステム内のメモリの一例を示している。
【図３６】[0047]  図３６は、リモートコピーペア管理テーブルの一例を示している。
【図３７】[0048]  図３７は、第４の実施形態に係る、ライトＩ／Ｏ制御の処理フローの一例を示している。
【図３８】[0049]  図３８は、リモートコピーＩ／Ｏ制御の処理フローの一例を示している。
【図３９】[0050]  図３９は、構成転送制御の処理フローの一例を示している。
【図４０】[0051]  図４０は、アプリケーション終了、階層変更、及び階層構成転送のシーケンスの一例を示している。
【発明を実施するための最良の形態】
【００１３】
[0052]  以下に記載する本発明の詳細な説明において添付図面を参照するが、同図面は開示内容の一部を形成するとともに、本発明を実施しうる例示的な実施形態を説明するものであり、本発明を同実施形態に限定するものではない。添付図面中、複数の図面にわたって使用される同種の数字は実質的に類似する構成要素を示している。また、以下に記載及び図示するように、詳細な説明においては様々な例示的実施形態を示すが、本発明はここに記載及び図示される実施形態に限定されることはなく、当業者に知られている又はこれから知られるように、他の実施形態にも及びうる。本明細書中の「一実施形態」「本実施形態」又は「これら実施形態」という記載は、同実施形態に関連して記載される特定の特徴、構造、又は特性が本発明の少なくとも一つの実施形態に含まれることを意味するものであり、本明細書の様々な箇所で用いられるこれらの表現が必ずしも同じ実施形態を指しているとは限らない。また、以下の詳細な説明では、本発明の完全な理解のために具体的な詳細を数多く示している。しかし、当業者には明らかなように、本発明を実施する際にこれら具体的な詳細すべてが必要となる訳ではない。また、他の状況においては、本発明を曖昧にすることがないよう、周知の構造、材料、回路、プロセス及びインターフェースを詳細に記載してはおらず、また／又はブロック図の形式で図示する場合がある。
【００１４】
[0053]  また、以下に記載する詳細な説明の一部は、コンピュータにおけるオペレーションをアルゴリズム的及び象徴的に表現する観点から示されている。これらアルゴリズム的記載及び象徴的表現は、データ処理の分野における当業者が自身の技術の要点を他の当業者に最も効果的に伝達する際に使用される手段である。アルゴリズムとは、所望の最終状態又は結果につながる一連の定義されたステップである。本発明中、実施されるステップにおいては、明確な結果を得るべく具体的数量を物理的に操作することが必要となる。通常（必ずしもではないが）、当該数量は、記憶、転送、結合、比較、及びその他の操作が可能な、電気的又は磁気的信号又は指示の形態をとる。しばしば、上記信号は、主として一般的な用法であるという理由により、ビット、数値、エレメント、記号、文字、用語、数字、指示、等と呼ぶことが便利である。ただし、上記用語及びそれに類似する用語はすべて、適切な物理的数量と関連付けされるものであって、それら数量に適用される利便的なラベルでしかない旨留意すべきである。特に明記しない限り、以下の記載からも明らかなように、本明細書全体において、「処理」「算出」「計算」「決定」「表示」等の表現を使用する記載は、コンピュータシステムのレジスタ及びメモリ内の物理的（電子的）数量として表わされるデータを操作しかつそれをコンピュータシステムのメモリ又はレジスタ又は他の情報記憶、送信又は表示デバイス内の物理的数量として上記同様に表現される他のデータに変換するコンピュータシステム又は他の情報処理装置の動作又は処理を含むものとする。
【００１５】
[0054]  本発明の例示的実施形態は、以下に詳述するように、リモートコピー環境における動的ページ再割当てストレージシステム内のアプリケーション及び階層構成を管理するための装置、方法、及びコンピュータプログラムを提供する。
【００１６】
[0055]  第１の実施形態
【００１７】
[0056]  １．システム構成
【００１８】
[0057]  図１は、本発明の第１の実施形態に係る、本発明の方法及び装置が適用されうるシステムのハードウェア構成を示している。データを記憶するストレージサブシステム１００は、ストレージネットワークによってホストコンピュータ３００に接続されている。ストレージ管理端末４００は、ストレージサブシステム１００に接続されている。
【００１９】
[0058]  ストレージサブシステム１００はストレージコントローラ１１０を有し、ストレージコントローラ１１０は、ＣＰＵ１１１、メモリ１１２、ストレージインターフェース１１３、ローカルネットワークインターフェース１１４、及び、複数のディスクインターフェース１１５を有し、ディスクインターフェース１１５はＳＡＳ  Ｉ／Ｆ及びＳＡＴＡ  Ｉ／Ｆを有してもよい。ＣＰＵ１１１は、ストレージサブシステム１００を制御するとともに、メモリ１１２に記憶されているプログラムやテーブルを読む。ストレージインターフェース１１３は、ストレージネットワーク２００を介してホストコンピュータ３００に接続している。ローカルネットワークインターフェース１１４は、ストレージ管理端末４００に接続している。ディスクインターフェース１１５（１１５ａ、１１５ｂ、等）は、複数のディスク１２１に接続している。ディスクユニット１２０はデータを記憶するための複数のディスク１２１（１２１ａ、１２１ｂ、等）を有し、これらディスクはＳＡＳ  ＳＳＤ（フラッシュメモリ）、ＳＡＳ  ＨＤＤ、及びＳＡＴＡ  ＨＤＤを有してもよい。
【００２０】
[0059]  ホストコンピュータ３００は、ストレージネットワーク２００を介してＩ／Ｏ要求をストレージサブシステム１００へ送信するとともに、ストレージネットワーク２００を介してストレージサブシステム１００とデータを送受する。
【００２１】
[0060]  ストレージ管理端末４００は、ストレージサブシステム１００の使用可能性／信頼性情報を提供する。ストレージ管理端末４００はＣＰＵ４１１を有し、ＣＰＵ４１１はメモリ４１２に記憶されているプログラムやテーブルを読む。ローカルネットワークインターフェース４１４はストレージサブシステム１００に接続している。ディスプレイ４１９は、ストレージサブシステム１００の使用可能性／信頼性情報を表示する。
【００２２】
[0061]  図２は、第１の実施形態に係る、図１のストレージサブシステム１００内のメモリ１１２の一例を示している。ストレージ管理テーブル１１２−１１は、ディスク１２１及びそれらディスクのグループの物理構造管理のためのＲＡＩＤグループ管理テーブル１１２−１１−１（図５）と、ボリューム構成管理のための仮想ボリューム管理テーブル１１２−１１−２（図６）と、ディスク１２１のディスク構成管理のためのディスク管理テーブル１１２−１１−３（図３）と、ディスク情報データベースを提供するためのディスク情報テーブル１１２−１１−４（図４）と、各容量プール階層が階層構成規則（図７の構成規則１１２−１１−５−５を参照）に従って編成されている、容量プール階層管理のための階層管理テーブル１１２−１１−５（図７）と、仮想ボリュームのパーティションから容量プールのパーティションへの参照管理のための仮想ボリュームページ管理テーブル１１２−１１−６（図８）と、容量プールのリソース管理及び容量プールページから仮想ボリュームページへの参照管理のための容量プールチャンク管理テーブル１１２−１１−７（図９）と、容量プールチャンクのリソース管理のための容量プールページ管理テーブル１１２−１１−８（図１０）と、アプリケーションのアプリケーションＩＤに関する階層番号を管理するためのアプリケーション階層管理テーブル１１２−１１−９（図１１）と、を有する。メモリ１１２はさらに、メモリ１１２に記憶されているキャッシュデータエリア１１２−３０の管理及びＬＲＵ／ＭＲＵ管理のためのキャッシュ管理テーブル１１２−１４（図１２）を有する。
【００２３】
[0062]  ボリュームＩ／Ｏ制御１１２−２１は、ライトＩ／Ｏ制御１１２−２１−１（図１８）及びリードＩ／Ｏ制御１１２−２１−２（図１９）を含む。ライトＩ／Ｏ制御１１２−２１−１は、ライトＩ／Ｏ要求によって実行され、ライトデータを受け取って、チャネルインターフェース１１３を介してキャッシュデータエリア１１２−３０に記憶する。リードＩ／Ｏ制御１１２−２１−２はリードＩ／Ｏ要求によって実行され、チャネルインターフェース１１３を介してキャッシュデータエリア１１２−３０からリードデータを送信する。物理ディスク制御１１２−２２は、ディスク１２１からキャッシュデータエリア１１２−３０へデータを転送するためのステージング制御１１２−２２−１（図２０）と、キャッシュデータエリア１１２−３０からディスク１２１へデータを転送するためのデステージング制御１１２−２２−２（図２１）とを含む。フラッシュ制御１１２−２３（図２２）は、キャッシュデータエリア１１２−３０内のダーティデータをディスク１２１へ定期的にフラッシュする。
【００２４】
[0063]  ボリューム構成制御１１２−２５は、新たな仮想ボリュームをプロビジョニングするためのボリュームプロビジョニング制御１１２−２５−１（図２４）と、ボリュームの構成を変更するためのボリューム階層制御１１２−２５−２（図２５）とを含む。プール構成制御１１２−２６は、階層規則が変更される際に階層構成を変更するための階層構成制御１１２−２６−２（図２６）と、下記の階層構成に従って容量プールチャンクを階層に登録するための階層登録制御１１２−２６−３（図２７）とを含む。ページ制御１１２−２７は、新たな容量プールページを仮想ボリュームページに割り当てる又は仮想ページがリンクする容量プールページを検索するためのページマッピング制御１１２−２７−１（図２８）と、容量プールページを別の容量プールページにコピーするとともに仮想ボリュームページと容量プールページとの間のリンクを変更するためのページ移動制御１１２−２７−２（図２９）とを含む。キャッシュ制御１１２−２８（図２３）は、キャッシュデータエリア１１２−３０内のキャッシュ済みデータを見つけ、キャッシュデータエリア１１２−３０内の新たなキャッシュエリアを割り当てる。カーネル１１２−４０は、走行中のプログラムのスケジュールを制御する。キャッシュデータエリア１１２−３０にはリード及びライトキャッシュデータが記憶されており、同キャッシュデータエリア１１２−３０は複数のキャッシュスロットに分割されている。
【００２５】
[0064]  ２．テーブル構造
【００２６】
[0065]  図３は、ディスク管理テーブル１１２−１１−３の一例を示している。ディスク管理テーブル１１２−１１−３は、ディスク１２１のＩＤを示すディスク番号１１２−１１−３−１の列と、ディスク１２１が属するＲＡＩＤグループのＩＤを示すＲＡＩＤグループ番号１１２−１１−３−２の列と、ディスク１２１の型式番号を示す型式情報１１２−１１−３−３の列、とを有する。
【００２７】
[0066]  図４は、ディスク情報テーブル１１２−１１−４の一例を示している。ディスク情報テーブル１１２−１１−４は、ディスクモデルの型式番号を示す型式情報１１２−１１−４−１の列と、当該ディスク型式のデータ記憶方式（例、ＨＤＤ又はＳＳＤ）を示すディスク種別情報１１２−１１−４−２の列と、ＨＤＤの毎分回転数（ＲＰＭ）情報を示す（型式がＨＤＤでない場合は、この項目に「−」が格納される）ＲＰＭ情報１１２−１１−４−３の列と、ＳＳＤのセル種別情報を示すセル情報１１２−１１−４−４の列（型式がＳＳＤでない場合は、この項目に「−」が格納される）と、当該ディスク型式のインターフェース種別を示すインターフェース情報１１２−１１−４−５の列と、当該ディスク型式のプラッタの容量を示すプラッタ容量情報１１２−１１−４−６の列（モデルがＨＤＤでない場合、この項目には「−」が格納される）と、当該ディスク型式の容量を示す物理容量情報１１２−１１−４−７の列、とを有する。
【００２８】
[0067]  図５は、ＲＡＩＤグループ管理テーブル１１２−１１−１の一例を示している。ＲＡＩＤグループ管理テーブル１２１−１１−１は、ＲＡＩＤグループのＩＤを示すＲＡＩＤグループ番号１１２−１１−１−１の列と、当該ＲＡＩＤグループの構造を示すＲＡＩＤレベル１１２−１１−１−２の列、とを有する。「Ｎ（＝１０、５、６等）」という記載は「ＲＡＩＤレベルがＮである。」ことを意味している。「Ｎ／Ａ」という記載はＲＡＩＤグループが存在しないことを意味している。ＲＡＩＤグループ管理テーブル１１２−１１−１はさらに、当該ＲＡＩＤグループに属するディスク１２１のＩＤリストを示すディスク番号１１２−１１−１−３の列と、冗長エリアを除いた当該ＲＡＩＤグループの全容量を示すＲＡＩＤグループ容量１１２−１１−１−４の列と、当該ＲＡＩＤグループが属する階層番号を示す階層番号１１２−１１−１−５の列と、当該ＲＡＩＤグループへのアクセスカウンタを示すアクセスカウンタ１１２−１１−１−６の列と、未使用のシン・プロビジョニングチャンクを管理するためのパラメータを示す空きチャンクキューインデックス１１２−１１−１−７の列と、使用されているシン・プロビジョニングチャンクを管理するためのパラメータを示す使用チャンクキューインデックス１１２−１１−１−８の列、とを有する。
【００２９】
[0068]  図６は、仮想ボリューム管理テーブル１１２−１１−２の一例を示している。仮想ボリューム管理テーブル１１２−１１−２は、ボリュームのＩＤを示すボリューム番号１１２−１１−２−１の列と、当該ボリュームの容量を示すボリューム容量１１２−１１−２−２の列（「Ｎ／Ａ」という記載はボリュームが存在しないことを意味する）と、当該ボリュームが現在使用しているＲＡＩＤグループのＩＤを示す使用中ＲＡＩＤグループ番号１１２−１１−２−３の列と、当該仮想ボリュームが現在使用しているチャンクのＩＤを示す使用中チャンク番号１１２−１１−２−５の列と、当該仮想ボリュームに割り当てられる容量プールページの階層のＩＤを示す階層番号１１２−１１−２−６の列、とを有する。
【００３０】
[0069]  図７は、階層管理テーブル１１２−１１−５の一例を示している。階層管理テーブル１１２−１１−５は、ボリュームのＩＤを示す階層番号１１２−１１−５−１の列と、当該階層内の複数のＲＡＩＤグループの全容量を示す全容量１１２−１１−５−２の列と、当該階層の使用されている容量プールページの合計を示す使用容量１１２−１１−５−３の列と、当該階層内のＲＡＩＤグループのＩＤリストを示すＲＡＩＤグループリスト１１２−１１−５−４の列と、当該階層をグループ化するための構成規則を示す構成規則１１２−１１−５−５の列と、を有する。当該階層内のＲＡＩＤグループは構成規則に従っている。この構成規則は、ディスク種別、ディスクインターフェース種別、性能、ＲＡＩＤレベル、ディスク数、等の要因に基づくものである。
【００３１】
[0070]  図８は、仮想ボリュームページ管理テーブル１１２−１１−６の一例を示している。仮想ボリュームページ管理テーブル１１２−１１−６は、仮想ボリュームページの先頭アドレスを示す仮想ボリュームページインデックス１１２−１１−６−１の列と、当該仮想ボリュームページが属するＲＡＩＤグループのＩＤを示すＲＡＩＤグループ番号１１２−１１−６−２の列（「Ｎ／Ａ」という記載は、当該仮想ボリュームページに容量プールページが割り当てられていないことを意味する）と、当該仮想ボリュームページが参照する容量プールページの先頭アドレスを示す容量プールページインデックス１１２−１１−６−３の列と、当該仮想ボリュームページ内のディスクに対するアクセスカウンタを示すＩ／Ｏカウンタ１１２−１１−６−４の列と、当該アクセスカウントの開始時刻を示すカウンタクリア時刻１１２−１１−６−５の列と、当該ページにアクセスするアプリケーションのＩＤを示すページ所有アプリケーションＩＤ１１２−１１−６−６の列、とを有する。
【００３２】
[0071]  図９は、容量プールチャンク管理テーブル１１２−１１−７の一例を示している。容量プールチャンク管理テーブル１１２−１１−７は、容量プールチャンクのＩＤを示す容量プールチャンク番号１１２−１１−７−１の列と、当該容量プールチャンクを参照する仮想ボリュームのＩＤを示す仮想ボリューム番号１１２−１１−７−２の列と、当該容量プールチャンクの使用容量を示す使用容量１１２−１１−７−３の列と、エリアの使用後に削除される容量プールチャンクの削除容量を示す削除容量１１２−１１−７−４の列と、キュー管理のために前回のチャンクポインタを示す前チャンク番号１１２−１１−７−５の列（「ＮＵＬＬ」という記載は、キューの先頭を意味する）、キュー管理のために次回のチャンクポインタを示す次チャンク番号１１２−１１−７−６の列（「ＮＵＬＬ」という記載はキューの末端を意味する）の列と、を有する。
【００３３】
[0072]  図１０は、容量プールページ管理テーブル１１２−１１−８の一例を示している。容量プールページ管理テーブル１１２−１１−８は、容量プールページのＩＤを示す容量プールページインデックス１１２−１１−８−１の列と、当該容量プールページを参照する仮想ボリュームページのＩＤを示す仮想ボリュームページ番号１１２−１１−８−２の列、とを有する。「ＮＵＬＬ」という記載は、容量プールページが未使用であることを意味する。
【００３４】
[0073]  図１１は、アプリケーション階層管理テーブル１１２−１１−９の一例を示している。アプリケーション階層管理テーブル１１２−１１−９は、アプリケーションのＩＤを示すアプリケーションＩＤ１１２−１１９−１の列と、当該アプリケーションが記憶される階層の番号データを示す階層番号１１２−１１−９−２の列、とを有する。
【００３５】
[0074]  図１２は、キャッシュ管理テーブル１１２−１４の一例を示している。キャッシュ管理テーブル１１２−１４は、キャッシュデータエリア１１２−３０内のキャッシュスロットのＩＤ示すインデックスとしてのキャッシュスロット番号１１２−１４−１の列と、当該キャッシュスロットがデータを記憶するディスク１２１等のボリュームのＩＤを示すボリューム番号１１２−１４−２の列と、当該キャッシュスロットがデータを記憶するディスクアドレス（例、ＬＢＡ）を示すディスクアドレス１１２−１４−３の列と、キュー管理のための次キャッシュスロット番号を示す次スロットポインタ１１２−１４−４の列（「ＮＵＬＬ」という記載はキューの末端を意味する）と、当該キャッシュスロットに対するＩ／Ｏカウンタを示すＩ／Ｏカウンタ１１２−１４−７の列と、アプリケーション（存在する場合）のＩＤを含むアプリケーションＩＤ１１２−１４−８の列、とを有する。キュー種類情報１１２−１４−５の列には、キャッシュスロットキューの種類が示される。「空き」という記載は、未使用のキャッシュスロットを有するキューを意味する。「クリーン」という記載は、ディスクスロットと同じデータを記憶するキャッシュスロットを有するキューを意味する。「ダーティ」という記載は、ディスクスロット内のデータと異なるデータを記憶するキャッシュスロットを有するキューを意味し、ストレージコントローラ１１０が今後、キャッシュスロットデータをディスクスロットにフラッシュする必要があることを示す。キューインデックスポインタ１１２−１４−６の列は、キャッシュスロットキューのインデックスが示される。
【００３６】
[0075]  ３．論理構造
【００３７】
[0076]  図１３は、第１の実施形態に係る、ストレージサブシステム１００の論理ストレージ構成の概要を示している。ストレージサブシステム１００は、ホストコンピュータ３００からアクセス可能な仮想ボリューム１４１を有する。各仮想ボリューム１４１は、複数の仮想ボリュームページ１４１−２を有する。各仮想ボリュームページ１４１−２は、容量プールの容量プールページ１２１−２を参照する。容量プールは、複数のＲＡＩＤグループ１２１−４を有する。各ＲＡＩＤグループ１２１−４は、複数のディスク１２１からなる一つのグループを有する。ストレージサブシステム１００は、数種類のＲＡＩＤグループ１２１−４ａ、１２１−４ｂ、１２１−４ｃを有し、これらＲＡＩＤグループは、ＲＡＩＤグループの種別に基づいて、階層（階層１、階層２、階層３）にグループ分け又は分類される。これらの階層は容量プールに属している。これと同様に、仮想ボリューム１４１も階層によって識別される。複数のアプリケーション３０１（３０１ａ、３０１ｂ等）は、ホストコンピュータ３００上で走行する。各アプリケーション３０１はアプリケーションＩＤ、例えば、ＩＰアドレス、ＷＷＰＮ（World Wide Port Number）等を有する。このＩＤは、アプリケーション３０１が別のホストコンピュータに移動した場合でも継承（つまり、保持）される。各アプリケーション３０１は、ある階層のある仮想ボリューム１４１にアクセスする。
【００３８】
[0077]  図１４は、キャッシュエリア１１２−３０の論理構造の一例を示している。矢印線には、オブジェクトのポインタによる参照を示す点線と、オブジェクトの計算による参照を示す実線とがある。キャッシュデータエリア１１２−３０は、複数のキャッシュスロット１１２−３０−１に分割されている。各キャッシュスロット１１２−３０−１のサイズは、容量プールストライプ１２１−３のサイズ、及び、仮想ボリュームスロット１４１−３のサイズと等しい。キャッシュ管理テーブル１１２−１８とキャッシュスロット１１２−３０−１は、１対１の関係にある。キャッシュ管理テーブル１１２−１８は、仮想ボリュームスロット１４１−３を参照し、ＲＡＩＤグループ管理テーブル１１２−１１−１を使用することで容量プールストライプ１２１−３を分解することができる。
【００３９】
[0078]  図１５は、第１の実施形態に係る、容量プールチャンク１２１−１の論理構造の一例を示している。矢印線には、オブジェクのポインタによる参照を示す実線と、オブジェクトの計算による参照を示す点線とがある。階層については、階層管理テーブル１１２−１１−５がＲＡＩＤグループ管理テーブル１１２−１１−１を参照する。ＲＡＩＤグループについては、ＲＡＩＤグループ管理テーブル１１２−１１−１が、階層管理テーブル１１２−１１−５を参照し、属するディスクのディスク管理テーブル１１２−１１−３を参照し、また、空きチャンクキュー１１２−１５−０３及び使用チャンクキュー１１２−１５−０４によって容量プールチャンク管理テーブル１１２−１１−７を参照する。容量プールチャンク１２１−１については、容量プールチャンク１２１−１と容量プールチャンク管理テーブル１１２−１１−７との関係が固定される。
【００４０】
[0079]  図１６は、容量プールに対するテーブル参照構造の一例を示している。矢印線には、オブジェクトのポインタによる参照を示す実線と、オブジェクトの計算による参照を示す点線とがある。仮想ボリューム１４１については、仮想ボリューム１４１と仮想ボリューム管理テーブル１１２−１１−２が１対１の関係にある。仮想ボリューム管理テーブル１１２−１１−２は、現在使用中の容量プールページ１２１−２を参照する。仮想ボリュームページ１４１−２については、仮想ボリュームページ１４１−２と仮想ボリュームページ管理テーブル１１２−１１−６が１対１の関係にある。仮想ボリュームページ管理テーブル１１２−１１−６は、ページが割り当てられる場合、容量プールページ１２１−２のスライスを参照する。ＲＡＩＤグループについては、ＲＡＩＤグループとＲＡＩＤグループ管理テーブル１１２−１１−１が１対１の関係にある。ＲＡＩＤグループ管理テーブル１１２−１１−１は使用済み及び未使用の容量プールチャンク１１２−１を参照する。
【００４１】
[0080]  図１７は、仮想ボリューム１４１に対するテーブル参照構造の一例を示している。矢印線には、オブジェクトのポインタによる参照を示す実線と、オブジェクトの計算による参照を示す点線とがある。容量プールチャンク１２１−１については、容量プールチャンク１２１−１と容量プールチャンク管理テーブル１１２−１１−７が１対１の関係にある。容量プールチャンク管理テーブル１１２−１１−７は、仮想ボリューム１４１を参照する。容量プールページ１２１−２については、容量プールページ管理テーブル１１２−１１−８が仮想ボリュームページ１４１−２を参照する。
【００４２】
[0081]  ４．処理フロー図
【００４３】
[0082]  図１８は、第１の実施形態に係る、ライトＩ／Ｏ制御１１２−２１−１の処理フローの一例を示している。このプログラムは、ステップ１１２−２１−１−１からスタートする。ステップ１１２−２１−１−２において、本プログラムはキャッシュ制御１１２−２８を呼び出して、キャッシュスロット１１２−３０−１を検索する。ステップ１１２−２１−１−３において、本プログラムは、ホストコンピュータ３００からライトＩ／Ｏデータを受け取り、前記キャッシュスロット１１２−３０−１に記憶する。本プログラムは、ステップ１１２−２１−１−５で終了する。
【００４４】
[0083]  図１９は、リードＩ／Ｏ制御１１２−２１−２の処理フローの一例を示している。本プログラムは、ステップ１１２−２１−２−１からスタートする。ステップ１１２−２１−２−２において、本プログラムは、キャッシュ制御１１２−２８を呼び出して、キャッシュスロット１１２−３０−１を検索する。ステップ１１２−２１−２−３において、本プログラムは、前記キャッシュスロット１１２−３０−１の状態をチェックし、既にデータが記憶されているか否かを判断する。ステップ１１２−２１−２−において、本プログラムはステージング制御１１２−２２−１を呼び出す（図２０参照）。ステップ１１２−２１−２−５において、本プログラムは、キャッシュスロット１１２−３０−１内のデータをホストコンピュータ３００へ転送する。本プログラムはステップ１１２−２１−２−６で終了する。
【００４５】
[0084]  図２０は、ステージング制御１１２−２２−１の処理フローの一例を示している。本プログラムは、ステップ１１２−２２−１−１からスタートする。ステップ１１２−２２−１−２において、本プログラムはページマッピング制御１１２−２７−１を呼び出して、仮想ボリュームページに対応する容量プールページ１２１−２を検索する。ステップ１１２−２２−１−３において、本プログラムは、ディスク１２１内のスロットからデータを読み出し、同データをキャッシュデータエリア１１２−３０に記憶する。ステップ１１２−２２−１−４において、本プログラムは、データ転送が終了するのを待つ。本プログラムはステップ１１２−２２−１−５で終了する。
【００４６】
[0085]  図２１は、デステージング制御１１２−２２−２の処理フローの一例を示している。本プログラムはステップ１１２−２２−２−１からスタートする。ステップ１１２−２２−２−２において、本プログラムは、ページマッピング制御１１２−２７−１を呼び出して、仮想ボリュームページに対応する容量プールページ１２１−２を検索する又は仮想ボリュームページに容量プールページ１２１−２を割り当てる。ステップ１１２−２２−２−３において、本プログラムは、キャッシュデータエリア１１２−３０内のスロットからデータを読み出し、同データをディスク１２１に記憶する。ステップ１１２−２２−２−４において、本プログラムはデータ転送が終了するのを待つ。本プログラムはステップ１１２−２２−２−５で終了する。
【００４７】
[0086]  図２２は、フラッシュ制御１１２−２３の処理フローの一例を示している。本プログラムは、ステップ１１２−２３−１からスタートする。ステップ１１２−２３−２において、本プログラムはキャッシュ管理テーブル１１２−１４の「ダーティキュー」を読み出す。ステップ１１２−２３−３において、本プログラムデステージング制御１１２−２２−２を呼び出して、発見したダーティキャッシュスロットをデステージする。ダーティキャッシュスロットが見つからない場合、本プログラムは、ステップ１１２−２３−３をスキップする。本プログラムはステップ１１２−２３−４で終了する。
【００４８】
[0087]  図２３は、キャッシュ制御１１２−２８の処理フローの一例を示している。本プログラムはステップ１１２−２８−１からスタートする。ステップ１１２−２８−２において、本プログラムは、指定されたアドレスのキャッシュスロットを検索する。キャッシュスロットが見つかった場合、本プログラムはステップ１１２−２８−６へ進む。見つからなかった場合、本プログラムはステップ１１２−２８−３へ進む。ステップ１１２−２８−３において、本プログラムは、空きキャッシュスロットが残っているか否かを確認する。空きキャッシュスロットがある場合、ステップ１１２−２８−４において、本プログラムは、指定されたアドレスに対して、空きキューから新たなキャッシュスロットを取得する。空きキャッシュスロットがない場合、ステップ１１２−２８−５において、本プログラムはクリーンキャッシュスロットを選択し、当該クリーンキャッシュスロットの仮想ボリュームページのＩ／Ｏカウンタを１つ増やし、当該クリーンスロットをパージし、指定されたアドレスに当該キャッシュスロットを割り当てる。最後に、ステップ１１２−２８−６において、本プログラムは、Ｉ／Ｏカウンタ又はアクセスカウンタ１１２−１４−７を１つ増やす。本プログラムはステップ１１２−２８−７で終了する。
【００４９】
[0088]  図２４は、ボリュームプロビジョニング制御１１２−２５−１の処理フローの一例を示している。本プログラムはステップ１１２−２５−１−１からスタートする。ステップ１１２−２５−１−２において、本プログラムは、仮想ボリューム情報を仮想ボリューム管理テーブル１１２−１１−２に登録する。仮想ボリューム情報には、ボリューム番号、ボリューム容量、及び、ボリューム階層番号が含まれる。本プログラムはステップ１１２−２５−１−３で終了する。
【００５０】
[0089]  図２５は、ボリューム階層制御１１２−２５−２の処理フローの一例を示している。本プログラムはステップ１１２−２５−２−１からスタートする。ステップ１１２−２５−２−２において、本プログラムは、仮想ボリューム管理テーブル１１２−１１−２内の仮想ボリューム階層情報を変更する。本プログラムはステップ１１２−２５−２−３で終了する。
【００５１】
[0090]  図２６は、階層構成制御１１２−２６−２の処理フローの一例を示している。本プログラムは、ステップ１１２−２６−２−１からスタートする。ステップ１１２−２６−２−２において、本プログラムは階層規則を階層管理テーブル１１２−１１−５に登録して階層規則構成を設定する。ステップ１１２−２６−２−３において、本プログラムは容量プール内のＲＡＩＤグループを選択する。階層構成を再登録するステップ１１２−２６−２−４において、本プログラムは階層登録制御１１２−２６−３（図２７参照）を呼び出して、登録された階層規則に従ってＲＡＩＤグループの階層を変更する。ステップ１１２−２６−２−５において、本プログラムは、すべてのＲＡＩＤグループが処理されるまでステップ１１２−２６−２−３からステップ１１２−２６−２−５の工程を繰り返す。本プログラムはステップ１１２−２６−２−６で終了する。
【００５２】
[0091]  図２７は、階層登録制御１１２−２６−３の処理フローの一例を示している。本プログラムはステップ１１２−２６−３−１からスタートする。ステップ１１２−２６−３−２において、本プログラムは、ディスク管理テーブル１１２−１１−３及びディスク情報テーブル１１２−１１−４からＲＡＩＤグループのディスク情報を取得する。ステップ１１２−２６−３−３において、本プログラムは、階層管理テーブル１１２−１１−５内の階層規則をチェックし、階層規則を一致させることにより、ＲＡＩＤグループに適合する階層を選択する。容量プールチャンクを階層に登録するステップ１１２−２６−３−４において、本プログラムは、階層情報をＲＡＩＤグループ管理テーブル１１２−１１−１に登録する。本プログラムはステップ１１２−２６−３−５で終了する。
【００５３】
[0092]  図２８は、ページマッピング制御１１２−２７−１の処理フローの一例を示している。本プログラムはステップ１１２−２７−１−１からスタートする。ステップ１１２−２７−１−２において、本プログラムは、指定された仮想ページに、容量プールページ１２１−２が既に割り当てられているか否かをチェックする。階層構成に適合する階層を選択するステップ１１２−２７−１−３において、本プログラムは、仮想ボリュームページに対して必要な階層を選択する。ステップ１１２−２７−１−４において、本プログラムは、選択された階層が空き又は未使用の容量プールページを有するか否かをチェックして判断する。空きページがある場合、本プログラムは、ステップ１１２−２７−１−６において、選択された階層内のＲＡＩＤグループから新たな容量プールページを仮想ボリュームページに割り当て、当該ページにライトＩ／Ｏを発行したアプリケーションのアプリケーションＩＤを記憶する。空きページがない場合、本プログラムは、ステップ１１２−２７−１−６へ進む前に、まずステップ１１２−２７−１−５において、別の（容量が残っている）階層を選択する。ステップ１１２−２７−１−７において、本プログラムは割り当てられた又は見つかった容量プールページ情報を返信する。本プログラムはステップ１１２−２７−１−８で終了する。
【００５４】
[0093]  図２９は、ページ移動制御１１２−２７−２の処理フローの一例を示している。本プログラムはステップ１１２−２７−２−１からスタートする。ステップ１１２−２７−２−２において、本プログラムは容量プールページ１２１−２を選択し、階層番号を含む情報を取得する。ステップ１１２−２７−２−３において、本プログラムは、当該容量プールページが既に使用されているか否かをチェックして判断する。使用されていない場合、本プログラムはステップ１１２−２７−２−２に戻る。当該容量プールページ１２１−２が使用されている場合、本プログラムは、ステップ１１２−２７−２−４において、仮想ボリュームページの階層構成を参照することにより、当該容量プールページに対応する仮想ボリュームページ情報を取得する。ステップ１１２−２７−２−５において、本プログラムは、容量プールページ１２１−２が、階層構成に適合する正しい（構成された）階層に属しているか否かをチェックして判断する。属している場合は、本プログラムはステップ１１２−２７−２−２に戻る。そうでない場合は、本プログラムは、ステップ１１２−２７−２−６において、階層構成に適合する正しい階層に属するＲＡＩＤグループから新たな容量プールページを割り当てる。ステップ１１２−２７−２−７において、本プログラムは、現在の容量プールページから新たに割り当てられた容量プールページへデータをコピーする。ステップ１１２−２７−２−８において、本プログラムは、上記コピー動作中に仮想ボリュームページに対してライトＩ／Ｏが発生したか否かをチェックする。発生していれば、本プログラムはステップ１１２−２７−２−２へ戻る。発生していなければ、本プログラムは、ステップ１１２−２７−２−９において、新たに割り当てられたプールページについて、仮想ボリュームページと容量プールページとの間のリンク又はマッピングを変更する。
【００５５】
[0094]  ５．フレーム構造
【００５６】
[0095]  図３０は、第１の実施形態に係る、ホストコンピュータ３００からのライトＩ／Ｏフレーム構造の一例を示している。図３０は「ｉＳＣＳＩ」フレーム構造を示しており、同構造において、フレームＡ１は、ＩＰ、ＴＣＰ、及びＳＣＳＩプロトコルを含むｉＳＣＳＩフレームである。アプリケーションＩＤＡ１−１はライトＩ／Ｏを発行するアプリケーションのＩＤである。このＩＤは、本実施形態では、アプリケーションに設定されるＩＰアドレスである。
【００５７】
[0096]  ６．シーケンス
【００５８】
[0097]  図３１は、第１の実施形態に係る、アプリケーション終了及び階層変更のシーケンスの一例を示している。Ｍ１０００において、ＣＰＵ１１１は、仮想ボリュームページに使用されている階層規則に適合していない階層内の容量プールページを見つけ、キャッシュエリア１１２−３０を使用して、その容量プールページを新たに割り当てられた容量プールページへコピーする。Ｍ１００１において、キャッシュエリア１１２−３０はディスク１２１ｃからデータを受け取り、同データをディスク１２１ｂへ転送する。Ｍ１００２において、ディスク１２１は、データをキャッシュエリア１１２−３０へ送信する。Ｍ１００３において、ディスク１２１はキャッシュエリア１１２−３０から受け取ったデータを記憶する。
【００５９】
[0098]  Ｒ２０００において、ホストコンピュータ３００はあるアプリケーションを使用中であり、システム管理端末５００を介して管理者から終了要求を受け取る。Ｒ２００１において、管理者は、システム管理端末５００を介してアプリケーションの終了を要求する。Ｒ２００２において、システム管理端末５００は終了要求をホストコンピュータ３００へ送信する。システム管理端末５００は、ストレージサブシステム１００に対して、アプリケーションデータが記憶されているエリアについての階層変更要求を送信する。Ｒ２００３において、ＣＰＵ１１１は、指定された仮想ボリューム内の指定されたエリアの階層を変更する。
【００６０】
[0099]  第２の実施形態
【００６１】
[0100]  本発明の第２の実施形態では、上記と異なるフレーム構造が使用される。第１の実施形態との相違点についてのみ記載する。
【００６２】
[0101]  図３２は、第２の実施形態に係る、ホストコンピュータからのライトＩ／Ｏフレーム構造を示している。図３２は「ＦＣ（Fibre Channel）」フレーム構造を示しており、同構造において、フレームＡ１はＦＣフレームである。アプリケーションＩＤＡ２−１は、上記ライトＩ／Ｏを発行するアプリケーションのＩＤである。このＩＤはＦＣＩＤである。ストレージサブシステムは、ストレージネットワーク３００内のスイッチデバイスに要求することにより、上記ＦＣＩＤを使用してアプリケーションのＷＷＰＮ（World Wide Port Number）を検索することができる。
【００６３】
[0102]  第３の実施形態
【００６４】
[0103]  本発明の第３の実施形態では、上記と異なるフレーム構造が使用される。第２の実施形態との相違点についてのみ記載する。
【００６５】
[0104]  図３３は、第３の実施形態に係る、ホストコンピュータからのライトＩ／Ｏフレーム構造の一例を示している。図３２は「ＦＣｏＥ」（Fibre Channel over Ethernet（登録商標））」フレーム構造を示しており、同構造において、フレームＡ３はＦＣｏＥフレームである。アプリケーションＩＤＡ３−１は、ライトＩ／Ｏを発行するアプリケーションのＩＤである。このＩＤはＦＣＩＤである。ストレージサブシステムは、ストレージネットワーク３００内のスイッチデバイスに要求することにより、上記ＦＣＩＤを使用してアプリケーションのＷＷＰＮ（World Wide Port Number）を検索することができる。
【００６６】
[0105]  第４の実施形態
【００６７】
[0106]  本発明の第４の実施形態は、上記と異なるシステム構成、異なる論理構造、異なるプロセス、及び異なるシーケンスを有する。第１の実施形態との相違点についてのみ記載する。本実施形態では、システムは同期リモートコピー機能を有する。しかしながら、非同期リモートコピー機能も有用である。
【００６８】
[0107]  １．システム構成
【００６９】
[0108]  図３４は、本発明の第４の実施形態に係る、本発明の方法及び装置が適用可能なシステムのハードウェア構成を示している。ホストコンピュータ３００ｍ（図１のホストコンピュータ３００と同じ）は、ストレージネットワーク２００ｍを介して、ストレージサブシステム１００ｍに接続されている。別のホストコンピュータ３００ｒ（図１のホストコンピュータ３００と同じ）は、別のストレージネットワーク２００ｒを介して、別のストレージサブシステム１００ｒに接続されている。ストレージネットワーク２００ｍ及び２００ｒは、それぞれ、図１のストレージネットワーク２００と同一である。ストレージサブシステム１００ｍは、図１のストレージサブシステム１００に類似しており、ストレージサブシステム１００ｒに接続するためのストレージインターフェース１１６を有する。ストレージサブシステム１００ｒは、図１のストレージサブシステム１００に類似しており、ストレージサブシステム１００ｍに接続するためのストレージインターフェース１１６を有する。
【００７０】
[0109]  図３５は、第４の実施形態に係る、図３４の各ストレージサブシステム１００ｍ又は１００ｒ内のメモリ１１２の一例を示している。図２と比較した場合、図３５は異なるライトＩ／Ｏ制御１１２−２１−１´を有し、さらに、リモートコピー管理テーブル１１２−１９及びリモートコピー制御１１２−２９を含んでいる。リモートコピー管理テーブル１１２−１９は、リモートコピーペア管理テーブル１１２−１９−１を含んでいる。ライトＩ／Ｏ制御１１２−２１−１´はライトＩ／Ｏ要求によって実行され、新たなリモートコピー関連ステップを有する。リモートコピー制御１１２−２９は、ライトＩ／Ｏレプリケーション及び転送制御についてのリモートコピーＩ／Ｏ制御１１２−２９−１と、仮想ボリューム及び仮想ボリュームページ構成転送制御についての構成転送制御１１２−２９−２を有する。
【００７１】
[0110]  ２．論理構造
【００７２】
[0111]  図３６は、リモートコピーペア管理テーブル１１２−１９−１の一例を示している。同テーブル１１２−１９−１は、ボリュームのＩＤを示すボリューム番号１１２−１９−１−１の列と、ボリュームペア状態を示すペア状態１１２−１９−１−２の列と、を有する。「ペア」とは、二つのストレージサブシステム間の２つのボリュームが同一のデータを有することを意味する。「ＳＭＰＬ」とは、当該ボリュームが別のボリュームとペアを形成しないことを意味する。「Ｎ／Ａ」とは、当該ボリュームが存在しないことを意味する。リモートコピーペア管理テーブル１１２−１９−１はさらに、ボリューム属性１１２−１９−３の列を有する。「Ｍ−Ｖｏｌ」は複製元ボリュームを意味する。当該ボリュームは、ライトＩ／Ｏを受け取ると、そのライトＩ／Ｏをペア相手のボリュームに対して複製する。「Ｒ−Ｖｏｌ」は複製先ボリュームを意味する。「Ｎ／Ａ」は、当該ボリュームが存在しない又は別のボリュームとペアを形成しないことを意味する。この属性は、ユーザ操作により、ペアを成すボリューム同士の間で交換することができる。リモートボリュームＩＤ１１２−１９−１−４の列は、ペア相手のボリュームのＩＤを有する。「Ｎ／Ａは」は、当該ボリュームが存在しない又は別のボリュームとペアを形成しないことを意味する。
【００７３】
[0112]  ３．フロー図面
【００７４】
[0113]  図３７は、第４の実施形態に係る、ライトＩ／Ｏ制御１１２−２１−１´の処理フローの一例を示している。図１８に示すように、本プログラムはステップ１１２−２１−１−１からスタートするが、その後、ステップ１１２−２１−１´−４においてリモートコピーＩ／Ｏ制御１１２−２９−１を呼び出し、その後、ステップ１１２−２１−１−２においてキャッシュ制御１１２−２８を呼び出してキャッシュスロット１１２−３０−１を検索し、ステップ１１２−２１−１−３においてホストコンピュータ３００からライトＩ／Ｏデータを受け取って前記キャッシュスロット１１２−３０−１に記憶する。本プログラムはステップ１１２−２１−１−５で終了する。
【００７５】
[0114]  図３８は、リモートコピーＩ／Ｏ制御１１２−２９−１の処理フローの一例を示している。本プログラムはステップ１１２−２９−１−１からスタートする。ステップ１１２−２９−１−２において、本プログラムは、リモートコピーペア管理テーブル１１２−１９−１を参照して、当該ボリュームがリモートコピーペア相手を有するか否かをチェックする。有さない場合は、本プロセスはステップ１１２−２９−１−４で終了する。有する場合は、ステップ１１２−２９−１−３において、本プログラムは、リモートコピーペア管理テーブル１１２−１９−１参照して、当該ボリュームの属性が「Ｍ−Ｖｏｌ」であるか否かをチェックする。「Ｍ−Ｖｏｌ」でない場合、本プロセスは終了する。「Ｍ−Ｖｏｌ」である場合は、ステップ１１２−２９−１−４において、本プログラムは、受け取ったライトＩ／Ｏデータを複製し、それをリモートストレージサブシステム内のペア相手である（「Ｒ−Ｖｏｌ」の属性を有する）ボリュームへ転送する。
【００７６】
[0115]  図３９は、構成転送制御１１２−２９−２の処理フローの一例を示している。本プログラムはステップ１１２−２９−２−１からスタートする。ステップ１１２−２９−２−２において、本プログラムは、リモートコピーペア管理テーブル１１２−１９−１を参照して、当該ボリュームがリモートコピーペア相手を有するか否かをチェックする。有さない場合、本プロセスはステップ１１２−２９−２−８で終了する。ステップ１１２−２９−２−３において、本プログラムは、ボリューム属性が「Ｍ−Ｖｏｌ」であるか又は「Ｒ−Ｖｏｌ」であるかをチェックする。ボリューム属性が「Ｍ−Ｖｏｌ」である場合、本プログラムは、ステップ１１２−２９−２−４において、当該ボリュームのボリュームページ管理テーブル１１２−１１−６及びアプリケーション階層管理テーブル１１２−１１−９を読み出し、ステップ１１２−２９−２−５において、これらテーブルの情報を、ペア相手である（「Ｒ−Ｖｏｌ」）ボリュームが属するリモートストレージサブシステムへ転送する。ボリューム属性が「Ｒ−Ｖｏｌ」である場合、本プログラムは、ステップ１１２−２９−２−６において、ペア相手となる（「Ｍ−Ｖｏｌ」）ボリュームが属するリモートストレージサブシステムからテーブル情報を受け取り、ステップ１１２−２９−２−７において、当該ボリュームのページ所有アプリケーションＩＤ１１２−１１−６−６情報及びアプリケーション階層管理テーブル１１２−１１−９を上書きする。本プロセスは、ステップ１１２−２９−２−８で終了する。
【００７７】
[0116]  ステップ１１２−２９−２−４において、本プログラムは、当該ボリュームのボリュームページ管理テーブル１１２−１１−６及びアプリケーション階層管理テーブル１１２−１１−９の情報を送信する代わりに、ページと割り当てられた階層との間の関係情報を送信するようにしてもよい。この場合、本プログラムは、リモートストレージサブシステムにおいて当該ボリュームのページ所有アプリケーションＩＤ１１２−１１−６−６情報及びアプリケーション階層管理テーブル１１２−１１−９を上書きする代わりに、ページ移動制御１１２−２７−２１を呼び出すことによって階層割り当てを変更する。
【００７８】
[0117]  ４．シーケンス
【００７９】
[0118]  図４０は、アプリケーション終了、階層変更、及び階層構成転送のシーケンスの一例を示している。図３１の第１の実施形態と比較した場合、図４０は、階層構成転送について以下の追加シーケンスを有する。Ｔ１０００において、ストレージサブシステム１００ｍは、ボリュームページ管理テーブル１１２−１１−６及びアプリケーション階層管理テーブル１１２−１１−９の情報を、ストレージサブシステム１００ｒへ転送する。Ｔ１００１において、ストレージサブシステム１００ｒは、ストレージサブシステム１００ｍからボリュームページ管理テーブル１１２−１１−６及びアプリケーション階層管理テーブル１１２−１１−９の情報を受け取り、その情報で上書きする。
【００８０】
[0119]  以上の記載から明らかなように、本発明は、動的ページ再割当てストレージシステム管理に関する、方法、装置、及び、コンピュータ読取り可能な媒体に記憶されたプログラム、を提供する。本明細書中、特定の実施形態を図示及び記載してきたが、当業者達が認識するように、開示した特定の実施形態の代わりに、同一の目的を達成するべく計算されたあらゆる構成を使用してもよい。本開示内容は、本発明に対するあらゆる調整又は変更を含むものとし、特許請求の範囲に使用される用語は、本発明を上記特定の実施形態に制限するものとして解釈されるべきではない。むしろ、本発明の範囲は、特許請求の範囲によって完全に決定されるものであり、特許請求の範囲は、それが有するあらゆる均等物とともに、請求項の解釈の確立された原則に従って解釈されるものとする。
【図１】
0005427630.tif 000002
【図２】
0005427630.tif 000003
【図３】
0005427630.tif 000004
【図４】
0005427630.tif 000005
【図５】
0005427630.tif 000006
【図６】
0005427630.tif 000007
【図７】
0005427630.tif 000008
【図８】
0005427630.tif 000009
【図９】
0005427630.tif 000010
【図１０】
0005427630.tif 000011
【図１１】
0005427630.tif 000012
【図１２】
0005427630.tif 000013
【図１３】
0005427630.tif 000014
【図１４】
0005427630.tif 000015
【図１５】
0005427630.tif 000016
【図１６】
0005427630.tif 000017
【図１７】
0005427630.tif 000018
【図１８】
0005427630.tif 000019
【図１９】
0005427630.tif 000020
【図２０】
0005427630.tif 000021
【図２１】
0005427630.tif 000022
【図２２】
0005427630.tif 000023
【図２３】
0005427630.tif 000024
【図２４】
0005427630.tif 000025
【図２５】
0005427630.tif 000026
【図２６】
0005427630.tif 000027
【図２７】
0005427630.tif 000028
【図２８】
0005427630.tif 000029
【図２９】
0005427630.tif 000030
【図３０】
0005427630.tif 000031
【図３１】
0005427630.tif 000032
【図３２】
0005427630.tif 000033
【図３３】
0005427630.tif 000034
【図３４】
0005427630.tif 000035
【図３５】
0005427630.tif 000036
【図３６】
0005427630.tif 000037
【図３７】
0005427630.tif 000038
【図３８】
0005427630.tif 000039
【図３９】
0005427630.tif 000040
【図４０】
0005427630.tif 000041