以下、図面を参照して、本発明の実施形態について詳述する。ただし、以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のために、適宜省略および簡略化が行われており、本発明の技術的範囲を限定するものではない。
以後の説明では「テーブル」、「表」、「リスト」、「キュー」などの表現にて各種情報を説明するが、各種情報はこれら以外のデータ構造で表現されていてもよい。そのため、データ構造に依存しないことを示すために、単に「情報」と呼ぶことがある。各種情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」、「番号」などの表現を用いるが、これらについては相互に置換が可能である。
以後の説明では、「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサ(例えばCPU(Central Processing Unit)やGPU(Graphics Processing Unit))によって実行されることで定められた処理を、記憶資源(例えばメモリ)やインタフェースデバイス(例えば通信装置)などを適宜用いながら行うため、プロセッサを主語とした説明としてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有する例えばコントローラ、装置、システム、計算機、ノード、ストレージ装置、サーバ、クライアント、又はホストであってもよい。また、プログラムの一部または全ては、ハードウェア回路を用いて処理してもよい。
各種プログラムは、プログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。また、以後の説明において、2以上のプログラムが1つのプログラムとして実現されてもよく、逆に1つのプログラムが2以上のプログラムとして実現されてもよい。
なお、実施例を説明する図において、同一の機能を有する箇所には同一の符号を付し、その繰り返しの説明は省略する。
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
本実施形態のストレージシステムは、一例として以下のような構成を有する。
すなわち、本実施例のストレージシステムは、複数のストレージ装置と管理システムからなるストレージシステムにおいて、各ストレージ装置に作成した複数のボリュームグループを、仮想ボリュームグループとして仮想的に一つのボリュームグループとして管理し、この仮想ボリュームグループ単位のQoS機能を実現する。顧客は、この仮想ボリュームグループに対する性能設計を行ったうえでSLA及びQoS設定を行う。管理システムは、仮想ボリュームグループを構成する実際のボリュームグループの稼働情報を監視し、顧客が設定した仮想ボリュームグループに対するQoS設定を満たすように、各ボリュームグループのQoS設定を動的に調整したり、ボリュームグループ間でボリュームマイグレーションを行ったりする。
本実施形態により、複数ストレージ装置から構成されるストレージシステムにおいても、顧客は単一の仮想ボリュームグループに対する性能設計のみを行えばよく、顧客のSTaaS利用に対する利便性が向上する。また、複数のボリュームグループから、仮想的に一つのボリュームグループが作られることで、各ストレージ装置の記憶容量やIOPSを無駄なく利用することが可能となり、ストレージ装置の利用効率を高めることが可能となり、延いてはSTaaSの運用コスト低減に繋がる。
以下、図1~図26を参照して、本発明の実施形態について詳述する。
まず、図1を参照して、本発明の実施形態の概要について説明する。各構成要素や各処理の詳細については、後ほど別の図を用いて詳述する。
図1に示すストレージシステム0000は、複数のストレージ装置0102、管理システム0100、管理端末0101を有する。ストレージ装置0102と管理システム0100、管理端末0101は管理ネットワーク0104に接続される。
ストレージ装置0102は、ボリューム0207という論理的な記憶領域をホスト0103(図2参照)に提供する。本実施形態において、ストレージ装置0102は、1以上のボリューム0207をグループ化したボリュームグループ0208単位でのQoS機能を有しており、ボリュームグループ0208単位に単位時間当たりにホスト0103がストレージ装置0102に発行可能なIO回数(IOPS=IO Per Second)を制限することができる。
管理システム0100は、稼働情報分析部0405、ストレージ装置通信部0404、QoS定期調整部0403、QoS初期調整部0402、及び管理操作制御部0406から構成され、これらに加えて各種処理に用いる管理情報401として、契約管理情報0407や仮想ボリュームグループ管理情報0409等を有する。
管理システム0100は、複数のストレージ装置0102のボリュームグループ0208を、仮想ボリュームグループ0001として仮想的に束ねて管理する。そして、仮想ボリュームグループ0001を構成する各ボリュームグループ0208のQoS設定を動的に調整することで、ストレージシステム0000の管理者や顧客に対して、仮想ボリュームグループ0001単位のQoS機能を提供する。以下、ステップS1~S9によって仮想ボリュームグループ0001単位QoS機能の実現手段の一例について説明する。
ステップS1は、管理システム0100とストレージ装置0102間の通信処理である。詳細は後述するが、管理ネットワーク0104はデータセンタ内のLAN(Local Area Network)だけでなく、インターネット等のWAN(Wide Area Network)を含んでいてもよいため、管理システム0100とストレージ装置0102間で安全に通信を行うために、通信のトンネリング処理等を行う。ストレージ装置通信部0404は、このトンネリングにおける管理システム0100側の終端処理を担う。そのため、ストレージ装置0102との通信は、基本的に全てストレージ装置通信部0404を経由して行う。
ステップS2は、ストレージ装置通信部0404を介してストレージ装置0102から受領した稼働情報の分析を稼働情報分析部0405に指示する処理である。ステップS3はステップS2で指示された稼働情報に対してデータの整形や集計、ノイズ除去、ダウンサンプリングといった各種分析を行ったうえで、管理情報として管理システム0100に格納する処理である。
ステップS4は、ストレージシステム0000の管理者や顧客が管理端末0101を経由して、管理システム0100の管理操作制御部0406に対して新規ボリューム0207のデプロイを指示する処理である。管理操作制御部0406は、受領した新規ボリューム0207のデプロイ指示に基いて管理システム0100上の管理情報を更新する処理(ステップS5)や、ストレージ装置通信部0404を介してストレージ装置0102に対して新規ボリューム0207のデプロイを指示する処理(ステップS6)、QoS初期調整部0402に新規ボリューム0207についてQoS設定の初期調整を指示する処理(ステップS7)を行う。QoS初期調整部0402は、管理システム0100上の管理情報に基づき、新規ボリューム0207のQoS設定を調整する処理(ステップS8)を行い、ストレージ装置通信部0404を介して、調整したQoS設定値をストレージ装置0102に反映する処理(ステップS9)を行う。
ステップS10は、管理システム0100上で定期的に実行されるQoS定期調整部0403による、既存ボリューム0207のQoS設定を調整する処理である。ステップS11は、QoS設定の調整結果を、ストレージ装置通信部0404を介して、ストレージ装置0102に反映する処理である。
以上のような処理によって、複数のストレージ装置0102による、複数のボリュームグループ0208から構成される仮想ボリュームグループ0001単位のQoS機能は実現される。
図2は本実施の形態におけるストレージシステム0000の構成例を示す図である。このストレージシステム0000は、1以上のストレージ装置0102、1以上のホスト、1以上の管理端末0101、そして管理システム0100から構成される。
ストレージ装置0102と管理システム0100、管理端末0101は、管理ネットワーク0104を介して接続され、相互に通信を行うことができる。管理ネットワーク0104は、光ファイバやLTE(Long Term Evolution)、5G(第5世代移動通信システム)、無線LAN(Local Area Network)など任意の通信回線及びその組み合わせによって実現され、データセンタ内に閉じたLAN(Local Area Netowrk)だけでなくインターネット等のWAN(Wide Area Network)や、コンピュータ内部の仮想ネットワークを含んでいてもよい。
管理システム0100は、ストレージ装置0102から稼働情報を収集し、収集した稼働情報を基いてストレージ装置0102の設定を調整することで、ストレージシステム0000の管理者によるストレージ装置0102の運用管理を補助したり、管理端末0101を経由して顧客からの指示を受領し、指示に基づきストレージ装置0102を制御するシステムである。この管理システム0100はストレージ装置0102又はSTaaSを提供するベンダが用意したクラウド上で動作するのが一般的である。しかし、例えば、顧客が用意したプライベートクラウドや通常のサーバ装置などで動作するように構成してもよい。また、ストレージ装置0102の内部で管理システム0100を動作させる構成としてもよい。
管理端末0101は、ストレージシステム0000の管理者や顧客がストレージシステム0000に対して指示を与えるための装置であり、具体的には、ラップトップコンピュータやタブレット、スマートフォンなどである。
管理端末0101には、ストレージシステム0000を管理するための管理ソフトウェアがインストールされ、ストレージシステム0000の管理者や顧客は、当該管理ソフトウェアを介して管理システム0100と通信を行うことで、新規ボリューム0207のデプロイといった構成変更指示や、ストレージシステム0000及びストレージ装置0102が正常に動作しているかの監視などを行う。
なお、本実施例では特段取り上げないが、管理端末0101から直接ストレージ装置0102に対して構成変更指示を与えたり、ストレージ装置0102の監視を行ってもよい。
なお、当該管理ソフトウェアは、Webアプリケーションでもよい。この場合、ストレージシステム0000の管理者や顧客は、管理端末0101にインストールされたWebブラウザなどから当該Webアプリケーションにアクセスすることで各種の処理を行う。また、管理システム0100は、Webサーバの機能を有し、管理端末0101からのアクセスに対して管理ソフトウェアを構成するプログラムを配布する。
ホスト0103は、インストールされたアプリケーションプログラムを実行することで各種業務処理を行うためのコンピュータである。ホスト0103は実行しているアプリケーションプログラムからの要求に応じて、ストレージ装置0102に対してデータの読み込み要求又は書き込み要求を送信する。
ホスト0103は、図示しているように、ストレージネットワーク0105を介してストレージ装置0102と接続される。ストレージネットワーク0105は、FC(Fibre Channel)を用いたSAN(Storage Area Network)が一般的であるが、イーサネットやInfiniBandなどを利用して、iSCSIやSRP(SCSI RDMA Protocol)、NVMeoF(Non-Volatile Memory Express over Fabrics)などによるネットワークを構成してもよい。
ストレージ装置0102は、ホスト0103に対してデータの読み書きをするための記憶領域を提供する装置である。ストレージ装置0102は、管理ネットワーク0104を介して管理システム0100や管理端末0101と接続され、また、ストレージネットワーク0105を介してホスト0103と接続される。
図3は本実施の形態におけるストレージ装置0102の構成例を示す図である。ストレージ装置0102は、ホスト0103に対してデータの読み書きをするための記憶領域を提供する装置である。ストレージ装置0102は、1以上のCPU0202と、1以上のメモリ0203、1以上のFE-IF(Frontend Interface)0200、1以上のMGMT-IF(Management Interface)0201、1以上のBE-IF(Backend Interface)0204、1以上の物理ディスク0205から構成され、それぞれストレージ装置0102内部のバスを介して接続される。CPU0202は、当該ストレージ装置0102の動作制御を司る制御装置であり、メモリ0203に格納された各種プログラムを実行することで、各種処理を実行する。
メモリ0203は、例えば、前述した各種プログラム、各種処理を実行するのに必要な制御情報のほか、CPU使用率やIO量といった稼働情報を格納する。メモリ0203はDRAM(Dynamic RAM(Random Access Memory))で構成し、SDRAM(Synchronous DRAM)やこの後継メモリ規格を用いて接続することが一般的であるが、例えばMRAM(Magnetoresitive RAM)、ReRAM(Resistive RAM)、 PCM(Phase Change MEmory)などの記憶メディアを用いて構成してもよい。
FE-IF0200は、前述したストレージネットワーク0106を介してホスト0103と接続するためのネットワークインタフェースであり、ストレージネットワーク0106の通信規格に応じたネットワークインタフェースを備える。CPU0202とFE-IF0200の接続には、PCI Expressを用いることが一般的であるが、その他の通信規格を用いて構成してもよい。
MGMT-IF0201は上述した管理ネットワーク0104を介して管理システム0100や管理端末0101と接続するためのネットワークインタフェースであり、管理ネットワーク0104の通信規格に応じたネットワークインタフェースを備える。CPU0202とMGMT-IF0201の接続には、PCI Expressを用いることが一般的であるが、その他の通信規格を用いて構成してもよい。
物理ディスク0205は、物理的な記憶領域を有する装置であり、例えばHDD(Hard Disk Drive)、SSD(Solid State Drive)、SCM(Storage Class Memory)、又は光ディスクといった不揮発性の記憶装置から構成され、SAS(Serial Attached SCSI)やSATA(Serial ATA)、NVMe(Non-Volatile Memory express)といったインタフェースによってBE-IF0204と接続される。また、図示していないが、1の物理ディスク0205に対して複数のBE-IF0204が接続される構成としたり、逆に1のBE-IF0204に対して複数の物理ディスク0205が接続される構成としてもよい。CPU0202とBE-IF0204の接続には、PCI Expressを用いることが一般的であるが、その他の通信規格を用いて構成してもよい。
ストレージ装置0102内部では、論理的に1以上の物理ディスク0205を束ねることで1以上の容量プール0206を構成する。物理ディスク0205を束ねる技術については、単純に物理ディスク0205の記憶領域を連結するJBOD(Just a Bunch Of Disks)のほか、RAID(Redundant Arrays of Independent Disks)といった高信頼化技術を用いてもよい。
ストレージ装置0102は、容量プール0206から、一部の記憶領域を切り出すことで、1以上のボリューム0207を構成する。ボリューム0207は、ストレージ装置0102がホスト0103に提供する記憶領域であり、ホスト0103から書き込まれたデータが格納される。ボリューム0207自体は、物理的な記憶領域を有しておらず、ホスト0103がボリューム0207に書き込んだデータは、容量プール0206を介してドライブに書き込まれる。
ボリュームグループ0208は、1以上のボリューム0207から構成されるボリューム0207の管理単位の一種である。本実施例において、ストレージ装置0102は、このボリュームグループ0208単位でのQoS機能を有しており、ボリュームグループ0208単位に単位時間当たりにホスト0103がストレージ装置0102に発行可能なIO回数(IOPS=IO Per Second)を制限することができる。
詳細については省略するが、これらのデータ入出力処理において、IOが発生した領域にのみ物理的な記憶領域を割り当てるシンプロビジョニング機能や、ホスト0103から書き込まれたデータを圧縮してからドライブに格納するデータ圧縮機能、ストレージ装置0102内で重複しているデータを検出して取り除く重複排除機能などを備えていてもよい。
これら、ホスト0103からのデータ書き込み要求や読み込み要求された際のストレージ装置0102の処理については、本発明の本質に関わる部分ではないため、これ以上の詳細な説明については省略する。以降の説明においても、特段の説明がない限り、これらデータ入出力処理に関する処理フローやデータ構造は省略するが、適切に処理できるように構成されているものとする。
この他、図示していないが、ストレージ装置0102のOS(Operating System)イメージや動作ログなどを格納するための不揮発記憶装置、例えば、HDDやSSD、eMMC(embedded Multi Media Card)を備えていてもよい。
なお、ホスト0103やストレージ装置0102は各々必ずしも物理的なコンポーネントでなくてもよく、例えば、仮想マシンやコンテナのような仮想化技術を用いて構成してもよい。加えて、これらの仮想化技術を用いて、1つの物理的な装置のなかに、仮想化したホスト0103やストレージ装置0102を同居させ、ストレージネットワーク0106として仮想スイッチを用いる構成としてもよい。
図4はストレージ装置0102のメモリ0203に格納されるストレージ装置制御プログラム0300と制御情報0301、稼働情報0302を示している。ストレージ装置制御プログラム0300は、ストレージ装置0102のCPU0202によって実行され、処理に応じて制御情報0301や稼働情報0302を参照または更新する。なお、実際には、図示した以外のストレージ装置制御プログラム0300や制御情報0301、稼働情報0302、更にはキャッシュなどホスト0103が読み書きしたデータの一部等も格納され得るが、本実施形態に関連するもののみを示している。
IO制御部0303は、ホスト0103にボリューム0207を提供し、ボリューム0207に対するデータ入力要求を処理するためプログラムである。また、IO制御部0303は、管理システム通信部0305を経由して、管理システム0100から受領したストレージ装置0102の操作指示に従って、新規ボリューム0207のデプロイや、新規ボリューム0207グループの作成、ボリュームグループ0208のQoS設定値の変更などを行う。更に、IO制御部0303は、ストレージ装置0102間でのボリュームマイグレーション指示を受領した場合は、必要に応じてストレージネットワーク0106や管理ネットワーク0104を介して、マイグレーション元ストレージ装置0102からマイグレーション先ストレージ装置0102へ、ボリューム0207に格納されたデータや制御情報0301の転送などの処理を実行する。このほか、図3を用いて説明した、複数の物理ディスク0205を束ねて容量プール0206を構成する処理や、容量プール0206からボリューム0207を構成する処理もIO制御部0303が実現する。IO制御部0303は、これらの処理を行うなかで、必要に応じて制御情報0301を参照または更新する。
情報収集部0304は、IO制御部0303が動作状況を監視するプログラムであり、定期的に監視した結果を稼働情報0302に格納する。加えて、管理システム通信部0305を経由して、稼働情報0302を管理システム0100に送信する。
管理システム通信部0305は、ストレージ装置0102が管理システム0100と通信を行うためのプログラムである。本実施形態では、管理システム0100がクラウドに構築され、管理ネットワーク0104として、インターネットなどの安全ではない通信経路を使うことが想定される。また、環境によっては、データセンタのファイアウォールにより、通信の方向がストレージ装置0102から管理システム0100への一方向に限定される場合も想定される。そのため、管理システム通信部0305が、必要に応じて暗号化やVPN(Virtual Private Network)といった技術により、通信のトンネリング化を行い、管理システム0100とストレージ装置0102との間で通信経路を確立する。また、管理システム0100から、何らかの指示を受け付けると、管理システム通信部0305は指示に応じて適切なプログラムを起動又は、起動済みのプログラムに指示を中継する。例えば、新規ボリューム0207のデプロイ指示を受け付けた場合は、管理システム通信部0305はIO制御部0303に対して作成要求を中継する。
制御情報0301は、容量プール制御情報0306、ボリューム制御情報0307、パス制御情報0308、ボリュームグループ制御情報0309から構成される。
容量プール制御情報0306は、容量プール0206に関する制御情報であり、容量プール0206の容量や、容量プール0206を構成するドライブの情報等から構成される。ボリューム制御情報0307は、ボリューム0207に関する制御情報であり、ボリューム0207のデータが格納される容量プール0206の情報や、ボリューム0207の容量といった情報から構成される。パス制御情報0308は、ホスト0103とボリューム0207の接続に関する制御情報であり、当該ボリューム0207に接続するホスト0103のWWNやLUN等の情報から構成される。ボリュームグループ制御情報0309は、ボリュームグループ0208単位のQoS機能に関する制御情報であり、ボリュームグループ0208を構成するボリューム0207の情報や、当該ボリュームグループ0208のQoS設定値などの情報から構成される。
稼働情報0302は、ストレージ装置稼働情報0310、ボリューム稼働情報0311から構成される。ストレージ装置稼働情報0310は、ストレージ装置0102全体に関する稼働情報であり、CPU使用率やメモリ使用率などの情報が格納される。ボリューム稼働情報0311は、ボリューム0207に関する稼働情報であり、当該ボリューム0207の平均IOPSや平均転送速度、平均レスポンス等の情報が格納される。
図示していないが、メモリ0203は、この他に、ホスト0103や物理ディスク0205、FE-IF、BE-IF、管理-IFといったストレージ装置0102を構成するコンポーネント毎の稼働情報や、管理システム0100とストレージ装置0102間の通信に用いる情報などを保持していてもよい。
図5は管理システム0100構成を示す図である。管理システム0100はストレージ装置0102又はSTaaSを提供するベンダが用意したクラウドにおいて、何らかのコンピュータの上で動作する。このコンピュータは、物理的なサーバのほか、仮想マシンやコンテナでもよい。更に、管理システム0100はFaaS(Function-as-a-Service)やServerless Computingといった、クラウドベンダが提供する、コンピューティング環境を意識せずにプログラムを実行するサービスを用いて構成してもよい。
管理システム0100は各種の制御プログラム0400と各種管理情報0401から構成される。また、図示していないが、これ以外に管理ネットワーク0104と接続し、管理端末0101やストレージ装置0102と通信するための何らかのインタフェースを備える。制御プログラム0400は、管理システム0100上の何らかの記憶装置が保持しており、管理端末0101やストレージ装置0102からの通信、時刻などを契機に実行される。管理情報0401は、管理システム0100上の何らかの記憶装置が保持しており、制御プログラムが必要に応じて情報の読み書きを行う。
QoS初期調整部0402は、新しくデプロイされたボリューム0207を含むボリュームグループ0208に対するQoS設定値を調整するためのプログラムである。QoS初期調整部0402は、管理操作制御部0406から呼び出されて実行される。新しくデプロイされたボリューム0207には、稼働情報0302が存在しないため、新規ボリューム0207をデプロイした際のQoS設定値については、QoS初期調整部0402が調整を行う。その後、ストレージ装置通信部0404を介して、ストレージ装置0102に対して、調整したQoS設定値への反映を指示する。
QoS定期調整部0403は、既存のボリュームグループ0208のQoS設定値を定期的に調整するためのプログラムである。QoS定期調整部0403は、現在時刻を実行契機として、定期的に実行され、各ボリュームグループ0208のQoS設定値を調整する。その後、ストレージ装置通信部0404を介して、ストレージ装置0102に対して、調整したQoS設定値への反映を指示する。
ストレージ装置通信部0404は、ストレージ装置0102における管理システム通信部0305と同様に、管理システム0100がストレージ装置0102と通信を行うためのプログラムであり、必要に応じて暗号化やVPN(Virtual Private Network)といった技術により、通信のトンネリング化を行い、管理システム0100とストレージ装置0102間で通信経路を確立する。また、ストレージ装置通信部0404は、ストレージ装置0102から、何らかの情報を受け付けると、情報種別に応じて適切なプログラムを起動又は、起動済みのプログラムに情報を中継する。例えば、ストレージ装置0102の稼働情報0302を受け付けた場合は、ストレージ装置通信部0404は稼働情報分析部0405を起動し、受け付けた稼働情報の分析を指示する。
稼働情報分析部0405は、ストレージ装置0102から受領した稼働情報0302に対してデータの整形や集計といった各種分析を行い、その結果を基に管理情報0401を更新するプログラムである。
管理操作制御部0406は、管理端末0101から管理ネットワーク0104を介して受領したストレージ操作指示に応じてストレージ装置0102を制御するプログラムである。ストレージ装置0102の制御は、ストレージ装置通信部0404を介して、ストレージ装置0102に操作指示を行うことで実現する。この際に、必要に応じて、管理情報0401を参照または更新する。また、操作内容によっては、別のプログラムを起動し、起動したプログラムに処理を引き継ぐこともある。
管理情報0401は、管理システム0100がストレージ装置0102を管理するための情報であり、契約管理情報0407、装置管理情報0408、仮想ボリュームグループ管理情報0409、ボリューム稼働情報履歴情報0410、ストレージ装置稼働情報履歴情報0411から構成される。
契約管理情報0407は、契約容量や契約性能、RAIDレベルなど顧客とのSLAに関する情報から構成される。装置管理情報0408は、ストレージ装置0102の稼働情報や容量プール0206毎の総容量や使用容量、RAIDレベルなど、ストレージ装置0102を管理するための情報から構成される。仮想ボリュームグループ管理情報0409は、仮想ボリュームグループ0001を構成するボリュームグループ0208の使用容量や稼働情報、QOS設定値など仮想ボリュームグループ0001を管理するための情報から構成される。ボリューム稼働情報履歴情報0410は、ボリューム0207毎の稼働情報の時系列履歴から構成される。ストレージ装置稼働情報履歴情報0411は、ストレージ装置0102毎の稼働情報の時系列履歴から構成される。
図示していないが、この他に、顧客やストレージシステム0000の管理者が、管理システム0100にログインするための認証や認可に関する情報、管理システム0100とストレージ装置0102との間の通信に用いる情報などを保持していてもよい。
以下、本実施の形態によるストレージシステム0000を制御するための各種情報について説明する。
図6は容量プール制御情報0306が保持する情報を示す図である。容量プール制御情報0306は、容量プール0206の容量や、容量プール0206を構成するドライブの情報を示す。容量プール制御情報0306の各エントリには、容量プールID0500、総容量0501、使用容量0502、物理ディスクID0503、RAIDレベル0504が含まれる。
容量プールID0500は、ストレージ装置0102内部で容量プール0206を一意に識別するためのIDである。図では連番の数字となっているが、連番でなくてもよく、数字以外の文字を使ったIDでもよい。総容量0501は当該容量プール0206に格納可能なデータの容量を示す情報である。使用容量0502は、当該容量プール0206に格納済みのデータの容量を示す情報である。物理ディスクID0503は、当該容量プール0206を構成する物理ディスク0205を示す情報である。図では数字となっているが、バス上での物理ディスク0205の位置を示すアドレスなど文字列をIDとしてもよい。RAIDレベル0504は、当該容量プール0206を構成する物理ディスク0205を束ねるのに用いた方式を示す情報である。図中のRAID6やRAID5は、前述した高信頼化技術の一種であり、耐障害性に違いがある。
図の例では、容量プールID0500が「0」の容量プール0206は、物理ディスクID0503「0、1、2、3、4」をRAID6で束ねており、総容量0501が「100TB」のうち「30TB」が使用済みであることを示している。
容量プール制御情報0306は、新規ストレージ装置0102導入時にストレージシステム0000の管理者が当該ストレージ装置0102のハードウェア構成等に応じてエントリを追加する。使用容量0502については、IO制御部0303が新規ボリューム0207のデプロイ時に、当該ボリューム0207の容量を加算する。
図7はボリューム制御情報0307が保持する情報を示す図である。ボリューム制御情報0307は、ボリューム0207に関する制御情報であり、ボリューム0207のデータが格納される容量プール0206の情報や、ボリューム0207の容量といった情報を示す。ボリューム制御情報0307の各エントリには、ボリュームID0600、プールID0601、容量0602が含まれる。
ボリュームID0600は、ストレージ装置0102内部でボリューム0207を一意に識別するためのIDである。図では連番の数字となっているが、連番でなくてもよく、数字以外の文字を使ったIDでもよい。容量プールID0601は、当該ボリューム0207のデータ格納先となる容量プール0206を示す情報である。容量0602は、当該ボリューム0207に格納可能なデータ量を示す情報である。
図の例では、ボリュームID0600が「0」であるボリューム0207は、容量プールID0601が「0」である容量プール0206にデータを格納し、「100GB」のデータを可能することができることを示している。
ボリューム制御情報0307は、IO制御部0303が新規ボリューム0207のデプロイ要求を受領した際に、デプロイするボリューム0207の構成に応じてエントリを追加する。
図8はパス制御情報0308が保持する情報を示す図である。パス制御情報0308は、ホスト0103とボリューム0207の接続に関する制御情報であり、当該ボリューム0207に接続するホスト0103のWWNやLUN等の情報を示す。パス制御情報0308の各エントリには、ボリュームID0700、ホストWWN0701、LUN0702が含まれる。
ホストWWN0701は、ホスト0103のHBA(Host Bus Adapter)が持つHBA固有の識別情報であり、ストレージ装置0102がホスト0103と通信するために用いる情報である。図で示すホストWWN0701は、主にホスト0103とFCプロトコルを用いて使う情報だが、その他のプロトコルに対応する場合は、プロトコルを示す情報と、当該プロトコルの通信に必要な情報を格納する。LUN(Logical Unit Number)0702は、1つのホスト0103に複数のボリューム0207を割り当てた際に、ホスト0103が個々のボリューム0207を識別するのに用いる識別情報である。
図の例では、ボリュームID0700が「0」であるボリューム0207は、WWN0701が「0011223344556677」であるHBAを持つホスト0103と接続されており、そのLUN0702は「0」であることを示している。
パス制御情報0308は、IO制御部0303が新規ボリューム0207のデプロイ要求や、パス登録要求を受領した際に、要求内容に基いてエントリを追加する。
図9はボリュームグループ制御情報0309が保持する情報を示す図である。ボリューム制御情報0307は、ボリューム0207に関する制御情報であり、ボリューム0207のデータが格納される容量プール0206の情報や、ボリューム0207の容量といった情報を示す。ボリューム制御情報0307の各エントリには、ボリュームグループID0800、QoS設定0801、ボリュームID0802が含まれる。
ボリュームグループID0800は、ストレージ装置0102内部でボリュームグループ0208を一意に識別するためのIDである。図では連番の数字となっているが、連番でなくてもよく、数字以外の文字を使ったIDでもよい。QoS設定0801は、当該ボリュームグループ0208に対して、ホスト0103が単位時間あたりに発行可能なIO量(IOPS)の上限を示す情報である。
図の例では、ボリュームグループID0800が「0」であるボリュームグループ0208は、ボリュームID0802が「0」と「1」であるボリュームから構成され、これらのボリューム0207に対して、合計で最大「6k IOPS」のIOを発行可能であることを示している。
ボリュームグループ制御情報0309は、IO制御部0303が新規ボリュームグループ0208作成要求を受領した際にエントリを追加する。また、新規ボリューム0207のデプロイ時やボリュームマイグレーション実行時には、構成するボリュームID0802を追加又は削除し、QoS設定の反映要求受領時には、受領した設定値に応じてQoS設定0801を更新する。
図10はストレージ装置稼働情報0310が保持する情報を示す図である。ストレージ装置稼働情報0310は、ストレージ装置0102全体に関する稼働情報であり、CPU使用率やメモリ使用率などの情報を示す。ストレージ装置稼働情報0310には、CPU使用率1000、メモリ使用率1001が含まれる。
CPU使用率1000は、当該ストレージ装置0102を構成するCPU0202が、単位時間当たりに処理を実行している時間の割合である。メモリ使用率1001は、当該ストレージ装置0102を構成するメモリ0203の容量のうち、何らかのデータを格納するのに使用している容量の割合である。
図の例では、CPU使用率1000は「40%」であり、メモリ使用率1001は「60%」であることを示している。
ストレージ装置稼働情報0310は、情報収集部0304がIO制御部0303を監視し、CPU使用率1000とメモリ使用率1001を定期的に更新する。
図11はボリューム稼働情報0311が保持する情報を示す図である。ボリューム稼働情報0311は、ボリューム0207に関する稼働情報であり、当該ボリューム0207の平均IOPSや平均転送速度、平均レスポンス等の情報を示す。ボリューム稼働情報0311の各エントリには、ボリュームID0900、平均IOPS0901、平均転送速度0902、平均レスポンス0903が含まれる。
平均IOPS0901は、当該ボリューム0207に対して、ホスト0103が単位時間当たりに発行したIO数(IOPS)の平均である。平均転送速度0902は、当該ボリューム0207に対して、ホスト0103が単位時間あたりに発行したIOによって転送されたデータ量の平均である。平均レスポンス0903は、当該ボリューム0207に対して、ホスト0103が単位時間中に発行したIOに対してストレージ装置0102が応答を返すのに掛かった時間の平均である。
図の例では、ボリュームID0900が「0」であるボリューム0207は、ホスト0103から平均で「3k IOPS」、「12 MB/s」のIOを受け付けており、これらIOに応答を返すために平均で「0.5 ms」の時間を要していることを示す。
ボリューム稼働情報0311は、情報収集部0304がIO制御部0303を監視し、ボリューム0207毎に平均IOPS0901と平均転送速度0902、平均レスポンス0903を定期的に更新する。
図12は契約管理情報0407が保持する情報を示す図である。契約管理情報0407は、契約容量や契約性能、RAIDレベルなど顧客とのSLAに関する情報を示す。契約管理情報0407の各エントリには、顧客ID1100、仮想ボリュームグループID1101、契約容量1102、契約性能1103、契約RAIDレベル1104が含まれる。
顧客ID1100は、ストレージシステム0000を利用する顧客を一意に識別するためのIDである。図では連番の数字となっているが、連番でなくてもよく、数字以外の文字を使ったIDでもよい。例えば、顧客のメールアドレスをIDとしてもよい。また、契約管理情報0407における顧客は、組織であってもよい。この場合、組織とユーザの対応関係を管理する情報を用意すればよい。
仮想ボリュームグループID1101は、管理システム0100が仮想ボリュームグループ0001を一意に識別するためのIDである。図では連番の数字となっているが、連番でなくてもよく、数字以外の文字を使ったIDでもよい。1の顧客に対して、2以上の仮想ボリュームグループ0001を割り当ててもよい。2以上の仮想ボリュームグループ0001を持つ顧客は、複数の契約を結んでいることを意味する。これは例えば、本番環境と開発環境を分離したい場合や、独立した複数の用途でストレージシステム0000を利用したい場合などに、このような形態をとることが考えられる。2以上の仮想ボリュームグループ0001を持つ顧客は、新規ボリューム0207をデプロイする際にどの仮想ボリュームグループ0001に対してボリューム0207をデプロイするのか選択できる。
契約容量1102は、当該顧客が当該仮想ボリュームグループ0001で利用可能な最大容量である。当該顧客は当該仮想ボリュームグループ0001に対して、ボリューム0207の容量の合計が契約容量1102に達するまで新規ボリューム0207をデプロイすることができる。
契約性能1103は、当該顧客が当該仮想ボリュームグループ0001について要求するIO性能に対するSLAである。本実施例では、IO性能に対するSLAは、上限IOPSと平均レスポンスを含む。上限IOPSは、当該顧客が当該仮想ボリュームグループ0001を構成するボリューム0207に対して、単位時間当たりに発行可能な最大IO数を示す。平均レスポンスは、当該顧客が当該仮想ボリュームグループ0001を構成するボリューム0207に対して、単位時間中に発行したIOに対して、ストレージ装置0102が応答を返すのに要した時間の平均である。
契約RAIDレベル1104は、当該顧客が当該仮想ボリュームグループ0001について要求するRAIDレベルに対するSLAである。SLAには、契約性能のようなIO性能に対するもの以外に、耐障害性や可用性に対するものもある。契約RAIDレベル1104は、耐障害性に関するSLAの一種であり、IO性能以外に関するSLAの一例である。
本実施例において、契約RAIDレベル1104は必須のものではなく、また、契約RAIDレベル1104以外のSLAがあってもよい。例えば、ハードウェア障害などによってデータが消失し、バックアップから復旧する際の復旧に関する指標であるRPO(Recovery Point Objective)やRTO(Recovery Time Objective)といったものもSLAになり得る。これらIO性能以外に関するSLAは、ストレージ装置0102に各SLAに対応可能な容量プール0206を作っておき、新規ボリューム0207のデプロイ時に当該容量プール0206を使用することで対応することができる。
図の例では、顧客ID1100が「0000」である顧客は、2つの仮想ボリュームグループ0001を契約しており、それぞれの仮想ボリュームグループID1101は「0」と「2」であり、仮想ボリュームグループID1101が「0」である仮想ボリュームグループ0001は合計で「10TB」のデータを格納可能であり、「上限IOPS=15k IOPS、平均レスポンス<2ms」のIO性能が保証されており、RAIDレベル1104が「RAID6」である容量プール0206にデータが格納され、仮想ボリュームグループID1101が「1」である仮想ボリュームグループ0001は合計で「5TB」のデータを格納可能であり、「上限IOPS=3k IOPS、平均レスポンス<2ms」のIO性能が保証されており、RAIDレベル1104が「RAID5」である容量プール0206にデータが格納されることを示している。
契約管理情報0407は、ストレージシステム0000の顧客や管理者が管理端末0101を経由して、管理操作制御部0406に対して、契約管理情報0407の追加又は変更指示を行い、管理操作制御部0406は指示に従ってエントリの追加又は変更を行う。
図13は装置管理情報0408が保持する情報を示す図である。装置管理情報0408は、ストレージ装置0102の稼働情報や容量プール0206毎の総容量や使用容量、RAIDレベルなど、管理システム0100がストレージ装置0102を管理するための情報を示す。装置管理情報0408の各エントリには、装置ID1200、CPU使用率1201、メモリ使用率1202、容量プールID1203、総容量1204、使用容量1205、RAIDレベル1206が含まれる。
装置ID1200は、管理システム0100がストレージシステム0000内でストレージ装置0102を一意に識別するためのIDである。図では連番の数字となっているが、連番でなくてもよく、数字以外の文字を使ったIDでもよい。例えば、ストレージ装置0102の製造番号をIDとしてもよい。
容量プールID1203は、ストレージ装置0102内で一意に容量プール0206を識別するためのIDであり、管理システム0100は装置ID1200と容量プールID1203の組によって、ストレージシステム0000内で容量プール0206を一意に識別する。
図の例では、装置ID1200が「0」であるストレージ装置0102には、2つの容量プール0206が存在し、それぞれの容量プールID1203は「0」と「1」であり、容量プールID1203が「0」である容量プール0206は、総容量1204が「10TB」、使用容量1205が「30TB」、RAIDレベル1206が「RAID6」であり、容量プールID1203が「1」である容量プール0206は、総容量1204が「40TB」、使用容量1205が「10TB」、RAIDレベル1206が「RAID6」であることを示している。
装置管理情報0408は、ストレージシステム0000の管理者が、新規ストレージ装置0102導入時に、当該ストレージ装置0102のエントリを追加する。CPU使用率1201、メモリ使用率1202、容量プールID1203、総容量1204、使用容量1205、RAIDレベル1206は、稼働情報分析部0405がストレージ装置0102から受領した制御情報0301や稼働情報0302を元に登録または更新する。
図14は仮想ボリュームグループ管理情報0409が保持する情報を示す図である。仮想ボリュームグループ管理情報0409は、仮想ボリュームグループ0001を構成するボリュームグループ0208の使用容量や稼働情報、QoS設定値など仮想ボリュームグループ0001を管理するための情報を示す。仮想ボリュームグループ管理情報0409には、仮想ボリュームグループID1300、装置ID1301、ボリュームグループID1302、使用容量1303、平均IOPS1304、平均転送速度1305、平均レスポンス1306、QoS設定値1307が含まれる。
ボリュームグループID1302は、ストレージ装置0102内で一意にボリュームグループ0208を識別するためのIDであり、管理システム0100は装置ID1301とボリュームグループID1302の組によって、ストレージシステム0000内でボリュームグループ0208を一意に識別する。
図の例では、仮想ボリュームグループID1300が「0」である仮想ボリュームグループ0001は、二つのボリュームグループ0208から構成されており、1のボリュームグループ0208は装置ID1301が「0」、ボリュームグループID1302が「0」であり、使用容量1303は「2TB」、平均IOPS1304は「4kIOPS」、平均転送速度1305は「16MB/s」、平均レスポンス1306は「0.5ms」、QoS設定値1307は「6k IOPS」であり、1のボリュームグループ0208は装置ID1301が「1」、ボリュームグループID1302が「1」であり、使用容量1303は「3TB」、平均IOPS1304は「6kIOPS」、平均転送速度1305は「24MB/s」、平均レスポンス1306は「0.6ms」、QoS設定値1307は「9k IOPS」であることを示す。
仮想ボリュームグループ管理情報0409は、管理操作制御部0406が契約情報の追加指示を受領した際にエントリを追加する。装置ID1301、ボリュームグループID1302、使用容量1303は、管理操作制御部0406が新規ボリューム0207のデプロイ要求を受領した際に必要に応じて追加または更新する。QoS設定値1307は、QoS初期調整部0402又はQoS定期調整部0403が調整指示を受領した際に更新する。平均IOPS1304、平均転送速度1305、平均レスポンス1306は、稼働情報分析部0405がストレージ装置0102から受領した制御情報0301や稼働情報0302を元に登録または更新する。
図15はボリューム稼働情報履歴情報0410が保持する情報を示す図である。ボリューム稼働情報履歴情報0410は、ボリューム0207毎の稼働情報の時系列履歴を示す情報である。ボリューム稼働情報履歴情報0410の各エントリには、装置ID1400、ボリュームグループID1401、ボリュームID1402、タイムスタンプ1403、容量1404、平均IOPS1405、平均転送速度1406、平均レスポンス1407を含む。
ボリュームグループID1401は、ストレージ装置0102内で一意にボリュームグループ0208を識別するためのIDであり、管理システム0100は装置ID1400とボリュームグループID1401の組によって、ストレージシステム0000内でボリュームグループ0208を一意に識別する。ボリュームID1402は、ストレージ装置0102内で一意にボリューム0207を識別するためのIDであり、管理システム0100は装置ID1400とボリュームID1402の組によって、ストレージシステム0000内でボリューム0207を一意に識別する。タイムスタンプ1403は、当該稼働情報を受領した時刻を示す情報である。
図の例では、装置ID1400が「0」であるストレージ装置0102からボリュームグループID1401が「0」であるボリュームグループ0208についてのボリューム稼働情報0311を受領しており、ボリュームID1402が「0」であるボリューム0207については、「10:00:00」、「10:00:30」、「10:01:00」の時刻に稼働情報を受領しており、「10:00:00」に受領した稼働情報の容量1404は「100GB」、平均IOPS1405は「2k IOPS」、平均転送速度1406は「8MB/s」、平均レスポンス1407は「0.4ms」であることを示す。
ボリューム稼働情報履歴情報0410は、稼働情報分析部0405がストレージ装置0102から受領した制御情報0301や稼働情報0302を元にエントリを追加する。なお、受領してから所定の期間が過ぎた稼働情報0302のエントリは削除してもよい。
図16はストレージ装置情報履歴情報が保持する情報を示す図である。ストレージ装置稼働情報0310履歴情報は、ストレージ装置0102毎の稼働情報の時系列履歴を示す情報である。ストレージ装置情報履歴情報の各エントリには、装置ID1500、タイムスタンプ1501、CPU使用率1502、メモリ使用率1503を含む。
図の例では、装置ID1500が「0」であるストレージ装置0102から、「10:00:00」、「10:00:30」、「10:01:00」の時刻に稼働情報0302を受領しており、「10:00:00」に受領した稼働情報0302のCPU使用率1502は「40%」、メモリ使用率1503は「57%」であることを示す。
ストレージ装置稼働情報履歴情報0411は、稼働情報分析部0405がストレージ装置0102から受領した稼働情報0302を元にエントリを追加する。なお、受領してから所定の期間が過ぎた稼働情報0302のエントリは削除してもよい。
以上、本実施例におけるストレージシステム0000が扱う各種情報について説明した。なお、上記説明では、本実施形態における制御に使うものや、一般的なストレージ装置0102において含まれることの多い管理情報0401を示している。必要に応じて、各表に列を足して情報を付け加えてもよいし、必要ない情報があれば列を削除してもよい。例えば、ストレージ装置0102が、シンプロビジョニング機能やデータ圧縮機能、重複排除機能を備えるのであれば、ボリューム管理情報において、それぞれの機能の有効無効を示す列を追加してもよいし、更にボリューム稼働情報0311において、それぞれの機能によるデータ削減量を示す列を追加してもよい。
図17はストレージ装置0102における稼働情報送信処理フローを示す図である。ステップS1700~S1701はストレージ装置0102のメモリ0203にある情報収集部0304に含まれ、ステップS1702~S1703は管理システム通信部0305のプログラムに含まれる。また、何れもストレージ装置0102のCPU0202によって実行される。
本実施例においては、稼働情報の収集をストレージ装置0102が処理起点となって管理システム0100への情報を転送するプッシュ型の通信を想定し、本処理はストレージ装置0102が一定時間毎に起動する。なお、管理システム0100が処理起点となって、ストレージ装置0102に情報の転送を要求するプル型でもよく、その場合、管理システム0100が一定時間毎にストレージ装置通信部0404を経由して、各ストレージ装置0102に対して本処理の起動を指示する。
本処理では、まず情報収集部0304がIO制御部0303の動作状況を監視し、その結果を用いてストレージ装置稼働情報0310とボリューム稼働情報0311を更新する(S1700)。動作状況を元に稼働情報0302を更新する際に、任意のデータ加工処理を行ってよい。例えば、IO制御部0303が前回の収集処理以降に処理した累積のIO数と経過時間からIOPSに変換する処理などを行ってもよく、また、例えば移動平均などによる稼働情報0302の平滑化を行ってもよい。
次に、情報収集部0304は、管理システム通信部0305を起動し、管理システム0100へ稼働情報0302及び一部の制御情報0301の送信を指示する(S1701)。起動した管理システム通信部0305は指示を受領し(S1702)、指示に従ってストレージ装置稼働情報0310とボリューム稼働情報0311、容量プール制御情報0306、ボリュームグループ制御情報0309を管理システム0100に送信する(S1703)。
図18は管理システム0100における稼働情報受信処理フローを示す図である。ステップS1800~S1801は管理システム0100の何らかの記憶デバイスにあるストレージ装置通信部0404のプログラムに含まれ、ステップS1802~S1806は稼働情報分析部0405のプログラムに含まれる。また、何れも管理システム0100を構成する何らかのコンピュータによって実行される。
図17で述べたように、本実施例はストレージ装置0102から管理システム0100へのプッシュ型の通信によって稼働情報0302を送信することを想定している。そのため、本処理はストレージ装置0102から稼働情報0302が到着するのを契機として起動する。プル型の通信により稼働情報0302を取得する場合、本処理は一定時間毎に起動され、ストレージシステム0000を構成する各ストレージ装置0102に対して、それぞれ稼働情報0302の取得を指示する。より具体的には、装置管理情報0408を参照し、ストレージ装置0102のエントリ毎にストレージ装置通信部0404を経由して稼働情報0302の取得を指示する。
本処理では、ストレージ装置通信部0404が、ストレージ装置0102からストレージ装置稼働情報0310とボリューム稼働情報、容量プール制御情報0306、ボリュームグループ制御情報0309を受領する(S1800)。次に、ストレージ装置通信部0404が、稼働情報分析部0405を起動し、受領した稼働情報0302及び制御情報0301の分析を指示する(S1801)。
稼働情報分析部0405は、分析指示を受領して以下の処理を実行する(S1802)。まず、受領したストレージ装置稼働情報0310とボリューム稼働情報0311、ボリュームグループ制御情報0309を元に、ストレージ装置稼働情報履歴情報0411とボリューム稼働情報履歴情報0410にエントリを追加する(S1803)。具体的には、ストレージ装置稼働情報履歴情報0411の当該装置のエントリに対して、タイムスタンプ1501として現在時刻を、CPU使用率1502とメモリ使用率1503に受領したストレージ装置稼働情報0310のものをそれぞれ追加する。ボリューム稼働情報履歴情報0410については、まず、受領したボリュームグループ制御情報0309から同じく受領したボリューム稼働情報0311の各エントリに対応するボリューム0207が属するボリュームグループ0208のIDを取得する。そして、ボリューム稼働情報履歴情報0410の当該装置の当該ボリュームグループ0208のエントリに対して、タイムスタンプ1403として現在時刻を、平均IOPS1405と平均転送速度1406、平均レスポンス1407に受領したボリューム稼働情報0311のものをそれぞれ追加する。
次に、受領した容量プール制御情報0306とステップS2003で更新したストレージ装置稼働情報履歴情報0411を元に装置管理情報0408を更新する(S1804)。具体的には、ストレージ装置稼働情報履歴情報0411の当該ストレージ装置0102の各エントリについて、時間軸方向で何らかの集計処理や分析処理を行い、当該ストレージ装置0102のCPU使用率とメモリ使用率の定常値を算出し、その値を使って装置管理情報0408の当該ストレージ装置0102のエントリにおけるCPU使用率1201、メモリ使用率1202を更新する。また、受領した容量プール制御情報0306に含まれる容量プール0206の各エントリを使って、装置管理情報0408の当該ストレージ装置0102の容量プールID1203、総容量1204、使用容量1205、RAIDレベル1206を更新または追加する。
次に、ステップS2003で更新したボリューム稼働情報履歴情報0410を元に、ボリュームグループ0208単位の稼働情報0302を算出する(S1805)。具体的には、ボリューム稼働情報履歴情報0410の当該ストレージ装置0102の各ボリューム0207のエントリについて、時間方向で何らかの集計処理や分析処理を行い、当該ボリューム0207の平均IOPSと平均転送速度、平均レスポンスの定常値を算出し、それらを更に、ボリュームグループ0208単位で平均化することで、ボリュームグループ0208単位の平均IOPS0901と平均転送速度0902、平均レスポンス0903の定常値を算出する。
次に、ステップS2005で算出したボリュームグループ0208単位の稼働情報0302を元に、仮想ボリュームグループ管理情報0409を更新する(S1806)。具体的には、仮想ボリュームグループ管理情報0409の当該装置の当該ボリュームグループ0208のエントリを、ステップS1805で算出したボリュームグループ0208単位の平均IOPS0901と平均転送速度0902、平均レスポンス0903の定常値を使って更新する。
図19は管理端末0101における新規ボリュームデプロイ処理フローを示す図である。本処理は、管理端末0101にインストールされた管理ソフトウェアに含まれ、管理端末0101により実行される。なお、管理ソフトウェアがWebアプリケーションであれば、本処理は管理端末0101にインストールされたWebブラウザによって実行される。本処理は、顧客が管理端末0101にインストールされた管理ソフトウェアを使って、ストレージシステム0000に対して新規ボリューム0207のデプロイを指示することで起動される。
本処理は、まず顧客から、契約情報と、デプロイするボリューム0207の情報、当該ボリューム0207に接続するホスト0103の情報を受領する(S1900)。契約情報は、顧客IDやボリューム0207をデプロイする仮想ボリュームグループ0001のIDを含む。また、仮想ボリュームグループIDを指定する代わりに、契約容量、契約性能、契約RAIDレベルを含めることで、新規ボリューム0207のデプロイと合わせて、新規仮想ボリュームグループ0001の作成を指示してもよい。ボリューム0207の情報には、ボリューム容量が含まれる。ホスト0103の情報には、ホストWWNとLUNが含まれる。これ以外に、ホスト0103のOS(Operating System)種別や、ホスト0103との接続に用いる通信プロトコルやそれに付随する情報等を指定できるようにしてもよい。
次に、管理システム0100にステップS3000で受領した情報と合わせて新規ボリューム0207のデプロイ要求を送信し、処理結果を受領する(S1901)。デプロイ要求を受領した管理システム0100は、図20の処理を実行し、処理結果を管理端末0101に報告する。最後に、管理端末0101は、受領した新規ボリュームデプロイの処理結果を顧客に表示する(S1902)。
図20は管理システム0100の管理操作制御部0406による新規ボリュームデプロイ処理フローを示す図である。本処理は、管理操作制御部0406のプログラムに含まれ、管理システム0100を構成する何らかのコンピュータによって実行される。本処理は、管理ネットワーク0104を介して管理端末0101から新規ボリューム0207のデプロイ要求を受領したことを契機として起動する。
本処理は、まず、管理ネットワーク0104を介して管理端末0101から、新規ボリューム0207のデプロイ要求及び、契約情報と、デプロイするボリューム0207の情報、当該ボリューム0207に接続するホスト0103の情報を受領する(S2000)。ここで受領する情報は、ステップS3000で顧客が入力した情報である。
次に、ボリューム0207をデプロイするための準備処理を実行する(S2001)。この準備処理は、図21に示す処理を実行し、ボリューム0207をデプロイするための前提条件を充足しているかの判断や、ボリュームデプロイ先のストレージ装置0102の選択、容量プール0206の選択、仮想ボリュームグループ0001の選択又は作成、ボリュームグループ0208の選択または作成といった処理を行い、装置IDと仮想ボリュームグループID、容量プールID、ボリュームグループIDを呼び出し元に報告する。そして、この準備処理が成功すれば、ステップS4003に進み、失敗すればステップS4009に進む(S2002)。
ステップS2003では、QoS初期調整部0402を起動し、新規ボリューム0207のデプロイに備えて、仮想ボリュームグループ0001を構成する各ボリュームグループ0208のQoS設定の調整を指示する。この際、新規ボリューム0207の容量や、仮想ボリュームグループ0001のID、新規ボリューム0207が属するボリュームグループ0208のIDも指示する。実際にボリューム0207をデプロイする前にQoS設定を調整するのは、ホスト0103とボリューム0207が接続された直後にホスト0103からIOが発行される可能性があるためである。実際にボリューム0207をデプロイ前にQoS設定を調整しておくことで、QoS設定が調整されていない状況で新規ボリューム0207に対して発行されたIO要求によって、新規ボリューム0207が属するボリュームグループ0208に属する他のボリューム0207へ発行されたIO要求が悪影響を受けることを防止する。初期調整の処理に成功すれば、ステップS2005に進み、失敗すればステップS2009に進む。
ステップS2005では、ステップS4002の準備処理で選択されたボリュームデプロイ先のストレージ装置0102に対して、新規ボリューム0207のデプロイを指示する。具体的には、ストレージ装置通信部0404を介して、ストレージ装置0102の管理システム通信部0305に対して、デプロイするボリューム0207の情報、当該ボリューム0207に接続するホスト0103の情報を送信し、処理結果を受領する。ボリューム0207の情報には、ボリューム容量とボリューム0207が属するボリュームグループ0208のIDが含まれる。ホスト0103の情報には、ホストWWNとLUNが含まれる。これ以外に、ホスト0103のOS(Operating System)種別や、ホスト0103との接続に用いる通信プロトコルやそれに不随する情報等を指定できるようにしてもよい。ボリュームデプロイ指示を受領した管理システム通信部0305は、IO制御部0303に対して新規ボリューム0207の作成を指示し、指示を受領したIO制御部0303は新規ボリューム0207を作成するとともにボリューム制御情報0307やボリュームグループ制御情報0309、ホスト制御情報を更新し、処理結果を報告する。ボリューム0207のデプロイに成功すれば、ステップS4007に進み、失敗すればステップS4009に進む(S2006)。
ステップS2007では、新規ボリューム0207の容量を、使用容量1205、1303として装置管理情報0408と仮想ボリュームグループ管理情報0409に反映させる。具体的には、装置管理情報0408のボリューム0207格納先の容量プール0206のエントリの使用容量として、新規ボリューム0207の容量を加算する。加えて、仮想ボリュームグループ管理情報0409の新規ボリューム0207が属するボリュームグループ0208のエントリの使用容量に、新規ボリューム0207の容量を加算する。
次に、デプロイ要求送信元の管理端末0101に対して、デプロイ成功を報告する(S2008)。
ステップS2009は、一連の処理の途中で何らかの問題が発生したときに実行され、ストレージシステム0000の状態を一連の処理を開始する前の状態までロールバックする。その後、デプロイ要求送信元の管理端末0101に対して、デプロイ失敗を報告する(S2010)。
図21は管理システム0100の管理操作制御部0406による新規ボリュームデプロイの準備処理フローを示す図である。本処理は、管理操作制御部0406のプログラムに含まれ、管理システム0100を構成する何らかのコンピュータによって実行される。本処理は、図20のステップS2001で呼び出される処理である。
本処理は、まず、管理端末0101から受領したボリュームデプロイ指示に、仮想ボリュームグループ0001の作成指示が含まれているかを確認し、含まれていればステップS2101に進み、含まれていなければ、ステップS2102に進む(S2100)。
ステップS9001では、管理端末0101から受領した契約情報に含まれる契約容量、契約性能、契約RAIDレベルなどの情報を用いて契約管理情報0407及び仮想ボリュームグループ管理情報0409に新規仮想ボリュームグループ0001のエントリを追加する。なお、この段階では、仮想ボリュームグループ管理情報0409に追加した仮想ボリュームグループ0001のエントリには、ボリュームグループ0208は一つも登録されていない状態となる。
ステップS2102では、ボリュームデプロイ先の仮想ボリュームグループ0001の使用容量にデプロイするボリューム0207の容量を加算した容量が、契約容量未満であるか判定し、契約容量未満であれば、ステップS2103に進み、契約容量以上であれば、ステップS2109に進む。仮想ボリュームグループ0001の使用容量は、ボリュームデプロイ指示に含まれる仮想ボリュームグループIDまたは、ステップS2101で新規作成した仮想ボリュームグループ0001のIDを元に、仮想ボリュームグループ管理情報0409を検索し、当該仮想ボリュームグループ0001を構成する各ボリュームグループ0208の使用容量1303の合計を計算することで得られる。契約容量は、契約管理情報0407の当該仮想ボリュームグループ0001のエントリの契約容量1102を参照することで得られる。
ステップS2103では、装置管理情報0408とストレージ装置稼働情報履歴情報0411、契約情報を元に、新規ボリューム0207のデプロイ先ストレージ装置0102と容量プール0206を決定する。この決定方法については、例えば、最初に、契約管理情報0407の当該仮想ボリュームグループ0001のエントリから契約RAIDレベル1104などIO性能以外のSLA条件を取得し、このSLA条件とデプロイするボリューム0207の容量の情報を使って装置管理情報0408を検索し、SLA条件を満たし、かつ、デプロイするボリューム0207を格納可能なストレージ装置0102及び容量プール0206のリストを取得する。その後、リストに含まれる各ストレージ装置0102について、装置管理情報0408やストレージ装置稼働情報履歴情報0411のCPU使用率1201、1502やメモリ使用率1202、1503を参照し、最も負荷の低いストレージ装置0102及び容量プール0206を決定する、といった方法が考えられる。
ステップS2104では、仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001のエントリを参照することで、当該仮想ボリュームグループ0001を構成するボリュームグループ0208又はストレージ装置0102として、ステップS2103で決定したストレージ装置0102が含まれるか確認し、含まれていなければステップS2105に進んで新規ボリュームグループ0208を作成し、含まれていればステップS2108に進む。
ステップS2105では、ステップS2103で決定したストレージ装置0102に対して、新規ボリュームグループ0208の作成を指示する。具体的には、ストレージ装置通信部0404を介して、ストレージ装置0102の管理システム通信部0305に対して、新規ボリュームグループ0208の作成を指示し、処理結果として作成されたボリュームグループ0208のIDを受領する。新規ボリュームグループ0208の作成指示を受領した管理システム通信部0305は、IO制御部0303に対して新規ボリュームグループ0208の作成を指示し、指示を受領したIO制御部0303は新規ボリュームグループ0208を作成するとともにボリュームグループ制御情報0309を更新し、処理結果として作成したボリュームグループID0800を報告する。ボリュームグループ0208の作成に成功すればステップS2107に進み、失敗すればステップS2109に進む(S2106)。
ステップS2107では、仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001のエントリに、ステップS9005で作成した新規ボリュームグループ0208を追加する。
次に、ボリュームデプロイ指示に含まれる仮想ボリュームグループID又はステップS2101で新規作成した仮想ボリュームグループ0001のID、ステップS2103で決定したストレージ装置0102のID及び容量プール0206のID、ステップS2104で確認したボリュームグループ0208のID又はステップS9005で新規作成したボリュームグループ0208のIDを呼び出し元処理に報告する(S2108)。
ステップS2109は、一連の処理の途中で何らかの問題が発生したときに実行され、ストレージシステム0000の状態を一連の処理を開始する前の状態までロールバックする。その後、呼び出し元処理に対して、処理失敗を報告する(S2110)。
図22は管理システム0100のQoS初期調整部0402によるQoS初期調整処理フローを示す図である。本処理は、QoS初期調整部0402のプログラムに含まれ、管理システム0100を構成する何らかのコンピュータによって実行される。本処理は、図20のステップS2003によって起動される。
本処理は、まず、呼び出し元からQoS初期調整指示として、新規ボリューム0207の容量と、仮想ボリュームグループ0001のID、新規ボリューム0207が属するボリュームグループ0208のIDを受領する(S2200)。次に、仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001のエントリを参照し、当該仮想ボリュームグループ0001を構成するボリュームグループ0208の個数が1であればステップS2202に進み、2以上であればステップS2203に進む(S2201)。
ステップS2202に進んだ場合、契約管理情報0407の当該仮想ボリュームグループ0001のエントリを参照し、契約性能1103の上限IOPSを取得し、取得した上限IOPSを仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001のエントリのQoS設定値1307として設定する。これは、ボリュームグループ0208が1しか存在しないため、契約性能1103の上限IOPSを、当該ボリュームグループ0208のみで消費してよいためである。なお、ボリュームグループ0208が2以上ある場合は、各ボリュームグループ0208に上限IOPSを分配する必要があるが、これはステップS2203で説明する。処理が終わると、ステップS2207に進む。
ステップS2203では、仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001のエントリを参照し、当該仮想ボリュームグループ0001を構成する各ボリュームグループ0208について、使用容量1303と平均IOPS1304とをそれぞれ合計し、平均IOPS1304の合計を使用容量1303の合計で割ることで、使用容量あたりの平均IOPSを計算する。次に、使用容量あたりの平均IOPSに、新規ボリューム0207の容量を掛けることで、新規ボリューム0207の平均IOPSを推定する(S2204)。
次に、契約管理情報0407の当該仮想ボリュームグループ0001のエントリを参照し、契約性能1103の上限IOPSを取得し、当該仮想ボリュームグループ0001を構成する各ボリュームグループ0208の平均IOPSに比例するように上限IOPSを各ボリュームグループ0208に分配する(S2205)。この際、新規ボリューム0207が属するボリュームグループ0208は、ステップS2204で推定した新規ボリューム0207の平均IOPSが追加で発生すると仮定して計算する。なお、ステップS2203~S2205で説明した分配方法は一例であり、その他の方法を用いて分配を行ってもよい。
次に、ステップS2205で各ボリュームグループ0208に分配した上限IOPSを、当該ボリュームグループ0208のQoS設定値として、仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001のエントリのQoS設定値1307を更新する(S2206)。処理が終わると、ステップS2207に進む。
ステップS2207では、当該仮想ボリュームグループ0001を構成する各ストレージ装置0102に対して、各ボリュームグループ0208のQoS設定値の反映指示を送信する。具体的には、ストレージ装置通信部0404を介して、各ストレージ装置0102の管理システム通信部0305に対して、ボリュームグループ0208のIDと、QoS設定値を送信し、処理結果を受領する。QoS設定値の反映指示を受領した管理システム通信部0305は、IO制御部0303に対してQoS設定値の変更を指示し、指示を受領したIO制御部0303はボリュームグループ制御情報0309の当該ボリュームグループ0208のQoS設定801を更新し、処理結果を報告する。全てのストレージ装置0102についてQoS設定値の反映が成功すれば、ステップS2209に進み、失敗したストレージ装置0102があればステップS2210に進む(S2208)。
ステップS2209では、呼び出し元に処理成功を報告する。ステップS2210は、一連の処理の途中で何らかの問題が発生したときに実行され、ストレージシステム0000の状態を一連の処理を開始する前の状態までロールバックする。その後、デプロイ要求送信元の管理端末0101に対して、デプロイ失敗を報告する(S2211)。
図23は管理システム0100のQoS定期調整部0403によるQoS定期調整の全体処理フローを示す図である。本処理は、QoS定期調整部0403のプログラムに含まれ、管理システム0100を構成する何らかのコンピュータによって実行される。本処理は、一定時間毎に起動される。
本処理では、まず仮想ボリュームグループ管理情報0409を参照し、以降の処理の処理対象として各仮想ボリュームグループ0001を順番に選択する(S2300)。
次に、選択した仮想ボリュームグループ0001について、図24の処理を実行し、QoS設定値の調整を行う(S2301)。
次に、仮想ボリュームグループ管理情報0409の全仮想ボリュームグループ0001について処理が完了したか否かを確認し、完了していれば処理を終了し、完了していなければステップS2300に戻り、次の仮想ボリュームグループ0001を選択する(S2302)。
図24は管理システム0100のQoS定期調整部0403によるQoS定期調整の処理フローを示す図である。本処理は、QoS定期調整部0403のプログラムに含まれ、管理システム0100を構成する何らかのコンピュータによって実行される。本処理は、図23のステップS2301によってストレージステムを構成する仮想ボリュームグループ0001毎に呼び出される。
本処理では、まず仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001のエントリと、契約管理情報0407の当該仮想ボリュームグループ0001のエントリを参照し、当該仮想ボリュームグループ0001を構成する各ボリュームグループ0208の平均IOPS1304の合計値が、契約性能1103の上限IOPSよりも小さいか否かを判断し、小さければステップS2402に進み、そうでなればステップS2401に進む(S2400)。
ステップS2401では、仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001のエントリを参照し、当該仮想ボリュームグループ0001を構成する各ボリュームグループ0208の平均レスポンス1306が均一になるように、QoS設定値1307を調整する。具体的には、例えば、平均レスポンス1306が最も低いボリュームグループ0208のQoS設定値1307を所定量減じ、減じた分だけ、平均レスポンス1306が最も高いボリュームグループ0208のQoS設定値1307を増やすという方法が考えられる。処理が終わると、ステップS2405に進む。
本ステップにおいて、各ボリュームグループ0208の平均レスポンス1306を均一にする理由は以下である。ステップS2400での判断により、本ステップに到達している場合、ホスト0103は接続されている各ストレージ装置0102に対して契約性能1103の上限IOPS以上のIOを発行していることになる。各ボリュームグループ0208にはQoSが設定されているため、ストレージ装置0102は、当該ボリュームグループ0208に属するボリューム0207に対して発行されたIO処理を意図的に遅延させることでIOPSが上限を超えないように制御する。このQoS制御による処理遅延の結果、当該ボリュームグループ0208の平均レスポンス1306は、ホスト0103が発行したIOの上限IOPSからの超過度合いに応じて大きくなる。本ステップは、各ストレージ装置0102のQoS制御による意図なIO処理遅延が各ボリュームグループ0208に対して均一に動作している状態とするために、各ボリュームグループ0208の平均レスポンス1306が均一になるように各ボリュームグループ0208の上限IOPSを分配している。
ステップS2402では、仮想ボリュームグループ管理情報0409を参照し、当該仮想ボリュームグループ0001を構成する各ボリュームグループ0208について、平均IOPS1304がQoS設定値1307以上であるボリュームグループ0208が存在するか確認し、存在すればステップS2404に進み、存在しなければステップS2403に進む。
本ステップで、平均IOPS1304がQoS設定値1307以上であるボリュームグループ0208が存在した場合は、各ボリュームグループ0208への上限IOPSの分配が適切ではなく、一部のボリュームグループ0208において、ストレージ装置0102のQoS制御による意図的なIO処理遅延が発生していることを意味する。ステップS2400での判断により、仮想ボリュームグループ0001全体の平均IOPS1304は契約性能の上限IOPS未満であるため、上限IOPSを適切に分配すればIO処理遅延は解消される。
ステップS2403では、仮想ボリュームグループ管理情報0409及び契約管理情報0407を参照し、当該仮想ボリュームグループ0001を構成する各ボリュームグループ0208について、当該ボリュームグループ0208の平均レスポンス1306が契約性能1103の平均レスポンスを超過しているボリュームグループ0208が存在するか否かを判断し、存在すればステップS2408に進み、存在しなければステップS2404に進む。
ステップS2402での判断により、本ステップに到達している場合、いずれのボリュームグループ0208でもQoS制御によるIO処理遅延は発生していない。それにも関わらず、ボリュームグループ0208の平均レスポンス1306が、契約性能1103の平均レスポンスを超過しているボリュームグループ0208が存在する状況は、ストレージ装置0102自体の過負荷が発生していると推定される。逆に、超過しているボリュームグループ0208が存在しない場合は、契約性能1103を全て充足している状態と言える。
ステップS2408では、ストレージ装置0102自体の過負荷を解消するために、図25の処理を呼び出して、平均レスポンス1306が、契約性能1103の平均レスポンスを超過しているボリュームグループ0208に属するボリューム0207を、他のストレージ装置0102にマイグレーションする。なお、契約性能1103の平均レスポンスを超過しているボリュームグループ0208が複数存在する場合は、それぞれに対して図25の処理を呼び出してもよいし、平均レスポンス1306が最も高いボリュームグループ0208に対してのみ呼び出してもよい。
ステップS2404では、当該仮想ボリュームグループ0001を構成する各ボリュームグループ0208の平均IOPSに比例するように契約情報の上限IOPSを各ボリュームグループ0208に分配し、分配した上限IOPSを、当該ボリュームグループ0208のQoS設定値1307として、仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001のエントリを更新する。
次に、当該仮想ボリュームグループ0001を構成する各ストレージ装置0102に対して、各ボリュームグループ0208のQoS設定値の反映指示を送信する(S2405)。具体的には、ストレージ装置通信部0404を介して、各ストレージ装置0102の管理システム通信部0305に対して、ボリュームグループ0208のIDと、QoS設定値を送信し、処理結果を受領する。
QoS設定値の反映指示を受領した管理システム通信部0305は、IO制御部0303に対してQoS設定値の変更を指示し、指示を受領したIO制御部0303はボリュームグループ制御情報0309の当該ボリュームグループ0208のQoS設定801を更新し、処理結果を報告する。全てのストレージ装置0102についてQoS設定値の反映が成功すれば、本処理は終了し、失敗したストレージ装置0102があればステップS2407に進む(S2406)。
ステップS2407は、一連の処理の途中で何らかの問題が発生したときに実行され、ストレージシステム0000の状態を一連の処理を開始する前の状態までロールバックする。その後、本処理を終了する。
図25は管理システム0100のQoS定期調整部0403によるボリュームマイグレーション処理フローを示す図である。本処理は、QoS定期調整部0403のプログラムに含まれ、管理システム0100を構成する何らかのコンピュータによって実行される。本処理は、図24のステップS2408によって呼び出される。
本処理は、まず図26の処理を呼び出し、ボリュームマイグレーションの準備を行い、処理結果として、移動対象のボリューム0207のIDと、移動先ストレージ装置0102のID、移動先容量プールのID、移動先ボリュームグループ0208のID、各ボリュームグループ0208への上限IOPSの分配結果を受領する(S2500)。
そして、準備処理に成功していれば、ステップS2502に進み、失敗していればステップS2509に進む(S2501)。
ステップS2502では、移動先ストレージ装置0102に対して、上限IOPSの分配結果をQoS設定値として反映するように指示する。具体的には、ストレージ装置通信部0404を介して、移動先ストレージ装置0102の管理システム通信部0305に対して、ボリュームグループ0208のIDと、QoS設定値を送信し、処理結果を受領する。QoS設定値の反映指示を受領した管理システム通信部0305は、IO制御部0303に対してQoS設定値の変更を指示し、指示を受領したIO制御部0303はボリュームグループ制御情報0309の当該ボリュームグループ0208のQoS設定801を更新し、処理結果を報告する。
移動先ストレージ装置0102に対してのみ、実際のボリュームマイグレーションに先立ってQoS設定値を反映させるのは、ボリュームマイグレーション中や、直後にホスト0103からマイグレーション対象のボリューム0207に対して発行されたIO要求によって、移動先ボリュームグループ0208に属する他のボリューム0207への悪影響を防止するためである。
反映に成功すれば、ステップS2504に進み、失敗すればステップS2509に進む(S2503)。
ステップS2504では、移動対象のボリューム0207が属するストレージ装置0102(移動元ストレージ装置)に対して、ボリュームマイグレーション実行を指示する。具体的には、ストレージ装置通信部0404を介して、移動元ストレージ装置0102の管理システム通信部0305に対して、移動対象のボリュームIDと移動先ストレージ装置0102のID、移動先容量プール0206のIDを送信し、処理結果を受領する。ボリュームマイグレーション指示を受領した管理システム通信部0305は、IO制御部0303に対してボリュームマイグレーション実行を指示する。指示を受領したIO制御部0303は、必要に応じてストレージネットワーク0106や管理ネットワーク0104を介して、移動先ストレージ装置0102のIO制御部0303と通信し、制御情報やボリューム0207に格納されたデータを転送することで、ボリュームマイグレーションに関する処理を実行し、処理結果を報告する。ボリュームマイグレーションの具体的な処理内容は、本発明に関わるものではなく、公知技術であるため、これ以上の詳細な説明は省略する。
ボリュームマイグレーションに成功すれば、ステップS2506に進み、失敗すればステップS2509に進む(S2505)。
次に、当該仮想ボリュームグループ0001を構成する各ストレージ装置0102に対して、各ボリュームグループ0208に分配した上限IOPSをQoS設定値として反映の指示を送信する(S2506)。具体的には、ストレージ装置通信部0404を介して、各ストレージ装置0102の管理システム通信部0305に対して、ボリュームグループ0208のIDと、QoS設定値として当該ボリュームグループ0208に分配された上限IOPSを、それぞれ送信し、処理結果を受領する。QoS設定値の反映指示を受領した管理システム通信部0305は、IO制御部0303に対してQoS設定値の変更を指示し、指示を受領したIO制御部0303はボリュームグループ制御情報0309の当該ボリュームグループ0208のQoS設定801を更新し、処理結果を報告する。全てのストレージ装置0102についてQoS設定値の反映が成功すれば、ステップS2508に進み、失敗したストレージ装置0102があればステップS2509に進む(S2507)。
ステップS2508では、仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001を構成する各ボリュームグループ0208について、ステップS2500で分配した上限IOPSを使って、各ボリュームグループ0208のQoS設定値1307を更新する。その後、本処理を終了する。
ステップS2509は、一連の処理の途中で何らかの問題が発生したときに実行され、ストレージシステム0000の状態を一連の処理を開始する前の状態までロールバックする。その後、本処理を終了する。
図26は管理システム0100のQoS定期調整部0403によるボリュームマイグレーション準備処理フローを示す図である。本処理は、QoS定期調整部0403のプログラムに含まれ、管理システム0100を構成する何らかのコンピュータによって実行される。本処理は、図25のステップS2500によって呼び出される。
本処理は、まず移動元ストレージ装置0102の移動元ボリュームグループ0208からボリュームマイグレーションで移動する対象となるボリューム0207を選択する(S2600)。具体的には、例えばボリューム稼働情報履歴情報0410を元に、当該ボリュームグループ0208に属するボリューム0207から、平均レスポンス1407が最も大きいボリューム0207を移動対象として選択する。この際、ボリューム0207毎に時間方向で何らかの集計処理や分析処理を行って算出した平均レスポンスの定常値を使ってもよい。
次に、契約管理情報0407と装置管理情報0408、ストレージ装置稼働情報履歴情報0411、ボリューム稼働情報履歴情報0410をもとに、ボリュームマイグレーションの移動先のストレージ装置0102と容量プール0206を選択する(S2601)。具体的には、例えば、最初に、契約管理情報0407の当該仮想ボリュームグループ0001のエントリから契約RAIDレベル1104などIO性能以外のSLA条件を取得し、このSLA条件と移動するボリューム0207の容量の情報を使って装置管理情報0408を検索し、SLA条件を満たし、かつ、移動するボリューム0207を格納可能なストレージ装置0102及び容量プール0206のリストを取得する。なお、移動するボリューム0207の容量は、ボリューム稼働情報履歴情報0410の当該ボリューム0207のタイムスタンプ1403が最も新しいエントリを参照することで取得できる。その後、リストに含まれる各ストレージ装置0102について、装置管理情報0408やストレージ装置稼働情報履歴情報0411のCPU使用率1502やメモリ使用率1503を参照し、最も負荷の低いストレージ装置0102及び容量プール0206を決定する、といった方法が考えられる。
次に、仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001のエントリを参照することで、当該仮想ボリュームグループ0001を構成するボリュームグループ0208又はストレージ装置0102として、ステップS2601で決定したストレージ装置0102が含まれるか確認し、含まれていなければステップS2603に進んで新規ボリュームグループ0208を作成し、含まれていればステップS2606に進む。
ステップS2603では、ステップS2601で決定したストレージ装置0102に対して、新規ボリュームグループ0208の作成を指示する。具体的には、ストレージ装置通信部0404を介して、ストレージ装置0102の管理システム通信部0305に対して、新規ボリュームグループ0208の作成を指示し、処理結果として作成されたボリュームグループ0208のIDを受領する。新規ボリュームグループ0208の作成指示を受領した管理システム通信部0305は、IO制御部0303に対して新規ボリュームグループ0208の作成を指示し、指示を受領したIO制御部0303は新規ボリュームグループ0208を作成するとともにボリュームグループ制御情報0309を更新し、処理結果として作成したボリュームグループIDを報告する。ボリュームグループ0208の作成に成功すればステップS2605に進み、失敗すればステップS9010に進む(S2604)。
ステップS2605では、仮想ボリュームグループ管理情報0409の当該仮想ボリュームグループ0001のエントリに、ステップS2603で作成した新規ボリュームグループを追加する。
ステップS2606では、ボリューム稼働情報履歴情報0410を参照し、移動対象ボリューム0207の平均IOPS1405を取得する。この際、時間方向で何らかの集計処理や分析処理を行って算出した平均IOPSの定常値を使ってもよい。
次に、ステップS2606で取得した移動対象ボリューム0207の平均IOPS1405をもとに、ボリュームマイグレーション実行後の各ボリュームグループ0208の平均IOPSを推定する(S2607)。具体的には、ステップS2606で取得した移動対象ボリューム0207の平均IOPSが、移動元ストレージ装置0102のボリュームグループ0208から、移動先ストレージ装置0102のボリュームグループ0208に移動するものとして、仮想ボリュームグループ管理情報0409の各ボリュームグループ0208の平均IOPSの値を加減算したものをボリュームマイグレーション実行後の各ボリュームグループ0208の平均IOPSと推定する。
次に、契約管理情報0407の当該仮想ボリュームグループ0001のエントリを参照し、契約性能1103の上限IOPSを取得し、ステップS2607で推定した各ボリュームグループ0208の平均IOPSに比例するように上限IOPSを各ボリュームグループ0208に分配する(S2608)。
最後に、本処理の実行結果として、ステップS2600で選択した移動対象ボリュームのID、ステップS2601で選択した移動先ストレージ装置0102のIDと容量プール0206のID、ステップS2602で確認した移動先ボリュームグループ0208のID又はステップS2605で作成したボリュームグループ0208のID、ステップS2608による上限IOPSの各ボリュームグループ0208への分配結果を、呼び出し元処理に報告する。
このように構成される本実施形態によれば、複数のストレージ装置に跨がった仮想ボリュームグループ単位でのQoS機能を実現することができる。
以上、本発明の主な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態のみに限定する趣旨ではない。必ずしも、説明した全ての構成を備えている必要もなく、また、ある実施例の構成の一部を他の実施例の構成に置き換えたり、加えることも可能である。同様に、各実施例の一部構成について必要に応じて変更・削除することも可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、Go、perl、Shell、PHP、Java(登録商標)、Python等の広範囲のプログラム又はスクリプト言語で実装できる。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。