以下、添付図面を参照して、本発明の幾つかの実施例を説明する。なお、実施例の説明で用いる用語の定義は、以下の通りである。その他の用語については、一般的な定義に従うことができる。また、以下の説明において、コンピュータプログラムが行う処理は、実際には、そのコンピュータプログラムを実行するプロセッサによって行われる。
「レバレッジ率」は、物理記憶領域の容量に対する、その物理記憶領域に対応する仮想記憶領域の容量の比率である。本実施例では、複数種類のレバレッジ率がある。例えば、第1種のレバレッジ率は、ストレージレベルプールの容量に対する、そのストレージレベルプールに対応する一以上のサーバレベルプールの総容量の比率である。第2種のレバレッジ率は、ストレージレベルプールの容量に対する、そのストレージレベルプールに対応する一以上のサーバレベル仮想ボリュームの総容量の比率である。以下の説明では、特に、第2種のレバレッジ率のことを、「End−to−End容量レバレッジ率」と言う。
「ボリューム」とは、一以上の物理記憶デバイス(例えば、ハードディスクドライブ或いはフラッシュメモリ)を基に提供される論理記憶領域(論理ボリューム)である。ボリュームは、例えば、RAID(Redundant Array of Independent (or Inexpensive) Disks)グループの記憶空間を基に提供される。RAIDグループは、複数の物理記憶デバイスで構成されており、所定のRAIDレベルに従ってデータが格納される。
「ストレージレベル仮想ボリューム」とは、ストレージコントローラの提供する、仮想的なボリュームである。なお、必ずしも、ストレージレベル仮想ボリュームのエリア(記憶領域)の全てが、物理的な記憶領域に割りあたっているとは限らない。具体的には、例えば、ストレージレベル仮想ボリュームの一部又は全部のエリアは、初期的には、ストレージレベルプールに属する一以上のボリューム内のエリアが割り当てられていない。言い換えれば、初期的には、例えば、ストレージレベル仮想ボリュームの一部のエリアには、ストレージレベルプールの一部のエリアが割り当てられていても良い。ここで、「初期」とは、例えば、ストレージレベル仮想ボリュームが定義された直後、或いは、ストレージレベル仮想ボリュームが定義されて物理サーバからアクセス可能になった直後である。ストレージシステムは、ストレージレベル仮想ボリュームの容量を表すストレージレベル仮想ボリューム情報に基づいて、物理サーバにストレージレベル仮想ボリュームの容量を送信する。なお、ストレージシステム内部で管理される、ストレージレベル仮想ボリュームの容量と、SCSIプロトコル等で物理サーバに送信される、ストレージレベル仮想ボリュームの容量との間では、データ構造などの表現形式が異なっても良いし、端数切捨てが行われる等により異なったりしてもよい。勿論、ストレージシステム内部で管理される、ストレージレベル仮想ボリュームの容量と、物理サーバに送信される、ストレージレベル仮想ボリュームの容量とが同じであっても良い。
「サーバ仮想化プログラム」とは、物理サーバの有する物理的なリソースを仮想化することにより、仮想サーバシステムを構築するプログラムである。サーバ仮想化プログラムは、例えば、ハイパバイザである。また、物理的なリソースは、例えば、プロセッサ(例えばマイクロプロセッサ)、記憶資源(例えばメモリ)、及び通信インターフェース装置(例えばHBA(Host Bus Adapter))である。
「仮想マシン」とは、サーバ仮想化プログラムにより提供される仮想的な計算機である。サーバ仮想化プログラムにより、一つの物理サーバ上で擬似的に複数の計算機が稼働しているようにシステムを構築できる。この擬似的な計算機の一つ一つが、仮想マシンである。仮想マシンでは、例えば、仮想的に、OS(Operating System)などのコンピュータプログラムが実行される。
「サーバレベルプール」とは、サーバ仮想化プログラムがストレージシステムから割り当てられた一つ以上のストレージレベル仮想ボリュームから構築される記憶領域である。サーバレベルプールは、仮想マシンから、サーバレベル仮想ボリュームを経由して使用される。具体的には、仮想マシンからサーバレベル仮想ボリュームに対してデータが書き込まれる場合、そのデータの書込み先エリア(サーバレベル仮想ボリュームの一部のエリア)に、サーバレベルプールの一部のエリアが割り当てられる。そして、割り当てられた一部のエリアに対応する、ストレージレベル仮想ボリューム内のエリアを指定したライト要求が、物理サーバ(例えばその物理サーバで実行されるサーバ仮想化プログラム)から、そのストレージレベル仮想ボリュームを提供するストレージシステムに送信される。ストレージシステムのストレージコントローラは、そのライト要求に応答して、そのライト要求で指定されているエリア(ストレージレベル仮想ボリューム内のエリア)に、ストレージレベルプール内の一部のエリアを割り当て、割り当てられたエリアに、データを書き込む。データは、具体的には、その割り当てられたエリア(ストレージレベルプール内のエリア)の基になっている物理記憶領域(物理記憶デバイス内の領域)に書き込まれる。
「サーバレベル仮想ボリューム」とは、サーバ仮想化プログラムによって構築される、仮想的なボリュームである。必ずしも、サーバレベル仮想ボリュームの記憶領域の全てが物理的な記憶領域に割りあたっているとは限らない。サーバレベル仮想ボリュームの記憶領域は、仮想マシンによりアクセスされる。
「ストレージレベルプール」とは、一以上のボリュームにより構築されるプールである。ストレージレベルプールの一部のエリアが、ストレージレベル仮想ボリュームにおける、物理サーバからのライト先エリアに割り当てられる。ストレージレベルプールは、一以上のボリュームが属する複数のプールの集合(仮想的なプール)であっても良い。
図36は、記憶領域の階層関係の一例を示す。なお、この図では、仮想マシンが「VM」と表されており、ボリュームが「VOL」と表されており、ストレージレベルプールが、下位レベルのプールの略として「LLP」と表されており、ストレージレベル仮想ボリュームが、下位レベルの仮想ボリュームの略として、「LL−VVOL」と表されており、サーバレベルプールが、上位レベルのプールの略として「HLP」と略されており、サーバレベル仮想ボリュームが、上位レベルの仮想ボリュームの略として「HL−VVOL」と表されている。なお、このような表現方法は、他の図でも適宜採られている。
この例によれば、複数のストレージレベルプール(例えばストレージレベルプール1,2)があり、各ストレージレベルプールが基点となって、木構造のような記憶領域トポロジーが構成されている。記憶領域トポロジーの構成要素は、下位から順番に言えば、ストレージレベルプール、ストレージレベル仮想ボリューム、サーバレベルプール及びサーバレベル仮想ボリュームである。この例によれば、ストレージレベルプール1に、下記の記憶領域(A)〜(D):
(A)ストレージレベル仮想ボリューム1及び2;
(B)ストレージレベル仮想ボリューム1及び2にそれぞれ対応するサーバレベルプール1及び2;
(C)サーバレベルプール1に対応するサーバレベル仮想ボリューム1(サーバレベルプール1からエリアの一部が割り当てられるサーバレベル仮想ボリューム1);及び、
(D)サーバレベルプール2に対応するサーバレベル仮想ボリューム2及び3、
が対応していることになる。すなわち、この例によれば、ストレージレベルプール1には、そのプール1を基点とする記憶領域トポロジーの構成要素であるサーバレベル仮想ボリューム1〜3が対応していることになる。
下記の実施例では、記憶領域トポロジー毎に、すなわち、ストレージレベルプール毎に、End−to−End容量レバレッジ率を算出することができる。なぜなら、ストレージレベルプール毎に、ストレージレベルプールを基点とした記憶領域トポロジーを特定すること、換言すれば、対応するサーバレベル仮想ボリュームを特定することができるからである。
図に示すように、サーバレベル仮想ボリュームにアクセスする主体は、仮想マシンであってもなくても良い。例えば、物理サーバ1に示すように、アプリケーションプログラム(AP)或いはOSがサーバレベル仮想ボリュームにアクセスしても良い。この場合、例えば、アプリケーションプログラム或いはOSが、サーバレベル仮想ボリュームのライト先エリアに、サーバレベルプール内の一部エリアを割り当て、その一部エリアに対応するエリア(ストレージレベル仮想ボリューム内のエリア)を指定したライト要求をストレージシステムに発行して良い。
また、図に示すように、サーバレベルプールが複数の物理サーバ、例えば物理サーバ3及び4に共有されても良い。このケースでは、例えば、破線で示すように、物理サーバ3内の仮想マシン3が物理サーバ4にマイグレーションされても、ストレージレベルプール2についてのEnd−to−End容量レバレッジ率は変わらない。なぜなら、仮想マシン3のマイグレーションにより、仮想マシン3にマウントされていたサーバレベル仮想ボリューム4も物理サーバ4にマイグレーションされることになるが、そのサーバレベル仮想ボリューム4の容量に変更が生じるわけではないからである。言い換えれば、ストレージレベルプール2に対応するサーバレベル仮想ボリューム4及び5の総容量を変更する構成変更(或いは、ストレージレベルプール2の容量を変更する構成変更)が行われた場合には、ストレージレベルプール2についてのEnd−to−End容量レバレッジ率が変わることになる。
サーバレベル仮想ボリュームは、複数の所定サイズのエリア(以下、HL仮想ページ)で構成されて良い。サーバレベルプールは、複数の所定サイズのエリア(以下、HL実ページ)で構成されて良い。ストレージレベル仮想ボリュームは、複数の所定サイズのエリア(以下、LL仮想ページ)で構成されて良い。ストレージレベルプールは、複数の所定サイズのエリア(以下、LL実ページ)で構成されて良い。この構成において、一以上のHL実ページが一以上のLL仮想ページに対応している。例えば、HL実ページとLL仮想ページが1対1で対応して良い。ページ同士の対応関係は、テーブル等で管理されても良いし、計算によって算出されても良い。
サーバレベル仮想ボリューム内の或るHL仮想ページを表すライト要求が発行された場合、その或るHL仮想ページにHL実ページが未割当てであれば、そのサーバレベル仮想ボリュームに対応するサーバレベルプールから、フリーのHL実ページが割り当てられる。そして、物理サーバ3000から、割り当てられたHL実ページに対応するLL仮想ページを表すライト要求がストレージシステム2000に送信される。ストレージシステム2000では、そのLL仮想ページにLL実ページが未割当てであれば、そのLL仮想ページに、そのLL仮想ページを有するストレージレベル仮想ボリュームに対応したストレージレベルプールから、フリーのLL実ページが割り当てられる。そして、そのLL実ページに、当該ライト要求に従うデータが書き込まれる。LL実ページが例えば複数のPDEVに基づいていれば、データは、例えば所定のRAIDレベルに従って、複数のPDEVに格納される。
実施例1では、管理サーバが、ストレージシステムの仮想ボリューム情報と物理サーバの仮想ボリューム情報とを収集し、ストレージシステムの仮想ボリューム情報と物理サーバの仮想ボリューム情報とを分析し、その分析結果を基に、End−to−End容量レバレッジ率を管理者(例えばストレージ管理者)に表示する。以下に詳細を説明する。
<1.計算機システムの構成>。
図1は、本発明の実施例1における計算機システムの構成を表す図である。
計算機システムは、ストレージシステム2000、物理サーバ3000及び管理サーバ1000を備える。なお、ストレージシステム2000、物理サーバ3000及び管理サーバ1000の少なくとも一つは、何台備わっていても良い。
ストレージシステム2000及び物理サーバ3000は、通信ネットワーク、例えば、SAN5000もしくはLAN5010を通じ、相互に接続される。管理サーバ1000は、通信ネットワーク、例えば、LAN5010もしくはSAN5000を通じ、ストレージシステム2000及び物理サーバ3000と接続される。
<1−1.ストレージシステムの構成>。
ストレージシステム2000は、複数のPDEV(物理記憶デバイス)2100a、及び複数のストレージコントローラ(CTL)2010を備える。PDEV2100a、及びストレージコントローラ2010は、例えば、内部ネットワーク又はバスによって相互に接続される。ストレージコントローラ2010は、PDEV2100aに基づく記憶領域にデータを格納する。
PDEV2100aは、例えば、ディスク型の記憶メディアのドライブ(例えばハードディスクドライブ)であり、物理サーバ3000からストレージシステム2000が受けたライト要求に従うデータを記憶する。PDEV2100aは、例えばフラッシュメモリドライブであっても良い。PDEV2100aは、一つでも良い。
ストレージコントローラ2010は、ストレージシステム1000の動作を制御する装置である。ストレージコントローラ2010は、内部ネットワークを有する。その内部ネットワークに、例えば、ストレージポート4020a、プロセッサ4010a(例えばCPU)及びメモリ4050aが接続されている。ストレージコントローラ2010同士は、内部ネットワークにて相互に接続される。また、ストレージコントローラ2010と各PDEV2100aは、複数のバックエンドネットワークにて相互接続される。ストレージコントローラ2010は一つでも良い。
ストレージポート4020aは、SAN5000等のネットワークを介して、ストレージシステム2000、管理サーバ7000に接続されるインターフェースである。
プロセッサ4010aは、メモリ4050aによって記憶されるプログラムを実行することによって、各種処理を行う。
メモリ4050aは、例えばRAM(Random Access Memory)等で構成され、プロセッサ4010aによって実行されるプログラムや、プロセッサ4010aによって必要とされる情報等を記憶する。具体的には、例えば、ストレージコントローラ2010のメモリ4050aには、ストレージ制御プログラム2500が記憶され、管理サーバ1000から受信した管理操作要求を基に、ストレージコントローラ2010を制御する。管理操作要求は、ストレージシステム2000の操作のための要求であり、例えば、ボリューム構築要求や、ストレージレベルプール構築要求等がある。なお、メモリ4050aは、PDEV2100aに入出力されるデータが一時的に格納されるキャッシュメモリとして用いられてもよい。
なお、物理サーバ3000及びストレージシステム2000の各々における内部ネットワークは、好ましくは、ストレージポート4020aの有する転送帯域より広帯域であり、また、バスやスイッチ型のネットワークによって全てまた一部が代替されてもよい。また、図1では、ストレージポート4020aは、ストレージコントローラ2010に一つ存在することになっているが、実際には、複数のストレージポート4020aがストレージコントローラ2010に存在してもよい。なお、ストレージコントローラ2010は、複数の部品にて構成されてもよい。同様に、メモリ4050aも、複数の部品にて構成されてもよい。
ストレージシステム2000は、例えば、後述するように、ストレージレベルプールに属する一以上のボリュームを構成する。ストレージレベルプールは、ストレージシステム2000が有しても良いし、ストレージシステム2000とは別のシステム(例えば、ストレージシステム2000と物理サーバ3000との間に介在するシステム(例えばスイッチ装置)が有しても良い。
ストレージシステムは、一つのストレージ装置であっても良いし、複数のストレージ装置の集合であっても良い。例えば、或るストレージ装置が管理するVOLは、別のストレージ装置が有するPDEVに基づくVOLであっても良い。
ストレージシステムが有する記憶デバイスのエリアに、一以上のボリュームの全てのエリアが割り当てられていても良いし、一以上のボリュームの一部のエリアが記憶デバイスのエリアに割り当てられていなくても良い。
<1−2.物理サーバの構成>。
物理サーバ3000は、サーバ計算機の一例であり、プロセッサ4010b、メモリ4050b及びHBA4020bを有する。プロセッサ4010b、メモリ4050b、及びHBA4020bは内部ネットワークによって相互に接続される。
プロセッサ4010bは、メモリ4050bによって記憶されるプログラムを実行することによって、各種処理を行う。例えば、プロセッサ4010bは、ストレージシステム2000にI/O要求(ライト要求又はリード要求)を送信することによって、そのストレージシステム2000によって提供される一つ以上のストレージレベル仮想ボリューム2230に対してデータの入出力(ライト又はリード)を行うことができる。
メモリ4050bは、プロセッサ4010bによって実行されるプログラムやプロセッサ4010bによって必要とされる情報等を記憶する。メモリ4010bは、半導体メモリ又は記憶デバイス、あるいはこれらを組み合わせたもので良い。メモリ4050bは、サーバ仮想化プログラム3200を記憶する。
HBA4020bは、SAN5000やLAN5010等のネットワークを介してストレージシステム2000に接続されるインターフェースである。具体的には、例えば、HBA4020bは、プロセッサ4010bからストレージシステム2000へのI/O要求を出力する。
サーバ仮想化プログラム3200は、物理サーバ3000の有する物理リソースから仮想サーバ環境(仮想マシン)を構築する。
<1−3.管理サーバの構成>。
管理サーバ1000は、プロセッサ4010c、メモリ4050c、管理プログラム1200、及びNIC(Network Interface Card)4040cを備える計算機である。プロセッサ4010c、メモリ4050c、PDEV2100c及びNIC4040cは、内部ネットワークにより相互に接続される。
プロセッサ4010cは、メモリ4050cによって記憶されるプログラムを実行することによって、各種処理を行う。例えば、プロセッサ4010cは、ストレージシステム2000に管理要求を送信することによって、そのストレージシステム2000によって実行されるストレージレベル仮想ボリューム2230の物理サーバ3000への割り当て等を制御する。なお、管理要求は、遠隔転送要求、またはコピー制御要求等を含んでよい。
メモリ4050cは、プロセッサ4010cによって実行されるプログラムやプロセッサ4010cによって必要とされる情報等を記憶する。例えば、メモリ4050cには、管理プログラム1200が記憶される。なお、メモリ4050cは、半導体メモリ又は記憶デバイス、あるいはこれらを組み合わせたもので良い。
NIC4040cは、LAN5010等のネットワークを介して、ストレージシステム2000に接続されるインターフェースである。
なお、管理サーバ1000は、入出力装置4060を有してよい。管理サーバ1000内の入出力装置4060も、内部ネットワークに接続される。
入出力装置4060の例としては、ディスプレイとキーボードとポインタデバイスが考えられるが、これら以外の装置であっても良い。また、入出力装置4060の代替として、シリアルインターフェースやイーサネットインターフェースが入出力装置4060とされてよい。また、該当インターフェースに、ディスプレイ又はキーボード又はポインタデバイスを有する表示用計算機が接続されて良い。表示用情報の表示用計算機での送信や、入力用情報を表示用計算機から受信することが行われても良い。これらにより、表示用計算機での表示が行われても良いし、入力を受け付けることで、入出力装置4060での入力及が行われても良い。
管理プログラム1200は、ストレージシステム2000を管理する。具体的には、例えば、管理プログラム1200は、ボリューム構成の管理、ストレージレベルプール構成の管理、ストレージレベル仮想ボリューム構成の管理、各種ボリューム割り当ての指示等を行う。
なお、管理サーバ1000は、ストレージシステム2000を管理する装置と、物理サーバ3000を管理する装置とに分かれていても良い。具体的には、例えば、管理サーバ1000は、管理システムの一例である。管理システムは、一以上の計算機、例えば、管理計算機、又は、管理計算機と表示用計算機との組み合わせである。具体的には、例えば、管理計算機が表示用情報を表示する場合は、管理計算機が管理システムである。また、処理の高速化や高信頼化のために、複数の計算機で管理計算機と同等の機能が実現されてもよく、この場合は、当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機を含んで良い)が、管理システムである。
<2.ストレージの詳細>。
図28は、ストレージコントローラ210のメモリ4050aが記憶する情報及びプログラムの詳細を示す図である。
メモリ4050aには、例えば、ストレージレベルプール情報11000、ストレージレベル仮想ボリューム情報12000、ボリューム情報13000、ストレージ内マッピング情報14000、ストレージ制御プログラム2500が記憶される。
ストレージレベルプール情報11000は、ストレージレベルプールに関する情報である。
ストレージレベル仮想ボリューム情報12000は、ストレージレベル仮想ボリュームに関する情報である。
ボリューム情報13000は、ボリュームに関する情報である。
ストレージ内マッピング情報14000は、ストレージシステム2000が管理する各種記憶領域(ボリューム、ストレージレベルプール、ストレージレベル仮想ボリューム)のマッピングを示す情報である。
ストレージ制御プログラム2500は、ストレージシステム2000の制御に関する処理が定義されたプログラムである。ストレージ制御プログラム2500は、例えば、ストレージ仮想化モジュール2501、ストレージ構成管理モジュール2502及びコマンド制御モジュール2503を有する。なお、ストレージ制御プログラム2500の有する各モジュールは、必ずしも一つのプログラムのモジュールである必要は無く、それぞれが別々のプログラムコードであってもよい。
<2−1.ストレージの有する情報の説明>。
<2−1−1. ストレージレベルプール情報の説明>。
図30は、ストレージレベルプール情報11000を示すブロック図である。
ストレージレベルプール情報11000は、例えば、ストレージレベルプール毎に、ストレージレベルプールに関する情報の他に、ストレージレベルプールに属するボリュームに関する情報と、ストレージレベルプールからエリアが割り当てられるストレージレベル仮想ボリュームに関する情報とを含む。具体的には、例えば、ストレージレベルプール情報11000は、テーブルであり、ストレージレベルプール毎に、ストレージレベルプール識別子11001、ストレージベルプール容量11002、ストレージレベルプール空き容量11003、ボリューム識別子11004、ストレージレベル仮想ボリューム識別子11005、ストレージレベル仮想ボリューム総容量11006、を属性値とするレコードを有する。
ストレージレベルプール識別子11001は、ストレージ仮想化モジュール2501によってストレージレベルプール2220に割り当てられた識別子である。
ストレージレベルプール容量11002は、ストレージレベルプールの容量である。
ストレージレベルプール割当済容量11003は、ストレージレベルプールの容量のうち、ストレージ制御プログラム2500により、ストレージレベル仮想ボリューム2230に割り当てられたエリアの総容量である。
ボリューム識別子11004は、ストレージレベルプールに属するボリュームの識別子である。ストレージレベルプールに属するボリュームとは、ストレージ仮想化モジュール2501により、ストレージレベルプールに属するように、設定が行われたボリュームを指す。
ストレージレベル仮想ボリューム総容量11005は、ストレージレベルプールに対応する全てのストレージレベル仮想ボリューム0の容量を合算した値である。
なお、ストレージレベルプール情報11000は、ストレージレベルプールに関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のストレージレベルプールに関する属性値を有しても良い。また、ストレージレベルプール情報11000は、ストレージレベルプール識別子を除いては上記属性値の一部を格納しなくてもよい。
また、図30から分かるように、ストレージレベルプール容量11002は、必ずしも、ストレージレベル仮想ボリューム総容量11005と同じにはならない。なぜなら、ストレージレベルプールは、そのストレージレベルプールに属する一以上のボリュームの一部のエリアで構成されることもあるからである。
<2−1−2. ストレージレベル仮想ボリューム情報>。
図31は、ストレージレベル仮想ボリューム情報12000を示すブロック図である。
ストレージレベル仮想ボリューム情報12000は、ストレージレベル仮想ボリューム毎に、ストレージレベル仮想ボリュームに関する情報の他に、ストレージレベル仮想ボリュームへのエリアの割当元となるストレージレベルプールに関する情報を含む。具体的には、例えば、ストレージレベル仮想ボリューム情報12000は、テーブルであり、ストレージレベル仮想ボリューム毎に、ストレージレベル仮想ボリューム識別子12001、ストレージレベル仮想ボリューム容量12002、ストレージレベル仮想ボリューム割当済容量12003、ストレージレベルプール識別子12004、ストレージレベルプール容量12005、ポート番号・LUN(Logical Unit Number)12006を属性値とするレコードを含む。
ストレージレベル仮想ボリューム識別子12001は、ストレージ仮想化モジュール2501によってストレージレベル仮想ボリュームに割り当てられた識別子である。
ストレージレベル仮想ボリューム容量12002は、ストレージ仮想化モジュール2501により設定された、ストレージレベル仮想ボリュームの容量である。
ストレージレベル仮想ボリューム割当済容量12003は、ストレージレベル仮想ボリューム容量1502のうち、ストレージ制御プログラム2500によってストレージレベルプールからストレージレベル仮想ボリュームに割り当てられたエリアの総容量である。
ストレージレベルプール識別子12004は、ストレージレベル仮想ボリュームへのエリアの割当元となるストレージレベルプール2220の識別子である。
ストレージレベルプール容量12005は、ストレージレベルプールの容量である。
ポート番号・LUN12006は、ストレージレベル仮想ボリュームに対応したポート番号及びLUNである。
なお、ストレージレベル仮想ボリューム情報12000は、ストレージレベル仮想ボリュームに関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のストレージレベル仮想ボリュームに関する属性値を有しても良い。また、ストレージレベル仮想ボリューム情報12000は、ストレージレベル仮想ボリューム識別子12001を除いては上記属性値の一部を格納しなくてもよい。
<2−1−3.ボリューム情報>。
図32は、ボリューム情報13000を示すブロック図である。
ボリューム情報13000は、ボリューム毎に、ボリュームに関する情報の他に、ボリュームが属するストレージレベルプールに属するボ情報を含む。具体的には、例えば、ボリューム情報13000は、例えば、テーブルであり、ボリューム毎に、ボリューム識別子13001、ボリューム容量13002、PDEV識別子13003、ストレージレベルプール識別子13004、を属性値とするレコードを含む。
ボリューム識別子13001は、ストレージ仮想化モジュール2501によってボリュームに割り当てられた識別子である。
ボリューム容量13002は、ボリュームの容量である。ボリュームは、例えば、ストレージ仮想化モジュール2501によって一以上のPDEV2100aの記憶領域をグループ化することにより構築される。ボリュームの記憶領域は、ストレージコントローラ4050の行う制御により、一以上のPDEV2100aの記憶領域に分散してマッピングされる。
PDEV識別子13003は、ストレージ仮想化モジュール2501によってボリュームに基づくPDEV2100aに割り当てられた識別子である。つまり、ボリュームの基になっているPDEV2100aの識別子である。
ストレージレベルプール識別子13004は、ボリュームが属するストレージレベルプール0の識別子である。
なお、ボリューム情報13000は、ボリュームに関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のボリュームに関する属性値を有しても良い。また、ボリューム情報13000は、ボリューム識別子13001を除いては上記属性値の一部を格納しなくてもよい。
<2−1−4.ストレージ内マッピング情報>。
図33は、ストレージ内マッピング情報14000を示すブロック図である。
ストレージ内マッピング情報14000は、例えば、テーブルであり、ストレージレベルプール毎に、ストレージレベルプール識別子14001、ストレージレベル仮想ボリューム識別子14002、ボリューム割当済容量14003、PDEV識別子14004、を属性値とするレコードを含む。
ストレージレベルプール識別子14001は、ストレージレベルプールの識別子である。
ストレージレベル仮想ボリューム識別子14002は、ストレージレベルプールからエリアの一部が割り当てられるストレージレベル仮想ボリュームの識別子である。
ボリューム識別子は14003、ストレージレベルプールに属するボリュームの識別子である。
PDEV識別子14004は、ストレージレベルプールに属するボリュームの基になっているPDEV2100aの識別子である。
なお、ストレージ内マッピング情報14000は、ストレージシステム2000の有するデバイスのマッピングに関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のマッピング情報の属性値を有しても良い。また、ストレージ内マッピング情報14000は、ストレージレベルプール識別子14001を除いては上記属性値の一部を格納しなくてもよい。
<2−2.ストレージが有するプログラムの説明>。
図3は、ストレージ制御プログラム2500の構成を示す図である。
ストレージ制御プログラム2500は、図28にも示したように、ストレージ仮想化モジュール2501、ストレージ構成管理モジュール2502及びコマンド制御モジュール2503を有する。ストレージ制御プログラム2500は、ストレージシステム2000を制御するための処理が書かれており、ストレージコントローラ2010のメモリに記憶され、実行される。
ストレージ構成管理モジュール2502は、ストレージシステム2000の有する各種記憶領域の構成を管理する。記憶領域の構成の管理とは、具体的には、例えば、ストレージレベルプールを構成しているボリュームの管理、ボリュームを構成しているPDEV2100aの管理等である。
コマンド制御モジュール2503は、物理サーバ3000又は管理サーバ1000からのコマンド(例えばI/O要求)を解釈し、そのコマンドに規定された処理を実行する。
ストレージ仮想化モジュール2501は、PDEV2100aを基にボリュームを構築する。ストレージ仮想化モジュール2501は、ストレージレベル仮想ボリュームも構築する。ストレージ仮想化モジュール2501は、ストレージレベルプールに、一以上のボリュームと一以上のストレージレベル仮想ボリュームをマッピングする。
<3.物理サーバの詳細>。
図29は、物理サーバ3000のメモリ4050bが記憶する情報とプログラムの詳細を示す図である。
メモリ4050bには、サーバレベルプール情報15000、サーバレベル仮想ボリューム情報16000、及びサーバ仮想化プログラム3200が記憶される。
サーバレベルプール情報15000は、サーバレベルプールに関する情報である。
サーバレベル仮想ボリューム情報16000は、サーバレベル仮想ボリュームに関する情報である。
サーバ仮想化プログラム3200は、物理サーバ3000の有するリソースを用い、仮想マシン3201、サーバレベルプール3210、サーバレベル仮想ボリューム3220等を構築する。
<3−1.物理サーバの有する情報の説明>。
<3−1−1.サーバレベルプール情報>。
図34は、サーバレベルプール情報15000を示すブロック図である。
サーバレベルプール情報15000は、例えば、サーバレベルプール毎に、サーバレベルプールに関する情報の他に、サーバレベルプールに属するストレージレベル仮想ボリュームに関する情報と、サーバレベルプールからエリアが割り当てられるサーバレベル仮想ボリュームに関する情報とを含む。具体的には、例えば、サーバレベルプール情報15000は、テーブルであり、サーバレベルプール毎に、サーバレベルプール識別子15001、サーバレベルプール容量15002、サーバレベルプール空容量15003、サーバレベル仮想ボリューム識別子15004、サーバレベル仮想ボリューム総容量15005、構成ストレージポート番号・LUN(Logical Unit Number)15006、を属性値とする以上のレコードを含む。
サーバレベルプール識別子15001は、サーバ仮想化プログラム3200によってサーバレベルプール3210に割り当てられた識別子である。
サーバレベルプール容量15002は、サーバレベルプール3210の容量である。
サーバレベルプール割当済容量15003は、サーバレベルプール容量15002のうち、サーバレベル仮想ボリューム3220に割り当てられたエリアの総容量である。
サーバレベル仮想ボリューム識別子15004は、サーバレベルプールからエリアの一部が割り当てられるサーバレベル仮想ボリュームの識別子である。
サーバレベル仮想ボリューム総容量15005は、サーバレベルプールからエリアが割り当てられる全てのサーバレベル仮想ボリュームの容量の合計である。
構成ストレージポート番号・LUN15006は、サーバレベルプールに属するストレージレベル仮想ボリュームを特定するためのLUNとポート番号(ストレージレベル仮想ボリュームを表すパラメータとしてI/O要求で使用されるLUNとポート番号)である。
なお、サーバレベルプール情報15000は、サーバレベルプールに関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のサーバレベルプール構成の属性値を有しても良い。また、サーバレベルプール情報15000は、サーバレベルプール識別子15001を除いては上記属性値の一部を格納しなくてもよい。
<3−1−2.サーバレベル仮想ボリューム情報>。
図35は、サーバレベル仮想ボリューム情報16000を示すブロック図である。
サーバレベル仮想ボリューム情報16000は、例えば、サーバレベル仮想ボリューム毎に、サーバレベル仮想ボリュームに関する情報の他に、サーバレベル仮想ボリュームへのエリアの割当元となるサーバレベルプールに関する情報と、サーバレベル仮想ボリュームを使用する仮想マシンに関する情報とを含む。具体的には、例えば、サーバレベル仮想ボリューム情報16000は、サーバレベル仮想ボリューム毎に、サーバレベル仮想ボリューム識別子16001、サーバレベル仮想ボリューム容量16002、サーバレベル仮想ボリューム割当済容量16003、サーバレベルプール識別子16004、サーバレベルプール容量16005、対応仮想マシン識別子16006、仮想マシン認識デバイス識別子16007を属性値とするレコードを含む。
サーバレベル仮想ボリューム識別子16001は、サーバ仮想化プログラム3200によってサーバレベル仮想ボリュームに割り当てられた識別子である。
サーバレベル仮想ボリューム容量16002は、サーバレベル仮想ボリュームの容量である。
サーバレベル仮想ボリューム割当済容量16003は、サーバレベル仮想ボリューム容量のうち、サーバレベルプールからエリアが割り当てられているエリア(仮想エリア)の総容量である。
サーバレベルプール識別子16004は、サーバレベル仮想ボリュームへのエリアの割当元となるサーバレベルプールの識別子である。
サーバレベルプール容量16005は、サーバレベル仮想ボリュームへのエリアの割当元となるサーバレベルプールの容量である。
対応仮想マシン識別子16006は、サーバレベル仮想ボリュームを使用する仮想マシンの識別子である。
仮想マシン認識デバイス識別子16007は、仮想マシン3201がサーバレベル仮想ボリュームを認識する際の識別子(サーバレベル仮想ボリュームを表すデバイスの識別子)である。
なお、サーバレベル仮想ボリューム情報16000は、サーバレベル仮想ボリューム3220に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のサーバレベル仮想ボリューム3220に関する属性値を有しても良い。また、サーバレベルプール情報16000は、サーバレベル仮想ボリューム識別子16001を除いては上記属性値の一部を格納しなくてもよい。
<3−2.物理サーバの有するプログラムの説明>。
サーバ仮想化プログラム3200について説明する。
サーバ仮想化プログラム3200は、物理サーバ3000の有するリソースを用い、仮想マシン3201、サーバレベルプール3210、サーバレベル仮想ボリューム3220等を構築する。サーバ仮想化プログラム3200の実行する処理のより詳細な説明は、以降の<5−1.サーバでのThin-Provisioning>で説明する。
<4.管理サーバの詳細>。
図2は、管理サーバ1000のメモリ4050cが記憶する情報とプログラムの詳細を示す図である。
メモリ4050cには、ストレージレベルプール構成情報1400、ストレージレベル仮想ボリューム構成情報1500、ポート−LUN対応情報1600、サーバレベルプール構成情報1700、サーバレベル仮想ボリューム構成情報1800、End−to−End容量レバレッジ率情報1900、初期設定情報1910、及び管理プログラム1200が記憶される。
ストレージレベルプール構成情報1400は、ストレージレベルプールの構成に関する情報である。なお、ストレージレベルプール構成情報1400については、<4−1.ストレージ情報>で詳細を説明する。
ストレージレベル仮想ボリューム構成情報1500は、ストレージレベル仮想ボリュームの構成に関する情報である。なお、ストレージレベル仮想ボリューム構成情報1500については、<4−1.ストレージ情報>で詳細を説明する。
ポート−LUN対応情報1600は、ストレージシステム2000が物理サーバ3000に提供するストレージレベル仮想ボリュームに対応するポート番号とLUNに関する情報である。なお、ポート−LUN対応情報1600については、<4−1−3.管理サーバ設定情報>で詳細を説明する。
サーバレベルプール構成情報1700は、サーバレベルプール3210の構成に関する情報である。なお、サーバレベルプール構成情報1700については、<4−1−2.物理サーバ情報>で詳細を説明する。
サーバレベル仮想ボリューム構成情報1800は、サーバレベル仮想ボリュームの構成に関する情報である。なお、サーバレベル仮想ボリューム構成情報1800については、<4−1−1.サーバ情報>で詳細を説明する。
End−to−End容量レバレッジ率情報1900は、ストレージレベルプールについてのEnd−to−End容量レバレッジ率に関する情報である。なお、End−to−End容量レバレッジ率情報1900については、<4−1−3.管理サーバ管理情報>で詳細を説明する。
初期設定情報1910は、ストレージ管理者の入力する初期設定に関する情報である。なお、初期設定情報1910については、<4−1−3.管理サーバ管理情報>で説明する。
管理プログラム1200は、ストレージシステム2000及び物理サーバ3000を管理するプログラムである。管理プログラム1200は、ストレージ管理モジュール1201、サーバ管理モジュール1202及びレバレッジ管理モジュール1203を有する。
ストレージ管理モジュール1201は、ストレージレベルプール構成情報1400、ストレージレベル仮想ボリューム構成情報1500を用いて、ストレージシステム2000を管理するモジュールである。
サーバ管理モジュール1202は、サーバレベルプール構成情報1700及びサーバレベル仮想ボリューム構成情報1800を用いて、物理サーバ3000を管理するモジュールである。
レバレッジ管理モジュール1203は、ポート−LUN対応情報1600、End−to−End容量レバレッジ率情報及び初期設定情報1910を用いて、End−to−End容量レバレッジ率を管理するモジュールである。
なお、管理プログラム1200の有する各モジュールは、必ずしも一つのプログラムのモジュールである必要は無く、それぞれが別々のプログラムコードであってもよい。
<4−1.管理サーバで管理する情報>。
<4−1−1.ストレージ情報>。
<4−1−1a.ストレージレベルプール構成情報>。
図6は、ストレージレベルプール構成情報1400を示すブロック図である。
ストレージレベルプール構成情報1400は、ストレージレベルプール毎に、ストレージレベルプールに関する情報の他に、そのストレージレベルプールに対応するストレージレベル仮想ボリュームに関する情報を含む。具体的には、例えば、ストレージレベルプール構成情報1400は、テーブルであり、ストレージレベルプール毎に、ストレージレベルプール識別子1401、ストレージレベルプール容量1402、ストレージレベルプール割当済容量1403、対応ストレージ仮想ボリューム識別子1404、対応ストレージレベル仮想ボリューム総容量1405、プール構成ボリューム識別子1406、ストレージ装置識別子1 407を属性値とするレコードを含む。
ストレージレベルプール識別子1401は、ストレージレベルプールの識別子である。
ストレージレベルプール容量1402は、ストレージレベルプールの容量である。
ストレージレベルプール割当済容量1403は、ストレージレベルプール容量のうち、ストレージレベル仮想ボリュームに割り当てられたエリアの総容量である。
対応ストレージレベル仮想ボリューム識別子1404は、ストレージレベルプールに対応するストレージレベル仮想ボリュームの識別子である。
対応ストレージレベル仮想ボリューム総容量1405は、ストレージレベルプールに対応する全てのストレージレベル仮想ボリュームの容量を合算した値である。
プール構成ボリューム識別子1406は、ストレージレベルプールに属するボリュームの識別子である。
ストレージ装置識別子1407は、ストレージレベルプールに属するボリュームを有するストレージ装置の識別子である。
なお、ストレージレベルプール構成情報1400は、ストレージレベルプール2220構成に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のストレージレベルプール2220の構成の属性値を有しても良い。また、ストレージレベルプール構成情報1400は、ストレージレベルプール識別子1401を除いては上記属性値の一部を格納しなくてもよい。
前述した情報要素1401〜1406は、例えば、ストレージシステムを構成するストレージ装置から管理サーバ1000に収集されたストレージレベルプール情報11000(図30参照)における情報要素11001〜11006から得られる。また、情報要素1407は、ストレージレベルプール情報11000がどのストレージ装置から収集されたかを表す情報要素である。
<4−1−1b.ストレージレベル仮想ボリューム構成情報>。
図7は、ストレージレベル仮想ボリューム構成情報1500を示すブロック図である。
ストレージレベル仮想ボリューム構成情報1500は、ストレージレベル仮想ボリューム毎に、ストレージレベル仮想ボリュームに関する情報の他に、そのストレージレベル仮想ボリュームに対応するストレージレベルプールに関する情報を含む。具体的には、例えば、ストレージレベル仮想ボリューム構成情報1500は、テーブルであり、ストレージレベル仮想ボリューム毎に、ストレージレベル仮想ボリューム識別子1501、ストレージレベル仮想ボリューム容量1502、ストレージレベル仮想ボリューム割当済容量1503、対応ストレージレベルプール識別子1504を属性値とするレコードを含む。
ストレージレベル仮想ボリューム識別子1501は、ストレージレベル仮想ボリュームの識別子である。
ストレージレベル仮想ボリューム容量1502は、ストレージレベル仮想ボリュームの容量である。
ストレージレベル仮想ボリューム割当済容量1503は、ストレージレベル仮想ボリューム容量のうち、ストレージレベルプールからストレージレベル仮想ボリュームに割り当てられたエリアの総容量である。
対応ストレージレベルプール識別子1504は、ストレージレベル仮想ボリュームに対応するストレージレベルプールの識別子である。
なお、ストレージレベル仮想ボリューム構成情報1500は、ストレージレベル仮想ボリューム2230に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のストレージレベル仮想ボリューム2230の属性値を有しても良い。また、ストレージレベル仮想ボリューム2230情報は、ストレージレベル仮想ボリューム識別子1501を除いては上記属性値の一部を格納しなくてもよい。
前述した情報要素1501〜1504は、例えば、例えば、ストレージシステムを構成するストレージ装置から管理サーバ1000に収集されたストレージレベルプール情報11000(図31参照)における情報要素12001〜12004から得られる。
<4−1−2.物理サーバ情報>。
<4−1−2a.サーバレベルプール構成情報>。
図9は、サーバレベルプール構成情報1700を示すブロック図である。
サーバレベルプール構成情報1700は、サーバレベルプール毎に、サーバレベルプールに関する情報の他に、そのサーバレベルプールに対応するサーバレベル仮想ボリュームに関する情報を含む。具体的には、例えば、サーバレベルプール構成情報1700は、テーブルであり、サーバレベルプール毎に、サーバレベルプール識別子1701、サーバレベルプール容量1702、サーバレベルプール割当済容量1703、対応サーバレベル仮想ボリューム3220、対応サーバレベル仮想ボリューム総容量1705、ボリューム提供元ストレージ装置、構成ストレージポート番号・LUN1707を属性値とするレコードを含む。
サーバレベルプール識別子1701は、サーバレベルプールの識別子である。
サーバレベルプール容量1702は、サーバレベルプールの容量である。
サーバレベルプール割当済容量1703は、サーバレベルプール容量のうち、サーバレベル仮想ボリュームに割り当てられたエリアの総容量である。
対応サーバレベル仮想ボリューム識別子1704は、サーバレベルプールに対応するサーバレベル仮想ボリュームの識別子である。
対応サーバレベル仮想ボリューム総容量1705は、サーバレベルプールに対応する全てのサーバレベル仮想ボリュームの容量を合算した値である。
ボリューム提供元ストレージ装置識別子1407は、サーバレベルプールに対応したストレージレベル仮想ボリュームを物理サーバ3000に提供しているストレージ装置の識別子である。
構成ストレージボリュームポート番号・LUN1707は、サーバレベルプールに対応したストレージレベル仮想ボリュームに物理サーバ3000がアクセスするためのポート番号と、物理サーバ3000がSCSIによりストレージレベル仮想ボリュームを認識するためのLUNである。
なお、サーバレベルプール構成情報1700は、サーバレベルプール3210に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のサーバレベルプール3210の属性値を有しても良い。また、サーバレベルプール構成情報1700は、サーバレベルプール識別子1701を除いては、上記属性値の一部を格納しなくてもよい。
前述した情報要素1701〜1706は、例えば、物理サーバから管理サーバ1000に収集されたサーバレベルプール情報15000(図34参照)における情報要素15001〜15006から得られる。また、情報要素1507は、サーバレベルプール情報15000がどの物理サーバから収集されたかを表す情報要素である。
<4−1−2b.サーバレベル仮想ボリューム構成情報>。
図10は、サーバレベル仮想ボリューム構成情報1800を示すブロック図である。
サーバレベル仮想ボリューム構成情報1800は、サーバレベル仮想ボリューム毎に、サーバレベル仮想ボリュームに関する情報の他に、そのサーバレベル仮想ボリュームに対応するサーバレベルプールに関する情報と、仮想マシンに関する情報とを含む。具体的には、例えば、サーバレベル仮想ボリューム構成情報1800は、テーブルであり、サーバレベル仮想ボリューム毎に、サーバレベル仮想ボリューム識別子1801、サーバレベル仮想ボリューム容量1802、サーバレベル仮想ボリューム割当済容量1803、サーバレベル仮想ボリューム未割当容量1804、サーバレベル仮想ボリューム使用容量1805、対応サーバレベルプール識別子1806、対応仮想マシン識別子1807、仮想マシン認識デバイス識別子1808を属性値とするレコードを含む。
サーバレベル仮想ボリューム識別子1801は、サーバレベル仮想ボリュームの識別子である。
サーバレベル仮想ボリューム容量1802は、サーバレベル仮想ボリュームの容量である。
サーバレベル仮想ボリューム割当済容量1803は、サーバレベル仮想ボリューム容量のうち、サーバレベルプールからサーバレベル仮想ボリュームに割り当てられたエリアの総容量である。
サーバレベル仮想ボリューム未割当容量1804は、サーバレベル仮想ボリューム容量のうち、サーバレベルプールからエリアが割り当てられていないエリア(仮想エリア)の総容量である。
サーバレベル仮想ボリューム使用容量1805は、サーバレベル仮想ボリューム容量のうち、仮想マシンによりデータ書き込みが行われた容量である。
対応サーバレベルプール識別子1806は、サーバレベル仮想ボリュームに対応するサーバレベルプールの識別子である。
対応仮想マシン識別子1807は、サーバレベル仮想ボリュームの割当先である仮想マシンの識別子である。
仮想マシン認識デバイス識別子1808は、仮想マシンがサーバレベル仮想ボリュームをデバイス(例えばハードディスクドライブ)として認識する際の識別子である。
なお、サーバレベル仮想ボリューム構成情報1800は、サーバレベル仮想ボリューム3220に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のサーバレベル仮想ボリューム3220の属性値を有しても良い。また、サーバレベル仮想ボリューム3220情報は、サーバレベル仮想ボリューム識別子1801を除いては上記属性値の一部を格納しなくてもよい。
前述した情報要素1801〜1804及び1806〜1808は、例えば、物理サーバから管理サーバ1000に収集されたサーバレベル仮想ボリューム情報16000(図35参照)における情報要素16001〜16001から得られる。また、情報要素1805は、仮想マシンによって、サーバレベル仮想ボリュームに書き込まれたデータ量を計算することによって求まる情報要素である。
<4−1−3.管理サーバ管理情報>。
<4−1−3a.ポート−LUN対応情報>。
図8は、ポート−LUN対応情報1600を示すブロック図である。
ポート−LUN対応情報1600は、例えば、テーブルであり、ストレージレベル仮想ボリューム毎に、port#(ポート番号)1602、LUN1603、及び内部ボリュームID1601を属性値とするレコードを含む。
port#1602は、ストレージシステム2000が物理サーバ3000にストレージレベル仮想ボリューム2230を提供している際、物理サーバ3000が提供されたストレージレベル仮想ボリューム2230にアクセスするために使用するポート番号である。
LUN1603は、物理サーバ3000がストレージシステム2000から提供されたストレージレベル仮想ボリューム2230をSCSIで認識するための識別番号である。
内部ボリュームID1601は、ストレージシステム2000が物理サーバ3000に提供するストレージレベル仮想ボリューム2230を識別する際の識別子である。
なお、ポート−LUN対応情報1600は、ポート番号1602、LUN1603、内部ボリュームID1601の対応に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のポート番号1602、LUN1603、内部ボリュームID1601の対応の属性値を有しても良い。また、ポート−LUN対応情報1600は、内部ボリュームID1601を除いては上記属性値の一部を格納しなくてもよい。
前述した情報要素1601〜1603は、例えば、以下のようにして構築することができる。管理サーバが、ストレージ装置から収集されたストレージレベル仮想ボリューム情報12000(図31参照)におけるストレージレベル仮想ボリューム識別子、ポート番号及びLUNを用いて、図8に示した対応情報1600が構築される。
<4−1−3b.End−to−End容量レバレッジ率情報>。
図11は、End−to−End容量レバレッジ率情報1900を示すブロック図である。
End−to−End容量レバレッジ率情報1900は、例えばテーブルであり、ストレージレベルプール毎に、ストレージレベルプール識別子1901とEnd−to−End容量レバレッジ率1902とを含む。
ストレージレベルプール識別子1901は、ストレージレベルプールの識別子である。
End−to−End容量レバレッジ率1902は、ストレージレベルプールに対応したEnd−to−End容量レバレッジ率(100×(ストレージレベルプールに対応した全てのサーバレベル仮想ボリュームの総容量)/(ストレージレベルプールの容量))(%)である。
なお、End−to−End容量レバレッジ率情報1900は、プール単位の容量レバレッジ率に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外のプール単位の容量レバレッジ率の属性値を有しても良い。また、End−to−End容量レバレッジ率情報1900は、ストレージレベルプール識別子1901を除いては上記属性値の一部を格納しなくてもよい。
<4−1−3c.初期設定情報>。
図12は、初期設定情報1910を示すブロック図である。
初期設定情報1910は、例えば、End−to−End容量レバレッジ率閾値1911、情報収集間隔1912を属性値とする一つ以上のレコードを含むテーブルである。
End−to−End容量レバレッジ率閾値1911は、ストレージ管理者が、管理プログラム1200の設定画面にて入力する、ストレージレベルプール2220に対する容量レバレッジ率の許容上限値を表す閾値である。
情報収集間隔1912は、ストレージ管理者が管理プログラム1200の設定画面にて入力する、End−to−End容量レバレッジ率1902を算出するタイミングの間隔である。
なお、初期設定情報1910は、ストレージ管理者の入力する初期設定に関する属性値を有するのであれば、テーブル以外のデータ構造でもよく、上記に記した属性値以外の初期設定の属性値を有しても良い。また、初期設定情報1910は、情報収集間隔1912を除いては上記属性値の一部を格納しなくてもよい。
図13は、End−to−End容量レバレッジ率の表示画面を表す。
レバレッジ率表示画面1403は、管理プログラム1200によって表示される画面である。例えば、ストレージレベルプール「STPOOL−1」のEnd−to−End容量レバレッジ率が500%となっている理由は、下記の通りである。
図6の情報1400から、識別子「STPOOL−1」に対応したストレージレベルプールの容量「10000MB」が特定される。また、識別子「STPOOL−1」に対応した対応ストレージレベル仮想ボリューム識別子「STVVOL−1」及び「STVVOL−2」が特定される。
図8の情報1600から、識別子「STVVOL−1」及び「STVVOL−2」に対応するポート番号及びLUNが特定される。
そのポート番号及びLUNを用いて、図9の情報から、サーバレベルプールの識別子「SVPOOL−1」が特定される。
その識別子「SVPOOL−1」を用いて、図10の情報1800から、サーバレベル仮想ボリューム容量「30000MB」及び「20000MB」、つまり総容量「50000MB」が特定される。
以上の結果、ストレージレベルプール「STPOOL−1」の容量「10000MB」に対して、そのストレージレベルプールに対応したサーバレベル仮想ボリュームの総容量「50000MB」が特定され、その結果、100×50000/10000=500%というEnd−to−End容量レバレッジ率が算出される。
図13の表示形式や表示情報は一例であり、End−to−End容量レバレッジ率に関わる情報であれば、図中に表示されている以外の情報が表示されても良い。また、GUIも別の形式が採用されても良い。
<5.Thin−Provisioning>。
<5−1.ストレージでのThin−Provisioning>。
図4は、ストレージシステム2000で行われるThin−Provisioningを表す図である。
ストレージシステム2000では、ストレージ制御プログラム2500のストレージ仮想化モジュール2501により、ボリューム2210、ストレージレベルプール2220、ストレージレベル仮想ボリューム2230が構築される。
ボリューム2210は、ストレージ仮想化モジュール2501により、一つ以上のPDEV2100aの記憶領域をグループ化することにより構築される。ボリューム2210の記憶領域は、ストレージコントローラ4050の行う制御により、ボリューム2210を構成する一つ以上のPDEV2100aの記憶領域に分散してマッピングされる。
ストレージレベルプール2220は、ストレージ仮想化モジュール2501により構築される。ストレージレベルプール2220の記憶領域は、ストレージコントローラ4050の行う制御により、ストレージレベルプール2220に対応した、一つ以上のボリューム2210の記憶領域に分散してマッピングされる。
ストレージレベル仮想ボリューム2230は、ストレージ仮想化モジュール2501により構築される。ストレージレベル仮想ボリューム2230は、アドレスと仮想記憶領域を持つ。ボリューム2210の記憶領域とは異なり、ストレージレベル仮想ボリューム2230の仮想記憶領域は、PDEV2100aの有する物理記憶領域に対応しない。
ストレージレベル仮想ボリューム2230の仮想記憶領域(例えばLL仮想ページ)に対するライト要求が発行された場合、その仮想記憶領域にプール2220内の一部エリア(例えばLL実ページ)が割り当てられていなければ、ストレージコントローラ4050aの行う制御により、ストレージレベルプール2220の一部エリアが動的にマッピングされる。
ストレージレベル仮想ボリューム2230の仮想記憶領域は、全てがPDEV2100aの持つ記憶領域のような、物理記憶領域に対応していなくて良いため、ストレージシステム2000の有する物理記憶領域(例えばプール2220の容量)よりも大きな値を、ストレージレベル仮想ボリューム2230の仮想記憶領域(容量)として設定することができる。
ストレージシステム2000は、物理サーバ3000に、ストレージレベル仮想ボリューム2230を提供する。PDEV4050aの持つ物理記憶領域は、ストレージレベル仮想ボリューム2230、ストレージレベルプール2220を構成しているボリューム2210を経由し、物理サーバ3000によりアクセスされる。
<5−1−1.ストレージレベルプールへのボリュームの追加>。
図26は、ストレージレベルプール2220へのボリューム2210の追加する処理を表すフローである。
ストレージレベルプール2220の設定は、ストレージ仮想化モジュール2501によって実行される。
(ステップS1101)まず、ストレージ管理者は、管理プログラム1200に、ストレージレベルプール2220に設定するボリューム2210の情報を入力する。ストレージレベルプール2220の識別子、閾値、ボリューム2210の数、及び、ボリューム識別子が設定される。
(ステップS1102)ストレージ管理モジュール1201は、入力された情報を含むストレージレベルプール2220設定の指示コマンドを生成し、NICを介して、その指示コマンドをストレージシステム2000に送信する。
(ステップS1103)ストレージシステム2000において、管理サーバ1000から送信された指示コマンドは、NICを介して、コマンド制御モジュール2503が受信する。
コマンド制御モジュール2503は、受信した指示コマンドの内容を確認する。指示コマンドの内容が無効である場合、モジュール2503は、コマンドを拒否する(例えばエラーを応答する)。
(ステップS1104)コマンド制御モジュール2503は、指示コマンドがストレージレベルプール2220の設定である場合は、ストレージ仮想化モジュール2501に受信した指示コマンドを渡す。ストレージ仮想化モジュール2501は、指示コマンドを受け取って、ストレージレベルプール設定処理を開始する。
(ステップS1105)ストレージ仮想化モジュール2501は、まず、ストレージレベルプール情報11000を調べ、指示コマンドに係るストレージレベルプール識別子11001が有効であるかを確認する。また、ストレージ仮想化モジュール2501は、そのストレージレベルプール識別子11001は未だ未定義であるかを確認する。
(ステップS1106)次に、ストレージ仮想化モジュール2501は、指示コマンドに係るボリューム2210が使用可能であるか否かを確認する。具体的には、例えば、指示コマンドに係るボリューム2210がフォーマット中等である場合は、当該ボリューム2210は使用不可であるため、ストレージ仮想化モジュール2501は、コマンドを拒否する(例えばエラーを応答する)。また、指示コマンドに係るボリューム2210が既に使用中である場合(例えば、ボリューム2210がパス定義済みである場合、コピー機能等によって使用中である場合又はコピー先として予約中に設定されている場合)は、ストレージ仮想化モジュール2501は、当該ボリューム2210は使用不可であるため、コマンドを拒否する。
(ステップS1107)次に、ストレージ仮想化モジュール2501は、ストレージレベルプール情報11000に、ストレージレベルプール容量11002、ボリューム識別子11004、を設定する。このストレージ仮想化モジュール2501の処理によって、ボリューム2210が、ストレージレベルプール2220に追加される。
(ステップS1108)次に、ストレージ制御プログラム2500は、管理サーバ1000に、コマンドが成功した旨の応答を送信する。
管理サーバ1000のストレージ構成管理モジュール2502は、ストレージシステム2000からの応答を受信すると、処理を終了する。
以上の処理によって、ボリューム2210が、ストレージレベルプール2220に追加される。
<5−1−2.ストレージレベル仮想ボリュームからのリード>。
図24は、ストレージレベル仮想ボリュームからデータをリードする処理のフローである。
物理サーバは、ストレージレベル仮想ボリュームのアドレスを指定して、I/O要求を送信する。このI/O要求は、データのリード要求である。
(ステップS901)ストレージシステム2000では、コマンド制御モジュール2503が、物理サーバ3000からのI/O要求を受信する。受信したI/O要求の内容が無効である場合は、その要求が拒否される(例えばエラーが応答される)。受信したI/O要求の内容が有効である場合は、コマンド制御モジュール2503が、そのI/O要求の内容を解析する。解析の結果、コマンド制御モジュール2503は、I/O要求がデータのリード要求であることを知る。
(ステップS902)次に、コマンド制御モジュール2503は、受信した要求に係るリード対象のストレージレベル仮想ボリューム2230のアドレスを取得する。
(ステップS903)次に、コマンド制御モジュール2503は、リード対象のストレージレベル仮想ボリューム2230に対応するストレージレベルプール2220から、リード要求の該当領域のアドレスにマッピングされているボリューム領域のアドレスを取得する。このとき、ストレージレベル仮想ボリューム2230のリード要求の該当領域のアドレスは、複数のボリューム2210のアドレスに分散してマッピングされている場合がある。
(ステップS904)次に、コマンド制御モジュール2503は、ボリューム情報14000を参照し、該当ボリューム2210の領域のアドレスに対応したPDEV2100aを特定し、該当PDEV2100aのアドレスを取得する。
(ステップS905)次に、コマンド制御モジュール2503は、PDEV2100aの該当アドレスから要求に係るデータを読み出し、物理サーバ3000に送信する。
(ステップS906)そして、コマンド制御モジュール2503は、物理サーバ3000にリード要求の完了報告を送信して、処理を終了する。
<5−1−3.ストレージレベル仮想ボリュームへのライト>。
図25は、ストレージレベル仮想ボリューム2230へのデータのライト処理を表すフローの一部であり、図39は、そのフローの残りである。
物理サーバ3000は、ストレージレベル仮想ボリューム2230のアドレスを指定して、I/O要求を送信する。このI/O要求は、データのライト要求である。
(ステップS1001)ストレージシステム2000において、コマンド制御モジュール2503が、物理サーバ3000からのI/O要求を受信する。受信したI/O要求が無効である場合は、その要求が拒否される(例えばエラーが応答される)。そして、コマンド制御モジュール2503が、そのI/O要求の内容を解析する。解析の結果、コマンド制御モジュール2503は、I/O要求がデータのライト要求であることを知る。
(ステップS1002)次に、コマンド制御モジュール2503は、受信したライト要求に係るストレージレベル仮想ボリューム2230のアドレスを取得する。
(ステップS1003)次に、コマンド制御モジュール2503は、ストレージレベル仮想ボリューム情報12000を参照し、ストレージレベル仮想ボリューム2230に対応するストレージレベルプール2220を特定し、その状態を取得する。
(ステップS1004)コマンド制御モジュール2503は、ストレージレベルプール情報11000を参照し、そのストレージレベルプール2220に対応するボリューム2210を特定し、該当ボリューム2210が使用可能であるか否かを判定する。
(ステップS1005)ボリューム2210が使用可能でない場合は、該当ボリューム2210にはアクセス出来ないので、コマンド制御モジュール2503は、I/Oエラーを物理サーバ3000に送信する。
(ステップS1006)ボリューム2210が使用可能であると判断した場合、コマンド制御モジュール2503は、要求送信元の物理サーバ3000に、ライトデータの転送が可能である旨を送信する。物理サーバ3000は、これを受けて、ライトデータをストレージシステム2000に送信する。
(ステップS1007)コマンド制御モジュール2503は、物理サーバ3000が送信したライトデータを受信する。
(ステップS1009)コマンド制御モジュール2503は、書き込み対象のストレージレベル仮想ボリューム2230のアドレスにストレージレベルプール2220の空き領域を割り当てる処理を開始する。
(ステップS1010)ストレージ仮想化モジュール2501は、まず、ストレージレベル仮想ボリューム情報12000を参照し、そのストレージレベル仮想ボリューム2230に対応するストレージレベルプール2220が割り当てられているかを確認する。
(ステップS1011)すでにストレージレベル仮想ボリューム2230に対応するストレージレベルプール2220が割り当てられていると判定した場合は、ストレージ仮想化モジュール2501は、ストレージレベルプール情報11000を参照し、そのストレージレベルプール2220に対応するボリューム2210を特定し、該当ボリューム2210の領域のアドレスを取得する。
(ステップS1012)次に、ストレージ仮想化モジュール2501は、ボリューム情報13000を参照し、該当ボリューム2210に対応するPDEV2100aを特定し、該当PDEV2100aの領域のアドレスを取得し、ライトデータ(ライト要求に付随するデータ)を書き込む。
(ステップS1013)ストレージ仮想化モジュール2501は、ライトデータの書き込みが完了すると、コマンド制御モジュール2503にライト完了を報告する。
(ステップS1008)コマンド制御モジュール2503は、この報告を受けて、物理サーバ3000に、ライト要求の完了報告を送信して、処理を終了する。
(ステップS1014)一方、ストレージレベル仮想ボリューム2230にストレージレベルプール2220が割り当てられていないと判定した場合、まず、ストレージ仮想化モジュール2501は、ストレージレベルプール情報11000を参照して、ストレージレベルプール2220に、ライトデータを格納する十分の容量があるかを確認する。
(ステップS1015)ストレージレベルプール2220の残サイズが十分にあると判定した場合は(例えば、ライトデータ以上のサイズが残っていると判定した場合は)、ストレージ仮想化モジュール2501は、ストレージレベルプール2220の領域をストレージレベル仮想ボリューム2230に新たに割り当てる。そして、モジュール2501は、ストレージ仮想ボリューム情報12000のストレージレベルプール識別子12004に、該当ストレージレベルプール2220の識別子を格納する。また、モジュール2501は、ストレージレベルプール情報11000の、領域を割り当てたストレージレベルプール2220のストレージレベルプール識別子11001と対応するストレージレベル仮想ボリューム識別子11004に、該当ストレージレベル仮想ボリューム2230の識別子を格納する。
(ステップS1016)そして、モジュール2501は、ストレージレベルプール容量11002を変更しステップS1014を行う。
(ステップS1017)一方で、ストレージレベルプール2220の残サイズが十分にないと判定した場合は、ストレージ仮想化モジュール2501は、ストレージレベルプール2220管理情報の状態を「プール容量不足」に変更する。
(ステップS1018)そして、モジュール2501は、I/O要求元の物理サーバ3000及びストレージシステム2000に、プール容量不足を通知して処理を終了する。
以上の処理によって、物理サーバ3000のデータのライト要求の処理が完了する。
<5−1.サーバでのThin−Provisioning>。
図5は、物理サーバ3000で行われるThin−Provisioningを表す図である。
物理サーバ3000では、サーバ仮想化プログラム3200により、サーバレベルプール3210、サーバレベル仮想ボリューム3220、仮想マシン3201が構築される。
サーバレベルプール3210は、ストレージシステム2000から提供される複数のストレージレベル仮想ボリューム2230の記憶領域を共有して使用するためのプールである。サーバレベルプール3210は、サーバ仮想化プログラム3200により、ストレージシステム2000から割り当てられた、一つ以上のストレージレベル仮想ボリューム2230から構築される。サーバレベルプール3210は、主にファイルシステムの形式をとり、仮想マシン3201のイメージファイル、サーバレベル仮想ボリューム3220のイメージファイルなどが格納される。また、サーバレベル仮想ボリューム3220の管理領域もサーバレベルプール3210内に確保される。この管理領域には、サーバレベル仮想ボリューム3220の仮想記憶領域のアドレス情報や、ストレージシステム2000から提供されたストレージレベル仮想ボリューム2230へのマッピング情報などが格納される。
サーバレベル仮想ボリューム3220は、サーバ仮想化プログラム3200により構築される。サーバレベル仮想ボリューム3220は仮想記憶領域を持つ。サーバレベル仮想ボリューム3220の仮想記憶領域は、サーバ仮想化プログラム3200により、仮想マシン3201からのライト要求に応じて、必要な容量分の領域が、サーバレベルプール3210の記憶領域に、動的にマッピングされる。
仮想マシン3201は、サーバ仮想化プログラム3200によって構築される仮想的な計算機である。仮想サーバ環境では、複数の仮想マシン3201が物理サーバの物理リソースを共有して稼働する。仮想マシン3201には物理的な計算機と同様に、OS3230をインストールすることができ、独立したサーバマシンとして使用することが出来る。仮想マシン3201は、サーバレベル仮想ボリューム3220を経由してサーバレベルプール3210の記憶領域にアクセスする。
仮想マシン3201からのサーバレベル仮想ボリューム3220へのアクセスは、サーバ仮想化プログラム3200により制御される。これにより、仮想マシン3201上のOS3230には、サーバレベル仮想ボリューム3220が、物理記憶領域を持つSCSIデバイスと同様に認識される。サーバ仮想化プログラム3200による制御としては、後述するサーバレベル仮想ボリューム3220に対するリード、ライト、容量問い合わせの処理がある。なお、仮想マシン3201上のOS3230から発行される容量問い合わせ要求は、OS3230がサーバレベル仮想ボリューム3220を利用する際に必要となる当該ボリュームの容量を取得するための要求である。
なお、以下の説明では仮想マシン3201で実行するOS3230がサーバレベル仮想ボリューム3220に対して発行するI/OプロトコルはSCSIを例としている。しかし、SCSIプロトコルの変わりとして、例えばIDEやSASといったほかのブロックアクセス型のプロトコルを採用してもよい。
<5−1−1.サーバレベルプールの設定>。
図21は、サーバレベルプール3210へのストレージレベル仮想ボリューム2230の設定、追加処理を表すフローである。
(ステップS1201)まず、サーバ管理者は、サーバ仮想化プログラム3200に、サーバレベルプール3210に設定するボリュームの情報を入力する。サーバレベルプール3210に設定するボリュームは、ストレージシステム2000から提供されるストレージレベル仮想ボリュームを用いる。サーバレベルプール3210の識別子、閾値、ストレージレベル仮想ボリューム2230の数、及びLUN1603が設定される。
(ステップS1202)サーバ仮想化プログラム3200は、入力された情報を含むサーバレベルプール3210設定の指示コマンドが有効であるかどうかを確認する。無効である場合は、プログラム3200は、そのコマンドを拒否する(例えばエラーを応答する)。
(ステップS1203)サーバ仮想化プログラム3200は、まず、サーバレベルプール情報15000を参照し、指示コマンドに係るサーバレベルプール識別子1801が有効であるかを確認する。
(ステップS1204)次に、サーバ仮想化プログラム3200は、指示コマンドに係るストレージレベル仮想ボリューム2230が使用可能であるか否かを確認する。具体的には、例えば、指示コマンドに係るストレージレベル仮想ボリューム2230がフォーマット中等である場合は、該当ストレージレベル仮想ボリューム2230は使用不可であるため、プログラム3200は、コマンドを拒否する(例えばエラーを応答する)。また、例えば、指示コマンドに係るストレージレベル仮想ボリューム2230がすでに使用中である場合(例えば、ストレージレベル仮想ボリューム2230がパス定義済みである場合)は、プログラム3200は、該当ストレージレベル仮想ボリューム2230は使用不可であるため、コマンドを拒否する。
(ステップS1205)次に、サーバ仮想化プログラム3200は、サーバレベルプール情報15000に、サーバレベルプール容量15002、構成ストレージポート番号・LUN15006を設定する。このサーバ仮想化プログラム3200の処理によってストレージレベル仮想ボリューム2230がサーバレベルプール3210に設定される。
<5−1−2.サーバレベル仮想ボリュームへのI/O>。
<5−1−2a.サーバレベル仮想ボリュームに対する容量問い合わせ要求の処理>。
本処理は、仮想マシン3201上のOS3230が容量問い合わせ対象である、仮想マシン認識デバイス識別子1808と、ブロックアドレスと、ブロック長を指定したリード要求発行を検知して開始される。
仮想マシン3201上のOS3230は、SCSIにより、仮想マシン認識デバイス識別子1808を指定して、容量問い合わせ要求を送信する。サーバ仮想化プログラム3200は、この要求に対して、以下の処理を行うことにより、仮想マシン3201上のOS3230にサーバレベル仮想ボリューム3220の容量を返す。これにより、仮想マシン3201上のOS3230は、サーバレベル仮想ボリューム3220をSCSIデバイスとして認識することが可能となる。
(ステップA)サーバ仮想化プログラム3200は、仮想マシン3201上のOSが送信した容量問い合わせ要求を受信する。
(ステップB)サーバ仮想化プログラム3200は、要求の内容を解析する。そして、サーバレベル仮想ボリューム情報16000を参照し、問い合わせ先の仮想マシン認識デバイス識別子16007に対応するサーバレベル仮想ボリューム識別子16001を特定する。
(ステップC)サーバ仮想化プログラム3200は、該当サーバレベル仮想ボリューム識別子16001に対応した、サーバレベルプール3210内の仮想ディスクファイルを特定する。仮想ディスクファイルとは、サーバレベル仮想ボリューム3220に記憶されているデータを格納するファイルであり、ファイルシステム形式をとるサーバレベルプール3210に格納されている。
(ステップD)サーバ仮想化プログラム3200は、仮想マシン3201上のOS3230が認識するSCSIデバイスのディスクサイズとして、サーバレベル仮想ボリューム3220の容量として設定してある値を返し、使用済み容量として、ステップCで特定した仮想ディスクファイルのサイズを返す。
(ステップE)サーバ仮想化プログラム3200は、仮想マシン3201上のOS3230に、容量問い合わせ要求の完了報告を通知して、処理を終了する。
以上の処理によって、仮想マシン3201上のOS3230は、サーバレベル仮想ボリューム3220をSCSIデバイスとして認識することが可能となる。
<5−1−2b.サーバレベル仮想ボリュームに対するリード要求の処理>。
図22は、サーバ仮想化プログラムが仮想マシンからサーバレベル仮想ボリュームへのリード要求を受け付けた場合に行われる処理のフローである。
本処理は、仮想マシン3201上のOS3230が、リード対象であるサーバレベル仮想ボリューム3220の識別子と、ブロックアドレスと、ブロック長を指定したリード要求発行をサーバ仮想化プログラム3200が検知して開始される。
(ステップS1301)サーバ仮想化プログラム3200が、仮想マシン3201からI/O要求を受信する。受信したI/O要求の内容が無効である場合は、プログラム3200は、その要求を拒否する(例えばエラーを応答する)。受信したI/O要求の内容が有効である場合は、プログラム3200は、そのI/O要求の内容を解析する。解析の結果、サーバ仮想化プログラム3200は、I/O要求がデータのリード要求であることを知る。
(ステップS1302)次に、サーバ仮想化プログラム3200は、受信した要求に係るリード対象のサーバレベル仮想ボリューム3220のアドレスを取得する。
(ステップS1303)次に、サーバ仮想化プログラム3200は、サーバレベル仮想ボリューム情報16000を参照し、リード対象のサーバレベル仮想ボリューム3220に対応するサーバレベルプール3210から、リード要求の該当領域のアドレスにマッピングされているストレージレベル仮想ボリューム2230の領域のアドレスを取得する。このとき、サーバレベル仮想ボリューム3220のリード要求の該当領域のアドレスは、複数のストレージレベル仮想ボリューム2230のアドレスに分散してマッピングされている場合がある。
(ステップS1304)次に、サーバ仮想化プログラム3200は、ストレージレベル仮想ボリューム2230の該当アドレスから、要求に係るデータを読み出し、仮想マシン3201に送信する。
(ステップS1305)そして、仮想マシン3201にリード要求の完了報告を通知して、処理を終了する。
<5−1−2c.サーバレベル仮想ボリュームに対するライト要求の処理>。
図23は、サーバ仮想化プログラムが仮想マシンからサーバレベル仮想ボリュームへのライト要求を受け付けた場合に行われる処理のフローである。
本処理は、仮想マシン3201上のOS3230がライト対象であるサーバレベル仮想ボリューム3220の識別子と、ブロックアドレスと、ブロック長さを指定したリード要求発行をサーバ仮想化プログラム3200が検知して開始される。
(ステップS1401)物理サーバ3000において、サーバ仮想化プログラム3200が、仮想マシン3201からのI/O要求を受信する。受信したI/O要求が無効である場合、プログラム3200は、そのI/O要求を拒否する。受信したI/O要求が有効である場合は、プログラム3200は、そのI/O要求の内容を解析する。解析の結果、サーバ仮想化プログラム3200は、I/O要求がデータのライト要求であることを知る。
(ステップS1402)次に、サーバ仮想化プログラム3200は、サーバレベル仮想ボリューム情報16000を参照し、受信したライト要求に係るサーバレベル仮想ボリューム3220のアドレスを取得する。
(ステップS1403)次に、サーバ仮想化プログラム3200は、サーバレベル仮想ボリューム情報16000を参照し、サーバレベル仮想ボリューム3220に対応するサーバレベルプール3210を特定し、該当サーバレベルプール3210の状態を取得する。
(ステップS1404)そして、プログラム3200は、そのサーバレベルプール3210に対応するストレージレベル仮想ボリューム2230が、使用可能であるか否かを判定する。
(ステップS1405)ストレージレベル仮想ボリューム2230が使用可能でない場合は、該当ボリューム2210にはアクセスできないので、サーバ仮想化プログラム3200は、I/Oエラーを仮想マシン3201に通知する。
(ステップS1406)ストレージレベル仮想ボリューム2230が使用可能であると判断した場合、サーバ仮想化プログラム3200は、要求送信元の仮想マシン3201にライトデータの転送が可能である旨を通知する。仮想マシン3201は、これを受けて、ライトデータを物理サーバ3000に送信する。
(ステップS1407)サーバ仮想化プログラム3200は、仮想マシン3201が送信したライトデータを受信する。
(ステップS1408)サーバ仮想化プログラム3200は、まず、サーバレベルプール情報15000を参照し、該当サーバレベルプール3210に対応する構成ストレージポート番号・LUN15006を特定し、LUNの領域のアドレスを取得し、データを書き込む。
(ステップS1409)サーバ仮想化プログラム3200は、ライトデータの書き込みが完了すると、仮想マシン3201にライト要求の完了報告を送信して、処理を終了する。
<6.実施例1の処理ステップ>
限られた物理ストレージ容量(例えばストレージレベルプールの容量)に対して、大きすぎる仮想ボリューム容量が設定されると、物理ストレージ容量の消費速度の予測がたて難くなり、物理ストレージ容量が枯渇する可能性が上がる。そのため、物理ストレージ容量に対する仮想ボリューム容量の比率(レバレッジ率)を一定以下に保つ必要がある。
実施例1の処理では、ストレージ管理者が、End−to−End容量レバレッジ率の閾値を管理サーバ1000に設定する。管理サーバ1000は、End−to−End容量レバレッジ率が閾値を超えた場合に、それを検出し、End−to−End容量レバレッジ率が閾値を超えていることを表示する。それにより、ストレージ管理者が、End−to−End容量レバレッジ率の高騰を把握することができる。
図14及び図15を参照して、実施例1で管理プログラムが行う処理について説明する。
<6−1.管理プログラムの行うEnd−to−End容量レバレッジ率算出表示処理>。
図14は、管理プログラム1200の行う処理のフローである。以下に個々のステップの詳細を示す。
(ステップS101)管理プログラム1200は、ストレージ管理者が管理プログラム1200の設定画面を用いて入力した初期設定情報1910を受信する。初期設定情報1910には、容量レバレッジ率の閾値と、容量情報を収集する間隔がある。なお、容量レバレッジ率の閾値は、物理ストレージ容量に対して、対応する仮想ボリューム容量の許容上限を表す値であり、ストレージ管理者が容量計画に基づき設定する。また、容量情報を収集する間隔は、管理プログラム1200が以降の処理を行う時間の間隔である。また、ストレージ管理モジュール1201は、ストレージ管理者からのストレージレベルプール2220を特定する情報を受信し、その情報に基づいて、End−to−End容量レバレッジ率の算出を行うストレージレベルプール識別子1401を決定する。そして、管理プログラム1200は、入力された容量レバレッジ率の閾値を、初期設定情報1910のEnd−to−End容量レバレッジ率閾値1911に、容量情報を収集する間隔を、情報収集間隔1912に格納する。また、ストレージ管理モジュール1201は、End−to−End容量レバレッジ率の算出対象に決定したストレージレベルプールの識別子を、End−to−End容量レバレッジ率情報1900のストレージレベルプール識別子1901に格納する。
(ステップS102)管理プログラム1200は、ストレージ管理者の設定した情報収集間隔1912が経過後、すなわち、容量情報を収集するタイミングが訪れたら、ストレージシステム2000の容量情報と、物理サーバ3000の容量情報を収集する。具体的には、例えば、管理プログラム1200のストレージ管理モジュール1201が、ストレージシステム2000の容量情報をストレージシステム2000から取得し、管理プログラム1200のサーバ管理モジュール1202が、物理サーバ3000の容量情報を収集する。なお、容量情報収集の具体的な方法は後に説明する。
(ステップS103)管理プログラム1200のレバレッジ管理モジュール1203が、取得した物理サーバ3000の容量情報と、ストレージ管理者が指定したストレージレベルプール2220の容量情報とに基づいて、End−to−End容量レバレッジ率算出処理を行う。なお、End−to−End容量レバレッジ率処理の詳細は、後ほど図20を用いて説明する。
(ステップS104)レバレッジ管理モジュール1203は、End−to−End容量レバレッジ率情報1900のEnd−to−End容量レバレッジ率の値1902が、初期設定情報1910のEnd−to−End容量レバレッジ率閾値1911より高いか判断する。判断の結果、高い場合は、ステップS105が実行され、高くない場合は、ステップS102が実行される。
(ステップS105)レバレッジ管理モジュール1203は、End−to−End容量レバレッジ率1902が高騰しており物理ストレージ容量枯渇の可能性が上がっていることを伝えるアラートを表示する。更に、レバレッジ管理モジュール1203は、管理プログラム1200の容量レバレッジ率表示画面1403にて、End−to−End容量レバレッジ率1902の値、ストレージレベルプール容量1402、ストレージレベル仮想ボリューム識別子1501、ストレージレベル仮想ボリューム容量1502、の一覧を表示する。なお、管理プログラム1200の画面表示で通知する情報は、ストレージレベルプール2220の物理容量枯渇の可能性が上がっていることを、ストレージ管理者に伝えることが出来る情報であれば、上記以外の情報を通知しても良い。
(ステップS106)一方、比較した結果、End−to−End容量レバレッジ率1902が、End−to−End容量レバレッジ率閾値1911を超えていなかった場合、情報収集間隔1912が経過した後、ステップS102に戻る。
なお、上記の例では、End−to−End容量レバレッジ率1902を算出するにあたり、ストレージレベルプール容量1402と、サーバレベル仮想ボリューム容量1802を用いたが、それぞれのカラムの属するテーブルの、別の値が用いられても良い。
<6−1−1.容量情報収集処理>。
以下に、図14のステップS102で概要を述べた容量情報収集処理の詳細について示す。
(ステップA)ストレージ管理モジュール1201は、指定されたストレージレベルプール識別子1401に対応する、ストレージレベル仮想ボリュームの識別子をストレージシステム2000の有するストレージレベルプール情報11000から収集し、ストレージレベルプール構成情報1400の、対応ストレージレベル仮想ボリューム識別子1404に格納する。
(ステップB)ストレージ管理モジュール1201は、ポート−LUN対応情報1600を参照し、ステップAで収集した対応ストレージレベル仮想ボリューム識別子1404に割り当てられた、ポート番号1601とLUN1602を取得する。
(ステップC)、サーバ管理モジュール1202は、ストレージ管理モジュール1201がステップBにて取得したポート番号1601及びLUN1602が割り当てられたストレージレベル仮想ボリューム2230に対応した、サーバレベルプール3210の識別子を物理サーバ3000のサーバレベルプール情報15000から収集し、サーバレベルプール構成情報1700のサーバレベルプール識別子1701に格納する。なお、ストレージレベル仮想ボリューム2230に対応したサーバレベルプール3210とは、前述のストレージレベル仮想ボリューム2230が属するように設定が行われたサーバレベルプール3210である事を指す。
(ステップD)サーバ管理モジュール1202は、収集したサーバレベルプール識別子1701に対応する全てのサーバレベル仮想ボリューム3220の識別子と容量を、物理サーバ3000のサーバレベルプール情報15000から収集する。サーバ管理モジュール1202は、サーバレベル仮想ボリューム3220の識別子を、サーバレベルプール構成情報1700の対応サーバレベル仮想ボリューム識別子1704と、サーバレベル仮想ボリューム構成情報1800のサーバレベル仮想ボリューム識別子1801に格納する。また、それぞれのサーバレベル仮想ボリューム容量をサーバレベル仮想ボリューム構成情報1800のサーバレベル仮想ボリューム容量1802に格納する。
<6−1−2.End−to−End容量レバレッジ率算出処理の詳細>。
図15は、図14のステップS103の処理のフローである。以下、フローに従って説明する。
(ステップS201)レバレッジ管理モジュール1203は、<6−1−1.容量情報収集処理のステップS102の(ステップA)で指定したストレージレベルプール識別子1401に対応するストレージレベルプールの容量を、ストレージシステム2000に問い合わせる。ストレージシステム2000は、ストレージレベルプール情報11000のストレージレベルプール容量11002から、該当データを管理サーバに返す。レバレッジ管理モジュールは、受け取ったストレージレベルプール容量11002をストレージレベルプール構成情報1400のストレージレベルプール容量1402に格納する。
(ステップS202)レバレッジ管理モジュール1203は、ステップS102のステップDでサーバ管理モジュール1202が収集した、サーバレベル仮想ボリューム容量1802を合算し、その結果をサーバレベルプール構成情報1700の、対応サーバレベル仮想ボリューム総容量1705に格納する。
(ステップS203)レバレッジ管理モジュール1203は、ステップS202で算出した対応サーバレベル仮想ボリューム総容量1705の値に対する、ステップS201で取得したストレージレベルプール容量1402の比率を算出し、その結果をEnd−to−End容量レバレッジ率情報1900のEnd−to−End容量レバレッジ率1902に格納する。
なお、以上の処理では管理者が指定したストレージレベルプールに対して容量収集及びレバレッジ率の表示を行う前提であったが、管理サーバが管理する複数のストレージレベルプールについてレバレッジ率の表示を行っても良い。この場合の処理としては、管理サーバ1000が順に複数のストレージレベルプール2220の個々を「指定されたストレージレベルプール識別子1401」として指定し、図15及び図16で示した処理を繰り返せばよい。
<7.実施例2の概要>。
本発明の実施例2に係る計算機システムは、実施例1の計算機システムに加えて、End−to−End容量レバレッジ率1902が、ストレージ管理者の設定したEnd−to−End容量レバレッジ率閾値1911を超えており、物理ストレージ容量枯渇の危険性が上がっていると判断された場合に、End−to−End容量レバレッジ率1902が高騰する原因となっている個所を特定し、特定した個所の情報をストレージ管理者に管理プログラムの管理画面によって表示する。
また、物理ストレージ容量枯渇を防ぐため、管理プログラム1200が自動的にストレージシステム2000の構成を変更する処理を行うことによりEnd−to−End容量レバレッジ率閾値1911を超えない正常な値に収める。
また、コールバックオブジェクトを有するサーバ仮想化プログラム3200にて、設定操作を受け付けた場合に、その操作が中断される(以下に説明するようなコールバックオブジェクトは、サーバ仮想化プログラム3200に代えて又は加えて、ストレージ制御プログラム2500が有しても良い)。そして、受け付けた操作を実行した後のEnd−to−End容量レバレッジ率1902がシミュレートされ、End−to−End容量レバレッジ率1902がストレージ管理者の設定したEnd−to−End容量レバレッジ率閾値1911を超えると判断された場合、管理プログラム1200が自動的にストレージシステム2000の構成変更処理を行う。これにより、サーバ仮想化プログラム3200での設定操作実行後も、End−to−End容量レバレッジ率1902をストレージ管理者の設定したEnd−to−End容量レバレッジ率閾値1911を超えないような構成とすることができる。管理プログラム1200による上記の処理が成功した後に、サーバ仮想化プログラム3200に成功が通知され、サーバ仮想化プログラム3200は、その通知を受けて、受け付けた設定操作を再開する。一方、管理プログラム1200による、ストレージシステム2000の構成変更処理が実施された後も、End−to−End容量レバレッジ率1902がEnd−to−End容量レバレッジ率閾値1911以下に収まらないと判断された場合は、仮想管理プログラム1200に、設定操作による物理ストレージ容量枯渇の危険性が高いことが通知され、設定操作の中止推奨が通知される。
<7−1.原因個所特定処理>
図27は、原因個所特定処理のフローである。
実施例1の<6−1.End−to−End容量レバレッジ率1902算出処理>のステップS105で算出したEnd−to−End容量レバレッジ率1902が、ストレージ管理者の設定したEnd−to−End容量レバレッジ率閾値1911を超えており、物理ストレージ容量枯渇の可能性が高いと判断された場合に、End−to−End容量レバレッジ率1902高騰の原因となっている個所を表す情報が、ストレージ管理者に画面表示により通知される。
(ステップS401)管理プログラム1200は、End−to−End容量レバレッジ率が高騰しているストレージレベルプール2220に対応しているストレージレベル仮想ボリュームの識別子をストレージシステム2000に問い合わせる。ストレージシステム2000は、その問合せを受けて、ストレージレベルプール情報11000のストレージレベル仮想ボリューム識別子11005を返す。管理プログラム1200は、受信したストレージレベル仮想ボリューム2230の識別子一覧を、対応ストレージレベル仮想ボリューム識別子1404に格納する。
(ステップS402)管理プログラム1200は、取得したストレージレベル仮想ボリューム識別子1404を持つ各ストレージレベル仮想ボリューム2230に対応しているサーバレベルプール識別子1701を取得する。具体的には、例えば、管理プログラム1200は、ポート−LUN対応情報1600を参照し、内部ボリュームIDとして登録してあるストレージレベル仮想ボリューム2230の識別子に対応するLUN1603を特定する。そして、管理プログラム1200は、物理サーバ3000にLUN1603に対応するサーバレベルプール3210の識別子を問い合わせる。物理サーバ3000のサーバ仮想化プログラム3200は、これを受けて、サーバレベルプール情報15000から、問い合わせがあったLUN1603を構成ストレージポート番号・LUN1707から特定し、対応するサーバレベルプール識別子15001を管理サーバ1000に返す。管理サーバ1000の管理プログラム1200は、受信したサーバレベルプール識別子15001をサーバレベルプール構成情報1700のサーバレベルプール識別子1701に格納する。
(ステップS403)管理プログラム1200は、ステップS402で取得したサーバレベルプール識別子1701に対応するサーバレベル仮想ボリューム3210の識別子を、物理サーバ3000に問い合わせる。物理サーバ3000のサーバ仮想化プログラム3200は、これを受けて、サーバレベルプール情報15000の該当サーバレベルプール識別子1701に対応するサーバレベル仮想ボリューム識別子15004を管理サーバ1000に返す。管理サーバ1000の管理プログラム1200は、受信したサーバレベル仮想ボリューム識別子15004を、サーバレベルプール構成情報1700の、対応サーバレベル仮想ボリューム識別子1704に格納する。
(ステップS404)管理プログラム1200は、ステップS403で取得した各対応サーバレベル仮想ボリューム識別子1704を持つサーバレベル仮想ボリューム3220について、サーバレベル仮想ボリューム容量1802のうち、サーバレベルプール3210の記憶領域にマッピングされている容量を物理サーバ3000に問い合わせる。物理サーバ3000のサーバ仮想化プログラム3200は、これを受けて、サーバレベル仮想ボリューム情報16000を参照し、該当サーバレベル仮想ボリューム識別子1704に対応するサーバレベル仮想ボリューム割当済容量16003を管理サーバ1000に返す。管理サーバ1000の管理プログラム1200は、受信したサーバレベル仮想ボリューム割当済容量16003を、サーバレベル仮想ボリューム構成情報1800のサーバレベル仮想ボリューム割当済容量1803に格納する。更に、管理プログラム1200は、サーバレベル仮想ボリューム容量1802の値からサーバレベル仮想ボリューム割当済容量1803の値を引き、その結果をサーバレベル仮想ボリューム未割当容量1804に格納する。
(ステップS405)管理プログラム1200は、ステップS404で算出した、各サーバレベル仮想ボリューム識別子1801に対応する各サーバレベル仮想ボリューム未割当容量1804を比較し、そのなかで最もサーバレベル仮想ボリューム未割当容量1804の値が高いサーバレベル仮想ボリューム3220を、End−to−End容量レバレッジ率1902高騰の原因個所として、該当サーバレベル仮想ボリューム3220の識別子、容量、未割当容量等の情報を表す画面が表示される。その画面の一例を、図37に示す。図37の例によれば、仮想マシン(VM4)にマウントされているサーバレベル仮想ボリュームが原因個所であることの強調表示(例えば、太枠楕円で囲んだ表示)が行われる。なお、原因個所の表示の仕方は、図37の例に限られず、他の方法で表示されても良い。
<7−2.通常のストレージ構成変更処理>
図16は、ストレージ構成変更処理のフローである。本処理は、原因個所特定処理を実行した後に実行される。以下に各ステップの説明を記す。
(ステップS301)管理プログラム1200は、ストレージレベルプール構成情報1400のプール構成ボリューム識別子1406に登録されていないボリューム2210、つまりストレージレベルプール2220に属していない余剰なボリューム2210がストレージシステム2000内に存在するかチェックする。
(ステップS302)管理プログラム1200は、ストレージシステム2000内に、ストレージレベルプール2220に属していない余剰なボリューム2210が存在した場合、自動的に、実施例1の<6−1−1.容量情報収集処理>のステップS102の(ステップA)で指定したストレージレベルプール識別子1401を持つストレージレベルプール2220に、余剰なボリューム2210を新たに属するように設定することによって、ストレージレベルプール2220に容量を追加する。ストレージレベルプール2220に追加する容量は、End−to−End容量レバレッジ率1902がEnd−to−End容量レバレッジ率閾値1911以下に収まるような値に管理プログラム1200が決定する。なお、ストレージレベルプール2220に追加する容量は、ストレージ管理者が物理サーバ1000の管理画面にて設定してもよい。
(ステップS303)ステップS302を実行した結果、End−to−End容量レバレッジ率1902が、ストレージ管理者の設定したEnd−to−End容量レバレッジ率閾値1911以下に収まった場合は、ステップS308に進む。一方で、End−to−End容量レバレッジ率1902が、End−to−End容量レバレッジ率閾値1911以下に収まらなかった場合は、ステップS304に進む。
(ステップS304)ステップS303でEnd−to−End容量レバレッジ率1902がEnd−to−End容量レバレッジ率閾値1911以下に収まらなかった場合、管理プログラム1200は、ストレージシステム2000内に該当ストレージレベルプール2220以外のストレージレベルプール2220が存在するかをストレージシステム2000に問い合わせる。存在する場合は、管理プログラム1200は、問い合わせた該当ストレージレベルプール2220以外のストレージレベルプール2220の識別子を、ストレージシステム2000に問い合わせる。ストレージシステム2000のコマンド制御モジュール2503は、ストレージレベルプール情報11000を参照し、該当ストレージレベルプール2220の識別子以外のストレージレベルプール識別子11001を管理サーバ1000に返す。管理サーバ1000の管理プログラム1200は受信したストレージレベルプール識別子11001をストレージレベルプール構成情報1400のストレージレベルプール識別子1401に格納し、ステップS305に進む。存在しない場合は、ステップS308に進む。
(ステップS305)管理プログラム1200は、End−to−End容量レバレッジ率情報1900を参照し、End−to−End容量レバレッジ率1902の低い(例えば最も低い)ストレージレベルプール識別子1401を指定する。そして、該当ストレージレベルプール2220のEnd−to−End容量レバレッジ率1902が、End−to−End容量レバレッジ率閾値1911以下に収まるように、該当ストレージレベルプール2220とステップS305で選択した、ストレージレベルプール2220との間で、サーバレベル仮想ボリューム3220のイメージファイルをマイグレーションする。なお、このときマイグレーションするサーバレベル仮想ボリューム3220は、<7−1.原因個所特定処理>のステップS405でEnd−to−End容量レバレッジ率高騰の原因個所として特定したサーバレベル仮想ボリューム3220が指定される。その原因箇所が、自動で、マイグレーション対象として指定されても良い。原因箇所としてのサーバレベル仮想ボリューム3220が、別のストレージレベルプールに対応するサーバレベル仮想ボリュームにマイグレーションされれば、マイグレーション元のストレージレベルプールに対応したサーバレベル仮想ボリュームの総容量が減るので、End−to−End容量レバレッジ率が下がる。この場合、上記別のストレージレベルプールは、マイグレーション対象のサーバレベル仮想ボリューム3220がマイグレーションされても、その別のストレージレベルプールについてのEnd−to−End容量レバレッジ率が閾値を超えないことが望ましい。具体的には、例えば、別のストレージレベルプールに対応したサーバレベル仮想ボリュームの総容量に、マイグレーション対象のサーバレベル仮想ボリュームの容量が加算されても、別のストレージレベルプールについてのEnd−to−End容量レバレッジ率が閾値を超えないかどうか判定され、超えないと判定された場合に、その別のストレージレベルプールがマイグレーション先に決定されて良い。
(ステップS306)ステップS305を実行した結果、該当ストレージレベルプール2220のEnd−to−End容量レバレッジ率1902が、End−to−End容量レバレッジ率閾値1911以下に収まったら、ステップS308に進む。一方、該当ストレージレベルプール2220のEnd−to−End容量レバレッジ率1902が、End−to−End容量レバレッジ率閾値1911以下に収まらなかったら、ステップS307に進む。
(ステップS307)ステップS302、ステップS305を実行してもEnd−to−End容量レバレッジ率1902がストレージ管理者の設定したEnd−to−End容量レバレッジ率閾値1911以下に収まらなかった旨が通知される。
(ステップS308)ステップS302もしくはステップS305にて、End−to−End容量レバレッジ率1902がEnd−to−End容量レバレッジ率閾値1911以下に収まった場合、ストレージ管理者にその旨が通知される。
<7−3.コールバックインターフェースを用いた管理プログラムの行う処理>。
図17は、コールバックインターフェースを用いた管理プログラムの行う処理を示すフローである。
(ステップS501)管理プログラム1200は、ストレージ管理者が管理プログラム1200の設定画面を用いて入力した初期設定情報1910を受信する。初期設定情報1910には、End−to−End容量レバレッジ率の閾値が入力される。そして、管理プログラム1200は、入力された閾値を、初期設定情報1910のEnd−to−End容量レバレッジ率閾値1911に格納する。
(ステップS502)次に、コールバック処理が行われる。図19を参照して、コールバック処理の詳細を説明する。
図19は、コールバック処理のフローである。
(ステップS601)サーバ仮想化プログラム3200は、管理プログラム1200のアドレスを登録する。
(ステップS602)サーバ仮想化プログラム3200は、設定操作イベント受付時に、管理プログラム1200にコールバックオブジェクトを送信する。コールバックオブジェクトには、設定操作実行前のサーバレベル仮想ボリューム3220の総容量と、設定操作内容が含まれている。
(ステップS603)管理プログラム1200は、サーバ仮想化プログラム3200からコールバックオブジェクトが送られてくるのを待ち、サーバ仮想化プログラム3200からコールバックオブジェクトが送られて来たら、これを受信する。
(ステップS604)管理プログラム1200は、受信したコールバックオブジェクトの持つ情報を基に、シミュレーションにより、サーバ仮想化プログラム3200にて受け付けた操作を実行した後の、サーバレベル仮想ボリューム3220の総容量を算出する。
(ステップS605)管理プログラム1200は、設定操作に係るサーバレベル仮想ボリューム3220に対応する、ストレージレベルプール2220を特定する。具体的なステップは以下の通りである。
(ステップA)サーバ管理モジュール1202が、設定操作に係るサーバレベル仮想ボリュームの識別子1801に対応する、サーバレベルプール3210の識別子を物理サーバ3000に問い合わせる。物理サーバ3000のサーバ仮想化プログラム3200は、これを受けて、サーバレベル仮想ボリューム情報16000を参照し、サーバレベルプール識別子16004を返す。管理プログラム1200は、受信したサーバレベルプール識別子16004を、サーバレベル仮想ボリューム構成情報1800の対応サーバレベル仮想ボリューム識別子1806に格納する。
(ステップB)次に、管理プログラム1200は、サーバレベルプール構成情報1700を参照し、ステップAでの対応サーバレベルプール識別子1806と同じ識別子を持つ、サーバレベルプール識別子1701を特定する。そして、管理プログラム1200は、特定したサーバレベルプール3210に対応する構成ストレージポート番号・LUN1707を物理サーバ3000に問い合わせる。物理サーバ3000のサーバ仮想化プログラム3200は、これを受けて、サーバレベルプール情報15000を参照し、構成ストレージポート番号・LUN15006を管理サーバ1000に返す。管理サーバ1000の管理プログラム1200は、受信した、構成ストレージポート番号・LUN15006をサーバレベルプール構成情報1700の構成ストレージポート・LUN1707に格納する。
(ステップC)次に、管理プログラム1200は、ポート−LUN対応情報1600を参照し、ステップBで取得した構成ストレージポート番号・LUN1707に対応する内部ボリュームID1601を取得する。
(ステップD)次に、管理プログラム1200は、ストレージレベル仮想ボリューム構成情報1500を参照し、内部ボリュームID1601と同じ識別子を持つ、ストレージレベル仮想ボリューム2230を特定する。そして、管理プログラム1200は、特定したストレージレベル仮想ボリューム2230に対応する、対応ストレージレベルプール識別子1504を取得する。
さて、図17の説明に戻る。
(ステップS503)管理プログラム1200のレバレッジ管理モジュール1203が、コールバック処理によって得たサーバレベル仮想ボリューム3220の総容量と、特定したストレージレベルプール2220の容量情報を用い、End−to−End容量レバレッジ率算出処理を行う。なお、End−to−End容量レバレッジ率算出処理の詳細は後ほど図20を用いて説明する。
(ステップS504)レバレッジ管理モジュール1203は、End−to−End容量レバレッジ率情報1900のEnd−to−End容量レバレッジ率1902の値が、初期設定情報1910のEnd−to−End容量レバレッジ率閾値1911より高いか判断する。判断の結果、高い場合は、ステップS505を実行し、高くない場合はステップS502を実行する。
(ステップS505)レバレッジ管理モジュール1203は、End−to−End容量レバレッジ率1902が高騰しており物理ストレージ容量枯渇の可能性が上がっていることを伝えるアラートを表示する。更に、レバレッジ管理モジュール1203は、管理プログラム1200の容量レバレッジ率表示画面1403にて、End−to−End容量レバレッジ率1902の値、ストレージレベルプール容量1402、ストレージレベル仮想ボリューム識別子1501、ストレージレベル仮想ボリューム容量1502、の一覧をストレージ管理者に表示する。なお、管理プログラム1200の画面表示で通知する情報は、ストレージレベルプール2220の物理容量枯渇の可能性が上がっていることを、ストレージ管理者に伝えることが出来る情報であれば、上記以外の情報を通知しても良い。
なお、上記の例では、End−to−End容量レバレッジ率1902を算出するにあたり、ストレージレベルプール容量1402と、サーバレベル仮想ボリューム容量1802を用いたが、それぞれのカラムの属するテーブルの、別の値を用いても良い。
<7−3−1.コールバック処理でのEnd−to−End容量レバレッジ率算出処理の詳細>。
図20は、図17のステップS503の処理のフローである。
(ステップS801)レバレッジ管理モジュール1203は、ストレージレベルプール構成情報1400を参照し、ステップS605で特定したストレージレベルプール識別子1401に対応するストレージレベルプール容量1402を取得する。
(ステップ802)レバレッジ管理モジュール1203は、ステップS604で算出したサーバレベル仮想ボリューム3220の総容量に対する、<7−3.コールバックインターフェースを用いた管理プログラムの行う処理>のステップS201で取得したストレージレベルプール容量1402の比率を算出し、その結果をEnd−to−End容量レバレッジ率情報1900のEnd−to−End容量レバレッジ率1902に格納する。
なお、以上の処理では、ストレージ管理者が指定したストレージレベルプール2220に対して容量収集及びEnd−to−Endレバレッジ率の表示を行う前提であったが、管理サーバ1000が管理する複数のストレージレベルプール2220についてレバレッジ率の表示を行っても良い。この場合の処理としては、管理サーバ1000が順に複数のストレージレベルプール2220の個々を「指定されたストレージレベルプール識別子1401」として指定し、図19及び図20で示した処理を繰り返せばよい。
<7−4.コールバック処理でのストレージ構成変更処理>。
図18は、管理プログラム1200がコールバックインターフェースを備えている場合のストレージ構成変更処理のフローである。本フローは、図14のステップから実行される。
(ステップS701)管理プログラム1200は、ストレージレベルプール構成情報1400のプール構成ボリューム識別子1406に登録されていないボリューム2210、つまりストレージレベルプール2220に属していない余剰ボリューム2210がストレージシステム2000内に存在するかチェックする。
(ステップS702)管理プログラム1200は、ストレージシステム2000内に、ストレージレベルプール2220に属していない余剰ボリューム2210が存在した場合、自動的に、<7−3.コールバックインターフェースを用いた管理プログラムの行う処理>のステップS201で取得したストレージレベルプール識別子1401を持つストレージレベルプール2220に余剰ボリューム2210を新たに属するように設定することによって、ストレージレベルプール2220に容量を追加する。ストレージレベルプール2220に追加する容量は、End−to−End容量レバレッジ率1902がEnd−to−End容量レバレッジ率閾値1911以下に収まるような値に管理プログラム1200が決定する。なお、ストレージレベルプール2220に追加する容量は、ストレージ管理者が物理サーバ1000の管理画面にて設定してもよい。
(ステップS703)ステップS302を実行した結果、End−to−End容量レバレッジ率1902が、ストレージ管理者の設定したEnd−to−End容量レバレッジ率閾値1911以下に収まった場合はステップS308に進む。一方で、End−to−End容量レバレッジ率1902が、End−to−End容量レバレッジ率閾値1911以下に収まらなかった場合は、ステップS304に進む。
(ステップS704)ステップS703でEnd−to−End容量レバレッジ率1902がEnd−to−End容量レバレッジ率閾値1911以下に収まらなかった場合、管理プログラム1200は、ストレージレベルプール構成情報1400を参照し、ストレージシステム2000内に該当ストレージレベルプール2220以外のストレージレベルプール2220が存在するかをチェックする。存在する場合は、ステップS705に進む。存在しない場合は、ステップS708に進む。
(ステップS705)管理プログラム1200は、End−to−End容量レバレッジ率情報1900を参照し、End−to−End容量レバレッジ率1902の低い(例えば最も低い)ストレージレベルプール識別子1401を指定する。そして、該当ストレージレベルプール2220のEnd−to−End容量レバレッジ率1902が、End−to−End容量レバレッジ率閾値1911以下に収まるように、該当ストレージレベルプール2220とステップS705で選択した、ストレージレベルプール2220との間で、サーバレベル仮想ボリューム3220のイメージファイルをマイグレーションする。なお、このときマイグレーションするサーバレベル仮想ボリューム3220は、管理プログラム1200が、サーバレベル仮想ボリューム構成情報1800を参照し、サーバレベル仮想ボリューム未割当容量1804の値が大きいものを指定する。
(ステップS706)ステップS305を実行した結果、該当ストレージレベルプール2220のEnd−to−End容量レバレッジ率1902が、End−to−End容量レバレッジ率閾値1911以下に収まったら、ステップS708に進む。一方、該当ストレージレベルプール2220のEnd−to−End容量レバレッジ率1902が、End−to−End容量レバレッジ率閾値1911以下に収まらなかったら、ステップS707に進む。
(ステップS707)管理プログラム1200は、サーバ仮想化プログラム3200に、行われようとしている設定操作を実行することによって、ストレージ容量枯渇の危険性が高まるため、設定操作の中止を推奨する旨を通知。サーバ仮想化プログラム3200は、これを受けて、設定操作を実行するか否かをサーバ管理者に再確認する。
(ステップS708)管理プログラム1200は、サーバ仮想化プログラム3200に、行われようとしている設定操作は安全であることを通知。サーバ仮想化プログラム3200は、これを受けて中断していた設定操作を再開する。
(ステップS709)管理プログラム1200は、ストレージ管理者に、ストレージ容量枯渇の可能性が高いことを通知する。
(ステップS710)管理プログラム1200は、ストレージ管理者に、高騰したストレージ容量枯渇の可能性が低減されたことを通知し、構成変更を行ったストレージレベルプール2220等の容量情報を表示する。
以上、本発明の幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、管理サーバ1000は、End−to−End容量レバレッジ率を表示することなく(及び/又は、他種の管理情報を表示すること無く)、End−to−End容量レバレッジ率が閾値以下になるような処理(例えば、ストレージレベルプールの容量の追加、或いは、サーバレベル仮想ボリュームのマイグレーション)を行っても良い。
また、例えば、管理サーバ1000は、図38に示すように、ストレージレベルプールのEnd−to−End容量レバレッジ率と、そのストレージレベルプールの空き容量率とを並べて表示した画面を表示してもよい。なお、空き容量率は、例えば、ストレージレベルプールの容量に対する、ストレージレベルプールの未割当て容量(ストレージレベルプールの容量とストレージレベルプール割当済容量との差分)の比率である。
さらに、例えば、図示しないが、管理サーバ1000は、ストレージレベルプールの空き容量率の変化(各時点での空き容量率)を管理し、その変化を表す情報を表示したり、その変化に基づいて、そのストレージレベルプールについての推奨のEnd−to−End容量レバレッジ率閾値を計算して表示したりしてもよい。
また、End−to−End容量レバレッジ率閾値は、ストレージレベルプール毎に異なっていてもよい。具体的には、例えば、ストレージレベルプール毎に、ストレージレベルプールの空き容量率の変化(空き容量率が減るスピード)に基づいて設定されたEnd−to−End容量レバレッジ率閾値が用意されてもよい。また、閾値は、レバレッジ率の種類別に用意されてもよい。
なお、以上の説明では管理サーバ1000はストレージシステム2000や物理サーバ300に対して適用済みの設定を、管理サーバ1000は、ストレージシステム2000や物理サーバ3000から情報を収集して設定情報(例えば、ストレージレベルプール構成情報1400、ストレージレベル仮想ボリューム構成情報1500、ポート−LUN対応情報1600、サーバレベルプール構成情報1700、サーバレベル仮想ボリューム構成情報1800)を作成し、End−to−End容量レバレッジ率を計算し、表示することを示してきた。しかし、管理サーバ1000が、管理者或いはデータソース装置(例えば可搬型の記憶メディア)から入出力装置4060を介して受信した設定値に基いて、ストレージシステム2000及び物理サーバ300の設定を行う場合は、前述の設定情報の一部または全てをストレージシステム2000や物理サーバ300からの取得を省略し、設定値に基いて前述の設定情報を作成または更新し、End−to−End容量レバレッジ率を計算し、表示してもよい。なお、後者の場合は、設定値に基く設定をストレージシステム2000や物理サーバ300に対して適用する以前にEnd−to−End容量レバレッジ率を表示することで、管理者による設定を支援してもよい。