JP2008186211A - 計算機システム - Google Patents

計算機システム Download PDF

Info

Publication number
JP2008186211A
JP2008186211A JP2007018669A JP2007018669A JP2008186211A JP 2008186211 A JP2008186211 A JP 2008186211A JP 2007018669 A JP2007018669 A JP 2007018669A JP 2007018669 A JP2007018669 A JP 2007018669A JP 2008186211 A JP2008186211 A JP 2008186211A
Authority
JP
Japan
Prior art keywords
hba
logical
data transfer
performance
mbps
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007018669A
Other languages
English (en)
Inventor
Hiroshi Takasumi
高角洋志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007018669A priority Critical patent/JP2008186211A/ja
Publication of JP2008186211A publication Critical patent/JP2008186211A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】
サーバ内に複数のOSがHBAやストレージ装置のポートを共有している場合、OSと論理ボリュームが接続する際の性能を他の接続の使用状況を考慮し、従来の接続プロトコルを拡張することなく行うことができない。
【解決手段】
各OSはHBAを制御するHBAドライバを含み、HBAドライバはOSからストレージ装置に対して発行されるデータ転送の為のコマンドを中継し前記HBAまたは前記ストレージ装置の論理ボリュームへの前記データ転送コマンド送受信性能を算出する手段と、前記データ転送コマンド送受信を所定の性能以上実行することを抑止する手段を有する。
【選択図】 図2

Description

