(57)【特許請求の範囲】
【請求項１】
中継装置を介して複数のディスクがループ接続されたディスクに対してコマンドを発行するディスクコントローラを備えるストレージ装置であって，
前記ディスクコントローラが，
前記ループに属する各ディスクごとに設けられた第１コマンド発行制限値の総和よりも低く設定される前記ループ単位で設けられた第２コマンド発行制限値とを満たすように前記ディスクに対するコマンドの発行数を制御するコマンド発行制御手段を備える
ことを特徴とするストレージ装置。
【請求項２】
中継装置を介して複数のディスクがループ接続されたディスクに対してコマンドを発行するディスクコントローラであって，
前記ループに属する各ディスクごとに設けられた第１コマンド発行制限値の総和よりも低く設定される前記ループ単位で設けられた第２コマンド発行制限値とを満たすように前記ディスクに対するコマンドの発行数を制御するコマンド発行制御手段を備える
ことを特徴とするディスクコントローラ。
【請求項３】
中継装置を介して複数のディスクがループ接続されたディスクに対してコマンドを発行するディスクコントローラを備えるストレージ装置におけるコマンド発行制御方法であって，
前記ディスクコントローラが，前記ループに属する各ディスクごとに設けられた第１コマンド発行制限値の総和よりも低く設定される前記ループ単位で設けられた第２コマンド発行制限値とを満たすように前記ディスクに対するコマンドの発行数を制御する
ことを特徴とするコマンド発行制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ディスクコントローラ、及びコマンド発行制御方法に関し、特に、ディスクへのコマンドの発行数を制御するストレージ装置、ディスクコントローラ、及びコマンド発行制御方法に関する。
【背景技術】
【０００２】
ストレージシステムに関する従来技術として、複数のコントローラ間で仮想ストレージセグメントの制御を割り当てるストレージシステムが提案されている（例えば、特許文献１を参照）。
【特許文献１】特開２００５−２２２５３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ストレージ装置における、ターゲット（ディスク）とイニシエータ（ディスクコントローラ）とを接続する方式には、ループ（アービトレイテッド・ループ）方式と、ファブリック(Fabric)方式がある。
【０００４】
ループ方式とは、イニシエータやターゲットを順に、ループ状に繋ぐ接続方式である。比較的高価なファイバ・チャネル・スイッチがなくても複数ノードを接続できるため、経済的にＳＡＮを構築できる。しかし、ループ方式では、全ノードが１つのループを共有するため、ノード数が増えると性能が低下する。
【０００５】
一方、ファブリック方式とは、ファイバ・チャネル・スイッチを使用した、またはファイバ・チャネル・スイッチ同士が相互接続されたネットワークをさす。イニシエータとターゲットのＰｏｒｔを直接接続していないので拡張性に優れており、また、ターゲット複数をループ接続するループ方式に比べると、コマンドを送る際にはファブリック装置しか介さないので、高いコマンド処理能力が期待できる。
【０００６】
図５は、ファブリック方式とループ方式を組み合わせて用いたストレージ装置の構成例である。図５に示すファブリック装置１００は、相互接続されたファイバチャネルスイッチ（ＦＳ）（図５では図示を省略）を備え、各ディスクコントローラ１０１から発行されたコマンドをＦＳを通じてディスク１０２に中継する。なお、図５中のディスクａ１乃至ａ３、ディスクｂ１乃至ｂ３、ディスクｃ１乃至ｃ３、ディスクｄ１乃至ｄ３は、それぞれ、ループ接続されたディスクである。図５では、各々のループについて３個のディスクが接続されている例を示す。
【０００７】
一方、各ディスクコントローラ１０１は、各ディスクのループに対してファブリック接続されているため、容易に各ディスクコントローラから、各ディスクのループに対してコマンドを発行することが可能である。
【０００８】
このように、ファブリック方式は拡張性・性能に優れた接続方式である。しかし、ストレージ装置が大規模な構成となって、複数のディスクコントローラから大量のコマンドが発行されると、ファブリック方式を採用しているにもかかわらず、コマンドレスポンスが低下してしまう。最悪の場合は、レスポンスの遅延によりコマンドがタイムアウトし、ディスク異常と判断されてしまう。
【０００９】
例えば、図５中のディスクｄ１の性能を超えてディスクコントローラ１０１からディスク１０２に対して大量のコマンドが発行される（図５中の＃１を参照）と、ファブリック装置１００とディスクｄ１間の転送速度が悪くなり、ファブリック装置１００がコマンドを処理しきれず、コマンド処理が詰まってしまう（図５中の＃２を参照）という問題がある。
【００１０】
コマンドの大量発行によるファブリック装置１００におけるコマンド処理の詰まりを防止する措置として、ディスクコントローラ１０１が一度に発行できるコマンド数を、ディスクの性能に応じてディスク単位で制限するという方式（ディスク性能対応制限方式）が考えられる。ディスク性能対応制限方式では、ディスクコントローラ１０１が一度に発行できるコマンド数を超えた場合は、ディスクコントローラ側でコマンドをキューイングし、ファブリック装置１００へのコマンド大量送信を避ける。ディスク単位でコマンドをキューイングするのは、ファブリック装置１００に接続するディスク１０２によって性能に差があるためである。性能の低いディスク１０２に多数のコマンドを発行すると、該ディスク１０２中のコマンド処理の段階でレスポンスの遅延が発生してしまう。従って、ディスク性能対応制限方式は、ディスクの性能に応じて発行コマンド数を制御するために、ディスク１０２の性能に応じて発行コマンド数の上限を設定し、上限を超えないようにコマンドの発行数を制御する。
【００１１】
しかし、例えば、図６に示すように、ストレージ装置の構成が大規模になって、各ループ内のディスク１０２の数が増加すると、上記ディスク性能対応制限方式による発行コマンド数の制御では、ファブリック装置１００におけるコマンド処理の詰まりを防止できなくなり、その結果、コマンドレスポンスが低下する。ループ接続されるディスク１０２の数が増加することによってファブリック装置１００に接続されるディスク１０２の総数が増えると、各ディスクコントローラ１０１がディスク単位でコマンド発行数を制限しても、特定のディスク１０２に対するコマンドの発行数がファブリック装置１００が処理できない程度にまで増加するからである。
【００１２】
本発明は、ストレージ装置の構成が大規模である場合でもコマンドレスポンスの低下を防止するストレージ装置の提供を目的とする。
【００１３】
また、本発明は、ストレージ装置の構成が大規模である場合でもコマンドレスポンスの低下を防止するディスクコントローラの提供を目的とする。
【００１４】
また、本発明は、ストレージ装置の構成が大規模である場合でもコマンドレスポンスの低下を防止するコマンド発行制御方法の提供を目的とする。
【課題を解決するための手段】
【００１５】
本ストレージ装置は、中継装置を介してディスクに対してコマンドを発行するディスクコントローラを備えるストレージ装置であって、前記ディスクコントローラが、前記ストレージ装置の構成と前記ストレージ装置の動作状態とに基づいて前記ディスクに対するコマンドの発行数を制御するコマンド発行制御手段を備える。
【００１６】
また、本ディスクコントローラは、中継装置を介してディスクに対してコマンドを発行するディスクコントローラであって、前記ストレージ装置の構成と前記ストレージ装置の動作状態とに基づいて前記ディスクに対するコマンドの発行数を制御するコマンド発行制御手段を備える。
【００１７】
また、本コマンド発行制御方法は、中継装置を介してディスクに対してコマンドを発行するディスクコントローラを備えるストレージ装置におけるコマンド発行制御方法であって、前記ディスクコントローラが、前記ストレージ装置の構成と前記ストレージ装置の動作状態とに基づいて前記ディスクに対するコマンドの発行数を制御する。
【発明の効果】
【００１８】
本ストレージ装置、本ディスクコントローラ、本コマンド発行制御方法は、中継装置を介してディスクに対してコマンドを発行するディスクコントローラが、ストレージ装置の構成とストレージ装置の動作状態とに基づいて、ディスクに対するコマンドの発行数を制御する。
【００１９】
従って、本ストレージ装置、本ディスクコントローラ、本コマンド発行制御方法によれば、ストレージ装置の構成が大規模である場合でも、コマンドの発行数を適切な数に制御することができ、コマンドレスポンスの低下を防止することができる。
【発明を実施するための最良の形態】
【００２０】
図１は、本実施形態のストレージ装置の全体構成例を示す図である。図１に示すストレージ装置は、ファブリック装置２を介してディスク３００に対してコマンドを発行するディスクコントローラであるＣＭ（Control module）１を備える。各ＣＭ１はＣＰＵ１０を備える。ＣＭ１が発行したコマンドは、ＣＰＵ１０からファブリック装置２を介してターゲット（コマンドの送信先）のディスク３００に送信される。具体的には、ファブリック装置２が備えるファイバチャネル２０２（図２を参照）が、通信ポート２００を介してコマンドを受信し、通信ポート２０１を通じてターゲットのディスク３００に該コマンドを中継する。
【００２１】
各ディスク３００は、ループ接続されている。すなわち、図中の点線で示すような、ファブリック装置２より先の、各ＤＥ（Driver Enclosure）３内のディスク３００を結ぶルートが、一つのループ（ディスクのループ）を構成している。図１に示す例では、各ＤＥ３には３個のディスク３００が設けられており、各ＤＥ３内に設けられたＰＢＣ（Port Bypass Circuit ）３０１が、ファブリック装置２から送信されたコマンドを自ＤＥ３内のディスク３００又は他のＤＥ３内のディスク３００に中継する。なお、ファブリック装置２とＰＢＣ３０１は、ＦＣ（Fibre Channel ）ケーブルで接続されている。ＤＥ３内のＰＢＣ３０１と他のＤＥ３内のＰＢＣ３０１も、ＦＣケーブルで接続されている。
【００２２】
図２は、図１中のＣＭ及びファブリック装置の構成例を示す図である。ＣＭ１は、コマンド発行制御部１１、コマンド送信部１２、構成管理部１３を備える。コマンド発行制御部１１は、コマンドを発行する。コマンド発行制御部１１は、ストレージ装置の構成とストレージ装置の動作状態とに基づいて、ディスク３００に対するコマンドの発行数をディスク単位で制御する。具体的には、コマンド発行制御部１１は、構成管理部１３からストレージ装置の構成情報を取得し、該構成情報と動作状態管理部１１０が管理しているストレージ装置の動作状態情報とに基づいて、各々のディスク３００に対するコマンドの発行数を制御する。ストレージ装置の構成情報は、例えば、ストレージ装置の装置モデルに関する情報、ディスクのループ数、ディスクの種別等の情報を含む情報である。ストレージ装置の構成情報がＣＭ１の数、ディスク３００の搭載数の情報を含むようにしてもよい。ディスク３００の搭載数は、ストレージ装置に搭載されるディスク３００の総数であってもよいし、一つのループに接続されるディスク３００の数であってもよい。ストレージ装置の動作状態情報は、少なくとも動作中のディスク３００の数を含む情報である。コマンド発行制御部１１が備える動作状態管理部１１０は、ストレージ装置の動作状態情報を管理する。
【００２３】
コマンド発行制御部１１が、上述したようにディスク単位でコマンドの発行数を制御するとともに、動作中のディスクの数を監視して、ディスクのループ単位のコマンドの発行数が予め決められたコマンドの発行数以下になるように各々のループに対するコマンドの発行数を制御するようにしてもよい。ここで動作中のディスクの数として、あるループ内で動作中のディスクの数を監視してもよいし、ストレージ装置全体で動作中のディスク装置の数を監視してもよい。
【００２４】
コマンド送信部１２は、コマンド発行制御部１１によって発行されたコマンドをファブリック装置２を介してターゲットのディスク３００に対して送信する。
【００２５】
ファブリック装置２は、ＣＭ１のコマンド送信部１２から通信ポート２００を通じて送信されたコマンドを、通信ポート２０１を通じてターゲットのディスク３００に対して送信するファイバチャネルスイッチ（ＦＳ）２０２を備える。
【００２６】
なお、上記ＣＭ１及びファブリック装置２の機能は、ＣＰＵとその上で実行されるプログラムにより実現される。該プログラムは、コンピュータが読み取り可能な記録媒体、例えば半導体メモリ、ハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ等に格納することができ、これらの記録媒体に記録して提供され、又は、通信インタフェースを介してネットワークを利用した送受信により提供される。
【００２７】
以下に、本発明の実施例１について説明する。本発明の実施例１のコマンド発行制御処理においては、ＣＭ１が、ストレージ装置の構成とストレージ装置の動作状態とに基づいて、ディスク単位のコマンド発行数の上限を各々のディスク３００について決定し、該ディスク３００に対するコマンドの発行数を上記決定された上限以下に制限する。例えば、ＣＭ１は、ストレージ装置の構成に含まれるディスクのループ数、対象となるディスク３００の種類、ディスクの搭載数、ＣＭ１の数に関する情報と、動作状態管理部１１０が管理している動作状態情報に含まれる動作中のディスク３００の数とに基づいて、ディスク単位のコマンド発行数の上限を決定する。なお、前述したように、ディスクの搭載数が、一つのループに接続されるディスク３００の数であってもよい。
【００２８】
図３は、本発明の実施例１のコマンド発行制御処理フローを示す図である。まず、ＣＭ１のコマンド発行制御部１１が、構成管理部１３からストレージ装置の構成情報を取得し、該構成情報に含まれるストレージ装置の装置モデルを取得する（ステップＳ１）。また、コマンド発行制御部１１が、上記構成情報に含まれるディスクのループ数、対象となるディスク３００の種類、ディスクの搭載数、ＣＭ１の数に関する情報を取得する（ステップＳ２）。コマンド発行制御部１１が、動作状態管理部１１０が管理している動作状態情報に含まれる動作中のディスク３００の数を取得する（ステップＳ３）。コマンド発行制御部１１が、上記取得された装置モデル、ディスクのループ数、対象となるディスク３００の種類、ディスクの搭載数、ＣＭ１の数に関する情報、動作中のディスク３００の数に基づいて、予め所定の記憶手段に記憶された、装置モデル、ディスクのループ数、ディスクの種類、ディスクの搭載数、ＣＭ１の数に関する情報、動作中のディスク３００の数とコマンド発行数の上限との対応情報を用いて、該対象となるディスクへのコマンド発行数の上限を決定し、対象となるディスク３００へのコマンド発行数を該決定されたコマンド発行数の上限以下に制限する（ステップＳ４）。
【００２９】
上述した本発明の実施例１では、ＣＭ１が、ストレージ装置の構成とストレージ装置の動作状態とに基づいて、ディスク３００に対するコマンドの発行数を制御するので、ストレージ装置の構成が大規模である場合でも、コマンドの発行数を制御してコマンドレスポンスの低下を防止することができる。
【００３０】
以下に、本発明の実施例２について説明する。図４は、本発明の実施例２のコマンド発行制御処理フローを示す図である。本発明の実施例２では、ＣＭ１のコマンド発行制御部１１が、動作中のディスク３００の数を監視して、ディスクのループ単位のコマンドの発行数が所定数以下になるように各々のループに対するコマンドの発行数を制御する。従って、あるループ内の各々のディスク３００へのコマンド発行数がディスク単位のコマンド発行数の上限を越えていない場合であっても、該ループ全体でのコマンド発行数がループ単位のコマンド発行数の上限を越える場合には、該ループ内のディスク３００に対するコマンドの発行を制限（停止）することができる。
【００３１】
まず、ＣＭ１のコマンド発行制御部１１が、ディスク単位のコマンド発行数の制限処理を実行する（ステップＳ１１）。具体的には、コマンド発行制御部１１が、前述した図３のステップＳ１乃至Ｓ４の処理を実行することによって、ディスク３００に対するコマンド発行数を該ディスク３００に対するコマンド発行数の上限以下に制限する。
【００３２】
次に、コマンド発行制御部１１が、動作中のディスク数が所定数以上であるかを判断する（ステップＳ１２）。コマンド発行制御部１１が、動作中のディスク数が所定数以上でないと判断した場合は、コマンド発行制御部１１はコマンドを発行する（ステップＳ１３）。コマンド発行制御部１１が、動作中のディスク数が所定数以上であると判断した場合は、コマンド発行制御部１１はディスクのループ単位でコマンド発行数を制限して（ステップＳ１４）、ステップＳ１３に進む。すなわち、本実施例は、ループ単位のコマンド発行制御を追加する。このとき、ループ単位のコマンド発行制御に用いるループ単位のコマンド発行数の上限は、ディスク単位でのコマンド発行数の上限の、ループ内の総和に準じたものとする。そして、本実施例におけるディスク単位でのコマンド発行数の上限は、ディスク単位でのコマンド発行制御のみ行っている場合よりも高い値とする。本実施例においては、コマンド発行時には、ループ単位・ディスク単位のコマンド発行数の制限の双方とも満たしている場合でないと、コマンドを発行することはできない。
【００３３】
以下に、ディスク単位でのコマンド発行数の上限とループ単位のコマンド発行数の上限の設定について具体的に説明する。ディスク単位でのコマンド発行制御のみ行っている場合は、例えば、以下のように設定する。
【００３４】
ディスク数：５０ディスク
ディスク単位でのコマンド発行数の上限＝１００コマンド
ループ単位のコマンド発行数の上限＝なし
ループ単位のコマンド発行制御を追加する場合は、例えば以下のように設定する。
【００３５】
ディスク数：５０ディスク
ディスク単位でのコマンド発行数の上限＝１２０コマンド
ループ単位のコマンド発行数の上限＝５０００（１００×５０）コマンド
ディスク単位でのコマンド発行数の上限は、ループ全体の負荷を考え、ディスク３００の処理限界より低く抑えた値を設定している。ループ単位でのコマンド発行数の上限を設定し、該ループ単位でのコマンド発行数の上限を用いてループ単位でのコマンド発行制御をすることで、ディスク単位でのコマンド発行数の上限を引き上げることが可能となる。なぜならば、一部のディスク３００に多くのコマンドが発行された場合でも、他のコマンド発行数が少ないディスクの兼ね合いで、ループ全体では一定以下のコマンド数が保たれるためである。従って、上述した実施例２によれば、ループ単位でのコマンド発行制御を追加することで、装置の性能をさらに引き出すことが可能となる。
【００３６】
以上から把握できるように、本実施形態の特徴を述べると以下の通りである。
【００３７】
（付記１）中継装置を介してディスクに対してコマンドを発行するディスクコントローラを備えるストレージ装置であって、
前記ディスクコントローラが、
前記ストレージ装置の構成と前記ストレージ装置の動作状態とに基づいて前記ディスクに対するコマンドの発行数を制御するコマンド発行制御手段を備える
ことを特徴とするストレージ装置。
【００３８】
（付記２）各々のディスクがループ接続されており、
前記コマンド発行制御手段が、動作中のディスクの数を監視して、ディスクのループ単位のコマンドの発行数が予め決められたコマンドの発行数以下になるように各々のループに対するコマンドの発行数を制御する
ことを特徴とする付記１に記載のストレージ装置。
【００３９】
（付記３）中継装置を介してディスクに対してコマンドを発行するディスクコントローラであって、
前記ストレージ装置の構成と前記ストレージ装置の動作状態とに基づいて前記ディスクに対するコマンドの発行数を制御するコマンド発行制御手段を備える
ことを特徴とするディスクコントローラ。
【００４０】
（付記４）各々のディスクがループ接続されており、
前記コマンド発行制御手段が、動作中のディスクの数を監視して、ディスクのループ単位のコマンドの発行数が予め決められたコマンドの発行数以下になるように各々のループに対するコマンドの発行数を制御する
ことを特徴とする付記３に記載のディスクコントローラ。
【００４１】
（付記５）中継装置を介してディスクに対してコマンドを発行するディスクコントローラを備えるストレージ装置におけるコマンド発行制御方法であって、
前記ディスクコントローラが、前記ストレージ装置の構成と前記ストレージ装置の動作状態とに基づいて前記ディスクに対するコマンドの発行数を制御する
ことを特徴とするコマンド発行制御方法。
【００４２】
（付記６）各々のディスクがループ接続されており、
前記ディスクコントローラが、動作中のディスクの数を監視して、ディスクのループ単位のコマンドの発行数が予め決められたコマンドの発行数以下になるように各々のループに対するコマンドの発行数を制御する
ことを特徴とする付記５に記載のコマンド発行制御方法。
【図面の簡単な説明】
【００４３】
【図１】本実施形態のストレージ装置の全体構成例を示す図である。
【図２】ＣＭ及びファブリック装置の構成例を示す図である。
【図３】本発明の実施例１のコマンド発行制御処理フローを示す図である。
【図４】本発明の実施例２のコマンド発行制御処理フローを示す図である。
【図５】ファブリック方式とループ方式を組み合わせて用いたストレージ装置の構成例である。
【図６】ファブリック方式とループ方式を組み合わせて用いたストレージ装置の構成例である。
【符号の説明】
【００４４】
１  ＣＭ
２  ファブリック装置
３  ＤＥ
１０  ＣＰＵ
１１  コマンド発行制御部
１２  コマンド送信部
１３  構成管理部
１１０  動作状態管理部
２００、２０１  通信ポート
２０２  ＦＳ
３００  ディスク
３０１  ＰＢＣ
【図１】
0004542173.tif 000002
【図２】
0004542173.tif 000003
【図３】
0004542173.tif 000004
【図４】
0004542173.tif 000005
【図５】
0004542173.tif 000006
【図６】
0004542173.tif 000007