以下に、本願の開示するストレージ管理装置、ストレージ管理方法及びストレージ管理プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するストレージ管理装置、ストレージ管理方法及びストレージ管理プログラムが限定されるものではない。
図1は、実施例1に係るストレージシステムの概略構成図である。図1に示すように、本実施例に係るストレージシステムは、運用管理サーバ1、ストレージ装置2、操作端末3及び業務サーバ4を有している。ここで、図1では、1台のストレージ装置2を記載しているが、ストレージ装置2の数に制限は無い。また、業務サーバ4も1台のみ記載しているが、業務サーバ4の数にも制限は無い。
操作端末3は、ネットワークを介して運用管理サーバ1と接続している。操作端末3は、ストレージ装置2に対する処理の指示などを運用管理サーバ1へ送信する。また、操作端末3は、運用管理サーバ1から送信されたメッセージなどをモニタに表示して操作者への通知を行う。
運用管理サーバ1は、ストレージ装置2の運用及び管理を行う。運用管理サーバ1は、Quality of Service(QoS)制御プログラムやストレージ管理プログラムを実行する。この運用管理サーバ1が、「ストレージ管理装置」の一例にあたる。
具体的には、運用管理サーバ1は、ストレージ装置2におけるQoSの制御等を行う。QoSは、ストレージ装置2が安定した性能を維持するための性能設定機能であり、後述するボリュームの帯域幅の調整等を行う。また、運用管理サーバ1は、操作端末3から入力された命令に従いストレージ装置2を制御する。例えば、運用管理サーバ1は、操作端末3から入力されたRAIDを構成するようにストレージ装置2に指示する。
ストレージ装置2は、業務サーバ4上で動作するアプリケーションからの指示を受けて、QoSを適用してデータの読み出しや書き込みを行う。また、ストレージ装置2は、ボリュームの帯域幅の調整などの指示を運用管理サーバ1から受けて、QoSの制御を行う。
業務サーバ4は、業務用のアプリケーションを実行する。アプリケーションを実行するにあたり、業務サーバ4は、ストレージ装置2に対してデータの読み出しや書き込みを行う。業務サーバ4が実行するアプリケーションは、ストレージ装置2とデータの送受信を行うアプリケーションであれば特に制限はない。
図2は、ストレージシステムのハードウェア構成図である。図2では、ストレージ装置2として、ストレージ装置21及び22が配置されている状態を示している。また、業務サーバ4として、業務サーバ41及び42が配置されている状態を示している。
業務サーバ4は、Fiber Channel-Host Bus Adapter(FC−HBA)411及び412、並びに、Internet Small Computer System Interface(iSCSI)413及び414を有している。ここで、本実施例では、FC−HBA411及び412の2つを記載しているが、FC−HBAは、業務サーバ4にいくつ搭載されてもよい。また、iSCSI413及び414の2つを記載しているが、iSCSIは、業務サーバ4にいくつ搭載されてもよい。
FC−HBA411及び412は、ファイバチャネルを用いたデータ通信の通信インタフェースである。FC−HBA411及び412は、FCスイッチ51及び52にそれぞれ接続されている。
iSCSI413及び414は、iSCSIの規格に準拠したデータ通信の通信インタフェースである。iSCSI413及び414は、ネットワークスイッチ61及び62にそれぞれ接続されている。
FCスイッチ51及び52は、ストレージ装置2と業務サーバ4との間のファイバチャネルを用いた通信の中継を行う。FCスイッチ51及び52は、FC−HBA411及び412とFC−CA(Channel Adapter)211とを接続する。
ネットワークスイッチ61及び62は、ストレージ装置2と業務サーバ4との間のiSCSIを用いた通信の中継を行う。ネットワークスイッチ61及び62は、iSCSI413及び414とiSCSI−CA212とを接続する。
ストレージ装置2は、Controller Module(CM)201及び202、並びに、ディスク(Disk)203を有している。
CM201及び202は、同様の機構を有している。そこで、ここでは、CM201を例に説明する。
CM201は、FC−CA211、iSCSI−CA212、Central Processing Unit(CPU)213、メモリ(memory)214、Network Interface Card(NIC)215及びSerial Attached SCSI(SAS)216を有している。
FA−CA211、iSCSI−CA212、メモリ214、NIC215及びSAS216は、CPU213に接続されている。
CPU213は、FC−CA211及びiSCSI−CA212を介して業務サーバ4との間でデータの送受信を行う。
また、CPU213は、SAS216を介してディスク203に対するデータの読み出し及び書き込みを行う。
また、CPU213は、NIC215を介して、操作端末3及び運用管理サーバ1との間で通信を行う。例えば、CPU213は、後述する帯域幅の調整の指示を運用管理サーバ1から受信すると、指示に従いディスク203の帯域幅を調整する。
運用管理サーバ1は、NIC11、メモリ12、CPU13及びHDD14を有する。HDD14は、QoS制御プログラムやストレージ管理プログラムを含む各種プログラムを格納する。NIC11は、ストレージ装置2及び操作端末3との間の通信のためのインタフェースである。
CPU13は、HDD14から各種プログラムを読み出し、メモリ12上に展開してQoS制御プログラムやストレージ管理プログラムなどを実行する。
ストレージ装置2には、ディスク203が複数台搭載されている。図2では、複数台のディスク203によりRAIDグループが形成されボリューム231として構築されている。ボリューム231は、論理ボリュームである。このボリューム231が、「記憶領域」の一例にあたる。ただし、本実施例に限定されず、ディスク203は、RAIDグループが構築されていなくてもよい。また、図2では、1つのRAIDグループを1つのボリューム231としたが、1つのRAIDグループの中に複数のボリューム231が形成されてもよい。さらに、複数のボリューム231を含むTierプール232が形成される。Tierプール232は、階層化されたストレージ装置2における階層を表す。Tierプール232は、高速の階層、中速の階層、低速の階層などに区別される。このTierプール232が、「記憶領域群」の一例にあたる。
ここで、CPU213によるデータの書き込み及び読み出しについて説明する。CPU213は、業務サーバ4上で動作する業務用アプリケーションからデータの読み出しの命令であるリードコマンドや書き込みの命令であるライトコマンドを受信する。このとき、リードコマンドやライトコマンドは、例えば、FCスイッチ51のポート及びFC−CA211のポートを経由してCPU213へ送信される。そして、CPU213は、受信したコマンドに従って、ディスク203のボリューム231に対するデータの読み出しや書き込みを行う。このとき、データは、RAIDグループの構成にしたがって、ボリューム231に対して書き込みや読み出しが行われる。また、ここでは、CM201のCPU213がデータの読み書きの処理を行う場合で説明したが、CM202のCPU213においても、同様の処理が行われる。
すなわち、データの書き込みや読み出しといったデータ転送の場合に、FCスイッチ51のポート、FC−CA211やiSCSI−CA212のポート、データの処理を行う処理プロセッサとなるCPU213、及び、ボリューム231において競合が発生する。
データ転送において各リソースで競合が発生してしまうと、データ転送の性能が落ちる。そこで、競合が発生しているリソースを使用する伝送路において、その伝送路を使用するボリューム231の帯域幅を調整することで、リソースにおける競合を解消することができ、データ転送の性能を高い状態で維持することができる。そこで、次に、ボリューム231の帯域幅の調整について説明する。以下では、業務サーバ4とストレージ装置2とは、FCスイッチ51を介して接続されている場合で説明する。また、以下では、Tierプール232をボリューム231の帯域調整の単位として説明するが、帯域調整の単位はこれに限らず、例えば、RAIDグループやストレージ装置2の全体であってもよい。
図3は、実施例1に係る運用管理サーバ及びストレージ装置のブロック図である。運用管理サーバ1は、最大性能算出部101、帯域幅管理部102、監視部103及び記憶部104を有している。また、ストレージ装置2は、性能情報取得部251及び帯域幅制御部252を有している。また、ストレージ装置2は、ディスク203から生成されたボリューム231を複数含むTierプール232を有している。
記憶部104は、QoS設定テーブル141、ボリューム性能情報ファイル142及びTier性能情報ファイル143をそれぞれ記憶する所定の情報記憶領域を有している。なお、情報記憶領域は、各テーブルそのものを記憶している必要はなく、制御時にテーブル化するための情報を記憶しておいてもよい。記憶部104の機能は、例えば、図2のHDD14で実現される。
図4は、QoS設定テーブルの一例の図である。本実施例では、QoS設定テーブル141には、ボリューム識別情報、Tierプール番号及び帯域幅が対応付けられて登録されている。
ボリューム識別情報は、ボリューム231を一意に特定する情報である。本実施例では、ボリューム識別情報は、ストレージ装置2の番号及びボリューム231の番号により表されている。例えば、図2のストレージ装置21を1番、ストレージ装置22を2番とすると、「Storage=1,VolNo=1」は、ストレージ装置21のボリューム番号が1番のボリューム231を表している。
また、Tierプール番号は、対応するボリューム識別情報を有するボリューム231の属するTierプール232の識別情報である。
また、帯域幅は、対応するボリューム識別情報を有するボリューム231に設定されている帯域幅である。図4では、帯域幅は、スループットを表す毎秒のデータ量(MB Per Second)、及び読み込み/書き込み回数(IOPS:Input Output Per Second)の2種類で表される。
図5は、ボリューム性能情報ファイルの一例の図である。ボリューム性能情報ファイル142は、各ボリューム231の実測の性能を表す情報が登録される。本実施例では、ボリューム性能情報ファイル142には、測定を行った性能測定日時と共に、ボリューム識別情報、実測レスポンスタイム、実測スループット、実測IOPS、実測キャッシュヒット率及び実測ディレイタイムが対応付けられて登録されている。以下では、ボリューム識別情報、実測レスポンスタイム、実測スループット、実測IOPS、実測キャッシュヒット率及び実測ディレイタイムをまとめて、「ボリュームの性能情報」という場合がある。
実測レスポンスタイムは、対応するボリューム識別情報を有するボリューム231にデータの読み書きを行った際に計測したレスポンスタイムである。実測スループットは、対応するボリューム識別情報を有するボリューム231にデータの読み書きを行った際に計測したスループットである。実測IOPSは、対応するボリューム識別情報を有するボリューム231にデータの読み書きを行った際に計測したIOPSである。実測キャッシュヒット率は、対応するボリューム識別情報を有するボリューム231にデータの読み書きを行った際に計測したキャッシュヒット率である。実測ディレイタイムは、対応するボリューム識別情報を有するボリューム231にデータの読み書きを行った際に計測したディレイタイムである。
図6は、Tier性能情報ファイルの一例の図である。Tier性能情報ファイル143は、各Tierプール232の実測の性能を表す情報が登録される。本実施例では、Tier性能情報ファイル143には、測定を行った性能測定日時と共に、Tierプール232であることを表すリソース種別、Tierプール232の識別情報、実測スループット、実測IOPS及びBusy率が対応付けられて登録される。以下では、Tier識別情報、実測スループット及び実測IOPSをまとめて、「Tierプールの性能情報」という場合がある。
Tierプール232の識別情報は、どのTierプール232であるかを一意に特定する情報である。実測スループットは、対応する識別情報を有するTierプール232にデータの読み書きを行った際に計測したスループットである。実測IOPSは、対応する識別情報を有するTierプール232にデータの読み書きを行った際に計測したIOPSである。Busy率は、対応する識別情報を有するTierプール232にデータの読み書きを行った際のBusy率である。
図3に戻って説明を続ける。監視部103は、操作者からの性能収集開始の指示を操作端末3から受ける。その後、監視部103は、ボリューム231及びTierプール232の性能情報の性能情報取得部251からの定期的な受信を開始する。ここで、監視部103は、Tierプール232のBusy率ではなく、Tierプール232に含まれるディスク203のBusy率を取得する。そして、監視部103は、Tierプール232に含まれる各ディスク203のBusy率を用いてTierプール232のBusy率を算出する。
本実施例では、監視部103は、あるTierプール232に含まれる全てのディスク203のBusy率の単純平均を求め、その算出結果をそのTierプール232のBusy率とする。ただし、Tierプール232のBusy率の算出方法はこれに限らない。
例えば、監視部103は、Busy率を次のような方法で求めてもよい。まず、監視部103は、Tierプール232に含まれるRAIDグループ毎に、そのRAIDグループに含まれる全てのディスク203のBusy率の単純平均を求める。そして、監視部103は、RAIDグループ毎に求めたBusy率に予め決められた係数を乗算した加重平均をTierプール232のBusy率とすることもできる。
そして、監視部103は、受信した各ボリューム231の性能情報をボリューム性能情報ファイル142に書き込む。また、監視部103は、受信したTierプール232の性能情報及び算出したBusy率をTier性能情報ファイル143に書き込む。この監視部103が、「負荷情報取得部」の一例にあたる。
ここで、本実施例では、図5及び図6に示すボリューム性能情報ファイル142及びTier性能情報ファイル143を用いて説明したが、これらのテーブルは他の形式を有していてもよい。例えば、Tierプール232の識別情報を表すテーブル、RAIDグループとTierプール232との関係を表すテーブル、ディスク203とRAIDグループとの関係を表すテーブルを記憶部104に記憶させる。さらに、各ディスク203のBusy率を格納するテーブルを記憶部104に記憶させる。そして、監視部103は、各ディスク203のBusy率を書き込み、最大性能算出部101がTierプール232のBusy率を算出してもよい。
最大性能算出部101は、操作端末3を用いた操作者からの入力や設定ファイルなどにより、IOPS又はスループットのいずれかを帯域調整の指標とするかの指示を取得する。以下では、帯域調整の指標として、スループットが指定された場合で説明する。また、最大性能算出部101は、操作者からの入力などにより、帯域幅の調整を行うTierプール232を特定する。以下では、ボリューム231の帯域幅の調整の対象として指定されたTierプール232を、「調整対象のTierプール232」と呼ぶ。ここで、本実施例は、指定されたTierプール232に含まれるボリューム231の帯域幅の調整を行う場合で説明するが、例えば、1つずつTierプール232を選択していき、全てのTierプール232についてボリューム231の帯域幅の調整を行ってもよい。
最大性能算出部101は、調整対象のTierプール232の実測スループットの情報をTier性能情報ファイル143から取得する。また、最大性能算出部101は、調整対象のTierプール232のBusy率をTier性能情報ファイル143から取得する。
そして、最大性能算出部101は、次の数式1を用いて調整対象のTierプール232の最大転送能力、すなわち最大帯域幅を算出する。この最大転送能力が、「全体帯域幅」の一例にあたる。
ここで、BMAXは、Tierプール232の最大転送能力である。また、Bは、Tierプール232の実測性能であり、本実施例では実測スループットである。また、Uは、Tierプール232のBusy率である。さらに、γは、0より大きく1以下の定数である。
ここで、係数γがなければ、数式1において実測性能とBusy率とは比例し、Busy率が100%になった場合に最大転送能力となる。しかし、実際にはBusy率が高くなると性能(スループット)は頭打ちとなる。そこで、Busy率は、Tierプール232に係る負荷の負荷パターンによって異なるが、概ね80%で転送能力が最大となると考えられる。そこで、γ=0.8とされることが好ましい。
そして、最大性能算出部101は、算出した調整対象のTierプール232の最大転送能力の情報を、調整対象のTierプール232の識別情報とともに帯域幅管理部102に通知する。この最大性能算出部101が、「算出部」の一例にあたる。
帯域幅管理部102は、調整対象のTierプール232の最大転送能力の情報の通知を、調整対象のTierプール232の識別情報とともに最大性能算出部101から受信する。そして、帯域幅管理部102は、調整対象のTierプール232に含まれるボリューム231をQoS設定テーブル141から特定する。次に、帯域幅管理部102は、ボリューム性能情報ファイル142から、調整対象のTierプール232に含まれる各ボリューム231が使用帯域を取得する。ここでは、帯域幅管理部102は、実測性能のスループットを使用帯域として取得する。
そして、帯域幅管理部102は、次の数式(2)を用いて各ボリューム231に対する帯域幅の割り当てを決定する。
個別帯域幅=α×使用帯域幅+β ・・・(2)
ここで、個別帯域幅とは、各ボリューム231それぞれに対して割り当てる帯域幅である。具体的には、帯域幅管理部102は、各ボリューム231の個別帯域幅の合計が調整対象のTierプール232の処理能力に等しくなるように各ボリューム231に対する個別帯域幅を決定する。すなわち、帯域幅管理部102は、次の数式3を満たすように個別帯域幅を決定する。
調整対象のTierプール処理能力=個別帯域幅の合計=α×使用帯域幅の合計+β×ボリューム数 ・・・(3)
ここで、βは、直近の使用帯域幅が0の場合に予め割り当てておく帯域といえる。すなわち、このβがあることで、調整対象のTierプール232を使用するアプリケーションなどが起動しておらず使用帯域幅が0であっても、調整対象のTierプール232への割当帯域がβとして確保される。
ここで、αを予め設定ファイルなどに定義しておき、各ボリューム231の個別帯域幅の合計が調整対象のTierプール232の処理能力になるようにβを調整して個別帯域幅を決定する方法も考えられる。この場合、αは固定値であるので、ボリューム数が増えるとβが減少する。このように、ボリューム数が増えβが減ると、アプリケーションが起動できなくなるおそれがある。また、逆にβの値を大きくするためにαの値を小さくすると、個別帯域幅において使用帯域幅の差が表れにくくなり、使用帯域幅に応じた割り当てが困難となる。このような理由から、αを事前に決定することは困難である。
そこで、本実施例に係る帯域幅管理部102は、予め設定ファイルなどに定義されたβを用いて、各ボリューム231の割当帯域の合計がTierプール232の処理能力に等しくなるようにαを調整する。このαが、「係数」の一例にあたる。
ここで、本実施例では、帯域幅管理部102は、βとして業務アプリケーションの起動に用いる最低の帯域幅(以下では、「最低保証帯域幅」という。)を用いる。これにより、ストレージ装置2は、業務アプリケーション起動処理の初期化処理などで多くのデータ転送が発生する場合に備えることができる。
すなわち、帯域幅管理部102は、最大性能算出部101から受信した調整対象のTierプール232の最大転送能力及び予め決められたβの値を用いて、数式3からαを算出する。そして、帯域幅管理部102は、求めたα及び予め決められたβを用いて各ボリューム231に割り当てる個別帯域幅を求める。
その後、帯域幅管理部102は、調整対象のTierプール232に含まれる各ボリューム231に、算出したそれぞれの個別帯域幅の設定を指示する設定コマンドを作成する。そして、帯域幅管理部102は、生成した設定コマンドを帯域幅制御部252へ送信する。
このように、帯域幅管理部102は、ボリューム数が少ない場合は、αの値を大きくし、使用帯域幅に応じた帯域幅の割り当てをより適切に実現する。逆にボリューム数が多い場合、割り当てる帯域に余裕が無くなるので、帯域幅制御部102は、αの値が小さくなるように調整する。この帯域幅管理部102が、「割当部」の一例にあたる。
最大性能算出部101、帯域幅管理部102及び監視部103の機能は、例えば、図2のCPU13及びメモリ12で実現される。例えば、HDD14に、最大性能算出部101、帯域幅管理部102及び監視部103の機能を実現するための各種プログラムが格納される。そして、CPU13は、HDD14から各種プログラムを読み出し、最大性能算出部101、帯域幅管理部102及び監視部103の機能を実現するプロセスをメモリ12上に展開して実行する。
性能情報取得部251は、性能収集開始の指示を監視部103から受ける。そして、性能情報取得部251は、各ボリューム231の性能情報、各Tierプール232の性能情報及び各ディスク203のBusy率を定期的に取得し、監視部103へ送信する。
帯域幅制御部252は、調整対象のTierプール232に含まれる各ボリューム231に対する帯域幅の設定を指示する設定コマンドを帯域幅管理部102から受信する。そして、帯域幅制御部252は、各設定コマンドで指定されたボリューム231の帯域幅を、設定コマンドの指定に合わせて設定する。
次に、図7を参照して、本実施例に係るストレージシステムにおける帯域幅制御の流れについて説明する。図7は、実施例1に係るストレージシステムにおける帯域幅制御のフローチャートである。図7の左端のフローは、操作端末3の処理を表している。また、中央のフローは、運用管理サーバ1の処理を表している。また、右端のフローは、ストレージ装置2の処理を表している。さらに、各フローを結ぶ矢印は、矢印の方向に命令やデータが送られることを示している。
操作端末3は、操作者からの指示を受けて、性能収集を運用管理サーバ1の監視部103へ指示する(ステップS11)。これにより、運用管理サーバ1及びストレージ装置2において、ストレージ装置2の性能収集が開始され、帯域幅の調整が実行される。
次に、運用管理サーバ1の処理について説明する。監視部103は、性能測定開始の指示を操作端末3から受信する。そして、監視部103は、性能測定開始をストレージ装置2の性能情報取得部251に指示する(ステップS21)。
監視部103は、ボリューム231及びTierプール232の性能情報、並びに、ディスク203のBusy率を取得する。次に、監視部103は、ディスク203のBusy率からTierプール232のBusy率を算出する。そして、監視部103は、ボリューム231の性能情報をボリューム性能情報ファイル142に登録し、Tierプール232の性能情報及びBusy率をTier性能情報ファイル143に登録する(ステップS22)。
最大性能算出部101は、調整対象のTierプール232の実測スループット及びBusy率をTier性能情報ファイル143から取得する(ステップS23)。
次に、最大性能算出部101は、取得した実測スループット及びBusy率を用いて、調整対象のTierプール232の最大転送能力を算出する(ステップS24)。その後、最大性能算出部101は、調整対象のTierプール232の最大転送能力の情報を帯域幅管理部102へ送信する。
帯域幅管理部102は、自己が有する設定ファイルから割り当ての指標をIOPSにするかスループットにするかを取得する。帯域幅管理部102は、調整対象のTierプール232の最大転送能力の情報を最大性能算出部101から受信する。また、帯域幅管理部102は、ボリューム231の最低保証帯域幅であるβの値を取得する(ステップS25)。さらに、帯域幅管理部102は、調整対象のTierプール232に含まれるボリューム231の使用帯域幅を取得する。
次に、帯域幅管理部102は、使用帯域幅、調整対象のTierプール232の最大転送能力及び最低保証帯域幅であるβを用いて、数式3からαを算出する(ステップS26)。
次に、帯域幅管理部102は、使用帯域幅、算出したα及び取得したβを用いて、数式2から各ボリューム231の個別帯域幅を算出する(ステップS27)。
次に、帯域幅管理部102は、調整対象のTierプール232に含まれる各ボリューム231に対する各個別帯域幅の設定を指示する設定コマンドを生成する。その後、帯域幅管理部102は、生成した設定コマンドを帯域幅制御部252へ送信する(ステップS28)。
次に、ストレージ装置2の処理について説明する。性能情報取得部251は、性能測定開始の指示を運用管理サーバ1の監視部103から受信する。そして、性能情報取得部251は、各ボリューム231及び各Tierプール232の性能情報、並びに、ディスク203のBusy率の測定を開始する(ステップS31)。
その後、性能情報取得部251は、取得した各ボリューム231及び各Tierプール232の性能情報、並びに、ディスク203のBusy率を運用管理サーバ1の帯域幅管理部102に送信する(ステップS32)。
その後、帯域幅制御部252は、運用管理サーバ1の帯域幅管理部102から設定コマンドを受けて、各ボリューム231に対して指定された帯域幅の設定を行う(ステップS33)。
以上に説明したように、本実施例に係る運用管理サーバは、予め決められた最低保証帯域を用いて、調整対象のTierプールの最大転送能力から、調整対象のTierプールに含まれる全てのボリュームに割り当てる帯域幅を決定する。これにより、Tierプールに含まれるボリューム同士での性能干渉を抑えて帯域幅の割り当てを行うことができる。また、アプリケーションなどの起動に用いる帯域を確保しているので、起動をスムースに行うことができる。また、各ボリュームに対する帯域幅の指定を行わずに済むため、管理者の手間を省くことができる。加えて、予めαの値を決定しておかなくてもよいので、管理者の手間を省くことができる。
また、以上の説明では、スループットを例に説明したが、上述したように実測性能としてIOPSを用いても個別帯域幅を算出することができる。ただし、IOPSの場合、基準となるデータ量を用いてスループットに変換して最大転送能力との比較を行うことが好ましい。
図8は、実施例2に係る運用管理サーバ及びストレージ装置のブロック図である。本実施例に係る運用管理サーバは、実施例1の各部に、最低保証帯域幅算出部105が追加されている。本実施例に係る運用管理サーバは、各ボリュームの最低保証帯域幅を自動的に算出し設定することが実施例1と異なる。そこで、最低保証帯域幅の算出について主に説明する。以下では、実施例1と同じ符号を有する各部については特に説明の無い限り同じ機能を有するものとする。
最低保証帯域幅算出部105は、各ボリューム231の最低保証帯域幅の初期値を予め有する。そして、最低保証帯域幅算出部105は、各ボリューム231の性能計測開始以前の場合、各ボリューム231の最低保証帯域幅の初期値を起動時の使用帯域幅として帯域幅管理部102へ出力する。
そして、最低保証帯域幅算出部105は、ボリューム性能情報ファイル142における実測性能のIOPSを監視する。そして、最低保証帯域算出部105は、IOPSが0の状態が第1の時間継続した後、IOPSが0より大きい状態が第2の時間以上継続した場合にそのボリューム231でアプリケーションが起動したと判定する。ここで、第1の時間及び第2の時間は、設定ファイルで定義される。そして、第1の時間と第2の時間とは同じ値であっても異なる値であってもよく、運用環境などによって決定されることが好ましい。これにより、瞬間的にIOPSが0になった場合や、アプリケーションが起動していない状態で他の理由で瞬間的にIOPSが発生した場合など、起動時以外の状態を排除することができる。
アプリケーションが起動したと判定した場合、最低保証帯域幅算出部105は、その時点でのアプリケーションが起動したボリューム231の使用帯域幅を取得する。本実施例では、最低保証帯域幅算出部105は、実測性能のスループットをボリューム設定情報ファイル142から取得する。そして、最低保証帯域幅算出部105は、取得した使用帯域幅を起動時の使用帯域幅として、対応するボリューム231の識別情報とともに帯域幅管理部102へ出力する。
ただし、本実施例では、最低保証帯域幅算出部105は、直近の起動時に計測した使用帯域幅を起動時の使用帯域幅としたがこれに限らない。例えば、最低保証帯域幅算出部105は、直近の数回分や数日分の平均や最大値を起動時の使用帯域幅としてもよい。この場合、最低保証帯域幅算出部105は、過去の起動時の使用帯域幅を記憶しておくことが好ましい。回数や日数、平均を用いるか最大値を用いるかの情報は、例えば、最低保証帯域幅算出部105が有する設定ファイルで定義しておくことが好ましい。
さらに、最低保証帯域幅算出部105は、実測から取得した使用帯域幅に係数γ(0<γ<1)を乗算した値を起動時の使用帯域幅としてもよい。これにより、起動時間はある程度長くなるが、より多くのボリューム231に帯域が割り当てられるようになる。
帯域幅管理部102は、各ボリューム231の起動時の最低保証帯域幅の入力を最低保証帯域幅算出部105から受ける。帯域幅管理部102は、あるボリューム231の起動時の最低保証帯域幅を取得している状態で、さらに、そのボリューム231の起動時の最低保証帯域幅の入力を受けた場合、そのボリューム231の起動時の最低保証帯域幅を後に取得したデータに更新する。この各ボリューム231の起動時の最低保証帯域幅が、各ボリューム231における最低保証帯域幅にあたる。
ここで、帯域幅管理部102によるαの算出の詳細について説明する。各ボリューム231の起動時の最低保証帯域幅及びαは、βkをk番目のボリューム231の最低保証帯域幅とした場合、次の数式4を満たす。
ここで、Nはボリューム数を表す。また、Bkは、k番目のボリュームの使用帯域幅を表す。また、B’kは、k番目のボリュームに割り当てる個別帯域幅を表す。
数式4をαについて解くと、αは次の数式5で表される。
ただし、数式5では、最低保証帯域の合計がTierプールの最大能力に近づくと、αの値は0に近づく。ここで、数式2では、算出される使用帯域幅が0より大きく、最低保証帯域の合計以下の場合、すなわち0≦使用帯域<βでは、個別帯域幅には、βを超える帯域が割り当てられてしまう。そこで、使用帯域が最低保証帯域と一致するまで個別帯域幅が増えないように調整した場合、αは次の数式6で表される。
ここで、Bk−βk<0の時、Bk−βk=0である。さらに、分母の合計が0の場合、すなわち、全てのボリューム231で使用帯域が最低保証帯域より小さい場合、α=0である。
さらに、数式6において、αが1を超える場合がある。αが1を超えるということは、実際の使用帯域幅よりも大きな帯域幅をボリューム231に割り当てていると考えられる。この場合、各ボリューム231の実際の使用帯域幅が小さく、Tierプール232の処理能力に余裕がある状態である。しかし、実際の使用帯域よりも大きな帯域幅を割り当てることは無駄と考えることもできる。そこで、本実施例では、αが1を超える場合、αを1とするように、数式6を調整する。すなわち、αは次の数式7と表される。
ここで、Bk−βk<0の時、Bk−βk=0である。また、分母の合計が0の場合、すなわち、全てのボリューム231で使用帯域が最低保証帯域より小さい場合、α=0である。
以上に説明したように、本実施例に係る運用管理サーバは、実際の使用帯域幅に応じて最低保証帯域を決定する。これにより、各ボリュームの使用方法に応じて使用帯域幅が決定されることになり、ボリューム231を使用するアプリケーションが行う業務に応じて使用帯域幅が決定できる。すなわち、業務に応じて個別帯域幅を自動的に決定することができ、より適切な帯域幅の割り当てを実現することができる。
(変形例1)
帯域幅管理部102は、処理性能が不足しているボリューム231及び処理性能に余裕があるボリューム231を特定する。例えば、帯域幅管理部102は、ボリューム性能情報ファイル142のディレイタイムなどから所定期間に亘り処理性能が連続して不足しているボリューム231を処理性能が不足しているボリューム231として特定する。また、帯域幅管理部102は、ボリューム性能情報ファイル142のディレイタイムなどから所定期間に亘り連続して処理性能に余裕があるボリューム231を処理性能に余裕があるボリューム231として特定する。
そして、帯域幅管理部102は、処理性能に余裕があるボリューム231の処理性能を、処理性能が不足しているボリューム231に融通する。すなわち、帯域幅管理部102は、各ボリューム231に追加で帯域幅を割り当てる。例えば、帯域幅管理部102は、予め決められた各ボリューム231に対する優先度に応じて、各ボリューム231に追加で割り当てる追加帯域幅を算出する。また、他の方法としては、帯域幅管理部102は、処理性能に余裕があるボリューム231の処理性能をボリューム数で分割して、各ボリューム231に追加で割り当てる追加帯域幅を算出する。
そして、帯域幅管理部102は、処理性能に余裕があるボリューム231から、処理性能が不足しているボリューム231への帯域幅の融通を帯域幅制御部252に通知する。
帯域幅制御部252は、処理性能に余裕があるボリューム231から、処理性能が不足しているボリューム231への帯域幅の融通の通知を帯域幅管理部102から受ける。そして、帯域幅管理部252は、処理性能に余裕があるボリューム231の帯域幅を縮小し、処理性能が不足しているボリューム231の帯域幅を拡張する。以下では、帯域幅の融通を行う機能を、「拡張融通機能」という。この拡張融通機能は、例えば、ストレージ装置2のQoSによって実現される。
このように、帯域幅の割り当てを行った上で、拡張融通機能を用いることで、帯域幅の利用効率をより向上させることができる。
(変形例2)
以上では、急速に負荷が増加する局面の内、アプリケーションの起動という局面に対応するために帯域幅の割り当てを維持できるように最低保証帯域幅を決定した。しかし、これ以外にも、負荷が増加する局面は存在する。そこで、他の局面に対応するため、最低保証帯域幅としてボリューム231の平均使用帯域幅又は全ボリューム231の平均使用帯域幅を用いることもできる。そして、負荷が増加する局面に応じて、いずれを最低保証帯域幅として用いるかを決定しておき、帯域幅管理部102は、該当する局面になった場合に、決められた最低保証帯域幅を用いて各ボリューム231の個別帯域幅を算出するとしてもよい。また、安全性を考えて、帯域幅管理部102は、複数の最低保証帯域幅の候補の中から最大の値を有するものを最低保証帯域幅として用いる構成にすることも可能である。
このように、負荷増加の局面に応じて最低保証帯域幅を変更することで、各ボリュームの使用状態に合わせた帯域幅の割り当てを行うことができ、帯域幅の利用効率をより向上させることができる。
次に実施例3について説明する。本実施例に係る運用管理サーバは、操作者から指定された性能レベルに応じて割り当てる個別帯域幅を異ならせる。ここでは、実施例2に新たに機能を追加する場合で説明する。本実施例に係る運用管理サーバも図8のブロック図で表される。以下では、実施例2と同じ機能を有する各部については特に説明の無い限り同じ機能を有するものとする。ただし、本実施例の機能は実施例1の構成に追加することも可能である。
操作者は、操作端末3を用いて、個々のボリューム231に設定する性能レベルを入力する。ここで、性能レベルとは、ボリューム231の性能を向上させるか低下させるかを調整するための指標である。例えば、本実施例では、性能レベルは、高性能、中性能及び低性能の3段階で表されるものとする。
帯域幅管理部102は、数式7におけるαの帯域比(以下、「運用時帯域比」という。)及びβの帯域比(以下、「起動時帯域比」という。)を記憶している。ここで、各帯域比の設定について説明する。
起動時の使用帯域幅はあまり変化することはないと考えられる。この点、アップデートやフラグメンテーションなどで徐々に使用帯域幅が変化することは考えられるが、これらについても大きな変化はもたらさないと考えられる。つまり、実測で得られた起動時の使用帯域幅はあまり変わらない。このことから、β=1であれば、ボリューム231の最大性能を発揮することができる値といえる。したがって、起動時帯域比は、起動時を基準に考えた場合、性能レベルが高の場合、1であり、性能レベルが中の場合、1より小さい値となり、性能レベルが低の場合、性能レベルが中より小さい値を取ることができる。例えば、帯域幅管理部102は、高性能:中性能:低性能=1:0.75:0.5として起動時帯域比を記憶する。
これに対して、起動時以外は、使用帯域幅の変動が大きく次の時点でどれだけの帯域幅を使用するか想定することは困難である。そこで、運用時帯域比は、性能レベルが高の場合、直近の使用帯域幅より広い帯域幅を割り当てることから1を超える性能比を設定することが好ましい。運用時帯域比は、性能レベルが高の場合、1より大きい値を取り、性能レベルが中の場合、1であり、性能レベルが低の場合、1より小さい値を取ることができる。例えば、帯域幅管理部102は、高性能:中性能:低性能=2:1:0.5として運用時帯域比を記憶する。
そして、運用時帯域比及び起動時帯域比を用いると、各ボリュームに割り当てられる個別帯域比は次の数式8で表される。
割り当て帯域=α×運用時帯域比×(使用帯域幅−起動時帯域比×β)+起動時帯域比×β ・・・(8)
ここで、使用帯域幅−起動時帯域比×β<0の場合、使用帯域幅−起動時帯域比×βで表される項を0とする。
そして、各ボリューム231の使用帯域幅は、その合計がTierプール232の最大処理能力に等しくなるように決定されるので、次の数式9を満たす。
ここで、Wkは、k番目のボリュームの運用時帯域比であり、Xkは、k番目のボリュームの起動時帯域比である。この数式9をαについて解くことで、αは次の数式10のように表される。
したがって、本実施例に係る帯域幅管理部102は、次の数式11を各ボリューム231の個別帯域幅の算出に用いる。数式11は、i(1≦i≦ボリューム数)番目のボリューム231の個別帯域幅を表す。
ここで、Biは、i番目のボリュームの使用帯域幅を表す。また、B’iは、i番目のボリュームに割り当てる個別帯域幅を表す。ここで、Bk−Xkβk<0の場合、Bk−Xkβkで表される項を0とする。また、分母が0となる場合、分数部分を0とする。
さらに、数式11においても、αが1を超える場合がある。上述したように、αが1を超えるということは、実際の使用帯域幅よりも大きな帯域幅をボリューム231に割り当てていると考えられる。そこで、本実施例では、αが1を超える場合、αを1とするように、数式11を調整する。この場合、αは次の数式12と表される。
ここで、数式12においても、Bk−Xkβk<0の場合、Bk−Xkβkで表される項は0である。帯域幅管理部102は、数式12であらわされるαを、数式11に用いて、個別帯域幅を算出する。このように、運用時帯域比及び起動時帯域比を用いて、性能レベルに合わせた帯域幅を算出することが、「重みづけ」の一例にあたる。
このように、「高中低」の性能レベルに合わせて個別帯域幅を設定することで、各性能レベルを有するボリューム231において以下のような利点がある。
性能レベルが高のボリューム231には、直前の使用帯域幅を超える帯域幅が割り当てられる。これにより、直前の使用帯域幅を超える負荷が発生する状況である負荷増加局面であっても、ボリューム231に十分な帯域が割り当てられるので、そのボリューム231で動作する業務アプリケーションが帯域幅不足となることはない。したがって、重要な業務を実行することから、性能レベルを高とされたボリューム231は、指定された要求を満足することができる。
また、性能レベルが中のボリューム231には、直前の使用帯域幅に等しい帯域幅が割り当てられる。ここで、実施例2の変形例1で説明した拡張融通機能を用いれば、他のボリューム231の使用帯域幅が少なく帯域幅に余裕があれば、そのボリューム231に追加の帯域が割り当てられる。そのため、負荷増加局面において、拡張融通機能の支援により、性能レベルが中のボリューム231は、帯域幅不足を回避することができる。
一方、性能レベルが低のボリューム231には、直前の使用帯域幅より小さい帯域幅が割り当てられる。そして、そのボリューム231には、帯域幅の余裕が大きい場合に、直前の使用帯域幅以上の帯域幅が割り当てられる。
以上をまとめると、性能レベルが高のボリューム231は、負荷増加局面でも十分な帯域が割り当てられる。その場合、性能レベルが低のボリューム231は、性能レベルが高のボリューム231に割り当てられた帯域幅の分、個別帯域幅が圧迫される。逆に、性能レベルが低のボリューム231は、負荷増加局面では、他のボリューム231の使用帯域幅が非常に少ない場合にのみ、十分な帯域幅の割り当てが得られる。
以上に説明したように、本実施例に係る運用管理サーバは、指定された性能レベルに応じて各ボリュームに割り当てる帯域幅を決定する。これにより、各ボリュームを使用するアプリケーションの重要性に応じて帯域幅を確保することができ、各ボリュームの使用状況に応じた適切な帯域幅の割り当てを実現することができ、帯域幅の利用効率をより向上させることができる。
次に実施例4について説明する。本実施例に係る運用管理サーバは、Tierプールの使用状況に応じて運用時帯域比及び起動時帯域比を変化させることが実施例3と異なる。本実施例に係る運用管理サーバも図8のブロック図で表される。以下では、実施例3と同じ機能を有する各部については特に説明の無い限り同じ機能を有するものとする。
本実施例に係る帯域幅管理部102は、異なる値を有する運用時帯域比及び起動時帯域比の組(以下、2つをまとめて単に「帯域比対」という。)を2組有する。また、帯域幅管理部102は、記憶する2組の帯域比対のうちの一方を標準帯域比対とする。
例えば、帯域幅管理部102が、標準帯域比対以外の帯域比対として、帯域幅に余裕がある場合の帯域比対を記憶する場合について説明する。ここでは、帯域幅に余裕がある場合の帯域比対を「閑散時帯域比対」という。帯域幅管理部102は、運用時帯域比が2:1:0.5であり、起動時帯域比が1:0.75:0.5である標準帯域比対を記憶する。また、帯域幅管理部102は、運用時帯域比が2:1:1であり、起動時帯域比が1:1:1である閑散時帯域比対を記憶する。
帯域幅管理部102は、Tierプール232の最大転送能力を取得後、まず、標準帯域比対を数式11に用いて、各ボリューム231の個別帯域幅を算出する。次に、帯域幅管理部102は、標準帯域比対を用いて算出した各ボリューム231の個別帯域幅が、次の数式13を満たすか否かを判定する。
数式13が満たされない場合、帯域幅管理部102は、標準帯域比対を用いて算出した各ボリューム231の個別帯域幅を帯域幅制御部252に通知する。
これに対して、数式13が満たされた場合、帯域幅管理部102は、閑散時帯域比対を数式12に用いて、各ボリューム231の個別帯域幅を算出する。次に、帯域幅管理部102は、閑散時帯域比対を用いて算出した各ボリューム231の個別帯域幅が、次の数式14を満たすか否かを判定する。
数式14が満たされる場合、帯域幅管理部102は、閑散時帯域比対を用いて算出した各ボリューム231の個別帯域幅を帯域幅制御部252に通知する。これに対して、数式14が満たされない場合、帯域幅管理部102は、標準帯域比対を用いて算出した各ボリューム231の個別帯域幅を帯域幅制御部252に通知する。
次に、図9を参照して、本実施例に係るストレージシステムにおける帯域幅制御の流れについて説明する。図9は、実施例4に係るストレージシステムにおける帯域幅制御のフローチャートである。操作端末3及びストレージ装置2の動作は実施例1と同じであるため、ここでは、運用管理サーバ1の動作についてのみ説明する。
監視部103は、性能測定開始の指示を操作端末3から受信する。そして、監視部103は、性能測定開始をストレージ装置2の性能情報取得部251に指示する(ステップS121)。
監視部103は、ボリューム231及びTierプール232の性能情報、並びに、ディスク203のBusy率を取得する。次に、監視部103は、ディスク203のBusy率からTierプール232のBusy率を算出する。そして、監視部103は、ボリューム231の性能情報をボリューム性能情報ファイル142に登録し、Tierプール232の性能情報及びBusy率をTier性能情報ファイル143に登録する(ステップS122)。
最大性能算出部101は、調整対象のTierプール232の実測スループット及びBusy率をTier性能情報ファイル143から取得する(ステップS123)。
次に、最大性能算出部101は、取得した実測スループット及びBusy率を用いて、調整対象のTierプール232の最大転送能力を算出する(ステップS124)。その後、最大性能算出部101は、調整対象のTierプール232の最大転送能力の情報を帯域幅管理部102へ送信する。
帯域幅管理部102は、自己が有する設定ファイルから割り当ての指標をIOPSにするかスループットにするかを取得する。帯域幅管理部102は、調整対象のTierプール232の最大転送能力の情報を最大性能算出部101から受信する。また、帯域幅管理部102は、ボリューム231の最低保証帯域幅であるβの値を取得する(ステップS125)。さらに、帯域幅管理部102は、調整対象のTierプール232に含まれるボリューム231の使用帯域幅を取得する。
次に、帯域幅管理部102は、使用帯域幅、調整対象のTierプール232の最大転送能力及び最低保証帯域幅であるβを用いて、数式3からαを算出する(ステップS126)。
次に、帯域幅管理部102は、標準帯域比対、使用帯域幅、算出したα及び取得したβを用いて、数式2から各ボリューム231の個別帯域幅を算出する(ステップS127)。
次に、帯域幅管理部102は、算出結果が数式13を満たすか否かを判定する(ステップS128)。数式13を満たさない場合(ステップS128:否定)、帯域幅管理部102は、標準帯域比対を用いて算出した個別帯域幅の使用を決定する(ステップS129)。
これに対して、数式13を満たす場合(ステップS128:肯定)、帯域幅管理部102は、閑散時帯域比対、使用帯域幅、算出したα及び取得したβを用いて、数式2から各ボリューム231の個別帯域幅を算出する(ステップS130)。
次に、帯域幅管理部102は、算出結果が数式14を満たすか否かを判定する(ステップS131)。数式14を満たさない場合(ステップS131:否定)、帯域幅管理部102は、ステップS129へ進む。
これに対して、数式14を満たす場合(ステップS131:肯定)、帯域幅管理部102は、閑散時帯域比対を用いて算出した個別帯域幅の使用を決定する(ステップS132)。
次に、帯域幅管理部102は、調整対象のTierプール232に含まれる各ボリューム231に対する各個別帯域幅の設定を指示する設定コマンドを生成する。その後、帯域幅管理部102は、生成した設定コマンドを帯域幅制御部252へ送信する(ステップS133)。
以上に説明したように、本実施例に係る運用管理サーバは、複数の帯域比対を有し、Tierプール232の使用状況に応じた帯域比対を用いて個別帯域幅を算出する。これにより、帯域幅の利用効率を向上させることができる。
また、以上では2つの帯域比対を用いた場合の例について説明したが、帯域比対は3つ以上でもよい。例えば、帯域幅管理部102は、運用時帯域比が2:1:0.5であり、起動時帯域比が1:0.75:0.5である標準帯域比対を記憶する。また、帯域幅管理部102は、運用時帯域比が2:1:0.75であり、起動時帯域比が1:0.875:0.75である閑散期帯域比対を記憶する。さらに、帯域幅管理部102は、運用時帯域比が2:1:1であり、起動時帯域比が1:1:1である超閑散帯域比対を記憶する。この場合、帯域比対は、徐々に性能レベル間の差が小さくなっている。そして、帯域幅管理部102は、数式14が満たされない帯域比対を特定し、その特定した帯域比対よりも性能レベル間の差が1段階大きい帯域比対を用いて算出した各ボリューム231の個別帯域幅を帯域幅制御部252に通知する。
このように、より多くの帯域比対を用いることで、より細かい状況に応じた帯域比対の選択を行うことができ、帯域幅の利用をより適切に行うことができる。
さらに、本実施例では数式14を用いて帯域比対を決定したが、帯域比対の決定方法はこれに限らない。例えば、帯域幅管理部102は、以下のように帯域比対の決定手順で数式12を用いることもできる。
帯域幅管理部102は、標準帯域比対を数式12に用いてαを算出する。算出したαが1以下の場合、帯域幅管理部102は、標準帯域比対を数式11に用いて各ボリューム231の個別帯域幅を算出し、帯域幅制御部252に通知する。
これに対して、算出したαが1より大きい場合、閑散時帯域比対を数式12に用いてαを算出する。この結果αが1以下となった場合、閑散時帯域比対を数式11に用いて各ボリューム231の個別帯域幅を算出し、帯域幅制御部252に通知する。一方、αが1より大きい場合、帯域幅管理部102は、標準帯域比対を数式11に用いて各ボリューム231の個別帯域幅を算出し、帯域幅制御部252に通知する。
このように、帯域比対の決定手順で数式12を用いることで、数式14を使った場合に比べて、計算量を削減することができる。
(変形例3)
次に、実施例4の変形例について説明する。本変形例に係る運用管理サーバは、設定した帯域比の間の帯域比を用いて個別帯域幅を算出することができる。以下では、設定した帯域比の間の帯域比を用いて個別帯域幅を算出する場合の処理について説明する。
本変形例に係る運用管理サーバ1は、標準帯域比対及び閑散時帯域比対を有する。以下では、標準帯域比対における運用時帯域比をW1H:W1M:W1Lとし、起動時帯域比をX1H:X1M:X1Lとする。また、閑散時帯域比対における運用時帯域比をW2H:W2M:W2Lとし、起動時帯域比をX2H:X2M:X2Lとする。
帯域幅管理部102は、Tierプール232の最大転送能力を取得後、まず、標準帯域比対を数式11に用いて、各ボリューム231の個別帯域幅を算出する。次に、帯域幅管理部102は、標準帯域比対を用いて算出した各ボリューム231の個別帯域幅を用いて、次の数式15を計算する。以下では、この計算結果を、「標準計算結果」という。
帯域幅管理部102は、標準計算結果が0以下の場合、標準帯域比対を用いた場合の各ボリューム231の個別帯域幅を帯域幅制御部252に通知する。これに対して、標準計算結果が0より大きい場合、帯域幅管理部102は、閑散時帯域比対を数式11に用いて、各ボリューム231の個別帯域幅を算出する。次に、帯域幅管理部102は、閑散時帯域比対を用いて算出した各ボリューム231の個別帯域幅を用いて、数式15を計算する。以下では、この計算結果を、「閑散時計算結果」という。
帯域幅管理部102は、閑散時計算結果が0以上の場合、閑散時帯域比対を用いた場合の各ボリューム231の個別帯域幅を帯域幅制御部252に通知する。これに対して、閑散時計算結果が0未満の場合、帯域幅管理部102は、数式16で表される比を運用時帯域比とする。また、数式17で表される比を起動時帯域比とする。ここで、Z1は、標準計算結果を表し、Z2は、閑散時計算結果を表す。
ここで、図10を参照して、数式16及び17について説明する。図10は、数式16及び17を説明するための図である。ここでは、運用時帯域比の性能レベルが高の場合について説明する。図10における左側の縦軸が数式15を用いて算出された帯域差分を表し、右側の縦軸が運用時帯域比を表す。すなわち、図10では、帯域差分と対応する運用時帯域比とが同じ高さになるようにそれぞれの軸が配置されている。
ここで、帯域差分が0になった場合に、調整対象のTierプール232の最大転送能力を全て利用することになるので、帯域幅が最も効率的に配分されている状態といえる。そこで、帯域差分が0となる運用時帯域比が、計算に利用する運用時帯域比となる。ここで、数式16及び17で示される帯域比対を用いる場合、上述したようにZ1は正であり、Z2は負である。そこで、帯域差分が0となる点は、Z1とZ2の間にある。ここで、帯域差分と運用時帯域比との関係は1次関数で表現可能であると仮定する。この場合、帯域差分が0となる運用時帯域比をWHとした場合、Z1から0までの距離とZ2から0までの距離との比は、W1HからWHまでの距離とW2HからWHまでの距離との比と等しくなる。これをWHについて解くと、数式16の性能レベルが高の場合の比となる。
ここでは、運用時帯域比における性能レベルが高の場合の比について説明したが、他の性能レベルでも起動時帯域比でも同じであり、運用時帯域比及び起動時帯域比は、数式16及び17で表される。
ただし、帯域差分と運用時帯域比及び起動時帯域比との関係は、正確には1次関数ではないので、数式16及び17で算出される帯域比対を用いて数式15を計算しても帯域差分が0にはならない場合がある。その場合、帯域幅管理部102は、以下の処理を繰り返し行う。以下では、運用時帯域比を例に説明する。以下の説明では、数式16及び17を用いて新たに算出された帯域比対を「新しい帯域比対」という。
帯域幅管理部102は、新しい帯域比対を数式11に用いて各ボリューム231の個別帯域幅を算出し、算出した個別帯域幅を用いて数式15を計算する。計算結果が0になれば、帯域幅管理部102は、新しい帯域比対を数式11に用いて算出した個別帯域幅を帯域幅制御部252に通知する。
これに対して、計算結果が0より大きい場合、帯域幅管理部102は、計算結果をZ1とする。さらに、帯域幅管理部102は、新しい帯域比対の運用時帯域比をW1H:W1M:W1Lとし、起動時帯域比をX1H:X1M:X1Lとして、数式16及び17に代入し、再度新しい帯域比対を算出する。
また、計算結果が0未満の場合、帯域幅管理部102は、計算結果をZ2とする。さらに、帯域幅管理部102は、新しい帯域比対の運用時帯域比をW2H:W2M:W2Lとし、起動時帯域比をX2H:X2M:X2Lとして、数式16及び17に代入し、再度新しい帯域比対を算出する。
帯域幅管理部102は、以上の処理を繰り返すことで、新しい帯域比対を用いた数式15の計算結果を0にする又は0に近づける。ただし、0に限りなく近づいても無限に時間がかかるおそれがある。そこで、帯域幅管理部102は、一定の回数に達するか又は一定の誤差以内に収まった場合に、そのときの新しい帯域比対を数式11に用いて算出した個別帯域幅を帯域幅制御部252に通知する。これらの一定の回数や一定の誤差の値は、帯域幅管理部102が有する設定ファイルなどに予め定義しておくことが好ましい。
ここで、図11を参照して、本変形例に係る帯域比対の決定処理の流れについて説明する。図11は、変形例3に係る運用管理サーバによる帯域比対の決定処理のフローチャートである。
帯域幅管理部102は、標準帯域比対を数式11に用いて、各ボリューム231の個別帯域幅を算出する。次に、帯域幅管理部102は、標準帯域比対を用いて算出した各ボリューム231の個別帯域幅を用いて数式15を計算し標準計算結果を取得する(ステップS201)。
帯域幅管理部102は、標準計算結果が0より大きいか否かを判定する(ステップS202)。標準計算結果が0以下の場合(ステップS202:否定)、帯域幅管理部102は、標準帯域比対を個別帯域幅の算出に用いることを決定する(ステップS203)。
これに対して、標準計算結果が0より大きい場合(ステップS202:肯定)、帯域幅管理部102は、閑散時帯域比を数式11に用いて、各ボリューム231の個別帯域幅を算出する。次に、帯域幅管理部102は、閑散時帯域比対を用いて算出した各ボリューム231の個別帯域幅を用いて数式15を計算し閑散時計算結果を取得する(ステップS204)。
次に、帯域幅管理部102は、閑散時計算結果が0未満か否かを判定する(ステップS205)。閑散時計算結果が0以上の場合(ステップS205:否定)、帯域幅管理部102は、閑散時帯域比対を個別帯域幅の算出に用いることを決定する(ステップS206)。
これに対して、閑散時計算結果が0未満の場合(ステップS205:肯定)、帯域幅管理部102は、標準帯域比対及び閑散時帯域比対を用いて数式16及び17を算出し新しい帯域比対とする(ステップS207)。
次に、帯域幅管理部102は、新しい帯域比対を数式11に用いて、各ボリューム231の個別帯域幅を算出する(ステップS208)。
そして、帯域幅管理部102は、新しい帯域比対を用いて算出した各ボリューム231の個別帯域幅を用いて数式15を計算する。そして、帯域幅管理部102は、新しい帯域比対を用いた場合の数式15が0となるか否かを判定する(ステップS209)。数式15が0の場合(ステップS209:肯定)、帯域幅管理部102は、ステップS214に進む。
これに対して、数式15が0でない場合(ステップS209:否定)、帯域幅管理部102は、新しい帯域比対の算出が所定回数終了したか又は新しい帯域比対を用いた場合の数式15が一定誤差以内に収まっているか否かを判定する(ステップS210)。所定回数終了しておらず且つ数式15が一定誤差以内に収まっていない場合(ステップS210:否定)、帯域幅管理部102は、新しい帯域比対を用いた場合の数式15が0より大きいか判定する(ステップS211)。
数式15が0より大きい場合(ステップS211:肯定)、帯域幅管理部102は、数式15の計算結果をZ1とし、新しい帯域比対をW1H:W1M:W1L及びZ1H:Z1M:Z1Lとする(ステップS212)。そして、帯域幅管理部102は、ステップS207へ戻る。
これに対して、数式15が0以下の場合(ステップS211:否定)、帯域幅管理部102は、数式15の計算結果をZ2とし、新しい帯域比対をW2H:W2M:W2L及びZ2H:Z2M:Z2Lとする(ステップS213)。そして、帯域幅管理部102は、ステップS207へ戻る。
一方、新しい帯域比の算出が所定回数終了したか又は新しい帯域比対を用いた場合の数式15が一定誤差以内に収まっている場合(ステップS210:肯定)、帯域幅管理部102は、新しい帯域比対を個別帯域幅の算出に用いることを決定する(ステップS214)。
ここで、本変形例では、一定の回数を用いる場合で説明したが、これに限らず、例えば、帯域幅管理部102は、一定時間で計算を終了してもよい。この場合、設定ファイルには、一定時間が定義される。
また、本変形例では、2つの帯域比対を用いる場合について説明したが、用いる帯域比対の数は3つ以上でもよい。例えば、3つの帯域比対を用いる場合、帯域幅管理部102は、まず中間の比率の帯域比対を用いて数式15を計算する。そして、帯域差分が0より大きければ、帯域幅管理部102は、より性能レベル間での比の差が小さい帯域比対を用いて数式15を計算する。帯域差分が0より小さければ、帯域幅管理部102は、より性能レベル間での比の差が大きい帯域比対を用いて数式15を計算する。以降は、帯域幅管理部102は、2つの帯域比対の場合と同様の計算方法を用いて個別帯域幅を決定することができる。
以上に説明したように、本変形例に係る運用管理サーバは、予め決められた帯域比対の間の帯域比対を用いて個別帯域幅を算出することができる。これにより、帯域幅の利用効率をさらに向上させることができる。
次に実施例5について説明する。本実施例に係る運用管理サーバは、最低保証帯域を各ボリュームに割り当てた上で、割り当てた最低保証帯域の内無駄になると予想される帯域幅をTierプールの能力に上乗せする。ここでは、実施例1に新たに機能を追加する場合で説明する。ただし、実施例2〜4のいずれにおいても、本実施例に係る機能を追加することは可能である。本実施例に係る運用管理サーバも図8のブロック図で表される。以下では、実施例1と同じ機能を有する各部については特に説明の無い限り同じ機能を有するものとする。ただし、本実施例の機能は実施例1の構成に追加することも可能である。
帯域幅管理部102は、最低保証帯域幅を割り当てたボリューム231の一覧を記憶する。その後、帯域幅管理部102は、次の性能収集時点で記憶した一覧に含まれる各ボリューム231の使用帯域幅を取得する。そして、帯域幅管理部102は、一覧に含まれる各ボリューム231の最低保証帯域幅の合計から一覧に含まれる各ボリューム231の使用合計帯域幅を減算して、割り当てた最低保証帯域幅の内の使用されていない帯域幅(以下では、「未使用帯域幅」という。)の合計を算出する。
次に、帯域幅管理部102は、調整対象のTierプール232の最大転送能力に算出した未使用帯域幅を加算した値を、調整対象のTierプール232の最大転送能力として新たに設定する。
そして、帯域幅管理部102は、新たに設定した調整対象のTierプール232の最大転送能力を用いてαを算出し、数式8から各ボリューム231の個別帯域幅を算出する。その後、帯域幅管理部102は、算出した各ボリューム231の個別帯域幅を帯域幅制御部252に通知する。
次に、図12を参照して、本実施例に係る運用管理サーバ1による未使用帯域幅の上乗せについて説明する。図12は、実施例5に係る運用管理サーバによる未使用帯域幅の上乗せについて説明するための図である。
未使用帯域幅の上乗せ前は、使用帯域幅比例割当311が使用帯域幅に応じた帯域幅の割り当てに使用されている。そして、使用帯域幅比例割当311と最低保証帯域幅302との合計がTierプール232の最大転送能力301となる。また、最低保証帯域幅302には、未使用帯域幅312と使用帯域幅313が含まれる。
この状態で、未使用帯域幅312が無駄になってしまっている。すなわち、未使用帯域幅312の分だけ余裕がある。そこで、未使用帯域幅312と同じ帯域幅分をTierプール232の最大転送能力301に加算し、Tierプール232の最大転送能力を最大転送能力303まで拡張する。これは、実際のTierプール232の最大転送能力より大きい値となるが、未使用帯域幅312分の余裕が有るので、使用帯域幅の合計は最大転送能力303に収まると予想される。この場合、最低保証帯域幅302は変わらない。そこで、最大転送能力303から最低保証帯域幅302を引いた使用帯域幅比例割当314が、使用帯域幅に応じた帯域幅の割り当てに使用できる。すなわち、最大転送能力を拡張する前に比べて追加帯域幅315分だけより多く使用帯域幅に応じた帯域幅の割り当てに使用できる。
ここで、本実施例に係る運用管理サーバ1による効果について説明する。例えば、ボリューム数が増えると、最低保証帯域幅による割り当て分が増加し、使用帯域幅に応じた割り当て分が減少する。その場合、運用時において、運用時の使用帯域幅に応じた帯域幅の割り当てではなく、起動時の使用帯域幅に応じた帯域幅の割当に近づいてしまう。
図13は、1時間ごとにボリュームを追加した場合の帯域幅の割当状態の遷移を表す図である。図13の縦軸は割当帯域幅を表し、横軸は時間経過を表す。そして、図13の領域401は、未割り当ての帯域幅の遷移を表し、領域402は、運用時帯域幅の割り当ての合計の遷移を表し、領域403は、最低保証帯域幅の合計の遷移を表す。例えば、1時間ごとにボリュームを追加した場合、時間経過にしたがって、領域401で示すように、まず未割当の帯域幅が無くなる。次いで、領域402に示すように、運用時帯域幅の割り当てもなくなる。最終的に、領域403に示すように、最低保証帯域幅のみが割り当てられる状態となってしまう。
しかし、起動処理が同時に行われることは少なく、さらに運用状態で最低保証帯域幅以下しか帯域を使用しない場合も考えらえる。また、ボリューム231毎に使用のピーク時間が異なることが多い。このようなことから、全てのボリューム231で最低保証帯域幅を常に確保した場合、確保した最低保証帯域幅の中で未使用帯域幅が多くなり、無駄が発生する可能性が高い。
この点、未使用帯域幅があり他の運用状態のボリューム231がより多くの帯域幅を使用する場合、拡張融通機能が備わっていれば、一時的な割り当てが行われるので、未使用のまま無駄が発生することは回避される。ただし、拡張融通機能では、例えば、実施例3で示した性能レベルによる割り当ての調整は反映されず、いずれの性能レベルのボリューム231も等しく融通を受けることになる。
これに対して、本実施例に係る運用管理サーバ1は、未使用帯域幅を最大転送能力に上乗せして、各ボリューム231に分配することで、未使用帯域幅が無くなり無駄の発生を抑制することができる。さらに、未使用帯域幅を最大転送能力に上乗せした帯域幅を用いて、性能レベルによる割り当てを行うことで、各ボリューム231は、性能レベルに応じた帯域幅の融通を受けることができる。
(変形例4)
実施例5では直前の未使用帯域幅を上乗せ分として用いたが、上乗せ分として用いる値はこれに限らない。本変形例では、一定期間の未使用帯域幅の最小値を上乗せ分として用いる。
帯域幅管理部102は、各性能収集時点での最低保証帯域が割り当てられたボリューム231の未使用帯域幅を取得し保持する。そして、各ボリューム231の個別帯域幅を算出する場合、帯域幅管理部102は、その時点から過去の一定期間内に取得した各ボリューム231の未使用帯域幅の中から最小値を取得する。そして、帯域幅管理部102は、取得した各ボリューム231の未使用帯域幅の中から最小値を合計した値を調整対象のTierプール232の最大転送能力に加算し、新たに最大転送能力を算出する。その後、帯域幅管理部102は、算出した新たな最大転送能力を用いて各ボリューム231の個別帯域幅を算出する。
ここで、ストレージ装置2に対する負荷は、時間や曜日によって変動することが考えられる。そこで、帯域幅管理部102は、単に長期間にわたって未使用帯域幅の情報を収集するのではなく、時間を区切って時間毎に未使用帯域幅を収集してもよい。この場合、帯域幅管理部102は、個別帯域幅の算出の時間帯に合わせて、区切った時間毎の未使用帯域を用いて最大転送能力を算出する。
以上に説明したように、本変形例に係る運用管理サーバは、一定期間のデータを収集し、その中から最小の未使用帯域幅を決定することで、予測の精度を高めることができ、より適切な帯域幅の割り当てを行うことができる。また、最小値を採用することで、予測が誤った場合にも、使用帯域幅をTierプールの最大転送能力以内に抑えることができる。