本発明は、サーバ装置とストレージ装置の間でデータ転送を行う計算機システムに関する。
サーバ装置上のOSとストレージ装置上の論理ボリュームはファイバチャネルプロトコルを用いたストレージエリアネットワーク(以下SAN)を利用した接続が多く用いられる。
また、仮想化技術により物理的に一台のサーバで複数のOSが動作可能となり、サーバ上に搭載されていてSANに接続される1つのホストバスアダプタ(以下HBA)が複数のOSから使用される場合がある。
仮想化技術に対する必要性が増加している昨今では、必要性の増加に伴い、HBAやストレージ装置やHBAとストレージ装置を接続するケーブルなどのSAN上の資源を複数のOSと論理ボリュームの接続関係に共有させる必要性も増加する。
限られたSAN資源を複数の接続が共有する場合、どの接続関係にも同様のSAN資源の利用を必要としているわけではなく、ある接続関係はミッションクリティカルな基幹データベースサーバが使用するかもしれないし、またある接続関係はSANのレスポンスタイムなどは重要視されないアプリケーションサーバが使用するかもしれない。このようなSANシステムではOSと論理ボリュームの接続関係の重要度に応じてSAN資源の使用量を割り振るのが望ましい。
しかし、HBAドライバやファームウェア、ファイバチャネルスイッチ、ストレージ装置上のコントローラなどSANシステムを構成する要素は接続関係の優先度などを意識せずに受け付けた起動を単純に処理するのが一般的である。そうすると非常に優先度の高い接続関係においても一定以上の性能は保障することができない。
特許文献1では仮想化によりサーバ内に複数のOSが存在しSANのストレージパスを共有している場合、ストレージ装置を共有するOSを区別して排他制御や優先制御を行いシステム性能の向上を図るためにOSが発行するSCSIコマンドにOSを識別する番号を付与し、ストレージ装置内でその識別番号を元にアクセスの優先制御を行う方式が述べられている。
しかし上述の方法はストレージ装置内での優先制御であるために、HBAの処理能力がボトルネックとなるケースにはあまり効果を発揮しないし、OSが発行するSCSIコマンドにOSを識別する番号を埋め込む必要がありプロトコルを拡張しなければならない。
非特許文献1ではファイバチャネルのフレームヘッダに優先度を設定する方法が記載されており、これとN−PortID Virtualization(R)(以下NPIV)による仮想化技術で動作する各OSに個別のファイバチャネルID(以下FCID)を割り当てる技術を組合せ、物理サーバ上のHBAを共有する各OSから発行されるフレームをファイバチャネルスイッチなどのフレーム中継機において並び替えて優先順位を制御する方式が知られている。
HBAとストレージ装置のファイバチャネル接続においてはSCSIコマンドをファイバチャネルフレームでカプセル化したSCSI−FCPと呼ばれるプロトコルでデータの送受信を行うのが一般的であるが、ストレージ装置上の論理ユニットを識別する値はSCSIコマンド内に定義されているため、上述の方法では論理ユニットまで含めた優先制御をすることはできない。また上述の方法では優先順位の高いフレームが滞留する状況において、優先順位の低いフレームが常にまたされる可能性もある。
特開2002−222110号公報 ANSI T11/1619−D Rev1.01「FIBRE CHANNEL AND SIGNALING−2(FC−FS−2)」
本発明が解決しようとする課題はHBAの処理能力、ファイバチャネル接続の帯域、ストレージ装置の処理能力のいずれかの部分がボトルネックとなる場合において、OSと論理ボリュームの接続の優先度に基づいたデータ転送コマンド送受信性能制御が行えない場合があるという点、IOオペレーション処理性能制御を行うためにファイバチャネルプロトコルやSCSIプロトコルを拡張する必要がある点、HBAを共有する各OS間のデータ転送コマンド送受信処理性能制御だけではなく論理ボリュームまで含めたデータ転送コマンド送受信処理制御が行えない点である。
本発明は、一つ以上のOSが動作するサーバ装置とストレージ装置がHBAによりSAN接続されたシステムにおいて、前記HBAを制御するドライバとそれぞれのOSに配置された前記HBAドライバ間で通信可能なインタフェースからなる。前記HBAは一つのOSまたは仮想化技術により複数のOSから使用され、前記HBAドライバはHBAを使用する各OSに存在し、仮想化技術により複数のOSでHBAを共有する場合はHBAドライバのHBAに対するアクセスはハイパバイザにより制御されている。HBAドライバは互いに通信可能なインタフェースを持つ。
SANを構成する資源のデータ転送コマンド送受信処理性能には単位時間当たりのデータ転送コマンド送受信回数および単位時間当たりの合計転送データサイズに限界があり、前者の単位時間当たりのデータ転送コマンド送受信回数を評価する指標としてIOPS(一秒間にHBAドライバが処理するデータ転送コマンドの送受信回数)が用いられ、後者の単位時間当たりの合計転送データサイズを評価する指標としてMBPS(一秒間に送受信されるデータ転送サイズ)が用いられる。SANの資源に割り当てる使用量を調整するために前記HBAドライバは閾値で設定されたMBPSまたはIOPS以上のデータ転送コマンド送受信を停止する機能を有している。前記閾値はHBAドライバが制御する各HBAおよびHBAと接続される論理ボリューム毎に設定される。
HBAが現在使用しているMBPSおよびIOPSは各HBAドライバが管理し、各OS間でMBPSやIOPSの情報を送受信することを可能とすることにより、別OSのSAN資源使用量を元に自OSのHBAドライバに対してMBPSおよびIOPSに関する閾値を設定することが可能である。
本発明によれば、仮想化技術により複数のOSが物理的には同一のHBAを使用する場合において、各OSからHBAを使用する際のMBPSおよびIOPSを一定の閾値に制限することにより、より優先度の高いOSに対して優先的にデータ転送コマンド送受信処理を行うことを可能とし、複数のOSが同一のストレージポート上の論理ボリュームを使用する場合において、各OSから論理ボリュームを使用する際のMBPSおよびIOPSを一定の閾値に制限することも可能である。これにより論理ボリュームの使用をアプリケーション毎に分ければ、OSが利用するアプリケーションレベルでデータ転送コマンド送受信処理性能制御が可能である。制限された閾値は他のOSと論理ボリュームの接続の使用量に応じて動的に変更可能であるなどSANの使用効率を高めるうえで有効な手段が提供できる。
HBAドライバの間で通信可能なインタフェースを用いて、他OSのSAN資源の使用状況に応じてHBAドライバのデータ転送コマンド送受信性能を抑止する目的を本発明の実施による性能劣化を最も少なくする形態で実現した。
以下、本発明に係わる実施例を図面を用いて詳細に説明する。SAN資源の使用量を割り当て可能なホストバスアダプタドライバを利用したシステムの全体構成図の例を図1に示す。図1ではSANに接続された1つのHBAを2つのOSが共有している場合の例である。100はサーバであり、OS、アプリケーションを動かして、ストレージ装置170に対してデータの読み出し、書き込みなどの命令を発行する。サーバ100は仮想化技術により物理的には1台のサーバで2つのOSを動作させることが可能であり、仮想化を制御するハイパバイザと呼ばれるソフトウェア130によってサーバ内のCPUやメモリなどの資源を共有し、論理パーティション(以下LPAR)と呼ばれるOSを動作させる単位に分割する。110、120はサーバ100に割り当てられたLPARであり、それぞれのLPAR上でOS111、121が動作する。OS111、OS121は同種のものであっても異種のものであってもよい。140はホストバスアダプタであり、ファイバチャネルプロトコルによりストレージ装置と接続される。ホストバスアダプタ140はワールドワイドネーム(以下WWN)とよばれるユニークな値141を持っているが、LPAR110が使用するHBAとLPAR120が使用するHBAをストレージ装置170から見てことなるHBAに見せるためにLPAR110に対してはWWNa142を、LPAR2に対してはWWNb144をハイパバイザが割り当てる。またファイバチャネルプロトコルにおいて機器同士が通信するためにはWWNの他に接続時に割り当てられるFCIDが必要だが、これはファイバチャネルスイッチのNPIV機能によりLPAR1が使用するHBAにはFCID143を、LPAR2が使用するHBAにはFCID145を使用する。これによりストレージ装置170は物理的には同一であるLPAR1が使用するHBAとLPAR2が使用するHBAを異なるHBAとして認識することが可能であり、ストレージ装置のWWNセキュリティ機能によりLPAR1のHBAに対しては論理ボリューム191、LPAR2のHBAに対しては論理ボリューム192というように個別の論理ボリュームを割り当てることが可能である。図1においてはそれぞれストレージ装置170のポート181、182に接続される論理ボリューム191、193がLPAR110のOS111によって使用され、それぞれポート181、182に接続される論理ボリューム192、194がLPAR120のOS121によって使用される。
図2はLPAR間の性能監視エージェントの接続関係および性能監視エージェントとHBAドライバの接続関係を表したソフトウェア構成図である。OS111にはアプリケーションプログラムを制御するユーザ層115とメモリ管理やドライバ制御などを行うカーネル層116からなる。アプリケーションプログラムである性能監視エージェント112はユーザ層115に、HBAドライバ113はカーネル層116に存在する。通常OSにはユーザ層のアプリケーションプログラムとカーネル層のドライバが通信するためのアプリケーションプログラムインタフェース(以下API)が用意されている。本APIを利用して性能監視エージェント112はHBAドライバ113に対して閾値設定コマンド200をセットし、HBAドライバ113は性能監視エージェント112に対して性能情報取得コマンド300を報告する。性能情報取得コマンド300の報告にはHBAドライバ113から性能監視エージェント112に対して定期的にイベント通知で知らせる方法と性能監視エージェントから定期的にポーリングし性能情報を取得する方法が考えられる。性能情報取得コマンド300は性能監視エージェント112と122の間で送受信される。送受信の方法としてサーバ100に存在するネットワークインタフェースカード(以下NIC)150を介して行う方法がある。OS111が使用するNICとOS121が使用するNICはそれぞれ個別のIPアドレス151、152が割り当てられ、性能情報リストはTCP/IPプロトコルにより性能監視エージェント112と113の間で送受信される。性能監視エージェント112は定期的に取得される性能情報取得コマンド300と性能監視エージェントに定義された各種テーブルを用いて必要に応じて閾値設定コマンド200をHBAドライバ113にセットする。
図3は本発明の実施例における性能情報取得コマンド300の例である。性能情報取得コマンドは図3でしめされるテーブルの構造をもったコマンドであり、性能監視エージェント112とHBAドライバ113の間または性能エージェント112と性能エージェント122の間でやりとりされる。性能情報取得コマンド300はINDEX305を主キーとし、OS111が論理WWNaを用いて使用するHBAの現在使用中のMBPSおよび現在使用中のIOPSの情報と、OS111が論理WWNaを用いて使用するHBAに接続される論理ボリューム#1 191と論理ボリューム#2 193の現在使用中のMBPSおよび現在使用中のIOPSの情報を取得することができ、フラグ310で論理HBAの情報か論理ボリュームの情報かを判別することが可能である。フラグ310が論理HBAの情報を表すとき(HBA)、物理WWNフィールド315、論理WWNフィールド300、現在IOPSフィールド335、現在MBPSフィールド340が有効であり、ストレージポートWWNフィールド325、論理ボリューム番号フィールド330は無効である。物理WWNフィールド315にはHBA140の物理WWNがセットされ、論理WWNフィールド320にはOS111がHBA140を使用する際に使う論理WWNがセットされ、現在IOPSフィールド335にはOS111がHBA140を現在時刻において使用しているIOPSがセットされ、現在MBPSフィールド340にはOS111がHBA140現在時刻において使用しているMBPSがセットされる。フラグ310が論理ボリュームの情報を表すとき(LU)、物理WWN315のフィールドは無効となり、その他のフィールドは有効である。この際、論理WWNフィールド320にはOS111がHBA140を使用する際に使う論理WWNがセットされ、ストレージポートWWNフィールド325には、論理ボリュームが接続されるストレージ装置のポートのWWNがセットされ、論理ボリューム番号フィールド330にはストレージ装置が論理ボリュームに割り当てたボリューム番号がセットされ、現在IOPSフィールド335にはOS111が論理ボリューム191または論理ボリューム193を現在時刻において使用しているIOPSがセットされ、現在MBPSフィールド335にはOS111が論理ボリューム191または論理ボリューム193を現在時刻において使用しているMBPSがセットされる。
性能情報リスト300はHBAドライバ113からのイベント通知または性能監視エージェント112からのポーリングにより性能監視エージェント112が取得し、取得した性能情報リスト300はネットワークインタフェースを通じて性能監視エージェント122に渡される。同様に性能監視エージェント122がHBAドライバ123から取得した性能情報リストもネットワークインタフェースを通じて性能監視エージェント112に渡される。
図4は性能監視エージェント112が性能情報取得コマンドの応答を取得した際、データ転送の為の閾値を変更する必要が発生した際にHBAドライバ113に渡される閾値設定コマンド200の例である。閾値設定コマンドは図4でしめされるテーブルの構造をもったコマンドであり、性能監視エージェント112とHBAドライバ113の間でやりとりされる。閾値設定コマンド200はINDEX205を主キーとし、OS111が論理WWNaを用いて使用するHBAのMBPSの閾値およびIOPSの閾値と、OS111が論理WWNaを用いて使用するHBAに接続される論理ボリューム#1 191と論理ボリューム#2 193のMBPSの閾値およびIOPSの閾値を設定することができ、フラグ210で論理HBAの閾値設定か論理ボリュームの閾値設定かを判別することが可能である。
フラグ210が論理HBAの情報を表すとき(HBA)、物理WWNフィールド215、論理WWNフィールド200、現在IOPSフィールド235、現在MBPSフィールド240が有効であり、ストレージポートWWNフィールド225、論理ボリューム番号フィールド230は無効である。物理WWNフィールド215にはHBA140の物理WWNがセットされ、論理WWNフィールド220にはOS111がHBA140を使用する際に使う論理WWNがセットされ、設定IOPS閾値フィールド235にはOS111がHBA140を現在時刻において使用可能IOPSの閾値がセットされ、現在MBPSフィールド240にはOS111がHBA140現在時刻において使用可能なMBPSの閾値がセットされる。HBAドライバ113は後述する方式で設定IOPS閾値および設定MBPS閾値の値をこえるIOオペレーションをSAN上に送信しないようにIOオペレーション送信を遅延させる。
フラグ210が論理ボリュームの情報を表すとき(LU)、物理WWN215のフィールドは無効となり、その他のフィールドは有効である。この際、論理WWNフィールド220にはOS111がHBA140を使用する際に使う論理WWNがセットされ、ストレージポートWWNフィールド225には、論理ボリュームが接続されるストレージ装置のポートのWWNがセットされ、論理ボリューム番号フィールド230にはストレージ装置が論理ボリュームに割り当てたボリューム番号がセットされ、設定IOPS閾値フィールド235にはOS111が論理ボリューム191または論理ボリューム193を現在時刻において使用可能なIOPSの閾値がセットされ、設定MBPS閾値フィールド335にはOS111が論理ボリューム191または論理ボリューム193を現在時刻において使用可能なMBPSの閾値がセットされる。HBAドライバ113は各論理ボリュームに対しても設定IOPS閾値および設定MBPS閾値の値をこえるIOオペレーションをSAN上に送信しないようにIOオペレーション送信を遅延させる。HBAドライバ113は性能監視エージェントから送信された閾値設定コマンドにセットされる論理HBAの設定閾値と論理ボリュームの設定閾値をHBAドライバ内部に保存し、IOオペレーション送信をする機会毎に閾値を超えてIOオペレーション送信していないかをチェックする。
図5は本発明の実施例における性能監視エージェント112の構造の例である。性能監視エージェント112はエージェント起動時から終了時まで常に性能情報監視処理400を動作し続ける。性能情報監視処理400は性能情報取得処理440によって、性能情報取得コマンドの応答値300を取得し、通信可能な他の全ての性能監視エージェントに対して応答値300を送信し、また通信可能な他の全ての性能監視エージェントから応答値300を取得し、性能監視エージェントのテーブルを更新し、閾値設定コマンド200を作成し、閾値設定コマンド発行処理470により、HBAドライバ113に閾値設定処理を行わせる。この後性能監視エージェント112はポーリング時間で指定された時間を待ち、再び性能情報取得コマンドをHBAドライバ113にむけて発行する。性能監視エージェント112はHBAドライバ113に対して閾値を設定するための情報として、各種テーブルをもっている。図6から図21までが性能監視エージェントが保持する各種テーブル情報を表す。
図6は論理HBA性能情報テーブルの例である。論理HBA性能情報テーブル1100は図6で示されるテーブル構造を持ち、性能情報取得コマンドの応答300をHBAドライバ113から取得するか、他の性能監視エージェントから性能情報取得コマンドの応答を取得するかした際に更新される。論理HBA性能情報テーブル1100はINDEX1105を主キーとし、性能情報取得コマンドの応答値300が示すテーブルのレコードのフラグフィールド310が論理HBAを示す場合に更新されレコードの各値が各フィールドに格納される。また格納の際には更新フラグフィールド1130がONにセットされる。
図7は論理ボリューム性能情報テーブルの例である。論理ボリューム性能情報テーブル1150は図7で示されるテーブル構造を持ち、性能情報取得コマンドの応答300をHBAドライバ113から取得するか、他の性能監視エージェントから性能情報取得コマンドの応答を取得するかした際に更新される。論理ボリューム性能情報テーブル1150はINDEX1155を主キーとし、性能情報取得コマンドの応答値300が示すテーブルのレコードのフラグフィールド310が論理ボリュームを示す場合に更新されレコードの各値が各フィールドに格納される。また格納の際には更新フラグフィールド1185がONにセットされる。
図8は物理HBA性能情報テーブルの例である。物理HBA性能情報テーブル1200は図8で示されるテーブル構造を持ち、性能情報取得コマンドの応答300から論理HBA性能情報テーブル1100が更新された際に更新される。物理HBA性能情報テーブル1200はINDEX1205を主キーとし、物理WWNフィールド1210毎に管理され、物理WWNを同じくする論理WWNが使用した現在IOPS1215と現在MBPS1220の合計値が格納される。
図9はストレージポート性能情報テーブルの例である。ストレージポート性能情報テーブル1250は図9で示されるテーブル構造を持ち、性能情報取得コマンドの応答300から論理ボリューム性能情報テーブル1150が更新された際に更新される。ストレージポート性能情報テーブル1250はINDEX1255を主キーとし、ストレージポートWWNフィールド1260毎に管理され、ストレージポートWWNを同じくする論理ボリュームが使用した現在IOPS1265と現在MBPS1270の合計値が格納される。
図10はHBA用MBPS抑止レベルテーブルの例である。HBA用MBPS抑止レベルテーブル1500は図10で示されるテーブル構造を持ち、各値はユーザによって設定される。図10の例では4段階の抑止レベルを設定することが可能であり、INDEXフィールド1505を主キーとし、論理WWNフィールド1510毎に抑止レベルを設定可能であり、前記抑止レベルは各OSが使用する物理HBAの合計MBPSによって、各OSの論理HBAの使用MBPSを段階的に抑止するための基準値として使用される。物理HBAの合計MBPSが抑止レベル1フィールド1515の値を超えた場合、抑止レベル2フィールド1520の値を超えた場合、抑止レベル3フィールド1525の値を超えた場合、抑止レベル4フィールド1530の値を超えた場合に各抑止レベル毎に指定された閾値以上のデータ転送を抑止する。
図11はHBA用IOPS抑止レベルテーブルの例である。HBA用IOPS抑止レベルテーブル1550は図11で示されるテーブル構造を持ち、各値はユーザによって設定される。HBA用IOPS抑止レベルテーブル1550はHBA用MBPS抑止レベルテーブル1500と同様に各フィールドが定義される。
図12はHBA用MBPS現在設定情報テーブルの例である。HBA用MBPS現在設定情報テーブル1400は図12で示されるテーブル構造を持ち、HBAドライバ113に対して閾値を設定した際、性能監視エージェントがHBAドライバに現在設定している閾値を管理する目的で用いられる。性能監視エージェントは現在設定されている値と新たに設定される値を比較し、同じであれば新たに閾値を設定する必要もないので、閾値設定にかかるオーバヘッドを削減することが可能である。HBA用MBPS現在設定情報テーブルはINDEX1405を主キーとし、論理WWNフィールド1410に各OSに存在する各論理WWNを格納し、各論理WWN毎に設定値フィールド1415に設定値を保存する。
図13はHBA用IOPS現在設定情報テーブルの例である。HBA用IOPS現在設定情報テーブル1450はHBA用MBPS現在設定情報テーブルとほぼ同様に定義される。
図14はHBA用MBPS閾値設定テーブルの例である。HBA用閾値設定テーブル1300は図14で示されるテーブル構造を持ち、HBAドライバ113に対して設定する閾値を示したものである。設定される閾値はHBA用抑止レベルテーブル1500の各抑止レベルに基づいて定められる。図14の例ではHBA用MBPS抑止レベルテーブルで設定された値に応じて4段階の閾値を設定することが可能であり、INDEXフィールド1305を主キーとし、論理WWNフィールド1310毎に閾値を設定可能であり、前記閾値は各OSが使用する物理HBAの合計MBPSによって、各OSの論理HBAの使用MBPSを抑止するための閾値として使用される。物理HBAの合計MBPSが抑止レベル1フィールド1515の値を超えた場合はレベル1閾値1315、抑止レベル2フィールド1520の値を超えた場合はレベル2閾値1320、抑止レベル3フィールド1525の値を超えた場合はレベル3閾値1325、抑止レベル4フィールド1530の値を超えた場合はレベル4閾値1330を対象のHBAに設定することによりデータ転送性能を制限する。
図15はHBA用IOPS閾値設定テーブルの例である。HBA用IOPS閾値設定テーブル1350はHBA用MBPS閾値設定テーブルとほぼ同様に定義される。
図16はストレージポート用MBPS抑止レベルテーブルの例である。ストレージポート用MBPS抑止レベルテーブル1800は図16で示されるテーブル構造を持ち、各値はユーザによって設定される。図16の例では4段階の抑止レベルを設定することが可能であり、INDEXフィールド1805を主キーとし、論理WWNフィールド1810毎に抑止レベルを設定可能であり、前記抑止レベルは各OSが使用する論理ボリュームのストレージポート毎の合計MBPSによって、各OSの論理ボリュームの使用MBPSを段階的に抑止するための基準値として使用される。ストレージポートの合計MBPSが抑止レベル1フィールド1820の値を超えた場合、抑止レベル2フィールド1825の値を超えた場合、抑止レベル3フィールド1830の値を超えた場合、抑止レベル4フィールド1835の値を超えた場合に各抑止レベル毎に指定された閾値以上のデータ転送を抑止する。
図17はストレージポート用IOPS抑止レベルテーブルの例である。ストレージポート用IOPS抑止レベルテーブル1850は図17で示されるテーブル構造を持ち、各値はユーザによって設定される。ストレージポート用IOPS抑止レベルテーブル1850はストレージポート用MBPS抑止レベルテーブル1800と同様に各フィールドが定義される。
図18はストレージポート用MBPS現在設定情報テーブルの例である。HBA用MBPS現在設定情報テーブル1700は図18で示されるテーブル構造を持ち、本テーブルの利用目的はHBA用MBPS現在設定情報テーブル1400と同様であり、閾値設定にかかるオーバヘッドを削減することを目的とする。ストレージポート用MBPS現在設定情報テーブルはINDEX1705を主キーとし、論理WWNフィールド1710に同一OSに存在する各論理WWNを論理ボリュームフィールド1715に論理WWNを使用する論理HBAに接続される論理ボリューム番号を格納し、各論理HBAに接続される論理ボリューム毎に設定値フィールド1715に設定値を保存する。
図19はストレージポート用IOPS現在設定情報テーブルの例である。ストレージポート用IOPS現在設定情報テーブル1750はストレージポート用MBPS現在設定情報テーブル1700とほぼ同様に定義される。
図20はストレージポート用MBPS閾値設定テーブルの例である。ストレージポート用閾値設定テーブル1600は図20で示されるテーブル構造を持ち、HBAドライバ113に対して設定する閾値を示したものである。設定される閾値はストレージポート用抑止レベルテーブル1800の各抑止レベルに基づいて定められる。図20の例ではストレージポート用MBPS抑止レベルテーブル1800で設定された値に応じて4段階の閾値を設定することが可能であり、INDEXフィールド1605を主キーとし、論理ボリュームフィールド1610毎に閾値を設定可能であり、前記閾値は各OSが使用するストレージポートの合計MBPSによって、各OSの論理ボリュームの使用MBPSを抑止するための閾値として使用される。ストレージポートの合計MBPSが抑止レベル1フィールド1820の値を超えた場合はレベル1閾値1620、抑止レベル2フィールド1825の値を超えた場合はレベル2閾値1625、抑止レベル3フィールド1830の値を超えた場合はレベル3閾値1630、抑止レベル4フィールド1835の値を超えた場合はレベル4閾値1635を対象のHBAに設定することによりデータ転送性能を制限する。
図21はストレージポート用IOPS閾値設定テーブルの例である。ストレージポート用IOPS閾値設定テーブル1650はストレージポート用MBPS閾値設定テーブル1600とほぼ同様に定義される。
図5から図21の説明で示したとおり、性能監視エージェント112で利用するデータはテーブルとしてデータベース化して管理することが可能であるため、現在一般的に利用されているデータベース管理システム(以下DBMS)を用いることにより、性能監視エージェント112の各データを管理する処理を独自に実装するよりも効率性、安全性の点で信頼性が増す。
図22は本発明の実施例において性能監視エージェントで動作する性能監視動作処理のフローチャートの例である。性能監視動作処理400は性能監視エージェント112がユーザによって起動されるかOS立ちあげ時に自動的に起動されるかした際に動作を開始し、性能監視動作処理400の内部に終了ルーチンを持たず、定期的に動作し続ける。性能監視エージェント112はステップ410においてHBAドライバに対して性能情報取得コマンドを発行する。性能情報取得コマンド発行処理の実装はOSに用意されているユーザアプリケーションとデバイスドライバの通信の為のAPIを利用することにより実現可能である。HBAドライバ113は性能監視エージェント112の要求に対して、図3で示される性能情報取得コマンドの応答値300を取得する。性能監視エージェント112はステップ410において取得した性能情報コマンドの応答値を他の全ての性能監視エージェントに対して送信する(ステップ420)。性能監視エージェント同士はネットワークインタフェースにより、TCP/IPプロトコルを用いたアプリケーション通信を行う。性能監視エージェント112はステップ430において、通信可能な他のすべての性能監視エージェントから性能情報取得コマンドの応答値を受け取るまで待つ。全ての性能監視エージェントから性能情報取得コマンドを受け取ったら、性能監視エージェント112は受け取った他の性能監視エージェントの各応答値対して、論理HBA性能情報テーブル1100および論理ボリューム性能情報テーブル1150の更新処理を行う(ステップ440)。性能監視エージェント112はステップ450において更新された論理HBA性能情報テーブル1100をもとに物理HBA性能情報テーブル1200の更新処理を行う。性能監視エージェント112はステップ460において更新された論理ボリューム性能テーブル1150をもとにストレージポート性能情報テーブル1250の更新処理を行う。性能監視エージェント112はステップ470およびステップ480において閾値設定コマンド200を作成する。ステップ470では論理HBA用の設定閾値を閾値設定コマンド200に追加し、ステップ480では論理ボリューム用の設定閾値を閾値設定コマンド200に追加する。作成した閾値設定コマンドはステップ490によってHBAドライバ113へ発行され、HBAドライバ113は閾値設定コマンド200で指定された閾値をHBAドライバ内部にセットする。性能監視エージェント112はステップ495においてポーリング時間で指定された時間待つ。数100ミリセカンドから数秒程度の時間が妥当な時間である。一定のポーリング時間まった後、性能監視エージェント112は再びステップ410から動作を行う。
図23は本発明の実施例において論理HBA性能情報テーブルおよび論理ボリューム性能情報テーブルを更新する処理のフローチャートの例である。処理4400は与えられた性能情報コマンドの応答値のレコードを先頭から順次調べるためにステップ4405において変数POINTに1をセットする。ステップ4410において調査対象のレコードが存在するか否かをチェックし、存在しない場合はステップ4460で処理を終了する。存在する場合ステップ4410において、該当のレコードを変数レコードAにセットする。ステップ4420でレコードAのフラグフィールドが論理HBAをさしているか論理ボリュームをさしているかをチェックし、論理HBAならば論理HBA性能情報テーブル1100を更新するためにステップ4425に分岐し、論理ボリュームならば論理ボリューム性能情報テーブル1150を更新するためにステップ4440に分岐する。ステップ4425では論理HBA性能情報テーブル1100にレコードAに対応するレコードが記録されているかをチェックし、記録されているならばステップ4430で該当レコードの現在IOPSと現在MBPSをレコードAのものに更新し、記録されていないならばステップ4435で論理HBA性能情報テーブル1110に新規にレコードを追加する。ステップ4420でフラグが論理ボリュームをさしていた場合、ステップ4440で論理ボリューム性能情報テーブル1150にレコードAに対応するレコードが記録されているかをチェックし、記録されているならばステップ4445で該当レコードの現在IOPSと現在MBPSをレコードAのものに更新し、記録されていないならばステップ4450で論理ボリューム性能情報テーブル1150に新規にレコードを追加する。ステップ4430、ステップ4435、ステップ4445、ステップ4450は全てステップ4445に進み、更新または追加されたレコードの更新フラグフィールドをONにセットする。このフィールドは物理HBA性能情報テーブル1200またはストレージポート性能情報テーブル1250を更新する際に使用される。更新後、POINTを1加算しステップ4410に戻る。更新処理4400はテーブル内の全てのレコードに対して処理を終えると4460に行き処理を終了する。
図24は本発明の実施例において物理HBA性能情報テーブル1200を更新する処理のフローチャートの例である。処理4500は論理HBA性能情報テーブル1100のレコードを先頭から順次調べるためにステップ4505において変数POINTに1をセットする。ステップ4510において各論理HBAの合計IOPSおよび合計MBPSを算出するための変数としてI_VALUEとM_VALUEにそれぞれ0をセットする。ステップ4515においてINDEXがPOINTのレコードを取得し、取得したレコードを変数レコードCにセットする。ステップ4520においてレコードCの更新フラグフィールド1130を調べる。更新フラグフィールドがONの場合は該当レコードの現在IOPS1120および現在MBPS1125が合計値I_VALUEおよび合計値M_VALUEに加算されていないことを表す。更新フラグフィールドがONの場合はステップ4525に分岐する。ステップ4525ではI_VALUEおよびM_VALUEにレコードCの現在IOPSおよび現在MBPSを加える。ステップ4530ではレコードCの更新フラグをOFFにセットする。ステップ4535からステップ4565までは、レコードCと同じ物理HBAを持つ論理HBAの性能データがテーブル内に存在するかを調べ、存在する場合はI_VALUE、M_VALUEに加算するための処理である。ステップ4535では変数SEARCHにPOINTをセットする。ステップ4540でSEARCHに1を加えSEARCHが論理HBA性能情報テーブルのレコード数を超えていないかチェックする。ここで最初から1を加算するのはレコードCの次のレコードから調査を開始するためである。レコード数を超えていない場合はステップ4545でINDEXがSEARCHのレコードを取得し、変数レコードDにセットする。ステップ4550でレコードCとレコードDの物理WWNを比較して一致していない場合は、レコードDはレコードCと異なる物理HBAに関するデータと判断し、ステップ4540に戻り、次のレコードを調べる。ステップ4550で一致している場合は、ステップ4555にてI_VALUEにレコードDの現在IOPSをM_VALUEにレコードDの現在MBPSを加算する。ステップ4560ではレコードDの更新フラグをOFFにセットし、ステップ4540に戻り、次のレコードを調べる。ステップ4540でSEARCHがレコード数を超えた場合は該当物理HBAの合計IOPSと合計MBPSは確定したものとし、ステップ4570で物理HBA性能情報テーブル1200の更新処理を行う。ステップ4575でPOINTに1を加算してステップ4580でPOINTが論理HBA性能情報テーブル1110のレコード数を超えていないかどうかをチェックし、超えていない場合はステップ4510に戻って再び物理HBAの合計IOPS、合計MBPSを算出する処理を行う。ステップ4580でPOINTが論理HBA性能情報テーブルのレコード数を超えている場合はステップ4585で処理終了する。
ストレージ性能情報テーブル更新処理は物理HBA性能情報テーブル更新処理4500の処理と同様の処理で更新可能である。
図25は本発明の実施例において閾値設定コマンド200のテーブルにHBA用レコードを追加する処理のフローチャートの例である。処理4700は論理HBA性能情報テーブル1100のレコードを先頭から順次調べるためにステップ4705において変数L_POINTに0をセットする。ステップ4710においてL_POINTに1加算し、L_POINTが論理HBA性能情報テーブル1100のレコード数を超えていないかチェックする。ステップ4715においてINDEXがL_POINTのレコードを論理HBA性能情報テーブル1100から取得し、取得したレコードを変数レコードLにセットする。ステップ4720においてレコードLの論理WWNが自OSのHBAドライバに割り当てられている論理WWNであるかどうかを判定する。自OSのHBAドライバに割り当てられている論理WWNでない場合、ステップ4710に戻り、新たな論理HBA性能情報テーブル1100のレコードを取得する。レコードLの論理WWNが自OSで管理している論理WWNの場合は、ステップ4725において、HBA用MBPS設定閾値取得処理を実行し、HBAアダプタに設定するMBPSの閾値を取得する。取得した閾値をM_VALUEにセットする。HBA用MBPS設定閾値取得処理4000に関しては後述する。ステップ4730において、HBA用IOPS設定閾値取得処理を実行し、HBAアダプタに設定するMBPSの閾値を取得する。取得した閾値をI_VALUEにセットする。ステップ4735においてHBA用MBPS現在設定情報テーブル1400からレコードLの論理WWNと一致するレコードを取得し、取得したレコードを変数レコードCにセットする。ステップ4740においてHBA用IOPS現在設定情報テーブル1450からレコードLの論理WWNと一致するレコードを取得し、取得したレコードを変数レコードDにセットする。ステップ4745においてM_VALUEとレコードCの設定値の比較、I_VALUEとレコードDの設定値を比較し同じであれば該当論理HBAに対するHBAドライバの設定閾値の更新は不要と判断し、ステップ4710に戻る。M_VALUEとレコードCの設定値、I_VALUEとレコードDの設定値のどちらかが一致していない場合は、ステップ4750において閾値設定コマンドにレコードを追加し、フラグを論理HBAとして、設定MBPSにM_VALUE、設定IOPSにI_VALUEをセットする。ステップ4755において、HBA用MBPS現在設定情報テーブル1400およびHBA用IOPS現在設定情報テーブル1450の論理WWNフィールドがレコードLの論理WWNと一致するレコードの設定値をそれぞれM_VALUE,I_VALUEに更新する。更新後ステップ4710に戻る。ステップ4710でL_POINTが論理HBA性能情報テーブルのレコード数を超えた場合はステップ4760に進み閾値設定コマンドのHBA用レコード追加処理を終了する。
図26は本発明の実施例においてHBAドライバに対して該当HBAのMBPSの設定閾値を取得する処理のフローチャートの例である。図26のフローチャートでは物理HBA全体の使用しているMBPSに応じて個別の各論理HBAが使用するMBPSを決定するための処理がしめされている。HBA用MBPS設定閾値取得処理4000は2つの入力値を持ち、入力値1をP_VALUEに入力値2をL_VALUEに設定する。図25のステップ4725において図26の処理4000を呼ぶ際には、入力値1のP_VALUEにはレコードLの物理WWNがセットされ、入力値2のL_VALUEにはレコードLの論理WWNがセットされる。ステップ4005において、物理HBA性能情報テーブル1200から物理WWNがP_VALUEのレコードを取得し、取得したレコードをレコードPにセットする。ステップ4010において、HBA用MBPS抑止レベルテーブル1500から論理WWNがL_VALUEのレコードを取得し、取得したレコードをレコードYにセットする。ステップ4015においてレコードYの抑止レベル1が0でなく、かつレコードPの現在MBPSがレコードYの抑止レベル1よりも大きい場合は、ステップ4025にすすむ。ステップ4015においてレコードYの抑止レベル1が0またはレコードPの現在MBPSがレコードYの抑止レベル1以下の場合は、物理HBAに対する負荷はWWNがL_VALUEで与えられる論理HBAに対して閾値を設定するほど高くないと判断し、論理HBAに設定する閾値を与えるRETに0をセットする(ステップ4020)。HBAドライバは閾値が0に設定された場合はMBPSまたはIOPSを制限することなく動作するものとする。ステップ4025においてレコードYの抑止レベル2が0でなく、かつレコードPの現在MBPSがレコードYの抑止レベル2よりも大きい場合は、ステップ4035にすすむ。ステップ4025においてレコードYの抑止レベル2が0またはレコードPの現在MBPSがレコードYの抑止レベル2以下の場合は、ステップ4030においてHBA用MBPS閾値設定テーブルで論理WWNフィールドがL_VALUEのレコードを探し、該当レコードのレベル1閾値をRETにセットし、WWNがL_VALUEで与えられる論理HBAに対してセットされるようにする。ステップ4035の判定でNOの分岐する場合はステップ4040に進みHBA用MBPS閾値設定テーブルで論理WWNフィールドがL_VALUEのレコードを探し、該当レコードのレベル2閾値をRETにセットする。ステップ4035の判定でYESに分岐する場合はステップ4045に進み、ステップ4045の判定でNOに分岐する場合はステップ4050に進みHBA用MBPS閾値設定テーブルで論理WWNフィールドがL_VALUEのレコードを探し、該当レコードのレベル3閾値をRETにセットする。ステップ4045の判定でYESに分岐する場合はステップ4060に進みHBA用MBPS閾値設定テーブルで論理WWNフィールドがL_VALUEのレコードを探し、該当レコードのレベル4閾値をRETにセットする。ステップ4020、ステップ4030、ステップ4040、ステップ4050、ステップ4060でRETに閾値が設定されたら、ステップ4070に進み、応答値としてRETを返し、HBA用MBPS設定閾値取得処理を終了する。
図22のステップ480で閾値設定コマンドに論理ボリューム用のレコードを追加する処理を行なうが、図25と図26のフローチャートで示される処理と同様の処理で閾値設定コマンドに論理ボリューム用のレコードを追加する処理を行える。
図27は本発明の実施例を実現するためにHBAドライバ113に追加されるデータおよび処理の例である。HBA用MBPS閾値1101、HBA用IOPS閾値1102、論理ボリューム#1用MBPS閾値1103、論理ボリューム#1用IOPS閾値1104、論理ボリューム#2用MBPS閾値1105、論理ボリューム#2用IOPS閾値1106は性能監視エージェント112から閾値設定コマンド200が発行された際、閾値設定処理1200がよびだされ、閾値設定コマンドのテーブルの各レコードを参照して対応する領域に閾値がセットされる。HBAドライバ113がSAN上にコマンドを送信する際に起動処理1400がよびだされ、起動処理1400はSAN上にコマンドを送信する際にコマンドを一旦コマンド起動待ちキュー1120に入れる。コマンド待ちキューはHBA用の起動待ちキュー1125とHBAに接続される各論理ボリューム用の起動待ちキュー1130、1135が存在し、1つのコマンド待ちキューはHBA用の起動待ちキューといずれかの論理ボリューム用の起動待ちキューの2つにキューイングされる。起動処理1400はHBA用起動待ちキューの先頭のコマンドを設定された閾値に応じてフレーム送信可能かどうかを判定し、発行可能な場合はフレーム上に送信し、性能算出用キュー1150にいれ、送信可能でない場合、タイマー処理1200を呼び出し、一定の時間が経過してから、再びHBA用起動待ちキューの先頭のコマンドを送信する。性能情報リスト応答処理1500は性能監視エージェントから性能情報取得コマンド300が発行された際に呼び出される処理で、性能算出用キュー1150を用いて性能情報コマンド300の応答値のテーブルに性能情報のレコードを格納する。
図28は本発明の実施例1における性能算出用キューにキューイングされるコマンドの為に追加されるデータの例である。性能算出用キューにキューイングされるコマンド1156には転送開始時刻1157と転送データサイズ1158を持つ。これらを用いて論理HBAや論理ボリュームのIOPSおよびMBPSを算出する。ここで
図29は本発明の実施例における性能算出処理のフローチャートの例である。性能算出処理1600は性能監視エージェント112から性能情報取得コマンド300が発行された場合または、HBAドライバ113が起動待ちキュー制御処理を行なった際に呼び出される。ステップ1601として応答値用の変数M_VALUEとI_VALUEと総転送データサイズと総IOオペレーション回数に0をセットする。ステップ1605において、ポインタを性能算出対象のHBA性能算出用キューまたは論理ボリューム用性能算出用キューの末尾にセットする。ステップ1610ではシステムの現在時刻を取得する。ステップ1615において、ポインタ位置にコマンドが存在するかどうかを調べ、存在しないならばキュー内のすべてのコマンドを調査したということでステップ1650にすすむ。ステップ1620では現在時刻からポインタ位置のコマンドの転送開始時刻を減算し、性能算出基準時間1110以内であるかを判定する。性能算出基準時間1110以上現在時刻から離れている場合は性能算出用のコマンドとして不適当として、それを見つけるとステップ1650にすすむ。性能算出基準時間1110以内であれば性能算出対象のコマンドであると判断し、ステップ1625に進む。ステップ1625において総転送サイズにポインタ位置のコマンドの転送データサイズ転送データサイズを加算する。ステップ1630においてMBPSに(総転送サイズ)/((現在時刻)−(ポインタ位置のコマンドの転送開始時刻))をセットする。ステップ1635において総転送フレーム数に1加算する。ステップ1640においてIOPSに(総IOオペレーション回数)/((現在時刻)−(ポインタ位置のコマンドの転送開始時刻))をセットする。ステップ1645においてポインタを先頭方向に一つ進めて、ステッ1615に戻る。ステップ1650で応答値1としてM_VALUE、応答値2としてI_VALUEを返し、性能算出処理を終了する。
図30は本発明の実施例1における性能情報取得コマンド応答処理のフローチャートの例である。性能情報取得コマンド300が性能監視エージェントから発行された際に性能情報取得コマンド応答処理1500がよばれ、ステップ1505において性能算出処理により現在のHBAのIOPSおよびMBPSを取得する。ステップ1510において性能算出対象の論理ボリュームが存在するかを判定し、存在するならばステップ1515において該当論理ボリュームの現在のIOPSおよびMBPSを取得する。取得後再びステップ1510において性能算出対象の論理ボリュームが存在するかを判定し、存在しないならばステップ1520において性能情報取得コマンド応答用の性能情報リスト300を作成する。応答用の性能情報リスト300を作成後、ステップ1525において性能監視エージェントに対して性能情報リスト300をかえし、ステップ1530において性能情報取得コマンド応答処理を終了する。
図31は本発明の実施例1における起動処理のフローチャートの例である。起動処理1400はステップ1405においてコマンド起動を受付、ステップ1410においてHBA用起動待ちキュー1125にエンキュー、ステップ1415において論理ボリューム用起動待ちキュー1130または1135にエンキューし、ステップ1420において起動待ちキュー制御処理1700を行い、ステップ1425において起動処理を終了する。
図32は本発明の実施例1における起動待ちキュー制御処理のフローチャートの例である。起動待ちキュー制御処理1700はステップ1705においてポインタをHBA用起動待ちキューの先頭にセットする。ステップ1710においてポインタ位置にコマンドが存在するならば、ステップ1715において性能算出処理により現在のHBAのMBPSおよびIOPSを取得する。ステップ1720においてHBAのIOPSがHBA用IOPS閾値以内であり、かつMBPSがHBA用MBPS閾値以内であればステップ1725に進む。ステップ1725において性能算出処理により対象論理ボリュームの現在のMBPSおよびIOPSを取得し、ステップ1730において対象論理ボリュームのIOPSが対象論理ボリューム用IOPS閾値以内であり、かつMBPSが対象論理ボリューム用MBPS閾値以内であればステップ1735に進みフレーム発行処理を行ない、ステップ1740においてポインタを末尾方向に1すすめてステップ1710にもどる。ステップ1710においてポインタ位置にコマンドが存在しない場合、ステップ1750にて起動待ちキュー処理を終了する。ステップ1720またはステップ1730においてIOPSまたはMBPSが閾値を超えた場合はステップ1745においてタイマー制御処理をおこない、しかるべき時刻に再び起動待ちキュー制御処理を行う。タイマー制御処理を行なったあとはステップ1750において起動待ちキュー制御処理を終了する。
図33は本発明の実施例1におけるフレーム発行処理のフローチャートの例である。フレーム発行処理1800はステップ1805においてHBA用起動待ちキュー1125から発行するコマンドをデキューする。ステップ1810において論理ボリューム用起動待ちキュー1130から発行するコマンドをデキューする。ステップ1815において現在時刻を取得する。ステップ1820において、ステップ1805、1810においてデキューしたコマンドをファイバチャネルフレームとしてSAN上に送信する。ステップ1825においてHBA用性能算出用キュー1155の先頭のコマンドをデキューする。ステップ1830において各論理ボリューム用性能算出用キュー1160、1165の先頭のコマンドをデキューする。ステップ1835において取得した現在時刻を用い、HBA用性能算出用キューに発行したコマンドをエンキューする。ステップ1840において取得した現在時刻を用い、論理ボリューム用性能算出用キューに発行したコマンドをエンキューする。ステップ1845においてフレーム発行処理を終了する。
図34は本発明の実施例1におけるタイマー制御処理のフローチャートの例である。タイマー制御処理1900はステップ1905において(総転送サイズ)/MBPS閾値+現在時刻を計算する。これはHBAドライバがIOオペレーションをこの間おこなわなかったとしてMBPSが閾値になる時刻を表す。同様に(総IOオペレーション回数)/IOPS閾値+現在時刻を計算し、2つの結果のうち小さい方をタイマー予定時刻として取得する。ステップ1910においてOSのタイマー処理機構に基づき取得したタイマー予定時刻をもとにタイマー起動をかける。これはタイマー予定時刻にタイマー処理1300を呼び出すことが目的である。タイマー起動をかけたあと、ステップ1915に進みタイマー制御処理を終了する。
図35は本発明の実施例1におけるタイマー処理の例である。タイマー処理1300は呼び出されるとステップ1305において起動待ちキュー制御1700を呼び出し、ステップ1310において処理を終了する。
本発明を利用したシステムの全体構成図の例 本発明の実施例において性能監視エージェントとHBAドライバの接続関係を表したソフトウェア構成図 本発明の実施例における性能情報コマンドの例 本発明の実施例における閾値設定コマンドの例 本発明の実施例における性能監視エージェントの例 本発明の実施例における論理HBA性能情報テーブルの例 本発明の実施例における論理ボリューム性能情報テーブルの例 本発明の実施例における物理HBA性能情報テーブルの例 本発明の実施例における物理ストレージポート性能情報テーブルの例 本発明の実施例におけるHBA用MBPS抑止レベルテーブルの例 本発明の実施例におけるHBA用IOPS抑止レベルテーブルの例 本発明の実施例におけるHBA用MBPS現在設定情報テーブルの例 本発明の実施例におけるHBA用IOPS現在設定情報テーブルの例 本発明の実施例におけるHBA用MBPS閾値設定テーブルの例 本発明の実施例におけるHBA用IOPS閾値設定テーブルの例 本発明の実施例におけるストレージポート用MBPS抑止レベルテーブルの例 本発明の実施例におけるストレージポート用IOPS抑止レベルテーブルの例 本発明の実施例におけるストレージポート用MBPS現在設定情報テーブルの例 本発明の実施例におけるストレージポート用IOPS現在設定情報テーブルの例 本発明の実施例におけるストレージポート用MBPS現在設定情報テーブルの例 本発明の実施例におけるストレージポート用IOPS現在設定情報テーブルの例 本発明の実施例における性能監視エージェントで動作する性能監視動作処理のフローチャートの例 本発明の実施例における論理HBA性能情報テーブルおよび論理ボリューム性能情報テーブルを更新する処理のフローチャートの例 本発明の実施例における物理HBA性能情報テーブルを更新する処理のフローチャートの例 本発明の実施例における閾値設定コマンド200のテーブルにHBA用レコードを追加する処理のフローチャートの例 本発明の実施例におけるHBAドライバに対して該当HBAのMBPSの閾値を設定するする処理のフローチャートの例 本発明の実施例を実現するためにHBAドライバ113に追加されるデータおよび処理の例 本発明の実施例における性能算出用キューにキューイングされるコマンドの為に追加されるデータの例 本発明の実施例における性能算出処理のフローチャートの例 本発明の実施例における性能情報リスト応答処理のフローチャートの例 本発明の実施例における起動処理のフローチャートの例 本発明の実施例における起動待ちキュー制御処理のフローチャートの例 本発明の実施例におけるフレーム発行処理のフローチャートの例 本発明の実施例におけるタイマー制御処理のフローチャートの例 本発明の実施例におけるタイマー処理のフローチャートの例
符号の説明
100 サーバ
110、120 LPAR
111、121 OS
112、122 性能監視エージェント
113、123 HBAドライバ
140 HBA
150 NIC
160 ファイバチャネルスイッチ
170 ストレージ装置
191、192、193、194 論理ボリューム
200 閾値設定コマンド
300 性能情報取得コマンド

