(57)【特許請求の範囲】
【請求項１】
複数の論理ユニットを構成された記憶装置と、複数の内部のデータ転送路と、前記複数のデータ転送路のそれぞれに対応して前記記憶装置の論理ユニットごとに単位時間当たりの前記データ転送路上のデータ転送量および／又は前記データ転送路の専有率を測定する複数の測定部と、前記測定部で測定された前記論理ユニットごとの前記データ転送量および／又は前記専有率を外部に通知する出力手段とを備えたことを特徴とする記憶装置システム。
【請求項２】
前記測定部は前記論理ユニットごとにある測定期間における前記論理ユニットが前記少なくとも１つの転送路を専有した期間の合計を測定することを特徴とする請求項１記載の記憶装置システム。
【請求項３】
前記測定部は前記ある測定期間のトータルクロック数と、前記少なくとも１つの転送路を専有した期間のクロック数の合計クロック数を測定することを特徴とする請求項２記載の記憶装置システム。
【請求項４】
前記出力手段はホストとの通信を行なうホスト通信プログラムを有し、ホストからの要求に応答して前記使用状況を前記ホストに通知することを特徴とする請求項１記載の記憶装置システム。
【請求項５】
更に、制御端末との通信を行なう制御端末通信手段を有し、前記出力手段は前記制御端末と通信する制御端末通信プログラムを有し前記制御端末からの要求に応答して前記使用状況を前記制御端末通信手段を通して前記制御端末に通知することを特徴とする請求項１記載の記憶装置システム。
【請求項６】
複数の論理ユニットを構成された記憶装置と、複数の内部のデータ転送路と、前記データ転送路の少なくとも１つを通るデータに前記論理ユニットを識別する識別子を付加する論理ユニット識別子制御部と、前記複数のデータ転送路のそれぞれに対応して前記識別子を用いて前記記憶装置の論理ユニットごとに単位時間当たりの前記データ転送路上のデータ転送量および／又は前記データ転送路の専有率を測定する複数の測定部と、前記測定部で測定された前記論理ユニットごとの前記データ転送量および／又は前記専有率を外部に通知する出力手段とを備えたことを特徴とする記憶装置システム。
【請求項７】
更に、前記記憶装置とホストとの間に設けられたキャッシュメモリを有し、前記識別子制御部は前記キャッシュメモリへのデータの読み書きのアドレスに付加された論理ユニットを識別する情報に基づいて前記データに前記識別子を付加することを特徴とする請求項６記載の記憶装置システム。
【請求項８】
前記識別子制御部はホストへ転送するデータから前記識別子を削除することを特徴とする請求項６記載の記憶装置システム。
【請求項９】
複数の記憶装置を有し複数の論理ユニットを構成された記憶装置群と、前記記憶装置群とホストの間で転送されるデータを格納するキャッシュメモリと、前記キャッシュメモリへデータを読み書きするキャッシュバスと、前記キャッシュバスの前記論理ユニットごとに単位時間当たりのデータ転送量および／又は転送路の専有率を測定するバス使用状況測定部と、前記データ転送量および／又は前記専有率を外部へ出力する出力部とを備えたことを特徴とする記憶装置システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータシステムの記憶装置システムのための制御方式に係わり、特に記憶装置システムの性能測定に関する。
【０００２】
【従来の技術】
ディスクアレイシステムは、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）とも呼ばれ、複数のディスク装置をアレイ状に配置した構成をとり、ホストからのリード要求（データの読み出し要求）およびライト要求（データの書き込み要求）をディスクの並列動作によって高速に処理するとともに、データに冗長データを付加することによって信頼性を向上させた記憶装置である。ディスクアレイシステムは、冗長データの種類と構成により５つのレベルに分類されている（論文："A Case for Redundant Arrays of Inexpensive Disks (RAID)", David A.Patterson, Garsh Gibson, and Randy H.Katz, Computer Science Division Department of Electrical Engineering and Computer Sciences, University of California Berkeley  ACM SIGMOD pp.１０９−１１６  １９８８）。
【０００３】
ディスクアレイシステムは複数のディスクからなるディスク群を備えている。上記のようなディスクアレイを実現するためには、ホストからのリード／ライト要求を各ディスクへのリード／ライト要求に変換し、ライト時にはデータを各ディスクへ分散し、リード時には各ディスクからデータを集合するデータ分散・集合制御を行う必要がある。このような制御をディスクアレイ制御と呼ぶこととする。
【０００４】
ホストからのリード／ライト要求は、一般的にＬＵ（Logical Unit）と呼ばれる記憶装置の論理ユニット単位で行われる。
【０００５】
ディスクアレイの性能測定をＬＵ単位で行っている従来例は、たとえば特開平９−２７４５４４号公報がある。この例では、ＬＵごとにシーケンシャル／ランダム等のアクセスの種類を採取している。
【０００６】
【発明が解決しようとする課題】
ディスクアレイにおいて、ＬＵごとのアクセス状況がわかれば、システムの再構成時などにアクセス状況に基づいて負荷分散を行うことにより、性能面で最適なＬＵ構成、ＲＡＩＤ構成を構築することが可能となる。例えば、シーケンシャルなアクセスが続くことによって、あるＬＵにアクセスが集中するときは、ＬＵを組替えて１つのＬＵにアクセスが集中しないようにすることが考えられる。
【０００７】
また、ＬＵごとのアクセス性能、ＬＵごとのハードウェア各部位の負荷状況がわかれば、ディスクアレイシステム全体の性能ボトルネックの解析に使用することが出来る。
【０００８】
また、複数のユーザに対して、データ保存領域を提供し、代償として料金を受け取るストレージプールというサービスが考えられるが、このストレージプールにおいては、使用容量だけでなく、ハードウェア資源をどれだけ使ったかという性能に対しても課金することが予想される。そのためには、ＬＵごとの性能測定が必要である。
【０００９】
また、同様のストレージプールにおいて、特定顧客に特定性能しか使わせないという性能サービスにおける性能コントロールやハードウェア資源使用抑止のための指針を得るためにも、ＬＵごとの性能測定が必要である。しかしながら、従来技術ではＬＵごとの転送性能、負荷状況の測定および外部への通知は見受けられない。
【００１０】
本発明の第１の目的は、測定結果からの負荷分散により最適なＲＡＩＤ構成を構築するために、ＬＵごとの転送性能、負荷状況を測定し、外部へ通知可能としたディスクアレイシステムおよび方法を提供することにある。
【００１１】
本発明の第２の目的は、ディスクアレイシステムの性能ボトルネック解析のために、ＬＵごとの転送性能、負荷状況を測定し、外部へ通知可能としたディスクアレイシステムおよび方法を提供することにある。
【００１２】
本発明の第３の目的は、ハードウェア資源をどれだけ使ったかがわかり、性能に対する課金を可能とするために、ＬＵごとの転送性能、負荷状況を測定し、外部へ通知可能としたディスクアレイシステムおよび方法を提供することにある。
【００１３】
本発明の第４の目的は、ハードウェア資源使用抑止のための指針を得るために、ＬＵごとの転送性能、負荷状況を測定し、外部へ通知可能としたディスクアレイシステムおよび方法を提供することにある。
【００１４】
【課題を解決するための手段】
本発明は上記要求を満足するために、ディスクアレイシステム内で、ＬＵごとの転送性能、負荷状況を測定し、さらにディスクアレイシステム外部へ測定結果を通知する手段を備えたものである。
【００１５】
前記第１、第２、第３、第４の目的を達成するために、本発明は、アレイ状に配置した複数のディスク装置を有するアレイ型ディスクシステムにおいて、ホストとの入出力を行う少なくとも１つ以上のホスト入出力手段と、複数のディスク装置との入出力を行う少なくとも１つ以上のディスク入出力手段と、データを一時的に保持するディスクキャッシュと、ディスクキャッシュを制御するキャッシュコントローラと、ホスト入出力手段とキャッシュコントローラを接続するホスト側内部バスと、ディスク入出力手段とキャッシュコントローラを接続するディスク側内部バスと、キャッシュコントローラとディスクキャッシュを接続するキャッシュバスと、ＬＵごとの各転送路の使用状況を測定する性能測定手段とを設ける。各転送路とは、上記ホスト側内部バス、ディスク側内部バス、キャッシュバスのすくなくともいずれかひとつのことであり、各転送路におけるＬＵごとの使用状況を測定する。
【００１６】
また、ディスクアレイシステム内にホスト通信プログラムを設けることで、転送路の使用状況をホストに通知できる。
【００１７】
また、前記第１、第２、第３、第４の目的を達成するために、本発明は、上記の手段に加え、制御端末との通信を行う制御端末通信手段と、制御端末通信プログラムとを設けることで、転送状況を制御端末に通知できる。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態を、図を用いて説明する。
【００１９】
（第１の実施形態）
本発明の第１の実施形態は、ホストからの指示に従い、ディスクアレイ内各バス上のデータ転送量、バス使用量をＬＵ単位で測定し、測定結果のホストへの通知を図るためのものである。
【００２０】
（１）システム構成
まず、第１の実施形態のシステム構成を、図１を用いて説明する。
【００２１】
図１において、ホストＡ１００、ホストＢ１１０、ホストＣ１２０は、ディスクアレイ２００に対してリード／ライト要求を出し、データの入出力を行うホストであり、１３０はバススイッチ、２００はディスクアレイである。
【００２２】
ディスクアレイ２００は、ホスト入出力部２１０、２１１と、ディスクキャッシュ２３０と、ディスク入出力部２５０、２５１と、ディスク装置群２７０、２７１と、ディスクアレイ全体の制御を行うＭＰＵ２８０と、バスブリッジ２８５と、メモリ２９０と、キャッシュコントローラ３００とを備えている。ディスク装置群２７０、２７１は、各々が少なくとも１台以上のディスク装置から構成される。本実施形態では、一例として、ディスク装置群２７０はディスク装置２７７〜２７９から構成されるとする。ホスト入出力部２１０、２１１は、少なくとも１つ以上であればよい。ディスク入出力部２５０、２５１は、少なくとも１つ以上であればよい。ディスク装置群２７０、２７１は、少なくとも１つ以上であればよい。
【００２３】
ホストＡ１００、ホストＢ１１０、ホストＣ１２０は、バススイッチ１３０を介して、ホストバスＡ１４０、ホストバスＢ１４１によりディスクアレイ２００のホスト入出力部２１０、２１１と接続する。ホストＡ１００、ホストＢ１１０、ホストＣ１２０で表すホストは、少なくとも１つ以上であればよい。
【００２４】
ホストＡ１００、ホストＢ１１０、ホストＣ１２０とキャッシュコントローラ３００との間の転送を実行するホスト入出力部２１０、２１１は、ホスト側内部バス２２０によりキャッシュコントローラ３００と接続する。ホスト入出力部２１０は、ホストバスＡ１４０上のデータ転送を監視し転送量を測定するバス使用状況測定部２１２を有する。ホスト入出力部２１１もホスト入出力部２１０と同様の機能を有する。
【００２５】
ディスク装置群２７０、２７１とキャッシュコントローラ３００との間のデータ転送を実行するディスク入出力部２５０、２５１は、各々ディスクバスＡ２６０、ディスクバスＢ２６１によりディスク装置群２７０、２７１と接続し、ディスク側内部バス２４０によりキャッシュコントローラ３００と接続する。ディスク入出力部２５０は、ディスクバス２６０上のデータ転送を監視し使用状況を測定するバス使用状況測定部２５２を有する。ディスク入出力部２５１もディスク入出力部２５０と同様の機能を有する。
【００２６】
ディスクキャッシュ２３０は、キャッシュバス２３１によりキャッシュコントローラ３００と接続される。
【００２７】
キャッシュコントローラ３００は、ホスト入出力部２１０、２１１とディスクキャッシュ２３０との間のデータ転送をバッファリングするホスト側内部バスバッファ３１０と、ディスクキャッシュ２３０とキャッシュコントローラ３００の間の転送を制御するキャッシュ制御部３２０と、ディスク入出力部２５０、２５１とディスクキャッシュ２３０との間のデータ転送をバッファリングするディスク側内部バスバッファ３３０と、ホスト入出力部２１０、２１１からディスクキャッシュ２３０に転送されるデータに後述するＬＵ情報を付加し、また、ディスクキャッシュ２３０からホスト入出力部２１０、２１１に転送されるデータに付加されているＬＵ情報を削除するＬＵ情報付加／削除部３４０と、ホスト側内部バス２２０上のデータ転送を監視し、使用状況を測定するバス使用状況測定部３１１と、キャッシュバス２３１上のデータ転送を監視し、使用状況を測定するバス使用状況測定部３２１と、ディスク側内部バス２４０上のデータ転送を監視し、使用状況を測定するバス使用状況測定部３３１とを有する。
【００２８】
ここで、ＬＵ情報と、ＬＵ情報付加／削除部３４０によって転送データに対して行われるＬＵ情報の付加／削除について説明する。ホストＡ１００は、論理的なユニットであるＬＵ単位でディスクアレイをリード／ライトする。ＬＵは、ディスクアレイ内では複数のディスク装置に分けられ、管理されている。
【００２９】
本実施形態においては、ディスクアレイ２００内部の各バスの信号線を測定することによって転送量等をカウントするのであるが、ディスクアレイ内の各バスを流れるデータそのものは、どのＬＵの転送であるかを表わしておらず、ＬＵの特定は出来ない。そのため、本発明においては、バス上を流れるデータにＬＵ情報を付加し、バス上のデータ転送を測定することで、そのデータに対応するＬＵを特定可能とする。
【００３０】
図２に、データにＬＵ情報を付加する具体的な例を示す。論理データブロック４０１、４１１、４２１は、ホストＡ１００がディスクアレイ２００にデータを転送する時のホストデータの一部であり、論理データブロック４０１、論理データブロック４１１、論理データブロック４２１の順に連続したデータである。ＬＵ情報４０２、４１２、４２２は、ホストＡ１００が該転送において指定したＬＵの値であり、それぞれ論理データブロック４０１、４１１、４２１に対応して付加される。ＬＵ情報は、各論理データブロック４０１、４１１、４２１の最後尾に付加するものとし、論理データブロック４０１、ＬＵ情報４０２、論理データブロック４１１、ＬＵ情報４１２、論理データブロック４２１、ＬＵ情報４２２の順に連続したデータとなる。論理データブロック４０１にＬＵ情報４０２を併せたものを拡張データ４００とし、拡張データ４１０、４２０も同様とする。
【００３１】
ＬＵ情報の付加は、ホスト入出力部２１０および２１１からディスクキャッシュ２３０へのデータ転送時に、ＬＵ情報付加／削除部３４０によって行なわれる。また、ディスクキャッシュ２３０からホスト入出力部２１０および２１１へのデータ転送時に、ＬＵ情報付加／削除部３４０がＬＵ情報を削除する。これにより、ホスト側内部バス２２０上を流れるデータは、論理データブロックのみであり、キャッシュバス２３１、ディスク側内部バス２４０、ディスクバスＡ２６０、ディスクバスＢ２６１上を流れるデータは、拡張データとなる。
【００３２】
ホストバス１４０、１４１および、ホスト側内部バス２２０上でのＬＵ特定方法、ＬＵ情報付加／削除部３４０がＬＵを特定する方法については、後述の図３に示すバス使用状況測定部５００の説明部分において説明する。
【００３３】
引き続き、図１のシステム構成について説明する。
ＭＰＵ２８０は、バスブリッジ２８５を介してメモリ２９０およびキャッシュコントローラ３００と接続される。
【００３４】
メモリ２９０は、ＭＰＵ２８０がディスクアレイ制御を実行するために使用するディスクアレイ制御プログラム２９１と、ＭＰＵ２８０がホストバス１４０、１４１、ホスト側内部バス２２０、キャッシュバス２３１、ディスク側内部バス２４０、ディスクバスＡ２６０、ディスクバスＢ２６１上の転送量等の測定を実行するために使用するバス使用状況測定プログラム２９２と、バス上の転送量等を測定した結果を格納するバス使用状況測定結果テーブル２９３と、ＭＰＵ２８０がバス使用状況測定結果についてホストＡ１００、ホストＢ１１０またはホストＣ１２０とディスクアレイ２００の間で行なわれる通信を実行するために使用されるホスト通信プログラム２９４とを有する。バス使用状況測定結果テーブル２９３の詳細については、後述する。
【００３５】
バス使用状況測定部２１２、２５２、３１１、３２１、３３１について説明する。バス使用状況測定部２１２、２５２、３１１、３２１、３３１は、図３に示すバス使用状況測定部５００のような構造で実現できる。
【００３６】
バス使用状況測定部５００は、ＬＵアクセスカウンタ５１０〜５１２と、測定するバスのクロック数をカウントするトータルカウンタ５５０と、トータルカウンタ５５０がカウントした値を格納するトータルレジスタ５５１と、測定するバス上のデータ転送が、バスを専有したクロック数をカウントするバス専有値カウンタ５６０と、バス専有値カウンタ５６０がカウントした値を格納するテンポラリレジスタ５６１と、測定するバス上のデータ転送のデータ転送量をカウントするデータ転送量カウンタ５７０と、データ転送量カウンタ５７０がカウントした値を格納するテンポラリレジスタ５７１と、測定するバス上のデータ転送が、どのＬＵに関するものかを判定し、判定結果によりテンポラリレジスタ５６１、５７１の値を該当するＬＵアクセスカウンタ内のレジスタに足しこむＬＵ判定部５８０と、ＭＰＵ２８０からの指示により、各レジスタを初期化しカウント開始の契機をあたえるカウント開始部５９０と、ＭＰＵ２８０からの指示により、カウントを停止させるカウント停止部５９５とを有する。
【００３７】
ＬＵアクセスカウンタ５１０，５１１，５１２はＬＵごとに設けられる。ＬＵアクセスカウンタ５１０は、測定するＬＵを指定するＬＵレジスタ５２０と、ＬＵレジスタ５２０で指定されたＬＵに関するデータ転送が、バスを専有したクロック数のカウント値を格納するバス専有値レジスタ５３０と、ＬＵレジスタ５２０で指定されたＬＵに関するデータ転送の転送量のカウント値を格納するデータ転送量レジスタ５４０とを有する。ＬＵアクセスカウンタ５１１、５１２も、ＬＵアクセスカウンタ５１０と同様の機能を有する。ＬＵアクセスカウンタ５１０〜５１２は、少なくとも一つ以上であればよい。
【００３８】
一般にデータ転送量とバス専有値とは一致もしないし、比例関係にもない。バス専有値とはデータが転送されているかどうかに係わらずあるＬＵがバスを専有している時間を表す。バスに接続された機器の応答時間の違いによってバスは専有されていても実際にデータが転送されていないという時間が変化するから、バスの専有値は実際に計測しないと分からない値である。この値が実際にハードウェアを使用している時間を表している。
【００３９】
以上が、第１の実施形態のシステム構成である。
【００４０】
（２）性能測定
次に、転送されるデータのＬＵ特定方法と、特定したＬＵごとの性能測定方法について説明する。まず、ＬＵ判定部５８０が、各データ転送においてＬＵを特定する方法を説明する。
【００４１】
キャッシュバス２３１、ディスク側内部バス２４０、ディスクバスＡ２６０、ディスクバスＢ２６１上のデータ転送においては、バス上を流れるデータは図２に示す様にＬＵ情報の付加された拡張データであり、データそのものにＬＵ情報が付加されているため、バス上のデータ転送を監視することにより対応するＬＵの特定が可能である。
【００４２】
ホストバスＡ１４０上のデータ転送においては、ホストＡ１００からディスクアレイ２００へのリード／ライトは、ＬＵ指定で行われる。これは、ホストバスＡ１４０上へホストＡ１００がリード／ライトコマンドを発行することによって行われるが、このリード／ライトコマンド中でホストＡ１００がアクセスするＬＵを指定するので、ホストバスＡ１４０を監視し、リード／ライトコマンドのＬＵ指定部分を調べることによって各データに対応するＬＵの特定が可能である。ホストバスＢ１４１の場合も同様である。
【００４３】
ホストＡ１００からＬＵ指定で行われるデータ転送は、ディスクアレイ２００内では、ＭＰＵ２８０によりディスクアレイ特有のアドレス変換が行われ、ディスク装置群２７０、２７１に分散して格納される。ホスト側内部バス２２０上のデータ転送はこのアドレス変換後であり、ホスト側内部バス２２０上のデータ転送を監視するだけでは、対応するＬＵを特定することは出来ない。また、ＬＵ情報付加／削除部３４０で図２に示すようなＬＵ情報を付加するときもデータからだけではＬＵを特定することは出来ない。
【００４４】
そこで、本実施形態においては、ホスト入出力部２１０からディスクキャッシュ２３０へのデータ転送において、たとえば転送アドレスの上位ビットでかつ、ディスクキャッシュ２３０のアドレス指定に影響を及ぼさない領域に、ホストから指定されるＬＵ情報を格納しておく。バス使用状況測定部３１１においては、ホスト側内部バス２２０上のデータ転送を監視し、この転送アドレスの上位ビットからＬＵ情報を読み出し、ＬＵの特定を行う。また、ＬＵ情報付加／削除部３４０も、同様の手段でＬＵの特定を行う。
【００４５】
なお、その後のディスクアレイ２００内でのデータ転送においては、データ自体にＬＵ番号がないとデータ転送ごとにＭＰＵの介在が必要となるのでＭＰＵの負荷が大きい。従って、データ自体にLU情報を付加し、データのみを監視することによってＬＵごとのバス使用状況が判るようにしてある。
【００４６】
次に、バス使用状況測定部５００が特定バスを監視し、測定時間とその測定時間内でのＬＵごとのバス専有時間やＬＵごとのデータ転送量を測定する方法を説明する。図４は、汎用のローカルバスであるＰＣＩバスのもっとも単純な連続データライト転送のタイミングチャートである。図４においてＣＬＫは同期のための基準信号である。リセットと割り込みを除く総てのＰＣＩ信号はＣＬＫ信号線の立ち上がりエッジに同期して動作する。
【００４７】
ｔ０〜ｔ６はＣＬＫ信号線の立ち上がりエッジの時刻を表している。−ＦＲＡＭＥはイニシエータによってドライブされ、バス・サイクルが実行されていることを示す負論理の信号線である。ＡＤはアドレスとデータの転送が時分割で行なわれる３２本の信号線である。図４中のＡＤＤＲはアドレス転送を表し、データ１〜データ４はデータ転送を表している。
【００４８】
−C／BEはアドレス転送時にはバス・コマンドを、データ転送時にはバイトイネーブルとして使用される４本の負論理の信号線である。図４中のＣＭＤはバス・コマンドを表し、ＢＥ＃１〜ＢＥ＃４はバイト・イネーブルを表している。−ＩＲＤＹはイニシエータによってドライブされ、イニシエータがデータ転送可能な状態にあることを示す負論理の信号線である。−ＴＲＤＹはターゲットによってドライブされターゲットがデータ転送可能な状態にあることを示す負論理の信号線である。−ＤＥＶＳＥＬはバス・アクセスに対する応答として、アクセスを受けたターゲットによってアサートされる負論理の信号線である。
【００４９】
ディスク側内部バス２４０にＰＣＩバスを使用した場合を例にとり、図４を用いてディスク側内部バス２４０に対する測定動作を説明する。
【００５０】
ディスク側内部バス２４０上の転送を測定するのは、バス使用状況測定部３３１である。バス使用状況測定部３３１が測定するのは、測定開始から測定終了までの総クロック数、ＬＵごとのディスク側内部バス２４０を専有したクロック数、ＬＵごとのディスク側内部バス２４０上でデータが転送されたクロック数である。
【００５１】
まず始めに、ＭＰＵ２８０は、ＬＵレジスタ５２０〜５２２に測定するＬＵの番号を設定する。
【００５２】
次に、ＭＰＵ２８０は、カウント開始部５９０に、測定開始の指示を与える。カウント開始部５９０は、ＭＰＵ２８０からの指示を受けると、ＬＵアクセスカウンタ５１０〜５１２内のバス専有値レジスタ５３０〜５３２、データ転送量レジスタ５４０〜５４２、およびトータルレジスタ５５１、テンポラリレジスタ５６１、テンポラリレジスタ５７１の値を初期化し、トータルカウンタ５５０、バス専有値カウンタ５６０、データ転送量カウンタ５７０に測定開始の指示を与える。トータルカウンタ５５０、バス専有値カウンタ５６０、データ転送量カウンタ５７０は、カウント開始部５９０からの指示を受けると、カウント動作を開始する。
【００５３】
トータルカウンタ５５０は、測定開始から測定終了までの間のＣＬＫ信号線の立ち上がりエッジをカウントし、その期間のトータルのクロック数をトータルレジスタ５５１に格納する。
【００５４】
バス専有値カウンタ５６０は、各データ転送がバスを専有している間のＣＬＫ信号線の立ち上がりエッジをカウントし、その値をテンポラリレジスタ５６１に格納する。ＰＣＩバスにおいては、データ転送は−ＦＲＡＭＥ信号の立ち下りで始まり、−ＦＲＡＭＥ信号と−ＩＲＤＹ信号の両方が立ち上がってバスがアイドルになると終了である。図４においては、バスが専有されているのは、ｔ１〜ｔ５までの５クロックであり、テンポラリレジスタ５６１には、カウントした結果の値５が格納される。
【００５５】
データ転送量カウンタ５７０は、バス上で実際にデータ転送が行われている期間のＣＬＫ信号線の立ち上がりエッジをカウントし、その値をテンポラリレジスタ５７１に格納する。ＰＣＩバスにおいては、−ＴＲＤＹ信号が立ち下がっている期間がデータが転送されている期間であり、図４においていは、ｔ２、ｔ３、ｔ４、ｔ５においてデータ転送量カウンタはカウントアップし、カウントした結果の値４をテンポラリレジスタ５７１に格納する。
【００５６】
１データ転送ごとに、ＬＵ判定部５８０がそのデータ転送に対応するＬＵを特定する。ＬＵ判定部５８０は、特定したＬＵと、ＬＵレジスタ５２０〜５２２の値を比較し、等しいものがあればその対応するバス専有値レジスタにテンポラリレジスタ５６１の値を、データ転送量レジスタにテンポラリレジスタ５７１の値をそれぞれ加える。その後、テンポラリレジスタ５６１、テンポラリレジスタ５７１の値をクリアする。
【００５７】
測定時間が経過すると、ＭＰＵ２８０は、カウント停止部５９５に、測定終了の指示を与える。カウント停止部５９５は、ＭＰＵ２８０からの指示を受けると、トータルカウンタ５５０、バス専有値カウンタ５６０、データ転送量カウンタ５７０に測定終了の指示を与える。トータルカウンタ５５０、バス専有値カウンタ５６０、データ転送量カウンタ５７０は、カウント停止部５９５からの指示を受けると、カウント動作を終了する。
【００５８】
上記一連の動作により、バス使用状況測定部３３１は、測定開始から測定終了までの期間の、ディスク側内部バス２４０の総クロック数、ＬＵごとの、データ転送がディスク側内部バス２４０を専有したクロック数、ディスク側内部バス２４０上で実データが転送されたクロック数をカウントする。ディスク側内部バス２４０のクロック周波数および、データバス幅はあらかじめ判っているので、カウントしたクロック数から正確な測定時間、各ＬＵがバスを専有した時間、ＬＵごとのデータ転送量を導き出すことができる。
【００５９】
ＰＣＩバスを例に取り、バス使用状況測定部３３１の場合を説明したが、ＰＣＩバス以外のバスの場合でも、ホスト入出力部２１０、２１１、キャッシュコントローラ３００、ディスク入出力部２５０、２５１は各バスのプロトコルを解するインタフェースを備えているため、プロトコルにあったカウントを行うことにより、同様の測定を行うことができる。すなわち、バス使用状況測定部２１２はホストバスＡ上のデータ転送を、バス使用状況測定部３１１はホスト側内部バス２２０上のデータ転送を、バス使用状況測定部３２１はキャッシュバス２３１上のデータ転送を、バス使用状況測定部２５２はディスクバスＡ２６０上のデータ転送をそれぞれ監視し、各バス上の測定開始から測定終了までの期間の、総クロック数、ＬＵごとに、データ転送がバスを専有したクロック数、バス上で実データが転送されたクロック数をカウントする。
【００６０】
（３）ホスト−ディスクアレイ間のやりとり
本実施形態においては、ホストがホストバスを介してディスクアレイに測定の指示を与え、ディスクアレイから測定結果を得る。そこで、ホスト−ディスクアレイ間で性能測定に使用するベンダユニークコマンドを定義する。ここでは、ホストＡ１００がディスクアレイ２００に対して性能測定を指示する場合を例に説明する。
【００６１】
図６において、設定コマンド６１０、測定開始コマンド６２０、測定終了コマンド６３０、結果取得コマンド６４０は、ホストＡ１００からディスクアレイ２００に対して発行されるコマンドであり、結果通知レスポンス６５０は、ディスクアレイ２００が受け取った結果取得コマンド６４０に対応してホストＡ１００へ返すデータ列である。
【００６２】
設定コマンド６１０は、どのＬＵの、どのバスを測定の対象にするかを設定するコマンドである。コマンドコード６１１には、ユニークなコードを割り付ける。ＬＵＮ（ＬＵ  Ｎｕｍｂｅｒ）６１２には、測定対象とするＬＵの番号を一つ設定する。バス指定ビット列６１３は、ＬＵＮ６１２に設定したＬＵにおいて、どのバスを測定するかを設定する８ｂｉｔのビット列である。そのビット定義は図示したように左からホストバスＡ１４０、ホストバスＢ１４１、ホスト側内部バス２２０、キャッシュバス２３１、ディスク側内部バス２４０、ディスクバスＡ２６０、ディスクバスＢ２６１に対応しており、ビットの値が”０”の場合は該当バスの測定はしないこと、ビットの値が”１”の場合は該当バスの測定を行うことを表す。
【００６３】
たとえばＬＵ０に関するデータ転送のホスト側内部バス２２０、キャッシュバス２３１、ディスク側内部バス２４０の性能測定を行う場合、ホストＡ１００はＬＵＮ６１２にＬＵ０を、バス指定ビット列６１３に”００１１１０００”を指定する。ホストＡ１００は、測定するＬＵの数だけ、設定コマンド６１０を発行する。
【００６４】
測定開始コマンド６２０は、ディスクアレイ２００に対して性能測定開始を指示するコマンドである。コマンドコード６２１には、ユニークなコードを割り付ける。
【００６５】
測定終了コマンド６３０は、ディスクアレイ２００に対して性能測定終了を指示するコマンドである。コマンドコード６３１には、ユニークなコードを割り付ける。
【００６６】
結果取得コマンド６４０は、ディスクアレイ２００に対して測定結果の送信を指示するコマンドである。コマンドコード６４１には、ユニークなコードを割り付ける。ＬＵＮ６４２には、測定結果の出力を求めるＬＵの番号を指定する。バス指定ビット列６４３のビット定義はバス指定ビット列６１３と同様であり、ビットの値が”０”の場合は該当バスの測定結果は出力しないこと、ビットの値が”１”の場合は該当バスの測定結果を出力することを表す。たとえばＬＵ０に関する、ホスト側内部バス２２０、キャッシュバス２３１、ディスク側内部バス２４０上のデータ転送の測定結果出力をディスクアレイ２００に求める場合、ホストＡ１００はＬＵＮ６４１にＬＵ０を、バス指定ビット列６４３に”００１１１０００”を指定する。ホストＡ１００は、測定結果を得るＬＵの数だけ、結果取得コマンド６４０を発行する。なお、どのＬＵの値とも重ならない値、本実施形態においては０ｘＦＦをＬＵＮ６４２に指定すると、測定期間中の総クロック数を表すトータルカウンタ値を指定したものと定義する。
【００６７】
結果通知レスポンス６５０は、ディスクアレイ２００からホストＡ１００へ送信されるデータ列である。データ列は、ホストバスＡ１４０におけるバス専有値６５１、ホストバスＢ１４１におけるバス専有値６５２、ホスト側内部バス２２０におけるバス専有値６５３、キャッシュバス２３１におけるバス専有値６５４、ディスク側内部バス２４０におけるバス専有値６５５、ディスクバスＡ２６０におけるバス専有値６５６、ディスクバスＢ２６１におけるバス専有値６５７、ホストバスＡ１４０におけるデータ転送量６５８、ホストバスＢ１４１におけるデータ転送量６５９、ホスト側内部バス２２０におけるデータ転送量６６０、キャッシュバス２３１におけるデータ転送量６６１、ディスク側内部バス２４０におけるデータ転送量６６２、ディスクバスＡ２６０におけるデータ転送量６６３、ディスクバスＢ２６１におけるデータ転送量６６４の順に並んでいる。ディスクアレイ２００は、受け取った結果取得コマンド６４０で指示されたＬＵの各バスの測定結果をフォーマットに従い送信する。なお、ＬＵＮ６４２に０ｘＦＦが指定されていた場合は、６５１〜６５７に各バスのトータルカウンタ値を出力し、６５８〜６６４には０を出力するものとする。
【００６８】
以下、図７のフローチャートに基づいて、性能測定の流れを説明する。フローチャート左側は、ホストＡ１００の動作の流れであり、右側は、ディスクアレイ２００の動作の流れである。なお、ホストＡが性能測定の働きをするのは例であり、ホストＢ、ホストＣであっても良い。
【００６９】
ステップ１０００において、ホストＡ１００は、ディスクアレイ２００に対して測定準備のための設定コマンド６１０を発行する。ステップ１１００において、ディスクアレイ２００は、設定コマンド６１０を受信する。
【００７０】
ステップ１１１０において、ＭＰＵ２８０は、受信した設定コマンド６１０のＬＵＮ６１２とバス指定ビット列６１３の値を調べ、該当するバス使用状況測定部内のＬＵレジスタにＬＵＮ６１２の値を設定する。例えばＬＵＮ６４１の値がＬＵ０、バス指定ビット列６１３の値が”００１１１０００”であった場合、ホスト側内部バス２２０、キャッシュバス２３１、ディスク側内部バス２４０上のデータ転送でＬＵ０に関するものを測定することになるので、ＭＰＵ２８０は、バス使用状況測定部３１１内のＬＵレジスタ５２０、バス使用状況測定部３２１内のＬＵレジスタ５２０、バス使用状況測定部３３１内のＬＵレジスタ５２０にそれぞれＬＵ０を設定する。
【００７１】
ホストＡ１００は、測定する全ＬＵの設定が終わるまで、ステップ１０００を繰り返し実行する。
【００７２】
全ＬＵの設定が終わると、ステップ１０２０において、ホストＡ１００は、ディスクアレイ２００に対して測定開始コマンド６２０を発行する。
【００７３】
ステップ１１２０において、ディスクアレイ２００は、測定開始コマンド６２０を受信し、それを受けステップ１１３０において、ＭＰＵ２８０は、ステップ１１１０でＬＵレジスタ設定のなされた全バス使用状況測定部内のカウント開始部５９０に、測定開始の指示を与える。これにより、各バス使用状況測定部は、各バスを監視し測定する動作を開始する。ここで、ＭＰＵ２８０は、ＬＵレジスタ設定の有無にかかわらず、存在する全バス使用状況測定部内のカウント開始部５９０に対して、測定開始の指示を与えてもよい。
【００７４】
測定時間が経過し測定終了時間に達すると、ステップ１０３０において、ホストＡ１００はディスクアレイ２００に対して測定終了コマンド６３０を発行する。
【００７５】
ステップ１１４０において、ディスクアレイ２００は、測定終了コマンド６３０を受信し、それを受けステップ１１５０において、ＭＰＵ２８０は、ステップ１１１０でＬＵレジスタ設定のなされた全バス使用状況測定部内のカウント停止部５９５に、測定終了の指示を与える。これにより、各バス使用状況測定部は、測定動作を停止する。ここで、ＭＰＵ２８０は、ＬＵレジスタ設定の有無にかかわらず、存在する全バス使用状況測定部内のカウント停止部５９５に対して、測定終了の指示を与えてもよい。
【００７６】
測定終了の指示後、ＭＰＵ２８０は、各バス使用状況測定部内のバス専有値レジスタ５３０〜５３２、データ転送量レジスタ５４０〜５４２、およびトータルレジスタからカウント値を読み出し、メモリ２９０上のバス使用状況測定結果テーブル２９３に値を集計する。ＬＵ０、ＬＵ１、ＬＵ２の３ＬＵに関して測定を行った時のバス使用状況測定結果テーブル２９３の構造を図５に示す。バス使用状況測定結果テーブル２９３は、各バスを行に、各レジスタを列にとったマトリクスになり、カウントされたクロック数の値を格納する。
【００７７】
測定終了コマンド６３０発行後、ステップ１０４０において、ホストＡ１００はディスクアレイ２００に対して結果取得コマンド６４０を発行して結果の通知を要求する。
【００７８】
ステップ１１６０において、ディスクアレイ２００は、結果取得コマンド６４０を受信する。ステップ１１７０において、ＭＰＵ２８０は、受信した結果取得コマンド６４０のＬＵＮ６４２とバス指定ビット列６４３の値を調べ、バス使用状況測定結果テーブル２９３から該当する測定結果値を読み出して、結果通知レスポンス６５０としてホストＡ１００に送信する。
【００７９】
ステップ１０５０において、ホストＡ１００は、結果通知レスポンス６５０を受信する。
【００８０】
ホストＡ１００は、必要とする全ＬＵの測定結果が得られるまで、ステップ１０４０、ステップ１０５０を繰り返し実行する。測定期間のトータルカウント数を含む全ＬＵの測定結果が得られると、終了である（ステップ１０７０）。
【００８１】
なお、各コマンドに対して、コマンド実行の成否を示すステータスをディスクアレイ２００からホストＡ１００に返すが、図７では省略してある。
【００８２】
以上の構成、動作により本実施形態によれば、ディスクアレイ２００内部の各バス上のデータ転送において、ＬＵごとの転送性能、負荷状況を測定することが可能となる。さらに、ホストＡ１００からの要求に応じて、ＬＵごとの転送性能、負荷状況の測定結果をディスクアレイ２００からホストＡ１００へ通知することができる。
【００８３】
測定結果が外部ホストへ通知できることから、測定結果からの負荷分散により最適なＲＡＩＤ構成を構築する目的に使用できるという効果がある。
【００８４】
また、測定結果を解析することによって、ディスクアレイシステムの性能ボトルネック解析の目的に使用できるという効果がある。
【００８５】
また、測定結果から各ＬＵがハードウェア資源をどれだけ使ったかがわかり、ストレージプールで性能に対する課金を可能とするために利用できるという効果がある。
【００８６】
また、ハードウェア資源使用抑止のための指針を得るための目的で、測定結果を利用できるという効果がある。
【００８７】
なお、ホストＡ１００、ホストＢ１１０、ホストＣ１２０とホスト入出力部２１０、２１１の間、および、ディスク装置群２７０、２７１とディスク入出力部２５０、２５１の間のインタフェースとしては、たとえばファイバチャネル、ＳＣＳＩなどが考えられるが、他のインタフェースであってもよい。また、ホスト側内部バス２２０、および、ディスク側内部バス２４０は、たとえば６４ビット幅のＰＣＩバスなどが考えられるが、３２ビット幅のＰＣＩバスや他のバスであっても実現できる。
【００８８】
また、本実施形態では、測定結果のカウント値をホストＡ１００へ通知するとしたが、測定結果からＭＰＵ２８０が単位時間あたりの転送量、バス使用率を計算し、計算結果をホストＡ１００へ通知してもよい。
【００８９】
また、本実施形態では、測定終了コマンド６３０により、測定を終了してから測定データを集計し、ホストＡ１００へ通知するとしているが、測定中にもバス使用状況測定結果テーブル２９３に測定データを集計し、測定終了コマンド６３０による測定終了を行わずに結果取得コマンド６４０を発行して動作中の測定データを取得できるように変更することは容易である。
【００９０】
（第２の実施形態）
本発明の第２の実施形態は、第１の実施形態においてホストＡ１００が行っていた性能測定の制御を、ディスクアレイ外部の制御端末からの指示により実施するものである。
【００９１】
図８に、第２の実施形態におけるシステム構成例を示す。ここでは、第１の実施形態との違いのみを説明する。図８において、制御端末７００は、ディスクアレイ２００に対してさまざまな制御命令を発行するディスクアレイ制御用の端末である。制御端末７００とディスクアレイ２００間の通信を実行する制御端末通信装置７２０はバスブリッジ２８５と接続し、制御端末７００とは制御線７１０で接続する。制御線７１０は、シリアルや既存のネットワーク通信線で実現できる。メモリ２９０は、ＭＰＵ２８０が、転送量等の測定について制御端末７００とディスクアレイ２００の間で行われる通信を実行するために使用する制御端末通信プログラム２９５を有する。以上が、第２の実施形態のシステム構成である。
【００９２】
次に、第２の実施形態の動作について、第１の実施形態と異なる部分について説明する。
第２の実施形態においては、制御端末７００が、ディスクアレイ２００に対して、設定コマンド６１０、測定開始コマンド６２０、測定終了コマンド６３０、結果取得コマンド６４０を発行し性能測定を制御する。また、ディスクアレイ２００は、制御端末７００へ結果通知レスポンス６５０を送信する。
【００９３】
上記構成、動作により、第２の実施形態では、制御端末７００からの指示により、ＬＵごとの性能測定が実施できる。したがって、第１の実施形態と同様な効果を得ることができる。
【００９４】
（第３の実施形態）
本発明の第３の実施形態は、課金サーバという特別なホストを用いて、性能測定結果を集計し、ハードウェア使用性能に対する課金を図るためのものである。なお、これは第１の実施例においてホストＡで課金が出来ないことを表すものではない。ホストＡで課金をするようにしても良い。
【００９５】
図９に、第３の実施形態におけるシステム構成例を示す。ここでは、第１の実施形態との違いのみを説明する。図９において、課金サーバ９００は、ディスクアレイ２００内部のバス上のデータ転送量、バス負荷率の監視をＬＵ単位で行うことを目的とした特別なホストである。課金サーバ９００は、測定結果を集計するために内部にメモリ９１０を持つ。
【００９６】
課金サーバ９００は、バススイッチ１３０を介して、ホストバスＡ１４０、ホストバスＢ１４１によりディスクアレイ２００のホスト入出力部２１０、２１１と接続する。メモリ２９０は、ＭＰＵ２８０が、バス使用状況測定について課金サーバ９００とディスクアレイ２００の間で行われる通信を実行するために使用する課金サーバ通信プログラム２９６を有する。以上が、第３の実施形態のシステム構成である。
【００９７】
次に、第３の実施形態の動作について、第１の実施形態と異なる部分について説明する。
第３の実施形態においては、課金サーバ９００が、ディスクアレイ２００に対して、設定コマンド６１０、測定開始コマンド６２０、測定終了コマンド６３０、結果取得コマンド６４０を発行し性能測定を制御する。また、ディスクアレイ２００は、課金サーバ９００へ結果通知レスポンス６５０を送信する。課金サーバ９００は、測定結果からＬＵごとのデータ転送量、バス負荷率を計算し、ＬＵごとに課金額を算出する。
【００９８】
図１０に、具体例を示す。課金サーバ９００内部にあるメモリ９１０上のバス使用状況測定結果テーブル９２０は、ディスクアレイ２００内のメモリ２９０上のバス使用状況測定結果テーブル２９３と同様の構造を持ち、結果通知レスポンス６５０により得られた測定値を格納する。課金サーバ９００は、この測定値を元に、ＬＵごとのデータ転送量、バス負荷率を計算する。データ転送量とは、実際にそのバス上で行われたデータ転送の転送量のことで、バス負荷率は、データ転送がバスを専有使用した時間をパーセントで表したものである。ここで、ホスト側内部バス２２０が動作周波数３３ＭＨｚ、バス幅６４ｂｉｔのＰＣＩバスで構成されているとすると、ホスト側内部バスの測定のトータルクロック数１０００クロックの内、ＬＵ０に関するデータ転送がホスト側内部バスを専有使用したクロック数は２００クロックであり、バス負荷率２００／１０００×１００＝２０％が導き出せる。また、ＬＵ０に関するデータ転送が行われたクロック数は１７５クロックであり、そこからデータ転送量１７５×６４ｂｉｔ（８ｂｙｔｅ）＝１４００ｂｙｔｅが導き出せる。同様の計算によってＬＵごとの各バスのデータ転送量、バス負荷率をまとめたものが、データ転送量、バス負荷率テーブル９３０である。このようにまとめることによって、ＬＵごとに各部位のデータ転送量がわかり、また、どのＬＵがどの部位にどれだけに負荷をかけているのかがわかるようになる。
【００９９】
本実施形態では、キャッシュバスに最も負荷がかかるアーキテクチャである。したがって、ハードウェア使用量に対しての課金では、キャッシュバスの負荷率に比例して課金額を決めることが考えられる。データ転送量、バス負荷率テーブル９３０において、キャッシュバスのバス負荷率は、ＬＵ０が４５．３％、ＬＵ１が２４％、ＬＵ２が１７．３％である。したがって、ＬＵ０を使用しているユーザに最も大きな課金額を付け、以下ＬＵ１を使用しているユーザ、ＬＵ２を使用しているユーザの順の金額となる。
【０１００】
上記構成、動作により、第３の実施形態では、課金サーバ９００からの指示により、ＬＵごとの性能測定が実施できる。したがって、第１の実施形態と同様の効果を得ることができる。特に、課金サーバ９００内でＬＵごとのデータ転送量、バス負荷率を計算することによって、ハードウェア使用性能に対する課金を実現できるという効果がある。
【０１０１】
【発明の効果】
以上述べたように、本発明によれば、ディスクアレイ内部の各バスにおける、ＬＵごとの転送性能、負荷状況を測定し、外部ホストまたは制御端末からの要求に従い測定結果を通知するように構成したため、ディスクアレイの外部からＬＵごとの転送性能・負荷状況がモニタ可能であるという効果が得られる。
【０１０２】
上記効果は、負荷分散によるディスクアレイの性能チューニング、ボトルネック解析によるディスクアレイの性能コントロール、使用したハードウェア資源に対して課金するシステム、ハードウェア資源使用抑止のための指針を得ることに使用することができる。
【図面の簡単な説明】
【図１】第１の実施形態におけるシステム構成図である。
【図２】ＬＵ情報付きの論理データブロックの説明図である。
【図３】バス使用状況測定部のブロック図である。
【図４】ディスク側内部バスのタイミングチャートである。
【図５】バス使用状況測定結果テーブルの構成図である。
【図６】定義したベンダユニークコマンドの説明図である。
【図７】ホストからの指示により性能測定を実施するフローチャートである。
【図８】第２の実施形態におけるシステム構成図である。
【図９】第３の実施形態におけるシステム構成図である。
【図１０】バス使用状況測定結果テーブル、データ転送、バス負荷率テーブルの説明図である。
【符号の説明】
１００  ホストＡ
２００  ディスクアレイ
２１０  ホスト入出力部
２１２  バス使用状況測定部
２２０  ホスト側内部バス
２３０  ディスクキャッシュ
２３１  キャッシュバス
２４０  ディスク側内部バス
２５０  ディスク入出力部
２５２  バス使用状況測定部
２６０  ディスクバス
２７０  ディスク装置群
２８０  ＭＰＵ
３００  キャッシュコントローラ
３１１  バス使用状況測定部
３２１  バス使用状況測定部
３３１  バス使用状況測定部
【図１】
0004041284.tif 000002
【図２】
0004041284.tif 000003
【図３】
0004041284.tif 000004
【図４】
0004041284.tif 000005
【図５】
0004041284.tif 000006
【図６】
0004041284.tif 000007
【図７】
0004041284.tif 000008
【図８】
0004041284.tif 000009
【図９】
0004041284.tif 000010
【図１０】
0004041284.tif 000011