(57)【要約】【課題】システムパフォーマンスの低下を最低限に抑えつつ、タイムクリティカルなコントロールコマンドを処理できるようにすることである。【解決手段】本発明のストレージサブシステムは、ストレージサブシステムのチャネルアダプタが、複数の上位装置から同一のポートを介して各種のコマンドを輻輳的に受信した場合に、当該受信したコマンドのうち第１種のコマンドを抽出し、当該抽出した第１種のコマンドを所定の単位時間において所定の起動保証数に達するまで、優先的に実行する一方、第２種のコマンドをコマンドキューにキューイングしておき、第１種のコマンドを起動保証数だけ実行した後に、当該単位時間において第２種のコマンド群を実行する。【選択図】図２
2010026946.tif 000002
【特許請求の範囲】
【請求項１】
ハードディスクドライブを有するストレージデバイスと、
前記ストレージデバイスを制御するコントローラと、を備えるストレージサブシステムであって、
前記コントローラは、
ネットワークを介して少なくとも１つのホストコンピュータを接続するポートを有するチャネルアダプタと、
前記ハードディスクドライブを接続し、前記ハードディスクドライブの所定の記憶領域に対するアクセスを制御するディスクアダプタと、を備え、
前記チャネルアダプタは、
各コマンドについての属性を定義する優先コマンドテーブルを有し、
前記チャネルプロセッサは、
前記少なくとも１つのホストコンピュータから、前記ポートを介して、複数のコマンドを受信し、前記優先コマンドテーブルに定義された属性に従って、前記受信した複数のコマンドから優先コマンドを抽出し、当該優先コマンドを非優先コマンドに優先して順次に実行する、
ことを特徴とするストレージサブシステム。
【請求項２】
請求項１記載のストレージサブシステムであって、
前記各コマンドについての属性は、所定の単位時間内に当該コマンドの起動を保証する数を示す起動保証数を含むことを特徴とするストレージサブシステム。
【請求項３】
請求項２記載のストレージサブシステムであって、
前記チャネルプロセッサは、前記起動保証数に依存して、前記受信した複数のコマンドのそれぞれを前記優先コマンド又は前記非優先コマンドのいずれかに決定することを特徴とするストレージサブシステム。
【請求項４】
請求項３記載のストレージサブシステムであって、
前記チャネルプロセッサは、前記優先コマンドを、前記所定の単位時間内に、前記起動保証数だけ順次に実行することを特徴とするストレージサブシステム。
【請求項５】
請求項３記載のストレージサブシステムであって、
前記各コマンドについての属性は、前記ハードディスクドライブ上の特定の記憶領域を指し示す論理ブロックアドレスを含むことを特徴とするストレージサブシステム。
【請求項６】
請求項５記載のストレージサブシステムであって、
前記チャネルプロセッサは、前記受信した複数のコマンドのうち前記特定の記憶領域を指定するコマンドを、前記優先コマンドに決定することを特徴とするストレージサブシステム。
【請求項７】
請求項１記載のストレージサブシステムであって、
前記少なくとも１つのホストコンピュータは、複数の仮想マシンを有し、
前記複数の仮想マシンが、前記チャネルアダプタの前記ポートに対して、前記複数のコマンドを送信する、ことを特徴とするストレージサブシステム。
【請求項８】
請求項１記載のストレージサブシステムであって、
前記チャネルプロセッサは、管理装置から送信される優先コマンド設定要求に基づいて、前記優先コマンドテーブルを作成することを特徴とするストレージサブシステム。
【請求項９】
ホストコンピュータから発行されるコマンドに応答して、ストレージデバイスに対するアクセスを制御するコントローラによるコマンド実行方法であって、
前記コマンド実行方法は、
各コマンドについての属性を定義する優先コマンドテーブルを保持するステップと、
前記少なくとも１つのホストコンピュータから、ポートを介して、複数のコマンドを受信するステップと、
前記優先コマンドテーブルに定義された属性に従って、前記受信した複数のコマンドから優先コマンドを抽出するステップと、
前記抽出した優先コマンドを、非優先コマンドに優先して順次に実行するステップと、
を含む、
ことを特徴とするコマンド実行方法。
【請求項１０】
請求項９記載のコマンド実行方法であって、
前記各コマンドについての属性は、所定の単位時間内に当該コマンドの起動を保証する数を示す起動保証数を含むことを特徴とするコマンド実行方法。
【請求項１１】
請求項１０記載のコマンド実行方法であって、
前記コントローラは、前記起動保証数に依存して、前記受信した複数のコマンドのそれぞれを前記優先コマンド又は前記非優先コマンドのいずれかに決定することを特徴とするコマンド実行方法。
【請求項１２】
請求項１１記載のコマンド実行方法であって、
前記コントローラは、前記優先コマンドを、前記所定の単位時間内に、前記起動保証数だけ順次に実行することを特徴とするコマンド実行方法。
【請求項１３】
請求項１１記載のコマンド実行方法であって、
前記各コマンドについての属性は、前記ハードディスクドライブ上の特定の記憶領域を指し示す論理ブロックアドレスを含むことを特徴とするコマンド実行方法。
【請求項１４】
請求項１３記載のコマンド実行方法であって、
前記コントローラは、前記受信した複数のコマンドのうち前記特定の記憶領域を指定するコマンドを、優先コマンドとして決定することを特徴とするコマンド実行方法。
【請求項１５】
請求項９記載のコマンド実行方法であって、
前記コントローラが、管理装置から送信される優先コマンド設定要求に基づいて、前記優先コマンドテーブルを作成するステップをさらに含む、ことを特徴とするコマンド実行方法。
【請求項１６】
請求項９記載のコマンド実行方法であって、
前記コントローラは、前記少なくとも１つのホストコンピュータ上に形成された複数の仮想マシンから発行される前記複数のコマンドを、前記ポートを介して、受信することを特徴とするコマンド実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージサブシステム及びコントローラによるコマンド実行方法に関し、特に、ホストコンピュータにより発行されたコマンドを受信したストレージサブシステムのコントローラが、当該コマンドの実行優先順位を決定し、スケジューリングする技術に関する。
【背景技術】
【０００２】
近年、ＳＡＮに基づくコンピュータシステムは、サーバコンピュータやストレージ装置のリソースを有効に利用するために、仮想化技術を活用している。特に、サーバコンピュータ内で複数のＯＳを動作させる仮想ＯＳ技術は、急速に普及しつつある。
【０００３】
このような仮想環境においては、ストレージ装置は、複数の仮想ＯＳからのアクセスを同一のポートを介して受信する。このため、ストレージ装置は、１つのポートで、ある仮想ＯＳからリードコマンドやライトコマンドといったＩ／Ｏコマンドを受信しつつ、他の仮想ＯＳからデバイス認識に関わるコントロールコマンドを受信する可能性があり、従って、当該ポートを担うプロセッサは、Ｉ／Ｏコマンド及びコントロールコマンドの双方を処理することになる。一般的に、Ｉ／Ｏコマンドは、コントロールコマンドに比べて、プロセッサに高い負荷を与える。従って、ストレージ装置が、仮想ＯＳから多数のＩ／Ｏコマンドを受信し、プロセッサに高い負荷がかかっている状態で、別の仮想ＯＳからコントロールコマンドをさらに受信した場合、プロセッサは、当該コントロールコマンドを規定時間内に処理できず、タイムアウトエラーを引き起こし、これにより、最悪の場合、当該他の仮想ＯＳに関わるシステムが停止してしまうことになる。一方、コントロールコマンドに対する処理を優先させたのでは、ストレージ装置の本来的な処理であるＩ／Ｏ処理が遅延し、システムパフォーマンスに影響を及ぼしてしまうことになる。
【０００４】
下記特許文献１は、特定のホスト又はデバイスに対する処理が常に優先されてしまうことを防ぎ、均等に処理を行う技術を開示する。具体的には、特許文献１において、制御装置は、特定ホストからのコマンド終了後、キューイングされている当該特定ホストからのコマンドの実行優先順位を最下位にして、他のホストからのコマンドに対する処理を優先し、また、特定デバイスへのコマンド終了後、キューイングされている当該特定デバイスからのコマンドの実行優先順位を最下位にして、他のデバイスへのコマンドに対する処理を優先する。
【０００５】
また、特許文献２は、上位装置から多重的に発行されるコマンドの数を制御する技術を開示する。具体的には、特許文献２において、記憶制御装置は、ポートごとにコマンドの受領可能数を算出し、これを上位装置に通知し、上位装置は、当該通知された受領可能数に従って、記憶制御装置にコマンドを発行する。
【０００６】
さらに、特許文献３は、動的優先度スケジューリング機構によってスケジューリングされているプロセスよりも、特定のプロセスを優先的に実行するコマンド即答性保証方式を開示する。
【特許文献１】特開平６-１１９２８２号公報
【特許文献２】特開２００７-３２３３５６号公報
【特許文献３】特開平６-３５８５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記何れの特許文献に開示されたストレージ装置も、コマンドの種別／属性を考慮した、コマンド処理のスケジューリングを行っていなかった。このため、システムパフォーマンスの低下を最低限に抑えつつ、タイムクリティカルなコントロールコマンドを処理することが困難であった。
【０００８】
そこで、本発明は、システムパフォーマンスの低下を最低限に抑えつつ、タイムクリティカルなコントロールコマンドを処理することができるストレージサブシステムを提案することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明のストレージサブシステムは、ストレージサブシステムのチャネルアダプタが、複数の上位装置から同一のポートを介して各種のコマンドを輻輳的に受信した場合に、当該受信したコマンドのうち第１種のコマンドを抽出し、当該抽出した第１種のコマンドを所定の単位時間において所定の起動保証数に達するまで、優先的に実行する一方、第２種のコマンドをコマンドキューにキューイングしておき、第１種のコマンドを起動保証数だけ実行した後に、当該単位時間において第２種のコマンド群を実行する。
【００１０】
即ち、ある観点に従う本発明は、ハードディスクドライブを有するストレージデバイスと、当該ストレージデバイスを制御するコントローラと、を備えるストレージサブシステムである。当該コントローラは、ネットワークを介して少なくとも１つのホストコンピュータを接続するポートを有するチャネルアダプタと、当該ハードディスクドライブを接続し、当該ハードディスクドライブの所定の記憶領域に対するアクセスを制御するディスクアダプタと、を備える。当該チャネルアダプタは、各コマンドについての属性を定義する優先コマンドテーブルを有しており、当該少なくとも１つのホストコンピュータから、当該ポートを介して、複数のコマンドを受信すると、当該優先コマンドテーブルに定義された属性に従って、当該受信した複数のコマンドから優先コマンドを抽出し、当該優先コマンドを非優先コマンドに優先して順次に実行する。
【００１１】
これにより、ストレージサブシステムは、タイムクリティカルなコマンド（例えばコントロールコマンド）を優先的に実行することができるようになり、Ｉ／Ｏコマンドの集中によってプロセッサが高負荷の状態にあっても、タイムアウトエラー等の発生を抑えることができるようになる。
【００１２】
本発明の一態様では、当該各コマンドについての属性は、所定の単位時間内に当該コマンドの起動を保証する数を示す起動保証数を含んでいる。そして、当該チャネルプロセッサは、当該起動保証数に依存して、当該受信した複数のコマンドのそれぞれを当該優先コマンド又は当該非優先コマンドのいずれかに決定し、当該優先コマンドを、当該所定の単位時間内に、当該起動保証数だけ順次に実行する。
【００１３】
これにより、ストレージサブシステムは、優先コマンドに対する優先的実行により、非優先コマンドが全く実行されなくなるという事態を回避することができ、システムパフォーマンスの低下を最低限に抑えつつ、タイムクリティカルなコントロールコマンドを処理することができるようになる。
【００１４】
また、別の観点に従う本発明は、ホストコンピュータから発行されるコマンドに応答して、ストレージデバイスに対するアクセスを制御するストレージサブシステムのコントローラによるコマンド実行方法である。当該コマンド実行方法は、各コマンドについての属性を定義する優先コマンドテーブルを保持するステップと、当該少なくとも１つのホストコンピュータから、ポートを介して、複数のコマンドを受信するステップと、当該優先コマンドテーブルに定義された属性に従って、当該受信した複数のコマンドから優先コマンドを抽出するステップと、当該抽出した優先コマンドを、非優先コマンドに優先して順次に実行するステップと、を含む。
【発明の効果】
【００１５】
本発明によれば、ストレージサブシステムは、システムパフォーマンスの低下を最低限に抑えつつ、タイムクリティカルなコントロールコマンドを処理することができるようになる。
【発明を実施するための最良の形態】
【００１６】
本発明は、ストレージサブシステムのチャネルアダプタが、複数の上位装置から同一のポートを介して各種のコマンドを輻輳的に受信した場合に、当該受信したコマンドのうち第１種のコマンド（優先コマンド）を抽出し、当該抽出した第１種のコマンドを所定の単位時間（１実行サイクル；例えば１秒間）において所定の起動保証数に達するまで、優先的に実行する一方、第２種のコマンド（非優先コマンド）をコマンドキュー（ＦＩＦＯバッファ）にキューイングしておき、第１種のコマンドを起動保証数だけ実行した後に、当該単位時間において第２種のコマンド群を実行することを特徴とする。起動保証数に達したために処理できなかった第１種のコマンドは、非優先コマンドとともに、コマンドキューにキューイングされ、ＦＩＦＯによる実行を待つ。図１は、本発明の特徴を概念的に説明している。
【００１７】
即ち、同図は、ホストコンピュータ３に接続されたストレージサブシステム１を示している。今、ストレージサブシステム１のチャネルアダプタ１２１は、ホストコンピュータ３上の複数の仮想ＯＳから同一のポートを介して各種のコマンドを輻輳的に受信する。チャネルアダプタ１２１内部のチャネルプロセッサ１２１１は、受信したコマンドが優先コマンドであるか非優先コマンドであるか否かを判別して、それが優先コマンドであれば直ちにこれを実行する一方、非優先コマンドであれば、コマンドキューにキューイングする。優先コマンドが複数存在する場合、それらは同様に優先コマンドキュー（図示せず）を介して順次に取り出され、実行される。チャネルプロセッサ１２１１が、単位時間内に実行できる優先コマンドの数は、予め設定された起動保証数に制限されている。そして、チャネルプロセッサ１２１１は、単位時間内に所定の起動保証数だけ優先コマンドを実行した後、コマンドキューにキューイングされているコマンドを順次に実行する。ここでは、優先コマンドとして、デバイス認識コマンドに基づくコントロールコマンドを想定し、また、非優先コマンドとしては、例えば読み込みコマンドや書き込みコマンドのようなＩ／Ｏコマンドを想定しているが、これに限定する趣旨ではない。
【００１８】
同図では、チャネルアダプタ１２１の１つのポートに、ホストコンピュータ３上の複数の仮想ＯＳからコマンドが入ってくる例が示されている。また、チャネルアダプタ１２１の１つのポートに、ネットワークスイッチを介して複数のホストコンピュータ３からコマンドが入ってくる構成も、本発明の要旨の範囲内である。
【００１９】
次に、本発明の実施の形態について、図面を参照しつつ説明する。
【００２０】
［第１の実施形態］
図２は、本発明の第１の実施形態に係るストレージサブシステムの全体構成を説明するための図である。同図に示すストレージサブシステム１は、ネットワーク２Ａを介してホストコンピュータ３に接続され、コンピュータシステムを形成している。ストレージサブシステム１はまた、管理用ネットワーク２Ｂを介して管理装置４に接続されている。
【００２１】
ネットワーク２Ａは、例えば、ＬＡＮ、インターネット、又はＳＡＮ（Storage Area Network）のいずれかを用いることができ、典型的には、ネットワークスイッチやハブ等を含んで構成される。本実施形態では、ネットワーク２Ａは、ファイバーチャネルプロトコルを用いたＳＡＮ（ＦＣ−ＳＡＮ）で構成され、管理用ネットワーク２Ｂは、ＴＣＰ／ＩＰベースのＬＡＮで構成されているものとする。
【００２２】
ホストコンピュータ３は、プロセッサと、メインメモリと、通信インターフェースと、ローカル入出力装置等のハードウェア資源を備えるとともに、デバイスドライバやオペレーティングシステム（ＯＳ）、アプリケーションプログラム等のソフトウェア資源を備える（図示せず）。これによって、ホストコンピュータ３は、プロセッサの制御の下、各種のアプリケーションプログラムを実行して、ハードウェア資源との協働により、ストレージサブシステム１にアクセスしながら、所望の処理を遂行する。また、本実施形態では、仮想ＯＳ技術が採用されている。仮想ＯＳ技術は、ホストコンピュータ３上で複数のＯＳを独立に実行する技術である。従って、ホストコンピュータ３上で実行される仮想ＯＳは、あたかも独立のコンピュータであるかのように（つまり、独立の仮想マシンとして）振る舞うことができる。ホストコンピュータ３上の各仮想ＯＳは、ストレージサブシステム１のＲＡＩＤ構成を管理するためのＲＡＩＤマネージャを実行する。
【００２３】
ストレージサブシステム１は、データストレージサービスをホストコンピュータ３に提供するストレージ装置である。ストレージサブシステム１は、典型的には、データを記憶する記憶媒体を含むストレージデバイス１１と、これを制御するコントローラ１２とから構成される。ストレージデバイス１１とコントローラ１２とは、光ファイバ等のディスクケーブルを介して接続される。コントローラ１２の内部ハードウェア構成は二重化されており、コントローラ１２は、ストレージデバイス１１に対して２つのチャネル（パス）を介してアクセスすることができる。
【００２４】
ストレージデバイス１１は、典型的には、大容量のハードディスクドライブ１１０群及びこれらの駆動を制御する制御回路（図示せず）を含む１つ以上のドライブユニットから構成される。ハードディスクドライブ１１０に代えて、フラッシュメモリ等のソリッドステート装置（ＳＳＤ）が用いられてもよい。本実施形態では、ハードディスクドライブ１１０群は、ＦＣ−ＡＬトポロジーで接続されている。ただし、これは、他のネットワークトポロジーを排除する意味ではない。ストレージデバイス１１は、ディスクアレイと呼ばれることもある。
【００２５】
ハードディスクドライブ１１０は、典型的には、所定のＲＡＩＤ構成に基づいてＲＡＩＤグループを構成し、ＲＡＩＤ制御の下、Ｉ／Ｏアクセスされる。ＲＡＩＤ制御は、例えば、コントローラ１２に実装された既知のＲＡＩＤコントローラ乃至はＲＡＩＤエンジン（図示せず）により行われる。ＲＡＩＤグループは、１つのドライブユニット内のハードディスクドライブ１１０群のみで構成されても良いし、複数のドライブユニットに亘るハードディスクドライブ１１０群で構成されても良い。同一のＲＡＩＤグループに属するハードディスクドライブ１１０は、１つの論理デバイス（仮想デバイス）として扱われる。仮想デバイス上には、１つ以上の論理ユニット（ＬＵ）が形成される。
【００２６】
コントローラ１２は、ストレージサブシステム１全体を制御するシステムコンポーネントであり、その主たる役割は、ホストコンピュータ３（即ち、各仮想マシン）からのＩ／Ｏアクセス要求（Ｉ／Ｏコマンド）に基づいて、ストレージデバイス１１に対するＩ／Ｏ制御を行うことである。Ｉ／Ｏコマンドは、論理ユニット上の記憶領域を指し示す論理アドレスを含む。論理アドレスは、論理ユニット番号（ＬＵＮ）及び論理ブロックアドレス（ＬＢＡ）からなる。コントローラ１２は、ホストコンピュータ３からＩ／Ｏコマンドを受信すると、Ｉ／Ｏコマンドが指定する論理アドレスを物理アドレスに変換し、ハードディスクドライブ１１０上の所定の記憶領域にアクセスする。
【００２７】
また、コントローラ１２は、Ｉ／Ｏコマンドに加えて、デバイス認識コマンドに基づくコントロールコマンドを受け付ける。デバイス認識コマンドは、ホストコンピュータ３のような上位装置（例えば、仮想マシン）がストレージデバイス１１のシステム構成等を認識するために発行するコマンドであり、典型的には、コントローラ１２によって解釈・実行されるコマンドのシーケンスで構成される。本実施形態のコントローラ１２は、受け付けた各種のコマンドのうち特定のコマンド（優先コマンド）については、単位時間において所定の起動保証数に達するまで、他のコマンド（非優先コマンド）に優先させて処理するメカニズムを備える。本実施形態では、このようなメカニズムは、チャネルアダプタ１２１に実装されている。
【００２８】
上述したように、本実施形態では、コントローラ１２内のコンポーネントは、耐障害性の観点から、二重化されている。以下では、二重化された個々のコントローラ１２を指すときは、「コントローラ１２０」というものとする。
【００２９】
各コントローラ１２０は、チャネルアダプタ（ＣＨＡ）１２１と、キャッシュメモリ（ＣＭ）１２２と、ディスクアダプタ（ＤＫＡ）１２３と、シェアドメモリ１２４と、スイッチ部１２５とを含む。
【００３０】
チャネルアダプタ１２１は、ホストコンピュータ３を接続するためのインターフェースであり、ホストコンピュータ３との間の所定のプロトコルに従ったデータ通信を制御する。チャネルアダプタ１２１は、チャネルプロセッサ（ＣＨＰ）１２１１と、ローカルメモリ（ＬＭ）１２１２と、ＬＡＮコントローラ（ＬＡＮＣ）１２１３とを含む複数のチップセットを備える。同図では、代表する１つのチップセットが示されている。各チップセットは、チャネルプロセッサ１２１１の複数のポート（図示せず）のそれぞれに割り当てられており、チャネルプロセッサ１２１１は、当該ポートを介したホストコンピュータ３との通信を担っている。例えば、チャネルプロセッサ１２１１は、ホストコンピュータ３から書き込み要求（書き込みコマンド）を受信すると、スイッチ部１２５を介して、キャッシュメモリ１２２に当該書き込みコマンド及びこれに従うデータを書き込む。ローカルメモリ１２１２は、チャネルプロセッサ１２１１のメインメモリとして機能する。本実施形態のローカルメモリ１２１２は、各コマンドの属性を定義する優先コマンドテーブル３００（図３）を保持する。本実施形態では、各コマンドには、その属性として、優先コマンド又は非優先コマンドのいずれかが与えられる。また、ローカルメモリ１２１２上には、コマンドキュー領域が形成される。ＬＡＮコントローラ１２１３は、後述する管理装置４との通信を制御する回路である。
【００３１】
キャッシュメモリ１２２は、チャネルアダプタ１２１とディスクアダプタ１２３との間でやり取りされるデータを一時的に記憶するメモリである。キャッシュメモリ１２２は、例えば、ＤＲＡＭ等の揮発性メモリで構成され、あるいは、フラッシュメモリ等の不揮発性メモリで構成される。
【００３２】
ディスクアダプタ１２３は、ストレージデバイス１１を接続するためのインターフェースであり、ホストコンピュータ３からのＩ／Ｏコマンドに従って、ストレージデバイス１１との間の所定のプロトコルに従ったデータ通信を制御する。ディスクアダプタ１２３は、チャネルアダプタ１２１のほぼ同様の構成であり、ディスクプロセッサ（ＤＫＰ）と、ローカルメモリ（ＬＭ）と、ＬＡＮコントローラ（ＬＡＮＣ）とを含む複数のチップセットを備える。ディスクプロセッサ１２３１は、キャッシュメモリ１２３を周期的にチェックし、キャッシュメモリ１２３上にＩ／Ｏコマンドを見つけると、当該Ｉ／Ｏコマンドに従ってストレージデバイス１１のハードディスクドライブ１１０にアクセスする。
【００３３】
より具体的には、ディスクプロセッサ１２３１は、例えば、キャッシュメモリ１２３上の所定のキャッシュ領域に書き込みコマンドを見つけると、当該書き込みコマンドが指定するキャッシュメモリ１２２上のデータをハードディスクドライブ１１０の所定の記憶領域にデステージングするため、ストレージデバイス１１に対してアクセスを行う。また、ディスクプロセッサ１２３１は、キャッシュメモリ１２２上に読み出しコマンドを見つけると、当該読み出しコマンドが指定するハードディスクドライブ１１０上のデータをキャッシュメモリ１２２上の所定のキャッシュ領域にステージングするため、ストレージデバイス１１に対してアクセスを行う。
【００３４】
シェアドメモリ１２４は、チャネルアダプタ１２１及びディスクアダプタ１２３によって共有されるメモリである。シェアドメモリ１２４もまた、例えば、ＤＲＡＭ等の揮発性メモリで構成され、あるいは、フラッシュメモリ等の不揮発性メモリで構成される。シェアドメモリ１２４は、ストレージサブシステム１自体のシステム構成情報を記憶する。システム構成情報は、ストレージサブシステム１の稼働に必要な情報であり、例えば、論理ボリューム構成情報やＲＡＩＤ構成情報等を含む。
【００３５】
管理装置４は、システム管理者がストレージサブシステム１全体を管理するための端末装置であり、典型的には、管理プログラムを実装した汎用コンピュータで構成される。管理装置４は、サービスプロセッサ（ＳＶＰ）と呼ばれることもある。同図では、管理装置４は、管理用ネットワーク２Ｂを介してストレージ装置１の外側に設けられているが、この構成に限らず、ストレージサブシステム１の内部に設けられるようにしてもかまわない。あるいは、管理装置４と同等の機能を含むように、コントローラ１２が構成されてもよい。
【００３６】
システム管理者は、管理装置４によって提供されるユーザインターフェースを介して、コントローラ１２に指示を与え、これによって、ストレージサブシステム１のシステム構成情報を取得して、参照したり、システム構成情報を設定・変更したりすることができる。例えば、システム管理者は、管理装置４を操作して、ハードディスクドライブ１１０の増減設に応じて、論理ボリュームや仮想ボリュームを設定し、また、ＲＡＩＤ構成を設定することができる。
【００３７】
本実施形態では、管理装置４は、チャネルアダプタ１２１内のそれぞれのチップセットに対して、各コマンドの属性を設定することができる。コマンドの属性とは、ここでは、優先コマンド又は非優先コマンドのコマンド種別であり、また、優先コマンドであれば、単位時間内に起動が保証される回数が与えられる。設定されたコマンド属性は、優先コマンドテーブル３００として、ローカルメモリ１２１２上に保持される。
【００３８】
図３は、本発明の第１の実施形態に係るチャネルアダプタ１２１における優先コマンドテーブルの一例を説明するための図である。
【００３９】
同図を参照して、優先コマンドテーブル３００は、コマンドコード３０１、起動保証数３０２、処理数３０３の各欄からなる。コマンドコード３０１は、コントローラ１２が扱うコマンド群のそれぞれに割り当てられた１６進コードである。同図では、便宜上、コマンド名を併記している。起動保証数３０２は、単位時間内に、当該コマンドの起動（実行）を保証する数を示す。例えば、Ｉｎｑｕｉｒｙコマンド（０ｘ１２）は、単位時間内に２５６個まで起動されうる。起動保証数３０２の値が「０」である場合、当該コマンドは、非優先コマンドとして扱われる。従って、起動保証数３０２の値が「０」以外の正数であれば、当該コマンドは優先コマンドとして扱われる。処理数３０３は、単位時間内に当該コマンドを実行した数を示す。処理数３０３は、単位時間経過毎に、初期値（「０」）にリセットされる。
【００４０】
図４は、本発明の第１の実施形態に係る管理装置４による優先コマンド設定処理を説明するためのフローチャートである。優先コマンド設定処理は、管理装置４のプロセッサが管理プログラムを実行することにより、実現される。
【００４１】
即ち、同図を参照して、管理装置４は、ユーザインターフェース上に、図５に示すような優先コマンド設定ウィンドウ５００をシステム管理者に提示して、所定の入力を受け付ける（ＳＴＥＰ４０１）。本例では、コマンドごとに起動保証数を示す値が入力される。ユーザが、ポインティングデバイスを操作して、設定モードメニュー５０１の中から優先コマンドの設定モードを指定すると、指定された優先コマンドの設定モードに従った優先コマンド設定テーブル５０２が提示される。ユーザは、優先コマンド設定テーブル５０２の個々のコマンドに対して、起動保証数を入力する。
【００４２】
図４に戻り、管理装置４は、ユーザインターフェース上に表示された優先コマンド設定ウィンドウ５００を介して、起動保証数が入力されると、当該起動保証数が有効値であるか否かを判断する（ＳＴＥＰ４０２）。例えば、負の値が入力されたり、通常想定される値を超えた場合に、有効値でないと判断される。管理装置４は、入力された起動保証数が有効値でないと判断する場合に（ＳＴＥＰ４０２のＮｏ）、エラーメッセージを表示して（ＳＴＥＰ４０３）、再度、入力を促す。
【００４３】
一方、管理装置４は、入力された起動保証数が有効値であると判断する場合に（ＳＴＥＰ４０２のＹｅｓ）、Ａｐｐｌｙボタン５０３（図５）が選択されるまで、起動保証数の入力を受け付ける。管理装置４は、Ａｐｐｌｙボタン５０３が選択されたと判断すると（ＳＴＥＰ４０４）、コマンドごとに受け付けた起動保証数をチャネルアダプタ１２１に設定すべく、優先コマンド設定要求をチャネルアダプタ１２１に送信する（ＳＴＥＰ４０５）。
【００４４】
これにより、チャネルアダプタ１２１は、ＬＡＮコントローラ１２１３を介して、優先コマンド設定要求を受信し、チャネルプロセッサ１２１１の制御の下、当該優先コマンド設定要求に基づいて、ローカルメモリ１２２２上の優先コマンドテーブル３００を作成乃至は更新する。
【００４５】
上記の例は、管理装置４上の管理プログラムによって優先コマンド設定処理が実現されているが、これにこだわるものではない。ホストコンピュータ３上のＲＡＩＤマネージャにより、優先コマンド設定処理が実現されてもかまわない。また、ユーザインターフェースは、ＧＵＩに限らず、コマンドラインであってもかまわない。
【００４６】
また、上記の例では、システム管理者が、ユーザインターフェースを介して、コマンドの属性を入力したが、管理装置４（又はＲＡＩＤマネージャ）の制御の下、ホストコンピュータ３による所定のシーケンス処理に従い発行されるコマンドコード及びその個数を、チャネルアダプタ１２１が記憶することで、優先コマンドテーブル３００を自動的に作成してもよい。
【００４７】
より具体的には、ホストコンピュータ３の仮想ＯＳが、起動保証シーケンス処理に従うコマンドを実行する前に、管理装置４は、コントローラ１２のチャネルアダプタ１２１に対して、起動保証シーケンスの取り込み開始を指示する。これを受けたチャネルアダプタ１２１は、起動保証シーケンスの取り込みモードで動作する。仮想ＯＳは、チャネルアダプタ１２１が起動保証シーケンスの取り込みモードで動作していることを確認し、起動保証シーケンス処理を実行し、これにより、コマンドシーケンスがチャネルアダプタ１２１に対して発行される。チャネルアダプタ１２１は、起動保証シーケンスの取り込みモードの動作中に受信したコマンドのコマンドコード及びその個数を記録する。その後、管理装置４は、チャネルアダプタ１２１に対して起動保証シーケンスの取り込み終了を指示する。これを受けて、チャネルアダプタ１２１は、記録したコマンドコード及びその個数に基づいて、優先コマンドテーブル３００における起動保証数３０２を決定する。
【００４８】
これにより、システム管理者が、特定のシーケンスに従って発行されるコマンドについての情報を持ち合わせていない場合であっても、起動保証シーケンスに従って、自動的に優先コマンドテーブル３００を作成することができるようになる。
【００４９】
このように、起動保証シーケンスに従って、チャネルアダプタ１２１が、自動的に優先コマンドテーブル３００を作成した場合であっても、管理装置４は、チャネルアダプタ１２１から作成した優先コマンドテーブル３００の内容を取得し、これを優先コマンド設定ウィンドウ５００に表示することで、システム管理者の編集を受け付けるようにしてもよい。
【００５０】
次に、チャネルアダプタ１２における各種の処理を説明する。図６は、本発明の第１の実施形態に係るチャネルアダプタ１２１におけるポーリング処理を説明するためのフローチャートである。ポーリング処理は、ストレージサブシステム１の稼働中、チャネルプロセッサ１２１１が各種のイベントの発生を監視する処理である。ポーリング処理は、例えば、ある種のデーモンプログラムにより、実現される。
【００５１】
同図に示すように、ポーリング処理において、チャネルプロセッサ１２１１は、各種の設定要求を受信したか否かを監視する（ＳＴＥＰ６０１）。チャネルプロセッサ１２１１は、設定要求を受信したと判断する場合には（ＳＴＥＰ６０１のＹｅｓ）には、受信した設定要求に応じた設定処理を行う（ＳＴＥＰ６０２）。例えば、優先コマンド設定要求を受信した場合、チャネルプロセッサ１２１１は、当該優先コマンド設定要求で指定された起動保証数に従って、ローカルメモリ１２１２上の優先コマンドテーブル３００を更新する。
【００５２】
チャネルプロセッサ１２１１は、次に、各種のコマンドを受信したか否かを監視する（ＳＴＥＰ６０３）。チャネルプロセッサ１２１１は、コマンドを受信したと判断する場合には（ＳＴＥＰ６０３のＹｅｓ）、受信したコマンドに応じた処理を行う（ＳＴＥＰ６０４）。コマンド受信時の処理については、図７を用いて説明される。チャネルプロセッサ１２１１は、コマンド受信時処理を実行した後、所定の単位時間が経過したか否かを判断する（ＳＴＥＰ６０７）。
【００５３】
チャネルプロセッサ１２１１はまた、コマンドキューにコマンドがキューイングされているか否かを監視する（ＳＴＥＰ６０５）。チャネルプロセッサ１２１１は、コマンドキューにコマンドがキューイングされていると判断する場合には（ＳＴＥＰ６０５のＹｅｓ）、コマンドキューからコマンドを１つ取り出して、当該コマンドに応じた処理を行う（ＳＴＥＰ６０６）。例えば、取り出されたコマンドが書き込みコマンドであれば、チャネルプロセッサ１２１１は、当該書き込みコマンド及びこれに従うデータをキャッシュメモリ１２２の所定の領域に書き込む。
【００５４】
チャネルプロセッサ１２１１は、それぞれのイベントの発生をチェックした後、所定の単位時間が経過したか否かを判断する（ＳＴＥＰ６０７）。チャネルプロセッサ１２１１は、所定の単位時間が経過したと判断する場合には（ＳＴＥＰ６０７）、優先コマンドテーブル３００のコマンドごとの処理数３０３の値を「０」にする。
【００５５】
図７は、本発明の第１の実施形態に係るチャネルプロセッサ１２１１によるコマンド受信時処理を説明するためのフローチャートである。同図は、図６のＳＴＥＰ６０４に示す処理を詳細に説明している。
【００５６】
同図に示すように、チャネルプロセッサ１２１１は、優先コマンドテーブル３００を参照して、受信したコマンドの属性、即ち、当該受信したコマンドが優先コマンドであるか否かを判断する（ＳＴＥＰ７００）。上述したように、優先コマンドであるか否かは、優先コマンドテーブル３００の対応するコマンドの起動保証数３０２の値が「０」以外であるか否かにより判断される。つまり、起動保証数３０２の値が「０」以外の値であれば、当該コマンドは、優先コマンドであると判断される。
【００５７】
チャネルプロセッサ１２１１は、受信したコマンドが優先コマンドでないと判断する場合（ＳＴＥＰ７０１のＮｏ）、当該コマンド（即ち、非優先コマンド）をコマンドキューにキューイングし（ＳＴＥＰ７０２）、処理を終了する。この場合、コマンドキューにキューイングされたコマンドは、図６で示したＳＴＥＰ６０６において実行されることになる。一方、チャネルプロセッサ１２１１は、受信したコマンドが優先コマンドであると判断する場合（ＳＴＥＰ７０１のＮｏ）、さらに、優先コマンドテーブル３００を参照して、当該コマンドの実行が起動保証数に達したか否かを判断する（ＳＴＥＰ７０３）。起動保証数に達したか否かは、優先コマンドテーブル３００の対応するコマンドの処理数３０３の値と起動保証数３０２の値とを比較することによって判断される。
【００５８】
チャネルプロセッサ１２１１は、当該コマンドの実行が起動保証数に達したと判断する場合（ＳＴＥＰ７０３のＹｅｓ）、当該コマンドをコマンドキューにキューイングし（ＳＴＥＰ７０２）、当該受信時処理を終了する。一方、チャネルプロセッサ１２１１は、当該コマンドの実行が起動保証数に達していないと判断する場合（ＳＴＥＰ７０３のＮｏ）、当該コマンドに応じた処理を行う。例えば、当該優先コマンドが、Ｉｎｑｕｉｒｙコマンドであれば、チャネルプロセッサ１２１１は、シェアドメモリ１２４に保持されているシステム構成情報を参照し、ストレージデバイス１１の種類や構成に関する情報を取得し、これをホストコンピュータ３に送信する。また、当該コマンドが、ＲｅａｄＣａｐａｃｉｔｙコマンドであれば、シェアドメモリ１２４に保持されているシステム構成情報を参照し、ストレージデバイス１１の容量に関する情報を取得して、これをホストコンピュータ３に送信する。
【００５９】
そして、チャネルプロセッサ１２１１は、優先コマンドテーブル３００の対応するコマンドの処理数３０３の値を１つインクリメントして（ＳＴＥＰ７０５）、処理を終了する。
【００６０】
図８は、本実施形態に係るチャネルアダプタ１２１における優先コマンドのスケジューリング処理を説明するための図である。ここでは、例えば、ホストコンピュータ３上の仮想ＯＳ＃１は、Ｉ／Ｏコマンド（非優先コマンド）をストレージサブシステム１の特定のポートに対して発行しており、仮想ＯＳ＃２は、コントロールコマンド（優先コマンド）を当該特定のポートに対して発行している状況を想定する。同図において、受信したコマンドのそれぞれを識別するために、その受信順に番号を割り振っている。また、ハッチングで示されたコマンドは、コントロールコマンドのような優先コマンドである。ここでは、説明を簡単にするため、単位時間は「１秒」とし、チャネルプロセッサ１２１１が単位時間内に実行できるコマンド数を「１０個」とする。また、当該優先コマンドの起動保証数は、「３」とする。
【００６１】
まず、同図（Ａ）に示すように、チャネルアダプタ１２１のチャネルプロセッサ１２１１が、一連のコマンドを受信した場合、最初の単位時間内に処理すべきコマンド＃１〜＃１０で示される受信コマンドのうちコマンド＃６で示される優先コマンドを他のコマンドに優先して実行する。そして、チャネルプロセッサ１２１１は、次の単位時間内に処理すべきコマンド＃１１〜＃２０で示される受信コマンドのうちコマンド＃１２及び＃１８で示される優先コマンドを他のコマンドに優先して実行する。
【００６２】
次に、同図（Ｂ）に示すように、単位時間内に処理すべきコマンドのうち優先コマンドの受信頻度が高い場合を想定する。この場合には、チャネルプロセッサ１２１１は、最初の単位時間内に処理すべきコマンド＃１〜＃１０で示される受信コマンドのうちコマンド＃３〜＃５で示される優先コマンドのみを他のコマンドに優先して実行する。つまり、コマンド＃６、＃９及び＃１０に示される優先コマンドは、起動保証数に達しているため、スケジューリングの影響を受けない。同様に、チャネルプロセッサ１２１１は、次の単位時間内に処理すべきコマンド＃１１〜＃２０で示される受信コマンドのうちコマンド＃１５で示される優先コマンドを、先に受信したコマンド＃１１及び＃１２で示される優先コマンドの後に実行する。
【００６３】
チャネルプロセッサ１２１１が、単位時間内に、コマンドキューにキューイングされた全てのコマンドを実行できない場合、未だ実行されていないコマンドは、次の単位時間内実行されるように、スケジューリングされることになる。
【００６４】
上記の例では、説明を簡単にするため、優先コマンドが１種類であるものと仮定したが、優先コマンドが複数種類であっても、チャネルアダプタ１２１は、同様に、それぞれの優先コマンドが起動保証数に達するまで、非優先コマンドに優先して、実行できる。この場合、単位時間内に処理可能なコマンド数に上限があるため、複数種類の優先コマンドの起動保証数の総数が、当該上限に達するおそれがある。このため、上限値に対するシステム稼働率を定めて、チャネルアダプタ１２１は、システム稼働率の範囲で、非優先コマンドを実行するようにしてもよい。
【００６５】
以上のように、本実施形態によれば、ストレージサブシステムは、同一のポートに対して、ホストコンピュータ３上の複数の仮想ＯＳ（又は複数のホストコンピュータ３）から優先コマンド及び非優先コマンドを輻輳的に受信した場合であっても、単位時間内の優先コマンドの実行が起動保証数以下に抑えられるので、非優先コマンドに対する応答が著しく低下することはない。従って、例えば、Ｉ／Ｏコマンドが非優先コマンドとして扱われる場合であっても、ストレージサブシステム１のシステムパフォーマンスの低下を最低限に抑えることができるようになる。
【００６６】
［第２の実施形態］
第２の実施形態は、第１の実施形態の変形であって、ハードディスクドライブ１１０上の特定の記憶領域に対してアクセスするコマンドについて起動保証数を設定して、当該コマンドを優先コマンドとして扱うようにしたストレージサブシステムである。
【００６７】
図９は、本発明の第２の実施形態に係るチャネルアダプタにおける優先コマンドテーブル９００の一例を説明するための図である。第１の実施形態で説明した優先コマンドテーブル３００の欄と同じものには、同一の符号を付している。
【００６８】
同図を参照して、本実施形態の優先コマンドテーブル９００は、コマンドコード３０１、ＬＢＡ指定フラグ９０１、優先ＬＢＡ範囲９０２、起動保証数３０２、処理数３０３の各欄からなる。本実施形態の優先コマンドテーブル９００が、ＬＢＡ指定フラグ９０１及び優先ＬＢＡ範囲９０２の欄を含む点で、第１の実施形態の優先コマンドテーブル３００と異なる。ＬＢＡ指定フラグ９０１は、特定の記憶領域に対してアクセスするコマンドを優先コマンドとして扱うか否かを指定する。優先ＬＢＡ範囲９０２は、論理ユニット上の特定の記憶領域を指定するものであって、ＬＢＡ指定フラグ９０１の値が「１（有効）」の場合、優先ＬＢＡ範囲９０２で示された論理ブロックアドレスで始まる記憶領域に対してアクセスするコマンドは、優先コマンドとして扱われる。優先ＬＢＡ範囲９０２には、開始論理ブロックアドレスのみが設定されてもよいし、開始論理ブロックアドレスと終了論理ブロックアドレスとによって範囲が設定されてもよい。
【００６９】
図１０は、本実施形態に係る管理装置４上のユーザインターフェースに表示された優先コマンド設定ウィンドウ５００の一例を示す図である。ユーザは、ポインティングデバイスを操作して、設定モードメニュー５０１の中からＬＢＡの指定モードを指定すると、指定された設定モードに従った優先コマンド設定テーブル５０２が提示される。ユーザは、特定の記憶領域に対してアクセスするコマンドを優先コマンドに指定したい場合には、ＬＢＡ指定フラグのチェックボックスをチェックし、優先ＬＢＡ範囲に論理ブロックアドレスを入力する。本例では、Ｉｎｑｕｉｒｙコマンド及びＷｒｉｔｅ（１０）コマンドが指定されている。また、Ｒｅａｄ（６）コマンドは、ＬＢＡ指定フラグのチェックボックスにチェックされていないが、起動保証数が指定されているため、優先コマンドとして扱われる。
【００７０】
ユーザは、優先コマンドについての入力が終了すると、Ａｐｐｌｙボタン５０３を選択し、これにより、管理装置４は、入力された内容をチャネルアダプタ１２１に設定すべく、優先コマンド設定要求をチャネルアダプタ１２１に送信する。チャネルアダプタ１２１は、ＬＡＮコントローラ１２１３を介して、優先コマンド設定要求を受信すると、チャネルプロセッサ１２１１の制御の下、当該優先コマンド設定要求に基づいて、ローカルメモリ１２２２上の優先コマンドテーブル３００を更新する。
【００７１】
図１１は、本発明の一実施形態に係るチャネルプロセッサ１２１１によるコマンド受信時処理を説明するためのフローチャートである。同図に示すフローチャートは、ＳＴＥＰ１１０３及びＳＴＥＰ１１０４が追加されている点で、図７に示すフローチャートと異なっている。
【００７２】
即ち、同図に示すように、チャネルプロセッサ１２１１は、優先コマンドテーブル３００を参照して、受信したコマンドが優先コマンドであるか否かを判断する（ＳＴＥＰ１１００）。上述したように、優先コマンドであるか否かは、優先コマンドテーブル３００の対応するコマンドの起動保証数３０２の値が「０」以外であるか否かにより判断される。つまり、起動保証数３０２の値が「０」以外の値であれば、当該コマンドは、優先コマンドであると判断される。
【００７３】
チャネルプロセッサ１２１１は、受信したコマンドが優先コマンドでないと判断する場合（ＳＴＥＰ１１０１のＮｏ）、当該コマンド（即ち、非優先コマンド）をコマンドキューにキューイングし（ＳＴＥＰ１１０２）、処理を終了する。一方、チャネルプロセッサ１２１１は、受信したコマンドが優先コマンドであると判断する場合（ＳＴＥＰ１１０１のＮｏ）、さらに、優先コマンドテーブル３００を参照して、ＬＢＡ指定フラグ９０２の値が「１」であるか否かを判断する（ＳＴＥＰ１１０３）。
【００７４】
チャネルプロセッサ１２１１は、ＬＢＡ指定フラグ９０２の値が「１」でないと判断する場合（ＳＴＥＰ１１０３のＮｏ）、続いて、当該コマンドの実行が起動保証数に達したか否かを判断する（ＳＴＥＰ１１０５）。一方、チャネルプロセッサ１２１１は、ＬＢＡ指定フラグ９０２の値が「１」であると判断する場合（ＳＴＥＰ１１０３のＹｅｓ）、続いて、当該コマンドが指定ＬＢＡ範囲に対するアクセスか否かを判断する（ＳＴＥＰ１１０４）。チャネルプロセッサ１２１１は、当該コマンドが指定ＬＢＡ範囲に対するアクセスである判断する場合には（ＳＴＥＰ１１０４のＹｅｓ）、続いて、当該コマンドの実行が起動保証数に達したか否かを判断する（ＳＴＥＰ１１０５）。以降の処理は、上述した図７のＳＴＥＰ７０３以降の処理と同様であるため、説明を省略する。
【００７５】
これに対して、チャネルプロセッサ１２１１は、当該コマンドが指定ＬＢＡ範囲に対するアクセスでないと判断する場合には（ＳＴＥＰ１１０４のＮｏ）、当該コマンドをコマンドキューにキューイングし（ＳＴＥＰ１１０２）、処理を終了する。
【００７６】
以上のように、本実施形態によれば、デバイス認識コマンドにおいてハードディスクドライブ１１０上の特定の記憶領域に対してＩ／Ｏアクセスを行うコマンドについても優先コマンドとして扱うことができるようになり、さらに効率的なシステム運用が可能になる。
【００７７】
［第３の実施形態］
第３の実施形態は、第１の実施形態の変形であって、ホストコンピュータ３単位で、発行されるコマンドを優先コマンドとして扱うか否かを決定するストレージサブシステム１である。
【００７８】
図１２は、本発明の第３の実施形態に係るチャネルアダプタにおける優先コマンドテーブル１２００の一例を説明するための図である。
【００７９】
同図を参照して、本実施形態の優先コマンドテーブル１２００は、ホストＷＷＮ１２０１、起動保証数３０２、及び処理数３０３の各欄からなる。本実施形態の優先コマンドテーブル１２００は、コマンドコード３０１に代えて、ホストＷＷＮ１２０１の欄を含む点で、第１の実施形態の優先コマンドテーブル３００と異なる。ホストＷＷＮ１２０１は、ホストコンピュータ３のポートに割り当てられた固有のネットワーク識別情報であり、典型的には、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅである。ストレージサブシステム１のチャネルアダプタ１２１は、送信されてくるコマンドに基づく通信パケットに含まれるＷＷＮを参照することにより、当該コマンドがどのホストコンピュータ３から送信されてきたものであるかを認識することができる。
【００８０】
図１３は、本発明の第３の実施形態に係るチャネルプロセッサ１２１１によるコマンド受信時処理を説明するためのフローチャートである。同図は、図６のＳＴＥＰ６０４に示す処理を詳細に説明している。
【００８１】
同図に示すように、チャネルプロセッサ１２１１は、優先コマンドテーブル１２００を参照して、受信したコマンドが、優先されるべきホストコンピュータ３（以下、「優先ホスト」という。）から送信されてきたコマンドであるか否かを判断する（ＳＴＥＰ１３００）。優先ホストであるか否かは、優先コマンドテーブル１２００の対応するコマンドの起動保証数３０２の値が「０」以外であるか否かにより判断される。
【００８２】
チャネルプロセッサ１２１１は、受信したコマンドが優先ホストでないと判断する場合（ＳＴＥＰ１３０１のＮｏ）、当該コマンド（即ち、非優先コマンド）をコマンドキューにキューイングし（ＳＴＥＰ１３０２）、処理を終了する。一方、チャネルプロセッサ１２１１は、受信したコマンドが優先コマンドであると判断する場合（ＳＴＥＰ１３０１のＮｏ）、さらに、優先コマンドテーブル３００を参照して、当該コマンドの実行が起動保証数に達したか否かを判断する（ＳＴＥＰ１３０３）。以降の処理は、上述した図７のＳＴＥＰ７０４以降の処理と同様であるため、説明を省略する。
【００８３】
以上のように、本実施形態によれば、コマンド単位ではなく、ＷＷＮによって識別されるホストコンピュータ３単位で、発行されるコマンドについて優先コマンド又は非優先コマンドとして扱うことができ、さらなる柔軟なシステム運用が可能になる。
【００８４】
［第４の実施形態］
第４の実施形態は、上位装置（ホストコンピュータ３乃至は仮想マシン）ごとに、優先コマンドの設定を可能にしたストレージサブシステム１である。
【００８５】
図１４は、本発明の第４の実施形態に係るチャネルアダプタにおける優先コマンドテーブル１４００の一例を説明するための図である。
【００８６】
同図を参照して、本実施形態の優先コマンドテーブル１４００は、ホストＷＷＮ１２０１、コマンドコード３０１、ＬＢＡ指定フラグ９０１、優先ＬＢＡ範囲９０２、起動保証数３０２、及び処理数３０３の各欄からなる。本実施形態の優先コマンドテーブル１４００は、ＷＷＮで特定されるホストコンピュータ３ごとに、第２の実施形態で説明した優先コマンドテーブル９００が用意されているものとみることができる。
【００８７】
図１５は、本実施形態に係る管理装置４上のユーザインターフェースに表示された優先コマンド設定ウィンドウ５００の一例を示す図である。ユーザは、ポインティングデバイスを操作して、設定モードメニュー５０１の中からＷＷＮの指定モードを指定すると、指定された設定モードに従った優先コマンド設定テーブル５０２が提示される。本実施形態の優先コマンド設定ウィンドウ５００では、ホストＷＷＮ設定領域１５０１を含んでいる。ホストＷＷＮ設定領域１５０１は、チャネルプロセッサ１２１１ごとに設定されたホストＷＷＮをツリー形式で表示する。ユーザが、ホストＷＷＮ設定領域１５０１において、設定したいチャネルプロセッサ１２１１のホストＷＷＮをポインティングデバイスで指定することにより、対応するホストＷＷＮの優先コマンド設定テーブル５０２が表示される。
【００８８】
ユーザは、優先コマンドについての入力が終了すると、Ａｐｐｌｙボタン５０３を選択し、これにより、管理装置４は、入力された内容をチャネルアダプタ１２１に設定すべく、優先コマンド設定要求をチャネルアダプタ１２１に送信する。チャネルアダプタ１２１は、ＬＡＮコントローラ１２１３を介して、優先コマンド設定要求を受信すると、チャネルプロセッサ１２１１の制御の下、当該優先コマンド設定要求に基づいて、ローカルメモリ１２２２上の優先コマンドテーブル３００を更新する。
【００８９】
本実施形態のチャネルプロセッサ１２１１は、ＷＷＮで識別されるホストコンピュータ３ごとに、そこから送信されるコマンドについて優先コマンドであるか否かを判断して、対応する処理を行う。即ち、チャネルプロセッサ１２１１は、ホストコンピュータ３からコマンドを受信すると、ホストコンピュータ３ごとに設定されたコマンドの属性に従って、図１１に示した処理を行うことなる。
【００９０】
以上のように、本実施形態によれば、ＷＷＮで識別されるホストコンピュータ３ごとに、優先コマンドの設定が可能になり、より柔軟かつ効率的なシステム運用が可能になる。
【産業上の利用可能性】
【００９１】
本発明は、ホストコンピュータに接続されるストレージサブシステムに広く適用することができる。
【図面の簡単な説明】
【００９２】
【図１】本発明のストレージサブシステムの特徴を説明するための概念図である。
【図２】本発明の一実施形態に係るストレージサブシステムの全体構成を説明するための図である。
【図３】本発明の一の実施形態に係るチャネルアダプタにおける優先コマンドテーブルの一例を説明するための図である。
【図４】本発明の一の実施形態に係る管理装置による優先コマンド設定処理を説明するためのフローチャートである。
【図５】本発明の一実施形態に係る管理装置上のユーザインターフェースに表示された優先コマンド設定ウィンドウの一例を示す図である。
【図６】本発明の一の実施形態に係るチャネルアダプタにおけるポーリング処理を説明するためのフローチャートである。
【図７】本発明の一の実施形態に係るチャネルプロセッサによるコマンド受信時処理を説明するためのフローチャートである。
【図８】本発明の一実施形態に係るチャネルアダプタにおける優先コマンドのスケジューリング処理を説明するための図である。
【図９】本発明の一の実施形態に係るチャネルアダプタにおける優先コマンドテーブルの一例を説明するための図である。
【図１０】本発明の一実施形態に係る管理装置上のユーザインターフェースに表示された優先コマンド設定ウィンドウの一例を示す図である。
【図１１】本発明の一の実施形態に係るチャネルプロセッサによるコマンド受信時処理を説明するためのフローチャートである。
【図１２】本発明の一の実施形態に係るチャネルアダプタにおける優先コマンドテーブルの一例を説明するための図である。
【図１３】本発明の一の実施形態に係るチャネルプロセッサによるコマンド受信時処理を説明するためのフローチャートである。
【図１４】本発明の一の実施形態に係るチャネルアダプタにおける優先コマンドテーブルの一例を説明するための図である。
【図１５】本発明の一の実施形態に係るチャネルプロセッサによるコマンド受信時処理を説明するためのフローチャートである。
【符号の説明】
【００９３】
１…ストレージサブシステム
２Ａ，２Ｂ…ネットワーク
３…ホストコンピュータ
４…管理装置
１１…ストレージデバイス
１２…コントローラ
１２１…チャネルアダプタ
１２２…キャッシュメモリ
１２３…ディスクアダプタ
１２４…シェアドメモリ
１２５…スイッチ部
【図１】
2010026946.tif 000003
【図２】
2010026946.tif 000004
【図３】
2010026946.tif 000005
【図４】
2010026946.tif 000006
【図５】
2010026946.tif 000007
【図６】
2010026946.tif 000008
【図７】
2010026946.tif 000009
【図８】
2010026946.tif 000010
【図９】
2010026946.tif 000011
【図１０】
2010026946.tif 000012
【図１１】
2010026946.tif 000013
【図１２】
2010026946.tif 000014
【図１３】
2010026946.tif 000015
【図１４】
2010026946.tif 000016
【図１５】
2010026946.tif 000017