Claims (6)

  1. 複数のOSが動作するサーバ装置と複数の論理ボリュームを有するストレージ装置が前記サーバ装置に備えられたホストバスアダプタ(HBA)を介してデータ転送を行う計算機システムにおいて、前記HBAは全てのOSによって共有され、各OSは前記HBAを制御するHBAドライバを含み、前記HBAドライバは前記OSからストレージ装置に対して発行されるデータ転送の為のコマンドを中継し前記HBAまたは前記ストレージ装置の論理ボリュームへの前記データ転送コマンド送受信性能を算出する手段と、前記データ転送コマンド送受信を所定の性能以上実行することを抑止する手段を有することを特徴とする計算機システム。
  2. 前記データ転送コマンド送受信性能は単位時間当たりにHBAドライバが発行するデータ転送コマンド送受信回数または単位時間当たりの合計データ転送サイズであることを特徴とする請求項1記載の計算機システム。
  3. 前記複数のOSを相互に接続し、各OSが有する前記HBA又は前記ストレージ装置の論理ボリュームのデータ転送コマンド送受信性能に関する情報を相互に送受信するインタフェースを備えたことを特徴とする請求項1又は2記載の計算機システム。
  4. 全OSのデータ転送コマンド送受信性能の合計値をもとに、各OSが前記HBAにデータ転送コマンド送受信性能の閾値を設定することを特徴とする請求項項1乃至3記載の計算機システム。
  5. 同一のストレージ装置のポートを共有する全ての論理ボリュームに対して前記HBAから送受信されるデータ転送コマンド送受信性能の合計値をもとに、各論理ボリュームに対して前記HBAにデータ転送コマンド送受信性能の閾値を設定することを特徴とする請求項項1乃至4記載の計算機システム。
  6. 前記複数のOS間のインタフェースにより各OSはデータ転送コマンド送受信性能に関する情報を一定間隔の時間で送受信し、各OSは受信した他OSのデータ転送コマンド送受信性能に関する情報をもとに前記HBAにデータ転送コマンド送受信性能の閾値を設定することを特徴とする請求項項3乃至5記載の計算機システム。
