(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-16
(45)【発行日】2023-11-27
(54)【発明の名称】大きいエクステント・プールから小さいエクステント・プールにデータを移行するための方法、システムおよびプログラム
(51)【国際特許分類】
G06F 3/06 20060101AFI20231117BHJP
G06F 16/23 20190101ALI20231117BHJP
【FI】
G06F3/06 301Z
G06F3/06 301X
G06F3/06 304Z
G06F16/23
(21)【出願番号】P 2021524252
(86)(22)【出願日】2020-01-21
(86)【国際出願番号】 IB2020050435
(87)【国際公開番号】W WO2020152576
(87)【国際公開日】2020-07-30
【審査請求日】2022-06-22
(32)【優先日】2019-01-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】チャン、フイ
(72)【発明者】
【氏名】ハーディー、クリント
(72)【発明者】
【氏名】ニールセン、カール、アレン
(72)【発明者】
【氏名】カロス、マシュー
(72)【発明者】
【氏名】シエ、キアン
【審査官】松平 英
(56)【参考文献】
【文献】特開2010-186471(JP,A)
【文献】特開2008-204206(JP,A)
【文献】特開2017-078983(JP,A)
【文献】国際公開第2015/068233(WO,A1)
【文献】米国特許出願公開第2011/0185140(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
12/00-12/128
13/00-13/18
16/00-16/958
(57)【特許請求の範囲】
【請求項1】
ボリュームに関連付けられたデータを、第1のランク・エクステント・サイズである移行元ストレージ・プールから、前記第1のランク・エクステント・サイズよりも小さい第2のランク・エクステント・サイズである移行先ストレージ・プールに移行するよう求める要求を識別することと、
前記ボリュームの論理ボリューム・エクステントと、前記移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を作成すること
であって、
前記ボリューム内で、移行対象の前記データを含む前記移行元ストレージ・プール内のランク・エクステントに対応するボリューム・セグメント・テーブル(VST)エントリを識別すること、
識別されたVSTエントリごとに小さいVSTを作成すること、
各小さいVST内の前記論理ボリューム・エクステントを、移行対象の前記データを含む前記移行元ストレージ・プール内の前記ランク・エクステント内の対応するオフセット位置を指すように設定すること
を含む、前記対応関係を作成することと、
前記ボリュームの前記論理ボリューム・エクステントと前記移行元ストレージ・プールの前記ランク・エクステント内の前記物理オフセット位置との間の前記対応関係を利用して、前記移行元ストレージ・プールの1つまたは複数のランクから前記移行先ストレージ・プールの1つまたは複数のランクにデータを移行することと
を含む、コンピュータ実施方法。
【請求項2】
前記データを移行することが、前記ボリュームに関連付けられた前記データを、前記移行元ストレージ・プールの前記ランク・エクステント内の1つまたは複数のオフセット位置から、前記移行先ストレージ・プール内の前記ランク・エクステントに転送することを含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記データを移行することが、前記移行元ストレージ・プール内の前記ランク・エクステントから前記データを解放することを含む、請求項1に記載のコンピュータ実施方法。
【請求項4】
前記データを移行することが、前記論理ボリューム・エクステントを、前記移行先ストレージ・プールのランク・エクステント内の移行されたデータの対応する位置を指すように調整することを含む、請求項1に記載のコンピュータ実施方法。
【請求項5】
前記データを移行することが、移行されたデータを受け取るために、前記移行先ストレージ・プール内の複数のランク・エクステントを選択することを含む、請求項1に記載のコンピュータ実施方法。
【請求項6】
前記複数のランク・エクステントが、ランダムに選択される、請求項
5に記載のコンピュータ実施方法。
【請求項7】
前記複数のランク・エクステントが、対応するランクのデータ検索速度に従って選択される、請求項
5に記載のコンピュータ実施方法。
【請求項8】
前記複数のランク・エクステントが、対応するランクに現在格納されているデータの量に従って選択される、請求項
5に記載のコンピュータ実施方法。
【請求項9】
ボリュームに関連付けられたデータを移行元ストレージ・プールから移行先ストレージ・プールに移行するよう求める要求を識別することと、
前記データを含む前記移行元ストレージ・プール内のランク・エクステントに対応するボリューム・セグメント・テーブル(VST)エントリを識別することと、
前記ボリューム内の前記識別されたVSTエントリに、小さいVSTを割り当てて同期すること
であって、
前記小さいVSTのそれぞれ内の論理ボリューム・エクステントを、移行対象の前記データを含む前記移行元ストレージ・プール内のランク・エクステント内の対応するオフセット位置を指すように設定することを含む、前記小さいVSTを同期することと、
1つまたは複数のランク・エクステントを前記移行先ストレージ・プール内に割り当てることと、
前記ボリュームに関連付けられた前記データを、前記データを含む前記移行元ストレージ・プール内の前記ランク・エクステントから、前記移行先ストレージ・プールの前記1つまたは複数のランク内の前記1つまたは複数のランク・エクステントに転送することと、
前記小さいVSTを、前記移行先ストレージ・プールの前記1つまたは複数のランク内の前記1つまたは複数のランク・エクステント内の前記転送されたデータに対応するように更新することと、
前記移行元ストレージ・プール内の前記1つまたは複数のランク・エクステントから前記データを解放することと
を含む、コンピュータ実施方法。
【請求項10】
前記ボリュームが、前記データの論理表現を系統立てて1つまたは複数のホストに連続した方法で提示するストレージ・ボリュームを含む、請求項
9に記載のコンピュータ実施方法。
【請求項11】
前記ボリューム内で論理的に表されるデータが、前記移行元ストレージ・プール内の1つまたは複数のランクに物理的に格納される、請求項
9に記載のコンピュータ実施方法。
【請求項12】
前記移行元ストレージ・プールが、第1のランク・エクステント・サイズであり、前記移行先ストレージ・プールが、前記第1のランク・エクステント・サイズよりも小さい第2のランク・エクステント・サイズである、請求項
9に記載のコンピュータ実施方法。
【請求項13】
前記小さいVSTが、前記VSTエントリをより高い粒度で表現および管理する、請求項
9に記載のコンピュータ実施方法。
【請求項14】
前記移行先ストレージ・プール内に割り当てられるランク・エクステントの数が、前記ボリュームのサイズに対応する、請求項
9に記載のコンピュータ実施方法。
【請求項15】
前記ボリュームによって論理的に表される前記データの合計サイズを前記移行先ストレージ・プールのランク・エクステント・サイズで除算して、前記移行先ストレージ・プール内に割り当てられる前記ランク・エクステントの数を決定する、請求項
9に記載のコンピュータ実施方法。
【請求項16】
前記1つまたは複数のランク・エクステントが、前記移行先ストレージ・プール内のランクのデータ検索速度に基づいて割り当てられる、請求項
9に記載のコンピュータ実施方法。
【請求項17】
前記1つまたは複数のランク・エクステントが、前記移行先ストレージ・プール内の複数のランクのそれぞれに現在格納されているデータのデータ量に基づいて割り当てられる、請求項
9に記載のコンピュータ実施方法。
【請求項18】
前記データを転送することが、前記移行元ストレージ・プール内の前記ランク・エクステントのオフセット位置に格納されている前記データを、前記移行先ストレージ・プール内の対応する割り当てられたランク・エクステントに転送することを含む、請求項
9に記載のコンピュータ実施方法。
【請求項19】
大きいエクステント・プールから小さいエクステント・プールにデータを移行するためのコンピュータ・プログラム
のプログラム命令が具現化されたコンピュータ可読記憶媒体
であって、前記コンピュータ可読記憶媒体が一過性の信号自体ではなく、前記プログラム命令が、プロセッサによって実行可能であり、請求項1ないし
18のいずれかに記載の方法を前記プロセッサに実行させる、コンピュータ
可読記憶媒体。
【請求項20】
プロセッサと、
前記プロセッサと統合されているか、前記プロセッサによって実行可能であるか、または前記プロセッサと統合され、かつ前記プロセッサによって実行可能であり、請求項1ないし
18のいずれかに記載の前記方法を実行するように構成された論理と
を含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ移行に関し、より詳細には、本発明は、第1のエクステント・プールから、第1のエクステント・プールよりも粒度が小さい第2のエクステント・プールに、データを移行することに関する。
【背景技術】
【0002】
ストレージ製品のエクステント・プールは、エクステント・サイズが異なる場合がある。たとえば、大きいエクステント・プールに対しては1GBのエクステント・サイズを実装することができ、小さいエクステント・プールに対しては16MBのエクステント・サイズを実装することができる。一部のワークロードは、大きいエクステント・プールと比較して、小さいエクステント・プールにおいてより良好に動作する場合がある。しかしながら、データを転送するための現在の方法は、高価であり、ホストを使用してデータをコピーするか、フラッシュ・コピーを実施する必要がある。したがって、ボリュームを大きいエクステント・プールから小さいエクステント・プールに効率的に移行する必要がある。
【発明の概要】
【0003】
一実施形態によるコンピュータ実施方法は、ボリュームに関連付けられたデータを、第1のランク・エクステント・サイズである移行元(source)ストレージ・プールから、第1のランク・エクステント・サイズよりも小さい第2のランク・エクステント・サイズである移行先(destination)ストレージ・プールに移行するよう求める要求を識別することと、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を作成することと、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を利用して、移行元ストレージ・プールの1つまたは複数のランクから移行先ストレージ・プールの1つまたは複数のランクにデータを移行することとを含む。
【0004】
このようにして、ホストを使用してデータをコピーする必要も、フラッシュ・コピーを実施する必要もなく、移行元ストレージ・プールから、移行元ストレージ・プールのランク・エクステント・サイズよりも小さいランク・エクステント・サイズである移行先ストレージ・プールに、データが移行される。これにより、データ移行を実行する1つまたは複数のシステムの時間およびリソースの量が削減され、1つまたは複数のシステムの性能が向上する。
【0005】
任意選択の一実施形態では、対応関係を作成することは、ボリューム内で、移行対象のデータを含む移行元ストレージ・プール内のランク・エクステントに対応するボリューム・セグメント・テーブル(VST:volume segment table)エントリを識別することと、識別されたVSTエントリごとに小さいVSTを作成することとを含む。
【0006】
別の実施形態によれば、大きいエクステント・プールから小さいエクステント・プールにデータを移行するためのコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、コンピュータ可読記憶媒体は一過性の信号自体ではなく、プログラム命令は、プロセッサによって実行可能であり、プロセッサを利用して、ボリュームに関連付けられたデータを、第1のランク・エクステント・サイズである移行元ストレージ・プールから、第1のランク・エクステント・サイズよりも小さい第2のランク・エクステント・サイズである移行先ストレージ・プールに移行するよう求める要求を識別することと、プロセッサを利用して、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を作成することと、プロセッサを利用して、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を利用して、移行元ストレージ・プールの1つまたは複数のランクから移行先ストレージ・プールの1つまたは複数のランクにデータを移行することとを含む方法をプロセッサに実行させる。
【0007】
別の実施形態によるシステムは、プロセッサ、およびプロセッサと統合されているか、プロセッサによって実行可能であるか、またはプロセッサと統合され、かつプロセッサによって実行可能である論理を含み、論理は、ボリュームに関連付けられたデータを、第1のランク・エクステント・サイズである移行元ストレージ・プールから、第1のランク・エクステント・サイズよりも小さい第2のランク・エクステント・サイズである移行先ストレージ・プールに移行するよう求める要求を識別し、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を作成し、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を利用して、移行元ストレージ・プールの1つまたは複数のランクから移行先ストレージ・プールの1つまたは複数のランクにデータを移行するように構成される。
【0008】
別の実施形態によるコンピュータ実施方法は、ボリュームに関連付けられたデータを移行元ストレージ・プールから移行先ストレージ・プールに移行するよう求める要求を識別することと、データを含む移行元ストレージ・プール内のランク・エクステントに対応するボリューム・セグメント・テーブル(VST)エントリを識別することと、ボリューム内の識別されたVSTエントリに、小さいVSTを割り当てて同期することと、1つまたは複数のランク・エクステントを移行先ストレージ・プール内に割り当てることと、ボリュームに関連付けられたデータを、データを含む移行元ストレージ・プール内のランク・エクステントから、移行先ストレージ・プールの1つまたは複数のランク内の1つまたは複数のランク・エクステントに転送することと、小さいVSTを、移行先ストレージ・プールの1つまたは複数のランク内の1つまたは複数のランク・エクステント内の転送されたデータに対応するように更新することと、移行元ストレージ・プール内の1つまたは複数のランク・エクステントからデータを解放することとを含む。
【0009】
このようにして、移行元ストレージ・プールから、移行元ストレージ・プールのランク・エクステント・サイズよりも小さいランク・エクステント・サイズである移行先ストレージ・プールに、データが移行される。より小さいランク・エクステントを使用するとアプリケーションがより良好に動作できるので、これにより移行先ストレージ・プール内のデータにアクセスするアプリケーションの性能を向上させることができる。
【0010】
別の実施形態によれば、大きいエクステント・プールから小さいエクステント・プールにデータを移行するためのコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、コンピュータ可読記憶媒体は一過性の信号自体ではなく、プログラム命令は、プロセッサによって実行可能であり、プロセッサを利用して、ボリュームに関連付けられたデータを移行元ストレージ・プールから移行先ストレージ・プールに移行するよう求める要求を識別することと、プロセッサを利用して、データを含む移行元ストレージ・プール内のランク・エクステントに対応するVSTエントリを識別することと、プロセッサを利用して、ボリューム内の識別されたVSTエントリのそれぞれに、小さいVSTを割り当てて同期することと、プロセッサを利用して、1つまたは複数のランク・エクステントを移行先ストレージ・プール内に割り当てることと、プロセッサを利用して、ボリュームに関連付けられたデータを、データを含む移行元ストレージ・プール内のランク・エクステントから、移行先ストレージ・プールの1つまたは複数のランク内の1つまたは複数のランク・エクステントに転送することと、プロセッサを利用して、小さいVSTを、移行先ストレージ・プールの1つまたは複数のランク内の1つまたは複数のランク・エクステント内の転送されたデータに対応するように更新することと、プロセッサを利用して、移行元ストレージ・プール内の1つまたは複数のランク・エクステントからデータを解放することとを含む方法をプロセッサに実行させる。
【0011】
本発明の原理を例示として説明する以下の詳細な説明を、図面と併用すると、本発明の他の態様および実施形態が明らかになるであろう。
【図面の簡単な説明】
【0012】
【
図1】一実施形態による、ネットワーク・アーキテクチャを示す図である。
【
図2】一実施形態による、
図1のサーバまたはクライアントあるいはその両方に関連付けられ得る代表的なハードウェア環境を示す図である。
【
図3】一実施形態による、階層型データ・ストレージ・システムを示す図である。
【
図4】一実施形態による、大きいエクステント・プールから小さいエクステント・プールにデータを移行するための方法を示す図である。
【
図5】一実施形態による、移行元ストレージ・プールから移行元ストレージ・プールよりもエクステントの粒度が小さい移行先ストレージ・プールにデータを移行するための方法を示す図である。
【
図6A】一実施形態による、データ移行前の例示的なストレージ環境を示す図である。
【
図6B】一実施形態による、移行要求に応答する例示的なストレージ環境を示す図である。
【
図6C】一実施形態による、移行元プールから移行先プールへのデータ移行中の例示的なストレージ環境を示す図である。
【
図6D】一実施形態による、移行元プールから移行先プールへのデータ移行後の例示的なストレージ環境を示す図である。
【発明を実施するための形態】
【0013】
以下の説明では、大きいエクステント・プールから小さいエクステント・プールにデータを移行するためのシステム、方法、およびコンピュータ・プログラム製品のいくつかの好ましい実施形態を開示する。様々な実施形態では、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を作成し、対応関係を利用して、移行元ストレージ・プールの1つまたは複数のランクから移行先ストレージ・プールの1つまたは複数のランクにデータを移行するための方法を提供する。
【0014】
以下の説明は、本発明の一般的な原理を説明することを目的としてなされており、本明細書で特許請求される本発明の概念を限定することを意味するものではない。さらに、本明細書に記載の特定の特徴は、様々な可能な組合せおよび置換えのそれぞれにおいて、他の記載されている特徴と組み合せて使用することができる。
【0015】
本明細書において別途明確な定義がない限り、すべての用語は、本明細書から暗示される意味、ならびに当業者によって理解される意味または辞書、論文などで定義される意味あるいはその両方を含む、可能な限り広い解釈を与えられるべきである。
【0016】
単数形「a」、「an」および「the」は、明細書および添付の特許請求の範囲で使用される場合、別途指示がない限り、複数のものを含むことにも留意されたい。「含む(includes)」という用語または「備える(comprising)」という用語、あるいはその両方は、本明細書で使用される場合、記載された特徴、整数、ステップ、動作、要素、またはコンポーネントあるいはその組合せの存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、またはそれらのグループあるいはその組合せの存在または追加を排除するものではないことがさらに理解されよう。
【0017】
以下の説明では、大きいエクステント・プールから小さいエクステント・プールにデータを移行するためのシステム、方法、およびコンピュータ・プログラム製品のいくつかの好ましい実施形態を開示する。
【0018】
一般的な一実施形態では、コンピュータ実施方法は、ボリュームに関連付けられたデータを、第1のランク・エクステント・サイズである移行元ストレージ・プールから、第1のランク・エクステント・サイズよりも小さい第2のランク・エクステント・サイズである移行先ストレージ・プールに移行するよう求める要求を識別することと、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を作成することと、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を利用して、移行元ストレージ・プールの1つまたは複数のランクから移行先ストレージ・プールの1つまたは複数のランクにデータを移行することとを含む。
【0019】
このようにして、ホストを使用してデータをコピーする必要も、フラッシュ・コピーを実施する必要もなく、移行元ストレージ・プールから、移行元ストレージ・プールのランク・エクステント・サイズよりも小さいランク・エクステント・サイズである移行先ストレージ・プールに、データが移行される。これにより、データ移行を実行する1つまたは複数のシステムの時間およびリソースの量が削減され、1つまたは複数のシステムの性能が向上する。
【0020】
別の一般的な実施形態では、対応関係を作成することは、ボリューム内で、移行対象のデータを含む移行元ストレージ・プール内のランク・エクステントに対応するVSTエントリを識別することと、識別されたVSTエントリごとに小さいVSTを作成することとを含む。
【0021】
別の一般的な実施形態では、大きいエクステント・プールから小さいエクステント・プールにデータを移行するためのコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、コンピュータ可読記憶媒体は一過性の信号自体ではなく、プログラム命令は、プロセッサによって実行可能であり、プロセッサを利用して、ボリュームに関連付けられたデータを、第1のランク・エクステント・サイズである移行元ストレージ・プールから、第1のランク・エクステント・サイズよりも小さい第2のランク・エクステント・サイズである移行先ストレージ・プールに移行するよう求める要求を識別することと、プロセッサを利用して、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を作成することと、プロセッサを利用して、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を利用して、移行元ストレージ・プールの1つまたは複数のランクから移行先ストレージ・プールの1つまたは複数のランクにデータを移行することとを含む方法をプロセッサに実行させる。
【0022】
別の一般的な実施形態では、システムは、プロセッサ、およびプロセッサと統合されているか、プロセッサによって実行可能であるか、またはプロセッサと統合され、かつプロセッサによって実行可能である論理を含み、論理は、ボリュームに関連付けられたデータを、第1のランク・エクステント・サイズである移行元ストレージ・プールから、第1のランク・エクステント・サイズよりも小さい第2のランク・エクステント・サイズである移行先ストレージ・プールに移行するよう求める要求を識別し、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を作成し、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を利用して、移行元ストレージ・プールの1つまたは複数のランクから移行先ストレージ・プールの1つまたは複数のランクにデータを移行するように構成される。
【0023】
別の一般的な実施形態では、コンピュータ実施方法は、ボリュームに関連付けられたデータを移行元ストレージ・プールから移行先ストレージ・プールに移行するよう求める要求を識別することと、データを含む移行元ストレージ・プール内のランク・エクステントに対応するボリューム・セグメント・テーブル(VST)エントリを識別することと、ボリューム内の識別されたVSTエントリに、小さいVSTを割り当てて同期することと、1つまたは複数のランク・エクステントを移行先ストレージ・プール内に割り当てることと、ボリュームに関連付けられたデータを、データを含む移行元ストレージ・プール内のランク・エクステントから、移行先ストレージ・プールの1つまたは複数のランク内の1つまたは複数のランク・エクステントに転送することと、小さいVSTを、移行先ストレージ・プールの1つまたは複数のランク内の1つまたは複数のランク・エクステント内の転送されたデータに対応するように更新することと、移行元ストレージ・プール内の1つまたは複数のランク・エクステントからデータを解放することとを含む。
【0024】
このようにして、移行元ストレージ・プールから、移行元ストレージ・プールのランク・エクステント・サイズよりも小さいランク・エクステント・サイズである移行先ストレージ・プールに、データが移行される。より小さいランク・エクステントを使用するとアプリケーションがより良好に動作できるので、これにより移行先ストレージ・プール内のデータにアクセスするアプリケーションの性能を向上させることができる。
【0025】
別の一般的な実施形態では、大きいエクステント・プールから小さいエクステント・プールにデータを移行するためのコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、コンピュータ可読記憶媒体は一過性の信号自体ではなく、プログラム命令は、プロセッサによって実行可能であり、プロセッサを利用して、ボリュームに関連付けられたデータを移行元ストレージ・プールから移行先ストレージ・プールに移行するよう求める要求を識別することと、プロセッサを利用して、データを含む移行元ストレージ・プール内のランク・エクステントに対応するVSTエントリを識別することと、プロセッサを利用して、ボリューム内の識別されたVSTエントリのそれぞれに、小さいVSTを割り当てて同期することと、プロセッサを利用して、1つまたは複数のランク・エクステントを移行先ストレージ・プール内に割り当てることと、プロセッサを利用して、ボリュームに関連付けられたデータを、データを含む移行元ストレージ・プール内のランク・エクステントから、移行先ストレージ・プールの1つまたは複数のランク内の1つまたは複数のランク・エクステントに転送することと、プロセッサを利用して、小さいVSTを、移行先ストレージ・プールの1つまたは複数のランク内の1つまたは複数のランク・エクステント内の転送されたデータに対応するように更新することと、プロセッサを利用して、移行元ストレージ・プール内の1つまたは複数のランク・エクステントからデータを解放することとを含む方法をプロセッサに実行させる。
【0026】
図1は、一実施形態による、アーキテクチャ100を示す。
図1に示すように、第1のリモート・ネットワーク104および第2のリモート・ネットワーク106を含む複数のリモート・ネットワーク102が提供される。リモート・ネットワーク102と近接ネットワーク108との間で、ゲートウェイ101が結合されてもよい。本アーキテクチャ100のコンテキストにおいて、ネットワーク104、106はそれぞれ、LAN、インターネットなどのWAN、公衆交換電話網(PSTN:public switched telephone network)、内部電話網などを含むがこれらに限定されない任意の形態をとることができる。
【0027】
ゲートウェイ101は、使用中、リモート・ネットワーク102から近接ネットワーク108への入口点として機能する。したがって、ゲートウェイ101は、ゲートウェイ101に到着するデータの所与のパケットを方向付けることが可能であるルータ、および所与のパケットに対してゲートウェイ101に出入りする実際のパスを提供するスイッチとして機能することができる。
【0028】
さらに、近接ネットワーク108に結合され、ゲートウェイ101を介してリモート・ネットワーク102からアクセス可能な少なくとも1つのデータ・サーバ114が含まれる。データ・サーバ114は、任意のタイプのコンピューティング・デバイス/グループウェアを含み得ることに留意されたい。各データ・サーバ114には、複数のユーザ・デバイス116が結合される。ユーザ・デバイス116もやはり、ネットワーク104、106、108のうちの1つを介して直接接続されてもよい。このようなユーザ・デバイス116には、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、プリンタ、または任意の他のタイプの論理が含まれ得る。一実施形態では、ユーザ・デバイス111も、ネットワークのいずれかに直接結合され得ることに留意されたい。
【0029】
ネットワーク104、106、108のうちの1つまたは複数には、周辺機器120または一連の周辺機器120、たとえば、ファクシミリ機、プリンタ、ネットワーク化されたまたはローカルのあるいはその両方のストレージ・ユニットまたはシステムなどが結合されてもよい。データベースまたは追加のコンポーネントあるいはその両方が、ネットワーク104、106、108に結合された任意のタイプのネットワーク要素とともに利用され得るか、またはそれらに統合され得ることに留意されたい。本説明の文脈において、ネットワーク要素は、ネットワークの任意のコンポーネントを指すことがある。
【0030】
いくつかの手法によれば、本明細書に記載の方法およびシステムは、IBM z/OS(R)環境をエミュレートするUNIX(R)システム、MICROSOFT WINDOWS(R)環境を仮想的にホストするUNIX(R)システム、IBM z/OS(R)環境をエミュレートするMICROSOFT WINDOWS(R)システムなどの、仮想システム、または、1つもしくは複数の他のシステムをエミュレートするシステム、あるいはその両方とともに、またはそれらのシステム上で、あるいはその両方で実施されてもよい。いくつかの実施形態では、VMWAREソフトウェアを使用することによって、この仮想化またはエミュレーションあるいはその両方を強化することができる。
【0031】
さらなる手法では、1つまたは複数のネットワーク104、106、108は、一般に「クラウド」と呼ばれるシステムのクラスタを表すことがある。クラウド・コンピューティングでは、処理能力、周辺機器、ソフトウェア、データ、サーバなどの共有リソースがオン・デマンドの関係でクラウド内の任意のシステムに提供され、これにより、多くのコンピューティング・システム間でアクセスおよびサービスの配布が可能になる。クラウド・コンピューティングには通常、クラウドで動作するシステム間のインターネット接続が含まれるが、システムを接続する他の手法が使用されてもよい。
【0032】
図2は、一実施形態による、
図1のユーザ・デバイス116またはサーバ114あるいはその両方に関連する代表的なハードウェア環境を示す。このような図は、マイクロプロセッサなどの中央処理ユニット210、およびシステム・バス212を介して相互接続された、いくつかの他のユニットを有する、ワークステーションの典型的なハードウェア構成を示している。
【0033】
図2に示すワークステーションは、ランダム・アクセス・メモリ(RAM:Random Access Memory)214、読取り専用メモリ(ROM:Read Only Memory)216、ディスク・ストレージ・ユニット220などの周辺機器をバス212に接続するためのI/Oアダプタ218、キーボード224、マウス226、スピーカ228、マイクロフォン232、またはタッチ・スクリーンおよびデジタル・カメラ(図示せず)などの他のユーザ・インターフェース・デバイスならびにそれらの組合せをバス212に接続するためのユーザ・インターフェース・アダプタ222、ワークステーションを通信ネットワーク235(たとえば、データ処理ネットワーク)に接続するための通信アダプタ234、ならびにバス212をディスプレイ・デバイス238に接続するためのディスプレイ・アダプタ236を含む。
【0034】
ワークステーションには、Microsoft Windows(R)オペレーティング・システム(OS:Operating System)、MAC OS、UNIX(R) OSなどのオペレーティング・システムが常駐してもよい。好ましい実施形態は、言及したもの以外のプラットフォームおよびオペレーティング・システム上でも実施され得ることが理解されよう。好ましい実施形態は、オブジェクト指向プログラミング方法論とともに、XML、C、またはC++言語あるいはその組合せ、または他のプログラミング言語を使用して書かれてもよい。複雑なアプリケーションの開発にますます使用されるようになったオブジェクト指向プログラミング(OOP:object oriented programming)が使用されてもよい。
【0035】
ここで、
図3を参照すると、一実施形態によるストレージ・システム300が示されている。
図3に示す要素の一部は、様々な実施形態によるハードウェアまたはソフトウェアあるいはその両方として実装され得ることに留意されたい。ストレージ・システム300は、少なくとも1つの上位ストレージ層302および少なくとも1つの下位ストレージ層306上の複数の媒体と通信するためのストレージ・システム・マネージャ312を含んでもよい。上位ストレージ層302は、好ましくは、ハード・ディスク・ドライブ(HDD:hard disk drive)内のハード・ディスク、不揮発性メモリ(NVM:nonvolatile memory)、ソリッド・ステート・ドライブ(SSD:solid state drive)内のソリッド・ステート・メモリ、フラッシュ・メモリ、SSDアレイ、フラッシュ・メモリ・アレイなど、または本明細書に記載されているかもしくは当技術分野で知られている他の媒体、あるいはその組合せなどの、1つまたは複数のランダム・アクセスまたはダイレクト・アクセスあるいはその両方の媒体304を含んでもよい。下位ストレージ層306は、好ましくは、テープ・ドライブ内の磁気テープもしくは光媒体またはその両方、低速アクセスHDD、低速アクセスSSDなど、または本明細書に記載されているかもしくは当技術分野で知られている他の順次アクセス媒体あるいはその組合せなどの順次アクセス媒体を含む、1つまたは複数のより低性能のストレージ媒体308を含んでもよい。1つまたは複数の追加のストレージ層316は、システム300の設計者が所望するようなストレージ・メモリ媒体の任意の組合せを含んでもよい。また、上位ストレージ層302または下位ストレージ層306あるいはその両方のうちのいずれかは、ストレージ・デバイスまたはストレージ媒体あるいはその両方の何らかの組合せを含んでもよい。
【0036】
ストレージ・システム・マネージャ312は、
図3に示すように、ストレージ・エリア・ネットワーク(SAN:storage area network)または他の適切なネットワーク・タイプなどのネットワーク310を介して、上位ストレージ層302上のストレージ媒体304および下位ストレージ層306上のストレージ媒体308と通信してもよい。ストレージ・システム・マネージャ312はまた、ホスト・インターフェース314を介して1つまたは複数のホスト・システム(図示せず)と通信してもよく、ホスト・インターフェース314は、ストレージ・システム・マネージャ312の一部であっても一部でなくてもよい。ストレージ・システム・マネージャ312またはストレージ・システム300の他の任意のコンポーネントあるいはその両方は、ハードウェア内またはソフトウェア内あるいはその両方に実装されてもよく、当技術分野で知られているタイプのコマンドを実行するために、中央処理装置(CPU:central processing unit)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)、特定用途向け集積回路(ASIC:application specific integrated circuit)などのプロセッサ(図示せず)を利用してもよい。当然ながら、本説明を読むと当業者には明らかであるように、ストレージ・システムの任意の構成が使用されてもよい。
【0037】
さらなる実施形態では、ストレージ・システム300は、任意の数のデータ・ストレージ層を含んでもよく、各ストレージ層内に同じまたは異なるストレージ・メモリ媒体を含んでもよい。たとえば、各データ・ストレージ層は、HDD、SSD、順次アクセス媒体(テープ・ドライブ内のテープ、光ディスク・ドライブ内の光ディスクなど)、ダイレクト・アクセス媒体(CD-ROM、DVD-ROMなど)などの同じタイプのストレージ・メモリ媒体、または媒体ストレージ・タイプの任意の組合せを含んでもよい。このような構成の1つでは、上位ストレージ層302は、データをより高性能のストレージ環境で格納するために、SSDストレージ媒体の大部分を含んでもよく、下位ストレージ層306および追加のストレージ層316を含む残りのストレージ層は、データをより低性能のストレージ環境で格納するために、SSD、HDD、テープ・ドライブなどの任意の組合せを含んでもよい。このようにして、より頻繁にアクセスされるデータ、優先度がより高いデータ、より迅速にアクセスされる必要があるデータなどは、上位ストレージ層302に格納されてもよく、これらの属性を1つも有していないデータは、下位ストレージ階層306を含む追加のストレージ階層316に格納されてもよい。当然ながら、当業者は、本説明を読むと、本明細書に提示された実施形態に従って、異なるストレージ方式に実装するためのストレージ媒体タイプの他の多くの組合せを考案することができる。
【0038】
いくつかの実施形態によれば、ストレージ・システム(300など)は、データ・セットを開くよう求める要求を受け取るように構成された論理、要求されたデータ・セットが複数の関連する部分で階層型データ・ストレージ・システム300の下位ストレージ層306に格納されるかどうかを判定するように構成された論理、要求されたデータ・セットの各関連する部分を階層型データ・ストレージ・システム300の上位ストレージ層302に移動するように構成された論理、および要求されたデータ・セットを関連する部分から階層型データ・ストレージ・システム300の上位ストレージ層302に集めるように構成された論理を含んでもよい。
【0039】
当然ながら、この論理は、様々な実施形態により、任意のデバイス上またはシステム上あるいはその両方での方法として、またはコンピュータ・プログラム製品として実装されてもよい。
【0040】
ここで、
図4を参照すると、一実施形態による方法400のフローチャートが示されている。方法400は、様々な実施形態における、とりわけ
図1~
図3および
図6A~
図6Dに示す環境のいずれかにおいて、本発明に従って実行されてもよい。当然ながら、本説明を読むと当業者には理解されるように、方法400には、
図4に具体的に記載された動作よりも多い動作または少ない動作が含まれてもよい。
【0041】
方法400のステップのそれぞれは、動作環境の任意の適切なコンポーネントによって実行されてもよい。たとえば、様々な実施形態において、方法400は、1つもしくは複数のサーバ、コンピュータ、または内部に1つもしくは複数のプロセッサを有する何らかの他のデバイスによって、部分的または全体的に実行されてもよい。方法400の1つまたは複数のステップを実行するための任意のデバイスにおいて、ハードウェア内またはソフトウェア内あるいはその両方に実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有するプロセッサ、たとえば、処理回路、チップ、またはモジュールあるいはその組合せが利用されてもよい。例示的なプロセッサには、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、その組合せ、または当技術分野で知られている任意の他の適切なコンピューティング・デバイスが含まれるが、これらに限定されない。
【0042】
図4に示すように、方法400は、動作402で開始することができ、ボリュームに関連付けられたデータを、第1のランク・エクステント・サイズである移行元ストレージ・プールから、第1のランク・エクステント・サイズよりも小さい第2のランク・エクステント・サイズである移行先ストレージ・プールに移行するよう求める要求が受信される。
【0043】
さらに、方法400は、動作404に進むことができ、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係が作成される。一実施形態では、対応関係を作成することは、ボリューム内で、移行対象のデータを含む移行元ストレージ・プール内のランク・エクステントに対応するVSTエントリを識別することを含む。たとえば、VSTは、ボリューム内に格納されたデータの論理表現を格納することができ、VSTは、複数のエントリを含む。これらのエントリのサブセットが、移行対象のデータを含む移行元ストレージ・プール内のランク・エクステントに対応するVST内で識別されてもよい。
【0044】
さらに、一実施形態では、対応関係を作成することは、識別されたVSTエントリごとに小さいVSTを作成することを含んでもよい。たとえば、VSTエントリの識別されたサブセットごとに、小さいVSTが作成されてもよい。別の例では、小さいVSTのそれぞれを使用して、対応するVSTエントリ内のすべての論理ボリューム・エクステントをより高い粒度で表すことができる。
【0045】
さらに、一実施形態では、対応関係を作成することは、小さいVST内の論理ボリューム・エクステントを、移行対象のデータを含む移行元ストレージ・プール内のランク・エクステント内の対応するオフセット位置を指すように設定することを含んでもよい。このようにして、ボリュームの小さいVSTの論理ボリューム・エクステントと移行対象のデータを含む移行元ストレージ・プール内のランク・エクステント内のオフセット位置との間の直接の対応関係を確立することができる。
【0046】
さらに、方法400は、動作406に進むことができ、ボリュームの論理ボリューム・エクステントと移行元ストレージ・プールのランク・エクステント内の物理オフセット位置との間の対応関係を利用して、移行元ストレージ・プールの1つまたは複数のランクから移行先ストレージ・プールの1つまたは複数のランクにデータが移行される。一実施形態では、データを移行することは、移行されたデータを受け取るために、移行先ストレージ・プール内の複数のランク・エクステントを選択することを含んでもよい。たとえば、ランダムに、または1つもしくは複数の基準(たとえば、ランク番号付け、対応するランクのデータ検索速度、対応するランクに現在格納されているデータの量など)に従って、複数のランク・エクステントが選択されてもよい。
【0047】
また、一実施形態では、データを移行することは、ボリュームに関連付けられたデータを、移行元ストレージ・プールのランク・エクステント内の1つまたは複数のオフセット位置から、移行先ストレージ・プール内の選択された複数のランク・エクステントに転送することを含んでもよい。
【0048】
さらに、一実施形態では、データを移行することは、移行元ストレージ・プール内の1つまたは複数のランク・エクステントからデータを解放することを含んでもよい。別の実施形態では、データを移行することは、小さいVST内のボリューム・エクステントを、転送されたデータを格納する移行先ストレージ・プールの選択された複数のランク・エクステント内の移行されたデータの対応する位置を指すように調整することを含んでもよい。
【0049】
このようにして、ホストを使用してデータをコピーする必要も、フラッシュ・コピーを実施する必要もなく、移行元ストレージ・プールから、移行元ストレージ・プールのランク・エクステント・サイズよりも小さいランク・エクステント・サイズである移行先ストレージ・プールに、データが移行される。これにより、データ移行を実行する1つまたは複数のシステムの時間およびリソースの量が削減され、1つまたは複数のシステムの性能が向上する。
【0050】
ここで、
図5を参照すると、一実施形態による、移行元ストレージ・プールから移行元ストレージ・プールよりもエクステントの粒度が小さい移行先ストレージ・プールにデータを移行するための方法500のフローチャートが示されている。方法500は、様々な実施形態における、とりわけ
図1~
図3および
図6A~
図6Dに示す環境のいずれかにおいて、本発明に従って実行されてもよい。当然ながら、本説明を読むと当業者には理解されるように、方法500には、
図5に具体的に記載された動作よりも多い動作または少ない動作が含まれてもよい。
【0051】
方法500のステップのそれぞれは、動作環境の任意の適切なコンポーネントによって実行されてもよい。たとえば、様々な実施形態において、方法500は、1つもしくは複数のサーバ、コンピュータ、または内部に1つもしくは複数のプロセッサを有する何らかの他のデバイスによって、部分的または全体的に実行されてもよい。方法500の1つまたは複数のステップを実行するための任意のデバイスにおいて、ハードウェア内またはソフトウェア内あるいはその両方に実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを有するプロセッサ、たとえば、処理回路、チップ、またはモジュールあるいはその組合せが利用されてもよい。例示的なプロセッサには、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、その組合せ、または当技術分野で知られている任意の他の適切なコンピューティング・デバイスが含まれるが、これらに限定されない。
【0052】
図5に示すように、方法500は、動作502で開始することができ、ボリュームに関連付けられたデータを移行元ストレージ・プールから移行先ストレージ・プールに移行するよう求める要求が識別される。一実施形態では、ボリュームは、データの論理表現を系統立てて1つまたは複数のホストに連続した方法で提示するストレージ・ボリュームを含む。別の実施形態では、ボリュームは、複数のボリューム・エクステントを含む。たとえば、各ボリューム・エクステントは、論理エクステントを含んでもよい。
【0053】
さらに、一実施形態では、ストレージ・プールは、1つまたは複数のランクを含む。別の実施形態では、各ランクは、冗長量のストレージ(たとえば、RAIDストレージ・アレイなど)を含む。さらに別の実施形態では、ボリューム内で論理的に表されるデータが、ストレージ・プールの1つまたは複数のランクに物理的に格納される。たとえば、一実施形態では、各ランクは、複数のランク・エクステントを含む。
【0054】
さらに、一実施形態では、ランク内のエクステントは、ランクのランク・セグメント・テーブル(RST:rank segment table)内のエントリとして表され、各ランク・エクステントは、満杯または空のいずれかである。たとえば、各ランク・エクステントは物理エクステントを表す。別の例では、各ランク・エクステントは、データをストレージ・プール内に格納するための所定量のストレージを表す。さらに別の例では、満杯のランク・エクステントは、ボリューム内のデータの論理位置(たとえば、データが論理的に格納されて1つまたは複数のホストに提示される、ボリュームおよびそのボリューム内のボリューム・エクステントの識別情報)を含む。
【0055】
さらに、一実施形態では、移行元ストレージ・プールは、ボリューム内で論理的に表されるすべてのデータを最初に格納する1つまたは複数のランクを含む。別の実施形態では、ボリューム内で論理的に表されるデータは、移行元ストレージ・プール内の複数のランクに物理的に格納される。
【0056】
また、一実施形態では、移行元ストレージ・プールは、第1のランク・エクステント・サイズであり、移行先ストレージ・プールは、第1のランク・エクステント・サイズよりも小さい第2のランク・エクステント・サイズである。たとえば、移行元ストレージ・プールは、1GBのサイズのランク・エクステントを有してもよく、第2のエクステント・プールは、16MBのサイズのランク・エクステントを有してもよい。
【0057】
さらに、方法500は、動作504に進むことができ、データを含む移行元ストレージ・プール内のランク・エクステントに対応するVSTエントリが識別される。一実施形態では、ボリューム・エクステントは、ボリューム・セグメント・テーブル(VST)のエントリ内にグループ化され、各ボリューム・エクステントは、満杯または空のいずれかである。たとえば、一実施形態では、満杯のボリューム・エクステントは、移行元ストレージ・プール内のデータの物理的位置(たとえば、ボリューム・エクステントに関連するデータが格納されるランクおよびそのランク内のランク・エクステントの識別情報)を含む。別の例では、VSTの各エントリは、所定の数の連続するボリューム・エクステントを含む。さらに別の例では、VSTは、ボリュームの論理エクステント(たとえば、ボリューム・エクステント)を、ストレージ・プール内の1つまたは複数のランクの物理エクステント(たとえば、ランク・エクステント)にマッピングする。
【0058】
さらに、方法500は、動作506に進むことができ、ボリューム内の識別されたVSTエントリに、小さいVSTが割り当てられ、同期される。一実施形態では、小さいVSTは、VSTのエントリをより高い粒度で表現および管理する。たとえば、VSTの各エントリは、VSTエントリ番号によってのみ識別されるグループ化された複数のボリューム・エクステントを含む。別の例では、単一のVSTエントリ内にグループ化された複数のボリューム・エクステントのそれぞれに対応するエントリを有する小さいVSTによって、単一のVSTエントリが表現されてもよい。
【0059】
さらに、一実施形態では、小さいVSTを同期することは、小さいVSTのそれぞれ内の論理ボリューム・エクステントを、移行対象のデータを含む移行元ストレージ・プール内のランク・エクステント内の対応するオフセット位置を指すように設定することを含んでもよい。たとえば、ランク・エクステントのオフセット位置は、ランク・エクステントの論理表現内の、(たとえば、ランク・エクステントの所定の部分を示す)論理ランク・エクステント番号を表す。別の例では、サイズ1GBのランク・エクステントは、(単一の1GBのランク・エクステントが64個の16MBのオフセット位置を有する、などのように)それぞれがランク・エクステントの16MB部分を表す複数のオフセット位置を有してもよい。これにより、より高い粒度でランク・エクステントの表現が可能になる。
【0060】
別の実施形態では、小さいVSTを同期することは、移行元ストレージ・プール内の対応するランク・エクステント内のオフセット位置を含むボリューム・エクステントを含むように小さいVSTをポピュレートすることを含んでもよい。このようにして、小さいVST内のエントリは、小さいVST内のエントリの系統立て(たとえば、順序、番号付けなど)が、小さいVSTに対応する割り当てられたランク・エクステント内のオフセット位置の系統立てと一致するようにポピュレートされる。
【0061】
また、方法500は、動作508に進むことができ、1つまたは複数のランク・エクステントが移行先ストレージ・プール内に割り当てられる。一実施形態では、移行先ストレージ・プール内に割り当てられるランク・エクステントの数は、ボリュームのサイズに対応する。たとえば、ボリュームによって論理的に表されるデータの合計サイズが、移行先ストレージ・プール内に割り当てられる。別の例では、ボリュームによって論理的に表されるデータの合計サイズを移行先ストレージ・プールのランク・エクステント・サイズで除算して、移行先ストレージ・プール内に割り当てられるランク・エクステントの数を決定する。別の実施形態では、1つまたは複数のランク・エクステントは、ランダムに、連続的に、非連続的になどで割り当てられる。
【0062】
さらに、一実施形態では、1つまたは複数のランク・エクステントは、1つまたは複数の基準に従って割り当てられてもよい。たとえば、1つまたは複数のランク・エクステントは、移行先ストレージ・プール内のランクのデータ検索速度に基づいて割り当てられてもよい。たとえば、ランクのそれぞれは、データ検索速度の降順にリストされてもよく、(たとえば、最もデータ検索速度が速いランクから開始するなどした)そのリストに従って、エクステントがランクに割り当てられてもよい。
【0063】
別の例では、1つまたは複数のランク・エクステントは、移行先ストレージ・プール内のランクのそれぞれに現在格納されているデータのデータ量に基づいて割り当てられてもよい。たとえば、ランクは、現在利用可能なストレージ空間の量の降順にリストされてもよく、(たとえば、現在利用可能なエクステントが最も多いランクから開始するなどした)そのリストに従って、エクステントがランクに割り当てられてもよい。
【0064】
さらに、方法500は、動作510に進むことができ、ボリュームに関連付けられたデータが、データを含む移行元ストレージ・プール内のランク・エクステントから、移行先ストレージ・プールの1つまたは複数のランク内の1つまたは複数のランク・エクステントに転送される。一実施形態では、データを転送することは、ボリューム内で以前に割り当てられたすべてのボリューム・エクステントに対応する移行元ストレージ・プールの1つまたは複数のRSTのランク・エクステント内のすべてのオフセット位置の位置を特定することを含む。別の実施形態では、データを転送することは、移行先ストレージ・プール内で割り当てられたすべてのランク・エクステントを特定することを含む。
【0065】
さらに、一実施形態では、データを転送することは、移行元ストレージ・プール内のランク・エクステントのオフセット位置に格納されたデータを、移行先ストレージ・プール内の対応する割り当てられたランク・エクステントに転送することを含む。たとえば、移行元ストレージ・プールのランクのランク・エクステントのオフセット位置に格納されたデータは、移行先ストレージ・プールの割り当てられたランク・エクステントに転送される。
【0066】
また、方法500は、動作512に進むことができ、小さいVSTが、移行先ストレージ・プールの1つまたは複数のランク内の1つまたは複数のランク・エクステント内の転送されたデータに対応するように更新される。たとえば、ボリューム・エクステントは、ボリュームの小さいVST内で、転送されたデータを格納している移行先ストレージ・プールの割り当てられた1つまたは複数のランク・エクステント内の対応する位置を指すように調整される。
【0067】
さらに、方法500は、動作514に進むことができ、移行元ストレージ・プール内の1つまたは複数のランク・エクステントからデータが解放される。一実施形態では、データを解放することは、移行元ストレージ・プール内の1つまたは複数のランク・エクステントからデータを削除することを含んでもよい。
【0068】
たとえば、小さいVST内のボリューム・エクステントは、当初は、そのボリューム・エクステントによって論理的に表されるデータが物理的に格納されている移行元ストレージ・プール内のランク・エクステントの論理表現内のオフセット位置を識別する。別の例では、ボリューム・エクステントは、小さいVST内で、ボリューム・エクステントに関連付けられたデータが移行された移行先ストレージ・プールの割り当てられたランク・エクステントを識別するように更新される。さらに別の例では、格納されたデータは、移行元ストレージ・プール内のランク・エクステントの論理表現内のオフセット位置から、移行先ストレージ・プールの割り当てられたランク・エクステントに移行される。
【0069】
このようにして、ボリュームの小さいVST内のボリューム・エクステントは、それらのボリューム・エクステントに関連付けられたデータが格納されている移行先ストレージ・プールに割り当てられたランク・エクステントと一致する。たとえば、ボリュームの小さいVST内のボリューム・エクステントの位置は、エントリのデータが格納されている割り当てられたランク・エクステントと一致する。これにより、移行先ストレージ・プール内のデータ再呼び出しが簡素化および迅速化される。
【0070】
一実施形態では、1つまたは複数のアプリケーションが、移行先ストレージ・プールのデータへのアクセスを提供される。たとえば、1つまたは複数のホストで実行している1つまたは複数のアプリケーションが、1つまたは複数のデータ要求をボリュームに送信してもよく、ボリュームは、データ要求を移行先ストレージ・プールに誘導してデータ・アクセスを実施してもよい。別の実施形態では、1つまたは複数のアプリケーションは、移行元ストレージ・プール内のより大きいランク・エクステントの粒度と比較して、移行先ストレージ・プール内のより小さいランク・エクステントの粒度を使用してデータにアクセスするときに、より効率的に実行することができる。
【0071】
このようにして、移行元ストレージ・プールから、移行元ストレージ・プールのランク・エクステント・サイズよりも小さいランク・エクステント・サイズである移行先ストレージ・プールに、データが移行される。より小さいランク・エクステントを使用するとアプリケーションがより良好に動作できるので、これにより移行先ストレージ・プール内のデータにアクセスするアプリケーションの性能を向上させることができる。
【0072】
図6Aは、一実施形態による、データ移行前の例示的なストレージ環境600を示す。図示のように、VST602は、ボリューム0 604内に格納されたデータの論理表現を格納する。さらに、RSTは、移行元プール0 626のランク3 624内に格納されたデータの物理表現を格納する。また、移行元プール0 626のランク粒度は1GBである。たとえば、移行元プール0 626内の各ランク・エクステントのサイズは1GBである。
【0073】
さらに、満杯のボリューム・エクステントVSTエントリ632および634は、データが移行元プール0 626内に物理的に格納されているRST内の位置630A~Bを参照する。たとえば、移行元プール0 626のランク3 624のランク・エクステント0 630Aは、ボリューム0 604内のVSTエントリ0 632へのリンクを含む。逆に、ボリューム0 604内のVSTエントリ0 632は、移行元プール0 626のランク3 624のランク・エクステント0 630Aへのリンクを含む。
【0074】
同様に、移行元プール0 626のランク3 624のランク・エクステント64 630Bは、ボリューム0 604内のVSTエントリ2 634へのリンクを含む。逆に、ボリューム0 604内のVSTエントリ2 634は、移行元プール0 626のランク3 624のランク・エクステント64 630Bへのリンクを含む。
【0075】
このようにして、ボリューム0 604内のデータの論理表現間の接続が、移行元プール0 626内のデータの物理表現にマッピングされる。
【0076】
図6Bは、一実施形態による、移行要求に応答する例示的なストレージ環境600を示す。移行先プール1 622のランク粒度は16MBである。たとえば、移行先プール1 622内の各ランク・エクステントのサイズは16MBである。移行元プール0 626のランク粒度は1GBであるので、移行先プール1 622は、移行元プール0 626よりも小さいランク粒度を有する。
【0077】
一実施形態では、移行元プール0 626から移行先プール1 622にデータを移行するよう求める要求が受信される。別の実施形態では、移行要求に応答して、小さいVST614および616がボリューム0 604内に作成される。たとえば、小さいVST 614は、VSTエントリ0 632内のボリューム・エクステントを表すために、小さいVST 616は、VSTエントリ2 634内のボリューム・エクステントを表すために、それぞれ使用される。
【0078】
さらに、一実施形態では、小さいVST614内のエクステント618A~Eは、割り当てられたランク・エクステント630Aの対応するオフセット位置640A~Eへのリンクを含むように、また小さいVST616内のエクステント619A~Eは、割り当てられたランク・エクステント630Bの対応するオフセット位置641A~Eを含むように、更新される。割り当てられたランク・エクステント630Aのオフセット位置640A~Eの論理表現636、および割り当てられたランク・エクステント630Bのオフセット位置641A~Eの論理表現638が示されている。たとえば、小さいVST614のボリューム・エクステント0 618Aは、割り当てられたランク・エクステント0 630Aの論理表現636のオフセット位置0 640Aを指すように更新されてもよく、小さいVST614のボリューム・エクステント1 618Bは、割り当てられたランク・エクステント0 630Aの論理表現636のオフセット位置1 640Bを指すように更新されてもよく、以下同様である。
【0079】
このようにして、小さいVST614内のエクステント618A~Eと、割り当てられたランク・エクステント630Aのオフセット位置640A~Eとの間、および小さいVST616内のエクステント619A~Eと、割り当てられたランク・エクステント630Bのオフセット位置641A~Eとの間で相関をとることができる。
【0080】
図6Cは、一実施形態による、移行元プール0 626から移行先プール1 622へのデータ移行中の例示的なストレージ環境600を示す。図示のように、移行先プール1 622では、移行先ランク0 610内にランク・エクステント620A~Eが割り当てられ、移行先ランク1 612内にランク・エクステント621A~Eが割り当てられる。割り当てられたランク・エクステント620A~Eおよび621A~Eは連続しているが、割当ては連続して実行されない場合があることに留意されたい。
【0081】
さらに、移行先ランク0 610および移行先ランク1 612が示されているが、移行先プール622内の他のランクからのランク・エクステントが割り当てられてもよい。たとえば、ランク・エクステントは、ランダムに、ランクのデータ検索速度、ランクに現在格納されているデータの量などに従って、移行先プール622内のランク間で割り当てられてもよい。
【0082】
さらに、図示のように、ランク3 624のランク0 630Aのオフセット位置0 640Aに物理的に格納されたデータは、移行先ランク1 612のランク・エクステント1 621Bに転送されており、小さいVST614のボリューム・エクステント0 618Aは、ランク・エクステント1 621Bを指すように更新される。逆に、移行元プール1 622の移行先ランク1 612のランク・エクステント1 621Bは、ボリューム0 604内のボリューム・エクステント0 618Aへのリンクを含むように更新される。これにより、オフセット位置0 640Aのデータは古くなる。
【0083】
同様に、図示のように、オフセット位置2 640Cに物理的に格納されたデータは、移行先ランク0 610のランク・エクステント1 620Bに転送されており、小さいVST614のボリューム・エクステント2 618Cは、ランク・エクステント1 620Bを指すように更新される。逆に、移行元プール1 622の移行先ランク0 610のランク・エクステント1 620Bは、ボリューム0 604内のボリューム・エクステント2 618Cへのリンクを含むように更新される。これにより、オフセット位置2 640Cのデータは古くなる。
【0084】
さらに、図示のように、オフセット位置65 641Bに物理的に格納されたデータは、移行先ランク1 612のランク・エクステント0 621Aに転送されており、小さいVST616のボリューム・エクステント129 619Bは、ランク・エクステント0 621Aを指すように更新される。逆に、移行元プール1 622の移行先ランク1 612のランク・エクステント0 621Aは、ボリューム0 604内のボリューム・エクステント129 619Bへのリンクを含むように更新される。これにより、オフセット位置65 641Bのデータは古くなる。
【0085】
また、図示のように、オフセット位置127 641Eに物理的に格納されたデータは、移行先ランク0 610のランク・エクステント2 620Cに転送されており、小さいVST616のボリューム・エクステント191 619Eは、ランク・エクステント2 620Cを指すように更新される。逆に、移行元プール1 622の移行先ランク0 610のランク・エクステント2 620Cは、ボリューム0 604内のボリューム・エクステント191 619Eへのリンクを含むように更新される。これにより、オフセット位置127 641Eのデータは古くなる。
【0086】
図6Dは、一実施形態による、移行元プール0 626から移行先プール1 622へのデータ移行後の例示的なストレージ環境600を示す。図示のように、移行元プール0 626のランク・エクステント0 630Aおよび64 630Bに物理的に格納されたすべてのデータが、移行先プール1 622のランク0 610およびランク1 612内の割り当てられたランク・エクステントに転送される。さらに、小さいVST 614および616の対応するボリューム・エクステントは、移行されたデータを現時点で格納している対応するランク・エクステントを指すように更新される。
【0087】
これにより、ランク・エクステント0 630Aおよび64 630Bのすべてのオフセット位置のデータが古くなり、その結果、このランク・エクステント0 630Aおよび64 630Bのデータは解放される。
【0088】
このようにして、データは、移行元プール0 626から移行先プール1 622に移行されてもよく、ボリューム0 604は、移行を反映するように更新されてもよい。
【0089】
大きいエクステント・プールから小さいエクステント・プールへのボリュームの移行
ストレージ製品のエクステント・プールは、エクステント・サイズが異なる場合がある。たとえば、DS8000(R)は、大きいプールに1GBのエクステント・サイズを使用し、小さいプールに16MBを使用することができる。小さいプールを使用するとより良好に動作するワークロードもあれば、大きいエクステント・プールでより良好に動作するワークロードもある。したがって、ワークロードの変化に応じて、様々なサイズのエクステント・プール間でボリュームを移行する必要がある。
【0090】
エクステントの移行は、ボリュームの移行の構築ブロックである。エクステントの移行開始時に、ターゲット・エクステント・プールに、移行元エクステントの移行ターゲットとしてランク・エクステントが割り当てられる。移行元とターゲット・エクステント・プールのエクステント・サイズが同じである場合、移行プロセスは、ターゲット・プールに1つのエクステントを割り当てることと、データを移行元からターゲットに移行することと、移行の進行中にバックエンドI/Oを保持すること(または、ミラー書込みを実行すること)と、移行が完了した時点でI/Oをターゲットに切り替えることとを含む。
【0091】
データを大きいエクステント・プールから小さいエクステント・プールに効率的に移行する方法であって、移行が(計画的または計画外に)中断されたときに移行を再開することができる方法を開示する。
【0092】
一実施形態では、ランク・セグメント・テーブル(RST)は、ランク・エクステントおよび物理ランク・エクステントが属する論理ボリューム・エクステントの状態を記述するランク(アレイ)のマッピング・テーブルである。たとえば、ランクrOが1Tで、エクステント・サイズが1Gである場合、このRSTテーブルは1024個のエントリを有し、各エントリは1つの物理エクステントを表す。ボリューム0x1010の論理エクステント1にランク・エクステント0が割り当てられる場合、RSTのエントリは、物理エクステント状態が割り当てられていることを示す情報を有し、それがボリューム0x1010の論理エクステント1に割り当てられる。
【0093】
さらに、一実施形態では、ボリューム・セグメント・テーブル(VST)は、ホストI/Oが到着したときにボリュームLBA境界にある物理的位置を容易に特定できるように、ボリュームの論理エクステントをランクの物理エクステントにマッピングする、ボリュームのマッピング・テーブルである。
【0094】
さらに、一実施形態では、小さいボリューム・セグメント・テーブル(smVST:Small Volume Segment Table)もまた、ホストI/Oが到着したときにボリュームLBA境界にある物理的位置を容易に特定できるように、小さい論理エクステント(16MB)をランクの物理エクステントにマッピングする、各エントリに64個のエントリを含むボリュームのマッピング・テーブルである。
【0095】
さらに、一実施形態では、RSTのみがディスク内で永続的であり、VSTは、構築され、RSTに基づいてオン・デマンドでメモリにロードされる。
【0096】
また、一実施形態では、以下のステップが、大きいエクステント・プールから小さいエクステント・プールへのエクステント移行を提供する。
1.移行要求を確実に遂行できること事前にチェックする。
2.シン・プロビジョニング・ボリュームである場合、シン・プロビジョニングの書込みを休止する。
3.ボリューム・エクステント・プールIDをターゲット・エクステント・プールに更新し、空間割当てが進行中であることを示すためのボリューム・フラグをオンにし、ボリューム構造を強化する。
4.ターゲットRSTオブジェクトを顧客データに割り当てる。
5.シン・プロビジョニング・ボリュームに関しては、移行元の大きいエクステントがすでに割り当てられている場合、ターゲット・エクステント・プールに64個の小さいエクステントを割り当て、それらをDSR_TGTとしてマークする。移行元エクステントが割り当てられていない場合、ターゲット・プールに小さいエクステントを割り当てる必要はない。
6.ターゲットRSTオブジェクトをメタ・データに割り当てる。
7.シン・プロビジョニング・ボリュームである場合、シン・プロビジョニングの書込みを再開する。
8.RST変更後ビットマップを使用して、変更後RSTオブジェクトを強化する。
9.シン・プロビジョニング・ボリュームである場合、シン・プロビジョニングの書込みを休止する。
10.すべてのエントリが未割当て状態の場合、smVSTを割り当てる。
11.ピアLPARにメールを送信して、smVSTを同期する(このステップはESEボリュームにのみ有効である)。
12.シン・プロビジョニング・ボリュームである場合、シン・プロビジョニングの書込みを再開する。
13.ボリューム割当てフラグをオフにし、ボリューム移行フラグをオンにし、ボリューム構造を強化する。
14.ボリューム・エクステントの移行に進む。
15.ターゲット・プールにおいてDSR_TGT状態の小さいエクステントを見つけ、それを移行元の小さいエクステント・チャンクとペアにして、小さいエクステントの移行を開始する。I/Oを16MB単位で保持する。
16.移行元エクステントからの16MBの顧客データがすべてターゲットに含まれるようになった時点で、メタ・データ更新フェーズに切り替える。
17.ターゲットRSTの状態をTGT_CMPLT状態に変更して強化する。
18.smVSTがまだ存在しない場合、smVSTを割り当てる。
19.smVSTエントリを、移行元の大きいエクステント内の関係する小さいチャンクを指すように初期化する。
20.smVSTを、使用可能なすべてのクラスタで新しいターゲットの小さいエクステントを指すように更新する。
21.保持されているすべてのステージ&デステージI/Oを解除する。
22.CACHE SCANをして、CACHEにエクステント内のすべての変更されたトラックをデステージさせる。
23.ターゲットに移行すべき最後の小さいチャンクである場合、移行元エクステントを解放し、それ以外の場合、ステップ15に戻り、次の小さいチャンクを処理する。
24.ターゲットRSTの状態をALLOCATED状態に変更して強化する。
【0097】
空間を割り当てる方法およびsmVSTマッピング・テーブルを割り当てる/更新するタイミング
一実施形態では、移行が開始される前に、ターゲット・エクステント・プールに空間が事前に割り当てられる。1GBの大きいエクステントは、64個の16MBの小さいエクステントに等しく、したがって、移行元の大きいエクステントが割り当てられている場合、ターゲット・プールには64個の小さいエクステントが事前に割り当てられる。移行元の大きいエクステントがまだ割り当てられていない場合、ターゲット・プールに空間をプロビジョニングする必要もない。
【0098】
移行元がまだ割り当てられていない場合、64個の小さいエクステント・チャンクにsmVSTエントリを割り当てるべきであり、そうすることで、I/Oが64個の小さいエクステント・チャンクのいずれかに書込みを行うと、ターゲットの小さいエクステント・プールから小さいエクステントを割り当て、smVSTエントリを、ターゲットの小さいエクステントを指すように更新することができる。smVSTの更新は、ストレージ・ノード間で同期される必要がある。
【0099】
移行元の大きいエクステントが割り当てられた状態にある場合、事前にsmVSTをさらに割り当て、そのエントリを、大きいエクステント内の関係する小さいチャンクを指すように更新すること、または、大きいエクステントの16MBの最初の小さいチャンクがターゲットの小さいエクステントに移行されるまでsmVSTの割当てを遅らせることができる。
【0100】
バックエンドI/Oを保持する方法
一実施形態では、バックエンドI/Oは、16MBの小さいエクステント単位に保持される。16MBの小さいチャンクの、ターゲット・プール内の大きいエクステントから関係する小さいエクステントへの移行中、移行元からターゲットへの移行が実行されているときに、移行元とターゲットの両方にバックエンドI/Oが書き込まれる。移行元の小さいチャンクからの顧客データがほとんどターゲットに含まれた時点で、メタ・データ更新フェーズへの切り替えが実行される。ターゲットRSTの状態をTGT_CMPLT状態に変更することは、コピーが完了したことを示し、後でI/Oをターゲットに誘導できるように、関係するsmVSTエントリを、ターゲット・エクステントを指すようにする更新が実行される。
【0101】
計画的/計画外の再起動による移行の中断を扱う方法
計画的/計画外の再起動によって移行が中断された場合、1GBのデータの一部は移行元プールにあり、他のデータはターゲット・プールにある。どちらのコピーを使用するかをどのように選択するか?正しいランク・セグメントにマッピングするためにVSTをどのように構築するか?一実施形態では、小さい方が常に成功をもたらす。すなわち、プロセスは、ランクをスキャンし、TGT_CMPLT状態またはALLOCATED状態のいずれかにあるRSTごとにVSTを構築することを含んでもよい。小さいランクからのRSTは、常に大きいランクからのRSTを上書きする。その理由は、小さいエクステントがすでにTGT_CMPLT状態またはALLOCATED状態にある場合、I/Oが小さいエクステントをターゲットにするように切り替えられているからである。したがって、関係するsmVSTを、ターゲットの小さいエクステントを指すように上書きする必要がある。
【0102】
本発明は、システム、方法、またはコンピュータ・プログラム製品あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含んでもよい。
【0103】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、および上記の任意の適切な組合せが含まれる。コンピュータ可読記憶媒体は、本明細書で使用される場合、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波(たとえば、光ファイバ・ケーブルを通る光パルス)、または電線を介して送信される電気信号などの、一過性の信号自体であると解釈されるべきではない。
【0104】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含んでもよい。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体での記憶のために転送する。
【0105】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラム言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれた移行元・コードもしくはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がコンピュータ上もしくはサーバ上で実行されてもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して接続されてもよい。いくつかの実施形態では、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路をパーソナライズすることによって、電子回路がコンピュータ可読プログラム命令を実行してもよい。
【0106】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【0107】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実施するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものであってもよい。また、これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作の態様を実施する命令を含む製造品を含むように、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示できるものであってもよい。
【0108】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実施するように、コンピュータ実施プロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0109】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表すことがある。いくつかの代替の実装形態では、ブロックに記載された機能は、図に記載された順序とは異なる順序で行われてもよい。たとえば、連続して示されている2つのブロックは、実際には、関与する機能に応じて、実質的に同時に実行されてもよく、またはそれらのブロックは、場合によっては逆の順序で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定された機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
【0110】
さらに、様々な実施形態によるシステムは、プロセッサ、およびプロセッサと統合されているか、またはプロセッサによって実行可能であるか、あるいはその両方であり、本明細書に記載のプロセス・ステップのうちの1つまたは複数を実行するように構成された論理を含んでもよい。統合されているとは、プロセッサに、特定用途向け集積回路(ASIC)、FPGAなどのハードウェア論理として論理が組み込まれていることを意味する。プロセッサによって実行可能であるとは、論理が、プロセッサによってアクセス可能であり、プロセッサによる実行時にプロセッサにいくつかの機能を実行させるように構成された、ハードウェア論理、ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部などのソフトウェア論理、またはハードウェア論理とソフトウェア論理との組合せであることを意味する。ソフトウェア論理は、当技術分野で知られている任意のメモリ・タイプのローカルまたはリモートあるいはその両方のメモリに格納されてもよい。ソフトウェア・プロセッサ・モジュール、またはASIC、FPGA、中央処理装置(CPU)、集積回路(IC:integrated circuit)、グラフィックス処理装置(GPU:graphics processing unit)などのハードウェア・プロセッサ、あるいはその両方などの当技術分野で知られている任意のプロセッサが使用されてもよい。
【0111】
上記のシステムまたは方法論あるいはその両方の様々な特徴を任意の方法で組み合せて、上記の説明から複数の組合せを作成できることは明らかであろう。
【0112】
本発明の実施形態は、サービスをオン・デマンドで提供するために、顧客に代わって展開されるサービスの形式で提供され得ることがさらに理解されよう。
【0113】
様々な実施形態が上記で説明されてきたが、これらは単なる例として提示されたものであり、限定ではないことを理解されたい。したがって、好ましい実施形態の幅広さおよび範囲は、上記の例示的な実施形態のいずれによっても制限されるべきではなく、添付の特許請求の範囲およびそれらの均等物に従ってのみ定義されるべきである。