(57)【要約】【課題】処理種別に応じて適切に入出力処理を制御することのできる技術を提供する。【解決手段】ストレージ装置３において、ホスト装置２で実行される複数の処理の処理種別毎に、処理種別の処理による入出力処理についての所定時間あたりの上限数を格納する処理比率・上限テーブル２２を記憶するメモリ２１と、ホスト装置２から入出力要求を受信し、所定時間あたりの処理種別毎の処理に対応する入出力処理が上限数以内となるように、入出力要求に対応する入出力処理を実行するプロセッサ２０とを備えるように構成する。係る構成によると、処理種別に応じて、入出力処理の所定時間あたりの処理回数を適切に制御することができる。【選択図】図１
2009087175.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置で実行される複数の処理種別の処理による入出力要求に基づいて、ボリュームに対する入出力処理を実行するストレージ装置において、
前記複数の処理種別毎に、前記処理種別の処理による入出力処理の処理回数についての所定時間あたりの上限数を記憶する上限数記憶部と、
前記ホスト装置から前記入出力要求を受信する受信部と、
前記所定時間あたりの前記処理種別毎の処理による前記入出力処理の処理回数が前記上限数以内となるように、受信した前記入出力要求に対応する入出力処理を実行する入出力処理実行部と
を有するストレージ装置。
【請求項２】
前記入出力処理実行部は、
前記所定時間あたりの前記処理種別毎の前記入出力要求に対応する前記入出力処理の処理回数をカウントするカウント部と、
前記処理種別毎に、前記処理回数が前記上限数を超えるか否かを判定する処理回数判定部と、
前記上限数を超えると判定された前記処理種別について、前記処理種別の処理による前記入出力要求に対応する前記入出力処理の実行を制限する処理制限部と
を有する請求項１に記載のストレージ装置。
【請求項３】
前記入出力要求には、前記入出力要求を行った処理の処理種別を示す処理種別情報が含まれており、
前記入出力処理実行部は、前記処理種別情報に基づいて、前記入出力要求を行なった前記処理種別を把握する
請求項１又は請求項２に記載のストレージ装置。
【請求項４】
前記処理種別毎の前記入出力処理を実行する頻度の基準とする頻度基準情報を記憶する頻度基準情報記憶部を更に有し、
前記入出力処理実行部は、前記頻度基準情報に基づいて、前記処理種別毎の前記入出力処理を実行する
請求項１乃至請求項３のいずれか一項に記載のストレージ装置。
【請求項５】
前記入出力処理実行部は、全ての前記処理種別の処理に対応する前記入出力処理の処理回数が前記上限数以内である場合に、前記処理種別毎の前記頻度基準情報に応じた頻度で、前記処理種別毎の処理による前記入出力要求を受信しているか否かを判定し、受信している前記入出力要求に対応する入出力処理を実行する
請求項４に記載のストレージ装置。
【請求項６】
前記頻度基準情報は、前記処理種別毎の目標とする入出力処理の処理回数である目標数に基づいて決定されている
請求項４又は請求項５に記載のストレージ装置。
【請求項７】
前記処理種別毎に、目標とする入出力処理の処理回数である目標数を記憶する目標数記憶部と、
前記処理種別毎に、前記所定時間における前記入出力処理の処理回数が前記目標数以上か否かを判定する第１目標判定部と、
前記入出力処理の処理回数が前記目標数以上でないと判定された第１の処理種別における前記入出力処理と同一の前記ストレージ装置の構成部位を共用している第２の処理種別を特定する共用処理種別特定部と、
前記第２の処理種別における前記入出力処理の処理回数が前記目標数を超えているか否かを判定する第２目標判定部と、
前記第２の処理種別の前記入出力処理の処理回数が前記目標数を超えていると判定した場合に、前記上限記憶部に記憶されている前記第２の処理種別の前記上限数を引き下げる上限調整部と
を備える請求項１乃至請求項６のいずれか一項に記載のストレージ装置。
【請求項８】
前記ストレージ装置の入出力処理に関わる複数の構成部位の負荷を検出する負荷検出部と、
前記第１目標判定部により、前記目標数以上でないと判定された前記第１の処理種別の処理の入出力処理に使用する構成部位が、所定以上の負荷がかかっているか否かを判定する負荷判定部とをさらに備え、
前記共用処理種別特定部は、所定以上の負荷がかかっていると判定された前記構成部位を共用する前記第２の処理種別を特定する
請求項７に記載のストレージ装置。
【請求項９】
前記第１目標判定部により、前記目標数以上でないと判定された前記第１の処理種別を示す情報を出力する処理情報出力部を更に備える
請求項７又は請求項８に記載のストレージ装置。
【請求項１０】
前記ストレージ装置の入出力処理に関わる複数の構成部位の負荷を検出する負荷検出部と、
前記第１目標判定部により、前記目標数以上でないと判定された前記第１の処理種別の処理の入出力処理に使用する構成部位が、所定以上の負荷がかかっているか否かを判定する負荷判定部とをさらに備え、
前記処理情報出力部は、更に、所定以上の負荷がかかっていると判定された前記構成部位を示す情報を出力する
請求項９に記載のストレージ装置。
【請求項１１】
前記構成部位には、複数の前記処理種別による入出力要求に対応する入出力処理によりデータが入出力される複数のボリュームが含まれている
請求項１０に記載のストレージ装置。
【請求項１２】
複数の処理種別の処理による入出力要求に対応するストレージ装置における入出力処理を制御する処理制御装置であって、
前記ストレージ装置は、複数の処理種別毎に、前記処理種別の処理による入出力処理についての所定時間あたりの上限数を記憶する上限数記憶部を有しており、
前記処理種別毎に、目標とする入出力処理の処理回数である目標数を記憶する目標数記憶部と、
前記ストレージ装置から所定時間あたりの前記処理種別毎の前記入出力処理の処理回数を受信する処理回数受信部と、
前記処理種別毎に、前記所定時間における前記入出力処理の処理回数が前記目標数以上であるか否かを判定する第１目標判定部と、
前記所定時間における前記入出力処理の処理回数が前記目標数以上でないと判定された第１の処理種別における前記入出力処理と同一の前記ストレージ装置の構成部位を共用している第２の処理種別を特定する共用処理種別特定部と、
前記第２の処理種別における前記入出力処理の処理回数が前記目標数を超えているか否かを判定する第２目標判定部と、
前記第２の処理種別の前記入出力処理の処理回数が前記目標数を超えていると判定した場合に、前記ストレージ装置の上限数記憶部における前記第２の処理種別の前記上限数を引き下げる制御を行う上限制御部と
を備える処理制御装置。
【請求項１３】
前記第１目標判定部により、前記目標数以上でないと判定された前記第１の処理種別を示す情報を出力する処理情報出力部を更に備える
請求項１２に記載の処理制御装置。
【請求項１４】
前記ストレージ装置の入出力処理に関わる複数の構成部位の負荷を検出する負荷検出部と、
前記第１目標判定部により、前記目標数以上でないと判定された前記第１の処理種別の処理の入出力処理に使用する構成部位が、所定以上の負荷がかかっているか否かを判定する負荷判定部とをさらに備え、
前記処理情報出力部は、更に、所定以上の負荷がかかっていると判定された構成部位を示す情報を出力する
請求項１３に記載の処理制御装置。
【請求項１５】
処理制御装置と、ホスト装置で実行される複数の処理種別の処理による入出力要求に基づいて、ボリュームに対する入出力処理を実行するストレージ装置とを備える記憶システムであって、
前記ストレージ装置は、
前記ホスト装置と接続されるインタフェースと、第１のメモリと、第１のプロセッサとを備え、
前記第１のメモリは、前記複数の処理種別毎に、前記処理種別の処理による入出力処理の処理回数についての所定時間あたりの上限数を格納する上限テーブルを記憶し、
前記第１のプロセッサは、前記所定時間あたりの前記処理種別毎の処理による前記入出力処理が前記上限数以内となるように、前記入出力要求に対応する入出力処理を実行し、前記所定時間あたりの前記処理種別毎の前記入出力要求に対応する前記入出力処理の処理回数をカウントし、前記処理制御装置に処理回数を送信し、また、入出力処理に関わる前記ストレージ装置の複数の構成部位の負荷を検出し、負荷を示す負荷情報を前記処理制御装置に送信し、また、前記処理制御装置からの指示に基づいて、前記上限テーブルの上限数を更新し、
前記処理制御装置は、
第２のメモリと、第２のプロセッサとを備え、
前記第２のメモリは、前記処理種別毎に、目標とする入出力処理の処理回数である目標数を格納する目標数テーブルを記憶し、
前記第２のプロセッサは、
前記ストレージ装置から前記処理種別毎の前記所定時間あたりの前記処理回数を受信し、前記処理種別毎に前記所定時間における前記入出力処理の処理回数が前記目標数以上であるか否かを判定し、前記目標数以上でないと判定された第１の処理種別における前記入出力処理と同一の前記ストレージ装置の構成部位を共用している第２の処理種別を特定し、前記第２の処理種別における前記入出力処理の処理回数が前記目標数を超えているか否かを判定し、前記第２の処理種別の前記入出力処理の処理回数が前記目標数を超えていると判定した場合に、前記ストレージ装置の前記上限テーブルにおける前記第２の処理種別の前記上限数を引き下げる指示を前記ストレージ装置に送信する
記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理種別の処理による入出力要求に基づいて、ボリュームに対する入出力処理を実行するストレージ装置等に関する。
【背景技術】
【０００２】
従来、ストレージ装置においては、ホスト装置からのデータ入出力要求に対するデータ入出力処理は、当該ホスト装置に接続されたポートに対応したプロセッサが行うようになっている。このため、優先度の高い業務及び優先度の低い業務のデータ入出力処理が同一のプロセッサにより行われる場合がある。このような状況では、優先度の低い業務の負荷が大きい場合に、その影響を受けて優先度の高い業務の帯域が確保されないことがあった。
【０００３】
かかる問題を解決するための方法として、単一のストレージ装置において、ポートや、ＷＷＮ（World Wide Name）又はデバイスを単位とするデータ入出力処理の上限値又は閾値をユーザが設定し、非優先の業務のデータの入出力を抑止し、優先したい業務のデータの入出力の帯域を確保する方法が提案されている（特許文献１参照）。
【０００４】
【特許文献１】特開２００２−１０８５６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示された方法は、非優先のデータの入出力を抑止するのみであり、優先度の高いデータが複数ある場合には、各優先度の高いデータが一律に取扱われるので、一の優先度の高いデータの入出力によって、他の優先度の高いデータの入出力が妨げられるおそれがある。
【０００６】
また、特許文献１に開示された方法は、ポート、ＷＷＮ、デバイスを単位としての上限値を設定しているので、例えば、ポートを単位として上限値を設定すると、同一のポートを利用する複数の業務間においては、入出力処理を調整することができない。すなわち、同一のポートを利用している場合には、優先度が異なる業務であっても、優先度の高い業務の入出力処理を優先することができない。
【０００７】
本発明は、上記課題に鑑みなされたものであり、その目的は、処理種別に応じて適切に入出力処理を制御することのできる技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明に係るストレージ装置は、ホスト装置で実行される複数の処理種別の処理による入出力要求に基づいて、ボリュームに対する入出力処理を実行するストレージ装置において、前記複数の処理種別毎に、前記処理種別の処理による入出力処理の処理回数についての所定時間あたりの上限数を記憶する上限数記憶部と、前記ホスト装置から前記入出力要求を受信する受信部と、前記所定時間あたりの前記処理種別毎の処理による前記入出力処理の処理回数が前記上限数以内となるように、受信した前記入出力要求に対応する入出力処理を実行する入出力処理実行部とを有する。
【発明を実施するための最良の形態】
【０００９】
本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１０】
（１）記憶システムの全体構成
図１は、本発明の一実施形態に係る記憶システムの全体構成を示す図である。
【００１１】
記憶システム１は、複数のホスト装置２と、少なくとも１以上のストレージ装置３と、処理制御装置の一例としてのQoS(Quality of Service)制御装置４と、管理端末５とを有する。ホスト装置２は、ストレージ装置３に接続されている。ホスト装置２とストレージ装置３との接続には、Fibre ChannelやEthernet（登録商標）などのネットワークを用いることができる。このネットワークは、主にデータの入出力に使用される。
【００１２】
QoS制御装置４は、ストレージ装置３に接続されている。ストレージ装置３とQoS制御装置４との接続には、Ethernetなどのネットワークを用いることができる。このネットワークは、主に制御のための情報をやりとりするために用いられる。
【００１３】
管理端末５は、QoS制御装置４に接続されている。なお、本実施形態では、管理者が操作するための管理端末５をQoS制御装置４に直接接続する形態としたが、QoS制御装置４に対して管理操作が可能なら別の形態であってもよい。
【００１４】
ストレージ装置３は、複数のI/O（入出力）処理部１０（１０Ａ、１０Ｂ）と、複数のボリューム１１（１１Ａ、１１Ｂ）と、データパス１２と、管理用ネットワーク１３と、管理用I/F（インタフェース）１４とを備える。I/O処理部１０とボリューム１１はデータパス１２で接続される。また、I/O処理部１０は管理用ネットワーク１３、及び管理用I/F１４を介してQoS制御装置４に接続される。また、I/O処理部１０はホスト装置２に接続される。
【００１５】
I/O処理部１０は、プロセッサ２０（第１のプロセッサ）と、ホスト装置２と接続するためのインタフェースの一例であるポート１５と、上限数記憶部、及び頻度基準情報記憶部の一例としてのメモリ（第１のメモリ）２１とを備え、ホスト装置２から受けとったデータ入出力要求に応じてホスト装置２とボリューム１１との間でのデータのやりとりを仲介する。ここで、ホスト装置２から受け取ったデータ入出力要求には、例えば、入出力対象のボリュームを示すＬＵＮ（Logical Unit Number：論理ユニット番号）、ボリュームにおける入出力対象のＬＢＡ（Logical Block Address：論理ブロック番号）、当該入出力要求を行ったホスト装置２のアプリケーションの処理種別を示す処理種別情報が格納される。
【００１６】
ボリューム１１は、ホスト装置２に提供される論理的な記憶領域であり、論理的な記憶領域としては、ストレージ装置３の１又は複数のハードディスクドライブ（ＨＤＤ）の記憶領域の少なくとも一部が割り当てられる。なお、ストレージ装置３においては、複数のＨＤＤの内の２以上のＨＤＤでＲＡＩＤ（Redundant Array of Independent Disks）グループを構成して、ＲＡＩＤグループの記憶領域を論理的な記憶領域とすることもできる。
【００１７】
メモリ２１は、上限テーブルの一例としての処理比率・処理上限テーブル２２と、入出力制御プログラム２３を記憶する。なお、メモリ２１は、プロセッサ２０により実行される他のプログラム等も記憶される。
【００１８】
図２及び図３は、本発明の一実施形態に係るI/O処理部の処理比率・処理上限テーブルの一例を示す図である。図２は、I/O処理部１０Ａの処理比率・処理上限テーブル２２Ａを示し、図３は、I/O処理部１０Ｂの処理比率・処理上限テーブル２２Ｂを示している。
【００１９】
処理比率・処理上限テーブル２２（２２Ａ、２２Ｂ）は、QoS制御装置４が決定した処理種別毎の処理比率と処理上限とが格納されたテーブルであり、I/O処理部１０のプロセッサ２０は、当該テーブルに従ってデータ入出力制御処理を行う。
【００２０】
処理比率・処理上限テーブル２２は、処理種別フィールド２２ａと、処理比率フィールド２２ｂと、処理上限フィールド２２ｃと、残処理カウンタフィールド２２ｄとを有する。
【００２１】
処理種別フィールド２２ａには、ホスト装置２で実行される処理種別を示す処理種別情報(処理種別ＩＤ)が格納される。本実施形態では、処理種別ＩＤとしては、例えば、「業務１」、「業務２」、「業務３」、「その他」等がある。処理比率フィールド２２ｂには、対応する処理種別の入出力処理の実行頻度の基準となる頻度基準情報の一例としての処理比率が格納される。処理上限フィールド２２ｃには、対応する処理種別の処理による入出力要求に対応する入出力処理の所定時間における処理回数の上限の数(上限数)が格納される。ここで、処理回数を制限する必要が無い場合は、「∞」が格納される。なお、当該テーブルを実装する上においては、「∞」ではなく、「∞」を表す特定の値（例えば「−１」、又は「０」）を格納するようにしてもよい。処理カウンタフィールド２２ｄには、対応する処理種別の処理による入出力要求に対応する入出力処理を或る時点までに実行可能な処理回数が格納される。
【００２２】
図３に示す処理比率・処理上限テーブル２２Ａでは、処理種別ＩＤとして「業務１」、「業務２」があり、例えば「業務２」については、処理比率が「２」であり、上限数が「３０００」回であることが分かる。また、図４に示す処理比率・処理上限テーブル２２Ｂでは、処理種別として「業務３」、「その他」があり、例えば「業務３」については、処理比率が「２」であり、上限数が「４０００」回であることが分かる。
【００２３】
図１の説明に戻り、入出力制御プログラム２３は、ホスト装置２から取得したデータ入力要求に基づいて、データの入出力処理をプロセッサ２０に実行させるためのプログラムである。なお、プロセッサ２０が入出力制御プログラム２３を実行することにより実現される入出力制御処理（I/O制御処理）については、後述する。ここで、受信部は、主に、ポート１５及びプロセッサ２０によって構成され、また、入出力処理実行部、カウント部、及び処理回数判定部は、主にプロセッサ２０によって構成される。
【００２４】
QoS制御装置４は、ストレージ装置３におけるデータ入出力制御処理を調整制御するための装置である。QoS制御装置４は、プロセッサ４０（第２のプロセッサ）と、目標数記憶部の一例としてのメモリ４１（第２のメモリ）とを備える。ここで、第１目標判定部、共用処理種別特定部、第２目標判定部、上限調整部、負荷検出部、負荷判定部、及び処理情報出力部は、主にプロセッサ４０によって構成される。
【００２５】
メモリ４１は、目標数テーブルの一例としての性能管理テーブル４２と、負荷状況テーブル４３と、部位管理テーブル４４と、制御プログラム４５とを有する。
【００２６】
図４は、本発明の一実施形態に係る性能管理テーブルの一例を示す図である。
【００２７】
性能管理テーブル４２は、ホスト装置２が行う各処理種別の処理（業務）について、管理者が各処理種別に対して設定した入出力処理の目標性能値（目標数）を管理するためのテーブルである。本実施形態では、目標性能値としては、対応する処理種別の処理による１秒あたりに実行すべきデータ入出力処理の処理回数（ＩＯＰＳ：Input Output Per Second）を用いている。なお、管理者は、管理端末５を利用することにより、性能管理テーブル４２の目標性能値を設定することができるようになっている。
【００２８】
性能管理テーブル４２は、処理種別フィールド４２ａと、目標性能値フィールド４２ｂと、性能実測値フィールド４２ｃと、ディスク使用頻度フィールド４２ｄと、処理上限フィールド４２ｅと、処理比率フィールド４２ｆとを有する。
【００２９】
処理種別フィールド４２ａには、各処理種別を示す処理種別ＩＤが格納される。目標性能値フィールド４２ｂには、各処理種別に対して設定された目標性能値(目標値)が格納される。性能実測値フィールド４２ｃには、各処理種別に対応したデータ入出力処理をストレージ装置３が１秒間あたりに実際に行った処理回数が格納される。ディスク使用頻度フィールド４２ｄには、データ入出力処理において１秒間あたりに実際にストレージ装置３のディスクドライブにアクセス（入出力）した回数が格納される。処理上限フィールド４２ｅには、対応する処理種別の処理による入出力処理の所定時間における処理回数の上限数が格納される。ここで、処理回数を制限する必要が無い場合は、「∞」が格納される。処理比率フィールド４２ｆには、対応する処理種別の入出力処理の実行頻度の基準となる処理比率が格納される。
【００３０】
図４に示す性能管理テーブル４２では、処理種別ＩＤとして「業務１」、「業務２」、「業務３」、及び「その他」があり、例えば、「業務１」で示される処理種別については、目標性能値として３０００（ＩＯＰＳ）が設定され、性能実測値が３５００（ＩＯＰＳ）であり、ディスク使用頻度が７００（ＩＯＰＳ）であり、処理上限が∞であり、処理比率が３であることが分かる。また、「その他」の処理種別については、目標性能値として１０００（ＩＯＰＳ）が設定され、性能実測値が１１００（ＩＯＰＳ）であり、ディスク使用頻度が３００（ＩＯＰＳ）であり、処理上限が１５００であり、処理比率が１であることが分かる。本実施形態では、データ入出力要求において、「業務１」、「業務２」、「業務３」のいずれかのIDが付与されていないものが、「その他」に属する処理種別であるとして扱われるようになっている。
【００３１】
図５は、本発明の一実施形態に係る負荷状況テーブルの一例を示す図である。
【００３２】
負荷状況テーブル４３は、ストレージ装置３の各構成部位の負荷状況を示すテーブルであり、QoS制御装置４が各構成部位の負荷状況を監視し、ボトルネックとなる構成部位を調べるために使われる。負荷情報テーブル４３は、部位フィールド４３ａと、利用率フィールド４３ｂとを有する。部位フィールド４３ａには、監視対象の構成部位を示す名称が格納される。利用率フィールド４３ｂには、対応する構成部位の負荷を示す利用率が格納される。ここで、利用率とは、例えば、時間に占める構成部位が利用されている時間の割合である。
【００３３】
図５に示す負荷状況テーブル４３では、監視対象の構成部位として、I/O処理部１０ＡのプロセッサＡ、I/O処理部１０ＢのプロセッサB、ボリュームＡ１１Ａ、ボリュームB１１Ｂがあり、例えば、プロセッサＡの利用率が６２％であることが分かる。
【００３４】
図６は、本発明の一実施形態に係る部位管理テーブルの一例を示す図である。
【００３５】
部位管理テーブル４４は、処理種別毎に使用されるストレージ装置3の構成部位を示すテーブルである。部位管理テーブル４４は、処理種別フィールド４４ａと、プロセッサAフィールド４４ｂと、プロセッサBフィールド４４ｃと、ボリュームAフィールド４４ｄと、ボリュームBフィールド４４ｅとを有する。
【００３６】
処理種別フィールド４４ａには、処理種別を示す処理種別ＩＤが格納される。プロセッサAフィールド４４ｂには、対応する処理種別が入出力処理においてプロセッサＡを使用するか否かの情報を格納する。本実施形態では、使用する場合には、「１」が格納され、使用しない場合には、「０」が格納される。プロセッサBフィールド４４ｃには、対応する処理種別が入出力処理においてプロセッサＢを使用するか否かの情報を格納する。本実施形態では、使用する場合には、「１」が格納され、使用しない場合には、「０」が格納される。ボリュームAフィールド４４ｄには、対応する処理種別が入出力処理においてボリュームＡを使用するか否かの情報を格納する。本実施形態では、使用する場合には、「１」が格納され、使用しない場合には、「０」が格納される。ボリュームBフィールド４４ｅには、対応する処理種別が入出力処理においてボリュームＢを使用するか否かの情報を格納する。本実施形態では、使用する場合には、「１」が格納され、使用しない場合には、「０」が格納される。
【００３７】
図６に示す部位管理テーブル４４では、「業務１」の処理は、入出力処理において、プロセッサＡと、ボリュームＡとを利用することがわかる。また、ボリュームＢは、「業務２」及び「業務３」で共用されていることが分かる。
【００３８】
図１の説明に戻り、制御プログラム４５は、ストレージ装置３における複数の処理種別の処理による入出力制御処理を制御し、また、入出力処理の状況等を出力するためのQoS制御処理をプロセッサ４０に実行させるためのプログラムである。なお、QoS制御処理については、後述する。
【００３９】
（２）データ入出力制御処理（I/O制御処理）
次に、本発明の一実施形態に係るストレージ装置３の各I/O処理部１０（１０Ａ、１０Ｂ）によって実行されるI/O制御処理を説明する。
【００４０】
図７は、本発明の一実施形態に係るI/O制御処理のフローチャートである。
【００４１】
本I/O制御処理においては、複数の処理種別のひとつを処理対象として処理を行い、１つの処理種別を処理対象とした処理が終わると、他の処理種別について処理対象として同様な処理を実行していくループ構造になっている。
【００４２】
まず、プロセッサ２０は、最初の順番として規定されている所定の処理種別（プロセッサ２０Ａの場合には、例えば、業務１）を処理対象として決定する（ステップＳ１）。
【００４３】
次に、プロセッサ２０は、QoS制御装置４から処理比率及び処理上限（変更指示）を受信しているか否かを判定する（ステップＳ２）。この結果、変更指示を受信していると判定した場合（ステップＳ２：ＹＥＳ）は、ステップＳ３に進む一方、受信していないと判定した場合（ステップＳ２：ＮＯ）には、ステップＳ４に進む。
【００４４】
ステップＳ３では、プロセッサ２０は処理比率・処理上限テーブル２２に受信した処理比率・処理上限を格納する。
【００４５】
次に、プロセッサ２０は、処理対象の処理種別（業務ｎ）の入出力処理の処理回数が処理上限未満か否かを判定し（ステップＳ４）、処理上限未満の場合は、まだ入出力処理が実行可能であることを意味しているので、次のステップＳ５へ進む一方、処理上限以上の場合には、当該業務ｎの処理による入出力処理を制限する必要があるので、ステップＳ１１へ進む。
【００４６】
ステップＳ５では、プロセッサ２０は、処理比率・処理上限テーブル２２の業務ｎの残処理カウンタが０より大きいか否かを判定し、残処理カウンタが０より大きい場合には、当該業務ｎの入出力処理が実行可能であることを意味しているので、ステップＳ６へ進む一方、残処理カウンタが０である場合には、業務ｎの入出力処理を制限する必要があるので、ステップＳ１１へ進む。
【００４７】
ステップＳ６では、プロセッサ２０は、業務ｎの入出力要求（コマンド）をホスト装置２から受信しているか否かを判定し（ステップＳ６）、受信していない場合には、入出力処理を行う必要がないので、ステップＳ１０へ進む。一方、受信している場合には、プロセッサ２０は、入出力要求（コマンド）に従って入出力処理を実行し（ステップＳ７）、処理が終了したら、メモリ２１に記憶されている業務ｎの処理回数をカウントアップ（＋１）し（ステップＳ８）、更に、業務ｎの残処理カウンタをカウントダウン（−１）する（ステップＳ９）。
【００４８】
ステップＳ１０では、プロセッサ２０は、トータルの残処理カウンタをカウントダウン（−１）する。なお、トータルの残処理カウンタは、メモリ２１に格納されており、I/O処理部１０で実行する全ての処理種別の残処理カウンタを加算した値を格納するために使用される。トータルの残処理カウンタには、初期値としては、I/O処理部１０で実行される全ての処理種別の処理比率の合計が格納されている。
【００４９】
ステップＳ１１では、プロセッサ２０は、トータルの残処理カウンタが０になったか否かを判定する。この結果、トータルの残処理カウンタが０でない場合（ステップＳ１１：ＮＯ）には、各処理種別に対して、処理比率・処理上限テーブル２２に設定されている処理比率に応じた頻度の入出力処理を実行する機会を与えていないことを意味しているので、ステップＳ１４に進む。
【００５０】
一方、トータルの残処理カウンタが０の場合（ステップＳ１１：ＹＥＳ）には、各処理種別に対して、処理比率・処理上限テーブル２２に設定されている処理比率に応じた頻度の入出力処理を実行する機会を与えていることを意味しているので、プロセッサ２０は、処理比率・処理上限テーブル２２の各処理種別の残処理カウンタに、各処理種別の処理比率の値をそのままコピーし（ステップＳ１２）、トータルの残処理カウンタに、各処理種別の残処理カウンタの合計値を格納する（ステップＳ１３）。
【００５１】
ステップＳ１４では、プロセッサ２０は、処理開始から、又はQoS制御装置４に処理回数を報告してから、１秒経過したか否かを判定する。この結果、１秒経過していない場合（ステップＳ１４：NO）には、ステップＳ１７へ進む。
【００５２】
一方、１秒経過している場合には、プロセッサ２０は、QoS制御装置４へ各処理種別の処理回数を報告（送信）し（ステップＳ１５）、メモリ２１に記憶された各業務の処理回数をゼロクリアする（ステップＳ１６）。
【００５３】
ステップＳ１７では、ステップＳ２〜Ｓ１６の処理ステップによって、処理対象の業務に対する処理は終了しているので、プロセッサ２０は次の順番の業務を次の処理対象に決定し（ステップＳ１７）、ステップＳ２からの処理を実行する。
【００５４】
（３）QoS制御処理
次に、本発明の一実施形態に係るQoS制御装置４のプロセッサ４０が実行するQoS制御処理を説明する。
【００５５】
図８は、本発明の一実施形態に係るＱｏＳ制御処理のフローチャートである。
【００５６】
QoS制御装置４のプロセッサ４０は、I/O処理部１０（１０Ａ、１０Ｂ）から、各処理種別毎の処理回数、ストレージ装置３の入出力処理に関わる各構成部位（プロセッサ、ボリューム等）の利用率の稼動情報を受信する（ステップＳ２１）。
【００５７】
次に、プロセッサ４０は、受信した稼動情報を性能管理テーブル４２、負荷状況テーブル４３に記録する（ステップＳ２２）。続いて、プロセッサ４０は、処理比率及び処理上限の更新処理（図９参照）を行う（ステップＳ２３）。続いて、プロセッサ４０は、性能管理テーブル４２の各業務種別の処理比率及び処理上限の値を、それぞれの処理に利用されるI/O処理部１０（１０Ａ、１０Ｂ）へ送信する（ステップＳ２４）。
【００５８】
次に、プロセッサ４０は、各業務の性能実測値が目標性能値未満か否かを判定する（ステップＳ２５）。この結果、すべての業務の性能実測値が目標性能値未満でない、すなわち目標性能値以上であると判定した場合には、各業務が適切に行われていることを意味しているので、ステップＳ２７に進む。一方、性能実測値が目標性能未満である業務がある場合には、プロセッサ４０は、目標性能値を下回った処理種別を示す情報と、当該処理種別に関わる構成部位であって所定の利用率以上である、すなわち、ボトルネックとなっていると判断できる構成部位を示す情報とを出力する（ステップＳ２６）。ここで、処理種別の入出力処理に関わる構成部位であって、所定の利用率以上である構成部位については、ステップＳ２３における処理において予め把握しておくことができ、ステップＳ２６では、この把握している情報を用いて出力するようにしている。
【００５９】
また、処理種別を示す情報と、ボトルネックとなっていると判断できる構成部位の情報とを出力する方法としては、例えば、これら情報を、管理端末５においてメッセージとして表示出力できるような態様で、管理端末５に対して出力させるようにしてもよく、また、これら情報を含む電子メールを管理者宛に送信（出力）するようにしてもよく、また、所定のsyslog(システムログ)に出力するようにしてもよい。
【００６０】
次いで、プロセッサ４０は、稼動情報の出力要求を管理端末５から受け付けているか否かを判定する（ステップＳ２７）。この結果、出力要求を受け付けていない場合には、ステップＳ２１からの処理を再び実行する一方、出力要求を受け付けている場合には、性能管理テーブル４２、負荷状況テーブル４３から稼動情報を取得し、出力する（ステップＳ２８）。出力する方法としては、管理端末５において稼動情報をメッセージとして表示出力できるような態様で、管理端末５に対して出力させるようにしてもよく、また、稼動情報を含む電子メールを管理者宛に送信（出力）するようにしてもよく、また、所定のsyslog(システムログ)に出力するようにしてもよい。
【００６１】
ここで、ストレージ装置３の負荷はデータの入出力パターンや装置の状態によって大きく変動する。例えば、キャッシュメモリ上のデータを繰り返し読み書きする入出力パターンの場合には比較的負荷が軽いが、キャッシュミスのためにディスクアクセスが必要な入出力パターンの場合は、比較的負荷が重い。また、ＩＯＰＳの値は同じでも、一度に読み書きするデータサイズ（転送長）が長い場合は比較的負荷が重くなる。さらに、ディスクドライブやキャッシュメモリなどストレージ装置３の一部に障害が発生した場合は、残りの構成部位やプロセッサ２０の負荷が重くなる。
【００６２】
ストレージ装置３においては、いずれのケースにおいても目標性能を満たせるよう余裕のある性能設計を行うことは重要だが、余裕を持たせすぎるとコストがかさむこととなる。そこで、コスト面を考慮した記憶システム１においては、ストレージ装置３の処理能力不足のために、処理上限を調整しても目標性能値を満たせないケースが発生するおそれもある。
【００６３】
これに対して、本実施形態では、上述のように管理者からの要求があった場合や、目標性能値を満たしていない場合には、各業務の性能値や記憶システム１における各構成部位の利用率などの稼動情報を出力するので、各業務のデータ入出力性能が目標性能を満たしているか否かということや、各構成部位の利用率などを管理者が監視し、その状況に容易に対処できるようにすることができる。
【００６４】
（４）処理比率・処理上限の更新処理
次に、本発明の一実施形態に係るQoS制御装置４のプロセッサ４０が実行する処理比率・処理上限の更新処理を説明する。
【００６５】
図９は、本発明の一実施形態に係る処理比率・処理上限の更新処理のフローチャートである。
【００６６】
まず、プロセッサ４０は、１つの処理種別（例えば、業務１）を処理対象として決定する（ステップＳ３１）。
【００６７】
次に、プロセッサ４０は、当該処理対象の業務（第１の処理種別）について、性能実測値が目標値未満であるか否かを判定する（ステップＳ３２）。この結果、性能実測値が目標値未満であると判定した場合（ステップＳ３２：ＹＥＳ）は、プロセッサ４０は、当該業務に利用する構成部位にボトルネックとなる構成部位があるか否かを判定する（ステップＳ３３）。具体的には、プロセッサ４０は、負荷状況テーブル４３及び部位管理テーブル４４に基づいて、当該業務に利用する構成部位に、ボトルネックと考えられる利用率（例えば、８０％）以上の構成部位があるか否かを判定する。
【００６８】
この結果、ボトルネックとなる構成部位があると判定した場合（ステップＳ３３：ＹＥＳ）には、プロセッサ４０は、ステップＳ３４に進む一方、ボトルネックとなる構成部位がないと判定した場合（ステップＳ３３：ＮＯ）には、ステップＳ３９に進む。
【００６９】
ステップＳ３４では、プロセッサ４０は、部位管理テーブル４４を参照して、ボトルネックとなる構成部位を複数の業務で共用しているか否かを判定し（ステップＳ３４）、共用していると判定した場合（ステップＳ３４：ＹＥＳ）には、ステップＳ３５に進む一方、共用していないと判定した場合（ステップＳ３４：ＮＯ）には、ステップＳ３９に進む。
【００７０】
ステップＳ３５では、プロセッサ４０は、部位管理テーブル４４を参照して、ボトルネックとなる構成部位を共用している他の業務（第２の処理種別）について、性能実測値が目標値を超えているか否かを判定し（ステップＳ３５）、性能実測値が目標値を超えていると判定した場合（ステップＳ３５：ＹＥＳ）には、性能管理テーブル４２の当該他の業務の処理上限の値を減らす（ステップＳ３６）。本実施形態では、プロセッサ４０は、処理上限を、性能実測値未満の値であって目標性能値以上の値とする。これによって、ストレージ装置３において、当該他の業務の目標性能を達成できる範囲内において、ボトルネックとなる構成部位についての当該他の業務の利用している分の一部を、処理対象の業務による利用に振り分けることができる。したがって、処理対象の業務の性能実測値を向上させることができる。
【００７１】
なお、ステップＳ３５において、ボトルネックとなる構成部位を共用している他の業務について、性能実測値が目標値を超えていないと判定した場合（ステップＳ３５：ＮＯ）には、プロセッサ４０は、ステップＳ３９に進む。
【００７２】
一方、ステップＳ３２において、処理対象の業務について、性能実測値が目標値未満でないと判定した場合（ステップＳ３２：ＮＯ）には、プロセッサ４０は、負荷状況テーブル４３を参照して、当該業務で利用する構成部位が、比較的低い所定の利用率（例えば、４０％）以下であるか否かを判定し（ステップＳ３７）、所定の利用率以下であると判定した場合（ステップＳ３７：ＹＥＳ）には、処理上限を上げても支障ないことを意味しているので、性能管理テーブル４２の当該業務の処理上限の値を上げる（ステップＳ３８）。これにより、各構成部位の利用率が所定の利用率以下である場合には、当該業務の処理上限を上げて、当該業務をより効率的に実行することができるようになる。一方、所定の利用率以下でない場合（ステップＳ３７：ＮＯ）には、ステップＳ３９に進む。
【００７３】
ステップＳ３９では、プロセッサ４０は、処理対象としていない未処理の業務があるか否かを判定し（ステップＳ３９）、未処理の業務があると判定した場合（ステップＳ３９：ＹＥＳ）には、未処理の業務を処理対象とし（ステップＳ４０）、ステップＳ３２からの処理を実行する。
【００７４】
一方、全ての業務を処理対象とした場合には、プロセッサ４０は、部位管理テーブル４４及び性能管理テーブル４２を参照して各業務の処理比率を決定し、性能管理テーブル４２の処理比率を更新する（ステップＳ４１）。本実施形態では、プロセッサ４０は、部位管理テーブル４４を参照して、同一のプロセッサで実行される業務を特定し、性能管理テーブル４２を参照して、これら業務の目標性能値を取得し、これら業務の目標性能値の整数比を算出して、整数比の値をそれぞれの業務の処理比率と決定している。
【００７５】
（５）入出力処理の制御の具体例
本発明の一実施形態に係る記憶システムにおける入出力処理の制御の一例を説明する。
【００７６】
図１０は、本発明の一実施形態に係る入出力処理の制御の一例を説明する図である。ここで、本例においては、図１及び図１０に示すようにストレージ装置３には、２台のホスト装置２（２Ａ、２Ｂ）が接続され、また、I/O処理部１０Aの処理比率・処理上限テーブル２２Ａには、図２に示す値が設定され、I/O処理部１０Ｂの処理比率・処理上限テーブル２２Ｂには、図３に示す値が設定され、QoS制御装置４の処理性能管理テーブル４２には、図４に示す値が設定され、負荷状況テーブル４３には、図５に示す値が設定され、部位管理テーブル４４には、図６に示す値が設定されているものとする。
【００７７】
ホスト装置Ａ（２Ａ）では、業務１及び業務２に対応するアプリケーションプログラムが実行され、これら業務のデータ入出力処理はI/O処理部Ａ（１０A）で処理されるようになっている。また、ホスト装置Ｂ（２Ｂ）では、業務３に対応するアプリケーションプログラムが実行され、そのデータ入出力処理はI/O処理部Ｂ（１０B）で処理されるようになっている。
【００７８】
また、業務１及びその他の業務のデータはボリュームＡ（１１A)に格納され、業務２及び業務３のデータは、ボリュームB（１１B)に格納されるようになっている。また、業務１、業務２、業務３、その他の業務の目標性能値は、図４に示すように、３０００、２０００、２０００、１０００となっている。
【００７９】
このような場合には、QoS制御装置４においては、処理比率・処理上限の更新処理により、同一のプロセッサにより実行される各業務における処理比率は、目標性能値の比と一致するように決定される（ステップＳ４１）。すなわち、本例においては、I/O処理部A（１０A）で処理される業務１、業務２の目標性能値比は３０００：２０００＝３：２であるので、業務１と業務２との処理比率はそれぞれ３、２と決定される。一方、I/O処理部Ｂ（１０Ｂ）で処理される業務３、その他の業務の目標性能値比は２０００：１０００＝２：１であるので、業務３とその他の業務との処理比率はそれぞれ２、１と決定される。
【００８０】
また、QoS制御装置４においては、処理比率・処理上限の更新処理により、複数の業務がボリュームを共有し、かつ、共用されるボリュームが性能上のボトルネックになる場合は、各業務が目標性能値を満たすように処理上限が設定される。
【００８１】
本例においては、性能管理テーブル４２を参照すると、業務２の実測性能値（１０００）が目標性能値（２０００）に達していないことがわかる。QoS制御装置４における処理比率・処理上限の更新処理では、このような業務２の実測性能値を上げるために、処理上限を調整する処理が行われる。
【００８２】
まず、QoS制御装置４のプロセッサ４０が、業務２のボトルネックとなるストレージ装置３の構成部位を特定する（ステップＳ３３）。ここでは、各構成部位の利用率を判断基準とし、例えば、利用率が８０％以上の構成部位が性能上のボトルネックになっていると判断する。本例では、ボリュームB（１１Ｂ)が利用率９５％であるのでボトルネックと判断される。
【００８３】
次に、QoS制御装置４のプロセッサ４０が、ボトルネックの構成部位を共用する業務のうち、目標性能値を超えている業務を探し、当該業務の処理上限を減らす（ステップＳ３４〜Ｓ３６）。本例では、ボリュームB（１１B)を業務２と業務３とが共用し、業務３の性能実測値が目標性能値を超えているので、業務３の処理上限を減らす。本例では、例えば、業務3の処理上限の値を、目標性能値（２０００）以上であって、性能実測値（４０００）未満の値（例えば、３０００）を新たな処理上限の値とする。
【００８４】
このように、QoS制御装置４において、各業務の処理上限が決定されると、これら処理上限がストレージ装置３に送信され、ストレージ装置３は、各業務の所定時間あたりの入出力処理の処理回数をQoS制御装置4から送信された処理上限以内として動作することとなる。
【００８５】
これによって、ストレージ装置３における所定時間内の業務３のボリュームＢ（１１Ｂ）に対する入出力処理数が新たな処理上限以内となってボリュームＢにおける業務３による負荷が低減されるので、業務２の入出力処理の処理回数を増加させることができることとなり、業務２における目標性能値を実現することができるようになる。
【００８６】
以上、本発明を実施形態に基づいて説明したが、本発明は上述した実施の形態に限られず、他の様々な態様に適用可能である。
【００８７】
例えば、上記実施形態では、QoS制御装置４と、ストレージ装置３とは別体としていたが、本発明はこれに限られず、ストレージ装置３内にQoS制御装置４を構成するようにしてもよく、また、QoS制御装置４をホスト装置２内に構成するようにしてもよい。この場合、プロセッサ、メモリ等の部位は、共用するようにしてもよい。
【００８８】
また、上記実施形態では、入出力処理に関わるストレージ装置３の構成部位として、I/O処理部１０のプロセッサ２０と、ボリューム１１とを例に示していたが、本発明はこれに限られず、例えば、I/O処理部１０からボリューム１１に至る各々のデータバスや、ボリューム１１への入出力を直接制御する各プロセッサ等の利用率を検出し、これらの利用率に基づいて各処理種別の処理の入出力要求に対する入出力処理の処理上限を調整するようにしてもよい。
【図面の簡単な説明】
【００８９】
【図１】本発明の一実施形態に係る記憶システムの全体構成を示す図である。
【図２】本発明の一実施形態に係る一方のI/O処理部の処理比率・処理上限テーブルの一例を示す図である。
【図３】本発明の一実施形態に係る他方のI/O処理部の処理比率・処理上限テーブルの一例を示す図である。
【図４】本発明の一実施形態に係る性能管理テーブルの一例を示す図である。
【図５】本発明の一実施形態に係る負荷状況テーブルの一例を示す図である。
【図６】本発明の一実施形態に係る部位管理テーブルの一例を示す図である。
【図７】本発明の一実施形態に係るI/O制御処理のフローチャートである。
【図８】本発明の一実施形態に係るQoS制御処理のフローチャートである。
【図９】本発明の一実施形態に係る処理比率・処理上限の更新処理のフローチャートである。
【図１０】本発明の一実施形態に係る入出力処理の制御の一例を説明する図である。
【符号の説明】
【００９０】
１・・・記憶システム、２・・・ホスト装置、３・・・ストレージ装置、４・・・QoS制御装置、５・・・管理端末、１０、１０Ａ、１０Ｂ・・・I/O処理部、１１、１１Ａ、１１Ｂ・・・ボリューム、１２・・・データパス、１３・・・管理用ネットワーク、１４・・・管理用Ｉ／Ｆ、１５・・・ポート、２０・・・プロセッサ、２１・・・メモリ、２２・・・処理比率・処理上限テーブル、２３・・・入出力制御プログラム、４０・・・プロセッサ、４１・・・メモリ、４２・・・性能管理テーブル、４３・・・負荷状況テーブル、４４・・・部位管理テーブル、４５・・・制御プログラム。
【図１】
2009087175.tif 000003
【図２】
2009087175.tif 000004
【図３】
2009087175.tif 000005
【図４】
2009087175.tif 000006
【図５】
2009087175.tif 000007
【図６】
2009087175.tif 000008
【図７】
2009087175.tif 000009
【図８】
2009087175.tif 000010
【図９】
2009087175.tif 000011
【図１０】
2009087175.tif 000012