JP2007018669A 2007-01-30 2007-01-30 計算機システム Pending JP2008186211A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007018669A JP2008186211A (ja) 2007-01-30 2007-01-30 計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007018669A JP2008186211A (ja) 2007-01-30 2007-01-30 計算機システム

Publications (1)

Publication Number Publication Date
JP2008186211A true JP2008186211A (ja) 2008-08-14

Family

ID=39729214

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007018669A Pending JP2008186211A (ja) 2007-01-30 2007-01-30 計算機システム

Country Status (1)

Country Link
JP (1) JP2008186211A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010113707A (ja) * 2008-11-10 2010-05-20 Internatl Business Mach Corp <Ibm> 物理及び仮想マルチパス入出力を動的に管理する方法、装置、システム、及びプログラム
JP2010211549A (ja) * 2009-03-11 2010-09-24 Fujitsu Ltd 管理プログラム、管理装置および管理方法
JP2013127758A (ja) * 2011-12-19 2013-06-27 Fujitsu Ltd ストレージ装置、ストレージ装置の制御方法及びストレージ装置制御プログラム
WO2014118969A1 (ja) * 2013-02-01 2014-08-07 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムのデータ転送制御方法
JP2015026183A (ja) * 2013-07-25 2015-02-05 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010113707A (ja) * 2008-11-10 2010-05-20 Internatl Business Mach Corp <Ibm> 物理及び仮想マルチパス入出力を動的に管理する方法、装置、システム、及びプログラム
JP2010211549A (ja) * 2009-03-11 2010-09-24 Fujitsu Ltd 管理プログラム、管理装置および管理方法
JP2013127758A (ja) * 2011-12-19 2013-06-27 Fujitsu Ltd ストレージ装置、ストレージ装置の制御方法及びストレージ装置制御プログラム
WO2014118969A1 (ja) * 2013-02-01 2014-08-07 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムのデータ転送制御方法
JPWO2014118969A1 (ja) * 2013-02-01 2017-01-26 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムのデータ転送制御方法
JP2015026183A (ja) * 2013-07-25 2015-02-05 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法
US9727279B2 (en) 2013-07-25 2017-08-08 Fujitsu Limited Storage control apparatus controlling issuable number of requests and storage control method thereof

