[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP6025973B2 - 計算機システム及び計算機システムのボリューム管理方法 - Google Patents

計算機システム及び計算機システムのボリューム管理方法 Download PDF

Info

Publication number
JP6025973B2
JP6025973B2 JP2015513917A JP2015513917A JP6025973B2 JP 6025973 B2 JP6025973 B2 JP 6025973B2 JP 2015513917 A JP2015513917 A JP 2015513917A JP 2015513917 A JP2015513917 A JP 2015513917A JP 6025973 B2 JP6025973 B2 JP 6025973B2
Authority
JP
Japan
Prior art keywords
vol
sub
volume
owner
command
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.)
Expired - Fee Related
Application number
JP2015513917A
Other languages
English (en)
Other versions
JP2015529862A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2015529862A publication Critical patent/JP2015529862A/ja
Application granted granted Critical
Publication of JP6025973B2 publication Critical patent/JP6025973B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0662Virtualisation aspects
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、計算機システム及び計算機システムのボリューム管理方法に関し、例えば、計算機システム内のストレージサブシステムの複数のプロセッサユニット間の負荷平衡技術に関する。
特許文献1、2は、それぞれ複数のプロセッサユニットを含むストレージシステムを開示している。
これらのストレージシステムは、複数の論理的ストレージデバイス(以下、「論理的ストレージデバイス」を「論理ボリューム(logical volume)」又は「VOL」とも呼ぶ。)を管理し、各VOLについて、単一のプロセッサユニットにVOLのオーナシップを与える。ここで用いる「VOLオーナシップ」とは、VOLにアクセスする権利を意味する。
例えば、ストレージシステムがプロセッサユニット#0、#1を有し、VOL#0、#1及び#2を管理しており、ストレージシステムがプロセッサユニット#0にVOL#1のオーナシップを与えているとする。このストレージシステムでは、ストレージシステムが、VOL#1についてのI/O(入力/出力)コマンドを受け取ると、VOL#1のオーナシップを有するプロセッサユニット#0がこのI/O(入力/出力)コマンドを処理する。
複数のVOLのオーナシップを1つのプロセッサユニットに集中させると、このプロセッサユニットの負荷が増大する。特許文献1では、ストレージシステムが各プロセッサユニットの負荷を監視し、この監視の結果に基づいて、プロセッサユニット間でオーナシップを変更する。
特許文献2では、ストレージシステムがVOLのオーナ権(これも「オーナシップ」と呼ぶことができる。)を変更することによって、負荷の平衡を図る。VOLのオーナ権の変更は、静的情報に基づいて行われ、VOLに関連するI/Oコマンドの数に応じて動的に変更されることはない。
米国特許番号第7912996号 米国特許公開番号第2010/0306465号
特許文献1、2に開示されているストレージシステムは、VOL全体のオーナシップを単一のプロセッサユニットに割り当てる。したがって、VOLのためのI/O処理によってオーナプロセッサユニットに生じた負荷は、他のプロセッサユニットに分散させることができない。ストレージシステムができることは、負荷が比較的少ない他のプロセッサユニットにこのVOLのオーナシップを変更することだけである。
しかしながら、単一又は少数のより大きいVOLについて多数のI/O動作を実行するビッグデータ(Big Data)のアプリケーションでは、問題が生じる。ストレージシステムが複数のプロセッサユニットを有していても、このようなアプリケーションの性能は、単一のプロセッサユニットの性能によって制限される。
また、ストレージシステムのVOLの総数が比較的少ない場合にもVOLの負荷を分散できないことによる問題が生じる。この場合、各VOLによって生じる負荷が均等ではないために、全てのプロセッサユニットの合計の負荷がプロセッサユニット間で均等に分散されない可能性がある。また、VOLの総数が非常に少ないために、VOLのオーナシップを変更しても不均等な負荷分散を均等化することができない。負荷のこの不均等な負荷分散によって、ストレージシステムの性能が低下することがある。
本発明は、このような状況に鑑み、プロセッサユニットの負荷を均等に分散させ、ストレージシステムのリソースを効率的に利用する技術を提供することを目的とする。
上述の課題を解決するために、本発明は、複数のプロセッサユニットを備える計算機システム(ストレージシステム)を提供する。このストレージシステムでは、VOLが複数のより小さいVOL(このより小さいVOL(VOLの部分)を「サブボリューム(sub-volume)」又は「Sub−VOL」と呼ぶ。)から構成されているとみなしてVOLを処理することができる。複数のSub−VOLへのVOLの分割は、VOLの制御情報を複数のSub−VOLに分割し、Sub−VOLにアクセスするためにSub−VOLオーナプロセッサユニットテーブル及びSub−VOL制御情報テーブルを使用することによって実現される。各プロセッサユニットは、1つ以上のVOLのオーナシップを有し、及び/又は1つ以上のSub−VOLについての全てのI/O要求を処理する権利を有する(以下では、Sub−VOLのためのI/Oを処理するこの権利をSub−VOLのオーナシップと呼ぶ)。
すなわち、本発明は、計算機に接続された計算機システムを提供し、計算機システムは、少なくとも1つ論理ボリュームを計算機に提供する複数のストレージデバイスと、それぞれが計算機によって発行されたコマンドを処理する複数のプロセッサユニットとを含むストレージサブシステムを備える。論理ボリュームの少なくとも1つは、複数のサブボリュームに分割される。論理ボリュームのためのI/Oの処理を担当する論理ボリュームのボリュームオーナプロセッサは、複数のプロセッサユニットのうちの1つのプロセッサユニットであり、複数のサブボリュームの少なくとも1つのサブボリュームオーナプロセッサは、複数のプロセッサユニットのうちの論理ボリュームのボリュームオーナプロセッサでない1つのプロセッサユニットである。
本発明によって、プロセッサユニットの負荷を均等に分散させ、ストレージシステムのリソースを効率的に利用することができる。
ストレージシステムの構造を示す図である。 実施形態1に基づくストレージシステムのキャッシュメモリパッケージに保存されるコンテンツの具体例を示す図である。 実施形態1に基づくFE−PKのメモリのコンテンツの具体例を示す図である。 実施形態1に基づくMP−PKのローカルメモリのコンテンツの具体例を示す図である。 実施形態1に基づくVOLオーナMP−PKテーブルの具体例を示す図である。 実施形態1に基づくSub−VOLオーナMP−PKテーブルの具体例を示す図である。 実施形態1に基づくVOL制御情報テーブルの具体例を示す図である。 実施形態1に基づくSub−VOL制御情報テーブルの具体例を示す図である。 実施形態1に基づくVOL作成プログラムのフローチャートである。 実施形態1に基づくローカルルータ処理プログラムのフローチャートである。 実施形態1に基づく読出コマンド処理プログラムのフローチャートである。 実施形態1に基づく書込コマンド処理プログラムのフローチャートである。 実施形態1に基づく予約/解放コマンド処理プログラムのフローチャートである。 実施形態2に基づくFE−PKのメモリのコンテンツの具体例を示す図である。 実施形態2に基づくMP−PKのローカルメモリのコンテンツの具体例を示す図である。 実施形態2に基づくVOLペア情報テーブルの具体例を示す図である。 実施形態2に基づくSub−VOLペア情報テーブルの具体例を示す図である。 実施形態2に基づくペア作成プログラムのフローチャートである。 実施形態2に基づくVOLオーナMP−PKのためのペア動作(ペア分離/ペア再同期)のフローチャートである。 Sub−VOLオーナMP−PKのためのペア動作(ペア分離/ペア再同期/ペア作成)のフローチャートである。 実施形態2に基づくPVOL書込動作のフローチャートである。 実施形態3に基づくMP−PKのローカルメモリのコンテンツの具体例を示す図である。 実施形態3に基づくSub−VOLペア情報テーブルの具体例を示す図である。 実施形態3に基づくLBAデータポインタテーブルの具体例を示す図である。 実施形態3に基づくPVOL/SVOL読出動作のフローチャートである。 実施形態3に基づくPVOL書込動作のフローチャートである。
以下、添付の図面を参照して本発明の実施形態について説明する。添付の図面では、同様の機能を有する要素に同様の参照符号を付している場合がある。
なお、以後の説明では「テーブル」形式によって本発明の各情報について説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、DB、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等について単に「情報」と呼ぶことがある。
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
以下では「プログラム」を主語(動作主体)として本発明の実施形態における各処理について説明を行うが、プログラムは、プロセッサユニット又は複数のプロセッサユニットによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサユニット又はプロセッサユニットを主語とした説明としても良い。
(1)実施形態1
<計算機システムの構成>
図1は、本発明の第1の実施形態に基づく計算機システム(また、ストレージシステムとも呼ばれる。)のブロック図である。
計算機システムは、少なくとも1つのホスト計算機100、ストレージサブシステム200及び管理コンソール(管理計算機とも呼ばれる。)300を備える。ストレージサブシステム200は、ケーブル又はネットワークを介してデータの読出及び書込を行う1つ以上のホスト計算機100に接続されている。ホスト計算機100に接続するためのネットワークとしては、ストレージエリアネットワーク(Storage Area Network:SAN)、ローカルエリアネットワーク(Local Area Network:LAN)、インターネット、専用回線及び公衆回線等データ通信を実行できる如何なるネットワークを使用してもよい。図1に示すように、ホスト計算機100をストレージサブシステム200に接続するための具体例としてSAN500を用いてもよい。ネットワーク又はケーブルでは、ホスト計算機100とストレージサブシステム200との間でデータを交換できる限り、例えば、ファイバチャネルプロトコル又はTCP/IPプロトコル等の如何なるプロトコルを用いてもよい。
ストレージサブシステム200は、大きくは、1又は複数のディスクユニット250と、コントローラとに分割される。
ディスクユニット250は、ディスクドライブ251を1つ以上のバックエンド(Back End:BE)ポート231に接続するための筐体である。ディスクユニット250は、複数のディスクスロットを備え、各ディスクスロットに1つ以上のディスクドライブ251が挿入される。したがって、ディスクユニット250は、複数のディスクドライブ251を有する。ディスクドライブ251は、物理的記憶装置(physical storage device:PDEV)である。ディスクドライブ251は、例えば、ハードディスクドライブ(Hard Disk Drive:HDD)又はソリッドステートドライブ(Solid State Drive:SSD)である。HDDは、例えば、シリアルアタッチドSCSI(Serial Attached SCSI:SAS)ドライブ及びシリアルATA(Advanced Technology Attachment:SATA)ドライブを含んでいてもよい。ディスクドライブ251は、これらに限定されず、他のタイプのディスクドライブ(例えば、FCドライブ、デジタルバーサタイルディスク(Digital Versatile Disk:DVD)ドライブ)を用いてもよい。また、ディスクドライブ251以外に他のタイプのPDEVを用いてもよい。
コントローラは、複数のフロントエンドパッケージ(front end package:以下、FE−PKとする。)210、複数のマイクロプロセッサパッケージ(Microprocessor package:以下、MP−PKとする。)220、複数のキャッシュメモリパッケージ(cache memory package:以下、CM−PKとする。)240、複数のバックエンドパッケージ(back end package:以下、BE−PKとする。)230、ネットワークインタフェース260及び内部ネットワーク270を備える。各パッケージは、内部ネットワーク(例えば、クロスバースイッチ)270を介して相互接続されている。更に、FE−PK210、MP−PK220、CM−PK240及びBE−PK230の少なくとも1つは、1個のみであってもよい。
FE−PK210は、複数のフロントエンド(Front End:FE)ポート211及びローカルルータ212を備える。FEポート211は、ホスト100からI/Oコマンド(書込コマンド/読出コマンド)を受信する。メモリ213については、図3を用いて後に説明する。ローカルルータ212は、テーブル2131、2132を用いて、受信したI/OコマンドのVOL番号に対応するVOLのオーナMP−PK220を判定する。また、ローカルルータ212は、I/Oコマンドのターゲットアドレスに対応するサブボリューム(Sub−VOL)のオーナMP−PKを判定する。そして、ローカルルータは、書込(write)コマンド、読出(read)コマンド、予約(reserve)コマンド、解放(release)コマンド等のコマンドのタイプに基づいて、VOLのオーナMP−PK220又はSub−VOLのオーナMP−PK220の何れかにコマンドを転送する。更に、ローカルルータ212は、プロセッサから構成してもよく、MP−PK220の1つがローカルルータとして動作してもよいので、ローカルルータ212の代わりに所定のMP−PK220が上述した処理を実行してもよい。更に、ローカルルータ212は、ASICハードウェアから構成してもよい。
MP−PK220は、1又は複数のマイクロプロセッサ(microprocessor:MP)221及びローカルメモリ222を備える。更に、MP221は、シングルコアMPから構成してもよく、マルチコアMPから構成してもよい。MP221は、計算機プログラムを実行することによって、様々な処理(例えば、ホスト100からのI/Oコマンドの処理、VOLオーナ権の変更等)を実行する。更に、複数のMPが協働して作業を行ってもよく、この場合、MP−PKの各MPは、それぞれプログラムの一部を実行する。更に、MP−PKの各MPは、異なるVOL又はSub−VOLについて個別にプログラムを実行してもよい。同様に、マルチコアMPの各コアが協働してもよく、この場合、MPの各コアは、それぞれプログラムの一部を実行する。またMPの各コアが異なるVOL又はSub−VOLについて個別にプログラムを実行してもよい。この実施形態では、VOLオーナ権は、各MP−PK220に割り当てられる。したがって、MP−PKは、単にプロセッサユニットと呼ぶことができる。また、VOLオーナ権は、MP−PK220内の複数のマイクロプロセッサ(MP)に割り当てることもできる。更に、VOLオーナ権は、MPの複数のマイクロプロセッサコアのそれぞれに割り当てることができる。この場合、MP−PKによって実行されるプロセスは、そのオーナ権を有するMPによって行われる。ローカルメモリ222は、例えば、MP221によって実行される計算機プログラム、及び計算機プログラムによって使用される制御情報等の様々なデータを保存することができる。本発明の実施形態では、このローカルメモリ222は、Sub−VOL制御情報テーブル2221を格納する。このようなテーブルの具体例を図8に示す。MP−PK220は、ネットワークインタフェース260を介して、管理計算機300と通信する。ネットワークインタフェース260は、通信インタフェースデバイス、例えば、LANコントローラである。
CM−PK240は、1又は複数のメモリを備える。例えば、CM−PK240は、共有メモリ241、プログラムメモリ242及びキャッシュメモリ243を備える。キャッシュメモリ243は、ホスト100からVOLに書き込まれるホストデータ及びホスト100によってVOLから読み出されるホストデータを一時的に保存する。共有メモリ241は、MP−PK間の通信のための制御情報を保存する。制御情報は、ストレージサブシステム200の構成に関連する構成データを含む。プログラムメモリ242は、異なるMP−PKによって実行されるプログラムを保存する。これらのプログラムは、関連するMP−PK220のローカルメモリ222にキャッシュできる。
BE−PK230は、1つ以上のBEポート231を備える。ディスクドライブ251は、BEポート231に通信可能に接続されている。
このストレージサブシステム200では、例えば、以下の処理フローを用いて、書込コマンドが処理される。すなわち、FE−PK210のFEポート211は、ホスト100から書込みコマンドを受信する。ローカルルータ212は、この書込コマンドで指定されているポート番号、LUN及び書込アドレスに対応するSub−VOL(以下、この段落では「ターゲットSub−VOL」と言う。)のオーナMP−PK220を特定し、このオーナMP−PK220にこの書込コマンドを転送する。この書込コマンドに応答して、オーナMP−PK220内の何れかのMP221がこのコマンドに付随するデータ(書込データ)をキャッシュメモリ243に書き込む。MP221は、ホスト100に書込完了を報告する。オーナMP−PK220内の何れかのMP221は、キャッシュメモリ243から書込データを読み出し、ターゲットVOLの基礎を構成するディスクドライブ251にこの書込データを書き込む。
このストレージサブシステム200では、読出コマンドは、例えば、以下の処理フローを用いて処理される。すなわち、FE−PK210のFEポート211は、ホスト100から読出コマンドを受信する。ローカルルータ212は、読出コマンド内のポート番号及びLUNに対応するSub−VOL(以下、この段落では「ターゲットSub−VOL」と言う。)のオーナMP−PK220を特定し、このオーナMP−PK220にこの読出コマンドを転送する。オーナMP−PK220内の何れかのMP221は、この読出コマンドに応答して、このデータがキャッシュメモリ243に格納されているか否かを判定する。データがキャッシュメモリ243に格納されている場合、MPは、キャッシュメモリ243からデータを読み出し、読み出したデータを、FE−PK211を介してホスト100に送信する。キャッシュメモリ243にデータが格納されていない場合、MPは、このコマンドに基づいて、ターゲットSub−VOLの基礎を構成するディスクドライブ251からデータ(読出データ)を読み出し、この読出データをキャッシュメモリ243に書き込む。そして、このMP221は、キャッシュメモリ243からこのデータを読み出し、読み出したデータを、FE−PK211を介してホスト100に送信する。
<キャッシュメモリパッケージ(CM−PK)の構造>
図2は、キャッシュメモリパッケージ(CM−PK)240の例示的構造を示している。CM−PK240は、VOLオーナMP−PKテーブル2411、Sub−VOLオーナMP−PKテーブル2412及びVOL制御情報テーブル2413を格納する共有メモリ241と、VOL作成プログラム2421、読出要求処理プログラム2422、書込要求処理プログラム2423、予約/解放要求処理プログラム2424、VOLオーナ変更プログラム2425及びSub−VOLオーナ変更プログラム2426を格納するプログラムメモリ242とを備える。共有メモリ241内の各テーブルの具体例及びプログラムメモリ242内の各プログラムの具体例は、後述する図に示している。
<FE−PKのメモリの構造>
図3は、FE−PK210のメモリ213の例示的構造を示している。メモリ213は、VOLオーナMP−PKテーブル2131、Sub−VOLオーナMP−PKテーブル2132及びLR処理プログラム2133を格納している。
テーブル2131は、ストレージシステム内の各VOLのオーナMP−PKに関する情報を維持し、SM241内のVOLオーナMP−PKテーブル2411と実質的に同じであり、詳しくは、図5を用いて後に説明する。テーブル2132は、ストレージシステムの各Sub−VOLのオーナMP−PKに関する情報を維持し、Sub−VOLオーナMP−PKテーブル2412と実質的に同じであり、詳しくは、図6を用いて後に説明する。これらのテーブル2131、2132は、LR212によって実行されるLR処理プログラム2133によって使用される。LR処理プログラム2133は、受信コマンドのターゲットであるVOLのオーナMP−PK及び/又はSub−VOLに関する情報を得る。そして、LRは、オーナMP−PKにコマンドを送信する。このようなプログラムの具体例は、図10を用いて後に説明する。
<MP−PKのローカルメモリの構造>
図4は、MP−PKのローカルメモリ(LM)222の例示的構造を示している。LM222は、Sub−VOL制御情報テーブル2221を格納し、この具体例は、図8を用いて後に説明する。
MP−PKによって共有メモリ241及びプログラムメモリ242のコンテンツに速やかにアクセスするために、LM222は、CM−PK240の共有メモリ241及びプログラムメモリ242のコンテンツの同期コピーを維持する。SM又はPMのコンテンツが更新されると、全てのMP−PKのLM内の同期コピーも更新される。
<VOLオーナMP−PKテーブルの構造>
図5は、VOLオーナMP−PKテーブル2131の具体例を示している。このテーブルは、ストレージサブシステム200内の全てのVOLのVOL番号及びこれらに対応するオーナMP−PK番号から構成されている。
VOL番号は、ストレージサブシステム200の各VOLを一意的に特定するために各VOLに割り当てられた番号を示している。オーナMP−PK番号は、テーブル内の対応するVOL番号によって一意的に特定されているVOLについて、読出/書込コマンド以外の処理コマンド(すなわち、完全なVOLをターゲットとするコマンド)を担当するオーナMP−PKを一意的に特定するために使用される番号である。
<Sub−VOLオーナMP−PKテーブルの構造>
図6は、Sub−VOLオーナMP−PKテーブル2132の具体例を示している。このテーブルは、ストレージサブシステム200内の全てのVOLのVOL番号、VOL内の全てのSub−VOLのSub−VOL番号、各Sub−VOLのアドレス範囲及びこれらに対応するオーナMP−PK番号から構成される。
VOL番号は、ストレージシステムの各VOLを一意的に特定するために各VOLに割り当てられた番号を示している。Sub−VOL番号は、Sub−VOLの数に基づいて各Sub−VOLに割り当てられたSub−VOLのシリアル番号である。ストレージシステム内でSub−VOLを一意的に特定するために、VOL番号及びSub−VOL番号は、組合せて使用される。
オーナMP−PK番号は、テーブル内の対応するVOL番号及びSub−VOL番号によって一意的に特定されているSub−VOLについて、I/O処理を担当するオーナMP−PKを一意的に特定するために使用される番号である。
但し、I/Oコマンドは、Sub−VOLではなくVOLをターゲットとするため、テーブル内には、各Sub−VOLに関連付けられているVOLのアドレス範囲も維持されている。
図6のテーブルに示すように、ターゲットVOL内のSub−VOLのためのSub−VOLオーナMP−PKは、ターゲットVOLのためのVOLオーナMP−PKとは異なっていてもよい。
<VOL制御情報テーブルの構造>
図7は、VOL制御情報テーブル2413の具体例を示している。このテーブルは、VOLをターゲットとする異なるコマンドを処理する必要があるVOLに関連する様々な情報から構成されている。テーブル2413は、CM−PKのSM内にある。テーブル2413は、速やかなアクセスのために、テーブル2411、2412と同様に、MP−PKのLMにコピーされる。
この情報は、VOL番号、VOL内のSub−VOLの総数、VOL全体のサイズ、VOLの状態(例えば、VOLが「予約されている(RESERVED)」か否か)、VOLを予約しているホスト計算機のホストID等を含んでいてもよい。ホストIDは、各ホストコンピュータに割り当てられ、同じSANに接続されている複数のホスト内で各ホストを一意的に特定するための固有のIDである。このIDは、SAN内でローカルに一意的であってもよく、又はグローバルに一意的なIDであってもよい。
このテーブルは、例えば、VOLに対する何らかのI/O動作を実行する前に、VOLの状態(ホスト計算機のために「予約されている」か否か)を確認するために使用される。
ここで「予約(RESERVED)」とは、ホスト計算機によってターゲットVOLが使用中であり、他のホスト計算機からのターゲットVOLへのアクセスがロックされていることを意味する。一方、「解放(RELEASED)」とは、ターゲットVOLへのアクセスのロックが解除され、他のホスト計算機がターゲットVOLにアクセスできることを意味する。
<Sub−VOL制御情報テーブルの構造>
図8は、Sub−VOL制御情報テーブル2221の具体例を示している。このテーブルは、Sub−VOL ID、VOL番号、Sub−VOL番号、Sub−VOLのサイズ、各Sub−VOLの状態(例えば、Sub−VOLが「予約されている」か否か)、及びSub−VOLを予約しているホスト計算機のホストIDから構成されている。
Sub−VOL IDは、ストレージシステム内でSub−VOLを一意的に特定するIDである。この実施形態では、このIDは、VOL番号とSub−VOLのシリアル番号の組合せである。VOL番号、Sub−VOL番号及びホストIDの定義は、テーブル2131、2132、2413のそれぞれにおいて同様である。このテーブルは、オーナMP−PKが、テーブルが存在するLMのMP−PKであるSub−VOLに関する情報のみから構成されている。
VOLオーナMP−PKは、Sub−VOL制御情報テーブル2221内の各Sub−VOLの状態コラムに「予約(RESERVED)」又は「解放(RELEASED)」を書き込む。「予約」及び「解放」の意味は、VOL制御情報テーブル2413について説明した通りである。
<VOL作成処理>
図9は、本発明の実施形態に基づくVOL作成プログラム2421によるVOL作成処理のフローチャートである。このVOL作成プログラムは、ストレージサブシステム200内で新しいVOL(以下、「ターゲットVOL」と言う。)を作成するプログラムである。このプログラムは、MP−PK220によって実行され、このMP−PK220は、VOLのオーナMP−PKではなくてもよい。
図9に示すように、ステップS100において、MP−PKは、まず、管理計算機300から、LAN400及びネットワークI/F260を介して、VOL作成コマンドを受信する。このVOL作成コマンドは、ターゲットVOLに関する制御情報、例えば、VOLのサイズ、VOL ID、RAIDグループ等を含む。
ステップS101において、MP−PK220は、要求されたVOLサイズがストレージサブシステム200において使用可能な空き領域より大きいかを判定する。ストレージシステムにおいて、要求されたサイズが使用可能でない場合、プロセスは、S102に移行し、MP−PKは、管理計算機にエラーを返し、プログラムが終了する(S102)。一方、ストレージサブシステム200が新しいVOLを収容する十分な空き領域を有している場合、MP−PKは、ステップS103〜S114を実行してターゲットVOLを作成する。
ステップS103において、MP−PKは、ターゲットVOLを作成するために必要な1つ以上のディスクドライブ251内の領域を予約する。
ステップS104において、MP−PKは、数式を用いて、ターゲットVOLのために作成する必要があるSub−VOLの数を算出する。ステップS104で使用される数式は、例えば、ターゲットVOLのサイズ(数)を所定のSub−VOLサイズによって除算する式であってもよい。この除算の商は、整数にならない場合、整数に切り上げられ、これによって、Sub−VOLのサイズ(数)が求められる。例えば、ターゲットVOLサイズが16GBであり、所定のSub−VOLサイズが5GBである場合、16GBを5GBで除算した商は、3.2であり、この商は、整数4に切り上げられる。したがって、ターゲットVOLのために、それぞれ5GBの4つのSub−VOLを作成する必要がある。これに代えて、各MP−PKが作成されたSub−VOLの1つをそれぞれ担当するように、MP−PKの数に基づいてSub−VOLの数を決定してもよい。例えば、ターゲットVOLサイズが16GBであり、利用可能なMP−PKの数が5である場合、5つのSub−VOLを作成する。そして、ターゲットVOLサイズ16GBを5で除算し、3.2GBを求めることによって各Sub−VOLのサイズを決定する。すなわち、5つのSub−VOLのそれぞれを3.2GBとする。
次に、ステップS105において、MP−PKは、数式を用いて、各Sub−VOLに対応するターゲットVOLのアドレス範囲を算出する。この数式は、例えば、サイズが固定された連続するSub−VOLについてアドレス0から始まるアドレス範囲であってもよい。例えば、ターゲットVOLサイズが16GBであり、所定のSub−VOLサイズが5GBである場合、4個のSub−VOLのためのアドレス範囲は、それぞれ、0G〜5G−1、5G〜10G−1、10G〜15G−1、15G〜20G−1になる。
ステップS106では、MP−PKが、所定の規則に基づいて、ターゲットVOLのためのオーナMP−PKを決定する。例えば、MP−PKは、VOLオーナMP−PKテーブルを参照して、最後に割り当てられたオーナMP−PK#(番号)を判定し、ラウンドロビン法を用いて、ターゲットVOLのVOLオーナMP−PK#を判定する。オーナMP−PKを判定する技術の他の具体例として、各MP−PKについてMP−PK稼働率を算出し、稼働率が最も低いMP−PKを選択してもよい。MP−PK稼働率は、MP−PKの各MPのプロセッサ稼働率の平均又はMP−PK毎の全てのMPのプロセッサ稼働率の合計である。MPのプロセッサ稼働率の算出については周知であり、ここではこれ以上説明しない。
次に、ステップS107において、MP−PKは、ターゲットVOLの各Sub−VOLのSub−VOLオーナMP−PKを判定する。ここでは、Sub−VOLオーナMP−PKテーブルを参照することによって、S106で説明した規則を使用する。
ステップS108において、MP−PKは、ターゲットVOL及びターゲットVOLのオーナMP−PKの情報によって、共有メモリ241内のVOLオーナMP−PKテーブル2411及びFE−PK210のメモリ213内のVOLオーナMP−PKテーブル2131を更新する。
ステップS109において、MP−PKは、ターゲットVOLのSub−VOL及びSub−VOLオーナMP−PKに関する情報によって、各MP−PK220のローカルメモリ222内のSub−VOLオーナMP−PKテーブル2412及びFE−PK210のメモリ213内のSub−VOLオーナMP−PKテーブル2132を更新する。
ステップS110において、MP−PKは、ターゲットVOLのための制御情報を生成し、ステップS111において、MP−PKは、生成した情報及びVOL作成コマンドと共に受信した情報によって、SM241内のVOL制御情報テーブル2413を更新する。
ステップS112において、MP−PKは、ターゲットVOLの各Sub−VOLのための制御情報を生成し、ステップS113において、MP−PKは、この情報によって、各MP−PK220のLM222内のSub−VOL制御情報テーブル2221を更新する。
一旦、テーブルが更新されると、MP−PKは、VOL(ターゲットVOL)が作成されたことを示す肯定応答を返し(S114)、プログラムが終了する。
<ローカルルータによる分散処理>
図10は、ホスト計算機100からコマンドを受信したローカルルータ(LR)212によって実行されるコマンドの分散処理(distribution processing)を示すフローチャートである。
まず、ステップS201において、LR212がホスト計算機100からコマンドを受信する。
そして、ステップ202において、LR212がコマンドを解析し、コマンドがVOL読出/書込関連コマンドであるか、VOL全体に関連する他のタイプコマンド、例えば、VOL状態変更コマンドであるかを判定する。コマンドがVOL読出/書込関連コマンドである場合、プロセスは、ステップS203に進む。コマンドが他のタイプのコマンドの1つである場合、プロセスは、ステップS206に進む。
ステップS203では、LR212がコマンドからコマンドのターゲットアドレス及びVOL#を抽出する。そして、ステップS204において、LR212は、メモリ213内のSub−VOLオーナMP−PKテーブル2132を参照し、ターゲットアドレスのSub−VOL#(ターゲットSub−VOL)及びこのターゲットSub−VOLのオーナMP−PKを判定する。
次のステップS205において、LR212は、処理のためにこのオーナMP−PKにコマンドを送信する。
ステップS202において、コマンドが読出/書込関連コマンドでなかった場合(他のタイプのコマンドであった場合)、Sub−VOLオーナMP−PKではなく、VOLオーナMP−PKがコマンドを処理する必要がある。したがって、LR212は、ターゲットVOLのVOLオーナMP−PKにコマンドを送信するステップを実行する。
ステップS206では、LR212がコマンドからVOL#を抽出し、ステップS207では、LR212がメモリ213内のVOLオーナMP−PKテーブル2131を参照して、ターゲットVOLのオーナMP−PKを判定する。
最後に、ステップS208において、LR212は、処理されるターゲットVOLのオーナMP−PKにコマンドを送信する。
<Sub−VOLオーナMP−PKによる読出コマンド/要求処理>
図11は、読出コマンドを受信したSub−VOLオーナMP−PKによって実行される読出要求処理プログラム2422に基づく読出処理のフローチャートである。
ステップS300では、ステップS205においてLR212が送信した読出コマンドをその宛先であるSub−VOLオーナMP−PKが受信する。
ステップS301では、Sub−VOLオーナMP−PKがSub−VOL制御情報テーブル2221を参照し、予約競合(reservation conflict)があるか否かをチェックする。Sub−VOLの状態が「予約(RESERVED)」であり、ホスト計算機100が読出コマンドを送信した計算機と異なる(すなわち、ターゲットSub−VOLが他のホスト計算機100によって使用中である)場合、MP−PKは、ステップS302において、ホスト計算機100に「予約競合(RESERVATION CONFLICT)」を返し、プログラムが終了する。
一方、Sub−VOLが「解放(RELEASED)」又は読出コマンドを送信したホスト計算機100のために「予約(RESERVED)」されている場合、MP−PKは、プロセスをステップS303に進める。
ステップS303では、Sub−VOLオーナMP−PKがキャッシュ又はディスクから要求されたデータを読み出し、読出コマンドを送信してきたホスト計算機にデータを返す。
データ転送が完了すると、ステップS304において、MP−PKは、読出コマンドを送信してきたホスト計算機に「グッド(GOOD)」を返し、プログラムが終了する。
<Sub−VOLオーナMP−PKによる書込コマンドの処理>
図12は、書込コマンドを受信したSub−VOLオーナMP−PKによって実行される書込要求処理プログラム2423に基づく書込コマンドの処理のフローチャートである。
ステップS400では、ステップS205においてLR212が送信した書込コマンドをその宛先であるSub−VOLオーナMP−PKが受信する。
ステップS401では、ステップS301と同様に、Sub−VOLオーナMP−PKがSub−VOL制御情報テーブル2221を参照し、予約競合があるか否かをチェックする。Sub−VOLが「解放(RELEASED)」又は読出コマンドを送信したホスト計算機100のために「予約(RESERVED)」されている場合、MP−PKは、プロセスをステップS403に進める。
MP−PKは、ステップS403において、データ受信バッファが、ホストコンピュータ100によって送信されるデータをバッファリングするために十分な容量を有しているかをチェックする。データ受信バッファが十分な容量を有していない場合、MP−PKは、書込コマンドを送信してきたホスト計算機に「エラー(ERROR)」を返し、プログラムが終了する。
一方、MP−PKは、ステップS403において、データ受信バッファが、ホスト計算機100によって送信されるデータを受信するために十分な容量を有していると判定した場合、ステップS405において、書込コマンドを送信してきたホスト計算機に「転送準備完了(TRANSFER READY)」を返し、ホストによるデータ送信を待機する。ホスト計算機100は、ストレージサブシステム200から「転送準備完了」を受信すると、書込コマンドに関連するデータを送信する。
ストレージサブシステム200のオーナMP−PKは、ステップS406において、このデータを受信してデータ受信バッファにバッファリングし、ステップS407において、ホスト計算機100に「グッド(GOOD)」を返し、プログラムが終了する。
データ受信バッファからディスクドライブ251へのこのデータのデステージング(de-staging)は、別のプログラムによって実行される。このデータデステージング処理は周知であり、ここではこれ以上説明しない。
<VOLオーナMP−PKによる予約及び解放コマンドの処理>
図13は、VOLについての「予約」又は「解放」コマンドを受信したVOLオーナMP−PKによって実行される予約/解放要求プログラム2424に基づく予約及び解放コマンドの処理のフローチャートである。これらのコマンドは、VOL全体の処理に関連し、(読出/書込コマンドの場合のように)VOLの一部の領域に限定されることはないので、VOLオーナMP−PKによって処理される。
ステップS500において、VOLオーナMP−PKがホスト計算機100の1つから「予約」又は「解放」コマンドを受信する。このコマンドは、ステップS208において、LR処理プログラム2133に基づき、LR212によってVOLオーナMP−PKに送信される。
VOLオーナMP−PKは、コマンドを受信した後、ステップS501において、VOL制御情報テーブル2413を参照し、ターゲットVOLが既に予約されているか否か(VOLが別のホスト計算機による使用のためにロックされているか、又はVOLが如何なるホスト計算機による使用のためにもロックされていないか)をチェックする。VOLがまだ予約されていない場合、VOLオーナMP−PKは、プロセスをステップS504に進める。
一方、ステップS502において、VOLが既に予約されている場合、MP−PKは、コマンドを発行したホスト計算機100と、VOLを現在予約しているホスト計算機100とが同じであるかをチェックする。ホスト計算機100が同じでない場合、VOLオーナMP−PKは、コマンドを送信してきたホスト計算機に「予約競合」を返し、プログラムを終了する。
ステップS504において、VOLオーナMP−PKは、SM241内のVOL制御情報テーブル2413を更新することによって、ターゲットVOLの状態を「予約」又は「解放」の何れかに更新する。
このとき、読出/書込関連コマンドを受信したSub−VOLオーナMP−PKがVOLの状態と同様にSub−VOLの状態を確実に判定できるようにするため、ターゲットVOLの各Sub−VOLの状態も同様に更新する必要がある。このため、VOLオーナMP−PKは、ステップS505において、Sub−VOLオーナMP−PKテーブル2412を参照し、ターゲットVOLの全てのSub−VOL及びそれぞれのオーナMP−PKに関する情報を取得する。
次に、ステップS506において、VOLオーナMP−PKは、受信コマンドに基づいて、ターゲットVOLのSub−VOLを担当する各Sub−VOLオーナMP−PKのLM222内のSub−VOL制御情報テーブル2221を更新することによって、Sub−VOL状態を「予約」又は「解放」の何れかに更新する。
ステップS507において、VOLオーナMP−PKは、コマンドを送信してきたホスト計算機に「グッド(GOOD)」を返し、プログラムを終了する。
<VOLオーナ変更プログラム及びSub−VOLオーナ変更プログラムの処理>
VOLオーナ変更プログラム2425は、米国特許7912996B2に開示されているように、VOLのオーナMP−PKを変更し、及びこれに応じてVOLオーナMP−PKテーブル2131を更新するプログラムである。Sub−VOLは、本質的には、より小さいVOLであるので、Sub−VOLオーナ変更プログラム2426は、VOLオーナMP−PKテーブル2131ではなく、LM222及びメモリ213内のSub−VOLオーナMPPKテーブル2132を更新する点を除いて、VOLオーナ変更プログラム2425と同様である。
<Sub−VOLサイズ/数変更>
また、何れかのVOLによって生じる負荷は、動的に(時間の経過に伴って)変化することがあるので、新たな演算結果に基づいて、VOLのSub−VOLのサイズ及び数を変更してもよい。MP−PKの1つは、各MP−PKの稼働率に関する情報を取得し、又は各MP−PKへのI/Oを監視することによって、各MP−PKの稼働率を判定し、各MP−PKの稼働率が同等又は略々同等となるように、論理ボリュームのサブボリュームのオーナシップをMP−PKに分担/分散させる。例えば、稼働率が高いMP−PKの幾つかのVOLのオーナシップを、稼働率が比較的低い他の1又は複数のMP−PKに移転させて、MP−PKの稼働率を均一に分散させることができる。同様に、各VOLについてのI/Oを計数し、各VOLによって生じるMP−PK上の負荷を判定し、VOLのオーナシップを入れ替えることによって、VOLのオーナシップを有することに起因するMP−PK上の全負荷が他のMP−PKの負荷と同等又は略々同等となるようにしてもよい。ストレージシステムは、この変更を周期的に実行するか、1つ以上のプロセッサユニットの負荷が閾値を超えたときにこの変更を実行するかを自律的に決定することができる。また、ストレージ管理者が同様の演算に基づいて及び/又は自らの入力パラメータによって、この変更を実行することを決定してもよい。このアーキテクチャによって、各プロセッサユニットに負荷を同等に分散させることができる。
実施形態1では、VOLを複数のより小さいSub−VOLに分割し、これらのオーナシップを複数のMP−PKに分散させることによって、MP−PK上で単一のVOLによって生成される負荷を複数のMP−PKに分散でき、複数のMP−PKの間で負荷を均一にすることができる。これによって、マイクロプロセッサをより効率的に使用できるようになり、したがって、ストレージシステムの性能が向上する。この効果は、VOLのサイズが非常に大きい場合に特に顕著となる。この発明は、VOLサイズが大きく、単一のプロセッサに完全なVOLのオーナシップを与えるより、VOLのオーナシップを複数のMP−PKに分散させた方がより効率的になるビッグデータアプリケーションにおいて特に有用である。
(2)実施形態2
この実施形態は、Sub−VOLを使用したVOLコピー技術の実現に関する。この技術では、同じストレージサブシステム200内にVOLのフルコピー(full copy)を作成する。この実施形態では、非同期フルコピー技術を説明する。但し、同様の原理によって、Sub−VOLを用いて同期フルコピー技術も実現することができる。この技術では、プライマリVOL及びセカンダリVOL(コピーVOL)のオーナは、同じにする。また、プライマリSub−VOL及び対応するセカンダリSub−VOL(コピーSub−VOL)のオーナも同じにする(例えば、プライマリSub−VOL#1及び対応するセカンダリSub−VOL#1のオーナは、単一のMP−PKであり、プライマリSub−VOL#2及び対応するセカンダリSub−VOL#2のオーナも単一のMP−PKであり、このMP−PKは、プライマリ及びセカンダリのSub−VOLペアのためのオーナMP−PKと同じであっても異なっていてもよい)。
この実施形態の計算機システムの構成としては、図1に示した計算機システムと同様の構成を適用できる。
<キャッシュメモリパッケージの構造>
図14は、この実施形態におけるキャッシュメモリパッケージ(CM−PK)240の例示的構造を示している。このセクションでは、図2のCM−PK240との違いを説明する。
共有メモリ241は、更に、図16を用いて後に説明するVOLペア情報テーブル2414Aを格納している。
VOLオーナMP−PKテーブル2411A、Sub−VOLオーナMP−PKテーブル2412A及びVOL制御情報テーブル2413Aは、それぞれテーブル2411、テーブル2412及びテーブル2413に対応している。
また、図14は、プログラムメモリのコンテンツの具体例も示している。このプログラムメモリは、VOL作成プログラム2421(図9参照)に対応するVOL作成プログラム2421A、読出要求処理プログラム2422A、PVOL書込要求処理プログラム2423A、VOLオーナ変更プログラム2425A、Sub−VOLオーナ変更プログラム2426A、ペア作成プログラム(pair create program)2427A、VOLオーナMP−PKのためのペア動作プログラム(pair operation program)2428A及びSub−VOLオーナMP−PKのためのペア動作プログラム2429Aから構成されている。
読出要求処理プログラム2422Aは、読出動作関連コマンド/要求を処理するために使用される。PVOL及びSVOLは、VOLと同じプロパティを有するので、このプログラムは、PVOL読出動作及びSVOL読出動作の両方に共通である。このプログラムは、実施形態1の図11に示すシンプレックスVOL(Simplex VOL)の読出要求処理プログラムと同じである。「シンプレックス」状態とは、ペアボリューム(PVOL及びSVOL)の依存関係がない状態を意味する。
PVOL書込要求処理プログラム2423Aは、書込動作関連コマンド/要求を処理するために使用される。このプログラムのフローチャートの具体例は、図21を用いて後に説明する。
VOLオーナ変更プログラム2425Aは、VOLオーナ変更プログラム2425に対応しており、Sub−VOLオーナ変更プログラム2426Aは、Sub−VOLオーナ変更プログラム2426に対応している。
ペア作成プログラム2427Aは、コピーペアを生成するために使用される。これについては、図18のフローチャートを用いて後に説明する。
ペア動作プログラム2428Aは、シャドウイメージ(Shadow Image)コピーペア関連動作、例えば、ペア分離/ペア再同期等を実行する。このプログラムは、基本的にPVOL/SVOLペアのVOLオーナMP−PKによって実行され、Sub−PVOL(PVOLのSub−VOL)/Sub−SVOL(SVOLのSub−VOL)ペアのそれぞれのオーナMP−PKによって実行されるSub−VOLオーナMP−PKのためのペア動作プログラム2429Aによって補われる。プログラム2428A、2429Aのフローチャートは、それぞれ図19及び図20に示している。
<FE−PK210のメモリ213の構造>
この実施形態のFE−PK210のメモリ213の構造は、実施形態1と同じである。また、テーブル2131、2132は、この実施形態でも同じ目的のために使用される。
<LR処理プログラム2133>
また、実施形態1のLR処理プログラム2133は、この実施形態でも同じ目的のために使用され、更に、このプログラムは、VOL(PVOL/SVOLペア)のオーナMP−PKにコピーペア関連コマンドを送信する。図10のLR処理プログラムのフローチャートに示すように、ステップS202において、コマンドがVOL読出/書込コマンド以外のコマンド(コピーペア関連コマンドも含まれる。)であると判定された場合、このコマンドは、ステップS206〜S208によってVOL(PVOL/SVOL)オーナMP−PKに送信される。
<MP−PKのローカルメモリの構造>
図15は、ローカルメモリ(LM)222の構造の具体例を示す図である。LM222は、図8の2221に対応するSub−VOL制御情報テーブル2221Aと、Sub−VOLペア情報テーブル2222Aとから構成されている。
Sub−VOLペア情報テーブル2222Aについては、図17を用いて後に説明する。
<VOLペア情報テーブルの構造>
図16は、VOLペア情報テーブル2414Aの具体例を示す図である。VOLペア情報テーブル2414Aは、コピーVOLペアに関する情報を維持する。このテーブルは、コピーVOLペアID、PVOL番号、SVOL番号及びペア状態を含む。コピーVOLペアIDは、ストレージサブシステム200内の各コピーVOLペアに付された一意的な番号である。ペア状態は、コピーVOLペアの状態を示している。例えば、フィールドの値が「PAIR」である場合、これは、対応するVOLペアがペア状態であることを意味する。「COPY(PD)」は、対応するVOLペアがCOPY保留状態(COPY pending state)であることを意味する。COPY保留状態は、PVOLからSVOLへのコンテンツの最初のコピー動作が進行中であることを意味する。「PSUS」は、対応するVOLペアが分離状態(split state)であることを意味する。すなわち、Sub−SVOLは、ペア分離動作の実行時点のSub−PVOLのコンテンツを維持し、ペア分離動作後にSub−PVOLのコンテンツが変更されても、Sub−SVOLのコンテンツは、変更されない。
<Sub−VOLペア情報テーブルの構造>
図17は、Sub−VOLペア情報テーブル2222Aの具体例を示す図である。このテーブルは、コピーSub−VOLペアに関する情報を維持する。Sub−VOLペア情報テーブル2222Aは、そのフィールドとして、Sub−PVOL番号、Sub−SVOL番号、ペア状態及び差分ビットマップ(Differential Bitmap)を含む。Sub−PVOL及び対応するSub−SVOLの処理は、同じSub−VOLオーナMP−PKによって担当される。
ペア状態フィールドは、コピーSub−VOLペアの状態を示す。ペア状態は、上述したように、その値としてPAIR状態、COPY(PD)状態、PSUS状態等を含む。
差分ビットマップフィールドは、Sub−PVOL及びSub−SVOLの論理ブロックアドレス間の差分を示すビットマップを維持する。例えば、時刻T1において、Sub−PVOL及びSub−SVOLが完全に同じである場合、LBAのビットマップは、全てゼロになる。そして、時刻T2(>T1)において、Sub−PVOLの特定のLBAに書込が行われると、そのSub−PVOLは、そのLBAにおいて更新される。これによって、そのLBAについては、Sub−PVOL及びSub−SVOLが異なり、したがって、ビットマップフィールドのそのLBAの位置が1に設定され、これは、そのLBAにおいて、Sub−PVOLがSub−SVOLとは異なることを示す。
<ペア作成動作>
図18は、ペア作成プログラム2427Aによるペア作成動作を示すフローチャートである。この処理は、既に作成されているが、互いに関連付けられていないPVOL及びSVOLをペアにする処理である。ペア作成プログラム2427Aは、2つのVOLをペア状態にして、コピー動作を実行できるようにするプログラムである。図18に示すプログラムは、PVOLのオーナMP−PKによって実行されるが、ペア作成プロセスの一部(S608)は、Sub−VOLオーナMP−PKによって実行され、このプロセスのフローチャートは、図20に示している。
PVOLのオーナMP−PK(PVOLオーナMP−PKと呼ぶ。)は、まず、ステップS600において、ホスト計算機100からペア作成コマンドを受信し、ステップS601において、コピーペアのPVOL及びSVOL(以下にこの段落ではパラグラフの「ターゲットPVOL」及び「ターゲットSVOL」と呼ぶ。)のVOL番号をコマンドから抽出する。
ステップS602において、ターゲットPVOLオーナMP−PKは、VOLオーナMP−PKテーブル2411Aを参照して、ターゲットPVOL及びターゲットSVOLが同じオーナを有するか否かを確認する。これらが同じオーナを有する場合、ターゲットPVOLオーナMP−PKは、プロセスをステップS604に進める。一方、ターゲットPVOL/SVOLペアが同じオーナMP−PK(そのオーナMP−PK自体)を有さない場合、ターゲットPVOLオーナMP−PKは、プロセスをステップS603に進め、VOLオーナ変更プログラム2425Aを実行し、ターゲットSVOLのオーナオーソリティ(Owner Authority)を変更して、ターゲットPVOLオーナMP−PKと同じにする。
次に、ステップS604において、ターゲットPVOLオーナMP−PKは、ターゲットSVOLの各Sub−VOLのオーナオーソリティがターゲットPVOLの対応するSub−VOLのオーナオーソリティと同じであるか否かをチェックする。これらが同じオーナを有する場合、ターゲットPVOLオーナMP−PKは、プロセスをステップS606に進める。これらが同じオーナMP−PKを有さない場合、ターゲットPVOLオーナMP−PKは、プロセスをステップS605に進め、Sub−VOLオーナ変更プログラム2426Aを実行し、ターゲットSVOLの全てのSub−VOLのオーナオーソリティをターゲットPVOLのSub−VOLと同じにする。
ステップS606の時点では、ターゲットPVOL及びターゲットSVOLは、同じVOLオーナMP−PKを有する。また、PVOL/SVOLペアの各Sub−VOLも同じオーナを有する。そこで、ステップS606において、PVOLオーナMP−PKは、ターゲットPVOL/SVOLをペアとする情報をVOLペア情報テーブル2414Aに加える。
次に、ステップS607において、PVOLオーナMP−PKは、VOLペア情報テーブル2414A内のVOLペア状態をCOPY(PD)に更新する。COPY(PD)は、最初のコピーが進行中であることを示す状態である。
ステップS608では、ターゲットPVOLからターゲットSVOLへの最初のコピーを実行する必要がある。しかしながら、Sub−VOLに対する読出及び書込動作は、Sub−VOLオーナMP−PKのみが実行するため、PVOLオーナMP−PKは、Sub−VOLオーナMP−PKテーブル2412Aを参照して、ターゲットPVOL/SVOLの全てのSub−VOLオーナMP−PKに関する情報を取得する。そして、PVOLオーナMP−PKは、各Sub−VOLオーナMP−PKに対して、Sub−VOLペアを作成し、Sub−PVOLから対応するSub−SVOLに最初のコピーを実行することを要求する。ステップS608の詳細な処理は、図20を用いて後に説明する。
ステップS609において、PVOLオーナMP−PKは、各Sub−VOLペアオーナMP−PKによるSub−VOLペア作成及び最初のコピー動作の完了を待機する。各Sub−VOLペアオーナMP−PKは、要求された動作を完了すると、完了に関する肯定応答をVOLペアオーナMP−PK(PVOL及びSVOLのオーナMP−PK)に送る。
PVOLオーナMP−PKは、全てのSub−VOLオーナMP−PKから肯定応答を取得すると、プロセスをステップS610に進める。PVOLオーナMP−PKは、ステップS610において、VOLペア情報テーブル2414Aのペア状態を「PAIR」に更新する。
ステップS611において、PVOLオーナMP−PKは、コピーペア作成動作の完了を示す肯定応答をホスト計算機100に返し、プログラムが終了する。
<PVOL及びSVOLのためのペア動作(ペア分離及びペア再同期)>
図19は、PVOL及びSVOLについてVOLオーナMP−PKによって実行されるペア動作(ペア分離/ペア再同期)のフローチャートである。ペア再同期動作は、分離状態(PSUS)であるSVOLをPVOLに再同期させ、SVOLがPVOLのコピーになり、PVOLの最新のコピーを維持するための動作である。
ステップS700では、コピーペアオーナMP−PK(PVOL及び対応するSVOLのVOLオーナMP−PK(PVOLオーナMP−PKとも呼ぶ。))がペア動作コマンドを受信する。
ステップS701において、PVOLオーナMP−PKは、コマンドからPVOL及びSVOLのVOL番号を抽出する。
ステップS702において、PVOLオーナMP−PKは、コマンドからペア動作を抽出する。このフローチャートでは、ペア動作は、ペア分離動作及びペア再同期動作の何れかを意味する。
ステップS703において、PVOLオーナMP−PKは、VOLペア情報テーブル2414Aを参照し、要求されたペアのPVOL及びSVOLが、要求された動作を実行するために適切な状態にあるかをチェックする。例えば、ペア分離動作の場合、PVOLオーナMP−PKは、PVOL及びSVOLがペア状態にあるか否かをチェックする。これらがペア状態ではない場合、要求された動作は、実行できない。PVOL及びSVOLが要求された動作を実行するために適切な状態ではない場合、PVOLオーナMP−PKは、プロセスをステップS704に進め、コマンドを発したホスト計算機100にエラー(ERROR)を返し、プログラムが終了する。
一方、ステップS703において、PVOL及びSVOLの状態が要求された動作を実行するために適切であると判定された場合、PVOLオーナMP−PKは、プロセスをステップS705に進める。
ステップS705において、PVOLオーナMP−PKは、VOLペア情報テーブル2414A内のコピーペアの状態を、要求された動作が進行中であることを示す状態に更新する。例えば、動作が「ペア作成」である場合、状態は、COPY(PD)に変更され、これは、最初のコピーが進行中であることを意味する。動作が「ペア分離」である場合、状態は、COPY(SP)になり、これは、Sub−PVOLからSub−SVOLへの差分コピー(differential copy)が進行中であることを意味する。動作が「ペア再同期」である場合、状態は、COPY(RS)になり、これは、Sub−PVOLからSub−SVOLへの差分コピーが進行中であることを意味する。
ステップS706において、PVOLオーナMP−PKは、Sub−VOLオーナMP−PKテーブル2412Aを参照し、PVOL及びSVOLのSub−VOLオーナMP−PKに関する情報を取得する。そして、PVOLオーナMP−PKは、これらのSub−VOLオーナMP−PKのそれぞれに対し、それらが担当するSub−VOLペアについて要求された動作を実行することを要求する。ステップS706の詳細な処理は、図20を用いて後に説明する。
ステップS707において、PVOLオーナMP−PKは、前のステップにおいて要求されたタスクの完了を待機する。PVOLオーナMP−PKは、全てのSub−VOLオーナMP−PKから肯定応答を受け取ると、プロセスをステップS708に進め、要求された動作に基づいて、VOLペアの状態を更新する。例えば、要求された動作がペア分離動作である場合、PVOLオーナMP−PKは、ペア状態を「PSUS」に更新する。
PVOLオーナMP−PKは、ステップS709において、コマンドを送信してきたホスト計算機100に、要求された動作の完了を示す肯定応答を返し、プログラムが終了する。
<Sub−PVOL及びSub−SVOLのためのペア動作(ペア分離、ペア再同期及びペア作成)>
図20は、Sub−VOLオーナMP−PKによって実行されるSub−PVOL及びSub−SVOLのためのペア動作(例えば、ペア分離/ペア再同期/ペア作成)のフローチャートである。これらのペア動作は、図18のステップS608の処理に対応する。したがって、図18のS608に示すように、何れのペア動作も、まずターゲットコピーペアVOLのオーナMP−PK(PVOLオーナMP−PK)によって部分的に実行される。そして、ターゲットコピーペアVOLのオーナMP−PKは、ターゲットコピーペアVOLの各Sub−VOLオーナMP−PKに対し、要求されたタスクの一部を実行することを要求する。Sub−VOLオーナMP−PKは、要求された動作を実行すると、タスクの完了を示す肯定応答をVOLオーナMP−PKに送る。全てのSub−VOLオーナMP−PKがタスクの完了を示す肯定応答を送ると、コピーペアVOLのオーナは、要求された動作に関する最終的なタスクを実行し、プログラムが終了する。図20のフローチャートは、このようなプロセスの具体例を示している。
ステップS800において、Sub−VOLオーナMP−PKは、PVOLオーナMP−PKからペア動作のコマンドを受け取る。この具体例では、ペア動作は、ペア作成、ペア分離又はペア再同期であってもよい。
ステップS801において、Sub−VOLオーナMP−PKは、コマンドからPVOL及びSVOLのVOL番号を抽出する。
ステップS802において、Sub−VOLオーナMP−PKは、ペア動作を抽出する。
ステップS803において、Sub−VOLオーナMP−PKは、ステップS703に関連して説明したように、Sub−VOLペア情報テーブル2222Aを参照し、要求された対のSub−PVOL及びSub−SVOLが要求された動作を実行するために適切な状態にあるかをチェックする。Sub−PVOL及びSub−SVOLが要求された動作を実行するために適切な状態にない場合、Sub−VOLオーナMP−PKは、プロセスをS804に進め、VOLオーナMP−PK(図18の処理を実行するPVOLオーナMP−PK)にエラー通知を返し、プログラムが終了する。
一方、ステップS803において、Sub−PVOL及びSub−SVOLの状態が要求された動作を実行するために適切であると判定された場合、Sub−VOLオーナMP−PKは、プロセスをステップS805に進める。
ステップS805において、Sub−VOLオーナMP−PKは、ステップS708について説明したように、Sub−VOLペア情報テーブル2222A内のコピーペアの状態を、要求された動作が進行中であることを示す状態に更新する。
ステップS806において、Sub−VOLオーナMP−PKは、要求された動作に基づくアクションを実行する。ペア動作のためのアクションの3つの具体例は、以下の通りである。要求された動作が「ペア再同期」である場合、Sub−VOLオーナMP−PKは、Sub−VOLペア情報テーブル2222Aから差分ビットマップを読み出し、差分ビットマップに従ってSub−SVOLを(現在のSub−PVOLの正確なコピーになるように)更新する。要求された動作がペア分離である場合、Sub−VOLオーナMP−PKは、非同期コピープロセスをトリガし、Sub−VOLペア情報テーブル2222Aから再び差分ビットマップを読み出し、差分ビットマップに従ってSub−SVOLを(現在のSub−PVOLの正確なコピーになるように)更新する。要求された動作がペア作成である場合、Sub−VOLオーナMP−PKは、Sub−SVOLに対する最初のコピー動作を実行して、現在のSub−PVOLの正確なコピーにする。このように、上述した3つの動作では、全て、Sub−SVOLをSub−PVOLの正確なコピーにするコピー動作を実行する。したがって、これらの3つの動作は、単一のサブプログラムで実行でき、このサブプログラムは、異なる状況でトリガすることができる。
ステップS807において、Sub−VOLオーナMP−PKは、要求された動作に応じて、Sub−VOL情報テーブル内のSub−VOLペアの状態を更新する。例えば、要求された動作がペア分離動作である場合、Sub−VOLオーナMP−PKは、Sub−VOLペアの状態を「PSUS」に更新する。
ステップS808において、Sub−VOLオーナMP−PKは、要求された動作の完了を示す肯定応答をVOLオーナMP−PKに返し、プログラムが終了する。
<PVOL書込動作>
図21は、Sub−VOLオーナMP−PKによって実行されるPVOL書込動作のフローチャートである。全てのPVOL書込コマンドは、実施形態1のシンプレックスVOLの場合と同様に、書込動作のターゲットアドレス範囲に含まれるSub−VOLのオーナシップを有するMP−PKに宛てられる。
ステップS900〜S906は、Sub−VOLオーナMP−PKが参照するテーブルがこの実施形態のためのテーブルである点を除いて、実施形態1における図12のステップS400〜S406と同様である。
ステップS907において、Sub−VOLオーナMP−PKは、Sub−VOLペア情報テーブル2222Aを参照し、Sub−VOLがコピーペアSub−VOL(Sub−SVOL)を有するか否かをチェックする。ターゲットSub−PVOLのためのSub−SVOLがない場合、Sub−VOLオーナMP−PKは、プロセスをステップS909に進める。一方、Sub−SVOLがある場合、Sub−VOLオーナMP−PKは、プロセスをステップS908に進め、Sub−VOLペア情報テーブル2222A内のSub−VOLペアの差分ビットマップを更新する。
ステップS909において、Sub−VOLオーナMP−PKは、ホスト計算機100に「グッド(GOOD)」を返し、プログラムが終了する。
データ受信バッファからディスクドライブ251へのこのデータのデステージングは、別のプログラムによって実行される。このデータデステージング処理は周知であり、ここではこれ以上説明しない。
本発明では、コピー機能のオリジナルボリューム(PVOL)及びコピーボリューム(SVOL)のオーナオーソリティを同じプロセッサに割り当て、コピー機能(PP)の性能を向上させている。更に、PVOL及びSVOLをそれぞれ複数のサブボリューム(プライマリサブボリューム及びセカンダリサブボリューム)に分割し、対応するプライマリサブボリューム及びセカンダリサブボリュームに同じプロセッサを割り当てる。ここで、1つのPVOLに対して複数のSVOLが存在することがあり、PVOL及びSVOLによって生じる累積的な負荷は、非常に大きくなることがある。本発明により、MPPKの利用率を向上させて、負荷を均等に分散させることができる。
(3)実施形態3
この実施形態は、Sub−VOLを用いて、スナップショット(Snapshot)と名付けられたVOLコピー機能を実現する方法に関する。
スナップショットVOLコピー技術は、PVOLが必要とする容量以下のPVOLのポイントインタイム(Point-in-Time)コピーを作成する技術である。スナップショットSVOLは、データがPVOLの物理データと同じである仮想VOL、データがプールVOL(Pool VOL)と呼ばれる異なるVOLに保存された仮想VOL、又は部分的にこれらの両方であってもよい。スナップショットVOLを生成する際は、SVOLのデータがどこに保存されているかについて、テーブル、すなわち、論理ブロックアドレス(又は他のユニット)ポインタテーブルを追跡する。スナップショットコピーペアVOLがペア状態であり、すなわち、SVOLデータがPVOLデータと同じである必要がある場合、SVOLの各論理ブロックアドレス(Logical Block Address:以下、LBA)ポインタは、PVOLのLBAを指す。スナップショットコピーペアが分離状態(PSUS)である場合、SVOLは、分離動作が実行されたときのPVOLのデータを維持する必要がある。この目的のために、プールVOLを用いて、ペア分離動作が実行された後に変更されるPVOLの元のデータの全てを維持する。また、LBAデータポインタテーブル2223Bと呼ばれるテーブルにおいて、PVOLのデータが保存されているプールVOLのためのLBAポインタも維持する。そして、この実施形態では、Sub−VOLを用いて、上述したスナップショットコピー機能を実現する。このために、各Sub−VOLについてのLBAデータポインタテーブル2223Bを作成する。実施形態2の場合と同様に、この実施形態でもプライマリVOL及びセカンダリVOL(コピーVOL)のオーナは同じにする。各プライマリSub−VOL及び対応するセカンダリSub−VOL(コピーSub−VOL)のオーナもそれぞれ同じにする。以下では、この方法の詳細を説明する。
<キャッシュメモリパッケージの構造>
この実施形態のキャッシュメモリパッケージ(CM−PK)240の構造は、図14のVOLペア情報テーブル2414Aの代わりに別のVOLペア情報テーブルを用いる点を除いて、図14に示した構造と実質的に同じである。このVOLペア情報テーブルは、スナップショットコピーVOLペアに関する情報を維持する。このテーブルの状態フィールドは、スナップショットコピーペアの状態に関する情報を維持する。状態フィールドは、スナップショットコピーペアVOLがペア状態であり、PVOLのコンテンツがSVOLのコンテンツと同じである場合、値「PAIR」になり、新しいペアが作成され、実際にペア状態を達成する前に処理(例えば、プールVOLの作成)が進行中である場合、値「COPY(PD)」になり、この状態では、コピーペアの「COPY(PD)」状態の場合のように最初のコピー動作を実行せず、VOLペアが分離状態にあり、SVOLは、ペア分離動作が実行されたときのPVOLのデータを維持する必要がある場合、値「PSUS」になる。
<プログラムメモリ内の各プログラムについて>
プログラムメモリ内のプログラムは、図14に示す通りである。VOL作成プログラム2421Aは、新しいVOL(PVOL及びSVOL)を作成するために用いられる。PVOLについては、このプログラムは、図9に示す実施形態1で用いるプログラム2421と同じである。また、SVOLについては、SVOLが仮想VOLであり、スナップショットSVOLは、作成時に物理的容量を必要としないので、図9のステップS101及びステップS103をスキップする点を除いて、このプログラムは、プログラム2421と同じである。
この実施形態における読出要求処理プログラム2422Aは、読出処理関連コマンドを処理するために用いられる。このプログラムは、後述する図25のフローチャートとして示されている。
この実施形態におけるPVOL書込み要求処理プログラム2423Aは、書込動作関連コマンドを処理するために用いられる。このプログラムのフローチャートは、図26を用いて後に説明する。
この実施形態のペア作成プログラム2427Aは、スナップショットコピーペアを作成するために用いられる。プログラムのフローは、図18に示すペア生成プログラムと同様であるが、ステップS606、ステップS607、ステップS610において使用されるVOLペア情報テーブルがスナップショットコピーVOLペアの情報を用いる点が先の説明と異なる。また、ステップS608において、Sub−VOLペアについての最初のコピー動作は、実行されず、これに代えて、対応するSub−VOLペアオーナMP−PKがPool−VOLを作成し、作成したPool−VOL又は既存のPool−VOLを各Sub−VOLペアに割り当てる。
VOLオーナMP−PKのためのペア動作プログラム2428Aは、実施形態2で説明したペア分離/ペア再同期等のスナップショットコピーペア関連動作を実行する。
この実施形態におけるSub−VOLオーナMP−PKのためのペア動作プログラム2429Aは、図20のステップS805、ステップS806及びステップS807において、Sub−VOLペア情報テーブル2222Aの代わりにSub−VOLペア情報テーブル2222Bを参照する。テーブル2222Bの具体例は、図23に示し、後に説明する。
この実施形態のステップS806では、所与のペア動作についてSub−VOLペア情報テーブル2222Bを更新すると共に、対応するPool番号及びLBAデータポインタテーブル番号を更新し、更に、動作の要求に応じて対応するLBAデータポインタテーブルのコンテンツを更新する。例えば、動作が「ペア生成」である場合、ペアのために新しいLBAデータポインタテーブル2223Bを作成し、Sub−VOLペアにPool−VOLを割り当て、ターゲットSub−PVOL ID、ターゲットSub−SVOL ID、割り当てられたPool VOL番号及び作成されたLBAポインタアドレステーブル番号を用いて、Sub−VOLペア情報テーブル2222Bに新たなエントリを追加する。動作が「ペア分離」である場合、ステップS806では、Sub−VOLペア情報テーブル2222B内の状態だけを変更する。動作が「ペア再同期」である場合、ステップS806では、LBAデータポインタテーブル2223Bに「NULL」を埋め、これは、全てのSub−SVOLのデータが現在のSub−PVOLと同じであることを表す。
<FE−PK内のメモリの構造>
この実施形態のFE−PK210のメモリ213の構造は、実施形態1と同じである。また、VOLオーナMP−PKテーブル2131及びSub−VOLオーナMP−PKテーブル2132は、この実施形態でも同じ目的で使用される。
また、実施形態1のLR処理プログラム2133は、この実施形態でも同じ目的で使用されると共に、更に、VOL(PVOL/SVOLペア)オーナMP−PKにスナップショットコピーペア関連コマンドを送信する。
図10のLR処理プログラムの例示的なフローに示すように、ステップS202において、VOL(PVOL又はSVOL)読出/書込コマンド以外のコマンド(スナップショットコピーペア関連コマンドも含まれる。)は、図10におけるステップS206〜S208によってVOL(PVOL/SVOL)オーナMP−PKに送信される。
<MP−PKのローカルメモリの構造>
図22は、MP−PK220内のLM222のコンテンツの具体例を示す図である。LM222のコンテンツは、Sub−VOL制御情報テーブル2221B、Sub−VOLペア情報テーブル2222B及び複数のLBAデータポインタテーブル2223Bから構成される。
Sub−VOL制御情報テーブル2221Bは、実施形態1のSub−VOL制御情報テーブル2221と同じである。
Sub−VOLペア情報テーブル2222Bは、Sub−VOLペアに関する情報を含む。このテーブルの具体例は、図23に示し、後に説明する。
LBAデータポインタテーブル2223Bの具体例は、図24に示している。
<VOLペア情報テーブルの構造>
この実施形態のためのVOLペア情報テーブルは、シャドウイメージコピーVOLペアの代わりにスナップショットコピーVOLペアに関するペア情報を維持する点を除いて、テーブル2414Aと同じである。
<Sub−VOLペア情報テーブルの構造>
図23は、Sub−VOLペア情報テーブル2222Bの具体例を示している。このテーブルは、2つの追加フィールドを有し、ビットマップフィールドを有していない点を除いて、テーブル2222Aと同様である。追加フィールドの一方は、「Pool番号」であり、他方は、「LBAデータポインタテーブル(2223B)番号」である。Pool番号は、対応するスナップショットコピーペアSub−VOLに関連するPool VOLの番号を示す。LBAデータポインタテーブル2223Bは、対応するSub−SVOLのデータのアドレスポインタを追跡する。LBAデータポインタテーブルの具体例は、図24に示している。
<LBAデータポインタテーブルの構造>
図24は、LM222内のLBAデータポインタテーブル2223Bの1つの具体例を示している。スナップショットコピーVOL毎に対応するLBAデータポインタテーブル2223Bがある。
LBAデータポインタ2223Bは、「LBA」フィールド及び「データポインタ」フィールドから構成されている。LBAフィールドは、テーブルが関連付けられているSub−SVOLの論理ブロックアドレス(Logical Block Address:LBA)である。「データポインタ」フィールドは、Sub−SVOLの対応するLBAのデータのためのアドレスポインタである。このフィールドが「NULL」である場合、これは、Sub−SVOLデータがSub−PVOLデータと同じであり、Sub−PVOLの同じLBAから読み出す必要があることを意味する。このフィールドが「NULL」ではない場合、フィールドの値は、Sub−SVOLのデータが存在する対応するPool VOLのアドレスである。
<PVOL及びSVOLの読出動作>
図25は、Sub−VOLオーナMP−PKによって実行されるPVOL/SVOL読出動作のフローチャートである。
ステップS1100では、Sub−VOLオーナMP−PKが、ホスト計算機100から送信された読出コマンドを受信する。
ステップS1101は、ステップ301に対応している。何らかの予約競合があった場合、プロセスは、ステップS1102に進み、プログラムが終了する。一方、Sub−VOLが「解放(RELEASED)」又は読出コマンドを送信したホスト計算機100のために「予約(RESERVED)」されている場合、Sub−VOLオーナMP−PKは、プロセスをステップS1103に進める。
ステップS1103では、Sub−VOLオーナMP−PKがSub−VOL制御情報テーブル2221Bを参照し、ターゲットSub−VOLがSub−PVOLであるか、Sub−SVOLであるかをチェックする。ターゲットSub−VOLがSub−PVOLである場合、Sub−VOLオーナMP−PKは、プロセスをステップS1104に進め、実施形態1における図11のステップS303と同様のシンプレックスVOL読出処理を実行する。
ステップS1103において、ターゲットSub−VOLがSub−SVOLであると判定された場合、Sub−VOLオーナMP−PKは、プロセスをステップS1105に進め、このステップS1105において、Sub−VOLペア情報テーブル2222Bを参照して、Pool番号及び対応するLBAデータポインタテーブル番号の情報を取得する。
ステップS1106では、Sub−VOLオーナMP−PKが関連するLBAデータポインタテーブル2223Bを参照し、ターゲットLBAのアドレスを取得する。
ステップS1107において、Sub−VOLオーナMP−PKは、ポインタフィールドが「NULL」であるか否かをチェックする。ポインタフィールドが「NULL」である場合、Sub−VOLオーナMP−PKは、プロセスをステップS1108に進め、ターゲットペアのSub−PVOLの対応するLBAからデータを読み出す。一方、ステップS1107において、データポインタフィールドが「NULL」以外の値を格納していると判定された場合、Sub−VOLオーナMP−PKは、その値を対応するPool VOLのアドレスと判断し、ステップS1109において、対応するPool VOLからデータを読み出す。
Sub−VOLオーナMP−PKは、ステップS1108又はステップS1109によってデータを読み出した後、プロセスをステップS1110に進め、読出データを返す。
ステップS1111において、Sub−VOLオーナMP−PKは、「グッド(GOOD)」を返し、プログラムが終了する。
<PVOLの書込動作>
図26は、Sub−VOLオーナMP−PKによって実行されるPVOL書込動作のフローチャートである。このフローチャートは、この段落で説明する幾つかの点を除いて、図21に示すフローチャートと同じである。
図26のステップS1200〜S1207は、図21のステップS900〜S907と同じである。ステップS1207で参照されるSub−VOLペア情報テーブルは、テーブル2222Bである。ステップS1208において、Sub−VOLオーナMP−PKは、スナップショットSub−VOLペアが分離状態(PSUS)であるかをチェックする。スナップショットSub−VOLペアが分離状態ではない場合、Sub−VOLオーナMP−PKは、プロセスをステップS1210に進める。スナップショットSub−VOLペアが分離状態である場合、Sub−VOLオーナMP−PKは、プロセスをステップS1209に進め、バッファリングされたデータをSub−PVOLにデステージングする前に、PVOLデータを読み出し、このデータを対応するPool VOLに書き込む。またSub−VOLオーナMP−PKは、MP−PKがデータを書き込んだPool VOLのアドレスによってLBAデータポインタテーブル2223Bを更新する。
ステップ1210において、Sub−VOLオーナMP−PKは、書込コマンドを発行したホスト計算機に「グッド(GOOD)」を返し、プログラムが終了する。
(4)その他
本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによって実現することもできる。この場合、システム又は装置には、このプログラムコードを記録したストレージ媒体が提供され、システム又は装置の計算機(又はCPU又はMPU)が、このストレージ媒体に保存されているプログラムコードを読み出す。この場合、ストレージ媒体から読み出されるプログラムコード自体が上述した実施形態の機能を実現する。プログラムコード自体及びプログラムコードが保存されるストレージ媒体は、本発明を構成する。このようなプログラムコードを供給するためのストレージ媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発メモリカード又はROMを使用してもよい。
更に、実施形態の機能を実現するソフトウェアのプログラムコードは、ネットワークを介して配信してもよく、プログラムコードは、記録手段、例えば、システム又は装置のハードディスク又はメモリ、又はCD−RW又はCD−R等のストレージ媒体に保存され、プログラムコードの使用時に、システム又は装置の計算機(又はCPU又はMPU)が記録手段又はストレージ媒体に保存されているプログラムコードを読み出し、実行してもよい。
なお、上述したプロセス及び技術は、本質的には、特定の装置に限定されず、コンポーネントの適切な如何なる組合せによって実現してもよい。更に、上述した開示に基づいて、様々なタイプの汎用デバイスを用いることもできる。上述した方法のステップを実行するために専用の装置を構築することも有用である。実施形態で開示した複数のコンポーネントの適切な組合せによって様々な実施形態を構成することができる。例えば、実施形態で説明した全てのコンポーネントから幾つかのコンポーネントを省略してもよい。更に、異なる実施形態で説明したコンポーネントを適切に組み合わせてもよい。特定の具体例に関連付けて本発明を説明した。但し、特定の具体例は、説明を目的とするものであり、全ての側面を限定するものではない。本発明の実施に適するハードウェア、ソフトウェア及びファームウェアの多くの組合せがあることは、当業者にとって明らかである。例えば、上述したソフトウェアは、様々なプログラム又はスクリプト言語、例えば、C/C++、パール(Perl)、シェル(Shell)、PHP及びJava(登録商標)によって実現してもよい。
更に、実施形態では、説明のために必要な制御線及び情報線を示した。全ての制御線及び情報線は、製品に関して示したものではない。全てのコンポーネントを互いに接続してもよい。
更に、この技術分野で通常の知識を有する者は、本明細書及びここに開示した本発明の実施形態に基づいて、本発明の他の具体例を想到できることは明らかである。ここに説明した実施形態の様々なフォーム及び/又はコンポーネントは、データの管理機能を有するコンピュータ化されたストレージシステムにおいて、個別に又は如何なる組合せで用いてもよい。詳細な説明及び特定の具体例は、典型的なもののみを示している。本発明の範囲及び思想は、特許請求の範囲に示されている。
100 ホスト計算機
200 ストレージサブシステム
210 フロントエンドパッケージ(FE−PK)
212 ローカルルータ(LR)
213 メモリ
220 マイクロプロセッサパッケージ(MP−PK)
221 マイクロプロセッサ(MP)
222 ローカルメモリ(LM)
230 バックエンドパッケージ(BE−PK)
240 キャッシュメモリパッケージ(CM−PK)
241 共有メモリ(SM)
242 プログラムメモリ
243 キャッシュメモリ
250 ディスクユニット
251 ディスクドライブ
300 管理計算機
400 ローカルエリアネットワーク(LAN)
500 ストレージエリアネットワーク(SAN)

Claims (18)

  1. 計算機に接続された計算機システムであって、
    少なくとも1つ論理ボリュームを前記計算機に提供する複数のストレージデバイスと、それぞれが前記計算機によって発行されたコマンドを処理する複数のプロセッサユニットとを含むストレージサブシステムを備え、
    前記論理ボリュームの少なくとも1つが複数のサブボリュームに分割され、
    前記論理ボリュームのためのコマンドの処理を担当する前記論理ボリュームのボリュームオーナプロセッサユニットは、前記複数のプロセッサユニットのうちの1つのプロセッサユニットであり、前記複数のサブボリュームの少なくとも1つのサブボリュームオーナプロセッサユニットは、前記複数のプロセッサユニットのうちの前記論理ボリュームのボリュームオーナプロセッサユニットでない1つのプロセッサユニットであり、
    前記サブボリュームオーナプロセッサユニットのそれぞれは、前記担当するサブボリュームについての読出又は書込コマンドを処理し、前記ボリュームオーナプロセッサユニットは、担当する論理ボリュームについての読出及び書込コマンド以外のコマンドであって、前記担当する論理ボリューム全体の処理に関連するコマンドを処理する計算機システム。
  2. 前記ストレージサブシステムは、前記計算機からのコマンドのタイプを解析し、前記サブボリュームオーナプロセッサユニット又は前記ボリュームオーナプロセッサユニットに前記コマンドを送信するプロセッサユニットを更に備える請求項1記載の計算機システム。
  3. 前記読出及び書込コマンド以外のコマンドは、前記担当する論理ボリュームの予約又は解放コマンドを含む請求項記載の計算機システム。
  4. プロセッサユニットが、受信した論理ボリューム作成の要求に応じて、作成する論理ボリューム内のサブボリュームの数と、作成する論理ボリュームのボリュームオーナプロセッサユニットと、作成する論理ボリューム内で定義される各サブボリュームのサブボリュームオーナプロセッサユニットとを判定する請求項1記載の計算機システム。
  5. 前記論理ボリューム作成の要求を処理するプロセッサユニットは、前記複数のプロセッサユニットの数によって前記論理ボリュームを分割することによって、前記作成する論理ボリューム内のサブボリュームを定義する請求項記載の計算機システム。
  6. 前記論理ボリューム作成の要求を処理するプロセッサユニットは、所定のサブボリュームサイズに基づいて前記論理ボリュームを分割することによって、前記作成する論理ボリューム内のサブボリュームを定義する請求項記載の計算機システム。
  7. 前記プロセッサユニットは、各プロセッサユニットの稼働率の情報を取得し、前記稼働率の情報に基づいて、前記論理ボリュームのサブボリュームの少なくとも1つのオーナシップを変更する請求項1記載の計算機システム。
  8. 前記ストレージサブシステムは、少なくとも1つのフロントエンドユニットを含み、前記コマンドのタイプを解析するプロセッサユニットは、前記フロントエンドユニットのローカルルータとして提供される請求項2記載の計算機システム。
  9. 前記論理ボリュームの少なくとも1つは、第1の論理ボリューム及び第2の論理ボリュームを含み、
    前記第1の論理ボリュームは、コピーペアとして前記第2の論理ボリュームとペアにされ、
    前記ボリュームオーナプロセッサユニットは、前記第1の論理ボリュームと前記第2の論理ボリュームとの間で共通であり、
    前記サブボリュームオーナプロセッサユニットは、前記第1及び第2の論理ボリューム内の対応するサブボリュームのそれぞれの間で共通である請求項1記載の計算機システム。
  10. 前記第2の論理ボリュームは、前記第1の論理ボリュームに保存されているデータの複製データを保存する論理ボリューム又はストレージ領域が第1の論理ボリューム内の対応するストレージ領域又はプールボリューム内のストレージ領域にマッピングされた仮想ボリュームである請求項記載の計算機システム。
  11. 前記計算機からのコマンドは、前記コマンドの種類に基づいて、前記第1及び第2の論理ボリュームのボリュームオーナプロセッサユニット又は前記第1及び第2の論理ボリューム内の前記各サブボリュームのサブボリュームオーナプロセッサユニットの1つに送信される請求項記載の計算機システム。
  12. 前記第1及び第2の論理ボリュームのボリュームオーナプロセッサユニットに送信されるコマンドは、前記第1及び第2の論理ボリュームのペアのための分離又は再同期コマンドを含む請求項1記載の計算機システム。
  13. 前記各プロセッサユニットは、複数のマイクロプロセッサを含み、
    前記論理ボリュームのボリュームオーナプロセッサユニット及びサブボリュームオーナプロセッサユニットは、前記プロセッサユニットに代えて、前記複数のマイクロプロセッサに割り当てられる請求項1記載の計算機システム。
  14. 前記各プロセッサユニットは、更に、少なくとも1つコアプロセッサによってアクセスされるローカルメモリを含む請求項1記載の計算機システム。
  15. 計算機に接続された計算機システムであって、少なくとも1つ論理ボリュームを前記計算機に提供する複数のストレージデバイスと、それぞれが前記計算機によって発行されたコマンドを処理する複数のプロセッサユニットとを含むストレージサブシステムを備える計算機システムのためのボリューム管理方法であって、
    前記プロセッサユニットの1つによって、前記論理ボリュームを複数のサブボリュームに分割するステップと、
    前記プロセッサユニットの1つによって、前記論理ボリュームのためのコマンドの処理を担当する前記論理ボリュームのボリュームオーナプロセッサユニットとして複数のプロセッサユニットの1つを決定するステップと、
    前記プロセッサユニットの1つによって、前記複数のサブボリュームの少なくとも1つのためのサブボリュームオーナプロセッサユニットとして、前記複数のプロセッサユニットの他の1つを決定するステップと、を有し、
    前記サブボリュームオーナプロセッサユニットのそれぞれは、前記担当するサブボリュームについての読出又は書込コマンドを処理し、前記ボリュームオーナプロセッサユニットは、担当する論理ボリュームについての読出及び書込コマンド以外のコマンドであって、前記担当する論理ボリューム全体の処理に関連するコマンドを処理するボリューム管理方法。
  16. 前記複数のプロセッサユニットの1つによって、前記計算機からのコマンドのタイプを解析し、前記サブボリュームオーナプロセッサユニット又は前記ボリュームオーナプロセッサユニットに前記コマンドを送信するステップを更に有する請求項1記載のボリューム管理方法。
  17. 前記複数のプロセッサユニットの1つによって、各プロセッサユニットの稼働率の情報を取得するステップと、
    前記複数のプロセッサユニットの1つによって、前記稼働率の情報に基づいて、前記論理ボリュームのサブボリュームの少なくとも1つのオーナシップを変更するステップと、
    を有する請求項1記載のボリューム管理方法。
  18. 前記論理ボリュームの少なくとも1つは、第1の論理ボリューム及び第2の論理ボリュームを含み、
    前記第1の論理ボリュームは、コピーペアとして前記第2の論理ボリュームとペアにされ、
    前記ボリュームオーナプロセッサユニットは、前記第1の論理ボリュームと前記第2の論理ボリュームとの間で共通であり、
    前記サブボリュームオーナプロセッサユニットは、前記第1及び第2の論理ボリューム内の対応するサブボリュームのそれぞれの間で共通である請求項1記載のボリューム管理方法。
JP2015513917A 2012-10-04 2012-10-04 計算機システム及び計算機システムのボリューム管理方法 Expired - Fee Related JP6025973B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/006402 WO2014054074A1 (en) 2012-10-04 2012-10-04 Computer system and volume management method for the computer system

Publications (2)

Publication Number Publication Date
JP2015529862A JP2015529862A (ja) 2015-10-08
JP6025973B2 true JP6025973B2 (ja) 2016-11-16

Family

ID=47089102

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015513917A Expired - Fee Related JP6025973B2 (ja) 2012-10-04 2012-10-04 計算機システム及び計算機システムのボリューム管理方法

Country Status (3)

Country Link
US (1) US20140101394A1 (ja)
JP (1) JP6025973B2 (ja)
WO (1) WO2014054074A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4990066B2 (ja) * 2007-08-21 2012-08-01 株式会社日立製作所 論理ボリュームのペアを利用したデータ保存の方式を変更する機能を備えたストレージシステム
US10359937B2 (en) * 2013-12-20 2019-07-23 Sandisk Technologies Llc System and method of implementing a table storage support scheme
US10303380B2 (en) * 2014-06-10 2019-05-28 International Business Machines Corporation Extent-level reserve and release for a direct access storage device (DASD) volumes
US10762021B2 (en) * 2016-07-11 2020-09-01 Hitachi, Ltd. Information processing system, and control method of information processing system
JP6544386B2 (ja) * 2017-05-31 2019-07-17 富士通株式会社 ストレージ制御装置、ストレージ制御プログラムおよびストレージシステム
CN112241320B (zh) 2019-07-17 2023-11-10 华为技术有限公司 资源分配方法、存储设备和存储系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173306B1 (en) * 1995-07-21 2001-01-09 Emc Corporation Dynamic load balancing
US5918064A (en) * 1997-02-18 1999-06-29 Motorola Inc. Data processing system having an input/output coprocessor with a separate visibility bus
US6665739B2 (en) * 2000-09-29 2003-12-16 Emc Corporation Method for enabling overlapped input/output requests to a logical device using assigned and parallel access unit control blocks
US7010663B2 (en) * 2002-03-22 2006-03-07 Sun Microsystems, Inc. Method and system for dividing a plurality of existing volumes of storage into a plurality of virtual logical units of storage
US7694097B2 (en) * 2004-11-15 2010-04-06 International Business Machines Corporation System and method for managing an electronic storage volume
JP5106913B2 (ja) * 2007-04-23 2012-12-26 株式会社日立製作所 ストレージシステム、ストレージシステム管理方法、及び計算機システム
JP4958641B2 (ja) * 2007-05-29 2012-06-20 株式会社日立製作所 記憶制御装置及びその制御方法
US8639808B1 (en) * 2008-12-30 2014-01-28 Symantec Corporation Method and apparatus for monitoring storage unit ownership to continuously balance input/output loads across storage processors
US8285943B2 (en) * 2009-06-18 2012-10-09 Hitachi, Ltd. Storage control apparatus and method of controlling storage control apparatus
US8627015B2 (en) * 2009-07-31 2014-01-07 Emc Corporation Data processing system using cache-aware multipath distribution of storage commands among caching storage controllers
WO2011052005A1 (en) * 2009-10-27 2011-05-05 Hitachi, Ltd. Storage controller and storage control method for dynamically assigning partial areas of pool area as data storage areas
US8412892B2 (en) * 2010-04-21 2013-04-02 Hitachi, Ltd. Storage system and ownership control method for storage system

Also Published As

Publication number Publication date
JP2015529862A (ja) 2015-10-08
US20140101394A1 (en) 2014-04-10
WO2014054074A1 (en) 2014-04-10

Similar Documents

Publication Publication Date Title
JP6025973B2 (ja) 計算機システム及び計算機システムのボリューム管理方法
JP4932390B2 (ja) 仮想化システム及び領域割当て制御方法
US9098466B2 (en) Switching between mirrored volumes
US8650381B2 (en) Storage system using real data storage area dynamic allocation method
JP5512833B2 (ja) ストレージの仮想化機能と容量の仮想化機能との両方を有する複数のストレージ装置を含んだストレージシステム
JP5666710B2 (ja) ストレージ装置及びボリューム管理方法
JP5073259B2 (ja) 仮想化システム及び領域割当て制御方法
EP2211263A2 (en) Storage subsystem and storage system architecture performing storage virtualization and method thereof
CN113485636B (zh) 一种数据访问方法、装置和系统
JP5391277B2 (ja) ストレージシステム及びストレージシステムの処理効率向上方法
US9513823B2 (en) Data migration
JP6731553B2 (ja) 分散ストレージシステム及び分散ストレージ制御方法
JP7012010B2 (ja) 情報処理システム、及び、情報処理システムの制御方法
JP2009122873A (ja) ストレージシステム間でのリモートコピーを管理する装置
US9507527B2 (en) Efficient cache management of multi-target peer-to-peer remote copy (PPRC) modified sectors bitmap
JP2020154587A (ja) 計算機システム及びデータ管理方法
WO2017109822A1 (ja) 重複排除機能を有するストレージシステム
JP5393893B2 (ja) 複数のマイクロプロセッサを有するストレージシステム、及び、そのストレージシステムにおける処理分担方法
KR101601877B1 (ko) 분산 파일시스템에서 클라이언트가 데이터 저장에 참여하는 장치 및 방법
US20150324139A1 (en) Storage system, storage control method, and computer system
JP6072255B2 (ja) ストレージシステム、ストレージシステムの制御方法及び管理システム
JP7435735B2 (ja) 分散処理システム、分散処理システムの制御方法、及び、分散処理システムの制御装置
US11556260B2 (en) Providing coordination between mapper circuitry and redundant array of independent disks (RAID) circuitry to manage RAID storage space
US9535610B2 (en) Optimizing peer-to-peer remote copy (PPRC) transfers for partial write operations using a modified sectors bitmap
US20210334043A1 (en) Storage system and storage system control method

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160223

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160414

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: 20160913

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161011

R151 Written notification of patent or utility model registration

Ref document number: 6025973

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees