JP6270827B2 - データ・マイグレーションのための方法、システム、およびコンピュータ・プログラム - Google Patents

データ・マイグレーションのための方法、システム、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP6270827B2
JP6270827B2 JP2015514628A JP2015514628A JP6270827B2 JP 6270827 B2 JP6270827 B2 JP 6270827B2 JP 2015514628 A JP2015514628 A JP 2015514628A JP 2015514628 A JP2015514628 A JP 2015514628A JP 6270827 B2 JP6270827 B2 JP 6270827B2
Authority
JP
Japan
Prior art keywords
data
storage
migration
lun
api
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015514628A
Other languages
English (en)
Other versions
JP2015519667A (ja
Inventor
ジョーンズ、カール、エヴァン
チャウンカー、ゴーラヴ
バーヴィシー、パンカジュ
カンデルワル、パンカジュ、オムプラカシュ
ロイ、サブホジット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2015519667A publication Critical patent/JP2015519667A/ja
Application granted granted Critical
Publication of JP6270827B2 publication Critical patent/JP6270827B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

Description

本発明は、概して、コンピュータに関し、より詳細には、コンピューティング・ストレージ環境で記憶性能を高めるための方法、システム、およびコンピュータ・プログラムに関する。
コンピュータおよびコンピュータ・システムは、今日の社会のさまざまな場所で見受けられる。コンピューティング環境およびネットワークは、家庭、職場、学校、政府機関、およびその他の場所で見受けられる可能性がある。コンピューティング環境は、ユーザに示されるローカルのインターフェースから遠隔にある場合が多い1つまたは複数のストレージ環境にデータを記憶することがますます増えている。
これらのコンピューティング・ストレージ環境は、協調して働くことが多いディスク・ドライブなどの多くのストレージ・デバイスを使用して大量のデータを記憶し、取り出し、更新し、そして、それらのデータは、それらのデータを要求または送信するホスト・コンピュータに与えられる可能性がある。場合によっては、いくつかのデータ・ストレージ・サブシステムが、単一のデータ・ストレージ・システムとして集合的に管理される。これらのサブシステムは、いくつかの処理ユニットまたは処理ユニットのクラスタを組み合わせるホスト「シスプレックス(sysplex)」(システム・コンプレックス)構成によって管理される可能性がある。このように、さまざまな種類のストレージ・デバイスを含むことが多いマルチ・ティア/マルチ・システム・コンピューティング環境が、大量のデータを組織化し、処理するために使用される可能性がある。
データ・マイグレーションの必要性は、さまざまな理由により生じるすべてのデータ・センターにおける現実的な必要性である。そのようなデータ・マイグレーションは、アプリケーションに対して透過的(つまり、付随するダウンタイムがアプリケーションに対して0)でなければならない。今日、データ・マイグレーションは、ホストまたはストレージ・コントローラにインストールされたストレージ仮想化ソフトウェアによって提供される機能である。しかしながら、本手法では、アプリケーションは、ストレージ・コントローラによって調整されるデータ・マイグレーションについて、データのどの部分が新しい記憶位置にマイグレーションされなければならないかの制御を実施することができない。ホストに基づくマイグレーション・ソリューションは、データのどの部分がマイグレーションされなければならないかの制御をアプリケーションに許すための包括的なインターフェースを提供しない。また、ホストに基づくマイグレーション・ソリューションは、データ・マイグレーションを成し遂げるためにデータをホストに移動し、またデータをホストから移動しなければならないという欠点も持つ。この制御は、論理装置名(LUN:Logical Unit Name)全体、またはより包括的には通常のストレージ・ユニットよりも、ずっと細かいレベルでのデータ・マイグレーションを必要とする可能性があるデータベースなどのアプリケーションにとって有益である。その代わりに、さらに説明されるように、多くの場合、データ・マイグレーションの決定が、アプリケーションの知識なしに行われる。このことは、元来鋭いピークを持つ重い作業負荷が今日のストレージ・コントローラ内で利用可能な標準的な監視メカニズムによって検出され得ないために、そのようなデータの移動のためのピーク性能の必要性が既になくなった可能性がある後にマイグレーションが調整される状況を生じ得る。したがって、アプリケーションの要求に応じて、ストレージの細かな部分がストレージ・コントローラによってマイグレーションされ得るメカニズムに対する必要性が存在する。
したがって、以上のことを考慮して、コンピューティング環境でプロセッサによって論理装置名(LUN)よりも細かいデータ・マイグレーションを実行するためのさまざまな実施形態が提供される。一実施形態においては、単なる例として、そのようなLUNよりも細かいデータ・マイグレーションのための方法が開示される。指定されたサイズのデータをLUNの裏側の物理的なストレージから新しい物理的な位置にマイグレーションするためにストレージ・コントローラと所有するアプリケーションとの間のインターフェースとして使用するためのソース・コードに基づく仕様が実装される。
上述の例示的な実施形態に加えて、さまざまなシステムおよびコンピュータ・プログラムの実施形態が提供され、関連する利点を提供する。
本発明の利点が容易に理解されるために、上で簡潔に説明された本発明のより詳細な説明が、添付の図面において図示される特定の実施形態を参照することによってなされる。これらの図面が本発明の典型的な実施形態を示すに過ぎず、したがって、本発明の範囲を限定すると見なされるべきでないことを理解した上で、本発明が、添付の図面を用いてさらに具体的かつ詳細に示され、説明される。
本発明の態様を実装し得る例示的なマルチ・ティア・データ・ストレージ・コンピューティング環境を示すブロック図である。 LUNよりも細かいレベルのデータ・マイグレーションを実行するための従来の方法のブロック図である。 本発明の態様が実施され得るLUNよりも細かいレベルのデータ・マイグレーションを実行するための例示的な方法のブロック図である。 やはり本発明の態様が実施され得るLUNに関する仮想・物理マッピング(virtual−to−physical mapping)を変更するための例示的な方法の第1のステップのブロック図である。 ここでもやはり本発明の態様が実施され得る、図4に既に示された仮想・物理マッピングを変更するための例示的な方法の第2のステップのブロック図である。 LUNよりも細かいレベルのデータ・マイグレーションを実行するための例示的な方法の流れ図である。 LUNよりも細かいレベルのデータ・マイグレーションを実行するためのさらなる例示的な方法の流れ図である。 LUNよりも細かいレベルのデータ・マイグレーションを実行するためのさらなる例示的な方法の流れ図である。 LUNよりも細かいレベルのデータ・マイグレーションを実行するためのさらなる例示的な方法の流れ図である。 LUNよりも細かいレベルのデータ・マイグレーションを実行するためのさらなる例示的な方法の流れ図である。 LUNよりも細かいレベルのデータ・マイグレーションを実行するためのさらなる例示的な方法の流れ図である。
上述のように、データ・マイグレーションの必要性は、さまざまな理由により生じるすべてのデータ・センターにおける現実的な必要性である。そのような場合の例は、(a)アクティブに使用されるストレージ・アレイのリースの満了による、データを1つのストレージ・アレイから別のストレージ・アレイに移動する必要性、(b)使用頻度の比較的低いデータを比較的下層のティアのストレージにマイグレーションする必要性、および(c)組織の成長による必要性を満たすための高性能および大容量のストレージ・アレイへのアップグレードを含む。データ・マイグレーションは、所有するアプリケーションに対して透過的でなければならず、付随するダウンタイムは、所有するアプリケーションに対して0でなければならない。
重ねて、上述のように、今日のデータ・マイグレーションは、Linux(R)互換環境のためのLogical Volume Manager(LVM)およびVeritas(R)Volume Managerなどのホストにインストールされたストレージ仮想化ソフトウェアによって提供され、ストレージ・コントローラ(例えば、IBM(R)System Storage DS800またはStorwize(R)V7000)およびネットワーク・ストレージ・バーチャライザ(例えば、IBM(R)SAN Volume Controller(SVC))によって容易にされる機能である。一例においては、サイズ1TBのLUNに関するデータをマイグレーションする必要性が存在する場合、LUN全体が、現在使用中である1TBのバックエンド・ストレージからサイズ1TBの新しいストレージにマイグレーションされる。したがって、本手法においては、特定のLUNに記憶されたデータ全体が、新しい位置にマイグレーションされる。
しかしながら、本手法では、データのどの部分が新しい記憶位置にマイグレーションされなければならないかの制御を実施することができない。これは、LUN全体よりもずっと細かいレベルでデータをマイグレーションする必要がある可能性があるデータベースなどのアプリケーションにとって有用である。以下の例を考える。所有するアプリケーション、この場合、データベース(すなわち、Oracle(R))が、所与のテーブルのデータがもはや頻繁にアクセスされないので、単一のテーブル(またはレコード)のみを現在のストレージから新しい記憶位置にマイグレーションすることを望む。アプリケーションによって制御されるLUNのこの種の部分的なデータ・マイグレーションは、ストレージ・バーチャライザによって提供される従来のマイグレーション方法では不可能である。
LUNよりも細かいレベルでデータをマイグレーションすることが可能である場合、通常、ストレージ・コントローラのレベルでデータ・アクセス・パターンを監視し、分析することによって、そのようなマイグレーションに取りかかる決定が行われる。ストレージ・コントローラはデータの意味(semantics)の知識を持たないので、例えば、ピーク性能の必要性が既になくなったときにマイグレーションがトリガされ得る可能性がある。どのデータがいつマイグレーションされなければならないかに関する最も早い決定を行うことができる適用可能なレイヤは、当該データを生成するアプリケーションである。したがって、アプリケーションの認識およびアプリケーションに基づく意思決定の問題は、既存のソリューションによって対処されないままになっている。
いくつかの従来の技術は、LUNよりも細かいレベルのデータ・マイグレーションの課題に対処しようと試みる。第1に、(ストレージ・アレイとしても知られる)ストレージ・コントローラが、アプリケーションに対して透過的にデータをLUNに関連する物理的なストレージから別の物理的なストレージにマイグレーションする限られた能力を提供する。しかし、そのようなマイグレーションはLUN全体に対して行われ、したがって、アプリケーションが特定のLUNに記憶したデータの一部だけのマイグレーションを必要とする状況にプロセスが適さないものとなる。加えて、ストレージ・コントローラは、通常、同じベンダーに関連するデバイスの間でのみデータ・マイグレーションを可能にし、それによって、ベンダーの固定化を促進し、費用が高くなるかまたはその他の点でリソースを大量に消費するようになりがちである。
第2に、ホストで実行されるストレージ仮想化ソフトウェアが、ディスク・アレイのベンダーにまたがる範囲に及ぶ可能性があるデータ・マイグレーションのユース・ケース(use case)を提供し、したがって、ベンダーの固定化を促進しない。しかし、従来の仮想化ソフトウェアは、LUN全体のデータを1つの物理的なストレージから別の物理的なストレージにマイグレーションする。これは、従来の仮想化ソフトウェアが、LUNよりも細かいレベルでデータをマイグレーションすることを必要とするソフトウェアに関して課題を突きつけることを意味する。
第3に、独自仕様のボリューム管理および(例えば、データベース・ファイルのための)ファイル・システム・ソフトウェアが、異なる物理的なストレージにまたがるLUNよりも細かいベルのデータの移動を可能にする。しかし、そのようなデータ・マイグレーションは、同時に使用される物理的なストレージからホストにデータが読み出されることを必要とし、ホストから、データが、新しいストレージに書き込まれる。このプロセスは、データ・マイグレーションのためのストレージ・ネットワークの帯域幅とホストの中央演算処理装置(CPU)の帯域幅との両方を消費し、そのことは、ネットワークまたはサーバあるいはその両方の性能を低下させる。加えて、そのような独自仕様のソフトウェアは、特定のベンダーに基づく実装に対してベンダーに固有である。
上述の技術とは対照的に、例示される実施形態のメカニズムは、ストレージ仮想化ソフトウェアによって公開されたアプリケーション・プログラム・インターフェース(API)が、LUNよりも細かいレベルでの現在の物理的なストレージから新しい位置へのデータ・マイグレーションをアプリケーションがトリガすることを可能にする技術を示す。これらのメカニズムを使用することによって、アプリケーションは、仮想ディスク上のデータのチャンクの開始LBA(論理ブロック・アドレス)およびサイズと、データがマイグレーションされなければならない物理的なストレージを特定するマイグレーション先の物理的なストレージの記述とを指定することを許される。このAPI呼び出しを受信すると、ストレージ仮想ソフトウェアは、データを、そのデータの現在の記憶位置から指定されたマイグレーション先の記憶位置にアプリケーションから透過的にマイグレーションする。動作が完了すると、ストレージの仮想ディスク・マップ(virtual disk map)が、データの新しい位置を指すようにアトミックに修正される。古い物理的なデータ記憶位置は、解放される。このAPIは、新しいSCSIコマンドの形態で明示されるか、またはXCOPYのような既存のSCSIコマンドを使用する可能性がある。APIのその他のアウト・オブ・バンド(out−of−band)の明示も、あり得る。
例示される実施形態のメカニズムは、以下のことを含むいくつかの利点をもたらす。第1に、ストレージ仮想化ソフトウェアによって公開されたLUNよりも細かいレベルのマイグレーションAPIが、アプリケーションがLUN内のデータの一部を1つの物理的なストレージから別の物理的なストレージにマイグレーションすることを可能にすることができる。これは、アプリケーションが、そのアプリケーションの必要性に応じて個々のレコード、テーブル、またはテーブル空間を新しい物理的なストレージにマイグレーションすることを可能にする。結果として、アクセスされる頻度が比較的低いテーブル/レコードが、比較的安価なストレージを消費する比較的下層のティアのストレージに移動される可能性があり、またはアクセスされる頻度が非常に高いデータが、比較的高いIOPの要件を満たすことができる比較的上層のティアのストレージに移動される可能性がある。
第2に、さまざまな独自仕様のボリューム・コントローラなどのストレージ・エリア・ネットワーク(SAN)内のストレージ・バーチャライザによって公開されたLUNよりも細かいレベルのマイグレーションAPIが、データ全体をホストに読み出し、次にデータを新しいストレージに書き込む必要なしにデータを1つの物理的なストレージから別の物理的なストレージにマイグレーションすることを可能にする。これは、ストレージ・ネットワークの帯域幅を節約し、データ・マイグレーションを調整するためにホストCPUサイクルを使用することを防止する。
第3に、LUNよりも細かいレベルのマイグレーションが、ユース・ケースに応じて特定のLUN上のデータのどの部分がその他の物理的なストレージにマイグレーションされなければならないかを決定するための制御能力をアプリケーションに与える。アプリケーションは、そのアプリケーションのデータに関連する意味について完全な知識を有するので、いつどのデータを移動すべきかに関する最も早く最良の決定を行う可能性が高い。
第4に、ストレージ・コントローラによって行われるLUNよりも細かいマイグレーションが、さまざまなベンダーのアプリケーションのためになる。ホストで実行されるその他のアプリケーションは、そのようなAPIからやはり利益を得る可能性がある。最後に、ストレージ仮想化ソフトウェアによって行われるLUNよりも細かいレベルのマイグレーションによって、アプリケーションが、データが置かれるストレージの性能およびコストに基づいて、異なる種類のストレージにデータを記憶する現在の必要性に即座に反応する能力を高めることができる。ストレージ仮想化ソフトウェアが「ホットスポット(hotspot)」マイグレーションについての決定を行うためにデータ・アクセス・パターンを監視する必要がある場合、マイグレーションの恩恵は、遅延の後に(おそらくはより高い性能の必要性がなくなった時点で)のみ感じられる可能性がある。
以下の説明において、本明細書の一部をなし、本発明のいくつかの実施形態を示す添付の図面に対する参照がなされる。本発明の範囲を逸脱することなく、その他の実施形態が利用される可能性があり、構造および動作の変更が行われる可能性があることが理解される。図1は、本発明の態様が実装され得るコンピューティング・ストレージ環境を示す。複数のホスト・システム2a、2b...2nが、ストレージ・ボリューム28、30、および32へのアクセスを管理するストレージ・コントローラ6を通じて1つまたは複数のストレージ・ボリューム28、30、および32に入力/出力(I/O)要求を送信する。特定の実装において、ストレージ・ボリュームは、Just a Bunch of disks(JBOD)として編成された複数のハード・ディスク・ドライブ、RAIDアレイ、直接アクセス記憶装置(DASD)、SSD、テープ・デバイスなどから物理的に構成される可能性がある。
(多くの場合、複雑な関係で物理的に構成される可能性がある)いくつかの物理的または論理的ボリュームを示す代わりに、いくつかの仮想ボリューム22、24、および26がホスト・システム2a、2b...2nに示される。ホスト・システム2a、2b...2nは、プロトコル・スタックのさまざまなレイヤでTCP/IP、ファイバ・チャネル、イーサネット(R)などの複数の通信プロトコルを使用してインターネット、ストレージ・エリア・ネットワーク(SAN)、イントラネット、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)などのネットワーク8を介してストレージ・コントローラ6と通信することができる。
ストレージ・コントローラ6は、ストレージ・コントローラの動作を行うためのコード12を実行するプロセッサ10を含む。ストレージ・コントローラ6は、キャッシュ・システム14と、バッテリーのバックアップを受けるメモリ・デバイスなどの不揮発性ストレージ・ユニット16とをさらに含む。ストレージ・コントローラ6は、仮想ストレージ・ボリューム22、24、および26(ならびにそれによってボリューム28、30、および32)に書き込むべきホスト2a、2b...2nから受信されたデータ更新と、ホスト2a、2b...2nに返すべきボリューム28、30、および32から読み出されたデータとをキャッシュ14に記憶する。高速書き込み(Fast Write)モードで動作するときは、ホスト2a、2b...2nから受信されたデータ更新が、キャッシュ14とNVS16との両方にコピーされる。更新がキャッシュ14とNVS16との両方にコピーされた後、終了ステータスが、データ更新を送信するホスト2a、2b...2nに返される。
ストレージ・コントローラ6は、ストレージ・コントローラ6とホスト2a、2b...2nで動作している所有するアプリケーションとの間のインターフェースとして使用するためのソース・コードに基づく仕様も含む。示された実施形態において、この仕様/インターフェースは、アプリケーション・プログラミング・インターフェース(API)17として表される。API17は、さらに説明されるように、ストレージ・コントローラ6によってホスト2a、2b...2nと、特に、ホスト2a、2b...2nで動作している所有するアプリケーションとに示される。さらに、ストレージ・コントローラ6は、やはりさらに説明されるように、例示される実施形態の目的を達成するためにAPI17と連携して動作し得るストレージ仮想化エンジン18も含む。
キャッシュ・システム14は、仮想ディスク・マップ15、または略して「ストレージ・マップ」15を含む。キャッシュ・システム14は、ホスト2a、2b...2nまたは同様のデバイスからの書き込みデータを受け入れ、次いで、書き込みデータはキャッシュ・メモリに置かれる。一実施形態において、ストレージ・マップ15は、物理的なボリューム28、30、および32を仮想ボリューム22、24、26などに結びつけるためのデータの物理・仮想マッピング(physical−to−virtual mapping)を含む。
図1は、当業者が理解するであろうように、既に示されたストレージ・コントローラ6などのいくつかの相互に関連する構成要素を有するより大きなマルチ・システム/マルチ・クラスタ・ストレージ環境の一部を示す可能性がある。既に示されたように、仮想ボリューム22、24、および26はホスト・システム2a、2b...2nを介してユーザに示されるが、基礎をなす物理的な構成は多くのあり得る形態をとる可能性がある。例えば、SSD、SATA、HDD、テープなどのさまざまな部類のいくつかの相互に関連するストレージ・デバイスが、特定の構成に応じてストレージ・ボリューム28、30、および32を構成する可能性がある。
プロセッサ10などのストレージ環境のさまざまな構成要素が、本発明および特許請求される主題の態様を実装するように適合され得る。例えば、ストレージ仮想化エンジン18は、仮想ディスク・マップ15と併せて仮想化機能を提供するなど、さらに説明されることになるさまざまな機能を実行するためにプロセッサ10と連携して動作することができる。同様に、APIも、プロセッサ10、またはストレージ環境で動作しているその他の構成要素と連携して動作することができる。当業者は、その他のさまざまなデータ処理およびメモリ構成要素がこれらの態様を実現するように実装される可能性があり、ストレージ・コントローラ6またはその他の場所で動作する可能性があることを理解するであろう。
本発明の一実施形態において、ストレージ・コントローラ6は、ホスト2a、2b...2nで動作しているアプリケーションから透過的に、指定されたサイズのデータをLUNの裏側の物理的なストレージ(例えば、28、30、32)から新しい物理的な位置にマイグレーションするためのAPI17を提供する。このAPI17は、特定のデータだけを、そのデータを記憶するために使用されるLUNを邪魔せずに1つの物理的な位置から別の物理的な位置にマイグレーションするためにデータベース(Oracle(R)またはDB2)のようなアプリケーションによって呼び出される可能性がある。
所有するアプリケーションによる使用のために提供される一部の例示的なAPIは、以下を含む。
migrate(sourceLUN #, startLBA, size, targetstorage pool)
このAPIによって、ストレージ仮想化ソフトウェアは、マイグレーションされたデータが置かれなければならないマイグレーション先の位置を選択する。マイグレーション先のストレージ・プールの選択はアプリケーションによってなされ、マイグレーション先のストレージ・プール上のデータの位置がストレージ仮想化ソフトウェアに残される。
migrate(sourceLUN #, startLBA, size,targetLUN #, targetLBA)
このAPIを使用して、アプリケーションは、データがマイグレーションされなければならないマイグレーション先のLUNおよび厳密な位置を制御する。したがって、データをマイグレーションしながらアプリケーションによって完全な制御が実施される。
migrate(sourceLUN #, startLBA, targetstorage pool id) migrate(sourceLUN #, startLBA, targetLUN #, targetLBA)
API呼び出しの上記の明示で、各API呼び出しに関してマイグレーションされるストレージのサイズは決まっており、つまり、実装に応じて例えば128kまたは256kである。呼び出し元は、必要とされるサイズのデータをマイグレーションするためにAPIを複数回呼び出さなければならない。
migrate(sourceLUN #, startLBA, size,targetLUN #, targetLBA, time)
上記API呼び出しでは、アプリケーションは、マイグレーション元のLUNからマイグレーション先のLUNへのデータ・マイグレーションを要求するだけでなく、マイグレーション動作が実行されなければならない時間を示す。実装の困難を緩和するために、一実施形態においては、開始LBAおよびマイグレーション先LBAならびにサイズ・パラメータが、特定のアラインメント(例えば、1GBのエクステント)に制限される可能性があることに留意されたい。注:実装の困難を緩和するために、開始LBAおよびマイグレーション先LBAならびにサイズ・パラメータを特定のアラインメント、例えば、DS8000の1GBのエクステントに制限する必要がある可能性がある。
上述のデータの移動のためのいくつかの例示的なユース・ケースが、以下で与えられる。第1の例においては、所有するアプリケーションが、特定のレコードまたはデータベース・テーブルを、所与のLUN上の現在位置から、電力の消費がより少なく、リソースの消費がより少ないより下層のティアのストレージにマイグレーションすることを望む。これは、比較的古い(あまりアクセスされない)データを長期保存のためによりコスト対効果の高いストレージに移動する必要性によってトリガされる可能性がある。例えば、この動作は、データを、すべてのファイバ・チャネル(FC)ディスクを15k RPMで動作させるコストの高いストレージ・アレイから、SATAディスクをずっと低いRPMで動作させるよりコストのかからないストレージ・アレイにマイグレーションする。そのような場合、データ・マイグレーションAPIは、システム・ボリューム・コントローラ(SVC)などのSAN内のストレージ仮想化要素の影響を受け、アプリケーションのマイグレーション要求に影響を与える。
第2の例においては、所有するアプリケーションが、所与のレコードが頻繁にアクセスされることを発見する。したがって、アプリケーションは、この領域を性能のより高いストレージのティア(例えば、ソリッド・ステート・ドライブ(SSD)ティアまたは15k RPMドライブ・プール)にマイグレーションすることを望む。この種のユース・ケースは、ストレージ・コントローラ内でアプリケーションに制御された「ホットスポット」マイグレーションを容易にすることができる。
ここで、上で検討されたデータ・マイグレーションAPIは、そのような目的のために有用であるが、データベース・アプリケーションなどの特定の種類のアプリケーションに限定されないことに留意されたい。当業者は、APIが、メール・サーバまたはその他の仮想化アプリケーションなどの、データをマイグレーションする必要性のある任意の所有するアプリケーションに適用できる可能性があることを理解するであろう。
上述のAPIのさまざまな実施形態は、特定の用途に適したさまざまな方法で実装され得る。例えば、APIは、小型コンピュータ・システム・インターフェース(SCSI:small computer systems interface)を介して所有するアプリケーションにインラインで提供される可能性がある。別の例において、APIは、インターネット・プロトコル(IP)を介して所有するアプリケーションにアウト・オブ・バンドで提供される可能性がある。当業者は、示されたAPIの異なる実装が特定の状況に対して必要に応じて使用される可能性があることを理解するであろう。
一実施形態においては、上述のデータ・マイグレーションAPIの機能をサポートするストレージ・コントローラで、1組の例示的なステップが、マイグレーション要求を満足するために行われ得る。
第1に、データ・マイグレーションAPIをサポートするストレージ・コントローラが、ストレージ・コントローラによってサポートされるストレージ・プールのリストを、それらのストレージ・プールの性能、冗長性、および電力消費の特徴とともに公開する。この情報は、例えば、モード・センス(Mode Sense)小型コンピュータ・システム・インターフェース(SCSI)コマンドを介して利用できるようにされ、データ・マイグレーションのためのマイグレーション先のストレージ・プールを選択するためにストレージ・コントローラによって使用され得る。
第2に、所与のstartLBA=SLBA1およびsize=SZ1から始まるデータが、(例えば、高性能でコストの高い15k RPMドライブからなる)そのデータの現在の位置から(例えば、コストがより低く、エネルギー効率のよい7.2k RPMドライブからなる)異なるストレージ・プールにマイグレーションされることを要求する上述のSCSIコマンド(または別の実施形態においては、例えば、マイグレーションAPIの呼び出しのモードに応じたアウト・オブ・バンド・コマンド)が、ストレージ仮想化ソフトウェアによって受信される。
第3に、ストレージ仮想化ソフトウェアが、次いで、マイグレーション先のストレージ・プールでこの選択されたデータ・チャンクに「最も適する場所(best fit)」を決定する。そして、ストレージ仮想化ソフトウェアは、バックグラウンドで(アプリケーションから透過的に)データを現在の位置からマイグレーション先の位置にコピーする。
第4に、仮想ディスク・マップが、次いで、LUNのその部分だけが今やよりコストの低いストレージにあるように、自動的に、新しい物理的な位置を指すようにされる。この動作中に、すべてのその他のマイグレーションの動作と同様に、データは、一貫性があり、最新であるように保たれる。
第5に、新しい物理的な記憶位置を反映するようにマップが自動的に変更されると、マイグレーション動作がコミットされる。APIがマイグレーション先の物理的なディスクとデータを置くべき場所とを指定する場合、ストレージ・コントローラは、ストレージ・コントローラが指定されたマイグレーション先のプール上の新しいマイグレーション先の位置を選択する代わりに、アプリケーションによって指定された新しい位置にデータをマイグレーションすることは、覚えておく価値がある。
ここで図2に目を向けると、従来のデータ・マイグレーション・メカニズム200のブロック図が示されている。それぞれのデータ・パス、コマンド・パス、およびコマンド応答パスが、示された矢印および対応する凡例によって、アプリケーション・レベルで示される。第1のステップとして、所有するアプリケーション/ユーティリティが、(ここではFC 15k RPMドライブとして示される)物理的なディスク1から(ここではよりコストの安いシリアル接続SCSI(SAS) 7k RPMドライブとして示される)物理的なディスク2にデータをマイグレーションするためのコマンドを物理的なディスク1に送信する。次に、コマンドの応答が、物理的なディスク1(つまり、物理的なディスク1を担当するストレージ・コントローラ)からユーティリティ/所有するアプリケーションに返される。示されるように、それから、データが、ホストに引き出され、次いで、物理的なディスク2上の新しい位置に書き戻される。この場合は、実行するためにストレージ帯域幅およびサーバ・リソースを消費する。
図2とは対照的に、以下の図3〜4は、本発明による例示的な実施形態を示す。例えば、以下の図3においては、上述のように実行されたAPIを使用するスマートなLUNよりも細かいレベルのデータ・マイグレーションのためのメカニズムが示される。
図3〜4は、例えば、APIがどのように実行されるかと、ストレージ帯域幅およびサーバの能力を消費する、データをディスクからホストに引き出し、その後、データをマイグレーション先の位置に書き込む、既に図2に示されたメカニズムなどの従来のメカニズムによって提供されるデータ・マイグレーション・メカニズムと比較した利点とを示す。対照的に、以下の図3においては、メカニズム300が、本発明の態様が組み込まれ得る、LUNよりも細かいデータ・マイグレーションのための例示的な方法を示す。特に図3を参照すると、一実施形態において、マイグレーションAPIの呼び出しは、ホストのローカルのアプリケーションによって実行されるが、データ・マイグレーションの動作は、ストレージ・コントローラによって実行される。(その他のアプリケーションを含む)その他の独自仕様の従来のデータ・マイグレーション・メカニズムがどのデータをいつマイグレーションすべきかを決定する一方、マイグレーション動作は、ホストを関与させずにストレージ・バーチャライザによって実行される。
図3は、示される実施形態において、LUNよりも細かいデータ・マイグレーションが本発明にしたがってどのように実行されるかを示す。APIを使用し、示される例示的なコマンドを使用して、データベース・アプリケーションは、LUNよりも細かいレベルのデータを(この場合はFC 15kドライブとして示される)物理的なディスク1から(示された実施形態では示されたストレージ・プール内に構成されたSAS 7k RPMドライブからなる)示されたPHYディスク1、2、および3のストレージ・プールP1内の第2の物理的な位置にマイグレーションするための例示的なコマンドを送信する。コマンドは、ホスト(およびそれによってデータベース・アプリケーション)に返される。データベース・アプリケーションがどのデータをいつマイグレーションするべきかに関する決定を行う一方、マイグレーション動作自体はホストの関与なしにストレージ・バーチャライザ(例えば、ストレージ仮想化エンジン18、図1)によって実行される。したがって、示されるように、データは、アプリケーションの代わりに(SVCなどの)バーチャライザがアプリケーションに対する負担となるオーバーヘッドなしにマイグレーションを実行することを可能にすることによってインテリジェントにマイグレーションされる。そのとき、データは、データ・パスによって示されるように、物理的なディスク1からストレージ・プールP1にマイグレーションされる。
ここで以下の図4および5に目を向けると、選択されたLUNに関する仮想・物理マッピングに適用される例示的な動作のブロック図が、上述のAPIによって容易にされるデータ・マイグレーション・メカニズムに応じて示される。これらの図の物理的なディスクは、実際には、基礎をなすストレージ・コントローラによって示される仮想ボリューム(例えば、RAID5ボリューム)である可能性があることに留意されたい。一実施形態において、示された仮想・物理マッピングは、仮想ディスク・マップ15(図1)として実装される可能性がある。しかし、当業者が理解するであろうように、そのようなマッピングのさまざまな実装は、特定のアプリケーションに適するように行われる可能性がある。
最初に図4に目を向けると、第1のステップ400Aにおいて、(ここに示された0からnまでアドレスを振られた)初期LUNアドレス範囲マップが、示されるように物理的なディスク1のアドレス範囲に対応すると特定される。第2のステップ400Bにおいて、図5に示されるように、マイグレーション先のストレージ・プールへのデータのチャンクのマイグレーション動作が完了した後、マイグレーションされたデータのチャンクに対応する物理的なディスク2内のマイグレーション先のストレージ・プールを指すように構成される範囲x〜yを有する新しいLUNアドレス範囲マップが生成される。範囲0〜xおよびy〜nは、示されるように、物理的なディスク1を指すように維持される。
以下の図6は、本発明の態様が実施され得る、コンピューティング・ストレージ環境においてLUNよりも細かいレベルのデータ・マイグレーションを実行するための例示的な方法600の流れ図である。方法600は、指定されたLUNよりも細かいレベルのサイズのデータをLUNの裏側の物理的なストレージから新しい物理的な位置にマイグレーションするためにストレージ・コントローラと所有するアプリケーションとの間のインターフェースとして使用するためのソース・コードに基づく仕様を実装する(ステップ604)ことによって始まる(ステップ602)。それから、方法600は終了する(ステップ606)。
以下の図7は、ここでもやはり本発明のさまざまな態様が実施され得る、マイグレーション元の記憶位置からマイグレーション先の記憶位置へのLUNよりも細かいレベルのデータ・マイグレーションを実行するためのさらなる例示的な方法700の流れ図である。方法700は、仮想ディスク上のデータのチャンクの開始LBAおよびサイズと、マイグレーション先の物理的なストレージの記述とを指定する(ステップ704)ことによって始まる(ステップ702)。次いで、ソース・コードに基づく仕様(例えば、API)が、ストレージ・コントローラによってサポートされるストレージ・プールのリストを、基礎をなすストレージ(例えば、SASドライブ)のサイズ、利用可能な空間、物理的な特徴などの少なくとも1つのストレージの特徴とともに公開する(ステップ706)。
ステップ706から得られた情報に少なくとも部分的に基づいて、方法700は、開始LBAからのデータおよび指定されたサイズのデータのチャンクが公開されたストレージ・プールのリストのうちのマイグレーション先のストレージ・プールにマイグレーションされることを要求する(例えば、ホストからの)呼び出しをインターフェースを介して受信することによって継続する(ステップ708)。次いで、ストレージ・コントローラまたは同様のストレージ・デバイスが、マイグレーション先のストレージ・プール内でデータのチャンクに「最も適する場所」を決定することができる(ステップ710)。例えば、データのチャンクは、1つの物理的なボリューム上に連続的に記憶される可能性があり、または状況が許し得るときには、やはりストレージ・コントローラまたはその他の管理デバイスの裁量で複数のボリュームに分けられる可能性がある。
次のステップとして、マイグレーション動作は、指定されたデータのチャンクがアプリケーションに対するオーバーヘッドを含まずにバックグラウンド・プロセスとしてマイグレーション先のストレージ・プールにマイグレーションされるときに始まる(つまり、プロセスは、所有するアプリケーションに対して透過的に行われる)(ステップ712)。マイグレーション動作が完了した後、仮想ディスク・マップが、マイグレーション先のストレージ・プール上の新しい物理的な位置を指すようにされる(ステップ714)。仮想ディスク・マップに変更が行われると、マイグレーション動作がコミットされる(ステップ716)。それから、方法700は終了する(ステップ718)。
以下の図8は、本発明の別の実施形態による、マイグレーション元の記憶位置からマイグレーション先の記憶位置へのLUNよりも細かいレベルのデータ・マイグレーションを実行するためのさらなる例示的な方法800を示す。方法800は、新しいストレージ・プールにマイグレーションされるべきデータのマイグレーション・サイズを指定する(ステップ804)ことによって始まる(ステップ802)。次に、マイグレーションされるべきデータ・チャンクのサイズが、指定される(ステップ806)。合計マイグレーション・サイズが、複数の既に指定されたデータ・チャンクのサイズの倍数を切り上げたものとして指定される(ステップ808)。
次に、方法800は、合計マイグレーション・サイズが0以上であるかどうかを問い合わせるステップ810に移る。0以上でない場合、方法800は終了する(ステップ826)。あるいは、方法800は、マイグレーション動作がデータ・チャンクのサイズずつ実行されるステップ812に移る。マイグレーション動作812は、開始LBAからのデータおよび指定されたサイズのデータのチャンクがマイグレーションされることを要求する呼び出しをAPIを介して受信すること(ステップ814)、データ・チャンクに最も適する場所を決定すること(ステップ816)、バックグラウンド・プロセスとしてマイグレーション先のストレージ・プールにデータ・チャンクをマイグレーションすること(ステップ818)、仮想ディスク・マップが新しい物理的な記憶位置を指すようにすること(ステップ820)、ならびにマイグレーション動作をコミットすること(ステップ822)などの、図7に既に示されたステップの少なくとも一部と同様の機能を含む。
方法800がマイグレーション動作812の実行を始めるとき、合計マイグレーション・サイズが、マイグレーションされているデータ・チャンクの分だけ減らされる(ステップ824)。方法800は、合計マイグレーション・サイズが0以上であるかどうかを再び問い合わせるためにステップ810に戻る。ここで、答えが肯定的である場合、方法800は終了し(ステップ826)、そうでない場合、ステップ812に戻って、データ・チャンクのサイズずつ再び行われるさらなるマイグレーション動作を実行する。
ここで以下の図9に目を向けると、マイグレーション元の記憶位置からマイグレーション先の記憶位置へのLUNよりも細かいレベルのデータ・マイグレーションを実行するためのさらなる例示的な方法900が示される。方法900は、マイグレーション元のLUN、開始LBA、合計マイグレーション・サイズ、マイグレーション先のLUN、およびマイグレーションされるべきデータ・チャンクのサイズを指定する(ステップ904)ことによって始まる(ステップ902)。次に、方法900は、マイグレーション動作が実行されるべき時間を指定する(ステップ906)。以下のステップ908において、指定された時間が来た場合、以下でさらに説明されるようにマイグレーション動作910が実行される。あるいは、指定された時間が来ていない場合(やはりステップ908)、方法900は、待機し(ステップ912)、ステップ908に戻って、再び問い合わせし直す。
ステップ910において、マイグレーション動作は、所有するアプリケーションに対して透過的なバックグラウンド・プロセスとしてマイグレーション先のストレージ・プールにデータをマイグレーションすること(ステップ914)、仮想ディスク・マップがマイグレーション先のストレージ・プール上の新しい物理的な位置を指すようにすること(ステップ916)、およびマイグレーション動作をコミットすること(ステップ918)を含む、図7および8に既に示されたのと同様の機能を実行する。それから、方法は終了する(ステップ920)。
以下の図10は、マイグレーション元の記憶位置からマイグレーション先の記憶位置へのLUNよりも細かいレベルのデータ・マイグレーションを実行するためのさらなる例示的な方法1000を示す。方法1000は、仮想ディスク上のデータのチャンクの開始LBAおよびサイズと、マイグレーション先の物理的なストレージの記述とを指定する(ステップ1004)ことによって始まる(ステップ1002)。次いで、ソース・コードに基づく仕様(例えば、API)が、ストレージ・コントローラによってサポートされるストレージ・プールのリストを、基礎をなすストレージ(例えば、SASドライブ)のサイズ、利用可能な空間、物理的な特徴などの少なくとも1つのストレージの特徴とともに公開する(ステップ1006)。
ステップ1006から得られた情報に少なくとも部分的に基づいて、方法1000は、開始LBAからのデータおよび指定されたサイズのデータのチャンクが指定された時間に公開されたストレージ・プールのリストのうちのマイグレーション先のストレージ・プールにマイグレーションされることを要求する(例えば、ホストからの)呼び出しをインターフェースを介して受信することによって継続する(ステップ1008)。次いで、ストレージ・コントローラまたは同様のストレージ・デバイスが、マイグレーション先のストレージ・プール内でデータのチャンクに「最も適する場所」を決定することができる(ステップ1010)。例えば、データのチャンクは、1つの物理的なボリューム上に連続的に記憶される可能性があり、または状況が許し得るときには、やはりストレージ・コントローラまたはその他の管理デバイスの裁量で複数のボリュームに分けられる可能性がある。
次のステップとして、マイグレーション動作は、指定された時間に、指定されたデータのチャンクがアプリケーションに対するオーバーヘッドを含まずにバックグラウンド・プロセスとしてマイグレーション先のストレージ・プールにマイグレーションされるときに始まる(つまり、プロセスは、所有するアプリケーションに対して透過的に行われる)(ステップ1012)。マイグレーション動作が完了した後、仮想ディスク・マップが、マイグレーション先のストレージ・プール上の新しい物理的な位置を指すようにされる(ステップ1014)。仮想ディスク・マップに変更が行われると、マイグレーション動作がコミットされる(ステップ1016)。それから、方法1000は終了する(ステップ1018)。
以下の図11は、マイグレーション元の記憶位置からマイグレーション先の記憶位置へのLUNよりも細かいレベルのデータ・マイグレーションを実行するためのさらなる例示的な方法1100を示す。方法1100は、仮想ディスク上のデータのチャンクの開始LBAおよびサイズと、マイグレーション先の物理的なストレージの記述とを指定する(ステップ1104)ことによって始まる(ステップ1102)。次いで、ソース・コードに基づく仕様(例えば、API)が、ストレージ・コントローラによってサポートされるストレージ・プールのリストを、基礎をなすストレージ(例えば、SASドライブ)のサイズ、利用可能な空間、物理的な特徴などの少なくとも1つのストレージの特徴とともに公開する(ステップ1106)。
ステップ1106から得られた情報に少なくとも部分的に基づいて、方法1100は、開始LBAからのデータおよび指定されたサイズのデータのチャンクが呼び出しの受信と同時に(すなわち、直ちに)公開されたストレージ・プールのリストのうちのマイグレーション先のストレージ・プールにマイグレーションされることを要求する(例えば、ホストからの)呼び出しをインターフェースを介して受信することによって継続する(ステップ1108)。次いで、ストレージ・コントローラまたは同様のストレージ・デバイスが、マイグレーション先のストレージ・プール内でデータのチャンクに「最も適する場所」を決定することができる(ステップ1110)。例えば、データのチャンクは、1つの物理的なボリューム上に連続的に記憶される可能性があり、または状況が許し得るときには、やはりストレージ・コントローラまたはその他の管理デバイスの裁量で複数のボリュームに分けられる可能性がある。
次のステップとして、マイグレーション動作は、指定された時間に、指定されたデータのチャンクがアプリケーションに対するオーバーヘッドを含まずにバックグラウンド・プロセスとしてマイグレーション先のストレージ・プールにマイグレーションされるときに始まる(つまり、プロセスは、所有するアプリケーションに対して透過的に行われる)(ステップ1112)。マイグレーション動作が完了した後、仮想ディスク・マップが、マイグレーション先のストレージ・プール上の新しい物理的な位置を指すようにされる(ステップ1114)。仮想ディスク・マップに変更が行われると、マイグレーション動作がコミットされる(ステップ1116)。それから、方法1100は終了する(ステップ1118)。
当業者に理解されるであろうように、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現化され得る。したがって、本発明の態様は、すべてハードウェアの実施形態、すべてソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの態様とハードウェアの態様とを組み合わせる実施形態の形態をとる可能性があり、これらはすべて、概して本明細書において「回路」、「モジュール」、「プロセス」、もしくは「システム」と呼ばれることがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードを具現化する1つまたは複数のコンピュータ可読媒体で具現化されたコンピュータ・プログラムの形態をとる可能性がある。
1つまたは複数のコンピュータ可読媒体の任意の組み合わせが、利用される可能性がある。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体である可能性がある。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光、電磁、赤外線、もしくは半導体のシステム、装置、またはデバイス、あるいはこれらの任意の好適な組み合わせである可能性があるがこれらに限定されない。コンピュータ可読ストレージ媒体のより詳細な例(非網羅的なリスト)は、以下、すなわち、1つもしくは複数の配線を有する電気的な接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMもしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、またはこれらの任意の好適な組み合わせを含むであろう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを含むまたは記憶することができる任意の有形の媒体である可能性がある。
コンピュータ可読媒体上に具現化されるプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、またはこれらの任意の好適な組み合わせを含むがこれらに限定されない任意の適切な媒体を用いて送信される可能性がある。本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語とを含む1つまたは複数のプログラミング言語の任意の組み合わせで記述され得る。プログラム・コードは、すべてユーザのコンピュータ上で、ユーザのコンピュータ上で部分的に、またはすべて遠隔のコンピュータもしくはサーバ上で実行され得る。最後の場合では、遠隔のコンピュータが、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続され得るか、または外部コンピュータへの接続が(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)行われ得る。
本発明の態様が、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラムの流れ図またはブロック図あるいはその両方を参照して以下で説明される。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方のブロックの組み合わせは、コンピュータ・プログラム命令によって実装され得ることが理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサによって実行される命令が、流れ図もしくはブロック図またはその両方の1つのブロックあるいは複数のブロックで規定された機能/動作を実施するための手段をもたらすように、多目的コンピュータ、専用コンピュータ、または機械を生産するためのその他のプログラム可能なデータ処理装置のプロセッサに与えられてマシンを生成する可能性がある。
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に記憶された命令が、流れ図もしくはブロック図またはその両方の1つのブロックあるいは複数のブロックで規定された機能/動作を実施する命令を含む製品をもたらすように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスを特定の方法で機能させることができるコンピュータ可読媒体に記憶される可能性もある。コンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能な装置で実行される命令が、流れ図もしくはブロック図またはその両方の1つのブロックあるいは複数のブロックで規定された機能/動作を実施するためのプロセスを提供するように、コンピュータで実施されるプロセスを生成するために一連の動作のステップがコンピュータ、その他のプログラム可能な装置、またはその他のデバイスで実行されるようにするために、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスにロードされる可能性もある。
上述の図面の流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラムのあり得る実装のアーキテクチャ、機能、および動作を示す。これに関連して、流れ図またはブロック図の各ブロックは、(1つまたは複数の)規定された論理的な機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部を表す可能性がある。一部の代替的な実装においては、ブロックで示された機能が、図面に示された順序とは異なる順序で行われる可能性があることにも留意されたい。例えば、関連する機能に応じて、連続で示された2つのブロックが、実際には実質的に同時に実行される可能性があり、またはそれらのブロックが、時には逆順に実行されることもあり得る。ブロック図または流れ図あるいはその両方の各ブロックと、ブロック図または流れ図あるいはその両方のブロックの組み合わせとは、規定された機能もしくは動作を実行する専用のハードウェアに基づくシステム、または専用のハードウェアとコンピュータ命令との組み合わせによって実装され得ることも認められるであろう。
本発明の1つまたは複数の実施形態が詳細に示されたが、当業者は、それらの実施形態に対する変更および改変が、添付の特許請求の範囲に記載の本発明の範囲を逸脱することなくなされ得ることを理解するであろう。

Claims (10)

  1. コンピューティング環境におけるプロセッサによる論理装置名(LUN)よりも細かいデータ・マイグレーションのための方法であって、
    ホスト・ベースのマイグレーションにおいて、ホスト上の所有するアプリケーションに関連して指定されたサイズのデータを前記LUNの裏側の物理的なストレージからターゲット・ストレージ・プールの新しい物理的な位置にマイグレーションするためにストレージ・コントローラと所有するアプリケーションとの間の 前記ストレージ・コントローラに含まれるストレージ仮想化ソフトウェアにより実行されるソース・コードに基づくインターフェース(API)であって
    前記データは、前記所有するアプリケーションにより記述されるアクセス頻度および前記ターゲット論理装置名(LUN)の秒当たりのハードウエア入出力操作(IOs)にも基づいて、前記ストレージ仮想化ソフトウェアより直接マイグレーションされ、
    前記データは、前記所有するアプリケーションのトリガーにより前記APIに基づいて、前記ストレージ仮想化ソフトウェアが前記所有するアプリケーションが常駐する前記ホストを経由せずマイグレーションを実行することを特徴とする、前記インターフェース(API)を実装するステップと、
    連続的に1つの物理ボリューム上に前記データのチャンクを記憶するか、複数の物理ボリュームに跨って分離して保管するか、のいずれかにより、前記ターゲット・ストレージ・プール上に前記データのチャンクに最も適する場所を決定するステップとを含む、方法。
  2. 前記指定されたサイズのデータをマイグレーションすることが、仮想ディスク上の前記データのチャンクの開始論理ブロック・アドレス(LBA)およびサイズと、前記新しい物理的な位置を特定するマイグレーション先の物理的なストレージの記述とを指定することを含む、請求項1に記載の方法。
  3. 前記ストレージ・コントローラによってサポートされるストレージ・プールのリストを、前記ストレージ・プールの前記リストのうちの少なくとも1つに関連する少なくとも1つのストレージの特徴とともに公開するステップをさらに含む、請求項2に記載の方法。
  4. 前記開始LBAからのデータおよび指定されたサイズの前記データの前記チャンクがストレージ・プールの公開されたリストのうちのマイグレーション先のストレージ・プールにマイグレーションされることを要求する呼び出しを前記インターフェースを介して受信するステップをさらに含む、請求項3に記載の方法。
  5. 前記マイグレーション先のストレージ・プール上の前記データの前記チャンクに最も適する場所を決定するステップをさらに含む、請求項4に記載の方法。
  6. マイグレーション動作として、前記所有するアプリケーションに対して透過的なバックグラウンド・プロセスとして前記マイグレーション先のストレージ・プールに前記データの前記チャンクをマイグレーションするステップをさらに含む、請求項5に記載の方法。
  7. 仮想ディスク・マップが前記マイグレーション先のストレージ・プール上の前記新しい物理的な位置を指すようにするステップをさらに含む、請求項6に記載の方法。
  8. 前記仮想ディスク・マップが前記新しい物理的な位置を指すようにするステップを完了した後に、前記マイグレーション動作をコミットするステップをさらに含む、請求項7に記載の方法。
  9. コンピューティング環境における論理装置名(LUN)よりも細かいデータ・マイグレーションのためのシステムであって、
    前記コンピューティング環境で動作可能なプロセッサと、
    ホスト・ベースのマイグレーションにおいて、ホスト上の所有するアプリケーションに関連して指定されたサイズのデータを前記LUNの裏側の物理的なストレージからターゲット・ストレージ・プールの新しい物理的な位置にマイグレーションするためにストレージ・コントローラと所有するアプリケーションとの間の 前記ストレージ・コントローラに含まれるストレージ仮想化ソフトウェアにより実行されるソース・コードに基づくインターフェース(API)であって
    前記データは、前記所有するアプリケーションにより記述されるアクセス頻度および前記ターゲット論理装置名(LUN)の秒当たりのハードウエア入出力操作(IOs)にも基づいて、前記ストレージ仮想化ソフトウェアより直接マイグレーションされ、
    前記データは、前記所有するアプリケーションのトリガーにより前記APIに基づいて、前記ストレージ仮想化ソフトウェアが前記所有するアプリケーションが常駐する前記ホストを経由せずマイグレーションを実行することを特徴とする、前記インターフェース(API)を実装し、
    連続的に1つの物理ボリューム上に前記データのチャンクを記憶するか、複数の物理ボリュームに跨って分離して保管するか、のいずれかにより、前記ターゲット・ストレージ・プール上に前記データのチャンクに最も適する場所を決定する、
    ことを前記プロセッサに実行させる前記ストレージ仮想化プログラムと、を含むシステム。
  10. コンピューティング環境におけるプロセッサによる論理装置名(LUN)よりも細かいデータ・マイグレーションのためのコンピュータ・プログラムであって、
    ホスト・ベースのマイグレーションにおいて、ホスト上の所有するアプリケーションに関連して指定されたサイズのデータを前記LUNの裏側の物理的なストレージからターゲット・ストレージ・プールの新しい物理的な位置にマイグレーションするためにストレージ・コントローラと所有するアプリケーションとの間の 前記ストレージ・コントローラに含まれるストレージ仮想化ソフトウェアにより実行されるソース・コードに基づくインターフェース(API)であって
    前記データは、前記所有するアプリケーションにより記述されるアクセス頻度および前記ターゲット論理装置名(LUN)の秒当たりのハードウエア入出力操作(IOs)にも基づいて、前記ストレージ仮想化ソフトウェアより直接マイグレーションされ、
    前記データは、前記所有するアプリケーションのトリガーにより前記APIに基づいて、前記ストレージ仮想化ソフトウェアが前記所有するアプリケーションが常駐する前記ホストを経由せずマイグレーションを実行することを特徴とする、前記インターフェース(API)を実装し、
    連続的に1つの物理ボリューム上に前記データのチャンクを記憶するか、複数の物理ボリュームに跨って分離して保管するか、のいずれかにより、前記ターゲット・ストレージ・プール上に前記データのチャンクに最も適する場所を決定する、ことを前記プロセッサに実行させる、コンピュータ・プログラム。
JP2015514628A 2012-05-29 2013-05-14 データ・マイグレーションのための方法、システム、およびコンピュータ・プログラム Active JP6270827B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/482,829 2012-05-29
US13/482,829 US10817202B2 (en) 2012-05-29 2012-05-29 Application-controlled sub-LUN level data migration
PCT/IB2013/053929 WO2013179171A1 (en) 2012-05-29 2013-05-14 Application-controlled sub-lun level data migration

Publications (2)

Publication Number Publication Date
JP2015519667A JP2015519667A (ja) 2015-07-09
JP6270827B2 true JP6270827B2 (ja) 2018-01-31

Family

ID=49671771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015514628A Active JP6270827B2 (ja) 2012-05-29 2013-05-14 データ・マイグレーションのための方法、システム、およびコンピュータ・プログラム

Country Status (9)

Country Link
US (2) US10817202B2 (ja)
EP (1) EP2856322A4 (ja)
JP (1) JP6270827B2 (ja)
KR (1) KR101730695B1 (ja)
CN (1) CN104335188B (ja)
AU (1) AU2013269206A1 (ja)
MX (1) MX337317B (ja)
SG (1) SG11201404021WA (ja)
WO (1) WO2013179171A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10817202B2 (en) 2012-05-29 2020-10-27 International Business Machines Corporation Application-controlled sub-LUN level data migration
US10831727B2 (en) 2012-05-29 2020-11-10 International Business Machines Corporation Application-controlled sub-LUN level data migration
US10831728B2 (en) 2012-05-29 2020-11-10 International Business Machines Corporation Application-controlled sub-LUN level data migration
US20150032961A1 (en) * 2013-07-23 2015-01-29 Lexmark International Technologies S.A. System and Methods of Data Migration Between Storage Devices
US9880786B1 (en) * 2014-05-30 2018-01-30 Amazon Technologies, Inc. Multi-tiered elastic block device performance
US10061915B1 (en) 2014-09-03 2018-08-28 Amazon Technologies, Inc. Posture assessment in a secure execution environment
CN105760109B (zh) * 2014-12-16 2019-03-01 华为技术有限公司 数据迁移方法和存储阵列
US10120920B2 (en) * 2015-07-10 2018-11-06 International Business Machines Corporation Increasing storage space for processes impacting data storage systems
WO2017014809A1 (en) * 2015-07-18 2017-01-26 Hewlett-Packard Development Company, L.P. Data volume migration in distributed storage systems
US10432723B2 (en) * 2015-09-03 2019-10-01 Toshiba Memory Corporation Storage server and storage system
US10203874B1 (en) * 2015-09-30 2019-02-12 EMC IP Holding Company LLC Managing time scheduled data placement in data storage systems
US10606501B2 (en) * 2015-12-04 2020-03-31 International Business Machines Corporation Management of paging in compressed storage
CN107239412B (zh) * 2017-06-19 2020-07-07 杭州宏杉科技股份有限公司 基于Thin-LUN的存储空间配置方法、数据写入方法及存储设备
US10795583B2 (en) * 2017-07-19 2020-10-06 Samsung Electronics Co., Ltd. Automatic data placement manager in multi-tier all-flash datacenter
US10838648B2 (en) * 2018-12-12 2020-11-17 EMC IP Holding Company LLC Distributed host copy migration in a cluster environment using changed block tracking
US11620233B1 (en) * 2019-09-30 2023-04-04 Amazon Technologies, Inc. Memory data migration hardware
US11868622B2 (en) 2020-02-25 2024-01-09 Pure Storage, Inc. Application recovery across storage systems
US11637896B1 (en) 2020-02-25 2023-04-25 Pure Storage, Inc. Migrating applications to a cloud-computing environment

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577782B2 (en) 1996-02-02 2009-08-18 Sony Corporation Application programming interface for data transfer and bus management over a bus structure
US6330572B1 (en) * 1998-07-15 2001-12-11 Imation Corp. Hierarchical data storage management
US6880101B2 (en) 2001-10-12 2005-04-12 Dell Products L.P. System and method for providing automatic data restoration after a storage device failure
US7707151B1 (en) 2002-08-02 2010-04-27 Emc Corporation Method and apparatus for migrating data
US7461131B2 (en) * 2003-03-07 2008-12-02 International Business Machines Corporation Use of virtual targets for preparing and servicing requests for server-free data transfer operations
US20050114595A1 (en) 2003-11-26 2005-05-26 Veritas Operating Corporation System and method for emulating operating system metadata to provide cross-platform access to storage volumes
EP1619584A1 (en) * 2004-02-13 2006-01-25 Jaluna SA Memory allocation
JP2006079274A (ja) 2004-09-08 2006-03-23 Sony Corp ファイル管理装置、ネットワークシステム、ファイル管理方法及びプログラム
US8959299B2 (en) * 2004-11-15 2015-02-17 Commvault Systems, Inc. Using a snapshot as a data source
JP4842593B2 (ja) 2005-09-05 2011-12-21 株式会社日立製作所 ストレージ仮想化装置のデバイス制御引継ぎ方法
CN100507886C (zh) 2005-12-22 2009-07-01 北京中星微电子有限公司 一种对非易失性存储器进行直接存储访问的方法及其装置
JP4758794B2 (ja) * 2006-03-16 2011-08-31 富士通株式会社 メモリ領域割り当て制御装置、メモリ領域割り当て制御プログラム、及びメモリ領域割り当て制御方法
JP4464378B2 (ja) * 2006-09-05 2010-05-19 株式会社日立製作所 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8285758B1 (en) 2007-06-30 2012-10-09 Emc Corporation Tiering storage between multiple classes of storage on the same container file system
US7801993B2 (en) 2007-07-19 2010-09-21 Hitachi, Ltd. Method and apparatus for storage-service-provider-aware storage system
JP2009093571A (ja) 2007-10-11 2009-04-30 Hitachi Ltd 記憶制御装置、記憶制御装置のデータアーカイブ方法及びストレージシステム
US8359444B2 (en) 2008-09-24 2013-01-22 Hitachi, Ltd. System and method for controlling automated page-based tier management in storage systems
CN101436152B (zh) 2008-12-02 2013-01-23 成都市华为赛门铁克科技有限公司 一种数据备份的方法和装置
KR20100091853A (ko) * 2009-02-11 2010-08-19 삼성전자주식회사 동적 메모리 관리를 수행하는 임베디드 시스템 및 그의 메모리 관리방법
CN101582013A (zh) 2009-06-10 2009-11-18 成都市华为赛门铁克科技有限公司 一种在分布式存储中处理存储热点的方法、装置及系统
US8880835B2 (en) * 2009-07-07 2014-11-04 International Business Machines Corporation Adjusting location of tiered storage residence based on usage patterns
JP5241671B2 (ja) * 2009-10-05 2013-07-17 株式会社日立製作所 記憶装置のデータ移行制御方法
US9110919B2 (en) 2009-10-30 2015-08-18 Symantec Corporation Method for quickly identifying data residing on a volume in a multivolume file system
US8375180B2 (en) 2010-02-05 2013-02-12 International Business Machines Corporation Storage application performance matching
JP5130313B2 (ja) 2010-04-02 2013-01-30 株式会社日立製作所 管理システム及び計算機システムの管理方法
US8380949B2 (en) * 2010-05-20 2013-02-19 International Business Machines Corporation Managing write operations to an extent of tracks migrated between storage devices
WO2012011153A1 (en) * 2010-07-22 2012-01-26 Hitachi, Ltd. Data storage apparatus and data storage control method for the same
US8555019B2 (en) * 2010-09-08 2013-10-08 International Business Machines Corporation Using a migration cache to cache tracks during migration
US9460136B1 (en) 2011-06-30 2016-10-04 Emc Corporation Managing databases in data storage systems
US10831727B2 (en) 2012-05-29 2020-11-10 International Business Machines Corporation Application-controlled sub-LUN level data migration
US10817202B2 (en) 2012-05-29 2020-10-27 International Business Machines Corporation Application-controlled sub-LUN level data migration
US10831728B2 (en) 2012-05-29 2020-11-10 International Business Machines Corporation Application-controlled sub-LUN level data migration

Also Published As

Publication number Publication date
US20130326183A1 (en) 2013-12-05
MX2014014163A (es) 2015-02-04
JP2015519667A (ja) 2015-07-09
KR101730695B1 (ko) 2017-04-26
EP2856322A4 (en) 2015-06-17
CN104335188B (zh) 2018-04-17
WO2013179171A1 (en) 2013-12-05
MX337317B (es) 2016-02-24
US20130326182A1 (en) 2013-12-05
AU2013269206A1 (en) 2014-11-13
EP2856322A1 (en) 2015-04-08
US10817202B2 (en) 2020-10-27
CN104335188A (zh) 2015-02-04
US10831390B2 (en) 2020-11-10
KR20140136473A (ko) 2014-11-28
SG11201404021WA (en) 2014-08-28

Similar Documents

Publication Publication Date Title
JP6270827B2 (ja) データ・マイグレーションのための方法、システム、およびコンピュータ・プログラム
US10838929B2 (en) Application-controlled sub-LUN level data migration
US10831729B2 (en) Application-controlled sub-LUN level data migration
US9747036B2 (en) Tiered storage device providing for migration of prioritized application specific data responsive to frequently referenced data
US8706961B2 (en) Storage apparatus and data management method
US9229870B1 (en) Managing cache systems of storage systems
US8639876B2 (en) Extent allocation in thinly provisioned storage environment
US8700871B2 (en) Migrating snapshot data according to calculated de-duplication efficiency
US8639899B2 (en) Storage apparatus and control method for redundant data management within tiers
US8024603B2 (en) Data migration satisfying migration-destination requirements
US20100235597A1 (en) Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US8423727B2 (en) I/O conversion method and apparatus for storage system
US20150089136A1 (en) Interface for management of data movement in a thin provisioned storage system
JP2005228170A (ja) 記憶装置システム
US9047015B2 (en) Migrating thin-provisioned volumes in tiered storage architectures
US8627126B2 (en) Optimized power savings in a storage virtualization system
US10089125B2 (en) Virtual machines accessing file data, object data, and block data
US10152486B2 (en) Preserving redundancy in data deduplication systems by designation of virtual device
US10565068B1 (en) Primary array data dedup/compression using block backup statistics
WO2017163322A1 (ja) 管理計算機、および計算機システムの管理方法
EP2256615A1 (en) Self-defragmenting storage device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170803

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171226

R150 Certificate of patent or registration of utility model

Ref document number: 6270827

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250