Similar Documents

Publication Publication Date Title
US10798207B2 (en) System and method for managing application performance
JP4087072B2 (ja) ストレージシステム及び仮想プライベートボリューム制御方法
EP2269132B1 (en) Storage system and control method thereof as well as program
EP2240852B1 (en) Scalable sockets
JP2010026946A (ja) ストレージサブシステム及びコントローラによるコマンド実行方法
US10795608B2 (en) Computer, communication driver, and communication control method
JP2009075718A (ja) 仮想i/oパスの管理方法、情報処理システム及びプログラム
US8874873B2 (en) Resources allocation in a computer storage system
US8799534B2 (en) Storage apparatus and method for controlling same
WO2014118969A1 (ja) 仮想計算機システムおよび仮想計算機システムのデータ転送制御方法
US20110167067A1 (en) Classification of application commands
JP2008186211A (ja) 計算機システム
US20060047856A1 (en) Computer architecture and process for implementing a virtual vertical perimeter framework for an overloaded CPU having multiple network interfaces
US20160364145A1 (en) System and Method for Managing a Non-Volatile Storage Resource as a Shared Resource in a Distributed System
US10552224B2 (en) Computer system including server storage system
EP2188718B1 (en) Avoiding failure of an initial program load in a logical partition of a data storage system
WO2018015984A1 (en) Communication apparaus, system, rollback method, and program
US11144242B2 (en) Distributed storage system
JP2012146280A (ja) 記憶操作のためのキュー及び作業負荷による選択インタフェースの方法及び装置
US10628349B2 (en) I/O control method and I/O control system
US11112996B2 (en) Computer, computer system, and data quantity restriction method
JP4089506B2 (ja) ファイル共有システム及びサーバー並びにプログラム
US9330036B2 (en) Interrupt reduction by dynamic application buffering
WO2018015983A1 (en) Communication apparaus, system, rollback method, and program
US7853758B2 (en) Avoiding failure of an initial program load in a logical partition of a data storage system